<?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>138958</bug_id>
          
          <creation_ts>2014-11-21 03:30:00 -0800</creation_ts>
          <short_desc>[meta] Run http tests parallel</short_desc>
          <delta_ts>2014-12-06 22:17:45 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=139225</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=139226</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=139279</see_also>
          <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>136722</dependson>
    
    <dependson>138583</dependson>
    
    <dependson>138894</dependson>
    
    <dependson>138959</dependson>
    
    <dependson>139135</dependson>
    
    <dependson>139149</dependson>
    
    <dependson>139243</dependson>
    
    <dependson>139347</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>glenn</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1050417</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-11-21 03:30:00 -0800</bug_when>
    <thetext>It is a meta bug to collect issues related to running http tests parallel.
The final goal is to be able run them parallel as the other tests everywhere
and be able remove the complex logic needed to serialize only http tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052229</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-12-03 11:34:07 -0800</bug_when>
    <thetext>I think that we are ready to flip the switch (at least on Mac), but I can&apos;t figure out which switch to flip.

There are still some failures when running with --fully-parallel, but they should not affect normal mode, as far as I can tell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052242</commentid>
    <comment_count>2</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-12-03 12:01:14 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; I think that we are ready to flip the switch (at least on Mac), but I can&apos;t
&gt; figure out which switch to flip.
&gt; 
&gt; There are still some failures when running with --fully-parallel, but they
&gt; should not affect normal mode, as far as I can tell.

&quot;-f, --fully-parallel - run all tests in parallel&quot;

Ah, this help message is a little bit confusing.

Tests are sharded by subdirectories, leaf subdirectories are atomic 
and can&apos;t be distributed to different threads by default. Threads
pick up shards from the queue.

This fully parallel option disables sharding and each 
threads can pick up tests from the queue instead of shards.
I think we aren&apos;t ready for it yet, but it can reveal many
flakiness. It would be a good expetiment.

Back to parallel http test running. Now http and perf tests are considered as locked tests and locked tests run on 1 thread by default. You can easily override it with: --max-locked-shards command line option or WEBKIT_TEST_MAX_
LOCKED_SHARDS. (cmdline is the stronger one) The default option is defined to 1 in base.py in default_max_locked_shards. First we can override it for ports one by one. And then in base.py once it is stable everywhere. The ideal number would be the same as default_child_processes, but it depends on how much concurrent request can be served by the http server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052252</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-12-03 12:36:35 -0800</bug_when>
    <thetext>The question is how do I make HTTP tests parallel while keeping perf tests non-parallel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052282</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-12-03 13:42:05 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; The question is how do I make HTTP tests parallel while keeping perf tests
&gt; non-parallel.

I think the easiest way is what I suggested in bug136722 - run them in
a different buildstep on the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052285</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-12-03 13:45:06 -0800</bug_when>
    <thetext>One more thing. perf tests can run parallel now with non perf tests. If
we increasw max_locked_shards, they will run parallel with more http test
thread instead of random non-http test. But 2 perf test won&apos;t run parallel,
because they are in the same shard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052607</commentid>
    <comment_count>6</comment_count>
      <attachid>242595</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-12-04 16:06:15 -0800</bug_when>
    <thetext>Created attachment 242595
proposed patch

This makes debug tests run in 8 minutes and 12 seconds on my Mac Pro. Without the patch, they used to take over 15 minutes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052617</commentid>
    <comment_count>7</comment_count>
      <attachid>242595</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-12-04 16:48:09 -0800</bug_when>
    <thetext>Comment on attachment 242595
proposed patch

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

Looks sane to me.

&gt; Tools/ChangeLog:17
&gt; +        think that these parameters do what we wanted them to do; Apache handles the load

Nit: do =&gt; did

Or

wanted =&gt; want</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052620</commentid>
    <comment_count>8</comment_count>
      <attachid>242599</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-12-04 16:58:32 -0800</bug_when>
    <thetext>Created attachment 242599
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052636</commentid>
    <comment_count>9</comment_count>
      <attachid>242599</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-04 17:36:33 -0800</bug_when>
    <thetext>Comment on attachment 242599
patch for landing

Clearing flags on attachment: 242599

Committed r176830: &lt;http://trac.webkit.org/changeset/176830&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052637</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-04 17:36:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242595</attachid>
            <date>2014-12-04 16:06:15 -0800</date>
            <delta_ts>2014-12-04 16:58:32 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>ParallelHTTP.txt</filename>
            <type>text/plain</type>
            <size>38066</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE3NjgyMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDg4IEBACisyMDE0LTEyLTA0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIFJ1biBodHRwIHRlc3RzIHBhcmFsbGVsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg5NTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGNvbmNlcHQgb2YgImxvY2tl
