<?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>222754</bug_id>
          
          <creation_ts>2021-03-04 11:32:01 -0800</creation_ts>
          <short_desc>[resultsdbpy] Adopt webkitscmpy</short_desc>
          <delta_ts>2021-03-09 15:29:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222762</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222766</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=221860</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1735944</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-04 11:32:01 -0800</bug_when>
    <thetext>resultsdbpy needs to adopt identifiers. Rather than reimplement identifier computation implemented by webkitscmpy, we should just use webkitscmpy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735948</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-04 11:34:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/75049209&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735959</commentid>
    <comment_count>2</comment_count>
      <attachid>422268</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-04 11:57:09 -0800</bug_when>
    <thetext>Created attachment 422268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736401</commentid>
    <comment_count>3</comment_count>
      <attachid>422380</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-05 10:20:21 -0800</bug_when>
    <thetext>Created attachment 422380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737136</commentid>
    <comment_count>4</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2021-03-08 10:00:03 -0800</bug_when>
    <thetext>r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737150</commentid>
    <comment_count>5</comment_count>
      <attachid>422581</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-03-08 10:19:08 -0800</bug_when>
    <thetext>Created attachment 422581
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737178</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-08 11:12:19 -0800</bug_when>
    <thetext>Committed r274084: &lt;https://commits.webkit.org/r274084&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422581.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422268</attachid>
            <date>2021-03-04 11:57:09 -0800</date>
            <delta_ts>2021-03-05 10:20:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222754-20210304115707.patch</filename>
            <type>text/plain</type>
            <size>174546</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3MzkwNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY2IEBACisyMDIxLTAzLTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIEFkb3B0IHdlYmtpdHNjbXB5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3NTQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzc1MDQ5MjA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkb3B0aW5nIHdlYmtpdHNjbXB5J3MgcmVtb3RlIHJlcG9zaXRvcmll
cyByZXF1aXJlcyB1c2luZyB0aGUgdW5pdCB0ZXN0aW5nIHBhcmFkaWdtcyBmcm9tCisgICAgICAg
IHRob3NlIG9iamVjdHMsIHdoaWNoIHJlcXVpcmVzIGNvbnNpZGVyYWJsZSBhZGp1c3RtZW50IG9m
IHRlc3RpbmcgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5OiBCdW1wIHZlcnNpb24sIGluY2x1ZGUgd2Via2l0c2Nt
cHkuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
Y29udHJvbGxlci9hcmNoaXZlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jaV9jb250
cm9sbGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXIucHk6CisgICAgICAg
IChDb21taXRDb250cm9sbGVyLnJlZ2lzdGVyKTogVXNlIHdlYmtpdHNjbXB5J3MgZXhjZXB0aW9u
cy4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ29tbWl0
Q29udHJvbGxlclRlc3QudGVzdF9yZWdpc3Rlcl92aWFfcG9zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9m
YWlsdXJlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9zdWl0ZV9jb250cm9sbGVyX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBs
b2FkX2NvbnRyb2xsZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0X3VuaXR0ZXN0LnB5
OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21v
ZGVsL2NpX2NvbnRleHRfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHk6CisgICAgICAg
IChDb21taXRDb250ZXh0LmJyYW5jaF9rZXlzX2Zvcl9jb21taXRzKToKKyAgICAgICAgKENvbW1p
dENvbnRleHQuZmluZF9jb21taXRzX2J5X2lkKTogZGVmYXVsdF9icmFuY2ggaXMgbm93IGFuIGlu
c3RhbmNlIHZhcmlhYmxlLgorICAgICAgICAoQ29tbWl0Q29udGV4dC5maW5kX2NvbW1pdHNfYnlf
dXVpZCk6IERpdHRvLgorICAgICAgICAoQ29tbWl0Q29udGV4dC5maW5kX2NvbW1pdHNfYnlfdGlt
ZXN0YW1wKTogRGl0dG8uCisgICAgICAgIChDb21taXRDb250ZXh0LmZpbmRfY29tbWl0c19pbl9y
YW5nZSk6IERpdHRvLgorICAgICAgICAoQ29tbWl0Q29udGV4dC5zaWJsaW5nX2NvbW1pdHMpOiBE
aXR0by4KKyAgICAgICAgKENvbW1pdENvbnRleHQucmVnaXN0ZXJfY29tbWl0X3dpdGhfcmVwb19h
bmRfaWQpOiB3ZWJraXRzY21weSByZXBvc2l0b3JpZXMgY29tcHV0ZSBicmFuY2guCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0
X2NvbnRleHRfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0X3VuaXR0ZXN0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21v
Y2tfbW9kZWxfZmFjdG9yeS5weToKKyAgICAgICAgKE1vY2tNb2RlbEZhY3RvcnkpOgorICAgICAg
ICAoTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkpOiBVc2Ugc2hhcmVkIHdlYmtpdHNjbXB5IG1vY2tz
LgorICAgICAgICAoTW9ja01vZGVsRmFjdG9yeS53ZWJraXQpOiBEaXR0by4KKyAgICAgICAgKE1v
Y2tNb2RlbEZhY3RvcnkuY3JlYXRlKTogVGltZXN0YW1wcyBpbiB3ZWJraXRzY21weSBhcmUganVz
dCBpbnRlZ2Vycy4KKyAgICAgICAgKE1vY2tNb2RlbEZhY3RvcnkuaXRlcmF0ZV9hbGxfY29tbWl0
cyk6IHdlYmtpdHNjbXB5IGFuZCByZXN1bHRzZGJweSBoYXZlIHNsaWdodGx5IGRpZmZlcmVudAor
ICAgICAgICBjb21taXQgcmVwcmVzZW50YXRpb25zLCBzbyB0aGUgbWVjaGFuaWNzIG9mIHJlZ2lz
dGVyaW5nIGNvbW1pdHMgYXJlIGRpZmZlcmVudC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmll
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2NrX3JlcG9zaXRvcnkucHk6IFJlbW92
ZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvbW9kZWxfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeS5weToKKyAgICAgICAgKFJlcG9z
aXRvcnkpOgorICAgICAgICAoUmVwb3NpdG9yeS5fX2luaXRfXyk6IGRlZmF1bHRfYnJhbmNoIGlz
IG5vdyBhbiBpbnN0YW5jZSB2YXJpYWJsZS4KKyAgICAgICAgKFJlcG9zaXRvcnkuY29tbWl0X2Zv
cl9pZCk6IHdlYmtpdHNjbXB5IGRvZXMgbm90IHJlcXVpcmUgdGhlIGJyYW5jaCwgZ2l2ZW4gYSBo
YXNoIG9yIHJldmlzaW9uLgorICAgICAgICAoU3Rhc2hSZXBvc2l0b3J5KTogUmV0cmlldmUgY29t
bWl0IGZyb20gd2Via2l0c2NtcHkncyByZW1vdGUgQml0QnVja2V0IG9iamVjdC4KKyAgICAgICAg
KFdlYktpdFJlcG9zaXRvcnkpOiBIYXJkLWNvZGUgV2ViS2l0J3MgU3VidmVyc2lvbiBVUkwuIFRo
aXMgaXMgdGVtcG9yYXJ5LCBzaW5jZSBXZWJLaXQgd2lsbCBzaG9ydGx5CisgICAgICAgIGJlY29t
ZSBhIEdpdEh1YiByZXBvc2l0b3J5LgorICAgICAgICAoU0NNRXhjZXB0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKEhUVFBSZXBvc2l0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFNWTlJlcG9zaXRv
cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0UmVwb3NpdG9yeS5jb21taXRfZm9yX2lkLmRp
ZmZfY2hhbmdlbG9ncyk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeV91bml0dGVzdC5weToKKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9zdWl0
ZV9jb250ZXh0X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3Rlc3RfY29udGV4dF91bml0dGVzdC5weToKKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC91cGxv
YWRfY29udGV4dF91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L2FyY2hpdmVfdmlld191bml0dGVzdC5weToKKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L2NvbW1p
dF92aWV3X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdmlld19yb3V0ZXNfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvc2V0dXAucHk6IEJ1bXAgdmVyc2lvbi4KKwog
MjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtt
YWNPU11bV0syXSBDaGFuZ2luZyB0aGUgc3lzdGVtIGxhbmd1YWdlIGRvZXMgbm90IHVwZGF0ZSBu
YXZpZ2F0b3IubGFuZ3VhZ2UKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3NldHVwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3NldHVwLnB5CShyZXZpc2lvbiAyNzM4MzQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9zZXR1cC5weQkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBA
QCBzZXR1cCgKICAgICAgICAgJ3htbHRvZGljdCcsCiAgICAgICAgICdzZWxlbml1bScsCiAgICAg
ICAgICd3ZWJraXRjb3JlcHknLAorICAgICAgICAnd2Via2l0c2NtcHknLAogICAgIF0sCiAgICAg
aW5jbHVkZV9wYWNrYWdlX2RhdGE9VHJ1ZSwKICAgICB6aXBfc2FmZT1GYWxzZSwKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyNzM4MzQpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9fX2luaXRfXy5weQkod29ya2luZyBjb3B5
KQpAQCAtMjcsNyArMjcsNyBAQCBpbXBvcnQgc3lzCiBkZWYgX21heWJlX2FkZF93ZWJraXRfcHl0
aG9uX2xpYnJhcnlfcGF0aHMoKToKICAgICAjIEhvcGVmdWxseSB3ZSdyZSBiZXNpZGUgd2Via2l0
KnB5IGxpYnJhcmllcywgb3RoZXJ3aXNlIHdlYmtpdCpweSB3aWxsIG5lZWQgdG8gYmUgaW5zdGFs
bGVkLgogICAgIGxpYnJhcmllc19wYXRoID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFt
ZShvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkpKQotICAgIGZvciBs
aWJyYXJ5IGluIFsnd2Via2l0Y29yZXB5JywgJ3dlYmtpdGZsYXNrcHknXToKKyAgICBmb3IgbGli
cmFyeSBpbiBbJ3dlYmtpdGNvcmVweScsICd3ZWJraXRzY21weScsICd3ZWJraXRmbGFza3B5J106
CiAgICAgICAgIGxpYnJhcnlfcGF0aCA9IG9zLnBhdGguam9pbihsaWJyYXJpZXNfcGF0aCwgbGli
cmFyeSkKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihsaWJyYXJ5X3BhdGgpIGFuZCBvcy5wYXRo
LmlzZGlyKG9zLnBhdGguam9pbihsaWJyYXJ5X3BhdGgsIGxpYnJhcnkpKSBhbmQgbGlicmFyeV9w
YXRoIG5vdCBpbiBzeXMucGF0aDoKICAgICAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBsaWJy
YXJ5X3BhdGgpCkBAIC00NCw2ICs0NCw2IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAg
IlBsZWFzZSBpbnN0YWxsIHdlYmtpdGNvcmVweSB3aXRoIGBwaXAgaW5zdGFsbCB3ZWJraXRjb3Jl
cHkgLS1leHRyYS1pbmRleC11cmwgPHBhY2thZ2UgaW5kZXggVVJMPmAiCiAgICAgKQogCi12ZXJz
aW9uID0gVmVyc2lvbigxLCAxLCAzKQordmVyc2lvbiA9IFZlcnNpb24oMiwgMCwgMCkKIAogbmFt
ZSA9ICdyZXN1bHRzZGJweScKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXJjaGl2ZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L2NvbnRyb2xsZXIvYXJjaGl2ZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNzM4MzQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9jb250cm9sbGVyL2FyY2hpdmVfY29udHJvbGxlcl91bml0dGVzdC5weQkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwx
NSArMjgsMTQgQEAgaW1wb3J0IHJlcXVlc3RzCiBmcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0
cmljdFJlZGlzCiBmcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwogZnJvbSByZXN1bHRzZGJw
eS5jb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRlcwotZnJvbSByZXN1bHRzZGJw
eS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0CiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRy
b2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgogZnJvbSByZXN1bHRzZGJw
eS5mbGFza19zdXBwb3J0LmZsYXNrX3Rlc3RjYXNlIGltcG9ydCBGbGFza1Rlc3RDYXNlCiBmcm9t
IHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250
ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbmZpZ3VyYXRpb25fY29udGV4dF91bml0dGVz
dCBpbXBvcnQgQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVs
Lm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0CiBmcm9t
IHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFj
dG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tT
dGFzaFJlcG9zaXRvcnksIE1vY2tTVk5SZXBvc2l0b3J5CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVs
Lm1vZGVsIGltcG9ydCBNb2RlbAorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5yZXBvc2l0b3J5IGlt
cG9ydCBTdGFzaFJlcG9zaXRvcnksIFdlYktpdFJlcG9zaXRvcnkKIGZyb20gcmVzdWx0c2RicHku
bW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RD
YXNlCiAKIApAQCAtNDcsOCArNDYsMTAgQEAgY2xhc3MgQXJjaGl2ZUNvbnRyb2xsZXJVbml0dGVz
dChGbGFza1RlcwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xz
LCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CiAg
ICAgICAgIHJlZGlzX2luc3RhbmNlID0gcmVkaXMoKQotICAgICAgICBzYWZhcmkgPSBNb2NrU3Rh
c2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpc19pbnN0YW5jZSkKLSAgICAgICAgd2Via2l0ID0gTW9j
a1NWTlJlcG9zaXRvcnkud2Via2l0KHJlZGlzX2luc3RhbmNlKQorCisgICAgICAgIHdpdGggTW9j
a01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAg
ICAgICAgIHNhZmFyaSA9IFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly9iaXRidWNrZXQuZXhhbXBs
ZS5jb20vcHJvamVjdHMvU0FGQVJJL3JlcG9zL3NhZmFyaScpCisgICAgICAgICAgICB3ZWJraXQg
PSBXZWJLaXRSZXBvc2l0b3J5KCkKIAogICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShr
ZXlzcGFjZT1jbHMuS0VZU1BBQ0UpCiAgICAgICAgIGNhc3NhbmRyYV9pbnN0YW5jZSA9IGNhc3Nh
bmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKQpAQCAtODIs
MzcgKzgzLDQzIEBAIGNsYXNzIEFyY2hpdmVDb250cm9sbGVyVW5pdHRlc3QoRmxhc2tUZXMKICAg
ICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFr
ZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBA
Rmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X2ludmFsaWRf
dXBsb2FkKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICB1cGxvYWRfY29udGVudCA9
ICdiYWQgZGF0YScuZW5jb2RlKCdhc2NpaScpCi0gICAgICAgIHVwbG9hZF9tZXRhID0gZGljdCgK
LSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249anNvbi5kdW1wcyhDb25maWd1cmF0aW9uQ29udGV4
dFRlc3QuQ09ORklHVVJBVElPTlNbMF0sIGNscz1Db25maWd1cmF0aW9uLkVuY29kZXIpLAotICAg
ICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBjb21taXRzPWpzb24u
ZHVtcHMoW01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRh
NWYnKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpXSwg
Y2xzPUNvbW1pdC5FbmNvZGVyKSwKLSAgICAgICAgKQotCi0gICAgICAgIHJlc3BvbnNlID0gc2Vs
Zi51cGxvYWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9FTkRQ
T0lOVH0nLCB1cGxvYWRfbWV0YSwgdXBsb2FkX2NvbnRlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10sICdBcmNoaXZlIGlzIG5vdCBhIHppcGZp
bGUnKQotCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3QoZid7c2VsZi5VUkx9L3tzZWxm
LkFSQ0hJVkVfQVBJX0VORFBPSU5UfScsIGRhdGE9c3RyKGpzb24uZHVtcHModXBsb2FkX21ldGEp
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgNDAwKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVsnZGVzY3JpcHRpb24nXSwg
J05vIGFyY2hpdmUgcHJvdmlkZWQnKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2Fm
YXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICB1cGxvYWRfY29u
dGVudCA9ICdiYWQgZGF0YScuZW5jb2RlKCdhc2NpaScpCisgICAgICAgICAgICB1cGxvYWRfbWV0
YSA9IGRpY3QoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1qc29uLmR1bXBzKENvbmZp
Z3VyYXRpb25Db250ZXh0VGVzdC5DT05GSUdVUkFUSU9OU1swXSwgY2xzPUNvbmZpZ3VyYXRpb24u
RW5jb2RlciksCisgICAgICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCisgICAgICAg
ICAgICAgICAgY29tbWl0cz1qc29uLmR1bXBzKFsKKyAgICAgICAgICAgICAgICAgICAgZGljdChy
ZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0nZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3
ZjY5ZmFiODJmYycpLAorICAgICAgICAgICAgICAgICAgICBkaWN0KHJlcG9zaXRvcnlfaWQ9J3dl
YmtpdCcsIGlkPSc2JyldKSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgcmVzcG9uc2Ug
PSBzZWxmLnVwbG9hZF9maWxlKGNsaWVudCwgZid7c2VsZi5VUkx9L3tzZWxmLkFSQ0hJVkVfQVBJ
X0VORFBPSU5UfScsIHVwbG9hZF9tZXRhLCB1cGxvYWRfY29udGVudCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlvbiddLCAnQXJjaGl2ZSBp
cyBub3QgYSB6aXBmaWxlJykKKworICAgICAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQucG9zdChm
J3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGF0YT1zdHIoanNvbi5k
dW1wcyh1cGxvYWRfbWV0YSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZS5zdGF0dXNfY29kZSwgNDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10sICdObyBhcmNoaXZlIHByb3ZpZGVkJykKIAogICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFz
a1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3RfdXBsb2FkX2FuZF9k
b3dubG9hZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgdXBsb2FkX2NvbnRlbnQg
PSBiYXNlNjQuYjY0ZGVjb2RlKE1vY2tNb2RlbEZhY3RvcnkuQVJDSElWRV9aSVApCi0gICAgICAg
IHVwbG9hZF9tZXRhID0gZGljdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249anNvbi5kdW1w
cyhDb25maWd1cmF0aW9uQ29udGV4dFRlc3QuQ09ORklHVVJBVElPTlNbMF0sIGNscz1Db25maWd1
cmF0aW9uLkVuY29kZXIpLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAg
ICAgICAgICBjb21taXRzPWpzb24uZHVtcHMoW01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCku
Y29tbWl0X2Zvcl9pZCgnYmI2YmRhNWYnKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29t
bWl0X2Zvcl9pZCgyMzY1NDIpXSwgY2xzPUNvbW1pdC5FbmNvZGVyKSwKLSAgICAgICAgKQorICAg
ICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Vi
a2l0KCk6CisgICAgICAgICAgICB1cGxvYWRfY29udGVudCA9IGJhc2U2NC5iNjRkZWNvZGUoTW9j
a01vZGVsRmFjdG9yeS5BUkNISVZFX1pJUCkKKyAgICAgICAgICAgIHVwbG9hZF9tZXRhID0gZGlj
dCgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29uZmlndXJhdGlv
bkNvbnRleHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlvbi5FbmNvZGVy
KSwKKyAgICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKKyAgICAgICAgICAgICAg
ICBjb21taXRzPWpzb24uZHVtcHMoWworICAgICAgICAgICAgICAgICAgICBkaWN0KHJlcG9zaXRv
cnlfaWQ9J3NhZmFyaScsIGlkPSdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4
MmZjJyksCisgICAgICAgICAgICAgICAgICAgIGRpY3QocmVwb3NpdG9yeV9pZD0nd2Via2l0Jywg
aWQ9JzYnKV0pLAorICAgICAgICAgICAgKQogCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi51cGxv
YWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lOVH0n
LCB1cGxvYWRfbWV0YSwgdXBsb2FkX2NvbnRlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi51
cGxvYWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lO
VH0nLCB1cGxvYWRfbWV0YSwgdXBsb2FkX2NvbnRlbnQpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAKLSAgICAgICAgcmVzcG9uc2UgPSBj
bGllbnQuZ2V0KGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lOVH0nKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuY29udGVudCwgYmFzZTY0LmI2NGRlY29kZShNb2Nr
TW9kZWxGYWN0b3J5LkFSQ0hJVkVfWklQKSkKKyAgICAgICAgICAgIHJlc3BvbnNlID0gY2xpZW50
LmdldChmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JykKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuY29udGVudCwgYmFzZTY0LmI2NGRlY29kZShN
b2NrTW9kZWxGYWN0b3J5LkFSQ0hJVkVfWklQKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRo
X3dlYnNlcnZlcigpCkBAIC0xMjQsNDAgKzEzMSw0NyBAQCBjbGFzcyBBcmNoaXZlQ29udHJvbGxl
clVuaXR0ZXN0KEZsYXNrVGVzCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25v
X2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nh
c3NhbmRyYUNvbnRleHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkK
ICAgICBkZWYgdGVzdF9pbnZhbGlkX21ldGFkYXRhKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgot
ICAgICAgICB1cGxvYWRfY29udGVudCA9IGJhc2U2NC5iNjRkZWNvZGUoTW9ja01vZGVsRmFjdG9y
eS5BUkNISVZFX1pJUCkKLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnVwbG9hZF9maWxlKGNsaWVu
dCwgZid7c2VsZi5VUkx9L3tzZWxmLkFSQ0hJVkVfQVBJX0VORFBPSU5UfScsIGRpY3QoCi0gICAg
ICAgICAgICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0
LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlvbi5FbmNvZGVyKSwKLSAgICAgICAg
ICAgIGNvbW1pdHM9anNvbi5kdW1wcyhbTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21t
aXRfZm9yX2lkKCdiYjZiZGE1ZicpLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRf
Zm9yX2lkKDIzNjU0MildLCBjbHM9Q29tbWl0LkVuY29kZXIpLAotICAgICAgICApLCB1cGxvYWRf
Y29udGVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwg
NDAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVsnZGVzY3JpcHRp
b24nXSwgJ05vIHRlc3Qgc3VpdGUgc3BlY2lmaWVkJykKLQotICAgICAgICByZXNwb25zZSA9IHNl
bGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5E
UE9JTlR9JywgZGljdCgKLSAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAotICAgICAg
ICAgICAgY29tbWl0cz1qc29uLmR1bXBzKFtNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNv
bW1pdF9mb3JfaWQoJ2JiNmJkYTVmJyksIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1p
dF9mb3JfaWQoMjM2NTQyKV0sIGNscz1Db21taXQuRW5jb2RlciksCi0gICAgICAgICksIHVwbG9h
ZF9jb250ZW50KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2Rl
LCA0MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlw
dGlvbiddLCAnQ2Fubm90IHJlZ2lzdGVyIGEgcGFydGlhbCBjb25maWd1cmF0aW9uJykKLQotICAg
ICAgICByZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3Nl
bGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGljdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRp
b249anNvbi5kdW1wcyhDb25maWd1cmF0aW9uQ29udGV4dFRlc3QuQ09ORklHVVJBVElPTlNbMF0s
IGNscz1Db25maWd1cmF0aW9uLkVuY29kZXIpLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10
ZXN0cycsCi0gICAgICAgICksIHVwbG9hZF9jb250ZW50KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlvbiddLCAnTm8gY29tbWl0cyBwcm92aWRlZCcpCi0K
LSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnVwbG9hZF9maWxlKGNsaWVudCwgZid7c2VsZi5VUkx9
L3tzZWxmLkFSQ0hJVkVfQVBJX0VORFBPSU5UfScsIGRpY3QoCi0gICAgICAgICAgICBjb25maWd1
cmF0aW9uPSdJbnZhbGlkIG1ldGEtZGF0YScsCi0gICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRl
c3RzJywKLSAgICAgICAgICAgIGNvbW1pdHM9anNvbi5kdW1wcyhbTW9ja1N0YXNoUmVwb3NpdG9y
eS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKCdiYjZiZGE1ZicpLCBNb2NrU1ZOUmVwb3NpdG9yeS53
ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MildLCBjbHM9Q29tbWl0LkVuY29kZXIpLAotICAg
ICAgICApLCB1cGxvYWRfY29udGVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZS5zdGF0dXNfY29kZSwgNDAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpz
b24oKVsnZGVzY3JpcHRpb24nXSwgJ0ludmFsaWQgY29uZmlndXJhdGlvbiwgZXJyb3I6IEV4cGVj
dGluZyB2YWx1ZTogbGluZSAxIGNvbHVtbiAxIChjaGFyIDApJykKLQotICAgICAgICByZXNwb25z
ZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9B
UElfRU5EUE9JTlR9JywgZGljdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249anNvbi5kdW1w
cyhDb25maWd1cmF0aW9uQ29udGV4dFRlc3QuQ09ORklHVVJBVElPTlNbMF0sIGNscz1Db25maWd1
cmF0aW9uLkVuY29kZXIpLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAg
ICAgICAgICBjb21taXRzPSdJbnZhbGlkIG1ldGEtZGF0YScsCi0gICAgICAgICksIHVwbG9hZF9j
b250ZW50KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0
MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlv
biddLCAnRXhwZWN0ZWQgY29tbWl0IG1ldGEtZGF0YSB0byBiZSBqc29uJykKKyAgICAgICAgd2l0
aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgor
ICAgICAgICAgICAgdXBsb2FkX2NvbnRlbnQgPSBiYXNlNjQuYjY0ZGVjb2RlKE1vY2tNb2RlbEZh
Y3RvcnkuQVJDSElWRV9aSVApCisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYudXBsb2FkX2Zp
bGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGlj
dCgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29uZmlndXJhdGlv
bkNvbnRleHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlvbi5FbmNvZGVy
KSwKKyAgICAgICAgICAgICAgICBjb21taXRzPWpzb24uZHVtcHMoWworICAgICAgICAgICAgICAg
ICAgICBkaWN0KHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGlkPSdkOGJjZTI2ZmE2NWM2ZmM4ZjM5
YzE3OTI3YWJiNzdmNjlmYWI4MmZjJyksCisgICAgICAgICAgICAgICAgICAgIGRpY3QocmVwb3Np
dG9yeV9pZD0nd2Via2l0JywgaWQ9JzYnKV0pLAorICAgICAgICAgICAgKSwgdXBsb2FkX2NvbnRl
bnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0
MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVsnZGVzY3Jp
cHRpb24nXSwgJ05vIHRlc3Qgc3VpdGUgc3BlY2lmaWVkJykKKworICAgICAgICAgICAgcmVzcG9u
c2UgPSBzZWxmLnVwbG9hZF9maWxlKGNsaWVudCwgZid7c2VsZi5VUkx9L3tzZWxmLkFSQ0hJVkVf
QVBJX0VORFBPSU5UfScsIGRpY3QoCisgICAgICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0
cycsCisgICAgICAgICAgICAgICAgY29tbWl0cz1qc29uLmR1bXBzKFsKKyAgICAgICAgICAgICAg
ICAgICAgZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0nZDhiY2UyNmZhNjVjNmZjOGYz
OWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycpLAorICAgICAgICAgICAgICAgICAgICBkaWN0KHJlcG9z
aXRvcnlfaWQ9J3dlYmtpdCcsIGlkPSc2JyldKSwKKyAgICAgICAgICAgICksIHVwbG9hZF9jb250
ZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwg
NDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbJ2Rlc2Ny
aXB0aW9uJ10sICdDYW5ub3QgcmVnaXN0ZXIgYSBwYXJ0aWFsIGNvbmZpZ3VyYXRpb24nKQorCisg
ICAgICAgICAgICByZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVS
TH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGljdCgKKyAgICAgICAgICAgICAgICBj
b25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0LkNPTkZJR1VS
QVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlvbi5FbmNvZGVyKSwKKyAgICAgICAgICAgICAgICBz
dWl0ZT0nbGF5b3V0LXRlc3RzJywKKyAgICAgICAgICAgICksIHVwbG9hZF9jb250ZW50KQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgNDAwKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10s
ICdObyBjb21taXRzIHByb3ZpZGVkJykKKworICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnVw
bG9hZF9maWxlKGNsaWVudCwgZid7c2VsZi5VUkx9L3tzZWxmLkFSQ0hJVkVfQVBJX0VORFBPSU5U
fScsIGRpY3QoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj0nSW52YWxpZCBtZXRhLWRh
dGEnLAorICAgICAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAorICAgICAgICAgICAg
ICAgIGNvbW1pdHM9anNvbi5kdW1wcyhbCisgICAgICAgICAgICAgICAgICAgIGRpY3QocmVwb3Np
dG9yeV9pZD0nc2FmYXJpJywgaWQ9J2Q4YmNlMjZmYTY1YzZmYzhmMzljMTc5MjdhYmI3N2Y2OWZh
YjgyZmMnKSwKKyAgICAgICAgICAgICAgICAgICAgZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJraXQn
LCBpZD0nNicpXSksCisgICAgICAgICAgICApLCB1cGxvYWRfY29udGVudCkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlvbiddLCAnSW52YWxp
ZCBjb25maWd1cmF0aW9uLCBlcnJvcjogRXhwZWN0aW5nIHZhbHVlOiBsaW5lIDEgY29sdW1uIDEg
KGNoYXIgMCknKQorCisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xp
ZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGljdCgKKyAg
ICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29uZmlndXJhdGlvbkNvbnRl
eHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlvbi5FbmNvZGVyKSwKKyAg
ICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKKyAgICAgICAgICAgICAgICBjb21t
aXRzPSdJbnZhbGlkIG1ldGEtZGF0YScsCisgICAgICAgICAgICApLCB1cGxvYWRfY29udGVudCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlv
biddLCAnRXhwZWN0ZWQgY29tbWl0IG1ldGEtZGF0YSB0byBiZSBqc29uJykKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY2lf
Y29udHJvbGxlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NpX2NvbnRyb2xsZXJfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI3MzgzNCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY2lfY29udHJvbGxlcl91bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIENJQ29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2Fz
ZSwgV2EKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBh
cHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAg
ICAgIHdpdGggVVJMRmFjdG9yeVRlc3QubW9jaygpOgorICAgICAgICB3aXRoIFVSTEZhY3RvcnlU
ZXN0Lm1vY2soKSwgTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53
ZWJraXQoKToKICAgICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNs
cy5LRVlTUEFDRSkKICAgICAgICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUo
cmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0Us
IGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKICAgICAgICAgICAgIG1vZGVsLmNpX2NvbnRleHQuYWRk
X3VybF9mYWN0b3J5KEJ1aWxkYm90VVJMRmFjdG9yeShtYXN0ZXI9J2J1aWxkLndlYmtpdC5vcmcn
LCByZWRpcz1tb2RlbC5yZWRpcykpCkBAIC0xMDgsOSArMTA4LDggQEAgY2xhc3MgQ0lDb250cm9s
bGVyVGVzdChGbGFza1Rlc3RDYXNlLCBXYQogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJh
PU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNl
cnZlcigpCiAgICAgZGVmIHRlc3Rfc2luZ2xlX3F1ZXVlX2xpc3Qoc2VsZiwgY2xpZW50LCAqKmt3
YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3Vy
bHM/dmVyc2lvbl9uYW1lPUNhdGFsaW5hJmZsYXZvcj13azImaWQ9MjM2NTQyJykKKyAgICAgICAg
cmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvdXJscz92ZXJzaW9uX25hbWU9
Q2F0YWxpbmEmZmxhdm9yPXdrMiZpZD0xYWJlMjViNDQzZTknKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHByaW50KHJlc3BvbnNl
Lmpzb24oKVswXVsndXJscyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpz
b24oKVswXVsndXJscyddWzBdWydidWlsZCddLCAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnLyMv
YnVpbGRlcnMvNS9idWlsZHMvMycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uu
anNvbigpWzBdWyd1cmxzJ11bMF1bJ3F1ZXVlJ10sICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcv
Iy9idWlsZGVycy81JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClb
MF1bJ3VybHMnXVswXVsnd29ya2VyJ10sICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcvIy93b3Jr
ZXJzLzQnKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2Nv
bW1pdF9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAyNzM4MzQpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9s
bGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw5ICsyNCw5IEBAIGltcG9ydCBqc29uCiAKIGZy
b20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiBmcm9tIGZsYXNrIGltcG9ydCBhYm9y
dCwganNvbmlmeSwgcmVxdWVzdAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5yZXBvc2l0b3J5IGlt
cG9ydCBTQ01FeGNlcHRpb24KIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1w
b3J0IENvbW1pdAogZnJvbSB3ZWJraXRmbGFza3B5LnV0aWwgaW1wb3J0IEFzc2VydFJlcXVlc3Qs
IHF1ZXJ5X2FzX2t3YXJncywgbGltaXRfZm9yX3F1ZXJ5Citmcm9tIHdlYmtpdHNjbXB5IGltcG9y
dCBTY21CYXNlCiAKIAogZGVmIF9maW5kX2NvbXBhcmlzb24oY29tbWl0X2NvbnRleHQsIHJlcG9z
aXRvcnlfaWQsIGJyYW5jaCwgaWQsIHV1aWQsIHRpbWVzdGFtcCwgcHJpb3JpdHk9bWluKToKQEAg
LTI5OSw3ICsyOTksNyBAQCBjbGFzcyBDb21taXRDb250cm9sbGVyKEhhc0NvbW1pdENvbnRleHQp
CiAgICAgICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5nZXQoJ2JyYW5jaCcpLAogICAgICAgICAg
ICAgICAgIGNvbW1pdF9pZD1jb21taXQuZ2V0KCdpZCcpLAogICAgICAgICAgICAgKQotICAgICAg
ICBleGNlcHQgKFJ1bnRpbWVFcnJvciwgU0NNRXhjZXB0aW9uKSBhcyBlcnJvcjoKKyAgICAgICAg
ZXhjZXB0IChSdW50aW1lRXJyb3IsIFNjbUJhc2UuRXhjZXB0aW9uKSBhcyBlcnJvcjoKICAgICAg
ICAgICAgIGFib3J0KDQwNCwgZGVzY3JpcHRpb249c3RyKGVycm9yKSkKIAogICAgICAgICBpZiBp
c19lbmRwb2ludDoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
Y29udHJvbGxlci9jb21taXRfY29udHJvbGxlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjczODM0
KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29u
dHJvbGxlci9jb21taXRfY29udHJvbGxlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw5ICsyNywxMSBA
QCBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9yCiBmcm9tIHJlc3VsdHNk
YnB5LmZsYXNrX3N1cHBvcnQuZmxhc2tfdGVzdGNhc2UgaW1wb3J0IEZsYXNrVGVzdENhc2UKIGZy
b20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNv
bnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBv
cnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBv
c2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZOUmVwb3NpdG9yeQorZnJv
bSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZh
Y3RvcnkKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9kZWwgaW1wb3J0IE1vZGVsCiBmcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5yZXBvc2l0b3J5IGltcG9ydCBT
dGFzaFJlcG9zaXRvcnksIFdlYktpdFJlcG9zaXRvcnkKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBPdXRwdXRDYXB0dXJlCiAKIAogY2xhc3MgQ29tbWl0Q29udHJvbGxlclRlc3QoRmxhc2tUZXN0
Q2FzZSwgV2FpdEZvckRvY2tlclRlc3RDYXNlKToKQEAgLTM3LDIwICszOSwyNSBAQCBjbGFzcyBD
b21taXRDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlCiAKICAgICBAY2xhc3NtZXRob2QKICAg
ICBkZWYgc2V0dXBfd2Vic2VydmVyKGNscywgYXBwLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2Fu
ZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICByZWRpc19pbnN0YW5jZSA9IHJlZGlzKCkK
LSAgICAgICAgc2FmYXJpID0gTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkocmVkaXNfaW5zdGFu
Y2UpCi0gICAgICAgIHdlYmtpdCA9IE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdChyZWRpc19pbnN0
YW5jZSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxG
YWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgcmVkaXNfaW5zdGFuY2UgPSByZWRpcygpCisg
ICAgICAgICAgICBzYWZhcmkgPSBTdGFzaFJlcG9zaXRvcnkoJ2h0dHBzOi8vYml0YnVja2V0LmV4
YW1wbGUuY29tL3Byb2plY3RzL1NBRkFSSS9yZXBvcy9zYWZhcmknKQorICAgICAgICAgICAgd2Vi
a2l0ID0gV2ViS2l0UmVwb3NpdG9yeSgpCiAKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3Bh
Y2Uoa2V5c3BhY2U9Y2xzLktFWVNQQUNFKQotICAgICAgICBjYXNzYW5kcmFfaW5zdGFuY2UgPSBj
YXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkKKyAg
ICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkK
KyAgICAgICAgICAgIGNhc3NhbmRyYV9pbnN0YW5jZSA9IGNhc3NhbmRyYShrZXlzcGFjZT1jbHMu
S0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKQogCi0gICAgICAgIGFwcC5yZWdpc3Rlcl9i
bHVlcHJpbnQoQVBJUm91dGVzKE1vZGVsKHJlZGlzPXJlZGlzX2luc3RhbmNlLCBjYXNzYW5kcmE9
Y2Fzc2FuZHJhX2luc3RhbmNlLCByZXBvc2l0b3JpZXM9W3NhZmFyaSwgd2Via2l0XSkpKQorICAg
ICAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChBUElSb3V0ZXMoTW9kZWwocmVkaXM9cmVk
aXNfaW5zdGFuY2UsIGNhc3NhbmRyYT1jYXNzYW5kcmFfaW5zdGFuY2UsIHJlcG9zaXRvcmllcz1b
c2FmYXJpLCB3ZWJraXRdKSkpCiAKICAgICBkZWYgcmVnaXN0ZXJfYWxsX2NvbW1pdHMoc2VsZiwg
Y2xpZW50KToKLSAgICAgICAgZm9yIG1vY2tfcmVwb3NpdG9yeSBpbiBbTW9ja1N0YXNoUmVwb3Np
dG9yeS5zYWZhcmkoKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCldOgotICAgICAgICAgICAg
Zm9yIGNvbW1pdF9saXN0IGluIG1vY2tfcmVwb3NpdG9yeS5jb21taXRzLnZhbHVlcygpOgotICAg
ICAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0X2xpc3Q6Ci0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL2Nv
bW1pdHMvcmVnaXN0ZXInLCBkYXRhPUNvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChjb21taXQpKS5z
dGF0dXNfY29kZSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpIGFzIHNh
ZmFyaSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKSBhcyB3ZWJraXQ6CisgICAgICAgICAgICBm
b3IgbmFtZSwgbW9ja19yZXBvc2l0b3J5IGluIGRpY3Qoc2FmYXJpPXNhZmFyaSwgd2Via2l0PXdl
YmtpdCkuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBmb3IgY29tbWl0X2xpc3QgaW4gbW9ja19y
ZXBvc2l0b3J5LmNvbW1pdHMudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgICAgIGZvciBjb21t
aXQgaW4gY29tbWl0X2xpc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDIwMCwgY2xpZW50LnBvc3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5V
UkwgKyAnL2FwaS9jb21taXRzL3JlZ2lzdGVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhPWRpY3QoaWQ9Y29tbWl0Lmhhc2ggb3IgY29tbWl0LnJldmlzaW9uLCByZXBvc2l0b3J5
X2lkPW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICApLnN0YXR1c19jb2RlKQogCiAgICAg
QFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VT
dHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZs
YXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKQEAgLTY4LDE1ICs3NSwxNyBAQCBjbGFz
cyBDb21taXRDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlCiAgICAgICAgIHNlbGYucmVnaXN0
ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQogICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2Vs
Zi5VUkwgKyAnL2FwaS9jb21taXRzL2JyYW5jaGVzJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRp
Y3Qod2Via2l0PVsnc2FmYXJpLTYwNi1icmFuY2gnLCAndHJ1bmsnXSwgc2FmYXJpPVsnbWFzdGVy
JywgJ3NhZmFyaS02MDYtYnJhbmNoJ10pLCByZXNwb25zZS5qc29uKCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGljdCgKKyAgICAgICAgICAgIHdlYmtpdD1bJ2JyYW5jaC1hJywgJ2JyYW5j
aC1iJywgJ3RhZ3MvdGFnLTEnLCAndGFncy90YWctMicsICd0cnVuayddLAorICAgICAgICAgICAg
c2FmYXJpPVsnYnJhbmNoLWEnLCAnYnJhbmNoLWInLCAnbWFpbiddKSwgcmVzcG9uc2UuanNvbigp
KQogCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1p
dHMvYnJhbmNoZXM/YnJhbmNoPXNhZmFyaScpCisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50Lmdl
dChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvYnJhbmNoZXM/YnJhbmNoPWJyYW5jaCcpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChkaWN0KHdlYmtpdD1bJ3NhZmFyaS02MDYtYnJhbmNoJ10sIHNhZmFy
aT1bJ3NhZmFyaS02MDYtYnJhbmNoJ10pLCByZXNwb25zZS5qc29uKCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGljdCh3ZWJraXQ9WydicmFuY2gtYScsICdicmFuY2gtYiddLCBzYWZhcmk9
WydicmFuY2gtYScsICdicmFuY2gtYiddKSwgcmVzcG9uc2UuanNvbigpKQogCiAgICAgICAgIHJl
c3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvYnJhbmNoZXM/cmVw
b3NpdG9yeV9pZD1zYWZhcmknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0
YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdChzYWZhcmk9Wydt
YXN0ZXInLCAnc2FmYXJpLTYwNi1icmFuY2gnXSksIHJlc3BvbnNlLmpzb24oKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChkaWN0KHNhZmFyaT1bJ2JyYW5jaC1hJywgJ2JyYW5jaC1iJywgJ21h
aW4nXSksIHJlc3BvbnNlLmpzb24oKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJh
PU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNl
cnZlcigpCkBAIC04Niw1NCArOTUsNTIgQEAgY2xhc3MgQ29tbWl0Q29udHJvbGxlclRlc3QoRmxh
c2tUZXN0Q2FzZQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tl
cihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRy
YUNvbnRleHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKLSAgICBk
ZWYgdGVzdF9yZWdpc3Rlcl92aWFfcG9zdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29t
bWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0nYmI2YmRhNWY0NGRk
MicpKS5zdGF0dXNfY29kZSkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJM
ICsgJy9hcGkvY29tbWl0cz9yZXBvc2l0b3J5X2lkPXNhZmFyaScpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKLSAgICAgICAgICAgIENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKSwK
LSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgn
YmI2YmRhNWY0NGRkMicpLAotICAgICAgICApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgy
MDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBv
c2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0nMjM2NTQ0JykpLnN0YXR1c19jb2RlKQotICAgICAgICBy
ZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3JlcG9zaXRvcnlf
aWQ9d2Via2l0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1
c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgQ29tbWl0LmZy
b21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLAotICAgICAgICAgICAgTW9ja1NWTlJlcG9zaXRv
cnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgnMjM2NTQ0JyksCi0gICAgICAgICkKLQotICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBGbGFz
a1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXJfd2l0
aF9wYXJ0aWFsX2NvbW1pdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRh
dGE9ZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0nYmI2YmRhNWY0NGRkMicpKS5zdGF0
dXNfY29kZSkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkv
Y29tbWl0cz9yZXBvc2l0b3J5X2lkPXNhZmFyaScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAg
ICAgICAgICAgIENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKSwKLSAgICAgICAg
ICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWY0
NGRkMicpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDA0LCBjbGllbnQu
cG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMnLCBkYXRhPWRpY3QocmVwb3NpdG9yeV9pZD0n
c2FmYXJpJywgaWQ9J2FhYWFhYWFhYWFhYWEnKSkuc3RhdHVzX2NvZGUpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycs
IGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0nMjM2NTQ0JykpLnN0YXR1c19j
b2RlKQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21t
aXRzP3JlcG9zaXRvcnlfaWQ9d2Via2l0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAs
IHJlc3BvbnNlLnN0YXR1c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAg
ICAgICAgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLAotICAgICAgICAgICAg
TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgnMjM2NTQ0JyksCi0gICAg
ICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MDQsIGNsaWVudC5wb3N0KHNlbGYuVVJM
ICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0n
MCcpKS5zdGF0dXNfY29kZSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgp
LCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpLCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS9jb21t
aXRzJywgZGF0YT1kaWN0KHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGlkPSdkOGJjZTI2ZmE2NWMn
KSkuc3RhdHVzX2NvZGUpCisgICAgICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5V
UkwgKyAnL2FwaS9jb21taXRzP3JlcG9zaXRvcnlfaWQ9c2FmYXJpJykKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgQ29tbWl0LmZyb21fanNvbihyZXNwb25z
ZS5qc29uKClbMF0pLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgJ1BhdGNoIFNlcmllc1xuJywK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDA0LCBjbGllbnQu
cG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMnLCBkYXRhPWRpY3QocmVwb3NpdG9yeV9pZD0n
c2FmYXJpJywgaWQ9J2FhYWFhYWFhYWFhYWEnKSkuc3RhdHVzX2NvZGUpCisKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1p
dHMnLCBkYXRhPWRpY3QocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgaWQ9JzYnKSkuc3RhdHVzX2Nv
ZGUpCisgICAgICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9j
b21taXRzP3JlcG9zaXRvcnlfaWQ9d2Via2l0JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICAgICAgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0p
Lm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgJzZ0aCBjb21taXQnLAorICAgICAgICAgICAgKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MDQsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsg
Jy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0nMTIz
NCcpKS5zdGF0dXNfY29kZSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9u
b19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tD
YXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigp
CiAgICAgZGVmIHRlc3RfcmVnaXN0ZXJfd2l0aF9mdWxsX2NvbW1pdChzZWxmLCBjbGllbnQsICoq
a3dhcmdzKToKLSAgICAgICAgZ2l0X2NvbW1pdCA9IE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJp
KCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWY0NGRkMicpCisgICAgICAgIGdpdF9jb21taXQgPSBD
b21taXQoCisgICAgICAgICAgICByZXBvc2l0b3J5X2lkPSdzYWZhcmknLAorICAgICAgICAgICAg
YnJhbmNoPSdtYWluJywKKyAgICAgICAgICAgIGlkPSc4ZWJhMjgwZTMyZGFhZjVmZGRiYmI2NWFl
YTM3OTMyZWE5YWQ4NWRmJywKKyAgICAgICAgICAgIHRpbWVzdGFtcD0xNjAxNjUwMTAwLAorICAg
ICAgICAgICAgb3JkZXI9MCwKKyAgICAgICAgICAgIGNvbW1pdHRlcj0namJlZGFyZEB3ZWJraXQu
b3JnJywKKyAgICAgICAgICAgIG1lc3NhZ2U9J2N1c3RvbSBjb21taXQnLAorICAgICAgICApCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBp
L2NvbW1pdHMnLCBkYXRhPUNvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChnaXRfY29tbWl0KSkuc3Rh
dHVzX2NvZGUpCiAgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBp
L2NvbW1pdHM/cmVwb3NpdG9yeV9pZD1zYWZhcmknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29t
bWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLCBnaXRfY29tbWl0KQogCi0gICAgICAg
IHN2bl9jb21taXQgPSBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKCcy
MzY1NDQnKQorICAgICAgICBzdm5fY29tbWl0ID0gQ29tbWl0KAorICAgICAgICAgICAgcmVwb3Np
dG9yeV9pZD0nd2Via2l0JywKKyAgICAgICAgICAgIGJyYW5jaD0ndHJ1bmsnLAorICAgICAgICAg
ICAgaWQ9JzEyMzQnLAorICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NTAxMDAsCisgICAgICAg
ICAgICBvcmRlcj0wLAorICAgICAgICAgICAgY29tbWl0dGVyPSdqYmVkYXJkQHdlYmtpdC5vcmcn
LAorICAgICAgICAgICAgbWVzc2FnZT0nY3VzdG9tIGNvbW1pdCcsCisgICAgICAgICkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29t
bWl0cycsIGRhdGE9Q29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KHN2bl9jb21taXQpKS5zdGF0dXNf
Y29kZSkKICAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29t
bWl0cz9yZXBvc2l0b3J5X2lkPXdlYmtpdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAw
LCByZXNwb25zZS5zdGF0dXNfY29kZSkKQEAgLTE1MCwxMjYgKzE1NywxMjggQEAgY2xhc3MgQ29t
bWl0Q29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93
aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3RfZmluZF9pZChzZWxmLCBjbGllbnQsICoqa3dh
cmdzKToKICAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0cyhjbGllbnQpCi0gICAgICAg
IHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/aWQ9MzM2NjEw
YTgnKQorICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21t
aXRzP2lkPWQ4YmNlMjZmYTY1YycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNw
b25zZS5zdGF0dXNfY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVzcG9u
c2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuZnJvbV9qc29uKHJl
c3BvbnNlLmpzb24oKVswXSksIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zv
cl9pZChpZD0nMzM2NjEwYTgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuZnJv
bV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSkuaGFzaCwgJ2Q4YmNlMjZmYTY1YzZmYzhmMzljMTc5
MjdhYmI3N2Y2OWZhYjgyZmMnKQogCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxm
LlVSTCArICcvYXBpL2NvbW1pdHM/aWQ9MjM2NTQwJykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGll
bnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9pZD02JykKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENv
bW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Vi
a2l0KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKS5yZXZpc2lvbiwgNikKIAogICAg
IEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtl
U3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBG
bGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3RfZmluZF90aW1l
c3RhbXAoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYucmVnaXN0ZXJfYWxs
X2NvbW1pdHMoY2xpZW50KQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwg
KyAnL2FwaS9jb21taXRzP3RpbWVzdGFtcD0xNTM3NTUwNjg1JykKKyAgICAgICAgcmVzcG9uc2Ug
PSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz90aW1lc3RhbXA9MTYwMTY2ODAw
MCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVzcG9uc2UuanNvbigpKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChbQ29tbWl0LmZyb21fanNvbihlbGVtZW50KSBmb3IgZWxlbWVu
dCBpbiByZXNwb25zZS5qc29uKCldLCBbCi0gICAgICAgICAgICBNb2NrU3Rhc2hSZXBvc2l0b3J5
LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9J2U2NDgxMGE0JyksCi0gICAgICAgICAgICBNb2Nr
U3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9JzdiZTQwODQyJyksCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0NvbW1pdC5mcm9tX2pzb24oZWxlbWVudCkuaGFzaCBm
b3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldLCBbCisgICAgICAgICAgICAnYmFlNWQxZTkw
OTk5ZDRmOTE2YThhMTU4MTBjY2ZhNDNmMzdhMmZkNicsCisgICAgICAgICAgICAnZDhiY2UyNmZh
NjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycsCiAgICAgICAgIF0pCiAKLSAgICAgICAg
cmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz90aW1lc3RhbXA9
MTUzODA0MTc5MS44JykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsg
Jy9hcGkvY29tbWl0cz90aW1lc3RhbXA9MTYwMTYzOTkwMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgxLCBsZW4ocmVzcG9uc2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21t
aXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSksIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtp
dCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChD
b21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSkucmV2aXNpb24sIDYpCiAKICAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxh
c2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X2ZpbmRfdXVpZChz
ZWxmLCBjbGllbnQsICoqa3dhcmdzKToKICAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0
cyhjbGllbnQpCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBp
L2NvbW1pdHM/dXVpZD0xNTM3NTUwNjg1MDEnKQorICAgICAgICByZXNwb25zZSA9IGNsaWVudC5n
ZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3V1aWQ9MTYwMTY2ODAwMDAxJykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKSwgTW9ja1N0YXNoUmVw
b3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSc3YmU0MDg0MicpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKS5oYXNo
LCAnZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycpCiAKLSAgICAgICAg
cmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz91dWlkPTE1Mzgw
NDE3OTIwMCcpCisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBp
L2NvbW1pdHM/dXVpZD0xNjAxNjM5OTAwMDAnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIw
MCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVu
KHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LmZyb21f
anNvbihyZXNwb25zZS5qc29uKClbMF0pLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21t
aXRfZm9yX2lkKGlkPTIzNjU0MSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LmZy
b21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLnJldmlzaW9uLCA2KQogCiAgICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZsYXNrVGVzdENh
c2UucnVuX3dpdGhfd2Vic2VydmVyKCkKICAgICBkZWYgdGVzdF9maW5kX3JhbmdlX2lkKHNlbGYs
IGNsaWVudCwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNs
aWVudCkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29t
bWl0cz9hZnRlcl9pZD0zMzY2MTBhOCZiZWZvcmVfaWQ9MjM2NTQwJykKKyAgICAgICAgcmVzcG9u
c2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9hZnRlcl9pZD02JmJlZm9y
ZV9pZD1mZmY4M2JiMmQ5MTcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9u
c2Uuc3RhdHVzX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0NvbW1pdC5mcm9tX2pz
b24oZWxlbWVudCkgZm9yIGVsZW1lbnQgaW4gcmVzcG9uc2UuanNvbigpXSwgWwotICAgICAgICAg
ICAgTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBh
OCcpLAotICAgICAgICAgICAgTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9y
X2lkKGlkPSdiYjZiZGE1ZicpLAotICAgICAgICAgICAgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0
KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDApLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtD
b21taXQuZnJvbV9qc29uKGVsZW1lbnQpLmlkIGZvciBlbGVtZW50IGluIHJlc3BvbnNlLmpzb24o
KV0sIFsKKyAgICAgICAgICAgICc2JywgJzliODMxMWYyNWE3N2JhMTQ5MjNkOWQ1YTY1MzIxMDNm
NTRhYmVmY2InLCAnZmZmODNiYjJkOTE3MWI0ZDkxOTZlOTc3ZWIwNTA4ZmQ1N2U3YTA4ZCcsCiAg
ICAgICAgIF0pCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2Vy
KG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJh
Q29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRl
ZiB0ZXN0X2ZpbmRfcmFuZ2VfdGltZXN0YW1wKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgogICAg
ICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkKLSAgICAgICAgcmVzcG9uc2Ug
PSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9hZnRlcl90aW1lc3RhbXA9MTUz
ODA0MTc5Mi4zJmJlZm9yZV90aW1lc3RhbXA9MTUzODA0OTEwOCcpCisgICAgICAgIHJlc3BvbnNl
ID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/YWZ0ZXJfdGltZXN0YW1wPTE2
MDE2Mzc5MDAmYmVmb3JlX3RpbWVzdGFtcD0xNjAxNjM5OTAwJykKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAotICAgICAgICAgICAgW0NvbW1pdC5mcm9tX2pzb24oZWxlbWVudCkgZm9yIGVsZW1lbnQg
aW4gcmVzcG9uc2UuanNvbigpXSwKLSAgICAgICAgICAgIFtNb2NrU1ZOUmVwb3NpdG9yeS53ZWJr
aXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MSksIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgp
LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQyKV0sCisgICAgICAgICAgICBbQ29tbWl0LmZyb21fanNv
bihlbGVtZW50KS5yZXZpc2lvbiBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldLAorICAg
ICAgICAgICAgWzQsIDZdLAogICAgICAgICApCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93
ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X2ZpbmRfcmFuZ2VfdXVpZChzZWxmLCBjbGllbnQsICoq
a3dhcmdzKToKICAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0cyhjbGllbnQpCi0gICAg
ICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/YWZ0ZXJf
dXVpZD0xNTM3NTUwNjg1MDEmYmVmb3JlX3V1aWQ9MTUzNzU2NjM4NjAyJykKKyAgICAgICAgcmVz
cG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9hZnRlcl91dWlkPTE2
MDE2NjgwMDAwMCZiZWZvcmVfdXVpZD0xNjAxNjY4MDAwMDEnKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCi0gICAgICAgICAgICBbQ29tbWl0LmZyb21fanNvbihlbGVtZW50KSBmb3IgZWxlbWVudCBp
biByZXNwb25zZS5qc29uKCldLAotICAgICAgICAgICAgW01vY2tTdGFzaFJlcG9zaXRvcnkuc2Fm
YXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nN2JlNDA4NDInKSwgTW9ja1N0YXNoUmVwb3NpdG9yeS5z
YWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhNCcpXSwKKyAgICAgICAgICAgIFtDb21t
aXQuZnJvbV9qc29uKGVsZW1lbnQpLmhhc2ggZm9yIGVsZW1lbnQgaW4gcmVzcG9uc2UuanNvbigp
XSwgWworICAgICAgICAgICAgICAgICdiYWU1ZDFlOTA5OTlkNGY5MTZhOGExNTgxMGNjZmE0M2Yz
N2EyZmQ2JywKKyAgICAgICAgICAgICAgICAnZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3
ZjY5ZmFiODJmYycsCisgICAgICAgICAgICBdLAogICAgICAgICApCiAKICAgICBAV2FpdEZvckRv
Y2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlz
LCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2Fz
ZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X25leHQoc2VsZiwgY2xpZW50LCAq
Kmt3YXJncyk6CiAgICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAg
ICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL25leHQ/
aWQ9MzM2NjEwYTQnKQorICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAn
L2FwaS9jb21taXRzL25leHQ/aWQ9YmFlNWQxZTkwOTk5JykKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vY2tT
dGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nMzM2NjEwYTgnKSwgQ29t
bWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4MmZjJywgQ29tbWl0LmZy
b21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLmhhc2gpCiAKLSAgICAgICAgcmVzcG9uc2UgPSBj
bGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cy9uZXh0P2lkPTIzNjU0MicpCisgICAg
ICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvbmV4dD9p
ZD00JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2Rl
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9m
b3JfaWQoaWQ9MjM2NTQzKSwgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDYsIENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNv
bigpWzBdKS5yZXZpc2lvbikKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9u
b19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tD
YXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigp
CiAgICAgZGVmIHRlc3RfcHJldmlvdXMoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6CiAgICAgICAg
IHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAgICAgICByZXNwb25zZSA9IGNs
aWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3ByZXZpb3VzP2lkPTMzNjYxMGE0JykK
KyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cy9w
cmV2aW91cz9pZD1kOGJjZTI2ZmE2NWMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwg
cmVzcG9uc2Uuc3RhdHVzX2NvZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJl
c3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9ja1N0YXNoUmVwb3Np
dG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSc3YmU0MDg0MicpLCBDb21taXQuZnJvbV9q
c29uKHJlc3BvbnNlLmpzb24oKVswXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2JhZTVk
MWU5MDk5OWQ0ZjkxNmE4YTE1ODEwY2NmYTQzZjM3YTJmZDYnLCBDb21taXQuZnJvbV9qc29uKHJl
c3BvbnNlLmpzb24oKVswXSkuaGFzaCkKIAotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQo
c2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3ByZXZpb3VzP2lkPTIzNjU0MicpCisgICAgICAgIHJl
c3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvcHJldmlvdXM/aWQ9
NicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVzcG9uc2UuanNvbigpKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9y
X2lkKGlkPTIzNjU0MSksIENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24o
KVswXSkucmV2aXNpb24pCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQog
ICAgIGRlZiB0ZXN0X3NpYmxpbmdzKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgogICAgICAgICBz
ZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkKIAotICAgICAgICByZXNwb25zZSA9IGNs
aWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3NpYmxpbmdzP3JlcG9zaXRvcnlfaWQ9
d2Via2l0JmlkPTIzNjU0MicpCisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVS
TCArICcvYXBpL2NvbW1pdHMvc2libGluZ3M/cmVwb3NpdG9yeV9pZD13ZWJraXQmaWQ9NicpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAg
ICAgY29tbWl0cyA9IHtrZXk6IFtDb21taXQuZnJvbV9qc29uKGVsZW1lbnQpIGZvciBlbGVtZW50
IGluIHZhbHVlc10gZm9yIGtleSwgdmFsdWVzIGluIHJlc3BvbnNlLmpzb24oKS5pdGVtcygpfQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHsnc2FmYXJpJzogW01vY2tTdGFzaFJl
cG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWY0NGRkMjQnKV19KQor
ICAgICAgICBjb21taXRzID0ge2tleTogW0NvbW1pdC5mcm9tX2pzb24oZWxlbWVudCkuaGFzaCBm
b3IgZWxlbWVudCBpbiB2YWx1ZXNdIGZvciBrZXksIHZhbHVlcyBpbiByZXNwb25zZS5qc29uKCku
aXRlbXMoKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvbW1pdHMs
IGRpY3Qoc2FmYXJpPVsKKyAgICAgICAgICAgICAgICAnZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzky
N2FiYjc3ZjY5ZmFiODJmYycsCisgICAgICAgICAgICAgICAgJ2JhZTVkMWU5MDk5OWQ0ZjkxNmE4
YTE1ODEwY2NmYTQzZjM3YTJmZDYnLAorICAgICAgICAgICAgICAgICcxYWJlMjViNDQzZTk4NWY5
M2I5MGQ4MzBlNGE3ZTM3MzEzMzZhZjRkJywKKyAgICAgICAgICAgICAgICAnZmZmODNiYjJkOTE3
MWI0ZDkxOTZlOTc3ZWIwNTA4ZmQ1N2U3YTA4ZCcsCisgICAgICAgICAgICAgICAgJzliODMxMWYy
NWE3N2JhMTQ5MjNkOWQ1YTY1MzIxMDNmNTRhYmVmY2InLAorICAgICAgICAgICAgXSksCisgICAg
ICAgICkKIAotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9j
b21taXRzL3NpYmxpbmdzP3JlcG9zaXRvcnlfaWQ9c2FmYXJpJmlkPWJiNmJkYTVmNDRkZDI0JykK
KyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cy9z
aWJsaW5ncz9yZXBvc2l0b3J5X2lkPXNhZmFyaSZpZD1kOGJjZTI2ZmE2NWMnKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCi0gICAgICAgIGNvbW1p
dHMgPSB7a2V5OiBbQ29tbWl0LmZyb21fanNvbihlbGVtZW50KSBmb3IgZWxlbWVudCBpbiB2YWx1
ZXNdIGZvciBrZXksIHZhbHVlcyBpbiByZXNwb25zZS5qc29uKCkuaXRlbXMoKX0KLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjb21taXRzLCB7J3dlYmtpdCc6IFsKLSAgICAgICAgICAgIE1vY2tT
Vk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0KSwKLSAgICAgICAg
ICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQzKSwK
LSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9
MjM2NTQyKSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9m
b3JfaWQoaWQ9MjM2NTQxKSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgp
LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQwKSwKLSAgICAgICAgXX0pCisgICAgICAgIGNvbW1pdHMg
PSB7a2V5OiBbQ29tbWl0LmZyb21fanNvbihlbGVtZW50KS5yZXZpc2lvbiBmb3IgZWxlbWVudCBp
biB2YWx1ZXNdIGZvciBrZXksIHZhbHVlcyBpbiByZXNwb25zZS5qc29uKCkuaXRlbXMoKX0KKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRzLCBkaWN0KHdlYmtpdD1bNl0pKQpJbmRleDog
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxl
ci9mYWlsdXJlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJl
X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3MzgzNCkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvZmFpbHVyZV9j
b250cm9sbGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBAIGZy
b20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC5mbGFza190ZXMKIGZyb20gcmVzdWx0c2RicHku
bW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKIGZyb20gcmVz
dWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRy
YUNvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19tb2RlbF9mYWN0b3J5IGltcG9y
dCBNb2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBp
bXBvcnQgRXhwZWN0YXRpb25zCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tl
cl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQogCiAKQEAgLTM4LDI1ICsz
NywyNiBAQCBjbGFzcyBGYWlsdXJlQ29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzCiAKICAgICBA
Y2xhc3NtZXRob2QKICAgICBkZWYgc2V0dXBfd2Vic2VydmVyKGNscywgYXBwLCByZWRpcz1TdHJp
Y3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBjYXNzYW5kcmEu
ZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UpCi0gICAgICAgIG1vZGVsID0gTW9j
a01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShr
ZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKLSAgICAgICAgYXBw
LnJlZ2lzdGVyX2JsdWVwcmludChBUElSb3V0ZXMobW9kZWwpKQotCi0gICAgICAgIE1vY2tNb2Rl
bEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhtb2RlbCwgdGVzdF9yZXN1bHRzPWRpY3QoCi0gICAg
ICAgICAgICBkZXRhaWxzPWRpY3QobGluaz0nZHVtbXktbGluaycpLAotICAgICAgICAgICAgcnVu
X3N0YXRzPWRpY3QodGVzdHNfc2tpcHBlZD0wKSwKLSAgICAgICAgICAgIHJlc3VsdHM9ewotICAg
ICAgICAgICAgICAgICdmYXN0JzogewotICAgICAgICAgICAgICAgICAgICAnZW5jb2RpbmcnOiB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWNhY2hlZC1ib20uaHRtbCc6IGRpY3QoZXhw
ZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J0ZBSUwnLCB0aW1lPTEuMiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J0ZBSUwn
LCBhY3R1YWw9J0ZBSUwnLCB0aW1lPTEuMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAnY3Nz
LWNoYXJzZXQuaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J0ZBSUwnLCBhY3R1YWw9J1BBU1MnLCB0aW1l
PTEuMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWxpbmstY2hhcnNldC5odG1sJzog
ZGljdChleHBlY3RlZD0nUEFTUycsIGFjdHVhbD0nUEFTJywgdGltZT0xLjIpLAorICAgICAgICB3
aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6
CisgICAgICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1jbHMuS0VZU1BB
Q0UpCisgICAgICAgICAgICBtb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJl
ZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQQUNFLCBjcmVhdGVf
a2V5c3BhY2U9VHJ1ZSkpCisgICAgICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJv
dXRlcyhtb2RlbCkpCisKKyAgICAgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVz
dWx0cyhtb2RlbCwgdGVzdF9yZXN1bHRzPWRpY3QoCisgICAgICAgICAgICAgICAgZGV0YWlscz1k
aWN0KGxpbms9J2R1bW15LWxpbmsnKSwKKyAgICAgICAgICAgICAgICBydW5fc3RhdHM9ZGljdCh0
ZXN0c19za2lwcGVkPTApLAorICAgICAgICAgICAgICAgIHJlc3VsdHM9eworICAgICAgICAgICAg
ICAgICAgICAnZmFzdCc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdlbmNvZGluZyc6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWNhY2hlZC1ib20uaHRtbCc6IGRpY3Qo
ZXhwZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J0ZBSUwnLCB0aW1lPTEuMiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwnOiBkaWN0KGV4cGVjdGVk
PSdGQUlMJywgYWN0dWFsPSdGQUlMJywgdGltZT0xLjIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdjc3MtY2hhcnNldC5odG1sJzogZGljdChleHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0n
UEFTUycsIHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWxpbmst
Y2hhcnNldC5odG1sJzogZGljdChleHBlY3RlZD0nUEFTUycsIGFjdHVhbD0nUEFTJywgdGltZT0x
LjIpLAorICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgKSkKLSAgICAgICAgTW9j
a01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMobW9kZWwpCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICkpCisgICAgICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVz
dWx0cyhtb2RlbCkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2Nr
ZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5k
cmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCkluZGV4
OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9s
bGVyL3N1aXRlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9zdWl0ZV9j
b250cm9sbGVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzM4MzQpCisrKyBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3N1aXRlX2NvbnRy
b2xsZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdo
dCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTIgKzM3LDEzIEBAIGNsYXNzIFN1aXRlQ29udHJv
bGxlclRlc3QoRmxhc2tUZXN0Q2FzZSwKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXR1
cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2Fu
ZHJhQ29udGV4dCk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNs
cy5LRVlTUEFDRSkKLSAgICAgICAgbW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRp
cz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwgY3Jl
YXRlX2tleXNwYWNlPVRydWUpKQotICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJv
dXRlcyhtb2RlbCkpCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9j
a01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNw
YWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKKyAgICAgICAgICAgIG1vZGVsID0gTW9ja01vZGVs
RmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFj
ZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAgICAgIGFwcC5y
ZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVzKG1vZGVsKSkKIAotICAgICAgICBNb2NrTW9kZWxG
YWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMobW9kZWwpCi0gICAgICAgIE1vY2tNb2RlbEZhY3Rvcnku
cHJvY2Vzc19yZXN1bHRzKG1vZGVsKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRf
bW9ja19yZXN1bHRzKG1vZGVsKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNz
X3Jlc3VsdHMobW9kZWwpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQpA
QCAtNzMsNyArNzQsNyBAQCBjbGFzcyBTdWl0ZUNvbnRyb2xsZXJUZXN0KEZsYXNrVGVzdENhc2Us
CiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlz
PUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAg
ICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKICAgICBkZWYgdGVzdF9yZXN1
bHRzX2J5X2NvbW1pdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2Ug
PSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvcmVzdWx0cy9sYXlvdXQtdGVzdHM/cGxhdGZv
cm09aU9TJnN0eWxlPURlYnVnJmFmdGVyX2lkPTMzNjYxMGE4NCZiZWZvcmVfaWQ9MjM2NTQyJykK
KyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvcmVzdWx0cy9s
YXlvdXQtdGVzdHM/cGxhdGZvcm09aU9TJnN0eWxlPURlYnVnJmFmdGVyX2lkPTYmYmVmb3JlX2lk
PTFhYmUyNWI0NDNlOScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVz
X2NvZGUsIDIwMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9uc2UuanNvbigp
KSwgMikKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CkluZGV4OiBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxl
cl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlcl91bml0dGVzdC5w
eQkocmV2aXNpb24gMjczODM0KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzgsMTIgKzM4LDEzIEBAIGNsYXNzIFRlc3RDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNl
LCAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAs
IHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAg
IGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKLSAgICAgICAg
bW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9
Y2Fzc2FuZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQot
ICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkpCisgICAgICAg
IHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQo
KToKKyAgICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlT
UEFDRSkKKyAgICAgICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9
cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0
ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoQVBJ
Um91dGVzKG1vZGVsKSkKIAotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3Vs
dHMobW9kZWwpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkucHJvY2Vzc19yZXN1bHRzKG1vZGVs
KQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKG1vZGVsKQor
ICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMobW9kZWwpCiAKICAg
ICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFr
ZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBA
Rmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQpAQCAtMTA2LDcgKzEwNyw3IEBAIGNs
YXNzIFRlc3RDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlLCAKICAgICBAV2FpdEZvckRvY2tl
clRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBt
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5y
dW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X3Jlc3VsdHNfYnlfY29tbWl0KHNlbGYs
IGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5V
UkwgKyAnL2FwaS9yZXN1bHRzL2xheW91dC10ZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5rLWNo
YXJzZXQuaHRtbD9wbGF0Zm9ybT1pT1Mmc3R5bGU9RGVidWcmYWZ0ZXJfaWQ9MzM2NjEwYTg0JmJl
Zm9yZV9pZD0yMzY1NDInKQorICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwg
KyAnL2FwaS9yZXN1bHRzL2xheW91dC10ZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJz
ZXQuaHRtbD9wbGF0Zm9ybT1pT1Mmc3R5bGU9RGVidWcmYWZ0ZXJfaWQ9NiZiZWZvcmVfaWQ9MWFi
ZTI1YjQ0M2U5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29k
ZSwgMjAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5qc29uKCkpLCAy
KQogICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBsb2FkX2NvbnRyb2xsZXJf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlcl91bml0dGVzdC5w
eQkocmV2aXNpb24gMjczODM0KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlcl91bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjUsMTMgKzI1LDExIEBAIGltcG9ydCB0aW1lCiBmcm9tIGZha2Vy
ZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCiBmcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRp
cwogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRl
cwotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0CiBmcm9t
IHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlv
bgogZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LmZsYXNrX3Rlc3RjYXNlIGltcG9ydCBG
bGFza1Rlc3RDYXNlCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGlt
cG9ydCBDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2Fu
ZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJvbSBy
ZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTdGFzaFJlcG9zaXRv
cnksIE1vY2tTVk5SZXBvc2l0b3J5CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2Rv
Y2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQogCiAKQEAgLTQwLDE3
ICszOCwxOCBAQCBjbGFzcyBVcGxvYWRDb250cm9sbGVyUG9zdFRlc3QoRmxhc2tUZXN0CiAKICAg
ICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0dXBfd2Vic2VydmVyKGNscywgYXBwLCByZWRpcz1T
dHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBjYXNzYW5k
cmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UpCi0gICAgICAgIG1vZGVsID0g
TW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRy
YShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKLSAgICAgICAg
bW9kZWwudXBsb2FkX2NvbnRleHQucmVnaXN0ZXJfdXBsb2FkX2NhbGxiYWNrKCdweXRob24tdGVz
dHMnLCBsYW1iZGEgKiprd2FyZ3M6IGRpY3Qoc3RhdHVzPSdvaycpKQotICAgICAgICBhcHAucmVn
aXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkpCisgICAgICAgIHdpdGggTW9ja01vZGVs
RmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAg
IGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKKyAgICAgICAg
ICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVl
KSkKKyAgICAgICAgICAgIG1vZGVsLnVwbG9hZF9jb250ZXh0LnJlZ2lzdGVyX3VwbG9hZF9jYWxs
YmFjaygncHl0aG9uLXRlc3RzJywgbGFtYmRhICoqa3dhcmdzOiBkaWN0KHN0YXR1cz0nb2snKSkK
KyAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVzKG1vZGVsKSkKIAog
ICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1G
YWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAg
IEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3RfdXBsb2Fk
KHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgogICAgICAgICB1cGxvYWRfZGljdCA9IGRpY3QoCiAg
ICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKLSAgICAgICAgICAgIGNvbW1pdHM9W01v
Y2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWYnKSwgTW9j
a1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpXSwKKyAgICAgICAg
ICAgIGNvbW1pdHM9W2RpY3QocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgaWQ9J2Q4YmNlMjZmYTY1
YzZmYzhmMzljMTc5MjdhYmI3N2Y2OWZhYjgyZmMnKSwgZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJr
aXQnLCBpZD0nNicpXSwKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Q29uZmlndXJhdGlvbi5F
bmNvZGVyKCkuZGVmYXVsdChDb25maWd1cmF0aW9uKAogICAgICAgICAgICAgICAgIHBsYXRmb3Jt
PSdNYWMnLCB2ZXJzaW9uPScxMC4xNC4wJywgc2RrPScxOEEzOTEnLAogICAgICAgICAgICAgICAg
IGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLApAQCAtNTksMjEgKzU4
LDI0IEBAIGNsYXNzIFVwbG9hZENvbnRyb2xsZXJQb3N0VGVzdChGbGFza1Rlc3QKICAgICAgICAg
ICAgIHRlc3RfcmVzdWx0cz1Nb2NrTW9kZWxGYWN0b3J5LmxheW91dF90ZXN0X3Jlc3VsdHMoKSwK
ICAgICAgICAgICAgIHRpbWVzdGFtcD1pbnQodGltZS50aW1lKCkpLAogICAgICAgICApCi0gICAg
ICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS91cGxvYWQnLCBkYXRh
PXN0cihqc29uLmR1bXBzKHVwbG9hZF9kaWN0LCBjbHM9Q29tbWl0LkVuY29kZXIpKSkKKyAgICAg
ICAgcmVzcG9uc2UgPSBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL3VwbG9hZCcsIGRhdGE9
c3RyKGpzb24uZHVtcHModXBsb2FkX2RpY3QpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
ZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Bv
bnNlLmpzb24oKVsnc3RhdHVzJ10sICdvaycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
cG9uc2UuanNvbigpWydwcm9jZXNzaW5nJ11bJ3B5dGhvbi10ZXN0cyddLCBkaWN0KHN0YXR1cz0n
b2snKSkKIAogICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS91
cGxvYWQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAy
MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWzBdLCBDb21taXQu
RW5jb2RlcigpLmRlZmF1bHQodXBsb2FkX2RpY3QpKQorCisgICAgICAgIHJldHJpZXZlZCA9IHJl
c3BvbnNlLmpzb24oKVswXQorICAgICAgICByZXRyaWV2ZWRbJ2NvbW1pdHMnXSA9IFtkaWN0KHJl
cG9zaXRvcnlfaWQ9Y29tbWl0WydyZXBvc2l0b3J5X2lkJ10sIGlkPWNvbW1pdFsnaWQnXSkgZm9y
IGNvbW1pdCBpbiByZXRyaWV2ZWRbJ2NvbW1pdHMnXV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXRyaWV2ZWQsIHVwbG9hZF9kaWN0KQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5t
b2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5k
cmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vi
c2VydmVyKCkKICAgICBkZWYgdGVzdF91cGxvYWRfcGFydGlhbChzZWxmLCBjbGllbnQsICoqa3dh
cmdzKToKICAgICAgICAgdXBsb2FkX2RpY3QgPSBkaWN0KAogICAgICAgICAgICAgc3VpdGU9J2xh
eW91dC10ZXN0cycsCi0gICAgICAgICAgICBjb21taXRzPVtkaWN0KHJlcG9zaXRvcnlfaWQ9J3Nh
ZmFyaScsIGlkPSdiYjZiZGE1ZicpLCBkaWN0KHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGlkPTIz
NjU0MildLAorICAgICAgICAgICAgY29tbWl0cz1bZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmkn
LCBpZD0nZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycpLCBkaWN0KHJl
cG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGlkPSc2JyldLAogICAgICAgICAgICAgY29uZmlndXJhdGlv
bj1Db25maWd1cmF0aW9uLkVuY29kZXIoKS5kZWZhdWx0KENvbmZpZ3VyYXRpb24oCiAgICAgICAg
ICAgICAgICAgcGxhdGZvcm09J2lPUycsIHZlcnNpb249JzEyLjAuMCcsIHNkaz0nMTZBNDA0JywK
ICAgICAgICAgICAgICAgICBpc19zaW11bGF0b3I9VHJ1ZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQn
LApAQCAtMTExLDExICsxMTMsMTIgQEAgY2xhc3MgVXBsb2FkQ29udHJvbGxlclRlc3QoRmxhc2tU
ZXN0Q2FzZQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldHVwX3dlYnNlcnZlcihjbHMs
IGFwcCwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAg
ICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9Y2xzLktFWVNQQUNFKQotICAg
ICAgICBtb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3Nh
bmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1
ZSkpCi0gICAgICAgIG1vZGVsLnVwbG9hZF9jb250ZXh0LnJlZ2lzdGVyX3VwbG9hZF9jYWxsYmFj
aygncHl0aG9uLXRlc3RzJywgbGFtYmRhICoqa3dhcmdzOiBkaWN0KHN0YXR1cz0nb2snKSkKLSAg
ICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKG1vZGVsKQotICAgICAgICBh
cHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkpCisgICAgICAgIHdpdGggTW9j
a01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAg
ICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKKyAg
ICAgICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwg
Y2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFj
ZT1UcnVlKSkKKyAgICAgICAgICAgIG1vZGVsLnVwbG9hZF9jb250ZXh0LnJlZ2lzdGVyX3VwbG9h
ZF9jYWxsYmFjaygncHl0aG9uLXRlc3RzJywgbGFtYmRhICoqa3dhcmdzOiBkaWN0KHN0YXR1cz0n
b2snKSkKKyAgICAgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhtb2Rl
bCkKKyAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVzKG1vZGVsKSkK
IAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRp
cz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQog
ICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCkBAIC0xNzAsMjMgKzE3Mywy
NyBAQCBjbGFzcyBVcGxvYWRDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlCiAgICAgQFdhaXRG
b3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RS
ZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZsYXNrVGVz
dENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKICAgICBkZWYgdGVzdF9kb3dubG9hZF93aXRoX3Jh
bmdlKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5n
ZXQoc2VsZi5VUkwgKyAnL2FwaS91cGxvYWQ/cGxhdGZvcm09TWFjJnN0eWxlPVJlbGVhc2UmZmxh
dm9yPXdrMiZhZnRlcl9pZD0yMzY1NDImYmVmb3JlX2lkPTIzNjU0NCcpCisgICAgICAgIHJlc3Bv
bnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3VwbG9hZD9wbGF0Zm9ybT1NYWMmc3R5
bGU9UmVsZWFzZSZmbGF2b3I9d2syJmFmdGVyX2lkPTFhYmUyNWI0NDNlOSZiZWZvcmVfaWQ9ZDhi
Y2UyNmZhNjVjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29k
ZSwgMjAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihyZXNwb25zZS5qc29uKCkp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChbJzIzNjU0NCcsICcyMzY1NDMnLCAn
MjM2NTQyJ10pLCBzb3J0ZWQoW3Jlc3VsdFsnY29tbWl0cyddWzBdWydpZCddIGZvciByZXN1bHQg
aW4gcmVzcG9uc2UuanNvbigpXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKFsK
KyAgICAgICAgICAgICdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4MmZjJywK
KyAgICAgICAgICAgICdiYWU1ZDFlOTA5OTlkNGY5MTZhOGExNTgxMGNjZmE0M2YzN2EyZmQ2JywK
KyAgICAgICAgICAgICcxYWJlMjViNDQzZTk4NWY5M2I5MGQ4MzBlNGE3ZTM3MzEzMzZhZjRkJywK
KyAgICAgICAgXSksIHNvcnRlZChbcmVzdWx0Wydjb21taXRzJ11bMV1bJ2lkJ10gZm9yIHJlc3Vs
dCBpbiByZXNwb25zZS5qc29uKCldKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJh
PU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNl
cnZlcigpCiAgICAgZGVmIHRlc3RfZG93bmxvYWRfZm9yX2NvbW1pdChzZWxmLCBjbGllbnQsICoq
a3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkv
dXBsb2FkP3BsYXRmb3JtPU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13azImaWQ9MjM2NTQyJykK
KyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2FkP3Bs
YXRmb3JtPU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13azImaWQ9ZDhiY2UyNmZhNjVjJykKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFsnMjM2NTQyJ10sIFtyZXN1bHRbJ2NvbW1pdHMnXVswXVsnaWQnXSBmb3Ig
cmVzdWx0IGluIHJlc3BvbnNlLmpzb24oKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydk
OGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4MmZjJ10sIFtyZXN1bHRbJ2NvbW1p
dHMnXVsxXVsnaWQnXSBmb3IgcmVzdWx0IGluIHJlc3BvbnNlLmpzb24oKV0pCiAKLSAgICAgICAg
cmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2FkP3BsYXRmb3JtPU1h
YyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13azImaWQ9YmI2YmRhNWYnKQorICAgICAgICByZXNwb25z
ZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS91cGxvYWQ/cGxhdGZvcm09TWFjJnN0eWxl
PVJlbGVhc2UmZmxhdm9yPXdrMiZpZD02JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNw
b25zZS5zdGF0dXNfY29kZSwgMjAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxlbihy
ZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnYmI2YmRhNWY0NGRk
MjRkMGI1NDUzOWI4ZmY2ZThjMTdmNTE5MjQ5YSddICogNSwgW3Jlc3VsdFsnY29tbWl0cyddWzFd
WydpZCddIGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChbJzYnXSAqIDUsIFtyZXN1bHRbJ2NvbW1pdHMnXVswXVsnaWQnXSBmb3IgcmVzdWx0
IGluIHJlc3BvbnNlLmpzb24oKV0pCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tf
aWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1N
b2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2
ZXIoKQpAQCAtMTk5LDggKzIwNiw4IEBAIGNsYXNzIFVwbG9hZENvbnRyb2xsZXJUZXN0KEZsYXNr
VGVzdENhc2UKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1v
Y2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29u
dGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0
ZXN0X3Byb2Nlc3NfY29tbWl0KHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNw
b25zZSA9IGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2FkL3Byb2Nlc3M/cGxhdGZv
cm09TWFjJnN0eWxlPVJlbGVhc2UmZmxhdm9yPXdrMiZpZD0yMzY1NDMnKQorICAgICAgICByZXNw
b25zZSA9IGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2FkL3Byb2Nlc3M/cGxhdGZv
cm09TWFjJnN0eWxlPVJlbGVhc2UmZmxhdm9yPXdrMiZpZD1kOGJjZTI2ZmE2NWMnKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoWycyMzY1NDMnXSwgW3Jlc3VsdFsnY29tbWl0cyddWzBdWydpZCddIGZvciByZXN1
bHQgaW4gcmVzcG9uc2UuanNvbigpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ2Q4YmNl
MjZmYTY1YzZmYzhmMzljMTc5MjdhYmI3N2Y2OWZhYjgyZmMnXSwgW3Jlc3VsdFsnY29tbWl0cydd
WzFdWydpZCddIGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpXSkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbZGljdChzdGF0dXM9J29rJyldLCBbZWxlbWVudFsncHJvY2Vzc2luZyddWydw
eXRob24tdGVzdHMnXSBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldKQpJbmRleDogVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2
ZV9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dF91bml0dGVz
dC5weQkocmV2aXNpb24gMjczODM0KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0X3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMyLDcgKzMyLDYgQEAgZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpbwog
ZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgQ2Fzc2FuZHJh
Q29udGV4dAogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGlt
cG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21v
ZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkKLWZyb20gcmVzdWx0c2RicHkubW9k
ZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU1ZOUmVwb3NpdG9yeQogZnJvbSByZXN1bHRz
ZGJweS5tb2RlbC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0Rm9yRG9ja2Vy
VGVzdENhc2UKIAogCkBAIC00MCwyMCArMzksMjEgQEAgY2xhc3MgQXJjaGl2ZUNvbnRleHRUZXN0
KFdhaXRGb3JEb2NrZXJUZQogICAgIEtFWVNQQUNFID0gJ2FyY2hpdmVfdGVzdF9rZXlzcGFjZScK
IAogICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5k
cmE9Q2Fzc2FuZHJhQ29udGV4dCwgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uKCksIGFyY2hp
dmU9Tm9uZSk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYu
S0VZU1BBQ0UpCi0gICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShy
ZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0Us
IGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9j
a19hcmNoaXZlcyhzZWxmLm1vZGVsLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hp
dmU9YXJjaGl2ZSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2Nr
TW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3Bh
Y2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKKyAgICAgICAgICAgIHNlbGYubW9kZWwgPSBNb2Nr
TW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtl
eXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAgICAg
IE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfYXJjaGl2ZXMoc2VsZi5tb2RlbCwgY29uZmlndXJh
dGlvbj1jb25maWd1cmF0aW9uLCBhcmNoaXZlPWFyY2hpdmUpCiAKICAgICBAV2FpdEZvckRvY2tl
clRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBt
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9maW5kX2Fy
Y2hpdmUoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0
KToKICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fz
c2FuZHJhKQogICAgICAgICBhcmNoaXZlcyA9IHNlbGYubW9kZWwuYXJjaGl2ZV9jb250ZXh0LmZp
bmRfYXJjaGl2ZSgKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBs
YXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAg
ICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIp
LCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLAor
ICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwgZW5kPTE2MDE2NjAwMDAsCiAgICAgICAgICAg
ICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihuZXh0KGl0ZXIoYXJjaGl2ZXMudmFsdWVzKCkpKSksIDEpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobmV4dChpdGVyKGFyY2hpdmVzLnZhbHVlcygpKSlbMF1bJ3V1aWQnXSwgMTUz
ODA0OTEwODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihhcmNoaXZlcy52
YWx1ZXMoKSkpWzBdWyd1dWlkJ10sIDE2MDE2NjAwMDAwMCkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuZXh0KGl0ZXIoYXJjaGl2ZXMudmFsdWVzKCkpKVswXVsnYXJjaGl2ZSddLmdldHZhbHVl
KCksIGJhc2U2NC5iNjRkZWNvZGUoTW9ja01vZGVsRmFjdG9yeS5BUkNISVZFX1pJUCkpCiAKICAg
ICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFr
ZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKQEAgLTYx
LDExICs2MSwxMSBAQCBjbGFzcyBBcmNoaXZlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlCiAg
ICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRy
YSkKICAgICAgICAgZmlsZXMgPSBzZWxmLm1vZGVsLmFyY2hpdmVfY29udGV4dC5scygKICAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHls
ZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJl
cG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9z
aXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLAorICAgICAgICAgICAgYmVnaW49
MTYwMTY2MDAwMCwgZW5kPTE2MDE2NjAwMDAsCiAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRl
c3RzJywKICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuZXh0KGl0ZXIo
ZmlsZXMudmFsdWVzKCkpKSksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVy
KGZpbGVzLnZhbHVlcygpKSlbMF1bJ3V1aWQnXSwgMTUzODA0OTEwODAwKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWyd1dWlkJ10sIDE2MDE2
NjAwMDAwMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVz
KCkpKVswXVsnZmlsZXMnXSwgWydmaWxlLnR4dCcsICdpbmRleC5odG1sJ10pCiAKICAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKQEAgLTc0LDExICs3
NCwxMSBAQCBjbGFzcyBBcmNoaXZlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlCiAgICAgICAg
IGZpbGVzID0gc2VsZi5tb2RlbC5hcmNoaXZlX2NvbnRleHQuZmlsZSgKICAgICAgICAgICAgIHBh
dGg9J2ZpbGUudHh0JywKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9u
KHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAg
ICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1
NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIp
LAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwgZW5kPTE2MDE2NjAwMDAsCiAgICAgICAg
ICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKSksIDEpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1bJ3V1aWQnXSwgMTUzODA0
OTEwODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMo
KSkpWzBdWyd1dWlkJ10sIDE2MDE2NjAwMDAwMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChu
ZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsnZmlsZSddLCAnZGF0YScuZW5jb2RlKCdhc2Np
aScpKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2Nr
X3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRl
eHQpCkBAIC04NiwxMSArODYsMTEgQEAgY2xhc3MgQXJjaGl2ZUNvbnRleHRUZXN0KFdhaXRGb3JE
b2NrZXJUZQogICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRy
YT1jYXNzYW5kcmEpCiAgICAgICAgIGZpbGVzID0gc2VsZi5tb2RlbC5hcmNoaXZlX2NvbnRleHQu
ZmlsZSgKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3Jt
PSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAgYmVn
aW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLCBlbmQ9
TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLAorICAgICAg
ICAgICAgYmVnaW49MTYwMTY2MDAwMCwgZW5kPTE2MDE2NjAwMDAsCiAgICAgICAgICAgICBzdWl0
ZT0nbGF5b3V0LXRlc3RzJywKICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKSksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1bJ3V1aWQnXSwgMTUzODA0OTEwODAwKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWyd1
dWlkJ10sIDE2MDE2NjAwMDAwMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIo
ZmlsZXMudmFsdWVzKCkpKVswXVsnZmlsZSddLCBbJ2ZpbGUudHh0JywgJ2luZGV4Lmh0bWwnXSkK
IAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRp
cz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQpA
QCAtMTEzLDE2ICsxMTMsMTYgQEAgY2xhc3MgQXJjaGl2ZUNvbnRleHRUZXN0KFdhaXRGb3JEb2Nr
ZXJUZQogCiAgICAgICAgIGZpbGVzID0gc2VsZi5tb2RlbC5hcmNoaXZlX2NvbnRleHQuZmluZF9h
cmNoaXZlKAogICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZv
cm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCi0gICAgICAgICAgICBi
ZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksIGVu
ZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCisgICAg
ICAgICAgICBiZWdpbj0xNjAxNjYwMDAwLCBlbmQ9MTYwMTY2MDAwMCwKICAgICAgICAgICAgIHN1
aXRlPSdsYXlvdXQtdGVzdHMnLAogICAgICAgICApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsndXVpZCddLCAxNTM4MDQ5MTA4MDAp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1b
J3V1aWQnXSwgMTYwMTY2MDAwMDAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRl
cihmaWxlcy52YWx1ZXMoKSkpWzBdWydhcmNoaXZlJ10uZ2V0dmFsdWUoKSwgYnVmZi5nZXR2YWx1
ZSgpKQogCiAgICAgICAgIHdpdGggbW9jay5wYXRjaCgncmVzdWx0c2RicHkubW9kZWwuYXJjaGl2
ZV9jb250ZXh0LkFyY2hpdmVDb250ZXh0Lk1FTU9SWV9MSU1JVCcsIG5ldz1GSUxFX1NJWkUpLCBz
ZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5tb2RlbC5h
cmNoaXZlX2NvbnRleHQuZmluZF9hcmNoaXZlKAogICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRp
b25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZv
cj0nd2sxJyldLAotICAgICAgICAgICAgICAgIGJlZ2luPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtp
dCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwgZW5kPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgp
LmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwKKyAgICAgICAgICAgICAgICBiZWdpbj0xNjAxNjYwMDAw
LCBlbmQ9MTYwMTY2MDAwMCwKICAgICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywK
ICAgICAgICAgICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2NpX2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY2lf
Y29udGV4dF91bml0dGVzdC5weQkocmV2aXNpb24gMjczODM0KQorKysgVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY2lfY29udGV4dF91bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5
LTIwMjEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjEsMTkgKzIxLDE1IEBACiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGlt
cG9ydCBjb250ZXh0bGliCi1pbXBvcnQganNvbgotaW1wb3J0IG1vY2sKIGltcG9ydCB0aW1lCi1p
bXBvcnQgdW5pdHRlc3QKIAogZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwog
ZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKIGZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fz
c2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHku
bW9kZWwuY2lfY29udGV4dCBpbXBvcnQgQnVpbGRib3RVUkxGYWN0b3J5LCBDSUNvbnRleHQsIEJ1
aWxkYm90RWlnaHRVUkxGYWN0b3J5Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNpX2NvbnRleHQg
aW1wb3J0IEJ1aWxkYm90VVJMRmFjdG9yeSwgQnVpbGRib3RFaWdodFVSTEZhY3RvcnkKIGZyb20g
cmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uIGltcG9ydCBDb25maWd1cmF0aW9u
CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1v
Y2tDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFj
dG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2Nr
X3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTVk5SZXBvc2l0b3J5CiBmcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2Fz
ZQogCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgbW9ja3MKQEAgLTI2NCw3ICsyNjAsNyBAQCBj
bGFzcyBDSUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2FzCiAgICAgS0VZU1BBQ0UgPSAn
c3VpdGVfY29udGV4dF90ZXN0X2tleXNwYWNlJwogCiAgICAgZGVmIGluaXRfZGF0YWJhc2Uoc2Vs
ZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAg
ICAgd2l0aCBVUkxGYWN0b3J5VGVzdC5tb2NrKCk6CisgICAgICAgIHdpdGggTW9ja01vZGVsRmFj
dG9yeS53ZWJraXQoKSwgTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgVVJMRmFjdG9yeVRlc3Qu
bW9jaygpOgogICAgICAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2Vs
Zi5LRVlTUEFDRSkKICAgICAgICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNy
ZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZ
U1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKICAgICAgICAgICAgIHNlbGYubW9kZWwuY2lf
Y29udGV4dC5hZGRfdXJsX2ZhY3RvcnkoQnVpbGRib3RVUkxGYWN0b3J5KG1hc3Rlcj0nYnVpbGQu
d2Via2l0Lm9yZycsIHJlZGlzPXNlbGYubW9kZWwucmVkaXMpKQpAQCAtMzE0LDEyICszMTAsMTIg
QEAgY2xhc3MgQ0lDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzdENhcwogICAgICAgICB1cmxz
ID0gc2VsZi5tb2RlbC5jaV9jb250ZXh0LmZpbmRfdXJsc19ieV9jb21taXQoCiAgICAgICAgICAg
ICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbih2ZXJzaW9uX25hbWU9J01vamF2ZScsIGZs
YXZvcj0nd2syJyldLAogICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAg
ICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0
MiksCi0gICAgICAgICAgICBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zv
cl9pZCgyMzY1NDIpLAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwKKyAgICAgICAgICAg
IGVuZD0xNjAxNjYwMDAwLAogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChu
ZXh0KGl0ZXIodXJscy52YWx1ZXMoKSkpWzBdWydxdWV1ZSddLCAnaHR0cHM6Ly9idWlsZC53ZWJr
aXQub3JnLyMvYnVpbGRlcnMvMicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVy
KHVybHMudmFsdWVzKCkpKVswXVsnYnVpbGQnXSwgJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8j
L2J1aWxkZXJzLzIvYnVpbGRzLzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRl
cih1cmxzLnZhbHVlcygpKSlbMF1bJ2J1aWxkJ10sICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcv
Iy9idWlsZGVycy8yL2J1aWxkcy8xJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0
ZXIodXJscy52YWx1ZXMoKSkpWzBdWyd3b3JrZXInXSwgJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9y
Zy8jL3dvcmtlcnMvMycpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9j
b250ZXh0LnB5CShyZXZpc2lvbiAyNzM4MzQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21taXRfY29udGV4dC5weQkod29ya2luZyBj
b3B5KQpAQCAtMjgsNyArMjgsOSBAQCBmcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUgaW1wb3J0IGNv
bHVtbnMKIGZyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZS5tb2RlbHMgaW1wb3J0IE1vZGVsCiBmcm9t
IGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNv
bW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnJlcG9zaXRvcnkgaW1w
b3J0IFJlcG9zaXRvcnksIFNDTUV4Y2VwdGlvbgorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5yZXBv
c2l0b3J5IGltcG9ydCBSZXBvc2l0b3J5CisKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IFNjbUJh
c2UKIAogCiBjbGFzcyBDb21taXRDb250ZXh0KG9iamVjdCk6CkBAIC0xMTksNyArMTIxLDcgQEAg
Y2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogICAgICAgICAjIHRoaXMgY2FzZSwgdHJhY2sg
YnJhbmNoZXMgd2hpY2ggYXJlIG5vdCB0aGUgZGVmYXVsdCBicmFuY2ggaW5kZXBlbmRlbnRseS4K
ICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgogICAgICAgICAgICAgcmVwbyA9IHNlbGYu
cmVwb3NpdG9yaWVzLmdldChjb21taXQucmVwb3NpdG9yeV9pZCwgUmVwb3NpdG9yeShrZXk9Y29t
bWl0LnJlcG9zaXRvcnlfaWQpKQotICAgICAgICAgICAgaWYgY29tbWl0LmJyYW5jaCAhPSByZXBv
LkRFRkFVTFRfQlJBTkNIOgorICAgICAgICAgICAgaWYgY29tbWl0LmJyYW5jaCAhPSByZXBvLmRl
ZmF1bHRfYnJhbmNoOgogICAgICAgICAgICAgICAgIGJyYW5jaGVzLmFkZChjb21taXQuYnJhbmNo
KQogICAgICAgICBpZiBsZW4oYnJhbmNoZXMpID09IDA6CiAgICAgICAgICAgICBicmFuY2hlcy5h
ZGQoc2VsZi5ERUZBVUxUX0JSQU5DSF9LRVkpCkBAIC0xNDUsNyArMTQ3LDcgQEAgY2xhc3MgQ29t
bWl0Q29udGV4dChvYmplY3QpOgogCiAgICAgZGVmIGZpbmRfY29tbWl0c19ieV9pZChzZWxmLCBy
ZXBvc2l0b3J5X2lkLCBicmFuY2gsIGNvbW1pdF9pZCwgbGltaXQ9MTAwKToKICAgICAgICAgaWYg
YnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1ty
ZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5DSAorICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5y
ZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9icmFuY2gKIAogICAgICAgICBkZWYg
Y2FsbGJhY2soY29tbWl0X2lkPWNvbW1pdF9pZCk6CiAgICAgICAgICAgICB3aXRoIHNlbGY6CkBA
IC0xNjksNyArMTcxLDcgQEAgY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogCiAgICAgZGVm
IGZpbmRfY29tbWl0c19ieV91dWlkKHNlbGYsIHJlcG9zaXRvcnlfaWQsIGJyYW5jaCwgdXVpZCwg
bGltaXQ9MTAwKToKICAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmFu
Y2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5DSAorICAg
ICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVs
dF9icmFuY2gKIAogICAgICAgICBkZWYgY2FsbGJhY2soKToKICAgICAgICAgICAgIHdpdGggc2Vs
ZjoKQEAgLTE4NSw3ICsxODcsNyBAQCBjbGFzcyBDb21taXRDb250ZXh0KG9iamVjdCk6CiAKICAg
ICBkZWYgZmluZF9jb21taXRzX2J5X3RpbWVzdGFtcChzZWxmLCByZXBvc2l0b3J5X2lkLCBicmFu
Y2gsIHRpbWVzdGFtcCwgbGltaXQ9MTAwKToKICAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0g
ICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZB
VUxUX0JSQU5DSAorICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3Np
dG9yeV9pZF0uZGVmYXVsdF9icmFuY2gKIAogICAgICAgICBpZiBpc2luc3RhbmNlKHRpbWVzdGFt
cCwgZGF0ZXRpbWUpOgogICAgICAgICAgICAgdGltZXN0YW1wID0gY2FsZW5kYXIudGltZWdtKHRp
bWVzdGFtcC50aW1ldHVwbGUoKSkKQEAgLTIwOCw3ICsyMTAsNyBAQCBjbGFzcyBDb21taXRDb250
ZXh0KG9iamVjdCk6CiAKICAgICBkZWYgZmluZF9jb21taXRzX2luX3JhbmdlKHNlbGYsIHJlcG9z
aXRvcnlfaWQsIGJyYW5jaD1Ob25lLCBiZWdpbj1Ob25lLCBlbmQ9Tm9uZSwgbGltaXQ9MTAwKToK
ICAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJl
cG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5DSAorICAgICAgICAgICAgYnJh
bmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9icmFuY2gKIAog
ICAgICAgICBiZWdpbiA9IHNlbGYuY29udmVydF90b191dWlkKGJlZ2luKQogICAgICAgICBlbmQg
PSBzZWxmLmNvbnZlcnRfdG9fdXVpZChlbmQsIHNlbGYudGltZXN0YW1wX3RvX3V1aWQoKSkKQEAg
LTI2Miw4ICsyNjQsOCBAQCBjbGFzcyBDb21taXRDb250ZXh0KG9iamVjdCk6CiAgICAgICAgICAg
ICAgICAgaWYgaWQgbm90IGluIHNlbGYucmVwb3NpdG9yaWVzOgogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZQogCi0gICAgICAgICAgICAgICAgaWYgY29tbWl0LmJyYW5jaCA9PSBzZWxmLnJl
cG9zaXRvcmllc1tjb21taXQucmVwb3NpdG9yeV9pZF0uREVGQVVMVF9CUkFOQ0ggb3Igbm90IHNl
bGYuYnJhbmNoZXMoaWQsIGNvbW1pdC5icmFuY2gpOgotICAgICAgICAgICAgICAgICAgICBicmFu
Y2ggPSBzZWxmLnJlcG9zaXRvcmllc1tpZF0uREVGQVVMVF9CUkFOQ0gKKyAgICAgICAgICAgICAg
ICBpZiBjb21taXQuYnJhbmNoID09IHNlbGYucmVwb3NpdG9yaWVzW2NvbW1pdC5yZXBvc2l0b3J5
X2lkXS5kZWZhdWx0X2JyYW5jaCBvciBub3Qgc2VsZi5icmFuY2hlcyhpZCwgY29tbWl0LmJyYW5j
aCk6CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaCA9IHNlbGYucmVwb3NpdG9yaWVzW2lkXS5k
ZWZhdWx0X2JyYW5jaAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAg
IGJyYW5jaCA9IGNvbW1pdC5icmFuY2gKIApAQCAtMzE5LDE3ICszMjEsMTcgQEAgY2xhc3MgQ29t
bWl0Q29udGV4dChvYmplY3QpOgogCiAgICAgZGVmIHJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9f
YW5kX2lkKHNlbGYsIHJlcG9zaXRvcnlfaWQsIGJyYW5jaCwgY29tbWl0X2lkKToKICAgICAgICAg
aWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmll
c1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5DSAorICAgICAgICAgICAgYnJhbmNoID0gc2Vs
Zi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9icmFuY2gKICAgICAgICAgaWYg
cmVwb3NpdG9yeV9pZCBub3QgaW4gc2VsZi5yZXBvc2l0b3JpZXM6CiAgICAgICAgICAgICByYWlz
ZSBSdW50aW1lRXJyb3IoJ3t9IGlzIG5vdCBhIHJlY29nbml6ZWQgcmVwb3NpdG9yeScpCiAKICAg
ICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgY29tbWl0cyA9IHNlbGYuZmluZF9jb21taXRz
X2J5X2lkKHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwgYnJhbmNoPWJyYW5jaCwgY29tbWl0
X2lkPWNvbW1pdF9pZCkKICAgICAgICAgICAgIGlmIGxlbihjb21taXRzKSA+IDE6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgU0NNRXhjZXB0aW9uKGYnTXVsdGlwbGUgY29tbWl0cyB3aXRoIHRoZSBp
ZCB7Y29tbWl0X2lkfSBleGlzdCBpbiB7cmVwb3NpdG9yeV9pZH0gb24ge2JyYW5jaH0nKQorICAg
ICAgICAgICAgICAgIHJhaXNlIFNjbUJhc2UuRXhjZXB0aW9uKGYnTXVsdGlwbGUgY29tbWl0cyB3
aXRoIHRoZSBpZCB7Y29tbWl0X2lkfSBleGlzdCBpbiB7cmVwb3NpdG9yeV9pZH0gb24ge2JyYW5j
aH0nKQogICAgICAgICAgICAgaWYgY29tbWl0czoKICAgICAgICAgICAgICAgICByZXR1cm4gY29t
bWl0c1swXQotICAgICAgICAgICAgY29tbWl0ID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9y
eV9pZF0uY29tbWl0X2Zvcl9pZChjb21taXRfaWQsIGJyYW5jaCkKKyAgICAgICAgICAgIGNvbW1p
dCA9IHNlbGYucmVwb3NpdG9yaWVzW3JlcG9zaXRvcnlfaWRdLmNvbW1pdF9mb3JfaWQoY29tbWl0
X2lkKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVnaXN0ZXJfY29tbWl0KGNvbW1pdCkKIAog
ICAgIGRlZiB1cmwoc2VsZiwgY29tbWl0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzM4MzQp
CisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9jb21taXRfY29udGV4dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsyNSw5IEBAIGZyb20gZmFr
ZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKIGZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fz
c2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKIGZyb20gcmVzdWx0c2RicHku
bW9kZWwuY29tbWl0X2NvbnRleHQgaW1wb3J0IENvbW1pdENvbnRleHQKIGZyb20gcmVzdWx0c2Ri
cHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRl
eHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rh
c2hSZXBvc2l0b3J5LCBNb2NrU1ZOUmVwb3NpdG9yeQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5t
b2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkKIGZyb20gcmVzdWx0c2Ri
cHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRl
c3RDYXNlCitmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnJlcG9zaXRvcnkgaW1wb3J0IFN0YXNoUmVw
b3NpdG9yeSwgV2ViS2l0UmVwb3NpdG9yeQogCiAKIGNsYXNzIENvbW1pdENvbnRleHRUZXN0KFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZSk6CkBAIC0zNSw4ICszNiw4IEBAIGNsYXNzIENvbW1pdENvbnRl
eHRUZXN0KFdhaXRGb3JEb2NrZXJUZXMKICAgICBkZWYgaW5pdF9kYXRhYmFzZShzZWxmLCByZWRp
cz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgogICAgICAgICByZWRp
c19pbnN0YW5jZSA9IHJlZGlzKCkKIAotICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkgPSBN
b2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpc19pbnN0YW5jZSkKLSAgICAgICAgc2VsZi5z
dm5fcmVwb3NpdG9yeSA9IE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdChyZWRpc19pbnN0YW5jZSkK
KyAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5ID0gU3Rhc2hSZXBvc2l0b3J5KCdodHRwczov
L2JpdGJ1Y2tldC5leGFtcGxlLmNvbS9wcm9qZWN0cy9TQUZBUkkvcmVwb3Mvc2FmYXJpJykKKyAg
ICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeSA9IFdlYktpdFJlcG9zaXRvcnkoKQogCiAgICAgICAg
IGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpCiAgICAgICAg
IHNlbGYuZGF0YWJhc2UgPSBDb21taXRDb250ZXh0KApAQCAtNDcsMjM2ICs0OCwyNjggQEAgY2xh
c3MgQ29tbWl0Q29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlcwogICAgICAgICBzZWxmLmRhdGFi
YXNlLnJlZ2lzdGVyX3JlcG9zaXRvcnkoc2VsZi5zdm5fcmVwb3NpdG9yeSkKIAogICAgIGRlZiBh
ZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2Uoc2VsZik6Ci0gICAgICAgIGZvciBtb2NrX3JlcG9z
aXRvcnkgaW4gW3NlbGYuc3Rhc2hfcmVwb3NpdG9yeSwgc2VsZi5zdm5fcmVwb3NpdG9yeV06Ci0g
ICAgICAgICAgICBmb3IgY29tbWl0X2xpc3QgaW4gbW9ja19yZXBvc2l0b3J5LmNvbW1pdHMudmFs
dWVzKCk6Ci0gICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRfbGlzdDoKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb21taXQoY29tbWl0KQorICAg
ICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCkgYXMgc2FmYXJpLCBNb2NrTW9kZWxG
YWN0b3J5LndlYmtpdCgpIGFzIHdlYmtpdDoKKyAgICAgICAgICAgIHdpdGggc2VsZi5kYXRhYmFz
ZSwgc2VsZi5kYXRhYmFzZS5jYXNzYW5kcmEuYmF0Y2hfcXVlcnlfY29udGV4dCgpOgorICAgICAg
ICAgICAgICAgIGZvciBrZXksIHJlcG9zaXRvcnkgaW4gZGljdChzYWZhcmk9c2FmYXJpLCB3ZWJr
aXQ9d2Via2l0KS5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBmb3IgYnJhbmNoLCBjb21t
aXRzIGluIHJlcG9zaXRvcnkuY29tbWl0cy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuZGF0YWJhc2UucmVnaXN0ZXJfY29tbWl0X3dpdGhfcmVwb19hbmRfaWQoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtleSwgYnJhbmNoLCBjb21taXQuaGFzaCBvciBjb21taXQu
cmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogCiAgICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfdmVy
aWZ5X3RhYmxlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29u
dGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJh
PWNhc3NhbmRyYSkKLSAgICAgICAgQ29tbWl0Q29udGV4dChyZWRpcz1yZWRpcygpLCBjYXNzYW5k
cmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpKQorICAgICAgICB3aXRoIE1vY2tN
b2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAg
ICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEp
CisgICAgICAgICAgICBDb21taXRDb250ZXh0KHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNz
YW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RD
YXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nh
c3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9jb21taXRfYnlfaWQo
c2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAg
ICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJh
KQotICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29t
bWl0X2Zvcl9pZChpZD0nYmI2YmRhNWY0NCcsIGJyYW5jaD0nbWFzdGVyJyldLAotICAgICAgICAg
ICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD0nc2FmYXJp
JywgYnJhbmNoPSdtYXN0ZXInLCBjb21taXRfaWQ9J2JiNmJkYTVmNDQnKSwKLSAgICAgICAgKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0
c19ieV9pZChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsIGNvbW1pdF9p
ZD0nMzM2NjEwYScpKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
W3NlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDQsIGJyYW5jaD0ndHJ1
bmsnKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBv
c2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgY29tbWl0X2lkPTIzNjU0NCksCi0g
ICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oc2VsZi5kYXRhYmFzZS5m
aW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSd0cnVuaycs
IGNvbW1pdF9pZD0nMjM2NTQnKSkpCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZh
cmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHNlbGYuaW5pdF9k
YXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKKyAgICAgICAgICAgIHNl
bGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKKworICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9m
b3JfaWQoaWQ9J2Q4YmNlMjZmYTY1YycpXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNl
LmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21haW4n
LCBjb21taXRfaWQ9J2Q4YmNlMjZmYTY1YycpLAorICAgICAgICAgICAgKQorCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFtzZWxmLnN2bl9yZXBvc2l0b3J5
LmNvbW1pdF9mb3JfaWQoaWQ9NildLAorICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmlu
ZF9jb21taXRzX2J5X2lkKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCBj
b21taXRfaWQ9NiksCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDAsIGxlbihzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lkPSd3
ZWJraXQnLCBicmFuY2g9J3RydW5rJywgY29tbWl0X2lkPScxMjM0JykpKQogCiAgICAgQFdhaXRG
b3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RS
ZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3Rf
Y29tbWl0X2J5X3V1aWQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5k
cmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNz
YW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFz
ZSgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN0YXNo
X3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nN2JlNDA4NDI1OCcsIGJyYW5jaD0nbWFzdGVy
JyldLAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfdXVpZChyZXBv
c2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsIHV1aWQ9MTUzNzU1MDY4NTAxKSwK
LSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW3NlbGYu
c3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDAsIGJyYW5jaD0ndHJ1bmsnKV0s
Ci0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV91dWlkKHJlcG9zaXRv
cnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCB1dWlkPTE1MzgwMjk0NzkwMCksCi0gICAg
ICAgICkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxG
YWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJl
ZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1p
dHNfdG9fZGF0YWJhc2UoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nMWFiZTI1
YjQ0M2U5JyldLAorICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2J5
X3V1aWQocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYWluJywgdXVpZD0xNjAxNjYz
MDAwMDApLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgICAgICBbc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTYpXSwK
KyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV91dWlkKHJlcG9z
aXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCB1dWlkPTE2MDE2Mzk5MDAwMCksCisg
ICAgICAgICAgICApCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9j
a2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2Fu
ZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9jb21taXRfYnlfdGltZXN0YW1wKHNlbGYsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYu
aW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAg
c2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCi0gICAgICAgICAgICBbc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQo
aWQ9JzMzNjYxMGE4NGYnLCBicmFuY2g9J21hc3RlcicpXSwKLSAgICAgICAgICAgIHNlbGYuZGF0
YWJhc2UuZmluZF9jb21taXRzX2J5X3RpbWVzdGFtcChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBi
cmFuY2g9J21hc3RlcicsIHRpbWVzdGFtcD0xNTM3ODA5ODE4KSwKLSAgICAgICAgKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW3NlbGYuc3ZuX3JlcG9zaXRvcnkuY29t
bWl0X2Zvcl9pZChpZD0yMzY1NDAsIGJyYW5jaD0ndHJ1bmsnKV0sCi0gICAgICAgICAgICBzZWxm
LmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV90aW1lc3RhbXAocmVwb3NpdG9yeV9pZD0nd2Via2l0
JywgYnJhbmNoPSd0cnVuaycsIHRpbWVzdGFtcD0xNTM4MDI5NDc5KSwKLSAgICAgICAgKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19i
eV90aW1lc3RhbXAocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYXN0ZXInLCB0aW1l
c3RhbXA9MTUzNzU1MDY4NSkpKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJp
KCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0
YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxm
LmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICAgICAgW3NlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9y
X2lkKGlkPScxYWJlMjViNDQzZTknKV0sCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5m
aW5kX2NvbW1pdHNfYnlfdGltZXN0YW1wKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0n
bWFpbicsIHRpbWVzdGFtcD0xNjAxNjYzMDAwKSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW3NlbGYuc3ZuX3JlcG9zaXRvcnku
Y29tbWl0X2Zvcl9pZChpZD02KV0sCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5maW5k
X2NvbW1pdHNfYnlfdGltZXN0YW1wKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1
bmsnLCB0aW1lc3RhbXA9MTYwMTYzOTkwMCksCisgICAgICAgICAgICApCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDIsIGxlbihzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV90aW1l
c3RhbXAocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYWluJywgdGltZXN0YW1wPTE2
MDE2NjgwMDApKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2Nr
ZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5k
cmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2FsbF9jb21taXRzX3N0YXNoKHNlbGYsIHJlZGlzPVN0
cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5p
dF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2Vs
Zi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDUsIGxlbihzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lk
PSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
LSAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2
YmRhNWY0NCcsIGJyYW5jaD0nbWFzdGVyJyksIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRf
Zm9yX2lkKGlkPSczMzY2MTBhODRmJywgYnJhbmNoPSdtYXN0ZXInKV0sCi0gICAgICAgICAgICBz
ZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSdzYWZhcmkn
LCBicmFuY2g9J21hc3RlcicsIGxpbWl0PTIpLAotICAgICAgICApCisgICAgICAgIHdpdGggTW9j
a01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAg
ICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRy
YSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRz
X2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFpbicpKSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW3NlbGYuc3Rhc2hfcmVw
b3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdkOGJjZTI2ZmE2NWMnKSwgc2VsZi5zdGFzaF9yZXBv
c2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2JhZTVkMWU5MDk5OScpXSwKKyAgICAgICAgICAgICAg
ICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSdzYWZh
cmknLCBicmFuY2g9J21haW4nLCBsaW1pdD0yKSwKKyAgICAgICAgICAgICkKIAogICAgIEBXYWl0
Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0
UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0
X2FsbF9jb21taXRzX3N2bihzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3Nh
bmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNh
c3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFi
YXNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4oc2VsZi5kYXRhYmFzZS5maW5k
X2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSd0cnVuaycp
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN2bl9yZXBv
c2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0LCBicmFuY2g9J3RydW5rJyksIHNlbGYuc3Zu
X3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDMsIGJyYW5jaD0ndHJ1bmsnKV0sCi0g
ICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5
X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgbGltaXQ9MiksCi0gICAgICAgICkKKyAgICAg
ICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtp
dCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5k
cmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJh
c2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsZW4oc2VsZi5kYXRhYmFzZS5m
aW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSd0cnVu
aycpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW3Nl
bGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD02KSwgc2VsZi5zdm5fcmVwb3NpdG9y
eS5jb21taXRfZm9yX2lkKGlkPTQpXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZp
bmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5r
JywgbGltaXQ9MiksCisgICAgICAgICAgICApCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9zdGFzaF9jb21taXRzX2lu
X3JhbmdlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4
dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNh
c3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW3NlbGYuc3Rhc2hfcmVwb3NpdG9y
eS5jb21taXRfZm9yX2lkKGlkPSdiYjZiZGE1ZjQ0JywgYnJhbmNoPSdtYXN0ZXInKSwgc2VsZi5z
dGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE4NGYnLCBicmFuY2g9J21h
c3RlcicpXSwKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3Jhbmdl
KHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFzdGVyJywgYmVnaW49MTUzNzgwOTgx
OCwgZW5kPTE1Mzc4MTAyODEpLAotICAgICAgICApCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFj
dG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHNl
bGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKKyAgICAg
ICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW3NlbGYuc3Rhc2hfcmVwb3NpdG9yeS5j
b21taXRfZm9yX2lkKGlkPSdiYWU1ZDFlOTA5OTknKSwgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNv
bW1pdF9mb3JfaWQoaWQ9JzFhYmUyNWI0NDNlOScpXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRh
dGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFu
Y2g9J21haW4nLCBiZWdpbj0xNjAxNjYzMDAwLCBlbmQ9MTYwMTY2ODAwMCksCisgICAgICAgICAg
ICApCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4
dCkKICAgICBkZWYgdGVzdF9zdm5fY29tbWl0c19pbl9yYW5nZShzZWxmLCByZWRpcz1TdHJpY3RS
ZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0
YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYuYWRk
X2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAg
ICAgICAgICAgIFtzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0LCBi
cmFuY2g9J3RydW5rJyksIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1
NDMsIGJyYW5jaD0ndHJ1bmsnKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29t
bWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgYmVn
aW49MTUzODA1MDQ1OCwgZW5kPTE1MzgwNTI0MDgpLAotICAgICAgICApCisgICAgICAgIHdpdGgg
TW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAg
ICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3Nh
bmRyYSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW3NlbGYuc3ZuX3Jl
cG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD02KSwgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRf
Zm9yX2lkKGlkPTQpXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0
c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgYmVnaW49
MTYwMTYzNzkwMCwgZW5kPTE2MDE2Mzk5MDApLAorICAgICAgICAgICAgKQogCiAgICAgQFdhaXRG
b3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RS
ZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3Rf
c3Rhc2hfY29tbWl0c19iZXR3ZWVuKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9
Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRp
cywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9f
ZGF0YWJhc2UoKQotCi0gICAgICAgIGNvbW1pdHMgPSBbCi0gICAgICAgICAgICBzZWxmLnN0YXNo
X3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWYnLCBicmFuY2g9J21hc3Rlcicp
LAotICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzMz
NjYxMGE4JywgYnJhbmNoPSdtYXN0ZXInKSwKLSAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3Np
dG9yeS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhNCcsIGJyYW5jaD0nbWFzdGVyJyksCi0gICAg
ICAgIF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRzLCBzZWxmLmRhdGFiYXNlLmZp
bmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3Rl
cicsICBiZWdpbj1jb21taXRzWy0xXSwgZW5kPWNvbW1pdHNbMF0pKQorICAgICAgICB3aXRoIE1v
Y2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAg
ICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5k
cmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAg
ICAgICAgICAgIGNvbW1pdHMgPSBbCisgICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0
b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzFhYmUyNWI0NDNlOScpLAorICAgICAgICAgICAgICAgIHNl
bGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdmZmY4M2JiMmQ5MTcnKSwKKyAg
ICAgICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nOWI4
MzExZjI1YTc3JyksCisgICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlf
aWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFpbicsICBiZWdpbj1jb21taXRzWy0xXSwgZW5kPWNvbW1p
dHNbMF0pKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNv
bnRleHQpCiAgICAgZGVmIHRlc3Rfc3ZuX2NvbW1pdHNfYmV0d2VlbihzZWxmLCByZWRpcz1TdHJp
Y3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRf
ZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYu
YWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLQotICAgICAgICBjb21taXRzID0gWwotICAg
ICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0NCwgYnJh
bmNoPSd0cnVuaycpLAotICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9y
X2lkKGlkPTIzNjU0MywgYnJhbmNoPSd0cnVuaycpLAotICAgICAgICAgICAgc2VsZi5zdm5fcmVw
b3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MiwgYnJhbmNoPSd0cnVuaycpLAotICAgICAg
ICBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0cywgc2VsZi5kYXRhYmFzZS5maW5k
X2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSd0cnVuaycs
IGJlZ2luPWNvbW1pdHNbLTFdLCBlbmQ9Y29tbWl0c1swXSkpCisgICAgICAgIHdpdGggTW9ja01v
ZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAg
ICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkK
KyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKKworICAgICAg
ICAgICAgY29tbWl0cyA9IFsKKyAgICAgICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNv
bW1pdF9mb3JfaWQoaWQ9NiksCisgICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5j
b21taXRfZm9yX2lkKGlkPTQpLAorICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnku
Y29tbWl0X2Zvcl9pZChpZD0yKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29tbWl0cywgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVw
b3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSd0cnVuaycsIGJlZ2luPWNvbW1pdHNbLTFdLCBl
bmQ9Y29tbWl0c1swXSkpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9jb21taXRfZnJvbV9zdGFzaF9yZXBvKHNlbGYs
IHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAg
IHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAg
ICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBvX2FuZF9pZCgnc2Fm
YXJpJywgJ21hc3RlcicsICdiYjZiZGE1ZjQ0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
LSAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2
YmRhNWY0NCcsIGJyYW5jaD0nbWFzdGVyJyldLAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5m
aW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYXN0ZXIn
LCBjb21taXRfaWQ9J2JiNmJkYTVmNDQnKSwKLSAgICAgICAgKQorICAgICAgICB3aXRoIE1vY2tN
b2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAg
ICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEp
CisgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5k
X2lkKCdzYWZhcmknLCAnbWFpbicsICdkOGJjZTI2ZmE2NWMnKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1p
dF9mb3JfaWQoaWQ9J2Q4YmNlMjZmYTY1YycpXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFi
YXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21h
aW4nLCBjb21taXRfaWQ9J2Q4YmNlMjZmYTY1YycpLAorICAgICAgICAgICAgKQogCiAgICAgQFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJp
Y3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRl
c3RfY29tbWl0X2Zyb21fc3ZuX3JlcG8oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRy
YT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJl
ZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVy
X2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKCd3ZWJraXQnLCAndHJ1bmsnLCAyMzY1NDQpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBbc2VsZi5zdm5fcmVwb3NpdG9yeS5j
b21taXRfZm9yX2lkKGlkPTIzNjU0NCwgYnJhbmNoPSd0cnVuaycpXSwKLSAgICAgICAgICAgIHNl
bGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2J5X2lkKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJy
YW5jaD0ndHJ1bmsnLCBjb21taXRfaWQ9MjM2NTQ0KSwKLSAgICAgICAgKQorICAgICAgICB3aXRo
IE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6Cisg
ICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNz
YW5kcmEpCisgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbW1pdF93aXRoX3Jl
cG9fYW5kX2lkKCd3ZWJraXQnLCAndHJ1bmsnLCA2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgICAgICBbc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lk
KGlkPTYpXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9p
ZChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgY29tbWl0X2lkPTYpLAor
ICAgICAgICAgICAgKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2Rv
Y2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3Nh
bmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfYnJhbmNoZXMoc2VsZiwgcmVkaXM9U3RyaWN0UmVk
aXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFi
YXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmFkZF9h
bGxfY29tbWl0c190b19kYXRhYmFzZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydtYXN0
ZXInLCAnc2FmYXJpLTYwNi1icmFuY2gnXSwgc2VsZi5kYXRhYmFzZS5icmFuY2hlcyhyZXBvc2l0
b3J5X2lkPSdzYWZhcmknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ3NhZmFyaS02MDYt
YnJhbmNoJywgJ3RydW5rJ10sIHNlbGYuZGF0YWJhc2UuYnJhbmNoZXMocmVwb3NpdG9yeV9pZD0n
d2Via2l0JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydzYWZhcmktNjA2LWJyYW5jaCdd
LCBzZWxmLmRhdGFiYXNlLmJyYW5jaGVzKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0n
c2FmYXJpJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydzYWZhcmktNjA2LWJyYW5jaCdd
LCBzZWxmLmRhdGFiYXNlLmJyYW5jaGVzKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0n
c2FmYXJpLTYwNi1icmFuY2gnKSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFy
aSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2Rh
dGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgc2Vs
Zi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChbJ2JyYW5jaC1hJywgJ2JyYW5jaC1iJywgJ21haW4nXSwgc2VsZi5kYXRhYmFzZS5icmFu
Y2hlcyhyZXBvc2l0b3J5X2lkPSdzYWZhcmknKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICAgICAgWydicmFuY2gtYScsICdicmFuY2gtYicsICd0YWdzL3RhZy0x
JywgJ3RhZ3MvdGFnLTInLCAndHJ1bmsnXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNl
LmJyYW5jaGVzKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcpLAorICAgICAgICAgICAgKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ2JyYW5jaC1hJywgJ2JyYW5jaC1iJ10sIHNlbGYuZGF0
YWJhc2UuYnJhbmNoZXMocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdicmFuY2gnKSkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydicmFuY2gtYSddLCBzZWxmLmRhdGFiYXNl
LmJyYW5jaGVzKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0nYnJhbmNoLWEnKSkKIAog
ICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1G
YWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAg
IGRlZiB0ZXN0X25leHRfY29tbWl0KHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9
Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRp
cywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9f
ZGF0YWJhc2UoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzZWxm
LmRhdGFiYXNlLm5leHRfY29tbWl0KHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChp
ZD0yMzY1NDIpKSwKLSAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9p
ZChpZD0yMzY1NDMpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAg
ICAgICAgICBzZWxmLmRhdGFiYXNlLm5leHRfY29tbWl0KHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5j
b21taXRfZm9yX2lkKGlkPSczMzY2MTBhNDBjM2ZlY2I3Mjg4NzFlMTJjYTMxNDgyY2E3MTViMzgz
JykpLAotICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9
JzMzNjYxMGE4NGZkY2YxNGRkY2YxZGI2NTA3NWFmOTU0ODA1MTZmZGEnKSwKLSAgICAgICAgKQor
ICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnku
d2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNh
c3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19k
YXRhYmFzZSgpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAg
ICAgc2VsZi5kYXRhYmFzZS5uZXh0X2NvbW1pdChzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9m
b3JfaWQoaWQ9NCkpLAorICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0
X2Zvcl9pZChpZD02KSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5uZXh0X2NvbW1pdChzZWxmLnN0YXNo
X3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmFlNWQxZTkwOTk5JykpLAorICAgICAgICAg
ICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdkOGJjZTI2ZmE2
NWMnKSwKKyAgICAgICAgICAgICkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1v
Y2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X3ByZXZpb3VzX2NvbW1pdChzZWxmLCBy
ZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBz
ZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAg
ICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAotICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lk
KGlkPTIzNjU0MiksCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnByZXZpb3VzX2NvbW1pdChz
ZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQzKSksCi0gICAgICAgICkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3Np
dG9yeS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhNDBjM2ZlY2I3Mjg4NzFlMTJjYTMxNDgyY2E3
MTViMzgzJyksCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnByZXZpb3VzX2NvbW1pdChzZWxm
LnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nMzM2NjEwYTg0ZmRjZjE0ZGRjZjFk
YjY1MDc1YWY5NTQ4MDUxNmZkYScpKSwKLSAgICAgICAgKQorICAgICAgICB3aXRoIE1vY2tNb2Rl
bEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAg
ICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisg
ICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9y
eS5jb21taXRfZm9yX2lkKGlkPTQpLAorICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UucHJl
dmlvdXNfY29tbWl0KHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD02KSksCisg
ICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
ICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdiYWU1ZDFlOTA5OTkn
KSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnByZXZpb3VzX2NvbW1pdChzZWxmLnN0
YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nZDhiY2UyNmZhNjVjJykpLAorICAgICAg
ICAgICAgKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNv
bnRleHQpCiAgICAgZGVmIHRlc3Rfc2libGluZ19jb21taXRzKHNlbGYsIHJlZGlzPVN0cmljdFJl
ZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRh
YmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRf
YWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0g
ICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnNpYmxpbmdfY29tbWl0cyhzZWxmLnN2bl9yZXBvc2l0
b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQyKSwgWydzYWZhcmknXSksCi0gICAgICAgICAgICB7
J3NhZmFyaSc6IFtzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRh
NWY0NGRkMjRkMGI1NDUzOWI4ZmY2ZThjMTdmNTE5MjQ5YScpXX0sCi0gICAgICAgICkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2Uuc2libGluZ19j
b21taXRzKHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdiYjZiZGE1ZjQ0
ZGQyNGQwYjU0NTM5YjhmZjZlOGMxN2Y1MTkyNDlhJyksIFsnd2Via2l0J10pLAotICAgICAgICAg
ICAgeyd3ZWJraXQnOiBbCi0gICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21t
aXRfZm9yX2lkKGlkPTIzNjU0NCksCi0gICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9y
eS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MyksCi0gICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVw
b3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MiksCi0gICAgICAgICAgICAgICAgc2VsZi5z
dm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MSksCi0gICAgICAgICAgICAgICAg
c2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MCksCi0gICAgICAgICAg
ICBdfSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
c2VsZi5kYXRhYmFzZS5zaWJsaW5nX2NvbW1pdHMoc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1p
dF9mb3JfaWQoaWQ9JzMzNjYxMGE4NGZkY2YxNGRkY2YxZGI2NTA3NWFmOTU0ODA1MTZmZGEnKSwg
Wyd3ZWJraXQnXSksCi0gICAgICAgICAgICB7J3dlYmtpdCc6IFtdfSwKLSAgICAgICAgKQotCi0g
ICAgZGVmIHRlc3RfdXVpZF9mb3JfY29tbWl0cyhzZWxmKToKLSAgICAgICAgdXVpZCA9IENvbW1p
dENvbnRleHQudXVpZF9mb3JfY29tbWl0cyhbTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5j
b21taXRfZm9yX2lkKGlkPSdiYjZiZGE1ZicpLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5j
b21taXRfZm9yX2lkKGlkPTIzNjU0NCldKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV1aWQs
IDE1MzgwNTI0MDgwMCkKKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAgICAgICB3aXRo
IE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6Cisg
ICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNz
YW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VsZi5kYXRh
YmFzZS5zaWJsaW5nX2NvbW1pdHMoc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlk
PTYpLCBbJ3NhZmFyaSddKSwKKyAgICAgICAgICAgICAgICB7J3NhZmFyaSc6IFsKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2Q4YmNl
MjZmYTY1YycpLAorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29t
bWl0X2Zvcl9pZChpZD0nYmFlNWQxZTkwOTk5JyksCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
c3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPScxYWJlMjViNDQzZTknKSwKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2Zm
ZjgzYmIyZDkxNycpLAorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnku
Y29tbWl0X2Zvcl9pZChpZD0nOWI4MzExZjI1YTc3JyksCisKKyAgICAgICAgICAgICAgICBdfSwK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICAgICAgc2VsZi5kYXRhYmFzZS5zaWJsaW5nX2NvbW1pdHMoc2VsZi5zdGFzaF9yZXBvc2l0b3J5
LmNvbW1pdF9mb3JfaWQoaWQ9J2Q4YmNlMjZmYTY1YycpLCBbJ3dlYmtpdCddKSwKKyAgICAgICAg
ICAgICAgICB7J3dlYmtpdCc6IFtzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9
NildfSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5zaWJsaW5nX2NvbW1pdHMoc2VsZi5zdm5fcmVwb3Np
dG9yeS5jb21taXRfZm9yX2lkKGlkPTEpLCBbJ3NhZmFyaSddKSwKKyAgICAgICAgICAgICAgICB7
J3NhZmFyaSc6IFtdfSwKKyAgICAgICAgICAgICkKKworICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X3V1aWRfZm9yX2NvbW1p
dHMoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToK
KyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5
LndlYmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBj
YXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgdXVpZCA9IENvbW1pdENvbnRleHQudXVp
ZF9mb3JfY29tbWl0cyhbCisgICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNv
bW1pdF9mb3JfaWQoaWQ9J2JhZTVkMWU5MDk5OScpLAorICAgICAgICAgICAgICAgIHNlbGYuc3Zu
X3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD02KSwKKyAgICAgICAgICAgIF0pCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHV1aWQsIDE2MDE2NjgwMDAwMCkKIAogICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2Jy
YW5jaF9rZXlzX2Zvcl9jb21taXRzKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9
Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRp
cywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgYnJhbmNoZXMgPSBzZWxmLmRhdGFiYXNl
LmJyYW5jaF9rZXlzX2Zvcl9jb21taXRzKFsKLSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRv
cnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWYnKSwKLSAgICAgICAgICAgIE1v
Y2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0KSwKLSAgICAg
ICAgXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChicmFuY2hlcywgWydkZWZhdWx0J10pCi0K
LSAgICAgICAgYnJhbmNoZXMgPSBzZWxmLmRhdGFiYXNlLmJyYW5jaF9rZXlzX2Zvcl9jb21taXRz
KFsKLSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9p
ZChpZD0nNzkyNTZjMzInLCBicmFuY2g9J3NhZmFyaS02MDYtYnJhbmNoJyksCi0gICAgICAgICAg
ICBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0NCksCi0g
ICAgICAgIF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnJhbmNoZXMsIFsnc2FmYXJpLTYw
Ni1icmFuY2gnXSkKLQotICAgICAgICBicmFuY2hlcyA9IHNlbGYuZGF0YWJhc2UuYnJhbmNoX2tl
eXNfZm9yX2NvbW1pdHMoWwotICAgICAgICAgICAgTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmko
KS5jb21taXRfZm9yX2lkKGlkPSc3OTI1NmMzMicsIGJyYW5jaD0nc2FmYXJpLTYwNi1icmFuY2gn
KSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQo
aWQ9MjM2MzM1LCBicmFuY2g9J3NhZmFyaS02MDYtYnJhbmNoJyksCi0gICAgICAgIF0pCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnJhbmNoZXMsIFsnc2FmYXJpLTYwNi1icmFuY2gnXSkKKyAg
ICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5Lndl
YmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNz
YW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgYnJhbmNoZXMgPSBzZWxmLmRhdGFiYXNlLmJy
YW5jaF9rZXlzX2Zvcl9jb21taXRzKFsKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9z
aXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nZDhiY2UyNmZhNjVjJyksCisgICAgICAgICAgICAgICAg
c2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTYpLAorICAgICAgICAgICAgXSkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnJhbmNoZXMsIFsnZGVmYXVsdCddKQorCisg
ICAgICAgICAgICBicmFuY2hlcyA9IHNlbGYuZGF0YWJhc2UuYnJhbmNoX2tleXNfZm9yX2NvbW1p
dHMoWworICAgICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lk
KGlkPSc2MjE2NTJhZGQ3ZmMnKSwKKyAgICAgICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5
LmNvbW1pdF9mb3JfaWQoaWQ9NyksCisgICAgICAgICAgICBdKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChicmFuY2hlcywgWydicmFuY2gtYSddKQorCisgICAgICAgICAgICBicmFuY2hl
cyA9IHNlbGYuZGF0YWJhc2UuYnJhbmNoX2tleXNfZm9yX2NvbW1pdHMoWworICAgICAgICAgICAg
ICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSc3OTA3MjVhNmQ3OWUn
KSwKKyAgICAgICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9
OCksCisgICAgICAgICAgICBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChicmFuY2hl
cywgWydicmFuY2gtYiddKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25v
X2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nh
c3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfY29tbWl0X3VybChzZWxmLCByZWRpcz1TdHJp
Y3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRf
ZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAnaHR0cHM6Ly9mYWtlLXN0YXNoLWluc3RhbmNlLmFw
cGxlLmNvbS9wcm9qZWN0cy9CUk9XU0VSL3JlcG9zL3NhZmFyaS9jb21taXRzL2JiNmJkYTVmNDRk
ZDI0ZDBiNTQ1MzliOGZmNmU4YzE3ZjUxOTI0OWEnLAotICAgICAgICAgICAgc2VsZi5kYXRhYmFz
ZS51cmwoTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSdiYjZi
ZGE1ZicpKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAg
ICAgJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzY1NDQvd2Via2l0JywKLSAg
ICAgICAgICAgIHNlbGYuZGF0YWJhc2UudXJsKE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNv
bW1pdF9mb3JfaWQoaWQ9MjM2NTQ0KSksCi0gICAgICAgICkKKyAgICAgICAgd2l0aCBNb2NrTW9k
ZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAg
ICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAnaHR0cHM6Ly9i
aXRidWNrZXQuZXhhbXBsZS5jb20vcHJvamVjdHMvU0FGQVJJL3JlcG9zL3NhZmFyaS9jb21taXRz
L2Q4YmNlMjZmYTY1YzZmYzhmMzljMTc5MjdhYmI3N2Y2OWZhYjgyZmMnLAorICAgICAgICAgICAg
ICAgIHNlbGYuZGF0YWJhc2UudXJsKHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lk
KGlkPSdkOGJjZTI2ZmE2NWMnKSksCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgICAgICdodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy9y
NicsCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS51cmwoc2VsZi5zdm5fcmVwb3NpdG9y
eS5jb21taXRfZm9yX2lkKGlkPTYpKSwKKyAgICAgICAgICAgICkKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29udGV4
dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9mYWlsdXJlX2NvbnRleHRfdW5pdHRlc3QucHkJKHJl
dmlzaW9uIDI3MzgzNCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29udGV4dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMCwxNiAr
MjAsMTIgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0
IHRpbWUKLQogZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwogZnJvbSByZWRp
cyBpbXBvcnQgU3RyaWN0UmVkaXMKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1
cmF0aW9uIGltcG9ydCBDb25maWd1cmF0aW9uCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3Nh
bmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0CiBm
cm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVs
RmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1v
Y2tTVk5SZXBvc2l0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBv
cnQgRXhwZWN0YXRpb25zCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90
ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQogCiAKQEAgLTM3LDIzICszMywy
NCBAQCBjbGFzcyBGYWlsdXJlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlCiAgICAgS0VZU1BB
Q0UgPSAnZmFpbHVyZV9jb250ZXh0X3Rlc3Rfa2V5c3BhY2UnCiAKICAgICBkZWYgaW5pdF9kYXRh
YmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQp
OgotICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxmLktFWVNQQUNF
KQotICAgICAgICBzZWxmLm1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVk
aXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNFLCBjcmVhdGVf
a2V5c3BhY2U9VHJ1ZSkpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0
cyhzZWxmLm1vZGVsLCB0ZXN0X3Jlc3VsdHM9ZGljdCgKLSAgICAgICAgICAgIGRldGFpbHM9ZGlj
dChsaW5rPSdkdW1teS1saW5rJyksCi0gICAgICAgICAgICBydW5fc3RhdHM9ZGljdCh0ZXN0c19z
a2lwcGVkPTApLAotICAgICAgICAgICAgcmVzdWx0cz17Ci0gICAgICAgICAgICAgICAgJ2Zhc3Qn
OiB7Ci0gICAgICAgICAgICAgICAgICAgICdlbmNvZGluZyc6IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICdjc3MtY2FjaGVkLWJvbS5odG1sJzogZGljdChleHBlY3RlZD0nUEFTUycsIGFjdHVh
bD0nRkFJTCcsIHRpbWU9MS4yKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtY2hhcnNl
dC1kZWZhdWx0LnhodG1sJzogZGljdChleHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0nRkFJTCcsIHRp
bWU9MS4yKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtY2hhcnNldC5odG1sJzogZGlj
dChleHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0nUEFTUycsIHRpbWU9MS4yKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdjc3MtbGluay1jaGFyc2V0Lmh0bWwnOiBkaWN0KGV4cGVjdGVkPSdQQVNT
JywgYWN0dWFsPSdQQVNTJywgdGltZT0xLjIpLAorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rv
cnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBjYXNz
YW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxmLktFWVNQQUNFKQorICAgICAgICAgICAg
c2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3Nh
bmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRy
dWUpKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYu
bW9kZWwsIHRlc3RfcmVzdWx0cz1kaWN0KAorICAgICAgICAgICAgICAgIGRldGFpbHM9ZGljdChs
aW5rPSdkdW1teS1saW5rJyksCisgICAgICAgICAgICAgICAgcnVuX3N0YXRzPWRpY3QodGVzdHNf
c2tpcHBlZD0wKSwKKyAgICAgICAgICAgICAgICByZXN1bHRzPXsKKyAgICAgICAgICAgICAgICAg
ICAgJ2Zhc3QnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnZW5jb2RpbmcnOiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jYWNoZWQtYm9tLmh0bWwnOiBkaWN0KGV4cGVj
dGVkPSdQQVNTJywgYWN0dWFsPSdGQUlMJywgdGltZT0xLjIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdjc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJzogZGljdChleHBlY3RlZD0nRkFJ
TCcsIGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnY3NzLWNoYXJzZXQuaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J0ZBSUwnLCBhY3R1YWw9J1BBU1Mn
LCB0aW1lPTEuMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1saW5rLWNoYXJz
ZXQuaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J1BBU1MnLCB0aW1lPTEuMiks
CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICApKQotICAgICAgICBNb2NrTW9k
ZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0cyhzZWxmLm1vZGVsKQorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICApKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jl
c3VsdHMoc2VsZi5tb2RlbCkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9u
b19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tD
YXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2ZhaWx1cmVzX2NvbGxhcHNlZChzZWxmLCBy
ZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgpAQCAtNjQsNyAr
NjEsNyBAQCBjbGFzcyBGYWlsdXJlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlCiAgICAgICAg
ICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgMikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLCBzZXQoWydmYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQt
Ym9tLmh0bWwnLCAnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJ10pKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMsIHsnZmFzdC9lbmNvZGluZy9jc3MtY2Fj
aGVkLWJvbS5odG1sJywgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCd9
KQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3Jl
ZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQp
CiAgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9mYWlsdXJlc19jb2xsYXBzZWQoc2VsZiwgcmVkaXM9
U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKQEAgLTc1LDcgKzcyLDcg
QEAgY2xhc3MgRmFpbHVyZUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZQogICAgICAgICApCiAK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDEpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVzdWx0cywgc2V0KFsnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5o
dG1sJ10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMsIHsnZmFzdC9lbmNvZGlu
Zy9jc3MtY2FjaGVkLWJvbS5odG1sJ30pCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9mYWlsdXJlcyhzZWxmLCByZWRp
cz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgpAQCAtOTEsNyArODgs
NyBAQCBjbGFzcyBGYWlsdXJlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlCiAgICAgICAgICAg
ICAnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJzogJ0ZBSUwnLAogICAgICAgICAg
ICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCc6ICdGQUlMJywKICAg
ICAgICAgICAgICdzdGFydF90aW1lJzogbGlzdChyZXN1bHRzLnZhbHVlcygpKVswXVswXVsnc3Rh
cnRfdGltZSddLAotICAgICAgICAgICAgJ3V1aWQnOiAxNTM4MDI5NDc5MDAKKyAgICAgICAgICAg
ICd1dWlkJzogMTYwMTY2MDAwMDAwCiAgICAgICAgIH0pCiAKICAgICBAV2FpdEZvckRvY2tlclRl
c3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2Nr
X2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKQEAgLTEwNywxNSArMTA0LDE2IEBAIGNs
YXNzIEZhaWx1cmVDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGUKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzb3J0ZWQobGlzdChyZXN1bHRzLnZhbHVlcygpKVswXSwga2V5PWxhbWJkYSB2YWx1
ZTogdmFsdWVbJ3V1aWQnXSlbMF0sIHsKICAgICAgICAgICAgICdmYXN0L2VuY29kaW5nL2Nzcy1j
YWNoZWQtYm9tLmh0bWwnOiAnRkFJTCcsCiAgICAgICAgICAgICAnc3RhcnRfdGltZSc6IGxpc3Qo
cmVzdWx0cy52YWx1ZXMoKSlbMF1bMF1bJ3N0YXJ0X3RpbWUnXSwKLSAgICAgICAgICAgICd1dWlk
JzogMTUzODAyOTQ3OTAwCisgICAgICAgICAgICAndXVpZCc6IDE2MDE2NjAwMDAwMAogICAgICAg
ICB9KQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2Nr
X3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRl
eHQpCiAgICAgZGVmIHRlc3Rfbm9fZmFpbHVyZXMoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNh
c3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3Bh
Y2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAgICAgc2VsZi5tb2RlbCA9IE1vY2tNb2Rl
bEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3Bh
Y2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAgICAgICBNb2NrTW9k
ZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMoc2VsZi5tb2RlbCkKLSAgICAgICAgTW9ja01vZGVs
RmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMoc2VsZi5tb2RlbCkKKyAgICAgICAgd2l0aCBNb2NrTW9k
ZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAg
ICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKKyAgICAg
ICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygp
LCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlz
cGFjZT1UcnVlKSkKKyAgICAgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0
cyhzZWxmLm1vZGVsKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3Vs
dHMoc2VsZi5tb2RlbCkKICAgICAgICAgcmVzdWx0cyA9IHNlbGYubW9kZWwuZmFpbHVyZV9jb250
ZXh0LmZhaWx1cmVzX2J5X2NvbW1pdCgKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25m
aWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyld
LAogICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsIHJlY2VudD1UcnVlLCBjb2xsYXBz
ZWQ9RmFsc2UsIHVuZXhwZWN0ZWQ9RmFsc2UsCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2NrX21vZGVsX2ZhY3RvcnkucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvbW9kZWwvbW9ja19tb2RlbF9mYWN0b3J5LnB5CShyZXZpc2lvbiAyNzM4MzQpCisrKyBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2NrX21v
ZGVsX2ZhY3RvcnkucHkJKHdvcmtpbmcgY29weSkKQEAgLTI0LDExICsyNCwxMiBAQCBpbXBvcnQg
YmFzZTY0CiBpbXBvcnQgaW8KIGltcG9ydCB0aW1lCiAKLWltcG9ydCBjYWxlbmRhcgogZnJvbSBy
ZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZpZ3VyYXRpb24K
IGZyb20gcmVzdWx0c2RicHkubW9kZWwuY29uZmlndXJhdGlvbl9jb250ZXh0X3VuaXR0ZXN0IGlt
cG9ydCBDb25maWd1cmF0aW9uQ29udGV4dFRlc3QKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9j
a19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZOUmVwb3NpdG9y
eQogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2RlbCBpbXBvcnQgTW9kZWwKK2Zyb20gcmVzdWx0
c2RicHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQgU3Rhc2hSZXBvc2l0b3J5LCBXZWJLaXRSZXBv
c2l0b3J5CisKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IG1vY2tzCiAKIAogY2xhc3MgTW9ja01v
ZGVsRmFjdG9yeShvYmplY3QpOgpAQCAtNjAsMjkgKzYxLDQwIEBAIGNsYXNzIE1vY2tNb2RlbEZh
Y3Rvcnkob2JqZWN0KToKICAgICBUSFJFRV9XRUVLUyA9IDYwICogNjAgKiAyNCAqIDIxCiAKICAg
ICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2FmYXJpKGNscyk6CisgICAgICAgIHJldHVybiBtb2Nr
cy5yZW1vdGUuQml0QnVja2V0KHJlbW90ZT0nYml0YnVja2V0LmV4YW1wbGUuY29tL3Byb2plY3Rz
L1NBRkFSSS9yZXBvcy9zYWZhcmknKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHdlYmtp
dChjbHMpOgorICAgICAgICByZXR1cm4gbW9ja3MucmVtb3RlLlN2bihyZW1vdGU9J3N2bi53ZWJr
aXQub3JnL3JlcG9zaXRvcnkvd2Via2l0JykKKworICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBj
cmVhdGUoY2xzLCByZWRpcywgY2Fzc2FuZHJhLCBhc3luY19wcm9jZXNzaW5nPUZhbHNlKToKICAg
ICAgICAgb2xkZXN0X2NvbW1pdCA9IHRpbWUudGltZSgpCi0gICAgICAgIGZvciByZXBvIGluIFtN
b2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKV06
CisgICAgICAgIGZvciByZXBvIGluIFtjbHMuc2FmYXJpKCksIGNscy53ZWJraXQoKV06CiAgICAg
ICAgICAgICBmb3IgY29tbWl0cyBpbiByZXBvLmNvbW1pdHMudmFsdWVzKCk6CiAgICAgICAgICAg
ICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgotICAgICAgICAgICAgICAgICAgICBvbGRlc3Rf
Y29tbWl0ID0gbWluKG9sZGVzdF9jb21taXQsIGNhbGVuZGFyLnRpbWVnbShjb21taXQudGltZXN0
YW1wLnRpbWV0dXBsZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgb2xkZXN0X2NvbW1pdCA9IG1p
bihvbGRlc3RfY29tbWl0LCBjb21taXQudGltZXN0YW1wKQogCiAgICAgICAgIG1vZGVsID0gTW9k
ZWwoCiAgICAgICAgICAgICByZWRpcz1yZWRpcywKICAgICAgICAgICAgIGNhc3NhbmRyYT1jYXNz
YW5kcmEsCiAgICAgICAgICAgICByZXBvc2l0b3JpZXM9WwotICAgICAgICAgICAgICAgIE1vY2tT
dGFzaFJlcG9zaXRvcnkuc2FmYXJpKHJlZGlzPXJlZGlzKSwKLSAgICAgICAgICAgICAgICBNb2Nr
U1ZOUmVwb3NpdG9yeS53ZWJraXQocmVkaXM9cmVkaXMpLAorICAgICAgICAgICAgICAgIFN0YXNo
UmVwb3NpdG9yeSgnaHR0cHM6Ly9iaXRidWNrZXQuZXhhbXBsZS5jb20vcHJvamVjdHMvU0FGQVJJ
L3JlcG9zL3NhZmFyaScpLAorICAgICAgICAgICAgICAgIFdlYktpdFJlcG9zaXRvcnkoKSwKICAg
ICAgICAgICAgIF0sCiAgICAgICAgICAgICBkZWZhdWx0X3R0bF9zZWNvbmRzPXRpbWUudGltZSgp
IC0gb2xkZXN0X2NvbW1pdCArIE1vZGVsLlRUTF9XRUVLLAogICAgICAgICAgICAgYXJjaGl2ZV90
dGxfc2Vjb25kcz10aW1lLnRpbWUoKSAtIG9sZGVzdF9jb21taXQgKyBNb2RlbC5UVExfV0VFSywK
ICAgICAgICAgICAgIGFzeW5jX3Byb2Nlc3Npbmc9YXN5bmNfcHJvY2Vzc2luZywKICAgICAgICAg
KQotICAgICAgICB3aXRoIG1vZGVsLmNvbW1pdF9jb250ZXh0LCBtb2RlbC5jb21taXRfY29udGV4
dC5jYXNzYW5kcmEuYmF0Y2hfcXVlcnlfY29udGV4dCgpOgotICAgICAgICAgICAgZm9yIHJlcG9z
aXRvcnkgaW4gbW9kZWwuY29tbWl0X2NvbnRleHQucmVwb3NpdG9yaWVzLnZhbHVlcygpOgotICAg
ICAgICAgICAgICAgIGZvciBicmFuY2hfY29tbWl0cyBpbiByZXBvc2l0b3J5LmNvbW1pdHMudmFs
dWVzKCk6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBjb21taXQgaW4gYnJhbmNoX2NvbW1pdHM6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5jb21taXRfY29udGV4dC5yZWdpc3Rlcl9j
b21taXQoY29tbWl0KQorICAgICAgICB3aXRoIGNscy5zYWZhcmkoKSBhcyBzYWZhcmksIGNscy53
ZWJraXQoKSBhcyB3ZWJraXQ6CisgICAgICAgICAgICB3aXRoIG1vZGVsLmNvbW1pdF9jb250ZXh0
LCBtb2RlbC5jb21taXRfY29udGV4dC5jYXNzYW5kcmEuYmF0Y2hfcXVlcnlfY29udGV4dCgpOgor
ICAgICAgICAgICAgICAgIGZvciBrZXksIHJlcG9zaXRvcnkgaW4gZGljdChzYWZhcmk9c2FmYXJp
LCB3ZWJraXQ9d2Via2l0KS5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBmb3IgYnJhbmNo
LCBjb21taXRzIGluIHJlcG9zaXRvcnkuY29tbWl0cy5pdGVtcygpOgorICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZGVsLmNvbW1pdF9jb250ZXh0LnJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lk
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksIGJyYW5jaCwgY29tbWl0Lmhh
c2ggb3IgY29tbWl0LnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAg
ICAgICAgcmV0dXJuIG1vZGVsCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTEwNiw3ICsxMTgsNyBA
QCBjbGFzcyBNb2NrTW9kZWxGYWN0b3J5KG9iamVjdCk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAg
ZGVmIGl0ZXJhdGVfYWxsX2NvbW1pdHMoY2xzLCBtb2RlbCwgY2FsbGJhY2spOgogICAgICAgICBy
ZXBvcyA9ICgnd2Via2l0JywgJ3NhZmFyaScpCi0gICAgICAgIGJyYW5jaGVzID0gKE5vbmUsICdz
YWZhcmktNjA2LWJyYW5jaCcpCisgICAgICAgIGJyYW5jaGVzID0gKE5vbmUsICdicmFuY2gtYScp
CiAgICAgICAgIGZvciBicmFuY2ggaW4gYnJhbmNoZXM6CiAgICAgICAgICAgICBjb21taXRfaW5k
ZXggPSB7cmVwbzogMCBmb3IgcmVwbyBpbiByZXBvc30KICAgICAgICAgICAgIGNvbW1pdHNfZm9y
X3JlcG8gPSB7cmVwbzogc29ydGVkKG1vZGVsLmNvbW1pdF9jb250ZXh0LmZpbmRfY29tbWl0c19p
bl9yYW5nZShyZXBvLCBicmFuY2gpKSBmb3IgcmVwbyBpbiByZXBvc30KSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vY2tfcmVwb3Np
dG9yeS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9tb2RlbC9tb2NrX3JlcG9zaXRvcnkucHkJKHJldmlzaW9uIDI3MzgzNCkK
KysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L21vY2tfcmVwb3NpdG9yeS5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDMzMCArMCwwIEBACi0jIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgY29udGV4dGxpYgotaW1w
b3J0IGpzb24KLWltcG9ydCByZQotaW1wb3J0IHVybGxpYgotaW1wb3J0IHhtbHRvZGljdAotCi1m
cm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAotZnJvbSByZXN1bHRzZGJweS5jb250
cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnJlcG9z
aXRvcnkgaW1wb3J0IFN0YXNoUmVwb3NpdG9yeSwgU1ZOUmVwb3NpdG9yeSwgV2ViS2l0UmVwb3Np
dG9yeQotCi0KLWNsYXNzIE1vY2tSZXF1ZXN0KG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgdGV4dD0nJywgc3RhdHVzX2NvZGU9MjAwKToKLSAgICAgICAgc2VsZi50ZXh0ID0gdGV4
dAotICAgICAgICBzZWxmLnN0YXR1c19jb2RlID0gc3RhdHVzX2NvZGUKLQotCi1jbGFzcyBNb2Nr
U3Rhc2hSZXBvc2l0b3J5KFN0YXNoUmVwb3NpdG9yeSk6Ci0KLSAgICBDT01NSVRfUkUgPSByZS5j
b21waWxlKHInY29tbWl0cy8oP1A8aGFzaD5bMC05YS1mXSspJykKLSAgICBDT01NSVRfRk9SX0JS
QU5DSF9SRSA9IHJlLmNvbXBpbGUocidjb21taXRzXD9zaW5jZVw9KD9QPGhhc2g+WzAtOWEtZl0r
KVwmdW50aWxcPSg/UDxicmFuY2g+W14mXSspXCZsaW1pdFw9MScpCi0gICAgQ09NTUlUX0FUX0hF
QURfUkUgPSByZS5jb21waWxlKHInY29tbWl0c1w/dW50aWxcPSg/UDxicmFuY2g+W14mXSspXCZs
aW1pdFw9XGQrJykKLSAgICBET0VTX05PVF9FWElTVF9SRVNVTFQgPSB7J2Vycm9ycyc6IFt7Ci0g
ICAgICAgICdjb250ZXh0JzogTm9uZSwKLSAgICAgICAgJ21lc3NhZ2UnOiAnQ29tbWl0IFwnP1wn
IGRvZXMgbm90IGV4aXN0IGluIHJlcG9zaXRvcnkuJywKLSAgICAgICAgJ2V4Y2VwdGlvbk5hbWUn
OiAnY29tLmF0bGFzc2lhbi5iaXRidWNrZXQuY29tbWl0Lk5vU3VjaENvbW1pdEV4Y2VwdGlvbics
Ci0gICAgfV19Ci0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHNhZmFyaShyZWRpcz1Ob25l
KToKLSAgICAgICAgcmVzdWx0ID0gTW9ja1N0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly9mYWtlLXN0
YXNoLWluc3RhbmNlLmFwcGxlLmNvbS9wcm9qZWN0cy9CUk9XU0VSL3JlcG9zL3NhZmFyaScsIG5h
bWU9J3NhZmFyaScsIHJlZGlzPXJlZGlzKQotICAgICAgICByZXN1bHQuYWRkX2NvbW1pdChDb21t
aXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlc3VsdC5uYW1lLCBicmFuY2g9J21hc3Rl
cicsIGlkPSdiYjZiZGE1ZjQ0ZGQyNGQwYjU0NTM5YjhmZjZlOGMxN2Y1MTkyNDlhJywKLSAgICAg
ICAgICAgIHRpbWVzdGFtcD0xNTM3ODEwMjgxLCBvcmRlcj0wLAotICAgICAgICAgICAgY29tbWl0
dGVyPSdwZXJzb24xQGFwcGxlLmNvbScsCi0gICAgICAgICAgICBtZXNzYWdlPSdDaGFuZ2UgMSBk
ZXNjcmlwdGlvbi4nLAotICAgICAgICApKQotICAgICAgICByZXN1bHQuYWRkX2NvbW1pdChDb21t
aXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlc3VsdC5uYW1lLCBicmFuY2g9J21hc3Rl
cicsIGlkPSczMzY2MTBhODRmZGNmMTRkZGNmMWRiNjUwNzVhZjk1NDgwNTE2ZmRhJywKLSAgICAg
ICAgICAgIHRpbWVzdGFtcD0xNTM3ODA5ODE4LCBvcmRlcj0wLAotICAgICAgICAgICAgY29tbWl0
dGVyPSdwZXJzb24yQGFwcGxlLmNvbScsCi0gICAgICAgICAgICBtZXNzYWdlPSdDaGFuZ2UgMiBk
ZXNjcmlwdGlvbi4nLAotICAgICAgICApKQotICAgICAgICByZXN1bHQuYWRkX2NvbW1pdChDb21t
aXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlc3VsdC5uYW1lLCBicmFuY2g9J21hc3Rl
cicsIGlkPSczMzY2MTBhNDBjM2ZlY2I3Mjg4NzFlMTJjYTMxNDgyY2E3MTViMzgzJywKLSAgICAg
ICAgICAgIHRpbWVzdGFtcD0xNTM3NTY2Mzg2LCBvcmRlcj0wLAotICAgICAgICAgICAgY29tbWl0
dGVyPSdwZXJzb24zQGFwcGxlLmNvbScsCi0gICAgICAgICAgICBtZXNzYWdlPSc8cmRhcjovL3By
b2JsZW0vOTk5OTk5OTk+IENoYW5nZSAzIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0gICAg
ICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9
cmVzdWx0Lm5hbWUsIGJyYW5jaD0nbWFzdGVyJywgaWQ9J2U2NDgxMGE0MGMzZmVjYjcyODg3MWUx
MmNhMzE0ODJjYTcxNWIzODMnLAotICAgICAgICAgICAgdGltZXN0YW1wPTE1Mzc1NTA2ODUsIG9y
ZGVyPTAsCi0gICAgICAgICAgICBjb21taXR0ZXI9J3BlcnNvbjRAYXBwbGUuY29tJywKLSAgICAg
ICAgICAgIG1lc3NhZ2U9dSdDaGFuZ2UgNCBcdTIwMTQgKFBhcnQgMSkgZGVzY3JpcHRpb24uJywK
LSAgICAgICAgKSkKLSAgICAgICAgcmVzdWx0LmFkZF9jb21taXQoQ29tbWl0KAotICAgICAgICAg
ICAgcmVwb3NpdG9yeV9pZD1yZXN1bHQubmFtZSwgYnJhbmNoPSdtYXN0ZXInLCBpZD0nN2JlNDA4
NDI1OGE0NTJlOGZlMjJmMzYyODdjNWIzMjFlOWM4MjQ5YicsCi0gICAgICAgICAgICB0aW1lc3Rh
bXA9MTUzNzU1MDY4NSwgb3JkZXI9MSwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uNEBh
cHBsZS5jb20nLAotICAgICAgICAgICAgbWVzc2FnZT11J0NoYW5nZSA0IFx1MjAxNCAoUGFydCAy
KSBkZXNjcmlwdGlvbi5cblJldmlld2VkIGJ5IHBlcnNvbi4nLAotICAgICAgICApKQotCi0gICAg
ICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9
cmVzdWx0Lm5hbWUsIGJyYW5jaD0nc2FmYXJpLTYwNi1icmFuY2gnLCBpZD0nNzkyNTZjMzJhODU1
YWM4NjEyMTEyMjc5MDA4MzM0ZDkwZTkwMWM1NScsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUz
Nzg5NzM2Nywgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uNUBhcHBsZS5j
b20nLAotICAgICAgICAgICAgbWVzc2FnZT0nQ2hhbmdlIDUgZGVzY3JpcHRpb24uJywKLSAgICAg
ICAgKSkKLSAgICAgICAgcmVzdWx0LmFkZF9jb21taXQoQ29tbWl0KAotICAgICAgICAgICAgcmVw
b3NpdG9yeV9pZD1yZXN1bHQubmFtZSwgYnJhbmNoPSdzYWZhcmktNjA2LWJyYW5jaCcsIGlkPSdk
ODUyMjJkOTQwN2ZkYmJmNDc0MDY1MDk0MDBhOWNlY2I3M2FjNmRlJywKLSAgICAgICAgICAgIHRp
bWVzdGFtcD0xNTM3NTYzMzgzLCBvcmRlcj0wLAotICAgICAgICAgICAgY29tbWl0dGVyPSdwZXJz
b242QGFwcGxlLmNvbScsCi0gICAgICAgICAgICBtZXNzYWdlPSdDaGFuZ2UgNiBkZXNjcmlwdGlv
bi4nLAotICAgICAgICApKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwgdXJsLCBuYW1lLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUK
LSAgICAgICAgc2VsZi5jb21taXRzID0gZGVmYXVsdGRpY3QobGlzdCkKLQotICAgICAgICBzdXBl
cihNb2NrU3Rhc2hSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXyh1cmwsICoqa3dhcmdzKQotCi0g
ICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLSAgICBkZWYgc2Vzc2lvbihzZWxmKToKLSAg
ICAgICAgc2VsZi5fc2Vzc2lvbl9kZXB0aCArPSAxCi0gICAgICAgIHlpZWxkCi0gICAgICAgIHNl
bGYuX3Nlc3Npb25fZGVwdGggLT0gMQotCi0gICAgZGVmIGFkZF9jb21taXQoc2VsZiwgY29tbWl0
KToKLSAgICAgICAgY29waWVkX2NvbW1pdCA9IENvbW1pdC5mcm9tX2pzb24oY29tbWl0LnRvX2pz
b24oKSkKLSAgICAgICAgY29waWVkX2NvbW1pdC5yZXBvc2l0b3J5X2lkID0gc2VsZi5uYW1lCi0g
ICAgICAgIHNlbGYuY29tbWl0c1tjb3BpZWRfY29tbWl0LmJyYW5jaF0uYXBwZW5kKGNvcGllZF9j
b21taXQpCi0gICAgICAgIHNlbGYuY29tbWl0c1tjb3BpZWRfY29tbWl0LmJyYW5jaF0gPSBzb3J0
ZWQoc2VsZi5jb21taXRzW2NvcGllZF9jb21taXQuYnJhbmNoXSkKLQotICAgIGRlZiByZXF1ZXN0
KHNlbGYsIHVybCwgbWV0aG9kPSdHRVQnLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIG5vdCB1cmwu
c3RhcnRzd2l0aChzZWxmLnVybCkgb3IgbWV0aG9kICE9ICdHRVQnOgotICAgICAgICAgICAgcmV0
dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkKLQotICAgICAgICBwYXRoID0gdXJsW2xl
bihzZWxmLnVybCkgKyAxOl0KLSAgICAgICAgaWYgbm90IHBhdGg6Ci0gICAgICAgICAgICByZXR1
cm4gTW9ja1JlcXVlc3QoanNvbi5kdW1wcyh7J3NsdWcnOiBzZWxmLm5hbWV9KSkKLQotICAgICAg
ICBtYXRjaCA9IHNlbGYuQ09NTUlUX1JFLm1hdGNoKHBhdGgpCi0gICAgICAgIGlmIG1hdGNoOgot
ICAgICAgICAgICAgaW5kZXggPSAtMQotICAgICAgICAgICAgYnJhbmNoID0gTm9uZQotICAgICAg
ICAgICAgZm9yIGtleSwgY29tbWl0cyBpbiBzZWxmLmNvbW1pdHMuaXRlbXMoKToKLSAgICAgICAg
ICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY29tbWl0cykpOgotICAgICAgICAgICAgICAgICAg
ICBpZiBjb21taXRzW2ldLmlkLnN0YXJ0c3dpdGgobWF0Y2guZ3JvdXAoJ2hhc2gnKSk6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiBpbmRleCAhPSAtMToKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3QoanNvbi5kdW1wcyhzZWxmLkRPRVNfTk9UX0VYSVNU
X1JFU1VMVCksIHN0YXR1c19jb2RlPTQwMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4
ID0gaQotICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoID0ga2V5Ci0gICAgICAgICAgICBp
ZiBpbmRleCA9PSAtMSBvciBub3QgYnJhbmNoOgotICAgICAgICAgICAgICAgIHJldHVybiBNb2Nr
UmVxdWVzdChqc29uLmR1bXBzKHNlbGYuRE9FU19OT1RfRVhJU1RfUkVTVUxUKSwgc3RhdHVzX2Nv
ZGU9NDAxKQotICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KGpzb24uZHVtcHMoewotICAg
ICAgICAgICAgICAgICdpZCc6IHNlbGYuY29tbWl0c1ticmFuY2hdW2luZGV4XS5pZCwKLSAgICAg
ICAgICAgICAgICAnY29tbWl0dGVyJzogeydlbWFpbEFkZHJlc3MnOiBzZWxmLmNvbW1pdHNbYnJh
bmNoXVtpbmRleF0uY29tbWl0dGVyfSwKLSAgICAgICAgICAgICAgICAnY29tbWl0dGVyVGltZXN0
YW1wJzogc2VsZi5jb21taXRzW2JyYW5jaF1baW5kZXhdLnRpbWVzdGFtcF9hc19lcG9jaCgpICog
c2VsZi5DT01NSVRfVElNRVNUQU1QX0NPTlZFUlNJT04sCi0gICAgICAgICAgICAgICAgJ21lc3Nh
Z2UnOiBzZWxmLmNvbW1pdHNbYnJhbmNoXVtpbmRleF0ubWVzc2FnZSwKLSAgICAgICAgICAgICAg
ICAncGFyZW50cyc6IFtdIGlmIGluZGV4ID09IDAgZWxzZSBbewotICAgICAgICAgICAgICAgICAg
ICAnaWQnOiBzZWxmLmNvbW1pdHNbYnJhbmNoXVtpbmRleCAtIDFdLmlkLAotICAgICAgICAgICAg
ICAgICAgICAnY29tbWl0dGVyVGltZXN0YW1wJzogc2VsZi5jb21taXRzW2JyYW5jaF1baW5kZXgg
LSAxXS50aW1lc3RhbXBfYXNfZXBvY2goKSAqIHNlbGYuQ09NTUlUX1RJTUVTVEFNUF9DT05WRVJT
SU9OLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgfSkpCi0KLSAgICAgICAgbWF0
Y2ggPSBzZWxmLkNPTU1JVF9GT1JfQlJBTkNIX1JFLm1hdGNoKHBhdGgpCi0gICAgICAgIGlmIG1h
dGNoOgotICAgICAgICAgICAgYnJhbmNoID0gdXJsbGliLnBhcnNlLnVucXVvdGUobWF0Y2guZ3Jv
dXAoJ2JyYW5jaCcpKVtsZW4oJ3JlZnMvaGVhZHMnKSArIDE6XQotICAgICAgICAgICAgaGFzX2Zv
dW5kID0gRmFsc2UKLSAgICAgICAgICAgIGlmIHNlbGYuY29tbWl0cy5nZXQoYnJhbmNoKToKLSAg
ICAgICAgICAgICAgICBmb3IgY29tbWl0IGluIHNlbGYuY29tbWl0c1ticmFuY2hdWzotMV06Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5pZC5zdGFydHN3aXRoKG1hdGNoLmdyb3VwKCdo
YXNoJykpOgotICAgICAgICAgICAgICAgICAgICAgICAgaGFzX2ZvdW5kID0gVHJ1ZQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChq
c29uLmR1bXBzKHsnc2l6ZSc6IDEgaWYgaGFzX2ZvdW5kIGVsc2UgMCwgJ2lzTGFzdFBhZ2UnOiBU
cnVlfSkpCi0KLSAgICAgICAgbWF0Y2ggPSBzZWxmLkNPTU1JVF9BVF9IRUFEX1JFLm1hdGNoKHBh
dGgpCi0gICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgYnJhbmNoID0gbWF0Y2guZ3JvdXAo
J2JyYW5jaCcpLnJlcGxhY2UoJyUyRicsICcvJylbbGVuKCdyZWZzL2hlYWRzJykgKyAxOl0KLSAg
ICAgICAgICAgIGlmIG5vdCBzZWxmLmNvbW1pdHMuZ2V0KGJyYW5jaCwgW10pOgotICAgICAgICAg
ICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChqc29uLmR1bXBzKHNlbGYuRE9FU19OT1RfRVhJU1Rf
UkVTVUxUKSwgc3RhdHVzX2NvZGU9NDAxKQotICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0
KGpzb24uZHVtcHMoeyd2YWx1ZXMnOiBbeydpZCc6IHNlbGYuY29tbWl0c1ticmFuY2hdWy0xXS5p
ZH1dLCAnc2l6ZSc6IDEsICdpc0xhc3RQYWdlJzogVHJ1ZX0pKQotCi0gICAgICAgIHJldHVybiBN
b2NrUmVxdWVzdChzdGF0dXNfY29kZT00MDQpCi0KLQotIyBVc2VzIG11bHRpcGxlIGluaGVyaXRh
bmNlIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGNsYXNzLgot
Y2xhc3MgX1NWTk1vY2sob2JqZWN0KToKLSAgICBTVk5fVVJMX1JFID0gcmUuY29tcGlsZShyJ1wh
c3ZuL3J2ci8oP1A8cmV2aXNpb24+WzAtOV0rKS8oP1A8YnJhbmNoPi4qKScpCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbmFtZSwgdXJsPU5vbmUpOgotICAgICAgICBzZWxmLmNvbW1pdHMgPSBk
ZWZhdWx0ZGljdChsaXN0KQotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0KLSAgICAgICAgIyBT
aG91bGQgYmUgb3ZlcnJpZGVuIGJ5IHRoZSBTVk5SZXBvc2l0b3J5IGNsYXNzCi0gICAgICAgIHNl
bGYudXJsID0gdXJsIGlmIHVybCBlbHNlICcnCi0gICAgICAgIHNlbGYuX3Nlc3Npb25fZGVwdGgg
PSAwCi0KLSAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgotICAgIGRlZiBzZXNzaW9uKHNl
bGYpOgotICAgICAgICBzZWxmLl9zZXNzaW9uX2RlcHRoICs9IDEKLSAgICAgICAgeWllbGQKLSAg
ICAgICAgc2VsZi5fc2Vzc2lvbl9kZXB0aCAtPSAxCi0KLSAgICBkZWYgYWRkX2NvbW1pdChzZWxm
LCBjb21taXQpOgotICAgICAgICBjb3BpZWRfY29tbWl0ID0gQ29tbWl0LmZyb21fanNvbihjb21t
aXQudG9fanNvbigpKQotICAgICAgICBjb3BpZWRfY29tbWl0LnJlcG9zaXRvcnlfaWQgPSBzZWxm
Lm5hbWUKLSAgICAgICAgc2VsZi5jb21taXRzW2NvcGllZF9jb21taXQuYnJhbmNoXS5hcHBlbmQo
Y29waWVkX2NvbW1pdCkKLSAgICAgICAgc2VsZi5jb21taXRzW2NvcGllZF9jb21taXQuYnJhbmNo
XSA9IHNvcnRlZChzZWxmLmNvbW1pdHNbY29waWVkX2NvbW1pdC5icmFuY2hdKQotCi0gICAgZGVm
IHJlcXVlc3Qoc2VsZiwgdXJsLCBtZXRob2Q9J0dFVCcsICoqa3dhcmdzKToKLSAgICAgICAgaWYg
bm90IHVybC5zdGFydHN3aXRoKHNlbGYudXJsKToKLSAgICAgICAgICAgIHJldHVybiBNb2NrUmVx
dWVzdChzdGF0dXNfY29kZT00MDQpCi0KLSAgICAgICAgaWYgbWV0aG9kID09ICdHRVQnIGFuZCB1
cmwgPT0gc2VsZi51cmw6Ci0gICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3QodGV4dD14bWx0
b2RpY3QudW5wYXJzZSh7J3N2bic6IHsnaW5kZXgnOiB7J0BiYXNlJzogc2VsZi5uYW1lfX19KSwg
c3RhdHVzX2NvZGU9MjAwKQotICAgICAgICBpZiBtZXRob2QgIT0gJ1BST1BGSU5EJzoKLSAgICAg
ICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNfY29kZT00MDQpCi0KLSAgICAgICAgcGF0
aCA9IHVybFtsZW4oc2VsZi51cmwpOl0KLSAgICAgICAgbWF0Y2ggPSBzZWxmLlNWTl9VUkxfUkUu
bWF0Y2gocGF0aCkKLSAgICAgICAgaWYgbm90IG1hdGNoOgotICAgICAgICAgICAgcmV0dXJuIE1v
Y2tSZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkKLSAgICAgICAgcmV2aXNpb24gPSBtYXRjaC5ncm91
cCgncmV2aXNpb24nKQotICAgICAgICBicmFuY2ggPSBtYXRjaC5ncm91cCgnYnJhbmNoJykKLSAg
ICAgICAgaWYgYnJhbmNoICE9ICd0cnVuayc6Ci0gICAgICAgICAgICBicmFuY2ggPSBicmFuY2hb
bGVuKCdicmFuY2hlcy8nKTpdCi0KLSAgICAgICAgaWYgYnJhbmNoIG5vdCBpbiBzZWxmLmNvbW1p
dHM6Ci0gICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3Qoc3RhdHVzX2NvZGU9NDA0KQotCi0g
ICAgICAgIGZvciBjb21taXQgaW4gc2VsZi5jb21taXRzW2JyYW5jaF06Ci0gICAgICAgICAgICBp
ZiBjb21taXQuaWQgPT0gcmV2aXNpb246Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1
ZXN0KAotICAgICAgICAgICAgICAgICAgICB0ZXh0PXhtbHRvZGljdC51bnBhcnNlKHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICdEOm11bHRpc3RhdHVzJzogeydEOnJlc3BvbnNlJzogeydEOnBy
b3BzdGF0JzogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnRDpwcm9wJzogewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHAxOnZlcnNpb24tbmFtZSc6IGNvbW1pdC5p
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xwMTpjcmVhdGlvbmRhdGUnOiBj
b21taXQudGltZXN0YW1wLnN0cmZ0aW1lKCclWS0lbS0lZFQlSDolTTolUy4lZlonKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xwMTpjcmVhdG9yLWRpc3BsYXluYW1lJzogY29t
bWl0LmNvbW1pdHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7J0Q6c3RhdHVzJzogJ0hUVFAvMS4xIDIwMCBPSyd9LAotICAg
ICAgICAgICAgICAgICAgICAgICAgXX19LAotICAgICAgICAgICAgICAgICAgICB9KSwKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdHVzX2NvZGU9MjA3LAotICAgICAgICAgICAgICAgICkKLSAgICAg
ICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkKLQotCi1jbGFzcyBNb2NrU1ZO
UmVwb3NpdG9yeShfU1ZOTW9jaywgU1ZOUmVwb3NpdG9yeSk6Ci0KLSAgICBAc3RhdGljbWV0aG9k
Ci0gICAgZGVmIHdlYmtpdChyZWRpcz1Ob25lKToKLSAgICAgICAgcmVzdWx0ID0gTW9ja1dlYktp
dFJlcG9zaXRvcnkocmVkaXM9cmVkaXMpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1p
dCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsn
LCBpZD0yMzY1NDQsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODA1MjQwOCwgb3JkZXI9MCwK
LSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uMUB3ZWJraXQub3JnJywKLSAgICAgICAgICAg
IG1lc3NhZ2U9J0NoYW5nZSAxIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJl
c3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0
Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDMsCi0gICAgICAgICAgICB0aW1lc3RhbXA9
MTUzODA1MDQ1OCwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uMkB3ZWJr
aXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSAyIGRlc2NyaXB0aW9uLicsCi0g
ICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAg
IHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDIsCi0g
ICAgICAgICAgICB0aW1lc3RhbXA9MTUzODA0OTEwOCwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNv
bW1pdHRlcj0ncGVyc29uM0B3ZWJraXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5n
ZSAzIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0
KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0n
dHJ1bmsnLCBpZD0yMzY1NDEsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODA0MTc5Miwgb3Jk
ZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uNEB3ZWJraXQub3JnJywKLSAgICAg
ICAgICAgIG1lc3NhZ2U9J0NoYW5nZSA0IChQYXJ0IDIpIGRlc2NyaXB0aW9uLicsCi0gICAgICAg
ICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9z
aXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDAsCi0gICAgICAg
ICAgICB0aW1lc3RhbXA9MTUzODAyOTQ3OSwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRl
cj0ncGVyc29uNEB3ZWJraXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSA0IChQ
YXJ0IDEpIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0KLSAgICAgICAgcmVzdWx0LmFkZF9j
b21taXQoQ29tbWl0KAotICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXN1bHQubmFtZSwgYnJh
bmNoPSdzYWZhcmktNjA2LWJyYW5jaCcsIGlkPTIzNjMzNSwKLSAgICAgICAgICAgIHRpbWVzdGFt
cD0xNTM4MDI5NDgwLCBvcmRlcj0wLAotICAgICAgICAgICAgY29tbWl0dGVyPSdpbnRlZ3JhdG9y
QHdlYmtpdC5vcmcnLAotICAgICAgICAgICAgbWVzc2FnZT0nSW50ZWdyYXRpb24gMS4nLAotICAg
ICAgICApKQotICAgICAgICByZXN1bHQuYWRkX2NvbW1pdChDb21taXQoCi0gICAgICAgICAgICBy
ZXBvc2l0b3J5X2lkPXJlc3VsdC5uYW1lLCBicmFuY2g9J3NhZmFyaS02MDYtYnJhbmNoJywgaWQ9
MjM2MzM0LAotICAgICAgICAgICAgdGltZXN0YW1wPTE1MzgwMjk0NzksIG9yZGVyPTAsCi0gICAg
ICAgICAgICBjb21taXR0ZXI9J2ludGVncmF0b3JAd2Via2l0Lm9yZycsCi0gICAgICAgICAgICBt
ZXNzYWdlPSdJbnRlZ3JhdGlvbiAyLicsCi0gICAgICAgICkpCi0gICAgICAgIHJldHVybiByZXN1
bHQKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIG5hbWUsICoqa3dhcmdzKToKLSAgICAg
ICAgX1NWTk1vY2suX19pbml0X18oc2VsZiwgbmFtZT1uYW1lLCB1cmw9dXJsKQotICAgICAgICBT
Vk5SZXBvc2l0b3J5Ll9faW5pdF9fKHNlbGYsIHVybD11cmwsICoqa3dhcmdzKQotCi0KLWNsYXNz
IE1vY2tXZWJLaXRSZXBvc2l0b3J5KF9TVk5Nb2NrLCBXZWJLaXRSZXBvc2l0b3J5KToKLQotICAg
IENIQU5HRUxPR19VUkxfUkUgPSByZS5jb21waWxlKHInKD9QPGJyYW5jaD50cnVua3xicmFuY2hl
c1wvLispXC8oP1A8cGF0aD4uKylcL1w/cD0oP1A8cmV2aXNpb24+WzAtOV0rKScpCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBfU1ZOTW9jay5fX2luaXRfXyhz
ZWxmLCBuYW1lPSd3ZWJraXQnKQotICAgICAgICBXZWJLaXRSZXBvc2l0b3J5Ll9faW5pdF9fKHNl
bGYsICoqa3dhcmdzKQotCi0gICAgZGVmIHJlcXVlc3Qoc2VsZiwgdXJsLCBtZXRob2Q9J0dFVCcs
ICoqa3dhcmdzKToKLSAgICAgICAgaWYgbm90IHVybC5zdGFydHN3aXRoKHNlbGYudXJsKToKLSAg
ICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNfY29kZT00MDQpCi0KLSAgICAgICAg
IyBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBmYWxsYmFjayB0byBfU1ZOTW9jawotICAgICAg
ICBpZiBtZXRob2QgIT0gJ0dFVCc6Ci0gICAgICAgICAgICByZXR1cm4gX1NWTk1vY2sucmVxdWVz
dChzZWxmLCB1cmwsIG1ldGhvZD1tZXRob2QsICoqa3dhcmdzKQotCi0gICAgICAgIHBhdGggPSB1
cmxbbGVuKHNlbGYudXJsKTpdCi0gICAgICAgIG1hdGNoID0gc2VsZi5DSEFOR0VMT0dfVVJMX1JF
Lm1hdGNoKHBhdGgpCi0gICAgICAgIGlmIG5vdCBtYXRjaDoKLSAgICAgICAgICAgIHJldHVybiBf
U1ZOTW9jay5yZXF1ZXN0KHNlbGYsIHVybCwgbWV0aG9kPW1ldGhvZCwgKiprd2FyZ3MpCi0KLSAg
ICAgICAgaWYgbWF0Y2guZ3JvdXAoJ3BhdGgnKSBub3QgaW4gV2ViS2l0UmVwb3NpdG9yeS5DSEFO
R0VMT0dTOgotICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkK
LSAgICAgICAgaWYgbWF0Y2guZ3JvdXAoJ3BhdGgnKSBub3QgaW4gKCdDaGFuZ2VMb2cnLCAnVG9v
bHMvQ2hhbmdlTG9nJyk6Ci0gICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3Qoc3RhdHVzX2Nv
ZGU9MjAwKQotCi0gICAgICAgIHJldmlzaW9uID0gbWF0Y2guZ3JvdXAoJ3JldmlzaW9uJykKLSAg
ICAgICAgYnJhbmNoID0gbWF0Y2guZ3JvdXAoJ2JyYW5jaCcpCi0gICAgICAgIGlmIGJyYW5jaCAh
PSAndHJ1bmsnOgotICAgICAgICAgICAgYnJhbmNoID0gYnJhbmNoW2xlbignYnJhbmNoZXMvJyk6
XQotCi0gICAgICAgIGNoYW5nZWxvZ19mb3JfY29tbWl0ID0gJycKLSAgICAgICAgZm9yIGNvbW1p
dCBpbiBzZWxmLmNvbW1pdHNbYnJhbmNoXToKLSAgICAgICAgICAgIGNoYW5nZWxvZ19mb3JfY29t
bWl0ID0gZiIiIntjb21taXQudGltZXN0YW1wLnN0cmZ0aW1lKCclWS0lbS0lZCcpfSAgSm9uIENv
bW1pdHRlciAgPHtjb21taXQuY29tbWl0dGVyfT4KLQotICAgICAgICB7Y29tbWl0Lm1lc3NhZ2V9
Ci0iIiIgKyBjaGFuZ2Vsb2dfZm9yX2NvbW1pdAotCi0gICAgICAgICAgICBpZiBjb21taXQuaWQg
PT0gcmV2aXNpb246Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHRleHQ9Y2hh
bmdlbG9nX2Zvcl9jb21taXQsIHN0YXR1c19jb2RlPTIwMCkKLQotICAgICAgICByZXR1cm4gTW9j
a1JlcXVlc3Qoc3RhdHVzX2NvZGU9NDA0KQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWxfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9k
ZWwvbW9kZWxfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3MzgzNCkKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTIgQEAgY2xhc3MgTW9kZWxUZXN0KFdhaXRG
b3JEb2NrZXJUZXN0Q2FzZSk6CiAgICAgS0VZU1BBQ0UgPSAnbW9kZWxfdGVzdF9rZXlzcGFjZScK
IAogICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5k
cmE9Q2Fzc2FuZHJhQ29udGV4dCwgYXN5bmNfcHJvY2Vzc2luZz1GYWxzZSk6Ci0gICAgICAgIGNh
c3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpCi0gICAgICAgIHNl
bGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZSgKLSAgICAgICAgICAgIHJlZGlzPXJl
ZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRl
X2tleXNwYWNlPVRydWUpLAotICAgICAgICAgICAgYXN5bmNfcHJvY2Vzc2luZz1hc3luY19wcm9j
ZXNzaW5nLAotICAgICAgICApCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmko
KSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIGNhc3NhbmRyYS5kcm9w
X2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpCisgICAgICAgICAgICBzZWxmLm1vZGVs
ID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUoCisgICAgICAgICAgICAgICAgcmVkaXM9cmVkaXMo
KSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNFLCBjcmVhdGVfa2V5
c3BhY2U9VHJ1ZSksCisgICAgICAgICAgICAgICAgYXN5bmNfcHJvY2Vzc2luZz1hc3luY19wcm9j
ZXNzaW5nLAorICAgICAgICAgICAgKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2Nr
X2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9
TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfaGVhbHRoKHNlbGYsIHJlZGlzPVN0
cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CkluZGV4OiBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZXBvc2l0b3J5LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L21vZGVsL3JlcG9zaXRvcnkucHkJKHJldmlzaW9uIDI3MzgzNCkKKysrIFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnku
cHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjAsMzcwICsyMCw2OCBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQganNv
bgotaW1wb3J0IHJlCi1pbXBvcnQgcmVxdWVzdHMKLWltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCB1
cmxsaWIKLWltcG9ydCB4bWx0b2RpY3QKLQogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNv
bW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHhtbC5wYXJzZXJzLmV4cGF0IGltcG9ydCBFeHBhdEVy
cm9yCi0KLQotY2xhc3MgU0NNRXhjZXB0aW9uKFJ1bnRpbWVFcnJvcik6Ci0gICAgcGFzcworZnJv
bSB3ZWJraXRzY21weSBpbXBvcnQgcmVtb3RlCiAKIAogY2xhc3MgUmVwb3NpdG9yeShvYmplY3Qp
OgotICAgIERFRkFVTFRfQlJBTkNIID0gJ21hc3RlcicKIAotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBrZXkpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXksIGRlZmF1bHRfYnJhbmNoPU5vbmUp
OgogICAgICAgICBzZWxmLmtleSA9IGtleQorICAgICAgICBzZWxmLmRlZmF1bHRfYnJhbmNoID0g
ZGVmYXVsdF9icmFuY2ggb3IgJ21haW4nCiAKLSAgICBkZWYgY29tbWl0X2Zvcl9pZChzZWxmLCBp
ZCwgYnJhbmNoPU5vbmUpOgorICAgIGRlZiBjb21taXRfZm9yX2lkKHNlbGYsIGlkKToKICAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKICAgICBkZWYgdXJsX2Zvcl9jb21taXQo
c2VsZiwgY29tbWl0KToKICAgICAgICAgcmV0dXJuIE5vbmUKIAogCi1jbGFzcyBIVFRQUmVwb3Np
dG9yeShSZXBvc2l0b3J5KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXksIHVybCwgcmVk
aXM9Tm9uZSwgdXNlcm5hbWU9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKEhU
VFBSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXyhrZXkpCi0gICAgICAgIHNlbGYudXJsID0gdXJs
Ci0gICAgICAgIHNlbGYuX3VzZXJuYW1lID0gdXNlcm5hbWUKLSAgICAgICAgc2VsZi5fcGFzc3dv
cmQgPSBwYXNzd29yZAotICAgICAgICBzZWxmLl9zZXNzaW9uID0gTm9uZQotICAgICAgICBzZWxm
Ll9zZXNzaW9uX2RlcHRoID0gMAotICAgICAgICBzZWxmLnJlZGlzID0gcmVkaXMgICMgSW4gbWFu
eSBjYXNlcywgd2UgY2FuIGdyZWF0bHkgcmVkdWNlIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgbWFk
ZSBieSBjYWNoaW5nIHJlcXVlc3RzIGluIFJlZGlzLgotCi0gICAgQGNvbnRleHRsaWIuY29udGV4
dG1hbmFnZXIKLSAgICBkZWYgc2Vzc2lvbihzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYuX3Nl
c3Npb246Ci0gICAgICAgICAgICBzZWxmLl9zZXNzaW9uID0gcmVxdWVzdHMuU2Vzc2lvbigpCi0g
ICAgICAgICAgICBpZiBzZWxmLl91c2VybmFtZSBhbmQgc2VsZi5fcGFzc3dvcmQ6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fc2Vzc2lvbi5hdXRoID0gKHNlbGYuX3VzZXJuYW1lLCBzZWxmLl9wYXNz
d29yZCkKLSAgICAgICAgICAgIHNlbGYuX3Nlc3Npb24ubW91bnQoc2VsZi51cmwsIHJlcXVlc3Rz
LmFkYXB0ZXJzLkhUVFBBZGFwdGVyKG1heF9yZXRyaWVzPTUpKQotICAgICAgICBzZWxmLl9zZXNz
aW9uX2RlcHRoICs9IDEKLQotICAgICAgICB5aWVsZAotCi0gICAgICAgIHNlbGYuX3Nlc3Npb25f
ZGVwdGggLT0gMQotICAgICAgICBpZiBzZWxmLl9zZXNzaW9uX2RlcHRoIDw9IDA6Ci0gICAgICAg
ICAgICBzZWxmLl9zZXNzaW9uLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuX3Nlc3Npb24gPSBO
b25lCi0KLSAgICBkZWYgcmVxdWVzdChzZWxmLCB1cmwsIG1ldGhvZD0nR0VUJywgKiprd2FyZ3Mp
OgotICAgICAgICB3aXRoIHNlbGYuc2Vzc2lvbigpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X3Nlc3Npb24ucmVxdWVzdChtZXRob2Q9bWV0aG9kLCB1cmw9dXJsLCAqKmt3YXJncykKLQotICAg
IGRlZiBjYWNoZV9yZXN1bHQoc2VsZiwga2V5LCBmdW5jdGlvbiwgZXg9NjAgKiA2MCAqIDI0ICog
Mik6Ci0gICAgICAgIHJlc3VsdCA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5yZWRpczoKLSAgICAg
ICAgICAgIHJlc3VsdCA9IHNlbGYucmVkaXMuZ2V0KGtleSkKLSAgICAgICAgaWYgcmVzdWx0IGlz
IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgPSBmdW5jdGlvbigpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgIGlmIHJl
c3VsdCBhbmQgc2VsZi5yZWRpczoKLSAgICAgICAgICAgIHNlbGYucmVkaXMuc2V0KGtleSwgcmVz
dWx0LCBleD1leCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0KLWNsYXNzIFN0YXNoUmVwb3Np
dG9yeShIVFRQUmVwb3NpdG9yeSk6Ci0KLSAgICAjIFN0YXNoJ3MgdGltZXN0YW1wcyBhcmUgYWNj
dXJhdGUgdG8gdGhlIG1pbGxpc2Vjb25kLgotICAgIENPTU1JVF9USU1FU1RBTVBfQ09OVkVSU0lP
TiA9IDEwMDAKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsICoqa3dhcmdzKToKLSAgICAg
ICAgUFJPSkVDVFMgPSAnL3Byb2plY3RzJwotICAgICAgICBpZiBsZW4odXJsLnNwbGl0KFBST0pF
Q1RTKSkgIT0gMjoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihmJ3t1cmx9IGlzIG5vdCBh
IFN0YXNoIFVSTCcpCi0gICAgICAgIHNlbGYuYmFzZV91cmwgPSB1cmwKLSAgICAgICAgc3VwZXIo
U3Rhc2hSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXyhOb25lLCAoJy9yZXN0L2FwaS8xLjAnICsg
UFJPSkVDVFMpLmpvaW4odXJsLnNwbGl0KFBST0pFQ1RTKSksICoqa3dhcmdzKQotCi0gICAgICAg
IHdpdGggc2VsZi5zZXNzaW9uKCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
c3Rhc2hfZGF0YSA9IHNlbGYuZ2V0KCkKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgot
ICAgICAgICAgICAgICAgIHN0YXNoX2RhdGEgPSB7fQotICAgICAgICAgICAgc2VsZi5rZXkgPSBz
dGFzaF9kYXRhLmdldCgnc2x1ZycsIE5vbmUpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5rZXk6
Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKGYne3NlbGYudXJsfSBpcyBub3QgYW4g
U3Rhc2ggcmVwb3NpdG9yeScpCi0KLSAgICBkZWYgZ2V0KHNlbGYsIGFyZ3M9Tm9uZSwgY2FjaGU9
VHJ1ZSk6Ci0gICAgICAgIHVybCA9IHNlbGYudXJsICsgKCcnIGlmIG5vdCBhcmdzIGVsc2UgZicv
e2FyZ3N9JykKLQotICAgICAgICBkZWYgY2FsbGJhY2sodXJsPXVybCwgb2JqPXNlbGYpOgotICAg
ICAgICAgICAgcmVzcG9uc2UgPSBvYmoucmVxdWVzdCh1cmwpCi0gICAgICAgICAgICBpZiByZXNw
b25zZS5zdGF0dXNfY29kZSA9PSAyMDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNl
LnRleHQKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcmVzdWx0ID0gc2VsZi5j
YWNoZV9yZXN1bHQoCi0gICAgICAgICAgICBmJ3JlcG9zaXRvcnk6e3VybH0nLAotICAgICAgICAg
ICAgY2FsbGJhY2ssCi0gICAgICAgICkgaWYgY2FjaGUgZWxzZSBjYWxsYmFjayh1cmwpCi0gICAg
ICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKHJlc3VsdCkKLSAg
ICAgICAgcmV0dXJuIHt9Ci0KLSAgICBkZWYgY29tbWl0X2Zvcl9pZChzZWxmLCBpZCwgYnJhbmNo
PVJlcG9zaXRvcnkuREVGQVVMVF9CUkFOQ0gpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3
aXRoIHNlbGYuc2Vzc2lvbigpOgotICAgICAgICAgICAgICAgIGNvbW1pdF9kYXRhID0gc2VsZi5n
ZXQoZidjb21taXRzL3tpZH0nKQotICAgICAgICAgICAgICAgIGlmIG5vdCBjb21taXRfZGF0YToK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgU0NNRXhjZXB0aW9uKGYnQ29tbWl0IHtpZH0gZG9l
cyBub3QgZXhpc3Qgb24gYnJhbmNoIHticmFuY2h9JykKLSAgICAgICAgICAgICAgICB0aW1lc3Rh
bXAgPSBpbnQoY29tbWl0X2RhdGFbJ2NvbW1pdHRlclRpbWVzdGFtcCddKSAvLyBzZWxmLkNPTU1J
VF9USU1FU1RBTVBfQ09OVkVSU0lPTgotCi0gICAgICAgICAgICAgICAgYnJhbmNoX2ZpbHRlciA9
IHVybGxpYi5wYXJzZS5xdW90ZShmJ3JlZnMvaGVhZHMve2JyYW5jaH0nKQotICAgICAgICAgICAg
ICAgIGNvbW1pdHNfYmV0d2Vlbl9jb21taXRfYW5kX2JyYW5jaF9oZWFkID0gc2VsZi5nZXQoZiJj
b21taXRzP3NpbmNlPXtjb21taXRfZGF0YVsnaWQnXX0mdW50aWw9e2JyYW5jaF9maWx0ZXJ9Jmxp
bWl0PTEiLCBjYWNoZT1GYWxzZSkKLSAgICAgICAgICAgICAgICBpZiBjb21taXRzX2JldHdlZW5f
Y29tbWl0X2FuZF9icmFuY2hfaGVhZFsnaXNMYXN0UGFnZSddIGFuZCBjb21taXRzX2JldHdlZW5f
Y29tbWl0X2FuZF9icmFuY2hfaGVhZFsnc2l6ZSddID09IDA6Ci0gICAgICAgICAgICAgICAgICAg
ICMgV2UgbWF5IGhhdmUgbWlzc2VkIHRoZSBjYXNlIHRoZSBjb21taXQgaW4gcXVlc3Rpb24gaXMg
dGhlIEhFQUQgb2YgdGhlIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICBjb21taXRzX2F0X2Jy
YW5jaF9oZWFkID0gc2VsZi5nZXQoZidjb21taXRzP3VudGlsPXticmFuY2hfZmlsdGVyfSZsaW1p
dD0yMCcsIGNhY2hlPUZhbHNlKQotICAgICAgICAgICAgICAgICAgICBpZiBhbGwoW2NvbW1pdFsn
aWQnXSAhPSBjb21taXRfZGF0YVsnaWQnXSBmb3IgY29tbWl0IGluIGNvbW1pdHNfYXRfYnJhbmNo
X2hlYWRbJ3ZhbHVlcyddXSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTQ01FeGNl
cHRpb24oZid7aWR9IGV4aXN0cywgYnV0IG5vdCBvbiB7YnJhbmNofScpCi0KLSAgICAgICAgICAg
ICAgICAjIE9yZGVyaW5nIGNvbW1pdHMgYnkgdGltZXN0YW1wIGluIGdpdCBpcyBhIGJpdCBwcm9i
bGVtYXRpYyBiZWNhdXNlIG11bHRpcGxlIGNvbW1pdHMgY2FuIHNoYXJlIGEgdGltZXN0YW1wLgot
ICAgICAgICAgICAgICAgICMgR2VuZXJhbGx5LCBpZiB5b3VyIHBhcmVudCBzaGFyZXMgeW91ciB0
aW1lc3RhbXAsIHlvdXIgb3JkZXIgbmVlZHMgdG8gYmUgaW5jcmVtZW50ZWQuCi0gICAgICAgICAg
ICAgICAgb3JkZXIgPSAwCi0gICAgICAgICAgICAgICAgbG9vcF9kYXRhID0gY29tbWl0X2RhdGEK
LSAgICAgICAgICAgICAgICB3aGlsZSBsZW4obG9vcF9kYXRhWydwYXJlbnRzJ10pID09IDEgYW5k
IGludChsb29wX2RhdGFbJ3BhcmVudHMnXVswXVsnY29tbWl0dGVyVGltZXN0YW1wJ10pIC8vIHNl
bGYuQ09NTUlUX1RJTUVTVEFNUF9DT05WRVJTSU9OID09IHRpbWVzdGFtcDoKLSAgICAgICAgICAg
ICAgICAgICAgb3JkZXIgKz0gMQotICAgICAgICAgICAgICAgICAgICBsb29wX2RhdGEgPSBzZWxm
LmdldChmImNvbW1pdHMve2xvb3BfZGF0YVsncGFyZW50cyddWzBdWydpZCddfSIpCi0KLSAgICAg
ICAgICAgICAgICByZXR1cm4gQ29tbWl0KAotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5
X2lkPXNlbGYua2V5LAotICAgICAgICAgICAgICAgICAgICBpZD1jb21taXRfZGF0YVsnaWQnXSwK
LSAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCwKLSAgICAgICAgICAgICAgICAgICAg
dGltZXN0YW1wPXRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgb3JkZXI9b3JkZXIsCi0g
ICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj1jb21taXRfZGF0YVsnY29tbWl0dGVyJ11bJ2Vt
YWlsQWRkcmVzcyddLAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPWNvbW1pdF9kYXRhWydt
ZXNzYWdlJ10sCi0gICAgICAgICAgICAgICAgKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoK
LSAgICAgICAgICAgIHJhaXNlIFNDTUV4Y2VwdGlvbihmJ0ZhaWxlZCB0byBjb25uZWN0IHRvIHtz
ZWxmLnVybH0nKQotCi0gICAgZGVmIHVybF9mb3JfY29tbWl0KHNlbGYsIGNvbW1pdCk6Ci0gICAg
ICAgIHJldHVybiBmJ3tzZWxmLmJhc2VfdXJsfS9jb21taXRzL3tjb21taXR9JworY2xhc3MgU3Rh
c2hSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCwg
a2V5PU5vbmUsIGRlZmF1bHRfYnJhbmNoPU5vbmUpOgorICAgICAgICBzZWxmLnJlbW90ZSA9IHJl
bW90ZS5CaXRCdWNrZXQodXJsKQorICAgICAgICBzdXBlcihTdGFzaFJlcG9zaXRvcnksIHNlbGYp
Ll9faW5pdF9fKAorICAgICAgICAgICAga2V5PWtleSBvciBzZWxmLnJlbW90ZS5uYW1lLAorICAg
ICAgICAgICAgZGVmYXVsdF9icmFuY2g9ZGVmYXVsdF9icmFuY2ggb3Igc2VsZi5yZW1vdGUuZGVm
YXVsdF9icmFuY2gsCisgICAgICAgICkKIAotY2xhc3MgU1ZOUmVwb3NpdG9yeShIVFRQUmVwb3Np
dG9yeSk6Ci0KLSAgICBERUZBVUxUX0JSQU5DSCA9ICd0cnVuaycKLSAgICBEQVZfWE1MID0gIiIi
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxwcm9wZmluZCB4bWxucz0i
REFWOiI+Ci08cHJvcD4KLTxyZXNvdXJjZXR5cGUgeG1sbnM9IkRBVjoiLz4KLTxnZXRjb250ZW50
bGVuZ3RoIHhtbG5zPSJEQVY6Ii8+Ci08ZGVhZHByb3AtY291bnQgeG1sbnM9Imh0dHA6Ly9zdWJ2
ZXJzaW9uLnRpZ3Jpcy5vcmcveG1sbnMvZGF2LyIvPgotPHZlcnNpb24tbmFtZSB4bWxucz0iREFW
OiIvPgotPGNyZWF0aW9uZGF0ZSB4bWxucz0iREFWOiIvPgotPGNyZWF0b3ItZGlzcGxheW5hbWUg
eG1sbnM9IkRBVjoiLz4KLTwvcHJvcD48L3Byb3BmaW5kPiIiIgotCi0gICAgZGVmIGdldChzZWxm
LCBicmFuY2g9REVGQVVMVF9CUkFOQ0gsIHJldmlzaW9uPU5vbmUpOgotICAgICAgICB1cmwgPSBz
ZWxmLnVybAotICAgICAgICBpZiByZXZpc2lvbjoKLSAgICAgICAgICAgIHVybCA9IHVybCArIGYi
IXN2bi9ydnIve3JldmlzaW9ufS97YnJhbmNoIGlmIGJyYW5jaCA9PSBzZWxmLkRFRkFVTFRfQlJB
TkNIIGVsc2UgJ2JyYW5jaGVzLycgKyBicmFuY2h9IgotCi0gICAgICAgIGRlZiBjYWxsYmFjayh1
cmw9dXJsLCBvYmo9c2VsZiwgd2l0aF9yZXZpc2lvbj1UcnVlIGlmIHJldmlzaW9uIGVsc2UgRmFs
c2UpOgotICAgICAgICAgICAgaWYgd2l0aF9yZXZpc2lvbjoKLSAgICAgICAgICAgICAgICAjIENv
bnN0cnVjdGVkIHRoaXMgZnJvbSBXaXJlU2hhcmsgYW5kIGFuIHN2biBpbmZvIGNvbW1hbmQsIG1v
ZGlmeSB3aXRoIGNhdXRpb24hCi0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVl
c3QoCi0gICAgICAgICAgICAgICAgICAgIG1ldGhvZD0nUFJPUEZJTkQnLAotICAgICAgICAgICAg
ICAgICAgICB1cmw9dXJsLAotICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPXsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC94bWwnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICdEZXB0aCc6ICcwJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YT1vYmouREFWX1hNTCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi51cmwpCi0KLSAgICAgICAgICAgIGlm
IHJlc3BvbnNlLnN0YXR1c19jb2RlIGluIFsyMDAsIDIwN106Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3BvbnNlLnRleHQKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcmVz
dWx0ID0gc2VsZi5jYWNoZV9yZXN1bHQoCi0gICAgICAgICAgICBmJ3JlcG9zaXRvcnk6e3VybH0n
LAotICAgICAgICAgICAgY2FsbGJhY2ssCisgICAgZGVmIGNvbW1pdF9mb3JfaWQoc2VsZiwgaWQp
OgorICAgICAgICBjb21taXQgPSBzZWxmLnJlbW90ZS5jb21taXQoaGFzaD1pZCkKKyAgICAgICAg
cmV0dXJuIENvbW1pdCgKKyAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9c2VsZi5rZXksCisgICAg
ICAgICAgICBpZD1jb21taXQuaGFzaCwKKyAgICAgICAgICAgIGJyYW5jaD1jb21taXQuYnJhbmNo
LAorICAgICAgICAgICAgdGltZXN0YW1wPWNvbW1pdC50aW1lc3RhbXAsCisgICAgICAgICAgICBv
cmRlcj1jb21taXQub3JkZXIsCisgICAgICAgICAgICBjb21taXR0ZXI9Y29tbWl0LmF1dGhvci5l
bWFpbCwKKyAgICAgICAgICAgIG1lc3NhZ2U9Y29tbWl0Lm1lc3NhZ2UsCiAgICAgICAgICkKLSAg
ICAgICAgaWYgcmVzdWx0OgotICAgICAgICAgICAgcmV0dXJuIHhtbHRvZGljdC5wYXJzZShyZXN1
bHQpCi0gICAgICAgIHJldHVybiB7fQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCwgdHJh
Y191cmw9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcihTVk5SZXBvc2l0b3J5LCBzZWxm
KS5fX2luaXRfXyhOb25lLCB1cmwsICoqa3dhcmdzKQotICAgICAgICBzZWxmLnRyYWNfdXJsID0g
dHJhY191cmwKLSAgICAgICAgd2l0aCBzZWxmLnNlc3Npb24oKToKLSAgICAgICAgICAgIHNlbGYu
a2V5ID0gc2VsZi5nZXQoKS5nZXQoJ3N2bicsIHt9KS5nZXQoJ2luZGV4JykuZ2V0KCdAYmFzZScp
Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5rZXk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKGYne3NlbGYudXJsfSBpcyBub3QgYW4gU1ZOIHJlcG9zaXRvcnknKQotCi0gICAgZGVm
IGNvbW1pdF9mb3JfaWQoc2VsZiwgaWQsIGJyYW5jaD1ERUZBVUxUX0JSQU5DSCk6Ci0gICAgICAg
IHdpdGggc2VsZi5zZXNzaW9uKCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
Y29tbWl0X2RhdGEgPSBzZWxmLmdldChicmFuY2g9YnJhbmNoLCByZXZpc2lvbj1pZClbJ0Q6bXVs
dGlzdGF0dXMnXVsnRDpyZXNwb25zZSddWydEOnByb3BzdGF0J11bMF1bJ0Q6cHJvcCddCi0gICAg
ICAgICAgICAgICAgaWYgY29tbWl0X2RhdGFbJ2xwMTp2ZXJzaW9uLW5hbWUnXSAhPSBzdHIoaWQp
OgotICAgICAgICAgICAgICAgICAgICByYWlzZSBTQ01FeGNlcHRpb24oZidSZXZpc2lvbiB7aWR9
IGRvZXMgbm90IGV4aXN0IG9uIGJyYW5jaCB7YnJhbmNofScpCi0KLSAgICAgICAgICAgICAgICAj
IE9mIHRoZSBmb3JtICcyMDE4LTA5LTI0VDIyOjAzOjM0LjQzNjIxN1onCi0gICAgICAgICAgICAg
ICAgdGltZXN0YW1wID0gZGF0ZXRpbWUuZGF0ZXRpbWUuc3RycHRpbWUoY29tbWl0X2RhdGFbJ2xw
MTpjcmVhdGlvbmRhdGUnXSwgJyVZLSVtLSVkVCVIOiVNOiVTLiVmWicpCi0KLSAgICAgICAgICAg
ICAgICByZXR1cm4gQ29tbWl0KAotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXNl
bGYua2V5LAotICAgICAgICAgICAgICAgICAgICBpZD1zdHIoaWQpLAotICAgICAgICAgICAgICAg
ICAgICBicmFuY2g9YnJhbmNoLAotICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9dGltZXN0
YW1wLAotICAgICAgICAgICAgICAgICAgICBvcmRlcj0wLAotICAgICAgICAgICAgICAgICAgICBj
b21taXR0ZXI9Y29tbWl0X2RhdGFbJ2xwMTpjcmVhdG9yLWRpc3BsYXluYW1lJ10sCi0gICAgICAg
ICAgICAgICAgKQotICAgICAgICAgICAgZXhjZXB0IEV4cGF0RXJyb3I6Ci0gICAgICAgICAgICAg
ICAgcmFpc2UgU0NNRXhjZXB0aW9uKGYnRmFpbGVkIHRvIGNvbm5lY3QgdG8ge3NlbGYudXJsfScp
Ci0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgU0NN
RXhjZXB0aW9uKGYnUmV2aXNpb24ge2lkfSBkb2VzIG5vdCBleGlzdCBvbiBicmFuY2gge2JyYW5j
aH0nKQogCiAgICAgZGVmIHVybF9mb3JfY29tbWl0KHNlbGYsIGNvbW1pdCk6Ci0gICAgICAgIHJl
dHVybiBmJ3tzZWxmLnVybH0vIXN2bi9iYy97Y29tbWl0fS8nCi0KKyAgICAgICAgcmV0dXJuIGYn
e3NlbGYucmVtb3RlLnVybH0vY29tbWl0cy97Y29tbWl0fScKIAotY2xhc3MgV2ViS2l0UmVwb3Np
dG9yeShTVk5SZXBvc2l0b3J5KToKLSAgICBDSEFOR0VMT0dTID0gKAotICAgICAgICAnQ2hhbmdl
TG9nJywKLSAgICAgICAgJ1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZycsCi0gICAgICAgICdTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvVGhpcmRQYXJ0eS9DaGFuZ2VMb2cn
LAotICAgICAgICAnU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5nZUxvZycsCi0gICAg
ICAgICdTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cnLAotICAgICAgICAnU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8v
Q2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nJywKLSAgICAg
ICAgJ1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cnLAotICAgICAgICAnU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cnLAotICAgICAgICAnU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VM
b2cnLAotICAgICAgICAnU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cnLAotICAgICAgICAn
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cnLAotICAgICAgICAnU291cmNlL1dURi9DaGFuZ2VMb2cnLAotICAgICAgICAn
VG9vbHMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ0V4YW1wbGVzL0NoYW5nZUxvZycsCi0gICAgICAg
ICdKU1Rlc3RzL0NoYW5nZUxvZycsCi0gICAgICAgICdMYXlvdXRUZXN0cy9DaGFuZ2VMb2cnLAot
ICAgICAgICAnTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9DaGFuZ2VMb2cnLAotICAgICAg
ICAnTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZycsCi0gICAgICAgICdQZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZycsCi0gICAgICAgICdQZXJmb3JtYW5jZVRlc3RzL1N1blNwaWRl
ci9DaGFuZ2VMb2cnLAotICAgICAgICAnV2ViRHJpdmVyVGVzdHMvQ2hhbmdlTG9nJywKLSAgICAg
ICAgJ1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cnLAotICAgICAgICAnV2Vic2l0ZXMvYnJvd3Nl
cmJlbmNoLm9yZy9DaGFuZ2VMb2cnLAotICAgICAgICAnV2Vic2l0ZXMvYnVncy53ZWJraXQub3Jn
L0NoYW5nZUxvZycsCi0gICAgICAgICdXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvQ2hhbmdlTG9n
JywKLSAgICAgICAgJ1dlYnNpdGVzL3BsYW5ldC53ZWJraXQub3JnL0NoYW5nZUxvZycsCi0gICAg
ICAgICdXZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZycsCi0gICAgICAgICdXZWJzaXRlcy93
ZWJraXQub3JnL3NwZWNzL0NTU1Zpc3VhbEVmZmVjdHMvQ2hhbmdlTG9nJywKLSAgICApCi0gICAg
Q0hBTkdFX0xPR19USFJFQURTID0gNgotICAgIEZJUlNUX0xJTkVfUkVHRVggPSByZS5jb21waWxl
KHInKD9QPGRhdGU+XGQrLVxkKy1cZCspXHMrKD9QPG5hbWU+XFMuK1xTKVxzKzwoP1A8ZW1haWw+
XFMrKT4nKQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc3Vw
ZXIoV2ViS2l0UmVwb3NpdG9yeSwgc2VsZikuX19pbml0X18oJ2h0dHBzOi8vc3ZuLndlYmtpdC5v
cmcvcmVwb3NpdG9yeS93ZWJraXQvJywgKiprd2FyZ3MpCi0KLSAgICBkZWYgY29tbWl0X2Zvcl9p
ZChzZWxmLCBpZCwgYnJhbmNoPVNWTlJlcG9zaXRvcnkuREVGQVVMVF9CUkFOQ0gpOgotICAgICAg
ICB3aXRoIHNlbGYuc2Vzc2lvbigpOgotICAgICAgICAgICAgcmVzdWx0ID0gc3VwZXIoV2ViS2l0
UmVwb3NpdG9yeSwgc2VsZikuY29tbWl0X2Zvcl9pZChpZCwgYnJhbmNoPWJyYW5jaCkKLQotICAg
ICAgICAgICAgIyBGaW5kIHRoZSBsYXN0IGNvbW1pdCBvbiB0aGUgZ2l2ZW4gYnJhbmNoIHNvIHdl
IGNhbiBkaWZmIHRoZSBjaGFuZ2Vsb2dzCi0gICAgICAgICAgICBwcmV2aW91c19pZCA9IHNlbGYu
Z2V0KGJyYW5jaD1icmFuY2gsIHJldmlzaW9uPWludChpZCkgLSAxKS5nZXQoCi0gICAgICAgICAg
ICAgICAgJ0Q6bXVsdGlzdGF0dXMnLCB7fSkuZ2V0KCdEOnJlc3BvbnNlJywge30pLmdldCgnRDpw
cm9wc3RhdCcsIFt7fV0pWzBdLmdldCgnRDpwcm9wJywge30pLmdldCgnbHAxOnZlcnNpb24tbmFt
ZScsIE5vbmUpCi0gICAgICAgICAgICBicmFuY2hfdXJsID0gZiJ7c2VsZi51cmx9e2JyYW5jaCBp
ZiBicmFuY2ggPT0gc2VsZi5ERUZBVUxUX0JSQU5DSCBlbHNlICdicmFuY2hlcy8nICsgYnJhbmNo
fSIKLQotICAgICAgICAgICAgY2hhbmdlbG9ncyA9IHt9Ci0gICAgICAgICAgICByZXF1ZXN0X3Ro
cmVhZHMgPSBbXQotCi0gICAgICAgICAgICAjIENvbXBhcmUgY2hhbmdlbG9nIGZyb20gcHJldmlv
dXMgY29tbWl0IHRvIHRoZSBjaGFuZ2Vsb2cgZnJvbSB0aGlzIGNvbW1pdAotICAgICAgICAgICAg
ZGVmIGRpZmZfY2hhbmdlbG9ncyhjaGFuZ2Vsb2dfbGlzdCk6Ci0gICAgICAgICAgICAgICAgZm9y
IGNoYW5nZWxvZyBpbiBjaGFuZ2Vsb2dfbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgY3VycmVu
dF91cmwgPSBmJ3ticmFuY2hfdXJsfS97Y2hhbmdlbG9nfS8/cD17aWR9JwotICAgICAgICAgICAg
ICAgICAgICBwcmV2aW91c191cmwgPSBmJ3ticmFuY2hfdXJsfS97Y2hhbmdlbG9nfS8/cD17cHJl
dmlvdXNfaWR9JyBpZiBwcmV2aW91c19pZCBlbHNlIE5vbmUKLQotICAgICAgICAgICAgICAgICAg
ICBjdXJyZW50X3Jlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KGN1cnJlbnRfdXJsKQotICAgICAgICAg
ICAgICAgICAgICBpZiBjdXJyZW50X3Jlc3BvbnNlLnN0YXR1c19jb2RlICE9IDIwMDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIHByZXZpb3Vz
X3Jlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHByZXZpb3VzX3VybCkgaWYgcHJldmlvdXNfdXJsIGVs
c2UgTm9uZQotICAgICAgICAgICAgICAgICAgICBpZiBwcmV2aW91c19yZXNwb25zZSBhbmQgcHJl
dmlvdXNfcmVzcG9uc2Uuc3RhdHVzX2NvZGUgIT0gMjAwOgotICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKLQotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c19yZXNwb25zZV9sZW5n
dGggPSAwCi0gICAgICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzX3Jlc3BvbnNlOgotICAgICAg
ICAgICAgICAgICAgICAgICAgcHJldmlvdXNfcmVzcG9uc2VfbGVuZ3RoID0gbGVuKHByZXZpb3Vz
X3Jlc3BvbnNlLnRleHQpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihjdXJyZW50X3Jlc3Bv
bnNlLnRleHQpID09IHByZXZpb3VzX3Jlc3BvbnNlX2xlbmd0aDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwcmV2aW91c19yZXNw
b25zZV9sZW5ndGggb3IgbGVuKGN1cnJlbnRfcmVzcG9uc2UudGV4dCkgPCBwcmV2aW91c19yZXNw
b25zZV9sZW5ndGg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vsb2dzW2NoYW5nZWxv
Z10gPSBjdXJyZW50X3Jlc3BvbnNlLnRleHQKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWxvZ3NbY2hhbmdlbG9nXSA9IGN1cnJlbnRfcmVz
cG9uc2UudGV4dFswOi1sZW4ocHJldmlvdXNfcmVzcG9uc2UudGV4dCldCi0KLSAgICAgICAgICAg
ICMgQmVjYXVzZSB3ZSdyZSBtb3N0bHkgYmxvY2tlZCBvbiBuZXR3b3JrIEkvTywgdGhyZWFkcyBj
YW4gc3BlZWQgdGhpcyB1cCB+NHgKLSAgICAgICAgICAgIHNoYXJkcyA9IFtbXSBmb3IgXyBpbiBy
YW5nZShzZWxmLkNIQU5HRV9MT0dfVEhSRUFEUyldCi0gICAgICAgICAgICBpbmRleCA9IDAKLSAg
ICAgICAgICAgIGZvciBjaGFuZ2Vsb2cgaW4gc2VsZi5DSEFOR0VMT0dTOgotICAgICAgICAgICAg
ICAgIHNoYXJkc1tpbmRleF0uYXBwZW5kKGNoYW5nZWxvZykKLSAgICAgICAgICAgICAgICBpbmRl
eCArPSAxCi0gICAgICAgICAgICAgICAgaWYgaW5kZXggPj0gbGVuKHNoYXJkcyk6Ci0gICAgICAg
ICAgICAgICAgICAgIGluZGV4ID0gMAotICAgICAgICAgICAgZm9yIHNoYXJkIGluIHNoYXJkczoK
LSAgICAgICAgICAgICAgICByZXF1ZXN0X3RocmVhZHMuYXBwZW5kKHRocmVhZGluZy5UaHJlYWQo
Ci0gICAgICAgICAgICAgICAgICAgIHRhcmdldD1kaWZmX2NoYW5nZWxvZ3MsCi0gICAgICAgICAg
ICAgICAgICAgIGt3YXJncz1kaWN0KGNoYW5nZWxvZ19saXN0PXNoYXJkKSwKLSAgICAgICAgICAg
ICAgICApKQotICAgICAgICAgICAgICAgIHJlcXVlc3RfdGhyZWFkc1stMV0uc3RhcnQoKQotICAg
ICAgICAgICAgZm9yIHRocmVhZCBpbiByZXF1ZXN0X3RocmVhZHM6Ci0gICAgICAgICAgICAgICAg
dGhyZWFkLmpvaW4oKQotCi0gICAgICAgICAgICBjb21taXRfbWVzc2FnZSA9IFtdCi0gICAgICAg
ICAgICBmb3IgY2hhbmdlbG9nIGluIHNlbGYuQ0hBTkdFTE9HUzoKLSAgICAgICAgICAgICAgICBw
YXJ0aWFsX21lc3NhZ2UgPSBjaGFuZ2Vsb2dzLmdldChjaGFuZ2Vsb2csIE5vbmUpCi0gICAgICAg
ICAgICAgICAgaWYgbm90IHBhcnRpYWxfbWVzc2FnZToKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgICAgICBsaW5lc19pbl9tZXNzYWdlID0gcGFydGlhbF9tZXNzYWdl
LnNwbGl0KCdcbicpCi0KLSAgICAgICAgICAgICAgICAjIFRoZSBmaXJzdCBsaW5lIG9mIHRoZSBj
b21taXQgbWVzc2FnZSBtaWdodCBjb250YWluIHRoZSByZWFsIGNvbW1pdHRlciwgaW4gdGhlIGNh
c2UKLSAgICAgICAgICAgICAgICAjIGNvbW1pdCBxdWV1ZSBjb21taXR0ZWQgYSBjaGFuZ2Ugb24g
dGhlIGJlaGFsZiBvZiBzb21lb25lCi0gICAgICAgICAgICAgICAgc3RhcnRfb2ZfbWVzc2FnZV9z
aGFyZCA9IDAKLSAgICAgICAgICAgICAgICBtYXRjaCA9IHNlbGYuRklSU1RfTElORV9SRUdFWC5t
YXRjaChsaW5lc19pbl9tZXNzYWdlWzBdKQotICAgICAgICAgICAgICAgIGlmIG1hdGNoOgotICAg
ICAgICAgICAgICAgICAgICBpZiBtYXRjaC5ncm91cCgnZW1haWwnKSAhPSByZXN1bHQuY29tbWl0
dGVyOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmNvbW1pdHRlciA9IG1hdGNoLmdy
b3VwKCdlbWFpbCcpCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X29mX21lc3NhZ2Vfc2hhcmQg
Kz0gMQotICAgICAgICAgICAgICAgICAgICB3aGlsZSBub3QgbGluZXNfaW5fbWVzc2FnZVtzdGFy
dF9vZl9tZXNzYWdlX3NoYXJkXToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X29mX21l
c3NhZ2Vfc2hhcmQgKz0gMQotCi0gICAgICAgICAgICAgICAgIyBXZWJLaXQgY29tbWl0IG1lc3Nh
Z2VzIGFyZSBvZnRlbiBzcGxpdCBhY3Jvc3MgbXVsdGlwbGUgY2hhbmdlbG9ncyB3aXRoIHRoZSBm
aXJzdCBmZXcgbGluZXMgZHVwbGljYXRlZC4KLSAgICAgICAgICAgICAgICBzdGFydF9vZl9mdWxs
X21lc3NhZ2UgPSAwCi0gICAgICAgICAgICAgICAgd2hpbGUgc3RhcnRfb2ZfbWVzc2FnZV9zaGFy
ZCA8IGxlbihsaW5lc19pbl9tZXNzYWdlKSBhbmQgc3RhcnRfb2ZfZnVsbF9tZXNzYWdlIDwgbGVu
KGNvbW1pdF9tZXNzYWdlKToKLSAgICAgICAgICAgICAgICAgICAgaWYgbGluZXNfaW5fbWVzc2Fn
ZVtzdGFydF9vZl9tZXNzYWdlX3NoYXJkXS5zdGFydHN3aXRoKCcgJyAqIDgpOgotICAgICAgICAg
ICAgICAgICAgICAgICAgbGluZSA9IGxpbmVzX2luX21lc3NhZ2Vbc3RhcnRfb2ZfbWVzc2FnZV9z
aGFyZF1bODpdCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lID0gbGluZXNfaW5fbWVzc2FnZVtzdGFydF9vZl9tZXNzYWdlX3NoYXJkXQotICAg
ICAgICAgICAgICAgICAgICBpZiBsaW5lICE9IGNvbW1pdF9tZXNzYWdlW3N0YXJ0X29mX2Z1bGxf
bWVzc2FnZV06Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAg
ICAgICBzdGFydF9vZl9tZXNzYWdlX3NoYXJkICs9IDEKLSAgICAgICAgICAgICAgICAgICAgc3Rh
cnRfb2ZfZnVsbF9tZXNzYWdlICs9IDEKIAotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGxp
bmVzX2luX21lc3NhZ2Vbc3RhcnRfb2ZfbWVzc2FnZV9zaGFyZDpdOgotICAgICAgICAgICAgICAg
ICAgICBjb21taXRfbWVzc2FnZS5hcHBlbmQobGluZVs4Ol0gaWYgbGluZS5zdGFydHN3aXRoKCcg
JyAqIDgpIGVsc2UgbGluZSkKK2NsYXNzIFdlYktpdFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAK
LSAgICAgICAgICAgIHJlc3VsdC5tZXNzYWdlID0gc3RyKCdcbicuam9pbihjb21taXRfbWVzc2Fn
ZSkpIGlmIGNvbW1pdF9tZXNzYWdlIGVsc2UgTm9uZQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
KyAgICAgICAgc2VsZi5yZW1vdGUgPSByZW1vdGUuU3ZuKCdodHRwczovL3N2bi53ZWJraXQub3Jn
L3JlcG9zaXRvcnkvd2Via2l0JykKKyAgICAgICAgc3VwZXIoV2ViS2l0UmVwb3NpdG9yeSwgc2Vs
ZikuX19pbml0X18oCisgICAgICAgICAgICBrZXk9J3dlYmtpdCcsCisgICAgICAgICAgICBkZWZh
dWx0X2JyYW5jaD1zZWxmLnJlbW90ZS5kZWZhdWx0X2JyYW5jaCwKKyAgICAgICAgKQogCi0gICAg
ICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgZGVmIGNvbW1pdF9mb3JfaWQoc2VsZiwgaWQpOgor
ICAgICAgICBjb21taXQgPSBzZWxmLnJlbW90ZS5jb21taXQocmV2aXNpb249aWQpCisgICAgICAg
IHJldHVybiBDb21taXQoCisgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXNlbGYua2V5LAorICAg
ICAgICAgICAgaWQ9Y29tbWl0LnJldmlzaW9uLAorICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5i
cmFuY2gsCisgICAgICAgICAgICB0aW1lc3RhbXA9Y29tbWl0LnRpbWVzdGFtcCwKKyAgICAgICAg
ICAgIG9yZGVyPWNvbW1pdC5vcmRlciwKKyAgICAgICAgICAgIGNvbW1pdHRlcj1jb21taXQuYXV0
aG9yLmVtYWlsLAorICAgICAgICAgICAgbWVzc2FnZT1jb21taXQubWVzc2FnZSwKKyAgICAgICAg
KQogCiAgICAgZGVmIHVybF9mb3JfY29tbWl0KHNlbGYsIGNvbW1pdCk6Ci0gICAgICAgIHJldHVy
biBmJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC97Y29tbWl0fS97c2VsZi5rZXl9
JworICAgICAgICByZXR1cm4gZidodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy9ye2NvbW1pdH0n
CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9t
b2RlbC9yZXBvc2l0b3J5X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnlfdW5pdHRl
c3QucHkJKHJldmlzaW9uIDI3MzgzNCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnlfdW5pdHRlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDg0ICsyMCw1MyBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCi1pbXBvcnQganNvbgotCi1mcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmlj
dFJlZGlzCi1mcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwotZnJvbSByZXN1bHRzZGJweS5j
b250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1v
Y2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1N0YXNoUmVwb3NpdG9yeSwgTW9ja1NWTlJlcG9zaXRv
cnkKLWZyb20gcmVzdWx0c2RicHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQgU0NNRXhjZXB0aW9u
Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01v
ZGVsRmFjdG9yeQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5yZXBvc2l0b3J5IGltcG9ydCBTdGFz
aFJlcG9zaXRvcnksIFdlYktpdFJlcG9zaXRvcnkKIGZyb20gcmVzdWx0c2RicHkubW9kZWwud2Fp
dF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCiAKIAog
Y2xhc3MgUmVwb3NpdG9yeVRlc3QoV2FpdEZvckRvY2tlclRlc3RDYXNlKToKIAotICAgIEBXYWl0
Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0
UmVkaXMpCi0gICAgZGVmIHRlc3Rfc3ZuKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzKToKLSAgICAg
ICAgc3ZuX3JlcG8gPSBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQocmVkaXM9cmVkaXMoKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKCd3ZWJraXQnLCBzdm5fcmVwby5rZXkpCi0gICAgICAgIGNv
bW1pdCA9IHN2bl9yZXBvLmNvbW1pdF9mb3JfaWQoMjM2NTQ0LCBicmFuY2g9J3RydW5rJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQudXVpZCwgMTUzODA1MjQwODAwKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5tZXNzYWdlLCAnQ2hhbmdlIDEgZGVzY3JpcHRpb24u
XG4nKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2Nr
X3JlZGlzPUZha2VTdHJpY3RSZWRpcykKLSAgICBkZWYgdGVzdF9icmFuY2hfc3ZuKHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzKToKLSAgICAgICAgc3ZuX3JlcG8gPSBNb2NrU1ZOUmVwb3NpdG9yeS53
ZWJraXQocmVkaXM9cmVkaXMoKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTQ01F
eGNlcHRpb24pOgotICAgICAgICAgICAgc3ZuX3JlcG8uY29tbWl0X2Zvcl9pZCgyMzYzMzUsIGJy
YW5jaD0ndHJ1bmsnKQotICAgICAgICBjb21taXQgPSBzdm5fcmVwby5jb21taXRfZm9yX2lkKDIz
NjMzNSwgYnJhbmNoPSdzYWZhcmktNjA2LWJyYW5jaCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY29tbWl0LnV1aWQsIDE1MzgwMjk0ODAwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21taXQubWVzc2FnZSwgJ0ludGVncmF0aW9uIDEuXG4nKQotCi0gICAgQFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcykKLSAg
ICBkZWYgdGVzdF9iYXNpY19zdm4oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMpOgotICAgICAgICBz
dm5fcmVwbyA9IE1vY2tTVk5SZXBvc2l0b3J5KHVybD0nc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9y
eS93ZWJraXQvJywgbmFtZT0nd2Via2l0JywgcmVkaXM9cmVkaXMoKSkKLSAgICAgICAgc3ZuX3Jl
cG8uYWRkX2NvbW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXN2bl9yZXBv
Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDQsCi0gICAgICAgICAgICB0aW1lc3RhbXA9
MTUzODA1MjQwOCwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uMUB3ZWJr
aXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSAxIGRlc2NyaXB0aW9uLicsCi0g
ICAgICAgICkpCi0gICAgICAgIGNvbW1pdCA9IHN2bl9yZXBvLmNvbW1pdF9mb3JfaWQoMjM2NTQ0
LCBicmFuY2g9J3RydW5rJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQudXVpZCwg
MTUzODA1MjQwODAwKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb21taXQubWVzc2FnZSwg
Tm9uZSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9j
a19yZWRpcz1GYWtlU3RyaWN0UmVkaXMpCi0gICAgZGVmIHRlc3Rfc3Rhc2goc2VsZiwgcmVkaXM9
U3RyaWN0UmVkaXMpOgotICAgICAgICBnaXRfcmVwbyA9IE1vY2tTdGFzaFJlcG9zaXRvcnkuc2Fm
YXJpKHJlZGlzPXJlZGlzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhZmFyaScsIGdp
dF9yZXBvLmtleSkKLSAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnYmI2
YmRhNWY0NGRkMjRkJywgYnJhbmNoPSdtYXN0ZXInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbW1pdC51dWlkLCAxNTM3ODEwMjgxMDApCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzKQotICAgIGRlZiB0
ZXN0X2NvbGxpZGluZ190aW1lc3RhbXBzX3N0YXNoKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzKToK
LSAgICAgICAgZ2l0X3JlcG8gPSBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpcz1yZWRp
cygpKQotICAgICAgICBjb21taXQxID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnZTY0ODEwYTQw
JywgYnJhbmNoPSdtYXN0ZXInKQotICAgICAgICBjb21taXQyID0gZ2l0X3JlcG8uY29tbWl0X2Zv
cl9pZCgnN2JlNDA4NDI1JywgYnJhbmNoPSdtYXN0ZXInKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbWl0MS50aW1lc3RhbXAsIGNvbW1pdDIudGltZXN0YW1wKQotICAgICAgICBzZWxm
LmFzc2VydE5vdEVxdWFsKGNvbW1pdDEudXVpZCwgY29tbWl0Mi51dWlkKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUoY29tbWl0MSA8IGNvbW1pdDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y29tbWl0MS5vcmRlciwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQyLm9yZGVy
LCAxKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2Nr
X3JlZGlzPUZha2VTdHJpY3RSZWRpcykKLSAgICBkZWYgdGVzdF9icmFuY2hfc3Rhc2goc2VsZiwg
cmVkaXM9U3RyaWN0UmVkaXMpOgotICAgICAgICBnaXRfcmVwbyA9IE1vY2tTdGFzaFJlcG9zaXRv
cnkuc2FmYXJpKHJlZGlzPXJlZGlzKCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
U0NNRXhjZXB0aW9uKToKLSAgICAgICAgICAgIGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQoJ2Q4NTIy
MmQ5NDA3ZmQnLCBicmFuY2g9J21hc3RlcicpCi0gICAgICAgIGNvbW1pdCA9IGdpdF9yZXBvLmNv
bW1pdF9mb3JfaWQoJ2Q4NTIyMmQ5NDA3ZmQnLCBicmFuY2g9J3NhZmFyaS02MDYtYnJhbmNoJykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQudXVpZCwgMTUzNzU2MzM4MzAwKQotCi0g
ICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZh
a2VTdHJpY3RSZWRpcykKLSAgICBkZWYgdGVzdF9zdGFzaF9hbHJlYWR5X2NhY2hlZChzZWxmLCBy
ZWRpcz1TdHJpY3RSZWRpcyk6Ci0gICAgICAgIHJlZGlzX2luc3RhbmNlID0gcmVkaXMoKQotICAg
ICAgICBnaXRfcmVwbyA9IE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKHJlZGlzPXJlZGlzX2lu
c3RhbmNlKQotICAgICAgICByZWRpc19pbnN0YW5jZS5zZXQoCi0gICAgICAgICAgICAncmVwb3Np
dG9yeTonICsgZ2l0X3JlcG8udXJsICsgJy9jb21taXRzP3NpbmNlPTMzNjYxMGE0MGMzZmVjYjcy
ODg3MWUxMmNhMzE0ODJjYTcxNWIzODMmdW50aWw9cmVmcyUyRmhlYWRzJTJGbWFzdGVyJmxpbWl0
PTEnLAotICAgICAgICAgICAganNvbi5kdW1wcyhkaWN0KHZhbHVlcz1bXSwgc2l6ZT0wLCBpc0xh
c3RQYWdlPVRydWUpKSwKLSAgICAgICAgKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Nh
ZmFyaScsIGdpdF9yZXBvLmtleSkKLSAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0X2Zv
cl9pZCgnMzM2NjEwYTQnLCBicmFuY2g9J21hc3RlcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY29tbWl0LnV1aWQsIDE1Mzc1NjYzODYwMCkKKyAgICBkZWYgdGVzdF9zdm4oc2VsZik6Cisg
ICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHN2bl9y
ZXBvID0gV2ViS2l0UmVwb3NpdG9yeSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3dl
YmtpdCcsIHN2bl9yZXBvLmtleSkKKyAgICAgICAgICAgIGNvbW1pdCA9IHN2bl9yZXBvLmNvbW1p
dF9mb3JfaWQoNikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQsIDE2
MDE2Mzk5MDAwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0Lm1lc3NhZ2Us
ICc2dGggY29tbWl0JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LmJyYW5j
aCwgJ3RydW5rJykKKworICAgIGRlZiB0ZXN0X2JyYW5jaF9zdm4oc2VsZik6CisgICAgICAgIHdp
dGggTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHN2bl9yZXBvID0gV2Vi
S2l0UmVwb3NpdG9yeSgpCisgICAgICAgICAgICBjb21taXQgPSBzdm5fcmVwby5jb21taXRfZm9y
X2lkKDcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC51dWlkLCAxNjAxNjQw
OTAwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5tZXNzYWdlLCAnN3Ro
IGNvbW1pdCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5icmFuY2gsICdi
cmFuY2gtYScpCisKKyAgICBkZWYgdGVzdF9zdGFzaChzZWxmKToKKyAgICAgICAgd2l0aCBNb2Nr
TW9kZWxGYWN0b3J5LnNhZmFyaSgpIGFzIHNhZmFyaToKKyAgICAgICAgICAgIGdpdF9yZXBvID0g
U3Rhc2hSZXBvc2l0b3J5KCdodHRwczovL3t9Jy5mb3JtYXQoc2FmYXJpLnJlbW90ZSkpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYWZhcmknLCBnaXRfcmVwby5rZXkpCisgICAgICAg
ICAgICBjb21taXQgPSBnaXRfcmVwby5jb21taXRfZm9yX2lkKCcxYWJlMjViNDQzZTknKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQudXVpZCwgMTYwMTY2MzAwMDAwKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQuYnJhbmNoLCAnbWFpbicpCisKKyAgICBk
ZWYgdGVzdF9jb2xsaWRpbmdfdGltZXN0YW1wc19zdGFzaChzZWxmKToKKyAgICAgICAgd2l0aCBN
b2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpIGFzIHNhZmFyaToKKyAgICAgICAgICAgIGdpdF9yZXBv
ID0gU3Rhc2hSZXBvc2l0b3J5KCdodHRwczovL3t9Jy5mb3JtYXQoc2FmYXJpLnJlbW90ZSkpCisg
ICAgICAgICAgICBjb21taXQxID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnYmFlNWQxZTkwOTk5
JykKKyAgICAgICAgICAgIGNvbW1pdDIgPSBnaXRfcmVwby5jb21taXRfZm9yX2lkKCdkOGJjZTI2
ZmE2NWMnKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdDEudGltZXN0YW1w
LCBjb21taXQyLnRpbWVzdGFtcCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29t
bWl0MS51dWlkLCBjb21taXQyLnV1aWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29t
bWl0MSA8IGNvbW1pdDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdDEub3Jk
ZXIsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdDIub3JkZXIsIDEpCisK
KyAgICBkZWYgdGVzdF9icmFuY2hfc3Rhc2goc2VsZik6CisgICAgICAgIHdpdGggTW9ja01vZGVs
RmFjdG9yeS5zYWZhcmkoKSBhcyBzYWZhcmk6CisgICAgICAgICAgICBnaXRfcmVwbyA9IFN0YXNo
UmVwb3NpdG9yeSgnaHR0cHM6Ly97fScuZm9ybWF0KHNhZmFyaS5yZW1vdGUpKQorICAgICAgICAg
ICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnNjIxNjUyYWRkN2ZjJykKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQsIDE2MDE2NjYwMDAwMCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LmJyYW5jaCwgJ2JyYW5jaC1hJykKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3N1
aXRlX2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvc3VpdGVfY29udGV4dF91bml0dGVz
dC5weQkocmV2aXNpb24gMjczODM0KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvc3VpdGVfY29udGV4dF91bml0dGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OCw3ICsyOCw2IEBAIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW8KIGZy
b20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNv
bnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBv
cnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19tb2Rl
bF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVs
Lm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1NWTlJlcG9zaXRvcnkKIGZyb20gcmVzdWx0c2Ri
cHkubW9kZWwudGVzdF9jb250ZXh0IGltcG9ydCBFeHBlY3RhdGlvbnMKIGZyb20gcmVzdWx0c2Ri
cHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRl
c3RDYXNlCiAKQEAgLTM3LDEwICszNiwxMSBAQCBjbGFzcyBTdWl0ZUNvbnRleHRUZXN0KFdhaXRG
b3JEb2NrZXJUZXN0CiAgICAgS0VZU1BBQ0UgPSAnc3VpdGVfY29udGV4dF90ZXN0X2tleXNwYWNl
JwogCiAgICAgZGVmIGluaXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3Nh
bmRyYT1DYXNzYW5kcmFDb250ZXh0LCB0ZXN0X3Jlc3VsdHM9Tm9uZSk6Ci0gICAgICAgIGNhc3Nh
bmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpCi0gICAgICAgIHNlbGYu
bW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9
Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkK
LSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYubW9kZWwsIHRl
c3RfcmVzdWx0cz10ZXN0X3Jlc3VsdHMpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkucHJvY2Vz
c19yZXN1bHRzKHNlbGYubW9kZWwpCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZh
cmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIGNhc3NhbmRyYS5k
cm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpCisgICAgICAgICAgICBzZWxmLm1v
ZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNh
c3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkpCisg
ICAgICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMoc2VsZi5tb2RlbCwg
dGVzdF9yZXN1bHRzPXRlc3RfcmVzdWx0cykKKyAgICAgICAgICAgIE1vY2tNb2RlbEZhY3Rvcnku
cHJvY2Vzc19yZXN1bHRzKHNlbGYubW9kZWwpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9maW5kX2FsbChzZWxmLCBy
ZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgpAQCAtNjAsNyAr
NjAsOCBAQCBjbGFzcyBTdWl0ZUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXN0CiAgICAgICAg
IHJlc3VsdHMgPSBzZWxmLm1vZGVsLnN1aXRlX2NvbnRleHQuZmluZF9ieV9jb21taXQoCiAgICAg
ICAgICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5
bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpXSwKICAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQt
dGVzdHMnLCByZWNlbnQ9RmFsc2UsCi0gICAgICAgICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9y
eS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksIGVuZD1Nb2NrU1ZOUmVwb3NpdG9yeS53
ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MyksCisgICAgICAgICAgICBiZWdpbj0xNjAxNjYx
MDAwLAorICAgICAgICAgICAgZW5kPTE2MDE2NjMwMDAsCiAgICAgICAgICkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDIpCiAgICAgICAgIGZvciByZXN1bHRzX2Zvcl9j
b25maWcgaW4gcmVzdWx0cy52YWx1ZXMoKToKQEAgLTg2LDcgKzg3LDggQEAgY2xhc3MgU3VpdGVD
b250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzdAogICAgICAgICByZXN1bHRzID0gc2VsZi5tb2Rl
bC5zdWl0ZV9jb250ZXh0LmZpbmRfYnlfc3RhcnRfdGltZSgKICAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZs
YXZvcj0nd2sxJyldLAogICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAg
ICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0
MiksIGVuZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0Miks
CisgICAgICAgICAgICBiZWdpbj0xNjAxNjYwMDAwLAorICAgICAgICAgICAgZW5kPTE2MDE2NjAw
MDAsCiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKApAQCAtMTIwLDggKzEy
Miw4IEBAIGNsYXNzIFN1aXRlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3QKICAgICAgICAg
cmVzdWx0cyA9IHNlbGYubW9kZWwuc3VpdGVfY29udGV4dC5maW5kX2J5X3N0YXJ0X3RpbWUoCiAg
ICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywg
c3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpXSwKICAgICAgICAgICAgIHN1aXRlPSdsYXlv
dXQtdGVzdHMnLAotICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCku
Y29tbWl0X2Zvcl9pZCgyMzY1NDIpLAotICAgICAgICAgICAgZW5kPU1vY2tTVk5SZXBvc2l0b3J5
LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwKKyAgICAgICAgICAgIGJlZ2luPTE2MDE2
NjAwMDAsCisgICAgICAgICAgICBlbmQ9MTYwMTY2MDAwMCwKICAgICAgICAgKQogCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCkBAIC0xNTYsOCArMTU4LDggQEAgY2xhc3MgU3VpdGVDb250ZXh0
VGVzdChXYWl0Rm9yRG9ja2VyVGVzdAogICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5zdWl0
ZV9jb250ZXh0LmZpbmRfYnlfc3RhcnRfdGltZSgKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25z
PVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0n
d2sxJyldLAogICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBi
ZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCi0g
ICAgICAgICAgICBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgy
MzY1NDIpLAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwKKyAgICAgICAgICAgIGVuZD0x
NjAxNjYwMDAwLAogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3Rl
c3RfY29udGV4dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC90ZXN0X2NvbnRleHRfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDI3MzgzNCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL3Rlc3RfY29udGV4dF91bml0dGVzdC5weQkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3
ICsyOCw2IEBAIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW8KIGZyb20g
cmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRl
eHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQg
TW9ja0Nhc3NhbmRyYUNvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19tb2RlbF9m
YWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1v
Y2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1NWTlJlcG9zaXRvcnkKIGZyb20gcmVzdWx0c2RicHku
bW9kZWwudGVzdF9jb250ZXh0IGltcG9ydCBFeHBlY3RhdGlvbnMKIGZyb20gcmVzdWx0c2RicHku
bW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RD
YXNlCiAKQEAgLTM3LDEwICszNiwxMSBAQCBjbGFzcyBUZXN0Q29udGV4dFRlc3QoV2FpdEZvckRv
Y2tlclRlc3RDCiAgICAgS0VZU1BBQ0UgPSAndGVzdF9jb250ZXh0X3Rlc3Rfa2V5c3BhY2UnCiAK
ICAgICBkZWYgaW5pdF9kYXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJh
PUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlz
cGFjZT1zZWxmLktFWVNQQUNFKQotICAgICAgICBzZWxmLm1vZGVsID0gTW9ja01vZGVsRmFjdG9y
eS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxm
LktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkpCi0gICAgICAgIE1vY2tNb2RlbEZhY3Rv
cnkuYWRkX21vY2tfcmVzdWx0cyhzZWxmLm1vZGVsKQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5
LnByb2Nlc3NfcmVzdWx0cyhzZWxmLm1vZGVsKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rv
cnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBjYXNz
YW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxmLktFWVNQQUNFKQorICAgICAgICAgICAg
c2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3Nh
bmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRy
dWUpKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYu
bW9kZWwpCisgICAgICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0cyhzZWxm
Lm1vZGVsKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNv
bnRleHQpCiAgICAgZGVmIHRlc3RfbGlzdF9hbGwoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNh
c3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKQEAgLTg0LDggKzg0LDggQEAgY2xhc3MgVGVzdENv
bnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXN0QwogICAgICAgICByZXN1bHRzID0gc2VsZi5tb2Rl
bC50ZXN0X2NvbnRleHQuZmluZF9ieV9jb21taXQoCiAgICAgICAgICAgICBjb25maWd1cmF0aW9u
cz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9
J3drMScpXSwKICAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCB0ZXN0PSdmYXN0L2Vu
Y29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwnLCByZWNlbnQ9RmFsc2UsCi0gICAgICAgICAgICBi
ZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCi0g
ICAgICAgICAgICBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgy
MzY1NDMpLAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MTAwMCwKKyAgICAgICAgICAgIGVuZD0x
NjAxNjYzMDAwLAogICAgICAgICApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3Vs
dHMpLCAyKQogICAgICAgICBmb3IgcmVzdWx0c19mb3JfY29uZmlnIGluIHJlc3VsdHMudmFsdWVz
KCk6CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9tb2RlbC91cGxvYWRfY29udGV4dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC91cGxvYWRfY29u
dGV4dF91bml0dGVzdC5weQkocmV2aXNpb24gMjczODM0KQorKysgVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdXBsb2FkX2NvbnRleHRfdW5pdHRl
c3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzQsMTEgKzM0LDEyIEBAIGNsYXNzIFVwbG9hZENvbnRleHRUZXN0KFdhaXRG
b3JEb2NrZXJUZXMKICAgICBLRVlTUEFDRSA9ICd1cGxvYWRfY29udGV4dF90ZXN0X2tleXNwYWNl
JwogCiAgICAgZGVmIGluaXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3Nh
bmRyYT1DYXNzYW5kcmFDb250ZXh0LCBhc3luY19wcm9jZXNzaW5nPUZhbHNlKToKLSAgICAgICAg
Y2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAgICAg
c2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKAotICAgICAgICAgICAgcmVkaXM9
cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNFLCBjcmVh
dGVfa2V5c3BhY2U9VHJ1ZSksCi0gICAgICAgICAgICBhc3luY19wcm9jZXNzaW5nPWFzeW5jX3By
b2Nlc3NpbmcsCi0gICAgICAgICkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFy
aSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgY2Fzc2FuZHJhLmRy
b3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKKyAgICAgICAgICAgIHNlbGYubW9k
ZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZSgKKyAgICAgICAgICAgICAgICByZWRpcz1yZWRp
cygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNyZWF0ZV9r
ZXlzcGFjZT1UcnVlKSwKKyAgICAgICAgICAgICAgICBhc3luY19wcm9jZXNzaW5nPWFzeW5jX3By
b2Nlc3NpbmcsCisgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF96aXBwaW5nKHNlbGYpOgog
ICAgICAgICB6aXBwZWRfYnl0ZXMgPSBVcGxvYWRDb250ZXh0LnRvX3ppcCgnc29tZXN0cmluZycg
KiAxMDApCkBAIC04OSw3ICs5MCw3IEBAIGNsYXNzIFVwbG9hZENvbnRleHRUZXN0KFdhaXRGb3JE
b2NrZXJUZXMKICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5k
cmE9Y2Fzc2FuZHJhKQogICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMo
c2VsZi5tb2RlbCkKIAotICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC51cGxvYWRfY29udGV4
dC5maW5kX3Rlc3RfcmVzdWx0cyhjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9y
bT0naU9TJywgaXNfc2ltdWxhdG9yPVRydWUpXSwgc3VpdGU9J2xheW91dC10ZXN0cycsIGJyYW5j
aD0nc2FmYXJpLTYwNi1icmFuY2gnLCByZWNlbnQ9VHJ1ZSkKKyAgICAgICAgcmVzdWx0cyA9IHNl
bGYubW9kZWwudXBsb2FkX2NvbnRleHQuZmluZF90ZXN0X3Jlc3VsdHMoY29uZmlndXJhdGlvbnM9
W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIGlzX3NpbXVsYXRvcj1UcnVlKV0sIHN1aXRl
PSdsYXlvdXQtdGVzdHMnLCBicmFuY2g9J2JyYW5jaC1hJywgcmVjZW50PVRydWUpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVuKHJlc3VsdHMpKQogICAgICAgICBmb3IgY29uZmlnLCB2
YWx1ZXMgaW4gcmVzdWx0cy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b25maWcsIENvbmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIGlzX3NpbXVsYXRvcj1UcnVlKSkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3Zp
ZXcvYXJjaGl2ZV92aWV3X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvYXJjaGl2ZV92aWV3X3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyNzM4MzQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L2FyY2hpdmVfdmlld191bml0dGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Miw3ICsyMiw2IEBACiAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBqc29uCi1pbXBvcnQgdGltZQog
CiBmcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCiBmcm9tIHJlc3VsdHNkYnB5
LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQKQEAgLTMwLDEwICsyOSw4IEBAIGZyb20g
cmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW8KIGZyb20gcmVzdWx0c2RicHkubW9k
ZWwuY29uZmlndXJhdGlvbl9jb250ZXh0X3VuaXR0ZXN0IGltcG9ydCBDb25maWd1cmF0aW9uQ29u
dGV4dFRlc3QKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBp
bXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19t
b2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1N0YXNoUmVwb3NpdG9yeSwgTW9ja1NWTlJl
cG9zaXRvcnkKIGZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2Fz
ZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCiBmcm9tIHJlc3VsdHNkYnB5LnZpZXcudmll
d19yb3V0ZXNfdW5pdHRlc3QgaW1wb3J0IFdlYlNpdGVUZXN0Q2FzZQotZnJvbSBzZWxlbml1bS53
ZWJkcml2ZXIuc3VwcG9ydC5zZWxlY3QgaW1wb3J0IFNlbGVjdAogCiAKIGNsYXNzIEFyY2hpdmVW
aWV3VW5pdHRlc3QoV2ViU2l0ZVRlc3RDYXNlKToKQEAgLTQzLDcgKzQwLDIzIEBAIGNsYXNzIEFy
Y2hpdmVWaWV3VW5pdHRlc3QoV2ViU2l0ZVRlc3RDYXMKICAgICAgICAgICAgIGRhdGE9ZGljdCgK
ICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29uZmlndXJhdGlvbkNv
bnRleHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlvbi5FbmNvZGVyKSwK
ICAgICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKLSAgICAgICAgICAgICAgICBj
b21taXRzPWpzb24uZHVtcHMoW01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zv
cl9pZCgnYmI2YmRhNWYnKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9p
ZCgyMzY1NDIpXSwgY2xzPUNvbW1pdC5FbmNvZGVyKSwKKyAgICAgICAgICAgICAgICBjb21taXRz
PWpzb24uZHVtcHMoW2RpY3QoCisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9J3Nh
ZmFyaScsCisgICAgICAgICAgICAgICAgICAgIGlkPSdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3
YWJiNzdmNjlmYWI4MmZjJywKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoPSdtYWluJywKKyAg
ICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NjgwMDAsCisgICAgICAgICAgICAgICAg
ICAgIG9yZGVyPTEsCisgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj0namJlZGFyZEBhcHBs
ZS5jb20nLAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdQYXRjaCBTZXJpZXNcbicsCisg
ICAgICAgICAgICAgICAgKSwgZGljdCgKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9p
ZD0nd2Via2l0JywKKyAgICAgICAgICAgICAgICAgICAgaWQ9JzYnLAorICAgICAgICAgICAgICAg
ICAgICBicmFuY2g9J3RydW5rJywKKyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2
NjUxMDAsCisgICAgICAgICAgICAgICAgICAgIG9yZGVyPTAsCisgICAgICAgICAgICAgICAgICAg
IGNvbW1pdHRlcj0namJlZGFyZEBhcHBsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICBtZXNz
YWdlPSc2dGggY29tbWl0XG4nLAorICAgICAgICAgICAgICAgICldLCBjbHM9Q29tbWl0LkVuY29k
ZXIpLAogICAgICAgICAgICAgKSwKICAgICAgICAgICAgIGZpbGVzPWRpY3QoZmlsZT1iYXNlNjQu
YjY0ZGVjb2RlKE1vY2tNb2RlbEZhY3RvcnkuQVJDSElWRV9aSVApKSwKICAgICAgICAgKQpJbmRl
eDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9j
b21taXRfdmlld191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L2NvbW1pdF92aWV3X3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiAyNzM4MzQpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS92aWV3L2NvbW1pdF92aWV3X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzIz
LDggQEAKIGltcG9ydCB0aW1lCiAKIGZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVk
aXMKLWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAogZnJv
bSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fz
c2FuZHJhQ29udGV4dAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1w
b3J0IE1vY2tTdGFzaFJlcG9zaXRvcnksIE1vY2tTVk5SZXBvc2l0b3J5Citmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQogZnJv
bSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0
Rm9yRG9ja2VyVGVzdENhc2UKIGZyb20gcmVzdWx0c2RicHkudmlldy52aWV3X3JvdXRlc191bml0
dGVzdCBpbXBvcnQgV2ViU2l0ZVRlc3RDYXNlCiBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5zdXBw
b3J0LnNlbGVjdCBpbXBvcnQgU2VsZWN0CkBAIC0zMywxMCArMzIsMTggQEAgZnJvbSBzZWxlbml1
bS53ZWJkcml2ZXIuc3VwcG9ydC5zZWxlY3QgaQogCiBjbGFzcyBDb21taXRWaWV3VW5pdHRlc3Qo
V2ViU2l0ZVRlc3RDYXNlKToKICAgICBkZWYgcmVnaXN0ZXJfYWxsX2NvbW1pdHMoc2VsZiwgY2xp
ZW50KToKLSAgICAgICAgZm9yIHJlcG8gaW4gW01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCks
IE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpXToKKyAgICAgICAgZm9yIG5hbWUsIHJlcG8gaW4g
ZGljdChzYWZhcmk9TW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgd2Via2l0PU1vY2tNb2RlbEZh
Y3Rvcnkud2Via2l0KCkpLml0ZW1zKCk6CiAgICAgICAgICAgICBmb3IgY29tbWl0cyBpbiByZXBv
LmNvbW1pdHMudmFsdWVzKCk6CiAgICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRz
OgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgY2xpZW50LnBvc3Qo
c2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3JlZ2lzdGVyJywgZGF0YT1Db21taXQuRW5jb2Rlcigp
LmRlZmF1bHQoY29tbWl0KSkuc3RhdHVzX2NvZGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMjAwLCBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvcmVn
aXN0ZXInLCBkYXRhPWRpY3QoCisgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lk
PW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBpZD1jb21taXQucmV2aXNpb24gb3IgY29t
bWl0Lmhhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2g9Y29tbWl0LmJyYW5jaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD1jb21taXQudGltZXN0YW1wLAorICAg
ICAgICAgICAgICAgICAgICAgICAgb3JkZXI9Y29tbWl0Lm9yZGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0dGVyPWNvbW1pdC5hdXRob3IuZW1haWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlPWNvbW1pdC5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICApKS5z
dGF0dXNfY29kZSkKIAogICAgIGRlZiB1bnBhY2tfY29tbWl0X3RhYmxlKHNlbGYsIGNvbW1pdF90
YWJsZSk6CiAgICAgICAgIGhlYWRlcnMgPSBjb21taXRfdGFibGUuZmluZF9lbGVtZW50c19ieV90
YWdfbmFtZSgndGgnKQpAQCAtODUsNyArOTIsNyBAQCBjbGFzcyBDb21taXRWaWV3VW5pdHRlc3Qo
V2ViU2l0ZVRlc3RDYXNlCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3dlYmtpdCcsIGNvbW1pdHMp
CiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4oY29tbWl0c1snc2FmYXJpJ10pKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxlbihjb21taXRzWyd3ZWJraXQnXSkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgbGVuKGNvbW1pdHNbJ3dlYmtpdCddKSkKIAogICAgICAg
ICByb3dzID0gY29tbWl0X3RhYmxlLmZpbmRfZWxlbWVudF9ieV90YWdfbmFtZSgndGJvZHknKS5m
aW5kX2VsZW1lbnRzX2J5X3RhZ19uYW1lKCd0cicpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1
YWwoCkBAIC0xMjEsMjQgKzEyOCw4IEBAIGNsYXNzIENvbW1pdFZpZXdVbml0dGVzdChXZWJTaXRl
VGVzdENhc2UKICAgICAgICAgc2VsZi5hc3NlcnRJbignc2FmYXJpJywgY29tbWl0cykKICAgICAg
ICAgc2VsZi5hc3NlcnRJbignd2Via2l0JywgY29tbWl0cykKIAotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEsIGxlbihjb21taXRzWydzYWZhcmknXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoNSwgbGVuKGNvbW1pdHNbJ3dlYmtpdCddKSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQotICAgIEBXZWJTaXRlVGVzdENhc2UuZGVjb3Jh
dG9yKCkKLSAgICBkZWYgdGVzdF9yYWRhcl9zdHJpbmdzKHNlbGYsIGRyaXZlciwgY2xpZW50LCAq
Kmt3YXJncyk6Ci0gICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAg
ICAgICBkcml2ZXIuZ2V0KHNlbGYuVVJMICsgJy9jb21taXRzP2lkPTMzNjYxMGE0JykKLQotICAg
ICAgICB3aGlsZSBub3QgZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZSgnY29tbWl0
LXRhYmxlJyk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKC4xKQotICAgICAgICBjb21taXRfdGFi
bGUgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScpCi0K
LSAgICAgICAgY29tbWl0cyA9IHNlbGYudW5wYWNrX2NvbW1pdF90YWJsZShjb21taXRfdGFibGUp
Ci0gICAgICAgIGNoYW5nZWxvZyA9IGNvbW1pdHNbJ3NhZmFyaSddWzBdLmZpbmRfZWxlbWVudF9i
eV90YWdfbmFtZSgnZGl2JykKLQotICAgICAgICByYWRhciA9ICc8cmRhcjovL3Byb2JsZW0vOTk5
OTk5OTk+JwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZWxvZy50ZXh0WzpsZW4ocmFk
YXIpXSwgcmFkYXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKGNvbW1pdHNbJ3Nh
ZmFyaSddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsZW4oY29tbWl0c1snd2Via2l0
J10pKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2Nr
X3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRl
eHQpCiAgICAgQFdlYlNpdGVUZXN0Q2FzZS5kZWNvcmF0b3IoKQpAQCAtMTU2LDcgKzE0Nyw3IEBA
IGNsYXNzIENvbW1pdFZpZXdVbml0dGVzdChXZWJTaXRlVGVzdENhc2UKICAgICAgICAgc2VsZi5h
c3NlcnRJbignd2Via2l0JywgY29tbWl0cykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUs
IGxlbihjb21taXRzWydzYWZhcmknXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVu
KGNvbW1pdHNbJ3dlYmtpdCddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsZW4oY29t
bWl0c1snd2Via2l0J10pKQogCiAgICAgICAgIGNvbnRyb2xzID0gc2VsZi5maW5kX2lucHV0X3dp
dGhfbmFtZShkcml2ZXIsICdMaW1pdDonKS5maW5kX2VsZW1lbnRzX2J5X3RhZ19uYW1lKCdpbnB1
dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVuKGNvbnRyb2xzKSkKQEAgLTE4NCwx
NCArMTc1LDE0IEBAIGNsYXNzIENvbW1pdFZpZXdVbml0dGVzdChXZWJTaXRlVGVzdENhc2UKICAg
ICBAV2ViU2l0ZVRlc3RDYXNlLmRlY29yYXRvcigpCiAgICAgZGVmIHRlc3Rfb25lX2xpbmVfc3dp
dGNoKHNlbGYsIGRyaXZlciwgY2xpZW50LCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYucmVnaXN0
ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAgICAgICBkcml2ZXIuZ2V0KHNlbGYuVVJMICsgJy9j
b21taXRzP2lkPTdiZTQwODQyJykKKyAgICAgICAgZHJpdmVyLmdldChzZWxmLlVSTCArICcvY29t
bWl0cz9pZD1kOGJjZTI2ZmE2NWMnKQogCiAgICAgICAgIHdoaWxlIG5vdCBkcml2ZXIuZmluZF9l
bGVtZW50c19ieV9jbGFzc19uYW1lKCdjb21taXQtdGFibGUnKToKICAgICAgICAgICAgIHRpbWUu
c2xlZXAoLjEpCiAgICAgICAgIGNvbW1pdF90YWJsZSA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlf
Y2xhc3NfbmFtZSgnY29tbWl0LXRhYmxlJykKIAotICAgICAgICBsaW5lXzEgPSB1J0NoYW5nZSA0
IFx1MjAxNCAoUGFydCAyKSBkZXNjcmlwdGlvbi4nCi0gICAgICAgIGxpbmVfMiA9ICdSZXZpZXdl
ZCBieSBwZXJzb24uJworICAgICAgICBsaW5lXzEgPSB1J1BhdGNoIFNlcmllcycKKyAgICAgICAg
bGluZV8yID0gJycKIAogICAgICAgICBjb21taXRzID0gc2VsZi51bnBhY2tfY29tbWl0X3RhYmxl
KGNvbW1pdF90YWJsZSkKICAgICAgICAgY2hhbmdlbG9nID0gY29tbWl0c1snc2FmYXJpJ11bMF0u
ZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCdkaXYnKQpAQCAtMjI5LDExICsyMjAsMTEgQEAgY2xh
c3MgQ29tbWl0Vmlld1VuaXR0ZXN0KFdlYlNpdGVUZXN0Q2FzZQogICAgICAgICBzZWxmLmFzc2Vy
dEluKCd3ZWJraXQnLCBjb21taXRzKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVu
KGNvbW1pdHNbJ3NhZmFyaSddKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4oY29t
bWl0c1snd2Via2l0J10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGxlbihjb21taXRz
Wyd3ZWJraXQnXSkpCiAKICAgICAgICAgY29udHJvbHMgPSBzZWxmLmZpbmRfaW5wdXRfd2l0aF9u
YW1lKGRyaXZlciwgJ0JyYW5jaCcpLmZpbmRfZWxlbWVudHNfYnlfdGFnX25hbWUoJ3NlbGVjdCcp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGNvbnRyb2xzKSkKLSAgICAgICAgU2Vs
ZWN0KGNvbnRyb2xzWzBdKS5zZWxlY3RfYnlfdmlzaWJsZV90ZXh0KCdzYWZhcmktNjA2LWJyYW5j
aCcpCisgICAgICAgIFNlbGVjdChjb250cm9sc1swXSkuc2VsZWN0X2J5X3Zpc2libGVfdGV4dCgn
YnJhbmNoLWEnKQogCiAgICAgICAgIHNlbGYudG9nZ2xlX2RyYXdlcihkcml2ZXIsIGFzc2VydF9k
aXNwbGF5ZWQ9RmFsc2UpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdmlld19yb3V0ZXNfdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy92
aWV3X3JvdXRlc191bml0dGVzdC5weQkocmV2aXNpb24gMjczODM0KQorKysgVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy92aWV3X3JvdXRlc191bml0
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjAsOSArMjAsNiBAQAogIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgbW9jawotaW1wb3J0IG9zCi1pbXBvcnQg
cmVxdWVzdHMKIGltcG9ydCB0aW1lCiAKIGZyb20gY29udHJvbGxlci5hcGlfcm91dGVzIGltcG9y
dCBBUElSb3V0ZXMKQEAgLTMxLDEzICsyOCwxMiBAQCBmcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RS
ZWRpcwogZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LmZsYXNrX3Rlc3RjYXNlIGltcG9y
dCBGbGFza1Rlc3RDYXNlCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0
IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fz
c2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0Citmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQogZnJv
bSByZXN1bHRzZGJweS5tb2RlbC5tb2RlbCBpbXBvcnQgTW9kZWwKLWZyb20gcmVzdWx0c2RicHku
bW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZO
UmVwb3NpdG9yeQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5yZXBvc2l0b3J5IGltcG9ydCBTdGFz
aFJlcG9zaXRvcnksIFdlYktpdFJlcG9zaXRvcnkKIGZyb20gcmVzdWx0c2RicHkubW9kZWwud2Fp
dF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCiBmcm9t
IHJlc3VsdHNkYnB5LnZpZXcudmlld19yb3V0ZXMgaW1wb3J0IFZpZXdSb3V0ZXMKIAotZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IG1vY2tzCi0KIAogY2xhc3MgV2ViU2l0ZVRlc3RDYXNlKEZsYXNr
VGVzdENhc2UsIFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6CiAgICAgS0VZU1BBQ0UgPSAnd2ViX3Np
dGVfdGVzdGNhc2Vfa2V5c3BhY2UnCkBAIC01OCwxOCArNTQsMjIgQEAgY2xhc3MgV2ViU2l0ZVRl
c3RDYXNlKEZsYXNrVGVzdENhc2UsIFdhaQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNl
dHVwX3dlYnNlcnZlcihjbHMsIGFwcCwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNz
YW5kcmFDb250ZXh0KToKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9
Y2xzLktFWVNQQUNFKQotICAgICAgICByZWRpc19pbnN0YW5jZSA9IHJlZGlzKCkKLQotICAgICAg
ICBtb2RlbCA9IE1vZGVsKAotICAgICAgICAgICAgcmVkaXM9cmVkaXNfaW5zdGFuY2UsIGNhc3Nh
bmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1
ZSksCi0gICAgICAgICAgICByZXBvc2l0b3JpZXM9W01vY2tTVk5SZXBvc2l0b3J5LndlYmtpdChy
ZWRpcz1yZWRpc19pbnN0YW5jZSksIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKHJlZGlzPXJl
ZGlzX2luc3RhbmNlKV0sCi0gICAgICAgICkKLSAgICAgICAgYXBpX3JvdXRlcyA9IEFQSVJvdXRl
cyhtb2RlbD1tb2RlbCwgaW1wb3J0X25hbWU9X19uYW1lX18pCi0gICAgICAgIHZpZXdfcm91dGVz
ID0gVmlld1JvdXRlcyhtb2RlbD1tb2RlbCwgY29udHJvbGxlcj1hcGlfcm91dGVzLCBpbXBvcnRf
bmFtZT1fX25hbWVfXykKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBN
b2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5
c3BhY2Uoa2V5c3BhY2U9Y2xzLktFWVNQQUNFKQorICAgICAgICAgICAgcmVkaXNfaW5zdGFuY2Ug
PSByZWRpcygpCisKKyAgICAgICAgICAgIG1vZGVsID0gTW9kZWwoCisgICAgICAgICAgICAgICAg
cmVkaXM9cmVkaXNfaW5zdGFuY2UsIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktF
WVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSksCisgICAgICAgICAgICAgICAgcmVwb3NpdG9y
aWVzPVsKKyAgICAgICAgICAgICAgICAgICAgV2ViS2l0UmVwb3NpdG9yeSgpLAorICAgICAgICAg
ICAgICAgICAgICBTdGFzaFJlcG9zaXRvcnkoJ2h0dHBzOi8vYml0YnVja2V0LmV4YW1wbGUuY29t
L3Byb2plY3RzL1NBRkFSSS9yZXBvcy9zYWZhcmknKSwKKyAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgKQorICAgICAgICAgICAgYXBpX3JvdXRlcyA9IEFQSVJvdXRlcyhtb2RlbD1tb2Rl
bCwgaW1wb3J0X25hbWU9X19uYW1lX18pCisgICAgICAgICAgICB2aWV3X3JvdXRlcyA9IFZpZXdS
b3V0ZXMobW9kZWw9bW9kZWwsIGNvbnRyb2xsZXI9YXBpX3JvdXRlcywgaW1wb3J0X25hbWU9X19u
YW1lX18pCiAKLSAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChhcGlfcm91dGVzKQotICAg
ICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KHZpZXdfcm91dGVzKQorICAgICAgICAgICAgYXBw
LnJlZ2lzdGVyX2JsdWVwcmludChhcGlfcm91dGVzKQorICAgICAgICAgICAgYXBwLnJlZ2lzdGVy
X2JsdWVwcmludCh2aWV3X3JvdXRlcykKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBkZWNv
cmF0b3IoY2xzKToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422380</attachid>
            <date>2021-03-05 10:20:21 -0800</date>
            <delta_ts>2021-03-08 10:19:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222754-20210305102019.patch</filename>
            <type>text/plain</type>
            <size>174565</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3Mzk4MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY2IEBACisyMDIxLTAzLTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIEFkb3B0IHdlYmtpdHNjbXB5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3NTQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzc1MDQ5MjA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkb3B0aW5nIHdlYmtpdHNjbXB5J3MgcmVtb3RlIHJlcG9zaXRvcmll
cyByZXF1aXJlcyB1c2luZyB0aGUgdW5pdCB0ZXN0aW5nIHBhcmFkaWdtcyBmcm9tCisgICAgICAg
IHRob3NlIG9iamVjdHMsIHdoaWNoIHJlcXVpcmVzIGNvbnNpZGVyYWJsZSBhZGp1c3RtZW50IG9m
IHRlc3RpbmcgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5OiBCdW1wIHZlcnNpb24sIGluY2x1ZGUgd2Via2l0c2Nt
cHkuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
Y29udHJvbGxlci9hcmNoaXZlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jaV9jb250
cm9sbGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXIucHk6CisgICAgICAg
IChDb21taXRDb250cm9sbGVyLnJlZ2lzdGVyKTogVXNlIHdlYmtpdHNjbXB5J3MgZXhjZXB0aW9u
cy4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ29tbWl0
Q29udHJvbGxlclRlc3QudGVzdF9yZWdpc3Rlcl92aWFfcG9zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9m
YWlsdXJlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9zdWl0ZV9jb250cm9sbGVyX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L2NvbnRyb2xsZXIvdGVzdF9jb250cm9sbGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBs
b2FkX2NvbnRyb2xsZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0X3VuaXR0ZXN0LnB5
OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21v
ZGVsL2NpX2NvbnRleHRfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0X2NvbnRleHQucHk6CisgICAgICAg
IChDb21taXRDb250ZXh0LmJyYW5jaF9rZXlzX2Zvcl9jb21taXRzKToKKyAgICAgICAgKENvbW1p
dENvbnRleHQuZmluZF9jb21taXRzX2J5X2lkKTogZGVmYXVsdF9icmFuY2ggaXMgbm93IGFuIGlu
c3RhbmNlIHZhcmlhYmxlLgorICAgICAgICAoQ29tbWl0Q29udGV4dC5maW5kX2NvbW1pdHNfYnlf
dXVpZCk6IERpdHRvLgorICAgICAgICAoQ29tbWl0Q29udGV4dC5maW5kX2NvbW1pdHNfYnlfdGlt
ZXN0YW1wKTogRGl0dG8uCisgICAgICAgIChDb21taXRDb250ZXh0LmZpbmRfY29tbWl0c19pbl9y
YW5nZSk6IERpdHRvLgorICAgICAgICAoQ29tbWl0Q29udGV4dC5zaWJsaW5nX2NvbW1pdHMpOiBE
aXR0by4KKyAgICAgICAgKENvbW1pdENvbnRleHQucmVnaXN0ZXJfY29tbWl0X3dpdGhfcmVwb19h
bmRfaWQpOiB3ZWJraXRzY21weSByZXBvc2l0b3JpZXMgY29tcHV0ZSBicmFuY2guCisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY29tbWl0
X2NvbnRleHRfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvZmFpbHVyZV9jb250ZXh0X3VuaXR0ZXN0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21v
Y2tfbW9kZWxfZmFjdG9yeS5weToKKyAgICAgICAgKE1vY2tNb2RlbEZhY3RvcnkpOgorICAgICAg
ICAoTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkpOiBVc2Ugc2hhcmVkIHdlYmtpdHNjbXB5IG1vY2tz
LgorICAgICAgICAoTW9ja01vZGVsRmFjdG9yeS53ZWJraXQpOiBEaXR0by4KKyAgICAgICAgKE1v
Y2tNb2RlbEZhY3RvcnkuY3JlYXRlKTogVGltZXN0YW1wcyBpbiB3ZWJraXRzY21weSBhcmUganVz
dCBpbnRlZ2Vycy4KKyAgICAgICAgKE1vY2tNb2RlbEZhY3RvcnkuaXRlcmF0ZV9hbGxfY29tbWl0
cyk6IHdlYmtpdHNjbXB5IGFuZCByZXN1bHRzZGJweSBoYXZlIHNsaWdodGx5IGRpZmZlcmVudAor
ICAgICAgICBjb21taXQgcmVwcmVzZW50YXRpb25zLCBzbyB0aGUgbWVjaGFuaWNzIG9mIHJlZ2lz
dGVyaW5nIGNvbW1pdHMgYXJlIGRpZmZlcmVudC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmll
cy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2NrX3JlcG9zaXRvcnkucHk6IFJlbW92
ZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvbW9kZWxfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeS5weToKKyAgICAgICAgKFJlcG9z
aXRvcnkpOgorICAgICAgICAoUmVwb3NpdG9yeS5fX2luaXRfXyk6IGRlZmF1bHRfYnJhbmNoIGlz
IG5vdyBhbiBpbnN0YW5jZSB2YXJpYWJsZS4KKyAgICAgICAgKFJlcG9zaXRvcnkuY29tbWl0X2Zv
cl9pZCk6IHdlYmtpdHNjbXB5IGRvZXMgbm90IHJlcXVpcmUgdGhlIGJyYW5jaCwgZ2l2ZW4gYSBo
YXNoIG9yIHJldmlzaW9uLgorICAgICAgICAoU3Rhc2hSZXBvc2l0b3J5KTogUmV0cmlldmUgY29t
bWl0IGZyb20gd2Via2l0c2NtcHkncyByZW1vdGUgQml0QnVja2V0IG9iamVjdC4KKyAgICAgICAg
KFdlYktpdFJlcG9zaXRvcnkpOiBIYXJkLWNvZGUgV2ViS2l0J3MgU3VidmVyc2lvbiBVUkwuIFRo
aXMgaXMgdGVtcG9yYXJ5LCBzaW5jZSBXZWJLaXQgd2lsbCBzaG9ydGx5CisgICAgICAgIGJlY29t
ZSBhIEdpdEh1YiByZXBvc2l0b3J5LgorICAgICAgICAoU0NNRXhjZXB0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKEhUVFBSZXBvc2l0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFNWTlJlcG9zaXRv
cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0UmVwb3NpdG9yeS5jb21taXRfZm9yX2lkLmRp
ZmZfY2hhbmdlbG9ncyk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeV91bml0dGVzdC5weToKKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9zdWl0
ZV9jb250ZXh0X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3Rlc3RfY29udGV4dF91bml0dGVzdC5weToKKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC91cGxv
YWRfY29udGV4dF91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L2FyY2hpdmVfdmlld191bml0dGVzdC5weToKKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L2NvbW1p
dF92aWV3X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdmlld19yb3V0ZXNfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvc2V0dXAucHk6IEJ1bXAgdmVyc2lvbi4KKwog
MjAyMS0wMy0wNSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2V3c10gUnVuIGV3cyB1bml0LXRlc3RzIHdpdGggUHl0aG9uIDMKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5CShyZXZpc2lvbiAyNzM5ODAp
CisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9zZXR1cC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBzZXR1cCgKICAgICAgICAgJ3htbHRvZGljdCcsCiAg
ICAgICAgICdzZWxlbml1bScsCiAgICAgICAgICd3ZWJraXRjb3JlcHknLAorICAgICAgICAnd2Vi
a2l0c2NtcHknLAogICAgIF0sCiAgICAgaW5jbHVkZV9wYWNrYWdlX2RhdGE9VHJ1ZSwKICAgICB6
aXBfc2FmZT1GYWxzZSwKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyNzM5
ODApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9f
X2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQCBpbXBvcnQgc3lzCiBk
ZWYgX21heWJlX2FkZF93ZWJraXRfcHl0aG9uX2xpYnJhcnlfcGF0aHMoKToKICAgICAjIEhvcGVm
dWxseSB3ZSdyZSBiZXNpZGUgd2Via2l0KnB5IGxpYnJhcmllcywgb3RoZXJ3aXNlIHdlYmtpdCpw
eSB3aWxsIG5lZWQgdG8gYmUgaW5zdGFsbGVkLgogICAgIGxpYnJhcmllc19wYXRoID0gb3MucGF0
aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSkpKQotICAgIGZvciBsaWJyYXJ5IGluIFsnd2Via2l0Y29yZXB5JywgJ3dlYmtp
dGZsYXNrcHknXToKKyAgICBmb3IgbGlicmFyeSBpbiBbJ3dlYmtpdGNvcmVweScsICd3ZWJraXRz
Y21weScsICd3ZWJraXRmbGFza3B5J106CiAgICAgICAgIGxpYnJhcnlfcGF0aCA9IG9zLnBhdGgu
am9pbihsaWJyYXJpZXNfcGF0aCwgbGlicmFyeSkKICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihs
aWJyYXJ5X3BhdGgpIGFuZCBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihsaWJyYXJ5X3BhdGgs
IGxpYnJhcnkpKSBhbmQgbGlicmFyeV9wYXRoIG5vdCBpbiBzeXMucGF0aDoKICAgICAgICAgICAg
IHN5cy5wYXRoLmluc2VydCgwLCBsaWJyYXJ5X3BhdGgpCkBAIC00NCw2ICs0NCw2IEBAIGV4Y2Vw
dCBJbXBvcnRFcnJvcjoKICAgICAgICAgIlBsZWFzZSBpbnN0YWxsIHdlYmtpdGNvcmVweSB3aXRo
IGBwaXAgaW5zdGFsbCB3ZWJraXRjb3JlcHkgLS1leHRyYS1pbmRleC11cmwgPHBhY2thZ2UgaW5k
ZXggVVJMPmAiCiAgICAgKQogCi12ZXJzaW9uID0gVmVyc2lvbigxLCAxLCAzKQordmVyc2lvbiA9
IFZlcnNpb24oMiwgMCwgMCkKIAogbmFtZSA9ICdyZXN1bHRzZGJweScKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXJjaGl2
ZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXJjaGl2ZV9jb250cm9s
bGVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzM5ODApCisrKyBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2FyY2hpdmVfY29udHJvbGxl
cl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOCwxNSArMjgsMTQgQEAgaW1wb3J0IHJlcXVlc3RzCiBmcm9t
IGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCiBmcm9tIHJlZGlzIGltcG9ydCBTdHJp
Y3RSZWRpcwogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQ
SVJvdXRlcwotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0
CiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmln
dXJhdGlvbgogZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LmZsYXNrX3Rlc3RjYXNlIGlt
cG9ydCBGbGFza1Rlc3RDYXNlCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250
ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbmZp
Z3VyYXRpb25fY29udGV4dF91bml0dGVzdCBpbXBvcnQgQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0
CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1v
Y2tDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFj
dG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2Nr
X3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTdGFzaFJlcG9zaXRvcnksIE1vY2tTVk5SZXBvc2l0b3J5
CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vZGVsIGltcG9ydCBNb2RlbAorZnJvbSByZXN1bHRz
ZGJweS5tb2RlbC5yZXBvc2l0b3J5IGltcG9ydCBTdGFzaFJlcG9zaXRvcnksIFdlYktpdFJlcG9z
aXRvcnkKIGZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBp
bXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCiAKIApAQCAtNDcsOCArNDYsMTAgQEAgY2xhc3Mg
QXJjaGl2ZUNvbnRyb2xsZXJVbml0dGVzdChGbGFza1RlcwogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5k
cmE9Q2Fzc2FuZHJhQ29udGV4dCk6CiAgICAgICAgIHJlZGlzX2luc3RhbmNlID0gcmVkaXMoKQot
ICAgICAgICBzYWZhcmkgPSBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpc19pbnN0YW5j
ZSkKLSAgICAgICAgd2Via2l0ID0gTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KHJlZGlzX2luc3Rh
bmNlKQorCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVs
RmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHNhZmFyaSA9IFN0YXNoUmVwb3NpdG9yeSgn
aHR0cHM6Ly9iaXRidWNrZXQuZXhhbXBsZS5jb20vcHJvamVjdHMvU0FGQVJJL3JlcG9zL3NhZmFy
aScpCisgICAgICAgICAgICB3ZWJraXQgPSBXZWJLaXRSZXBvc2l0b3J5KCkKIAogICAgICAgICBj
YXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UpCiAgICAgICAgIGNh
c3NhbmRyYV9pbnN0YW5jZSA9IGNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0
ZV9rZXlzcGFjZT1UcnVlKQpAQCAtODIsMzcgKzgzLDQzIEBAIGNsYXNzIEFyY2hpdmVDb250cm9s
bGVyVW5pdHRlc3QoRmxhc2tUZXMKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZf
bm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIo
KQogICAgIGRlZiB0ZXN0X2ludmFsaWRfdXBsb2FkKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgot
ICAgICAgICB1cGxvYWRfY29udGVudCA9ICdiYWQgZGF0YScuZW5jb2RlKCdhc2NpaScpCi0gICAg
ICAgIHVwbG9hZF9tZXRhID0gZGljdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249anNvbi5k
dW1wcyhDb25maWd1cmF0aW9uQ29udGV4dFRlc3QuQ09ORklHVVJBVElPTlNbMF0sIGNscz1Db25m
aWd1cmF0aW9uLkVuY29kZXIpLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0g
ICAgICAgICAgICBjb21taXRzPWpzb24uZHVtcHMoW01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJp
KCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWYnKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCku
Y29tbWl0X2Zvcl9pZCgyMzY1NDIpXSwgY2xzPUNvbW1pdC5FbmNvZGVyKSwKLSAgICAgICAgKQot
Ci0gICAgICAgIHJlc3BvbnNlID0gc2VsZi51cGxvYWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJM
fS97c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lOVH0nLCB1cGxvYWRfbWV0YSwgdXBsb2FkX2NvbnRl
bnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10s
ICdBcmNoaXZlIGlzIG5vdCBhIHppcGZpbGUnKQotCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50
LnBvc3QoZid7c2VsZi5VUkx9L3tzZWxmLkFSQ0hJVkVfQVBJX0VORFBPSU5UfScsIGRhdGE9c3Ry
KGpzb24uZHVtcHModXBsb2FkX21ldGEpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNw
b25zZS5zdGF0dXNfY29kZSwgNDAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNl
Lmpzb24oKVsnZGVzY3JpcHRpb24nXSwgJ05vIGFyY2hpdmUgcHJvdmlkZWQnKQorICAgICAgICB3
aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6
CisgICAgICAgICAgICB1cGxvYWRfY29udGVudCA9ICdiYWQgZGF0YScuZW5jb2RlKCdhc2NpaScp
CisgICAgICAgICAgICB1cGxvYWRfbWV0YSA9IGRpY3QoCisgICAgICAgICAgICAgICAgY29uZmln
dXJhdGlvbj1qc29uLmR1bXBzKENvbmZpZ3VyYXRpb25Db250ZXh0VGVzdC5DT05GSUdVUkFUSU9O
U1swXSwgY2xzPUNvbmZpZ3VyYXRpb24uRW5jb2RlciksCisgICAgICAgICAgICAgICAgc3VpdGU9
J2xheW91dC10ZXN0cycsCisgICAgICAgICAgICAgICAgY29tbWl0cz1qc29uLmR1bXBzKFsKKyAg
ICAgICAgICAgICAgICAgICAgZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0nZDhiY2Uy
NmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycpLAorICAgICAgICAgICAgICAgICAg
ICBkaWN0KHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGlkPSc2JyldKSwKKyAgICAgICAgICAgICkK
KworICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnVwbG9hZF9maWxlKGNsaWVudCwgZid7c2Vs
Zi5VUkx9L3tzZWxmLkFSQ0hJVkVfQVBJX0VORFBPSU5UfScsIHVwbG9hZF9tZXRhLCB1cGxvYWRf
Y29udGVudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUsIDQwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydk
ZXNjcmlwdGlvbiddLCAnQXJjaGl2ZSBpcyBub3QgYSB6aXBmaWxlJykKKworICAgICAgICAgICAg
cmVzcG9uc2UgPSBjbGllbnQucG9zdChmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5E
UE9JTlR9JywgZGF0YT1zdHIoanNvbi5kdW1wcyh1cGxvYWRfbWV0YSkpKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgNDAwKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10sICdObyBhcmNo
aXZlIHByb3ZpZGVkJykKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19k
b2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNz
YW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAg
ICAgZGVmIHRlc3RfdXBsb2FkX2FuZF9kb3dubG9hZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToK
LSAgICAgICAgdXBsb2FkX2NvbnRlbnQgPSBiYXNlNjQuYjY0ZGVjb2RlKE1vY2tNb2RlbEZhY3Rv
cnkuQVJDSElWRV9aSVApCi0gICAgICAgIHVwbG9hZF9tZXRhID0gZGljdCgKLSAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb249anNvbi5kdW1wcyhDb25maWd1cmF0aW9uQ29udGV4dFRlc3QuQ09ORklH
VVJBVElPTlNbMF0sIGNscz1Db25maWd1cmF0aW9uLkVuY29kZXIpLAotICAgICAgICAgICAgc3Vp
dGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBjb21taXRzPWpzb24uZHVtcHMoW01vY2tT
dGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWYnKSwgTW9ja1NW
TlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpXSwgY2xzPUNvbW1pdC5F
bmNvZGVyKSwKLSAgICAgICAgKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJp
KCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICB1cGxvYWRfY29udGVu
dCA9IGJhc2U2NC5iNjRkZWNvZGUoTW9ja01vZGVsRmFjdG9yeS5BUkNISVZFX1pJUCkKKyAgICAg
ICAgICAgIHVwbG9hZF9tZXRhID0gZGljdCgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9u
PWpzb24uZHVtcHMoQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBj
bHM9Q29uZmlndXJhdGlvbi5FbmNvZGVyKSwKKyAgICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0
LXRlc3RzJywKKyAgICAgICAgICAgICAgICBjb21taXRzPWpzb24uZHVtcHMoWworICAgICAgICAg
ICAgICAgICAgICBkaWN0KHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGlkPSdkOGJjZTI2ZmE2NWM2
ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4MmZjJyksCisgICAgICAgICAgICAgICAgICAgIGRpY3Qo
cmVwb3NpdG9yeV9pZD0nd2Via2l0JywgaWQ9JzYnKV0pLAorICAgICAgICAgICAgKQogCi0gICAg
ICAgIHJlc3BvbnNlID0gc2VsZi51cGxvYWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJMfS97c2Vs
Zi5BUkNISVZFX0FQSV9FTkRQT0lOVH0nLCB1cGxvYWRfbWV0YSwgdXBsb2FkX2NvbnRlbnQpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAg
ICAgICAgIHJlc3BvbnNlID0gc2VsZi51cGxvYWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJMfS97
c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lOVH0nLCB1cGxvYWRfbWV0YSwgdXBsb2FkX2NvbnRlbnQp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDAp
CiAKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KGYne3NlbGYuVVJMfS97c2VsZi5BUkNI
SVZFX0FQSV9FTkRQT0lOVH0nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0
YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuY29udGVu
dCwgYmFzZTY0LmI2NGRlY29kZShNb2NrTW9kZWxGYWN0b3J5LkFSQ0hJVkVfWklQKSkKKyAgICAg
ICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9B
UElfRU5EUE9JTlR9JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3Rh
dHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuY29u
dGVudCwgYmFzZTY0LmI2NGRlY29kZShNb2NrTW9kZWxGYWN0b3J5LkFSQ0hJVkVfWklQKSkKIAog
ICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1G
YWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAg
IEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCkBAIC0xMjQsNDAgKzEzMSw0NyBA
QCBjbGFzcyBBcmNoaXZlQ29udHJvbGxlclVuaXR0ZXN0KEZsYXNrVGVzCiAgICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZsYXNrVGVzdENh
c2UucnVuX3dpdGhfd2Vic2VydmVyKCkKICAgICBkZWYgdGVzdF9pbnZhbGlkX21ldGFkYXRhKHNl
bGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICB1cGxvYWRfY29udGVudCA9IGJhc2U2NC5i
NjRkZWNvZGUoTW9ja01vZGVsRmFjdG9yeS5BUkNISVZFX1pJUCkKLSAgICAgICAgcmVzcG9uc2Ug
PSBzZWxmLnVwbG9hZF9maWxlKGNsaWVudCwgZid7c2VsZi5VUkx9L3tzZWxmLkFSQ0hJVkVfQVBJ
X0VORFBPSU5UfScsIGRpY3QoCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMo
Q29uZmlndXJhdGlvbkNvbnRleHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJh
dGlvbi5FbmNvZGVyKSwKLSAgICAgICAgICAgIGNvbW1pdHM9anNvbi5kdW1wcyhbTW9ja1N0YXNo
UmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKCdiYjZiZGE1ZicpLCBNb2NrU1ZOUmVw
b3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MildLCBjbHM9Q29tbWl0LkVuY29k
ZXIpLAotICAgICAgICApLCB1cGxvYWRfY29udGVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5zdGF0dXNfY29kZSwgNDAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLmpzb24oKVsnZGVzY3JpcHRpb24nXSwgJ05vIHRlc3Qgc3VpdGUgc3BlY2lmaWVkJykK
LQotICAgICAgICByZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVS
TH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGljdCgKLSAgICAgICAgICAgIHN1aXRl
PSdsYXlvdXQtdGVzdHMnLAotICAgICAgICAgICAgY29tbWl0cz1qc29uLmR1bXBzKFtNb2NrU3Rh
c2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoJ2JiNmJkYTVmJyksIE1vY2tTVk5S
ZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKV0sIGNscz1Db21taXQuRW5j
b2RlciksCi0gICAgICAgICksIHVwbG9hZF9jb250ZW50KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlvbiddLCAnQ2Fubm90IHJlZ2lzdGVyIGEgcGFydGlh
bCBjb25maWd1cmF0aW9uJykKLQotICAgICAgICByZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUo
Y2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGljdCgK
LSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249anNvbi5kdW1wcyhDb25maWd1cmF0aW9uQ29udGV4
dFRlc3QuQ09ORklHVVJBVElPTlNbMF0sIGNscz1Db25maWd1cmF0aW9uLkVuY29kZXIpLAotICAg
ICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICksIHVwbG9hZF9jb250ZW50
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDApCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlvbiddLCAn
Tm8gY29tbWl0cyBwcm92aWRlZCcpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnVwbG9hZF9m
aWxlKGNsaWVudCwgZid7c2VsZi5VUkx9L3tzZWxmLkFSQ0hJVkVfQVBJX0VORFBPSU5UfScsIGRp
Y3QoCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPSdJbnZhbGlkIG1ldGEtZGF0YScsCi0gICAg
ICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKLSAgICAgICAgICAgIGNvbW1pdHM9anNvbi5k
dW1wcyhbTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKCdiYjZiZGE1
ZicpLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MildLCBj
bHM9Q29tbWl0LkVuY29kZXIpLAotICAgICAgICApLCB1cGxvYWRfY29udGVudCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgNDAwKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVsnZGVzY3JpcHRpb24nXSwgJ0ludmFsaWQgY29u
ZmlndXJhdGlvbiwgZXJyb3I6IEV4cGVjdGluZyB2YWx1ZTogbGluZSAxIGNvbHVtbiAxIChjaGFy
IDApJykKLQotICAgICAgICByZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tz
ZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGljdCgKLSAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb249anNvbi5kdW1wcyhDb25maWd1cmF0aW9uQ29udGV4dFRlc3QuQ09ORklH
VVJBVElPTlNbMF0sIGNscz1Db25maWd1cmF0aW9uLkVuY29kZXIpLAotICAgICAgICAgICAgc3Vp
dGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBjb21taXRzPSdJbnZhbGlkIG1ldGEtZGF0
YScsCi0gICAgICAgICksIHVwbG9hZF9jb250ZW50KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
cG9uc2UuanNvbigpWydkZXNjcmlwdGlvbiddLCAnRXhwZWN0ZWQgY29tbWl0IG1ldGEtZGF0YSB0
byBiZSBqc29uJykKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2Nr
TW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgdXBsb2FkX2NvbnRlbnQgPSBiYXNl
NjQuYjY0ZGVjb2RlKE1vY2tNb2RlbEZhY3RvcnkuQVJDSElWRV9aSVApCisgICAgICAgICAgICBy
ZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJD
SElWRV9BUElfRU5EUE9JTlR9JywgZGljdCgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9u
PWpzb24uZHVtcHMoQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBj
bHM9Q29uZmlndXJhdGlvbi5FbmNvZGVyKSwKKyAgICAgICAgICAgICAgICBjb21taXRzPWpzb24u
ZHVtcHMoWworICAgICAgICAgICAgICAgICAgICBkaWN0KHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScs
IGlkPSdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4MmZjJyksCisgICAgICAg
ICAgICAgICAgICAgIGRpY3QocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgaWQ9JzYnKV0pLAorICAg
ICAgICAgICAgKSwgdXBsb2FkX2NvbnRlbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlc3BvbnNlLmpzb24oKVsnZGVzY3JpcHRpb24nXSwgJ05vIHRlc3Qgc3VpdGUgc3BlY2lmaWVk
JykKKworICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnVwbG9hZF9maWxlKGNsaWVudCwgZid7
c2VsZi5VUkx9L3tzZWxmLkFSQ0hJVkVfQVBJX0VORFBPSU5UfScsIGRpY3QoCisgICAgICAgICAg
ICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCisgICAgICAgICAgICAgICAgY29tbWl0cz1qc29u
LmR1bXBzKFsKKyAgICAgICAgICAgICAgICAgICAgZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmkn
LCBpZD0nZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycpLAorICAgICAg
ICAgICAgICAgICAgICBkaWN0KHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGlkPSc2JyldKSwKKyAg
ICAgICAgICAgICksIHVwbG9hZF9jb250ZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5zdGF0dXNfY29kZSwgNDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10sICdDYW5ub3QgcmVnaXN0ZXIgYSBwYXJ0
aWFsIGNvbmZpZ3VyYXRpb24nKQorCisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYudXBsb2Fk
X2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9Jywg
ZGljdCgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29uZmlndXJh
dGlvbkNvbnRleHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlvbi5FbmNv
ZGVyKSwKKyAgICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKKyAgICAgICAgICAg
ICksIHVwbG9hZF9jb250ZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZS5zdGF0dXNfY29kZSwgNDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10sICdObyBjb21taXRzIHByb3ZpZGVkJykKKworICAgICAg
ICAgICAgcmVzcG9uc2UgPSBzZWxmLnVwbG9hZF9maWxlKGNsaWVudCwgZid7c2VsZi5VUkx9L3tz
ZWxmLkFSQ0hJVkVfQVBJX0VORFBPSU5UfScsIGRpY3QoCisgICAgICAgICAgICAgICAgY29uZmln
dXJhdGlvbj0nSW52YWxpZCBtZXRhLWRhdGEnLAorICAgICAgICAgICAgICAgIHN1aXRlPSdsYXlv
dXQtdGVzdHMnLAorICAgICAgICAgICAgICAgIGNvbW1pdHM9anNvbi5kdW1wcyhbCisgICAgICAg
ICAgICAgICAgICAgIGRpY3QocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgaWQ9J2Q4YmNlMjZmYTY1
YzZmYzhmMzljMTc5MjdhYmI3N2Y2OWZhYjgyZmMnKSwKKyAgICAgICAgICAgICAgICAgICAgZGlj
dChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0nNicpXSksCisgICAgICAgICAgICApLCB1cGxv
YWRfY29udGVudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVz
X2NvZGUsIDQwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigp
WydkZXNjcmlwdGlvbiddLCAnSW52YWxpZCBjb25maWd1cmF0aW9uLCBlcnJvcjogRXhwZWN0aW5n
IHZhbHVlOiBsaW5lIDEgY29sdW1uIDEgKGNoYXIgMCknKQorCisgICAgICAgICAgICByZXNwb25z
ZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9B
UElfRU5EUE9JTlR9JywgZGljdCgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWpzb24u
ZHVtcHMoQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29u
ZmlndXJhdGlvbi5FbmNvZGVyKSwKKyAgICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3Rz
JywKKyAgICAgICAgICAgICAgICBjb21taXRzPSdJbnZhbGlkIG1ldGEtZGF0YScsCisgICAgICAg
ICAgICApLCB1cGxvYWRfY29udGVudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
cG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
cG9uc2UuanNvbigpWydkZXNjcmlwdGlvbiddLCAnRXhwZWN0ZWQgY29tbWl0IG1ldGEtZGF0YSB0
byBiZSBqc29uJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L2NvbnRyb2xsZXIvY2lfY29udHJvbGxlcl91bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250
cm9sbGVyL2NpX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3Mzk4MCkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIv
Y2lfY29udHJvbGxlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIENJQ29u
dHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZSwgV2EKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRl
ZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9
Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHdpdGggVVJMRmFjdG9yeVRlc3QubW9jaygpOgor
ICAgICAgICB3aXRoIFVSTEZhY3RvcnlUZXN0Lm1vY2soKSwgTW9ja01vZGVsRmFjdG9yeS5zYWZh
cmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKICAgICAgICAgICAgIGNhc3NhbmRyYS5k
cm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKICAgICAgICAgICAgIG1vZGVsID0g
TW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRy
YShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKICAgICAgICAg
ICAgIG1vZGVsLmNpX2NvbnRleHQuYWRkX3VybF9mYWN0b3J5KEJ1aWxkYm90VVJMRmFjdG9yeSht
YXN0ZXI9J2J1aWxkLndlYmtpdC5vcmcnLCByZWRpcz1tb2RlbC5yZWRpcykpCkBAIC0xMDgsOSAr
MTA4LDggQEAgY2xhc3MgQ0lDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlLCBXYQogICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFz
a1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3Rfc2luZ2xlX3F1ZXVl
X2xpc3Qoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50
LmdldChzZWxmLlVSTCArICcvYXBpL3VybHM/dmVyc2lvbl9uYW1lPUNhdGFsaW5hJmZsYXZvcj13
azImaWQ9MjM2NTQyJykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsg
Jy9hcGkvdXJscz92ZXJzaW9uX25hbWU9Q2F0YWxpbmEmZmxhdm9yPXdrMiZpZD0xYWJlMjViNDQz
ZTknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDAp
Ci0gICAgICAgIHByaW50KHJlc3BvbnNlLmpzb24oKVswXVsndXJscyddKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVswXVsndXJscyddWzBdWydidWlsZCddLCAnaHR0
cHM6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvNS9idWlsZHMvMycpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWzBdWyd1cmxzJ11bMF1bJ3F1ZXVlJ10sICdo
dHRwczovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy81JykKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXNwb25zZS5qc29uKClbMF1bJ3VybHMnXVswXVsnd29ya2VyJ10sICdodHRwczov
L2J1aWxkLndlYmtpdC5vcmcvIy93b3JrZXJzLzQnKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxl
ci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAyNzM5
ODApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw5ICsy
NCw5IEBAIGltcG9ydCBqc29uCiAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0
CiBmcm9tIGZsYXNrIGltcG9ydCBhYm9ydCwganNvbmlmeSwgcmVxdWVzdAotZnJvbSByZXN1bHRz
ZGJweS5tb2RlbC5yZXBvc2l0b3J5IGltcG9ydCBTQ01FeGNlcHRpb24KIGZyb20gcmVzdWx0c2Ri
cHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAogZnJvbSB3ZWJraXRmbGFza3B5LnV0
aWwgaW1wb3J0IEFzc2VydFJlcXVlc3QsIHF1ZXJ5X2FzX2t3YXJncywgbGltaXRfZm9yX3F1ZXJ5
Citmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBTY21CYXNlCiAKIAogZGVmIF9maW5kX2NvbXBhcmlz
b24oY29tbWl0X2NvbnRleHQsIHJlcG9zaXRvcnlfaWQsIGJyYW5jaCwgaWQsIHV1aWQsIHRpbWVz
dGFtcCwgcHJpb3JpdHk9bWluKToKQEAgLTI5OSw3ICsyOTksNyBAQCBjbGFzcyBDb21taXRDb250
cm9sbGVyKEhhc0NvbW1pdENvbnRleHQpCiAgICAgICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5n
ZXQoJ2JyYW5jaCcpLAogICAgICAgICAgICAgICAgIGNvbW1pdF9pZD1jb21taXQuZ2V0KCdpZCcp
LAogICAgICAgICAgICAgKQotICAgICAgICBleGNlcHQgKFJ1bnRpbWVFcnJvciwgU0NNRXhjZXB0
aW9uKSBhcyBlcnJvcjoKKyAgICAgICAgZXhjZXB0IChSdW50aW1lRXJyb3IsIFNjbUJhc2UuRXhj
ZXB0aW9uKSBhcyBlcnJvcjoKICAgICAgICAgICAgIGFib3J0KDQwNCwgZGVzY3JpcHRpb249c3Ry
KGVycm9yKSkKIAogICAgICAgICBpZiBpc19lbmRwb2ludDoKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRy
b2xsZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlcl91bml0
dGVzdC5weQkocmV2aXNpb24gMjczOTgwKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlcl91bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNyw5ICsyNywxMSBAQCBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29t
bWl0IGltcG9yCiBmcm9tIHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQuZmxhc2tfdGVzdGNhc2Ug
aW1wb3J0IEZsYXNrVGVzdENhc2UKIGZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2Nv
bnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9j
a19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVz
dWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5
LCBNb2NrU1ZOUmVwb3NpdG9yeQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2Zh
Y3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9k
ZWwgaW1wb3J0IE1vZGVsCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90
ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQorZnJvbSByZXN1bHRzZGJweS5t
b2RlbC5yZXBvc2l0b3J5IGltcG9ydCBTdGFzaFJlcG9zaXRvcnksIFdlYktpdFJlcG9zaXRvcnkK
K2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCiAKIAogY2xhc3MgQ29tbWl0
Q29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZSwgV2FpdEZvckRvY2tlclRlc3RDYXNlKToKQEAg
LTM3LDIwICszOSwyNSBAQCBjbGFzcyBDb21taXRDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNl
CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0dXBfd2Vic2VydmVyKGNscywgYXBwLCBy
ZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBy
ZWRpc19pbnN0YW5jZSA9IHJlZGlzKCkKLSAgICAgICAgc2FmYXJpID0gTW9ja1N0YXNoUmVwb3Np
dG9yeS5zYWZhcmkocmVkaXNfaW5zdGFuY2UpCi0gICAgICAgIHdlYmtpdCA9IE1vY2tTVk5SZXBv
c2l0b3J5LndlYmtpdChyZWRpc19pbnN0YW5jZSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0
b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgcmVk
aXNfaW5zdGFuY2UgPSByZWRpcygpCisgICAgICAgICAgICBzYWZhcmkgPSBTdGFzaFJlcG9zaXRv
cnkoJ2h0dHBzOi8vYml0YnVja2V0LmV4YW1wbGUuY29tL3Byb2plY3RzL1NBRkFSSS9yZXBvcy9z
YWZhcmknKQorICAgICAgICAgICAgd2Via2l0ID0gV2ViS2l0UmVwb3NpdG9yeSgpCiAKLSAgICAg
ICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9Y2xzLktFWVNQQUNFKQotICAgICAg
ICBjYXNzYW5kcmFfaW5zdGFuY2UgPSBjYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQQUNFLCBj
cmVhdGVfa2V5c3BhY2U9VHJ1ZSkKKyAgICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNl
KGtleXNwYWNlPWNscy5LRVlTUEFDRSkKKyAgICAgICAgICAgIGNhc3NhbmRyYV9pbnN0YW5jZSA9
IGNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKQog
Ci0gICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVzKE1vZGVsKHJlZGlzPXJl
ZGlzX2luc3RhbmNlLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhX2luc3RhbmNlLCByZXBvc2l0b3JpZXM9
W3NhZmFyaSwgd2Via2l0XSkpKQorICAgICAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChB
UElSb3V0ZXMoTW9kZWwocmVkaXM9cmVkaXNfaW5zdGFuY2UsIGNhc3NhbmRyYT1jYXNzYW5kcmFf
aW5zdGFuY2UsIHJlcG9zaXRvcmllcz1bc2FmYXJpLCB3ZWJraXRdKSkpCiAKICAgICBkZWYgcmVn
aXN0ZXJfYWxsX2NvbW1pdHMoc2VsZiwgY2xpZW50KToKLSAgICAgICAgZm9yIG1vY2tfcmVwb3Np
dG9yeSBpbiBbTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKSwgTW9ja1NWTlJlcG9zaXRvcnku
d2Via2l0KCldOgotICAgICAgICAgICAgZm9yIGNvbW1pdF9saXN0IGluIG1vY2tfcmVwb3NpdG9y
eS5jb21taXRzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0
X2xpc3Q6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCBjbGllbnQu
cG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvcmVnaXN0ZXInLCBkYXRhPUNvbW1pdC5FbmNv
ZGVyKCkuZGVmYXVsdChjb21taXQpKS5zdGF0dXNfY29kZSkKKyAgICAgICAgd2l0aCBNb2NrTW9k
ZWxGYWN0b3J5LnNhZmFyaSgpIGFzIHNhZmFyaSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKSBh
cyB3ZWJraXQ6CisgICAgICAgICAgICBmb3IgbmFtZSwgbW9ja19yZXBvc2l0b3J5IGluIGRpY3Qo
c2FmYXJpPXNhZmFyaSwgd2Via2l0PXdlYmtpdCkuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBm
b3IgY29tbWl0X2xpc3QgaW4gbW9ja19yZXBvc2l0b3J5LmNvbW1pdHMudmFsdWVzKCk6CisgICAg
ICAgICAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0X2xpc3Q6CisgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgY2xpZW50LnBvc3QoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3JlZ2lzdGVyJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRpY3QoaWQ9Y29tbWl0Lmhhc2ggb3IgY29t
bWl0LnJldmlzaW9uLCByZXBvc2l0b3J5X2lkPW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAg
ICApLnN0YXR1c19jb2RlKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25v
X2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nh
c3NhbmRyYUNvbnRleHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkK
QEAgLTY4LDE1ICs3NSwxNyBAQCBjbGFzcyBDb21taXRDb250cm9sbGVyVGVzdChGbGFza1Rlc3RD
YXNlCiAgICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQogICAgICAgICBy
ZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL2JyYW5jaGVzJykK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGRpY3Qod2Via2l0PVsnc2FmYXJpLTYwNi1icmFuY2gnLCAn
dHJ1bmsnXSwgc2FmYXJpPVsnbWFzdGVyJywgJ3NhZmFyaS02MDYtYnJhbmNoJ10pLCByZXNwb25z
ZS5qc29uKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdCgKKyAgICAgICAgICAgIHdl
YmtpdD1bJ2JyYW5jaC1hJywgJ2JyYW5jaC1iJywgJ3RhZ3MvdGFnLTEnLCAndGFncy90YWctMics
ICd0cnVuayddLAorICAgICAgICAgICAgc2FmYXJpPVsnYnJhbmNoLWEnLCAnYnJhbmNoLWInLCAn
bWFpbiddKSwgcmVzcG9uc2UuanNvbigpKQogCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50Lmdl
dChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvYnJhbmNoZXM/YnJhbmNoPXNhZmFyaScpCisgICAg
ICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvYnJhbmNo
ZXM/YnJhbmNoPWJyYW5jaCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3Rh
dHVzX2NvZGUsIDIwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KHdlYmtpdD1bJ3Nh
ZmFyaS02MDYtYnJhbmNoJ10sIHNhZmFyaT1bJ3NhZmFyaS02MDYtYnJhbmNoJ10pLCByZXNwb25z
ZS5qc29uKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdCh3ZWJraXQ9WydicmFuY2gt
YScsICdicmFuY2gtYiddLCBzYWZhcmk9WydicmFuY2gtYScsICdicmFuY2gtYiddKSwgcmVzcG9u
c2UuanNvbigpKQogCiAgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcv
YXBpL2NvbW1pdHMvYnJhbmNoZXM/cmVwb3NpdG9yeV9pZD1zYWZhcmknKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZGljdChzYWZhcmk9WydtYXN0ZXInLCAnc2FmYXJpLTYwNi1icmFuY2gnXSksIHJl
c3BvbnNlLmpzb24oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KHNhZmFyaT1bJ2Jy
YW5jaC1hJywgJ2JyYW5jaC1iJywgJ21haW4nXSksIHJlc3BvbnNlLmpzb24oKSkKIAogICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFz
a1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCkBAIC04Niw1NCArOTUsNTIgQEAgY2xhc3Mg
Q29tbWl0Q29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZQogCiAgICAgQFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9j
a19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVu
X3dpdGhfd2Vic2VydmVyKCkKLSAgICBkZWYgdGVzdF9yZWdpc3Rlcl92aWFfcG9zdChzZWxmLCBj
bGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5w
b3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSdz
YWZhcmknLCBpZD0nYmI2YmRhNWY0NGRkMicpKS5zdGF0dXNfY29kZSkKLSAgICAgICAgcmVzcG9u
c2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9yZXBvc2l0b3J5X2lkPXNh
ZmFyaScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29k
ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIENvbW1pdC5mcm9tX2pz
b24ocmVzcG9uc2UuanNvbigpWzBdKSwKLSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnku
c2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWY0NGRkMicpLAotICAgICAgICApCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkv
Y29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0nMjM2NTQ0Jykp
LnN0YXR1c19jb2RlKQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAn
L2FwaS9jb21taXRzP3JlcG9zaXRvcnlfaWQ9d2Via2l0JykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICAgICAgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLAotICAg
ICAgICAgICAgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgnMjM2NTQ0
JyksCi0gICAgICAgICkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19k
b2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNz
YW5kcmFDb250ZXh0KQotICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAg
ICAgZGVmIHRlc3RfcmVnaXN0ZXJfd2l0aF9wYXJ0aWFsX2NvbW1pdChzZWxmLCBjbGllbnQsICoq
a3dhcmdzKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYu
VVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBp
ZD0nYmI2YmRhNWY0NGRkMicpKS5zdGF0dXNfY29kZSkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGll
bnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9yZXBvc2l0b3J5X2lkPXNhZmFyaScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIENvbW1pdC5mcm9tX2pzb24ocmVzcG9u
c2UuanNvbigpWzBdKSwKLSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCku
Y29tbWl0X2Zvcl9pZCgnYmI2YmRhNWY0NGRkMicpLAotICAgICAgICApCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoNDA0LCBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMnLCBk
YXRhPWRpY3QocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgaWQ9J2FhYWFhYWFhYWFhYWEnKSkuc3Rh
dHVzX2NvZGUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNl
bGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJraXQn
LCBpZD0nMjM2NTQ0JykpLnN0YXR1c19jb2RlKQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5n
ZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3JlcG9zaXRvcnlfaWQ9d2Via2l0JykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5q
c29uKClbMF0pLAotICAgICAgICAgICAgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0
X2Zvcl9pZCgnMjM2NTQ0JyksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0
MDQsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBv
c2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0nMCcpKS5zdGF0dXNfY29kZSkKKyAgICAgICAgd2l0aCBN
b2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpLCBPdXRw
dXRDYXB0dXJlKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgY2xpZW50LnBv
c3Qoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzJywgZGF0YT1kaWN0KHJlcG9zaXRvcnlfaWQ9J3Nh
ZmFyaScsIGlkPSdkOGJjZTI2ZmE2NWMnKSkuc3RhdHVzX2NvZGUpCisgICAgICAgICAgICByZXNw
b25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3JlcG9zaXRvcnlfaWQ9
c2FmYXJpJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0
dXNfY29kZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAg
Q29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLm1lc3NhZ2UsCisgICAgICAgICAg
ICAgICAgJ1BhdGNoIFNlcmllc1xuJywKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoNDA0LCBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMnLCBk
YXRhPWRpY3QocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgaWQ9J2FhYWFhYWFhYWFhYWEnKSkuc3Rh
dHVzX2NvZGUpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCBjbGllbnQucG9z
dChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMnLCBkYXRhPWRpY3QocmVwb3NpdG9yeV9pZD0nd2Vi
a2l0JywgaWQ9JzYnKSkuc3RhdHVzX2NvZGUpCisgICAgICAgICAgICByZXNwb25zZSA9IGNsaWVu
dC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3JlcG9zaXRvcnlfaWQ9d2Via2l0JykKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgQ29tbWl0LmZyb21f
anNvbihyZXNwb25zZS5qc29uKClbMF0pLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgJzZ0aCBj
b21taXQnLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MDQs
IGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0
b3J5X2lkPSd3ZWJraXQnLCBpZD0nMTIzNCcpKS5zdGF0dXNfY29kZSkKIAogICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RD
YXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXJfd2l0aF9mdWxs
X2NvbW1pdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgZ2l0X2NvbW1pdCA9IE1v
Y2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWY0NGRkMicp
CisgICAgICAgIGdpdF9jb21taXQgPSBDb21taXQoCisgICAgICAgICAgICByZXBvc2l0b3J5X2lk
PSdzYWZhcmknLAorICAgICAgICAgICAgYnJhbmNoPSdtYWluJywKKyAgICAgICAgICAgIGlkPSc4
ZWJhMjgwZTMyZGFhZjVmZGRiYmI2NWFlYTM3OTMyZWE5YWQ4NWRmJywKKyAgICAgICAgICAgIHRp
bWVzdGFtcD0xNjAxNjUwMTAwLAorICAgICAgICAgICAgb3JkZXI9MCwKKyAgICAgICAgICAgIGNv
bW1pdHRlcj0namJlZGFyZEB3ZWJraXQub3JnJywKKyAgICAgICAgICAgIG1lc3NhZ2U9J2N1c3Rv
bSBjb21taXQnLAorICAgICAgICApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCBjbGll
bnQucG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMnLCBkYXRhPUNvbW1pdC5FbmNvZGVyKCku
ZGVmYXVsdChnaXRfY29tbWl0KSkuc3RhdHVzX2NvZGUpCiAgICAgICAgIHJlc3BvbnNlID0gY2xp
ZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/cmVwb3NpdG9yeV9pZD1zYWZhcmknKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0p
LCBnaXRfY29tbWl0KQogCi0gICAgICAgIHN2bl9jb21taXQgPSBNb2NrU1ZOUmVwb3NpdG9yeS53
ZWJraXQoKS5jb21taXRfZm9yX2lkKCcyMzY1NDQnKQorICAgICAgICBzdm5fY29tbWl0ID0gQ29t
bWl0KAorICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD0nd2Via2l0JywKKyAgICAgICAgICAgIGJy
YW5jaD0ndHJ1bmsnLAorICAgICAgICAgICAgaWQ9JzEyMzQnLAorICAgICAgICAgICAgdGltZXN0
YW1wPTE2MDE2NTAxMDAsCisgICAgICAgICAgICBvcmRlcj0wLAorICAgICAgICAgICAgY29tbWl0
dGVyPSdqYmVkYXJkQHdlYmtpdC5vcmcnLAorICAgICAgICAgICAgbWVzc2FnZT0nY3VzdG9tIGNv
bW1pdCcsCisgICAgICAgICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5w
b3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9Q29tbWl0LkVuY29kZXIoKS5kZWZh
dWx0KHN2bl9jb21taXQpKS5zdGF0dXNfY29kZSkKICAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQu
Z2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9yZXBvc2l0b3J5X2lkPXdlYmtpdCcpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKQEAgLTE1MCwx
MjYgKzE1NywxMjggQEAgY2xhc3MgQ29tbWl0Q29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZQog
ICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3RfZmlu
ZF9pZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKICAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxf
Y29tbWl0cyhjbGllbnQpCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCAr
ICcvYXBpL2NvbW1pdHM/aWQ9MzM2NjEwYTgnKQorICAgICAgICByZXNwb25zZSA9IGNsaWVudC5n
ZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP2lkPWQ4YmNlMjZmYTY1YycpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgxLCBsZW4ocmVzcG9uc2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSksIE1vY2tTdGFzaFJlcG9z
aXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nMzM2NjEwYTgnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSkuaGFzaCwg
J2Q4YmNlMjZmYTY1YzZmYzhmMzljMTc5MjdhYmI3N2Y2OWZhYjgyZmMnKQogCi0gICAgICAgIHJl
c3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/aWQ9MjM2NTQwJykK
KyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9p
ZD02JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2Rl
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBd
KSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDApKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigp
WzBdKS5yZXZpc2lvbiwgNikKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9u
b19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tD
YXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigp
CiAgICAgZGVmIHRlc3RfZmluZF90aW1lc3RhbXAoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6CiAg
ICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAgICAgICByZXNwb25z
ZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3RpbWVzdGFtcD0xNTM3NTUw
Njg1JykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29t
bWl0cz90aW1lc3RhbXA9MTYwMTY2ODAwMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAw
LCByZXNwb25zZS5zdGF0dXNfY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4o
cmVzcG9uc2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbQ29tbWl0LmZyb21f
anNvbihlbGVtZW50KSBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldLCBbCi0gICAgICAg
ICAgICBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9J2U2NDgx
MGE0JyksCi0gICAgICAgICAgICBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9m
b3JfaWQoaWQ9JzdiZTQwODQyJyksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0NvbW1pdC5m
cm9tX2pzb24oZWxlbWVudCkuaGFzaCBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldLCBb
CisgICAgICAgICAgICAnYmFlNWQxZTkwOTk5ZDRmOTE2YThhMTU4MTBjY2ZhNDNmMzdhMmZkNics
CisgICAgICAgICAgICAnZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycs
CiAgICAgICAgIF0pCiAKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsg
Jy9hcGkvY29tbWl0cz90aW1lc3RhbXA9MTUzODA0MTc5MS44JykKKyAgICAgICAgcmVzcG9uc2Ug
PSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz90aW1lc3RhbXA9MTYwMTYzOTkw
MCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVzcG9uc2UuanNvbigpKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSks
IE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQxKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVsw
XSkucmV2aXNpb24sIDYpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQog
ICAgIGRlZiB0ZXN0X2ZpbmRfdXVpZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKICAgICAgICAg
c2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0cyhjbGllbnQpCi0gICAgICAgIHJlc3BvbnNlID0gY2xp
ZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/dXVpZD0xNTM3NTUwNjg1MDEnKQorICAg
ICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3V1aWQ9
MTYwMTY2ODAwMDAxJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0
YXR1c19jb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29u
KCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2Uu
anNvbigpWzBdKSwgTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlk
PSc3YmU0MDg0MicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5mcm9tX2pzb24o
cmVzcG9uc2UuanNvbigpWzBdKS5oYXNoLCAnZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3
ZjY5ZmFiODJmYycpCiAKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsg
Jy9hcGkvY29tbWl0cz91dWlkPTE1MzgwNDE3OTIwMCcpCisgICAgICAgIHJlc3BvbnNlID0gY2xp
ZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/dXVpZD0xNjAxNjM5OTAwMDAnKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLCBNb2NrU1ZO
UmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLnJldmlz
aW9uLCA2KQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNv
bnRleHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKICAgICBkZWYg
dGVzdF9maW5kX3JhbmdlX2lkKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgogICAgICAgICBzZWxm
LnJlZ2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQu
Z2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9hZnRlcl9pZD0zMzY2MTBhOCZiZWZvcmVfaWQ9
MjM2NTQwJykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkv
Y29tbWl0cz9hZnRlcl9pZD02JmJlZm9yZV9pZD1mZmY4M2JiMmQ5MTcnKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoW0NvbW1pdC5mcm9tX2pzb24oZWxlbWVudCkgZm9yIGVsZW1lbnQgaW4gcmVzcG9u
c2UuanNvbigpXSwgWwotICAgICAgICAgICAgTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5j
b21taXRfZm9yX2lkKGlkPSczMzY2MTBhOCcpLAotICAgICAgICAgICAgTW9ja1N0YXNoUmVwb3Np
dG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSdiYjZiZGE1ZicpLAotICAgICAgICAgICAg
TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDApLAorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFtDb21taXQuZnJvbV9qc29uKGVsZW1lbnQpLmlkIGZvciBl
bGVtZW50IGluIHJlc3BvbnNlLmpzb24oKV0sIFsKKyAgICAgICAgICAgICc2JywgJzliODMxMWYy
NWE3N2JhMTQ5MjNkOWQ1YTY1MzIxMDNmNTRhYmVmY2InLCAnZmZmODNiYjJkOTE3MWI0ZDkxOTZl
OTc3ZWIwNTA4ZmQ1N2U3YTA4ZCcsCiAgICAgICAgIF0pCiAKICAgICBAV2FpdEZvckRvY2tlclRl
c3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2Nr
X2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5f
d2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X2ZpbmRfcmFuZ2VfdGltZXN0YW1wKHNlbGYs
IGNsaWVudCwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNs
aWVudCkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29t
bWl0cz9hZnRlcl90aW1lc3RhbXA9MTUzODA0MTc5Mi4zJmJlZm9yZV90aW1lc3RhbXA9MTUzODA0
OTEwOCcpCisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2Nv
bW1pdHM/YWZ0ZXJfdGltZXN0YW1wPTE2MDE2Mzc5MDAmYmVmb3JlX3RpbWVzdGFtcD0xNjAxNjM5
OTAwJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2Rl
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW0NvbW1pdC5mcm9tX2pz
b24oZWxlbWVudCkgZm9yIGVsZW1lbnQgaW4gcmVzcG9uc2UuanNvbigpXSwKLSAgICAgICAgICAg
IFtNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MSksIE1v
Y2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQyKV0sCisgICAg
ICAgICAgICBbQ29tbWl0LmZyb21fanNvbihlbGVtZW50KS5yZXZpc2lvbiBmb3IgZWxlbWVudCBp
biByZXNwb25zZS5qc29uKCldLAorICAgICAgICAgICAgWzQsIDZdLAogICAgICAgICApCiAKICAg
ICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFr
ZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBA
Rmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X2ZpbmRfcmFu
Z2VfdXVpZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKICAgICAgICAgc2VsZi5yZWdpc3Rlcl9h
bGxfY29tbWl0cyhjbGllbnQpCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVS
TCArICcvYXBpL2NvbW1pdHM/YWZ0ZXJfdXVpZD0xNTM3NTUwNjg1MDEmYmVmb3JlX3V1aWQ9MTUz
NzU2NjM4NjAyJykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9h
cGkvY29tbWl0cz9hZnRlcl91dWlkPTE2MDE2NjgwMDAwMCZiZWZvcmVfdXVpZD0xNjAxNjY4MDAw
MDEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBbQ29tbWl0LmZyb21fanNv
bihlbGVtZW50KSBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldLAotICAgICAgICAgICAg
W01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nN2JlNDA4NDIn
KSwgTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBh
NCcpXSwKKyAgICAgICAgICAgIFtDb21taXQuZnJvbV9qc29uKGVsZW1lbnQpLmhhc2ggZm9yIGVs
ZW1lbnQgaW4gcmVzcG9uc2UuanNvbigpXSwgWworICAgICAgICAgICAgICAgICdiYWU1ZDFlOTA5
OTlkNGY5MTZhOGExNTgxMGNjZmE0M2YzN2EyZmQ2JywKKyAgICAgICAgICAgICAgICAnZDhiY2Uy
NmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycsCisgICAgICAgICAgICBdLAogICAg
ICAgICApCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1v
Y2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29u
dGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0
ZXN0X25leHQoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYucmVnaXN0ZXJf
YWxsX2NvbW1pdHMoY2xpZW50KQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5V
UkwgKyAnL2FwaS9jb21taXRzL25leHQ/aWQ9MzM2NjEwYTQnKQorICAgICAgICByZXNwb25zZSA9
IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL25leHQ/aWQ9YmFlNWQxZTkwOTk5
JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zv
cl9pZChpZD0nMzM2NjEwYTgnKSwgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0p
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJi
NzdmNjlmYWI4MmZjJywgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLmhhc2gp
CiAKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0
cy9uZXh0P2lkPTIzNjU0MicpCisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVS
TCArICcvYXBpL2NvbW1pdHMvbmV4dD9pZD00JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgy
MDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxl
bihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vY2tTVk5SZXBv
c2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQzKSwgQ29tbWl0LmZyb21fanNv
bihyZXNwb25zZS5qc29uKClbMF0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDYsIENvbW1p
dC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKS5yZXZpc2lvbikKIAogICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RD
YXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3RfcHJldmlvdXMoc2VsZiwgY2xp
ZW50LCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50
KQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRz
L3ByZXZpb3VzP2lkPTMzNjYxMGE0JykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNl
bGYuVVJMICsgJy9hcGkvY29tbWl0cy9wcmV2aW91cz9pZD1kOGJjZTI2ZmE2NWMnKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSc3
YmU0MDg0MicpLCBDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2JhZTVkMWU5MDk5OWQ0ZjkxNmE4YTE1ODEwY2NmYTQzZjM3YTJm
ZDYnLCBDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSkuaGFzaCkKIAotICAgICAg
ICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3ByZXZpb3Vz
P2lkPTIzNjU0MicpCisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcv
YXBpL2NvbW1pdHMvcHJldmlvdXM/aWQ9NicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAw
LCByZXNwb25zZS5zdGF0dXNfY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4o
cmVzcG9uc2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNb2NrU1ZOUmVwb3Np
dG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MSksIENvbW1pdC5mcm9tX2pzb24o
cmVzcG9uc2UuanNvbigpWzBdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBDb21taXQu
ZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSkucmV2aXNpb24pCiAKICAgICBAV2FpdEZvckRv
Y2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlz
LCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2Fz
ZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X3NpYmxpbmdzKHNlbGYsIGNsaWVu
dCwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkK
IAotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRz
L3NpYmxpbmdzP3JlcG9zaXRvcnlfaWQ9d2Via2l0JmlkPTIzNjU0MicpCisgICAgICAgIHJlc3Bv
bnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvc2libGluZ3M/cmVwb3Np
dG9yeV9pZD13ZWJraXQmaWQ9NicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNw
b25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgY29tbWl0cyA9IHtrZXk6IFtDb21taXQuZnJvbV9q
c29uKGVsZW1lbnQpIGZvciBlbGVtZW50IGluIHZhbHVlc10gZm9yIGtleSwgdmFsdWVzIGluIHJl
c3BvbnNlLmpzb24oKS5pdGVtcygpfQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMs
IHsnc2FmYXJpJzogW01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChp
ZD0nYmI2YmRhNWY0NGRkMjQnKV19KQorICAgICAgICBjb21taXRzID0ge2tleTogW0NvbW1pdC5m
cm9tX2pzb24oZWxlbWVudCkuaGFzaCBmb3IgZWxlbWVudCBpbiB2YWx1ZXNdIGZvciBrZXksIHZh
bHVlcyBpbiByZXNwb25zZS5qc29uKCkuaXRlbXMoKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIGNvbW1pdHMsIGRpY3Qoc2FmYXJpPVsKKyAgICAgICAgICAgICAgICAn
ZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycsCisgICAgICAgICAgICAg
ICAgJ2JhZTVkMWU5MDk5OWQ0ZjkxNmE4YTE1ODEwY2NmYTQzZjM3YTJmZDYnLAorICAgICAgICAg
ICAgICAgICcxYWJlMjViNDQzZTk4NWY5M2I5MGQ4MzBlNGE3ZTM3MzEzMzZhZjRkJywKKyAgICAg
ICAgICAgICAgICAnZmZmODNiYjJkOTE3MWI0ZDkxOTZlOTc3ZWIwNTA4ZmQ1N2U3YTA4ZCcsCisg
ICAgICAgICAgICAgICAgJzliODMxMWYyNWE3N2JhMTQ5MjNkOWQ1YTY1MzIxMDNmNTRhYmVmY2In
LAorICAgICAgICAgICAgXSksCisgICAgICAgICkKIAotICAgICAgICByZXNwb25zZSA9IGNsaWVu
dC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3NpYmxpbmdzP3JlcG9zaXRvcnlfaWQ9c2Fm
YXJpJmlkPWJiNmJkYTVmNDRkZDI0JykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNl
bGYuVVJMICsgJy9hcGkvY29tbWl0cy9zaWJsaW5ncz9yZXBvc2l0b3J5X2lkPXNhZmFyaSZpZD1k
OGJjZTI2ZmE2NWMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3Rh
dHVzX2NvZGUpCi0gICAgICAgIGNvbW1pdHMgPSB7a2V5OiBbQ29tbWl0LmZyb21fanNvbihlbGVt
ZW50KSBmb3IgZWxlbWVudCBpbiB2YWx1ZXNdIGZvciBrZXksIHZhbHVlcyBpbiByZXNwb25zZS5q
c29uKCkuaXRlbXMoKX0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRzLCB7J3dlYmtp
dCc6IFsKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3Jf
aWQoaWQ9MjM2NTQ0KSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNv
bW1pdF9mb3JfaWQoaWQ9MjM2NTQzKSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5Lndl
YmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQyKSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBv
c2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQxKSwKLSAgICAgICAgICAgIE1v
Y2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQwKSwKLSAgICAg
ICAgXX0pCisgICAgICAgIGNvbW1pdHMgPSB7a2V5OiBbQ29tbWl0LmZyb21fanNvbihlbGVtZW50
KS5yZXZpc2lvbiBmb3IgZWxlbWVudCBpbiB2YWx1ZXNdIGZvciBrZXksIHZhbHVlcyBpbiByZXNw
b25zZS5qc29uKCkuaXRlbXMoKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRzLCBk
aWN0KHdlYmtpdD1bNl0pKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvY29udHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHJldmlzaW9u
IDI3Mzk4MCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L2NvbnRyb2xsZXIvZmFpbHVyZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw3ICsyOSw2IEBAIGZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC5mbGFz
a190ZXMKIGZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENh
c3NhbmRyYUNvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29u
dGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwu
bW9ja19tb2RlbF9mYWN0b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRpb25zCiBmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZQogCiAKQEAgLTM4LDI1ICszNywyNiBAQCBjbGFzcyBGYWlsdXJlQ29udHJvbGxlclRl
c3QoRmxhc2tUZXN0Q2FzCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0dXBfd2Vic2Vy
dmVyKGNscywgYXBwLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRl
eHQpOgotICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1jbHMuS0VZU1BB
Q0UpCi0gICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMo
KSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlz
cGFjZT1UcnVlKSkKLSAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChBUElSb3V0ZXMobW9k
ZWwpKQotCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhtb2RlbCwg
dGVzdF9yZXN1bHRzPWRpY3QoCi0gICAgICAgICAgICBkZXRhaWxzPWRpY3QobGluaz0nZHVtbXkt
bGluaycpLAotICAgICAgICAgICAgcnVuX3N0YXRzPWRpY3QodGVzdHNfc2tpcHBlZD0wKSwKLSAg
ICAgICAgICAgIHJlc3VsdHM9ewotICAgICAgICAgICAgICAgICdmYXN0JzogewotICAgICAgICAg
ICAgICAgICAgICAnZW5jb2RpbmcnOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWNh
Y2hlZC1ib20uaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J0ZBSUwnLCB0aW1l
PTEuMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRt
bCc6IGRpY3QoZXhwZWN0ZWQ9J0ZBSUwnLCBhY3R1YWw9J0ZBSUwnLCB0aW1lPTEuMiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnY3NzLWNoYXJzZXQuaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J0ZB
SUwnLCBhY3R1YWw9J1BBU1MnLCB0aW1lPTEuMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAn
Y3NzLWxpbmstY2hhcnNldC5odG1sJzogZGljdChleHBlY3RlZD0nUEFTUycsIGFjdHVhbD0nUEFT
JywgdGltZT0xLjIpLAorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1v
Y2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlz
cGFjZShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UpCisgICAgICAgICAgICBtb2RlbCA9IE1vY2tNb2Rl
bEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3Bh
Y2U9Y2xzLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkpCisgICAgICAgICAgICBhcHAu
cmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkpCisKKyAgICAgICAgICAgIE1vY2tN
b2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhtb2RlbCwgdGVzdF9yZXN1bHRzPWRpY3QoCisg
ICAgICAgICAgICAgICAgZGV0YWlscz1kaWN0KGxpbms9J2R1bW15LWxpbmsnKSwKKyAgICAgICAg
ICAgICAgICBydW5fc3RhdHM9ZGljdCh0ZXN0c19za2lwcGVkPTApLAorICAgICAgICAgICAgICAg
IHJlc3VsdHM9eworICAgICAgICAgICAgICAgICAgICAnZmFzdCc6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICdlbmNvZGluZyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3Nz
LWNhY2hlZC1ib20uaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J0ZBSUwnLCB0
aW1lPTEuMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jaGFyc2V0LWRlZmF1
bHQueGh0bWwnOiBkaWN0KGV4cGVjdGVkPSdGQUlMJywgYWN0dWFsPSdGQUlMJywgdGltZT0xLjIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtY2hhcnNldC5odG1sJzogZGljdChl
eHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0nUEFTUycsIHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnY3NzLWxpbmstY2hhcnNldC5odG1sJzogZGljdChleHBlY3RlZD0nUEFT
UycsIGFjdHVhbD0nUEFTJywgdGltZT0xLjIpLAorICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwK
LSAgICAgICAgKSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMobW9k
ZWwpCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICkpCisgICAgICAgICAgICBNb2Nr
TW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0cyhtb2RlbCkKIAogICAgIEBXYWl0Rm9yRG9ja2Vy
VGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1v
Y2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1
bl93aXRoX3dlYnNlcnZlcigpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3N1aXRlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvY29udHJvbGxlci9zdWl0ZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAy
NzM5ODApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL3N1aXRlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTIgKzM3
LDEzIEBAIGNsYXNzIFN1aXRlQ29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZSwKIAogICAgIEBj
bGFzc21ldGhvZAogICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmlj
dFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIGNhc3NhbmRyYS5k
cm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKLSAgICAgICAgbW9kZWwgPSBNb2Nr
TW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtl
eXNwYWNlPWNscy5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAgICAgICBhcHAu
cmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkpCisgICAgICAgIHdpdGggTW9ja01v
ZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAg
ICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKKyAgICAg
ICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fz
c2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1U
cnVlKSkKKyAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVzKG1vZGVs
KSkKIAotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMobW9kZWwpCi0g
ICAgICAgIE1vY2tNb2RlbEZhY3RvcnkucHJvY2Vzc19yZXN1bHRzKG1vZGVsKQorICAgICAgICAg
ICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKG1vZGVsKQorICAgICAgICAgICAg
TW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMobW9kZWwpCiAKICAgICBAV2FpdEZvckRv
Y2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlz
LCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2Fz
ZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQpAQCAtNzMsNyArNzQsNyBAQCBjbGFzcyBTdWl0ZUNvbnRy
b2xsZXJUZXN0KEZsYXNrVGVzdENhc2UsCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2Nr
X2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9
TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2Vy
dmVyKCkKICAgICBkZWYgdGVzdF9yZXN1bHRzX2J5X2NvbW1pdChzZWxmLCBjbGllbnQsICoqa3dh
cmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvcmVz
dWx0cy9sYXlvdXQtdGVzdHM/cGxhdGZvcm09aU9TJnN0eWxlPURlYnVnJmFmdGVyX2lkPTMzNjYx
MGE4NCZiZWZvcmVfaWQ9MjM2NTQyJykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNl
bGYuVVJMICsgJy9hcGkvcmVzdWx0cy9sYXlvdXQtdGVzdHM/cGxhdGZvcm09aU9TJnN0eWxlPURl
YnVnJmFmdGVyX2lkPTYmYmVmb3JlX2lkPTFhYmUyNWI0NDNlOScpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4ocmVzcG9uc2UuanNvbigpKSwgMikKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6
CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9j
b250cm9sbGVyL3Rlc3RfY29udHJvbGxlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rl
c3RfY29udHJvbGxlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjczOTgwKQorKysgVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2Nv
bnRyb2xsZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHly
aWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsMTIgKzM4LDEzIEBAIGNsYXNzIFRlc3RDb250
cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlLCAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBz
ZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fz
c2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNl
PWNscy5LRVlTUEFDRSkKLSAgICAgICAgbW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShy
ZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwg
Y3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQ
SVJvdXRlcyhtb2RlbCkpCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwg
TW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tl
eXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKKyAgICAgICAgICAgIG1vZGVsID0gTW9ja01v
ZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlz
cGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAgICAgIGFw
cC5yZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVzKG1vZGVsKSkKIAotICAgICAgICBNb2NrTW9k
ZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMobW9kZWwpCi0gICAgICAgIE1vY2tNb2RlbEZhY3Rv
cnkucHJvY2Vzc19yZXN1bHRzKG1vZGVsKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5h
ZGRfbW9ja19yZXN1bHRzKG1vZGVsKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9j
ZXNzX3Jlc3VsdHMobW9kZWwpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZf
bm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIo
KQpAQCAtMTA2LDcgKzEwNyw3IEBAIGNsYXNzIFRlc3RDb250cm9sbGVyVGVzdChGbGFza1Rlc3RD
YXNlLCAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4
dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0
X3Jlc3VsdHNfYnlfY29tbWl0KHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNw
b25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9yZXN1bHRzL2xheW91dC10ZXN0cy9m
YXN0L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJzZXQuaHRtbD9wbGF0Zm9ybT1pT1Mmc3R5bGU9RGVi
dWcmYWZ0ZXJfaWQ9MzM2NjEwYTg0JmJlZm9yZV9pZD0yMzY1NDInKQorICAgICAgICByZXNwb25z
ZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9yZXN1bHRzL2xheW91dC10ZXN0cy9mYXN0
L2VuY29kaW5nL2Nzcy1saW5rLWNoYXJzZXQuaHRtbD9wbGF0Zm9ybT1pT1Mmc3R5bGU9RGVidWcm
YWZ0ZXJfaWQ9NiZiZWZvcmVfaWQ9MWFiZTI1YjQ0M2U5JykKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihyZXNwb25zZS5qc29uKCkpLCAyKQogICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRy
b2xsZXIvdXBsb2FkX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxv
YWRfY29udHJvbGxlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjczOTgwKQorKysgVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRf
Y29udHJvbGxlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjUsMTMgKzI1LDExIEBA
IGltcG9ydCB0aW1lCiBmcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCiBmcm9t
IHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFw
aV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRlcwotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNv
bW1pdCBpbXBvcnQgQ29tbWl0CiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJh
dGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgogZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0
LmZsYXNrX3Rlc3RjYXNlIGltcG9ydCBGbGFza1Rlc3RDYXNlCiBmcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3Vs
dHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFD
b250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQg
TW9ja01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkg
aW1wb3J0IE1vY2tTdGFzaFJlcG9zaXRvcnksIE1vY2tTVk5SZXBvc2l0b3J5CiBmcm9tIHJlc3Vs
dHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZQogCiAKQEAgLTQwLDE3ICszOCwxOCBAQCBjbGFzcyBVcGxvYWRDb250cm9sbGVy
UG9zdFRlc3QoRmxhc2tUZXN0CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0dXBfd2Vi
c2VydmVyKGNscywgYXBwLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNv
bnRleHQpOgotICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1jbHMuS0VZ
U1BBQ0UpCi0gICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVk
aXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9r
ZXlzcGFjZT1UcnVlKSkKLSAgICAgICAgbW9kZWwudXBsb2FkX2NvbnRleHQucmVnaXN0ZXJfdXBs
b2FkX2NhbGxiYWNrKCdweXRob24tdGVzdHMnLCBsYW1iZGEgKiprd2FyZ3M6IGRpY3Qoc3RhdHVz
PSdvaycpKQotICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkp
CisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9y
eS53ZWJraXQoKToKKyAgICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNl
PWNscy5LRVlTUEFDRSkKKyAgICAgICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVh
dGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BB
Q0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAgICAgIG1vZGVsLnVwbG9hZF9jb250
ZXh0LnJlZ2lzdGVyX3VwbG9hZF9jYWxsYmFjaygncHl0aG9uLXRlc3RzJywgbGFtYmRhICoqa3dh
cmdzOiBkaWN0KHN0YXR1cz0nb2snKSkKKyAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJp
bnQoQVBJUm91dGVzKG1vZGVsKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1v
Y2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZl
cigpCiAgICAgZGVmIHRlc3RfdXBsb2FkKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgogICAgICAg
ICB1cGxvYWRfZGljdCA9IGRpY3QoCiAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywK
LSAgICAgICAgICAgIGNvbW1pdHM9W01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0
X2Zvcl9pZCgnYmI2YmRhNWYnKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zv
cl9pZCgyMzY1NDIpXSwKKyAgICAgICAgICAgIGNvbW1pdHM9W2RpY3QocmVwb3NpdG9yeV9pZD0n
c2FmYXJpJywgaWQ9J2Q4YmNlMjZmYTY1YzZmYzhmMzljMTc5MjdhYmI3N2Y2OWZhYjgyZmMnKSwg
ZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0nNicpXSwKICAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb249Q29uZmlndXJhdGlvbi5FbmNvZGVyKCkuZGVmYXVsdChDb25maWd1cmF0aW9uKAog
ICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uPScxMC4xNC4wJywgc2RrPScx
OEEzOTEnLAogICAgICAgICAgICAgICAgIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJl
PSd4ODZfNjQnLApAQCAtNTksMjEgKzU4LDI0IEBAIGNsYXNzIFVwbG9hZENvbnRyb2xsZXJQb3N0
VGVzdChGbGFza1Rlc3QKICAgICAgICAgICAgIHRlc3RfcmVzdWx0cz1Nb2NrTW9kZWxGYWN0b3J5
LmxheW91dF90ZXN0X3Jlc3VsdHMoKSwKICAgICAgICAgICAgIHRpbWVzdGFtcD1pbnQodGltZS50
aW1lKCkpLAogICAgICAgICApCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3Qoc2VsZi5V
UkwgKyAnL2FwaS91cGxvYWQnLCBkYXRhPXN0cihqc29uLmR1bXBzKHVwbG9hZF9kaWN0LCBjbHM9
Q29tbWl0LkVuY29kZXIpKSkKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQucG9zdChzZWxmLlVS
TCArICcvYXBpL3VwbG9hZCcsIGRhdGE9c3RyKGpzb24uZHVtcHModXBsb2FkX2RpY3QpKSkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVsnc3RhdHVzJ10sICdvaycpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydwcm9jZXNzaW5nJ11bJ3B5dGhv
bi10ZXN0cyddLCBkaWN0KHN0YXR1cz0nb2snKSkKIAogICAgICAgICByZXNwb25zZSA9IGNsaWVu
dC5nZXQoc2VsZi5VUkwgKyAnL2FwaS91cGxvYWQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
cG9uc2UuanNvbigpWzBdLCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQodXBsb2FkX2RpY3QpKQor
CisgICAgICAgIHJldHJpZXZlZCA9IHJlc3BvbnNlLmpzb24oKVswXQorICAgICAgICByZXRyaWV2
ZWRbJ2NvbW1pdHMnXSA9IFtkaWN0KHJlcG9zaXRvcnlfaWQ9Y29tbWl0WydyZXBvc2l0b3J5X2lk
J10sIGlkPWNvbW1pdFsnaWQnXSkgZm9yIGNvbW1pdCBpbiByZXRyaWV2ZWRbJ2NvbW1pdHMnXV0K
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXRyaWV2ZWQsIHVwbG9hZF9kaWN0KQogCiAgICAg
QFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VT
dHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZs
YXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKICAgICBkZWYgdGVzdF91cGxvYWRfcGFy
dGlhbChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKICAgICAgICAgdXBsb2FkX2RpY3QgPSBkaWN0
KAogICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBjb21taXRz
PVtkaWN0KHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGlkPSdiYjZiZGE1ZicpLCBkaWN0KHJlcG9z
aXRvcnlfaWQ9J3dlYmtpdCcsIGlkPTIzNjU0MildLAorICAgICAgICAgICAgY29tbWl0cz1bZGlj
dChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0nZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2Fi
Yjc3ZjY5ZmFiODJmYycpLCBkaWN0KHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGlkPSc2JyldLAog
ICAgICAgICAgICAgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9uLkVuY29kZXIoKS5kZWZhdWx0
KENvbmZpZ3VyYXRpb24oCiAgICAgICAgICAgICAgICAgcGxhdGZvcm09J2lPUycsIHZlcnNpb249
JzEyLjAuMCcsIHNkaz0nMTZBNDA0JywKICAgICAgICAgICAgICAgICBpc19zaW11bGF0b3I9VHJ1
ZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLApAQCAtMTExLDExICsxMTMsMTIgQEAgY2xhc3MgVXBs
b2FkQ29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAg
ZGVmIHNldHVwX3dlYnNlcnZlcihjbHMsIGFwcCwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRy
YT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5
c3BhY2U9Y2xzLktFWVNQQUNFKQotICAgICAgICBtb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3Jl
YXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQ
QUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkpCi0gICAgICAgIG1vZGVsLnVwbG9hZF9jb250ZXh0
LnJlZ2lzdGVyX3VwbG9hZF9jYWxsYmFjaygncHl0aG9uLXRlc3RzJywgbGFtYmRhICoqa3dhcmdz
OiBkaWN0KHN0YXR1cz0nb2snKSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19y
ZXN1bHRzKG1vZGVsKQotICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyht
b2RlbCkpCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVs
RmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtl
eXNwYWNlPWNscy5LRVlTUEFDRSkKKyAgICAgICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9y
eS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMu
S0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAgICAgIG1vZGVsLnVwbG9h
ZF9jb250ZXh0LnJlZ2lzdGVyX3VwbG9hZF9jYWxsYmFjaygncHl0aG9uLXRlc3RzJywgbGFtYmRh
ICoqa3dhcmdzOiBkaWN0KHN0YXR1cz0nb2snKSkKKyAgICAgICAgICAgIE1vY2tNb2RlbEZhY3Rv
cnkuYWRkX21vY2tfcmVzdWx0cyhtb2RlbCkKKyAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVl
cHJpbnQoQVBJUm91dGVzKG1vZGVsKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJh
PU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNl
cnZlcigpCkBAIC0xNzAsMjMgKzE3MywyNyBAQCBjbGFzcyBVcGxvYWRDb250cm9sbGVyVGVzdChG
bGFza1Rlc3RDYXNlCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tl
cihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRy
YUNvbnRleHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKICAgICBk
ZWYgdGVzdF9kb3dubG9hZF93aXRoX3JhbmdlKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAg
ICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS91cGxvYWQ/cGxhdGZv
cm09TWFjJnN0eWxlPVJlbGVhc2UmZmxhdm9yPXdrMiZhZnRlcl9pZD0yMzY1NDImYmVmb3JlX2lk
PTIzNjU0NCcpCisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBp
L3VwbG9hZD9wbGF0Zm9ybT1NYWMmc3R5bGU9UmVsZWFzZSZmbGF2b3I9d2syJmFmdGVyX2lkPTFh
YmUyNWI0NDNlOSZiZWZvcmVfaWQ9ZDhiY2UyNmZhNjVjJykKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDMsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRl
ZChbJzIzNjU0NCcsICcyMzY1NDMnLCAnMjM2NTQyJ10pLCBzb3J0ZWQoW3Jlc3VsdFsnY29tbWl0
cyddWzBdWydpZCddIGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpXSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc29ydGVkKFsKKyAgICAgICAgICAgICdkOGJjZTI2ZmE2NWM2ZmM4ZjM5
YzE3OTI3YWJiNzdmNjlmYWI4MmZjJywKKyAgICAgICAgICAgICdiYWU1ZDFlOTA5OTlkNGY5MTZh
OGExNTgxMGNjZmE0M2YzN2EyZmQ2JywKKyAgICAgICAgICAgICcxYWJlMjViNDQzZTk4NWY5M2I5
MGQ4MzBlNGE3ZTM3MzEzMzZhZjRkJywKKyAgICAgICAgXSksIHNvcnRlZChbcmVzdWx0Wydjb21t
aXRzJ11bMV1bJ2lkJ10gZm9yIHJlc3VsdCBpbiByZXNwb25zZS5qc29uKCldKSkKIAogICAgIEBX
YWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3Ry
aWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFz
a1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3RfZG93bmxvYWRfZm9y
X2NvbW1pdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGll
bnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2FkP3BsYXRmb3JtPU1hYyZzdHlsZT1SZWxlYXNl
JmZsYXZvcj13azImaWQ9MjM2NTQyJykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNl
bGYuVVJMICsgJy9hcGkvdXBsb2FkP3BsYXRmb3JtPU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13
azImaWQ9ZDhiY2UyNmZhNjVjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5z
dGF0dXNfY29kZSwgMjAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25z
ZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnMjM2NTQyJ10sIFtyZXN1bHRb
J2NvbW1pdHMnXVswXVsnaWQnXSBmb3IgcmVzdWx0IGluIHJlc3BvbnNlLmpzb24oKV0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlm
YWI4MmZjJ10sIFtyZXN1bHRbJ2NvbW1pdHMnXVsxXVsnaWQnXSBmb3IgcmVzdWx0IGluIHJlc3Bv
bnNlLmpzb24oKV0pCiAKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsg
Jy9hcGkvdXBsb2FkP3BsYXRmb3JtPU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13azImaWQ9YmI2
YmRhNWYnKQorICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS91
cGxvYWQ/cGxhdGZvcm09TWFjJnN0eWxlPVJlbGVhc2UmZmxhdm9yPXdrMiZpZD02JykKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDUsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKFsnYmI2YmRhNWY0NGRkMjRkMGI1NDUzOWI4ZmY2ZThjMTdmNTE5MjQ5YSddICog
NSwgW3Jlc3VsdFsnY29tbWl0cyddWzFdWydpZCddIGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNv
bigpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJzYnXSAqIDUsIFtyZXN1bHRbJ2NvbW1p
dHMnXVswXVsnaWQnXSBmb3IgcmVzdWx0IGluIHJlc3BvbnNlLmpzb24oKV0pCiAKICAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tU
ZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQpAQCAtMTk5LDggKzIwNiw4IEBAIGNsYXNzIFVw
bG9hZENvbnRyb2xsZXJUZXN0KEZsYXNrVGVzdENhc2UKICAgICBAV2FpdEZvckRvY2tlclRlc3RD
YXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nh
c3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0
aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X3Byb2Nlc3NfY29tbWl0KHNlbGYsIGNsaWVudCwg
Kiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9h
cGkvdXBsb2FkL3Byb2Nlc3M/cGxhdGZvcm09TWFjJnN0eWxlPVJlbGVhc2UmZmxhdm9yPXdrMiZp
ZD0yMzY1NDMnKQorICAgICAgICByZXNwb25zZSA9IGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9h
cGkvdXBsb2FkL3Byb2Nlc3M/cGxhdGZvcm09TWFjJnN0eWxlPVJlbGVhc2UmZmxhdm9yPXdrMiZp
ZD1kOGJjZTI2ZmE2NWMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1
c19jb2RlLCAyMDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3BvbnNlLmpz
b24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWycyMzY1NDMnXSwgW3Jlc3VsdFsnY29t
bWl0cyddWzBdWydpZCddIGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbJ2Q4YmNlMjZmYTY1YzZmYzhmMzljMTc5MjdhYmI3N2Y2OWZhYjgy
ZmMnXSwgW3Jlc3VsdFsnY29tbWl0cyddWzFdWydpZCddIGZvciByZXN1bHQgaW4gcmVzcG9uc2Uu
anNvbigpXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbZGljdChzdGF0dXM9J29rJyldLCBb
ZWxlbWVudFsncHJvY2Vzc2luZyddWydweXRob24tdGVzdHMnXSBmb3IgZWxlbWVudCBpbiByZXNw
b25zZS5qc29uKCldKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L2FyY2hpdmVfY29udGV4dF91bml0dGVzdC5weQkocmV2aXNpb24gMjczOTgwKQorKysgVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9j
b250ZXh0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMyLDYgQEAgZnJvbSByZXN1bHRzZGJweS5j
b250cm9sbGVyLmNvbmZpZ3VyYXRpbwogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFf
Y29udGV4dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5t
b2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAogZnJvbSBy
ZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3Rv
cnkKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU1ZO
UmVwb3NpdG9yeQogZnJvbSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9j
YXNlIGltcG9ydCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UKIAogCkBAIC00MCwyMCArMzksMjEgQEAg
Y2xhc3MgQXJjaGl2ZUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZQogICAgIEtFWVNQQUNFID0g
J2FyY2hpdmVfdGVzdF9rZXlzcGFjZScKIAogICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCwgY29uZmlndXJhdGlv
bj1Db25maWd1cmF0aW9uKCksIGFyY2hpdmU9Tm9uZSk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9w
X2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpCi0gICAgICAgIHNlbGYubW9kZWwgPSBN
b2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJh
KGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKLSAgICAgICAg
TW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19hcmNoaXZlcyhzZWxmLm1vZGVsLCBjb25maWd1cmF0
aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hpdmU9YXJjaGl2ZSkKKyAgICAgICAgd2l0aCBNb2NrTW9k
ZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAg
ICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKKyAgICAg
ICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygp
LCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlz
cGFjZT1UcnVlKSkKKyAgICAgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfYXJjaGl2
ZXMoc2VsZi5tb2RlbCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBhcmNoaXZlPWFyY2hp
dmUpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4
dCkKICAgICBkZWYgdGVzdF9maW5kX2FyY2hpdmUoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNh
c3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJl
ZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQogICAgICAgICBhcmNoaXZlcyA9IHNlbGYu
bW9kZWwuYXJjaGl2ZV9jb250ZXh0LmZpbmRfYXJjaGl2ZSgKICAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZs
YXZvcj0nd2sxJyldLAotICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0
KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCku
Y29tbWl0X2Zvcl9pZCgyMzY1NDIpLAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwgZW5k
PTE2MDE2NjAwMDAsCiAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKICAgICAgICAg
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuZXh0KGl0ZXIoYXJjaGl2ZXMudmFsdWVz
KCkpKSksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGFyY2hpdmVzLnZh
bHVlcygpKSlbMF1bJ3V1aWQnXSwgMTUzODA0OTEwODAwKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG5leHQoaXRlcihhcmNoaXZlcy52YWx1ZXMoKSkpWzBdWyd1dWlkJ10sIDE2MDE2NjAwMDAw
MCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoYXJjaGl2ZXMudmFsdWVzKCkp
KVswXVsnYXJjaGl2ZSddLmdldHZhbHVlKCksIGJhc2U2NC5iNjRkZWNvZGUoTW9ja01vZGVsRmFj
dG9yeS5BUkNISVZFX1pJUCkpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZf
bm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKQEAgLTYxLDExICs2MSwxMSBAQCBjbGFzcyBBcmNoaXZlQ29udGV4
dFRlc3QoV2FpdEZvckRvY2tlclRlCiAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1y
ZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKICAgICAgICAgZmlsZXMgPSBzZWxmLm1vZGVsLmFy
Y2hpdmVfY29udGV4dC5scygKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0
aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAg
ICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgy
MzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1
NDIpLAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwgZW5kPTE2MDE2NjAwMDAsCiAgICAg
ICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKICAgICAgICAgKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKSksIDEpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1bJ3V1aWQnXSwgMTUz
ODA0OTEwODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52YWx1
ZXMoKSkpWzBdWyd1dWlkJ10sIDE2MDE2NjAwMDAwMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsnZmlsZXMnXSwgWydmaWxlLnR4dCcsICdp
bmRleC5odG1sJ10pCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9j
a2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2Fu
ZHJhQ29udGV4dCkKQEAgLTc0LDExICs3NCwxMSBAQCBjbGFzcyBBcmNoaXZlQ29udGV4dFRlc3Qo
V2FpdEZvckRvY2tlclRlCiAgICAgICAgIGZpbGVzID0gc2VsZi5tb2RlbC5hcmNoaXZlX2NvbnRl
eHQuZmlsZSgKICAgICAgICAgICAgIHBhdGg9J2ZpbGUudHh0JywKICAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScs
IGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Vi
a2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0
KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwg
ZW5kPTE2MDE2NjAwMDAsCiAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKICAgICAg
ICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuZXh0KGl0ZXIoZmlsZXMudmFsdWVz
KCkpKSksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVl
cygpKSlbMF1bJ3V1aWQnXSwgMTUzODA0OTEwODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWyd1dWlkJ10sIDE2MDE2NjAwMDAwMCkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsnZmls
ZSddLCAnZGF0YScuZW5jb2RlKCdhc2NpaScpKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2Fz
ZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNz
YW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCkBAIC04NiwxMSArODYsMTEgQEAgY2xhc3MgQXJj
aGl2ZUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZQogICAgICAgICBzZWxmLmluaXRfZGF0YWJh
c2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCiAgICAgICAgIGZpbGVzID0gc2Vs
Zi5tb2RlbC5hcmNoaXZlX2NvbnRleHQuZmlsZSgKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25z
PVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0n
d2sxJyldLAotICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29t
bWl0X2Zvcl9pZCgyMzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0
X2Zvcl9pZCgyMzY1NDIpLAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwgZW5kPTE2MDE2
NjAwMDAsCiAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKICAgICAgICAgKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKSksIDEp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1b
J3V1aWQnXSwgMTUzODA0OTEwODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRl
cihmaWxlcy52YWx1ZXMoKSkpWzBdWyd1dWlkJ10sIDE2MDE2NjAwMDAwMCkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsnZmlsZSddLCBbJ2Zp
bGUudHh0JywgJ2luZGV4Lmh0bWwnXSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJh
PU1vY2tDYXNzYW5kcmFDb250ZXh0KQpAQCAtMTEzLDE2ICsxMTMsMTYgQEAgY2xhc3MgQXJjaGl2
ZUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZQogCiAgICAgICAgIGZpbGVzID0gc2VsZi5tb2Rl
bC5hcmNoaXZlX2NvbnRleHQuZmluZF9hcmNoaXZlKAogICAgICAgICAgICAgY29uZmlndXJhdGlv
bnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9y
PSd3azEnKV0sCi0gICAgICAgICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5j
b21taXRfZm9yX2lkKDIzNjU0MiksIGVuZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21t
aXRfZm9yX2lkKDIzNjU0MiksCisgICAgICAgICAgICBiZWdpbj0xNjAxNjYwMDAwLCBlbmQ9MTYw
MTY2MDAwMCwKICAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAogICAgICAgICApCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpKSwg
MSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVsw
XVsndXVpZCddLCAxNTM4MDQ5MTA4MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChp
dGVyKGZpbGVzLnZhbHVlcygpKSlbMF1bJ3V1aWQnXSwgMTYwMTY2MDAwMDAwKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWydhcmNoaXZlJ10u
Z2V0dmFsdWUoKSwgYnVmZi5nZXR2YWx1ZSgpKQogCiAgICAgICAgIHdpdGggbW9jay5wYXRjaCgn
cmVzdWx0c2RicHkubW9kZWwuYXJjaGl2ZV9jb250ZXh0LkFyY2hpdmVDb250ZXh0Lk1FTU9SWV9M
SU1JVCcsIG5ldz1GSUxFX1NJWkUpLCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgog
ICAgICAgICAgICAgc2VsZi5tb2RlbC5hcmNoaXZlX2NvbnRleHQuZmluZF9hcmNoaXZlKAogICAg
ICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMn
LCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAgICAgIGJlZ2lu
PU1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwgZW5kPU1v
Y2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwKKyAgICAgICAg
ICAgICAgICBiZWdpbj0xNjAxNjYwMDAwLCBlbmQ9MTYwMTY2MDAwMCwKICAgICAgICAgICAgICAg
ICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKICAgICAgICAgICAgICkKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NpX2NvbnRleHRfdW5p
dHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvbW9kZWwvY2lfY29udGV4dF91bml0dGVzdC5weQkocmV2aXNpb24gMjcz
OTgwKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvY2lfY29udGV4dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjEsMTkgKzIxLDE1
IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQganNvbgotaW1w
b3J0IG1vY2sKIGltcG9ydCB0aW1lCi1pbXBvcnQgdW5pdHRlc3QKIAogZnJvbSBmYWtlcmVkaXMg
aW1wb3J0IEZha2VTdHJpY3RSZWRpcwogZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKIGZy
b20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNv
bnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwuY2lfY29udGV4dCBpbXBvcnQgQnVpbGRib3RV
UkxGYWN0b3J5LCBDSUNvbnRleHQsIEJ1aWxkYm90RWlnaHRVUkxGYWN0b3J5Citmcm9tIHJlc3Vs
dHNkYnB5Lm1vZGVsLmNpX2NvbnRleHQgaW1wb3J0IEJ1aWxkYm90VVJMRmFjdG9yeSwgQnVpbGRi
b3RFaWdodFVSTEZhY3RvcnkKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0
aW9uIGltcG9ydCBDb25maWd1cmF0aW9uCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fz
c2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJv
bSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTVk5SZXBvc2l0
b3J5CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1w
b3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQogCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgbW9j
a3MKQEAgLTI2NCw3ICsyNjAsNyBAQCBjbGFzcyBDSUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzCiAgICAgS0VZU1BBQ0UgPSAnc3VpdGVfY29udGV4dF90ZXN0X2tleXNwYWNlJwogCiAg
ICAgZGVmIGluaXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1D
YXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgd2l0aCBVUkxGYWN0b3J5VGVzdC5tb2NrKCk6Cisg
ICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKSwgTW9ja01vZGVsRmFjdG9yeS5z
YWZhcmkoKSwgVVJMRmFjdG9yeVRlc3QubW9jaygpOgogICAgICAgICAgICAgY2Fzc2FuZHJhLmRy
b3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKICAgICAgICAgICAgIHNlbGYubW9k
ZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fz
c2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKICAg
ICAgICAgICAgIHNlbGYubW9kZWwuY2lfY29udGV4dC5hZGRfdXJsX2ZhY3RvcnkoQnVpbGRib3RV
UkxGYWN0b3J5KG1hc3Rlcj0nYnVpbGQud2Via2l0Lm9yZycsIHJlZGlzPXNlbGYubW9kZWwucmVk
aXMpKQpAQCAtMzE0LDEyICszMTAsMTIgQEAgY2xhc3MgQ0lDb250ZXh0VGVzdChXYWl0Rm9yRG9j
a2VyVGVzdENhcwogICAgICAgICB1cmxzID0gc2VsZi5tb2RlbC5jaV9jb250ZXh0LmZpbmRfdXJs
c19ieV9jb21taXQoCiAgICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbih2
ZXJzaW9uX25hbWU9J01vamF2ZScsIGZsYXZvcj0nd2syJyldLAogICAgICAgICAgICAgc3VpdGU9
J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJr
aXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCi0gICAgICAgICAgICBlbmQ9TW9ja1NWTlJlcG9z
aXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLAorICAgICAgICAgICAgYmVnaW49
MTYwMTY2MDAwMCwKKyAgICAgICAgICAgIGVuZD0xNjAxNjYwMDAwLAogICAgICAgICApCiAKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIodXJscy52YWx1ZXMoKSkpWzBdWydxdWV1
ZSddLCAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMicpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKHVybHMudmFsdWVzKCkpKVswXVsnYnVpbGQnXSwgJ2h0
dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzMnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcih1cmxzLnZhbHVlcygpKSlbMF1bJ2J1aWxkJ10sICdo
dHRwczovL2J1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xJykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIodXJscy52YWx1ZXMoKSkpWzBdWyd3b3JrZXInXSwg
J2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy8jL3dvcmtlcnMvMycpCiAKICAgICBAV2FpdEZvckRv
Y2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlz
LCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0LnB5CShyZXZpc2lvbiAyNzM5ODApCisrKyBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21t
aXRfY29udGV4dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsOSBAQCBmcm9tIGNhc3Nh
bmRyYS5jcWxlbmdpbmUgaW1wb3J0IGNvbHVtbnMKIGZyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZS5t
b2RlbHMgaW1wb3J0IE1vZGVsCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogZnJvbSBy
ZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLnJlcG9zaXRvcnkgaW1wb3J0IFJlcG9zaXRvcnksIFNDTUV4Y2VwdGlvbgorZnJv
bSByZXN1bHRzZGJweS5tb2RlbC5yZXBvc2l0b3J5IGltcG9ydCBSZXBvc2l0b3J5CisKK2Zyb20g
d2Via2l0c2NtcHkgaW1wb3J0IFNjbUJhc2UKIAogCiBjbGFzcyBDb21taXRDb250ZXh0KG9iamVj
dCk6CkBAIC0xMTksNyArMTIxLDcgQEAgY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogICAg
ICAgICAjIHRoaXMgY2FzZSwgdHJhY2sgYnJhbmNoZXMgd2hpY2ggYXJlIG5vdCB0aGUgZGVmYXVs
dCBicmFuY2ggaW5kZXBlbmRlbnRseS4KICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgog
ICAgICAgICAgICAgcmVwbyA9IHNlbGYucmVwb3NpdG9yaWVzLmdldChjb21taXQucmVwb3NpdG9y
eV9pZCwgUmVwb3NpdG9yeShrZXk9Y29tbWl0LnJlcG9zaXRvcnlfaWQpKQotICAgICAgICAgICAg
aWYgY29tbWl0LmJyYW5jaCAhPSByZXBvLkRFRkFVTFRfQlJBTkNIOgorICAgICAgICAgICAgaWYg
Y29tbWl0LmJyYW5jaCAhPSByZXBvLmRlZmF1bHRfYnJhbmNoOgogICAgICAgICAgICAgICAgIGJy
YW5jaGVzLmFkZChjb21taXQuYnJhbmNoKQogICAgICAgICBpZiBsZW4oYnJhbmNoZXMpID09IDA6
CiAgICAgICAgICAgICBicmFuY2hlcy5hZGQoc2VsZi5ERUZBVUxUX0JSQU5DSF9LRVkpCkBAIC0x
NDUsNyArMTQ3LDcgQEAgY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogCiAgICAgZGVmIGZp
bmRfY29tbWl0c19ieV9pZChzZWxmLCByZXBvc2l0b3J5X2lkLCBicmFuY2gsIGNvbW1pdF9pZCwg
bGltaXQ9MTAwKToKICAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmFu
Y2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5DSAorICAg
ICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVs
dF9icmFuY2gKIAogICAgICAgICBkZWYgY2FsbGJhY2soY29tbWl0X2lkPWNvbW1pdF9pZCk6CiAg
ICAgICAgICAgICB3aXRoIHNlbGY6CkBAIC0xNjksNyArMTcxLDcgQEAgY2xhc3MgQ29tbWl0Q29u
dGV4dChvYmplY3QpOgogCiAgICAgZGVmIGZpbmRfY29tbWl0c19ieV91dWlkKHNlbGYsIHJlcG9z
aXRvcnlfaWQsIGJyYW5jaCwgdXVpZCwgbGltaXQ9MTAwKToKICAgICAgICAgaWYgYnJhbmNoIGlz
IE5vbmU6Ci0gICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5
X2lkXS5ERUZBVUxUX0JSQU5DSAorICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3Jp
ZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9icmFuY2gKIAogICAgICAgICBkZWYgY2FsbGJhY2so
KToKICAgICAgICAgICAgIHdpdGggc2VsZjoKQEAgLTE4NSw3ICsxODcsNyBAQCBjbGFzcyBDb21t
aXRDb250ZXh0KG9iamVjdCk6CiAKICAgICBkZWYgZmluZF9jb21taXRzX2J5X3RpbWVzdGFtcChz
ZWxmLCByZXBvc2l0b3J5X2lkLCBicmFuY2gsIHRpbWVzdGFtcCwgbGltaXQ9MTAwKToKICAgICAg
ICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRv
cmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5DSAorICAgICAgICAgICAgYnJhbmNoID0g
c2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9icmFuY2gKIAogICAgICAg
ICBpZiBpc2luc3RhbmNlKHRpbWVzdGFtcCwgZGF0ZXRpbWUpOgogICAgICAgICAgICAgdGltZXN0
YW1wID0gY2FsZW5kYXIudGltZWdtKHRpbWVzdGFtcC50aW1ldHVwbGUoKSkKQEAgLTIwOCw3ICsy
MTAsNyBAQCBjbGFzcyBDb21taXRDb250ZXh0KG9iamVjdCk6CiAKICAgICBkZWYgZmluZF9jb21t
aXRzX2luX3JhbmdlKHNlbGYsIHJlcG9zaXRvcnlfaWQsIGJyYW5jaD1Ob25lLCBiZWdpbj1Ob25l
LCBlbmQ9Tm9uZSwgbGltaXQ9MTAwKToKICAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAg
ICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxU
X0JSQU5DSAorICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9y
eV9pZF0uZGVmYXVsdF9icmFuY2gKIAogICAgICAgICBiZWdpbiA9IHNlbGYuY29udmVydF90b191
dWlkKGJlZ2luKQogICAgICAgICBlbmQgPSBzZWxmLmNvbnZlcnRfdG9fdXVpZChlbmQsIHNlbGYu
dGltZXN0YW1wX3RvX3V1aWQoKSkKQEAgLTI2Miw4ICsyNjQsOCBAQCBjbGFzcyBDb21taXRDb250
ZXh0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaWYgaWQgbm90IGluIHNlbGYucmVwb3NpdG9y
aWVzOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICAgICAgaWYg
Y29tbWl0LmJyYW5jaCA9PSBzZWxmLnJlcG9zaXRvcmllc1tjb21taXQucmVwb3NpdG9yeV9pZF0u
REVGQVVMVF9CUkFOQ0ggb3Igbm90IHNlbGYuYnJhbmNoZXMoaWQsIGNvbW1pdC5icmFuY2gpOgot
ICAgICAgICAgICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tpZF0uREVGQVVM
VF9CUkFOQ0gKKyAgICAgICAgICAgICAgICBpZiBjb21taXQuYnJhbmNoID09IHNlbGYucmVwb3Np
dG9yaWVzW2NvbW1pdC5yZXBvc2l0b3J5X2lkXS5kZWZhdWx0X2JyYW5jaCBvciBub3Qgc2VsZi5i
cmFuY2hlcyhpZCwgY29tbWl0LmJyYW5jaCk6CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaCA9
IHNlbGYucmVwb3NpdG9yaWVzW2lkXS5kZWZhdWx0X2JyYW5jaAogICAgICAgICAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCA9IGNvbW1pdC5icmFuY2gKIApAQCAtMzE5
LDE3ICszMjEsMTcgQEAgY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogCiAgICAgZGVmIHJl
Z2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKHNlbGYsIHJlcG9zaXRvcnlfaWQsIGJyYW5j
aCwgY29tbWl0X2lkKToKICAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBi
cmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5DSAor
ICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVm
YXVsdF9icmFuY2gKICAgICAgICAgaWYgcmVwb3NpdG9yeV9pZCBub3QgaW4gc2VsZi5yZXBvc2l0
b3JpZXM6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3t9IGlzIG5vdCBhIHJlY29n
bml6ZWQgcmVwb3NpdG9yeScpCiAKICAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgY29t
bWl0cyA9IHNlbGYuZmluZF9jb21taXRzX2J5X2lkKHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9p
ZCwgYnJhbmNoPWJyYW5jaCwgY29tbWl0X2lkPWNvbW1pdF9pZCkKICAgICAgICAgICAgIGlmIGxl
bihjb21taXRzKSA+IDE6Ci0gICAgICAgICAgICAgICAgcmFpc2UgU0NNRXhjZXB0aW9uKGYnTXVs
dGlwbGUgY29tbWl0cyB3aXRoIHRoZSBpZCB7Y29tbWl0X2lkfSBleGlzdCBpbiB7cmVwb3NpdG9y
eV9pZH0gb24ge2JyYW5jaH0nKQorICAgICAgICAgICAgICAgIHJhaXNlIFNjbUJhc2UuRXhjZXB0
aW9uKGYnTXVsdGlwbGUgY29tbWl0cyB3aXRoIHRoZSBpZCB7Y29tbWl0X2lkfSBleGlzdCBpbiB7
cmVwb3NpdG9yeV9pZH0gb24ge2JyYW5jaH0nKQogICAgICAgICAgICAgaWYgY29tbWl0czoKICAg
ICAgICAgICAgICAgICByZXR1cm4gY29tbWl0c1swXQotICAgICAgICAgICAgY29tbWl0ID0gc2Vs
Zi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uY29tbWl0X2Zvcl9pZChjb21taXRfaWQsIGJy
YW5jaCkKKyAgICAgICAgICAgIGNvbW1pdCA9IHNlbGYucmVwb3NpdG9yaWVzW3JlcG9zaXRvcnlf
aWRdLmNvbW1pdF9mb3JfaWQoY29tbWl0X2lkKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVn
aXN0ZXJfY29tbWl0KGNvbW1pdCkKIAogICAgIGRlZiB1cmwoc2VsZiwgY29tbWl0KToKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2Nv
bW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyNzM5ODApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21taXRfY29udGV4dF91bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNSw4ICsyNSw5IEBAIGZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKIGZy
b20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNv
bnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwuY29tbWl0X2NvbnRleHQgaW1wb3J0IENvbW1p
dENvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBp
bXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19y
ZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZOUmVwb3NpdG9yeQor
ZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2Rl
bEZhY3RvcnkKIGZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2Fz
ZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCitmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnJl
cG9zaXRvcnkgaW1wb3J0IFN0YXNoUmVwb3NpdG9yeSwgV2ViS2l0UmVwb3NpdG9yeQogCiAKIGNs
YXNzIENvbW1pdENvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6CkBAIC0zNSw4ICsz
Niw4IEBAIGNsYXNzIENvbW1pdENvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXMKICAgICBkZWYg
aW5pdF9kYXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRy
YUNvbnRleHQpOgogICAgICAgICByZWRpc19pbnN0YW5jZSA9IHJlZGlzKCkKIAotICAgICAgICBz
ZWxmLnN0YXNoX3JlcG9zaXRvcnkgPSBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpc19p
bnN0YW5jZSkKLSAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeSA9IE1vY2tTVk5SZXBvc2l0b3J5
LndlYmtpdChyZWRpc19pbnN0YW5jZSkKKyAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5ID0g
U3Rhc2hSZXBvc2l0b3J5KCdodHRwczovL2JpdGJ1Y2tldC5leGFtcGxlLmNvbS9wcm9qZWN0cy9T
QUZBUkkvcmVwb3Mvc2FmYXJpJykKKyAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeSA9IFdlYktp
dFJlcG9zaXRvcnkoKQogCiAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNl
PXNlbGYuS0VZU1BBQ0UpCiAgICAgICAgIHNlbGYuZGF0YWJhc2UgPSBDb21taXRDb250ZXh0KApA
QCAtNDcsMjM2ICs0OCwyNjggQEAgY2xhc3MgQ29tbWl0Q29udGV4dFRlc3QoV2FpdEZvckRvY2tl
clRlcwogICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX3JlcG9zaXRvcnkoc2VsZi5zdm5f
cmVwb3NpdG9yeSkKIAogICAgIGRlZiBhZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2Uoc2VsZik6
Ci0gICAgICAgIGZvciBtb2NrX3JlcG9zaXRvcnkgaW4gW3NlbGYuc3Rhc2hfcmVwb3NpdG9yeSwg
c2VsZi5zdm5fcmVwb3NpdG9yeV06Ci0gICAgICAgICAgICBmb3IgY29tbWl0X2xpc3QgaW4gbW9j
a19yZXBvc2l0b3J5LmNvbW1pdHMudmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAgZm9yIGNvbW1p
dCBpbiBjb21taXRfbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdp
c3Rlcl9jb21taXQoY29tbWl0KQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJp
KCkgYXMgc2FmYXJpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpIGFzIHdlYmtpdDoKKyAgICAg
ICAgICAgIHdpdGggc2VsZi5kYXRhYmFzZSwgc2VsZi5kYXRhYmFzZS5jYXNzYW5kcmEuYmF0Y2hf
cXVlcnlfY29udGV4dCgpOgorICAgICAgICAgICAgICAgIGZvciBrZXksIHJlcG9zaXRvcnkgaW4g
ZGljdChzYWZhcmk9c2FmYXJpLCB3ZWJraXQ9d2Via2l0KS5pdGVtcygpOgorICAgICAgICAgICAg
ICAgICAgICBmb3IgYnJhbmNoLCBjb21taXRzIGluIHJlcG9zaXRvcnkuY29tbWl0cy5pdGVtcygp
OgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfY29tbWl0X3dpdGhf
cmVwb19hbmRfaWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwgYnJhbmNo
LCBjb21taXQuaGFzaCBvciBjb21taXQucmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNv
bnRleHQpCiAgICAgZGVmIHRlc3RfdmVyaWZ5X3RhYmxlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlz
LCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFz
ZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgQ29tbWl0Q29udGV4
dChyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BB
Q0UpKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZh
Y3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVk
aXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBDb21taXRDb250ZXh0KHJlZGlz
PXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkpCiAK
ICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9
RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAg
ICBkZWYgdGVzdF9jb21taXRfYnlfaWQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRy
YT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJl
ZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190
b19kYXRhYmFzZSgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtz
ZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWY0NCcsIGJyYW5j
aD0nbWFzdGVyJyldLAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlf
aWQocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYXN0ZXInLCBjb21taXRfaWQ9J2Ji
NmJkYTVmNDQnKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihz
ZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBi
cmFuY2g9J21hc3RlcicsIGNvbW1pdF9pZD0nMzM2NjEwYScpKSkKLQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAotICAgICAgICAgICAgW3NlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9p
ZChpZD0yMzY1NDQsIGJyYW5jaD0ndHJ1bmsnKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNl
LmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5r
JywgY29tbWl0X2lkPTIzNjU0NCksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgwLCBsZW4oc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD0n
d2Via2l0JywgYnJhbmNoPSd0cnVuaycsIGNvbW1pdF9pZD0nMjM2NTQnKSkpCisgICAgICAgIHdp
dGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToK
KyAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNh
c3NhbmRyYSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkK
KworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbc2VsZi5z
dGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2Q4YmNlMjZmYTY1YycpXSwKKyAgICAg
ICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lk
PSdzYWZhcmknLCBicmFuY2g9J21haW4nLCBjb21taXRfaWQ9J2Q4YmNlMjZmYTY1YycpLAorICAg
ICAgICAgICAgKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
ICAgIFtzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9NildLAorICAgICAgICAg
ICAgICAgIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2J5X2lkKHJlcG9zaXRvcnlfaWQ9J3dl
YmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCBjb21taXRfaWQ9NiksCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0
c19ieV9pZChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgY29tbWl0X2lk
PScxMjM0JykpKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tl
cihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRy
YUNvbnRleHQpCiAgICAgZGVmIHRlc3RfY29tbWl0X2J5X3V1aWQoc2VsZiwgcmVkaXM9U3RyaWN0
UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2Rh
dGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmFk
ZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
LSAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nN2Jl
NDA4NDI1OCcsIGJyYW5jaD0nbWFzdGVyJyldLAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5m
aW5kX2NvbW1pdHNfYnlfdXVpZChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3Rl
cicsIHV1aWQ9MTUzNzU1MDY4NTAxKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAotICAgICAgICAgICAgW3NlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0y
MzY1NDAsIGJyYW5jaD0ndHJ1bmsnKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRf
Y29tbWl0c19ieV91dWlkKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCB1
dWlkPTE1MzgwMjk0NzkwMCksCi0gICAgICAgICkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0
b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgc2Vs
Zi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAg
ICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQorCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRvcnku
Y29tbWl0X2Zvcl9pZChpZD0nMWFiZTI1YjQ0M2U5JyldLAorICAgICAgICAgICAgICAgIHNlbGYu
ZGF0YWJhc2UuZmluZF9jb21taXRzX2J5X3V1aWQocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJh
bmNoPSdtYWluJywgdXVpZD0xNjAxNjYzMDAwMDApLAorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbc2VsZi5zdm5fcmVwb3NpdG9y
eS5jb21taXRfZm9yX2lkKGlkPTYpXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZp
bmRfY29tbWl0c19ieV91dWlkKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsn
LCB1dWlkPTE2MDE2Mzk5MDAwMCksCisgICAgICAgICAgICApCiAKICAgICBAV2FpdEZvckRvY2tl
clRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBt
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9jb21taXRf
YnlfdGltZXN0YW1wKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJh
Q29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2Uo
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBbc2VsZi5zdGFzaF9y
ZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE4NGYnLCBicmFuY2g9J21hc3Rlcicp
XSwKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2J5X3RpbWVzdGFtcChy
ZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsIHRpbWVzdGFtcD0xNTM3ODA5
ODE4KSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
W3NlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDAsIGJyYW5jaD0ndHJ1
bmsnKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV90aW1lc3Rh
bXAocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSd0cnVuaycsIHRpbWVzdGFtcD0xNTM4
MDI5NDc5KSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihzZWxm
LmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV90aW1lc3RhbXAocmVwb3NpdG9yeV9pZD0nc2FmYXJp
JywgYnJhbmNoPSdtYXN0ZXInLCB0aW1lc3RhbXA9MTUzNzU1MDY4NSkpKQorICAgICAgICB3aXRo
IE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6Cisg
ICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNz
YW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW3NlbGYuc3Rh
c2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPScxYWJlMjViNDQzZTknKV0sCisgICAgICAg
ICAgICAgICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfdGltZXN0YW1wKHJlcG9zaXRv
cnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFpbicsIHRpbWVzdGFtcD0xNjAxNjYzMDAwKSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAg
ICAgW3NlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD02KV0sCisgICAgICAgICAg
ICAgICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfdGltZXN0YW1wKHJlcG9zaXRvcnlf
aWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCB0aW1lc3RhbXA9MTYwMTYzOTkwMCksCisgICAg
ICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihzZWxmLmRhdGFi
YXNlLmZpbmRfY29tbWl0c19ieV90aW1lc3RhbXAocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJh
bmNoPSdtYWluJywgdGltZXN0YW1wPTE2MDE2NjgwMDApKSkKIAogICAgIEBXYWl0Rm9yRG9ja2Vy
VGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1v
Y2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2FsbF9jb21t
aXRzX3N0YXNoKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29u
dGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJh
PWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxlbihzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0
c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicpKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRv
cnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWY0NCcsIGJyYW5jaD0nbWFzdGVyJyksIHNlbGYu
c3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhODRmJywgYnJhbmNoPSdt
YXN0ZXInKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5n
ZShyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsIGxpbWl0PTIpLAotICAg
ICAgICApCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVs
RmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1y
ZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21t
aXRzX3RvX2RhdGFiYXNlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKHNl
bGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScs
IGJyYW5jaD0nbWFpbicpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICAgICAgW3NlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdkOGJjZTI2
ZmE2NWMnKSwgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2JhZTVkMWU5
MDk5OScpXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9y
YW5nZShyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21haW4nLCBsaW1pdD0yKSwKKyAg
ICAgICAgICAgICkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2Nr
ZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5k
cmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2FsbF9jb21taXRzX3N2bihzZWxmLCByZWRpcz1TdHJp
Y3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRf
ZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYu
YWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1
LCBsZW4oc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0n
d2Via2l0JywgYnJhbmNoPSd0cnVuaycpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAg
ICAgICAgICAgIFtzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0LCBi
cmFuY2g9J3RydW5rJyksIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1
NDMsIGJyYW5jaD0ndHJ1bmsnKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29t
bWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgbGlt
aXQ9MiksCi0gICAgICAgICkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgp
LCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFi
YXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgc2VsZi5h
ZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCg0LCBsZW4oc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9p
ZD0nd2Via2l0JywgYnJhbmNoPSd0cnVuaycpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICAgICAgW3NlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChp
ZD02KSwgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTQpXSwKKyAgICAgICAg
ICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lk
PSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgbGltaXQ9MiksCisgICAgICAgICAgICApCiAKICAg
ICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFr
ZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBk
ZWYgdGVzdF9zdGFzaF9jb21taXRzX2luX3JhbmdlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBj
YXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShy
ZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxsX2Nv
bW1pdHNfdG9fZGF0YWJhc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAg
ICAgW3NlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdiYjZiZGE1ZjQ0Jywg
YnJhbmNoPSdtYXN0ZXInKSwgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9
JzMzNjYxMGE4NGYnLCBicmFuY2g9J21hc3RlcicpXSwKLSAgICAgICAgICAgIHNlbGYuZGF0YWJh
c2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0n
bWFzdGVyJywgYmVnaW49MTUzNzgwOTgxOCwgZW5kPTE1Mzc4MTAyODEpLAotICAgICAgICApCisg
ICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53
ZWJraXQoKToKKyAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fz
c2FuZHJhPWNhc3NhbmRyYSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2Rh
dGFiYXNlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAg
W3NlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdiYWU1ZDFlOTA5OTknKSwg
c2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzFhYmUyNWI0NDNlOScpXSwK
KyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBv
c2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21haW4nLCBiZWdpbj0xNjAxNjYzMDAwLCBlbmQ9
MTYwMTY2ODAwMCksCisgICAgICAgICAgICApCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNl
Lm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3Nh
bmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9zdm5fY29tbWl0c19pbl9y
YW5nZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQp
OgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNz
YW5kcmEpCi0gICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN2bl9yZXBvc2l0b3J5LmNv
bW1pdF9mb3JfaWQoaWQ9MjM2NTQ0LCBicmFuY2g9J3RydW5rJyksIHNlbGYuc3ZuX3JlcG9zaXRv
cnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDMsIGJyYW5jaD0ndHJ1bmsnKV0sCi0gICAgICAgICAg
ICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSd3ZWJr
aXQnLCBicmFuY2g9J3RydW5rJywgYmVnaW49MTUzODA1MDQ1OCwgZW5kPTE1MzgwNTI0MDgpLAot
ICAgICAgICApCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01v
ZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRp
cz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9j
b21taXRzX3RvX2RhdGFiYXNlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICAgICAgW3NlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD02KSwgc2Vs
Zi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTQpXSwKKyAgICAgICAgICAgICAgICBz
ZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSd3ZWJraXQn
LCBicmFuY2g9J3RydW5rJywgYmVnaW49MTYwMTYzNzkwMCwgZW5kPTE2MDE2Mzk5MDApLAorICAg
ICAgICAgICAgKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tl
cihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRy
YUNvbnRleHQpCiAgICAgZGVmIHRlc3Rfc3Rhc2hfY29tbWl0c19iZXR3ZWVuKHNlbGYsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYu
aW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAg
c2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQotCi0gICAgICAgIGNvbW1pdHMgPSBb
Ci0gICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2
YmRhNWYnLCBicmFuY2g9J21hc3RlcicpLAotICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0
b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE4JywgYnJhbmNoPSdtYXN0ZXInKSwKLSAgICAg
ICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhNCcs
IGJyYW5jaD0nbWFzdGVyJyksCi0gICAgICAgIF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21taXRzLCBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lk
PSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsICBiZWdpbj1jb21taXRzWy0xXSwgZW5kPWNvbW1p
dHNbMF0pKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2Rl
bEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9
cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29t
bWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIGNvbW1pdHMgPSBbCisgICAgICAgICAg
ICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzFhYmUyNWI0NDNl
OScpLAorICAgICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lk
KGlkPSdmZmY4M2JiMmQ5MTcnKSwKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRv
cnkuY29tbWl0X2Zvcl9pZChpZD0nOWI4MzExZjI1YTc3JyksCisgICAgICAgICAgICBdCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmluZF9jb21t
aXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFpbicsICBiZWdp
bj1jb21taXRzWy0xXSwgZW5kPWNvbW1pdHNbMF0pKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19j
YXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3Rfc3ZuX2NvbW1pdHNf
YmV0d2VlbihzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRl
eHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1j
YXNzYW5kcmEpCi0gICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLQot
ICAgICAgICBjb21taXRzID0gWwotICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21t
aXRfZm9yX2lkKGlkPTIzNjU0NCwgYnJhbmNoPSd0cnVuaycpLAotICAgICAgICAgICAgc2VsZi5z
dm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MywgYnJhbmNoPSd0cnVuaycpLAot
ICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0Miwg
YnJhbmNoPSd0cnVuaycpLAotICAgICAgICBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29t
bWl0cywgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0n
d2Via2l0JywgYnJhbmNoPSd0cnVuaycsIGJlZ2luPWNvbW1pdHNbLTFdLCBlbmQ9Y29tbWl0c1sw
XSkpCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFj
dG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRp
cywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRz
X3RvX2RhdGFiYXNlKCkKKworICAgICAgICAgICAgY29tbWl0cyA9IFsKKyAgICAgICAgICAgICAg
ICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9NiksCisgICAgICAgICAgICAg
ICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTQpLAorICAgICAgICAgICAg
ICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yKSwKKyAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0cywgc2VsZi5kYXRhYmFzZS5m
aW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSd0cnVu
aycsIGJlZ2luPWNvbW1pdHNbLTFdLCBlbmQ9Y29tbWl0c1swXSkpCiAKICAgICBAV2FpdEZvckRv
Y2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlz
LCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9jb21t
aXRfZnJvbV9zdGFzaF9yZXBvKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fz
c2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywg
Y2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb21t
aXRfd2l0aF9yZXBvX2FuZF9pZCgnc2FmYXJpJywgJ21hc3RlcicsICdiYjZiZGE1ZjQ0JykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRv
cnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWY0NCcsIGJyYW5jaD0nbWFzdGVyJyldLAotICAg
ICAgICAgICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD0n
c2FmYXJpJywgYnJhbmNoPSdtYXN0ZXInLCBjb21taXRfaWQ9J2JiNmJkYTVmNDQnKSwKLSAgICAg
ICAgKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZh
Y3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVk
aXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lz
dGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKCdzYWZhcmknLCAnbWFpbicsICdkOGJjZTI2ZmE2
NWMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbc2Vs
Zi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2Q4YmNlMjZmYTY1YycpXSwKKyAg
ICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5
X2lkPSdzYWZhcmknLCBicmFuY2g9J21haW4nLCBjb21taXRfaWQ9J2Q4YmNlMjZmYTY1YycpLAor
ICAgICAgICAgICAgKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2Rv
Y2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3Nh
bmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfY29tbWl0X2Zyb21fc3ZuX3JlcG8oc2VsZiwgcmVk
aXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2Vs
Zi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAg
ICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKCd3ZWJraXQn
LCAndHJ1bmsnLCAyMzY1NDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAg
ICBbc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0NCwgYnJhbmNoPSd0
cnVuaycpXSwKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2J5X2lkKHJl
cG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCBjb21taXRfaWQ9MjM2NTQ0KSwK
LSAgICAgICAgKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tN
b2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVk
aXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmRhdGFiYXNl
LnJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKCd3ZWJraXQnLCAndHJ1bmsnLCA2KQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbc2VsZi5zdm5f
cmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTYpXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRh
dGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9
J3RydW5rJywgY29tbWl0X2lkPTYpLAorICAgICAgICAgICAgKQogCiAgICAgQFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywg
bW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfYnJhbmNo
ZXMoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToK
LSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2Fu
ZHJhKQotICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoWydtYXN0ZXInLCAnc2FmYXJpLTYwNi1icmFuY2gnXSwgc2VsZi5k
YXRhYmFzZS5icmFuY2hlcyhyZXBvc2l0b3J5X2lkPSdzYWZhcmknKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbJ3NhZmFyaS02MDYtYnJhbmNoJywgJ3RydW5rJ10sIHNlbGYuZGF0YWJhc2Uu
YnJhbmNoZXMocmVwb3NpdG9yeV9pZD0nd2Via2l0JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoWydzYWZhcmktNjA2LWJyYW5jaCddLCBzZWxmLmRhdGFiYXNlLmJyYW5jaGVzKHJlcG9zaXRv
cnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nc2FmYXJpJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoWydzYWZhcmktNjA2LWJyYW5jaCddLCBzZWxmLmRhdGFiYXNlLmJyYW5jaGVzKHJlcG9zaXRv
cnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0nc2FmYXJpLTYwNi1icmFuY2gnKSkKKyAgICAgICAgd2l0
aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgor
ICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fz
c2FuZHJhKQorICAgICAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ2JyYW5jaC1hJywgJ2JyYW5jaC1iJywgJ21h
aW4nXSwgc2VsZi5kYXRhYmFzZS5icmFuY2hlcyhyZXBvc2l0b3J5X2lkPSdzYWZhcmknKSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgWydicmFuY2gtYScs
ICdicmFuY2gtYicsICd0YWdzL3RhZy0xJywgJ3RhZ3MvdGFnLTInLCAndHJ1bmsnXSwKKyAgICAg
ICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmJyYW5jaGVzKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcp
LAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ2JyYW5jaC1h
JywgJ2JyYW5jaC1iJ10sIHNlbGYuZGF0YWJhc2UuYnJhbmNoZXMocmVwb3NpdG9yeV9pZD0nc2Fm
YXJpJywgYnJhbmNoPSdicmFuY2gnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydi
cmFuY2gtYSddLCBzZWxmLmRhdGFiYXNlLmJyYW5jaGVzKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcs
IGJyYW5jaD0nYnJhbmNoLWEnKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1v
Y2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X25leHRfY29tbWl0KHNlbGYsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYu
aW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAg
c2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLm5leHRfY29tbWl0KHNlbGYuc3ZuX3Jl
cG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDIpKSwKLSAgICAgICAgICAgIHNlbGYuc3Zu
X3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDMpLAotICAgICAgICApCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLm5leHRfY29tbWl0
KHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhNDBjM2ZlY2I3
Mjg4NzFlMTJjYTMxNDgyY2E3MTViMzgzJykpLAotICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBv
c2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE4NGZkY2YxNGRkY2YxZGI2NTA3NWFmOTU0
ODA1MTZmZGEnKSwKLSAgICAgICAgKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2Fm
YXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRf
ZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBz
ZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5uZXh0X2NvbW1pdChzZWxm
LnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9NCkpLAorICAgICAgICAgICAgICAgIHNl
bGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD02KSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFz
ZS5uZXh0X2NvbW1pdChzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmFl
NWQxZTkwOTk5JykpLAorICAgICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21t
aXRfZm9yX2lkKGlkPSdkOGJjZTI2ZmE2NWMnKSwKKyAgICAgICAgICAgICkKIAogICAgIEBXYWl0
Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0
UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0
X3ByZXZpb3VzX2NvbW1pdChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3Nh
bmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNh
c3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFi
YXNlKCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc2VsZi5zdm5f
cmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MiksCi0gICAgICAgICAgICBzZWxmLmRh
dGFiYXNlLnByZXZpb3VzX2NvbW1pdChzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQo
aWQ9MjM2NTQzKSksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAg
ICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhNDBj
M2ZlY2I3Mjg4NzFlMTJjYTMxNDgyY2E3MTViMzgzJyksCi0gICAgICAgICAgICBzZWxmLmRhdGFi
YXNlLnByZXZpb3VzX2NvbW1pdChzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChp
ZD0nMzM2NjEwYTg0ZmRjZjE0ZGRjZjFkYjY1MDc1YWY5NTQ4MDUxNmZkYScpKSwKLSAgICAgICAg
KQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rv
cnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMs
IGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190
b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTQpLAorICAgICAgICAg
ICAgICAgIHNlbGYuZGF0YWJhc2UucHJldmlvdXNfY29tbWl0KHNlbGYuc3ZuX3JlcG9zaXRvcnku
Y29tbWl0X2Zvcl9pZChpZD02KSksCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRf
Zm9yX2lkKGlkPSdiYWU1ZDFlOTA5OTknKSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNl
LnByZXZpb3VzX2NvbW1pdChzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0n
ZDhiY2UyNmZhNjVjJykpLAorICAgICAgICAgICAgKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19j
YXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3Rfc2libGluZ19jb21t
aXRzKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6
Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3Nh
bmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnNpYmxpbmdf
Y29tbWl0cyhzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQyKSwgWydz
YWZhcmknXSksCi0gICAgICAgICAgICB7J3NhZmFyaSc6IFtzZWxmLnN0YXNoX3JlcG9zaXRvcnku
Y29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWY0NGRkMjRkMGI1NDUzOWI4ZmY2ZThjMTdmNTE5MjQ5
YScpXX0sCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAg
IHNlbGYuZGF0YWJhc2Uuc2libGluZ19jb21taXRzKHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21t
aXRfZm9yX2lkKGlkPSdiYjZiZGE1ZjQ0ZGQyNGQwYjU0NTM5YjhmZjZlOGMxN2Y1MTkyNDlhJyks
IFsnd2Via2l0J10pLAotICAgICAgICAgICAgeyd3ZWJraXQnOiBbCi0gICAgICAgICAgICAgICAg
c2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0NCksCi0gICAgICAgICAg
ICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MyksCi0gICAg
ICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0Miks
Ci0gICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIz
NjU0MSksCi0gICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lk
KGlkPTIzNjU0MCksCi0gICAgICAgICAgICBdfSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5zaWJsaW5nX2NvbW1pdHMoc2Vs
Zi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE4NGZkY2YxNGRkY2Yx
ZGI2NTA3NWFmOTU0ODA1MTZmZGEnKSwgWyd3ZWJraXQnXSksCi0gICAgICAgICAgICB7J3dlYmtp
dCc6IFtdfSwKLSAgICAgICAgKQotCi0gICAgZGVmIHRlc3RfdXVpZF9mb3JfY29tbWl0cyhzZWxm
KToKLSAgICAgICAgdXVpZCA9IENvbW1pdENvbnRleHQudXVpZF9mb3JfY29tbWl0cyhbTW9ja1N0
YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSdiYjZiZGE1ZicpLCBNb2Nr
U1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0NCldKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHV1aWQsIDE1MzgwNTI0MDgwMCkKKyAgICAgICAgc2VsZi5tYXhE
aWZmID0gTm9uZQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tN
b2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVk
aXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxf
Y29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5zaWJsaW5nX2NvbW1pdHMoc2VsZi5zdm5fcmVw
b3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTYpLCBbJ3NhZmFyaSddKSwKKyAgICAgICAgICAgICAg
ICB7J3NhZmFyaSc6IFsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5
LmNvbW1pdF9mb3JfaWQoaWQ9J2Q4YmNlMjZmYTY1YycpLAorICAgICAgICAgICAgICAgICAgICBz
ZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmFlNWQxZTkwOTk5JyksCisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlk
PScxYWJlMjViNDQzZTknKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0
b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2ZmZjgzYmIyZDkxNycpLAorICAgICAgICAgICAgICAgICAg
ICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nOWI4MzExZjI1YTc3Jyks
CisKKyAgICAgICAgICAgICAgICBdfSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5zaWJsaW5nX2NvbW1p
dHMoc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2Q4YmNlMjZmYTY1Yycp
LCBbJ3dlYmtpdCddKSwKKyAgICAgICAgICAgICAgICB7J3dlYmtpdCc6IFtzZWxmLnN2bl9yZXBv
c2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9NildfSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5zaWJsaW5n
X2NvbW1pdHMoc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTEpLCBbJ3NhZmFy
aSddKSwKKyAgICAgICAgICAgICAgICB7J3NhZmFyaSc6IFtdfSwKKyAgICAgICAgICAgICkKKwor
ICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1G
YWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAg
IGRlZiB0ZXN0X3V1aWRfZm9yX2NvbW1pdHMoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3Nh
bmRyYT1DYXNzYW5kcmFDb250ZXh0KToKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNh
ZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0
X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAg
dXVpZCA9IENvbW1pdENvbnRleHQudXVpZF9mb3JfY29tbWl0cyhbCisgICAgICAgICAgICAgICAg
c2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2JhZTVkMWU5MDk5OScpLAor
ICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD02KSwK
KyAgICAgICAgICAgIF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV1aWQsIDE2MDE2
NjgwMDAwMCkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFD
b250ZXh0KQogICAgIGRlZiB0ZXN0X2JyYW5jaF9rZXlzX2Zvcl9jb21taXRzKHNlbGYsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYu
aW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAg
YnJhbmNoZXMgPSBzZWxmLmRhdGFiYXNlLmJyYW5jaF9rZXlzX2Zvcl9jb21taXRzKFsKLSAgICAg
ICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nYmI2
YmRhNWYnKSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9m
b3JfaWQoaWQ9MjM2NTQ0KSwKLSAgICAgICAgXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
cmFuY2hlcywgWydkZWZhdWx0J10pCi0KLSAgICAgICAgYnJhbmNoZXMgPSBzZWxmLmRhdGFiYXNl
LmJyYW5jaF9rZXlzX2Zvcl9jb21taXRzKFsKLSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRv
cnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nNzkyNTZjMzInLCBicmFuY2g9J3NhZmFyaS02
MDYtYnJhbmNoJyksCi0gICAgICAgICAgICBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21t
aXRfZm9yX2lkKGlkPTIzNjU0NCksCi0gICAgICAgIF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnJhbmNoZXMsIFsnc2FmYXJpLTYwNi1icmFuY2gnXSkKLQotICAgICAgICBicmFuY2hlcyA9
IHNlbGYuZGF0YWJhc2UuYnJhbmNoX2tleXNfZm9yX2NvbW1pdHMoWwotICAgICAgICAgICAgTW9j
a1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSc3OTI1NmMzMicsIGJy
YW5jaD0nc2FmYXJpLTYwNi1icmFuY2gnKSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5
LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2MzM1LCBicmFuY2g9J3NhZmFyaS02MDYtYnJh
bmNoJyksCi0gICAgICAgIF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnJhbmNoZXMsIFsn
c2FmYXJpLTYwNi1icmFuY2gnXSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFy
aSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2Rh
dGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgYnJh
bmNoZXMgPSBzZWxmLmRhdGFiYXNlLmJyYW5jaF9rZXlzX2Zvcl9jb21taXRzKFsKKyAgICAgICAg
ICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nZDhiY2UyNmZh
NjVjJyksCisgICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lk
KGlkPTYpLAorICAgICAgICAgICAgXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnJh
bmNoZXMsIFsnZGVmYXVsdCddKQorCisgICAgICAgICAgICBicmFuY2hlcyA9IHNlbGYuZGF0YWJh
c2UuYnJhbmNoX2tleXNfZm9yX2NvbW1pdHMoWworICAgICAgICAgICAgICAgIHNlbGYuc3Rhc2hf
cmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSc2MjE2NTJhZGQ3ZmMnKSwKKyAgICAgICAgICAg
ICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9NyksCisgICAgICAgICAg
ICBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChicmFuY2hlcywgWydicmFuY2gtYSdd
KQorCisgICAgICAgICAgICBicmFuY2hlcyA9IHNlbGYuZGF0YWJhc2UuYnJhbmNoX2tleXNfZm9y
X2NvbW1pdHMoWworICAgICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRf
Zm9yX2lkKGlkPSc3OTA3MjVhNmQ3OWUnKSwKKyAgICAgICAgICAgICAgICBzZWxmLnN2bl9yZXBv
c2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9OCksCisgICAgICAgICAgICBdKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChicmFuY2hlcywgWydicmFuY2gtYiddKQogCiAgICAgQFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRp
cywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfY29t
bWl0X3VybChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRl
eHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1j
YXNzYW5kcmEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAnaHR0cHM6
Ly9mYWtlLXN0YXNoLWluc3RhbmNlLmFwcGxlLmNvbS9wcm9qZWN0cy9CUk9XU0VSL3JlcG9zL3Nh
ZmFyaS9jb21taXRzL2JiNmJkYTVmNDRkZDI0ZDBiNTQ1MzliOGZmNmU4YzE3ZjUxOTI0OWEnLAot
ICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS51cmwoTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmko
KS5jb21taXRfZm9yX2lkKGlkPSdiYjZiZGE1ZicpKSwKLSAgICAgICAgKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAotICAgICAgICAgICAgJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8yMzY1NDQvd2Via2l0JywKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UudXJsKE1vY2tT
Vk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0KSksCi0gICAgICAg
ICkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0
b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlz
LCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgICAgICAnaHR0cHM6Ly9iaXRidWNrZXQuZXhhbXBsZS5jb20vcHJvamVjdHMvU0FG
QVJJL3JlcG9zL3NhZmFyaS9jb21taXRzL2Q4YmNlMjZmYTY1YzZmYzhmMzljMTc5MjdhYmI3N2Y2
OWZhYjgyZmMnLAorICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UudXJsKHNlbGYuc3Rhc2hf
cmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdkOGJjZTI2ZmE2NWMnKSksCisgICAgICAgICAg
ICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICdodHRw
czovL2NvbW1pdHMud2Via2l0Lm9yZy9yNicsCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFz
ZS51cmwoc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTYpKSwKKyAgICAgICAg
ICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L21vZGVsL2ZhaWx1cmVfY29udGV4dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9mYWlsdXJl
X2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3Mzk4MCkKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29udGV4dF91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMCwxNiArMjAsMTIgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
ICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IHRpbWUKLQogZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZh
a2VTdHJpY3RSZWRpcwogZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKIGZyb20gcmVzdWx0
c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uIGltcG9ydCBDb25maWd1cmF0aW9uCiBmcm9t
IHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250
ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0
IE1vY2tDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxf
ZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5t
b2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTVk5SZXBvc2l0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRpb25zCiBmcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZQogCiAKQEAgLTM3LDIzICszMywyNCBAQCBjbGFzcyBGYWlsdXJlQ29udGV4dFRlc3QoV2Fp
dEZvckRvY2tlclRlCiAgICAgS0VZU1BBQ0UgPSAnZmFpbHVyZV9jb250ZXh0X3Rlc3Rfa2V5c3Bh
Y2UnCiAKICAgICBkZWYgaW5pdF9kYXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fz
c2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFj
ZShrZXlzcGFjZT1zZWxmLktFWVNQQUNFKQotICAgICAgICBzZWxmLm1vZGVsID0gTW9ja01vZGVs
RmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFj
ZT1zZWxmLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkpCi0gICAgICAgIE1vY2tNb2Rl
bEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhzZWxmLm1vZGVsLCB0ZXN0X3Jlc3VsdHM9ZGljdCgK
LSAgICAgICAgICAgIGRldGFpbHM9ZGljdChsaW5rPSdkdW1teS1saW5rJyksCi0gICAgICAgICAg
ICBydW5fc3RhdHM9ZGljdCh0ZXN0c19za2lwcGVkPTApLAotICAgICAgICAgICAgcmVzdWx0cz17
Ci0gICAgICAgICAgICAgICAgJ2Zhc3QnOiB7Ci0gICAgICAgICAgICAgICAgICAgICdlbmNvZGlu
Zyc6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtY2FjaGVkLWJvbS5odG1sJzogZGlj
dChleHBlY3RlZD0nUEFTUycsIGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdjc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJzogZGljdChleHBlY3RlZD0n
RkFJTCcsIGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICdjc3MtY2hhcnNldC5odG1sJzogZGljdChleHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0nUEFTUycs
IHRpbWU9MS4yKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtbGluay1jaGFyc2V0Lmh0
bWwnOiBkaWN0KGV4cGVjdGVkPSdQQVNTJywgYWN0dWFsPSdQQVNTJywgdGltZT0xLjIpLAorICAg
ICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Vi
a2l0KCk6CisgICAgICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxm
LktFWVNQQUNFKQorICAgICAgICAgICAgc2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3Jl
YXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlT
UEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9y
eS5hZGRfbW9ja19yZXN1bHRzKHNlbGYubW9kZWwsIHRlc3RfcmVzdWx0cz1kaWN0KAorICAgICAg
ICAgICAgICAgIGRldGFpbHM9ZGljdChsaW5rPSdkdW1teS1saW5rJyksCisgICAgICAgICAgICAg
ICAgcnVuX3N0YXRzPWRpY3QodGVzdHNfc2tpcHBlZD0wKSwKKyAgICAgICAgICAgICAgICByZXN1
bHRzPXsKKyAgICAgICAgICAgICAgICAgICAgJ2Zhc3QnOiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAnZW5jb2RpbmcnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jYWNo
ZWQtYm9tLmh0bWwnOiBkaWN0KGV4cGVjdGVkPSdQQVNTJywgYWN0dWFsPSdGQUlMJywgdGltZT0x
LjIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtY2hhcnNldC1kZWZhdWx0Lnho
dG1sJzogZGljdChleHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWNoYXJzZXQuaHRtbCc6IGRpY3QoZXhwZWN0
ZWQ9J0ZBSUwnLCBhY3R1YWw9J1BBU1MnLCB0aW1lPTEuMiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2Nzcy1saW5rLWNoYXJzZXQuaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J1BBU1MnLCBh
Y3R1YWw9J1BBU1MnLCB0aW1lPTEuMiksCisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAg
ICAgICApKQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0cyhzZWxmLm1v
ZGVsKQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICApKQorICAgICAgICAgICAgTW9j
a01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMoc2VsZi5tb2RlbCkKIAogICAgIEBXYWl0Rm9y
RG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVk
aXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2Zh
aWx1cmVzX2NvbGxhcHNlZChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3Nh
bmRyYUNvbnRleHQpOgpAQCAtNjQsNyArNjEsNyBAQCBjbGFzcyBGYWlsdXJlQ29udGV4dFRlc3Qo
V2FpdEZvckRvY2tlclRlCiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihyZXN1bHRzKSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLCBzZXQoWydm
YXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwnLCAnZmFzdC9lbmNvZGluZy9jc3MtY2hh
cnNldC1kZWZhdWx0LnhodG1sJ10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMs
IHsnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJywgJ2Zhc3QvZW5jb2RpbmcvY3Nz
LWNoYXJzZXQtZGVmYXVsdC54aHRtbCd9KQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5t
b2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5k
cmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9mYWlsdXJl
c19jb2xsYXBzZWQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFD
b250ZXh0KToKQEAgLTc1LDcgKzcyLDcgQEAgY2xhc3MgRmFpbHVyZUNvbnRleHRUZXN0KFdhaXRG
b3JEb2NrZXJUZQogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVz
dWx0cyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cywgc2V0KFsnZmFzdC9l
bmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJ10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlc3VsdHMsIHsnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJ30pCiAKICAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYg
dGVzdF9mYWlsdXJlcyhzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRy
YUNvbnRleHQpOgpAQCAtOTEsNyArODgsNyBAQCBjbGFzcyBGYWlsdXJlQ29udGV4dFRlc3QoV2Fp
dEZvckRvY2tlclRlCiAgICAgICAgICAgICAnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5o
dG1sJzogJ0ZBSUwnLAogICAgICAgICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVm
YXVsdC54aHRtbCc6ICdGQUlMJywKICAgICAgICAgICAgICdzdGFydF90aW1lJzogbGlzdChyZXN1
bHRzLnZhbHVlcygpKVswXVswXVsnc3RhcnRfdGltZSddLAotICAgICAgICAgICAgJ3V1aWQnOiAx
NTM4MDI5NDc5MDAKKyAgICAgICAgICAgICd1dWlkJzogMTYwMTY2MDAwMDAwCiAgICAgICAgIH0p
CiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVk
aXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkK
QEAgLTEwNywxNSArMTA0LDE2IEBAIGNsYXNzIEZhaWx1cmVDb250ZXh0VGVzdChXYWl0Rm9yRG9j
a2VyVGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobGlzdChyZXN1bHRzLnZhbHVl
cygpKVswXSwga2V5PWxhbWJkYSB2YWx1ZTogdmFsdWVbJ3V1aWQnXSlbMF0sIHsKICAgICAgICAg
ICAgICdmYXN0L2VuY29kaW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwnOiAnRkFJTCcsCiAgICAgICAg
ICAgICAnc3RhcnRfdGltZSc6IGxpc3QocmVzdWx0cy52YWx1ZXMoKSlbMF1bMF1bJ3N0YXJ0X3Rp
bWUnXSwKLSAgICAgICAgICAgICd1dWlkJzogMTUzODAyOTQ3OTAwCisgICAgICAgICAgICAndXVp
ZCc6IDE2MDE2NjAwMDAwMAogICAgICAgICB9KQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2Fz
ZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNz
YW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3Rfbm9fZmFpbHVyZXMoc2Vs
ZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAg
ICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAg
ICAgc2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNh
c3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNl
PVRydWUpKQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMoc2VsZi5t
b2RlbCkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMoc2VsZi5tb2Rl
bCkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0
b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3Bh
Y2U9c2VsZi5LRVlTUEFDRSkKKyAgICAgICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0
b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNl
bGYuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAgICAgIE1vY2tNb2Rl
bEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhzZWxmLm1vZGVsKQorICAgICAgICAgICAgTW9ja01v
ZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMoc2VsZi5tb2RlbCkKICAgICAgICAgcmVzdWx0cyA9
IHNlbGYubW9kZWwuZmFpbHVyZV9jb250ZXh0LmZhaWx1cmVzX2J5X2NvbW1pdCgKICAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0n
UmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAogICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0
cycsIHJlY2VudD1UcnVlLCBjb2xsYXBzZWQ9RmFsc2UsIHVuZXhwZWN0ZWQ9RmFsc2UsCkluZGV4
OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9t
b2NrX21vZGVsX2ZhY3RvcnkucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19tb2RlbF9mYWN0b3J5LnB5CShy
ZXZpc2lvbiAyNzM5ODApCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9tb2RlbC9tb2NrX21vZGVsX2ZhY3RvcnkucHkJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDExICsyNCwxMiBAQCBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgaW8KIGltcG9ydCB0aW1lCiAK
LWltcG9ydCBjYWxlbmRhcgogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRp
b24gaW1wb3J0IENvbmZpZ3VyYXRpb24KIGZyb20gcmVzdWx0c2RicHkubW9kZWwuY29uZmlndXJh
dGlvbl9jb250ZXh0X3VuaXR0ZXN0IGltcG9ydCBDb25maWd1cmF0aW9uQ29udGV4dFRlc3QKLWZy
b20gcmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBv
c2l0b3J5LCBNb2NrU1ZOUmVwb3NpdG9yeQogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2RlbCBp
bXBvcnQgTW9kZWwKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQgU3Rh
c2hSZXBvc2l0b3J5LCBXZWJLaXRSZXBvc2l0b3J5CisKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0
IG1vY2tzCiAKIAogY2xhc3MgTW9ja01vZGVsRmFjdG9yeShvYmplY3QpOgpAQCAtNjAsMjkgKzYx
LDQwIEBAIGNsYXNzIE1vY2tNb2RlbEZhY3Rvcnkob2JqZWN0KToKICAgICBUSFJFRV9XRUVLUyA9
IDYwICogNjAgKiAyNCAqIDIxCiAKICAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2FmYXJpKGNs
cyk6CisgICAgICAgIHJldHVybiBtb2Nrcy5yZW1vdGUuQml0QnVja2V0KHJlbW90ZT0nYml0YnVj
a2V0LmV4YW1wbGUuY29tL3Byb2plY3RzL1NBRkFSSS9yZXBvcy9zYWZhcmknKQorCisgICAgQGNs
YXNzbWV0aG9kCisgICAgZGVmIHdlYmtpdChjbHMpOgorICAgICAgICByZXR1cm4gbW9ja3MucmVt
b3RlLlN2bihyZW1vdGU9J3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0JykKKworICAg
IEBjbGFzc21ldGhvZAogICAgIGRlZiBjcmVhdGUoY2xzLCByZWRpcywgY2Fzc2FuZHJhLCBhc3lu
Y19wcm9jZXNzaW5nPUZhbHNlKToKICAgICAgICAgb2xkZXN0X2NvbW1pdCA9IHRpbWUudGltZSgp
Ci0gICAgICAgIGZvciByZXBvIGluIFtNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLCBNb2Nr
U1ZOUmVwb3NpdG9yeS53ZWJraXQoKV06CisgICAgICAgIGZvciByZXBvIGluIFtjbHMuc2FmYXJp
KCksIGNscy53ZWJraXQoKV06CiAgICAgICAgICAgICBmb3IgY29tbWl0cyBpbiByZXBvLmNvbW1p
dHMudmFsdWVzKCk6CiAgICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgotICAg
ICAgICAgICAgICAgICAgICBvbGRlc3RfY29tbWl0ID0gbWluKG9sZGVzdF9jb21taXQsIGNhbGVu
ZGFyLnRpbWVnbShjb21taXQudGltZXN0YW1wLnRpbWV0dXBsZSgpKSkKKyAgICAgICAgICAgICAg
ICAgICAgb2xkZXN0X2NvbW1pdCA9IG1pbihvbGRlc3RfY29tbWl0LCBjb21taXQudGltZXN0YW1w
KQogCiAgICAgICAgIG1vZGVsID0gTW9kZWwoCiAgICAgICAgICAgICByZWRpcz1yZWRpcywKICAg
ICAgICAgICAgIGNhc3NhbmRyYT1jYXNzYW5kcmEsCiAgICAgICAgICAgICByZXBvc2l0b3JpZXM9
WwotICAgICAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKHJlZGlzPXJlZGlz
KSwKLSAgICAgICAgICAgICAgICBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQocmVkaXM9cmVkaXMp
LAorICAgICAgICAgICAgICAgIFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly9iaXRidWNrZXQuZXhh
bXBsZS5jb20vcHJvamVjdHMvU0FGQVJJL3JlcG9zL3NhZmFyaScpLAorICAgICAgICAgICAgICAg
IFdlYktpdFJlcG9zaXRvcnkoKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICBkZWZhdWx0
X3R0bF9zZWNvbmRzPXRpbWUudGltZSgpIC0gb2xkZXN0X2NvbW1pdCArIE1vZGVsLlRUTF9XRUVL
LAogICAgICAgICAgICAgYXJjaGl2ZV90dGxfc2Vjb25kcz10aW1lLnRpbWUoKSAtIG9sZGVzdF9j
b21taXQgKyBNb2RlbC5UVExfV0VFSywKICAgICAgICAgICAgIGFzeW5jX3Byb2Nlc3Npbmc9YXN5
bmNfcHJvY2Vzc2luZywKICAgICAgICAgKQotICAgICAgICB3aXRoIG1vZGVsLmNvbW1pdF9jb250
ZXh0LCBtb2RlbC5jb21taXRfY29udGV4dC5jYXNzYW5kcmEuYmF0Y2hfcXVlcnlfY29udGV4dCgp
OgotICAgICAgICAgICAgZm9yIHJlcG9zaXRvcnkgaW4gbW9kZWwuY29tbWl0X2NvbnRleHQucmVw
b3NpdG9yaWVzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIGZvciBicmFuY2hfY29tbWl0cyBp
biByZXBvc2l0b3J5LmNvbW1pdHMudmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBj
b21taXQgaW4gYnJhbmNoX2NvbW1pdHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5j
b21taXRfY29udGV4dC5yZWdpc3Rlcl9jb21taXQoY29tbWl0KQorICAgICAgICB3aXRoIGNscy5z
YWZhcmkoKSBhcyBzYWZhcmksIGNscy53ZWJraXQoKSBhcyB3ZWJraXQ6CisgICAgICAgICAgICB3
aXRoIG1vZGVsLmNvbW1pdF9jb250ZXh0LCBtb2RlbC5jb21taXRfY29udGV4dC5jYXNzYW5kcmEu
YmF0Y2hfcXVlcnlfY29udGV4dCgpOgorICAgICAgICAgICAgICAgIGZvciBrZXksIHJlcG9zaXRv
cnkgaW4gZGljdChzYWZhcmk9c2FmYXJpLCB3ZWJraXQ9d2Via2l0KS5pdGVtcygpOgorICAgICAg
ICAgICAgICAgICAgICBmb3IgYnJhbmNoLCBjb21taXRzIGluIHJlcG9zaXRvcnkuY29tbWl0cy5p
dGVtcygpOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLmNvbW1pdF9jb250ZXh0LnJlZ2lzdGVy
X2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrZXksIGJyYW5jaCwgY29tbWl0Lmhhc2ggb3IgY29tbWl0LnJldmlzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgcmV0dXJuIG1vZGVsCiAKICAgICBAY2xhc3Nt
ZXRob2QKQEAgLTEwNiw3ICsxMTgsNyBAQCBjbGFzcyBNb2NrTW9kZWxGYWN0b3J5KG9iamVjdCk6
CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGl0ZXJhdGVfYWxsX2NvbW1pdHMoY2xzLCBtb2Rl
bCwgY2FsbGJhY2spOgogICAgICAgICByZXBvcyA9ICgnd2Via2l0JywgJ3NhZmFyaScpCi0gICAg
ICAgIGJyYW5jaGVzID0gKE5vbmUsICdzYWZhcmktNjA2LWJyYW5jaCcpCisgICAgICAgIGJyYW5j
aGVzID0gKE5vbmUsICdicmFuY2gtYScpCiAgICAgICAgIGZvciBicmFuY2ggaW4gYnJhbmNoZXM6
CiAgICAgICAgICAgICBjb21taXRfaW5kZXggPSB7cmVwbzogMCBmb3IgcmVwbyBpbiByZXBvc30K
ICAgICAgICAgICAgIGNvbW1pdHNfZm9yX3JlcG8gPSB7cmVwbzogc29ydGVkKG1vZGVsLmNvbW1p
dF9jb250ZXh0LmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvLCBicmFuY2gpKSBmb3IgcmVwbyBp
biByZXBvc30KSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L21vZGVsL21vY2tfcmVwb3NpdG9yeS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2NrX3JlcG9zaXRv
cnkucHkJKHJldmlzaW9uIDI3Mzk4MCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vY2tfcmVwb3NpdG9yeS5weQkobm9uZXhpc3RlbnQp
CkBAIC0xLDMzMCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoK
LSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci1pbXBvcnQgY29udGV4dGxpYgotaW1wb3J0IGpzb24KLWltcG9ydCByZQotaW1wb3J0IHVybGxp
YgotaW1wb3J0IHhtbHRvZGljdAotCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGlj
dAotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9t
IHJlc3VsdHNkYnB5Lm1vZGVsLnJlcG9zaXRvcnkgaW1wb3J0IFN0YXNoUmVwb3NpdG9yeSwgU1ZO
UmVwb3NpdG9yeSwgV2ViS2l0UmVwb3NpdG9yeQotCi0KLWNsYXNzIE1vY2tSZXF1ZXN0KG9iamVj
dCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dD0nJywgc3RhdHVzX2NvZGU9MjAwKToK
LSAgICAgICAgc2VsZi50ZXh0ID0gdGV4dAotICAgICAgICBzZWxmLnN0YXR1c19jb2RlID0gc3Rh
dHVzX2NvZGUKLQotCi1jbGFzcyBNb2NrU3Rhc2hSZXBvc2l0b3J5KFN0YXNoUmVwb3NpdG9yeSk6
Ci0KLSAgICBDT01NSVRfUkUgPSByZS5jb21waWxlKHInY29tbWl0cy8oP1A8aGFzaD5bMC05YS1m
XSspJykKLSAgICBDT01NSVRfRk9SX0JSQU5DSF9SRSA9IHJlLmNvbXBpbGUocidjb21taXRzXD9z
aW5jZVw9KD9QPGhhc2g+WzAtOWEtZl0rKVwmdW50aWxcPSg/UDxicmFuY2g+W14mXSspXCZsaW1p
dFw9MScpCi0gICAgQ09NTUlUX0FUX0hFQURfUkUgPSByZS5jb21waWxlKHInY29tbWl0c1w/dW50
aWxcPSg/UDxicmFuY2g+W14mXSspXCZsaW1pdFw9XGQrJykKLSAgICBET0VTX05PVF9FWElTVF9S
RVNVTFQgPSB7J2Vycm9ycyc6IFt7Ci0gICAgICAgICdjb250ZXh0JzogTm9uZSwKLSAgICAgICAg
J21lc3NhZ2UnOiAnQ29tbWl0IFwnP1wnIGRvZXMgbm90IGV4aXN0IGluIHJlcG9zaXRvcnkuJywK
LSAgICAgICAgJ2V4Y2VwdGlvbk5hbWUnOiAnY29tLmF0bGFzc2lhbi5iaXRidWNrZXQuY29tbWl0
Lk5vU3VjaENvbW1pdEV4Y2VwdGlvbicsCi0gICAgfV19Ci0KLSAgICBAc3RhdGljbWV0aG9kCi0g
ICAgZGVmIHNhZmFyaShyZWRpcz1Ob25lKToKLSAgICAgICAgcmVzdWx0ID0gTW9ja1N0YXNoUmVw
b3NpdG9yeSgnaHR0cHM6Ly9mYWtlLXN0YXNoLWluc3RhbmNlLmFwcGxlLmNvbS9wcm9qZWN0cy9C
Uk9XU0VSL3JlcG9zL3NhZmFyaScsIG5hbWU9J3NhZmFyaScsIHJlZGlzPXJlZGlzKQotICAgICAg
ICByZXN1bHQuYWRkX2NvbW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJl
c3VsdC5uYW1lLCBicmFuY2g9J21hc3RlcicsIGlkPSdiYjZiZGE1ZjQ0ZGQyNGQwYjU0NTM5Yjhm
ZjZlOGMxN2Y1MTkyNDlhJywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3ODEwMjgxLCBvcmRl
cj0wLAotICAgICAgICAgICAgY29tbWl0dGVyPSdwZXJzb24xQGFwcGxlLmNvbScsCi0gICAgICAg
ICAgICBtZXNzYWdlPSdDaGFuZ2UgMSBkZXNjcmlwdGlvbi4nLAotICAgICAgICApKQotICAgICAg
ICByZXN1bHQuYWRkX2NvbW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJl
c3VsdC5uYW1lLCBicmFuY2g9J21hc3RlcicsIGlkPSczMzY2MTBhODRmZGNmMTRkZGNmMWRiNjUw
NzVhZjk1NDgwNTE2ZmRhJywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3ODA5ODE4LCBvcmRl
cj0wLAotICAgICAgICAgICAgY29tbWl0dGVyPSdwZXJzb24yQGFwcGxlLmNvbScsCi0gICAgICAg
ICAgICBtZXNzYWdlPSdDaGFuZ2UgMiBkZXNjcmlwdGlvbi4nLAotICAgICAgICApKQotICAgICAg
ICByZXN1bHQuYWRkX2NvbW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJl
c3VsdC5uYW1lLCBicmFuY2g9J21hc3RlcicsIGlkPSczMzY2MTBhNDBjM2ZlY2I3Mjg4NzFlMTJj
YTMxNDgyY2E3MTViMzgzJywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3NTY2Mzg2LCBvcmRl
cj0wLAotICAgICAgICAgICAgY29tbWl0dGVyPSdwZXJzb24zQGFwcGxlLmNvbScsCi0gICAgICAg
ICAgICBtZXNzYWdlPSc8cmRhcjovL3Byb2JsZW0vOTk5OTk5OTk+IENoYW5nZSAzIGRlc2NyaXB0
aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAg
ICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0nbWFzdGVyJywgaWQ9
J2U2NDgxMGE0MGMzZmVjYjcyODg3MWUxMmNhMzE0ODJjYTcxNWIzODMnLAotICAgICAgICAgICAg
dGltZXN0YW1wPTE1Mzc1NTA2ODUsIG9yZGVyPTAsCi0gICAgICAgICAgICBjb21taXR0ZXI9J3Bl
cnNvbjRAYXBwbGUuY29tJywKLSAgICAgICAgICAgIG1lc3NhZ2U9dSdDaGFuZ2UgNCBcdTIwMTQg
KFBhcnQgMSkgZGVzY3JpcHRpb24uJywKLSAgICAgICAgKSkKLSAgICAgICAgcmVzdWx0LmFkZF9j
b21taXQoQ29tbWl0KAotICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXN1bHQubmFtZSwgYnJh
bmNoPSdtYXN0ZXInLCBpZD0nN2JlNDA4NDI1OGE0NTJlOGZlMjJmMzYyODdjNWIzMjFlOWM4MjQ5
YicsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzNzU1MDY4NSwgb3JkZXI9MSwKLSAgICAgICAg
ICAgIGNvbW1pdHRlcj0ncGVyc29uNEBhcHBsZS5jb20nLAotICAgICAgICAgICAgbWVzc2FnZT11
J0NoYW5nZSA0IFx1MjAxNCAoUGFydCAyKSBkZXNjcmlwdGlvbi5cblJldmlld2VkIGJ5IHBlcnNv
bi4nLAotICAgICAgICApKQotCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAg
ICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0nc2FmYXJpLTYwNi1i
cmFuY2gnLCBpZD0nNzkyNTZjMzJhODU1YWM4NjEyMTEyMjc5MDA4MzM0ZDkwZTkwMWM1NScsCi0g
ICAgICAgICAgICB0aW1lc3RhbXA9MTUzNzg5NzM2Nywgb3JkZXI9MCwKLSAgICAgICAgICAgIGNv
bW1pdHRlcj0ncGVyc29uNUBhcHBsZS5jb20nLAotICAgICAgICAgICAgbWVzc2FnZT0nQ2hhbmdl
IDUgZGVzY3JpcHRpb24uJywKLSAgICAgICAgKSkKLSAgICAgICAgcmVzdWx0LmFkZF9jb21taXQo
Q29tbWl0KAotICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXN1bHQubmFtZSwgYnJhbmNoPSdz
YWZhcmktNjA2LWJyYW5jaCcsIGlkPSdkODUyMjJkOTQwN2ZkYmJmNDc0MDY1MDk0MDBhOWNlY2I3
M2FjNmRlJywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3NTYzMzgzLCBvcmRlcj0wLAotICAg
ICAgICAgICAgY29tbWl0dGVyPSdwZXJzb242QGFwcGxlLmNvbScsCi0gICAgICAgICAgICBtZXNz
YWdlPSdDaGFuZ2UgNiBkZXNjcmlwdGlvbi4nLAotICAgICAgICApKQotICAgICAgICByZXR1cm4g
cmVzdWx0Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCBuYW1lLCAqKmt3YXJncyk6Ci0g
ICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5jb21taXRzID0gZGVmYXVsdGRp
Y3QobGlzdCkKLQotICAgICAgICBzdXBlcihNb2NrU3Rhc2hSZXBvc2l0b3J5LCBzZWxmKS5fX2lu
aXRfXyh1cmwsICoqa3dhcmdzKQotCi0gICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLSAg
ICBkZWYgc2Vzc2lvbihzZWxmKToKLSAgICAgICAgc2VsZi5fc2Vzc2lvbl9kZXB0aCArPSAxCi0g
ICAgICAgIHlpZWxkCi0gICAgICAgIHNlbGYuX3Nlc3Npb25fZGVwdGggLT0gMQotCi0gICAgZGVm
IGFkZF9jb21taXQoc2VsZiwgY29tbWl0KToKLSAgICAgICAgY29waWVkX2NvbW1pdCA9IENvbW1p
dC5mcm9tX2pzb24oY29tbWl0LnRvX2pzb24oKSkKLSAgICAgICAgY29waWVkX2NvbW1pdC5yZXBv
c2l0b3J5X2lkID0gc2VsZi5uYW1lCi0gICAgICAgIHNlbGYuY29tbWl0c1tjb3BpZWRfY29tbWl0
LmJyYW5jaF0uYXBwZW5kKGNvcGllZF9jb21taXQpCi0gICAgICAgIHNlbGYuY29tbWl0c1tjb3Bp
ZWRfY29tbWl0LmJyYW5jaF0gPSBzb3J0ZWQoc2VsZi5jb21taXRzW2NvcGllZF9jb21taXQuYnJh
bmNoXSkKLQotICAgIGRlZiByZXF1ZXN0KHNlbGYsIHVybCwgbWV0aG9kPSdHRVQnLCAqKmt3YXJn
cyk6Ci0gICAgICAgIGlmIG5vdCB1cmwuc3RhcnRzd2l0aChzZWxmLnVybCkgb3IgbWV0aG9kICE9
ICdHRVQnOgotICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkK
LQotICAgICAgICBwYXRoID0gdXJsW2xlbihzZWxmLnVybCkgKyAxOl0KLSAgICAgICAgaWYgbm90
IHBhdGg6Ci0gICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3QoanNvbi5kdW1wcyh7J3NsdWcn
OiBzZWxmLm5hbWV9KSkKLQotICAgICAgICBtYXRjaCA9IHNlbGYuQ09NTUlUX1JFLm1hdGNoKHBh
dGgpCi0gICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgaW5kZXggPSAtMQotICAgICAgICAg
ICAgYnJhbmNoID0gTm9uZQotICAgICAgICAgICAgZm9yIGtleSwgY29tbWl0cyBpbiBzZWxmLmNv
bW1pdHMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY29tbWl0
cykpOgotICAgICAgICAgICAgICAgICAgICBpZiBjb21taXRzW2ldLmlkLnN0YXJ0c3dpdGgobWF0
Y2guZ3JvdXAoJ2hhc2gnKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpbmRleCAhPSAt
MToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3QoanNvbi5k
dW1wcyhzZWxmLkRPRVNfTk9UX0VYSVNUX1JFU1VMVCksIHN0YXR1c19jb2RlPTQwMSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaQotICAgICAgICAgICAgICAgICAgICAgICAgYnJh
bmNoID0ga2V5Ci0gICAgICAgICAgICBpZiBpbmRleCA9PSAtMSBvciBub3QgYnJhbmNoOgotICAg
ICAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChqc29uLmR1bXBzKHNlbGYuRE9FU19OT1Rf
RVhJU1RfUkVTVUxUKSwgc3RhdHVzX2NvZGU9NDAxKQotICAgICAgICAgICAgcmV0dXJuIE1vY2tS
ZXF1ZXN0KGpzb24uZHVtcHMoewotICAgICAgICAgICAgICAgICdpZCc6IHNlbGYuY29tbWl0c1ti
cmFuY2hdW2luZGV4XS5pZCwKLSAgICAgICAgICAgICAgICAnY29tbWl0dGVyJzogeydlbWFpbEFk
ZHJlc3MnOiBzZWxmLmNvbW1pdHNbYnJhbmNoXVtpbmRleF0uY29tbWl0dGVyfSwKLSAgICAgICAg
ICAgICAgICAnY29tbWl0dGVyVGltZXN0YW1wJzogc2VsZi5jb21taXRzW2JyYW5jaF1baW5kZXhd
LnRpbWVzdGFtcF9hc19lcG9jaCgpICogc2VsZi5DT01NSVRfVElNRVNUQU1QX0NPTlZFUlNJT04s
Ci0gICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBzZWxmLmNvbW1pdHNbYnJhbmNoXVtpbmRleF0u
bWVzc2FnZSwKLSAgICAgICAgICAgICAgICAncGFyZW50cyc6IFtdIGlmIGluZGV4ID09IDAgZWxz
ZSBbewotICAgICAgICAgICAgICAgICAgICAnaWQnOiBzZWxmLmNvbW1pdHNbYnJhbmNoXVtpbmRl
eCAtIDFdLmlkLAotICAgICAgICAgICAgICAgICAgICAnY29tbWl0dGVyVGltZXN0YW1wJzogc2Vs
Zi5jb21taXRzW2JyYW5jaF1baW5kZXggLSAxXS50aW1lc3RhbXBfYXNfZXBvY2goKSAqIHNlbGYu
Q09NTUlUX1RJTUVTVEFNUF9DT05WRVJTSU9OLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAg
ICAgICAgfSkpCi0KLSAgICAgICAgbWF0Y2ggPSBzZWxmLkNPTU1JVF9GT1JfQlJBTkNIX1JFLm1h
dGNoKHBhdGgpCi0gICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgYnJhbmNoID0gdXJsbGli
LnBhcnNlLnVucXVvdGUobWF0Y2guZ3JvdXAoJ2JyYW5jaCcpKVtsZW4oJ3JlZnMvaGVhZHMnKSAr
IDE6XQotICAgICAgICAgICAgaGFzX2ZvdW5kID0gRmFsc2UKLSAgICAgICAgICAgIGlmIHNlbGYu
Y29tbWl0cy5nZXQoYnJhbmNoKToKLSAgICAgICAgICAgICAgICBmb3IgY29tbWl0IGluIHNlbGYu
Y29tbWl0c1ticmFuY2hdWzotMV06Ci0gICAgICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5pZC5z
dGFydHN3aXRoKG1hdGNoLmdyb3VwKCdoYXNoJykpOgotICAgICAgICAgICAgICAgICAgICAgICAg
aGFzX2ZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
ICAgIHJldHVybiBNb2NrUmVxdWVzdChqc29uLmR1bXBzKHsnc2l6ZSc6IDEgaWYgaGFzX2ZvdW5k
IGVsc2UgMCwgJ2lzTGFzdFBhZ2UnOiBUcnVlfSkpCi0KLSAgICAgICAgbWF0Y2ggPSBzZWxmLkNP
TU1JVF9BVF9IRUFEX1JFLm1hdGNoKHBhdGgpCi0gICAgICAgIGlmIG1hdGNoOgotICAgICAgICAg
ICAgYnJhbmNoID0gbWF0Y2guZ3JvdXAoJ2JyYW5jaCcpLnJlcGxhY2UoJyUyRicsICcvJylbbGVu
KCdyZWZzL2hlYWRzJykgKyAxOl0KLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNvbW1pdHMuZ2V0
KGJyYW5jaCwgW10pOgotICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChqc29uLmR1
bXBzKHNlbGYuRE9FU19OT1RfRVhJU1RfUkVTVUxUKSwgc3RhdHVzX2NvZGU9NDAxKQotICAgICAg
ICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KGpzb24uZHVtcHMoeyd2YWx1ZXMnOiBbeydpZCc6IHNl
bGYuY29tbWl0c1ticmFuY2hdWy0xXS5pZH1dLCAnc2l6ZSc6IDEsICdpc0xhc3RQYWdlJzogVHJ1
ZX0pKQotCi0gICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNfY29kZT00MDQpCi0KLQot
IyBVc2VzIG11bHRpcGxlIGluaGVyaXRhbmNlIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGZ1
bmN0aW9ucyBpbiB0aGlzIGNsYXNzLgotY2xhc3MgX1NWTk1vY2sob2JqZWN0KToKLSAgICBTVk5f
VVJMX1JFID0gcmUuY29tcGlsZShyJ1whc3ZuL3J2ci8oP1A8cmV2aXNpb24+WzAtOV0rKS8oP1A8
YnJhbmNoPi4qKScpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgdXJsPU5vbmUpOgot
ICAgICAgICBzZWxmLmNvbW1pdHMgPSBkZWZhdWx0ZGljdChsaXN0KQotICAgICAgICBzZWxmLm5h
bWUgPSBuYW1lCi0KLSAgICAgICAgIyBTaG91bGQgYmUgb3ZlcnJpZGVuIGJ5IHRoZSBTVk5SZXBv
c2l0b3J5IGNsYXNzCi0gICAgICAgIHNlbGYudXJsID0gdXJsIGlmIHVybCBlbHNlICcnCi0gICAg
ICAgIHNlbGYuX3Nlc3Npb25fZGVwdGggPSAwCi0KLSAgICBAY29udGV4dGxpYi5jb250ZXh0bWFu
YWdlcgotICAgIGRlZiBzZXNzaW9uKHNlbGYpOgotICAgICAgICBzZWxmLl9zZXNzaW9uX2RlcHRo
ICs9IDEKLSAgICAgICAgeWllbGQKLSAgICAgICAgc2VsZi5fc2Vzc2lvbl9kZXB0aCAtPSAxCi0K
LSAgICBkZWYgYWRkX2NvbW1pdChzZWxmLCBjb21taXQpOgotICAgICAgICBjb3BpZWRfY29tbWl0
ID0gQ29tbWl0LmZyb21fanNvbihjb21taXQudG9fanNvbigpKQotICAgICAgICBjb3BpZWRfY29t
bWl0LnJlcG9zaXRvcnlfaWQgPSBzZWxmLm5hbWUKLSAgICAgICAgc2VsZi5jb21taXRzW2NvcGll
ZF9jb21taXQuYnJhbmNoXS5hcHBlbmQoY29waWVkX2NvbW1pdCkKLSAgICAgICAgc2VsZi5jb21t
aXRzW2NvcGllZF9jb21taXQuYnJhbmNoXSA9IHNvcnRlZChzZWxmLmNvbW1pdHNbY29waWVkX2Nv
bW1pdC5icmFuY2hdKQotCi0gICAgZGVmIHJlcXVlc3Qoc2VsZiwgdXJsLCBtZXRob2Q9J0dFVCcs
ICoqa3dhcmdzKToKLSAgICAgICAgaWYgbm90IHVybC5zdGFydHN3aXRoKHNlbGYudXJsKToKLSAg
ICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNfY29kZT00MDQpCi0KLSAgICAgICAg
aWYgbWV0aG9kID09ICdHRVQnIGFuZCB1cmwgPT0gc2VsZi51cmw6Ci0gICAgICAgICAgICByZXR1
cm4gTW9ja1JlcXVlc3QodGV4dD14bWx0b2RpY3QudW5wYXJzZSh7J3N2bic6IHsnaW5kZXgnOiB7
J0BiYXNlJzogc2VsZi5uYW1lfX19KSwgc3RhdHVzX2NvZGU9MjAwKQotICAgICAgICBpZiBtZXRo
b2QgIT0gJ1BST1BGSU5EJzoKLSAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNf
Y29kZT00MDQpCi0KLSAgICAgICAgcGF0aCA9IHVybFtsZW4oc2VsZi51cmwpOl0KLSAgICAgICAg
bWF0Y2ggPSBzZWxmLlNWTl9VUkxfUkUubWF0Y2gocGF0aCkKLSAgICAgICAgaWYgbm90IG1hdGNo
OgotICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkKLSAgICAg
ICAgcmV2aXNpb24gPSBtYXRjaC5ncm91cCgncmV2aXNpb24nKQotICAgICAgICBicmFuY2ggPSBt
YXRjaC5ncm91cCgnYnJhbmNoJykKLSAgICAgICAgaWYgYnJhbmNoICE9ICd0cnVuayc6Ci0gICAg
ICAgICAgICBicmFuY2ggPSBicmFuY2hbbGVuKCdicmFuY2hlcy8nKTpdCi0KLSAgICAgICAgaWYg
YnJhbmNoIG5vdCBpbiBzZWxmLmNvbW1pdHM6Ci0gICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVl
c3Qoc3RhdHVzX2NvZGU9NDA0KQotCi0gICAgICAgIGZvciBjb21taXQgaW4gc2VsZi5jb21taXRz
W2JyYW5jaF06Ci0gICAgICAgICAgICBpZiBjb21taXQuaWQgPT0gcmV2aXNpb246Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KAotICAgICAgICAgICAgICAgICAgICB0ZXh0PXht
bHRvZGljdC51bnBhcnNlKHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdEOm11bHRpc3RhdHVz
JzogeydEOnJlc3BvbnNlJzogeydEOnByb3BzdGF0JzogWwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsnRDpwcm9wJzogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHAx
OnZlcnNpb24tbmFtZSc6IGNvbW1pdC5pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2xwMTpjcmVhdGlvbmRhdGUnOiBjb21taXQudGltZXN0YW1wLnN0cmZ0aW1lKCclWS0lbS0l
ZFQlSDolTTolUy4lZlonKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xwMTpj
cmVhdG9yLWRpc3BsYXluYW1lJzogY29tbWl0LmNvbW1pdHRlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J0Q6c3RhdHVzJzog
J0hUVFAvMS4xIDIwMCBPSyd9LAotICAgICAgICAgICAgICAgICAgICAgICAgXX19LAotICAgICAg
ICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzX2NvZGU9MjA3LAot
ICAgICAgICAgICAgICAgICkKLSAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2Rl
PTQwNCkKLQotCi1jbGFzcyBNb2NrU1ZOUmVwb3NpdG9yeShfU1ZOTW9jaywgU1ZOUmVwb3NpdG9y
eSk6Ci0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHdlYmtpdChyZWRpcz1Ob25lKToKLSAg
ICAgICAgcmVzdWx0ID0gTW9ja1dlYktpdFJlcG9zaXRvcnkocmVkaXM9cmVkaXMpCi0gICAgICAg
IHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVz
dWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDQsCi0gICAgICAgICAgICB0aW1lc3Rh
bXA9MTUzODA1MjQwOCwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uMUB3
ZWJraXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSAxIGRlc2NyaXB0aW9uLics
Ci0gICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAg
ICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDMs
Ci0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODA1MDQ1OCwgb3JkZXI9MCwKLSAgICAgICAgICAg
IGNvbW1pdHRlcj0ncGVyc29uMkB3ZWJraXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0No
YW5nZSAyIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29t
bWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5j
aD0ndHJ1bmsnLCBpZD0yMzY1NDIsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODA0OTEwOCwg
b3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uM0B3ZWJraXQub3JnJywKLSAg
ICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSAzIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0g
ICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlf
aWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDEsCi0gICAgICAgICAgICB0
aW1lc3RhbXA9MTUzODA0MTc5Miwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVy
c29uNEB3ZWJraXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSA0IChQYXJ0IDIp
IGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENv
bW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1
bmsnLCBpZD0yMzY1NDAsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODAyOTQ3OSwgb3JkZXI9
MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uNEB3ZWJraXQub3JnJywKLSAgICAgICAg
ICAgIG1lc3NhZ2U9J0NoYW5nZSA0IChQYXJ0IDEpIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkp
Ci0KLSAgICAgICAgcmVzdWx0LmFkZF9jb21taXQoQ29tbWl0KAotICAgICAgICAgICAgcmVwb3Np
dG9yeV9pZD1yZXN1bHQubmFtZSwgYnJhbmNoPSdzYWZhcmktNjA2LWJyYW5jaCcsIGlkPTIzNjMz
NSwKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM4MDI5NDgwLCBvcmRlcj0wLAotICAgICAgICAg
ICAgY29tbWl0dGVyPSdpbnRlZ3JhdG9yQHdlYmtpdC5vcmcnLAotICAgICAgICAgICAgbWVzc2Fn
ZT0nSW50ZWdyYXRpb24gMS4nLAotICAgICAgICApKQotICAgICAgICByZXN1bHQuYWRkX2NvbW1p
dChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlc3VsdC5uYW1lLCBicmFuY2g9
J3NhZmFyaS02MDYtYnJhbmNoJywgaWQ9MjM2MzM0LAotICAgICAgICAgICAgdGltZXN0YW1wPTE1
MzgwMjk0NzksIG9yZGVyPTAsCi0gICAgICAgICAgICBjb21taXR0ZXI9J2ludGVncmF0b3JAd2Vi
a2l0Lm9yZycsCi0gICAgICAgICAgICBtZXNzYWdlPSdJbnRlZ3JhdGlvbiAyLicsCi0gICAgICAg
ICkpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmws
IG5hbWUsICoqa3dhcmdzKToKLSAgICAgICAgX1NWTk1vY2suX19pbml0X18oc2VsZiwgbmFtZT1u
YW1lLCB1cmw9dXJsKQotICAgICAgICBTVk5SZXBvc2l0b3J5Ll9faW5pdF9fKHNlbGYsIHVybD11
cmwsICoqa3dhcmdzKQotCi0KLWNsYXNzIE1vY2tXZWJLaXRSZXBvc2l0b3J5KF9TVk5Nb2NrLCBX
ZWJLaXRSZXBvc2l0b3J5KToKLQotICAgIENIQU5HRUxPR19VUkxfUkUgPSByZS5jb21waWxlKHIn
KD9QPGJyYW5jaD50cnVua3xicmFuY2hlc1wvLispXC8oP1A8cGF0aD4uKylcL1w/cD0oP1A8cmV2
aXNpb24+WzAtOV0rKScpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAg
ICAgICBfU1ZOTW9jay5fX2luaXRfXyhzZWxmLCBuYW1lPSd3ZWJraXQnKQotICAgICAgICBXZWJL
aXRSZXBvc2l0b3J5Ll9faW5pdF9fKHNlbGYsICoqa3dhcmdzKQotCi0gICAgZGVmIHJlcXVlc3Qo
c2VsZiwgdXJsLCBtZXRob2Q9J0dFVCcsICoqa3dhcmdzKToKLSAgICAgICAgaWYgbm90IHVybC5z
dGFydHN3aXRoKHNlbGYudXJsKToKLSAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChzdGF0
dXNfY29kZT00MDQpCi0KLSAgICAgICAgIyBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBmYWxs
YmFjayB0byBfU1ZOTW9jawotICAgICAgICBpZiBtZXRob2QgIT0gJ0dFVCc6Ci0gICAgICAgICAg
ICByZXR1cm4gX1NWTk1vY2sucmVxdWVzdChzZWxmLCB1cmwsIG1ldGhvZD1tZXRob2QsICoqa3dh
cmdzKQotCi0gICAgICAgIHBhdGggPSB1cmxbbGVuKHNlbGYudXJsKTpdCi0gICAgICAgIG1hdGNo
ID0gc2VsZi5DSEFOR0VMT0dfVVJMX1JFLm1hdGNoKHBhdGgpCi0gICAgICAgIGlmIG5vdCBtYXRj
aDoKLSAgICAgICAgICAgIHJldHVybiBfU1ZOTW9jay5yZXF1ZXN0KHNlbGYsIHVybCwgbWV0aG9k
PW1ldGhvZCwgKiprd2FyZ3MpCi0KLSAgICAgICAgaWYgbWF0Y2guZ3JvdXAoJ3BhdGgnKSBub3Qg
aW4gV2ViS2l0UmVwb3NpdG9yeS5DSEFOR0VMT0dTOgotICAgICAgICAgICAgcmV0dXJuIE1vY2tS
ZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkKLSAgICAgICAgaWYgbWF0Y2guZ3JvdXAoJ3BhdGgnKSBu
b3QgaW4gKCdDaGFuZ2VMb2cnLCAnVG9vbHMvQ2hhbmdlTG9nJyk6Ci0gICAgICAgICAgICByZXR1
cm4gTW9ja1JlcXVlc3Qoc3RhdHVzX2NvZGU9MjAwKQotCi0gICAgICAgIHJldmlzaW9uID0gbWF0
Y2guZ3JvdXAoJ3JldmlzaW9uJykKLSAgICAgICAgYnJhbmNoID0gbWF0Y2guZ3JvdXAoJ2JyYW5j
aCcpCi0gICAgICAgIGlmIGJyYW5jaCAhPSAndHJ1bmsnOgotICAgICAgICAgICAgYnJhbmNoID0g
YnJhbmNoW2xlbignYnJhbmNoZXMvJyk6XQotCi0gICAgICAgIGNoYW5nZWxvZ19mb3JfY29tbWl0
ID0gJycKLSAgICAgICAgZm9yIGNvbW1pdCBpbiBzZWxmLmNvbW1pdHNbYnJhbmNoXToKLSAgICAg
ICAgICAgIGNoYW5nZWxvZ19mb3JfY29tbWl0ID0gZiIiIntjb21taXQudGltZXN0YW1wLnN0cmZ0
aW1lKCclWS0lbS0lZCcpfSAgSm9uIENvbW1pdHRlciAgPHtjb21taXQuY29tbWl0dGVyfT4KLQot
ICAgICAgICB7Y29tbWl0Lm1lc3NhZ2V9Ci0iIiIgKyBjaGFuZ2Vsb2dfZm9yX2NvbW1pdAotCi0g
ICAgICAgICAgICBpZiBjb21taXQuaWQgPT0gcmV2aXNpb246Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIE1vY2tSZXF1ZXN0KHRleHQ9Y2hhbmdlbG9nX2Zvcl9jb21taXQsIHN0YXR1c19jb2RlPTIw
MCkKLQotICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3Qoc3RhdHVzX2NvZGU9NDA0KQpJbmRleDog
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9k
ZWxfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWxfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3
Mzk4MCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L21vZGVsL21vZGVsX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTIg
QEAgY2xhc3MgTW9kZWxUZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6CiAgICAgS0VZU1BBQ0Ug
PSAnbW9kZWxfdGVzdF9rZXlzcGFjZScKIAogICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCwgYXN5bmNfcHJvY2Vz
c2luZz1GYWxzZSk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNl
bGYuS0VZU1BBQ0UpCi0gICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0
ZSgKLSAgICAgICAgICAgIHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3Bh
Y2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpLAotICAgICAgICAgICAgYXN5
bmNfcHJvY2Vzc2luZz1hc3luY19wcm9jZXNzaW5nLAotICAgICAgICApCisgICAgICAgIHdpdGgg
TW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAg
ICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0Up
CisgICAgICAgICAgICBzZWxmLm1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUoCisgICAg
ICAgICAgICAgICAgcmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1z
ZWxmLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSksCisgICAgICAgICAgICAgICAgYXN5
bmNfcHJvY2Vzc2luZz1hc3luY19wcm9jZXNzaW5nLAorICAgICAgICAgICAgKQogCiAgICAgQFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJp
Y3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRl
c3RfaGVhbHRoKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29u
dGV4dCk6CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9yZXBvc2l0b3J5LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnkucHkJKHJldmlz
aW9uIDI3Mzk4MCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L21vZGVsL3JlcG9zaXRvcnkucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAsMzcwICsyMCw2OCBAQAogIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9y
dCBjb250ZXh0bGliCi1pbXBvcnQganNvbgotaW1wb3J0IHJlCi1pbXBvcnQgcmVxdWVzdHMKLWlt
cG9ydCB0aHJlYWRpbmcKLWltcG9ydCB1cmxsaWIKLWltcG9ydCB4bWx0b2RpY3QKLQogZnJvbSBy
ZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHhtbC5wYXJz
ZXJzLmV4cGF0IGltcG9ydCBFeHBhdEVycm9yCi0KLQotY2xhc3MgU0NNRXhjZXB0aW9uKFJ1bnRp
bWVFcnJvcik6Ci0gICAgcGFzcworZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgcmVtb3RlCiAKIAog
Y2xhc3MgUmVwb3NpdG9yeShvYmplY3QpOgotICAgIERFRkFVTFRfQlJBTkNIID0gJ21hc3RlcicK
IAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXkpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBr
ZXksIGRlZmF1bHRfYnJhbmNoPU5vbmUpOgogICAgICAgICBzZWxmLmtleSA9IGtleQorICAgICAg
ICBzZWxmLmRlZmF1bHRfYnJhbmNoID0gZGVmYXVsdF9icmFuY2ggb3IgJ21haW4nCiAKLSAgICBk
ZWYgY29tbWl0X2Zvcl9pZChzZWxmLCBpZCwgYnJhbmNoPU5vbmUpOgorICAgIGRlZiBjb21taXRf
Zm9yX2lkKHNlbGYsIGlkKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAK
ICAgICBkZWYgdXJsX2Zvcl9jb21taXQoc2VsZiwgY29tbWl0KToKICAgICAgICAgcmV0dXJuIE5v
bmUKIAogCi1jbGFzcyBIVFRQUmVwb3NpdG9yeShSZXBvc2l0b3J5KToKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBrZXksIHVybCwgcmVkaXM9Tm9uZSwgdXNlcm5hbWU9Tm9uZSwgcGFzc3dvcmQ9
Tm9uZSk6Ci0gICAgICAgIHN1cGVyKEhUVFBSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXyhrZXkp
Ci0gICAgICAgIHNlbGYudXJsID0gdXJsCi0gICAgICAgIHNlbGYuX3VzZXJuYW1lID0gdXNlcm5h
bWUKLSAgICAgICAgc2VsZi5fcGFzc3dvcmQgPSBwYXNzd29yZAotICAgICAgICBzZWxmLl9zZXNz
aW9uID0gTm9uZQotICAgICAgICBzZWxmLl9zZXNzaW9uX2RlcHRoID0gMAotICAgICAgICBzZWxm
LnJlZGlzID0gcmVkaXMgICMgSW4gbWFueSBjYXNlcywgd2UgY2FuIGdyZWF0bHkgcmVkdWNlIHRo
ZSBudW1iZXIgb2YgcmVxdWVzdHMgbWFkZSBieSBjYWNoaW5nIHJlcXVlc3RzIGluIFJlZGlzLgot
Ci0gICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLSAgICBkZWYgc2Vzc2lvbihzZWxmKToK
LSAgICAgICAgaWYgbm90IHNlbGYuX3Nlc3Npb246Ci0gICAgICAgICAgICBzZWxmLl9zZXNzaW9u
ID0gcmVxdWVzdHMuU2Vzc2lvbigpCi0gICAgICAgICAgICBpZiBzZWxmLl91c2VybmFtZSBhbmQg
c2VsZi5fcGFzc3dvcmQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2Vzc2lvbi5hdXRoID0gKHNl
bGYuX3VzZXJuYW1lLCBzZWxmLl9wYXNzd29yZCkKLSAgICAgICAgICAgIHNlbGYuX3Nlc3Npb24u
bW91bnQoc2VsZi51cmwsIHJlcXVlc3RzLmFkYXB0ZXJzLkhUVFBBZGFwdGVyKG1heF9yZXRyaWVz
PTUpKQotICAgICAgICBzZWxmLl9zZXNzaW9uX2RlcHRoICs9IDEKLQotICAgICAgICB5aWVsZAot
Ci0gICAgICAgIHNlbGYuX3Nlc3Npb25fZGVwdGggLT0gMQotICAgICAgICBpZiBzZWxmLl9zZXNz
aW9uX2RlcHRoIDw9IDA6Ci0gICAgICAgICAgICBzZWxmLl9zZXNzaW9uLmNsb3NlKCkKLSAgICAg
ICAgICAgIHNlbGYuX3Nlc3Npb24gPSBOb25lCi0KLSAgICBkZWYgcmVxdWVzdChzZWxmLCB1cmws
IG1ldGhvZD0nR0VUJywgKiprd2FyZ3MpOgotICAgICAgICB3aXRoIHNlbGYuc2Vzc2lvbigpOgot
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Nlc3Npb24ucmVxdWVzdChtZXRob2Q9bWV0aG9kLCB1
cmw9dXJsLCAqKmt3YXJncykKLQotICAgIGRlZiBjYWNoZV9yZXN1bHQoc2VsZiwga2V5LCBmdW5j
dGlvbiwgZXg9NjAgKiA2MCAqIDI0ICogMik6Ci0gICAgICAgIHJlc3VsdCA9IE5vbmUKLSAgICAg
ICAgaWYgc2VsZi5yZWRpczoKLSAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYucmVkaXMuZ2V0KGtl
eSkKLSAgICAgICAgaWYgcmVzdWx0IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgPSBmdW5j
dGlvbigpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZGVjb2Rl
KCd1dGYtOCcpCi0gICAgICAgIGlmIHJlc3VsdCBhbmQgc2VsZi5yZWRpczoKLSAgICAgICAgICAg
IHNlbGYucmVkaXMuc2V0KGtleSwgcmVzdWx0LCBleD1leCkKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dAotCi0KLWNsYXNzIFN0YXNoUmVwb3NpdG9yeShIVFRQUmVwb3NpdG9yeSk6Ci0KLSAgICAjIFN0
YXNoJ3MgdGltZXN0YW1wcyBhcmUgYWNjdXJhdGUgdG8gdGhlIG1pbGxpc2Vjb25kLgotICAgIENP
TU1JVF9USU1FU1RBTVBfQ09OVkVSU0lPTiA9IDEwMDAKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCB1cmwsICoqa3dhcmdzKToKLSAgICAgICAgUFJPSkVDVFMgPSAnL3Byb2plY3RzJwotICAgICAg
ICBpZiBsZW4odXJsLnNwbGl0KFBST0pFQ1RTKSkgIT0gMjoKLSAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbihmJ3t1cmx9IGlzIG5vdCBhIFN0YXNoIFVSTCcpCi0gICAgICAgIHNlbGYuYmFzZV91
cmwgPSB1cmwKLSAgICAgICAgc3VwZXIoU3Rhc2hSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXyhO
b25lLCAoJy9yZXN0L2FwaS8xLjAnICsgUFJPSkVDVFMpLmpvaW4odXJsLnNwbGl0KFBST0pFQ1RT
KSksICoqa3dhcmdzKQotCi0gICAgICAgIHdpdGggc2VsZi5zZXNzaW9uKCk6Ci0gICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgc3Rhc2hfZGF0YSA9IHNlbGYuZ2V0KCkKLSAgICAgICAg
ICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIHN0YXNoX2RhdGEgPSB7fQot
ICAgICAgICAgICAgc2VsZi5rZXkgPSBzdGFzaF9kYXRhLmdldCgnc2x1ZycsIE5vbmUpCi0gICAg
ICAgICAgICBpZiBub3Qgc2VsZi5rZXk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KGYne3NlbGYudXJsfSBpcyBub3QgYW4gU3Rhc2ggcmVwb3NpdG9yeScpCi0KLSAgICBkZWYgZ2V0
KHNlbGYsIGFyZ3M9Tm9uZSwgY2FjaGU9VHJ1ZSk6Ci0gICAgICAgIHVybCA9IHNlbGYudXJsICsg
KCcnIGlmIG5vdCBhcmdzIGVsc2UgZicve2FyZ3N9JykKLQotICAgICAgICBkZWYgY2FsbGJhY2so
dXJsPXVybCwgb2JqPXNlbGYpOgotICAgICAgICAgICAgcmVzcG9uc2UgPSBvYmoucmVxdWVzdCh1
cmwpCi0gICAgICAgICAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDA6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0K
LSAgICAgICAgcmVzdWx0ID0gc2VsZi5jYWNoZV9yZXN1bHQoCi0gICAgICAgICAgICBmJ3JlcG9z
aXRvcnk6e3VybH0nLAotICAgICAgICAgICAgY2FsbGJhY2ssCi0gICAgICAgICkgaWYgY2FjaGUg
ZWxzZSBjYWxsYmFjayh1cmwpCi0gICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgIHJldHVy
biBqc29uLmxvYWRzKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHt9Ci0KLSAgICBkZWYgY29tbWl0
X2Zvcl9pZChzZWxmLCBpZCwgYnJhbmNoPVJlcG9zaXRvcnkuREVGQVVMVF9CUkFOQ0gpOgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc2Vzc2lvbigpOgotICAgICAgICAgICAg
ICAgIGNvbW1pdF9kYXRhID0gc2VsZi5nZXQoZidjb21taXRzL3tpZH0nKQotICAgICAgICAgICAg
ICAgIGlmIG5vdCBjb21taXRfZGF0YToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgU0NNRXhj
ZXB0aW9uKGYnQ29tbWl0IHtpZH0gZG9lcyBub3QgZXhpc3Qgb24gYnJhbmNoIHticmFuY2h9JykK
LSAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBpbnQoY29tbWl0X2RhdGFbJ2NvbW1pdHRlclRp
bWVzdGFtcCddKSAvLyBzZWxmLkNPTU1JVF9USU1FU1RBTVBfQ09OVkVSU0lPTgotCi0gICAgICAg
ICAgICAgICAgYnJhbmNoX2ZpbHRlciA9IHVybGxpYi5wYXJzZS5xdW90ZShmJ3JlZnMvaGVhZHMv
e2JyYW5jaH0nKQotICAgICAgICAgICAgICAgIGNvbW1pdHNfYmV0d2Vlbl9jb21taXRfYW5kX2Jy
YW5jaF9oZWFkID0gc2VsZi5nZXQoZiJjb21taXRzP3NpbmNlPXtjb21taXRfZGF0YVsnaWQnXX0m
dW50aWw9e2JyYW5jaF9maWx0ZXJ9JmxpbWl0PTEiLCBjYWNoZT1GYWxzZSkKLSAgICAgICAgICAg
ICAgICBpZiBjb21taXRzX2JldHdlZW5fY29tbWl0X2FuZF9icmFuY2hfaGVhZFsnaXNMYXN0UGFn
ZSddIGFuZCBjb21taXRzX2JldHdlZW5fY29tbWl0X2FuZF9icmFuY2hfaGVhZFsnc2l6ZSddID09
IDA6Ci0gICAgICAgICAgICAgICAgICAgICMgV2UgbWF5IGhhdmUgbWlzc2VkIHRoZSBjYXNlIHRo
ZSBjb21taXQgaW4gcXVlc3Rpb24gaXMgdGhlIEhFQUQgb2YgdGhlIGJyYW5jaAotICAgICAgICAg
ICAgICAgICAgICBjb21taXRzX2F0X2JyYW5jaF9oZWFkID0gc2VsZi5nZXQoZidjb21taXRzP3Vu
dGlsPXticmFuY2hfZmlsdGVyfSZsaW1pdD0yMCcsIGNhY2hlPUZhbHNlKQotICAgICAgICAgICAg
ICAgICAgICBpZiBhbGwoW2NvbW1pdFsnaWQnXSAhPSBjb21taXRfZGF0YVsnaWQnXSBmb3IgY29t
bWl0IGluIGNvbW1pdHNfYXRfYnJhbmNoX2hlYWRbJ3ZhbHVlcyddXSk6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByYWlzZSBTQ01FeGNlcHRpb24oZid7aWR9IGV4aXN0cywgYnV0IG5vdCBvbiB7
YnJhbmNofScpCi0KLSAgICAgICAgICAgICAgICAjIE9yZGVyaW5nIGNvbW1pdHMgYnkgdGltZXN0
YW1wIGluIGdpdCBpcyBhIGJpdCBwcm9ibGVtYXRpYyBiZWNhdXNlIG11bHRpcGxlIGNvbW1pdHMg
Y2FuIHNoYXJlIGEgdGltZXN0YW1wLgotICAgICAgICAgICAgICAgICMgR2VuZXJhbGx5LCBpZiB5
b3VyIHBhcmVudCBzaGFyZXMgeW91ciB0aW1lc3RhbXAsIHlvdXIgb3JkZXIgbmVlZHMgdG8gYmUg
aW5jcmVtZW50ZWQuCi0gICAgICAgICAgICAgICAgb3JkZXIgPSAwCi0gICAgICAgICAgICAgICAg
bG9vcF9kYXRhID0gY29tbWl0X2RhdGEKLSAgICAgICAgICAgICAgICB3aGlsZSBsZW4obG9vcF9k
YXRhWydwYXJlbnRzJ10pID09IDEgYW5kIGludChsb29wX2RhdGFbJ3BhcmVudHMnXVswXVsnY29t
bWl0dGVyVGltZXN0YW1wJ10pIC8vIHNlbGYuQ09NTUlUX1RJTUVTVEFNUF9DT05WRVJTSU9OID09
IHRpbWVzdGFtcDoKLSAgICAgICAgICAgICAgICAgICAgb3JkZXIgKz0gMQotICAgICAgICAgICAg
ICAgICAgICBsb29wX2RhdGEgPSBzZWxmLmdldChmImNvbW1pdHMve2xvb3BfZGF0YVsncGFyZW50
cyddWzBdWydpZCddfSIpCi0KLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tbWl0KAotICAgICAg
ICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXNlbGYua2V5LAotICAgICAgICAgICAgICAgICAg
ICBpZD1jb21taXRfZGF0YVsnaWQnXSwKLSAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5j
aCwKLSAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPXRpbWVzdGFtcCwKLSAgICAgICAgICAg
ICAgICAgICAgb3JkZXI9b3JkZXIsCi0gICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj1jb21t
aXRfZGF0YVsnY29tbWl0dGVyJ11bJ2VtYWlsQWRkcmVzcyddLAotICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlPWNvbW1pdF9kYXRhWydtZXNzYWdlJ10sCi0gICAgICAgICAgICAgICAgKQotICAg
ICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFNDTUV4Y2VwdGlvbihm
J0ZhaWxlZCB0byBjb25uZWN0IHRvIHtzZWxmLnVybH0nKQotCi0gICAgZGVmIHVybF9mb3JfY29t
bWl0KHNlbGYsIGNvbW1pdCk6Ci0gICAgICAgIHJldHVybiBmJ3tzZWxmLmJhc2VfdXJsfS9jb21t
aXRzL3tjb21taXR9JworY2xhc3MgU3Rhc2hSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHVybCwga2V5PU5vbmUsIGRlZmF1bHRfYnJhbmNoPU5vbmUpOgor
ICAgICAgICBzZWxmLnJlbW90ZSA9IHJlbW90ZS5CaXRCdWNrZXQodXJsKQorICAgICAgICBzdXBl
cihTdGFzaFJlcG9zaXRvcnksIHNlbGYpLl9faW5pdF9fKAorICAgICAgICAgICAga2V5PWtleSBv
ciBzZWxmLnJlbW90ZS5uYW1lLAorICAgICAgICAgICAgZGVmYXVsdF9icmFuY2g9ZGVmYXVsdF9i
cmFuY2ggb3Igc2VsZi5yZW1vdGUuZGVmYXVsdF9icmFuY2gsCisgICAgICAgICkKIAotY2xhc3Mg
U1ZOUmVwb3NpdG9yeShIVFRQUmVwb3NpdG9yeSk6Ci0KLSAgICBERUZBVUxUX0JSQU5DSCA9ICd0
cnVuaycKLSAgICBEQVZfWE1MID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4KLTxwcm9wZmluZCB4bWxucz0iREFWOiI+Ci08cHJvcD4KLTxyZXNvdXJjZXR5cGUgeG1s
bnM9IkRBVjoiLz4KLTxnZXRjb250ZW50bGVuZ3RoIHhtbG5zPSJEQVY6Ii8+Ci08ZGVhZHByb3At
Y291bnQgeG1sbnM9Imh0dHA6Ly9zdWJ2ZXJzaW9uLnRpZ3Jpcy5vcmcveG1sbnMvZGF2LyIvPgot
PHZlcnNpb24tbmFtZSB4bWxucz0iREFWOiIvPgotPGNyZWF0aW9uZGF0ZSB4bWxucz0iREFWOiIv
PgotPGNyZWF0b3ItZGlzcGxheW5hbWUgeG1sbnM9IkRBVjoiLz4KLTwvcHJvcD48L3Byb3BmaW5k
PiIiIgotCi0gICAgZGVmIGdldChzZWxmLCBicmFuY2g9REVGQVVMVF9CUkFOQ0gsIHJldmlzaW9u
PU5vbmUpOgotICAgICAgICB1cmwgPSBzZWxmLnVybAotICAgICAgICBpZiByZXZpc2lvbjoKLSAg
ICAgICAgICAgIHVybCA9IHVybCArIGYiIXN2bi9ydnIve3JldmlzaW9ufS97YnJhbmNoIGlmIGJy
YW5jaCA9PSBzZWxmLkRFRkFVTFRfQlJBTkNIIGVsc2UgJ2JyYW5jaGVzLycgKyBicmFuY2h9Igot
Ci0gICAgICAgIGRlZiBjYWxsYmFjayh1cmw9dXJsLCBvYmo9c2VsZiwgd2l0aF9yZXZpc2lvbj1U
cnVlIGlmIHJldmlzaW9uIGVsc2UgRmFsc2UpOgotICAgICAgICAgICAgaWYgd2l0aF9yZXZpc2lv
bjoKLSAgICAgICAgICAgICAgICAjIENvbnN0cnVjdGVkIHRoaXMgZnJvbSBXaXJlU2hhcmsgYW5k
IGFuIHN2biBpbmZvIGNvbW1hbmQsIG1vZGlmeSB3aXRoIGNhdXRpb24hCi0gICAgICAgICAgICAg
ICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoCi0gICAgICAgICAgICAgICAgICAgIG1ldGhvZD0n
UFJPUEZJTkQnLAotICAgICAgICAgICAgICAgICAgICB1cmw9dXJsLAotICAgICAgICAgICAgICAg
ICAgICBoZWFkZXJzPXsKLSAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAn
dGV4dC94bWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdn
emlwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdEZXB0aCc6ICcwJywKLSAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgZGF0YT1vYmouREFWX1hNTCkKLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2Vs
Zi51cmwpCi0KLSAgICAgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlIGluIFsyMDAsIDIw
N106Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQKLSAgICAgICAgICAgIHJl
dHVybiBOb25lCi0KLSAgICAgICAgcmVzdWx0ID0gc2VsZi5jYWNoZV9yZXN1bHQoCi0gICAgICAg
ICAgICBmJ3JlcG9zaXRvcnk6e3VybH0nLAotICAgICAgICAgICAgY2FsbGJhY2ssCisgICAgZGVm
IGNvbW1pdF9mb3JfaWQoc2VsZiwgaWQpOgorICAgICAgICBjb21taXQgPSBzZWxmLnJlbW90ZS5j
b21taXQoaGFzaD1pZCwgaW5jbHVkZV9pZGVudGlmaWVyPUZhbHNlKQorICAgICAgICByZXR1cm4g
Q29tbWl0KAorICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1zZWxmLmtleSwKKyAgICAgICAgICAg
IGlkPWNvbW1pdC5oYXNoLAorICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5icmFuY2gsCisgICAg
ICAgICAgICB0aW1lc3RhbXA9Y29tbWl0LnRpbWVzdGFtcCwKKyAgICAgICAgICAgIG9yZGVyPWNv
bW1pdC5vcmRlciwKKyAgICAgICAgICAgIGNvbW1pdHRlcj1jb21taXQuYXV0aG9yLmVtYWlsLAor
ICAgICAgICAgICAgbWVzc2FnZT1jb21taXQubWVzc2FnZSwKICAgICAgICAgKQotICAgICAgICBp
ZiByZXN1bHQ6Ci0gICAgICAgICAgICByZXR1cm4geG1sdG9kaWN0LnBhcnNlKHJlc3VsdCkKLSAg
ICAgICAgcmV0dXJuIHt9Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCB0cmFjX3VybD1O
b25lLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKFNWTlJlcG9zaXRvcnksIHNlbGYpLl9faW5p
dF9fKE5vbmUsIHVybCwgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYudHJhY191cmwgPSB0cmFjX3Vy
bAotICAgICAgICB3aXRoIHNlbGYuc2Vzc2lvbigpOgotICAgICAgICAgICAgc2VsZi5rZXkgPSBz
ZWxmLmdldCgpLmdldCgnc3ZuJywge30pLmdldCgnaW5kZXgnKS5nZXQoJ0BiYXNlJykKLSAgICAg
ICAgICAgIGlmIG5vdCBzZWxmLmtleToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
Zid7c2VsZi51cmx9IGlzIG5vdCBhbiBTVk4gcmVwb3NpdG9yeScpCi0KLSAgICBkZWYgY29tbWl0
X2Zvcl9pZChzZWxmLCBpZCwgYnJhbmNoPURFRkFVTFRfQlJBTkNIKToKLSAgICAgICAgd2l0aCBz
ZWxmLnNlc3Npb24oKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjb21taXRf
ZGF0YSA9IHNlbGYuZ2V0KGJyYW5jaD1icmFuY2gsIHJldmlzaW9uPWlkKVsnRDptdWx0aXN0YXR1
cyddWydEOnJlc3BvbnNlJ11bJ0Q6cHJvcHN0YXQnXVswXVsnRDpwcm9wJ10KLSAgICAgICAgICAg
ICAgICBpZiBjb21taXRfZGF0YVsnbHAxOnZlcnNpb24tbmFtZSddICE9IHN0cihpZCk6Ci0gICAg
ICAgICAgICAgICAgICAgIHJhaXNlIFNDTUV4Y2VwdGlvbihmJ1JldmlzaW9uIHtpZH0gZG9lcyBu
b3QgZXhpc3Qgb24gYnJhbmNoIHticmFuY2h9JykKLQotICAgICAgICAgICAgICAgICMgT2YgdGhl
IGZvcm0gJzIwMTgtMDktMjRUMjI6MDM6MzQuNDM2MjE3WicKLSAgICAgICAgICAgICAgICB0aW1l
c3RhbXAgPSBkYXRldGltZS5kYXRldGltZS5zdHJwdGltZShjb21taXRfZGF0YVsnbHAxOmNyZWF0
aW9uZGF0ZSddLCAnJVktJW0tJWRUJUg6JU06JVMuJWZaJykKLQotICAgICAgICAgICAgICAgIHJl
dHVybiBDb21taXQoCi0gICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9c2VsZi5rZXks
Ci0gICAgICAgICAgICAgICAgICAgIGlkPXN0cihpZCksCi0gICAgICAgICAgICAgICAgICAgIGJy
YW5jaD1icmFuY2gsCi0gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD10aW1lc3RhbXAsCi0g
ICAgICAgICAgICAgICAgICAgIG9yZGVyPTAsCi0gICAgICAgICAgICAgICAgICAgIGNvbW1pdHRl
cj1jb21taXRfZGF0YVsnbHAxOmNyZWF0b3ItZGlzcGxheW5hbWUnXSwKLSAgICAgICAgICAgICAg
ICApCi0gICAgICAgICAgICBleGNlcHQgRXhwYXRFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlz
ZSBTQ01FeGNlcHRpb24oZidGYWlsZWQgdG8gY29ubmVjdCB0byB7c2VsZi51cmx9JykKLSAgICAg
ICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBTQ01FeGNlcHRp
b24oZidSZXZpc2lvbiB7aWR9IGRvZXMgbm90IGV4aXN0IG9uIGJyYW5jaCB7YnJhbmNofScpCiAK
ICAgICBkZWYgdXJsX2Zvcl9jb21taXQoc2VsZiwgY29tbWl0KToKLSAgICAgICAgcmV0dXJuIGYn
e3NlbGYudXJsfS8hc3ZuL2JjL3tjb21taXR9LycKLQorICAgICAgICByZXR1cm4gZid7c2VsZi5y
ZW1vdGUudXJsfS9jb21taXRzL3tjb21taXR9JwogCi1jbGFzcyBXZWJLaXRSZXBvc2l0b3J5KFNW
TlJlcG9zaXRvcnkpOgotICAgIENIQU5HRUxPR1MgPSAoCi0gICAgICAgICdDaGFuZ2VMb2cnLAot
ICAgICAgICAnU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cnLAotICAgICAgICAnU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
Q2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZycsCi0gICAg
ICAgICdTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VM
b2cnLAotICAgICAgICAnU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cnLAotICAgICAgICAnU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZycsCi0g
ICAgICAgICdTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cnLAotICAgICAgICAnU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZycsCi0gICAgICAgICdTb3VyY2UvV1RGL0NoYW5nZUxvZycsCi0gICAgICAgICdUb29scy9D
aGFuZ2VMb2cnLAotICAgICAgICAnRXhhbXBsZXMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ0pTVGVz
dHMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ0xheW91dFRlc3RzL0NoYW5nZUxvZycsCi0gICAgICAg
ICdMYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZycsCi0gICAgICAgICdMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1BlcmZvcm1hbmNlVGVz
dHMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1BlcmZvcm1hbmNlVGVzdHMvU3VuU3BpZGVyL0NoYW5n
ZUxvZycsCi0gICAgICAgICdXZWJEcml2ZXJUZXN0cy9DaGFuZ2VMb2cnLAotICAgICAgICAnV2Vi
S2l0TGlicmFyaWVzL0NoYW5nZUxvZycsCi0gICAgICAgICdXZWJzaXRlcy9icm93c2VyYmVuY2gu
b3JnL0NoYW5nZUxvZycsCi0gICAgICAgICdXZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvQ2hhbmdl
TG9nJywKLSAgICAgICAgJ1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cnLAotICAg
ICAgICAnV2Vic2l0ZXMvcGxhbmV0LndlYmtpdC5vcmcvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1dl
YnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1dlYnNpdGVzL3dlYmtpdC5v
cmcvc3BlY3MvQ1NTVmlzdWFsRWZmZWN0cy9DaGFuZ2VMb2cnLAotICAgICkKLSAgICBDSEFOR0Vf
TE9HX1RIUkVBRFMgPSA2Ci0gICAgRklSU1RfTElORV9SRUdFWCA9IHJlLmNvbXBpbGUocicoP1A8
ZGF0ZT5cZCstXGQrLVxkKylccysoP1A8bmFtZT5cUy4rXFMpXHMrPCg/UDxlbWFpbD5cUyspPicp
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcihXZWJL
aXRSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXygnaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBv
c2l0b3J5L3dlYmtpdC8nLCAqKmt3YXJncykKLQotICAgIGRlZiBjb21taXRfZm9yX2lkKHNlbGYs
IGlkLCBicmFuY2g9U1ZOUmVwb3NpdG9yeS5ERUZBVUxUX0JSQU5DSCk6Ci0gICAgICAgIHdpdGgg
c2VsZi5zZXNzaW9uKCk6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdXBlcihXZWJLaXRSZXBvc2l0
b3J5LCBzZWxmKS5jb21taXRfZm9yX2lkKGlkLCBicmFuY2g9YnJhbmNoKQotCi0gICAgICAgICAg
ICAjIEZpbmQgdGhlIGxhc3QgY29tbWl0IG9uIHRoZSBnaXZlbiBicmFuY2ggc28gd2UgY2FuIGRp
ZmYgdGhlIGNoYW5nZWxvZ3MKLSAgICAgICAgICAgIHByZXZpb3VzX2lkID0gc2VsZi5nZXQoYnJh
bmNoPWJyYW5jaCwgcmV2aXNpb249aW50KGlkKSAtIDEpLmdldCgKLSAgICAgICAgICAgICAgICAn
RDptdWx0aXN0YXR1cycsIHt9KS5nZXQoJ0Q6cmVzcG9uc2UnLCB7fSkuZ2V0KCdEOnByb3BzdGF0
JywgW3t9XSlbMF0uZ2V0KCdEOnByb3AnLCB7fSkuZ2V0KCdscDE6dmVyc2lvbi1uYW1lJywgTm9u
ZSkKLSAgICAgICAgICAgIGJyYW5jaF91cmwgPSBmIntzZWxmLnVybH17YnJhbmNoIGlmIGJyYW5j
aCA9PSBzZWxmLkRFRkFVTFRfQlJBTkNIIGVsc2UgJ2JyYW5jaGVzLycgKyBicmFuY2h9IgotCi0g
ICAgICAgICAgICBjaGFuZ2Vsb2dzID0ge30KLSAgICAgICAgICAgIHJlcXVlc3RfdGhyZWFkcyA9
IFtdCi0KLSAgICAgICAgICAgICMgQ29tcGFyZSBjaGFuZ2Vsb2cgZnJvbSBwcmV2aW91cyBjb21t
aXQgdG8gdGhlIGNoYW5nZWxvZyBmcm9tIHRoaXMgY29tbWl0Ci0gICAgICAgICAgICBkZWYgZGlm
Zl9jaGFuZ2Vsb2dzKGNoYW5nZWxvZ19saXN0KToKLSAgICAgICAgICAgICAgICBmb3IgY2hhbmdl
bG9nIGluIGNoYW5nZWxvZ19saXN0OgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3VybCA9
IGYne2JyYW5jaF91cmx9L3tjaGFuZ2Vsb2d9Lz9wPXtpZH0nCi0gICAgICAgICAgICAgICAgICAg
IHByZXZpb3VzX3VybCA9IGYne2JyYW5jaF91cmx9L3tjaGFuZ2Vsb2d9Lz9wPXtwcmV2aW91c19p
ZH0nIGlmIHByZXZpb3VzX2lkIGVsc2UgTm9uZQotCi0gICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRfcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoY3VycmVudF91cmwpCi0gICAgICAgICAgICAgICAg
ICAgIGlmIGN1cnJlbnRfcmVzcG9uc2Uuc3RhdHVzX2NvZGUgIT0gMjAwOgotICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNfcmVzcG9u
c2UgPSBzZWxmLnJlcXVlc3QocHJldmlvdXNfdXJsKSBpZiBwcmV2aW91c191cmwgZWxzZSBOb25l
Ci0gICAgICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzX3Jlc3BvbnNlIGFuZCBwcmV2aW91c19y
ZXNwb25zZS5zdGF0dXNfY29kZSAhPSAyMDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQotCi0gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzX3Jlc3BvbnNlX2xlbmd0aCA9IDAK
LSAgICAgICAgICAgICAgICAgICAgaWYgcHJldmlvdXNfcmVzcG9uc2U6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBwcmV2aW91c19yZXNwb25zZV9sZW5ndGggPSBsZW4ocHJldmlvdXNfcmVzcG9u
c2UudGV4dCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGN1cnJlbnRfcmVzcG9uc2UudGV4
dCkgPT0gcHJldmlvdXNfcmVzcG9uc2VfbGVuZ3RoOgotICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHByZXZpb3VzX3Jlc3BvbnNlX2xl
bmd0aCBvciBsZW4oY3VycmVudF9yZXNwb25zZS50ZXh0KSA8IHByZXZpb3VzX3Jlc3BvbnNlX2xl
bmd0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWxvZ3NbY2hhbmdlbG9nXSA9IGN1
cnJlbnRfcmVzcG9uc2UudGV4dAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlbG9nc1tjaGFuZ2Vsb2ddID0gY3VycmVudF9yZXNwb25zZS50
ZXh0WzA6LWxlbihwcmV2aW91c19yZXNwb25zZS50ZXh0KV0KLQotICAgICAgICAgICAgIyBCZWNh
dXNlIHdlJ3JlIG1vc3RseSBibG9ja2VkIG9uIG5ldHdvcmsgSS9PLCB0aHJlYWRzIGNhbiBzcGVl
ZCB0aGlzIHVwIH40eAotICAgICAgICAgICAgc2hhcmRzID0gW1tdIGZvciBfIGluIHJhbmdlKHNl
bGYuQ0hBTkdFX0xPR19USFJFQURTKV0KLSAgICAgICAgICAgIGluZGV4ID0gMAotICAgICAgICAg
ICAgZm9yIGNoYW5nZWxvZyBpbiBzZWxmLkNIQU5HRUxPR1M6Ci0gICAgICAgICAgICAgICAgc2hh
cmRzW2luZGV4XS5hcHBlbmQoY2hhbmdlbG9nKQotICAgICAgICAgICAgICAgIGluZGV4ICs9IDEK
LSAgICAgICAgICAgICAgICBpZiBpbmRleCA+PSBsZW4oc2hhcmRzKToKLSAgICAgICAgICAgICAg
ICAgICAgaW5kZXggPSAwCi0gICAgICAgICAgICBmb3Igc2hhcmQgaW4gc2hhcmRzOgotICAgICAg
ICAgICAgICAgIHJlcXVlc3RfdGhyZWFkcy5hcHBlbmQodGhyZWFkaW5nLlRocmVhZCgKLSAgICAg
ICAgICAgICAgICAgICAgdGFyZ2V0PWRpZmZfY2hhbmdlbG9ncywKLSAgICAgICAgICAgICAgICAg
ICAga3dhcmdzPWRpY3QoY2hhbmdlbG9nX2xpc3Q9c2hhcmQpLAotICAgICAgICAgICAgICAgICkp
Ci0gICAgICAgICAgICAgICAgcmVxdWVzdF90aHJlYWRzWy0xXS5zdGFydCgpCi0gICAgICAgICAg
ICBmb3IgdGhyZWFkIGluIHJlcXVlc3RfdGhyZWFkczoKLSAgICAgICAgICAgICAgICB0aHJlYWQu
am9pbigpCi0KLSAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdlID0gW10KLSAgICAgICAgICAgIGZv
ciBjaGFuZ2Vsb2cgaW4gc2VsZi5DSEFOR0VMT0dTOgotICAgICAgICAgICAgICAgIHBhcnRpYWxf
bWVzc2FnZSA9IGNoYW5nZWxvZ3MuZ2V0KGNoYW5nZWxvZywgTm9uZSkKLSAgICAgICAgICAgICAg
ICBpZiBub3QgcGFydGlhbF9tZXNzYWdlOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQot
ICAgICAgICAgICAgICAgIGxpbmVzX2luX21lc3NhZ2UgPSBwYXJ0aWFsX21lc3NhZ2Uuc3BsaXQo
J1xuJykKLQotICAgICAgICAgICAgICAgICMgVGhlIGZpcnN0IGxpbmUgb2YgdGhlIGNvbW1pdCBt
ZXNzYWdlIG1pZ2h0IGNvbnRhaW4gdGhlIHJlYWwgY29tbWl0dGVyLCBpbiB0aGUgY2FzZQotICAg
ICAgICAgICAgICAgICMgY29tbWl0IHF1ZXVlIGNvbW1pdHRlZCBhIGNoYW5nZSBvbiB0aGUgYmVo
YWxmIG9mIHNvbWVvbmUKLSAgICAgICAgICAgICAgICBzdGFydF9vZl9tZXNzYWdlX3NoYXJkID0g
MAotICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5GSVJTVF9MSU5FX1JFR0VYLm1hdGNoKGxp
bmVzX2luX21lc3NhZ2VbMF0pCi0gICAgICAgICAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIG1hdGNoLmdyb3VwKCdlbWFpbCcpICE9IHJlc3VsdC5jb21taXR0ZXI6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuY29tbWl0dGVyID0gbWF0Y2guZ3JvdXAoJ2Vt
YWlsJykKLSAgICAgICAgICAgICAgICAgICAgc3RhcnRfb2ZfbWVzc2FnZV9zaGFyZCArPSAxCi0g
ICAgICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBsaW5lc19pbl9tZXNzYWdlW3N0YXJ0X29mX21l
c3NhZ2Vfc2hhcmRdOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfb2ZfbWVzc2FnZV9z
aGFyZCArPSAxCi0KLSAgICAgICAgICAgICAgICAjIFdlYktpdCBjb21taXQgbWVzc2FnZXMgYXJl
IG9mdGVuIHNwbGl0IGFjcm9zcyBtdWx0aXBsZSBjaGFuZ2Vsb2dzIHdpdGggdGhlIGZpcnN0IGZl
dyBsaW5lcyBkdXBsaWNhdGVkLgotICAgICAgICAgICAgICAgIHN0YXJ0X29mX2Z1bGxfbWVzc2Fn
ZSA9IDAKLSAgICAgICAgICAgICAgICB3aGlsZSBzdGFydF9vZl9tZXNzYWdlX3NoYXJkIDwgbGVu
KGxpbmVzX2luX21lc3NhZ2UpIGFuZCBzdGFydF9vZl9mdWxsX21lc3NhZ2UgPCBsZW4oY29tbWl0
X21lc3NhZ2UpOgotICAgICAgICAgICAgICAgICAgICBpZiBsaW5lc19pbl9tZXNzYWdlW3N0YXJ0
X29mX21lc3NhZ2Vfc2hhcmRdLnN0YXJ0c3dpdGgoJyAnICogOCk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsaW5lID0gbGluZXNfaW5fbWVzc2FnZVtzdGFydF9vZl9tZXNzYWdlX3NoYXJkXVs4
Ol0KLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxp
bmUgPSBsaW5lc19pbl9tZXNzYWdlW3N0YXJ0X29mX21lc3NhZ2Vfc2hhcmRdCi0gICAgICAgICAg
ICAgICAgICAgIGlmIGxpbmUgIT0gY29tbWl0X21lc3NhZ2Vbc3RhcnRfb2ZfZnVsbF9tZXNzYWdl
XToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIHN0
YXJ0X29mX21lc3NhZ2Vfc2hhcmQgKz0gMQotICAgICAgICAgICAgICAgICAgICBzdGFydF9vZl9m
dWxsX21lc3NhZ2UgKz0gMQogCi0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXNfaW5f
bWVzc2FnZVtzdGFydF9vZl9tZXNzYWdlX3NoYXJkOl06Ci0gICAgICAgICAgICAgICAgICAgIGNv
bW1pdF9tZXNzYWdlLmFwcGVuZChsaW5lWzg6XSBpZiBsaW5lLnN0YXJ0c3dpdGgoJyAnICogOCkg
ZWxzZSBsaW5lKQorY2xhc3MgV2ViS2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKIAotICAgICAg
ICAgICAgcmVzdWx0Lm1lc3NhZ2UgPSBzdHIoJ1xuJy5qb2luKGNvbW1pdF9tZXNzYWdlKSkgaWYg
Y29tbWl0X21lc3NhZ2UgZWxzZSBOb25lCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAg
ICBzZWxmLnJlbW90ZSA9IHJlbW90ZS5Tdm4oJ2h0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3Np
dG9yeS93ZWJraXQnKQorICAgICAgICBzdXBlcihXZWJLaXRSZXBvc2l0b3J5LCBzZWxmKS5fX2lu
aXRfXygKKyAgICAgICAgICAgIGtleT0nd2Via2l0JywKKyAgICAgICAgICAgIGRlZmF1bHRfYnJh
bmNoPXNlbGYucmVtb3RlLmRlZmF1bHRfYnJhbmNoLAorICAgICAgICApCiAKLSAgICAgICAgICAg
IHJldHVybiByZXN1bHQKKyAgICBkZWYgY29tbWl0X2Zvcl9pZChzZWxmLCBpZCk6CisgICAgICAg
IGNvbW1pdCA9IHNlbGYucmVtb3RlLmNvbW1pdChyZXZpc2lvbj1pZCwgaW5jbHVkZV9pZGVudGlm
aWVyPUZhbHNlKQorICAgICAgICByZXR1cm4gQ29tbWl0KAorICAgICAgICAgICAgcmVwb3NpdG9y
eV9pZD1zZWxmLmtleSwKKyAgICAgICAgICAgIGlkPWNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAg
ICAgIGJyYW5jaD1jb21taXQuYnJhbmNoLAorICAgICAgICAgICAgdGltZXN0YW1wPWNvbW1pdC50
aW1lc3RhbXAsCisgICAgICAgICAgICBvcmRlcj1jb21taXQub3JkZXIsCisgICAgICAgICAgICBj
b21taXR0ZXI9Y29tbWl0LmF1dGhvci5lbWFpbCwKKyAgICAgICAgICAgIG1lc3NhZ2U9Y29tbWl0
Lm1lc3NhZ2UsCisgICAgICAgICkKIAogICAgIGRlZiB1cmxfZm9yX2NvbW1pdChzZWxmLCBjb21t
aXQpOgotICAgICAgICByZXR1cm4gZidodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
e2NvbW1pdH0ve3NlbGYua2V5fScKKyAgICAgICAgcmV0dXJuIGYnaHR0cHM6Ly9jb21taXRzLndl
YmtpdC5vcmcvcntjb21taXR9JwpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvcmVwb3NpdG9yeV91bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9yZXBvc2l0b3J5X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzM5ODApCisrKyBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZXBvc2l0b3J5X3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4NCArMjAsNTMgQEAKICMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGpzb24KLQotZnJvbSBmYWtlcmVk
aXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwotZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMK
LWZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAotZnJvbSBy
ZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTdGFzaFJlcG9zaXRv
cnksIE1vY2tTVk5SZXBvc2l0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnJlcG9zaXRvcnkg
aW1wb3J0IFNDTUV4Y2VwdGlvbgorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2Zh
Y3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwucmVw
b3NpdG9yeSBpbXBvcnQgU3Rhc2hSZXBvc2l0b3J5LCBXZWJLaXRSZXBvc2l0b3J5CiBmcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZQogCiAKIGNsYXNzIFJlcG9zaXRvcnlUZXN0KFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZSk6CiAKLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1v
Y2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzKQotICAgIGRlZiB0ZXN0X3N2bihzZWxmLCByZWRpcz1T
dHJpY3RSZWRpcyk6Ci0gICAgICAgIHN2bl9yZXBvID0gTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0
KHJlZGlzPXJlZGlzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnd2Via2l0Jywgc3ZuX3Jl
cG8ua2V5KQotICAgICAgICBjb21taXQgPSBzdm5fcmVwby5jb21taXRfZm9yX2lkKDIzNjU0NCwg
YnJhbmNoPSd0cnVuaycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQsIDE1
MzgwNTI0MDgwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQubWVzc2FnZSwgJ0No
YW5nZSAxIGRlc2NyaXB0aW9uLlxuJykKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMpCi0gICAgZGVmIHRlc3Rf
YnJhbmNoX3N2bihzZWxmLCByZWRpcz1TdHJpY3RSZWRpcyk6Ci0gICAgICAgIHN2bl9yZXBvID0g
TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KHJlZGlzPXJlZGlzKCkpCi0gICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoU0NNRXhjZXB0aW9uKToKLSAgICAgICAgICAgIHN2bl9yZXBvLmNvbW1p
dF9mb3JfaWQoMjM2MzM1LCBicmFuY2g9J3RydW5rJykKLSAgICAgICAgY29tbWl0ID0gc3ZuX3Jl
cG8uY29tbWl0X2Zvcl9pZCgyMzYzMzUsIGJyYW5jaD0nc2FmYXJpLTYwNi1icmFuY2gnKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC51dWlkLCAxNTM4MDI5NDgwMDApCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0Lm1lc3NhZ2UsICdJbnRlZ3JhdGlvbiAxLlxuJykKLQot
ICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1G
YWtlU3RyaWN0UmVkaXMpCi0gICAgZGVmIHRlc3RfYmFzaWNfc3ZuKHNlbGYsIHJlZGlzPVN0cmlj
dFJlZGlzKToKLSAgICAgICAgc3ZuX3JlcG8gPSBNb2NrU1ZOUmVwb3NpdG9yeSh1cmw9J3N2bi53
ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0LycsIG5hbWU9J3dlYmtpdCcsIHJlZGlzPXJlZGlz
KCkpCi0gICAgICAgIHN2bl9yZXBvLmFkZF9jb21taXQoQ29tbWl0KAotICAgICAgICAgICAgcmVw
b3NpdG9yeV9pZD1zdm5fcmVwby5uYW1lLCBicmFuY2g9J3RydW5rJywgaWQ9MjM2NTQ0LAotICAg
ICAgICAgICAgdGltZXN0YW1wPTE1MzgwNTI0MDgsIG9yZGVyPTAsCi0gICAgICAgICAgICBjb21t
aXR0ZXI9J3BlcnNvbjFAd2Via2l0Lm9yZycsCi0gICAgICAgICAgICBtZXNzYWdlPSdDaGFuZ2Ug
MSBkZXNjcmlwdGlvbi4nLAotICAgICAgICApKQotICAgICAgICBjb21taXQgPSBzdm5fcmVwby5j
b21taXRfZm9yX2lkKDIzNjU0NCwgYnJhbmNoPSd0cnVuaycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbWl0LnV1aWQsIDE1MzgwNTI0MDgwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05v
bmUoY29tbWl0Lm1lc3NhZ2UsIE5vbmUpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzKQotICAgIGRlZiB0ZXN0
X3N0YXNoKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzKToKLSAgICAgICAgZ2l0X3JlcG8gPSBNb2Nr
U3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpcz1yZWRpcygpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdzYWZhcmknLCBnaXRfcmVwby5rZXkpCi0gICAgICAgIGNvbW1pdCA9IGdpdF9yZXBv
LmNvbW1pdF9mb3JfaWQoJ2JiNmJkYTVmNDRkZDI0ZCcsIGJyYW5jaD0nbWFzdGVyJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQudXVpZCwgMTUzNzgxMDI4MTAwKQotCi0gICAgQFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJp
Y3RSZWRpcykKLSAgICBkZWYgdGVzdF9jb2xsaWRpbmdfdGltZXN0YW1wc19zdGFzaChzZWxmLCBy
ZWRpcz1TdHJpY3RSZWRpcyk6Ci0gICAgICAgIGdpdF9yZXBvID0gTW9ja1N0YXNoUmVwb3NpdG9y
eS5zYWZhcmkocmVkaXM9cmVkaXMoKSkKLSAgICAgICAgY29tbWl0MSA9IGdpdF9yZXBvLmNvbW1p
dF9mb3JfaWQoJ2U2NDgxMGE0MCcsIGJyYW5jaD0nbWFzdGVyJykKLSAgICAgICAgY29tbWl0MiA9
IGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQoJzdiZTQwODQyNScsIGJyYW5jaD0nbWFzdGVyJykKLQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdDEudGltZXN0YW1wLCBjb21taXQyLnRpbWVz
dGFtcCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjb21taXQxLnV1aWQsIGNvbW1pdDIu
dXVpZCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbW1pdDEgPCBjb21taXQyKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdDEub3JkZXIsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbWl0Mi5vcmRlciwgMSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMpCi0gICAgZGVmIHRlc3Rf
YnJhbmNoX3N0YXNoKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzKToKLSAgICAgICAgZ2l0X3JlcG8g
PSBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpcz1yZWRpcygpKQotICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKFNDTUV4Y2VwdGlvbik6Ci0gICAgICAgICAgICBnaXRfcmVwby5j
b21taXRfZm9yX2lkKCdkODUyMjJkOTQwN2ZkJywgYnJhbmNoPSdtYXN0ZXInKQotICAgICAgICBj
b21taXQgPSBnaXRfcmVwby5jb21taXRfZm9yX2lkKCdkODUyMjJkOTQwN2ZkJywgYnJhbmNoPSdz
YWZhcmktNjA2LWJyYW5jaCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQs
IDE1Mzc1NjMzODMwMCkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19k
b2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMpCi0gICAgZGVmIHRlc3Rfc3Rhc2hfYWxy
ZWFkeV9jYWNoZWQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMpOgotICAgICAgICByZWRpc19pbnN0
YW5jZSA9IHJlZGlzKCkKLSAgICAgICAgZ2l0X3JlcG8gPSBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNh
ZmFyaShyZWRpcz1yZWRpc19pbnN0YW5jZSkKLSAgICAgICAgcmVkaXNfaW5zdGFuY2Uuc2V0KAot
ICAgICAgICAgICAgJ3JlcG9zaXRvcnk6JyArIGdpdF9yZXBvLnVybCArICcvY29tbWl0cz9zaW5j
ZT0zMzY2MTBhNDBjM2ZlY2I3Mjg4NzFlMTJjYTMxNDgyY2E3MTViMzgzJnVudGlsPXJlZnMlMkZo
ZWFkcyUyRm1hc3RlciZsaW1pdD0xJywKLSAgICAgICAgICAgIGpzb24uZHVtcHMoZGljdCh2YWx1
ZXM9W10sIHNpemU9MCwgaXNMYXN0UGFnZT1UcnVlKSksCi0gICAgICAgICkKLQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdzYWZhcmknLCBnaXRfcmVwby5rZXkpCi0gICAgICAgIGNvbW1pdCA9
IGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQoJzMzNjYxMGE0JywgYnJhbmNoPSdtYXN0ZXInKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC51dWlkLCAxNTM3NTY2Mzg2MDApCisgICAgZGVm
IHRlc3Rfc3ZuKHNlbGYpOgorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6
CisgICAgICAgICAgICBzdm5fcmVwbyA9IFdlYktpdFJlcG9zaXRvcnkoKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCd3ZWJraXQnLCBzdm5fcmVwby5rZXkpCisgICAgICAgICAgICBjb21t
aXQgPSBzdm5fcmVwby5jb21taXRfZm9yX2lkKDYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbW1pdC51dWlkLCAxNjAxNjM5OTAwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbW1pdC5tZXNzYWdlLCAnNnRoIGNvbW1pdCcpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbW1pdC5icmFuY2gsICd0cnVuaycpCisKKyAgICBkZWYgdGVzdF9icmFuY2hfc3Zu
KHNlbGYpOgorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAg
ICAgICBzdm5fcmVwbyA9IFdlYktpdFJlcG9zaXRvcnkoKQorICAgICAgICAgICAgY29tbWl0ID0g
c3ZuX3JlcG8uY29tbWl0X2Zvcl9pZCg3KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21taXQudXVpZCwgMTYwMTY0MDkwMDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21taXQubWVzc2FnZSwgJzd0aCBjb21taXQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb21taXQuYnJhbmNoLCAnYnJhbmNoLWEnKQorCisgICAgZGVmIHRlc3Rfc3Rhc2goc2VsZik6
CisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSBhcyBzYWZhcmk6CisgICAg
ICAgICAgICBnaXRfcmVwbyA9IFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly97fScuZm9ybWF0KHNh
ZmFyaS5yZW1vdGUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc2FmYXJpJywgZ2l0
X3JlcG8ua2V5KQorICAgICAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgn
MWFiZTI1YjQ0M2U5JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQs
IDE2MDE2NjMwMDAwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LmJyYW5j
aCwgJ21haW4nKQorCisgICAgZGVmIHRlc3RfY29sbGlkaW5nX3RpbWVzdGFtcHNfc3Rhc2goc2Vs
Zik6CisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSBhcyBzYWZhcmk6Cisg
ICAgICAgICAgICBnaXRfcmVwbyA9IFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly97fScuZm9ybWF0
KHNhZmFyaS5yZW1vdGUpKQorICAgICAgICAgICAgY29tbWl0MSA9IGdpdF9yZXBvLmNvbW1pdF9m
b3JfaWQoJ2JhZTVkMWU5MDk5OScpCisgICAgICAgICAgICBjb21taXQyID0gZ2l0X3JlcG8uY29t
bWl0X2Zvcl9pZCgnZDhiY2UyNmZhNjVjJykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb21taXQxLnRpbWVzdGFtcCwgY29tbWl0Mi50aW1lc3RhbXApCisgICAgICAgICAgICBzZWxm
LmFzc2VydE5vdEVxdWFsKGNvbW1pdDEudXVpZCwgY29tbWl0Mi51dWlkKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGNvbW1pdDEgPCBjb21taXQyKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb21taXQxLm9yZGVyLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21taXQyLm9yZGVyLCAxKQorCisgICAgZGVmIHRlc3RfYnJhbmNoX3N0YXNoKHNlbGYpOgorICAg
ICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCkgYXMgc2FmYXJpOgorICAgICAgICAg
ICAgZ2l0X3JlcG8gPSBTdGFzaFJlcG9zaXRvcnkoJ2h0dHBzOi8ve30nLmZvcm1hdChzYWZhcmku
cmVtb3RlKSkKKyAgICAgICAgICAgIGNvbW1pdCA9IGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQoJzYy
MTY1MmFkZDdmYycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC51dWlkLCAx
NjAxNjY2MDAwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5icmFuY2gs
ICdicmFuY2gtYScpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9tb2RlbC9zdWl0ZV9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3N1
aXRlX2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3Mzk4MCkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3N1aXRlX2NvbnRleHRf
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjgsNyArMjgsNiBAQCBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xs
ZXIuY29uZmlndXJhdGlvCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0
IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fz
c2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJv
bSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTVk5SZXBvc2l0
b3J5CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRp
b25zCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1w
b3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQogCkBAIC0zNywxMCArMzYsMTEgQEAgY2xhc3MgU3Vp
dGVDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzdAogICAgIEtFWVNQQUNFID0gJ3N1aXRlX2Nv
bnRleHRfdGVzdF9rZXlzcGFjZScKIAogICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCwgdGVzdF9yZXN1bHRzPU5v
bmUpOgotICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxmLktFWVNQ
QUNFKQotICAgICAgICBzZWxmLm1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9
cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNFLCBjcmVh
dGVfa2V5c3BhY2U9VHJ1ZSkpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVz
dWx0cyhzZWxmLm1vZGVsLCB0ZXN0X3Jlc3VsdHM9dGVzdF9yZXN1bHRzKQotICAgICAgICBNb2Nr
TW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0cyhzZWxmLm1vZGVsKQorICAgICAgICB3aXRoIE1v
Y2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAg
ICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxmLktFWVNQQUNFKQor
ICAgICAgICAgICAgc2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJl
ZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRl
X2tleXNwYWNlPVRydWUpKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19y
ZXN1bHRzKHNlbGYubW9kZWwsIHRlc3RfcmVzdWx0cz10ZXN0X3Jlc3VsdHMpCisgICAgICAgICAg
ICBNb2NrTW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0cyhzZWxmLm1vZGVsKQogCiAgICAgQFdh
aXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJp
Y3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRl
c3RfZmluZF9hbGwoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFD
b250ZXh0KToKQEAgLTYwLDcgKzYwLDggQEAgY2xhc3MgU3VpdGVDb250ZXh0VGVzdChXYWl0Rm9y
RG9ja2VyVGVzdAogICAgICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5zdWl0ZV9jb250ZXh0LmZp
bmRfYnlfY29tbWl0KAogICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24o
cGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCiAgICAgICAg
ICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgcmVjZW50PUZhbHNlLAotICAgICAgICAgICAgYmVn
aW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLCBlbmQ9
TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDMpLAorICAgICAg
ICAgICAgYmVnaW49MTYwMTY2MTAwMCwKKyAgICAgICAgICAgIGVuZD0xNjAxNjYzMDAwLAogICAg
ICAgICApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCAyKQogICAgICAg
ICBmb3IgcmVzdWx0c19mb3JfY29uZmlnIGluIHJlc3VsdHMudmFsdWVzKCk6CkBAIC04Niw3ICs4
Nyw4IEBAIGNsYXNzIFN1aXRlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3QKICAgICAgICAg
cmVzdWx0cyA9IHNlbGYubW9kZWwuc3VpdGVfY29udGV4dC5maW5kX2J5X3N0YXJ0X3RpbWUoCiAg
ICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywg
c3R5bGU9J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpXSwKICAgICAgICAgICAgIHN1aXRlPSdsYXlv
dXQtdGVzdHMnLAotICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCku
Y29tbWl0X2Zvcl9pZCgyMzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29t
bWl0X2Zvcl9pZCgyMzY1NDIpLAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwKKyAgICAg
ICAgICAgIGVuZD0xNjAxNjYwMDAwLAogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKQEAgLTEyMCw4ICsxMjIsOCBAQCBjbGFzcyBTdWl0ZUNvbnRleHRUZXN0KFdhaXRGb3JE
b2NrZXJUZXN0CiAgICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLnN1aXRlX2NvbnRleHQuZmlu
ZF9ieV9zdGFydF90aW1lKAogICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRp
b24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCiAgICAg
ICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKLSAgICAgICAgICAgIGJlZ2luPU1vY2tTVk5S
ZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwKLSAgICAgICAgICAgIGVu
ZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCisgICAg
ICAgICAgICBiZWdpbj0xNjAxNjYwMDAwLAorICAgICAgICAgICAgZW5kPTE2MDE2NjAwMDAsCiAg
ICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKApAQCAtMTU2LDggKzE1OCw4IEBA
IGNsYXNzIFN1aXRlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3QKICAgICAgICAgcmVzdWx0
cyA9IHNlbGYubW9kZWwuc3VpdGVfY29udGV4dC5maW5kX2J5X3N0YXJ0X3RpbWUoCiAgICAgICAg
ICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9
J1JlbGVhc2UnLCBmbGF2b3I9J3drMScpXSwKICAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVz
dHMnLAotICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0
X2Zvcl9pZCgyMzY1NDIpLAotICAgICAgICAgICAgZW5kPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtp
dCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwKKyAgICAgICAgICAgIGJlZ2luPTE2MDE2NjAwMDAs
CisgICAgICAgICAgICBlbmQ9MTYwMTY2MDAwMCwKICAgICAgICAgKQogCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9tb2RlbC90ZXN0X2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdGVz
dF9jb250ZXh0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzM5ODApCisrKyBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC90ZXN0X2NvbnRleHRfdW5p
dHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAx
OS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNyArMjgsNiBAQCBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIu
Y29uZmlndXJhdGlvCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGlt
cG9ydCBDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2Fu
ZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJvbSBy
ZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTVk5SZXBvc2l0b3J5
CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRpb25z
CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0
IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQogCkBAIC0zNywxMCArMzYsMTEgQEAgY2xhc3MgVGVzdENv
bnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXN0QwogICAgIEtFWVNQQUNFID0gJ3Rlc3RfY29udGV4
dF90ZXN0X2tleXNwYWNlJwogCiAgICAgZGVmIGluaXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3Ry
aWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgY2Fzc2FuZHJh
LmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAgICAgc2VsZi5tb2Rl
bCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNz
YW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAg
ICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMoc2VsZi5tb2RlbCkKLSAgICAg
ICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMoc2VsZi5tb2RlbCkKKyAgICAgICAg
d2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgp
OgorICAgICAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlT
UEFDRSkKKyAgICAgICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShy
ZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0Us
IGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRk
X21vY2tfcmVzdWx0cyhzZWxmLm1vZGVsKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5w
cm9jZXNzX3Jlc3VsdHMoc2VsZi5tb2RlbCkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2Fu
ZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2xpc3RfYWxsKHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CkBAIC04NCw4ICs4
NCw4IEBAIGNsYXNzIFRlc3RDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzdEMKICAgICAgICAg
cmVzdWx0cyA9IHNlbGYubW9kZWwudGVzdF9jb250ZXh0LmZpbmRfYnlfY29tbWl0KAogICAgICAg
ICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxl
PSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCiAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRl
c3RzJywgdGVzdD0nZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJywgcmVjZW50PUZh
bHNlLAotICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0
X2Zvcl9pZCgyMzY1NDIpLAotICAgICAgICAgICAgZW5kPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtp
dCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQzKSwKKyAgICAgICAgICAgIGJlZ2luPTE2MDE2NjEwMDAs
CisgICAgICAgICAgICBlbmQ9MTYwMTY2MzAwMCwKICAgICAgICAgKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihyZXN1bHRzKSwgMikKICAgICAgICAgZm9yIHJlc3VsdHNfZm9yX2NvbmZp
ZyBpbiByZXN1bHRzLnZhbHVlcygpOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdXBsb2FkX2NvbnRleHRfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvbW9kZWwvdXBsb2FkX2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3Mzk4MCkKKysr
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3Vw
bG9hZF9jb250ZXh0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAot
IyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBD
b3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDExICszNCwxMiBAQCBjbGFzcyBVcGxv
YWRDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzCiAgICAgS0VZU1BBQ0UgPSAndXBsb2FkX2Nv
bnRleHRfdGVzdF9rZXlzcGFjZScKIAogICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCwgYXN5bmNfcHJvY2Vzc2lu
Zz1GYWxzZSk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYu
S0VZU1BBQ0UpCi0gICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZSgK
LSAgICAgICAgICAgIHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9
c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpLAotICAgICAgICAgICAgYXN5bmNf
cHJvY2Vzc2luZz1hc3luY19wcm9jZXNzaW5nLAotICAgICAgICApCisgICAgICAgIHdpdGggTW9j
a01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAg
ICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpCisg
ICAgICAgICAgICBzZWxmLm1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUoCisgICAgICAg
ICAgICAgICAgcmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxm
LktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSksCisgICAgICAgICAgICAgICAgYXN5bmNf
cHJvY2Vzc2luZz1hc3luY19wcm9jZXNzaW5nLAorICAgICAgICAgICAgKQogCiAgICAgZGVmIHRl
c3RfemlwcGluZyhzZWxmKToKICAgICAgICAgemlwcGVkX2J5dGVzID0gVXBsb2FkQ29udGV4dC50
b196aXAoJ3NvbWVzdHJpbmcnICogMTAwKQpAQCAtODksNyArOTAsNyBAQCBjbGFzcyBVcGxvYWRD
b250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzCiAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShy
ZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKICAgICAgICAgTW9ja01vZGVsRmFjdG9y
eS5hZGRfbW9ja19yZXN1bHRzKHNlbGYubW9kZWwpCiAKLSAgICAgICAgcmVzdWx0cyA9IHNlbGYu
bW9kZWwudXBsb2FkX2NvbnRleHQuZmluZF90ZXN0X3Jlc3VsdHMoY29uZmlndXJhdGlvbnM9W0Nv
bmZpZ3VyYXRpb24ocGxhdGZvcm09J2lPUycsIGlzX3NpbXVsYXRvcj1UcnVlKV0sIHN1aXRlPSds
YXlvdXQtdGVzdHMnLCBicmFuY2g9J3NhZmFyaS02MDYtYnJhbmNoJywgcmVjZW50PVRydWUpCisg
ICAgICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLnVwbG9hZF9jb250ZXh0LmZpbmRfdGVzdF9yZXN1
bHRzKGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCBpc19zaW11
bGF0b3I9VHJ1ZSldLCBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgYnJhbmNoPSdicmFuY2gtYScsIHJl
Y2VudD1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihyZXN1bHRzKSkKICAg
ICAgICAgZm9yIGNvbmZpZywgdmFsdWVzIGluIHJlc3VsdHMuaXRlbXMoKToKICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnLCBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCBp
c19zaW11bGF0b3I9VHJ1ZSkpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS92aWV3L2FyY2hpdmVfdmlld191bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3
L2FyY2hpdmVfdmlld191bml0dGVzdC5weQkocmV2aXNpb24gMjczOTgwKQorKysgVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9hcmNoaXZlX3ZpZXdf
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjIsNyArMjIsNiBAQAogCiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQg
anNvbgotaW1wb3J0IHRpbWUKIAogZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRp
cwogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0CkBAIC0z
MCwxMCArMjksOCBAQCBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvCiBm
cm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbmZpZ3VyYXRpb25fY29udGV4dF91bml0dGVzdCBpbXBv
cnQgQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tf
Y2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3Vs
dHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQot
ZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTdGFzaFJl
cG9zaXRvcnksIE1vY2tTVk5SZXBvc2l0b3J5CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRf
Zm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQogZnJvbSBy
ZXN1bHRzZGJweS52aWV3LnZpZXdfcm91dGVzX3VuaXR0ZXN0IGltcG9ydCBXZWJTaXRlVGVzdENh
c2UKLWZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQuc2VsZWN0IGltcG9ydCBTZWxlY3QK
IAogCiBjbGFzcyBBcmNoaXZlVmlld1VuaXR0ZXN0KFdlYlNpdGVUZXN0Q2FzZSk6CkBAIC00Myw3
ICs0MCwyMyBAQCBjbGFzcyBBcmNoaXZlVmlld1VuaXR0ZXN0KFdlYlNpdGVUZXN0Q2FzCiAgICAg
ICAgICAgICBkYXRhPWRpY3QoCiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1qc29uLmR1
bXBzKENvbmZpZ3VyYXRpb25Db250ZXh0VGVzdC5DT05GSUdVUkFUSU9OU1swXSwgY2xzPUNvbmZp
Z3VyYXRpb24uRW5jb2RlciksCiAgICAgICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycs
Ci0gICAgICAgICAgICAgICAgY29tbWl0cz1qc29uLmR1bXBzKFtNb2NrU3Rhc2hSZXBvc2l0b3J5
LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoJ2JiNmJkYTVmJyksIE1vY2tTVk5SZXBvc2l0b3J5Lndl
YmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKV0sIGNscz1Db21taXQuRW5jb2RlciksCisgICAg
ICAgICAgICAgICAgY29tbWl0cz1qc29uLmR1bXBzKFtkaWN0KAorICAgICAgICAgICAgICAgICAg
ICByZXBvc2l0b3J5X2lkPSdzYWZhcmknLAorICAgICAgICAgICAgICAgICAgICBpZD0nZDhiY2Uy
NmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycsCisgICAgICAgICAgICAgICAgICAg
IGJyYW5jaD0nbWFpbicsCisgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNjAxNjY4MDAw
LAorICAgICAgICAgICAgICAgICAgICBvcmRlcj0xLAorICAgICAgICAgICAgICAgICAgICBjb21t
aXR0ZXI9J2piZWRhcmRAYXBwbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0n
UGF0Y2ggU2VyaWVzXG4nLAorICAgICAgICAgICAgICAgICksIGRpY3QoCisgICAgICAgICAgICAg
ICAgICAgIHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsCisgICAgICAgICAgICAgICAgICAgIGlkPSc2
JywKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoPSd0cnVuaycsCisgICAgICAgICAgICAgICAg
ICAgIHRpbWVzdGFtcD0xNjAxNjY1MTAwLAorICAgICAgICAgICAgICAgICAgICBvcmRlcj0wLAor
ICAgICAgICAgICAgICAgICAgICBjb21taXR0ZXI9J2piZWRhcmRAYXBwbGUuY29tJywKKyAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZT0nNnRoIGNvbW1pdFxuJywKKyAgICAgICAgICAgICAgICAp
XSwgY2xzPUNvbW1pdC5FbmNvZGVyKSwKICAgICAgICAgICAgICksCiAgICAgICAgICAgICBmaWxl
cz1kaWN0KGZpbGU9YmFzZTY0LmI2NGRlY29kZShNb2NrTW9kZWxGYWN0b3J5LkFSQ0hJVkVfWklQ
KSksCiAgICAgICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L3ZpZXcvY29tbWl0X3ZpZXdfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9jb21t
aXRfdmlld191bml0dGVzdC5weQkocmV2aXNpb24gMjczOTgwKQorKysgVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9jb21taXRfdmlld191bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMyw5ICsyMyw4IEBACiBpbXBvcnQgdGltZQogCiBmcm9tIGZha2VyZWRpcyBp
bXBvcnQgRmFrZVN0cmljdFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0
IGltcG9ydCBDb21taXQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29u
dGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwu
bW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZOUmVwb3Np
dG9yeQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1v
Y2tNb2RlbEZhY3RvcnkKIGZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rl
c3RfY2FzZSBpbXBvcnQgV2FpdEZvckRvY2tlclRlc3RDYXNlCiBmcm9tIHJlc3VsdHNkYnB5LnZp
ZXcudmlld19yb3V0ZXNfdW5pdHRlc3QgaW1wb3J0IFdlYlNpdGVUZXN0Q2FzZQogZnJvbSBzZWxl
bml1bS53ZWJkcml2ZXIuc3VwcG9ydC5zZWxlY3QgaW1wb3J0IFNlbGVjdApAQCAtMzMsMTAgKzMy
LDE4IEBAIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQuc2VsZWN0IGkKIAogY2xhc3Mg
Q29tbWl0Vmlld1VuaXR0ZXN0KFdlYlNpdGVUZXN0Q2FzZSk6CiAgICAgZGVmIHJlZ2lzdGVyX2Fs
bF9jb21taXRzKHNlbGYsIGNsaWVudCk6Ci0gICAgICAgIGZvciByZXBvIGluIFtNb2NrU3Rhc2hS
ZXBvc2l0b3J5LnNhZmFyaSgpLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKV06CisgICAgICAg
IGZvciBuYW1lLCByZXBvIGluIGRpY3Qoc2FmYXJpPU1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCks
IHdlYmtpdD1Nb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpKS5pdGVtcygpOgogICAgICAgICAgICAg
Zm9yIGNvbW1pdHMgaW4gcmVwby5jb21taXRzLnZhbHVlcygpOgogICAgICAgICAgICAgICAgIGZv
ciBjb21taXQgaW4gY29tbWl0czoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cy9yZWdpc3RlcicsIGRh
dGE9Q29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KGNvbW1pdCkpLnN0YXR1c19jb2RlKQorICAgICAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgY2xpZW50LnBvc3Qoc2VsZi5VUkwg
KyAnL2FwaS9jb21taXRzL3JlZ2lzdGVyJywgZGF0YT1kaWN0KAorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVwb3NpdG9yeV9pZD1uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgaWQ9Y29t
bWl0LnJldmlzaW9uIG9yIGNvbW1pdC5oYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgYnJh
bmNoPWNvbW1pdC5icmFuY2gsCisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9Y29t
bWl0LnRpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyPWNvbW1pdC5vcmRl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj1jb21taXQuYXV0aG9yLmVtYWls
LAorICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1jb21taXQubWVzc2FnZSwKKyAgICAg
ICAgICAgICAgICAgICAgKSkuc3RhdHVzX2NvZGUpCiAKICAgICBkZWYgdW5wYWNrX2NvbW1pdF90
YWJsZShzZWxmLCBjb21taXRfdGFibGUpOgogICAgICAgICBoZWFkZXJzID0gY29tbWl0X3RhYmxl
LmZpbmRfZWxlbWVudHNfYnlfdGFnX25hbWUoJ3RoJykKQEAgLTg1LDcgKzkyLDcgQEAgY2xhc3Mg
Q29tbWl0Vmlld1VuaXR0ZXN0KFdlYlNpdGVUZXN0Q2FzZQogICAgICAgICBzZWxmLmFzc2VydElu
KCd3ZWJraXQnLCBjb21taXRzKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKGNv
bW1pdHNbJ3NhZmFyaSddKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4oY29tbWl0
c1snd2Via2l0J10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGxlbihjb21taXRzWyd3
ZWJraXQnXSkpCiAKICAgICAgICAgcm93cyA9IGNvbW1pdF90YWJsZS5maW5kX2VsZW1lbnRfYnlf
dGFnX25hbWUoJ3Rib2R5JykuZmluZF9lbGVtZW50c19ieV90YWdfbmFtZSgndHInKQogICAgICAg
ICBzZWxmLmFzc2VydE5vdEVxdWFsKApAQCAtMTIxLDI0ICsxMjgsOCBAQCBjbGFzcyBDb21taXRW
aWV3VW5pdHRlc3QoV2ViU2l0ZVRlc3RDYXNlCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NhZmFy
aScsIGNvbW1pdHMpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3dlYmtpdCcsIGNvbW1pdHMpCiAK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oY29tbWl0c1snc2FmYXJpJ10pKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxlbihjb21taXRzWyd3ZWJraXQnXSkpCi0KLSAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBAV2Vi
U2l0ZVRlc3RDYXNlLmRlY29yYXRvcigpCi0gICAgZGVmIHRlc3RfcmFkYXJfc3RyaW5ncyhzZWxm
LCBkcml2ZXIsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9j
b21taXRzKGNsaWVudCkKLSAgICAgICAgZHJpdmVyLmdldChzZWxmLlVSTCArICcvY29tbWl0cz9p
ZD0zMzY2MTBhNCcpCi0KLSAgICAgICAgd2hpbGUgbm90IGRyaXZlci5maW5kX2VsZW1lbnRzX2J5
X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScpOgotICAgICAgICAgICAgdGltZS5zbGVlcCguMSkK
LSAgICAgICAgY29tbWl0X3RhYmxlID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jbGFzc19uYW1l
KCdjb21taXQtdGFibGUnKQotCi0gICAgICAgIGNvbW1pdHMgPSBzZWxmLnVucGFja19jb21taXRf
dGFibGUoY29tbWl0X3RhYmxlKQotICAgICAgICBjaGFuZ2Vsb2cgPSBjb21taXRzWydzYWZhcmkn
XVswXS5maW5kX2VsZW1lbnRfYnlfdGFnX25hbWUoJ2RpdicpCi0KLSAgICAgICAgcmFkYXIgPSAn
PHJkYXI6Ly9wcm9ibGVtLzk5OTk5OTk5PicKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFu
Z2Vsb2cudGV4dFs6bGVuKHJhZGFyKV0sIHJhZGFyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDUsIGxlbihjb21taXRzWydzYWZhcmknXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwg
bGVuKGNvbW1pdHNbJ3dlYmtpdCddKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9j
a19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJh
PU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBXZWJTaXRlVGVzdENhc2UuZGVjb3JhdG9yKCkK
QEAgLTE1Niw3ICsxNDcsNyBAQCBjbGFzcyBDb21taXRWaWV3VW5pdHRlc3QoV2ViU2l0ZVRlc3RD
YXNlCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3dlYmtpdCcsIGNvbW1pdHMpCiAKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4oY29tbWl0c1snc2FmYXJpJ10pKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDUsIGxlbihjb21taXRzWyd3ZWJraXQnXSkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoNCwgbGVuKGNvbW1pdHNbJ3dlYmtpdCddKSkKIAogICAgICAgICBjb250cm9scyA9
IHNlbGYuZmluZF9pbnB1dF93aXRoX25hbWUoZHJpdmVyLCAnTGltaXQ6JykuZmluZF9lbGVtZW50
c19ieV90YWdfbmFtZSgnaW5wdXQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihj
b250cm9scykpCkBAIC0xODQsMTQgKzE3NSwxNCBAQCBjbGFzcyBDb21taXRWaWV3VW5pdHRlc3Qo
V2ViU2l0ZVRlc3RDYXNlCiAgICAgQFdlYlNpdGVUZXN0Q2FzZS5kZWNvcmF0b3IoKQogICAgIGRl
ZiB0ZXN0X29uZV9saW5lX3N3aXRjaChzZWxmLCBkcml2ZXIsIGNsaWVudCwgKiprd2FyZ3MpOgog
ICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkKLSAgICAgICAgZHJpdmVy
LmdldChzZWxmLlVSTCArICcvY29tbWl0cz9pZD03YmU0MDg0MicpCisgICAgICAgIGRyaXZlci5n
ZXQoc2VsZi5VUkwgKyAnL2NvbW1pdHM/aWQ9ZDhiY2UyNmZhNjVjJykKIAogICAgICAgICB3aGls
ZSBub3QgZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZSgnY29tbWl0LXRhYmxlJyk6
CiAgICAgICAgICAgICB0aW1lLnNsZWVwKC4xKQogICAgICAgICBjb21taXRfdGFibGUgPSBkcml2
ZXIuZmluZF9lbGVtZW50X2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScpCiAKLSAgICAgICAg
bGluZV8xID0gdSdDaGFuZ2UgNCBcdTIwMTQgKFBhcnQgMikgZGVzY3JpcHRpb24uJwotICAgICAg
ICBsaW5lXzIgPSAnUmV2aWV3ZWQgYnkgcGVyc29uLicKKyAgICAgICAgbGluZV8xID0gdSdQYXRj
aCBTZXJpZXMnCisgICAgICAgIGxpbmVfMiA9ICcnCiAKICAgICAgICAgY29tbWl0cyA9IHNlbGYu
dW5wYWNrX2NvbW1pdF90YWJsZShjb21taXRfdGFibGUpCiAgICAgICAgIGNoYW5nZWxvZyA9IGNv
bW1pdHNbJ3NhZmFyaSddWzBdLmZpbmRfZWxlbWVudF9ieV90YWdfbmFtZSgnZGl2JykKQEAgLTIy
OSwxMSArMjIwLDExIEBAIGNsYXNzIENvbW1pdFZpZXdVbml0dGVzdChXZWJTaXRlVGVzdENhc2UK
ICAgICAgICAgc2VsZi5hc3NlcnRJbignd2Via2l0JywgY29tbWl0cykKIAogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDUsIGxlbihjb21taXRzWydzYWZhcmknXSkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoNSwgbGVuKGNvbW1pdHNbJ3dlYmtpdCddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCg0LCBsZW4oY29tbWl0c1snd2Via2l0J10pKQogCiAgICAgICAgIGNvbnRyb2xzID0gc2Vs
Zi5maW5kX2lucHV0X3dpdGhfbmFtZShkcml2ZXIsICdCcmFuY2gnKS5maW5kX2VsZW1lbnRzX2J5
X3RhZ19uYW1lKCdzZWxlY3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihjb250
cm9scykpCi0gICAgICAgIFNlbGVjdChjb250cm9sc1swXSkuc2VsZWN0X2J5X3Zpc2libGVfdGV4
dCgnc2FmYXJpLTYwNi1icmFuY2gnKQorICAgICAgICBTZWxlY3QoY29udHJvbHNbMF0pLnNlbGVj
dF9ieV92aXNpYmxlX3RleHQoJ2JyYW5jaC1hJykKIAogICAgICAgICBzZWxmLnRvZ2dsZV9kcmF3
ZXIoZHJpdmVyLCBhc3NlcnRfZGlzcGxheWVkPUZhbHNlKQogCkluZGV4OiBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3ZpZXdfcm91dGVzX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L3ZpZXcvdmlld19yb3V0ZXNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3Mzk4
MCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3Zp
ZXcvdmlld19yb3V0ZXNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDkgKzIwLDYg
QEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IG1vY2sK
LWltcG9ydCBvcwotaW1wb3J0IHJlcXVlc3RzCiBpbXBvcnQgdGltZQogCiBmcm9tIGNvbnRyb2xs
ZXIuYXBpX3JvdXRlcyBpbXBvcnQgQVBJUm91dGVzCkBAIC0zMSwxMyArMjgsMTIgQEAgZnJvbSBy
ZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKIGZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC5m
bGFza190ZXN0Y2FzZSBpbXBvcnQgRmxhc2tUZXN0Q2FzZQogZnJvbSByZXN1bHRzZGJweS5tb2Rl
bC5jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAogZnJvbSByZXN1bHRz
ZGJweS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29u
dGV4dAorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1v
Y2tNb2RlbEZhY3RvcnkKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9kZWwgaW1wb3J0IE1vZGVs
Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1N0YXNo
UmVwb3NpdG9yeSwgTW9ja1NWTlJlcG9zaXRvcnkKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwucmVw
b3NpdG9yeSBpbXBvcnQgU3Rhc2hSZXBvc2l0b3J5LCBXZWJLaXRSZXBvc2l0b3J5CiBmcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JE
b2NrZXJUZXN0Q2FzZQogZnJvbSByZXN1bHRzZGJweS52aWV3LnZpZXdfcm91dGVzIGltcG9ydCBW
aWV3Um91dGVzCiAKLWZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBtb2NrcwotCiAKIGNsYXNzIFdl
YlNpdGVUZXN0Q2FzZShGbGFza1Rlc3RDYXNlLCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgogICAg
IEtFWVNQQUNFID0gJ3dlYl9zaXRlX3Rlc3RjYXNlX2tleXNwYWNlJwpAQCAtNTgsMTggKzU0LDIy
IEBAIGNsYXNzIFdlYlNpdGVUZXN0Q2FzZShGbGFza1Rlc3RDYXNlLCBXYWkKIAogICAgIEBjbGFz
c21ldGhvZAogICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJl
ZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9w
X2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKLSAgICAgICAgcmVkaXNfaW5zdGFuY2Ug
PSByZWRpcygpCi0KLSAgICAgICAgbW9kZWwgPSBNb2RlbCgKLSAgICAgICAgICAgIHJlZGlzPXJl
ZGlzX2luc3RhbmNlLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwg
Y3JlYXRlX2tleXNwYWNlPVRydWUpLAotICAgICAgICAgICAgcmVwb3NpdG9yaWVzPVtNb2NrU1ZO
UmVwb3NpdG9yeS53ZWJraXQocmVkaXM9cmVkaXNfaW5zdGFuY2UpLCBNb2NrU3Rhc2hSZXBvc2l0
b3J5LnNhZmFyaShyZWRpcz1yZWRpc19pbnN0YW5jZSldLAotICAgICAgICApCi0gICAgICAgIGFw
aV9yb3V0ZXMgPSBBUElSb3V0ZXMobW9kZWw9bW9kZWwsIGltcG9ydF9uYW1lPV9fbmFtZV9fKQot
ICAgICAgICB2aWV3X3JvdXRlcyA9IFZpZXdSb3V0ZXMobW9kZWw9bW9kZWwsIGNvbnRyb2xsZXI9
YXBpX3JvdXRlcywgaW1wb3J0X25hbWU9X19uYW1lX18pCisgICAgICAgIHdpdGggTW9ja01vZGVs
RmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAg
IGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKKyAgICAgICAg
ICAgIHJlZGlzX2luc3RhbmNlID0gcmVkaXMoKQorCisgICAgICAgICAgICBtb2RlbCA9IE1vZGVs
KAorICAgICAgICAgICAgICAgIHJlZGlzPXJlZGlzX2luc3RhbmNlLCBjYXNzYW5kcmE9Y2Fzc2Fu
ZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpLAorICAgICAg
ICAgICAgICAgIHJlcG9zaXRvcmllcz1bCisgICAgICAgICAgICAgICAgICAgIFdlYktpdFJlcG9z
aXRvcnkoKSwKKyAgICAgICAgICAgICAgICAgICAgU3Rhc2hSZXBvc2l0b3J5KCdodHRwczovL2Jp
dGJ1Y2tldC5leGFtcGxlLmNvbS9wcm9qZWN0cy9TQUZBUkkvcmVwb3Mvc2FmYXJpJyksCisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGFwaV9yb3V0ZXMgPSBB
UElSb3V0ZXMobW9kZWw9bW9kZWwsIGltcG9ydF9uYW1lPV9fbmFtZV9fKQorICAgICAgICAgICAg
dmlld19yb3V0ZXMgPSBWaWV3Um91dGVzKG1vZGVsPW1vZGVsLCBjb250cm9sbGVyPWFwaV9yb3V0
ZXMsIGltcG9ydF9uYW1lPV9fbmFtZV9fKQogCi0gICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJp
bnQoYXBpX3JvdXRlcykKLSAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludCh2aWV3X3JvdXRl
cykKKyAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoYXBpX3JvdXRlcykKKyAgICAg
ICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQodmlld19yb3V0ZXMpCiAKICAgICBAY2xhc3Nt
ZXRob2QKICAgICBkZWYgZGVjb3JhdG9yKGNscyk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422581</attachid>
            <date>2021-03-08 10:19:08 -0800</date>
            <delta_ts>2021-03-08 11:12:19 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-222754-20210308101906.patch</filename>
            <type>text/plain</type>
            <size>174607</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NDA3OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDY2IEBACisyMDIxLTAzLTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcmVzdWx0c2RicHldIEFkb3B0IHdlYmtpdHNjbXB5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3NTQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzc1MDQ5MjA5PgorCisgICAgICAgIFJldmlld2VkIGJ5IERld2VpIFpodS4K
KworICAgICAgICBBZG9wdGluZyB3ZWJraXRzY21weSdzIHJlbW90ZSByZXBvc2l0b3JpZXMgcmVx
dWlyZXMgdXNpbmcgdGhlIHVuaXQgdGVzdGluZyBwYXJhZGlnbXMgZnJvbQorICAgICAgICB0aG9z
ZSBvYmplY3RzLCB3aGljaCByZXF1aXJlcyBjb25zaWRlcmFibGUgYWRqdXN0bWVudCBvZiB0ZXN0
aW5nIGNvZGUuCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1
bHRzZGJweS9fX2luaXRfXy5weTogQnVtcCB2ZXJzaW9uLCBpbmNsdWRlIHdlYmtpdHNjbXB5Lgor
ICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRy
b2xsZXIvYXJjaGl2ZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY2lfY29udHJvbGxl
cl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5OgorICAgICAgICAoQ29t
bWl0Q29udHJvbGxlci5yZWdpc3Rlcik6IFVzZSB3ZWJraXRzY21weSdzIGV4Y2VwdGlvbnMuCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJv
bGxlci9jb21taXRfY29udHJvbGxlcl91bml0dGVzdC5weToKKyAgICAgICAgKENvbW1pdENvbnRy
b2xsZXJUZXN0LnRlc3RfcmVnaXN0ZXJfdmlhX3Bvc3QpOiBEZWxldGVkLgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvZmFpbHVy
ZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvc3VpdGVfY29udHJvbGxlcl91bml0dGVz
dC5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlcl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3VwbG9hZF9j
b250cm9sbGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4dF91bml0dGVzdC5weToKKyAg
ICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9j
aV9jb250ZXh0X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0LnB5OgorICAgICAgICAoQ29t
bWl0Q29udGV4dC5icmFuY2hfa2V5c19mb3JfY29tbWl0cyk6CisgICAgICAgIChDb21taXRDb250
ZXh0LmZpbmRfY29tbWl0c19ieV9pZCk6IGRlZmF1bHRfYnJhbmNoIGlzIG5vdyBhbiBpbnN0YW5j
ZSB2YXJpYWJsZS4KKyAgICAgICAgKENvbW1pdENvbnRleHQuZmluZF9jb21taXRzX2J5X3V1aWQp
OiBEaXR0by4KKyAgICAgICAgKENvbW1pdENvbnRleHQuZmluZF9jb21taXRzX2J5X3RpbWVzdGFt
cCk6IERpdHRvLgorICAgICAgICAoQ29tbWl0Q29udGV4dC5maW5kX2NvbW1pdHNfaW5fcmFuZ2Up
OiBEaXR0by4KKyAgICAgICAgKENvbW1pdENvbnRleHQuc2libGluZ19jb21taXRzKTogRGl0dG8u
CisgICAgICAgIChDb21taXRDb250ZXh0LnJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lk
KTogd2Via2l0c2NtcHkgcmVwb3NpdG9yaWVzIGNvbXB1dGUgYnJhbmNoLgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250
ZXh0X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29udGV4dF91bml0dGVzdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2NrX21v
ZGVsX2ZhY3RvcnkucHk6CisgICAgICAgIChNb2NrTW9kZWxGYWN0b3J5KToKKyAgICAgICAgKE1v
Y2tNb2RlbEZhY3Rvcnkuc2FmYXJpKTogVXNlIHNoYXJlZCB3ZWJraXRzY21weSBtb2Nrcy4KKyAg
ICAgICAgKE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KTogRGl0dG8uCisgICAgICAgIChNb2NrTW9k
ZWxGYWN0b3J5LmNyZWF0ZSk6IFRpbWVzdGFtcHMgaW4gd2Via2l0c2NtcHkgYXJlIGp1c3QgaW50
ZWdlcnMuCisgICAgICAgIChNb2NrTW9kZWxGYWN0b3J5Lml0ZXJhdGVfYWxsX2NvbW1pdHMpOiB3
ZWJraXRzY21weSBhbmQgcmVzdWx0c2RicHkgaGF2ZSBzbGlnaHRseSBkaWZmZXJlbnQKKyAgICAg
ICAgY29tbWl0IHJlcHJlc2VudGF0aW9ucywgc28gdGhlIG1lY2hhbmljcyBvZiByZWdpc3Rlcmlu
ZyBjb21taXRzIGFyZSBkaWZmZXJlbnQuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVz
dWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9ja19yZXBvc2l0b3J5LnB5OiBSZW1vdmVkLgor
ICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L21vZGVsX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnkucHk6CisgICAgICAgIChSZXBvc2l0b3J5
KToKKyAgICAgICAgKFJlcG9zaXRvcnkuX19pbml0X18pOiBkZWZhdWx0X2JyYW5jaCBpcyBub3cg
YW4gaW5zdGFuY2UgdmFyaWFibGUuCisgICAgICAgIChSZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQp
OiB3ZWJraXRzY21weSBkb2VzIG5vdCByZXF1aXJlIHRoZSBicmFuY2gsIGdpdmVuIGEgaGFzaCBv
ciByZXZpc2lvbi4KKyAgICAgICAgKFN0YXNoUmVwb3NpdG9yeSk6IFJldHJpZXZlIGNvbW1pdCBm
cm9tIHdlYmtpdHNjbXB5J3MgcmVtb3RlIEJpdEJ1Y2tldCBvYmplY3QuCisgICAgICAgIChXZWJL
aXRSZXBvc2l0b3J5KTogSGFyZC1jb2RlIFdlYktpdCdzIFN1YnZlcnNpb24gVVJMLiBUaGlzIGlz
IHRlbXBvcmFyeSwgc2luY2UgV2ViS2l0IHdpbGwgc2hvcnRseQorICAgICAgICBiZWNvbWUgYSBH
aXRIdWIgcmVwb3NpdG9yeS4KKyAgICAgICAgKFNDTUV4Y2VwdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChIVFRQUmVwb3NpdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChTVk5SZXBvc2l0b3J5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdFJlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZC5kaWZmX2No
YW5nZWxvZ3MpOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnlfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvc3VpdGVfY29u
dGV4dF91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9tb2RlbC90ZXN0X2NvbnRleHRfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdXBsb2FkX2Nv
bnRleHRfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvdmlldy9hcmNoaXZlX3ZpZXdfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9jb21taXRfdmll
d191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS92aWV3L3ZpZXdfcm91dGVzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisKIDIwMjEt
MDMtMDggIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAg
ICAgd2Via2l0Ym90IHNob3VsZCBzdG9wIHNheWluZyAiPHJldmlzaW9uPiBicm9rZSB0aGUgYnVp
bGQiIHdoZW4gd2UgcmV2ZXJ0IGNvbW1pdHMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3NldHVwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3Jlc3VsdHNkYnB5L3NldHVwLnB5CShyZXZpc2lvbiAyNzQwNzkpCisrKyBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9zZXR1cC5weQkod29ya2luZyBjb3B5KQpAQCAtNzAs
NiArNzAsNyBAQCBzZXR1cCgKICAgICAgICAgJ3htbHRvZGljdCcsCiAgICAgICAgICdzZWxlbml1
bScsCiAgICAgICAgICd3ZWJraXRjb3JlcHknLAorICAgICAgICAnd2Via2l0c2NtcHknLAogICAg
IF0sCiAgICAgaW5jbHVkZV9wYWNrYWdlX2RhdGE9VHJ1ZSwKICAgICB6aXBfc2FmZT1GYWxzZSwK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L19f
aW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L19faW5pdF9fLnB5CShyZXZpc2lvbiAyNzQwNzkpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9fX2luaXRfXy5weQkod29y
a2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQCBpbXBvcnQgc3lzCiBkZWYgX21heWJlX2FkZF93
ZWJraXRfcHl0aG9uX2xpYnJhcnlfcGF0aHMoKToKICAgICAjIEhvcGVmdWxseSB3ZSdyZSBiZXNp
ZGUgd2Via2l0KnB5IGxpYnJhcmllcywgb3RoZXJ3aXNlIHdlYmtpdCpweSB3aWxsIG5lZWQgdG8g
YmUgaW5zdGFsbGVkLgogICAgIGxpYnJhcmllc19wYXRoID0gb3MucGF0aC5kaXJuYW1lKG9zLnBh
dGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkpKQot
ICAgIGZvciBsaWJyYXJ5IGluIFsnd2Via2l0Y29yZXB5JywgJ3dlYmtpdGZsYXNrcHknXToKKyAg
ICBmb3IgbGlicmFyeSBpbiBbJ3dlYmtpdGNvcmVweScsICd3ZWJraXRzY21weScsICd3ZWJraXRm
bGFza3B5J106CiAgICAgICAgIGxpYnJhcnlfcGF0aCA9IG9zLnBhdGguam9pbihsaWJyYXJpZXNf
cGF0aCwgbGlicmFyeSkKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihsaWJyYXJ5X3BhdGgpIGFu
ZCBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihsaWJyYXJ5X3BhdGgsIGxpYnJhcnkpKSBhbmQg
bGlicmFyeV9wYXRoIG5vdCBpbiBzeXMucGF0aDoKICAgICAgICAgICAgIHN5cy5wYXRoLmluc2Vy
dCgwLCBsaWJyYXJ5X3BhdGgpCkBAIC00NCw2ICs0NCw2IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoK
ICAgICAgICAgIlBsZWFzZSBpbnN0YWxsIHdlYmtpdGNvcmVweSB3aXRoIGBwaXAgaW5zdGFsbCB3
ZWJraXRjb3JlcHkgLS1leHRyYS1pbmRleC11cmwgPHBhY2thZ2UgaW5kZXggVVJMPmAiCiAgICAg
KQogCi12ZXJzaW9uID0gVmVyc2lvbigxLCAxLCAzKQordmVyc2lvbiA9IFZlcnNpb24oMiwgMCwg
MCkKIAogbmFtZSA9ICdyZXN1bHRzZGJweScKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXJjaGl2ZV9jb250cm9sbGVyX3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvYXJjaGl2ZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiAyNzQwNzkpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2FyY2hpdmVfY29udHJvbGxlcl91bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOCwxNSArMjgsMTQgQEAgaW1wb3J0IHJlcXVlc3RzCiBmcm9tIGZha2VyZWRpcyBpbXBv
cnQgRmFrZVN0cmljdFJlZGlzCiBmcm9tIHJlZGlzIGltcG9ydCBTdHJpY3RSZWRpcwogZnJvbSBy
ZXN1bHRzZGJweS5jb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0IEFQSVJvdXRlcwotZnJvbSBy
ZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0CiBmcm9tIHJlc3VsdHNk
YnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29uZmlndXJhdGlvbgogZnJvbSBy
ZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LmZsYXNrX3Rlc3RjYXNlIGltcG9ydCBGbGFza1Rlc3RD
YXNlCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNz
YW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNvbmZpZ3VyYXRpb25fY29udGV4
dF91bml0dGVzdCBpbXBvcnQgQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0CiBmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250
ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9j
a01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1w
b3J0IE1vY2tTdGFzaFJlcG9zaXRvcnksIE1vY2tTVk5SZXBvc2l0b3J5CiBmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLm1vZGVsIGltcG9ydCBNb2RlbAorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5yZXBv
c2l0b3J5IGltcG9ydCBTdGFzaFJlcG9zaXRvcnksIFdlYktpdFJlcG9zaXRvcnkKIGZyb20gcmVz
dWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZvckRv
Y2tlclRlc3RDYXNlCiAKIApAQCAtNDcsOCArNDYsMTAgQEAgY2xhc3MgQXJjaGl2ZUNvbnRyb2xs
ZXJVbml0dGVzdChGbGFza1RlcwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXR1cF93ZWJz
ZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29u
dGV4dCk6CiAgICAgICAgIHJlZGlzX2luc3RhbmNlID0gcmVkaXMoKQotICAgICAgICBzYWZhcmkg
PSBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpc19pbnN0YW5jZSkKLSAgICAgICAgd2Vi
a2l0ID0gTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KHJlZGlzX2luc3RhbmNlKQorCisgICAgICAg
IHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQo
KToKKyAgICAgICAgICAgIHNhZmFyaSA9IFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly9iaXRidWNr
ZXQuZXhhbXBsZS5jb20vcHJvamVjdHMvU0FGQVJJL3JlcG9zL3NhZmFyaScpCisgICAgICAgICAg
ICB3ZWJraXQgPSBXZWJLaXRSZXBvc2l0b3J5KCkKIAogICAgICAgICBjYXNzYW5kcmEuZHJvcF9r
ZXlzcGFjZShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UpCiAgICAgICAgIGNhc3NhbmRyYV9pbnN0YW5j
ZSA9IGNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVl
KQpAQCAtODIsMzcgKzgzLDQzIEBAIGNsYXNzIEFyY2hpdmVDb250cm9sbGVyVW5pdHRlc3QoRmxh
c2tUZXMKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4
dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0
X2ludmFsaWRfdXBsb2FkKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICB1cGxvYWRf
Y29udGVudCA9ICdiYWQgZGF0YScuZW5jb2RlKCdhc2NpaScpCi0gICAgICAgIHVwbG9hZF9tZXRh
ID0gZGljdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249anNvbi5kdW1wcyhDb25maWd1cmF0
aW9uQ29udGV4dFRlc3QuQ09ORklHVVJBVElPTlNbMF0sIGNscz1Db25maWd1cmF0aW9uLkVuY29k
ZXIpLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBjb21t
aXRzPWpzb24uZHVtcHMoW01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9p
ZCgnYmI2YmRhNWYnKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgy
MzY1NDIpXSwgY2xzPUNvbW1pdC5FbmNvZGVyKSwKLSAgICAgICAgKQotCi0gICAgICAgIHJlc3Bv
bnNlID0gc2VsZi51cGxvYWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZF
X0FQSV9FTkRQT0lOVH0nLCB1cGxvYWRfbWV0YSwgdXBsb2FkX2NvbnRlbnQpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10sICdBcmNoaXZlIGlzIG5v
dCBhIHppcGZpbGUnKQotCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3QoZid7c2VsZi5V
Ukx9L3tzZWxmLkFSQ0hJVkVfQVBJX0VORFBPSU5UfScsIGRhdGE9c3RyKGpzb24uZHVtcHModXBs
b2FkX21ldGEpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29k
ZSwgNDAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVsnZGVzY3Jp
cHRpb24nXSwgJ05vIGFyY2hpdmUgcHJvdmlkZWQnKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZh
Y3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICB1
cGxvYWRfY29udGVudCA9ICdiYWQgZGF0YScuZW5jb2RlKCdhc2NpaScpCisgICAgICAgICAgICB1
cGxvYWRfbWV0YSA9IGRpY3QoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1qc29uLmR1
bXBzKENvbmZpZ3VyYXRpb25Db250ZXh0VGVzdC5DT05GSUdVUkFUSU9OU1swXSwgY2xzPUNvbmZp
Z3VyYXRpb24uRW5jb2RlciksCisgICAgICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycs
CisgICAgICAgICAgICAgICAgY29tbWl0cz1qc29uLmR1bXBzKFsKKyAgICAgICAgICAgICAgICAg
ICAgZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0nZDhiY2UyNmZhNjVjNmZjOGYzOWMx
NzkyN2FiYjc3ZjY5ZmFiODJmYycpLAorICAgICAgICAgICAgICAgICAgICBkaWN0KHJlcG9zaXRv
cnlfaWQ9J3dlYmtpdCcsIGlkPSc2JyldKSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAg
cmVzcG9uc2UgPSBzZWxmLnVwbG9hZF9maWxlKGNsaWVudCwgZid7c2VsZi5VUkx9L3tzZWxmLkFS
Q0hJVkVfQVBJX0VORFBPSU5UfScsIHVwbG9hZF9tZXRhLCB1cGxvYWRfY29udGVudCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlvbiddLCAn
QXJjaGl2ZSBpcyBub3QgYSB6aXBmaWxlJykKKworICAgICAgICAgICAgcmVzcG9uc2UgPSBjbGll
bnQucG9zdChmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGF0YT1z
dHIoanNvbi5kdW1wcyh1cGxvYWRfbWV0YSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5zdGF0dXNfY29kZSwgNDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5qc29uKClbJ2Rlc2NyaXB0aW9uJ10sICdObyBhcmNoaXZlIHByb3ZpZGVkJykK
IAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRp
cz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQog
ICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3RfdXBs
b2FkX2FuZF9kb3dubG9hZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgdXBsb2Fk
X2NvbnRlbnQgPSBiYXNlNjQuYjY0ZGVjb2RlKE1vY2tNb2RlbEZhY3RvcnkuQVJDSElWRV9aSVAp
Ci0gICAgICAgIHVwbG9hZF9tZXRhID0gZGljdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249
anNvbi5kdW1wcyhDb25maWd1cmF0aW9uQ29udGV4dFRlc3QuQ09ORklHVVJBVElPTlNbMF0sIGNs
cz1Db25maWd1cmF0aW9uLkVuY29kZXIpLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0
cycsCi0gICAgICAgICAgICBjb21taXRzPWpzb24uZHVtcHMoW01vY2tTdGFzaFJlcG9zaXRvcnku
c2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWYnKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Vi
a2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpXSwgY2xzPUNvbW1pdC5FbmNvZGVyKSwKLSAgICAg
ICAgKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZh
Y3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICB1cGxvYWRfY29udGVudCA9IGJhc2U2NC5iNjRk
ZWNvZGUoTW9ja01vZGVsRmFjdG9yeS5BUkNISVZFX1pJUCkKKyAgICAgICAgICAgIHVwbG9hZF9t
ZXRhID0gZGljdCgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29u
ZmlndXJhdGlvbkNvbnRleHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlv
bi5FbmNvZGVyKSwKKyAgICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKKyAgICAg
ICAgICAgICAgICBjb21taXRzPWpzb24uZHVtcHMoWworICAgICAgICAgICAgICAgICAgICBkaWN0
KHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGlkPSdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJi
NzdmNjlmYWI4MmZjJyksCisgICAgICAgICAgICAgICAgICAgIGRpY3QocmVwb3NpdG9yeV9pZD0n
d2Via2l0JywgaWQ9JzYnKV0pLAorICAgICAgICAgICAgKQogCi0gICAgICAgIHJlc3BvbnNlID0g
c2VsZi51cGxvYWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9F
TkRQT0lOVH0nLCB1cGxvYWRfbWV0YSwgdXBsb2FkX2NvbnRlbnQpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHJlc3BvbnNl
ID0gc2VsZi51cGxvYWRfZmlsZShjbGllbnQsIGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQ
SV9FTkRQT0lOVH0nLCB1cGxvYWRfbWV0YSwgdXBsb2FkX2NvbnRlbnQpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAKLSAgICAgICAgcmVz
cG9uc2UgPSBjbGllbnQuZ2V0KGYne3NlbGYuVVJMfS97c2VsZi5BUkNISVZFX0FQSV9FTkRQT0lO
VH0nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDAp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuY29udGVudCwgYmFzZTY0LmI2NGRl
Y29kZShNb2NrTW9kZWxGYWN0b3J5LkFSQ0hJVkVfWklQKSkKKyAgICAgICAgICAgIHJlc3BvbnNl
ID0gY2xpZW50LmdldChmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JykK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuY29udGVudCwgYmFzZTY0LmI2
NGRlY29kZShNb2NrTW9kZWxGYWN0b3J5LkFSQ0hJVkVfWklQKSkKIAogICAgIEBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMs
IG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNl
LnJ1bl93aXRoX3dlYnNlcnZlcigpCkBAIC0xMjQsNDAgKzEzMSw0NyBAQCBjbGFzcyBBcmNoaXZl
Q29udHJvbGxlclVuaXR0ZXN0KEZsYXNrVGVzCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5t
b2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5k
cmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vi
c2VydmVyKCkKICAgICBkZWYgdGVzdF9pbnZhbGlkX21ldGFkYXRhKHNlbGYsIGNsaWVudCwgKipr
d2FyZ3MpOgotICAgICAgICB1cGxvYWRfY29udGVudCA9IGJhc2U2NC5iNjRkZWNvZGUoTW9ja01v
ZGVsRmFjdG9yeS5BUkNISVZFX1pJUCkKLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnVwbG9hZF9m
aWxlKGNsaWVudCwgZid7c2VsZi5VUkx9L3tzZWxmLkFSQ0hJVkVfQVBJX0VORFBPSU5UfScsIGRp
Y3QoCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29uZmlndXJhdGlvbkNv
bnRleHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlvbi5FbmNvZGVyKSwK
LSAgICAgICAgICAgIGNvbW1pdHM9anNvbi5kdW1wcyhbTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZh
cmkoKS5jb21taXRfZm9yX2lkKCdiYjZiZGE1ZicpLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQo
KS5jb21taXRfZm9yX2lkKDIzNjU0MildLCBjbHM9Q29tbWl0LkVuY29kZXIpLAotICAgICAgICAp
LCB1cGxvYWRfY29udGVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0
dXNfY29kZSwgNDAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24oKVsn
ZGVzY3JpcHRpb24nXSwgJ05vIHRlc3Qgc3VpdGUgc3BlY2lmaWVkJykKLQotICAgICAgICByZXNw
b25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElW
RV9BUElfRU5EUE9JTlR9JywgZGljdCgKLSAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMn
LAotICAgICAgICAgICAgY29tbWl0cz1qc29uLmR1bXBzKFtNb2NrU3Rhc2hSZXBvc2l0b3J5LnNh
ZmFyaSgpLmNvbW1pdF9mb3JfaWQoJ2JiNmJkYTVmJyksIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtp
dCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKV0sIGNscz1Db21taXQuRW5jb2RlciksCi0gICAgICAg
ICksIHVwbG9hZF9jb250ZW50KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0
YXR1c19jb2RlLCA0MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigp
WydkZXNjcmlwdGlvbiddLCAnQ2Fubm90IHJlZ2lzdGVyIGEgcGFydGlhbCBjb25maWd1cmF0aW9u
JykKLQotICAgICAgICByZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxm
LlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGljdCgKLSAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb249anNvbi5kdW1wcyhDb25maWd1cmF0aW9uQ29udGV4dFRlc3QuQ09ORklHVVJB
VElPTlNbMF0sIGNscz1Db25maWd1cmF0aW9uLkVuY29kZXIpLAotICAgICAgICAgICAgc3VpdGU9
J2xheW91dC10ZXN0cycsCi0gICAgICAgICksIHVwbG9hZF9jb250ZW50KQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCA0MDApCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlvbiddLCAnTm8gY29tbWl0cyBwcm92
aWRlZCcpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnVwbG9hZF9maWxlKGNsaWVudCwgZid7
c2VsZi5VUkx9L3tzZWxmLkFSQ0hJVkVfQVBJX0VORFBPSU5UfScsIGRpY3QoCi0gICAgICAgICAg
ICBjb25maWd1cmF0aW9uPSdJbnZhbGlkIG1ldGEtZGF0YScsCi0gICAgICAgICAgICBzdWl0ZT0n
bGF5b3V0LXRlc3RzJywKLSAgICAgICAgICAgIGNvbW1pdHM9anNvbi5kdW1wcyhbTW9ja1N0YXNo
UmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKCdiYjZiZGE1ZicpLCBNb2NrU1ZOUmVw
b3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MildLCBjbHM9Q29tbWl0LkVuY29k
ZXIpLAotICAgICAgICApLCB1cGxvYWRfY29udGVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXNwb25zZS5zdGF0dXNfY29kZSwgNDAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLmpzb24oKVsnZGVzY3JpcHRpb24nXSwgJ0ludmFsaWQgY29uZmlndXJhdGlvbiwgZXJy
b3I6IEV4cGVjdGluZyB2YWx1ZTogbGluZSAxIGNvbHVtbiAxIChjaGFyIDApJykKLQotICAgICAg
ICByZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYu
QVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGljdCgKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249
anNvbi5kdW1wcyhDb25maWd1cmF0aW9uQ29udGV4dFRlc3QuQ09ORklHVVJBVElPTlNbMF0sIGNs
cz1Db25maWd1cmF0aW9uLkVuY29kZXIpLAotICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0
cycsCi0gICAgICAgICAgICBjb21taXRzPSdJbnZhbGlkIG1ldGEtZGF0YScsCi0gICAgICAgICks
IHVwbG9hZF9jb250ZW50KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1
c19jb2RlLCA0MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydk
ZXNjcmlwdGlvbiddLCAnRXhwZWN0ZWQgY29tbWl0IG1ldGEtZGF0YSB0byBiZSBqc29uJykKKyAg
ICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5Lndl
YmtpdCgpOgorICAgICAgICAgICAgdXBsb2FkX2NvbnRlbnQgPSBiYXNlNjQuYjY0ZGVjb2RlKE1v
Y2tNb2RlbEZhY3RvcnkuQVJDSElWRV9aSVApCisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYu
dXBsb2FkX2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9J
TlR9JywgZGljdCgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29u
ZmlndXJhdGlvbkNvbnRleHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlv
bi5FbmNvZGVyKSwKKyAgICAgICAgICAgICAgICBjb21taXRzPWpzb24uZHVtcHMoWworICAgICAg
ICAgICAgICAgICAgICBkaWN0KHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGlkPSdkOGJjZTI2ZmE2
NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4MmZjJyksCisgICAgICAgICAgICAgICAgICAgIGRp
Y3QocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgaWQ9JzYnKV0pLAorICAgICAgICAgICAgKSwgdXBs
b2FkX2NvbnRlbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1
c19jb2RlLCA0MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmpzb24o
KVsnZGVzY3JpcHRpb24nXSwgJ05vIHRlc3Qgc3VpdGUgc3BlY2lmaWVkJykKKworICAgICAgICAg
ICAgcmVzcG9uc2UgPSBzZWxmLnVwbG9hZF9maWxlKGNsaWVudCwgZid7c2VsZi5VUkx9L3tzZWxm
LkFSQ0hJVkVfQVBJX0VORFBPSU5UfScsIGRpY3QoCisgICAgICAgICAgICAgICAgc3VpdGU9J2xh
eW91dC10ZXN0cycsCisgICAgICAgICAgICAgICAgY29tbWl0cz1qc29uLmR1bXBzKFsKKyAgICAg
ICAgICAgICAgICAgICAgZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0nZDhiY2UyNmZh
NjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycpLAorICAgICAgICAgICAgICAgICAgICBk
aWN0KHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGlkPSc2JyldKSwKKyAgICAgICAgICAgICksIHVw
bG9hZF9jb250ZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0
dXNfY29kZSwgNDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29u
KClbJ2Rlc2NyaXB0aW9uJ10sICdDYW5ub3QgcmVnaXN0ZXIgYSBwYXJ0aWFsIGNvbmZpZ3VyYXRp
b24nKQorCisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYudXBsb2FkX2ZpbGUoY2xpZW50LCBm
J3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9JywgZGljdCgKKyAgICAgICAg
ICAgICAgICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29uZmlndXJhdGlvbkNvbnRleHRUZXN0
LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlvbi5FbmNvZGVyKSwKKyAgICAgICAg
ICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKKyAgICAgICAgICAgICksIHVwbG9hZF9jb250
ZW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwg
NDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5qc29uKClbJ2Rlc2Ny
aXB0aW9uJ10sICdObyBjb21taXRzIHByb3ZpZGVkJykKKworICAgICAgICAgICAgcmVzcG9uc2Ug
PSBzZWxmLnVwbG9hZF9maWxlKGNsaWVudCwgZid7c2VsZi5VUkx9L3tzZWxmLkFSQ0hJVkVfQVBJ
X0VORFBPSU5UfScsIGRpY3QoCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj0nSW52YWxp
ZCBtZXRhLWRhdGEnLAorICAgICAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAorICAg
ICAgICAgICAgICAgIGNvbW1pdHM9anNvbi5kdW1wcyhbCisgICAgICAgICAgICAgICAgICAgIGRp
Y3QocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgaWQ9J2Q4YmNlMjZmYTY1YzZmYzhmMzljMTc5Mjdh
YmI3N2Y2OWZhYjgyZmMnKSwKKyAgICAgICAgICAgICAgICAgICAgZGljdChyZXBvc2l0b3J5X2lk
PSd3ZWJraXQnLCBpZD0nNicpXSksCisgICAgICAgICAgICApLCB1cGxvYWRfY29udGVudCkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDQwMCkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydkZXNjcmlwdGlvbidd
LCAnSW52YWxpZCBjb25maWd1cmF0aW9uLCBlcnJvcjogRXhwZWN0aW5nIHZhbHVlOiBsaW5lIDEg
Y29sdW1uIDEgKGNoYXIgMCknKQorCisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYudXBsb2Fk
X2ZpbGUoY2xpZW50LCBmJ3tzZWxmLlVSTH0ve3NlbGYuQVJDSElWRV9BUElfRU5EUE9JTlR9Jywg
ZGljdCgKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWpzb24uZHVtcHMoQ29uZmlndXJh
dGlvbkNvbnRleHRUZXN0LkNPTkZJR1VSQVRJT05TWzBdLCBjbHM9Q29uZmlndXJhdGlvbi5FbmNv
ZGVyKSwKKyAgICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKKyAgICAgICAgICAg
ICAgICBjb21taXRzPSdJbnZhbGlkIG1ldGEtZGF0YScsCisgICAgICAgICAgICApLCB1cGxvYWRf
Y29udGVudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUsIDQwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWydk
ZXNjcmlwdGlvbiddLCAnRXhwZWN0ZWQgY29tbWl0IG1ldGEtZGF0YSB0byBiZSBqc29uJykKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRy
b2xsZXIvY2lfY29udHJvbGxlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NpX2NvbnRy
b2xsZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3NDA3OSkKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY2lfY29udHJvbGxlcl91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIENJQ29udHJvbGxlclRlc3QoRmxh
c2tUZXN0Q2FzZSwgV2EKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXR1cF93ZWJzZXJ2
ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4
dCk6Ci0gICAgICAgIHdpdGggVVJMRmFjdG9yeVRlc3QubW9jaygpOgorICAgICAgICB3aXRoIFVS
TEZhY3RvcnlUZXN0Lm1vY2soKSwgTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVs
RmFjdG9yeS53ZWJraXQoKToKICAgICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtl
eXNwYWNlPWNscy5LRVlTUEFDRSkKICAgICAgICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9y
eS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMu
S0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKICAgICAgICAgICAgIG1vZGVsLmNpX2Nv
bnRleHQuYWRkX3VybF9mYWN0b3J5KEJ1aWxkYm90VVJMRmFjdG9yeShtYXN0ZXI9J2J1aWxkLndl
YmtpdC5vcmcnLCByZWRpcz1tb2RlbC5yZWRpcykpCkBAIC0xMDgsOSArMTA4LDggQEAgY2xhc3Mg
Q0lDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlLCBXYQogICAgIEBXYWl0Rm9yRG9ja2VyVGVz
dENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tf
Y2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93
aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3Rfc2luZ2xlX3F1ZXVlX2xpc3Qoc2VsZiwgY2xp
ZW50LCAqKmt3YXJncyk6Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCAr
ICcvYXBpL3VybHM/dmVyc2lvbl9uYW1lPUNhdGFsaW5hJmZsYXZvcj13azImaWQ9MjM2NTQyJykK
KyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvdXJscz92ZXJz
aW9uX25hbWU9Q2F0YWxpbmEmZmxhdm9yPXdrMiZpZD0xYWJlMjViNDQzZTknKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHByaW50
KHJlc3BvbnNlLmpzb24oKVswXVsndXJscyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLmpzb24oKVswXVsndXJscyddWzBdWydidWlsZCddLCAnaHR0cHM6Ly9idWlsZC53ZWJr
aXQub3JnLyMvYnVpbGRlcnMvNS9idWlsZHMvMycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzcG9uc2UuanNvbigpWzBdWyd1cmxzJ11bMF1bJ3F1ZXVlJ10sICdodHRwczovL2J1aWxkLndl
YmtpdC5vcmcvIy9idWlsZGVycy81JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZS5qc29uKClbMF1bJ3VybHMnXVswXVsnd29ya2VyJ10sICdodHRwczovL2J1aWxkLndlYmtpdC5v
cmcvIy93b3JrZXJzLzQnKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlci5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250
cm9sbGVyL2NvbW1pdF9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAyNzQwNzkpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL2NvbW1p
dF9jb250cm9sbGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw5ICsyNCw5IEBAIGltcG9ydCBq
c29uCiAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiBmcm9tIGZsYXNrIGlt
cG9ydCBhYm9ydCwganNvbmlmeSwgcmVxdWVzdAotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5yZXBv
c2l0b3J5IGltcG9ydCBTQ01FeGNlcHRpb24KIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5j
b21taXQgaW1wb3J0IENvbW1pdAogZnJvbSB3ZWJraXRmbGFza3B5LnV0aWwgaW1wb3J0IEFzc2Vy
dFJlcXVlc3QsIHF1ZXJ5X2FzX2t3YXJncywgbGltaXRfZm9yX3F1ZXJ5Citmcm9tIHdlYmtpdHNj
bXB5IGltcG9ydCBTY21CYXNlCiAKIAogZGVmIF9maW5kX2NvbXBhcmlzb24oY29tbWl0X2NvbnRl
eHQsIHJlcG9zaXRvcnlfaWQsIGJyYW5jaCwgaWQsIHV1aWQsIHRpbWVzdGFtcCwgcHJpb3JpdHk9
bWluKToKQEAgLTI5OSw3ICsyOTksNyBAQCBjbGFzcyBDb21taXRDb250cm9sbGVyKEhhc0NvbW1p
dENvbnRleHQpCiAgICAgICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5nZXQoJ2JyYW5jaCcpLAog
ICAgICAgICAgICAgICAgIGNvbW1pdF9pZD1jb21taXQuZ2V0KCdpZCcpLAogICAgICAgICAgICAg
KQotICAgICAgICBleGNlcHQgKFJ1bnRpbWVFcnJvciwgU0NNRXhjZXB0aW9uKSBhcyBlcnJvcjoK
KyAgICAgICAgZXhjZXB0IChSdW50aW1lRXJyb3IsIFNjbUJhc2UuRXhjZXB0aW9uKSBhcyBlcnJv
cjoKICAgICAgICAgICAgIGFib3J0KDQwNCwgZGVzY3JpcHRpb249c3RyKGVycm9yKSkKIAogICAg
ICAgICBpZiBpc19lbmRwb2ludDoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvY29tbWl0X2NvbnRyb2xsZXJfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlcl91bml0dGVzdC5weQkocmV2aXNp
b24gMjc0MDc5KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvY29udHJvbGxlci9jb21taXRfY29udHJvbGxlcl91bml0dGVzdC5weQkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw5
ICsyNywxMSBAQCBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9yCiBmcm9t
IHJlc3VsdHNkYnB5LmZsYXNrX3N1cHBvcnQuZmxhc2tfdGVzdGNhc2UgaW1wb3J0IEZsYXNrVGVz
dENhc2UKIGZyb20gcmVzdWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENh
c3NhbmRyYUNvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29u
dGV4dCBpbXBvcnQgTW9ja0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwu
bW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZOUmVwb3Np
dG9yeQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1v
Y2tNb2RlbEZhY3RvcnkKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9kZWwgaW1wb3J0IE1vZGVs
CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0
IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5yZXBvc2l0b3J5
IGltcG9ydCBTdGFzaFJlcG9zaXRvcnksIFdlYktpdFJlcG9zaXRvcnkKK2Zyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCiAKIAogY2xhc3MgQ29tbWl0Q29udHJvbGxlclRlc3Qo
Rmxhc2tUZXN0Q2FzZSwgV2FpdEZvckRvY2tlclRlc3RDYXNlKToKQEAgLTM3LDIwICszOSwyNSBA
QCBjbGFzcyBDb21taXRDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlCiAKICAgICBAY2xhc3Nt
ZXRob2QKICAgICBkZWYgc2V0dXBfd2Vic2VydmVyKGNscywgYXBwLCByZWRpcz1TdHJpY3RSZWRp
cywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICByZWRpc19pbnN0YW5jZSA9
IHJlZGlzKCkKLSAgICAgICAgc2FmYXJpID0gTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkocmVk
aXNfaW5zdGFuY2UpCi0gICAgICAgIHdlYmtpdCA9IE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdChy
ZWRpc19pbnN0YW5jZSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBN
b2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgcmVkaXNfaW5zdGFuY2UgPSBy
ZWRpcygpCisgICAgICAgICAgICBzYWZhcmkgPSBTdGFzaFJlcG9zaXRvcnkoJ2h0dHBzOi8vYml0
YnVja2V0LmV4YW1wbGUuY29tL3Byb2plY3RzL1NBRkFSSS9yZXBvcy9zYWZhcmknKQorICAgICAg
ICAgICAgd2Via2l0ID0gV2ViS2l0UmVwb3NpdG9yeSgpCiAKLSAgICAgICAgY2Fzc2FuZHJhLmRy
b3Bfa2V5c3BhY2Uoa2V5c3BhY2U9Y2xzLktFWVNQQUNFKQotICAgICAgICBjYXNzYW5kcmFfaW5z
dGFuY2UgPSBjYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9
VHJ1ZSkKKyAgICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5L
RVlTUEFDRSkKKyAgICAgICAgICAgIGNhc3NhbmRyYV9pbnN0YW5jZSA9IGNhc3NhbmRyYShrZXlz
cGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKQogCi0gICAgICAgIGFwcC5y
ZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVzKE1vZGVsKHJlZGlzPXJlZGlzX2luc3RhbmNlLCBj
YXNzYW5kcmE9Y2Fzc2FuZHJhX2luc3RhbmNlLCByZXBvc2l0b3JpZXM9W3NhZmFyaSwgd2Via2l0
XSkpKQorICAgICAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChBUElSb3V0ZXMoTW9kZWwo
cmVkaXM9cmVkaXNfaW5zdGFuY2UsIGNhc3NhbmRyYT1jYXNzYW5kcmFfaW5zdGFuY2UsIHJlcG9z
aXRvcmllcz1bc2FmYXJpLCB3ZWJraXRdKSkpCiAKICAgICBkZWYgcmVnaXN0ZXJfYWxsX2NvbW1p
dHMoc2VsZiwgY2xpZW50KToKLSAgICAgICAgZm9yIG1vY2tfcmVwb3NpdG9yeSBpbiBbTW9ja1N0
YXNoUmVwb3NpdG9yeS5zYWZhcmkoKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCldOgotICAg
ICAgICAgICAgZm9yIGNvbW1pdF9saXN0IGluIG1vY2tfcmVwb3NpdG9yeS5jb21taXRzLnZhbHVl
cygpOgotICAgICAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0X2xpc3Q6Ci0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCBjbGllbnQucG9zdChzZWxmLlVSTCAr
ICcvYXBpL2NvbW1pdHMvcmVnaXN0ZXInLCBkYXRhPUNvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChj
b21taXQpKS5zdGF0dXNfY29kZSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFy
aSgpIGFzIHNhZmFyaSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKSBhcyB3ZWJraXQ6CisgICAg
ICAgICAgICBmb3IgbmFtZSwgbW9ja19yZXBvc2l0b3J5IGluIGRpY3Qoc2FmYXJpPXNhZmFyaSwg
d2Via2l0PXdlYmtpdCkuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBmb3IgY29tbWl0X2xpc3Qg
aW4gbW9ja19yZXBvc2l0b3J5LmNvbW1pdHMudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgICAg
IGZvciBjb21taXQgaW4gY29tbWl0X2xpc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDIwMCwgY2xpZW50LnBvc3QoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3JlZ2lzdGVyJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhPWRpY3QoaWQ9Y29tbWl0Lmhhc2ggb3IgY29tbWl0LnJldmlzaW9uLCBy
ZXBvc2l0b3J5X2lkPW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICApLnN0YXR1c19jb2Rl
KQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3Jl
ZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQp
CiAgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKQEAgLTY4LDE1ICs3NSwx
NyBAQCBjbGFzcyBDb21taXRDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlCiAgICAgICAgIHNl
bGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQogICAgICAgICByZXNwb25zZSA9IGNsaWVu
dC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL2JyYW5jaGVzJykKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGRpY3Qod2Via2l0PVsnc2FmYXJpLTYwNi1icmFuY2gnLCAndHJ1bmsnXSwgc2FmYXJp
PVsnbWFzdGVyJywgJ3NhZmFyaS02MDYtYnJhbmNoJ10pLCByZXNwb25zZS5qc29uKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdCgKKyAgICAgICAgICAgIHdlYmtpdD1bJ2JyYW5jaC1h
JywgJ2JyYW5jaC1iJywgJ3RhZ3MvdGFnLTEnLCAndGFncy90YWctMicsICd0cnVuayddLAorICAg
ICAgICAgICAgc2FmYXJpPVsnYnJhbmNoLWEnLCAnYnJhbmNoLWInLCAnbWFpbiddKSwgcmVzcG9u
c2UuanNvbigpKQogCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcv
YXBpL2NvbW1pdHMvYnJhbmNoZXM/YnJhbmNoPXNhZmFyaScpCisgICAgICAgIHJlc3BvbnNlID0g
Y2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvYnJhbmNoZXM/YnJhbmNoPWJyYW5j
aCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KHdlYmtpdD1bJ3NhZmFyaS02MDYtYnJhbmNo
J10sIHNhZmFyaT1bJ3NhZmFyaS02MDYtYnJhbmNoJ10pLCByZXNwb25zZS5qc29uKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdCh3ZWJraXQ9WydicmFuY2gtYScsICdicmFuY2gtYidd
LCBzYWZhcmk9WydicmFuY2gtYScsICdicmFuY2gtYiddKSwgcmVzcG9uc2UuanNvbigpKQogCiAg
ICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvYnJh
bmNoZXM/cmVwb3NpdG9yeV9pZD1zYWZhcmknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdChz
YWZhcmk9WydtYXN0ZXInLCAnc2FmYXJpLTYwNi1icmFuY2gnXSksIHJlc3BvbnNlLmpzb24oKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KHNhZmFyaT1bJ2JyYW5jaC1hJywgJ2JyYW5j
aC1iJywgJ21haW4nXSksIHJlc3BvbnNlLmpzb24oKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVz
dENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tf
Y2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93
aXRoX3dlYnNlcnZlcigpCkBAIC04Niw1NCArOTUsNTIgQEAgY2xhc3MgQ29tbWl0Q29udHJvbGxl
clRlc3QoRmxhc2tUZXN0Q2FzZQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lm
X25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9j
a0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVy
KCkKLSAgICBkZWYgdGVzdF9yZWdpc3Rlcl92aWFfcG9zdChzZWxmLCBjbGllbnQsICoqa3dhcmdz
KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsg
Jy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0nYmI2
YmRhNWY0NGRkMicpKS5zdGF0dXNfY29kZSkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0
KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9yZXBvc2l0b3J5X2lkPXNhZmFyaScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNv
bigpWzBdKSwKLSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0
X2Zvcl9pZCgnYmI2YmRhNWY0NGRkMicpLAotICAgICAgICApCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9
ZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0nMjM2NTQ0JykpLnN0YXR1c19jb2RlKQot
ICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3Jl
cG9zaXRvcnlfaWQ9d2Via2l0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3Bv
bnNlLnN0YXR1c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
Q29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLAotICAgICAgICAgICAgTW9ja1NW
TlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgnMjM2NTQ0JyksCi0gICAgICAgICkK
LQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRp
cz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQot
ICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3RfcmVn
aXN0ZXJfd2l0aF9wYXJ0aWFsX2NvbW1pdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvY29t
bWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBpZD0nYmI2YmRhNWY0NGRk
MicpKS5zdGF0dXNfY29kZSkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJM
ICsgJy9hcGkvY29tbWl0cz9yZXBvc2l0b3J5X2lkPXNhZmFyaScpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKLSAgICAgICAgICAgIENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKSwK
LSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgn
YmI2YmRhNWY0NGRkMicpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDA0
LCBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMnLCBkYXRhPWRpY3QocmVwb3Np
dG9yeV9pZD0nc2FmYXJpJywgaWQ9J2FhYWFhYWFhYWFhYWEnKSkuc3RhdHVzX2NvZGUpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkv
Y29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBpZD0nMjM2NTQ0Jykp
LnN0YXR1c19jb2RlKQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAn
L2FwaS9jb21taXRzP3JlcG9zaXRvcnlfaWQ9d2Via2l0JykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICAgICAgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLAotICAg
ICAgICAgICAgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgnMjM2NTQ0
JyksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MDQsIGNsaWVudC5wb3N0
KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJr
aXQnLCBpZD0nMCcpKS5zdGF0dXNfY29kZSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5
LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpLCBPdXRwdXRDYXB0dXJlKCk6Cisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAn
L2FwaS9jb21taXRzJywgZGF0YT1kaWN0KHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGlkPSdkOGJj
ZTI2ZmE2NWMnKSkuc3RhdHVzX2NvZGUpCisgICAgICAgICAgICByZXNwb25zZSA9IGNsaWVudC5n
ZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3JlcG9zaXRvcnlfaWQ9c2FmYXJpJykKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgQ29tbWl0LmZyb21fanNv
bihyZXNwb25zZS5qc29uKClbMF0pLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgJ1BhdGNoIFNl
cmllc1xuJywKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDA0
LCBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMnLCBkYXRhPWRpY3QocmVwb3Np
dG9yeV9pZD0nc2FmYXJpJywgaWQ9J2FhYWFhYWFhYWFhYWEnKSkuc3RhdHVzX2NvZGUpCisKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCBjbGllbnQucG9zdChzZWxmLlVSTCArICcv
YXBpL2NvbW1pdHMnLCBkYXRhPWRpY3QocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgaWQ9JzYnKSku
c3RhdHVzX2NvZGUpCisgICAgICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwg
KyAnL2FwaS9jb21taXRzP3JlcG9zaXRvcnlfaWQ9d2Via2l0JykKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5q
c29uKClbMF0pLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgJzZ0aCBjb21taXQnLAorICAgICAg
ICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MDQsIGNsaWVudC5wb3N0KHNl
bGYuVVJMICsgJy9hcGkvY29tbWl0cycsIGRhdGE9ZGljdChyZXBvc2l0b3J5X2lkPSd3ZWJraXQn
LCBpZD0nMTIzNCcpKS5zdGF0dXNfY29kZSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2Fu
ZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dl
YnNlcnZlcigpCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXJfd2l0aF9mdWxsX2NvbW1pdChzZWxmLCBj
bGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgZ2l0X2NvbW1pdCA9IE1vY2tTdGFzaFJlcG9zaXRv
cnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRhNWY0NGRkMicpCisgICAgICAgIGdpdF9j
b21taXQgPSBDb21taXQoCisgICAgICAgICAgICByZXBvc2l0b3J5X2lkPSdzYWZhcmknLAorICAg
ICAgICAgICAgYnJhbmNoPSdtYWluJywKKyAgICAgICAgICAgIGlkPSc4ZWJhMjgwZTMyZGFhZjVm
ZGRiYmI2NWFlYTM3OTMyZWE5YWQ4NWRmJywKKyAgICAgICAgICAgIHRpbWVzdGFtcD0xNjAxNjUw
MTAwLAorICAgICAgICAgICAgb3JkZXI9MCwKKyAgICAgICAgICAgIGNvbW1pdHRlcj0namJlZGFy
ZEB3ZWJraXQub3JnJywKKyAgICAgICAgICAgIG1lc3NhZ2U9J2N1c3RvbSBjb21taXQnLAorICAg
ICAgICApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCBjbGllbnQucG9zdChzZWxmLlVS
TCArICcvYXBpL2NvbW1pdHMnLCBkYXRhPUNvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChnaXRfY29t
bWl0KSkuc3RhdHVzX2NvZGUpCiAgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVS
TCArICcvYXBpL2NvbW1pdHM/cmVwb3NpdG9yeV9pZD1zYWZhcmknKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLCBnaXRfY29tbWl0KQog
Ci0gICAgICAgIHN2bl9jb21taXQgPSBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRf
Zm9yX2lkKCcyMzY1NDQnKQorICAgICAgICBzdm5fY29tbWl0ID0gQ29tbWl0KAorICAgICAgICAg
ICAgcmVwb3NpdG9yeV9pZD0nd2Via2l0JywKKyAgICAgICAgICAgIGJyYW5jaD0ndHJ1bmsnLAor
ICAgICAgICAgICAgaWQ9JzEyMzQnLAorICAgICAgICAgICAgdGltZXN0YW1wPTE2MDE2NTAxMDAs
CisgICAgICAgICAgICBvcmRlcj0wLAorICAgICAgICAgICAgY29tbWl0dGVyPSdqYmVkYXJkQHdl
YmtpdC5vcmcnLAorICAgICAgICAgICAgbWVzc2FnZT0nY3VzdG9tIGNvbW1pdCcsCisgICAgICAg
ICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5wb3N0KHNlbGYuVVJMICsg
Jy9hcGkvY29tbWl0cycsIGRhdGE9Q29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KHN2bl9jb21taXQp
KS5zdGF0dXNfY29kZSkKICAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsg
Jy9hcGkvY29tbWl0cz9yZXBvc2l0b3J5X2lkPXdlYmtpdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKQEAgLTE1MCwxMjYgKzE1NywxMjggQEAg
Y2xhc3MgQ29tbWl0Q29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZQogICAgIEBGbGFza1Rlc3RD
YXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3RfZmluZF9pZChzZWxmLCBjbGll
bnQsICoqa3dhcmdzKToKICAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0cyhjbGllbnQp
Ci0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/
aWQ9MzM2NjEwYTgnKQorICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAn
L2FwaS9jb21taXRzP2lkPWQ4YmNlMjZmYTY1YycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBs
ZW4ocmVzcG9uc2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuZnJv
bV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSksIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCku
Y29tbWl0X2Zvcl9pZChpZD0nMzM2NjEwYTgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChD
b21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSkuaGFzaCwgJ2Q4YmNlMjZmYTY1YzZm
YzhmMzljMTc5MjdhYmI3N2Y2OWZhYjgyZmMnKQogCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50
LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/aWQ9MjM2NTQwJykKKyAgICAgICAgcmVzcG9u
c2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9pZD02JykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKSwgTW9ja1NWTlJlcG9z
aXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDApKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKS5yZXZpc2lvbiwg
NikKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19y
ZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0
KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3Rf
ZmluZF90aW1lc3RhbXAoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYucmVn
aXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQo
c2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3RpbWVzdGFtcD0xNTM3NTUwNjg1JykKKyAgICAgICAg
cmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz90aW1lc3RhbXA9
MTYwMTY2ODAwMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0
dXNfY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVzcG9uc2UuanNvbigp
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbQ29tbWl0LmZyb21fanNvbihlbGVtZW50KSBm
b3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldLCBbCi0gICAgICAgICAgICBNb2NrU3Rhc2hS
ZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9J2U2NDgxMGE0JyksCi0gICAgICAg
ICAgICBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1pdF9mb3JfaWQoaWQ9JzdiZTQw
ODQyJyksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0NvbW1pdC5mcm9tX2pzb24oZWxlbWVu
dCkuaGFzaCBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldLCBbCisgICAgICAgICAgICAn
YmFlNWQxZTkwOTk5ZDRmOTE2YThhMTU4MTBjY2ZhNDNmMzdhMmZkNicsCisgICAgICAgICAgICAn
ZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycsCiAgICAgICAgIF0pCiAK
LSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz90
aW1lc3RhbXA9MTUzODA0MTc5MS44JykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNl
bGYuVVJMICsgJy9hcGkvY29tbWl0cz90aW1lc3RhbXA9MTYwMTYzOTkwMCcpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29kZSkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgxLCBsZW4ocmVzcG9uc2UuanNvbigpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSksIE1vY2tTVk5SZXBvc2l0
b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQxKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChDb21taXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSkucmV2aXNpb24sIDYp
CiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVk
aXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkK
ICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X2Zp
bmRfdXVpZChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKICAgICAgICAgc2VsZi5yZWdpc3Rlcl9h
bGxfY29tbWl0cyhjbGllbnQpCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVS
TCArICcvYXBpL2NvbW1pdHM/dXVpZD0xNTM3NTUwNjg1MDEnKQorICAgICAgICByZXNwb25zZSA9
IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzP3V1aWQ9MTYwMTY2ODAwMDAxJykK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigpWzBdKSwgTW9j
a1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSc3YmU0MDg0MicpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigp
WzBdKS5oYXNoLCAnZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycpCiAK
LSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz91
dWlkPTE1MzgwNDE3OTIwMCcpCisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVS
TCArICcvYXBpL2NvbW1pdHM/dXVpZD0xNjAxNjM5OTAwMDAnKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29t
bWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJr
aXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Q29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLnJldmlzaW9uLCA2KQogCiAgICAg
QFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VT
dHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZs
YXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKICAgICBkZWYgdGVzdF9maW5kX3Jhbmdl
X2lkKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9j
b21taXRzKGNsaWVudCkKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsg
Jy9hcGkvY29tbWl0cz9hZnRlcl9pZD0zMzY2MTBhOCZiZWZvcmVfaWQ9MjM2NTQwJykKKyAgICAg
ICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9hZnRlcl9p
ZD02JmJlZm9yZV9pZD1mZmY4M2JiMmQ5MTcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIw
MCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0NvbW1p
dC5mcm9tX2pzb24oZWxlbWVudCkgZm9yIGVsZW1lbnQgaW4gcmVzcG9uc2UuanNvbigpXSwgWwot
ICAgICAgICAgICAgTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlk
PSczMzY2MTBhOCcpLAotICAgICAgICAgICAgTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5j
b21taXRfZm9yX2lkKGlkPSdiYjZiZGE1ZicpLAotICAgICAgICAgICAgTW9ja1NWTlJlcG9zaXRv
cnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDApLAorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFtDb21taXQuZnJvbV9qc29uKGVsZW1lbnQpLmlkIGZvciBlbGVtZW50IGluIHJlc3Bv
bnNlLmpzb24oKV0sIFsKKyAgICAgICAgICAgICc2JywgJzliODMxMWYyNWE3N2JhMTQ5MjNkOWQ1
YTY1MzIxMDNmNTRhYmVmY2InLCAnZmZmODNiYjJkOTE3MWI0ZDkxOTZlOTc3ZWIwNTA4ZmQ1N2U3
YTA4ZCcsCiAgICAgICAgIF0pCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZf
bm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2Nr
Q2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIo
KQogICAgIGRlZiB0ZXN0X2ZpbmRfcmFuZ2VfdGltZXN0YW1wKHNlbGYsIGNsaWVudCwgKiprd2Fy
Z3MpOgogICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkKLSAgICAgICAg
cmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9hZnRlcl90aW1l
c3RhbXA9MTUzODA0MTc5Mi4zJmJlZm9yZV90aW1lc3RhbXA9MTUzODA0OTEwOCcpCisgICAgICAg
IHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHM/YWZ0ZXJfdGlt
ZXN0YW1wPTE2MDE2Mzc5MDAmYmVmb3JlX3RpbWVzdGFtcD0xNjAxNjM5OTAwJykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW0NvbW1pdC5mcm9tX2pzb24oZWxlbWVudCkgZm9y
IGVsZW1lbnQgaW4gcmVzcG9uc2UuanNvbigpXSwKLSAgICAgICAgICAgIFtNb2NrU1ZOUmVwb3Np
dG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MSksIE1vY2tTVk5SZXBvc2l0b3J5
LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQyKV0sCisgICAgICAgICAgICBbQ29tbWl0
LmZyb21fanNvbihlbGVtZW50KS5yZXZpc2lvbiBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29u
KCldLAorICAgICAgICAgICAgWzQsIDZdLAogICAgICAgICApCiAKICAgICBAV2FpdEZvckRvY2tl
clRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBt
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5y
dW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X2ZpbmRfcmFuZ2VfdXVpZChzZWxmLCBj
bGllbnQsICoqa3dhcmdzKToKICAgICAgICAgc2VsZi5yZWdpc3Rlcl9hbGxfY29tbWl0cyhjbGll
bnQpCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1p
dHM/YWZ0ZXJfdXVpZD0xNTM3NTUwNjg1MDEmYmVmb3JlX3V1aWQ9MTUzNzU2NjM4NjAyJykKKyAg
ICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cz9hZnRl
cl91dWlkPTE2MDE2NjgwMDAwMCZiZWZvcmVfdXVpZD0xNjAxNjY4MDAwMDEnKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBbQ29tbWl0LmZyb21fanNvbihlbGVtZW50KSBmb3Ig
ZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldLAotICAgICAgICAgICAgW01vY2tTdGFzaFJlcG9z
aXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nN2JlNDA4NDInKSwgTW9ja1N0YXNoUmVw
b3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhNCcpXSwKKyAgICAgICAg
ICAgIFtDb21taXQuZnJvbV9qc29uKGVsZW1lbnQpLmhhc2ggZm9yIGVsZW1lbnQgaW4gcmVzcG9u
c2UuanNvbigpXSwgWworICAgICAgICAgICAgICAgICdiYWU1ZDFlOTA5OTlkNGY5MTZhOGExNTgx
MGNjZmE0M2YzN2EyZmQ2JywKKyAgICAgICAgICAgICAgICAnZDhiY2UyNmZhNjVjNmZjOGYzOWMx
NzkyN2FiYjc3ZjY5ZmFiODJmYycsCisgICAgICAgICAgICBdLAogICAgICAgICApCiAKICAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxh
c2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X25leHQoc2VsZiwg
Y2xpZW50LCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xp
ZW50KQotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21t
aXRzL25leHQ/aWQ9MzM2NjEwYTQnKQorICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2Vs
Zi5VUkwgKyAnL2FwaS9jb21taXRzL25leHQ/aWQ9YmFlNWQxZTkwOTk5JykKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nMzM2NjEw
YTgnKSwgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4MmZjJywg
Q29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29uKClbMF0pLmhhc2gpCiAKLSAgICAgICAgcmVz
cG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cy9uZXh0P2lkPTIzNjU0
MicpCisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1p
dHMvbmV4dD9pZD00JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3BvbnNlLnN0
YXR1c19jb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29u
KCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgp
LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQzKSwgQ29tbWl0LmZyb21fanNvbihyZXNwb25zZS5qc29u
KClbMF0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDYsIENvbW1pdC5mcm9tX2pzb24ocmVz
cG9uc2UuanNvbigpWzBdKS5yZXZpc2lvbikKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2Fu
ZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dl
YnNlcnZlcigpCiAgICAgZGVmIHRlc3RfcHJldmlvdXMoc2VsZiwgY2xpZW50LCAqKmt3YXJncyk6
CiAgICAgICAgIHNlbGYucmVnaXN0ZXJfYWxsX2NvbW1pdHMoY2xpZW50KQotICAgICAgICByZXNw
b25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3ByZXZpb3VzP2lkPTMz
NjYxMGE0JykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkv
Y29tbWl0cy9wcmV2aW91cz9pZD1kOGJjZTI2ZmE2NWMnKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9ja1N0
YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSc3YmU0MDg0MicpLCBDb21t
aXQuZnJvbV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2JhZTVkMWU5MDk5OWQ0ZjkxNmE4YTE1ODEwY2NmYTQzZjM3YTJmZDYnLCBDb21taXQuZnJv
bV9qc29uKHJlc3BvbnNlLmpzb24oKVswXSkuaGFzaCkKIAotICAgICAgICByZXNwb25zZSA9IGNs
aWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3ByZXZpb3VzP2lkPTIzNjU0MicpCisg
ICAgICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvcHJl
dmlvdXM/aWQ9NicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0
dXNfY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVzcG9uc2UuanNvbigp
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5j
b21taXRfZm9yX2lkKGlkPTIzNjU0MSksIENvbW1pdC5mcm9tX2pzb24ocmVzcG9uc2UuanNvbigp
WzBdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBDb21taXQuZnJvbV9qc29uKHJlc3Bv
bnNlLmpzb24oKVswXSkucmV2aXNpb24pCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJz
ZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X3NpYmxpbmdzKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgog
ICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkKIAotICAgICAgICByZXNw
b25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRzL3NpYmxpbmdzP3JlcG9z
aXRvcnlfaWQ9d2Via2l0JmlkPTIzNjU0MicpCisgICAgICAgIHJlc3BvbnNlID0gY2xpZW50Lmdl
dChzZWxmLlVSTCArICcvYXBpL2NvbW1pdHMvc2libGluZ3M/cmVwb3NpdG9yeV9pZD13ZWJraXQm
aWQ9NicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwb25zZS5zdGF0dXNfY29k
ZSkKLSAgICAgICAgY29tbWl0cyA9IHtrZXk6IFtDb21taXQuZnJvbV9qc29uKGVsZW1lbnQpIGZv
ciBlbGVtZW50IGluIHZhbHVlc10gZm9yIGtleSwgdmFsdWVzIGluIHJlc3BvbnNlLmpzb24oKS5p
dGVtcygpfQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdHMsIHsnc2FmYXJpJzogW01v
Y2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWY0NGRk
MjQnKV19KQorICAgICAgICBjb21taXRzID0ge2tleTogW0NvbW1pdC5mcm9tX2pzb24oZWxlbWVu
dCkuaGFzaCBmb3IgZWxlbWVudCBpbiB2YWx1ZXNdIGZvciBrZXksIHZhbHVlcyBpbiByZXNwb25z
ZS5qc29uKCkuaXRlbXMoKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IGNvbW1pdHMsIGRpY3Qoc2FmYXJpPVsKKyAgICAgICAgICAgICAgICAnZDhiY2UyNmZhNjVjNmZj
OGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycsCisgICAgICAgICAgICAgICAgJ2JhZTVkMWU5MDk5
OWQ0ZjkxNmE4YTE1ODEwY2NmYTQzZjM3YTJmZDYnLAorICAgICAgICAgICAgICAgICcxYWJlMjVi
NDQzZTk4NWY5M2I5MGQ4MzBlNGE3ZTM3MzEzMzZhZjRkJywKKyAgICAgICAgICAgICAgICAnZmZm
ODNiYjJkOTE3MWI0ZDkxOTZlOTc3ZWIwNTA4ZmQ1N2U3YTA4ZCcsCisgICAgICAgICAgICAgICAg
JzliODMxMWYyNWE3N2JhMTQ5MjNkOWQ1YTY1MzIxMDNmNTRhYmVmY2InLAorICAgICAgICAgICAg
XSksCisgICAgICAgICkKIAotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwg
KyAnL2FwaS9jb21taXRzL3NpYmxpbmdzP3JlcG9zaXRvcnlfaWQ9c2FmYXJpJmlkPWJiNmJkYTVm
NDRkZDI0JykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkv
Y29tbWl0cy9zaWJsaW5ncz9yZXBvc2l0b3J5X2lkPXNhZmFyaSZpZD1kOGJjZTI2ZmE2NWMnKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpCi0gICAg
ICAgIGNvbW1pdHMgPSB7a2V5OiBbQ29tbWl0LmZyb21fanNvbihlbGVtZW50KSBmb3IgZWxlbWVu
dCBpbiB2YWx1ZXNdIGZvciBrZXksIHZhbHVlcyBpbiByZXNwb25zZS5qc29uKCkuaXRlbXMoKX0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRzLCB7J3dlYmtpdCc6IFsKLSAgICAgICAg
ICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0KSwK
LSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9
MjM2NTQzKSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9m
b3JfaWQoaWQ9MjM2NTQyKSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgp
LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQxKSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5
LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQwKSwKLSAgICAgICAgXX0pCisgICAgICAg
IGNvbW1pdHMgPSB7a2V5OiBbQ29tbWl0LmZyb21fanNvbihlbGVtZW50KS5yZXZpc2lvbiBmb3Ig
ZWxlbWVudCBpbiB2YWx1ZXNdIGZvciBrZXksIHZhbHVlcyBpbiByZXNwb25zZS5qc29uKCkuaXRl
bXMoKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRzLCBkaWN0KHdlYmtpdD1bNl0p
KQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
Y29udHJvbGxlci9mYWlsdXJlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxl
ci9mYWlsdXJlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3NDA3OSkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIv
ZmFpbHVyZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw2IEBAIGZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC5mbGFza190ZXMKIGZyb20gcmVz
dWx0c2RicHkubW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQK
IGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9j
a0Nhc3NhbmRyYUNvbnRleHQKIGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19tb2RlbF9mYWN0
b3J5IGltcG9ydCBNb2NrTW9kZWxGYWN0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3Rf
Y29udGV4dCBpbXBvcnQgRXhwZWN0YXRpb25zCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRf
Zm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQogCiAKQEAg
LTM4LDI1ICszNywyNiBAQCBjbGFzcyBGYWlsdXJlQ29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2Fz
CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0dXBfd2Vic2VydmVyKGNscywgYXBwLCBy
ZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBj
YXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UpCi0gICAgICAgIG1v
ZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNh
c3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKLSAg
ICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChBUElSb3V0ZXMobW9kZWwpKQotCi0gICAgICAg
IE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhtb2RlbCwgdGVzdF9yZXN1bHRzPWRp
Y3QoCi0gICAgICAgICAgICBkZXRhaWxzPWRpY3QobGluaz0nZHVtbXktbGluaycpLAotICAgICAg
ICAgICAgcnVuX3N0YXRzPWRpY3QodGVzdHNfc2tpcHBlZD0wKSwKLSAgICAgICAgICAgIHJlc3Vs
dHM9ewotICAgICAgICAgICAgICAgICdmYXN0JzogewotICAgICAgICAgICAgICAgICAgICAnZW5j
b2RpbmcnOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWNhY2hlZC1ib20uaHRtbCc6
IGRpY3QoZXhwZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J0ZBSUwnLCB0aW1lPTEuMiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAnY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCc6IGRpY3QoZXhwZWN0
ZWQ9J0ZBSUwnLCBhY3R1YWw9J0ZBSUwnLCB0aW1lPTEuMiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAnY3NzLWNoYXJzZXQuaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J0ZBSUwnLCBhY3R1YWw9J1BB
U1MnLCB0aW1lPTEuMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWxpbmstY2hhcnNl
dC5odG1sJzogZGljdChleHBlY3RlZD0nUEFTUycsIGFjdHVhbD0nUEFTJywgdGltZT0xLjIpLAor
ICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnku
d2Via2l0KCk6CisgICAgICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1j
bHMuS0VZU1BBQ0UpCisgICAgICAgICAgICBtb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRl
KHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQQUNF
LCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkpCisgICAgICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXBy
aW50KEFQSVJvdXRlcyhtb2RlbCkpCisKKyAgICAgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRk
X21vY2tfcmVzdWx0cyhtb2RlbCwgdGVzdF9yZXN1bHRzPWRpY3QoCisgICAgICAgICAgICAgICAg
ZGV0YWlscz1kaWN0KGxpbms9J2R1bW15LWxpbmsnKSwKKyAgICAgICAgICAgICAgICBydW5fc3Rh
dHM9ZGljdCh0ZXN0c19za2lwcGVkPTApLAorICAgICAgICAgICAgICAgIHJlc3VsdHM9eworICAg
ICAgICAgICAgICAgICAgICAnZmFzdCc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdlbmNv
ZGluZyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3NzLWNhY2hlZC1ib20uaHRt
bCc6IGRpY3QoZXhwZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J0ZBSUwnLCB0aW1lPTEuMiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jaGFyc2V0LWRlZmF1bHQueGh0bWwnOiBkaWN0
KGV4cGVjdGVkPSdGQUlMJywgYWN0dWFsPSdGQUlMJywgdGltZT0xLjIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdjc3MtY2hhcnNldC5odG1sJzogZGljdChleHBlY3RlZD0nRkFJTCcs
IGFjdHVhbD0nUEFTUycsIHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
Y3NzLWxpbmstY2hhcnNldC5odG1sJzogZGljdChleHBlY3RlZD0nUEFTUycsIGFjdHVhbD0nUEFT
JywgdGltZT0xLjIpLAorICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgKSkKLSAg
ICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMobW9kZWwpCisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICkpCisgICAgICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LnBy
b2Nlc3NfcmVzdWx0cyhtb2RlbCkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1v
Y2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZl
cigpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS9jb250cm9sbGVyL3N1aXRlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxl
ci9zdWl0ZV9jb250cm9sbGVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzQwNzkpCisrKyBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3N1
aXRlX2NvbnRyb2xsZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTIgKzM3LDEzIEBAIGNsYXNzIFN1
aXRlQ29udHJvbGxlclRlc3QoRmxhc2tUZXN0Q2FzZSwKIAogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5k
cmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtl
eXNwYWNlPWNscy5LRVlTUEFDRSkKLSAgICAgICAgbW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNy
ZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPWNscy5LRVlT
UEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXBy
aW50KEFQSVJvdXRlcyhtb2RlbCkpCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZh
cmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIGNhc3NhbmRyYS5k
cm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKKyAgICAgICAgICAgIG1vZGVsID0g
TW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRy
YShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAg
ICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVzKG1vZGVsKSkKIAotICAgICAgICBN
b2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMobW9kZWwpCi0gICAgICAgIE1vY2tNb2Rl
bEZhY3RvcnkucHJvY2Vzc19yZXN1bHRzKG1vZGVsKQorICAgICAgICAgICAgTW9ja01vZGVsRmFj
dG9yeS5hZGRfbW9ja19yZXN1bHRzKG1vZGVsKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9y
eS5wcm9jZXNzX3Jlc3VsdHMobW9kZWwpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJz
ZXJ2ZXIoKQpAQCAtNzMsNyArNzQsNyBAQCBjbGFzcyBTdWl0ZUNvbnRyb2xsZXJUZXN0KEZsYXNr
VGVzdENhc2UsCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlciht
b2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNv
bnRleHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKICAgICBkZWYg
dGVzdF9yZXN1bHRzX2J5X2NvbW1pdChzZWxmLCBjbGllbnQsICoqa3dhcmdzKToKLSAgICAgICAg
cmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvcmVzdWx0cy9sYXlvdXQtdGVz
dHM/cGxhdGZvcm09aU9TJnN0eWxlPURlYnVnJmFmdGVyX2lkPTMzNjYxMGE4NCZiZWZvcmVfaWQ9
MjM2NTQyJykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkv
cmVzdWx0cy9sYXlvdXQtdGVzdHM/cGxhdGZvcm09aU9TJnN0eWxlPURlYnVnJmFmdGVyX2lkPTYm
YmVmb3JlX2lkPTFhYmUyNWI0NDNlOScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9u
c2Uuc3RhdHVzX2NvZGUsIDIwMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzcG9u
c2UuanNvbigpKSwgMikKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CkluZGV4OiBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3Rf
Y29udHJvbGxlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9jb250cm9sbGVyL3Rlc3RfY29udHJvbGxlcl91
bml0dGVzdC5weQkocmV2aXNpb24gMjc0MDc5KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci90ZXN0X2NvbnRyb2xsZXJfdW5pdHRl
c3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzgsMTIgKzM4LDEzIEBAIGNsYXNzIFRlc3RDb250cm9sbGVyVGVzdChGbGFz
a1Rlc3RDYXNlLCAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXR1cF93ZWJzZXJ2ZXIo
Y2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6
Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkK
LSAgICAgICAgbW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBj
YXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNl
PVRydWUpKQotICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkp
CisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9y
eS53ZWJraXQoKToKKyAgICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNl
PWNscy5LRVlTUEFDRSkKKyAgICAgICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVh
dGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BB
Q0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVl
cHJpbnQoQVBJUm91dGVzKG1vZGVsKSkKIAotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9t
b2NrX3Jlc3VsdHMobW9kZWwpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkucHJvY2Vzc19yZXN1
bHRzKG1vZGVsKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRz
KG1vZGVsKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMobW9k
ZWwpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4
dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQpAQCAtMTA2LDcgKzEw
Nyw3IEBAIGNsYXNzIFRlc3RDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlLCAKICAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tU
ZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQogICAgIGRlZiB0ZXN0X3Jlc3VsdHNfYnlfY29t
bWl0KHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9IGNsaWVudC5n
ZXQoc2VsZi5VUkwgKyAnL2FwaS9yZXN1bHRzL2xheW91dC10ZXN0cy9mYXN0L2VuY29kaW5nL2Nz
cy1saW5rLWNoYXJzZXQuaHRtbD9wbGF0Zm9ybT1pT1Mmc3R5bGU9RGVidWcmYWZ0ZXJfaWQ9MzM2
NjEwYTg0JmJlZm9yZV9pZD0yMzY1NDInKQorICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQo
c2VsZi5VUkwgKyAnL2FwaS9yZXN1bHRzL2xheW91dC10ZXN0cy9mYXN0L2VuY29kaW5nL2Nzcy1s
aW5rLWNoYXJzZXQuaHRtbD9wbGF0Zm9ybT1pT1Mmc3R5bGU9RGVidWcmYWZ0ZXJfaWQ9NiZiZWZv
cmVfaWQ9MWFiZTI1YjQ0M2U5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5z
dGF0dXNfY29kZSwgMjAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXNwb25zZS5q
c29uKCkpLCAyKQogICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L2NvbnRyb2xsZXIvdXBsb2FkX2Nv
bnRyb2xsZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlcl91
bml0dGVzdC5weQkocmV2aXNpb24gMjc0MDc5KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvY29udHJvbGxlci91cGxvYWRfY29udHJvbGxlcl91bml0
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjUsMTMgKzI1LDExIEBAIGltcG9ydCB0aW1lCiBm
cm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmljdFJlZGlzCiBmcm9tIHJlZGlzIGltcG9ydCBT
dHJpY3RSZWRpcwogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmFwaV9yb3V0ZXMgaW1wb3J0
IEFQSVJvdXRlcwotZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29t
bWl0CiBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvbiBpbXBvcnQgQ29u
ZmlndXJhdGlvbgogZnJvbSByZXN1bHRzZGJweS5mbGFza19zdXBwb3J0LmZsYXNrX3Rlc3RjYXNl
IGltcG9ydCBGbGFza1Rlc3RDYXNlCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9j
b250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1v
Y2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJl
c3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9y
eQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTdGFz
aFJlcG9zaXRvcnksIE1vY2tTVk5SZXBvc2l0b3J5CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndh
aXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQogCiAK
QEAgLTQwLDE3ICszOCwxOCBAQCBjbGFzcyBVcGxvYWRDb250cm9sbGVyUG9zdFRlc3QoRmxhc2tU
ZXN0CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0dXBfd2Vic2VydmVyKGNscywgYXBw
LCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAg
ICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UpCi0gICAgICAg
IG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJh
PWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkK
LSAgICAgICAgbW9kZWwudXBsb2FkX2NvbnRleHQucmVnaXN0ZXJfdXBsb2FkX2NhbGxiYWNrKCdw
eXRob24tdGVzdHMnLCBsYW1iZGEgKiprd2FyZ3M6IGRpY3Qoc3RhdHVzPSdvaycpKQotICAgICAg
ICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkpCisgICAgICAgIHdpdGgg
TW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAg
ICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkK
KyAgICAgICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMo
KSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlz
cGFjZT1UcnVlKSkKKyAgICAgICAgICAgIG1vZGVsLnVwbG9hZF9jb250ZXh0LnJlZ2lzdGVyX3Vw
bG9hZF9jYWxsYmFjaygncHl0aG9uLXRlc3RzJywgbGFtYmRhICoqa3dhcmdzOiBkaWN0KHN0YXR1
cz0nb2snKSkKKyAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVzKG1v
ZGVsKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9j
a19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250
ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRl
c3RfdXBsb2FkKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgogICAgICAgICB1cGxvYWRfZGljdCA9
IGRpY3QoCiAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKLSAgICAgICAgICAgIGNv
bW1pdHM9W01vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZCgnYmI2YmRh
NWYnKSwgTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpXSwK
KyAgICAgICAgICAgIGNvbW1pdHM9W2RpY3QocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgaWQ9J2Q4
YmNlMjZmYTY1YzZmYzhmMzljMTc5MjdhYmI3N2Y2OWZhYjgyZmMnKSwgZGljdChyZXBvc2l0b3J5
X2lkPSd3ZWJraXQnLCBpZD0nNicpXSwKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249Q29uZmln
dXJhdGlvbi5FbmNvZGVyKCkuZGVmYXVsdChDb25maWd1cmF0aW9uKAogICAgICAgICAgICAgICAg
IHBsYXRmb3JtPSdNYWMnLCB2ZXJzaW9uPScxMC4xNC4wJywgc2RrPScxOEEzOTEnLAogICAgICAg
ICAgICAgICAgIGlzX3NpbXVsYXRvcj1GYWxzZSwgYXJjaGl0ZWN0dXJlPSd4ODZfNjQnLApAQCAt
NTksMjEgKzU4LDI0IEBAIGNsYXNzIFVwbG9hZENvbnRyb2xsZXJQb3N0VGVzdChGbGFza1Rlc3QK
ICAgICAgICAgICAgIHRlc3RfcmVzdWx0cz1Nb2NrTW9kZWxGYWN0b3J5LmxheW91dF90ZXN0X3Jl
c3VsdHMoKSwKICAgICAgICAgICAgIHRpbWVzdGFtcD1pbnQodGltZS50aW1lKCkpLAogICAgICAg
ICApCi0gICAgICAgIHJlc3BvbnNlID0gY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS91cGxv
YWQnLCBkYXRhPXN0cihqc29uLmR1bXBzKHVwbG9hZF9kaWN0LCBjbHM9Q29tbWl0LkVuY29kZXIp
KSkKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQucG9zdChzZWxmLlVSTCArICcvYXBpL3VwbG9h
ZCcsIGRhdGE9c3RyKGpzb24uZHVtcHModXBsb2FkX2RpY3QpKSkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3BvbnNlLmpzb24oKVsnc3RhdHVzJ10sICdvaycpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVzcG9uc2UuanNvbigpWydwcm9jZXNzaW5nJ11bJ3B5dGhvbi10ZXN0cyddLCBkaWN0
KHN0YXR1cz0nb2snKSkKIAogICAgICAgICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwg
KyAnL2FwaS91cGxvYWQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1
c19jb2RlLCAyMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuanNvbigpWzBd
LCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQodXBsb2FkX2RpY3QpKQorCisgICAgICAgIHJldHJp
ZXZlZCA9IHJlc3BvbnNlLmpzb24oKVswXQorICAgICAgICByZXRyaWV2ZWRbJ2NvbW1pdHMnXSA9
IFtkaWN0KHJlcG9zaXRvcnlfaWQ9Y29tbWl0WydyZXBvc2l0b3J5X2lkJ10sIGlkPWNvbW1pdFsn
aWQnXSkgZm9yIGNvbW1pdCBpbiByZXRyaWV2ZWRbJ2NvbW1pdHMnXV0KKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChyZXRyaWV2ZWQsIHVwbG9hZF9kaWN0KQogCiAgICAgQFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9j
a19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgQEZsYXNrVGVzdENhc2UucnVu
X3dpdGhfd2Vic2VydmVyKCkKICAgICBkZWYgdGVzdF91cGxvYWRfcGFydGlhbChzZWxmLCBjbGll
bnQsICoqa3dhcmdzKToKICAgICAgICAgdXBsb2FkX2RpY3QgPSBkaWN0KAogICAgICAgICAgICAg
c3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICBjb21taXRzPVtkaWN0KHJlcG9zaXRv
cnlfaWQ9J3NhZmFyaScsIGlkPSdiYjZiZGE1ZicpLCBkaWN0KHJlcG9zaXRvcnlfaWQ9J3dlYmtp
dCcsIGlkPTIzNjU0MildLAorICAgICAgICAgICAgY29tbWl0cz1bZGljdChyZXBvc2l0b3J5X2lk
PSdzYWZhcmknLCBpZD0nZDhiY2UyNmZhNjVjNmZjOGYzOWMxNzkyN2FiYjc3ZjY5ZmFiODJmYycp
LCBkaWN0KHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGlkPSc2JyldLAogICAgICAgICAgICAgY29u
ZmlndXJhdGlvbj1Db25maWd1cmF0aW9uLkVuY29kZXIoKS5kZWZhdWx0KENvbmZpZ3VyYXRpb24o
CiAgICAgICAgICAgICAgICAgcGxhdGZvcm09J2lPUycsIHZlcnNpb249JzEyLjAuMCcsIHNkaz0n
MTZBNDA0JywKICAgICAgICAgICAgICAgICBpc19zaW11bGF0b3I9VHJ1ZSwgYXJjaGl0ZWN0dXJl
PSd4ODZfNjQnLApAQCAtMTExLDExICsxMTMsMTIgQEAgY2xhc3MgVXBsb2FkQ29udHJvbGxlclRl
c3QoRmxhc2tUZXN0Q2FzZQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldHVwX3dlYnNl
cnZlcihjbHMsIGFwcCwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250
ZXh0KToKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9Y2xzLktFWVNQ
QUNFKQotICAgICAgICBtb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlz
KCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9Y2xzLktFWVNQQUNFLCBjcmVhdGVfa2V5
c3BhY2U9VHJ1ZSkpCi0gICAgICAgIG1vZGVsLnVwbG9hZF9jb250ZXh0LnJlZ2lzdGVyX3VwbG9h
ZF9jYWxsYmFjaygncHl0aG9uLXRlc3RzJywgbGFtYmRhICoqa3dhcmdzOiBkaWN0KHN0YXR1cz0n
b2snKSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKG1vZGVsKQot
ICAgICAgICBhcHAucmVnaXN0ZXJfYmx1ZXByaW50KEFQSVJvdXRlcyhtb2RlbCkpCisgICAgICAg
IHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQo
KToKKyAgICAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlT
UEFDRSkKKyAgICAgICAgICAgIG1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9
cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1jbHMuS0VZU1BBQ0UsIGNyZWF0
ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAgICAgIG1vZGVsLnVwbG9hZF9jb250ZXh0LnJlZ2lz
dGVyX3VwbG9hZF9jYWxsYmFjaygncHl0aG9uLXRlc3RzJywgbGFtYmRhICoqa3dhcmdzOiBkaWN0
KHN0YXR1cz0nb2snKSkKKyAgICAgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVz
dWx0cyhtb2RlbCkKKyAgICAgICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoQVBJUm91dGVz
KG1vZGVsKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFD
b250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93aXRoX3dlYnNlcnZlcigpCkBAIC0xNzAs
MjMgKzE3MywyNyBAQCBjbGFzcyBVcGxvYWRDb250cm9sbGVyVGVzdChGbGFza1Rlc3RDYXNlCiAg
ICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZh
a2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAg
QEZsYXNrVGVzdENhc2UucnVuX3dpdGhfd2Vic2VydmVyKCkKICAgICBkZWYgdGVzdF9kb3dubG9h
ZF93aXRoX3JhbmdlKHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAgICAgICByZXNwb25zZSA9
IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS91cGxvYWQ/cGxhdGZvcm09TWFjJnN0eWxlPVJl
bGVhc2UmZmxhdm9yPXdrMiZhZnRlcl9pZD0yMzY1NDImYmVmb3JlX2lkPTIzNjU0NCcpCisgICAg
ICAgIHJlc3BvbnNlID0gY2xpZW50LmdldChzZWxmLlVSTCArICcvYXBpL3VwbG9hZD9wbGF0Zm9y
bT1NYWMmc3R5bGU9UmVsZWFzZSZmbGF2b3I9d2syJmFmdGVyX2lkPTFhYmUyNWI0NDNlOSZiZWZv
cmVfaWQ9ZDhiY2UyNmZhNjVjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5z
dGF0dXNfY29kZSwgMjAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihyZXNwb25z
ZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChbJzIzNjU0NCcsICcy
MzY1NDMnLCAnMjM2NTQyJ10pLCBzb3J0ZWQoW3Jlc3VsdFsnY29tbWl0cyddWzBdWydpZCddIGZv
ciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c29ydGVkKFsKKyAgICAgICAgICAgICdkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlm
YWI4MmZjJywKKyAgICAgICAgICAgICdiYWU1ZDFlOTA5OTlkNGY5MTZhOGExNTgxMGNjZmE0M2Yz
N2EyZmQ2JywKKyAgICAgICAgICAgICcxYWJlMjViNDQzZTk4NWY5M2I5MGQ4MzBlNGE3ZTM3MzEz
MzZhZjRkJywKKyAgICAgICAgXSksIHNvcnRlZChbcmVzdWx0Wydjb21taXRzJ11bMV1bJ2lkJ10g
Zm9yIHJlc3VsdCBpbiByZXNwb25zZS5qc29uKCldKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVz
dENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tf
Y2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIEBGbGFza1Rlc3RDYXNlLnJ1bl93
aXRoX3dlYnNlcnZlcigpCiAgICAgZGVmIHRlc3RfZG93bmxvYWRfZm9yX2NvbW1pdChzZWxmLCBj
bGllbnQsICoqa3dhcmdzKToKLSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJM
ICsgJy9hcGkvdXBsb2FkP3BsYXRmb3JtPU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13azImaWQ9
MjM2NTQyJykKKyAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkv
dXBsb2FkP3BsYXRmb3JtPU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13azImaWQ9ZDhiY2UyNmZh
NjVjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAw
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFsnMjM2NTQyJ10sIFtyZXN1bHRbJ2NvbW1pdHMnXVswXVsn
aWQnXSBmb3IgcmVzdWx0IGluIHJlc3BvbnNlLmpzb24oKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoWydkOGJjZTI2ZmE2NWM2ZmM4ZjM5YzE3OTI3YWJiNzdmNjlmYWI4MmZjJ10sIFtyZXN1
bHRbJ2NvbW1pdHMnXVsxXVsnaWQnXSBmb3IgcmVzdWx0IGluIHJlc3BvbnNlLmpzb24oKV0pCiAK
LSAgICAgICAgcmVzcG9uc2UgPSBjbGllbnQuZ2V0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2FkP3Bs
YXRmb3JtPU1hYyZzdHlsZT1SZWxlYXNlJmZsYXZvcj13azImaWQ9YmI2YmRhNWYnKQorICAgICAg
ICByZXNwb25zZSA9IGNsaWVudC5nZXQoc2VsZi5VUkwgKyAnL2FwaS91cGxvYWQ/cGxhdGZvcm09
TWFjJnN0eWxlPVJlbGVhc2UmZmxhdm9yPXdrMiZpZD02JykKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDUsIGxlbihyZXNwb25zZS5qc29uKCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnYmI2
YmRhNWY0NGRkMjRkMGI1NDUzOWI4ZmY2ZThjMTdmNTE5MjQ5YSddICogNSwgW3Jlc3VsdFsnY29t
bWl0cyddWzFdWydpZCddIGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbJzYnXSAqIDUsIFtyZXN1bHRbJ2NvbW1pdHMnXVswXVsnaWQnXSBm
b3IgcmVzdWx0IGluIHJlc3BvbnNlLmpzb24oKV0pCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RD
YXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nh
c3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0
aF93ZWJzZXJ2ZXIoKQpAQCAtMTk5LDggKzIwNiw4IEBAIGNsYXNzIFVwbG9hZENvbnRyb2xsZXJU
ZXN0KEZsYXNrVGVzdENhc2UKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9f
ZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fz
c2FuZHJhQ29udGV4dCkKICAgICBARmxhc2tUZXN0Q2FzZS5ydW5fd2l0aF93ZWJzZXJ2ZXIoKQog
ICAgIGRlZiB0ZXN0X3Byb2Nlc3NfY29tbWl0KHNlbGYsIGNsaWVudCwgKiprd2FyZ3MpOgotICAg
ICAgICByZXNwb25zZSA9IGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2FkL3Byb2Nl
c3M/cGxhdGZvcm09TWFjJnN0eWxlPVJlbGVhc2UmZmxhdm9yPXdrMiZpZD0yMzY1NDMnKQorICAg
ICAgICByZXNwb25zZSA9IGNsaWVudC5wb3N0KHNlbGYuVVJMICsgJy9hcGkvdXBsb2FkL3Byb2Nl
c3M/cGxhdGZvcm09TWFjJnN0eWxlPVJlbGVhc2UmZmxhdm9yPXdrMiZpZD1kOGJjZTI2ZmE2NWMn
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlc3BvbnNlLmpzb24oKSkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoWycyMzY1NDMnXSwgW3Jlc3VsdFsnY29tbWl0cyddWzBdWydpZCdd
IGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChbJ2Q4YmNlMjZmYTY1YzZmYzhmMzljMTc5MjdhYmI3N2Y2OWZhYjgyZmMnXSwgW3Jlc3VsdFsn
Y29tbWl0cyddWzFdWydpZCddIGZvciByZXN1bHQgaW4gcmVzcG9uc2UuanNvbigpXSkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChbZGljdChzdGF0dXM9J29rJyldLCBbZWxlbWVudFsncHJvY2Vz
c2luZyddWydweXRob24tdGVzdHMnXSBmb3IgZWxlbWVudCBpbiByZXNwb25zZS5qc29uKCldKQpJ
bmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9k
ZWwvYXJjaGl2ZV9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2FyY2hpdmVfY29udGV4
dF91bml0dGVzdC5weQkocmV2aXNpb24gMjc0MDc5KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvYXJjaGl2ZV9jb250ZXh0X3VuaXR0ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMyLDcgKzMyLDYgQEAgZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZp
Z3VyYXRpbwogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQg
Q2Fzc2FuZHJhQ29udGV4dAogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX2Nhc3NhbmRyYV9j
b250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAogZnJvbSByZXN1bHRzZGJweS5tb2Rl
bC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkKLWZyb20gcmVzdWx0
c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU1ZOUmVwb3NpdG9yeQogZnJv
bSByZXN1bHRzZGJweS5tb2RlbC53YWl0X2Zvcl9kb2NrZXJfdGVzdF9jYXNlIGltcG9ydCBXYWl0
Rm9yRG9ja2VyVGVzdENhc2UKIAogCkBAIC00MCwyMCArMzksMjEgQEAgY2xhc3MgQXJjaGl2ZUNv
bnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZQogICAgIEtFWVNQQUNFID0gJ2FyY2hpdmVfdGVzdF9r
ZXlzcGFjZScKIAogICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlz
LCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCwgY29uZmlndXJhdGlvbj1Db25maWd1cmF0aW9u
KCksIGFyY2hpdmU9Tm9uZSk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNw
YWNlPXNlbGYuS0VZU1BBQ0UpCi0gICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5
LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYu
S0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKLSAgICAgICAgTW9ja01vZGVsRmFjdG9y
eS5hZGRfbW9ja19hcmNoaXZlcyhzZWxmLm1vZGVsLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRp
b24sIGFyY2hpdmU9YXJjaGl2ZSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFy
aSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgY2Fzc2FuZHJhLmRy
b3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKKyAgICAgICAgICAgIHNlbGYubW9k
ZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fz
c2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKKyAg
ICAgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfYXJjaGl2ZXMoc2VsZi5tb2RlbCwg
Y29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBhcmNoaXZlPWFyY2hpdmUpCiAKICAgICBAV2Fp
dEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmlj
dFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVz
dF9maW5kX2FyY2hpdmUoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5k
cmFDb250ZXh0KToKICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNz
YW5kcmE9Y2Fzc2FuZHJhKQogICAgICAgICBhcmNoaXZlcyA9IHNlbGYubW9kZWwuYXJjaGl2ZV9j
b250ZXh0LmZpbmRfYXJjaGl2ZSgKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1
cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAot
ICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9p
ZCgyMzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgy
MzY1NDIpLAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwgZW5kPTE2MDE2NjAwMDAsCiAg
ICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKICAgICAgICAgKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihuZXh0KGl0ZXIoYXJjaGl2ZXMudmFsdWVzKCkpKSksIDEpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGFyY2hpdmVzLnZhbHVlcygpKSlbMF1bJ3V1
aWQnXSwgMTUzODA0OTEwODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihh
cmNoaXZlcy52YWx1ZXMoKSkpWzBdWyd1dWlkJ10sIDE2MDE2NjAwMDAwMCkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoYXJjaGl2ZXMudmFsdWVzKCkpKVswXVsnYXJjaGl2ZSdd
LmdldHZhbHVlKCksIGJhc2U2NC5iNjRkZWNvZGUoTW9ja01vZGVsRmFjdG9yeS5BUkNISVZFX1pJ
UCkpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tf
cmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4
dCkKQEAgLTYxLDExICs2MSwxMSBAQCBjbGFzcyBBcmNoaXZlQ29udGV4dFRlc3QoV2FpdEZvckRv
Y2tlclRlCiAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJh
PWNhc3NhbmRyYSkKICAgICAgICAgZmlsZXMgPSBzZWxmLm1vZGVsLmFyY2hpdmVfY29udGV4dC5s
cygKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdN
YWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAgYmVnaW49
TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLCBlbmQ9TW9j
a1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLAorICAgICAgICAg
ICAgYmVnaW49MTYwMTY2MDAwMCwgZW5kPTE2MDE2NjAwMDAsCiAgICAgICAgICAgICBzdWl0ZT0n
bGF5b3V0LXRlc3RzJywKICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihu
ZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKSksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1bJ3V1aWQnXSwgMTUzODA0OTEwODAwKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWyd1dWlk
J10sIDE2MDE2NjAwMDAwMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmls
ZXMudmFsdWVzKCkpKVswXVsnZmlsZXMnXSwgWydmaWxlLnR4dCcsICdpbmRleC5odG1sJ10pCiAK
ICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9
RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKQEAg
LTc0LDExICs3NCwxMSBAQCBjbGFzcyBBcmNoaXZlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRl
CiAgICAgICAgIGZpbGVzID0gc2VsZi5tb2RlbC5hcmNoaXZlX2NvbnRleHQuZmlsZSgKICAgICAg
ICAgICAgIHBhdGg9J2ZpbGUudHh0JywKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25m
aWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyld
LAotICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zv
cl9pZCgyMzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9p
ZCgyMzY1NDIpLAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwgZW5kPTE2MDE2NjAwMDAs
CiAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKICAgICAgICAgKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKSksIDEpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1bJ3V1aWQn
XSwgMTUzODA0OTEwODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxl
cy52YWx1ZXMoKSkpWzBdWyd1dWlkJ10sIDE2MDE2NjAwMDAwMCkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsnZmlsZSddLCAnZGF0YScuZW5j
b2RlKCdhc2NpaScpKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2Rv
Y2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3Nh
bmRyYUNvbnRleHQpCkBAIC04NiwxMSArODYsMTEgQEAgY2xhc3MgQXJjaGl2ZUNvbnRleHRUZXN0
KFdhaXRGb3JEb2NrZXJUZQogICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMs
IGNhc3NhbmRyYT1jYXNzYW5kcmEpCiAgICAgICAgIGZpbGVzID0gc2VsZi5tb2RlbC5hcmNoaXZl
X2NvbnRleHQuZmlsZSgKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9u
KHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAg
ICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1
NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIp
LAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwgZW5kPTE2MDE2NjAwMDAsCiAgICAgICAg
ICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywKICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKSksIDEpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVlcygpKSlbMF1bJ3V1aWQnXSwgMTUzODA0
OTEwODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihmaWxlcy52YWx1ZXMo
KSkpWzBdWyd1dWlkJ10sIDE2MDE2NjAwMDAwMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChu
ZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsnZmlsZSddLCBbJ2ZpbGUudHh0JywgJ2luZGV4
Lmh0bWwnXSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFD
b250ZXh0KQpAQCAtMTEzLDE2ICsxMTMsMTYgQEAgY2xhc3MgQXJjaGl2ZUNvbnRleHRUZXN0KFdh
aXRGb3JEb2NrZXJUZQogCiAgICAgICAgIGZpbGVzID0gc2VsZi5tb2RlbC5hcmNoaXZlX2NvbnRl
eHQuZmluZF9hcmNoaXZlKAogICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRp
b24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCi0gICAg
ICAgICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIz
NjU0MiksIGVuZD1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0
MiksCisgICAgICAgICAgICBiZWdpbj0xNjAxNjYwMDAwLCBlbmQ9MTYwMTY2MDAwMCwKICAgICAg
ICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAogICAgICAgICApCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpKSwgMSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoZmlsZXMudmFsdWVzKCkpKVswXVsndXVpZCddLCAxNTM4
MDQ5MTA4MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGZpbGVzLnZhbHVl
cygpKSlbMF1bJ3V1aWQnXSwgMTYwMTY2MDAwMDAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KG5leHQoaXRlcihmaWxlcy52YWx1ZXMoKSkpWzBdWydhcmNoaXZlJ10uZ2V0dmFsdWUoKSwgYnVm
Zi5nZXR2YWx1ZSgpKQogCiAgICAgICAgIHdpdGggbW9jay5wYXRjaCgncmVzdWx0c2RicHkubW9k
ZWwuYXJjaGl2ZV9jb250ZXh0LkFyY2hpdmVDb250ZXh0Lk1FTU9SWV9MSU1JVCcsIG5ldz1GSUxF
X1NJWkUpLCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgogICAgICAgICAgICAgc2Vs
Zi5tb2RlbC5hcmNoaXZlX2NvbnRleHQuZmluZF9hcmNoaXZlKAogICAgICAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFz
ZScsIGZsYXZvcj0nd2sxJyldLAotICAgICAgICAgICAgICAgIGJlZ2luPU1vY2tTVk5SZXBvc2l0
b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwgZW5kPU1vY2tTVk5SZXBvc2l0b3J5
LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwKKyAgICAgICAgICAgICAgICBiZWdpbj0x
NjAxNjYwMDAwLCBlbmQ9MTYwMTY2MDAwMCwKICAgICAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0
LXRlc3RzJywKICAgICAgICAgICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NpX2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkv
bW9kZWwvY2lfY29udGV4dF91bml0dGVzdC5weQkocmV2aXNpb24gMjc0MDc5KQorKysgVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvY2lfY29udGV4
dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5LTIwMjEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjEsMTkgKzIxLDE1IEBACiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIGltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQganNvbgotaW1wb3J0IG1vY2sKIGltcG9y
dCB0aW1lCi1pbXBvcnQgdW5pdHRlc3QKIAogZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJp
Y3RSZWRpcwogZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKIGZyb20gcmVzdWx0c2RicHku
bW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVz
dWx0c2RicHkubW9kZWwuY2lfY29udGV4dCBpbXBvcnQgQnVpbGRib3RVUkxGYWN0b3J5LCBDSUNv
bnRleHQsIEJ1aWxkYm90RWlnaHRVUkxGYWN0b3J5Citmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNp
X2NvbnRleHQgaW1wb3J0IEJ1aWxkYm90VVJMRmFjdG9yeSwgQnVpbGRib3RFaWdodFVSTEZhY3Rv
cnkKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxlci5jb25maWd1cmF0aW9uIGltcG9ydCBDb25m
aWd1cmF0aW9uCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQg
aW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tf
bW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5t
b2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTVk5SZXBvc2l0b3J5CiBmcm9tIHJlc3Vs
dHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZQogCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgbW9ja3MKQEAgLTI2NCw3ICsy
NjAsNyBAQCBjbGFzcyBDSUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2FzCiAgICAgS0VZ
U1BBQ0UgPSAnc3VpdGVfY29udGV4dF90ZXN0X2tleXNwYWNlJwogCiAgICAgZGVmIGluaXRfZGF0
YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0
KToKLSAgICAgICAgd2l0aCBVUkxGYWN0b3J5VGVzdC5tb2NrKCk6CisgICAgICAgIHdpdGggTW9j
a01vZGVsRmFjdG9yeS53ZWJraXQoKSwgTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgVVJMRmFj
dG9yeVRlc3QubW9jaygpOgogICAgICAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5
c3BhY2U9c2VsZi5LRVlTUEFDRSkKICAgICAgICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxG
YWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNl
PXNlbGYuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFjZT1UcnVlKSkKICAgICAgICAgICAgIHNlbGYu
bW9kZWwuY2lfY29udGV4dC5hZGRfdXJsX2ZhY3RvcnkoQnVpbGRib3RVUkxGYWN0b3J5KG1hc3Rl
cj0nYnVpbGQud2Via2l0Lm9yZycsIHJlZGlzPXNlbGYubW9kZWwucmVkaXMpKQpAQCAtMzE0LDEy
ICszMTAsMTIgQEAgY2xhc3MgQ0lDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzdENhcwogICAg
ICAgICB1cmxzID0gc2VsZi5tb2RlbC5jaV9jb250ZXh0LmZpbmRfdXJsc19ieV9jb21taXQoCiAg
ICAgICAgICAgICBjb25maWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbih2ZXJzaW9uX25hbWU9J01v
amF2ZScsIGZsYXZvcj0nd2syJyldLAogICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycs
Ci0gICAgICAgICAgICBiZWdpbj1Nb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9y
X2lkKDIzNjU0MiksCi0gICAgICAgICAgICBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCku
Y29tbWl0X2Zvcl9pZCgyMzY1NDIpLAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwKKyAg
ICAgICAgICAgIGVuZD0xNjAxNjYwMDAwLAogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChuZXh0KGl0ZXIodXJscy52YWx1ZXMoKSkpWzBdWydxdWV1ZSddLCAnaHR0cHM6Ly9i
dWlsZC53ZWJraXQub3JnLyMvYnVpbGRlcnMvMicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bmV4dChpdGVyKHVybHMudmFsdWVzKCkpKVswXVsnYnVpbGQnXSwgJ2h0dHBzOi8vYnVpbGQud2Vi
a2l0Lm9yZy8jL2J1aWxkZXJzLzIvYnVpbGRzLzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KG5leHQoaXRlcih1cmxzLnZhbHVlcygpKSlbMF1bJ2J1aWxkJ10sICdodHRwczovL2J1aWxkLndl
YmtpdC5vcmcvIy9idWlsZGVycy8yL2J1aWxkcy8xJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChuZXh0KGl0ZXIodXJscy52YWx1ZXMoKSkpWzBdWyd3b3JrZXInXSwgJ2h0dHBzOi8vYnVpbGQu
d2Via2l0Lm9yZy8jL3dvcmtlcnMvMycpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVs
L2NvbW1pdF9jb250ZXh0LnB5CShyZXZpc2lvbiAyNzQwNzkpCisrKyBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9jb21taXRfY29udGV4dC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsOSBAQCBmcm9tIGNhc3NhbmRyYS5jcWxlbmdpbmUg
aW1wb3J0IGNvbHVtbnMKIGZyb20gY2Fzc2FuZHJhLmNxbGVuZ2luZS5tb2RlbHMgaW1wb3J0IE1v
ZGVsCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogZnJvbSByZXN1bHRzZGJweS5jb250
cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnJlcG9z
aXRvcnkgaW1wb3J0IFJlcG9zaXRvcnksIFNDTUV4Y2VwdGlvbgorZnJvbSByZXN1bHRzZGJweS5t
b2RlbC5yZXBvc2l0b3J5IGltcG9ydCBSZXBvc2l0b3J5CisKK2Zyb20gd2Via2l0c2NtcHkgaW1w
b3J0IFNjbUJhc2UKIAogCiBjbGFzcyBDb21taXRDb250ZXh0KG9iamVjdCk6CkBAIC0xMTksNyAr
MTIxLDcgQEAgY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogICAgICAgICAjIHRoaXMgY2Fz
ZSwgdHJhY2sgYnJhbmNoZXMgd2hpY2ggYXJlIG5vdCB0aGUgZGVmYXVsdCBicmFuY2ggaW5kZXBl
bmRlbnRseS4KICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgogICAgICAgICAgICAgcmVw
byA9IHNlbGYucmVwb3NpdG9yaWVzLmdldChjb21taXQucmVwb3NpdG9yeV9pZCwgUmVwb3NpdG9y
eShrZXk9Y29tbWl0LnJlcG9zaXRvcnlfaWQpKQotICAgICAgICAgICAgaWYgY29tbWl0LmJyYW5j
aCAhPSByZXBvLkRFRkFVTFRfQlJBTkNIOgorICAgICAgICAgICAgaWYgY29tbWl0LmJyYW5jaCAh
PSByZXBvLmRlZmF1bHRfYnJhbmNoOgogICAgICAgICAgICAgICAgIGJyYW5jaGVzLmFkZChjb21t
aXQuYnJhbmNoKQogICAgICAgICBpZiBsZW4oYnJhbmNoZXMpID09IDA6CiAgICAgICAgICAgICBi
cmFuY2hlcy5hZGQoc2VsZi5ERUZBVUxUX0JSQU5DSF9LRVkpCkBAIC0xNDUsNyArMTQ3LDcgQEAg
Y2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogCiAgICAgZGVmIGZpbmRfY29tbWl0c19ieV9p
ZChzZWxmLCByZXBvc2l0b3J5X2lkLCBicmFuY2gsIGNvbW1pdF9pZCwgbGltaXQ9MTAwKToKICAg
ICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9z
aXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5DSAorICAgICAgICAgICAgYnJhbmNo
ID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9icmFuY2gKIAogICAg
ICAgICBkZWYgY2FsbGJhY2soY29tbWl0X2lkPWNvbW1pdF9pZCk6CiAgICAgICAgICAgICB3aXRo
IHNlbGY6CkBAIC0xNjksNyArMTcxLDcgQEAgY2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgog
CiAgICAgZGVmIGZpbmRfY29tbWl0c19ieV91dWlkKHNlbGYsIHJlcG9zaXRvcnlfaWQsIGJyYW5j
aCwgdXVpZCwgbGltaXQ9MTAwKToKICAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAg
ICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JS
QU5DSAorICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9p
ZF0uZGVmYXVsdF9icmFuY2gKIAogICAgICAgICBkZWYgY2FsbGJhY2soKToKICAgICAgICAgICAg
IHdpdGggc2VsZjoKQEAgLTE4NSw3ICsxODcsNyBAQCBjbGFzcyBDb21taXRDb250ZXh0KG9iamVj
dCk6CiAKICAgICBkZWYgZmluZF9jb21taXRzX2J5X3RpbWVzdGFtcChzZWxmLCByZXBvc2l0b3J5
X2lkLCBicmFuY2gsIHRpbWVzdGFtcCwgbGltaXQ9MTAwKToKICAgICAgICAgaWYgYnJhbmNoIGlz
IE5vbmU6Ci0gICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5
X2lkXS5ERUZBVUxUX0JSQU5DSAorICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3Jp
ZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9icmFuY2gKIAogICAgICAgICBpZiBpc2luc3RhbmNl
KHRpbWVzdGFtcCwgZGF0ZXRpbWUpOgogICAgICAgICAgICAgdGltZXN0YW1wID0gY2FsZW5kYXIu
dGltZWdtKHRpbWVzdGFtcC50aW1ldHVwbGUoKSkKQEAgLTIwOCw3ICsyMTAsNyBAQCBjbGFzcyBD
b21taXRDb250ZXh0KG9iamVjdCk6CiAKICAgICBkZWYgZmluZF9jb21taXRzX2luX3JhbmdlKHNl
bGYsIHJlcG9zaXRvcnlfaWQsIGJyYW5jaD1Ob25lLCBiZWdpbj1Ob25lLCBlbmQ9Tm9uZSwgbGlt
aXQ9MTAwKToKICAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmFuY2gg
PSBzZWxmLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5DSAorICAgICAg
ICAgICAgYnJhbmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9i
cmFuY2gKIAogICAgICAgICBiZWdpbiA9IHNlbGYuY29udmVydF90b191dWlkKGJlZ2luKQogICAg
ICAgICBlbmQgPSBzZWxmLmNvbnZlcnRfdG9fdXVpZChlbmQsIHNlbGYudGltZXN0YW1wX3RvX3V1
aWQoKSkKQEAgLTI2Miw4ICsyNjQsOCBAQCBjbGFzcyBDb21taXRDb250ZXh0KG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgaWYgaWQgbm90IGluIHNlbGYucmVwb3NpdG9yaWVzOgogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICAgICAgaWYgY29tbWl0LmJyYW5jaCA9
PSBzZWxmLnJlcG9zaXRvcmllc1tjb21taXQucmVwb3NpdG9yeV9pZF0uREVGQVVMVF9CUkFOQ0gg
b3Igbm90IHNlbGYuYnJhbmNoZXMoaWQsIGNvbW1pdC5icmFuY2gpOgotICAgICAgICAgICAgICAg
ICAgICBicmFuY2ggPSBzZWxmLnJlcG9zaXRvcmllc1tpZF0uREVGQVVMVF9CUkFOQ0gKKyAgICAg
ICAgICAgICAgICBpZiBjb21taXQuYnJhbmNoID09IHNlbGYucmVwb3NpdG9yaWVzW2NvbW1pdC5y
ZXBvc2l0b3J5X2lkXS5kZWZhdWx0X2JyYW5jaCBvciBub3Qgc2VsZi5icmFuY2hlcyhpZCwgY29t
bWl0LmJyYW5jaCk6CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaCA9IHNlbGYucmVwb3NpdG9y
aWVzW2lkXS5kZWZhdWx0X2JyYW5jaAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaCA9IGNvbW1pdC5icmFuY2gKIApAQCAtMzE5LDE3ICszMjEsMTcgQEAg
Y2xhc3MgQ29tbWl0Q29udGV4dChvYmplY3QpOgogCiAgICAgZGVmIHJlZ2lzdGVyX2NvbW1pdF93
aXRoX3JlcG9fYW5kX2lkKHNlbGYsIHJlcG9zaXRvcnlfaWQsIGJyYW5jaCwgY29tbWl0X2lkKToK
ICAgICAgICAgaWYgYnJhbmNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmFuY2ggPSBzZWxmLnJl
cG9zaXRvcmllc1tyZXBvc2l0b3J5X2lkXS5ERUZBVUxUX0JSQU5DSAorICAgICAgICAgICAgYnJh
bmNoID0gc2VsZi5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeV9pZF0uZGVmYXVsdF9icmFuY2gKICAg
ICAgICAgaWYgcmVwb3NpdG9yeV9pZCBub3QgaW4gc2VsZi5yZXBvc2l0b3JpZXM6CiAgICAgICAg
ICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3t9IGlzIG5vdCBhIHJlY29nbml6ZWQgcmVwb3NpdG9y
eScpCiAKICAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgY29tbWl0cyA9IHNlbGYuZmlu
ZF9jb21taXRzX2J5X2lkKHJlcG9zaXRvcnlfaWQ9cmVwb3NpdG9yeV9pZCwgYnJhbmNoPWJyYW5j
aCwgY29tbWl0X2lkPWNvbW1pdF9pZCkKICAgICAgICAgICAgIGlmIGxlbihjb21taXRzKSA+IDE6
Ci0gICAgICAgICAgICAgICAgcmFpc2UgU0NNRXhjZXB0aW9uKGYnTXVsdGlwbGUgY29tbWl0cyB3
aXRoIHRoZSBpZCB7Y29tbWl0X2lkfSBleGlzdCBpbiB7cmVwb3NpdG9yeV9pZH0gb24ge2JyYW5j
aH0nKQorICAgICAgICAgICAgICAgIHJhaXNlIFNjbUJhc2UuRXhjZXB0aW9uKGYnTXVsdGlwbGUg
Y29tbWl0cyB3aXRoIHRoZSBpZCB7Y29tbWl0X2lkfSBleGlzdCBpbiB7cmVwb3NpdG9yeV9pZH0g
b24ge2JyYW5jaH0nKQogICAgICAgICAgICAgaWYgY29tbWl0czoKICAgICAgICAgICAgICAgICBy
ZXR1cm4gY29tbWl0c1swXQotICAgICAgICAgICAgY29tbWl0ID0gc2VsZi5yZXBvc2l0b3JpZXNb
cmVwb3NpdG9yeV9pZF0uY29tbWl0X2Zvcl9pZChjb21taXRfaWQsIGJyYW5jaCkKKyAgICAgICAg
ICAgIGNvbW1pdCA9IHNlbGYucmVwb3NpdG9yaWVzW3JlcG9zaXRvcnlfaWRdLmNvbW1pdF9mb3Jf
aWQoY29tbWl0X2lkKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVnaXN0ZXJfY29tbWl0KGNv
bW1pdCkKIAogICAgIGRlZiB1cmwoc2VsZiwgY29tbWl0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL2NvbW1pdF9jb250ZXh0X3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNzQwNzkpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS9tb2RlbC9jb21taXRfY29udGV4dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw4ICsyNSw5IEBA
IGZyb20gZmFrZXJlZGlzIGltcG9ydCBGYWtlU3RyaWN0UmVkaXMKIGZyb20gcmVzdWx0c2RicHku
bW9kZWwuY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IENhc3NhbmRyYUNvbnRleHQKIGZyb20gcmVz
dWx0c2RicHkubW9kZWwuY29tbWl0X2NvbnRleHQgaW1wb3J0IENvbW1pdENvbnRleHQKIGZyb20g
cmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9ja0Nhc3Nh
bmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9y
dCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZOUmVwb3NpdG9yeQorZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkKIGZyb20g
cmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQgV2FpdEZv
ckRvY2tlclRlc3RDYXNlCitmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnJlcG9zaXRvcnkgaW1wb3J0
IFN0YXNoUmVwb3NpdG9yeSwgV2ViS2l0UmVwb3NpdG9yeQogCiAKIGNsYXNzIENvbW1pdENvbnRl
eHRUZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6CkBAIC0zNSw4ICszNiw4IEBAIGNsYXNzIENv
bW1pdENvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXMKICAgICBkZWYgaW5pdF9kYXRhYmFzZShz
ZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgogICAg
ICAgICByZWRpc19pbnN0YW5jZSA9IHJlZGlzKCkKIAotICAgICAgICBzZWxmLnN0YXNoX3JlcG9z
aXRvcnkgPSBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpc19pbnN0YW5jZSkKLSAgICAg
ICAgc2VsZi5zdm5fcmVwb3NpdG9yeSA9IE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdChyZWRpc19p
bnN0YW5jZSkKKyAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5ID0gU3Rhc2hSZXBvc2l0b3J5
KCdodHRwczovL2JpdGJ1Y2tldC5leGFtcGxlLmNvbS9wcm9qZWN0cy9TQUZBUkkvcmVwb3Mvc2Fm
YXJpJykKKyAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeSA9IFdlYktpdFJlcG9zaXRvcnkoKQog
CiAgICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0Up
CiAgICAgICAgIHNlbGYuZGF0YWJhc2UgPSBDb21taXRDb250ZXh0KApAQCAtNDcsMjM2ICs0OCwy
NjggQEAgY2xhc3MgQ29tbWl0Q29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlcwogICAgICAgICBz
ZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX3JlcG9zaXRvcnkoc2VsZi5zdm5fcmVwb3NpdG9yeSkKIAog
ICAgIGRlZiBhZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2Uoc2VsZik6Ci0gICAgICAgIGZvciBt
b2NrX3JlcG9zaXRvcnkgaW4gW3NlbGYuc3Rhc2hfcmVwb3NpdG9yeSwgc2VsZi5zdm5fcmVwb3Np
dG9yeV06Ci0gICAgICAgICAgICBmb3IgY29tbWl0X2xpc3QgaW4gbW9ja19yZXBvc2l0b3J5LmNv
bW1pdHMudmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRfbGlz
dDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb21taXQoY29t
bWl0KQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCkgYXMgc2FmYXJpLCBN
b2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpIGFzIHdlYmtpdDoKKyAgICAgICAgICAgIHdpdGggc2Vs
Zi5kYXRhYmFzZSwgc2VsZi5kYXRhYmFzZS5jYXNzYW5kcmEuYmF0Y2hfcXVlcnlfY29udGV4dCgp
OgorICAgICAgICAgICAgICAgIGZvciBrZXksIHJlcG9zaXRvcnkgaW4gZGljdChzYWZhcmk9c2Fm
YXJpLCB3ZWJraXQ9d2Via2l0KS5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBmb3IgYnJh
bmNoLCBjb21taXRzIGluIHJlcG9zaXRvcnkuY29tbWl0cy5pdGVtcygpOgorICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuZGF0YWJhc2UucmVnaXN0ZXJfY29tbWl0X3dpdGhfcmVwb19hbmRfaWQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwgYnJhbmNoLCBjb21taXQuaGFzaCBv
ciBjb21taXQucmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogCiAgICAg
QFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VT
dHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVm
IHRlc3RfdmVyaWZ5X3RhYmxlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fz
c2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywg
Y2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgQ29tbWl0Q29udGV4dChyZWRpcz1yZWRpcygp
LCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpKQorICAgICAgICB3
aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6
CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1j
YXNzYW5kcmEpCisgICAgICAgICAgICBDb21taXRDb250ZXh0KHJlZGlzPXJlZGlzKCksIGNhc3Nh
bmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkpCiAKICAgICBAV2FpdEZvckRv
Y2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlz
LCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9jb21t
aXRfYnlfaWQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250
ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9
Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9z
aXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWY0NCcsIGJyYW5jaD0nbWFzdGVyJyldLAot
ICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9p
ZD0nc2FmYXJpJywgYnJhbmNoPSdtYXN0ZXInLCBjb21taXRfaWQ9J2JiNmJkYTVmNDQnKSwKLSAg
ICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihzZWxmLmRhdGFiYXNlLmZp
bmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3Rlcics
IGNvbW1pdF9pZD0nMzM2NjEwYScpKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAg
ICAgICAgICAgW3NlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDQsIGJy
YW5jaD0ndHJ1bmsnKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19i
eV9pZChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgY29tbWl0X2lkPTIz
NjU0NCksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oc2VsZi5k
YXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNo
PSd0cnVuaycsIGNvbW1pdF9pZD0nMjM2NTQnKSkpCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFj
dG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIHNl
bGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKKyAgICAg
ICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKKworICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbc2VsZi5zdGFzaF9yZXBvc2l0b3J5
LmNvbW1pdF9mb3JfaWQoaWQ9J2Q4YmNlMjZmYTY1YycpXSwKKyAgICAgICAgICAgICAgICBzZWxm
LmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFu
Y2g9J21haW4nLCBjb21taXRfaWQ9J2Q4YmNlMjZmYTY1YycpLAorICAgICAgICAgICAgKQorCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFtzZWxmLnN2bl9y
ZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9NildLAorICAgICAgICAgICAgICAgIHNlbGYuZGF0
YWJhc2UuZmluZF9jb21taXRzX2J5X2lkKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0n
dHJ1bmsnLCBjb21taXRfaWQ9NiksCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDAsIGxlbihzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0
b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgY29tbWl0X2lkPScxMjM0JykpKQogCiAg
ICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZh
a2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAg
ZGVmIHRlc3RfY29tbWl0X2J5X3V1aWQoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRy
YT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJl
ZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190
b19kYXRhYmFzZSgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtz
ZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nN2JlNDA4NDI1OCcsIGJyYW5j
aD0nbWFzdGVyJyldLAotICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfYnlf
dXVpZChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsIHV1aWQ9MTUzNzU1
MDY4NTAxKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAg
ICAgW3NlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDAsIGJyYW5jaD0n
dHJ1bmsnKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV91dWlk
KHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCB1dWlkPTE1MzgwMjk0Nzkw
MCksCi0gICAgICAgICkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBN
b2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNl
KHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgc2VsZi5hZGRf
YWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChp
ZD0nMWFiZTI1YjQ0M2U5JyldLAorICAgICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmluZF9j
b21taXRzX2J5X3V1aWQocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYWluJywgdXVp
ZD0xNjAxNjYzMDAwMDApLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgICAgICBbc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lk
KGlkPTYpXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV91
dWlkKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCB1dWlkPTE2MDE2Mzk5
MDAwMCksCisgICAgICAgICAgICApCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tf
aWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1N
b2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9jb21taXRfYnlfdGltZXN0YW1wKHNl
bGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAg
ICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkK
LSAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBbc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1p
dF9mb3JfaWQoaWQ9JzMzNjYxMGE4NGYnLCBicmFuY2g9J21hc3RlcicpXSwKLSAgICAgICAgICAg
IHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2J5X3RpbWVzdGFtcChyZXBvc2l0b3J5X2lkPSdz
YWZhcmknLCBicmFuY2g9J21hc3RlcicsIHRpbWVzdGFtcD0xNTM3ODA5ODE4KSwKLSAgICAgICAg
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW3NlbGYuc3ZuX3JlcG9z
aXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDAsIGJyYW5jaD0ndHJ1bmsnKV0sCi0gICAgICAg
ICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV90aW1lc3RhbXAocmVwb3NpdG9yeV9p
ZD0nd2Via2l0JywgYnJhbmNoPSd0cnVuaycsIHRpbWVzdGFtcD0xNTM4MDI5NDc5KSwKLSAgICAg
ICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihzZWxmLmRhdGFiYXNlLmZpbmRf
Y29tbWl0c19ieV90aW1lc3RhbXAocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYXN0
ZXInLCB0aW1lc3RhbXA9MTUzNzU1MDY4NSkpKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rv
cnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxm
LmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAg
ICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW3NlbGYuc3Rhc2hfcmVwb3NpdG9yeS5j
b21taXRfZm9yX2lkKGlkPScxYWJlMjViNDQzZTknKV0sCisgICAgICAgICAgICAgICAgc2VsZi5k
YXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfdGltZXN0YW1wKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScs
IGJyYW5jaD0nbWFpbicsIHRpbWVzdGFtcD0xNjAxNjYzMDAwKSwKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW3NlbGYuc3ZuX3Jl
cG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD02KV0sCisgICAgICAgICAgICAgICAgc2VsZi5kYXRh
YmFzZS5maW5kX2NvbW1pdHNfYnlfdGltZXN0YW1wKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJy
YW5jaD0ndHJ1bmsnLCB0aW1lc3RhbXA9MTYwMTYzOTkwMCksCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0
c19ieV90aW1lc3RhbXAocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdtYWluJywgdGlt
ZXN0YW1wPTE2MDE2NjgwMDApKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19p
Zl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1v
Y2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2FsbF9jb21taXRzX3N0YXNoKHNlbGYs
IHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAg
IHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAg
ICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDUsIGxlbihzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBv
c2l0b3J5X2lkPSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicpKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9p
ZChpZD0nYmI2YmRhNWY0NCcsIGJyYW5jaD0nbWFzdGVyJyksIHNlbGYuc3Rhc2hfcmVwb3NpdG9y
eS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhODRmJywgYnJhbmNoPSdtYXN0ZXInKV0sCi0gICAg
ICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lk
PSdzYWZhcmknLCBicmFuY2g9J21hc3RlcicsIGxpbWl0PTIpLAotICAgICAgICApCisgICAgICAg
IHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQo
KToKKyAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJh
PWNhc3NhbmRyYSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNl
KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKHNlbGYuZGF0YWJhc2UuZmlu
ZF9jb21taXRzX2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFpbicp
KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW3NlbGYu
c3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdkOGJjZTI2ZmE2NWMnKSwgc2VsZi5z
dGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2JhZTVkMWU5MDk5OScpXSwKKyAgICAg
ICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5
X2lkPSdzYWZhcmknLCBicmFuY2g9J21haW4nLCBsaW1pdD0yKSwKKyAgICAgICAgICAgICkKIAog
ICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1G
YWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAg
IGRlZiB0ZXN0X2FsbF9jb21taXRzX3N2bihzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2Fu
ZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9
cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRz
X3RvX2RhdGFiYXNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4oc2VsZi5kYXRh
YmFzZS5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNo
PSd0cnVuaycpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxm
LnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0LCBicmFuY2g9J3RydW5rJyks
IHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yMzY1NDMsIGJyYW5jaD0ndHJ1
bmsnKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShy
ZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgbGltaXQ9MiksCi0gICAgICAg
ICkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0
b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlz
LCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNf
dG9fZGF0YWJhc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsZW4oc2VsZi5k
YXRhYmFzZS5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJh
bmNoPSd0cnVuaycpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICAgICAgW3NlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD02KSwgc2VsZi5zdm5f
cmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTQpXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRh
dGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFu
Y2g9J3RydW5rJywgbGltaXQ9MiksCisgICAgICAgICAgICApCiAKICAgICBAV2FpdEZvckRvY2tl
clRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBt
b2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9zdGFzaF9j
b21taXRzX2luX3JhbmdlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2Fu
ZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fz
c2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJh
c2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgW3NlbGYuc3Rhc2hf
cmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdiYjZiZGE1ZjQ0JywgYnJhbmNoPSdtYXN0ZXIn
KSwgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE4NGYnLCBi
cmFuY2g9J21hc3RlcicpXSwKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRz
X2luX3JhbmdlKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFzdGVyJywgYmVnaW49
MTUzNzgwOTgxOCwgZW5kPTE1Mzc4MTAyODEpLAotICAgICAgICApCisgICAgICAgIHdpdGggTW9j
a01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAg
ICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRy
YSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW3NlbGYuc3Rhc2hfcmVw
b3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdiYWU1ZDFlOTA5OTknKSwgc2VsZi5zdGFzaF9yZXBv
c2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzFhYmUyNWI0NDNlOScpXSwKKyAgICAgICAgICAgICAg
ICBzZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSdzYWZh
cmknLCBicmFuY2g9J21haW4nLCBiZWdpbj0xNjAxNjYzMDAwLCBlbmQ9MTYwMTY2ODAwMCksCisg
ICAgICAgICAgICApCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9j
a2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2Fu
ZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9zdm5fY29tbWl0c19pbl9yYW5nZShzZWxmLCByZWRp
cz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBzZWxm
LmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAgICAg
IHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9
MjM2NTQ0LCBicmFuY2g9J3RydW5rJyksIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9p
ZChpZD0yMzY1NDMsIGJyYW5jaD0ndHJ1bmsnKV0sCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNl
LmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3Ry
dW5rJywgYmVnaW49MTUzODA1MDQ1OCwgZW5kPTE1MzgwNTI0MDgpLAotICAgICAgICApCisgICAg
ICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJr
aXQoKToKKyAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFi
YXNlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW3Nl
bGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD02KSwgc2VsZi5zdm5fcmVwb3NpdG9y
eS5jb21taXRfZm9yX2lkKGlkPTQpXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZp
bmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5r
JywgYmVnaW49MTYwMTYzNzkwMCwgZW5kPTE2MDE2Mzk5MDApLAorICAgICAgICAgICAgKQogCiAg
ICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZh
a2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAg
ZGVmIHRlc3Rfc3Rhc2hfY29tbWl0c19iZXR3ZWVuKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBj
YXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShy
ZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxsX2Nv
bW1pdHNfdG9fZGF0YWJhc2UoKQotCi0gICAgICAgIGNvbW1pdHMgPSBbCi0gICAgICAgICAgICBz
ZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWYnLCBicmFuY2g9
J21hc3RlcicpLAotICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3Jf
aWQoaWQ9JzMzNjYxMGE4JywgYnJhbmNoPSdtYXN0ZXInKSwKLSAgICAgICAgICAgIHNlbGYuc3Rh
c2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhNCcsIGJyYW5jaD0nbWFzdGVy
JyksCi0gICAgICAgIF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRzLCBzZWxmLmRh
dGFiYXNlLmZpbmRfY29tbWl0c19pbl9yYW5nZShyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBicmFu
Y2g9J21hc3RlcicsICBiZWdpbj1jb21taXRzWy0xXSwgZW5kPWNvbW1pdHNbMF0pKQorICAgICAg
ICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0
KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRy
YT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFz
ZSgpCisKKyAgICAgICAgICAgIGNvbW1pdHMgPSBbCisgICAgICAgICAgICAgICAgc2VsZi5zdGFz
aF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzFhYmUyNWI0NDNlOScpLAorICAgICAgICAg
ICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdmZmY4M2JiMmQ5
MTcnKSwKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9p
ZChpZD0nOWI4MzExZjI1YTc3JyksCisgICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNvbW1pdHMsIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2luX3JhbmdlKHJl
cG9zaXRvcnlfaWQ9J3NhZmFyaScsIGJyYW5jaD0nbWFpbicsICBiZWdpbj1jb21taXRzWy0xXSwg
ZW5kPWNvbW1pdHNbMF0pKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25v
X2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nh
c3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3Rfc3ZuX2NvbW1pdHNfYmV0d2VlbihzZWxmLCBy
ZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBz
ZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAg
ICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLQotICAgICAgICBjb21taXRz
ID0gWwotICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIz
NjU0NCwgYnJhbmNoPSd0cnVuaycpLAotICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5j
b21taXRfZm9yX2lkKGlkPTIzNjU0MywgYnJhbmNoPSd0cnVuaycpLAotICAgICAgICAgICAgc2Vs
Zi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MiwgYnJhbmNoPSd0cnVuaycp
LAotICAgICAgICBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0cywgc2VsZi5kYXRh
YmFzZS5maW5kX2NvbW1pdHNfaW5fcmFuZ2UocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNo
PSd0cnVuaycsIGJlZ2luPWNvbW1pdHNbLTFdLCBlbmQ9Y29tbWl0c1swXSkpCisgICAgICAgIHdp
dGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToK
KyAgICAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNh
c3NhbmRyYSkKKyAgICAgICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkK
KworICAgICAgICAgICAgY29tbWl0cyA9IFsKKyAgICAgICAgICAgICAgICBzZWxmLnN2bl9yZXBv
c2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9NiksCisgICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVw
b3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTQpLAorICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3Jl
cG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0yKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0cywgc2VsZi5kYXRhYmFzZS5maW5kX2NvbW1pdHNfaW5f
cmFuZ2UocmVwb3NpdG9yeV9pZD0nd2Via2l0JywgYnJhbmNoPSd0cnVuaycsIGJlZ2luPWNvbW1p
dHNbLTFdLCBlbmQ9Y29tbWl0c1swXSkpCiAKICAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1v
Y2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2NrX2Nhc3NhbmRy
YT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9jb21taXRfZnJvbV9zdGFzaF9y
ZXBvKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6
Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3Nh
bmRyYSkKLSAgICAgICAgc2VsZi5kYXRhYmFzZS5yZWdpc3Rlcl9jb21taXRfd2l0aF9yZXBvX2Fu
ZF9pZCgnc2FmYXJpJywgJ21hc3RlcicsICdiYjZiZGE1ZjQ0JykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKLSAgICAgICAgICAgIFtzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9p
ZChpZD0nYmI2YmRhNWY0NCcsIGJyYW5jaD0nbWFzdGVyJyldLAotICAgICAgICAgICAgc2VsZi5k
YXRhYmFzZS5maW5kX2NvbW1pdHNfYnlfaWQocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNo
PSdtYXN0ZXInLCBjb21taXRfaWQ9J2JiNmJkYTVmNDQnKSwKLSAgICAgICAgKQorICAgICAgICB3
aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6
CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1j
YXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbW1pdF93aXRo
X3JlcG9fYW5kX2lkKCdzYWZhcmknLCAnbWFpbicsICdkOGJjZTI2ZmE2NWMnKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbc2VsZi5zdGFzaF9yZXBvc2l0
b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2Q4YmNlMjZmYTY1YycpXSwKKyAgICAgICAgICAgICAgICBz
ZWxmLmRhdGFiYXNlLmZpbmRfY29tbWl0c19ieV9pZChyZXBvc2l0b3J5X2lkPSdzYWZhcmknLCBi
cmFuY2g9J21haW4nLCBjb21taXRfaWQ9J2Q4YmNlMjZmYTY1YycpLAorICAgICAgICAgICAgKQog
CiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlz
PUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAg
ICAgZGVmIHRlc3RfY29tbWl0X2Zyb21fc3ZuX3JlcG8oc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMs
IGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNl
KHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBzZWxmLmRhdGFiYXNl
LnJlZ2lzdGVyX2NvbW1pdF93aXRoX3JlcG9fYW5kX2lkKCd3ZWJraXQnLCAndHJ1bmsnLCAyMzY1
NDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBbc2VsZi5zdm5fcmVw
b3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0NCwgYnJhbmNoPSd0cnVuaycpXSwKLSAgICAg
ICAgICAgIHNlbGYuZGF0YWJhc2UuZmluZF9jb21taXRzX2J5X2lkKHJlcG9zaXRvcnlfaWQ9J3dl
YmtpdCcsIGJyYW5jaD0ndHJ1bmsnLCBjb21taXRfaWQ9MjM2NTQ0KSwKLSAgICAgICAgKQorICAg
ICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Vi
a2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3Nh
bmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnJlZ2lzdGVyX2NvbW1p
dF93aXRoX3JlcG9fYW5kX2lkKCd3ZWJraXQnLCAndHJ1bmsnLCA2KQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21t
aXRfZm9yX2lkKGlkPTYpXSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLmZpbmRfY29t
bWl0c19ieV9pZChyZXBvc2l0b3J5X2lkPSd3ZWJraXQnLCBicmFuY2g9J3RydW5rJywgY29tbWl0
X2lkPTYpLAorICAgICAgICAgICAgKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2Nr
X2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9
TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfYnJhbmNoZXMoc2VsZiwgcmVkaXM9
U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgc2VsZi5p
bml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQotICAgICAgICBz
ZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoWydtYXN0ZXInLCAnc2FmYXJpLTYwNi1icmFuY2gnXSwgc2VsZi5kYXRhYmFzZS5icmFuY2hl
cyhyZXBvc2l0b3J5X2lkPSdzYWZhcmknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ3Nh
ZmFyaS02MDYtYnJhbmNoJywgJ3RydW5rJ10sIHNlbGYuZGF0YWJhc2UuYnJhbmNoZXMocmVwb3Np
dG9yeV9pZD0nd2Via2l0JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydzYWZhcmktNjA2
LWJyYW5jaCddLCBzZWxmLmRhdGFiYXNlLmJyYW5jaGVzKHJlcG9zaXRvcnlfaWQ9J3NhZmFyaScs
IGJyYW5jaD0nc2FmYXJpJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydzYWZhcmktNjA2
LWJyYW5jaCddLCBzZWxmLmRhdGFiYXNlLmJyYW5jaGVzKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcs
IGJyYW5jaD0nc2FmYXJpLTYwNi1icmFuY2gnKSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0
b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgc2Vs
Zi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAg
ICAgICAgc2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChbJ2JyYW5jaC1hJywgJ2JyYW5jaC1iJywgJ21haW4nXSwgc2VsZi5kYXRh
YmFzZS5icmFuY2hlcyhyZXBvc2l0b3J5X2lkPSdzYWZhcmknKSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgWydicmFuY2gtYScsICdicmFuY2gtYicsICd0
YWdzL3RhZy0xJywgJ3RhZ3MvdGFnLTInLCAndHJ1bmsnXSwKKyAgICAgICAgICAgICAgICBzZWxm
LmRhdGFiYXNlLmJyYW5jaGVzKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcpLAorICAgICAgICAgICAg
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ2JyYW5jaC1hJywgJ2JyYW5jaC1iJ10s
IHNlbGYuZGF0YWJhc2UuYnJhbmNoZXMocmVwb3NpdG9yeV9pZD0nc2FmYXJpJywgYnJhbmNoPSdi
cmFuY2gnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydicmFuY2gtYSddLCBzZWxm
LmRhdGFiYXNlLmJyYW5jaGVzKHJlcG9zaXRvcnlfaWQ9J3dlYmtpdCcsIGJyYW5jaD0nYnJhbmNo
LWEnKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9j
a19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250
ZXh0KQogICAgIGRlZiB0ZXN0X25leHRfY29tbWl0KHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBj
YXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShy
ZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgc2VsZi5hZGRfYWxsX2Nv
bW1pdHNfdG9fZGF0YWJhc2UoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAg
ICAgICBzZWxmLmRhdGFiYXNlLm5leHRfY29tbWl0KHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0
X2Zvcl9pZChpZD0yMzY1NDIpKSwKLSAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29t
bWl0X2Zvcl9pZChpZD0yMzY1NDMpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLm5leHRfY29tbWl0KHNlbGYuc3Rhc2hfcmVw
b3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhNDBjM2ZlY2I3Mjg4NzFlMTJjYTMxNDgy
Y2E3MTViMzgzJykpLAotICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9m
b3JfaWQoaWQ9JzMzNjYxMGE4NGZkY2YxNGRkY2YxZGI2NTA3NWFmOTU0ODA1MTZmZGEnKSwKLSAg
ICAgICAgKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2Rl
bEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9
cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29t
bWl0c190b19kYXRhYmFzZSgpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5uZXh0X2NvbW1pdChzZWxmLnN2bl9yZXBvc2l0b3J5
LmNvbW1pdF9mb3JfaWQoaWQ9NCkpLAorICAgICAgICAgICAgICAgIHNlbGYuc3ZuX3JlcG9zaXRv
cnkuY29tbWl0X2Zvcl9pZChpZD02KSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5uZXh0X2NvbW1pdChz
ZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmFlNWQxZTkwOTk5JykpLAor
ICAgICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdk
OGJjZTI2ZmE2NWMnKSwKKyAgICAgICAgICAgICkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENh
c2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fz
c2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X3ByZXZpb3VzX2NvbW1p
dChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgot
ICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5k
cmEpCi0gICAgICAgIHNlbGYuYWRkX2FsbF9jb21taXRzX3RvX2RhdGFiYXNlKCkKLQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21t
aXRfZm9yX2lkKGlkPTIzNjU0MiksCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnByZXZpb3Vz
X2NvbW1pdChzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQzKSksCi0g
ICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNlbGYuc3Rh
c2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSczMzY2MTBhNDBjM2ZlY2I3Mjg4NzFlMTJj
YTMxNDgyY2E3MTViMzgzJyksCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnByZXZpb3VzX2Nv
bW1pdChzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nMzM2NjEwYTg0ZmRj
ZjE0ZGRjZjFkYjY1MDc1YWY5NTQ4MDUxNmZkYScpKSwKLSAgICAgICAgKQorICAgICAgICB3aXRo
IE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6Cisg
ICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNz
YW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRhYmFzZSgpCisK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VsZi5zdm5f
cmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTQpLAorICAgICAgICAgICAgICAgIHNlbGYuZGF0
YWJhc2UucHJldmlvdXNfY29tbWl0KHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChp
ZD02KSksCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdiYWU1
ZDFlOTA5OTknKSwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnByZXZpb3VzX2NvbW1p
dChzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nZDhiY2UyNmZhNjVjJykp
LAorICAgICAgICAgICAgKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25v
X2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nh
c3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3Rfc2libGluZ19jb21taXRzKHNlbGYsIHJlZGlz
PVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYu
aW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAg
c2VsZi5hZGRfYWxsX2NvbW1pdHNfdG9fZGF0YWJhc2UoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCi0gICAgICAgICAgICBzZWxmLmRhdGFiYXNlLnNpYmxpbmdfY29tbWl0cyhzZWxmLnN2
bl9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQyKSwgWydzYWZhcmknXSksCi0gICAg
ICAgICAgICB7J3NhZmFyaSc6IFtzZWxmLnN0YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChp
ZD0nYmI2YmRhNWY0NGRkMjRkMGI1NDUzOWI4ZmY2ZThjMTdmNTE5MjQ5YScpXX0sCi0gICAgICAg
ICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2Uu
c2libGluZ19jb21taXRzKHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSdi
YjZiZGE1ZjQ0ZGQyNGQwYjU0NTM5YjhmZjZlOGMxN2Y1MTkyNDlhJyksIFsnd2Via2l0J10pLAot
ICAgICAgICAgICAgeyd3ZWJraXQnOiBbCi0gICAgICAgICAgICAgICAgc2VsZi5zdm5fcmVwb3Np
dG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0NCksCi0gICAgICAgICAgICAgICAgc2VsZi5zdm5f
cmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MyksCi0gICAgICAgICAgICAgICAgc2Vs
Zi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MiksCi0gICAgICAgICAgICAg
ICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MSksCi0gICAgICAg
ICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTIzNjU0MCksCi0g
ICAgICAgICAgICBdfSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAg
ICAgICAgICAgc2VsZi5kYXRhYmFzZS5zaWJsaW5nX2NvbW1pdHMoc2VsZi5zdGFzaF9yZXBvc2l0
b3J5LmNvbW1pdF9mb3JfaWQoaWQ9JzMzNjYxMGE4NGZkY2YxNGRkY2YxZGI2NTA3NWFmOTU0ODA1
MTZmZGEnKSwgWyd3ZWJraXQnXSksCi0gICAgICAgICAgICB7J3dlYmtpdCc6IFtdfSwKLSAgICAg
ICAgKQotCi0gICAgZGVmIHRlc3RfdXVpZF9mb3JfY29tbWl0cyhzZWxmKToKLSAgICAgICAgdXVp
ZCA9IENvbW1pdENvbnRleHQudXVpZF9mb3JfY29tbWl0cyhbTW9ja1N0YXNoUmVwb3NpdG9yeS5z
YWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSdiYjZiZGE1ZicpLCBNb2NrU1ZOUmVwb3NpdG9yeS53
ZWJraXQoKS5jb21taXRfZm9yX2lkKGlkPTIzNjU0NCldKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHV1aWQsIDE1MzgwNTI0MDgwMCkKKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAg
ICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Vi
a2l0KCk6CisgICAgICAgICAgICBzZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3Nh
bmRyYT1jYXNzYW5kcmEpCisgICAgICAgICAgICBzZWxmLmFkZF9hbGxfY29tbWl0c190b19kYXRh
YmFzZSgpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAg
c2VsZi5kYXRhYmFzZS5zaWJsaW5nX2NvbW1pdHMoc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRf
Zm9yX2lkKGlkPTYpLCBbJ3NhZmFyaSddKSwKKyAgICAgICAgICAgICAgICB7J3NhZmFyaSc6IFsK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQo
aWQ9J2Q4YmNlMjZmYTY1YycpLAorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXNoX3JlcG9z
aXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nYmFlNWQxZTkwOTk5JyksCisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPScxYWJlMjViNDQzZTkn
KSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBvc2l0b3J5LmNvbW1pdF9mb3Jf
aWQoaWQ9J2ZmZjgzYmIyZDkxNycpLAorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXNoX3Jl
cG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nOWI4MzExZjI1YTc3JyksCisKKyAgICAgICAgICAg
ICAgICBdfSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5zaWJsaW5nX2NvbW1pdHMoc2VsZi5zdGFzaF9y
ZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2Q4YmNlMjZmYTY1YycpLCBbJ3dlYmtpdCddKSwK
KyAgICAgICAgICAgICAgICB7J3dlYmtpdCc6IFtzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9m
b3JfaWQoaWQ9NildfSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS5zaWJsaW5nX2NvbW1pdHMoc2VsZi5z
dm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTEpLCBbJ3NhZmFyaSddKSwKKyAgICAgICAg
ICAgICAgICB7J3NhZmFyaSc6IFtdfSwKKyAgICAgICAgICAgICkKKworICAgIEBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMs
IG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQorICAgIGRlZiB0ZXN0X3V1aWRf
Zm9yX2NvbW1pdHMoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFD
b250ZXh0KToKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9k
ZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlz
PXJlZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgdXVpZCA9IENvbW1pdENv
bnRleHQudXVpZF9mb3JfY29tbWl0cyhbCisgICAgICAgICAgICAgICAgc2VsZi5zdGFzaF9yZXBv
c2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9J2JhZTVkMWU5MDk5OScpLAorICAgICAgICAgICAgICAg
IHNlbGYuc3ZuX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD02KSwKKyAgICAgICAgICAgIF0p
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV1aWQsIDE2MDE2NjgwMDAwMCkKIAogICAg
IEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtl
U3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRl
ZiB0ZXN0X2JyYW5jaF9rZXlzX2Zvcl9jb21taXRzKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBj
YXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShy
ZWRpcz1yZWRpcywgY2Fzc2FuZHJhPWNhc3NhbmRyYSkKLSAgICAgICAgYnJhbmNoZXMgPSBzZWxm
LmRhdGFiYXNlLmJyYW5jaF9rZXlzX2Zvcl9jb21taXRzKFsKLSAgICAgICAgICAgIE1vY2tTdGFz
aFJlcG9zaXRvcnkuc2FmYXJpKCkuY29tbWl0X2Zvcl9pZChpZD0nYmI2YmRhNWYnKSwKLSAgICAg
ICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0
KSwKLSAgICAgICAgXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChicmFuY2hlcywgWydkZWZh
dWx0J10pCi0KLSAgICAgICAgYnJhbmNoZXMgPSBzZWxmLmRhdGFiYXNlLmJyYW5jaF9rZXlzX2Zv
cl9jb21taXRzKFsKLSAgICAgICAgICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKCkuY29t
bWl0X2Zvcl9pZChpZD0nNzkyNTZjMzInLCBicmFuY2g9J3NhZmFyaS02MDYtYnJhbmNoJyksCi0g
ICAgICAgICAgICBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKGlkPTIz
NjU0NCksCi0gICAgICAgIF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnJhbmNoZXMsIFsn
c2FmYXJpLTYwNi1icmFuY2gnXSkKLQotICAgICAgICBicmFuY2hlcyA9IHNlbGYuZGF0YWJhc2Uu
YnJhbmNoX2tleXNfZm9yX2NvbW1pdHMoWwotICAgICAgICAgICAgTW9ja1N0YXNoUmVwb3NpdG9y
eS5zYWZhcmkoKS5jb21taXRfZm9yX2lkKGlkPSc3OTI1NmMzMicsIGJyYW5jaD0nc2FmYXJpLTYw
Ni1icmFuY2gnKSwKLSAgICAgICAgICAgIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1p
dF9mb3JfaWQoaWQ9MjM2MzM1LCBicmFuY2g9J3NhZmFyaS02MDYtYnJhbmNoJyksCi0gICAgICAg
IF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnJhbmNoZXMsIFsnc2FmYXJpLTYwNi1icmFu
Y2gnXSkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxG
YWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJl
ZGlzLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKQorICAgICAgICAgICAgYnJhbmNoZXMgPSBzZWxmLmRh
dGFiYXNlLmJyYW5jaF9rZXlzX2Zvcl9jb21taXRzKFsKKyAgICAgICAgICAgICAgICBzZWxmLnN0
YXNoX3JlcG9zaXRvcnkuY29tbWl0X2Zvcl9pZChpZD0nZDhiY2UyNmZhNjVjJyksCisgICAgICAg
ICAgICAgICAgc2VsZi5zdm5fcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTYpLAorICAgICAg
ICAgICAgXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnJhbmNoZXMsIFsnZGVmYXVs
dCddKQorCisgICAgICAgICAgICBicmFuY2hlcyA9IHNlbGYuZGF0YWJhc2UuYnJhbmNoX2tleXNf
Zm9yX2NvbW1pdHMoWworICAgICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21t
aXRfZm9yX2lkKGlkPSc2MjE2NTJhZGQ3ZmMnKSwKKyAgICAgICAgICAgICAgICBzZWxmLnN2bl9y
ZXBvc2l0b3J5LmNvbW1pdF9mb3JfaWQoaWQ9NyksCisgICAgICAgICAgICBdKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChicmFuY2hlcywgWydicmFuY2gtYSddKQorCisgICAgICAgICAg
ICBicmFuY2hlcyA9IHNlbGYuZGF0YWJhc2UuYnJhbmNoX2tleXNfZm9yX2NvbW1pdHMoWworICAg
ICAgICAgICAgICAgIHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPSc3OTA3
MjVhNmQ3OWUnKSwKKyAgICAgICAgICAgICAgICBzZWxmLnN2bl9yZXBvc2l0b3J5LmNvbW1pdF9m
b3JfaWQoaWQ9OCksCisgICAgICAgICAgICBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChicmFuY2hlcywgWydicmFuY2gtYiddKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5t
b2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5k
cmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfY29tbWl0X3VybChzZWxmLCBy
ZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgotICAgICAgICBz
ZWxmLmluaXRfZGF0YWJhc2UocmVkaXM9cmVkaXMsIGNhc3NhbmRyYT1jYXNzYW5kcmEpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAnaHR0cHM6Ly9mYWtlLXN0YXNoLWlu
c3RhbmNlLmFwcGxlLmNvbS9wcm9qZWN0cy9CUk9XU0VSL3JlcG9zL3NhZmFyaS9jb21taXRzL2Ji
NmJkYTVmNDRkZDI0ZDBiNTQ1MzliOGZmNmU4YzE3ZjUxOTI0OWEnLAotICAgICAgICAgICAgc2Vs
Zi5kYXRhYmFzZS51cmwoTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkoKS5jb21taXRfZm9yX2lk
KGlkPSdiYjZiZGE1ZicpKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAot
ICAgICAgICAgICAgJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzY1NDQvd2Vi
a2l0JywKLSAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UudXJsKE1vY2tTVk5SZXBvc2l0b3J5Lndl
YmtpdCgpLmNvbW1pdF9mb3JfaWQoaWQ9MjM2NTQ0KSksCi0gICAgICAgICkKKyAgICAgICAgd2l0
aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgor
ICAgICAgICAgICAgc2VsZi5pbml0X2RhdGFiYXNlKHJlZGlzPXJlZGlzLCBjYXNzYW5kcmE9Y2Fz
c2FuZHJhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAn
aHR0cHM6Ly9iaXRidWNrZXQuZXhhbXBsZS5jb20vcHJvamVjdHMvU0FGQVJJL3JlcG9zL3NhZmFy
aS9jb21taXRzL2Q4YmNlMjZmYTY1YzZmYzhmMzljMTc5MjdhYmI3N2Y2OWZhYjgyZmMnLAorICAg
ICAgICAgICAgICAgIHNlbGYuZGF0YWJhc2UudXJsKHNlbGYuc3Rhc2hfcmVwb3NpdG9yeS5jb21t
aXRfZm9yX2lkKGlkPSdkOGJjZTI2ZmE2NWMnKSksCisgICAgICAgICAgICApCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICdodHRwczovL2NvbW1pdHMud2Vi
a2l0Lm9yZy9yNicsCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhYmFzZS51cmwoc2VsZi5zdm5f
cmVwb3NpdG9yeS5jb21taXRfZm9yX2lkKGlkPTYpKSwKKyAgICAgICAgICAgICkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1
cmVfY29udGV4dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJh
cmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9mYWlsdXJlX2NvbnRleHRfdW5pdHRl
c3QucHkJKHJldmlzaW9uIDI3NDA3OSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL2ZhaWx1cmVfY29udGV4dF91bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMCwxNiArMjAsMTIgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAotaW1wb3J0IHRpbWUKLQogZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwog
ZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKIGZyb20gcmVzdWx0c2RicHkuY29udHJvbGxl
ci5jb25maWd1cmF0aW9uIGltcG9ydCBDb25maWd1cmF0aW9uCiBmcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3Vs
dHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFD
b250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQg
TW9ja01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkg
aW1wb3J0IE1vY2tTVk5SZXBvc2l0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnRlc3RfY29u
dGV4dCBpbXBvcnQgRXhwZWN0YXRpb25zCiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9y
X2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQogCiAKQEAgLTM3
LDIzICszMywyNCBAQCBjbGFzcyBGYWlsdXJlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlCiAg
ICAgS0VZU1BBQ0UgPSAnZmFpbHVyZV9jb250ZXh0X3Rlc3Rfa2V5c3BhY2UnCiAKICAgICBkZWYg
aW5pdF9kYXRhYmFzZShzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRy
YUNvbnRleHQpOgotICAgICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxm
LktFWVNQQUNFKQotICAgICAgICBzZWxmLm1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUo
cmVkaXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNF
LCBjcmVhdGVfa2V5c3BhY2U9VHJ1ZSkpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21v
Y2tfcmVzdWx0cyhzZWxmLm1vZGVsLCB0ZXN0X3Jlc3VsdHM9ZGljdCgKLSAgICAgICAgICAgIGRl
dGFpbHM9ZGljdChsaW5rPSdkdW1teS1saW5rJyksCi0gICAgICAgICAgICBydW5fc3RhdHM9ZGlj
dCh0ZXN0c19za2lwcGVkPTApLAotICAgICAgICAgICAgcmVzdWx0cz17Ci0gICAgICAgICAgICAg
ICAgJ2Zhc3QnOiB7Ci0gICAgICAgICAgICAgICAgICAgICdlbmNvZGluZyc6IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICdjc3MtY2FjaGVkLWJvbS5odG1sJzogZGljdChleHBlY3RlZD0nUEFT
UycsIGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdj
c3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJzogZGljdChleHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0n
RkFJTCcsIHRpbWU9MS4yKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdjc3MtY2hhcnNldC5o
dG1sJzogZGljdChleHBlY3RlZD0nRkFJTCcsIGFjdHVhbD0nUEFTUycsIHRpbWU9MS4yKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICdjc3MtbGluay1jaGFyc2V0Lmh0bWwnOiBkaWN0KGV4cGVj
dGVkPSdQQVNTJywgYWN0dWFsPSdQQVNTJywgdGltZT0xLjIpLAorICAgICAgICB3aXRoIE1vY2tN
b2RlbEZhY3Rvcnkuc2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAg
ICAgICBjYXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxmLktFWVNQQUNFKQorICAg
ICAgICAgICAgc2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlz
KCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tl
eXNwYWNlPVRydWUpKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1
bHRzKHNlbGYubW9kZWwsIHRlc3RfcmVzdWx0cz1kaWN0KAorICAgICAgICAgICAgICAgIGRldGFp
bHM9ZGljdChsaW5rPSdkdW1teS1saW5rJyksCisgICAgICAgICAgICAgICAgcnVuX3N0YXRzPWRp
Y3QodGVzdHNfc2tpcHBlZD0wKSwKKyAgICAgICAgICAgICAgICByZXN1bHRzPXsKKyAgICAgICAg
ICAgICAgICAgICAgJ2Zhc3QnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnZW5jb2Rpbmcn
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1jYWNoZWQtYm9tLmh0bWwnOiBk
aWN0KGV4cGVjdGVkPSdQQVNTJywgYWN0dWFsPSdGQUlMJywgdGltZT0xLjIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdjc3MtY2hhcnNldC1kZWZhdWx0LnhodG1sJzogZGljdChleHBl
Y3RlZD0nRkFJTCcsIGFjdHVhbD0nRkFJTCcsIHRpbWU9MS4yKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnY3NzLWNoYXJzZXQuaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J0ZBSUwnLCBhY3R1
YWw9J1BBU1MnLCB0aW1lPTEuMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nzcy1s
aW5rLWNoYXJzZXQuaHRtbCc6IGRpY3QoZXhwZWN0ZWQ9J1BBU1MnLCBhY3R1YWw9J1BBU1MnLCB0
aW1lPTEuMiksCisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICApKQotICAgICAg
ICBNb2NrTW9kZWxGYWN0b3J5LnByb2Nlc3NfcmVzdWx0cyhzZWxmLm1vZGVsKQorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICApKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5w
cm9jZXNzX3Jlc3VsdHMoc2VsZi5tb2RlbCkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2Uu
bW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2Fu
ZHJhPU1vY2tDYXNzYW5kcmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2ZhaWx1cmVzX2NvbGxhcHNl
ZChzZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgpA
QCAtNjQsNyArNjEsNyBAQCBjbGFzcyBGYWlsdXJlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRl
CiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgMikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLCBzZXQoWydmYXN0L2VuY29kaW5nL2Nz
cy1jYWNoZWQtYm9tLmh0bWwnLCAnZmFzdC9lbmNvZGluZy9jc3MtY2hhcnNldC1kZWZhdWx0Lnho
dG1sJ10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMsIHsnZmFzdC9lbmNvZGlu
Zy9jc3MtY2FjaGVkLWJvbS5odG1sJywgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVs
dC54aHRtbCd9KQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2RvY2tl
cihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3NhbmRy
YUNvbnRleHQpCiAgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9mYWlsdXJlc19jb2xsYXBzZWQoc2Vs
ZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKQEAgLTc1
LDcgKzcyLDcgQEAgY2xhc3MgRmFpbHVyZUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZQogICAg
ICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDEpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cywgc2V0KFsnZmFzdC9lbmNvZGluZy9jc3MtY2Fj
aGVkLWJvbS5odG1sJ10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMsIHsnZmFz
dC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJ30pCiAKICAgICBAV2FpdEZvckRvY2tlclRl
c3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2Nr
X2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKICAgICBkZWYgdGVzdF9mYWlsdXJlcyhz
ZWxmLCByZWRpcz1TdHJpY3RSZWRpcywgY2Fzc2FuZHJhPUNhc3NhbmRyYUNvbnRleHQpOgpAQCAt
OTEsNyArODgsNyBAQCBjbGFzcyBGYWlsdXJlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlCiAg
ICAgICAgICAgICAnZmFzdC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJzogJ0ZBSUwnLAog
ICAgICAgICAgICAgJ2Zhc3QvZW5jb2RpbmcvY3NzLWNoYXJzZXQtZGVmYXVsdC54aHRtbCc6ICdG
QUlMJywKICAgICAgICAgICAgICdzdGFydF90aW1lJzogbGlzdChyZXN1bHRzLnZhbHVlcygpKVsw
XVswXVsnc3RhcnRfdGltZSddLAotICAgICAgICAgICAgJ3V1aWQnOiAxNTM4MDI5NDc5MDAKKyAg
ICAgICAgICAgICd1dWlkJzogMTYwMTY2MDAwMDAwCiAgICAgICAgIH0pCiAKICAgICBAV2FpdEZv
ckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJl
ZGlzLCBtb2NrX2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKQEAgLTEwNywxNSArMTA0
LDE2IEBAIGNsYXNzIEZhaWx1cmVDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGUKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobGlzdChyZXN1bHRzLnZhbHVlcygpKVswXSwga2V5PWxh
bWJkYSB2YWx1ZTogdmFsdWVbJ3V1aWQnXSlbMF0sIHsKICAgICAgICAgICAgICdmYXN0L2VuY29k
aW5nL2Nzcy1jYWNoZWQtYm9tLmh0bWwnOiAnRkFJTCcsCiAgICAgICAgICAgICAnc3RhcnRfdGlt
ZSc6IGxpc3QocmVzdWx0cy52YWx1ZXMoKSlbMF1bMF1bJ3N0YXJ0X3RpbWUnXSwKLSAgICAgICAg
ICAgICd1dWlkJzogMTUzODAyOTQ3OTAwCisgICAgICAgICAgICAndXVpZCc6IDE2MDE2NjAwMDAw
MAogICAgICAgICB9KQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0Q2FzZS5tb2NrX2lmX25vX2Rv
Y2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19jYXNzYW5kcmE9TW9ja0Nhc3Nh
bmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3Rfbm9fZmFpbHVyZXMoc2VsZiwgcmVkaXM9U3RyaWN0
UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgY2Fzc2FuZHJhLmRy
b3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAgICAgc2VsZi5tb2RlbCA9
IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5k
cmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAgICAg
ICBNb2NrTW9kZWxGYWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMoc2VsZi5tb2RlbCkKLSAgICAgICAg
TW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMoc2VsZi5tb2RlbCkKKyAgICAgICAgd2l0
aCBNb2NrTW9kZWxGYWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgor
ICAgICAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFD
RSkKKyAgICAgICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRp
cz1yZWRpcygpLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNy
ZWF0ZV9rZXlzcGFjZT1UcnVlKSkKKyAgICAgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21v
Y2tfcmVzdWx0cyhzZWxmLm1vZGVsKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9j
ZXNzX3Jlc3VsdHMoc2VsZi5tb2RlbCkKICAgICAgICAgcmVzdWx0cyA9IHNlbGYubW9kZWwuZmFp
bHVyZV9jb250ZXh0LmZhaWx1cmVzX2J5X2NvbW1pdCgKICAgICAgICAgICAgIGNvbmZpZ3VyYXRp
b25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdNYWMnLCBzdHlsZT0nUmVsZWFzZScsIGZsYXZv
cj0nd2sxJyldLAogICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsIHJlY2VudD1UcnVl
LCBjb2xsYXBzZWQ9RmFsc2UsIHVuZXhwZWN0ZWQ9RmFsc2UsCkluZGV4OiBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2NrX21vZGVsX2ZhY3Rv
cnkucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvbW9kZWwvbW9ja19tb2RlbF9mYWN0b3J5LnB5CShyZXZpc2lvbiAyNzQwNzkp
CisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9tb2NrX21vZGVsX2ZhY3RvcnkucHkJKHdvcmtpbmcgY29weSkKQEAgLTI0LDExICsyNCwxMiBA
QCBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgaW8KIGltcG9ydCB0aW1lCiAKLWltcG9ydCBjYWxlbmRh
cgogZnJvbSByZXN1bHRzZGJweS5jb250cm9sbGVyLmNvbmZpZ3VyYXRpb24gaW1wb3J0IENvbmZp
Z3VyYXRpb24KIGZyb20gcmVzdWx0c2RicHkubW9kZWwuY29uZmlndXJhdGlvbl9jb250ZXh0X3Vu
aXR0ZXN0IGltcG9ydCBDb25maWd1cmF0aW9uQ29udGV4dFRlc3QKLWZyb20gcmVzdWx0c2RicHku
bW9kZWwubW9ja19yZXBvc2l0b3J5IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZO
UmVwb3NpdG9yeQogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2RlbCBpbXBvcnQgTW9kZWwKK2Zy
b20gcmVzdWx0c2RicHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQgU3Rhc2hSZXBvc2l0b3J5LCBX
ZWJLaXRSZXBvc2l0b3J5CisKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IG1vY2tzCiAKIAogY2xh
c3MgTW9ja01vZGVsRmFjdG9yeShvYmplY3QpOgpAQCAtNjAsMjkgKzYxLDQwIEBAIGNsYXNzIE1v
Y2tNb2RlbEZhY3Rvcnkob2JqZWN0KToKICAgICBUSFJFRV9XRUVLUyA9IDYwICogNjAgKiAyNCAq
IDIxCiAKICAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2FmYXJpKGNscyk6CisgICAgICAgIHJl
dHVybiBtb2Nrcy5yZW1vdGUuQml0QnVja2V0KHJlbW90ZT0nYml0YnVja2V0LmV4YW1wbGUuY29t
L3Byb2plY3RzL1NBRkFSSS9yZXBvcy9zYWZhcmknKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAg
ZGVmIHdlYmtpdChjbHMpOgorICAgICAgICByZXR1cm4gbW9ja3MucmVtb3RlLlN2bihyZW1vdGU9
J3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0JykKKworICAgIEBjbGFzc21ldGhvZAog
ICAgIGRlZiBjcmVhdGUoY2xzLCByZWRpcywgY2Fzc2FuZHJhLCBhc3luY19wcm9jZXNzaW5nPUZh
bHNlKToKICAgICAgICAgb2xkZXN0X2NvbW1pdCA9IHRpbWUudGltZSgpCi0gICAgICAgIGZvciBy
ZXBvIGluIFtNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLCBNb2NrU1ZOUmVwb3NpdG9yeS53
ZWJraXQoKV06CisgICAgICAgIGZvciByZXBvIGluIFtjbHMuc2FmYXJpKCksIGNscy53ZWJraXQo
KV06CiAgICAgICAgICAgICBmb3IgY29tbWl0cyBpbiByZXBvLmNvbW1pdHMudmFsdWVzKCk6CiAg
ICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgotICAgICAgICAgICAgICAgICAg
ICBvbGRlc3RfY29tbWl0ID0gbWluKG9sZGVzdF9jb21taXQsIGNhbGVuZGFyLnRpbWVnbShjb21t
aXQudGltZXN0YW1wLnRpbWV0dXBsZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgb2xkZXN0X2Nv
bW1pdCA9IG1pbihvbGRlc3RfY29tbWl0LCBjb21taXQudGltZXN0YW1wKQogCiAgICAgICAgIG1v
ZGVsID0gTW9kZWwoCiAgICAgICAgICAgICByZWRpcz1yZWRpcywKICAgICAgICAgICAgIGNhc3Nh
bmRyYT1jYXNzYW5kcmEsCiAgICAgICAgICAgICByZXBvc2l0b3JpZXM9WwotICAgICAgICAgICAg
ICAgIE1vY2tTdGFzaFJlcG9zaXRvcnkuc2FmYXJpKHJlZGlzPXJlZGlzKSwKLSAgICAgICAgICAg
ICAgICBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQocmVkaXM9cmVkaXMpLAorICAgICAgICAgICAg
ICAgIFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly9iaXRidWNrZXQuZXhhbXBsZS5jb20vcHJvamVj
dHMvU0FGQVJJL3JlcG9zL3NhZmFyaScpLAorICAgICAgICAgICAgICAgIFdlYktpdFJlcG9zaXRv
cnkoKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICBkZWZhdWx0X3R0bF9zZWNvbmRzPXRp
bWUudGltZSgpIC0gb2xkZXN0X2NvbW1pdCArIE1vZGVsLlRUTF9XRUVLLAogICAgICAgICAgICAg
YXJjaGl2ZV90dGxfc2Vjb25kcz10aW1lLnRpbWUoKSAtIG9sZGVzdF9jb21taXQgKyBNb2RlbC5U
VExfV0VFSywKICAgICAgICAgICAgIGFzeW5jX3Byb2Nlc3Npbmc9YXN5bmNfcHJvY2Vzc2luZywK
ICAgICAgICAgKQotICAgICAgICB3aXRoIG1vZGVsLmNvbW1pdF9jb250ZXh0LCBtb2RlbC5jb21t
aXRfY29udGV4dC5jYXNzYW5kcmEuYmF0Y2hfcXVlcnlfY29udGV4dCgpOgotICAgICAgICAgICAg
Zm9yIHJlcG9zaXRvcnkgaW4gbW9kZWwuY29tbWl0X2NvbnRleHQucmVwb3NpdG9yaWVzLnZhbHVl
cygpOgotICAgICAgICAgICAgICAgIGZvciBicmFuY2hfY29tbWl0cyBpbiByZXBvc2l0b3J5LmNv
bW1pdHMudmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBjb21taXQgaW4gYnJhbmNo
X2NvbW1pdHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5jb21taXRfY29udGV4dC5y
ZWdpc3Rlcl9jb21taXQoY29tbWl0KQorICAgICAgICB3aXRoIGNscy5zYWZhcmkoKSBhcyBzYWZh
cmksIGNscy53ZWJraXQoKSBhcyB3ZWJraXQ6CisgICAgICAgICAgICB3aXRoIG1vZGVsLmNvbW1p
dF9jb250ZXh0LCBtb2RlbC5jb21taXRfY29udGV4dC5jYXNzYW5kcmEuYmF0Y2hfcXVlcnlfY29u
dGV4dCgpOgorICAgICAgICAgICAgICAgIGZvciBrZXksIHJlcG9zaXRvcnkgaW4gZGljdChzYWZh
cmk9c2FmYXJpLCB3ZWJraXQ9d2Via2l0KS5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBm
b3IgYnJhbmNoLCBjb21taXRzIGluIHJlcG9zaXRvcnkuY29tbWl0cy5pdGVtcygpOgorICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZGVsLmNvbW1pdF9jb250ZXh0LnJlZ2lzdGVyX2NvbW1pdF93aXRoX3Jl
cG9fYW5kX2lkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksIGJyYW5jaCwg
Y29tbWl0Lmhhc2ggb3IgY29tbWl0LnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICkKICAgICAgICAgcmV0dXJuIG1vZGVsCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTEwNiw3
ICsxMTgsNyBAQCBjbGFzcyBNb2NrTW9kZWxGYWN0b3J5KG9iamVjdCk6CiAgICAgQGNsYXNzbWV0
aG9kCiAgICAgZGVmIGl0ZXJhdGVfYWxsX2NvbW1pdHMoY2xzLCBtb2RlbCwgY2FsbGJhY2spOgog
ICAgICAgICByZXBvcyA9ICgnd2Via2l0JywgJ3NhZmFyaScpCi0gICAgICAgIGJyYW5jaGVzID0g
KE5vbmUsICdzYWZhcmktNjA2LWJyYW5jaCcpCisgICAgICAgIGJyYW5jaGVzID0gKE5vbmUsICdi
cmFuY2gtYScpCiAgICAgICAgIGZvciBicmFuY2ggaW4gYnJhbmNoZXM6CiAgICAgICAgICAgICBj
b21taXRfaW5kZXggPSB7cmVwbzogMCBmb3IgcmVwbyBpbiByZXBvc30KICAgICAgICAgICAgIGNv
bW1pdHNfZm9yX3JlcG8gPSB7cmVwbzogc29ydGVkKG1vZGVsLmNvbW1pdF9jb250ZXh0LmZpbmRf
Y29tbWl0c19pbl9yYW5nZShyZXBvLCBicmFuY2gpKSBmb3IgcmVwbyBpbiByZXBvc30KSW5kZXg6
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21v
Y2tfcmVwb3NpdG9yeS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9tb2NrX3JlcG9zaXRvcnkucHkJKHJldmlzaW9u
IDI3NDA3OSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L21vZGVsL21vY2tfcmVwb3NpdG9yeS5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDMzMCArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgY29udGV4
dGxpYgotaW1wb3J0IGpzb24KLWltcG9ydCByZQotaW1wb3J0IHVybGxpYgotaW1wb3J0IHhtbHRv
ZGljdAotCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAotZnJvbSByZXN1bHRz
ZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHJlc3VsdHNkYnB5Lm1v
ZGVsLnJlcG9zaXRvcnkgaW1wb3J0IFN0YXNoUmVwb3NpdG9yeSwgU1ZOUmVwb3NpdG9yeSwgV2Vi
S2l0UmVwb3NpdG9yeQotCi0KLWNsYXNzIE1vY2tSZXF1ZXN0KG9iamVjdCk6Ci0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgdGV4dD0nJywgc3RhdHVzX2NvZGU9MjAwKToKLSAgICAgICAgc2VsZi50
ZXh0ID0gdGV4dAotICAgICAgICBzZWxmLnN0YXR1c19jb2RlID0gc3RhdHVzX2NvZGUKLQotCi1j
bGFzcyBNb2NrU3Rhc2hSZXBvc2l0b3J5KFN0YXNoUmVwb3NpdG9yeSk6Ci0KLSAgICBDT01NSVRf
UkUgPSByZS5jb21waWxlKHInY29tbWl0cy8oP1A8aGFzaD5bMC05YS1mXSspJykKLSAgICBDT01N
SVRfRk9SX0JSQU5DSF9SRSA9IHJlLmNvbXBpbGUocidjb21taXRzXD9zaW5jZVw9KD9QPGhhc2g+
WzAtOWEtZl0rKVwmdW50aWxcPSg/UDxicmFuY2g+W14mXSspXCZsaW1pdFw9MScpCi0gICAgQ09N
TUlUX0FUX0hFQURfUkUgPSByZS5jb21waWxlKHInY29tbWl0c1w/dW50aWxcPSg/UDxicmFuY2g+
W14mXSspXCZsaW1pdFw9XGQrJykKLSAgICBET0VTX05PVF9FWElTVF9SRVNVTFQgPSB7J2Vycm9y
cyc6IFt7Ci0gICAgICAgICdjb250ZXh0JzogTm9uZSwKLSAgICAgICAgJ21lc3NhZ2UnOiAnQ29t
bWl0IFwnP1wnIGRvZXMgbm90IGV4aXN0IGluIHJlcG9zaXRvcnkuJywKLSAgICAgICAgJ2V4Y2Vw
dGlvbk5hbWUnOiAnY29tLmF0bGFzc2lhbi5iaXRidWNrZXQuY29tbWl0Lk5vU3VjaENvbW1pdEV4
Y2VwdGlvbicsCi0gICAgfV19Ci0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHNhZmFyaShy
ZWRpcz1Ob25lKToKLSAgICAgICAgcmVzdWx0ID0gTW9ja1N0YXNoUmVwb3NpdG9yeSgnaHR0cHM6
Ly9mYWtlLXN0YXNoLWluc3RhbmNlLmFwcGxlLmNvbS9wcm9qZWN0cy9CUk9XU0VSL3JlcG9zL3Nh
ZmFyaScsIG5hbWU9J3NhZmFyaScsIHJlZGlzPXJlZGlzKQotICAgICAgICByZXN1bHQuYWRkX2Nv
bW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlc3VsdC5uYW1lLCBicmFu
Y2g9J21hc3RlcicsIGlkPSdiYjZiZGE1ZjQ0ZGQyNGQwYjU0NTM5YjhmZjZlOGMxN2Y1MTkyNDlh
JywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3ODEwMjgxLCBvcmRlcj0wLAotICAgICAgICAg
ICAgY29tbWl0dGVyPSdwZXJzb24xQGFwcGxlLmNvbScsCi0gICAgICAgICAgICBtZXNzYWdlPSdD
aGFuZ2UgMSBkZXNjcmlwdGlvbi4nLAotICAgICAgICApKQotICAgICAgICByZXN1bHQuYWRkX2Nv
bW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlc3VsdC5uYW1lLCBicmFu
Y2g9J21hc3RlcicsIGlkPSczMzY2MTBhODRmZGNmMTRkZGNmMWRiNjUwNzVhZjk1NDgwNTE2ZmRh
JywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3ODA5ODE4LCBvcmRlcj0wLAotICAgICAgICAg
ICAgY29tbWl0dGVyPSdwZXJzb24yQGFwcGxlLmNvbScsCi0gICAgICAgICAgICBtZXNzYWdlPSdD
aGFuZ2UgMiBkZXNjcmlwdGlvbi4nLAotICAgICAgICApKQotICAgICAgICByZXN1bHQuYWRkX2Nv
bW1pdChDb21taXQoCi0gICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJlc3VsdC5uYW1lLCBicmFu
Y2g9J21hc3RlcicsIGlkPSczMzY2MTBhNDBjM2ZlY2I3Mjg4NzFlMTJjYTMxNDgyY2E3MTViMzgz
JywKLSAgICAgICAgICAgIHRpbWVzdGFtcD0xNTM3NTY2Mzg2LCBvcmRlcj0wLAotICAgICAgICAg
ICAgY29tbWl0dGVyPSdwZXJzb24zQGFwcGxlLmNvbScsCi0gICAgICAgICAgICBtZXNzYWdlPSc8
cmRhcjovL3Byb2JsZW0vOTk5OTk5OTk+IENoYW5nZSAzIGRlc2NyaXB0aW9uLicsCi0gICAgICAg
ICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9z
aXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0nbWFzdGVyJywgaWQ9J2U2NDgxMGE0MGMzZmVj
YjcyODg3MWUxMmNhMzE0ODJjYTcxNWIzODMnLAotICAgICAgICAgICAgdGltZXN0YW1wPTE1Mzc1
NTA2ODUsIG9yZGVyPTAsCi0gICAgICAgICAgICBjb21taXR0ZXI9J3BlcnNvbjRAYXBwbGUuY29t
JywKLSAgICAgICAgICAgIG1lc3NhZ2U9dSdDaGFuZ2UgNCBcdTIwMTQgKFBhcnQgMSkgZGVzY3Jp
cHRpb24uJywKLSAgICAgICAgKSkKLSAgICAgICAgcmVzdWx0LmFkZF9jb21taXQoQ29tbWl0KAot
ICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXN1bHQubmFtZSwgYnJhbmNoPSdtYXN0ZXInLCBp
ZD0nN2JlNDA4NDI1OGE0NTJlOGZlMjJmMzYyODdjNWIzMjFlOWM4MjQ5YicsCi0gICAgICAgICAg
ICB0aW1lc3RhbXA9MTUzNzU1MDY4NSwgb3JkZXI9MSwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0n
cGVyc29uNEBhcHBsZS5jb20nLAotICAgICAgICAgICAgbWVzc2FnZT11J0NoYW5nZSA0IFx1MjAx
NCAoUGFydCAyKSBkZXNjcmlwdGlvbi5cblJldmlld2VkIGJ5IHBlcnNvbi4nLAotICAgICAgICAp
KQotCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9z
aXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0nc2FmYXJpLTYwNi1icmFuY2gnLCBpZD0nNzky
NTZjMzJhODU1YWM4NjEyMTEyMjc5MDA4MzM0ZDkwZTkwMWM1NScsCi0gICAgICAgICAgICB0aW1l
c3RhbXA9MTUzNzg5NzM2Nywgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29u
NUBhcHBsZS5jb20nLAotICAgICAgICAgICAgbWVzc2FnZT0nQ2hhbmdlIDUgZGVzY3JpcHRpb24u
JywKLSAgICAgICAgKSkKLSAgICAgICAgcmVzdWx0LmFkZF9jb21taXQoQ29tbWl0KAotICAgICAg
ICAgICAgcmVwb3NpdG9yeV9pZD1yZXN1bHQubmFtZSwgYnJhbmNoPSdzYWZhcmktNjA2LWJyYW5j
aCcsIGlkPSdkODUyMjJkOTQwN2ZkYmJmNDc0MDY1MDk0MDBhOWNlY2I3M2FjNmRlJywKLSAgICAg
ICAgICAgIHRpbWVzdGFtcD0xNTM3NTYzMzgzLCBvcmRlcj0wLAotICAgICAgICAgICAgY29tbWl0
dGVyPSdwZXJzb242QGFwcGxlLmNvbScsCi0gICAgICAgICAgICBtZXNzYWdlPSdDaGFuZ2UgNiBk
ZXNjcmlwdGlvbi4nLAotICAgICAgICApKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgdXJsLCBuYW1lLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYubmFt
ZSA9IG5hbWUKLSAgICAgICAgc2VsZi5jb21taXRzID0gZGVmYXVsdGRpY3QobGlzdCkKLQotICAg
ICAgICBzdXBlcihNb2NrU3Rhc2hSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXyh1cmwsICoqa3dh
cmdzKQotCi0gICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLSAgICBkZWYgc2Vzc2lvbihz
ZWxmKToKLSAgICAgICAgc2VsZi5fc2Vzc2lvbl9kZXB0aCArPSAxCi0gICAgICAgIHlpZWxkCi0g
ICAgICAgIHNlbGYuX3Nlc3Npb25fZGVwdGggLT0gMQotCi0gICAgZGVmIGFkZF9jb21taXQoc2Vs
ZiwgY29tbWl0KToKLSAgICAgICAgY29waWVkX2NvbW1pdCA9IENvbW1pdC5mcm9tX2pzb24oY29t
bWl0LnRvX2pzb24oKSkKLSAgICAgICAgY29waWVkX2NvbW1pdC5yZXBvc2l0b3J5X2lkID0gc2Vs
Zi5uYW1lCi0gICAgICAgIHNlbGYuY29tbWl0c1tjb3BpZWRfY29tbWl0LmJyYW5jaF0uYXBwZW5k
KGNvcGllZF9jb21taXQpCi0gICAgICAgIHNlbGYuY29tbWl0c1tjb3BpZWRfY29tbWl0LmJyYW5j
aF0gPSBzb3J0ZWQoc2VsZi5jb21taXRzW2NvcGllZF9jb21taXQuYnJhbmNoXSkKLQotICAgIGRl
ZiByZXF1ZXN0KHNlbGYsIHVybCwgbWV0aG9kPSdHRVQnLCAqKmt3YXJncyk6Ci0gICAgICAgIGlm
IG5vdCB1cmwuc3RhcnRzd2l0aChzZWxmLnVybCkgb3IgbWV0aG9kICE9ICdHRVQnOgotICAgICAg
ICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkKLQotICAgICAgICBwYXRo
ID0gdXJsW2xlbihzZWxmLnVybCkgKyAxOl0KLSAgICAgICAgaWYgbm90IHBhdGg6Ci0gICAgICAg
ICAgICByZXR1cm4gTW9ja1JlcXVlc3QoanNvbi5kdW1wcyh7J3NsdWcnOiBzZWxmLm5hbWV9KSkK
LQotICAgICAgICBtYXRjaCA9IHNlbGYuQ09NTUlUX1JFLm1hdGNoKHBhdGgpCi0gICAgICAgIGlm
IG1hdGNoOgotICAgICAgICAgICAgaW5kZXggPSAtMQotICAgICAgICAgICAgYnJhbmNoID0gTm9u
ZQotICAgICAgICAgICAgZm9yIGtleSwgY29tbWl0cyBpbiBzZWxmLmNvbW1pdHMuaXRlbXMoKToK
LSAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY29tbWl0cykpOgotICAgICAgICAg
ICAgICAgICAgICBpZiBjb21taXRzW2ldLmlkLnN0YXJ0c3dpdGgobWF0Y2guZ3JvdXAoJ2hhc2gn
KSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpbmRleCAhPSAtMToKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3QoanNvbi5kdW1wcyhzZWxmLkRPRVNf
Tk9UX0VYSVNUX1JFU1VMVCksIHN0YXR1c19jb2RlPTQwMSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4ID0gaQotICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoID0ga2V5Ci0gICAg
ICAgICAgICBpZiBpbmRleCA9PSAtMSBvciBub3QgYnJhbmNoOgotICAgICAgICAgICAgICAgIHJl
dHVybiBNb2NrUmVxdWVzdChqc29uLmR1bXBzKHNlbGYuRE9FU19OT1RfRVhJU1RfUkVTVUxUKSwg
c3RhdHVzX2NvZGU9NDAxKQotICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KGpzb24uZHVt
cHMoewotICAgICAgICAgICAgICAgICdpZCc6IHNlbGYuY29tbWl0c1ticmFuY2hdW2luZGV4XS5p
ZCwKLSAgICAgICAgICAgICAgICAnY29tbWl0dGVyJzogeydlbWFpbEFkZHJlc3MnOiBzZWxmLmNv
bW1pdHNbYnJhbmNoXVtpbmRleF0uY29tbWl0dGVyfSwKLSAgICAgICAgICAgICAgICAnY29tbWl0
dGVyVGltZXN0YW1wJzogc2VsZi5jb21taXRzW2JyYW5jaF1baW5kZXhdLnRpbWVzdGFtcF9hc19l
cG9jaCgpICogc2VsZi5DT01NSVRfVElNRVNUQU1QX0NPTlZFUlNJT04sCi0gICAgICAgICAgICAg
ICAgJ21lc3NhZ2UnOiBzZWxmLmNvbW1pdHNbYnJhbmNoXVtpbmRleF0ubWVzc2FnZSwKLSAgICAg
ICAgICAgICAgICAncGFyZW50cyc6IFtdIGlmIGluZGV4ID09IDAgZWxzZSBbewotICAgICAgICAg
ICAgICAgICAgICAnaWQnOiBzZWxmLmNvbW1pdHNbYnJhbmNoXVtpbmRleCAtIDFdLmlkLAotICAg
ICAgICAgICAgICAgICAgICAnY29tbWl0dGVyVGltZXN0YW1wJzogc2VsZi5jb21taXRzW2JyYW5j
aF1baW5kZXggLSAxXS50aW1lc3RhbXBfYXNfZXBvY2goKSAqIHNlbGYuQ09NTUlUX1RJTUVTVEFN
UF9DT05WRVJTSU9OLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgfSkpCi0KLSAg
ICAgICAgbWF0Y2ggPSBzZWxmLkNPTU1JVF9GT1JfQlJBTkNIX1JFLm1hdGNoKHBhdGgpCi0gICAg
ICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgYnJhbmNoID0gdXJsbGliLnBhcnNlLnVucXVvdGUo
bWF0Y2guZ3JvdXAoJ2JyYW5jaCcpKVtsZW4oJ3JlZnMvaGVhZHMnKSArIDE6XQotICAgICAgICAg
ICAgaGFzX2ZvdW5kID0gRmFsc2UKLSAgICAgICAgICAgIGlmIHNlbGYuY29tbWl0cy5nZXQoYnJh
bmNoKToKLSAgICAgICAgICAgICAgICBmb3IgY29tbWl0IGluIHNlbGYuY29tbWl0c1ticmFuY2hd
WzotMV06Ci0gICAgICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5pZC5zdGFydHN3aXRoKG1hdGNo
Lmdyb3VwKCdoYXNoJykpOgotICAgICAgICAgICAgICAgICAgICAgICAgaGFzX2ZvdW5kID0gVHJ1
ZQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHJldHVybiBNb2Nr
UmVxdWVzdChqc29uLmR1bXBzKHsnc2l6ZSc6IDEgaWYgaGFzX2ZvdW5kIGVsc2UgMCwgJ2lzTGFz
dFBhZ2UnOiBUcnVlfSkpCi0KLSAgICAgICAgbWF0Y2ggPSBzZWxmLkNPTU1JVF9BVF9IRUFEX1JF
Lm1hdGNoKHBhdGgpCi0gICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgYnJhbmNoID0gbWF0
Y2guZ3JvdXAoJ2JyYW5jaCcpLnJlcGxhY2UoJyUyRicsICcvJylbbGVuKCdyZWZzL2hlYWRzJykg
KyAxOl0KLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNvbW1pdHMuZ2V0KGJyYW5jaCwgW10pOgot
ICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChqc29uLmR1bXBzKHNlbGYuRE9FU19O
T1RfRVhJU1RfUkVTVUxUKSwgc3RhdHVzX2NvZGU9NDAxKQotICAgICAgICAgICAgcmV0dXJuIE1v
Y2tSZXF1ZXN0KGpzb24uZHVtcHMoeyd2YWx1ZXMnOiBbeydpZCc6IHNlbGYuY29tbWl0c1ticmFu
Y2hdWy0xXS5pZH1dLCAnc2l6ZSc6IDEsICdpc0xhc3RQYWdlJzogVHJ1ZX0pKQotCi0gICAgICAg
IHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNfY29kZT00MDQpCi0KLQotIyBVc2VzIG11bHRpcGxl
IGluaGVyaXRhbmNlIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGZ1bmN0aW9ucyBpbiB0aGlz
IGNsYXNzLgotY2xhc3MgX1NWTk1vY2sob2JqZWN0KToKLSAgICBTVk5fVVJMX1JFID0gcmUuY29t
cGlsZShyJ1whc3ZuL3J2ci8oP1A8cmV2aXNpb24+WzAtOV0rKS8oP1A8YnJhbmNoPi4qKScpCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgdXJsPU5vbmUpOgotICAgICAgICBzZWxmLmNv
bW1pdHMgPSBkZWZhdWx0ZGljdChsaXN0KQotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0KLSAg
ICAgICAgIyBTaG91bGQgYmUgb3ZlcnJpZGVuIGJ5IHRoZSBTVk5SZXBvc2l0b3J5IGNsYXNzCi0g
ICAgICAgIHNlbGYudXJsID0gdXJsIGlmIHVybCBlbHNlICcnCi0gICAgICAgIHNlbGYuX3Nlc3Np
b25fZGVwdGggPSAwCi0KLSAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgotICAgIGRlZiBz
ZXNzaW9uKHNlbGYpOgotICAgICAgICBzZWxmLl9zZXNzaW9uX2RlcHRoICs9IDEKLSAgICAgICAg
eWllbGQKLSAgICAgICAgc2VsZi5fc2Vzc2lvbl9kZXB0aCAtPSAxCi0KLSAgICBkZWYgYWRkX2Nv
bW1pdChzZWxmLCBjb21taXQpOgotICAgICAgICBjb3BpZWRfY29tbWl0ID0gQ29tbWl0LmZyb21f
anNvbihjb21taXQudG9fanNvbigpKQotICAgICAgICBjb3BpZWRfY29tbWl0LnJlcG9zaXRvcnlf
aWQgPSBzZWxmLm5hbWUKLSAgICAgICAgc2VsZi5jb21taXRzW2NvcGllZF9jb21taXQuYnJhbmNo
XS5hcHBlbmQoY29waWVkX2NvbW1pdCkKLSAgICAgICAgc2VsZi5jb21taXRzW2NvcGllZF9jb21t
aXQuYnJhbmNoXSA9IHNvcnRlZChzZWxmLmNvbW1pdHNbY29waWVkX2NvbW1pdC5icmFuY2hdKQot
Ci0gICAgZGVmIHJlcXVlc3Qoc2VsZiwgdXJsLCBtZXRob2Q9J0dFVCcsICoqa3dhcmdzKToKLSAg
ICAgICAgaWYgbm90IHVybC5zdGFydHN3aXRoKHNlbGYudXJsKToKLSAgICAgICAgICAgIHJldHVy
biBNb2NrUmVxdWVzdChzdGF0dXNfY29kZT00MDQpCi0KLSAgICAgICAgaWYgbWV0aG9kID09ICdH
RVQnIGFuZCB1cmwgPT0gc2VsZi51cmw6Ci0gICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3Qo
dGV4dD14bWx0b2RpY3QudW5wYXJzZSh7J3N2bic6IHsnaW5kZXgnOiB7J0BiYXNlJzogc2VsZi5u
YW1lfX19KSwgc3RhdHVzX2NvZGU9MjAwKQotICAgICAgICBpZiBtZXRob2QgIT0gJ1BST1BGSU5E
JzoKLSAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNfY29kZT00MDQpCi0KLSAg
ICAgICAgcGF0aCA9IHVybFtsZW4oc2VsZi51cmwpOl0KLSAgICAgICAgbWF0Y2ggPSBzZWxmLlNW
Tl9VUkxfUkUubWF0Y2gocGF0aCkKLSAgICAgICAgaWYgbm90IG1hdGNoOgotICAgICAgICAgICAg
cmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkKLSAgICAgICAgcmV2aXNpb24gPSBt
YXRjaC5ncm91cCgncmV2aXNpb24nKQotICAgICAgICBicmFuY2ggPSBtYXRjaC5ncm91cCgnYnJh
bmNoJykKLSAgICAgICAgaWYgYnJhbmNoICE9ICd0cnVuayc6Ci0gICAgICAgICAgICBicmFuY2gg
PSBicmFuY2hbbGVuKCdicmFuY2hlcy8nKTpdCi0KLSAgICAgICAgaWYgYnJhbmNoIG5vdCBpbiBz
ZWxmLmNvbW1pdHM6Ci0gICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3Qoc3RhdHVzX2NvZGU9
NDA0KQotCi0gICAgICAgIGZvciBjb21taXQgaW4gc2VsZi5jb21taXRzW2JyYW5jaF06Ci0gICAg
ICAgICAgICBpZiBjb21taXQuaWQgPT0gcmV2aXNpb246Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IE1vY2tSZXF1ZXN0KAotICAgICAgICAgICAgICAgICAgICB0ZXh0PXhtbHRvZGljdC51bnBhcnNl
KHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdEOm11bHRpc3RhdHVzJzogeydEOnJlc3BvbnNl
JzogeydEOnByb3BzdGF0JzogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnRDpwcm9w
JzogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHAxOnZlcnNpb24tbmFtZSc6
IGNvbW1pdC5pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xwMTpjcmVhdGlv
bmRhdGUnOiBjb21taXQudGltZXN0YW1wLnN0cmZ0aW1lKCclWS0lbS0lZFQlSDolTTolUy4lZlon
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xwMTpjcmVhdG9yLWRpc3BsYXlu
YW1lJzogY29tbWl0LmNvbW1pdHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J0Q6c3RhdHVzJzogJ0hUVFAvMS4xIDIwMCBP
Syd9LAotICAgICAgICAgICAgICAgICAgICAgICAgXX19LAotICAgICAgICAgICAgICAgICAgICB9
KSwKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzX2NvZGU9MjA3LAotICAgICAgICAgICAgICAg
ICkKLSAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19jb2RlPTQwNCkKLQotCi1jbGFz
cyBNb2NrU1ZOUmVwb3NpdG9yeShfU1ZOTW9jaywgU1ZOUmVwb3NpdG9yeSk6Ci0KLSAgICBAc3Rh
dGljbWV0aG9kCi0gICAgZGVmIHdlYmtpdChyZWRpcz1Ob25lKToKLSAgICAgICAgcmVzdWx0ID0g
TW9ja1dlYktpdFJlcG9zaXRvcnkocmVkaXM9cmVkaXMpCi0gICAgICAgIHJlc3VsdC5hZGRfY29t
bWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5j
aD0ndHJ1bmsnLCBpZD0yMzY1NDQsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODA1MjQwOCwg
b3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uMUB3ZWJraXQub3JnJywKLSAg
ICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSAxIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0g
ICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlf
aWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDMsCi0gICAgICAgICAgICB0
aW1lc3RhbXA9MTUzODA1MDQ1OCwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVy
c29uMkB3ZWJraXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSAyIGRlc2NyaXB0
aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAg
ICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0y
MzY1NDIsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODA0OTEwOCwgb3JkZXI9MCwKLSAgICAg
ICAgICAgIGNvbW1pdHRlcj0ncGVyc29uM0B3ZWJraXQub3JnJywKLSAgICAgICAgICAgIG1lc3Nh
Z2U9J0NoYW5nZSAzIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5h
ZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUs
IGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDEsCi0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODA0
MTc5Miwgb3JkZXI9MCwKLSAgICAgICAgICAgIGNvbW1pdHRlcj0ncGVyc29uNEB3ZWJraXQub3Jn
JywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0NoYW5nZSA0IChQYXJ0IDIpIGRlc2NyaXB0aW9uLics
Ci0gICAgICAgICkpCi0gICAgICAgIHJlc3VsdC5hZGRfY29tbWl0KENvbW1pdCgKLSAgICAgICAg
ICAgIHJlcG9zaXRvcnlfaWQ9cmVzdWx0Lm5hbWUsIGJyYW5jaD0ndHJ1bmsnLCBpZD0yMzY1NDAs
Ci0gICAgICAgICAgICB0aW1lc3RhbXA9MTUzODAyOTQ3OSwgb3JkZXI9MCwKLSAgICAgICAgICAg
IGNvbW1pdHRlcj0ncGVyc29uNEB3ZWJraXQub3JnJywKLSAgICAgICAgICAgIG1lc3NhZ2U9J0No
YW5nZSA0IChQYXJ0IDEpIGRlc2NyaXB0aW9uLicsCi0gICAgICAgICkpCi0KLSAgICAgICAgcmVz
dWx0LmFkZF9jb21taXQoQ29tbWl0KAotICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1yZXN1bHQu
bmFtZSwgYnJhbmNoPSdzYWZhcmktNjA2LWJyYW5jaCcsIGlkPTIzNjMzNSwKLSAgICAgICAgICAg
IHRpbWVzdGFtcD0xNTM4MDI5NDgwLCBvcmRlcj0wLAotICAgICAgICAgICAgY29tbWl0dGVyPSdp
bnRlZ3JhdG9yQHdlYmtpdC5vcmcnLAotICAgICAgICAgICAgbWVzc2FnZT0nSW50ZWdyYXRpb24g
MS4nLAotICAgICAgICApKQotICAgICAgICByZXN1bHQuYWRkX2NvbW1pdChDb21taXQoCi0gICAg
ICAgICAgICByZXBvc2l0b3J5X2lkPXJlc3VsdC5uYW1lLCBicmFuY2g9J3NhZmFyaS02MDYtYnJh
bmNoJywgaWQ9MjM2MzM0LAotICAgICAgICAgICAgdGltZXN0YW1wPTE1MzgwMjk0NzksIG9yZGVy
PTAsCi0gICAgICAgICAgICBjb21taXR0ZXI9J2ludGVncmF0b3JAd2Via2l0Lm9yZycsCi0gICAg
ICAgICAgICBtZXNzYWdlPSdJbnRlZ3JhdGlvbiAyLicsCi0gICAgICAgICkpCi0gICAgICAgIHJl
dHVybiByZXN1bHQKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIG5hbWUsICoqa3dhcmdz
KToKLSAgICAgICAgX1NWTk1vY2suX19pbml0X18oc2VsZiwgbmFtZT1uYW1lLCB1cmw9dXJsKQot
ICAgICAgICBTVk5SZXBvc2l0b3J5Ll9faW5pdF9fKHNlbGYsIHVybD11cmwsICoqa3dhcmdzKQot
Ci0KLWNsYXNzIE1vY2tXZWJLaXRSZXBvc2l0b3J5KF9TVk5Nb2NrLCBXZWJLaXRSZXBvc2l0b3J5
KToKLQotICAgIENIQU5HRUxPR19VUkxfUkUgPSByZS5jb21waWxlKHInKD9QPGJyYW5jaD50cnVu
a3xicmFuY2hlc1wvLispXC8oP1A8cGF0aD4uKylcL1w/cD0oP1A8cmV2aXNpb24+WzAtOV0rKScp
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBfU1ZOTW9jay5f
X2luaXRfXyhzZWxmLCBuYW1lPSd3ZWJraXQnKQotICAgICAgICBXZWJLaXRSZXBvc2l0b3J5Ll9f
aW5pdF9fKHNlbGYsICoqa3dhcmdzKQotCi0gICAgZGVmIHJlcXVlc3Qoc2VsZiwgdXJsLCBtZXRo
b2Q9J0dFVCcsICoqa3dhcmdzKToKLSAgICAgICAgaWYgbm90IHVybC5zdGFydHN3aXRoKHNlbGYu
dXJsKToKLSAgICAgICAgICAgIHJldHVybiBNb2NrUmVxdWVzdChzdGF0dXNfY29kZT00MDQpCi0K
LSAgICAgICAgIyBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBmYWxsYmFjayB0byBfU1ZOTW9j
awotICAgICAgICBpZiBtZXRob2QgIT0gJ0dFVCc6Ci0gICAgICAgICAgICByZXR1cm4gX1NWTk1v
Y2sucmVxdWVzdChzZWxmLCB1cmwsIG1ldGhvZD1tZXRob2QsICoqa3dhcmdzKQotCi0gICAgICAg
IHBhdGggPSB1cmxbbGVuKHNlbGYudXJsKTpdCi0gICAgICAgIG1hdGNoID0gc2VsZi5DSEFOR0VM
T0dfVVJMX1JFLm1hdGNoKHBhdGgpCi0gICAgICAgIGlmIG5vdCBtYXRjaDoKLSAgICAgICAgICAg
IHJldHVybiBfU1ZOTW9jay5yZXF1ZXN0KHNlbGYsIHVybCwgbWV0aG9kPW1ldGhvZCwgKiprd2Fy
Z3MpCi0KLSAgICAgICAgaWYgbWF0Y2guZ3JvdXAoJ3BhdGgnKSBub3QgaW4gV2ViS2l0UmVwb3Np
dG9yeS5DSEFOR0VMT0dTOgotICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0KHN0YXR1c19j
b2RlPTQwNCkKLSAgICAgICAgaWYgbWF0Y2guZ3JvdXAoJ3BhdGgnKSBub3QgaW4gKCdDaGFuZ2VM
b2cnLCAnVG9vbHMvQ2hhbmdlTG9nJyk6Ci0gICAgICAgICAgICByZXR1cm4gTW9ja1JlcXVlc3Qo
c3RhdHVzX2NvZGU9MjAwKQotCi0gICAgICAgIHJldmlzaW9uID0gbWF0Y2guZ3JvdXAoJ3Jldmlz
aW9uJykKLSAgICAgICAgYnJhbmNoID0gbWF0Y2guZ3JvdXAoJ2JyYW5jaCcpCi0gICAgICAgIGlm
IGJyYW5jaCAhPSAndHJ1bmsnOgotICAgICAgICAgICAgYnJhbmNoID0gYnJhbmNoW2xlbignYnJh
bmNoZXMvJyk6XQotCi0gICAgICAgIGNoYW5nZWxvZ19mb3JfY29tbWl0ID0gJycKLSAgICAgICAg
Zm9yIGNvbW1pdCBpbiBzZWxmLmNvbW1pdHNbYnJhbmNoXToKLSAgICAgICAgICAgIGNoYW5nZWxv
Z19mb3JfY29tbWl0ID0gZiIiIntjb21taXQudGltZXN0YW1wLnN0cmZ0aW1lKCclWS0lbS0lZCcp
fSAgSm9uIENvbW1pdHRlciAgPHtjb21taXQuY29tbWl0dGVyfT4KLQotICAgICAgICB7Y29tbWl0
Lm1lc3NhZ2V9Ci0iIiIgKyBjaGFuZ2Vsb2dfZm9yX2NvbW1pdAotCi0gICAgICAgICAgICBpZiBj
b21taXQuaWQgPT0gcmV2aXNpb246Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZXF1ZXN0
KHRleHQ9Y2hhbmdlbG9nX2Zvcl9jb21taXQsIHN0YXR1c19jb2RlPTIwMCkKLQotICAgICAgICBy
ZXR1cm4gTW9ja1JlcXVlc3Qoc3RhdHVzX2NvZGU9NDA0KQpJbmRleDogVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvbW9kZWxfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvbW9kZWxfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3NDA3OSkKKysrIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL21vZGVsX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTIgQEAgY2xhc3MgTW9kZWxU
ZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6CiAgICAgS0VZU1BBQ0UgPSAnbW9kZWxfdGVzdF9r
ZXlzcGFjZScKIAogICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlz
LCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCwgYXN5bmNfcHJvY2Vzc2luZz1GYWxzZSk6Ci0g
ICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpCi0g
ICAgICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZSgKLSAgICAgICAgICAg
IHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFD
RSwgY3JlYXRlX2tleXNwYWNlPVRydWUpLAotICAgICAgICAgICAgYXN5bmNfcHJvY2Vzc2luZz1h
c3luY19wcm9jZXNzaW5nLAotICAgICAgICApCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9y
eS5zYWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIGNhc3Nh
bmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpCisgICAgICAgICAgICBz
ZWxmLm1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUoCisgICAgICAgICAgICAgICAgcmVk
aXM9cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNFLCBj
cmVhdGVfa2V5c3BhY2U9VHJ1ZSksCisgICAgICAgICAgICAgICAgYXN5bmNfcHJvY2Vzc2luZz1h
c3luY19wcm9jZXNzaW5nLAorICAgICAgICAgICAgKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19j
YXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfaGVhbHRoKHNlbGYs
IHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CkluZGV4OiBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZXBv
c2l0b3J5LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L21vZGVsL3JlcG9zaXRvcnkucHkJKHJldmlzaW9uIDI3NDA3OSkKKysr
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3Jl
cG9zaXRvcnkucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjAsMzcwICsyMCw2OCBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBjb250ZXh0bGliCi1p
bXBvcnQganNvbgotaW1wb3J0IHJlCi1pbXBvcnQgcmVxdWVzdHMKLWltcG9ydCB0aHJlYWRpbmcK
LWltcG9ydCB1cmxsaWIKLWltcG9ydCB4bWx0b2RpY3QKLQogZnJvbSByZXN1bHRzZGJweS5jb250
cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0Ci1mcm9tIHhtbC5wYXJzZXJzLmV4cGF0IGltcG9y
dCBFeHBhdEVycm9yCi0KLQotY2xhc3MgU0NNRXhjZXB0aW9uKFJ1bnRpbWVFcnJvcik6Ci0gICAg
cGFzcworZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgcmVtb3RlCiAKIAogY2xhc3MgUmVwb3NpdG9y
eShvYmplY3QpOgotICAgIERFRkFVTFRfQlJBTkNIID0gJ21hc3RlcicKIAotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBrZXkpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXksIGRlZmF1bHRfYnJh
bmNoPU5vbmUpOgogICAgICAgICBzZWxmLmtleSA9IGtleQorICAgICAgICBzZWxmLmRlZmF1bHRf
YnJhbmNoID0gZGVmYXVsdF9icmFuY2ggb3IgJ21haW4nCiAKLSAgICBkZWYgY29tbWl0X2Zvcl9p
ZChzZWxmLCBpZCwgYnJhbmNoPU5vbmUpOgorICAgIGRlZiBjb21taXRfZm9yX2lkKHNlbGYsIGlk
KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKICAgICBkZWYgdXJsX2Zv
cl9jb21taXQoc2VsZiwgY29tbWl0KToKICAgICAgICAgcmV0dXJuIE5vbmUKIAogCi1jbGFzcyBI
VFRQUmVwb3NpdG9yeShSZXBvc2l0b3J5KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXks
IHVybCwgcmVkaXM9Tm9uZSwgdXNlcm5hbWU9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSk6Ci0gICAgICAg
IHN1cGVyKEhUVFBSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXyhrZXkpCi0gICAgICAgIHNlbGYu
dXJsID0gdXJsCi0gICAgICAgIHNlbGYuX3VzZXJuYW1lID0gdXNlcm5hbWUKLSAgICAgICAgc2Vs
Zi5fcGFzc3dvcmQgPSBwYXNzd29yZAotICAgICAgICBzZWxmLl9zZXNzaW9uID0gTm9uZQotICAg
ICAgICBzZWxmLl9zZXNzaW9uX2RlcHRoID0gMAotICAgICAgICBzZWxmLnJlZGlzID0gcmVkaXMg
ICMgSW4gbWFueSBjYXNlcywgd2UgY2FuIGdyZWF0bHkgcmVkdWNlIHRoZSBudW1iZXIgb2YgcmVx
dWVzdHMgbWFkZSBieSBjYWNoaW5nIHJlcXVlc3RzIGluIFJlZGlzLgotCi0gICAgQGNvbnRleHRs
aWIuY29udGV4dG1hbmFnZXIKLSAgICBkZWYgc2Vzc2lvbihzZWxmKToKLSAgICAgICAgaWYgbm90
IHNlbGYuX3Nlc3Npb246Ci0gICAgICAgICAgICBzZWxmLl9zZXNzaW9uID0gcmVxdWVzdHMuU2Vz
c2lvbigpCi0gICAgICAgICAgICBpZiBzZWxmLl91c2VybmFtZSBhbmQgc2VsZi5fcGFzc3dvcmQ6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2Vzc2lvbi5hdXRoID0gKHNlbGYuX3VzZXJuYW1lLCBz
ZWxmLl9wYXNzd29yZCkKLSAgICAgICAgICAgIHNlbGYuX3Nlc3Npb24ubW91bnQoc2VsZi51cmws
IHJlcXVlc3RzLmFkYXB0ZXJzLkhUVFBBZGFwdGVyKG1heF9yZXRyaWVzPTUpKQotICAgICAgICBz
ZWxmLl9zZXNzaW9uX2RlcHRoICs9IDEKLQotICAgICAgICB5aWVsZAotCi0gICAgICAgIHNlbGYu
X3Nlc3Npb25fZGVwdGggLT0gMQotICAgICAgICBpZiBzZWxmLl9zZXNzaW9uX2RlcHRoIDw9IDA6
Ci0gICAgICAgICAgICBzZWxmLl9zZXNzaW9uLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuX3Nl
c3Npb24gPSBOb25lCi0KLSAgICBkZWYgcmVxdWVzdChzZWxmLCB1cmwsIG1ldGhvZD0nR0VUJywg
Kiprd2FyZ3MpOgotICAgICAgICB3aXRoIHNlbGYuc2Vzc2lvbigpOgotICAgICAgICAgICAgcmV0
dXJuIHNlbGYuX3Nlc3Npb24ucmVxdWVzdChtZXRob2Q9bWV0aG9kLCB1cmw9dXJsLCAqKmt3YXJn
cykKLQotICAgIGRlZiBjYWNoZV9yZXN1bHQoc2VsZiwga2V5LCBmdW5jdGlvbiwgZXg9NjAgKiA2
MCAqIDI0ICogMik6Ci0gICAgICAgIHJlc3VsdCA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5yZWRp
czoKLSAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYucmVkaXMuZ2V0KGtleSkKLSAgICAgICAgaWYg
cmVzdWx0IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgPSBmdW5jdGlvbigpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZGVjb2RlKCd1dGYtOCcpCi0gICAg
ICAgIGlmIHJlc3VsdCBhbmQgc2VsZi5yZWRpczoKLSAgICAgICAgICAgIHNlbGYucmVkaXMuc2V0
KGtleSwgcmVzdWx0LCBleD1leCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0KLWNsYXNzIFN0
YXNoUmVwb3NpdG9yeShIVFRQUmVwb3NpdG9yeSk6Ci0KLSAgICAjIFN0YXNoJ3MgdGltZXN0YW1w
cyBhcmUgYWNjdXJhdGUgdG8gdGhlIG1pbGxpc2Vjb25kLgotICAgIENPTU1JVF9USU1FU1RBTVBf
Q09OVkVSU0lPTiA9IDEwMDAKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsICoqa3dhcmdz
KToKLSAgICAgICAgUFJPSkVDVFMgPSAnL3Byb2plY3RzJwotICAgICAgICBpZiBsZW4odXJsLnNw
bGl0KFBST0pFQ1RTKSkgIT0gMjoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihmJ3t1cmx9
IGlzIG5vdCBhIFN0YXNoIFVSTCcpCi0gICAgICAgIHNlbGYuYmFzZV91cmwgPSB1cmwKLSAgICAg
ICAgc3VwZXIoU3Rhc2hSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXyhOb25lLCAoJy9yZXN0L2Fw
aS8xLjAnICsgUFJPSkVDVFMpLmpvaW4odXJsLnNwbGl0KFBST0pFQ1RTKSksICoqa3dhcmdzKQot
Ci0gICAgICAgIHdpdGggc2VsZi5zZXNzaW9uKCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgc3Rhc2hfZGF0YSA9IHNlbGYuZ2V0KCkKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1
ZUVycm9yOgotICAgICAgICAgICAgICAgIHN0YXNoX2RhdGEgPSB7fQotICAgICAgICAgICAgc2Vs
Zi5rZXkgPSBzdGFzaF9kYXRhLmdldCgnc2x1ZycsIE5vbmUpCi0gICAgICAgICAgICBpZiBub3Qg
c2VsZi5rZXk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKGYne3NlbGYudXJsfSBp
cyBub3QgYW4gU3Rhc2ggcmVwb3NpdG9yeScpCi0KLSAgICBkZWYgZ2V0KHNlbGYsIGFyZ3M9Tm9u
ZSwgY2FjaGU9VHJ1ZSk6Ci0gICAgICAgIHVybCA9IHNlbGYudXJsICsgKCcnIGlmIG5vdCBhcmdz
IGVsc2UgZicve2FyZ3N9JykKLQotICAgICAgICBkZWYgY2FsbGJhY2sodXJsPXVybCwgb2JqPXNl
bGYpOgotICAgICAgICAgICAgcmVzcG9uc2UgPSBvYmoucmVxdWVzdCh1cmwpCi0gICAgICAgICAg
ICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3BvbnNlLnRleHQKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcmVzdWx0
ID0gc2VsZi5jYWNoZV9yZXN1bHQoCi0gICAgICAgICAgICBmJ3JlcG9zaXRvcnk6e3VybH0nLAot
ICAgICAgICAgICAgY2FsbGJhY2ssCi0gICAgICAgICkgaWYgY2FjaGUgZWxzZSBjYWxsYmFjayh1
cmwpCi0gICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKHJl
c3VsdCkKLSAgICAgICAgcmV0dXJuIHt9Ci0KLSAgICBkZWYgY29tbWl0X2Zvcl9pZChzZWxmLCBp
ZCwgYnJhbmNoPVJlcG9zaXRvcnkuREVGQVVMVF9CUkFOQ0gpOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICB3aXRoIHNlbGYuc2Vzc2lvbigpOgotICAgICAgICAgICAgICAgIGNvbW1pdF9kYXRh
ID0gc2VsZi5nZXQoZidjb21taXRzL3tpZH0nKQotICAgICAgICAgICAgICAgIGlmIG5vdCBjb21t
aXRfZGF0YToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgU0NNRXhjZXB0aW9uKGYnQ29tbWl0
IHtpZH0gZG9lcyBub3QgZXhpc3Qgb24gYnJhbmNoIHticmFuY2h9JykKLSAgICAgICAgICAgICAg
ICB0aW1lc3RhbXAgPSBpbnQoY29tbWl0X2RhdGFbJ2NvbW1pdHRlclRpbWVzdGFtcCddKSAvLyBz
ZWxmLkNPTU1JVF9USU1FU1RBTVBfQ09OVkVSU0lPTgotCi0gICAgICAgICAgICAgICAgYnJhbmNo
X2ZpbHRlciA9IHVybGxpYi5wYXJzZS5xdW90ZShmJ3JlZnMvaGVhZHMve2JyYW5jaH0nKQotICAg
ICAgICAgICAgICAgIGNvbW1pdHNfYmV0d2Vlbl9jb21taXRfYW5kX2JyYW5jaF9oZWFkID0gc2Vs
Zi5nZXQoZiJjb21taXRzP3NpbmNlPXtjb21taXRfZGF0YVsnaWQnXX0mdW50aWw9e2JyYW5jaF9m
aWx0ZXJ9JmxpbWl0PTEiLCBjYWNoZT1GYWxzZSkKLSAgICAgICAgICAgICAgICBpZiBjb21taXRz
X2JldHdlZW5fY29tbWl0X2FuZF9icmFuY2hfaGVhZFsnaXNMYXN0UGFnZSddIGFuZCBjb21taXRz
X2JldHdlZW5fY29tbWl0X2FuZF9icmFuY2hfaGVhZFsnc2l6ZSddID09IDA6Ci0gICAgICAgICAg
ICAgICAgICAgICMgV2UgbWF5IGhhdmUgbWlzc2VkIHRoZSBjYXNlIHRoZSBjb21taXQgaW4gcXVl
c3Rpb24gaXMgdGhlIEhFQUQgb2YgdGhlIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICBjb21t
aXRzX2F0X2JyYW5jaF9oZWFkID0gc2VsZi5nZXQoZidjb21taXRzP3VudGlsPXticmFuY2hfZmls
dGVyfSZsaW1pdD0yMCcsIGNhY2hlPUZhbHNlKQotICAgICAgICAgICAgICAgICAgICBpZiBhbGwo
W2NvbW1pdFsnaWQnXSAhPSBjb21taXRfZGF0YVsnaWQnXSBmb3IgY29tbWl0IGluIGNvbW1pdHNf
YXRfYnJhbmNoX2hlYWRbJ3ZhbHVlcyddXSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlz
ZSBTQ01FeGNlcHRpb24oZid7aWR9IGV4aXN0cywgYnV0IG5vdCBvbiB7YnJhbmNofScpCi0KLSAg
ICAgICAgICAgICAgICAjIE9yZGVyaW5nIGNvbW1pdHMgYnkgdGltZXN0YW1wIGluIGdpdCBpcyBh
IGJpdCBwcm9ibGVtYXRpYyBiZWNhdXNlIG11bHRpcGxlIGNvbW1pdHMgY2FuIHNoYXJlIGEgdGlt
ZXN0YW1wLgotICAgICAgICAgICAgICAgICMgR2VuZXJhbGx5LCBpZiB5b3VyIHBhcmVudCBzaGFy
ZXMgeW91ciB0aW1lc3RhbXAsIHlvdXIgb3JkZXIgbmVlZHMgdG8gYmUgaW5jcmVtZW50ZWQuCi0g
ICAgICAgICAgICAgICAgb3JkZXIgPSAwCi0gICAgICAgICAgICAgICAgbG9vcF9kYXRhID0gY29t
bWl0X2RhdGEKLSAgICAgICAgICAgICAgICB3aGlsZSBsZW4obG9vcF9kYXRhWydwYXJlbnRzJ10p
ID09IDEgYW5kIGludChsb29wX2RhdGFbJ3BhcmVudHMnXVswXVsnY29tbWl0dGVyVGltZXN0YW1w
J10pIC8vIHNlbGYuQ09NTUlUX1RJTUVTVEFNUF9DT05WRVJTSU9OID09IHRpbWVzdGFtcDoKLSAg
ICAgICAgICAgICAgICAgICAgb3JkZXIgKz0gMQotICAgICAgICAgICAgICAgICAgICBsb29wX2Rh
dGEgPSBzZWxmLmdldChmImNvbW1pdHMve2xvb3BfZGF0YVsncGFyZW50cyddWzBdWydpZCddfSIp
Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tbWl0KAotICAgICAgICAgICAgICAgICAgICBy
ZXBvc2l0b3J5X2lkPXNlbGYua2V5LAotICAgICAgICAgICAgICAgICAgICBpZD1jb21taXRfZGF0
YVsnaWQnXSwKLSAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWJyYW5jaCwKLSAgICAgICAgICAg
ICAgICAgICAgdGltZXN0YW1wPXRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgb3JkZXI9
b3JkZXIsCi0gICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj1jb21taXRfZGF0YVsnY29tbWl0
dGVyJ11bJ2VtYWlsQWRkcmVzcyddLAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPWNvbW1p
dF9kYXRhWydtZXNzYWdlJ10sCi0gICAgICAgICAgICAgICAgKQotICAgICAgICBleGNlcHQgVmFs
dWVFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFNDTUV4Y2VwdGlvbihmJ0ZhaWxlZCB0byBjb25u
ZWN0IHRvIHtzZWxmLnVybH0nKQotCi0gICAgZGVmIHVybF9mb3JfY29tbWl0KHNlbGYsIGNvbW1p
dCk6Ci0gICAgICAgIHJldHVybiBmJ3tzZWxmLmJhc2VfdXJsfS9jb21taXRzL3tjb21taXR9Jwor
Y2xhc3MgU3Rhc2hSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHVybCwga2V5PU5vbmUsIGRlZmF1bHRfYnJhbmNoPU5vbmUpOgorICAgICAgICBzZWxmLnJl
bW90ZSA9IHJlbW90ZS5CaXRCdWNrZXQodXJsKQorICAgICAgICBzdXBlcihTdGFzaFJlcG9zaXRv
cnksIHNlbGYpLl9faW5pdF9fKAorICAgICAgICAgICAga2V5PWtleSBvciBzZWxmLnJlbW90ZS5u
YW1lLAorICAgICAgICAgICAgZGVmYXVsdF9icmFuY2g9ZGVmYXVsdF9icmFuY2ggb3Igc2VsZi5y
ZW1vdGUuZGVmYXVsdF9icmFuY2gsCisgICAgICAgICkKIAotY2xhc3MgU1ZOUmVwb3NpdG9yeShI
VFRQUmVwb3NpdG9yeSk6Ci0KLSAgICBERUZBVUxUX0JSQU5DSCA9ICd0cnVuaycKLSAgICBEQVZf
WE1MID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxwcm9wZmlu
ZCB4bWxucz0iREFWOiI+Ci08cHJvcD4KLTxyZXNvdXJjZXR5cGUgeG1sbnM9IkRBVjoiLz4KLTxn
ZXRjb250ZW50bGVuZ3RoIHhtbG5zPSJEQVY6Ii8+Ci08ZGVhZHByb3AtY291bnQgeG1sbnM9Imh0
dHA6Ly9zdWJ2ZXJzaW9uLnRpZ3Jpcy5vcmcveG1sbnMvZGF2LyIvPgotPHZlcnNpb24tbmFtZSB4
bWxucz0iREFWOiIvPgotPGNyZWF0aW9uZGF0ZSB4bWxucz0iREFWOiIvPgotPGNyZWF0b3ItZGlz
cGxheW5hbWUgeG1sbnM9IkRBVjoiLz4KLTwvcHJvcD48L3Byb3BmaW5kPiIiIgotCi0gICAgZGVm
IGdldChzZWxmLCBicmFuY2g9REVGQVVMVF9CUkFOQ0gsIHJldmlzaW9uPU5vbmUpOgotICAgICAg
ICB1cmwgPSBzZWxmLnVybAotICAgICAgICBpZiByZXZpc2lvbjoKLSAgICAgICAgICAgIHVybCA9
IHVybCArIGYiIXN2bi9ydnIve3JldmlzaW9ufS97YnJhbmNoIGlmIGJyYW5jaCA9PSBzZWxmLkRF
RkFVTFRfQlJBTkNIIGVsc2UgJ2JyYW5jaGVzLycgKyBicmFuY2h9IgotCi0gICAgICAgIGRlZiBj
YWxsYmFjayh1cmw9dXJsLCBvYmo9c2VsZiwgd2l0aF9yZXZpc2lvbj1UcnVlIGlmIHJldmlzaW9u
IGVsc2UgRmFsc2UpOgotICAgICAgICAgICAgaWYgd2l0aF9yZXZpc2lvbjoKLSAgICAgICAgICAg
ICAgICAjIENvbnN0cnVjdGVkIHRoaXMgZnJvbSBXaXJlU2hhcmsgYW5kIGFuIHN2biBpbmZvIGNv
bW1hbmQsIG1vZGlmeSB3aXRoIGNhdXRpb24hCi0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBz
ZWxmLnJlcXVlc3QoCi0gICAgICAgICAgICAgICAgICAgIG1ldGhvZD0nUFJPUEZJTkQnLAotICAg
ICAgICAgICAgICAgICAgICB1cmw9dXJsLAotICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPXsK
LSAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC94bWwnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICdEZXB0aCc6ICcwJywKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgZGF0YT1vYmouREFWX1hNTCkKLSAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi51cmwpCi0KLSAgICAg
ICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlIGluIFsyMDAsIDIwN106Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAg
ICAgICAgcmVzdWx0ID0gc2VsZi5jYWNoZV9yZXN1bHQoCi0gICAgICAgICAgICBmJ3JlcG9zaXRv
cnk6e3VybH0nLAotICAgICAgICAgICAgY2FsbGJhY2ssCisgICAgZGVmIGNvbW1pdF9mb3JfaWQo
c2VsZiwgaWQpOgorICAgICAgICBjb21taXQgPSBzZWxmLnJlbW90ZS5jb21taXQoaGFzaD1pZCwg
aW5jbHVkZV9pZGVudGlmaWVyPUZhbHNlKQorICAgICAgICByZXR1cm4gQ29tbWl0KAorICAgICAg
ICAgICAgcmVwb3NpdG9yeV9pZD1zZWxmLmtleSwKKyAgICAgICAgICAgIGlkPWNvbW1pdC5oYXNo
LAorICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5icmFuY2gsCisgICAgICAgICAgICB0aW1lc3Rh
bXA9Y29tbWl0LnRpbWVzdGFtcCwKKyAgICAgICAgICAgIG9yZGVyPWNvbW1pdC5vcmRlciwKKyAg
ICAgICAgICAgIGNvbW1pdHRlcj1jb21taXQuYXV0aG9yLmVtYWlsLAorICAgICAgICAgICAgbWVz
c2FnZT1jb21taXQubWVzc2FnZSwKICAgICAgICAgKQotICAgICAgICBpZiByZXN1bHQ6Ci0gICAg
ICAgICAgICByZXR1cm4geG1sdG9kaWN0LnBhcnNlKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHt9
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCB0cmFjX3VybD1Ob25lLCAqKmt3YXJncyk6
Ci0gICAgICAgIHN1cGVyKFNWTlJlcG9zaXRvcnksIHNlbGYpLl9faW5pdF9fKE5vbmUsIHVybCwg
Kiprd2FyZ3MpCi0gICAgICAgIHNlbGYudHJhY191cmwgPSB0cmFjX3VybAotICAgICAgICB3aXRo
IHNlbGYuc2Vzc2lvbigpOgotICAgICAgICAgICAgc2VsZi5rZXkgPSBzZWxmLmdldCgpLmdldCgn
c3ZuJywge30pLmdldCgnaW5kZXgnKS5nZXQoJ0BiYXNlJykKLSAgICAgICAgICAgIGlmIG5vdCBz
ZWxmLmtleToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oZid7c2VsZi51cmx9IGlz
IG5vdCBhbiBTVk4gcmVwb3NpdG9yeScpCi0KLSAgICBkZWYgY29tbWl0X2Zvcl9pZChzZWxmLCBp
ZCwgYnJhbmNoPURFRkFVTFRfQlJBTkNIKToKLSAgICAgICAgd2l0aCBzZWxmLnNlc3Npb24oKToK
LSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjb21taXRfZGF0YSA9IHNlbGYuZ2V0
KGJyYW5jaD1icmFuY2gsIHJldmlzaW9uPWlkKVsnRDptdWx0aXN0YXR1cyddWydEOnJlc3BvbnNl
J11bJ0Q6cHJvcHN0YXQnXVswXVsnRDpwcm9wJ10KLSAgICAgICAgICAgICAgICBpZiBjb21taXRf
ZGF0YVsnbHAxOnZlcnNpb24tbmFtZSddICE9IHN0cihpZCk6Ci0gICAgICAgICAgICAgICAgICAg
IHJhaXNlIFNDTUV4Y2VwdGlvbihmJ1JldmlzaW9uIHtpZH0gZG9lcyBub3QgZXhpc3Qgb24gYnJh
bmNoIHticmFuY2h9JykKLQotICAgICAgICAgICAgICAgICMgT2YgdGhlIGZvcm0gJzIwMTgtMDkt
MjRUMjI6MDM6MzQuNDM2MjE3WicKLSAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBkYXRldGlt
ZS5kYXRldGltZS5zdHJwdGltZShjb21taXRfZGF0YVsnbHAxOmNyZWF0aW9uZGF0ZSddLCAnJVkt
JW0tJWRUJUg6JU06JVMuJWZaJykKLQotICAgICAgICAgICAgICAgIHJldHVybiBDb21taXQoCi0g
ICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9c2VsZi5rZXksCi0gICAgICAgICAgICAg
ICAgICAgIGlkPXN0cihpZCksCi0gICAgICAgICAgICAgICAgICAgIGJyYW5jaD1icmFuY2gsCi0g
ICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD10aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAg
ICAgIG9yZGVyPTAsCi0gICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlcj1jb21taXRfZGF0YVsn
bHAxOmNyZWF0b3ItZGlzcGxheW5hbWUnXSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAg
ICBleGNlcHQgRXhwYXRFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBTQ01FeGNlcHRpb24o
ZidGYWlsZWQgdG8gY29ubmVjdCB0byB7c2VsZi51cmx9JykKLSAgICAgICAgICAgIGV4Y2VwdCBL
ZXlFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBTQ01FeGNlcHRpb24oZidSZXZpc2lvbiB7
aWR9IGRvZXMgbm90IGV4aXN0IG9uIGJyYW5jaCB7YnJhbmNofScpCiAKICAgICBkZWYgdXJsX2Zv
cl9jb21taXQoc2VsZiwgY29tbWl0KToKLSAgICAgICAgcmV0dXJuIGYne3NlbGYudXJsfS8hc3Zu
L2JjL3tjb21taXR9LycKLQorICAgICAgICByZXR1cm4gZid7c2VsZi5yZW1vdGUudXJsfS9jb21t
aXRzL3tjb21taXR9JwogCi1jbGFzcyBXZWJLaXRSZXBvc2l0b3J5KFNWTlJlcG9zaXRvcnkpOgot
ICAgIENIQU5HRUxPR1MgPSAoCi0gICAgICAgICdDaGFuZ2VMb2cnLAotICAgICAgICAnU291cmNl
L2JtYWxsb2MvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cnLAotICAgICAgICAnU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ2hhbmdlTG9nJywKLSAg
ICAgICAgJ1NvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nJywKLSAgICAg
ICAgJ1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cnLAotICAgICAgICAn
U291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cnLAotICAgICAgICAnU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZycsCi0gICAg
ICAgICdTb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZycsCi0gICAgICAgICdTb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9DaGFuZ2VMb2cnLAotICAgICAgICAnU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
JywKLSAgICAgICAgJ1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZycsCi0gICAgICAg
ICdTb3VyY2UvV1RGL0NoYW5nZUxvZycsCi0gICAgICAgICdUb29scy9DaGFuZ2VMb2cnLAotICAg
ICAgICAnRXhhbXBsZXMvQ2hhbmdlTG9nJywKLSAgICAgICAgJ0pTVGVzdHMvQ2hhbmdlTG9nJywK
LSAgICAgICAgJ0xheW91dFRlc3RzL0NoYW5nZUxvZycsCi0gICAgICAgICdMYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZycsCi0gICAgICAgICdMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nJywK
LSAgICAgICAgJ1BlcmZvcm1hbmNlVGVzdHMvU3VuU3BpZGVyL0NoYW5nZUxvZycsCi0gICAgICAg
ICdXZWJEcml2ZXJUZXN0cy9DaGFuZ2VMb2cnLAotICAgICAgICAnV2ViS2l0TGlicmFyaWVzL0No
YW5nZUxvZycsCi0gICAgICAgICdXZWJzaXRlcy9icm93c2VyYmVuY2gub3JnL0NoYW5nZUxvZycs
Ci0gICAgICAgICdXZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvQ2hhbmdlTG9nJywKLSAgICAgICAg
J1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cnLAotICAgICAgICAnV2Vic2l0ZXMv
cGxhbmV0LndlYmtpdC5vcmcvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1dlYnNpdGVzL3dlYmtpdC5v
cmcvQ2hhbmdlTG9nJywKLSAgICAgICAgJ1dlYnNpdGVzL3dlYmtpdC5vcmcvc3BlY3MvQ1NTVmlz
dWFsRWZmZWN0cy9DaGFuZ2VMb2cnLAotICAgICkKLSAgICBDSEFOR0VfTE9HX1RIUkVBRFMgPSA2
Ci0gICAgRklSU1RfTElORV9SRUdFWCA9IHJlLmNvbXBpbGUocicoP1A8ZGF0ZT5cZCstXGQrLVxk
KylccysoP1A8bmFtZT5cUy4rXFMpXHMrPCg/UDxlbWFpbD5cUyspPicpCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcihXZWJLaXRSZXBvc2l0b3J5LCBz
ZWxmKS5fX2luaXRfXygnaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC8n
LCAqKmt3YXJncykKLQotICAgIGRlZiBjb21taXRfZm9yX2lkKHNlbGYsIGlkLCBicmFuY2g9U1ZO
UmVwb3NpdG9yeS5ERUZBVUxUX0JSQU5DSCk6Ci0gICAgICAgIHdpdGggc2VsZi5zZXNzaW9uKCk6
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdXBlcihXZWJLaXRSZXBvc2l0b3J5LCBzZWxmKS5jb21t
aXRfZm9yX2lkKGlkLCBicmFuY2g9YnJhbmNoKQotCi0gICAgICAgICAgICAjIEZpbmQgdGhlIGxh
c3QgY29tbWl0IG9uIHRoZSBnaXZlbiBicmFuY2ggc28gd2UgY2FuIGRpZmYgdGhlIGNoYW5nZWxv
Z3MKLSAgICAgICAgICAgIHByZXZpb3VzX2lkID0gc2VsZi5nZXQoYnJhbmNoPWJyYW5jaCwgcmV2
aXNpb249aW50KGlkKSAtIDEpLmdldCgKLSAgICAgICAgICAgICAgICAnRDptdWx0aXN0YXR1cycs
IHt9KS5nZXQoJ0Q6cmVzcG9uc2UnLCB7fSkuZ2V0KCdEOnByb3BzdGF0JywgW3t9XSlbMF0uZ2V0
KCdEOnByb3AnLCB7fSkuZ2V0KCdscDE6dmVyc2lvbi1uYW1lJywgTm9uZSkKLSAgICAgICAgICAg
IGJyYW5jaF91cmwgPSBmIntzZWxmLnVybH17YnJhbmNoIGlmIGJyYW5jaCA9PSBzZWxmLkRFRkFV
TFRfQlJBTkNIIGVsc2UgJ2JyYW5jaGVzLycgKyBicmFuY2h9IgotCi0gICAgICAgICAgICBjaGFu
Z2Vsb2dzID0ge30KLSAgICAgICAgICAgIHJlcXVlc3RfdGhyZWFkcyA9IFtdCi0KLSAgICAgICAg
ICAgICMgQ29tcGFyZSBjaGFuZ2Vsb2cgZnJvbSBwcmV2aW91cyBjb21taXQgdG8gdGhlIGNoYW5n
ZWxvZyBmcm9tIHRoaXMgY29tbWl0Ci0gICAgICAgICAgICBkZWYgZGlmZl9jaGFuZ2Vsb2dzKGNo
YW5nZWxvZ19saXN0KToKLSAgICAgICAgICAgICAgICBmb3IgY2hhbmdlbG9nIGluIGNoYW5nZWxv
Z19saXN0OgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3VybCA9IGYne2JyYW5jaF91cmx9
L3tjaGFuZ2Vsb2d9Lz9wPXtpZH0nCi0gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzX3VybCA9
IGYne2JyYW5jaF91cmx9L3tjaGFuZ2Vsb2d9Lz9wPXtwcmV2aW91c19pZH0nIGlmIHByZXZpb3Vz
X2lkIGVsc2UgTm9uZQotCi0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfcmVzcG9uc2UgPSBz
ZWxmLnJlcXVlc3QoY3VycmVudF91cmwpCi0gICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRf
cmVzcG9uc2Uuc3RhdHVzX2NvZGUgIT0gMjAwOgotICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNfcmVzcG9uc2UgPSBzZWxmLnJlcXVl
c3QocHJldmlvdXNfdXJsKSBpZiBwcmV2aW91c191cmwgZWxzZSBOb25lCi0gICAgICAgICAgICAg
ICAgICAgIGlmIHByZXZpb3VzX3Jlc3BvbnNlIGFuZCBwcmV2aW91c19yZXNwb25zZS5zdGF0dXNf
Y29kZSAhPSAyMDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAg
ICAgICAgICAgICAgIHByZXZpb3VzX3Jlc3BvbnNlX2xlbmd0aCA9IDAKLSAgICAgICAgICAgICAg
ICAgICAgaWYgcHJldmlvdXNfcmVzcG9uc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmV2
aW91c19yZXNwb25zZV9sZW5ndGggPSBsZW4ocHJldmlvdXNfcmVzcG9uc2UudGV4dCkKLSAgICAg
ICAgICAgICAgICAgICAgaWYgbGVuKGN1cnJlbnRfcmVzcG9uc2UudGV4dCkgPT0gcHJldmlvdXNf
cmVzcG9uc2VfbGVuZ3RoOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAg
ICAgICAgICAgICAgICAgaWYgbm90IHByZXZpb3VzX3Jlc3BvbnNlX2xlbmd0aCBvciBsZW4oY3Vy
cmVudF9yZXNwb25zZS50ZXh0KSA8IHByZXZpb3VzX3Jlc3BvbnNlX2xlbmd0aDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWxvZ3NbY2hhbmdlbG9nXSA9IGN1cnJlbnRfcmVzcG9uc2Uu
dGV4dAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlbG9nc1tjaGFuZ2Vsb2ddID0gY3VycmVudF9yZXNwb25zZS50ZXh0WzA6LWxlbihwcmV2
aW91c19yZXNwb25zZS50ZXh0KV0KLQotICAgICAgICAgICAgIyBCZWNhdXNlIHdlJ3JlIG1vc3Rs
eSBibG9ja2VkIG9uIG5ldHdvcmsgSS9PLCB0aHJlYWRzIGNhbiBzcGVlZCB0aGlzIHVwIH40eAot
ICAgICAgICAgICAgc2hhcmRzID0gW1tdIGZvciBfIGluIHJhbmdlKHNlbGYuQ0hBTkdFX0xPR19U
SFJFQURTKV0KLSAgICAgICAgICAgIGluZGV4ID0gMAotICAgICAgICAgICAgZm9yIGNoYW5nZWxv
ZyBpbiBzZWxmLkNIQU5HRUxPR1M6Ci0gICAgICAgICAgICAgICAgc2hhcmRzW2luZGV4XS5hcHBl
bmQoY2hhbmdlbG9nKQotICAgICAgICAgICAgICAgIGluZGV4ICs9IDEKLSAgICAgICAgICAgICAg
ICBpZiBpbmRleCA+PSBsZW4oc2hhcmRzKToKLSAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAw
Ci0gICAgICAgICAgICBmb3Igc2hhcmQgaW4gc2hhcmRzOgotICAgICAgICAgICAgICAgIHJlcXVl
c3RfdGhyZWFkcy5hcHBlbmQodGhyZWFkaW5nLlRocmVhZCgKLSAgICAgICAgICAgICAgICAgICAg
dGFyZ2V0PWRpZmZfY2hhbmdlbG9ncywKLSAgICAgICAgICAgICAgICAgICAga3dhcmdzPWRpY3Qo
Y2hhbmdlbG9nX2xpc3Q9c2hhcmQpLAotICAgICAgICAgICAgICAgICkpCi0gICAgICAgICAgICAg
ICAgcmVxdWVzdF90aHJlYWRzWy0xXS5zdGFydCgpCi0gICAgICAgICAgICBmb3IgdGhyZWFkIGlu
IHJlcXVlc3RfdGhyZWFkczoKLSAgICAgICAgICAgICAgICB0aHJlYWQuam9pbigpCi0KLSAgICAg
ICAgICAgIGNvbW1pdF9tZXNzYWdlID0gW10KLSAgICAgICAgICAgIGZvciBjaGFuZ2Vsb2cgaW4g
c2VsZi5DSEFOR0VMT0dTOgotICAgICAgICAgICAgICAgIHBhcnRpYWxfbWVzc2FnZSA9IGNoYW5n
ZWxvZ3MuZ2V0KGNoYW5nZWxvZywgTm9uZSkKLSAgICAgICAgICAgICAgICBpZiBub3QgcGFydGlh
bF9tZXNzYWdlOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAg
IGxpbmVzX2luX21lc3NhZ2UgPSBwYXJ0aWFsX21lc3NhZ2Uuc3BsaXQoJ1xuJykKLQotICAgICAg
ICAgICAgICAgICMgVGhlIGZpcnN0IGxpbmUgb2YgdGhlIGNvbW1pdCBtZXNzYWdlIG1pZ2h0IGNv
bnRhaW4gdGhlIHJlYWwgY29tbWl0dGVyLCBpbiB0aGUgY2FzZQotICAgICAgICAgICAgICAgICMg
Y29tbWl0IHF1ZXVlIGNvbW1pdHRlZCBhIGNoYW5nZSBvbiB0aGUgYmVoYWxmIG9mIHNvbWVvbmUK
LSAgICAgICAgICAgICAgICBzdGFydF9vZl9tZXNzYWdlX3NoYXJkID0gMAotICAgICAgICAgICAg
ICAgIG1hdGNoID0gc2VsZi5GSVJTVF9MSU5FX1JFR0VYLm1hdGNoKGxpbmVzX2luX21lc3NhZ2Vb
MF0pCi0gICAgICAgICAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG1h
dGNoLmdyb3VwKCdlbWFpbCcpICE9IHJlc3VsdC5jb21taXR0ZXI6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuY29tbWl0dGVyID0gbWF0Y2guZ3JvdXAoJ2VtYWlsJykKLSAgICAgICAg
ICAgICAgICAgICAgc3RhcnRfb2ZfbWVzc2FnZV9zaGFyZCArPSAxCi0gICAgICAgICAgICAgICAg
ICAgIHdoaWxlIG5vdCBsaW5lc19pbl9tZXNzYWdlW3N0YXJ0X29mX21lc3NhZ2Vfc2hhcmRdOgot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfb2ZfbWVzc2FnZV9zaGFyZCArPSAxCi0KLSAg
ICAgICAgICAgICAgICAjIFdlYktpdCBjb21taXQgbWVzc2FnZXMgYXJlIG9mdGVuIHNwbGl0IGFj
cm9zcyBtdWx0aXBsZSBjaGFuZ2Vsb2dzIHdpdGggdGhlIGZpcnN0IGZldyBsaW5lcyBkdXBsaWNh
dGVkLgotICAgICAgICAgICAgICAgIHN0YXJ0X29mX2Z1bGxfbWVzc2FnZSA9IDAKLSAgICAgICAg
ICAgICAgICB3aGlsZSBzdGFydF9vZl9tZXNzYWdlX3NoYXJkIDwgbGVuKGxpbmVzX2luX21lc3Nh
Z2UpIGFuZCBzdGFydF9vZl9mdWxsX21lc3NhZ2UgPCBsZW4oY29tbWl0X21lc3NhZ2UpOgotICAg
ICAgICAgICAgICAgICAgICBpZiBsaW5lc19pbl9tZXNzYWdlW3N0YXJ0X29mX21lc3NhZ2Vfc2hh
cmRdLnN0YXJ0c3dpdGgoJyAnICogOCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0g
bGluZXNfaW5fbWVzc2FnZVtzdGFydF9vZl9tZXNzYWdlX3NoYXJkXVs4Ol0KLSAgICAgICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lc19pbl9t
ZXNzYWdlW3N0YXJ0X29mX21lc3NhZ2Vfc2hhcmRdCi0gICAgICAgICAgICAgICAgICAgIGlmIGxp
bmUgIT0gY29tbWl0X21lc3NhZ2Vbc3RhcnRfb2ZfZnVsbF9tZXNzYWdlXToKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X29mX21lc3NhZ2Vf
c2hhcmQgKz0gMQotICAgICAgICAgICAgICAgICAgICBzdGFydF9vZl9mdWxsX21lc3NhZ2UgKz0g
MQogCi0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXNfaW5fbWVzc2FnZVtzdGFydF9v
Zl9tZXNzYWdlX3NoYXJkOl06Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdlLmFw
cGVuZChsaW5lWzg6XSBpZiBsaW5lLnN0YXJ0c3dpdGgoJyAnICogOCkgZWxzZSBsaW5lKQorY2xh
c3MgV2ViS2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKIAotICAgICAgICAgICAgcmVzdWx0Lm1l
c3NhZ2UgPSBzdHIoJ1xuJy5qb2luKGNvbW1pdF9tZXNzYWdlKSkgaWYgY29tbWl0X21lc3NhZ2Ug
ZWxzZSBOb25lCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnJlbW90ZSA9
IHJlbW90ZS5Tdm4oJ2h0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQnKQor
ICAgICAgICBzdXBlcihXZWJLaXRSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXygKKyAgICAgICAg
ICAgIGtleT0nd2Via2l0JywKKyAgICAgICAgICAgIGRlZmF1bHRfYnJhbmNoPXNlbGYucmVtb3Rl
LmRlZmF1bHRfYnJhbmNoLAorICAgICAgICApCiAKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQK
KyAgICBkZWYgY29tbWl0X2Zvcl9pZChzZWxmLCBpZCk6CisgICAgICAgIGNvbW1pdCA9IHNlbGYu
cmVtb3RlLmNvbW1pdChyZXZpc2lvbj1pZCwgaW5jbHVkZV9pZGVudGlmaWVyPUZhbHNlKQorICAg
ICAgICByZXR1cm4gQ29tbWl0KAorICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1zZWxmLmtleSwK
KyAgICAgICAgICAgIGlkPWNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAgICAgIGJyYW5jaD1jb21t
aXQuYnJhbmNoLAorICAgICAgICAgICAgdGltZXN0YW1wPWNvbW1pdC50aW1lc3RhbXAsCisgICAg
ICAgICAgICBvcmRlcj1jb21taXQub3JkZXIsCisgICAgICAgICAgICBjb21taXR0ZXI9Y29tbWl0
LmF1dGhvci5lbWFpbCwKKyAgICAgICAgICAgIG1lc3NhZ2U9Y29tbWl0Lm1lc3NhZ2UsCisgICAg
ICAgICkKIAogICAgIGRlZiB1cmxfZm9yX2NvbW1pdChzZWxmLCBjb21taXQpOgotICAgICAgICBy
ZXR1cm4gZidodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQve2NvbW1pdH0ve3NlbGYu
a2V5fScKKyAgICAgICAgcmV0dXJuIGYnaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvcntjb21t
aXR9JwpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvbW9kZWwvcmVwb3NpdG9yeV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZXBvc2l0b3J5X3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyNzQwNzkpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9y
ZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC9yZXBvc2l0b3J5X3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMCw4NCArMjAsNTMgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAotaW1wb3J0IGpzb24KLQotZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VT
dHJpY3RSZWRpcwotZnJvbSByZWRpcyBpbXBvcnQgU3RyaWN0UmVkaXMKLWZyb20gcmVzdWx0c2Ri
cHkuY29udHJvbGxlci5jb21taXQgaW1wb3J0IENvbW1pdAotZnJvbSByZXN1bHRzZGJweS5tb2Rl
bC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTdGFzaFJlcG9zaXRvcnksIE1vY2tTVk5SZXBv
c2l0b3J5Ci1mcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLnJlcG9zaXRvcnkgaW1wb3J0IFNDTUV4Y2Vw
dGlvbgorZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1v
Y2tNb2RlbEZhY3RvcnkKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQg
U3Rhc2hSZXBvc2l0b3J5LCBXZWJLaXRSZXBvc2l0b3J5CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVs
LndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQog
CiAKIGNsYXNzIFJlcG9zaXRvcnlUZXN0KFdhaXRGb3JEb2NrZXJUZXN0Q2FzZSk6CiAKLSAgICBA
V2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0
cmljdFJlZGlzKQotICAgIGRlZiB0ZXN0X3N2bihzZWxmLCByZWRpcz1TdHJpY3RSZWRpcyk6Ci0g
ICAgICAgIHN2bl9yZXBvID0gTW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KHJlZGlzPXJlZGlzKCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnd2Via2l0Jywgc3ZuX3JlcG8ua2V5KQotICAgICAg
ICBjb21taXQgPSBzdm5fcmVwby5jb21taXRfZm9yX2lkKDIzNjU0NCwgYnJhbmNoPSd0cnVuaycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQsIDE1MzgwNTI0MDgwMCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQubWVzc2FnZSwgJ0NoYW5nZSAxIGRlc2NyaXB0
aW9uLlxuJykKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMpCi0gICAgZGVmIHRlc3RfYnJhbmNoX3N2bihzZWxm
LCByZWRpcz1TdHJpY3RSZWRpcyk6Ci0gICAgICAgIHN2bl9yZXBvID0gTW9ja1NWTlJlcG9zaXRv
cnkud2Via2l0KHJlZGlzPXJlZGlzKCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
U0NNRXhjZXB0aW9uKToKLSAgICAgICAgICAgIHN2bl9yZXBvLmNvbW1pdF9mb3JfaWQoMjM2MzM1
LCBicmFuY2g9J3RydW5rJykKLSAgICAgICAgY29tbWl0ID0gc3ZuX3JlcG8uY29tbWl0X2Zvcl9p
ZCgyMzYzMzUsIGJyYW5jaD0nc2FmYXJpLTYwNi1icmFuY2gnKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbW1pdC51dWlkLCAxNTM4MDI5NDgwMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY29tbWl0Lm1lc3NhZ2UsICdJbnRlZ3JhdGlvbiAxLlxuJykKLQotICAgIEBXYWl0Rm9yRG9j
a2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMp
Ci0gICAgZGVmIHRlc3RfYmFzaWNfc3ZuKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzKToKLSAgICAg
ICAgc3ZuX3JlcG8gPSBNb2NrU1ZOUmVwb3NpdG9yeSh1cmw9J3N2bi53ZWJraXQub3JnL3JlcG9z
aXRvcnkvd2Via2l0LycsIG5hbWU9J3dlYmtpdCcsIHJlZGlzPXJlZGlzKCkpCi0gICAgICAgIHN2
bl9yZXBvLmFkZF9jb21taXQoQ29tbWl0KAotICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1zdm5f
cmVwby5uYW1lLCBicmFuY2g9J3RydW5rJywgaWQ9MjM2NTQ0LAotICAgICAgICAgICAgdGltZXN0
YW1wPTE1MzgwNTI0MDgsIG9yZGVyPTAsCi0gICAgICAgICAgICBjb21taXR0ZXI9J3BlcnNvbjFA
d2Via2l0Lm9yZycsCi0gICAgICAgICAgICBtZXNzYWdlPSdDaGFuZ2UgMSBkZXNjcmlwdGlvbi4n
LAotICAgICAgICApKQotICAgICAgICBjb21taXQgPSBzdm5fcmVwby5jb21taXRfZm9yX2lkKDIz
NjU0NCwgYnJhbmNoPSd0cnVuaycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1
aWQsIDE1MzgwNTI0MDgwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29tbWl0Lm1lc3Nh
Z2UsIE5vbmUpCi0KLSAgICBAV2FpdEZvckRvY2tlclRlc3RDYXNlLm1vY2tfaWZfbm9fZG9ja2Vy
KG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzKQotICAgIGRlZiB0ZXN0X3N0YXNoKHNlbGYsIHJl
ZGlzPVN0cmljdFJlZGlzKToKLSAgICAgICAgZ2l0X3JlcG8gPSBNb2NrU3Rhc2hSZXBvc2l0b3J5
LnNhZmFyaShyZWRpcz1yZWRpcygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYWZhcmkn
LCBnaXRfcmVwby5rZXkpCi0gICAgICAgIGNvbW1pdCA9IGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQo
J2JiNmJkYTVmNDRkZDI0ZCcsIGJyYW5jaD0nbWFzdGVyJykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjb21taXQudXVpZCwgMTUzNzgxMDI4MTAwKQotCi0gICAgQFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcykKLSAgICBk
ZWYgdGVzdF9jb2xsaWRpbmdfdGltZXN0YW1wc19zdGFzaChzZWxmLCByZWRpcz1TdHJpY3RSZWRp
cyk6Ci0gICAgICAgIGdpdF9yZXBvID0gTW9ja1N0YXNoUmVwb3NpdG9yeS5zYWZhcmkocmVkaXM9
cmVkaXMoKSkKLSAgICAgICAgY29tbWl0MSA9IGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQoJ2U2NDgx
MGE0MCcsIGJyYW5jaD0nbWFzdGVyJykKLSAgICAgICAgY29tbWl0MiA9IGdpdF9yZXBvLmNvbW1p
dF9mb3JfaWQoJzdiZTQwODQyNScsIGJyYW5jaD0nbWFzdGVyJykKLQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNvbW1pdDEudGltZXN0YW1wLCBjb21taXQyLnRpbWVzdGFtcCkKLSAgICAgICAg
c2VsZi5hc3NlcnROb3RFcXVhbChjb21taXQxLnV1aWQsIGNvbW1pdDIudXVpZCkKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGNvbW1pdDEgPCBjb21taXQyKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbW1pdDEub3JkZXIsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0Mi5v
cmRlciwgMSkKLQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMpCi0gICAgZGVmIHRlc3RfYnJhbmNoX3N0YXNoKHNl
bGYsIHJlZGlzPVN0cmljdFJlZGlzKToKLSAgICAgICAgZ2l0X3JlcG8gPSBNb2NrU3Rhc2hSZXBv
c2l0b3J5LnNhZmFyaShyZWRpcz1yZWRpcygpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKFNDTUV4Y2VwdGlvbik6Ci0gICAgICAgICAgICBnaXRfcmVwby5jb21taXRfZm9yX2lkKCdk
ODUyMjJkOTQwN2ZkJywgYnJhbmNoPSdtYXN0ZXInKQotICAgICAgICBjb21taXQgPSBnaXRfcmVw
by5jb21taXRfZm9yX2lkKCdkODUyMjJkOTQwN2ZkJywgYnJhbmNoPSdzYWZhcmktNjA2LWJyYW5j
aCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQsIDE1Mzc1NjMzODMwMCkK
LQotICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIobW9ja19yZWRp
cz1GYWtlU3RyaWN0UmVkaXMpCi0gICAgZGVmIHRlc3Rfc3Rhc2hfYWxyZWFkeV9jYWNoZWQoc2Vs
ZiwgcmVkaXM9U3RyaWN0UmVkaXMpOgotICAgICAgICByZWRpc19pbnN0YW5jZSA9IHJlZGlzKCkK
LSAgICAgICAgZ2l0X3JlcG8gPSBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRpcz1yZWRp
c19pbnN0YW5jZSkKLSAgICAgICAgcmVkaXNfaW5zdGFuY2Uuc2V0KAotICAgICAgICAgICAgJ3Jl
cG9zaXRvcnk6JyArIGdpdF9yZXBvLnVybCArICcvY29tbWl0cz9zaW5jZT0zMzY2MTBhNDBjM2Zl
Y2I3Mjg4NzFlMTJjYTMxNDgyY2E3MTViMzgzJnVudGlsPXJlZnMlMkZoZWFkcyUyRm1hc3RlciZs
aW1pdD0xJywKLSAgICAgICAgICAgIGpzb24uZHVtcHMoZGljdCh2YWx1ZXM9W10sIHNpemU9MCwg
aXNMYXN0UGFnZT1UcnVlKSksCi0gICAgICAgICkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdzYWZhcmknLCBnaXRfcmVwby5rZXkpCi0gICAgICAgIGNvbW1pdCA9IGdpdF9yZXBvLmNvbW1p
dF9mb3JfaWQoJzMzNjYxMGE0JywgYnJhbmNoPSdtYXN0ZXInKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbW1pdC51dWlkLCAxNTM3NTY2Mzg2MDApCisgICAgZGVmIHRlc3Rfc3ZuKHNlbGYp
OgorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBz
dm5fcmVwbyA9IFdlYktpdFJlcG9zaXRvcnkoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCd3ZWJraXQnLCBzdm5fcmVwby5rZXkpCisgICAgICAgICAgICBjb21taXQgPSBzdm5fcmVwby5j
b21taXRfZm9yX2lkKDYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC51dWlk
LCAxNjAxNjM5OTAwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5tZXNz
YWdlLCAnNnRoIGNvbW1pdCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5i
cmFuY2gsICd0cnVuaycpCisKKyAgICBkZWYgdGVzdF9icmFuY2hfc3ZuKHNlbGYpOgorICAgICAg
ICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBzdm5fcmVwbyA9
IFdlYktpdFJlcG9zaXRvcnkoKQorICAgICAgICAgICAgY29tbWl0ID0gc3ZuX3JlcG8uY29tbWl0
X2Zvcl9pZCg3KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQudXVpZCwgMTYw
MTY0MDkwMDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQubWVzc2FnZSwg
Jzd0aCBjb21taXQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQuYnJhbmNo
LCAnYnJhbmNoLWEnKQorCisgICAgZGVmIHRlc3Rfc3Rhc2goc2VsZik6CisgICAgICAgIHdpdGgg
TW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSBhcyBzYWZhcmk6CisgICAgICAgICAgICBnaXRfcmVw
byA9IFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly97fScuZm9ybWF0KHNhZmFyaS5yZW1vdGUpKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc2FmYXJpJywgZ2l0X3JlcG8ua2V5KQorICAg
ICAgICAgICAgY29tbWl0ID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnMWFiZTI1YjQ0M2U5JykK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LnV1aWQsIDE2MDE2NjMwMDAwMCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0LmJyYW5jaCwgJ21haW4nKQorCisg
ICAgZGVmIHRlc3RfY29sbGlkaW5nX3RpbWVzdGFtcHNfc3Rhc2goc2VsZik6CisgICAgICAgIHdp
dGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmkoKSBhcyBzYWZhcmk6CisgICAgICAgICAgICBnaXRf
cmVwbyA9IFN0YXNoUmVwb3NpdG9yeSgnaHR0cHM6Ly97fScuZm9ybWF0KHNhZmFyaS5yZW1vdGUp
KQorICAgICAgICAgICAgY29tbWl0MSA9IGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQoJ2JhZTVkMWU5
MDk5OScpCisgICAgICAgICAgICBjb21taXQyID0gZ2l0X3JlcG8uY29tbWl0X2Zvcl9pZCgnZDhi
Y2UyNmZhNjVjJykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQxLnRpbWVz
dGFtcCwgY29tbWl0Mi50aW1lc3RhbXApCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFs
KGNvbW1pdDEudXVpZCwgY29tbWl0Mi51dWlkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGNvbW1pdDEgPCBjb21taXQyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQx
Lm9yZGVyLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXQyLm9yZGVyLCAx
KQorCisgICAgZGVmIHRlc3RfYnJhbmNoX3N0YXNoKHNlbGYpOgorICAgICAgICB3aXRoIE1vY2tN
b2RlbEZhY3Rvcnkuc2FmYXJpKCkgYXMgc2FmYXJpOgorICAgICAgICAgICAgZ2l0X3JlcG8gPSBT
dGFzaFJlcG9zaXRvcnkoJ2h0dHBzOi8ve30nLmZvcm1hdChzYWZhcmkucmVtb3RlKSkKKyAgICAg
ICAgICAgIGNvbW1pdCA9IGdpdF9yZXBvLmNvbW1pdF9mb3JfaWQoJzYyMTY1MmFkZDdmYycpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC51dWlkLCAxNjAxNjY2MDAwMDApCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1pdC5icmFuY2gsICdicmFuY2gtYScpCklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC9zdWl0ZV9jb250ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3N1aXRlX2NvbnRleHRfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI3NDA3OSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3N1aXRlX2NvbnRleHRfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjgsNyArMjgsNiBAQCBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlv
CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5k
cmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQg
aW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tf
bW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5t
b2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTVk5SZXBvc2l0b3J5CiBmcm9tIHJlc3Vs
dHNkYnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRpb25zCiBmcm9tIHJlc3Vs
dHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2Nr
ZXJUZXN0Q2FzZQogCkBAIC0zNywxMCArMzYsMTEgQEAgY2xhc3MgU3VpdGVDb250ZXh0VGVzdChX
YWl0Rm9yRG9ja2VyVGVzdAogICAgIEtFWVNQQUNFID0gJ3N1aXRlX2NvbnRleHRfdGVzdF9rZXlz
cGFjZScKIAogICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBj
YXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCwgdGVzdF9yZXN1bHRzPU5vbmUpOgotICAgICAgICBj
YXNzYW5kcmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxmLktFWVNQQUNFKQotICAgICAgICBz
ZWxmLm1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUocmVkaXM9cmVkaXMoKSwgY2Fzc2Fu
ZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNFLCBjcmVhdGVfa2V5c3BhY2U9VHJ1
ZSkpCi0gICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhzZWxmLm1vZGVs
LCB0ZXN0X3Jlc3VsdHM9dGVzdF9yZXN1bHRzKQotICAgICAgICBNb2NrTW9kZWxGYWN0b3J5LnBy
b2Nlc3NfcmVzdWx0cyhzZWxmLm1vZGVsKQorICAgICAgICB3aXRoIE1vY2tNb2RlbEZhY3Rvcnku
c2FmYXJpKCksIE1vY2tNb2RlbEZhY3Rvcnkud2Via2l0KCk6CisgICAgICAgICAgICBjYXNzYW5k
cmEuZHJvcF9rZXlzcGFjZShrZXlzcGFjZT1zZWxmLktFWVNQQUNFKQorICAgICAgICAgICAgc2Vs
Zi5tb2RlbCA9IE1vY2tNb2RlbEZhY3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRy
YT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUp
KQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1bHRzKHNlbGYubW9k
ZWwsIHRlc3RfcmVzdWx0cz10ZXN0X3Jlc3VsdHMpCisgICAgICAgICAgICBNb2NrTW9kZWxGYWN0
b3J5LnByb2Nlc3NfcmVzdWx0cyhzZWxmLm1vZGVsKQogCiAgICAgQFdhaXRGb3JEb2NrZXJUZXN0
Q2FzZS5tb2NrX2lmX25vX2RvY2tlcihtb2NrX3JlZGlzPUZha2VTdHJpY3RSZWRpcywgbW9ja19j
YXNzYW5kcmE9TW9ja0Nhc3NhbmRyYUNvbnRleHQpCiAgICAgZGVmIHRlc3RfZmluZF9hbGwoc2Vs
ZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3NhbmRyYT1DYXNzYW5kcmFDb250ZXh0KToKQEAgLTYw
LDcgKzYwLDggQEAgY2xhc3MgU3VpdGVDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzdAogICAg
ICAgICByZXN1bHRzID0gc2VsZi5tb2RlbC5zdWl0ZV9jb250ZXh0LmZpbmRfYnlfY29tbWl0KAog
ICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycs
IHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCiAgICAgICAgICAgICBzdWl0ZT0nbGF5
b3V0LXRlc3RzJywgcmVjZW50PUZhbHNlLAotICAgICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9z
aXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRv
cnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDMpLAorICAgICAgICAgICAgYmVnaW49MTYw
MTY2MTAwMCwKKyAgICAgICAgICAgIGVuZD0xNjAxNjYzMDAwLAogICAgICAgICApCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCAyKQogICAgICAgICBmb3IgcmVzdWx0c19m
b3JfY29uZmlnIGluIHJlc3VsdHMudmFsdWVzKCk6CkBAIC04Niw3ICs4Nyw4IEBAIGNsYXNzIFN1
aXRlQ29udGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3QKICAgICAgICAgcmVzdWx0cyA9IHNlbGYu
bW9kZWwuc3VpdGVfY29udGV4dC5maW5kX2J5X3N0YXJ0X3RpbWUoCiAgICAgICAgICAgICBjb25m
aWd1cmF0aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2Un
LCBmbGF2b3I9J3drMScpXSwKICAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAotICAg
ICAgICAgICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgy
MzY1NDIpLCBlbmQ9TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1
NDIpLAorICAgICAgICAgICAgYmVnaW49MTYwMTY2MDAwMCwKKyAgICAgICAgICAgIGVuZD0xNjAx
NjYwMDAwLAogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTEyMCw4
ICsxMjIsOCBAQCBjbGFzcyBTdWl0ZUNvbnRleHRUZXN0KFdhaXRGb3JEb2NrZXJUZXN0CiAgICAg
ICAgIHJlc3VsdHMgPSBzZWxmLm1vZGVsLnN1aXRlX2NvbnRleHQuZmluZF9ieV9zdGFydF90aW1l
KAogICAgICAgICAgICAgY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01h
YycsIHN0eWxlPSdSZWxlYXNlJywgZmxhdm9yPSd3azEnKV0sCiAgICAgICAgICAgICBzdWl0ZT0n
bGF5b3V0LXRlc3RzJywKLSAgICAgICAgICAgIGJlZ2luPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtp
dCgpLmNvbW1pdF9mb3JfaWQoMjM2NTQyKSwKLSAgICAgICAgICAgIGVuZD1Nb2NrU1ZOUmVwb3Np
dG9yeS53ZWJraXQoKS5jb21taXRfZm9yX2lkKDIzNjU0MiksCisgICAgICAgICAgICBiZWdpbj0x
NjAxNjYwMDAwLAorICAgICAgICAgICAgZW5kPTE2MDE2NjAwMDAsCiAgICAgICAgICkKIAogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKApAQCAtMTU2LDggKzE1OCw4IEBAIGNsYXNzIFN1aXRlQ29u
dGV4dFRlc3QoV2FpdEZvckRvY2tlclRlc3QKICAgICAgICAgcmVzdWx0cyA9IHNlbGYubW9kZWwu
c3VpdGVfY29udGV4dC5maW5kX2J5X3N0YXJ0X3RpbWUoCiAgICAgICAgICAgICBjb25maWd1cmF0
aW9ucz1bQ29uZmlndXJhdGlvbihwbGF0Zm9ybT0nTWFjJywgc3R5bGU9J1JlbGVhc2UnLCBmbGF2
b3I9J3drMScpXSwKICAgICAgICAgICAgIHN1aXRlPSdsYXlvdXQtdGVzdHMnLAotICAgICAgICAg
ICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIp
LAotICAgICAgICAgICAgZW5kPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3Jf
aWQoMjM2NTQyKSwKKyAgICAgICAgICAgIGJlZ2luPTE2MDE2NjAwMDAsCisgICAgICAgICAgICBl
bmQ9MTYwMTY2MDAwMCwKICAgICAgICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS9tb2Rl
bC90ZXN0X2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdGVzdF9jb250ZXh0X3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyNzQwNzkpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS9tb2RlbC90ZXN0X2NvbnRleHRfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjgsNyArMjgsNiBAQCBmcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvCiBm
cm9tIHJlc3VsdHNkYnB5Lm1vZGVsLmNhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBDYXNzYW5kcmFD
b250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRleHQgaW1w
b3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfbW9k
ZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJweS5tb2Rl
bC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTVk5SZXBvc2l0b3J5CiBmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLnRlc3RfY29udGV4dCBpbXBvcnQgRXhwZWN0YXRpb25zCiBmcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJU
ZXN0Q2FzZQogCkBAIC0zNywxMCArMzYsMTEgQEAgY2xhc3MgVGVzdENvbnRleHRUZXN0KFdhaXRG
b3JEb2NrZXJUZXN0QwogICAgIEtFWVNQQUNFID0gJ3Rlc3RfY29udGV4dF90ZXN0X2tleXNwYWNl
JwogCiAgICAgZGVmIGluaXRfZGF0YWJhc2Uoc2VsZiwgcmVkaXM9U3RyaWN0UmVkaXMsIGNhc3Nh
bmRyYT1DYXNzYW5kcmFDb250ZXh0KToKLSAgICAgICAgY2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uo
a2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKLSAgICAgICAgc2VsZi5tb2RlbCA9IE1vY2tNb2RlbEZh
Y3RvcnkuY3JlYXRlKHJlZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9
c2VsZi5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpKQotICAgICAgICBNb2NrTW9kZWxG
YWN0b3J5LmFkZF9tb2NrX3Jlc3VsdHMoc2VsZi5tb2RlbCkKLSAgICAgICAgTW9ja01vZGVsRmFj
dG9yeS5wcm9jZXNzX3Jlc3VsdHMoc2VsZi5tb2RlbCkKKyAgICAgICAgd2l0aCBNb2NrTW9kZWxG
YWN0b3J5LnNhZmFyaSgpLCBNb2NrTW9kZWxGYWN0b3J5LndlYmtpdCgpOgorICAgICAgICAgICAg
Y2Fzc2FuZHJhLmRyb3Bfa2V5c3BhY2Uoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSkKKyAgICAgICAg
ICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZShyZWRpcz1yZWRpcygpLCBj
YXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UsIGNyZWF0ZV9rZXlzcGFj
ZT1UcnVlKSkKKyAgICAgICAgICAgIE1vY2tNb2RlbEZhY3RvcnkuYWRkX21vY2tfcmVzdWx0cyhz
ZWxmLm1vZGVsKQorICAgICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5wcm9jZXNzX3Jlc3VsdHMo
c2VsZi5tb2RlbCkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2Nr
ZXIobW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5k
cmFDb250ZXh0KQogICAgIGRlZiB0ZXN0X2xpc3RfYWxsKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlz
LCBjYXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCk6CkBAIC04NCw4ICs4NCw4IEBAIGNsYXNzIFRl
c3RDb250ZXh0VGVzdChXYWl0Rm9yRG9ja2VyVGVzdEMKICAgICAgICAgcmVzdWx0cyA9IHNlbGYu
bW9kZWwudGVzdF9jb250ZXh0LmZpbmRfYnlfY29tbWl0KAogICAgICAgICAgICAgY29uZmlndXJh
dGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxhdGZvcm09J01hYycsIHN0eWxlPSdSZWxlYXNlJywgZmxh
dm9yPSd3azEnKV0sCiAgICAgICAgICAgICBzdWl0ZT0nbGF5b3V0LXRlc3RzJywgdGVzdD0nZmFz
dC9lbmNvZGluZy9jc3MtY2FjaGVkLWJvbS5odG1sJywgcmVjZW50PUZhbHNlLAotICAgICAgICAg
ICAgYmVnaW49TW9ja1NWTlJlcG9zaXRvcnkud2Via2l0KCkuY29tbWl0X2Zvcl9pZCgyMzY1NDIp
LAotICAgICAgICAgICAgZW5kPU1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9mb3Jf
aWQoMjM2NTQzKSwKKyAgICAgICAgICAgIGJlZ2luPTE2MDE2NjEwMDAsCisgICAgICAgICAgICBl
bmQ9MTYwMTY2MzAwMCwKICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihy
ZXN1bHRzKSwgMikKICAgICAgICAgZm9yIHJlc3VsdHNfZm9yX2NvbmZpZyBpbiByZXN1bHRzLnZh
bHVlcygpOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0
c2RicHkvbW9kZWwvdXBsb2FkX2NvbnRleHRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvbW9kZWwvdXBsb2Fk
X2NvbnRleHRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3NDA3OSkKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L21vZGVsL3VwbG9hZF9jb250ZXh0X3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM0LDExICszNCwxMiBAQCBjbGFzcyBVcGxvYWRDb250ZXh0VGVzdChX
YWl0Rm9yRG9ja2VyVGVzCiAgICAgS0VZU1BBQ0UgPSAndXBsb2FkX2NvbnRleHRfdGVzdF9rZXlz
cGFjZScKIAogICAgIGRlZiBpbml0X2RhdGFiYXNlKHNlbGYsIHJlZGlzPVN0cmljdFJlZGlzLCBj
YXNzYW5kcmE9Q2Fzc2FuZHJhQ29udGV4dCwgYXN5bmNfcHJvY2Vzc2luZz1GYWxzZSk6Ci0gICAg
ICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpCi0gICAg
ICAgIHNlbGYubW9kZWwgPSBNb2NrTW9kZWxGYWN0b3J5LmNyZWF0ZSgKLSAgICAgICAgICAgIHJl
ZGlzPXJlZGlzKCksIGNhc3NhbmRyYT1jYXNzYW5kcmEoa2V5c3BhY2U9c2VsZi5LRVlTUEFDRSwg
Y3JlYXRlX2tleXNwYWNlPVRydWUpLAotICAgICAgICAgICAgYXN5bmNfcHJvY2Vzc2luZz1hc3lu
Y19wcm9jZXNzaW5nLAotICAgICAgICApCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5z
YWZhcmkoKSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIGNhc3NhbmRy
YS5kcm9wX2tleXNwYWNlKGtleXNwYWNlPXNlbGYuS0VZU1BBQ0UpCisgICAgICAgICAgICBzZWxm
Lm1vZGVsID0gTW9ja01vZGVsRmFjdG9yeS5jcmVhdGUoCisgICAgICAgICAgICAgICAgcmVkaXM9
cmVkaXMoKSwgY2Fzc2FuZHJhPWNhc3NhbmRyYShrZXlzcGFjZT1zZWxmLktFWVNQQUNFLCBjcmVh
dGVfa2V5c3BhY2U9VHJ1ZSksCisgICAgICAgICAgICAgICAgYXN5bmNfcHJvY2Vzc2luZz1hc3lu
Y19wcm9jZXNzaW5nLAorICAgICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfemlwcGluZyhzZWxm
KToKICAgICAgICAgemlwcGVkX2J5dGVzID0gVXBsb2FkQ29udGV4dC50b196aXAoJ3NvbWVzdHJp
bmcnICogMTAwKQpAQCAtODksNyArOTAsNyBAQCBjbGFzcyBVcGxvYWRDb250ZXh0VGVzdChXYWl0
Rm9yRG9ja2VyVGVzCiAgICAgICAgIHNlbGYuaW5pdF9kYXRhYmFzZShyZWRpcz1yZWRpcywgY2Fz
c2FuZHJhPWNhc3NhbmRyYSkKICAgICAgICAgTW9ja01vZGVsRmFjdG9yeS5hZGRfbW9ja19yZXN1
bHRzKHNlbGYubW9kZWwpCiAKLSAgICAgICAgcmVzdWx0cyA9IHNlbGYubW9kZWwudXBsb2FkX2Nv
bnRleHQuZmluZF90ZXN0X3Jlc3VsdHMoY29uZmlndXJhdGlvbnM9W0NvbmZpZ3VyYXRpb24ocGxh
dGZvcm09J2lPUycsIGlzX3NpbXVsYXRvcj1UcnVlKV0sIHN1aXRlPSdsYXlvdXQtdGVzdHMnLCBi
cmFuY2g9J3NhZmFyaS02MDYtYnJhbmNoJywgcmVjZW50PVRydWUpCisgICAgICAgIHJlc3VsdHMg
PSBzZWxmLm1vZGVsLnVwbG9hZF9jb250ZXh0LmZpbmRfdGVzdF9yZXN1bHRzKGNvbmZpZ3VyYXRp
b25zPVtDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCBpc19zaW11bGF0b3I9VHJ1ZSldLCBz
dWl0ZT0nbGF5b3V0LXRlc3RzJywgYnJhbmNoPSdicmFuY2gtYScsIHJlY2VudD1UcnVlKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihyZXN1bHRzKSkKICAgICAgICAgZm9yIGNvbmZp
ZywgdmFsdWVzIGluIHJlc3VsdHMuaXRlbXMoKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY29uZmlnLCBDb25maWd1cmF0aW9uKHBsYXRmb3JtPSdpT1MnLCBpc19zaW11bGF0b3I9VHJ1
ZSkpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS92aWV3L2FyY2hpdmVfdmlld191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL2xpYnJhcmllcy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L2FyY2hpdmVfdmlld191
bml0dGVzdC5weQkocmV2aXNpb24gMjc0MDc5KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9hcmNoaXZlX3ZpZXdfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjIsNyArMjIsNiBAQAogCiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQganNvbgotaW1wb3J0IHRp
bWUKIAogZnJvbSBmYWtlcmVkaXMgaW1wb3J0IEZha2VTdHJpY3RSZWRpcwogZnJvbSByZXN1bHRz
ZGJweS5jb250cm9sbGVyLmNvbW1pdCBpbXBvcnQgQ29tbWl0CkBAIC0zMCwxMCArMjksOCBAQCBm
cm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29uZmlndXJhdGlvCiBmcm9tIHJlc3VsdHNkYnB5
Lm1vZGVsLmNvbmZpZ3VyYXRpb25fY29udGV4dF91bml0dGVzdCBpbXBvcnQgQ29uZmlndXJhdGlv
bkNvbnRleHRUZXN0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1vY2tfY2Fzc2FuZHJhX2NvbnRl
eHQgaW1wb3J0IE1vY2tDYXNzYW5kcmFDb250ZXh0CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLm1v
Y2tfbW9kZWxfZmFjdG9yeSBpbXBvcnQgTW9ja01vZGVsRmFjdG9yeQotZnJvbSByZXN1bHRzZGJw
eS5tb2RlbC5tb2NrX3JlcG9zaXRvcnkgaW1wb3J0IE1vY2tTdGFzaFJlcG9zaXRvcnksIE1vY2tT
Vk5SZXBvc2l0b3J5CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVsLndhaXRfZm9yX2RvY2tlcl90ZXN0
X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQogZnJvbSByZXN1bHRzZGJweS52aWV3
LnZpZXdfcm91dGVzX3VuaXR0ZXN0IGltcG9ydCBXZWJTaXRlVGVzdENhc2UKLWZyb20gc2VsZW5p
dW0ud2ViZHJpdmVyLnN1cHBvcnQuc2VsZWN0IGltcG9ydCBTZWxlY3QKIAogCiBjbGFzcyBBcmNo
aXZlVmlld1VuaXR0ZXN0KFdlYlNpdGVUZXN0Q2FzZSk6CkBAIC00Myw3ICs0MCwyMyBAQCBjbGFz
cyBBcmNoaXZlVmlld1VuaXR0ZXN0KFdlYlNpdGVUZXN0Q2FzCiAgICAgICAgICAgICBkYXRhPWRp
Y3QoCiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1qc29uLmR1bXBzKENvbmZpZ3VyYXRp
b25Db250ZXh0VGVzdC5DT05GSUdVUkFUSU9OU1swXSwgY2xzPUNvbmZpZ3VyYXRpb24uRW5jb2Rl
ciksCiAgICAgICAgICAgICAgICAgc3VpdGU9J2xheW91dC10ZXN0cycsCi0gICAgICAgICAgICAg
ICAgY29tbWl0cz1qc29uLmR1bXBzKFtNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaSgpLmNvbW1p
dF9mb3JfaWQoJ2JiNmJkYTVmJyksIE1vY2tTVk5SZXBvc2l0b3J5LndlYmtpdCgpLmNvbW1pdF9m
b3JfaWQoMjM2NTQyKV0sIGNscz1Db21taXQuRW5jb2RlciksCisgICAgICAgICAgICAgICAgY29t
bWl0cz1qc29uLmR1bXBzKFtkaWN0KAorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lk
PSdzYWZhcmknLAorICAgICAgICAgICAgICAgICAgICBpZD0nZDhiY2UyNmZhNjVjNmZjOGYzOWMx
NzkyN2FiYjc3ZjY5ZmFiODJmYycsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaD0nbWFpbics
CisgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0xNjAxNjY4MDAwLAorICAgICAgICAgICAg
ICAgICAgICBvcmRlcj0xLAorICAgICAgICAgICAgICAgICAgICBjb21taXR0ZXI9J2piZWRhcmRA
YXBwbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nUGF0Y2ggU2VyaWVzXG4n
LAorICAgICAgICAgICAgICAgICksIGRpY3QoCisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRv
cnlfaWQ9J3dlYmtpdCcsCisgICAgICAgICAgICAgICAgICAgIGlkPSc2JywKKyAgICAgICAgICAg
ICAgICAgICAgYnJhbmNoPSd0cnVuaycsCisgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD0x
NjAxNjY1MTAwLAorICAgICAgICAgICAgICAgICAgICBvcmRlcj0wLAorICAgICAgICAgICAgICAg
ICAgICBjb21taXR0ZXI9J2piZWRhcmRAYXBwbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAg
bWVzc2FnZT0nNnRoIGNvbW1pdFxuJywKKyAgICAgICAgICAgICAgICApXSwgY2xzPUNvbW1pdC5F
bmNvZGVyKSwKICAgICAgICAgICAgICksCiAgICAgICAgICAgICBmaWxlcz1kaWN0KGZpbGU9YmFz
ZTY0LmI2NGRlY29kZShNb2NrTW9kZWxGYWN0b3J5LkFSQ0hJVkVfWklQKSksCiAgICAgICAgICkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3Zp
ZXcvY29tbWl0X3ZpZXdfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9jb21taXRfdmlld191bml0dGVz
dC5weQkocmV2aXNpb24gMjc0MDc5KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvdmlldy9jb21taXRfdmlld191bml0dGVzdC5weQkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5
ICsyMyw4IEBACiBpbXBvcnQgdGltZQogCiBmcm9tIGZha2VyZWRpcyBpbXBvcnQgRmFrZVN0cmlj
dFJlZGlzCi1mcm9tIHJlc3VsdHNkYnB5LmNvbnRyb2xsZXIuY29tbWl0IGltcG9ydCBDb21taXQK
IGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19jYXNzYW5kcmFfY29udGV4dCBpbXBvcnQgTW9j
a0Nhc3NhbmRyYUNvbnRleHQKLWZyb20gcmVzdWx0c2RicHkubW9kZWwubW9ja19yZXBvc2l0b3J5
IGltcG9ydCBNb2NrU3Rhc2hSZXBvc2l0b3J5LCBNb2NrU1ZOUmVwb3NpdG9yeQorZnJvbSByZXN1
bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkK
IGZyb20gcmVzdWx0c2RicHkubW9kZWwud2FpdF9mb3JfZG9ja2VyX3Rlc3RfY2FzZSBpbXBvcnQg
V2FpdEZvckRvY2tlclRlc3RDYXNlCiBmcm9tIHJlc3VsdHNkYnB5LnZpZXcudmlld19yb3V0ZXNf
dW5pdHRlc3QgaW1wb3J0IFdlYlNpdGVUZXN0Q2FzZQogZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIu
c3VwcG9ydC5zZWxlY3QgaW1wb3J0IFNlbGVjdApAQCAtMzMsMTAgKzMyLDE4IEBAIGZyb20gc2Vs
ZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQuc2VsZWN0IGkKIAogY2xhc3MgQ29tbWl0Vmlld1VuaXR0
ZXN0KFdlYlNpdGVUZXN0Q2FzZSk6CiAgICAgZGVmIHJlZ2lzdGVyX2FsbF9jb21taXRzKHNlbGYs
IGNsaWVudCk6Ci0gICAgICAgIGZvciByZXBvIGluIFtNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFy
aSgpLCBNb2NrU1ZOUmVwb3NpdG9yeS53ZWJraXQoKV06CisgICAgICAgIGZvciBuYW1lLCByZXBv
IGluIGRpY3Qoc2FmYXJpPU1vY2tNb2RlbEZhY3Rvcnkuc2FmYXJpKCksIHdlYmtpdD1Nb2NrTW9k
ZWxGYWN0b3J5LndlYmtpdCgpKS5pdGVtcygpOgogICAgICAgICAgICAgZm9yIGNvbW1pdHMgaW4g
cmVwby5jb21taXRzLnZhbHVlcygpOgogICAgICAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29t
bWl0czoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIGNsaWVudC5w
b3N0KHNlbGYuVVJMICsgJy9hcGkvY29tbWl0cy9yZWdpc3RlcicsIGRhdGE9Q29tbWl0LkVuY29k
ZXIoKS5kZWZhdWx0KGNvbW1pdCkpLnN0YXR1c19jb2RlKQorICAgICAgICAgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDIwMCwgY2xpZW50LnBvc3Qoc2VsZi5VUkwgKyAnL2FwaS9jb21taXRz
L3JlZ2lzdGVyJywgZGF0YT1kaWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9y
eV9pZD1uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgaWQ9Y29tbWl0LnJldmlzaW9uIG9y
IGNvbW1pdC5oYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWNvbW1pdC5icmFu
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9Y29tbWl0LnRpbWVzdGFtcCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyPWNvbW1pdC5vcmRlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1pdHRlcj1jb21taXQuYXV0aG9yLmVtYWlsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbWVzc2FnZT1jb21taXQubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAg
KSkuc3RhdHVzX2NvZGUpCiAKICAgICBkZWYgdW5wYWNrX2NvbW1pdF90YWJsZShzZWxmLCBjb21t
aXRfdGFibGUpOgogICAgICAgICBoZWFkZXJzID0gY29tbWl0X3RhYmxlLmZpbmRfZWxlbWVudHNf
YnlfdGFnX25hbWUoJ3RoJykKQEAgLTg1LDcgKzkyLDcgQEAgY2xhc3MgQ29tbWl0Vmlld1VuaXR0
ZXN0KFdlYlNpdGVUZXN0Q2FzZQogICAgICAgICBzZWxmLmFzc2VydEluKCd3ZWJraXQnLCBjb21t
aXRzKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVuKGNvbW1pdHNbJ3NhZmFyaSdd
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4oY29tbWl0c1snd2Via2l0J10pKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGxlbihjb21taXRzWyd3ZWJraXQnXSkpCiAKICAg
ICAgICAgcm93cyA9IGNvbW1pdF90YWJsZS5maW5kX2VsZW1lbnRfYnlfdGFnX25hbWUoJ3Rib2R5
JykuZmluZF9lbGVtZW50c19ieV90YWdfbmFtZSgndHInKQogICAgICAgICBzZWxmLmFzc2VydE5v
dEVxdWFsKApAQCAtMTIxLDI0ICsxMjgsOCBAQCBjbGFzcyBDb21taXRWaWV3VW5pdHRlc3QoV2Vi
U2l0ZVRlc3RDYXNlCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NhZmFyaScsIGNvbW1pdHMpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3dlYmtpdCcsIGNvbW1pdHMpCiAKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgxLCBsZW4oY29tbWl0c1snc2FmYXJpJ10pKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDUsIGxlbihjb21taXRzWyd3ZWJraXQnXSkpCi0KLSAgICBAV2FpdEZvckRvY2tlclRl
c3RDYXNlLm1vY2tfaWZfbm9fZG9ja2VyKG1vY2tfcmVkaXM9RmFrZVN0cmljdFJlZGlzLCBtb2Nr
X2Nhc3NhbmRyYT1Nb2NrQ2Fzc2FuZHJhQ29udGV4dCkKLSAgICBAV2ViU2l0ZVRlc3RDYXNlLmRl
Y29yYXRvcigpCi0gICAgZGVmIHRlc3RfcmFkYXJfc3RyaW5ncyhzZWxmLCBkcml2ZXIsIGNsaWVu
dCwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLnJlZ2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkK
LSAgICAgICAgZHJpdmVyLmdldChzZWxmLlVSTCArICcvY29tbWl0cz9pZD0zMzY2MTBhNCcpCi0K
LSAgICAgICAgd2hpbGUgbm90IGRyaXZlci5maW5kX2VsZW1lbnRzX2J5X2NsYXNzX25hbWUoJ2Nv
bW1pdC10YWJsZScpOgotICAgICAgICAgICAgdGltZS5zbGVlcCguMSkKLSAgICAgICAgY29tbWl0
X3RhYmxlID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jbGFzc19uYW1lKCdjb21taXQtdGFibGUn
KQotCi0gICAgICAgIGNvbW1pdHMgPSBzZWxmLnVucGFja19jb21taXRfdGFibGUoY29tbWl0X3Rh
YmxlKQotICAgICAgICBjaGFuZ2Vsb2cgPSBjb21taXRzWydzYWZhcmknXVswXS5maW5kX2VsZW1l
bnRfYnlfdGFnX25hbWUoJ2RpdicpCi0KLSAgICAgICAgcmFkYXIgPSAnPHJkYXI6Ly9wcm9ibGVt
Lzk5OTk5OTk5PicKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFuZ2Vsb2cudGV4dFs6bGVu
KHJhZGFyKV0sIHJhZGFyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxlbihjb21taXRz
WydzYWZhcmknXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgbGVuKGNvbW1pdHNbJ3dl
YmtpdCddKSkKIAogICAgIEBXYWl0Rm9yRG9ja2VyVGVzdENhc2UubW9ja19pZl9ub19kb2NrZXIo
bW9ja19yZWRpcz1GYWtlU3RyaWN0UmVkaXMsIG1vY2tfY2Fzc2FuZHJhPU1vY2tDYXNzYW5kcmFD
b250ZXh0KQogICAgIEBXZWJTaXRlVGVzdENhc2UuZGVjb3JhdG9yKCkKQEAgLTE1Niw3ICsxNDcs
NyBAQCBjbGFzcyBDb21taXRWaWV3VW5pdHRlc3QoV2ViU2l0ZVRlc3RDYXNlCiAgICAgICAgIHNl
bGYuYXNzZXJ0SW4oJ3dlYmtpdCcsIGNvbW1pdHMpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCg1LCBsZW4oY29tbWl0c1snc2FmYXJpJ10pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUs
IGxlbihjb21taXRzWyd3ZWJraXQnXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgbGVu
KGNvbW1pdHNbJ3dlYmtpdCddKSkKIAogICAgICAgICBjb250cm9scyA9IHNlbGYuZmluZF9pbnB1
dF93aXRoX25hbWUoZHJpdmVyLCAnTGltaXQ6JykuZmluZF9lbGVtZW50c19ieV90YWdfbmFtZSgn
aW5wdXQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihjb250cm9scykpCkBAIC0x
ODQsMTQgKzE3NSwxNCBAQCBjbGFzcyBDb21taXRWaWV3VW5pdHRlc3QoV2ViU2l0ZVRlc3RDYXNl
CiAgICAgQFdlYlNpdGVUZXN0Q2FzZS5kZWNvcmF0b3IoKQogICAgIGRlZiB0ZXN0X29uZV9saW5l
X3N3aXRjaChzZWxmLCBkcml2ZXIsIGNsaWVudCwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLnJl
Z2lzdGVyX2FsbF9jb21taXRzKGNsaWVudCkKLSAgICAgICAgZHJpdmVyLmdldChzZWxmLlVSTCAr
ICcvY29tbWl0cz9pZD03YmU0MDg0MicpCisgICAgICAgIGRyaXZlci5nZXQoc2VsZi5VUkwgKyAn
L2NvbW1pdHM/aWQ9ZDhiY2UyNmZhNjVjJykKIAogICAgICAgICB3aGlsZSBub3QgZHJpdmVyLmZp
bmRfZWxlbWVudHNfYnlfY2xhc3NfbmFtZSgnY29tbWl0LXRhYmxlJyk6CiAgICAgICAgICAgICB0
aW1lLnNsZWVwKC4xKQogICAgICAgICBjb21taXRfdGFibGUgPSBkcml2ZXIuZmluZF9lbGVtZW50
X2J5X2NsYXNzX25hbWUoJ2NvbW1pdC10YWJsZScpCiAKLSAgICAgICAgbGluZV8xID0gdSdDaGFu
Z2UgNCBcdTIwMTQgKFBhcnQgMikgZGVzY3JpcHRpb24uJwotICAgICAgICBsaW5lXzIgPSAnUmV2
aWV3ZWQgYnkgcGVyc29uLicKKyAgICAgICAgbGluZV8xID0gdSdQYXRjaCBTZXJpZXMnCisgICAg
ICAgIGxpbmVfMiA9ICcnCiAKICAgICAgICAgY29tbWl0cyA9IHNlbGYudW5wYWNrX2NvbW1pdF90
YWJsZShjb21taXRfdGFibGUpCiAgICAgICAgIGNoYW5nZWxvZyA9IGNvbW1pdHNbJ3NhZmFyaSdd
WzBdLmZpbmRfZWxlbWVudF9ieV90YWdfbmFtZSgnZGl2JykKQEAgLTIyOSwxMSArMjIwLDExIEBA
IGNsYXNzIENvbW1pdFZpZXdVbml0dGVzdChXZWJTaXRlVGVzdENhc2UKICAgICAgICAgc2VsZi5h
c3NlcnRJbignd2Via2l0JywgY29tbWl0cykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUs
IGxlbihjb21taXRzWydzYWZhcmknXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNSwgbGVu
KGNvbW1pdHNbJ3dlYmtpdCddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBsZW4oY29t
bWl0c1snd2Via2l0J10pKQogCiAgICAgICAgIGNvbnRyb2xzID0gc2VsZi5maW5kX2lucHV0X3dp
dGhfbmFtZShkcml2ZXIsICdCcmFuY2gnKS5maW5kX2VsZW1lbnRzX2J5X3RhZ19uYW1lKCdzZWxl
Y3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihjb250cm9scykpCi0gICAgICAg
IFNlbGVjdChjb250cm9sc1swXSkuc2VsZWN0X2J5X3Zpc2libGVfdGV4dCgnc2FmYXJpLTYwNi1i
cmFuY2gnKQorICAgICAgICBTZWxlY3QoY29udHJvbHNbMF0pLnNlbGVjdF9ieV92aXNpYmxlX3Rl
eHQoJ2JyYW5jaC1hJykKIAogICAgICAgICBzZWxmLnRvZ2dsZV9kcmF3ZXIoZHJpdmVyLCBhc3Nl
cnRfZGlzcGxheWVkPUZhbHNlKQogCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3ZpZXdfcm91dGVzX3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3Zp
ZXcvdmlld19yb3V0ZXNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3NDA3OSkKKysrIFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvdmlld19yb3V0ZXNf
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDkgKzIwLDYgQEAKICMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IG1vY2sKLWltcG9ydCBvcwotaW1w
b3J0IHJlcXVlc3RzCiBpbXBvcnQgdGltZQogCiBmcm9tIGNvbnRyb2xsZXIuYXBpX3JvdXRlcyBp
bXBvcnQgQVBJUm91dGVzCkBAIC0zMSwxMyArMjgsMTIgQEAgZnJvbSByZWRpcyBpbXBvcnQgU3Ry
aWN0UmVkaXMKIGZyb20gcmVzdWx0c2RicHkuZmxhc2tfc3VwcG9ydC5mbGFza190ZXN0Y2FzZSBp
bXBvcnQgRmxhc2tUZXN0Q2FzZQogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5jYXNzYW5kcmFfY29u
dGV4dCBpbXBvcnQgQ2Fzc2FuZHJhQ29udGV4dAogZnJvbSByZXN1bHRzZGJweS5tb2RlbC5tb2Nr
X2Nhc3NhbmRyYV9jb250ZXh0IGltcG9ydCBNb2NrQ2Fzc2FuZHJhQ29udGV4dAorZnJvbSByZXN1
bHRzZGJweS5tb2RlbC5tb2NrX21vZGVsX2ZhY3RvcnkgaW1wb3J0IE1vY2tNb2RlbEZhY3RvcnkK
IGZyb20gcmVzdWx0c2RicHkubW9kZWwubW9kZWwgaW1wb3J0IE1vZGVsCi1mcm9tIHJlc3VsdHNk
YnB5Lm1vZGVsLm1vY2tfcmVwb3NpdG9yeSBpbXBvcnQgTW9ja1N0YXNoUmVwb3NpdG9yeSwgTW9j
a1NWTlJlcG9zaXRvcnkKK2Zyb20gcmVzdWx0c2RicHkubW9kZWwucmVwb3NpdG9yeSBpbXBvcnQg
U3Rhc2hSZXBvc2l0b3J5LCBXZWJLaXRSZXBvc2l0b3J5CiBmcm9tIHJlc3VsdHNkYnB5Lm1vZGVs
LndhaXRfZm9yX2RvY2tlcl90ZXN0X2Nhc2UgaW1wb3J0IFdhaXRGb3JEb2NrZXJUZXN0Q2FzZQog
ZnJvbSByZXN1bHRzZGJweS52aWV3LnZpZXdfcm91dGVzIGltcG9ydCBWaWV3Um91dGVzCiAKLWZy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBtb2NrcwotCiAKIGNsYXNzIFdlYlNpdGVUZXN0Q2FzZShG
bGFza1Rlc3RDYXNlLCBXYWl0Rm9yRG9ja2VyVGVzdENhc2UpOgogICAgIEtFWVNQQUNFID0gJ3dl
Yl9zaXRlX3Rlc3RjYXNlX2tleXNwYWNlJwpAQCAtNTgsMTggKzU0LDIyIEBAIGNsYXNzIFdlYlNp
dGVUZXN0Q2FzZShGbGFza1Rlc3RDYXNlLCBXYWkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRl
ZiBzZXR1cF93ZWJzZXJ2ZXIoY2xzLCBhcHAsIHJlZGlzPVN0cmljdFJlZGlzLCBjYXNzYW5kcmE9
Q2Fzc2FuZHJhQ29udGV4dCk6Ci0gICAgICAgIGNhc3NhbmRyYS5kcm9wX2tleXNwYWNlKGtleXNw
YWNlPWNscy5LRVlTUEFDRSkKLSAgICAgICAgcmVkaXNfaW5zdGFuY2UgPSByZWRpcygpCi0KLSAg
ICAgICAgbW9kZWwgPSBNb2RlbCgKLSAgICAgICAgICAgIHJlZGlzPXJlZGlzX2luc3RhbmNlLCBj
YXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPWNscy5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNl
PVRydWUpLAotICAgICAgICAgICAgcmVwb3NpdG9yaWVzPVtNb2NrU1ZOUmVwb3NpdG9yeS53ZWJr
aXQocmVkaXM9cmVkaXNfaW5zdGFuY2UpLCBNb2NrU3Rhc2hSZXBvc2l0b3J5LnNhZmFyaShyZWRp
cz1yZWRpc19pbnN0YW5jZSldLAotICAgICAgICApCi0gICAgICAgIGFwaV9yb3V0ZXMgPSBBUElS
b3V0ZXMobW9kZWw9bW9kZWwsIGltcG9ydF9uYW1lPV9fbmFtZV9fKQotICAgICAgICB2aWV3X3Jv
dXRlcyA9IFZpZXdSb3V0ZXMobW9kZWw9bW9kZWwsIGNvbnRyb2xsZXI9YXBpX3JvdXRlcywgaW1w
b3J0X25hbWU9X19uYW1lX18pCisgICAgICAgIHdpdGggTW9ja01vZGVsRmFjdG9yeS5zYWZhcmko
KSwgTW9ja01vZGVsRmFjdG9yeS53ZWJraXQoKToKKyAgICAgICAgICAgIGNhc3NhbmRyYS5kcm9w
X2tleXNwYWNlKGtleXNwYWNlPWNscy5LRVlTUEFDRSkKKyAgICAgICAgICAgIHJlZGlzX2luc3Rh
bmNlID0gcmVkaXMoKQorCisgICAgICAgICAgICBtb2RlbCA9IE1vZGVsKAorICAgICAgICAgICAg
ICAgIHJlZGlzPXJlZGlzX2luc3RhbmNlLCBjYXNzYW5kcmE9Y2Fzc2FuZHJhKGtleXNwYWNlPWNs
cy5LRVlTUEFDRSwgY3JlYXRlX2tleXNwYWNlPVRydWUpLAorICAgICAgICAgICAgICAgIHJlcG9z
aXRvcmllcz1bCisgICAgICAgICAgICAgICAgICAgIFdlYktpdFJlcG9zaXRvcnkoKSwKKyAgICAg
ICAgICAgICAgICAgICAgU3Rhc2hSZXBvc2l0b3J5KCdodHRwczovL2JpdGJ1Y2tldC5leGFtcGxl
LmNvbS9wcm9qZWN0cy9TQUZBUkkvcmVwb3Mvc2FmYXJpJyksCisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGFwaV9yb3V0ZXMgPSBBUElSb3V0ZXMobW9kZWw9
bW9kZWwsIGltcG9ydF9uYW1lPV9fbmFtZV9fKQorICAgICAgICAgICAgdmlld19yb3V0ZXMgPSBW
aWV3Um91dGVzKG1vZGVsPW1vZGVsLCBjb250cm9sbGVyPWFwaV9yb3V0ZXMsIGltcG9ydF9uYW1l
PV9fbmFtZV9fKQogCi0gICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoYXBpX3JvdXRlcykK
LSAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludCh2aWV3X3JvdXRlcykKKyAgICAgICAgICAg
IGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQoYXBpX3JvdXRlcykKKyAgICAgICAgICAgIGFwcC5yZWdp
c3Rlcl9ibHVlcHJpbnQodmlld19yb3V0ZXMpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYg
ZGVjb3JhdG9yKGNscyk6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>