<?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>74562</bug_id>
          
          <creation_ts>2011-12-14 16:53:37 -0800</creation_ts>
          <short_desc>webkitpy: update unit tests in preparation for making host a mandatory parameter to Port objects</short_desc>
          <delta_ts>2011-12-19 12:05:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74551</dependson>
    
    <dependson>74556</dependson>
          <blocked>74138</blocked>
    
    <blocked>74566</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>521474</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-14 16:53:37 -0800</bug_when>
    <thetext>webkitpy: update unit tests in preparation for making host a mandatory parameter to Port objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521477</commentid>
    <comment_count>1</comment_count>
      <attachid>119333</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-14 16:55:51 -0800</bug_when>
    <thetext>Created attachment 119333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521491</commentid>
    <comment_count>2</comment_count>
      <attachid>119340</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-14 17:07:18 -0800</bug_when>
    <thetext>Created attachment 119340
add in more unittest files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521560</commentid>
    <comment_count>3</comment_count>
      <attachid>119340</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-14 18:26:35 -0800</bug_when>
    <thetext>Comment on attachment 119340
add in more unittest files

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/base_unittest.py:54
&gt; +    def make_port(self, **kwargs):
&gt; +        host = MockHost()
&gt; +        if &apos;executive&apos; in kwargs:
&gt; +            host.executive = kwargs[&apos;executive&apos;]

Seems you should just use executive=None here instead of messing with kwargs.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base_unittest.py:223
&gt; +        port._filesystem.write_text_file(port.layout_tests_dir() + &apos;/canvas/test&apos;, &apos;&apos;)
&gt; +        port._filesystem.write_text_file(port.layout_tests_dir() + &apos;/css2.1/test&apos;, &apos;&apos;)

We may want to add some sort of touch_file() method at some point.  At least to the MockFileSystem. :)

&gt; Tools/Scripts/webkitpy/layout_tests/port/dryrun.py:69
&gt; -        self.__delegate = host.port_factory.get(**kwargs)
&gt; +        self.__delegate = factory.PortFactory(host).get(**kwargs)

I&apos;m confused why this change?  Isn&apos;t this already what host.port_factory returns?  Or are you just trying to make explicit that we use a real PortFactory here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521594</commentid>
    <comment_count>4</comment_count>
      <attachid>119340</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-14 19:58:46 -0800</bug_when>
    <thetext>Comment on attachment 119340
add in more unittest files

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base_unittest.py:54
&gt;&gt; +            host.executive = kwargs[&apos;executive&apos;]
&gt; 
&gt; Seems you should just use executive=None here instead of messing with kwargs.

good idea.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base_unittest.py:223
&gt;&gt; +        port._filesystem.write_text_file(port.layout_tests_dir() + &apos;/css2.1/test&apos;, &apos;&apos;)
&gt; 
&gt; We may want to add some sort of touch_file() method at some point.  At least to the MockFileSystem. :)

good idea.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/dryrun.py:69
&gt;&gt; +        self.__delegate = factory.PortFactory(host).get(**kwargs)
&gt; 
&gt; I&apos;m confused why this change?  Isn&apos;t this already what host.port_factory returns?  Or are you just trying to make explicit that we use a real PortFactory here?

host.port_factory only exists on the Host object, not the SystemHost object; since Port only requires a SystemHost, I can&apos;t assume that function exists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522464</commentid>
    <comment_count>5</comment_count>
      <attachid>119546</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-15 19:49:22 -0800</bug_when>
    <thetext>Created attachment 119546
update w/ review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522465</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-15 19:50:00 -0800</bug_when>
    <thetext>Please take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522486</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-15 20:43:13 -0800</bug_when>
    <thetext>Huh, anyone know why the watchlist system thought that I needed to be CC&apos;d on this? My only watchlist entry is this one:
http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/watchlist#L18</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522489</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-15 20:47:48 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Huh, anyone know why the watchlist system thought that I needed to be CC&apos;d on this? My only watchlist entry is this one:
&gt; http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/watchlist#L18

Because you&apos;re amazing -- just the way you are.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522612</commentid>
    <comment_count>9</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-12-16 00:50:35 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Huh, anyone know why the watchlist system thought that I needed to be CC&apos;d on this? My only watchlist entry is this one:
&gt; http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/watchlist#L18

fwiw, I applied this patch to ToT and ran the watchlist locally &quot;./Tools/Scripts/webkit-patch apply-watchlist-local&quot;.

All I got was: Result of watchlist: cc &quot;abarth@webkit.org, levin@chromium.org, ojan@chromium.org&quot; messages &quot;&quot;

So I have no idea. It may have been that the reset of the local tree failed on the stylebot and then we ran the watchlist anyway and picked up an old change on the server. (I think that is possible -- pretty remote so I didn&apos;t invest hugely in doing lots to deal with this -- but possible).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522894</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-12-16 12:02:30 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; Huh, anyone know why the watchlist system thought that I needed to be CC&apos;d on this? My only watchlist entry is this one:
&gt; &gt; http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/watchlist#L18
&gt; 
&gt; fwiw, I applied this patch to ToT and ran the watchlist locally &quot;./Tools/Scripts/webkit-patch apply-watchlist-local&quot;.
&gt; 
&gt; All I got was: Result of watchlist: cc &quot;abarth@webkit.org, levin@chromium.org, ojan@chromium.org&quot; messages &quot;&quot;
&gt; 
&gt; So I have no idea. It may have been that the reset of the local tree failed on the stylebot and then we ran the watchlist anyway and picked up an old change on the server. (I think that is possible -- pretty remote so I didn&apos;t invest hugely in doing lots to deal with this -- but possible).

btw, note that the stylebot went red on this run without anything added to the bug which supports this theory. If anyone wants to fix the underlying problem, I&apos;m happy to give advice (but for now I can&apos;t do this):
https://bugs.webkit.org/show_bug.cgi?id=74735</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524064</commentid>
    <comment_count>11</comment_count>
      <attachid>119546</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-19 11:33:38 -0800</bug_when>
    <thetext>Comment on attachment 119546
update w/ review feedback

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

Seems OK.  I&apos;m not sure the TestWebKitPort change is a win.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base_unittest.py:55
&gt; +        return Port(host, executive=executive, **kwargs)

This executive=executive isn&apos;t needed, right?

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit_unittest.py:-50
&gt; -        host = host or MockHost()
&gt; -        WebKitPort.__init__(self, host=host, **kwargs)

Interesting.  I thought  this &quot;implicit MockHost&quot; was useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524077</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-19 11:49:24 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 119546 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119546&amp;action=review
&gt; 
&gt; Seems OK.  I&apos;m not sure the TestWebKitPort change is a win.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/base_unittest.py:55
&gt; &gt; +        return Port(host, executive=executive, **kwargs)
&gt; 
&gt; This executive=executive isn&apos;t needed, right?
&gt;

I&apos;m not sure which question you&apos;re asking ... if you&apos;re asking if you need to specify both executive and kwargs, the answer is yes (executive isn&apos;t included in kwargs). If you&apos;re asking if Port still takes the executive parameter at all, the answer is also yes (the executive parameter can be removed after 74566 lands).

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit_unittest.py:-50
&gt; &gt; -        host = host or MockHost()
&gt; &gt; -        WebKitPort.__init__(self, host=host, **kwargs)
&gt; 
&gt; Interesting.  I thought  this &quot;implicit MockHost&quot; was useful.

My initial thinking was that I didn&apos;t want any Port constructor creating its own (Mock)Hosts, but given that this is test code and it takes other custom parameters, I can see your point. We could have a factory method instead, but that&apos;s probably not much better. I&apos;ll revert these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524092</commentid>
    <comment_count>13</comment_count>
      <attachid>119897</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-19 12:04:18 -0800</bug_when>
    <thetext>Created attachment 119897
update w/ review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524096</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-19 12:05:12 -0800</bug_when>
    <thetext>Committed r103253: &lt;http://trac.webkit.org/changeset/103253&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119333</attachid>
            <date>2011-12-14 16:55:51 -0800</date>
            <delta_ts>2011-12-14 17:07:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74562-20111214165550.patch</filename>
            <type>text/plain</type>
            <size>27910</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzI3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDMxYmRjNTU0ZDEyNzRhNmZjMGNmYjkyMWYzYzZiNDgz
