<?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>203489</bug_id>
          
          <creation_ts>2019-10-28 09:17:26 -0700</creation_ts>
          <short_desc>Python 3: Add support in webkitpy.port</short_desc>
          <delta_ts>2019-10-30 14:58:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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=184986</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>commit-queue</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1584462</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-10-28 09:17:26 -0700</bug_when>
    <thetext>webkitpy.port supports layout tests and API tests, among other things. The factory code is imported all over the place, so this turns out to be a blocker for converting the rest of webkitpy.common.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584464</commentid>
    <comment_count>1</comment_count>
      <attachid>382077</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-10-28 09:23:40 -0700</bug_when>
    <thetext>Created attachment 382077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585405</commentid>
    <comment_count>2</comment_count>
      <attachid>382077</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-10-30 10:35:53 -0700</bug_when>
    <thetext>Comment on attachment 382077
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=382077&amp;action=review

&gt; Tools/Scripts/webkitpy/common/version.py:122
&gt; +            result ^= hash(self[i])

This may not be accurate and easy to create a collision.
For example &quot;1.2.3.4.5&quot; will have the same has as &quot;5.4.3.2.1&quot; if I understand the hash algorithm correctly here.
How about using `hash(self.__str__())` or `hash(str(self))` instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585450</commentid>
    <comment_count>3</comment_count>
      <attachid>382339</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-10-30 12:04:34 -0700</bug_when>
    <thetext>Created attachment 382339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585506</commentid>
    <comment_count>4</comment_count>
      <attachid>382339</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2019-10-30 14:16:51 -0700</bug_when>
    <thetext>Comment on attachment 382339
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=382339&amp;action=review

&gt; Tools/ChangeLog:26
&gt; +        * Scripts/webkitpy/port/config_standalone.py: Ditto

Please update the change description for this line. It was a bug before this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585507</commentid>
    <comment_count>5</comment_count>
      <attachid>382353</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-10-30 14:21:00 -0700</bug_when>
    <thetext>Created attachment 382353
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585536</commentid>
    <comment_count>6</comment_count>
      <attachid>382353</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-30 14:57:04 -0700</bug_when>
    <thetext>Comment on attachment 382353
Patch for landing

Clearing flags on attachment: 382353

Committed r251808: &lt;https://trac.webkit.org/changeset/251808&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585537</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-30 14:57:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585540</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-30 14:58:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/56759792&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382077</attachid>
            <date>2019-10-28 09:23:40 -0700</date>
            <delta_ts>2019-10-30 12:04:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203489-20191028092339.patch</filename>
            <type>text/plain</type>
            <size>51727</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MTY1NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDc4IEBACisyMDE5LTEwLTI4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgaW4gd2Via2l0cHkucG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDg5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3Rl
