<?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>92805</bug_id>
          
          <creation_ts>2012-07-31 16:07:36 -0700</creation_ts>
          <short_desc>nrwt: move sharding logic into layout_test_runner.py</short_desc>
          <delta_ts>2012-07-31 18:48:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>92804</dependson>
          <blocked>89267</blocked>
    
    <blocked>92806</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>683587</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-31 16:07:36 -0700</bug_when>
    <thetext>nrwt: move sharding logic into layout_test_runner.py</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683588</commentid>
    <comment_count>1</comment_count>
      <attachid>155661</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-31 16:08:45 -0700</bug_when>
    <thetext>Created attachment 155661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683728</commentid>
    <comment_count>2</comment_count>
      <attachid>155661</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-31 18:31:00 -0700</bug_when>
    <thetext>Comment on attachment 155661
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:370
&gt; +                                    &apos;locked_shard&apos;),

Nit: wrong indentation.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:402
&gt; +                                        extract_and_flatten(some_shards)))

Nit: wrong indentation.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:407
&gt; +    def _dir_for_test_input(self, test_input):
&gt; +        &quot;&quot;&quot;Returns the highest-level directory by which to shard the given
&gt; +        test file.&quot;&quot;&quot;

I would rename the function to _highest_dir_to_shard_for_test_input and get rid of the comment.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:411
&gt; +        # TODO(ojan): Make the http server on Windows be apache so we can

Nit: TODO -&gt; FIXME.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:433
&gt; +                http://www.codinghorror.com/blog/2007/12/sorting-for-humans-natural-sort-order.html
&gt; +                http://nedbatchelder.com/blog/200712.html#e20071211T054956

Why are these URLs indented?

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:2
&gt; +# Copyright (C) 2010 Google Inc. All rights reserved.

Maybe update the date here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683736</commentid>
    <comment_count>3</comment_count>
      <attachid>155661</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-31 18:39:21 -0700</bug_when>
    <thetext>Comment on attachment 155661
Patch

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

I will fix all the comments and changes. Thanks for the review!

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:433
&gt;&gt; +                http://nedbatchelder.com/blog/200712.html#e20071211T054956
&gt; 
&gt; Why are these URLs indented?

It made things easier to read?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683738</commentid>
    <comment_count>4</comment_count>
      <attachid>155661</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-31 18:40:16 -0700</bug_when>
    <thetext>Comment on attachment 155661
Patch

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:433
&gt;&gt;&gt; +                http://nedbatchelder.com/blog/200712.html#e20071211T054956
&gt;&gt; 
&gt;&gt; Why are these URLs indented?
&gt; 
&gt; It made things easier to read?

I think they&apos;re easy to read without indentations :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683740</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-31 18:48:18 -0700</bug_when>
    <thetext>Committed r124280: &lt;http://trac.webkit.org/changeset/124280&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155661</attachid>
            <date>2012-07-31 16:08:45 -0700</date>
            <delta_ts>2012-07-31 18:40:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92805-20120731160828.patch</filename>
            <type>text/plain</type>
            <size>58412</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MjYxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDBlOWI2M2ExN2U2NWU4NzY0YTNmZTA4NDA4MTYxYmZh