ODhiOTE1MS4uNDllNTQyMDgzMmEwYThmYWJiMTQ1ODAzNzIxYmRlNGZlYWQxZjM4YyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU4
IEBACiAyMDExLTEyLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiB1cGRhdGUgdW5pdCB0ZXN0cyBpbiBwcmVwYXJhdGlvbiBmb3IgbWFr
aW5nIGhvc3QgYSBtYW5kYXRvcnkgcGFyYW1ldGVyIHRvIFBvcnQgb2JqZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ1NjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3JfdW5pdHRl
c3QucHk6CisgICAgICAgIChKU09OR2VuZXJhdG9yVGVzdC5fdGVzdF9qc29uX2dlbmVyYXRpb24p
OgorICAgICAgICAoSlNPTkdlbmVyYXRvclRlc3QudGVzdF90ZXN0X3RpbWluZ3NfdHJpZSk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0
YXRpb25zX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQmFzZS5fX2luaXRfXyk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAoUG9ydFRlc3QubWFrZV9wb3J0KToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfbGF5b3V0
X3Rlc3RzX3NraXBwaW5nKToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfdGVzdF9kaXJzKToKKyAg
ICAgICAgKFBvcnRUZXN0LnRlc3RfYWRkaXRpb25hbF9wbGF0Zm9ybV9kaXJlY3RvcnkpOgorICAg
ICAgICAoUG9ydFRlc3QudGVzdF91c2VzX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUpOgorICAgICAg
ICAoUG9ydFRlc3QudGVzdF9maW5kX25vX3BhdGhzX3NwZWNpZmllZCk6CisgICAgICAgIChQb3J0
VGVzdC50ZXN0X2ZpbmRfb25lX3Rlc3QpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF9maW5kX2ds
b2IpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF9maW5kX3dpdGhfc2tpcHBlZF9kaXJlY3Rvcmll
cyk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfd2l0aF9za2lwcGVkX2RpcmVjdG9yaWVz
XzIpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF9wYXJzZV9yZWZ0ZXN0X2xpc3QpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5OgorICAgICAg
ICAoRHJ5UnVuUG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5OgorICAgICAgICAoRmFjdG9yeVRlc3Qu
c2V0VXApOgorICAgICAgICAoRmFjdG9yeVRlc3QudGVhckRvd24pOgorICAgICAgICAoRmFjdG9y
eVRlc3QuYXNzZXJ0X3BvcnQpOgorICAgICAgICAoRmFjdG9yeVRlc3QuYXNzZXJ0X3BsYXRmb3Jt
X3BvcnQpOgorICAgICAgICAoRmFjdG9yeVRlc3QudGVzdF91bmtub3duX3NwZWNpZmllZCk6Cisg
ICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X3Vua25vd25fZGVmYXVsdCk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lX3VuaXR0ZXN0LnB5
OgorICAgICAgICAoR2V0R29vZ2xlQ2hyb21lUG9ydFRlc3QuX3ZlcmlmeV9leHBlY3RhdGlvbnNf
b3ZlcnJpZGVzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3F0X3VuaXR0ZXN0LnB5OgorICAgICAgICAoUXRQb3J0VGVzdC5fYXNzZXJ0X3NlYXJjaF9wYXRo
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91
bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RXZWJLaXRQb3J0Ll9faW5pdF9fKToKKyAgICAgICAg
KFdlYktpdFBvcnRUZXN0LnRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3Jfc3ltYm9scyk6Cisg
ICAgICAgICh0ZXN0X3NraXBwZWRfZGlyZWN0b3JpZXNfZm9yX2ZlYXR1cmVzKToKKyAgICAgICAg
KHRlc3Rfc2tpcHBlZF9sYXlvdXRfdGVzdHMpOgorICAgICAgICAodGVzdF9za2lwcGVkX2ZpbGVf
c2VhcmNoX3BhdGhzKToKKyAgICAgICAgKHRlc3Rfcm9vdF9vcHRpb24pOgorICAgICAgICAodGVz
dF90ZXN0X2V4cGVjdGF0aW9ucyk6CisgICAgICAgICh0ZXN0X2J1aWxkX2RyaXZlcik6CisgICAg
ICAgICh0ZXN0X2xpbnV4X2Rpc3Ryb19kZXRlY3Rpb24pOgorICAgICAgICAodGVzdF9hcGFjaGVf
Y29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0pOgorICAgICAgICAodGVzdF9wYXRoX3RvX2Fw
YWNoZV9jb25maWdfZmlsZSk6CisgICAgICAgIChXZWJLaXREcml2ZXJUZXN0LnRlc3RfcmVhZF9i
bG9jayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGlu
ZXNlcnZlcl91bml0dGVzdC5weToKKyAgICAgICAgKGdldF90ZXN0X2NvbmZpZy5UZXN0TWFjUG9y
dCk6CisKKzIwMTEtMTItMTQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisK
ICAgICAgICAgd2Via2l0cHk6IGNsZWFuIHVwIFRlc3RQb3J0IHRvIChtb3N0bHkpIG5vdCBjcmVh
dGUgYSBuZXcgZmlsZXN5c3RlbQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQ1NTYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L2pzb25fcmVzdWx0c19nZW5lcmF0b3JfdW5pdHRlc3QucHkKaW5kZXggMGEzMWU0N2JiYTEyOGI4
YjRmNTc5ODc1YjljYTI0YTU5ZTExMWJmNi4uYjNlNWNiY2Q4OGM1N2VlZWY3MTVkNDlhOTI2MGNj
MDM2MDYzYjMzNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29u
X3Jlc3VsdHNfZ2VuZXJhdG9yX3VuaXR0ZXN0LnB5CkBAIC0zMiw3ICszMiw3IEBAIGltcG9ydCB1
bml0dGVzdAogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgcmFuZG9tCiAKLWZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5s
YXlvdXRfcGFja2FnZSBpbXBvcnQganNvbl9yZXN1bHRzX2dlbmVyYXRvcgogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgdGVzdApAQCAtODksOCArODksOSBAQCBjbGFz
cyBKU09OR2VuZXJhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAg
ZmFpbGVkPSh0ZXN0IGluIGZhaWxlZF90ZXN0cyksCiAgICAgICAgICAgICAgICAgZWxhcHNlZF90
aW1lPXRlc3RfdGltaW5nc1t0ZXN0XSkKIAorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAg
ICAgICBwb3J0ID0gTW9jaygpCi0gICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVt
X21vY2suTW9ja0ZpbGVTeXN0ZW0oKQorICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gaG9zdC5m
aWxlc3lzdGVtCiAgICAgICAgIGdlbmVyYXRvciA9IGpzb25fcmVzdWx0c19nZW5lcmF0b3IuSlNP
TlJlc3VsdHNHZW5lcmF0b3JCYXNlKHBvcnQsCiAgICAgICAgICAgICBzZWxmLmJ1aWxkZXJfbmFt
ZSwgc2VsZi5idWlsZF9uYW1lLCBzZWxmLmJ1aWxkX251bWJlciwKICAgICAgICAgICAgICcnLApA
QCAtMjEzLDcgKzIxNCw3IEBAIGNsYXNzIEpTT05HZW5lcmF0b3JUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgc2VsZi5fdGVzdF9qc29uX2dlbmVyYXRpb24oWydmb28vQSddLCBbJ2Zv
by9CJywgJ2Jhci9DJ10pCiAKICAgICBkZWYgdGVzdF90ZXN0X3RpbWluZ3NfdHJpZShzZWxmKToK
LSAgICAgICAgdGVzdF9wb3J0ID0gdGVzdC5UZXN0UG9ydCgpCisgICAgICAgIHRlc3RfcG9ydCA9
IHRlc3QuVGVzdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWlu
Z3MgPSBbXQogICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncy5hcHBlbmQoanNvbl9yZXN1
bHRzX2dlbmVyYXRvci5UZXN0UmVzdWx0KCdmb28vYmFyL2Jhei5odG1sJywgZWxhcHNlZF90aW1l
PTEuMikpCiAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLmFwcGVuZChqc29uX3Jlc3Vs
dHNfZ2VuZXJhdG9yLlRlc3RSZXN1bHQoJ2Jhci5odG1sJywgZWxhcHNlZF90aW1lPTAuMDAwMSkp
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMv
dGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKaW5kZXggNzhk
YTc0MDNlZDA0YjI3OTAxODc1MmRkY2YyZjFhYTA4NzgyOWEwMS4uZGE3OGVkNDE2ZmQ3YjJmNjNl
YmM5NDNlMzRkZTA1NWM3YWRhMjJkOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0
aW9uc191bml0dGVzdC5weQpAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBCYXNlKHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdEZ1bmMsIHNldFVwPU5vbmUsIHRl
YXJEb3duPU5vbmUsIGRlc2NyaXB0aW9uPU5vbmUpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3Qo
KQogICAgICAgICBzZWxmLl9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0LXdpbi14
cCcsIE5vbmUpCi0gICAgICAgIHNlbGYuX2ZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQorICAg
ICAgICBzZWxmLl9mcyA9IGhvc3QuZmlsZXN5c3RlbQogICAgICAgICBzZWxmLl9leHAgPSBOb25l
CiAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsIHRlc3RGdW5jKQogCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Vf
dW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2VfdW5pdHRlc3QucHkKaW5kZXggMjRjNmZjOThjZDFlOWJiMjJkMDRhNzRmMmFlM2JiNmY2Y2Y4
ODlhNS4uZDQyYzJmMGI5ZmM5YTM1Nzk2ZjM4YzExOTJhZTE4YmZiMTFkNWE1ZCAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91
bml0dGVzdC5weQpAQCAtNDcsMTAgKzQ3LDExIEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LnBvcnQudGVzdCBpbXBvcnQgVGVzdFBvcnQKIGltcG9ydCBjb25maWcKIGltcG9ydCBjb25maWdf
bW9jawogCi0KIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgbWFr
ZV9wb3J0KHNlbGYsIGhvc3Q9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBob3N0ID0gaG9zdCBv
ciBNb2NrSG9zdCgpCisgICAgZGVmIG1ha2VfcG9ydChzZWxmLCAqKmt3YXJncyk6CisgICAgICAg
IGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIGlmICdleGVjdXRpdmUnIGluIGt3YXJnczoKKyAg
ICAgICAgICAgIGhvc3QuZXhlY3V0aXZlID0ga3dhcmdzWydleGVjdXRpdmUnXQogICAgICAgICBy
ZXR1cm4gUG9ydChob3N0LCAqKmt3YXJncykKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfY2hpbGRf
cHJvY2Vzc2VzKHNlbGYpOgpAQCAtMjAzLDExICsyMDQsOSBAQCBjbGFzcyBQb3J0VGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kZWZhdWx0X2Nv
bmZpZ3VyYXRpb24oKSwgJ2RlZmF1bHQnKQogCiAgICAgZGVmIHRlc3RfbGF5b3V0X3Rlc3RzX3Nr
aXBwaW5nKHNlbGYpOgotICAgICAgICBmaWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oewotICAg
ICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXpvb20uaHRt
bCc6ICcnLAotICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL2Zvby9iYXIu
aHRtbCc6ICcnLAotICAgICAgICB9KQotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoZmls
ZXN5c3RlbT1maWxlc3lzdGVtKQorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAg
ICAgICBwb3J0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBvcnQubGF5b3V0X3Rlc3RzX2Rp
cigpICsgJy9tZWRpYS92aWRlby16b29tLmh0bWwnLCAnJykKKyAgICAgICAgcG9ydC5maWxlc3lz
dGVtLndyaXRlX3RleHRfZmlsZShwb3J0LmxheW91dF90ZXN0c19kaXIoKSArICcvZm9vL2Jhci5o
dG1sJywgJycpCiAgICAgICAgIHBvcnQuc2tpcHBlZF9sYXlvdXRfdGVzdHMgPSBsYW1iZGE6IFsn
Zm9vL2Jhci5odG1sJywgJ21lZGlhJ10KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuc2tp
cHNfbGF5b3V0X3Rlc3QoJ2Zvby9iYXIuaHRtbCcpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUo
cG9ydC5za2lwc19sYXlvdXRfdGVzdCgnbWVkaWEvdmlkZW8tem9vbS5odG1sJykpCkBAIC0yMTks
MTEgKzIxOCw5IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
cG9ydC5zZXR1cF90ZXN0X3J1bigpCiAKICAgICBkZWYgdGVzdF90ZXN0X2RpcnMoc2VsZik6Ci0g
ICAgICAgIGZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7Ci0gICAgICAgICAgICAnL21vY2st
Y2hlY2tvdXQvTGF5b3V0VGVzdHMvY2FudmFzL3Rlc3QnOiAnJywKLSAgICAgICAgICAgICcvbW9j
ay1jaGVja291dC9MYXlvdXRUZXN0cy9jc3MyLjEvdGVzdCc6ICcnLAotICAgICAgICB9KQotICAg
ICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoZmlsZXN5c3RlbT1maWxlc3lzdGVtKQorICAgICAg
ICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndyaXRl
X3RleHRfZmlsZShwb3J0LmxheW91dF90ZXN0c19kaXIoKSArICcvY2FudmFzL3Rlc3QnLCAnJykK
KyAgICAgICAgcG9ydC5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocG9ydC5sYXlvdXRfdGVz
dHNfZGlyKCkgKyAnL2NzczIuMS90ZXN0JywgJycpCiAgICAgICAgIGRpcnMgPSBwb3J0LnRlc3Rf
ZGlycygpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnY2FudmFzJyBpbiBkaXJzKQogICAgICAg
ICBzZWxmLmFzc2VydFRydWUoJ2NzczIuMScgaW4gZGlycykKQEAgLTI2MSw4ICsyNTgsNyBAQCBj
bGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC5uYW1lKCksICdmb28nKQogCiAgICAgZGVmIHRlc3RfYWRkaXRpb25hbF9wbGF0Zm9y
bV9kaXJlY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSgp
Ci0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J2ZvbycsIGZpbGVzeXN0
ZW09ZmlsZXN5c3RlbSkKKyAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0n
Zm9vJykKICAgICAgICAgcG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCA9IGxhbWJkYTogWydMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9mb28nXQogICAgICAgICBsYXlvdXRfdGVzdF9kaXIgPSBwb3J0Lmxh
eW91dF90ZXN0c19kaXIoKQogICAgICAgICB0ZXN0X2ZpbGUgPSAnZmFzdC90ZXN0Lmh0bWwnCkBA
IC0yNzUsOSArMjcxLDcgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAg
ICAgICAgICMgU2ltcGxlIGFkZGl0aW9uYWwgcGxhdGZvcm0gZGlyZWN0b3J5CiAgICAgICAgIHBv
cnQuX29wdGlvbnMuYWRkaXRpb25hbF9wbGF0Zm9ybV9kaXJlY3RvcnkgPSBbJy90bXAvbG9jYWwt
YmFzZWxpbmVzJ10KLSAgICAgICAgZmlsZXN5c3RlbS5maWxlcyA9IHsKLSAgICAgICAgICAgICcv
dG1wL2xvY2FsLWJhc2VsaW5lcy9mYXN0L3Rlc3QtZXhwZWN0ZWQudHh0JzogJ2ZvbycsCi0gICAg
ICAgIH0KKyAgICAgICAgcG9ydC5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy90bXAvbG9j
YWwtYmFzZWxpbmVzL2Zhc3QvdGVzdC1leHBlY3RlZC50eHQnLCAnZm9vJykKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIHBvcnQuZXhwZWN0ZWRfYmFzZWxpbmVzKHRlc3Rf
ZmlsZSwgJy50eHQnKSwKICAgICAgICAgICAgIFsoJy90bXAvbG9jYWwtYmFzZWxpbmVzJywgJ2Zh
c3QvdGVzdC1leHBlY3RlZC50eHQnKV0pCkBAIC0yOTEsMzYgKzI4NSwzNSBAQCBjbGFzcyBQb3J0
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5i
YXNlbGluZV9wYXRoKCksICcvZm9vJykKIAogICAgIGRlZiB0ZXN0X3VzZXNfdGVzdF9leHBlY3Rh
dGlvbnNfZmlsZShzZWxmKToKLSAgICAgICAgZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKCkK
LSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nZm9vJywgZmlsZXN5c3Rl
bT1maWxlc3lzdGVtKQorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSdm
b28nKQogICAgICAgICBwb3J0LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSA9IGxhbWJk
YTogJy9tb2NrLXJlc3VsdHMvdGVzdF9leHBlY3RhdGlvbnMudHh0JwogICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKHBvcnQudXNlc190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkpCiAgICAgICAgIHBv
cnQuX2ZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7Jy9tb2NrLXJlc3VsdHMvdGVzdF9leHBl
Y3RhdGlvbnMudHh0JzogJyd9KQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC51c2VzX3Rl
c3RfZXhwZWN0YXRpb25zX2ZpbGUoKSkKIAogICAgIGRlZiB0ZXN0X2ZpbmRfbm9fcGF0aHNfc3Bl
Y2lmaWVkKHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFBvcnQoKQorICAgICAgICBwb3J0ID0g
VGVzdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgbGF5b3V0X3Rlc3RzX2RpciA9IHBvcnQubGF5
b3V0X3Rlc3RzX2RpcigpCiAgICAgICAgIHRlc3RzID0gcG9ydC50ZXN0cyhbXSkKICAgICAgICAg
c2VsZi5hc3NlcnROb3RFcXVhbChsZW4odGVzdHMpLCAwKQogCiAgICAgZGVmIHRlc3RfZmluZF9v
bmVfdGVzdChzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RQb3J0KCkKKyAgICAgICAgcG9ydCA9
IFRlc3RQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIHRlc3RzID0gcG9ydC50ZXN0cyhbJ2ZhaWx1
cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
dGVzdHMpLCAxKQogCiAgICAgZGVmIHRlc3RfZmluZF9nbG9iKHNlbGYpOgotICAgICAgICBwb3J0
ID0gVGVzdFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFBvcnQoTW9ja0hvc3QoKSkKICAgICAg
ICAgdGVzdHMgPSBwb3J0LnRlc3RzKFsnZmFpbHVyZXMvZXhwZWN0ZWQvaW0qJ10pCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRlc3RzKSwgMikKIAogICAgIGRlZiB0ZXN0X2ZpbmRfd2l0
aF9za2lwcGVkX2RpcmVjdG9yaWVzKHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFBvcnQoKQor
ICAgICAgICBwb3J0ID0gVGVzdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgdGVzdHMgPSBwb3J0
LnRlc3RzKCd1c2Vyc2NyaXB0cycpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndXNlcnNjcmlw
dHMvcmVzb3VyY2VzL2lmcmFtZS5odG1sJyBub3QgaW4gdGVzdHMpCiAKICAgICBkZWYgdGVzdF9m
aW5kX3dpdGhfc2tpcHBlZF9kaXJlY3Rvcmllc18yKHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVz
dFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgdGVz
dHMgPSBwb3J0LnRlc3RzKFsndXNlcnNjcmlwdHMvcmVzb3VyY2VzJ10pCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodGVzdHMsIHNldChbXSkpCiAKQEAgLTM0MCw3ICszMzMsNyBAQCBjbGFzcyBQ
b3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUG9y
dC5faXNfdGVzdF9maWxlKGZpbGVzeXN0ZW0sICcnLCAnbm90cmVmLWZvby54aHInKSkKIAogICAg
IGRlZiB0ZXN0X3BhcnNlX3JlZnRlc3RfbGlzdChzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RQ
b3J0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIHBvcnQu
aG9zdC5maWxlc3lzdGVtLmZpbGVzWydiYXIvcmVmdGVzdC5saXN0J10gPSAiXG4iLmpvaW4oWyI9
PSB0ZXN0Lmh0bWwgdGVzdC1yZWYuaHRtbCIsCiAgICAgICAgICIiLAogICAgICAgICAiIyBzb21l
IGNvbW1lbnQiLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9kcnlydW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2RyeXJ1bi5weQppbmRleCA0ZGU4MjMwMWEyMTZjZmViOTdkNWU3YmI4Y2UwOTQ0ODcyZmZk
NzkwLi5hYWFmYjA5NGNmNjg3N2YwYWVhMzAwZTIzZTc1ZWExNTczMjkyYzBiIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weQpAQCAt
NTMsNyArNTMsOSBAQCBpbXBvcnQgdGltZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dCBpbXBvcnQgRHJpdmVyLCBEcml2ZXJPdXRwdXQsIGZhY3RvcnkKIAogCi0jIEZJWE1FOiBXaHkg
bm90IGluaGVyaXQgZnJvbSBQb3J0PworIyBOb3RlIHRoYXQgd2UgZG9uJ3QgaW5oZXJpdCBmcm9t
IGJhc2UuUG9ydCBpbiBvcmRlciBmb3IgZGVsZWdhdGlvbiB0bworIyB3b3JrIHByb3Blcmx5OiBl
eGNlcHQgZm9yIHRoZSBtZXRob2RzIGRlZmluZWQgaGVyZSwgd2Ugd2FudCB0byBlbnN1cmUgdGhh
dAorIyBhbGwgb2YgdGhlIG1ldGhvZHMgYXJlIHBhc3NlZCB0byB0aGUgX19kZWxlZ2F0ZSwgbm90
IHRvIHRoZSBiYXNlIGNsYXNzLgogY2xhc3MgRHJ5UnVuUG9ydChvYmplY3QpOgogICAgICIiIkRy
eVJ1biBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAKQEAgLTY0LDcg
KzY2LDcgQEAgY2xhc3MgRHJ5UnVuUG9ydChvYmplY3QpOgogICAgICAgICAgICAgICAgIGt3YXJn
c1sncG9ydF9uYW1lJ10gPSBrd2FyZ3NbJ3BvcnRfbmFtZSddW2xlbihwZngpOl0KICAgICAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAga3dhcmdzWydwb3J0X25hbWUnXSA9IE5vbmUKLSAg
ICAgICAgc2VsZi5fX2RlbGVnYXRlID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCoqa3dhcmdzKQor
ICAgICAgICBzZWxmLl9fZGVsZWdhdGUgPSBmYWN0b3J5LlBvcnRGYWN0b3J5KGhvc3QpLmdldCgq
Kmt3YXJncykKIAogICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKICAgICAgICAgcmV0
dXJuIGdldGF0dHIoc2VsZi5fX2RlbGVnYXRlLCBuYW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5
CmluZGV4IDYxZTMxZjUyZDg5YTNiZThjNDAzYWY2MTI3ODM3MzM3OTZiODE0NGEuLjFmOWMyMzZj
NmIzMjYwNThmOGI5MTA2ZmRhMDNiZjE0ZWJiMjJkNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3Qu
cHkKQEAgLTMwLDcgKzMwLDcgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20g
d2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKLWZyb20gd2Via2l0cHku
Y29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5zeXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0CiAKIGltcG9ydCBjaHJv
bWl1bV9ncHUKIGltcG9ydCBjaHJvbWl1bV9saW51eApAQCAtNTksMTUgKzU5LDExIEBAIGNsYXNz
IEZhY3RvcnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5yZWFsX3N5c19w
bGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQogICAgICAgICBzZWxmLndlYmtpdF9vcHRpb25zID0gTW9j
a09wdGlvbnMocGl4ZWxfdGVzdHM9RmFsc2UpCiAgICAgICAgIHNlbGYuY2hyb21pdW1fb3B0aW9u
cyA9IE1vY2tPcHRpb25zKHBpeGVsX3Rlc3RzPUZhbHNlLCBjaHJvbWl1bT1UcnVlKQorICAgICAg
ICBzZWxmLmZhY3RvcnkgPSBmYWN0b3J5LlBvcnRGYWN0b3J5KE1vY2tTeXN0ZW1Ib3N0KCkpCiAK
ICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IHNlbGYucmVh
bF9zeXNfcGxhdGZvcm0KIAotICAgIGRlZiBtYWtlX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGhv
c3QgPSBNb2NrSG9zdCgpCi0gICAgICAgICMgVGhlIFBvcnRGYWN0b3J5IG9uIE1vY2tIb3N0IGlz
IGEgcmVhbCBQb3J0RmFjdG9yeSB3aXRoIGEgTW9ja0ZpbGVTeXN0ZW0sIGV0Yy4KLSAgICAgICAg
cmV0dXJuIGhvc3QucG9ydF9mYWN0b3J5Ci0KICAgICBkZWYgYXNzZXJ0X3BvcnQoc2VsZiwgcG9y
dF9uYW1lLCBleHBlY3RlZF9wb3J0LCBwb3J0X29iaj1Ob25lKToKICAgICAgICAgIiIiSGVscGVy
IGFzc2VydCBmb3IgcG9ydF9uYW1lLgogCkBAIC03Niw3ICs3Miw3IEBAIGNsYXNzIEZhY3RvcnlU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICBleHBlY3RlZF9wb3J0OiBjbGFzcyBv
ZiBleHBlY3RlZCBwb3J0IG9iamVjdC4KICAgICAgICAgICBwb3J0X29iajogb3B0aW9uYWwgcG9y
dCBvYmplY3QKICAgICAgICAgIiIiCi0gICAgICAgIHBvcnRfb2JqID0gcG9ydF9vYmogb3Igc2Vs
Zi5tYWtlX2ZhY3RvcnkoKS5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZSkKKyAgICAgICAgcG9ydF9v
YmogPSBwb3J0X29iaiBvciBzZWxmLmZhY3RvcnkuZ2V0KHBvcnRfbmFtZT1wb3J0X25hbWUpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHBvcnRfb2JqLCBleHBlY3RlZF9wb3J0
KSkKIAogICAgIGRlZiBhc3NlcnRfcGxhdGZvcm1fcG9ydChzZWxmLCBwbGF0Zm9ybSwgb3B0aW9u
cywgZXhwZWN0ZWRfcG9ydCk6CkBAIC05Miw3ICs4OCw3IEBAIGNsYXNzIEZhY3RvcnlUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgb3JpZ19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQog
ICAgICAgICBzeXMucGxhdGZvcm0gPSBwbGF0Zm9ybQogICAgICAgICAjIEZJWE1FOiBXZSBuZWVk
IGEgYmV0dGVyIHdheSB0byBtb2NrIHRoaXMuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2lu
c3RhbmNlKHNlbGYubWFrZV9mYWN0b3J5KCkuZ2V0KG9wdGlvbnM9b3B0aW9ucyksIGV4cGVjdGVk
X3BvcnQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLmZhY3Rvcnku
Z2V0KG9wdGlvbnM9b3B0aW9ucyksIGV4cGVjdGVkX3BvcnQpKQogICAgICAgICBzeXMucGxhdGZv
cm0gPSBvcmlnX3BsYXRmb3JtCiAKICAgICBkZWYgdGVzdF9tYWMoc2VsZik6CkBAIC0xNTMsMTMg
KzE0OSwxMyBAQCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBk
ZWYgdGVzdF91bmtub3duX3NwZWNpZmllZChzZWxmKToKICAgICAgICAgIyBUZXN0IHdoYXQgaGFw
cGVucyB3aGVuIHlvdSBzcGVjaWZ5IGFuIHVua25vd24gcG9ydC4KLSAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgc2VsZi5tYWtlX2ZhY3RvcnkoKS5nZXQsIHBv
cnRfbmFtZT0ndW5rbm93bicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVu
dGVkRXJyb3IsIHNlbGYuZmFjdG9yeS5nZXQsIHBvcnRfbmFtZT0ndW5rbm93bicpCiAKICAgICBk
ZWYgdGVzdF91bmtub3duX2RlZmF1bHQoc2VsZik6CiAgICAgICAgICMgVGVzdCB3aGF0IGhhcHBl
bnMgd2hlbiB5b3UncmUgcnVubmluZyBvbiBhbiB1bmtub3duIHBsYXRmb3JtLgogICAgICAgICBv
cmlnX3BsYXRmb3JtID0gc3lzLnBsYXRmb3JtCiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9ICd1bmtu
b3duJwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzZWxm
Lm1ha2VfZmFjdG9yeSgpLmdldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVt
ZW50ZWRFcnJvciwgc2VsZi5mYWN0b3J5LmdldCkKICAgICAgICAgc3lzLnBsYXRmb3JtID0gb3Jp
Z19wbGF0Zm9ybQogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weQppbmRleCBl
MzE3ZTEyYzViZTdmZWZiYzE3MDg0ZTRjZjM3ZmE4MDhiMDVmMjEzLi4zNmU0YWI2YWE3MTczN2Fm
OTgzODNkMjFiNjM2YmJmZGU3N2Y4ZWIzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lX3VuaXR0
ZXN0LnB5CkBAIC0yNywxMSArMjcsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0
cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKLWZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKLQot
Ci1pbXBvcnQgZ29vZ2xlX2Nocm9tZQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBp
bXBvcnQgZ29vZ2xlX2Nocm9tZQogCiAKIGNsYXNzIEdldEdvb2dsZUNocm9tZVBvcnRUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKQEAgLTU5LDcgKzU1LDcgQEAgY2xhc3MgR2V0R29vZ2xlQ2hyb21l
UG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQog
ICAgICAgICBjaHJvbWl1bV9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCJjaHJvbWl1bS1j
Zy1tYWMiKQogICAgICAgICBjaHJvbWl1bV9iYXNlID0gY2hyb21pdW1fcG9ydC5wYXRoX2Zyb21f
Y2hyb21pdW1fYmFzZSgpCi0gICAgICAgIHBvcnQgPSBnb29nbGVfY2hyb21lLkdldEdvb2dsZUNo
cm9tZVBvcnQocG9ydF9uYW1lPXBvcnRfbmFtZSwgb3B0aW9ucz1Ob25lLCBob3N0PWhvc3QpCisg
ICAgICAgIHBvcnQgPSBnb29nbGVfY2hyb21lLkdldEdvb2dsZUNocm9tZVBvcnQoaG9zdCwgcG9y
dF9uYW1lPXBvcnRfbmFtZSwgb3B0aW9ucz1Ob25lKQogCiAgICAgICAgIGV4cGVjdGVkX2Nocm9t
aXVtX292ZXJyaWRlcyA9ICcvLyBjaHJvbWl1bSBvdmVycmlkZXNcbicKICAgICAgICAgZXhwZWN0
ZWRfY2hyb21lX292ZXJyaWRlcyA9ICcvLyBjaHJvbWUgb3ZlcnJpZGVzXG4nCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0X3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdF91bml0dGVzdC5w
eQppbmRleCBkNjQ0NjMyZDEwZDIyMTQ1MzE3ZWQ1M2M5MDJkYWVkZjdiOTNhYzNjLi41YjJkZWM2
ODRhZjlhNTBhNmVlZjc4Mjk0M2FjYTJhYzQ0NmVkMWRiIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHkKQEAgLTI5
LDcgKzI5LDYgQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQucXQgaW1wb3J0IFF0UG9ydAogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQpAQCAtNDUsMTAg
KzQ0LDkgQEAgY2xhc3MgUXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAg
ICAgICAgICMgRklYTUU6IFBvcnQgY29uc3RydWN0b3JzIHNob3VsZCBub3QgInBhcnNlIiB0aGUg
cG9ydCBuYW1lLCBidXQKICAgICAgICAgIyByYXRoZXIgYmUgcGFzc2VkIGNvbXBvbmVudHMgKGRp
cmVjdGx5IG9yIHZpYSBzZXR0ZXJzKS4gIE9uY2UKICAgICAgICAgIyB3ZSBmaXggdGhhdCwgdGhp
cyBtZXRob2Qgd2lsbCBuZWVkIGEgcmUtd3JpdGUuCi0gICAgICAgIHBvcnQgPSBRdFBvcnQoc3lz
X3BsYXRmb3JtPXN5c19wbGF0Zm9ybSwKLSAgICAgICAgICAgIG9wdGlvbnM9TW9ja09wdGlvbnMo
d2Via2l0X3Rlc3RfcnVubmVyPXVzZV93ZWJraXQyLCBwbGF0Zm9ybT0ncXQnKSwKLSAgICAgICAg
ICAgIGhvc3Q9TW9ja0hvc3QoKSwKLSAgICAgICAgICAgIGV4ZWN1dGl2ZT1Nb2NrRXhlY3V0aXZl
MihzZWxmLl9xdF92ZXJzaW9uKHF0X3ZlcnNpb24pKSkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0
KCkKKyAgICAgICAgaG9zdC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihzZWxmLl9xdF92ZXJz
aW9uKHF0X3ZlcnNpb24pKQorICAgICAgICBwb3J0ID0gUXRQb3J0KGhvc3QsIHN5c19wbGF0Zm9y
bT1zeXNfcGxhdGZvcm0sIG9wdGlvbnM9TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPXVz
ZV93ZWJraXQyLCBwbGF0Zm9ybT0ncXQnKSkKICAgICAgICAgYWJzb2x1dGVfc2VhcmNoX3BhdGhz
ID0gbWFwKHBvcnQuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBzZWFyY2hfcGF0aHMpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKSwgYWJzb2x1dGVf
c2VhcmNoX3BhdGhzKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CmluZGV4IGNjOGZmODM5MTg2NDM1
ODA4N2EyMDYzYjBhYjdlOTdlNTJiNzcwNGYuLjk0MDIwZGU1OGVkNWUzYjZjMDUyMjQ1N2RiZWUz
YzZlOGJhNDM3MzggMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC00MSwxMyArNDEsMTIgQEAg
ZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogY2xhc3MgVGVz
dFdlYktpdFBvcnQoV2ViS2l0UG9ydCk6CiAgICAgcG9ydF9uYW1lID0gInRlc3R3ZWJraXRwb3J0
IgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN5bWJvbHNfc3RyaW5nPU5vbmUsIGZlYXR1cmVf
bGlzdD1Ob25lLAotICAgICAgICAgICAgICAgICBleHBlY3RhdGlvbnNfZmlsZT1Ob25lLCBza2lw
c19maWxlPU5vbmUsIGhvc3Q9Tm9uZSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgc3lt
Ym9sc19zdHJpbmc9Tm9uZSwgZmVhdHVyZV9saXN0PU5vbmUsCisgICAgICAgICAgICAgICAgIGV4
cGVjdGF0aW9uc19maWxlPU5vbmUsIHNraXBzX2ZpbGU9Tm9uZSwKICAgICAgICAgICAgICAgICAg
Kiprd2FyZ3MpOgogICAgICAgICBzZWxmLnN5bWJvbHNfc3RyaW5nID0gc3ltYm9sc19zdHJpbmcg
ICMgUGFzc2luZyAiIiBkaXNhYmxlcyBhbGwgc3RhdGljbHktZGV0ZWN0YWJsZSBmZWF0dXJlcy4K
ICAgICAgICAgc2VsZi5mZWF0dXJlX2xpc3QgPSBmZWF0dXJlX2xpc3QgICMgUGFzc2luZyBbXSBk
aXNhYmxlcyBhbGwgcnVudGltZS1kZXRlY3RhYmxlIGZlYXR1cmVzLgotICAgICAgICBob3N0ID0g
aG9zdCBvciBNb2NrSG9zdCgpCi0gICAgICAgIFdlYktpdFBvcnQuX19pbml0X18oc2VsZiwgaG9z
dD1ob3N0LCAqKmt3YXJncykKKyAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCBob3N0
LCAqKmt3YXJncykKIAogICAgIGRlZiBhbGxfdGVzdF9jb25maWd1cmF0aW9ucyhzZWxmKToKICAg
ICAgICAgcmV0dXJuIFtUZXN0Q29uZmlndXJhdGlvbi5mcm9tX3BvcnQoc2VsZildCkBAIC0xMDMs
NyArMTAyLDcgQEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENh
c2UpOgogICAgICAgICAgICAgIm1odG1sIiwgICMgUmVxdWlyZXMgTUhUTUxBcmNoaXZlCiAgICAg
ICAgIF0pCiAKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0
KHN5bWJvbHNfc3RyaW5nLCBOb25lKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVh
dHVyZXMoKSkKKyAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0
KE1vY2tIb3N0KCksIHN5bWJvbHNfc3RyaW5nLCBOb25lKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5z
dXBwb3J0ZWRfZmVhdHVyZXMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRfZGly
ZWN0b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVzKQogCiAgICAgICAgICMgVGVzdCB0aGF0IHRo
ZSBubSBzdHJpbmcgcGFyc2luZyBhY3R1YWxseSB3b3JrczoKQEAgLTExNCw3ICsxMTMsNyBAQCBj
bGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAiIiIKICAg
ICAgICAgIyBOb3RlICdjb21wb3NpdGluZycgaXMgbm90IGluIHRoZSBsaXN0IG9mIHNraXBwZWQg
ZGlyZWN0b3JpZXMgKGhlbmNlIHRoZSBwYXJzaW5nIG9mIEdyYXBoaWNzTGF5ZXIgd29ya2VkKToK
ICAgICAgICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMgPSBzZXQoWydtYXRobWwnLCAndHJhbnNmb3Jt
cy8zZCcsICdjb21wb3NpdGluZy93ZWJnbCcsICdmYXN0L2NhbnZhcy93ZWJnbCcsICdhbmltYXRp
b25zLzNkJywgJ21odG1sJywgJ2h0dHAvdGVzdHMvY2FudmFzL3dlYmdsJ10pCi0gICAgICAgIHJl
c3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9ydChzeW1ib2xzX3N0cmluZywgTm9u
ZSkuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKCkpCisgICAgICAgIHJl
c3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpLCBzeW1ib2xz
X3N0cmluZywgTm9uZSkuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKCkp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9k
aXJlY3RvcmllcykKIAogICAgIGRlZiB0ZXN0X3J1bnRpbWVfZmVhdHVyZV9saXN0KHNlbGYpOgpA
QCAtMTI4LDE0ICsxMjcsMTQgQEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Q
b3J0VGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3NraXBwZWRfZGlyZWN0b3JpZXNfZm9yX2ZlYXR1
cmVzKHNlbGYpOgogICAgICAgICBzdXBwb3J0ZWRfZmVhdHVyZXMgPSBbIkFjY2VsZXJhdGVkIENv
bXBvc2l0aW5nIiwgIkZvbyBGZWF0dXJlIl0KICAgICAgICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMg
PSBzZXQoWyJhbmltYXRpb25zLzNkIiwgInRyYW5zZm9ybXMvM2QiXSkKLSAgICAgICAgcmVzdWx0
X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KE5vbmUsIHN1cHBvcnRlZF9mZWF0dXJl
cykuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKCkpCisgICAgICAgIHJl
c3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpLCBOb25lLCBz
dXBwb3J0ZWRfZmVhdHVyZXMpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJl
cygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0
ZWRfZGlyZWN0b3JpZXMpCiAKICAgICBkZWYgdGVzdF9za2lwcGVkX2xheW91dF90ZXN0cyhzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0V2ViS2l0UG9ydChOb25lLCBOb25lKS5z
a2lwcGVkX2xheW91dF90ZXN0cygpLCBzZXQoWydtZWRpYSddKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpLCBOb25lLCBOb25lKS5za2lwcGVkX2xh
eW91dF90ZXN0cygpLCBzZXQoWydtZWRpYSddKSkKIAogICAgIGRlZiB0ZXN0X3NraXBwZWRfZmls
ZV9zZWFyY2hfcGF0aHMoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisg
ICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBvcnQuX3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoKSwgc2V0KFsndGVzdHdl
YmtpdHBvcnQnXSkpCiAgICAgICAgIHBvcnQuX25hbWUgPSAidGVzdHdlYmtpdHBvcnQtdmVyc2lv
biIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9za2lwcGVkX2ZpbGVfc2VhcmNoX3Bh
dGhzKCksIHNldChbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rlc3R3ZWJraXRwb3J0LXZlcnNpb24nXSkp
CkBAIC0xNDMsMjIgKzE0MiwyMiBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNl
LlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5fc2tpcHBlZF9m
aWxlX3NlYXJjaF9wYXRocygpLCBzZXQoWyd0ZXN0d2Via2l0cG9ydCcsICd0ZXN0d2Via2l0cG9y
dC12ZXJzaW9uJywgJ3Rlc3R3ZWJraXRwb3J0LXdrMicsICd3azInXSkpCiAKICAgICBkZWYgdGVz
dF9yb290X29wdGlvbihzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAg
ICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIHBvcnQuX29w
dGlvbnMgPSBNb2NrT3B0aW9ucyhyb290PScvZm9vJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwb3J0Ll9wYXRoX3RvX2RyaXZlcigpLCAiL2Zvby9EdW1wUmVuZGVyVHJlZSIpCiAKICAgICBk
ZWYgdGVzdF90ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGF0IHdl
IHJlYWQgdGhlIGV4cGVjdGF0aW9ucyBmaWxlCi0gICAgICAgIGZpbGVzID0gewotICAgICAgICAg
ICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3R3ZWJraXRwb3J0L3Rl
c3RfZXhwZWN0YXRpb25zLnR4dCc6ICdCVUdfVEVTVEVYUEVDVEFUSU9OUyBTS0lQIDogZmFzdC9o
dG1sL2FydGljbGUtZWxlbWVudC5odG1sID0gRkFJTFxuJywKLSAgICAgICAgfQotICAgICAgICBt
b2NrX2ZzID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCi0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0
UG9ydChmaWxlc3lzdGVtPW1vY2tfZnMpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAg
ICAgIGhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy9tb2NrLWNoZWNrb3V0L0xheW91
dFRlc3RzL3BsYXRmb3JtL3Rlc3R3ZWJraXRwb3J0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcsCisg
ICAgICAgICAgICAnQlVHX1RFU1RFWFBFQ1RBVElPTlMgU0tJUCA6IGZhc3QvaHRtbC9hcnRpY2xl
LWVsZW1lbnQuaHRtbCA9IEZBSUxcbicpCisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCho
b3N0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQudGVzdF9leHBlY3RhdGlvbnMoKSwg
J0JVR19URVNURVhQRUNUQVRJT05TIFNLSVAgOiBmYXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0
bWwgPSBGQUlMXG4nKQogCiAgICAgZGVmIHRlc3RfYnVpbGRfZHJpdmVyKHNlbGYpOgogICAgICAg
ICBvdXRwdXQgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0
KCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQ
b3J0KGhvc3QpCiAgICAgICAgICMgRGVsYXkgc2V0dGluZyBfZXhlY3V0aXZlIHRvIGF2b2lkIGxv
Z2dpbmcgZHVyaW5nIGNvbnN0cnVjdGlvbgogICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2Nr
RXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkKICAgICAgICAgcG9ydC5fb3B0aW9ucyA9IE1vY2tP
cHRpb25zKGNvbmZpZ3VyYXRpb249IlJlbGVhc2UiKSAgIyBUaGlzIHNob3VsZCBub3QgYmUgbmVj
ZXNzYXJ5LCBidXQgSSB0aGluayBUZXN0V2ViS2l0UG9ydCBpcyBhY3R1YWxseSByZWFkaW5nIGZy
b20gZGlzayAoYW5kIHRodXMgZGV0ZWN0cyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uKS4KQEAg
LTE4OSw3ICsxODgsNyBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRU
ZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuX2FwYWNoZV9jb25maWdf
ZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybShwbGF0Zm9ybSksIGNvbmZpZ19maWxlKQogCiAgICAgZGVm
IHRlc3RfbGludXhfZGlzdHJvX2RldGVjdGlvbihzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RX
ZWJLaXRQb3J0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KE1vY2tIb3N0KCkpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNfcmVkaGF0X2Jhc2VkKCkpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5faXNfZGViaWFuX2Jhc2VkKCkpCiAKQEAgLTIwMiw3ICsy
MDEsNyBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9pc19kZWJpYW5fYmFzZWQoKSkKIAogICAg
IGRlZiB0ZXN0X2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybShzZWxmKToKLSAg
ICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQ
b3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxh
dGZvcm0ocG9ydCwgJ2N5Z3dpbicsICdjeWd3aW4taHR0cGQuY29uZicpCiAKICAgICAgICAgc2Vs
Zi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnbGludXgyJywgJ2FwYWNo
ZTItaHR0cGQuY29uZicpCkBAIC0yMTEsNyArMjEwLDcgQEAgY2xhc3MgV2ViS2l0UG9ydFRlc3Qo
cG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICBwb3J0Ll9pc19yZWRoYXRfYmFz
ZWQgPSBsYW1iZGE6IFRydWUKICAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9w
bGF0Zm9ybShwb3J0LCAnbGludXgyJywgJ2ZlZG9yYS1odHRwZC5jb25mJykKIAotICAgICAgICBw
b3J0ID0gVGVzdFdlYktpdFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoTW9j
a0hvc3QoKSkKICAgICAgICAgcG9ydC5faXNfZGViaWFuX2Jhc2VkID0gbGFtYmRhOiBUcnVlCiAg
ICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4
MicsICdhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mJykKIApAQCAtMjIwLDcgKzIxOSw3IEBAIGNs
YXNzIFdlYktpdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICAgICAg
c2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnYmFyZicsICdhcGFj
aGUyLWh0dHBkLmNvbmYnKQogCiAgICAgZGVmIHRlc3RfcGF0aF90b19hcGFjaGVfY29uZmlnX2Zp
bGUoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHBvcnQg
PSBUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICAjIE1vY2sgb3V0IF9hcGFjaGVf
Y29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0gdG8gaWdub3JlIHRoZSBwYXNzZWQgc3lzLnBs
YXRmb3JtIHZhbHVlLgogICAgICAgICBwb3J0Ll9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3Jf
cGxhdGZvcm0gPSBsYW1iZGEgcGxhdGZvcm06ICdodHRwZC5jb25mJwogICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhwb3J0Ll9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZSgpLCAnL21vY2stY2hl
Y2tvdXQvTGF5b3V0VGVzdHMvaHR0cC9jb25mL2h0dHBkLmNvbmYnKQpAQCAtMjQ4LDcgKzI0Nyw3
IEBAIGNsYXNzIE1vY2tTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAKIGNsYXNzIFdlYktpdERyaXZl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3JlYWRfYmxvY2soc2VsZik6
Ci0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0V2Vi
S2l0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICBkcml2ZXIgPSBXZWJLaXREcml2ZXIocG9ydCwg
MCwgcGl4ZWxfdGVzdHM9RmFsc2UpCiAgICAgICAgIGRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSBN
b2NrU2VydmVyUHJvY2VzcyhbCiAgICAgICAgICAgICAnQWN0dWFsSGFzaDogZm9vYmFyJywKQEAg
LTI2Miw3ICsyNjEsNyBAQCBjbGFzcyBXZWJLaXREcml2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29udGVudF9ibG9jay5jb250ZW50X2hhc2gs
ICdmb29iYXInKQogCiAgICAgZGVmIHRlc3RfcmVhZF9iaW5hcnlfYmxvY2soc2VsZik6Ci0gICAg
ICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9y
dChNb2NrSG9zdCgpKQogICAgICAgICBkcml2ZXIgPSBXZWJLaXREcml2ZXIocG9ydCwgMCwgcGl4
ZWxfdGVzdHM9VHJ1ZSkKICAgICAgICAgZHJpdmVyLl9zZXJ2ZXJfcHJvY2VzcyA9IE1vY2tTZXJ2
ZXJQcm9jZXNzKFsKICAgICAgICAgICAgICdBY3R1YWxIYXNoOiBhY3R1YWwnLApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxp
bmVzZXJ2ZXJfdW5pdHRlc3QucHkKaW5kZXggNjlhNDQwOWJkMWE0NDg3ZGYwNmJjNTE3YjU2ODVk
NTk2YjEzMThiMy4uYjAyZDFkMzU3OTUwNjNkMTA1OWIzMjRmZWJjYjI3ZTM1YWQ3OTI0MyAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNl
cnZlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVy
cy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5CkBAIC0zNSw5ICszNSw3IEBAIGV4Y2VwdCBJ
bXBvcnRFcnJvcjoKICAgICBpbXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5zaW1wbGVqc29uIGFz
IGpzb24KIAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtX21vY2sgaW1w
b3J0IE1vY2tTQ00KIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldCBpbXBvcnQgcmVzdWx0c2pzb25w
YXJzZXJfdW5pdHRlc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21v
Y2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sg
aW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2Fn
ZS5qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yIGltcG9ydCBzdHJpcF9qc29uX3dyYXBwZXIKIGZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Via2l0IGltcG9ydCBXZWJLaXRQb3J0CkBAIC0z
MDEsMjMgKzI5OSwyMSBAQCBkZWYgZ2V0X3Rlc3RfY29uZmlnKHRlc3RfZmlsZXM9W10sIHJlc3Vs
dF9maWxlcz1bXSk6CiAgICAgIyBXZSBjb3VsZCBncmFiIHRoaXMgZnJvbSBwb3J0LmxheW91dF90
ZXN0c19kaXIoKSwgYnV0IGluc3RhbnRpYXRpbmcgYSBmdWxseSBtb2NrZWQgcG9ydCBpcyBhIHBh
aW4uCiAgICAgbGF5b3V0X3Rlc3RzX2RpcmVjdG9yeSA9ICIvbW9jay1jaGVja291dC9MYXlvdXRU
ZXN0cyIKICAgICByZXN1bHRzX2RpcmVjdG9yeSA9ICcvV2ViS2l0QnVpbGQvRGVidWcvbGF5b3V0
LXRlc3QtcmVzdWx0cycKLSAgICBtb2NrX2ZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSgpCisg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICBmb3IgZmlsZSBpbiB0ZXN0X2ZpbGVzOgotICAgICAg
ICBmaWxlX3BhdGggPSBtb2NrX2ZpbGVzeXN0ZW0uam9pbihsYXlvdXRfdGVzdHNfZGlyZWN0b3J5
LCBmaWxlKQotICAgICAgICBtb2NrX2ZpbGVzeXN0ZW0uZmlsZXNbZmlsZV9wYXRoXSA9ICcnCisg
ICAgICAgIGZpbGVfcGF0aCA9IGhvc3QuZmlsZXN5c3RlbS5qb2luKGxheW91dF90ZXN0c19kaXJl
Y3RvcnksIGZpbGUpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5maWxlc1tmaWxlX3BhdGhdID0g
JycKICAgICBmb3IgZmlsZSBpbiByZXN1bHRfZmlsZXM6Ci0gICAgICAgIGZpbGVfcGF0aCA9IG1v
Y2tfZmlsZXN5c3RlbS5qb2luKHJlc3VsdHNfZGlyZWN0b3J5LCBmaWxlKQotICAgICAgICBtb2Nr
X2ZpbGVzeXN0ZW0uZmlsZXNbZmlsZV9wYXRoXSA9ICcnCisgICAgICAgIGZpbGVfcGF0aCA9IGhv
c3QuZmlsZXN5c3RlbS5qb2luKHJlc3VsdHNfZGlyZWN0b3J5LCBmaWxlKQorICAgICAgICBob3N0
LmZpbGVzeXN0ZW0uZmlsZXNbZmlsZV9wYXRoXSA9ICcnCiAKICAgICBjbGFzcyBUZXN0TWFjUG9y
dChXZWJLaXRQb3J0KToKICAgICAgICAgcG9ydF9uYW1lID0gIm1hYyIKLSAgICAgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCBmaWxl
c3lzdGVtPW1vY2tfZmlsZXN5c3RlbSwgaG9zdD1Nb2NrSG9zdCgpKQogCiAgICAgcmV0dXJuIFRl
c3RDb25maWcoCi0gICAgICAgIFRlc3RNYWNQb3J0KCksCisgICAgICAgIFRlc3RNYWNQb3J0KGhv
c3QpLAogICAgICAgICBsYXlvdXRfdGVzdHNfZGlyZWN0b3J5LAogICAgICAgICByZXN1bHRzX2Rp
cmVjdG9yeSwKICAgICAgICAgKCdtYWMnLCAnbWFjLWxlb3BhcmQnLCAnd2luJywgJ2xpbnV4Jyks
Ci0gICAgICAgIG1vY2tfZmlsZXN5c3RlbSwKLSAgICAgICAgTW9ja1NDTSgpKQorICAgICAgICBo
b3N0LmZpbGVzeXN0ZW0sCisgICAgICAgIGhvc3Quc2NtKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119340</attachid>
            <date>2011-12-14 17:07:18 -0800</date>
            <delta_ts>2011-12-15 19:49:17 -0800</delta_ts>
            <desc>add in more unittest files</desc>
            <filename>bug-74562-20111214170717.patch</filename>
            <type>text/plain</type>
            <size>36435</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzI3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDMxYmRjNTU0ZDEyNzRhNmZjMGNmYjkyMWYzYzZiNDgz