ZCBzaGFyZCIuIE5vdyBodHRwIHRlc3RzIGFyZSBqdXN0IGxpa2UgYW55IG90aGVyIHRlc3RzLgor
ICAgICAgICBXZSBzdGFydCBIVFRQIGFuZCBXZWJTb2NrZXQgc2VydmVycyBhdCB0aGUgc3RhcnQg
aWYgd2UgbmVlZCB0aGVtLCBhbmQgdGVybWluYXRlIHRoZW0KKyAgICAgICAgd2hlbiBkb25lIHdp
dGggYWxsIHRoZSB0ZXN0cyAobm90IHdoZW4gdGhlIGxhc3QgaHR0cCB0ZXN0IHJ1bnMsIHdoaWNo
IGlzIHVubmVjZXNzYXJpbHkKKyAgICAgICAgdW5wcmVkaWN0YWJsZSkuCisKKyAgICAgICAgVGhp
cyBtYWtlcyBkZWJ1ZyB0ZXN0cyBydW4gaW4gOCBtaW51dGVzIGFuZCAxMiBzZWNvbmRzIG9uIG15
IE1hYyBQcm8uIFdpdGhvdXQgdGhlCisgICAgICAgIHBhdGNoLCB0aGV5IHVzZWQgdG8gdGFrZSBv
dmVyIDE1IG1pbnV0ZXMuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGUgZml4LCB3ZSBubyBsb25n
ZXIgcGFzcyB0aGUgbnVtYmVyIG9mIHNlcnZlcnMgdG8gQXBhY2hlLiBJIGRvbid0CisgICAgICAg
IHRoaW5rIHRoYXQgdGhlc2UgcGFyYW1ldGVycyBkbyB3aGF0IHdlIHdhbnRlZCB0aGVtIHRvIGRv
OyBBcGFjaGUgaGFuZGxlcyB0aGUgbG9hZAorICAgICAgICBqdXN0IGZpbmUgd2l0aG91dCB0aGVt
LgorCisgICAgICAgIFRoZSBjaGFuZ2UgYXBwbGllcyB0byBhbGwgcGxhdGZvcm1zLiBJIGZpeGVk
IGV2ZXJ5dGhpbmcgSSBjb3VsZCBmaW5kIG9uIE1hYywgYW5kCisgICAgICAgIE9zc3kgdG9sZCBt
ZSB0aGF0IGhlJ3MgYmVlbiBydW5uaW5nIGh0dHAgdGVzdHMgaW4gcGFyYWxsZWwgZm9yIGEgbG9u
ZyB0aW1lLiBJZgorICAgICAgICB0aGVyZSBpcyBpbmNyZWFzZWQgaW5zdGFiaWxpdHkgZm9yIHNv
bWUgcG9ydHMsIGl0IHdpbGwgbmVlZCB0byBiZSBmaXhlZCAtIHRoZXJlIGlzCisgICAgICAgIGdl
bmVyYWxseSBub3RoaW5nIHNwZWNpYWwgYWJvdXQgaHR0cCB0ZXN0cyBhdCB0aGlzIHBvaW50LCBh
bmQgbW9zdCBjb2RlIGlzCisgICAgICAgIGNyb3NzLXBsYXRmb3JtIGluIFdlYktpdDIuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRf
dGVzdF9ydW5uZXIucHk6CisgICAgICAgIChMYXlvdXRUZXN0UnVubmVyLl9faW5pdF9fKToKKyAg
ICAgICAgKExheW91dFRlc3RSdW5uZXIucnVuX3Rlc3RzKToKKyAgICAgICAgKExheW91dFRlc3RS
dW5uZXIuc3RhcnRfc2VydmVyc193aXRoX2xvY2spOgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5l
ci5faGFuZGxlX3N0YXJ0ZWRfdGVzdCk6CisgICAgICAgIChXb3JrZXIuaGFuZGxlKToKKyAgICAg
ICAgKFNoYXJkZXIuX19pbml0X18pOgorICAgICAgICAoU2hhcmRlci5zaGFyZF90ZXN0cyk6Cisg
ICAgICAgIChTaGFyZGVyLl9zaGFyZF9ldmVyeV9maWxlKToKKyAgICAgICAgKFNoYXJkZXIuX3No
YXJkX2J5X2RpcmVjdG9yeSk6CisgICAgICAgIChMYXlvdXRUZXN0UnVubmVyLl9oYW5kbGVfZmlu
aXNoZWRfdGVzdF9saXN0KTogRGVsZXRlZC4KKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX2hh
bmRsZV9maW5pc2hlZF90ZXN0X2xpc3QuZmluZCk6IERlbGV0ZWQuCisgICAgICAgIChTaGFyZGVy
Ll9zaGFyZF9pbl90d28pOiBEZWxldGVkLgorICAgICAgICAoU2hhcmRlcik6IERlbGV0ZWQuCisg
ICAgICAgIChTaGFyZGVyLl9yZXNpemVfc2hhcmRzKTogRGVsZXRlZC4KKyAgICAgICAgKFNoYXJk
ZXIuX3Jlc2l6ZV9zaGFyZHMuZGl2aWRlX2FuZF9yb3VuZF91cCk6IERlbGV0ZWQuCisgICAgICAg
IChTaGFyZGVyLl9yZXNpemVfc2hhcmRzLmV4dHJhY3RfYW5kX2ZsYXR0ZW4pOiBEZWxldGVkLgor
ICAgICAgICAoU2hhcmRlci5fcmVzaXplX3NoYXJkcy5zcGxpdF9hdCk6IERlbGV0ZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rl
c3RfcnVubmVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoRmFrZVByaW50ZXIucHJpbnRfd29ya2Vy
c19hbmRfc2hhcmRzKToKKyAgICAgICAgKExheW91dFRlc3RSdW5uZXJUZXN0cy50ZXN0X3NlcnZl
cnNfc3RhcnRlZC5zdGFydF9odHRwX3NlcnZlcik6CisgICAgICAgIChMYXlvdXRUZXN0UnVubmVy
VGVzdHMudGVzdF9zZXJ2ZXJzX3N0YXJ0ZWQpOgorICAgICAgICAoU2hhcmRlclRlc3RzLmdldF9z
aGFyZHMpOgorICAgICAgICAoU2hhcmRlclRlc3RzLnRlc3Rfc2hhcmRfYnlfZGlyKToKKyAgICAg
ICAgKFNoYXJkZXJUZXN0cy50ZXN0X3NoYXJkX2V2ZXJ5X2ZpbGUpOgorICAgICAgICAoU2hhcmRl
clRlc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKFNoYXJkZXJUZXN0cy50ZXN0X3NoYXJkX2luX3R3
byk6IERlbGV0ZWQuCisgICAgICAgIChTaGFyZGVyVGVzdHMudGVzdF9zaGFyZF9pbl90d29faGFz
X25vX2xvY2tlZF9zaGFyZHMpOiBEZWxldGVkLgorICAgICAgICAoU2hhcmRlclRlc3RzLnRlc3Rf
c2hhcmRfaW5fdHdvX2hhc19ub191bmxvY2tlZF9zaGFyZHMpOiBEZWxldGVkLgorICAgICAgICAo
U2hhcmRlclRlc3RzLnRlc3RfbXVsdGlwbGVfbG9ja2VkX3NoYXJkcyk6IERlbGV0ZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91
bml0dGVzdC5weToKKyAgICAgICAgKE1hbmFnZXJUZXN0LnRlc3RfbmVlZHNfc2VydmVycy5nZXRf
bWFuYWdlcik6CisgICAgICAgIChNYW5hZ2VyVGVzdC5pbnRlZ3JhdGlvbl90ZXN0X25lZWRzX3Nl
cnZlcnMuZ2V0X21hbmFnZXIpOgorICAgICAgICAoTWFuYWdlclRlc3QudGVzdF9sb29rX2Zvcl9u
ZXdfY3Jhc2hfbG9ncy5nZXRfbWFuYWdlcik6CisgICAgICAgIChNYW5hZ2VyVGVzdCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToK
KyAgICAgICAgKF9zZXRfdXBfZGVyaXZlZF9vcHRpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weToK
KyAgICAgICAgKFJ1blRlc3QudGVzdF9iYXRjaF9zaXplKToKKyAgICAgICAgKFJ1blRlc3QudGVz
dF9tYXhfbG9ja2VkX3NoYXJkcyk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHk6CisgICAgICAgIChM
YXlvdXRUZXN0QXBhY2hlSHR0cGQuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAoVGVzdExheW91dFRlc3RBcGFjaGVIdHRwZC50ZXN0X3N0YXJ0X2NtZCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlci5w
eToKKyAgICAgICAgKExpZ2h0dHBkLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHk6CisgICAgICAgIChI
dHRwU2VydmVyQmFzZS5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvdmlld3MvcHJpbnRpbmcucHk6CisgICAgICAgIChQcmludGVyLnByaW50X3dvcmtl
cnNfYW5kX3NoYXJkcyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6
CisgICAgICAgIChQb3J0LmRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKToKKyAgICAgICAgKFBvcnQu
dG8uc3RhcnRfaHR0cF9zZXJ2ZXIpOgorICAgICAgICAoUG9ydC5kZWZhdWx0X21heF9sb2NrZWRf
c2hhcmRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90
ZXN0Y2FzZS5weToKKyAgICAgICAgKFBvcnRUZXN0Q2FzZS5tYWtlX3BvcnQpOgorICAgICAgICAo
UG9ydFRlc3RDYXNlLnRlc3RfZGVmYXVsdF9tYXhfbG9ja2VkX3NoYXJkcyk6IERlbGV0ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHk6CisgICAgICAgIChUZXN0UG9y
dC5zdGFydF9odHRwX3NlcnZlcik6CisKIDIwMTQtMTItMDQgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgbG9jayBwZXJmIHRlc3RzIGluIHJ1bi13
ZWJraXQtdGVzdHMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQkocmV2aXNpb24gMTc2NzI1KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQkod29y
a2luZyBjb3B5KQpAQCAtMzMxLDkgKzMzMSw2IEBAIGRlZiBfc2V0X3VwX2Rlcml2ZWRfb3B0aW9u
cyhwb3J0LCBvcHRpb24KICAgICBpZiBub3Qgb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXM6CiAgICAg
ICAgIG9wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9URVNU
X0NISUxEX1BST0NFU1NFUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyKHBvcnQuZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoKSkpCi0gICAgaWYg
bm90IG9wdGlvbnMubWF4X2xvY2tlZF9zaGFyZHM6Ci0gICAgICAgIG9wdGlvbnMubWF4X2xvY2tl
ZF9zaGFyZHMgPSBpbnQob3MuZW52aXJvbi5nZXQoIldFQktJVF9URVNUX01BWF9MT0NLRURfU0hB
UkRTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHIocG9ydC5kZWZhdWx0X21heF9sb2NrZWRfc2hhcmRzKCkpKSkKIAogICAgIGlmIG5v
dCBvcHRpb25zLmNvbmZpZ3VyYXRpb246CiAgICAgICAgIG9wdGlvbnMuY29uZmlndXJhdGlvbiA9
IHBvcnQuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CShyZXZpc2lvbiAxNzY4MTQpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMjI0LDIxICsyMjQsNiBAQCBjbGFzcyBSdW5UZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlLCBTdHJlYW1UCiAgICAgICAgIGZvciBiYXRjaCBpbiBiYXRjaF90ZXN0
c19ydW46CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGJhdGNoKSA8PSAyLCAnJXMg
aGFkIHRvbyBtYW55IHRlc3RzJyAlICcsICcuam9pbihiYXRjaCkpCiAKLSAgICBkZWYgdGVzdF9t
YXhfbG9ja2VkX3NoYXJkcyhzZWxmKToKLSAgICAgICAgIyBUZXN0cyBmb3IgdGhlIGRlZmF1bHQg
b2YgdXNpbmcgb25lIGxvY2tlZCBzaGFyZCBldmVuIGluIHRoZSBjYXNlIG9mIG1vcmUgdGhhbiBv
bmUgY2hpbGQgcHJvY2Vzcy4KLSAgICAgICAgaWYgbm90IHNlbGYuc2hvdWxkX3Rlc3RfcHJvY2Vz
c2VzOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNhdmVfZW52X3dlYmtpdF90ZXN0X21h
eF9sb2NrZWRfc2hhcmRzID0gTm9uZQotICAgICAgICBpZiAiV0VCS0lUX1RFU1RfTUFYX0xPQ0tF
RF9TSEFSRFMiIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICBzYXZlX2Vudl93ZWJraXRfdGVz
dF9tYXhfbG9ja2VkX3NoYXJkcyA9IG9zLmVudmlyb25bIldFQktJVF9URVNUX01BWF9MT0NLRURf
U0hBUkRTIl0KLSAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uWyJXRUJLSVRfVEVTVF9NQVhfTE9D
S0VEX1NIQVJEUyJdCi0gICAgICAgIF8sIHJlZ3VsYXJfb3V0cHV0LCBfID0gbG9nZ2luZ19ydW4o
WyctLWRlYnVnLXJ3dC1sb2dnaW5nJywgJy0tY2hpbGQtcHJvY2Vzc2VzJywgJzInXSwgc2hhcmVk
X3BvcnQ9RmFsc2UpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShh
bnkoWycxIGxvY2tlZCcgaW4gbGluZSBmb3IgbGluZSBpbiByZWd1bGFyX291dHB1dC5idWZsaXN0
XSkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBzYXZlX2Vudl93ZWJraXRfdGVz
dF9tYXhfbG9ja2VkX3NoYXJkczoKLSAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWyJXRUJLSVRf
VEVTVF9NQVhfTE9DS0VEX1NIQVJEUyJdID0gc2F2ZV9lbnZfd2Via2l0X3Rlc3RfbWF4X2xvY2tl
ZF9zaGFyZHMKLQogICAgIGRlZiB0ZXN0X2NoaWxkX3Byb2Nlc3Nlc18yKHNlbGYpOgogICAgICAg
ICBpZiBzZWxmLnNob3VsZF90ZXN0X3Byb2Nlc3NlczoKICAgICAgICAgICAgIF8sIHJlZ3VsYXJf
b3V0cHV0LCBfID0gbG9nZ2luZ19ydW4oCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0
X3Rlc3RfcnVubmVyLnB5CShyZXZpc2lvbiAxNzY4MTQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgY2xhc3MgTGF5b3V0VGVzdFJ1bm5lcihvYmplY3Qp
OgogICAgICAgICBzZWxmLl9wcmludGVyID0gcHJpbnRlcgogICAgICAgICBzZWxmLl9yZXN1bHRz
X2RpcmVjdG9yeSA9IHJlc3VsdHNfZGlyZWN0b3J5CiAgICAgICAgIHNlbGYuX3Rlc3RfaXNfc2xv
dyA9IHRlc3RfaXNfc2xvd19mbgotICAgICAgICBzZWxmLl9zaGFyZGVyID0gU2hhcmRlcihzZWxm
Ll9wb3J0LnNwbGl0X3Rlc3QsIHNlbGYuX29wdGlvbnMubWF4X2xvY2tlZF9zaGFyZHMpCisgICAg
ICAgIHNlbGYuX3NoYXJkZXIgPSBTaGFyZGVyKHNlbGYuX3BvcnQuc3BsaXRfdGVzdCkKICAgICAg
ICAgc2VsZi5fZmlsZXN5c3RlbSA9IHNlbGYuX3BvcnQuaG9zdC5maWxlc3lzdGVtCiAKICAgICAg
ICAgc2VsZi5fZXhwZWN0YXRpb25zID0gTm9uZQpAQCAtNzcsNyArNzcsNiBAQCBjbGFzcyBMYXlv
dXRUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3JldHJ5aW5nID0gRmFsc2UKIAog
ICAgICAgICBzZWxmLl9jdXJyZW50X3J1bl9yZXN1bHRzID0gTm9uZQotICAgICAgICBzZWxmLl9y
ZW1haW5pbmdfbG9ja2VkX3NoYXJkcyA9IFtdCiAgICAgICAgIHNlbGYuX2hhc19odHRwX2xvY2sg
PSBGYWxzZQogCiAgICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCBleHBlY3RhdGlvbnMsIHRlc3RfaW5w
dXRzLCB0ZXN0c190b19za2lwLCBudW1fd29ya2VycywgbmVlZHNfaHR0cCwgbmVlZHNfd2Vic29j
a2V0cywgcmV0cnlpbmcpOgpAQCAtOTAsNyArODksNiBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVy
KG9iamVjdCk6CiAgICAgICAgICMgRklYTUU6IHJlbmFtZSBhbGwgdmFyaWFibGVzIHRvIHRlc3Rf
cnVuX3Jlc3VsdHMgb3Igc29tZSBzdWNoIC4uLgogICAgICAgICBydW5fcmVzdWx0cyA9IFRlc3RS
dW5SZXN1bHRzKHNlbGYuX2V4cGVjdGF0aW9ucywgbGVuKHRlc3RfaW5wdXRzKSArIGxlbih0ZXN0
c190b19za2lwKSkKICAgICAgICAgc2VsZi5fY3VycmVudF9ydW5fcmVzdWx0cyA9IHJ1bl9yZXN1
bHRzCi0gICAgICAgIHNlbGYuX3JlbWFpbmluZ19sb2NrZWRfc2hhcmRzID0gW10KICAgICAgICAg
c2VsZi5faGFzX2h0dHBfbG9jayA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3ByaW50ZXIubnVtX3Rl
c3RzID0gbGVuKHRlc3RfaW5wdXRzKQogICAgICAgICBzZWxmLl9wcmludGVyLm51bV9zdGFydGVk
ID0gMApAQCAtMTA0LDIzICsxMDIsMTMgQEAgY2xhc3MgTGF5b3V0VGVzdFJ1bm5lcihvYmplY3Qp
OgogICAgICAgICAgICAgcnVuX3Jlc3VsdHMuYWRkKHJlc3VsdCwgZXhwZWN0ZWQ9VHJ1ZSwgdGVz
dF9pc19zbG93PXNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X25hbWUpKQogCiAgICAgICAgIHNlbGYu
X3ByaW50ZXIud3JpdGVfdXBkYXRlKCdTaGFyZGluZyB0ZXN0cyAuLi4nKQotICAgICAgICBsb2Nr
ZWRfc2hhcmRzLCB1bmxvY2tlZF9zaGFyZHMgPSBzZWxmLl9zaGFyZGVyLnNoYXJkX3Rlc3RzKHRl
c3RfaW5wdXRzLCBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpLCBzZWxmLl9vcHRp
b25zLmZ1bGx5X3BhcmFsbGVsKQorICAgICAgICBhbGxfc2hhcmRzID0gc2VsZi5fc2hhcmRlci5z
aGFyZF90ZXN0cyh0ZXN0X2lucHV0cywgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2Vz
KSwgc2VsZi5fb3B0aW9ucy5mdWxseV9wYXJhbGxlbCkKIAotICAgICAgICAjIEZJWE1FOiBXZSBk
b24ndCBoYXZlIGEgZ29vZCB3YXkgdG8gY29vcmRpbmF0ZSB0aGUgd29ya2VycyBzbyB0aGF0Ci0g
ICAgICAgICMgdGhleSBkb24ndCB0cnkgdG8gcnVuIHRoZSBzaGFyZHMgdGhhdCBuZWVkIGEgbG9j
ayBpZiB3ZSBkb24ndCBhY3R1YWxseQotICAgICAgICAjIGhhdmUgdGhlIGxvY2suIFRoZSBlYXNp
ZXN0IHNvbHV0aW9uIGF0IHRoZSBtb21lbnQgaXMgdG8gZ3JhYiB0aGUKLSAgICAgICAgIyBsb2Nr
IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJ1biwgYW5kIHRoZW4gcnVuIGFsbCBvZiB0aGUgbG9j
a2VkCi0gICAgICAgICMgc2hhcmRzIGZpcnN0LiBUaGlzIG1pbmltaXplcyB0aGUgdGltZSBzcGVu
dCBob2xkaW5nIHRoZSBsb2NrLCBidXQKLSAgICAgICAgIyBtZWFucyB0aGF0IHdlIHdvbid0IGJl
IHJ1bm5pbmcgdGVzdHMgd2hpbGUgd2UncmUgd2FpdGluZyBmb3IgdGhlIGxvY2suCi0gICAgICAg
ICMgSWYgdGhpcyBiZWNvbWVzIGEgcHJvYmxlbSBpbiBwcmFjdGljZSB3ZSdsbCBuZWVkIHRvIGNo
YW5nZSB0aGlzLgotCi0gICAgICAgIGFsbF9zaGFyZHMgPSBsb2NrZWRfc2hhcmRzICsgdW5sb2Nr
ZWRfc2hhcmRzCi0gICAgICAgIHNlbGYuX3JlbWFpbmluZ19sb2NrZWRfc2hhcmRzID0gbG9ja2Vk
X3NoYXJkcwotICAgICAgICBpZiBsb2NrZWRfc2hhcmRzIGFuZCBzZWxmLl9vcHRpb25zLmh0dHA6
Ci0gICAgICAgICAgICBzZWxmLnN0YXJ0X3NlcnZlcnNfd2l0aF9sb2NrKDIgKiBtaW4obnVtX3dv
cmtlcnMsIGxlbihsb2NrZWRfc2hhcmRzKSkpCisgICAgICAgIGlmIHNlbGYuX25lZWRzX2h0dHAg
YW5kIHNlbGYuX29wdGlvbnMuaHR0cDoKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfc2VydmVyc193
aXRoX2xvY2soKQogCiAgICAgICAgIG51bV93b3JrZXJzID0gbWluKG51bV93b3JrZXJzLCBsZW4o
YWxsX3NoYXJkcykpCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfd29ya2Vyc19hbmRfc2hh
cmRzKG51bV93b3JrZXJzLCBsZW4oYWxsX3NoYXJkcyksIGxlbihsb2NrZWRfc2hhcmRzKSkKKyAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF93b3JrZXJzX2FuZF9zaGFyZHMobnVtX3dvcmtlcnMs
IGxlbihhbGxfc2hhcmRzKSkKIAogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmRyeV9ydW46CiAg
ICAgICAgICAgICByZXR1cm4gcnVuX3Jlc3VsdHMKQEAgLTE5NywxMiArMTg1LDEyIEBAIGNsYXNz
IExheW91dFRlc3RSdW5uZXIob2JqZWN0KToKIAogICAgICAgICBzZWxmLl9pbnRlcnJ1cHRfaWZf
YXRfZmFpbHVyZV9saW1pdHMocnVuX3Jlc3VsdHMpCiAKLSAgICBkZWYgc3RhcnRfc2VydmVyc193
aXRoX2xvY2soc2VsZiwgbnVtYmVyX29mX3NlcnZlcnMpOgorICAgIGRlZiBzdGFydF9zZXJ2ZXJz
X3dpdGhfbG9jayhzZWxmKToKICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoJ0Fj
cXVpcmluZyBodHRwIGxvY2sgLi4uJykKICAgICAgICAgc2VsZi5fcG9ydC5hY3F1aXJlX2h0dHBf
bG9jaygpCiAgICAgICAgIGlmIHNlbGYuX25lZWRzX2h0dHA6CiAgICAgICAgICAgICBzZWxmLl9w
cmludGVyLndyaXRlX3VwZGF0ZSgnU3RhcnRpbmcgSFRUUCBzZXJ2ZXIgLi4uJykKLSAgICAgICAg
ICAgIHNlbGYuX3BvcnQuc3RhcnRfaHR0cF9zZXJ2ZXIobnVtYmVyX29mX3NlcnZlcnM9bnVtYmVy
X29mX3NlcnZlcnMpCisgICAgICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X2h0dHBfc2VydmVyKCkK
ICAgICAgICAgaWYgc2VsZi5fbmVlZHNfd2Vic29ja2V0czoKICAgICAgICAgICAgIHNlbGYuX3By
aW50ZXIud3JpdGVfdXBkYXRlKCdTdGFydGluZyBXZWJTb2NrZXQgc2VydmVyIC4uLicpCiAgICAg
ICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X3dlYnNvY2tldF9zZXJ2ZXIoKQpAQCAtMjI5LDE5ICsy
MTcsNiBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgZGVmIF9oYW5kbGVf
c3RhcnRlZF90ZXN0KHNlbGYsIHdvcmtlcl9uYW1lLCB0ZXN0X2lucHV0LCB0ZXN0X3RpbWVvdXRf
c2VjKToKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9zdGFydGVkX3Rlc3QodGVzdF9pbnB1
dC50ZXN0X25hbWUpCiAKLSAgICBkZWYgX2hhbmRsZV9maW5pc2hlZF90ZXN0X2xpc3Qoc2VsZiwg
d29ya2VyX25hbWUsIGxpc3RfbmFtZSk6Ci0gICAgICAgIGRlZiBmaW5kKG5hbWUsIHRlc3RfbGlz
dHMpOgotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHRlc3RfbGlzdHMpKToKLSAgICAg
ICAgICAgICAgICBpZiB0ZXN0X2xpc3RzW2ldLm5hbWUgPT0gbmFtZToKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGkKLSAgICAgICAgICAgIHJldHVybiAtMQotCi0gICAgICAgIGluZGV4ID0g
ZmluZChsaXN0X25hbWUsIHNlbGYuX3JlbWFpbmluZ19sb2NrZWRfc2hhcmRzKQotICAgICAgICBp
ZiBpbmRleCA+PSAwOgotICAgICAgICAgICAgc2VsZi5fcmVtYWluaW5nX2xvY2tlZF9zaGFyZHMu
cG9wKGluZGV4KQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3JlbWFpbmluZ19sb2NrZWRfc2hh
cmRzOgotICAgICAgICAgICAgICAgIHNlbGYuc3RvcF9zZXJ2ZXJzX3dpdGhfbG9jaygpCi0KICAg
ICBkZWYgX2hhbmRsZV9maW5pc2hlZF90ZXN0KHNlbGYsIHdvcmtlcl9uYW1lLCByZXN1bHQsIGxv
Z19tZXNzYWdlcz1bXSk6CiAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0
KHNlbGYuX2N1cnJlbnRfcnVuX3Jlc3VsdHMsIHJlc3VsdCkKIApAQCAtMjgxLDcgKzI1Niw2IEBA
IGNsYXNzIFdvcmtlcihvYmplY3QpOgogICAgICAgICBhc3NlcnQgbmFtZSA9PSAndGVzdF9saXN0
JwogICAgICAgICBmb3IgdGVzdF9pbnB1dCBpbiB0ZXN0X2lucHV0czoKICAgICAgICAgICAgIHNl
bGYuX3J1bl90ZXN0KHRlc3RfaW5wdXQsIHRlc3RfbGlzdF9uYW1lKQotICAgICAgICBzZWxmLl9j
YWxsZXIucG9zdCgnZmluaXNoZWRfdGVzdF9saXN0JywgdGVzdF9saXN0X25hbWUpCiAKICAgICBk
ZWYgX3VwZGF0ZV90ZXN0X2lucHV0KHNlbGYsIHRlc3RfaW5wdXQpOgogICAgICAgICBpZiB0ZXN0
X2lucHV0LnJlZmVyZW5jZV9maWxlcyBpcyBOb25lOgpAQCAtNDUyLDkgKzQyNiw4IEBAIGNsYXNz
IFRlc3RTaGFyZChvYmplY3QpOgogCiAKIGNsYXNzIFNoYXJkZXIob2JqZWN0KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgdGVzdF9zcGxpdF9mbiwgbWF4X2xvY2tlZF9zaGFyZHMpOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCB0ZXN0X3NwbGl0X2ZuKToKICAgICAgICAgc2VsZi5fc3BsaXQgPSB0
ZXN0X3NwbGl0X2ZuCi0gICAgICAgIHNlbGYuX21heF9sb2NrZWRfc2hhcmRzID0gbWF4X2xvY2tl
ZF9zaGFyZHMKIAogICAgIGRlZiBzaGFyZF90ZXN0cyhzZWxmLCB0ZXN0X2lucHV0cywgbnVtX3dv
cmtlcnMsIGZ1bGx5X3BhcmFsbGVsKToKICAgICAgICAgIiIiR3JvdXBzIHRlc3RzIGludG8gYmF0
Y2hlcy4KQEAgLTQ2Miw2NCArNDM1LDM3IEBAIGNsYXNzIFNoYXJkZXIob2JqZWN0KToKICAgICAg
ICAgY29udGludWUgdG8gcnVuIHRvZ2V0aGVyIGFzIG1vc3QgY3Jvc3MtdGVzdHMgZGVwZW5kZW5j
aWVzIHRlbmQgdG8KICAgICAgICAgb2NjdXIgd2l0aGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KICAg
ICAgICAgUmV0dXJuOgotICAgICAgICAgICAgVHdvIGxpc3Qgb2YgVGVzdFNoYXJkcy4gVGhlIGZp
cnN0IGNvbnRhaW5zIHRlc3RzIHRoYXQgbXVzdCBvbmx5IGJlCi0gICAgICAgICAgICBydW4gdW5k
ZXIgdGhlIHNlcnZlciBsb2NrLCB0aGUgc2Vjb25kIGNhbiBiZSBydW4gd2hlbmV2ZXIuCisgICAg
ICAgICAgICBBIGxpc3Qgb2YgVGVzdFNoYXJkcy4KICAgICAgICAgIiIiCiAKICAgICAgICAgIyBG
SVhNRTogTW92ZSBhbGwgb2YgdGhlIHNoYXJkaW5nIGxvZ2ljIG91dCBvZiBtYW5hZ2VyIGludG8g
aXRzCiAgICAgICAgICMgb3duIGNsYXNzIG9yIG1vZHVsZS4gQ29uc2lkZXIgZ3JvdXBpbmcgaXQg
d2l0aCB0aGUgY2h1bmtpbmcgbG9naWMKICAgICAgICAgIyBpbiBwcmVwYXJlX2xpc3RzIGFzIHdl
bGwuCiAgICAgICAgIGlmIG51bV93b3JrZXJzID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fc2hhcmRfaW5fdHdvKHRlc3RfaW5wdXRzKQorICAgICAgICAgICAgcmV0dXJuIFtUZXN0U2hh
cmQoJ2FsbF90ZXN0cycsIHRlc3RfaW5wdXRzKV0KICAgICAgICAgZWxpZiBmdWxseV9wYXJhbGxl
bDoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9zaGFyZF9ldmVyeV9maWxlKHRlc3RfaW5wdXRz
KQogICAgICAgICByZXR1cm4gc2VsZi5fc2hhcmRfYnlfZGlyZWN0b3J5KHRlc3RfaW5wdXRzLCBu
dW1fd29ya2VycykKIAotICAgIGRlZiBfc2hhcmRfaW5fdHdvKHNlbGYsIHRlc3RfaW5wdXRzKToK
LSAgICAgICAgIiIiUmV0dXJucyB0d28gbGlzdHMgb2Ygc2hhcmRzLCBvbmUgd2l0aCBhbGwgdGhl
IHRlc3RzIHJlcXVpcmluZyBhIGxvY2sgYW5kIG9uZSB3aXRoIHRoZSByZXN0LgotCi0gICAgICAg
IFRoaXMgaXMgdXNlZCB3aGVuIHRoZXJlJ3Mgb25seSBvbmUgd29ya2VyLCB0byBtaW5pbWl6ZSB0
aGUgcGVyLXNoYXJkIG92ZXJoZWFkLiIiIgotICAgICAgICBsb2NrZWRfaW5wdXRzID0gW10KLSAg
ICAgICAgdW5sb2NrZWRfaW5wdXRzID0gW10KLSAgICAgICAgZm9yIHRlc3RfaW5wdXQgaW4gdGVz
dF9pbnB1dHM6Ci0gICAgICAgICAgICBpZiB0ZXN0X2lucHV0Lm5lZWRzX3NlcnZlcnM6Ci0gICAg
ICAgICAgICAgICAgbG9ja2VkX2lucHV0cy5hcHBlbmQodGVzdF9pbnB1dCkKLSAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgdW5sb2NrZWRfaW5wdXRzLmFwcGVuZCh0ZXN0X2lucHV0
KQotCi0gICAgICAgIGxvY2tlZF9zaGFyZHMgPSBbXQotICAgICAgICB1bmxvY2tlZF9zaGFyZHMg
PSBbXQotICAgICAgICBpZiBsb2NrZWRfaW5wdXRzOgotICAgICAgICAgICAgbG9ja2VkX3NoYXJk
cyA9IFtUZXN0U2hhcmQoJ2xvY2tlZF90ZXN0cycsIGxvY2tlZF9pbnB1dHMpXQotICAgICAgICBp
ZiB1bmxvY2tlZF9pbnB1dHM6Ci0gICAgICAgICAgICB1bmxvY2tlZF9zaGFyZHMgPSBbVGVzdFNo
YXJkKCd1bmxvY2tlZF90ZXN0cycsIHVubG9ja2VkX2lucHV0cyldCi0KLSAgICAgICAgcmV0dXJu
IGxvY2tlZF9zaGFyZHMsIHVubG9ja2VkX3NoYXJkcwotCiAgICAgZGVmIF9zaGFyZF9ldmVyeV9m
aWxlKHNlbGYsIHRlc3RfaW5wdXRzKToKLSAgICAgICAgIiIiUmV0dXJucyB0d28gbGlzdHMgb2Yg
c2hhcmRzLCBlYWNoIHNoYXJkIGNvbnRhaW5pbmcgYSBzaW5nbGUgdGVzdCBmaWxlLgorICAgICAg
ICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBzaGFyZHMsIGVhY2ggc2hhcmQgY29udGFpbmluZyBhIHNp
bmdsZSB0ZXN0IGZpbGUuCiAKICAgICAgICAgVGhpcyBtb2RlIGdldHMgbWF4aW1hbCBwYXJhbGxl
bGlzbSBhdCB0aGUgY29zdCBvZiBtdWNoIGhpZ2hlciBmbGFraW5lc3MuIiIiCi0gICAgICAgIGxv
Y2tlZF9zaGFyZHMgPSBbXQotICAgICAgICB1bmxvY2tlZF9zaGFyZHMgPSBbXQorICAgICAgICBz
aGFyZHMgPSBbXQogICAgICAgICBmb3IgdGVzdF9pbnB1dCBpbiB0ZXN0X2lucHV0czoKICAgICAg
ICAgICAgICMgTm90ZSB0aGF0IHdlIHVzZSBhICcuJyBmb3IgdGhlIHNoYXJkIG5hbWU7IHRoZSBu
YW1lIGRvZXNuJ3QgcmVhbGx5CiAgICAgICAgICAgICAjIG1hdHRlciwgYW5kIHRoZSBvbmx5IG90
aGVyIG1lYW5pbmdmdWwgdmFsdWUgd291bGQgYmUgdGhlIGZpbGVuYW1lLAogICAgICAgICAgICAg
IyB3aGljaCB3b3VsZCBiZSByZWFsbHkgcmVkdW5kYW50LgotICAgICAgICAgICAgaWYgdGVzdF9p
bnB1dC5uZWVkc19zZXJ2ZXJzOgotICAgICAgICAgICAgICAgIGxvY2tlZF9zaGFyZHMuYXBwZW5k
KFRlc3RTaGFyZCgnLicsIFt0ZXN0X2lucHV0XSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgIHVubG9ja2VkX3NoYXJkcy5hcHBlbmQoVGVzdFNoYXJkKCcuJywgW3Rlc3RfaW5w
dXRdKSkKKyAgICAgICAgICAgIHNoYXJkcy5hcHBlbmQoVGVzdFNoYXJkKCcuJywgW3Rlc3RfaW5w
dXRdKSkKIAotICAgICAgICByZXR1cm4gbG9ja2VkX3NoYXJkcywgdW5sb2NrZWRfc2hhcmRzCisg
ICAgICAgIHJldHVybiBzaGFyZHMKIAogICAgIGRlZiBfc2hhcmRfYnlfZGlyZWN0b3J5KHNlbGYs
IHRlc3RfaW5wdXRzLCBudW1fd29ya2Vycyk6Ci0gICAgICAgICIiIlJldHVybnMgdHdvIGxpc3Rz
IG9mIHNoYXJkcywgZWFjaCBzaGFyZCBjb250YWluaW5nIGFsbCB0aGUgZmlsZXMgaW4gYSBkaXJl
Y3RvcnkuCisgICAgICAgICIiIlJldHVybnMgYSBsaXN0cyBvZiBzaGFyZHMsIGVhY2ggc2hhcmQg
Y29udGFpbmluZyBhbGwgdGhlIGZpbGVzIGluIGEgZGlyZWN0b3J5LgogCiAgICAgICAgIFRoaXMg
aXMgdGhlIGRlZmF1bHQgbW9kZSwgYW5kIGdldHMgYXMgbXVjaCBwYXJhbGxlbGlzbSBhcyB3ZSBj
YW4gd2hpbGUKICAgICAgICAgbWluaW1pemluZyBmbGFraW5lc3MgY2F1c2VkIGJ5IGludGVyLXRl
c3QgZGVwZW5kZW5jaWVzLiIiIgotICAgICAgICBsb2NrZWRfc2hhcmRzID0gW10KLSAgICAgICAg
dW5sb2NrZWRfc2hhcmRzID0gW10KKyAgICAgICAgc2hhcmRzID0gW10KICAgICAgICAgdGVzdHNf
YnlfZGlyID0ge30KICAgICAgICAgIyBGSVhNRTogR2l2ZW4gdGhhdCB0aGUgdGVzdHMgYXJlIGFs
cmVhZHkgc29ydGVkIGJ5IGRpcmVjdG9yeSwKICAgICAgICAgIyB3ZSBjYW4gcHJvYmFibHkgcmV3
cml0ZSB0aGlzIHRvIGJlIGNsZWFyZXIgYW5kIGZhc3Rlci4KQEAgLTUzMCw1MyArNDc2LDkgQEAg
Y2xhc3MgU2hhcmRlcihvYmplY3QpOgogCiAgICAgICAgIGZvciBkaXJlY3RvcnksIHRlc3RfaW5w
dXRzIGluIHRlc3RzX2J5X2Rpci5pdGVyaXRlbXMoKToKICAgICAgICAgICAgIHNoYXJkID0gVGVz
dFNoYXJkKGRpcmVjdG9yeSwgdGVzdF9pbnB1dHMpCi0gICAgICAgICAgICBpZiB0ZXN0X2lucHV0
c1swXS5uZWVkc19zZXJ2ZXJzOgotICAgICAgICAgICAgICAgIGxvY2tlZF9zaGFyZHMuYXBwZW5k
KHNoYXJkKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB1bmxvY2tlZF9zaGFy
ZHMuYXBwZW5kKHNoYXJkKQorICAgICAgICAgICAgc2hhcmRzLmFwcGVuZChzaGFyZCkKIAogICAg
ICAgICAjIFNvcnQgdGhlIHNoYXJkcyBieSBkaXJlY3RvcnkgbmFtZS4KLSAgICAgICAgbG9ja2Vk
X3NoYXJkcy5zb3J0KGtleT1sYW1iZGEgc2hhcmQ6IHNoYXJkLm5hbWUpCi0gICAgICAgIHVubG9j
a2VkX3NoYXJkcy5zb3J0KGtleT1sYW1iZGEgc2hhcmQ6IHNoYXJkLm5hbWUpCi0KLSAgICAgICAg
IyBQdXQgYSBjZWlsaW5nIG9uIHRoZSBudW1iZXIgb2YgbG9ja2VkIHNoYXJkcywgc28gdGhhdCB3
ZQotICAgICAgICAjIGRvbid0IGhhbW1lciB0aGUgc2VydmVycyB0b28gYmFkbHkuCi0KLSAgICAg
ICAgIyBGSVhNRTogRm9yIG5vdywgbGltaXQgdG8gb25lIHNoYXJkIG9yIHNldCBpdAotICAgICAg
ICAjIHdpdGggdGhlIC0tbWF4LWxvY2tlZC1zaGFyZHMuIEFmdGVyIHRlc3RpbmcgdG8gbWFrZSBz
dXJlIHdlCi0gICAgICAgICMgY2FuIGhhbmRsZSBtdWx0aXBsZSBzaGFyZHMsIHdlIHNob3VsZCBw
cm9iYWJseSBkbyBzb21ldGhpbmcgbGlrZQotICAgICAgICAjIGxpbWl0IHRoaXMgdG8gbm8gbW9y
ZSB0aGFuIGEgcXVhcnRlciBvZiBhbGwgd29ya2VycywgZS5nLjoKLSAgICAgICAgIyByZXR1cm4g
bWF4KG1hdGguY2VpbChudW1fd29ya2VycyAvIDQuMCksIDEpCi0gICAgICAgIHJldHVybiAoc2Vs
Zi5fcmVzaXplX3NoYXJkcyhsb2NrZWRfc2hhcmRzLCBzZWxmLl9tYXhfbG9ja2VkX3NoYXJkcywg
J2xvY2tlZF9zaGFyZCcpLAotICAgICAgICAgICAgICAgIHVubG9ja2VkX3NoYXJkcykKLQotICAg
IGRlZiBfcmVzaXplX3NoYXJkcyhzZWxmLCBvbGRfc2hhcmRzLCBtYXhfbmV3X3NoYXJkcywgc2hh
cmRfbmFtZV9wcmVmaXgpOgotICAgICAgICAiIiJUYWtlcyBhIGxpc3Qgb2Ygc2hhcmRzIGFuZCBy
ZWRpc3RyaWJ1dGVzIHRoZSB0ZXN0cyBpbnRvIG5vIG1vcmUKLSAgICAgICAgdGhhbiB8bWF4X25l
d19zaGFyZHN8IG5ldyBzaGFyZHMuIiIiCi0KLSAgICAgICAgIyBUaGlzIGltcGxlbWVudGF0aW9u
IGFzc3VtZXMgdGhhdCBlYWNoIGlucHV0IHNoYXJkIG9ubHkgY29udGFpbnMgdGVzdHMgZnJvbSBh
Ci0gICAgICAgICMgc2luZ2xlIGRpcmVjdG9yeSwgYW5kIHRoYXQgdGVzdHMgaW4gZWFjaCBzaGFy
ZCBtdXN0IHJlbWFpbiB0b2dldGhlcjsgYXMgYQotICAgICAgICAjIHJlc3VsdCwgYSBnaXZlbiBp
bnB1dCBzaGFyZCBpcyBuZXZlciBzcGxpdCBiZXR3ZWVuIG91dHB1dCBzaGFyZHMuCi0gICAgICAg
ICMKLSAgICAgICAgIyBFYWNoIG91dHB1dCBzaGFyZCBjb250YWlucyB0aGUgdGVzdHMgZnJvbSBv
bmUgb3IgbW9yZSBpbnB1dCBzaGFyZHMgYW5kCi0gICAgICAgICMgaGVuY2UgbWF5IGNvbnRhaW4g
dGVzdHMgZnJvbSBtdWx0aXBsZSBkaXJlY3Rvcmllcy4KLQotICAgICAgICBkZWYgZGl2aWRlX2Fu
ZF9yb3VuZF91cChudW1lcmF0b3IsIGRpdmlzb3IpOgotICAgICAgICAgICAgcmV0dXJuIGludCht
YXRoLmNlaWwoZmxvYXQobnVtZXJhdG9yKSAvIGRpdmlzb3IpKQorICAgICAgICBzaGFyZHMuc29y
dChrZXk9bGFtYmRhIHNoYXJkOiBzaGFyZC5uYW1lKQogCi0gICAgICAgIGRlZiBleHRyYWN0X2Fu
ZF9mbGF0dGVuKHNoYXJkcyk6Ci0gICAgICAgICAgICB0ZXN0X2lucHV0cyA9IFtdCi0gICAgICAg
ICAgICBmb3Igc2hhcmQgaW4gc2hhcmRzOgotICAgICAgICAgICAgICAgIHRlc3RfaW5wdXRzLmV4
dGVuZChzaGFyZC50ZXN0X2lucHV0cykKLSAgICAgICAgICAgIHJldHVybiB0ZXN0X2lucHV0cwot
Ci0gICAgICAgIGRlZiBzcGxpdF9hdChzZXEsIGluZGV4KToKLSAgICAgICAgICAgIHJldHVybiAo
c2VxWzppbmRleF0sIHNlcVtpbmRleDpdKQotCi0gICAgICAgIG51bV9vbGRfcGVyX25ldyA9IGRp
dmlkZV9hbmRfcm91bmRfdXAobGVuKG9sZF9zaGFyZHMpLCBtYXhfbmV3X3NoYXJkcykKLSAgICAg
ICAgbmV3X3NoYXJkcyA9IFtdCi0gICAgICAgIHJlbWFpbmluZ19zaGFyZHMgPSBvbGRfc2hhcmRz
Ci0gICAgICAgIHdoaWxlIHJlbWFpbmluZ19zaGFyZHM6Ci0gICAgICAgICAgICBzb21lX3NoYXJk
cywgcmVtYWluaW5nX3NoYXJkcyA9IHNwbGl0X2F0KHJlbWFpbmluZ19zaGFyZHMsIG51bV9vbGRf
cGVyX25ldykKLSAgICAgICAgICAgIG5ld19zaGFyZHMuYXBwZW5kKFRlc3RTaGFyZCgnJXNfJWQn
ICUgKHNoYXJkX25hbWVfcHJlZml4LCBsZW4obmV3X3NoYXJkcykgKyAxKSwgZXh0cmFjdF9hbmRf
ZmxhdHRlbihzb21lX3NoYXJkcykpKQotICAgICAgICByZXR1cm4gbmV3X3NoYXJkcworICAgICAg
ICByZXR1cm4gc2hhcmRzCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0
X3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNzY4MTQpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXJf
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgRmFrZVBy
aW50ZXIob2JqZWN0KToKICAgICBkZWYgcHJpbnRfZXhwZWN0ZWQoc2VsZiwgcnVuX3Jlc3VsdHMs
IGdldF90ZXN0c193aXRoX3Jlc3VsdF90eXBlKToKICAgICAgICAgcGFzcwogCi0gICAgZGVmIHBy
aW50X3dvcmtlcnNfYW5kX3NoYXJkcyhzZWxmLCBudW1fd29ya2VycywgbnVtX3NoYXJkcywgbnVt
X2xvY2tlZF9zaGFyZHMpOgorICAgIGRlZiBwcmludF93b3JrZXJzX2FuZF9zaGFyZHMoc2VsZiwg
bnVtX3dvcmtlcnMsIG51bV9zaGFyZHMpOgogICAgICAgICBwYXNzCiAKICAgICBkZWYgcHJpbnRf
c3RhcnRlZF90ZXN0KHNlbGYsIHRlc3RfbmFtZSk6CkBAIC0xNjYsNyArMTY2LDcgQEAgY2xhc3Mg
TGF5b3V0VGVzdFJ1bm5lclRlc3RzKHVuaXR0ZXN0LlRlcwogCiAgICAgZGVmIHRlc3Rfc2VydmVy
c19zdGFydGVkKHNlbGYpOgogCi0gICAgICAgIGRlZiBzdGFydF9odHRwX3NlcnZlcihudW1iZXJf
b2Zfc2VydmVycz1Ob25lKToKKyAgICAgICAgZGVmIHN0YXJ0X2h0dHBfc2VydmVyKCk6CiAgICAg
ICAgICAgICBzZWxmLmh0dHBfc3RhcnRlZCA9IFRydWUKIAogICAgICAgICBkZWYgc3RhcnRfd2Vi
c29ja2V0X3NlcnZlcigpOgpAQCAtMTg5LDcgKzE4OSw3IEBAIGNsYXNzIExheW91dFRlc3RSdW5u
ZXJUZXN0cyh1bml0dGVzdC5UZXMKICAgICAgICAgcnVubmVyID0gc2VsZi5fcnVubmVyKHBvcnQ9
cG9ydCkKICAgICAgICAgcnVubmVyLl9uZWVkc19odHRwID0gVHJ1ZQogICAgICAgICBydW5uZXIu
X25lZWRzX3dlYnNvY2tldHMgPSBGYWxzZQotICAgICAgICBydW5uZXIuc3RhcnRfc2VydmVyc193
aXRoX2xvY2sobnVtYmVyX29mX3NlcnZlcnM9NCkKKyAgICAgICAgcnVubmVyLnN0YXJ0X3NlcnZl
cnNfd2l0aF9sb2NrKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmh0dHBfc3RhcnRl
ZCwgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLndlYnNvY2tldF9zdGFydGVk
LCBGYWxzZSkKICAgICAgICAgcnVubmVyLnN0b3Bfc2VydmVyc193aXRoX2xvY2soKQpAQCAtMTk5
LDcgKzE5OSw3IEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXJUZXN0cyh1bml0dGVzdC5UZXMKICAg
ICAgICAgc2VsZi5odHRwX3N0YXJ0ZWQgPSBzZWxmLmh0dHBfc3RvcHBlZCA9IHNlbGYud2Vic29j
a2V0X3N0YXJ0ZWQgPSBzZWxmLndlYnNvY2tldF9zdG9wcGVkID0gRmFsc2UKICAgICAgICAgcnVu
bmVyLl9uZWVkc19odHRwID0gVHJ1ZQogICAgICAgICBydW5uZXIuX25lZWRzX3dlYnNvY2tldHMg
PSBUcnVlCi0gICAgICAgIHJ1bm5lci5zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jayhudW1iZXJfb2Zf
c2VydmVycz00KQorICAgICAgICBydW5uZXIuc3RhcnRfc2VydmVyc193aXRoX2xvY2soKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaHR0cF9zdGFydGVkLCBUcnVlKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNlbGYud2Vic29ja2V0X3N0YXJ0ZWQsIFRydWUpCiAgICAgICAgIHJ1
bm5lci5zdG9wX3NlcnZlcnNfd2l0aF9sb2NrKCkKQEAgLTIwOSw3ICsyMDksNyBAQCBjbGFzcyBM
YXlvdXRUZXN0UnVubmVyVGVzdHModW5pdHRlc3QuVGVzCiAgICAgICAgIHNlbGYuaHR0cF9zdGFy
dGVkID0gc2VsZi5odHRwX3N0b3BwZWQgPSBzZWxmLndlYnNvY2tldF9zdGFydGVkID0gc2VsZi53
ZWJzb2NrZXRfc3RvcHBlZCA9IEZhbHNlCiAgICAgICAgIHJ1bm5lci5fbmVlZHNfaHR0cCA9IEZh
bHNlCiAgICAgICAgIHJ1bm5lci5fbmVlZHNfd2Vic29ja2V0cyA9IEZhbHNlCi0gICAgICAgIHJ1
bm5lci5zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jayhudW1iZXJfb2Zfc2VydmVycz00KQorICAgICAg
ICBydW5uZXIuc3RhcnRfc2VydmVyc193aXRoX2xvY2soKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYuaHR0cF9zdGFydGVkLCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZWxmLndlYnNvY2tldF9zdGFydGVkLCBGYWxzZSkKICAgICAgICAgcnVubmVyLnN0b3Bfc2VydmVy
c193aXRoX2xvY2soKQpAQCAtMjM0LDkgKzIzNCw5IEBAIGNsYXNzIFNoYXJkZXJUZXN0cyh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGdldF90ZXN0X2lucHV0KHNlbGYsIHRlc3RfZmlsZSk6
CiAgICAgICAgIHJldHVybiBUZXN0SW5wdXQodGVzdF9maWxlLCBuZWVkc19zZXJ2ZXJzPSh0ZXN0
X2ZpbGUuc3RhcnRzd2l0aCgnaHR0cCcpKSkKIAotICAgIGRlZiBnZXRfc2hhcmRzKHNlbGYsIG51
bV93b3JrZXJzLCBmdWxseV9wYXJhbGxlbCwgdGVzdF9saXN0PU5vbmUsIG1heF9sb2NrZWRfc2hh
cmRzPTEpOgorICAgIGRlZiBnZXRfc2hhcmRzKHNlbGYsIG51bV93b3JrZXJzLCBmdWxseV9wYXJh
bGxlbCwgdGVzdF9saXN0PU5vbmUpOgogICAgICAgICBwb3J0ID0gVGVzdFBvcnQoTW9ja1N5c3Rl
bUhvc3QoKSkKLSAgICAgICAgc2VsZi5zaGFyZGVyID0gU2hhcmRlcihwb3J0LnNwbGl0X3Rlc3Qs
IG1heF9sb2NrZWRfc2hhcmRzKQorICAgICAgICBzZWxmLnNoYXJkZXIgPSBTaGFyZGVyKHBvcnQu
c3BsaXRfdGVzdCkKICAgICAgICAgdGVzdF9saXN0ID0gdGVzdF9saXN0IG9yIHNlbGYudGVzdF9s
aXN0CiAgICAgICAgIHJldHVybiBzZWxmLnNoYXJkZXIuc2hhcmRfdGVzdHMoW3NlbGYuZ2V0X3Rl
c3RfaW5wdXQodGVzdCkgZm9yIHRlc3QgaW4gdGVzdF9saXN0XSwgbnVtX3dvcmtlcnMsIGZ1bGx5
X3BhcmFsbGVsKQogCkBAIC0yNDksODAgKzI0OSwyNyBAQCBjbGFzcyBTaGFyZGVyVGVzdHModW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
dGVzdF9uYW1lcykKIAogICAgIGRlZiB0ZXN0X3NoYXJkX2J5X2RpcihzZWxmKToKLSAgICAgICAg
bG9ja2VkLCB1bmxvY2tlZCA9IHNlbGYuZ2V0X3NoYXJkcyhudW1fd29ya2Vycz0yLCBmdWxseV9w
YXJhbGxlbD1GYWxzZSkKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5nZXRfc2hhcmRzKG51bV93b3Jr
ZXJzPTIsIGZ1bGx5X3BhcmFsbGVsPUZhbHNlKQogCi0gICAgICAgICMgTm90ZSB0aGF0IGFsdGhv
dWdoIHRoZXJlIGFyZSB0ZXN0cyBpbiBtdWx0aXBsZSBkaXJzIHRoYXQgbmVlZCBsb2NrcywKLSAg
ICAgICAgIyB0aGV5IGFyZSBjcmFtbWVkIGludG8gYSBzaW5nbGUgc2hhcmQgaW4gb3JkZXIgdG8g
cmVkdWNlIHRoZSAjIG9mCi0gICAgICAgICMgd29ya2VycyBoaXR0aW5nIHRoZSBzZXJ2ZXIgYXQg
b25jZS4KLSAgICAgICAgc2VsZi5hc3NlcnRfc2hhcmRzKGxvY2tlZCwKLSAgICAgICAgICAgICBb
KCdsb2NrZWRfc2hhcmRfMScsCi0gICAgICAgICAgICAgICBbJ2h0dHAvdGVzdHMvc2VjdXJpdHkv
dmlldy1zb3VyY2Utbm8tcmVmcmVzaC5odG1sJywKLSAgICAgICAgICAgICAgICAnaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5odG0nLAotICAgICAgICAgICAgICAgICdodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy93ZWJzb2NrZXQtcHJvdG9jb2wtaWdub3JlZC5odG1sJywKLSAg
ICAgICAgICAgICAgICAnaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNv
bnRlbnQtdHlwZXMuaHRtbCddKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0X3NoYXJkcyh1bmxvY2tl
ZCwKKyAgICAgICAgc2VsZi5hc3NlcnRfc2hhcmRzKHJlc3VsdCwKICAgICAgICAgICAgIFsoJ2Fu
aW1hdGlvbnMnLCBbJ2FuaW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwnXSksCiAgICAgICAgICAgICAg
KCdkb20vaHRtbC9sZXZlbDIvaHRtbCcsIFsnZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEFuY2hv
ckVsZW1lbnQwMy5odG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50MDYuaHRtbCddKSwKICAgICAg
ICAgICAgICAoJ2Zhc3QvY3NzJywgWydmYXN0L2Nzcy9kaXNwbGF5LW5vbmUtaW5saW5lLXN0eWxl
LWNoYW5nZS1jcmFzaC5odG1sJ10pLAorICAgICAgICAgICAgICgnaHR0cC90ZXN0cy9zZWN1cml0
eScsIFsnaHR0cC90ZXN0cy9zZWN1cml0eS92aWV3LXNvdXJjZS1uby1yZWZyZXNoLmh0bWwnXSks
CisgICAgICAgICAgICAgKCdodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cycsIFsnaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5odG0nLCAnaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvd2Vic29ja2V0LXByb3RvY29sLWlnbm9yZWQuaHRtbCddKSwKKyAgICAgICAgICAgICAoJ2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QnLCBbJ2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3Vw
cG9ydGVkLXhtbC1jb250ZW50LXR5cGVzLmh0bWwnXSksCiAgICAgICAgICAgICAgKCdpZXRlc3Rj
ZW50ZXIvSmF2YXNjcmlwdCcsIFsnaWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQvMTEuMS41XzQtNC1j
LTEuaHRtbCddKV0pCiAKICAgICBkZWYgdGVzdF9zaGFyZF9ldmVyeV9maWxlKHNlbGYpOgotICAg
ICAgICBsb2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hhcmRzKG51bV93b3JrZXJzPTIsIGZ1
bGx5X3BhcmFsbGVsPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X3NoYXJkcyhsb2NrZWQsCisg
ICAgICAgIHJlc3VsdCA9IHNlbGYuZ2V0X3NoYXJkcyhudW1fd29ya2Vycz0yLCBmdWxseV9wYXJh
bGxlbD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydF9zaGFyZHMocmVzdWx0LAogICAgICAgICAg
ICAgWygnLicsIFsnaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5odG0nXSksCisg
ICAgICAgICAgICAgKCcuJywgWydhbmltYXRpb25zL2tleWZyYW1lcy5odG1sJ10pLAogICAgICAg
ICAgICAgICgnLicsIFsnaHR0cC90ZXN0cy9zZWN1cml0eS92aWV3LXNvdXJjZS1uby1yZWZyZXNo
Lmh0bWwnXSksCiAgICAgICAgICAgICAgKCcuJywgWydodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy93ZWJzb2NrZXQtcHJvdG9jb2wtaWdub3JlZC5odG1sJ10pLAotICAgICAgICAgICAgICgnLics
IFsnaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMu
aHRtbCddKV0pLAotICAgICAgICBzZWxmLmFzc2VydF9zaGFyZHModW5sb2NrZWQsCi0gICAgICAg
ICAgICBbKCcuJywgWydhbmltYXRpb25zL2tleWZyYW1lcy5odG1sJ10pLAogICAgICAgICAgICAg
ICgnLicsIFsnZmFzdC9jc3MvZGlzcGxheS1ub25lLWlubGluZS1zdHlsZS1jaGFuZ2UtY3Jhc2gu
aHRtbCddKSwKKyAgICAgICAgICAgICAoJy4nLCBbJ2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
c3VwcG9ydGVkLXhtbC1jb250ZW50LXR5cGVzLmh0bWwnXSksCiAgICAgICAgICAgICAgKCcuJywg
Wydkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDAzLmh0bWwnXSksCiAgICAg
ICAgICAgICAgKCcuJywgWydpZXRlc3RjZW50ZXIvSmF2YXNjcmlwdC8xMS4xLjVfNC00LWMtMS5o
dG1sJ10pLAogICAgICAgICAgICAgICgnLicsIFsnZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEFu
Y2hvckVsZW1lbnQwNi5odG1sJ10pXSkKLQotICAgIGRlZiB0ZXN0X3NoYXJkX2luX3R3byhzZWxm
KToKLSAgICAgICAgbG9ja2VkLCB1bmxvY2tlZCA9IHNlbGYuZ2V0X3NoYXJkcyhudW1fd29ya2Vy
cz0xLCBmdWxseV9wYXJhbGxlbD1GYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfc2hhcmRzKGxv
Y2tlZCwKLSAgICAgICAgICAgIFsoJ2xvY2tlZF90ZXN0cycsCi0gICAgICAgICAgICAgIFsnaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5odG0nLAotICAgICAgICAgICAgICAgJ2h0
dHAvdGVzdHMvc2VjdXJpdHkvdmlldy1zb3VyY2Utbm8tcmVmcmVzaC5odG1sJywKLSAgICAgICAg
ICAgICAgICdodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy93ZWJzb2NrZXQtcHJvdG9jb2wtaWdu
b3JlZC5odG1sJywKLSAgICAgICAgICAgICAgICdodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3N1
cHBvcnRlZC14bWwtY29udGVudC10eXBlcy5odG1sJ10pXSkKLSAgICAgICAgc2VsZi5hc3NlcnRf
c2hhcmRzKHVubG9ja2VkLAotICAgICAgICAgICAgWygndW5sb2NrZWRfdGVzdHMnLAotICAgICAg
ICAgICAgICBbJ2FuaW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwnLAotICAgICAgICAgICAgICAgJ2Zh
c3QvY3NzL2Rpc3BsYXktbm9uZS1pbmxpbmUtc3R5bGUtY2hhbmdlLWNyYXNoLmh0bWwnLAotICAg
ICAgICAgICAgICAgJ2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50MDMuaHRt
bCcsCi0gICAgICAgICAgICAgICAnaWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQvMTEuMS41XzQtNC1j
LTEuaHRtbCcsCi0gICAgICAgICAgICAgICAnZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEFuY2hv
ckVsZW1lbnQwNi5odG1sJ10pXSkKLQotICAgIGRlZiB0ZXN0X3NoYXJkX2luX3R3b19oYXNfbm9f
bG9ja2VkX3NoYXJkcyhzZWxmKToKLSAgICAgICAgbG9ja2VkLCB1bmxvY2tlZCA9IHNlbGYuZ2V0
X3NoYXJkcyhudW1fd29ya2Vycz0xLCBmdWxseV9wYXJhbGxlbD1GYWxzZSwKLSAgICAgICAgICAg
ICB0ZXN0X2xpc3Q9WydhbmltYXRpb25zL2tleWZyYW1lLmh0bWwnXSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4obG9ja2VkKSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
dW5sb2NrZWQpLCAxKQotCi0gICAgZGVmIHRlc3Rfc2hhcmRfaW5fdHdvX2hhc19ub191bmxvY2tl
ZF9zaGFyZHMoc2VsZik6Ci0gICAgICAgIGxvY2tlZCwgdW5sb2NrZWQgPSBzZWxmLmdldF9zaGFy
ZHMobnVtX3dvcmtlcnM9MSwgZnVsbHlfcGFyYWxsZWw9RmFsc2UsCi0gICAgICAgICAgICAgdGVz
dF9saXN0PVsnaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5odG0nXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obG9ja2VkKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4odW5sb2NrZWQpLCAwKQotCi0gICAgZGVmIHRlc3RfbXVsdGlwbGVfbG9ja2VkX3No
YXJkcyhzZWxmKToKLSAgICAgICAgbG9ja2VkLCB1bmxvY2tlZCA9IHNlbGYuZ2V0X3NoYXJkcyhu
dW1fd29ya2Vycz00LCBmdWxseV9wYXJhbGxlbD1GYWxzZSwgbWF4X2xvY2tlZF9zaGFyZHM9MikK
LSAgICAgICAgc2VsZi5hc3NlcnRfc2hhcmRzKGxvY2tlZCwKLSAgICAgICAgICAgIFsoJ2xvY2tl
ZF9zaGFyZF8xJywKLSAgICAgICAgICAgICAgWydodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291
cmNlLW5vLXJlZnJlc2guaHRtbCcsCi0gICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvdW5pY29kZS5odG0nLAotICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwnXSksCi0gICAgICAgICAg
ICAgKCdsb2NrZWRfc2hhcmRfMicsCi0gICAgICAgICAgICAgIFsnaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCddKV0pCi0KLSAgICAgICAg
bG9ja2VkLCB1bmxvY2tlZCA9IHNlbGYuZ2V0X3NoYXJkcyhudW1fd29ya2Vycz00LCBmdWxseV9w
YXJhbGxlbD1GYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfc2hhcmRzKGxvY2tlZCwKLSAgICAg
ICAgICAgIFsoJ2xvY2tlZF9zaGFyZF8xJywKLSAgICAgICAgICAgICAgWydodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3ZpZXctc291cmNlLW5vLXJlZnJlc2guaHRtbCcsCi0gICAgICAgICAgICAgICAnaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5odG0nLAotICAgICAgICAgICAgICAgJ2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwn
LAotICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXht
bC1jb250ZW50LXR5cGVzLmh0bWwnXSldKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2Vy
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNzY3MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIE1hbmFnZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgZGVmIGdldF9tYW5hZ2VyKCk6CiAgICAgICAgICAgICBwb3J0ID0gTW9jaygp
ICAjIEZJWE1FOiBVc2UgYSB0aWdodGVyIG1vY2suCiAgICAgICAgICAgICBwb3J0LlRFU1RfUEFU
SF9TRVBBUkFUT1IgPSAnLycKLSAgICAgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyKHBvcnQsIG9w
dGlvbnM9TW9ja09wdGlvbnMoaHR0cD1UcnVlLCBtYXhfbG9ja2VkX3NoYXJkcz0xKSwgcHJpbnRl
cj1Nb2NrKCkpCisgICAgICAgICAgICBtYW5hZ2VyID0gTWFuYWdlcihwb3J0LCBvcHRpb25zPU1v
Y2tPcHRpb25zKGh0dHA9VHJ1ZSksIHByaW50ZXI9TW9jaygpKQogICAgICAgICAgICAgcmV0dXJu
IG1hbmFnZXIKIAogICAgICAgICBtYW5hZ2VyID0gZ2V0X21hbmFnZXIoKQpAQCAtNTksNyArNTks
NyBAQCBjbGFzcyBNYW5hZ2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiBn
ZXRfbWFuYWdlcigpOgogICAgICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgICAg
IHBvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoKQotICAgICAgICAgICAgbWFuYWdlciA9IE1h
bmFnZXIocG9ydCwgb3B0aW9ucz1Nb2NrT3B0aW9ucyh0ZXN0X2xpc3Q9Tm9uZSwgaHR0cD1UcnVl
LCBtYXhfbG9ja2VkX3NoYXJkcz0xKSwgcHJpbnRlcj1Nb2NrKCkpCisgICAgICAgICAgICBtYW5h
Z2VyID0gTWFuYWdlcihwb3J0LCBvcHRpb25zPU1vY2tPcHRpb25zKHRlc3RfbGlzdD1Ob25lLCBo
dHRwPVRydWUpLCBwcmludGVyPU1vY2soKSkKICAgICAgICAgICAgIHJldHVybiBtYW5hZ2VyCiAK
ICAgICAgICAgbWFuYWdlciA9IGdldF9tYW5hZ2VyKCkKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3Mg
TWFuYWdlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBkZWYgZ2V0X21hbmFnZXIo
KToKICAgICAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgICAgICBwb3J0ID0gaG9z
dC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0LW1hYy1sZW9wYXJkJykKLSAgICAgICAgICAgIG1hbmFn
ZXIgPSBNYW5hZ2VyKHBvcnQsIG9wdGlvbnM9TW9ja09wdGlvbnModGVzdF9saXN0PU5vbmUsIGh0
dHA9VHJ1ZSwgbWF4X2xvY2tlZF9zaGFyZHM9MSksIHByaW50ZXI9TW9jaygpKQorICAgICAgICAg
ICAgbWFuYWdlciA9IE1hbmFnZXIocG9ydCwgb3B0aW9ucz1Nb2NrT3B0aW9ucyh0ZXN0X2xpc3Q9
Tm9uZSwgaHR0cD1UcnVlKSwgcHJpbnRlcj1Nb2NrKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFu
YWdlcgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICBwb3J0ID0gaG9zdC5wb3J0
X2ZhY3RvcnkuZ2V0KCd0ZXN0LW1hYy1sZW9wYXJkJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hl
X2h0dHBfc2VydmVyLnB5CShyZXZpc2lvbiAxNzY3MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weQkod29ya2luZyBj
b3B5KQpAQCAtNDIsMTIgKzQyLDEyIEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIAogCiBjbGFzcyBMYXlvdXRUZXN0QXBhY2hlSHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRw
U2VydmVyQmFzZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBvdXRwdXRfZGly
LCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSwgbnVtYmVyX29mX3NlcnZlcnM9Tm9uZSk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBvdXRwdXRfZGlyLCBhZGRpdGlvbmFsX2RpcnM9Tm9u
ZSk6CiAgICAgICAgICIiIkFyZ3M6CiAgICAgICAgICAgcG9ydF9vYmo6IGhhbmRsZSB0byB0aGUg
cGxhdGZvcm0tc3BlY2lmaWMgcm91dGluZXMKICAgICAgICAgICBvdXRwdXRfZGlyOiB0aGUgYWJz
b2x1dGUgcGF0aCB0byB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0IGRpcmVjdG9yeQogICAgICAgICAi
IiIKLSAgICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZS5fX2luaXRfXyhzZWxm
LCBwb3J0X29iaiwgbnVtYmVyX29mX3NlcnZlcnMpCisgICAgICAgIGh0dHBfc2VydmVyX2Jhc2Uu
SHR0cFNlcnZlckJhc2UuX19pbml0X18oc2VsZiwgcG9ydF9vYmopCiAgICAgICAgICMgV2UgdXNl
IHRoZSBuYW1lICJodHRwZCIgaW5zdGVhZCBvZiAiYXBhY2hlIiB0byBtYWtlIG91ciBwYXRocyAo
ZS5nLiB0aGUgcGlkIGZpbGU6IC90bXAvV2ViS2l0L2h0dHBkLnBpZCkKICAgICAgICAgIyBtYXRj
aCBvbGQtcnVuLXdlYmtpdC10ZXN0czogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYzOTU2CiAgICAgICAgIHNlbGYuX25hbWUgPSAnaHR0cGQnCkBAIC0xMTUsMTEgKzEx
NSw2IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl8KICAgICAgICAg
ICAgICAgICAgICAgICAgICctYycsICJcJ1JlbW92ZUhhbmRsZXIgLmNnaSAucGxcJyIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAnLWMnLCAiXCc8L0xvY2F0aW9uPlwnIl0KIAotICAgICAgICBp
ZiBzZWxmLl9udW1iZXJfb2Zfc2VydmVyczoKLSAgICAgICAgICAgIHN0YXJ0X2NtZCArPSBbJy1j
JywgIlwnU3RhcnRTZXJ2ZXJzICVkXCciICUgc2VsZi5fbnVtYmVyX29mX3NlcnZlcnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICctYycsICJcJ01pblNwYXJlU2VydmVycyAlZFwnIiAlIHNl
bGYuX251bWJlcl9vZl9zZXJ2ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnLWMnLCAi
XCdNYXhTcGFyZVNlcnZlcnMgJWRcJyIgJSBzZWxmLl9udW1iZXJfb2Zfc2VydmVyc10KLQogICAg
ICAgICBzdG9wX2NtZCA9IFtleGVjdXRhYmxlLAogICAgICAgICAgICAgJy1mJywgIlwiJXNcIiIg
JSBzZWxmLl9nZXRfYXBhY2hlX2NvbmZpZ19maWxlX3BhdGgodGVzdF9kaXIsIG91dHB1dF9kaXIp
LAogICAgICAgICAgICAgJy1jJywgIlwnUGlkRmlsZSAlcyciICUgc2VsZi5fcGlkX2ZpbGUsCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9o
dHRwX3NlcnZlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlcl91bml0dGVzdC5weQko
cmV2aXNpb24gMTc2NzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
c2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDcgKzUzLDcgQEAgY2xhc3MgVGVzdExheW91dFRlc3RBcGFjaGVIdHRwZCh1bml0dGVzdAog
ICAgICAgICB0ZXN0X3BvcnQgPSB0ZXN0LlRlc3RQb3J0KGhvc3QpCiAgICAgICAgIGhvc3QuZmls
ZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUodGVzdF9wb3J0Ll9wYXRoX3RvX2FwYWNoZV9jb25maWdf
ZmlsZSgpLCAnJykKIAotICAgICAgICBzZXJ2ZXIgPSBMYXlvdXRUZXN0QXBhY2hlSHR0cGQodGVz
dF9wb3J0LCAiL21vY2svb3V0cHV0X2RpciIsIG51bWJlcl9vZl9zZXJ2ZXJzPTQpCisgICAgICAg
IHNlcnZlciA9IExheW91dFRlc3RBcGFjaGVIdHRwZCh0ZXN0X3BvcnQsICIvbW9jay9vdXRwdXRf
ZGlyIikKICAgICAgICAgc2VydmVyLl9jaGVja190aGF0X2FsbF9wb3J0c19hcmVfYXZhaWxhYmxl
ID0gbGFtYmRhOiBUcnVlCiAgICAgICAgIHNlcnZlci5faXNfc2VydmVyX3J1bm5pbmdfb25fYWxs
X3BvcnRzID0gbGFtYmRhOiBUcnVlCiAgICAgICAgIHNlcnZlci5fd2FpdF9mb3JfYWN0aW9uID0g
ZmFrZV9waWQKQEAgLTY0LDcgKzY0LDQgQEAgY2xhc3MgVGVzdExheW91dFRlc3RBcGFjaGVIdHRw
ZCh1bml0dGVzdAogICAgICAgICAgICAgc2VydmVyLnN0b3AoKQogICAgICAgICBmaW5hbGx5Ogog
ICAgICAgICAgICAgXywgXywgbG9ncyA9IG9jLnJlc3RvcmVfb3V0cHV0KCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRJbigiU3RhcnRTZXJ2ZXJzIDQiLCBsb2dzKQotICAgICAgICBzZWxmLmFzc2VydElu
KCJNaW5TcGFyZVNlcnZlcnMgNCIsIGxvZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oIk1heFNw
YXJlU2VydmVycyA0IiwgbG9ncykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvc3QuZmlsZXN5
c3RlbS5leGlzdHMoIi9tb2NrL291dHB1dF9kaXIvaHR0cGQuY29uZiIpKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlci5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0
dHBfc2VydmVyLnB5CShyZXZpc2lvbiAxNzY3MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00
MiwxMiArNDIsMTIgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2Vydgog
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBvdXRwdXRfZGlyLCBiYWNrZ3JvdW5k
PUZhbHNlLCBwb3J0PU5vbmUsCiAgICAgICAgICAgICAgICAgIHJvb3Q9Tm9uZSwgcnVuX2JhY2tn
cm91bmQ9Tm9uZSwgYWRkaXRpb25hbF9kaXJzPU5vbmUsCi0gICAgICAgICAgICAgICAgIGxheW91
dF90ZXN0c19kaXI9Tm9uZSwgbnVtYmVyX29mX3NlcnZlcnM9Tm9uZSk6CisgICAgICAgICAgICAg
ICAgIGxheW91dF90ZXN0c19kaXI9Tm9uZSk6CiAgICAgICAgICIiIkFyZ3M6CiAgICAgICAgICAg
b3V0cHV0X2RpcjogdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGxheW91dCB0ZXN0IHJlc3VsdCBk
aXJlY3RvcnkKICAgICAgICAgIiIiCiAgICAgICAgICMgV2Via2l0IHRlc3RzCi0gICAgICAgIGh0
dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UuX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG51
bWJlcl9vZl9zZXJ2ZXJzKQorICAgICAgICBodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNl
Ll9faW5pdF9fKHNlbGYsIHBvcnRfb2JqKQogICAgICAgICBzZWxmLl9uYW1lID0gJ2xpZ2h0dHBk
JwogICAgICAgICBzZWxmLl9vdXRwdXRfZGlyID0gb3V0cHV0X2RpcgogICAgICAgICBzZWxmLl9w
b3J0ID0gcG9ydApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2Vy
dmVycy9odHRwX3NlcnZlcl9iYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXJfYmFzZS5weQkocmV2aXNpb24g
MTc2NzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9o
dHRwX3NlcnZlcl9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNz
IFNlcnZlckVycm9yKEV4Y2VwdGlvbik6CiBjbGFzcyBIdHRwU2VydmVyQmFzZShvYmplY3QpOgog
ICAgICIiIkEgc2tlbGV0b24gY2xhc3MgZm9yIHN0YXJ0aW5nIGFuZCBzdG9wcGluZyBzZXJ2ZXJz
IHVzZWQgYnkgdGhlIGxheW91dCB0ZXN0cy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw
b3J0X29iaiwgbnVtYmVyX29mX3NlcnZlcnM9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBvcnRfb2JqKToKICAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gcG9ydF9vYmouX2V4ZWN1dGl2
ZQogICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gcG9ydF9vYmouX2ZpbGVzeXN0ZW0KICAgICAg
ICAgc2VsZi5fbmFtZSA9ICc8dmlydHVhbD4nCkBAIC01NCw3ICs1NCw2IEBAIGNsYXNzIEh0dHBT
ZXJ2ZXJCYXNlKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BpZCA9IE5vbmUKICAgICAgICAgc2Vs
Zi5fcGlkX2ZpbGUgPSBOb25lCiAgICAgICAgIHNlbGYuX3BvcnRfb2JqID0gcG9ydF9vYmoKLSAg
ICAgICAgc2VsZi5fbnVtYmVyX29mX3NlcnZlcnMgPSBudW1iZXJfb2Zfc2VydmVycwogCiAgICAg
ICAgICMgV2UgbmVlZCBhIG5vbi1jaGVja291dC1kZXBlbmRlbnQgcGxhY2UgdG8gcHV0IGxvY2sg
ZmlsZXMsIGV0Yy4gV2UKICAgICAgICAgIyBkb24ndCB1c2UgdGhlIFB5dGhvbiBkZWZhdWx0IG9u
IHRoZSBNYWMgYmVjYXVzZSBpdCBkZWZhdWx0cyB0byBhCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGluZy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGluZy5weQkocmV2aXNp
b24gMTc2NzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3Mv
cHJpbnRpbmcucHkJKHdvcmtpbmcgY29weSkKQEAgLTExMCwxNCArMTEwLDE0IEBAIGNsYXNzIFBy
aW50ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90
eXBlKHJ1bl9yZXN1bHRzLCB0ZXN0X2V4cGVjdGF0aW9ucy5GTEFLWSwgImZsYWt5IiwgdGVzdHNf
d2l0aF9yZXN1bHRfdHlwZV9jYWxsYmFjaykKICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJycp
CiAKLSAgICBkZWYgcHJpbnRfd29ya2Vyc19hbmRfc2hhcmRzKHNlbGYsIG51bV93b3JrZXJzLCBu
dW1fc2hhcmRzLCBudW1fbG9ja2VkX3NoYXJkcyk6CisgICAgZGVmIHByaW50X3dvcmtlcnNfYW5k
X3NoYXJkcyhzZWxmLCBudW1fd29ya2VycywgbnVtX3NoYXJkcyk6CiAgICAgICAgIGRyaXZlcl9u
YW1lID0gc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpCiAgICAgICAgIGlmIG51bV93b3JrZXJzID09
IDE6CiAgICAgICAgICAgICBzZWxmLl9wcmludF9kZWZhdWx0KCJSdW5uaW5nIDEgJXMuIiAlIGRy
aXZlcl9uYW1lKQogICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoIiglcykuIiAlIGdyYW1t
YXIucGx1cmFsaXplKG51bV9zaGFyZHMsICJzaGFyZCIpKQogICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgc2VsZi5fcHJpbnRfZGVmYXVsdCgiUnVubmluZyAlcyBpbiBwYXJhbGxlbC4iICUgKGdy
YW1tYXIucGx1cmFsaXplKG51bV93b3JrZXJzLCBkcml2ZXJfbmFtZSkpKQotICAgICAgICAgICAg
c2VsZi5fcHJpbnRfZGVidWcoIiglZCBzaGFyZHM7ICVkIGxvY2tlZCkuIiAlIChudW1fc2hhcmRz
LCBudW1fbG9ja2VkX3NoYXJkcykpCisgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygiKCVk
IHNoYXJkcykuIiAlIG51bV9zaGFyZHMpCiAgICAgICAgIHNlbGYuX3ByaW50X2RlZmF1bHQoJycp
CiAKICAgICBkZWYgX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShzZWxmLCBydW5fcmVz
dWx0cywgcmVzdWx0X3R5cGUsIHJlc3VsdF90eXBlX3N0ciwgdGVzdHNfd2l0aF9yZXN1bHRfdHlw
ZV9jYWxsYmFjayk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkocmV2aXNp
b24gMTc2NzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHdvcmtp
bmcgY29weSkKQEAgLTE1OSwxMCArMTU5LDYgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBEdW1wUmVuZGVyVHJlZSBpbnN0YW5jZXMgdG8gdXNl
IGZvciB0aGlzIHBvcnQuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9leGVjdXRpdmUuY3B1X2Nv
dW50KCkKIAotICAgIGRlZiBkZWZhdWx0X21heF9sb2NrZWRfc2hhcmRzKHNlbGYpOgotICAgICAg
ICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiAibG9ja2VkIiBzaGFyZHMgdG8gcnVuIGluIHBhcmFs
bGVsIChsaWtlIHRoZSBodHRwIHRlc3RzKS4iIiIKLSAgICAgICAgcmV0dXJuIDEKLQogICAgIGRl
ZiB3b3JrZXJfc3RhcnR1cF9kZWxheV9zZWNzKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBJZiB3
ZSBzdGFydCB3b3JrZXJzIHVwIHRvbyBxdWlja2x5LCBEdW1wUmVuZGVyVHJlZSBhcHBlYXJzCiAg
ICAgICAgICMgdG8gdGhyYXNoIG9uIHNvbWV0aGluZyBhbmQgdGltZSBvdXQgaXRzIGZpcnN0IGZl
dyB0ZXN0cy4gVW50aWwKQEAgLTg3NywxNiArODczLDE2IEBAIGNsYXNzIFBvcnQob2JqZWN0KToK
ICAgICAgICAgc3RvcmFnZSwgaXQgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kLiIiIgogICAg
ICAgICBwYXNzCiAKLSAgICBkZWYgc3RhcnRfaHR0cF9zZXJ2ZXIoc2VsZiwgYWRkaXRpb25hbF9k
aXJzPU5vbmUsIG51bWJlcl9vZl9zZXJ2ZXJzPU5vbmUpOgorICAgIGRlZiBzdGFydF9odHRwX3Nl
cnZlcihzZWxmLCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSk6CiAgICAgICAgICIiIlN0YXJ0IGEgd2Vi
IHNlcnZlci4gUmFpc2UgYW4gZXJyb3IgaWYgaXQgY2FuJ3Qgc3RhcnQgb3IgaXMgYWxyZWFkeSBy
dW5uaW5nLgogCiAgICAgICAgIFBvcnRzIGNhbiBzdHViIHRoaXMgb3V0IGlmIHRoZXkgZG9uJ3Qg
bmVlZCBhIHdlYiBzZXJ2ZXIgdG8gYmUgcnVubmluZy4iIiIKICAgICAgICAgYXNzZXJ0IG5vdCBz
ZWxmLl9odHRwX3NlcnZlciwgJ0FscmVhZHkgcnVubmluZyBhbiBodHRwIHNlcnZlci4nCiAKICAg
ICAgICAgaWYgc2VsZi5fdXNlc19hcGFjaGUoKToKLSAgICAgICAgICAgIHNlcnZlciA9IGFwYWNo
ZV9odHRwX3NlcnZlci5MYXlvdXRUZXN0QXBhY2hlSHR0cGQoc2VsZiwgc2VsZi5yZXN1bHRzX2Rp
cmVjdG9yeSgpLCBhZGRpdGlvbmFsX2RpcnM9YWRkaXRpb25hbF9kaXJzLCBudW1iZXJfb2Zfc2Vy
dmVycz1udW1iZXJfb2Zfc2VydmVycykKKyAgICAgICAgICAgIHNlcnZlciA9IGFwYWNoZV9odHRw
X3NlcnZlci5MYXlvdXRUZXN0QXBhY2hlSHR0cGQoc2VsZiwgc2VsZi5yZXN1bHRzX2RpcmVjdG9y
eSgpLCBhZGRpdGlvbmFsX2RpcnM9YWRkaXRpb25hbF9kaXJzKQogICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgc2VydmVyID0gaHR0cF9zZXJ2ZXIuTGlnaHR0cGQoc2VsZiwgc2VsZi5yZXN1bHRz
X2RpcmVjdG9yeSgpLCBhZGRpdGlvbmFsX2RpcnM9YWRkaXRpb25hbF9kaXJzLCBudW1iZXJfb2Zf
c2VydmVycz1udW1iZXJfb2Zfc2VydmVycykKKyAgICAgICAgICAgIHNlcnZlciA9IGh0dHBfc2Vy
dmVyLkxpZ2h0dHBkKHNlbGYsIHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSwgYWRkaXRpb25hbF9k
aXJzPWFkZGl0aW9uYWxfZGlycykKIAogICAgICAgICBzZXJ2ZXIuc3RhcnQoKQogICAgICAgICBz
ZWxmLl9odHRwX3NlcnZlciA9IHNlcnZlcgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L3BvcnRfdGVzdGNhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3BvcnRfdGVzdGNhc2UucHkJKHJldmlzaW9uIDE3NjcyNSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05MSwx
MyArOTEsNiBAQCBjbGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBwb3J0Ll9jb25maWcuYnVpbGRfZGlyZWN0b3J5ID0gbGFtYmRhIGNvbmZpZ3VyYXRpb246ICcv
bW9jay1idWlsZCcKICAgICAgICAgcmV0dXJuIHBvcnQKIAotICAgIGRlZiB0ZXN0X2RlZmF1bHRf
bWF4X2xvY2tlZF9zaGFyZHMoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgp
Ci0gICAgICAgIHBvcnQuZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMgPSBsYW1iZGE6IDE2Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kZWZhdWx0X21heF9sb2NrZWRfc2hhcmRzKCksIDEp
Ci0gICAgICAgIHBvcnQuZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMgPSBsYW1iZGE6IDIKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmRlZmF1bHRfbWF4X2xvY2tlZF9zaGFyZHMoKSwgMSkK
LQogICAgIGRlZiB0ZXN0X2RlZmF1bHRfdGltZW91dF9tcyhzZWxmKToKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWxmLm1ha2VfcG9ydChvcHRpb25zPU1vY2tPcHRpb25zKGNvbmZpZ3VyYXRp
b249J1JlbGVhc2UnKSkuZGVmYXVsdF90aW1lb3V0X21zKCksIDM1MDAwKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9TW9ja09wdGlvbnMoY29uZmlndXJh
dGlvbj0nRGVidWcnKSkuZGVmYXVsdF90aW1lb3V0X21zKCksIDM1MDAwKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3Rlc3QucHkJKHJldmlzaW9uIDE3NjcyNSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00NjMsNyArNDYzLDcg
QEAgY2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgZGVmIF9kcml2ZXJfY2xhc3Moc2VsZik6CiAg
ICAgICAgIHJldHVybiBUZXN0RHJpdmVyCiAKLSAgICBkZWYgc3RhcnRfaHR0cF9zZXJ2ZXIoc2Vs
ZiwgYWRkaXRpb25hbF9kaXJzPU5vbmUsIG51bWJlcl9vZl9zZXJ2ZXJzPU5vbmUpOgorICAgIGRl
ZiBzdGFydF9odHRwX3NlcnZlcihzZWxmLCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSk6CiAgICAgICAg
IHBhc3MKIAogICAgIGRlZiBzdGFydF93ZWJzb2NrZXRfc2VydmVyKHNlbGYpOgo=
</data>
<flag name="review"
          id="267466"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242599</attachid>
            <date>2014-12-04 16:58:32 -0800</date>
            <delta_ts>2014-12-04 17:36:33 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>ParallelHTTP.txt</filename>
            <type>text/plain</type>
            <size>38065</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE3NjgyMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDg4IEBACisyMDE0LTEyLTA0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIFJ1biBodHRwIHRlc3RzIHBhcmFsbGVsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg5NTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYW5pZWwgQmF0ZXMuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBjb25jZXB0IG9mICJsb2NrZWQg