c3Qtd2Via2l0cHktcHl0aG9uMzogQWRkIHdlYmtpdHB5LnBvcnQuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW8ucHk6IFJlbW92ZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW9fdW5pdHRlc3QucHk6IFJlbW92ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5
OgorICAgICAgICAoTW9ja1Byb2Nlc3MuX19pbml0X18pOiBFbnN1cmUgdGhhdCBzdGRvdXQgYW5k
IHN0ZGVyciBhcmUgYnl0ZSBhcnJheXMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vdmVyc2lvbi5weToKKyAgICAgICAgKFZlcnNpb24uX19oYXNoX18pOiBBZGQgaGFzaCBmdW5j
dGlvbiBmb3IgVmVyc2lvbiBvYmplY3RzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9y
dC9iYXNlLnB5OgorICAgICAgICAoUG9ydC5kZWZhdWx0X2Jhc2VsaW5lX3NlYXJjaF9wYXRoKTog
Q29udmVydCBsaXN0IHRvIG1hcC4KKyAgICAgICAgKFBvcnQuZGlmZl90ZXh0KTogRGVjb2RlIGZv
ciB0aGUgbmF0aXZlIHN0cmluZyB0eXBlLgorICAgICAgICAoUG9ydC5za2lwcGVkX3BlcmZfdGVz
dHMpOiBDb252ZXJ0IGZpbHRlciB0byBsaXN0LgorICAgICAgICAoUG9ydC5fcnVuX3NjcmlwdCk6
IE5vIG5lZWQgdG8gZGVjb2RlIHN0cmluZ3MgaW4gUHl0aG9uIDMsIGV2ZW4gaWYgZGVjb2RlX291
dHB1dCBpcyBzZXQuCisgICAgICAgIChQb3J0LmRpZmZfdGV4dC50b19yYXdfYnl0ZXMpOiBEZWxl
dGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAoY21wKTogQWRkIGNtcCBmdW5jdGlvbiBmb3IgUHl0aG9uIDMgY29tcGFyaXNvbnMu
CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2RpZmZfdGV4dCk6IERvIG5vdCBlc2NhcGUgc3BhY2Vz
LgorICAgICAgICAoUG9ydFRlc3QudGVzdF9wYXJzZV9yZWZ0ZXN0X2xpc3QpOiBXcml0ZSB0byB0
ZXN0IGZpbGUgZXhwbGljaXRseS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYnVp
bGRlcnNfdW5pdHRlc3QucHk6IFVzZSBmdWxsIGltcG9ydCBwYXRoLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcG9ydC9jb25maWdfc3RhbmRhbG9uZS5weTogRGl0dG8KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvY29uZmlnX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5OgorICAgICAgICAoRGFyd2luUG9ydC5z
aG93X3Jlc3VsdHNfaHRtbF9maWxlKTogVXNlIG9zLmRldm51bGwgZGlyZWN0bHkuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weToKKyAgICAgICAgKERy
aXZlclRlc3QudGVzdF9yZWFkX2Jhc2U2NF9ibG9jayk6IEV4cGxpY2l0bHkgY29tcGFyZSBhZ2Fp
bnN0IGJ5dGUgYXJyYXkuCisgICAgICAgIChEcml2ZXJUZXN0LnRlc3Rfc2V0dXBfZW52aXJvbl9i
YXNlX3ZhcnMpOiBDb252ZXJ0IGl0ZXJhdG9ycyB0byBsaXN0cy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3BvcnQvZmFjdG9yeS5weToKKyAgICAgICAgKFBvcnRGYWN0b3J5LmdldC5pbik6
IEltcG9ydHMgbmVlZCB0byB1c2UgdGhlIGZ1bGwgaW1wb3J0IHBhdGguCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2d0ay5weToKKyAgICAgICAgKEd0a1BvcnQuZGVmYXVsdF9iYXNl
bGluZV9zZWFyY2hfcGF0aCk6IENvbnZlcnQgbWFwIHRvIGxpc3QuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvci5weToKKyAgICAgICAgKExlYWtEZXRlY3Rvci5f
cGFyc2VfbGVha3Nfb3V0cHV0KTogU2VhcmNoIGJ5dGUgYXJyYXkgd2l0aCBieXRlIGFycmF5Lgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmQucHk6
CisgICAgICAgIChWYWxncmluZEVycm9yLl9fc3RyX18pOiBTcGxpdCBieXRlIGFycmF5IHdpdGgg
Ynl0ZSBhcnJheS4KKyAgICAgICAgKFZhbGdyaW5kRXJyb3IuZXJyb3JfaGFzaCk6IENvcnJlY3Qg
cmVnZXguCisgICAgICAgIChMZWFrRGV0ZWN0b3JWYWxncmluZC5fcGFyc2VfbGVha3Nfb3V0cHV0
KTogQ29udmVydCBieXRlcyB0byBzdHJpbmcuCisgICAgICAgIChMZWFrRGV0ZWN0b3JWYWxncmlu
ZC5wYXJzZV9hbmRfcHJpbnRfbGVha3NfZGV0YWlsKTogU3RhbmRhcmRpemUgUHl0aG9uIDIgYW5k
IDMgc29ydGluZyBvcmRlci4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2Rl
dGVjdG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5OiBNYWtlIHVuaXQgdGVzdHMgUHl0aG9uIDMgY29t
cGF0aWJsZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNo
X2xvZy5weToKKyAgICAgICAgKEdEQkNyYXNoTG9nR2VuZXJhdG9yLl9nZXRfdHJhY2VfZnJvbV9z
eXN0ZW1kKTogTW9kZXJuaXplIGV4Y2VwdGlvbiBoYW5kbGluZy4KKyAgICAgICAgKEdEQkNyYXNo
TG9nR2VuZXJhdG9yLmdlbmVyYXRlX2NyYXNoX2xvZyk6IE5vIG5lZWQgdG8gZGVjb2RlIHN0cmlu
Z3MgaW4gUHl0aG9uIDMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weToK
KyAgICAgICAgKE1hY1BvcnQuc3RhcnRfaGVscGVyKTogaXNfcmVhZHkgd2lsbCBiZSBhIGJ5dGUg
YXJyYXkuCisgICAgICAgIChNYWNQb3J0LnN0b3BfaGVscGVyKTogc3RkaW4gd2lsbCBiZSBhIGJ5
dGUgYXJyYXkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0X3VuaXR0
ZXN0LnB5OgorICAgICAgICAoTW9ja0RSVFRlc3QuYXNzZXJ0VGVzdCk6IFVzZSB1bmljb2RlIGNv
bXBhdGlibGUgU3RyaW5nSU8gb2JqZWN0cy4KKyAgICAgICAgKE1vY2tEUlRUZXN0LnRlc3RfbWFp
bik6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNl
LnB5OgorICAgICAgICAoYmluZF9tb2NrX2FwcGxlX2FkZGl0aW9ucy5Nb2NrQXBwbGVBZGRpdGlv
bnMudmVyc2lvbl9uYW1lX21hcHBpbmcpOiBVc2UgaXRlbXMgaW5zdGVhZCBvZiBpdGVyaXRlbXMu
CisgICAgICAgIChQb3J0VGVzdENhc2UudGVzdF9leHBlY3RhdGlvbnNfb3JkZXJpbmcpOiBDb252
ZXJ0IGl0ZXJhdG9yIHRvIGxpc3QuCisgICAgICAgIChQb3J0VGVzdENhc2UudGVzdF90ZXN0X2V4
cGVjdGF0aW9ucyk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4u
cHk6CisgICAgICAgIChXaW5Qb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKFdpblBvcnQuZGVmYXVs
dF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6IENvbnZlcnQgbWFwIHRvIGxpc3QuCisgICAgICAgIChX
aW5Qb3J0LnRlc3Rfc2VhcmNoX3BhdGgpOiBEaXR0by4KKyAgICAgICAgKFdpblBvcnQuc2V0dXBf
Y3Jhc2hfbG9nX3NhdmluZyk6IFVzZSBpdGVtcyBpbnN0ZWFkIG9mIGl0ZXJpdGVtcy4KKyAgICAg
ICAgKFdpblBvcnQucmVzdG9yZV9jcmFzaF9sb2dfc2F2aW5nKTogRGl0dG8uCisgICAgICAgIChX
aW5Qb3J0LnByZXZlbnRfZXJyb3JfZGlhbG9ncyk6IERpdHRvLgorICAgICAgICAoV2luUG9ydC5h
bGxvd19lcnJvcl9kaWFsb2dzKTogRGl0dG8uCisgICAgICAgIChXaW5DYWlyb1BvcnQuZGVmYXVs
dF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6IENvbnZlcnQgbWFwIHRvIGxpc3QuCisgICAgICAgIChX
aW5DYWlyb1BvcnQuX3BvcnRfc3BlY2lmaWNfZXhwZWN0YXRpb25zX2ZpbGVzKTogRGl0dG8uCisg
ICAgICAgIChGVFdQb3J0LmRlZmF1bHRfYmFzZWxpbmVfc2VhcmNoX3BhdGgpOiBEaXR0by4KKyAg
ICAgICAgKEZUV1BvcnQuX3BvcnRfc3BlY2lmaWNfZXhwZWN0YXRpb25zX2ZpbGVzKTogRGl0dG8u
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbl91bml0dGVzdC5weTogRGl0dG8u
CisgICAgICAgIChXaW5Qb3J0VGVzdC5fYXNzZXJ0X3NlYXJjaF9wYXRoKTogRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weToKKyAgICAgICAgKFdQRVBvcnQuZGVm
YXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6IENvbnZlcnQgbWFwIHRvIGxpc3QuCisgICAgICAg
IChXUEVQb3J0Ll9wb3J0X3NwZWNpZmljX2V4cGVjdGF0aW9uc19maWxlcyk6IERpdHRvLgorCiAy
MDE5LTEwLTI4ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbZXdzXSBJbXByb3ZlIHN1bW1hcnkgZm9yIENvbXBpbGVXZWJLaXQgYW5kIENvbXBpbGVKU0Mg
YnVpbGQgc3RlcApJbmRleDogVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5LXB5dGhvbjMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5LXB5dGhvbjMJKHJldmlzaW9u
IDI1MTY1MikKKysrIFRvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweS1weXRob24zCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIFBZVEhPTjNfQ09NUEFUSUJMRV9ESVJFQ1RPUklFUyA9
IFsKICAgJ3dlYmtpdHB5LmNvbW1vbi50aHJlYWQnLAogICAnd2Via2l0cHkuY29tbW9uLm5ldCcs
CiAgICd3ZWJraXRweS5jb21tb24ud2F0Y2hsaXN0JywKKyAgJ3dlYmtpdHB5LnBvcnQnLAogICAn
d2Via2l0cHkucmVzdWx0cycsCiAgICd3ZWJraXRweS54Y29kZScsCiBdCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXdzdHJpbmdpby5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXdzdHJpbmdpby5weQkocmV2aXNpb24gMjUxNjUy
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW8ucHkJKG5vbmV4
aXN0ZW50KQpAQCAtMSwzOSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiJ3dpdGgnLWNv
bXBsaWFudCBTdHJpbmdJTyBpbXBsZW1lbnRhdGlvbi4iIiIKLQotaW1wb3J0IFN0cmluZ0lPIGFz
IE9sZFN0cmluZ0lPCi0KLQotY2xhc3MgU3RyaW5nSU8oT2xkU3RyaW5nSU8uU3RyaW5nSU8pOgot
ICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYg
X19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6Ci0gICAgICAgIHBhc3MKClBy
b3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ld3N0cmlu
Z2lvLnB5Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1M
RgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXdzdHJpbmdpb191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXdzdHJpbmdpb191bml0dGVzdC5weQkocmV2aXNp
b24gMjUxNjUyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW9f
dW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MCArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotIiIiVW5pdCB0ZXN0cyBmb3IgbmV3c3RyaW5naW8gbW9kdWxlLiIiIgotCi1pbXBvcnQg
dW5pdHRlc3QKLQotaW1wb3J0IG5ld3N0cmluZ2lvCi0KLQotY2xhc3MgTmV3U3RyaW5nSU9UZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF93aXRoKHNlbGYpOgotICAgICAgICB3
aXRoIG5ld3N0cmluZ2lvLlN0cmluZ0lPKCJmb28iKSBhcyBmOgotICAgICAgICAgICAgY29udGVu
dHMgPSBmLnJlYWQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnRzLCAiZm9vIikK
ClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ld3N0
cmluZ2lvX3VuaXR0ZXN0LnB5Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAt
MSArMCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi92ZXJzaW9uLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNpb24ucHkJKHJldmlzaW9uIDI1MTY1MikKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNpb24ucHkJKHdvcmtpbmcgY29weSkK
QEAgLTExNiw2ICsxMTYsMTIgQEAgY2xhc3MgVmVyc2lvbihvYmplY3QpOgogICAgICAgICAgICAg
cmVzdWx0ICs9ICcue30nLmZvcm1hdChzZWxmW2kgKyAxXSkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dAogCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXN1bHQgPSAwCisgICAgICAg
IGZvciBpIGluIHJhbmdlKGxlbihzZWxmKSk6CisgICAgICAgICAgICByZXN1bHQgXj0gaGFzaChz
ZWxmW2ldKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKICAgICBkZWYgX19jbXBfXyhzZWxmLCBv
dGhlcik6CiAgICAgICAgIGlmIG90aGVyIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gMQpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2Nr
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9l
eGVjdXRpdmVfbW9jay5weQkocmV2aXNpb24gMjUxNjUyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiAKLWZyb20gd2Via2l0cHku
Y29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgQnl0ZXNJTywgdW5pY29kZQorZnJv
bSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBCeXRlc0lPLCBl
bmNvZGVfaWZfbmVjZXNzYXJ5LCB1bmljb2RlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
X19uYW1lX18pCkBAIC0zOCw4ICszOCw4IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKIGNsYXNzIE1vY2tQcm9jZXNzKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHN0ZG91dD0nTU9DSyBTVERPVVRcbicsIHN0ZGVycj0nJyk6CiAgICAgICAgIHNlbGYucGlkID0g
NDIKLSAgICAgICAgc2VsZi5zdGRvdXQgPSBCeXRlc0lPKHN0ZG91dCkKLSAgICAgICAgc2VsZi5z
dGRlcnIgPSBCeXRlc0lPKHN0ZGVycikKKyAgICAgICAgc2VsZi5zdGRvdXQgPSBCeXRlc0lPKGVu
Y29kZV9pZl9uZWNlc3Nhcnkoc3Rkb3V0KSkKKyAgICAgICAgc2VsZi5zdGRlcnIgPSBCeXRlc0lP
KGVuY29kZV9pZl9uZWNlc3Nhcnkoc3RkZXJyKSkKICAgICAgICAgc2VsZi5zdGRpbiA9IEJ5dGVz
SU8oKQogICAgICAgICBzZWxmLnJldHVybmNvZGUgPSAwCiAgICAgICAgIHNlbGYuX2lzX3J1bm5p
bmcgPSBGYWxzZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHJldmlzaW9u
IDI1MTY1MikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmUgaW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb25fbmFtZV9tYXAgaW1wb3J0IFBV
QkxJQ19UQUJMRSwgSU5URVJOQUxfVEFCTEUsIFZlcnNpb25OYW1lTWFwCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi53YXZlZGlmZiBpbXBvcnQgV2F2ZURpZmYKIGZyb20gd2Via2l0cHkuY29tbW9uLndl
YmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgorZnJvbSB3ZWJraXRweS5jb21tb24udW5p
Y29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfZm9yLCBlbmNvZGVfaWZfbmVjZXNzYXJ5
LCBkZWNvZGVfZm9yCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25m
aWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5wb3J0IGlt
cG9ydCBjb25maWcgYXMgcG9ydF9jb25maWcKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgZHJp
dmVyCkBAIC0yMjIsNyArMjIzLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBzZWFy
Y2hfcGF0aHMuYXBwZW5kKHNlbGYubmFtZSgpKQogICAgICAgICBpZiBzZWxmLm5hbWUoKSAhPSBz
ZWxmLnBvcnRfbmFtZToKICAgICAgICAgICAgIHNlYXJjaF9wYXRocy5hcHBlbmQoc2VsZi5wb3J0
X25hbWUpCi0gICAgICAgIHJldHVybiBtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNl
YXJjaF9wYXRocykKKyAgICAgICAgcmV0dXJuIGxpc3QobWFwKHNlbGYuX3dlYmtpdF9iYXNlbGlu
ZV9wYXRoLCBzZWFyY2hfcGF0aHMpKQogCiAgICAgQG1lbW9pemVkCiAgICAgZGVmIF9jb21wYXJl
X2Jhc2VsaW5lKHNlbGYpOgpAQCAtMzQwLDE2ICszNDEsOCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6
CiAgICAgZGVmIGRpZmZfdGV4dChzZWxmLCBleHBlY3RlZF90ZXh0LCBhY3R1YWxfdGV4dCwgZXhw
ZWN0ZWRfZmlsZW5hbWUsIGFjdHVhbF9maWxlbmFtZSk6CiAgICAgICAgICIiIlJldHVybnMgYSBz
dHJpbmcgY29udGFpbmluZyB0aGUgZGlmZiBvZiB0aGUgdHdvIHRleHQgc3RyaW5ncwogICAgICAg
ICBpbiAndW5pZmllZCBkaWZmJyBmb3JtYXQuIiIiCi0KLSAgICAgICAgIyBUaGUgZmlsZW5hbWVz
IHNob3cgdXAgaW4gdGhlIGRpZmYgb3V0cHV0LCBtYWtlIHN1cmUgdGhleSdyZQotICAgICAgICAj
IHJhdyBieXRlcyBhbmQgbm90IHVuaWNvZGUsIHNvIHRoYXQgdGhleSBkb24ndCB0cmlnZ2VyIGpv
aW4oKQotICAgICAgICAjIHRyeWluZyB0byBkZWNvZGUgdGhlIGlucHV0LgotICAgICAgICBkZWYg
dG9fcmF3X2J5dGVzKHN0cmluZ192YWx1ZSk6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHN0
cmluZ192YWx1ZSwgdW5pY29kZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZ192YWx1
ZS5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmdfdmFsdWUKLSAgICAg
ICAgZXhwZWN0ZWRfZmlsZW5hbWUgPSB0b19yYXdfYnl0ZXMoZXhwZWN0ZWRfZmlsZW5hbWUpCi0g
ICAgICAgIGFjdHVhbF9maWxlbmFtZSA9IHRvX3Jhd19ieXRlcyhhY3R1YWxfZmlsZW5hbWUpCisg
ICAgICAgIGV4cGVjdGVkX2ZpbGVuYW1lID0gZGVjb2RlX2ZvcihlbmNvZGVfaWZfbmVjZXNzYXJ5
KGV4cGVjdGVkX2ZpbGVuYW1lKSwgc3RyKQorICAgICAgICBhY3R1YWxfZmlsZW5hbWUgPSBkZWNv
ZGVfZm9yKGVuY29kZV9pZl9uZWNlc3NhcnkoYWN0dWFsX2ZpbGVuYW1lKSwgc3RyKQogICAgICAg
ICBkaWZmID0gZGlmZmxpYi51bmlmaWVkX2RpZmYoZXhwZWN0ZWRfdGV4dC5zcGxpdGxpbmVzKFRy
dWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsX3RleHQuc3Bs
aXRsaW5lcyhUcnVlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkX2ZpbGVuYW1lLApAQCAtMzU4LDcgKzM1MSw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAg
ICAgICAgZm9yIGxpbmUgaW4gZGlmZjoKICAgICAgICAgICAgIHJlc3VsdCArPSBsaW5lCiAgICAg
ICAgICAgICBpZiBub3QgbGluZS5lbmRzd2l0aCgnXG4nKToKLSAgICAgICAgICAgICAgICByZXN1
bHQgKz0gJ1xuXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlXG4nCisgICAgICAgICAgICAgICAg
cmVzdWx0ICs9ICdcbiBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlXG4nCiAgICAgICAgIHJldHVy
biByZXN1bHQKIAogICAgIGRlZiBjaGVja19mb3JfbGVha3Moc2VsZiwgcHJvY2Vzc19uYW1lLCBw
cm9jZXNzX2lkKToKQEAgLTc2NCw3ICs3NTcsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAg
ICAgICAgICBpZiBub3QgbWF0Y2g6CiAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcigiU3ludGF4
IGVycm9yIGF0IGxpbmUgJWQgaW4gJXM6ICVzIiAlIChsaW5lX251bWJlciArIDEsIGZpbGVuYW1l
LCBsaW5lKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm1fbmFt
ZXMgPSBmaWx0ZXIobGFtYmRhIHRva2VuOiB0b2tlbiwgbWF0Y2guZ3JvdXAoJ3BsYXRmb3Jtcycp
Lmxvd2VyKCkuc3BsaXQoJyAnKSkgaWYgbWF0Y2guZ3JvdXAoJ3BsYXRmb3JtcycpIGVsc2UgW10K
KyAgICAgICAgICAgICAgICBwbGF0Zm9ybV9uYW1lcyA9IGxpc3QoZmlsdGVyKGxhbWJkYSB0b2tl
bjogdG9rZW4sIG1hdGNoLmdyb3VwKCdwbGF0Zm9ybXMnKS5sb3dlcigpLnNwbGl0KCcgJykpKSBp
ZiBtYXRjaC5ncm91cCgncGxhdGZvcm1zJykgZWxzZSBbXQogICAgICAgICAgICAgICAgIHRlc3Rf
bmFtZSA9IG1hdGNoLmdyb3VwKCd0ZXN0JykKICAgICAgICAgICAgICAgICBpZiB0ZXN0X25hbWUg
YW5kIChub3QgcGxhdGZvcm1fbmFtZXMgb3Igc2VsZi5wb3J0X25hbWUgaW4gcGxhdGZvcm1fbmFt
ZXMgb3Igc2VsZi5fbmFtZSBpbiBwbGF0Zm9ybV9uYW1lcyk6CiAgICAgICAgICAgICAgICAgICAg
IHRlc3RzX3RvX3NraXAuYXBwZW5kKHRlc3RfbmFtZSkKQEAgLTE0OTIsNyArMTQ4NSw3IEBAIGNs
YXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgaWYgYXJnczoKICAgICAgICAgICAgIHJ1bl9zY3Jp
cHRfY29tbWFuZC5leHRlbmQoYXJncykKICAgICAgICAgb3V0cHV0ID0gc2VsZi5fZXhlY3V0aXZl
LnJ1bl9jb21tYW5kKHJ1bl9zY3JpcHRfY29tbWFuZCwgY3dkPXNlbGYud2Via2l0X2Jhc2UoKSwg
ZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0LCBlbnY9ZW52KQotICAgICAgICBfbG9nLmRlYnVn
KCdPdXRwdXQgb2YgJXM6XG4lcycgJSAocnVuX3NjcmlwdF9jb21tYW5kLCBvdXRwdXQuZW5jb2Rl
KCd1dGYtOCcpIGlmIGRlY29kZV9vdXRwdXQgZWxzZSBvdXRwdXQpKQorICAgICAgICBfbG9nLmRl
YnVnKCdPdXRwdXQgb2YgJXM6XG4lcycgJSAocnVuX3NjcmlwdF9jb21tYW5kLCBlbmNvZGVfZm9y
KG91dHB1dCwgc3RyKSBpZiBkZWNvZGVfb3V0cHV0IGVsc2Ugb3V0cHV0KSkKICAgICAgICAgcmV0
dXJuIG91dHB1dAogCiAgICAgZGVmIF9idWlsZF9kcml2ZXIoc2VsZik6CkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZV91bml0dGVzdC5weQkocmV2aXNpb24gMjUxNjUy
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDYgKzQxLDkgQEAgZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBQb3J0
CiBmcm9tIHdlYmtpdHB5LnBvcnQudGVzdCBpbXBvcnQgYWRkX3VuaXRfdGVzdHNfdG9fbW9ja19m
aWxlc3lzdGVtLCBUZXN0UG9ydAogCiAKK2RlZiBjbXAoYSwgYik6CisgICAgcmV0dXJuIChhID4g
YikgLSAoYSA8IGIpCisKIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBk
ZWYgbWFrZV9wb3J0KHNlbGYsIGV4ZWN1dGl2ZT1Ob25lLCB3aXRoX3Rlc3RzPUZhbHNlLCBwb3J0
X25hbWU9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBob3N0ID0gTW9ja1N5c3RlbUhvc3QoKQpA
QCAtMTA1LDcgKzEwOCw3IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAog
ICAgICAgICB0MSA9ICJBXG5cbkIiCiAgICAgICAgIHQyID0gIkFcblxuQlxuXG5cbiIKLSAgICAg
ICAgdDMgPSAiLS0tIGV4cC50eHRcbisrKyBhY3QudHh0XG5AQCAtMSwzICsxLDUgQEBcbiBBXG4g
XG4tQlxuXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlXG4rQlxuK1xuK1xuIgorICAgICAgICB0
MyA9ICItLS0gZXhwLnR4dFxuKysrIGFjdC50eHRcbkBAIC0xLDMgKzEsNSBAQFxuIEFcbiBcbi1C
XG4gTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZVxuK0JcbitcbitcbiIKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh0MywgcG9ydC5kaWZmX3RleHQodDEsIHQyLCAnZXhwLnR4dCcsICdhY3QudHh0
JykpCiAKICAgICAgICAgIyBBbmQgbWFrZSBzdXJlIHdlIGFjdHVhbGx5IGdldCBkaWZmIG91dHB1
dC4KQEAgLTI4OCwxMyArMjkxLDE4IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKIAogICAgIGRlZiB0ZXN0X3BhcnNlX3JlZnRlc3RfbGlzdChzZWxmKToKICAgICAgICAgcG9y
dCA9IHNlbGYubWFrZV9wb3J0KHdpdGhfdGVzdHM9VHJ1ZSkKLSAgICAgICAgcG9ydC5ob3N0LmZp
bGVzeXN0ZW0uZmlsZXNbJ2Jhci9yZWZ0ZXN0Lmxpc3QnXSA9ICJcbiIuam9pbihbIj09IHRlc3Qu
aHRtbCB0ZXN0LXJlZi5odG1sIiwKLSAgICAgICAgIiIsCi0gICAgICAgICIjIHNvbWUgY29tbWVu
dCIsCi0gICAgICAgICIhPSB0ZXN0LTIuaHRtbCB0ZXN0LW5vdHJlZi5odG1sICMgbW9yZSBjb21t
ZW50cyIsCi0gICAgICAgICI9PSB0ZXN0LTMuaHRtbCB0ZXN0LXJlZi5odG1sIiwKLSAgICAgICAg
Ij09IHRlc3QtMy5odG1sIHRlc3QtcmVmMi5odG1sIiwKLSAgICAgICAgIiE9IHRlc3QtMy5odG1s
IHRlc3Qtbm90cmVmLmh0bWwiXSkKKyAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVf
dGV4dF9maWxlKAorICAgICAgICAgICAgJ2Jhci9yZWZ0ZXN0Lmxpc3QnLAorICAgICAgICAgICAg
IlxuIi5qb2luKFsKKyAgICAgICAgICAgICAgICAiPT0gdGVzdC5odG1sIHRlc3QtcmVmLmh0bWwi
LAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICIjIHNvbWUgY29tbWVudCIs
CisgICAgICAgICAgICAgICAgIiE9IHRlc3QtMi5odG1sIHRlc3Qtbm90cmVmLmh0bWwgIyBtb3Jl
IGNvbW1lbnRzIiwKKyAgICAgICAgICAgICAgICAiPT0gdGVzdC0zLmh0bWwgdGVzdC1yZWYuaHRt
bCIsCisgICAgICAgICAgICAgICAgIj09IHRlc3QtMy5odG1sIHRlc3QtcmVmMi5odG1sIiwKKyAg
ICAgICAgICAgICAgICAiIT0gdGVzdC0zLmh0bWwgdGVzdC1ub3RyZWYuaHRtbCIsCisgICAgICAg
ICAgICBdKSwKKyAgICAgICAgKQogCiAgICAgICAgIHJlZnRlc3RfbGlzdCA9IFBvcnQuX3BhcnNl
X3JlZnRlc3RfbGlzdChwb3J0Lmhvc3QuZmlsZXN5c3RlbSwgJ2JhcicpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVmdGVzdF9saXN0LCB7J2Jhci90ZXN0Lmh0bWwnOiBbKCc9PScsICdiYXIv
dGVzdC1yZWYuaHRtbCcpXSwKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9idWls
ZGVyc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvYnVpbGRlcnNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MTY1MikKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9idWlsZGVyc191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsOCBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IGJ1
aWxkZXJzCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWJraXRweS5wb3J0LmJ1aWxkZXJzIGFz
IGJ1aWxkZXJzCiAKIAogY2xhc3MgQnVpbGRlcnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9jb25maWdfc3RhbmRhbG9uZS5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvY29uZmlnX3N0YW5kYWxvbmUu
cHkJKHJldmlzaW9uIDI1MTY1MikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9jb25m
aWdfc3RhbmRhbG9uZS5weQkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBpbXBvcnQg
c3lzCiAjIEVuc3VyZSB0aGF0IHdlYmtpdHB5IGlzIGluIFBZVEhPTlBBVEguCiB0aGlzX2RpciA9
IG9zLnBhdGguYWJzcGF0aChzeXMucGF0aFswXSkKIHVwID0gb3MucGF0aC5kaXJuYW1lCi1zY3Jp
cHRfZGlyID0gdXAodXAodXAodGhpc19kaXIpKSkKK3NjcmlwdF9kaXIgPSB1cCh1cCh0aGlzX2Rp
cikpCiBpZiBzY3JpcHRfZGlyIG5vdCBpbiBzeXMucGF0aDoKICAgICBzeXMucGF0aC5hcHBlbmQo
c2NyaXB0X2RpcikKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2NvbmZpZ191
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvY29u
ZmlnX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNTE2NTIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvY29uZmlnX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX20KIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKIAotaW1w
b3J0IGNvbmZpZworaW1wb3J0IHdlYmtpdHB5LnBvcnQuY29uZmlnIGFzIGNvbmZpZwogCiAKIGNs
YXNzIENvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2Rhcndpbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvZGFyd2luLnB5CShyZXZpc2lvbiAyNTE2NTIpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZGFyd2luLnB5CSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIGNs
YXNzIERhcndpblBvcnQoQXBwbGVQb3J0KToKICAgICAgICAgIyB0byBleGl0IGFuZCB3ZSB3YW50
IHRoZSBvdXRwdXQgdG8gc2hvdyB1cCBvbiBzdGRvdXQgaW4gY2FzZSB0aGVyZSBhcmUgZXJyb3Jz
CiAgICAgICAgICMgbGF1bmNoaW5nIHRoZSBicm93c2VyLgogICAgICAgICBzZWxmLl9leGVjdXRp
dmUucG9wZW4oW3NlbGYucGF0aF90b19zY3JpcHQoJ3J1bi1zYWZhcmknKV0gKyBzZWxmLl9hcmd1
bWVudHNfZm9yX2NvbmZpZ3VyYXRpb24oKSArIFsnLS1uby1zYXZlZC1zdGF0ZScsICctTlNPcGVu
JywgcmVzdWx0c19maWxlbmFtZV0sCi0gICAgICAgICAgICBjd2Q9c2VsZi53ZWJraXRfYmFzZSgp
LCBzdGRvdXQ9ZmlsZShvcy5kZXZudWxsKSwgc3RkZXJyPWZpbGUob3MuZGV2bnVsbCkpCisgICAg
ICAgICAgICBjd2Q9c2VsZi53ZWJraXRfYmFzZSgpLCBzdGRvdXQ9b3MuZGV2bnVsbCwgc3RkZXJy
PW9zLmRldm51bGwpCiAKICAgICBAbWVtb2l6ZWQKICAgICBkZWYgcGF0aF90b19jcmFzaF9sb2dz
KHNlbGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyNTE2NTIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZHJpdmVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcgQEAg
Y2xhc3MgRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29udGVudF9ibG9jay5jb250ZW50X2hhc2gsICdhY3R1YWwnKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbnRlbnRfYmxvY2suZW5jb2RpbmcsICdiYXNlNjQnKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNvbnRlbnRfYmxvY2suY29udGVudCwgJ01USXpORFUyTnpnSycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5kZWNvZGVkX2NvbnRlbnQsICcx
MjM0NTY3OFxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2NrLmRlY29k
ZWRfY29udGVudCwgYicxMjM0NTY3OFxuJykKIAogICAgIGRlZiB0ZXN0X25vX3RpbWVvdXQoc2Vs
Zik6CiAgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCkBAIC0zNjgsNyArMzY4LDcgQEAg
Y2xhc3MgRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdXQVlMQU5EX0RJU1BMQVknOiAnd2F5bGFuZC0wJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1dBWUxBTkRfU09DS0VUJzogJ3dheWxhbmQtc29ja2V0LTAnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAnR0RLX0JBQ0tFTkQnOiAneDExJ30KLSAgICAgICAgZW52aXJvbm1l
bnRfdXNlciA9IGRpY3QoZW52aXJvbl9rZWVwX3llcy5pdGVtcygpICsgZW52aXJvbl9rZWVwX25v
Lml0ZW1zKCkpCisgICAgICAgIGVudmlyb25tZW50X3VzZXIgPSBkaWN0KGxpc3QoZW52aXJvbl9r
ZWVwX3llcy5pdGVtcygpKSArIGxpc3QoZW52aXJvbl9rZWVwX25vLml0ZW1zKCkpKQogICAgICAg
ICB3aXRoIHBhdGNoKCdvcy5lbnZpcm9uJywgZW52aXJvbm1lbnRfdXNlcik6CiAgICAgICAgICAg
ICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAgICAgICAgZHJpdmVyID0gRHJpdmVyKHBv
cnQsIE5vbmUsIHBpeGVsX3Rlc3RzPUZhbHNlKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2ZhY3RvcnkucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2ZhY3RvcnkucHkJKHJldmlzaW9uIDI1MTY1MikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9mYWN0b3J5LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsOSArMTM2LDEwIEBAIGNs
YXNzIFBvcnRGYWN0b3J5KG9iamVjdCk6CiAgICAgICAgIGNsYXNzZXMgPSBbXQogICAgICAgICBm
b3IgcG9ydF9jbGFzcyBpbiBzZWxmLlBPUlRfQ0xBU1NFUzoKICAgICAgICAgICAgIG1vZHVsZV9u
YW1lLCBjbGFzc19uYW1lID0gcG9ydF9jbGFzcy5yc3BsaXQoJy4nLCAxKQotICAgICAgICAgICAg
bW9kdWxlID0gX19pbXBvcnRfXyhtb2R1bGVfbmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgW10s
IC0xKQotICAgICAgICAgICAgY2xzID0gbW9kdWxlLl9fZGljdF9fW2NsYXNzX25hbWVdCi0gICAg
ICAgICAgICBjbGFzc2VzLmFwcGVuZChjbHMpCisgICAgICAgICAgICBtb2R1bGUgPSBfX2ltcG9y
dF9fKCd3ZWJraXRweS5wb3J0Lnt9Jy5mb3JtYXQobW9kdWxlX25hbWUpLCBnbG9iYWxzKCksIGxv
Y2FscygpLCBbXSwgMCkKKyAgICAgICAgICAgIGNscyA9IG1vZHVsZS5fX2RpY3RfXy5nZXQoJ3Bv
cnQnKS5fX2RpY3RfXy5nZXQobW9kdWxlX25hbWUpLl9fZGljdF9fLmdldChjbGFzc19uYW1lKQor
ICAgICAgICAgICAgaWYgY2xzOgorICAgICAgICAgICAgICAgIGNsYXNzZXMuYXBwZW5kKGNscykK
ICAgICAgICAgaWYgY29uZmlnLmFwcGxlX2FkZGl0aW9ucygpIGFuZCBoYXNhdHRyKGNvbmZpZy5h
cHBsZV9hZGRpdGlvbnMoKSwgJ3BvcnRzJyk6CiAgICAgICAgICAgICBjbGFzc2VzICs9IGNvbmZp
Zy5hcHBsZV9hZGRpdGlvbnMoKS5wb3J0cygpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9ndGsucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2d0ay5weQkocmV2aXNpb24gMjUxNjUyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2d0ay5weQkod29ya2luZyBjb3B5KQpAQCAtMjExLDcgKzIxMSw3IEBAIGNsYXNzIEd0a1BvcnQo
UG9ydCk6CiAgICAgICAgIHJldHVybiBzZWFyY2hfcGF0aHMKIAogICAgIGRlZiBkZWZhdWx0X2Jh
c2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIG1hcChz
ZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgc2VsZi5fc2VhcmNoX3BhdGhzKCkpCisgICAgICAg
IHJldHVybiBsaXN0KG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgc2VsZi5fc2VhcmNo
X3BhdGhzKCkpKQogCiAgICAgZGVmIF9wb3J0X3NwZWNpZmljX2V4cGVjdGF0aW9uc19maWxlcyhz
ZWxmLCAqKmt3YXJncyk6CiAgICAgICAgIHJldHVybiBbc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNl
bGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHApLCAnVGVzdEV4cGVjdGF0aW9ucycpIGZvciBwIGlu
IHJldmVyc2VkKHNlbGYuX3NlYXJjaF9wYXRocygpKV0KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3IucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvci5weQkocmV2aXNpb24gMjUxNjUyKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvci5weQkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsNyBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiAKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5
LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkK
IAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCkBAIC03OCw4ICs3OSw5IEBA
IGNsYXNzIExlYWtEZXRlY3RvcihvYmplY3QpOgogICAgIGRlZiBfcGFyc2VfbGVha3Nfb3V0cHV0
KHNlbGYsIGxlYWtzX291dHB1dCk6CiAgICAgICAgIGlmIG5vdCBsZWFrc19vdXRwdXQ6CiAgICAg
ICAgICAgICByZXR1cm4gMCwgMCwgMAotICAgICAgICBfLCBjb3VudCwgYnl0ZXMgPSByZS5zZWFy
Y2gocidQcm9jZXNzICg/UDxwaWQ+XGQrKTogKD9QPGNvdW50PlxkKykgbGVha3M/IGZvciAoP1A8
Ynl0ZXM+XGQrKSB0b3RhbCcsIGxlYWtzX291dHB1dCkuZ3JvdXBzKCkKLSAgICAgICAgZXhjbHVk
ZWRfbWF0Y2ggPSByZS5zZWFyY2gocicoP1A8ZXhjbHVkZWQ+XGQrKSBsZWFrcz8gZXhjbHVkZWQn
LCBsZWFrc19vdXRwdXQpCisgICAgICAgIGxlYWtzX291dHB1dCA9IGVuY29kZV9pZl9uZWNlc3Nh
cnkobGVha3Nfb3V0cHV0KQorICAgICAgICBfLCBjb3VudCwgYnl0ZXMgPSByZS5zZWFyY2goYidQ
cm9jZXNzICg/UDxwaWQ+XFxkKyk6ICg/UDxjb3VudD5cXGQrKSBsZWFrcz8gZm9yICg/UDxieXRl
cz5cXGQrKSB0b3RhbCcsIGxlYWtzX291dHB1dCkuZ3JvdXBzKCkKKyAgICAgICAgZXhjbHVkZWRf
bWF0Y2ggPSByZS5zZWFyY2goYicoP1A8ZXhjbHVkZWQ+XFxkKykgbGVha3M/IGV4Y2x1ZGVkJywg
bGVha3Nfb3V0cHV0KQogICAgICAgICBleGNsdWRlZCA9IGV4Y2x1ZGVkX21hdGNoLmdyb3VwKCdl
eGNsdWRlZCcpIGlmIGV4Y2x1ZGVkX21hdGNoIGVsc2UgMAogICAgICAgICByZXR1cm4gaW50KGNv
dW50KSwgaW50KGV4Y2x1ZGVkKSwgaW50KGJ5dGVzKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmQucHkJKHJldmlzaW9u
IDI1MTY1MikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFs
Z3JpbmQucHkJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAgaW1wb3J0IHN1YnByb2Nl
c3MKIGZyb20geG1sLmRvbS5taW5pZG9tIGltcG9ydCBwYXJzZVN0cmluZwogZnJvbSB4bWwucGFy
c2Vycy5leHBhdCBpbXBvcnQgRXhwYXRFcnJvcgogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmlj
b2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnksIGRlY29kZV9mb3IK
KwogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKQEAgLTEyNyw3ICsxMjks
NyBAQCBjbGFzcyBWYWxncmluZEVycm9yOgogICAgICAgICAgICAgZm9yIGZyYW1lIGluIGJhY2t0
cmFjZVsxXToKICAgICAgICAgICAgICAgICBidWYgKz0gKGZyYW1lW0ZVTkNUSU9OX05BTUVdIG9y
IGZyYW1lW0lOU1RSVUNUSU9OX1BPSU5URVJdKSArICJcbiIKIAotICAgICAgICAgICAgaW5wdXQg
PSBidWYuZW5jb2RlKCdsYXRpbi0xJykuc3BsaXQoIlxuIikKKyAgICAgICAgICAgIGlucHV0ID0g
YnVmLmVuY29kZSgnbGF0aW4tMScpLnNwbGl0KGIiXG4iKQogICAgICAgICAgICAgZGVtYW5nbGVk
X25hbWVzID0gW3NlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ2MrK2ZpbHQnLCAnLW4nLCBu
YW1lXSkgZm9yIG5hbWUgaW4gaW5wdXQgaWYgbmFtZV0KIAogICAgICAgICAgICAgaSA9IDAKQEAg
LTE3Miw5ICsxNzQsOSBAQCBjbGFzcyBWYWxncmluZEVycm9yOgogCiAgICAgICAgIGZvciBmcmFt
ZSBpbiByYW5nZShsZW4oc3VwcGxpbmVzKSk6CiAgICAgICAgICAgICAjIFJlcGxhY2UgdGhlIGFs
d2F5cy1jaGFuZ2luZyBhbm9ueW1vdXMgbmFtZXNwYWNlIHByZWZpeCB3aXRoICIqIi4KLSAgICAg
ICAgICAgIG0gPSByZS5tYXRjaCgiKCArZnVuOilfWk4uKl9HTE9CQUxfX05fLipcLmNjXyIgKwot
ICAgICAgICAgICAgICAgICAgICAgICAgICJbMC05YS1mQS1GXXs4fV9bMC05YS1mQS1GXXs4fSgu
KikiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBsaW5lc1tmcmFtZV0pCisgICAgICAg
ICAgICBtID0gcmUubWF0Y2gociIoICtmdW46KV9aTi4qX0dMT0JBTF9fTl8uKlwuY2NfIiArCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICJbMC05YS1mQS1GXXs4fV9bMC05YS1mQS1GXXs4fSgu
KikiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGluZXNbZnJhbWVdKQogICAgICAg
ICAgICAgaWYgbToKICAgICAgICAgICAgICAgICBzdXBwbGluZXNbZnJhbWVdID0gIioiLmpvaW4o
bS5ncm91cHMoKSkKIApAQCAtMTk2LDcgKzE5OCw3IEBAIGNsYXNzIFZhbGdyaW5kRXJyb3I6CiAg
ICAgICAgICMgVGhpcyBpcyBhIGRldmljZS1pbmRlcGVuZGVudCBoYXNoIGlkZW50aWZ5aW5nIHRo
ZSBzdXBwcmVzc2lvbi4KICAgICAgICAgIyBCeSBwcmludGluZyBvdXQgdGhpcyBoYXNoIHdlIGNh
biBmaW5kIGR1cGxpY2F0ZSByZXBvcnRzIGJldHdlZW4gdGVzdHMgYW5kCiAgICAgICAgICMgZGlm
ZmVyZW50IHNoYXJkcyBydW5uaW5nIG9uIG11bHRpcGxlIGJ1aWxkYm90cwotICAgICAgICByZXR1
cm4gaW50KGhhc2hsaWIubWQ1KHNlbGYudW5pcXVlX3N0cmluZygpKS5oZXhkaWdlc3QoKVs6MTZd
LCAxNikKKyAgICAgICAgcmV0dXJuIGludChoYXNobGliLm1kNShlbmNvZGVfaWZfbmVjZXNzYXJ5
KHNlbGYudW5pcXVlX3N0cmluZygpKSkuaGV4ZGlnZXN0KClbOjE2XSwgMTYpCiAKICAgICBkZWYg
X19oYXNoX18oc2VsZik6CiAgICAgICAgIHJldHVybiBoYXNoKHNlbGYudW5pcXVlX3N0cmluZygp
KQpAQCAtMjIyLDcgKzIyNCw3IEBAIGNsYXNzIExlYWtEZXRlY3RvclZhbGdyaW5kKG9iamVjdCk6
CiAgICAgICAgICAgICBwYXJzZWRfc3RyaW5nID0gcGFyc2VTdHJpbmcobGVha3Nfb3V0cHV0KQog
ICAgICAgICBleGNlcHQgRXhwYXRFcnJvciBhcyBlOgogICAgICAgICAgICAgcGFyc2VfZmFpbGVk
ID0gVHJ1ZQotICAgICAgICAgICAgX2xvZy5lcnJvcigiY291bGQgbm90IHBhcnNlICVzOiAlcyIg
JSAobGVha3Nfb3V0cHV0LCBlKSkKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoImNvdWxkIG5vdCBw
YXJzZSAlczogJXMiICUgKGRlY29kZV9mb3IobGVha3Nfb3V0cHV0LCBzdHIpLCBlKSkKICAgICAg
ICAgICAgIHJldHVybgogCiAgICAgICAgIGN1cl9yZXBvcnRfZXJyb3JzID0gc2V0KCkKQEAgLTI4
MywxMSArMjg1LDEyIEBAIGNsYXNzIExlYWtEZXRlY3RvclZhbGdyaW5kKG9iamVjdCk6CiAgICAg
ICAgIF9sb2cuaW5mbygiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0iKQogICAgICAgICBfbG9nLmluZm8oIlN1cHByZXNzaW9ucyB1c2VkOiIpCiAg
ICAgICAgIF9sb2cuaW5mbygiICBjb3VudCBuYW1lIikKLSAgICAgICAgZm9yIChuYW1lLCBjb3Vu
dCkgaW4gc29ydGVkKHNlbGYuX3N1cHByZXNzaW9ucy5pdGVtcygpLCBrZXk9bGFtYmRhIChrLCB2
KTogKHYsIGspKToKKyAgICAgICAgZm9yIChuYW1lLCBjb3VudCkgaW4gc29ydGVkKHNlbGYuX3N1
cHByZXNzaW9ucy5pdGVtcygpLCBrZXk9bGFtYmRhIHBhaXI6IChwYWlyWzFdLCBwYWlyWzBdKSk6
CiAgICAgICAgICAgICBfbG9nLmluZm8oIiU3ZCAlcyIgJSAoY291bnQsIG5hbWUpKQogICAgICAg
ICBfbG9nLmluZm8oIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIikKIAogICAgICAgICBpZiBzZWxmLl9lcnJvcnM6CiAgICAgICAgICAgICBfbG9n
LmluZm8oIlZhbGdyaW5kIGRldGVjdGVkICVzIGxlYWtzOiIgJSBsZW4oc2VsZi5fZXJyb3JzKSkK
LSAgICAgICAgICAgIGZvciBsZWFrIGluIHNlbGYuX2Vycm9yczoKKyAgICAgICAgICAgICMgRm9y
Y2UgdGhlIHNhbWUgb3JkZXIgaW4gUHl0aG9uIDIgYW5kIFB5dGhvbiAzCisgICAgICAgICAgICBm
b3IgbGVhayBpbiBzb3J0ZWQoc2VsZi5fZXJyb3JzLCBrZXk9bGFtYmRhIGVycm9yOiBlcnJvci51
bmlxdWVfc3RyaW5nKCkpOgogICAgICAgICAgICAgICAgIF9sb2cuaW5mbyhsZWFrKQpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmluZF91bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVj
dG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNTE2NTIpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlMgogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVT
eXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBP
dXRwdXRDYXB0dXJlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkg
aW1wb3J0IGRlY29kZV9mb3IKIGZyb20gd2Via2l0cHkucG9ydC5sZWFrZGV0ZWN0b3JfdmFsZ3Jp
bmQgaW1wb3J0IExlYWtEZXRlY3RvclZhbGdyaW5kCiAKIApAQCAtNjE5LDQwICs2MjAsNiBAQCBT
dXBwcmVzc2lvbnMgdXNlZDoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiBWYWxncmluZCBkZXRlY3RlZCAyIGxlYWtzOgogTGVha19EZWZpbml0
ZWx5TG9zdAotOCBieXRlcyBpbiAxIGJsb2NrcyBhcmUgZGVmaW5pdGVseSBsb3N0IGluIGxvc3Mg
cmVjb3JkIDQyMSBvZiA3LDk3MgotICBvcGVyYXRvciBuZXcodW5zaWduZWQgbG9uZykgKC91c3Iv
bGliL3ZhbGdyaW5kL3ZncHJlbG9hZF9tZW1jaGVjay1hbWQ2NC1saW51eC5zbykKLSAgc3RkOjpf
RnVuY3Rpb25fYmFzZTo6X0Jhc2VfbWFuYWdlcjxXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVj
a05hdmlnYXRpb25Qb2xpY3koV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IGNvbnN0JiwgV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwg
dm9pZCAoKikodm9pZCosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25zdCYsIFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBib29sKSwgdm9pZCopOjp7bGFtYmRhKFdlYkNv
cmU6OlBvbGljeUFjdGlvbikjMX0+OjpfTV9tYW5hZ2VyKHN0ZDo6X0FueV9kYXRhJiwgc3RkOjpf
RnVuY3Rpb25fYmFzZTo6X0Jhc2VfbWFuYWdlcjxXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVj
a05hdmlnYXRpb25Qb2xpY3koV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IGNvbnN0JiwgV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwg
dm9pZCAoKikodm9pZCosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25zdCYsIFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBib29sKSwgdm9pZCopOjp7bGFtYmRhKFdlYkNv
cmU6OlBvbGljeUFjdGlvbikjMX0+IGNvbnN0Jiwgc3RkOjpfTWFuYWdlcl9vcGVyYXRpb24pICgv
aG9tZS91c2VyL1dlYktpdC9XZWJLaXRCdWlsZC9SZWxlYXNlLy5saWJzL2xpYndlYmtpdGd0ay0z
LjAuc28uMC4xOS4zKQotICB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9uZXcgKC9ob21lL3Vz
ZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxpYnMvbGlid2Via2l0Z3RrLTMuMC5zby4w
LjE5LjMpCi0gIFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uIGNvbnN0JiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IGNvbnN0JiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZv
cm1TdGF0ZT4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UG9saWN5QWN0aW9uKT4pICgv
aG9tZS91c2VyL1dlYktpdC9XZWJLaXRCdWlsZC9SZWxlYXNlLy5saWJzL2xpYndlYmtpdGd0ay0z
LjAuc28uMC4xOS4zKQotICBXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Q
b2xpY3koV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IGNvbnN0JiwgV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgdm9pZCAoKikodm9p
ZCosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25zdCYsIFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpGb3JtU3RhdGU+LCBib29sKSwgdm9pZCopICgvaG9tZS91c2VyL1dlYktpdC9XZWJLaXRC
dWlsZC9SZWxlYXNlLy5saWJzL2xpYndlYmtpdGd0ay0zLjAuc28uMC4xOS4zKQotICBXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcihXZWJDb3JlOjpEb2N1bWVudExv
YWRlciosIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpG
b3JtU3RhdGU+KSAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS8ubGlicy9s
aWJ3ZWJraXRndGstMy4wLnNvLjAuMTkuMykKLSAgV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWQo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQv
UmVsZWFzZS8ubGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAuMTkuMykKLSAgV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWQoV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdCBjb25zdCYpICgvaG9tZS91
c2VyL1dlYktpdC9XZWJLaXRCdWlsZC9SZWxlYXNlLy5saWJzL2xpYndlYmtpdGd0ay0zLjAuc28u
MC4xOS4zKQotICB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRfdXJpICgvaG9tZS91c2VyL1dlYktpdC9X
ZWJLaXRCdWlsZC9SZWxlYXNlLy5saWJzL2xpYndlYmtpdGd0ay0zLjAuc28uMC4xOS4zKQotICBy
dW5UZXN0KHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIHN0
ZDo6YWxsb2NhdG9yPGNoYXI+ID4gY29uc3QmKSAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVp
bGQvUmVsZWFzZS9Qcm9ncmFtcy9EdW1wUmVuZGVyVHJlZSkKLSAgcnVuVGVzdGluZ1NlcnZlckxv
b3AoKSAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS9Qcm9ncmFtcy9EdW1w
UmVuZGVyVHJlZSkKLSAgbWFpbiAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFz
ZS9Qcm9ncmFtcy9EdW1wUmVuZGVyVHJlZSkKLVN1cHByZXNzaW9uIChlcnJvciBoYXNoPSMwNDQ5
RDNFRDI1M0ZFMUY5Iyk6Ci0KLXsKLSAgIDxpbnNlcnRfYV9zdXBwcmVzc2lvbl9uYW1lX2hlcmU+
Ci0gICBNZW1jaGVjazpMZWFrCi0gICBmdW46X1pudyoKLSAgIGZ1bjpfWk5TdDE0X0Z1bmN0aW9u
X2Jhc2UxM19CYXNlX21hbmFnZXJJWk43V2ViQ29yZTEzUG9saWN5Q2hlY2tlcjIxY2hlY2tOYXZp
Z2F0aW9uUG9saWN5RVJLTlMxXzE1UmVzb3VyY2VSZXF1ZXN0RVBOUzFfMTREb2N1bWVudExvYWRl
ckVOM1dURjEwUGFzc1JlZlB0cklOUzFfOUZvcm1TdGF0ZUVFRVBGdlB2UzVfU0JfYkVTQ19FVWxO
UzFfMTJQb2xpY3lBY3Rpb25FRV9FMTBfTV9tYW5hZ2VyRVJTdDlfQW55X2RhdGFSS1NJX1N0MThf
TWFuYWdlcl9vcGVyYXRpb24KLSAgIGZ1bjp3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl9uZXcK
LSAgIGZ1bjpfWk42V2ViS2l0MTdGcmFtZUxvYWRlckNsaWVudDM5ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uRVJLTjdXZWJDb3JlMTZOYXZpZ2F0aW9uQWN0aW9uRVJLTlMx
XzE1UmVzb3VyY2VSZXF1ZXN0RU4zV1RGMTBQYXNzUmVmUHRySU5TMV85Rm9ybVN0YXRlRUVFU3Q4
ZnVuY3Rpb25JRnZOUzFfMTJQb2xpY3lBY3Rpb25FRUUKLSAgIGZ1bjpfWk43V2ViQ29yZTEzUG9s
aWN5Q2hlY2tlcjIxY2hlY2tOYXZpZ2F0aW9uUG9saWN5RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RF
UE5TXzE0RG9jdW1lbnRMb2FkZXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOUZvcm1TdGF0ZUVFRVBG
dlB2UzNfUzlfYkVTQV8KLSAgIGZ1bjpfWk43V2ViQ29yZTExRnJhbWVMb2FkZXIyMmxvYWRXaXRo
RG9jdW1lbnRMb2FkZXJFUE5TXzE0RG9jdW1lbnRMb2FkZXJFTlNfMTNGcmFtZUxvYWRUeXBlRU4z
V1RGMTBQYXNzUmVmUHRySU5TXzlGb3JtU3RhdGVFRUUKLSAgIGZ1bjpfWk43V2ViQ29yZTExRnJh
bWVMb2FkZXI0bG9hZEVQTlNfMTREb2N1bWVudExvYWRlckUKLSAgIGZ1bjpfWk43V2ViQ29yZTEx
RnJhbWVMb2FkZXI0bG9hZEVSS05TXzE2RnJhbWVMb2FkUmVxdWVzdEUKLSAgIGZ1bjp3ZWJraXRf
d2ViX2ZyYW1lX2xvYWRfdXJpCi0gICBmdW46X1pMN3J1blRlc3RSS1NzCi0gICBmdW46X1pMMjBy
dW5UZXN0aW5nU2VydmVyTG9vcHYKLSAgIGZ1bjptYWluCi19Ci0KLQotTGVha19EZWZpbml0ZWx5
TG9zdAogOCBieXRlcyBpbiAxIGJsb2NrcyBhcmUgZGVmaW5pdGVseSBsb3N0IGluIGxvc3MgcmVj
b3JkIDQyMiBvZiA3LDk3MgogICBvcGVyYXRvciBuZXcodW5zaWduZWQgbG9uZykgKC91c3IvbGli
L3ZhbGdyaW5kL3ZncHJlbG9hZF9tZW1jaGVjay1hbWQ2NC1saW51eC5zbykKICAgc3RkOjpfRnVu
Y3Rpb25fYmFzZTo6X0Jhc2VfbWFuYWdlcjxXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja0Nv
bnRlbnRQb2xpY3koV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBjb25zdCYsIHZvaWQgKCopKHZv
aWQqLCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24pLCB2b2lkKik6OntsYW1iZGEoV2ViQ29yZTo6UG9s
aWN5QWN0aW9uKSMxfT46Ol9NX21hbmFnZXIoc3RkOjpfQW55X2RhdGEmLCBzdGQ6Ol9GdW5jdGlv
bl9iYXNlOjpfQmFzZV9tYW5hZ2VyPFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrQ29udGVu
dFBvbGljeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIGNvbnN0Jiwgdm9pZCAoKikodm9pZCos
IFdlYkNvcmU6OlBvbGljeUFjdGlvbiksIHZvaWQqKTo6e2xhbWJkYShXZWJDb3JlOjpQb2xpY3lB
Y3Rpb24pIzF9PiBjb25zdCYsIHN0ZDo6X01hbmFnZXJfb3BlcmF0aW9uKSAoL2hvbWUvdXNlci9X
ZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS8ubGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAuMTku
MykKQEAgLTY5OCw2ICs2NjUsNDAgQEAgU3VwcHJlc3Npb24gKGVycm9yIGhhc2g9IzgzMTNERUIx
NkIwNjk0MwogfQogCiAKK0xlYWtfRGVmaW5pdGVseUxvc3QKKzggYnl0ZXMgaW4gMSBibG9ja3Mg
YXJlIGRlZmluaXRlbHkgbG9zdCBpbiBsb3NzIHJlY29yZCA0MjEgb2YgNyw5NzIKKyAgb3BlcmF0
b3IgbmV3KHVuc2lnbmVkIGxvbmcpICgvdXNyL2xpYi92YWxncmluZC92Z3ByZWxvYWRfbWVtY2hl
Y2stYW1kNjQtbGludXguc28pCisgIHN0ZDo6X0Z1bmN0aW9uX2Jhc2U6Ol9CYXNlX21hbmFnZXI8
V2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBjb25zdCYsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIHZvaWQgKCopKHZvaWQqLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgY29uc3QmLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwg
Ym9vbCksIHZvaWQqKTo6e2xhbWJkYShXZWJDb3JlOjpQb2xpY3lBY3Rpb24pIzF9Pjo6X01fbWFu
YWdlcihzdGQ6Ol9BbnlfZGF0YSYsIHN0ZDo6X0Z1bmN0aW9uX2Jhc2U6Ol9CYXNlX21hbmFnZXI8
V2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBjb25zdCYsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIHZvaWQgKCopKHZvaWQqLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgY29uc3QmLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwg
Ym9vbCksIHZvaWQqKTo6e2xhbWJkYShXZWJDb3JlOjpQb2xpY3lBY3Rpb24pIzF9PiBjb25zdCYs
IHN0ZDo6X01hbmFnZXJfb3BlcmF0aW9uKSAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQv
UmVsZWFzZS8ubGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAuMTkuMykKKyAgd2Via2l0X3dlYl9w
b2xpY3lfZGVjaXNpb25fbmV3ICgvaG9tZS91c2VyL1dlYktpdC9XZWJLaXRCdWlsZC9SZWxlYXNl
Ly5saWJzL2xpYndlYmtpdGd0ay0zLjAuc28uMC4xOS4zKQorICBXZWJLaXQ6OkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViQ29yZTo6
TmF2aWdhdGlvbkFjdGlvbiBjb25zdCYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25zdCYs
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KFdlYkNvcmU6OlBvbGljeUFjdGlvbik+KSAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQv
UmVsZWFzZS8ubGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAuMTkuMykKKyAgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCBjb25zdCYsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OkZvcm1TdGF0ZT4sIHZvaWQgKCopKHZvaWQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
Y29uc3QmLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgYm9vbCksIHZvaWQq
KSAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS8ubGlicy9saWJ3ZWJraXRn
dGstMy4wLnNvLjAuMTkuMykKKyAgV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1l
bnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBl
LCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikgKC9ob21lL3VzZXIvV2ViS2l0
L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxpYnMvbGlid2Via2l0Z3RrLTMuMC5zby4wLjE5LjMpCisg
IFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgKC9o
b21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxpYnMvbGlid2Via2l0Z3RrLTMu
MC5zby4wLjE5LjMpCisgIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKFdlYkNvcmU6OkZyYW1l
TG9hZFJlcXVlc3QgY29uc3QmKSAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFz
ZS8ubGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAuMTkuMykKKyAgd2Via2l0X3dlYl9mcmFtZV9s
b2FkX3VyaSAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS8ubGlicy9saWJ3
ZWJraXRndGstMy4wLnNvLjAuMTkuMykKKyAgcnVuVGVzdChzdGQ6OmJhc2ljX3N0cmluZzxjaGFy
LCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0Jikg
KC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvUHJvZ3JhbXMvRHVtcFJlbmRl
clRyZWUpCisgIHJ1blRlc3RpbmdTZXJ2ZXJMb29wKCkgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktp
dEJ1aWxkL1JlbGVhc2UvUHJvZ3JhbXMvRHVtcFJlbmRlclRyZWUpCisgIG1haW4gKC9ob21lL3Vz
ZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvUHJvZ3JhbXMvRHVtcFJlbmRlclRyZWUpCitT
dXBwcmVzc2lvbiAoZXJyb3IgaGFzaD0jMDQ0OUQzRUQyNTNGRTFGOSMpOgorCit7CisgICA8aW5z
ZXJ0X2Ffc3VwcHJlc3Npb25fbmFtZV9oZXJlPgorICAgTWVtY2hlY2s6TGVhaworICAgZnVuOl9a
bncqCisgICBmdW46X1pOU3QxNF9GdW5jdGlvbl9iYXNlMTNfQmFzZV9tYW5hZ2VySVpON1dlYkNv
cmUxM1BvbGljeUNoZWNrZXIyMWNoZWNrTmF2aWdhdGlvblBvbGljeUVSS05TMV8xNVJlc291cmNl
UmVxdWVzdEVQTlMxXzE0RG9jdW1lbnRMb2FkZXJFTjNXVEYxMFBhc3NSZWZQdHJJTlMxXzlGb3Jt
U3RhdGVFRUVQRnZQdlM1X1NCX2JFU0NfRVVsTlMxXzEyUG9saWN5QWN0aW9uRUVfRTEwX01fbWFu
YWdlckVSU3Q5X0FueV9kYXRhUktTSV9TdDE4X01hbmFnZXJfb3BlcmF0aW9uCisgICBmdW46d2Vi
a2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fbmV3CisgICBmdW46X1pONldlYktpdDE3RnJhbWVMb2Fk
ZXJDbGllbnQzOWRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkVSS043V2Vi
Q29yZTE2TmF2aWdhdGlvbkFjdGlvbkVSS05TMV8xNVJlc291cmNlUmVxdWVzdEVOM1dURjEwUGFz
c1JlZlB0cklOUzFfOUZvcm1TdGF0ZUVFRVN0OGZ1bmN0aW9uSUZ2TlMxXzEyUG9saWN5QWN0aW9u
RUVFCisgICBmdW46X1pON1dlYkNvcmUxM1BvbGljeUNoZWNrZXIyMWNoZWNrTmF2aWdhdGlvblBv
bGljeUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVBOU18xNERvY3VtZW50TG9hZGVyRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzlGb3JtU3RhdGVFRUVQRnZQdlMzX1M5X2JFU0FfCisgICBmdW46X1pON1dl
YkNvcmUxMUZyYW1lTG9hZGVyMjJsb2FkV2l0aERvY3VtZW50TG9hZGVyRVBOU18xNERvY3VtZW50
TG9hZGVyRU5TXzEzRnJhbWVMb2FkVHlwZUVOM1dURjEwUGFzc1JlZlB0cklOU185Rm9ybVN0YXRl
RUVFCisgICBmdW46X1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyNGxvYWRFUE5TXzE0RG9jdW1lbnRM
b2FkZXJFCisgICBmdW46X1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyNGxvYWRFUktOU18xNkZyYW1l
TG9hZFJlcXVlc3RFCisgICBmdW46d2Via2l0X3dlYl9mcmFtZV9sb2FkX3VyaQorICAgZnVuOl9a
TDdydW5UZXN0UktTcworICAgZnVuOl9aTDIwcnVuVGVzdGluZ1NlcnZlckxvb3B2CisgICBmdW46
bWFpbgorfQorCisKICIiIgogCiB2YWxncmluZF9vdXRwdXRfY3BwZmlsdF9tYXAgPSB7CkBAIC04
MDcsNyArODA4LDcgQEAgU3VwcHJlc3Npb25zIHVzZWQ6CiAKIGRlZiBtb2NrX3J1bl9jcHBmaWx0
X2NvbW1hbmQoYXJncyk6CiAgICAgaWYgYXJnc1swXSA9PSAnYysrZmlsdCc6Ci0gICAgICAgIHJl
dHVybiB2YWxncmluZF9vdXRwdXRfY3BwZmlsdF9tYXBbYXJnc1syXV0KKyAgICAgICAgcmV0dXJu
IHZhbGdyaW5kX291dHB1dF9jcHBmaWx0X21hcFtkZWNvZGVfZm9yKGFyZ3NbMl0sIHN0cildCiAg
ICAgcmV0dXJuICIiCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4
X2dldF9jcmFzaF9sb2cucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2xpbnV4X2dldF9jcmFzaF9sb2cucHkJKHJldmlzaW9uIDI1MTY1MikKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hfbG9nLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw2ICszNiw3IEBAIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKIAogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2lmX25l
Y2Vzc2FyeQogCiAKIGNsYXNzIEdEQkNyYXNoTG9nR2VuZXJhdG9yKG9iamVjdCk6CkBAIC03NSw3
ICs3Niw3IEBAIGNsYXNzIEdEQkNyYXNoTG9nR2VuZXJhdG9yKG9iamVjdCk6CiAgICAgICAgICAg
ICB0cnk6CiAgICAgICAgICAgICAgICAgaW5mbyA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFu
ZChjb3JlZHVtcGN0bCArIFsnaW5mbycsICItLXNpbmNlPSIgKyB0aW1lLnN0cmZ0aW1lKCIlYSAl
WS0lbS0lZCAlSDolTTolUyAlWiIsIHRpbWUubG9jYWx0aW1lKHNlbGYubmV3ZXJfdGhhbikpXSwK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3N0ZGVycj1UcnVlKQotICAgICAgICAgICAgZXhj
ZXB0IFNjcmlwdEVycm9yLCBPU0Vycm9yOgorICAgICAgICAgICAgZXhjZXB0IChTY3JpcHRFcnJv
ciwgT1NFcnJvcik6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgZm91
bmRfbmV3ZXIgPSBGYWxzZQpAQCAtMTI5LDcgKzEzMCw3IEBAIGNsYXNzIEdEQkNyYXNoTG9nR2Vu
ZXJhdG9yKG9iamVjdCk6CiAgICAgICAgIGVsaWYgY29yZWR1bXBjdGw6CiAgICAgICAgICAgICBj
cmFzaF9sb2csIGVycm9ycyA9IHNlbGYuX2dldF90cmFjZV9mcm9tX3N5c3RlbWQoY29yZWR1bXBj
dGwsIHBpZF9yZXByZXNlbnRhdGlvbikKIAotICAgICAgICBzdGRlcnJfbGluZXMgPSBlcnJvcnMg
KyBzdHIoc3RkZXJyIG9yICc8ZW1wdHk+JykuZGVjb2RlKCd1dGY4JywgJ2lnbm9yZScpLnNwbGl0
bGluZXMoKQorICAgICAgICBzdGRlcnJfbGluZXMgPSBlcnJvcnMgKyBkZWNvZGVfaWZfbmVjZXNz
YXJ5KHN0cihzdGRlcnIgb3IgJzxlbXB0eT4nKSwgZXJyb3JzPSdpZ25vcmUnKS5zcGxpdGxpbmVz
KCkKICAgICAgICAgZXJyb3JzX3N0ciA9ICdcbicuam9pbigoJ1NUREVSUjogJyArIHN0ZGVycl9s
aW5lKSBmb3Igc3RkZXJyX2xpbmUgaW4gc3RkZXJyX2xpbmVzKQogICAgICAgICBjcHBmaWx0X3By
b2MgPSBzZWxmLl9leGVjdXRpdmUucG9wZW4oCiAgICAgICAgICAgICBbJ2MrK2ZpbHQnXSwgc3Rk
aW49c3VicHJvY2Vzcy5QSVBFLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJv
Y2Vzcy5QSVBFKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjLnB5CShyZXZpc2lvbiAy
NTE2NTIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yMjIsNyArMjIyLDcgQEAgY2xhc3MgTWFjUG9ydChEYXJ3aW5Qb3J0KToKICAgICAg
ICAgc2VsZi5faGVscGVyID0gc2VsZi5fZXhlY3V0aXZlLnBvcGVuKGFyZ3VtZW50cywKICAgICAg
ICAgICAgIHN0ZGluPXNlbGYuX2V4ZWN1dGl2ZS5QSVBFLCBzdGRvdXQ9c2VsZi5fZXhlY3V0aXZl
LlBJUEUsIHN0ZGVycj1Ob25lKQogICAgICAgICBpc19yZWFkeSA9IHNlbGYuX2hlbHBlci5zdGRv
dXQucmVhZGxpbmUoKQotICAgICAgICBpZiBub3QgaXNfcmVhZHkuc3RhcnRzd2l0aCgncmVhZHkn
KToKKyAgICAgICAgaWYgbm90IGlzX3JlYWR5LnN0YXJ0c3dpdGgoYidyZWFkeScpOgogICAgICAg
ICAgICAgX2xvZy5lcnJvcigiTGF5b3V0VGVzdEhlbHBlciBjb3VsZCBub3Qgc3RhcnQiKQogICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCkBAIC0yNDIsNyArMjQy
LDcgQEAgY2xhc3MgTWFjUG9ydChEYXJ3aW5Qb3J0KToKICAgICAgICAgaWYgc2VsZi5faGVscGVy
OgogICAgICAgICAgICAgX2xvZy5kZWJ1ZygiU3RvcHBpbmcgTGF5b3V0VGVzdEhlbHBlciIpCiAg
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5faGVscGVyLnN0ZGluLndyaXRl
KCJ4XG4iKQorICAgICAgICAgICAgICAgIHNlbGYuX2hlbHBlci5zdGRpbi53cml0ZShiInhcbiIp
CiAgICAgICAgICAgICAgICAgc2VsZi5faGVscGVyLnN0ZGluLmNsb3NlKCkKICAgICAgICAgICAg
ICAgICBzZWxmLl9oZWxwZXIud2FpdCgpCiAgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBl
OgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tb2NrX2RydF91bml0
dGVzdC5weQkocmV2aXNpb24gMjUxNjUyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiBp
bXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0
IG5ld3N0cmluZ2lvCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2Nr
IGltcG9ydCBNb2NrU3lzdGVtSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21w
YXRpYmlsaXR5IGltcG9ydCBTdHJpbmdJTwogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBtb2Nr
X2RydAogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCiBmcm9tIHdlYmtp
dHB5LnBvcnQgaW1wb3J0IHRlc3QKQEAgLTE0Niw5ICsxNDYsOSBAQCBjbGFzcyBNb2NrRFJUVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBwaXhlbF90ZXN0cywgZXhwZWN0ZWRf
Y2hlY2tzdW0sIGRydF9vdXRwdXQsIGRydF9pbnB1dD1Ob25lLCBleHBlY3RlZF90ZXh0PWV4cGVj
dGVkX3RleHQpCiAKICAgICAgICAgYXJncyA9IFsnLS1wbGF0Zm9ybScsIHBvcnRfbmFtZV0gKyBz
ZWxmLmV4dHJhX2FyZ3MocGl4ZWxfdGVzdHMpCi0gICAgICAgIHN0ZGluID0gbmV3c3RyaW5naW8u
U3RyaW5nSU8oZHJ0X2lucHV0KQotICAgICAgICBzdGRvdXQgPSBuZXdzdHJpbmdpby5TdHJpbmdJ
TygpCi0gICAgICAgIHN0ZGVyciA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKCkKKyAgICAgICAgc3Rk
aW4gPSBTdHJpbmdJTyhkcnRfaW5wdXQpCisgICAgICAgIHN0ZG91dCA9IFN0cmluZ0lPKCkKKyAg
ICAgICAgc3RkZXJyID0gU3RyaW5nSU8oKQogICAgICAgICBvcHRpb25zLCBhcmdzID0gbW9ja19k
cnQucGFyc2Vfb3B0aW9ucyhhcmdzKQogCiAgICAgICAgIGRydCA9IHNlbGYubWFrZV9kcnQob3B0
aW9ucywgYXJncywgaG9zdCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKQpAQCAtMTU2LDE3ICsxNTYs
MTUgQEAgY2xhc3MgTW9ja0RSVFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzLCAwKQogCi0gICAgICAgICMgV2UgdXNlIHRoZSBTdHJpbmdJTy5i
dWZsaXN0IGhlcmUgaW5zdGVhZCBvZiBnZXR2YWx1ZSgpIGJlY2F1c2UKLSAgICAgICAgIyB0aGUg
U3RyaW5nSU8gbWlnaHQgYmUgYSBtaXggb2YgdW5pY29kZS9hc2NpaSBhbmQgOC1iaXQgc3RyaW5n
cy4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuYnVmbGlzdCwgZHJ0X291dHB1dCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJycuam9pbihkcnRf
b3V0cHV0KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJyNF
T0ZcbicpCiAKICAgICBkZWYgdGVzdF9tYWluKHNlbGYpOgogICAgICAgICBob3N0ID0gTW9ja1N5
c3RlbUhvc3QoKQogICAgICAgICB0ZXN0LmFkZF91bml0X3Rlc3RzX3RvX21vY2tfZmlsZXN5c3Rl
bShob3N0LmZpbGVzeXN0ZW0pCi0gICAgICAgIHN0ZGluID0gbmV3c3RyaW5naW8uU3RyaW5nSU8o
KQotICAgICAgICBzdGRvdXQgPSBuZXdzdHJpbmdpby5TdHJpbmdJTygpCi0gICAgICAgIHN0ZGVy
ciA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKCkKKyAgICAgICAgc3RkaW4gPSBTdHJpbmdJTygpCisg
ICAgICAgIHN0ZG91dCA9IFN0cmluZ0lPKCkKKyAgICAgICAgc3RkZXJyID0gU3RyaW5nSU8oKQog
ICAgICAgICByZXMgPSBtb2NrX2RydC5tYWluKFsnLS1wbGF0Zm9ybScsICd0ZXN0J10gKyBzZWxm
LmV4dHJhX2FyZ3MoRmFsc2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QsIHN0
ZGluLCBzdGRvdXQsIHN0ZGVycikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDApCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5weQkocmV2
aXNpb24gMjUxNjUyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNh
c2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgZGVmIGJpbmRfbW9ja19hcHBs
ZV9hZGRpdGlvbnMoKToKICAgICAgICAgICAgIHJlc3VsdC5tYXBwaW5nW0lOVEVSTkFMX1RBQkxF
XSA9IHt9CiAgICAgICAgICAgICBmb3IgcGxhdGZvcm0gaW4gcmVzdWx0Lm1hcHBpbmdbUFVCTElD
X1RBQkxFXToKICAgICAgICAgICAgICAgICByZXN1bHQubWFwcGluZ1tJTlRFUk5BTF9UQUJMRV1b
cGxhdGZvcm1dID0ge30KLSAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmVyc2lvbiBpbiByZXN1
bHQubWFwcGluZ1tQVUJMSUNfVEFCTEVdW3BsYXRmb3JtXS5pdGVyaXRlbXMoKToKKyAgICAgICAg
ICAgICAgICBmb3IgbmFtZSwgdmVyc2lvbiBpbiByZXN1bHQubWFwcGluZ1tQVUJMSUNfVEFCTEVd
W3BsYXRmb3JtXS5pdGVtcygpOgogICAgICAgICAgICAgICAgICAgICByZXN1bHQubWFwcGluZ1tJ
TlRFUk5BTF9UQUJMRV1bcGxhdGZvcm1dWydhZGQtJyArIG5hbWVdID0gdmVyc2lvbgogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC00NjksOCArNDY5LDggQEAgY2xhc3MgUG9ydFRlc3RD
YXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZm9yIHBhdGggaW4gcG9ydC5leHBlY3Rh
dGlvbnNfZmlsZXMoKToKICAgICAgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9m
aWxlKHBhdGgsICcnKQogICAgICAgICBvcmRlcmVkX2RpY3QgPSBwb3J0LmV4cGVjdGF0aW9uc19k
aWN0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnBhdGhfdG9fZ2VuZXJpY190ZXN0
X2V4cGVjdGF0aW9uc19maWxlKCksIG9yZGVyZWRfZGljdC5rZXlzKClbMF0pCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSwgb3Jk
ZXJlZF9kaWN0LmtleXMoKVtwb3J0LnRlc3RfZXhwZWN0YXRpb25zX2ZpbGVfcG9zaXRpb24oKV0p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wYXRoX3RvX2dlbmVyaWNfdGVzdF9leHBl
Y3RhdGlvbnNfZmlsZSgpLCBsaXN0KG9yZGVyZWRfZGljdC5rZXlzKCkpWzBdKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCksIGxp
c3Qob3JkZXJlZF9kaWN0LmtleXMoKSlbcG9ydC50ZXN0X2V4cGVjdGF0aW9uc19maWxlX3Bvc2l0
aW9uKCldKQogCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhhZGRpdGlvbmFsX2V4cGVj
dGF0aW9ucz1bJy90bXAvZm9vJywgJy90bXAvYmFyJ10pCiAgICAgICAgIHBvcnQgPSBzZWxmLm1h
a2VfcG9ydChvcHRpb25zPW9wdGlvbnMpCkBAIC00NzksOCArNDc5LDggQEAgY2xhc3MgUG9ydFRl
c3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcG9ydC5fZmlsZXN5c3RlbS53cml0
ZV90ZXh0X2ZpbGUoJy90bXAvZm9vJywgJ2ZvbycpCiAgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0u
d3JpdGVfdGV4dF9maWxlKCcvdG1wL2JhcicsICdiYXInKQogICAgICAgICBvcmRlcmVkX2RpY3Qg
PSBwb3J0LmV4cGVjdGF0aW9uc19kaWN0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmRl
cmVkX2RpY3Qua2V5cygpWy0yOl0sIG9wdGlvbnMuYWRkaXRpb25hbF9leHBlY3RhdGlvbnMpICAj
IHB5bGludDogZGlzYWJsZT1FMTEwMQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yZGVyZWRf
ZGljdC52YWx1ZXMoKVstMjpdLCBbJ2ZvbycsICdiYXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaXN0KG9yZGVyZWRfZGljdC5rZXlzKCkpWy0yOl0sIG9wdGlvbnMuYWRkaXRpb25hbF9l
eHBlY3RhdGlvbnMpICAjIHB5bGludDogZGlzYWJsZT1FMTEwMQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxpc3Qob3JkZXJlZF9kaWN0LnZhbHVlcygpKVstMjpdLCBbJ2ZvbycsICdiYXInXSkK
IAogICAgIGRlZiB0ZXN0X3BhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKICAg
ICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKQEAgLTUzMSw3ICs1MzEsNyBAQCBjbGFzcyBQ
b3J0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBob3N0LmZpbGVzeXN0ZW0u
d3JpdGVfdGV4dF9maWxlKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS90ZXN0
d2Via2l0cG9ydC9UZXN0RXhwZWN0YXRpb25zJywKICAgICAgICAgICAgICdCVUdfVEVTVEVYUEVD
VEFUSU9OUyBTS0lQIDogZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sID0gRkFJTFxuJykK
ICAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KGhvc3Q9aG9zdCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnJy5qb2luKHBvcnQuZXhwZWN0YXRpb25zX2RpY3QoKS52YWx1ZXMoKSksICdC
VUdfVEVTVEVYUEVDVEFUSU9OUyBTS0lQIDogZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1s
ID0gRkFJTFxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKGxpc3QocG9ydC5l
eHBlY3RhdGlvbnNfZGljdCgpLnZhbHVlcygpKSksICdCVUdfVEVTVEVYUEVDVEFUSU9OUyBTS0lQ
IDogZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sID0gRkFJTFxuJykKIAogICAgIGRlZiB0
ZXN0X2J1aWxkX2RyaXZlcihzZWxmKToKICAgICAgICAgb3V0cHV0ID0gT3V0cHV0Q2FwdHVyZSgp
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkJKHJldmlzaW9uIDI1MTY1MikKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTkx
LDcgKzkxLDcgQEAgY2xhc3MgV2luUG9ydChBcHBsZVBvcnQpOgogCiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpOgogICAgICAgICBBcHBsZVBvcnQuX19p
bml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCAqKmt3YXJncykKLSAgICAgICAgaWYgcG9ydF9u
YW1lLnNwbGl0KCctJykgPiAxOgorICAgICAgICBpZiBsZW4ocG9ydF9uYW1lLnNwbGl0KCctJykp
ID4gMToKICAgICAgICAgICAgIHNlbGYuX29zX3ZlcnNpb24gPSBWZXJzaW9uTmFtZU1hcC5tYXAo
aG9zdC5wbGF0Zm9ybSkuZnJvbV9uYW1lKHBvcnRfbmFtZS5zcGxpdCgnLScpWzFdKVsxXQogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fb3NfdmVyc2lvbiA9IHNlbGYuaG9zdC5wbGF0
Zm9ybS5vc192ZXJzaW9uCkBAIC0xMjcsNyArMTI3LDcgQEAgY2xhc3MgV2luUG9ydChBcHBsZVBv
cnQpOgogICAgICAgICAgICAgIyBOb3RlIHdlIGRvIG5vdCBhZGQgJ3drMicgaGVyZSwgZXZlbiB0
aG91Z2ggaXQncyBpbmNsdWRlZCBpbiBfc2tpcHBlZF9zZWFyY2hfcGF0aHMoKS4KICAgICAgICAg
IyBGSVhNRTogUGVyaGFwcyB3ZSBzaG91bGQgZ2V0IHRoaXMgbGlzdCBmcm9tIE1hY1BvcnQ/CiAg
ICAgICAgIGZhbGxiYWNrX25hbWVzLmFwcGVuZCgnbWFjJykKLSAgICAgICAgcmVzdWx0ID0gbWFw
KHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBmYWxsYmFja19uYW1lcykKKyAgICAgICAgcmVz
dWx0ID0gbGlzdChtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIGZhbGxiYWNrX25hbWVz
KSkKICAgICAgICAgaWYgYXBwbGVfYWRkaXRpb25zKCkgYW5kIGdldGF0dHIoYXBwbGVfYWRkaXRp
b25zKCksICJsYXlvdXRfdGVzdHNfcGF0aCIsIE5vbmUpOgogICAgICAgICAgICAgcmVzdWx0Lmlu
c2VydCgwLCBzZWxmLl9maWxlc3lzdGVtLmpvaW4oYXBwbGVfYWRkaXRpb25zKCkubGF5b3V0X3Rl
c3RzX3BhdGgoKSwgc2VsZi5wb3J0X25hbWUpKQogICAgICAgICByZXR1cm4gcmVzdWx0CkBAIC0y
MDUsNyArMjA1LDcgQEAgY2xhc3MgV2luUG9ydChBcHBsZVBvcnQpOgogCiAgICAgZGVmIHRlc3Rf
c2VhcmNoX3BhdGgoc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICB0ZXN0X2ZhbGxiYWNrX25hbWVz
ID0gW3BhdGggZm9yIHBhdGggaW4gc2VsZi5iYXNlbGluZV9zZWFyY2hfcGF0aCgpIGlmIG5vdCBw
YXRoLnN0YXJ0c3dpdGgoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ21hYycpKV0KLSAgICAg
ICAgcmV0dXJuIG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgdGVzdF9mYWxsYmFja19u
YW1lcykKKyAgICAgICAgcmV0dXJuIGxpc3QobWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRo
LCB0ZXN0X2ZhbGxiYWNrX25hbWVzKSkKIAogICAgIGRlZiBfbnRzZF9sb2NhdGlvbihzZWxmKToK
ICAgICAgICAgaWYgJ1BST0dSQU1GSUxFUycgbm90IGluIG9zLmVudmlyb246CkBAIC0zNDAsNyAr
MzQwLDcgQEAgY2xhc3MgV2luUG9ydChBcHBsZVBvcnQpOgogICAgICAgICAgICAgcmV0dXJuIE5v
bmUKICAgICAgICAgZGVidWdnZXJfb3B0aW9ucyA9ICciezB9IiAtcCAlbGQgLWUgJWxkIC1nIC1u
b2lvIC1saW5lcyAtY2YgInsxfSInLmZvcm1hdChjeWdwYXRoKG50c2RfcGF0aCksIGN5Z3BhdGgo
Y29tbWFuZF9maWxlKSkKICAgICAgICAgcmVnaXN0cnlfc2V0dGluZ3MgPSB7J0RlYnVnZ2VyJzog
W2RlYnVnZ2VyX29wdGlvbnMsIHNlbGYuX1JFR19TWl0sICdBdXRvJzogWyIxIiwgc2VsZi5fUkVH
X1NaXX0KLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gcmVnaXN0cnlfc2V0dGluZ3MuaXRlcml0
ZW1zKCk6CisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHJlZ2lzdHJ5X3NldHRpbmdzLml0ZW1z
KCk6CiAgICAgICAgICAgICBmb3IgYXJjaCBpbiBbIi0td293MzIiLCAiLS13b3c2NCJdOgogICAg
ICAgICAgICAgICAgIHNlbGYucHJldmlvdXNfZGVidWdnZXJfdmFsdWVzWyhhcmNoLCBzZWxmLl9I
S0xNLCBrZXkpXSA9IHNlbGYucmVhZF9yZWdpc3RyeV92YWx1ZShzZWxmLlBPU1RfTU9SVEVNX0RF
QlVHR0VSX0tFWSwgYXJjaCwgc2VsZi5fSEtMTSwga2V5KQogICAgICAgICAgICAgICAgIHNlbGYu
cHJldmlvdXNfd293NjRfZGVidWdnZXJfdmFsdWVzWyhhcmNoLCBzZWxmLl9IS0xNLCBrZXkpXSA9
IHNlbGYucmVhZF9yZWdpc3RyeV92YWx1ZShzZWxmLldPVzY0X1BPU1RfTU9SVEVNX0RFQlVHR0VS
X0tFWSwgYXJjaCwgc2VsZi5fSEtMTSwga2V5KQpAQCAtMzQ4LDE0ICszNDgsMTQgQEAgY2xhc3Mg
V2luUG9ydChBcHBsZVBvcnQpOgogICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfcmVnaXN0cnlf
dmFsdWUoc2VsZi5XT1c2NF9QT1NUX01PUlRFTV9ERUJVR0dFUl9LRVksIGFyY2gsIHNlbGYuX0hL
TE0sIGtleSwgdmFsdWVbMV0sIHZhbHVlWzBdKQogCiAgICAgZGVmIHJlc3RvcmVfY3Jhc2hfbG9n
X3NhdmluZyhzZWxmKToKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5wcmV2aW91c19k
ZWJ1Z2dlcl92YWx1ZXMuaXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNl
bGYucHJldmlvdXNfZGVidWdnZXJfdmFsdWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBzZWxmLndy
aXRlX3JlZ2lzdHJ5X3ZhbHVlKHNlbGYuUE9TVF9NT1JURU1fREVCVUdHRVJfS0VZLCBrZXlbMF0s
IGtleVsxXSwga2V5WzJdLCB2YWx1ZVsxXSwgdmFsdWVbMF0pCi0gICAgICAgIGZvciBrZXksIHZh
bHVlIGluIHNlbGYucHJldmlvdXNfd293NjRfZGVidWdnZXJfdmFsdWVzLml0ZXJpdGVtcygpOgor
ICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLnByZXZpb3VzX3dvdzY0X2RlYnVnZ2VyX3Zh
bHVlcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi53cml0ZV9yZWdpc3RyeV92YWx1ZShzZWxm
LldPVzY0X1BPU1RfTU9SVEVNX0RFQlVHR0VSX0tFWSwga2V5WzBdLCBrZXlbMV0sIGtleVsyXSwg
dmFsdWVbMV0sIHZhbHVlWzBdKQogCiAgICAgZGVmIHByZXZlbnRfZXJyb3JfZGlhbG9ncyhzZWxm
KToKICAgICAgICAgcmVnaXN0cnlfc2V0dGluZ3MgPSB7J0RvbnRTaG93VUknOiBbMSwgc2VsZi5f
UkVHX0RXT1JEXSwgJ0Rpc2FibGVkJzogWzEsIHNlbGYuX1JFR19EV09SRF19Ci0gICAgICAgIGZv
ciBrZXksIHZhbHVlIGluIHJlZ2lzdHJ5X3NldHRpbmdzLml0ZXJpdGVtcygpOgorICAgICAgICBm
b3Iga2V5LCB2YWx1ZSBpbiByZWdpc3RyeV9zZXR0aW5ncy5pdGVtcygpOgogICAgICAgICAgICAg
Zm9yIHJvb3QgaW4gW3NlbGYuX0hLTE0sIHNlbGYuX0hLQ1VdOgogICAgICAgICAgICAgICAgIGZv
ciBhcmNoIGluIFsiLS13b3czMiIsICItLXdvdzY0Il06CiAgICAgICAgICAgICAgICAgICAgIHNl
bGYucHJldmlvdXNfZXJyb3JfcmVwb3J0aW5nX3ZhbHVlc1soYXJjaCwgcm9vdCwga2V5KV0gPSBz
ZWxmLnJlYWRfcmVnaXN0cnlfdmFsdWUoc2VsZi5XSU5ET1dTX0VSUk9SX1JFUE9SVElOR19LRVks
IGFyY2gsIHJvb3QsIGtleSkKQEAgLTM2NCw5ICszNjQsOSBAQCBjbGFzcyBXaW5Qb3J0KEFwcGxl
UG9ydCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfcmVnaXN0cnlfdmFsdWUoc2Vs
Zi5XT1c2NF9XSU5ET1dTX0VSUk9SX1JFUE9SVElOR19LRVksIGFyY2gsIHJvb3QsIGtleSwgdmFs
dWVbMV0sIHZhbHVlWzBdKQogCiAgICAgZGVmIGFsbG93X2Vycm9yX2RpYWxvZ3Moc2VsZik6Ci0g
ICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYucHJldmlvdXNfZXJyb3JfcmVwb3J0aW5nX3Zh
bHVlcy5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5wcmV2aW91
c19lcnJvcl9yZXBvcnRpbmdfdmFsdWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBzZWxmLndyaXRl
X3JlZ2lzdHJ5X3ZhbHVlKHNlbGYuV0lORE9XU19FUlJPUl9SRVBPUlRJTkdfS0VZLCBrZXlbMF0s
IGtleVsxXSwga2V5WzJdLCB2YWx1ZVsxXSwgdmFsdWVbMF0pCi0gICAgICAgIGZvciBrZXksIHZh
bHVlIGluIHNlbGYucHJldmlvdXNfd293NjRfZXJyb3JfcmVwb3J0aW5nX3ZhbHVlcy5pdGVyaXRl
bXMoKToKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5wcmV2aW91c193b3c2NF9lcnJv
cl9yZXBvcnRpbmdfdmFsdWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBzZWxmLndyaXRlX3JlZ2lz
dHJ5X3ZhbHVlKHNlbGYuV09XNjRfV0lORE9XU19FUlJPUl9SRVBPUlRJTkdfS0VZLCBrZXlbMF0s
IGtleVsxXSwga2V5WzJdLCB2YWx1ZVsxXSwgdmFsdWVbMF0pCiAKICAgICBkZWYgZGVsZXRlX3Nl
bV9sb2NrcyhzZWxmKToKQEAgLTQ2MywxMCArNDYzLDEwIEBAIGNsYXNzIFdpbkNhaXJvUG9ydChX
aW5Qb3J0KToKICAgICBERUZBVUxUX0FSQ0hJVEVDVFVSRSA9ICd4ODZfNjQnCiAKICAgICBkZWYg
ZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHJl
dHVybiBtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlbGYuX3NlYXJjaF9wYXRocygp
KQorICAgICAgICByZXR1cm4gbGlzdChtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNl
bGYuX3NlYXJjaF9wYXRocygpKSkKIAogICAgIGRlZiBfcG9ydF9zcGVjaWZpY19leHBlY3RhdGlv
bnNfZmlsZXMoc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gbWFwKGxhbWJkYSB4OiBz
ZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoeCksICdUZXN0
RXhwZWN0YXRpb25zJyksIHJldmVyc2VkKHNlbGYuX3NlYXJjaF9wYXRocygpKSkKKyAgICAgICAg
cmV0dXJuIGxpc3QobWFwKGxhbWJkYSB4OiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Vi
a2l0X2Jhc2VsaW5lX3BhdGgoeCksICdUZXN0RXhwZWN0YXRpb25zJyksIHJldmVyc2VkKHNlbGYu
X3NlYXJjaF9wYXRocygpKSkpCiAKICAgICBkZWYgX3NlYXJjaF9wYXRocyhzZWxmKToKICAgICAg
ICAgcGF0aHMgPSBbXQpAQCAtNTAyLDEwICs1MDIsMTAgQEAgY2xhc3MgRlRXUG9ydChXaW5Qb3J0
KToKICAgICBERUZBVUxUX0FSQ0hJVEVDVFVSRSA9ICd4ODZfNjQnCiAKICAgICBkZWYgZGVmYXVs
dF9iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHJldHVybiBt
YXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlbGYuX3NlYXJjaF9wYXRocygpKQorICAg
ICAgICByZXR1cm4gbGlzdChtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlbGYuX3Nl
YXJjaF9wYXRocygpKSkKIAogICAgIGRlZiBfcG9ydF9zcGVjaWZpY19leHBlY3RhdGlvbnNfZmls
ZXMoc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gbWFwKGxhbWJkYSB4OiBzZWxmLl9m
aWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoeCksICdUZXN0RXhwZWN0
YXRpb25zJyksIHJldmVyc2VkKHNlbGYuX3NlYXJjaF9wYXRocygpKSkKKyAgICAgICAgcmV0dXJu
IGxpc3QobWFwKGxhbWJkYSB4OiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X2Jh
c2VsaW5lX3BhdGgoeCksICdUZXN0RXhwZWN0YXRpb25zJyksIHJldmVyc2VkKHNlbGYuX3NlYXJj
aF9wYXRocygpKSkpCiAKICAgICBkZWYgX3NlYXJjaF9wYXRocyhzZWxmKToKICAgICAgICAgcGF0
aHMgPSBbXQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbl91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyNTE2NTIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2lu
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIGNsYXNzIFdpblBv
cnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3QKIAogICAgIGRlZiBfYXNzZXJ0X3NlYXJjaF9w
YXRoKHNlbGYsIGV4cGVjdGVkX3NlYXJjaF9wYXRocywgdmVyc2lvbiwgdXNlX3dlYmtpdDI9RmFs
c2UpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSd3aW4nLCBvc192
ZXJzaW9uPXZlcnNpb24sIG9wdGlvbnM9TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPXVz
ZV93ZWJraXQyKSkKLSAgICAgICAgYWJzb2x1dGVfc2VhcmNoX3BhdGhzID0gbWFwKHBvcnQuX3dl
YmtpdF9iYXNlbGluZV9wYXRoLCBleHBlY3RlZF9zZWFyY2hfcGF0aHMpCisgICAgICAgIGFic29s
dXRlX3NlYXJjaF9wYXRocyA9IGxpc3QobWFwKHBvcnQuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBl
eHBlY3RlZF9zZWFyY2hfcGF0aHMpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuYmFz
ZWxpbmVfc2VhcmNoX3BhdGgoKSwgYWJzb2x1dGVfc2VhcmNoX3BhdGhzKQogCiAgICAgZGVmIHRl
c3RfYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvd3BlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC93cGUucHkJKHJldmlzaW9uIDI1MTY1MikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC93cGUucHkJKHdvcmtpbmcgY29weSkKQEAgLTEwNywxMCArMTA3LDEwIEBAIGNsYXNzIFdQRVBv
cnQoUG9ydCk6CiAgICAgICAgIHJldHVybiBbc2VsZi5wb3J0X25hbWUsICd3azInXSArIHNlbGYu
Z2V0X29wdGlvbigiYWRkaXRpb25hbF9wbGF0Zm9ybV9kaXJlY3RvcnkiLCBbXSkKIAogICAgIGRl
ZiBkZWZhdWx0X2Jhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAg
cmV0dXJuIG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgc2VsZi5fc2VhcmNoX3BhdGhz
KCkpCisgICAgICAgIHJldHVybiBsaXN0KG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwg
c2VsZi5fc2VhcmNoX3BhdGhzKCkpKQogCiAgICAgZGVmIF9wb3J0X3NwZWNpZmljX2V4cGVjdGF0
aW9uc19maWxlcyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHJldHVybiBtYXAobGFtYmRhIHg6
IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCh4KSwgJ1Rl
c3RFeHBlY3RhdGlvbnMnKSwgcmV2ZXJzZWQoc2VsZi5fc2VhcmNoX3BhdGhzKCkpKQorICAgICAg
ICByZXR1cm4gbGlzdChtYXAobGFtYmRhIHg6IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93
ZWJraXRfYmFzZWxpbmVfcGF0aCh4KSwgJ1Rlc3RFeHBlY3RhdGlvbnMnKSwgcmV2ZXJzZWQoc2Vs
Zi5fc2VhcmNoX3BhdGhzKCkpKSkKIAogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19maWxlX3Bv
c2l0aW9uKHNlbGYpOgogICAgICAgICAjIFdQRSBwb3J0IGJhc2VsaW5lIHNlYXJjaCBwYXRoIGlz
IHdwZSAtPiB3azIgLT4gZ2VuZXJpYywgc28gcG9ydCB0ZXN0IGV4cGVjdGF0aW9ucyBmaWxlIGlz
IGF0IHRoaXJkIHRvIGxhc3QgcG9zaXRpb24uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382339</attachid>
            <date>2019-10-30 12:04:34 -0700</date>
            <delta_ts>2019-10-30 14:20:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203489-20191030120433.patch</filename>
            <type>text/plain</type>
            <size>51602</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MTc5MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDc4IEBACisyMDE5LTEwLTMwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgaW4gd2Via2l0cHkucG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDg5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3Rl