ODhiOTE1MS4uODJjYjRmYzQ2MmVhMWNkYWJjOGQ3OWU4MDkyNjg2MmFmZTU2ODU1NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc0
IEBACiAyMDExLTEyLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiB1cGRhdGUgdW5pdCB0ZXN0cyBpbiBwcmVwYXJhdGlvbiBmb3IgbWFr
aW5nIGhvc3QgYSBtYW5kYXRvcnkgcGFyYW1ldGVyIHRvIFBvcnQgb2JqZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ1NjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcGFydCBmcm9tIGEgbWlub3Ig
Y2hhbmdlIHRvIHN0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CisgICAgICAgIHRv
IHRha2UgYSBob3N0IGFzIGEgcGFyYW1ldGVyIHRvIGEgVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIo
KSwKKyAgICAgICAgdGhlcmUgYXJlIG9ubHkgcmVmYWN0b3JpbmcgY2hhbmdlcyB0byB1bml0IHRl
c3RzIGhlcmUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0UmVz
dWx0V3JpdGVyVGVzdC50ZXN0X3JlZnRlc3RfZGlmZl9pbWFnZSk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVy
YXRvcl91bml0dGVzdC5weToKKyAgICAgICAgKEpTT05HZW5lcmF0b3JUZXN0Ll90ZXN0X2pzb25f
Z2VuZXJhdGlvbik6CisgICAgICAgIChKU09OR2VuZXJhdG9yVGVzdC50ZXN0X3Rlc3RfdGltaW5n
c190cmllKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMv
dGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisgICAgICAgIChCYXNlLl9faW5pdF9fKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRl
c3QucHk6CisgICAgICAgIChQb3J0VGVzdC5tYWtlX3BvcnQpOgorICAgICAgICAoUG9ydFRlc3Qu
dGVzdF9sYXlvdXRfdGVzdHNfc2tpcHBpbmcpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF90ZXN0
X2RpcnMpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF9hZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVj
dG9yeSk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X3VzZXNfdGVzdF9leHBlY3RhdGlvbnNfZmls
ZSk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfbm9fcGF0aHNfc3BlY2lmaWVkKToKKyAg
ICAgICAgKFBvcnRUZXN0LnRlc3RfZmluZF9vbmVfdGVzdCk6CisgICAgICAgIChQb3J0VGVzdC50
ZXN0X2ZpbmRfZ2xvYik6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfd2l0aF9za2lwcGVk
X2RpcmVjdG9yaWVzKToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfZmluZF93aXRoX3NraXBwZWRf
ZGlyZWN0b3JpZXNfMik6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X3BhcnNlX3JlZnRlc3RfbGlz
dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4u
cHk6CisgICAgICAgIChEcnlSdW5Qb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHk6CisgICAgICAgIChG
YWN0b3J5VGVzdC5zZXRVcCk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZWFyRG93bik6CisgICAg
ICAgIChGYWN0b3J5VGVzdC5hc3NlcnRfcG9ydCk6CisgICAgICAgIChGYWN0b3J5VGVzdC5hc3Nl
cnRfcGxhdGZvcm1fcG9ydCk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X3Vua25vd25fc3Bl
Y2lmaWVkKToKKyAgICAgICAgKEZhY3RvcnlUZXN0LnRlc3RfdW5rbm93bl9kZWZhdWx0KToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVf
dW5pdHRlc3QucHk6CisgICAgICAgIChHZXRHb29nbGVDaHJvbWVQb3J0VGVzdC5fdmVyaWZ5X2V4
cGVjdGF0aW9uc19vdmVycmlkZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHk6CisgICAgICAgIChNb2NrRFJUUG9ydFRl
c3QubWFrZV9wb3J0KToKKyAgICAgICAgKE1vY2tEUlRUZXN0LmFzc2VydFRlc3QpOgorICAgICAg
ICAoTW9ja0RSVFRlc3QudGVzdF9tYWluKToKKyAgICAgICAgKE1vY2tDaHJvbWl1bURSVFRlc3Qu
dGVzdF9waXhlbHRlc3RfX2ZhaWxzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3F0X3VuaXR0ZXN0LnB5OgorICAgICAgICAoUXRQb3J0VGVzdC5fYXNzZXJ0
X3NlYXJjaF9wYXRoKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dlYmtpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RXZWJLaXRQb3J0Ll9faW5pdF9f
KToKKyAgICAgICAgKFdlYktpdFBvcnRUZXN0LnRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3Jf
c3ltYm9scyk6CisgICAgICAgICh0ZXN0X3NraXBwZWRfZGlyZWN0b3JpZXNfZm9yX2ZlYXR1cmVz
KToKKyAgICAgICAgKHRlc3Rfc2tpcHBlZF9sYXlvdXRfdGVzdHMpOgorICAgICAgICAodGVzdF9z
a2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKToKKyAgICAgICAgKHRlc3Rfcm9vdF9vcHRpb24pOgor
ICAgICAgICAodGVzdF90ZXN0X2V4cGVjdGF0aW9ucyk6CisgICAgICAgICh0ZXN0X2J1aWxkX2Ry
aXZlcik6CisgICAgICAgICh0ZXN0X2xpbnV4X2Rpc3Ryb19kZXRlY3Rpb24pOgorICAgICAgICAo
dGVzdF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0pOgorICAgICAgICAodGVz
dF9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZSk6CisgICAgICAgIChXZWJLaXREcml2ZXJUZXN0
LnRlc3RfcmVhZF9ibG9jayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbnNDaGVj
a2VyLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9u
c1Rlc3RDYXNlLl9leHBlY3RfcG9ydF9mb3JfZXhwZWN0YXRpb25zX3BhdGgpOgorICAgICAgICAo
VGVzdEV4cGVjdGF0aW9uc1Rlc3RDYXNlLmFzc2VydF9saW5lc19saW50KToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5
OgorICAgICAgICAoZ2V0X3Rlc3RfY29uZmlnLlRlc3RNYWNQb3J0KToKKworMjAxMS0xMi0xNCAg
RGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICB3ZWJraXRweTog
Y2xlYW4gdXAgVGVzdFBvcnQgdG8gKG1vc3RseSkgbm90IGNyZWF0ZSBhIG5ldyBmaWxlc3lzdGVt
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDU1Ngog
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy90ZXN0X3Jlc3VsdF93cml0ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXJfdW5pdHRlc3Qu
cHkKaW5kZXggNDZmNzJlNmQzNTdlMjRmYzczYWEwMmI1ZWMwNGNhNGJlYjgyZjUxZi4uYzc5ODQ2
YTJkMjBhZmI2MmZkYzEwNGM2ZGIzYjg0ODAxNTJlOWFhMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVy
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlcl91bml0dGVzdC5weQpAQCAtMjYsNiArMjYsNyBA
QAogCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGlt
cG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1w
b3J0IHRlc3RfcmVzdWx0X3dyaXRlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxz
IGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmRy
aXZlciBpbXBvcnQgRHJpdmVyT3V0cHV0CkBAIC00MywxNCArNDQsMTQgQEAgY2xhc3MgVGVzdFJl
c3VsdFdyaXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgIHVzZWRf
dG9sZXJhbmNlX3ZhbHVlcy5hcHBlbmQodG9sZXJhbmNlKQogICAgICAgICAgICAgICAgIHJldHVy
biAoVHJ1ZSwgMSkKIAotICAgICAgICBwb3J0ID0gSW1hZ2VEaWZmVGVzdFBvcnQoKQotICAgICAg
ICBmcyA9IHBvcnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAg
ICAgcG9ydCA9IEltYWdlRGlmZlRlc3RQb3J0KGhvc3QpCiAgICAgICAgIHRlc3RfbmFtZSA9ICdm
YWlsdXJlcy91bmV4cGVjdGVkL3JlZnRlc3QuaHRtbCcKLSAgICAgICAgdGVzdF9yZWZlcmVuY2Vf
ZmlsZSA9IGZzLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksICdmYWlsdXJlcy91bmV4cGVj
dGVkL3JlZnRlc3QtZXhwZWN0ZWQuaHRtbCcpCisgICAgICAgIHRlc3RfcmVmZXJlbmNlX2ZpbGUg
PSBob3N0LmZpbGVzeXN0ZW0uam9pbihwb3J0LmxheW91dF90ZXN0c19kaXIoKSwgJ2ZhaWx1cmVz
L3VuZXhwZWN0ZWQvcmVmdGVzdC1leHBlY3RlZC5odG1sJykKICAgICAgICAgZHJpdmVyX291dHB1
dDEgPSBEcml2ZXJPdXRwdXQoJ3RleHQxJywgJ2ltYWdlMScsICdpbWFnZWhhc2gxJywgJ2F1ZGlv
MScpCiAgICAgICAgIGRyaXZlcl9vdXRwdXQyID0gRHJpdmVyT3V0cHV0KCd0ZXh0MicsICdpbWFn
ZTInLCAnaW1hZ2VoYXNoMicsICdhdWRpbzInKQogICAgICAgICBmYWlsdXJlcyA9IFt0ZXN0X2Zh
aWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2godGVzdF9yZWZlcmVuY2VfZmlsZSldCi0gICAg
ICAgIHRlc3RfcmVzdWx0X3dyaXRlci53cml0ZV90ZXN0X3Jlc3VsdChJbWFnZURpZmZUZXN0UG9y
dCgpLCB0ZXN0X25hbWUsCisgICAgICAgIHRlc3RfcmVzdWx0X3dyaXRlci53cml0ZV90ZXN0X3Jl
c3VsdChJbWFnZURpZmZUZXN0UG9ydChob3N0KSwgdGVzdF9uYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyX291dHB1dDEsIGRyaXZlcl9vdXRw
dXQyLCBmYWlsdXJlcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbMF0sIHVzZWRfdG9sZXJh
bmNlX3ZhbHVlcykKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25f
cmVzdWx0c19nZW5lcmF0b3JfdW5pdHRlc3QucHkKaW5kZXggMGEzMWU0N2JiYTEyOGI4YjRmNTc5
ODc1YjljYTI0YTU5ZTExMWJmNi4uYjNlNWNiY2Q4OGM1N2VlZWY3MTVkNDlhOTI2MGNjMDM2MDYz
YjMzNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3Vs
dHNfZ2VuZXJhdG9yX3VuaXR0ZXN0LnB5CkBAIC0zMiw3ICszMiw3IEBAIGltcG9ydCB1bml0dGVz
dAogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgcmFuZG9tCiAKLWZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0
X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRf
cGFja2FnZSBpbXBvcnQganNvbl9yZXN1bHRzX2dlbmVyYXRvcgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgdGVzdApAQCAtODksOCArODksOSBAQCBjbGFzcyBKU09O
R2VuZXJhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgZmFpbGVk
PSh0ZXN0IGluIGZhaWxlZF90ZXN0cyksCiAgICAgICAgICAgICAgICAgZWxhcHNlZF90aW1lPXRl
c3RfdGltaW5nc1t0ZXN0XSkKIAorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICBw
b3J0ID0gTW9jaygpCi0gICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtX21vY2su
TW9ja0ZpbGVTeXN0ZW0oKQorICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gaG9zdC5maWxlc3lz
dGVtCiAgICAgICAgIGdlbmVyYXRvciA9IGpzb25fcmVzdWx0c19nZW5lcmF0b3IuSlNPTlJlc3Vs
dHNHZW5lcmF0b3JCYXNlKHBvcnQsCiAgICAgICAgICAgICBzZWxmLmJ1aWxkZXJfbmFtZSwgc2Vs
Zi5idWlsZF9uYW1lLCBzZWxmLmJ1aWxkX251bWJlciwKICAgICAgICAgICAgICcnLApAQCAtMjEz
LDcgKzIxNCw3IEBAIGNsYXNzIEpTT05HZW5lcmF0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgc2VsZi5fdGVzdF9qc29uX2dlbmVyYXRpb24oWydmb28vQSddLCBbJ2Zvby9CJywg
J2Jhci9DJ10pCiAKICAgICBkZWYgdGVzdF90ZXN0X3RpbWluZ3NfdHJpZShzZWxmKToKLSAgICAg
ICAgdGVzdF9wb3J0ID0gdGVzdC5UZXN0UG9ydCgpCisgICAgICAgIHRlc3RfcG9ydCA9IHRlc3Qu
VGVzdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MgPSBb
XQogICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncy5hcHBlbmQoanNvbl9yZXN1bHRzX2dl
bmVyYXRvci5UZXN0UmVzdWx0KCdmb28vYmFyL2Jhei5odG1sJywgZWxhcHNlZF90aW1lPTEuMikp
CiAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLmFwcGVuZChqc29uX3Jlc3VsdHNfZ2Vu
ZXJhdG9yLlRlc3RSZXN1bHQoJ2Jhci5odG1sJywgZWxhcHNlZF90aW1lPTAuMDAwMSkpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9l
eHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKaW5kZXggNzhkYTc0MDNl
ZDA0YjI3OTAxODc1MmRkY2YyZjFhYTA4NzgyOWEwMS4uZGE3OGVkNDE2ZmQ3YjJmNjNlYmM5NDNl
MzRkZTA1NWM3YWRhMjJkOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191
bml0dGVzdC5weQpAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBCYXNlKHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdEZ1bmMsIHNldFVwPU5vbmUsIHRlYXJEb3du
PU5vbmUsIGRlc2NyaXB0aW9uPU5vbmUpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAg
ICAgICBzZWxmLl9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0LXdpbi14cCcsIE5v
bmUpCi0gICAgICAgIHNlbGYuX2ZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQorICAgICAgICBz
ZWxmLl9mcyA9IGhvc3QuZmlsZXN5c3RlbQogICAgICAgICBzZWxmLl9leHAgPSBOb25lCiAgICAg
ICAgIHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsIHRlc3RGdW5jKQogCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5p
dHRlc3QucHkKaW5kZXggMjRjNmZjOThjZDFlOWJiMjJkMDRhNzRmMmFlM2JiNmY2Y2Y4ODlhNS4u
ZDQyYzJmMGI5ZmM5YTM1Nzk2ZjM4YzExOTJhZTE4YmZiMTFkNWE1ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVz
dC5weQpAQCAtNDcsMTAgKzQ3LDExIEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQu
dGVzdCBpbXBvcnQgVGVzdFBvcnQKIGltcG9ydCBjb25maWcKIGltcG9ydCBjb25maWdfbW9jawog
Ci0KIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgbWFrZV9wb3J0
KHNlbGYsIGhvc3Q9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBob3N0ID0gaG9zdCBvciBNb2Nr
SG9zdCgpCisgICAgZGVmIG1ha2VfcG9ydChzZWxmLCAqKmt3YXJncyk6CisgICAgICAgIGhvc3Qg
PSBNb2NrSG9zdCgpCisgICAgICAgIGlmICdleGVjdXRpdmUnIGluIGt3YXJnczoKKyAgICAgICAg
ICAgIGhvc3QuZXhlY3V0aXZlID0ga3dhcmdzWydleGVjdXRpdmUnXQogICAgICAgICByZXR1cm4g
UG9ydChob3N0LCAqKmt3YXJncykKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfY2hpbGRfcHJvY2Vz
c2VzKHNlbGYpOgpAQCAtMjAzLDExICsyMDQsOSBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kZWZhdWx0X2NvbmZpZ3Vy
YXRpb24oKSwgJ2RlZmF1bHQnKQogCiAgICAgZGVmIHRlc3RfbGF5b3V0X3Rlc3RzX3NraXBwaW5n
KHNlbGYpOgotICAgICAgICBmaWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oewotICAgICAgICAg
ICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXpvb20uaHRtbCc6ICcn
LAotICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL2Zvby9iYXIuaHRtbCc6
ICcnLAotICAgICAgICB9KQotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoZmlsZXN5c3Rl
bT1maWxlc3lzdGVtKQorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBw
b3J0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsg
Jy9tZWRpYS92aWRlby16b29tLmh0bWwnLCAnJykKKyAgICAgICAgcG9ydC5maWxlc3lzdGVtLndy
aXRlX3RleHRfZmlsZShwb3J0LmxheW91dF90ZXN0c19kaXIoKSArICcvZm9vL2Jhci5odG1sJywg
JycpCiAgICAgICAgIHBvcnQuc2tpcHBlZF9sYXlvdXRfdGVzdHMgPSBsYW1iZGE6IFsnZm9vL2Jh
ci5odG1sJywgJ21lZGlhJ10KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuc2tpcHNfbGF5
b3V0X3Rlc3QoJ2Zvby9iYXIuaHRtbCcpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5z
a2lwc19sYXlvdXRfdGVzdCgnbWVkaWEvdmlkZW8tem9vbS5odG1sJykpCkBAIC0yMTksMTEgKzIx
OCw5IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcG9ydC5z
ZXR1cF90ZXN0X3J1bigpCiAKICAgICBkZWYgdGVzdF90ZXN0X2RpcnMoc2VsZik6Ci0gICAgICAg
IGZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7Ci0gICAgICAgICAgICAnL21vY2stY2hlY2tv
dXQvTGF5b3V0VGVzdHMvY2FudmFzL3Rlc3QnOiAnJywKLSAgICAgICAgICAgICcvbW9jay1jaGVj
a291dC9MYXlvdXRUZXN0cy9jc3MyLjEvdGVzdCc6ICcnLAotICAgICAgICB9KQotICAgICAgICBw
b3J0ID0gc2VsZi5tYWtlX3BvcnQoZmlsZXN5c3RlbT1maWxlc3lzdGVtKQorICAgICAgICBwb3J0
ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRf
ZmlsZShwb3J0LmxheW91dF90ZXN0c19kaXIoKSArICcvY2FudmFzL3Rlc3QnLCAnJykKKyAgICAg
ICAgcG9ydC5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocG9ydC5sYXlvdXRfdGVzdHNfZGly
KCkgKyAnL2NzczIuMS90ZXN0JywgJycpCiAgICAgICAgIGRpcnMgPSBwb3J0LnRlc3RfZGlycygp
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnY2FudmFzJyBpbiBkaXJzKQogICAgICAgICBzZWxm
LmFzc2VydFRydWUoJ2NzczIuMScgaW4gZGlycykKQEAgLTI2MSw4ICsyNTgsNyBAQCBjbGFzcyBQ
b3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9y
dC5uYW1lKCksICdmb28nKQogCiAgICAgZGVmIHRlc3RfYWRkaXRpb25hbF9wbGF0Zm9ybV9kaXJl
Y3Rvcnkoc2VsZik6Ci0gICAgICAgIGZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSgpCi0gICAg
ICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J2ZvbycsIGZpbGVzeXN0ZW09Zmls
ZXN5c3RlbSkKKyAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nZm9vJykK
ICAgICAgICAgcG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCA9IGxhbWJkYTogWydMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9mb28nXQogICAgICAgICBsYXlvdXRfdGVzdF9kaXIgPSBwb3J0LmxheW91dF90
ZXN0c19kaXIoKQogICAgICAgICB0ZXN0X2ZpbGUgPSAnZmFzdC90ZXN0Lmh0bWwnCkBAIC0yNzUs
OSArMjcxLDcgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAg
ICMgU2ltcGxlIGFkZGl0aW9uYWwgcGxhdGZvcm0gZGlyZWN0b3J5CiAgICAgICAgIHBvcnQuX29w
dGlvbnMuYWRkaXRpb25hbF9wbGF0Zm9ybV9kaXJlY3RvcnkgPSBbJy90bXAvbG9jYWwtYmFzZWxp
bmVzJ10KLSAgICAgICAgZmlsZXN5c3RlbS5maWxlcyA9IHsKLSAgICAgICAgICAgICcvdG1wL2xv
Y2FsLWJhc2VsaW5lcy9mYXN0L3Rlc3QtZXhwZWN0ZWQudHh0JzogJ2ZvbycsCi0gICAgICAgIH0K
KyAgICAgICAgcG9ydC5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy90bXAvbG9jYWwtYmFz
ZWxpbmVzL2Zhc3QvdGVzdC1leHBlY3RlZC50eHQnLCAnZm9vJykKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKICAgICAgICAgICAgIHBvcnQuZXhwZWN0ZWRfYmFzZWxpbmVzKHRlc3RfZmlsZSwg
Jy50eHQnKSwKICAgICAgICAgICAgIFsoJy90bXAvbG9jYWwtYmFzZWxpbmVzJywgJ2Zhc3QvdGVz
dC1leHBlY3RlZC50eHQnKV0pCkBAIC0yOTEsMzYgKzI4NSwzNSBAQCBjbGFzcyBQb3J0VGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5iYXNlbGlu
ZV9wYXRoKCksICcvZm9vJykKIAogICAgIGRlZiB0ZXN0X3VzZXNfdGVzdF9leHBlY3RhdGlvbnNf
ZmlsZShzZWxmKToKLSAgICAgICAgZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKCkKLSAgICAg
ICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0nZm9vJywgZmlsZXN5c3RlbT1maWxl
c3lzdGVtKQorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSdmb28nKQog
ICAgICAgICBwb3J0LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSA9IGxhbWJkYTogJy9t
b2NrLXJlc3VsdHMvdGVzdF9leHBlY3RhdGlvbnMudHh0JwogICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKHBvcnQudXNlc190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkpCiAgICAgICAgIHBvcnQuX2Zp
bGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7Jy9tb2NrLXJlc3VsdHMvdGVzdF9leHBlY3RhdGlv
bnMudHh0JzogJyd9KQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC51c2VzX3Rlc3RfZXhw
ZWN0YXRpb25zX2ZpbGUoKSkKIAogICAgIGRlZiB0ZXN0X2ZpbmRfbm9fcGF0aHNfc3BlY2lmaWVk
KHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFBv
cnQoTW9ja0hvc3QoKSkKICAgICAgICAgbGF5b3V0X3Rlc3RzX2RpciA9IHBvcnQubGF5b3V0X3Rl
c3RzX2RpcigpCiAgICAgICAgIHRlc3RzID0gcG9ydC50ZXN0cyhbXSkKICAgICAgICAgc2VsZi5h
c3NlcnROb3RFcXVhbChsZW4odGVzdHMpLCAwKQogCiAgICAgZGVmIHRlc3RfZmluZF9vbmVfdGVz
dChzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RQb3J0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RQ
b3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIHRlc3RzID0gcG9ydC50ZXN0cyhbJ2ZhaWx1cmVzL2V4
cGVjdGVkL2ltYWdlLmh0bWwnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGVzdHMp
LCAxKQogCiAgICAgZGVmIHRlc3RfZmluZF9nbG9iKHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVz
dFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgdGVz
dHMgPSBwb3J0LnRlc3RzKFsnZmFpbHVyZXMvZXhwZWN0ZWQvaW0qJ10pCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHRlc3RzKSwgMikKIAogICAgIGRlZiB0ZXN0X2ZpbmRfd2l0aF9za2lw
cGVkX2RpcmVjdG9yaWVzKHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFBvcnQoKQorICAgICAg
ICBwb3J0ID0gVGVzdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgdGVzdHMgPSBwb3J0LnRlc3Rz
KCd1c2Vyc2NyaXB0cycpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndXNlcnNjcmlwdHMvcmVz
b3VyY2VzL2lmcmFtZS5odG1sJyBub3QgaW4gdGVzdHMpCiAKICAgICBkZWYgdGVzdF9maW5kX3dp
dGhfc2tpcHBlZF9kaXJlY3Rvcmllc18yKHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFBvcnQo
KQorICAgICAgICBwb3J0ID0gVGVzdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgdGVzdHMgPSBw
b3J0LnRlc3RzKFsndXNlcnNjcmlwdHMvcmVzb3VyY2VzJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwodGVzdHMsIHNldChbXSkpCiAKQEAgLTM0MCw3ICszMzMsNyBAQCBjbGFzcyBQb3J0VGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUG9ydC5faXNf
dGVzdF9maWxlKGZpbGVzeXN0ZW0sICcnLCAnbm90cmVmLWZvby54aHInKSkKIAogICAgIGRlZiB0
ZXN0X3BhcnNlX3JlZnRlc3RfbGlzdChzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RQb3J0KCkK
KyAgICAgICAgcG9ydCA9IFRlc3RQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIHBvcnQuaG9zdC5m
aWxlc3lzdGVtLmZpbGVzWydiYXIvcmVmdGVzdC5saXN0J10gPSAiXG4iLmpvaW4oWyI9PSB0ZXN0
Lmh0bWwgdGVzdC1yZWYuaHRtbCIsCiAgICAgICAgICIiLAogICAgICAgICAiIyBzb21lIGNvbW1l
bnQiLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9kcnlydW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Ry
eXJ1bi5weQppbmRleCA0ZGU4MjMwMWEyMTZjZmViOTdkNWU3YmI4Y2UwOTQ0ODcyZmZkNzkwLi5h
YWFmYjA5NGNmNjg3N2YwYWVhMzAwZTIzZTc1ZWExNTczMjkyYzBiIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weQpAQCAtNTMsNyAr
NTMsOSBAQCBpbXBvcnQgdGltZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBv
cnQgRHJpdmVyLCBEcml2ZXJPdXRwdXQsIGZhY3RvcnkKIAogCi0jIEZJWE1FOiBXaHkgbm90IGlu
aGVyaXQgZnJvbSBQb3J0PworIyBOb3RlIHRoYXQgd2UgZG9uJ3QgaW5oZXJpdCBmcm9tIGJhc2Uu
UG9ydCBpbiBvcmRlciBmb3IgZGVsZWdhdGlvbiB0bworIyB3b3JrIHByb3Blcmx5OiBleGNlcHQg
Zm9yIHRoZSBtZXRob2RzIGRlZmluZWQgaGVyZSwgd2Ugd2FudCB0byBlbnN1cmUgdGhhdAorIyBh
bGwgb2YgdGhlIG1ldGhvZHMgYXJlIHBhc3NlZCB0byB0aGUgX19kZWxlZ2F0ZSwgbm90IHRvIHRo
ZSBiYXNlIGNsYXNzLgogY2xhc3MgRHJ5UnVuUG9ydChvYmplY3QpOgogICAgICIiIkRyeVJ1biBp
bXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAKQEAgLTY0LDcgKzY2LDcg
QEAgY2xhc3MgRHJ5UnVuUG9ydChvYmplY3QpOgogICAgICAgICAgICAgICAgIGt3YXJnc1sncG9y
dF9uYW1lJ10gPSBrd2FyZ3NbJ3BvcnRfbmFtZSddW2xlbihwZngpOl0KICAgICAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICAgICAga3dhcmdzWydwb3J0X25hbWUnXSA9IE5vbmUKLSAgICAgICAg
c2VsZi5fX2RlbGVnYXRlID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCoqa3dhcmdzKQorICAgICAg
ICBzZWxmLl9fZGVsZWdhdGUgPSBmYWN0b3J5LlBvcnRGYWN0b3J5KGhvc3QpLmdldCgqKmt3YXJn
cykKIAogICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKICAgICAgICAgcmV0dXJuIGdl
dGF0dHIoc2VsZi5fX2RlbGVnYXRlLCBuYW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CmluZGV4
IDYxZTMxZjUyZDg5YTNiZThjNDAzYWY2MTI3ODM3MzM3OTZiODE0NGEuLjFmOWMyMzZjNmIzMjYw
NThmOGI5MTA2ZmRhMDNiZjE0ZWJiMjJkNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKQEAg
LTMwLDcgKzMwLDcgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0
cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKLWZyb20gd2Via2l0cHkuY29tbW9u
Lmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5z
eXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0CiAKIGltcG9ydCBjaHJvbWl1bV9n
cHUKIGltcG9ydCBjaHJvbWl1bV9saW51eApAQCAtNTksMTUgKzU5LDExIEBAIGNsYXNzIEZhY3Rv
cnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5yZWFsX3N5c19wbGF0Zm9y
bSA9IHN5cy5wbGF0Zm9ybQogICAgICAgICBzZWxmLndlYmtpdF9vcHRpb25zID0gTW9ja09wdGlv
bnMocGl4ZWxfdGVzdHM9RmFsc2UpCiAgICAgICAgIHNlbGYuY2hyb21pdW1fb3B0aW9ucyA9IE1v
Y2tPcHRpb25zKHBpeGVsX3Rlc3RzPUZhbHNlLCBjaHJvbWl1bT1UcnVlKQorICAgICAgICBzZWxm
LmZhY3RvcnkgPSBmYWN0b3J5LlBvcnRGYWN0b3J5KE1vY2tTeXN0ZW1Ib3N0KCkpCiAKICAgICBk
ZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IHNlbGYucmVhbF9zeXNf
cGxhdGZvcm0KIAotICAgIGRlZiBtYWtlX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGhvc3QgPSBN
b2NrSG9zdCgpCi0gICAgICAgICMgVGhlIFBvcnRGYWN0b3J5IG9uIE1vY2tIb3N0IGlzIGEgcmVh
bCBQb3J0RmFjdG9yeSB3aXRoIGEgTW9ja0ZpbGVTeXN0ZW0sIGV0Yy4KLSAgICAgICAgcmV0dXJu
IGhvc3QucG9ydF9mYWN0b3J5Ci0KICAgICBkZWYgYXNzZXJ0X3BvcnQoc2VsZiwgcG9ydF9uYW1l
LCBleHBlY3RlZF9wb3J0LCBwb3J0X29iaj1Ob25lKToKICAgICAgICAgIiIiSGVscGVyIGFzc2Vy
dCBmb3IgcG9ydF9uYW1lLgogCkBAIC03Niw3ICs3Miw3IEBAIGNsYXNzIEZhY3RvcnlUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICBleHBlY3RlZF9wb3J0OiBjbGFzcyBvZiBleHBl
Y3RlZCBwb3J0IG9iamVjdC4KICAgICAgICAgICBwb3J0X29iajogb3B0aW9uYWwgcG9ydCBvYmpl
Y3QKICAgICAgICAgIiIiCi0gICAgICAgIHBvcnRfb2JqID0gcG9ydF9vYmogb3Igc2VsZi5tYWtl
X2ZhY3RvcnkoKS5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZSkKKyAgICAgICAgcG9ydF9vYmogPSBw
b3J0X29iaiBvciBzZWxmLmZhY3RvcnkuZ2V0KHBvcnRfbmFtZT1wb3J0X25hbWUpCiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHBvcnRfb2JqLCBleHBlY3RlZF9wb3J0KSkKIAog
ICAgIGRlZiBhc3NlcnRfcGxhdGZvcm1fcG9ydChzZWxmLCBwbGF0Zm9ybSwgb3B0aW9ucywgZXhw
ZWN0ZWRfcG9ydCk6CkBAIC05Miw3ICs4OCw3IEBAIGNsYXNzIEZhY3RvcnlUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgb3JpZ19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQogICAgICAg
ICBzeXMucGxhdGZvcm0gPSBwbGF0Zm9ybQogICAgICAgICAjIEZJWE1FOiBXZSBuZWVkIGEgYmV0
dGVyIHdheSB0byBtb2NrIHRoaXMuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNl
KHNlbGYubWFrZV9mYWN0b3J5KCkuZ2V0KG9wdGlvbnM9b3B0aW9ucyksIGV4cGVjdGVkX3BvcnQp
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLmZhY3RvcnkuZ2V0KG9w
dGlvbnM9b3B0aW9ucyksIGV4cGVjdGVkX3BvcnQpKQogICAgICAgICBzeXMucGxhdGZvcm0gPSBv
cmlnX3BsYXRmb3JtCiAKICAgICBkZWYgdGVzdF9tYWMoc2VsZik6CkBAIC0xNTMsMTMgKzE0OSwx
MyBAQCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVz
dF91bmtub3duX3NwZWNpZmllZChzZWxmKToKICAgICAgICAgIyBUZXN0IHdoYXQgaGFwcGVucyB3
aGVuIHlvdSBzcGVjaWZ5IGFuIHVua25vd24gcG9ydC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgc2VsZi5tYWtlX2ZhY3RvcnkoKS5nZXQsIHBvcnRfbmFt
ZT0ndW5rbm93bicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJy
b3IsIHNlbGYuZmFjdG9yeS5nZXQsIHBvcnRfbmFtZT0ndW5rbm93bicpCiAKICAgICBkZWYgdGVz
dF91bmtub3duX2RlZmF1bHQoc2VsZik6CiAgICAgICAgICMgVGVzdCB3aGF0IGhhcHBlbnMgd2hl
biB5b3UncmUgcnVubmluZyBvbiBhbiB1bmtub3duIHBsYXRmb3JtLgogICAgICAgICBvcmlnX3Bs
YXRmb3JtID0gc3lzLnBsYXRmb3JtCiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9ICd1bmtub3duJwot
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzZWxmLm1ha2Vf
ZmFjdG9yeSgpLmdldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRF
cnJvciwgc2VsZi5mYWN0b3J5LmdldCkKICAgICAgICAgc3lzLnBsYXRmb3JtID0gb3JpZ19wbGF0
Zm9ybQogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weQppbmRleCBlMzE3ZTEy
YzViZTdmZWZiYzE3MDg0ZTRjZjM3ZmE4MDhiMDVmMjEzLi4zNmU0YWI2YWE3MTczN2FmOTgzODNk
MjFiNjM2YmJmZGU3N2Y4ZWIzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lX3VuaXR0ZXN0LnB5
CkBAIC0yNywxMSArMjcsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29t
bW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKLQotCi1pbXBv
cnQgZ29vZ2xlX2Nocm9tZQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQg
Z29vZ2xlX2Nocm9tZQogCiAKIGNsYXNzIEdldEdvb2dsZUNocm9tZVBvcnRUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKQEAgLTU5LDcgKzU1LDcgQEAgY2xhc3MgR2V0R29vZ2xlQ2hyb21lUG9ydFRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAg
ICBjaHJvbWl1bV9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCJjaHJvbWl1bS1jZy1tYWMi
KQogICAgICAgICBjaHJvbWl1bV9iYXNlID0gY2hyb21pdW1fcG9ydC5wYXRoX2Zyb21fY2hyb21p
dW1fYmFzZSgpCi0gICAgICAgIHBvcnQgPSBnb29nbGVfY2hyb21lLkdldEdvb2dsZUNocm9tZVBv
cnQocG9ydF9uYW1lPXBvcnRfbmFtZSwgb3B0aW9ucz1Ob25lLCBob3N0PWhvc3QpCisgICAgICAg
IHBvcnQgPSBnb29nbGVfY2hyb21lLkdldEdvb2dsZUNocm9tZVBvcnQoaG9zdCwgcG9ydF9uYW1l
PXBvcnRfbmFtZSwgb3B0aW9ucz1Ob25lKQogCiAgICAgICAgIGV4cGVjdGVkX2Nocm9taXVtX292
ZXJyaWRlcyA9ICcvLyBjaHJvbWl1bSBvdmVycmlkZXNcbicKICAgICAgICAgZXhwZWN0ZWRfY2hy
b21lX292ZXJyaWRlcyA9ICcvLyBjaHJvbWUgb3ZlcnJpZGVzXG4nCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydF91bml0
dGVzdC5weQppbmRleCA1NjdjMDg3NmNjMWUzYmZlZDcyNmUyYTAyZDgyMzU1OTYyYzMyZDRmLi5m
ODEyOTU4NDA3MWQ0MDJlYWE2Mzg1NGUzZmMzNDFlODQxOGVkZWE2IDEwMDc1NQotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRf
dW5pdHRlc3QucHkKQEAgLTQ2LDEwICs0NiwxMSBAQCBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5N
b2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJykKIAogY2xhc3MgTW9ja0RSVFBvcnRU
ZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9wb3J0KHNlbGYs
IG9wdGlvbnM9bW9ja19vcHRpb25zKToKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAg
ICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgICAgICAjIFdlIHVzZSB0aGlz
IGJlY2F1c2UgdGhlICd3aW4nIHBvcnQgZG9lc24ndCB3b3JrIHlldC4KLSAgICAgICAgICAgIHJl
dHVybiBtb2NrX2RydC5Nb2NrRFJUUG9ydChNb2NrSG9zdCgpLCBwb3J0X25hbWU9J21vY2stY2hy
b21pdW0td2luJywgb3B0aW9ucz1vcHRpb25zKQotICAgICAgICByZXR1cm4gbW9ja19kcnQuTW9j
a0RSVFBvcnQoTW9ja0hvc3QoKSwgb3B0aW9ucz1vcHRpb25zKQorICAgICAgICAgICAgcmV0dXJu
IG1vY2tfZHJ0Lk1vY2tEUlRQb3J0KGhvc3QsIHBvcnRfbmFtZT0nbW9jay1jaHJvbWl1bS13aW4n
LCBvcHRpb25zPW9wdGlvbnMpCisgICAgICAgIHJldHVybiBtb2NrX2RydC5Nb2NrRFJUUG9ydCho
b3N0LCBvcHRpb25zPW9wdGlvbnMpCiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X3dvcmtlcl9tb2Rl
bChzZWxmKToKICAgICAgICAgIyBvbmx5IG92ZXJyaWRkaW5nIHRoZSBkZWZhdWx0IHRlc3Q7IHdl
IGRvbid0IGNhcmUgYWJvdXQgdGhpcyBvbmUuCkBAIC0xMzcsMTAgKzEzOCw5IEBAIGNsYXNzIE1v
Y2tEUlRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAgICAgJyNFT0Zc
bicsCiAgICAgICAgICAgICAgICAgICAgICcjRU9GXG4nXQogCi0gICAgZGVmIGFzc2VydFRlc3Qo
c2VsZiwgdGVzdF9uYW1lLCBwaXhlbF90ZXN0cywgZXhwZWN0ZWRfY2hlY2tzdW09Tm9uZSwgZHJ0
X291dHB1dD1Ob25lLCBmaWxlc3lzdGVtPU5vbmUpOgorICAgIGRlZiBhc3NlcnRUZXN0KHNlbGYs
IHRlc3RfbmFtZSwgcGl4ZWxfdGVzdHMsIGV4cGVjdGVkX2NoZWNrc3VtPU5vbmUsIGRydF9vdXRw
dXQ9Tm9uZSwgaG9zdD1Ob25lKToKICAgICAgICAgcG9ydF9uYW1lID0gJ3Rlc3QnCi0gICAgICAg
IGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAgIGhvc3QuZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0g
b3IgdGVzdC51bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIGhvc3QgPSBob3N0IG9yIE1v
Y2tIb3N0KCkKICAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWUp
CiAgICAgICAgIGRydF9pbnB1dCwgZHJ0X291dHB1dCA9IHNlbGYubWFrZV9pbnB1dF9vdXRwdXQo
cG9ydCwgdGVzdF9uYW1lLAogICAgICAgICAgICAgcGl4ZWxfdGVzdHMsIGV4cGVjdGVkX2NoZWNr
c3VtLCBkcnRfb3V0cHV0KQpAQCAtMTYzLDcgKzE2Myw2IEBAIGNsYXNzIE1vY2tEUlRUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X21haW4oc2VsZik6CiAgICAgICAgIGhv
c3QgPSBNb2NrSG9zdCgpCi0gICAgICAgIGhvc3QuZmlsZXN5c3RlbSA9IHRlc3QudW5pdF90ZXN0
X2ZpbGVzeXN0ZW0oKQogICAgICAgICBzdGRpbiA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKCkKICAg
ICAgICAgc3Rkb3V0ID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQogICAgICAgICBzdGRlcnIgPSBu
ZXdzdHJpbmdpby5TdHJpbmdJTygpCkBAIC0yMzYsNyArMjM1LDcgQEAgY2xhc3MgTW9ja0Nocm9t
aXVtRFJUVGVzdChNb2NrRFJUVGVzdCk6CiAgICAgICAgICAgICAgICAgICAgICcjRU9GXG4nXQog
CiAgICAgZGVmIHRlc3RfcGl4ZWx0ZXN0X19mYWlscyhzZWxmKToKLSAgICAgICAgZmlsZXN5c3Rl
bSA9IHRlc3QudW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBob3N0ID0gTW9ja0hvc3Qo
KQogICAgICAgICBzZWxmLmFzc2VydFRlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL2NoZWNrc3VtLmh0
bWwnLCBwaXhlbF90ZXN0cz1UcnVlLAogICAgICAgICAgICAgZXhwZWN0ZWRfY2hlY2tzdW09J3dy
b25nLWNoZWNrc3VtJywKICAgICAgICAgICAgIGRydF9vdXRwdXQ9WycjVVJMOmZpbGU6Ly8vdGVz
dC5jaGVja291dC9MYXlvdXRUZXN0cy9mYWlsdXJlcy9leHBlY3RlZC9jaGVja3N1bS5odG1sXG4n
LApAQCAtMjQ0LDggKzI0Myw4IEBAIGNsYXNzIE1vY2tDaHJvbWl1bURSVFRlc3QoTW9ja0RSVFRl
c3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtLXR4dCcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAnXG4nLAogICAgICAgICAgICAgICAgICAgICAgICAgJyNFT0ZcbiddLAot
ICAgICAgICAgICAgZmlsZXN5c3RlbT1maWxlc3lzdGVtKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhmaWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMsCisgICAgICAgICAgICBob3N0PWhvc3QpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGhvc3QuZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLAog
ICAgICAgICAgICAgeycvdG1wL3BuZ19yZXN1bHQwLnBuZyc6ICdjaGVja3N1bVx4OGEtcG5ndEVY
dGNoZWNrc3VtXHgwMGNoZWNrc3VtLWNoZWNrc3VtJ30pCiAKICAgICBkZWYgdGVzdF9jaHJvbWl1
bV9wYXJzZV9vcHRpb25zKHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9xdF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHkKaW5kZXggZDY0NDYzMmQxMGQyMjE0
NTMxN2VkNTNjOTAyZGFlZGY3YjkzYWMzYy4uNWIyZGVjNjg0YWY5YTUwYTZlZWY3ODI5NDNhY2Ey
YWM0NDZlZDFkYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9xdF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3F0X3VuaXR0ZXN0LnB5CkBAIC0yOSw3ICsyOSw2IEBACiBpbXBvcnQgdW5p
dHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9y
dCBNb2NrRXhlY3V0aXZlMgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1f
bW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5v
dXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0LnF0IGltcG9ydCBRdFBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBv
cnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKQEAgLTQ1LDEwICs0NCw5IEBAIGNsYXNzIFF0UG9ydFRl
c3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICAjIEZJWE1FOiBQb3J0IGNv
bnN0cnVjdG9ycyBzaG91bGQgbm90ICJwYXJzZSIgdGhlIHBvcnQgbmFtZSwgYnV0CiAgICAgICAg
ICMgcmF0aGVyIGJlIHBhc3NlZCBjb21wb25lbnRzIChkaXJlY3RseSBvciB2aWEgc2V0dGVycyku
ICBPbmNlCiAgICAgICAgICMgd2UgZml4IHRoYXQsIHRoaXMgbWV0aG9kIHdpbGwgbmVlZCBhIHJl
LXdyaXRlLgotICAgICAgICBwb3J0ID0gUXRQb3J0KHN5c19wbGF0Zm9ybT1zeXNfcGxhdGZvcm0s
Ci0gICAgICAgICAgICBvcHRpb25zPU1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj11c2Vf
d2Via2l0MiwgcGxhdGZvcm09J3F0JyksCi0gICAgICAgICAgICBob3N0PU1vY2tIb3N0KCksCi0g
ICAgICAgICAgICBleGVjdXRpdmU9TW9ja0V4ZWN1dGl2ZTIoc2VsZi5fcXRfdmVyc2lvbihxdF92
ZXJzaW9uKSkpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIGhvc3QuZXhlY3V0
aXZlID0gTW9ja0V4ZWN1dGl2ZTIoc2VsZi5fcXRfdmVyc2lvbihxdF92ZXJzaW9uKSkKKyAgICAg
ICAgcG9ydCA9IFF0UG9ydChob3N0LCBzeXNfcGxhdGZvcm09c3lzX3BsYXRmb3JtLCBvcHRpb25z
PU1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj11c2Vfd2Via2l0MiwgcGxhdGZvcm09J3F0
JykpCiAgICAgICAgIGFic29sdXRlX3NlYXJjaF9wYXRocyA9IG1hcChwb3J0Ll93ZWJraXRfYmFz
ZWxpbmVfcGF0aCwgc2VhcmNoX3BhdGhzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0
LmJhc2VsaW5lX3NlYXJjaF9wYXRoKCksIGFic29sdXRlX3NlYXJjaF9wYXRocykKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtp
dF91bml0dGVzdC5weQppbmRleCBjYzhmZjgzOTE4NjQzNTgwODdhMjA2M2IwYWI3ZTk3ZTUyYjc3
MDRmLi45NDAyMGRlNThlZDVlM2I2YzA1MjI0NTdkYmVlM2M2ZThiYTQzNzM4IDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVz
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtp
dF91bml0dGVzdC5weQpAQCAtNDEsMTMgKzQxLDEyIEBAIGZyb20gd2Via2l0cHkudG9vbC5tb2Nr
dG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKIGNsYXNzIFRlc3RXZWJLaXRQb3J0KFdlYktpdFBvcnQp
OgogICAgIHBvcnRfbmFtZSA9ICJ0ZXN0d2Via2l0cG9ydCIKIAotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBzeW1ib2xzX3N0cmluZz1Ob25lLCBmZWF0dXJlX2xpc3Q9Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgZXhwZWN0YXRpb25zX2ZpbGU9Tm9uZSwgc2tpcHNfZmlsZT1Ob25lLCBob3N0PU5vbmUs
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHN5bWJvbHNfc3RyaW5nPU5vbmUsIGZlYXR1
cmVfbGlzdD1Ob25lLAorICAgICAgICAgICAgICAgICBleHBlY3RhdGlvbnNfZmlsZT1Ob25lLCBz
a2lwc19maWxlPU5vbmUsCiAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKICAgICAgICAgc2Vs
Zi5zeW1ib2xzX3N0cmluZyA9IHN5bWJvbHNfc3RyaW5nICAjIFBhc3NpbmcgIiIgZGlzYWJsZXMg
YWxsIHN0YXRpY2x5LWRldGVjdGFibGUgZmVhdHVyZXMuCiAgICAgICAgIHNlbGYuZmVhdHVyZV9s
aXN0ID0gZmVhdHVyZV9saXN0ICAjIFBhc3NpbmcgW10gZGlzYWJsZXMgYWxsIHJ1bnRpbWUtZGV0
ZWN0YWJsZSBmZWF0dXJlcy4KLSAgICAgICAgaG9zdCA9IGhvc3Qgb3IgTW9ja0hvc3QoKQotICAg
ICAgICBXZWJLaXRQb3J0Ll9faW5pdF9fKHNlbGYsIGhvc3Q9aG9zdCwgKiprd2FyZ3MpCisgICAg
ICAgIFdlYktpdFBvcnQuX19pbml0X18oc2VsZiwgaG9zdCwgKiprd2FyZ3MpCiAKICAgICBkZWYg
YWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoc2VsZik6CiAgICAgICAgIHJldHVybiBbVGVzdENvbmZp
Z3VyYXRpb24uZnJvbV9wb3J0KHNlbGYpXQpAQCAtMTAzLDcgKzEwMiw3IEBAIGNsYXNzIFdlYktp
dFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICAgICAgICAgICJtaHRt
bCIsICAjIFJlcXVpcmVzIE1IVE1MQXJjaGl2ZQogICAgICAgICBdKQogCi0gICAgICAgIHJlc3Vs
dF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9ydChzeW1ib2xzX3N0cmluZywgTm9uZSku
X3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKCkpCisgICAgICAgIHJlc3Vs
dF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpLCBzeW1ib2xzX3N0
cmluZywgTm9uZSkuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKCkpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJl
Y3RvcmllcykKIAogICAgICAgICAjIFRlc3QgdGhhdCB0aGUgbm0gc3RyaW5nIHBhcnNpbmcgYWN0
dWFsbHkgd29ya3M6CkBAIC0xMTQsNyArMTEzLDcgQEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9y
dF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogIiIiCiAgICAgICAgICMgTm90ZSAnY29tcG9zaXRp
bmcnIGlzIG5vdCBpbiB0aGUgbGlzdCBvZiBza2lwcGVkIGRpcmVjdG9yaWVzIChoZW5jZSB0aGUg
cGFyc2luZyBvZiBHcmFwaGljc0xheWVyIHdvcmtlZCk6CiAgICAgICAgIGV4cGVjdGVkX2RpcmVj
dG9yaWVzID0gc2V0KFsnbWF0aG1sJywgJ3RyYW5zZm9ybXMvM2QnLCAnY29tcG9zaXRpbmcvd2Vi
Z2wnLCAnZmFzdC9jYW52YXMvd2ViZ2wnLCAnYW5pbWF0aW9ucy8zZCcsICdtaHRtbCcsICdodHRw
L3Rlc3RzL2NhbnZhcy93ZWJnbCddKQotICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQo
VGVzdFdlYktpdFBvcnQoc3ltYm9sc19zdHJpbmcsIE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91
bnN1cHBvcnRlZF9mZWF0dXJlcygpKQorICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQo
VGVzdFdlYktpdFBvcnQoTW9ja0hvc3QoKSwgc3ltYm9sc19zdHJpbmcsIE5vbmUpLl9za2lwcGVk
X3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcygpKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCiAKICAgICBkZWYg
dGVzdF9ydW50aW1lX2ZlYXR1cmVfbGlzdChzZWxmKToKQEAgLTEyOCwxNCArMTI3LDE0IEBAIGNs
YXNzIFdlYktpdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICBkZWYg
dGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlcyhzZWxmKToKICAgICAgICAgc3Vw
cG9ydGVkX2ZlYXR1cmVzID0gWyJBY2NlbGVyYXRlZCBDb21wb3NpdGluZyIsICJGb28gRmVhdHVy
ZSJdCiAgICAgICAgIGV4cGVjdGVkX2RpcmVjdG9yaWVzID0gc2V0KFsiYW5pbWF0aW9ucy8zZCIs
ICJ0cmFuc2Zvcm1zLzNkIl0pCi0gICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0
V2ViS2l0UG9ydChOb25lLCBzdXBwb3J0ZWRfZmVhdHVyZXMpLl9za2lwcGVkX3Rlc3RzX2Zvcl91
bnN1cHBvcnRlZF9mZWF0dXJlcygpKQorICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQo
VGVzdFdlYktpdFBvcnQoTW9ja0hvc3QoKSwgTm9uZSwgc3VwcG9ydGVkX2ZlYXR1cmVzKS5fc2tp
cHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXMoKSkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXN1bHRfZGlyZWN0b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVzKQogCiAgICAg
ZGVmIHRlc3Rfc2tpcHBlZF9sYXlvdXRfdGVzdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoVGVzdFdlYktpdFBvcnQoTm9uZSwgTm9uZSkuc2tpcHBlZF9sYXlvdXRfdGVzdHMoKSwg
c2V0KFsnbWVkaWEnXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVGVzdFdlYktpdFBvcnQo
TW9ja0hvc3QoKSwgTm9uZSwgTm9uZSkuc2tpcHBlZF9sYXlvdXRfdGVzdHMoKSwgc2V0KFsnbWVk
aWEnXSkpCiAKICAgICBkZWYgdGVzdF9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKHNlbGYpOgot
ICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFdlYktp
dFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9za2lwcGVk
X2ZpbGVfc2VhcmNoX3BhdGhzKCksIHNldChbJ3Rlc3R3ZWJraXRwb3J0J10pKQogICAgICAgICBw
b3J0Ll9uYW1lID0gInRlc3R3ZWJraXRwb3J0LXZlcnNpb24iCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocG9ydC5fc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocygpLCBzZXQoWyd0ZXN0d2Via2l0
cG9ydCcsICd0ZXN0d2Via2l0cG9ydC12ZXJzaW9uJ10pKQpAQCAtMTQzLDIyICsxNDIsMjIgQEAg
Y2xhc3MgV2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoKSwgc2V0
KFsndGVzdHdlYmtpdHBvcnQnLCAndGVzdHdlYmtpdHBvcnQtdmVyc2lvbicsICd0ZXN0d2Via2l0
cG9ydC13azInLCAnd2syJ10pKQogCiAgICAgZGVmIHRlc3Rfcm9vdF9vcHRpb24oc2VsZik6Ci0g
ICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0
UG9ydChNb2NrSG9zdCgpKQogICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMocm9v
dD0nL2ZvbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5fcGF0aF90b19kcml2ZXIo
KSwgIi9mb28vRHVtcFJlbmRlclRyZWUiKQogCiAgICAgZGVmIHRlc3RfdGVzdF9leHBlY3RhdGlv
bnMoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSByZWFkIHRoZSBleHBlY3RhdGlvbnMg
ZmlsZQotICAgICAgICBmaWxlcyA9IHsKLSAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS90ZXN0d2Via2l0cG9ydC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnOiAn
QlVHX1RFU1RFWFBFQ1RBVElPTlMgU0tJUCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRt
bCA9IEZBSUxcbicsCi0gICAgICAgIH0KLSAgICAgICAgbW9ja19mcyA9IE1vY2tGaWxlU3lzdGVt
KGZpbGVzKQotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoZmlsZXN5c3RlbT1tb2NrX2Zz
KQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBob3N0LmZpbGVzeXN0ZW0ud3Jp
dGVfdGV4dF9maWxlKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS90ZXN0d2Vi
a2l0cG9ydC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnLAorICAgICAgICAgICAgJ0JVR19URVNURVhQ
RUNUQVRJT05TIFNLSVAgOiBmYXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwgPSBGQUlMXG4n
KQorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoaG9zdCkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwb3J0LnRlc3RfZXhwZWN0YXRpb25zKCksICdCVUdfVEVTVEVYUEVDVEFUSU9OUyBT
S0lQIDogZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sID0gRkFJTFxuJykKIAogICAgIGRl
ZiB0ZXN0X2J1aWxkX2RyaXZlcihzZWxmKToKICAgICAgICAgb3V0cHV0ID0gT3V0cHV0Q2FwdHVy
ZSgpCi0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIGhvc3QgPSBNb2Nr
SG9zdCgpCisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChob3N0KQogICAgICAgICAjIERl
bGF5IHNldHRpbmcgX2V4ZWN1dGl2ZSB0byBhdm9pZCBsb2dnaW5nIGR1cmluZyBjb25zdHJ1Y3Rp
b24KICAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRy
dWUpCiAgICAgICAgIHBvcnQuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSJS
ZWxlYXNlIikgICMgVGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSwgYnV0IEkgdGhpbmsgVGVz
dFdlYktpdFBvcnQgaXMgYWN0dWFsbHkgcmVhZGluZyBmcm9tIGRpc2sgKGFuZCB0aHVzIGRldGVj
dHMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbikuCkBAIC0xODksNyArMTg4LDcgQEAgY2xhc3Mg
V2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhwb3J0Ll9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0o
cGxhdGZvcm0pLCBjb25maWdfZmlsZSkKIAogICAgIGRlZiB0ZXN0X2xpbnV4X2Rpc3Ryb19kZXRl
Y3Rpb24oc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHBv
cnQgPSBUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KHBvcnQuX2lzX3JlZGhhdF9iYXNlZCgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQu
X2lzX2RlYmlhbl9iYXNlZCgpKQogCkBAIC0yMDIsNyArMjAxLDcgQEAgY2xhc3MgV2ViS2l0UG9y
dFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFRy
dWUocG9ydC5faXNfZGViaWFuX2Jhc2VkKCkpCiAKICAgICBkZWYgdGVzdF9hcGFjaGVfY29uZmln
X2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0oc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0
UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChNb2NrSG9zdCgpKQogICAgICAg
ICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdjeWd3aW4nLCAn
Y3lnd2luLWh0dHBkLmNvbmYnKQogCiAgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9m
b3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4MicsICdhcGFjaGUyLWh0dHBkLmNvbmYnKQpAQCAtMjEx
LDcgKzIxMCw3IEBAIGNsYXNzIFdlYktpdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RD
YXNlKToKICAgICAgICAgcG9ydC5faXNfcmVkaGF0X2Jhc2VkID0gbGFtYmRhOiBUcnVlCiAgICAg
ICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4Mics
ICdmZWRvcmEtaHR0cGQuY29uZicpCiAKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkK
KyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIHBvcnQu
X2lzX2RlYmlhbl9iYXNlZCA9IGxhbWJkYTogVHJ1ZQogICAgICAgICBzZWxmLl9hc3NlcnRfY29u
ZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdsaW51eDInLCAnYXBhY2hlMi1kZWJpYW4taHR0
cGQuY29uZicpCiAKQEAgLTIyMCw3ICsyMTksNyBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0
X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmls
ZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2JhcmYnLCAnYXBhY2hlMi1odHRwZC5jb25mJykKIAogICAg
IGRlZiB0ZXN0X3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKHNlbGYpOgotICAgICAgICBwb3J0
ID0gVGVzdFdlYktpdFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoTW9ja0hv
c3QoKSkKICAgICAgICAgIyBNb2NrIG91dCBfYXBhY2hlX2NvbmZpZ19maWxlX25hbWVfZm9yX3Bs
YXRmb3JtIHRvIGlnbm9yZSB0aGUgcGFzc2VkIHN5cy5wbGF0Zm9ybSB2YWx1ZS4KICAgICAgICAg
cG9ydC5fYXBhY2hlX2NvbmZpZ19maWxlX25hbWVfZm9yX3BsYXRmb3JtID0gbGFtYmRhIHBsYXRm
b3JtOiAnaHR0cGQuY29uZicKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5fcGF0aF90
b19hcGFjaGVfY29uZmlnX2ZpbGUoKSwgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL2h0dHAv
Y29uZi9odHRwZC5jb25mJykKQEAgLTI0OCw3ICsyNDcsNyBAQCBjbGFzcyBNb2NrU2VydmVyUHJv
Y2VzcyhvYmplY3QpOgogCiBjbGFzcyBXZWJLaXREcml2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgdGVzdF9yZWFkX2Jsb2NrKHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFdl
YktpdFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoTW9ja0hvc3QoKSkKICAg
ICAgICAgZHJpdmVyID0gV2ViS2l0RHJpdmVyKHBvcnQsIDAsIHBpeGVsX3Rlc3RzPUZhbHNlKQog
ICAgICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzID0gTW9ja1NlcnZlclByb2Nlc3MoWwogICAg
ICAgICAgICAgJ0FjdHVhbEhhc2g6IGZvb2JhcicsCkBAIC0yNjIsNyArMjYxLDcgQEAgY2xhc3Mg
V2ViS2l0RHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGNvbnRlbnRfYmxvY2suY29udGVudF9oYXNoLCAnZm9vYmFyJykKIAogICAgIGRlZiB0
ZXN0X3JlYWRfYmluYXJ5X2Jsb2NrKHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBv
cnQoKQorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAg
ZHJpdmVyID0gV2ViS2l0RHJpdmVyKHBvcnQsIDAsIHBpeGVsX3Rlc3RzPVRydWUpCiAgICAgICAg
IGRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSBNb2NrU2VydmVyUHJvY2VzcyhbCiAgICAgICAgICAg
ICAnQWN0dWFsSGFzaDogYWN0dWFsJywKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IDY1NDI0ZjVi
ZTliYmNlZTdiNzE5M2I1ZmIyNDY4YjVjNjNjNTdkZWUuLmY3YzBiZmNiOGFlM2VlZDBlNTExM2Y5
OGIyYjkyZTE1OTM5MGI0MTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtNjcsMTUgKzY3LDE1
IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICAgICBf
bG9nLndhcm4oIkV4Y2VwdGlvbiB3aGlsZSBnZXR0aW5nIHBvcnQgZm9yIHBhdGggJXMiICUgZXhw
ZWN0YXRpb25zX3BhdGgpCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IsIGhvc3Q9Tm9uZSk6CiAgICAg
ICAgIHNlbGYuX2ZpbGVfcGF0aCA9IGZpbGVfcGF0aAogICAgICAgICBzZWxmLl9oYW5kbGVfc3R5
bGVfZXJyb3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxl
X2Vycm9yLnR1cm5fb2ZmX2xpbmVfZmlsdGVyaW5nKCkKICAgICAgICAgc2VsZi5fdGFiX2NoZWNr
ZXIgPSBUYWJDaGVja2VyKGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQogICAgICAgICBz
ZWxmLl9vdXRwdXRfcmVnZXggPSByZS5jb21waWxlKCdMaW5lOig/UDxsaW5lPlxkKylccyooP1A8
bWVzc2FnZT4uKyknKQogCi0gICAgICAgICMgRklYTUU6IEEgaG9zdCBzaG91bGQgYmUgcGFzc2Vk
IHRvIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIQotICAgICAgICBob3N0ID0gSG9zdCgpCisgICAg
ICAgICMgRklYTUU6IGhvc3Qgc2hvdWxkIGJlIGEgcmVxdWlyZWQgcGFyYW1ldGVyLCBub3QgYW4g
b3B0aW9uYWwgb25lLgorICAgICAgICBob3N0ID0gaG9zdCBvciBIb3N0KCkKICAgICAgICAgaG9z
dC5faW5pdGlhbGl6ZV9zY20oKQogCiAgICAgICAgICMgRGV0ZXJtaW5pbmcgdGhlIHBvcnQgb2Yg
dGhpcyBleHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpp
bmRleCBkMzAwNDMzNzU4Y2VkOWUxOTc2M2M1Y2I3YzJjNzNiNjVjM2M2NTFiLi45MmQxZmU2Mjhh
M2UwZjEzODJkNWM2YWI1NGVjZDE5MzUzZDcyMzQ1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlv
bnNfdW5pdHRlc3QucHkKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc1Rl
c3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBfZXhwZWN0X3BvcnRfZm9yX2V4
cGVjdGF0aW9uc19wYXRoKHNlbGYsIGV4cGVjdGVkX3BvcnRfb3JfcG9ydF9jbGFzcywgZXhwZWN0
YXRpb25zX3BhdGgpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICBjaGVja2Vy
ID0gVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIoZXhwZWN0YXRpb25zX3BhdGgsIEVycm9yQ29sbGVj
dG9yKCkpCisgICAgICAgIGNoZWNrZXIgPSBUZXN0RXhwZWN0YXRpb25zQ2hlY2tlcihleHBlY3Rh
dGlvbnNfcGF0aCwgRXJyb3JDb2xsZWN0b3IoKSwgaG9zdD1ob3N0KQogICAgICAgICBwb3J0ID0g
Y2hlY2tlci5fZGV0ZXJtaW5lX3BvcnRfZnJvbV9leGVwZWN0YXRpb25zX3BhdGgoaG9zdCwgZXhw
ZWN0YXRpb25zX3BhdGgpCiAgICAgICAgIGlmIHBvcnQ6CiAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhwb3J0Ll9fY2xhc3NfXy5fX25hbWVfXywgZXhwZWN0ZWRfcG9ydF9vcl9wb3J0X2Ns
YXNzKQpAQCAtNzksNyArNzksNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zVGVzdENhc2UodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBhc3NlcnRfbGluZXNfbGludChzZWxmLCBsaW5lcywg
ZXhwZWN0ZWQpOgogICAgICAgICBzZWxmLl9lcnJvcl9jb2xsZWN0b3IucmVzZXRfZXJyb3JzKCkK
ICAgICAgICAgY2hlY2tlciA9IFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyKCd0ZXN0L3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9lcnJvcl9jb2xsZWN0b3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9lcnJvcl9jb2xsZWN0b3IsIGhvc3Q9TW9ja0hvc3QoKSkKICAgICAg
ICAgY2hlY2tlci5jaGVja190ZXN0X2V4cGVjdGF0aW9ucyhleHBlY3RhdGlvbnNfc3RyPSdcbicu
am9pbihsaW5lcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dHM9W3NlbGYuX3Rlc3RfZmlsZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3ZlcnJpZGVzPU5vbmUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5weQppbmRl
eCA2OWE0NDA5YmQxYTQ0ODdkZjA2YmM1MTdiNTY4NWQ1OTZiMTMxOGIzLi5iMDJkMWQzNTc5NTA2
M2QxMDU5YjMyNGZlYmNiMjdlMzVhZDc5MjQzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXJfdW5pdHRl
c3QucHkKQEAgLTM1LDkgKzM1LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGltcG9ydCB3
ZWJraXRweS50aGlyZHBhcnR5LnNpbXBsZWpzb24gYXMganNvbgogCiAKLWZyb20gd2Via2l0cHku
Y29tbW9uLmNoZWNrb3V0LnNjbS5zY21fbW9jayBpbXBvcnQgTW9ja1NDTQogZnJvbSB3ZWJraXRw
eS5jb21tb24ubmV0IGltcG9ydCByZXN1bHRzanNvbnBhcnNlcl91bml0dGVzdAotZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0K
IGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLmpzb25fcmVzdWx0c19nZW5lcmF0b3Ig
aW1wb3J0IHN0cmlwX2pzb25fd3JhcHBlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dC53ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQKQEAgLTMwMSwyMyArMjk5LDIxIEBAIGRlZiBnZXRf
dGVzdF9jb25maWcodGVzdF9maWxlcz1bXSwgcmVzdWx0X2ZpbGVzPVtdKToKICAgICAjIFdlIGNv
dWxkIGdyYWIgdGhpcyBmcm9tIHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCBidXQgaW5zdGFudGlh
dGluZyBhIGZ1bGx5IG1vY2tlZCBwb3J0IGlzIGEgcGFpbi4KICAgICBsYXlvdXRfdGVzdHNfZGly
ZWN0b3J5ID0gIi9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzIgogICAgIHJlc3VsdHNfZGlyZWN0
b3J5ID0gJy9XZWJLaXRCdWlsZC9EZWJ1Zy9sYXlvdXQtdGVzdC1yZXN1bHRzJwotICAgIG1vY2tf
ZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKCkKKyAgICBob3N0ID0gTW9ja0hvc3QoKQogICAg
IGZvciBmaWxlIGluIHRlc3RfZmlsZXM6Ci0gICAgICAgIGZpbGVfcGF0aCA9IG1vY2tfZmlsZXN5
c3RlbS5qb2luKGxheW91dF90ZXN0c19kaXJlY3RvcnksIGZpbGUpCi0gICAgICAgIG1vY2tfZmls
ZXN5c3RlbS5maWxlc1tmaWxlX3BhdGhdID0gJycKKyAgICAgICAgZmlsZV9wYXRoID0gaG9zdC5m
aWxlc3lzdGVtLmpvaW4obGF5b3V0X3Rlc3RzX2RpcmVjdG9yeSwgZmlsZSkKKyAgICAgICAgaG9z
dC5maWxlc3lzdGVtLmZpbGVzW2ZpbGVfcGF0aF0gPSAnJwogICAgIGZvciBmaWxlIGluIHJlc3Vs
dF9maWxlczoKLSAgICAgICAgZmlsZV9wYXRoID0gbW9ja19maWxlc3lzdGVtLmpvaW4ocmVzdWx0
c19kaXJlY3RvcnksIGZpbGUpCi0gICAgICAgIG1vY2tfZmlsZXN5c3RlbS5maWxlc1tmaWxlX3Bh
dGhdID0gJycKKyAgICAgICAgZmlsZV9wYXRoID0gaG9zdC5maWxlc3lzdGVtLmpvaW4ocmVzdWx0
c19kaXJlY3RvcnksIGZpbGUpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5maWxlc1tmaWxlX3Bh
dGhdID0gJycKIAogICAgIGNsYXNzIFRlc3RNYWNQb3J0KFdlYktpdFBvcnQpOgogICAgICAgICBw
b3J0X25hbWUgPSAibWFjIgotICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAg
ICBXZWJLaXRQb3J0Ll9faW5pdF9fKHNlbGYsIGZpbGVzeXN0ZW09bW9ja19maWxlc3lzdGVtLCBo
b3N0PU1vY2tIb3N0KCkpCiAKICAgICByZXR1cm4gVGVzdENvbmZpZygKLSAgICAgICAgVGVzdE1h
Y1BvcnQoKSwKKyAgICAgICAgVGVzdE1hY1BvcnQoaG9zdCksCiAgICAgICAgIGxheW91dF90ZXN0
c19kaXJlY3RvcnksCiAgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5LAogICAgICAgICAoJ21hYycs
ICdtYWMtbGVvcGFyZCcsICd3aW4nLCAnbGludXgnKSwKLSAgICAgICAgbW9ja19maWxlc3lzdGVt
LAotICAgICAgICBNb2NrU0NNKCkpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbSwKKyAgICAgICAg
aG9zdC5zY20oKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119546</attachid>
            <date>2011-12-15 19:49:22 -0800</date>
            <delta_ts>2011-12-19 12:04:15 -0800</delta_ts>
            <desc>update w/ review feedback</desc>
            <filename>bug-74562-20111215194921.patch</filename>
            <type>text/plain</type>
            <size>36577</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzI3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDMxYmRjNTU0ZDEyNzRhNmZjMGNmYjkyMWYzYzZiNDgz