c2hhcmQiLiBOb3cgaHR0cCB0ZXN0cyBhcmUganVzdCBsaWtlIGFueSBvdGhlciB0ZXN0cy4KKyAg
ICAgICAgV2Ugc3RhcnQgSFRUUCBhbmQgV2ViU29ja2V0IHNlcnZlcnMgYXQgdGhlIHN0YXJ0IGlm
IHdlIG5lZWQgdGhlbSwgYW5kIHRlcm1pbmF0ZSB0aGVtCisgICAgICAgIHdoZW4gZG9uZSB3aXRo
IGFsbCB0aGUgdGVzdHMgKG5vdCB3aGVuIHRoZSBsYXN0IGh0dHAgdGVzdCBydW5zLCB3aGljaCBp
cyB1bm5lY2Vzc2FyaWx5CisgICAgICAgIHVucHJlZGljdGFibGUpLgorCisgICAgICAgIFRoaXMg
bWFrZXMgZGVidWcgdGVzdHMgcnVuIGluIDggbWludXRlcyBhbmQgMTIgc2Vjb25kcyBvbiBteSBN
YWMgUHJvLiBXaXRob3V0IHRoZQorICAgICAgICBwYXRjaCwgdGhleSB1c2VkIHRvIHRha2Ugb3Zl
ciAxNSBtaW51dGVzLgorCisgICAgICAgIEFzIHBhcnQgb2YgdGhlIGZpeCwgd2Ugbm8gbG9uZ2Vy
IHBhc3MgdGhlIG51bWJlciBvZiBzZXJ2ZXJzIHRvIEFwYWNoZS4gSSBkb24ndAorICAgICAgICB0
aGluayB0aGF0IHRoZXNlIHBhcmFtZXRlcnMgZGlkIHdoYXQgd2Ugd2FudGVkIHRoZW0gdG8gZG87
IEFwYWNoZSBoYW5kbGVzIHRoZSBsb2FkCisgICAgICAgIGp1c3QgZmluZSB3aXRob3V0IHRoZW0u
CisKKyAgICAgICAgVGhlIGNoYW5nZSBhcHBsaWVzIHRvIGFsbCBwbGF0Zm9ybXMuIEkgZml4ZWQg
ZXZlcnl0aGluZyBJIGNvdWxkIGZpbmQgb24gTWFjLCBhbmQKKyAgICAgICAgT3NzeSB0b2xkIG1l
IHRoYXQgaGUncyBiZWVuIHJ1bm5pbmcgaHR0cCB0ZXN0cyBpbiBwYXJhbGxlbCBmb3IgYSBsb25n
IHRpbWUuIElmCisgICAgICAgIHRoZXJlIGlzIGluY3JlYXNlZCBpbnN0YWJpbGl0eSBmb3Igc29t
ZSBwb3J0cywgaXQgd2lsbCBuZWVkIHRvIGJlIGZpeGVkIC0gdGhlcmUgaXMKKyAgICAgICAgZ2Vu
ZXJhbGx5IG5vdGhpbmcgc3BlY2lhbCBhYm91dCBodHRwIHRlc3RzIGF0IHRoaXMgcG9pbnQsIGFu
ZCBtb3N0IGNvZGUgaXMKKyAgICAgICAgY3Jvc3MtcGxhdGZvcm0gaW4gV2ViS2l0Mi4KKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90
ZXN0X3J1bm5lci5weToKKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX19pbml0X18pOgorICAg
ICAgICAoTGF5b3V0VGVzdFJ1bm5lci5ydW5fdGVzdHMpOgorICAgICAgICAoTGF5b3V0VGVzdFJ1
bm5lci5zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jayk6CisgICAgICAgIChMYXlvdXRUZXN0UnVubmVy
Ll9oYW5kbGVfc3RhcnRlZF90ZXN0KToKKyAgICAgICAgKFdvcmtlci5oYW5kbGUpOgorICAgICAg
ICAoU2hhcmRlci5fX2luaXRfXyk6CisgICAgICAgIChTaGFyZGVyLnNoYXJkX3Rlc3RzKToKKyAg
ICAgICAgKFNoYXJkZXIuX3NoYXJkX2V2ZXJ5X2ZpbGUpOgorICAgICAgICAoU2hhcmRlci5fc2hh
cmRfYnlfZGlyZWN0b3J5KToKKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX2hhbmRsZV9maW5p
c2hlZF90ZXN0X2xpc3QpOiBEZWxldGVkLgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lci5faGFu
ZGxlX2ZpbmlzaGVkX3Rlc3RfbGlzdC5maW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFNoYXJkZXIu
X3NoYXJkX2luX3R3byk6IERlbGV0ZWQuCisgICAgICAgIChTaGFyZGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFNoYXJkZXIuX3Jlc2l6ZV9zaGFyZHMpOiBEZWxldGVkLgorICAgICAgICAoU2hhcmRl
ci5fcmVzaXplX3NoYXJkcy5kaXZpZGVfYW5kX3JvdW5kX3VwKTogRGVsZXRlZC4KKyAgICAgICAg
KFNoYXJkZXIuX3Jlc2l6ZV9zaGFyZHMuZXh0cmFjdF9hbmRfZmxhdHRlbik6IERlbGV0ZWQuCisg
ICAgICAgIChTaGFyZGVyLl9yZXNpemVfc2hhcmRzLnNwbGl0X2F0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVz
dF9ydW5uZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChGYWtlUHJpbnRlci5wcmludF93b3JrZXJz
X2FuZF9zaGFyZHMpOgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lclRlc3RzLnRlc3Rfc2VydmVy
c19zdGFydGVkLnN0YXJ0X2h0dHBfc2VydmVyKToKKyAgICAgICAgKExheW91dFRlc3RSdW5uZXJU
ZXN0cy50ZXN0X3NlcnZlcnNfc3RhcnRlZCk6CisgICAgICAgIChTaGFyZGVyVGVzdHMuZ2V0X3No
YXJkcyk6CisgICAgICAgIChTaGFyZGVyVGVzdHMudGVzdF9zaGFyZF9ieV9kaXIpOgorICAgICAg
ICAoU2hhcmRlclRlc3RzLnRlc3Rfc2hhcmRfZXZlcnlfZmlsZSk6CisgICAgICAgIChTaGFyZGVy
VGVzdHMpOiBEZWxldGVkLgorICAgICAgICAoU2hhcmRlclRlc3RzLnRlc3Rfc2hhcmRfaW5fdHdv
KTogRGVsZXRlZC4KKyAgICAgICAgKFNoYXJkZXJUZXN0cy50ZXN0X3NoYXJkX2luX3R3b19oYXNf
bm9fbG9ja2VkX3NoYXJkcyk6IERlbGV0ZWQuCisgICAgICAgIChTaGFyZGVyVGVzdHMudGVzdF9z
aGFyZF9pbl90d29faGFzX25vX3VubG9ja2VkX3NoYXJkcyk6IERlbGV0ZWQuCisgICAgICAgIChT
aGFyZGVyVGVzdHMudGVzdF9tdWx0aXBsZV9sb2NrZWRfc2hhcmRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAoTWFuYWdlclRlc3QudGVzdF9uZWVkc19zZXJ2ZXJzLmdldF9t
YW5hZ2VyKToKKyAgICAgICAgKE1hbmFnZXJUZXN0LmludGVncmF0aW9uX3Rlc3RfbmVlZHNfc2Vy
dmVycy5nZXRfbWFuYWdlcik6CisgICAgICAgIChNYW5hZ2VyVGVzdC50ZXN0X2xvb2tfZm9yX25l
d19jcmFzaF9sb2dzLmdldF9tYW5hZ2VyKToKKyAgICAgICAgKE1hbmFnZXJUZXN0KToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Ogor
ICAgICAgICAoX3NldF91cF9kZXJpdmVkX29wdGlvbnMpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5Ogor
ICAgICAgICAoUnVuVGVzdC50ZXN0X2JhdGNoX3NpemUpOgorICAgICAgICAoUnVuVGVzdC50ZXN0
X21heF9sb2NrZWRfc2hhcmRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weToKKyAgICAgICAgKExh
eW91dFRlc3RBcGFjaGVIdHRwZC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXJfdW5pdHRlc3QucHk6Cisg
ICAgICAgIChUZXN0TGF5b3V0VGVzdEFwYWNoZUh0dHBkLnRlc3Rfc3RhcnRfY21kKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyLnB5
OgorICAgICAgICAoTGlnaHR0cGQuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXJfYmFzZS5weToKKyAgICAgICAgKEh0
dHBTZXJ2ZXJCYXNlLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy92aWV3cy9wcmludGluZy5weToKKyAgICAgICAgKFByaW50ZXIucHJpbnRfd29ya2Vy
c19hbmRfc2hhcmRzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weToK
KyAgICAgICAgKFBvcnQuZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMpOgorICAgICAgICAoUG9ydC50
by5zdGFydF9odHRwX3NlcnZlcik6CisgICAgICAgIChQb3J0LmRlZmF1bHRfbWF4X2xvY2tlZF9z
aGFyZHMpOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rl
c3RjYXNlLnB5OgorICAgICAgICAoUG9ydFRlc3RDYXNlLm1ha2VfcG9ydCk6CisgICAgICAgIChQ
b3J0VGVzdENhc2UudGVzdF9kZWZhdWx0X21heF9sb2NrZWRfc2hhcmRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weToKKyAgICAgICAgKFRlc3RQb3J0
LnN0YXJ0X2h0dHBfc2VydmVyKToKKwogMjAxNC0xMi0wNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBsb2NrIHBlcmYgdGVzdHMgaW4gcnVuLXdl
YmtpdC10ZXN0cwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CShyZXZpc2lvbiAxNzY3MjUpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzEsOSArMzMxLDYgQEAgZGVmIF9zZXRfdXBfZGVyaXZlZF9vcHRpb25z
KHBvcnQsIG9wdGlvbgogICAgIGlmIG5vdCBvcHRpb25zLmNoaWxkX3Byb2Nlc3NlczoKICAgICAg
ICAgb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX1RFU1Rf
Q0hJTERfUFJPQ0VTU0VTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHIocG9ydC5kZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcygpKSkKLSAgICBpZiBu
b3Qgb3B0aW9ucy5tYXhfbG9ja2VkX3NoYXJkczoKLSAgICAgICAgb3B0aW9ucy5tYXhfbG9ja2Vk
X3NoYXJkcyA9IGludChvcy5lbnZpcm9uLmdldCgiV0VCS0lUX1RFU1RfTUFYX0xPQ0tFRF9TSEFS
RFMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cihwb3J0LmRlZmF1bHRfbWF4X2xvY2tlZF9zaGFyZHMoKSkpKQogCiAgICAgaWYgbm90
IG9wdGlvbnMuY29uZmlndXJhdGlvbjoKICAgICAgICAgb3B0aW9ucy5jb25maWd1cmF0aW9uID0g
cG9ydC5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkJKHJldmlzaW9uIDE3NjgxNCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsMjEgKzIyNCw2IEBAIGNsYXNzIFJ1blRlc3QodW5p
dHRlc3QuVGVzdENhc2UsIFN0cmVhbVQKICAgICAgICAgZm9yIGJhdGNoIGluIGJhdGNoX3Rlc3Rz
X3J1bjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oYmF0Y2gpIDw9IDIsICclcyBo
YWQgdG9vIG1hbnkgdGVzdHMnICUgJywgJy5qb2luKGJhdGNoKSkKIAotICAgIGRlZiB0ZXN0X21h
eF9sb2NrZWRfc2hhcmRzKHNlbGYpOgotICAgICAgICAjIFRlc3RzIGZvciB0aGUgZGVmYXVsdCBv
ZiB1c2luZyBvbmUgbG9ja2VkIHNoYXJkIGV2ZW4gaW4gdGhlIGNhc2Ugb2YgbW9yZSB0aGFuIG9u
ZSBjaGlsZCBwcm9jZXNzLgotICAgICAgICBpZiBub3Qgc2VsZi5zaG91bGRfdGVzdF9wcm9jZXNz
ZXM6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2F2ZV9lbnZfd2Via2l0X3Rlc3RfbWF4
X2xvY2tlZF9zaGFyZHMgPSBOb25lCi0gICAgICAgIGlmICJXRUJLSVRfVEVTVF9NQVhfTE9DS0VE
X1NIQVJEUyIgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgIHNhdmVfZW52X3dlYmtpdF90ZXN0
X21heF9sb2NrZWRfc2hhcmRzID0gb3MuZW52aXJvblsiV0VCS0lUX1RFU1RfTUFYX0xPQ0tFRF9T
SEFSRFMiXQotICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bIldFQktJVF9URVNUX01BWF9MT0NL
RURfU0hBUkRTIl0KLSAgICAgICAgXywgcmVndWxhcl9vdXRwdXQsIF8gPSBsb2dnaW5nX3J1bihb
Jy0tZGVidWctcnd0LWxvZ2dpbmcnLCAnLS1jaGlsZC1wcm9jZXNzZXMnLCAnMiddLCBzaGFyZWRf
cG9ydD1GYWxzZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFu
eShbJzEgbG9ja2VkJyBpbiBsaW5lIGZvciBsaW5lIGluIHJlZ3VsYXJfb3V0cHV0LmJ1Zmxpc3Rd
KSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIHNhdmVfZW52X3dlYmtpdF90ZXN0
X21heF9sb2NrZWRfc2hhcmRzOgotICAgICAgICAgICAgICAgIG9zLmVudmlyb25bIldFQktJVF9U
RVNUX01BWF9MT0NLRURfU0hBUkRTIl0gPSBzYXZlX2Vudl93ZWJraXRfdGVzdF9tYXhfbG9ja2Vk
X3NoYXJkcwotCiAgICAgZGVmIHRlc3RfY2hpbGRfcHJvY2Vzc2VzXzIoc2VsZik6CiAgICAgICAg
IGlmIHNlbGYuc2hvdWxkX3Rlc3RfcHJvY2Vzc2VzOgogICAgICAgICAgICAgXywgcmVndWxhcl9v
dXRwdXQsIF8gPSBsb2dnaW5nX3J1bigKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRf
dGVzdF9ydW5uZXIucHkJKHJldmlzaW9uIDE3NjgxNCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weQkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyKG9iamVjdCk6
CiAgICAgICAgIHNlbGYuX3ByaW50ZXIgPSBwcmludGVyCiAgICAgICAgIHNlbGYuX3Jlc3VsdHNf
ZGlyZWN0b3J5ID0gcmVzdWx0c19kaXJlY3RvcnkKICAgICAgICAgc2VsZi5fdGVzdF9pc19zbG93
ID0gdGVzdF9pc19zbG93X2ZuCi0gICAgICAgIHNlbGYuX3NoYXJkZXIgPSBTaGFyZGVyKHNlbGYu
X3BvcnQuc3BsaXRfdGVzdCwgc2VsZi5fb3B0aW9ucy5tYXhfbG9ja2VkX3NoYXJkcykKKyAgICAg
ICAgc2VsZi5fc2hhcmRlciA9IFNoYXJkZXIoc2VsZi5fcG9ydC5zcGxpdF90ZXN0KQogICAgICAg
ICBzZWxmLl9maWxlc3lzdGVtID0gc2VsZi5fcG9ydC5ob3N0LmZpbGVzeXN0ZW0KIAogICAgICAg
ICBzZWxmLl9leHBlY3RhdGlvbnMgPSBOb25lCkBAIC03Nyw3ICs3Nyw2IEBAIGNsYXNzIExheW91
dFRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fcmV0cnlpbmcgPSBGYWxzZQogCiAg
ICAgICAgIHNlbGYuX2N1cnJlbnRfcnVuX3Jlc3VsdHMgPSBOb25lCi0gICAgICAgIHNlbGYuX3Jl
bWFpbmluZ19sb2NrZWRfc2hhcmRzID0gW10KICAgICAgICAgc2VsZi5faGFzX2h0dHBfbG9jayA9
IEZhbHNlCiAKICAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsIGV4cGVjdGF0aW9ucywgdGVzdF9pbnB1
dHMsIHRlc3RzX3RvX3NraXAsIG51bV93b3JrZXJzLCBuZWVkc19odHRwLCBuZWVkc193ZWJzb2Nr
ZXRzLCByZXRyeWluZyk6CkBAIC05MCw3ICs4OSw2IEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXIo
b2JqZWN0KToKICAgICAgICAgIyBGSVhNRTogcmVuYW1lIGFsbCB2YXJpYWJsZXMgdG8gdGVzdF9y
dW5fcmVzdWx0cyBvciBzb21lIHN1Y2ggLi4uCiAgICAgICAgIHJ1bl9yZXN1bHRzID0gVGVzdFJ1
blJlc3VsdHMoc2VsZi5fZXhwZWN0YXRpb25zLCBsZW4odGVzdF9pbnB1dHMpICsgbGVuKHRlc3Rz
X3RvX3NraXApKQogICAgICAgICBzZWxmLl9jdXJyZW50X3J1bl9yZXN1bHRzID0gcnVuX3Jlc3Vs
dHMKLSAgICAgICAgc2VsZi5fcmVtYWluaW5nX2xvY2tlZF9zaGFyZHMgPSBbXQogICAgICAgICBz
ZWxmLl9oYXNfaHR0cF9sb2NrID0gRmFsc2UKICAgICAgICAgc2VsZi5fcHJpbnRlci5udW1fdGVz
dHMgPSBsZW4odGVzdF9pbnB1dHMpCiAgICAgICAgIHNlbGYuX3ByaW50ZXIubnVtX3N0YXJ0ZWQg
PSAwCkBAIC0xMDQsMjMgKzEwMiwxMyBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyKG9iamVjdCk6
CiAgICAgICAgICAgICBydW5fcmVzdWx0cy5hZGQocmVzdWx0LCBleHBlY3RlZD1UcnVlLCB0ZXN0
X2lzX3Nsb3c9c2VsZi5fdGVzdF9pc19zbG93KHRlc3RfbmFtZSkpCiAKICAgICAgICAgc2VsZi5f
cHJpbnRlci53cml0ZV91cGRhdGUoJ1NoYXJkaW5nIHRlc3RzIC4uLicpCi0gICAgICAgIGxvY2tl
ZF9zaGFyZHMsIHVubG9ja2VkX3NoYXJkcyA9IHNlbGYuX3NoYXJkZXIuc2hhcmRfdGVzdHModGVz
dF9pbnB1dHMsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIHNlbGYuX29wdGlv
bnMuZnVsbHlfcGFyYWxsZWwpCisgICAgICAgIGFsbF9zaGFyZHMgPSBzZWxmLl9zaGFyZGVyLnNo
YXJkX3Rlc3RzKHRlc3RfaW5wdXRzLCBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMp
LCBzZWxmLl9vcHRpb25zLmZ1bGx5X3BhcmFsbGVsKQogCi0gICAgICAgICMgRklYTUU6IFdlIGRv
bid0IGhhdmUgYSBnb29kIHdheSB0byBjb29yZGluYXRlIHRoZSB3b3JrZXJzIHNvIHRoYXQKLSAg
ICAgICAgIyB0aGV5IGRvbid0IHRyeSB0byBydW4gdGhlIHNoYXJkcyB0aGF0IG5lZWQgYSBsb2Nr
IGlmIHdlIGRvbid0IGFjdHVhbGx5Ci0gICAgICAgICMgaGF2ZSB0aGUgbG9jay4gVGhlIGVhc2ll
c3Qgc29sdXRpb24gYXQgdGhlIG1vbWVudCBpcyB0byBncmFiIHRoZQotICAgICAgICAjIGxvY2sg
YXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcnVuLCBhbmQgdGhlbiBydW4gYWxsIG9mIHRoZSBsb2Nr
ZWQKLSAgICAgICAgIyBzaGFyZHMgZmlyc3QuIFRoaXMgbWluaW1pemVzIHRoZSB0aW1lIHNwZW50
IGhvbGRpbmcgdGhlIGxvY2ssIGJ1dAotICAgICAgICAjIG1lYW5zIHRoYXQgd2Ugd29uJ3QgYmUg
cnVubmluZyB0ZXN0cyB3aGlsZSB3ZSdyZSB3YWl0aW5nIGZvciB0aGUgbG9jay4KLSAgICAgICAg
IyBJZiB0aGlzIGJlY29tZXMgYSBwcm9ibGVtIGluIHByYWN0aWNlIHdlJ2xsIG5lZWQgdG8gY2hh
bmdlIHRoaXMuCi0KLSAgICAgICAgYWxsX3NoYXJkcyA9IGxvY2tlZF9zaGFyZHMgKyB1bmxvY2tl
ZF9zaGFyZHMKLSAgICAgICAgc2VsZi5fcmVtYWluaW5nX2xvY2tlZF9zaGFyZHMgPSBsb2NrZWRf
c2hhcmRzCi0gICAgICAgIGlmIGxvY2tlZF9zaGFyZHMgYW5kIHNlbGYuX29wdGlvbnMuaHR0cDoK
LSAgICAgICAgICAgIHNlbGYuc3RhcnRfc2VydmVyc193aXRoX2xvY2soMiAqIG1pbihudW1fd29y
a2VycywgbGVuKGxvY2tlZF9zaGFyZHMpKSkKKyAgICAgICAgaWYgc2VsZi5fbmVlZHNfaHR0cCBh
bmQgc2VsZi5fb3B0aW9ucy5odHRwOgorICAgICAgICAgICAgc2VsZi5zdGFydF9zZXJ2ZXJzX3dp
dGhfbG9jaygpCiAKICAgICAgICAgbnVtX3dvcmtlcnMgPSBtaW4obnVtX3dvcmtlcnMsIGxlbihh
bGxfc2hhcmRzKSkKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF93b3JrZXJzX2FuZF9zaGFy
ZHMobnVtX3dvcmtlcnMsIGxlbihhbGxfc2hhcmRzKSwgbGVuKGxvY2tlZF9zaGFyZHMpKQorICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X3dvcmtlcnNfYW5kX3NoYXJkcyhudW1fd29ya2Vycywg
bGVuKGFsbF9zaGFyZHMpKQogCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKICAg
ICAgICAgICAgIHJldHVybiBydW5fcmVzdWx0cwpAQCAtMTk3LDEyICsxODUsMTIgQEAgY2xhc3Mg
TGF5b3V0VGVzdFJ1bm5lcihvYmplY3QpOgogCiAgICAgICAgIHNlbGYuX2ludGVycnVwdF9pZl9h
dF9mYWlsdXJlX2xpbWl0cyhydW5fcmVzdWx0cykKIAotICAgIGRlZiBzdGFydF9zZXJ2ZXJzX3dp
dGhfbG9jayhzZWxmLCBudW1iZXJfb2Zfc2VydmVycyk6CisgICAgZGVmIHN0YXJ0X3NlcnZlcnNf
d2l0aF9sb2NrKHNlbGYpOgogICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSgnQWNx
dWlyaW5nIGh0dHAgbG9jayAuLi4nKQogICAgICAgICBzZWxmLl9wb3J0LmFjcXVpcmVfaHR0cF9s
b2NrKCkKICAgICAgICAgaWYgc2VsZi5fbmVlZHNfaHR0cDoKICAgICAgICAgICAgIHNlbGYuX3By
aW50ZXIud3JpdGVfdXBkYXRlKCdTdGFydGluZyBIVFRQIHNlcnZlciAuLi4nKQotICAgICAgICAg
ICAgc2VsZi5fcG9ydC5zdGFydF9odHRwX3NlcnZlcihudW1iZXJfb2Zfc2VydmVycz1udW1iZXJf
b2Zfc2VydmVycykKKyAgICAgICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfaHR0cF9zZXJ2ZXIoKQog
ICAgICAgICBpZiBzZWxmLl9uZWVkc193ZWJzb2NrZXRzOgogICAgICAgICAgICAgc2VsZi5fcHJp
bnRlci53cml0ZV91cGRhdGUoJ1N0YXJ0aW5nIFdlYlNvY2tldCBzZXJ2ZXIgLi4uJykKICAgICAg
ICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfd2Vic29ja2V0X3NlcnZlcigpCkBAIC0yMjksMTkgKzIx
Nyw2IEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXIob2JqZWN0KToKICAgICBkZWYgX2hhbmRsZV9z
dGFydGVkX3Rlc3Qoc2VsZiwgd29ya2VyX25hbWUsIHRlc3RfaW5wdXQsIHRlc3RfdGltZW91dF9z
ZWMpOgogICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3N0YXJ0ZWRfdGVzdCh0ZXN0X2lucHV0
LnRlc3RfbmFtZSkKIAotICAgIGRlZiBfaGFuZGxlX2ZpbmlzaGVkX3Rlc3RfbGlzdChzZWxmLCB3
b3JrZXJfbmFtZSwgbGlzdF9uYW1lKToKLSAgICAgICAgZGVmIGZpbmQobmFtZSwgdGVzdF9saXN0
cyk6Ci0gICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4odGVzdF9saXN0cykpOgotICAgICAg
ICAgICAgICAgIGlmIHRlc3RfbGlzdHNbaV0ubmFtZSA9PSBuYW1lOgotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gaQotICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAgICAgICAgaW5kZXggPSBm
aW5kKGxpc3RfbmFtZSwgc2VsZi5fcmVtYWluaW5nX2xvY2tlZF9zaGFyZHMpCi0gICAgICAgIGlm
IGluZGV4ID49IDA6Ci0gICAgICAgICAgICBzZWxmLl9yZW1haW5pbmdfbG9ja2VkX3NoYXJkcy5w
b3AoaW5kZXgpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVtYWluaW5nX2xvY2tlZF9zaGFy
ZHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5zdG9wX3NlcnZlcnNfd2l0aF9sb2NrKCkKLQogICAg
IGRlZiBfaGFuZGxlX2ZpbmlzaGVkX3Rlc3Qoc2VsZiwgd29ya2VyX25hbWUsIHJlc3VsdCwgbG9n
X21lc3NhZ2VzPVtdKToKICAgICAgICAgc2VsZi5fdXBkYXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQo
c2VsZi5fY3VycmVudF9ydW5fcmVzdWx0cywgcmVzdWx0KQogCkBAIC0yODEsNyArMjU2LDYgQEAg
Y2xhc3MgV29ya2VyKG9iamVjdCk6CiAgICAgICAgIGFzc2VydCBuYW1lID09ICd0ZXN0X2xpc3Qn
CiAgICAgICAgIGZvciB0ZXN0X2lucHV0IGluIHRlc3RfaW5wdXRzOgogICAgICAgICAgICAgc2Vs
Zi5fcnVuX3Rlc3QodGVzdF9pbnB1dCwgdGVzdF9saXN0X25hbWUpCi0gICAgICAgIHNlbGYuX2Nh
bGxlci5wb3N0KCdmaW5pc2hlZF90ZXN0X2xpc3QnLCB0ZXN0X2xpc3RfbmFtZSkKIAogICAgIGRl
ZiBfdXBkYXRlX3Rlc3RfaW5wdXQoc2VsZiwgdGVzdF9pbnB1dCk6CiAgICAgICAgIGlmIHRlc3Rf
aW5wdXQucmVmZXJlbmNlX2ZpbGVzIGlzIE5vbmU6CkBAIC00NTIsOSArNDI2LDggQEAgY2xhc3Mg
VGVzdFNoYXJkKG9iamVjdCk6CiAKIAogY2xhc3MgU2hhcmRlcihvYmplY3QpOgotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB0ZXN0X3NwbGl0X2ZuLCBtYXhfbG9ja2VkX3NoYXJkcyk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHRlc3Rfc3BsaXRfZm4pOgogICAgICAgICBzZWxmLl9zcGxpdCA9IHRl
c3Rfc3BsaXRfZm4KLSAgICAgICAgc2VsZi5fbWF4X2xvY2tlZF9zaGFyZHMgPSBtYXhfbG9ja2Vk
X3NoYXJkcwogCiAgICAgZGVmIHNoYXJkX3Rlc3RzKHNlbGYsIHRlc3RfaW5wdXRzLCBudW1fd29y
a2VycywgZnVsbHlfcGFyYWxsZWwpOgogICAgICAgICAiIiJHcm91cHMgdGVzdHMgaW50byBiYXRj
aGVzLgpAQCAtNDYyLDY0ICs0MzUsMzcgQEAgY2xhc3MgU2hhcmRlcihvYmplY3QpOgogICAgICAg
ICBjb250aW51ZSB0byBydW4gdG9nZXRoZXIgYXMgbW9zdCBjcm9zcy10ZXN0cyBkZXBlbmRlbmNp
ZXMgdGVuZCB0bwogICAgICAgICBvY2N1ciB3aXRoaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgogICAg
ICAgICBSZXR1cm46Ci0gICAgICAgICAgICBUd28gbGlzdCBvZiBUZXN0U2hhcmRzLiBUaGUgZmly
c3QgY29udGFpbnMgdGVzdHMgdGhhdCBtdXN0IG9ubHkgYmUKLSAgICAgICAgICAgIHJ1biB1bmRl
ciB0aGUgc2VydmVyIGxvY2ssIHRoZSBzZWNvbmQgY2FuIGJlIHJ1biB3aGVuZXZlci4KKyAgICAg
ICAgICAgIEEgbGlzdCBvZiBUZXN0U2hhcmRzLgogICAgICAgICAiIiIKIAogICAgICAgICAjIEZJ
WE1FOiBNb3ZlIGFsbCBvZiB0aGUgc2hhcmRpbmcgbG9naWMgb3V0IG9mIG1hbmFnZXIgaW50byBp
dHMKICAgICAgICAgIyBvd24gY2xhc3Mgb3IgbW9kdWxlLiBDb25zaWRlciBncm91cGluZyBpdCB3
aXRoIHRoZSBjaHVua2luZyBsb2dpYwogICAgICAgICAjIGluIHByZXBhcmVfbGlzdHMgYXMgd2Vs
bC4KICAgICAgICAgaWYgbnVtX3dvcmtlcnMgPT0gMToKLSAgICAgICAgICAgIHJldHVybiBzZWxm
Ll9zaGFyZF9pbl90d28odGVzdF9pbnB1dHMpCisgICAgICAgICAgICByZXR1cm4gW1Rlc3RTaGFy
ZCgnYWxsX3Rlc3RzJywgdGVzdF9pbnB1dHMpXQogICAgICAgICBlbGlmIGZ1bGx5X3BhcmFsbGVs
OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NoYXJkX2V2ZXJ5X2ZpbGUodGVzdF9pbnB1dHMp
CiAgICAgICAgIHJldHVybiBzZWxmLl9zaGFyZF9ieV9kaXJlY3RvcnkodGVzdF9pbnB1dHMsIG51
bV93b3JrZXJzKQogCi0gICAgZGVmIF9zaGFyZF9pbl90d28oc2VsZiwgdGVzdF9pbnB1dHMpOgot
ICAgICAgICAiIiJSZXR1cm5zIHR3byBsaXN0cyBvZiBzaGFyZHMsIG9uZSB3aXRoIGFsbCB0aGUg
dGVzdHMgcmVxdWlyaW5nIGEgbG9jayBhbmQgb25lIHdpdGggdGhlIHJlc3QuCi0KLSAgICAgICAg
VGhpcyBpcyB1c2VkIHdoZW4gdGhlcmUncyBvbmx5IG9uZSB3b3JrZXIsIHRvIG1pbmltaXplIHRo
ZSBwZXItc2hhcmQgb3ZlcmhlYWQuIiIiCi0gICAgICAgIGxvY2tlZF9pbnB1dHMgPSBbXQotICAg
ICAgICB1bmxvY2tlZF9pbnB1dHMgPSBbXQotICAgICAgICBmb3IgdGVzdF9pbnB1dCBpbiB0ZXN0
X2lucHV0czoKLSAgICAgICAgICAgIGlmIHRlc3RfaW5wdXQubmVlZHNfc2VydmVyczoKLSAgICAg
ICAgICAgICAgICBsb2NrZWRfaW5wdXRzLmFwcGVuZCh0ZXN0X2lucHV0KQotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICB1bmxvY2tlZF9pbnB1dHMuYXBwZW5kKHRlc3RfaW5wdXQp
Ci0KLSAgICAgICAgbG9ja2VkX3NoYXJkcyA9IFtdCi0gICAgICAgIHVubG9ja2VkX3NoYXJkcyA9
IFtdCi0gICAgICAgIGlmIGxvY2tlZF9pbnB1dHM6Ci0gICAgICAgICAgICBsb2NrZWRfc2hhcmRz
ID0gW1Rlc3RTaGFyZCgnbG9ja2VkX3Rlc3RzJywgbG9ja2VkX2lucHV0cyldCi0gICAgICAgIGlm
IHVubG9ja2VkX2lucHV0czoKLSAgICAgICAgICAgIHVubG9ja2VkX3NoYXJkcyA9IFtUZXN0U2hh
cmQoJ3VubG9ja2VkX3Rlc3RzJywgdW5sb2NrZWRfaW5wdXRzKV0KLQotICAgICAgICByZXR1cm4g
bG9ja2VkX3NoYXJkcywgdW5sb2NrZWRfc2hhcmRzCi0KICAgICBkZWYgX3NoYXJkX2V2ZXJ5X2Zp
bGUoc2VsZiwgdGVzdF9pbnB1dHMpOgotICAgICAgICAiIiJSZXR1cm5zIHR3byBsaXN0cyBvZiBz
aGFyZHMsIGVhY2ggc2hhcmQgY29udGFpbmluZyBhIHNpbmdsZSB0ZXN0IGZpbGUuCisgICAgICAg
ICIiIlJldHVybnMgYSBsaXN0IG9mIHNoYXJkcywgZWFjaCBzaGFyZCBjb250YWluaW5nIGEgc2lu
Z2xlIHRlc3QgZmlsZS4KIAogICAgICAgICBUaGlzIG1vZGUgZ2V0cyBtYXhpbWFsIHBhcmFsbGVs
aXNtIGF0IHRoZSBjb3N0IG9mIG11Y2ggaGlnaGVyIGZsYWtpbmVzcy4iIiIKLSAgICAgICAgbG9j
a2VkX3NoYXJkcyA9IFtdCi0gICAgICAgIHVubG9ja2VkX3NoYXJkcyA9IFtdCisgICAgICAgIHNo
YXJkcyA9IFtdCiAgICAgICAgIGZvciB0ZXN0X2lucHV0IGluIHRlc3RfaW5wdXRzOgogICAgICAg
ICAgICAgIyBOb3RlIHRoYXQgd2UgdXNlIGEgJy4nIGZvciB0aGUgc2hhcmQgbmFtZTsgdGhlIG5h
bWUgZG9lc24ndCByZWFsbHkKICAgICAgICAgICAgICMgbWF0dGVyLCBhbmQgdGhlIG9ubHkgb3Ro
ZXIgbWVhbmluZ2Z1bCB2YWx1ZSB3b3VsZCBiZSB0aGUgZmlsZW5hbWUsCiAgICAgICAgICAgICAj
IHdoaWNoIHdvdWxkIGJlIHJlYWxseSByZWR1bmRhbnQuCi0gICAgICAgICAgICBpZiB0ZXN0X2lu
cHV0Lm5lZWRzX3NlcnZlcnM6Ci0gICAgICAgICAgICAgICAgbG9ja2VkX3NoYXJkcy5hcHBlbmQo
VGVzdFNoYXJkKCcuJywgW3Rlc3RfaW5wdXRdKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLmFwcGVuZChUZXN0U2hhcmQoJy4nLCBbdGVzdF9pbnB1
dF0pKQorICAgICAgICAgICAgc2hhcmRzLmFwcGVuZChUZXN0U2hhcmQoJy4nLCBbdGVzdF9pbnB1
dF0pKQogCi0gICAgICAgIHJldHVybiBsb2NrZWRfc2hhcmRzLCB1bmxvY2tlZF9zaGFyZHMKKyAg
ICAgICAgcmV0dXJuIHNoYXJkcwogCiAgICAgZGVmIF9zaGFyZF9ieV9kaXJlY3Rvcnkoc2VsZiwg
dGVzdF9pbnB1dHMsIG51bV93b3JrZXJzKToKLSAgICAgICAgIiIiUmV0dXJucyB0d28gbGlzdHMg
b2Ygc2hhcmRzLCBlYWNoIHNoYXJkIGNvbnRhaW5pbmcgYWxsIHRoZSBmaWxlcyBpbiBhIGRpcmVj
dG9yeS4KKyAgICAgICAgIiIiUmV0dXJucyBhIGxpc3RzIG9mIHNoYXJkcywgZWFjaCBzaGFyZCBj
b250YWluaW5nIGFsbCB0aGUgZmlsZXMgaW4gYSBkaXJlY3RvcnkuCiAKICAgICAgICAgVGhpcyBp
cyB0aGUgZGVmYXVsdCBtb2RlLCBhbmQgZ2V0cyBhcyBtdWNoIHBhcmFsbGVsaXNtIGFzIHdlIGNh
biB3aGlsZQogICAgICAgICBtaW5pbWl6aW5nIGZsYWtpbmVzcyBjYXVzZWQgYnkgaW50ZXItdGVz
dCBkZXBlbmRlbmNpZXMuIiIiCi0gICAgICAgIGxvY2tlZF9zaGFyZHMgPSBbXQotICAgICAgICB1
bmxvY2tlZF9zaGFyZHMgPSBbXQorICAgICAgICBzaGFyZHMgPSBbXQogICAgICAgICB0ZXN0c19i
eV9kaXIgPSB7fQogICAgICAgICAjIEZJWE1FOiBHaXZlbiB0aGF0IHRoZSB0ZXN0cyBhcmUgYWxy
ZWFkeSBzb3J0ZWQgYnkgZGlyZWN0b3J5LAogICAgICAgICAjIHdlIGNhbiBwcm9iYWJseSByZXdy
aXRlIHRoaXMgdG8gYmUgY2xlYXJlciBhbmQgZmFzdGVyLgpAQCAtNTMwLDUzICs0NzYsOSBAQCBj
bGFzcyBTaGFyZGVyKG9iamVjdCk6CiAKICAgICAgICAgZm9yIGRpcmVjdG9yeSwgdGVzdF9pbnB1
dHMgaW4gdGVzdHNfYnlfZGlyLml0ZXJpdGVtcygpOgogICAgICAgICAgICAgc2hhcmQgPSBUZXN0
U2hhcmQoZGlyZWN0b3J5LCB0ZXN0X2lucHV0cykKLSAgICAgICAgICAgIGlmIHRlc3RfaW5wdXRz
WzBdLm5lZWRzX3NlcnZlcnM6Ci0gICAgICAgICAgICAgICAgbG9ja2VkX3NoYXJkcy5hcHBlbmQo
c2hhcmQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHVubG9ja2VkX3NoYXJk
cy5hcHBlbmQoc2hhcmQpCisgICAgICAgICAgICBzaGFyZHMuYXBwZW5kKHNoYXJkKQogCiAgICAg
ICAgICMgU29ydCB0aGUgc2hhcmRzIGJ5IGRpcmVjdG9yeSBuYW1lLgotICAgICAgICBsb2NrZWRf
c2hhcmRzLnNvcnQoa2V5PWxhbWJkYSBzaGFyZDogc2hhcmQubmFtZSkKLSAgICAgICAgdW5sb2Nr
ZWRfc2hhcmRzLnNvcnQoa2V5PWxhbWJkYSBzaGFyZDogc2hhcmQubmFtZSkKLQotICAgICAgICAj
IFB1dCBhIGNlaWxpbmcgb24gdGhlIG51bWJlciBvZiBsb2NrZWQgc2hhcmRzLCBzbyB0aGF0IHdl
Ci0gICAgICAgICMgZG9uJ3QgaGFtbWVyIHRoZSBzZXJ2ZXJzIHRvbyBiYWRseS4KLQotICAgICAg
ICAjIEZJWE1FOiBGb3Igbm93LCBsaW1pdCB0byBvbmUgc2hhcmQgb3Igc2V0IGl0Ci0gICAgICAg
ICMgd2l0aCB0aGUgLS1tYXgtbG9ja2VkLXNoYXJkcy4gQWZ0ZXIgdGVzdGluZyB0byBtYWtlIHN1
cmUgd2UKLSAgICAgICAgIyBjYW4gaGFuZGxlIG11bHRpcGxlIHNoYXJkcywgd2Ugc2hvdWxkIHBy
b2JhYmx5IGRvIHNvbWV0aGluZyBsaWtlCi0gICAgICAgICMgbGltaXQgdGhpcyB0byBubyBtb3Jl
IHRoYW4gYSBxdWFydGVyIG9mIGFsbCB3b3JrZXJzLCBlLmcuOgotICAgICAgICAjIHJldHVybiBt
YXgobWF0aC5jZWlsKG51bV93b3JrZXJzIC8gNC4wKSwgMSkKLSAgICAgICAgcmV0dXJuIChzZWxm
Ll9yZXNpemVfc2hhcmRzKGxvY2tlZF9zaGFyZHMsIHNlbGYuX21heF9sb2NrZWRfc2hhcmRzLCAn
bG9ja2VkX3NoYXJkJyksCi0gICAgICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzKQotCi0gICAg
ZGVmIF9yZXNpemVfc2hhcmRzKHNlbGYsIG9sZF9zaGFyZHMsIG1heF9uZXdfc2hhcmRzLCBzaGFy
ZF9uYW1lX3ByZWZpeCk6Ci0gICAgICAgICIiIlRha2VzIGEgbGlzdCBvZiBzaGFyZHMgYW5kIHJl
ZGlzdHJpYnV0ZXMgdGhlIHRlc3RzIGludG8gbm8gbW9yZQotICAgICAgICB0aGFuIHxtYXhfbmV3
X3NoYXJkc3wgbmV3IHNoYXJkcy4iIiIKLQotICAgICAgICAjIFRoaXMgaW1wbGVtZW50YXRpb24g
YXNzdW1lcyB0aGF0IGVhY2ggaW5wdXQgc2hhcmQgb25seSBjb250YWlucyB0ZXN0cyBmcm9tIGEK
LSAgICAgICAgIyBzaW5nbGUgZGlyZWN0b3J5LCBhbmQgdGhhdCB0ZXN0cyBpbiBlYWNoIHNoYXJk
IG11c3QgcmVtYWluIHRvZ2V0aGVyOyBhcyBhCi0gICAgICAgICMgcmVzdWx0LCBhIGdpdmVuIGlu
cHV0IHNoYXJkIGlzIG5ldmVyIHNwbGl0IGJldHdlZW4gb3V0cHV0IHNoYXJkcy4KLSAgICAgICAg
IwotICAgICAgICAjIEVhY2ggb3V0cHV0IHNoYXJkIGNvbnRhaW5zIHRoZSB0ZXN0cyBmcm9tIG9u
ZSBvciBtb3JlIGlucHV0IHNoYXJkcyBhbmQKLSAgICAgICAgIyBoZW5jZSBtYXkgY29udGFpbiB0
ZXN0cyBmcm9tIG11bHRpcGxlIGRpcmVjdG9yaWVzLgotCi0gICAgICAgIGRlZiBkaXZpZGVfYW5k
X3JvdW5kX3VwKG51bWVyYXRvciwgZGl2aXNvcik6Ci0gICAgICAgICAgICByZXR1cm4gaW50KG1h
dGguY2VpbChmbG9hdChudW1lcmF0b3IpIC8gZGl2aXNvcikpCisgICAgICAgIHNoYXJkcy5zb3J0
KGtleT1sYW1iZGEgc2hhcmQ6IHNoYXJkLm5hbWUpCiAKLSAgICAgICAgZGVmIGV4dHJhY3RfYW5k
X2ZsYXR0ZW4oc2hhcmRzKToKLSAgICAgICAgICAgIHRlc3RfaW5wdXRzID0gW10KLSAgICAgICAg
ICAgIGZvciBzaGFyZCBpbiBzaGFyZHM6Ci0gICAgICAgICAgICAgICAgdGVzdF9pbnB1dHMuZXh0
ZW5kKHNoYXJkLnRlc3RfaW5wdXRzKQotICAgICAgICAgICAgcmV0dXJuIHRlc3RfaW5wdXRzCi0K
LSAgICAgICAgZGVmIHNwbGl0X2F0KHNlcSwgaW5kZXgpOgotICAgICAgICAgICAgcmV0dXJuIChz
ZXFbOmluZGV4XSwgc2VxW2luZGV4Ol0pCi0KLSAgICAgICAgbnVtX29sZF9wZXJfbmV3ID0gZGl2
aWRlX2FuZF9yb3VuZF91cChsZW4ob2xkX3NoYXJkcyksIG1heF9uZXdfc2hhcmRzKQotICAgICAg
ICBuZXdfc2hhcmRzID0gW10KLSAgICAgICAgcmVtYWluaW5nX3NoYXJkcyA9IG9sZF9zaGFyZHMK
LSAgICAgICAgd2hpbGUgcmVtYWluaW5nX3NoYXJkczoKLSAgICAgICAgICAgIHNvbWVfc2hhcmRz
LCByZW1haW5pbmdfc2hhcmRzID0gc3BsaXRfYXQocmVtYWluaW5nX3NoYXJkcywgbnVtX29sZF9w
ZXJfbmV3KQotICAgICAgICAgICAgbmV3X3NoYXJkcy5hcHBlbmQoVGVzdFNoYXJkKCclc18lZCcg
JSAoc2hhcmRfbmFtZV9wcmVmaXgsIGxlbihuZXdfc2hhcmRzKSArIDEpLCBleHRyYWN0X2FuZF9m
bGF0dGVuKHNvbWVfc2hhcmRzKSkpCi0gICAgICAgIHJldHVybiBuZXdfc2hhcmRzCisgICAgICAg
IHJldHVybiBzaGFyZHMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lcl91bml0dGVzdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRf
dGVzdF9ydW5uZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE3NjgxNCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lcl91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBGYWtlUHJp
bnRlcihvYmplY3QpOgogICAgIGRlZiBwcmludF9leHBlY3RlZChzZWxmLCBydW5fcmVzdWx0cywg
Z2V0X3Rlc3RzX3dpdGhfcmVzdWx0X3R5cGUpOgogICAgICAgICBwYXNzCiAKLSAgICBkZWYgcHJp
bnRfd29ya2Vyc19hbmRfc2hhcmRzKHNlbGYsIG51bV93b3JrZXJzLCBudW1fc2hhcmRzLCBudW1f
bG9ja2VkX3NoYXJkcyk6CisgICAgZGVmIHByaW50X3dvcmtlcnNfYW5kX3NoYXJkcyhzZWxmLCBu
dW1fd29ya2VycywgbnVtX3NoYXJkcyk6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBwcmludF9z
dGFydGVkX3Rlc3Qoc2VsZiwgdGVzdF9uYW1lKToKQEAgLTE2Niw3ICsxNjYsNyBAQCBjbGFzcyBM
YXlvdXRUZXN0UnVubmVyVGVzdHModW5pdHRlc3QuVGVzCiAKICAgICBkZWYgdGVzdF9zZXJ2ZXJz
X3N0YXJ0ZWQoc2VsZik6CiAKLSAgICAgICAgZGVmIHN0YXJ0X2h0dHBfc2VydmVyKG51bWJlcl9v
Zl9zZXJ2ZXJzPU5vbmUpOgorICAgICAgICBkZWYgc3RhcnRfaHR0cF9zZXJ2ZXIoKToKICAgICAg
ICAgICAgIHNlbGYuaHR0cF9zdGFydGVkID0gVHJ1ZQogCiAgICAgICAgIGRlZiBzdGFydF93ZWJz
b2NrZXRfc2VydmVyKCk6CkBAIC0xODksNyArMTg5LDcgQEAgY2xhc3MgTGF5b3V0VGVzdFJ1bm5l
clRlc3RzKHVuaXR0ZXN0LlRlcwogICAgICAgICBydW5uZXIgPSBzZWxmLl9ydW5uZXIocG9ydD1w
b3J0KQogICAgICAgICBydW5uZXIuX25lZWRzX2h0dHAgPSBUcnVlCiAgICAgICAgIHJ1bm5lci5f
bmVlZHNfd2Vic29ja2V0cyA9IEZhbHNlCi0gICAgICAgIHJ1bm5lci5zdGFydF9zZXJ2ZXJzX3dp
dGhfbG9jayhudW1iZXJfb2Zfc2VydmVycz00KQorICAgICAgICBydW5uZXIuc3RhcnRfc2VydmVy
c193aXRoX2xvY2soKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaHR0cF9zdGFydGVk
LCBUcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYud2Vic29ja2V0X3N0YXJ0ZWQs
IEZhbHNlKQogICAgICAgICBydW5uZXIuc3RvcF9zZXJ2ZXJzX3dpdGhfbG9jaygpCkBAIC0xOTks
NyArMTk5LDcgQEAgY2xhc3MgTGF5b3V0VGVzdFJ1bm5lclRlc3RzKHVuaXR0ZXN0LlRlcwogICAg
ICAgICBzZWxmLmh0dHBfc3RhcnRlZCA9IHNlbGYuaHR0cF9zdG9wcGVkID0gc2VsZi53ZWJzb2Nr
ZXRfc3RhcnRlZCA9IHNlbGYud2Vic29ja2V0X3N0b3BwZWQgPSBGYWxzZQogICAgICAgICBydW5u
ZXIuX25lZWRzX2h0dHAgPSBUcnVlCiAgICAgICAgIHJ1bm5lci5fbmVlZHNfd2Vic29ja2V0cyA9
IFRydWUKLSAgICAgICAgcnVubmVyLnN0YXJ0X3NlcnZlcnNfd2l0aF9sb2NrKG51bWJlcl9vZl9z
ZXJ2ZXJzPTQpCisgICAgICAgIHJ1bm5lci5zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jaygpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5odHRwX3N0YXJ0ZWQsIFRydWUpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi53ZWJzb2NrZXRfc3RhcnRlZCwgVHJ1ZSkKICAgICAgICAgcnVu
bmVyLnN0b3Bfc2VydmVyc193aXRoX2xvY2soKQpAQCAtMjA5LDcgKzIwOSw3IEBAIGNsYXNzIExh
eW91dFRlc3RSdW5uZXJUZXN0cyh1bml0dGVzdC5UZXMKICAgICAgICAgc2VsZi5odHRwX3N0YXJ0
ZWQgPSBzZWxmLmh0dHBfc3RvcHBlZCA9IHNlbGYud2Vic29ja2V0X3N0YXJ0ZWQgPSBzZWxmLndl
YnNvY2tldF9zdG9wcGVkID0gRmFsc2UKICAgICAgICAgcnVubmVyLl9uZWVkc19odHRwID0gRmFs
c2UKICAgICAgICAgcnVubmVyLl9uZWVkc193ZWJzb2NrZXRzID0gRmFsc2UKLSAgICAgICAgcnVu
bmVyLnN0YXJ0X3NlcnZlcnNfd2l0aF9sb2NrKG51bWJlcl9vZl9zZXJ2ZXJzPTQpCisgICAgICAg
IHJ1bm5lci5zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jaygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5odHRwX3N0YXJ0ZWQsIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYud2Vic29ja2V0X3N0YXJ0ZWQsIEZhbHNlKQogICAgICAgICBydW5uZXIuc3RvcF9zZXJ2ZXJz
X3dpdGhfbG9jaygpCkBAIC0yMzQsOSArMjM0LDkgQEAgY2xhc3MgU2hhcmRlclRlc3RzKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgZ2V0X3Rlc3RfaW5wdXQoc2VsZiwgdGVzdF9maWxlKToK
ICAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIG5lZWRzX3NlcnZlcnM9KHRlc3Rf
ZmlsZS5zdGFydHN3aXRoKCdodHRwJykpKQogCi0gICAgZGVmIGdldF9zaGFyZHMoc2VsZiwgbnVt
X3dvcmtlcnMsIGZ1bGx5X3BhcmFsbGVsLCB0ZXN0X2xpc3Q9Tm9uZSwgbWF4X2xvY2tlZF9zaGFy
ZHM9MSk6CisgICAgZGVmIGdldF9zaGFyZHMoc2VsZiwgbnVtX3dvcmtlcnMsIGZ1bGx5X3BhcmFs
bGVsLCB0ZXN0X2xpc3Q9Tm9uZSk6CiAgICAgICAgIHBvcnQgPSBUZXN0UG9ydChNb2NrU3lzdGVt
SG9zdCgpKQotICAgICAgICBzZWxmLnNoYXJkZXIgPSBTaGFyZGVyKHBvcnQuc3BsaXRfdGVzdCwg
bWF4X2xvY2tlZF9zaGFyZHMpCisgICAgICAgIHNlbGYuc2hhcmRlciA9IFNoYXJkZXIocG9ydC5z
cGxpdF90ZXN0KQogICAgICAgICB0ZXN0X2xpc3QgPSB0ZXN0X2xpc3Qgb3Igc2VsZi50ZXN0X2xp
c3QKICAgICAgICAgcmV0dXJuIHNlbGYuc2hhcmRlci5zaGFyZF90ZXN0cyhbc2VsZi5nZXRfdGVz
dF9pbnB1dCh0ZXN0KSBmb3IgdGVzdCBpbiB0ZXN0X2xpc3RdLCBudW1fd29ya2VycywgZnVsbHlf
cGFyYWxsZWwpCiAKQEAgLTI0OSw4MCArMjQ5LDI3IEBAIGNsYXNzIFNoYXJkZXJUZXN0cyh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90
ZXN0X25hbWVzKQogCiAgICAgZGVmIHRlc3Rfc2hhcmRfYnlfZGlyKHNlbGYpOgotICAgICAgICBs
b2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hhcmRzKG51bV93b3JrZXJzPTIsIGZ1bGx5X3Bh
cmFsbGVsPUZhbHNlKQorICAgICAgICByZXN1bHQgPSBzZWxmLmdldF9zaGFyZHMobnVtX3dvcmtl
cnM9MiwgZnVsbHlfcGFyYWxsZWw9RmFsc2UpCiAKLSAgICAgICAgIyBOb3RlIHRoYXQgYWx0aG91
Z2ggdGhlcmUgYXJlIHRlc3RzIGluIG11bHRpcGxlIGRpcnMgdGhhdCBuZWVkIGxvY2tzLAotICAg
ICAgICAjIHRoZXkgYXJlIGNyYW1tZWQgaW50byBhIHNpbmdsZSBzaGFyZCBpbiBvcmRlciB0byBy
ZWR1Y2UgdGhlICMgb2YKLSAgICAgICAgIyB3b3JrZXJzIGhpdHRpbmcgdGhlIHNlcnZlciBhdCBv
bmNlLgotICAgICAgICBzZWxmLmFzc2VydF9zaGFyZHMobG9ja2VkLAotICAgICAgICAgICAgIFso
J2xvY2tlZF9zaGFyZF8xJywKLSAgICAgICAgICAgICAgIFsnaHR0cC90ZXN0cy9zZWN1cml0eS92
aWV3LXNvdXJjZS1uby1yZWZyZXNoLmh0bWwnLAotICAgICAgICAgICAgICAgICdodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bScsCi0gICAgICAgICAgICAgICAgJ2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwnLAotICAg
ICAgICAgICAgICAgICdodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3N1cHBvcnRlZC14bWwtY29u
dGVudC10eXBlcy5odG1sJ10pXSkKLSAgICAgICAgc2VsZi5hc3NlcnRfc2hhcmRzKHVubG9ja2Vk
LAorICAgICAgICBzZWxmLmFzc2VydF9zaGFyZHMocmVzdWx0LAogICAgICAgICAgICAgWygnYW5p
bWF0aW9ucycsIFsnYW5pbWF0aW9ucy9rZXlmcmFtZXMuaHRtbCddKSwKICAgICAgICAgICAgICAo
J2RvbS9odG1sL2xldmVsMi9odG1sJywgWydkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudDAzLmh0bWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
ZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQwNi5odG1sJ10pLAogICAgICAg
ICAgICAgICgnZmFzdC9jc3MnLCBbJ2Zhc3QvY3NzL2Rpc3BsYXktbm9uZS1pbmxpbmUtc3R5bGUt
Y2hhbmdlLWNyYXNoLmh0bWwnXSksCisgICAgICAgICAgICAgKCdodHRwL3Rlc3RzL3NlY3VyaXR5
JywgWydodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5vLXJlZnJlc2guaHRtbCddKSwK
KyAgICAgICAgICAgICAoJ2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzJywgWydodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bScsICdodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy93ZWJzb2NrZXQtcHJvdG9jb2wtaWdub3JlZC5odG1sJ10pLAorICAgICAgICAgICAgICgnaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdCcsIFsnaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBw
b3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCddKSwKICAgICAgICAgICAgICAoJ2lldGVzdGNl
bnRlci9KYXZhc2NyaXB0JywgWydpZXRlc3RjZW50ZXIvSmF2YXNjcmlwdC8xMS4xLjVfNC00LWMt
MS5odG1sJ10pXSkKIAogICAgIGRlZiB0ZXN0X3NoYXJkX2V2ZXJ5X2ZpbGUoc2VsZik6Ci0gICAg
ICAgIGxvY2tlZCwgdW5sb2NrZWQgPSBzZWxmLmdldF9zaGFyZHMobnVtX3dvcmtlcnM9MiwgZnVs
bHlfcGFyYWxsZWw9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfc2hhcmRzKGxvY2tlZCwKKyAg
ICAgICAgcmVzdWx0ID0gc2VsZi5nZXRfc2hhcmRzKG51bV93b3JrZXJzPTIsIGZ1bGx5X3BhcmFs
bGVsPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0X3NoYXJkcyhyZXN1bHQsCiAgICAgICAgICAg
ICBbKCcuJywgWydodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bSddKSwKKyAg
ICAgICAgICAgICAoJy4nLCBbJ2FuaW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwnXSksCiAgICAgICAg
ICAgICAgKCcuJywgWydodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5vLXJlZnJlc2gu
aHRtbCddKSwKICAgICAgICAgICAgICAoJy4nLCBbJ2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwnXSksCi0gICAgICAgICAgICAgKCcuJywg
WydodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3N1cHBvcnRlZC14bWwtY29udGVudC10eXBlcy5o
dG1sJ10pXSksCi0gICAgICAgIHNlbGYuYXNzZXJ0X3NoYXJkcyh1bmxvY2tlZCwKLSAgICAgICAg
ICAgIFsoJy4nLCBbJ2FuaW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwnXSksCiAgICAgICAgICAgICAg
KCcuJywgWydmYXN0L2Nzcy9kaXNwbGF5LW5vbmUtaW5saW5lLXN0eWxlLWNoYW5nZS1jcmFzaC5o
dG1sJ10pLAorICAgICAgICAgICAgICgnLicsIFsnaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9z
dXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCddKSwKICAgICAgICAgICAgICAoJy4nLCBb
J2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50MDMuaHRtbCddKSwKICAgICAg
ICAgICAgICAoJy4nLCBbJ2lldGVzdGNlbnRlci9KYXZhc2NyaXB0LzExLjEuNV80LTQtYy0xLmh0
bWwnXSksCiAgICAgICAgICAgICAgKCcuJywgWydkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudDA2Lmh0bWwnXSldKQotCi0gICAgZGVmIHRlc3Rfc2hhcmRfaW5fdHdvKHNlbGYp
OgotICAgICAgICBsb2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hhcmRzKG51bV93b3JrZXJz
PTEsIGZ1bGx5X3BhcmFsbGVsPUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydF9zaGFyZHMobG9j
a2VkLAotICAgICAgICAgICAgWygnbG9ja2VkX3Rlc3RzJywKLSAgICAgICAgICAgICAgWydodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bScsCi0gICAgICAgICAgICAgICAnaHR0
cC90ZXN0cy9zZWN1cml0eS92aWV3LXNvdXJjZS1uby1yZWZyZXNoLmh0bWwnLAotICAgICAgICAg
ICAgICAgJ2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25v
cmVkLmh0bWwnLAotICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3Vw
cG9ydGVkLXhtbC1jb250ZW50LXR5cGVzLmh0bWwnXSldKQotICAgICAgICBzZWxmLmFzc2VydF9z
aGFyZHModW5sb2NrZWQsCi0gICAgICAgICAgICBbKCd1bmxvY2tlZF90ZXN0cycsCi0gICAgICAg
ICAgICAgIFsnYW5pbWF0aW9ucy9rZXlmcmFtZXMuaHRtbCcsCi0gICAgICAgICAgICAgICAnZmFz
dC9jc3MvZGlzcGxheS1ub25lLWlubGluZS1zdHlsZS1jaGFuZ2UtY3Jhc2guaHRtbCcsCi0gICAg
ICAgICAgICAgICAnZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQwMy5odG1s
JywKLSAgICAgICAgICAgICAgICdpZXRlc3RjZW50ZXIvSmF2YXNjcmlwdC8xMS4xLjVfNC00LWMt
MS5odG1sJywKLSAgICAgICAgICAgICAgICdkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudDA2Lmh0bWwnXSldKQotCi0gICAgZGVmIHRlc3Rfc2hhcmRfaW5fdHdvX2hhc19ub19s
b2NrZWRfc2hhcmRzKHNlbGYpOgotICAgICAgICBsb2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRf
c2hhcmRzKG51bV93b3JrZXJzPTEsIGZ1bGx5X3BhcmFsbGVsPUZhbHNlLAotICAgICAgICAgICAg
IHRlc3RfbGlzdD1bJ2FuaW1hdGlvbnMva2V5ZnJhbWUuaHRtbCddKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihsb2NrZWQpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih1
bmxvY2tlZCksIDEpCi0KLSAgICBkZWYgdGVzdF9zaGFyZF9pbl90d29faGFzX25vX3VubG9ja2Vk
X3NoYXJkcyhzZWxmKToKLSAgICAgICAgbG9ja2VkLCB1bmxvY2tlZCA9IHNlbGYuZ2V0X3NoYXJk
cyhudW1fd29ya2Vycz0xLCBmdWxseV9wYXJhbGxlbD1GYWxzZSwKLSAgICAgICAgICAgICB0ZXN0
X2xpc3Q9WydodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bSddKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihsb2NrZWQpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbih1bmxvY2tlZCksIDApCi0KLSAgICBkZWYgdGVzdF9tdWx0aXBsZV9sb2NrZWRfc2hh
cmRzKHNlbGYpOgotICAgICAgICBsb2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hhcmRzKG51
bV93b3JrZXJzPTQsIGZ1bGx5X3BhcmFsbGVsPUZhbHNlLCBtYXhfbG9ja2VkX3NoYXJkcz0yKQot
ICAgICAgICBzZWxmLmFzc2VydF9zaGFyZHMobG9ja2VkLAotICAgICAgICAgICAgWygnbG9ja2Vk
X3NoYXJkXzEnLAotICAgICAgICAgICAgICBbJ2h0dHAvdGVzdHMvc2VjdXJpdHkvdmlldy1zb3Vy
Y2Utbm8tcmVmcmVzaC5odG1sJywKLSAgICAgICAgICAgICAgICdodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy91bmljb2RlLmh0bScsCi0gICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvd2Vic29ja2V0LXByb3RvY29sLWlnbm9yZWQuaHRtbCddKSwKLSAgICAgICAgICAg
ICAoJ2xvY2tlZF9zaGFyZF8yJywKLSAgICAgICAgICAgICAgWydodHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3N1cHBvcnRlZC14bWwtY29udGVudC10eXBlcy5odG1sJ10pXSkKLQotICAgICAgICBs
b2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hhcmRzKG51bV93b3JrZXJzPTQsIGZ1bGx5X3Bh
cmFsbGVsPUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydF9zaGFyZHMobG9ja2VkLAotICAgICAg
ICAgICAgWygnbG9ja2VkX3NoYXJkXzEnLAotICAgICAgICAgICAgICBbJ2h0dHAvdGVzdHMvc2Vj
dXJpdHkvdmlldy1zb3VyY2Utbm8tcmVmcmVzaC5odG1sJywKLSAgICAgICAgICAgICAgICdodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bScsCi0gICAgICAgICAgICAgICAnaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvd2Vic29ja2V0LXByb3RvY29sLWlnbm9yZWQuaHRtbCcs
Ci0gICAgICAgICAgICAgICAnaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1s
LWNvbnRlbnQtdHlwZXMuaHRtbCddKV0pCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJf
dW5pdHRlc3QucHkJKHJldmlzaW9uIDE3NjcyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTWFuYWdlclRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICBkZWYgZ2V0X21hbmFnZXIoKToKICAgICAgICAgICAgIHBvcnQgPSBNb2NrKCkg
ICMgRklYTUU6IFVzZSBhIHRpZ2h0ZXIgbW9jay4KICAgICAgICAgICAgIHBvcnQuVEVTVF9QQVRI
X1NFUEFSQVRPUiA9ICcvJwotICAgICAgICAgICAgbWFuYWdlciA9IE1hbmFnZXIocG9ydCwgb3B0
aW9ucz1Nb2NrT3B0aW9ucyhodHRwPVRydWUsIG1heF9sb2NrZWRfc2hhcmRzPTEpLCBwcmludGVy
PU1vY2soKSkKKyAgICAgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyKHBvcnQsIG9wdGlvbnM9TW9j
a09wdGlvbnMoaHR0cD1UcnVlKSwgcHJpbnRlcj1Nb2NrKCkpCiAgICAgICAgICAgICByZXR1cm4g
bWFuYWdlcgogCiAgICAgICAgIG1hbmFnZXIgPSBnZXRfbWFuYWdlcigpCkBAIC01OSw3ICs1OSw3
IEBAIGNsYXNzIE1hbmFnZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZGVmIGdl
dF9tYW5hZ2VyKCk6CiAgICAgICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICAgICAg
cG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgpCi0gICAgICAgICAgICBtYW5hZ2VyID0gTWFu
YWdlcihwb3J0LCBvcHRpb25zPU1vY2tPcHRpb25zKHRlc3RfbGlzdD1Ob25lLCBodHRwPVRydWUs
IG1heF9sb2NrZWRfc2hhcmRzPTEpLCBwcmludGVyPU1vY2soKSkKKyAgICAgICAgICAgIG1hbmFn
ZXIgPSBNYW5hZ2VyKHBvcnQsIG9wdGlvbnM9TW9ja09wdGlvbnModGVzdF9saXN0PU5vbmUsIGh0
dHA9VHJ1ZSksIHByaW50ZXI9TW9jaygpKQogICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXIKIAog
ICAgICAgICBtYW5hZ2VyID0gZ2V0X21hbmFnZXIoKQpAQCAtNzksNyArNzksNyBAQCBjbGFzcyBN
YW5hZ2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiBnZXRfbWFuYWdlcigp
OgogICAgICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgICAgIHBvcnQgPSBob3N0
LnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QtbWFjLWxlb3BhcmQnKQotICAgICAgICAgICAgbWFuYWdl
ciA9IE1hbmFnZXIocG9ydCwgb3B0aW9ucz1Nb2NrT3B0aW9ucyh0ZXN0X2xpc3Q9Tm9uZSwgaHR0
cD1UcnVlLCBtYXhfbG9ja2VkX3NoYXJkcz0xKSwgcHJpbnRlcj1Nb2NrKCkpCisgICAgICAgICAg
ICBtYW5hZ2VyID0gTWFuYWdlcihwb3J0LCBvcHRpb25zPU1vY2tPcHRpb25zKHRlc3RfbGlzdD1O
b25lLCBodHRwPVRydWUpLCBwcmludGVyPU1vY2soKSkKICAgICAgICAgICAgIHJldHVybiBtYW5h
Z2VyCiAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIHBvcnQgPSBob3N0LnBvcnRf
ZmFjdG9yeS5nZXQoJ3Rlc3QtbWFjLWxlb3BhcmQnKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVf
aHR0cF9zZXJ2ZXIucHkJKHJldmlzaW9uIDE3NjcyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC00MiwxMiArNDIsMTIgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9f
KQogCiAKIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBT
ZXJ2ZXJCYXNlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG91dHB1dF9kaXIs
IGFkZGl0aW9uYWxfZGlycz1Ob25lLCBudW1iZXJfb2Zfc2VydmVycz1Ob25lKToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgcG9ydF9vYmosIG91dHB1dF9kaXIsIGFkZGl0aW9uYWxfZGlycz1Ob25l
KToKICAgICAgICAgIiIiQXJnczoKICAgICAgICAgICBwb3J0X29iajogaGFuZGxlIHRvIHRoZSBw
bGF0Zm9ybS1zcGVjaWZpYyByb3V0aW5lcwogICAgICAgICAgIG91dHB1dF9kaXI6IHRoZSBhYnNv
bHV0ZSBwYXRoIHRvIHRoZSBsYXlvdXQgdGVzdCByZXN1bHQgZGlyZWN0b3J5CiAgICAgICAgICIi
IgotICAgICAgICBodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlLl9faW5pdF9fKHNlbGYs
IHBvcnRfb2JqLCBudW1iZXJfb2Zfc2VydmVycykKKyAgICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5I
dHRwU2VydmVyQmFzZS5fX2luaXRfXyhzZWxmLCBwb3J0X29iaikKICAgICAgICAgIyBXZSB1c2Ug
dGhlIG5hbWUgImh0dHBkIiBpbnN0ZWFkIG9mICJhcGFjaGUiIHRvIG1ha2Ugb3VyIHBhdGhzIChl
LmcuIHRoZSBwaWQgZmlsZTogL3RtcC9XZWJLaXQvaHR0cGQucGlkKQogICAgICAgICAjIG1hdGNo
IG9sZC1ydW4td2Via2l0LXRlc3RzOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjM5NTYKICAgICAgICAgc2VsZi5fbmFtZSA9ICdodHRwZCcKQEAgLTExNSwxMSArMTE1
LDYgQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyXwogICAgICAgICAg
ICAgICAgICAgICAgICAgJy1jJywgIlwnUmVtb3ZlSGFuZGxlciAuY2dpIC5wbFwnIiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICctYycsICJcJzwvTG9jYXRpb24+XCciXQogCi0gICAgICAgIGlm
IHNlbGYuX251bWJlcl9vZl9zZXJ2ZXJzOgotICAgICAgICAgICAgc3RhcnRfY21kICs9IFsnLWMn
LCAiXCdTdGFydFNlcnZlcnMgJWRcJyIgJSBzZWxmLl9udW1iZXJfb2Zfc2VydmVycywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgJy1jJywgIlwnTWluU3BhcmVTZXJ2ZXJzICVkXCciICUgc2Vs
Zi5fbnVtYmVyX29mX3NlcnZlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICctYycsICJc
J01heFNwYXJlU2VydmVycyAlZFwnIiAlIHNlbGYuX251bWJlcl9vZl9zZXJ2ZXJzXQotCiAgICAg
ICAgIHN0b3BfY21kID0gW2V4ZWN1dGFibGUsCiAgICAgICAgICAgICAnLWYnLCAiXCIlc1wiIiAl
IHNlbGYuX2dldF9hcGFjaGVfY29uZmlnX2ZpbGVfcGF0aCh0ZXN0X2Rpciwgb3V0cHV0X2Rpciks
CiAgICAgICAgICAgICAnLWMnLCAiXCdQaWRGaWxlICVzJyIgJSBzZWxmLl9waWRfZmlsZSwKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0
dHBfc2VydmVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAxNzY3MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9z
ZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
NTMsNyArNTMsNyBAQCBjbGFzcyBUZXN0TGF5b3V0VGVzdEFwYWNoZUh0dHBkKHVuaXR0ZXN0CiAg
ICAgICAgIHRlc3RfcG9ydCA9IHRlc3QuVGVzdFBvcnQoaG9zdCkKICAgICAgICAgaG9zdC5maWxl
c3lzdGVtLndyaXRlX3RleHRfZmlsZSh0ZXN0X3BvcnQuX3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19m
aWxlKCksICcnKQogCi0gICAgICAgIHNlcnZlciA9IExheW91dFRlc3RBcGFjaGVIdHRwZCh0ZXN0
X3BvcnQsICIvbW9jay9vdXRwdXRfZGlyIiwgbnVtYmVyX29mX3NlcnZlcnM9NCkKKyAgICAgICAg
c2VydmVyID0gTGF5b3V0VGVzdEFwYWNoZUh0dHBkKHRlc3RfcG9ydCwgIi9tb2NrL291dHB1dF9k
aXIiKQogICAgICAgICBzZXJ2ZXIuX2NoZWNrX3RoYXRfYWxsX3BvcnRzX2FyZV9hdmFpbGFibGUg
PSBsYW1iZGE6IFRydWUKICAgICAgICAgc2VydmVyLl9pc19zZXJ2ZXJfcnVubmluZ19vbl9hbGxf
cG9ydHMgPSBsYW1iZGE6IFRydWUKICAgICAgICAgc2VydmVyLl93YWl0X2Zvcl9hY3Rpb24gPSBm
YWtlX3BpZApAQCAtNjQsNyArNjQsNCBAQCBjbGFzcyBUZXN0TGF5b3V0VGVzdEFwYWNoZUh0dHBk
KHVuaXR0ZXN0CiAgICAgICAgICAgICBzZXJ2ZXIuc3RvcCgpCiAgICAgICAgIGZpbmFsbHk6CiAg
ICAgICAgICAgICBfLCBfLCBsb2dzID0gb2MucmVzdG9yZV9vdXRwdXQoKQotICAgICAgICBzZWxm
LmFzc2VydEluKCJTdGFydFNlcnZlcnMgNCIsIGxvZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4o
Ik1pblNwYXJlU2VydmVycyA0IiwgbG9ncykKLSAgICAgICAgc2VsZi5hc3NlcnRJbigiTWF4U3Bh
cmVTZXJ2ZXJzIDQiLCBsb2dzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaG9zdC5maWxlc3lz
dGVtLmV4aXN0cygiL21vY2svb3V0cHV0X2Rpci9odHRwZC5jb25mIikpCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0
cF9zZXJ2ZXIucHkJKHJldmlzaW9uIDE3NjcyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDEyICs0MiwxMiBAQCBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2CiAK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG91dHB1dF9kaXIsIGJhY2tncm91bmQ9
RmFsc2UsIHBvcnQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgcm9vdD1Ob25lLCBydW5fYmFja2dy
b3VuZD1Ob25lLCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgbGF5b3V0
X3Rlc3RzX2Rpcj1Ob25lLCBudW1iZXJfb2Zfc2VydmVycz1Ob25lKToKKyAgICAgICAgICAgICAg
ICAgbGF5b3V0X3Rlc3RzX2Rpcj1Ob25lKToKICAgICAgICAgIiIiQXJnczoKICAgICAgICAgICBv
dXRwdXRfZGlyOiB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0IGRp
cmVjdG9yeQogICAgICAgICAiIiIKICAgICAgICAgIyBXZWJraXQgdGVzdHMKLSAgICAgICAgaHR0
cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZS5fX2luaXRfXyhzZWxmLCBwb3J0X29iaiwgbnVt
YmVyX29mX3NlcnZlcnMpCisgICAgICAgIGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2Uu
X19pbml0X18oc2VsZiwgcG9ydF9vYmopCiAgICAgICAgIHNlbGYuX25hbWUgPSAnbGlnaHR0cGQn
CiAgICAgICAgIHNlbGYuX291dHB1dF9kaXIgPSBvdXRwdXRfZGlyCiAgICAgICAgIHNlbGYuX3Bv
cnQgPSBwb3J0CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2
ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5CShyZXZpc2lvbiAx
NzY3MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0
dHBfc2VydmVyX2Jhc2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3Mg
U2VydmVyRXJyb3IoRXhjZXB0aW9uKToKIGNsYXNzIEh0dHBTZXJ2ZXJCYXNlKG9iamVjdCk6CiAg
ICAgIiIiQSBza2VsZXRvbiBjbGFzcyBmb3Igc3RhcnRpbmcgYW5kIHN0b3BwaW5nIHNlcnZlcnMg
dXNlZCBieSB0aGUgbGF5b3V0IHRlc3RzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBv
cnRfb2JqLCBudW1iZXJfb2Zfc2VydmVycz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
cG9ydF9vYmopOgogICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBwb3J0X29iai5fZXhlY3V0aXZl
CiAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0X29iai5fZmlsZXN5c3RlbQogICAgICAg
ICBzZWxmLl9uYW1lID0gJzx2aXJ0dWFsPicKQEAgLTU0LDcgKzU0LDYgQEAgY2xhc3MgSHR0cFNl
cnZlckJhc2Uob2JqZWN0KToKICAgICAgICAgc2VsZi5fcGlkID0gTm9uZQogICAgICAgICBzZWxm
Ll9waWRfZmlsZSA9IE5vbmUKICAgICAgICAgc2VsZi5fcG9ydF9vYmogPSBwb3J0X29iagotICAg
ICAgICBzZWxmLl9udW1iZXJfb2Zfc2VydmVycyA9IG51bWJlcl9vZl9zZXJ2ZXJzCiAKICAgICAg
ICAgIyBXZSBuZWVkIGEgbm9uLWNoZWNrb3V0LWRlcGVuZGVudCBwbGFjZSB0byBwdXQgbG9jayBm
aWxlcywgZXRjLiBXZQogICAgICAgICAjIGRvbid0IHVzZSB0aGUgUHl0aG9uIGRlZmF1bHQgb24g
dGhlIE1hYyBiZWNhdXNlIGl0IGRlZmF1bHRzIHRvIGEKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5CShyZXZpc2lv
biAxNzY3MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9w
cmludGluZy5weQkod29ya2luZyBjb3B5KQpAQCAtMTEwLDE0ICsxMTAsMTQgQEAgY2xhc3MgUHJp
bnRlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5
cGUocnVuX3Jlc3VsdHMsIHRlc3RfZXhwZWN0YXRpb25zLkZMQUtZLCAiZmxha3kiLCB0ZXN0c193
aXRoX3Jlc3VsdF90eXBlX2NhbGxiYWNrKQogICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygnJykK
IAotICAgIGRlZiBwcmludF93b3JrZXJzX2FuZF9zaGFyZHMoc2VsZiwgbnVtX3dvcmtlcnMsIG51
bV9zaGFyZHMsIG51bV9sb2NrZWRfc2hhcmRzKToKKyAgICBkZWYgcHJpbnRfd29ya2Vyc19hbmRf
c2hhcmRzKHNlbGYsIG51bV93b3JrZXJzLCBudW1fc2hhcmRzKToKICAgICAgICAgZHJpdmVyX25h
bWUgPSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkKICAgICAgICAgaWYgbnVtX3dvcmtlcnMgPT0g
MToKICAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlZmF1bHQoIlJ1bm5pbmcgMSAlcy4iICUgZHJp
dmVyX25hbWUpCiAgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygiKCVzKS4iICUgZ3JhbW1h
ci5wbHVyYWxpemUobnVtX3NoYXJkcywgInNoYXJkIikpCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICBzZWxmLl9wcmludF9kZWZhdWx0KCJSdW5uaW5nICVzIGluIHBhcmFsbGVsLiIgJSAoZ3Jh
bW1hci5wbHVyYWxpemUobnVtX3dvcmtlcnMsIGRyaXZlcl9uYW1lKSkpCi0gICAgICAgICAgICBz
ZWxmLl9wcmludF9kZWJ1ZygiKCVkIHNoYXJkczsgJWQgbG9ja2VkKS4iICUgKG51bV9zaGFyZHMs
IG51bV9sb2NrZWRfc2hhcmRzKSkKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCIoJWQg
c2hhcmRzKS4iICUgbnVtX3NoYXJkcykKICAgICAgICAgc2VsZi5fcHJpbnRfZGVmYXVsdCgnJykK
IAogICAgIGRlZiBfcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHNlbGYsIHJ1bl9yZXN1
bHRzLCByZXN1bHRfdHlwZSwgcmVzdWx0X3R5cGVfc3RyLCB0ZXN0c193aXRoX3Jlc3VsdF90eXBl
X2NhbGxiYWNrKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CShyZXZpc2lv
biAxNzY3MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMTU5LDEwICsxNTksNiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAg
ICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIER1bXBSZW5kZXJUcmVlIGluc3RhbmNlcyB0byB1c2Ug
Zm9yIHRoaXMgcG9ydC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5jcHVfY291
bnQoKQogCi0gICAgZGVmIGRlZmF1bHRfbWF4X2xvY2tlZF9zaGFyZHMoc2VsZik6Ci0gICAgICAg
ICIiIlJldHVybiB0aGUgbnVtYmVyIG9mICJsb2NrZWQiIHNoYXJkcyB0byBydW4gaW4gcGFyYWxs
ZWwgKGxpa2UgdGhlIGh0dHAgdGVzdHMpLiIiIgotICAgICAgICByZXR1cm4gMQotCiAgICAgZGVm
IHdvcmtlcl9zdGFydHVwX2RlbGF5X3NlY3Moc2VsZik6CiAgICAgICAgICMgRklYTUU6IElmIHdl
IHN0YXJ0IHdvcmtlcnMgdXAgdG9vIHF1aWNrbHksIER1bXBSZW5kZXJUcmVlIGFwcGVhcnMKICAg
ICAgICAgIyB0byB0aHJhc2ggb24gc29tZXRoaW5nIGFuZCB0aW1lIG91dCBpdHMgZmlyc3QgZmV3
IHRlc3RzLiBVbnRpbApAQCAtODc3LDE2ICs4NzMsMTYgQEAgY2xhc3MgUG9ydChvYmplY3QpOgog
ICAgICAgICBzdG9yYWdlLCBpdCBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QuIiIiCiAgICAg
ICAgIHBhc3MKIAotICAgIGRlZiBzdGFydF9odHRwX3NlcnZlcihzZWxmLCBhZGRpdGlvbmFsX2Rp
cnM9Tm9uZSwgbnVtYmVyX29mX3NlcnZlcnM9Tm9uZSk6CisgICAgZGVmIHN0YXJ0X2h0dHBfc2Vy
dmVyKHNlbGYsIGFkZGl0aW9uYWxfZGlycz1Ob25lKToKICAgICAgICAgIiIiU3RhcnQgYSB3ZWIg
c2VydmVyLiBSYWlzZSBhbiBlcnJvciBpZiBpdCBjYW4ndCBzdGFydCBvciBpcyBhbHJlYWR5IHJ1
bm5pbmcuCiAKICAgICAgICAgUG9ydHMgY2FuIHN0dWIgdGhpcyBvdXQgaWYgdGhleSBkb24ndCBu
ZWVkIGEgd2ViIHNlcnZlciB0byBiZSBydW5uaW5nLiIiIgogICAgICAgICBhc3NlcnQgbm90IHNl
bGYuX2h0dHBfc2VydmVyLCAnQWxyZWFkeSBydW5uaW5nIGFuIGh0dHAgc2VydmVyLicKIAogICAg
ICAgICBpZiBzZWxmLl91c2VzX2FwYWNoZSgpOgotICAgICAgICAgICAgc2VydmVyID0gYXBhY2hl
X2h0dHBfc2VydmVyLkxheW91dFRlc3RBcGFjaGVIdHRwZChzZWxmLCBzZWxmLnJlc3VsdHNfZGly
ZWN0b3J5KCksIGFkZGl0aW9uYWxfZGlycz1hZGRpdGlvbmFsX2RpcnMsIG51bWJlcl9vZl9zZXJ2
ZXJzPW51bWJlcl9vZl9zZXJ2ZXJzKQorICAgICAgICAgICAgc2VydmVyID0gYXBhY2hlX2h0dHBf
c2VydmVyLkxheW91dFRlc3RBcGFjaGVIdHRwZChzZWxmLCBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5
KCksIGFkZGl0aW9uYWxfZGlycz1hZGRpdGlvbmFsX2RpcnMpCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzZXJ2ZXIgPSBodHRwX3NlcnZlci5MaWdodHRwZChzZWxmLCBzZWxmLnJlc3VsdHNf
ZGlyZWN0b3J5KCksIGFkZGl0aW9uYWxfZGlycz1hZGRpdGlvbmFsX2RpcnMsIG51bWJlcl9vZl9z
ZXJ2ZXJzPW51bWJlcl9vZl9zZXJ2ZXJzKQorICAgICAgICAgICAgc2VydmVyID0gaHR0cF9zZXJ2
ZXIuTGlnaHR0cGQoc2VsZiwgc2VsZi5yZXN1bHRzX2RpcmVjdG9yeSgpLCBhZGRpdGlvbmFsX2Rp
cnM9YWRkaXRpb25hbF9kaXJzKQogCiAgICAgICAgIHNlcnZlci5zdGFydCgpCiAgICAgICAgIHNl
bGYuX2h0dHBfc2VydmVyID0gc2VydmVyCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvcG9ydF90ZXN0Y2FzZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvcG9ydF90ZXN0Y2FzZS5weQkocmV2aXNpb24gMTc2NzI1KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTkxLDEz
ICs5MSw2IEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IHBvcnQuX2NvbmZpZy5idWlsZF9kaXJlY3RvcnkgPSBsYW1iZGEgY29uZmlndXJhdGlvbjogJy9t
b2NrLWJ1aWxkJwogICAgICAgICByZXR1cm4gcG9ydAogCi0gICAgZGVmIHRlc3RfZGVmYXVsdF9t
YXhfbG9ja2VkX3NoYXJkcyhzZWxmKToKLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkK
LSAgICAgICAgcG9ydC5kZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyA9IGxhbWJkYTogMTYKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmRlZmF1bHRfbWF4X2xvY2tlZF9zaGFyZHMoKSwgMSkK
LSAgICAgICAgcG9ydC5kZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyA9IGxhbWJkYTogMgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZGVmYXVsdF9tYXhfbG9ja2VkX3NoYXJkcygpLCAxKQot
CiAgICAgZGVmIHRlc3RfZGVmYXVsdF90aW1lb3V0X21zKHNlbGYpOgogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9TW9ja09wdGlvbnMoY29uZmlndXJhdGlv
bj0nUmVsZWFzZScpKS5kZWZhdWx0X3RpbWVvdXRfbXMoKSwgMzUwMDApCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VsZi5tYWtlX3BvcnQob3B0aW9ucz1Nb2NrT3B0aW9ucyhjb25maWd1cmF0
aW9uPSdEZWJ1ZycpKS5kZWZhdWx0X3RpbWVvdXRfbXMoKSwgMzUwMDApCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvdGVzdC5weQkocmV2aXNpb24gMTc2NzI1KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3Rlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ2Myw3ICs0NjMsNyBA
QCBjbGFzcyBUZXN0UG9ydChQb3J0KToKICAgICBkZWYgX2RyaXZlcl9jbGFzcyhzZWxmKToKICAg
ICAgICAgcmV0dXJuIFRlc3REcml2ZXIKIAotICAgIGRlZiBzdGFydF9odHRwX3NlcnZlcihzZWxm
LCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSwgbnVtYmVyX29mX3NlcnZlcnM9Tm9uZSk6CisgICAgZGVm
IHN0YXJ0X2h0dHBfc2VydmVyKHNlbGYsIGFkZGl0aW9uYWxfZGlycz1Ob25lKToKICAgICAgICAg
cGFzcwogCiAgICAgZGVmIHN0YXJ0X3dlYnNvY2tldF9zZXJ2ZXIoc2VsZik6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>