<?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>73603</bug_id>
          
          <creation_ts>2011-12-01 16:46:18 -0800</creation_ts>
          <short_desc>nrwt shouldn&apos;t blow up when there are errors in test_expectations.txt</short_desc>
          <delta_ts>2012-02-10 16:13:10 -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>Tools / Tests</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>74762</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>513266</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-01 16:46:18 -0800</bug_when>
    <thetext>It&apos;s really disrupting for nrwt not to run tests, and being able to cause that by just having one typo in test_expectations.txt is super annoying especially for webkit gardeners.

We should make sure nrwt gracefully fails when encountering such errors (e.g. ignoring lines with errors).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513278</commentid>
    <comment_count>1</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-01 16:54:03 -0800</bug_when>
    <thetext>NRWT fails by design; having errors like duplicate expectations is bad and shouldn&apos;t be ignored; in other words, if there is an error in the expectations file, it should fail the build step. But I don&apos;t think you&apos;re suggesting the errors should be ignored completely (i.e., what would happen if we just turned them into warnings).

I think one problem now is that when this does fail, the reason for the failure isn&apos;t obvious on the waterfall ... you get a ??? rather than &quot;bad expectations&quot; or something. It may partially because (IIRC) duplicate expectations actually cause a stack trace rather than an orderly exit.

I think one could argue that a bad expectation, if it was obvious enough, should be sufficient, because it would be quickly corrected.

However, I could also be convinced that NRWT should run what it can unambiguously run and come up with some sort of meaningful failure interpretation.

Another possibility would be to add a new --lint-test-files builds step that turned red separately from the actual test run. Then the test run would be free to treat the parsing failures as warnings and proceed on.

CC&apos;ing Tony and Ojan on this since I believe they&apos;ve held opinions on this in the past.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513280</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-12-01 16:56:25 -0800</bug_when>
    <thetext>We should just make it harder to check in failures.  webkit-patch land and webkit-patch land-cowboy should both check to see if test_expectations.txt has changed, if it has, run --lint-test-files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513286</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-01 17:00:30 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; NRWT fails by design; having errors like duplicate expectations is bad and shouldn&apos;t be ignored; in other words, if there is an error in the expectations file, it should fail the build step. But I don&apos;t think you&apos;re suggesting the errors should be ignored completely (i.e., what would happen if we just turned them into warnings).

No, I&apos;m not suggesting to ignore the failure. I&apos;m just suggesting to make nrwt not stop running tests when encountering errors.

&gt; I think one problem now is that when this does fail, the reason for the failure isn&apos;t obvious on the waterfall ... you get a ??? rather than &quot;bad expectations&quot; or something. It may partially because (IIRC) duplicate expectations actually cause a stack trace rather than an orderly exit.

We can just ignore the line and assume it&apos;s PASS unless otherwise specified elsewhere.

&gt; Another possibility would be to add a new --lint-test-files builds step that turned red separately from the actual test run. Then the test run would be free to treat the parsing failures as warnings and proceed on.

nrwt can still fail by returning -1 at the end. It&apos;s not great to lose the entire test coverage just for one typo in text_expectations.txt.