ODhiOTE1MS4uODJjYjRmYzQ2MmVhMWNkYWJjOGQ3OWU4MDkyNjg2MmFmZTU2ODU1NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc0
IEBACiAyMDExLTEyLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiB1cGRhdGUgdW5pdCB0ZXN0cyBpbiBwcmVwYXJhdGlvbiBmb3IgbWFr
aW5nIGhvc3QgYSBtYW5kYXRvcnkgcGFyYW1ldGVyIHRvIFBvcnQgb2JqZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ1NjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcGFydCBmcm9tIGEgbWlub3Ig
Y2hhbmdlIHRvIHN0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CisgICAgICAgIHRv
IHRha2UgYSBob3N0IGFzIGEgcGFyYW1ldGVyIHRvIGEgVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIo
KSwKKyAgICAgICAgdGhlcmUgYXJlIG9ubHkgcmVmYWN0b3JpbmcgY2hhbmdlcyB0byB1bml0IHRl
c3RzIGhlcmUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0UmVz
dWx0V3JpdGVyVGVzdC50ZXN0X3JlZnRlc3RfZGlmZl9pbWFnZSk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVy
YXRvcl91bml0dGVzdC5weToKKyAgICAgICAgKEpTT05HZW5lcmF0b3JUZXN0Ll90ZXN0X2pzb25f
Z2VuZXJhdGlvbik6CisgICAgICAgIChKU09OR2VuZXJhdG9yVGVzdC50ZXN0X3Rlc3RfdGltaW5n
c190cmllKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMv
dGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisgICAgICAgIChCYXNlLl9faW5pdF9fKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRl
c3QucHk6CisgICAgICAgIChQb3J0VGVzdC5tYWtlX3BvcnQpOgorICAgICAgICAoUG9ydFRlc3Qu
dGVzdF9sYXlvdXRfdGVzdHNfc2tpcHBpbmcpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF90ZXN0
X2RpcnMpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF9hZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVj
dG9yeSk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X3VzZXNfdGVzdF9leHBlY3RhdGlvbnNfZmls
ZSk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfbm9fcGF0aHNfc3BlY2lmaWVkKToKKyAg
ICAgICAgKFBvcnRUZXN0LnRlc3RfZmluZF9vbmVfdGVzdCk6CisgICAgICAgIChQb3J0VGVzdC50
ZXN0X2ZpbmRfZ2xvYik6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfd2l0aF9za2lwcGVk
X2RpcmVjdG9yaWVzKToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfZmluZF93aXRoX3NraXBwZWRf
ZGlyZWN0b3JpZXNfMik6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X3BhcnNlX3JlZnRlc3RfbGlz
dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4u
cHk6CisgICAgICAgIChEcnlSdW5Qb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHk6CisgICAgICAgIChG
YWN0b3J5VGVzdC5zZXRVcCk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZWFyRG93bik6CisgICAg
ICAgIChGYWN0b3J5VGVzdC5hc3NlcnRfcG9ydCk6CisgICAgICAgIChGYWN0b3J5VGVzdC5hc3Nl
cnRfcGxhdGZvcm1fcG9ydCk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X3Vua25vd25fc3Bl
Y2lmaWVkKToKKyAgICAgICAgKEZhY3RvcnlUZXN0LnRlc3RfdW5rbm93bl9kZWZhdWx0KToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVf
dW5pdHRlc3QucHk6CisgICAgICAgIChHZXRHb29nbGVDaHJvbWVQb3J0VGVzdC5fdmVyaWZ5X2V4
cGVjdGF0aW9uc19vdmVycmlkZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHk6CisgICAgICAgIChNb2NrRFJUUG9ydFRl
c3QubWFrZV9wb3J0KToKKyAgICAgICAgKE1vY2tEUlRUZXN0LmFzc2VydFRlc3QpOgorICAgICAg
ICAoTW9ja0RSVFRlc3QudGVzdF9tYWluKToKKyAgICAgICAgKE1vY2tDaHJvbWl1bURSVFRlc3Qu
dGVzdF9waXhlbHRlc3RfX2ZhaWxzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3F0X3VuaXR0ZXN0LnB5OgorICAgICAgICAoUXRQb3J0VGVzdC5fYXNzZXJ0
X3NlYXJjaF9wYXRoKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dlYmtpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RXZWJLaXRQb3J0Ll9faW5pdF9f
KToKKyAgICAgICAgKFdlYktpdFBvcnRUZXN0LnRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3Jf
c3ltYm9scyk6CisgICAgICAgICh0ZXN0X3NraXBwZWRfZGlyZWN0b3JpZXNfZm9yX2ZlYXR1cmVz
KToKKyAgICAgICAgKHRlc3Rfc2tpcHBlZF9sYXlvdXRfdGVzdHMpOgorICAgICAgICAodGVzdF9z
a2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKToKKyAgICAgICAgKHRlc3Rfcm9vdF9vcHRpb24pOgor
ICAgICAgICAodGVzdF90ZXN0X2V4cGVjdGF0aW9ucyk6CisgICAgICAgICh0ZXN0X2J1aWxkX2Ry
aXZlcik6CisgICAgICAgICh0ZXN0X2xpbnV4X2Rpc3Ryb19kZXRlY3Rpb24pOgorICAgICAgICAo
dGVzdF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0pOgorICAgICAgICAodGVz
dF9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZSk6CisgICAgICAgIChXZWJLaXREcml2ZXJUZXN0
LnRlc3RfcmVhZF9ibG9jayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbnNDaGVj
a2VyLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9u
c1Rlc3RDYXNlLl9leHBlY3RfcG9ydF9mb3JfZXhwZWN0YXRpb25zX3BhdGgpOgorICAgICAgICAo
VGVzdEV4cGVjdGF0aW9uc1Rlc3RDYXNlLmFzc2VydF9saW5lc19saW50KToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5
OgorICAgICAgICAoZ2V0X3Rlc3RfY29uZmlnLlRlc3RNYWNQb3J0KToKKworMjAxMS0xMi0xNCAg
RGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICB3ZWJraXRweTog
Y2xlYW4gdXAgVGVzdFBvcnQgdG8gKG1vc3RseSkgbm90IGNyZWF0ZSBhIG5ldyBmaWxlc3lzdGVt
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDU1Ngog
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy90ZXN0X3Jlc3VsdF93cml0ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXJfdW5pdHRlc3Qu
cHkKaW5kZXggNDZmNzJlNmQzNTdlMjRmYzczYWEwMmI1ZWMwNGNhNGJlYjgyZjUxZi4uYzc5ODQ2
YTJkMjBhZmI2MmZkYzEwNGM2ZGIzYjg0ODAxNTJlOWFhMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVy
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlcl91bml0dGVzdC5weQpAQCAtMjYsNiArMjYsNyBA
QAogCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGlt
cG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1w
b3J0IHRlc3RfcmVzdWx0X3dyaXRlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxz
IGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmRy
aXZlciBpbXBvcnQgRHJpdmVyT3V0cHV0CkBAIC00MywxNCArNDQsMTQgQEAgY2xhc3MgVGVzdFJl
c3VsdFdyaXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgIHVzZWRf
dG9sZXJhbmNlX3ZhbHVlcy5hcHBlbmQodG9sZXJhbmNlKQogICAgICAgICAgICAgICAgIHJldHVy
biAoVHJ1ZSwgMSkKIAotICAgICAgICBwb3J0ID0gSW1hZ2VEaWZmVGVzdFBvcnQoKQotICAgICAg
ICBmcyA9IHBvcnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAg
ICAgcG9ydCA9IEltYWdlRGlmZlRlc3RQb3J0KGhvc3QpCiAgICAgICAgIHRlc3RfbmFtZSA9ICdm
YWlsdXJlcy91bmV4cGVjdGVkL3JlZnRlc3QuaHRtbCcKLSAgICAgICAgdGVzdF9yZWZlcmVuY2Vf
ZmlsZSA9IGZzLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksICdmYWlsdXJlcy91bmV4cGVj
dGVkL3JlZnRlc3QtZXhwZWN0ZWQuaHRtbCcpCisgICAgICAgIHRlc3RfcmVmZXJlbmNlX2ZpbGUg
PSBob3N0LmZpbGVzeXN0ZW0uam9pbihwb3J0LmxheW91dF90ZXN0c19kaXIoKSwgJ2ZhaWx1cmVz
L3VuZXhwZWN0ZWQvcmVmdGVzdC1leHBlY3RlZC5odG1sJykKICAgICAgICAgZHJpdmVyX291dHB1
dDEgPSBEcml2ZXJPdXRwdXQoJ3RleHQxJywgJ2ltYWdlMScsICdpbWFnZWhhc2gxJywgJ2F1ZGlv
MScpCiAgICAgICAgIGRyaXZlcl9vdXRwdXQyID0gRHJpdmVyT3V0cHV0KCd0ZXh0MicsICdpbWFn
ZTInLCAnaW1hZ2VoYXNoMicsICdhdWRpbzInKQogICAgICAgICBmYWlsdXJlcyA9IFt0ZXN0X2Zh
aWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2godGVzdF9yZWZlcmVuY2VfZmlsZSldCi0gICAg
ICAgIHRlc3RfcmVzdWx0X3dyaXRlci53cml0ZV90ZXN0X3Jlc3VsdChJbWFnZURpZmZUZXN0UG9y
dCgpLCB0ZXN0X25hbWUsCisgICAgICAgIHRlc3RfcmVzdWx0X3dyaXRlci53cml0ZV90ZXN0X3Jl
c3VsdChJbWFnZURpZmZUZXN0UG9ydChob3N0KSwgdGVzdF9uYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyX291dHB1dDEsIGRyaXZlcl9vdXRw
dXQyLCBmYWlsdXJlcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbMF0sIHVzZWRfdG9sZXJh
bmNlX3ZhbHVlcykKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25f
cmVzdWx0c19nZW5lcmF0b3JfdW5pdHRlc3QucHkKaW5kZXggMGEzMWU0N2JiYTEyOGI4YjRmNTc5
ODc1YjljYTI0YTU5ZTExMWJmNi4uYjNlNWNiY2Q4OGM1N2VlZWY3MTVkNDlhOTI2MGNjMDM2MDYz
YjMzNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3Vs
dHNfZ2VuZXJhdG9yX3VuaXR0ZXN0LnB5CkBAIC0zMiw3ICszMiw3IEBAIGltcG9ydCB1bml0dGVz
dAogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgcmFuZG9tCiAKLWZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0
X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRf
cGFja2FnZSBpbXBvcnQganNvbl9yZXN1bHRzX2dlbmVyYXRvcgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgdGVzdApAQCAtODksOCArODksOSBAQCBjbGFzcyBKU09O
R2VuZXJhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgZmFpbGVk
PSh0ZXN0IGluIGZhaWxlZF90ZXN0cyksCiAgICAgICAgICAgICAgICAgZWxhcHNlZF90aW1lPXRl
c3RfdGltaW5nc1t0ZXN0XSkKIAorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICBw
b3J0ID0gTW9jaygpCi0gICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtX21vY2su
TW9ja0ZpbGVTeXN0ZW0oKQorICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gaG9zdC5maWxlc3lz
dGVtCiAgICAgICAgIGdlbmVyYXRvciA9IGpzb25fcmVzdWx0c19nZW5lcmF0b3IuSlNPTlJlc3Vs
dHNHZW5lcmF0b3JCYXNlKHBvcnQsCiAgICAgICAgICAgICBzZWxmLmJ1aWxkZXJfbmFtZSwgc2Vs
Zi5idWlsZF9uYW1lLCBzZWxmLmJ1aWxkX251bWJlciwKICAgICAgICAgICAgICcnLApAQCAtMjEz
LDcgKzIxNCw3IEBAIGNsYXNzIEpTT05HZW5lcmF0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgc2VsZi5fdGVzdF9qc29uX2dlbmVyYXRpb24oWydmb28vQSddLCBbJ2Zvby9CJywg
J2Jhci9DJ10pCiAKICAgICBkZWYgdGVzdF90ZXN0X3RpbWluZ3NfdHJpZShzZWxmKToKLSAgICAg
ICAgdGVzdF9wb3J0ID0gdGVzdC5UZXN0UG9ydCgpCisgICAgICAgIHRlc3RfcG9ydCA9IHRlc3Qu
VGVzdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MgPSBb
XQogICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncy5hcHBlbmQoanNvbl9yZXN1bHRzX2dl
bmVyYXRvci5UZXN0UmVzdWx0KCdmb28vYmFyL2Jhei5odG1sJywgZWxhcHNlZF90aW1lPTEuMikp
CiAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLmFwcGVuZChqc29uX3Jlc3VsdHNfZ2Vu
ZXJhdG9yLlRlc3RSZXN1bHQoJ2Jhci5odG1sJywgZWxhcHNlZF90aW1lPTAuMDAwMSkpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9l
eHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKaW5kZXggNzhkYTc0MDNl
ZDA0YjI3OTAxODc1MmRkY2YyZjFhYTA4NzgyOWEwMS4uZGE3OGVkNDE2ZmQ3YjJmNjNlYmM5NDNl
MzRkZTA1NWM3YWRhMjJkOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191
bml0dGVzdC5weQpAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBCYXNlKHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdEZ1bmMsIHNldFVwPU5vbmUsIHRlYXJEb3du
PU5vbmUsIGRlc2NyaXB0aW9uPU5vbmUpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAg
ICAgICBzZWxmLl9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0LXdpbi14cCcsIE5v
bmUpCi0gICAgICAgIHNlbGYuX2ZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQorICAgICAgICBz
ZWxmLl9mcyA9IGhvc3QuZmlsZXN5c3RlbQogICAgICAgICBzZWxmLl9leHAgPSBOb25lCiAgICAg
ICAgIHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsIHRlc3RGdW5jKQogCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5p
dHRlc3QucHkKaW5kZXggMjRjNmZjOThjZDFlOWJiMjJkMDRhNzRmMmFlM2JiNmY2Y2Y4ODlhNS4u
ODFkYmU5M2JmZWJjMDg1OGQ1N2JmMWFkYWY4YWQ2NWJjZmM0MjE2OSAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVz
dC5weQpAQCAtNDcsMTEgKzQ3LDEyIEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQu
dGVzdCBpbXBvcnQgVGVzdFBvcnQKIGltcG9ydCBjb25maWcKIGltcG9ydCBjb25maWdfbW9jawog
Ci0KIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgbWFrZV9wb3J0
KHNlbGYsIGhvc3Q9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBob3N0ID0gaG9zdCBvciBNb2Nr
SG9zdCgpCi0gICAgICAgIHJldHVybiBQb3J0KGhvc3QsICoqa3dhcmdzKQorICAgIGRlZiBtYWtl
X3BvcnQoc2VsZiwgZXhlY3V0aXZlPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgaG9zdCA9IE1v
Y2tIb3N0KCkKKyAgICAgICAgaWYgZXhlY3V0aXZlOgorICAgICAgICAgICAgaG9zdC5leGVjdXRp
dmUgPSBleGVjdXRpdmUKKyAgICAgICAgcmV0dXJuIFBvcnQoaG9zdCwgZXhlY3V0aXZlPWV4ZWN1
dGl2ZSwgKiprd2FyZ3MpCiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X2NoaWxkX3Byb2Nlc3Nlcyhz
ZWxmKToKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKQEAgLTIwMywxMSArMjA0LDkg
QEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBvcnQuZGVmYXVsdF9jb25maWd1cmF0aW9uKCksICdkZWZhdWx0JykKIAogICAgIGRl
ZiB0ZXN0X2xheW91dF90ZXN0c19za2lwcGluZyhzZWxmKToKLSAgICAgICAgZmlsZXN5c3RlbSA9
IE1vY2tGaWxlU3lzdGVtKHsKLSAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0
cy9tZWRpYS92aWRlby16b29tLmh0bWwnOiAnJywKLSAgICAgICAgICAgICcvbW9jay1jaGVja291
dC9MYXlvdXRUZXN0cy9mb28vYmFyLmh0bWwnOiAnJywKLSAgICAgICAgfSkKLSAgICAgICAgcG9y
dCA9IHNlbGYubWFrZV9wb3J0KGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAgICAgICAgcG9ydCA9
IHNlbGYubWFrZV9wb3J0KCkKKyAgICAgICAgcG9ydC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmls
ZShwb3J0LmxheW91dF90ZXN0c19kaXIoKSArICcvbWVkaWEvdmlkZW8tem9vbS5odG1sJywgJycp
CisgICAgICAgIHBvcnQuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocG9ydC5sYXlvdXRfdGVz
dHNfZGlyKCkgKyAnL2Zvby9iYXIuaHRtbCcsICcnKQogICAgICAgICBwb3J0LnNraXBwZWRfbGF5
b3V0X3Rlc3RzID0gbGFtYmRhOiBbJ2Zvby9iYXIuaHRtbCcsICdtZWRpYSddCiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwb3J0LnNraXBzX2xheW91dF90ZXN0KCdmb28vYmFyLmh0bWwnKSkKICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuc2tpcHNfbGF5b3V0X3Rlc3QoJ21lZGlhL3ZpZGVv
LXpvb20uaHRtbCcpKQpAQCAtMjE5LDExICsyMTgsMTAgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICAgICBwb3J0LnNldHVwX3Rlc3RfcnVuKCkKIAogICAgIGRlZiB0
ZXN0X3Rlc3RfZGlycyhzZWxmKToKLSAgICAgICAgZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVt
KHsKLSAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9jYW52YXMvdGVzdCc6
ICcnLAotICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL2NzczIuMS90ZXN0
JzogJycsCi0gICAgICAgIH0pCi0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChmaWxlc3lz
dGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCisgICAgICAg
ICMgRklYTUU6IENvbnNpZGVyIGFkZGluZyBhIGZpbGVzeXN0ZW0udG91Y2goKT8KKyAgICAgICAg
cG9ydC5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkg
KyAnL2NhbnZhcy90ZXN0JywgJycpCisgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4
dF9maWxlKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpICsgJy9jc3MyLjEvdGVzdCcsICcnKQogICAg
ICAgICBkaXJzID0gcG9ydC50ZXN0X2RpcnMoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Nh
bnZhcycgaW4gZGlycykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdjc3MyLjEnIGluIGRpcnMp
CkBAIC0yNjEsOCArMjU5LDcgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQubmFtZSgpLCAnZm9vJykKIAogICAgIGRlZiB0
ZXN0X2FkZGl0aW9uYWxfcGxhdGZvcm1fZGlyZWN0b3J5KHNlbGYpOgotICAgICAgICBmaWxlc3lz
dGVtID0gTW9ja0ZpbGVTeXN0ZW0oKQotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9y
dF9uYW1lPSdmb28nLCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIHBvcnQgPSBzZWxm
Lm1ha2VfcG9ydChwb3J0X25hbWU9J2ZvbycpCiAgICAgICAgIHBvcnQuYmFzZWxpbmVfc2VhcmNo
X3BhdGggPSBsYW1iZGE6IFsnTGF5b3V0VGVzdHMvcGxhdGZvcm0vZm9vJ10KICAgICAgICAgbGF5
b3V0X3Rlc3RfZGlyID0gcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKICAgICAgICAgdGVzdF9maWxl
ID0gJ2Zhc3QvdGVzdC5odG1sJwpAQCAtMjc1LDkgKzI3Miw3IEBAIGNsYXNzIFBvcnRUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICAjIFNpbXBsZSBhZGRpdGlvbmFsIHBsYXRmb3Jt
IGRpcmVjdG9yeQogICAgICAgICBwb3J0Ll9vcHRpb25zLmFkZGl0aW9uYWxfcGxhdGZvcm1fZGly
ZWN0b3J5ID0gWycvdG1wL2xvY2FsLWJhc2VsaW5lcyddCi0gICAgICAgIGZpbGVzeXN0ZW0uZmls
ZXMgPSB7Ci0gICAgICAgICAgICAnL3RtcC9sb2NhbC1iYXNlbGluZXMvZmFzdC90ZXN0LWV4cGVj
dGVkLnR4dCc6ICdmb28nLAotICAgICAgICB9CisgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3Jp
dGVfdGV4dF9maWxlKCcvdG1wL2xvY2FsLWJhc2VsaW5lcy9mYXN0L3Rlc3QtZXhwZWN0ZWQudHh0
JywgJ2ZvbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICBwb3J0LmV4
cGVjdGVkX2Jhc2VsaW5lcyh0ZXN0X2ZpbGUsICcudHh0JyksCiAgICAgICAgICAgICBbKCcvdG1w
L2xvY2FsLWJhc2VsaW5lcycsICdmYXN0L3Rlc3QtZXhwZWN0ZWQudHh0JyldKQpAQCAtMjkxLDM2
ICsyODYsMzUgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHBvcnQuYmFzZWxpbmVfcGF0aCgpLCAnL2ZvbycpCiAKICAgICBkZWYg
dGVzdF91c2VzX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoc2VsZik6Ci0gICAgICAgIGZpbGVzeXN0
ZW0gPSBNb2NrRmlsZVN5c3RlbSgpCi0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0
X25hbWU9J2ZvbycsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAgICAgICAgcG9ydCA9IHNlbGYu
bWFrZV9wb3J0KHBvcnRfbmFtZT0nZm9vJykKICAgICAgICAgcG9ydC5wYXRoX3RvX3Rlc3RfZXhw
ZWN0YXRpb25zX2ZpbGUgPSBsYW1iZGE6ICcvbW9jay1yZXN1bHRzL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dCcKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0LnVzZXNfdGVzdF9leHBlY3RhdGlv
bnNfZmlsZSgpKQogICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oeycv
bW9jay1yZXN1bHRzL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCc6ICcnfSkKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHBvcnQudXNlc190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkpCiAKICAgICBkZWYg
dGVzdF9maW5kX25vX3BhdGhzX3NwZWNpZmllZChzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RQ
b3J0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIGxheW91
dF90ZXN0c19kaXIgPSBwb3J0LmxheW91dF90ZXN0c19kaXIoKQogICAgICAgICB0ZXN0cyA9IHBv
cnQudGVzdHMoW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHRlc3RzKSwgMCkK
IAogICAgIGRlZiB0ZXN0X2ZpbmRfb25lX3Rlc3Qoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0
UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICB0ZXN0
cyA9IHBvcnQudGVzdHMoWydmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sJ10pCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRlc3RzKSwgMSkKIAogICAgIGRlZiB0ZXN0X2ZpbmRfZ2xv
YihzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RQb3J0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RQ
b3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIHRlc3RzID0gcG9ydC50ZXN0cyhbJ2ZhaWx1cmVzL2V4
cGVjdGVkL2ltKiddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXN0cyksIDIpCiAK
ICAgICBkZWYgdGVzdF9maW5kX3dpdGhfc2tpcHBlZF9kaXJlY3RvcmllcyhzZWxmKToKLSAgICAg
ICAgcG9ydCA9IFRlc3RQb3J0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RQb3J0KE1vY2tIb3N0KCkp
CiAgICAgICAgIHRlc3RzID0gcG9ydC50ZXN0cygndXNlcnNjcmlwdHMnKQogICAgICAgICBzZWxm
LmFzc2VydFRydWUoJ3VzZXJzY3JpcHRzL3Jlc291cmNlcy9pZnJhbWUuaHRtbCcgbm90IGluIHRl
c3RzKQogCiAgICAgZGVmIHRlc3RfZmluZF93aXRoX3NraXBwZWRfZGlyZWN0b3JpZXNfMihzZWxm
KToKLSAgICAgICAgcG9ydCA9IFRlc3RQb3J0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RQb3J0KE1v
Y2tIb3N0KCkpCiAgICAgICAgIHRlc3RzID0gcG9ydC50ZXN0cyhbJ3VzZXJzY3JpcHRzL3Jlc291
cmNlcyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzLCBzZXQoW10pKQogCkBAIC0z
NDAsNyArMzM0LDcgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKFBvcnQuX2lzX3Rlc3RfZmlsZShmaWxlc3lzdGVtLCAnJywgJ25v
dHJlZi1mb28ueGhyJykpCiAKICAgICBkZWYgdGVzdF9wYXJzZV9yZWZ0ZXN0X2xpc3Qoc2VsZik6
Ci0gICAgICAgIHBvcnQgPSBUZXN0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0UG9ydChNb2Nr
SG9zdCgpKQogICAgICAgICBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1snYmFyL3JlZnRlc3Qu
bGlzdCddID0gIlxuIi5qb2luKFsiPT0gdGVzdC5odG1sIHRlc3QtcmVmLmh0bWwiLAogICAgICAg
ICAiIiwKICAgICAgICAgIiMgc29tZSBjb21tZW50IiwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKaW5kZXggNGRlODIzMDFhMjE2Y2Zl
Yjk3ZDVlN2JiOGNlMDk0NDg3MmZmZDc5MC4uYWFhZmIwOTRjZjY4NzdmMGFlYTMwMGUyM2U3NWVh
MTU3MzI5MmMwYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9kcnlydW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9kcnlydW4ucHkKQEAgLTUzLDcgKzUzLDkgQEAgaW1wb3J0IHRpbWUKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IERyaXZlciwgRHJpdmVyT3V0cHV0LCBmYWN0
b3J5CiAKIAotIyBGSVhNRTogV2h5IG5vdCBpbmhlcml0IGZyb20gUG9ydD8KKyMgTm90ZSB0aGF0
IHdlIGRvbid0IGluaGVyaXQgZnJvbSBiYXNlLlBvcnQgaW4gb3JkZXIgZm9yIGRlbGVnYXRpb24g
dG8KKyMgd29yayBwcm9wZXJseTogZXhjZXB0IGZvciB0aGUgbWV0aG9kcyBkZWZpbmVkIGhlcmUs
IHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQKKyMgYWxsIG9mIHRoZSBtZXRob2RzIGFyZSBwYXNzZWQg
dG8gdGhlIF9fZGVsZWdhdGUsIG5vdCB0byB0aGUgYmFzZSBjbGFzcy4KIGNsYXNzIERyeVJ1blBv
cnQob2JqZWN0KToKICAgICAiIiJEcnlSdW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFBvcnQgaW50
ZXJmYWNlLiIiIgogCkBAIC02NCw3ICs2Niw3IEBAIGNsYXNzIERyeVJ1blBvcnQob2JqZWN0KToK
ICAgICAgICAgICAgICAgICBrd2FyZ3NbJ3BvcnRfbmFtZSddID0ga3dhcmdzWydwb3J0X25hbWUn
XVtsZW4ocGZ4KTpdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGt3YXJnc1sn
cG9ydF9uYW1lJ10gPSBOb25lCi0gICAgICAgIHNlbGYuX19kZWxlZ2F0ZSA9IGhvc3QucG9ydF9m
YWN0b3J5LmdldCgqKmt3YXJncykKKyAgICAgICAgc2VsZi5fX2RlbGVnYXRlID0gZmFjdG9yeS5Q
b3J0RmFjdG9yeShob3N0KS5nZXQoKiprd2FyZ3MpCiAKICAgICBkZWYgX19nZXRhdHRyX18oc2Vs
ZiwgbmFtZSk6CiAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYuX19kZWxlZ2F0ZSwgbmFtZSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFj
dG9yeV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZmFjdG9yeV91bml0dGVzdC5weQppbmRleCA2MWUzMWY1MmQ4OWEzYmU4YzQwM2FmNjEyNzgz
NzMzNzk2YjgxNDRhLi4xZjljMjM2YzZiMzI2MDU4ZjhiOTEwNmZkYTAzYmYxNGViYjIyZDZjIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3Rv
cnlfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CkBAIC0zMCw3ICszMCw3IEBAIGltcG9ydCBzeXMKIGlt
cG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tP
cHRpb25zCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Citm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lz
dGVtSG9zdAogCiBpbXBvcnQgY2hyb21pdW1fZ3B1CiBpbXBvcnQgY2hyb21pdW1fbGludXgKQEAg
LTU5LDE1ICs1OSwxMSBAQCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIHNlbGYucmVhbF9zeXNfcGxhdGZvcm0gPSBzeXMucGxhdGZvcm0KICAgICAgICAgc2Vs
Zi53ZWJraXRfb3B0aW9ucyA9IE1vY2tPcHRpb25zKHBpeGVsX3Rlc3RzPUZhbHNlKQogICAgICAg
ICBzZWxmLmNocm9taXVtX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhwaXhlbF90ZXN0cz1GYWxzZSwg
Y2hyb21pdW09VHJ1ZSkKKyAgICAgICAgc2VsZi5mYWN0b3J5ID0gZmFjdG9yeS5Qb3J0RmFjdG9y
eShNb2NrU3lzdGVtSG9zdCgpKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBz
eXMucGxhdGZvcm0gPSBzZWxmLnJlYWxfc3lzX3BsYXRmb3JtCiAKLSAgICBkZWYgbWFrZV9mYWN0
b3J5KHNlbGYpOgotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICAjIFRoZSBQb3J0
RmFjdG9yeSBvbiBNb2NrSG9zdCBpcyBhIHJlYWwgUG9ydEZhY3Rvcnkgd2l0aCBhIE1vY2tGaWxl
U3lzdGVtLCBldGMuCi0gICAgICAgIHJldHVybiBob3N0LnBvcnRfZmFjdG9yeQotCiAgICAgZGVm
IGFzc2VydF9wb3J0KHNlbGYsIHBvcnRfbmFtZSwgZXhwZWN0ZWRfcG9ydCwgcG9ydF9vYmo9Tm9u
ZSk6CiAgICAgICAgICIiIkhlbHBlciBhc3NlcnQgZm9yIHBvcnRfbmFtZS4KIApAQCAtNzYsNyAr
NzIsNyBAQCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAg
ZXhwZWN0ZWRfcG9ydDogY2xhc3Mgb2YgZXhwZWN0ZWQgcG9ydCBvYmplY3QuCiAgICAgICAgICAg
cG9ydF9vYmo6IG9wdGlvbmFsIHBvcnQgb2JqZWN0CiAgICAgICAgICIiIgotICAgICAgICBwb3J0
X29iaiA9IHBvcnRfb2JqIG9yIHNlbGYubWFrZV9mYWN0b3J5KCkuZ2V0KHBvcnRfbmFtZT1wb3J0
X25hbWUpCisgICAgICAgIHBvcnRfb2JqID0gcG9ydF9vYmogb3Igc2VsZi5mYWN0b3J5LmdldChw
b3J0X25hbWU9cG9ydF9uYW1lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShw
b3J0X29iaiwgZXhwZWN0ZWRfcG9ydCkpCiAKICAgICBkZWYgYXNzZXJ0X3BsYXRmb3JtX3BvcnQo
c2VsZiwgcGxhdGZvcm0sIG9wdGlvbnMsIGV4cGVjdGVkX3BvcnQpOgpAQCAtOTIsNyArODgsNyBA
QCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIG9yaWdfcGxh
dGZvcm0gPSBzeXMucGxhdGZvcm0KICAgICAgICAgc3lzLnBsYXRmb3JtID0gcGxhdGZvcm0KICAg
ICAgICAgIyBGSVhNRTogV2UgbmVlZCBhIGJldHRlciB3YXkgdG8gbW9jayB0aGlzLgotICAgICAg
ICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLm1ha2VfZmFjdG9yeSgpLmdldChvcHRp
b25zPW9wdGlvbnMpLCBleHBlY3RlZF9wb3J0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlz
aW5zdGFuY2Uoc2VsZi5mYWN0b3J5LmdldChvcHRpb25zPW9wdGlvbnMpLCBleHBlY3RlZF9wb3J0
KSkKICAgICAgICAgc3lzLnBsYXRmb3JtID0gb3JpZ19wbGF0Zm9ybQogCiAgICAgZGVmIHRlc3Rf
bWFjKHNlbGYpOgpAQCAtMTUzLDEzICsxNDksMTMgQEAgY2xhc3MgRmFjdG9yeVRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfdW5rbm93bl9zcGVjaWZpZWQoc2VsZik6CiAg
ICAgICAgICMgVGVzdCB3aGF0IGhhcHBlbnMgd2hlbiB5b3Ugc3BlY2lmeSBhbiB1bmtub3duIHBv
cnQuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHNlbGYu
bWFrZV9mYWN0b3J5KCkuZ2V0LCBwb3J0X25hbWU9J3Vua25vd24nKQorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzZWxmLmZhY3RvcnkuZ2V0LCBwb3J0X25h
bWU9J3Vua25vd24nKQogCiAgICAgZGVmIHRlc3RfdW5rbm93bl9kZWZhdWx0KHNlbGYpOgogICAg
ICAgICAjIFRlc3Qgd2hhdCBoYXBwZW5zIHdoZW4geW91J3JlIHJ1bm5pbmcgb24gYW4gdW5rbm93
biBwbGF0Zm9ybS4KICAgICAgICAgb3JpZ19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQogICAgICAg
ICBzeXMucGxhdGZvcm0gPSAndW5rbm93bicKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90
SW1wbGVtZW50ZWRFcnJvciwgc2VsZi5tYWtlX2ZhY3RvcnkoKS5nZXQpCisgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHNlbGYuZmFjdG9yeS5nZXQpCiAgICAg
ICAgIHN5cy5wbGF0Zm9ybSA9IG9yaWdfcGxhdGZvcm0KIAogCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJv
bWVfdW5pdHRlc3QucHkKaW5kZXggZTMxN2UxMmM1YmU3ZmVmYmMxNzA4NGU0Y2YzN2ZhODA4YjA1
ZjIxMy4uMzZlNGFiNmFhNzE3MzdhZjk4MzgzZDIxYjYzNmJiZmRlNzdmOGViMyAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21l
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weQpAQCAtMjcsMTEgKzI3LDcgQEAKIGltcG9ydCB1
bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2Nr
RmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGlt
cG9ydCBNb2NrRXhlY3V0aXZlCi0KLQotaW1wb3J0IGdvb2dsZV9jaHJvbWUKK2Zyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGdvb2dsZV9jaHJvbWUKIAogCiBjbGFzcyBHZXRH
b29nbGVDaHJvbWVQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01OSw3ICs1NSw3IEBA
IGNsYXNzIEdldEdvb2dsZUNocm9tZVBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgY2hyb21pdW1fcG9ydCA9IGhvc3QucG9ydF9m
YWN0b3J5LmdldCgiY2hyb21pdW0tY2ctbWFjIikKICAgICAgICAgY2hyb21pdW1fYmFzZSA9IGNo
cm9taXVtX3BvcnQucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoKQotICAgICAgICBwb3J0ID0gZ29v
Z2xlX2Nocm9tZS5HZXRHb29nbGVDaHJvbWVQb3J0KHBvcnRfbmFtZT1wb3J0X25hbWUsIG9wdGlv
bnM9Tm9uZSwgaG9zdD1ob3N0KQorICAgICAgICBwb3J0ID0gZ29vZ2xlX2Nocm9tZS5HZXRHb29n
bGVDaHJvbWVQb3J0KGhvc3QsIHBvcnRfbmFtZT1wb3J0X25hbWUsIG9wdGlvbnM9Tm9uZSkKIAog
ICAgICAgICBleHBlY3RlZF9jaHJvbWl1bV9vdmVycmlkZXMgPSAnLy8gY2hyb21pdW0gb3ZlcnJp
ZGVzXG4nCiAgICAgICAgIGV4cGVjdGVkX2Nocm9tZV9vdmVycmlkZXMgPSAnLy8gY2hyb21lIG92
ZXJyaWRlc1xuJwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkKaW5kZXggNTY3YzA4NzZjYzFlM2Jm
ZWQ3MjZlMmEwMmQ4MjM1NTk2MmMzMmQ0Zi4uZjgxMjk1ODQwNzFkNDAyZWFhNjM4NTRlM2ZjMzQx
ZTg0MThlZGVhNiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CkBAIC00NiwxMCArNDYsMTEg
QEAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0nUmVs
ZWFzZScpCiAKIGNsYXNzIE1vY2tEUlRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2Fz
ZSk6CiAgICAgZGVmIG1ha2VfcG9ydChzZWxmLCBvcHRpb25zPW1vY2tfb3B0aW9ucyk6CisgICAg
ICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzIn
OgogICAgICAgICAgICAgIyBXZSB1c2UgdGhpcyBiZWNhdXNlIHRoZSAnd2luJyBwb3J0IGRvZXNu
J3Qgd29yayB5ZXQuCi0gICAgICAgICAgICByZXR1cm4gbW9ja19kcnQuTW9ja0RSVFBvcnQoTW9j
a0hvc3QoKSwgcG9ydF9uYW1lPSdtb2NrLWNocm9taXVtLXdpbicsIG9wdGlvbnM9b3B0aW9ucykK
LSAgICAgICAgcmV0dXJuIG1vY2tfZHJ0Lk1vY2tEUlRQb3J0KE1vY2tIb3N0KCksIG9wdGlvbnM9
b3B0aW9ucykKKyAgICAgICAgICAgIHJldHVybiBtb2NrX2RydC5Nb2NrRFJUUG9ydChob3N0LCBw
b3J0X25hbWU9J21vY2stY2hyb21pdW0td2luJywgb3B0aW9ucz1vcHRpb25zKQorICAgICAgICBy
ZXR1cm4gbW9ja19kcnQuTW9ja0RSVFBvcnQoaG9zdCwgb3B0aW9ucz1vcHRpb25zKQogCiAgICAg
ZGVmIHRlc3RfZGVmYXVsdF93b3JrZXJfbW9kZWwoc2VsZik6CiAgICAgICAgICMgb25seSBvdmVy
cmlkZGluZyB0aGUgZGVmYXVsdCB0ZXN0OyB3ZSBkb24ndCBjYXJlIGFib3V0IHRoaXMgb25lLgpA
QCAtMTM3LDEwICsxMzgsOSBAQCBjbGFzcyBNb2NrRFJUVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgICAgICAgICAgICAgICcjRU9GXG4nLAogICAgICAgICAgICAgICAgICAgICAnI0VP
RlxuJ10KIAotICAgIGRlZiBhc3NlcnRUZXN0KHNlbGYsIHRlc3RfbmFtZSwgcGl4ZWxfdGVzdHMs
IGV4cGVjdGVkX2NoZWNrc3VtPU5vbmUsIGRydF9vdXRwdXQ9Tm9uZSwgZmlsZXN5c3RlbT1Ob25l
KToKKyAgICBkZWYgYXNzZXJ0VGVzdChzZWxmLCB0ZXN0X25hbWUsIHBpeGVsX3Rlc3RzLCBleHBl
Y3RlZF9jaGVja3N1bT1Ob25lLCBkcnRfb3V0cHV0PU5vbmUsIGhvc3Q9Tm9uZSk6CiAgICAgICAg
IHBvcnRfbmFtZSA9ICd0ZXN0JwotICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICBo
b3N0LmZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtIG9yIHRlc3QudW5pdF90ZXN0X2ZpbGVzeXN0ZW0o
KQorICAgICAgICBob3N0ID0gaG9zdCBvciBNb2NrSG9zdCgpCiAgICAgICAgIHBvcnQgPSBob3N0
LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lKQogICAgICAgICBkcnRfaW5wdXQsIGRydF9vdXRw
dXQgPSBzZWxmLm1ha2VfaW5wdXRfb3V0cHV0KHBvcnQsIHRlc3RfbmFtZSwKICAgICAgICAgICAg
IHBpeGVsX3Rlc3RzLCBleHBlY3RlZF9jaGVja3N1bSwgZHJ0X291dHB1dCkKQEAgLTE2Myw3ICsx
NjMsNiBAQCBjbGFzcyBNb2NrRFJUVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYg
dGVzdF9tYWluKHNlbGYpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICBob3N0
LmZpbGVzeXN0ZW0gPSB0ZXN0LnVuaXRfdGVzdF9maWxlc3lzdGVtKCkKICAgICAgICAgc3RkaW4g
PSBuZXdzdHJpbmdpby5TdHJpbmdJTygpCiAgICAgICAgIHN0ZG91dCA9IG5ld3N0cmluZ2lvLlN0
cmluZ0lPKCkKICAgICAgICAgc3RkZXJyID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQpAQCAtMjM2
LDcgKzIzNSw3IEBAIGNsYXNzIE1vY2tDaHJvbWl1bURSVFRlc3QoTW9ja0RSVFRlc3QpOgogICAg
ICAgICAgICAgICAgICAgICAnI0VPRlxuJ10KIAogICAgIGRlZiB0ZXN0X3BpeGVsdGVzdF9fZmFp
bHMoc2VsZik6Ci0gICAgICAgIGZpbGVzeXN0ZW0gPSB0ZXN0LnVuaXRfdGVzdF9maWxlc3lzdGVt
KCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgc2VsZi5hc3NlcnRUZXN0KCdm
YWlsdXJlcy9leHBlY3RlZC9jaGVja3N1bS5odG1sJywgcGl4ZWxfdGVzdHM9VHJ1ZSwKICAgICAg
ICAgICAgIGV4cGVjdGVkX2NoZWNrc3VtPSd3cm9uZy1jaGVja3N1bScsCiAgICAgICAgICAgICBk
cnRfb3V0cHV0PVsnI1VSTDpmaWxlOi8vL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMvZmFpbHVy
ZXMvZXhwZWN0ZWQvY2hlY2tzdW0uaHRtbFxuJywKQEAgLTI0NCw4ICsyNDMsOCBAQCBjbGFzcyBN
b2NrQ2hyb21pdW1EUlRUZXN0KE1vY2tEUlRUZXN0KToKICAgICAgICAgICAgICAgICAgICAgICAg
ICdjaGVja3N1bS10eHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKICAgICAgICAg
ICAgICAgICAgICAgICAgICcjRU9GXG4nXSwKLSAgICAgICAgICAgIGZpbGVzeXN0ZW09ZmlsZXN5
c3RlbSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVz
LAorICAgICAgICAgICAgaG9zdD1ob3N0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhob3N0
LmZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcywKICAgICAgICAgICAgIHsnL3RtcC9wbmdfcmVzdWx0
MC5wbmcnOiAnY2hlY2tzdW1ceDhhLXBuZ3RFWHRjaGVja3N1bVx4MDBjaGVja3N1bS1jaGVja3N1
bSd9KQogCiAgICAgZGVmIHRlc3RfY2hyb21pdW1fcGFyc2Vfb3B0aW9ucyhzZWxmKToKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0X3VuaXR0
ZXN0LnB5CmluZGV4IGQ2NDQ2MzJkMTBkMjIxNDUzMTdlZDUzYzkwMmRhZWRmN2I5M2FjM2MuLjVi
MmRlYzY4NGFmOWE1MGE2ZWVmNzgyOTQzYWNhMmFjNDQ2ZWQxZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdF91bml0dGVzdC5weQpA
QCAtMjksNyArMjksNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIKLWZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5xdCBpbXBvcnQgUXRQb3J0CiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCkBAIC00
NSwxMCArNDQsOSBAQCBjbGFzcyBRdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNl
KToKICAgICAgICAgIyBGSVhNRTogUG9ydCBjb25zdHJ1Y3RvcnMgc2hvdWxkIG5vdCAicGFyc2Ui
IHRoZSBwb3J0IG5hbWUsIGJ1dAogICAgICAgICAjIHJhdGhlciBiZSBwYXNzZWQgY29tcG9uZW50
cyAoZGlyZWN0bHkgb3IgdmlhIHNldHRlcnMpLiAgT25jZQogICAgICAgICAjIHdlIGZpeCB0aGF0
LCB0aGlzIG1ldGhvZCB3aWxsIG5lZWQgYSByZS13cml0ZS4KLSAgICAgICAgcG9ydCA9IFF0UG9y
dChzeXNfcGxhdGZvcm09c3lzX3BsYXRmb3JtLAotICAgICAgICAgICAgb3B0aW9ucz1Nb2NrT3B0
aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9dXNlX3dlYmtpdDIsIHBsYXRmb3JtPSdxdCcpLAotICAg
ICAgICAgICAgaG9zdD1Nb2NrSG9zdCgpLAotICAgICAgICAgICAgZXhlY3V0aXZlPU1vY2tFeGVj
dXRpdmUyKHNlbGYuX3F0X3ZlcnNpb24ocXRfdmVyc2lvbikpKQorICAgICAgICBob3N0ID0gTW9j
a0hvc3QoKQorICAgICAgICBob3N0LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHNlbGYuX3F0
X3ZlcnNpb24ocXRfdmVyc2lvbikpCisgICAgICAgIHBvcnQgPSBRdFBvcnQoaG9zdCwgc3lzX3Bs
YXRmb3JtPXN5c19wbGF0Zm9ybSwgb3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5u
ZXI9dXNlX3dlYmtpdDIsIHBsYXRmb3JtPSdxdCcpKQogICAgICAgICBhYnNvbHV0ZV9zZWFyY2hf
cGF0aHMgPSBtYXAocG9ydC5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlYXJjaF9wYXRocykKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCgpLCBhYnNv
bHV0ZV9zZWFyY2hfcGF0aHMpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKaW5kZXggY2M4ZmY4Mzkx
ODY0MzU4MDg3YTIwNjNiMGFiN2U5N2U1MmI3NzA0Zi4uOTQwMjBkZTU4ZWQ1ZTNiNmMwNTIyNDU3
ZGJlZTNjNmU4YmE0MzczOCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKQEAgLTQxLDEzICs0MSwx
MiBAQCBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiBjbGFz
cyBUZXN0V2ViS2l0UG9ydChXZWJLaXRQb3J0KToKICAgICBwb3J0X25hbWUgPSAidGVzdHdlYmtp
dHBvcnQiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3ltYm9sc19zdHJpbmc9Tm9uZSwgZmVh
dHVyZV9saXN0PU5vbmUsCi0gICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uc19maWxlPU5vbmUs
IHNraXBzX2ZpbGU9Tm9uZSwgaG9zdD1Ob25lLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0
LCBzeW1ib2xzX3N0cmluZz1Ob25lLCBmZWF0dXJlX2xpc3Q9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgZXhwZWN0YXRpb25zX2ZpbGU9Tm9uZSwgc2tpcHNfZmlsZT1Ob25lLAogICAgICAgICAgICAg
ICAgICAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYuc3ltYm9sc19zdHJpbmcgPSBzeW1ib2xzX3N0
cmluZyAgIyBQYXNzaW5nICIiIGRpc2FibGVzIGFsbCBzdGF0aWNseS1kZXRlY3RhYmxlIGZlYXR1
cmVzLgogICAgICAgICBzZWxmLmZlYXR1cmVfbGlzdCA9IGZlYXR1cmVfbGlzdCAgIyBQYXNzaW5n
IFtdIGRpc2FibGVzIGFsbCBydW50aW1lLWRldGVjdGFibGUgZmVhdHVyZXMuCi0gICAgICAgIGhv
c3QgPSBob3N0IG9yIE1vY2tIb3N0KCkKLSAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxm
LCBob3N0PWhvc3QsICoqa3dhcmdzKQorICAgICAgICBXZWJLaXRQb3J0Ll9faW5pdF9fKHNlbGYs
IGhvc3QsICoqa3dhcmdzKQogCiAgICAgZGVmIGFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKHNlbGYp
OgogICAgICAgICByZXR1cm4gW1Rlc3RDb25maWd1cmF0aW9uLmZyb21fcG9ydChzZWxmKV0KQEAg
LTEwMyw3ICsxMDIsNyBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRU
ZXN0Q2FzZSk6CiAgICAgICAgICAgICAibWh0bWwiLCAgIyBSZXF1aXJlcyBNSFRNTEFyY2hpdmUK
ICAgICAgICAgXSkKIAotICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktp
dFBvcnQoc3ltYm9sc19zdHJpbmcsIE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRl
ZF9mZWF0dXJlcygpKQorICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktp
dFBvcnQoTW9ja0hvc3QoKSwgc3ltYm9sc19zdHJpbmcsIE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zv
cl91bnN1cHBvcnRlZF9mZWF0dXJlcygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Vs
dF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCiAKICAgICAgICAgIyBUZXN0IHRo
YXQgdGhlIG5tIHN0cmluZyBwYXJzaW5nIGFjdHVhbGx5IHdvcmtzOgpAQCAtMTE0LDcgKzExMyw3
IEBAIGNsYXNzIFdlYktpdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICIi
IgogICAgICAgICAjIE5vdGUgJ2NvbXBvc2l0aW5nJyBpcyBub3QgaW4gdGhlIGxpc3Qgb2Ygc2tp
cHBlZCBkaXJlY3RvcmllcyAoaGVuY2UgdGhlIHBhcnNpbmcgb2YgR3JhcGhpY3NMYXllciB3b3Jr
ZWQpOgogICAgICAgICBleHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChbJ21hdGhtbCcsICd0cmFu
c2Zvcm1zLzNkJywgJ2NvbXBvc2l0aW5nL3dlYmdsJywgJ2Zhc3QvY2FudmFzL3dlYmdsJywgJ2Fu
aW1hdGlvbnMvM2QnLCAnbWh0bWwnLCAnaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wnXSkKLSAgICAg
ICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KHN5bWJvbHNfc3RyaW5n
LCBOb25lKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXMoKSkKKyAgICAg
ICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KE1vY2tIb3N0KCksIHN5
bWJvbHNfc3RyaW5nLCBOb25lKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVy
ZXMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRfZGlyZWN0b3JpZXMsIGV4cGVj
dGVkX2RpcmVjdG9yaWVzKQogCiAgICAgZGVmIHRlc3RfcnVudGltZV9mZWF0dXJlX2xpc3Qoc2Vs
Zik6CkBAIC0xMjgsMTQgKzEyNywxNCBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3Rj
YXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3Jf
ZmVhdHVyZXMoc2VsZik6CiAgICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlcyA9IFsiQWNjZWxlcmF0
ZWQgQ29tcG9zaXRpbmciLCAiRm9vIEZlYXR1cmUiXQogICAgICAgICBleHBlY3RlZF9kaXJlY3Rv
cmllcyA9IHNldChbImFuaW1hdGlvbnMvM2QiLCAidHJhbnNmb3Jtcy8zZCJdKQotICAgICAgICBy
ZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoTm9uZSwgc3VwcG9ydGVkX2Zl
YXR1cmVzKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXMoKSkKKyAgICAg
ICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KE1vY2tIb3N0KCksIE5v
bmUsIHN1cHBvcnRlZF9mZWF0dXJlcykuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2Zl
YXR1cmVzKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0X2RpcmVjdG9yaWVzLCBl
eHBlY3RlZF9kaXJlY3RvcmllcykKIAogICAgIGRlZiB0ZXN0X3NraXBwZWRfbGF5b3V0X3Rlc3Rz
KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRlc3RXZWJLaXRQb3J0KE5vbmUsIE5v
bmUpLnNraXBwZWRfbGF5b3V0X3Rlc3RzKCksIHNldChbJ21lZGlhJ10pKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFRlc3RXZWJLaXRQb3J0KE1vY2tIb3N0KCksIE5vbmUsIE5vbmUpLnNraXBw
ZWRfbGF5b3V0X3Rlc3RzKCksIHNldChbJ21lZGlhJ10pKQogCiAgICAgZGVmIHRlc3Rfc2tpcHBl
ZF9maWxlX3NlYXJjaF9wYXRocyhzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0
KCkKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocG9ydC5fc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocygpLCBzZXQoWyd0
ZXN0d2Via2l0cG9ydCddKSkKICAgICAgICAgcG9ydC5fbmFtZSA9ICJ0ZXN0d2Via2l0cG9ydC12
ZXJzaW9uIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX3NraXBwZWRfZmlsZV9zZWFy
Y2hfcGF0aHMoKSwgc2V0KFsndGVzdHdlYmtpdHBvcnQnLCAndGVzdHdlYmtpdHBvcnQtdmVyc2lv
biddKSkKQEAgLTE0MywyMiArMTQyLDIyIEBAIGNsYXNzIFdlYktpdFBvcnRUZXN0KHBvcnRfdGVz
dGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9za2lw
cGVkX2ZpbGVfc2VhcmNoX3BhdGhzKCksIHNldChbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rlc3R3ZWJr
aXRwb3J0LXZlcnNpb24nLCAndGVzdHdlYmtpdHBvcnQtd2syJywgJ3drMiddKSkKIAogICAgIGRl
ZiB0ZXN0X3Jvb3Rfb3B0aW9uKHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQo
KQorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgcG9y
dC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHJvb3Q9Jy9mb28nKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBvcnQuX3BhdGhfdG9fZHJpdmVyKCksICIvZm9vL0R1bXBSZW5kZXJUcmVlIikKIAog
ICAgIGRlZiB0ZXN0X3Rlc3RfZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRo
YXQgd2UgcmVhZCB0aGUgZXhwZWN0YXRpb25zIGZpbGUKLSAgICAgICAgZmlsZXMgPSB7Ci0gICAg
ICAgICAgICAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdHdlYmtpdHBv
cnQvdGVzdF9leHBlY3RhdGlvbnMudHh0JzogJ0JVR19URVNURVhQRUNUQVRJT05TIFNLSVAgOiBm
YXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwgPSBGQUlMXG4nLAotICAgICAgICB9Ci0gICAg
ICAgIG1vY2tfZnMgPSBNb2NrRmlsZVN5c3RlbShmaWxlcykKLSAgICAgICAgcG9ydCA9IFRlc3RX
ZWJLaXRQb3J0KGZpbGVzeXN0ZW09bW9ja19mcykKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkK
KyAgICAgICAgaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL21vY2stY2hlY2tvdXQv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdHdlYmtpdHBvcnQvdGVzdF9leHBlY3RhdGlvbnMudHh0
JywKKyAgICAgICAgICAgICdCVUdfVEVTVEVYUEVDVEFUSU9OUyBTS0lQIDogZmFzdC9odG1sL2Fy
dGljbGUtZWxlbWVudC5odG1sID0gRkFJTFxuJykKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQ
b3J0KGhvc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC50ZXN0X2V4cGVjdGF0aW9u
cygpLCAnQlVHX1RFU1RFWFBFQ1RBVElPTlMgU0tJUCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1l
bnQuaHRtbCA9IEZBSUxcbicpCiAKICAgICBkZWYgdGVzdF9idWlsZF9kcml2ZXIoc2VsZik6CiAg
ICAgICAgIG91dHB1dCA9IE91dHB1dENhcHR1cmUoKQotICAgICAgICBwb3J0ID0gVGVzdFdlYktp
dFBvcnQoKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBwb3J0ID0gVGVzdFdl
YktpdFBvcnQoaG9zdCkKICAgICAgICAgIyBEZWxheSBzZXR0aW5nIF9leGVjdXRpdmUgdG8gYXZv
aWQgbG9nZ2luZyBkdXJpbmcgY29uc3RydWN0aW9uCiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9
IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlKQogICAgICAgICBwb3J0Ll9vcHRpb25zID0g
TW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0iUmVsZWFzZSIpICAjIFRoaXMgc2hvdWxkIG5vdCBi
ZSBuZWNlc3NhcnksIGJ1dCBJIHRoaW5rIFRlc3RXZWJLaXRQb3J0IGlzIGFjdHVhbGx5IHJlYWRp
bmcgZnJvbSBkaXNrIChhbmQgdGh1cyBkZXRlY3RzIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24p
LgpAQCAtMTg5LDcgKzE4OCw3IEBAIGNsYXNzIFdlYktpdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2Uu
UG9ydFRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5fYXBhY2hlX2Nv
bmZpZ19maWxlX25hbWVfZm9yX3BsYXRmb3JtKHBsYXRmb3JtKSwgY29uZmlnX2ZpbGUpCiAKICAg
ICBkZWYgdGVzdF9saW51eF9kaXN0cm9fZGV0ZWN0aW9uKHNlbGYpOgotICAgICAgICBwb3J0ID0g
VGVzdFdlYktpdFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoTW9ja0hvc3Qo
KSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0Ll9pc19yZWRoYXRfYmFzZWQoKSkKICAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0Ll9pc19kZWJpYW5fYmFzZWQoKSkKIApAQCAtMjAy
LDcgKzIwMSw3IEBAIGNsYXNzIFdlYktpdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RD
YXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX2lzX2RlYmlhbl9iYXNlZCgpKQog
CiAgICAgZGVmIHRlc3RfYXBhY2hlX2NvbmZpZ19maWxlX25hbWVfZm9yX3BsYXRmb3JtKHNlbGYp
OgotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFdl
YktpdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zv
cl9wbGF0Zm9ybShwb3J0LCAnY3lnd2luJywgJ2N5Z3dpbi1odHRwZC5jb25mJykKIAogICAgICAg
ICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdsaW51eDInLCAn
YXBhY2hlMi1odHRwZC5jb25mJykKQEAgLTIxMSw3ICsyMTAsNyBAQCBjbGFzcyBXZWJLaXRQb3J0
VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQuX2lzX3JlZGhh
dF9iYXNlZCA9IGxhbWJkYTogVHJ1ZQogICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVf
Zm9yX3BsYXRmb3JtKHBvcnQsICdsaW51eDInLCAnZmVkb3JhLWh0dHBkLmNvbmYnKQogCi0gICAg
ICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9y
dChNb2NrSG9zdCgpKQogICAgICAgICBwb3J0Ll9pc19kZWJpYW5fYmFzZWQgPSBsYW1iZGE6IFRy
dWUKICAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAn
bGludXgyJywgJ2FwYWNoZTItZGViaWFuLWh0dHBkLmNvbmYnKQogCkBAIC0yMjAsNyArMjE5LDcg
QEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAg
ICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdiYXJmJywg
J2FwYWNoZTItaHR0cGQuY29uZicpCiAKICAgICBkZWYgdGVzdF9wYXRoX3RvX2FwYWNoZV9jb25m
aWdfZmlsZShzZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAg
cG9ydCA9IFRlc3RXZWJLaXRQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgICMgTW9jayBvdXQgX2Fw
YWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybSB0byBpZ25vcmUgdGhlIHBhc3NlZCBz
eXMucGxhdGZvcm0gdmFsdWUuCiAgICAgICAgIHBvcnQuX2FwYWNoZV9jb25maWdfZmlsZV9uYW1l
X2Zvcl9wbGF0Zm9ybSA9IGxhbWJkYSBwbGF0Zm9ybTogJ2h0dHBkLmNvbmYnCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHBvcnQuX3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKCksICcvbW9j
ay1jaGVja291dC9MYXlvdXRUZXN0cy9odHRwL2NvbmYvaHR0cGQuY29uZicpCkBAIC0yNDgsNyAr
MjQ3LDcgQEAgY2xhc3MgTW9ja1NlcnZlclByb2Nlc3Mob2JqZWN0KToKIAogY2xhc3MgV2ViS2l0
RHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVhZF9ibG9jayhz
ZWxmKToKLSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgcG9ydCA9IFRl
c3RXZWJLaXRQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIGRyaXZlciA9IFdlYktpdERyaXZlcihw
b3J0LCAwLCBwaXhlbF90ZXN0cz1GYWxzZSkKICAgICAgICAgZHJpdmVyLl9zZXJ2ZXJfcHJvY2Vz
cyA9IE1vY2tTZXJ2ZXJQcm9jZXNzKFsKICAgICAgICAgICAgICdBY3R1YWxIYXNoOiBmb29iYXIn
LApAQCAtMjYyLDcgKzI2MSw3IEBAIGNsYXNzIFdlYktpdERyaXZlclRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb250ZW50X2Jsb2NrLmNvbnRlbnRf
aGFzaCwgJ2Zvb2JhcicpCiAKICAgICBkZWYgdGVzdF9yZWFkX2JpbmFyeV9ibG9jayhzZWxmKToK
LSAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJL
aXRQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIGRyaXZlciA9IFdlYktpdERyaXZlcihwb3J0LCAw
LCBwaXhlbF90ZXN0cz1UcnVlKQogICAgICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzID0gTW9j
a1NlcnZlclByb2Nlc3MoWwogICAgICAgICAgICAgJ0FjdHVhbEhhc2g6IGFjdHVhbCcsCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0
YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4
cGVjdGF0aW9ucy5weQppbmRleCA2NTQyNGY1YmU5YmJjZWU3YjcxOTNiNWZiMjQ2OGI1YzYzYzU3
ZGVlLi5mN2MwYmZjYjhhZTNlZWQwZTUxMTNmOThiMmI5MmUxNTkzOTBiNDEwIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25z
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBl
Y3RhdGlvbnMucHkKQEAgLTY3LDE1ICs2NywxNSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zQ2hl
Y2tlcihvYmplY3QpOgogICAgICAgICAgICAgX2xvZy53YXJuKCJFeGNlcHRpb24gd2hpbGUgZ2V0
dGluZyBwb3J0IGZvciBwYXRoICVzIiAlIGV4cGVjdGF0aW9uc19wYXRoKQogICAgICAgICAgICAg
cmV0dXJuIE5vbmUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX3BhdGgsIGhhbmRsZV9z
dHlsZV9lcnJvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0aCwgaGFuZGxlX3N0
eWxlX2Vycm9yLCBob3N0PU5vbmUpOgogICAgICAgICBzZWxmLl9maWxlX3BhdGggPSBmaWxlX3Bh
dGgKICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yID0gaGFuZGxlX3N0eWxlX2Vycm9y
CiAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvci50dXJuX29mZl9saW5lX2ZpbHRlcmlu
ZygpCiAgICAgICAgIHNlbGYuX3RhYl9jaGVja2VyID0gVGFiQ2hlY2tlcihmaWxlX3BhdGgsIGhh
bmRsZV9zdHlsZV9lcnJvcikKICAgICAgICAgc2VsZi5fb3V0cHV0X3JlZ2V4ID0gcmUuY29tcGls
ZSgnTGluZTooP1A8bGluZT5cZCspXHMqKD9QPG1lc3NhZ2U+LispJykKIAotICAgICAgICAjIEZJ
WE1FOiBBIGhvc3Qgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IgaW5zdGVhZCEK
LSAgICAgICAgaG9zdCA9IEhvc3QoKQorICAgICAgICAjIEZJWE1FOiBob3N0IHNob3VsZCBiZSBh
IHJlcXVpcmVkIHBhcmFtZXRlciwgbm90IGFuIG9wdGlvbmFsIG9uZS4KKyAgICAgICAgaG9zdCA9
IGhvc3Qgb3IgSG9zdCgpCiAgICAgICAgIGhvc3QuX2luaXRpYWxpemVfc2NtKCkKIAogICAgICAg
ICAjIERldGVybWluaW5nIHRoZSBwb3J0IG9mIHRoaXMgZXhwZWN0YXRpb25zLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9u
c191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVz
dF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKaW5kZXggZDMwMDQzMzc1OGNlZDllMTk3NjNjNWNi
N2MyYzczYjY1YzNjNjUxYi4uOTJkMWZlNjI4YTNlMGYxMzgyZDVjNmFiNTRlY2QxOTM1M2Q3MjM0
NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0
X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CkBAIC02NSw3ICs2NSw3
IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAK
ICAgICBkZWYgX2V4cGVjdF9wb3J0X2Zvcl9leHBlY3RhdGlvbnNfcGF0aChzZWxmLCBleHBlY3Rl
ZF9wb3J0X29yX3BvcnRfY2xhc3MsIGV4cGVjdGF0aW9uc19wYXRoKToKICAgICAgICAgaG9zdCA9
IE1vY2tIb3N0KCkKLSAgICAgICAgY2hlY2tlciA9IFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyKGV4
cGVjdGF0aW9uc19wYXRoLCBFcnJvckNvbGxlY3RvcigpKQorICAgICAgICBjaGVja2VyID0gVGVz
dEV4cGVjdGF0aW9uc0NoZWNrZXIoZXhwZWN0YXRpb25zX3BhdGgsIEVycm9yQ29sbGVjdG9yKCks
IGhvc3Q9aG9zdCkKICAgICAgICAgcG9ydCA9IGNoZWNrZXIuX2RldGVybWluZV9wb3J0X2Zyb21f
ZXhlcGVjdGF0aW9uc19wYXRoKGhvc3QsIGV4cGVjdGF0aW9uc19wYXRoKQogICAgICAgICBpZiBw
b3J0OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5fX2NsYXNzX18uX19uYW1l
X18sIGV4cGVjdGVkX3BvcnRfb3JfcG9ydF9jbGFzcykKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3Mg
VGVzdEV4cGVjdGF0aW9uc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgYXNz
ZXJ0X2xpbmVzX2xpbnQoc2VsZiwgbGluZXMsIGV4cGVjdGVkKToKICAgICAgICAgc2VsZi5fZXJy
b3JfY29sbGVjdG9yLnJlc2V0X2Vycm9ycygpCiAgICAgICAgIGNoZWNrZXIgPSBUZXN0RXhwZWN0
YXRpb25zQ2hlY2tlcigndGVzdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3JfY29sbGVjdG9yKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3JfY29sbGVj
dG9yLCBob3N0PU1vY2tIb3N0KCkpCiAgICAgICAgIGNoZWNrZXIuY2hlY2tfdGVzdF9leHBlY3Rh
dGlvbnMoZXhwZWN0YXRpb25zX3N0cj0nXG4nLmpvaW4obGluZXMpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzPVtzZWxmLl90ZXN0X2ZpbGVdLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlcz1Ob25lKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGluZXNlcnZl
cl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL3JlYmFz
ZWxpbmVzZXJ2ZXJfdW5pdHRlc3QucHkKaW5kZXggNjlhNDQwOWJkMWE0NDg3ZGYwNmJjNTE3YjU2
ODVkNTk2YjEzMThiMy4uYjAyZDFkMzU3OTUwNjNkMTA1OWIzMjRmZWJjYjI3ZTM1YWQ3OTI0MyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvcmViYXNlbGlu
ZXNlcnZlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2Vy
dmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5CkBAIC0zNSw5ICszNSw3IEBAIGV4Y2Vw
dCBJbXBvcnRFcnJvcjoKICAgICBpbXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5zaW1wbGVqc29u
IGFzIGpzb24KIAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtX21vY2sg
aW1wb3J0IE1vY2tTQ00KIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldCBpbXBvcnQgcmVzdWx0c2pz
b25wYXJzZXJfdW5pdHRlc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVt
X21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21v
Y2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFj
a2FnZS5qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yIGltcG9ydCBzdHJpcF9qc29uX3dyYXBwZXIKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Via2l0IGltcG9ydCBXZWJLaXRQb3J0CkBA
IC0zMDEsMjMgKzI5OSwyMSBAQCBkZWYgZ2V0X3Rlc3RfY29uZmlnKHRlc3RfZmlsZXM9W10sIHJl
c3VsdF9maWxlcz1bXSk6CiAgICAgIyBXZSBjb3VsZCBncmFiIHRoaXMgZnJvbSBwb3J0LmxheW91
dF90ZXN0c19kaXIoKSwgYnV0IGluc3RhbnRpYXRpbmcgYSBmdWxseSBtb2NrZWQgcG9ydCBpcyBh
IHBhaW4uCiAgICAgbGF5b3V0X3Rlc3RzX2RpcmVjdG9yeSA9ICIvbW9jay1jaGVja291dC9MYXlv
dXRUZXN0cyIKICAgICByZXN1bHRzX2RpcmVjdG9yeSA9ICcvV2ViS2l0QnVpbGQvRGVidWcvbGF5
b3V0LXRlc3QtcmVzdWx0cycKLSAgICBtb2NrX2ZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSgp
CisgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICBmb3IgZmlsZSBpbiB0ZXN0X2ZpbGVzOgotICAg
ICAgICBmaWxlX3BhdGggPSBtb2NrX2ZpbGVzeXN0ZW0uam9pbihsYXlvdXRfdGVzdHNfZGlyZWN0
b3J5LCBmaWxlKQotICAgICAgICBtb2NrX2ZpbGVzeXN0ZW0uZmlsZXNbZmlsZV9wYXRoXSA9ICcn
CisgICAgICAgIGZpbGVfcGF0aCA9IGhvc3QuZmlsZXN5c3RlbS5qb2luKGxheW91dF90ZXN0c19k
aXJlY3RvcnksIGZpbGUpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5maWxlc1tmaWxlX3BhdGhd
ID0gJycKICAgICBmb3IgZmlsZSBpbiByZXN1bHRfZmlsZXM6Ci0gICAgICAgIGZpbGVfcGF0aCA9
IG1vY2tfZmlsZXN5c3RlbS5qb2luKHJlc3VsdHNfZGlyZWN0b3J5LCBmaWxlKQotICAgICAgICBt
b2NrX2ZpbGVzeXN0ZW0uZmlsZXNbZmlsZV9wYXRoXSA9ICcnCisgICAgICAgIGZpbGVfcGF0aCA9
IGhvc3QuZmlsZXN5c3RlbS5qb2luKHJlc3VsdHNfZGlyZWN0b3J5LCBmaWxlKQorICAgICAgICBo
b3N0LmZpbGVzeXN0ZW0uZmlsZXNbZmlsZV9wYXRoXSA9ICcnCiAKICAgICBjbGFzcyBUZXN0TWFj
UG9ydChXZWJLaXRQb3J0KToKICAgICAgICAgcG9ydF9uYW1lID0gIm1hYyIKLSAgICAgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCBm
aWxlc3lzdGVtPW1vY2tfZmlsZXN5c3RlbSwgaG9zdD1Nb2NrSG9zdCgpKQogCiAgICAgcmV0dXJu
IFRlc3RDb25maWcoCi0gICAgICAgIFRlc3RNYWNQb3J0KCksCisgICAgICAgIFRlc3RNYWNQb3J0
KGhvc3QpLAogICAgICAgICBsYXlvdXRfdGVzdHNfZGlyZWN0b3J5LAogICAgICAgICByZXN1bHRz
X2RpcmVjdG9yeSwKICAgICAgICAgKCdtYWMnLCAnbWFjLWxlb3BhcmQnLCAnd2luJywgJ2xpbnV4
JyksCi0gICAgICAgIG1vY2tfZmlsZXN5c3RlbSwKLSAgICAgICAgTW9ja1NDTSgpKQorICAgICAg
ICBob3N0LmZpbGVzeXN0ZW0sCisgICAgICAgIGhvc3Quc2NtKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119897</attachid>
            <date>2011-12-19 12:04:18 -0800</date>
            <delta_ts>2011-12-19 12:04:18 -0800</delta_ts>
            <desc>update w/ review feedback</desc>
            <filename>bug-74562-20111219120417.patch</filename>
            <type>text/plain</type>
            <size>29866</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMjUwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmZlMWY5YThlNThmZjk3ZGU4ODc5Nzk3NThhM2RjOTJm