c3Qtd2Via2l0cHktcHl0aG9uMzogQWRkIHdlYmtpdHB5LnBvcnQuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW8ucHk6IFJlbW92ZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW9fdW5pdHRlc3QucHk6IFJlbW92ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5
OgorICAgICAgICAoTW9ja1Byb2Nlc3MuX19pbml0X18pOiBFbnN1cmUgdGhhdCBzdGRvdXQgYW5k
IHN0ZGVyciBhcmUgYnl0ZSBhcnJheXMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vdmVyc2lvbi5weToKKyAgICAgICAgKFZlcnNpb24uX19oYXNoX18pOiBBZGQgaGFzaCBmdW5j
dGlvbiBmb3IgVmVyc2lvbiBvYmplY3RzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9y
dC9iYXNlLnB5OgorICAgICAgICAoUG9ydC5kZWZhdWx0X2Jhc2VsaW5lX3NlYXJjaF9wYXRoKTog
Q29udmVydCBsaXN0IHRvIG1hcC4KKyAgICAgICAgKFBvcnQuZGlmZl90ZXh0KTogRGVjb2RlIGZv
ciB0aGUgbmF0aXZlIHN0cmluZyB0eXBlLgorICAgICAgICAoUG9ydC5za2lwcGVkX3BlcmZfdGVz
dHMpOiBDb252ZXJ0IGZpbHRlciB0byBsaXN0LgorICAgICAgICAoUG9ydC5fcnVuX3NjcmlwdCk6
IE5vIG5lZWQgdG8gZGVjb2RlIHN0cmluZ3MgaW4gUHl0aG9uIDMsIGV2ZW4gaWYgZGVjb2RlX291
dHB1dCBpcyBzZXQuCisgICAgICAgIChQb3J0LmRpZmZfdGV4dC50b19yYXdfYnl0ZXMpOiBEZWxl
dGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAoY21wKTogQWRkIGNtcCBmdW5jdGlvbiBmb3IgUHl0aG9uIDMgY29tcGFyaXNvbnMu
CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2RpZmZfdGV4dCk6IERvIG5vdCBlc2NhcGUgc3BhY2Vz
LgorICAgICAgICAoUG9ydFRlc3QudGVzdF9wYXJzZV9yZWZ0ZXN0X2xpc3QpOiBXcml0ZSB0byB0
ZXN0IGZpbGUgZXhwbGljaXRseS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYnVp
bGRlcnNfdW5pdHRlc3QucHk6IFVzZSBmdWxsIGltcG9ydCBwYXRoLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcG9ydC9jb25maWdfc3RhbmRhbG9uZS5weTogRGl0dG8KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvY29uZmlnX3VuaXR0ZXN0LnB5OiBEaXR0by4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5OgorICAgICAgICAoRGFyd2luUG9ydC5z
aG93X3Jlc3VsdHNfaHRtbF9maWxlKTogVXNlIG9zLmRldm51bGwgZGlyZWN0bHkuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weToKKyAgICAgICAgKERy
aXZlclRlc3QudGVzdF9yZWFkX2Jhc2U2NF9ibG9jayk6IEV4cGxpY2l0bHkgY29tcGFyZSBhZ2Fp
bnN0IGJ5dGUgYXJyYXkuCisgICAgICAgIChEcml2ZXJUZXN0LnRlc3Rfc2V0dXBfZW52aXJvbl9i
YXNlX3ZhcnMpOiBDb252ZXJ0IGl0ZXJhdG9ycyB0byBsaXN0cy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3BvcnQvZmFjdG9yeS5weToKKyAgICAgICAgKFBvcnRGYWN0b3J5LmdldC5pbik6
IEltcG9ydHMgbmVlZCB0byB1c2UgdGhlIGZ1bGwgaW1wb3J0IHBhdGguCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2d0ay5weToKKyAgICAgICAgKEd0a1BvcnQuZGVmYXVsdF9iYXNl
bGluZV9zZWFyY2hfcGF0aCk6IENvbnZlcnQgbWFwIHRvIGxpc3QuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvci5weToKKyAgICAgICAgKExlYWtEZXRlY3Rvci5f
cGFyc2VfbGVha3Nfb3V0cHV0KTogU2VhcmNoIGJ5dGUgYXJyYXkgd2l0aCBieXRlIGFycmF5Lgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmQucHk6
CisgICAgICAgIChWYWxncmluZEVycm9yLl9fc3RyX18pOiBTcGxpdCBieXRlIGFycmF5IHdpdGgg
Ynl0ZSBhcnJheS4KKyAgICAgICAgKFZhbGdyaW5kRXJyb3IuZXJyb3JfaGFzaCk6IENvcnJlY3Qg
cmVnZXguCisgICAgICAgIChMZWFrRGV0ZWN0b3JWYWxncmluZC5fcGFyc2VfbGVha3Nfb3V0cHV0
KTogQ29udmVydCBieXRlcyB0byBzdHJpbmcuCisgICAgICAgIChMZWFrRGV0ZWN0b3JWYWxncmlu
ZC5wYXJzZV9hbmRfcHJpbnRfbGVha3NfZGV0YWlsKTogU3RhbmRhcmRpemUgUHl0aG9uIDIgYW5k
IDMgc29ydGluZyBvcmRlci4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2Rl
dGVjdG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5OiBNYWtlIHVuaXQgdGVzdHMgUHl0aG9uIDMgY29t
cGF0aWJsZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNo
X2xvZy5weToKKyAgICAgICAgKEdEQkNyYXNoTG9nR2VuZXJhdG9yLl9nZXRfdHJhY2VfZnJvbV9z
eXN0ZW1kKTogTW9kZXJuaXplIGV4Y2VwdGlvbiBoYW5kbGluZy4KKyAgICAgICAgKEdEQkNyYXNo
TG9nR2VuZXJhdG9yLmdlbmVyYXRlX2NyYXNoX2xvZyk6IE5vIG5lZWQgdG8gZGVjb2RlIHN0cmlu
Z3MgaW4gUHl0aG9uIDMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weToK
KyAgICAgICAgKE1hY1BvcnQuc3RhcnRfaGVscGVyKTogaXNfcmVhZHkgd2lsbCBiZSBhIGJ5dGUg
YXJyYXkuCisgICAgICAgIChNYWNQb3J0LnN0b3BfaGVscGVyKTogc3RkaW4gd2lsbCBiZSBhIGJ5
dGUgYXJyYXkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tfZHJ0X3VuaXR0
ZXN0LnB5OgorICAgICAgICAoTW9ja0RSVFRlc3QuYXNzZXJ0VGVzdCk6IFVzZSB1bmljb2RlIGNv
bXBhdGlibGUgU3RyaW5nSU8gb2JqZWN0cy4KKyAgICAgICAgKE1vY2tEUlRUZXN0LnRlc3RfbWFp
bik6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNl
LnB5OgorICAgICAgICAoYmluZF9tb2NrX2FwcGxlX2FkZGl0aW9ucy5Nb2NrQXBwbGVBZGRpdGlv
bnMudmVyc2lvbl9uYW1lX21hcHBpbmcpOiBVc2UgaXRlbXMgaW5zdGVhZCBvZiBpdGVyaXRlbXMu
CisgICAgICAgIChQb3J0VGVzdENhc2UudGVzdF9leHBlY3RhdGlvbnNfb3JkZXJpbmcpOiBDb252
ZXJ0IGl0ZXJhdG9yIHRvIGxpc3QuCisgICAgICAgIChQb3J0VGVzdENhc2UudGVzdF90ZXN0X2V4
cGVjdGF0aW9ucyk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4u
cHk6CisgICAgICAgIChXaW5Qb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKFdpblBvcnQuZGVmYXVs
dF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6IENvbnZlcnQgbWFwIHRvIGxpc3QuCisgICAgICAgIChX
aW5Qb3J0LnRlc3Rfc2VhcmNoX3BhdGgpOiBEaXR0by4KKyAgICAgICAgKFdpblBvcnQuc2V0dXBf
Y3Jhc2hfbG9nX3NhdmluZyk6IFVzZSBpdGVtcyBpbnN0ZWFkIG9mIGl0ZXJpdGVtcy4KKyAgICAg
ICAgKFdpblBvcnQucmVzdG9yZV9jcmFzaF9sb2dfc2F2aW5nKTogRGl0dG8uCisgICAgICAgIChX
aW5Qb3J0LnByZXZlbnRfZXJyb3JfZGlhbG9ncyk6IERpdHRvLgorICAgICAgICAoV2luUG9ydC5h
bGxvd19lcnJvcl9kaWFsb2dzKTogRGl0dG8uCisgICAgICAgIChXaW5DYWlyb1BvcnQuZGVmYXVs
dF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6IENvbnZlcnQgbWFwIHRvIGxpc3QuCisgICAgICAgIChX
aW5DYWlyb1BvcnQuX3BvcnRfc3BlY2lmaWNfZXhwZWN0YXRpb25zX2ZpbGVzKTogRGl0dG8uCisg
ICAgICAgIChGVFdQb3J0LmRlZmF1bHRfYmFzZWxpbmVfc2VhcmNoX3BhdGgpOiBEaXR0by4KKyAg
ICAgICAgKEZUV1BvcnQuX3BvcnRfc3BlY2lmaWNfZXhwZWN0YXRpb25zX2ZpbGVzKTogRGl0dG8u
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbl91bml0dGVzdC5weTogRGl0dG8u
CisgICAgICAgIChXaW5Qb3J0VGVzdC5fYXNzZXJ0X3NlYXJjaF9wYXRoKTogRGl0dG8uCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weToKKyAgICAgICAgKFdQRVBvcnQuZGVm
YXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6IENvbnZlcnQgbWFwIHRvIGxpc3QuCisgICAgICAg
IChXUEVQb3J0Ll9wb3J0X3NwZWNpZmljX2V4cGVjdGF0aW9uc19maWxlcyk6IERpdHRvLgorCiAy
MDE5LTEwLTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJk
ZW5pbmc6IGZpeGluZyBicm9rZW4gYnVpbGQuCkluZGV4OiBUb29scy9TY3JpcHRzL3Rlc3Qtd2Vi
a2l0cHktcHl0aG9uMwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkt
cHl0aG9uMwkocmV2aXNpb24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5
LXB5dGhvbjMJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgUFlUSE9OM19DT01QQVRJ
QkxFX0RJUkVDVE9SSUVTID0gWwogICAnd2Via2l0cHkuY29tbW9uLnRocmVhZCcsCiAgICd3ZWJr
aXRweS5jb21tb24ubmV0JywKICAgJ3dlYmtpdHB5LmNvbW1vbi53YXRjaGxpc3QnLAorICAnd2Vi
a2l0cHkucG9ydCcsCiAgICd3ZWJraXRweS5yZXN1bHRzJywKICAgJ3dlYmtpdHB5Lnhjb2RlJywK
IF0KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ld3N0cmluZ2lvLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ld3N0cmluZ2lvLnB5
CShyZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXdz
dHJpbmdpby5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDM5ICswLDAgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0iIiInd2l0aCctY29tcGxpYW50IFN0cmluZ0lPIGltcGxlbWVudGF0aW9uLiIiIgotCi1p
bXBvcnQgU3RyaW5nSU8gYXMgT2xkU3RyaW5nSU8KLQotCi1jbGFzcyBTdHJpbmdJTyhPbGRTdHJp
bmdJTy5TdHJpbmdJTyk6Ci0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJu
IHNlbGYKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToK
LSAgICAgICAgcGFzcwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV3c3RyaW5naW8ucHkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxl
CiMjIC0xICswLDAgIyMKLUxGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ld3N0cmluZ2lvX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ld3N0cmluZ2lvX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXdzdHJpbmdpb191bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQwICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3RzIGZvciBuZXdzdHJpbmdpbyBtb2R1
bGUuIiIiCi0KLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgbmV3c3RyaW5naW8KLQotCi1jbGFz
cyBOZXdTdHJpbmdJT1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3dpdGgo
c2VsZik6Ci0gICAgICAgIHdpdGggbmV3c3RyaW5naW8uU3RyaW5nSU8oImZvbyIpIGFzIGY6Ci0g
ICAgICAgICAgICBjb250ZW50cyA9IGYucmVhZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y29udGVudHMsICJmb28iKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV3c3RyaW5naW9fdW5pdHRlc3QucHkKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLUxGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNpb24ucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbi5weQkocmV2
aXNpb24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lvbi5w
eQkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw5IEBAIGNsYXNzIFZlcnNpb24ob2JqZWN0
KToKICAgICAgICAgICAgIHJlc3VsdCArPSAnLnt9Jy5mb3JtYXQoc2VsZltpICsgMV0pCiAgICAg
ICAgIHJldHVybiByZXN1bHQKIAorICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0
dXJuIGhhc2goc3RyKHNlbGYpKQorCiAgICAgZGVmIF9fY21wX18oc2VsZiwgb3RoZXIpOgogICAg
ICAgICBpZiBvdGhlciBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIDEKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21v
Y2sucHkJKHJldmlzaW9uIDI1MTc5MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBA
QAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi51bmlj
b2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5dGVzSU8sIHVuaWNvZGUKK2Zyb20gd2Via2l0cHku
Y29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgQnl0ZXNJTywgZW5jb2RlX2lmX25l
Y2Vzc2FyeSwgdW5pY29kZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgU2NyaXB0RXJyb3IKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpA
QCAtMzgsOCArMzgsOCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiBjbGFz
cyBNb2NrUHJvY2VzcyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGRvdXQ9J01P
Q0sgU1RET1VUXG4nLCBzdGRlcnI9JycpOgogICAgICAgICBzZWxmLnBpZCA9IDQyCi0gICAgICAg
IHNlbGYuc3Rkb3V0ID0gQnl0ZXNJTyhzdGRvdXQpCi0gICAgICAgIHNlbGYuc3RkZXJyID0gQnl0
ZXNJTyhzdGRlcnIpCisgICAgICAgIHNlbGYuc3Rkb3V0ID0gQnl0ZXNJTyhlbmNvZGVfaWZfbmVj
ZXNzYXJ5KHN0ZG91dCkpCisgICAgICAgIHNlbGYuc3RkZXJyID0gQnl0ZXNJTyhlbmNvZGVfaWZf
bmVjZXNzYXJ5KHN0ZGVycikpCiAgICAgICAgIHNlbGYuc3RkaW4gPSBCeXRlc0lPKCkKICAgICAg
ICAgc2VsZi5yZXR1cm5jb2RlID0gMAogICAgICAgICBzZWxmLl9pc19ydW5uaW5nID0gRmFsc2UK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CShyZXZpc2lvbiAyNTE3OTApCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkod29ya2luZyBjb3B5KQpAQCAt
NTEsNiArNTEsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBQVUJMSUNfVEFCTEUs
IElOVEVSTkFMX1RBQkxFLCBWZXJzaW9uTmFtZU1hcAogZnJvbSB3ZWJraXRweS5jb21tb24ud2F2
ZWRpZmYgaW1wb3J0IFdhdmVEaWZmCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVy
IGltcG9ydCBXZWJLaXRGaW5kZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0
aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2ZvciwgZW5jb2RlX2lmX25lY2Vzc2FyeSwgZGVjb2RlX2Zv
cgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBp
bXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgY29uZmln
IGFzIHBvcnRfY29uZmlnCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGRyaXZlcgpAQCAtMjIy
LDcgKzIyMyw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgc2VhcmNoX3BhdGhzLmFw
cGVuZChzZWxmLm5hbWUoKSkKICAgICAgICAgaWYgc2VsZi5uYW1lKCkgIT0gc2VsZi5wb3J0X25h
bWU6CiAgICAgICAgICAgICBzZWFyY2hfcGF0aHMuYXBwZW5kKHNlbGYucG9ydF9uYW1lKQotICAg
ICAgICByZXR1cm4gbWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBzZWFyY2hfcGF0aHMp
CisgICAgICAgIHJldHVybiBsaXN0KG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgc2Vh
cmNoX3BhdGhzKSkKIAogICAgIEBtZW1vaXplZAogICAgIGRlZiBfY29tcGFyZV9iYXNlbGluZShz
ZWxmKToKQEAgLTM0MCwxNiArMzQxLDggQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgIGRlZiBk
aWZmX3RleHQoc2VsZiwgZXhwZWN0ZWRfdGV4dCwgYWN0dWFsX3RleHQsIGV4cGVjdGVkX2ZpbGVu
YW1lLCBhY3R1YWxfZmlsZW5hbWUpOgogICAgICAgICAiIiJSZXR1cm5zIGEgc3RyaW5nIGNvbnRh
aW5pbmcgdGhlIGRpZmYgb2YgdGhlIHR3byB0ZXh0IHN0cmluZ3MKICAgICAgICAgaW4gJ3VuaWZp
ZWQgZGlmZicgZm9ybWF0LiIiIgotCi0gICAgICAgICMgVGhlIGZpbGVuYW1lcyBzaG93IHVwIGlu
IHRoZSBkaWZmIG91dHB1dCwgbWFrZSBzdXJlIHRoZXkncmUKLSAgICAgICAgIyByYXcgYnl0ZXMg
YW5kIG5vdCB1bmljb2RlLCBzbyB0aGF0IHRoZXkgZG9uJ3QgdHJpZ2dlciBqb2luKCkKLSAgICAg
ICAgIyB0cnlpbmcgdG8gZGVjb2RlIHRoZSBpbnB1dC4KLSAgICAgICAgZGVmIHRvX3Jhd19ieXRl
cyhzdHJpbmdfdmFsdWUpOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmdfdmFsdWUs
IHVuaWNvZGUpOgotICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmdfdmFsdWUuZW5jb2RlKCd1
dGYtOCcpCi0gICAgICAgICAgICByZXR1cm4gc3RyaW5nX3ZhbHVlCi0gICAgICAgIGV4cGVjdGVk
X2ZpbGVuYW1lID0gdG9fcmF3X2J5dGVzKGV4cGVjdGVkX2ZpbGVuYW1lKQotICAgICAgICBhY3R1
YWxfZmlsZW5hbWUgPSB0b19yYXdfYnl0ZXMoYWN0dWFsX2ZpbGVuYW1lKQorICAgICAgICBleHBl
Y3RlZF9maWxlbmFtZSA9IGRlY29kZV9mb3IoZW5jb2RlX2lmX25lY2Vzc2FyeShleHBlY3RlZF9m
aWxlbmFtZSksIHN0cikKKyAgICAgICAgYWN0dWFsX2ZpbGVuYW1lID0gZGVjb2RlX2ZvcihlbmNv
ZGVfaWZfbmVjZXNzYXJ5KGFjdHVhbF9maWxlbmFtZSksIHN0cikKICAgICAgICAgZGlmZiA9IGRp
ZmZsaWIudW5pZmllZF9kaWZmKGV4cGVjdGVkX3RleHQuc3BsaXRsaW5lcyhUcnVlKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF90ZXh0LnNwbGl0bGluZXMoVHJ1
ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9maWxlbmFt
ZSwKQEAgLTM1OCw3ICszNTEsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGZvciBs
aW5lIGluIGRpZmY6CiAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQogICAgICAgICAgICAgaWYg
bm90IGxpbmUuZW5kc3dpdGgoJ1xuJyk6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdcblwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZVxuJworICAgICAgICAgICAgICAgIHJlc3VsdCArPSAn
XG4gTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZVxuJwogICAgICAgICByZXR1cm4gcmVzdWx0CiAK
ICAgICBkZWYgY2hlY2tfZm9yX2xlYWtzKHNlbGYsIHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19pZCk6
CkBAIC03NjQsNyArNzU3LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgaWYg
bm90IG1hdGNoOgogICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoIlN5bnRheCBlcnJvciBhdCBs
aW5lICVkIGluICVzOiAlcyIgJSAobGluZV9udW1iZXIgKyAxLCBmaWxlbmFtZSwgbGluZSkpCiAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBsYXRmb3JtX25hbWVzID0gZmlsdGVy
KGxhbWJkYSB0b2tlbjogdG9rZW4sIG1hdGNoLmdyb3VwKCdwbGF0Zm9ybXMnKS5sb3dlcigpLnNw
bGl0KCcgJykpIGlmIG1hdGNoLmdyb3VwKCdwbGF0Zm9ybXMnKSBlbHNlIFtdCisgICAgICAgICAg
ICAgICAgcGxhdGZvcm1fbmFtZXMgPSBsaXN0KGZpbHRlcihsYW1iZGEgdG9rZW46IHRva2VuLCBt
YXRjaC5ncm91cCgncGxhdGZvcm1zJykubG93ZXIoKS5zcGxpdCgnICcpKSkgaWYgbWF0Y2guZ3Jv
dXAoJ3BsYXRmb3JtcycpIGVsc2UgW10KICAgICAgICAgICAgICAgICB0ZXN0X25hbWUgPSBtYXRj
aC5ncm91cCgndGVzdCcpCiAgICAgICAgICAgICAgICAgaWYgdGVzdF9uYW1lIGFuZCAobm90IHBs
YXRmb3JtX25hbWVzIG9yIHNlbGYucG9ydF9uYW1lIGluIHBsYXRmb3JtX25hbWVzIG9yIHNlbGYu
X25hbWUgaW4gcGxhdGZvcm1fbmFtZXMpOgogICAgICAgICAgICAgICAgICAgICB0ZXN0c190b19z
a2lwLmFwcGVuZCh0ZXN0X25hbWUpCkBAIC0xNDkyLDcgKzE0ODUsNyBAQCBjbGFzcyBQb3J0KG9i
amVjdCk6CiAgICAgICAgIGlmIGFyZ3M6CiAgICAgICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQu
ZXh0ZW5kKGFyZ3MpCiAgICAgICAgIG91dHB1dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFu
ZChydW5fc2NyaXB0X2NvbW1hbmQsIGN3ZD1zZWxmLndlYmtpdF9iYXNlKCksIGRlY29kZV9vdXRw
dXQ9ZGVjb2RlX291dHB1dCwgZW52PWVudikKLSAgICAgICAgX2xvZy5kZWJ1ZygnT3V0cHV0IG9m
ICVzOlxuJXMnICUgKHJ1bl9zY3JpcHRfY29tbWFuZCwgb3V0cHV0LmVuY29kZSgndXRmLTgnKSBp
ZiBkZWNvZGVfb3V0cHV0IGVsc2Ugb3V0cHV0KSkKKyAgICAgICAgX2xvZy5kZWJ1ZygnT3V0cHV0
IG9mICVzOlxuJXMnICUgKHJ1bl9zY3JpcHRfY29tbWFuZCwgZW5jb2RlX2ZvcihvdXRwdXQsIHN0
cikgaWYgZGVjb2RlX291dHB1dCBlbHNlIG91dHB1dCkpCiAgICAgICAgIHJldHVybiBvdXRwdXQK
IAogICAgIGRlZiBfYnVpbGRfZHJpdmVyKHNlbGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MTc5MCkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC00MSw2ICs0MSw5IEBAIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgUG9ydAogZnJvbSB3ZWJr
aXRweS5wb3J0LnRlc3QgaW1wb3J0IGFkZF91bml0X3Rlc3RzX3RvX21vY2tfZmlsZXN5c3RlbSwg
VGVzdFBvcnQKIAogCitkZWYgY21wKGEsIGIpOgorICAgIHJldHVybiAoYSA+IGIpIC0gKGEgPCBi
KQorCiBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIG1ha2VfcG9y
dChzZWxmLCBleGVjdXRpdmU9Tm9uZSwgd2l0aF90ZXN0cz1GYWxzZSwgcG9ydF9uYW1lPU5vbmUs
ICoqa3dhcmdzKToKICAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KCkKQEAgLTEwNSw3ICsx
MDgsNyBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgdDEg
PSAiQVxuXG5CIgogICAgICAgICB0MiA9ICJBXG5cbkJcblxuXG4iCi0gICAgICAgIHQzID0gIi0t
LSBleHAudHh0XG4rKysgYWN0LnR4dFxuQEAgLTEsMyArMSw1IEBAXG4gQVxuIFxuLUJcblwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZVxuK0JcbitcbitcbiIKKyAgICAgICAgdDMgPSAiLS0tIGV4
cC50eHRcbisrKyBhY3QudHh0XG5AQCAtMSwzICsxLDUgQEBcbiBBXG4gXG4tQlxuIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGVcbitCXG4rXG4rXG4iCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dDMsIHBvcnQuZGlmZl90ZXh0KHQxLCB0MiwgJ2V4cC50eHQnLCAnYWN0LnR4dCcpKQogCiAgICAg
ICAgICMgQW5kIG1ha2Ugc3VyZSB3ZSBhY3R1YWxseSBnZXQgZGlmZiBvdXRwdXQuCkBAIC0yODgs
MTMgKzI5MSwxOCBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBk
ZWYgdGVzdF9wYXJzZV9yZWZ0ZXN0X2xpc3Qoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1h
a2VfcG9ydCh3aXRoX3Rlc3RzPVRydWUpCi0gICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLmZp
bGVzWydiYXIvcmVmdGVzdC5saXN0J10gPSAiXG4iLmpvaW4oWyI9PSB0ZXN0Lmh0bWwgdGVzdC1y
ZWYuaHRtbCIsCi0gICAgICAgICIiLAotICAgICAgICAiIyBzb21lIGNvbW1lbnQiLAotICAgICAg
ICAiIT0gdGVzdC0yLmh0bWwgdGVzdC1ub3RyZWYuaHRtbCAjIG1vcmUgY29tbWVudHMiLAotICAg
ICAgICAiPT0gdGVzdC0zLmh0bWwgdGVzdC1yZWYuaHRtbCIsCi0gICAgICAgICI9PSB0ZXN0LTMu
aHRtbCB0ZXN0LXJlZjIuaHRtbCIsCi0gICAgICAgICIhPSB0ZXN0LTMuaHRtbCB0ZXN0LW5vdHJl
Zi5odG1sIl0pCisgICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgK
KyAgICAgICAgICAgICdiYXIvcmVmdGVzdC5saXN0JywKKyAgICAgICAgICAgICJcbiIuam9pbihb
CisgICAgICAgICAgICAgICAgIj09IHRlc3QuaHRtbCB0ZXN0LXJlZi5odG1sIiwKKyAgICAgICAg
ICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAiIyBzb21lIGNvbW1lbnQiLAorICAgICAgICAg
ICAgICAgICIhPSB0ZXN0LTIuaHRtbCB0ZXN0LW5vdHJlZi5odG1sICMgbW9yZSBjb21tZW50cyIs
CisgICAgICAgICAgICAgICAgIj09IHRlc3QtMy5odG1sIHRlc3QtcmVmLmh0bWwiLAorICAgICAg
ICAgICAgICAgICI9PSB0ZXN0LTMuaHRtbCB0ZXN0LXJlZjIuaHRtbCIsCisgICAgICAgICAgICAg
ICAgIiE9IHRlc3QtMy5odG1sIHRlc3Qtbm90cmVmLmh0bWwiLAorICAgICAgICAgICAgXSksCisg
ICAgICAgICkKIAogICAgICAgICByZWZ0ZXN0X2xpc3QgPSBQb3J0Ll9wYXJzZV9yZWZ0ZXN0X2xp
c3QocG9ydC5ob3N0LmZpbGVzeXN0ZW0sICdiYXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlZnRlc3RfbGlzdCwgeydiYXIvdGVzdC5odG1sJzogWygnPT0nLCAnYmFyL3Rlc3QtcmVmLmh0
bWwnKV0sCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYnVpbGRlcnNfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2J1aWxkZXJz
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvYnVpbGRlcnNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDgg
QEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBidWlsZGVycwogaW1w
b3J0IHVuaXR0ZXN0CitpbXBvcnQgd2Via2l0cHkucG9ydC5idWlsZGVycyBhcyBidWlsZGVycwog
CiAKIGNsYXNzIEJ1aWxkZXJzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvY29uZmlnX3N0YW5kYWxvbmUucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2NvbmZpZ19zdGFuZGFsb25lLnB5CShyZXZpc2lv
biAyNTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvY29uZmlnX3N0YW5kYWxv
bmUucHkJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgaW1wb3J0IHN5cwogIyBFbnN1
cmUgdGhhdCB3ZWJraXRweSBpcyBpbiBQWVRIT05QQVRILgogdGhpc19kaXIgPSBvcy5wYXRoLmFi
c3BhdGgoc3lzLnBhdGhbMF0pCiB1cCA9IG9zLnBhdGguZGlybmFtZQotc2NyaXB0X2RpciA9IHVw
KHVwKHVwKHRoaXNfZGlyKSkpCitzY3JpcHRfZGlyID0gdXAodXAodGhpc19kaXIpKQogaWYgc2Ny
aXB0X2RpciBub3QgaW4gc3lzLnBhdGg6CiAgICAgc3lzLnBhdGguYXBwZW5kKHNjcmlwdF9kaXIp
CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9jb25maWdfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2NvbmZpZ191bml0dGVz
dC5weQkocmV2aXNpb24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Nv
bmZpZ191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5j
b21tb24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0RmluZGVyCiAKLWltcG9ydCBjb25maWcK
K2ltcG9ydCB3ZWJraXRweS5wb3J0LmNvbmZpZyBhcyBjb25maWcKIAogCiBjbGFzcyBDb25maWdU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9kYXJ3aW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rh
cndpbi5weQkocmV2aXNpb24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2Rhcndpbi5weQkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBjbGFzcyBEYXJ3aW5Q
b3J0KEFwcGxlUG9ydCk6CiAgICAgICAgICMgdG8gZXhpdCBhbmQgd2Ugd2FudCB0aGUgb3V0cHV0
IHRvIHNob3cgdXAgb24gc3Rkb3V0IGluIGNhc2UgdGhlcmUgYXJlIGVycm9ycwogICAgICAgICAj
IGxhdW5jaGluZyB0aGUgYnJvd3Nlci4KICAgICAgICAgc2VsZi5fZXhlY3V0aXZlLnBvcGVuKFtz
ZWxmLnBhdGhfdG9fc2NyaXB0KCdydW4tc2FmYXJpJyldICsgc2VsZi5fYXJndW1lbnRzX2Zvcl9j
b25maWd1cmF0aW9uKCkgKyBbJy0tbm8tc2F2ZWQtc3RhdGUnLCAnLU5TT3BlbicsIHJlc3VsdHNf
ZmlsZW5hbWVdLAotICAgICAgICAgICAgY3dkPXNlbGYud2Via2l0X2Jhc2UoKSwgc3Rkb3V0PWZp
bGUob3MuZGV2bnVsbCksIHN0ZGVycj1maWxlKG9zLmRldm51bGwpKQorICAgICAgICAgICAgY3dk
PXNlbGYud2Via2l0X2Jhc2UoKSwgc3Rkb3V0PW9zLmRldm51bGwsIHN0ZGVycj1vcy5kZXZudWxs
KQogCiAgICAgQG1lbW9pemVkCiAgICAgZGVmIHBhdGhfdG9fY3Jhc2hfbG9ncyhzZWxmKToKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXJfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weQko
cmV2aXNpb24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjAyLDcgKzIwMiw3IEBAIGNsYXNzIERyaXZl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRl
bnRfYmxvY2suY29udGVudF9oYXNoLCAnYWN0dWFsJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb250ZW50X2Jsb2NrLmVuY29kaW5nLCAnYmFzZTY0JykKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjb250ZW50X2Jsb2NrLmNvbnRlbnQsICdNVEl6TkRVMk56Z0snKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbnRlbnRfYmxvY2suZGVjb2RlZF9jb250ZW50LCAnMTIzNDU2Nzhcbicp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5kZWNvZGVkX2NvbnRlbnQs
IGInMTIzNDU2NzhcbicpCiAKICAgICBkZWYgdGVzdF9ub190aW1lb3V0KHNlbGYpOgogICAgICAg
ICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQpAQCAtMzY4LDcgKzM2OCw3IEBAIGNsYXNzIERyaXZl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAnV0FZ
TEFORF9ESVNQTEFZJzogJ3dheWxhbmQtMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdX
QVlMQU5EX1NPQ0tFVCc6ICd3YXlsYW5kLXNvY2tldC0wJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0dES19CQUNLRU5EJzogJ3gxMSd9Ci0gICAgICAgIGVudmlyb25tZW50X3VzZXIgPSBk
aWN0KGVudmlyb25fa2VlcF95ZXMuaXRlbXMoKSArIGVudmlyb25fa2VlcF9uby5pdGVtcygpKQor
ICAgICAgICBlbnZpcm9ubWVudF91c2VyID0gZGljdChsaXN0KGVudmlyb25fa2VlcF95ZXMuaXRl
bXMoKSkgKyBsaXN0KGVudmlyb25fa2VlcF9uby5pdGVtcygpKSkKICAgICAgICAgd2l0aCBwYXRj
aCgnb3MuZW52aXJvbicsIGVudmlyb25tZW50X3VzZXIpOgogICAgICAgICAgICAgcG9ydCA9IHNl
bGYubWFrZV9wb3J0KCkKICAgICAgICAgICAgIGRyaXZlciA9IERyaXZlcihwb3J0LCBOb25lLCBw
aXhlbF90ZXN0cz1GYWxzZSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0
b3J5LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5
LnB5CShyZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFj
dG9yeS5weQkod29ya2luZyBjb3B5KQpAQCAtMTM2LDkgKzEzNiwxMCBAQCBjbGFzcyBQb3J0RmFj
dG9yeShvYmplY3QpOgogICAgICAgICBjbGFzc2VzID0gW10KICAgICAgICAgZm9yIHBvcnRfY2xh
c3MgaW4gc2VsZi5QT1JUX0NMQVNTRVM6CiAgICAgICAgICAgICBtb2R1bGVfbmFtZSwgY2xhc3Nf
bmFtZSA9IHBvcnRfY2xhc3MucnNwbGl0KCcuJywgMSkKLSAgICAgICAgICAgIG1vZHVsZSA9IF9f
aW1wb3J0X18obW9kdWxlX25hbWUsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFtdLCAtMSkKLSAgICAg
ICAgICAgIGNscyA9IG1vZHVsZS5fX2RpY3RfX1tjbGFzc19uYW1lXQotICAgICAgICAgICAgY2xh
c3Nlcy5hcHBlbmQoY2xzKQorICAgICAgICAgICAgbW9kdWxlID0gX19pbXBvcnRfXygnd2Via2l0
cHkucG9ydC57fScuZm9ybWF0KG1vZHVsZV9uYW1lKSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgW10s
IDApCisgICAgICAgICAgICBjbHMgPSBtb2R1bGUuX19kaWN0X18uZ2V0KCdwb3J0JykuX19kaWN0
X18uZ2V0KG1vZHVsZV9uYW1lKS5fX2RpY3RfXy5nZXQoY2xhc3NfbmFtZSkKKyAgICAgICAgICAg
IGlmIGNsczoKKyAgICAgICAgICAgICAgICBjbGFzc2VzLmFwcGVuZChjbHMpCiAgICAgICAgIGlm
IGNvbmZpZy5hcHBsZV9hZGRpdGlvbnMoKSBhbmQgaGFzYXR0cihjb25maWcuYXBwbGVfYWRkaXRp
b25zKCksICdwb3J0cycpOgogICAgICAgICAgICAgY2xhc3NlcyArPSBjb25maWcuYXBwbGVfYWRk
aXRpb25zKCkucG9ydHMoKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3Rr
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkJKHJl
dmlzaW9uIDI1MTc5MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkJKHdv
cmtpbmcgY29weSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBjbGFzcyBHdGtQb3J0KFBvcnQpOgogICAg
ICAgICByZXR1cm4gc2VhcmNoX3BhdGhzCiAKICAgICBkZWYgZGVmYXVsdF9iYXNlbGluZV9zZWFy
Y2hfcGF0aChzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHJldHVybiBtYXAoc2VsZi5fd2Via2l0
X2Jhc2VsaW5lX3BhdGgsIHNlbGYuX3NlYXJjaF9wYXRocygpKQorICAgICAgICByZXR1cm4gbGlz
dChtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlbGYuX3NlYXJjaF9wYXRocygpKSkK
IAogICAgIGRlZiBfcG9ydF9zcGVjaWZpY19leHBlY3RhdGlvbnNfZmlsZXMoc2VsZiwgKiprd2Fy
Z3MpOgogICAgICAgICByZXR1cm4gW3NlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJraXRf
YmFzZWxpbmVfcGF0aChwKSwgJ1Rlc3RFeHBlY3RhdGlvbnMnKSBmb3IgcCBpbiByZXZlcnNlZChz
ZWxmLl9zZWFyY2hfcGF0aHMoKSldCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
bGVha2RldGVjdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9sZWFrZGV0ZWN0b3IucHkJKHJldmlzaW9uIDI1MTc5MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5jb21tb24udW5p
Y29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5CiAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIApAQCAtNzgsOCArNzksOSBAQCBjbGFzcyBMZWFr
RGV0ZWN0b3Iob2JqZWN0KToKICAgICBkZWYgX3BhcnNlX2xlYWtzX291dHB1dChzZWxmLCBsZWFr
c19vdXRwdXQpOgogICAgICAgICBpZiBub3QgbGVha3Nfb3V0cHV0OgogICAgICAgICAgICAgcmV0
dXJuIDAsIDAsIDAKLSAgICAgICAgXywgY291bnQsIGJ5dGVzID0gcmUuc2VhcmNoKHInUHJvY2Vz
cyAoP1A8cGlkPlxkKyk6ICg/UDxjb3VudD5cZCspIGxlYWtzPyBmb3IgKD9QPGJ5dGVzPlxkKykg
dG90YWwnLCBsZWFrc19vdXRwdXQpLmdyb3VwcygpCi0gICAgICAgIGV4Y2x1ZGVkX21hdGNoID0g
cmUuc2VhcmNoKHInKD9QPGV4Y2x1ZGVkPlxkKykgbGVha3M/IGV4Y2x1ZGVkJywgbGVha3Nfb3V0
cHV0KQorICAgICAgICBsZWFrc19vdXRwdXQgPSBlbmNvZGVfaWZfbmVjZXNzYXJ5KGxlYWtzX291
dHB1dCkKKyAgICAgICAgXywgY291bnQsIGJ5dGVzID0gcmUuc2VhcmNoKGInUHJvY2VzcyAoP1A8
cGlkPlxcZCspOiAoP1A8Y291bnQ+XFxkKykgbGVha3M/IGZvciAoP1A8Ynl0ZXM+XFxkKykgdG90
YWwnLCBsZWFrc19vdXRwdXQpLmdyb3VwcygpCisgICAgICAgIGV4Y2x1ZGVkX21hdGNoID0gcmUu
c2VhcmNoKGInKD9QPGV4Y2x1ZGVkPlxcZCspIGxlYWtzPyBleGNsdWRlZCcsIGxlYWtzX291dHB1
dCkKICAgICAgICAgZXhjbHVkZWQgPSBleGNsdWRlZF9tYXRjaC5ncm91cCgnZXhjbHVkZWQnKSBp
ZiBleGNsdWRlZF9tYXRjaCBlbHNlIDAKICAgICAgICAgcmV0dXJuIGludChjb3VudCksIGludChl
eGNsdWRlZCksIGludChieXRlcykKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2xlYWtkZXRlY3Rvcl92YWxncmluZC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kLnB5CShyZXZpc2lvbiAyNTE3OTApCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBAIGltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHht
bC5kb20ubWluaWRvbSBpbXBvcnQgcGFyc2VTdHJpbmcKIGZyb20geG1sLnBhcnNlcnMuZXhwYXQg
aW1wb3J0IEV4cGF0RXJyb3IKIAorZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRp
YmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNvZGVfZm9yCisKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCkBAIC0xMjcsNyArMTI5LDcgQEAgY2xhc3Mg
VmFsZ3JpbmRFcnJvcjoKICAgICAgICAgICAgIGZvciBmcmFtZSBpbiBiYWNrdHJhY2VbMV06CiAg
ICAgICAgICAgICAgICAgYnVmICs9IChmcmFtZVtGVU5DVElPTl9OQU1FXSBvciBmcmFtZVtJTlNU
UlVDVElPTl9QT0lOVEVSXSkgKyAiXG4iCiAKLSAgICAgICAgICAgIGlucHV0ID0gYnVmLmVuY29k
ZSgnbGF0aW4tMScpLnNwbGl0KCJcbiIpCisgICAgICAgICAgICBpbnB1dCA9IGJ1Zi5lbmNvZGUo
J2xhdGluLTEnKS5zcGxpdChiIlxuIikKICAgICAgICAgICAgIGRlbWFuZ2xlZF9uYW1lcyA9IFtz
ZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWydjKytmaWx0JywgJy1uJywgbmFtZV0pIGZvciBu
YW1lIGluIGlucHV0IGlmIG5hbWVdCiAKICAgICAgICAgICAgIGkgPSAwCkBAIC0xNzIsOSArMTc0
LDkgQEAgY2xhc3MgVmFsZ3JpbmRFcnJvcjoKIAogICAgICAgICBmb3IgZnJhbWUgaW4gcmFuZ2Uo
bGVuKHN1cHBsaW5lcykpOgogICAgICAgICAgICAgIyBSZXBsYWNlIHRoZSBhbHdheXMtY2hhbmdp
bmcgYW5vbnltb3VzIG5hbWVzcGFjZSBwcmVmaXggd2l0aCAiKiIuCi0gICAgICAgICAgICBtID0g
cmUubWF0Y2goIiggK2Z1bjopX1pOLipfR0xPQkFMX19OXy4qXC5jY18iICsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAiWzAtOWEtZkEtRl17OH1fWzAtOWEtZkEtRl17OH0oLiopIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBzdXBwbGluZXNbZnJhbWVdKQorICAgICAgICAgICAgbSA9IHJl
Lm1hdGNoKHIiKCArZnVuOilfWk4uKl9HTE9CQUxfX05fLipcLmNjXyIgKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAiWzAtOWEtZkEtRl17OH1fWzAtOWEtZkEtRl17OH0oLiopIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3VwcGxpbmVzW2ZyYW1lXSkKICAgICAgICAgICAgIGlmIG06
CiAgICAgICAgICAgICAgICAgc3VwcGxpbmVzW2ZyYW1lXSA9ICIqIi5qb2luKG0uZ3JvdXBzKCkp
CiAKQEAgLTE5Niw3ICsxOTgsNyBAQCBjbGFzcyBWYWxncmluZEVycm9yOgogICAgICAgICAjIFRo
aXMgaXMgYSBkZXZpY2UtaW5kZXBlbmRlbnQgaGFzaCBpZGVudGlmeWluZyB0aGUgc3VwcHJlc3Np
b24uCiAgICAgICAgICMgQnkgcHJpbnRpbmcgb3V0IHRoaXMgaGFzaCB3ZSBjYW4gZmluZCBkdXBs
aWNhdGUgcmVwb3J0cyBiZXR3ZWVuIHRlc3RzIGFuZAogICAgICAgICAjIGRpZmZlcmVudCBzaGFy
ZHMgcnVubmluZyBvbiBtdWx0aXBsZSBidWlsZGJvdHMKLSAgICAgICAgcmV0dXJuIGludChoYXNo
bGliLm1kNShzZWxmLnVuaXF1ZV9zdHJpbmcoKSkuaGV4ZGlnZXN0KClbOjE2XSwgMTYpCisgICAg
ICAgIHJldHVybiBpbnQoaGFzaGxpYi5tZDUoZW5jb2RlX2lmX25lY2Vzc2FyeShzZWxmLnVuaXF1
ZV9zdHJpbmcoKSkpLmhleGRpZ2VzdCgpWzoxNl0sIDE2KQogCiAgICAgZGVmIF9faGFzaF9fKHNl
bGYpOgogICAgICAgICByZXR1cm4gaGFzaChzZWxmLnVuaXF1ZV9zdHJpbmcoKSkKQEAgLTIyMiw3
ICsyMjQsNyBAQCBjbGFzcyBMZWFrRGV0ZWN0b3JWYWxncmluZChvYmplY3QpOgogICAgICAgICAg
ICAgcGFyc2VkX3N0cmluZyA9IHBhcnNlU3RyaW5nKGxlYWtzX291dHB1dCkKICAgICAgICAgZXhj
ZXB0IEV4cGF0RXJyb3IgYXMgZToKICAgICAgICAgICAgIHBhcnNlX2ZhaWxlZCA9IFRydWUKLSAg
ICAgICAgICAgIF9sb2cuZXJyb3IoImNvdWxkIG5vdCBwYXJzZSAlczogJXMiICUgKGxlYWtzX291
dHB1dCwgZSkpCisgICAgICAgICAgICBfbG9nLmVycm9yKCJjb3VsZCBub3QgcGFyc2UgJXM6ICVz
IiAlIChkZWNvZGVfZm9yKGxlYWtzX291dHB1dCwgc3RyKSwgZSkpCiAgICAgICAgICAgICByZXR1
cm4KIAogICAgICAgICBjdXJfcmVwb3J0X2Vycm9ycyA9IHNldCgpCkBAIC0yODMsMTEgKzI4NSwx
MiBAQCBjbGFzcyBMZWFrRGV0ZWN0b3JWYWxncmluZChvYmplY3QpOgogICAgICAgICBfbG9nLmlu
Zm8oIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IikKICAgICAgICAgX2xvZy5pbmZvKCJTdXBwcmVzc2lvbnMgdXNlZDoiKQogICAgICAgICBfbG9n
LmluZm8oIiAgY291bnQgbmFtZSIpCi0gICAgICAgIGZvciAobmFtZSwgY291bnQpIGluIHNvcnRl
ZChzZWxmLl9zdXBwcmVzc2lvbnMuaXRlbXMoKSwga2V5PWxhbWJkYSAoaywgdik6ICh2LCBrKSk6
CisgICAgICAgIGZvciAobmFtZSwgY291bnQpIGluIHNvcnRlZChzZWxmLl9zdXBwcmVzc2lvbnMu
aXRlbXMoKSwga2V5PWxhbWJkYSBwYWlyOiAocGFpclsxXSwgcGFpclswXSkpOgogICAgICAgICAg
ICAgX2xvZy5pbmZvKCIlN2QgJXMiICUgKGNvdW50LCBuYW1lKSkKICAgICAgICAgX2xvZy5pbmZv
KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIp
CiAKICAgICAgICAgaWYgc2VsZi5fZXJyb3JzOgogICAgICAgICAgICAgX2xvZy5pbmZvKCJWYWxn
cmluZCBkZXRlY3RlZCAlcyBsZWFrczoiICUgbGVuKHNlbGYuX2Vycm9ycykpCi0gICAgICAgICAg
ICBmb3IgbGVhayBpbiBzZWxmLl9lcnJvcnM6CisgICAgICAgICAgICAjIEZvcmNlIHRoZSBzYW1l
IG9yZGVyIGluIFB5dGhvbiAyIGFuZCBQeXRob24gMworICAgICAgICAgICAgZm9yIGxlYWsgaW4g
c29ydGVkKHNlbGYuX2Vycm9ycywga2V5PWxhbWJkYSBlcnJvcjogZXJyb3IudW5pcXVlX3N0cmlu
ZygpKToKICAgICAgICAgICAgICAgICBfbG9nLmluZm8obGVhaykKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmRfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmlu
ZF91bml0dGVzdC5weQkocmV2aXNpb24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmluZF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVy
ZQorZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNv
ZGVfZm9yCiBmcm9tIHdlYmtpdHB5LnBvcnQubGVha2RldGVjdG9yX3ZhbGdyaW5kIGltcG9ydCBM
ZWFrRGV0ZWN0b3JWYWxncmluZAogCiAKQEAgLTYxOSw0MCArNjIwLDYgQEAgU3VwcHJlc3Npb25z
IHVzZWQ6CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogVmFsZ3JpbmQgZGV0ZWN0ZWQgMiBsZWFrczoKIExlYWtfRGVmaW5pdGVseUxvc3QKLTgg
Ynl0ZXMgaW4gMSBibG9ja3MgYXJlIGRlZmluaXRlbHkgbG9zdCBpbiBsb3NzIHJlY29yZCA0MjEg
b2YgNyw5NzIKLSAgb3BlcmF0b3IgbmV3KHVuc2lnbmVkIGxvbmcpICgvdXNyL2xpYi92YWxncmlu
ZC92Z3ByZWxvYWRfbWVtY2hlY2stYW1kNjQtbGludXguc28pCi0gIHN0ZDo6X0Z1bmN0aW9uX2Jh
c2U6Ol9CYXNlX21hbmFnZXI8V2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25zdCYsIFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIHZvaWQgKCopKHZv
aWQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29uc3QmLCBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6Rm9ybVN0YXRlPiwgYm9vbCksIHZvaWQqKTo6e2xhbWJkYShXZWJDb3JlOjpQb2xpY3lB
Y3Rpb24pIzF9Pjo6X01fbWFuYWdlcihzdGQ6Ol9BbnlfZGF0YSYsIHN0ZDo6X0Z1bmN0aW9uX2Jh
c2U6Ol9CYXNlX21hbmFnZXI8V2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25zdCYsIFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIHZvaWQgKCopKHZv
aWQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29uc3QmLCBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6Rm9ybVN0YXRlPiwgYm9vbCksIHZvaWQqKTo6e2xhbWJkYShXZWJDb3JlOjpQb2xpY3lB
Y3Rpb24pIzF9PiBjb25zdCYsIHN0ZDo6X01hbmFnZXJfb3BlcmF0aW9uKSAoL2hvbWUvdXNlci9X
ZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS8ubGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAuMTku
MykKLSAgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fbmV3ICgvaG9tZS91c2VyL1dlYktpdC9X
ZWJLaXRCdWlsZC9SZWxlYXNlLy5saWJzL2xpYndlYmtpdGd0ay0zLjAuc28uMC4xOS4zKQotICBX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiBjb25zdCYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCBjb25zdCYsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYkNvcmU6OlBvbGljeUFjdGlvbik+KSAoL2hvbWUvdXNlci9X
ZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS8ubGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAuMTku
MykKLSAgV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBjb25zdCYsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIHZvaWQgKCopKHZvaWQqLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgY29uc3QmLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0
YXRlPiwgYm9vbCksIHZvaWQqKSAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFz
ZS8ubGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAuMTkuMykKLSAgV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBXZWJD
b3JlOjpGcmFtZUxvYWRUeXBlLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikg
KC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxpYnMvbGlid2Via2l0Z3Rr
LTMuMC5zby4wLjE5LjMpCi0gIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKikgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxp
YnMvbGlid2Via2l0Z3RrLTMuMC5zby4wLjE5LjMpCi0gIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjps
b2FkKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QgY29uc3QmKSAoL2hvbWUvdXNlci9XZWJLaXQv
V2ViS2l0QnVpbGQvUmVsZWFzZS8ubGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAuMTkuMykKLSAg
d2Via2l0X3dlYl9mcmFtZV9sb2FkX3VyaSAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQv
UmVsZWFzZS8ubGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAuMTkuMykKLSAgcnVuVGVzdChzdGQ6
OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRv
cjxjaGFyPiA+IGNvbnN0JikgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2Uv
UHJvZ3JhbXMvRHVtcFJlbmRlclRyZWUpCi0gIHJ1blRlc3RpbmdTZXJ2ZXJMb29wKCkgKC9ob21l
L3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvUHJvZ3JhbXMvRHVtcFJlbmRlclRyZWUp
Ci0gIG1haW4gKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvUHJvZ3JhbXMv
RHVtcFJlbmRlclRyZWUpCi1TdXBwcmVzc2lvbiAoZXJyb3IgaGFzaD0jMDQ0OUQzRUQyNTNGRTFG
OSMpOgotCi17Ci0gICA8aW5zZXJ0X2Ffc3VwcHJlc3Npb25fbmFtZV9oZXJlPgotICAgTWVtY2hl
Y2s6TGVhawotICAgZnVuOl9abncqCi0gICBmdW46X1pOU3QxNF9GdW5jdGlvbl9iYXNlMTNfQmFz
ZV9tYW5hZ2VySVpON1dlYkNvcmUxM1BvbGljeUNoZWNrZXIyMWNoZWNrTmF2aWdhdGlvblBvbGlj
eUVSS05TMV8xNVJlc291cmNlUmVxdWVzdEVQTlMxXzE0RG9jdW1lbnRMb2FkZXJFTjNXVEYxMFBh
c3NSZWZQdHJJTlMxXzlGb3JtU3RhdGVFRUVQRnZQdlM1X1NCX2JFU0NfRVVsTlMxXzEyUG9saWN5
QWN0aW9uRUVfRTEwX01fbWFuYWdlckVSU3Q5X0FueV9kYXRhUktTSV9TdDE4X01hbmFnZXJfb3Bl
cmF0aW9uCi0gICBmdW46d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fbmV3Ci0gICBmdW46X1pO
NldlYktpdDE3RnJhbWVMb2FkZXJDbGllbnQzOWRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkVSS043V2ViQ29yZTE2TmF2aWdhdGlvbkFjdGlvbkVSS05TMV8xNVJlc291cmNl
UmVxdWVzdEVOM1dURjEwUGFzc1JlZlB0cklOUzFfOUZvcm1TdGF0ZUVFRVN0OGZ1bmN0aW9uSUZ2
TlMxXzEyUG9saWN5QWN0aW9uRUVFCi0gICBmdW46X1pON1dlYkNvcmUxM1BvbGljeUNoZWNrZXIy
MWNoZWNrTmF2aWdhdGlvblBvbGljeUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVBOU18xNERvY3Vt
ZW50TG9hZGVyRU4zV1RGMTBQYXNzUmVmUHRySU5TXzlGb3JtU3RhdGVFRUVQRnZQdlMzX1M5X2JF
U0FfCi0gICBmdW46X1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMjJsb2FkV2l0aERvY3VtZW50TG9h
ZGVyRVBOU18xNERvY3VtZW50TG9hZGVyRU5TXzEzRnJhbWVMb2FkVHlwZUVOM1dURjEwUGFzc1Jl
ZlB0cklOU185Rm9ybVN0YXRlRUVFCi0gICBmdW46X1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyNGxv
YWRFUE5TXzE0RG9jdW1lbnRMb2FkZXJFCi0gICBmdW46X1pON1dlYkNvcmUxMUZyYW1lTG9hZGVy
NGxvYWRFUktOU18xNkZyYW1lTG9hZFJlcXVlc3RFCi0gICBmdW46d2Via2l0X3dlYl9mcmFtZV9s
b2FkX3VyaQotICAgZnVuOl9aTDdydW5UZXN0UktTcwotICAgZnVuOl9aTDIwcnVuVGVzdGluZ1Nl
cnZlckxvb3B2Ci0gICBmdW46bWFpbgotfQotCi0KLUxlYWtfRGVmaW5pdGVseUxvc3QKIDggYnl0
ZXMgaW4gMSBibG9ja3MgYXJlIGRlZmluaXRlbHkgbG9zdCBpbiBsb3NzIHJlY29yZCA0MjIgb2Yg
Nyw5NzIKICAgb3BlcmF0b3IgbmV3KHVuc2lnbmVkIGxvbmcpICgvdXNyL2xpYi92YWxncmluZC92
Z3ByZWxvYWRfbWVtY2hlY2stYW1kNjQtbGludXguc28pCiAgIHN0ZDo6X0Z1bmN0aW9uX2Jhc2U6
Ol9CYXNlX21hbmFnZXI8V2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tDb250ZW50UG9saWN5
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgY29uc3QmLCB2b2lkICgqKSh2b2lkKiwgV2ViQ29y
ZTo6UG9saWN5QWN0aW9uKSwgdm9pZCopOjp7bGFtYmRhKFdlYkNvcmU6OlBvbGljeUFjdGlvbikj
MX0+OjpfTV9tYW5hZ2VyKHN0ZDo6X0FueV9kYXRhJiwgc3RkOjpfRnVuY3Rpb25fYmFzZTo6X0Jh
c2VfbWFuYWdlcjxXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja0NvbnRlbnRQb2xpY3koV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSBjb25zdCYsIHZvaWQgKCopKHZvaWQqLCBXZWJDb3JlOjpQ
b2xpY3lBY3Rpb24pLCB2b2lkKik6OntsYW1iZGEoV2ViQ29yZTo6UG9saWN5QWN0aW9uKSMxfT4g
Y29uc3QmLCBzdGQ6Ol9NYW5hZ2VyX29wZXJhdGlvbikgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktp
dEJ1aWxkL1JlbGVhc2UvLmxpYnMvbGlid2Via2l0Z3RrLTMuMC5zby4wLjE5LjMpCkBAIC02OTgs
NiArNjY1LDQwIEBAIFN1cHByZXNzaW9uIChlcnJvciBoYXNoPSM4MzEzREVCMTZCMDY5NDMKIH0K
IAogCitMZWFrX0RlZmluaXRlbHlMb3N0Cis4IGJ5dGVzIGluIDEgYmxvY2tzIGFyZSBkZWZpbml0
ZWx5IGxvc3QgaW4gbG9zcyByZWNvcmQgNDIxIG9mIDcsOTcyCisgIG9wZXJhdG9yIG5ldyh1bnNp
Z25lZCBsb25nKSAoL3Vzci9saWIvdmFsZ3JpbmQvdmdwcmVsb2FkX21lbWNoZWNrLWFtZDY0LWxp
bnV4LnNvKQorICBzdGQ6Ol9GdW5jdGlvbl9iYXNlOjpfQmFzZV9tYW5hZ2VyPFdlYkNvcmU6OlBv
bGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgY29uc3QmLCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpGb3JtU3RhdGU+LCB2b2lkICgqKSh2b2lkKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IGNvbnN0JiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGJvb2wpLCB2b2lk
Kik6OntsYW1iZGEoV2ViQ29yZTo6UG9saWN5QWN0aW9uKSMxfT46Ol9NX21hbmFnZXIoc3RkOjpf
QW55X2RhdGEmLCBzdGQ6Ol9GdW5jdGlvbl9iYXNlOjpfQmFzZV9tYW5hZ2VyPFdlYkNvcmU6OlBv
bGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgY29uc3QmLCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpGb3JtU3RhdGU+LCB2b2lkICgqKSh2b2lkKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IGNvbnN0JiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGJvb2wpLCB2b2lk
Kik6OntsYW1iZGEoV2ViQ29yZTo6UG9saWN5QWN0aW9uKSMxfT4gY29uc3QmLCBzdGQ6Ol9NYW5h
Z2VyX29wZXJhdGlvbikgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxp
YnMvbGlid2Via2l0Z3RrLTMuMC5zby4wLjE5LjMpCisgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lz
aW9uX25ldyAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS8ubGlicy9saWJ3
ZWJraXRndGstMy4wLnNvLjAuMTkuMykKKyAgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYkNvcmU6Ok5hdmlnYXRpb25B
Y3Rpb24gY29uc3QmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29uc3QmLCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJDb3JlOjpQ
b2xpY3lBY3Rpb24pPikgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxp
YnMvbGlid2Via2l0Z3RrLTMuMC5zby4wLjE5LjMpCisgIFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6
OmNoZWNrTmF2aWdhdGlvblBvbGljeShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29uc3QmLCBX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3Rh
dGU+LCB2b2lkICgqKSh2b2lkKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IGNvbnN0JiwgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGJvb2wpLCB2b2lkKikgKC9ob21lL3Vz
ZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxpYnMvbGlid2Via2l0Z3RrLTMuMC5zby4w
LjE5LjMpCisgIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSwgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pICgvaG9tZS91c2VyL1dlYktpdC9XZWJLaXRCdWls
ZC9SZWxlYXNlLy5saWJzL2xpYndlYmtpdGd0ay0zLjAuc28uMC4xOS4zKQorICBXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopICgvaG9tZS91c2VyL1dl
YktpdC9XZWJLaXRCdWlsZC9SZWxlYXNlLy5saWJzL2xpYndlYmtpdGd0ay0zLjAuc28uMC4xOS4z
KQorICBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0
IGNvbnN0JikgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxpYnMvbGli
d2Via2l0Z3RrLTMuMC5zby4wLjE5LjMpCisgIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF91cmkgKC9o
b21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxpYnMvbGlid2Via2l0Z3RrLTMu
MC5zby4wLjE5LjMpCisgIHJ1blRlc3Qoc3RkOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFy
X3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCYpICgvaG9tZS91c2Vy
L1dlYktpdC9XZWJLaXRCdWlsZC9SZWxlYXNlL1Byb2dyYW1zL0R1bXBSZW5kZXJUcmVlKQorICBy
dW5UZXN0aW5nU2VydmVyTG9vcCgpICgvaG9tZS91c2VyL1dlYktpdC9XZWJLaXRCdWlsZC9SZWxl
YXNlL1Byb2dyYW1zL0R1bXBSZW5kZXJUcmVlKQorICBtYWluICgvaG9tZS91c2VyL1dlYktpdC9X
ZWJLaXRCdWlsZC9SZWxlYXNlL1Byb2dyYW1zL0R1bXBSZW5kZXJUcmVlKQorU3VwcHJlc3Npb24g
KGVycm9yIGhhc2g9IzA0NDlEM0VEMjUzRkUxRjkjKToKKworeworICAgPGluc2VydF9hX3N1cHBy
ZXNzaW9uX25hbWVfaGVyZT4KKyAgIE1lbWNoZWNrOkxlYWsKKyAgIGZ1bjpfWm53KgorICAgZnVu
Ol9aTlN0MTRfRnVuY3Rpb25fYmFzZTEzX0Jhc2VfbWFuYWdlcklaTjdXZWJDb3JlMTNQb2xpY3lD
aGVja2VyMjFjaGVja05hdmlnYXRpb25Qb2xpY3lFUktOUzFfMTVSZXNvdXJjZVJlcXVlc3RFUE5T
MV8xNERvY3VtZW50TG9hZGVyRU4zV1RGMTBQYXNzUmVmUHRySU5TMV85Rm9ybVN0YXRlRUVFUEZ2
UHZTNV9TQl9iRVNDX0VVbE5TMV8xMlBvbGljeUFjdGlvbkVFX0UxMF9NX21hbmFnZXJFUlN0OV9B
bnlfZGF0YVJLU0lfU3QxOF9NYW5hZ2VyX29wZXJhdGlvbgorICAgZnVuOndlYmtpdF93ZWJfcG9s
aWN5X2RlY2lzaW9uX25ldworICAgZnVuOl9aTjZXZWJLaXQxN0ZyYW1lTG9hZGVyQ2xpZW50Mzlk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25FUktON1dlYkNvcmUxNk5hdmln
YXRpb25BY3Rpb25FUktOUzFfMTVSZXNvdXJjZVJlcXVlc3RFTjNXVEYxMFBhc3NSZWZQdHJJTlMx
XzlGb3JtU3RhdGVFRUVTdDhmdW5jdGlvbklGdk5TMV8xMlBvbGljeUFjdGlvbkVFRQorICAgZnVu
Ol9aTjdXZWJDb3JlMTNQb2xpY3lDaGVja2VyMjFjaGVja05hdmlnYXRpb25Qb2xpY3lFUktOU18x
NVJlc291cmNlUmVxdWVzdEVQTlNfMTREb2N1bWVudExvYWRlckVOM1dURjEwUGFzc1JlZlB0cklO
U185Rm9ybVN0YXRlRUVFUEZ2UHZTM19TOV9iRVNBXworICAgZnVuOl9aTjdXZWJDb3JlMTFGcmFt
ZUxvYWRlcjIybG9hZFdpdGhEb2N1bWVudExvYWRlckVQTlNfMTREb2N1bWVudExvYWRlckVOU18x
M0ZyYW1lTG9hZFR5cGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOUZvcm1TdGF0ZUVFRQorICAgZnVu
Ol9aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjRsb2FkRVBOU18xNERvY3VtZW50TG9hZGVyRQorICAg
ZnVuOl9aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjRsb2FkRVJLTlNfMTZGcmFtZUxvYWRSZXF1ZXN0
RQorICAgZnVuOndlYmtpdF93ZWJfZnJhbWVfbG9hZF91cmkKKyAgIGZ1bjpfWkw3cnVuVGVzdFJL
U3MKKyAgIGZ1bjpfWkwyMHJ1blRlc3RpbmdTZXJ2ZXJMb29wdgorICAgZnVuOm1haW4KK30KKwor
CiAiIiIKIAogdmFsZ3JpbmRfb3V0cHV0X2NwcGZpbHRfbWFwID0gewpAQCAtODA3LDcgKzgwOCw3
IEBAIFN1cHByZXNzaW9ucyB1c2VkOgogCiBkZWYgbW9ja19ydW5fY3BwZmlsdF9jb21tYW5kKGFy
Z3MpOgogICAgIGlmIGFyZ3NbMF0gPT0gJ2MrK2ZpbHQnOgotICAgICAgICByZXR1cm4gdmFsZ3Jp
bmRfb3V0cHV0X2NwcGZpbHRfbWFwW2FyZ3NbMl1dCisgICAgICAgIHJldHVybiB2YWxncmluZF9v
dXRwdXRfY3BwZmlsdF9tYXBbZGVjb2RlX2ZvcihhcmdzWzJdLCBzdHIpXQogICAgIHJldHVybiAi
IgogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hf
bG9nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9n
ZXRfY3Jhc2hfbG9nLnB5CShyZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsNyBAQCBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9pZl9uZWNlc3NhcnkKIAog
CiBjbGFzcyBHREJDcmFzaExvZ0dlbmVyYXRvcihvYmplY3QpOgpAQCAtNzUsNyArNzYsNyBAQCBj
bGFzcyBHREJDcmFzaExvZ0dlbmVyYXRvcihvYmplY3QpOgogICAgICAgICAgICAgdHJ5OgogICAg
ICAgICAgICAgICAgIGluZm8gPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoY29yZWR1bXBj
dGwgKyBbJ2luZm8nLCAiLS1zaW5jZT0iICsgdGltZS5zdHJmdGltZSgiJWEgJVktJW0tJWQgJUg6
JU06JVMgJVoiLCB0aW1lLmxvY2FsdGltZShzZWxmLm5ld2VyX3RoYW4pKV0sCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybl9zdGRlcnI9VHJ1ZSkKLSAgICAgICAgICAgIGV4Y2VwdCBTY3JpcHRF
cnJvciwgT1NFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCAoU2NyaXB0RXJyb3IsIE9TRXJyb3Ip
OgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGZvdW5kX25ld2VyID0g
RmFsc2UKQEAgLTEyOSw3ICsxMzAsNyBAQCBjbGFzcyBHREJDcmFzaExvZ0dlbmVyYXRvcihvYmpl
Y3QpOgogICAgICAgICBlbGlmIGNvcmVkdW1wY3RsOgogICAgICAgICAgICAgY3Jhc2hfbG9nLCBl
cnJvcnMgPSBzZWxmLl9nZXRfdHJhY2VfZnJvbV9zeXN0ZW1kKGNvcmVkdW1wY3RsLCBwaWRfcmVw
cmVzZW50YXRpb24pCiAKLSAgICAgICAgc3RkZXJyX2xpbmVzID0gZXJyb3JzICsgc3RyKHN0ZGVy
ciBvciAnPGVtcHR5PicpLmRlY29kZSgndXRmOCcsICdpZ25vcmUnKS5zcGxpdGxpbmVzKCkKKyAg
ICAgICAgc3RkZXJyX2xpbmVzID0gZXJyb3JzICsgZGVjb2RlX2lmX25lY2Vzc2FyeShzdHIoc3Rk
ZXJyIG9yICc8ZW1wdHk+JyksIGVycm9ycz0naWdub3JlJykuc3BsaXRsaW5lcygpCiAgICAgICAg
IGVycm9yc19zdHIgPSAnXG4nLmpvaW4oKCdTVERFUlI6ICcgKyBzdGRlcnJfbGluZSkgZm9yIHN0
ZGVycl9saW5lIGluIHN0ZGVycl9saW5lcykKICAgICAgICAgY3BwZmlsdF9wcm9jID0gc2VsZi5f
ZXhlY3V0aXZlLnBvcGVuKAogICAgICAgICAgICAgWydjKytmaWx0J10sIHN0ZGluPXN1YnByb2Nl
c3MuUElQRSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWMucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weQkocmV2aXNpb24gMjUxNzkwKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weQkod29ya2luZyBjb3B5KQpAQCAtMjIy
LDcgKzIyMiw3IEBAIGNsYXNzIE1hY1BvcnQoRGFyd2luUG9ydCk6CiAgICAgICAgIHNlbGYuX2hl
bHBlciA9IHNlbGYuX2V4ZWN1dGl2ZS5wb3Blbihhcmd1bWVudHMsCiAgICAgICAgICAgICBzdGRp
bj1zZWxmLl9leGVjdXRpdmUuUElQRSwgc3Rkb3V0PXNlbGYuX2V4ZWN1dGl2ZS5QSVBFLCBzdGRl
cnI9Tm9uZSkKICAgICAgICAgaXNfcmVhZHkgPSBzZWxmLl9oZWxwZXIuc3Rkb3V0LnJlYWRsaW5l
KCkKLSAgICAgICAgaWYgbm90IGlzX3JlYWR5LnN0YXJ0c3dpdGgoJ3JlYWR5Jyk6CisgICAgICAg
IGlmIG5vdCBpc19yZWFkeS5zdGFydHN3aXRoKGIncmVhZHknKToKICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoIkxheW91dFRlc3RIZWxwZXIgY291bGQgbm90IHN0YXJ0IikKICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMjQyLDcgKzI0Miw3IEBAIGNsYXNz
IE1hY1BvcnQoRGFyd2luUG9ydCk6CiAgICAgICAgIGlmIHNlbGYuX2hlbHBlcjoKICAgICAgICAg
ICAgIF9sb2cuZGVidWcoIlN0b3BwaW5nIExheW91dFRlc3RIZWxwZXIiKQogICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX2hlbHBlci5zdGRpbi53cml0ZSgieFxuIikKKyAg
ICAgICAgICAgICAgICBzZWxmLl9oZWxwZXIuc3RkaW4ud3JpdGUoYiJ4XG4iKQogICAgICAgICAg
ICAgICAgIHNlbGYuX2hlbHBlci5zdGRpbi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgc2VsZi5f
aGVscGVyLndhaXQoKQogICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkJKHJl
dmlzaW9uIDI1MTc5MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tb2NrX2RydF91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogaW1wb3J0IHN5cwog
aW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBuZXdzdHJpbmdp
bwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9j
a1N5c3RlbUhvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBp
bXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgbW9ja19kcnQKIGZyb20g
d2Via2l0cHkucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS5wb3J0IGlt
cG9ydCB0ZXN0CkBAIC0xNDYsOSArMTQ2LDkgQEAgY2xhc3MgTW9ja0RSVFRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICAgICAgcGl4ZWxfdGVzdHMsIGV4cGVjdGVkX2NoZWNrc3VtLCBk
cnRfb3V0cHV0LCBkcnRfaW5wdXQ9Tm9uZSwgZXhwZWN0ZWRfdGV4dD1leHBlY3RlZF90ZXh0KQog
CiAgICAgICAgIGFyZ3MgPSBbJy0tcGxhdGZvcm0nLCBwb3J0X25hbWVdICsgc2VsZi5leHRyYV9h
cmdzKHBpeGVsX3Rlc3RzKQotICAgICAgICBzdGRpbiA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKGRy
dF9pbnB1dCkKLSAgICAgICAgc3Rkb3V0ID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQotICAgICAg
ICBzdGRlcnIgPSBuZXdzdHJpbmdpby5TdHJpbmdJTygpCisgICAgICAgIHN0ZGluID0gU3RyaW5n
SU8oZHJ0X2lucHV0KQorICAgICAgICBzdGRvdXQgPSBTdHJpbmdJTygpCisgICAgICAgIHN0ZGVy
ciA9IFN0cmluZ0lPKCkKICAgICAgICAgb3B0aW9ucywgYXJncyA9IG1vY2tfZHJ0LnBhcnNlX29w
dGlvbnMoYXJncykKIAogICAgICAgICBkcnQgPSBzZWxmLm1ha2VfZHJ0KG9wdGlvbnMsIGFyZ3Ms
IGhvc3QsIHN0ZGluLCBzdGRvdXQsIHN0ZGVycikKQEAgLTE1NiwxNyArMTU2LDE1IEBAIGNsYXNz
IE1vY2tEUlRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlcywgMCkKIAotICAgICAgICAjIFdlIHVzZSB0aGUgU3RyaW5nSU8uYnVmbGlzdCBoZXJl
IGluc3RlYWQgb2YgZ2V0dmFsdWUoKSBiZWNhdXNlCi0gICAgICAgICMgdGhlIFN0cmluZ0lPIG1p
Z2h0IGJlIGEgbWl4IG9mIHVuaWNvZGUvYXNjaWkgYW5kIDgtYml0IHN0cmluZ3MuCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmJ1Zmxpc3QsIGRydF9vdXRwdXQpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICcnLmpvaW4oZHJ0X291dHB1dCkpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICcjRU9GXG4nKQogCiAg
ICAgZGVmIHRlc3RfbWFpbihzZWxmKToKICAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KCkK
ICAgICAgICAgdGVzdC5hZGRfdW5pdF90ZXN0c190b19tb2NrX2ZpbGVzeXN0ZW0oaG9zdC5maWxl
c3lzdGVtKQotICAgICAgICBzdGRpbiA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKCkKLSAgICAgICAg
c3Rkb3V0ID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQotICAgICAgICBzdGRlcnIgPSBuZXdzdHJp
bmdpby5TdHJpbmdJTygpCisgICAgICAgIHN0ZGluID0gU3RyaW5nSU8oKQorICAgICAgICBzdGRv
dXQgPSBTdHJpbmdJTygpCisgICAgICAgIHN0ZGVyciA9IFN0cmluZ0lPKCkKICAgICAgICAgcmVz
ID0gbW9ja19kcnQubWFpbihbJy0tcGxhdGZvcm0nLCAndGVzdCddICsgc2VsZi5leHRyYV9hcmdz
KEZhbHNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0LCBzdGRpbiwgc3Rkb3V0
LCBzdGRlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAwKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHkJKHJldmlzaW9uIDI1MTc5
MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIGRlZiBiaW5kX21vY2tfYXBwbGVfYWRkaXRpb25z
KCk6CiAgICAgICAgICAgICByZXN1bHQubWFwcGluZ1tJTlRFUk5BTF9UQUJMRV0gPSB7fQogICAg
ICAgICAgICAgZm9yIHBsYXRmb3JtIGluIHJlc3VsdC5tYXBwaW5nW1BVQkxJQ19UQUJMRV06CiAg
ICAgICAgICAgICAgICAgcmVzdWx0Lm1hcHBpbmdbSU5URVJOQUxfVEFCTEVdW3BsYXRmb3JtXSA9
IHt9Ci0gICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZlcnNpb24gaW4gcmVzdWx0Lm1hcHBpbmdb
UFVCTElDX1RBQkxFXVtwbGF0Zm9ybV0uaXRlcml0ZW1zKCk6CisgICAgICAgICAgICAgICAgZm9y
IG5hbWUsIHZlcnNpb24gaW4gcmVzdWx0Lm1hcHBpbmdbUFVCTElDX1RBQkxFXVtwbGF0Zm9ybV0u
aXRlbXMoKToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1hcHBpbmdbSU5URVJOQUxfVEFC
TEVdW3BsYXRmb3JtXVsnYWRkLScgKyBuYW1lXSA9IHZlcnNpb24KICAgICAgICAgICAgIHJldHVy
biByZXN1bHQKIApAQCAtNDY5LDggKzQ2OSw4IEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIGZvciBwYXRoIGluIHBvcnQuZXhwZWN0YXRpb25zX2ZpbGVz
KCk6CiAgICAgICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwYXRoLCAn
JykKICAgICAgICAgb3JkZXJlZF9kaWN0ID0gcG9ydC5leHBlY3RhdGlvbnNfZGljdCgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wYXRoX3RvX2dlbmVyaWNfdGVzdF9leHBlY3RhdGlv
bnNfZmlsZSgpLCBvcmRlcmVkX2RpY3Qua2V5cygpWzBdKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCksIG9yZGVyZWRfZGljdC5r
ZXlzKClbcG9ydC50ZXN0X2V4cGVjdGF0aW9uc19maWxlX3Bvc2l0aW9uKCldKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBvcnQucGF0aF90b19nZW5lcmljX3Rlc3RfZXhwZWN0YXRpb25zX2Zp
bGUoKSwgbGlzdChvcmRlcmVkX2RpY3Qua2V5cygpKVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwb3J0LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpLCBsaXN0KG9yZGVyZWRf
ZGljdC5rZXlzKCkpW3BvcnQudGVzdF9leHBlY3RhdGlvbnNfZmlsZV9wb3NpdGlvbigpXSkKIAog
ICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoYWRkaXRpb25hbF9leHBlY3RhdGlvbnM9Wycv
dG1wL2ZvbycsICcvdG1wL2JhciddKQogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQob3B0
aW9ucz1vcHRpb25zKQpAQCAtNDc5LDggKzQ3OSw4IEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxl
KCcvdG1wL2ZvbycsICdmb28nKQogICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRf
ZmlsZSgnL3RtcC9iYXInLCAnYmFyJykKICAgICAgICAgb3JkZXJlZF9kaWN0ID0gcG9ydC5leHBl
Y3RhdGlvbnNfZGljdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JkZXJlZF9kaWN0Lmtl
eXMoKVstMjpdLCBvcHRpb25zLmFkZGl0aW9uYWxfZXhwZWN0YXRpb25zKSAgIyBweWxpbnQ6IGRp
c2FibGU9RTExMDEKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmRlcmVkX2RpY3QudmFsdWVz
KClbLTI6XSwgWydmb28nLCAnYmFyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChv
cmRlcmVkX2RpY3Qua2V5cygpKVstMjpdLCBvcHRpb25zLmFkZGl0aW9uYWxfZXhwZWN0YXRpb25z
KSAgIyBweWxpbnQ6IGRpc2FibGU9RTExMDEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KG9yZGVyZWRfZGljdC52YWx1ZXMoKSlbLTI6XSwgWydmb28nLCAnYmFyJ10pCiAKICAgICBkZWYg
dGVzdF9wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoc2VsZik6CiAgICAgICAgIHBvcnQg
PSBUZXN0V2ViS2l0UG9ydCgpCkBAIC01MzEsNyArNTMxLDcgQEAgY2xhc3MgUG9ydFRlc3RDYXNl
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRf
ZmlsZSgnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdHdlYmtpdHBvcnQv
VGVzdEV4cGVjdGF0aW9ucycsCiAgICAgICAgICAgICAnQlVHX1RFU1RFWFBFQ1RBVElPTlMgU0tJ
UCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IEZBSUxcbicpCiAgICAgICAgIHBv
cnQgPSBUZXN0V2ViS2l0UG9ydChob3N0PWhvc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Jycuam9pbihwb3J0LmV4cGVjdGF0aW9uc19kaWN0KCkudmFsdWVzKCkpLCAnQlVHX1RFU1RFWFBF
Q1RBVElPTlMgU0tJUCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IEZBSUxcbicp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihsaXN0KHBvcnQuZXhwZWN0YXRpb25z
X2RpY3QoKS52YWx1ZXMoKSkpLCAnQlVHX1RFU1RFWFBFQ1RBVElPTlMgU0tJUCA6IGZhc3QvaHRt
bC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IEZBSUxcbicpCiAKICAgICBkZWYgdGVzdF9idWlsZF9k
cml2ZXIoc2VsZik6CiAgICAgICAgIG91dHB1dCA9IE91dHB1dENhcHR1cmUoKQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CShyZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBA
IGNsYXNzIFdpblBvcnQoQXBwbGVQb3J0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0
LCBwb3J0X25hbWUsICoqa3dhcmdzKToKICAgICAgICAgQXBwbGVQb3J0Ll9faW5pdF9fKHNlbGYs
IGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpCi0gICAgICAgIGlmIHBvcnRfbmFtZS5zcGxpdCgn
LScpID4gMToKKyAgICAgICAgaWYgbGVuKHBvcnRfbmFtZS5zcGxpdCgnLScpKSA+IDE6CiAgICAg
ICAgICAgICBzZWxmLl9vc192ZXJzaW9uID0gVmVyc2lvbk5hbWVNYXAubWFwKGhvc3QucGxhdGZv
cm0pLmZyb21fbmFtZShwb3J0X25hbWUuc3BsaXQoJy0nKVsxXSlbMV0KICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHNlbGYuX29zX3ZlcnNpb24gPSBzZWxmLmhvc3QucGxhdGZvcm0ub3NfdmVy
c2lvbgpAQCAtMTI3LDcgKzEyNyw3IEBAIGNsYXNzIFdpblBvcnQoQXBwbGVQb3J0KToKICAgICAg
ICAgICAgICMgTm90ZSB3ZSBkbyBub3QgYWRkICd3azInIGhlcmUsIGV2ZW4gdGhvdWdoIGl0J3Mg
aW5jbHVkZWQgaW4gX3NraXBwZWRfc2VhcmNoX3BhdGhzKCkuCiAgICAgICAgICMgRklYTUU6IFBl
cmhhcHMgd2Ugc2hvdWxkIGdldCB0aGlzIGxpc3QgZnJvbSBNYWNQb3J0PwogICAgICAgICBmYWxs
YmFja19uYW1lcy5hcHBlbmQoJ21hYycpCi0gICAgICAgIHJlc3VsdCA9IG1hcChzZWxmLl93ZWJr
aXRfYmFzZWxpbmVfcGF0aCwgZmFsbGJhY2tfbmFtZXMpCisgICAgICAgIHJlc3VsdCA9IGxpc3Qo
bWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBmYWxsYmFja19uYW1lcykpCiAgICAgICAg
IGlmIGFwcGxlX2FkZGl0aW9ucygpIGFuZCBnZXRhdHRyKGFwcGxlX2FkZGl0aW9ucygpLCAibGF5
b3V0X3Rlc3RzX3BhdGgiLCBOb25lKToKICAgICAgICAgICAgIHJlc3VsdC5pbnNlcnQoMCwgc2Vs
Zi5fZmlsZXN5c3RlbS5qb2luKGFwcGxlX2FkZGl0aW9ucygpLmxheW91dF90ZXN0c19wYXRoKCks
IHNlbGYucG9ydF9uYW1lKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdApAQCAtMjA1LDcgKzIwNSw3
IEBAIGNsYXNzIFdpblBvcnQoQXBwbGVQb3J0KToKIAogICAgIGRlZiB0ZXN0X3NlYXJjaF9wYXRo
KHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgdGVzdF9mYWxsYmFja19uYW1lcyA9IFtwYXRoIGZv
ciBwYXRoIGluIHNlbGYuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKSBpZiBub3QgcGF0aC5zdGFydHN3
aXRoKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKCdtYWMnKSldCi0gICAgICAgIHJldHVybiBt
YXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHRlc3RfZmFsbGJhY2tfbmFtZXMpCisgICAg
ICAgIHJldHVybiBsaXN0KG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgdGVzdF9mYWxs
YmFja19uYW1lcykpCiAKICAgICBkZWYgX250c2RfbG9jYXRpb24oc2VsZik6CiAgICAgICAgIGlm
ICdQUk9HUkFNRklMRVMnIG5vdCBpbiBvcy5lbnZpcm9uOgpAQCAtMzQwLDcgKzM0MCw3IEBAIGNs
YXNzIFdpblBvcnQoQXBwbGVQb3J0KToKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAg
IGRlYnVnZ2VyX29wdGlvbnMgPSAnInswfSIgLXAgJWxkIC1lICVsZCAtZyAtbm9pbyAtbGluZXMg
LWNmICJ7MX0iJy5mb3JtYXQoY3lncGF0aChudHNkX3BhdGgpLCBjeWdwYXRoKGNvbW1hbmRfZmls
ZSkpCiAgICAgICAgIHJlZ2lzdHJ5X3NldHRpbmdzID0geydEZWJ1Z2dlcic6IFtkZWJ1Z2dlcl9v
cHRpb25zLCBzZWxmLl9SRUdfU1pdLCAnQXV0byc6IFsiMSIsIHNlbGYuX1JFR19TWl19Ci0gICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIHJlZ2lzdHJ5X3NldHRpbmdzLml0ZXJpdGVtcygpOgorICAg
ICAgICBmb3Iga2V5LCB2YWx1ZSBpbiByZWdpc3RyeV9zZXR0aW5ncy5pdGVtcygpOgogICAgICAg
ICAgICAgZm9yIGFyY2ggaW4gWyItLXdvdzMyIiwgIi0td293NjQiXToKICAgICAgICAgICAgICAg
ICBzZWxmLnByZXZpb3VzX2RlYnVnZ2VyX3ZhbHVlc1soYXJjaCwgc2VsZi5fSEtMTSwga2V5KV0g
PSBzZWxmLnJlYWRfcmVnaXN0cnlfdmFsdWUoc2VsZi5QT1NUX01PUlRFTV9ERUJVR0dFUl9LRVks
IGFyY2gsIHNlbGYuX0hLTE0sIGtleSkKICAgICAgICAgICAgICAgICBzZWxmLnByZXZpb3VzX3dv
dzY0X2RlYnVnZ2VyX3ZhbHVlc1soYXJjaCwgc2VsZi5fSEtMTSwga2V5KV0gPSBzZWxmLnJlYWRf
cmVnaXN0cnlfdmFsdWUoc2VsZi5XT1c2NF9QT1NUX01PUlRFTV9ERUJVR0dFUl9LRVksIGFyY2gs
IHNlbGYuX0hLTE0sIGtleSkKQEAgLTM0OCwxNCArMzQ4LDE0IEBAIGNsYXNzIFdpblBvcnQoQXBw
bGVQb3J0KToKICAgICAgICAgICAgICAgICBzZWxmLndyaXRlX3JlZ2lzdHJ5X3ZhbHVlKHNlbGYu
V09XNjRfUE9TVF9NT1JURU1fREVCVUdHRVJfS0VZLCBhcmNoLCBzZWxmLl9IS0xNLCBrZXksIHZh
bHVlWzFdLCB2YWx1ZVswXSkKIAogICAgIGRlZiByZXN0b3JlX2NyYXNoX2xvZ19zYXZpbmcoc2Vs
Zik6Ci0gICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYucHJldmlvdXNfZGVidWdnZXJfdmFs
dWVzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLnByZXZpb3Vz
X2RlYnVnZ2VyX3ZhbHVlcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi53cml0ZV9yZWdpc3Ry
eV92YWx1ZShzZWxmLlBPU1RfTU9SVEVNX0RFQlVHR0VSX0tFWSwga2V5WzBdLCBrZXlbMV0sIGtl
eVsyXSwgdmFsdWVbMV0sIHZhbHVlWzBdKQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxm
LnByZXZpb3VzX3dvdzY0X2RlYnVnZ2VyX3ZhbHVlcy5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9y
IGtleSwgdmFsdWUgaW4gc2VsZi5wcmV2aW91c193b3c2NF9kZWJ1Z2dlcl92YWx1ZXMuaXRlbXMo
KToKICAgICAgICAgICAgIHNlbGYud3JpdGVfcmVnaXN0cnlfdmFsdWUoc2VsZi5XT1c2NF9QT1NU
X01PUlRFTV9ERUJVR0dFUl9LRVksIGtleVswXSwga2V5WzFdLCBrZXlbMl0sIHZhbHVlWzFdLCB2
YWx1ZVswXSkKIAogICAgIGRlZiBwcmV2ZW50X2Vycm9yX2RpYWxvZ3Moc2VsZik6CiAgICAgICAg
IHJlZ2lzdHJ5X3NldHRpbmdzID0geydEb250U2hvd1VJJzogWzEsIHNlbGYuX1JFR19EV09SRF0s
ICdEaXNhYmxlZCc6IFsxLCBzZWxmLl9SRUdfRFdPUkRdfQotICAgICAgICBmb3Iga2V5LCB2YWx1
ZSBpbiByZWdpc3RyeV9zZXR0aW5ncy5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9yIGtleSwgdmFs
dWUgaW4gcmVnaXN0cnlfc2V0dGluZ3MuaXRlbXMoKToKICAgICAgICAgICAgIGZvciByb290IGlu
IFtzZWxmLl9IS0xNLCBzZWxmLl9IS0NVXToKICAgICAgICAgICAgICAgICBmb3IgYXJjaCBpbiBb
Ii0td293MzIiLCAiLS13b3c2NCJdOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnByZXZpb3Vz
X2Vycm9yX3JlcG9ydGluZ192YWx1ZXNbKGFyY2gsIHJvb3QsIGtleSldID0gc2VsZi5yZWFkX3Jl
Z2lzdHJ5X3ZhbHVlKHNlbGYuV0lORE9XU19FUlJPUl9SRVBPUlRJTkdfS0VZLCBhcmNoLCByb290
LCBrZXkpCkBAIC0zNjQsOSArMzY0LDkgQEAgY2xhc3MgV2luUG9ydChBcHBsZVBvcnQpOgogICAg
ICAgICAgICAgICAgICAgICBzZWxmLndyaXRlX3JlZ2lzdHJ5X3ZhbHVlKHNlbGYuV09XNjRfV0lO
RE9XU19FUlJPUl9SRVBPUlRJTkdfS0VZLCBhcmNoLCByb290LCBrZXksIHZhbHVlWzFdLCB2YWx1
ZVswXSkKIAogICAgIGRlZiBhbGxvd19lcnJvcl9kaWFsb2dzKHNlbGYpOgotICAgICAgICBmb3Ig
a2V5LCB2YWx1ZSBpbiBzZWxmLnByZXZpb3VzX2Vycm9yX3JlcG9ydGluZ192YWx1ZXMuaXRlcml0
ZW1zKCk6CisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYucHJldmlvdXNfZXJyb3JfcmVw
b3J0aW5nX3ZhbHVlcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi53cml0ZV9yZWdpc3RyeV92
YWx1ZShzZWxmLldJTkRPV1NfRVJST1JfUkVQT1JUSU5HX0tFWSwga2V5WzBdLCBrZXlbMV0sIGtl
eVsyXSwgdmFsdWVbMV0sIHZhbHVlWzBdKQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxm
LnByZXZpb3VzX3dvdzY0X2Vycm9yX3JlcG9ydGluZ192YWx1ZXMuaXRlcml0ZW1zKCk6CisgICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYucHJldmlvdXNfd293NjRfZXJyb3JfcmVwb3J0aW5n
X3ZhbHVlcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi53cml0ZV9yZWdpc3RyeV92YWx1ZShz
ZWxmLldPVzY0X1dJTkRPV1NfRVJST1JfUkVQT1JUSU5HX0tFWSwga2V5WzBdLCBrZXlbMV0sIGtl
eVsyXSwgdmFsdWVbMV0sIHZhbHVlWzBdKQogCiAgICAgZGVmIGRlbGV0ZV9zZW1fbG9ja3Moc2Vs
Zik6CkBAIC00NjMsMTAgKzQ2MywxMCBAQCBjbGFzcyBXaW5DYWlyb1BvcnQoV2luUG9ydCk6CiAg
ICAgREVGQVVMVF9BUkNISVRFQ1RVUkUgPSAneDg2XzY0JwogCiAgICAgZGVmIGRlZmF1bHRfYmFz
ZWxpbmVfc2VhcmNoX3BhdGgoc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gbWFwKHNl
bGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBzZWxmLl9zZWFyY2hfcGF0aHMoKSkKKyAgICAgICAg
cmV0dXJuIGxpc3QobWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBzZWxmLl9zZWFyY2hf
cGF0aHMoKSkpCiAKICAgICBkZWYgX3BvcnRfc3BlY2lmaWNfZXhwZWN0YXRpb25zX2ZpbGVzKHNl
bGYsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIG1hcChsYW1iZGEgeDogc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHgpLCAnVGVzdEV4cGVjdGF0aW9u
cycpLCByZXZlcnNlZChzZWxmLl9zZWFyY2hfcGF0aHMoKSkpCisgICAgICAgIHJldHVybiBsaXN0
KG1hcChsYW1iZGEgeDogc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9iYXNlbGlu
ZV9wYXRoKHgpLCAnVGVzdEV4cGVjdGF0aW9ucycpLCByZXZlcnNlZChzZWxmLl9zZWFyY2hfcGF0
aHMoKSkpKQogCiAgICAgZGVmIF9zZWFyY2hfcGF0aHMoc2VsZik6CiAgICAgICAgIHBhdGhzID0g
W10KQEAgLTUwNywxMCArNTA3LDEwIEBAIGNsYXNzIEZUV1BvcnQoV2luUG9ydCk6CiAgICAgREVG
QVVMVF9BUkNISVRFQ1RVUkUgPSAneDg2XzY0JwogCiAgICAgZGVmIGRlZmF1bHRfYmFzZWxpbmVf
c2VhcmNoX3BhdGgoc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gbWFwKHNlbGYuX3dl
YmtpdF9iYXNlbGluZV9wYXRoLCBzZWxmLl9zZWFyY2hfcGF0aHMoKSkKKyAgICAgICAgcmV0dXJu
IGxpc3QobWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBzZWxmLl9zZWFyY2hfcGF0aHMo
KSkpCiAKICAgICBkZWYgX3BvcnRfc3BlY2lmaWNfZXhwZWN0YXRpb25zX2ZpbGVzKHNlbGYsICoq
a3dhcmdzKToKLSAgICAgICAgcmV0dXJuIG1hcChsYW1iZGEgeDogc2VsZi5fZmlsZXN5c3RlbS5q
b2luKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHgpLCAnVGVzdEV4cGVjdGF0aW9ucycpLCBy
ZXZlcnNlZChzZWxmLl9zZWFyY2hfcGF0aHMoKSkpCisgICAgICAgIHJldHVybiBsaXN0KG1hcChs
YW1iZGEgeDogc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRo
KHgpLCAnVGVzdEV4cGVjdGF0aW9ucycpLCByZXZlcnNlZChzZWxmLl9zZWFyY2hfcGF0aHMoKSkp
KQogCiAgICAgZGVmIF9zZWFyY2hfcGF0aHMoc2VsZik6CiAgICAgICAgIHBhdGhzID0gW10KSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW5fdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbl91bml0dGVzdC5weQkocmV2aXNp
b24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbl91bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBXaW5Qb3J0VGVzdChwb3J0
X3Rlc3RjYXNlLlBvcnRUZXN0CiAKICAgICBkZWYgX2Fzc2VydF9zZWFyY2hfcGF0aChzZWxmLCBl
eHBlY3RlZF9zZWFyY2hfcGF0aHMsIHZlcnNpb24sIHVzZV93ZWJraXQyPUZhbHNlKToKICAgICAg
ICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nd2luJywgb3NfdmVyc2lvbj12ZXJz
aW9uLCBvcHRpb25zPU1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj11c2Vfd2Via2l0Mikp
Ci0gICAgICAgIGFic29sdXRlX3NlYXJjaF9wYXRocyA9IG1hcChwb3J0Ll93ZWJraXRfYmFzZWxp
bmVfcGF0aCwgZXhwZWN0ZWRfc2VhcmNoX3BhdGhzKQorICAgICAgICBhYnNvbHV0ZV9zZWFyY2hf
cGF0aHMgPSBsaXN0KG1hcChwb3J0Ll93ZWJraXRfYmFzZWxpbmVfcGF0aCwgZXhwZWN0ZWRfc2Vh
cmNoX3BhdGhzKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmJhc2VsaW5lX3NlYXJj
aF9wYXRoKCksIGFic29sdXRlX3NlYXJjaF9wYXRocykKIAogICAgIGRlZiB0ZXN0X2Jhc2VsaW5l
X3NlYXJjaF9wYXRoKHNlbGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dw
ZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd3BlLnB5CShy
ZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd3BlLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0xMDcsMTAgKzEwNywxMCBAQCBjbGFzcyBXUEVQb3J0KFBvcnQpOgog
ICAgICAgICByZXR1cm4gW3NlbGYucG9ydF9uYW1lLCAnd2syJ10gKyBzZWxmLmdldF9vcHRpb24o
ImFkZGl0aW9uYWxfcGxhdGZvcm1fZGlyZWN0b3J5IiwgW10pCiAKICAgICBkZWYgZGVmYXVsdF9i
YXNlbGluZV9zZWFyY2hfcGF0aChzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHJldHVybiBtYXAo
c2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlbGYuX3NlYXJjaF9wYXRocygpKQorICAgICAg
ICByZXR1cm4gbGlzdChtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlbGYuX3NlYXJj
aF9wYXRocygpKSkKIAogICAgIGRlZiBfcG9ydF9zcGVjaWZpY19leHBlY3RhdGlvbnNfZmlsZXMo
c2VsZiwgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gbWFwKGxhbWJkYSB4OiBzZWxmLl9maWxl
c3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoeCksICdUZXN0RXhwZWN0YXRp
b25zJyksIHJldmVyc2VkKHNlbGYuX3NlYXJjaF9wYXRocygpKSkKKyAgICAgICAgcmV0dXJuIGxp
c3QobWFwKGxhbWJkYSB4OiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X2Jhc2Vs
aW5lX3BhdGgoeCksICdUZXN0RXhwZWN0YXRpb25zJyksIHJldmVyc2VkKHNlbGYuX3NlYXJjaF9w
YXRocygpKSkpCiAKICAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnNfZmlsZV9wb3NpdGlvbihzZWxm
KToKICAgICAgICAgIyBXUEUgcG9ydCBiYXNlbGluZSBzZWFyY2ggcGF0aCBpcyB3cGUgLT4gd2sy
IC0+IGdlbmVyaWMsIHNvIHBvcnQgdGVzdCBleHBlY3RhdGlvbnMgZmlsZSBpcyBhdCB0aGlyZCB0
byBsYXN0IHBvc2l0aW9uLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382353</attachid>
            <date>2019-10-30 14:21:00 -0700</date>
            <delta_ts>2019-10-30 14:57:04 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-203489-20191030142059.patch</filename>
            <type>text/plain</type>
            <size>51668</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MTc5MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDc5IEBACisyMDE5LTEwLTMwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgaW4gd2Via2l0cHkucG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDg5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGV3ZWkgWmh1LgorCisgICAgICAgICogU2NyaXB0cy90ZXN0LXdl