(In reply to comment #2)
&gt; We should just make it harder to check in failures.  webkit-patch land and webkit-patch land-cowboy should both check to see if test_expectations.txt has changed, if it has, run --lint-test-files.

I don&apos;t think that&apos;s a good idea (I&apos;ll be opposed to such an idea). I don&apos;t want webkit-patch land get slowed down by such checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513287</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-01 17:03:08 -0800</bug_when>
    <thetext>&gt; (In reply to comment #2)
&gt; &gt; We should just make it harder to check in failures.  webkit-patch land and webkit-patch land-cowboy should both check to see if test_expectations.txt has changed, if it has, run --lint-test-files.
&gt; 
&gt; I don&apos;t think that&apos;s a good idea (I&apos;ll be opposed to such an idea). I don&apos;t want webkit-patch land get slowed down by such checks.

Let me rephrase it. I&apos;ll be opposed to this idea because I don&apos;t want us to keep adding such checks to webkit-patch land and slow it down. Even today, I use &quot;svn commit&quot; sometimes to avoid having to wait for webkit-patch land to run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513323</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-01 17:29:51 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; We should just make it harder to check in failures.  webkit-patch land and webkit-patch land-cowboy should both check to see if test_expectations.txt has changed, if it has, run --lint-test-files.

I strongly support this; I view it as equivalent to a style check. It should no more be acceptable to check in expectation errors than any other kind of quickly-catchable error.

If --lint-test-files is too slow, we can look into speeding it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513330</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-01 17:35:59 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #2)
&gt; &gt; We should just make it harder to check in failures.  webkit-patch land and webkit-patch land-cowboy should both check to see if test_expectations.txt has changed, if it has, run --lint-test-files.
&gt; 
&gt; I strongly support this; I view it as equivalent to a style check. It should no more be acceptable to check in expectation errors than any other kind of quickly-catchable error.

Sure, but adding things to webkit-patch doesn&apos;t help at all if people land patches with svn commit.

Anyhow, I don&apos;t think it&apos;s a big deal with a bad entry or two as long as bots are turned red because then gardeners can fix those errors in the next iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513332</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-01 17:36:57 -0800</bug_when>
    <thetext>By the way, as discussed elsewhere, we should get rid of :, =, ordering, etc... grammar we have in test_expectations.txt. It does more harm than it helps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513515</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-01 22:38:12 -0800</bug_when>
    <thetext>I agree.  I don&apos;t think it should be a fatal error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539145</commentid>
    <comment_count>9</comment_count>
      <attachid>123221</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-19 16:31:34 -0800</bug_when>
    <thetext>Created attachment 123221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539147</commentid>
    <comment_count>10</comment_count>
      <attachid>123221</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-19 16:37:30 -0800</bug_when>
    <thetext>Comment on attachment 123221
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:134
&gt; +    def assert_bad_exp(self, expectations, overrides=None):

What does &quot;exp&quot; stand here? Please spell out the word.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539148</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-19 16:40:18 -0800</bug_when>
    <thetext>Ojan and/or Dimitri, can you please take a look at this as well?

Ojan, Adam, this shows the duplication in testing I was talking about between layout_tests/models/test_expectations_unittests.py and style/checkers/test_expectations_unittest.py.

I think we should just have the style checker test test that we do parse the expectations once and get an error, but there&apos;s no need to test all of the different kinds of errors (since the unit tests for the parser themselves catch this). I can either make that change as part of this patch or (preferably) in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539149</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-19 16:41:49 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I think we should just have the style checker test test that we do parse the expectations once and get an error, but there&apos;s no need to test all of the different kinds of errors (since the unit tests for the parser themselves catch this). I can either make that change as part of this patch or (preferably) in a follow-up patch.

That sounds like a nice follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539151</commentid>
    <comment_count>13</comment_count>
      <attachid>123222</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-19 16:42:55 -0800</bug_when>
    <thetext>Created attachment 123222
rename assert_bad_exp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539157</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-19 16:47:22 -0800</bug_when>
    <thetext>I&apos;ll let Adam or Ojan review this time as you&apos;ve requested :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539160</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-19 16:55:35 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; I&apos;ll let Adam or Ojan review this time as you&apos;ve requested :)

Thanks for your review as well! The only change between the two revisions is renaming the method as you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539676</commentid>
    <comment_count>16</comment_count>
      <attachid>123222</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-20 12:05:53 -0800</bug_when>
    <thetext>Comment on attachment 123222
rename assert_bad_exp

Okay, I think Adam and Ojan must have had a chance to look at this. If not, we can always revert it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539706</commentid>
    <comment_count>17</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-20 12:29:43 -0800</bug_when>
    <thetext>I&apos;m not a fan of doing this before we&apos;ve added a lint step on the bots. Without that, we&apos;ll just get a ton of warnings that people will ignore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539709</commentid>
    <comment_count>18</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-20 12:31:26 -0800</bug_when>
    <thetext>Also, now that webkit-patch catches these errors, I think it will be extremely rare for people to check them in if they break the tests. If they just give a warning, then people will check them in and learn to ignore the pre-submit warnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539763</commentid>
    <comment_count>19</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-20 13:45:53 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; I&apos;m not a fan of doing this before we&apos;ve added a lint step on the bots. Without that, we&apos;ll just get a ton of warnings that people will ignore.

I can certainly delay landing this until after we have a lint step on the bots.

(In reply to comment #18)
&gt; Also, now that webkit-patch catches these errors, I think it will be extremely rare for people to check them in if they break the tests. If they just give a warning, then people will check them in and learn to ignore the pre-submit warnings.

I don&apos;t think I understand what you&apos;re suggesting here. Are you saying these should always be errors? Or that we should keep the current behavior instead of this? Or perhaps these should be errors unless we provide a switch to make them non-fatal (which we would probably want to use on the bots)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539769</commentid>
    <comment_count>20</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-20 13:54:55 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; I&apos;m not a fan of doing this before we&apos;ve added a lint step on the bots. Without that, we&apos;ll just get a ton of warnings that people will ignore.
&gt; 
&gt; I can certainly delay landing this until after we have a lint step on the bots.

That would be my preference.

&gt; (In reply to comment #18)
&gt; &gt; Also, now that webkit-patch catches these errors, I think it will be extremely rare for people to check them in if they break the tests. If they just give a warning, then people will check them in and learn to ignore the pre-submit warnings.
&gt; 
&gt; I don&apos;t think I understand what you&apos;re suggesting here. Are you saying these should always be errors? Or that we should keep the current behavior instead of this? Or perhaps these should be errors unless we provide a switch to make them non-fatal (which we would probably want to use on the bots)?

Sorry, I was just being confusing. I&apos;m happy with this patch as is once we add a lint step on the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548130</commentid>
    <comment_count>21</comment_count>
      <attachid>125178</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-02 13:37:21 -0800</bug_when>
    <thetext>Created attachment 125178
rebase to head.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548148</commentid>
    <comment_count>22</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-02 13:55:24 -0800</bug_when>
    <thetext>Committed r106591: &lt;http://trac.webkit.org/changeset/106591&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554208</commentid>
    <comment_count>23</comment_count>
      <attachid>125178</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-10 10:53:51 -0800</bug_when>
    <thetext>Comment on attachment 125178
rebase to head.

Cleared review? from attachment 125178 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554478</commentid>
    <comment_count>24</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-10 16:13:10 -0800</bug_when>
    <thetext>that patch landed as per comment #22; not sure why the r? wasn&apos;t cleared, but thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123221</attachid>
            <date>2012-01-19 16:31:34 -0800</date>
            <delta_ts>2012-01-19 16:42:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73603-20120119163133.patch</filename>
            <type>text/plain</type>
            <size>34897</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NDQ5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjFjOWNkMTA5MWEzYjEzMWNmODBmM2ZjODJlZTA2NWYw
ODhlNGI5Mi4uNTZmZjU5Zjg1YjZjODc4MjRlOTg4MzQ4NzljOTRmZmQ1M2U1NGRlYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc0
IEBACiAyMDEyLTAxLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5yd3Qgc2hvdWxkbid0IGJsb3cgdXAgd2hlbiB0aGVyZSBhcmUgZXJyb3JzIGluIHRl
c3RfZXhwZWN0YXRpb25zLnR4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzM2MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSByZW1vdmVzIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuICdl
cnJvcnMnIGFuZCAnd2FybmluZ3MnCisgICAgICAgIGluIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBw
YXJzZXIuIE5vdywgYW55IHByb2JsZW0gaXMgYQorICAgICAgICAnd2FybmluZycsIGFuZCBpZiB3
ZSBhcmUgbGludGluZyB0aGUgZmlsZSwgd2FybmluZ3MgYmVjb21lIGZhdGFsIChlcnJvcnMpLgor
CisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBhIG5vcm1hbCBydW4td2Via2l0LXRlc3RzIHJ1biB0
byBwcm9jZWVkIGV2ZW4gaWYKKyAgICAgICAgdGhlcmUgYXJlIGJhZCBsaW5lcy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6
CisgICAgICAgIChNYW5hZ2VyLmxpbnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKFBhcnNlRXJy
b3IuX19pbml0X18pOgorICAgICAgICAoUGFyc2VFcnJvci5fX3N0cl9fKToKKyAgICAgICAgKFBh
cnNlRXJyb3IuX19yZXByX18pOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplci50
b19zdHJpbmcpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyLl9wYXJzZV9tb2RpZmll
cnMpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyLl9wYXJzZV9leHBlY3RhdGlvbnMp
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyLl9jaGVja19tb2RpZmllcnNfYWdhaW5z
dF9leHBlY3RhdGlvbnMpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyLnRva2VuaXpl
KToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbkxpbmUuX19pbml0X18pOgorICAgICAgICAoVGVz
dEV4cGVjdGF0aW9uTGluZS5pc19pbnZhbGlkKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbnNN
b2RlbC5hZGRfZXhwZWN0YXRpb25fbGluZSk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25zTW9k
ZWwuX2FscmVhZHlfc2Vlbl9iZXR0ZXJfbWF0Y2gpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9u
cy5fX2luaXRfXyk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25zLl9yZXBvcnRfd2FybmluZ3Mp
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9ucy5yZW1vdmVfcmViYXNlbGluZWRfdGVzdHMud2l0
aG91dF9yZWJhc2VsaW5lX21vZGlmaWVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisgICAgICAg
IChhc3NlcnRfYmFkX2V4cCk6CisgICAgICAgICh0ZXN0X3BhcnNlX3dhcm5pbmdzKToKKyAgICAg
ICAgKHRlc3Rfb3ZlcnJpZGVzX19kdXBsaWNhdGUpOgorICAgICAgICAoRXhwZWN0YXRpb25TeW50
YXhUZXN0cy50ZXN0X21pc3NpbmdfZXhwZWN0YXRpb24pOgorICAgICAgICAoRXhwZWN0YXRpb25T
eW50YXhUZXN0cy50ZXN0X21pc3NpbmdfY29sb24pOgorICAgICAgICAoRXhwZWN0YXRpb25TeW50
YXhUZXN0cy50ZXN0X3Rvb19tYW55X2NvbG9ucyk6CisgICAgICAgIChFeHBlY3RhdGlvblN5bnRh
eFRlc3RzLnRlc3RfdG9vX21hbnlfZXF1YWxzX3NpZ25zKToKKyAgICAgICAgKEV4cGVjdGF0aW9u
U3ludGF4VGVzdHMudGVzdF91bnJlY29nbml6ZWRfZXhwZWN0YXRpb24pOgorICAgICAgICAoU2Vt
YW50aWNUZXN0cy50ZXN0X2J1Z19mb3JtYXQpOgorICAgICAgICAoU2VtYW50aWNUZXN0cy50ZXN0
X21pc3NpbmdfYnVnaWQpOgorICAgICAgICAoU2VtYW50aWNUZXN0cy50ZXN0X3Nsb3dfYW5kX3Rp
bWVvdXQpOgorICAgICAgICAoU2VtYW50aWNUZXN0cy50ZXN0X3JlYmFzZWxpbmUpOgorICAgICAg
ICAoU2VtYW50aWNUZXN0cy50ZXN0X2R1cGxpY2F0ZXMpOgorICAgICAgICAoU2VtYW50aWNUZXN0
cy50ZXN0X21pc3NpbmdfZmlsZSk6CisgICAgICAgICh0ZXN0X2FtYmlndW91cyk6CisgICAgICAg
ICh0ZXN0X21vcmVfbW9kaWZpZXJzKToKKyAgICAgICAgKHRlc3Rfb3JkZXJfaW5fZmlsZSk6Cisg
ICAgICAgICh0ZXN0X21hY3JvX292ZXJyaWRlcyk6CisgICAgICAgIChSZWJhc2VsaW5pbmdUZXN0
LmFzc2VydFJlbW92ZSk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25QYXJzZXJUZXN0cy50ZXN0
X3Rva2VuaXplX2JsYW5rKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblBhcnNlclRlc3RzLnRl
c3RfdG9rZW5pemVfbWlzc2luZ19jb2xvbik6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25QYXJz
ZXJUZXN0cy50ZXN0X3Rva2VuaXplX2V4dHJhX2NvbG9uKToKKyAgICAgICAgKFRlc3RFeHBlY3Rh
dGlvblBhcnNlclRlc3RzLnRlc3RfdG9rZW5pemVfZW1wdHlfY29tbWVudCk6CisgICAgICAgIChU
ZXN0RXhwZWN0YXRpb25QYXJzZXJUZXN0cy50ZXN0X3Rva2VuaXplX2NvbW1lbnQpOgorICAgICAg
ICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyVGVzdHMudGVzdF90b2tlbml6ZV9taXNzaW5nX2VxdWFs
KToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblBhcnNlclRlc3RzLnRlc3RfdG9rZW5pemVfZXh0
cmFfZXF1YWwpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyVGVzdHMudGVzdF90b2tl
bml6ZV92YWxpZCk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25QYXJzZXJUZXN0cy50ZXN0X3Rv
a2VuaXplX3ZhbGlkX3dpdGhfY29tbWVudCk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25QYXJz
ZXJUZXN0cy50ZXN0X3Rva2VuaXplX3ZhbGlkX3dpdGhfbXVsdGlwbGVfbW9kaWZpZXJzKToKKyAg
ICAgICAgKFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXJUZXN0cy50ZXN0X3VucGFyc2VkX3RvX3N0
cmluZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4
cGVjdGF0aW9ucy5weToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyLmNoZWNrX3Rl
c3RfZXhwZWN0YXRpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdEV4cGVjdGF0
aW9uc1Rlc3RDYXNlLnRlc3RfdmFsaWRfbW9kaWZpZXJzKToKKyAgICAgICAgKFRlc3RFeHBlY3Rh
dGlvbnNUZXN0Q2FzZS50ZXN0X2V4cGVjdGF0aW9uX2Vycm9ycyk6CisKKzIwMTItMDEtMTkgIERp
cmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgcmVtb3ZlIHRoZSBk
dXBsaWNhdGVkIGJ1aWxkIHJ1bGVzIGZyb20gV2ViS2l0Lmd5cCwgVG9vbHMuZ3lwCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzM4NAogCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlci5weQppbmRleCAyNGQxYjczMWM0MDg0ZjExNDVmMmExNjQ2NmI3YTI5M2E0NTExOTQy
Li4wN2M5NzE3YThmOTUyZWUyOTBlZjdjMDM3YzBlNTUzOTFkNjY0YTk2IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXIucHkKQEAgLTM1NCw3ICszNTQsNiBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgc2VsZi5saW50X2V4cGVjdGF0aW9ucyh0ZXN0X2NvbmZpZ3VyYXRpb24pCiAg
ICAgICAgICAgICBleGNlcHQgdGVzdF9leHBlY3RhdGlvbnMuUGFyc2VFcnJvcjoKICAgICAgICAg
ICAgICAgICBsaW50X2ZhaWxlZCA9IFRydWUKLSAgICAgICAgICAgICAgICBzZWxmLl9wcmludGVy
LndyaXRlKCIiKQogCiAgICAgICAgIGlmIGxpbnRfZmFpbGVkOgogICAgICAgICAgICAgX2xvZy5l
cnJvcigiTGludCBmYWlsZWQuIikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCBj
Zjk3YjM0MjVjZWVjNTY1M2QzODhmYzZiNDFlYzc1YTI0OTBlZmM5Li44MDRkNGNlOWE2MzJjYmUz
OGMzOWViMWM3Y2EzZmFkZmEwMzQxMjkzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5
CkBAIC0xMDgsMTUgKzEwOCwxNCBAQCBkZWYgc3RyaXBfY29tbWVudHMobGluZSk6CiAKIAogY2xh
c3MgUGFyc2VFcnJvcihFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYXRhbCwg
ZXJyb3JzKToKLSAgICAgICAgc2VsZi5mYXRhbCA9IGZhdGFsCi0gICAgICAgIHNlbGYuZXJyb3Jz
ID0gZXJyb3JzCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdhcm5pbmdzKToKKyAgICAgICAgc2Vs
Zi53YXJuaW5ncyA9IHdhcm5pbmdzCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAg
cmV0dXJuICdcbicuam9pbihtYXAoc3RyLCBzZWxmLmVycm9ycykpCisgICAgICAgIHJldHVybiAn
XG4nLmpvaW4obWFwKHN0ciwgc2VsZi53YXJuaW5ncykpCiAKICAgICBkZWYgX19yZXByX18oc2Vs
Zik6Ci0gICAgICAgIHJldHVybiAnUGFyc2VFcnJvcihmYXRhbD0lcywgZXJyb3JzPSVzKScgJSAo
c2VsZi5mYXRhbCwgc2VsZi5lcnJvcnMpCisgICAgICAgIHJldHVybiAnUGFyc2VFcnJvcih3YXJu
aW5ncz0lcyknICUgc2VsZi53YXJuaW5ncwogCiAKIGNsYXNzIFRlc3RFeHBlY3RhdGlvblNlcmlh
bGl6ZXIob2JqZWN0KToKQEAgLTEyNiw3ICsxMjUsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25T
ZXJpYWxpemVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BhcnNlZF9leHBlY3RhdGlvbl90b19z
dHJpbmcgPSBkaWN0KFtbcGFyc2VkX2V4cGVjdGF0aW9uLCBleHBlY3RhdGlvbl9zdHJpbmddIGZv
ciBleHBlY3RhdGlvbl9zdHJpbmcsIHBhcnNlZF9leHBlY3RhdGlvbiBpbiBUZXN0RXhwZWN0YXRp
b25zLkVYUEVDVEFUSU9OUy5pdGVtcygpXSkKIAogICAgIGRlZiB0b19zdHJpbmcoc2VsZiwgZXhw
ZWN0YXRpb25fbGluZSk6Ci0gICAgICAgIGlmIGV4cGVjdGF0aW9uX2xpbmUuaXNfbWFsZm9ybWVk
KCk6CisgICAgICAgIGlmIGV4cGVjdGF0aW9uX2xpbmUuaXNfaW52YWxpZCgpOgogICAgICAgICAg
ICAgcmV0dXJuIGV4cGVjdGF0aW9uX2xpbmUub3JpZ2luYWxfc3RyaW5nIG9yICcnCiAKICAgICAg
ICAgaWYgZXhwZWN0YXRpb25fbGluZS5uYW1lIGlzIE5vbmU6CkBAIC0yMTUsNiArMjE0LDcgQEAg
Y2xhc3MgVGVzdEV4cGVjdGF0aW9uUGFyc2VyKG9iamVjdCk6CiAKICAgICBkZWYgX3BhcnNlX21v
ZGlmaWVycyhzZWxmLCBleHBlY3RhdGlvbl9saW5lKToKICAgICAgICAgaGFzX3dvbnRmaXggPSBG
YWxzZQorICAgICAgICBiYWRfYnVnX21vZGlmaWVyID0gRmFsc2UKICAgICAgICAgcGFyc2VkX3Nw
ZWNpZmllcnMgPSBzZXQoKQogICAgICAgICBmb3IgbW9kaWZpZXIgaW4gZXhwZWN0YXRpb25fbGlu
ZS5tb2RpZmllcnM6CiAgICAgICAgICAgICBpZiBtb2RpZmllciBpbiBUZXN0RXhwZWN0YXRpb25z
Lk1PRElGSUVSUzoKQEAgLTIyMywzMyArMjIzLDM0IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvblBh
cnNlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBoYXNfd29udGZpeCA9IFRydWUKICAg
ICAgICAgICAgIGVsaWYgbW9kaWZpZXIuc3RhcnRzd2l0aChzZWxmLkJVR19NT0RJRklFUl9QUkVG
SVgpOgogICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKHNlbGYuQlVHX01PRElGSUVSX1JFR0VY
LCBtb2RpZmllcik6Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUuZXJyb3Jz
LmFwcGVuZCgnQlVHXGQrIGlzIG5vdCBhbGxvd2VkLCBtdXN0IGJlIG9uZSBvZiBCVUdDUlxkKywg
QlVHV0tcZCssIEJVR1Y4X1xkKywgb3IgYSBub24tbnVtZXJpYyBidWcgaWRlbnRpZmllci4nKQor
ICAgICAgICAgICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLndhcm5pbmdzLmFwcGVuZCgnQlVH
XGQrIGlzIG5vdCBhbGxvd2VkLCBtdXN0IGJlIG9uZSBvZiBCVUdDUlxkKywgQlVHV0tcZCssIEJV
R1Y4X1xkKywgb3IgYSBub24tbnVtZXJpYyBidWcgaWRlbnRpZmllci4nKQorICAgICAgICAgICAg
ICAgICAgICBiYWRfYnVnX21vZGlmaWVyID0gVHJ1ZQogICAgICAgICAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUucGFyc2VkX2J1Z19tb2RpZmllcnMu
YXBwZW5kKG1vZGlmaWVyKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBwYXJz
ZWRfc3BlY2lmaWVycy5hZGQobW9kaWZpZXIpCiAKLSAgICAgICAgaWYgbm90IGV4cGVjdGF0aW9u
X2xpbmUucGFyc2VkX2J1Z19tb2RpZmllcnMgYW5kIG5vdCBoYXNfd29udGZpeDoKKyAgICAgICAg
aWYgbm90IGV4cGVjdGF0aW9uX2xpbmUucGFyc2VkX2J1Z19tb2RpZmllcnMgYW5kIG5vdCBiYWRf
YnVnX21vZGlmaWVyIGFuZCBub3QgaGFzX3dvbnRmaXg6CiAgICAgICAgICAgICBleHBlY3RhdGlv
bl9saW5lLndhcm5pbmdzLmFwcGVuZCgnVGVzdCBsYWNrcyBCVUcgbW9kaWZpZXIuJykKIAogICAg
ICAgICBpZiBzZWxmLl9hbGxvd19yZWJhc2VsaW5lX21vZGlmaWVyIGFuZCBzZWxmLlJFQkFTRUxJ
TkVfTU9ESUZJRVIgaW4gZXhwZWN0YXRpb25fbGluZS5tb2RpZmllcnM6Ci0gICAgICAgICAgICBl
eHBlY3RhdGlvbl9saW5lLmVycm9ycy5hcHBlbmQoJ1JFQkFTRUxJTkUgc2hvdWxkIG9ubHkgYmUg
dXNlZCBmb3IgcnVubmluZyByZWJhc2VsaW5lLnB5LiBDYW5ub3QgYmUgY2hlY2tlZCBpbi4nKQor
ICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS53YXJuaW5ncy5hcHBlbmQoJ1JFQkFTRUxJTkUg
c2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgcnVubmluZyByZWJhc2VsaW5lLnB5LiBDYW5ub3QgYmUg
Y2hlY2tlZCBpbi4nKQogCi0gICAgICAgIGV4cGVjdGF0aW9uX2xpbmUubWF0Y2hpbmdfY29uZmln
dXJhdGlvbnMgPSBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRpb25fY29udmVydGVyLnRvX2NvbmZpZ19z
ZXQocGFyc2VkX3NwZWNpZmllcnMsIGV4cGVjdGF0aW9uX2xpbmUuZXJyb3JzKQorICAgICAgICBl
eHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zID0gc2VsZi5fdGVzdF9jb25m
aWd1cmF0aW9uX2NvbnZlcnRlci50b19jb25maWdfc2V0KHBhcnNlZF9zcGVjaWZpZXJzLCBleHBl
Y3RhdGlvbl9saW5lLndhcm5pbmdzKQogCiAgICAgZGVmIF9wYXJzZV9leHBlY3RhdGlvbnMoc2Vs
ZiwgZXhwZWN0YXRpb25fbGluZSk6CiAgICAgICAgIHJlc3VsdCA9IHNldCgpCiAgICAgICAgIGZv
ciBwYXJ0IGluIGV4cGVjdGF0aW9uX2xpbmUuZXhwZWN0YXRpb25zOgogICAgICAgICAgICAgZXhw
ZWN0YXRpb24gPSBUZXN0RXhwZWN0YXRpb25zLmV4cGVjdGF0aW9uX2Zyb21fc3RyaW5nKHBhcnQp
CiAgICAgICAgICAgICBpZiBleHBlY3RhdGlvbiBpcyBOb25lOiAgIyBDYXJlZnVsLCBQQVNTIGlz
IGN1cnJlbnRseSAwLgotICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUuZXJyb3JzLmFw
cGVuZCgnVW5zdXBwb3J0ZWQgZXhwZWN0YXRpb246ICVzJyAlIHBhcnQpCisgICAgICAgICAgICAg
ICAgZXhwZWN0YXRpb25fbGluZS53YXJuaW5ncy5hcHBlbmQoJ1Vuc3VwcG9ydGVkIGV4cGVjdGF0
aW9uOiAlcycgJSBwYXJ0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBy
ZXN1bHQuYWRkKGV4cGVjdGF0aW9uKQogICAgICAgICBleHBlY3RhdGlvbl9saW5lLnBhcnNlZF9l
eHBlY3RhdGlvbnMgPSByZXN1bHQKIAogICAgIGRlZiBfY2hlY2tfbW9kaWZpZXJzX2FnYWluc3Rf
ZXhwZWN0YXRpb25zKHNlbGYsIGV4cGVjdGF0aW9uX2xpbmUpOgogICAgICAgICBpZiBzZWxmLlNM
T1dfTU9ESUZJRVIgaW4gZXhwZWN0YXRpb25fbGluZS5tb2RpZmllcnMgYW5kIHNlbGYuVElNRU9V
VF9FWFBFQ1RBVElPTiBpbiBleHBlY3RhdGlvbl9saW5lLmV4cGVjdGF0aW9uczoKLSAgICAgICAg
ICAgIGV4cGVjdGF0aW9uX2xpbmUuZXJyb3JzLmFwcGVuZCgnQSB0ZXN0IGNhbiBub3QgYmUgYm90
aCBTTE9XIGFuZCBUSU1FT1VULiBJZiBpdCB0aW1lcyBvdXQgaW5kZWZpbml0ZWx5LCB0aGVuIGl0
IHNob3VsZCBiZSBqdXN0IFRJTUVPVVQuJykKKyAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUu
d2FybmluZ3MuYXBwZW5kKCdBIHRlc3QgY2FuIG5vdCBiZSBib3RoIFNMT1cgYW5kIFRJTUVPVVQu
IElmIGl0IHRpbWVzIG91dCBpbmRlZmluaXRlbHksIHRoZW4gaXQgc2hvdWxkIGJlIGp1c3QgVElN
RU9VVC4nKQogCiAgICAgZGVmIF9jaGVja19wYXRoX2RvZXNfbm90X2V4aXN0KHNlbGYsIGV4cGVj
dGF0aW9uX2xpbmUpOgogICAgICAgICAjIFdlYktpdCdzIHdheSBvZiBza2lwcGluZyB0ZXN0cyBp
cyB0byBhZGQgYSAtZGlzYWJsZWQgc3VmZml4LgpAQCAtMzEzLDEzICszMTQsMTMgQEAgY2xhc3Mg
VGVzdEV4cGVjdGF0aW9uUGFyc2VyKG9iamVjdCk6CiAKICAgICAgICAgcGFydHMgPSByZW1haW5p
bmdfc3RyaW5nLnNwbGl0KCc6JykKICAgICAgICAgaWYgbGVuKHBhcnRzKSAhPSAyOgotICAgICAg
ICAgICAgZXhwZWN0YXRpb25fbGluZS5lcnJvcnMuYXBwZW5kKCJNaXNzaW5nIGEgJzonIiBpZiBs
ZW4ocGFydHMpIDwgMiBlbHNlICJFeHRyYW5lb3VzICc6JyIpCisgICAgICAgICAgICBleHBlY3Rh
dGlvbl9saW5lLndhcm5pbmdzLmFwcGVuZCgiTWlzc2luZyBhICc6JyIgaWYgbGVuKHBhcnRzKSA8
IDIgZWxzZSAiRXh0cmFuZW91cyAnOiciKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdGVz
dF9hbmRfZXhwZWN0YXRpb24gPSBwYXJ0c1sxXS5zcGxpdCgnPScpCiAgICAgICAgICAgICBpZiBs
ZW4odGVzdF9hbmRfZXhwZWN0YXRpb24pICE9IDI6Ci0gICAgICAgICAgICAgICAgZXhwZWN0YXRp
b25fbGluZS5lcnJvcnMuYXBwZW5kKCJNaXNzaW5nIGV4cGVjdGF0aW9ucyIgaWYgbGVuKHRlc3Rf
YW5kX2V4cGVjdGF0aW9uKSA8IDIgZWxzZSAiRXh0cmFuZW91cyAnPSciKQorICAgICAgICAgICAg
ICAgIGV4cGVjdGF0aW9uX2xpbmUud2FybmluZ3MuYXBwZW5kKCJNaXNzaW5nIGV4cGVjdGF0aW9u
cyIgaWYgbGVuKHRlc3RfYW5kX2V4cGVjdGF0aW9uKSA8IDIgZWxzZSAiRXh0cmFuZW91cyAnPSci
KQogCi0gICAgICAgIGlmIG5vdCBleHBlY3RhdGlvbl9saW5lLmlzX21hbGZvcm1lZCgpOgorICAg
ICAgICBpZiBub3QgZXhwZWN0YXRpb25fbGluZS5pc19pbnZhbGlkKCk6CiAgICAgICAgICAgICBl
eHBlY3RhdGlvbl9saW5lLm1vZGlmaWVycyA9IGNscy5fc3BsaXRfc3BhY2Vfc2VwYXJhdGVkKHBh
cnRzWzBdKQogICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5uYW1lID0gdGVzdF9hbmRfZXhw
ZWN0YXRpb25bMF0uc3RyaXAoKQogICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5leHBlY3Rh
dGlvbnMgPSBjbHMuX3NwbGl0X3NwYWNlX3NlcGFyYXRlZCh0ZXN0X2FuZF9leHBlY3RhdGlvblsx
XSkKQEAgLTM2MCwxNCArMzYxLDEwIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbkxpbmU6CiAgICAg
ICAgIHNlbGYucGFyc2VkX2V4cGVjdGF0aW9ucyA9IHNldCgpCiAgICAgICAgIHNlbGYuY29tbWVu
dCA9IE5vbmUKICAgICAgICAgc2VsZi5tYXRjaGluZ190ZXN0cyA9IFtdCi0gICAgICAgIHNlbGYu
ZXJyb3JzID0gW10KICAgICAgICAgc2VsZi53YXJuaW5ncyA9IFtdCiAKLSAgICBkZWYgaXNfbWFs
Zm9ybWVkKHNlbGYpOgotICAgICAgICByZXR1cm4gbGVuKHNlbGYuZXJyb3JzKSA+IDAKLQogICAg
IGRlZiBpc19pbnZhbGlkKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5pc19tYWxmb3JtZWQo
KSBvciBsZW4oc2VsZi53YXJuaW5ncykgPiAwCisgICAgICAgIHJldHVybiBsZW4oc2VsZi53YXJu
aW5ncykgPiAwCiAKICAgICBkZWYgaXNfZmxha3koc2VsZik6CiAgICAgICAgIHJldHVybiBsZW4o
c2VsZi5wYXJzZWRfZXhwZWN0YXRpb25zKSA+IDEKQEAgLTQ1MSw3ICs0NDgsNyBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25zTW9kZWwob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3Rf
dG9fZXhwZWN0YXRpb25zW3Rlc3RdCiAKICAgICBkZWYgYWRkX2V4cGVjdGF0aW9uX2xpbmUoc2Vs
ZiwgZXhwZWN0YXRpb25fbGluZSwgb3ZlcnJpZGVzX2FsbG93ZWQpOgotICAgICAgICAiIiJSZXR1
cm5zIGEgbGlzdCBvZiBlcnJvcnMsIGVuY291bnRlcmVkIHdoaWxlIG1hdGNoaW5nIG1vZGlmaWVy
cy4iIiIKKyAgICAgICAgIiIiUmV0dXJucyBhIGxpc3Qgb2Ygd2FybmluZ3MgZW5jb3VudGVyZWQg
d2hpbGUgbWF0Y2hpbmcgbW9kaWZpZXJzLiIiIgogCiAgICAgICAgIGlmIGV4cGVjdGF0aW9uX2xp
bmUuaXNfaW52YWxpZCgpOgogICAgICAgICAgICAgcmV0dXJuCkBAIC01NjksMjAgKzU2NiwyMCBA
QCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zTW9kZWwob2JqZWN0KToKICAgICAgICAgIyB0byBiZSB3
YXJuaW5ncyBhbmQgcmV0dXJuIEZhbHNlIi4KIAogICAgICAgICBpZiBwcmV2X2V4cGVjdGF0aW9u
X2xpbmUubWF0Y2hpbmdfY29uZmlndXJhdGlvbnMgPT0gZXhwZWN0YXRpb25fbGluZS5tYXRjaGlu
Z19jb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUuZXJyb3JzLmFw
cGVuZCgnRHVwbGljYXRlIG9yIGFtYmlndW91cyAlcy4nICUgZXhwZWN0YXRpb25fc291cmNlKQor
ICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS53YXJuaW5ncy5hcHBlbmQoJ0R1cGxpY2F0ZSBv
ciBhbWJpZ3VvdXMgJXMuJyAlIGV4cGVjdGF0aW9uX3NvdXJjZSkKICAgICAgICAgICAgIHJldHVy
biBUcnVlCiAKICAgICAgICAgaWYgcHJldl9leHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX2NvbmZp
Z3VyYXRpb25zID49IGV4cGVjdGF0aW9uX2xpbmUubWF0Y2hpbmdfY29uZmlndXJhdGlvbnM6Ci0g
ICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLmVycm9ycy5hcHBlbmQoJ01vcmUgc3BlY2lmaWMg
ZW50cnkgb24gbGluZSAlZCBvdmVycmlkZXMgbGluZSAlZCcgJSAoZXhwZWN0YXRpb25fbGluZS5s
aW5lX251bWJlciwgcHJldl9leHBlY3RhdGlvbl9saW5lLmxpbmVfbnVtYmVyKSkKKyAgICAgICAg
ICAgIGV4cGVjdGF0aW9uX2xpbmUud2FybmluZ3MuYXBwZW5kKCdNb3JlIHNwZWNpZmljIGVudHJ5
IG9uIGxpbmUgJWQgb3ZlcnJpZGVzIGxpbmUgJWQnICUgKGV4cGVjdGF0aW9uX2xpbmUubGluZV9u
dW1iZXIsIHByZXZfZXhwZWN0YXRpb25fbGluZS5saW5lX251bWJlcikpCiAgICAgICAgICAgICAj
IEZJWE1FOiByZXR1cm4gRmFsc2UgaWYgd2Ugd2FudCBtb3JlIHNwZWNpZmljIHRvIHdpbi4KICAg
ICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgaWYgcHJldl9leHBlY3RhdGlvbl9saW5l
Lm1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zIDw9IGV4cGVjdGF0aW9uX2xpbmUubWF0Y2hpbmdfY29u
ZmlndXJhdGlvbnM6Ci0gICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLmVycm9ycy5hcHBlbmQo
J01vcmUgc3BlY2lmaWMgZW50cnkgb24gbGluZSAlZCBvdmVycmlkZXMgbGluZSAlZCcgJSAocHJl
dl9leHBlY3RhdGlvbl9saW5lLmxpbmVfbnVtYmVyLCBleHBlY3RhdGlvbl9saW5lLmxpbmVfbnVt
YmVyKSkKKyAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUud2FybmluZ3MuYXBwZW5kKCdNb3Jl
IHNwZWNpZmljIGVudHJ5IG9uIGxpbmUgJWQgb3ZlcnJpZGVzIGxpbmUgJWQnICUgKHByZXZfZXhw
ZWN0YXRpb25fbGluZS5saW5lX251bWJlciwgZXhwZWN0YXRpb25fbGluZS5saW5lX251bWJlcikp
CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgIGlmIHByZXZfZXhwZWN0YXRpb25f
bGluZS5tYXRjaGluZ19jb25maWd1cmF0aW9ucyAmIGV4cGVjdGF0aW9uX2xpbmUubWF0Y2hpbmdf
Y29uZmlndXJhdGlvbnM6Ci0gICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLmVycm9ycy5hcHBl
bmQoJ0VudHJpZXMgb24gbGluZSAlZCBhbmQgbGluZSAlZCBtYXRjaCBvdmVybGFwcGluZyBzZXRz
IG9mIGNvbmZpZ3VyYXRpb25zJyAlIChwcmV2X2V4cGVjdGF0aW9uX2xpbmUubGluZV9udW1iZXIs
IGV4cGVjdGF0aW9uX2xpbmUubGluZV9udW1iZXIpKQorICAgICAgICAgICAgZXhwZWN0YXRpb25f
bGluZS53YXJuaW5ncy5hcHBlbmQoJ0VudHJpZXMgb24gbGluZSAlZCBhbmQgbGluZSAlZCBtYXRj
aCBvdmVybGFwcGluZyBzZXRzIG9mIGNvbmZpZ3VyYXRpb25zJyAlIChwcmV2X2V4cGVjdGF0aW9u
X2xpbmUubGluZV9udW1iZXIsIGV4cGVjdGF0aW9uX2xpbmUubGluZV9udW1iZXIpKQogICAgICAg
ICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICAjIENvbmZpZ3VyYXRpb24gc2V0cyBhcmUgZGlz
am9pbnQsIHRoZW4uCkBAIC02ODMsOCArNjgwLDggQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9ucyhv
YmplY3QpOgogICAgICAgICAgICAgdGVzdF9jb25maWc6IHNwZWNpZmljIHZhbHVlcyB0byBjaGVj
ayBhZ2FpbnN0IHdoZW4KICAgICAgICAgICAgICAgICBwYXJzaW5nIHRoZSBmaWxlICh1c3VhbGx5
IHBvcnQudGVzdF9jb25maWcoKSwKICAgICAgICAgICAgICAgICBidXQgbWF5IGJlIGRpZmZlcmVu
dCB3aGVuIGxpbnRpbmcgb3IgZG9pbmcgb3RoZXIgdGhpbmdzKS4KLSAgICAgICAgICAgIGlzX2xp
bnRfbW9kZTogSWYgVHJ1ZSwganVzdCBwYXJzZSB0aGUgZXhwZWN0YXRpb25zIHN0cmluZwotICAg
ICAgICAgICAgICAgIGxvb2tpbmcgZm9yIGVycm9ycy4KKyAgICAgICAgICAgIGlzX2xpbnRfbW9k
ZTogSWYgVHJ1ZSwgcGFyc2UgdGhlIGV4cGVjdGF0aW9ucyBzdHJpbmcgYW5kIHJhaXNlCisgICAg
ICAgICAgICAgICAgYW4gZXhjZXB0aW9uIGlmIHdhcm5pbmdzIGFyZSBlbmNvdW50ZXJlZC4KICAg
ICAgICAgICAgIG92ZXJyaWRlczogdGVzdCBleHBlY3RhdGlvbnMgdGhhdCBhcmUgYWxsb3dlZCB0
byBvdmVycmlkZSBhbnkKICAgICAgICAgICAgICAgICBlbnRyaWVzIGluIHxleHBlY3RhdGlvbnN8
LiBUaGlzIGlzIHVzZWQgYnkgY2FsbGVycwogICAgICAgICAgICAgICAgIHRoYXQgbmVlZCB0byBt
YW5hZ2UgdHdvIHNldHMgb2YgZXhwZWN0YXRpb25zIChlLmcuLCB1cHN0cmVhbQpAQCAtNzA5LDcg
KzcwNiw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnMob2JqZWN0KToKICAgICAgICAgICAgIHNl
bGYuX2V4cGVjdGF0aW9ucyArPSBvdmVycmlkZXNfZXhwZWN0YXRpb25zCiAKICAgICAgICAgc2Vs
Zi5faGFzX3dhcm5pbmdzID0gRmFsc2UKLSAgICAgICAgc2VsZi5fcmVwb3J0X2Vycm9ycygpCisg
ICAgICAgIHNlbGYuX3JlcG9ydF93YXJuaW5ncygpCiAgICAgICAgIHNlbGYuX3Byb2Nlc3NfdGVz
dHNfd2l0aG91dF9leHBlY3RhdGlvbnMoKQogCiAgICAgIyBUT0RPKG9qYW4pOiBBbGxvdyBmb3Ig
cmVtb3Zpbmcgc2tpcHBlZCB0ZXN0cyB3aGVuIGdldHRpbmcgdGhlIGxpc3Qgb2YKQEAgLTc3Niwz
NCArNzczLDI1IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnMob2JqZWN0KToKICAgICBkZWYgaXNf
cmViYXNlbGluaW5nKHNlbGYsIHRlc3QpOgogICAgICAgICByZXR1cm4gc2VsZi5fbW9kZWwuaGFz
X21vZGlmaWVyKHRlc3QsIFJFQkFTRUxJTkUpCiAKLSAgICBkZWYgX3JlcG9ydF9lcnJvcnMoc2Vs
Zik6Ci0gICAgICAgIGVycm9ycyA9IFtdCisgICAgZGVmIF9yZXBvcnRfd2FybmluZ3Moc2VsZik6
CiAgICAgICAgIHdhcm5pbmdzID0gW10KICAgICAgICAgZm9yIGV4cGVjdGF0aW9uIGluIHNlbGYu
X2V4cGVjdGF0aW9uczoKLSAgICAgICAgICAgIGZvciBlcnJvciBpbiBleHBlY3RhdGlvbi5lcnJv
cnM6Ci0gICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgiTGluZTolcyAlcyAlcyIgJSAoZXhw
ZWN0YXRpb24ubGluZV9udW1iZXIsIGVycm9yLCBleHBlY3RhdGlvbi5uYW1lIGlmIGV4cGVjdGF0
aW9uLmV4cGVjdGF0aW9ucyBlbHNlIGV4cGVjdGF0aW9uLm9yaWdpbmFsX3N0cmluZykpCiAgICAg
ICAgICAgICBmb3Igd2FybmluZyBpbiBleHBlY3RhdGlvbi53YXJuaW5nczoKICAgICAgICAgICAg
ICAgICB3YXJuaW5ncy5hcHBlbmQoIkxpbmU6JXMgJXMgJXMiICUgKGV4cGVjdGF0aW9uLmxpbmVf
bnVtYmVyLCB3YXJuaW5nLCBleHBlY3RhdGlvbi5uYW1lIGlmIGV4cGVjdGF0aW9uLmV4cGVjdGF0
aW9ucyBlbHNlIGV4cGVjdGF0aW9uLm9yaWdpbmFsX3N0cmluZykpCi0KICAgICAgICAgZm9yIHdh
cm5pbmcgaW4gc2VsZi5fc2tpcHBlZF90ZXN0c193YXJuaW5nczoKICAgICAgICAgICAgIHdhcm5p
bmdzLmFwcGVuZCh3YXJuaW5nKQogCi0gICAgICAgIGlmIGxlbihlcnJvcnMpIG9yIGxlbih3YXJu
aW5ncyk6CisgICAgICAgIGlmIHdhcm5pbmdzOgogICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlv
bl9wYXRoID0gc2VsZi5fcG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKQotICAg
ICAgICAgICAgZmFpbHVyZV90aXRsZSA9ICJGQUlMVVJFUyBGT1IgJXMgaW4gJXMiICUgKHN0cihz
ZWxmLl90ZXN0X2NvbmZpZyksIHRlc3RfZXhwZWN0YXRpb25fcGF0aCkKLSAgICAgICAgICAgIF9s
b2cuZXJyb3IoZmFpbHVyZV90aXRsZSkKLQotICAgICAgICAgICAgZm9yIGVycm9yIGluIGVycm9y
czoKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGVycm9yKQorICAgICAgICAgICAgZmFpbHVy
ZV90aXRsZSA9ICJGQUlMVVJFUyBGT1IgJXMgaW4gJXM6IiAlIChzdHIoc2VsZi5fdGVzdF9jb25m
aWcpLCB0ZXN0X2V4cGVjdGF0aW9uX3BhdGgpCisgICAgICAgICAgICBfbG9nLndhcm5pbmcoZmFp
bHVyZV90aXRsZSkKICAgICAgICAgICAgIGZvciB3YXJuaW5nIGluIHdhcm5pbmdzOgotICAgICAg
ICAgICAgICAgIF9sb2cuZXJyb3Iod2FybmluZykKKyAgICAgICAgICAgICAgICBfbG9nLndhcm5p
bmcoJyAgJyArIHdhcm5pbmcpCisgICAgICAgICAgICBfbG9nLndhcm5pbmcoJycpCiAKLSAgICAg
ICAgICAgIGlmIGxlbihlcnJvcnMpOgotICAgICAgICAgICAgICAgIHJhaXNlIFBhcnNlRXJyb3Io
ZmF0YWw9VHJ1ZSwgZXJyb3JzPVtmYWlsdXJlX3RpdGxlXSArIGVycm9ycykKLSAgICAgICAgICAg
IGlmIGxlbih3YXJuaW5ncyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5faGFzX3dhcm5pbmdzID0g
VHJ1ZQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX2lzX2xpbnRfbW9kZToKLSAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgUGFyc2VFcnJvcihmYXRhbD1GYWxzZSwgZXJyb3JzPVtmYWlsdXJlX3Rp
dGxlXSArIHdhcm5pbmdzKQorICAgICAgICAgICAgc2VsZi5faGFzX3dhcm5pbmdzID0gVHJ1ZQor
ICAgICAgICAgICAgaWYgc2VsZi5faXNfbGludF9tb2RlOgorICAgICAgICAgICAgICAgIHJhaXNl
IFBhcnNlRXJyb3Iod2FybmluZ3M9KFtmYWlsdXJlX3RpdGxlXSArIHdhcm5pbmdzKSkKIAogICAg
IGRlZiBfcHJvY2Vzc190ZXN0c193aXRob3V0X2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAgICAg
aWYgc2VsZi5fZnVsbF90ZXN0X2xpc3Q6CkBAIC04MTcsNyArODA1LDcgQEAgY2xhc3MgVGVzdEV4
cGVjdGF0aW9ucyhvYmplY3QpOgogICAgIGRlZiByZW1vdmVfcmViYXNlbGluZWRfdGVzdHMoc2Vs
ZiwgZXhjZXB0X3RoZXNlX3Rlc3RzKToKICAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgb2YgdGhl
IGV4cGVjdGF0aW9ucyB3aXRoIHRoZSB0ZXN0cyByZW1vdmVkLiIiIgogICAgICAgICBkZWYgd2l0
aG91dF9yZWJhc2VsaW5lX21vZGlmaWVyKGV4cGVjdGF0aW9uKToKLSAgICAgICAgICAgIHJldHVy
biBub3QgKG5vdCBleHBlY3RhdGlvbi5pc19tYWxmb3JtZWQoKSBhbmQgZXhwZWN0YXRpb24ubmFt
ZSBpbiBleGNlcHRfdGhlc2VfdGVzdHMgYW5kICJyZWJhc2VsaW5lIiBpbiBleHBlY3RhdGlvbi5t
b2RpZmllcnMpCisgICAgICAgICAgICByZXR1cm4gbm90IChub3QgZXhwZWN0YXRpb24uaXNfaW52
YWxpZCgpIGFuZCBleHBlY3RhdGlvbi5uYW1lIGluIGV4Y2VwdF90aGVzZV90ZXN0cyBhbmQgInJl
YmFzZWxpbmUiIGluIGV4cGVjdGF0aW9uLm1vZGlmaWVycykKIAogICAgICAgICByZXR1cm4gVGVz
dEV4cGVjdGF0aW9uU2VyaWFsaXplci5saXN0X3RvX3N0cmluZyhmaWx0ZXIod2l0aG91dF9yZWJh
c2VsaW5lX21vZGlmaWVyLCBzZWxmLl9leHBlY3RhdGlvbnMpKQogCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNf
dW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMv
dGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKaW5kZXggNjQ3MzA1MzA3MzE0NzM5MDY4ZmQ2
NTA4YWNlZTA5MWUyNzA5NDJkMS4uYTNlZWNiMWRiMGJkOWU0ZjJkYzVhZDBiMmM2MjA1ZWM3NDU0
YTMwYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9k
ZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpA
QCAtMTMxLDYgKzEzMSw5IEBAIEJVR19URVNUIFdPTlRGSVggTUFDIDogZmFpbHVyZXMvZXhwZWN0
ZWQvaW1hZ2UuaHRtbCA9IElNQUdFCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuX2V4
cC5nZXRfZXhwZWN0YXRpb25zKHNlbGYuZ2V0X3Rlc3QodGVzdCkpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXQoW3Jlc3VsdF0pKQogCisgICAgZGVmIGFzc2VydF9iYWRfZXhwKHNlbGYs
IGV4cGVjdGF0aW9ucywgb3ZlcnJpZGVzPU5vbmUpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgZXhwZWN0YXRpb25zLCBpc19saW50X21vZGU9
VHJ1ZSwgb3ZlcnJpZGVzPW92ZXJyaWRlcykKKwogCiBjbGFzcyBCYXNpY1Rlc3RzKEJhc2UpOgog
ICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgpAQCAtMTkyLDMwICsxOTUsMjcgQEAgQlVHWCBXT05U
RklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQogICAgICAgICBzID0gc2VsZi5fZXhwLmdl
dF90ZXN0X3NldChXT05URklYLCBDUkFTSCwgaW5jbHVkZV9za2lwcz1GYWxzZSkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzLCBzZXQoW10pKQogCi0gICAgZGVmIHRlc3RfcGFyc2VfZXJyb3Jf
ZmF0YWwoc2VsZik6CisgICAgZGVmIHRlc3RfcGFyc2Vfd2FybmluZ3Moc2VsZik6CiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwKCIiIkZPTyA6IGZhaWx1cmVzL2V4cGVj
dGVkL3RleHQuaHRtbCA9IFRFWFQKLVNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1s
IiIiKQorU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwiIiIsIGlzX2xpbnRfbW9k
ZT1UcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShUcnVlLCAiUGFyc2VFcnJvciB3
YXNuJ3QgcmFpc2VkIikKICAgICAgICAgZXhjZXB0IFBhcnNlRXJyb3IsIGU6Ci0gICAgICAgICAg
ICBzZWxmLmFzc2VydFRydWUoZS5mYXRhbCkKLSAgICAgICAgICAgIGV4cF9lcnJvcnMgPSBbdSJG
QUlMVVJFUyBGT1IgJXMgaW4gJXMiICUgKHNlbGYuX3BvcnQudGVzdF9jb25maWd1cmF0aW9uKCks
IHNlbGYuX3BvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICB1IkxpbmU6MSBVbnJlY29nbml6ZWQgbW9kaWZpZXIgJ2ZvbycgZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdSJM
aW5lOjIgTWlzc2luZyBleHBlY3RhdGlvbnMgU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdl
Lmh0bWwiXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICdcbicuam9pbiht
YXAoc3RyLCBleHBfZXJyb3JzKSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJy
b3JzLCBleHBfZXJyb3JzKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfZXJyb3Jfbm9uZmF0YWwoc2Vs
Zik6CisgICAgICAgICAgICB3YXJuaW5ncyA9IFt1IkZBSUxVUkVTIEZPUiAlcyBpbiAlczoiICUg
KHNlbGYuX3BvcnQudGVzdF9jb25maWd1cmF0aW9uKCksIHNlbGYuX3BvcnQucGF0aF90b190ZXN0
X2V4cGVjdGF0aW9uc19maWxlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgdSJMaW5lOjEg
VGVzdCBsYWNrcyBCVUcgbW9kaWZpZXIuIGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICB1IkxpbmU6MSBVbnJlY29nbml6ZWQgbW9kaWZpZXIgJ2Zv
bycgZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHUiTGluZToyIE1pc3NpbmcgZXhwZWN0YXRpb25zIFNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9p
bWFnZS5odG1sIl0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpv
aW4obWFwKHN0ciwgd2FybmluZ3MpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS53
YXJuaW5ncywgd2FybmluZ3MpCisKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5wYXJz
ZV9leHAoJ1NLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1UcnVlKQorICAgICAgICAgICAgc2Vs
Zi5wYXJzZV9leHAoJ1NLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywg
aXNfbGludF9tb2RlPVRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFRydWUsICJQ
YXJzZUVycm9yIHdhc24ndCByYWlzZWQiKQogICAgICAgICBleGNlcHQgUGFyc2VFcnJvciwgZToK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZS5mYXRhbCkKLSAgICAgICAgICAgIGV4cF9l
cnJvcnMgPSBbdSdGQUlMVVJFUyBGT1IgJXMgaW4gJXMnICUgKHNlbGYuX3BvcnQudGVzdF9jb25m
aWd1cmF0aW9uKCksIHNlbGYuX3BvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICB1J0xpbmU6MSBUZXN0IGxhY2tzIEJVRyBtb2Rp
Zmllci4gZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJ10KLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpvaW4obWFwKHN0ciwgZXhwX2Vycm9ycykpKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm9ycywgZXhwX2Vycm9ycykKKyAgICAgICAgICAg
IHdhcm5pbmdzID0gW3UnRkFJTFVSRVMgRk9SICVzIGluICVzOicgJSAoc2VsZi5fcG9ydC50ZXN0
X2NvbmZpZ3VyYXRpb24oKSwgc2VsZi5fcG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2Zp
bGUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICB1J0xpbmU6MSBUZXN0IGxhY2tzIEJVRyBt
b2RpZmllci4gZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJ10KKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpvaW4obWFwKHN0ciwgd2FybmluZ3MpKSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS53YXJuaW5ncywgd2FybmluZ3MpCiAKICAgICBkZWYg
dGVzdF9vdmVycmlkZXMoc2VsZik6CiAgICAgICAgIHNlbGYucGFyc2VfZXhwKCJCVUdfRVhQOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUIiwKQEAgLTIyMywxMiArMjIzLDkgQEAg
U0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwiIiIpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgSU1BR0UpCiAKICAgICBkZWYg
dGVzdF9vdmVycmlkZXNfX2R1cGxpY2F0ZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAgICAgICAgICAgIkJVR19FWFA6IGZh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQiLAotICAgICAgICAgICAgICIiIgotQlVH
X09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UKLUJVR19PVkVS
UklERSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IENSQVNICi0iIiIpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2JhZF9leHAoIkJVR19FWFA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRt
bCA9IFRFWFQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCVUdfT1ZFUlJJREUgOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBD
UkFTSFxuIikKIAogICAgIGRlZiB0ZXN0X3BpeGVsX3Rlc3RzX2ZsYWcoc2VsZik6CiAgICAgICAg
IGRlZiBtYXRjaCh0ZXN0LCByZXN1bHQsIHBpeGVsX3Rlc3RzX2VuYWJsZWQpOgpAQCAtMjY1LDI2
ICsyNjIsMjAgQEAgQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
Q1JBU0gKIGNsYXNzIEV4cGVjdGF0aW9uU3ludGF4VGVzdHMoQmFzZSk6CiAgICAgZGVmIHRlc3Rf
bWlzc2luZ19leHBlY3RhdGlvbihzZWxmKToKICAgICAgICAgIyBUaGlzIGlzIG1pc3NpbmcgdGhl
IGV4cGVjdGF0aW9uLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxm
LnBhcnNlX2V4cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR19URVNUOiBmYWlsdXJl
cy9leHBlY3RlZC90ZXh0Lmh0bWwnKQorICAgICAgICBzZWxmLmFzc2VydF9iYWRfZXhwKCdCVUdf
VEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJykKIAogICAgIGRlZiB0ZXN0X21pc3Np
bmdfY29sb24oc2VsZik6CiAgICAgICAgICMgVGhpcyBpcyBtaXNzaW5nIHRoZSBtb2RpZmllcnMg
YW5kIHRoZSAnOicKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5w
YXJzZV9leHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC90
ZXh0Lmh0bWwgPSBURVhUJykKKyAgICAgICAgc2VsZi5hc3NlcnRfYmFkX2V4cCgnZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcpCiAKLSAgICBkZWYgZGlzYWJsZWRfdGVzdF90b29f
bWFueV9jb2xvbnMoc2VsZik6Ci0gICAgICAgICMgRklYTUU6IEVuYWJsZSB0aGlzIHRlc3QgYW5k
IGZpeCB0aGUgdW5kZXJseWluZyBidWcuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNl
RXJyb3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnQlVHX1RF
U1Q6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFBBU1MgOicpCisgICAgZGVmIHRlc3Rf
dG9vX21hbnlfY29sb25zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9iYWRfZXhwKCdCVUdf
VEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gUEFTUyA6JykKIAogICAgIGRlZiB0
ZXN0X3Rvb19tYW55X2VxdWFsc19zaWducyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCA9IElNQUdFJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfYmFkX2V4cCgnQlVHX1RFU1Q6IGZhaWx1cmVzL2V4cGVjdGVk
L3RleHQuaHRtbCA9IFRFWFQgPSBJTUFHRScpCiAKICAgICBkZWYgdGVzdF91bnJlY29nbml6ZWRf
ZXhwZWN0YXRpb24oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3Is
IHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnQlVHX1RFU1Q6IGZh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFVOS05PV04nKQorICAgICAgICBzZWxmLmFzc2Vy
dF9iYWRfZXhwKCdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVU5LTk9X
TicpCiAKICAgICBkZWYgdGVzdF9tYWNybyhzZWxmKToKICAgICAgICAgZXhwX3N0ciA9ICIiIgpA
QCAtMjk2LDM4ICsyODcsMjkgQEAgQlVHX1RFU1QgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sID0gVEVYVAogCiBjbGFzcyBTZW1hbnRpY1Rlc3RzKEJhc2UpOgogICAgIGRlZiB0ZXN0
X2J1Z19mb3JtYXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3Is
IHNlbGYucGFyc2VfZXhwLCAnQlVHMTIzNCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9
IFRFWFQnKQorICAgICAgICBzZWxmLmFzc2VydF9iYWRfZXhwKCdCVUcxMjM0IDogZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcpCiAKICAgICBkZWYgdGVzdF9taXNzaW5nX2J1Z2lk
KHNlbGYpOgotICAgICAgICAjIFRoaXMgc2hvdWxkIGxvZyBhIG5vbi1mYXRhbCBlcnJvci4KLSAg
ICAgICAgc2VsZi5wYXJzZV9leHAoJ1NMT1cgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwg
PSBURVhUJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuX2V4cC5oYXNfd2FybmluZ3Mo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYmFkX2V4cCgnU0xPVyA6IGZhaWx1cmVzL2V4cGVjdGVk
L3RleHQuaHRtbCA9IFRFWFQnKQogCiAgICAgZGVmIHRlc3Rfc2xvd19hbmRfdGltZW91dChzZWxm
KToKICAgICAgICAgIyBBIHRlc3QgY2Fubm90IGJlIFNMT1cgYW5kIGV4cGVjdGVkIHRvIFRJTUVP
VVQuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhw
LAotICAgICAgICAgICAgJ0JVR19URVNUIFNMT1cgOiBmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0
Lmh0bWwgPSBUSU1FT1VUJykKKyAgICAgICAgc2VsZi5hc3NlcnRfYmFkX2V4cCgnQlVHX1RFU1Qg
U0xPVyA6IGZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRtbCA9IFRJTUVPVVQnKQogCiAgICAg
ZGVmIHRlc3RfcmViYXNlbGluZShzZWxmKToKICAgICAgICAgIyBDYW4ndCBsaW50IGEgZmlsZSB3
LyAnUkVCQVNFTElORScgaW4gaXQuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJy
b3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAgJ0JVR19URVNUIFJFQkFTRUxJTkUgOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywKLSAgICAgICAgICAgIGlzX2xpbnRf
bW9kZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydF9iYWRfZXhwKCdCVUdfVEVTVCBSRUJBU0VM
SU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcpCiAKICAgICBkZWYgdGVz
dF9kdXBsaWNhdGVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9y
LCBzZWxmLnBhcnNlX2V4cCwgIiIiCi1CVUdfRVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sID0gVEVYVAotQlVHX0VYUCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IElNQUdF
IiIiKQorICAgICAgICBzZWxmLmFzc2VydF9iYWRfZXhwKCJCVUdfRVhQIDogZmFpbHVyZXMvZXhw
ZWN0ZWQvdGV4dC5odG1sID0gVEVYVFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJC
VUdfRVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0VcbiIpCiAKLSAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAgICAg
ICAgICBzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSwgb3ZlcnJpZGVzPSIiIgotQlVHX09W
RVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAotQlVHX09WRVJSSURF
IDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIsICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfYmFkX2V4cChzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdmVycmlkZXM9KCJCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9l
eHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
SU1BR0VcbiIpKQogCiAgICAgZGVmIHRlc3RfbWlzc2luZ19maWxlKHNlbGYpOgotICAgICAgICAj
IFRoaXMgc2hvdWxkIGxvZyBhIG5vbi1mYXRhbCBlcnJvci4KLSAgICAgICAgc2VsZi5wYXJzZV9l
eHAoJ0JVR19URVNUIDogbWlzc2luZ19maWxlLmh0bWwgPSBURVhUJykKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHNlbGYuX2V4cC5oYXNfd2FybmluZ3MoKSwgMSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRfYmFkX2V4cCgnQlVHX1RFU1QgOiBtaXNzaW5nX2ZpbGUuaHRtbCA9IFRFWFQnKQogCiAKIGNs
YXNzIFByZWNlZGVuY2VUZXN0cyhCYXNlKToKQEAgLTM1MSwzNyArMzMzLDI2IEBAIEJVR1ggOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4
cCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQogCiAgICAgZGVmIHRlc3Rf
YW1iaWd1b3VzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBz
ZWxmLnBhcnNlX2V4cCwgIiIiCi1CVUdfVEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9
IFBBU1MKLUJVR19URVNUIFdJTiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBGQUlMCi0iIiIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2JhZF9leHAoIkJVR19URVNUIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5o
dG1sID0gUEFTU1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCVUdfVEVTVCBXSU4g
OiBwYXNzZXMvdGV4dC5odG1sID0gRkFJTFxuIikKIAogICAgIGRlZiB0ZXN0X21vcmVfbW9kaWZp
ZXJzKHNlbGYpOgotICAgICAgICBleHBfc3RyID0gIiIiCi1CVUdfVEVTVCBSRUxFQVNFIDogcGFz
c2VzL3RleHQuaHRtbCA9IFBBU1MKLUJVR19URVNUIFdJTiBSRUxFQVNFIDogcGFzc2VzL3RleHQu
aHRtbCA9IFRFWFQKLSIiIgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBz
ZWxmLnBhcnNlX2V4cCwgZXhwX3N0cikKKyAgICAgICAgc2VsZi5hc3NlcnRfYmFkX2V4cCgiQlVH
X1RFU1QgUkVMRUFTRSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkJVR19URVNUIFdJTiBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9
IFRFWFRcbiIpCiAKICAgICBkZWYgdGVzdF9vcmRlcl9pbl9maWxlKHNlbGYpOgotICAgICAgICBl
eHBfc3RyID0gIiIiCi1CVUdfVEVTVCBXSU4gUkVMRUFTRSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBU
RVhUCi1CVUdfVEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKLSIiIgotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgZXhwX3N0
cikKKyAgICAgICAgc2VsZi5hc3NlcnRfYmFkX2V4cCgiQlVHX1RFU1QgV0lOIFJFTEVBU0UgOiBw
YXNzZXMvdGV4dC5odG1sID0gVEVYVFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJC
VUdfVEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1NcbiIpCiAKICAgICBkZWYg
dGVzdF9tYWNyb19vdmVycmlkZXMoc2VsZik6Ci0gICAgICAgIGV4cF9zdHIgPSAiIiIKLUJVR19U
RVNUIFdJTiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTCi1CVUdfVEVTVCBYUCA6IHBhc3Nlcy90
ZXh0Lmh0bWwgPSBURVhUCi0iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJv
ciwgc2VsZi5wYXJzZV9leHAsIGV4cF9zdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2JhZF9leHAo
IkJVR19URVNUIFdJTiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkJVR19URVNUIFhQIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFRcbiIp
CiAKIAogY2xhc3MgUmViYXNlbGluaW5nVGVzdChCYXNlKToKICAgICAiIiJUZXN0IHJlYmFzZWxp
bmluZy1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5LiIiIgogICAgIGRlZiBhc3NlcnRSZW1vdmUoc2Vs
ZiwgaW5wdXRfZXhwZWN0YXRpb25zLCB0ZXN0cywgZXhwZWN0ZWRfZXhwZWN0YXRpb25zKToKLSAg
ICAgICAgc2VsZi5wYXJzZV9leHAoaW5wdXRfZXhwZWN0YXRpb25zKQorICAgICAgICBzZWxmLnBh
cnNlX2V4cChpbnB1dF9leHBlY3RhdGlvbnMsIGlzX2xpbnRfbW9kZT1GYWxzZSkKICAgICAgICAg
YWN0dWFsX2V4cGVjdGF0aW9ucyA9IHNlbGYuX2V4cC5yZW1vdmVfcmViYXNlbGluZWRfdGVzdHMo
dGVzdHMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfZXhwZWN0YXRpb25zLCBh
Y3R1YWxfZXhwZWN0YXRpb25zKQogCkBAIC00MDEsNjMgKzM3Miw2MyBAQCBjbGFzcyBSZWJhc2Vs
aW5pbmdUZXN0KEJhc2UpOgogY2xhc3MgVGVzdEV4cGVjdGF0aW9uUGFyc2VyVGVzdHModW5pdHRl
c3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3Rva2VuaXplX2JsYW5rKHNlbGYpOgogICAgICAg
ICBleHBlY3RhdGlvbiA9IFRlc3RFeHBlY3RhdGlvblBhcnNlci50b2tlbml6ZSgnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5pc19tYWxmb3JtZWQoKSwgRmFsc2UpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfaW52YWxpZCgpLCBGYWxzZSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5jb21tZW50LCBOb25lKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RhdGlvbi5lcnJvcnMpLCAwKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RhdGlvbi53YXJuaW5ncyksIDApCiAKICAgICBk
ZWYgdGVzdF90b2tlbml6ZV9taXNzaW5nX2NvbG9uKHNlbGYpOgogICAgICAgICBleHBlY3RhdGlv
biA9IFRlc3RFeHBlY3RhdGlvblBhcnNlci50b2tlbml6ZSgnUXV4LicpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfbWFsZm9ybWVkKCksIFRydWUpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyKGV4cGVjdGF0aW9uLmVycm9ycyksICdbIk1pc3NpbmcgYSBcJzpc
JyJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5pc19pbnZhbGlkKCks
IFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4cGVjdGF0aW9uLndhcm5pbmdz
KSwgJ1siTWlzc2luZyBhIFwnOlwnIl0nKQogCiAgICAgZGVmIHRlc3RfdG9rZW5pemVfZXh0cmFf
Y29sb24oc2VsZik6CiAgICAgICAgIGV4cGVjdGF0aW9uID0gVGVzdEV4cGVjdGF0aW9uUGFyc2Vy
LnRva2VuaXplKCdGT08gOiA6IGJhcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0
YXRpb24uaXNfbWFsZm9ybWVkKCksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
KGV4cGVjdGF0aW9uLmVycm9ycyksICdbIkV4dHJhbmVvdXMgXCc6XCciXScpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfaW52YWxpZCgpLCBUcnVlKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi53YXJuaW5ncyksICdbIkV4dHJhbmVvdXMg
XCc6XCciXScpCiAKICAgICBkZWYgdGVzdF90b2tlbml6ZV9lbXB0eV9jb21tZW50KHNlbGYpOgog
ICAgICAgICBleHBlY3RhdGlvbiA9IFRlc3RFeHBlY3RhdGlvblBhcnNlci50b2tlbml6ZSgnLy8n
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmlzX21hbGZvcm1lZCgpLCBG
YWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5pc19pbnZhbGlkKCks
IEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmNvbW1lbnQsICcn
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RhdGlvbi5lcnJvcnMpLCAwKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RhdGlvbi53YXJuaW5ncyksIDApCiAK
ICAgICBkZWYgdGVzdF90b2tlbml6ZV9jb21tZW50KHNlbGYpOgogICAgICAgICBleHBlY3RhdGlv
biA9IFRlc3RFeHBlY3RhdGlvblBhcnNlci50b2tlbml6ZSgnLy9RdXguJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5pc19tYWxmb3JtZWQoKSwgRmFsc2UpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfaW52YWxpZCgpLCBGYWxzZSkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5jb21tZW50LCAnUXV4LicpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGF0aW9uLmVycm9ycyksIDApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGF0aW9uLndhcm5pbmdzKSwgMCkKIAogICAgIGRlZiB0
ZXN0X3Rva2VuaXplX21pc3NpbmdfZXF1YWwoc2VsZik6CiAgICAgICAgIGV4cGVjdGF0aW9uID0g
VGVzdEV4cGVjdGF0aW9uUGFyc2VyLnRva2VuaXplKCdGT08gOiBiYXInKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmlzX21hbGZvcm1lZCgpLCBUcnVlKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi5lcnJvcnMpLCAiWydNaXNzaW5nIGV4cGVj
dGF0aW9uc1wnXSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfaW52
YWxpZCgpLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi53
YXJuaW5ncyksICJbJ01pc3NpbmcgZXhwZWN0YXRpb25zXCddIikKIAogICAgIGRlZiB0ZXN0X3Rv
a2VuaXplX2V4dHJhX2VxdWFsKHNlbGYpOgogICAgICAgICBleHBlY3RhdGlvbiA9IFRlc3RFeHBl
Y3RhdGlvblBhcnNlci50b2tlbml6ZSgnRk9PIDogYmFyID0gQkFaID0gUXV4LicpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfbWFsZm9ybWVkKCksIFRydWUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4cGVjdGF0aW9uLmVycm9ycyksICdbIkV4dHJhbmVv
dXMgXCc9XCciXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfaW52
YWxpZCgpLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi53
YXJuaW5ncyksICdbIkV4dHJhbmVvdXMgXCc9XCciXScpCiAKICAgICBkZWYgdGVzdF90b2tlbml6
ZV92YWxpZChzZWxmKToKICAgICAgICAgZXhwZWN0YXRpb24gPSBUZXN0RXhwZWN0YXRpb25QYXJz
ZXIudG9rZW5pemUoJ0ZPTyA6IGJhciA9IEJBWicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0YXRpb24uaXNfbWFsZm9ybWVkKCksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV4cGVjdGF0aW9uLmlzX2ludmFsaWQoKSwgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZXhwZWN0YXRpb24uY29tbWVudCwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oZXhwZWN0YXRpb24uZXJyb3JzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oZXhwZWN0YXRpb24ud2FybmluZ3MpLCAwKQogCiAgICAgZGVmIHRlc3RfdG9rZW5pemVfdmFs
aWRfd2l0aF9jb21tZW50KHNlbGYpOgogICAgICAgICBleHBlY3RhdGlvbiA9IFRlc3RFeHBlY3Rh
dGlvblBhcnNlci50b2tlbml6ZSgnRk9PIDogYmFyID0gQkFaIC8vUXV4LicpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfbWFsZm9ybWVkKCksIEZhbHNlKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmlzX2ludmFsaWQoKSwgRmFsc2UpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uY29tbWVudCwgJ1F1eC4nKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi5tb2RpZmllcnMpLCAnW1wnZm9vXCdd
JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhwZWN0YXRpb24uZXhwZWN0YXRpb25z
KSwgJ1tcJ2JhelwnXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGF0aW9u
LmVycm9ycyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGF0aW9uLndh
cm5pbmdzKSwgMCkKIAogICAgIGRlZiB0ZXN0X3Rva2VuaXplX3ZhbGlkX3dpdGhfbXVsdGlwbGVf
bW9kaWZpZXJzKHNlbGYpOgogICAgICAgICBleHBlY3RhdGlvbiA9IFRlc3RFeHBlY3RhdGlvblBh
cnNlci50b2tlbml6ZSgnRk9PMSBGT08yIDogYmFyID0gQkFaIC8vUXV4LicpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfbWFsZm9ybWVkKCksIEZhbHNlKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmlzX2ludmFsaWQoKSwgRmFsc2UpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uY29tbWVudCwgJ1F1eC4nKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi5tb2RpZmllcnMpLCAnW1wnZm9vMVwn
LCBcJ2ZvbzJcJ10nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi5l
eHBlY3RhdGlvbnMpLCAnW1wnYmF6XCddJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
ZXhwZWN0YXRpb24uZXJyb3JzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhw
ZWN0YXRpb24ud2FybmluZ3MpLCAwKQogCiAgICAgZGVmIHRlc3RfcGFyc2VfZW1wdHlfc3RyaW5n
KHNlbGYpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQpAQCAtNTA4LDcgKzQ3OSw3IEBAIGNs
YXNzIFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplci50b19zdHJpbmcoZXhwZWN0YXRpb24p
LCAnRk9PIDogYmFyID0gQkFaMSBCQVoyIC8vUXV4LicpCiAgICAgICAgIGV4cGVjdGF0aW9uLm1v
ZGlmaWVycyA9IFsnZm9vMScsICdmb08yJ10KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJp
YWxpemVyLnRvX3N0cmluZyhleHBlY3RhdGlvbiksICdGT08xIEZPTzIgOiBiYXIgPSBCQVoxIEJB
WjIgLy9RdXguJykKLSAgICAgICAgZXhwZWN0YXRpb24uZXJyb3JzLmFwcGVuZCgnT2ggdGhlIGhv
cnJvci4nKQorICAgICAgICBleHBlY3RhdGlvbi53YXJuaW5ncy5hcHBlbmQoJ09oIHRoZSBob3Jy
b3IuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemVyLnRvX3N0cmluZyhleHBl
Y3RhdGlvbiksICcnKQogICAgICAgICBleHBlY3RhdGlvbi5vcmlnaW5hbF9zdHJpbmcgPSAnWWVz
IGl0IGlzIScKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemVyLnRvX3N0cmluZyhl
eHBlY3RhdGlvbiksICdZZXMgaXQgaXMhJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IDlkMTk0
MWQ3YWVjNGIzNWQzNzBkMjM1MTIzZjY3NzQ1MTRjZDk1ZDcuLjc1Y2Q0YjRmODg5MDNiYjU1YWNj
NWQ0MDUzMTdlYWM1NWM1YzRhZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtMTAyLDExICsx
MDIsOSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zQ2hlY2tlcihvYmplY3QpOgogICAgICAgICAg
ICAgZXJyID0gZXJyb3IKIAogICAgICAgICBpZiBlcnI6Ci0gICAgICAgICAgICBsZXZlbCA9IDIK
LSAgICAgICAgICAgIGlmIGVyci5mYXRhbDoKLSAgICAgICAgICAgICAgICBsZXZlbCA9IDUKLSAg
ICAgICAgICAgIGZvciBlcnJvciBpbiBlcnIuZXJyb3JzOgotICAgICAgICAgICAgICAgIG1hdGNo
ZWQgPSBzZWxmLl9vdXRwdXRfcmVnZXgubWF0Y2goZXJyb3IpCisgICAgICAgICAgICBsZXZlbCA9
IDUKKyAgICAgICAgICAgIGZvciB3YXJuaW5nIGluIGVyci53YXJuaW5nczoKKyAgICAgICAgICAg
ICAgICBtYXRjaGVkID0gc2VsZi5fb3V0cHV0X3JlZ2V4Lm1hdGNoKHdhcm5pbmcpCiAgICAgICAg
ICAgICAgICAgaWYgbWF0Y2hlZDoKICAgICAgICAgICAgICAgICAgICAgbGluZW5vLCBtZXNzYWdl
ID0gbWF0Y2hlZC5ncm91cCgnbGluZScsICdtZXNzYWdlJykKICAgICAgICAgICAgICAgICAgICAg
c2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGludChsaW5lbm8pLCAndGVzdC9leHBlY3RhdGlvbnMn
LCBsZXZlbCwgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDkyZDFmZTYyOGEzZTBmMTM4MmQ1YzZhYjU0ZWNkMTkzNTNkNzIzNDUuLmU1M2EwNDk2MWRh
MTIyNTdmNzkyZWM4NzNhMDVkM2ZkNjg1MTM5ZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9u
c191bml0dGVzdC5weQpAQCAtMTIwLDI2ICsxMjAsMjYgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9u
c1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3ZhbGlkX21vZGlm
aWVycyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKLSAgICAgICAgICAg
IFsiSU5WQUxJRC1NT0RJRklFUiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCisgICAgICAg
ICAgICBbIkJVR1dLMSBJTlZBTElELU1PRElGSUVSIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1Mi
XSwKICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgbW9kaWZpZXIgJ2ludmFsaWQtbW9kaWZpZXIn
ICIKICAgICAgICAgICAgICJwYXNzZXMvdGV4dC5odG1sICBbdGVzdC9leHBlY3RhdGlvbnNdIFs1
XSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCiAgICAgICAgICAgICBbIlNLSVAg
OiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUyJdLAogICAgICAgICAgICAgIlRlc3QgbGFja3MgQlVH
IG1vZGlmaWVyLiAiCi0gICAgICAgICAgICAicGFzc2VzL3RleHQuaHRtbCAgW3Rlc3QvZXhwZWN0
YXRpb25zXSBbMl0iKQorICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVj
dGF0aW9uc10gWzVdIikKIAogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uX2Vycm9ycyhzZWxmKToK
ICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAgICAgIFsibWlzc2luZyBl
eHBlY3RhdGlvbnMiXSwKICAgICAgICAgICAgICJNaXNzaW5nIGEgJzonIG1pc3NpbmcgZXhwZWN0
YXRpb25zICBbdGVzdC9leHBlY3RhdGlvbnNdIFs1XSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bmVzX2xpbnQoCi0gICAgICAgICAgICBbIlNMT1cgOiBwYXNzZXMvdGV4dC5odG1sID0gVElNRU9V
VCJdLAorICAgICAgICAgICAgWyJCVUdXSzEgU0xPVyA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBUSU1F
T1VUIl0sCiAgICAgICAgICAgICAiQSB0ZXN0IGNhbiBub3QgYmUgYm90aCBTTE9XIGFuZCBUSU1F
T1VULiAiCiAgICAgICAgICAgICAiSWYgaXQgdGltZXMgb3V0IGluZGVmaW5pdGVseSwgdGhlbiBp
dCBzaG91bGQgYmUganVzdCBUSU1FT1VULiAiCiAgICAgICAgICAgICAicGFzc2VzL3RleHQuaHRt
bCAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV0iKQogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19s
aW50KAogICAgICAgICAgICAgWyJCVUdXSzEgOiBkb2VzL25vdC9leGlzdC5odG1sID0gRkFJTCJd
LAotICAgICAgICAgICAgIlBhdGggZG9lcyBub3QgZXhpc3QuIGRvZXMvbm90L2V4aXN0Lmh0bWwg
IFt0ZXN0L2V4cGVjdGF0aW9uc10gWzJdIikKKyAgICAgICAgICAgICJQYXRoIGRvZXMgbm90IGV4
aXN0LiBkb2VzL25vdC9leGlzdC5odG1sICBbdGVzdC9leHBlY3RhdGlvbnNdIFs1XSIpCiAKICAg
ICBkZWYgdGVzdF9wYXJzZV9leHBlY3RhdGlvbnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbmVzX2xpbnQoCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123222</attachid>
            <date>2012-01-19 16:42:55 -0800</date>
            <delta_ts>2012-02-02 13:37:16 -0800</delta_ts>
            <desc>rename assert_bad_exp</desc>
            <filename>bug-73603-20120119164254.patch</filename>
            <type>text/plain</type>
            <size>35140</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NDQ5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjFjOWNkMTA5MWEzYjEzMWNmODBmM2ZjODJlZTA2NWYw
ODhlNGI5Mi4uNTZmZjU5Zjg1YjZjODc4MjRlOTg4MzQ4NzljOTRmZmQ1M2U1NGRlYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc0
IEBACiAyMDEyLTAxLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5yd3Qgc2hvdWxkbid0IGJsb3cgdXAgd2hlbiB0aGVyZSBhcmUgZXJyb3JzIGluIHRl
c3RfZXhwZWN0YXRpb25zLnR4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzM2MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSByZW1vdmVzIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuICdl
cnJvcnMnIGFuZCAnd2FybmluZ3MnCisgICAgICAgIGluIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBw
YXJzZXIuIE5vdywgYW55IHByb2JsZW0gaXMgYQorICAgICAgICAnd2FybmluZycsIGFuZCBpZiB3
ZSBhcmUgbGludGluZyB0aGUgZmlsZSwgd2FybmluZ3MgYmVjb21lIGZhdGFsIChlcnJvcnMpLgor
CisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBhIG5vcm1hbCBydW4td2Via2l0LXRlc3RzIHJ1biB0
byBwcm9jZWVkIGV2ZW4gaWYKKyAgICAgICAgdGhlcmUgYXJlIGJhZCBsaW5lcy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6
CisgICAgICAgIChNYW5hZ2VyLmxpbnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKFBhcnNlRXJy
b3IuX19pbml0X18pOgorICAgICAgICAoUGFyc2VFcnJvci5fX3N0cl9fKToKKyAgICAgICAgKFBh
cnNlRXJyb3IuX19yZXByX18pOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplci50
b19zdHJpbmcpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyLl9wYXJzZV9tb2RpZmll
cnMpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyLl9wYXJzZV9leHBlY3RhdGlvbnMp
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyLl9jaGVja19tb2RpZmllcnNfYWdhaW5z
dF9leHBlY3RhdGlvbnMpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyLnRva2VuaXpl
KToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbkxpbmUuX19pbml0X18pOgorICAgICAgICAoVGVz
dEV4cGVjdGF0aW9uTGluZS5pc19pbnZhbGlkKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbnNN
b2RlbC5hZGRfZXhwZWN0YXRpb25fbGluZSk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25zTW9k
ZWwuX2FscmVhZHlfc2Vlbl9iZXR0ZXJfbWF0Y2gpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9u
cy5fX2luaXRfXyk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25zLl9yZXBvcnRfd2FybmluZ3Mp
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9ucy5yZW1vdmVfcmViYXNlbGluZWRfdGVzdHMud2l0
aG91dF9yZWJhc2VsaW5lX21vZGlmaWVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisgICAgICAg
IChhc3NlcnRfYmFkX2V4cCk6CisgICAgICAgICh0ZXN0X3BhcnNlX3dhcm5pbmdzKToKKyAgICAg
ICAgKHRlc3Rfb3ZlcnJpZGVzX19kdXBsaWNhdGUpOgorICAgICAgICAoRXhwZWN0YXRpb25TeW50
YXhUZXN0cy50ZXN0X21pc3NpbmdfZXhwZWN0YXRpb24pOgorICAgICAgICAoRXhwZWN0YXRpb25T
eW50YXhUZXN0cy50ZXN0X21pc3NpbmdfY29sb24pOgorICAgICAgICAoRXhwZWN0YXRpb25TeW50
YXhUZXN0cy50ZXN0X3Rvb19tYW55X2NvbG9ucyk6CisgICAgICAgIChFeHBlY3RhdGlvblN5bnRh
eFRlc3RzLnRlc3RfdG9vX21hbnlfZXF1YWxzX3NpZ25zKToKKyAgICAgICAgKEV4cGVjdGF0aW9u
U3ludGF4VGVzdHMudGVzdF91bnJlY29nbml6ZWRfZXhwZWN0YXRpb24pOgorICAgICAgICAoU2Vt
YW50aWNUZXN0cy50ZXN0X2J1Z19mb3JtYXQpOgorICAgICAgICAoU2VtYW50aWNUZXN0cy50ZXN0
X21pc3NpbmdfYnVnaWQpOgorICAgICAgICAoU2VtYW50aWNUZXN0cy50ZXN0X3Nsb3dfYW5kX3Rp
bWVvdXQpOgorICAgICAgICAoU2VtYW50aWNUZXN0cy50ZXN0X3JlYmFzZWxpbmUpOgorICAgICAg
ICAoU2VtYW50aWNUZXN0cy50ZXN0X2R1cGxpY2F0ZXMpOgorICAgICAgICAoU2VtYW50aWNUZXN0
cy50ZXN0X21pc3NpbmdfZmlsZSk6CisgICAgICAgICh0ZXN0X2FtYmlndW91cyk6CisgICAgICAg
ICh0ZXN0X21vcmVfbW9kaWZpZXJzKToKKyAgICAgICAgKHRlc3Rfb3JkZXJfaW5fZmlsZSk6Cisg
ICAgICAgICh0ZXN0X21hY3JvX292ZXJyaWRlcyk6CisgICAgICAgIChSZWJhc2VsaW5pbmdUZXN0
LmFzc2VydFJlbW92ZSk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25QYXJzZXJUZXN0cy50ZXN0
X3Rva2VuaXplX2JsYW5rKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblBhcnNlclRlc3RzLnRl
c3RfdG9rZW5pemVfbWlzc2luZ19jb2xvbik6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25QYXJz
ZXJUZXN0cy50ZXN0X3Rva2VuaXplX2V4dHJhX2NvbG9uKToKKyAgICAgICAgKFRlc3RFeHBlY3Rh
dGlvblBhcnNlclRlc3RzLnRlc3RfdG9rZW5pemVfZW1wdHlfY29tbWVudCk6CisgICAgICAgIChU
ZXN0RXhwZWN0YXRpb25QYXJzZXJUZXN0cy50ZXN0X3Rva2VuaXplX2NvbW1lbnQpOgorICAgICAg
ICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyVGVzdHMudGVzdF90b2tlbml6ZV9taXNzaW5nX2VxdWFs
KToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblBhcnNlclRlc3RzLnRlc3RfdG9rZW5pemVfZXh0
cmFfZXF1YWwpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyVGVzdHMudGVzdF90b2tl
bml6ZV92YWxpZCk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25QYXJzZXJUZXN0cy50ZXN0X3Rv
a2VuaXplX3ZhbGlkX3dpdGhfY29tbWVudCk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25QYXJz
ZXJUZXN0cy50ZXN0X3Rva2VuaXplX3ZhbGlkX3dpdGhfbXVsdGlwbGVfbW9kaWZpZXJzKToKKyAg
ICAgICAgKFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXJUZXN0cy50ZXN0X3VucGFyc2VkX3RvX3N0
cmluZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4
cGVjdGF0aW9ucy5weToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyLmNoZWNrX3Rl
c3RfZXhwZWN0YXRpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdEV4cGVjdGF0
aW9uc1Rlc3RDYXNlLnRlc3RfdmFsaWRfbW9kaWZpZXJzKToKKyAgICAgICAgKFRlc3RFeHBlY3Rh
dGlvbnNUZXN0Q2FzZS50ZXN0X2V4cGVjdGF0aW9uX2Vycm9ycyk6CisKKzIwMTItMDEtMTkgIERp
cmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgcmVtb3ZlIHRoZSBk
dXBsaWNhdGVkIGJ1aWxkIHJ1bGVzIGZyb20gV2ViS2l0Lmd5cCwgVG9vbHMuZ3lwCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzM4NAogCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlci5weQppbmRleCAyNGQxYjczMWM0MDg0ZjExNDVmMmExNjQ2NmI3YTI5M2E0NTExOTQy
Li4wN2M5NzE3YThmOTUyZWUyOTBlZjdjMDM3YzBlNTUzOTFkNjY0YTk2IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXIucHkKQEAgLTM1NCw3ICszNTQsNiBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgc2VsZi5saW50X2V4cGVjdGF0aW9ucyh0ZXN0X2NvbmZpZ3VyYXRpb24pCiAg
ICAgICAgICAgICBleGNlcHQgdGVzdF9leHBlY3RhdGlvbnMuUGFyc2VFcnJvcjoKICAgICAgICAg
ICAgICAgICBsaW50X2ZhaWxlZCA9IFRydWUKLSAgICAgICAgICAgICAgICBzZWxmLl9wcmludGVy
LndyaXRlKCIiKQogCiAgICAgICAgIGlmIGxpbnRfZmFpbGVkOgogICAgICAgICAgICAgX2xvZy5l
cnJvcigiTGludCBmYWlsZWQuIikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCBj
Zjk3YjM0MjVjZWVjNTY1M2QzODhmYzZiNDFlYzc1YTI0OTBlZmM5Li44MDRkNGNlOWE2MzJjYmUz
OGMzOWViMWM3Y2EzZmFkZmEwMzQxMjkzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5
CkBAIC0xMDgsMTUgKzEwOCwxNCBAQCBkZWYgc3RyaXBfY29tbWVudHMobGluZSk6CiAKIAogY2xh
c3MgUGFyc2VFcnJvcihFeGNlcHRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYXRhbCwg
ZXJyb3JzKToKLSAgICAgICAgc2VsZi5mYXRhbCA9IGZhdGFsCi0gICAgICAgIHNlbGYuZXJyb3Jz
ID0gZXJyb3JzCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdhcm5pbmdzKToKKyAgICAgICAgc2Vs
Zi53YXJuaW5ncyA9IHdhcm5pbmdzCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAg
cmV0dXJuICdcbicuam9pbihtYXAoc3RyLCBzZWxmLmVycm9ycykpCisgICAgICAgIHJldHVybiAn
XG4nLmpvaW4obWFwKHN0ciwgc2VsZi53YXJuaW5ncykpCiAKICAgICBkZWYgX19yZXByX18oc2Vs
Zik6Ci0gICAgICAgIHJldHVybiAnUGFyc2VFcnJvcihmYXRhbD0lcywgZXJyb3JzPSVzKScgJSAo
c2VsZi5mYXRhbCwgc2VsZi5lcnJvcnMpCisgICAgICAgIHJldHVybiAnUGFyc2VFcnJvcih3YXJu
aW5ncz0lcyknICUgc2VsZi53YXJuaW5ncwogCiAKIGNsYXNzIFRlc3RFeHBlY3RhdGlvblNlcmlh
bGl6ZXIob2JqZWN0KToKQEAgLTEyNiw3ICsxMjUsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25T
ZXJpYWxpemVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BhcnNlZF9leHBlY3RhdGlvbl90b19z
dHJpbmcgPSBkaWN0KFtbcGFyc2VkX2V4cGVjdGF0aW9uLCBleHBlY3RhdGlvbl9zdHJpbmddIGZv
ciBleHBlY3RhdGlvbl9zdHJpbmcsIHBhcnNlZF9leHBlY3RhdGlvbiBpbiBUZXN0RXhwZWN0YXRp
b25zLkVYUEVDVEFUSU9OUy5pdGVtcygpXSkKIAogICAgIGRlZiB0b19zdHJpbmcoc2VsZiwgZXhw
ZWN0YXRpb25fbGluZSk6Ci0gICAgICAgIGlmIGV4cGVjdGF0aW9uX2xpbmUuaXNfbWFsZm9ybWVk
KCk6CisgICAgICAgIGlmIGV4cGVjdGF0aW9uX2xpbmUuaXNfaW52YWxpZCgpOgogICAgICAgICAg
ICAgcmV0dXJuIGV4cGVjdGF0aW9uX2xpbmUub3JpZ2luYWxfc3RyaW5nIG9yICcnCiAKICAgICAg
ICAgaWYgZXhwZWN0YXRpb25fbGluZS5uYW1lIGlzIE5vbmU6CkBAIC0yMTUsNiArMjE0LDcgQEAg
Y2xhc3MgVGVzdEV4cGVjdGF0aW9uUGFyc2VyKG9iamVjdCk6CiAKICAgICBkZWYgX3BhcnNlX21v
ZGlmaWVycyhzZWxmLCBleHBlY3RhdGlvbl9saW5lKToKICAgICAgICAgaGFzX3dvbnRmaXggPSBG
YWxzZQorICAgICAgICBiYWRfYnVnX21vZGlmaWVyID0gRmFsc2UKICAgICAgICAgcGFyc2VkX3Nw
ZWNpZmllcnMgPSBzZXQoKQogICAgICAgICBmb3IgbW9kaWZpZXIgaW4gZXhwZWN0YXRpb25fbGlu
ZS5tb2RpZmllcnM6CiAgICAgICAgICAgICBpZiBtb2RpZmllciBpbiBUZXN0RXhwZWN0YXRpb25z
Lk1PRElGSUVSUzoKQEAgLTIyMywzMyArMjIzLDM0IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvblBh
cnNlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBoYXNfd29udGZpeCA9IFRydWUKICAg
ICAgICAgICAgIGVsaWYgbW9kaWZpZXIuc3RhcnRzd2l0aChzZWxmLkJVR19NT0RJRklFUl9QUkVG
SVgpOgogICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKHNlbGYuQlVHX01PRElGSUVSX1JFR0VY
LCBtb2RpZmllcik6Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUuZXJyb3Jz
LmFwcGVuZCgnQlVHXGQrIGlzIG5vdCBhbGxvd2VkLCBtdXN0IGJlIG9uZSBvZiBCVUdDUlxkKywg
QlVHV0tcZCssIEJVR1Y4X1xkKywgb3IgYSBub24tbnVtZXJpYyBidWcgaWRlbnRpZmllci4nKQor
ICAgICAgICAgICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLndhcm5pbmdzLmFwcGVuZCgnQlVH
XGQrIGlzIG5vdCBhbGxvd2VkLCBtdXN0IGJlIG9uZSBvZiBCVUdDUlxkKywgQlVHV0tcZCssIEJV
R1Y4X1xkKywgb3IgYSBub24tbnVtZXJpYyBidWcgaWRlbnRpZmllci4nKQorICAgICAgICAgICAg
ICAgICAgICBiYWRfYnVnX21vZGlmaWVyID0gVHJ1ZQogICAgICAgICAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUucGFyc2VkX2J1Z19tb2RpZmllcnMu
YXBwZW5kKG1vZGlmaWVyKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBwYXJz
ZWRfc3BlY2lmaWVycy5hZGQobW9kaWZpZXIpCiAKLSAgICAgICAgaWYgbm90IGV4cGVjdGF0aW9u
X2xpbmUucGFyc2VkX2J1Z19tb2RpZmllcnMgYW5kIG5vdCBoYXNfd29udGZpeDoKKyAgICAgICAg
aWYgbm90IGV4cGVjdGF0aW9uX2xpbmUucGFyc2VkX2J1Z19tb2RpZmllcnMgYW5kIG5vdCBiYWRf
YnVnX21vZGlmaWVyIGFuZCBub3QgaGFzX3dvbnRmaXg6CiAgICAgICAgICAgICBleHBlY3RhdGlv
bl9saW5lLndhcm5pbmdzLmFwcGVuZCgnVGVzdCBsYWNrcyBCVUcgbW9kaWZpZXIuJykKIAogICAg
ICAgICBpZiBzZWxmLl9hbGxvd19yZWJhc2VsaW5lX21vZGlmaWVyIGFuZCBzZWxmLlJFQkFTRUxJ
TkVfTU9ESUZJRVIgaW4gZXhwZWN0YXRpb25fbGluZS5tb2RpZmllcnM6Ci0gICAgICAgICAgICBl
eHBlY3RhdGlvbl9saW5lLmVycm9ycy5hcHBlbmQoJ1JFQkFTRUxJTkUgc2hvdWxkIG9ubHkgYmUg
dXNlZCBmb3IgcnVubmluZyByZWJhc2VsaW5lLnB5LiBDYW5ub3QgYmUgY2hlY2tlZCBpbi4nKQor
ICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS53YXJuaW5ncy5hcHBlbmQoJ1JFQkFTRUxJTkUg
c2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgcnVubmluZyByZWJhc2VsaW5lLnB5LiBDYW5ub3QgYmUg
Y2hlY2tlZCBpbi4nKQogCi0gICAgICAgIGV4cGVjdGF0aW9uX2xpbmUubWF0Y2hpbmdfY29uZmln
dXJhdGlvbnMgPSBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRpb25fY29udmVydGVyLnRvX2NvbmZpZ19z
ZXQocGFyc2VkX3NwZWNpZmllcnMsIGV4cGVjdGF0aW9uX2xpbmUuZXJyb3JzKQorICAgICAgICBl
eHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zID0gc2VsZi5fdGVzdF9jb25m
aWd1cmF0aW9uX2NvbnZlcnRlci50b19jb25maWdfc2V0KHBhcnNlZF9zcGVjaWZpZXJzLCBleHBl
Y3RhdGlvbl9saW5lLndhcm5pbmdzKQogCiAgICAgZGVmIF9wYXJzZV9leHBlY3RhdGlvbnMoc2Vs
ZiwgZXhwZWN0YXRpb25fbGluZSk6CiAgICAgICAgIHJlc3VsdCA9IHNldCgpCiAgICAgICAgIGZv
ciBwYXJ0IGluIGV4cGVjdGF0aW9uX2xpbmUuZXhwZWN0YXRpb25zOgogICAgICAgICAgICAgZXhw
ZWN0YXRpb24gPSBUZXN0RXhwZWN0YXRpb25zLmV4cGVjdGF0aW9uX2Zyb21fc3RyaW5nKHBhcnQp
CiAgICAgICAgICAgICBpZiBleHBlY3RhdGlvbiBpcyBOb25lOiAgIyBDYXJlZnVsLCBQQVNTIGlz
IGN1cnJlbnRseSAwLgotICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUuZXJyb3JzLmFw
cGVuZCgnVW5zdXBwb3J0ZWQgZXhwZWN0YXRpb246ICVzJyAlIHBhcnQpCisgICAgICAgICAgICAg
ICAgZXhwZWN0YXRpb25fbGluZS53YXJuaW5ncy5hcHBlbmQoJ1Vuc3VwcG9ydGVkIGV4cGVjdGF0
aW9uOiAlcycgJSBwYXJ0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBy
ZXN1bHQuYWRkKGV4cGVjdGF0aW9uKQogICAgICAgICBleHBlY3RhdGlvbl9saW5lLnBhcnNlZF9l
eHBlY3RhdGlvbnMgPSByZXN1bHQKIAogICAgIGRlZiBfY2hlY2tfbW9kaWZpZXJzX2FnYWluc3Rf
ZXhwZWN0YXRpb25zKHNlbGYsIGV4cGVjdGF0aW9uX2xpbmUpOgogICAgICAgICBpZiBzZWxmLlNM
T1dfTU9ESUZJRVIgaW4gZXhwZWN0YXRpb25fbGluZS5tb2RpZmllcnMgYW5kIHNlbGYuVElNRU9V
VF9FWFBFQ1RBVElPTiBpbiBleHBlY3RhdGlvbl9saW5lLmV4cGVjdGF0aW9uczoKLSAgICAgICAg
ICAgIGV4cGVjdGF0aW9uX2xpbmUuZXJyb3JzLmFwcGVuZCgnQSB0ZXN0IGNhbiBub3QgYmUgYm90
aCBTTE9XIGFuZCBUSU1FT1VULiBJZiBpdCB0aW1lcyBvdXQgaW5kZWZpbml0ZWx5LCB0aGVuIGl0
IHNob3VsZCBiZSBqdXN0IFRJTUVPVVQuJykKKyAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUu
d2FybmluZ3MuYXBwZW5kKCdBIHRlc3QgY2FuIG5vdCBiZSBib3RoIFNMT1cgYW5kIFRJTUVPVVQu
IElmIGl0IHRpbWVzIG91dCBpbmRlZmluaXRlbHksIHRoZW4gaXQgc2hvdWxkIGJlIGp1c3QgVElN
RU9VVC4nKQogCiAgICAgZGVmIF9jaGVja19wYXRoX2RvZXNfbm90X2V4aXN0KHNlbGYsIGV4cGVj
dGF0aW9uX2xpbmUpOgogICAgICAgICAjIFdlYktpdCdzIHdheSBvZiBza2lwcGluZyB0ZXN0cyBp
cyB0byBhZGQgYSAtZGlzYWJsZWQgc3VmZml4LgpAQCAtMzEzLDEzICszMTQsMTMgQEAgY2xhc3Mg
VGVzdEV4cGVjdGF0aW9uUGFyc2VyKG9iamVjdCk6CiAKICAgICAgICAgcGFydHMgPSByZW1haW5p
bmdfc3RyaW5nLnNwbGl0KCc6JykKICAgICAgICAgaWYgbGVuKHBhcnRzKSAhPSAyOgotICAgICAg
ICAgICAgZXhwZWN0YXRpb25fbGluZS5lcnJvcnMuYXBwZW5kKCJNaXNzaW5nIGEgJzonIiBpZiBs
ZW4ocGFydHMpIDwgMiBlbHNlICJFeHRyYW5lb3VzICc6JyIpCisgICAgICAgICAgICBleHBlY3Rh
dGlvbl9saW5lLndhcm5pbmdzLmFwcGVuZCgiTWlzc2luZyBhICc6JyIgaWYgbGVuKHBhcnRzKSA8
IDIgZWxzZSAiRXh0cmFuZW91cyAnOiciKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdGVz
dF9hbmRfZXhwZWN0YXRpb24gPSBwYXJ0c1sxXS5zcGxpdCgnPScpCiAgICAgICAgICAgICBpZiBs
ZW4odGVzdF9hbmRfZXhwZWN0YXRpb24pICE9IDI6Ci0gICAgICAgICAgICAgICAgZXhwZWN0YXRp
b25fbGluZS5lcnJvcnMuYXBwZW5kKCJNaXNzaW5nIGV4cGVjdGF0aW9ucyIgaWYgbGVuKHRlc3Rf
YW5kX2V4cGVjdGF0aW9uKSA8IDIgZWxzZSAiRXh0cmFuZW91cyAnPSciKQorICAgICAgICAgICAg
ICAgIGV4cGVjdGF0aW9uX2xpbmUud2FybmluZ3MuYXBwZW5kKCJNaXNzaW5nIGV4cGVjdGF0aW9u
cyIgaWYgbGVuKHRlc3RfYW5kX2V4cGVjdGF0aW9uKSA8IDIgZWxzZSAiRXh0cmFuZW91cyAnPSci
KQogCi0gICAgICAgIGlmIG5vdCBleHBlY3RhdGlvbl9saW5lLmlzX21hbGZvcm1lZCgpOgorICAg
ICAgICBpZiBub3QgZXhwZWN0YXRpb25fbGluZS5pc19pbnZhbGlkKCk6CiAgICAgICAgICAgICBl
eHBlY3RhdGlvbl9saW5lLm1vZGlmaWVycyA9IGNscy5fc3BsaXRfc3BhY2Vfc2VwYXJhdGVkKHBh
cnRzWzBdKQogICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5uYW1lID0gdGVzdF9hbmRfZXhw
ZWN0YXRpb25bMF0uc3RyaXAoKQogICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5leHBlY3Rh
dGlvbnMgPSBjbHMuX3NwbGl0X3NwYWNlX3NlcGFyYXRlZCh0ZXN0X2FuZF9leHBlY3RhdGlvblsx
XSkKQEAgLTM2MCwxNCArMzYxLDEwIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbkxpbmU6CiAgICAg
ICAgIHNlbGYucGFyc2VkX2V4cGVjdGF0aW9ucyA9IHNldCgpCiAgICAgICAgIHNlbGYuY29tbWVu
dCA9IE5vbmUKICAgICAgICAgc2VsZi5tYXRjaGluZ190ZXN0cyA9IFtdCi0gICAgICAgIHNlbGYu
ZXJyb3JzID0gW10KICAgICAgICAgc2VsZi53YXJuaW5ncyA9IFtdCiAKLSAgICBkZWYgaXNfbWFs
Zm9ybWVkKHNlbGYpOgotICAgICAgICByZXR1cm4gbGVuKHNlbGYuZXJyb3JzKSA+IDAKLQogICAg
IGRlZiBpc19pbnZhbGlkKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5pc19tYWxmb3JtZWQo
KSBvciBsZW4oc2VsZi53YXJuaW5ncykgPiAwCisgICAgICAgIHJldHVybiBsZW4oc2VsZi53YXJu
aW5ncykgPiAwCiAKICAgICBkZWYgaXNfZmxha3koc2VsZik6CiAgICAgICAgIHJldHVybiBsZW4o
c2VsZi5wYXJzZWRfZXhwZWN0YXRpb25zKSA+IDEKQEAgLTQ1MSw3ICs0NDgsNyBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25zTW9kZWwob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3Rf
dG9fZXhwZWN0YXRpb25zW3Rlc3RdCiAKICAgICBkZWYgYWRkX2V4cGVjdGF0aW9uX2xpbmUoc2Vs
ZiwgZXhwZWN0YXRpb25fbGluZSwgb3ZlcnJpZGVzX2FsbG93ZWQpOgotICAgICAgICAiIiJSZXR1
cm5zIGEgbGlzdCBvZiBlcnJvcnMsIGVuY291bnRlcmVkIHdoaWxlIG1hdGNoaW5nIG1vZGlmaWVy
cy4iIiIKKyAgICAgICAgIiIiUmV0dXJucyBhIGxpc3Qgb2Ygd2FybmluZ3MgZW5jb3VudGVyZWQg
d2hpbGUgbWF0Y2hpbmcgbW9kaWZpZXJzLiIiIgogCiAgICAgICAgIGlmIGV4cGVjdGF0aW9uX2xp
bmUuaXNfaW52YWxpZCgpOgogICAgICAgICAgICAgcmV0dXJuCkBAIC01NjksMjAgKzU2NiwyMCBA
QCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zTW9kZWwob2JqZWN0KToKICAgICAgICAgIyB0byBiZSB3
YXJuaW5ncyBhbmQgcmV0dXJuIEZhbHNlIi4KIAogICAgICAgICBpZiBwcmV2X2V4cGVjdGF0aW9u
X2xpbmUubWF0Y2hpbmdfY29uZmlndXJhdGlvbnMgPT0gZXhwZWN0YXRpb25fbGluZS5tYXRjaGlu
Z19jb25maWd1cmF0aW9uczoKLSAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUuZXJyb3JzLmFw
cGVuZCgnRHVwbGljYXRlIG9yIGFtYmlndW91cyAlcy4nICUgZXhwZWN0YXRpb25fc291cmNlKQor
ICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS53YXJuaW5ncy5hcHBlbmQoJ0R1cGxpY2F0ZSBv
ciBhbWJpZ3VvdXMgJXMuJyAlIGV4cGVjdGF0aW9uX3NvdXJjZSkKICAgICAgICAgICAgIHJldHVy
biBUcnVlCiAKICAgICAgICAgaWYgcHJldl9leHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX2NvbmZp
Z3VyYXRpb25zID49IGV4cGVjdGF0aW9uX2xpbmUubWF0Y2hpbmdfY29uZmlndXJhdGlvbnM6Ci0g
ICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLmVycm9ycy5hcHBlbmQoJ01vcmUgc3BlY2lmaWMg
ZW50cnkgb24gbGluZSAlZCBvdmVycmlkZXMgbGluZSAlZCcgJSAoZXhwZWN0YXRpb25fbGluZS5s
aW5lX251bWJlciwgcHJldl9leHBlY3RhdGlvbl9saW5lLmxpbmVfbnVtYmVyKSkKKyAgICAgICAg
ICAgIGV4cGVjdGF0aW9uX2xpbmUud2FybmluZ3MuYXBwZW5kKCdNb3JlIHNwZWNpZmljIGVudHJ5
IG9uIGxpbmUgJWQgb3ZlcnJpZGVzIGxpbmUgJWQnICUgKGV4cGVjdGF0aW9uX2xpbmUubGluZV9u
dW1iZXIsIHByZXZfZXhwZWN0YXRpb25fbGluZS5saW5lX251bWJlcikpCiAgICAgICAgICAgICAj
IEZJWE1FOiByZXR1cm4gRmFsc2UgaWYgd2Ugd2FudCBtb3JlIHNwZWNpZmljIHRvIHdpbi4KICAg
ICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgaWYgcHJldl9leHBlY3RhdGlvbl9saW5l
Lm1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zIDw9IGV4cGVjdGF0aW9uX2xpbmUubWF0Y2hpbmdfY29u
ZmlndXJhdGlvbnM6Ci0gICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLmVycm9ycy5hcHBlbmQo
J01vcmUgc3BlY2lmaWMgZW50cnkgb24gbGluZSAlZCBvdmVycmlkZXMgbGluZSAlZCcgJSAocHJl
dl9leHBlY3RhdGlvbl9saW5lLmxpbmVfbnVtYmVyLCBleHBlY3RhdGlvbl9saW5lLmxpbmVfbnVt
YmVyKSkKKyAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUud2FybmluZ3MuYXBwZW5kKCdNb3Jl
IHNwZWNpZmljIGVudHJ5IG9uIGxpbmUgJWQgb3ZlcnJpZGVzIGxpbmUgJWQnICUgKHByZXZfZXhw
ZWN0YXRpb25fbGluZS5saW5lX251bWJlciwgZXhwZWN0YXRpb25fbGluZS5saW5lX251bWJlcikp
CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgIGlmIHByZXZfZXhwZWN0YXRpb25f
bGluZS5tYXRjaGluZ19jb25maWd1cmF0aW9ucyAmIGV4cGVjdGF0aW9uX2xpbmUubWF0Y2hpbmdf
Y29uZmlndXJhdGlvbnM6Ci0gICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLmVycm9ycy5hcHBl
bmQoJ0VudHJpZXMgb24gbGluZSAlZCBhbmQgbGluZSAlZCBtYXRjaCBvdmVybGFwcGluZyBzZXRz
IG9mIGNvbmZpZ3VyYXRpb25zJyAlIChwcmV2X2V4cGVjdGF0aW9uX2xpbmUubGluZV9udW1iZXIs
IGV4cGVjdGF0aW9uX2xpbmUubGluZV9udW1iZXIpKQorICAgICAgICAgICAgZXhwZWN0YXRpb25f
bGluZS53YXJuaW5ncy5hcHBlbmQoJ0VudHJpZXMgb24gbGluZSAlZCBhbmQgbGluZSAlZCBtYXRj
aCBvdmVybGFwcGluZyBzZXRzIG9mIGNvbmZpZ3VyYXRpb25zJyAlIChwcmV2X2V4cGVjdGF0aW9u
X2xpbmUubGluZV9udW1iZXIsIGV4cGVjdGF0aW9uX2xpbmUubGluZV9udW1iZXIpKQogICAgICAg
ICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICAjIENvbmZpZ3VyYXRpb24gc2V0cyBhcmUgZGlz
am9pbnQsIHRoZW4uCkBAIC02ODMsOCArNjgwLDggQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9ucyhv
YmplY3QpOgogICAgICAgICAgICAgdGVzdF9jb25maWc6IHNwZWNpZmljIHZhbHVlcyB0byBjaGVj
ayBhZ2FpbnN0IHdoZW4KICAgICAgICAgICAgICAgICBwYXJzaW5nIHRoZSBmaWxlICh1c3VhbGx5
IHBvcnQudGVzdF9jb25maWcoKSwKICAgICAgICAgICAgICAgICBidXQgbWF5IGJlIGRpZmZlcmVu
dCB3aGVuIGxpbnRpbmcgb3IgZG9pbmcgb3RoZXIgdGhpbmdzKS4KLSAgICAgICAgICAgIGlzX2xp
bnRfbW9kZTogSWYgVHJ1ZSwganVzdCBwYXJzZSB0aGUgZXhwZWN0YXRpb25zIHN0cmluZwotICAg
ICAgICAgICAgICAgIGxvb2tpbmcgZm9yIGVycm9ycy4KKyAgICAgICAgICAgIGlzX2xpbnRfbW9k
ZTogSWYgVHJ1ZSwgcGFyc2UgdGhlIGV4cGVjdGF0aW9ucyBzdHJpbmcgYW5kIHJhaXNlCisgICAg
ICAgICAgICAgICAgYW4gZXhjZXB0aW9uIGlmIHdhcm5pbmdzIGFyZSBlbmNvdW50ZXJlZC4KICAg
ICAgICAgICAgIG92ZXJyaWRlczogdGVzdCBleHBlY3RhdGlvbnMgdGhhdCBhcmUgYWxsb3dlZCB0
byBvdmVycmlkZSBhbnkKICAgICAgICAgICAgICAgICBlbnRyaWVzIGluIHxleHBlY3RhdGlvbnN8
LiBUaGlzIGlzIHVzZWQgYnkgY2FsbGVycwogICAgICAgICAgICAgICAgIHRoYXQgbmVlZCB0byBt
YW5hZ2UgdHdvIHNldHMgb2YgZXhwZWN0YXRpb25zIChlLmcuLCB1cHN0cmVhbQpAQCAtNzA5LDcg
KzcwNiw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnMob2JqZWN0KToKICAgICAgICAgICAgIHNl
bGYuX2V4cGVjdGF0aW9ucyArPSBvdmVycmlkZXNfZXhwZWN0YXRpb25zCiAKICAgICAgICAgc2Vs
Zi5faGFzX3dhcm5pbmdzID0gRmFsc2UKLSAgICAgICAgc2VsZi5fcmVwb3J0X2Vycm9ycygpCisg
ICAgICAgIHNlbGYuX3JlcG9ydF93YXJuaW5ncygpCiAgICAgICAgIHNlbGYuX3Byb2Nlc3NfdGVz
dHNfd2l0aG91dF9leHBlY3RhdGlvbnMoKQogCiAgICAgIyBUT0RPKG9qYW4pOiBBbGxvdyBmb3Ig
cmVtb3Zpbmcgc2tpcHBlZCB0ZXN0cyB3aGVuIGdldHRpbmcgdGhlIGxpc3Qgb2YKQEAgLTc3Niwz
NCArNzczLDI1IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnMob2JqZWN0KToKICAgICBkZWYgaXNf
cmViYXNlbGluaW5nKHNlbGYsIHRlc3QpOgogICAgICAgICByZXR1cm4gc2VsZi5fbW9kZWwuaGFz
X21vZGlmaWVyKHRlc3QsIFJFQkFTRUxJTkUpCiAKLSAgICBkZWYgX3JlcG9ydF9lcnJvcnMoc2Vs
Zik6Ci0gICAgICAgIGVycm9ycyA9IFtdCisgICAgZGVmIF9yZXBvcnRfd2FybmluZ3Moc2VsZik6
CiAgICAgICAgIHdhcm5pbmdzID0gW10KICAgICAgICAgZm9yIGV4cGVjdGF0aW9uIGluIHNlbGYu
X2V4cGVjdGF0aW9uczoKLSAgICAgICAgICAgIGZvciBlcnJvciBpbiBleHBlY3RhdGlvbi5lcnJv
cnM6Ci0gICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgiTGluZTolcyAlcyAlcyIgJSAoZXhw
ZWN0YXRpb24ubGluZV9udW1iZXIsIGVycm9yLCBleHBlY3RhdGlvbi5uYW1lIGlmIGV4cGVjdGF0
aW9uLmV4cGVjdGF0aW9ucyBlbHNlIGV4cGVjdGF0aW9uLm9yaWdpbmFsX3N0cmluZykpCiAgICAg
ICAgICAgICBmb3Igd2FybmluZyBpbiBleHBlY3RhdGlvbi53YXJuaW5nczoKICAgICAgICAgICAg
ICAgICB3YXJuaW5ncy5hcHBlbmQoIkxpbmU6JXMgJXMgJXMiICUgKGV4cGVjdGF0aW9uLmxpbmVf
bnVtYmVyLCB3YXJuaW5nLCBleHBlY3RhdGlvbi5uYW1lIGlmIGV4cGVjdGF0aW9uLmV4cGVjdGF0
aW9ucyBlbHNlIGV4cGVjdGF0aW9uLm9yaWdpbmFsX3N0cmluZykpCi0KICAgICAgICAgZm9yIHdh
cm5pbmcgaW4gc2VsZi5fc2tpcHBlZF90ZXN0c193YXJuaW5nczoKICAgICAgICAgICAgIHdhcm5p
bmdzLmFwcGVuZCh3YXJuaW5nKQogCi0gICAgICAgIGlmIGxlbihlcnJvcnMpIG9yIGxlbih3YXJu
aW5ncyk6CisgICAgICAgIGlmIHdhcm5pbmdzOgogICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlv
bl9wYXRoID0gc2VsZi5fcG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKQotICAg
ICAgICAgICAgZmFpbHVyZV90aXRsZSA9ICJGQUlMVVJFUyBGT1IgJXMgaW4gJXMiICUgKHN0cihz
ZWxmLl90ZXN0X2NvbmZpZyksIHRlc3RfZXhwZWN0YXRpb25fcGF0aCkKLSAgICAgICAgICAgIF9s
b2cuZXJyb3IoZmFpbHVyZV90aXRsZSkKLQotICAgICAgICAgICAgZm9yIGVycm9yIGluIGVycm9y
czoKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGVycm9yKQorICAgICAgICAgICAgZmFpbHVy
ZV90aXRsZSA9ICJGQUlMVVJFUyBGT1IgJXMgaW4gJXM6IiAlIChzdHIoc2VsZi5fdGVzdF9jb25m
aWcpLCB0ZXN0X2V4cGVjdGF0aW9uX3BhdGgpCisgICAgICAgICAgICBfbG9nLndhcm5pbmcoZmFp
bHVyZV90aXRsZSkKICAgICAgICAgICAgIGZvciB3YXJuaW5nIGluIHdhcm5pbmdzOgotICAgICAg
ICAgICAgICAgIF9sb2cuZXJyb3Iod2FybmluZykKKyAgICAgICAgICAgICAgICBfbG9nLndhcm5p
bmcoJyAgJyArIHdhcm5pbmcpCisgICAgICAgICAgICBfbG9nLndhcm5pbmcoJycpCiAKLSAgICAg
ICAgICAgIGlmIGxlbihlcnJvcnMpOgotICAgICAgICAgICAgICAgIHJhaXNlIFBhcnNlRXJyb3Io
ZmF0YWw9VHJ1ZSwgZXJyb3JzPVtmYWlsdXJlX3RpdGxlXSArIGVycm9ycykKLSAgICAgICAgICAg
IGlmIGxlbih3YXJuaW5ncyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5faGFzX3dhcm5pbmdzID0g
VHJ1ZQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX2lzX2xpbnRfbW9kZToKLSAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgUGFyc2VFcnJvcihmYXRhbD1GYWxzZSwgZXJyb3JzPVtmYWlsdXJlX3Rp
dGxlXSArIHdhcm5pbmdzKQorICAgICAgICAgICAgc2VsZi5faGFzX3dhcm5pbmdzID0gVHJ1ZQor
ICAgICAgICAgICAgaWYgc2VsZi5faXNfbGludF9tb2RlOgorICAgICAgICAgICAgICAgIHJhaXNl
IFBhcnNlRXJyb3Iod2FybmluZ3M9KFtmYWlsdXJlX3RpdGxlXSArIHdhcm5pbmdzKSkKIAogICAg
IGRlZiBfcHJvY2Vzc190ZXN0c193aXRob3V0X2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAgICAg
aWYgc2VsZi5fZnVsbF90ZXN0X2xpc3Q6CkBAIC04MTcsNyArODA1LDcgQEAgY2xhc3MgVGVzdEV4
cGVjdGF0aW9ucyhvYmplY3QpOgogICAgIGRlZiByZW1vdmVfcmViYXNlbGluZWRfdGVzdHMoc2Vs
ZiwgZXhjZXB0X3RoZXNlX3Rlc3RzKToKICAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgb2YgdGhl
IGV4cGVjdGF0aW9ucyB3aXRoIHRoZSB0ZXN0cyByZW1vdmVkLiIiIgogICAgICAgICBkZWYgd2l0
aG91dF9yZWJhc2VsaW5lX21vZGlmaWVyKGV4cGVjdGF0aW9uKToKLSAgICAgICAgICAgIHJldHVy
biBub3QgKG5vdCBleHBlY3RhdGlvbi5pc19tYWxmb3JtZWQoKSBhbmQgZXhwZWN0YXRpb24ubmFt
ZSBpbiBleGNlcHRfdGhlc2VfdGVzdHMgYW5kICJyZWJhc2VsaW5lIiBpbiBleHBlY3RhdGlvbi5t
b2RpZmllcnMpCisgICAgICAgICAgICByZXR1cm4gbm90IChub3QgZXhwZWN0YXRpb24uaXNfaW52
YWxpZCgpIGFuZCBleHBlY3RhdGlvbi5uYW1lIGluIGV4Y2VwdF90aGVzZV90ZXN0cyBhbmQgInJl
YmFzZWxpbmUiIGluIGV4cGVjdGF0aW9uLm1vZGlmaWVycykKIAogICAgICAgICByZXR1cm4gVGVz
dEV4cGVjdGF0aW9uU2VyaWFsaXplci5saXN0X3RvX3N0cmluZyhmaWx0ZXIod2l0aG91dF9yZWJh
c2VsaW5lX21vZGlmaWVyLCBzZWxmLl9leHBlY3RhdGlvbnMpKQogCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNf
dW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMv
dGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKaW5kZXggNjQ3MzA1MzA3MzE0NzM5MDY4ZmQ2
NTA4YWNlZTA5MWUyNzA5NDJkMS4uN2U0NmM2ZDE0YjU1ZDA0ZmNlZDVlMTIwZDM5ZmUzNzM3NzU0
ZGQ0NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9k
ZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpA
QCAtMTMxLDYgKzEzMSw5IEBAIEJVR19URVNUIFdPTlRGSVggTUFDIDogZmFpbHVyZXMvZXhwZWN0
ZWQvaW1hZ2UuaHRtbCA9IElNQUdFCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuX2V4
cC5nZXRfZXhwZWN0YXRpb25zKHNlbGYuZ2V0X3Rlc3QodGVzdCkpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXQoW3Jlc3VsdF0pKQogCisgICAgZGVmIGFzc2VydF9iYWRfZXhwZWN0YXRp
b25zKHNlbGYsIGV4cGVjdGF0aW9ucywgb3ZlcnJpZGVzPU5vbmUpOgorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgZXhwZWN0YXRpb25zLCBpc19s
aW50X21vZGU9VHJ1ZSwgb3ZlcnJpZGVzPW92ZXJyaWRlcykKKwogCiBjbGFzcyBCYXNpY1Rlc3Rz
KEJhc2UpOgogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgpAQCAtMTkyLDMwICsxOTUsMjcgQEAg
QlVHWCBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQogICAgICAgICBzID0gc2Vs
Zi5fZXhwLmdldF90ZXN0X3NldChXT05URklYLCBDUkFTSCwgaW5jbHVkZV9za2lwcz1GYWxzZSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBzZXQoW10pKQogCi0gICAgZGVmIHRlc3RfcGFy
c2VfZXJyb3JfZmF0YWwoc2VsZik6CisgICAgZGVmIHRlc3RfcGFyc2Vfd2FybmluZ3Moc2VsZik6
CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwKCIiIkZPTyA6IGZhaWx1
cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKLVNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9p
bWFnZS5odG1sIiIiKQorU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwiIiIsIGlz
X2xpbnRfbW9kZT1UcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShUcnVlLCAiUGFy
c2VFcnJvciB3YXNuJ3QgcmFpc2VkIikKICAgICAgICAgZXhjZXB0IFBhcnNlRXJyb3IsIGU6Ci0g
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZS5mYXRhbCkKLSAgICAgICAgICAgIGV4cF9lcnJv
cnMgPSBbdSJGQUlMVVJFUyBGT1IgJXMgaW4gJXMiICUgKHNlbGYuX3BvcnQudGVzdF9jb25maWd1
cmF0aW9uKCksIHNlbGYuX3BvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB1IkxpbmU6MSBVbnJlY29nbml6ZWQgbW9kaWZpZXIg
J2ZvbycgZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgdSJMaW5lOjIgTWlzc2luZyBleHBlY3RhdGlvbnMgU0tJUCA6IGZhaWx1cmVzL2V4cGVj
dGVkL2ltYWdlLmh0bWwiXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICdc
bicuam9pbihtYXAoc3RyLCBleHBfZXJyb3JzKSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGUuZXJyb3JzLCBleHBfZXJyb3JzKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfZXJyb3Jfbm9u
ZmF0YWwoc2VsZik6CisgICAgICAgICAgICB3YXJuaW5ncyA9IFt1IkZBSUxVUkVTIEZPUiAlcyBp
biAlczoiICUgKHNlbGYuX3BvcnQudGVzdF9jb25maWd1cmF0aW9uKCksIHNlbGYuX3BvcnQucGF0
aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
dSJMaW5lOjEgVGVzdCBsYWNrcyBCVUcgbW9kaWZpZXIuIGZhaWx1cmVzL2V4cGVjdGVkL3RleHQu
aHRtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICB1IkxpbmU6MSBVbnJlY29nbml6ZWQgbW9k
aWZpZXIgJ2ZvbycgZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHUiTGluZToyIE1pc3NpbmcgZXhwZWN0YXRpb25zIFNLSVAgOiBmYWlsdXJlcy9l
eHBlY3RlZC9pbWFnZS5odG1sIl0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUp
LCAnXG4nLmpvaW4obWFwKHN0ciwgd2FybmluZ3MpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZS53YXJuaW5ncywgd2FybmluZ3MpCisKICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
c2VsZi5wYXJzZV9leHAoJ1NLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhU
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1UcnVlKQorICAgICAg
ICAgICAgc2VsZi5wYXJzZV9leHAoJ1NLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwg
PSBURVhUJywgaXNfbGludF9tb2RlPVRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KFRydWUsICJQYXJzZUVycm9yIHdhc24ndCByYWlzZWQiKQogICAgICAgICBleGNlcHQgUGFyc2VF
cnJvciwgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZS5mYXRhbCkKLSAgICAgICAg
ICAgIGV4cF9lcnJvcnMgPSBbdSdGQUlMVVJFUyBGT1IgJXMgaW4gJXMnICUgKHNlbGYuX3BvcnQu
dGVzdF9jb25maWd1cmF0aW9uKCksIHNlbGYuX3BvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9u
c19maWxlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1J0xpbmU6MSBUZXN0IGxhY2tz
IEJVRyBtb2RpZmllci4gZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJ10KLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpvaW4obWFwKHN0ciwgZXhwX2Vycm9ycykp
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm9ycywgZXhwX2Vycm9ycykKKyAg
ICAgICAgICAgIHdhcm5pbmdzID0gW3UnRkFJTFVSRVMgRk9SICVzIGluICVzOicgJSAoc2VsZi5f
cG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKSwgc2VsZi5fcG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0
YXRpb25zX2ZpbGUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICB1J0xpbmU6MSBUZXN0IGxh
Y2tzIEJVRyBtb2RpZmllci4gZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJ10KKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpvaW4obWFwKHN0ciwgd2FybmluZ3Mp
KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS53YXJuaW5ncywgd2FybmluZ3MpCiAK
ICAgICBkZWYgdGVzdF9vdmVycmlkZXMoc2VsZik6CiAgICAgICAgIHNlbGYucGFyc2VfZXhwKCJC
VUdfRVhQOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUIiwKQEAgLTIyMywxMiAr
MjIzLDkgQEAgU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwiIiIpCiAgICAgICAg
IHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgSU1BR0UpCiAK
ICAgICBkZWYgdGVzdF9vdmVycmlkZXNfX2R1cGxpY2F0ZShzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAgICAgICAgICAgIkJV
R19FWFA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQiLAotICAgICAgICAgICAg
ICIiIgotQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UK
LUJVR19PVkVSUklERSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IENSQVNICi0iIiIp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2JhZF9leHBlY3RhdGlvbnMoIkJVR19FWFA6IGZhaWx1cmVz
L2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJ
TUFHRVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCVUdfT1ZFUlJJ
REUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBDUkFTSFxuIikKIAogICAgIGRlZiB0
ZXN0X3BpeGVsX3Rlc3RzX2ZsYWcoc2VsZik6CiAgICAgICAgIGRlZiBtYXRjaCh0ZXN0LCByZXN1
bHQsIHBpeGVsX3Rlc3RzX2VuYWJsZWQpOgpAQCAtMjY1LDI2ICsyNjIsMjAgQEAgQlVHX09WRVJS
SURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gQ1JBU0gKIGNsYXNzIEV4cGVjdGF0
aW9uU3ludGF4VGVzdHMoQmFzZSk6CiAgICAgZGVmIHRlc3RfbWlzc2luZ19leHBlY3RhdGlvbihz
ZWxmKToKICAgICAgICAgIyBUaGlzIGlzIG1pc3NpbmcgdGhlIGV4cGVjdGF0aW9uLgotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0JVR19URVNUOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwn
KQorICAgICAgICBzZWxmLmFzc2VydF9iYWRfZXhwZWN0YXRpb25zKCdCVUdfVEVTVDogZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sJykKIAogICAgIGRlZiB0ZXN0X21pc3NpbmdfY29sb24oc2Vs
Zik6CiAgICAgICAgICMgVGhpcyBpcyBtaXNzaW5nIHRoZSBtb2RpZmllcnMgYW5kIHRoZSAnOicK
LSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBU
RVhUJykKKyAgICAgICAgc2VsZi5hc3NlcnRfYmFkX2V4cGVjdGF0aW9ucygnZmFpbHVyZXMvZXhw
ZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcpCiAKLSAgICBkZWYgZGlzYWJsZWRfdGVzdF90b29fbWFu
eV9jb2xvbnMoc2VsZik6Ci0gICAgICAgICMgRklYTUU6IEVuYWJsZSB0aGlzIHRlc3QgYW5kIGZp
eCB0aGUgdW5kZXJseWluZyBidWcuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJy
b3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnQlVHX1RFU1Q6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFBBU1MgOicpCisgICAgZGVmIHRlc3RfdG9v
X21hbnlfY29sb25zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9iYWRfZXhwZWN0YXRpb25z
KCdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gUEFTUyA6JykKIAogICAg
IGRlZiB0ZXN0X3Rvb19tYW55X2VxdWFsc19zaWducyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCA9IElN
QUdFJykKKyAgICAgICAgc2VsZi5hc3NlcnRfYmFkX2V4cGVjdGF0aW9ucygnQlVHX1RFU1Q6IGZh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQgPSBJTUFHRScpCiAKICAgICBkZWYgdGVz
dF91bnJlY29nbml6ZWRfZXhwZWN0YXRpb24oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAnQlVHX1RFU1Q6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFVOS05PV04nKQorICAg
ICAgICBzZWxmLmFzc2VydF9iYWRfZXhwZWN0YXRpb25zKCdCVUdfVEVTVDogZmFpbHVyZXMvZXhw
ZWN0ZWQvdGV4dC5odG1sID0gVU5LTk9XTicpCiAKICAgICBkZWYgdGVzdF9tYWNybyhzZWxmKToK
ICAgICAgICAgZXhwX3N0ciA9ICIiIgpAQCAtMjk2LDM4ICsyODcsMjkgQEAgQlVHX1RFU1QgV0lO
IDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAogCiBjbGFzcyBTZW1hbnRpY1Rl
c3RzKEJhc2UpOgogICAgIGRlZiB0ZXN0X2J1Z19mb3JtYXQoc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCAnQlVHMTIzNCA6IGZhaWx1
cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnKQorICAgICAgICBzZWxmLmFzc2VydF9iYWRf
ZXhwZWN0YXRpb25zKCdCVUcxMjM0IDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVY
VCcpCiAKICAgICBkZWYgdGVzdF9taXNzaW5nX2J1Z2lkKHNlbGYpOgotICAgICAgICAjIFRoaXMg
c2hvdWxkIGxvZyBhIG5vbi1mYXRhbCBlcnJvci4KLSAgICAgICAgc2VsZi5wYXJzZV9leHAoJ1NM
T1cgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJykKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHNlbGYuX2V4cC5oYXNfd2FybmluZ3MoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRf
YmFkX2V4cGVjdGF0aW9ucygnU0xPVyA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRF
WFQnKQogCiAgICAgZGVmIHRlc3Rfc2xvd19hbmRfdGltZW91dChzZWxmKToKICAgICAgICAgIyBB
IHRlc3QgY2Fubm90IGJlIFNMT1cgYW5kIGV4cGVjdGVkIHRvIFRJTUVPVVQuCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAg
J0JVR19URVNUIFNMT1cgOiBmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwgPSBUSU1FT1VU
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfYmFkX2V4cGVjdGF0aW9ucygnQlVHX1RFU1QgU0xPVyA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRtbCA9IFRJTUVPVVQnKQogCiAgICAgZGVmIHRl
c3RfcmViYXNlbGluZShzZWxmKToKICAgICAgICAgIyBDYW4ndCBsaW50IGEgZmlsZSB3LyAnUkVC
QVNFTElORScgaW4gaXQuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNl
bGYucGFyc2VfZXhwLAotICAgICAgICAgICAgJ0JVR19URVNUIFJFQkFTRUxJTkUgOiBmYWlsdXJl
cy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywKLSAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1U
cnVlKQorICAgICAgICBzZWxmLmFzc2VydF9iYWRfZXhwZWN0YXRpb25zKCdCVUdfVEVTVCBSRUJB
U0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcpCiAKICAgICBkZWYg
dGVzdF9kdXBsaWNhdGVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVy
cm9yLCBzZWxmLnBhcnNlX2V4cCwgIiIiCi1CVUdfRVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sID0gVEVYVAotQlVHX0VYUCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IElN
QUdFIiIiKQorICAgICAgICBzZWxmLmFzc2VydF9iYWRfZXhwZWN0YXRpb25zKCJCVUdfRVhQIDog
ZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVFxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJCVUdfRVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1s
ID0gSU1BR0VcbiIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2Vs
Zi5wYXJzZV9leHAsCi0gICAgICAgICAgICBzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSwg
b3ZlcnJpZGVzPSIiIgotQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1s
ID0gVEVYVAotQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1B
R0UiIiIsICkKKyAgICAgICAgc2VsZi5hc3NlcnRfYmFkX2V4cGVjdGF0aW9ucyhzZWxmLmdldF9i
YXNpY19leHBlY3RhdGlvbnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdmVycmlkZXM9KCJCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwg
PSBURVhUXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0VcbiIp
KQogCiAgICAgZGVmIHRlc3RfbWlzc2luZ19maWxlKHNlbGYpOgotICAgICAgICAjIFRoaXMgc2hv
dWxkIGxvZyBhIG5vbi1mYXRhbCBlcnJvci4KLSAgICAgICAgc2VsZi5wYXJzZV9leHAoJ0JVR19U
RVNUIDogbWlzc2luZ19maWxlLmh0bWwgPSBURVhUJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHNlbGYuX2V4cC5oYXNfd2FybmluZ3MoKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYmFkX2V4
cGVjdGF0aW9ucygnQlVHX1RFU1QgOiBtaXNzaW5nX2ZpbGUuaHRtbCA9IFRFWFQnKQogCiAKIGNs
YXNzIFByZWNlZGVuY2VUZXN0cyhCYXNlKToKQEAgLTM1MSwzNyArMzMzLDI2IEBAIEJVR1ggOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4
cCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQogCiAgICAgZGVmIHRlc3Rf
YW1iaWd1b3VzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBz
ZWxmLnBhcnNlX2V4cCwgIiIiCi1CVUdfVEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9
IFBBU1MKLUJVR19URVNUIFdJTiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBGQUlMCi0iIiIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2JhZF9leHBlY3RhdGlvbnMoIkJVR19URVNUIFJFTEVBU0UgOiBwYXNz
ZXMvdGV4dC5odG1sID0gUEFTU1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJCVUdfVEVTVCBXSU4gOiBwYXNzZXMvdGV4dC5odG1sID0gRkFJTFxuIikKIAogICAgIGRl
ZiB0ZXN0X21vcmVfbW9kaWZpZXJzKHNlbGYpOgotICAgICAgICBleHBfc3RyID0gIiIiCi1CVUdf
VEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKLUJVR19URVNUIFdJTiBSRUxF
QVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFQKLSIiIgotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgZXhwX3N0cikKKyAgICAgICAgc2VsZi5h
c3NlcnRfYmFkX2V4cGVjdGF0aW9ucygiQlVHX1RFU1QgUkVMRUFTRSA6IHBhc3Nlcy90ZXh0Lmh0
bWwgPSBQQVNTXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJVR19U
RVNUIFdJTiBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFRcbiIpCiAKICAgICBkZWYg
dGVzdF9vcmRlcl9pbl9maWxlKHNlbGYpOgotICAgICAgICBleHBfc3RyID0gIiIiCi1CVUdfVEVT
VCBXSU4gUkVMRUFTRSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBURVhUCi1CVUdfVEVTVCBSRUxFQVNF
IDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKLSIiIgotICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgZXhwX3N0cikKKyAgICAgICAgc2VsZi5hc3Nl
cnRfYmFkX2V4cGVjdGF0aW9ucygiQlVHX1RFU1QgV0lOIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5o
dG1sID0gVEVYVFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCVUdf
VEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1NcbiIpCiAKICAgICBkZWYgdGVz
dF9tYWNyb19vdmVycmlkZXMoc2VsZik6Ci0gICAgICAgIGV4cF9zdHIgPSAiIiIKLUJVR19URVNU
IFdJTiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTCi1CVUdfVEVTVCBYUCA6IHBhc3Nlcy90ZXh0
Lmh0bWwgPSBURVhUCi0iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwg
c2VsZi5wYXJzZV9leHAsIGV4cF9zdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2JhZF9leHBlY3Rh
dGlvbnMoIkJVR19URVNUIFdJTiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJVR19URVNUIFhQIDogcGFzc2VzL3RleHQu
aHRtbCA9IFRFWFRcbiIpCiAKIAogY2xhc3MgUmViYXNlbGluaW5nVGVzdChCYXNlKToKICAgICAi
IiJUZXN0IHJlYmFzZWxpbmluZy1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5LiIiIgogICAgIGRlZiBh
c3NlcnRSZW1vdmUoc2VsZiwgaW5wdXRfZXhwZWN0YXRpb25zLCB0ZXN0cywgZXhwZWN0ZWRfZXhw
ZWN0YXRpb25zKToKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoaW5wdXRfZXhwZWN0YXRpb25zKQor
ICAgICAgICBzZWxmLnBhcnNlX2V4cChpbnB1dF9leHBlY3RhdGlvbnMsIGlzX2xpbnRfbW9kZT1G
YWxzZSkKICAgICAgICAgYWN0dWFsX2V4cGVjdGF0aW9ucyA9IHNlbGYuX2V4cC5yZW1vdmVfcmVi
YXNlbGluZWRfdGVzdHModGVzdHMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRf
ZXhwZWN0YXRpb25zLCBhY3R1YWxfZXhwZWN0YXRpb25zKQogCkBAIC00MDEsNjMgKzM3Miw2MyBA
QCBjbGFzcyBSZWJhc2VsaW5pbmdUZXN0KEJhc2UpOgogY2xhc3MgVGVzdEV4cGVjdGF0aW9uUGFy
c2VyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3Rva2VuaXplX2JsYW5r
KHNlbGYpOgogICAgICAgICBleHBlY3RhdGlvbiA9IFRlc3RFeHBlY3RhdGlvblBhcnNlci50b2tl
bml6ZSgnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5pc19tYWxmb3Jt
ZWQoKSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfaW52
YWxpZCgpLCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5jb21t
ZW50LCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RhdGlvbi5lcnJv
cnMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RhdGlvbi53YXJuaW5n
cyksIDApCiAKICAgICBkZWYgdGVzdF90b2tlbml6ZV9taXNzaW5nX2NvbG9uKHNlbGYpOgogICAg
ICAgICBleHBlY3RhdGlvbiA9IFRlc3RFeHBlY3RhdGlvblBhcnNlci50b2tlbml6ZSgnUXV4Licp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfbWFsZm9ybWVkKCksIFRy
dWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4cGVjdGF0aW9uLmVycm9ycyksICdb
Ik1pc3NpbmcgYSBcJzpcJyJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlv
bi5pc19pbnZhbGlkKCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4cGVj
dGF0aW9uLndhcm5pbmdzKSwgJ1siTWlzc2luZyBhIFwnOlwnIl0nKQogCiAgICAgZGVmIHRlc3Rf
dG9rZW5pemVfZXh0cmFfY29sb24oc2VsZik6CiAgICAgICAgIGV4cGVjdGF0aW9uID0gVGVzdEV4
cGVjdGF0aW9uUGFyc2VyLnRva2VuaXplKCdGT08gOiA6IGJhcicpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfbWFsZm9ybWVkKCksIFRydWUpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyKGV4cGVjdGF0aW9uLmVycm9ycyksICdbIkV4dHJhbmVvdXMgXCc6XCci
XScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfaW52YWxpZCgpLCBU
cnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi53YXJuaW5ncyks
ICdbIkV4dHJhbmVvdXMgXCc6XCciXScpCiAKICAgICBkZWYgdGVzdF90b2tlbml6ZV9lbXB0eV9j
b21tZW50KHNlbGYpOgogICAgICAgICBleHBlY3RhdGlvbiA9IFRlc3RFeHBlY3RhdGlvblBhcnNl
ci50b2tlbml6ZSgnLy8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmlz
X21hbGZvcm1lZCgpLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlv
bi5pc19pbnZhbGlkKCksIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0
aW9uLmNvbW1lbnQsICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RhdGlv
bi5lcnJvcnMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RhdGlvbi53
YXJuaW5ncyksIDApCiAKICAgICBkZWYgdGVzdF90b2tlbml6ZV9jb21tZW50KHNlbGYpOgogICAg
ICAgICBleHBlY3RhdGlvbiA9IFRlc3RFeHBlY3RhdGlvblBhcnNlci50b2tlbml6ZSgnLy9RdXgu
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5pc19tYWxmb3JtZWQoKSwg
RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfaW52YWxpZCgp
LCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5jb21tZW50LCAn
UXV4LicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGF0aW9uLmVycm9ycyks
IDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGF0aW9uLndhcm5pbmdzKSwg
MCkKIAogICAgIGRlZiB0ZXN0X3Rva2VuaXplX21pc3NpbmdfZXF1YWwoc2VsZik6CiAgICAgICAg
IGV4cGVjdGF0aW9uID0gVGVzdEV4cGVjdGF0aW9uUGFyc2VyLnRva2VuaXplKCdGT08gOiBiYXIn
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmlzX21hbGZvcm1lZCgpLCBU
cnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi5lcnJvcnMpLCAi
WydNaXNzaW5nIGV4cGVjdGF0aW9uc1wnXSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhw
ZWN0YXRpb24uaXNfaW52YWxpZCgpLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cihleHBlY3RhdGlvbi53YXJuaW5ncyksICJbJ01pc3NpbmcgZXhwZWN0YXRpb25zXCddIikKIAog
ICAgIGRlZiB0ZXN0X3Rva2VuaXplX2V4dHJhX2VxdWFsKHNlbGYpOgogICAgICAgICBleHBlY3Rh
dGlvbiA9IFRlc3RFeHBlY3RhdGlvblBhcnNlci50b2tlbml6ZSgnRk9PIDogYmFyID0gQkFaID0g
UXV4LicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfbWFsZm9ybWVk
KCksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4cGVjdGF0aW9uLmVycm9y
cyksICdbIkV4dHJhbmVvdXMgXCc9XCciXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhw
ZWN0YXRpb24uaXNfaW52YWxpZCgpLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cihleHBlY3RhdGlvbi53YXJuaW5ncyksICdbIkV4dHJhbmVvdXMgXCc9XCciXScpCiAKICAgICBk
ZWYgdGVzdF90b2tlbml6ZV92YWxpZChzZWxmKToKICAgICAgICAgZXhwZWN0YXRpb24gPSBUZXN0
RXhwZWN0YXRpb25QYXJzZXIudG9rZW5pemUoJ0ZPTyA6IGJhciA9IEJBWicpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfbWFsZm9ybWVkKCksIEZhbHNlKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmlzX2ludmFsaWQoKSwgRmFsc2UpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uY29tbWVudCwgTm9uZSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0YXRpb24uZXJyb3JzKSwgMCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0YXRpb24ud2FybmluZ3MpLCAwKQogCiAgICAgZGVmIHRl
c3RfdG9rZW5pemVfdmFsaWRfd2l0aF9jb21tZW50KHNlbGYpOgogICAgICAgICBleHBlY3RhdGlv
biA9IFRlc3RFeHBlY3RhdGlvblBhcnNlci50b2tlbml6ZSgnRk9PIDogYmFyID0gQkFaIC8vUXV4
LicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfbWFsZm9ybWVkKCks
IEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmlzX2ludmFsaWQo
KSwgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uY29tbWVudCwg
J1F1eC4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi5tb2RpZmll
cnMpLCAnW1wnZm9vXCddJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhwZWN0YXRp
b24uZXhwZWN0YXRpb25zKSwgJ1tcJ2JhelwnXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGV4cGVjdGF0aW9uLmVycm9ycyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KGV4cGVjdGF0aW9uLndhcm5pbmdzKSwgMCkKIAogICAgIGRlZiB0ZXN0X3Rva2VuaXplX3ZhbGlk
X3dpdGhfbXVsdGlwbGVfbW9kaWZpZXJzKHNlbGYpOgogICAgICAgICBleHBlY3RhdGlvbiA9IFRl
c3RFeHBlY3RhdGlvblBhcnNlci50b2tlbml6ZSgnRk9PMSBGT08yIDogYmFyID0gQkFaIC8vUXV4
LicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfbWFsZm9ybWVkKCks
IEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmlzX2ludmFsaWQo
KSwgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uY29tbWVudCwg
J1F1eC4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi5tb2RpZmll
cnMpLCAnW1wnZm9vMVwnLCBcJ2ZvbzJcJ10nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cihleHBlY3RhdGlvbi5leHBlY3RhdGlvbnMpLCAnW1wnYmF6XCddJykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4oZXhwZWN0YXRpb24uZXJyb3JzKSwgMCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZXhwZWN0YXRpb24ud2FybmluZ3MpLCAwKQogCiAgICAgZGVmIHRlc3RfcGFy
c2VfZW1wdHlfc3RyaW5nKHNlbGYpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQpAQCAtNTA4
LDcgKzQ3OSw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXJUZXN0cyh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplci50b19zdHJp
bmcoZXhwZWN0YXRpb24pLCAnRk9PIDogYmFyID0gQkFaMSBCQVoyIC8vUXV4LicpCiAgICAgICAg
IGV4cGVjdGF0aW9uLm1vZGlmaWVycyA9IFsnZm9vMScsICdmb08yJ10KICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZXJpYWxpemVyLnRvX3N0cmluZyhleHBlY3RhdGlvbiksICdGT08xIEZPTzIg
OiBiYXIgPSBCQVoxIEJBWjIgLy9RdXguJykKLSAgICAgICAgZXhwZWN0YXRpb24uZXJyb3JzLmFw
cGVuZCgnT2ggdGhlIGhvcnJvci4nKQorICAgICAgICBleHBlY3RhdGlvbi53YXJuaW5ncy5hcHBl
bmQoJ09oIHRoZSBob3Jyb3IuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemVy
LnRvX3N0cmluZyhleHBlY3RhdGlvbiksICcnKQogICAgICAgICBleHBlY3RhdGlvbi5vcmlnaW5h
bF9zdHJpbmcgPSAnWWVzIGl0IGlzIScKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxp
emVyLnRvX3N0cmluZyhleHBlY3RhdGlvbiksICdZZXMgaXQgaXMhJykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25z
LnB5CmluZGV4IDlkMTk0MWQ3YWVjNGIzNWQzNzBkMjM1MTIzZjY3NzQ1MTRjZDk1ZDcuLjc1Y2Q0
YjRmODg5MDNiYjU1YWNjNWQ0MDUzMTdlYWM1NWM1YzRhZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5w
eQpAQCAtMTAyLDExICsxMDIsOSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zQ2hlY2tlcihvYmpl
Y3QpOgogICAgICAgICAgICAgZXJyID0gZXJyb3IKIAogICAgICAgICBpZiBlcnI6Ci0gICAgICAg
ICAgICBsZXZlbCA9IDIKLSAgICAgICAgICAgIGlmIGVyci5mYXRhbDoKLSAgICAgICAgICAgICAg
ICBsZXZlbCA9IDUKLSAgICAgICAgICAgIGZvciBlcnJvciBpbiBlcnIuZXJyb3JzOgotICAgICAg
ICAgICAgICAgIG1hdGNoZWQgPSBzZWxmLl9vdXRwdXRfcmVnZXgubWF0Y2goZXJyb3IpCisgICAg
ICAgICAgICBsZXZlbCA9IDUKKyAgICAgICAgICAgIGZvciB3YXJuaW5nIGluIGVyci53YXJuaW5n
czoKKyAgICAgICAgICAgICAgICBtYXRjaGVkID0gc2VsZi5fb3V0cHV0X3JlZ2V4Lm1hdGNoKHdh
cm5pbmcpCiAgICAgICAgICAgICAgICAgaWYgbWF0Y2hlZDoKICAgICAgICAgICAgICAgICAgICAg
bGluZW5vLCBtZXNzYWdlID0gbWF0Y2hlZC5ncm91cCgnbGluZScsICdtZXNzYWdlJykKICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGludChsaW5lbm8pLCAndGVz
dC9leHBlY3RhdGlvbnMnLCBsZXZlbCwgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25z
X3VuaXR0ZXN0LnB5CmluZGV4IDkyZDFmZTYyOGEzZTBmMTM4MmQ1YzZhYjU0ZWNkMTkzNTNkNzIz
NDUuLmU1M2EwNDk2MWRhMTIyNTdmNzkyZWM4NzNhMDVkM2ZkNjg1MTM5ZTggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNf
dW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90
ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpAQCAtMTIwLDI2ICsxMjAsMjYgQEAgY2xhc3Mg
VGVzdEV4cGVjdGF0aW9uc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0
ZXN0X3ZhbGlkX21vZGlmaWVycyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGlu
dCgKLSAgICAgICAgICAgIFsiSU5WQUxJRC1NT0RJRklFUiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQ
QVNTIl0sCisgICAgICAgICAgICBbIkJVR1dLMSBJTlZBTElELU1PRElGSUVSIDogcGFzc2VzL3Rl
eHQuaHRtbCA9IFBBU1MiXSwKICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgbW9kaWZpZXIgJ2lu
dmFsaWQtbW9kaWZpZXInICIKICAgICAgICAgICAgICJwYXNzZXMvdGV4dC5odG1sICBbdGVzdC9l
eHBlY3RhdGlvbnNdIFs1XSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCiAgICAg
ICAgICAgICBbIlNLSVAgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUyJdLAogICAgICAgICAgICAg
IlRlc3QgbGFja3MgQlVHIG1vZGlmaWVyLiAiCi0gICAgICAgICAgICAicGFzc2VzL3RleHQuaHRt
bCAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbMl0iKQorICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0
bWwgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikKIAogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9u
X2Vycm9ycyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAg
ICAgIFsibWlzc2luZyBleHBlY3RhdGlvbnMiXSwKICAgICAgICAgICAgICJNaXNzaW5nIGEgJzon
IG1pc3NpbmcgZXhwZWN0YXRpb25zICBbdGVzdC9leHBlY3RhdGlvbnNdIFs1XSIpCiAgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAgICAgICBbIlNMT1cgOiBwYXNzZXMvdGV4
dC5odG1sID0gVElNRU9VVCJdLAorICAgICAgICAgICAgWyJCVUdXSzEgU0xPVyA6IHBhc3Nlcy90
ZXh0Lmh0bWwgPSBUSU1FT1VUIl0sCiAgICAgICAgICAgICAiQSB0ZXN0IGNhbiBub3QgYmUgYm90
aCBTTE9XIGFuZCBUSU1FT1VULiAiCiAgICAgICAgICAgICAiSWYgaXQgdGltZXMgb3V0IGluZGVm
aW5pdGVseSwgdGhlbiBpdCBzaG91bGQgYmUganVzdCBUSU1FT1VULiAiCiAgICAgICAgICAgICAi
cGFzc2VzL3RleHQuaHRtbCAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV0iKQogICAgICAgICBzZWxm
LmFzc2VydF9saW5lc19saW50KAogICAgICAgICAgICAgWyJCVUdXSzEgOiBkb2VzL25vdC9leGlz
dC5odG1sID0gRkFJTCJdLAotICAgICAgICAgICAgIlBhdGggZG9lcyBub3QgZXhpc3QuIGRvZXMv
bm90L2V4aXN0Lmh0bWwgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzJdIikKKyAgICAgICAgICAgICJQ
YXRoIGRvZXMgbm90IGV4aXN0LiBkb2VzL25vdC9leGlzdC5odG1sICBbdGVzdC9leHBlY3RhdGlv
bnNdIFs1XSIpCiAKICAgICBkZWYgdGVzdF9wYXJzZV9leHBlY3RhdGlvbnMoc2VsZik6CiAgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125178</attachid>
            <date>2012-02-02 13:37:21 -0800</date>
            <delta_ts>2012-02-10 10:53:51 -0800</delta_ts>
            <desc>rebase to head.</desc>
            <filename>bug-73603-20120202133719.patch</filename>
            <type>text/plain</type>
            <size>30700</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NTc5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTBkNjdkYmE2ZTI4NjEwYzlhMjRlYmFiZDdjZWZhOWIz
OGExZGQyOS4uOTdjOWM5NmFjOTYzODZkODc1NjliYzcyMDA5YzAyNmEzNDQ1Yjk1ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2
IEBACisyMDEyLTAyLTAyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgbnJ3dCBzaG91bGRuJ3QgYmxvdyB1cCB3aGVuIHRoZXJlIGFyZSBlcnJvcnMgaW4gdGVz
dF9leHBlY3RhdGlvbnMudHh0CisgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczNjAzCisKKyAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgIFRoaXMgY2hhbmdlIHJlbW92ZXMgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gJ2Vycm9y
cycgYW5kICd3YXJuaW5ncycKKyAgICAgICBpbiB0aGUgdGVzdCBleHBlY3RhdGlvbnMgcGFyc2Vy
LiBOb3csIGFueSBwcm9ibGVtIGlzIGEKKyAgICAgICAnd2FybmluZycsIGFuZCBpZiB3ZSBhcmUg
bGludGluZyB0aGUgZmlsZSwgd2FybmluZ3MgYmVjb21lIGZhdGFsIChlcnJvcnMpLgorCisgICAg
ICAgIFRoaXMgd2lsbCBhbGxvdyBhIG5vcm1hbCBydW4td2Via2l0LXRlc3RzIHJ1biB0byBwcm9j
ZWVkIGV2ZW4gaWYKKyAgICAgICAgdGhlcmUgYXJlIGJhZCBsaW5lcy4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weToK
KyAgICAgICAgKFBhcnNlRXJyb3IuX19pbml0X18pOgorICAgICAgICAoUGFyc2VFcnJvci5fX3N0
cl9fKToKKyAgICAgICAgKFBhcnNlRXJyb3IuX19yZXByX18pOgorICAgICAgICAoVGVzdEV4cGVj
dGF0aW9uU2VyaWFsaXplci50b19zdHJpbmcpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFy
c2VyLl9wYXJzZV9tb2RpZmllcnMpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyLl9w
YXJzZV9leHBlY3RhdGlvbnMpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyLl9jaGVj
a19tb2RpZmllcnNfYWdhaW5zdF9leHBlY3RhdGlvbnMpOgorICAgICAgICAoVGVzdEV4cGVjdGF0
aW9uUGFyc2VyLl90b2tlbml6ZSk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25MaW5lLl9faW5p
dF9fKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbkxpbmUuaXNfaW52YWxpZCk6CisgICAgICAg
IChUZXN0RXhwZWN0YXRpb25zTW9kZWwuYWRkX2V4cGVjdGF0aW9uX2xpbmUpOgorICAgICAgICAo
VGVzdEV4cGVjdGF0aW9uc01vZGVsLl9hbHJlYWR5X3NlZW5fYmV0dGVyX21hdGNoKToKKyAgICAg
ICAgKFRlc3RFeHBlY3RhdGlvbnMuX19pbml0X18pOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9u
cy5fcmVwb3J0X3dhcm5pbmdzKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbnMucmVtb3ZlX3Jl
YmFzZWxpbmVkX3Rlc3RzLndpdGhvdXRfcmViYXNlbGluZV9tb2RpZmllcik6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAoYXNzZXJ0X2JhZF9leHBlY3RhdGlvbnMpOgorICAgICAgICAo
dGVzdF9wYXJzZV93YXJuaW5nKToKKyAgICAgICAgKHRlc3Rfb3ZlcnJpZGVzX19kdXBsaWNhdGUp
OgorICAgICAgICAoRXhwZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X21pc3NpbmdfZXhwZWN0YXRp
b24pOgorICAgICAgICAoRXhwZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X21pc3NpbmdfY29sb24p
OgorICAgICAgICAoRXhwZWN0YXRpb25TeW50YXhUZXN0cy50ZXN0X3Rvb19tYW55X2NvbG9ucyk6
CisgICAgICAgIChFeHBlY3RhdGlvblN5bnRheFRlc3RzLnRlc3RfdG9vX21hbnlfZXF1YWxzX3Np
Z25zKToKKyAgICAgICAgKEV4cGVjdGF0aW9uU3ludGF4VGVzdHMudGVzdF91bnJlY29nbml6ZWRf
ZXhwZWN0YXRpb24pOgorICAgICAgICAoU2VtYW50aWNUZXN0cy50ZXN0X2J1Z19mb3JtYXQpOgor
ICAgICAgICAoU2VtYW50aWNUZXN0cy50ZXN0X2JhZF9idWdpZCk6CisgICAgICAgIChTZW1hbnRp
Y1Rlc3RzLnRlc3Rfc2xvd19hbmRfdGltZW91dCk6CisgICAgICAgICh0ZXN0X2FtYmlndW91cyk6
CisgICAgICAgICh0ZXN0X21vcmVfbW9kaWZpZXJzKToKKyAgICAgICAgKHRlc3Rfb3JkZXJfaW5f
ZmlsZSk6CisgICAgICAgICh0ZXN0X21hY3JvX292ZXJyaWRlcyk6CisgICAgICAgIChSZWJhc2Vs
aW5pbmdUZXN0LmFzc2VydFJlbW92ZSk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25QYXJzZXJU
ZXN0cy50ZXN0X3Rva2VuaXplX2JsYW5rKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblBhcnNl
clRlc3RzLnRlc3RfdG9rZW5pemVfbWlzc2luZ19jb2xvbik6CisgICAgICAgIChUZXN0RXhwZWN0
YXRpb25QYXJzZXJUZXN0cy50ZXN0X3Rva2VuaXplX2V4dHJhX2NvbG9uKToKKyAgICAgICAgKFRl
c3RFeHBlY3RhdGlvblBhcnNlclRlc3RzLnRlc3RfdG9rZW5pemVfZW1wdHlfY29tbWVudCk6Cisg
ICAgICAgIChUZXN0RXhwZWN0YXRpb25QYXJzZXJUZXN0cy50ZXN0X3Rva2VuaXplX2NvbW1lbnQp
OgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyVGVzdHMudGVzdF90b2tlbml6ZV9taXNz
aW5nX2VxdWFsKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblBhcnNlclRlc3RzLnRlc3RfdG9r
ZW5pemVfZXh0cmFfZXF1YWwpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9uUGFyc2VyVGVzdHMu
dGVzdF90b2tlbml6ZV92YWxpZCk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25QYXJzZXJUZXN0
cy50ZXN0X3Rva2VuaXplX3ZhbGlkX3dpdGhfY29tbWVudCk6CisgICAgICAgIChUZXN0RXhwZWN0
YXRpb25QYXJzZXJUZXN0cy50ZXN0X3Rva2VuaXplX3ZhbGlkX3dpdGhfbXVsdGlwbGVfbW9kaWZp
ZXJzKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXJUZXN0cy50ZXN0X3VucGFy
c2VkX3RvX3N0cmluZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKGxpbnQpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHk6CisgICAgICAgIChU
ZXN0RXhwZWN0YXRpb25zQ2hlY2tlci5jaGVja190ZXN0X2V4cGVjdGF0aW9ucyk6CisKIDIwMTIt
MDItMDIgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzY2NApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0
YXRpb25zLnB5CmluZGV4IDAxMGRkZDg0ODcyMTU0Mjg2YTRlZTZjM2M3NmFmNTBiZmNiMTAyNjIu
LmFlMTVlMjBhZTU0ZjZkOGJiYWNmNTYwY2UzNTZmMjMxZDkyODg2YzYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9u
cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVz
dF9leHBlY3RhdGlvbnMucHkKQEAgLTEwOCwxNSArMTA4LDE0IEBAIGRlZiBzdHJpcF9jb21tZW50
cyhsaW5lKToKIAogCiBjbGFzcyBQYXJzZUVycm9yKEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIGZhdGFsLCBlcnJvcnMpOgotICAgICAgICBzZWxmLmZhdGFsID0gZmF0YWwKLSAg
ICAgICAgc2VsZi5lcnJvcnMgPSBlcnJvcnMKKyAgICBkZWYgX19pbml0X18oc2VsZiwgd2Fybmlu
Z3MpOgorICAgICAgICBzZWxmLndhcm5pbmdzID0gd2FybmluZ3MKIAogICAgIGRlZiBfX3N0cl9f
KHNlbGYpOgotICAgICAgICByZXR1cm4gJ1xuJy5qb2luKG1hcChzdHIsIHNlbGYuZXJyb3JzKSkK
KyAgICAgICAgcmV0dXJuICdcbicuam9pbihtYXAoc3RyLCBzZWxmLndhcm5pbmdzKSkKIAogICAg
IGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdQYXJzZUVycm9yKGZhdGFsPSVz
LCBlcnJvcnM9JXMpJyAlIChzZWxmLmZhdGFsLCBzZWxmLmVycm9ycykKKyAgICAgICAgcmV0dXJu
ICdQYXJzZUVycm9yKHdhcm5pbmdzPSVzKScgJSBzZWxmLndhcm5pbmdzCiAKIAogY2xhc3MgVGVz
dEV4cGVjdGF0aW9uU2VyaWFsaXplcihvYmplY3QpOgpAQCAtMTI2LDcgKzEyNSw3IEBAIGNsYXNz
IFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fcGFyc2Vk
X2V4cGVjdGF0aW9uX3RvX3N0cmluZyA9IGRpY3QoW1twYXJzZWRfZXhwZWN0YXRpb24sIGV4cGVj
dGF0aW9uX3N0cmluZ10gZm9yIGV4cGVjdGF0aW9uX3N0cmluZywgcGFyc2VkX2V4cGVjdGF0aW9u
IGluIFRlc3RFeHBlY3RhdGlvbnMuRVhQRUNUQVRJT05TLml0ZW1zKCldKQogCiAgICAgZGVmIHRv
X3N0cmluZyhzZWxmLCBleHBlY3RhdGlvbl9saW5lKToKLSAgICAgICAgaWYgZXhwZWN0YXRpb25f
bGluZS5pc19tYWxmb3JtZWQoKToKKyAgICAgICAgaWYgZXhwZWN0YXRpb25fbGluZS5pc19pbnZh
bGlkKCk6CiAgICAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb25fbGluZS5vcmlnaW5hbF9zdHJp
bmcgb3IgJycKIAogICAgICAgICBpZiBleHBlY3RhdGlvbl9saW5lLm5hbWUgaXMgTm9uZToKQEAg
LTI0OCw3ICsyNDcsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25QYXJzZXIob2JqZWN0KToKICAg
ICAgICAgICAgIGVsaWYgbW9kaWZpZXIuc3RhcnRzd2l0aChzZWxmLkJVR19NT0RJRklFUl9QUkVG
SVgpOgogICAgICAgICAgICAgICAgIGhhc19idWdpZCA9IFRydWUKICAgICAgICAgICAgICAgICBp
ZiByZS5tYXRjaChzZWxmLkJVR19NT0RJRklFUl9SRUdFWCwgbW9kaWZpZXIpOgotICAgICAgICAg
ICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLmVycm9ycy5hcHBlbmQoJ0JVR1xkKyBpcyBub3Qg
YWxsb3dlZCwgbXVzdCBiZSBvbmUgb2YgQlVHQ1JcZCssIEJVR1dLXGQrLCBCVUdWOF9cZCssIG9y
IGEgbm9uLW51bWVyaWMgYnVnIGlkZW50aWZpZXIuJykKKyAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0YXRpb25fbGluZS53YXJuaW5ncy5hcHBlbmQoJ0JVR1xkKyBpcyBub3QgYWxsb3dlZCwgbXVz
dCBiZSBvbmUgb2YgQlVHQ1JcZCssIEJVR1dLXGQrLCBCVUdWOF9cZCssIG9yIGEgbm9uLW51bWVy
aWMgYnVnIGlkZW50aWZpZXIuJykKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAg
ICAgICAgICBleHBlY3RhdGlvbl9saW5lLnBhcnNlZF9idWdfbW9kaWZpZXJzLmFwcGVuZChtb2Rp
ZmllcikKICAgICAgICAgICAgIGVsc2U6CkBAIC0yNTgsMjMgKzI1NywyMyBAQCBjbGFzcyBUZXN0
RXhwZWN0YXRpb25QYXJzZXIob2JqZWN0KToKICAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUu
d2FybmluZ3MuYXBwZW5kKCdUZXN0IGxhY2tzIEJVRyBtb2RpZmllci4nKQogCiAgICAgICAgIGlm
IHNlbGYuX2FsbG93X3JlYmFzZWxpbmVfbW9kaWZpZXIgYW5kIHNlbGYuUkVCQVNFTElORV9NT0RJ
RklFUiBpbiBleHBlY3RhdGlvbl9saW5lLm1vZGlmaWVyczoKLSAgICAgICAgICAgIGV4cGVjdGF0
aW9uX2xpbmUuZXJyb3JzLmFwcGVuZCgnUkVCQVNFTElORSBzaG91bGQgb25seSBiZSB1c2VkIGZv
ciBydW5uaW5nIHJlYmFzZWxpbmUucHkuIENhbm5vdCBiZSBjaGVja2VkIGluLicpCisgICAgICAg
ICAgICBleHBlY3RhdGlvbl9saW5lLndhcm5pbmdzLmFwcGVuZCgnUkVCQVNFTElORSBzaG91bGQg
b25seSBiZSB1c2VkIGZvciBydW5uaW5nIHJlYmFzZWxpbmUucHkuIENhbm5vdCBiZSBjaGVja2Vk
IGluLicpCiAKLSAgICAgICAgZXhwZWN0YXRpb25fbGluZS5tYXRjaGluZ19jb25maWd1cmF0aW9u
cyA9IHNlbGYuX3Rlc3RfY29uZmlndXJhdGlvbl9jb252ZXJ0ZXIudG9fY29uZmlnX3NldChwYXJz
ZWRfc3BlY2lmaWVycywgZXhwZWN0YXRpb25fbGluZS5lcnJvcnMpCisgICAgICAgIGV4cGVjdGF0
aW9uX2xpbmUubWF0Y2hpbmdfY29uZmlndXJhdGlvbnMgPSBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRp
b25fY29udmVydGVyLnRvX2NvbmZpZ19zZXQocGFyc2VkX3NwZWNpZmllcnMsIGV4cGVjdGF0aW9u
X2xpbmUud2FybmluZ3MpCiAKICAgICBkZWYgX3BhcnNlX2V4cGVjdGF0aW9ucyhzZWxmLCBleHBl
Y3RhdGlvbl9saW5lKToKICAgICAgICAgcmVzdWx0ID0gc2V0KCkKICAgICAgICAgZm9yIHBhcnQg
aW4gZXhwZWN0YXRpb25fbGluZS5leHBlY3RhdGlvbnM6CiAgICAgICAgICAgICBleHBlY3RhdGlv
biA9IFRlc3RFeHBlY3RhdGlvbnMuZXhwZWN0YXRpb25fZnJvbV9zdHJpbmcocGFydCkKICAgICAg
ICAgICAgIGlmIGV4cGVjdGF0aW9uIGlzIE5vbmU6ICAjIENhcmVmdWwsIFBBU1MgaXMgY3VycmVu
dGx5IDAuCi0gICAgICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5lcnJvcnMuYXBwZW5kKCdV
bnN1cHBvcnRlZCBleHBlY3RhdGlvbjogJXMnICUgcGFydCkKKyAgICAgICAgICAgICAgICBleHBl
Y3RhdGlvbl9saW5lLndhcm5pbmdzLmFwcGVuZCgnVW5zdXBwb3J0ZWQgZXhwZWN0YXRpb246ICVz
JyAlIHBhcnQpCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHJlc3VsdC5h
ZGQoZXhwZWN0YXRpb24pCiAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUucGFyc2VkX2V4cGVjdGF0
aW9ucyA9IHJlc3VsdAogCiAgICAgZGVmIF9jaGVja19tb2RpZmllcnNfYWdhaW5zdF9leHBlY3Rh
dGlvbnMoc2VsZiwgZXhwZWN0YXRpb25fbGluZSk6CiAgICAgICAgIGlmIHNlbGYuU0xPV19NT0RJ
RklFUiBpbiBleHBlY3RhdGlvbl9saW5lLm1vZGlmaWVycyBhbmQgc2VsZi5USU1FT1VUX0VYUEVD
VEFUSU9OIGluIGV4cGVjdGF0aW9uX2xpbmUuZXhwZWN0YXRpb25zOgotICAgICAgICAgICAgZXhw
ZWN0YXRpb25fbGluZS5lcnJvcnMuYXBwZW5kKCdBIHRlc3QgY2FuIG5vdCBiZSBib3RoIFNMT1cg
YW5kIFRJTUVPVVQuIElmIGl0IHRpbWVzIG91dCBpbmRlZmluaXRlbHksIHRoZW4gaXQgc2hvdWxk
IGJlIGp1c3QgVElNRU9VVC4nKQorICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS53YXJuaW5n
cy5hcHBlbmQoJ0EgdGVzdCBjYW4gbm90IGJlIGJvdGggU0xPVyBhbmQgVElNRU9VVC4gSWYgaXQg
dGltZXMgb3V0IGluZGVmaW5pdGVseSwgdGhlbiBpdCBzaG91bGQgYmUganVzdCBUSU1FT1VULicp
CiAKICAgICBkZWYgX2NoZWNrX3BhdGhfZG9lc19ub3RfZXhpc3Qoc2VsZiwgZXhwZWN0YXRpb25f
bGluZSk6CiAgICAgICAgICMgV2ViS2l0J3Mgd2F5IG9mIHNraXBwaW5nIHRlc3RzIGlzIHRvIGFk
ZCBhIC1kaXNhYmxlZCBzdWZmaXguCkBAIC0zMzgsMTMgKzMzNywxMyBAQCBjbGFzcyBUZXN0RXhw
ZWN0YXRpb25QYXJzZXIob2JqZWN0KToKIAogICAgICAgICBwYXJ0cyA9IHJlbWFpbmluZ19zdHJp
bmcuc3BsaXQoJzonKQogICAgICAgICBpZiBsZW4ocGFydHMpICE9IDI6Ci0gICAgICAgICAgICBl
eHBlY3RhdGlvbl9saW5lLmVycm9ycy5hcHBlbmQoIk1pc3NpbmcgYSAnOiciIGlmIGxlbihwYXJ0
cykgPCAyIGVsc2UgIkV4dHJhbmVvdXMgJzonIikKKyAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xp
bmUud2FybmluZ3MuYXBwZW5kKCJNaXNzaW5nIGEgJzonIiBpZiBsZW4ocGFydHMpIDwgMiBlbHNl
ICJFeHRyYW5lb3VzICc6JyIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0ZXN0X2FuZF9l
eHBlY3RhdGlvbiA9IHBhcnRzWzFdLnNwbGl0KCc9JykKICAgICAgICAgICAgIGlmIGxlbih0ZXN0
X2FuZF9leHBlY3RhdGlvbikgIT0gMjoKLSAgICAgICAgICAgICAgICBleHBlY3RhdGlvbl9saW5l
LmVycm9ycy5hcHBlbmQoIk1pc3NpbmcgZXhwZWN0YXRpb25zIiBpZiBsZW4odGVzdF9hbmRfZXhw
ZWN0YXRpb24pIDwgMiBlbHNlICJFeHRyYW5lb3VzICc9JyIpCisgICAgICAgICAgICAgICAgZXhw
ZWN0YXRpb25fbGluZS53YXJuaW5ncy5hcHBlbmQoIk1pc3NpbmcgZXhwZWN0YXRpb25zIiBpZiBs
ZW4odGVzdF9hbmRfZXhwZWN0YXRpb24pIDwgMiBlbHNlICJFeHRyYW5lb3VzICc9JyIpCiAKLSAg
ICAgICAgaWYgbm90IGV4cGVjdGF0aW9uX2xpbmUuaXNfbWFsZm9ybWVkKCk6CisgICAgICAgIGlm
IG5vdCBleHBlY3RhdGlvbl9saW5lLmlzX2ludmFsaWQoKToKICAgICAgICAgICAgIGV4cGVjdGF0
aW9uX2xpbmUubW9kaWZpZXJzID0gY2xzLl9zcGxpdF9zcGFjZV9zZXBhcmF0ZWQocGFydHNbMF0p
CiAgICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLm5hbWUgPSB0ZXN0X2FuZF9leHBlY3RhdGlv
blswXS5zdHJpcCgpCiAgICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLmV4cGVjdGF0aW9ucyA9
IGNscy5fc3BsaXRfc3BhY2Vfc2VwYXJhdGVkKHRlc3RfYW5kX2V4cGVjdGF0aW9uWzFdKQpAQCAt
Mzg1LDE0ICszODQsMTAgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uTGluZToKICAgICAgICAgc2Vs
Zi5wYXJzZWRfZXhwZWN0YXRpb25zID0gc2V0KCkKICAgICAgICAgc2VsZi5jb21tZW50ID0gTm9u
ZQogICAgICAgICBzZWxmLm1hdGNoaW5nX3Rlc3RzID0gW10KLSAgICAgICAgc2VsZi5lcnJvcnMg
PSBbXQogICAgICAgICBzZWxmLndhcm5pbmdzID0gW10KIAotICAgIGRlZiBpc19tYWxmb3JtZWQo
c2VsZik6Ci0gICAgICAgIHJldHVybiBsZW4oc2VsZi5lcnJvcnMpID4gMAotCiAgICAgZGVmIGlz
X2ludmFsaWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmlzX21hbGZvcm1lZCgpIG9yIGxl
bihzZWxmLndhcm5pbmdzKSA+IDAKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLndhcm5pbmdzKSA+
IDAKIAogICAgIGRlZiBpc19mbGFreShzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLnBh
cnNlZF9leHBlY3RhdGlvbnMpID4gMQpAQCAtNDc2LDcgKzQ3MSw3IEBAIGNsYXNzIFRlc3RFeHBl
Y3RhdGlvbnNNb2RlbChvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5fdGVzdF90b19leHBl
Y3RhdGlvbnNbdGVzdF0KIAogICAgIGRlZiBhZGRfZXhwZWN0YXRpb25fbGluZShzZWxmLCBleHBl
Y3RhdGlvbl9saW5lLCBvdmVycmlkZXNfYWxsb3dlZCk6Ci0gICAgICAgICIiIlJldHVybnMgYSBs
aXN0IG9mIGVycm9ycywgZW5jb3VudGVyZWQgd2hpbGUgbWF0Y2hpbmcgbW9kaWZpZXJzLiIiIgor
ICAgICAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiB3YXJuaW5ncyBlbmNvdW50ZXJlZCB3aGlsZSBt
YXRjaGluZyBtb2RpZmllcnMuIiIiCiAKICAgICAgICAgaWYgZXhwZWN0YXRpb25fbGluZS5pc19p
bnZhbGlkKCk6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTU5MiwyMCArNTg3LDIwIEBAIGNsYXNz
IFRlc3RFeHBlY3RhdGlvbnNNb2RlbChvYmplY3QpOgogICAgICAgICAjIHRvIGJlIHdhcm5pbmdz
IGFuZCByZXR1cm4gRmFsc2UiLgogCiAgICAgICAgIGlmIHByZXZfZXhwZWN0YXRpb25fbGluZS5t
YXRjaGluZ19jb25maWd1cmF0aW9ucyA9PSBleHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX2NvbmZp
Z3VyYXRpb25zOgotICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5lcnJvcnMuYXBwZW5kKCdE
dXBsaWNhdGUgb3IgYW1iaWd1b3VzICVzLicgJSBleHBlY3RhdGlvbl9zb3VyY2UpCisgICAgICAg
ICAgICBleHBlY3RhdGlvbl9saW5lLndhcm5pbmdzLmFwcGVuZCgnRHVwbGljYXRlIG9yIGFtYmln
dW91cyAlcy4nICUgZXhwZWN0YXRpb25fc291cmNlKQogICAgICAgICAgICAgcmV0dXJuIFRydWUK
IAogICAgICAgICBpZiBwcmV2X2V4cGVjdGF0aW9uX2xpbmUubWF0Y2hpbmdfY29uZmlndXJhdGlv
bnMgPj0gZXhwZWN0YXRpb25fbGluZS5tYXRjaGluZ19jb25maWd1cmF0aW9uczoKLSAgICAgICAg
ICAgIGV4cGVjdGF0aW9uX2xpbmUuZXJyb3JzLmFwcGVuZCgnTW9yZSBzcGVjaWZpYyBlbnRyeSBv
biBsaW5lICVkIG92ZXJyaWRlcyBsaW5lICVkJyAlIChleHBlY3RhdGlvbl9saW5lLmxpbmVfbnVt
YmVyLCBwcmV2X2V4cGVjdGF0aW9uX2xpbmUubGluZV9udW1iZXIpKQorICAgICAgICAgICAgZXhw
ZWN0YXRpb25fbGluZS53YXJuaW5ncy5hcHBlbmQoJ01vcmUgc3BlY2lmaWMgZW50cnkgb24gbGlu
ZSAlZCBvdmVycmlkZXMgbGluZSAlZCcgJSAoZXhwZWN0YXRpb25fbGluZS5saW5lX251bWJlciwg
cHJldl9leHBlY3RhdGlvbl9saW5lLmxpbmVfbnVtYmVyKSkKICAgICAgICAgICAgICMgRklYTUU6
IHJldHVybiBGYWxzZSBpZiB3ZSB3YW50IG1vcmUgc3BlY2lmaWMgdG8gd2luLgogICAgICAgICAg
ICAgcmV0dXJuIFRydWUKIAogICAgICAgICBpZiBwcmV2X2V4cGVjdGF0aW9uX2xpbmUubWF0Y2hp
bmdfY29uZmlndXJhdGlvbnMgPD0gZXhwZWN0YXRpb25fbGluZS5tYXRjaGluZ19jb25maWd1cmF0
aW9uczoKLSAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUuZXJyb3JzLmFwcGVuZCgnTW9yZSBz
cGVjaWZpYyBlbnRyeSBvbiBsaW5lICVkIG92ZXJyaWRlcyBsaW5lICVkJyAlIChwcmV2X2V4cGVj
dGF0aW9uX2xpbmUubGluZV9udW1iZXIsIGV4cGVjdGF0aW9uX2xpbmUubGluZV9udW1iZXIpKQor
ICAgICAgICAgICAgZXhwZWN0YXRpb25fbGluZS53YXJuaW5ncy5hcHBlbmQoJ01vcmUgc3BlY2lm
aWMgZW50cnkgb24gbGluZSAlZCBvdmVycmlkZXMgbGluZSAlZCcgJSAocHJldl9leHBlY3RhdGlv
bl9saW5lLmxpbmVfbnVtYmVyLCBleHBlY3RhdGlvbl9saW5lLmxpbmVfbnVtYmVyKSkKICAgICAg
ICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgaWYgcHJldl9leHBlY3RhdGlvbl9saW5lLm1h
dGNoaW5nX2NvbmZpZ3VyYXRpb25zICYgZXhwZWN0YXRpb25fbGluZS5tYXRjaGluZ19jb25maWd1
cmF0aW9uczoKLSAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUuZXJyb3JzLmFwcGVuZCgnRW50
cmllcyBvbiBsaW5lICVkIGFuZCBsaW5lICVkIG1hdGNoIG92ZXJsYXBwaW5nIHNldHMgb2YgY29u
ZmlndXJhdGlvbnMnICUgKHByZXZfZXhwZWN0YXRpb25fbGluZS5saW5lX251bWJlciwgZXhwZWN0
YXRpb25fbGluZS5saW5lX251bWJlcikpCisgICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLndh
cm5pbmdzLmFwcGVuZCgnRW50cmllcyBvbiBsaW5lICVkIGFuZCBsaW5lICVkIG1hdGNoIG92ZXJs
YXBwaW5nIHNldHMgb2YgY29uZmlndXJhdGlvbnMnICUgKHByZXZfZXhwZWN0YXRpb25fbGluZS5s
aW5lX251bWJlciwgZXhwZWN0YXRpb25fbGluZS5saW5lX251bWJlcikpCiAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQogCiAgICAgICAgICMgQ29uZmlndXJhdGlvbiBzZXRzIGFyZSBkaXNqb2ludCwg
dGhlbi4KQEAgLTcwNiw4ICs3MDEsOCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zKG9iamVjdCk6
CiAgICAgICAgICAgICB0ZXN0X2NvbmZpZzogc3BlY2lmaWMgdmFsdWVzIHRvIGNoZWNrIGFnYWlu
c3Qgd2hlbgogICAgICAgICAgICAgICAgIHBhcnNpbmcgdGhlIGZpbGUgKHVzdWFsbHkgcG9ydC50
ZXN0X2NvbmZpZygpLAogICAgICAgICAgICAgICAgIGJ1dCBtYXkgYmUgZGlmZmVyZW50IHdoZW4g
bGludGluZyBvciBkb2luZyBvdGhlciB0aGluZ3MpLgotICAgICAgICAgICAgaXNfbGludF9tb2Rl
OiBJZiBUcnVlLCBqdXN0IHBhcnNlIHRoZSBleHBlY3RhdGlvbnMgc3RyaW5nCi0gICAgICAgICAg
ICAgICAgbG9va2luZyBmb3IgZXJyb3JzLgorICAgICAgICAgICAgaXNfbGludF9tb2RlOiBJZiBU
cnVlLCBwYXJzZSB0aGUgZXhwZWN0YXRpb25zIHN0cmluZyBhbmQgcmFpc2UKKyAgICAgICAgICAg
ICAgICBhbiBleGNlcHRpb24gaWYgd2FybmluZ3MgYXJlIGVuY291bnRlcmVkLgogICAgICAgICAg
ICAgb3ZlcnJpZGVzOiB0ZXN0IGV4cGVjdGF0aW9ucyB0aGF0IGFyZSBhbGxvd2VkIHRvIG92ZXJy
aWRlIGFueQogICAgICAgICAgICAgICAgIGVudHJpZXMgaW4gfGV4cGVjdGF0aW9uc3wuIFRoaXMg
aXMgdXNlZCBieSBjYWxsZXJzCiAgICAgICAgICAgICAgICAgdGhhdCBuZWVkIHRvIG1hbmFnZSB0
d28gc2V0cyBvZiBleHBlY3RhdGlvbnMgKGUuZy4sIHVwc3RyZWFtCkBAIC03MzEsNyArNzI2LDcg
QEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9ucyhvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5fZXhw
ZWN0YXRpb25zICs9IG92ZXJyaWRlc19leHBlY3RhdGlvbnMKIAogICAgICAgICBzZWxmLl9oYXNf
d2FybmluZ3MgPSBGYWxzZQotICAgICAgICBzZWxmLl9yZXBvcnRfZXJyb3JzKCkKKyAgICAgICAg
c2VsZi5fcmVwb3J0X3dhcm5pbmdzKCkKICAgICAgICAgc2VsZi5fcHJvY2Vzc190ZXN0c193aXRo
b3V0X2V4cGVjdGF0aW9ucygpCiAKICAgICAjIFRPRE8ob2phbik6IEFsbG93IGZvciByZW1vdmlu
ZyBza2lwcGVkIHRlc3RzIHdoZW4gZ2V0dGluZyB0aGUgbGlzdCBvZgpAQCAtNzk4LDI4ICs3OTMs
MjIgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9ucyhvYmplY3QpOgogICAgIGRlZiBpc19yZWJhc2Vs
aW5pbmcoc2VsZiwgdGVzdCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9tb2RlbC5oYXNfbW9kaWZp
ZXIodGVzdCwgUkVCQVNFTElORSkKIAotICAgIGRlZiBfcmVwb3J0X2Vycm9ycyhzZWxmKToKLSAg
ICAgICAgZXJyb3JzID0gW10KKyAgICBkZWYgX3JlcG9ydF93YXJuaW5ncyhzZWxmKToKICAgICAg
ICAgd2FybmluZ3MgPSBbXQogICAgICAgICB0ZXN0X2V4cGVjdGF0aW9uX3BhdGggPSBzZWxmLl9w
b3J0LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpCiAgICAgICAgIGlmIHRlc3RfZXhw
ZWN0YXRpb25fcGF0aC5zdGFydHN3aXRoKHNlbGYuX3BvcnQucGF0aF9mcm9tX3dlYmtpdF9iYXNl
KCkpOgogICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbl9wYXRoID0gc2VsZi5fcG9ydC5ob3N0
LmZpbGVzeXN0ZW0ucmVscGF0aCh0ZXN0X2V4cGVjdGF0aW9uX3BhdGgsIHNlbGYuX3BvcnQucGF0
aF9mcm9tX3dlYmtpdF9iYXNlKCkpCiAgICAgICAgIGZvciBleHBlY3RhdGlvbiBpbiBzZWxmLl9l
eHBlY3RhdGlvbnM6Ci0gICAgICAgICAgICBmb3IgZXJyb3IgaW4gZXhwZWN0YXRpb24uZXJyb3Jz
OgotICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoJyVzOiVkICVzICVzJyAlICh0ZXN0X2V4
cGVjdGF0aW9uX3BhdGgsIGV4cGVjdGF0aW9uLmxpbmVfbnVtYmVyLCBlcnJvciwgZXhwZWN0YXRp
b24ubmFtZSBpZiBleHBlY3RhdGlvbi5leHBlY3RhdGlvbnMgZWxzZSBleHBlY3RhdGlvbi5vcmln
aW5hbF9zdHJpbmcpKQogICAgICAgICAgICAgZm9yIHdhcm5pbmcgaW4gZXhwZWN0YXRpb24ud2Fy
bmluZ3M6CiAgICAgICAgICAgICAgICAgd2FybmluZ3MuYXBwZW5kKCclczolZCAlcyAlcycgJSAo
dGVzdF9leHBlY3RhdGlvbl9wYXRoLCBleHBlY3RhdGlvbi5saW5lX251bWJlciwgd2FybmluZywg
ZXhwZWN0YXRpb24ubmFtZSBpZiBleHBlY3RhdGlvbi5leHBlY3RhdGlvbnMgZWxzZSBleHBlY3Rh
dGlvbi5vcmlnaW5hbF9zdHJpbmcpKQogCiAgICAgICAgIGZvciB3YXJuaW5nIGluIHNlbGYuX3Nr
aXBwZWRfdGVzdHNfd2FybmluZ3M6CiAgICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQoJyVzJXMn
ICUgKHRlc3RfZXhwZWN0YXRpb25fcGF0aCwgd2FybmluZykpCiAKLSAgICAgICAgaWYgZXJyb3Jz
IG9yIHdhcm5pbmdzOgotICAgICAgICAgICAgaWYgZXJyb3JzOgotICAgICAgICAgICAgICAgIHJh
aXNlIFBhcnNlRXJyb3IoZmF0YWw9VHJ1ZSwgZXJyb3JzPXNvcnRlZChlcnJvcnMgKyB3YXJuaW5n
cykpCi0gICAgICAgICAgICBpZiB3YXJuaW5nczoKLSAgICAgICAgICAgICAgICBzZWxmLl9oYXNf
d2FybmluZ3MgPSBUcnVlCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5faXNfbGludF9tb2RlOgot
ICAgICAgICAgICAgICAgICAgICByYWlzZSBQYXJzZUVycm9yKGZhdGFsPUZhbHNlLCBlcnJvcnM9
d2FybmluZ3MpCisgICAgICAgIGlmIHdhcm5pbmdzOgorICAgICAgICAgICAgc2VsZi5faGFzX3dh
cm5pbmdzID0gVHJ1ZQorICAgICAgICAgICAgaWYgc2VsZi5faXNfbGludF9tb2RlOgorICAgICAg
ICAgICAgICAgIHJhaXNlIFBhcnNlRXJyb3Iod2FybmluZ3MpCiAKICAgICBkZWYgX3Byb2Nlc3Nf
dGVzdHNfd2l0aG91dF9leHBlY3RhdGlvbnMoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2Z1bGxf
dGVzdF9saXN0OgpAQCAtODMzLDcgKzgyMiw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnMob2Jq
ZWN0KToKICAgICBkZWYgcmVtb3ZlX3JlYmFzZWxpbmVkX3Rlc3RzKHNlbGYsIGV4Y2VwdF90aGVz
ZV90ZXN0cyk6CiAgICAgICAgICIiIlJldHVybnMgYSBjb3B5IG9mIHRoZSBleHBlY3RhdGlvbnMg
d2l0aCB0aGUgdGVzdHMgcmVtb3ZlZC4iIiIKICAgICAgICAgZGVmIHdpdGhvdXRfcmViYXNlbGlu
ZV9tb2RpZmllcihleHBlY3RhdGlvbik6Ci0gICAgICAgICAgICByZXR1cm4gbm90IChub3QgZXhw
ZWN0YXRpb24uaXNfbWFsZm9ybWVkKCkgYW5kIGV4cGVjdGF0aW9uLm5hbWUgaW4gZXhjZXB0X3Ro
ZXNlX3Rlc3RzIGFuZCAicmViYXNlbGluZSIgaW4gZXhwZWN0YXRpb24ubW9kaWZpZXJzKQorICAg
ICAgICAgICAgcmV0dXJuIG5vdCAobm90IGV4cGVjdGF0aW9uLmlzX2ludmFsaWQoKSBhbmQgZXhw
ZWN0YXRpb24ubmFtZSBpbiBleGNlcHRfdGhlc2VfdGVzdHMgYW5kICJyZWJhc2VsaW5lIiBpbiBl
eHBlY3RhdGlvbi5tb2RpZmllcnMpCiAKICAgICAgICAgcmV0dXJuIFRlc3RFeHBlY3RhdGlvblNl
cmlhbGl6ZXIubGlzdF90b19zdHJpbmcoZmlsdGVyKHdpdGhvdXRfcmViYXNlbGluZV9tb2RpZmll
ciwgc2VsZi5fZXhwZWN0YXRpb25zKSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRp
b25zX3VuaXR0ZXN0LnB5CmluZGV4IDk4YjkxYWVlZDFmMGRmN2MxYTlkZDI5NjNjYzU5MzM3MWMy
YWY4NTcuLmEyYzk0Y2JjZDRiYTU3NTExOGUzMjQ2OTUxZWM3YjFlNWZhMTBmNDAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVj
dGF0aW9uc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKQEAgLTEzMSw2ICsxMzEs
OSBAQCBCVUdfVEVTVCBXT05URklYIE1BQyA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwg
PSBJTUFHRQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9leHAuZ2V0X2V4cGVjdGF0
aW9ucyhzZWxmLmdldF90ZXN0KHRlc3QpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
KFtyZXN1bHRdKSkKIAorICAgIGRlZiBhc3NlcnRfYmFkX2V4cGVjdGF0aW9ucyhzZWxmLCBleHBl
Y3RhdGlvbnMsIG92ZXJyaWRlcz1Ob25lKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFy
c2VFcnJvciwgc2VsZi5wYXJzZV9leHAsIGV4cGVjdGF0aW9ucywgaXNfbGludF9tb2RlPVRydWUs
IG92ZXJyaWRlcz1vdmVycmlkZXMpCisKIAogY2xhc3MgQmFzaWNUZXN0cyhCYXNlKToKICAgICBk
ZWYgdGVzdF9iYXNpYyhzZWxmKToKQEAgLTE5MiwyNiArMTk1LDIzIEBAIEJVR1ggV09OVEZJWCA6
IGZhaWx1cmVzL2V4cGVjdGVkID0gSU1BR0UKICAgICAgICAgcyA9IHNlbGYuX2V4cC5nZXRfdGVz
dF9zZXQoV09OVEZJWCwgQ1JBU0gsIGluY2x1ZGVfc2tpcHM9RmFsc2UpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocywgc2V0KFtdKSkKIAotICAgIGRlZiB0ZXN0X3BhcnNlX2Vycm9yX2ZhdGFs
KHNlbGYpOgorICAgIGRlZiB0ZXN0X3BhcnNlX3dhcm5pbmcoc2VsZik6CiAgICAgICAgIHRyeToK
ICAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwKCIiIkZPTyA6IGZhaWx1cmVzL2V4cGVjdGVkL3Rl
eHQuaHRtbCA9IFRFWFQKLVNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sIiIiKQor
U0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwiIiIsIGlzX2xpbnRfbW9kZT1UcnVl
KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShUcnVlLCAiUGFyc2VFcnJvciB3YXNuJ3Qg
cmFpc2VkIikKICAgICAgICAgZXhjZXB0IFBhcnNlRXJyb3IsIGU6Ci0gICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUoZS5mYXRhbCkKLSAgICAgICAgICAgIGV4cF9lcnJvcnMgPSBbdSI6MSBUZXN0
IGxhY2tzIEJVRyBtb2RpZmllci4gZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgdSI6MSBVbnJlY29nbml6ZWQgbW9kaWZpZXIgJ2ZvbycgZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdSI6
MiBNaXNzaW5nIGV4cGVjdGF0aW9ucyBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRt
bCJdCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJ1xuJy5qb2luKHNlbGYu
X3BvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkgKyBzdHIoZXJyb3IpIGZvciBl
cnJvciBpbiBleHBfZXJyb3JzKSkKKyAgICAgICAgICAgIHdhcm5pbmdzID0gW3UiOjEgVGVzdCBs
YWNrcyBCVUcgbW9kaWZpZXIuIGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICB1IjoxIFVucmVjb2duaXplZCBtb2RpZmllciAnZm9vJyBmYWlsdXJl
cy9leHBlY3RlZC90ZXh0Lmh0bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgdSI6MiBNaXNz
aW5nIGV4cGVjdGF0aW9ucyBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCJdCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJ1xuJy5qb2luKHNlbGYuX3BvcnQu
cGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkgKyBzdHIod2FybmluZykgZm9yIHdhcm5p
bmcgaW4gd2FybmluZ3MpKQogCi0gICAgZGVmIHRlc3RfcGFyc2VfZXJyb3Jfbm9uZmF0YWwoc2Vs
Zik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwKCdTS0lQIDogZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcsIGlzX2xpbnRfbW9kZT1UcnVlKQogICAg
ICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShUcnVlLCAiUGFyc2VFcnJvciB3YXNuJ3QgcmFpc2Vk
IikKICAgICAgICAgZXhjZXB0IFBhcnNlRXJyb3IsIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKGUuZmF0YWwpCi0gICAgICAgICAgICBleHBfZXJyb3JzID0gW3UnOjEgVGVzdCBsYWNr
cyBCVUcgbW9kaWZpZXIuIGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCddCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJ1xuJy5qb2luKHNlbGYuX3BvcnQucGF0aF90b190
ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkgKyBzdHIoZXJyb3IpIGZvciBlcnJvciBpbiBleHBfZXJy
b3JzKSkKKyAgICAgICAgICAgIHdhcm5pbmdzID0gW3UnOjEgVGVzdCBsYWNrcyBCVUcgbW9kaWZp
ZXIuIGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCddCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cihlKSwgJ1xuJy5qb2luKHNlbGYuX3BvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0
aW9uc19maWxlKCkgKyBzdHIod2FybmluZykgZm9yIHdhcm5pbmcgaW4gd2FybmluZ3MpKQogCiAg
ICAgZGVmIHRlc3RfZXJyb3Jfb25fZGlmZmVyZW50X3BsYXRmb3JtKHNlbGYpOgogICAgICAgICAj
IHBhcnNlX2V4cCB1c2VzIGEgV2luZG93cyBwb3J0LiBBc3NlcnQgZXJyb3JzIG9uIE1hYyBzaG93
IHVwIGluIGxpbnQgbW9kZS4KQEAgLTIzNywxMiArMjM3LDkgQEAgU0tJUCA6IGZhaWx1cmVzL2V4
cGVjdGVkL2ltYWdlLmh0bWwiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sJywgSU1BR0UpCiAKICAgICBkZWYgdGVzdF9vdmVycmlkZXNfX2R1
cGxpY2F0ZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2Vs
Zi5wYXJzZV9leHAsCi0gICAgICAgICAgICAgIkJVR19FWFA6IGZhaWx1cmVzL2V4cGVjdGVkL3Rl
eHQuaHRtbCA9IFRFWFQiLAotICAgICAgICAgICAgICIiIgotQlVHX09WRVJSSURFIDogZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UKLUJVR19PVkVSUklERSA6IGZhaWx1cmVzL2V4
cGVjdGVkL3RleHQuaHRtbCA9IENSQVNICi0iIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2JhZF9l
eHBlY3RhdGlvbnMoIkJVR19FWFA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCVUdfT1ZFUlJJREUgOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0
Lmh0bWwgPSBDUkFTSFxuIikKIAogICAgIGRlZiB0ZXN0X3BpeGVsX3Rlc3RzX2ZsYWcoc2VsZik6
CiAgICAgICAgIGRlZiBtYXRjaCh0ZXN0LCByZXN1bHQsIHBpeGVsX3Rlc3RzX2VuYWJsZWQpOgpA
QCAtMjg3LDI2ICsyODQsMjAgQEAgQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sID0gQ1JBU0gKIGNsYXNzIEV4cGVjdGF0aW9uU3ludGF4VGVzdHMoQmFzZSk6CiAgICAg
ZGVmIHRlc3RfbWlzc2luZ19leHBlY3RhdGlvbihzZWxmKToKICAgICAgICAgIyBUaGlzIGlzIG1p
c3NpbmcgdGhlIGV4cGVjdGF0aW9uLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVy
cm9yLCBzZWxmLnBhcnNlX2V4cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR19URVNU
OiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnKQorICAgICAgICBzZWxmLmFzc2VydF9iYWRf
ZXhwZWN0YXRpb25zKCdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJykKIAog
ICAgIGRlZiB0ZXN0X21pc3NpbmdfY29sb24oc2VsZik6CiAgICAgICAgICMgVGhpcyBpcyBtaXNz
aW5nIHRoZSBtb2RpZmllcnMgYW5kIHRoZSAnOicKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
UGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
YmFkX2V4cGVjdGF0aW9ucygnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcpCiAK
LSAgICBkZWYgZGlzYWJsZWRfdGVzdF90b29fbWFueV9jb2xvbnMoc2VsZik6Ci0gICAgICAgICMg
RklYTUU6IEVuYWJsZSB0aGlzIHRlc3QgYW5kIGZpeCB0aGUgdW5kZXJseWluZyBidWcuCi0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAnQlVHX1RFU1Q6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRt
bCA9IFBBU1MgOicpCisgICAgZGVmIHRlc3RfdG9vX21hbnlfY29sb25zKHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydF9iYWRfZXhwZWN0YXRpb25zKCdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0
ZWQvdGV4dC5odG1sID0gUEFTUyA6JykKIAogICAgIGRlZiB0ZXN0X3Rvb19tYW55X2VxdWFsc19z
aWducyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5w
YXJzZV9leHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdCVUdfVEVTVDogZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCA9IElNQUdFJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
YmFkX2V4cGVjdGF0aW9ucygnQlVHX1RFU1Q6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9
IFRFWFQgPSBJTUFHRScpCiAKICAgICBkZWYgdGVzdF91bnJlY29nbml6ZWRfZXhwZWN0YXRpb24o
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2Vf
ZXhwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnQlVHX1RFU1Q6IGZhaWx1cmVzL2V4cGVj
dGVkL3RleHQuaHRtbCA9IFVOS05PV04nKQorICAgICAgICBzZWxmLmFzc2VydF9iYWRfZXhwZWN0
YXRpb25zKCdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVU5LTk9XTicp
CiAKICAgICBkZWYgdGVzdF9tYWNybyhzZWxmKToKICAgICAgICAgZXhwX3N0ciA9ICIiIgpAQCAt
MzE4LDI1ICszMDksMjMgQEAgQlVHX1RFU1QgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sID0gVEVYVAogCiBjbGFzcyBTZW1hbnRpY1Rlc3RzKEJhc2UpOgogICAgIGRlZiB0ZXN0X2J1
Z19mb3JtYXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNl
bGYucGFyc2VfZXhwLCAnQlVHMTIzNCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRF
WFQnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4
cCwgJ0JVRzEyMzQgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywgaXNfbGlu
dF9tb2RlPVRydWUpCiAKICAgICBkZWYgdGVzdF9iYWRfYnVnaWQoc2VsZik6CiAgICAgICAgIHRy
eToKLSAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwKCdCVUcxMjM0IFNMT1cgOiBmYWlsdXJlcy9l
eHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJykKKyAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwKCdC
VUcxMjM0IFNMT1cgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywgaXNfbGlu
dF9tb2RlPVRydWUpCiAgICAgICAgICAgICBzZWxmLmZhaWwoJ3Nob3VsZCBoYXZlIHJhaXNlZCBh
biBlcnJvciBhYm91dCBhIGJhZCBidWcgaWRlbnRpZmllcicpCiAgICAgICAgIGV4Y2VwdCBQYXJz
ZUVycm9yLCBleHA6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHAuZmF0YWwsIFRy
dWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oZXhwLmVycm9ycyksIDEpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oZXhwLndhcm5pbmdzKSwgMSkKIAogICAg
IGRlZiB0ZXN0X21pc3NpbmdfYnVnaWQoc2VsZik6Ci0gICAgICAgICMgVGhpcyBzaG91bGQgbG9n
IGEgbm9uLWZhdGFsIGVycm9yLgogICAgICAgICBzZWxmLnBhcnNlX2V4cCgnU0xPVyA6IGZhaWx1
cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnKQogICAgICAgICBzZWxmLmFzc2VydFRydWUo
c2VsZi5fZXhwLmhhc193YXJuaW5ncygpKQogCiAgICAgZGVmIHRlc3Rfc2xvd19hbmRfdGltZW91
dChzZWxmKToKICAgICAgICAgIyBBIHRlc3QgY2Fubm90IGJlIFNMT1cgYW5kIGV4cGVjdGVkIHRv
IFRJTUVPVVQuCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFy
c2VfZXhwLAotICAgICAgICAgICAgJ0JVR19URVNUIFNMT1cgOiBmYWlsdXJlcy9leHBlY3RlZC90
aW1lb3V0Lmh0bWwgPSBUSU1FT1VUJykKKyAgICAgICAgICAgICdCVUdfVEVTVCBTTE9XIDogZmFp
bHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sID0gVElNRU9VVCcsIGlzX2xpbnRfbW9kZT1UcnVl
KQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZShzZWxmKToKICAgICAgICAgIyBDYW4ndCBsaW50
IGEgZmlsZSB3LyAnUkVCQVNFTElORScgaW4gaXQuCkBAIC0zNDcsMTIgKzMzNiwxMiBAQCBjbGFz
cyBTZW1hbnRpY1Rlc3RzKEJhc2UpOgogICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZXMoc2VsZik6CiAg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCAiIiIK
IEJVR19FWFAgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCi1CVUdfRVhQIDog
ZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIpCitCVUdfRVhQIDogZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIsIGlzX2xpbnRfbW9kZT1UcnVlKQogCiAg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAogICAg
ICAgICAgICAgc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCksIG92ZXJyaWRlcz0iIiIKIEJV
R19PVkVSUklERSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKLUJVR19PVkVS
UklERSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IElNQUdFIiIiLCApCitCVUdfT1ZF
UlJJREUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRSIiIiwgaXNfbGludF9t
b2RlPVRydWUpCiAKICAgICBkZWYgdGVzdF9taXNzaW5nX2ZpbGUoc2VsZik6CiAgICAgICAgICMg
VGhpcyBzaG91bGQgbG9nIGEgbm9uLWZhdGFsIGVycm9yLgpAQCAtMzgxLDM3ICszNzAsMjYgQEAg
QlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKICAgICAgICAgc2VsZi5h
c3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgSU1BR0UpCiAKICAgICBk
ZWYgdGVzdF9hbWJpZ3VvdXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNl
RXJyb3IsIHNlbGYucGFyc2VfZXhwLCAiIiIKLUJVR19URVNUIFJFTEVBU0UgOiBwYXNzZXMvdGV4
dC5odG1sID0gUEFTUwotQlVHX1RFU1QgV0lOIDogcGFzc2VzL3RleHQuaHRtbCA9IEZBSUwKLSIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRfYmFkX2V4cGVjdGF0aW9ucygiQlVHX1RFU1QgUkVMRUFT
RSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkJVR19URVNUIFdJTiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBGQUlMXG4iKQog
CiAgICAgZGVmIHRlc3RfbW9yZV9tb2RpZmllcnMoc2VsZik6Ci0gICAgICAgIGV4cF9zdHIgPSAi
IiIKLUJVR19URVNUIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUwotQlVHX1RFU1Qg
V0lOIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVYVAotIiIiCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCBleHBfc3RyKQorICAgICAg
ICBzZWxmLmFzc2VydF9iYWRfZXhwZWN0YXRpb25zKCJCVUdfVEVTVCBSRUxFQVNFIDogcGFzc2Vz
L3RleHQuaHRtbCA9IFBBU1NcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQlVHX1RFU1QgV0lOIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVYVFxuIikKIAog
ICAgIGRlZiB0ZXN0X29yZGVyX2luX2ZpbGUoc2VsZik6Ci0gICAgICAgIGV4cF9zdHIgPSAiIiIK
LUJVR19URVNUIFdJTiBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFQKLUJVR19URVNU
IFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUwotIiIiCi0gICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCBleHBfc3RyKQorICAgICAgICBz
ZWxmLmFzc2VydF9iYWRfZXhwZWN0YXRpb25zKCJCVUdfVEVTVCBXSU4gUkVMRUFTRSA6IHBhc3Nl
cy90ZXh0Lmh0bWwgPSBURVhUXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkJVR19URVNUIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTU1xuIikKIAogICAg
IGRlZiB0ZXN0X21hY3JvX292ZXJyaWRlcyhzZWxmKToKLSAgICAgICAgZXhwX3N0ciA9ICIiIgot
QlVHX1RFU1QgV0lOIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKLUJVR19URVNUIFhQIDogcGFz
c2VzL3RleHQuaHRtbCA9IFRFWFQKLSIiIgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJz
ZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgZXhwX3N0cikKKyAgICAgICAgc2VsZi5hc3NlcnRfYmFk
X2V4cGVjdGF0aW9ucygiQlVHX1RFU1QgV0lOIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1NcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQlVHX1RFU1QgWFAgOiBwYXNz
ZXMvdGV4dC5odG1sID0gVEVYVFxuIikKIAogCiBjbGFzcyBSZWJhc2VsaW5pbmdUZXN0KEJhc2Up
OgogICAgICIiIlRlc3QgcmViYXNlbGluaW5nLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkuIiIiCiAg
ICAgZGVmIGFzc2VydFJlbW92ZShzZWxmLCBpbnB1dF9leHBlY3RhdGlvbnMsIHRlc3RzLCBleHBl
Y3RlZF9leHBlY3RhdGlvbnMpOgotICAgICAgICBzZWxmLnBhcnNlX2V4cChpbnB1dF9leHBlY3Rh
dGlvbnMpCisgICAgICAgIHNlbGYucGFyc2VfZXhwKGlucHV0X2V4cGVjdGF0aW9ucywgaXNfbGlu
dF9tb2RlPUZhbHNlKQogICAgICAgICBhY3R1YWxfZXhwZWN0YXRpb25zID0gc2VsZi5fZXhwLnJl
bW92ZV9yZWJhc2VsaW5lZF90ZXN0cyh0ZXN0cykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
eHBlY3RlZF9leHBlY3RhdGlvbnMsIGFjdHVhbF9leHBlY3RhdGlvbnMpCiAKQEAgLTQzMSw2MyAr
NDA5LDUzIEBAIGNsYXNzIFJlYmFzZWxpbmluZ1Rlc3QoQmFzZSk6CiBjbGFzcyBUZXN0RXhwZWN0
YXRpb25QYXJzZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfdG9rZW5p
emVfYmxhbmsoc2VsZik6CiAgICAgICAgIGV4cGVjdGF0aW9uID0gVGVzdEV4cGVjdGF0aW9uUGFy
c2VyLl90b2tlbml6ZSgnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5p
c19tYWxmb3JtZWQoKSwgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRp
b24uY29tbWVudCwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0YXRp
b24uZXJyb3JzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0YXRpb24u
d2FybmluZ3MpLCAwKQogCiAgICAgZGVmIHRlc3RfdG9rZW5pemVfbWlzc2luZ19jb2xvbihzZWxm
KToKICAgICAgICAgZXhwZWN0YXRpb24gPSBUZXN0RXhwZWN0YXRpb25QYXJzZXIuX3Rva2VuaXpl
KCdRdXguJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5pc19tYWxmb3Jt
ZWQoKSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhwZWN0YXRpb24uZXJy
b3JzKSwgJ1siTWlzc2luZyBhIFwnOlwnIl0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cihleHBlY3RhdGlvbi53YXJuaW5ncyksICdbIk1pc3NpbmcgYSBcJzpcJyJdJykKIAogICAgIGRl
ZiB0ZXN0X3Rva2VuaXplX2V4dHJhX2NvbG9uKHNlbGYpOgogICAgICAgICBleHBlY3RhdGlvbiA9
IFRlc3RFeHBlY3RhdGlvblBhcnNlci5fdG9rZW5pemUoJ0ZPTyA6IDogYmFyJykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5pc19tYWxmb3JtZWQoKSwgVHJ1ZSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhwZWN0YXRpb24uZXJyb3JzKSwgJ1siRXh0cmFuZW91
cyBcJzpcJyJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhwZWN0YXRpb24ud2Fy
bmluZ3MpLCAnWyJFeHRyYW5lb3VzIFwnOlwnIl0nKQogCiAgICAgZGVmIHRlc3RfdG9rZW5pemVf
ZW1wdHlfY29tbWVudChzZWxmKToKICAgICAgICAgZXhwZWN0YXRpb24gPSBUZXN0RXhwZWN0YXRp
b25QYXJzZXIuX3Rva2VuaXplKCcvLycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0
YXRpb24uaXNfbWFsZm9ybWVkKCksIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGF0aW9uLmNvbW1lbnQsICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBl
Y3RhdGlvbi5lcnJvcnMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3Rh
dGlvbi53YXJuaW5ncyksIDApCiAKICAgICBkZWYgdGVzdF90b2tlbml6ZV9jb21tZW50KHNlbGYp
OgogICAgICAgICBleHBlY3RhdGlvbiA9IFRlc3RFeHBlY3RhdGlvblBhcnNlci5fdG9rZW5pemUo
Jy8vUXV4LicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfbWFsZm9y
bWVkKCksIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmNvbW1l
bnQsICdRdXguJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0YXRpb24uZXJy
b3JzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0YXRpb24ud2Fybmlu
Z3MpLCAwKQogCiAgICAgZGVmIHRlc3RfdG9rZW5pemVfbWlzc2luZ19lcXVhbChzZWxmKToKICAg
ICAgICAgZXhwZWN0YXRpb24gPSBUZXN0RXhwZWN0YXRpb25QYXJzZXIuX3Rva2VuaXplKCdGT08g
OiBiYXInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmlzX21hbGZvcm1l
ZCgpLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi5lcnJv
cnMpLCAiWydNaXNzaW5nIGV4cGVjdGF0aW9uc1wnXSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyKGV4cGVjdGF0aW9uLndhcm5pbmdzKSwgIlsnTWlzc2luZyBleHBlY3RhdGlvbnNcJ10i
KQogCiAgICAgZGVmIHRlc3RfdG9rZW5pemVfZXh0cmFfZXF1YWwoc2VsZik6CiAgICAgICAgIGV4
cGVjdGF0aW9uID0gVGVzdEV4cGVjdGF0aW9uUGFyc2VyLl90b2tlbml6ZSgnRk9PIDogYmFyID0g
QkFaID0gUXV4LicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfbWFs
Zm9ybWVkKCksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4cGVjdGF0aW9u
LmVycm9ycyksICdbIkV4dHJhbmVvdXMgXCc9XCciXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyKGV4cGVjdGF0aW9uLndhcm5pbmdzKSwgJ1siRXh0cmFuZW91cyBcJz1cJyJdJykKIAog
ICAgIGRlZiB0ZXN0X3Rva2VuaXplX3ZhbGlkKHNlbGYpOgogICAgICAgICBleHBlY3RhdGlvbiA9
IFRlc3RFeHBlY3RhdGlvblBhcnNlci5fdG9rZW5pemUoJ0ZPTyA6IGJhciA9IEJBWicpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uaXNfbWFsZm9ybWVkKCksIEZhbHNlKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmNvbW1lbnQsIE5vbmUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGF0aW9uLmVycm9ycyksIDApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGF0aW9uLndhcm5pbmdzKSwgMCkKIAogICAgIGRl
ZiB0ZXN0X3Rva2VuaXplX3ZhbGlkX3dpdGhfY29tbWVudChzZWxmKToKICAgICAgICAgZXhwZWN0
YXRpb24gPSBUZXN0RXhwZWN0YXRpb25QYXJzZXIuX3Rva2VuaXplKCdGT08gOiBiYXIgPSBCQVog
Ly9RdXguJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5pc19tYWxmb3Jt
ZWQoKSwgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0YXRpb24uY29tbWVu
dCwgJ1F1eC4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi5tb2Rp
ZmllcnMpLCAnW1wnZm9vXCddJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhwZWN0
YXRpb24uZXhwZWN0YXRpb25zKSwgJ1tcJ2JhelwnXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKGV4cGVjdGF0aW9uLmVycm9ycyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGV4cGVjdGF0aW9uLndhcm5pbmdzKSwgMCkKIAogICAgIGRlZiB0ZXN0X3Rva2VuaXplX3Zh
bGlkX3dpdGhfbXVsdGlwbGVfbW9kaWZpZXJzKHNlbGYpOgogICAgICAgICBleHBlY3RhdGlvbiA9
IFRlc3RFeHBlY3RhdGlvblBhcnNlci5fdG9rZW5pemUoJ0ZPTzEgRk9PMiA6IGJhciA9IEJBWiAv
L1F1eC4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGF0aW9uLmlzX21hbGZvcm1l
ZCgpLCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RhdGlvbi5jb21tZW50
LCAnUXV4LicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4cGVjdGF0aW9uLm1vZGlm
aWVycyksICdbXCdmb28xXCcsIFwnZm9vMlwnXScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyKGV4cGVjdGF0aW9uLmV4cGVjdGF0aW9ucyksICdbXCdiYXpcJ10nKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihleHBlY3RhdGlvbi5lcnJvcnMpLCAwKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihleHBlY3RhdGlvbi53YXJuaW5ncyksIDApCiAKICAgICBkZWYgdGVzdF9w
YXJzZV9lbXB0eV9zdHJpbmcoc2VsZik6CiAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCkBAIC01
MzgsNyArNTA2LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplclRlc3RzKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemVyLnRvX3N0
cmluZyhleHBlY3RhdGlvbiksICdGT08gOiBiYXIgPSBCQVoxIEJBWjIgLy9RdXguJykKICAgICAg
ICAgZXhwZWN0YXRpb24ubW9kaWZpZXJzID0gWydmb28xJywgJ2ZvTzInXQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlcmlhbGl6ZXIudG9fc3RyaW5nKGV4cGVjdGF0aW9uKSwgJ0ZPTzEgRk9P
MiA6IGJhciA9IEJBWjEgQkFaMiAvL1F1eC4nKQotICAgICAgICBleHBlY3RhdGlvbi5lcnJvcnMu
YXBwZW5kKCdPaCB0aGUgaG9ycm9yLicpCisgICAgICAgIGV4cGVjdGF0aW9uLndhcm5pbmdzLmFw
cGVuZCgnT2ggdGhlIGhvcnJvci4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6
ZXIudG9fc3RyaW5nKGV4cGVjdGF0aW9uKSwgJycpCiAgICAgICAgIGV4cGVjdGF0aW9uLm9yaWdp
bmFsX3N0cmluZyA9ICdZZXMgaXQgaXMhJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlh
bGl6ZXIudG9fc3RyaW5nKGV4cGVjdGF0aW9uKSwgJ1llcyBpdCBpcyEnKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkK
aW5kZXggMzY2ZTMzNWQ1M2QwMTFiNGJhZGU1MjY5MTZlMzMzMzQ5MzU2ZjU0OS4uYWMwOWZjNWIx
ODU1OTIzMzYxYWQ1YjlkZDc4YTU0Y2VlNGQwM2Q5NSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC03MCw4
ICs3MCw4IEBAIGRlZiBsaW50KHBvcnQsIG9wdGlvbnMsIGV4cGVjdGF0aW9uc19jbGFzcyk6CiAg
ICAgICAgIGV4Y2VwdCB0ZXN0X2V4cGVjdGF0aW9ucy5QYXJzZUVycm9yLCBlOgogICAgICAgICAg
ICAgbGludF9mYWlsZWQgPSBUcnVlCiAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQotICAgICAg
ICAgICAgZm9yIGVycm9yIGluIGUuZXJyb3JzOgotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3Io
ZXJyb3IpCisgICAgICAgICAgICBmb3Igd2FybmluZyBpbiBlLndhcm5pbmdzOgorICAgICAgICAg
ICAgICAgIF9sb2cuZXJyb3Iod2FybmluZykKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCiAg
ICAgICAgIGZpbGVzX2xpbnRlZC5hZGQoZXhwZWN0YXRpb25zX2ZpbGUpCiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRp
b25zLnB5CmluZGV4IDdkZGQ2ODgyYWZiZmI1OGM4NDk5ZDc0ZGIwMDVhNmYzMmU4OGU0MGEuLjJj
YWJjODBhZDA3NTBjNjc5N2QxNjkyNjhhYTZjZGZhMWE4NDMxZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9u
cy5weQpAQCAtOTgsMTEgKzk4LDkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIob2Jq
ZWN0KToKICAgICAgICAgICAgIGVyciA9IGVycm9yCiAKICAgICAgICAgaWYgZXJyOgotICAgICAg
ICAgICAgbGV2ZWwgPSAyCi0gICAgICAgICAgICBpZiBlcnIuZmF0YWw6Ci0gICAgICAgICAgICAg
ICAgbGV2ZWwgPSA1Ci0gICAgICAgICAgICBmb3IgZXJyb3IgaW4gZXJyLmVycm9yczoKLSAgICAg
ICAgICAgICAgICBtYXRjaGVkID0gc2VsZi5fb3V0cHV0X3JlZ2V4Lm1hdGNoKGVycm9yKQorICAg
ICAgICAgICAgbGV2ZWwgPSA1CisgICAgICAgICAgICBmb3Igd2FybmluZyBpbiBlcnIud2Fybmlu
Z3M6CisgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IHNlbGYuX291dHB1dF9yZWdleC5tYXRjaCh3
YXJuaW5nKQogICAgICAgICAgICAgICAgIGlmIG1hdGNoZWQ6CiAgICAgICAgICAgICAgICAgICAg
IGxpbmVubywgbWVzc2FnZSA9IG1hdGNoZWQuZ3JvdXAoJ2xpbmUnLCAnbWVzc2FnZScpCiAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvcihpbnQobGluZW5vKSwgJ3Rl
c3QvZXhwZWN0YXRpb25zJywgbGV2ZWwsIG1lc3NhZ2UpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>