NjNjNDgzYS4uMzljZDM3NGJlMWVjOTk1NzBiNDliNmI1MTFlOTBkNGVhN2FiOGFhYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc1
IEBACiAyMDEyLTA3LTMxICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5yd3Q6IG1vdmUgc2hhcmRpbmcgbG9naWMgaW50byBsYXlvdXRfdGVzdF9ydW5uZXIu
cHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyODA1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHNo
YXJkaW5nIGxvZ2ljIGlzIHNwZWNpZmljIHRvIGhvdyB3ZSBhY3R1YWxseSBydW4gdGhlIHRlc3Rz
LAorICAgICAgICBzbyBpdCBiZWxvbmdzIGluIHRoaXMgZmlsZSBpbnN0ZWFkIG9mIG1hbmFnZXIu
cHkgb3IgZmluZGVyLnB5LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAoV29ya2VyLl9y
dW5fc2luZ2xlX3Rlc3QpOgorICAgICAgICAoVGVzdFNoYXJkKToKKyAgICAgICAgKFRlc3RTaGFy
ZC5fX2luaXRfXyk6CisgICAgICAgIChUZXN0U2hhcmQuX19yZXByX18pOgorICAgICAgICAoVGVz
dFNoYXJkLl9fZXFfXyk6CisgICAgICAgIChTaGFyZGVyKToKKyAgICAgICAgKFNoYXJkZXIuX19p
bml0X18pOgorICAgICAgICAoU2hhcmRlci5zaGFyZF90ZXN0cyk6CisgICAgICAgIChTaGFyZGVy
LnNoYXJkX3Rlc3RzLm9yKToKKyAgICAgICAgKFNoYXJkZXIuX3NoYXJkX2luX3R3byk6CisgICAg
ICAgIChTaGFyZGVyLl9zaGFyZF9ldmVyeV9maWxlKToKKyAgICAgICAgKFNoYXJkZXIuX3NoYXJk
X2J5X2RpcmVjdG9yeSk6CisgICAgICAgIChTaGFyZGVyLl9yZXNpemVfc2hhcmRzKToKKyAgICAg
ICAgKFNoYXJkZXIuX3Jlc2l6ZV9zaGFyZHMuZGl2aWRlX2FuZF9yb3VuZF91cCk6CisgICAgICAg
IChTaGFyZGVyLl9yZXNpemVfc2hhcmRzLmV4dHJhY3RfYW5kX2ZsYXR0ZW4pOgorICAgICAgICAo
U2hhcmRlci5fcmVzaXplX3NoYXJkcy5zcGxpdF9hdCk6CisgICAgICAgIChTaGFyZGVyLl9kaXJf
Zm9yX3Rlc3RfaW5wdXQpOgorICAgICAgICAoU2hhcmRlci50ZXN0X2tleSk6CisgICAgICAgIChT
aGFyZGVyLm5hdHVyYWxfc29ydF9rZXkpOgorICAgICAgICAoU2hhcmRlci5uYXR1cmFsX3NvcnRf
a2V5LnRyeWludCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAg
KFNoYXJkZXJUZXN0cyk6CisgICAgICAgIChTaGFyZGVyVGVzdHMuZ2V0X3Rlc3RfaW5wdXQpOgor
ICAgICAgICAoU2hhcmRlclRlc3RzLmdldF9zaGFyZHMpOgorICAgICAgICAoU2hhcmRlclRlc3Rz
LmdldF9zaGFyZHMuc3BsaXQpOgorICAgICAgICAoU2hhcmRlclRlc3RzLmFzc2VydF9zaGFyZHMp
OgorICAgICAgICAoU2hhcmRlclRlc3RzLnRlc3Rfc2hhcmRfYnlfZGlyKToKKyAgICAgICAgKFNo
YXJkZXJUZXN0cy50ZXN0X3NoYXJkX2J5X2Rpcl9zaGFyZGluZ19yZWZfdGVzdHMpOgorICAgICAg
ICAoU2hhcmRlclRlc3RzLnRlc3Rfc2hhcmRfZXZlcnlfZmlsZSk6CisgICAgICAgIChTaGFyZGVy
VGVzdHMudGVzdF9zaGFyZF9pbl90d28pOgorICAgICAgICAoU2hhcmRlclRlc3RzLnRlc3Rfc2hh
cmRfaW5fdHdvX3NoYXJkaW5nX3JlZl90ZXN0cyk6CisgICAgICAgIChTaGFyZGVyVGVzdHMudGVz
dF9zaGFyZF9pbl90d29faGFzX25vX2xvY2tlZF9zaGFyZHMpOgorICAgICAgICAoU2hhcmRlclRl
c3RzLnRlc3Rfc2hhcmRfaW5fdHdvX2hhc19ub191bmxvY2tlZF9zaGFyZHMpOgorICAgICAgICAo
U2hhcmRlclRlc3RzLnRlc3RfbXVsdGlwbGVfbG9ja2VkX3NoYXJkcyk6CisgICAgICAgIChOYXR1
cmFsQ29tcGFyZVRlc3QpOgorICAgICAgICAoTmF0dXJhbENvbXBhcmVUZXN0LmFzc2VydF9jbXAp
OgorICAgICAgICAoTmF0dXJhbENvbXBhcmVUZXN0LnRlc3RfbmF0dXJhbF9jb21wYXJlKToKKyAg
ICAgICAgKEtleUNvbXBhcmVUZXN0KToKKyAgICAgICAgKEtleUNvbXBhcmVUZXN0LnNldFVwKToK
KyAgICAgICAgKEtleUNvbXBhcmVUZXN0LnNldFVwLnNwbGl0KToKKyAgICAgICAgKEtleUNvbXBh
cmVUZXN0LmFzc2VydF9jbXApOgorICAgICAgICAoS2V5Q29tcGFyZVRlc3QudGVzdF90ZXN0X2tl
eSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlci5weToKKyAgICAgICAgKE1hbmFnZXIuX19pbml0X18pOgorICAgICAgICAoTWFuYWdl
ci5fcHJlcGFyZV9saXN0cyk6CisgICAgICAgIChNYW5hZ2VyLl9pc19yZWZfdGVzdCk6CisgICAg
ICAgIChNYW5hZ2VyLl9ydW5fdGVzdHMpOgorICAgICAgICAoTWFuYWdlci5faGFuZGxlX2Zpbmlz
aGVkX3Rlc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChNYW5hZ2VyVGVzdC5nZXRfb3B0
aW9ucyk6CisgICAgICAgIChNYW5hZ2VyVGVzdC50ZXN0X2ludGVycnVwdF9pZl9hdF9mYWlsdXJl
X2xpbWl0cyk6CisgICAgICAgIChNYW5hZ2VyVGVzdC50ZXN0X3VwZGF0ZV9zdW1tYXJ5X3dpdGhf
cmVzdWx0KToKKyAgICAgICAgKE1hbmFnZXJUZXN0LnRlc3RfbmVlZHNfc2VydmVycy5nZXRfbWFu
YWdlcl93aXRoX3Rlc3RzKToKKyAgICAgICAgKE1hbmFnZXJUZXN0LmludGVncmF0aW9uX3Rlc3Rf
bmVlZHNfc2VydmVycy5nZXRfbWFuYWdlcl93aXRoX3Rlc3RzKToKKyAgICAgICAgKE1hbmFnZXJU
ZXN0LnRlc3RfbG9va19mb3JfbmV3X2NyYXNoX2xvZ3MuZ2V0X21hbmFnZXJfd2l0aF90ZXN0cyk6
CisgICAgICAgIChNYW5hZ2VyVGVzdC50ZXN0X3NlcnZlcnNfc3RhcnRlZCk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAg
ICAgKHBhcnNlX2FyZ3MpOgorCisyMDEyLTA3LTMxICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIG5yd3Q6IHJlbmFtZSB3b3JrZXIucHkgdG8gbGF5b3V0X3Rl
c3RfcnVubmVyLnB5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MjgwNAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkKaW5k
ZXggYjE1ODNmZmYzMzdmMDY3N2FjMjMwYmI4MTY0MjEzYzYzZDA0NzM0OS4uZjRkYjM3MWU3NTI4
YThmYjQ0YWE1YzlkNjEwZDNkNmI0ZDk5ZDNhMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91
dF90ZXN0X3J1bm5lci5weQpAQCAtMjYsOSArMjYsOSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAotIiIiSGFuZGxlIG1lc3NhZ2VzIGZyb20gdGhlIE1hbmFnZXIgYW5kIGV4ZWN1
dGVzIGFjdHVhbCB0ZXN0cy4iIiIKLQogaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBtYXRoCitpbXBv
cnQgcmUKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiAKQEAgLTIyOSwzICsyMjksMjEz
IEBAIGNsYXNzIFdvcmtlcihvYmplY3QpOgogICAgIGRlZiBfcnVuX3NpbmdsZV90ZXN0KHNlbGYs
IGRyaXZlciwgdGVzdF9pbnB1dCk6CiAgICAgICAgIHJldHVybiBzaW5nbGVfdGVzdF9ydW5uZXIu
cnVuX3NpbmdsZV90ZXN0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCiAgICAgICAgICAgICB0
ZXN0X2lucHV0LCBkcml2ZXIsIHNlbGYuX25hbWUpCisKKworY2xhc3MgVGVzdFNoYXJkKG9iamVj
dCk6CisgICAgIiIiQSB0ZXN0IHNoYXJkIGlzIGEgbmFtZWQgbGlzdCBvZiBUZXN0SW5wdXRzLiIi
IgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHRlc3RfaW5wdXRzKToKKyAgICAgICAg
c2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnRlc3RfaW5wdXRzID0gdGVzdF9pbnB1dHMK
KyAgICAgICAgc2VsZi5yZXF1aXJlc19sb2NrID0gdGVzdF9pbnB1dHNbMF0ucmVxdWlyZXNfbG9j
aworCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIlRlc3RTaGFyZChu
YW1lPSclcycsIHRlc3RfaW5wdXRzPSVzLCByZXF1aXJlc19sb2NrPSVzJyIgJSAoc2VsZi5uYW1l
LCBzZWxmLnRlc3RfaW5wdXRzLCBzZWxmLnJlcXVpcmVzX2xvY2spCisKKyAgICBkZWYgX19lcV9f
KHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYubmFtZSA9PSBvdGhlci5uYW1lIGFu
ZCBzZWxmLnRlc3RfaW5wdXRzID09IG90aGVyLnRlc3RfaW5wdXRzCisKKworY2xhc3MgU2hhcmRl
cihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X3NwbGl0X2ZuLCB0ZXN0X3Bh
dGhfc2VwYXJhdG9yLCBtYXhfbG9ja2VkX3NoYXJkcyk6CisgICAgICAgIHNlbGYuX3NwbGl0ID0g
dGVzdF9zcGxpdF9mbgorICAgICAgICBzZWxmLl9zZXAgPSB0ZXN0X3BhdGhfc2VwYXJhdG9yCisg
ICAgICAgIHNlbGYuX21heF9sb2NrZWRfc2hhcmRzID0gbWF4X2xvY2tlZF9zaGFyZHMKKworICAg
IGRlZiBzaGFyZF90ZXN0cyhzZWxmLCB0ZXN0X2lucHV0cywgbnVtX3dvcmtlcnMsIGZ1bGx5X3Bh
cmFsbGVsLCBzaGFyZF9yZWZfdGVzdHMpOgorICAgICAgICAiIiJHcm91cHMgdGVzdHMgaW50byBi
YXRjaGVzLgorICAgICAgICBUaGlzIGhlbHBzIGVuc3VyZSB0aGF0IHRlc3RzIHRoYXQgZGVwZW5k
IG9uIGVhY2ggb3RoZXIgKGFrYSBiYWQgdGVzdHMhKQorICAgICAgICBjb250aW51ZSB0byBydW4g
dG9nZXRoZXIgYXMgbW9zdCBjcm9zcy10ZXN0cyBkZXBlbmRlbmNpZXMgdGVuZCB0bworICAgICAg
ICBvY2N1ciB3aXRoaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICAgICAgICBSZXR1cm46CisgICAg
ICAgICAgICBUd28gbGlzdCBvZiBUZXN0U2hhcmRzLiBUaGUgZmlyc3QgY29udGFpbnMgdGVzdHMg
dGhhdCBtdXN0IG9ubHkgYmUKKyAgICAgICAgICAgIHJ1biB1bmRlciB0aGUgc2VydmVyIGxvY2ss
IHRoZSBzZWNvbmQgY2FuIGJlIHJ1biB3aGVuZXZlci4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
IyBGSVhNRTogTW92ZSBhbGwgb2YgdGhlIHNoYXJkaW5nIGxvZ2ljIG91dCBvZiBtYW5hZ2VyIGlu
dG8gaXRzCisgICAgICAgICMgb3duIGNsYXNzIG9yIG1vZHVsZS4gQ29uc2lkZXIgZ3JvdXBpbmcg
aXQgd2l0aCB0aGUgY2h1bmtpbmcgbG9naWMKKyAgICAgICAgIyBpbiBwcmVwYXJlX2xpc3RzIGFz
IHdlbGwuCisgICAgICAgIGlmIG51bV93b3JrZXJzID09IDE6CisgICAgICAgICAgICByZXR1cm4g
c2VsZi5fc2hhcmRfaW5fdHdvKHRlc3RfaW5wdXRzLCBzaGFyZF9yZWZfdGVzdHMpCisgICAgICAg
IGVsaWYgZnVsbHlfcGFyYWxsZWw6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2hhcmRfZXZl
cnlfZmlsZSh0ZXN0X2lucHV0cykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NoYXJkX2J5X2RpcmVj
dG9yeSh0ZXN0X2lucHV0cywgbnVtX3dvcmtlcnMsIHNoYXJkX3JlZl90ZXN0cykKKworICAgIGRl
ZiBfc2hhcmRfaW5fdHdvKHNlbGYsIHRlc3RfaW5wdXRzLCBzaGFyZF9yZWZfdGVzdHMpOgorICAg
ICAgICAiIiJSZXR1cm5zIHR3byBsaXN0cyBvZiBzaGFyZHMsIG9uZSB3aXRoIGFsbCB0aGUgdGVz
dHMgcmVxdWlyaW5nIGEgbG9jayBhbmQgb25lIHdpdGggdGhlIHJlc3QuCisKKyAgICAgICAgVGhp
cyBpcyB1c2VkIHdoZW4gdGhlcmUncyBvbmx5IG9uZSB3b3JrZXIsIHRvIG1pbmltaXplIHRoZSBw
ZXItc2hhcmQgb3ZlcmhlYWQuIiIiCisgICAgICAgIGxvY2tlZF9pbnB1dHMgPSBbXQorICAgICAg
ICBsb2NrZWRfcmVmX3Rlc3RfaW5wdXRzID0gW10KKyAgICAgICAgdW5sb2NrZWRfaW5wdXRzID0g
W10KKyAgICAgICAgdW5sb2NrZWRfcmVmX3Rlc3RfaW5wdXRzID0gW10KKyAgICAgICAgZm9yIHRl
c3RfaW5wdXQgaW4gdGVzdF9pbnB1dHM6CisgICAgICAgICAgICBpZiB0ZXN0X2lucHV0LnJlcXVp
cmVzX2xvY2s6CisgICAgICAgICAgICAgICAgaWYgc2hhcmRfcmVmX3Rlc3RzIGFuZCB0ZXN0X2lu
cHV0LnJlZmVyZW5jZV9maWxlczoKKyAgICAgICAgICAgICAgICAgICAgbG9ja2VkX3JlZl90ZXN0
X2lucHV0cy5hcHBlbmQodGVzdF9pbnB1dCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICBsb2NrZWRfaW5wdXRzLmFwcGVuZCh0ZXN0X2lucHV0KQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBzaGFyZF9yZWZfdGVzdHMgYW5kIHRlc3RfaW5w
dXQucmVmZXJlbmNlX2ZpbGVzOgorICAgICAgICAgICAgICAgICAgICB1bmxvY2tlZF9yZWZfdGVz
dF9pbnB1dHMuYXBwZW5kKHRlc3RfaW5wdXQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgdW5sb2NrZWRfaW5wdXRzLmFwcGVuZCh0ZXN0X2lucHV0KQorICAgICAg
ICBsb2NrZWRfaW5wdXRzLmV4dGVuZChsb2NrZWRfcmVmX3Rlc3RfaW5wdXRzKQorICAgICAgICB1
bmxvY2tlZF9pbnB1dHMuZXh0ZW5kKHVubG9ja2VkX3JlZl90ZXN0X2lucHV0cykKKworICAgICAg
ICBsb2NrZWRfc2hhcmRzID0gW10KKyAgICAgICAgdW5sb2NrZWRfc2hhcmRzID0gW10KKyAgICAg
ICAgaWYgbG9ja2VkX2lucHV0czoKKyAgICAgICAgICAgIGxvY2tlZF9zaGFyZHMgPSBbVGVzdFNo
YXJkKCdsb2NrZWRfdGVzdHMnLCBsb2NrZWRfaW5wdXRzKV0KKyAgICAgICAgaWYgdW5sb2NrZWRf
aW5wdXRzOgorICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLmFwcGVuZChUZXN0U2hhcmQoJ3Vu
bG9ja2VkX3Rlc3RzJywgdW5sb2NrZWRfaW5wdXRzKSkKKworICAgICAgICByZXR1cm4gbG9ja2Vk
X3NoYXJkcywgdW5sb2NrZWRfc2hhcmRzCisKKyAgICBkZWYgX3NoYXJkX2V2ZXJ5X2ZpbGUoc2Vs
ZiwgdGVzdF9pbnB1dHMpOgorICAgICAgICAiIiJSZXR1cm5zIHR3byBsaXN0cyBvZiBzaGFyZHMs
IGVhY2ggc2hhcmQgY29udGFpbmluZyBhIHNpbmdsZSB0ZXN0IGZpbGUuCisKKyAgICAgICAgVGhp
cyBtb2RlIGdldHMgbWF4aW1hbCBwYXJhbGxlbGlzbSBhdCB0aGUgY29zdCBvZiBtdWNoIGhpZ2hl
ciBmbGFraW5lc3MuIiIiCisgICAgICAgIGxvY2tlZF9zaGFyZHMgPSBbXQorICAgICAgICB1bmxv
Y2tlZF9zaGFyZHMgPSBbXQorICAgICAgICBmb3IgdGVzdF9pbnB1dCBpbiB0ZXN0X2lucHV0czoK
KyAgICAgICAgICAgICMgTm90ZSB0aGF0IHdlIHVzZSBhICcuJyBmb3IgdGhlIHNoYXJkIG5hbWU7
IHRoZSBuYW1lIGRvZXNuJ3QgcmVhbGx5CisgICAgICAgICAgICAjIG1hdHRlciwgYW5kIHRoZSBv
bmx5IG90aGVyIG1lYW5pbmdmdWwgdmFsdWUgd291bGQgYmUgdGhlIGZpbGVuYW1lLAorICAgICAg
ICAgICAgIyB3aGljaCB3b3VsZCBiZSByZWFsbHkgcmVkdW5kYW50LgorICAgICAgICAgICAgaWYg
dGVzdF9pbnB1dC5yZXF1aXJlc19sb2NrOgorICAgICAgICAgICAgICAgIGxvY2tlZF9zaGFyZHMu
YXBwZW5kKFRlc3RTaGFyZCgnLicsIFt0ZXN0X2lucHV0XSkpCisgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgIHVubG9ja2VkX3NoYXJkcy5hcHBlbmQoVGVzdFNoYXJkKCcuJywgW3Rl
c3RfaW5wdXRdKSkKKworICAgICAgICByZXR1cm4gbG9ja2VkX3NoYXJkcywgdW5sb2NrZWRfc2hh
cmRzCisKKyAgICBkZWYgX3NoYXJkX2J5X2RpcmVjdG9yeShzZWxmLCB0ZXN0X2lucHV0cywgbnVt
X3dvcmtlcnMsIHNoYXJkX3JlZl90ZXN0cyk6CisgICAgICAgICIiIlJldHVybnMgdHdvIGxpc3Rz
IG9mIHNoYXJkcywgZWFjaCBzaGFyZCBjb250YWluaW5nIGFsbCB0aGUgZmlsZXMgaW4gYSBkaXJl
Y3RvcnkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBtb2RlLCBhbmQgZ2V0cyBhcyBt
dWNoIHBhcmFsbGVsaXNtIGFzIHdlIGNhbiB3aGlsZQorICAgICAgICBtaW5pbWl6aW5nIGZsYWtp
bmVzcyBjYXVzZWQgYnkgaW50ZXItdGVzdCBkZXBlbmRlbmNpZXMuIiIiCisgICAgICAgIGxvY2tl
ZF9zaGFyZHMgPSBbXQorICAgICAgICB1bmxvY2tlZF9zaGFyZHMgPSBbXQorICAgICAgICB0ZXN0
c19ieV9kaXIgPSB7fQorICAgICAgICByZWZfdGVzdHNfYnlfZGlyID0ge30KKyAgICAgICAgIyBG
SVhNRTogR2l2ZW4gdGhhdCB0aGUgdGVzdHMgYXJlIGFscmVhZHkgc29ydGVkIGJ5IGRpcmVjdG9y
eSwKKyAgICAgICAgIyB3ZSBjYW4gcHJvYmFibHkgcmV3cml0ZSB0aGlzIHRvIGJlIGNsZWFyZXIg
YW5kIGZhc3Rlci4KKyAgICAgICAgZm9yIHRlc3RfaW5wdXQgaW4gdGVzdF9pbnB1dHM6CisgICAg
ICAgICAgICBkaXJlY3RvcnkgPSBzZWxmLl9kaXJfZm9yX3Rlc3RfaW5wdXQodGVzdF9pbnB1dCkK
KyAgICAgICAgICAgIGlmIHNoYXJkX3JlZl90ZXN0cyBhbmQgdGVzdF9pbnB1dC5yZWZlcmVuY2Vf
ZmlsZXM6CisgICAgICAgICAgICAgICAgcmVmX3Rlc3RzX2J5X2Rpci5zZXRkZWZhdWx0KGRpcmVj
dG9yeSwgW10pCisgICAgICAgICAgICAgICAgcmVmX3Rlc3RzX2J5X2RpcltkaXJlY3RvcnldLmFw
cGVuZCh0ZXN0X2lucHV0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ZXN0
c19ieV9kaXIuc2V0ZGVmYXVsdChkaXJlY3RvcnksIFtdKQorICAgICAgICAgICAgICAgIHRlc3Rz
X2J5X2RpcltkaXJlY3RvcnldLmFwcGVuZCh0ZXN0X2lucHV0KQorCisgICAgICAgIGZvciBkaXJl
Y3RvcnksIHRlc3RfaW5wdXRzIGluIHRlc3RzX2J5X2Rpci5pdGVyaXRlbXMoKToKKyAgICAgICAg
ICAgIHNoYXJkID0gVGVzdFNoYXJkKGRpcmVjdG9yeSwgdGVzdF9pbnB1dHMpCisgICAgICAgICAg
ICBpZiB0ZXN0X2lucHV0c1swXS5yZXF1aXJlc19sb2NrOgorICAgICAgICAgICAgICAgIGxvY2tl
ZF9zaGFyZHMuYXBwZW5kKHNoYXJkKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICB1bmxvY2tlZF9zaGFyZHMuYXBwZW5kKHNoYXJkKQorCisgICAgICAgIGZvciBkaXJlY3Rvcnks
IHRlc3RfaW5wdXRzIGluIHJlZl90ZXN0c19ieV9kaXIuaXRlcml0ZW1zKCk6CisgICAgICAgICAg
ICAjICd+JyB0byBwbGFjZSB0aGUgcmVmIHRlc3RzIGFmdGVyIG90aGVyIHRlc3RzIGFmdGVyIHNv
cnRlZC4KKyAgICAgICAgICAgIHNoYXJkID0gVGVzdFNoYXJkKCd+cmVmOicgKyBkaXJlY3Rvcnks
IHRlc3RfaW5wdXRzKQorICAgICAgICAgICAgaWYgdGVzdF9pbnB1dHNbMF0ucmVxdWlyZXNfbG9j
azoKKyAgICAgICAgICAgICAgICBsb2NrZWRfc2hhcmRzLmFwcGVuZChzaGFyZCkKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLmFwcGVuZChzaGFyZCkK
KworICAgICAgICAjIFNvcnQgdGhlIHNoYXJkcyBieSBkaXJlY3RvcnkgbmFtZS4KKyAgICAgICAg
bG9ja2VkX3NoYXJkcy5zb3J0KGtleT1sYW1iZGEgc2hhcmQ6IHNoYXJkLm5hbWUpCisgICAgICAg
IHVubG9ja2VkX3NoYXJkcy5zb3J0KGtleT1sYW1iZGEgc2hhcmQ6IHNoYXJkLm5hbWUpCisKKyAg
ICAgICAgIyBQdXQgYSBjZWlsaW5nIG9uIHRoZSBudW1iZXIgb2YgbG9ja2VkIHNoYXJkcywgc28g
dGhhdCB3ZQorICAgICAgICAjIGRvbid0IGhhbW1lciB0aGUgc2VydmVycyB0b28gYmFkbHkuCisK
KyAgICAgICAgIyBGSVhNRTogRm9yIG5vdywgbGltaXQgdG8gb25lIHNoYXJkIG9yIHNldCBpdAor
ICAgICAgICAjIHdpdGggdGhlIC0tbWF4LWxvY2tlZC1zaGFyZHMuIEFmdGVyIHRlc3RpbmcgdG8g
bWFrZSBzdXJlIHdlCisgICAgICAgICMgY2FuIGhhbmRsZSBtdWx0aXBsZSBzaGFyZHMsIHdlIHNo
b3VsZCBwcm9iYWJseSBkbyBzb21ldGhpbmcgbGlrZQorICAgICAgICAjIGxpbWl0IHRoaXMgdG8g
bm8gbW9yZSB0aGFuIGEgcXVhcnRlciBvZiBhbGwgd29ya2VycywgZS5nLjoKKyAgICAgICAgIyBy
ZXR1cm4gbWF4KG1hdGguY2VpbChudW1fd29ya2VycyAvIDQuMCksIDEpCisgICAgICAgIHJldHVy
biAoc2VsZi5fcmVzaXplX3NoYXJkcyhsb2NrZWRfc2hhcmRzLCBzZWxmLl9tYXhfbG9ja2VkX3No
YXJkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2NrZWRfc2hhcmQn
KSwKKyAgICAgICAgICAgICAgICB1bmxvY2tlZF9zaGFyZHMpCisKKyAgICBkZWYgX3Jlc2l6ZV9z
aGFyZHMoc2VsZiwgb2xkX3NoYXJkcywgbWF4X25ld19zaGFyZHMsIHNoYXJkX25hbWVfcHJlZml4
KToKKyAgICAgICAgIiIiVGFrZXMgYSBsaXN0IG9mIHNoYXJkcyBhbmQgcmVkaXN0cmlidXRlcyB0
aGUgdGVzdHMgaW50byBubyBtb3JlCisgICAgICAgIHRoYW4gfG1heF9uZXdfc2hhcmRzfCBuZXcg
c2hhcmRzLiIiIgorCisgICAgICAgICMgVGhpcyBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoYXQg
ZWFjaCBpbnB1dCBzaGFyZCBvbmx5IGNvbnRhaW5zIHRlc3RzIGZyb20gYQorICAgICAgICAjIHNp
bmdsZSBkaXJlY3RvcnksIGFuZCB0aGF0IHRlc3RzIGluIGVhY2ggc2hhcmQgbXVzdCByZW1haW4g
dG9nZXRoZXI7IGFzIGEKKyAgICAgICAgIyByZXN1bHQsIGEgZ2l2ZW4gaW5wdXQgc2hhcmQgaXMg
bmV2ZXIgc3BsaXQgYmV0d2VlbiBvdXRwdXQgc2hhcmRzLgorICAgICAgICAjCisgICAgICAgICMg
RWFjaCBvdXRwdXQgc2hhcmQgY29udGFpbnMgdGhlIHRlc3RzIGZyb20gb25lIG9yIG1vcmUgaW5w
dXQgc2hhcmRzIGFuZAorICAgICAgICAjIGhlbmNlIG1heSBjb250YWluIHRlc3RzIGZyb20gbXVs
dGlwbGUgZGlyZWN0b3JpZXMuCisKKyAgICAgICAgZGVmIGRpdmlkZV9hbmRfcm91bmRfdXAobnVt
ZXJhdG9yLCBkaXZpc29yKToKKyAgICAgICAgICAgIHJldHVybiBpbnQobWF0aC5jZWlsKGZsb2F0
KG51bWVyYXRvcikgLyBkaXZpc29yKSkKKworICAgICAgICBkZWYgZXh0cmFjdF9hbmRfZmxhdHRl
bihzaGFyZHMpOgorICAgICAgICAgICAgdGVzdF9pbnB1dHMgPSBbXQorICAgICAgICAgICAgZm9y
IHNoYXJkIGluIHNoYXJkczoKKyAgICAgICAgICAgICAgICB0ZXN0X2lucHV0cy5leHRlbmQoc2hh
cmQudGVzdF9pbnB1dHMpCisgICAgICAgICAgICByZXR1cm4gdGVzdF9pbnB1dHMKKworICAgICAg
ICBkZWYgc3BsaXRfYXQoc2VxLCBpbmRleCk6CisgICAgICAgICAgICByZXR1cm4gKHNlcVs6aW5k
ZXhdLCBzZXFbaW5kZXg6XSkKKworICAgICAgICBudW1fb2xkX3Blcl9uZXcgPSBkaXZpZGVfYW5k
X3JvdW5kX3VwKGxlbihvbGRfc2hhcmRzKSwgbWF4X25ld19zaGFyZHMpCisgICAgICAgIG5ld19z
aGFyZHMgPSBbXQorICAgICAgICByZW1haW5pbmdfc2hhcmRzID0gb2xkX3NoYXJkcworICAgICAg
ICB3aGlsZSByZW1haW5pbmdfc2hhcmRzOgorICAgICAgICAgICAgc29tZV9zaGFyZHMsIHJlbWFp
bmluZ19zaGFyZHMgPSBzcGxpdF9hdChyZW1haW5pbmdfc2hhcmRzLCBudW1fb2xkX3Blcl9uZXcp
CisgICAgICAgICAgICBuZXdfc2hhcmRzLmFwcGVuZChUZXN0U2hhcmQoJyVzXyVkJyAlIChzaGFy
ZF9uYW1lX3ByZWZpeCwgbGVuKG5ld19zaGFyZHMpICsgMSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF9hbmRfZmxhdHRlbihzb21lX3NoYXJkcykpKQor
ICAgICAgICByZXR1cm4gbmV3X3NoYXJkcworCisgICAgZGVmIF9kaXJfZm9yX3Rlc3RfaW5wdXQo
c2VsZiwgdGVzdF9pbnB1dCk6CisgICAgICAgICIiIlJldHVybnMgdGhlIGhpZ2hlc3QtbGV2ZWwg
ZGlyZWN0b3J5IGJ5IHdoaWNoIHRvIHNoYXJkIHRoZSBnaXZlbgorICAgICAgICB0ZXN0IGZpbGUu
IiIiCisgICAgICAgIGRpcmVjdG9yeSwgdGVzdF9maWxlID0gc2VsZi5fc3BsaXQodGVzdF9pbnB1
dC50ZXN0X25hbWUpCisKKyAgICAgICAgIyBUaGUgaHR0cCB0ZXN0cyBhcmUgdmVyeSBzdGFibGUg
b24gbWFjL2xpbnV4LgorICAgICAgICAjIFRPRE8ob2phbik6IE1ha2UgdGhlIGh0dHAgc2VydmVy
IG9uIFdpbmRvd3MgYmUgYXBhY2hlIHNvIHdlIGNhbgorICAgICAgICAjIHR1cm4gc2hhcmQgdGhl
IGh0dHAgdGVzdHMgdGhlcmUgYXMgd2VsbC4gU3dpdGNoaW5nIHRvIGFwYWNoZSBpcworICAgICAg
ICAjIHdoYXQgbWFkZSB0aGVtIHN0YWJsZSBvbiBsaW51eC9tYWMuCisgICAgICAgIHJldHVybiBk
aXJlY3RvcnkKKworICAgIGRlZiB0ZXN0X2tleShzZWxmLCB0ZXN0X25hbWUpOgorICAgICAgICAi
IiJUdXJucyBhIHRlc3QgbmFtZSBpbnRvIGEgbGlzdCB3aXRoIHR3byBzdWJsaXN0cywgdGhlIG5h
dHVyYWwga2V5IG9mIHRoZQorICAgICAgICBkaXJuYW1lLCBhbmQgdGhlIG5hdHVyYWwga2V5IG9m
IHRoZSBiYXNlbmFtZS4KKworICAgICAgICBUaGlzIGNhbiBiZSB1c2VkIHdoZW4gc29ydGluZyBw
YXRocyBzbyB0aGF0IGZpbGVzIGluIGEgZGlyZWN0b3J5LgorICAgICAgICBkaXJlY3RvcnkgYXJl
IGtlcHQgdG9nZXRoZXIgcmF0aGVyIHRoYW4gYmVpbmcgbWl4ZWQgaW4gd2l0aCBmaWxlcyBpbgor
ICAgICAgICBzdWJkaXJlY3Rvcmllcy4iIiIKKyAgICAgICAgZGlybmFtZSwgYmFzZW5hbWUgPSBz
ZWxmLl9zcGxpdCh0ZXN0X25hbWUpCisgICAgICAgIHJldHVybiAoc2VsZi5uYXR1cmFsX3NvcnRf
a2V5KGRpcm5hbWUgKyBzZWxmLl9zZXApLCBzZWxmLm5hdHVyYWxfc29ydF9rZXkoYmFzZW5hbWUp
KQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBuYXR1cmFsX3NvcnRfa2V5KHN0cmluZ190
b19zcGxpdCk6CisgICAgICAgICIiIiBUdXJuIGEgc3RyaW5nIGludG8gYSBsaXN0IG9mIHN0cmlu
ZyBhbmQgbnVtYmVyIGNodW5rcy4KKyAgICAgICAgICAgICJ6MjNhIiAtPiBbInoiLCAyMywgImEi
XQorCisgICAgICAgICAgICBDYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgIm5hdHVyYWwgc29ydCIg
b3JkZXIuIFNlZToKKyAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmNvZGluZ2hvcnJvci5jb20v
YmxvZy8yMDA3LzEyL3NvcnRpbmctZm9yLWh1bWFucy1uYXR1cmFsLXNvcnQtb3JkZXIuaHRtbAor
ICAgICAgICAgICAgICAgIGh0dHA6Ly9uZWRiYXRjaGVsZGVyLmNvbS9ibG9nLzIwMDcxMi5odG1s
I2UyMDA3MTIxMVQwNTQ5NTYKKyAgICAgICAgIiIiCisgICAgICAgIGRlZiB0cnlpbnQodmFsKToK
KyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50KHZhbCkKKyAgICAg
ICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiB2YWwKKwor
ICAgICAgICByZXR1cm4gW3RyeWludChjaHVuaykgZm9yIGNodW5rIGluIHJlLnNwbGl0KCcoXGQr
KScsIHN0cmluZ190b19zcGxpdCldCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXJfdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRf
dGVzdF9ydW5uZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhhYmQwN2YzYWQ5YzUxMGExYmQw
YTRiOWFhNTk5NjEwY2YwNDA5MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lcl91bml0dGVz
dC5weQpAQCAtMCwwICsxLDI0NiBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxMCBHYWJvciBSYXBjc2FueWkgKHJnYWJvckBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJzaXR5
IG9mIFN6ZWdlZAorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20g
d2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKK2Zyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2lucHV0IGltcG9ydCBUZXN0SW5wdXQKK2Zyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzLmxheW91dF90ZXN0X3J1bm5lciBpbXBvcnQg
U2hhcmRlcgorCisKK2NsYXNzIFNoYXJkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAg
ICB0ZXN0X2xpc3QgPSBbCisgICAgICAgICJodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91bmlj
b2RlLmh0bSIsCisgICAgICAgICJhbmltYXRpb25zL2tleWZyYW1lcy5odG1sIiwKKyAgICAgICAg
Imh0dHAvdGVzdHMvc2VjdXJpdHkvdmlldy1zb3VyY2Utbm8tcmVmcmVzaC5odG1sIiwKKyAgICAg
ICAgImh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVk
Lmh0bWwiLAorICAgICAgICAiZmFzdC9jc3MvZGlzcGxheS1ub25lLWlubGluZS1zdHlsZS1jaGFu
Z2UtY3Jhc2guaHRtbCIsCisgICAgICAgICJodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3N1cHBv
cnRlZC14bWwtY29udGVudC10eXBlcy5odG1sIiwKKyAgICAgICAgImRvbS9odG1sL2xldmVsMi9o
dG1sL0hUTUxBbmNob3JFbGVtZW50MDMuaHRtbCIsCisgICAgICAgICJpZXRlc3RjZW50ZXIvSmF2
YXNjcmlwdC8xMS4xLjVfNC00LWMtMS5odG1sIiwKKyAgICAgICAgImRvbS9odG1sL2xldmVsMi9o
dG1sL0hUTUxBbmNob3JFbGVtZW50MDYuaHRtbCIsCisgICAgICAgICJwZXJmL29iamVjdC1rZXlz
Lmh0bWwiLAorICAgIF0KKworICAgIHJlZl90ZXN0cyA9IFsKKyAgICAgICAgImh0dHAvdGVzdHMv
c2VjdXJpdHkvdmlldy1zb3VyY2Utbm8tcmVmcmVzaC5odG1sIiwKKyAgICAgICAgImh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwiLAorICAg
ICAgICAiaWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQvMTEuMS41XzQtNC1jLTEuaHRtbCIsCisgICAg
ICAgICJkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDA2Lmh0bWwiLAorICAg
IF0KKworICAgIGRlZiBnZXRfdGVzdF9pbnB1dChzZWxmLCB0ZXN0X2ZpbGUpOgorICAgICAgICBy
ZXR1cm4gVGVzdElucHV0KHRlc3RfZmlsZSwgcmVxdWlyZXNfbG9jaz0odGVzdF9maWxlLnN0YXJ0
c3dpdGgoJ2h0dHAnKSBvciB0ZXN0X2ZpbGUuc3RhcnRzd2l0aCgncGVyZicpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICByZWZlcmVuY2VfZmlsZXM9KFsnZm9vJ10gaWYgdGVzdF9maWxlIGlu
IHNlbGYucmVmX3Rlc3RzIGVsc2UgTm9uZSkpCisKKyAgICBkZWYgZ2V0X3NoYXJkcyhzZWxmLCBu
dW1fd29ya2VycywgZnVsbHlfcGFyYWxsZWwsIHNoYXJkX3JlZl90ZXN0cz1GYWxzZSwgdGVzdF9s
aXN0PU5vbmUsIG1heF9sb2NrZWRfc2hhcmRzPTEpOgorICAgICAgICBkZWYgc3BsaXQodGVzdF9u
YW1lKToKKyAgICAgICAgICAgIGlkeCA9IHRlc3RfbmFtZS5yZmluZCgnLycpCisgICAgICAgICAg
ICBpZiBpZHggIT0gLTE6CisgICAgICAgICAgICAgICAgcmV0dXJuICh0ZXN0X25hbWVbMDppZHhd
LCB0ZXN0X25hbWVbaWR4ICsgMTpdKQorCisgICAgICAgIHNlbGYuc2hhcmRlciA9IFNoYXJkZXIo
c3BsaXQsICcvJywgbWF4X2xvY2tlZF9zaGFyZHMpCisgICAgICAgIHRlc3RfbGlzdCA9IHRlc3Rf
bGlzdCBvciBzZWxmLnRlc3RfbGlzdAorICAgICAgICByZXR1cm4gc2VsZi5zaGFyZGVyLnNoYXJk
X3Rlc3RzKFtzZWxmLmdldF90ZXN0X2lucHV0KHRlc3QpIGZvciB0ZXN0IGluIHRlc3RfbGlzdF0s
IG51bV93b3JrZXJzLCBmdWxseV9wYXJhbGxlbCwgc2hhcmRfcmVmX3Rlc3RzKQorCisgICAgZGVm
IGFzc2VydF9zaGFyZHMoc2VsZiwgYWN0dWFsX3NoYXJkcywgZXhwZWN0ZWRfc2hhcmRfbmFtZXMp
OgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oYWN0dWFsX3NoYXJkcyksIGxlbihleHBl
Y3RlZF9zaGFyZF9uYW1lcykpCisgICAgICAgIGZvciBpLCBzaGFyZCBpbiBlbnVtZXJhdGUoYWN0
dWFsX3NoYXJkcyk6CisgICAgICAgICAgICBleHBlY3RlZF9zaGFyZF9uYW1lLCBleHBlY3RlZF90
ZXN0X25hbWVzID0gZXhwZWN0ZWRfc2hhcmRfbmFtZXNbaV0KKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHNoYXJkLm5hbWUsIGV4cGVjdGVkX3NoYXJkX25hbWUpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhbdGVzdF9pbnB1dC50ZXN0X25hbWUgZm9yIHRlc3RfaW5wdXQgaW4g
c2hhcmQudGVzdF9pbnB1dHNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfdGVzdF9uYW1lcykKKworICAgIGRlZiB0ZXN0X3NoYXJkX2J5X2RpcihzZWxmKToKKyAgICAg
ICAgbG9ja2VkLCB1bmxvY2tlZCA9IHNlbGYuZ2V0X3NoYXJkcyhudW1fd29ya2Vycz0yLCBmdWxs
eV9wYXJhbGxlbD1GYWxzZSkKKworICAgICAgICAjIE5vdGUgdGhhdCBhbHRob3VnaCB0aGVyZSBh
cmUgdGVzdHMgaW4gbXVsdGlwbGUgZGlycyB0aGF0IG5lZWQgbG9ja3MsCisgICAgICAgICMgdGhl
eSBhcmUgY3JhbW1lZCBpbnRvIGEgc2luZ2xlIHNoYXJkIGluIG9yZGVyIHRvIHJlZHVjZSB0aGUg
IyBvZgorICAgICAgICAjIHdvcmtlcnMgaGl0dGluZyB0aGUgc2VydmVyIGF0IG9uY2UuCisgICAg
ICAgIHNlbGYuYXNzZXJ0X3NoYXJkcyhsb2NrZWQsCisgICAgICAgICAgICAgWygnbG9ja2VkX3No
YXJkXzEnLAorICAgICAgICAgICAgICAgWydodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNl
LW5vLXJlZnJlc2guaHRtbCcsCisgICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL3VuaWNvZGUuaHRtJywKKyAgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvd2Vic29ja2V0LXByb3RvY29sLWlnbm9yZWQuaHRtbCcsCisgICAgICAgICAgICAg
ICAgJ2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1jb250ZW50LXR5cGVz
Lmh0bWwnLAorICAgICAgICAgICAgICAgICdwZXJmL29iamVjdC1rZXlzLmh0bWwnXSldKQorICAg
ICAgICBzZWxmLmFzc2VydF9zaGFyZHModW5sb2NrZWQsCisgICAgICAgICAgICBbKCdhbmltYXRp
b25zJywgWydhbmltYXRpb25zL2tleWZyYW1lcy5odG1sJ10pLAorICAgICAgICAgICAgICgnZG9t
L2h0bWwvbGV2ZWwyL2h0bWwnLCBbJ2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVt
ZW50MDMuaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb20v
aHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDA2Lmh0bWwnXSksCisgICAgICAgICAg
ICAgKCdmYXN0L2NzcycsIFsnZmFzdC9jc3MvZGlzcGxheS1ub25lLWlubGluZS1zdHlsZS1jaGFu
Z2UtY3Jhc2guaHRtbCddKSwKKyAgICAgICAgICAgICAoJ2lldGVzdGNlbnRlci9KYXZhc2NyaXB0
JywgWydpZXRlc3RjZW50ZXIvSmF2YXNjcmlwdC8xMS4xLjVfNC00LWMtMS5odG1sJ10pXSkKKwor
ICAgIGRlZiB0ZXN0X3NoYXJkX2J5X2Rpcl9zaGFyZGluZ19yZWZfdGVzdHMoc2VsZik6CisgICAg
ICAgIGxvY2tlZCwgdW5sb2NrZWQgPSBzZWxmLmdldF9zaGFyZHMobnVtX3dvcmtlcnM9MiwgZnVs
bHlfcGFyYWxsZWw9RmFsc2UsIHNoYXJkX3JlZl90ZXN0cz1UcnVlKQorCisgICAgICAgICMgTm90
ZSB0aGF0IGFsdGhvdWdoIHRoZXJlIGFyZSB0ZXN0cyBpbiBtdWx0aXBsZSBkaXJzIHRoYXQgbmVl
ZCBsb2NrcywKKyAgICAgICAgIyB0aGV5IGFyZSBjcmFtbWVkIGludG8gYSBzaW5nbGUgc2hhcmQg
aW4gb3JkZXIgdG8gcmVkdWNlIHRoZSAjIG9mCisgICAgICAgICMgd29ya2VycyBoaXR0aW5nIHRo
ZSBzZXJ2ZXIgYXQgb25jZS4KKyAgICAgICAgc2VsZi5hc3NlcnRfc2hhcmRzKGxvY2tlZCwKKyAg
ICAgICAgICAgIFsoJ2xvY2tlZF9zaGFyZF8xJywKKyAgICAgICAgICAgICAgWydodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bScsCisgICAgICAgICAgICAgICAnaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCcsCisgICAg
ICAgICAgICAgICAncGVyZi9vYmplY3Qta2V5cy5odG1sJywKKyAgICAgICAgICAgICAgICdodHRw
L3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5vLXJlZnJlc2guaHRtbCcsCisgICAgICAgICAg
ICAgICAnaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvd2Vic29ja2V0LXByb3RvY29sLWlnbm9y
ZWQuaHRtbCddKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0X3NoYXJkcyh1bmxvY2tlZCwKKyAgICAg
ICAgICAgIFsoJ2FuaW1hdGlvbnMnLCBbJ2FuaW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwnXSksCisg
ICAgICAgICAgICAgKCdkb20vaHRtbC9sZXZlbDIvaHRtbCcsIFsnZG9tL2h0bWwvbGV2ZWwyL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQwMy5odG1sJ10pLAorICAgICAgICAgICAgICgnZmFzdC9jc3Mn
LCBbJ2Zhc3QvY3NzL2Rpc3BsYXktbm9uZS1pbmxpbmUtc3R5bGUtY2hhbmdlLWNyYXNoLmh0bWwn
XSksCisgICAgICAgICAgICAgKCd+cmVmOmRvbS9odG1sL2xldmVsMi9odG1sJywgWydkb20vaHRt
bC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDA2Lmh0bWwnXSksCisgICAgICAgICAgICAg
KCd+cmVmOmlldGVzdGNlbnRlci9KYXZhc2NyaXB0JywgWydpZXRlc3RjZW50ZXIvSmF2YXNjcmlw
dC8xMS4xLjVfNC00LWMtMS5odG1sJ10pXSkKKworICAgIGRlZiB0ZXN0X3NoYXJkX2V2ZXJ5X2Zp
bGUoc2VsZik6CisgICAgICAgIGxvY2tlZCwgdW5sb2NrZWQgPSBzZWxmLmdldF9zaGFyZHMobnVt
X3dvcmtlcnM9MiwgZnVsbHlfcGFyYWxsZWw9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfc2hh
cmRzKGxvY2tlZCwKKyAgICAgICAgICAgIFsoJy4nLCBbJ2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL3VuaWNvZGUuaHRtJ10pLAorICAgICAgICAgICAgICgnLicsIFsnaHR0cC90ZXN0cy9zZWN1
cml0eS92aWV3LXNvdXJjZS1uby1yZWZyZXNoLmh0bWwnXSksCisgICAgICAgICAgICAgKCcuJywg
WydodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy93ZWJzb2NrZXQtcHJvdG9jb2wtaWdub3JlZC5o
dG1sJ10pLAorICAgICAgICAgICAgICgnLicsIFsnaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9z
dXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCddKSwKKyAgICAgICAgICAgICAoJy4nLCBb
J3BlcmYvb2JqZWN0LWtleXMuaHRtbCddKV0pLAorICAgICAgICBzZWxmLmFzc2VydF9zaGFyZHMo
dW5sb2NrZWQsCisgICAgICAgICAgICBbKCcuJywgWydhbmltYXRpb25zL2tleWZyYW1lcy5odG1s
J10pLAorICAgICAgICAgICAgICgnLicsIFsnZmFzdC9jc3MvZGlzcGxheS1ub25lLWlubGluZS1z
dHlsZS1jaGFuZ2UtY3Jhc2guaHRtbCddKSwKKyAgICAgICAgICAgICAoJy4nLCBbJ2RvbS9odG1s
L2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50MDMuaHRtbCddKSwKKyAgICAgICAgICAgICAo
Jy4nLCBbJ2lldGVzdGNlbnRlci9KYXZhc2NyaXB0LzExLjEuNV80LTQtYy0xLmh0bWwnXSksCisg
ICAgICAgICAgICAgKCcuJywgWydkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dDA2Lmh0bWwnXSldKQorCisgICAgZGVmIHRlc3Rfc2hhcmRfaW5fdHdvKHNlbGYpOgorICAgICAg
ICBsb2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hhcmRzKG51bV93b3JrZXJzPTEsIGZ1bGx5
X3BhcmFsbGVsPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydF9zaGFyZHMobG9ja2VkLAorICAg
ICAgICAgICAgWygnbG9ja2VkX3Rlc3RzJywKKyAgICAgICAgICAgICAgWydodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy91bmljb2RlLmh0bScsCisgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy9z
ZWN1cml0eS92aWV3LXNvdXJjZS1uby1yZWZyZXNoLmh0bWwnLAorICAgICAgICAgICAgICAgJ2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwn
LAorICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXht
bC1jb250ZW50LXR5cGVzLmh0bWwnLAorICAgICAgICAgICAgICAgJ3BlcmYvb2JqZWN0LWtleXMu
aHRtbCddKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0X3NoYXJkcyh1bmxvY2tlZCwKKyAgICAgICAg
ICAgIFsoJ3VubG9ja2VkX3Rlc3RzJywKKyAgICAgICAgICAgICAgWydhbmltYXRpb25zL2tleWZy
YW1lcy5odG1sJywKKyAgICAgICAgICAgICAgICdmYXN0L2Nzcy9kaXNwbGF5LW5vbmUtaW5saW5l
LXN0eWxlLWNoYW5nZS1jcmFzaC5odG1sJywKKyAgICAgICAgICAgICAgICdkb20vaHRtbC9sZXZl
bDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDAzLmh0bWwnLAorICAgICAgICAgICAgICAgJ2lldGVz
dGNlbnRlci9KYXZhc2NyaXB0LzExLjEuNV80LTQtYy0xLmh0bWwnLAorICAgICAgICAgICAgICAg
J2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50MDYuaHRtbCddKV0pCisKKyAg
ICBkZWYgdGVzdF9zaGFyZF9pbl90d29fc2hhcmRpbmdfcmVmX3Rlc3RzKHNlbGYpOgorICAgICAg
ICBsb2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hhcmRzKG51bV93b3JrZXJzPTEsIGZ1bGx5
X3BhcmFsbGVsPUZhbHNlLCBzaGFyZF9yZWZfdGVzdHM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRfc2hhcmRzKGxvY2tlZCwKKyAgICAgICAgICAgIFsoJ2xvY2tlZF90ZXN0cycsCisgICAgICAg
ICAgICAgIFsnaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5odG0nLAorICAgICAg
ICAgICAgICAgJ2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1jb250ZW50
LXR5cGVzLmh0bWwnLAorICAgICAgICAgICAgICAgJ3BlcmYvb2JqZWN0LWtleXMuaHRtbCcsCisg
ICAgICAgICAgICAgICAnaHR0cC90ZXN0cy9zZWN1cml0eS92aWV3LXNvdXJjZS1uby1yZWZyZXNo
Lmh0bWwnLAorICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNv
Y2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwnXSldKQorICAgICAgICBzZWxmLmFzc2VydF9zaGFy
ZHModW5sb2NrZWQsCisgICAgICAgICAgICBbKCd1bmxvY2tlZF90ZXN0cycsCisgICAgICAgICAg
ICAgIFsnYW5pbWF0aW9ucy9rZXlmcmFtZXMuaHRtbCcsCisgICAgICAgICAgICAgICAnZmFzdC9j
c3MvZGlzcGxheS1ub25lLWlubGluZS1zdHlsZS1jaGFuZ2UtY3Jhc2guaHRtbCcsCisgICAgICAg
ICAgICAgICAnZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQwMy5odG1sJywK
KyAgICAgICAgICAgICAgICdpZXRlc3RjZW50ZXIvSmF2YXNjcmlwdC8xMS4xLjVfNC00LWMtMS5o
dG1sJywKKyAgICAgICAgICAgICAgICdkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudDA2Lmh0bWwnXSldKQorCisgICAgZGVmIHRlc3Rfc2hhcmRfaW5fdHdvX2hhc19ub19sb2Nr
ZWRfc2hhcmRzKHNlbGYpOgorICAgICAgICBsb2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hh
cmRzKG51bV93b3JrZXJzPTEsIGZ1bGx5X3BhcmFsbGVsPUZhbHNlLAorICAgICAgICAgICAgIHRl
c3RfbGlzdD1bJ2FuaW1hdGlvbnMva2V5ZnJhbWUuaHRtbCddKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhsZW4obG9ja2VkKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKHVu
bG9ja2VkKSwgMSkKKworICAgIGRlZiB0ZXN0X3NoYXJkX2luX3R3b19oYXNfbm9fdW5sb2NrZWRf
c2hhcmRzKHNlbGYpOgorICAgICAgICBsb2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hhcmRz
KG51bV93b3JrZXJzPTEsIGZ1bGx5X3BhcmFsbGVsPUZhbHNlLAorICAgICAgICAgICAgIHRlc3Rf
bGlzdD1bJ2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3VuaWNvZGUuaHRtJ10pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihsb2NrZWQpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhsZW4odW5sb2NrZWQpLCAwKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfbG9ja2VkX3No
YXJkcyhzZWxmKToKKyAgICAgICAgbG9ja2VkLCB1bmxvY2tlZCA9IHNlbGYuZ2V0X3NoYXJkcyhu
dW1fd29ya2Vycz00LCBmdWxseV9wYXJhbGxlbD1GYWxzZSwgbWF4X2xvY2tlZF9zaGFyZHM9MikK
KyAgICAgICAgc2VsZi5hc3NlcnRfc2hhcmRzKGxvY2tlZCwKKyAgICAgICAgICAgIFsoJ2xvY2tl
ZF9zaGFyZF8xJywKKyAgICAgICAgICAgICAgWydodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291
cmNlLW5vLXJlZnJlc2guaHRtbCcsCisgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvdW5pY29kZS5odG0nLAorICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwnXSksCisgICAgICAgICAg
ICAgKCdsb2NrZWRfc2hhcmRfMicsCisgICAgICAgICAgICAgIFsnaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCcsCisgICAgICAgICAgICAg
ICAncGVyZi9vYmplY3Qta2V5cy5odG1sJ10pXSkKKworICAgICAgICBsb2NrZWQsIHVubG9ja2Vk
ID0gc2VsZi5nZXRfc2hhcmRzKG51bV93b3JrZXJzPTQsIGZ1bGx5X3BhcmFsbGVsPUZhbHNlKQor
ICAgICAgICBzZWxmLmFzc2VydF9zaGFyZHMobG9ja2VkLAorICAgICAgICAgICAgWygnbG9ja2Vk
X3NoYXJkXzEnLAorICAgICAgICAgICAgICBbJ2h0dHAvdGVzdHMvc2VjdXJpdHkvdmlldy1zb3Vy
Y2Utbm8tcmVmcmVzaC5odG1sJywKKyAgICAgICAgICAgICAgICdodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy91bmljb2RlLmh0bScsCisgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvd2Vic29ja2V0LXByb3RvY29sLWlnbm9yZWQuaHRtbCcsCisgICAgICAgICAgICAg
ICAnaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMu
aHRtbCcsCisgICAgICAgICAgICAgICAncGVyZi9vYmplY3Qta2V5cy5odG1sJ10pXSkKKworCitj
bGFzcyBOYXR1cmFsQ29tcGFyZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBhc3Nl
cnRfY21wKHNlbGYsIHgsIHksIHJlc3VsdCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNt
cChTaGFyZGVyLm5hdHVyYWxfc29ydF9rZXkoeCksIFNoYXJkZXIubmF0dXJhbF9zb3J0X2tleSh5
KSksIHJlc3VsdCkKKworICAgIGRlZiB0ZXN0X25hdHVyYWxfY29tcGFyZShzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRfY21wKCdhJywgJ2EnLCAwKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAo
J2FiJywgJ2EnLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2EnLCAnYWInLCAtMSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRfY21wKCcnLCAnJywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21w
KCcnLCAnYWInLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcxJywgJzInLCAtMSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRfY21wKCcyJywgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9j
bXAoJzEnLCAnMTAnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcyJywgJzEwJywgLTEp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzEuaHRtbCcsICdmb29fMi5odG1sJywgLTEp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzEuMS5odG1sJywgJ2Zvb18yLmh0bWwnLCAt
MSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMS5odG1sJywgJ2Zvb18xMC5odG1sJywg
LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzIuaHRtbCcsICdmb29fMTAuaHRtbCcs
IC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18yMy5odG1sJywgJ2Zvb18xMC5odG1s
JywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMjMuaHRtbCcsICdmb29fMTAwLmh0
bWwnLCAtMSkKKworCitjbGFzcyBLZXlDb21wYXJlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Cisg
ICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBkZWYgc3BsaXQodGVzdF9uYW1lKToKKyAgICAg
ICAgICAgIGlkeCA9IHRlc3RfbmFtZS5yZmluZCgnLycpCisgICAgICAgICAgICBpZiBpZHggIT0g
LTE6CisgICAgICAgICAgICAgICAgcmV0dXJuICh0ZXN0X25hbWVbMDppZHhdLCB0ZXN0X25hbWVb
aWR4ICsgMTpdKQorCisgICAgICAgIHNlbGYuc2hhcmRlciA9IFNoYXJkZXIoc3BsaXQsICcvJywg
MSkKKworICAgIGRlZiBhc3NlcnRfY21wKHNlbGYsIHgsIHksIHJlc3VsdCk6CisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKGNtcChzZWxmLnNoYXJkZXIudGVzdF9rZXkoeCksIHNlbGYuc2hhcmRl
ci50ZXN0X2tleSh5KSksIHJlc3VsdCkKKworICAgIGRlZiB0ZXN0X3Rlc3Rfa2V5KHNlbGYpOgor
ICAgICAgICBzZWxmLmFzc2VydF9jbXAoJy9hJywgJy9hJywgMCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRfY21wKCcvYScsICcvYicsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJy9hMicsICcv
YTEwJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnL2EyL2ZvbycsICcvYTEwL2Zvbycs
IC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJy9hL2ZvbzExJywgJy9hL2ZvbzInLCAxKQor
ICAgICAgICBzZWxmLmFzc2VydF9jbXAoJy9hYicsICcvYS9hL2InLCAtMSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfY21wKCcvYS9hL2InLCAnL2FiJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21w
KCcvZm9vLWJhci9iYXonLCAnL2Zvby9iYXonLCAtMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4
IGZiNzQ1ZmQ3ZTdjNmIwOGRhYTM2ZTE3ZGMyNDM4YmIwNzJiYjNhNWIuLmFjOTk4ZGYzZGM0Mjdm
NjNiMWViYTNjODgxNjllNWNhYjgwNjcwNTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQpAQCAtNDUs
NyArNDUsNyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1v
biBpbXBvcnQgbWVzc2FnZV9wb29sCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9s
bGVycy5sYXlvdXRfdGVzdF9ydW5uZXIgaW1wb3J0IFdvcmtlcgorZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMuY29udHJvbGxlcnMubGF5b3V0X3Rlc3RfcnVubmVyIGltcG9ydCBXb3JrZXIsIFNo
YXJkZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzLmZpbmRlciBpbXBv
cnQgTGF5b3V0VGVzdEZpbmRlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxl
cnMudGVzdF9yZXN1bHRfd3JpdGVyIGltcG9ydCBUZXN0UmVzdWx0V3JpdGVyCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQganNvbl9sYXlvdXRfcmVzdWx0
c19nZW5lcmF0b3IKQEAgLTI2OSwyMiArMjY5LDYgQEAgY2xhc3MgVGVzdFJ1bkludGVycnVwdGVk
RXhjZXB0aW9uKEV4Y2VwdGlvbik6CiBXb3JrZXJFeGNlcHRpb24gPSBtZXNzYWdlX3Bvb2wuV29y
a2VyRXhjZXB0aW9uCiAKIAotY2xhc3MgVGVzdFNoYXJkKG9iamVjdCk6Ci0gICAgIiIiQSB0ZXN0
IHNoYXJkIGlzIGEgbmFtZWQgbGlzdCBvZiBUZXN0SW5wdXRzLiIiIgotCi0gICAgIyBGSVhNRTog
TWFrZSB0aGlzIGNsYXNzIHZpc2libGUsIHVzZWQgYnkgd29ya2VycyBhcyB3ZWxsLgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBuYW1lLCB0ZXN0X2lucHV0cyk6Ci0gICAgICAgIHNlbGYubmFtZSA9
IG5hbWUKLSAgICAgICAgc2VsZi50ZXN0X2lucHV0cyA9IHRlc3RfaW5wdXRzCi0gICAgICAgIHNl
bGYucmVxdWlyZXNfbG9jayA9IHRlc3RfaW5wdXRzWzBdLnJlcXVpcmVzX2xvY2sKLQotICAgIGRl
ZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJUZXN0U2hhcmQobmFtZT0nJXMnLCB0
ZXN0X2lucHV0cz0lcycsIHJlcXVpcmVzX2xvY2s9JXMpIiAlIChzZWxmLm5hbWUsIHNlbGYudGVz
dF9pbnB1dHMsIHNlbGYucmVxdWlyZXNfbG9jaykKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3Ro
ZXIpOgotICAgICAgICByZXR1cm4gc2VsZi5uYW1lID09IG90aGVyLm5hbWUgYW5kIHNlbGYudGVz
dF9pbnB1dHMgPT0gb3RoZXIudGVzdF9pbnB1dHMKLQotCiBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6
CiAgICAgIiIiQSBjbGFzcyBmb3IgbWFuYWdpbmcgcnVubmluZyBhIHNlcmllcyBvZiB0ZXN0cyBv
biBhIHNlcmllcyBvZiBsYXlvdXQKICAgICB0ZXN0IGZpbGVzLiIiIgpAQCAtMzI5LDYgKzMxMyw3
IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fd29ya2VyX3N0YXRzID0g
e30KICAgICAgICAgc2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFyeSA9IE5vbmUKICAgICAgICAg
c2VsZi5fZmluZGVyID0gTGF5b3V0VGVzdEZpbmRlcihzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25z
KQorICAgICAgICBzZWxmLl9zaGFyZGVyID0gU2hhcmRlcihzZWxmLl9wb3J0LnNwbGl0X3Rlc3Qs
IHNlbGYuX3BvcnQuVEVTVF9QQVRIX1NFUEFSQVRPUiwgc2VsZi5fb3B0aW9ucy5tYXhfbG9ja2Vk
X3NoYXJkcykKIAogICAgIGRlZiBfY29sbGVjdF90ZXN0cyhzZWxmLCBhcmdzKToKICAgICAgICAg
cmV0dXJuIHNlbGYuX2ZpbmRlci5maW5kX3Rlc3RzKHNlbGYuX29wdGlvbnMsIGFyZ3MpCkBAIC0z
NTQsNyArMzM5LDcgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLnJhbmRvbWl6ZV9vcmRlcjoKICAgICAgICAgICAgIHJhbmRvbS5zaHVmZmxlKHNlbGYu
X3Rlc3RfbmFtZXMpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl90ZXN0X25hbWVz
LnNvcnQoa2V5PWxhbWJkYSB0ZXN0OiB0ZXN0X2tleShzZWxmLl9wb3J0LCB0ZXN0KSkKKyAgICAg
ICAgICAgIHNlbGYuX3Rlc3RfbmFtZXMuc29ydChrZXk9c2VsZi5fc2hhcmRlci50ZXN0X2tleSkK
IAogICAgICAgICBzZWxmLl90ZXN0X25hbWVzLCB0ZXN0c19pbl9vdGhlcl9jaHVua3MgPSBzZWxm
Ll9maW5kZXIuc3BsaXRfaW50b19jaHVua3Moc2VsZi5fdGVzdF9uYW1lcykKICAgICAgICAgc2Vs
Zi5fZXhwZWN0YXRpb25zLmFkZF9za2lwcGVkX3Rlc3RzKHRlc3RzX2luX290aGVyX2NodW5rcykK
QEAgLTM3MiwxNyArMzU3LDYgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICBpdGVy
YXRpb25zID0gc2VsZi5fb3B0aW9ucy5yZXBlYXRfZWFjaCAqIHNlbGYuX29wdGlvbnMuaXRlcmF0
aW9ucwogICAgICAgICByZXR1cm4gUmVzdWx0U3VtbWFyeShzZWxmLl9leHBlY3RhdGlvbnMsIHNl
dChzZWxmLl90ZXN0X25hbWVzKSwgaXRlcmF0aW9ucywgdGVzdHNfdG9fc2tpcCkKIAotICAgIGRl
ZiBfZGlyX2Zvcl90ZXN0X2lucHV0KHNlbGYsIHRlc3RfaW5wdXQpOgotICAgICAgICAiIiJSZXR1
cm5zIHRoZSBoaWdoZXN0LWxldmVsIGRpcmVjdG9yeSBieSB3aGljaCB0byBzaGFyZCB0aGUgZ2l2
ZW4KLSAgICAgICAgdGVzdCBmaWxlLiIiIgotICAgICAgICBkaXJlY3RvcnksIHRlc3RfZmlsZSA9
IHNlbGYuX3BvcnQuc3BsaXRfdGVzdCh0ZXN0X2lucHV0LnRlc3RfbmFtZSkKLQotICAgICAgICAj
IFRoZSBodHRwIHRlc3RzIGFyZSB2ZXJ5IHN0YWJsZSBvbiBtYWMvbGludXguCi0gICAgICAgICMg
VE9ETyhvamFuKTogTWFrZSB0aGUgaHR0cCBzZXJ2ZXIgb24gV2luZG93cyBiZSBhcGFjaGUgc28g
d2UgY2FuCi0gICAgICAgICMgdHVybiBzaGFyZCB0aGUgaHR0cCB0ZXN0cyB0aGVyZSBhcyB3ZWxs
LiBTd2l0Y2hpbmcgdG8gYXBhY2hlIGlzCi0gICAgICAgICMgd2hhdCBtYWRlIHRoZW0gc3RhYmxl
IG9uIGxpbnV4L21hYy4KLSAgICAgICAgcmV0dXJuIGRpcmVjdG9yeQotCiAgICAgZGVmIF90ZXN0
X2lucHV0X2Zvcl9maWxlKHNlbGYsIHRlc3RfZmlsZSk6CiAgICAgICAgIHJldHVybiBUZXN0SW5w
dXQodGVzdF9maWxlLAogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21z
IGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X2ZpbGUpIGVsc2Ugc2VsZi5fb3B0aW9ucy50aW1l
X291dF9tcywKQEAgLTQwNSwxNjQgKzM3OSw2IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAg
ICAgICAgICAgIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzID0gc2VsZi5fcG9ydC5yZWZlcmVu
Y2VfZmlsZXModGVzdF9pbnB1dC50ZXN0X25hbWUpCiAgICAgICAgIHJldHVybiBib29sKHRlc3Rf
aW5wdXQucmVmZXJlbmNlX2ZpbGVzKQogCi0gICAgZGVmIF9zaGFyZF90ZXN0cyhzZWxmLCB0ZXN0
X2lucHV0cywgbnVtX3dvcmtlcnMsIGZ1bGx5X3BhcmFsbGVsLCBzaGFyZF9yZWZfdGVzdHMpOgot
ICAgICAgICAiIiJHcm91cHMgdGVzdHMgaW50byBiYXRjaGVzLgotICAgICAgICBUaGlzIGhlbHBz
IGVuc3VyZSB0aGF0IHRlc3RzIHRoYXQgZGVwZW5kIG9uIGVhY2ggb3RoZXIgKGFrYSBiYWQgdGVz
dHMhKQotICAgICAgICBjb250aW51ZSB0byBydW4gdG9nZXRoZXIgYXMgbW9zdCBjcm9zcy10ZXN0
cyBkZXBlbmRlbmNpZXMgdGVuZCB0bwotICAgICAgICBvY2N1ciB3aXRoaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgotICAgICAgICBSZXR1cm46Ci0gICAgICAgICAgICBUd28gbGlzdCBvZiBUZXN0U2hh
cmRzLiBUaGUgZmlyc3QgY29udGFpbnMgdGVzdHMgdGhhdCBtdXN0IG9ubHkgYmUKLSAgICAgICAg
ICAgIHJ1biB1bmRlciB0aGUgc2VydmVyIGxvY2ssIHRoZSBzZWNvbmQgY2FuIGJlIHJ1biB3aGVu
ZXZlci4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBGSVhNRTogTW92ZSBhbGwgb2YgdGhlIHNo
YXJkaW5nIGxvZ2ljIG91dCBvZiBtYW5hZ2VyIGludG8gaXRzCi0gICAgICAgICMgb3duIGNsYXNz
IG9yIG1vZHVsZS4gQ29uc2lkZXIgZ3JvdXBpbmcgaXQgd2l0aCB0aGUgY2h1bmtpbmcgbG9naWMK
LSAgICAgICAgIyBpbiBwcmVwYXJlX2xpc3RzIGFzIHdlbGwuCi0gICAgICAgIGlmIG51bV93b3Jr
ZXJzID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2hhcmRfaW5fdHdvKHRlc3RfaW5w
dXRzLCBzaGFyZF9yZWZfdGVzdHMpCi0gICAgICAgIGVsaWYgZnVsbHlfcGFyYWxsZWw6Ci0gICAg
ICAgICAgICByZXR1cm4gc2VsZi5fc2hhcmRfZXZlcnlfZmlsZSh0ZXN0X2lucHV0cykKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX3NoYXJkX2J5X2RpcmVjdG9yeSh0ZXN0X2lucHV0cywgbnVtX3dvcmtl
cnMsIHNoYXJkX3JlZl90ZXN0cykKLQotICAgIGRlZiBfc2hhcmRfaW5fdHdvKHNlbGYsIHRlc3Rf
aW5wdXRzLCBzaGFyZF9yZWZfdGVzdHMpOgotICAgICAgICAiIiJSZXR1cm5zIHR3byBsaXN0cyBv
ZiBzaGFyZHMsIG9uZSB3aXRoIGFsbCB0aGUgdGVzdHMgcmVxdWlyaW5nIGEgbG9jayBhbmQgb25l
IHdpdGggdGhlIHJlc3QuCi0KLSAgICAgICAgVGhpcyBpcyB1c2VkIHdoZW4gdGhlcmUncyBvbmx5
IG9uZSB3b3JrZXIsIHRvIG1pbmltaXplIHRoZSBwZXItc2hhcmQgb3ZlcmhlYWQuIiIiCi0gICAg
ICAgIGxvY2tlZF9pbnB1dHMgPSBbXQotICAgICAgICBsb2NrZWRfcmVmX3Rlc3RfaW5wdXRzID0g
W10KLSAgICAgICAgdW5sb2NrZWRfaW5wdXRzID0gW10KLSAgICAgICAgdW5sb2NrZWRfcmVmX3Rl
c3RfaW5wdXRzID0gW10KLSAgICAgICAgZm9yIHRlc3RfaW5wdXQgaW4gdGVzdF9pbnB1dHM6Ci0g
ICAgICAgICAgICBpZiB0ZXN0X2lucHV0LnJlcXVpcmVzX2xvY2s6Ci0gICAgICAgICAgICAgICAg
aWYgc2hhcmRfcmVmX3Rlc3RzIGFuZCB0ZXN0X2lucHV0LnJlZmVyZW5jZV9maWxlczoKLSAgICAg
ICAgICAgICAgICAgICAgbG9ja2VkX3JlZl90ZXN0X2lucHV0cy5hcHBlbmQodGVzdF9pbnB1dCkK
LSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBsb2NrZWRfaW5wdXRz
LmFwcGVuZCh0ZXN0X2lucHV0KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBp
ZiBzaGFyZF9yZWZfdGVzdHMgYW5kIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzOgotICAgICAg
ICAgICAgICAgICAgICB1bmxvY2tlZF9yZWZfdGVzdF9pbnB1dHMuYXBwZW5kKHRlc3RfaW5wdXQp
Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdW5sb2NrZWRfaW5w
dXRzLmFwcGVuZCh0ZXN0X2lucHV0KQotICAgICAgICBsb2NrZWRfaW5wdXRzLmV4dGVuZChsb2Nr
ZWRfcmVmX3Rlc3RfaW5wdXRzKQotICAgICAgICB1bmxvY2tlZF9pbnB1dHMuZXh0ZW5kKHVubG9j
a2VkX3JlZl90ZXN0X2lucHV0cykKLQotICAgICAgICBsb2NrZWRfc2hhcmRzID0gW10KLSAgICAg
ICAgdW5sb2NrZWRfc2hhcmRzID0gW10KLSAgICAgICAgaWYgbG9ja2VkX2lucHV0czoKLSAgICAg
ICAgICAgIGxvY2tlZF9zaGFyZHMgPSBbVGVzdFNoYXJkKCdsb2NrZWRfdGVzdHMnLCBsb2NrZWRf
aW5wdXRzKV0KLSAgICAgICAgaWYgdW5sb2NrZWRfaW5wdXRzOgotICAgICAgICAgICAgdW5sb2Nr
ZWRfc2hhcmRzLmFwcGVuZChUZXN0U2hhcmQoJ3VubG9ja2VkX3Rlc3RzJywgdW5sb2NrZWRfaW5w
dXRzKSkKLQotICAgICAgICByZXR1cm4gbG9ja2VkX3NoYXJkcywgdW5sb2NrZWRfc2hhcmRzCi0K
LSAgICBkZWYgX3NoYXJkX2V2ZXJ5X2ZpbGUoc2VsZiwgdGVzdF9pbnB1dHMpOgotICAgICAgICAi
IiJSZXR1cm5zIHR3byBsaXN0cyBvZiBzaGFyZHMsIGVhY2ggc2hhcmQgY29udGFpbmluZyBhIHNp
bmdsZSB0ZXN0IGZpbGUuCi0KLSAgICAgICAgVGhpcyBtb2RlIGdldHMgbWF4aW1hbCBwYXJhbGxl
bGlzbSBhdCB0aGUgY29zdCBvZiBtdWNoIGhpZ2hlciBmbGFraW5lc3MuIiIiCi0gICAgICAgIGxv
Y2tlZF9zaGFyZHMgPSBbXQotICAgICAgICB1bmxvY2tlZF9zaGFyZHMgPSBbXQotICAgICAgICBm
b3IgdGVzdF9pbnB1dCBpbiB0ZXN0X2lucHV0czoKLSAgICAgICAgICAgICMgTm90ZSB0aGF0IHdl
IHVzZSBhICcuJyBmb3IgdGhlIHNoYXJkIG5hbWU7IHRoZSBuYW1lIGRvZXNuJ3QgcmVhbGx5Ci0g
ICAgICAgICAgICAjIG1hdHRlciwgYW5kIHRoZSBvbmx5IG90aGVyIG1lYW5pbmdmdWwgdmFsdWUg
d291bGQgYmUgdGhlIGZpbGVuYW1lLAotICAgICAgICAgICAgIyB3aGljaCB3b3VsZCBiZSByZWFs
bHkgcmVkdW5kYW50LgotICAgICAgICAgICAgaWYgdGVzdF9pbnB1dC5yZXF1aXJlc19sb2NrOgot
ICAgICAgICAgICAgICAgIGxvY2tlZF9zaGFyZHMuYXBwZW5kKFRlc3RTaGFyZCgnLicsIFt0ZXN0
X2lucHV0XSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHVubG9ja2VkX3No
YXJkcy5hcHBlbmQoVGVzdFNoYXJkKCcuJywgW3Rlc3RfaW5wdXRdKSkKLQotICAgICAgICByZXR1
cm4gbG9ja2VkX3NoYXJkcywgdW5sb2NrZWRfc2hhcmRzCi0KLSAgICBkZWYgX3NoYXJkX2J5X2Rp
cmVjdG9yeShzZWxmLCB0ZXN0X2lucHV0cywgbnVtX3dvcmtlcnMsIHNoYXJkX3JlZl90ZXN0cyk6
Ci0gICAgICAgICIiIlJldHVybnMgdHdvIGxpc3RzIG9mIHNoYXJkcywgZWFjaCBzaGFyZCBjb250
YWluaW5nIGFsbCB0aGUgZmlsZXMgaW4gYSBkaXJlY3RvcnkuCi0KLSAgICAgICAgVGhpcyBpcyB0
aGUgZGVmYXVsdCBtb2RlLCBhbmQgZ2V0cyBhcyBtdWNoIHBhcmFsbGVsaXNtIGFzIHdlIGNhbiB3
aGlsZQotICAgICAgICBtaW5pbWl6aW5nIGZsYWtpbmVzcyBjYXVzZWQgYnkgaW50ZXItdGVzdCBk
ZXBlbmRlbmNpZXMuIiIiCi0gICAgICAgIGxvY2tlZF9zaGFyZHMgPSBbXQotICAgICAgICB1bmxv
Y2tlZF9zaGFyZHMgPSBbXQotICAgICAgICB0ZXN0c19ieV9kaXIgPSB7fQotICAgICAgICByZWZf
dGVzdHNfYnlfZGlyID0ge30KLSAgICAgICAgIyBGSVhNRTogR2l2ZW4gdGhhdCB0aGUgdGVzdHMg
YXJlIGFscmVhZHkgc29ydGVkIGJ5IGRpcmVjdG9yeSwKLSAgICAgICAgIyB3ZSBjYW4gcHJvYmFi
bHkgcmV3cml0ZSB0aGlzIHRvIGJlIGNsZWFyZXIgYW5kIGZhc3Rlci4KLSAgICAgICAgZm9yIHRl
c3RfaW5wdXQgaW4gdGVzdF9pbnB1dHM6Ci0gICAgICAgICAgICBkaXJlY3RvcnkgPSBzZWxmLl9k
aXJfZm9yX3Rlc3RfaW5wdXQodGVzdF9pbnB1dCkKLSAgICAgICAgICAgIGlmIHNoYXJkX3JlZl90
ZXN0cyBhbmQgdGVzdF9pbnB1dC5yZWZlcmVuY2VfZmlsZXM6Ci0gICAgICAgICAgICAgICAgcmVm
X3Rlc3RzX2J5X2Rpci5zZXRkZWZhdWx0KGRpcmVjdG9yeSwgW10pCi0gICAgICAgICAgICAgICAg
cmVmX3Rlc3RzX2J5X2RpcltkaXJlY3RvcnldLmFwcGVuZCh0ZXN0X2lucHV0KQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICB0ZXN0c19ieV9kaXIuc2V0ZGVmYXVsdChkaXJlY3Rv
cnksIFtdKQotICAgICAgICAgICAgICAgIHRlc3RzX2J5X2RpcltkaXJlY3RvcnldLmFwcGVuZCh0
ZXN0X2lucHV0KQotCi0gICAgICAgIGZvciBkaXJlY3RvcnksIHRlc3RfaW5wdXRzIGluIHRlc3Rz
X2J5X2Rpci5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgIHNoYXJkID0gVGVzdFNoYXJkKGRpcmVj
dG9yeSwgdGVzdF9pbnB1dHMpCi0gICAgICAgICAgICBpZiBzaGFyZC5yZXF1aXJlc19sb2NrOgot
ICAgICAgICAgICAgICAgIGxvY2tlZF9zaGFyZHMuYXBwZW5kKHNoYXJkKQotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICB1bmxvY2tlZF9zaGFyZHMuYXBwZW5kKHNoYXJkKQotCi0g
ICAgICAgIGZvciBkaXJlY3RvcnksIHRlc3RfaW5wdXRzIGluIHJlZl90ZXN0c19ieV9kaXIuaXRl
cml0ZW1zKCk6Ci0gICAgICAgICAgICAjICd+JyB0byBwbGFjZSB0aGUgcmVmIHRlc3RzIGFmdGVy
IG90aGVyIHRlc3RzIGFmdGVyIHNvcnRlZC4KLSAgICAgICAgICAgIHNoYXJkID0gVGVzdFNoYXJk
KCd+cmVmOicgKyBkaXJlY3RvcnksIHRlc3RfaW5wdXRzKQotICAgICAgICAgICAgaWYgc2hhcmQu
cmVxdWlyZXNfbG9jazoKLSAgICAgICAgICAgICAgICBsb2NrZWRfc2hhcmRzLmFwcGVuZChzaGFy
ZCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLmFw
cGVuZChzaGFyZCkKLQotICAgICAgICAjIFNvcnQgdGhlIHNoYXJkcyBieSBkaXJlY3RvcnkgbmFt
ZS4KLSAgICAgICAgbG9ja2VkX3NoYXJkcy5zb3J0KGtleT1sYW1iZGEgc2hhcmQ6IHNoYXJkLm5h
bWUpCi0gICAgICAgIHVubG9ja2VkX3NoYXJkcy5zb3J0KGtleT1sYW1iZGEgc2hhcmQ6IHNoYXJk
Lm5hbWUpCi0KLSAgICAgICAgcmV0dXJuIChzZWxmLl9yZXNpemVfc2hhcmRzKGxvY2tlZF9zaGFy
ZHMsIHNlbGYuX21heF9sb2NrZWRfc2hhcmRzKG51bV93b3JrZXJzKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdsb2NrZWRfc2hhcmQnKSwKLSAgICAgICAgICAgICAgICB1
bmxvY2tlZF9zaGFyZHMpCi0KLSAgICBkZWYgX21heF9sb2NrZWRfc2hhcmRzKHNlbGYsIG51bV93
b3JrZXJzKToKLSAgICAgICAgIyBQdXQgYSBjZWlsaW5nIG9uIHRoZSBudW1iZXIgb2YgbG9ja2Vk
IHNoYXJkcywgc28gdGhhdCB3ZQotICAgICAgICAjIGRvbid0IGhhbW1lciB0aGUgc2VydmVycyB0
b28gYmFkbHkuCi0KLSAgICAgICAgIyBGSVhNRTogRm9yIG5vdywgbGltaXQgdG8gb25lIHNoYXJk
IG9yIHNldCBpdAotICAgICAgICAjIHdpdGggdGhlIC0tbWF4LWxvY2tlZC1zaGFyZHMuIEFmdGVy
IHRlc3RpbmcgdG8gbWFrZSBzdXJlIHdlCi0gICAgICAgICMgY2FuIGhhbmRsZSBtdWx0aXBsZSBz
aGFyZHMsIHdlIHNob3VsZCBwcm9iYWJseSBkbyBzb21ldGhpbmcgbGlrZQotICAgICAgICAjIGxp
bWl0IHRoaXMgdG8gbm8gbW9yZSB0aGFuIGEgcXVhcnRlciBvZiBhbGwgd29ya2VycywgZS5nLjoK
LSAgICAgICAgIyByZXR1cm4gbWF4KG1hdGguY2VpbChudW1fd29ya2VycyAvIDQuMCksIDEpCi0g
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMubWF4X2xvY2tlZF9zaGFyZHM6Ci0gICAgICAgICAgICBu
dW1fb2ZfbG9ja2VkX3NoYXJkcyA9IHNlbGYuX29wdGlvbnMubWF4X2xvY2tlZF9zaGFyZHMKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIG51bV9vZl9sb2NrZWRfc2hhcmRzID0gMQotCi0gICAg
ICAgIHJldHVybiBudW1fb2ZfbG9ja2VkX3NoYXJkcwotCi0gICAgZGVmIF9yZXNpemVfc2hhcmRz
KHNlbGYsIG9sZF9zaGFyZHMsIG1heF9uZXdfc2hhcmRzLCBzaGFyZF9uYW1lX3ByZWZpeCk6Ci0g
ICAgICAgICIiIlRha2VzIGEgbGlzdCBvZiBzaGFyZHMgYW5kIHJlZGlzdHJpYnV0ZXMgdGhlIHRl
c3RzIGludG8gbm8gbW9yZQotICAgICAgICB0aGFuIHxtYXhfbmV3X3NoYXJkc3wgbmV3IHNoYXJk
cy4iIiIKLQotICAgICAgICAjIFRoaXMgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGF0IGVhY2gg
aW5wdXQgc2hhcmQgb25seSBjb250YWlucyB0ZXN0cyBmcm9tIGEKLSAgICAgICAgIyBzaW5nbGUg
ZGlyZWN0b3J5LCBhbmQgdGhhdCB0ZXN0cyBpbiBlYWNoIHNoYXJkIG11c3QgcmVtYWluIHRvZ2V0
aGVyOyBhcyBhCi0gICAgICAgICMgcmVzdWx0LCBhIGdpdmVuIGlucHV0IHNoYXJkIGlzIG5ldmVy
IHNwbGl0IGJldHdlZW4gb3V0cHV0IHNoYXJkcy4KLSAgICAgICAgIwotICAgICAgICAjIEVhY2gg
b3V0cHV0IHNoYXJkIGNvbnRhaW5zIHRoZSB0ZXN0cyBmcm9tIG9uZSBvciBtb3JlIGlucHV0IHNo
YXJkcyBhbmQKLSAgICAgICAgIyBoZW5jZSBtYXkgY29udGFpbiB0ZXN0cyBmcm9tIG11bHRpcGxl
IGRpcmVjdG9yaWVzLgotCi0gICAgICAgIGRlZiBkaXZpZGVfYW5kX3JvdW5kX3VwKG51bWVyYXRv
ciwgZGl2aXNvcik6Ci0gICAgICAgICAgICByZXR1cm4gaW50KG1hdGguY2VpbChmbG9hdChudW1l
cmF0b3IpIC8gZGl2aXNvcikpCi0KLSAgICAgICAgZGVmIGV4dHJhY3RfYW5kX2ZsYXR0ZW4oc2hh
cmRzKToKLSAgICAgICAgICAgIHRlc3RfaW5wdXRzID0gW10KLSAgICAgICAgICAgIGZvciBzaGFy
ZCBpbiBzaGFyZHM6Ci0gICAgICAgICAgICAgICAgdGVzdF9pbnB1dHMuZXh0ZW5kKHNoYXJkLnRl
c3RfaW5wdXRzKQotICAgICAgICAgICAgcmV0dXJuIHRlc3RfaW5wdXRzCi0KLSAgICAgICAgZGVm
IHNwbGl0X2F0KHNlcSwgaW5kZXgpOgotICAgICAgICAgICAgcmV0dXJuIChzZXFbOmluZGV4XSwg
c2VxW2luZGV4Ol0pCi0KLSAgICAgICAgbnVtX29sZF9wZXJfbmV3ID0gZGl2aWRlX2FuZF9yb3Vu
ZF91cChsZW4ob2xkX3NoYXJkcyksIG1heF9uZXdfc2hhcmRzKQotICAgICAgICBuZXdfc2hhcmRz
ID0gW10KLSAgICAgICAgcmVtYWluaW5nX3NoYXJkcyA9IG9sZF9zaGFyZHMKLSAgICAgICAgd2hp
bGUgcmVtYWluaW5nX3NoYXJkczoKLSAgICAgICAgICAgIHNvbWVfc2hhcmRzLCByZW1haW5pbmdf
c2hhcmRzID0gc3BsaXRfYXQocmVtYWluaW5nX3NoYXJkcywgbnVtX29sZF9wZXJfbmV3KQotICAg
ICAgICAgICAgbmV3X3NoYXJkcy5hcHBlbmQoVGVzdFNoYXJkKCclc18lZCcgJSAoc2hhcmRfbmFt
ZV9wcmVmaXgsIGxlbihuZXdfc2hhcmRzKSArIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4dHJhY3RfYW5kX2ZsYXR0ZW4oc29tZV9zaGFyZHMpKSkKLSAgICAg
ICAgcmV0dXJuIG5ld19zaGFyZHMKLQogICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIGZpbGVfbGlz
dCwgcmVzdWx0X3N1bW1hcnksIG51bV93b3JrZXJzKToKICAgICAgICAgIiIiUnVucyB0aGUgdGVz
dHMgaW4gdGhlIGZpbGVfbGlzdC4KIApAQCAtNTg5LDcgKzQwNSw3IEBAIGNsYXNzIE1hbmFnZXIo
b2JqZWN0KToKIAogICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSgnU2hhcmRpbmcg
dGVzdHMgLi4uJykKICAgICAgICAgdGVzdF9pbnB1dHMgPSBbc2VsZi5fdGVzdF9pbnB1dF9mb3Jf
ZmlsZShmaWxlKSBmb3IgZmlsZSBpbiBmaWxlX2xpc3RdCi0gICAgICAgIGxvY2tlZF9zaGFyZHMs
IHVubG9ja2VkX3NoYXJkcyA9IHNlbGYuX3NoYXJkX3Rlc3RzKHRlc3RfaW5wdXRzLCBpbnQoc2Vs
Zi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpLCBzZWxmLl9vcHRpb25zLmZ1bGx5X3BhcmFsbGVs
LCBzZWxmLl9vcHRpb25zLnNoYXJkX3JlZl90ZXN0cykKKyAgICAgICAgbG9ja2VkX3NoYXJkcywg
dW5sb2NrZWRfc2hhcmRzID0gc2VsZi5fc2hhcmRlci5zaGFyZF90ZXN0cyh0ZXN0X2lucHV0cywg
aW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgc2VsZi5fb3B0aW9ucy5mdWxseV9w
YXJhbGxlbCwgc2VsZi5fb3B0aW9ucy5zaGFyZF9yZWZfdGVzdHMpCiAKICAgICAgICAgIyBGSVhN
RTogV2UgZG9uJ3QgaGF2ZSBhIGdvb2Qgd2F5IHRvIGNvb3JkaW5hdGUgdGhlIHdvcmtlcnMgc28g
dGhhdAogICAgICAgICAjIHRoZXkgZG9uJ3QgdHJ5IHRvIHJ1biB0aGUgc2hhcmRzIHRoYXQgbmVl
ZCBhIGxvY2sgaWYgd2UgZG9uJ3QgYWN0dWFsbHkKQEAgLTk5NiwzMyArODEyLDMgQEAgY2xhc3Mg
TWFuYWdlcihvYmplY3QpOgogICAgICAgICBzZWxmLl93b3JrZXJfc3RhdHNbd29ya2VyX25hbWVd
WydudW1fdGVzdHMnXSArPSAxCiAgICAgICAgIHNlbGYuX2FsbF9yZXN1bHRzLmFwcGVuZChyZXN1
bHQpCiAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHNlbGYuX2N1cnJl
bnRfcmVzdWx0X3N1bW1hcnksIHJlc3VsdCkKLQotCi0jIEZJWE1FOiBUaGVzZSB0d28gZnJlZSBm
dW5jdGlvbnMgYmVsb25nIGVpdGhlciBvbiBtYW5hZ2VyIChzaW5jZSBpdCdzIHRoZSBvbmx5IG9u
ZQotIyB3aGljaCB1c2VzIHRoZW0pIG9yIGluIGEgZGlmZmVyZW50IGZpbGUgKGlmIHRoZXkgbmVl
ZCB0byBiZSByZS11c2VkKS4KLWRlZiB0ZXN0X2tleShwb3J0LCB0ZXN0X25hbWUpOgotICAgICIi
IlR1cm5zIGEgdGVzdCBuYW1lIGludG8gYSBsaXN0IHdpdGggdHdvIHN1Ymxpc3RzLCB0aGUgbmF0
dXJhbCBrZXkgb2YgdGhlCi0gICAgZGlybmFtZSwgYW5kIHRoZSBuYXR1cmFsIGtleSBvZiB0aGUg
YmFzZW5hbWUuCi0KLSAgICBUaGlzIGNhbiBiZSB1c2VkIHdoZW4gc29ydGluZyBwYXRocyBzbyB0
aGF0IGZpbGVzIGluIGEgZGlyZWN0b3J5LgotICAgIGRpcmVjdG9yeSBhcmUga2VwdCB0b2dldGhl
ciByYXRoZXIgdGhhbiBiZWluZyBtaXhlZCBpbiB3aXRoIGZpbGVzIGluCi0gICAgc3ViZGlyZWN0
b3JpZXMuIiIiCi0gICAgZGlybmFtZSwgYmFzZW5hbWUgPSBwb3J0LnNwbGl0X3Rlc3QodGVzdF9u
YW1lKQotICAgIHJldHVybiAobmF0dXJhbF9zb3J0X2tleShkaXJuYW1lICsgcG9ydC5URVNUX1BB
VEhfU0VQQVJBVE9SKSwgbmF0dXJhbF9zb3J0X2tleShiYXNlbmFtZSkpCi0KLQotZGVmIG5hdHVy
YWxfc29ydF9rZXkoc3RyaW5nX3RvX3NwbGl0KToKLSAgICAiIiIgVHVybiBhIHN0cmluZyBpbnRv
IGEgbGlzdCBvZiBzdHJpbmcgYW5kIG51bWJlciBjaHVua3MuCi0gICAgICAgICJ6MjNhIiAtPiBb
InoiLCAyMywgImEiXQotCi0gICAgICAgIENhbiBiZSB1c2VkIHRvIGltcGxlbWVudCAibmF0dXJh
bCBzb3J0IiBvcmRlci4gU2VlOgotICAgICAgICAgICAgaHR0cDovL3d3dy5jb2Rpbmdob3Jyb3Iu
Y29tL2Jsb2cvMjAwNy8xMi9zb3J0aW5nLWZvci1odW1hbnMtbmF0dXJhbC1zb3J0LW9yZGVyLmh0
bWwKLSAgICAgICAgICAgIGh0dHA6Ly9uZWRiYXRjaGVsZGVyLmNvbS9ibG9nLzIwMDcxMi5odG1s
I2UyMDA3MTIxMVQwNTQ5NTYKLSAgICAiIiIKLSAgICBkZWYgdHJ5aW50KHZhbCk6Ci0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbnQodmFsKQotICAgICAgICBleGNlcHQgVmFsdWVF
cnJvcjoKLSAgICAgICAgICAgIHJldHVybiB2YWwKLQotICAgIHJldHVybiBbdHJ5aW50KGNodW5r
KSBmb3IgY2h1bmsgaW4gcmUuc3BsaXQoJyhcZCspJywgc3RyaW5nX3RvX3NwbGl0KV0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5CmluZGV4IDZiMjE0YTI4Y2E3NjhmNTg5ZWUw
YmUxYzBkNjQ2OWEzMmMwNzU1NmIuLjk3NGM2M2U1YzVjZTAxMzRjMjE4ZWY2NjZmN2Y3M2FmNDhh
ZTkyMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weQpAQCAtNDQsNyAr
NDQsNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3Rj
YXNlCiBmcm9tIHdlYmtpdHB5IGltcG9ydCBsYXlvdXRfdGVzdHMKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzIGltcG9ydCBydW5fd2Via2l0X3Rlc3RzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWFuYWdlcgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMuY29udHJvbGxlcnMubWFuYWdlciBpbXBvcnQgaW50ZXJwcmV0X3Rlc3RfZmFpbHVyZXMsICBN
YW5hZ2VyLCBuYXR1cmFsX3NvcnRfa2V5LCB0ZXN0X2tleSwgVGVzdFJ1bkludGVycnVwdGVkRXhj
ZXB0aW9uLCBUZXN0U2hhcmQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJz
Lm1hbmFnZXIgaW1wb3J0IGludGVycHJldF90ZXN0X2ZhaWx1cmVzLCAgTWFuYWdlciwgVGVzdFJ1
bkludGVycnVwdGVkRXhjZXB0aW9uCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMg
aW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2Rl
bHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVs
cyBpbXBvcnQgdGVzdF9yZXN1bHRzCkBAIC01OCwxNzYgKzU4LDYgQEAgZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiAKIAotY2xhc3MgTWFuYWdl
cldyYXBwZXIoTWFuYWdlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlZl90ZXN0cywgKipr
d2FyZ3MpOgotICAgICAgICBNYW5hZ2VyLl9faW5pdF9fKHNlbGYsICoqa3dhcmdzKQotICAgICAg
ICBzZWxmLl9yZWZfdGVzdHMgPSByZWZfdGVzdHMKLQotICAgIGRlZiBfdGVzdF9pbnB1dF9mb3Jf
ZmlsZShzZWxmLCB0ZXN0X2ZpbGUpOgotICAgICAgICByZXR1cm4gVGVzdElucHV0KHRlc3RfZmls
ZSwgcmVmZXJlbmNlX2ZpbGVzPShbJ2ZvbyddIGlmIHRlc3RfZmlsZSBpbiBzZWxmLl9yZWZfdGVz
dHMgZWxzZSBOb25lKSwKLSAgICAgICAgICAgIHJlcXVpcmVzX2xvY2s9KHRlc3RfZmlsZS5zdGFy
dHN3aXRoKCdodHRwJykgb3IgdGVzdF9maWxlLnN0YXJ0c3dpdGgoJ3BlcmYnKSkpCi0KLQotY2xh
c3MgU2hhcmRpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgdGVzdF9saXN0ID0gWwot
ICAgICAgICAiaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5odG0iLAotICAgICAg
ICAiYW5pbWF0aW9ucy9rZXlmcmFtZXMuaHRtbCIsCi0gICAgICAgICJodHRwL3Rlc3RzL3NlY3Vy
aXR5L3ZpZXctc291cmNlLW5vLXJlZnJlc2guaHRtbCIsCi0gICAgICAgICJodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy93ZWJzb2NrZXQtcHJvdG9jb2wtaWdub3JlZC5odG1sIiwKLSAgICAgICAg
ImZhc3QvY3NzL2Rpc3BsYXktbm9uZS1pbmxpbmUtc3R5bGUtY2hhbmdlLWNyYXNoLmh0bWwiLAot
ICAgICAgICAiaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQt
dHlwZXMuaHRtbCIsCi0gICAgICAgICJkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudDAzLmh0bWwiLAotICAgICAgICAiaWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQvMTEuMS41XzQt
NC1jLTEuaHRtbCIsCi0gICAgICAgICJkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudDA2Lmh0bWwiLAotICAgICAgICAicGVyZi9vYmplY3Qta2V5cy5odG1sIiwKLSAgICBdCi0K
LSAgICByZWZfdGVzdHMgPSBbCi0gICAgICAgICJodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291
cmNlLW5vLXJlZnJlc2guaHRtbCIsCi0gICAgICAgICJodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy93ZWJzb2NrZXQtcHJvdG9jb2wtaWdub3JlZC5odG1sIiwKLSAgICAgICAgImlldGVzdGNlbnRl
ci9KYXZhc2NyaXB0LzExLjEuNV80LTQtYy0xLmh0bWwiLAotICAgICAgICAiZG9tL2h0bWwvbGV2
ZWwyL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQwNi5odG1sIiwKLSAgICBdCi0KLSAgICBkZWYgZ2V0
X3NoYXJkcyhzZWxmLCBudW1fd29ya2VycywgZnVsbHlfcGFyYWxsZWwsIHNoYXJkX3JlZl90ZXN0
cz1GYWxzZSwgdGVzdF9saXN0PU5vbmUsIG1heF9sb2NrZWRfc2hhcmRzPU5vbmUpOgotICAgICAg
ICB0ZXN0X2xpc3QgPSB0ZXN0X2xpc3Qgb3Igc2VsZi50ZXN0X2xpc3QKLSAgICAgICAgaG9zdCA9
IE1vY2tIb3N0KCkKLSAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChwb3J0X25h
bWU9J3Rlc3QnKQotICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oKQot
ICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMobWF4X2xvY2tlZF9zaGFyZHM9bWF4X2xvY2tl
ZF9zaGFyZHMpCi0gICAgICAgIHNlbGYubWFuYWdlciA9IE1hbmFnZXJXcmFwcGVyKHNlbGYucmVm
X3Rlc3RzLCBwb3J0PXBvcnQsIG9wdGlvbnM9b3B0aW9ucywgcHJpbnRlcj1Nb2NrKCkpCi0gICAg
ICAgIHJldHVybiBzZWxmLm1hbmFnZXIuX3NoYXJkX3Rlc3RzKFtzZWxmLm1hbmFnZXIuX3Rlc3Rf
aW5wdXRfZm9yX2ZpbGUodGVzdCkgZm9yIHRlc3QgaW4gdGVzdF9saXN0XSwgbnVtX3dvcmtlcnMs
IGZ1bGx5X3BhcmFsbGVsLCBzaGFyZF9yZWZfdGVzdHMpCi0KLSAgICBkZWYgYXNzZXJ0X3NoYXJk
cyhzZWxmLCBhY3R1YWxfc2hhcmRzLCBleHBlY3RlZF9zaGFyZF9uYW1lcyk6Ci0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKGxlbihhY3R1YWxfc2hhcmRzKSwgbGVuKGV4cGVjdGVkX3NoYXJkX25h
bWVzKSkKLSAgICAgICAgZm9yIGksIHNoYXJkIGluIGVudW1lcmF0ZShhY3R1YWxfc2hhcmRzKToK
LSAgICAgICAgICAgIGV4cGVjdGVkX3NoYXJkX25hbWUsIGV4cGVjdGVkX3Rlc3RfbmFtZXMgPSBl
eHBlY3RlZF9zaGFyZF9uYW1lc1tpXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2hh
cmQubmFtZSwgZXhwZWN0ZWRfc2hhcmRfbmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKFt0ZXN0X2lucHV0LnRlc3RfbmFtZSBmb3IgdGVzdF9pbnB1dCBpbiBzaGFyZC50ZXN0X2lu
cHV0c10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXN0X25hbWVz
KQotCi0gICAgZGVmIHRlc3Rfc2hhcmRfYnlfZGlyKHNlbGYpOgotICAgICAgICBsb2NrZWQsIHVu
bG9ja2VkID0gc2VsZi5nZXRfc2hhcmRzKG51bV93b3JrZXJzPTIsIGZ1bGx5X3BhcmFsbGVsPUZh
bHNlKQotCi0gICAgICAgICMgTm90ZSB0aGF0IGFsdGhvdWdoIHRoZXJlIGFyZSB0ZXN0cyBpbiBt
dWx0aXBsZSBkaXJzIHRoYXQgbmVlZCBsb2NrcywKLSAgICAgICAgIyB0aGV5IGFyZSBjcmFtbWVk
IGludG8gYSBzaW5nbGUgc2hhcmQgaW4gb3JkZXIgdG8gcmVkdWNlIHRoZSAjIG9mCi0gICAgICAg
ICMgd29ya2VycyBoaXR0aW5nIHRoZSBzZXJ2ZXIgYXQgb25jZS4KLSAgICAgICAgc2VsZi5hc3Nl
cnRfc2hhcmRzKGxvY2tlZCwKLSAgICAgICAgICAgICBbKCdsb2NrZWRfc2hhcmRfMScsCi0gICAg
ICAgICAgICAgICBbJ2h0dHAvdGVzdHMvc2VjdXJpdHkvdmlldy1zb3VyY2Utbm8tcmVmcmVzaC5o
dG1sJywKLSAgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29k
ZS5odG0nLAotICAgICAgICAgICAgICAgICdodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy93ZWJz
b2NrZXQtcHJvdG9jb2wtaWdub3JlZC5odG1sJywKLSAgICAgICAgICAgICAgICAnaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCcsCi0gICAg
ICAgICAgICAgICAgJ3BlcmYvb2JqZWN0LWtleXMuaHRtbCddKV0pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X3NoYXJkcyh1bmxvY2tlZCwKLSAgICAgICAgICAgIFsoJ2FuaW1hdGlvbnMnLCBbJ2FuaW1h
dGlvbnMva2V5ZnJhbWVzLmh0bWwnXSksCi0gICAgICAgICAgICAgKCdkb20vaHRtbC9sZXZlbDIv
aHRtbCcsIFsnZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQwMy5odG1sJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvbS9odG1sL2xldmVsMi9o
dG1sL0hUTUxBbmNob3JFbGVtZW50MDYuaHRtbCddKSwKLSAgICAgICAgICAgICAoJ2Zhc3QvY3Nz
JywgWydmYXN0L2Nzcy9kaXNwbGF5LW5vbmUtaW5saW5lLXN0eWxlLWNoYW5nZS1jcmFzaC5odG1s
J10pLAotICAgICAgICAgICAgICgnaWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQnLCBbJ2lldGVzdGNl
bnRlci9KYXZhc2NyaXB0LzExLjEuNV80LTQtYy0xLmh0bWwnXSldKQotCi0gICAgZGVmIHRlc3Rf
c2hhcmRfYnlfZGlyX3NoYXJkaW5nX3JlZl90ZXN0cyhzZWxmKToKLSAgICAgICAgbG9ja2VkLCB1
bmxvY2tlZCA9IHNlbGYuZ2V0X3NoYXJkcyhudW1fd29ya2Vycz0yLCBmdWxseV9wYXJhbGxlbD1G
YWxzZSwgc2hhcmRfcmVmX3Rlc3RzPVRydWUpCi0KLSAgICAgICAgIyBOb3RlIHRoYXQgYWx0aG91
Z2ggdGhlcmUgYXJlIHRlc3RzIGluIG11bHRpcGxlIGRpcnMgdGhhdCBuZWVkIGxvY2tzLAotICAg
ICAgICAjIHRoZXkgYXJlIGNyYW1tZWQgaW50byBhIHNpbmdsZSBzaGFyZCBpbiBvcmRlciB0byBy
ZWR1Y2UgdGhlICMgb2YKLSAgICAgICAgIyB3b3JrZXJzIGhpdHRpbmcgdGhlIHNlcnZlciBhdCBv
bmNlLgotICAgICAgICBzZWxmLmFzc2VydF9zaGFyZHMobG9ja2VkLAotICAgICAgICAgICAgWygn
bG9ja2VkX3NoYXJkXzEnLAotICAgICAgICAgICAgICBbJ2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL3VuaWNvZGUuaHRtJywKLSAgICAgICAgICAgICAgICdodHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3N1cHBvcnRlZC14bWwtY29udGVudC10eXBlcy5odG1sJywKLSAgICAgICAgICAgICAgICdw
ZXJmL29iamVjdC1rZXlzLmh0bWwnLAotICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMvc2VjdXJp
dHkvdmlldy1zb3VyY2Utbm8tcmVmcmVzaC5odG1sJywKLSAgICAgICAgICAgICAgICdodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy93ZWJzb2NrZXQtcHJvdG9jb2wtaWdub3JlZC5odG1sJ10pXSkK
LSAgICAgICAgc2VsZi5hc3NlcnRfc2hhcmRzKHVubG9ja2VkLAotICAgICAgICAgICAgWygnYW5p
bWF0aW9ucycsIFsnYW5pbWF0aW9ucy9rZXlmcmFtZXMuaHRtbCddKSwKLSAgICAgICAgICAgICAo
J2RvbS9odG1sL2xldmVsMi9odG1sJywgWydkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudDAzLmh0bWwnXSksCi0gICAgICAgICAgICAgKCdmYXN0L2NzcycsIFsnZmFzdC9jc3Mv
ZGlzcGxheS1ub25lLWlubGluZS1zdHlsZS1jaGFuZ2UtY3Jhc2guaHRtbCddKSwKLSAgICAgICAg
ICAgICAoJ35yZWY6ZG9tL2h0bWwvbGV2ZWwyL2h0bWwnLCBbJ2RvbS9odG1sL2xldmVsMi9odG1s
L0hUTUxBbmNob3JFbGVtZW50MDYuaHRtbCddKSwKLSAgICAgICAgICAgICAoJ35yZWY6aWV0ZXN0
Y2VudGVyL0phdmFzY3JpcHQnLCBbJ2lldGVzdGNlbnRlci9KYXZhc2NyaXB0LzExLjEuNV80LTQt
Yy0xLmh0bWwnXSldKQotCi0gICAgZGVmIHRlc3Rfc2hhcmRfZXZlcnlfZmlsZShzZWxmKToKLSAg
ICAgICAgbG9ja2VkLCB1bmxvY2tlZCA9IHNlbGYuZ2V0X3NoYXJkcyhudW1fd29ya2Vycz0yLCBm
dWxseV9wYXJhbGxlbD1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydF9zaGFyZHMobG9ja2VkLAot
ICAgICAgICAgICAgWygnLicsIFsnaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5o
dG0nXSksCi0gICAgICAgICAgICAgKCcuJywgWydodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291
cmNlLW5vLXJlZnJlc2guaHRtbCddKSwKLSAgICAgICAgICAgICAoJy4nLCBbJ2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwnXSksCi0gICAg
ICAgICAgICAgKCcuJywgWydodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3N1cHBvcnRlZC14bWwt
Y29udGVudC10eXBlcy5odG1sJ10pLAotICAgICAgICAgICAgICgnLicsIFsncGVyZi9vYmplY3Qt
a2V5cy5odG1sJ10pXSksCi0gICAgICAgIHNlbGYuYXNzZXJ0X3NoYXJkcyh1bmxvY2tlZCwKLSAg
ICAgICAgICAgIFsoJy4nLCBbJ2FuaW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwnXSksCi0gICAgICAg
ICAgICAgKCcuJywgWydmYXN0L2Nzcy9kaXNwbGF5LW5vbmUtaW5saW5lLXN0eWxlLWNoYW5nZS1j
cmFzaC5odG1sJ10pLAotICAgICAgICAgICAgICgnLicsIFsnZG9tL2h0bWwvbGV2ZWwyL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQwMy5odG1sJ10pLAotICAgICAgICAgICAgICgnLicsIFsnaWV0ZXN0
Y2VudGVyL0phdmFzY3JpcHQvMTEuMS41XzQtNC1jLTEuaHRtbCddKSwKLSAgICAgICAgICAgICAo
Jy4nLCBbJ2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50MDYuaHRtbCddKV0p
Ci0KLSAgICBkZWYgdGVzdF9zaGFyZF9pbl90d28oc2VsZik6Ci0gICAgICAgIGxvY2tlZCwgdW5s
b2NrZWQgPSBzZWxmLmdldF9zaGFyZHMobnVtX3dvcmtlcnM9MSwgZnVsbHlfcGFyYWxsZWw9RmFs
c2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X3NoYXJkcyhsb2NrZWQsCi0gICAgICAgICAgICBbKCds
b2NrZWRfdGVzdHMnLAotICAgICAgICAgICAgICBbJ2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L3VuaWNvZGUuaHRtJywKLSAgICAgICAgICAgICAgICdodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXct
c291cmNlLW5vLXJlZnJlc2guaHRtbCcsCi0gICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvd2Vic29ja2V0LXByb3RvY29sLWlnbm9yZWQuaHRtbCcsCi0gICAgICAgICAg
ICAgICAnaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlw
ZXMuaHRtbCcsCi0gICAgICAgICAgICAgICAncGVyZi9vYmplY3Qta2V5cy5odG1sJ10pXSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRfc2hhcmRzKHVubG9ja2VkLAotICAgICAgICAgICAgWygndW5sb2Nr
ZWRfdGVzdHMnLAotICAgICAgICAgICAgICBbJ2FuaW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwnLAot
ICAgICAgICAgICAgICAgJ2Zhc3QvY3NzL2Rpc3BsYXktbm9uZS1pbmxpbmUtc3R5bGUtY2hhbmdl
LWNyYXNoLmh0bWwnLAotICAgICAgICAgICAgICAgJ2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxB
bmNob3JFbGVtZW50MDMuaHRtbCcsCi0gICAgICAgICAgICAgICAnaWV0ZXN0Y2VudGVyL0phdmFz
Y3JpcHQvMTEuMS41XzQtNC1jLTEuaHRtbCcsCi0gICAgICAgICAgICAgICAnZG9tL2h0bWwvbGV2
ZWwyL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQwNi5odG1sJ10pXSkKLQotICAgIGRlZiB0ZXN0X3No
YXJkX2luX3R3b19zaGFyZGluZ19yZWZfdGVzdHMoc2VsZik6Ci0gICAgICAgIGxvY2tlZCwgdW5s
b2NrZWQgPSBzZWxmLmdldF9zaGFyZHMobnVtX3dvcmtlcnM9MSwgZnVsbHlfcGFyYWxsZWw9RmFs
c2UsIHNoYXJkX3JlZl90ZXN0cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydF9zaGFyZHMobG9j
a2VkLAotICAgICAgICAgICAgWygnbG9ja2VkX3Rlc3RzJywKLSAgICAgICAgICAgICAgWydodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bScsCi0gICAgICAgICAgICAgICAnaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCcs
Ci0gICAgICAgICAgICAgICAncGVyZi9vYmplY3Qta2V5cy5odG1sJywKLSAgICAgICAgICAgICAg
ICdodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5vLXJlZnJlc2guaHRtbCcsCi0gICAg
ICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvd2Vic29ja2V0LXByb3RvY29s
LWlnbm9yZWQuaHRtbCddKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0X3NoYXJkcyh1bmxvY2tlZCwK
LSAgICAgICAgICAgIFsoJ3VubG9ja2VkX3Rlc3RzJywKLSAgICAgICAgICAgICAgWydhbmltYXRp
b25zL2tleWZyYW1lcy5odG1sJywKLSAgICAgICAgICAgICAgICdmYXN0L2Nzcy9kaXNwbGF5LW5v
bmUtaW5saW5lLXN0eWxlLWNoYW5nZS1jcmFzaC5odG1sJywKLSAgICAgICAgICAgICAgICdkb20v
aHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDAzLmh0bWwnLAotICAgICAgICAgICAg
ICAgJ2lldGVzdGNlbnRlci9KYXZhc2NyaXB0LzExLjEuNV80LTQtYy0xLmh0bWwnLAotICAgICAg
ICAgICAgICAgJ2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50MDYuaHRtbCdd
KV0pCi0KLSAgICBkZWYgdGVzdF9zaGFyZF9pbl90d29faGFzX25vX2xvY2tlZF9zaGFyZHMoc2Vs
Zik6Ci0gICAgICAgIGxvY2tlZCwgdW5sb2NrZWQgPSBzZWxmLmdldF9zaGFyZHMobnVtX3dvcmtl
cnM9MSwgZnVsbHlfcGFyYWxsZWw9RmFsc2UsCi0gICAgICAgICAgICAgdGVzdF9saXN0PVsnYW5p
bWF0aW9ucy9rZXlmcmFtZS5odG1sJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihs
b2NrZWQpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4odW5sb2NrZWQpLCAxKQot
Ci0gICAgZGVmIHRlc3Rfc2hhcmRfaW5fdHdvX2hhc19ub191bmxvY2tlZF9zaGFyZHMoc2VsZik6
Ci0gICAgICAgIGxvY2tlZCwgdW5sb2NrZWQgPSBzZWxmLmdldF9zaGFyZHMobnVtX3dvcmtlcnM9
MSwgZnVsbHlfcGFyYWxsZWw9RmFsc2UsCi0gICAgICAgICAgICAgdGVzdF9saXN0PVsnaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5odG0nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobGVuKGxvY2tlZCksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbih1bmxv
Y2tlZCksIDApCi0KLSAgICBkZWYgdGVzdF9tdWx0aXBsZV9sb2NrZWRfc2hhcmRzKHNlbGYpOgot
ICAgICAgICBsb2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hhcmRzKG51bV93b3JrZXJzPTQs
IGZ1bGx5X3BhcmFsbGVsPUZhbHNlLCBtYXhfbG9ja2VkX3NoYXJkcz0yKQotICAgICAgICBzZWxm
LmFzc2VydF9zaGFyZHMobG9ja2VkLAotICAgICAgICAgICAgWygnbG9ja2VkX3NoYXJkXzEnLAot
ICAgICAgICAgICAgICBbJ2h0dHAvdGVzdHMvc2VjdXJpdHkvdmlldy1zb3VyY2Utbm8tcmVmcmVz
aC5odG1sJywKLSAgICAgICAgICAgICAgICdodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91bmlj
b2RlLmh0bScsCi0gICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvd2Vi
c29ja2V0LXByb3RvY29sLWlnbm9yZWQuaHRtbCddKSwKLSAgICAgICAgICAgICAoJ2xvY2tlZF9z
aGFyZF8yJywKLSAgICAgICAgICAgICAgWydodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3N1cHBv
cnRlZC14bWwtY29udGVudC10eXBlcy5odG1sJywKLSAgICAgICAgICAgICAgICdwZXJmL29iamVj
dC1rZXlzLmh0bWwnXSldKQotCi0gICAgICAgIGxvY2tlZCwgdW5sb2NrZWQgPSBzZWxmLmdldF9z
aGFyZHMobnVtX3dvcmtlcnM9NCwgZnVsbHlfcGFyYWxsZWw9RmFsc2UpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X3NoYXJkcyhsb2NrZWQsCi0gICAgICAgICAgICBbKCdsb2NrZWRfc2hhcmRfMScsCi0g
ICAgICAgICAgICAgIFsnaHR0cC90ZXN0cy9zZWN1cml0eS92aWV3LXNvdXJjZS1uby1yZWZyZXNo
Lmh0bWwnLAotICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3VuaWNv
ZGUuaHRtJywKLSAgICAgICAgICAgICAgICdodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy93ZWJz
b2NrZXQtcHJvdG9jb2wtaWdub3JlZC5odG1sJywKLSAgICAgICAgICAgICAgICdodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3N1cHBvcnRlZC14bWwtY29udGVudC10eXBlcy5odG1sJywKLSAgICAg
ICAgICAgICAgICdwZXJmL29iamVjdC1rZXlzLmh0bWwnXSldKQotCi0KIGNsYXNzIExvY2tDaGVj
a2luZ01hbmFnZXIoTWFuYWdlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlv
bnMsIHByaW50ZXIsIHRlc3RlciwgaHR0cF9sb2NrKToKICAgICAgICAgc3VwZXIoTG9ja0NoZWNr
aW5nTWFuYWdlciwgc2VsZikuX19pbml0X18ocG9ydCwgb3B0aW9ucywgcHJpbnRlcikKQEAgLTI1
MSw3ICs4MSw3IEBAIGNsYXNzIExvY2tDaGVja2luZ01hbmFnZXIoTWFuYWdlcik6CiAKIGNsYXNz
IE1hbmFnZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgZ2V0X29wdGlvbnMoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBNb2NrT3B0aW9ucyhwaXhlbF90ZXN0cz1GYWxzZSwgbmV3X2Jh
c2VsaW5lPUZhbHNlLCB0aW1lX291dF9tcz02MDAwLCBzbG93X3RpbWVfb3V0X21zPTMwMDAwLCB3
b3JrZXJfbW9kZWw9J2lubGluZScpCisgICAgICAgIHJldHVybiBNb2NrT3B0aW9ucyhwaXhlbF90
ZXN0cz1GYWxzZSwgbmV3X2Jhc2VsaW5lPUZhbHNlLCB0aW1lX291dF9tcz02MDAwLCBzbG93X3Rp
bWVfb3V0X21zPTMwMDAwLCB3b3JrZXJfbW9kZWw9J2lubGluZScsIG1heF9sb2NrZWRfc2hhcmRz
PTEpCiAKICAgICBkZWYgdGVzdF9odHRwX2xvY2tpbmcodGVzdGVyKToKICAgICAgICAgb3B0aW9u
cywgYXJncyA9IHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncyhbJy0tcGxhdGZvcm09dGVzdCcs
ICctLXByaW50PW5vdGhpbmcnLCAnaHR0cC90ZXN0cy9wYXNzZXMnLCAncGFzc2VzJ10pCkBAIC0y
NzksOSArMTA5LDkgQEAgY2xhc3MgTWFuYWdlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICBwb3J0ID0gTW9jaygpICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIHRpZ2h0ZXIgbW9j
ay4KICAgICAgICAgcG9ydC5URVNUX1BBVEhfU0VQQVJBVE9SID0gJy8nCiAgICAgICAgIHBvcnQu
X2ZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSgpCi0gICAgICAgIG1hbmFnZXIgPSBNYW5hZ2Vy
KHBvcnQ9cG9ydCwgb3B0aW9ucz1Nb2NrT3B0aW9ucygpLCBwcmludGVyPU1vY2soKSkKKyAgICAg
ICAgbWFuYWdlciA9IE1hbmFnZXIocG9ydD1wb3J0LCBvcHRpb25zPU1vY2tPcHRpb25zKG1heF9s
b2NrZWRfc2hhcmRzPTEpLCBwcmludGVyPU1vY2soKSkKIAotICAgICAgICBtYW5hZ2VyLl9vcHRp
b25zID0gTW9ja09wdGlvbnMoZXhpdF9hZnRlcl9uX2ZhaWx1cmVzPU5vbmUsIGV4aXRfYWZ0ZXJf
bl9jcmFzaGVzX29yX3RpbWVvdXRzPU5vbmUpCisgICAgICAgIG1hbmFnZXIuX29wdGlvbnMgPSBN
b2NrT3B0aW9ucyhleGl0X2FmdGVyX25fZmFpbHVyZXM9Tm9uZSwgZXhpdF9hZnRlcl9uX2NyYXNo
ZXNfb3JfdGltZW91dHM9Tm9uZSwgbWF4X2xvY2tlZF9zaGFyZHM9MSkKICAgICAgICAgbWFuYWdl
ci5fdGVzdF9uYW1lcyA9IFsnZm9vL2Jhci5odG1sJywgJ2Jhei5odG1sJ10KICAgICAgICAgbWFu
YWdlci5fdGVzdF9pc19zbG93ID0gbGFtYmRhIHRlc3RfbmFtZTogRmFsc2UKIApAQCAtMzE1LDcg
KzE0NSw3IEBAIGNsYXNzIE1hbmFnZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
cG9ydC5leHBlY3RhdGlvbnNfZGljdCA9IGxhbWJkYTogeycnOiAnV09OVEZJWCA6IGZhaWx1cmVz
L2V4cGVjdGVkL3JlZnRlc3QuaHRtbCA9IElNQUdFJ30KICAgICAgICAgZXhwZWN0YXRpb25zID0g
VGVzdEV4cGVjdGF0aW9ucyhwb3J0LCB0ZXN0cz1bdGVzdF0pCiAgICAgICAgICMgUmVmdGVzdHMg
ZXhwZWN0ZWQgdG8gYmUgaW1hZ2UgbWlzbWF0Y2ggc2hvdWxkIGJlIHJlc3BlY3RlZCB3aGVuIHBp
eGVsX3Rlc3RzPUZhbHNlLgotICAgICAgICBtYW5hZ2VyID0gTWFuYWdlcihwb3J0PXBvcnQsIG9w
dGlvbnM9TW9ja09wdGlvbnMocGl4ZWxfdGVzdHM9RmFsc2UsIGV4aXRfYWZ0ZXJfbl9mYWlsdXJl
cz1Ob25lLCBleGl0X2FmdGVyX25fY3Jhc2hlc19vcl90aW1lb3V0cz1Ob25lKSwgcHJpbnRlcj1N
b2NrKCkpCisgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyKHBvcnQ9cG9ydCwgb3B0aW9ucz1Nb2Nr
T3B0aW9ucyhwaXhlbF90ZXN0cz1GYWxzZSwgZXhpdF9hZnRlcl9uX2ZhaWx1cmVzPU5vbmUsIGV4
aXRfYWZ0ZXJfbl9jcmFzaGVzX29yX3RpbWVvdXRzPU5vbmUsIG1heF9sb2NrZWRfc2hhcmRzPTEp
LCBwcmludGVyPU1vY2soKSkKICAgICAgICAgbWFuYWdlci5fZXhwZWN0YXRpb25zID0gZXhwZWN0
YXRpb25zCiAgICAgICAgIHJlc3VsdF9zdW1tYXJ5ID0gUmVzdWx0U3VtbWFyeShleHBlY3RhdGlv
bnMsIFt0ZXN0XSwgMSwgc2V0KCkpCiAgICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHQodGVzdF9u
YW1lPXRlc3QsIGZhaWx1cmVzPVt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hE
aWROb3RPY2N1cigpXSkKQEAgLTMyNyw3ICsxNTcsNyBAQCBjbGFzcyBNYW5hZ2VyVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiBnZXRfbWFuYWdlcl93aXRoX3Rlc3RzKHRlc3Rf
bmFtZXMpOgogICAgICAgICAgICAgcG9ydCA9IE1vY2soKSAgIyBGSVhNRTogVXNlIGEgdGlnaHRl
ciBtb2NrLgogICAgICAgICAgICAgcG9ydC5URVNUX1BBVEhfU0VQQVJBVE9SID0gJy8nCi0gICAg
ICAgICAgICBtYW5hZ2VyID0gTWFuYWdlcihwb3J0LCBvcHRpb25zPU1vY2tPcHRpb25zKGh0dHA9
VHJ1ZSksIHByaW50ZXI9TW9jaygpKQorICAgICAgICAgICAgbWFuYWdlciA9IE1hbmFnZXIocG9y
dCwgb3B0aW9ucz1Nb2NrT3B0aW9ucyhodHRwPVRydWUsIG1heF9sb2NrZWRfc2hhcmRzPTEpLCBw
cmludGVyPU1vY2soKSkKICAgICAgICAgICAgIG1hbmFnZXIuX3Rlc3RfbmFtZXMgPSB0ZXN0X25h
bWVzCiAgICAgICAgICAgICByZXR1cm4gbWFuYWdlcgogCkBAIC0zNDEsNyArMTcxLDcgQEAgY2xh
c3MgTWFuYWdlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBkZWYgZ2V0X21hbmFn
ZXJfd2l0aF90ZXN0cyh0ZXN0X25hbWVzKToKICAgICAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgp
CiAgICAgICAgICAgICBwb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCkKLSAgICAgICAgICAg
IG1hbmFnZXIgPSBNYW5hZ2VyKHBvcnQsIG9wdGlvbnM9TW9ja09wdGlvbnModGVzdF9saXN0PU5v
bmUsIGh0dHA9VHJ1ZSksIHByaW50ZXI9TW9jaygpKQorICAgICAgICAgICAgbWFuYWdlciA9IE1h
bmFnZXIocG9ydCwgb3B0aW9ucz1Nb2NrT3B0aW9ucyh0ZXN0X2xpc3Q9Tm9uZSwgaHR0cD1UcnVl
LCBtYXhfbG9ja2VkX3NoYXJkcz0xKSwgcHJpbnRlcj1Nb2NrKCkpCiAgICAgICAgICAgICBtYW5h
Z2VyLl9jb2xsZWN0X3Rlc3RzKHRlc3RfbmFtZXMpCiAgICAgICAgICAgICByZXR1cm4gbWFuYWdl
cgogCkBAIC0zNjIsNyArMTkyLDcgQEAgY2xhc3MgTWFuYWdlclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICBkZWYgZ2V0X21hbmFnZXJfd2l0aF90ZXN0cyh0ZXN0X25hbWVzKToKICAg
ICAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgICAgICBwb3J0ID0gaG9zdC5wb3J0
X2ZhY3RvcnkuZ2V0KCd0ZXN0LW1hYy1sZW9wYXJkJykKLSAgICAgICAgICAgIG1hbmFnZXIgPSBN
YW5hZ2VyKHBvcnQsIG9wdGlvbnM9TW9ja09wdGlvbnModGVzdF9saXN0PU5vbmUsIGh0dHA9VHJ1
ZSksIHByaW50ZXI9TW9jaygpKQorICAgICAgICAgICAgbWFuYWdlciA9IE1hbmFnZXIocG9ydCwg
b3B0aW9ucz1Nb2NrT3B0aW9ucyh0ZXN0X2xpc3Q9Tm9uZSwgaHR0cD1UcnVlLCBtYXhfbG9ja2Vk
X3NoYXJkcz0xKSwgcHJpbnRlcj1Nb2NrKCkpCiAgICAgICAgICAgICBtYW5hZ2VyLl9jb2xsZWN0
X3Rlc3RzKHRlc3RfbmFtZXMpCiAgICAgICAgICAgICByZXR1cm4gbWFuYWdlcgogICAgICAgICBo
b3N0ID0gTW9ja0hvc3QoKQpAQCAtMzk1LDcgKzIyNSw3IEBAIGNsYXNzIE1hbmFnZXJUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcG9ydC5zdG9wX3dlYnNvY2tldF9zZXJ2ZXIgPSBz
dG9wX3dlYnNvY2tldF9zZXJ2ZXIKIAogICAgICAgICBzZWxmLmh0dHBfc3RhcnRlZCA9IHNlbGYu
aHR0cF9zdG9wcGVkID0gc2VsZi53ZWJzb2NrZXRfc3RhcnRlZCA9IHNlbGYud2Vic29ja2V0X3N0
b3BwZWQgPSBGYWxzZQotICAgICAgICBtYW5hZ2VyID0gTWFuYWdlcihwb3J0PXBvcnQsIG9wdGlv
bnM9TW9ja09wdGlvbnMoaHR0cD1UcnVlKSwgcHJpbnRlcj1Nb2NrKCkpCisgICAgICAgIG1hbmFn
ZXIgPSBNYW5hZ2VyKHBvcnQ9cG9ydCwgb3B0aW9ucz1Nb2NrT3B0aW9ucyhodHRwPVRydWUsIG1h
eF9sb2NrZWRfc2hhcmRzPTEpLCBwcmludGVyPU1vY2soKSkKICAgICAgICAgbWFuYWdlci5fdGVz
dF9uYW1lcyA9IFsnaHR0cC90ZXN0cy9wYXNzLnR4dCddCiAgICAgICAgIG1hbmFnZXIuc3RhcnRf
c2VydmVyc193aXRoX2xvY2sobnVtYmVyX29mX3NlcnZlcnM9NCkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc2VsZi5odHRwX3N0YXJ0ZWQsIFRydWUpCkBAIC00MDUsNyArMjM1LDcgQEAgY2xh
c3MgTWFuYWdlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhzZWxmLndlYnNvY2tldF9zdG9wcGVkLCBGYWxzZSkKIAogICAgICAgICBzZWxmLmh0dHBf
c3RhcnRlZCA9IHNlbGYuaHR0cF9zdG9wcGVkID0gc2VsZi53ZWJzb2NrZXRfc3RhcnRlZCA9IHNl
bGYud2Vic29ja2V0X3N0b3BwZWQgPSBGYWxzZQotICAgICAgICBtYW5hZ2VyID0gTWFuYWdlcihw
b3J0PXBvcnQsIG9wdGlvbnM9TW9ja09wdGlvbnMoaHR0cD1UcnVlKSwgcHJpbnRlcj1Nb2NrKCkp
CisgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyKHBvcnQ9cG9ydCwgb3B0aW9ucz1Nb2NrT3B0aW9u
cyhodHRwPVRydWUsIG1heF9sb2NrZWRfc2hhcmRzPTEpLCBwcmludGVyPU1vY2soKSkKICAgICAg
ICAgbWFuYWdlci5fdGVzdF9uYW1lcyA9IFsnd2Vic29ja2V0L3Bhc3MudHh0J10KICAgICAgICAg
bWFuYWdlci5zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jayhudW1iZXJfb2Zfc2VydmVycz00KQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmh0dHBfc3RhcnRlZCwgVHJ1ZSkKQEAgLTQxNSw3
ICsyNDUsNyBAQCBjbGFzcyBNYW5hZ2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYud2Vic29ja2V0X3N0b3BwZWQsIFRydWUpCiAKICAgICAg
ICAgc2VsZi5odHRwX3N0YXJ0ZWQgPSBzZWxmLmh0dHBfc3RvcHBlZCA9IHNlbGYud2Vic29ja2V0
X3N0YXJ0ZWQgPSBzZWxmLndlYnNvY2tldF9zdG9wcGVkID0gRmFsc2UKLSAgICAgICAgbWFuYWdl
ciA9IE1hbmFnZXIocG9ydD1wb3J0LCBvcHRpb25zPU1vY2tPcHRpb25zKGh0dHA9VHJ1ZSksIHBy
aW50ZXI9TW9jaygpKQorICAgICAgICBtYW5hZ2VyID0gTWFuYWdlcihwb3J0PXBvcnQsIG9wdGlv
bnM9TW9ja09wdGlvbnMoaHR0cD1UcnVlLCBtYXhfbG9ja2VkX3NoYXJkcz0xKSwgcHJpbnRlcj1N
b2NrKCkpCiAgICAgICAgIG1hbmFnZXIuX3Rlc3RfbmFtZXMgPSBbJ3BlcmYvZm9vL3Rlc3QuaHRt
bCddCiAgICAgICAgIG1hbmFnZXIuc3RhcnRfc2VydmVyc193aXRoX2xvY2sobnVtYmVyX29mX3Nl
cnZlcnM9NCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5odHRwX3N0YXJ0ZWQsIEZh
bHNlKQpAQCAtNDI2LDQ3ICsyNTYsNiBAQCBjbGFzcyBNYW5hZ2VyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAKIAogCi1jbGFzcyBOYXR1cmFsQ29tcGFyZVRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgotICAgIGRlZiBhc3NlcnRfY21wKHNlbGYsIHgsIHksIHJlc3VsdCk6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGNtcChuYXR1cmFsX3NvcnRfa2V5KHgpLCBuYXR1cmFsX3NvcnRfa2V5KHkp
KSwgcmVzdWx0KQotCi0gICAgZGVmIHRlc3RfbmF0dXJhbF9jb21wYXJlKHNlbGYpOgotICAgICAg
ICBzZWxmLmFzc2VydF9jbXAoJ2EnLCAnYScsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgn
YWInLCAnYScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnYScsICdhYicsIC0xKQotICAg
ICAgICBzZWxmLmFzc2VydF9jbXAoJycsICcnLCAwKQotICAgICAgICBzZWxmLmFzc2VydF9jbXAo
JycsICdhYicsIC0xKQotICAgICAgICBzZWxmLmFzc2VydF9jbXAoJzEnLCAnMicsIC0xKQotICAg
ICAgICBzZWxmLmFzc2VydF9jbXAoJzInLCAnMScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Nt
cCgnMScsICcxMCcsIC0xKQotICAgICAgICBzZWxmLmFzc2VydF9jbXAoJzInLCAnMTAnLCAtMSkK
LSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMS5odG1sJywgJ2Zvb18yLmh0bWwnLCAtMSkK
LSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMS4xLmh0bWwnLCAnZm9vXzIuaHRtbCcsIC0x
KQotICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18xLmh0bWwnLCAnZm9vXzEwLmh0bWwnLCAt
MSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMi5odG1sJywgJ2Zvb18xMC5odG1sJywg
LTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzIzLmh0bWwnLCAnZm9vXzEwLmh0bWwn
LCAxKQotICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18yMy5odG1sJywgJ2Zvb18xMDAuaHRt
bCcsIC0xKQotCi0KLWNsYXNzIEtleUNvbXBhcmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAg
ICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAgIHNl
bGYucG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdCcpCi0KLSAgICBkZWYgYXNzZXJ0
X2NtcChzZWxmLCB4LCB5LCByZXN1bHQpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbXAo
dGVzdF9rZXkoc2VsZi5wb3J0LCB4KSwgdGVzdF9rZXkoc2VsZi5wb3J0LCB5KSksIHJlc3VsdCkK
LQotICAgIGRlZiB0ZXN0X3Rlc3Rfa2V5KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9jbXAo
Jy9hJywgJy9hJywgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcvYScsICcvYicsIC0xKQot
ICAgICAgICBzZWxmLmFzc2VydF9jbXAoJy9hMicsICcvYTEwJywgLTEpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2NtcCgnL2EyL2ZvbycsICcvYTEwL2ZvbycsIC0xKQotICAgICAgICBzZWxmLmFzc2Vy
dF9jbXAoJy9hL2ZvbzExJywgJy9hL2ZvbzInLCAxKQotICAgICAgICBzZWxmLmFzc2VydF9jbXAo
Jy9hYicsICcvYS9hL2InLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcvYS9hL2InLCAn
L2FiJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcvZm9vLWJhci9iYXonLCAnL2Zvby9i
YXonLCAtMSkKLQotCiBjbGFzcyBSZXN1bHRTdW1tYXJ5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCBjNGY0ZjI0MDQ5Mjdk
MDc4ZGNhNzBkYTk3NDVlZDVmYzY2NWRkMTY0Li45ZGFmZTFkOTM4ZTExNzBlOThlN2IxYTZiODQx
NDNmYTJkNWFhMDNkIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTQyMCw3ICs0MjAsNyBAQCBkZWYgcGFy
c2VfYXJncyhhcmdzPU5vbmUpOgogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1uby1y
ZXRyeS1mYWlsdXJlcyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLAogICAgICAgICAgICAgZGVzdD0i
cmV0cnlfZmFpbHVyZXMiLAogICAgICAgICAgICAgaGVscD0iRG9uJ3QgcmUtdHJ5IGFueSB0ZXN0
cyB0aGF0IHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzLiIpLAotICAgICAgICBvcHRwYXJzZS5t
YWtlX29wdGlvbigiLS1tYXgtbG9ja2VkLXNoYXJkcyIsIHR5cGU9ImludCIsCisgICAgICAgIG9w
dHBhcnNlLm1ha2Vfb3B0aW9uKCItLW1heC1sb2NrZWQtc2hhcmRzIiwgdHlwZT0iaW50IiwgZGVm
YXVsdD0xLAogICAgICAgICAgICAgaGVscD0iU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2Nr
ZWQgc2hhcmRzIiksCiAgICAgICAgICMgRm9yIGNocm9taXVtLWFuZHJvaWQgdG8gcmVkdWNlIHRo
ZSBjb3N0IG9mIHJlc3RhcnRpbmcgdGhlIGRyaXZlci4KICAgICAgICAgIyBGSVhNRTogUmVtb3Zl
IHRoZSBvcHRpb24gb25jZSBwZXItdGVzdCBhcmcgaXMgc3VwcG9ydGVkOgo=
</data>
<flag name="review"
          id="165166"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>