YmtpdHB5LXB5dGhvbjM6IEFkZCB3ZWJraXRweS5wb3J0LgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ld3N0cmluZ2lvLnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ld3N0cmluZ2lvX3VuaXR0ZXN0LnB5OiBSZW1vdmVkLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weToKKyAg
ICAgICAgKE1vY2tQcm9jZXNzLl9faW5pdF9fKTogRW5zdXJlIHRoYXQgc3Rkb3V0IGFuZCBzdGRl
cnIgYXJlIGJ5dGUgYXJyYXlzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3Zl
cnNpb24ucHk6CisgICAgICAgIChWZXJzaW9uLl9faGFzaF9fKTogQWRkIGhhc2ggZnVuY3Rpb24g
Zm9yIFZlcnNpb24gb2JqZWN0cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFz
ZS5weToKKyAgICAgICAgKFBvcnQuZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6IENvbnZl
cnQgbGlzdCB0byBtYXAuCisgICAgICAgIChQb3J0LmRpZmZfdGV4dCk6IERlY29kZSBmb3IgdGhl
IG5hdGl2ZSBzdHJpbmcgdHlwZS4KKyAgICAgICAgKFBvcnQuc2tpcHBlZF9wZXJmX3Rlc3RzKTog
Q29udmVydCBmaWx0ZXIgdG8gbGlzdC4KKyAgICAgICAgKFBvcnQuX3J1bl9zY3JpcHQpOiBObyBu
ZWVkIHRvIGRlY29kZSBzdHJpbmdzIGluIFB5dGhvbiAzLCBldmVuIGlmIGRlY29kZV9vdXRwdXQg
aXMgc2V0LgorICAgICAgICAoUG9ydC5kaWZmX3RleHQudG9fcmF3X2J5dGVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZV91bml0dGVzdC5weToKKyAgICAg
ICAgKGNtcCk6IEFkZCBjbXAgZnVuY3Rpb24gZm9yIFB5dGhvbiAzIGNvbXBhcmlzb25zLgorICAg
ICAgICAoUG9ydFRlc3QudGVzdF9kaWZmX3RleHQpOiBEbyBub3QgZXNjYXBlIHNwYWNlcy4KKyAg
ICAgICAgKFBvcnRUZXN0LnRlc3RfcGFyc2VfcmVmdGVzdF9saXN0KTogV3JpdGUgdG8gdGVzdCBm
aWxlIGV4cGxpY2l0bHkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2J1aWxkZXJz
X3VuaXR0ZXN0LnB5OiBVc2UgZnVsbCBpbXBvcnQgcGF0aC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvY29uZmlnX3N0YW5kYWxvbmUucHk6IHNjcmlwdF9kaXIgd2FzIHJlZmVyaW5n
IHRvIFRvb2xzLAorICAgICAgICBub3QgVG9vbHMvU2NyaXB0cy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3BvcnQvY29uZmlnX3VuaXR0ZXN0LnB5OiBVc2UgZnVsbCBpbXBvcnQgcGF0aC4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5OgorICAgICAgICAoRGFy
d2luUG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlKTogVXNlIG9zLmRldm51bGwgZGlyZWN0bHku
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weToKKyAg
ICAgICAgKERyaXZlclRlc3QudGVzdF9yZWFkX2Jhc2U2NF9ibG9jayk6IEV4cGxpY2l0bHkgY29t
cGFyZSBhZ2FpbnN0IGJ5dGUgYXJyYXkuCisgICAgICAgIChEcml2ZXJUZXN0LnRlc3Rfc2V0dXBf
ZW52aXJvbl9iYXNlX3ZhcnMpOiBDb252ZXJ0IGl0ZXJhdG9ycyB0byBsaXN0cy4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFjdG9yeS5weToKKyAgICAgICAgKFBvcnRGYWN0b3J5
LmdldC5pbik6IEltcG9ydHMgbmVlZCB0byB1c2UgdGhlIGZ1bGwgaW1wb3J0IHBhdGguCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0ay5weToKKyAgICAgICAgKEd0a1BvcnQuZGVm
YXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6IENvbnZlcnQgbWFwIHRvIGxpc3QuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvci5weToKKyAgICAgICAgKExlYWtE
ZXRlY3Rvci5fcGFyc2VfbGVha3Nfb3V0cHV0KTogU2VhcmNoIGJ5dGUgYXJyYXkgd2l0aCBieXRl
IGFycmF5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFs
Z3JpbmQucHk6CisgICAgICAgIChWYWxncmluZEVycm9yLl9fc3RyX18pOiBTcGxpdCBieXRlIGFy
cmF5IHdpdGggYnl0ZSBhcnJheS4KKyAgICAgICAgKFZhbGdyaW5kRXJyb3IuZXJyb3JfaGFzaCk6
IENvcnJlY3QgcmVnZXguCisgICAgICAgIChMZWFrRGV0ZWN0b3JWYWxncmluZC5fcGFyc2VfbGVh
a3Nfb3V0cHV0KTogQ29udmVydCBieXRlcyB0byBzdHJpbmcuCisgICAgICAgIChMZWFrRGV0ZWN0
b3JWYWxncmluZC5wYXJzZV9hbmRfcHJpbnRfbGVha3NfZGV0YWlsKTogU3RhbmRhcmRpemUgUHl0
aG9uIDIgYW5kIDMgc29ydGluZyBvcmRlci4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5OiBNYWtlIHVuaXQgdGVzdHMgUHl0
aG9uIDMgY29tcGF0aWJsZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhf
Z2V0X2NyYXNoX2xvZy5weToKKyAgICAgICAgKEdEQkNyYXNoTG9nR2VuZXJhdG9yLl9nZXRfdHJh
Y2VfZnJvbV9zeXN0ZW1kKTogTW9kZXJuaXplIGV4Y2VwdGlvbiBoYW5kbGluZy4KKyAgICAgICAg
KEdEQkNyYXNoTG9nR2VuZXJhdG9yLmdlbmVyYXRlX2NyYXNoX2xvZyk6IE5vIG5lZWQgdG8gZGVj
b2RlIHN0cmluZ3MgaW4gUHl0aG9uIDMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0
L21hYy5weToKKyAgICAgICAgKE1hY1BvcnQuc3RhcnRfaGVscGVyKTogaXNfcmVhZHkgd2lsbCBi
ZSBhIGJ5dGUgYXJyYXkuCisgICAgICAgIChNYWNQb3J0LnN0b3BfaGVscGVyKTogc3RkaW4gd2ls
bCBiZSBhIGJ5dGUgYXJyYXkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tf
ZHJ0X3VuaXR0ZXN0LnB5OgorICAgICAgICAoTW9ja0RSVFRlc3QuYXNzZXJ0VGVzdCk6IFVzZSB1
bmljb2RlIGNvbXBhdGlibGUgU3RyaW5nSU8gb2JqZWN0cy4KKyAgICAgICAgKE1vY2tEUlRUZXN0
LnRlc3RfbWFpbik6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0
X3Rlc3RjYXNlLnB5OgorICAgICAgICAoYmluZF9tb2NrX2FwcGxlX2FkZGl0aW9ucy5Nb2NrQXBw
bGVBZGRpdGlvbnMudmVyc2lvbl9uYW1lX21hcHBpbmcpOiBVc2UgaXRlbXMgaW5zdGVhZCBvZiBp
dGVyaXRlbXMuCisgICAgICAgIChQb3J0VGVzdENhc2UudGVzdF9leHBlY3RhdGlvbnNfb3JkZXJp
bmcpOiBDb252ZXJ0IGl0ZXJhdG9yIHRvIGxpc3QuCisgICAgICAgIChQb3J0VGVzdENhc2UudGVz
dF90ZXN0X2V4cGVjdGF0aW9ucyk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
cG9ydC93aW4ucHk6CisgICAgICAgIChXaW5Qb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKFdpblBv
cnQuZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6IENvbnZlcnQgbWFwIHRvIGxpc3QuCisg
ICAgICAgIChXaW5Qb3J0LnRlc3Rfc2VhcmNoX3BhdGgpOiBEaXR0by4KKyAgICAgICAgKFdpblBv
cnQuc2V0dXBfY3Jhc2hfbG9nX3NhdmluZyk6IFVzZSBpdGVtcyBpbnN0ZWFkIG9mIGl0ZXJpdGVt
cy4KKyAgICAgICAgKFdpblBvcnQucmVzdG9yZV9jcmFzaF9sb2dfc2F2aW5nKTogRGl0dG8uCisg
ICAgICAgIChXaW5Qb3J0LnByZXZlbnRfZXJyb3JfZGlhbG9ncyk6IERpdHRvLgorICAgICAgICAo
V2luUG9ydC5hbGxvd19lcnJvcl9kaWFsb2dzKTogRGl0dG8uCisgICAgICAgIChXaW5DYWlyb1Bv
cnQuZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6IENvbnZlcnQgbWFwIHRvIGxpc3QuCisg
ICAgICAgIChXaW5DYWlyb1BvcnQuX3BvcnRfc3BlY2lmaWNfZXhwZWN0YXRpb25zX2ZpbGVzKTog
RGl0dG8uCisgICAgICAgIChGVFdQb3J0LmRlZmF1bHRfYmFzZWxpbmVfc2VhcmNoX3BhdGgpOiBE
aXR0by4KKyAgICAgICAgKEZUV1BvcnQuX3BvcnRfc3BlY2lmaWNfZXhwZWN0YXRpb25zX2ZpbGVz
KTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbl91bml0dGVzdC5w
eTogRGl0dG8uCisgICAgICAgIChXaW5Qb3J0VGVzdC5fYXNzZXJ0X3NlYXJjaF9wYXRoKTogRGl0
dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weToKKyAgICAgICAgKFdQ
RVBvcnQuZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6IENvbnZlcnQgbWFwIHRvIGxpc3Qu
CisgICAgICAgIChXUEVQb3J0Ll9wb3J0X3NwZWNpZmljX2V4cGVjdGF0aW9uc19maWxlcyk6IERp
dHRvLgorCiAyMDE5LTEwLTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBHYXJkZW5pbmc6IGZpeGluZyBicm9rZW4gYnVpbGQuCkluZGV4OiBUb29scy9TY3JpcHRz
L3Rlc3Qtd2Via2l0cHktcHl0aG9uMwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3Rlc3Qt
d2Via2l0cHktcHl0aG9uMwkocmV2aXNpb24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0cy90ZXN0
LXdlYmtpdHB5LXB5dGhvbjMJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgUFlUSE9O
M19DT01QQVRJQkxFX0RJUkVDVE9SSUVTID0gWwogICAnd2Via2l0cHkuY29tbW9uLnRocmVhZCcs
CiAgICd3ZWJraXRweS5jb21tb24ubmV0JywKICAgJ3dlYmtpdHB5LmNvbW1vbi53YXRjaGxpc3Qn
LAorICAnd2Via2l0cHkucG9ydCcsCiAgICd3ZWJraXRweS5yZXN1bHRzJywKICAgJ3dlYmtpdHB5
Lnhjb2RlJywKIF0KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ld3N0cmlu
Z2lvLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ld3N0
cmluZ2lvLnB5CShyZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXdzdHJpbmdpby5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDM5ICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi0iIiInd2l0aCctY29tcGxpYW50IFN0cmluZ0lPIGltcGxlbWVudGF0aW9u
LiIiIgotCi1pbXBvcnQgU3RyaW5nSU8gYXMgT2xkU3RyaW5nSU8KLQotCi1jbGFzcyBTdHJpbmdJ
TyhPbGRTdHJpbmdJTy5TdHJpbmdJTyk6Ci0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJh
Y2ViYWNrKToKLSAgICAgICAgcGFzcwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW8ucHkKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46
ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLUxGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ld3N0cmluZ2lvX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ld3N0
cmluZ2lvX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXdzdHJpbmdpb191bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0x
LDQwICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3RzIGZvciBuZXdzdHJp
bmdpbyBtb2R1bGUuIiIiCi0KLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgbmV3c3RyaW5naW8K
LQotCi1jbGFzcyBOZXdTdHJpbmdJT1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0
ZXN0X3dpdGgoc2VsZik6Ci0gICAgICAgIHdpdGggbmV3c3RyaW5naW8uU3RyaW5nSU8oImZvbyIp
IGFzIGY6Ci0gICAgICAgICAgICBjb250ZW50cyA9IGYucmVhZCgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29udGVudHMsICJmb28iKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV3c3RyaW5naW9fdW5pdHRlc3QucHkKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLUxGClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ZlcnNp
b24ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdmVyc2lv
bi5weQkocmV2aXNpb24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
dmVyc2lvbi5weQkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw5IEBAIGNsYXNzIFZlcnNp
b24ob2JqZWN0KToKICAgICAgICAgICAgIHJlc3VsdCArPSAnLnt9Jy5mb3JtYXQoc2VsZltpICsg
MV0pCiAgICAgICAgIHJldHVybiByZXN1bHQKIAorICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAg
ICAgICAgcmV0dXJuIGhhc2goc3RyKHNlbGYpKQorCiAgICAgZGVmIF9fY21wX18oc2VsZiwgb3Ro
ZXIpOgogICAgICAgICBpZiBvdGhlciBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIDEKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhl
Y3V0aXZlX21vY2sucHkJKHJldmlzaW9uIDI1MTc5MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNyBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IEJ5dGVzSU8sIHVuaWNvZGUKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgQnl0ZXNJTywgZW5j
b2RlX2lmX25lY2Vzc2FyeSwgdW5pY29kZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9f
bmFtZV9fKQpAQCAtMzgsOCArMzgsOCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1l
X18pCiBjbGFzcyBNb2NrUHJvY2VzcyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBz
dGRvdXQ9J01PQ0sgU1RET1VUXG4nLCBzdGRlcnI9JycpOgogICAgICAgICBzZWxmLnBpZCA9IDQy
Ci0gICAgICAgIHNlbGYuc3Rkb3V0ID0gQnl0ZXNJTyhzdGRvdXQpCi0gICAgICAgIHNlbGYuc3Rk
ZXJyID0gQnl0ZXNJTyhzdGRlcnIpCisgICAgICAgIHNlbGYuc3Rkb3V0ID0gQnl0ZXNJTyhlbmNv
ZGVfaWZfbmVjZXNzYXJ5KHN0ZG91dCkpCisgICAgICAgIHNlbGYuc3RkZXJyID0gQnl0ZXNJTyhl
bmNvZGVfaWZfbmVjZXNzYXJ5KHN0ZGVycikpCiAgICAgICAgIHNlbGYuc3RkaW4gPSBCeXRlc0lP
KCkKICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gMAogICAgICAgICBzZWxmLl9pc19ydW5uaW5n
ID0gRmFsc2UKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CShyZXZpc2lvbiAy
NTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkod29ya2luZyBj
b3B5KQpAQCAtNTEsNiArNTEsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBQVUJM
SUNfVEFCTEUsIElOVEVSTkFMX1RBQkxFLCBWZXJzaW9uTmFtZU1hcAogZnJvbSB3ZWJraXRweS5j
b21tb24ud2F2ZWRpZmYgaW1wb3J0IFdhdmVEaWZmCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJr
aXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNv
ZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZW5jb2RlX2ZvciwgZW5jb2RlX2lmX25lY2Vzc2FyeSwg
ZGVjb2RlX2ZvcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmln
dXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHkucG9ydCBpbXBv
cnQgY29uZmlnIGFzIHBvcnRfY29uZmlnCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGRyaXZl
cgpAQCAtMjIyLDcgKzIyMyw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgc2VhcmNo
X3BhdGhzLmFwcGVuZChzZWxmLm5hbWUoKSkKICAgICAgICAgaWYgc2VsZi5uYW1lKCkgIT0gc2Vs
Zi5wb3J0X25hbWU6CiAgICAgICAgICAgICBzZWFyY2hfcGF0aHMuYXBwZW5kKHNlbGYucG9ydF9u
YW1lKQotICAgICAgICByZXR1cm4gbWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBzZWFy
Y2hfcGF0aHMpCisgICAgICAgIHJldHVybiBsaXN0KG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVf
cGF0aCwgc2VhcmNoX3BhdGhzKSkKIAogICAgIEBtZW1vaXplZAogICAgIGRlZiBfY29tcGFyZV9i
YXNlbGluZShzZWxmKToKQEAgLTM0MCwxNiArMzQxLDggQEAgY2xhc3MgUG9ydChvYmplY3QpOgog
ICAgIGRlZiBkaWZmX3RleHQoc2VsZiwgZXhwZWN0ZWRfdGV4dCwgYWN0dWFsX3RleHQsIGV4cGVj
dGVkX2ZpbGVuYW1lLCBhY3R1YWxfZmlsZW5hbWUpOgogICAgICAgICAiIiJSZXR1cm5zIGEgc3Ry
aW5nIGNvbnRhaW5pbmcgdGhlIGRpZmYgb2YgdGhlIHR3byB0ZXh0IHN0cmluZ3MKICAgICAgICAg
aW4gJ3VuaWZpZWQgZGlmZicgZm9ybWF0LiIiIgotCi0gICAgICAgICMgVGhlIGZpbGVuYW1lcyBz
aG93IHVwIGluIHRoZSBkaWZmIG91dHB1dCwgbWFrZSBzdXJlIHRoZXkncmUKLSAgICAgICAgIyBy
YXcgYnl0ZXMgYW5kIG5vdCB1bmljb2RlLCBzbyB0aGF0IHRoZXkgZG9uJ3QgdHJpZ2dlciBqb2lu
KCkKLSAgICAgICAgIyB0cnlpbmcgdG8gZGVjb2RlIHRoZSBpbnB1dC4KLSAgICAgICAgZGVmIHRv
X3Jhd19ieXRlcyhzdHJpbmdfdmFsdWUpOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJp
bmdfdmFsdWUsIHVuaWNvZGUpOgotICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmdfdmFsdWUu
ZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICByZXR1cm4gc3RyaW5nX3ZhbHVlCi0gICAgICAg
IGV4cGVjdGVkX2ZpbGVuYW1lID0gdG9fcmF3X2J5dGVzKGV4cGVjdGVkX2ZpbGVuYW1lKQotICAg
ICAgICBhY3R1YWxfZmlsZW5hbWUgPSB0b19yYXdfYnl0ZXMoYWN0dWFsX2ZpbGVuYW1lKQorICAg
ICAgICBleHBlY3RlZF9maWxlbmFtZSA9IGRlY29kZV9mb3IoZW5jb2RlX2lmX25lY2Vzc2FyeShl
eHBlY3RlZF9maWxlbmFtZSksIHN0cikKKyAgICAgICAgYWN0dWFsX2ZpbGVuYW1lID0gZGVjb2Rl
X2ZvcihlbmNvZGVfaWZfbmVjZXNzYXJ5KGFjdHVhbF9maWxlbmFtZSksIHN0cikKICAgICAgICAg
ZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGV4cGVjdGVkX3RleHQuc3BsaXRsaW5lcyhUcnVl
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF90ZXh0LnNwbGl0
bGluZXMoVHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rl
ZF9maWxlbmFtZSwKQEAgLTM1OCw3ICszNTEsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAg
ICAgIGZvciBsaW5lIGluIGRpZmY6CiAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQogICAgICAg
ICAgICAgaWYgbm90IGxpbmUuZW5kc3dpdGgoJ1xuJyk6Ci0gICAgICAgICAgICAgICAgcmVzdWx0
ICs9ICdcblwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZVxuJworICAgICAgICAgICAgICAgIHJl
c3VsdCArPSAnXG4gTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZVxuJwogICAgICAgICByZXR1cm4g
cmVzdWx0CiAKICAgICBkZWYgY2hlY2tfZm9yX2xlYWtzKHNlbGYsIHByb2Nlc3NfbmFtZSwgcHJv
Y2Vzc19pZCk6CkBAIC03NjQsNyArNzU3LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICAgICAgaWYgbm90IG1hdGNoOgogICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoIlN5bnRheCBl
cnJvciBhdCBsaW5lICVkIGluICVzOiAlcyIgJSAobGluZV9udW1iZXIgKyAxLCBmaWxlbmFtZSwg
bGluZSkpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBsYXRmb3JtX25hbWVz
ID0gZmlsdGVyKGxhbWJkYSB0b2tlbjogdG9rZW4sIG1hdGNoLmdyb3VwKCdwbGF0Zm9ybXMnKS5s
b3dlcigpLnNwbGl0KCcgJykpIGlmIG1hdGNoLmdyb3VwKCdwbGF0Zm9ybXMnKSBlbHNlIFtdCisg
ICAgICAgICAgICAgICAgcGxhdGZvcm1fbmFtZXMgPSBsaXN0KGZpbHRlcihsYW1iZGEgdG9rZW46
IHRva2VuLCBtYXRjaC5ncm91cCgncGxhdGZvcm1zJykubG93ZXIoKS5zcGxpdCgnICcpKSkgaWYg
bWF0Y2guZ3JvdXAoJ3BsYXRmb3JtcycpIGVsc2UgW10KICAgICAgICAgICAgICAgICB0ZXN0X25h
bWUgPSBtYXRjaC5ncm91cCgndGVzdCcpCiAgICAgICAgICAgICAgICAgaWYgdGVzdF9uYW1lIGFu
ZCAobm90IHBsYXRmb3JtX25hbWVzIG9yIHNlbGYucG9ydF9uYW1lIGluIHBsYXRmb3JtX25hbWVz
IG9yIHNlbGYuX25hbWUgaW4gcGxhdGZvcm1fbmFtZXMpOgogICAgICAgICAgICAgICAgICAgICB0
ZXN0c190b19za2lwLmFwcGVuZCh0ZXN0X25hbWUpCkBAIC0xNDkyLDcgKzE0ODUsNyBAQCBjbGFz
cyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGlmIGFyZ3M6CiAgICAgICAgICAgICBydW5fc2NyaXB0
X2NvbW1hbmQuZXh0ZW5kKGFyZ3MpCiAgICAgICAgIG91dHB1dCA9IHNlbGYuX2V4ZWN1dGl2ZS5y
dW5fY29tbWFuZChydW5fc2NyaXB0X2NvbW1hbmQsIGN3ZD1zZWxmLndlYmtpdF9iYXNlKCksIGRl
Y29kZV9vdXRwdXQ9ZGVjb2RlX291dHB1dCwgZW52PWVudikKLSAgICAgICAgX2xvZy5kZWJ1Zygn
T3V0cHV0IG9mICVzOlxuJXMnICUgKHJ1bl9zY3JpcHRfY29tbWFuZCwgb3V0cHV0LmVuY29kZSgn
dXRmLTgnKSBpZiBkZWNvZGVfb3V0cHV0IGVsc2Ugb3V0cHV0KSkKKyAgICAgICAgX2xvZy5kZWJ1
ZygnT3V0cHV0IG9mICVzOlxuJXMnICUgKHJ1bl9zY3JpcHRfY29tbWFuZCwgZW5jb2RlX2Zvcihv
dXRwdXQsIHN0cikgaWYgZGVjb2RlX291dHB1dCBlbHNlIG91dHB1dCkpCiAgICAgICAgIHJldHVy
biBvdXRwdXQKIAogICAgIGRlZiBfYnVpbGRfZHJpdmVyKHNlbGYpOgpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI1MTc5MCkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSw5IEBAIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgUG9ydAog
ZnJvbSB3ZWJraXRweS5wb3J0LnRlc3QgaW1wb3J0IGFkZF91bml0X3Rlc3RzX3RvX21vY2tfZmls
ZXN5c3RlbSwgVGVzdFBvcnQKIAogCitkZWYgY21wKGEsIGIpOgorICAgIHJldHVybiAoYSA+IGIp
IC0gKGEgPCBiKQorCiBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVm
IG1ha2VfcG9ydChzZWxmLCBleGVjdXRpdmU9Tm9uZSwgd2l0aF90ZXN0cz1GYWxzZSwgcG9ydF9u
YW1lPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KCkKQEAg
LTEwNSw3ICsxMDgsNyBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAg
ICAgICAgdDEgPSAiQVxuXG5CIgogICAgICAgICB0MiA9ICJBXG5cbkJcblxuXG4iCi0gICAgICAg
IHQzID0gIi0tLSBleHAudHh0XG4rKysgYWN0LnR4dFxuQEAgLTEsMyArMSw1IEBAXG4gQVxuIFxu
LUJcblwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZVxuK0JcbitcbitcbiIKKyAgICAgICAgdDMg
PSAiLS0tIGV4cC50eHRcbisrKyBhY3QudHh0XG5AQCAtMSwzICsxLDUgQEBcbiBBXG4gXG4tQlxu
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGVcbitCXG4rXG4rXG4iCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodDMsIHBvcnQuZGlmZl90ZXh0KHQxLCB0MiwgJ2V4cC50eHQnLCAnYWN0LnR4dCcp
KQogCiAgICAgICAgICMgQW5kIG1ha2Ugc3VyZSB3ZSBhY3R1YWxseSBnZXQgZGlmZiBvdXRwdXQu
CkBAIC0yODgsMTMgKzI5MSwxOCBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAKICAgICBkZWYgdGVzdF9wYXJzZV9yZWZ0ZXN0X2xpc3Qoc2VsZik6CiAgICAgICAgIHBvcnQg
PSBzZWxmLm1ha2VfcG9ydCh3aXRoX3Rlc3RzPVRydWUpCi0gICAgICAgIHBvcnQuaG9zdC5maWxl
c3lzdGVtLmZpbGVzWydiYXIvcmVmdGVzdC5saXN0J10gPSAiXG4iLmpvaW4oWyI9PSB0ZXN0Lmh0
bWwgdGVzdC1yZWYuaHRtbCIsCi0gICAgICAgICIiLAotICAgICAgICAiIyBzb21lIGNvbW1lbnQi
LAotICAgICAgICAiIT0gdGVzdC0yLmh0bWwgdGVzdC1ub3RyZWYuaHRtbCAjIG1vcmUgY29tbWVu
dHMiLAotICAgICAgICAiPT0gdGVzdC0zLmh0bWwgdGVzdC1yZWYuaHRtbCIsCi0gICAgICAgICI9
PSB0ZXN0LTMuaHRtbCB0ZXN0LXJlZjIuaHRtbCIsCi0gICAgICAgICIhPSB0ZXN0LTMuaHRtbCB0
ZXN0LW5vdHJlZi5odG1sIl0pCisgICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLndyaXRlX3Rl
eHRfZmlsZSgKKyAgICAgICAgICAgICdiYXIvcmVmdGVzdC5saXN0JywKKyAgICAgICAgICAgICJc
biIuam9pbihbCisgICAgICAgICAgICAgICAgIj09IHRlc3QuaHRtbCB0ZXN0LXJlZi5odG1sIiwK
KyAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAiIyBzb21lIGNvbW1lbnQiLAor
ICAgICAgICAgICAgICAgICIhPSB0ZXN0LTIuaHRtbCB0ZXN0LW5vdHJlZi5odG1sICMgbW9yZSBj
b21tZW50cyIsCisgICAgICAgICAgICAgICAgIj09IHRlc3QtMy5odG1sIHRlc3QtcmVmLmh0bWwi
LAorICAgICAgICAgICAgICAgICI9PSB0ZXN0LTMuaHRtbCB0ZXN0LXJlZjIuaHRtbCIsCisgICAg
ICAgICAgICAgICAgIiE9IHRlc3QtMy5odG1sIHRlc3Qtbm90cmVmLmh0bWwiLAorICAgICAgICAg
ICAgXSksCisgICAgICAgICkKIAogICAgICAgICByZWZ0ZXN0X2xpc3QgPSBQb3J0Ll9wYXJzZV9y
ZWZ0ZXN0X2xpc3QocG9ydC5ob3N0LmZpbGVzeXN0ZW0sICdiYXInKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlZnRlc3RfbGlzdCwgeydiYXIvdGVzdC5odG1sJzogWygnPT0nLCAnYmFyL3Rl
c3QtcmVmLmh0bWwnKV0sCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYnVpbGRl
cnNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2J1aWxkZXJzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvYnVpbGRlcnNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDggKzI2LDggQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBidWls
ZGVycwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2Via2l0cHkucG9ydC5idWlsZGVycyBhcyBi
dWlsZGVycwogCiAKIGNsYXNzIEJ1aWxkZXJzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvY29uZmlnX3N0YW5kYWxvbmUucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2NvbmZpZ19zdGFuZGFsb25lLnB5
CShyZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvY29uZmln
X3N0YW5kYWxvbmUucHkJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgaW1wb3J0IHN5
cwogIyBFbnN1cmUgdGhhdCB3ZWJraXRweSBpcyBpbiBQWVRIT05QQVRILgogdGhpc19kaXIgPSBv
cy5wYXRoLmFic3BhdGgoc3lzLnBhdGhbMF0pCiB1cCA9IG9zLnBhdGguZGlybmFtZQotc2NyaXB0
X2RpciA9IHVwKHVwKHVwKHRoaXNfZGlyKSkpCitzY3JpcHRfZGlyID0gdXAodXAodGhpc19kaXIp
KQogaWYgc2NyaXB0X2RpciBub3QgaW4gc3lzLnBhdGg6CiAgICAgc3lzLnBhdGguYXBwZW5kKHNj
cmlwdF9kaXIpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9jb25maWdfdW5p
dHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2NvbmZp
Z191bml0dGVzdC5weQkocmV2aXNpb24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2NvbmZpZ191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBA
QCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3
ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0RmluZGVyCiAKLWltcG9y
dCBjb25maWcKK2ltcG9ydCB3ZWJraXRweS5wb3J0LmNvbmZpZyBhcyBjb25maWcKIAogCiBjbGFz
cyBDb25maWdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9kYXJ3aW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2Rhcndpbi5weQkocmV2aXNpb24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2Rhcndpbi5weQkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBjbGFz
cyBEYXJ3aW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgICMgdG8gZXhpdCBhbmQgd2Ugd2FudCB0
aGUgb3V0cHV0IHRvIHNob3cgdXAgb24gc3Rkb3V0IGluIGNhc2UgdGhlcmUgYXJlIGVycm9ycwog
ICAgICAgICAjIGxhdW5jaGluZyB0aGUgYnJvd3Nlci4KICAgICAgICAgc2VsZi5fZXhlY3V0aXZl
LnBvcGVuKFtzZWxmLnBhdGhfdG9fc2NyaXB0KCdydW4tc2FmYXJpJyldICsgc2VsZi5fYXJndW1l
bnRzX2Zvcl9jb25maWd1cmF0aW9uKCkgKyBbJy0tbm8tc2F2ZWQtc3RhdGUnLCAnLU5TT3Blbics
IHJlc3VsdHNfZmlsZW5hbWVdLAotICAgICAgICAgICAgY3dkPXNlbGYud2Via2l0X2Jhc2UoKSwg
c3Rkb3V0PWZpbGUob3MuZGV2bnVsbCksIHN0ZGVycj1maWxlKG9zLmRldm51bGwpKQorICAgICAg
ICAgICAgY3dkPXNlbGYud2Via2l0X2Jhc2UoKSwgc3Rkb3V0PW9zLmRldm51bGwsIHN0ZGVycj1v
cy5kZXZudWxsKQogCiAgICAgQG1lbW9pemVkCiAgICAgZGVmIHBhdGhfdG9fY3Jhc2hfbG9ncyhz
ZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXJfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0
dGVzdC5weQkocmV2aXNpb24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2RyaXZlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjAyLDcgKzIwMiw3IEBAIGNs
YXNzIERyaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbnRlbnRfYmxvY2suY29udGVudF9oYXNoLCAnYWN0dWFsJykKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjb250ZW50X2Jsb2NrLmVuY29kaW5nLCAnYmFzZTY0JykKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2NrLmNvbnRlbnQsICdNVEl6TkRVMk56Z0snKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnRfYmxvY2suZGVjb2RlZF9jb250ZW50LCAnMTIz
NDU2NzhcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5kZWNvZGVk
X2NvbnRlbnQsIGInMTIzNDU2NzhcbicpCiAKICAgICBkZWYgdGVzdF9ub190aW1lb3V0KHNlbGYp
OgogICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQpAQCAtMzY4LDcgKzM2OCw3IEBAIGNs
YXNzIERyaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAnV0FZTEFORF9ESVNQTEFZJzogJ3dheWxhbmQtMCcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdXQVlMQU5EX1NPQ0tFVCc6ICd3YXlsYW5kLXNvY2tldC0wJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0dES19CQUNLRU5EJzogJ3gxMSd9Ci0gICAgICAgIGVudmlyb25tZW50
X3VzZXIgPSBkaWN0KGVudmlyb25fa2VlcF95ZXMuaXRlbXMoKSArIGVudmlyb25fa2VlcF9uby5p
dGVtcygpKQorICAgICAgICBlbnZpcm9ubWVudF91c2VyID0gZGljdChsaXN0KGVudmlyb25fa2Vl
cF95ZXMuaXRlbXMoKSkgKyBsaXN0KGVudmlyb25fa2VlcF9uby5pdGVtcygpKSkKICAgICAgICAg
d2l0aCBwYXRjaCgnb3MuZW52aXJvbicsIGVudmlyb25tZW50X3VzZXIpOgogICAgICAgICAgICAg
cG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKICAgICAgICAgICAgIGRyaXZlciA9IERyaXZlcihwb3J0
LCBOb25lLCBwaXhlbF90ZXN0cz1GYWxzZSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9mYWN0b3J5LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9mYWN0b3J5LnB5CShyZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZmFjdG9yeS5weQkod29ya2luZyBjb3B5KQpAQCAtMTM2LDkgKzEzNiwxMCBAQCBjbGFz
cyBQb3J0RmFjdG9yeShvYmplY3QpOgogICAgICAgICBjbGFzc2VzID0gW10KICAgICAgICAgZm9y
IHBvcnRfY2xhc3MgaW4gc2VsZi5QT1JUX0NMQVNTRVM6CiAgICAgICAgICAgICBtb2R1bGVfbmFt
ZSwgY2xhc3NfbmFtZSA9IHBvcnRfY2xhc3MucnNwbGl0KCcuJywgMSkKLSAgICAgICAgICAgIG1v
ZHVsZSA9IF9faW1wb3J0X18obW9kdWxlX25hbWUsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFtdLCAt
MSkKLSAgICAgICAgICAgIGNscyA9IG1vZHVsZS5fX2RpY3RfX1tjbGFzc19uYW1lXQotICAgICAg
ICAgICAgY2xhc3Nlcy5hcHBlbmQoY2xzKQorICAgICAgICAgICAgbW9kdWxlID0gX19pbXBvcnRf
Xygnd2Via2l0cHkucG9ydC57fScuZm9ybWF0KG1vZHVsZV9uYW1lKSwgZ2xvYmFscygpLCBsb2Nh
bHMoKSwgW10sIDApCisgICAgICAgICAgICBjbHMgPSBtb2R1bGUuX19kaWN0X18uZ2V0KCdwb3J0
JykuX19kaWN0X18uZ2V0KG1vZHVsZV9uYW1lKS5fX2RpY3RfXy5nZXQoY2xhc3NfbmFtZSkKKyAg
ICAgICAgICAgIGlmIGNsczoKKyAgICAgICAgICAgICAgICBjbGFzc2VzLmFwcGVuZChjbHMpCiAg
ICAgICAgIGlmIGNvbmZpZy5hcHBsZV9hZGRpdGlvbnMoKSBhbmQgaGFzYXR0cihjb25maWcuYXBw
bGVfYWRkaXRpb25zKCksICdwb3J0cycpOgogICAgICAgICAgICAgY2xhc3NlcyArPSBjb25maWcu
YXBwbGVfYWRkaXRpb25zKCkucG9ydHMoKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZ3RrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9n
dGsucHkJKHJldmlzaW9uIDI1MTc5MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9n
dGsucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBjbGFzcyBHdGtQb3J0KFBv
cnQpOgogICAgICAgICByZXR1cm4gc2VhcmNoX3BhdGhzCiAKICAgICBkZWYgZGVmYXVsdF9iYXNl
bGluZV9zZWFyY2hfcGF0aChzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHJldHVybiBtYXAoc2Vs
Zi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlbGYuX3NlYXJjaF9wYXRocygpKQorICAgICAgICBy
ZXR1cm4gbGlzdChtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlbGYuX3NlYXJjaF9w
YXRocygpKSkKIAogICAgIGRlZiBfcG9ydF9zcGVjaWZpY19leHBlY3RhdGlvbnNfZmlsZXMoc2Vs
ZiwgKiprd2FyZ3MpOgogICAgICAgICByZXR1cm4gW3NlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
Ll93ZWJraXRfYmFzZWxpbmVfcGF0aChwKSwgJ1Rlc3RFeHBlY3RhdGlvbnMnKSBmb3IgcCBpbiBy
ZXZlcnNlZChzZWxmLl9zZWFyY2hfcGF0aHMoKSldCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvbGVha2RldGVjdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3IucHkJKHJldmlzaW9uIDI1MTc5MCkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDcgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQogCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5j
b21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5CiAK
IF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIApAQCAtNzgsOCArNzksOSBAQCBj
bGFzcyBMZWFrRGV0ZWN0b3Iob2JqZWN0KToKICAgICBkZWYgX3BhcnNlX2xlYWtzX291dHB1dChz
ZWxmLCBsZWFrc19vdXRwdXQpOgogICAgICAgICBpZiBub3QgbGVha3Nfb3V0cHV0OgogICAgICAg
ICAgICAgcmV0dXJuIDAsIDAsIDAKLSAgICAgICAgXywgY291bnQsIGJ5dGVzID0gcmUuc2VhcmNo
KHInUHJvY2VzcyAoP1A8cGlkPlxkKyk6ICg/UDxjb3VudD5cZCspIGxlYWtzPyBmb3IgKD9QPGJ5
dGVzPlxkKykgdG90YWwnLCBsZWFrc19vdXRwdXQpLmdyb3VwcygpCi0gICAgICAgIGV4Y2x1ZGVk
X21hdGNoID0gcmUuc2VhcmNoKHInKD9QPGV4Y2x1ZGVkPlxkKykgbGVha3M/IGV4Y2x1ZGVkJywg
bGVha3Nfb3V0cHV0KQorICAgICAgICBsZWFrc19vdXRwdXQgPSBlbmNvZGVfaWZfbmVjZXNzYXJ5
KGxlYWtzX291dHB1dCkKKyAgICAgICAgXywgY291bnQsIGJ5dGVzID0gcmUuc2VhcmNoKGInUHJv
Y2VzcyAoP1A8cGlkPlxcZCspOiAoP1A8Y291bnQ+XFxkKykgbGVha3M/IGZvciAoP1A8Ynl0ZXM+
XFxkKykgdG90YWwnLCBsZWFrc19vdXRwdXQpLmdyb3VwcygpCisgICAgICAgIGV4Y2x1ZGVkX21h
dGNoID0gcmUuc2VhcmNoKGInKD9QPGV4Y2x1ZGVkPlxcZCspIGxlYWtzPyBleGNsdWRlZCcsIGxl
YWtzX291dHB1dCkKICAgICAgICAgZXhjbHVkZWQgPSBleGNsdWRlZF9tYXRjaC5ncm91cCgnZXhj
bHVkZWQnKSBpZiBleGNsdWRlZF9tYXRjaCBlbHNlIDAKICAgICAgICAgcmV0dXJuIGludChjb3Vu
dCksIGludChleGNsdWRlZCksIGludChieXRlcykKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmluZC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kLnB5CShyZXZpc2lvbiAy
NTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdy
aW5kLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBAIGltcG9ydCBzdWJwcm9jZXNz
CiBmcm9tIHhtbC5kb20ubWluaWRvbSBpbXBvcnQgcGFyc2VTdHJpbmcKIGZyb20geG1sLnBhcnNl
cnMuZXhwYXQgaW1wb3J0IEV4cGF0RXJyb3IKIAorZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29k
ZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNvZGVfZm9yCisK
IF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCkBAIC0xMjcsNyArMTI5LDcg
QEAgY2xhc3MgVmFsZ3JpbmRFcnJvcjoKICAgICAgICAgICAgIGZvciBmcmFtZSBpbiBiYWNrdHJh
Y2VbMV06CiAgICAgICAgICAgICAgICAgYnVmICs9IChmcmFtZVtGVU5DVElPTl9OQU1FXSBvciBm
cmFtZVtJTlNUUlVDVElPTl9QT0lOVEVSXSkgKyAiXG4iCiAKLSAgICAgICAgICAgIGlucHV0ID0g
YnVmLmVuY29kZSgnbGF0aW4tMScpLnNwbGl0KCJcbiIpCisgICAgICAgICAgICBpbnB1dCA9IGJ1
Zi5lbmNvZGUoJ2xhdGluLTEnKS5zcGxpdChiIlxuIikKICAgICAgICAgICAgIGRlbWFuZ2xlZF9u
YW1lcyA9IFtzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWydjKytmaWx0JywgJy1uJywgbmFt
ZV0pIGZvciBuYW1lIGluIGlucHV0IGlmIG5hbWVdCiAKICAgICAgICAgICAgIGkgPSAwCkBAIC0x
NzIsOSArMTc0LDkgQEAgY2xhc3MgVmFsZ3JpbmRFcnJvcjoKIAogICAgICAgICBmb3IgZnJhbWUg
aW4gcmFuZ2UobGVuKHN1cHBsaW5lcykpOgogICAgICAgICAgICAgIyBSZXBsYWNlIHRoZSBhbHdh
eXMtY2hhbmdpbmcgYW5vbnltb3VzIG5hbWVzcGFjZSBwcmVmaXggd2l0aCAiKiIuCi0gICAgICAg
ICAgICBtID0gcmUubWF0Y2goIiggK2Z1bjopX1pOLipfR0xPQkFMX19OXy4qXC5jY18iICsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAiWzAtOWEtZkEtRl17OH1fWzAtOWEtZkEtRl17OH0oLiop
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGluZXNbZnJhbWVdKQorICAgICAgICAg
ICAgbSA9IHJlLm1hdGNoKHIiKCArZnVuOilfWk4uKl9HTE9CQUxfX05fLipcLmNjXyIgKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAiWzAtOWEtZkEtRl17OH1fWzAtOWEtZkEtRl17OH0oLiop
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcGxpbmVzW2ZyYW1lXSkKICAgICAgICAg
ICAgIGlmIG06CiAgICAgICAgICAgICAgICAgc3VwcGxpbmVzW2ZyYW1lXSA9ICIqIi5qb2luKG0u
Z3JvdXBzKCkpCiAKQEAgLTE5Niw3ICsxOTgsNyBAQCBjbGFzcyBWYWxncmluZEVycm9yOgogICAg
ICAgICAjIFRoaXMgaXMgYSBkZXZpY2UtaW5kZXBlbmRlbnQgaGFzaCBpZGVudGlmeWluZyB0aGUg
c3VwcHJlc3Npb24uCiAgICAgICAgICMgQnkgcHJpbnRpbmcgb3V0IHRoaXMgaGFzaCB3ZSBjYW4g
ZmluZCBkdXBsaWNhdGUgcmVwb3J0cyBiZXR3ZWVuIHRlc3RzIGFuZAogICAgICAgICAjIGRpZmZl
cmVudCBzaGFyZHMgcnVubmluZyBvbiBtdWx0aXBsZSBidWlsZGJvdHMKLSAgICAgICAgcmV0dXJu
IGludChoYXNobGliLm1kNShzZWxmLnVuaXF1ZV9zdHJpbmcoKSkuaGV4ZGlnZXN0KClbOjE2XSwg
MTYpCisgICAgICAgIHJldHVybiBpbnQoaGFzaGxpYi5tZDUoZW5jb2RlX2lmX25lY2Vzc2FyeShz
ZWxmLnVuaXF1ZV9zdHJpbmcoKSkpLmhleGRpZ2VzdCgpWzoxNl0sIDE2KQogCiAgICAgZGVmIF9f
aGFzaF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gaGFzaChzZWxmLnVuaXF1ZV9zdHJpbmcoKSkK
QEAgLTIyMiw3ICsyMjQsNyBAQCBjbGFzcyBMZWFrRGV0ZWN0b3JWYWxncmluZChvYmplY3QpOgog
ICAgICAgICAgICAgcGFyc2VkX3N0cmluZyA9IHBhcnNlU3RyaW5nKGxlYWtzX291dHB1dCkKICAg
ICAgICAgZXhjZXB0IEV4cGF0RXJyb3IgYXMgZToKICAgICAgICAgICAgIHBhcnNlX2ZhaWxlZCA9
IFRydWUKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoImNvdWxkIG5vdCBwYXJzZSAlczogJXMiICUg
KGxlYWtzX291dHB1dCwgZSkpCisgICAgICAgICAgICBfbG9nLmVycm9yKCJjb3VsZCBub3QgcGFy
c2UgJXM6ICVzIiAlIChkZWNvZGVfZm9yKGxlYWtzX291dHB1dCwgc3RyKSwgZSkpCiAgICAgICAg
ICAgICByZXR1cm4KIAogICAgICAgICBjdXJfcmVwb3J0X2Vycm9ycyA9IHNldCgpCkBAIC0yODMs
MTEgKzI4NSwxMiBAQCBjbGFzcyBMZWFrRGV0ZWN0b3JWYWxncmluZChvYmplY3QpOgogICAgICAg
ICBfbG9nLmluZm8oIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIikKICAgICAgICAgX2xvZy5pbmZvKCJTdXBwcmVzc2lvbnMgdXNlZDoiKQogICAg
ICAgICBfbG9nLmluZm8oIiAgY291bnQgbmFtZSIpCi0gICAgICAgIGZvciAobmFtZSwgY291bnQp
IGluIHNvcnRlZChzZWxmLl9zdXBwcmVzc2lvbnMuaXRlbXMoKSwga2V5PWxhbWJkYSAoaywgdik6
ICh2LCBrKSk6CisgICAgICAgIGZvciAobmFtZSwgY291bnQpIGluIHNvcnRlZChzZWxmLl9zdXBw
cmVzc2lvbnMuaXRlbXMoKSwga2V5PWxhbWJkYSBwYWlyOiAocGFpclsxXSwgcGFpclswXSkpOgog
ICAgICAgICAgICAgX2xvZy5pbmZvKCIlN2QgJXMiICUgKGNvdW50LCBuYW1lKSkKICAgICAgICAg
X2xvZy5pbmZvKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSIpCiAKICAgICAgICAgaWYgc2VsZi5fZXJyb3JzOgogICAgICAgICAgICAgX2xvZy5p
bmZvKCJWYWxncmluZCBkZXRlY3RlZCAlcyBsZWFrczoiICUgbGVuKHNlbGYuX2Vycm9ycykpCi0g
ICAgICAgICAgICBmb3IgbGVhayBpbiBzZWxmLl9lcnJvcnM6CisgICAgICAgICAgICAjIEZvcmNl
IHRoZSBzYW1lIG9yZGVyIGluIFB5dGhvbiAyIGFuZCBQeXRob24gMworICAgICAgICAgICAgZm9y
IGxlYWsgaW4gc29ydGVkKHNlbGYuX2Vycm9ycywga2V5PWxhbWJkYSBlcnJvcjogZXJyb3IudW5p
cXVlX3N0cmluZygpKToKICAgICAgICAgICAgICAgICBfbG9nLmluZm8obGVhaykKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3JpbmRfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rv
cl92YWxncmluZF91bml0dGVzdC5weQkocmV2aXNpb24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2xlYWtkZXRlY3Rvcl92YWxncmluZF91bml0dGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lz
dGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0
cHV0Q2FwdHVyZQorZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGlt
cG9ydCBkZWNvZGVfZm9yCiBmcm9tIHdlYmtpdHB5LnBvcnQubGVha2RldGVjdG9yX3ZhbGdyaW5k
IGltcG9ydCBMZWFrRGV0ZWN0b3JWYWxncmluZAogCiAKQEAgLTYxOSw0MCArNjIwLDYgQEAgU3Vw
cHJlc3Npb25zIHVzZWQ6CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogVmFsZ3JpbmQgZGV0ZWN0ZWQgMiBsZWFrczoKIExlYWtfRGVmaW5pdGVs
eUxvc3QKLTggYnl0ZXMgaW4gMSBibG9ja3MgYXJlIGRlZmluaXRlbHkgbG9zdCBpbiBsb3NzIHJl
Y29yZCA0MjEgb2YgNyw5NzIKLSAgb3BlcmF0b3IgbmV3KHVuc2lnbmVkIGxvbmcpICgvdXNyL2xp
Yi92YWxncmluZC92Z3ByZWxvYWRfbWVtY2hlY2stYW1kNjQtbGludXguc28pCi0gIHN0ZDo6X0Z1
bmN0aW9uX2Jhc2U6Ol9CYXNlX21hbmFnZXI8V2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tO
YXZpZ2F0aW9uUG9saWN5KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25zdCYsIFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIHZv
aWQgKCopKHZvaWQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29uc3QmLCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgYm9vbCksIHZvaWQqKTo6e2xhbWJkYShXZWJDb3Jl
OjpQb2xpY3lBY3Rpb24pIzF9Pjo6X01fbWFuYWdlcihzdGQ6Ol9BbnlfZGF0YSYsIHN0ZDo6X0Z1
bmN0aW9uX2Jhc2U6Ol9CYXNlX21hbmFnZXI8V2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tO
YXZpZ2F0aW9uUG9saWN5KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25zdCYsIFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIHZv
aWQgKCopKHZvaWQqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29uc3QmLCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgYm9vbCksIHZvaWQqKTo6e2xhbWJkYShXZWJDb3Jl
OjpQb2xpY3lBY3Rpb24pIzF9PiBjb25zdCYsIHN0ZDo6X01hbmFnZXJfb3BlcmF0aW9uKSAoL2hv
bWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS8ubGlicy9saWJ3ZWJraXRndGstMy4w
LnNvLjAuMTkuMykKLSAgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fbmV3ICgvaG9tZS91c2Vy
L1dlYktpdC9XZWJLaXRCdWlsZC9SZWxlYXNlLy5saWJzL2xpYndlYmtpdGd0ay0zLjAuc28uMC4x
OS4zKQotICBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiBjb25zdCYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBjb25zdCYsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGb3Jt
U3RhdGU+LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYkNvcmU6OlBvbGljeUFjdGlvbik+KSAoL2hv
bWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS8ubGlicy9saWJ3ZWJraXRndGstMy4w
LnNvLjAuMTkuMykKLSAgV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb25zdCYsIFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIHZvaWQgKCopKHZvaWQq
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29uc3QmLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6Rm9ybVN0YXRlPiwgYm9vbCksIHZvaWQqKSAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVp
bGQvUmVsZWFzZS8ubGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAuMTkuMykKLSAgV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9y
bVN0YXRlPikgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxpYnMvbGli
d2Via2l0Z3RrLTMuMC5zby4wLjE5LjMpCi0gIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKikgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1Jl
bGVhc2UvLmxpYnMvbGlid2Via2l0Z3RrLTMuMC5zby4wLjE5LjMpCi0gIFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QgY29uc3QmKSAoL2hvbWUvdXNl
ci9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS8ubGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAu
MTkuMykKLSAgd2Via2l0X3dlYl9mcmFtZV9sb2FkX3VyaSAoL2hvbWUvdXNlci9XZWJLaXQvV2Vi
S2l0QnVpbGQvUmVsZWFzZS8ubGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAuMTkuMykKLSAgcnVu
VGVzdChzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6
OmFsbG9jYXRvcjxjaGFyPiA+IGNvbnN0JikgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxk
L1JlbGVhc2UvUHJvZ3JhbXMvRHVtcFJlbmRlclRyZWUpCi0gIHJ1blRlc3RpbmdTZXJ2ZXJMb29w
KCkgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvUHJvZ3JhbXMvRHVtcFJl
bmRlclRyZWUpCi0gIG1haW4gKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2Uv
UHJvZ3JhbXMvRHVtcFJlbmRlclRyZWUpCi1TdXBwcmVzc2lvbiAoZXJyb3IgaGFzaD0jMDQ0OUQz
RUQyNTNGRTFGOSMpOgotCi17Ci0gICA8aW5zZXJ0X2Ffc3VwcHJlc3Npb25fbmFtZV9oZXJlPgot
ICAgTWVtY2hlY2s6TGVhawotICAgZnVuOl9abncqCi0gICBmdW46X1pOU3QxNF9GdW5jdGlvbl9i
YXNlMTNfQmFzZV9tYW5hZ2VySVpON1dlYkNvcmUxM1BvbGljeUNoZWNrZXIyMWNoZWNrTmF2aWdh
dGlvblBvbGljeUVSS05TMV8xNVJlc291cmNlUmVxdWVzdEVQTlMxXzE0RG9jdW1lbnRMb2FkZXJF
TjNXVEYxMFBhc3NSZWZQdHJJTlMxXzlGb3JtU3RhdGVFRUVQRnZQdlM1X1NCX2JFU0NfRVVsTlMx
XzEyUG9saWN5QWN0aW9uRUVfRTEwX01fbWFuYWdlckVSU3Q5X0FueV9kYXRhUktTSV9TdDE4X01h
bmFnZXJfb3BlcmF0aW9uCi0gICBmdW46d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fbmV3Ci0g
ICBmdW46X1pONldlYktpdDE3RnJhbWVMb2FkZXJDbGllbnQzOWRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkVSS043V2ViQ29yZTE2TmF2aWdhdGlvbkFjdGlvbkVSS05TMV8x
NVJlc291cmNlUmVxdWVzdEVOM1dURjEwUGFzc1JlZlB0cklOUzFfOUZvcm1TdGF0ZUVFRVN0OGZ1
bmN0aW9uSUZ2TlMxXzEyUG9saWN5QWN0aW9uRUVFCi0gICBmdW46X1pON1dlYkNvcmUxM1BvbGlj
eUNoZWNrZXIyMWNoZWNrTmF2aWdhdGlvblBvbGljeUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVBO
U18xNERvY3VtZW50TG9hZGVyRU4zV1RGMTBQYXNzUmVmUHRySU5TXzlGb3JtU3RhdGVFRUVQRnZQ
dlMzX1M5X2JFU0FfCi0gICBmdW46X1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMjJsb2FkV2l0aERv
Y3VtZW50TG9hZGVyRVBOU18xNERvY3VtZW50TG9hZGVyRU5TXzEzRnJhbWVMb2FkVHlwZUVOM1dU
RjEwUGFzc1JlZlB0cklOU185Rm9ybVN0YXRlRUVFCi0gICBmdW46X1pON1dlYkNvcmUxMUZyYW1l
TG9hZGVyNGxvYWRFUE5TXzE0RG9jdW1lbnRMb2FkZXJFCi0gICBmdW46X1pON1dlYkNvcmUxMUZy
YW1lTG9hZGVyNGxvYWRFUktOU18xNkZyYW1lTG9hZFJlcXVlc3RFCi0gICBmdW46d2Via2l0X3dl
Yl9mcmFtZV9sb2FkX3VyaQotICAgZnVuOl9aTDdydW5UZXN0UktTcwotICAgZnVuOl9aTDIwcnVu
VGVzdGluZ1NlcnZlckxvb3B2Ci0gICBmdW46bWFpbgotfQotCi0KLUxlYWtfRGVmaW5pdGVseUxv
c3QKIDggYnl0ZXMgaW4gMSBibG9ja3MgYXJlIGRlZmluaXRlbHkgbG9zdCBpbiBsb3NzIHJlY29y
ZCA0MjIgb2YgNyw5NzIKICAgb3BlcmF0b3IgbmV3KHVuc2lnbmVkIGxvbmcpICgvdXNyL2xpYi92
YWxncmluZC92Z3ByZWxvYWRfbWVtY2hlY2stYW1kNjQtbGludXguc28pCiAgIHN0ZDo6X0Z1bmN0
aW9uX2Jhc2U6Ol9CYXNlX21hbmFnZXI8V2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tDb250
ZW50UG9saWN5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgY29uc3QmLCB2b2lkICgqKSh2b2lk
KiwgV2ViQ29yZTo6UG9saWN5QWN0aW9uKSwgdm9pZCopOjp7bGFtYmRhKFdlYkNvcmU6OlBvbGlj
eUFjdGlvbikjMX0+OjpfTV9tYW5hZ2VyKHN0ZDo6X0FueV9kYXRhJiwgc3RkOjpfRnVuY3Rpb25f
YmFzZTo6X0Jhc2VfbWFuYWdlcjxXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja0NvbnRlbnRQ
b2xpY3koV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBjb25zdCYsIHZvaWQgKCopKHZvaWQqLCBX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24pLCB2b2lkKik6OntsYW1iZGEoV2ViQ29yZTo6UG9saWN5QWN0
aW9uKSMxfT4gY29uc3QmLCBzdGQ6Ol9NYW5hZ2VyX29wZXJhdGlvbikgKC9ob21lL3VzZXIvV2Vi
S2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxpYnMvbGlid2Via2l0Z3RrLTMuMC5zby4wLjE5LjMp
CkBAIC02OTgsNiArNjY1LDQwIEBAIFN1cHByZXNzaW9uIChlcnJvciBoYXNoPSM4MzEzREVCMTZC
MDY5NDMKIH0KIAogCitMZWFrX0RlZmluaXRlbHlMb3N0Cis4IGJ5dGVzIGluIDEgYmxvY2tzIGFy
ZSBkZWZpbml0ZWx5IGxvc3QgaW4gbG9zcyByZWNvcmQgNDIxIG9mIDcsOTcyCisgIG9wZXJhdG9y
IG5ldyh1bnNpZ25lZCBsb25nKSAoL3Vzci9saWIvdmFsZ3JpbmQvdmdwcmVsb2FkX21lbWNoZWNr
LWFtZDY0LWxpbnV4LnNvKQorICBzdGQ6Ol9GdW5jdGlvbl9iYXNlOjpfQmFzZV9tYW5hZ2VyPFdl
YkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgY29uc3QmLCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCB2b2lkICgqKSh2b2lkKiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IGNvbnN0JiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGJv
b2wpLCB2b2lkKik6OntsYW1iZGEoV2ViQ29yZTo6UG9saWN5QWN0aW9uKSMxfT46Ol9NX21hbmFn
ZXIoc3RkOjpfQW55X2RhdGEmLCBzdGQ6Ol9GdW5jdGlvbl9iYXNlOjpfQmFzZV9tYW5hZ2VyPFdl
YkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgY29uc3QmLCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCB2b2lkICgqKSh2b2lkKiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IGNvbnN0JiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGJv
b2wpLCB2b2lkKik6OntsYW1iZGEoV2ViQ29yZTo6UG9saWN5QWN0aW9uKSMxfT4gY29uc3QmLCBz
dGQ6Ol9NYW5hZ2VyX29wZXJhdGlvbikgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1Jl
bGVhc2UvLmxpYnMvbGlid2Via2l0Z3RrLTMuMC5zby4wLjE5LjMpCisgIHdlYmtpdF93ZWJfcG9s
aWN5X2RlY2lzaW9uX25ldyAoL2hvbWUvdXNlci9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS8u
bGlicy9saWJ3ZWJraXRndGstMy4wLnNvLjAuMTkuMykKKyAgV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYkNvcmU6Ok5h
dmlnYXRpb25BY3Rpb24gY29uc3QmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29uc3QmLCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgc3RkOjpmdW5jdGlvbjx2b2lkIChX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24pPikgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1Jl
bGVhc2UvLmxpYnMvbGlid2Via2l0Z3RrLTMuMC5zby4wLjE5LjMpCisgIFdlYkNvcmU6OlBvbGlj
eUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
Y29uc3QmLCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpGb3JtU3RhdGU+LCB2b2lkICgqKSh2b2lkKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IGNv
bnN0JiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGJvb2wpLCB2b2lkKikg
KC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxpYnMvbGlid2Via2l0Z3Rr
LTMuMC5zby4wLjE5LjMpCisgIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50
TG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZSwg
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pICgvaG9tZS91c2VyL1dlYktpdC9X
ZWJLaXRCdWlsZC9SZWxlYXNlLy5saWJzL2xpYndlYmtpdGd0ay0zLjAuc28uMC4xOS4zKQorICBX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopICgvaG9t
ZS91c2VyL1dlYktpdC9XZWJLaXRCdWlsZC9SZWxlYXNlLy5saWJzL2xpYndlYmtpdGd0ay0zLjAu
c28uMC4xOS4zKQorICBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZChXZWJDb3JlOjpGcmFtZUxv
YWRSZXF1ZXN0IGNvbnN0JikgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2Uv
LmxpYnMvbGlid2Via2l0Z3RrLTMuMC5zby4wLjE5LjMpCisgIHdlYmtpdF93ZWJfZnJhbWVfbG9h
ZF91cmkgKC9ob21lL3VzZXIvV2ViS2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvLmxpYnMvbGlid2Vi
a2l0Z3RrLTMuMC5zby4wLjE5LjMpCisgIHJ1blRlc3Qoc3RkOjpiYXNpY19zdHJpbmc8Y2hhciwg
c3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCYpICgv
aG9tZS91c2VyL1dlYktpdC9XZWJLaXRCdWlsZC9SZWxlYXNlL1Byb2dyYW1zL0R1bXBSZW5kZXJU
cmVlKQorICBydW5UZXN0aW5nU2VydmVyTG9vcCgpICgvaG9tZS91c2VyL1dlYktpdC9XZWJLaXRC
dWlsZC9SZWxlYXNlL1Byb2dyYW1zL0R1bXBSZW5kZXJUcmVlKQorICBtYWluICgvaG9tZS91c2Vy
L1dlYktpdC9XZWJLaXRCdWlsZC9SZWxlYXNlL1Byb2dyYW1zL0R1bXBSZW5kZXJUcmVlKQorU3Vw
cHJlc3Npb24gKGVycm9yIGhhc2g9IzA0NDlEM0VEMjUzRkUxRjkjKToKKworeworICAgPGluc2Vy
dF9hX3N1cHByZXNzaW9uX25hbWVfaGVyZT4KKyAgIE1lbWNoZWNrOkxlYWsKKyAgIGZ1bjpfWm53
KgorICAgZnVuOl9aTlN0MTRfRnVuY3Rpb25fYmFzZTEzX0Jhc2VfbWFuYWdlcklaTjdXZWJDb3Jl
MTNQb2xpY3lDaGVja2VyMjFjaGVja05hdmlnYXRpb25Qb2xpY3lFUktOUzFfMTVSZXNvdXJjZVJl
cXVlc3RFUE5TMV8xNERvY3VtZW50TG9hZGVyRU4zV1RGMTBQYXNzUmVmUHRySU5TMV85Rm9ybVN0
YXRlRUVFUEZ2UHZTNV9TQl9iRVNDX0VVbE5TMV8xMlBvbGljeUFjdGlvbkVFX0UxMF9NX21hbmFn
ZXJFUlN0OV9BbnlfZGF0YVJLU0lfU3QxOF9NYW5hZ2VyX29wZXJhdGlvbgorICAgZnVuOndlYmtp
dF93ZWJfcG9saWN5X2RlY2lzaW9uX25ldworICAgZnVuOl9aTjZXZWJLaXQxN0ZyYW1lTG9hZGVy
Q2xpZW50MzlkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25FUktON1dlYkNv
cmUxNk5hdmlnYXRpb25BY3Rpb25FUktOUzFfMTVSZXNvdXJjZVJlcXVlc3RFTjNXVEYxMFBhc3NS
ZWZQdHJJTlMxXzlGb3JtU3RhdGVFRUVTdDhmdW5jdGlvbklGdk5TMV8xMlBvbGljeUFjdGlvbkVF
RQorICAgZnVuOl9aTjdXZWJDb3JlMTNQb2xpY3lDaGVja2VyMjFjaGVja05hdmlnYXRpb25Qb2xp
Y3lFUktOU18xNVJlc291cmNlUmVxdWVzdEVQTlNfMTREb2N1bWVudExvYWRlckVOM1dURjEwUGFz
c1JlZlB0cklOU185Rm9ybVN0YXRlRUVFUEZ2UHZTM19TOV9iRVNBXworICAgZnVuOl9aTjdXZWJD
b3JlMTFGcmFtZUxvYWRlcjIybG9hZFdpdGhEb2N1bWVudExvYWRlckVQTlNfMTREb2N1bWVudExv
YWRlckVOU18xM0ZyYW1lTG9hZFR5cGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOUZvcm1TdGF0ZUVF
RQorICAgZnVuOl9aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjRsb2FkRVBOU18xNERvY3VtZW50TG9h
ZGVyRQorICAgZnVuOl9aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjRsb2FkRVJLTlNfMTZGcmFtZUxv
YWRSZXF1ZXN0RQorICAgZnVuOndlYmtpdF93ZWJfZnJhbWVfbG9hZF91cmkKKyAgIGZ1bjpfWkw3
cnVuVGVzdFJLU3MKKyAgIGZ1bjpfWkwyMHJ1blRlc3RpbmdTZXJ2ZXJMb29wdgorICAgZnVuOm1h
aW4KK30KKworCiAiIiIKIAogdmFsZ3JpbmRfb3V0cHV0X2NwcGZpbHRfbWFwID0gewpAQCAtODA3
LDcgKzgwOCw3IEBAIFN1cHByZXNzaW9ucyB1c2VkOgogCiBkZWYgbW9ja19ydW5fY3BwZmlsdF9j
b21tYW5kKGFyZ3MpOgogICAgIGlmIGFyZ3NbMF0gPT0gJ2MrK2ZpbHQnOgotICAgICAgICByZXR1
cm4gdmFsZ3JpbmRfb3V0cHV0X2NwcGZpbHRfbWFwW2FyZ3NbMl1dCisgICAgICAgIHJldHVybiB2
YWxncmluZF9vdXRwdXRfY3BwZmlsdF9tYXBbZGVjb2RlX2ZvcihhcmdzWzJdLCBzdHIpXQogICAg
IHJldHVybiAiIgogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9n
ZXRfY3Jhc2hfbG9nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9saW51eF9nZXRfY3Jhc2hfbG9nLnB5CShyZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weQkod29ya2luZyBjb3B5KQpA
QCAtMzYsNiArMzYsNyBAQCBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCiAKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9pZl9uZWNl
c3NhcnkKIAogCiBjbGFzcyBHREJDcmFzaExvZ0dlbmVyYXRvcihvYmplY3QpOgpAQCAtNzUsNyAr
NzYsNyBAQCBjbGFzcyBHREJDcmFzaExvZ0dlbmVyYXRvcihvYmplY3QpOgogICAgICAgICAgICAg
dHJ5OgogICAgICAgICAgICAgICAgIGluZm8gPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQo
Y29yZWR1bXBjdGwgKyBbJ2luZm8nLCAiLS1zaW5jZT0iICsgdGltZS5zdHJmdGltZSgiJWEgJVkt
JW0tJWQgJUg6JU06JVMgJVoiLCB0aW1lLmxvY2FsdGltZShzZWxmLm5ld2VyX3RoYW4pKV0sCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybl9zdGRlcnI9VHJ1ZSkKLSAgICAgICAgICAgIGV4Y2Vw
dCBTY3JpcHRFcnJvciwgT1NFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCAoU2NyaXB0RXJyb3Is
IE9TRXJyb3IpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGZvdW5k
X25ld2VyID0gRmFsc2UKQEAgLTEyOSw3ICsxMzAsNyBAQCBjbGFzcyBHREJDcmFzaExvZ0dlbmVy
YXRvcihvYmplY3QpOgogICAgICAgICBlbGlmIGNvcmVkdW1wY3RsOgogICAgICAgICAgICAgY3Jh
c2hfbG9nLCBlcnJvcnMgPSBzZWxmLl9nZXRfdHJhY2VfZnJvbV9zeXN0ZW1kKGNvcmVkdW1wY3Rs
LCBwaWRfcmVwcmVzZW50YXRpb24pCiAKLSAgICAgICAgc3RkZXJyX2xpbmVzID0gZXJyb3JzICsg
c3RyKHN0ZGVyciBvciAnPGVtcHR5PicpLmRlY29kZSgndXRmOCcsICdpZ25vcmUnKS5zcGxpdGxp
bmVzKCkKKyAgICAgICAgc3RkZXJyX2xpbmVzID0gZXJyb3JzICsgZGVjb2RlX2lmX25lY2Vzc2Fy
eShzdHIoc3RkZXJyIG9yICc8ZW1wdHk+JyksIGVycm9ycz0naWdub3JlJykuc3BsaXRsaW5lcygp
CiAgICAgICAgIGVycm9yc19zdHIgPSAnXG4nLmpvaW4oKCdTVERFUlI6ICcgKyBzdGRlcnJfbGlu
ZSkgZm9yIHN0ZGVycl9saW5lIGluIHN0ZGVycl9saW5lcykKICAgICAgICAgY3BwZmlsdF9wcm9j
ID0gc2VsZi5fZXhlY3V0aXZlLnBvcGVuKAogICAgICAgICAgICAgWydjKytmaWx0J10sIHN0ZGlu
PXN1YnByb2Nlc3MuUElQRSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nl
c3MuUElQRSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWMucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weQkocmV2aXNpb24gMjUx
NzkwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weQkod29ya2luZyBjb3B5
KQpAQCAtMjIyLDcgKzIyMiw3IEBAIGNsYXNzIE1hY1BvcnQoRGFyd2luUG9ydCk6CiAgICAgICAg
IHNlbGYuX2hlbHBlciA9IHNlbGYuX2V4ZWN1dGl2ZS5wb3Blbihhcmd1bWVudHMsCiAgICAgICAg
ICAgICBzdGRpbj1zZWxmLl9leGVjdXRpdmUuUElQRSwgc3Rkb3V0PXNlbGYuX2V4ZWN1dGl2ZS5Q
SVBFLCBzdGRlcnI9Tm9uZSkKICAgICAgICAgaXNfcmVhZHkgPSBzZWxmLl9oZWxwZXIuc3Rkb3V0
LnJlYWRsaW5lKCkKLSAgICAgICAgaWYgbm90IGlzX3JlYWR5LnN0YXJ0c3dpdGgoJ3JlYWR5Jyk6
CisgICAgICAgIGlmIG5vdCBpc19yZWFkeS5zdGFydHN3aXRoKGIncmVhZHknKToKICAgICAgICAg
ICAgIF9sb2cuZXJyb3IoIkxheW91dFRlc3RIZWxwZXIgY291bGQgbm90IHN0YXJ0IikKICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMjQyLDcgKzI0Miw3
IEBAIGNsYXNzIE1hY1BvcnQoRGFyd2luUG9ydCk6CiAgICAgICAgIGlmIHNlbGYuX2hlbHBlcjoK
ICAgICAgICAgICAgIF9sb2cuZGVidWcoIlN0b3BwaW5nIExheW91dFRlc3RIZWxwZXIiKQogICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX2hlbHBlci5zdGRpbi53cml0ZSgi
eFxuIikKKyAgICAgICAgICAgICAgICBzZWxmLl9oZWxwZXIuc3RkaW4ud3JpdGUoYiJ4XG4iKQog
ICAgICAgICAgICAgICAgIHNlbGYuX2hlbHBlci5zdGRpbi5jbG9zZSgpCiAgICAgICAgICAgICAg
ICAgc2VsZi5faGVscGVyLndhaXQoKQogICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbW9ja19kcnRfdW5pdHRl
c3QucHkJKHJldmlzaW9uIDI1MTc5MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9t
b2NrX2RydF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogaW1w
b3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBu
ZXdzdHJpbmdpbwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBp
bXBvcnQgTW9ja1N5c3RlbUhvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0
aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgbW9ja19k
cnQKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQogZnJvbSB3ZWJraXRw
eS5wb3J0IGltcG9ydCB0ZXN0CkBAIC0xNDYsOSArMTQ2LDkgQEAgY2xhc3MgTW9ja0RSVFRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgcGl4ZWxfdGVzdHMsIGV4cGVjdGVkX2No
ZWNrc3VtLCBkcnRfb3V0cHV0LCBkcnRfaW5wdXQ9Tm9uZSwgZXhwZWN0ZWRfdGV4dD1leHBlY3Rl
ZF90ZXh0KQogCiAgICAgICAgIGFyZ3MgPSBbJy0tcGxhdGZvcm0nLCBwb3J0X25hbWVdICsgc2Vs
Zi5leHRyYV9hcmdzKHBpeGVsX3Rlc3RzKQotICAgICAgICBzdGRpbiA9IG5ld3N0cmluZ2lvLlN0
cmluZ0lPKGRydF9pbnB1dCkKLSAgICAgICAgc3Rkb3V0ID0gbmV3c3RyaW5naW8uU3RyaW5nSU8o
KQotICAgICAgICBzdGRlcnIgPSBuZXdzdHJpbmdpby5TdHJpbmdJTygpCisgICAgICAgIHN0ZGlu
ID0gU3RyaW5nSU8oZHJ0X2lucHV0KQorICAgICAgICBzdGRvdXQgPSBTdHJpbmdJTygpCisgICAg
ICAgIHN0ZGVyciA9IFN0cmluZ0lPKCkKICAgICAgICAgb3B0aW9ucywgYXJncyA9IG1vY2tfZHJ0
LnBhcnNlX29wdGlvbnMoYXJncykKIAogICAgICAgICBkcnQgPSBzZWxmLm1ha2VfZHJ0KG9wdGlv
bnMsIGFyZ3MsIGhvc3QsIHN0ZGluLCBzdGRvdXQsIHN0ZGVycikKQEAgLTE1NiwxNyArMTU2LDE1
IEBAIGNsYXNzIE1vY2tEUlRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlcywgMCkKIAotICAgICAgICAjIFdlIHVzZSB0aGUgU3RyaW5nSU8uYnVm
bGlzdCBoZXJlIGluc3RlYWQgb2YgZ2V0dmFsdWUoKSBiZWNhdXNlCi0gICAgICAgICMgdGhlIFN0
cmluZ0lPIG1pZ2h0IGJlIGEgbWl4IG9mIHVuaWNvZGUvYXNjaWkgYW5kIDgtYml0IHN0cmluZ3Mu
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmJ1Zmxpc3QsIGRydF9vdXRwdXQpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICcnLmpvaW4oZHJ0X291
dHB1dCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICcjRU9G
XG4nKQogCiAgICAgZGVmIHRlc3RfbWFpbihzZWxmKToKICAgICAgICAgaG9zdCA9IE1vY2tTeXN0
ZW1Ib3N0KCkKICAgICAgICAgdGVzdC5hZGRfdW5pdF90ZXN0c190b19tb2NrX2ZpbGVzeXN0ZW0o
aG9zdC5maWxlc3lzdGVtKQotICAgICAgICBzdGRpbiA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKCkK
LSAgICAgICAgc3Rkb3V0ID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQotICAgICAgICBzdGRlcnIg
PSBuZXdzdHJpbmdpby5TdHJpbmdJTygpCisgICAgICAgIHN0ZGluID0gU3RyaW5nSU8oKQorICAg
ICAgICBzdGRvdXQgPSBTdHJpbmdJTygpCisgICAgICAgIHN0ZGVyciA9IFN0cmluZ0lPKCkKICAg
ICAgICAgcmVzID0gbW9ja19kcnQubWFpbihbJy0tcGxhdGZvcm0nLCAndGVzdCddICsgc2VsZi5l
eHRyYV9hcmdzKEZhbHNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0LCBzdGRp
biwgc3Rkb3V0LCBzdGRlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAwKQpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHkJKHJldmlz
aW9uIDI1MTc5MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNl
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIGRlZiBiaW5kX21vY2tfYXBwbGVf
YWRkaXRpb25zKCk6CiAgICAgICAgICAgICByZXN1bHQubWFwcGluZ1tJTlRFUk5BTF9UQUJMRV0g
PSB7fQogICAgICAgICAgICAgZm9yIHBsYXRmb3JtIGluIHJlc3VsdC5tYXBwaW5nW1BVQkxJQ19U
QUJMRV06CiAgICAgICAgICAgICAgICAgcmVzdWx0Lm1hcHBpbmdbSU5URVJOQUxfVEFCTEVdW3Bs
YXRmb3JtXSA9IHt9Ci0gICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZlcnNpb24gaW4gcmVzdWx0
Lm1hcHBpbmdbUFVCTElDX1RBQkxFXVtwbGF0Zm9ybV0uaXRlcml0ZW1zKCk6CisgICAgICAgICAg
ICAgICAgZm9yIG5hbWUsIHZlcnNpb24gaW4gcmVzdWx0Lm1hcHBpbmdbUFVCTElDX1RBQkxFXVtw
bGF0Zm9ybV0uaXRlbXMoKToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1hcHBpbmdbSU5U
RVJOQUxfVEFCTEVdW3BsYXRmb3JtXVsnYWRkLScgKyBuYW1lXSA9IHZlcnNpb24KICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQKIApAQCAtNDY5LDggKzQ2OSw4IEBAIGNsYXNzIFBvcnRUZXN0Q2Fz
ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGZvciBwYXRoIGluIHBvcnQuZXhwZWN0YXRp
b25zX2ZpbGVzKCk6CiAgICAgICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRfZmls
ZShwYXRoLCAnJykKICAgICAgICAgb3JkZXJlZF9kaWN0ID0gcG9ydC5leHBlY3RhdGlvbnNfZGlj
dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wYXRoX3RvX2dlbmVyaWNfdGVzdF9l
eHBlY3RhdGlvbnNfZmlsZSgpLCBvcmRlcmVkX2RpY3Qua2V5cygpWzBdKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCksIG9yZGVy
ZWRfZGljdC5rZXlzKClbcG9ydC50ZXN0X2V4cGVjdGF0aW9uc19maWxlX3Bvc2l0aW9uKCldKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucGF0aF90b19nZW5lcmljX3Rlc3RfZXhwZWN0
YXRpb25zX2ZpbGUoKSwgbGlzdChvcmRlcmVkX2RpY3Qua2V5cygpKVswXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwb3J0LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpLCBsaXN0
KG9yZGVyZWRfZGljdC5rZXlzKCkpW3BvcnQudGVzdF9leHBlY3RhdGlvbnNfZmlsZV9wb3NpdGlv
bigpXSkKIAogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoYWRkaXRpb25hbF9leHBlY3Rh
dGlvbnM9WycvdG1wL2ZvbycsICcvdG1wL2JhciddKQogICAgICAgICBwb3J0ID0gc2VsZi5tYWtl
X3BvcnQob3B0aW9ucz1vcHRpb25zKQpAQCAtNDc5LDggKzQ3OSw4IEBAIGNsYXNzIFBvcnRUZXN0
Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVf
dGV4dF9maWxlKCcvdG1wL2ZvbycsICdmb28nKQogICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndy
aXRlX3RleHRfZmlsZSgnL3RtcC9iYXInLCAnYmFyJykKICAgICAgICAgb3JkZXJlZF9kaWN0ID0g
cG9ydC5leHBlY3RhdGlvbnNfZGljdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JkZXJl
ZF9kaWN0LmtleXMoKVstMjpdLCBvcHRpb25zLmFkZGl0aW9uYWxfZXhwZWN0YXRpb25zKSAgIyBw
eWxpbnQ6IGRpc2FibGU9RTExMDEKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmRlcmVkX2Rp
Y3QudmFsdWVzKClbLTI6XSwgWydmb28nLCAnYmFyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChvcmRlcmVkX2RpY3Qua2V5cygpKVstMjpdLCBvcHRpb25zLmFkZGl0aW9uYWxfZXhw
ZWN0YXRpb25zKSAgIyBweWxpbnQ6IGRpc2FibGU9RTExMDEKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaXN0KG9yZGVyZWRfZGljdC52YWx1ZXMoKSlbLTI6XSwgWydmb28nLCAnYmFyJ10pCiAK
ICAgICBkZWYgdGVzdF9wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoc2VsZik6CiAgICAg
ICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCkBAIC01MzEsNyArNTMxLDcgQEAgY2xhc3MgUG9y
dFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgaG9zdC5maWxlc3lzdGVtLndy
aXRlX3RleHRfZmlsZSgnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdHdl
YmtpdHBvcnQvVGVzdEV4cGVjdGF0aW9ucycsCiAgICAgICAgICAgICAnQlVHX1RFU1RFWFBFQ1RB
VElPTlMgU0tJUCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IEZBSUxcbicpCiAg
ICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChob3N0PWhvc3QpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJycuam9pbihwb3J0LmV4cGVjdGF0aW9uc19kaWN0KCkudmFsdWVzKCkpLCAnQlVH
X1RFU1RFWFBFQ1RBVElPTlMgU0tJUCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9
IEZBSUxcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihsaXN0KHBvcnQuZXhw
ZWN0YXRpb25zX2RpY3QoKS52YWx1ZXMoKSkpLCAnQlVHX1RFU1RFWFBFQ1RBVElPTlMgU0tJUCA6
IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IEZBSUxcbicpCiAKICAgICBkZWYgdGVz
dF9idWlsZF9kcml2ZXIoc2VsZik6CiAgICAgICAgIG91dHB1dCA9IE91dHB1dENhcHR1cmUoKQpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CShyZXZpc2lvbiAyNTE3OTApCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05MSw3
ICs5MSw3IEBAIGNsYXNzIFdpblBvcnQoQXBwbGVQb3J0KToKIAogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKToKICAgICAgICAgQXBwbGVQb3J0Ll9faW5p
dF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3MpCi0gICAgICAgIGlmIHBvcnRfbmFt
ZS5zcGxpdCgnLScpID4gMToKKyAgICAgICAgaWYgbGVuKHBvcnRfbmFtZS5zcGxpdCgnLScpKSA+
IDE6CiAgICAgICAgICAgICBzZWxmLl9vc192ZXJzaW9uID0gVmVyc2lvbk5hbWVNYXAubWFwKGhv
c3QucGxhdGZvcm0pLmZyb21fbmFtZShwb3J0X25hbWUuc3BsaXQoJy0nKVsxXSlbMV0KICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX29zX3ZlcnNpb24gPSBzZWxmLmhvc3QucGxhdGZv
cm0ub3NfdmVyc2lvbgpAQCAtMTI3LDcgKzEyNyw3IEBAIGNsYXNzIFdpblBvcnQoQXBwbGVQb3J0
KToKICAgICAgICAgICAgICMgTm90ZSB3ZSBkbyBub3QgYWRkICd3azInIGhlcmUsIGV2ZW4gdGhv
dWdoIGl0J3MgaW5jbHVkZWQgaW4gX3NraXBwZWRfc2VhcmNoX3BhdGhzKCkuCiAgICAgICAgICMg
RklYTUU6IFBlcmhhcHMgd2Ugc2hvdWxkIGdldCB0aGlzIGxpc3QgZnJvbSBNYWNQb3J0PwogICAg
ICAgICBmYWxsYmFja19uYW1lcy5hcHBlbmQoJ21hYycpCi0gICAgICAgIHJlc3VsdCA9IG1hcChz
ZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgZmFsbGJhY2tfbmFtZXMpCisgICAgICAgIHJlc3Vs
dCA9IGxpc3QobWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBmYWxsYmFja19uYW1lcykp
CiAgICAgICAgIGlmIGFwcGxlX2FkZGl0aW9ucygpIGFuZCBnZXRhdHRyKGFwcGxlX2FkZGl0aW9u
cygpLCAibGF5b3V0X3Rlc3RzX3BhdGgiLCBOb25lKToKICAgICAgICAgICAgIHJlc3VsdC5pbnNl
cnQoMCwgc2VsZi5fZmlsZXN5c3RlbS5qb2luKGFwcGxlX2FkZGl0aW9ucygpLmxheW91dF90ZXN0
c19wYXRoKCksIHNlbGYucG9ydF9uYW1lKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdApAQCAtMjA1
LDcgKzIwNSw3IEBAIGNsYXNzIFdpblBvcnQoQXBwbGVQb3J0KToKIAogICAgIGRlZiB0ZXN0X3Nl
YXJjaF9wYXRoKHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgdGVzdF9mYWxsYmFja19uYW1lcyA9
IFtwYXRoIGZvciBwYXRoIGluIHNlbGYuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKSBpZiBub3QgcGF0
aC5zdGFydHN3aXRoKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKCdtYWMnKSldCi0gICAgICAg
IHJldHVybiBtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHRlc3RfZmFsbGJhY2tfbmFt
ZXMpCisgICAgICAgIHJldHVybiBsaXN0KG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwg
dGVzdF9mYWxsYmFja19uYW1lcykpCiAKICAgICBkZWYgX250c2RfbG9jYXRpb24oc2VsZik6CiAg
ICAgICAgIGlmICdQUk9HUkFNRklMRVMnIG5vdCBpbiBvcy5lbnZpcm9uOgpAQCAtMzQwLDcgKzM0
MCw3IEBAIGNsYXNzIFdpblBvcnQoQXBwbGVQb3J0KToKICAgICAgICAgICAgIHJldHVybiBOb25l
CiAgICAgICAgIGRlYnVnZ2VyX29wdGlvbnMgPSAnInswfSIgLXAgJWxkIC1lICVsZCAtZyAtbm9p
byAtbGluZXMgLWNmICJ7MX0iJy5mb3JtYXQoY3lncGF0aChudHNkX3BhdGgpLCBjeWdwYXRoKGNv
bW1hbmRfZmlsZSkpCiAgICAgICAgIHJlZ2lzdHJ5X3NldHRpbmdzID0geydEZWJ1Z2dlcic6IFtk
ZWJ1Z2dlcl9vcHRpb25zLCBzZWxmLl9SRUdfU1pdLCAnQXV0byc6IFsiMSIsIHNlbGYuX1JFR19T
Wl19Ci0gICAgICAgIGZvciBrZXksIHZhbHVlIGluIHJlZ2lzdHJ5X3NldHRpbmdzLml0ZXJpdGVt
cygpOgorICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiByZWdpc3RyeV9zZXR0aW5ncy5pdGVtcygp
OgogICAgICAgICAgICAgZm9yIGFyY2ggaW4gWyItLXdvdzMyIiwgIi0td293NjQiXToKICAgICAg
ICAgICAgICAgICBzZWxmLnByZXZpb3VzX2RlYnVnZ2VyX3ZhbHVlc1soYXJjaCwgc2VsZi5fSEtM
TSwga2V5KV0gPSBzZWxmLnJlYWRfcmVnaXN0cnlfdmFsdWUoc2VsZi5QT1NUX01PUlRFTV9ERUJV
R0dFUl9LRVksIGFyY2gsIHNlbGYuX0hLTE0sIGtleSkKICAgICAgICAgICAgICAgICBzZWxmLnBy
ZXZpb3VzX3dvdzY0X2RlYnVnZ2VyX3ZhbHVlc1soYXJjaCwgc2VsZi5fSEtMTSwga2V5KV0gPSBz
ZWxmLnJlYWRfcmVnaXN0cnlfdmFsdWUoc2VsZi5XT1c2NF9QT1NUX01PUlRFTV9ERUJVR0dFUl9L
RVksIGFyY2gsIHNlbGYuX0hLTE0sIGtleSkKQEAgLTM0OCwxNCArMzQ4LDE0IEBAIGNsYXNzIFdp
blBvcnQoQXBwbGVQb3J0KToKICAgICAgICAgICAgICAgICBzZWxmLndyaXRlX3JlZ2lzdHJ5X3Zh
bHVlKHNlbGYuV09XNjRfUE9TVF9NT1JURU1fREVCVUdHRVJfS0VZLCBhcmNoLCBzZWxmLl9IS0xN
LCBrZXksIHZhbHVlWzFdLCB2YWx1ZVswXSkKIAogICAgIGRlZiByZXN0b3JlX2NyYXNoX2xvZ19z
YXZpbmcoc2VsZik6Ci0gICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYucHJldmlvdXNfZGVi
dWdnZXJfdmFsdWVzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxm
LnByZXZpb3VzX2RlYnVnZ2VyX3ZhbHVlcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi53cml0
ZV9yZWdpc3RyeV92YWx1ZShzZWxmLlBPU1RfTU9SVEVNX0RFQlVHR0VSX0tFWSwga2V5WzBdLCBr
ZXlbMV0sIGtleVsyXSwgdmFsdWVbMV0sIHZhbHVlWzBdKQotICAgICAgICBmb3Iga2V5LCB2YWx1
ZSBpbiBzZWxmLnByZXZpb3VzX3dvdzY0X2RlYnVnZ2VyX3ZhbHVlcy5pdGVyaXRlbXMoKToKKyAg
ICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5wcmV2aW91c193b3c2NF9kZWJ1Z2dlcl92YWx1
ZXMuaXRlbXMoKToKICAgICAgICAgICAgIHNlbGYud3JpdGVfcmVnaXN0cnlfdmFsdWUoc2VsZi5X
T1c2NF9QT1NUX01PUlRFTV9ERUJVR0dFUl9LRVksIGtleVswXSwga2V5WzFdLCBrZXlbMl0sIHZh
bHVlWzFdLCB2YWx1ZVswXSkKIAogICAgIGRlZiBwcmV2ZW50X2Vycm9yX2RpYWxvZ3Moc2VsZik6
CiAgICAgICAgIHJlZ2lzdHJ5X3NldHRpbmdzID0geydEb250U2hvd1VJJzogWzEsIHNlbGYuX1JF
R19EV09SRF0sICdEaXNhYmxlZCc6IFsxLCBzZWxmLl9SRUdfRFdPUkRdfQotICAgICAgICBmb3Ig
a2V5LCB2YWx1ZSBpbiByZWdpc3RyeV9zZXR0aW5ncy5pdGVyaXRlbXMoKToKKyAgICAgICAgZm9y
IGtleSwgdmFsdWUgaW4gcmVnaXN0cnlfc2V0dGluZ3MuaXRlbXMoKToKICAgICAgICAgICAgIGZv
ciByb290IGluIFtzZWxmLl9IS0xNLCBzZWxmLl9IS0NVXToKICAgICAgICAgICAgICAgICBmb3Ig
YXJjaCBpbiBbIi0td293MzIiLCAiLS13b3c2NCJdOgogICAgICAgICAgICAgICAgICAgICBzZWxm
LnByZXZpb3VzX2Vycm9yX3JlcG9ydGluZ192YWx1ZXNbKGFyY2gsIHJvb3QsIGtleSldID0gc2Vs
Zi5yZWFkX3JlZ2lzdHJ5X3ZhbHVlKHNlbGYuV0lORE9XU19FUlJPUl9SRVBPUlRJTkdfS0VZLCBh
cmNoLCByb290LCBrZXkpCkBAIC0zNjQsOSArMzY0LDkgQEAgY2xhc3MgV2luUG9ydChBcHBsZVBv
cnQpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlX3JlZ2lzdHJ5X3ZhbHVlKHNlbGYu
V09XNjRfV0lORE9XU19FUlJPUl9SRVBPUlRJTkdfS0VZLCBhcmNoLCByb290LCBrZXksIHZhbHVl
WzFdLCB2YWx1ZVswXSkKIAogICAgIGRlZiBhbGxvd19lcnJvcl9kaWFsb2dzKHNlbGYpOgotICAg
ICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLnByZXZpb3VzX2Vycm9yX3JlcG9ydGluZ192YWx1
ZXMuaXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYucHJldmlvdXNf
ZXJyb3JfcmVwb3J0aW5nX3ZhbHVlcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi53cml0ZV9y
ZWdpc3RyeV92YWx1ZShzZWxmLldJTkRPV1NfRVJST1JfUkVQT1JUSU5HX0tFWSwga2V5WzBdLCBr
ZXlbMV0sIGtleVsyXSwgdmFsdWVbMV0sIHZhbHVlWzBdKQotICAgICAgICBmb3Iga2V5LCB2YWx1
ZSBpbiBzZWxmLnByZXZpb3VzX3dvdzY0X2Vycm9yX3JlcG9ydGluZ192YWx1ZXMuaXRlcml0ZW1z
KCk6CisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYucHJldmlvdXNfd293NjRfZXJyb3Jf
cmVwb3J0aW5nX3ZhbHVlcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi53cml0ZV9yZWdpc3Ry
eV92YWx1ZShzZWxmLldPVzY0X1dJTkRPV1NfRVJST1JfUkVQT1JUSU5HX0tFWSwga2V5WzBdLCBr
ZXlbMV0sIGtleVsyXSwgdmFsdWVbMV0sIHZhbHVlWzBdKQogCiAgICAgZGVmIGRlbGV0ZV9zZW1f
bG9ja3Moc2VsZik6CkBAIC00NjMsMTAgKzQ2MywxMCBAQCBjbGFzcyBXaW5DYWlyb1BvcnQoV2lu
UG9ydCk6CiAgICAgREVGQVVMVF9BUkNISVRFQ1RVUkUgPSAneDg2XzY0JwogCiAgICAgZGVmIGRl
ZmF1bHRfYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICByZXR1
cm4gbWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBzZWxmLl9zZWFyY2hfcGF0aHMoKSkK
KyAgICAgICAgcmV0dXJuIGxpc3QobWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBzZWxm
Ll9zZWFyY2hfcGF0aHMoKSkpCiAKICAgICBkZWYgX3BvcnRfc3BlY2lmaWNfZXhwZWN0YXRpb25z
X2ZpbGVzKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIG1hcChsYW1iZGEgeDogc2Vs
Zi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHgpLCAnVGVzdEV4
cGVjdGF0aW9ucycpLCByZXZlcnNlZChzZWxmLl9zZWFyY2hfcGF0aHMoKSkpCisgICAgICAgIHJl
dHVybiBsaXN0KG1hcChsYW1iZGEgeDogc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtp
dF9iYXNlbGluZV9wYXRoKHgpLCAnVGVzdEV4cGVjdGF0aW9ucycpLCByZXZlcnNlZChzZWxmLl9z
ZWFyY2hfcGF0aHMoKSkpKQogCiAgICAgZGVmIF9zZWFyY2hfcGF0aHMoc2VsZik6CiAgICAgICAg
IHBhdGhzID0gW10KQEAgLTUwNywxMCArNTA3LDEwIEBAIGNsYXNzIEZUV1BvcnQoV2luUG9ydCk6
CiAgICAgREVGQVVMVF9BUkNISVRFQ1RVUkUgPSAneDg2XzY0JwogCiAgICAgZGVmIGRlZmF1bHRf
YmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gbWFw
KHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBzZWxmLl9zZWFyY2hfcGF0aHMoKSkKKyAgICAg
ICAgcmV0dXJuIGxpc3QobWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBzZWxmLl9zZWFy
Y2hfcGF0aHMoKSkpCiAKICAgICBkZWYgX3BvcnRfc3BlY2lmaWNfZXhwZWN0YXRpb25zX2ZpbGVz
KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIG1hcChsYW1iZGEgeDogc2VsZi5fZmls
ZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHgpLCAnVGVzdEV4cGVjdGF0
aW9ucycpLCByZXZlcnNlZChzZWxmLl9zZWFyY2hfcGF0aHMoKSkpCisgICAgICAgIHJldHVybiBs
aXN0KG1hcChsYW1iZGEgeDogc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9iYXNl
bGluZV9wYXRoKHgpLCAnVGVzdEV4cGVjdGF0aW9ucycpLCByZXZlcnNlZChzZWxmLl9zZWFyY2hf
cGF0aHMoKSkpKQogCiAgICAgZGVmIF9zZWFyY2hfcGF0aHMoc2VsZik6CiAgICAgICAgIHBhdGhz
ID0gW10KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW5fdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbl91bml0dGVzdC5w
eQkocmV2aXNpb24gMjUxNzkwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbl91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBXaW5Qb3J0
VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0CiAKICAgICBkZWYgX2Fzc2VydF9zZWFyY2hfcGF0
aChzZWxmLCBleHBlY3RlZF9zZWFyY2hfcGF0aHMsIHZlcnNpb24sIHVzZV93ZWJraXQyPUZhbHNl
KToKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nd2luJywgb3NfdmVy
c2lvbj12ZXJzaW9uLCBvcHRpb25zPU1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj11c2Vf
d2Via2l0MikpCi0gICAgICAgIGFic29sdXRlX3NlYXJjaF9wYXRocyA9IG1hcChwb3J0Ll93ZWJr
aXRfYmFzZWxpbmVfcGF0aCwgZXhwZWN0ZWRfc2VhcmNoX3BhdGhzKQorICAgICAgICBhYnNvbHV0
ZV9zZWFyY2hfcGF0aHMgPSBsaXN0KG1hcChwb3J0Ll93ZWJraXRfYmFzZWxpbmVfcGF0aCwgZXhw
ZWN0ZWRfc2VhcmNoX3BhdGhzKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmJhc2Vs
aW5lX3NlYXJjaF9wYXRoKCksIGFic29sdXRlX3NlYXJjaF9wYXRocykKIAogICAgIGRlZiB0ZXN0
X2Jhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3dwZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
d3BlLnB5CShyZXZpc2lvbiAyNTE3OTApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
d3BlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTAgKzEwNywxMCBAQCBjbGFzcyBXUEVQb3J0
KFBvcnQpOgogICAgICAgICByZXR1cm4gW3NlbGYucG9ydF9uYW1lLCAnd2syJ10gKyBzZWxmLmdl
dF9vcHRpb24oImFkZGl0aW9uYWxfcGxhdGZvcm1fZGlyZWN0b3J5IiwgW10pCiAKICAgICBkZWYg
ZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHJl
dHVybiBtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlbGYuX3NlYXJjaF9wYXRocygp
KQorICAgICAgICByZXR1cm4gbGlzdChtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNl
bGYuX3NlYXJjaF9wYXRocygpKSkKIAogICAgIGRlZiBfcG9ydF9zcGVjaWZpY19leHBlY3RhdGlv
bnNfZmlsZXMoc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gbWFwKGxhbWJkYSB4OiBz
ZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoeCksICdUZXN0
RXhwZWN0YXRpb25zJyksIHJldmVyc2VkKHNlbGYuX3NlYXJjaF9wYXRocygpKSkKKyAgICAgICAg
cmV0dXJuIGxpc3QobWFwKGxhbWJkYSB4OiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Vi
a2l0X2Jhc2VsaW5lX3BhdGgoeCksICdUZXN0RXhwZWN0YXRpb25zJyksIHJldmVyc2VkKHNlbGYu
X3NlYXJjaF9wYXRocygpKSkpCiAKICAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnNfZmlsZV9wb3Np
dGlvbihzZWxmKToKICAgICAgICAgIyBXUEUgcG9ydCBiYXNlbGluZSBzZWFyY2ggcGF0aCBpcyB3
cGUgLT4gd2syIC0+IGdlbmVyaWMsIHNvIHBvcnQgdGVzdCBleHBlY3RhdGlvbnMgZmlsZSBpcyBh
dCB0aGlyZCB0byBsYXN0IHBvc2l0aW9uLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>