YjM1OWY5OS4uYmM5MDJhYTg1YWJhMDk1NDI0NmQ1NzIzNWY4NTNiODU1OThlZWM4NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcy
IEBACisyMDExLTEyLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiB1cGRhdGUgdW5pdCB0ZXN0cyBpbiBwcmVwYXJhdGlvbiBmb3IgbWFr
aW5nIGhvc3QgYSBtYW5kYXRvcnkgcGFyYW1ldGVyIHRvIFBvcnQgb2JqZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ1NjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBBcGFydCBmcm9tIGEgbWlub3IgY2hh
bmdlIHRvIHN0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CisgICAgICAgIHRvIHRh
a2UgYSBob3N0IGFzIGEgcGFyYW1ldGVyIHRvIGEgVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIoKSwK
KyAgICAgICAgdGhlcmUgYXJlIG9ubHkgcmVmYWN0b3JpbmcgY2hhbmdlcyB0byB1bml0IHRlc3Rz
IGhlcmUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy90ZXN0X3Jlc3VsdF93cml0ZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0UmVzdWx0
V3JpdGVyVGVzdC50ZXN0X3JlZnRlc3RfZGlmZl9pbWFnZSk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRv
cl91bml0dGVzdC5weToKKyAgICAgICAgKEpTT05HZW5lcmF0b3JUZXN0Ll90ZXN0X2pzb25fZ2Vu
ZXJhdGlvbik6CisgICAgICAgIChKU09OR2VuZXJhdG9yVGVzdC50ZXN0X3Rlc3RfdGltaW5nc190
cmllKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVz
dF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisgICAgICAgIChCYXNlLl9faW5pdF9fKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3Qu
cHk6CisgICAgICAgIChQb3J0VGVzdC5tYWtlX3BvcnQpOgorICAgICAgICAoUG9ydFRlc3QudGVz
dF9sYXlvdXRfdGVzdHNfc2tpcHBpbmcpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF90ZXN0X2Rp
cnMpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF9hZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVjdG9y
eSk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X3VzZXNfdGVzdF9leHBlY3RhdGlvbnNfZmlsZSk6
CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfbm9fcGF0aHNfc3BlY2lmaWVkKToKKyAgICAg
ICAgKFBvcnRUZXN0LnRlc3RfZmluZF9vbmVfdGVzdCk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0
X2ZpbmRfZ2xvYik6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X2ZpbmRfd2l0aF9za2lwcGVkX2Rp
cmVjdG9yaWVzKToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfZmluZF93aXRoX3NraXBwZWRfZGly
ZWN0b3JpZXNfMik6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X3BhcnNlX3JlZnRlc3RfbGlzdCk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHk6
CisgICAgICAgIChEcnlSdW5Qb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHk6CisgICAgICAgIChGYWN0
b3J5VGVzdC5zZXRVcCk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZWFyRG93bik6CisgICAgICAg
IChGYWN0b3J5VGVzdC5hc3NlcnRfcG9ydCk6CisgICAgICAgIChGYWN0b3J5VGVzdC5hc3NlcnRf
cGxhdGZvcm1fcG9ydCk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X3Vua25vd25fc3BlY2lm
aWVkKToKKyAgICAgICAgKEZhY3RvcnlUZXN0LnRlc3RfdW5rbm93bl9kZWZhdWx0KToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5p
dHRlc3QucHk6CisgICAgICAgIChHZXRHb29nbGVDaHJvbWVQb3J0VGVzdC5fdmVyaWZ5X2V4cGVj
dGF0aW9uc19vdmVycmlkZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHk6CisgICAgICAgIChNb2NrRFJUUG9ydFRlc3Qu
bWFrZV9wb3J0KToKKyAgICAgICAgKE1vY2tEUlRUZXN0LmFzc2VydFRlc3QpOgorICAgICAgICAo
TW9ja0RSVFRlc3QudGVzdF9tYWluKToKKyAgICAgICAgKE1vY2tDaHJvbWl1bURSVFRlc3QudGVz
dF9waXhlbHRlc3RfX2ZhaWxzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3F0X3VuaXR0ZXN0LnB5OgorICAgICAgICAoUXRQb3J0VGVzdC5fYXNzZXJ0X3Nl
YXJjaF9wYXRoKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3dlYmtpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RXZWJLaXRQb3J0Ll9faW5pdF9fKToK
KyAgICAgICAgKFdlYktpdFBvcnRUZXN0LnRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3Jfc3lt
Ym9scyk6CisgICAgICAgICh0ZXN0X3NraXBwZWRfZGlyZWN0b3JpZXNfZm9yX2ZlYXR1cmVzKToK
KyAgICAgICAgKHRlc3Rfc2tpcHBlZF9sYXlvdXRfdGVzdHMpOgorICAgICAgICAodGVzdF9za2lw
cGVkX2ZpbGVfc2VhcmNoX3BhdGhzKToKKyAgICAgICAgKHRlc3Rfcm9vdF9vcHRpb24pOgorICAg
ICAgICAodGVzdF90ZXN0X2V4cGVjdGF0aW9ucyk6CisgICAgICAgICh0ZXN0X2J1aWxkX2RyaXZl
cik6CisgICAgICAgICh0ZXN0X2xpbnV4X2Rpc3Ryb19kZXRlY3Rpb24pOgorICAgICAgICAodGVz
dF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0pOgorICAgICAgICAodGVzdF9w
YXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZSk6CisgICAgICAgIChXZWJLaXREcml2ZXJUZXN0LnRl
c3RfcmVhZF9ibG9jayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbnNDaGVja2Vy
Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rl
c3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uc1Rl
c3RDYXNlLl9leHBlY3RfcG9ydF9mb3JfZXhwZWN0YXRpb25zX3BhdGgpOgorICAgICAgICAoVGVz
dEV4cGVjdGF0aW9uc1Rlc3RDYXNlLmFzc2VydF9saW5lc19saW50KToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAoZ2V0X3Rlc3RfY29uZmlnLlRlc3RNYWNQb3J0KToKKwogMjAxMS0xMi0xOSAgUmFw
aGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbRWZs
XSBGaXggcGF0aCByZXR1cm5lZCBieSBidWlsdER5bGliUGF0aEZvck5hbWUgaW4gd2Via2l0ZGly
cy5wbQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVyX3VuaXR0
ZXN0LnB5CmluZGV4IDQ2ZjcyZTZkMzU3ZTI0ZmM3M2FhMDJiNWVjMDRjYTRiZWI4MmY1MWYuLmM3
OTg0NmEyZDIwYWZiNjJmZGMxMDRjNmRiM2I4NDgwMTUyZTlhYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Rlc3RfcmVzdWx0X3dy
aXRlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXJfdW5pdHRlc3QucHkKQEAgLTI2LDYgKzI2
LDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9j
ayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJz
IGltcG9ydCB0ZXN0X3Jlc3VsdF93cml0ZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dC5kcml2ZXIgaW1wb3J0IERyaXZlck91dHB1dApAQCAtNDMsMTQgKzQ0LDE0IEBAIGNsYXNzIFRl
c3RSZXN1bHRXcml0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICB1
c2VkX3RvbGVyYW5jZV92YWx1ZXMuYXBwZW5kKHRvbGVyYW5jZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gKFRydWUsIDEpCiAKLSAgICAgICAgcG9ydCA9IEltYWdlRGlmZlRlc3RQb3J0KCkKLSAg
ICAgICAgZnMgPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisg
ICAgICAgIHBvcnQgPSBJbWFnZURpZmZUZXN0UG9ydChob3N0KQogICAgICAgICB0ZXN0X25hbWUg
PSAnZmFpbHVyZXMvdW5leHBlY3RlZC9yZWZ0ZXN0Lmh0bWwnCi0gICAgICAgIHRlc3RfcmVmZXJl
bmNlX2ZpbGUgPSBmcy5qb2luKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAnZmFpbHVyZXMvdW5l
eHBlY3RlZC9yZWZ0ZXN0LWV4cGVjdGVkLmh0bWwnKQorICAgICAgICB0ZXN0X3JlZmVyZW5jZV9m
aWxlID0gaG9zdC5maWxlc3lzdGVtLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksICdmYWls
dXJlcy91bmV4cGVjdGVkL3JlZnRlc3QtZXhwZWN0ZWQuaHRtbCcpCiAgICAgICAgIGRyaXZlcl9v
dXRwdXQxID0gRHJpdmVyT3V0cHV0KCd0ZXh0MScsICdpbWFnZTEnLCAnaW1hZ2VoYXNoMScsICdh
dWRpbzEnKQogICAgICAgICBkcml2ZXJfb3V0cHV0MiA9IERyaXZlck91dHB1dCgndGV4dDInLCAn
aW1hZ2UyJywgJ2ltYWdlaGFzaDInLCAnYXVkaW8yJykKICAgICAgICAgZmFpbHVyZXMgPSBbdGVz
dF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoKHRlc3RfcmVmZXJlbmNlX2ZpbGUpXQot
ICAgICAgICB0ZXN0X3Jlc3VsdF93cml0ZXIud3JpdGVfdGVzdF9yZXN1bHQoSW1hZ2VEaWZmVGVz
dFBvcnQoKSwgdGVzdF9uYW1lLAorICAgICAgICB0ZXN0X3Jlc3VsdF93cml0ZXIud3JpdGVfdGVz
dF9yZXN1bHQoSW1hZ2VEaWZmVGVzdFBvcnQoaG9zdCksIHRlc3RfbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcl9vdXRwdXQxLCBkcml2ZXJf
b3V0cHV0MiwgZmFpbHVyZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWzBdLCB1c2VkX3Rv
bGVyYW5jZV92YWx1ZXMpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3JfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9q
c29uX3Jlc3VsdHNfZ2VuZXJhdG9yX3VuaXR0ZXN0LnB5CmluZGV4IDBhMzFlNDdiYmExMjhiOGI0
ZjU3OTg3NWI5Y2EyNGE1OWUxMTFiZjYuLmIzZTVjYmNkODhjNTdlZWVmNzE1ZDQ5YTkyNjBjYzAz
NjA2M2IzMzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3JfdW5pdHRlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9y
ZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5weQpAQCAtMzIsNyArMzIsNyBAQCBpbXBvcnQgdW5p
dHRlc3QKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IHJhbmRvbQogCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0gaW1wb3J0IGZpbGVzeXN0ZW1fbW9jaworZnJvbSB3ZWJraXRweS5jb21tb24u
aG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5
b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19nZW5lcmF0b3IKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHRlc3QKQEAgLTg5LDggKzg5LDkgQEAgY2xhc3Mg
SlNPTkdlbmVyYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgIGZh
aWxlZD0odGVzdCBpbiBmYWlsZWRfdGVzdHMpLAogICAgICAgICAgICAgICAgIGVsYXBzZWRfdGlt
ZT10ZXN0X3RpbWluZ3NbdGVzdF0pCiAKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAg
ICAgcG9ydCA9IE1vY2soKQotICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gZmlsZXN5c3RlbV9t
b2NrLk1vY2tGaWxlU3lzdGVtKCkKKyAgICAgICAgcG9ydC5fZmlsZXN5c3RlbSA9IGhvc3QuZmls
ZXN5c3RlbQogICAgICAgICBnZW5lcmF0b3IgPSBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLkpTT05S
ZXN1bHRzR2VuZXJhdG9yQmFzZShwb3J0LAogICAgICAgICAgICAgc2VsZi5idWlsZGVyX25hbWUs
IHNlbGYuYnVpbGRfbmFtZSwgc2VsZi5idWlsZF9udW1iZXIsCiAgICAgICAgICAgICAnJywKQEAg
LTIxMyw3ICsyMTQsNyBAQCBjbGFzcyBKU09OR2VuZXJhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgIHNlbGYuX3Rlc3RfanNvbl9nZW5lcmF0aW9uKFsnZm9vL0EnXSwgWydmb28v
QicsICdiYXIvQyddKQogCiAgICAgZGVmIHRlc3RfdGVzdF90aW1pbmdzX3RyaWUoc2VsZik6Ci0g
ICAgICAgIHRlc3RfcG9ydCA9IHRlc3QuVGVzdFBvcnQoKQorICAgICAgICB0ZXN0X3BvcnQgPSB0
ZXN0LlRlc3RQb3J0KE1vY2tIb3N0KCkpCiAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdz
ID0gW10KICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MuYXBwZW5kKGpzb25fcmVzdWx0
c19nZW5lcmF0b3IuVGVzdFJlc3VsdCgnZm9vL2Jhci9iYXouaHRtbCcsIGVsYXBzZWRfdGltZT0x
LjIpKQogICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncy5hcHBlbmQoanNvbl9yZXN1bHRz
X2dlbmVyYXRvci5UZXN0UmVzdWx0KCdiYXIuaHRtbCcsIGVsYXBzZWRfdGltZT0wLjAwMDEpKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rl
c3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CmluZGV4IDc4ZGE3
NDAzZWQwNGIyNzkwMTg3NTJkZGNmMmYxYWEwODc4MjlhMDEuLmRhNzhlZDQxNmZkN2IyZjYzZWJj
OTQzZTM0ZGUwNTVjN2FkYTIyZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlv
bnNfdW5pdHRlc3QucHkKQEAgLTk0LDcgKzk0LDcgQEAgY2xhc3MgQmFzZSh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RGdW5jLCBzZXRVcD1Ob25lLCB0ZWFy
RG93bj1Ob25lLCBkZXNjcmlwdGlvbj1Ob25lKToKICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkK
ICAgICAgICAgc2VsZi5fcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdC13aW4teHAn
LCBOb25lKQotICAgICAgICBzZWxmLl9mcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KKyAgICAg
ICAgc2VsZi5fZnMgPSBob3N0LmZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5fZXhwID0gTm9uZQog
ICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmLCB0ZXN0RnVuYykKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
X3VuaXR0ZXN0LnB5CmluZGV4IDJmZGNkODBjMjI1MGM5NjM4ZDIxYTI1MTVhOWM4OWU3ZTc4N2Zm
YTkuLjBlYTY0MjVmZGQ0NTJlYjIwYmZmYThjNTQ4MmJiMzQ4MmFlYjhkNDcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5p
dHRlc3QucHkKQEAgLTQ3LDExICs0NywxMiBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5w
b3J0LnRlc3QgaW1wb3J0IFRlc3RQb3J0CiBpbXBvcnQgY29uZmlnCiBpbXBvcnQgY29uZmlnX21v
Y2sKIAotCiBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIG1ha2Vf
cG9ydChzZWxmLCBob3N0PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgaG9zdCA9IGhvc3Qgb3Ig
TW9ja0hvc3QoKQotICAgICAgICByZXR1cm4gUG9ydChob3N0LCAqKmt3YXJncykKKyAgICBkZWYg
bWFrZV9wb3J0KHNlbGYsIGV4ZWN1dGl2ZT1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGhvc3Qg
PSBNb2NrSG9zdCgpCisgICAgICAgIGlmIGV4ZWN1dGl2ZToKKyAgICAgICAgICAgIGhvc3QuZXhl
Y3V0aXZlID0gZXhlY3V0aXZlCisgICAgICAgIHJldHVybiBQb3J0KGhvc3QsIGV4ZWN1dGl2ZT1l
eGVjdXRpdmUsICoqa3dhcmdzKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF9jaGlsZF9wcm9jZXNz
ZXMoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCkBAIC0yMDQsMTEgKzIw
NSw5IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwb3J0LmRlZmF1bHRfY29uZmlndXJhdGlvbigpLCAnZGVmYXVsdCcpCiAKICAg
ICBkZWYgdGVzdF9sYXlvdXRfdGVzdHNfc2tpcHBpbmcoc2VsZik6Ci0gICAgICAgIGZpbGVzeXN0
ZW0gPSBNb2NrRmlsZVN5c3RlbSh7Ci0gICAgICAgICAgICAnL21vY2stY2hlY2tvdXQvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tem9vbS5odG1sJzogJycsCi0gICAgICAgICAgICAnL21vY2stY2hl
Y2tvdXQvTGF5b3V0VGVzdHMvZm9vL2Jhci5odG1sJzogJycsCi0gICAgICAgIH0pCi0gICAgICAg
IHBvcnQgPSBzZWxmLm1ha2VfcG9ydChmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIHBv
cnQgPSBzZWxmLm1ha2VfcG9ydCgpCisgICAgICAgIHBvcnQuZmlsZXN5c3RlbS53cml0ZV90ZXh0
X2ZpbGUocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkgKyAnL21lZGlhL3ZpZGVvLXpvb20uaHRtbCcs
ICcnKQorICAgICAgICBwb3J0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBvcnQubGF5b3V0
X3Rlc3RzX2RpcigpICsgJy9mb28vYmFyLmh0bWwnLCAnJykKICAgICAgICAgcG9ydC5za2lwcGVk
X2xheW91dF90ZXN0cyA9IGxhbWJkYTogWydmb28vYmFyLmh0bWwnLCAnbWVkaWEnXQogICAgICAg
ICBzZWxmLmFzc2VydFRydWUocG9ydC5za2lwc19sYXlvdXRfdGVzdCgnZm9vL2Jhci5odG1sJykp
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LnNraXBzX2xheW91dF90ZXN0KCdtZWRpYS92
aWRlby16b29tLmh0bWwnKSkKQEAgLTIyMCwxMSArMjE5LDEwIEBAIGNsYXNzIFBvcnRUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcG9ydC5zZXR1cF90ZXN0X3J1bigpCiAKICAgICBk
ZWYgdGVzdF90ZXN0X2RpcnMoc2VsZik6Ci0gICAgICAgIGZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5
c3RlbSh7Ci0gICAgICAgICAgICAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvY2FudmFzL3Rl
c3QnOiAnJywKLSAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9jc3MyLjEv
dGVzdCc6ICcnLAotICAgICAgICB9KQotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoZmls
ZXN5c3RlbT1maWxlc3lzdGVtKQorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAg
ICAgICAjIEZJWE1FOiBDb25zaWRlciBhZGRpbmcgYSBmaWxlc3lzdGVtLnRvdWNoKCk/CisgICAg
ICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHBvcnQubGF5b3V0X3Rlc3RzX2Rp
cigpICsgJy9jYW52YXMvdGVzdCcsICcnKQorICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndyaXRl
X3RleHRfZmlsZShwb3J0LmxheW91dF90ZXN0c19kaXIoKSArICcvY3NzMi4xL3Rlc3QnLCAnJykK
ICAgICAgICAgZGlycyA9IHBvcnQudGVzdF9kaXJzKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCdjYW52YXMnIGluIGRpcnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnY3NzMi4xJyBpbiBk
aXJzKQpAQCAtMjYyLDggKzI2MCw3IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Lm5hbWUoKSwgJ2ZvbycpCiAKICAgICBk
ZWYgdGVzdF9hZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgZmls
ZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKCkKLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0
KHBvcnRfbmFtZT0nZm9vJywgZmlsZXN5c3RlbT1maWxlc3lzdGVtKQorICAgICAgICBwb3J0ID0g
c2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSdmb28nKQogICAgICAgICBwb3J0LmJhc2VsaW5lX3Nl
YXJjaF9wYXRoID0gbGFtYmRhOiBbJ0xheW91dFRlc3RzL3BsYXRmb3JtL2ZvbyddCiAgICAgICAg
IGxheW91dF90ZXN0X2RpciA9IHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpCiAgICAgICAgIHRlc3Rf
ZmlsZSA9ICdmYXN0L3Rlc3QuaHRtbCcKQEAgLTI3Niw5ICsyNzMsNyBAQCBjbGFzcyBQb3J0VGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgIyBTaW1wbGUgYWRkaXRpb25hbCBwbGF0
Zm9ybSBkaXJlY3RvcnkKICAgICAgICAgcG9ydC5fb3B0aW9ucy5hZGRpdGlvbmFsX3BsYXRmb3Jt
X2RpcmVjdG9yeSA9IFsnL3RtcC9sb2NhbC1iYXNlbGluZXMnXQotICAgICAgICBmaWxlc3lzdGVt
LmZpbGVzID0gewotICAgICAgICAgICAgJy90bXAvbG9jYWwtYmFzZWxpbmVzL2Zhc3QvdGVzdC1l
eHBlY3RlZC50eHQnOiAnZm9vJywKLSAgICAgICAgfQorICAgICAgICBwb3J0Ll9maWxlc3lzdGVt
LndyaXRlX3RleHRfZmlsZSgnL3RtcC9sb2NhbC1iYXNlbGluZXMvZmFzdC90ZXN0LWV4cGVjdGVk
LnR4dCcsICdmb28nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgcG9y
dC5leHBlY3RlZF9iYXNlbGluZXModGVzdF9maWxlLCAnLnR4dCcpLAogICAgICAgICAgICAgWygn
L3RtcC9sb2NhbC1iYXNlbGluZXMnLCAnZmFzdC90ZXN0LWV4cGVjdGVkLnR4dCcpXSkKQEAgLTI5
MiwzNiArMjg3LDM1IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmJhc2VsaW5lX3BhdGgoKSwgJy9mb28nKQogCiAgICAg
ZGVmIHRlc3RfdXNlc190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgotICAgICAgICBmaWxl
c3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oKQotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQo
cG9ydF9uYW1lPSdmb28nLCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIHBvcnQgPSBz
ZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9J2ZvbycpCiAgICAgICAgIHBvcnQucGF0aF90b190ZXN0
X2V4cGVjdGF0aW9uc19maWxlID0gbGFtYmRhOiAnL21vY2stcmVzdWx0cy90ZXN0X2V4cGVjdGF0
aW9ucy50eHQnCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC51c2VzX3Rlc3RfZXhwZWN0
YXRpb25zX2ZpbGUoKSkKICAgICAgICAgcG9ydC5fZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVt
KHsnL21vY2stcmVzdWx0cy90ZXN0X2V4cGVjdGF0aW9ucy50eHQnOiAnJ30pCiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwb3J0LnVzZXNfdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpKQogCiAgICAg
ZGVmIHRlc3RfZmluZF9ub19wYXRoc19zcGVjaWZpZWQoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBU
ZXN0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICBs
YXlvdXRfdGVzdHNfZGlyID0gcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKICAgICAgICAgdGVzdHMg
PSBwb3J0LnRlc3RzKFtdKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbih0ZXN0cyks
IDApCiAKICAgICBkZWYgdGVzdF9maW5kX29uZV90ZXN0KHNlbGYpOgotICAgICAgICBwb3J0ID0g
VGVzdFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFBvcnQoTW9ja0hvc3QoKSkKICAgICAgICAg
dGVzdHMgPSBwb3J0LnRlc3RzKFsnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCddKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXN0cyksIDEpCiAKICAgICBkZWYgdGVzdF9maW5k
X2dsb2Ioc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0UG9ydCgpCisgICAgICAgIHBvcnQgPSBU
ZXN0UG9ydChNb2NrSG9zdCgpKQogICAgICAgICB0ZXN0cyA9IHBvcnQudGVzdHMoWydmYWlsdXJl
cy9leHBlY3RlZC9pbSonXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGVzdHMpLCAy
KQogCiAgICAgZGVmIHRlc3RfZmluZF93aXRoX3NraXBwZWRfZGlyZWN0b3JpZXMoc2VsZik6Ci0g
ICAgICAgIHBvcnQgPSBUZXN0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0UG9ydChNb2NrSG9z
dCgpKQogICAgICAgICB0ZXN0cyA9IHBvcnQudGVzdHMoJ3VzZXJzY3JpcHRzJykKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCd1c2Vyc2NyaXB0cy9yZXNvdXJjZXMvaWZyYW1lLmh0bWwnIG5vdCBp
biB0ZXN0cykKIAogICAgIGRlZiB0ZXN0X2ZpbmRfd2l0aF9za2lwcGVkX2RpcmVjdG9yaWVzXzIo
c2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0UG9ydCgpCisgICAgICAgIHBvcnQgPSBUZXN0UG9y
dChNb2NrSG9zdCgpKQogICAgICAgICB0ZXN0cyA9IHBvcnQudGVzdHMoWyd1c2Vyc2NyaXB0cy9y
ZXNvdXJjZXMnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0cywgc2V0KFtdKSkKIApA
QCAtMzQxLDcgKzMzNSw3IEBAIGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShQb3J0Ll9pc190ZXN0X2ZpbGUoZmlsZXN5c3RlbSwgJycs
ICdub3RyZWYtZm9vLnhocicpKQogCiAgICAgZGVmIHRlc3RfcGFyc2VfcmVmdGVzdF9saXN0KHNl
bGYpOgotICAgICAgICBwb3J0ID0gVGVzdFBvcnQoKQorICAgICAgICBwb3J0ID0gVGVzdFBvcnQo
TW9ja0hvc3QoKSkKICAgICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJ2Jhci9yZWZ0
ZXN0Lmxpc3QnXSA9ICJcbiIuam9pbihbIj09IHRlc3QuaHRtbCB0ZXN0LXJlZi5odG1sIiwKICAg
ICAgICAgIiIsCiAgICAgICAgICIjIHNvbWUgY29tbWVudCIsCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CmluZGV4IDRkZTgyMzAxYTIx
NmNmZWI5N2Q1ZTdiYjhjZTA5NDQ4NzJmZmQ3OTAuLmFhYWZiMDk0Y2Y2ODc3ZjBhZWEzMDBlMjNl
NzVlYTE1NzMyOTJjMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5CkBAIC01Myw3ICs1Myw5IEBAIGltcG9ydCB0aW1lCiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBEcml2ZXIsIERyaXZlck91dHB1dCwg
ZmFjdG9yeQogCiAKLSMgRklYTUU6IFdoeSBub3QgaW5oZXJpdCBmcm9tIFBvcnQ/CisjIE5vdGUg
dGhhdCB3ZSBkb24ndCBpbmhlcml0IGZyb20gYmFzZS5Qb3J0IGluIG9yZGVyIGZvciBkZWxlZ2F0
aW9uIHRvCisjIHdvcmsgcHJvcGVybHk6IGV4Y2VwdCBmb3IgdGhlIG1ldGhvZHMgZGVmaW5lZCBo
ZXJlLCB3ZSB3YW50IHRvIGVuc3VyZSB0aGF0CisjIGFsbCBvZiB0aGUgbWV0aG9kcyBhcmUgcGFz
c2VkIHRvIHRoZSBfX2RlbGVnYXRlLCBub3QgdG8gdGhlIGJhc2UgY2xhc3MuCiBjbGFzcyBEcnlS
dW5Qb3J0KG9iamVjdCk6CiAgICAgIiIiRHJ5UnVuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBQb3J0
IGludGVyZmFjZS4iIiIKIApAQCAtNjQsNyArNjYsNyBAQCBjbGFzcyBEcnlSdW5Qb3J0KG9iamVj
dCk6CiAgICAgICAgICAgICAgICAga3dhcmdzWydwb3J0X25hbWUnXSA9IGt3YXJnc1sncG9ydF9u
YW1lJ11bbGVuKHBmeCk6XQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBrd2Fy
Z3NbJ3BvcnRfbmFtZSddID0gTm9uZQotICAgICAgICBzZWxmLl9fZGVsZWdhdGUgPSBob3N0LnBv
cnRfZmFjdG9yeS5nZXQoKiprd2FyZ3MpCisgICAgICAgIHNlbGYuX19kZWxlZ2F0ZSA9IGZhY3Rv
cnkuUG9ydEZhY3RvcnkoaG9zdCkuZ2V0KCoqa3dhcmdzKQogCiAgICAgZGVmIF9fZ2V0YXR0cl9f
KHNlbGYsIG5hbWUpOgogICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLl9fZGVsZWdhdGUsIG5h
bWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2ZhY3RvcnlfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKaW5kZXggNjFlMzFmNTJkODlhM2JlOGM0MDNhZjYx
Mjc4MzczMzc5NmI4MTQ0YS4uMWY5YzIzNmM2YjMyNjA1OGY4YjkxMDZmZGEwM2JmMTRlYmIyMmQ2
YyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9m
YWN0b3J5X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQpAQCAtMzAsNyArMzAsNyBAQCBpbXBvcnQgc3lz
CiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBN
b2NrT3B0aW9ucwotZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9z
dAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9j
a1N5c3RlbUhvc3QKIAogaW1wb3J0IGNocm9taXVtX2dwdQogaW1wb3J0IGNocm9taXVtX2xpbnV4
CkBAIC01OSwxNSArNTksMTEgQEAgY2xhc3MgRmFjdG9yeVRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICBzZWxmLnJlYWxfc3lzX3BsYXRmb3JtID0gc3lzLnBsYXRmb3JtCiAgICAgICAg
IHNlbGYud2Via2l0X29wdGlvbnMgPSBNb2NrT3B0aW9ucyhwaXhlbF90ZXN0cz1GYWxzZSkKICAg
ICAgICAgc2VsZi5jaHJvbWl1bV9vcHRpb25zID0gTW9ja09wdGlvbnMocGl4ZWxfdGVzdHM9RmFs
c2UsIGNocm9taXVtPVRydWUpCisgICAgICAgIHNlbGYuZmFjdG9yeSA9IGZhY3RvcnkuUG9ydEZh
Y3RvcnkoTW9ja1N5c3RlbUhvc3QoKSkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAg
ICAgc3lzLnBsYXRmb3JtID0gc2VsZi5yZWFsX3N5c19wbGF0Zm9ybQogCi0gICAgZGVmIG1ha2Vf
ZmFjdG9yeShzZWxmKToKLSAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICAgICAgIyBUaGUg
UG9ydEZhY3Rvcnkgb24gTW9ja0hvc3QgaXMgYSByZWFsIFBvcnRGYWN0b3J5IHdpdGggYSBNb2Nr
RmlsZVN5c3RlbSwgZXRjLgotICAgICAgICByZXR1cm4gaG9zdC5wb3J0X2ZhY3RvcnkKLQogICAg
IGRlZiBhc3NlcnRfcG9ydChzZWxmLCBwb3J0X25hbWUsIGV4cGVjdGVkX3BvcnQsIHBvcnRfb2Jq
PU5vbmUpOgogICAgICAgICAiIiJIZWxwZXIgYXNzZXJ0IGZvciBwb3J0X25hbWUuCiAKQEAgLTc2
LDcgKzcyLDcgQEAgY2xhc3MgRmFjdG9yeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICAgIGV4cGVjdGVkX3BvcnQ6IGNsYXNzIG9mIGV4cGVjdGVkIHBvcnQgb2JqZWN0LgogICAgICAg
ICAgIHBvcnRfb2JqOiBvcHRpb25hbCBwb3J0IG9iamVjdAogICAgICAgICAiIiIKLSAgICAgICAg
cG9ydF9vYmogPSBwb3J0X29iaiBvciBzZWxmLm1ha2VfZmFjdG9yeSgpLmdldChwb3J0X25hbWU9
cG9ydF9uYW1lKQorICAgICAgICBwb3J0X29iaiA9IHBvcnRfb2JqIG9yIHNlbGYuZmFjdG9yeS5n
ZXQocG9ydF9uYW1lPXBvcnRfbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFu
Y2UocG9ydF9vYmosIGV4cGVjdGVkX3BvcnQpKQogCiAgICAgZGVmIGFzc2VydF9wbGF0Zm9ybV9w
b3J0KHNlbGYsIHBsYXRmb3JtLCBvcHRpb25zLCBleHBlY3RlZF9wb3J0KToKQEAgLTkyLDcgKzg4
LDcgQEAgY2xhc3MgRmFjdG9yeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBvcmln
X3BsYXRmb3JtID0gc3lzLnBsYXRmb3JtCiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IHBsYXRmb3Jt
CiAgICAgICAgICMgRklYTUU6IFdlIG5lZWQgYSBiZXR0ZXIgd2F5IHRvIG1vY2sgdGhpcy4KLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5tYWtlX2ZhY3RvcnkoKS5nZXQo
b3B0aW9ucz1vcHRpb25zKSwgZXhwZWN0ZWRfcG9ydCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShpc2luc3RhbmNlKHNlbGYuZmFjdG9yeS5nZXQob3B0aW9ucz1vcHRpb25zKSwgZXhwZWN0ZWRf
cG9ydCkpCiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IG9yaWdfcGxhdGZvcm0KIAogICAgIGRlZiB0
ZXN0X21hYyhzZWxmKToKQEAgLTE1MywxMyArMTQ5LDEzIEBAIGNsYXNzIEZhY3RvcnlUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3Vua25vd25fc3BlY2lmaWVkKHNlbGYp
OgogICAgICAgICAjIFRlc3Qgd2hhdCBoYXBwZW5zIHdoZW4geW91IHNwZWNpZnkgYW4gdW5rbm93
biBwb3J0LgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBz
ZWxmLm1ha2VfZmFjdG9yeSgpLmdldCwgcG9ydF9uYW1lPSd1bmtub3duJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgc2VsZi5mYWN0b3J5LmdldCwgcG9y
dF9uYW1lPSd1bmtub3duJykKIAogICAgIGRlZiB0ZXN0X3Vua25vd25fZGVmYXVsdChzZWxmKToK
ICAgICAgICAgIyBUZXN0IHdoYXQgaGFwcGVucyB3aGVuIHlvdSdyZSBydW5uaW5nIG9uIGFuIHVu
a25vd24gcGxhdGZvcm0uCiAgICAgICAgIG9yaWdfcGxhdGZvcm0gPSBzeXMucGxhdGZvcm0KICAg
ICAgICAgc3lzLnBsYXRmb3JtID0gJ3Vua25vd24nCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KE5vdEltcGxlbWVudGVkRXJyb3IsIHNlbGYubWFrZV9mYWN0b3J5KCkuZ2V0KQorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzZWxmLmZhY3RvcnkuZ2V0KQog
ICAgICAgICBzeXMucGxhdGZvcm0gPSBvcmlnX3BsYXRmb3JtCiAKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVf
Y2hyb21lX3VuaXR0ZXN0LnB5CmluZGV4IGUzMTdlMTJjNWJlN2ZlZmJjMTcwODRlNGNmMzdmYTgw
OGIwNWYyMTMuLjM2ZTRhYjZhYTcxNzM3YWY5ODM4M2QyMWI2MzZiYmZkZTc3ZjhlYjMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2No
cm9tZV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkKQEAgLTI3LDExICsyNyw3IEBACiBpbXBv
cnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2Nr
SG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQg
TW9ja0ZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9j
ayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQotCi0KLWltcG9ydCBnb29nbGVfY2hyb21lCitmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBnb29nbGVfY2hyb21lCiAKIAogY2xhc3Mg
R2V0R29vZ2xlQ2hyb21lUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTksNyArNTUs
NyBAQCBjbGFzcyBHZXRHb29nbGVDaHJvbWVQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIGNocm9taXVtX3BvcnQgPSBob3N0LnBv
cnRfZmFjdG9yeS5nZXQoImNocm9taXVtLWNnLW1hYyIpCiAgICAgICAgIGNocm9taXVtX2Jhc2Ug
PSBjaHJvbWl1bV9wb3J0LnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCkKLSAgICAgICAgcG9ydCA9
IGdvb2dsZV9jaHJvbWUuR2V0R29vZ2xlQ2hyb21lUG9ydChwb3J0X25hbWU9cG9ydF9uYW1lLCBv
cHRpb25zPU5vbmUsIGhvc3Q9aG9zdCkKKyAgICAgICAgcG9ydCA9IGdvb2dsZV9jaHJvbWUuR2V0
R29vZ2xlQ2hyb21lUG9ydChob3N0LCBwb3J0X25hbWU9cG9ydF9uYW1lLCBvcHRpb25zPU5vbmUp
CiAKICAgICAgICAgZXhwZWN0ZWRfY2hyb21pdW1fb3ZlcnJpZGVzID0gJy8vIGNocm9taXVtIG92
ZXJyaWRlc1xuJwogICAgICAgICBleHBlY3RlZF9jaHJvbWVfb3ZlcnJpZGVzID0gJy8vIGNocm9t
ZSBvdmVycmlkZXNcbicKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CmluZGV4IDU2N2MwODc2Y2Mx
ZTNiZmVkNzI2ZTJhMDJkODIzNTU5NjJjMzJkNGYuLmY4MTI5NTg0MDcxZDQwMmVhYTYzODU0ZTNm
YzM0MWU4NDE4ZWRlYTYgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weQpAQCAtNDYsMTAgKzQ2
LDExIEBAIG1vY2tfb3B0aW9ucyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249
J1JlbGVhc2UnKQogCiBjbGFzcyBNb2NrRFJUUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVz
dENhc2UpOgogICAgIGRlZiBtYWtlX3BvcnQoc2VsZiwgb3B0aW9ucz1tb2NrX29wdGlvbnMpOgor
ICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dp
bjMyJzoKICAgICAgICAgICAgICMgV2UgdXNlIHRoaXMgYmVjYXVzZSB0aGUgJ3dpbicgcG9ydCBk
b2Vzbid0IHdvcmsgeWV0LgotICAgICAgICAgICAgcmV0dXJuIG1vY2tfZHJ0Lk1vY2tEUlRQb3J0
KE1vY2tIb3N0KCksIHBvcnRfbmFtZT0nbW9jay1jaHJvbWl1bS13aW4nLCBvcHRpb25zPW9wdGlv
bnMpCi0gICAgICAgIHJldHVybiBtb2NrX2RydC5Nb2NrRFJUUG9ydChNb2NrSG9zdCgpLCBvcHRp
b25zPW9wdGlvbnMpCisgICAgICAgICAgICByZXR1cm4gbW9ja19kcnQuTW9ja0RSVFBvcnQoaG9z
dCwgcG9ydF9uYW1lPSdtb2NrLWNocm9taXVtLXdpbicsIG9wdGlvbnM9b3B0aW9ucykKKyAgICAg
ICAgcmV0dXJuIG1vY2tfZHJ0Lk1vY2tEUlRQb3J0KGhvc3QsIG9wdGlvbnM9b3B0aW9ucykKIAog
ICAgIGRlZiB0ZXN0X2RlZmF1bHRfd29ya2VyX21vZGVsKHNlbGYpOgogICAgICAgICAjIG9ubHkg
b3ZlcnJpZGRpbmcgdGhlIGRlZmF1bHQgdGVzdDsgd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGlzIG9u
ZS4KQEAgLTEzNywxMCArMTM4LDkgQEAgY2xhc3MgTW9ja0RSVFRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICAgICAgICAgICAgICAnI0VPRlxuJywKICAgICAgICAgICAgICAgICAgICAg
JyNFT0ZcbiddCiAKLSAgICBkZWYgYXNzZXJ0VGVzdChzZWxmLCB0ZXN0X25hbWUsIHBpeGVsX3Rl
c3RzLCBleHBlY3RlZF9jaGVja3N1bT1Ob25lLCBkcnRfb3V0cHV0PU5vbmUsIGZpbGVzeXN0ZW09
Tm9uZSk6CisgICAgZGVmIGFzc2VydFRlc3Qoc2VsZiwgdGVzdF9uYW1lLCBwaXhlbF90ZXN0cywg
ZXhwZWN0ZWRfY2hlY2tzdW09Tm9uZSwgZHJ0X291dHB1dD1Ob25lLCBob3N0PU5vbmUpOgogICAg
ICAgICBwb3J0X25hbWUgPSAndGVzdCcKLSAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICAg
ICAgaG9zdC5maWxlc3lzdGVtID0gZmlsZXN5c3RlbSBvciB0ZXN0LnVuaXRfdGVzdF9maWxlc3lz
dGVtKCkKKyAgICAgICAgaG9zdCA9IGhvc3Qgb3IgTW9ja0hvc3QoKQogICAgICAgICBwb3J0ID0g
aG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZSkKICAgICAgICAgZHJ0X2lucHV0LCBkcnRf
b3V0cHV0ID0gc2VsZi5tYWtlX2lucHV0X291dHB1dChwb3J0LCB0ZXN0X25hbWUsCiAgICAgICAg
ICAgICBwaXhlbF90ZXN0cywgZXhwZWN0ZWRfY2hlY2tzdW0sIGRydF9vdXRwdXQpCkBAIC0xNjMs
NyArMTYzLDYgQEAgY2xhc3MgTW9ja0RSVFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAg
ZGVmIHRlc3RfbWFpbihzZWxmKToKICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICAgICAg
aG9zdC5maWxlc3lzdGVtID0gdGVzdC51bml0X3Rlc3RfZmlsZXN5c3RlbSgpCiAgICAgICAgIHN0
ZGluID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQogICAgICAgICBzdGRvdXQgPSBuZXdzdHJpbmdp
by5TdHJpbmdJTygpCiAgICAgICAgIHN0ZGVyciA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKCkKQEAg
LTIzNiw3ICsyMzUsNyBAQCBjbGFzcyBNb2NrQ2hyb21pdW1EUlRUZXN0KE1vY2tEUlRUZXN0KToK
ICAgICAgICAgICAgICAgICAgICAgJyNFT0ZcbiddCiAKICAgICBkZWYgdGVzdF9waXhlbHRlc3Rf
X2ZhaWxzKHNlbGYpOgotICAgICAgICBmaWxlc3lzdGVtID0gdGVzdC51bml0X3Rlc3RfZmlsZXN5
c3RlbSgpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VGVz
dCgnZmFpbHVyZXMvZXhwZWN0ZWQvY2hlY2tzdW0uaHRtbCcsIHBpeGVsX3Rlc3RzPVRydWUsCiAg
ICAgICAgICAgICBleHBlY3RlZF9jaGVja3N1bT0nd3JvbmctY2hlY2tzdW0nLAogICAgICAgICAg
ICAgZHJ0X291dHB1dD1bJyNVUkw6ZmlsZTovLy90ZXN0LmNoZWNrb3V0L0xheW91dFRlc3RzL2Zh
aWx1cmVzL2V4cGVjdGVkL2NoZWNrc3VtLmh0bWxcbicsCkBAIC0yNDQsOCArMjQzLDggQEAgY2xh
c3MgTW9ja0Nocm9taXVtRFJUVGVzdChNb2NrRFJUVGVzdCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAnY2hlY2tzdW0tdHh0JywKICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAnI0VPRlxuJ10sCi0gICAgICAgICAgICBmaWxlc3lzdGVtPWZp
bGVzeXN0ZW0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZpbGVzeXN0ZW0ud3JpdHRlbl9m
aWxlcywKKyAgICAgICAgICAgIGhvc3Q9aG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
aG9zdC5maWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMsCiAgICAgICAgICAgICB7Jy90bXAvcG5nX3Jl
c3VsdDAucG5nJzogJ2NoZWNrc3VtXHg4YS1wbmd0RVh0Y2hlY2tzdW1ceDAwY2hlY2tzdW0tY2hl
Y2tzdW0nfSkKIAogICAgIGRlZiB0ZXN0X2Nocm9taXVtX3BhcnNlX29wdGlvbnMoc2VsZik6CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0X3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdF91
bml0dGVzdC5weQppbmRleCBmNmMxMzBjNWYwZTNlODE3ZjQyMWExMzljOWE2MWY5MTQ5MGZmZWRl
Li4yOWI4YmFjYTYxNDNmZGVmYzgyMzY2NDM3NGI3MDU1YWQ5OGI0MmQ3IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0X3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3Qu
cHkKQEAgLTI5LDcgKzI5LDYgQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3Rl
bQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1
dENhcHR1cmUKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQucXQgaW1wb3J0IFF0UG9y
dAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQpA
QCAtNDUsMTAgKzQ0LDkgQEAgY2xhc3MgUXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0
Q2FzZSk6CiAgICAgICAgICMgRklYTUU6IFBvcnQgY29uc3RydWN0b3JzIHNob3VsZCBub3QgInBh
cnNlIiB0aGUgcG9ydCBuYW1lLCBidXQKICAgICAgICAgIyByYXRoZXIgYmUgcGFzc2VkIGNvbXBv
bmVudHMgKGRpcmVjdGx5IG9yIHZpYSBzZXR0ZXJzKS4gIE9uY2UKICAgICAgICAgIyB3ZSBmaXgg
dGhhdCwgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIGEgcmUtd3JpdGUuCi0gICAgICAgIHBvcnQgPSBR
dFBvcnQoc3lzX3BsYXRmb3JtPXN5c19wbGF0Zm9ybSwKLSAgICAgICAgICAgIG9wdGlvbnM9TW9j
a09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPXVzZV93ZWJraXQyLCBwbGF0Zm9ybT0ncXQnKSwK
LSAgICAgICAgICAgIGhvc3Q9TW9ja0hvc3QoKSwKLSAgICAgICAgICAgIGV4ZWN1dGl2ZT1Nb2Nr
RXhlY3V0aXZlMihzZWxmLl9xdF92ZXJzaW9uKHF0X3ZlcnNpb24pKSkKKyAgICAgICAgaG9zdCA9
IE1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihzZWxm
Ll9xdF92ZXJzaW9uKHF0X3ZlcnNpb24pKQorICAgICAgICBwb3J0ID0gUXRQb3J0KGhvc3QsIHN5
c19wbGF0Zm9ybT1zeXNfcGxhdGZvcm0sIG9wdGlvbnM9TW9ja09wdGlvbnMod2Via2l0X3Rlc3Rf
cnVubmVyPXVzZV93ZWJraXQyLCBwbGF0Zm9ybT0ncXQnKSkKICAgICAgICAgYWJzb2x1dGVfc2Vh
cmNoX3BhdGhzID0gbWFwKHBvcnQuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBzZWFyY2hfcGF0aHMp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKSwg
YWJzb2x1dGVfc2VhcmNoX3BhdGhzKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CmluZGV4IGNjOGZm
ODM5MTg2NDM1ODA4N2EyMDYzYjBhYjdlOTdlNTJiNzcwNGYuLjhiZDFjZmM4OGU4ZTM3ZWRjYzJm
NWVjY2ZhNTZlMTBhZDMyOTJjMzUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0xNDksMTEg
KzE0OSwxMCBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2Fz
ZSk6CiAKICAgICBkZWYgdGVzdF90ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAgICAgIyBD
aGVjayB0aGF0IHdlIHJlYWQgdGhlIGV4cGVjdGF0aW9ucyBmaWxlCi0gICAgICAgIGZpbGVzID0g
ewotICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3R3
ZWJraXRwb3J0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCc6ICdCVUdfVEVTVEVYUEVDVEFUSU9OUyBT
S0lQIDogZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sID0gRkFJTFxuJywKLSAgICAgICAg
fQotICAgICAgICBtb2NrX2ZzID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCi0gICAgICAgIHBvcnQg
PSBUZXN0V2ViS2l0UG9ydChmaWxlc3lzdGVtPW1vY2tfZnMpCisgICAgICAgIGhvc3QgPSBNb2Nr
SG9zdCgpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy9tb2NrLWNo
ZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3R3ZWJraXRwb3J0L3Rlc3RfZXhwZWN0YXRp
b25zLnR4dCcsCisgICAgICAgICAgICAnQlVHX1RFU1RFWFBFQ1RBVElPTlMgU0tJUCA6IGZhc3Qv
aHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IEZBSUxcbicpCisgICAgICAgIHBvcnQgPSBUZXN0
V2ViS2l0UG9ydChob3N0PWhvc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC50ZXN0
X2V4cGVjdGF0aW9ucygpLCAnQlVHX1RFU1RFWFBFQ1RBVElPTlMgU0tJUCA6IGZhc3QvaHRtbC9h
cnRpY2xlLWVsZW1lbnQuaHRtbCA9IEZBSUxcbicpCiAKICAgICBkZWYgdGVzdF9idWlsZF9kcml2
ZXIoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCA2NTQyNGY1YmU5YmJjZWU3YjcxOTNi
NWZiMjQ2OGI1YzYzYzU3ZGVlLi5mN2MwYmZjYjhhZTNlZWQwZTUxMTNmOThiMmI5MmUxNTkzOTBi
NDEwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rl
c3RfZXhwZWN0YXRpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkKQEAgLTY3LDE1ICs2NywxNSBAQCBjbGFzcyBUZXN0
RXhwZWN0YXRpb25zQ2hlY2tlcihvYmplY3QpOgogICAgICAgICAgICAgX2xvZy53YXJuKCJFeGNl
cHRpb24gd2hpbGUgZ2V0dGluZyBwb3J0IGZvciBwYXRoICVzIiAlIGV4cGVjdGF0aW9uc19wYXRo
KQogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxl
X3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVf
cGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yLCBob3N0PU5vbmUpOgogICAgICAgICBzZWxmLl9maWxl
X3BhdGggPSBmaWxlX3BhdGgKICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yID0gaGFu
ZGxlX3N0eWxlX2Vycm9yCiAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvci50dXJuX29m
Zl9saW5lX2ZpbHRlcmluZygpCiAgICAgICAgIHNlbGYuX3RhYl9jaGVja2VyID0gVGFiQ2hlY2tl
cihmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcikKICAgICAgICAgc2VsZi5fb3V0cHV0X3Jl
Z2V4ID0gcmUuY29tcGlsZSgnTGluZTooP1A8bGluZT5cZCspXHMqKD9QPG1lc3NhZ2U+LispJykK
IAotICAgICAgICAjIEZJWE1FOiBBIGhvc3Qgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgY29uc3Ry
dWN0b3IgaW5zdGVhZCEKLSAgICAgICAgaG9zdCA9IEhvc3QoKQorICAgICAgICAjIEZJWE1FOiBo
b3N0IHNob3VsZCBiZSBhIHJlcXVpcmVkIHBhcmFtZXRlciwgbm90IGFuIG9wdGlvbmFsIG9uZS4K
KyAgICAgICAgaG9zdCA9IGhvc3Qgb3IgSG9zdCgpCiAgICAgICAgIGhvc3QuX2luaXRpYWxpemVf
c2NtKCkKIAogICAgICAgICAjIERldGVybWluaW5nIHRoZSBwb3J0IG9mIHRoaXMgZXhwZWN0YXRp
b25zLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90
ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKaW5kZXggZDMwMDQzMzc1
OGNlZDllMTk3NjNjNWNiN2MyYzczYjY1YzNjNjUxYi4uOTJkMWZlNjI4YTNlMGYxMzgyZDVjNmFi
NTRlY2QxOTM1M2Q3MjM0NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5
CkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNUZXN0Q2FzZSh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgX2V4cGVjdF9wb3J0X2Zvcl9leHBlY3RhdGlvbnNfcGF0
aChzZWxmLCBleHBlY3RlZF9wb3J0X29yX3BvcnRfY2xhc3MsIGV4cGVjdGF0aW9uc19wYXRoKToK
ICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICAgICAgY2hlY2tlciA9IFRlc3RFeHBlY3Rh
dGlvbnNDaGVja2VyKGV4cGVjdGF0aW9uc19wYXRoLCBFcnJvckNvbGxlY3RvcigpKQorICAgICAg
ICBjaGVja2VyID0gVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIoZXhwZWN0YXRpb25zX3BhdGgsIEVy
cm9yQ29sbGVjdG9yKCksIGhvc3Q9aG9zdCkKICAgICAgICAgcG9ydCA9IGNoZWNrZXIuX2RldGVy
bWluZV9wb3J0X2Zyb21fZXhlcGVjdGF0aW9uc19wYXRoKGhvc3QsIGV4cGVjdGF0aW9uc19wYXRo
KQogICAgICAgICBpZiBwb3J0OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5f
X2NsYXNzX18uX19uYW1lX18sIGV4cGVjdGVkX3BvcnRfb3JfcG9ydF9jbGFzcykKQEAgLTc5LDcg
Kzc5LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgYXNzZXJ0X2xpbmVzX2xpbnQoc2VsZiwgbGluZXMsIGV4cGVjdGVkKToKICAg
ICAgICAgc2VsZi5fZXJyb3JfY29sbGVjdG9yLnJlc2V0X2Vycm9ycygpCiAgICAgICAgIGNoZWNr
ZXIgPSBUZXN0RXhwZWN0YXRpb25zQ2hlY2tlcigndGVzdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3Jf
Y29sbGVjdG9yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fZXJyb3JfY29sbGVjdG9yLCBob3N0PU1vY2tIb3N0KCkpCiAgICAgICAgIGNoZWNrZXIuY2hl
Y2tfdGVzdF9leHBlY3RhdGlvbnMoZXhwZWN0YXRpb25zX3N0cj0nXG4nLmpvaW4obGluZXMpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzPVtzZWxmLl90ZXN0
X2ZpbGVdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRl
cz1Ob25lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMv
cmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zZXJ2ZXJzL3JlYmFzZWxpbmVzZXJ2ZXJfdW5pdHRlc3QucHkKaW5kZXggNjlhNDQwOWJkMWE0
NDg3ZGYwNmJjNTE3YjU2ODVkNTk2YjEzMThiMy4uYjAyZDFkMzU3OTUwNjNkMTA1OWIzMjRmZWJj
YjI3ZTM1YWQ3OTI0MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3Nl
cnZlcnMvcmViYXNlbGluZXNlcnZlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc2VydmVycy9yZWJhc2VsaW5lc2VydmVyX3VuaXR0ZXN0LnB5CkBAIC0zNSw5
ICszNSw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBpbXBvcnQgd2Via2l0cHkudGhpcmRw
YXJ0eS5zaW1wbGVqc29uIGFzIGpzb24KIAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5zY20uc2NtX21vY2sgaW1wb3J0IE1vY2tTQ00KIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldCBp
bXBvcnQgcmVzdWx0c2pzb25wYXJzZXJfdW5pdHRlc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5sYXlvdXRfcGFja2FnZS5qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yIGltcG9ydCBzdHJpcF9q
c29uX3dyYXBwZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Via2l0IGltcG9y
dCBXZWJLaXRQb3J0CkBAIC0zMDEsMjMgKzI5OSwyMSBAQCBkZWYgZ2V0X3Rlc3RfY29uZmlnKHRl
c3RfZmlsZXM9W10sIHJlc3VsdF9maWxlcz1bXSk6CiAgICAgIyBXZSBjb3VsZCBncmFiIHRoaXMg
ZnJvbSBwb3J0LmxheW91dF90ZXN0c19kaXIoKSwgYnV0IGluc3RhbnRpYXRpbmcgYSBmdWxseSBt
b2NrZWQgcG9ydCBpcyBhIHBhaW4uCiAgICAgbGF5b3V0X3Rlc3RzX2RpcmVjdG9yeSA9ICIvbW9j
ay1jaGVja291dC9MYXlvdXRUZXN0cyIKICAgICByZXN1bHRzX2RpcmVjdG9yeSA9ICcvV2ViS2l0
QnVpbGQvRGVidWcvbGF5b3V0LXRlc3QtcmVzdWx0cycKLSAgICBtb2NrX2ZpbGVzeXN0ZW0gPSBN
b2NrRmlsZVN5c3RlbSgpCisgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICBmb3IgZmlsZSBpbiB0
ZXN0X2ZpbGVzOgotICAgICAgICBmaWxlX3BhdGggPSBtb2NrX2ZpbGVzeXN0ZW0uam9pbihsYXlv
dXRfdGVzdHNfZGlyZWN0b3J5LCBmaWxlKQotICAgICAgICBtb2NrX2ZpbGVzeXN0ZW0uZmlsZXNb
ZmlsZV9wYXRoXSA9ICcnCisgICAgICAgIGZpbGVfcGF0aCA9IGhvc3QuZmlsZXN5c3RlbS5qb2lu
KGxheW91dF90ZXN0c19kaXJlY3RvcnksIGZpbGUpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5m
aWxlc1tmaWxlX3BhdGhdID0gJycKICAgICBmb3IgZmlsZSBpbiByZXN1bHRfZmlsZXM6Ci0gICAg
ICAgIGZpbGVfcGF0aCA9IG1vY2tfZmlsZXN5c3RlbS5qb2luKHJlc3VsdHNfZGlyZWN0b3J5LCBm
aWxlKQotICAgICAgICBtb2NrX2ZpbGVzeXN0ZW0uZmlsZXNbZmlsZV9wYXRoXSA9ICcnCisgICAg
ICAgIGZpbGVfcGF0aCA9IGhvc3QuZmlsZXN5c3RlbS5qb2luKHJlc3VsdHNfZGlyZWN0b3J5LCBm
aWxlKQorICAgICAgICBob3N0LmZpbGVzeXN0ZW0uZmlsZXNbZmlsZV9wYXRoXSA9ICcnCiAKICAg
ICBjbGFzcyBUZXN0TWFjUG9ydChXZWJLaXRQb3J0KToKICAgICAgICAgcG9ydF9uYW1lID0gIm1h
YyIKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgV2ViS2l0UG9ydC5f
X2luaXRfXyhzZWxmLCBmaWxlc3lzdGVtPW1vY2tfZmlsZXN5c3RlbSwgaG9zdD1Nb2NrSG9zdCgp
KQogCiAgICAgcmV0dXJuIFRlc3RDb25maWcoCi0gICAgICAgIFRlc3RNYWNQb3J0KCksCisgICAg
ICAgIFRlc3RNYWNQb3J0KGhvc3QpLAogICAgICAgICBsYXlvdXRfdGVzdHNfZGlyZWN0b3J5LAog
ICAgICAgICByZXN1bHRzX2RpcmVjdG9yeSwKICAgICAgICAgKCdtYWMnLCAnbWFjLWxlb3BhcmQn
LCAnd2luJywgJ2xpbnV4JyksCi0gICAgICAgIG1vY2tfZmlsZXN5c3RlbSwKLSAgICAgICAgTW9j
a1NDTSgpKQorICAgICAgICBob3N0LmZpbGVzeXN0ZW0sCisgICAgICAgIGhvc3Quc2NtKCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>