<?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>74138</bug_id>
          
          <creation_ts>2011-12-08 16:23:03 -0800</creation_ts>
          <short_desc>new-run-webkit-tests: clean up host/systemhost interactions in the port subsystem</short_desc>
          <delta_ts>2011-12-21 13:56:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74551</dependson>
    
    <dependson>74556</dependson>
    
    <dependson>74562</dependson>
    
    <dependson>74566</dependson>
    
    <dependson>74878</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>517892</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-08 16:23:03 -0800</bug_when>
    <thetext>new-run-webkit-tests: clean up host/systemhost interactions in the port subsystem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517906</commentid>
    <comment_count>1</comment_count>
      <attachid>118488</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-08 16:38:56 -0800</bug_when>
    <thetext>Created attachment 118488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517927</commentid>
    <comment_count>2</comment_count>
      <attachid>118492</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-08 16:59:02 -0800</bug_when>
    <thetext>Created attachment 118492
merge to r102395</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517945</commentid>
    <comment_count>3</comment_count>
      <attachid>118488</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-08 17:08:28 -0800</bug_when>
    <thetext>Comment on attachment 118488
Patch

I like the change.  It&apos;s a bit difficult to take in at this size, but I&apos;ll just come back for another reading. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517960</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-08 17:21:15 -0800</bug_when>
    <thetext>Yeah, unfortunately it was kind of an all-or-nothing thing in order to get all the tests to pass. I changed as little as I could while making the fundamental change to making the host parameter to Port() required :(. 

Take your time ... there&apos;s no real urgency on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520445</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-13 15:53:33 -0800</bug_when>
    <thetext>&quot;blip&quot; ... &quot;blip&quot; ... (keeping it on the radar)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520457</commentid>
    <comment_count>6</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-12-13 16:14:11 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Yeah, unfortunately it was kind of an all-or-nothing thing in order to get all the tests to pass. I changed as little as I could while making the fundamental change to making the host parameter to Port() required :(. 

Why not do patches leading up to making the host parameter to Port required?

You could use host= at the calling sites and making it the first parameter (which seems possible because all parameters are optional now). 

The final patch would make the parameter required and remove host= in calling sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520462</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-13 16:20:10 -0800</bug_when>
    <thetext>okay, admittedly I could probably break this up into a few smaller patches, but I was hoping to not have to spend the time to do so. I believe Eric has looked at this a little bit, so I&apos;ll let him say if he thinks this is not unreasonable to review as is, or if he&apos;d like me to break it up. 

The actual patch isn&apos;t very complicated; it&apos;s mostly just search&amp;replace with a few other spots that have actual changes as noted in the ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520524</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-13 17:31:42 -0800</bug_when>
    <thetext>(I can take a look this evening or tomorrow morning.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520553</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-13 18:06:10 -0800</bug_when>
    <thetext>I&apos;ve looked at it in part a couple times today.  But never made it all the way through.

I agree with Levin, this could be done in pieces.  That certainly would make this a quicker review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520555</commentid>
    <comment_count>10</comment_count>
      <attachid>118492</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-13 18:07:03 -0800</bug_when>
    <thetext>Comment on attachment 118492
merge to r102395

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

&gt; Tools/ChangeLog:13
&gt; +        2) Unit tests for the Port objects can use a full MockHost

Seems slightly dangerous if in practice Port() can only be expected to have a SystemHost.  Is this just a partial step along that goal?

&gt; Tools/ChangeLog:18
&gt; +        3) the TestPort object no longer modifies the (mock) filesystem at
&gt; +           all; clients are required to call
&gt; +           add_unit_tests_to_mock_filesystem() to ensure that the system is set
&gt; +           up correctly. The MockHost() object takes care of this for
&gt; +           most callers.

This is a fantastic change and could be done first. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520572</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-13 18:28:16 -0800</bug_when>
    <thetext>Okay, I will break this up into chunks and cancel the r? on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521508</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-14 17:26:42 -0800</bug_when>
    <thetext>I was able to break this patch into 4 separate things; they&apos;re listed as blockers for this now. Please take a look when you get a chance. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525550</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-21 13:56:22 -0800</bug_when>
    <thetext>closing ... all of the individual patches have landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118488</attachid>
            <date>2011-12-08 16:38:56 -0800</date>
            <delta_ts>2011-12-08 17:08:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74138-20111208163854.patch</filename>
            <type>text/plain</type>
            <size>90648</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjA3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2ZlNTFlYjhmMTAxMzhjOTE1YmEzMjFiMzcwODc3MmUy
ZGZhNGY4YS4uMWJiMTJjMDNhZGZkODhjZjUxMTRhMjhmMjI5NDMwZmM3ZmRmZDYyMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
NyBAQAorMjAxMS0xMi0wOCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0czogY2xlYW4gdXAgaG9zdC9zeXN0ZW1ob3N0IGlu
dGVyYWN0aW9ucyBpbiB0aGUgcG9ydCBzdWJzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY2xlYW5zIHVwIHRoZSBsYXllcmlu
ZyBhbmQgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUKKyAgICAgICAgSG9zdCBvYmplY3QsIHRoZSBT
eXN0ZW1Ib3N0IG9iamVjdCwgYW5kIHRoZSBQb3J0IG9iamVjdHMuIE5hbWVseToKKyAgICAgICAg
MSkgUG9ydCBvYmplY3RzIG5vdyB0YWtlIGEgcmVxdWlyZWQgU3lzdGVtSG9zdCBvYmplY3QgaW4g
dGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9yLCBhbmQgYXJlIHJlcXVpcmVkIHRvIG9ubHkgdXNl
IFN5c3RlbUhvc3QgZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAobm90IHRoZSBmdWxsIEhvc3Qp
LgorICAgICAgICAyKSBVbml0IHRlc3RzIGZvciB0aGUgUG9ydCBvYmplY3RzIGNhbiB1c2UgYSBm
dWxsIE1vY2tIb3N0CisgICAgICAgIDMpIHRoZSBUZXN0UG9ydCBvYmplY3Qgbm8gbG9uZ2VyIG1v
ZGlmaWVzIHRoZSAobW9jaykgZmlsZXN5c3RlbSBhdAorICAgICAgICAgICBhbGw7IGNsaWVudHMg
YXJlIHJlcXVpcmVkIHRvIGNhbGwKKyAgICAgICAgICAgYWRkX3VuaXRfdGVzdHNfdG9fbW9ja19m
aWxlc3lzdGVtKCkgdG8gZW5zdXJlIHRoYXQgdGhlIHN5c3RlbSBpcyBzZXQKKyAgICAgICAgICAg
dXAgY29ycmVjdGx5LiBUaGUgTW9ja0hvc3QoKSBvYmplY3QgdGFrZXMgY2FyZSBvZiB0aGlzIGZv
cgorICAgICAgICAgICBtb3N0IGNhbGxlcnMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9ob3N0X21vY2sucHk6CisgICAgICAgIChNb2NrSG9zdC5fX2luaXRfXyk6CisgICAg
ICAgICAgICBhZGQgYWRkX3VuaXRfdGVzdHNfdG9fZmlsZXN5c3RlbSgpIGNhbGwsIG1ha2Ugc3Vy
ZSB0aGUKKyAgICAgICAgICAgIE1vY2tTQ00oKSBvYmplY3QgaXMgdXNpbmcgdGhlIHNhbWUgZmls
ZXN5c3RlbSBhbmQgZXhlY3R1aXZlCisgICAgICAgICAgICBhcyB0aGUgcmVzdCBvZiB0aGUgTW9j
a0hvc3QKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3Rl
bV9tb2NrLnB5OgorICAgICAgICAoTW9ja0ZpbGVTeXN0ZW0uY2xlYXJfd3JpdHRlbl9maWxlcyk6
CisgICAgICAgICAgICBBZGRlZCBhIG5ldyBjYWxsIHRvIG1ha2UgdHJhY2tpbmcgd3JpdGVzIGlu
IGEgdGVzdCBlYXNpZXIKKyAgICAgICAgKE1vY2tGaWxlU3lzdGVtLm1heWJlX21ha2VfZGlyZWN0
b3J5KToKKyAgICAgICAgKE1vY2tGaWxlU3lzdGVtLndyaXRlX2JpbmFyeV9maWxlKToKKyAgICAg
ICAgICAgIE1ha2Ugc3VyZSB3ZSBhcmUgY3JlYXRpbmcgZGlyZWN0b3JpZXMgd2hlbiB3ZSBzaG91
bGQgYmUuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5OgorICAgICAgICAoX1Byb2Nlc3MucnVuKToKKyAg
ICAgICAgICAgIENsYXJpZnkgd2h5IHRoaXMgZmlsZSBuZWVkcyAoYW5kIHVzZXMpIHJlYWwgaG9z
dHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
dGVzdF9yZXN1bHRfd3JpdGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdFJlc3VsdFdyaXRl
clRlc3QudGVzdF9yZWZ0ZXN0X2RpZmZfaW1hZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3JfdW5p
dHRlc3QucHk6CisgICAgICAgIChKU09OR2VuZXJhdG9yVGVzdC5fdGVzdF9qc29uX2dlbmVyYXRp
b24pOgorICAgICAgICAoSlNPTkdlbmVyYXRvclRlc3QudGVzdF90ZXN0X3RpbWluZ3NfdHJpZSk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhw
ZWN0YXRpb25zX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQmFzZS5fX2luaXRfXyk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAo
UG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAoUG9ydFRlc3QubWFrZV9wb3J0KToKKyAg
ICAgICAgKFBvcnRUZXN0LnRlc3RfbGF5b3V0X3Rlc3RzX3NraXBwaW5nKToKKyAgICAgICAgKFBv
cnRUZXN0LnRlc3RfdGVzdF9kaXJzKToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfYWRkaXRpb25h
bF9wbGF0Zm9ybV9kaXJlY3RvcnkpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF91c2VzX3Rlc3Rf
ZXhwZWN0YXRpb25zX2ZpbGUpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF9maW5kX25vX3BhdGhz
X3NwZWNpZmllZCk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfb25lX3Rlc3QpOgorICAg
ICAgICAoUG9ydFRlc3QudGVzdF9maW5kX2dsb2IpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF9m
aW5kX3dpdGhfc2tpcHBlZF9kaXJlY3Rvcmllcyk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2Zp
bmRfd2l0aF9za2lwcGVkX2RpcmVjdG9yaWVzXzIpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF9w
YXJzZV9yZWZ0ZXN0X2xpc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZHJ5cnVuLnB5OgorICAgICAgICAoRHJ5UnVuUG9ydC5fX2luaXRfXyk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5OgorICAg
ICAgICAoUG9ydEZhY3RvcnkuX19pbml0X18pOgorICAgICAgICAoUG9ydEZhY3RvcnkuX2dldF9r
d2FyZ3MpOgorICAgICAgICAgICAgVGhlIGZhY3Rvcnkgbm93IHJlcXVpcmVzIGEgUG9ydCBvYmpl
Y3QuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5
X3VuaXR0ZXN0LnB5OgorICAgICAgICAoRmFjdG9yeVRlc3Quc2V0VXApOgorICAgICAgICAoRmFj
dG9yeVRlc3QudGVhckRvd24pOgorICAgICAgICAoRmFjdG9yeVRlc3QuYXNzZXJ0X3BvcnQpOgor
ICAgICAgICAoRmFjdG9yeVRlc3QuYXNzZXJ0X3BsYXRmb3JtX3BvcnQpOgorICAgICAgICAoRmFj
dG9yeVRlc3QudGVzdF91bmtub3duX3NwZWNpZmllZCk6CisgICAgICAgIChGYWN0b3J5VGVzdC50
ZXN0X3Vua25vd25fZGVmYXVsdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9nb29nbGVfY2hyb21lX3VuaXR0ZXN0LnB5OgorICAgICAgICAoR2V0R29vZ2xl
Q2hyb21lUG9ydFRlc3QuX3ZlcmlmeV9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5OgorICAgICAg
ICAoTW9ja0RSVFBvcnQuX19pbml0X18pOgorICAgICAgICAoTW9ja0RSVC5fX2luaXRfXyk6Cisg
ICAgICAgICAgICBDbGFyaWZ5IHdoeSB0aGlzIGZpbGUgbmVlZHMgKGFuZCB1c2VzKSByZWFsIEhv
c3RzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19k
cnRfdW5pdHRlc3QucHk6CisgICAgICAgIChNb2NrRFJUUG9ydFRlc3QubWFrZV9wb3J0KToKKyAg
ICAgICAgKE1vY2tEUlRUZXN0LmFzc2VydFRlc3QpOgorICAgICAgICAoTW9ja0RSVFRlc3QudGVz
dF9tYWluKToKKyAgICAgICAgKE1vY2tDaHJvbWl1bURSVFRlc3QudGVzdF9waXhlbHRlc3RfX2Zh
aWxzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0X3Vu
aXR0ZXN0LnB5OgorICAgICAgICAoUXRQb3J0VGVzdC5fYXNzZXJ0X3NlYXJjaF9wYXRoKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAg
ICAgIChUZXN0SW5zdGFuY2UuX19pbml0X18pOgorICAgICAgICAoYWRkX3VuaXRfdGVzdHNfdG9f
bW9ja19maWxlc3lzdGVtKToKKyAgICAgICAgKGFkZF9maWxlKToKKyAgICAgICAgKFRlc3RQb3J0
Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3dlYmtpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RXZWJLaXRQb3J0Ll9faW5pdF9fKToK
KyAgICAgICAgKFdlYktpdFBvcnRUZXN0LnRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3Jfc3lt
Ym9scyk6CisgICAgICAgICh0ZXN0X3NraXBwZWRfZGlyZWN0b3JpZXNfZm9yX2ZlYXR1cmVzKToK
KyAgICAgICAgKHRlc3Rfc2tpcHBlZF9sYXlvdXRfdGVzdHMpOgorICAgICAgICAodGVzdF9za2lw
cGVkX2ZpbGVfc2VhcmNoX3BhdGhzKToKKyAgICAgICAgKHRlc3Rfcm9vdF9vcHRpb24pOgorICAg
ICAgICAodGVzdF90ZXN0X2V4cGVjdGF0aW9ucyk6CisgICAgICAgICh0ZXN0X2J1aWxkX2RyaXZl
cik6CisgICAgICAgICh0ZXN0X2xpbnV4X2Rpc3Ryb19kZXRlY3Rpb24pOgorICAgICAgICAodGVz
dF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0pOgorICAgICAgICAodGVzdF9w
YXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZSk6CisgICAgICAgIChXZWJLaXREcml2ZXJUZXN0LnRl
c3RfcmVhZF9ibG9jayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAgICAgVXBkYXRl
IHRvIG1ha2UgLS1wbGF0Zm9ybSB0ZXN0IHdvcmsgY29ycmVjdGx5LgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0
LnB5OgorICAgICAgICAocGFzc2luZ19ydW4pOgorICAgICAgICAobG9nZ2luZ19ydW4pOgorICAg
ICAgICAoZ2V0X3Rlc3RzX3J1bik6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3NpbmdsZV9maWxl
KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rfc3RkZXJyX2lzX3NhdmVkKToKKyAgICAgICAgKE1h
aW5UZXN0LnRlc3RfdGVzdF9saXN0KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfdGVzdF9saXN0
X3dpdGhfcHJlZml4KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfbWlzc2luZ19hbmRfdW5leHBl
Y3RlZF9yZXN1bHRzKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfbWlzc2luZ19hbmRfdW5leHBl
Y3RlZF9yZXN1bHRzX3dpdGhfY3VzdG9tX2V4aXRfY29kZSk6CisgICAgICAgIChNYWluVGVzdC50
ZXN0X2NyYXNoX3dpdGhfc3RkZXJyKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rfbm9faW1hZ2Vf
ZmFpbHVyZV93aXRoX2ltYWdlX2RpZmYpOgorICAgICAgICAoTWFpblRlc3QudGVzdF9jcmFzaF9s
b2cpOgorICAgICAgICAoTWFpblRlc3QudGVzdF93ZWJfcHJvY2Vzc19jcmFzaF9sb2cpOgorICAg
ICAgICAoTWFpblRlc3QudGVzdF9leGl0X2FmdGVyX25fZmFpbHVyZXNfdXBsb2FkKToKKyAgICAg
ICAgKE1haW5UZXN0LnRlc3RfcmVzdWx0c19kaXJlY3RvcnlfYWJzb2x1dGUpOgorICAgICAgICAo
TWFpblRlc3QudGVzdF9yZXN1bHRzX2RpcmVjdG9yeV9yZWxhdGl2ZSk6CisgICAgICAgIChNYWlu
VGVzdC50ZXN0X3JldHJpZXNfZGlyZWN0b3J5KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfdG9s
ZXJhbmNlLmdldF9wb3J0X2Zvcl9ydW4pOgorICAgICAgICAoTWFpblRlc3QudGVzdF9yZWZ0ZXN0
X3Nob3VsZF9ub3RfdXNlX25hbWluZ19jb252ZW50aW9uX2lmX25vdF9saXN0ZWRfaW5fcmVmdGVz
dGxpc3QpOgorICAgICAgICAoRW5kVG9FbmRUZXN0LnRlc3RfZW5kX3RvX2VuZCk6CisgICAgICAg
IChFbmRUb0VuZFRlc3QudGVzdF9yZWZ0ZXN0X3dpdGhfdHdvX25vdHJlZnMpOgorICAgICAgICAo
UmViYXNlbGluZVRlc3QudGVzdF9yZXNldF9yZXN1bHRzKToKKyAgICAgICAgKFJlYmFzZWxpbmVU
ZXN0LnRlc3RfbWlzc2luZ19yZXN1bHRzKToKKyAgICAgICAgKFJlYmFzZWxpbmVUZXN0LnRlc3Rf
bmV3X2Jhc2VsaW5lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L3Rlc3RfZXhwZWN0YXRpb25zLnB5OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIu
X19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVz
dF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25zVGVz
dENhc2UuX2V4cGVjdF9wb3J0X2Zvcl9leHBlY3RhdGlvbnNfcGF0aCk6CisgICAgICAgIChUZXN0
RXhwZWN0YXRpb25zVGVzdENhc2UuYXNzZXJ0X2xpbmVzX2xpbnQpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMu
cHk6CisgICAgICAgIChSZWJhc2VsaW5lci5fX2luaXRfXyk6CisgICAgICAgIChSZWJhc2VsaW5l
ci5fZXh0cmFjdF9hbmRfYWRkX25ld19iYXNlbGluZSk6CisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKHJlYWxfbWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9y
ZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToKKyAgICAgICAgKHRl
c3RfaG9zdF9wb3J0X2FuZF9maWxlc3lzdGVtKToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lci5t
YWtlX3JlYmFzZWxpbmVyKToKKyAgICAgICAgKFRlc3RSZWFsTWFpbi50ZXN0X2FsbF9wbGF0Zm9y
bXMpOgorICAgICAgICAoVGVzdEh0bWxHZW5lcmF0b3IubWFrZV9nZW5lcmF0b3IpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXJfdW5pdHRl
c3QucHk6CisgICAgICAgIChnZXRfdGVzdF9jb25maWcuVGVzdE1hY1BvcnQpOgorCiAyMDExLTEy
LTA2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGNyZWF0
ZSBhICJTeXN0ZW1Ib3N0IiBvYmplY3QgZm9yIHdlYmtpdHB5IHRvIHNsaW0gZG93biB0aGUgSG9z
dCBvYmplY3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2hvc3Rf
bW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2hvc3RfbW9jay5weQppbmRl
eCBlNmQ2MzI1YmE2MDMyZGFhZWRkZDZhZDViZDQzNDU1YjJhOThiMTM2Li41NWRmM2U5YTI0YTBm
NGZlZTFmNjA3ODk3ZWUxM2MyZWYyMjE3OWY5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9ob3N0X21vY2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vaG9zdF9tb2NrLnB5CkBAIC0zNiwxNSArMzYsMTcgQEAgZnJvbSB3ZWJraXRweS5jb21t
b24ud2F0Y2hsaXN0LndhdGNobGlzdF9tb2NrIGltcG9ydCBNb2NrV2F0Y2hMaXN0CiAKICMgTmV3
LXN0eWxlIHBvcnRzIG5lZWQgdG8gbW92ZSBkb3duIGludG8gd2Via2l0cHkuY29tbW9uLgogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5mYWN0b3J5IGltcG9ydCBQb3J0RmFjdG9yeQor
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0IGltcG9ydCBhZGRfdW5pdF90ZXN0
c190b19tb2NrX2ZpbGVzeXN0ZW0KIAogCiBjbGFzcyBNb2NrSG9zdChNb2NrU3lzdGVtSG9zdCk6
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ19leGVjdXRpdmU9RmFsc2UsIGV4ZWN1dGl2ZV90
aHJvd3Nfd2hlbl9ydW49Tm9uZSk6CiAgICAgICAgIE1vY2tTeXN0ZW1Ib3N0Ll9faW5pdF9fKHNl
bGYsIGxvZ19leGVjdXRpdmUsIGV4ZWN1dGl2ZV90aHJvd3Nfd2hlbl9ydW4pCisgICAgICAgIGFk
ZF91bml0X3Rlc3RzX3RvX21vY2tfZmlsZXN5c3RlbShzZWxmLmZpbGVzeXN0ZW0pCiAgICAgICAg
IHNlbGYud2ViID0gTW9ja1dlYigpCiAKICAgICAgICAgc2VsZi5fY2hlY2tvdXQgPSBNb2NrQ2hl
Y2tvdXQoKQotICAgICAgICBzZWxmLl9zY20gPSBNb2NrU0NNKCkKKyAgICAgICAgc2VsZi5fc2Nt
ID0gTW9ja1NDTShmaWxlc3lzdGVtPXNlbGYuZmlsZXN5c3RlbSwgZXhlY3V0aXZlPXNlbGYuZXhl
Y3V0aXZlKQogICAgICAgICAjIFZhcmlvdXMgcGllY2VzIG9mIGNvZGUgKHdyb25nbHkpIGNhbGwg
ZmlsZXN5c3RlbS5jaGRpcihjaGVja291dF9yb290KS4KICAgICAgICAgIyBNYWtpbmcgdGhlIGNo
ZWNrb3V0X3Jvb3QgZXhpc3QgaW4gdGhlIG1vY2sgZmlsZXN5c3RlbSBtYWtlcyB0aGF0IGNoZGly
IG5vdCByYWlzZS4KICAgICAgICAgc2VsZi5maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5
KHNlbGYuX3NjbS5jaGVja291dF9yb290KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKaW5kZXggMzNkOWVhYTg0MTgx
NTI1NWMxYTRiYmRjNDY3MzdmOWMwYTU1NTAwYy4uNzVhNDcyODUyZjA2NjMwNGFlOTMwM2MxMTUw
ODk2ODc3MDk1MjZjNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CkBAIC02OSw2ICs2OSwxMCBAQCBjbGFzcyBN
b2NrRmlsZVN5c3RlbShvYmplY3QpOgogCiAgICAgc2VwID0gcHJvcGVydHkoX2dldF9zZXAsIGRv
Yz0icGF0aG5hbWUgc2VwYXJhdG9yIikKIAorICAgIGRlZiBjbGVhcl93cml0dGVuX2ZpbGVzKHNl
bGYpOgorICAgICAgICAjIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gdHJhY2sgd2hhdCBp
cyB3cml0dGVuIGJldHdlZW4gc3RlcHMgaW4gYSB0ZXN0LgorICAgICAgICBzZWxmLndyaXR0ZW5f
ZmlsZXMgPSB7fQorCiAgICAgZGVmIF9yYWlzZV9ub3RfZm91bmQoc2VsZiwgcGF0aCk6CiAgICAg
ICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBwYXRoLCBvcy5zdHJlcnJvcihlcnJuby5F
Tk9FTlQpKQogCkBAIC0yNTEsOCArMjU1LDkgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0
KToKIAogICAgIGRlZiBtYXliZV9tYWtlX2RpcmVjdG9yeShzZWxmLCAqcGF0aCk6CiAgICAgICAg
IG5vcm1fcGF0aCA9IHNlbGYubm9ybXBhdGgoc2VsZi5qb2luKCpwYXRoKSkKLSAgICAgICAgaWYg
bm90IHNlbGYuaXNkaXIobm9ybV9wYXRoKToKKyAgICAgICAgd2hpbGUgbm9ybV9wYXRoIGFuZCBu
b3Qgc2VsZi5pc2Rpcihub3JtX3BhdGgpOgogICAgICAgICAgICAgc2VsZi5kaXJzLmFkZChub3Jt
X3BhdGgpCisgICAgICAgICAgICBub3JtX3BhdGggPSBzZWxmLmRpcm5hbWUobm9ybV9wYXRoKQog
CiAgICAgZGVmIG1vdmUoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6CiAgICAgICAgIGlmIHNl
bGYuZmlsZXNbc291cmNlXSBpcyBOb25lOgpAQCAtMjgzLDYgKzI4OCw3IEBAIGNsYXNzIE1vY2tG
aWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLmZpbGVzW3BhdGhdCiAKICAg
ICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgorICAgICAgICAj
IEZJWE1FOiBzaG91bGQgdGhpcyBhc3NlcnQgaWYgZGlybmFtZShwYXRoKSBkb2Vzbid0IGV4aXN0
PwogICAgICAgICBzZWxmLmZpbGVzW3BhdGhdID0gY29udGVudHMKICAgICAgICAgc2VsZi53cml0
dGVuX2ZpbGVzW3BhdGhdID0gY29udGVudHMKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdl
cl93b3JrZXJfYnJva2VyLnB5CmluZGV4IDBkY2FiZWI4NWM2NGM3YWQ5M2UzN2IxM2JmNDg0MzA1
ZGQ1N2M5ZjMuLjE0ZTZlZGI4ZmJiYWQ0OGExOWI0ZjFhMjhmZTkyMDE1YWI1ODU5MWIgMTAwNzU1
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXJfd29ya2VyX2Jyb2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKQEAgLTUyLDcgKzUy
LDEwIEBAIHRyeToKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBtdWx0aXByb2Nlc3NpbmcgPSBO
b25lCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QgICMgRklYTUU6IFRo
aXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQhCisjIFRoZXNlIGFyZSBuZWVkZWQgd2hlbiB3b3JrZXJz
IGFyZSBsYXVuY2hlZCBpbiBuZXcgY2hpbGQgcHJvY2Vzc2VzLgorZnJvbSB3ZWJraXRweS5jb21t
b24uaG9zdCBpbXBvcnQgSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9y
dCBNb2NrSG9zdAorCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBv
cnQgbWVzc2FnZV9icm9rZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9y
dCBwcmludGluZwogCkBAIC0yNTIsMTEgKzI1NSwxNiBAQCBpZiBtdWx0aXByb2Nlc3Npbmc6CiAg
ICAgICAgICAgICBzZWxmLl9jbGllbnQgPSBjbGllbnQKIAogICAgICAgICBkZWYgcnVuKHNlbGYp
OgotICAgICAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKLSAgICAgICAgICAgICMgRklY
TUU6IFRoaXMgc2hvdWxkIGdldCB0aGUgSG9zdCBmcm9tIHRoZSBvd25lciBvZiB0aGlzIG9iamVj
dAotICAgICAgICAgICAgIyBzbyB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBwcm9wZXJseSBtb2NrZWQh
Ci0gICAgICAgICAgICBob3N0ID0gSG9zdCgpCisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gY3Jl
YXRlIGEgbmV3IEhvc3Qgb2JqZWN0IGhlcmUgYmVjYXVzZSB0aGlzIGlzCisgICAgICAgICAgICAj
IHJ1bm5pbmcgaW4gYSBuZXcgcHJvY2VzcyBhbmQgd2UgY2FuJ3QgcmVxdWlyZSB0aGUgcGFyZW50
J3MKKyAgICAgICAgICAgICMgSG9zdCB0byBiZSBwaWNrbGVhYmxlIGFuZCBwYXNzZWQgdG8gdGhl
IGNoaWxkLgorICAgICAgICAgICAgaWYgc2VsZi5fcGxhdGZvcm1fbmFtZS5zdGFydHN3aXRoKCd0
ZXN0Jyk6CisgICAgICAgICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgaG9zdCA9IEhvc3QoKQogICAgICAgICAgICAgaG9zdC5faW5p
dGlhbGl6ZV9zY20oKQorCisgICAgICAgICAgICBvcHRpb25zID0gc2VsZi5fb3B0aW9ucwogICAg
ICAgICAgICAgcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoc2VsZi5fcGxhdGZvcm1f
bmFtZSwgb3B0aW9ucykKIAogICAgICAgICAgICAgIyBUaGUgdW5peCBtdWx0aXByb2Nlc3Npbmcg
aW1wbGVtZW50YXRpb24gY2xvbmVzIHRoZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVyX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVz
dF9yZXN1bHRfd3JpdGVyX3VuaXR0ZXN0LnB5CmluZGV4IDQ2ZjcyZTZkMzU3ZTI0ZmM3M2FhMDJi
NWVjMDRjYTRiZWI4MmY1MWYuLmM3OTg0NmEyZDIwYWZiNjJmZGMxMDRjNmRiM2I4NDgwMTUyZTlh
YTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXJfdW5p
dHRlc3QucHkKQEAgLTI2LDYgKzI2LDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9ydCB0ZXN0X3Jlc3VsdF93cml0ZXIKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMucG9ydC5kcml2ZXIgaW1wb3J0IERyaXZlck91dHB1dApAQCAtNDMs
MTQgKzQ0LDE0IEBAIGNsYXNzIFRlc3RSZXN1bHRXcml0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgICAgICAgICB1c2VkX3RvbGVyYW5jZV92YWx1ZXMuYXBwZW5kKHRvbGVyYW5j
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gKFRydWUsIDEpCiAKLSAgICAgICAgcG9ydCA9IElt
YWdlRGlmZlRlc3RQb3J0KCkKLSAgICAgICAgZnMgPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAg
IGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHBvcnQgPSBJbWFnZURpZmZUZXN0UG9ydChob3N0
KQogICAgICAgICB0ZXN0X25hbWUgPSAnZmFpbHVyZXMvdW5leHBlY3RlZC9yZWZ0ZXN0Lmh0bWwn
Ci0gICAgICAgIHRlc3RfcmVmZXJlbmNlX2ZpbGUgPSBmcy5qb2luKHBvcnQubGF5b3V0X3Rlc3Rz
X2RpcigpLCAnZmFpbHVyZXMvdW5leHBlY3RlZC9yZWZ0ZXN0LWV4cGVjdGVkLmh0bWwnKQorICAg
ICAgICB0ZXN0X3JlZmVyZW5jZV9maWxlID0gaG9zdC5maWxlc3lzdGVtLmpvaW4ocG9ydC5sYXlv
dXRfdGVzdHNfZGlyKCksICdmYWlsdXJlcy91bmV4cGVjdGVkL3JlZnRlc3QtZXhwZWN0ZWQuaHRt
bCcpCiAgICAgICAgIGRyaXZlcl9vdXRwdXQxID0gRHJpdmVyT3V0cHV0KCd0ZXh0MScsICdpbWFn
ZTEnLCAnaW1hZ2VoYXNoMScsICdhdWRpbzEnKQogICAgICAgICBkcml2ZXJfb3V0cHV0MiA9IERy
aXZlck91dHB1dCgndGV4dDInLCAnaW1hZ2UyJywgJ2ltYWdlaGFzaDInLCAnYXVkaW8yJykKICAg
ICAgICAgZmFpbHVyZXMgPSBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoKHRl
c3RfcmVmZXJlbmNlX2ZpbGUpXQotICAgICAgICB0ZXN0X3Jlc3VsdF93cml0ZXIud3JpdGVfdGVz
dF9yZXN1bHQoSW1hZ2VEaWZmVGVzdFBvcnQoKSwgdGVzdF9uYW1lLAorICAgICAgICB0ZXN0X3Jl
c3VsdF93cml0ZXIud3JpdGVfdGVzdF9yZXN1bHQoSW1hZ2VEaWZmVGVzdFBvcnQoaG9zdCksIHRl
c3RfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRy
aXZlcl9vdXRwdXQxLCBkcml2ZXJfb3V0cHV0MiwgZmFpbHVyZXMpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoWzBdLCB1c2VkX3RvbGVyYW5jZV92YWx1ZXMpCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0
c19nZW5lcmF0b3JfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDBhMzFlNDdiYmExMjhiOGI0ZjU3OTg3NWI5Y2EyNGE1OWUxMTFiZjYuLmIzZTVjYmNkODhj
NTdlZWVmNzE1ZDQ5YTkyNjBjYzAzNjA2M2IzMzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0
b3JfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5weQpAQCAtMzIs
NyArMzIsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IHJhbmRv
bQogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGZpbGVzeXN0ZW1fbW9jawor
ZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19nZW5l
cmF0b3IKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBl
Y3RhdGlvbnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHRlc3QKQEAg
LTg5LDggKzg5LDkgQEAgY2xhc3MgSlNPTkdlbmVyYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICAgICAgICAgIGZhaWxlZD0odGVzdCBpbiBmYWlsZWRfdGVzdHMpLAogICAgICAg
ICAgICAgICAgIGVsYXBzZWRfdGltZT10ZXN0X3RpbWluZ3NbdGVzdF0pCiAKKyAgICAgICAgaG9z
dCA9IE1vY2tIb3N0KCkKICAgICAgICAgcG9ydCA9IE1vY2soKQotICAgICAgICBwb3J0Ll9maWxl
c3lzdGVtID0gZmlsZXN5c3RlbV9tb2NrLk1vY2tGaWxlU3lzdGVtKCkKKyAgICAgICAgcG9ydC5f
ZmlsZXN5c3RlbSA9IGhvc3QuZmlsZXN5c3RlbQogICAgICAgICBnZW5lcmF0b3IgPSBqc29uX3Jl
c3VsdHNfZ2VuZXJhdG9yLkpTT05SZXN1bHRzR2VuZXJhdG9yQmFzZShwb3J0LAogICAgICAgICAg
ICAgc2VsZi5idWlsZGVyX25hbWUsIHNlbGYuYnVpbGRfbmFtZSwgc2VsZi5idWlsZF9udW1iZXIs
CiAgICAgICAgICAgICAnJywKQEAgLTIxMyw3ICsyMTQsNyBAQCBjbGFzcyBKU09OR2VuZXJhdG9y
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuX3Rlc3RfanNvbl9nZW5lcmF0
aW9uKFsnZm9vL0EnXSwgWydmb28vQicsICdiYXIvQyddKQogCiAgICAgZGVmIHRlc3RfdGVzdF90
aW1pbmdzX3RyaWUoc2VsZik6Ci0gICAgICAgIHRlc3RfcG9ydCA9IHRlc3QuVGVzdFBvcnQoKQor
ICAgICAgICB0ZXN0X3BvcnQgPSB0ZXN0LlRlc3RQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIGlu
ZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gW10KICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWlu
Z3MuYXBwZW5kKGpzb25fcmVzdWx0c19nZW5lcmF0b3IuVGVzdFJlc3VsdCgnZm9vL2Jhci9iYXou
aHRtbCcsIGVsYXBzZWRfdGltZT0xLjIpKQogICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
cy5hcHBlbmQoanNvbl9yZXN1bHRzX2dlbmVyYXRvci5UZXN0UmVzdWx0KCdiYXIuaHRtbCcsIGVs
YXBzZWRfdGltZT0wLjAwMDEpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3Vu
aXR0ZXN0LnB5CmluZGV4IDc4ZGE3NDAzZWQwNGIyNzkwMTg3NTJkZGNmMmYxYWEwODc4MjlhMDEu
LmRhNzhlZDQxNmZkN2IyZjYzZWJjOTQzZTM0ZGUwNTVjN2FkYTIyZDggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9u
c191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9t
b2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKQEAgLTk0LDcgKzk0LDcgQEAgY2xh
c3MgQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RG
dW5jLCBzZXRVcD1Ob25lLCB0ZWFyRG93bj1Ob25lLCBkZXNjcmlwdGlvbj1Ob25lKToKICAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgc2VsZi5fcG9ydCA9IGhvc3QucG9ydF9mYWN0
b3J5LmdldCgndGVzdC13aW4teHAnLCBOb25lKQotICAgICAgICBzZWxmLl9mcyA9IHNlbGYuX3Bv
cnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5fZnMgPSBob3N0LmZpbGVzeXN0ZW0KICAgICAg
ICAgc2VsZi5fZXhwID0gTm9uZQogICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhz
ZWxmLCB0ZXN0RnVuYykKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CmluZGV4IGI1ZTA0YmY4NDk2YThhMzI3ZTZkMTYxNjg2ZjlkYTQxMjlj
ZWE3MDEuLmQ5M2M0NzkxZDQ3NjZjZTBjOTNiY2E2ZTAzYTIwMjJiMTRmNzlmZDggMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTUx
LDYgKzUxLDggQEAgZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IGZpbmRfZmlsZXMKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndXRpbHMKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbSBpbXBvcnQgcGF0aAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0
ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lz
dGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMgaW1wb3J0IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9u
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBjb25maWcgYXMgcG9ydF9j
b25maWcKQEAgLTExMCw5ICsxMTIsOSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHNl
bGYuaG9zdCA9IGhvc3QKIAogICAgICAgICAjIEZJWE1FOiBSZW1vdmUgdGhlcyBhY2Nlc3NvcnMg
b25jZSBhbGwgY2FsbGVycyBoYXZlIG1vdmVkIHRvIHVzaW5nIHNlbGYuaG9zdC4KLSAgICAgICAg
c2VsZi5leGVjdXRpdmUgPSBleGVjdXRpdmUgb3Igc2VsZi5ob3N0LmV4ZWN1dGl2ZQotICAgICAg
ICBzZWxmLnVzZXIgPSB1c2VyIG9yIHNlbGYuaG9zdC51c2VyCi0gICAgICAgIHNlbGYuZmlsZXN5
c3RlbSA9IGZpbGVzeXN0ZW0gb3Igc2VsZi5ob3N0LmZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5l
eGVjdXRpdmUgPSBzZWxmLmhvc3QuZXhlY3V0aXZlCisgICAgICAgIHNlbGYudXNlciA9IHNlbGYu
aG9zdC51c2VyCisgICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IHNlbGYuaG9zdC5maWxlc3lzdGVt
CiAgICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnIG9yIHBvcnRfY29uZmlnLkNvbmZpZyhzZWxm
LmV4ZWN1dGl2ZSwgc2VsZi5maWxlc3lzdGVtKQogCiAgICAgICAgICMgRklYTUU6IFJlbW92ZSBh
bGwgb2YgdGhlIG9sZCAicHJvdGVjdGVkIiB2ZXJzaW9ucyB3aGVuIHdlIGNhbi4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0
dGVzdC5weQppbmRleCA1ZDViNjVlMDUyY2ZkODAzZDYyMzZlY2FmOGE4ZmMxNWIyOTg0OTk4Li4y
NzFmMDY5NmUxOWRjNjQzNGQ5NDNhZGFiMjBlN2Y1NThlMTA4ODY5IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0
LnB5CkBAIC00NywxMCArNDcsMTEgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50
ZXN0IGltcG9ydCBUZXN0UG9ydAogaW1wb3J0IGNvbmZpZwogaW1wb3J0IGNvbmZpZ19tb2NrCiAK
LQogY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBtYWtlX3BvcnQo
c2VsZiwgaG9zdD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIGhvc3QgPSBob3N0IG9yIE1vY2tI
b3N0KCkKKyAgICBkZWYgbWFrZV9wb3J0KHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgaG9zdCA9
IE1vY2tIb3N0KCkKKyAgICAgICAgaWYgJ2V4ZWN1dGl2ZScgaW4ga3dhcmdzOgorICAgICAgICAg
ICAgaG9zdC5leGVjdXRpdmUgPSBrd2FyZ3NbJ2V4ZWN1dGl2ZSddCiAgICAgICAgIHJldHVybiBQ
b3J0KGhvc3QsICoqa3dhcmdzKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF9jaGlsZF9wcm9jZXNz
ZXMoc2VsZik6CkBAIC0yMDEsMTEgKzIwMiw5IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmRlZmF1bHRfY29uZmlndXJh
dGlvbigpLCAnZGVmYXVsdCcpCiAKICAgICBkZWYgdGVzdF9sYXlvdXRfdGVzdHNfc2tpcHBpbmco
c2VsZik6Ci0gICAgICAgIGZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7Ci0gICAgICAgICAg
ICAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tem9vbS5odG1sJzogJycs
Ci0gICAgICAgICAgICAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvZm9vL2Jhci5odG1sJzog
JycsCi0gICAgICAgIH0pCi0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChmaWxlc3lzdGVt
PWZpbGVzeXN0ZW0pCisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCisgICAgICAgIHBv
cnQuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkgKyAn
L21lZGlhL3ZpZGVvLXpvb20uaHRtbCcsICcnKQorICAgICAgICBwb3J0LmZpbGVzeXN0ZW0ud3Jp
dGVfdGV4dF9maWxlKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy9mb28vYmFyLmh0bWwnLCAn
JykKICAgICAgICAgcG9ydC5za2lwcGVkX2xheW91dF90ZXN0cyA9IGxhbWJkYTogWydmb28vYmFy
Lmh0bWwnLCAnbWVkaWEnXQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5za2lwc19sYXlv
dXRfdGVzdCgnZm9vL2Jhci5odG1sJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LnNr
aXBzX2xheW91dF90ZXN0KCdtZWRpYS92aWRlby16b29tLmh0bWwnKSkKQEAgLTIxNywxMSArMjE2
LDkgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBwb3J0LnNl
dHVwX3Rlc3RfcnVuKCkKIAogICAgIGRlZiB0ZXN0X3Rlc3RfZGlycyhzZWxmKToKLSAgICAgICAg
ZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHsKLSAgICAgICAgICAgICcvbW9jay1jaGVja291
dC9MYXlvdXRUZXN0cy9jYW52YXMvdGVzdCc6ICcnLAotICAgICAgICAgICAgJy9tb2NrLWNoZWNr
b3V0L0xheW91dFRlc3RzL2NzczIuMS90ZXN0JzogJycsCi0gICAgICAgIH0pCi0gICAgICAgIHBv
cnQgPSBzZWxmLm1ha2VfcG9ydChmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIHBvcnQg
PSBzZWxmLm1ha2VfcG9ydCgpCisgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9m
aWxlKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy9jYW52YXMvdGVzdCcsICcnKQorICAgICAg
ICBwb3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwb3J0LmxheW91dF90ZXN0c19kaXIo
KSArICcvY3NzMi4xL3Rlc3QnLCAnJykKICAgICAgICAgZGlycyA9IHBvcnQudGVzdF9kaXJzKCkK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdjYW52YXMnIGluIGRpcnMpCiAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgnY3NzMi4xJyBpbiBkaXJzKQpAQCAtMjU5LDggKzI1Niw3IEBAIGNsYXNzIFBv
cnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0
Lm5hbWUoKSwgJ2ZvbycpCiAKICAgICBkZWYgdGVzdF9hZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVj
dG9yeShzZWxmKToKLSAgICAgICAgZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKCkKLSAgICAg
ICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nZm9vJywgZmlsZXN5c3RlbT1maWxl
c3lzdGVtKQorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSdmb28nKQog
ICAgICAgICBwb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoID0gbGFtYmRhOiBbJ0xheW91dFRlc3Rz
L3BsYXRmb3JtL2ZvbyddCiAgICAgICAgIGxheW91dF90ZXN0X2RpciA9IHBvcnQubGF5b3V0X3Rl
c3RzX2RpcigpCiAgICAgICAgIHRlc3RfZmlsZSA9ICdmYXN0L3Rlc3QuaHRtbCcKQEAgLTI3Myw5
ICsyNjksNyBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAg
IyBTaW1wbGUgYWRkaXRpb25hbCBwbGF0Zm9ybSBkaXJlY3RvcnkKICAgICAgICAgcG9ydC5fb3B0
aW9ucy5hZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVjdG9yeSA9IFsnL3RtcC9sb2NhbC1iYXNlbGlu
ZXMnXQotICAgICAgICBmaWxlc3lzdGVtLmZpbGVzID0gewotICAgICAgICAgICAgJy90bXAvbG9j
YWwtYmFzZWxpbmVzL2Zhc3QvdGVzdC1leHBlY3RlZC50eHQnOiAnZm9vJywKLSAgICAgICAgfQor
ICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL3RtcC9sb2NhbC1iYXNl
bGluZXMvZmFzdC90ZXN0LWV4cGVjdGVkLnR4dCcsICdmb28nKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAogICAgICAgICAgICAgcG9ydC5leHBlY3RlZF9iYXNlbGluZXModGVzdF9maWxlLCAn
LnR4dCcpLAogICAgICAgICAgICAgWygnL3RtcC9sb2NhbC1iYXNlbGluZXMnLCAnZmFzdC90ZXN0
LWV4cGVjdGVkLnR4dCcpXSkKQEAgLTI4OSwzNiArMjgzLDM1IEBAIGNsYXNzIFBvcnRUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmJhc2VsaW5l
X3BhdGgoKSwgJy9mb28nKQogCiAgICAgZGVmIHRlc3RfdXNlc190ZXN0X2V4cGVjdGF0aW9uc19m
aWxlKHNlbGYpOgotICAgICAgICBmaWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oKQotICAgICAg
ICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSdmb28nLCBmaWxlc3lzdGVtPWZpbGVz
eXN0ZW0pCisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J2ZvbycpCiAg
ICAgICAgIHBvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlID0gbGFtYmRhOiAnL21v
Y2stcmVzdWx0cy90ZXN0X2V4cGVjdGF0aW9ucy50eHQnCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UocG9ydC51c2VzX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSkKICAgICAgICAgcG9ydC5fZmls
ZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHsnL21vY2stcmVzdWx0cy90ZXN0X2V4cGVjdGF0aW9u
cy50eHQnOiAnJ30pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LnVzZXNfdGVzdF9leHBl
Y3RhdGlvbnNfZmlsZSgpKQogCiAgICAgZGVmIHRlc3RfZmluZF9ub19wYXRoc19zcGVjaWZpZWQo
c2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0UG9y
dChNb2NrSG9zdCgpKQogICAgICAgICBsYXlvdXRfdGVzdHNfZGlyID0gcG9ydC5sYXlvdXRfdGVz
dHNfZGlyKCkKICAgICAgICAgdGVzdHMgPSBwb3J0LnRlc3RzKFtdKQogICAgICAgICBzZWxmLmFz
c2VydE5vdEVxdWFsKGxlbih0ZXN0cyksIDApCiAKICAgICBkZWYgdGVzdF9maW5kX29uZV90ZXN0
KHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFBv
cnQoTW9ja0hvc3QoKSkKICAgICAgICAgdGVzdHMgPSBwb3J0LnRlc3RzKFsnZmFpbHVyZXMvZXhw
ZWN0ZWQvaW1hZ2UuaHRtbCddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXN0cyks
IDEpCiAKICAgICBkZWYgdGVzdF9maW5kX2dsb2Ioc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0
UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICB0ZXN0
cyA9IHBvcnQudGVzdHMoWydmYWlsdXJlcy9leHBlY3RlZC9pbSonXSkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4odGVzdHMpLCAyKQogCiAgICAgZGVmIHRlc3RfZmluZF93aXRoX3NraXBw
ZWRfZGlyZWN0b3JpZXMoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0UG9ydCgpCisgICAgICAg
IHBvcnQgPSBUZXN0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICB0ZXN0cyA9IHBvcnQudGVzdHMo
J3VzZXJzY3JpcHRzJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd1c2Vyc2NyaXB0cy9yZXNv
dXJjZXMvaWZyYW1lLmh0bWwnIG5vdCBpbiB0ZXN0cykKIAogICAgIGRlZiB0ZXN0X2ZpbmRfd2l0
aF9za2lwcGVkX2RpcmVjdG9yaWVzXzIoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0UG9ydCgp
CisgICAgICAgIHBvcnQgPSBUZXN0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICB0ZXN0cyA9IHBv
cnQudGVzdHMoWyd1c2Vyc2NyaXB0cy9yZXNvdXJjZXMnXSkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0ZXN0cywgc2V0KFtdKSkKIApAQCAtMzM4LDcgKzMzMSw3IEBAIGNsYXNzIFBvcnRUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQb3J0Ll9pc190
ZXN0X2ZpbGUoZmlsZXN5c3RlbSwgJycsICdub3RyZWYtZm9vLnhocicpKQogCiAgICAgZGVmIHRl
c3RfcGFyc2VfcmVmdGVzdF9saXN0KHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFBvcnQoKQor
ICAgICAgICBwb3J0ID0gVGVzdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgcG9ydC5ob3N0LmZp
bGVzeXN0ZW0uZmlsZXNbJ2Jhci9yZWZ0ZXN0Lmxpc3QnXSA9ICJcbiIuam9pbihbIj09IHRlc3Qu
aHRtbCB0ZXN0LXJlZi5odG1sIiwKICAgICAgICAgIiIsCiAgICAgICAgICIjIHNvbWUgY29tbWVu
dCIsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2RyeXJ1bi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5
cnVuLnB5CmluZGV4IDRkZTgyMzAxYTIxNmNmZWI5N2Q1ZTdiYjhjZTA5NDQ4NzJmZmQ3OTAuLmFh
YWZiMDk0Y2Y2ODc3ZjBhZWEzMDBlMjNlNzVlYTE1NzMyOTJjMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CkBAIC01Myw3ICs1
Myw5IEBAIGltcG9ydCB0aW1lCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9y
dCBEcml2ZXIsIERyaXZlck91dHB1dCwgZmFjdG9yeQogCiAKLSMgRklYTUU6IFdoeSBub3QgaW5o
ZXJpdCBmcm9tIFBvcnQ/CisjIE5vdGUgdGhhdCB3ZSBkb24ndCBpbmhlcml0IGZyb20gYmFzZS5Q
b3J0IGluIG9yZGVyIGZvciBkZWxlZ2F0aW9uIHRvCisjIHdvcmsgcHJvcGVybHk6IGV4Y2VwdCBm
b3IgdGhlIG1ldGhvZHMgZGVmaW5lZCBoZXJlLCB3ZSB3YW50IHRvIGVuc3VyZSB0aGF0CisjIGFs
bCBvZiB0aGUgbWV0aG9kcyBhcmUgcGFzc2VkIHRvIHRoZSBfX2RlbGVnYXRlLCBub3QgdG8gdGhl
IGJhc2UgY2xhc3MuCiBjbGFzcyBEcnlSdW5Qb3J0KG9iamVjdCk6CiAgICAgIiIiRHJ5UnVuIGlt
cGxlbWVudGF0aW9uIG9mIHRoZSBQb3J0IGludGVyZmFjZS4iIiIKIApAQCAtNjQsNyArNjYsNyBA
QCBjbGFzcyBEcnlSdW5Qb3J0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAga3dhcmdzWydwb3J0
X25hbWUnXSA9IGt3YXJnc1sncG9ydF9uYW1lJ11bbGVuKHBmeCk6XQogICAgICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgICAgICBrd2FyZ3NbJ3BvcnRfbmFtZSddID0gTm9uZQotICAgICAgICBz
ZWxmLl9fZGVsZWdhdGUgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoKiprd2FyZ3MpCisgICAgICAg
IHNlbGYuX19kZWxlZ2F0ZSA9IGZhY3RvcnkuUG9ydEZhY3RvcnkoaG9zdCkuZ2V0KCoqa3dhcmdz
KQogCiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgogICAgICAgICByZXR1cm4gZ2V0
YXR0cihzZWxmLl9fZGVsZWdhdGUsIG5hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkKaW5kZXggOWE1ZWU1NmUzMDYzMTRhZDgx
Y2Q4OWNmM2VhOWQxYTlmZTVkNjM5Ny4uNzY3MmRlNDRjNjc4YjI3ZjZhNmYzYTk4NGYyNjA1Mzc4
ODVlNTM4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9mYWN0b3J5LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZmFjdG9yeS5weQpAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCdWlsZGVyT3B0aW9ucyhv
YmplY3QpOgogCiAKIGNsYXNzIFBvcnRGYWN0b3J5KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGhvc3Q9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QpOgogICAgICAg
ICBzZWxmLl9ob3N0ID0gaG9zdAogCiAgICAgZGVmIF9wb3J0X25hbWVfZnJvbV9hcmd1bWVudHNf
YW5kX29wdGlvbnMoc2VsZiwgKiprd2FyZ3MpOgpAQCAtNjcsMjMgKzY3LDEyIEBAIGNsYXNzIFBv
cnRGYWN0b3J5KG9iamVjdCk6CiAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
KCd1bmtub3duIHBvcnQ7IHN5cy5wbGF0Zm9ybSA9ICIlcyInICUgc3lzLnBsYXRmb3JtKQogICAg
ICAgICByZXR1cm4gcG9ydF90b191c2UKIAotICAgIGRlZiBfc2V0X2RlZmF1bHRfb3ZlcnJpZGlu
Z19ub25lKHNlbGYsIGRpY3Rpb25hcnksIGtleSwgZGVmYXVsdCk6Ci0gICAgICAgICMgZGljdC5z
ZXRkZWZhdWx0IGFsbW9zdCB3b3JrcywgYnV0IHdvbid0IGFjdHVhbGx5IG92ZXJyaWRlIE5vbmUg
dmFsdWVzLCB3aGljaCB3ZSB3YW50LgotICAgICAgICBpZiBub3QgZGljdGlvbmFyeS5nZXQoa2V5
KToKLSAgICAgICAgICAgIGRpY3Rpb25hcnlba2V5XSA9IGRlZmF1bHQKLSAgICAgICAgcmV0dXJu
IGRpY3Rpb25hcnlba2V5XQotCi0gICAgZGVmIF9nZXRfa3dhcmdzKHNlbGYsIGhvc3Q9Tm9uZSwg
Kiprd2FyZ3MpOgorICAgIGRlZiBfZ2V0X2t3YXJncyhzZWxmLCAqKmt3YXJncyk6CiAgICAgICAg
IHBvcnRfdG9fdXNlID0gc2VsZi5fcG9ydF9uYW1lX2Zyb21fYXJndW1lbnRzX2FuZF9vcHRpb25z
KCoqa3dhcmdzKQogCiAgICAgICAgIGlmIHBvcnRfdG9fdXNlLnN0YXJ0c3dpdGgoJ3Rlc3QnKToK
ICAgICAgICAgICAgIGltcG9ydCB0ZXN0CiAgICAgICAgICAgICBtYWtlciA9IHRlc3QuVGVzdFBv
cnQKLSAgICAgICAgICAgICMgRklYTUU6IFRoaXMgaXMgYSBoYWNrIHRvIG92ZXJyaWRlIHRoZSAi
ZGVmYXVsdCIgZmlsZXN5c3RlbQotICAgICAgICAgICAgIyBwcm92aWRlZCB0byB0aGUgcG9ydC4g
IFRoZSB1bml0X3Rlc3RfZmlsZXN5c3RlbSBoYXMgYW4gZXh0cmEKLSAgICAgICAgICAgICMgX3Rl
c3RzIGF0dHJpYnV0ZSB3aGljaCBhIGJ1bmNoIG9mIHVuaXR0ZXN0cyBkZXBlbmQgb24uCi0gICAg
ICAgICAgICBmcm9tIC50ZXN0IGltcG9ydCB1bml0X3Rlc3RfZmlsZXN5c3RlbQotICAgICAgICAg
ICAgc2VsZi5fc2V0X2RlZmF1bHRfb3ZlcnJpZGluZ19ub25lKGt3YXJncywgJ2ZpbGVzeXN0ZW0n
LCB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpKQogICAgICAgICBlbGlmIHBvcnRfdG9fdXNlLnN0YXJ0
c3dpdGgoJ2RyeXJ1bicpOgogICAgICAgICAgICAgaW1wb3J0IGRyeXJ1bgogICAgICAgICAgICAg
bWFrZXIgPSBkcnlydW4uRHJ5UnVuUG9ydApAQCAtMTIzLDggKzExMiw3IEBAIGNsYXNzIFBvcnRG
YWN0b3J5KG9iamVjdCk6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yKCd1bnN1cHBvcnRlZCBwb3J0OiAlcycgJSBwb3J0X3RvX3VzZSkKIAotICAg
ICAgICBob3N0ID0gaG9zdCBvciBzZWxmLl9ob3N0Ci0gICAgICAgIHJldHVybiBtYWtlcihob3N0
LCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIG1ha2VyKHNlbGYuX2hvc3QsICoqa3dhcmdzKQog
CiAgICAgZGVmIGFsbF9wb3J0X25hbWVzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBsaXN0
IG9mIGFsbCB2YWxpZCwgZnVsbHktc3BlY2lmaWVkLCAicmVhbCIgcG9ydCBuYW1lcy4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFj
dG9yeV91bml0dGVzdC5weQppbmRleCA2MWUzMWY1MmQ4OWEzYmU4YzQwM2FmNjEyNzgzNzMzNzk2
YjgxNDRhLi4xZjljMjM2YzZiMzI2MDU4ZjhiOTEwNmZkYTAzYmYxNGViYjIyZDZjIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5p
dHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9m
YWN0b3J5X3VuaXR0ZXN0LnB5CkBAIC0zMCw3ICszMCw3IEBAIGltcG9ydCBzeXMKIGltcG9ydCB1
bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25z
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Citmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9z
dAogCiBpbXBvcnQgY2hyb21pdW1fZ3B1CiBpbXBvcnQgY2hyb21pdW1fbGludXgKQEAgLTU5LDE1
ICs1OSwxMSBAQCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IHNlbGYucmVhbF9zeXNfcGxhdGZvcm0gPSBzeXMucGxhdGZvcm0KICAgICAgICAgc2VsZi53ZWJr
aXRfb3B0aW9ucyA9IE1vY2tPcHRpb25zKHBpeGVsX3Rlc3RzPUZhbHNlKQogICAgICAgICBzZWxm
LmNocm9taXVtX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhwaXhlbF90ZXN0cz1GYWxzZSwgY2hyb21p
dW09VHJ1ZSkKKyAgICAgICAgc2VsZi5mYWN0b3J5ID0gZmFjdG9yeS5Qb3J0RmFjdG9yeShNb2Nr
U3lzdGVtSG9zdCgpKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzeXMucGxh
dGZvcm0gPSBzZWxmLnJlYWxfc3lzX3BsYXRmb3JtCiAKLSAgICBkZWYgbWFrZV9mYWN0b3J5KHNl
bGYpOgotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICAjIFRoZSBQb3J0RmFjdG9y
eSBvbiBNb2NrSG9zdCBpcyBhIHJlYWwgUG9ydEZhY3Rvcnkgd2l0aCBhIE1vY2tGaWxlU3lzdGVt
LCBldGMuCi0gICAgICAgIHJldHVybiBob3N0LnBvcnRfZmFjdG9yeQotCiAgICAgZGVmIGFzc2Vy
dF9wb3J0KHNlbGYsIHBvcnRfbmFtZSwgZXhwZWN0ZWRfcG9ydCwgcG9ydF9vYmo9Tm9uZSk6CiAg
ICAgICAgICIiIkhlbHBlciBhc3NlcnQgZm9yIHBvcnRfbmFtZS4KIApAQCAtNzYsNyArNzIsNyBA
QCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgZXhwZWN0
ZWRfcG9ydDogY2xhc3Mgb2YgZXhwZWN0ZWQgcG9ydCBvYmplY3QuCiAgICAgICAgICAgcG9ydF9v
Ymo6IG9wdGlvbmFsIHBvcnQgb2JqZWN0CiAgICAgICAgICIiIgotICAgICAgICBwb3J0X29iaiA9
IHBvcnRfb2JqIG9yIHNlbGYubWFrZV9mYWN0b3J5KCkuZ2V0KHBvcnRfbmFtZT1wb3J0X25hbWUp
CisgICAgICAgIHBvcnRfb2JqID0gcG9ydF9vYmogb3Igc2VsZi5mYWN0b3J5LmdldChwb3J0X25h
bWU9cG9ydF9uYW1lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShwb3J0X29i
aiwgZXhwZWN0ZWRfcG9ydCkpCiAKICAgICBkZWYgYXNzZXJ0X3BsYXRmb3JtX3BvcnQoc2VsZiwg
cGxhdGZvcm0sIG9wdGlvbnMsIGV4cGVjdGVkX3BvcnQpOgpAQCAtOTIsNyArODgsNyBAQCBjbGFz
cyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIG9yaWdfcGxhdGZvcm0g
PSBzeXMucGxhdGZvcm0KICAgICAgICAgc3lzLnBsYXRmb3JtID0gcGxhdGZvcm0KICAgICAgICAg
IyBGSVhNRTogV2UgbmVlZCBhIGJldHRlciB3YXkgdG8gbW9jayB0aGlzLgotICAgICAgICBzZWxm
LmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLm1ha2VfZmFjdG9yeSgpLmdldChvcHRpb25zPW9w
dGlvbnMpLCBleHBlY3RlZF9wb3J0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFu
Y2Uoc2VsZi5mYWN0b3J5LmdldChvcHRpb25zPW9wdGlvbnMpLCBleHBlY3RlZF9wb3J0KSkKICAg
ICAgICAgc3lzLnBsYXRmb3JtID0gb3JpZ19wbGF0Zm9ybQogCiAgICAgZGVmIHRlc3RfbWFjKHNl
bGYpOgpAQCAtMTUzLDEzICsxNDksMTMgQEAgY2xhc3MgRmFjdG9yeVRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogCiAgICAgZGVmIHRlc3RfdW5rbm93bl9zcGVjaWZpZWQoc2VsZik6CiAgICAgICAg
ICMgVGVzdCB3aGF0IGhhcHBlbnMgd2hlbiB5b3Ugc3BlY2lmeSBhbiB1bmtub3duIHBvcnQuCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHNlbGYubWFrZV9m
YWN0b3J5KCkuZ2V0LCBwb3J0X25hbWU9J3Vua25vd24nKQorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzZWxmLmZhY3RvcnkuZ2V0LCBwb3J0X25hbWU9J3Vu
a25vd24nKQogCiAgICAgZGVmIHRlc3RfdW5rbm93bl9kZWZhdWx0KHNlbGYpOgogICAgICAgICAj
IFRlc3Qgd2hhdCBoYXBwZW5zIHdoZW4geW91J3JlIHJ1bm5pbmcgb24gYW4gdW5rbm93biBwbGF0
Zm9ybS4KICAgICAgICAgb3JpZ19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQogICAgICAgICBzeXMu
cGxhdGZvcm0gPSAndW5rbm93bicKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVt
ZW50ZWRFcnJvciwgc2VsZi5tYWtlX2ZhY3RvcnkoKS5nZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHNlbGYuZmFjdG9yeS5nZXQpCiAgICAgICAgIHN5
cy5wbGF0Zm9ybSA9IG9yaWdfcGxhdGZvcm0KIAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5p
dHRlc3QucHkKaW5kZXggZTMxN2UxMmM1YmU3ZmVmYmMxNzA4NGU0Y2YzN2ZhODA4YjA1ZjIxMy4u
MzZlNGFiNmFhNzE3MzdhZjk4MzgzZDIxYjYzNmJiZmRlNzdmOGViMyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29v
Z2xlX2Nocm9tZV91bml0dGVzdC5weQpAQCAtMjcsMTEgKzI3LDcgQEAKIGltcG9ydCB1bml0dGVz
dAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Ci1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5
c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBN
b2NrRXhlY3V0aXZlCi0KLQotaW1wb3J0IGdvb2dsZV9jaHJvbWUKK2Zyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGdvb2dsZV9jaHJvbWUKIAogCiBjbGFzcyBHZXRHb29nbGVD
aHJvbWVQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01OSw3ICs1NSw3IEBAIGNsYXNz
IEdldEdvb2dsZUNocm9tZVBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgaG9z
dCA9IE1vY2tIb3N0KCkKICAgICAgICAgY2hyb21pdW1fcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5
LmdldCgiY2hyb21pdW0tY2ctbWFjIikKICAgICAgICAgY2hyb21pdW1fYmFzZSA9IGNocm9taXVt
X3BvcnQucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoKQotICAgICAgICBwb3J0ID0gZ29vZ2xlX2No
cm9tZS5HZXRHb29nbGVDaHJvbWVQb3J0KHBvcnRfbmFtZT1wb3J0X25hbWUsIG9wdGlvbnM9Tm9u
ZSwgaG9zdD1ob3N0KQorICAgICAgICBwb3J0ID0gZ29vZ2xlX2Nocm9tZS5HZXRHb29nbGVDaHJv
bWVQb3J0KGhvc3QsIHBvcnRfbmFtZT1wb3J0X25hbWUsIG9wdGlvbnM9Tm9uZSkKIAogICAgICAg
ICBleHBlY3RlZF9jaHJvbWl1bV9vdmVycmlkZXMgPSAnLy8gY2hyb21pdW0gb3ZlcnJpZGVzXG4n
CiAgICAgICAgIGV4cGVjdGVkX2Nocm9tZV9vdmVycmlkZXMgPSAnLy8gY2hyb21lIG92ZXJyaWRl
c1xuJwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tb2NrX2RydC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
bW9ja19kcnQucHkKaW5kZXggMWJhNWE2ZDk0NmU4OTkxMzdkMzdhZmFlNGE2ZTdhZWMzNGMzM2Rm
OS4uZTQ1ZmI5MjM0Mzg3MWZlMTM2YWVjMDA0ZWRkNTQ2ZDJmMjM2MGQyMiAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5CkBA
IC0zMCwxNiArMzAsMjEgQEAKICIiIgogVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg
UG9ydCBpbnRlcmZhY2UgdGhhdCBvdmVycmlkZXMgb3RoZXIKIHBvcnRzIGFuZCBjaGFuZ2VzIHRo
ZSBEcml2ZXIgYmluYXJ5IHRvICJNb2NrRFJUIi4KKworVGhlIE1vY2tEUlQgb2JqZWN0cyBlbXVs
YXRlIHdoYXQgYSByZWFsIERSVCB3b3VsZCBkby4gSW4gcGFydGljdWxhciwgdGhleQorcmV0dXJu
IHRoZSBvdXRwdXQgYSByZWFsIERSVCB3b3VsZCByZXR1cm4gZm9yIGEgZ2l2ZW4gdGVzdCwgYXNz
dW1pbmcgdGhhdAordGVzdCBhY3R1YWxseSBwYXNzZXMgKGV4Y2VwdCBmb3IgcmVmdGVzdHMsIHdo
aWNoIGN1cnJlbnRseSBjYXVzZSB0aGUKK01vY2tEUlQgdG8gY3Jhc2gpLgogIiIiCiAKIGltcG9y
dCBiYXNlNjQKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgc3lzCiAKLWZyb20gd2Via2l0cHkuY29t
bW9uLmhvc3QgaW1wb3J0IEhvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1o
b3N0IGltcG9ydCBTeXN0ZW1Ib3N0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmZh
Y3RvcnkgaW1wb3J0IFBvcnRGYWN0b3J5CiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1w
b3J0IE1vY2tPcHRpb25zCiAKLQogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CiAKQEAgLTUxLDcgKzU2LDcgQEAgY2xhc3MgTW9ja0RSVFBvcnQob2JqZWN0KToKICAgICAgICAg
aWYgJ3BvcnRfbmFtZScgaW4ga3dhcmdzOgogICAgICAgICAgICAga3dhcmdzWydwb3J0X25hbWUn
XSA9IGt3YXJnc1sncG9ydF9uYW1lJ11bbGVuKHByZWZpeCk6XQogICAgICAgICBzZWxmLl9ob3N0
ID0gaG9zdAotICAgICAgICBzZWxmLl9fZGVsZWdhdGUgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQo
Kiprd2FyZ3MpCisgICAgICAgIHNlbGYuX19kZWxlZ2F0ZSA9IFBvcnRGYWN0b3J5KGhvc3QpLmdl
dCgqKmt3YXJncykKICAgICAgICAgc2VsZi5fX3JlYWxfbmFtZSA9IHByZWZpeCArIHNlbGYuX19k
ZWxlZ2F0ZS5uYW1lKCkKIAogICAgIGRlZiByZWFsX25hbWUoc2VsZik6CkBAIC0xODAsNyArMTg1
LDcgQEAgY2xhc3MgTW9ja0RSVChvYmplY3QpOgogICAgICAgICBwb3J0X25hbWUgPSBOb25lCiAg
ICAgICAgIGlmIG9wdGlvbnMucGxhdGZvcm06CiAgICAgICAgICAgICBwb3J0X25hbWUgPSBvcHRp
b25zLnBsYXRmb3JtCi0gICAgICAgIHNlbGYuX3BvcnQgPSBzZWxmLl9ob3N0LnBvcnRfZmFjdG9y
eS5nZXQocG9ydF9uYW1lLCBvcHRpb25zPW9wdGlvbnMpCisgICAgICAgIHNlbGYuX3BvcnQgPSBQ
b3J0RmFjdG9yeShob3N0KS5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZSwgb3B0aW9ucz1vcHRpb25z
KQogCiAgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgd2hpbGUgVHJ1ZToKQEAgLTI3Nyw3ICsy
ODIsNiBAQCBjbGFzcyBNb2NrQ2hyb21pdW1EUlQoTW9ja0RSVCk6CiAKIAogaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKLSAgICAjIEZJWE1FOiBXaHkgaXMgdGhpcyB1c2luZyBhIHJlYWwgSG9z
dCBvYmplY3QgaW5zdGVhZCBvZiBNb2NrSG9zdD8KLSAgICBob3N0ID0gSG9zdCgpCi0gICAgaG9z
dC5faW5pdGlhbGl6ZV9zY20oKQotICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3ZbMTpdLCBob3N0
LCBzeXMuc3RkaW4sIHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIpKQorICAgICMgTm90ZSB0aGF0IHRo
ZSBNb2NrIGluIE1vY2tEUlQgcmVmZXJzIHRvIHRoZSBmYWN0IHRoYXQgaXQgaXMgZW11bGF0aW5n
IGEKKyAgICAjIHJlYWwgRFJULCBhbmQgYXMgc3VjaCwgaXQgbmVlZHMgYWNjZXNzIHRvIGEgcmVh
bCBTeXN0ZW1Ib3N0LCBub3QgYSBNb2NrU3lzdGVtSG9zdC4KKyAgICBzeXMuZXhpdChtYWluKHN5
cy5hcmd2WzE6XSwgU3lzdGVtSG9zdCgpLCBzeXMuc3RkaW4sIHN5cy5zdGRvdXQsIHN5cy5zdGRl
cnIpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tb2NrX2RydF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkKaW5kZXggNTY3YzA4NzZjYzFlM2JmZWQ3MjZl
MmEwMmQ4MjM1NTk2MmMzMmQ0Zi4uZjgxMjk1ODQwNzFkNDAyZWFhNjM4NTRlM2ZjMzQxZTg0MThl
ZGVhNiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tb2NrX2RydF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CkBAIC00NiwxMCArNDYsMTEgQEAgbW9j
a19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScp
CiAKIGNsYXNzIE1vY2tEUlRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAg
ICAgZGVmIG1ha2VfcG9ydChzZWxmLCBvcHRpb25zPW1vY2tfb3B0aW9ucyk6CisgICAgICAgIGhv
c3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAg
ICAgICAgICAgIyBXZSB1c2UgdGhpcyBiZWNhdXNlIHRoZSAnd2luJyBwb3J0IGRvZXNuJ3Qgd29y
ayB5ZXQuCi0gICAgICAgICAgICByZXR1cm4gbW9ja19kcnQuTW9ja0RSVFBvcnQoTW9ja0hvc3Qo
KSwgcG9ydF9uYW1lPSdtb2NrLWNocm9taXVtLXdpbicsIG9wdGlvbnM9b3B0aW9ucykKLSAgICAg
ICAgcmV0dXJuIG1vY2tfZHJ0Lk1vY2tEUlRQb3J0KE1vY2tIb3N0KCksIG9wdGlvbnM9b3B0aW9u
cykKKyAgICAgICAgICAgIHJldHVybiBtb2NrX2RydC5Nb2NrRFJUUG9ydChob3N0LCBwb3J0X25h
bWU9J21vY2stY2hyb21pdW0td2luJywgb3B0aW9ucz1vcHRpb25zKQorICAgICAgICByZXR1cm4g
bW9ja19kcnQuTW9ja0RSVFBvcnQoaG9zdCwgb3B0aW9ucz1vcHRpb25zKQogCiAgICAgZGVmIHRl
c3RfZGVmYXVsdF93b3JrZXJfbW9kZWwoc2VsZik6CiAgICAgICAgICMgb25seSBvdmVycmlkZGlu
ZyB0aGUgZGVmYXVsdCB0ZXN0OyB3ZSBkb24ndCBjYXJlIGFib3V0IHRoaXMgb25lLgpAQCAtMTM3
LDEwICsxMzgsOSBAQCBjbGFzcyBNb2NrRFJUVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgICAgICAgICAgICAgICcjRU9GXG4nLAogICAgICAgICAgICAgICAgICAgICAnI0VPRlxuJ10K
IAotICAgIGRlZiBhc3NlcnRUZXN0KHNlbGYsIHRlc3RfbmFtZSwgcGl4ZWxfdGVzdHMsIGV4cGVj
dGVkX2NoZWNrc3VtPU5vbmUsIGRydF9vdXRwdXQ9Tm9uZSwgZmlsZXN5c3RlbT1Ob25lKToKKyAg
ICBkZWYgYXNzZXJ0VGVzdChzZWxmLCB0ZXN0X25hbWUsIHBpeGVsX3Rlc3RzLCBleHBlY3RlZF9j
aGVja3N1bT1Ob25lLCBkcnRfb3V0cHV0PU5vbmUsIGhvc3Q9Tm9uZSk6CiAgICAgICAgIHBvcnRf
bmFtZSA9ICd0ZXN0JwotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICBob3N0LmZp
bGVzeXN0ZW0gPSBmaWxlc3lzdGVtIG9yIHRlc3QudW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAg
ICAgICBob3N0ID0gaG9zdCBvciBNb2NrSG9zdCgpCiAgICAgICAgIHBvcnQgPSBob3N0LnBvcnRf
ZmFjdG9yeS5nZXQocG9ydF9uYW1lKQogICAgICAgICBkcnRfaW5wdXQsIGRydF9vdXRwdXQgPSBz
ZWxmLm1ha2VfaW5wdXRfb3V0cHV0KHBvcnQsIHRlc3RfbmFtZSwKICAgICAgICAgICAgIHBpeGVs
X3Rlc3RzLCBleHBlY3RlZF9jaGVja3N1bSwgZHJ0X291dHB1dCkKQEAgLTE2Myw3ICsxNjMsNiBA
QCBjbGFzcyBNb2NrRFJUVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9t
YWluKHNlbGYpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICBob3N0LmZpbGVz
eXN0ZW0gPSB0ZXN0LnVuaXRfdGVzdF9maWxlc3lzdGVtKCkKICAgICAgICAgc3RkaW4gPSBuZXdz
dHJpbmdpby5TdHJpbmdJTygpCiAgICAgICAgIHN0ZG91dCA9IG5ld3N0cmluZ2lvLlN0cmluZ0lP
KCkKICAgICAgICAgc3RkZXJyID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQpAQCAtMjM2LDcgKzIz
NSw3IEBAIGNsYXNzIE1vY2tDaHJvbWl1bURSVFRlc3QoTW9ja0RSVFRlc3QpOgogICAgICAgICAg
ICAgICAgICAgICAnI0VPRlxuJ10KIAogICAgIGRlZiB0ZXN0X3BpeGVsdGVzdF9fZmFpbHMoc2Vs
Zik6Ci0gICAgICAgIGZpbGVzeXN0ZW0gPSB0ZXN0LnVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAg
ICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgc2VsZi5hc3NlcnRUZXN0KCdmYWlsdXJl
cy9leHBlY3RlZC9jaGVja3N1bS5odG1sJywgcGl4ZWxfdGVzdHM9VHJ1ZSwKICAgICAgICAgICAg
IGV4cGVjdGVkX2NoZWNrc3VtPSd3cm9uZy1jaGVja3N1bScsCiAgICAgICAgICAgICBkcnRfb3V0
cHV0PVsnI1VSTDpmaWxlOi8vL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMvZmFpbHVyZXMvZXhw
ZWN0ZWQvY2hlY2tzdW0uaHRtbFxuJywKQEAgLTI0NCw4ICsyNDMsOCBAQCBjbGFzcyBNb2NrQ2hy
b21pdW1EUlRUZXN0KE1vY2tEUlRUZXN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICdjaGVj
a3N1bS10eHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICcjRU9GXG4nXSwKLSAgICAgICAgICAgIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLAorICAg
ICAgICAgICAgaG9zdD1ob3N0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhob3N0LmZpbGVz
eXN0ZW0ud3JpdHRlbl9maWxlcywKICAgICAgICAgICAgIHsnL3RtcC9wbmdfcmVzdWx0MC5wbmcn
OiAnY2hlY2tzdW1ceDhhLXBuZ3RFWHRjaGVja3N1bVx4MDBjaGVja3N1bS1jaGVja3N1bSd9KQog
CiAgICAgZGVmIHRlc3RfY2hyb21pdW1fcGFyc2Vfb3B0aW9ucyhzZWxmKToKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0X3VuaXR0ZXN0LnB5
CmluZGV4IGQ2NDQ2MzJkMTBkMjIxNDUzMTdlZDUzYzkwMmRhZWRmN2I5M2FjM2MuLjViMmRlYzY4
NGFmOWE1MGE2ZWVmNzgyOTQzYWNhMmFjNDQ2ZWQxZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdF91bml0dGVzdC5weQpAQCAtMjks
NyArMjksNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIKLWZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5xdCBpbXBvcnQgUXRQb3J0CiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCkBAIC00NSwxMCAr
NDQsOSBAQCBjbGFzcyBRdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAg
ICAgICAgIyBGSVhNRTogUG9ydCBjb25zdHJ1Y3RvcnMgc2hvdWxkIG5vdCAicGFyc2UiIHRoZSBw
b3J0IG5hbWUsIGJ1dAogICAgICAgICAjIHJhdGhlciBiZSBwYXNzZWQgY29tcG9uZW50cyAoZGly
ZWN0bHkgb3IgdmlhIHNldHRlcnMpLiAgT25jZQogICAgICAgICAjIHdlIGZpeCB0aGF0LCB0aGlz
IG1ldGhvZCB3aWxsIG5lZWQgYSByZS13cml0ZS4KLSAgICAgICAgcG9ydCA9IFF0UG9ydChzeXNf
cGxhdGZvcm09c3lzX3BsYXRmb3JtLAotICAgICAgICAgICAgb3B0aW9ucz1Nb2NrT3B0aW9ucyh3
ZWJraXRfdGVzdF9ydW5uZXI9dXNlX3dlYmtpdDIsIHBsYXRmb3JtPSdxdCcpLAotICAgICAgICAg
ICAgaG9zdD1Nb2NrSG9zdCgpLAotICAgICAgICAgICAgZXhlY3V0aXZlPU1vY2tFeGVjdXRpdmUy
KHNlbGYuX3F0X3ZlcnNpb24ocXRfdmVyc2lvbikpKQorICAgICAgICBob3N0ID0gTW9ja0hvc3Qo
KQorICAgICAgICBob3N0LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHNlbGYuX3F0X3ZlcnNp
b24ocXRfdmVyc2lvbikpCisgICAgICAgIHBvcnQgPSBRdFBvcnQoaG9zdCwgc3lzX3BsYXRmb3Jt
PXN5c19wbGF0Zm9ybSwgb3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9dXNl
X3dlYmtpdDIsIHBsYXRmb3JtPSdxdCcpKQogICAgICAgICBhYnNvbHV0ZV9zZWFyY2hfcGF0aHMg
PSBtYXAocG9ydC5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlYXJjaF9wYXRocykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMocG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCgpLCBhYnNvbHV0ZV9z
ZWFyY2hfcGF0aHMpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvdGVzdC5weQppbmRleCAzZmQxMjYzOTllM2RmN2ExOTA4Yjc1YThhNjI0NDk1MjUwMmJm
NDQxLi45NWM5MmJlMWY2MWY1ZDQ5YzI4NmY2M2FkYTYwMTk1OTMzYTI2ZDhjIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CkBAIC0zNSw3
ICszNSw2IEBAIGltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQg
aW1wb3J0IFBvcnQsIERyaXZlciwgRHJpdmVyT3V0cHV0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgot
ZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0K
IAogCkBAIC01Niw3ICs1NSw3IEBAIGNsYXNzIFRlc3RJbnN0YW5jZShvYmplY3QpOgogCiAgICAg
ICAgICMgVGhlIHZhbHVlcyBvZiBlYWNoIGZpZWxkIGFyZSB0cmVhdGVkIGFzIHJhdyBieXRlIHN0
cmluZ3MuIFRoZXkKICAgICAgICAgIyB3aWxsIGJlIGNvbnZlcnRlZCB0byB1bmljb2RlIHN0cmlu
Z3Mgd2hlcmUgYXBwcm9wcmlhdGUgdXNpbmcKLSAgICAgICAgIyBNb2NrRmlsZVN5c3RlbS5yZWFk
X3RleHRfZmlsZSgpLgorICAgICAgICAjIEZpbGVTeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoKS4KICAg
ICAgICAgc2VsZi5hY3R1YWxfdGV4dCA9IHNlbGYuYmFzZSArICctdHh0JwogICAgICAgICBzZWxm
LmFjdHVhbF9jaGVja3N1bSA9IHNlbGYuYmFzZSArICctY2hlY2tzdW0nCiAKQEAgLTIyNywzNSAr
MjI2LDExIEBAIExBWU9VVF9URVNUX0RJUiA9ICcvdGVzdC5jaGVja291dC9MYXlvdXRUZXN0cycK
ICMgSGVyZSB3ZSBzeW50aGVzaXplIGFuIGluLW1lbW9yeSBmaWxlc3lzdGVtIGZyb20gdGhlIHRl
c3QgbGlzdAogIyBpbiBvcmRlciB0byBmdWxseSBjb250cm9sIHRoZSB0ZXN0IG91dHB1dCBhbmQg
dG8gZGVtb25zdHJhdGUgdGhhdAogIyB3ZSBkb24ndCBuZWVkIGEgcmVhbCBmaWxlc3lzdGVtIHRv
IHJ1biB0aGUgdGVzdHMuCi0KLWRlZiB1bml0X3Rlc3RfZmlsZXN5c3RlbShmaWxlcz1Ob25lKToK
LSAgICAiIiJSZXR1cm4gdGhlIEZpbGVTeXN0ZW0gb2JqZWN0IHVzZWQgYnkgdGhlIHVuaXQgdGVz
dHMuIiIiCi0gICAgdGVzdF9saXN0ID0gdW5pdF90ZXN0X2xpc3QoKQotICAgIGZpbGVzID0gZmls
ZXMgb3Ige30KLQotICAgIGRlZiBhZGRfdGVzdF9maWxlKGZpbGVzLCB0ZXN0LCBzdWZmaXgsIGNv
bnRlbnRzKToKLSAgICAgICAgZGlybmFtZSA9IHRlc3QubmFtZVswOnRlc3QubmFtZS5yZmluZCgn
LycpXQotICAgICAgICBiYXNlID0gdGVzdC5iYXNlCi0gICAgICAgIGFkZF9maWxlKGZpbGVzLCBk
aXJuYW1lICsgJy8nICsgYmFzZSArIHN1ZmZpeCwgY29udGVudHMpCi0KLSAgICBkZWYgYWRkX2Zp
bGUoZmlsZXMsIGZpbGVfbmFtZSwgY29udGVudHMpOgotICAgICAgICBmaWxlc1tMQVlPVVRfVEVT
VF9ESVIgKyAnLycgKyBmaWxlX25hbWVdID0gY29udGVudHMKLQotICAgICMgQWRkIGVhY2ggdGVz
dCBhbmQgdGhlIGV4cGVjdGVkIG91dHB1dCwgaWYgYW55LgotICAgIGZvciB0ZXN0IGluIHRlc3Rf
bGlzdC50ZXN0cy52YWx1ZXMoKToKLSAgICAgICAgYWRkX3Rlc3RfZmlsZShmaWxlcywgdGVzdCwg
Jy5odG1sJywgJycpCi0gICAgICAgIGlmIHRlc3QuaXNfcmVmdGVzdDoKLSAgICAgICAgICAgIGNv
bnRpbnVlCi0gICAgICAgIGlmIHRlc3QuYWN0dWFsX2F1ZGlvOgotICAgICAgICAgICAgYWRkX3Rl
c3RfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC53YXYnLCB0ZXN0LmV4cGVjdGVkX2F1ZGlv
KQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBhZGRfdGVzdF9maWxlKGZpbGVzLCB0
ZXN0LCAnLWV4cGVjdGVkLnR4dCcsIHRlc3QuZXhwZWN0ZWRfdGV4dCkKLSAgICAgICAgYWRkX3Rl
c3RfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC5wbmcnLCB0ZXN0LmV4cGVjdGVkX2ltYWdl
KQotCi0KK2RlZiBhZGRfdW5pdF90ZXN0c190b19tb2NrX2ZpbGVzeXN0ZW0oZmlsZXN5c3RlbSk6
CiAgICAgIyBBZGQgdGhlIHRlc3RfZXhwZWN0YXRpb25zIGZpbGUuCi0gICAgZmlsZXNbTEFZT1VU
X1RFU1RfRElSICsgJy9wbGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCddID0gIiIi
CisgICAgZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShMQVlPVVRfVEVTVF9ESVIgKyAn
L3BsYXRmb3JtL3Rlc3QnKQorICAgIGlmIG5vdCBmaWxlc3lzdGVtLmV4aXN0cyhMQVlPVVRfVEVT
VF9ESVIgKyAnL3BsYXRmb3JtL3Rlc3QvdGVzdF9leHBlY3RhdGlvbnMudHh0Jyk6CisgICAgICAg
IGZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKExBWU9VVF9URVNUX0RJUiArICcvcGxhdGZvcm0v
dGVzdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnLCAiIiIKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBl
Y3RlZC9jaGVja3N1bS5odG1sID0gSU1BR0UKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9j
cmFzaC5odG1sID0gQ1JBU0gKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1s
ID0gSU1BR0UKQEAgLTI3NSw5ICsyNTAsMTAgQEAgV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVk
L3RpbWVvdXQuaHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVk
L2hhbmcuaHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2tl
eWJvYXJkLmh0bWwgPSBDUkFTSAogV09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvZXhj
ZXB0aW9uLmh0bWwgPSBDUkFTSAotIiIiCisiIiIpCiAKLSAgICBhZGRfZmlsZShmaWxlcywgJ3Jl
ZnRlc3RzL2Zvby9yZWZ0ZXN0Lmxpc3QnLCAiIiIKKyAgICBmaWxlc3lzdGVtLm1heWJlX21ha2Vf
ZGlyZWN0b3J5KExBWU9VVF9URVNUX0RJUiArICcvcmVmdGVzdHMvZm9vJykKKyAgICBmaWxlc3lz
dGVtLndyaXRlX3RleHRfZmlsZShMQVlPVVRfVEVTVF9ESVIgKyAnL3JlZnRlc3RzL2Zvby9yZWZ0
ZXN0Lmxpc3QnLCAiIiIKID09IHRlc3QuaHRtbCB0ZXN0LXJlZi5odG1sCiAKID09IG11bHRpcGxl
LW1hdGNoLXN1Y2Nlc3MuaHRtbCBtaXNtYXRjaGluZy1yZWYuaHRtbApAQCAtMzAxLDkgKzI3Nywy
NiBAQCBXT05URklYIFNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRtbCA9IENS
QVNICiAgICAgIyBBZGQgaW4gYSBmaWxlIHNob3VsZCBiZSBpZ25vcmVkIGJ5IHBvcnQuZmluZF90
ZXN0X2ZpbGVzKCkuCiAgICAgI2ZpbGVzW0xBWU9VVF9URVNUX0RJUiArICcvdXNlcnNjcmlwdHMv
cmVzb3VyY2VzL2lmcmFtZS5odG1sJ10gPSAnaWZyYW1lJwogCi0gICAgZnMgPSBNb2NrRmlsZVN5
c3RlbShmaWxlcywgZGlycz1zZXQoWycvbW9jay1jaGVja291dCddKSkgICMgTWFrZSBzdXJlIGF0
IGxlYXN0IHRoZSBjaGVja291dF9yb290IGV4aXN0cyBhcyBhIGRpcmVjdG9yeS4KLSAgICBmcy5f
dGVzdHMgPSB0ZXN0X2xpc3QKLSAgICByZXR1cm4gZnMKKyAgICBkZWYgYWRkX2ZpbGUodGVzdCwg
c3VmZml4LCBjb250ZW50cyk6CisgICAgICAgIGRpcm5hbWUgPSBmaWxlc3lzdGVtLmpvaW4oTEFZ
T1VUX1RFU1RfRElSLCB0ZXN0Lm5hbWVbMDp0ZXN0Lm5hbWUucmZpbmQoJy8nKV0pCisgICAgICAg
IGJhc2UgPSB0ZXN0LmJhc2UKKyAgICAgICAgZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9y
eShkaXJuYW1lKQorICAgICAgICBmaWxlc3lzdGVtLndyaXRlX2JpbmFyeV9maWxlKGZpbGVzeXN0
ZW0uam9pbihkaXJuYW1lLCBiYXNlICsgc3VmZml4KSwgY29udGVudHMpCisKKyAgICAjIEFkZCBl
YWNoIHRlc3QgYW5kIHRoZSBleHBlY3RlZCBvdXRwdXQsIGlmIGFueS4KKyAgICB0ZXN0X2xpc3Qg
PSB1bml0X3Rlc3RfbGlzdCgpCisgICAgZm9yIHRlc3QgaW4gdGVzdF9saXN0LnRlc3RzLnZhbHVl
cygpOgorICAgICAgICBhZGRfZmlsZSh0ZXN0LCAnLmh0bWwnLCAnJykKKyAgICAgICAgaWYgdGVz
dC5pc19yZWZ0ZXN0OgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgdGVzdC5hY3R1
YWxfYXVkaW86CisgICAgICAgICAgICBhZGRfZmlsZSh0ZXN0LCAnLWV4cGVjdGVkLndhdicsIHRl
c3QuZXhwZWN0ZWRfYXVkaW8pCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBhZGRfZmls
ZSh0ZXN0LCAnLWV4cGVjdGVkLnR4dCcsIHRlc3QuZXhwZWN0ZWRfdGV4dCkKKyAgICAgICAgYWRk
X2ZpbGUodGVzdCwgJy1leHBlY3RlZC5wbmcnLCB0ZXN0LmV4cGVjdGVkX2ltYWdlKQorCisgICAg
IyBDbGVhciB0aGUgbGlzdCBvZiB3cml0dGVuIGZpbGVzIHNvIHRoYXQgd2UgY2FuIHdhdGNoIHdo
YXQgaGFwcGVucyBkdXJpbmcgdGVzdGluZy4KKyAgICBmaWxlc3lzdGVtLmNsZWFyX3dyaXR0ZW5f
ZmlsZXMoKQogCiAKIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgpAQCAtMzE0LDI0ICszMDcsMTUgQEAg
Y2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgICAgICd0ZXN0LWxpbnV4LXg4Nl82NCcsCiAgICAg
KQogCi0gICAgZGVmIF9zZXRfZGVmYXVsdF9vdmVycmlkaW5nX25vbmUoc2VsZiwgZGljdGlvbmFy
eSwga2V5LCBkZWZhdWx0KToKLSAgICAgICAgIyBkaWN0LnNldGRlZmF1bHQgYWxtb3N0IHdvcmtz
LCBidXQgd29uJ3QgYWN0dWFsbHkgb3ZlcnJpZGUgTm9uZSB2YWx1ZXMsIHdoaWNoIHdlIHdhbnQu
Ci0gICAgICAgIGlmIG5vdCBkaWN0aW9uYXJ5LmdldChrZXkpOgotICAgICAgICAgICAgZGljdGlv
bmFyeVtrZXldID0gZGVmYXVsdAotICAgICAgICByZXR1cm4gZGljdGlvbmFyeVtrZXldCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD1Ob25lLCBwb3J0X25hbWU9Tm9uZSwgKiprd2FyZ3Mp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9Tm9uZSwgKiprd2FyZ3Mp
OgogICAgICAgICBpZiBub3QgcG9ydF9uYW1lIG9yIHBvcnRfbmFtZSA9PSAndGVzdCc6CiAgICAg
ICAgICAgICBwb3J0X25hbWUgPSAndGVzdC1tYWMtbGVvcGFyZCcKIAotICAgICAgICBob3N0ID0g
aG9zdCBvciBNb2NrSG9zdCgpCi0gICAgICAgIGZpbGVzeXN0ZW0gPSBzZWxmLl9zZXRfZGVmYXVs
dF9vdmVycmlkaW5nX25vbmUoa3dhcmdzLCAnZmlsZXN5c3RlbScsIHVuaXRfdGVzdF9maWxlc3lz
dGVtKCkpCi0KLSAgICAgICAgUG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9cG9y
dF9uYW1lLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5fdGVzdHMgPSB1bml0X3Rlc3RfbGlzdCgp
CisgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9uc19wYXRoID0gTEFZT1VUX1RFU1RfRElSICsgJy9w
bGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcKICAgICAgICAgc2VsZi5fcmVzdWx0
c19kaXJlY3RvcnkgPSBOb25lCiAKLSAgICAgICAgYXNzZXJ0IGZpbGVzeXN0ZW0uX3Rlc3RzCi0g
ICAgICAgIHNlbGYuX3Rlc3RzID0gZmlsZXN5c3RlbS5fdGVzdHMKKyAgICAgICAgUG9ydC5fX2lu
aXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9cG9ydF9uYW1lLCAqKmt3YXJncykKIAogICAgICAg
ICBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0gJ21hYycKICAgICAgICAgaWYgcG9ydF9uYW1lLnN0
YXJ0c3dpdGgoJ3Rlc3Qtd2luJyk6CkBAIC0zNDksNyArMzMzLDYgQEAgY2xhc3MgVGVzdFBvcnQo
UG9ydCk6CiAgICAgICAgIH0KICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHZlcnNpb25fbWFwW3Bv
cnRfbmFtZV0KIAotICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNfcGF0aCA9IExBWU9VVF9URVNU
X0RJUiArICcvcGxhdGZvcm0vdGVzdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnCiAKICAgICBkZWYg
X3BhdGhfdG9fZHJpdmVyKHNlbGYpOgogICAgICAgICAjIFRoaXMgcm91dGluZSBzaG91bGRuJ3Qg
bm9ybWFsbHkgYmUgY2FsbGVkLCBidXQgaXQgaXMgY2FsbGVkIGJ5CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0
LnB5CmluZGV4IGNjOGZmODM5MTg2NDM1ODA4N2EyMDYzYjBhYjdlOTdlNTJiNzcwNGYuLjk0MDIw
ZGU1OGVkNWUzYjZjMDUyMjQ1N2RiZWUzYzZlOGJhNDM3MzggMTAwNzU1Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0
LnB5CkBAIC00MSwxMyArNDEsMTIgQEAgZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9y
dCBNb2NrT3B0aW9ucwogY2xhc3MgVGVzdFdlYktpdFBvcnQoV2ViS2l0UG9ydCk6CiAgICAgcG9y
dF9uYW1lID0gInRlc3R3ZWJraXRwb3J0IgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN5bWJv
bHNfc3RyaW5nPU5vbmUsIGZlYXR1cmVfbGlzdD1Ob25lLAotICAgICAgICAgICAgICAgICBleHBl
Y3RhdGlvbnNfZmlsZT1Ob25lLCBza2lwc19maWxlPU5vbmUsIGhvc3Q9Tm9uZSwKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgaG9zdCwgc3ltYm9sc19zdHJpbmc9Tm9uZSwgZmVhdHVyZV9saXN0PU5v
bmUsCisgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uc19maWxlPU5vbmUsIHNraXBzX2ZpbGU9
Tm9uZSwKICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLnN5bWJvbHNf
c3RyaW5nID0gc3ltYm9sc19zdHJpbmcgICMgUGFzc2luZyAiIiBkaXNhYmxlcyBhbGwgc3RhdGlj
bHktZGV0ZWN0YWJsZSBmZWF0dXJlcy4KICAgICAgICAgc2VsZi5mZWF0dXJlX2xpc3QgPSBmZWF0
dXJlX2xpc3QgICMgUGFzc2luZyBbXSBkaXNhYmxlcyBhbGwgcnVudGltZS1kZXRlY3RhYmxlIGZl
YXR1cmVzLgotICAgICAgICBob3N0ID0gaG9zdCBvciBNb2NrSG9zdCgpCi0gICAgICAgIFdlYktp
dFBvcnQuX19pbml0X18oc2VsZiwgaG9zdD1ob3N0LCAqKmt3YXJncykKKyAgICAgICAgV2ViS2l0
UG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCAqKmt3YXJncykKIAogICAgIGRlZiBhbGxfdGVzdF9j
b25maWd1cmF0aW9ucyhzZWxmKToKICAgICAgICAgcmV0dXJuIFtUZXN0Q29uZmlndXJhdGlvbi5m
cm9tX3BvcnQoc2VsZildCkBAIC0xMDMsNyArMTAyLDcgQEAgY2xhc3MgV2ViS2l0UG9ydFRlc3Qo
cG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICAgICAgIm1odG1sIiwgICMgUmVx
dWlyZXMgTUhUTUxBcmNoaXZlCiAgICAgICAgIF0pCiAKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9y
aWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KHN5bWJvbHNfc3RyaW5nLCBOb25lKS5fc2tpcHBlZF90
ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXMoKSkKKyAgICAgICAgcmVzdWx0X2RpcmVjdG9y
aWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KE1vY2tIb3N0KCksIHN5bWJvbHNfc3RyaW5nLCBOb25l
KS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXMoKSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXN1bHRfZGlyZWN0b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVzKQog
CiAgICAgICAgICMgVGVzdCB0aGF0IHRoZSBubSBzdHJpbmcgcGFyc2luZyBhY3R1YWxseSB3b3Jr
czoKQEAgLTExNCw3ICsxMTMsNyBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNl
LlBvcnRUZXN0Q2FzZSk6CiAiIiIKICAgICAgICAgIyBOb3RlICdjb21wb3NpdGluZycgaXMgbm90
IGluIHRoZSBsaXN0IG9mIHNraXBwZWQgZGlyZWN0b3JpZXMgKGhlbmNlIHRoZSBwYXJzaW5nIG9m
IEdyYXBoaWNzTGF5ZXIgd29ya2VkKToKICAgICAgICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMgPSBz
ZXQoWydtYXRobWwnLCAndHJhbnNmb3Jtcy8zZCcsICdjb21wb3NpdGluZy93ZWJnbCcsICdmYXN0
L2NhbnZhcy93ZWJnbCcsICdhbmltYXRpb25zLzNkJywgJ21odG1sJywgJ2h0dHAvdGVzdHMvY2Fu
dmFzL3dlYmdsJ10pCi0gICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0
UG9ydChzeW1ib2xzX3N0cmluZywgTm9uZSkuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVk
X2ZlYXR1cmVzKCkpCisgICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0
UG9ydChNb2NrSG9zdCgpLCBzeW1ib2xzX3N0cmluZywgTm9uZSkuX3NraXBwZWRfdGVzdHNfZm9y
X3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0
X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKIAogICAgIGRlZiB0ZXN0X3J1bnRp
bWVfZmVhdHVyZV9saXN0KHNlbGYpOgpAQCAtMTI4LDE0ICsxMjcsMTQgQEAgY2xhc3MgV2ViS2l0
UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3NraXBw
ZWRfZGlyZWN0b3JpZXNfZm9yX2ZlYXR1cmVzKHNlbGYpOgogICAgICAgICBzdXBwb3J0ZWRfZmVh
dHVyZXMgPSBbIkFjY2VsZXJhdGVkIENvbXBvc2l0aW5nIiwgIkZvbyBGZWF0dXJlIl0KICAgICAg
ICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMgPSBzZXQoWyJhbmltYXRpb25zLzNkIiwgInRyYW5zZm9y
bXMvM2QiXSkKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0
KE5vbmUsIHN1cHBvcnRlZF9mZWF0dXJlcykuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVk
X2ZlYXR1cmVzKCkpCisgICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0
UG9ydChNb2NrSG9zdCgpLCBOb25lLCBzdXBwb3J0ZWRfZmVhdHVyZXMpLl9za2lwcGVkX3Rlc3Rz
X2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCiAKICAgICBkZWYgdGVzdF9z
a2lwcGVkX2xheW91dF90ZXN0cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0
V2ViS2l0UG9ydChOb25lLCBOb25lKS5za2lwcGVkX2xheW91dF90ZXN0cygpLCBzZXQoWydtZWRp
YSddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgp
LCBOb25lLCBOb25lKS5za2lwcGVkX2xheW91dF90ZXN0cygpLCBzZXQoWydtZWRpYSddKSkKIAog
ICAgIGRlZiB0ZXN0X3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoc2VsZik6Ci0gICAgICAgIHBv
cnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChNb2Nr
SG9zdCgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX3NraXBwZWRfZmlsZV9zZWFy
Y2hfcGF0aHMoKSwgc2V0KFsndGVzdHdlYmtpdHBvcnQnXSkpCiAgICAgICAgIHBvcnQuX25hbWUg
PSAidGVzdHdlYmtpdHBvcnQtdmVyc2lvbiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0
Ll9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKCksIHNldChbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rl
c3R3ZWJraXRwb3J0LXZlcnNpb24nXSkpCkBAIC0xNDMsMjIgKzE0MiwyMiBAQCBjbGFzcyBXZWJL
aXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocG9ydC5fc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocygpLCBzZXQoWyd0ZXN0d2Vi
a2l0cG9ydCcsICd0ZXN0d2Via2l0cG9ydC12ZXJzaW9uJywgJ3Rlc3R3ZWJraXRwb3J0LXdrMics
ICd3azInXSkpCiAKICAgICBkZWYgdGVzdF9yb290X29wdGlvbihzZWxmKToKLSAgICAgICAgcG9y
dCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KE1vY2tI
b3N0KCkpCiAgICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhyb290PScvZm9vJykK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9wYXRoX3RvX2RyaXZlcigpLCAiL2Zvby9E
dW1wUmVuZGVyVHJlZSIpCiAKICAgICBkZWYgdGVzdF90ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToK
ICAgICAgICAgIyBDaGVjayB0aGF0IHdlIHJlYWQgdGhlIGV4cGVjdGF0aW9ucyBmaWxlCi0gICAg
ICAgIGZpbGVzID0gewotICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3Bs
YXRmb3JtL3Rlc3R3ZWJraXRwb3J0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCc6ICdCVUdfVEVTVEVY
UEVDVEFUSU9OUyBTS0lQIDogZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sID0gRkFJTFxu
JywKLSAgICAgICAgfQotICAgICAgICBtb2NrX2ZzID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCi0g
ICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChmaWxlc3lzdGVtPW1vY2tfZnMpCisgICAgICAg
IGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2Zp
bGUoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3R3ZWJraXRwb3J0L3Rl
c3RfZXhwZWN0YXRpb25zLnR4dCcsCisgICAgICAgICAgICAnQlVHX1RFU1RFWFBFQ1RBVElPTlMg
U0tJUCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IEZBSUxcbicpCisgICAgICAg
IHBvcnQgPSBUZXN0V2ViS2l0UG9ydChob3N0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQudGVzdF9leHBlY3RhdGlvbnMoKSwgJ0JVR19URVNURVhQRUNUQVRJT05TIFNLSVAgOiBmYXN0
L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwgPSBGQUlMXG4nKQogCiAgICAgZGVmIHRlc3RfYnVp
bGRfZHJpdmVyKHNlbGYpOgogICAgICAgICBvdXRwdXQgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAg
ICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAg
ICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KGhvc3QpCiAgICAgICAgICMgRGVsYXkgc2V0dGlu
ZyBfZXhlY3V0aXZlIHRvIGF2b2lkIGxvZ2dpbmcgZHVyaW5nIGNvbnN0cnVjdGlvbgogICAgICAg
ICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkKICAgICAg
ICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249IlJlbGVhc2UiKSAg
IyBUaGlzIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5LCBidXQgSSB0aGluayBUZXN0V2ViS2l0UG9y
dCBpcyBhY3R1YWxseSByZWFkaW5nIGZyb20gZGlzayAoYW5kIHRodXMgZGV0ZWN0cyB0aGUgY3Vy
cmVudCBjb25maWd1cmF0aW9uKS4KQEAgLTE4OSw3ICsxODgsNyBAQCBjbGFzcyBXZWJLaXRQb3J0
VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHBvcnQuX2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybShwbGF0Zm9ybSks
IGNvbmZpZ19maWxlKQogCiAgICAgZGVmIHRlc3RfbGludXhfZGlzdHJvX2RldGVjdGlvbihzZWxm
KToKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RX
ZWJLaXRQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNf
cmVkaGF0X2Jhc2VkKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNfZGViaWFu
X2Jhc2VkKCkpCiAKQEAgLTIwMiw3ICsyMDEsNyBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0
X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9p
c19kZWJpYW5fYmFzZWQoKSkKIAogICAgIGRlZiB0ZXN0X2FwYWNoZV9jb25maWdfZmlsZV9uYW1l
X2Zvcl9wbGF0Zm9ybShzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAg
ICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIHNlbGYuX2Fz
c2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2N5Z3dpbicsICdjeWd3aW4taHR0
cGQuY29uZicpCiAKICAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9y
bShwb3J0LCAnbGludXgyJywgJ2FwYWNoZTItaHR0cGQuY29uZicpCkBAIC0yMTEsNyArMjEwLDcg
QEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAg
ICAgICBwb3J0Ll9pc19yZWRoYXRfYmFzZWQgPSBsYW1iZGE6IFRydWUKICAgICAgICAgc2VsZi5f
YXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnbGludXgyJywgJ2ZlZG9yYS1o
dHRwZC5jb25mJykKIAotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQorICAgICAgICBw
b3J0ID0gVGVzdFdlYktpdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgcG9ydC5faXNfZGViaWFu
X2Jhc2VkID0gbGFtYmRhOiBUcnVlCiAgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9m
b3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4MicsICdhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mJykK
IApAQCAtMjIwLDcgKzIxOSw3IEBAIGNsYXNzIFdlYktpdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2Uu
UG9ydFRlc3RDYXNlKToKICAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0
Zm9ybShwb3J0LCAnYmFyZicsICdhcGFjaGUyLWh0dHBkLmNvbmYnKQogCiAgICAgZGVmIHRlc3Rf
cGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2Vi
S2l0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpKQogICAg
ICAgICAjIE1vY2sgb3V0IF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0gdG8g
aWdub3JlIHRoZSBwYXNzZWQgc3lzLnBsYXRmb3JtIHZhbHVlLgogICAgICAgICBwb3J0Ll9hcGFj
aGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0gPSBsYW1iZGEgcGxhdGZvcm06ICdodHRw
ZC5jb25mJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9wYXRoX3RvX2FwYWNoZV9j
b25maWdfZmlsZSgpLCAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvaHR0cC9jb25mL2h0dHBk
LmNvbmYnKQpAQCAtMjQ4LDcgKzI0Nyw3IEBAIGNsYXNzIE1vY2tTZXJ2ZXJQcm9jZXNzKG9iamVj
dCk6CiAKIGNsYXNzIFdlYktpdERyaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRl
ZiB0ZXN0X3JlYWRfYmxvY2soc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgp
CisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICBkcml2
ZXIgPSBXZWJLaXREcml2ZXIocG9ydCwgMCwgcGl4ZWxfdGVzdHM9RmFsc2UpCiAgICAgICAgIGRy
aXZlci5fc2VydmVyX3Byb2Nlc3MgPSBNb2NrU2VydmVyUHJvY2VzcyhbCiAgICAgICAgICAgICAn
QWN0dWFsSGFzaDogZm9vYmFyJywKQEAgLTI2Miw3ICsyNjEsNyBAQCBjbGFzcyBXZWJLaXREcml2
ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29u
dGVudF9ibG9jay5jb250ZW50X2hhc2gsICdmb29iYXInKQogCiAgICAgZGVmIHRlc3RfcmVhZF9i
aW5hcnlfYmxvY2soc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAg
ICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICBkcml2ZXIgPSBX
ZWJLaXREcml2ZXIocG9ydCwgMCwgcGl4ZWxfdGVzdHM9VHJ1ZSkKICAgICAgICAgZHJpdmVyLl9z
ZXJ2ZXJfcHJvY2VzcyA9IE1vY2tTZXJ2ZXJQcm9jZXNzKFsKICAgICAgICAgICAgICdBY3R1YWxI
YXNoOiBhY3R1YWwnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggZDEwYjBjMTdmYTlkNzJkMjczZWFiYmYy
ODEyNWE3ZTAxMWU0MzQ2ZC4uZjI0YmE1ZDhlMTgzYzIwMTQ3YWI5ZDE1YjQ5NjdlMDc4MDZiZjRi
ZiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dl
YmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0zNyw2ICszNyw3IEBAIGltcG9ydCBzaWduYWwKIGltcG9y
dCBzeXMKIAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAorZnJvbSB3ZWJr
aXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMuY29udHJvbGxlcnMubWFuYWdlciBpbXBvcnQgTWFuYWdlciwgV29ya2VyRXhjZXB0
aW9uCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRpbmcKIApA
QCAtNDA5LDcgKzQxMCwxMCBAQCBkZWYgcGFyc2VfYXJncyhhcmdzPU5vbmUpOgogCiBkZWYgbWFp
bigpOgogICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZV9hcmdzKCkKLSAgICBob3N0ID0gSG9zdCgp
CisgICAgaWYgb3B0aW9ucy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd0ZXN0Jyk6CisgICAgICAgIGhv
c3QgPSBNb2NrSG9zdCgpCisgICAgZWxzZToKKyAgICAgICAgaG9zdCA9IEhvc3QoKQogICAgIGhv
c3QuX2luaXRpYWxpemVfc2NtKCkKICAgICBwb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KG9w
dGlvbnMucGxhdGZvcm0sIG9wdGlvbnMpCiAgICAgcmV0dXJuIHJ1bihwb3J0LCBvcHRpb25zLCBh
cmdzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQppbmRleCBl
ODY5ZjcxZDMwNjMxYjAxNTc2ZjE1NThhNzQ5NzE0YmYwMDg0MDQ2Li4xZjMwNmNjMWNmOTZjMmQw
N2U0MjYxMDA4MzA1Mjc5MDNmZmZiOTQxIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2lu
dGVncmF0aW9udGVzdC5weQpAQCAtNjYsNyArNjYsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5o
b3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBv
cnQgcG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVz
dHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IFBvcnQKLWZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQudGVzdCBpbXBvcnQgVGVzdFBvcnQsIFRlc3REcml2ZXIs
IHVuaXRfdGVzdF9maWxlc3lzdGVtCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnRl
c3QgaW1wb3J0IFRlc3RQb3J0LCBUZXN0RHJpdmVyCiBmcm9tIHdlYmtpdHB5LnB5dGhvbjI0LnZl
cnNpb25pbmcgaW1wb3J0IGNvbXBhcmVfdmVyc2lvbgogZnJvbSB3ZWJraXRweS50ZXN0LnNraXAg
aW1wb3J0IHNraXBfaWYKIApAQCAtOTYsMjcgKzk2LDI1IEBAIGRlZiBwYXJzZV9hcmdzKGV4dHJh
X2FyZ3M9Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFsc2UsIHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBu
ZXdfCiAgICAgcmV0dXJuIHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncyhhcmdzKQogCiAKLWRl
ZiBwYXNzaW5nX3J1bihleHRyYV9hcmdzPU5vbmUsIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1
bHRzPUZhbHNlLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmlsZXN5c3RlbT1Ob25lKToKK2RlZiBw
YXNzaW5nX3J1bihleHRyYV9hcmdzPU5vbmUsIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1bHRz
PUZhbHNlLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgaG9zdD1Ob25lKToKICAgICBvcHRpb25zLCBw
YXJzZWRfYXJncyA9IHBhcnNlX2FyZ3MoZXh0cmFfYXJncywgcmVjb3JkX3Jlc3VsdHMsIHRlc3Rz
X2luY2x1ZGVkKQotICAgIGZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtIG9yIHVuaXRfdGVzdF9maWxl
c3lzdGVtKCkKICAgICBpZiBub3QgcG9ydF9vYmo6Ci0gICAgICAgIGhvc3QgPSBNb2NrSG9zdCgp
Ci0gICAgICAgIHBvcnRfb2JqID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZT1vcHRp
b25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAg
ICAgICAgaG9zdCA9IGhvc3Qgb3IgTW9ja0hvc3QoKQorICAgICAgICBwb3J0X29iaiA9IGhvc3Qu
cG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRp
b25zKQogICAgIGJ1aWxkYm90X291dHB1dCA9IGFycmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCiAg
ICAgcmVndWxhcl9vdXRwdXQgPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQogICAgIHJlcyA9
IHJ1bl93ZWJraXRfdGVzdHMucnVuKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncywgYnVp
bGRib3Rfb3V0cHV0PWJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9vdXRwdXQ9cmVndWxhcl9vdXRw
dXQpCiAgICAgcmV0dXJuIHJlcyA9PSAwIGFuZCByZWd1bGFyX291dHB1dC5lbXB0eSgpIGFuZCBi
dWlsZGJvdF9vdXRwdXQuZW1wdHkoKQogCiAKLWRlZiBsb2dnaW5nX3J1bihleHRyYV9hcmdzPU5v
bmUsIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLCB0ZXN0c19pbmNsdWRlZD1G
YWxzZSwgZmlsZXN5c3RlbT1Ob25lLCBuZXdfcmVzdWx0cz1GYWxzZSk6CitkZWYgbG9nZ2luZ19y
dW4oZXh0cmFfYXJncz1Ob25lLCBwb3J0X29iaj1Ob25lLCByZWNvcmRfcmVzdWx0cz1GYWxzZSwg
dGVzdHNfaW5jbHVkZWQ9RmFsc2UsIGhvc3Q9Tm9uZSwgbmV3X3Jlc3VsdHM9RmFsc2UpOgogICAg
IG9wdGlvbnMsIHBhcnNlZF9hcmdzID0gcGFyc2VfYXJncyhleHRyYV9hcmdzPWV4dHJhX2FyZ3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZF9yZXN1bHRzPXJl
Y29yZF9yZXN1bHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
c19pbmNsdWRlZD10ZXN0c19pbmNsdWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJpbnRfbm90aGluZz1GYWxzZSwgbmV3X3Jlc3VsdHM9bmV3X3Jlc3VsdHMpCi0g
ICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICBmaWxlc3lzdGVtID0gZmlsZXN5c3RlbSBvciB1bml0
X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgaG9zdCA9IGhvc3Qgb3IgTW9ja0hvc3QoKQogICAgIGlm
IG5vdCBwb3J0X29iajoKLSAgICAgICAgcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQo
cG9ydF9uYW1lPW9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0aW9ucywgZmlsZXN5c3RlbT1m
aWxlc3lzdGVtKQorICAgICAgICBwb3J0X29iaiA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChwb3J0
X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zKQogCiAgICAgcmVzLCBidWls
ZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0ID0gcnVuX2FuZF9jYXB0dXJlKHBvcnRfb2JqLCBv
cHRpb25zLCBwYXJzZWRfYXJncykKICAgICByZXR1cm4gKHJlcywgYnVpbGRib3Rfb3V0cHV0LCBy
ZWd1bGFyX291dHB1dCwgaG9zdC51c2VyKQpAQCAtMTM3LDcgKzEzNSw3IEBAIGRlZiBydW5fYW5k
X2NhcHR1cmUocG9ydF9vYmosIG9wdGlvbnMsIHBhcnNlZF9hcmdzKToKIAogCiBkZWYgZ2V0X3Rl
c3RzX3J1bihleHRyYV9hcmdzPU5vbmUsIHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2Jh
dGNoZXM9RmFsc2UsCi0gICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtPU5vbmUsIGluY2x1ZGVf
cmVmZXJlbmNlX2h0bWw9RmFsc2UpOgorICAgICAgICAgICAgICAgICAgaG9zdD1Ob25lLCBpbmNs
dWRlX3JlZmVyZW5jZV9odG1sPUZhbHNlKToKICAgICBleHRyYV9hcmdzID0gZXh0cmFfYXJncyBv
ciBbXQogICAgIGlmIG5vdCB0ZXN0c19pbmNsdWRlZDoKICAgICAgICAgIyBOb3QgaW5jbHVkaW5n
IGh0dHAgdGVzdHMgc2luY2UgdGhleSBnZXQgcnVuIG91dCBvZiBvcmRlciAodGhhdApAQCAtMTQ1
LDExICsxNDMsOSBAQCBkZWYgZ2V0X3Rlc3RzX3J1bihleHRyYV9hcmdzPU5vbmUsIHRlc3RzX2lu
Y2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2JhdGNoZXM9RmFsc2UsCiAgICAgICAgIGV4dHJhX2FyZ3Mg
PSBbJ3Bhc3NlcycsICdmYWlsdXJlcyddICsgZXh0cmFfYXJncwogICAgIG9wdGlvbnMsIHBhcnNl
ZF9hcmdzID0gcGFyc2VfYXJncyhleHRyYV9hcmdzLCB0ZXN0c19pbmNsdWRlZD1UcnVlKQogCi0g
ICAgaG9zdCA9IE1vY2tIb3N0KCkKLQorICAgIGhvc3QgPSBob3N0IG9yIE1vY2tIb3N0KCkKICAg
ICB0ZXN0X2JhdGNoZXMgPSBbXQogCi0KICAgICBjbGFzcyBSZWNvcmRpbmdUZXN0RHJpdmVyKFRl
c3REcml2ZXIpOgogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgd29ya2VyX251bWJl
cik6CiAgICAgICAgICAgICBUZXN0RHJpdmVyLl9faW5pdF9fKHNlbGYsIHBvcnQsIHdvcmtlcl9u
dW1iZXIsIHBpeGVsX3Rlc3RzPXBvcnQuZ2V0X29wdGlvbigncGl4ZWxfdGVzdCcpKQpAQCAtMTc2
LDcgKzE3Miw3IEBAIGRlZiBnZXRfdGVzdHNfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgdGVzdHNfaW5j
bHVkZWQ9RmFsc2UsIGZsYXR0ZW5fYmF0Y2hlcz1GYWxzZSwKICAgICAgICAgZGVmIGNyZWF0ZV9k
cml2ZXIoc2VsZiwgd29ya2VyX251bWJlcik6CiAgICAgICAgICAgICByZXR1cm4gUmVjb3JkaW5n
VGVzdERyaXZlcihzZWxmLCB3b3JrZXJfbnVtYmVyKQogCi0gICAgcmVjb3JkaW5nX3BvcnQgPSBS
ZWNvcmRpbmdUZXN0UG9ydChvcHRpb25zPW9wdGlvbnMsIGhvc3Q9aG9zdCwgZmlsZXN5c3RlbT1m
aWxlc3lzdGVtKQorICAgIHJlY29yZGluZ19wb3J0ID0gUmVjb3JkaW5nVGVzdFBvcnQoaG9zdCwg
b3B0aW9ucz1vcHRpb25zKQogICAgIHJ1bl9hbmRfY2FwdHVyZShyZWNvcmRpbmdfcG9ydCwgb3B0
aW9ucywgcGFyc2VkX2FyZ3MpCiAKICAgICBpZiBmbGF0dGVuX2JhdGNoZXM6CkBAIC0zODgsOSAr
Mzg0LDkgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0
X3NpbmdsZV9maWxlKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIg
cmVwbGFjaW5nIG1vcmUgb2YgdGhlIGdldF90ZXN0c19ydW4oKS1zdHlsZSB0ZXN0cwogICAgICAg
ICAjIHdpdGggdGVzdHMgdGhhdCByZWFkIHRoZSB0ZXN0c19ydW4qIGZpbGVzLCBsaWtlIHRoaXMg
b25lLgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgdGVzdHNf
cnVuID0gcGFzc2luZ19ydW4oWydwYXNzZXMvdGV4dC5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRy
dWUsIGZpbGVzeXN0ZW09ZnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZzLnJlYWRfdGV4
dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKSwKKyAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgdGVzdHNfcnVuID0gcGFzc2luZ19ydW4oWydw
YXNzZXMvdGV4dC5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoaG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Bhc3Nlcy90ZXh0Lmh0bWxcbicpCiAKICAgICBkZWYgdGVzdF9zaW5nbGVfZmls
ZV93aXRoX3ByZWZpeChzZWxmKToKQEAgLTQwMiwyOCArMzk4LDI4IEBAIGNsYXNzIE1haW5UZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoW10sIHRlc3Rz
X3J1bikKIAogICAgIGRlZiB0ZXN0X3N0ZGVycl9pc19zYXZlZChzZWxmKToKLSAgICAgICAgZnMg
PSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5n
X3J1bihmaWxlc3lzdGVtPWZzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZnMucmVhZF90
ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wYXNzZXMvZXJyb3Itc3RkZXJyLnR4
dCcpLAorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
cGFzc2luZ19ydW4oaG9zdD1ob3N0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoaG9zdC5m
aWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGFzc2Vz
L2Vycm9yLXN0ZGVyci50eHQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0dWZmIGdv
aW5nIHRvIHN0ZGVycicpCiAKICAgICBkZWYgdGVzdF90ZXN0X2xpc3Qoc2VsZik6Ci0gICAgICAg
IGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQog
ICAgICAgICBmaWxlbmFtZSA9ICcvdG1wL2Zvby50eHQnCi0gICAgICAgIGZzLndyaXRlX3RleHRf
ZmlsZShmaWxlbmFtZSwgJ3Bhc3Nlcy90ZXh0Lmh0bWwnKQotICAgICAgICB0ZXN0c19ydW4gPSBn
ZXRfdGVzdHNfcnVuKFsnLS10ZXN0LWxpc3Q9JXMnICUgZmlsZW5hbWVdLCB0ZXN0c19pbmNsdWRl
ZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSwgZmlsZXN5c3RlbT1mcykKKyAgICAgICAgaG9z
dC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShmaWxlbmFtZSwgJ3Bhc3Nlcy90ZXh0Lmh0bWwn
KQorICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsnLS10ZXN0LWxpc3Q9JXMnICUg
ZmlsZW5hbWVdLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSwgaG9z
dD1ob3N0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy90ZXh0Lmh0bWwnXSwg
dGVzdHNfcnVuKQotICAgICAgICBmcy5yZW1vdmUoZmlsZW5hbWUpCisgICAgICAgIGhvc3QuZmls
ZXN5c3RlbS5yZW1vdmUoZmlsZW5hbWUpCiAgICAgICAgIHJlcywgb3V0LCBlcnIsIHVzZXIgPSBs
b2dnaW5nX3J1bihbJy0tdGVzdC1saXN0PSVzJyAlIGZpbGVuYW1lXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVzeXN0
ZW09ZnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19p
bmNsdWRlZD1UcnVlLCBob3N0PWhvc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAt
MSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlcnIuZW1wdHkoKSkKIAogICAgIGRlZiB0ZXN0
X3Rlc3RfbGlzdF93aXRoX3ByZWZpeChzZWxmKToKLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmls
ZXN5c3RlbSgpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIGZpbGVuYW1lID0g
Jy90bXAvZm9vLnR4dCcKLSAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZpbGVuYW1lLCAnTGF5
b3V0VGVzdHMvcGFzc2VzL3RleHQuaHRtbCcpCi0gICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0
c19ydW4oWyctLXRlc3QtbGlzdD0lcycgJSBmaWxlbmFtZV0sIHRlc3RzX2luY2x1ZGVkPVRydWUs
IGZsYXR0ZW5fYmF0Y2hlcz1UcnVlLCBmaWxlc3lzdGVtPWZzKQorICAgICAgICBob3N0LmZpbGVz
eXN0ZW0ud3JpdGVfdGV4dF9maWxlKGZpbGVuYW1lLCAnTGF5b3V0VGVzdHMvcGFzc2VzL3RleHQu
aHRtbCcpCisgICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWyctLXRlc3QtbGlzdD0l
cycgJSBmaWxlbmFtZV0sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hlcz1UcnVl
LCBob3N0PWhvc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsncGFzc2VzL3RleHQuaHRt
bCddLCB0ZXN0c19ydW4pCiAKICAgICBkZWYgdGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzKHNlbGYp
OgpAQCAtNDM5LDE3ICs0MzUsMTcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgIGRlZiB0ZXN0X21pc3NpbmdfYW5kX3VuZXhwZWN0ZWRfcmVzdWx0cyhzZWxmKToKICAg
ICAgICAgIyBUZXN0IHRoYXQgd2UgdXBkYXRlIGV4cGVjdGF0aW9ucyBpbiBwbGFjZS4gSWYgdGhl
IGV4cGVjdGF0aW9uCiAgICAgICAgICMgaXMgbWlzc2luZywgdXBkYXRlIHRoZSBleHBlY3RlZCBn
ZW5lcmljIGxvY2F0aW9uLgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAg
ICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgcmVzLCBvdXQsIGVyciwgXyA9IGxvZ2dp
bmdfcnVuKFsnLS1uby1zaG93LXJlc3VsdHMnLAogICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVj
dGVkL21pc3NpbmdfaW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3Rl
ZC9taXNzaW5nX3RleHQuaHRtbCcsCiAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC90
ZXh0LWltYWdlLWNoZWNrc3VtLmh0bWwnXSwKLSAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRy
dWUsIGZpbGVzeXN0ZW09ZnMsIHJlY29yZF9yZXN1bHRzPVRydWUpCi0gICAgICAgIGZpbGVfbGlz
dCA9IGZzLndyaXR0ZW5fZmlsZXMua2V5cygpCisgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1U
cnVlLCBob3N0PWhvc3QsIHJlY29yZF9yZXN1bHRzPVRydWUpCisgICAgICAgIGZpbGVfbGlzdCA9
IGhvc3QuZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLmtleXMoKQogICAgICAgICBmaWxlX2xpc3Qu
cmVtb3ZlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhyZXMsIDEpCiAgICAgICAgIGV4cGVjdGVkX3Rva2VuID0gJyJ1
bmV4cGVjdGVkIjp7InRleHQtaW1hZ2UtY2hlY2tzdW0uaHRtbCI6eyJleHBlY3RlZCI6IlBBU1Mi
LCJhY3R1YWwiOiJURVhUIn0sIm1pc3NpbmdfdGV4dC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyIs
ImlzX21pc3NpbmdfdGV4dCI6dHJ1ZSwiYWN0dWFsIjoiTUlTU0lORyJ9JwotICAgICAgICBqc29u
X3N0cmluZyA9IGZzLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVs
bF9yZXN1bHRzLmpzb24nKQorICAgICAgICBqc29uX3N0cmluZyA9IGhvc3QuZmlsZXN5c3RlbS5y
ZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29u
JykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoZXhwZWN0ZWRfdG9r
ZW4pICE9IC0xKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9zdHJpbmcuZmluZCgnIm51
bV9yZWdyZXNzaW9ucyI6MScpICE9IC0xKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9z
dHJpbmcuZmluZCgnIm51bV9mbGFreSI6MCcpICE9IC0xKQpAQCAtNDU4LDc1ICs0NTQsNzQgQEAg
Y2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X21pc3Npbmdf
YW5kX3VuZXhwZWN0ZWRfcmVzdWx0c193aXRoX2N1c3RvbV9leGl0X2NvZGUoc2VsZik6CiAgICAg
ICAgICMgVGVzdCB0aGF0IHdlIHVwZGF0ZSBleHBlY3RhdGlvbnMgaW4gcGxhY2UuIElmIHRoZSBl
eHBlY3RhdGlvbgogICAgICAgICAjIGlzIG1pc3NpbmcsIHVwZGF0ZSB0aGUgZXhwZWN0ZWQgZ2Vu
ZXJpYyBsb2NhdGlvbi4KLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0KICAg
ICAgICAgY2xhc3MgQ3VzdG9tRXhpdENvZGVQb3J0KFRlc3RQb3J0KToKICAgICAgICAgICAgIGRl
ZiBleGl0X2NvZGVfZnJvbV9zdW1tYXJpemVkX3Jlc3VsdHMoc2VsZiwgdW5leHBlY3RlZF9yZXN1
bHRzKToKICAgICAgICAgICAgICAgICByZXR1cm4gdW5leHBlY3RlZF9yZXN1bHRzWydudW1fcmVn
cmVzc2lvbnMnXSArIHVuZXhwZWN0ZWRfcmVzdWx0c1snbnVtX21pc3NpbmcnXQogCisgICAgICAg
IGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIG9wdGlvbnMsIHBhcnNlZF9hcmdzID0gcnVuX3dl
YmtpdF90ZXN0cy5wYXJzZV9hcmdzKFsnLS1waXhlbC10ZXN0cycsICctLW5vLW5ldy10ZXN0LXJl
c3VsdHMnXSkKLSAgICAgICAgdGVzdF9wb3J0ID0gQ3VzdG9tRXhpdENvZGVQb3J0KG9wdGlvbnM9
b3B0aW9ucykKKyAgICAgICAgdGVzdF9wb3J0ID0gQ3VzdG9tRXhpdENvZGVQb3J0KGhvc3QsIG9w
dGlvbnM9b3B0aW9ucykKICAgICAgICAgcmVzLCBvdXQsIGVyciwgXyA9IGxvZ2dpbmdfcnVuKFsn
LS1uby1zaG93LXJlc3VsdHMnLAogICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL21pc3Np
bmdfaW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC9taXNzaW5n
X3RleHQuaHRtbCcsCiAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC90ZXh0LWltYWdl
LWNoZWNrc3VtLmh0bWwnXSwKLSAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVz
eXN0ZW09ZnMsIHJlY29yZF9yZXN1bHRzPVRydWUsIHBvcnRfb2JqPXRlc3RfcG9ydCkKKyAgICAg
ICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCwgcmVjb3JkX3Jlc3VsdHM9VHJ1
ZSwgcG9ydF9vYmo9dGVzdF9wb3J0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXMsIDIp
CiAKICAgICBkZWYgdGVzdF9jcmFzaF93aXRoX3N0ZGVycihzZWxmKToKLSAgICAgICAgZnMgPSB1
bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAg
IHJlcywgYnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCwgdXNlciA9IGxvZ2dpbmdfcnVu
KFsKICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC9jcmFzaC13aXRoLXN0ZGVy
ci5odG1sJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVl
LAogICAgICAgICAgICAgcmVjb3JkX3Jlc3VsdHM9VHJ1ZSwKLSAgICAgICAgICAgIGZpbGVzeXN0
ZW09ZnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5yZWFkX3RleHRfZmlsZSgnL3RtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykuZmluZCgneyJjcmFzaC13aXRo
LXN0ZGVyci5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IkNSQVNIIiwiaGFzX3N0
ZGVyciI6dHJ1ZX19JykgIT0gLTEpCisgICAgICAgICAgICBob3N0PWhvc3QpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpLmZpbmQoJ3siY3Jhc2gtd2l0aC1zdGRl
cnIuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJDUkFTSCIsImhhc19zdGRlcnIi
OnRydWV9fScpICE9IC0xKQogCiAgICAgZGVmIHRlc3Rfbm9faW1hZ2VfZmFpbHVyZV93aXRoX2lt
YWdlX2RpZmYoc2VsZik6Ci0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAg
ICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICByZXMsIGJ1aWxkYm90X291dHB1dCwgcmVn
dWxhcl9vdXRwdXQsIHVzZXIgPSBsb2dnaW5nX3J1bihbCiAgICAgICAgICAgICAgICAgJ2ZhaWx1
cmVzL3VuZXhwZWN0ZWQvY2hlY2tzdW0td2l0aC1tYXRjaGluZy1pbWFnZS5odG1sJywKICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLAogICAgICAgICAgICAg
cmVjb3JkX3Jlc3VsdHM9VHJ1ZSwKLSAgICAgICAgICAgIGZpbGVzeXN0ZW09ZnMpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShmcy5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykuZmluZCgnIm51bV9yZWdyZXNzaW9ucyI6MCcpICE9IC0x
KQorICAgICAgICAgICAgaG9zdD1ob3N0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG9zdC5m
aWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9y
ZXN1bHRzLmpzb24nKS5maW5kKCcibnVtX3JlZ3Jlc3Npb25zIjowJykgIT0gLTEpCiAKICAgICBk
ZWYgdGVzdF9jcmFzaF9sb2coc2VsZik6CiAgICAgICAgIG1vY2tfY3Jhc2hfcmVwb3J0ID0gJ21v
Y2stY3Jhc2gtcmVwb3J0JwotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAg
ICAgICAgZnMud3JpdGVfdGV4dF9maWxlKCcvVXNlcnMvbW9jay9MaWJyYXJ5L0xvZ3MvRGlhZ25v
c3RpY1JlcG9ydHMvRHVtcFJlbmRlclRyZWVfMjAxMS0wNi0xMy0xNTA3MTlfcXVhZHplbi5jcmFz
aCcsIG1vY2tfY3Jhc2hfcmVwb3J0KQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAg
ICBob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvVXNlcnMvbW9jay9MaWJyYXJ5L0xv
Z3MvRGlhZ25vc3RpY1JlcG9ydHMvRHVtcFJlbmRlclRyZWVfMjAxMS0wNi0xMy0xNTA3MTlfcXVh
ZHplbi5jcmFzaCcsIG1vY2tfY3Jhc2hfcmVwb3J0KQogICAgICAgICByZXMsIGJ1aWxkYm90X291
dHB1dCwgcmVndWxhcl9vdXRwdXQsIHVzZXIgPSBsb2dnaW5nX3J1bihbCiAgICAgICAgICAgICAg
ICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvY3Jhc2gtd2l0aC1zdGRlcnIuaHRtbCcsCiAgICAgICAg
ICAgICBdLAogICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwKICAgICAgICAgICAgIHJl
Y29yZF9yZXN1bHRzPVRydWUsCi0gICAgICAgICAgICBmaWxlc3lzdGVtPWZzKQorICAgICAgICAg
ICAgaG9zdD1ob3N0KQogICAgICAgICBleHBlY3RlZF9jcmFzaF9sb2cgPSBtb2NrX2NyYXNoX3Jl
cG9ydAogICAgICAgICAjIEN1cnJlbnRseSBDcmFzaExvZyB1cGxvYWRpbmcgb25seSB3b3JrcyBv
biBEYXJ3aW4uCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAiZGFyd2luIjoKICAgICAgICAg
ICAgIGV4cGVjdGVkX2NyYXNoX2xvZyA9ICJtb2NrLXN0ZC1lcnJvci1vdXRwdXQiCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKGZzLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvZmFpbHVyZXMvdW5leHBlY3RlZC9jcmFzaC13aXRoLXN0ZGVyci1jcmFzaC1sb2cudHh0
JyksIGV4cGVjdGVkX2NyYXNoX2xvZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoaG9zdC5m
aWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFpbHVy
ZXMvdW5leHBlY3RlZC9jcmFzaC13aXRoLXN0ZGVyci1jcmFzaC1sb2cudHh0JyksIGV4cGVjdGVk
X2NyYXNoX2xvZykKIAogICAgIGRlZiB0ZXN0X3dlYl9wcm9jZXNzX2NyYXNoX2xvZyhzZWxmKToK
ICAgICAgICAgbW9ja19jcmFzaF9yZXBvcnQgPSAnbW9jay1jcmFzaC1yZXBvcnQnCi0gICAgICAg
IGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotICAgICAgICBmcy53cml0ZV90ZXh0X2ZpbGUo
Jy9Vc2Vycy9tb2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9XZWJQcm9jZXNzXzIw
MTEtMDYtMTMtMTUwNzE5X3F1YWR6ZW4uY3Jhc2gnLCBtb2NrX2NyYXNoX3JlcG9ydCkKKyAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRf
ZmlsZSgnL1VzZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL1dlYlByb2Nl
c3NfMjAxMS0wNi0xMy0xNTA3MTlfcXVhZHplbi5jcmFzaCcsIG1vY2tfY3Jhc2hfcmVwb3J0KQog
ICAgICAgICByZXMsIGJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9vdXRwdXQsIHVzZXIgPSBsb2dn
aW5nX3J1bihbCiAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvd2ViLXByb2Nl
c3MtY3Jhc2gtd2l0aC1zdGRlcnIuaHRtbCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAg
dGVzdHNfaW5jbHVkZWQ9VHJ1ZSwKICAgICAgICAgICAgIHJlY29yZF9yZXN1bHRzPVRydWUsCi0g
ICAgICAgICAgICBmaWxlc3lzdGVtPWZzKQorICAgICAgICAgICAgaG9zdD1ob3N0KQogICAgICAg
ICBleHBlY3RlZF9jcmFzaF9sb2cgPSBtb2NrX2NyYXNoX3JlcG9ydAogICAgICAgICAjIEN1cnJl
bnRseSBDcmFzaExvZyB1cGxvYWRpbmcgb25seSB3b3JrcyBvbiBEYXJ3aW4uCiAgICAgICAgIGlm
IHN5cy5wbGF0Zm9ybSAhPSAiZGFyd2luIjoKICAgICAgICAgICAgIGV4cGVjdGVkX2NyYXNoX2xv
ZyA9ICJtb2NrLXN0ZC1lcnJvci1vdXRwdXQiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZz
LnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFpbHVyZXMvdW5leHBl
Y3RlZC93ZWItcHJvY2Vzcy1jcmFzaC13aXRoLXN0ZGVyci1jcmFzaC1sb2cudHh0JyksIGV4cGVj
dGVkX2NyYXNoX2xvZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoaG9zdC5maWxlc3lzdGVt
LnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFpbHVyZXMvdW5leHBl
Y3RlZC93ZWItcHJvY2Vzcy1jcmFzaC13aXRoLXN0ZGVyci1jcmFzaC1sb2cudHh0JyksIGV4cGVj
dGVkX2NyYXNoX2xvZykKIAogICAgIGRlZiB0ZXN0X2V4aXRfYWZ0ZXJfbl9mYWlsdXJlc191cGxv
YWQoc2VsZik6Ci0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBo
b3N0ID0gTW9ja0hvc3QoKQogICAgICAgICByZXMsIGJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9v
dXRwdXQsIHVzZXIgPSBsb2dnaW5nX3J1bihbCiAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL3Vu
ZXhwZWN0ZWQvdGV4dC1pbWFnZS1jaGVja3N1bS5odG1sJywKICAgICAgICAgICAgICAgICAncGFz
c2VzL3RleHQuaHRtbCcsCkBAIC01MzQsOCArNTI5LDggQEAgY2xhc3MgTWFpblRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICAgICAgICAgXSwKICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVk
PVRydWUsCiAgICAgICAgICAgICByZWNvcmRfcmVzdWx0cz1UcnVlLAotICAgICAgICAgICAgZmls
ZXN5c3RlbT1mcykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvaW5jcmVtZW50YWxfcmVzdWx0cy5qc29uJyBpbiBmcy5maWxlcykKKyAgICAgICAgICAg
IGhvc3Q9aG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvaW5jcmVtZW50YWxfcmVzdWx0cy5qc29uJyBpbiBob3N0LmZpbGVzeXN0ZW0uZmlsZXMp
CiAKICAgICBkZWYgdGVzdF9leGl0X2FmdGVyX25fZmFpbHVyZXMoc2VsZik6CiAgICAgICAgICMg
VW5leHBlY3RlZCBmYWlsdXJlcyBzaG91bGQgcmVzdWx0IGluIHRlc3RzIHN0b3BwaW5nLgpAQCAt
NjA0LDExICs1OTksMTEgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICAjIFdlIHJ1biBhIGNvbmZpZ3VyYXRpb24gdGhhdCBzaG91bGQgZmFpbCwgdG8gZ2VuZXJh
dGUgb3V0cHV0LCB0aGVuCiAgICAgICAgICMgbG9vayBmb3Igd2hhdCB0aGUgb3V0cHV0IHJlc3Vs
dHMgdXJsIHdhcy4KIAotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAg
ICAgd2l0aCBmcy5ta2R0ZW1wKCkgYXMgdG1wZGlyOgorICAgICAgICBob3N0ID0gTW9ja0hvc3Qo
KQorICAgICAgICB3aXRoIGhvc3QuZmlsZXN5c3RlbS5ta2R0ZW1wKCkgYXMgdG1wZGlyOgogICAg
ICAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKFsnLS1yZXN1bHRzLWRp
cmVjdG9yeT0nICsgc3RyKHRtcGRpcildLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVzeXN0ZW09ZnMpCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIub3BlbmVkX3VybHMsIFtmcy5qb2luKHRtcGRp
ciwgJ3Jlc3VsdHMuaHRtbCcpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBob3N0PWhvc3QpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHVzZXIub3BlbmVkX3VybHMsIFtob3N0LmZpbGVzeXN0ZW0uam9pbih0
bXBkaXIsICdyZXN1bHRzLmh0bWwnKV0pCiAKICAgICBkZWYgdGVzdF9yZXN1bHRzX2RpcmVjdG9y
eV9kZWZhdWx0KHNlbGYpOgogICAgICAgICAjIFdlIHJ1biBhIGNvbmZpZ3VyYXRpb24gdGhhdCBz
aG91bGQgZmFpbCwgdG8gZ2VuZXJhdGUgb3V0cHV0LCB0aGVuCkBAIC02MjEsMTcgKzYxNiwxNyBA
QCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVzdWx0
c19kaXJlY3RvcnlfcmVsYXRpdmUoc2VsZik6CiAgICAgICAgICMgV2UgcnVuIGEgY29uZmlndXJh
dGlvbiB0aGF0IHNob3VsZCBmYWlsLCB0byBnZW5lcmF0ZSBvdXRwdXQsIHRoZW4KICAgICAgICAg
IyBsb29rIGZvciB3aGF0IHRoZSBvdXRwdXQgcmVzdWx0cyB1cmwgd2FzLgotICAgICAgICBmcyA9
IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3Rvcnko
Jy90bXAvY3dkJykKLSAgICAgICAgZnMuY2hkaXIoJy90bXAvY3dkJykKKyAgICAgICAgaG9zdCA9
IE1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC5maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5
KCcvdG1wL2N3ZCcpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5jaGRpcignL3RtcC9jd2QnKQog
ICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4oWyctLXJlc3VsdHMtZGly
ZWN0b3J5PWZvbyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLm9wZW5lZF91cmxzLCBbJy90bXAvY3dkL2Zvby9y
ZXN1bHRzLmh0bWwnXSkKIAogICAgIGRlZiB0ZXN0X3JldHJpZXNfZGlyZWN0b3J5KHNlbGYpOgot
ICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgcmVzLCBvdXQsIGVy
ciwgdXNlciA9IGxvZ2dpbmdfcnVuKHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVzeXN0ZW09ZnMp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3JldHJp
ZXMvdGVzdHNfcnVuMC50eHQnIGluIGZzLmZpbGVzKQorICAgICAgICBob3N0ID0gTW9ja0hvc3Qo
KQorICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4odGVzdHNfaW5jbHVk
ZWQ9VHJ1ZSwgaG9zdD1ob3N0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG9zdC5maWxlc3lz
dGVtLmV4aXN0cygnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3JldHJpZXMvdGVzdHNfcnVuMC50
eHQnKSkKIAogICAgICMgVGhlc2UgbmV4dCB0ZXN0cyB0ZXN0IHRoYXQgd2UgcnVuIHRoZSB0ZXN0
cyBpbiBhc2NlbmRpbmcgYWxwaGFiZXRpY2FsCiAgICAgIyBvcmRlciBwZXIgZGlyZWN0b3J5LiBI
VFRQIHRlc3RzIGFyZSBzaGFyZGVkIHNlcGFyYXRlbHkgZnJvbSBvdGhlciB0ZXN0cywKQEAgLTY1
OCw3ICs2NTMsOCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAg
ICAgZGVmIGdldF9wb3J0X2Zvcl9ydW4oYXJncyk6CiAgICAgICAgICAgICBvcHRpb25zLCBwYXJz
ZWRfYXJncyA9IHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncyhhcmdzKQotICAgICAgICAgICAg
dGVzdF9wb3J0ID0gSW1hZ2VEaWZmVGVzdFBvcnQob3B0aW9ucz1vcHRpb25zKQorICAgICAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgICAgIHRlc3RfcG9ydCA9IEltYWdlRGlmZlRl
c3RQb3J0KGhvc3QsIG9wdGlvbnM9b3B0aW9ucykKICAgICAgICAgICAgIHJlcyA9IHBhc3Npbmdf
cnVuKGFyZ3MsIHBvcnRfb2JqPXRlc3RfcG9ydCwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXMpCiAgICAgICAgICAgICByZXR1cm4gdGVzdF9wb3J0
CkBAIC03MjMsMTEgKzcxOSw5IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydwYXNzZXMvbWlzbWF0Y2guaHRtbCcsICdwYXNz
ZXMvbWlzbWF0Y2gtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCddLCB0ZXN0c19ydW4pCiAKICAgICBk
ZWYgdGVzdF9yZWZ0ZXN0X3Nob3VsZF9ub3RfdXNlX25hbWluZ19jb252ZW50aW9uX2lmX25vdF9s
aXN0ZWRfaW5fcmVmdGVzdGxpc3Qoc2VsZik6Ci0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVz
eXN0ZW0oKQotICAgICAgICByZXMsIG91dCwgZXJyLCBfID0gbG9nZ2luZ19ydW4oWyctLW5vLXNo
b3ctcmVzdWx0cycsICdyZWZ0ZXN0cy9mb28vJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVz
eXN0ZW09ZnMsIHJlY29yZF9yZXN1bHRzPVRydWUpCi0gICAgICAgIGZpbGVfbGlzdCA9IGZzLndy
aXR0ZW5fZmlsZXMua2V5cygpCi0gICAgICAgIGZpbGVfbGlzdC5yZW1vdmUoJy90bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dCcpCi0gICAgICAgIGpzb25fc3RyaW5nID0gZnMu
cmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNv
bicpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHJlcywgb3V0LCBlcnIsIF8g
PSBsb2dnaW5nX3J1bihbJy0tbm8tc2hvdy1yZXN1bHRzJywgJ3JlZnRlc3RzL2Zvby8nXSwgdGVz
dHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0LCByZWNvcmRfcmVzdWx0cz1UcnVlKQorICAgICAg
ICBqc29uX3N0cmluZyA9IGhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlv
dXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGpzb25fc3RyaW5nLmZpbmQoJyJ1bmxpc3RlZHRlc3QuaHRtbCI6eyJleHBlY3RlZCI6IlBB
U1MiLCJpc19taXNzaW5nX3RleHQiOnRydWUsImFjdHVhbCI6Ik1JU1NJTkciLCJpc19taXNzaW5n
X2ltYWdlIjp0cnVlfScpICE9IC0xKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9zdHJp
bmcuZmluZCgnIm51bV9yZWdyZXNzaW9ucyI6NCcpICE9IC0xKQogICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoanNvbl9zdHJpbmcuZmluZCgnIm51bV9mbGFreSI6MCcpICE9IC0xKQpAQCAtNzczLDEx
ICs3NjcsMTEgQEAgY2xhc3MgRW5kVG9FbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgcmV0dXJuIGNvbXByZXNzZWRfcmVzdWx0cwogCiAgICAgZGVmIHRlc3RfZW5kX3RvX2VuZChz
ZWxmKToKLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0gICAgICAgIHJlcywg
b3V0LCBlcnIsIHVzZXIgPSBsb2dnaW5nX3J1bihyZWNvcmRfcmVzdWx0cz1UcnVlLCB0ZXN0c19p
bmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQor
ICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4ocmVjb3JkX3Jlc3VsdHM9
VHJ1ZSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0KQogCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHJlcywgdW5leHBlY3RlZF90ZXN0c19jb3VudCkKLSAgICAgICAgcmVzdWx0cyA9
IHNlbGYucGFyc2VfZnVsbF9yZXN1bHRzKGZzLmZpbGVzWycvdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvZnVsbF9yZXN1bHRzLmpzb24nXSkKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYucGFyc2VfZnVs
bF9yZXN1bHRzKGhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykpCiAKICAgICAgICAgIyBDaGVjayB0byBlbnN1
cmUgd2UncmUgcGFzc2luZyBiYWNrIGltYWdlIGRpZmYgJWFnZSBjb3JyZWN0bHkuCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3VsdHNbJ3Rlc3RzJ11bJ2ZhaWx1cmVzJ11bJ2V4cGVjdGVk
J11bJ2ltYWdlLmh0bWwnXVsnaW1hZ2VfZGlmZl9wZXJjZW50J10sIDEpCkBAIC03ODgsMTEgKzc4
MiwxMSBAQCBjbGFzcyBFbmRUb0VuZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0
ZXN0X3JlZnRlc3Rfd2l0aF90d29fbm90cmVmcyhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQg
d2UgdXBkYXRlIGV4cGVjdGF0aW9ucyBpbiBwbGFjZS4gSWYgdGhlIGV4cGVjdGF0aW9uCiAgICAg
ICAgICMgaXMgbWlzc2luZywgdXBkYXRlIHRoZSBleHBlY3RlZCBnZW5lcmljIGxvY2F0aW9uLgot
ICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgcmVzLCBvdXQsIGVy
ciwgXyA9IGxvZ2dpbmdfcnVuKFsnLS1uby1zaG93LXJlc3VsdHMnLCAncmVmdGVzdHMvZm9vLydd
LCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzLCByZWNvcmRfcmVzdWx0cz1UcnVl
KQotICAgICAgICBmaWxlX2xpc3QgPSBmcy53cml0dGVuX2ZpbGVzLmtleXMoKQorICAgICAgICBo
b3N0ID0gTW9ja0hvc3QoKQorICAgICAgICByZXMsIG91dCwgZXJyLCBfID0gbG9nZ2luZ19ydW4o
WyctLW5vLXNob3ctcmVzdWx0cycsICdyZWZ0ZXN0cy9mb28vJ10sIHRlc3RzX2luY2x1ZGVkPVRy
dWUsIGhvc3Q9aG9zdCwgcmVjb3JkX3Jlc3VsdHM9VHJ1ZSkKKyAgICAgICAgZmlsZV9saXN0ID0g
aG9zdC5maWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMua2V5cygpCiAgICAgICAgIGZpbGVfbGlzdC5y
ZW1vdmUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dCcpCi0gICAgICAg
IGpzb25fc3RyaW5nID0gZnMucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9mdWxsX3Jlc3VsdHMuanNvbicpCisgICAgICAgIGpzb25fc3RyaW5nID0gaG9zdC5maWxlc3lz
dGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRz
Lmpzb24nKQogICAgICAgICBqc29uID0gc2VsZi5wYXJzZV9mdWxsX3Jlc3VsdHMoanNvbl9zdHJp
bmcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgibXVsdGlwbGUtbWF0Y2gtc3VjY2Vzcy5odG1s
IiBub3QgaW4ganNvblsidGVzdHMiXVsicmVmdGVzdHMiXVsiZm9vIl0pCiAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgibXVsdGlwbGUtbWlzbWF0Y2gtc3VjY2Vzcy5odG1sIiBub3QgaW4ganNvblsi
dGVzdHMiXVsicmVmdGVzdHMiXVsiZm9vIl0pCkBAIC04MjAsMTMgKzgxNCwxMyBAQCBjbGFzcyBS
ZWJhc2VsaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVzZXRfcmVz
dWx0cyhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgdXBkYXRlIGV4cGVjdGF0aW9ucyBp
biBwbGFjZS4gSWYgdGhlIGV4cGVjdGF0aW9uCiAgICAgICAgICMgaXMgbWlzc2luZywgdXBkYXRl
IHRoZSBleHBlY3RlZCBnZW5lcmljIGxvY2F0aW9uLgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9m
aWxlc3lzdGVtKCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgcmVzLCBvdXQs
IGVyciwgXyA9IGxvZ2dpbmdfcnVuKFsnLS1waXhlbC10ZXN0cycsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAnLS1yZXNldC1yZXN1bHRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNz
ZXMvaW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0
ZWQvbWlzc2luZ19pbWFnZS5odG1sJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19p
bmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzLCBuZXdfcmVzdWx0cz1UcnVlKQotICAgICAgICBm
aWxlX2xpc3QgPSBmcy53cml0dGVuX2ZpbGVzLmtleXMoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0LCBuZXdfcmVzdWx0cz1UcnVlKQorICAg
ICAgICBmaWxlX2xpc3QgPSBob3N0LmZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcy5rZXlzKCkKICAg
ICAgICAgZmlsZV9saXN0LnJlbW92ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1
bjAudHh0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzLCAwKQogICAgICAgICBzZWxm
LmFzc2VydFRydWUob3V0LmVtcHR5KCkpCkBAIC04MzcsMTQgKzgzMSwxNCBAQCBjbGFzcyBSZWJh
c2VsaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfbWlzc2luZ19yZXN1
bHRzKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCB3ZSB1cGRhdGUgZXhwZWN0YXRpb25zIGlu
IHBsYWNlLiBJZiB0aGUgZXhwZWN0YXRpb24KICAgICAgICAgIyBpcyBtaXNzaW5nLCB1cGRhdGUg
dGhlIGV4cGVjdGVkIGdlbmVyaWMgbG9jYXRpb24uCi0gICAgICAgIGZzID0gdW5pdF90ZXN0X2Zp
bGVzeXN0ZW0oKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICByZXMsIG91dCwg
ZXJyLCBfID0gbG9nZ2luZ19ydW4oWyctLW5vLXNob3ctcmVzdWx0cycsCiAgICAgICAgICAgICAg
ICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC9taXNzaW5nX3RleHQuaHRtbCcsCiAgICAgICAg
ICAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC9taXNzaW5nX2ltYWdlLmh0bWwnLAog
ICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzc2luZ19hdWRpby5o
dG1sJywKICAgICAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy91bmV4cGVjdGVkL21pc3Npbmdf
cmVuZGVyX3RyZWVfZHVtcC5odG1sJ10sCi0gICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNs
dWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzLCBuZXdfcmVzdWx0cz1UcnVlKQotICAgICAgICBmaWxl
X2xpc3QgPSBmcy53cml0dGVuX2ZpbGVzLmtleXMoKQorICAgICAgICAgICAgICAgICAgICAgdGVz
dHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0LCBuZXdfcmVzdWx0cz1UcnVlKQorICAgICAgICBm
aWxlX2xpc3QgPSBob3N0LmZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcy5rZXlzKCkKICAgICAgICAg
ZmlsZV9saXN0LnJlbW92ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjAudHh0
JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzLCAwKQogICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKG91dC5lbXB0eSgpKQpAQCAtODU2LDEzICs4NTAsMTMgQEAgY2xhc3MgUmViYXNlbGlu
ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X25ld19iYXNlbGluZShzZWxm
KToKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgdXBkYXRlIHRoZSBwbGF0Zm9ybSBleHBlY3RhdGlv
bnMuIElmIHRoZSBleHBlY3RhdGlvbgogICAgICAgICAjIGlzIG1zc2luZywgdGhlbiBjcmVhdGUg
YSBuZXcgZXhwZWN0YXRpb24gaW4gdGhlIHBsYXRmb3JtIGRpci4KLSAgICAgICAgZnMgPSB1bml0
X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIHJl
cywgb3V0LCBlcnIsIF8gPSBsb2dnaW5nX3J1bihbJy0tcGl4ZWwtdGVzdHMnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgJy0tbmV3LWJhc2VsaW5lJywKICAgICAgICAgICAgICAgICAgICAgICAg
ICdwYXNzZXMvaW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMv
ZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sJ10sCi0gICAgICAgICAgICAgICAgICAgIHRlc3Rz
X2luY2x1ZGVkPVRydWUsIGZpbGVzeXN0ZW09ZnMsIG5ld19yZXN1bHRzPVRydWUpCi0gICAgICAg
IGZpbGVfbGlzdCA9IGZzLndyaXR0ZW5fZmlsZXMua2V5cygpCisgICAgICAgICAgICAgICAgICAg
IHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCwgbmV3X3Jlc3VsdHM9VHJ1ZSkKKyAgICAg
ICAgZmlsZV9saXN0ID0gaG9zdC5maWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMua2V5cygpCiAgICAg
ICAgIGZpbGVfbGlzdC5yZW1vdmUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4w
LnR4dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlcywgMCkKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG91dC5lbXB0eSgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXggNjU0MjRmNWJl
OWJiY2VlN2I3MTkzYjVmYjI0NjhiNWM2M2M1N2RlZS4uZjdjMGJmY2I4YWUzZWVkMGU1MTEzZjk4
YjJiOTJlMTU5MzkwYjQxMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC02NywxNSArNjcsMTUg
QEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIob2JqZWN0KToKICAgICAgICAgICAgIF9s
b2cud2FybigiRXhjZXB0aW9uIHdoaWxlIGdldHRpbmcgcG9ydCBmb3IgcGF0aCAlcyIgJSBleHBl
Y3RhdGlvbnNfcGF0aCkKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvciwgaG9zdD1Ob25lKToKICAgICAg
ICAgc2VsZi5fZmlsZV9wYXRoID0gZmlsZV9wYXRoCiAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHls
ZV9lcnJvciA9IGhhbmRsZV9zdHlsZV9lcnJvcgogICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVf
ZXJyb3IudHVybl9vZmZfbGluZV9maWx0ZXJpbmcoKQogICAgICAgICBzZWxmLl90YWJfY2hlY2tl
ciA9IFRhYkNoZWNrZXIoZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpCiAgICAgICAgIHNl
bGYuX291dHB1dF9yZWdleCA9IHJlLmNvbXBpbGUoJ0xpbmU6KD9QPGxpbmU+XGQrKVxzKig/UDxt
ZXNzYWdlPi4rKScpCiAKLSAgICAgICAgIyBGSVhNRTogQSBob3N0IHNob3VsZCBiZSBwYXNzZWQg
dG8gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQhCi0gICAgICAgIGhvc3QgPSBIb3N0KCkKKyAgICAg
ICAgIyBGSVhNRTogaG9zdCBzaG91bGQgYmUgYSByZXF1aXJlZCBwYXJhbWV0ZXIsIG5vdCBhbiBv
cHRpb25hbCBvbmUuCisgICAgICAgIGhvc3QgPSBob3N0IG9yIEhvc3QoKQogICAgICAgICBob3N0
Ll9pbml0aWFsaXplX3NjbSgpCiAKICAgICAgICAgIyBEZXRlcm1pbmluZyB0aGUgcG9ydCBvZiB0
aGlzIGV4cGVjdGF0aW9ucy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5Cmlu
ZGV4IGQzMDA0MzM3NThjZWQ5ZTE5NzYzYzVjYjdjMmM3M2I2NWMzYzY1MWIuLjkyZDFmZTYyOGEz
ZTBmMTM4MmQ1YzZhYjU0ZWNkMTkzNTNkNzIzNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9u
c191bml0dGVzdC5weQpAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zVGVz
dENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIF9leHBlY3RfcG9ydF9mb3JfZXhw
ZWN0YXRpb25zX3BhdGgoc2VsZiwgZXhwZWN0ZWRfcG9ydF9vcl9wb3J0X2NsYXNzLCBleHBlY3Rh
dGlvbnNfcGF0aCk6CiAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAgIGNoZWNrZXIg
PSBUZXN0RXhwZWN0YXRpb25zQ2hlY2tlcihleHBlY3RhdGlvbnNfcGF0aCwgRXJyb3JDb2xsZWN0
b3IoKSkKKyAgICAgICAgY2hlY2tlciA9IFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyKGV4cGVjdGF0
aW9uc19wYXRoLCBFcnJvckNvbGxlY3RvcigpLCBob3N0PWhvc3QpCiAgICAgICAgIHBvcnQgPSBj
aGVja2VyLl9kZXRlcm1pbmVfcG9ydF9mcm9tX2V4ZXBlY3RhdGlvbnNfcGF0aChob3N0LCBleHBl
Y3RhdGlvbnNfcGF0aCkKICAgICAgICAgaWYgcG9ydDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHBvcnQuX19jbGFzc19fLl9fbmFtZV9fLCBleHBlY3RlZF9wb3J0X29yX3BvcnRfY2xh
c3MpCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNUZXN0Q2FzZSh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGFzc2VydF9saW5lc19saW50KHNlbGYsIGxpbmVzLCBl
eHBlY3RlZCk6CiAgICAgICAgIHNlbGYuX2Vycm9yX2NvbGxlY3Rvci5yZXNldF9lcnJvcnMoKQog
ICAgICAgICBjaGVja2VyID0gVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIoJ3Rlc3QvdGVzdF9leHBl
Y3RhdGlvbnMudHh0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2Vycm9yX2NvbGxlY3RvcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2Vycm9yX2NvbGxlY3RvciwgaG9zdD1Nb2NrSG9zdCgpKQogICAgICAg
ICBjaGVja2VyLmNoZWNrX3Rlc3RfZXhwZWN0YXRpb25zKGV4cGVjdGF0aW9uc19zdHI9J1xuJy5q
b2luKGxpbmVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
cz1bc2VsZi5fdGVzdF9maWxlXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvdmVycmlkZXM9Tm9uZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rl
c3RzLnB5CmluZGV4IGMyYjEwYzQzNTczNDllYjcwMmU4ZTczODAxYzllY2RiNzBkYmMwMTIuLjgy
MjhkNDM4MWJhMTBjMzViYjk5MzZkYWQ5NmVmODlmNDk4OGY0NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRf
dGVzdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2Vs
aW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weQpAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIFJl
YmFzZWxpbmVyKG9iamVjdCk6CiAKICAgICBSRVZJU0lPTl9SRUdFWCA9IHInPGEgaHJlZj1cIihc
ZCspL1wiPicKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBydW5uaW5nX3BvcnQsIHRhcmdldF9w
b3J0LCBwbGF0Zm9ybSwgb3B0aW9ucywgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5LCBzY20sIGxv
Z2dlZF9iZWZvcmU9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBydW5uaW5n
X3BvcnQsIHRhcmdldF9wb3J0LCBwbGF0Zm9ybSwgb3B0aW9ucywgdXJsX2ZldGNoZXIsIHppcF9m
YWN0b3J5LCBsb2dnZWRfYmVmb3JlPUZhbHNlKToKICAgICAgICAgIiIiCiAgICAgICAgIEFyZ3M6
CiAgICAgICAgICAgICBydW5uaW5nX3BvcnQ6IHRoZSBQb3J0IHRoZSBzY3JpcHQgaXMgcnVubmlu
ZyBvbi4KQEAgLTE2MiwxMiArMTYyLDEwIEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAg
ICAgICAgIHNlbGYuX3BsYXRmb3JtID0gcGxhdGZvcm0KICAgICAgICAgc2VsZi5fb3B0aW9ucyA9
IG9wdGlvbnMKICAgICAgICAgc2VsZi5fcG9ydCA9IHJ1bm5pbmdfcG9ydAotICAgICAgICBzZWxm
Ll9maWxlc3lzdGVtID0gcnVubmluZ19wb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIHNlbGYuX2Zp
bGVzeXN0ZW0gPSBob3N0LmZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5fdGFyZ2V0X3BvcnQgPSB0
YXJnZXRfcG9ydAogCi0gICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGdldCBpdHMgUG9ydEZh
Y3RvcnkgZnJvbSBhIEhvc3Qgb2JqZWN0LgotICAgICAgICAjIE5vdGU6IHVzaW5nIHJ1bm5pbmdf
cG9ydC5leGVjdXRpdmUsIHJ1bm5pbmdfcG9ydC51c2VyIHNpbmNlIHdlIGNhbid0IGdldCB0aGVt
IGZyb20gYSBob3N0LgotICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQgPSBQb3J0RmFjdG9y
eSgpLmdldChwbGF0Zm9ybSwgb3B0aW9ucywgZmlsZXN5c3RlbT1zZWxmLl9maWxlc3lzdGVtLCBl
eGVjdXRpdmU9cnVubmluZ19wb3J0LmV4ZWN1dGl2ZSwgdXNlcj1ydW5uaW5nX3BvcnQudXNlcikK
KyAgICAgICAgc2VsZi5fcmViYXNlbGluZV9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBs
YXRmb3JtLCBvcHRpb25zKQogICAgICAgICBzZWxmLl9yZWJhc2VsaW5pbmdfdGVzdHMgPSBzZXQo
KQogICAgICAgICBzZWxmLl9yZWJhc2VsaW5lZF90ZXN0cyA9IFtdCiAgICAgICAgIHNlbGYuX2xv
Z2dlZF9iZWZvcmUgPSBsb2dnZWRfYmVmb3JlCkBAIC0xODIsNyArMTgwLDcgQEAgY2xhc3MgUmVi
YXNlbGluZXIob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVfcG9ydCwgTm9u
ZSwgZXhwZWN0YXRpb25zX3N0ciwgc2VsZi5fcmViYXNlbGluZV9wb3J0LnRlc3RfY29uZmlndXJh
dGlvbigpLCBGYWxzZSkKICAgICAgICAgc2VsZi5fdXJsX2ZldGNoZXIgPSB1cmxfZmV0Y2hlcgog
ICAgICAgICBzZWxmLl96aXBfZmFjdG9yeSA9IHppcF9mYWN0b3J5Ci0gICAgICAgIHNlbGYuX3Nj
bSA9IHNjbQorICAgICAgICBzZWxmLl9zY20gPSBob3N0LnNjbSgpCiAKICAgICBkZWYgcnVuKHNl
bGYpOgogICAgICAgICAiIiJSdW4gcmViYXNlbGluZSBwcm9jZXNzLiIiIgpAQCAtOTQ4LDcgKzk0
Niw3IEBAIGRlZiBtYWluKGFyZ3MpOgogICAgIGlmIG5vdCBob3N0X3BvcnRfb2JqIG9yIG5vdCB0
YXJnZXRfcG9ydF9vYmo6CiAgICAgICAgIHJldHVybiAxCiAKLSAgICB1cmxfZmV0Y2hlciA9IHVy
bGZldGNoZXIuVXJsRmV0Y2hlcihob3N0X3BvcnRfb2JqLl9maWxlc3lzdGVtKQorICAgIHVybF9m
ZXRjaGVyID0gdXJsZmV0Y2hlci5VcmxGZXRjaGVyKGhvc3QuZmlsZXN5c3RlbSkKIAogICAgICMg
V2UgdXNlIHRoZSBkZWZhdWx0IHppcCBmYWN0b3J5IG1ldGhvZC4KICAgICB6aXBfZmFjdG9yeSA9
IE5vbmUKQEAgLTk1Niw3ICs5NTQsNyBAQCBkZWYgbWFpbihhcmdzKToKICAgICAjIEZJWE1FOiBT
Q00gbW9kdWxlIGRvZXNuJ3QgaGFuZGxlIHBhdGhzIHRoYXQgYXJlbid0IHJlbGF0aXZlIHRvIHRo
ZSBjaGVja291dF9yb290IGNvbnNpc3RlbnRseS4KICAgICBob3N0X3BvcnRfb2JqLl9maWxlc3lz
dGVtLmNoZGlyKGhvc3Quc2NtKCkuY2hlY2tvdXRfcm9vdCkKIAotICAgIHJldF9jb2RlID0gcmVh
bF9tYWluKG9wdGlvbnMsIHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9y
dF9vYmosIHVybF9mZXRjaGVyLCB6aXBfZmFjdG9yeSwgaG9zdC5zY20oKSkKKyAgICByZXRfY29k
ZSA9IHJlYWxfbWFpbihob3N0LCBvcHRpb25zLCB0YXJnZXRfb3B0aW9ucywgaG9zdF9wb3J0X29i
aiwgdGFyZ2V0X3BvcnRfb2JqLCB1cmxfZmV0Y2hlciwgemlwX2ZhY3RvcnkpCiAgICAgaWYgbm90
IHJldF9jb2RlIGFuZCBsb2dfaGFuZGxlci5udW1fZmFpbHVyZXM6CiAgICAgICAgIHJldF9jb2Rl
ID0gMQogICAgIHByaW50ICcnCkBAIC05NjcsMTMgKzk2NSwxNCBAQCBkZWYgbWFpbihhcmdzKToK
ICAgICByZXR1cm4gcmV0X2NvZGUKIAogCi1kZWYgcmVhbF9tYWluKG9wdGlvbnMsIHRhcmdldF9v
cHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9mZXRjaGVyLCB6aXBf
ZmFjdG9yeSwgc2NtX29iaik6CitkZWYgcmVhbF9tYWluKGhvc3QsIG9wdGlvbnMsIHRhcmdldF9v
cHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9mZXRjaGVyLCB6aXBf
ZmFjdG9yeSk6CiAgICAgIiIiTWFpbiBmdW5jdGlvbiB0byBwcm9kdWNlIG5ldyBiYXNlbGluZXMu
IFRoZSBSZWJhc2VsaW5lciBvYmplY3QgdXNlcyB0d28KICAgICBkaWZmZXJlbnQgUG9ydCBvYmpl
Y3RzIC0gb25lIHRvIHJlcHJlc2VudCB0aGUgbWFjaGluZSB0aGUgb2JqZWN0IGlzIHJ1bm5pbmcK
ICAgICBvbiwgYW5kIG9uZSB0byByZXByZXNlbnQgdGhlIHBvcnQgd2hvc2UgZXhwZWN0YXRpb25z
IGFyZSBiZWluZyB1cGRhdGVkLgogICAgIEUuZy4sIHlvdSBjYW4gcnVuIHRoZSBzY3JpcHQgb24g
YSBtYWMgYW5kIHJlYmFzZWxpbmUgdGhlICd3aW4nIHBvcnQuCiAKICAgICBBcmdzOgorICAgICAg
ICBob3N0OiBIb3N0IG9iamVjdAogICAgICAgICBvcHRpb25zOiBjb21tYW5kLWxpbmUgYXJndW1l
bnQgdXNlZCBmb3IgdGhlIGhvc3RfcG9ydF9vYmogKHNlZSBiZWxvdykKICAgICAgICAgdGFyZ2V0
X29wdGlvbnM6IGNvbW1hbmRfbGluZSBhcmd1bWVudCB1c2VkIGZvciB0aGUgdGFyZ2V0X3BvcnRf
b2JqLgogICAgICAgICAgICAgVGhpcyBvYmplY3QgbWF5IGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50
IHZhbHVlcyB0aGFuIHxvcHRpb25zfC4KQEAgLTk4Niw3ICs5ODUsNiBAQCBkZWYgcmVhbF9tYWlu
KG9wdGlvbnMsIHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmos
IHVybF9mZXRjaAogICAgICAgICB1cmxfZmV0Y2hlcjogb2JqZWN0IHVzZWQgdG8gZG93bmxvYWQg
dGhlIGJ1aWxkIGFyY2hpdmVzIGZyb20gdGhlIGJvdHMKICAgICAgICAgemlwX2ZhY3Rvcnk6IGZh
Y3RvcnkgZnVuY3Rpb24gdXNlZCB0byBjcmVhdGUgemlwIGZpbGUgb2JqZWN0cyBmb3IKICAgICAg
ICAgICAgIHRoZSBhcmNoaXZlcy4KLSAgICAgICAgc2NtX29iajogb2JqZWN0IHVzZWQgdG8gYWRk
IG5ldyBiYXNlbGluZXMgdG8gdGhlIHNvdXJjZSBjb250cm9sIHN5c3RlbS4KICAgICAiIiIKICAg
ICBvcHRpb25zLmh0bWxfZGlyZWN0b3J5ID0gc2V0dXBfaHRtbF9kaXJlY3RvcnkoaG9zdF9wb3J0
X29iai5fZmlsZXN5c3RlbSwgb3B0aW9ucy5odG1sX2RpcmVjdG9yeSkKICAgICBhbGxfcGxhdGZv
cm1zID0gdGFyZ2V0X3BvcnRfb2JqLmFsbF9iYXNlbGluZV92YXJpYW50cygpCkBAIC0xMDEyLDkg
KzEwMTAsOSBAQCBkZWYgcmVhbF9tYWluKG9wdGlvbnMsIHRhcmdldF9vcHRpb25zLCBob3N0X3Bv
cnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9mZXRjaAogICAgIHJlYmFzZWxpbmVkX3Rlc3Rz
ID0gc2V0KCkKICAgICBsb2dnZWRfYmVmb3JlID0gRmFsc2UKICAgICBmb3IgcGxhdGZvcm0gaW4g
cmViYXNlbGluZV9wbGF0Zm9ybXM6Ci0gICAgICAgIHJlYmFzZWxpbmVyID0gUmViYXNlbGluZXIo
aG9zdF9wb3J0X29iaiwgdGFyZ2V0X3BvcnRfb2JqLAorICAgICAgICByZWJhc2VsaW5lciA9IFJl
YmFzZWxpbmVyKGhvc3QsIGhvc3RfcG9ydF9vYmosIHRhcmdldF9wb3J0X29iaiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybSwgb3B0aW9ucywgdXJsX2ZldGNoZXIs
IHppcF9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjbV9vYmos
IGxvZ2dlZF9iZWZvcmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2Vk
X2JlZm9yZSkKIAogICAgICAgICBfbG9nLmRlYnVnKCcnKQogICAgICAgICBsb2dfZGFzaGVkX3N0
cmluZygnUmViYXNlbGluZSBzdGFydGVkJywgcGxhdGZvcm0pCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rl
c3RzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJh
c2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQppbmRleCBmM2Q5MzU0MDVh
NmI3ZDNhN2JkMWMwMjFhMDRiYjY0YmZlZWVmYzkwLi41NjRmZGRkZjFhODkxODY5OTM3OWY0NTg5
ZDc2Yzk5MzRiY2M1ZTQ3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2Jl
X21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93
ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTM5LDEwICszOSw3IEBAIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbSBpbXBvcnQgemlwZmlsZXNldF9tb2NrCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIAotZnJvbSB3ZWJraXRw
eS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV9tb2NrIGltcG9ydCBNb2NrU0NNCi0KIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0LnRlc3QgaW1wb3J0IHVuaXRfdGVzdF9maWxlc3lzdGVtCiBmcm9tIHdlYmtpdHB5LnRv
X2JlX21vdmVkIGltcG9ydCByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cwogCiAKQEAg
LTc5LDEwICs3Niw5IEBAIGRlZiB0ZXN0X29wdGlvbnMoKToKIGRlZiB0ZXN0X2hvc3RfcG9ydF9h
bmRfZmlsZXN5c3RlbShvcHRpb25zLCBleHBlY3RhdGlvbnMpOgogICAgIGhvc3QgPSBNb2NrSG9z
dCgpCiAgICAgaG9zdF9wb3J0X29iaiA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdCcsIG9w
dGlvbnMpCi0KICAgICBleHBlY3RhdGlvbnNfcGF0aCA9IGhvc3RfcG9ydF9vYmoucGF0aF90b190
ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkKLSAgICBob3N0X3BvcnRfb2JqLmZpbGVzeXN0ZW0ud3Jp
dGVfdGV4dF9maWxlKGV4cGVjdGF0aW9uc19wYXRoLCBleHBlY3RhdGlvbnMpCi0gICAgcmV0dXJu
IChob3N0X3BvcnRfb2JqLCBob3N0X3BvcnRfb2JqLmZpbGVzeXN0ZW0pCisgICAgaG9zdC5maWxl
c3lzdGVtLndyaXRlX3RleHRfZmlsZShleHBlY3RhdGlvbnNfcGF0aCwgZXhwZWN0YXRpb25zKQor
ICAgIHJldHVybiAoaG9zdCwgaG9zdF9wb3J0X29iaiwgaG9zdC5maWxlc3lzdGVtKQogCiAKIGRl
ZiB0ZXN0X3VybF9mZXRjaGVyKGZpbGVzeXN0ZW0pOgpAQCAtMjA1LDI0ICsyMDEsMjEgQEAgY2xh
c3MgVGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBtYWtlX3Jl
YmFzZWxpbmVyKHNlbGYsIGV4cGVjdGF0aW9ucyk6CiAgICAgICAgIG9wdGlvbnMgPSB0ZXN0X29w
dGlvbnMoKQotICAgICAgICBob3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVtID0gdGVzdF9ob3N0X3Bv
cnRfYW5kX2ZpbGVzeXN0ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKQorICAgICAgICBob3N0LCBo
b3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVtID0gdGVzdF9ob3N0X3BvcnRfYW5kX2ZpbGVzeXN0ZW0o
b3B0aW9ucywgZXhwZWN0YXRpb25zKQogCiAgICAgICAgIHRhcmdldF9vcHRpb25zID0gb3B0aW9u
cwotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICB0YXJnZXRfcG9ydF9vYmogPSBo
b3N0LnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QnLCB0YXJnZXRfb3B0aW9ucywgZmlsZXN5c3RlbT1m
aWxlc3lzdGVtKQotICAgICAgICB0YXJnZXRfcG9ydF9vYmouX2V4cGVjdGF0aW9ucyA9IGV4cGVj
dGF0aW9ucworICAgICAgICB0YXJnZXRfcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQo
J3Rlc3QnLCB0YXJnZXRfb3B0aW9ucykKICAgICAgICAgcGxhdGZvcm0gPSB0YXJnZXRfcG9ydF9v
YmoubmFtZSgpCiAKICAgICAgICAgdXJsX2ZldGNoZXIgPSB0ZXN0X3VybF9mZXRjaGVyKGZpbGVz
eXN0ZW0pCiAgICAgICAgIHppcF9mYWN0b3J5ID0gdGVzdF96aXBfZmFjdG9yeSgpCi0gICAgICAg
IG1vY2tfc2NtID0gTW9ja1NDTShmaWxlc3lzdGVtKQotICAgICAgICBmaWxlc3lzdGVtLm1heWJl
X21ha2VfZGlyZWN0b3J5KG1vY2tfc2NtLmNoZWNrb3V0X3Jvb3QpCisgICAgICAgIGZpbGVzeXN0
ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkoaG9zdC5zY20oKS5jaGVja291dF9yb290KQogCiAgICAg
ICAgICMgRklYTUU6IFNDTSBtb2R1bGUgZG9lc24ndCBoYW5kbGUgcGF0aHMgdGhhdCBhcmVuJ3Qg
cmVsYXRpdmUgdG8gdGhlIGNoZWNrb3V0X3Jvb3QgY29uc2lzdGVudGx5LgogICAgICAgICBmaWxl
c3lzdGVtLmNoZGlyKCIvdGVzdC5jaGVja291dCIpCiAKLSAgICAgICAgcmViYXNlbGluZXIgPSBy
ZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5SZWJhc2VsaW5lcihob3N0X3BvcnRfb2Jq
LAotICAgICAgICAgICAgdGFyZ2V0X3BvcnRfb2JqLCBwbGF0Zm9ybSwgb3B0aW9ucywgdXJsX2Zl
dGNoZXIsIHppcF9mYWN0b3J5LCBtb2NrX3NjbSkKKyAgICAgICAgcmViYXNlbGluZXIgPSByZWJh
c2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5SZWJhc2VsaW5lcihob3N0LCBob3N0X3BvcnRf
b2JqLAorICAgICAgICAgICAgdGFyZ2V0X3BvcnRfb2JqLCBwbGF0Zm9ybSwgb3B0aW9ucywgdXJs
X2ZldGNoZXIsIHppcF9mYWN0b3J5KQogICAgICAgICByZXR1cm4gcmViYXNlbGluZXIsIGZpbGVz
eXN0ZW0KIAogICAgIGRlZiB0ZXN0X25vb3Aoc2VsZik6CkBAIC0zNTAsMTkgKzM0MywxNyBAQCBj
bGFzcyBUZXN0UmVhbE1haW4odW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBleHBlY3RhdGlv
bnMgPSAiQlVHWCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9IElN
QUdFIgogCiAgICAgICAgIG9wdGlvbnMgPSB0ZXN0X29wdGlvbnMoKQotICAgICAgICBob3N0X3Bv
cnRfb2JqLCBmaWxlc3lzdGVtID0gdGVzdF9ob3N0X3BvcnRfYW5kX2ZpbGVzeXN0ZW0ob3B0aW9u
cywgZXhwZWN0YXRpb25zKQorICAgICAgICBob3N0LCBob3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVt
ID0gdGVzdF9ob3N0X3BvcnRfYW5kX2ZpbGVzeXN0ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKQog
ICAgICAgICB1cmxfZmV0Y2hlciA9IHRlc3RfdXJsX2ZldGNoZXIoZmlsZXN5c3RlbSkKICAgICAg
ICAgemlwX2ZhY3RvcnkgPSB0ZXN0X3ppcF9mYWN0b3J5KCkKLSAgICAgICAgbW9ja19zY20gPSBN
b2NrU0NNKCkKLSAgICAgICAgZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShtb2NrX3Nj
bS5jaGVja291dF9yb290KQogCiAgICAgICAgICMgRklYTUU6IFNDTSBtb2R1bGUgZG9lc24ndCBo
YW5kbGUgcGF0aHMgdGhhdCBhcmVuJ3QgcmVsYXRpdmUgdG8gdGhlIGNoZWNrb3V0X3Jvb3QgY29u
c2lzdGVudGx5LgogICAgICAgICBmaWxlc3lzdGVtLmNoZGlyKCIvdGVzdC5jaGVja291dCIpCiAK
ICAgICAgICAgb2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQogICAgICAgICBvYy5j
YXB0dXJlX291dHB1dCgpCi0gICAgICAgIHJlcyA9IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0
X3Rlc3RzLnJlYWxfbWFpbihvcHRpb25zLCBvcHRpb25zLAotICAgICAgICAgICAgaG9zdF9wb3J0
X29iaiwgaG9zdF9wb3J0X29iaiwgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5LCBtb2NrX3NjbSkK
KyAgICAgICAgcmVzID0gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucmVhbF9tYWlu
KGhvc3QsIG9wdGlvbnMsIG9wdGlvbnMsCisgICAgICAgICAgICBob3N0X3BvcnRfb2JqLCBob3N0
X3BvcnRfb2JqLCB1cmxfZmV0Y2hlciwgemlwX2ZhY3RvcnkpCiAgICAgICAgIG9jLnJlc3RvcmVf
b3V0cHV0KCkKIAogICAgICAgICAjIFdlIGV4cGVjdCB0byBoYXZlIHdyaXR0ZW4gMzggZmlsZXMg
b3ZlciB0aGUgY291cnNlIG9mIHRoaXMgcmViYXNlbGluZToKQEAgLTM4Miw3ICszNzMsMTEgQEAg
Y2xhc3MgVGVzdEh0bWxHZW5lcmF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBtYWtl
X2dlbmVyYXRvcihzZWxmLCBmaWxlcywgdGVzdHMpOgogICAgICAgICBvcHRpb25zID0gTW9ja09w
dGlvbnMoY29uZmlndXJhdGlvbj1Ob25lLCBodG1sX2RpcmVjdG9yeT0nL3RtcCcpCiAgICAgICAg
IGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAgIGhvc3RfcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5
LmdldCgndGVzdCcsIG9wdGlvbnMsIGZpbGVzeXN0ZW09dW5pdF90ZXN0X2ZpbGVzeXN0ZW0oZmls
ZXMpKQorICAgICAgICBmcyA9IGhvc3QuZmlsZXN5c3RlbQorICAgICAgICBmb3IgZmlsZW5hbWUs
IGNvbnRlbnRzIGluIGZpbGVzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgZnMubWF5YmVfbWFr
ZV9kaXJlY3RvcnkoZnMuZGlybmFtZShmaWxlbmFtZSkpCisgICAgICAgICAgICBmcy53cml0ZV9i
aW5hcnlfZmlsZShmaWxlbmFtZSwgY29udGVudHMpCisgICAgICAgIGhvc3RfcG9ydCA9IGhvc3Qu
cG9ydF9mYWN0b3J5LmdldCgndGVzdCcsIG9wdGlvbnMpCiAgICAgICAgIGdlbmVyYXRvciA9IHJl
YmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLkh0bWxHZW5lcmF0b3IoaG9zdF9wb3J0LAog
ICAgICAgICAgICAgdGFyZ2V0X3BvcnQ9Tm9uZSwgb3B0aW9ucz1vcHRpb25zLCBwbGF0Zm9ybXM9
Wyd0ZXN0LW1hYy1sZW9wYXJkJ10sIHJlYmFzZWxpbmluZ190ZXN0cz10ZXN0cykKICAgICAgICAg
cmV0dXJuIGdlbmVyYXRvciwgaG9zdF9wb3J0CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5w
eQppbmRleCA2OWE0NDA5YmQxYTQ0ODdkZjA2YmM1MTdiNTY4NWQ1OTZiMTMxOGIzLi5iMDJkMWQz
NTc5NTA2M2QxMDU5YjMyNGZlYmNiMjdlMzVhZDc5MjQzIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXJf
dW5pdHRlc3QucHkKQEAgLTM1LDkgKzM1LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGlt
cG9ydCB3ZWJraXRweS50aGlyZHBhcnR5LnNpbXBsZWpzb24gYXMganNvbgogCiAKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY21fbW9jayBpbXBvcnQgTW9ja1NDTQogZnJvbSB3
ZWJraXRweS5jb21tb24ubmV0IGltcG9ydCByZXN1bHRzanNvbnBhcnNlcl91bml0dGVzdAotZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVT
eXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLmpzb25fcmVzdWx0c19nZW5l
cmF0b3IgaW1wb3J0IHN0cmlwX2pzb25fd3JhcHBlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQKQEAgLTMwMSwyMyArMjk5LDIxIEBAIGRl
ZiBnZXRfdGVzdF9jb25maWcodGVzdF9maWxlcz1bXSwgcmVzdWx0X2ZpbGVzPVtdKToKICAgICAj
IFdlIGNvdWxkIGdyYWIgdGhpcyBmcm9tIHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCBidXQgaW5z
dGFudGlhdGluZyBhIGZ1bGx5IG1vY2tlZCBwb3J0IGlzIGEgcGFpbi4KICAgICBsYXlvdXRfdGVz
dHNfZGlyZWN0b3J5ID0gIi9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzIgogICAgIHJlc3VsdHNf
ZGlyZWN0b3J5ID0gJy9XZWJLaXRCdWlsZC9EZWJ1Zy9sYXlvdXQtdGVzdC1yZXN1bHRzJwotICAg
IG1vY2tfZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKCkKKyAgICBob3N0ID0gTW9ja0hvc3Qo
KQogICAgIGZvciBmaWxlIGluIHRlc3RfZmlsZXM6Ci0gICAgICAgIGZpbGVfcGF0aCA9IG1vY2tf
ZmlsZXN5c3RlbS5qb2luKGxheW91dF90ZXN0c19kaXJlY3RvcnksIGZpbGUpCi0gICAgICAgIG1v
Y2tfZmlsZXN5c3RlbS5maWxlc1tmaWxlX3BhdGhdID0gJycKKyAgICAgICAgZmlsZV9wYXRoID0g
aG9zdC5maWxlc3lzdGVtLmpvaW4obGF5b3V0X3Rlc3RzX2RpcmVjdG9yeSwgZmlsZSkKKyAgICAg
ICAgaG9zdC5maWxlc3lzdGVtLmZpbGVzW2ZpbGVfcGF0aF0gPSAnJwogICAgIGZvciBmaWxlIGlu
IHJlc3VsdF9maWxlczoKLSAgICAgICAgZmlsZV9wYXRoID0gbW9ja19maWxlc3lzdGVtLmpvaW4o
cmVzdWx0c19kaXJlY3RvcnksIGZpbGUpCi0gICAgICAgIG1vY2tfZmlsZXN5c3RlbS5maWxlc1tm
aWxlX3BhdGhdID0gJycKKyAgICAgICAgZmlsZV9wYXRoID0gaG9zdC5maWxlc3lzdGVtLmpvaW4o
cmVzdWx0c19kaXJlY3RvcnksIGZpbGUpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5maWxlc1tm
aWxlX3BhdGhdID0gJycKIAogICAgIGNsYXNzIFRlc3RNYWNQb3J0KFdlYktpdFBvcnQpOgogICAg
ICAgICBwb3J0X25hbWUgPSAibWFjIgotICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAg
ICAgICAgICBXZWJLaXRQb3J0Ll9faW5pdF9fKHNlbGYsIGZpbGVzeXN0ZW09bW9ja19maWxlc3lz
dGVtLCBob3N0PU1vY2tIb3N0KCkpCiAKICAgICByZXR1cm4gVGVzdENvbmZpZygKLSAgICAgICAg
VGVzdE1hY1BvcnQoKSwKKyAgICAgICAgVGVzdE1hY1BvcnQoaG9zdCksCiAgICAgICAgIGxheW91
dF90ZXN0c19kaXJlY3RvcnksCiAgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5LAogICAgICAgICAo
J21hYycsICdtYWMtbGVvcGFyZCcsICd3aW4nLCAnbGludXgnKSwKLSAgICAgICAgbW9ja19maWxl
c3lzdGVtLAotICAgICAgICBNb2NrU0NNKCkpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbSwKKyAg
ICAgICAgaG9zdC5zY20oKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118492</attachid>
            <date>2011-12-08 16:59:02 -0800</date>
            <delta_ts>2011-12-13 18:28:28 -0800</delta_ts>
            <desc>merge to r102395</desc>
            <filename>bug-74138-20111208165901.patch</filename>
            <type>text/plain</type>
            <size>90771</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzk1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTJhNDg3NDhhY2JmMDk2YjIyMWE4NGI0MTY2MzZiNDhk
ZjE0M2Q1My4uZmZiZWIyYTRmN2EzNjI2YjlkMjFjZmQ5OGQ3MjA0NGM2OTg3MTk0YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0
OSBAQAogMjAxMS0xMi0wOCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAor
ICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0czogY2xlYW4gdXAgaG9zdC9zeXN0ZW1ob3N0IGlu
dGVyYWN0aW9ucyBpbiB0aGUgcG9ydCBzdWJzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY2xlYW5zIHVwIHRoZSBsYXllcmlu
ZyBhbmQgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUKKyAgICAgICAgSG9zdCBvYmplY3QsIHRoZSBT
eXN0ZW1Ib3N0IG9iamVjdCwgYW5kIHRoZSBQb3J0IG9iamVjdHMuIE5hbWVseToKKyAgICAgICAg
MSkgUG9ydCBvYmplY3RzIG5vdyB0YWtlIGEgcmVxdWlyZWQgU3lzdGVtSG9zdCBvYmplY3QgaW4g
dGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9yLCBhbmQgYXJlIHJlcXVpcmVkIHRvIG9ubHkgdXNl
IFN5c3RlbUhvc3QgZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAobm90IHRoZSBmdWxsIEhvc3Qp
LgorICAgICAgICAyKSBVbml0IHRlc3RzIGZvciB0aGUgUG9ydCBvYmplY3RzIGNhbiB1c2UgYSBm
dWxsIE1vY2tIb3N0CisgICAgICAgIDMpIHRoZSBUZXN0UG9ydCBvYmplY3Qgbm8gbG9uZ2VyIG1v
ZGlmaWVzIHRoZSAobW9jaykgZmlsZXN5c3RlbSBhdAorICAgICAgICAgICBhbGw7IGNsaWVudHMg
YXJlIHJlcXVpcmVkIHRvIGNhbGwKKyAgICAgICAgICAgYWRkX3VuaXRfdGVzdHNfdG9fbW9ja19m
aWxlc3lzdGVtKCkgdG8gZW5zdXJlIHRoYXQgdGhlIHN5c3RlbSBpcyBzZXQKKyAgICAgICAgICAg
dXAgY29ycmVjdGx5LiBUaGUgTW9ja0hvc3QoKSBvYmplY3QgdGFrZXMgY2FyZSBvZiB0aGlzIGZv
cgorICAgICAgICAgICBtb3N0IGNhbGxlcnMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9ob3N0X21vY2sucHk6CisgICAgICAgIChNb2NrSG9zdC5fX2luaXRfXyk6CisgICAg
ICAgICAgICBhZGQgYWRkX3VuaXRfdGVzdHNfdG9fZmlsZXN5c3RlbSgpIGNhbGwsIG1ha2Ugc3Vy
ZSB0aGUKKyAgICAgICAgICAgIE1vY2tTQ00oKSBvYmplY3QgaXMgdXNpbmcgdGhlIHNhbWUgZmls
ZXN5c3RlbSBhbmQgZXhlY3R1aXZlCisgICAgICAgICAgICBhcyB0aGUgcmVzdCBvZiB0aGUgTW9j
a0hvc3QKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3Rl
bV9tb2NrLnB5OgorICAgICAgICAoTW9ja0ZpbGVTeXN0ZW0uY2xlYXJfd3JpdHRlbl9maWxlcyk6
CisgICAgICAgICAgICBBZGRlZCBhIG5ldyBjYWxsIHRvIG1ha2UgdHJhY2tpbmcgd3JpdGVzIGlu
IGEgdGVzdCBlYXNpZXIKKyAgICAgICAgKE1vY2tGaWxlU3lzdGVtLm1heWJlX21ha2VfZGlyZWN0
b3J5KToKKyAgICAgICAgKE1vY2tGaWxlU3lzdGVtLndyaXRlX2JpbmFyeV9maWxlKToKKyAgICAg
ICAgICAgIE1ha2Ugc3VyZSB3ZSBhcmUgY3JlYXRpbmcgZGlyZWN0b3JpZXMgd2hlbiB3ZSBzaG91
bGQgYmUuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5OgorICAgICAgICAoX1Byb2Nlc3MucnVuKToKKyAg
ICAgICAgICAgIENsYXJpZnkgd2h5IHRoaXMgZmlsZSBuZWVkcyAoYW5kIHVzZXMpIHJlYWwgaG9z
dHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
dGVzdF9yZXN1bHRfd3JpdGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdFJlc3VsdFdyaXRl
clRlc3QudGVzdF9yZWZ0ZXN0X2RpZmZfaW1hZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3JfdW5p
dHRlc3QucHk6CisgICAgICAgIChKU09OR2VuZXJhdG9yVGVzdC5fdGVzdF9qc29uX2dlbmVyYXRp
b24pOgorICAgICAgICAoSlNPTkdlbmVyYXRvclRlc3QudGVzdF90ZXN0X3RpbWluZ3NfdHJpZSk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhw
ZWN0YXRpb25zX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQmFzZS5fX2luaXRfXyk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAo
UG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAoUG9ydFRlc3QubWFrZV9wb3J0KToKKyAg
ICAgICAgKFBvcnRUZXN0LnRlc3RfbGF5b3V0X3Rlc3RzX3NraXBwaW5nKToKKyAgICAgICAgKFBv
cnRUZXN0LnRlc3RfdGVzdF9kaXJzKToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfYWRkaXRpb25h
bF9wbGF0Zm9ybV9kaXJlY3RvcnkpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF91c2VzX3Rlc3Rf
ZXhwZWN0YXRpb25zX2ZpbGUpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF9maW5kX25vX3BhdGhz
X3NwZWNpZmllZCk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfb25lX3Rlc3QpOgorICAg
ICAgICAoUG9ydFRlc3QudGVzdF9maW5kX2dsb2IpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF9m
aW5kX3dpdGhfc2tpcHBlZF9kaXJlY3Rvcmllcyk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2Zp
bmRfd2l0aF9za2lwcGVkX2RpcmVjdG9yaWVzXzIpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF9w
YXJzZV9yZWZ0ZXN0X2xpc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZHJ5cnVuLnB5OgorICAgICAgICAoRHJ5UnVuUG9ydC5fX2luaXRfXyk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5OgorICAg
ICAgICAoUG9ydEZhY3RvcnkuX19pbml0X18pOgorICAgICAgICAoUG9ydEZhY3RvcnkuX2dldF9r
d2FyZ3MpOgorICAgICAgICAgICAgVGhlIGZhY3Rvcnkgbm93IHJlcXVpcmVzIGEgUG9ydCBvYmpl
Y3QuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5
X3VuaXR0ZXN0LnB5OgorICAgICAgICAoRmFjdG9yeVRlc3Quc2V0VXApOgorICAgICAgICAoRmFj
dG9yeVRlc3QudGVhckRvd24pOgorICAgICAgICAoRmFjdG9yeVRlc3QuYXNzZXJ0X3BvcnQpOgor
ICAgICAgICAoRmFjdG9yeVRlc3QuYXNzZXJ0X3BsYXRmb3JtX3BvcnQpOgorICAgICAgICAoRmFj
dG9yeVRlc3QudGVzdF91bmtub3duX3NwZWNpZmllZCk6CisgICAgICAgIChGYWN0b3J5VGVzdC50
ZXN0X3Vua25vd25fZGVmYXVsdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9nb29nbGVfY2hyb21lX3VuaXR0ZXN0LnB5OgorICAgICAgICAoR2V0R29vZ2xl
Q2hyb21lUG9ydFRlc3QuX3ZlcmlmeV9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5OgorICAgICAg
ICAoTW9ja0RSVFBvcnQuX19pbml0X18pOgorICAgICAgICAoTW9ja0RSVC5fX2luaXRfXyk6Cisg
ICAgICAgICAgICBDbGFyaWZ5IHdoeSB0aGlzIGZpbGUgbmVlZHMgKGFuZCB1c2VzKSByZWFsIEhv
c3RzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19k
cnRfdW5pdHRlc3QucHk6CisgICAgICAgIChNb2NrRFJUUG9ydFRlc3QubWFrZV9wb3J0KToKKyAg
ICAgICAgKE1vY2tEUlRUZXN0LmFzc2VydFRlc3QpOgorICAgICAgICAoTW9ja0RSVFRlc3QudGVz
dF9tYWluKToKKyAgICAgICAgKE1vY2tDaHJvbWl1bURSVFRlc3QudGVzdF9waXhlbHRlc3RfX2Zh
aWxzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0X3Vu
aXR0ZXN0LnB5OgorICAgICAgICAoUXRQb3J0VGVzdC5fYXNzZXJ0X3NlYXJjaF9wYXRoKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAg
ICAgIChUZXN0SW5zdGFuY2UuX19pbml0X18pOgorICAgICAgICAoYWRkX3VuaXRfdGVzdHNfdG9f
bW9ja19maWxlc3lzdGVtKToKKyAgICAgICAgKGFkZF9maWxlKToKKyAgICAgICAgKFRlc3RQb3J0
Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3dlYmtpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RXZWJLaXRQb3J0Ll9faW5pdF9fKToK
KyAgICAgICAgKFdlYktpdFBvcnRUZXN0LnRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3Jfc3lt
Ym9scyk6CisgICAgICAgICh0ZXN0X3NraXBwZWRfZGlyZWN0b3JpZXNfZm9yX2ZlYXR1cmVzKToK
KyAgICAgICAgKHRlc3Rfc2tpcHBlZF9sYXlvdXRfdGVzdHMpOgorICAgICAgICAodGVzdF9za2lw
cGVkX2ZpbGVfc2VhcmNoX3BhdGhzKToKKyAgICAgICAgKHRlc3Rfcm9vdF9vcHRpb24pOgorICAg
ICAgICAodGVzdF90ZXN0X2V4cGVjdGF0aW9ucyk6CisgICAgICAgICh0ZXN0X2J1aWxkX2RyaXZl
cik6CisgICAgICAgICh0ZXN0X2xpbnV4X2Rpc3Ryb19kZXRlY3Rpb24pOgorICAgICAgICAodGVz
dF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0pOgorICAgICAgICAodGVzdF9w
YXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZSk6CisgICAgICAgIChXZWJLaXREcml2ZXJUZXN0LnRl
c3RfcmVhZF9ibG9jayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAgICAgVXBkYXRl
IHRvIG1ha2UgLS1wbGF0Zm9ybSB0ZXN0IHdvcmsgY29ycmVjdGx5LgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0
LnB5OgorICAgICAgICAocGFzc2luZ19ydW4pOgorICAgICAgICAobG9nZ2luZ19ydW4pOgorICAg
ICAgICAoZ2V0X3Rlc3RzX3J1bik6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3NpbmdsZV9maWxl
KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rfc3RkZXJyX2lzX3NhdmVkKToKKyAgICAgICAgKE1h
aW5UZXN0LnRlc3RfdGVzdF9saXN0KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfdGVzdF9saXN0
X3dpdGhfcHJlZml4KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfbWlzc2luZ19hbmRfdW5leHBl
Y3RlZF9yZXN1bHRzKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfbWlzc2luZ19hbmRfdW5leHBl
Y3RlZF9yZXN1bHRzX3dpdGhfY3VzdG9tX2V4aXRfY29kZSk6CisgICAgICAgIChNYWluVGVzdC50
ZXN0X2NyYXNoX3dpdGhfc3RkZXJyKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rfbm9faW1hZ2Vf
ZmFpbHVyZV93aXRoX2ltYWdlX2RpZmYpOgorICAgICAgICAoTWFpblRlc3QudGVzdF9jcmFzaF9s
b2cpOgorICAgICAgICAoTWFpblRlc3QudGVzdF93ZWJfcHJvY2Vzc19jcmFzaF9sb2cpOgorICAg
ICAgICAoTWFpblRlc3QudGVzdF9leGl0X2FmdGVyX25fZmFpbHVyZXNfdXBsb2FkKToKKyAgICAg
ICAgKE1haW5UZXN0LnRlc3RfcmVzdWx0c19kaXJlY3RvcnlfYWJzb2x1dGUpOgorICAgICAgICAo
TWFpblRlc3QudGVzdF9yZXN1bHRzX2RpcmVjdG9yeV9yZWxhdGl2ZSk6CisgICAgICAgIChNYWlu
VGVzdC50ZXN0X3JldHJpZXNfZGlyZWN0b3J5KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfdG9s
ZXJhbmNlLmdldF9wb3J0X2Zvcl9ydW4pOgorICAgICAgICAoTWFpblRlc3QudGVzdF9yZWZ0ZXN0
X3Nob3VsZF9ub3RfdXNlX25hbWluZ19jb252ZW50aW9uX2lmX25vdF9saXN0ZWRfaW5fcmVmdGVz
dGxpc3QpOgorICAgICAgICAoRW5kVG9FbmRUZXN0LnRlc3RfZW5kX3RvX2VuZCk6CisgICAgICAg
IChFbmRUb0VuZFRlc3QudGVzdF9yZWZ0ZXN0X3dpdGhfdHdvX25vdHJlZnMpOgorICAgICAgICAo
UmViYXNlbGluZVRlc3QudGVzdF9yZXNldF9yZXN1bHRzKToKKyAgICAgICAgKFJlYmFzZWxpbmVU
ZXN0LnRlc3RfbWlzc2luZ19yZXN1bHRzKToKKyAgICAgICAgKFJlYmFzZWxpbmVUZXN0LnRlc3Rf
bmV3X2Jhc2VsaW5lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L3Rlc3RfZXhwZWN0YXRpb25zLnB5OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIu
X19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVz
dF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25zVGVz
dENhc2UuX2V4cGVjdF9wb3J0X2Zvcl9leHBlY3RhdGlvbnNfcGF0aCk6CisgICAgICAgIChUZXN0
RXhwZWN0YXRpb25zVGVzdENhc2UuYXNzZXJ0X2xpbmVzX2xpbnQpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMu
cHk6CisgICAgICAgIChSZWJhc2VsaW5lci5fX2luaXRfXyk6CisgICAgICAgIChSZWJhc2VsaW5l
ci5fZXh0cmFjdF9hbmRfYWRkX25ld19iYXNlbGluZSk6CisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKHJlYWxfbWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9y
ZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToKKyAgICAgICAgKHRl
c3RfaG9zdF9wb3J0X2FuZF9maWxlc3lzdGVtKToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lci5t
YWtlX3JlYmFzZWxpbmVyKToKKyAgICAgICAgKFRlc3RSZWFsTWFpbi50ZXN0X2FsbF9wbGF0Zm9y
bXMpOgorICAgICAgICAoVGVzdEh0bWxHZW5lcmF0b3IubWFrZV9nZW5lcmF0b3IpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXJfdW5pdHRl
c3QucHk6CisgICAgICAgIChnZXRfdGVzdF9jb25maWcuVGVzdE1hY1BvcnQpOgorCisyMDExLTEy
LTA2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIGNyZWF0
ZSBhICJTeXN0ZW1Ib3N0IiBvYmplY3QgZm9yIHdlYmtpdHB5IHRvIHNsaW0gZG93biB0aGUgSG9z
dCBvYmplY3QKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcyNjgwCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2hvc3Rf
bW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2hvc3RfbW9jay5weQppbmRl
eCBlNmQ2MzI1YmE2MDMyZGFhZWRkZDZhZDViZDQzNDU1YjJhOThiMTM2Li41NWRmM2U5YTI0YTBm
NGZlZTFmNjA3ODk3ZWUxM2MyZWYyMjE3OWY5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9ob3N0X21vY2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vaG9zdF9tb2NrLnB5CkBAIC0zNiwxNSArMzYsMTcgQEAgZnJvbSB3ZWJraXRweS5jb21t
b24ud2F0Y2hsaXN0LndhdGNobGlzdF9tb2NrIGltcG9ydCBNb2NrV2F0Y2hMaXN0CiAKICMgTmV3
LXN0eWxlIHBvcnRzIG5lZWQgdG8gbW92ZSBkb3duIGludG8gd2Via2l0cHkuY29tbW9uLgogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5mYWN0b3J5IGltcG9ydCBQb3J0RmFjdG9yeQor
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0IGltcG9ydCBhZGRfdW5pdF90ZXN0
c190b19tb2NrX2ZpbGVzeXN0ZW0KIAogCiBjbGFzcyBNb2NrSG9zdChNb2NrU3lzdGVtSG9zdCk6
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ19leGVjdXRpdmU9RmFsc2UsIGV4ZWN1dGl2ZV90
aHJvd3Nfd2hlbl9ydW49Tm9uZSk6CiAgICAgICAgIE1vY2tTeXN0ZW1Ib3N0Ll9faW5pdF9fKHNl
bGYsIGxvZ19leGVjdXRpdmUsIGV4ZWN1dGl2ZV90aHJvd3Nfd2hlbl9ydW4pCisgICAgICAgIGFk
ZF91bml0X3Rlc3RzX3RvX21vY2tfZmlsZXN5c3RlbShzZWxmLmZpbGVzeXN0ZW0pCiAgICAgICAg
IHNlbGYud2ViID0gTW9ja1dlYigpCiAKICAgICAgICAgc2VsZi5fY2hlY2tvdXQgPSBNb2NrQ2hl
Y2tvdXQoKQotICAgICAgICBzZWxmLl9zY20gPSBNb2NrU0NNKCkKKyAgICAgICAgc2VsZi5fc2Nt
ID0gTW9ja1NDTShmaWxlc3lzdGVtPXNlbGYuZmlsZXN5c3RlbSwgZXhlY3V0aXZlPXNlbGYuZXhl
Y3V0aXZlKQogICAgICAgICAjIFZhcmlvdXMgcGllY2VzIG9mIGNvZGUgKHdyb25nbHkpIGNhbGwg
ZmlsZXN5c3RlbS5jaGRpcihjaGVja291dF9yb290KS4KICAgICAgICAgIyBNYWtpbmcgdGhlIGNo
ZWNrb3V0X3Jvb3QgZXhpc3QgaW4gdGhlIG1vY2sgZmlsZXN5c3RlbSBtYWtlcyB0aGF0IGNoZGly
IG5vdCByYWlzZS4KICAgICAgICAgc2VsZi5maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5
KHNlbGYuX3NjbS5jaGVja291dF9yb290KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKaW5kZXggZDhjZGQyNTYwYTRj
NzRlODcwNjk1ZTM4MDg5ZWQzYTY2MDkyMzNiZC4uMzJmZDEwNzFhNzAwYzY3YzI4NjI1NjIzNjNh
NGYwNTYwNTI0OGIzMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CkBAIC02NCw2ICs2NCwxMCBAQCBjbGFzcyBN
b2NrRmlsZVN5c3RlbShvYmplY3QpOgogCiAgICAgc2VwID0gcHJvcGVydHkoX2dldF9zZXAsIGRv
Yz0icGF0aG5hbWUgc2VwYXJhdG9yIikKIAorICAgIGRlZiBjbGVhcl93cml0dGVuX2ZpbGVzKHNl
bGYpOgorICAgICAgICAjIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gdHJhY2sgd2hhdCBp
cyB3cml0dGVuIGJldHdlZW4gc3RlcHMgaW4gYSB0ZXN0LgorICAgICAgICBzZWxmLndyaXR0ZW5f
ZmlsZXMgPSB7fQorCiAgICAgZGVmIF9yYWlzZV9ub3RfZm91bmQoc2VsZiwgcGF0aCk6CiAgICAg
ICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRU5PRU5ULCBwYXRoLCBvcy5zdHJlcnJvcihlcnJuby5F
Tk9FTlQpKQogCkBAIC0yNDMsOCArMjQ3LDkgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0
KToKIAogICAgIGRlZiBtYXliZV9tYWtlX2RpcmVjdG9yeShzZWxmLCAqcGF0aCk6CiAgICAgICAg
IG5vcm1fcGF0aCA9IHNlbGYubm9ybXBhdGgoc2VsZi5qb2luKCpwYXRoKSkKLSAgICAgICAgaWYg
bm90IHNlbGYuaXNkaXIobm9ybV9wYXRoKToKKyAgICAgICAgd2hpbGUgbm9ybV9wYXRoIGFuZCBu
b3Qgc2VsZi5pc2Rpcihub3JtX3BhdGgpOgogICAgICAgICAgICAgc2VsZi5kaXJzLmFkZChub3Jt
X3BhdGgpCisgICAgICAgICAgICBub3JtX3BhdGggPSBzZWxmLmRpcm5hbWUobm9ybV9wYXRoKQog
CiAgICAgZGVmIG1vdmUoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6CiAgICAgICAgIGlmIHNl
bGYuZmlsZXNbc291cmNlXSBpcyBOb25lOgpAQCAtMjc1LDYgKzI4MCw3IEBAIGNsYXNzIE1vY2tG
aWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLmZpbGVzW3BhdGhdCiAKICAg
ICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgorICAgICAgICAj
IEZJWE1FOiBzaG91bGQgdGhpcyBhc3NlcnQgaWYgZGlybmFtZShwYXRoKSBkb2Vzbid0IGV4aXN0
PwogICAgICAgICBzZWxmLmZpbGVzW3BhdGhdID0gY29udGVudHMKICAgICAgICAgc2VsZi53cml0
dGVuX2ZpbGVzW3BhdGhdID0gY29udGVudHMKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdl
cl93b3JrZXJfYnJva2VyLnB5CmluZGV4IDBkY2FiZWI4NWM2NGM3YWQ5M2UzN2IxM2JmNDg0MzA1
ZGQ1N2M5ZjMuLjE0ZTZlZGI4ZmJiYWQ0OGExOWI0ZjFhMjhmZTkyMDE1YWI1ODU5MWIgMTAwNzU1
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXJfd29ya2VyX2Jyb2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKQEAgLTUyLDcgKzUy
LDEwIEBAIHRyeToKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBtdWx0aXByb2Nlc3NpbmcgPSBO
b25lCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QgICMgRklYTUU6IFRo
aXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQhCisjIFRoZXNlIGFyZSBuZWVkZWQgd2hlbiB3b3JrZXJz
IGFyZSBsYXVuY2hlZCBpbiBuZXcgY2hpbGQgcHJvY2Vzc2VzLgorZnJvbSB3ZWJraXRweS5jb21t
b24uaG9zdCBpbXBvcnQgSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9y
dCBNb2NrSG9zdAorCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBv
cnQgbWVzc2FnZV9icm9rZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9y
dCBwcmludGluZwogCkBAIC0yNTIsMTEgKzI1NSwxNiBAQCBpZiBtdWx0aXByb2Nlc3Npbmc6CiAg
ICAgICAgICAgICBzZWxmLl9jbGllbnQgPSBjbGllbnQKIAogICAgICAgICBkZWYgcnVuKHNlbGYp
OgotICAgICAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKLSAgICAgICAgICAgICMgRklY
TUU6IFRoaXMgc2hvdWxkIGdldCB0aGUgSG9zdCBmcm9tIHRoZSBvd25lciBvZiB0aGlzIG9iamVj
dAotICAgICAgICAgICAgIyBzbyB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBwcm9wZXJseSBtb2NrZWQh
Ci0gICAgICAgICAgICBob3N0ID0gSG9zdCgpCisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gY3Jl
YXRlIGEgbmV3IEhvc3Qgb2JqZWN0IGhlcmUgYmVjYXVzZSB0aGlzIGlzCisgICAgICAgICAgICAj
IHJ1bm5pbmcgaW4gYSBuZXcgcHJvY2VzcyBhbmQgd2UgY2FuJ3QgcmVxdWlyZSB0aGUgcGFyZW50
J3MKKyAgICAgICAgICAgICMgSG9zdCB0byBiZSBwaWNrbGVhYmxlIGFuZCBwYXNzZWQgdG8gdGhl
IGNoaWxkLgorICAgICAgICAgICAgaWYgc2VsZi5fcGxhdGZvcm1fbmFtZS5zdGFydHN3aXRoKCd0
ZXN0Jyk6CisgICAgICAgICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgaG9zdCA9IEhvc3QoKQogICAgICAgICAgICAgaG9zdC5faW5p
dGlhbGl6ZV9zY20oKQorCisgICAgICAgICAgICBvcHRpb25zID0gc2VsZi5fb3B0aW9ucwogICAg
ICAgICAgICAgcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoc2VsZi5fcGxhdGZvcm1f
bmFtZSwgb3B0aW9ucykKIAogICAgICAgICAgICAgIyBUaGUgdW5peCBtdWx0aXByb2Nlc3Npbmcg
aW1wbGVtZW50YXRpb24gY2xvbmVzIHRoZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVyX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVz
dF9yZXN1bHRfd3JpdGVyX3VuaXR0ZXN0LnB5CmluZGV4IDQ2ZjcyZTZkMzU3ZTI0ZmM3M2FhMDJi
NWVjMDRjYTRiZWI4MmY1MWYuLmM3OTg0NmEyZDIwYWZiNjJmZGMxMDRjNmRiM2I4NDgwMTUyZTlh
YTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXJfdW5p
dHRlc3QucHkKQEAgLTI2LDYgKzI2LDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9ydCB0ZXN0X3Jlc3VsdF93cml0ZXIKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMucG9ydC5kcml2ZXIgaW1wb3J0IERyaXZlck91dHB1dApAQCAtNDMs
MTQgKzQ0LDE0IEBAIGNsYXNzIFRlc3RSZXN1bHRXcml0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgICAgICAgICB1c2VkX3RvbGVyYW5jZV92YWx1ZXMuYXBwZW5kKHRvbGVyYW5j
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gKFRydWUsIDEpCiAKLSAgICAgICAgcG9ydCA9IElt
YWdlRGlmZlRlc3RQb3J0KCkKLSAgICAgICAgZnMgPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAg
IGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHBvcnQgPSBJbWFnZURpZmZUZXN0UG9ydChob3N0
KQogICAgICAgICB0ZXN0X25hbWUgPSAnZmFpbHVyZXMvdW5leHBlY3RlZC9yZWZ0ZXN0Lmh0bWwn
Ci0gICAgICAgIHRlc3RfcmVmZXJlbmNlX2ZpbGUgPSBmcy5qb2luKHBvcnQubGF5b3V0X3Rlc3Rz
X2RpcigpLCAnZmFpbHVyZXMvdW5leHBlY3RlZC9yZWZ0ZXN0LWV4cGVjdGVkLmh0bWwnKQorICAg
ICAgICB0ZXN0X3JlZmVyZW5jZV9maWxlID0gaG9zdC5maWxlc3lzdGVtLmpvaW4ocG9ydC5sYXlv
dXRfdGVzdHNfZGlyKCksICdmYWlsdXJlcy91bmV4cGVjdGVkL3JlZnRlc3QtZXhwZWN0ZWQuaHRt
bCcpCiAgICAgICAgIGRyaXZlcl9vdXRwdXQxID0gRHJpdmVyT3V0cHV0KCd0ZXh0MScsICdpbWFn
ZTEnLCAnaW1hZ2VoYXNoMScsICdhdWRpbzEnKQogICAgICAgICBkcml2ZXJfb3V0cHV0MiA9IERy
aXZlck91dHB1dCgndGV4dDInLCAnaW1hZ2UyJywgJ2ltYWdlaGFzaDInLCAnYXVkaW8yJykKICAg
ICAgICAgZmFpbHVyZXMgPSBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoKHRl
c3RfcmVmZXJlbmNlX2ZpbGUpXQotICAgICAgICB0ZXN0X3Jlc3VsdF93cml0ZXIud3JpdGVfdGVz
dF9yZXN1bHQoSW1hZ2VEaWZmVGVzdFBvcnQoKSwgdGVzdF9uYW1lLAorICAgICAgICB0ZXN0X3Jl
c3VsdF93cml0ZXIud3JpdGVfdGVzdF9yZXN1bHQoSW1hZ2VEaWZmVGVzdFBvcnQoaG9zdCksIHRl
c3RfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRy
aXZlcl9vdXRwdXQxLCBkcml2ZXJfb3V0cHV0MiwgZmFpbHVyZXMpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoWzBdLCB1c2VkX3RvbGVyYW5jZV92YWx1ZXMpCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0
c19nZW5lcmF0b3JfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDBhMzFlNDdiYmExMjhiOGI0ZjU3OTg3NWI5Y2EyNGE1OWUxMTFiZjYuLmIzZTVjYmNkODhj
NTdlZWVmNzE1ZDQ5YTkyNjBjYzAzNjA2M2IzMzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0
b3JfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5weQpAQCAtMzIs
NyArMzIsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IHJhbmRv
bQogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGZpbGVzeXN0ZW1fbW9jawor
ZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19nZW5l
cmF0b3IKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBl
Y3RhdGlvbnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHRlc3QKQEAg
LTg5LDggKzg5LDkgQEAgY2xhc3MgSlNPTkdlbmVyYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICAgICAgICAgIGZhaWxlZD0odGVzdCBpbiBmYWlsZWRfdGVzdHMpLAogICAgICAg
ICAgICAgICAgIGVsYXBzZWRfdGltZT10ZXN0X3RpbWluZ3NbdGVzdF0pCiAKKyAgICAgICAgaG9z
dCA9IE1vY2tIb3N0KCkKICAgICAgICAgcG9ydCA9IE1vY2soKQotICAgICAgICBwb3J0Ll9maWxl
c3lzdGVtID0gZmlsZXN5c3RlbV9tb2NrLk1vY2tGaWxlU3lzdGVtKCkKKyAgICAgICAgcG9ydC5f
ZmlsZXN5c3RlbSA9IGhvc3QuZmlsZXN5c3RlbQogICAgICAgICBnZW5lcmF0b3IgPSBqc29uX3Jl
c3VsdHNfZ2VuZXJhdG9yLkpTT05SZXN1bHRzR2VuZXJhdG9yQmFzZShwb3J0LAogICAgICAgICAg
ICAgc2VsZi5idWlsZGVyX25hbWUsIHNlbGYuYnVpbGRfbmFtZSwgc2VsZi5idWlsZF9udW1iZXIs
CiAgICAgICAgICAgICAnJywKQEAgLTIxMyw3ICsyMTQsNyBAQCBjbGFzcyBKU09OR2VuZXJhdG9y
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuX3Rlc3RfanNvbl9nZW5lcmF0
aW9uKFsnZm9vL0EnXSwgWydmb28vQicsICdiYXIvQyddKQogCiAgICAgZGVmIHRlc3RfdGVzdF90
aW1pbmdzX3RyaWUoc2VsZik6Ci0gICAgICAgIHRlc3RfcG9ydCA9IHRlc3QuVGVzdFBvcnQoKQor
ICAgICAgICB0ZXN0X3BvcnQgPSB0ZXN0LlRlc3RQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIGlu
ZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gW10KICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWlu
Z3MuYXBwZW5kKGpzb25fcmVzdWx0c19nZW5lcmF0b3IuVGVzdFJlc3VsdCgnZm9vL2Jhci9iYXou
aHRtbCcsIGVsYXBzZWRfdGltZT0xLjIpKQogICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
cy5hcHBlbmQoanNvbl9yZXN1bHRzX2dlbmVyYXRvci5UZXN0UmVzdWx0KCdiYXIuaHRtbCcsIGVs
YXBzZWRfdGltZT0wLjAwMDEpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3Vu
aXR0ZXN0LnB5CmluZGV4IDc4ZGE3NDAzZWQwNGIyNzkwMTg3NTJkZGNmMmYxYWEwODc4MjlhMDEu
LmRhNzhlZDQxNmZkN2IyZjYzZWJjOTQzZTM0ZGUwNTVjN2FkYTIyZDggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9u
c191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9t
b2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKQEAgLTk0LDcgKzk0LDcgQEAgY2xh
c3MgQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RG
dW5jLCBzZXRVcD1Ob25lLCB0ZWFyRG93bj1Ob25lLCBkZXNjcmlwdGlvbj1Ob25lKToKICAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgc2VsZi5fcG9ydCA9IGhvc3QucG9ydF9mYWN0
b3J5LmdldCgndGVzdC13aW4teHAnLCBOb25lKQotICAgICAgICBzZWxmLl9mcyA9IHNlbGYuX3Bv
cnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5fZnMgPSBob3N0LmZpbGVzeXN0ZW0KICAgICAg
ICAgc2VsZi5fZXhwID0gTm9uZQogICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhz
ZWxmLCB0ZXN0RnVuYykKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CmluZGV4IDg1MTE0NDAwMjUxOTA2Mjg0YmQxMGEzZjQ5Yzc1Y2YwOTVk
Yjc5NmUuLjMwMDJlNDIyNGM5YmIwY2Y3Y2E5ZjJkOTk1MDRmNjA4MTY4MzliZDMgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTUx
LDYgKzUxLDggQEAgZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IGZpbmRfZmlsZXMKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndXRpbHMKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbSBpbXBvcnQgcGF0aAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0
ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lz
dGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMgaW1wb3J0IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9u
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBjb25maWcgYXMgcG9ydF9j
b25maWcKQEAgLTExMCw5ICsxMTIsOSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHNl
bGYuaG9zdCA9IGhvc3QKIAogICAgICAgICAjIEZJWE1FOiBSZW1vdmUgdGhlcyBhY2Nlc3NvcnMg
b25jZSBhbGwgY2FsbGVycyBoYXZlIG1vdmVkIHRvIHVzaW5nIHNlbGYuaG9zdC4KLSAgICAgICAg
c2VsZi5leGVjdXRpdmUgPSBleGVjdXRpdmUgb3Igc2VsZi5ob3N0LmV4ZWN1dGl2ZQotICAgICAg
ICBzZWxmLnVzZXIgPSB1c2VyIG9yIHNlbGYuaG9zdC51c2VyCi0gICAgICAgIHNlbGYuZmlsZXN5
c3RlbSA9IGZpbGVzeXN0ZW0gb3Igc2VsZi5ob3N0LmZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5l
eGVjdXRpdmUgPSBzZWxmLmhvc3QuZXhlY3V0aXZlCisgICAgICAgIHNlbGYudXNlciA9IHNlbGYu
aG9zdC51c2VyCisgICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IHNlbGYuaG9zdC5maWxlc3lzdGVt
CiAgICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnIG9yIHBvcnRfY29uZmlnLkNvbmZpZyhzZWxm
LmV4ZWN1dGl2ZSwgc2VsZi5maWxlc3lzdGVtKQogCiAgICAgICAgICMgRklYTUU6IFJlbW92ZSBh
bGwgb2YgdGhlIG9sZCAicHJvdGVjdGVkIiB2ZXJzaW9ucyB3aGVuIHdlIGNhbi4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0
dGVzdC5weQppbmRleCAyNGM2ZmM5OGNkMWU5YmIyMmQwNGE3NGYyYWUzYmI2ZjZjZjg4OWE1Li5k
NDJjMmYwYjlmYzlhMzU3OTZmMzhjMTE5MmFlMThiZmIxMWQ1YTVkIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0
LnB5CkBAIC00NywxMCArNDcsMTEgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50
ZXN0IGltcG9ydCBUZXN0UG9ydAogaW1wb3J0IGNvbmZpZwogaW1wb3J0IGNvbmZpZ19tb2NrCiAK
LQogY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBtYWtlX3BvcnQo
c2VsZiwgaG9zdD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIGhvc3QgPSBob3N0IG9yIE1vY2tI
b3N0KCkKKyAgICBkZWYgbWFrZV9wb3J0KHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgaG9zdCA9
IE1vY2tIb3N0KCkKKyAgICAgICAgaWYgJ2V4ZWN1dGl2ZScgaW4ga3dhcmdzOgorICAgICAgICAg
ICAgaG9zdC5leGVjdXRpdmUgPSBrd2FyZ3NbJ2V4ZWN1dGl2ZSddCiAgICAgICAgIHJldHVybiBQ
b3J0KGhvc3QsICoqa3dhcmdzKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF9jaGlsZF9wcm9jZXNz
ZXMoc2VsZik6CkBAIC0yMDMsMTEgKzIwNCw5IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmRlZmF1bHRfY29uZmlndXJh
dGlvbigpLCAnZGVmYXVsdCcpCiAKICAgICBkZWYgdGVzdF9sYXlvdXRfdGVzdHNfc2tpcHBpbmco
c2VsZik6Ci0gICAgICAgIGZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7Ci0gICAgICAgICAg
ICAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tem9vbS5odG1sJzogJycs
Ci0gICAgICAgICAgICAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvZm9vL2Jhci5odG1sJzog
JycsCi0gICAgICAgIH0pCi0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChmaWxlc3lzdGVt
PWZpbGVzeXN0ZW0pCisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCisgICAgICAgIHBv
cnQuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkgKyAn
L21lZGlhL3ZpZGVvLXpvb20uaHRtbCcsICcnKQorICAgICAgICBwb3J0LmZpbGVzeXN0ZW0ud3Jp
dGVfdGV4dF9maWxlKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy9mb28vYmFyLmh0bWwnLCAn
JykKICAgICAgICAgcG9ydC5za2lwcGVkX2xheW91dF90ZXN0cyA9IGxhbWJkYTogWydmb28vYmFy
Lmh0bWwnLCAnbWVkaWEnXQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5za2lwc19sYXlv
dXRfdGVzdCgnZm9vL2Jhci5odG1sJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LnNr
aXBzX2xheW91dF90ZXN0KCdtZWRpYS92aWRlby16b29tLmh0bWwnKSkKQEAgLTIxOSwxMSArMjE4
LDkgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBwb3J0LnNl
dHVwX3Rlc3RfcnVuKCkKIAogICAgIGRlZiB0ZXN0X3Rlc3RfZGlycyhzZWxmKToKLSAgICAgICAg
ZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHsKLSAgICAgICAgICAgICcvbW9jay1jaGVja291
dC9MYXlvdXRUZXN0cy9jYW52YXMvdGVzdCc6ICcnLAotICAgICAgICAgICAgJy9tb2NrLWNoZWNr
b3V0L0xheW91dFRlc3RzL2NzczIuMS90ZXN0JzogJycsCi0gICAgICAgIH0pCi0gICAgICAgIHBv
cnQgPSBzZWxmLm1ha2VfcG9ydChmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIHBvcnQg
PSBzZWxmLm1ha2VfcG9ydCgpCisgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9m
aWxlKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy9jYW52YXMvdGVzdCcsICcnKQorICAgICAg
ICBwb3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwb3J0LmxheW91dF90ZXN0c19kaXIo
KSArICcvY3NzMi4xL3Rlc3QnLCAnJykKICAgICAgICAgZGlycyA9IHBvcnQudGVzdF9kaXJzKCkK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdjYW52YXMnIGluIGRpcnMpCiAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgnY3NzMi4xJyBpbiBkaXJzKQpAQCAtMjYxLDggKzI1OCw3IEBAIGNsYXNzIFBv
cnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0
Lm5hbWUoKSwgJ2ZvbycpCiAKICAgICBkZWYgdGVzdF9hZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVj
dG9yeShzZWxmKToKLSAgICAgICAgZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKCkKLSAgICAg
ICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nZm9vJywgZmlsZXN5c3RlbT1maWxl
c3lzdGVtKQorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSdmb28nKQog
ICAgICAgICBwb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoID0gbGFtYmRhOiBbJ0xheW91dFRlc3Rz
L3BsYXRmb3JtL2ZvbyddCiAgICAgICAgIGxheW91dF90ZXN0X2RpciA9IHBvcnQubGF5b3V0X3Rl
c3RzX2RpcigpCiAgICAgICAgIHRlc3RfZmlsZSA9ICdmYXN0L3Rlc3QuaHRtbCcKQEAgLTI3NSw5
ICsyNzEsNyBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAg
IyBTaW1wbGUgYWRkaXRpb25hbCBwbGF0Zm9ybSBkaXJlY3RvcnkKICAgICAgICAgcG9ydC5fb3B0
aW9ucy5hZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVjdG9yeSA9IFsnL3RtcC9sb2NhbC1iYXNlbGlu
ZXMnXQotICAgICAgICBmaWxlc3lzdGVtLmZpbGVzID0gewotICAgICAgICAgICAgJy90bXAvbG9j
YWwtYmFzZWxpbmVzL2Zhc3QvdGVzdC1leHBlY3RlZC50eHQnOiAnZm9vJywKLSAgICAgICAgfQor
ICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL3RtcC9sb2NhbC1iYXNl
bGluZXMvZmFzdC90ZXN0LWV4cGVjdGVkLnR4dCcsICdmb28nKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAogICAgICAgICAgICAgcG9ydC5leHBlY3RlZF9iYXNlbGluZXModGVzdF9maWxlLCAn
LnR4dCcpLAogICAgICAgICAgICAgWygnL3RtcC9sb2NhbC1iYXNlbGluZXMnLCAnZmFzdC90ZXN0
LWV4cGVjdGVkLnR4dCcpXSkKQEAgLTI5MSwzNiArMjg1LDM1IEBAIGNsYXNzIFBvcnRUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmJhc2VsaW5l
X3BhdGgoKSwgJy9mb28nKQogCiAgICAgZGVmIHRlc3RfdXNlc190ZXN0X2V4cGVjdGF0aW9uc19m
aWxlKHNlbGYpOgotICAgICAgICBmaWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oKQotICAgICAg
ICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSdmb28nLCBmaWxlc3lzdGVtPWZpbGVz
eXN0ZW0pCisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J2ZvbycpCiAg
ICAgICAgIHBvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlID0gbGFtYmRhOiAnL21v
Y2stcmVzdWx0cy90ZXN0X2V4cGVjdGF0aW9ucy50eHQnCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UocG9ydC51c2VzX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSkKICAgICAgICAgcG9ydC5fZmls
ZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHsnL21vY2stcmVzdWx0cy90ZXN0X2V4cGVjdGF0aW9u
cy50eHQnOiAnJ30pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LnVzZXNfdGVzdF9leHBl
Y3RhdGlvbnNfZmlsZSgpKQogCiAgICAgZGVmIHRlc3RfZmluZF9ub19wYXRoc19zcGVjaWZpZWQo
c2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0UG9y
dChNb2NrSG9zdCgpKQogICAgICAgICBsYXlvdXRfdGVzdHNfZGlyID0gcG9ydC5sYXlvdXRfdGVz
dHNfZGlyKCkKICAgICAgICAgdGVzdHMgPSBwb3J0LnRlc3RzKFtdKQogICAgICAgICBzZWxmLmFz
c2VydE5vdEVxdWFsKGxlbih0ZXN0cyksIDApCiAKICAgICBkZWYgdGVzdF9maW5kX29uZV90ZXN0
KHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFBv
cnQoTW9ja0hvc3QoKSkKICAgICAgICAgdGVzdHMgPSBwb3J0LnRlc3RzKFsnZmFpbHVyZXMvZXhw
ZWN0ZWQvaW1hZ2UuaHRtbCddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXN0cyks
IDEpCiAKICAgICBkZWYgdGVzdF9maW5kX2dsb2Ioc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0
UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICB0ZXN0
cyA9IHBvcnQudGVzdHMoWydmYWlsdXJlcy9leHBlY3RlZC9pbSonXSkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4odGVzdHMpLCAyKQogCiAgICAgZGVmIHRlc3RfZmluZF93aXRoX3NraXBw
ZWRfZGlyZWN0b3JpZXMoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0UG9ydCgpCisgICAgICAg
IHBvcnQgPSBUZXN0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICB0ZXN0cyA9IHBvcnQudGVzdHMo
J3VzZXJzY3JpcHRzJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd1c2Vyc2NyaXB0cy9yZXNv
dXJjZXMvaWZyYW1lLmh0bWwnIG5vdCBpbiB0ZXN0cykKIAogICAgIGRlZiB0ZXN0X2ZpbmRfd2l0
aF9za2lwcGVkX2RpcmVjdG9yaWVzXzIoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0UG9ydCgp
CisgICAgICAgIHBvcnQgPSBUZXN0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICB0ZXN0cyA9IHBv
cnQudGVzdHMoWyd1c2Vyc2NyaXB0cy9yZXNvdXJjZXMnXSkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0ZXN0cywgc2V0KFtdKSkKIApAQCAtMzQwLDcgKzMzMyw3IEBAIGNsYXNzIFBvcnRUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQb3J0Ll9pc190
ZXN0X2ZpbGUoZmlsZXN5c3RlbSwgJycsICdub3RyZWYtZm9vLnhocicpKQogCiAgICAgZGVmIHRl
c3RfcGFyc2VfcmVmdGVzdF9saXN0KHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFBvcnQoKQor
ICAgICAgICBwb3J0ID0gVGVzdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgcG9ydC5ob3N0LmZp
bGVzeXN0ZW0uZmlsZXNbJ2Jhci9yZWZ0ZXN0Lmxpc3QnXSA9ICJcbiIuam9pbihbIj09IHRlc3Qu
aHRtbCB0ZXN0LXJlZi5odG1sIiwKICAgICAgICAgIiIsCiAgICAgICAgICIjIHNvbWUgY29tbWVu
dCIsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2RyeXJ1bi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5
cnVuLnB5CmluZGV4IDRkZTgyMzAxYTIxNmNmZWI5N2Q1ZTdiYjhjZTA5NDQ4NzJmZmQ3OTAuLmFh
YWZiMDk0Y2Y2ODc3ZjBhZWEzMDBlMjNlNzVlYTE1NzMyOTJjMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CkBAIC01Myw3ICs1
Myw5IEBAIGltcG9ydCB0aW1lCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9y
dCBEcml2ZXIsIERyaXZlck91dHB1dCwgZmFjdG9yeQogCiAKLSMgRklYTUU6IFdoeSBub3QgaW5o
ZXJpdCBmcm9tIFBvcnQ/CisjIE5vdGUgdGhhdCB3ZSBkb24ndCBpbmhlcml0IGZyb20gYmFzZS5Q
b3J0IGluIG9yZGVyIGZvciBkZWxlZ2F0aW9uIHRvCisjIHdvcmsgcHJvcGVybHk6IGV4Y2VwdCBm
b3IgdGhlIG1ldGhvZHMgZGVmaW5lZCBoZXJlLCB3ZSB3YW50IHRvIGVuc3VyZSB0aGF0CisjIGFs
bCBvZiB0aGUgbWV0aG9kcyBhcmUgcGFzc2VkIHRvIHRoZSBfX2RlbGVnYXRlLCBub3QgdG8gdGhl
IGJhc2UgY2xhc3MuCiBjbGFzcyBEcnlSdW5Qb3J0KG9iamVjdCk6CiAgICAgIiIiRHJ5UnVuIGlt
cGxlbWVudGF0aW9uIG9mIHRoZSBQb3J0IGludGVyZmFjZS4iIiIKIApAQCAtNjQsNyArNjYsNyBA
QCBjbGFzcyBEcnlSdW5Qb3J0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAga3dhcmdzWydwb3J0
X25hbWUnXSA9IGt3YXJnc1sncG9ydF9uYW1lJ11bbGVuKHBmeCk6XQogICAgICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgICAgICBrd2FyZ3NbJ3BvcnRfbmFtZSddID0gTm9uZQotICAgICAgICBz
ZWxmLl9fZGVsZWdhdGUgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoKiprd2FyZ3MpCisgICAgICAg
IHNlbGYuX19kZWxlZ2F0ZSA9IGZhY3RvcnkuUG9ydEZhY3RvcnkoaG9zdCkuZ2V0KCoqa3dhcmdz
KQogCiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgogICAgICAgICByZXR1cm4gZ2V0
YXR0cihzZWxmLl9fZGVsZWdhdGUsIG5hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkKaW5kZXggOWE1ZWU1NmUzMDYzMTRhZDgx
Y2Q4OWNmM2VhOWQxYTlmZTVkNjM5Ny4uNzY3MmRlNDRjNjc4YjI3ZjZhNmYzYTk4NGYyNjA1Mzc4
ODVlNTM4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9mYWN0b3J5LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZmFjdG9yeS5weQpAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCdWlsZGVyT3B0aW9ucyhv
YmplY3QpOgogCiAKIGNsYXNzIFBvcnRGYWN0b3J5KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGhvc3Q9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QpOgogICAgICAg
ICBzZWxmLl9ob3N0ID0gaG9zdAogCiAgICAgZGVmIF9wb3J0X25hbWVfZnJvbV9hcmd1bWVudHNf
YW5kX29wdGlvbnMoc2VsZiwgKiprd2FyZ3MpOgpAQCAtNjcsMjMgKzY3LDEyIEBAIGNsYXNzIFBv
cnRGYWN0b3J5KG9iamVjdCk6CiAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
KCd1bmtub3duIHBvcnQ7IHN5cy5wbGF0Zm9ybSA9ICIlcyInICUgc3lzLnBsYXRmb3JtKQogICAg
ICAgICByZXR1cm4gcG9ydF90b191c2UKIAotICAgIGRlZiBfc2V0X2RlZmF1bHRfb3ZlcnJpZGlu
Z19ub25lKHNlbGYsIGRpY3Rpb25hcnksIGtleSwgZGVmYXVsdCk6Ci0gICAgICAgICMgZGljdC5z
ZXRkZWZhdWx0IGFsbW9zdCB3b3JrcywgYnV0IHdvbid0IGFjdHVhbGx5IG92ZXJyaWRlIE5vbmUg
dmFsdWVzLCB3aGljaCB3ZSB3YW50LgotICAgICAgICBpZiBub3QgZGljdGlvbmFyeS5nZXQoa2V5
KToKLSAgICAgICAgICAgIGRpY3Rpb25hcnlba2V5XSA9IGRlZmF1bHQKLSAgICAgICAgcmV0dXJu
IGRpY3Rpb25hcnlba2V5XQotCi0gICAgZGVmIF9nZXRfa3dhcmdzKHNlbGYsIGhvc3Q9Tm9uZSwg
Kiprd2FyZ3MpOgorICAgIGRlZiBfZ2V0X2t3YXJncyhzZWxmLCAqKmt3YXJncyk6CiAgICAgICAg
IHBvcnRfdG9fdXNlID0gc2VsZi5fcG9ydF9uYW1lX2Zyb21fYXJndW1lbnRzX2FuZF9vcHRpb25z
KCoqa3dhcmdzKQogCiAgICAgICAgIGlmIHBvcnRfdG9fdXNlLnN0YXJ0c3dpdGgoJ3Rlc3QnKToK
ICAgICAgICAgICAgIGltcG9ydCB0ZXN0CiAgICAgICAgICAgICBtYWtlciA9IHRlc3QuVGVzdFBv
cnQKLSAgICAgICAgICAgICMgRklYTUU6IFRoaXMgaXMgYSBoYWNrIHRvIG92ZXJyaWRlIHRoZSAi
ZGVmYXVsdCIgZmlsZXN5c3RlbQotICAgICAgICAgICAgIyBwcm92aWRlZCB0byB0aGUgcG9ydC4g
IFRoZSB1bml0X3Rlc3RfZmlsZXN5c3RlbSBoYXMgYW4gZXh0cmEKLSAgICAgICAgICAgICMgX3Rl
c3RzIGF0dHJpYnV0ZSB3aGljaCBhIGJ1bmNoIG9mIHVuaXR0ZXN0cyBkZXBlbmQgb24uCi0gICAg
ICAgICAgICBmcm9tIC50ZXN0IGltcG9ydCB1bml0X3Rlc3RfZmlsZXN5c3RlbQotICAgICAgICAg
ICAgc2VsZi5fc2V0X2RlZmF1bHRfb3ZlcnJpZGluZ19ub25lKGt3YXJncywgJ2ZpbGVzeXN0ZW0n
LCB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpKQogICAgICAgICBlbGlmIHBvcnRfdG9fdXNlLnN0YXJ0
c3dpdGgoJ2RyeXJ1bicpOgogICAgICAgICAgICAgaW1wb3J0IGRyeXJ1bgogICAgICAgICAgICAg
bWFrZXIgPSBkcnlydW4uRHJ5UnVuUG9ydApAQCAtMTIzLDggKzExMiw3IEBAIGNsYXNzIFBvcnRG
YWN0b3J5KG9iamVjdCk6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yKCd1bnN1cHBvcnRlZCBwb3J0OiAlcycgJSBwb3J0X3RvX3VzZSkKIAotICAg
ICAgICBob3N0ID0gaG9zdCBvciBzZWxmLl9ob3N0Ci0gICAgICAgIHJldHVybiBtYWtlcihob3N0
LCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIG1ha2VyKHNlbGYuX2hvc3QsICoqa3dhcmdzKQog
CiAgICAgZGVmIGFsbF9wb3J0X25hbWVzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBsaXN0
IG9mIGFsbCB2YWxpZCwgZnVsbHktc3BlY2lmaWVkLCAicmVhbCIgcG9ydCBuYW1lcy4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFj
dG9yeV91bml0dGVzdC5weQppbmRleCA2MWUzMWY1MmQ4OWEzYmU4YzQwM2FmNjEyNzgzNzMzNzk2
YjgxNDRhLi4xZjljMjM2YzZiMzI2MDU4ZjhiOTEwNmZkYTAzYmYxNGViYjIyZDZjIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5p
dHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9m
YWN0b3J5X3VuaXR0ZXN0LnB5CkBAIC0zMCw3ICszMCw3IEBAIGltcG9ydCBzeXMKIGltcG9ydCB1
bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25z
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Citmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9z
dAogCiBpbXBvcnQgY2hyb21pdW1fZ3B1CiBpbXBvcnQgY2hyb21pdW1fbGludXgKQEAgLTU5LDE1
ICs1OSwxMSBAQCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IHNlbGYucmVhbF9zeXNfcGxhdGZvcm0gPSBzeXMucGxhdGZvcm0KICAgICAgICAgc2VsZi53ZWJr
aXRfb3B0aW9ucyA9IE1vY2tPcHRpb25zKHBpeGVsX3Rlc3RzPUZhbHNlKQogICAgICAgICBzZWxm
LmNocm9taXVtX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhwaXhlbF90ZXN0cz1GYWxzZSwgY2hyb21p
dW09VHJ1ZSkKKyAgICAgICAgc2VsZi5mYWN0b3J5ID0gZmFjdG9yeS5Qb3J0RmFjdG9yeShNb2Nr
U3lzdGVtSG9zdCgpKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzeXMucGxh
dGZvcm0gPSBzZWxmLnJlYWxfc3lzX3BsYXRmb3JtCiAKLSAgICBkZWYgbWFrZV9mYWN0b3J5KHNl
bGYpOgotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICAjIFRoZSBQb3J0RmFjdG9y
eSBvbiBNb2NrSG9zdCBpcyBhIHJlYWwgUG9ydEZhY3Rvcnkgd2l0aCBhIE1vY2tGaWxlU3lzdGVt
LCBldGMuCi0gICAgICAgIHJldHVybiBob3N0LnBvcnRfZmFjdG9yeQotCiAgICAgZGVmIGFzc2Vy
dF9wb3J0KHNlbGYsIHBvcnRfbmFtZSwgZXhwZWN0ZWRfcG9ydCwgcG9ydF9vYmo9Tm9uZSk6CiAg
ICAgICAgICIiIkhlbHBlciBhc3NlcnQgZm9yIHBvcnRfbmFtZS4KIApAQCAtNzYsNyArNzIsNyBA
QCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgZXhwZWN0
ZWRfcG9ydDogY2xhc3Mgb2YgZXhwZWN0ZWQgcG9ydCBvYmplY3QuCiAgICAgICAgICAgcG9ydF9v
Ymo6IG9wdGlvbmFsIHBvcnQgb2JqZWN0CiAgICAgICAgICIiIgotICAgICAgICBwb3J0X29iaiA9
IHBvcnRfb2JqIG9yIHNlbGYubWFrZV9mYWN0b3J5KCkuZ2V0KHBvcnRfbmFtZT1wb3J0X25hbWUp
CisgICAgICAgIHBvcnRfb2JqID0gcG9ydF9vYmogb3Igc2VsZi5mYWN0b3J5LmdldChwb3J0X25h
bWU9cG9ydF9uYW1lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShwb3J0X29i
aiwgZXhwZWN0ZWRfcG9ydCkpCiAKICAgICBkZWYgYXNzZXJ0X3BsYXRmb3JtX3BvcnQoc2VsZiwg
cGxhdGZvcm0sIG9wdGlvbnMsIGV4cGVjdGVkX3BvcnQpOgpAQCAtOTIsNyArODgsNyBAQCBjbGFz
cyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIG9yaWdfcGxhdGZvcm0g
PSBzeXMucGxhdGZvcm0KICAgICAgICAgc3lzLnBsYXRmb3JtID0gcGxhdGZvcm0KICAgICAgICAg
IyBGSVhNRTogV2UgbmVlZCBhIGJldHRlciB3YXkgdG8gbW9jayB0aGlzLgotICAgICAgICBzZWxm
LmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLm1ha2VfZmFjdG9yeSgpLmdldChvcHRpb25zPW9w
dGlvbnMpLCBleHBlY3RlZF9wb3J0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFu
Y2Uoc2VsZi5mYWN0b3J5LmdldChvcHRpb25zPW9wdGlvbnMpLCBleHBlY3RlZF9wb3J0KSkKICAg
ICAgICAgc3lzLnBsYXRmb3JtID0gb3JpZ19wbGF0Zm9ybQogCiAgICAgZGVmIHRlc3RfbWFjKHNl
bGYpOgpAQCAtMTUzLDEzICsxNDksMTMgQEAgY2xhc3MgRmFjdG9yeVRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogCiAgICAgZGVmIHRlc3RfdW5rbm93bl9zcGVjaWZpZWQoc2VsZik6CiAgICAgICAg
ICMgVGVzdCB3aGF0IGhhcHBlbnMgd2hlbiB5b3Ugc3BlY2lmeSBhbiB1bmtub3duIHBvcnQuCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHNlbGYubWFrZV9m
YWN0b3J5KCkuZ2V0LCBwb3J0X25hbWU9J3Vua25vd24nKQorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzZWxmLmZhY3RvcnkuZ2V0LCBwb3J0X25hbWU9J3Vu
a25vd24nKQogCiAgICAgZGVmIHRlc3RfdW5rbm93bl9kZWZhdWx0KHNlbGYpOgogICAgICAgICAj
IFRlc3Qgd2hhdCBoYXBwZW5zIHdoZW4geW91J3JlIHJ1bm5pbmcgb24gYW4gdW5rbm93biBwbGF0
Zm9ybS4KICAgICAgICAgb3JpZ19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQogICAgICAgICBzeXMu
cGxhdGZvcm0gPSAndW5rbm93bicKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVt
ZW50ZWRFcnJvciwgc2VsZi5tYWtlX2ZhY3RvcnkoKS5nZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHNlbGYuZmFjdG9yeS5nZXQpCiAgICAgICAgIHN5
cy5wbGF0Zm9ybSA9IG9yaWdfcGxhdGZvcm0KIAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5p
dHRlc3QucHkKaW5kZXggZTMxN2UxMmM1YmU3ZmVmYmMxNzA4NGU0Y2YzN2ZhODA4YjA1ZjIxMy4u
MzZlNGFiNmFhNzE3MzdhZjk4MzgzZDIxYjYzNmJiZmRlNzdmOGViMyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29v
Z2xlX2Nocm9tZV91bml0dGVzdC5weQpAQCAtMjcsMTEgKzI3LDcgQEAKIGltcG9ydCB1bml0dGVz
dAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Ci1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5
c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBN
b2NrRXhlY3V0aXZlCi0KLQotaW1wb3J0IGdvb2dsZV9jaHJvbWUKK2Zyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGdvb2dsZV9jaHJvbWUKIAogCiBjbGFzcyBHZXRHb29nbGVD
aHJvbWVQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01OSw3ICs1NSw3IEBAIGNsYXNz
IEdldEdvb2dsZUNocm9tZVBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgaG9z
dCA9IE1vY2tIb3N0KCkKICAgICAgICAgY2hyb21pdW1fcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5
LmdldCgiY2hyb21pdW0tY2ctbWFjIikKICAgICAgICAgY2hyb21pdW1fYmFzZSA9IGNocm9taXVt
X3BvcnQucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoKQotICAgICAgICBwb3J0ID0gZ29vZ2xlX2No
cm9tZS5HZXRHb29nbGVDaHJvbWVQb3J0KHBvcnRfbmFtZT1wb3J0X25hbWUsIG9wdGlvbnM9Tm9u
ZSwgaG9zdD1ob3N0KQorICAgICAgICBwb3J0ID0gZ29vZ2xlX2Nocm9tZS5HZXRHb29nbGVDaHJv
bWVQb3J0KGhvc3QsIHBvcnRfbmFtZT1wb3J0X25hbWUsIG9wdGlvbnM9Tm9uZSkKIAogICAgICAg
ICBleHBlY3RlZF9jaHJvbWl1bV9vdmVycmlkZXMgPSAnLy8gY2hyb21pdW0gb3ZlcnJpZGVzXG4n
CiAgICAgICAgIGV4cGVjdGVkX2Nocm9tZV9vdmVycmlkZXMgPSAnLy8gY2hyb21lIG92ZXJyaWRl
c1xuJwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tb2NrX2RydC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
bW9ja19kcnQucHkKaW5kZXggMWJhNWE2ZDk0NmU4OTkxMzdkMzdhZmFlNGE2ZTdhZWMzNGMzM2Rm
OS4uZTQ1ZmI5MjM0Mzg3MWZlMTM2YWVjMDA0ZWRkNTQ2ZDJmMjM2MGQyMiAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5CkBA
IC0zMCwxNiArMzAsMjEgQEAKICIiIgogVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg
UG9ydCBpbnRlcmZhY2UgdGhhdCBvdmVycmlkZXMgb3RoZXIKIHBvcnRzIGFuZCBjaGFuZ2VzIHRo
ZSBEcml2ZXIgYmluYXJ5IHRvICJNb2NrRFJUIi4KKworVGhlIE1vY2tEUlQgb2JqZWN0cyBlbXVs
YXRlIHdoYXQgYSByZWFsIERSVCB3b3VsZCBkby4gSW4gcGFydGljdWxhciwgdGhleQorcmV0dXJu
IHRoZSBvdXRwdXQgYSByZWFsIERSVCB3b3VsZCByZXR1cm4gZm9yIGEgZ2l2ZW4gdGVzdCwgYXNz
dW1pbmcgdGhhdAordGVzdCBhY3R1YWxseSBwYXNzZXMgKGV4Y2VwdCBmb3IgcmVmdGVzdHMsIHdo
aWNoIGN1cnJlbnRseSBjYXVzZSB0aGUKK01vY2tEUlQgdG8gY3Jhc2gpLgogIiIiCiAKIGltcG9y
dCBiYXNlNjQKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgc3lzCiAKLWZyb20gd2Via2l0cHkuY29t
bW9uLmhvc3QgaW1wb3J0IEhvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1o
b3N0IGltcG9ydCBTeXN0ZW1Ib3N0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmZh
Y3RvcnkgaW1wb3J0IFBvcnRGYWN0b3J5CiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1w
b3J0IE1vY2tPcHRpb25zCiAKLQogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CiAKQEAgLTUxLDcgKzU2LDcgQEAgY2xhc3MgTW9ja0RSVFBvcnQob2JqZWN0KToKICAgICAgICAg
aWYgJ3BvcnRfbmFtZScgaW4ga3dhcmdzOgogICAgICAgICAgICAga3dhcmdzWydwb3J0X25hbWUn
XSA9IGt3YXJnc1sncG9ydF9uYW1lJ11bbGVuKHByZWZpeCk6XQogICAgICAgICBzZWxmLl9ob3N0
ID0gaG9zdAotICAgICAgICBzZWxmLl9fZGVsZWdhdGUgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQo
Kiprd2FyZ3MpCisgICAgICAgIHNlbGYuX19kZWxlZ2F0ZSA9IFBvcnRGYWN0b3J5KGhvc3QpLmdl
dCgqKmt3YXJncykKICAgICAgICAgc2VsZi5fX3JlYWxfbmFtZSA9IHByZWZpeCArIHNlbGYuX19k
ZWxlZ2F0ZS5uYW1lKCkKIAogICAgIGRlZiByZWFsX25hbWUoc2VsZik6CkBAIC0xODAsNyArMTg1
LDcgQEAgY2xhc3MgTW9ja0RSVChvYmplY3QpOgogICAgICAgICBwb3J0X25hbWUgPSBOb25lCiAg
ICAgICAgIGlmIG9wdGlvbnMucGxhdGZvcm06CiAgICAgICAgICAgICBwb3J0X25hbWUgPSBvcHRp
b25zLnBsYXRmb3JtCi0gICAgICAgIHNlbGYuX3BvcnQgPSBzZWxmLl9ob3N0LnBvcnRfZmFjdG9y
eS5nZXQocG9ydF9uYW1lLCBvcHRpb25zPW9wdGlvbnMpCisgICAgICAgIHNlbGYuX3BvcnQgPSBQ
b3J0RmFjdG9yeShob3N0KS5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZSwgb3B0aW9ucz1vcHRpb25z
KQogCiAgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgd2hpbGUgVHJ1ZToKQEAgLTI3Nyw3ICsy
ODIsNiBAQCBjbGFzcyBNb2NrQ2hyb21pdW1EUlQoTW9ja0RSVCk6CiAKIAogaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKLSAgICAjIEZJWE1FOiBXaHkgaXMgdGhpcyB1c2luZyBhIHJlYWwgSG9z
dCBvYmplY3QgaW5zdGVhZCBvZiBNb2NrSG9zdD8KLSAgICBob3N0ID0gSG9zdCgpCi0gICAgaG9z
dC5faW5pdGlhbGl6ZV9zY20oKQotICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3ZbMTpdLCBob3N0
LCBzeXMuc3RkaW4sIHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIpKQorICAgICMgTm90ZSB0aGF0IHRo
ZSBNb2NrIGluIE1vY2tEUlQgcmVmZXJzIHRvIHRoZSBmYWN0IHRoYXQgaXQgaXMgZW11bGF0aW5n
IGEKKyAgICAjIHJlYWwgRFJULCBhbmQgYXMgc3VjaCwgaXQgbmVlZHMgYWNjZXNzIHRvIGEgcmVh
bCBTeXN0ZW1Ib3N0LCBub3QgYSBNb2NrU3lzdGVtSG9zdC4KKyAgICBzeXMuZXhpdChtYWluKHN5
cy5hcmd2WzE6XSwgU3lzdGVtSG9zdCgpLCBzeXMuc3RkaW4sIHN5cy5zdGRvdXQsIHN5cy5zdGRl
cnIpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tb2NrX2RydF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkKaW5kZXggNTY3YzA4NzZjYzFlM2JmZWQ3MjZl
MmEwMmQ4MjM1NTk2MmMzMmQ0Zi4uZjgxMjk1ODQwNzFkNDAyZWFhNjM4NTRlM2ZjMzQxZTg0MThl
ZGVhNiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tb2NrX2RydF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CkBAIC00NiwxMCArNDYsMTEgQEAgbW9j
a19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScp
CiAKIGNsYXNzIE1vY2tEUlRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAg
ICAgZGVmIG1ha2VfcG9ydChzZWxmLCBvcHRpb25zPW1vY2tfb3B0aW9ucyk6CisgICAgICAgIGhv
c3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAg
ICAgICAgICAgIyBXZSB1c2UgdGhpcyBiZWNhdXNlIHRoZSAnd2luJyBwb3J0IGRvZXNuJ3Qgd29y
ayB5ZXQuCi0gICAgICAgICAgICByZXR1cm4gbW9ja19kcnQuTW9ja0RSVFBvcnQoTW9ja0hvc3Qo
KSwgcG9ydF9uYW1lPSdtb2NrLWNocm9taXVtLXdpbicsIG9wdGlvbnM9b3B0aW9ucykKLSAgICAg
ICAgcmV0dXJuIG1vY2tfZHJ0Lk1vY2tEUlRQb3J0KE1vY2tIb3N0KCksIG9wdGlvbnM9b3B0aW9u
cykKKyAgICAgICAgICAgIHJldHVybiBtb2NrX2RydC5Nb2NrRFJUUG9ydChob3N0LCBwb3J0X25h
bWU9J21vY2stY2hyb21pdW0td2luJywgb3B0aW9ucz1vcHRpb25zKQorICAgICAgICByZXR1cm4g
bW9ja19kcnQuTW9ja0RSVFBvcnQoaG9zdCwgb3B0aW9ucz1vcHRpb25zKQogCiAgICAgZGVmIHRl
c3RfZGVmYXVsdF93b3JrZXJfbW9kZWwoc2VsZik6CiAgICAgICAgICMgb25seSBvdmVycmlkZGlu
ZyB0aGUgZGVmYXVsdCB0ZXN0OyB3ZSBkb24ndCBjYXJlIGFib3V0IHRoaXMgb25lLgpAQCAtMTM3
LDEwICsxMzgsOSBAQCBjbGFzcyBNb2NrRFJUVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgICAgICAgICAgICAgICcjRU9GXG4nLAogICAgICAgICAgICAgICAgICAgICAnI0VPRlxuJ10K
IAotICAgIGRlZiBhc3NlcnRUZXN0KHNlbGYsIHRlc3RfbmFtZSwgcGl4ZWxfdGVzdHMsIGV4cGVj
dGVkX2NoZWNrc3VtPU5vbmUsIGRydF9vdXRwdXQ9Tm9uZSwgZmlsZXN5c3RlbT1Ob25lKToKKyAg
ICBkZWYgYXNzZXJ0VGVzdChzZWxmLCB0ZXN0X25hbWUsIHBpeGVsX3Rlc3RzLCBleHBlY3RlZF9j
aGVja3N1bT1Ob25lLCBkcnRfb3V0cHV0PU5vbmUsIGhvc3Q9Tm9uZSk6CiAgICAgICAgIHBvcnRf
bmFtZSA9ICd0ZXN0JwotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICBob3N0LmZp
bGVzeXN0ZW0gPSBmaWxlc3lzdGVtIG9yIHRlc3QudW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAg
ICAgICBob3N0ID0gaG9zdCBvciBNb2NrSG9zdCgpCiAgICAgICAgIHBvcnQgPSBob3N0LnBvcnRf
ZmFjdG9yeS5nZXQocG9ydF9uYW1lKQogICAgICAgICBkcnRfaW5wdXQsIGRydF9vdXRwdXQgPSBz
ZWxmLm1ha2VfaW5wdXRfb3V0cHV0KHBvcnQsIHRlc3RfbmFtZSwKICAgICAgICAgICAgIHBpeGVs
X3Rlc3RzLCBleHBlY3RlZF9jaGVja3N1bSwgZHJ0X291dHB1dCkKQEAgLTE2Myw3ICsxNjMsNiBA
QCBjbGFzcyBNb2NrRFJUVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9t
YWluKHNlbGYpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICBob3N0LmZpbGVz
eXN0ZW0gPSB0ZXN0LnVuaXRfdGVzdF9maWxlc3lzdGVtKCkKICAgICAgICAgc3RkaW4gPSBuZXdz
dHJpbmdpby5TdHJpbmdJTygpCiAgICAgICAgIHN0ZG91dCA9IG5ld3N0cmluZ2lvLlN0cmluZ0lP
KCkKICAgICAgICAgc3RkZXJyID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQpAQCAtMjM2LDcgKzIz
NSw3IEBAIGNsYXNzIE1vY2tDaHJvbWl1bURSVFRlc3QoTW9ja0RSVFRlc3QpOgogICAgICAgICAg
ICAgICAgICAgICAnI0VPRlxuJ10KIAogICAgIGRlZiB0ZXN0X3BpeGVsdGVzdF9fZmFpbHMoc2Vs
Zik6Ci0gICAgICAgIGZpbGVzeXN0ZW0gPSB0ZXN0LnVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAg
ICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgc2VsZi5hc3NlcnRUZXN0KCdmYWlsdXJl
cy9leHBlY3RlZC9jaGVja3N1bS5odG1sJywgcGl4ZWxfdGVzdHM9VHJ1ZSwKICAgICAgICAgICAg
IGV4cGVjdGVkX2NoZWNrc3VtPSd3cm9uZy1jaGVja3N1bScsCiAgICAgICAgICAgICBkcnRfb3V0
cHV0PVsnI1VSTDpmaWxlOi8vL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMvZmFpbHVyZXMvZXhw
ZWN0ZWQvY2hlY2tzdW0uaHRtbFxuJywKQEAgLTI0NCw4ICsyNDMsOCBAQCBjbGFzcyBNb2NrQ2hy
b21pdW1EUlRUZXN0KE1vY2tEUlRUZXN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICdjaGVj
a3N1bS10eHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICcjRU9GXG4nXSwKLSAgICAgICAgICAgIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLAorICAg
ICAgICAgICAgaG9zdD1ob3N0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhob3N0LmZpbGVz
eXN0ZW0ud3JpdHRlbl9maWxlcywKICAgICAgICAgICAgIHsnL3RtcC9wbmdfcmVzdWx0MC5wbmcn
OiAnY2hlY2tzdW1ceDhhLXBuZ3RFWHRjaGVja3N1bVx4MDBjaGVja3N1bS1jaGVja3N1bSd9KQog
CiAgICAgZGVmIHRlc3RfY2hyb21pdW1fcGFyc2Vfb3B0aW9ucyhzZWxmKToKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0X3VuaXR0ZXN0LnB5
CmluZGV4IGQ2NDQ2MzJkMTBkMjIxNDUzMTdlZDUzYzkwMmRhZWRmN2I5M2FjM2MuLjViMmRlYzY4
NGFmOWE1MGE2ZWVmNzgyOTQzYWNhMmFjNDQ2ZWQxZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdF91bml0dGVzdC5weQpAQCAtMjks
NyArMjksNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIKLWZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5xdCBpbXBvcnQgUXRQb3J0CiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCkBAIC00NSwxMCAr
NDQsOSBAQCBjbGFzcyBRdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAg
ICAgICAgIyBGSVhNRTogUG9ydCBjb25zdHJ1Y3RvcnMgc2hvdWxkIG5vdCAicGFyc2UiIHRoZSBw
b3J0IG5hbWUsIGJ1dAogICAgICAgICAjIHJhdGhlciBiZSBwYXNzZWQgY29tcG9uZW50cyAoZGly
ZWN0bHkgb3IgdmlhIHNldHRlcnMpLiAgT25jZQogICAgICAgICAjIHdlIGZpeCB0aGF0LCB0aGlz
IG1ldGhvZCB3aWxsIG5lZWQgYSByZS13cml0ZS4KLSAgICAgICAgcG9ydCA9IFF0UG9ydChzeXNf
cGxhdGZvcm09c3lzX3BsYXRmb3JtLAotICAgICAgICAgICAgb3B0aW9ucz1Nb2NrT3B0aW9ucyh3
ZWJraXRfdGVzdF9ydW5uZXI9dXNlX3dlYmtpdDIsIHBsYXRmb3JtPSdxdCcpLAotICAgICAgICAg
ICAgaG9zdD1Nb2NrSG9zdCgpLAotICAgICAgICAgICAgZXhlY3V0aXZlPU1vY2tFeGVjdXRpdmUy
KHNlbGYuX3F0X3ZlcnNpb24ocXRfdmVyc2lvbikpKQorICAgICAgICBob3N0ID0gTW9ja0hvc3Qo
KQorICAgICAgICBob3N0LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHNlbGYuX3F0X3ZlcnNp
b24ocXRfdmVyc2lvbikpCisgICAgICAgIHBvcnQgPSBRdFBvcnQoaG9zdCwgc3lzX3BsYXRmb3Jt
PXN5c19wbGF0Zm9ybSwgb3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9dXNl
X3dlYmtpdDIsIHBsYXRmb3JtPSdxdCcpKQogICAgICAgICBhYnNvbHV0ZV9zZWFyY2hfcGF0aHMg
PSBtYXAocG9ydC5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlYXJjaF9wYXRocykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMocG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCgpLCBhYnNvbHV0ZV9z
ZWFyY2hfcGF0aHMpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvdGVzdC5weQppbmRleCAzZmQxMjYzOTllM2RmN2ExOTA4Yjc1YThhNjI0NDk1MjUwMmJm
NDQxLi45NWM5MmJlMWY2MWY1ZDQ5YzI4NmY2M2FkYTYwMTk1OTMzYTI2ZDhjIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CkBAIC0zNSw3
ICszNSw2IEBAIGltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQg
aW1wb3J0IFBvcnQsIERyaXZlciwgRHJpdmVyT3V0cHV0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgot
ZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0K
IAogCkBAIC01Niw3ICs1NSw3IEBAIGNsYXNzIFRlc3RJbnN0YW5jZShvYmplY3QpOgogCiAgICAg
ICAgICMgVGhlIHZhbHVlcyBvZiBlYWNoIGZpZWxkIGFyZSB0cmVhdGVkIGFzIHJhdyBieXRlIHN0
cmluZ3MuIFRoZXkKICAgICAgICAgIyB3aWxsIGJlIGNvbnZlcnRlZCB0byB1bmljb2RlIHN0cmlu
Z3Mgd2hlcmUgYXBwcm9wcmlhdGUgdXNpbmcKLSAgICAgICAgIyBNb2NrRmlsZVN5c3RlbS5yZWFk
X3RleHRfZmlsZSgpLgorICAgICAgICAjIEZpbGVTeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoKS4KICAg
ICAgICAgc2VsZi5hY3R1YWxfdGV4dCA9IHNlbGYuYmFzZSArICctdHh0JwogICAgICAgICBzZWxm
LmFjdHVhbF9jaGVja3N1bSA9IHNlbGYuYmFzZSArICctY2hlY2tzdW0nCiAKQEAgLTIyNywzNSAr
MjI2LDExIEBAIExBWU9VVF9URVNUX0RJUiA9ICcvdGVzdC5jaGVja291dC9MYXlvdXRUZXN0cycK
ICMgSGVyZSB3ZSBzeW50aGVzaXplIGFuIGluLW1lbW9yeSBmaWxlc3lzdGVtIGZyb20gdGhlIHRl
c3QgbGlzdAogIyBpbiBvcmRlciB0byBmdWxseSBjb250cm9sIHRoZSB0ZXN0IG91dHB1dCBhbmQg
dG8gZGVtb25zdHJhdGUgdGhhdAogIyB3ZSBkb24ndCBuZWVkIGEgcmVhbCBmaWxlc3lzdGVtIHRv
IHJ1biB0aGUgdGVzdHMuCi0KLWRlZiB1bml0X3Rlc3RfZmlsZXN5c3RlbShmaWxlcz1Ob25lKToK
LSAgICAiIiJSZXR1cm4gdGhlIEZpbGVTeXN0ZW0gb2JqZWN0IHVzZWQgYnkgdGhlIHVuaXQgdGVz
dHMuIiIiCi0gICAgdGVzdF9saXN0ID0gdW5pdF90ZXN0X2xpc3QoKQotICAgIGZpbGVzID0gZmls
ZXMgb3Ige30KLQotICAgIGRlZiBhZGRfdGVzdF9maWxlKGZpbGVzLCB0ZXN0LCBzdWZmaXgsIGNv
bnRlbnRzKToKLSAgICAgICAgZGlybmFtZSA9IHRlc3QubmFtZVswOnRlc3QubmFtZS5yZmluZCgn
LycpXQotICAgICAgICBiYXNlID0gdGVzdC5iYXNlCi0gICAgICAgIGFkZF9maWxlKGZpbGVzLCBk
aXJuYW1lICsgJy8nICsgYmFzZSArIHN1ZmZpeCwgY29udGVudHMpCi0KLSAgICBkZWYgYWRkX2Zp
bGUoZmlsZXMsIGZpbGVfbmFtZSwgY29udGVudHMpOgotICAgICAgICBmaWxlc1tMQVlPVVRfVEVT
VF9ESVIgKyAnLycgKyBmaWxlX25hbWVdID0gY29udGVudHMKLQotICAgICMgQWRkIGVhY2ggdGVz
dCBhbmQgdGhlIGV4cGVjdGVkIG91dHB1dCwgaWYgYW55LgotICAgIGZvciB0ZXN0IGluIHRlc3Rf
bGlzdC50ZXN0cy52YWx1ZXMoKToKLSAgICAgICAgYWRkX3Rlc3RfZmlsZShmaWxlcywgdGVzdCwg
Jy5odG1sJywgJycpCi0gICAgICAgIGlmIHRlc3QuaXNfcmVmdGVzdDoKLSAgICAgICAgICAgIGNv
bnRpbnVlCi0gICAgICAgIGlmIHRlc3QuYWN0dWFsX2F1ZGlvOgotICAgICAgICAgICAgYWRkX3Rl
c3RfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC53YXYnLCB0ZXN0LmV4cGVjdGVkX2F1ZGlv
KQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBhZGRfdGVzdF9maWxlKGZpbGVzLCB0
ZXN0LCAnLWV4cGVjdGVkLnR4dCcsIHRlc3QuZXhwZWN0ZWRfdGV4dCkKLSAgICAgICAgYWRkX3Rl
c3RfZmlsZShmaWxlcywgdGVzdCwgJy1leHBlY3RlZC5wbmcnLCB0ZXN0LmV4cGVjdGVkX2ltYWdl
KQotCi0KK2RlZiBhZGRfdW5pdF90ZXN0c190b19tb2NrX2ZpbGVzeXN0ZW0oZmlsZXN5c3RlbSk6
CiAgICAgIyBBZGQgdGhlIHRlc3RfZXhwZWN0YXRpb25zIGZpbGUuCi0gICAgZmlsZXNbTEFZT1VU
X1RFU1RfRElSICsgJy9wbGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCddID0gIiIi
CisgICAgZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShMQVlPVVRfVEVTVF9ESVIgKyAn
L3BsYXRmb3JtL3Rlc3QnKQorICAgIGlmIG5vdCBmaWxlc3lzdGVtLmV4aXN0cyhMQVlPVVRfVEVT
VF9ESVIgKyAnL3BsYXRmb3JtL3Rlc3QvdGVzdF9leHBlY3RhdGlvbnMudHh0Jyk6CisgICAgICAg
IGZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKExBWU9VVF9URVNUX0RJUiArICcvcGxhdGZvcm0v
dGVzdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnLCAiIiIKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBl
Y3RlZC9jaGVja3N1bS5odG1sID0gSU1BR0UKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9j
cmFzaC5odG1sID0gQ1JBU0gKIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1s
ID0gSU1BR0UKQEAgLTI3NSw5ICsyNTAsMTAgQEAgV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVk
L3RpbWVvdXQuaHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVk
L2hhbmcuaHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2tl
eWJvYXJkLmh0bWwgPSBDUkFTSAogV09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvZXhj
ZXB0aW9uLmh0bWwgPSBDUkFTSAotIiIiCisiIiIpCiAKLSAgICBhZGRfZmlsZShmaWxlcywgJ3Jl
ZnRlc3RzL2Zvby9yZWZ0ZXN0Lmxpc3QnLCAiIiIKKyAgICBmaWxlc3lzdGVtLm1heWJlX21ha2Vf
ZGlyZWN0b3J5KExBWU9VVF9URVNUX0RJUiArICcvcmVmdGVzdHMvZm9vJykKKyAgICBmaWxlc3lz
dGVtLndyaXRlX3RleHRfZmlsZShMQVlPVVRfVEVTVF9ESVIgKyAnL3JlZnRlc3RzL2Zvby9yZWZ0
ZXN0Lmxpc3QnLCAiIiIKID09IHRlc3QuaHRtbCB0ZXN0LXJlZi5odG1sCiAKID09IG11bHRpcGxl
LW1hdGNoLXN1Y2Nlc3MuaHRtbCBtaXNtYXRjaGluZy1yZWYuaHRtbApAQCAtMzAxLDkgKzI3Nywy
NiBAQCBXT05URklYIFNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRtbCA9IENS
QVNICiAgICAgIyBBZGQgaW4gYSBmaWxlIHNob3VsZCBiZSBpZ25vcmVkIGJ5IHBvcnQuZmluZF90
ZXN0X2ZpbGVzKCkuCiAgICAgI2ZpbGVzW0xBWU9VVF9URVNUX0RJUiArICcvdXNlcnNjcmlwdHMv
cmVzb3VyY2VzL2lmcmFtZS5odG1sJ10gPSAnaWZyYW1lJwogCi0gICAgZnMgPSBNb2NrRmlsZVN5
c3RlbShmaWxlcywgZGlycz1zZXQoWycvbW9jay1jaGVja291dCddKSkgICMgTWFrZSBzdXJlIGF0
IGxlYXN0IHRoZSBjaGVja291dF9yb290IGV4aXN0cyBhcyBhIGRpcmVjdG9yeS4KLSAgICBmcy5f
dGVzdHMgPSB0ZXN0X2xpc3QKLSAgICByZXR1cm4gZnMKKyAgICBkZWYgYWRkX2ZpbGUodGVzdCwg
c3VmZml4LCBjb250ZW50cyk6CisgICAgICAgIGRpcm5hbWUgPSBmaWxlc3lzdGVtLmpvaW4oTEFZ
T1VUX1RFU1RfRElSLCB0ZXN0Lm5hbWVbMDp0ZXN0Lm5hbWUucmZpbmQoJy8nKV0pCisgICAgICAg
IGJhc2UgPSB0ZXN0LmJhc2UKKyAgICAgICAgZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9y
eShkaXJuYW1lKQorICAgICAgICBmaWxlc3lzdGVtLndyaXRlX2JpbmFyeV9maWxlKGZpbGVzeXN0
ZW0uam9pbihkaXJuYW1lLCBiYXNlICsgc3VmZml4KSwgY29udGVudHMpCisKKyAgICAjIEFkZCBl
YWNoIHRlc3QgYW5kIHRoZSBleHBlY3RlZCBvdXRwdXQsIGlmIGFueS4KKyAgICB0ZXN0X2xpc3Qg
PSB1bml0X3Rlc3RfbGlzdCgpCisgICAgZm9yIHRlc3QgaW4gdGVzdF9saXN0LnRlc3RzLnZhbHVl
cygpOgorICAgICAgICBhZGRfZmlsZSh0ZXN0LCAnLmh0bWwnLCAnJykKKyAgICAgICAgaWYgdGVz
dC5pc19yZWZ0ZXN0OgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgdGVzdC5hY3R1
YWxfYXVkaW86CisgICAgICAgICAgICBhZGRfZmlsZSh0ZXN0LCAnLWV4cGVjdGVkLndhdicsIHRl
c3QuZXhwZWN0ZWRfYXVkaW8pCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBhZGRfZmls
ZSh0ZXN0LCAnLWV4cGVjdGVkLnR4dCcsIHRlc3QuZXhwZWN0ZWRfdGV4dCkKKyAgICAgICAgYWRk
X2ZpbGUodGVzdCwgJy1leHBlY3RlZC5wbmcnLCB0ZXN0LmV4cGVjdGVkX2ltYWdlKQorCisgICAg
IyBDbGVhciB0aGUgbGlzdCBvZiB3cml0dGVuIGZpbGVzIHNvIHRoYXQgd2UgY2FuIHdhdGNoIHdo
YXQgaGFwcGVucyBkdXJpbmcgdGVzdGluZy4KKyAgICBmaWxlc3lzdGVtLmNsZWFyX3dyaXR0ZW5f
ZmlsZXMoKQogCiAKIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgpAQCAtMzE0LDI0ICszMDcsMTUgQEAg
Y2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgICAgICd0ZXN0LWxpbnV4LXg4Nl82NCcsCiAgICAg
KQogCi0gICAgZGVmIF9zZXRfZGVmYXVsdF9vdmVycmlkaW5nX25vbmUoc2VsZiwgZGljdGlvbmFy
eSwga2V5LCBkZWZhdWx0KToKLSAgICAgICAgIyBkaWN0LnNldGRlZmF1bHQgYWxtb3N0IHdvcmtz
LCBidXQgd29uJ3QgYWN0dWFsbHkgb3ZlcnJpZGUgTm9uZSB2YWx1ZXMsIHdoaWNoIHdlIHdhbnQu
Ci0gICAgICAgIGlmIG5vdCBkaWN0aW9uYXJ5LmdldChrZXkpOgotICAgICAgICAgICAgZGljdGlv
bmFyeVtrZXldID0gZGVmYXVsdAotICAgICAgICByZXR1cm4gZGljdGlvbmFyeVtrZXldCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD1Ob25lLCBwb3J0X25hbWU9Tm9uZSwgKiprd2FyZ3Mp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9Tm9uZSwgKiprd2FyZ3Mp
OgogICAgICAgICBpZiBub3QgcG9ydF9uYW1lIG9yIHBvcnRfbmFtZSA9PSAndGVzdCc6CiAgICAg
ICAgICAgICBwb3J0X25hbWUgPSAndGVzdC1tYWMtbGVvcGFyZCcKIAotICAgICAgICBob3N0ID0g
aG9zdCBvciBNb2NrSG9zdCgpCi0gICAgICAgIGZpbGVzeXN0ZW0gPSBzZWxmLl9zZXRfZGVmYXVs
dF9vdmVycmlkaW5nX25vbmUoa3dhcmdzLCAnZmlsZXN5c3RlbScsIHVuaXRfdGVzdF9maWxlc3lz
dGVtKCkpCi0KLSAgICAgICAgUG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9cG9y
dF9uYW1lLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5fdGVzdHMgPSB1bml0X3Rlc3RfbGlzdCgp
CisgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9uc19wYXRoID0gTEFZT1VUX1RFU1RfRElSICsgJy9w
bGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcKICAgICAgICAgc2VsZi5fcmVzdWx0
c19kaXJlY3RvcnkgPSBOb25lCiAKLSAgICAgICAgYXNzZXJ0IGZpbGVzeXN0ZW0uX3Rlc3RzCi0g
ICAgICAgIHNlbGYuX3Rlc3RzID0gZmlsZXN5c3RlbS5fdGVzdHMKKyAgICAgICAgUG9ydC5fX2lu
aXRfXyhzZWxmLCBob3N0LCBwb3J0X25hbWU9cG9ydF9uYW1lLCAqKmt3YXJncykKIAogICAgICAg
ICBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0gJ21hYycKICAgICAgICAgaWYgcG9ydF9uYW1lLnN0
YXJ0c3dpdGgoJ3Rlc3Qtd2luJyk6CkBAIC0zNDksNyArMzMzLDYgQEAgY2xhc3MgVGVzdFBvcnQo
UG9ydCk6CiAgICAgICAgIH0KICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHZlcnNpb25fbWFwW3Bv
cnRfbmFtZV0KIAotICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnNfcGF0aCA9IExBWU9VVF9URVNU
X0RJUiArICcvcGxhdGZvcm0vdGVzdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnCiAKICAgICBkZWYg
X3BhdGhfdG9fZHJpdmVyKHNlbGYpOgogICAgICAgICAjIFRoaXMgcm91dGluZSBzaG91bGRuJ3Qg
bm9ybWFsbHkgYmUgY2FsbGVkLCBidXQgaXQgaXMgY2FsbGVkIGJ5CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0
LnB5CmluZGV4IGNjOGZmODM5MTg2NDM1ODA4N2EyMDYzYjBhYjdlOTdlNTJiNzcwNGYuLjk0MDIw
ZGU1OGVkNWUzYjZjMDUyMjQ1N2RiZWUzYzZlOGJhNDM3MzggMTAwNzU1Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0
LnB5CkBAIC00MSwxMyArNDEsMTIgQEAgZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9y
dCBNb2NrT3B0aW9ucwogY2xhc3MgVGVzdFdlYktpdFBvcnQoV2ViS2l0UG9ydCk6CiAgICAgcG9y
dF9uYW1lID0gInRlc3R3ZWJraXRwb3J0IgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN5bWJv
bHNfc3RyaW5nPU5vbmUsIGZlYXR1cmVfbGlzdD1Ob25lLAotICAgICAgICAgICAgICAgICBleHBl
Y3RhdGlvbnNfZmlsZT1Ob25lLCBza2lwc19maWxlPU5vbmUsIGhvc3Q9Tm9uZSwKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgaG9zdCwgc3ltYm9sc19zdHJpbmc9Tm9uZSwgZmVhdHVyZV9saXN0PU5v
bmUsCisgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uc19maWxlPU5vbmUsIHNraXBzX2ZpbGU9
Tm9uZSwKICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLnN5bWJvbHNf
c3RyaW5nID0gc3ltYm9sc19zdHJpbmcgICMgUGFzc2luZyAiIiBkaXNhYmxlcyBhbGwgc3RhdGlj
bHktZGV0ZWN0YWJsZSBmZWF0dXJlcy4KICAgICAgICAgc2VsZi5mZWF0dXJlX2xpc3QgPSBmZWF0
dXJlX2xpc3QgICMgUGFzc2luZyBbXSBkaXNhYmxlcyBhbGwgcnVudGltZS1kZXRlY3RhYmxlIGZl
YXR1cmVzLgotICAgICAgICBob3N0ID0gaG9zdCBvciBNb2NrSG9zdCgpCi0gICAgICAgIFdlYktp
dFBvcnQuX19pbml0X18oc2VsZiwgaG9zdD1ob3N0LCAqKmt3YXJncykKKyAgICAgICAgV2ViS2l0
UG9ydC5fX2luaXRfXyhzZWxmLCBob3N0LCAqKmt3YXJncykKIAogICAgIGRlZiBhbGxfdGVzdF9j
b25maWd1cmF0aW9ucyhzZWxmKToKICAgICAgICAgcmV0dXJuIFtUZXN0Q29uZmlndXJhdGlvbi5m
cm9tX3BvcnQoc2VsZildCkBAIC0xMDMsNyArMTAyLDcgQEAgY2xhc3MgV2ViS2l0UG9ydFRlc3Qo
cG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICAgICAgIm1odG1sIiwgICMgUmVx
dWlyZXMgTUhUTUxBcmNoaXZlCiAgICAgICAgIF0pCiAKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9y
aWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KHN5bWJvbHNfc3RyaW5nLCBOb25lKS5fc2tpcHBlZF90
ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXMoKSkKKyAgICAgICAgcmVzdWx0X2RpcmVjdG9y
aWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KE1vY2tIb3N0KCksIHN5bWJvbHNfc3RyaW5nLCBOb25l
KS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXMoKSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXN1bHRfZGlyZWN0b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVzKQog
CiAgICAgICAgICMgVGVzdCB0aGF0IHRoZSBubSBzdHJpbmcgcGFyc2luZyBhY3R1YWxseSB3b3Jr
czoKQEAgLTExNCw3ICsxMTMsNyBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNl
LlBvcnRUZXN0Q2FzZSk6CiAiIiIKICAgICAgICAgIyBOb3RlICdjb21wb3NpdGluZycgaXMgbm90
IGluIHRoZSBsaXN0IG9mIHNraXBwZWQgZGlyZWN0b3JpZXMgKGhlbmNlIHRoZSBwYXJzaW5nIG9m
IEdyYXBoaWNzTGF5ZXIgd29ya2VkKToKICAgICAgICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMgPSBz
ZXQoWydtYXRobWwnLCAndHJhbnNmb3Jtcy8zZCcsICdjb21wb3NpdGluZy93ZWJnbCcsICdmYXN0
L2NhbnZhcy93ZWJnbCcsICdhbmltYXRpb25zLzNkJywgJ21odG1sJywgJ2h0dHAvdGVzdHMvY2Fu
dmFzL3dlYmdsJ10pCi0gICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0
UG9ydChzeW1ib2xzX3N0cmluZywgTm9uZSkuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVk
X2ZlYXR1cmVzKCkpCisgICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0
UG9ydChNb2NrSG9zdCgpLCBzeW1ib2xzX3N0cmluZywgTm9uZSkuX3NraXBwZWRfdGVzdHNfZm9y
X3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0
X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKIAogICAgIGRlZiB0ZXN0X3J1bnRp
bWVfZmVhdHVyZV9saXN0KHNlbGYpOgpAQCAtMTI4LDE0ICsxMjcsMTQgQEAgY2xhc3MgV2ViS2l0
UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3NraXBw
ZWRfZGlyZWN0b3JpZXNfZm9yX2ZlYXR1cmVzKHNlbGYpOgogICAgICAgICBzdXBwb3J0ZWRfZmVh
dHVyZXMgPSBbIkFjY2VsZXJhdGVkIENvbXBvc2l0aW5nIiwgIkZvbyBGZWF0dXJlIl0KICAgICAg
ICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMgPSBzZXQoWyJhbmltYXRpb25zLzNkIiwgInRyYW5zZm9y
bXMvM2QiXSkKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0
KE5vbmUsIHN1cHBvcnRlZF9mZWF0dXJlcykuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVk
X2ZlYXR1cmVzKCkpCisgICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0
UG9ydChNb2NrSG9zdCgpLCBOb25lLCBzdXBwb3J0ZWRfZmVhdHVyZXMpLl9za2lwcGVkX3Rlc3Rz
X2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCiAKICAgICBkZWYgdGVzdF9z
a2lwcGVkX2xheW91dF90ZXN0cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0
V2ViS2l0UG9ydChOb25lLCBOb25lKS5za2lwcGVkX2xheW91dF90ZXN0cygpLCBzZXQoWydtZWRp
YSddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgp
LCBOb25lLCBOb25lKS5za2lwcGVkX2xheW91dF90ZXN0cygpLCBzZXQoWydtZWRpYSddKSkKIAog
ICAgIGRlZiB0ZXN0X3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoc2VsZik6Ci0gICAgICAgIHBv
cnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChNb2Nr
SG9zdCgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX3NraXBwZWRfZmlsZV9zZWFy
Y2hfcGF0aHMoKSwgc2V0KFsndGVzdHdlYmtpdHBvcnQnXSkpCiAgICAgICAgIHBvcnQuX25hbWUg
PSAidGVzdHdlYmtpdHBvcnQtdmVyc2lvbiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0
Ll9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKCksIHNldChbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rl
c3R3ZWJraXRwb3J0LXZlcnNpb24nXSkpCkBAIC0xNDMsMjIgKzE0MiwyMiBAQCBjbGFzcyBXZWJL
aXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocG9ydC5fc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocygpLCBzZXQoWyd0ZXN0d2Vi
a2l0cG9ydCcsICd0ZXN0d2Via2l0cG9ydC12ZXJzaW9uJywgJ3Rlc3R3ZWJraXRwb3J0LXdrMics
ICd3azInXSkpCiAKICAgICBkZWYgdGVzdF9yb290X29wdGlvbihzZWxmKToKLSAgICAgICAgcG9y
dCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KE1vY2tI
b3N0KCkpCiAgICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhyb290PScvZm9vJykK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9wYXRoX3RvX2RyaXZlcigpLCAiL2Zvby9E
dW1wUmVuZGVyVHJlZSIpCiAKICAgICBkZWYgdGVzdF90ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToK
ICAgICAgICAgIyBDaGVjayB0aGF0IHdlIHJlYWQgdGhlIGV4cGVjdGF0aW9ucyBmaWxlCi0gICAg
ICAgIGZpbGVzID0gewotICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3Bs
YXRmb3JtL3Rlc3R3ZWJraXRwb3J0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCc6ICdCVUdfVEVTVEVY
UEVDVEFUSU9OUyBTS0lQIDogZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sID0gRkFJTFxu
JywKLSAgICAgICAgfQotICAgICAgICBtb2NrX2ZzID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCi0g
ICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChmaWxlc3lzdGVtPW1vY2tfZnMpCisgICAgICAg
IGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2Zp
bGUoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3R3ZWJraXRwb3J0L3Rl
c3RfZXhwZWN0YXRpb25zLnR4dCcsCisgICAgICAgICAgICAnQlVHX1RFU1RFWFBFQ1RBVElPTlMg
U0tJUCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IEZBSUxcbicpCisgICAgICAg
IHBvcnQgPSBUZXN0V2ViS2l0UG9ydChob3N0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQudGVzdF9leHBlY3RhdGlvbnMoKSwgJ0JVR19URVNURVhQRUNUQVRJT05TIFNLSVAgOiBmYXN0
L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwgPSBGQUlMXG4nKQogCiAgICAgZGVmIHRlc3RfYnVp
bGRfZHJpdmVyKHNlbGYpOgogICAgICAgICBvdXRwdXQgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAg
ICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAg
ICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KGhvc3QpCiAgICAgICAgICMgRGVsYXkgc2V0dGlu
ZyBfZXhlY3V0aXZlIHRvIGF2b2lkIGxvZ2dpbmcgZHVyaW5nIGNvbnN0cnVjdGlvbgogICAgICAg
ICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkKICAgICAg
ICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249IlJlbGVhc2UiKSAg
IyBUaGlzIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5LCBidXQgSSB0aGluayBUZXN0V2ViS2l0UG9y
dCBpcyBhY3R1YWxseSByZWFkaW5nIGZyb20gZGlzayAoYW5kIHRodXMgZGV0ZWN0cyB0aGUgY3Vy
cmVudCBjb25maWd1cmF0aW9uKS4KQEAgLTE4OSw3ICsxODgsNyBAQCBjbGFzcyBXZWJLaXRQb3J0
VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHBvcnQuX2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybShwbGF0Zm9ybSks
IGNvbmZpZ19maWxlKQogCiAgICAgZGVmIHRlc3RfbGludXhfZGlzdHJvX2RldGVjdGlvbihzZWxm
KToKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RX
ZWJLaXRQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNf
cmVkaGF0X2Jhc2VkKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNfZGViaWFu
X2Jhc2VkKCkpCiAKQEAgLTIwMiw3ICsyMDEsNyBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0
X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9p
c19kZWJpYW5fYmFzZWQoKSkKIAogICAgIGRlZiB0ZXN0X2FwYWNoZV9jb25maWdfZmlsZV9uYW1l
X2Zvcl9wbGF0Zm9ybShzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAg
ICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIHNlbGYuX2Fz
c2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2N5Z3dpbicsICdjeWd3aW4taHR0
cGQuY29uZicpCiAKICAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9y
bShwb3J0LCAnbGludXgyJywgJ2FwYWNoZTItaHR0cGQuY29uZicpCkBAIC0yMTEsNyArMjEwLDcg
QEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAg
ICAgICBwb3J0Ll9pc19yZWRoYXRfYmFzZWQgPSBsYW1iZGE6IFRydWUKICAgICAgICAgc2VsZi5f
YXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnbGludXgyJywgJ2ZlZG9yYS1o
dHRwZC5jb25mJykKIAotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQorICAgICAgICBw
b3J0ID0gVGVzdFdlYktpdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgcG9ydC5faXNfZGViaWFu
X2Jhc2VkID0gbGFtYmRhOiBUcnVlCiAgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9m
b3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4MicsICdhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mJykK
IApAQCAtMjIwLDcgKzIxOSw3IEBAIGNsYXNzIFdlYktpdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2Uu
UG9ydFRlc3RDYXNlKToKICAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0
Zm9ybShwb3J0LCAnYmFyZicsICdhcGFjaGUyLWh0dHBkLmNvbmYnKQogCiAgICAgZGVmIHRlc3Rf
cGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2Vi
S2l0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpKQogICAg
ICAgICAjIE1vY2sgb3V0IF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0gdG8g
aWdub3JlIHRoZSBwYXNzZWQgc3lzLnBsYXRmb3JtIHZhbHVlLgogICAgICAgICBwb3J0Ll9hcGFj
aGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0gPSBsYW1iZGEgcGxhdGZvcm06ICdodHRw
ZC5jb25mJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9wYXRoX3RvX2FwYWNoZV9j
b25maWdfZmlsZSgpLCAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvaHR0cC9jb25mL2h0dHBk
LmNvbmYnKQpAQCAtMjQ4LDcgKzI0Nyw3IEBAIGNsYXNzIE1vY2tTZXJ2ZXJQcm9jZXNzKG9iamVj
dCk6CiAKIGNsYXNzIFdlYktpdERyaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRl
ZiB0ZXN0X3JlYWRfYmxvY2soc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgp
CisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICBkcml2
ZXIgPSBXZWJLaXREcml2ZXIocG9ydCwgMCwgcGl4ZWxfdGVzdHM9RmFsc2UpCiAgICAgICAgIGRy
aXZlci5fc2VydmVyX3Byb2Nlc3MgPSBNb2NrU2VydmVyUHJvY2VzcyhbCiAgICAgICAgICAgICAn
QWN0dWFsSGFzaDogZm9vYmFyJywKQEAgLTI2Miw3ICsyNjEsNyBAQCBjbGFzcyBXZWJLaXREcml2
ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29u
dGVudF9ibG9jay5jb250ZW50X2hhc2gsICdmb29iYXInKQogCiAgICAgZGVmIHRlc3RfcmVhZF9i
aW5hcnlfYmxvY2soc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAg
ICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICBkcml2ZXIgPSBX
ZWJLaXREcml2ZXIocG9ydCwgMCwgcGl4ZWxfdGVzdHM9VHJ1ZSkKICAgICAgICAgZHJpdmVyLl9z
ZXJ2ZXJfcHJvY2VzcyA9IE1vY2tTZXJ2ZXJQcm9jZXNzKFsKICAgICAgICAgICAgICdBY3R1YWxI
YXNoOiBhY3R1YWwnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggZDEwYjBjMTdmYTlkNzJkMjczZWFiYmYy
ODEyNWE3ZTAxMWU0MzQ2ZC4uZjI0YmE1ZDhlMTgzYzIwMTQ3YWI5ZDE1YjQ5NjdlMDc4MDZiZjRi
ZiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dl
YmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0zNyw2ICszNyw3IEBAIGltcG9ydCBzaWduYWwKIGltcG9y
dCBzeXMKIAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAorZnJvbSB3ZWJr
aXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMuY29udHJvbGxlcnMubWFuYWdlciBpbXBvcnQgTWFuYWdlciwgV29ya2VyRXhjZXB0
aW9uCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRpbmcKIApA
QCAtNDA5LDcgKzQxMCwxMCBAQCBkZWYgcGFyc2VfYXJncyhhcmdzPU5vbmUpOgogCiBkZWYgbWFp
bigpOgogICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZV9hcmdzKCkKLSAgICBob3N0ID0gSG9zdCgp
CisgICAgaWYgb3B0aW9ucy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd0ZXN0Jyk6CisgICAgICAgIGhv
c3QgPSBNb2NrSG9zdCgpCisgICAgZWxzZToKKyAgICAgICAgaG9zdCA9IEhvc3QoKQogICAgIGhv
c3QuX2luaXRpYWxpemVfc2NtKCkKICAgICBwb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KG9w
dGlvbnMucGxhdGZvcm0sIG9wdGlvbnMpCiAgICAgcmV0dXJuIHJ1bihwb3J0LCBvcHRpb25zLCBh
cmdzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQppbmRleCBm
M2M5Mzc0NmY0OGNlMjgxNTA0NzZkYTI2MDU0ODBmMDAwNDJkZGExLi42Y2MzOTk0ODRmYWQ1N2Yx
MDM5ZDUyMmIwZjJiZjA0ZGU0M2MzZDg5IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2lu
dGVncmF0aW9udGVzdC5weQpAQCAtNjcsNyArNjcsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5o
b3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBv
cnQgcG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVz
dHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IFBvcnQKLWZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQudGVzdCBpbXBvcnQgVGVzdFBvcnQsIFRlc3REcml2ZXIs
IHVuaXRfdGVzdF9maWxlc3lzdGVtCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnRl
c3QgaW1wb3J0IFRlc3RQb3J0LCBUZXN0RHJpdmVyCiBmcm9tIHdlYmtpdHB5LnB5dGhvbjI0LnZl
cnNpb25pbmcgaW1wb3J0IGNvbXBhcmVfdmVyc2lvbgogZnJvbSB3ZWJraXRweS50ZXN0LnNraXAg
aW1wb3J0IHNraXBfaWYKIApAQCAtOTcsMjcgKzk3LDI1IEBAIGRlZiBwYXJzZV9hcmdzKGV4dHJh
X2FyZ3M9Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFsc2UsIHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBu
ZXdfCiAgICAgcmV0dXJuIHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncyhhcmdzKQogCiAKLWRl
ZiBwYXNzaW5nX3J1bihleHRyYV9hcmdzPU5vbmUsIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1
bHRzPUZhbHNlLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmlsZXN5c3RlbT1Ob25lKToKK2RlZiBw
YXNzaW5nX3J1bihleHRyYV9hcmdzPU5vbmUsIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1bHRz
PUZhbHNlLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgaG9zdD1Ob25lKToKICAgICBvcHRpb25zLCBw
YXJzZWRfYXJncyA9IHBhcnNlX2FyZ3MoZXh0cmFfYXJncywgcmVjb3JkX3Jlc3VsdHMsIHRlc3Rz
X2luY2x1ZGVkKQotICAgIGZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtIG9yIHVuaXRfdGVzdF9maWxl
c3lzdGVtKCkKICAgICBpZiBub3QgcG9ydF9vYmo6Ci0gICAgICAgIGhvc3QgPSBNb2NrSG9zdCgp
Ci0gICAgICAgIHBvcnRfb2JqID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZT1vcHRp
b25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAg
ICAgICAgaG9zdCA9IGhvc3Qgb3IgTW9ja0hvc3QoKQorICAgICAgICBwb3J0X29iaiA9IGhvc3Qu
cG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRp
b25zKQogICAgIGJ1aWxkYm90X291dHB1dCA9IGFycmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCiAg
ICAgcmVndWxhcl9vdXRwdXQgPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQogICAgIHJlcyA9
IHJ1bl93ZWJraXRfdGVzdHMucnVuKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncywgYnVp
bGRib3Rfb3V0cHV0PWJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9vdXRwdXQ9cmVndWxhcl9vdXRw
dXQpCiAgICAgcmV0dXJuIHJlcyA9PSAwIGFuZCByZWd1bGFyX291dHB1dC5lbXB0eSgpIGFuZCBi
dWlsZGJvdF9vdXRwdXQuZW1wdHkoKQogCiAKLWRlZiBsb2dnaW5nX3J1bihleHRyYV9hcmdzPU5v
bmUsIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLCB0ZXN0c19pbmNsdWRlZD1G
YWxzZSwgZmlsZXN5c3RlbT1Ob25lLCBuZXdfcmVzdWx0cz1GYWxzZSk6CitkZWYgbG9nZ2luZ19y
dW4oZXh0cmFfYXJncz1Ob25lLCBwb3J0X29iaj1Ob25lLCByZWNvcmRfcmVzdWx0cz1GYWxzZSwg
dGVzdHNfaW5jbHVkZWQ9RmFsc2UsIGhvc3Q9Tm9uZSwgbmV3X3Jlc3VsdHM9RmFsc2UpOgogICAg
IG9wdGlvbnMsIHBhcnNlZF9hcmdzID0gcGFyc2VfYXJncyhleHRyYV9hcmdzPWV4dHJhX2FyZ3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZF9yZXN1bHRzPXJl
Y29yZF9yZXN1bHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
c19pbmNsdWRlZD10ZXN0c19pbmNsdWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJpbnRfbm90aGluZz1GYWxzZSwgbmV3X3Jlc3VsdHM9bmV3X3Jlc3VsdHMpCi0g
ICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICBmaWxlc3lzdGVtID0gZmlsZXN5c3RlbSBvciB1bml0
X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgaG9zdCA9IGhvc3Qgb3IgTW9ja0hvc3QoKQogICAgIGlm
IG5vdCBwb3J0X29iajoKLSAgICAgICAgcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQo
cG9ydF9uYW1lPW9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0aW9ucywgZmlsZXN5c3RlbT1m
aWxlc3lzdGVtKQorICAgICAgICBwb3J0X29iaiA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChwb3J0
X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zKQogCiAgICAgcmVzLCBidWls
ZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0ID0gcnVuX2FuZF9jYXB0dXJlKHBvcnRfb2JqLCBv
cHRpb25zLCBwYXJzZWRfYXJncykKICAgICByZXR1cm4gKHJlcywgYnVpbGRib3Rfb3V0cHV0LCBy
ZWd1bGFyX291dHB1dCwgaG9zdC51c2VyKQpAQCAtMTM4LDcgKzEzNiw3IEBAIGRlZiBydW5fYW5k
X2NhcHR1cmUocG9ydF9vYmosIG9wdGlvbnMsIHBhcnNlZF9hcmdzKToKIAogCiBkZWYgZ2V0X3Rl
c3RzX3J1bihleHRyYV9hcmdzPU5vbmUsIHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2Jh
dGNoZXM9RmFsc2UsCi0gICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtPU5vbmUsIGluY2x1ZGVf
cmVmZXJlbmNlX2h0bWw9RmFsc2UpOgorICAgICAgICAgICAgICAgICAgaG9zdD1Ob25lLCBpbmNs
dWRlX3JlZmVyZW5jZV9odG1sPUZhbHNlKToKICAgICBleHRyYV9hcmdzID0gZXh0cmFfYXJncyBv
ciBbXQogICAgIGlmIG5vdCB0ZXN0c19pbmNsdWRlZDoKICAgICAgICAgIyBOb3QgaW5jbHVkaW5n
IGh0dHAgdGVzdHMgc2luY2UgdGhleSBnZXQgcnVuIG91dCBvZiBvcmRlciAodGhhdApAQCAtMTQ2
LDExICsxNDQsOSBAQCBkZWYgZ2V0X3Rlc3RzX3J1bihleHRyYV9hcmdzPU5vbmUsIHRlc3RzX2lu
Y2x1ZGVkPUZhbHNlLCBmbGF0dGVuX2JhdGNoZXM9RmFsc2UsCiAgICAgICAgIGV4dHJhX2FyZ3Mg
PSBbJ3Bhc3NlcycsICdmYWlsdXJlcyddICsgZXh0cmFfYXJncwogICAgIG9wdGlvbnMsIHBhcnNl
ZF9hcmdzID0gcGFyc2VfYXJncyhleHRyYV9hcmdzLCB0ZXN0c19pbmNsdWRlZD1UcnVlKQogCi0g
ICAgaG9zdCA9IE1vY2tIb3N0KCkKLQorICAgIGhvc3QgPSBob3N0IG9yIE1vY2tIb3N0KCkKICAg
ICB0ZXN0X2JhdGNoZXMgPSBbXQogCi0KICAgICBjbGFzcyBSZWNvcmRpbmdUZXN0RHJpdmVyKFRl
c3REcml2ZXIpOgogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgd29ya2VyX251bWJl
cik6CiAgICAgICAgICAgICBUZXN0RHJpdmVyLl9faW5pdF9fKHNlbGYsIHBvcnQsIHdvcmtlcl9u
dW1iZXIsIHBpeGVsX3Rlc3RzPXBvcnQuZ2V0X29wdGlvbigncGl4ZWxfdGVzdCcpKQpAQCAtMTc3
LDcgKzE3Myw3IEBAIGRlZiBnZXRfdGVzdHNfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgdGVzdHNfaW5j
bHVkZWQ9RmFsc2UsIGZsYXR0ZW5fYmF0Y2hlcz1GYWxzZSwKICAgICAgICAgZGVmIGNyZWF0ZV9k
cml2ZXIoc2VsZiwgd29ya2VyX251bWJlcik6CiAgICAgICAgICAgICByZXR1cm4gUmVjb3JkaW5n
VGVzdERyaXZlcihzZWxmLCB3b3JrZXJfbnVtYmVyKQogCi0gICAgcmVjb3JkaW5nX3BvcnQgPSBS
ZWNvcmRpbmdUZXN0UG9ydChvcHRpb25zPW9wdGlvbnMsIGhvc3Q9aG9zdCwgZmlsZXN5c3RlbT1m
aWxlc3lzdGVtKQorICAgIHJlY29yZGluZ19wb3J0ID0gUmVjb3JkaW5nVGVzdFBvcnQoaG9zdCwg
b3B0aW9ucz1vcHRpb25zKQogICAgIHJ1bl9hbmRfY2FwdHVyZShyZWNvcmRpbmdfcG9ydCwgb3B0
aW9ucywgcGFyc2VkX2FyZ3MpCiAKICAgICBpZiBmbGF0dGVuX2JhdGNoZXM6CkBAIC0zODksOSAr
Mzg1LDkgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0
X3NpbmdsZV9maWxlKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIg
cmVwbGFjaW5nIG1vcmUgb2YgdGhlIGdldF90ZXN0c19ydW4oKS1zdHlsZSB0ZXN0cwogICAgICAg
ICAjIHdpdGggdGVzdHMgdGhhdCByZWFkIHRoZSB0ZXN0c19ydW4qIGZpbGVzLCBsaWtlIHRoaXMg
b25lLgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgdGVzdHNf
cnVuID0gcGFzc2luZ19ydW4oWydwYXNzZXMvdGV4dC5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRy
dWUsIGZpbGVzeXN0ZW09ZnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZzLnJlYWRfdGV4
dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKSwKKyAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgdGVzdHNfcnVuID0gcGFzc2luZ19ydW4oWydw
YXNzZXMvdGV4dC5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoaG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Bhc3Nlcy90ZXh0Lmh0bWxcbicpCiAKICAgICBkZWYgdGVzdF9zaW5nbGVfZmls
ZV93aXRoX3ByZWZpeChzZWxmKToKQEAgLTQwMywyOCArMzk5LDI4IEBAIGNsYXNzIE1haW5UZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoW10sIHRlc3Rz
X3J1bikKIAogICAgIGRlZiB0ZXN0X3N0ZGVycl9pc19zYXZlZChzZWxmKToKLSAgICAgICAgZnMg
PSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5n
X3J1bihmaWxlc3lzdGVtPWZzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZnMucmVhZF90
ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9wYXNzZXMvZXJyb3Itc3RkZXJyLnR4
dCcpLAorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
cGFzc2luZ19ydW4oaG9zdD1ob3N0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoaG9zdC5m
aWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvcGFzc2Vz
L2Vycm9yLXN0ZGVyci50eHQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0dWZmIGdv
aW5nIHRvIHN0ZGVycicpCiAKICAgICBkZWYgdGVzdF90ZXN0X2xpc3Qoc2VsZik6Ci0gICAgICAg
IGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQog
ICAgICAgICBmaWxlbmFtZSA9ICcvdG1wL2Zvby50eHQnCi0gICAgICAgIGZzLndyaXRlX3RleHRf
ZmlsZShmaWxlbmFtZSwgJ3Bhc3Nlcy90ZXh0Lmh0bWwnKQotICAgICAgICB0ZXN0c19ydW4gPSBn
ZXRfdGVzdHNfcnVuKFsnLS10ZXN0LWxpc3Q9JXMnICUgZmlsZW5hbWVdLCB0ZXN0c19pbmNsdWRl
ZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSwgZmlsZXN5c3RlbT1mcykKKyAgICAgICAgaG9z
dC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShmaWxlbmFtZSwgJ3Bhc3Nlcy90ZXh0Lmh0bWwn
KQorICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsnLS10ZXN0LWxpc3Q9JXMnICUg
ZmlsZW5hbWVdLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSwgaG9z
dD1ob3N0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ3Bhc3Nlcy90ZXh0Lmh0bWwnXSwg
dGVzdHNfcnVuKQotICAgICAgICBmcy5yZW1vdmUoZmlsZW5hbWUpCisgICAgICAgIGhvc3QuZmls
ZXN5c3RlbS5yZW1vdmUoZmlsZW5hbWUpCiAgICAgICAgIHJlcywgb3V0LCBlcnIsIHVzZXIgPSBs
b2dnaW5nX3J1bihbJy0tdGVzdC1saXN0PSVzJyAlIGZpbGVuYW1lXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVzeXN0
ZW09ZnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19p
bmNsdWRlZD1UcnVlLCBob3N0PWhvc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAt
MSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlcnIuZW1wdHkoKSkKIAogICAgIGRlZiB0ZXN0
X3Rlc3RfbGlzdF93aXRoX3ByZWZpeChzZWxmKToKLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmls
ZXN5c3RlbSgpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIGZpbGVuYW1lID0g
Jy90bXAvZm9vLnR4dCcKLSAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZpbGVuYW1lLCAnTGF5
b3V0VGVzdHMvcGFzc2VzL3RleHQuaHRtbCcpCi0gICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0
c19ydW4oWyctLXRlc3QtbGlzdD0lcycgJSBmaWxlbmFtZV0sIHRlc3RzX2luY2x1ZGVkPVRydWUs
IGZsYXR0ZW5fYmF0Y2hlcz1UcnVlLCBmaWxlc3lzdGVtPWZzKQorICAgICAgICBob3N0LmZpbGVz
eXN0ZW0ud3JpdGVfdGV4dF9maWxlKGZpbGVuYW1lLCAnTGF5b3V0VGVzdHMvcGFzc2VzL3RleHQu
aHRtbCcpCisgICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWyctLXRlc3QtbGlzdD0l
cycgJSBmaWxlbmFtZV0sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hlcz1UcnVl
LCBob3N0PWhvc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsncGFzc2VzL3RleHQuaHRt
bCddLCB0ZXN0c19ydW4pCiAKICAgICBkZWYgdGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzKHNlbGYp
OgpAQCAtNDQwLDE3ICs0MzYsMTcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgIGRlZiB0ZXN0X21pc3NpbmdfYW5kX3VuZXhwZWN0ZWRfcmVzdWx0cyhzZWxmKToKICAg
ICAgICAgIyBUZXN0IHRoYXQgd2UgdXBkYXRlIGV4cGVjdGF0aW9ucyBpbiBwbGFjZS4gSWYgdGhl
IGV4cGVjdGF0aW9uCiAgICAgICAgICMgaXMgbWlzc2luZywgdXBkYXRlIHRoZSBleHBlY3RlZCBn
ZW5lcmljIGxvY2F0aW9uLgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAg
ICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgcmVzLCBvdXQsIGVyciwgXyA9IGxvZ2dp
bmdfcnVuKFsnLS1uby1zaG93LXJlc3VsdHMnLAogICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVj
dGVkL21pc3NpbmdfaW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3Rl
ZC9taXNzaW5nX3RleHQuaHRtbCcsCiAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC90
ZXh0LWltYWdlLWNoZWNrc3VtLmh0bWwnXSwKLSAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRy
dWUsIGZpbGVzeXN0ZW09ZnMsIHJlY29yZF9yZXN1bHRzPVRydWUpCi0gICAgICAgIGZpbGVfbGlz
dCA9IGZzLndyaXR0ZW5fZmlsZXMua2V5cygpCisgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1U
cnVlLCBob3N0PWhvc3QsIHJlY29yZF9yZXN1bHRzPVRydWUpCisgICAgICAgIGZpbGVfbGlzdCA9
IGhvc3QuZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLmtleXMoKQogICAgICAgICBmaWxlX2xpc3Qu
cmVtb3ZlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhyZXMsIDEpCiAgICAgICAgIGV4cGVjdGVkX3Rva2VuID0gJyJ1
bmV4cGVjdGVkIjp7InRleHQtaW1hZ2UtY2hlY2tzdW0uaHRtbCI6eyJleHBlY3RlZCI6IlBBU1Mi
LCJhY3R1YWwiOiJURVhUIn0sIm1pc3NpbmdfdGV4dC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyIs
ImlzX21pc3NpbmdfdGV4dCI6dHJ1ZSwiYWN0dWFsIjoiTUlTU0lORyJ9JwotICAgICAgICBqc29u
X3N0cmluZyA9IGZzLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVs
bF9yZXN1bHRzLmpzb24nKQorICAgICAgICBqc29uX3N0cmluZyA9IGhvc3QuZmlsZXN5c3RlbS5y
ZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29u
JykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoZXhwZWN0ZWRfdG9r
ZW4pICE9IC0xKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9zdHJpbmcuZmluZCgnIm51
bV9yZWdyZXNzaW9ucyI6MScpICE9IC0xKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9z
dHJpbmcuZmluZCgnIm51bV9mbGFreSI6MCcpICE9IC0xKQpAQCAtNDU5LDc1ICs0NTUsNzQgQEAg
Y2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X21pc3Npbmdf
YW5kX3VuZXhwZWN0ZWRfcmVzdWx0c193aXRoX2N1c3RvbV9leGl0X2NvZGUoc2VsZik6CiAgICAg
ICAgICMgVGVzdCB0aGF0IHdlIHVwZGF0ZSBleHBlY3RhdGlvbnMgaW4gcGxhY2UuIElmIHRoZSBl
eHBlY3RhdGlvbgogICAgICAgICAjIGlzIG1pc3NpbmcsIHVwZGF0ZSB0aGUgZXhwZWN0ZWQgZ2Vu
ZXJpYyBsb2NhdGlvbi4KLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0KICAg
ICAgICAgY2xhc3MgQ3VzdG9tRXhpdENvZGVQb3J0KFRlc3RQb3J0KToKICAgICAgICAgICAgIGRl
ZiBleGl0X2NvZGVfZnJvbV9zdW1tYXJpemVkX3Jlc3VsdHMoc2VsZiwgdW5leHBlY3RlZF9yZXN1
bHRzKToKICAgICAgICAgICAgICAgICByZXR1cm4gdW5leHBlY3RlZF9yZXN1bHRzWydudW1fcmVn
cmVzc2lvbnMnXSArIHVuZXhwZWN0ZWRfcmVzdWx0c1snbnVtX21pc3NpbmcnXQogCisgICAgICAg
IGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIG9wdGlvbnMsIHBhcnNlZF9hcmdzID0gcnVuX3dl
YmtpdF90ZXN0cy5wYXJzZV9hcmdzKFsnLS1waXhlbC10ZXN0cycsICctLW5vLW5ldy10ZXN0LXJl
c3VsdHMnXSkKLSAgICAgICAgdGVzdF9wb3J0ID0gQ3VzdG9tRXhpdENvZGVQb3J0KG9wdGlvbnM9
b3B0aW9ucykKKyAgICAgICAgdGVzdF9wb3J0ID0gQ3VzdG9tRXhpdENvZGVQb3J0KGhvc3QsIG9w
dGlvbnM9b3B0aW9ucykKICAgICAgICAgcmVzLCBvdXQsIGVyciwgXyA9IGxvZ2dpbmdfcnVuKFsn
LS1uby1zaG93LXJlc3VsdHMnLAogICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL21pc3Np
bmdfaW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC9taXNzaW5n
X3RleHQuaHRtbCcsCiAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC90ZXh0LWltYWdl
LWNoZWNrc3VtLmh0bWwnXSwKLSAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVz
eXN0ZW09ZnMsIHJlY29yZF9yZXN1bHRzPVRydWUsIHBvcnRfb2JqPXRlc3RfcG9ydCkKKyAgICAg
ICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCwgcmVjb3JkX3Jlc3VsdHM9VHJ1
ZSwgcG9ydF9vYmo9dGVzdF9wb3J0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXMsIDIp
CiAKICAgICBkZWYgdGVzdF9jcmFzaF93aXRoX3N0ZGVycihzZWxmKToKLSAgICAgICAgZnMgPSB1
bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAg
IHJlcywgYnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCwgdXNlciA9IGxvZ2dpbmdfcnVu
KFsKICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC9jcmFzaC13aXRoLXN0ZGVy
ci5odG1sJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVl
LAogICAgICAgICAgICAgcmVjb3JkX3Jlc3VsdHM9VHJ1ZSwKLSAgICAgICAgICAgIGZpbGVzeXN0
ZW09ZnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcy5yZWFkX3RleHRfZmlsZSgnL3RtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykuZmluZCgneyJjcmFzaC13aXRo
LXN0ZGVyci5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IkNSQVNIIiwiaGFzX3N0
ZGVyciI6dHJ1ZX19JykgIT0gLTEpCisgICAgICAgICAgICBob3N0PWhvc3QpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpLmZpbmQoJ3siY3Jhc2gtd2l0aC1zdGRl
cnIuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJDUkFTSCIsImhhc19zdGRlcnIi
OnRydWV9fScpICE9IC0xKQogCiAgICAgZGVmIHRlc3Rfbm9faW1hZ2VfZmFpbHVyZV93aXRoX2lt
YWdlX2RpZmYoc2VsZik6Ci0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAg
ICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICByZXMsIGJ1aWxkYm90X291dHB1dCwgcmVn
dWxhcl9vdXRwdXQsIHVzZXIgPSBsb2dnaW5nX3J1bihbCiAgICAgICAgICAgICAgICAgJ2ZhaWx1
cmVzL3VuZXhwZWN0ZWQvY2hlY2tzdW0td2l0aC1tYXRjaGluZy1pbWFnZS5odG1sJywKICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLAogICAgICAgICAgICAg
cmVjb3JkX3Jlc3VsdHM9VHJ1ZSwKLSAgICAgICAgICAgIGZpbGVzeXN0ZW09ZnMpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShmcy5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykuZmluZCgnIm51bV9yZWdyZXNzaW9ucyI6MCcpICE9IC0x
KQorICAgICAgICAgICAgaG9zdD1ob3N0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG9zdC5m
aWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9y
ZXN1bHRzLmpzb24nKS5maW5kKCcibnVtX3JlZ3Jlc3Npb25zIjowJykgIT0gLTEpCiAKICAgICBk
ZWYgdGVzdF9jcmFzaF9sb2coc2VsZik6CiAgICAgICAgIG1vY2tfY3Jhc2hfcmVwb3J0ID0gbWFr
ZV9tb2NrX2NyYXNoX3JlcG9ydF9kYXJ3aW4oJ0R1bXBSZW5kZXJUcmVlJywgMTIzNDUpCi0gICAg
ICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotICAgICAgICBmcy53cml0ZV90ZXh0X2Zp
bGUoJy9Vc2Vycy9tb2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9EdW1wUmVuZGVy
VHJlZV8yMDExLTA2LTEzLTE1MDcxOV9xdWFkemVuLmNyYXNoJywgbW9ja19jcmFzaF9yZXBvcnQp
CisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS53cml0
ZV90ZXh0X2ZpbGUoJy9Vc2Vycy9tb2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9E
dW1wUmVuZGVyVHJlZV8yMDExLTA2LTEzLTE1MDcxOV9xdWFkemVuLmNyYXNoJywgbW9ja19jcmFz
aF9yZXBvcnQpCiAgICAgICAgIHJlcywgYnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCwg
dXNlciA9IGxvZ2dpbmdfcnVuKFsKICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3Rl
ZC9jcmFzaC13aXRoLXN0ZGVyci5odG1sJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICB0
ZXN0c19pbmNsdWRlZD1UcnVlLAogICAgICAgICAgICAgcmVjb3JkX3Jlc3VsdHM9VHJ1ZSwKLSAg
ICAgICAgICAgIGZpbGVzeXN0ZW09ZnMpCisgICAgICAgICAgICBob3N0PWhvc3QpCiAgICAgICAg
IGV4cGVjdGVkX2NyYXNoX2xvZyA9IG1vY2tfY3Jhc2hfcmVwb3J0CiAgICAgICAgICMgQ3VycmVu
dGx5IENyYXNoTG9nIHVwbG9hZGluZyBvbmx5IHdvcmtzIG9uIERhcndpbi4KICAgICAgICAgaWYg
c3lzLnBsYXRmb3JtICE9ICJkYXJ3aW4iOgogICAgICAgICAgICAgZXhwZWN0ZWRfY3Jhc2hfbG9n
ID0gIm1vY2stc3RkLWVycm9yLW91dHB1dCIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZnMu
cmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYWlsdXJlcy91bmV4cGVj
dGVkL2NyYXNoLXdpdGgtc3RkZXJyLWNyYXNoLWxvZy50eHQnKSwgZXhwZWN0ZWRfY3Jhc2hfbG9n
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2Zp
bGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYWlsdXJlcy91bmV4cGVjdGVkL2NyYXNoLXdp
dGgtc3RkZXJyLWNyYXNoLWxvZy50eHQnKSwgZXhwZWN0ZWRfY3Jhc2hfbG9nKQogCiAgICAgZGVm
IHRlc3Rfd2ViX3Byb2Nlc3NfY3Jhc2hfbG9nKHNlbGYpOgogICAgICAgICBtb2NrX2NyYXNoX3Jl
cG9ydCA9IG1ha2VfbW9ja19jcmFzaF9yZXBvcnRfZGFyd2luKCdXZWJQcm9jZXNzJywgMTIzNDUp
Ci0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotICAgICAgICBmcy53cml0ZV90
ZXh0X2ZpbGUoJy9Vc2Vycy9tb2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9XZWJQ
cm9jZXNzXzIwMTEtMDYtMTMtMTUwNzE5X3F1YWR6ZW4uY3Jhc2gnLCBtb2NrX2NyYXNoX3JlcG9y
dCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC5maWxlc3lzdGVtLndy
aXRlX3RleHRfZmlsZSgnL1VzZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRz
L1dlYlByb2Nlc3NfMjAxMS0wNi0xMy0xNTA3MTlfcXVhZHplbi5jcmFzaCcsIG1vY2tfY3Jhc2hf
cmVwb3J0KQogICAgICAgICByZXMsIGJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9vdXRwdXQsIHVz
ZXIgPSBsb2dnaW5nX3J1bihbCiAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQv
d2ViLXByb2Nlc3MtY3Jhc2gtd2l0aC1zdGRlcnIuaHRtbCcsCiAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwKICAgICAgICAgICAgIHJlY29yZF9yZXN1bHRz
PVRydWUsCi0gICAgICAgICAgICBmaWxlc3lzdGVtPWZzKQorICAgICAgICAgICAgaG9zdD1ob3N0
KQogICAgICAgICBleHBlY3RlZF9jcmFzaF9sb2cgPSBtb2NrX2NyYXNoX3JlcG9ydAogICAgICAg
ICAjIEN1cnJlbnRseSBDcmFzaExvZyB1cGxvYWRpbmcgb25seSB3b3JrcyBvbiBEYXJ3aW4uCiAg
ICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAiZGFyd2luIjoKICAgICAgICAgICAgIGV4cGVjdGVk
X2NyYXNoX2xvZyA9ICJtb2NrLXN0ZC1lcnJvci1vdXRwdXQiCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGZzLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFpbHVy
ZXMvdW5leHBlY3RlZC93ZWItcHJvY2Vzcy1jcmFzaC13aXRoLXN0ZGVyci1jcmFzaC1sb2cudHh0
JyksIGV4cGVjdGVkX2NyYXNoX2xvZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoaG9zdC5m
aWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZmFpbHVy
ZXMvdW5leHBlY3RlZC93ZWItcHJvY2Vzcy1jcmFzaC13aXRoLXN0ZGVyci1jcmFzaC1sb2cudHh0
JyksIGV4cGVjdGVkX2NyYXNoX2xvZykKIAogICAgIGRlZiB0ZXN0X2V4aXRfYWZ0ZXJfbl9mYWls
dXJlc191cGxvYWQoc2VsZik6Ci0gICAgICAgIGZzID0gdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQor
ICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICByZXMsIGJ1aWxkYm90X291dHB1dCwg
cmVndWxhcl9vdXRwdXQsIHVzZXIgPSBsb2dnaW5nX3J1bihbCiAgICAgICAgICAgICAgICAgJ2Zh
aWx1cmVzL3VuZXhwZWN0ZWQvdGV4dC1pbWFnZS1jaGVja3N1bS5odG1sJywKICAgICAgICAgICAg
ICAgICAncGFzc2VzL3RleHQuaHRtbCcsCkBAIC01MzUsOCArNTMwLDggQEAgY2xhc3MgTWFpblRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgXSwKICAgICAgICAgICAgIHRlc3Rz
X2luY2x1ZGVkPVRydWUsCiAgICAgICAgICAgICByZWNvcmRfcmVzdWx0cz1UcnVlLAotICAgICAg
ICAgICAgZmlsZXN5c3RlbT1mcykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvaW5jcmVtZW50YWxfcmVzdWx0cy5qc29uJyBpbiBmcy5maWxlcykKKyAg
ICAgICAgICAgIGhvc3Q9aG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvdG1wL2xheW91
dC10ZXN0LXJlc3VsdHMvaW5jcmVtZW50YWxfcmVzdWx0cy5qc29uJyBpbiBob3N0LmZpbGVzeXN0
ZW0uZmlsZXMpCiAKICAgICBkZWYgdGVzdF9leGl0X2FmdGVyX25fZmFpbHVyZXMoc2VsZik6CiAg
ICAgICAgICMgVW5leHBlY3RlZCBmYWlsdXJlcyBzaG91bGQgcmVzdWx0IGluIHRlc3RzIHN0b3Bw
aW5nLgpAQCAtNjA1LDExICs2MDAsMTEgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICAjIFdlIHJ1biBhIGNvbmZpZ3VyYXRpb24gdGhhdCBzaG91bGQgZmFpbCwg
dG8gZ2VuZXJhdGUgb3V0cHV0LCB0aGVuCiAgICAgICAgICMgbG9vayBmb3Igd2hhdCB0aGUgb3V0
cHV0IHJlc3VsdHMgdXJsIHdhcy4KIAotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVt
KCkKLSAgICAgICAgd2l0aCBmcy5ta2R0ZW1wKCkgYXMgdG1wZGlyOgorICAgICAgICBob3N0ID0g
TW9ja0hvc3QoKQorICAgICAgICB3aXRoIGhvc3QuZmlsZXN5c3RlbS5ta2R0ZW1wKCkgYXMgdG1w
ZGlyOgogICAgICAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKFsnLS1y
ZXN1bHRzLWRpcmVjdG9yeT0nICsgc3RyKHRtcGRpcildLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVzeXN0ZW09
ZnMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIub3BlbmVkX3VybHMsIFtmcy5q
b2luKHRtcGRpciwgJ3Jlc3VsdHMuaHRtbCcpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBob3N0PWhvc3QpCisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXIub3BlbmVkX3VybHMsIFtob3N0LmZpbGVzeXN0
ZW0uam9pbih0bXBkaXIsICdyZXN1bHRzLmh0bWwnKV0pCiAKICAgICBkZWYgdGVzdF9yZXN1bHRz
X2RpcmVjdG9yeV9kZWZhdWx0KHNlbGYpOgogICAgICAgICAjIFdlIHJ1biBhIGNvbmZpZ3VyYXRp
b24gdGhhdCBzaG91bGQgZmFpbCwgdG8gZ2VuZXJhdGUgb3V0cHV0LCB0aGVuCkBAIC02MjIsMTcg
KzYxNywxNyBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRl
c3RfcmVzdWx0c19kaXJlY3RvcnlfcmVsYXRpdmUoc2VsZik6CiAgICAgICAgICMgV2UgcnVuIGEg
Y29uZmlndXJhdGlvbiB0aGF0IHNob3VsZCBmYWlsLCB0byBnZW5lcmF0ZSBvdXRwdXQsIHRoZW4K
ICAgICAgICAgIyBsb29rIGZvciB3aGF0IHRoZSBvdXRwdXQgcmVzdWx0cyB1cmwgd2FzLgotICAg
ICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgZnMubWF5YmVfbWFrZV9k
aXJlY3RvcnkoJy90bXAvY3dkJykKLSAgICAgICAgZnMuY2hkaXIoJy90bXAvY3dkJykKKyAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC5maWxlc3lzdGVtLm1heWJlX21ha2Vf
ZGlyZWN0b3J5KCcvdG1wL2N3ZCcpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5jaGRpcignL3Rt
cC9jd2QnKQogICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4oWyctLXJl
c3VsdHMtZGlyZWN0b3J5PWZvbyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1mcykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9
aG9zdCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLm9wZW5lZF91cmxzLCBbJy90bXAv
Y3dkL2Zvby9yZXN1bHRzLmh0bWwnXSkKIAogICAgIGRlZiB0ZXN0X3JldHJpZXNfZGlyZWN0b3J5
KHNlbGYpOgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgcmVz
LCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVz
eXN0ZW09ZnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL3JldHJpZXMvdGVzdHNfcnVuMC50eHQnIGluIGZzLmZpbGVzKQorICAgICAgICBob3N0ID0g
TW9ja0hvc3QoKQorICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4odGVz
dHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG9z
dC5maWxlc3lzdGVtLmV4aXN0cygnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3JldHJpZXMvdGVz
dHNfcnVuMC50eHQnKSkKIAogICAgICMgVGhlc2UgbmV4dCB0ZXN0cyB0ZXN0IHRoYXQgd2UgcnVu
IHRoZSB0ZXN0cyBpbiBhc2NlbmRpbmcgYWxwaGFiZXRpY2FsCiAgICAgIyBvcmRlciBwZXIgZGly
ZWN0b3J5LiBIVFRQIHRlc3RzIGFyZSBzaGFyZGVkIHNlcGFyYXRlbHkgZnJvbSBvdGhlciB0ZXN0
cywKQEAgLTY1OSw3ICs2NTQsOCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAKICAgICAgICAgZGVmIGdldF9wb3J0X2Zvcl9ydW4oYXJncyk6CiAgICAgICAgICAgICBvcHRp
b25zLCBwYXJzZWRfYXJncyA9IHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncyhhcmdzKQotICAg
ICAgICAgICAgdGVzdF9wb3J0ID0gSW1hZ2VEaWZmVGVzdFBvcnQob3B0aW9ucz1vcHRpb25zKQor
ICAgICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgICAgIHRlc3RfcG9ydCA9IElt
YWdlRGlmZlRlc3RQb3J0KGhvc3QsIG9wdGlvbnM9b3B0aW9ucykKICAgICAgICAgICAgIHJlcyA9
IHBhc3NpbmdfcnVuKGFyZ3MsIHBvcnRfb2JqPXRlc3RfcG9ydCwgdGVzdHNfaW5jbHVkZWQ9VHJ1
ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXMpCiAgICAgICAgICAgICByZXR1cm4g
dGVzdF9wb3J0CkBAIC03MjQsMTEgKzcyMCw5IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWydwYXNzZXMvbWlzbWF0Y2guaHRt
bCcsICdwYXNzZXMvbWlzbWF0Y2gtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCddLCB0ZXN0c19ydW4p
CiAKICAgICBkZWYgdGVzdF9yZWZ0ZXN0X3Nob3VsZF9ub3RfdXNlX25hbWluZ19jb252ZW50aW9u
X2lmX25vdF9saXN0ZWRfaW5fcmVmdGVzdGxpc3Qoc2VsZik6Ci0gICAgICAgIGZzID0gdW5pdF90
ZXN0X2ZpbGVzeXN0ZW0oKQotICAgICAgICByZXMsIG91dCwgZXJyLCBfID0gbG9nZ2luZ19ydW4o
WyctLW5vLXNob3ctcmVzdWx0cycsICdyZWZ0ZXN0cy9mb28vJ10sIHRlc3RzX2luY2x1ZGVkPVRy
dWUsIGZpbGVzeXN0ZW09ZnMsIHJlY29yZF9yZXN1bHRzPVRydWUpCi0gICAgICAgIGZpbGVfbGlz
dCA9IGZzLndyaXR0ZW5fZmlsZXMua2V5cygpCi0gICAgICAgIGZpbGVfbGlzdC5yZW1vdmUoJy90
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dCcpCi0gICAgICAgIGpzb25fc3Ry
aW5nID0gZnMucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jl
c3VsdHMuanNvbicpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHJlcywgb3V0
LCBlcnIsIF8gPSBsb2dnaW5nX3J1bihbJy0tbm8tc2hvdy1yZXN1bHRzJywgJ3JlZnRlc3RzL2Zv
by8nXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0LCByZWNvcmRfcmVzdWx0cz1UcnVl
KQorICAgICAgICBqc29uX3N0cmluZyA9IGhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgn
L3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykKICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJ1bmxpc3RlZHRlc3QuaHRtbCI6eyJleHBl
Y3RlZCI6IlBBU1MiLCJpc19taXNzaW5nX3RleHQiOnRydWUsImFjdHVhbCI6Ik1JU1NJTkciLCJp
c19taXNzaW5nX2ltYWdlIjp0cnVlfScpICE9IC0xKQogICAgICAgICBzZWxmLmFzc2VydFRydWUo
anNvbl9zdHJpbmcuZmluZCgnIm51bV9yZWdyZXNzaW9ucyI6NCcpICE9IC0xKQogICAgICAgICBz
ZWxmLmFzc2VydFRydWUoanNvbl9zdHJpbmcuZmluZCgnIm51bV9mbGFreSI6MCcpICE9IC0xKQpA
QCAtNzc0LDExICs3NjgsMTEgQEAgY2xhc3MgRW5kVG9FbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgcmV0dXJuIGNvbXByZXNzZWRfcmVzdWx0cwogCiAgICAgZGVmIHRlc3RfZW5k
X3RvX2VuZChzZWxmKToKLSAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0gICAg
ICAgIHJlcywgb3V0LCBlcnIsIHVzZXIgPSBsb2dnaW5nX3J1bihyZWNvcmRfcmVzdWx0cz1UcnVl
LCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzKQorICAgICAgICBob3N0ID0gTW9j
a0hvc3QoKQorICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4ocmVjb3Jk
X3Jlc3VsdHM9VHJ1ZSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0KQogCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHJlcywgdW5leHBlY3RlZF90ZXN0c19jb3VudCkKLSAgICAgICAg
cmVzdWx0cyA9IHNlbGYucGFyc2VfZnVsbF9yZXN1bHRzKGZzLmZpbGVzWycvdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nXSkKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYu
cGFyc2VfZnVsbF9yZXN1bHRzKGhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykpCiAKICAgICAgICAgIyBDaGVj
ayB0byBlbnN1cmUgd2UncmUgcGFzc2luZyBiYWNrIGltYWdlIGRpZmYgJWFnZSBjb3JyZWN0bHku
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3VsdHNbJ3Rlc3RzJ11bJ2ZhaWx1cmVzJ11b
J2V4cGVjdGVkJ11bJ2ltYWdlLmh0bWwnXVsnaW1hZ2VfZGlmZl9wZXJjZW50J10sIDEpCkBAIC03
ODksMTEgKzc4MywxMSBAQCBjbGFzcyBFbmRUb0VuZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgIGRlZiB0ZXN0X3JlZnRlc3Rfd2l0aF90d29fbm90cmVmcyhzZWxmKToKICAgICAgICAgIyBU
ZXN0IHRoYXQgd2UgdXBkYXRlIGV4cGVjdGF0aW9ucyBpbiBwbGFjZS4gSWYgdGhlIGV4cGVjdGF0
aW9uCiAgICAgICAgICMgaXMgbWlzc2luZywgdXBkYXRlIHRoZSBleHBlY3RlZCBnZW5lcmljIGxv
Y2F0aW9uLgotICAgICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgcmVz
LCBvdXQsIGVyciwgXyA9IGxvZ2dpbmdfcnVuKFsnLS1uby1zaG93LXJlc3VsdHMnLCAncmVmdGVz
dHMvZm9vLyddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzLCByZWNvcmRfcmVz
dWx0cz1UcnVlKQotICAgICAgICBmaWxlX2xpc3QgPSBmcy53cml0dGVuX2ZpbGVzLmtleXMoKQor
ICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICByZXMsIG91dCwgZXJyLCBfID0gbG9n
Z2luZ19ydW4oWyctLW5vLXNob3ctcmVzdWx0cycsICdyZWZ0ZXN0cy9mb28vJ10sIHRlc3RzX2lu
Y2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCwgcmVjb3JkX3Jlc3VsdHM9VHJ1ZSkKKyAgICAgICAgZmls
ZV9saXN0ID0gaG9zdC5maWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMua2V5cygpCiAgICAgICAgIGZp
bGVfbGlzdC5yZW1vdmUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dCcp
Ci0gICAgICAgIGpzb25fc3RyaW5nID0gZnMucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpCisgICAgICAgIGpzb25fc3RyaW5nID0gaG9z
dC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVs
bF9yZXN1bHRzLmpzb24nKQogICAgICAgICBqc29uID0gc2VsZi5wYXJzZV9mdWxsX3Jlc3VsdHMo
anNvbl9zdHJpbmcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgibXVsdGlwbGUtbWF0Y2gtc3Vj
Y2Vzcy5odG1sIiBub3QgaW4ganNvblsidGVzdHMiXVsicmVmdGVzdHMiXVsiZm9vIl0pCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSgibXVsdGlwbGUtbWlzbWF0Y2gtc3VjY2Vzcy5odG1sIiBub3Qg
aW4ganNvblsidGVzdHMiXVsicmVmdGVzdHMiXVsiZm9vIl0pCkBAIC04MjEsMTMgKzgxNSwxMyBA
QCBjbGFzcyBSZWJhc2VsaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rf
cmVzZXRfcmVzdWx0cyhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgdXBkYXRlIGV4cGVj
dGF0aW9ucyBpbiBwbGFjZS4gSWYgdGhlIGV4cGVjdGF0aW9uCiAgICAgICAgICMgaXMgbWlzc2lu
ZywgdXBkYXRlIHRoZSBleHBlY3RlZCBnZW5lcmljIGxvY2F0aW9uLgotICAgICAgICBmcyA9IHVu
aXRfdGVzdF9maWxlc3lzdGVtKCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAg
cmVzLCBvdXQsIGVyciwgXyA9IGxvZ2dpbmdfcnVuKFsnLS1waXhlbC10ZXN0cycsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAnLS1yZXNldC1yZXN1bHRzJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICdwYXNzZXMvaW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVy
ZXMvZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sJ10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzLCBuZXdfcmVzdWx0cz1UcnVlKQot
ICAgICAgICBmaWxlX2xpc3QgPSBmcy53cml0dGVuX2ZpbGVzLmtleXMoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0LCBuZXdfcmVzdWx0cz1U
cnVlKQorICAgICAgICBmaWxlX2xpc3QgPSBob3N0LmZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcy5r
ZXlzKCkKICAgICAgICAgZmlsZV9saXN0LnJlbW92ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L3Rlc3RzX3J1bjAudHh0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzLCAwKQogICAg
ICAgICBzZWxmLmFzc2VydFRydWUob3V0LmVtcHR5KCkpCkBAIC04MzgsMTQgKzgzMiwxNCBAQCBj
bGFzcyBSZWJhc2VsaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfbWlz
c2luZ19yZXN1bHRzKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCB3ZSB1cGRhdGUgZXhwZWN0
YXRpb25zIGluIHBsYWNlLiBJZiB0aGUgZXhwZWN0YXRpb24KICAgICAgICAgIyBpcyBtaXNzaW5n
LCB1cGRhdGUgdGhlIGV4cGVjdGVkIGdlbmVyaWMgbG9jYXRpb24uCi0gICAgICAgIGZzID0gdW5p
dF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICBy
ZXMsIG91dCwgZXJyLCBfID0gbG9nZ2luZ19ydW4oWyctLW5vLXNob3ctcmVzdWx0cycsCiAgICAg
ICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC9taXNzaW5nX3RleHQuaHRtbCcs
CiAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvdW5leHBlY3RlZC9taXNzaW5nX2ltYWdl
Lmh0bWwnLAogICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL3VuZXhwZWN0ZWQvbWlzc2lu
Z19hdWRpby5odG1sJywKICAgICAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy91bmV4cGVjdGVk
L21pc3NpbmdfcmVuZGVyX3RyZWVfZHVtcC5odG1sJ10sCi0gICAgICAgICAgICAgICAgICAgICB0
ZXN0c19pbmNsdWRlZD1UcnVlLCBmaWxlc3lzdGVtPWZzLCBuZXdfcmVzdWx0cz1UcnVlKQotICAg
ICAgICBmaWxlX2xpc3QgPSBmcy53cml0dGVuX2ZpbGVzLmtleXMoKQorICAgICAgICAgICAgICAg
ICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0LCBuZXdfcmVzdWx0cz1UcnVlKQor
ICAgICAgICBmaWxlX2xpc3QgPSBob3N0LmZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcy5rZXlzKCkK
ICAgICAgICAgZmlsZV9saXN0LnJlbW92ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3Rz
X3J1bjAudHh0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzLCAwKQogICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKG91dC5lbXB0eSgpKQpAQCAtODU3LDEzICs4NTEsMTMgQEAgY2xhc3Mg
UmViYXNlbGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X25ld19iYXNl
bGluZShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgdXBkYXRlIHRoZSBwbGF0Zm9ybSBl
eHBlY3RhdGlvbnMuIElmIHRoZSBleHBlY3RhdGlvbgogICAgICAgICAjIGlzIG1zc2luZywgdGhl
biBjcmVhdGUgYSBuZXcgZXhwZWN0YXRpb24gaW4gdGhlIHBsYXRmb3JtIGRpci4KLSAgICAgICAg
ZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAg
ICAgICAgIHJlcywgb3V0LCBlcnIsIF8gPSBsb2dnaW5nX3J1bihbJy0tcGl4ZWwtdGVzdHMnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgJy0tbmV3LWJhc2VsaW5lJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICdwYXNzZXMvaW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAn
ZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sJ10sCi0gICAgICAgICAgICAgICAg
ICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVzeXN0ZW09ZnMsIG5ld19yZXN1bHRzPVRydWUp
Ci0gICAgICAgIGZpbGVfbGlzdCA9IGZzLndyaXR0ZW5fZmlsZXMua2V5cygpCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCwgbmV3X3Jlc3VsdHM9VHJ1
ZSkKKyAgICAgICAgZmlsZV9saXN0ID0gaG9zdC5maWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMua2V5
cygpCiAgICAgICAgIGZpbGVfbGlzdC5yZW1vdmUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90
ZXN0c19ydW4wLnR4dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlcywgMCkKICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKG91dC5lbXB0eSgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXgg
NjU0MjRmNWJlOWJiY2VlN2I3MTkzYjVmYjI0NjhiNWM2M2M1N2RlZS4uZjdjMGJmY2I4YWUzZWVk
MGU1MTEzZjk4YjJiOTJlMTU5MzkwYjQxMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC02Nywx
NSArNjcsMTUgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIob2JqZWN0KToKICAgICAg
ICAgICAgIF9sb2cud2FybigiRXhjZXB0aW9uIHdoaWxlIGdldHRpbmcgcG9ydCBmb3IgcGF0aCAl
cyIgJSBleHBlY3RhdGlvbnNfcGF0aCkKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvciwgaG9zdD1Ob25l
KToKICAgICAgICAgc2VsZi5fZmlsZV9wYXRoID0gZmlsZV9wYXRoCiAgICAgICAgIHNlbGYuX2hh
bmRsZV9zdHlsZV9lcnJvciA9IGhhbmRsZV9zdHlsZV9lcnJvcgogICAgICAgICBzZWxmLl9oYW5k
bGVfc3R5bGVfZXJyb3IudHVybl9vZmZfbGluZV9maWx0ZXJpbmcoKQogICAgICAgICBzZWxmLl90
YWJfY2hlY2tlciA9IFRhYkNoZWNrZXIoZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpCiAg
ICAgICAgIHNlbGYuX291dHB1dF9yZWdleCA9IHJlLmNvbXBpbGUoJ0xpbmU6KD9QPGxpbmU+XGQr
KVxzKig/UDxtZXNzYWdlPi4rKScpCiAKLSAgICAgICAgIyBGSVhNRTogQSBob3N0IHNob3VsZCBi
ZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQhCi0gICAgICAgIGhvc3QgPSBIb3N0
KCkKKyAgICAgICAgIyBGSVhNRTogaG9zdCBzaG91bGQgYmUgYSByZXF1aXJlZCBwYXJhbWV0ZXIs
IG5vdCBhbiBvcHRpb25hbCBvbmUuCisgICAgICAgIGhvc3QgPSBob3N0IG9yIEhvc3QoKQogICAg
ICAgICBob3N0Ll9pbml0aWFsaXplX3NjbSgpCiAKICAgICAgICAgIyBEZXRlcm1pbmluZyB0aGUg
cG9ydCBvZiB0aGlzIGV4cGVjdGF0aW9ucy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0
ZXN0LnB5CmluZGV4IGQzMDA0MzM3NThjZWQ5ZTE5NzYzYzVjYjdjMmM3M2I2NWMzYzY1MWIuLjky
ZDFmZTYyOGEzZTBmMTM4MmQ1YzZhYjU0ZWNkMTkzNTNkNzIzNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4
cGVjdGF0aW9uc191bml0dGVzdC5weQpAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBUZXN0RXhwZWN0
YXRpb25zVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIF9leHBlY3RfcG9y
dF9mb3JfZXhwZWN0YXRpb25zX3BhdGgoc2VsZiwgZXhwZWN0ZWRfcG9ydF9vcl9wb3J0X2NsYXNz
LCBleHBlY3RhdGlvbnNfcGF0aCk6CiAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAg
IGNoZWNrZXIgPSBUZXN0RXhwZWN0YXRpb25zQ2hlY2tlcihleHBlY3RhdGlvbnNfcGF0aCwgRXJy
b3JDb2xsZWN0b3IoKSkKKyAgICAgICAgY2hlY2tlciA9IFRlc3RFeHBlY3RhdGlvbnNDaGVja2Vy
KGV4cGVjdGF0aW9uc19wYXRoLCBFcnJvckNvbGxlY3RvcigpLCBob3N0PWhvc3QpCiAgICAgICAg
IHBvcnQgPSBjaGVja2VyLl9kZXRlcm1pbmVfcG9ydF9mcm9tX2V4ZXBlY3RhdGlvbnNfcGF0aCho
b3N0LCBleHBlY3RhdGlvbnNfcGF0aCkKICAgICAgICAgaWYgcG9ydDoKICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHBvcnQuX19jbGFzc19fLl9fbmFtZV9fLCBleHBlY3RlZF9wb3J0X29y
X3BvcnRfY2xhc3MpCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNUZXN0
Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGFzc2VydF9saW5lc19saW50KHNlbGYs
IGxpbmVzLCBleHBlY3RlZCk6CiAgICAgICAgIHNlbGYuX2Vycm9yX2NvbGxlY3Rvci5yZXNldF9l
cnJvcnMoKQogICAgICAgICBjaGVja2VyID0gVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIoJ3Rlc3Qv
dGVzdF9leHBlY3RhdGlvbnMudHh0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2Vycm9yX2NvbGxlY3RvcikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yX2NvbGxlY3RvciwgaG9zdD1Nb2NrSG9zdCgp
KQogICAgICAgICBjaGVja2VyLmNoZWNrX3Rlc3RfZXhwZWN0YXRpb25zKGV4cGVjdGF0aW9uc19z
dHI9J1xuJy5qb2luKGxpbmVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0cz1bc2VsZi5fdGVzdF9maWxlXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdmVycmlkZXM9Tm9uZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1f
d2Via2l0X3Rlc3RzLnB5CmluZGV4IGMyYjEwYzQzNTczNDllYjcwMmU4ZTczODAxYzllY2RiNzBk
YmMwMTIuLjgyMjhkNDM4MWJhMTBjMzViYjk5MzZkYWQ5NmVmODlmNDk4OGY0NTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1
bV93ZWJraXRfdGVzdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3Zl
ZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weQpAQCAtMTQ1LDcgKzE0NSw3IEBA
IGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAKICAgICBSRVZJU0lPTl9SRUdFWCA9IHInPGEg
aHJlZj1cIihcZCspL1wiPicKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBydW5uaW5nX3BvcnQs
IHRhcmdldF9wb3J0LCBwbGF0Zm9ybSwgb3B0aW9ucywgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5
LCBzY20sIGxvZ2dlZF9iZWZvcmU9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0
LCBydW5uaW5nX3BvcnQsIHRhcmdldF9wb3J0LCBwbGF0Zm9ybSwgb3B0aW9ucywgdXJsX2ZldGNo
ZXIsIHppcF9mYWN0b3J5LCBsb2dnZWRfYmVmb3JlPUZhbHNlKToKICAgICAgICAgIiIiCiAgICAg
ICAgIEFyZ3M6CiAgICAgICAgICAgICBydW5uaW5nX3BvcnQ6IHRoZSBQb3J0IHRoZSBzY3JpcHQg
aXMgcnVubmluZyBvbi4KQEAgLTE2MiwxMiArMTYyLDEwIEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9i
amVjdCk6CiAgICAgICAgIHNlbGYuX3BsYXRmb3JtID0gcGxhdGZvcm0KICAgICAgICAgc2VsZi5f
b3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fcG9ydCA9IHJ1bm5pbmdfcG9ydAotICAg
ICAgICBzZWxmLl9maWxlc3lzdGVtID0gcnVubmluZ19wb3J0Ll9maWxlc3lzdGVtCisgICAgICAg
IHNlbGYuX2ZpbGVzeXN0ZW0gPSBob3N0LmZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5fdGFyZ2V0
X3BvcnQgPSB0YXJnZXRfcG9ydAogCi0gICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGdldCBp
dHMgUG9ydEZhY3RvcnkgZnJvbSBhIEhvc3Qgb2JqZWN0LgotICAgICAgICAjIE5vdGU6IHVzaW5n
IHJ1bm5pbmdfcG9ydC5leGVjdXRpdmUsIHJ1bm5pbmdfcG9ydC51c2VyIHNpbmNlIHdlIGNhbid0
IGdldCB0aGVtIGZyb20gYSBob3N0LgotICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQgPSBQ
b3J0RmFjdG9yeSgpLmdldChwbGF0Zm9ybSwgb3B0aW9ucywgZmlsZXN5c3RlbT1zZWxmLl9maWxl
c3lzdGVtLCBleGVjdXRpdmU9cnVubmluZ19wb3J0LmV4ZWN1dGl2ZSwgdXNlcj1ydW5uaW5nX3Bv
cnQudXNlcikKKyAgICAgICAgc2VsZi5fcmViYXNlbGluZV9wb3J0ID0gaG9zdC5wb3J0X2ZhY3Rv
cnkuZ2V0KHBsYXRmb3JtLCBvcHRpb25zKQogICAgICAgICBzZWxmLl9yZWJhc2VsaW5pbmdfdGVz
dHMgPSBzZXQoKQogICAgICAgICBzZWxmLl9yZWJhc2VsaW5lZF90ZXN0cyA9IFtdCiAgICAgICAg
IHNlbGYuX2xvZ2dlZF9iZWZvcmUgPSBsb2dnZWRfYmVmb3JlCkBAIC0xODIsNyArMTgwLDcgQEAg
Y2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVf
cG9ydCwgTm9uZSwgZXhwZWN0YXRpb25zX3N0ciwgc2VsZi5fcmViYXNlbGluZV9wb3J0LnRlc3Rf
Y29uZmlndXJhdGlvbigpLCBGYWxzZSkKICAgICAgICAgc2VsZi5fdXJsX2ZldGNoZXIgPSB1cmxf
ZmV0Y2hlcgogICAgICAgICBzZWxmLl96aXBfZmFjdG9yeSA9IHppcF9mYWN0b3J5Ci0gICAgICAg
IHNlbGYuX3NjbSA9IHNjbQorICAgICAgICBzZWxmLl9zY20gPSBob3N0LnNjbSgpCiAKICAgICBk
ZWYgcnVuKHNlbGYpOgogICAgICAgICAiIiJSdW4gcmViYXNlbGluZSBwcm9jZXNzLiIiIgpAQCAt
OTQ4LDcgKzk0Niw3IEBAIGRlZiBtYWluKGFyZ3MpOgogICAgIGlmIG5vdCBob3N0X3BvcnRfb2Jq
IG9yIG5vdCB0YXJnZXRfcG9ydF9vYmo6CiAgICAgICAgIHJldHVybiAxCiAKLSAgICB1cmxfZmV0
Y2hlciA9IHVybGZldGNoZXIuVXJsRmV0Y2hlcihob3N0X3BvcnRfb2JqLl9maWxlc3lzdGVtKQor
ICAgIHVybF9mZXRjaGVyID0gdXJsZmV0Y2hlci5VcmxGZXRjaGVyKGhvc3QuZmlsZXN5c3RlbSkK
IAogICAgICMgV2UgdXNlIHRoZSBkZWZhdWx0IHppcCBmYWN0b3J5IG1ldGhvZC4KICAgICB6aXBf
ZmFjdG9yeSA9IE5vbmUKQEAgLTk1Niw3ICs5NTQsNyBAQCBkZWYgbWFpbihhcmdzKToKICAgICAj
IEZJWE1FOiBTQ00gbW9kdWxlIGRvZXNuJ3QgaGFuZGxlIHBhdGhzIHRoYXQgYXJlbid0IHJlbGF0
aXZlIHRvIHRoZSBjaGVja291dF9yb290IGNvbnNpc3RlbnRseS4KICAgICBob3N0X3BvcnRfb2Jq
Ll9maWxlc3lzdGVtLmNoZGlyKGhvc3Quc2NtKCkuY2hlY2tvdXRfcm9vdCkKIAotICAgIHJldF9j
b2RlID0gcmVhbF9tYWluKG9wdGlvbnMsIHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRfb2JqLCB0
YXJnZXRfcG9ydF9vYmosIHVybF9mZXRjaGVyLCB6aXBfZmFjdG9yeSwgaG9zdC5zY20oKSkKKyAg
ICByZXRfY29kZSA9IHJlYWxfbWFpbihob3N0LCBvcHRpb25zLCB0YXJnZXRfb3B0aW9ucywgaG9z
dF9wb3J0X29iaiwgdGFyZ2V0X3BvcnRfb2JqLCB1cmxfZmV0Y2hlciwgemlwX2ZhY3RvcnkpCiAg
ICAgaWYgbm90IHJldF9jb2RlIGFuZCBsb2dfaGFuZGxlci5udW1fZmFpbHVyZXM6CiAgICAgICAg
IHJldF9jb2RlID0gMQogICAgIHByaW50ICcnCkBAIC05NjcsMTMgKzk2NSwxNCBAQCBkZWYgbWFp
bihhcmdzKToKICAgICByZXR1cm4gcmV0X2NvZGUKIAogCi1kZWYgcmVhbF9tYWluKG9wdGlvbnMs
IHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9mZXRj
aGVyLCB6aXBfZmFjdG9yeSwgc2NtX29iaik6CitkZWYgcmVhbF9tYWluKGhvc3QsIG9wdGlvbnMs
IHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9mZXRj
aGVyLCB6aXBfZmFjdG9yeSk6CiAgICAgIiIiTWFpbiBmdW5jdGlvbiB0byBwcm9kdWNlIG5ldyBi
YXNlbGluZXMuIFRoZSBSZWJhc2VsaW5lciBvYmplY3QgdXNlcyB0d28KICAgICBkaWZmZXJlbnQg
UG9ydCBvYmplY3RzIC0gb25lIHRvIHJlcHJlc2VudCB0aGUgbWFjaGluZSB0aGUgb2JqZWN0IGlz
IHJ1bm5pbmcKICAgICBvbiwgYW5kIG9uZSB0byByZXByZXNlbnQgdGhlIHBvcnQgd2hvc2UgZXhw
ZWN0YXRpb25zIGFyZSBiZWluZyB1cGRhdGVkLgogICAgIEUuZy4sIHlvdSBjYW4gcnVuIHRoZSBz
Y3JpcHQgb24gYSBtYWMgYW5kIHJlYmFzZWxpbmUgdGhlICd3aW4nIHBvcnQuCiAKICAgICBBcmdz
OgorICAgICAgICBob3N0OiBIb3N0IG9iamVjdAogICAgICAgICBvcHRpb25zOiBjb21tYW5kLWxp
bmUgYXJndW1lbnQgdXNlZCBmb3IgdGhlIGhvc3RfcG9ydF9vYmogKHNlZSBiZWxvdykKICAgICAg
ICAgdGFyZ2V0X29wdGlvbnM6IGNvbW1hbmRfbGluZSBhcmd1bWVudCB1c2VkIGZvciB0aGUgdGFy
Z2V0X3BvcnRfb2JqLgogICAgICAgICAgICAgVGhpcyBvYmplY3QgbWF5IGhhdmUgc2xpZ2h0bHkg
ZGlmZmVyZW50IHZhbHVlcyB0aGFuIHxvcHRpb25zfC4KQEAgLTk4Niw3ICs5ODUsNiBAQCBkZWYg
cmVhbF9tYWluKG9wdGlvbnMsIHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRf
cG9ydF9vYmosIHVybF9mZXRjaAogICAgICAgICB1cmxfZmV0Y2hlcjogb2JqZWN0IHVzZWQgdG8g
ZG93bmxvYWQgdGhlIGJ1aWxkIGFyY2hpdmVzIGZyb20gdGhlIGJvdHMKICAgICAgICAgemlwX2Zh
Y3Rvcnk6IGZhY3RvcnkgZnVuY3Rpb24gdXNlZCB0byBjcmVhdGUgemlwIGZpbGUgb2JqZWN0cyBm
b3IKICAgICAgICAgICAgIHRoZSBhcmNoaXZlcy4KLSAgICAgICAgc2NtX29iajogb2JqZWN0IHVz
ZWQgdG8gYWRkIG5ldyBiYXNlbGluZXMgdG8gdGhlIHNvdXJjZSBjb250cm9sIHN5c3RlbS4KICAg
ICAiIiIKICAgICBvcHRpb25zLmh0bWxfZGlyZWN0b3J5ID0gc2V0dXBfaHRtbF9kaXJlY3Rvcnko
aG9zdF9wb3J0X29iai5fZmlsZXN5c3RlbSwgb3B0aW9ucy5odG1sX2RpcmVjdG9yeSkKICAgICBh
bGxfcGxhdGZvcm1zID0gdGFyZ2V0X3BvcnRfb2JqLmFsbF9iYXNlbGluZV92YXJpYW50cygpCkBA
IC0xMDEyLDkgKzEwMTAsOSBAQCBkZWYgcmVhbF9tYWluKG9wdGlvbnMsIHRhcmdldF9vcHRpb25z
LCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9mZXRjaAogICAgIHJlYmFzZWxp
bmVkX3Rlc3RzID0gc2V0KCkKICAgICBsb2dnZWRfYmVmb3JlID0gRmFsc2UKICAgICBmb3IgcGxh
dGZvcm0gaW4gcmViYXNlbGluZV9wbGF0Zm9ybXM6Ci0gICAgICAgIHJlYmFzZWxpbmVyID0gUmVi
YXNlbGluZXIoaG9zdF9wb3J0X29iaiwgdGFyZ2V0X3BvcnRfb2JqLAorICAgICAgICByZWJhc2Vs
aW5lciA9IFJlYmFzZWxpbmVyKGhvc3QsIGhvc3RfcG9ydF9vYmosIHRhcmdldF9wb3J0X29iaiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybSwgb3B0aW9ucywgdXJs
X2ZldGNoZXIsIHppcF9mYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNjbV9vYmosIGxvZ2dlZF9iZWZvcmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbG9nZ2VkX2JlZm9yZSkKIAogICAgICAgICBfbG9nLmRlYnVnKCcnKQogICAgICAgICBsb2df
ZGFzaGVkX3N0cmluZygnUmViYXNlbGluZSBzdGFydGVkJywgcGxhdGZvcm0pCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1f
d2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9t
b3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQppbmRleCBm
M2Q5MzU0MDVhNmI3ZDNhN2JkMWMwMjFhMDRiYjY0YmZlZWVmYzkwLi41NjRmZGRkZjFhODkxODY5
OTM3OWY0NTg5ZDc2Yzk5MzRiY2M1ZTQ3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9j
aHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTM5LDEwICszOSw3IEBAIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgemlwZmlsZXNldF9tb2NrCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1cmUKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIAotZnJv
bSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV9tb2NrIGltcG9ydCBNb2NrU0NNCi0K
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0Ci1mcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5wb3J0LnRlc3QgaW1wb3J0IHVuaXRfdGVzdF9maWxlc3lzdGVtCiBmcm9tIHdl
YmtpdHB5LnRvX2JlX21vdmVkIGltcG9ydCByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0
cwogCiAKQEAgLTc5LDEwICs3Niw5IEBAIGRlZiB0ZXN0X29wdGlvbnMoKToKIGRlZiB0ZXN0X2hv
c3RfcG9ydF9hbmRfZmlsZXN5c3RlbShvcHRpb25zLCBleHBlY3RhdGlvbnMpOgogICAgIGhvc3Qg
PSBNb2NrSG9zdCgpCiAgICAgaG9zdF9wb3J0X29iaiA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgn
dGVzdCcsIG9wdGlvbnMpCi0KICAgICBleHBlY3RhdGlvbnNfcGF0aCA9IGhvc3RfcG9ydF9vYmou
cGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkKLSAgICBob3N0X3BvcnRfb2JqLmZpbGVz
eXN0ZW0ud3JpdGVfdGV4dF9maWxlKGV4cGVjdGF0aW9uc19wYXRoLCBleHBlY3RhdGlvbnMpCi0g
ICAgcmV0dXJuIChob3N0X3BvcnRfb2JqLCBob3N0X3BvcnRfb2JqLmZpbGVzeXN0ZW0pCisgICAg
aG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShleHBlY3RhdGlvbnNfcGF0aCwgZXhwZWN0
YXRpb25zKQorICAgIHJldHVybiAoaG9zdCwgaG9zdF9wb3J0X29iaiwgaG9zdC5maWxlc3lzdGVt
KQogCiAKIGRlZiB0ZXN0X3VybF9mZXRjaGVyKGZpbGVzeXN0ZW0pOgpAQCAtMjA1LDI0ICsyMDEs
MjEgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRl
ZiBtYWtlX3JlYmFzZWxpbmVyKHNlbGYsIGV4cGVjdGF0aW9ucyk6CiAgICAgICAgIG9wdGlvbnMg
PSB0ZXN0X29wdGlvbnMoKQotICAgICAgICBob3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVtID0gdGVz
dF9ob3N0X3BvcnRfYW5kX2ZpbGVzeXN0ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKQorICAgICAg
ICBob3N0LCBob3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVtID0gdGVzdF9ob3N0X3BvcnRfYW5kX2Zp
bGVzeXN0ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKQogCiAgICAgICAgIHRhcmdldF9vcHRpb25z
ID0gb3B0aW9ucwotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICB0YXJnZXRfcG9y
dF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QnLCB0YXJnZXRfb3B0aW9ucywgZmls
ZXN5c3RlbT1maWxlc3lzdGVtKQotICAgICAgICB0YXJnZXRfcG9ydF9vYmouX2V4cGVjdGF0aW9u
cyA9IGV4cGVjdGF0aW9ucworICAgICAgICB0YXJnZXRfcG9ydF9vYmogPSBob3N0LnBvcnRfZmFj
dG9yeS5nZXQoJ3Rlc3QnLCB0YXJnZXRfb3B0aW9ucykKICAgICAgICAgcGxhdGZvcm0gPSB0YXJn
ZXRfcG9ydF9vYmoubmFtZSgpCiAKICAgICAgICAgdXJsX2ZldGNoZXIgPSB0ZXN0X3VybF9mZXRj
aGVyKGZpbGVzeXN0ZW0pCiAgICAgICAgIHppcF9mYWN0b3J5ID0gdGVzdF96aXBfZmFjdG9yeSgp
Ci0gICAgICAgIG1vY2tfc2NtID0gTW9ja1NDTShmaWxlc3lzdGVtKQotICAgICAgICBmaWxlc3lz
dGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KG1vY2tfc2NtLmNoZWNrb3V0X3Jvb3QpCisgICAgICAg
IGZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkoaG9zdC5zY20oKS5jaGVja291dF9yb290
KQogCiAgICAgICAgICMgRklYTUU6IFNDTSBtb2R1bGUgZG9lc24ndCBoYW5kbGUgcGF0aHMgdGhh
dCBhcmVuJ3QgcmVsYXRpdmUgdG8gdGhlIGNoZWNrb3V0X3Jvb3QgY29uc2lzdGVudGx5LgogICAg
ICAgICBmaWxlc3lzdGVtLmNoZGlyKCIvdGVzdC5jaGVja291dCIpCiAKLSAgICAgICAgcmViYXNl
bGluZXIgPSByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5SZWJhc2VsaW5lcihob3N0
X3BvcnRfb2JqLAotICAgICAgICAgICAgdGFyZ2V0X3BvcnRfb2JqLCBwbGF0Zm9ybSwgb3B0aW9u
cywgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5LCBtb2NrX3NjbSkKKyAgICAgICAgcmViYXNlbGlu
ZXIgPSByZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5SZWJhc2VsaW5lcihob3N0LCBo
b3N0X3BvcnRfb2JqLAorICAgICAgICAgICAgdGFyZ2V0X3BvcnRfb2JqLCBwbGF0Zm9ybSwgb3B0
aW9ucywgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5KQogICAgICAgICByZXR1cm4gcmViYXNlbGlu
ZXIsIGZpbGVzeXN0ZW0KIAogICAgIGRlZiB0ZXN0X25vb3Aoc2VsZik6CkBAIC0zNTAsMTkgKzM0
MywxNyBAQCBjbGFzcyBUZXN0UmVhbE1haW4odW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBl
eHBlY3RhdGlvbnMgPSAiQlVHWCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2Uu
aHRtbCA9IElNQUdFIgogCiAgICAgICAgIG9wdGlvbnMgPSB0ZXN0X29wdGlvbnMoKQotICAgICAg
ICBob3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVtID0gdGVzdF9ob3N0X3BvcnRfYW5kX2ZpbGVzeXN0
ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKQorICAgICAgICBob3N0LCBob3N0X3BvcnRfb2JqLCBm
aWxlc3lzdGVtID0gdGVzdF9ob3N0X3BvcnRfYW5kX2ZpbGVzeXN0ZW0ob3B0aW9ucywgZXhwZWN0
YXRpb25zKQogICAgICAgICB1cmxfZmV0Y2hlciA9IHRlc3RfdXJsX2ZldGNoZXIoZmlsZXN5c3Rl
bSkKICAgICAgICAgemlwX2ZhY3RvcnkgPSB0ZXN0X3ppcF9mYWN0b3J5KCkKLSAgICAgICAgbW9j
a19zY20gPSBNb2NrU0NNKCkKLSAgICAgICAgZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9y
eShtb2NrX3NjbS5jaGVja291dF9yb290KQogCiAgICAgICAgICMgRklYTUU6IFNDTSBtb2R1bGUg
ZG9lc24ndCBoYW5kbGUgcGF0aHMgdGhhdCBhcmVuJ3QgcmVsYXRpdmUgdG8gdGhlIGNoZWNrb3V0
X3Jvb3QgY29uc2lzdGVudGx5LgogICAgICAgICBmaWxlc3lzdGVtLmNoZGlyKCIvdGVzdC5jaGVj
a291dCIpCiAKICAgICAgICAgb2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQogICAg
ICAgICBvYy5jYXB0dXJlX291dHB1dCgpCi0gICAgICAgIHJlcyA9IHJlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzLnJlYWxfbWFpbihvcHRpb25zLCBvcHRpb25zLAotICAgICAgICAgICAg
aG9zdF9wb3J0X29iaiwgaG9zdF9wb3J0X29iaiwgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5LCBt
b2NrX3NjbSkKKyAgICAgICAgcmVzID0gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMu
cmVhbF9tYWluKGhvc3QsIG9wdGlvbnMsIG9wdGlvbnMsCisgICAgICAgICAgICBob3N0X3BvcnRf
b2JqLCBob3N0X3BvcnRfb2JqLCB1cmxfZmV0Y2hlciwgemlwX2ZhY3RvcnkpCiAgICAgICAgIG9j
LnJlc3RvcmVfb3V0cHV0KCkKIAogICAgICAgICAjIFdlIGV4cGVjdCB0byBoYXZlIHdyaXR0ZW4g
MzggZmlsZXMgb3ZlciB0aGUgY291cnNlIG9mIHRoaXMgcmViYXNlbGluZToKQEAgLTM4Miw3ICsz
NzMsMTEgQEAgY2xhc3MgVGVzdEh0bWxHZW5lcmF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
IGRlZiBtYWtlX2dlbmVyYXRvcihzZWxmLCBmaWxlcywgdGVzdHMpOgogICAgICAgICBvcHRpb25z
ID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj1Ob25lLCBodG1sX2RpcmVjdG9yeT0nL3RtcCcp
CiAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAgIGhvc3RfcG9ydCA9IGhvc3QucG9y
dF9mYWN0b3J5LmdldCgndGVzdCcsIG9wdGlvbnMsIGZpbGVzeXN0ZW09dW5pdF90ZXN0X2ZpbGVz
eXN0ZW0oZmlsZXMpKQorICAgICAgICBmcyA9IGhvc3QuZmlsZXN5c3RlbQorICAgICAgICBmb3Ig
ZmlsZW5hbWUsIGNvbnRlbnRzIGluIGZpbGVzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgZnMu
bWF5YmVfbWFrZV9kaXJlY3RvcnkoZnMuZGlybmFtZShmaWxlbmFtZSkpCisgICAgICAgICAgICBm
cy53cml0ZV9iaW5hcnlfZmlsZShmaWxlbmFtZSwgY29udGVudHMpCisgICAgICAgIGhvc3RfcG9y
dCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdCcsIG9wdGlvbnMpCiAgICAgICAgIGdlbmVy
YXRvciA9IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLkh0bWxHZW5lcmF0b3IoaG9z
dF9wb3J0LAogICAgICAgICAgICAgdGFyZ2V0X3BvcnQ9Tm9uZSwgb3B0aW9ucz1vcHRpb25zLCBw
bGF0Zm9ybXM9Wyd0ZXN0LW1hYy1sZW9wYXJkJ10sIHJlYmFzZWxpbmluZ190ZXN0cz10ZXN0cykK
ICAgICAgICAgcmV0dXJuIGdlbmVyYXRvciwgaG9zdF9wb3J0CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91
bml0dGVzdC5weQppbmRleCA2OWE0NDA5YmQxYTQ0ODdkZjA2YmM1MTdiNTY4NWQ1OTZiMTMxOGIz
Li5iMDJkMWQzNTc5NTA2M2QxMDU5YjMyNGZlYmNiMjdlMzVhZDc5MjQzIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxp
bmVzZXJ2ZXJfdW5pdHRlc3QucHkKQEAgLTM1LDkgKzM1LDcgQEAgZXhjZXB0IEltcG9ydEVycm9y
OgogICAgIGltcG9ydCB3ZWJraXRweS50aGlyZHBhcnR5LnNpbXBsZWpzb24gYXMganNvbgogCiAK
LWZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY21fbW9jayBpbXBvcnQgTW9ja1ND
TQogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0IGltcG9ydCByZXN1bHRzanNvbnBhcnNlcl91bml0
dGVzdAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQg
TW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9j
a0hvc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLmpzb25fcmVz
dWx0c19nZW5lcmF0b3IgaW1wb3J0IHN0cmlwX2pzb25fd3JhcHBlcgogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQKQEAgLTMwMSwyMyArMjk5
LDIxIEBAIGRlZiBnZXRfdGVzdF9jb25maWcodGVzdF9maWxlcz1bXSwgcmVzdWx0X2ZpbGVzPVtd
KToKICAgICAjIFdlIGNvdWxkIGdyYWIgdGhpcyBmcm9tIHBvcnQubGF5b3V0X3Rlc3RzX2Rpcigp
LCBidXQgaW5zdGFudGlhdGluZyBhIGZ1bGx5IG1vY2tlZCBwb3J0IGlzIGEgcGFpbi4KICAgICBs
YXlvdXRfdGVzdHNfZGlyZWN0b3J5ID0gIi9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzIgogICAg
IHJlc3VsdHNfZGlyZWN0b3J5ID0gJy9XZWJLaXRCdWlsZC9EZWJ1Zy9sYXlvdXQtdGVzdC1yZXN1
bHRzJwotICAgIG1vY2tfZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKCkKKyAgICBob3N0ID0g
TW9ja0hvc3QoKQogICAgIGZvciBmaWxlIGluIHRlc3RfZmlsZXM6Ci0gICAgICAgIGZpbGVfcGF0
aCA9IG1vY2tfZmlsZXN5c3RlbS5qb2luKGxheW91dF90ZXN0c19kaXJlY3RvcnksIGZpbGUpCi0g
ICAgICAgIG1vY2tfZmlsZXN5c3RlbS5maWxlc1tmaWxlX3BhdGhdID0gJycKKyAgICAgICAgZmls
ZV9wYXRoID0gaG9zdC5maWxlc3lzdGVtLmpvaW4obGF5b3V0X3Rlc3RzX2RpcmVjdG9yeSwgZmls
ZSkKKyAgICAgICAgaG9zdC5maWxlc3lzdGVtLmZpbGVzW2ZpbGVfcGF0aF0gPSAnJwogICAgIGZv
ciBmaWxlIGluIHJlc3VsdF9maWxlczoKLSAgICAgICAgZmlsZV9wYXRoID0gbW9ja19maWxlc3lz
dGVtLmpvaW4ocmVzdWx0c19kaXJlY3RvcnksIGZpbGUpCi0gICAgICAgIG1vY2tfZmlsZXN5c3Rl
bS5maWxlc1tmaWxlX3BhdGhdID0gJycKKyAgICAgICAgZmlsZV9wYXRoID0gaG9zdC5maWxlc3lz
dGVtLmpvaW4ocmVzdWx0c19kaXJlY3RvcnksIGZpbGUpCisgICAgICAgIGhvc3QuZmlsZXN5c3Rl
bS5maWxlc1tmaWxlX3BhdGhdID0gJycKIAogICAgIGNsYXNzIFRlc3RNYWNQb3J0KFdlYktpdFBv
cnQpOgogICAgICAgICBwb3J0X25hbWUgPSAibWFjIgotICAgICAgICBkZWYgX19pbml0X18oc2Vs
Zik6Ci0gICAgICAgICAgICBXZWJLaXRQb3J0Ll9faW5pdF9fKHNlbGYsIGZpbGVzeXN0ZW09bW9j
a19maWxlc3lzdGVtLCBob3N0PU1vY2tIb3N0KCkpCiAKICAgICByZXR1cm4gVGVzdENvbmZpZygK
LSAgICAgICAgVGVzdE1hY1BvcnQoKSwKKyAgICAgICAgVGVzdE1hY1BvcnQoaG9zdCksCiAgICAg
ICAgIGxheW91dF90ZXN0c19kaXJlY3RvcnksCiAgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5LAog
ICAgICAgICAoJ21hYycsICdtYWMtbGVvcGFyZCcsICd3aW4nLCAnbGludXgnKSwKLSAgICAgICAg
bW9ja19maWxlc3lzdGVtLAotICAgICAgICBNb2NrU0NNKCkpCisgICAgICAgIGhvc3QuZmlsZXN5
c3RlbSwKKyAgICAgICAgaG9zdC5zY20oKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>