<?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>205291</bug_id>
          
          <creation_ts>2019-12-16 11:26:53 -0800</creation_ts>
          <short_desc>Python 3: Add support to run-webkit-tests</short_desc>
          <delta_ts>2020-01-17 13:06:57 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=205280</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=184986</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=205622</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>205622</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1599003</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-16 11:26:53 -0800</bug_when>
    <thetext>We should be able to run run-webkit-tests with Python 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599068</commentid>
    <comment_count>1</comment_count>
      <attachid>385803</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-16 13:30:59 -0800</bug_when>
    <thetext>Created attachment 385803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599224</commentid>
    <comment_count>2</comment_count>
      <attachid>385803</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2019-12-16 17:08:58 -0800</bug_when>
    <thetext>Comment on attachment 385803
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:182
&gt; +        self.should_test_processes = not self._platform.is_win() and sys.version_info &lt; (3, 0)

This seems like a huge change.  Do we know what the downsides are going to be?

&gt; Tools/Scripts/webkitpy/layout_tests/views/printing.py:242
&gt; +            if timing[1] &gt; min_seconds_to_print:

why the change?

&gt; Tools/Scripts/webkitpy/port/driver.py:652
&gt; +        if early_return:

This doesn&apos;t seem any more readable to me than just using the if

&gt; Tools/Scripts/webkitpy/port/driver.py:695
&gt; +                if out_line[-1] != &apos;\n&apos; and out_line[-1] != 10:

Why do we need the second check?

&gt; Tools/Scripts/webkitpy/port/image_diff.py:62
&gt; +            self._process.write(actual_contents)

Have you compared the output?  You&apos;re inserting a newline here where there wasn&apos;t one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599231</commentid>
    <comment_count>3</comment_count>
      <attachid>385803</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-16 17:28:52 -0800</bug_when>
    <thetext>Comment on attachment 385803
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/views/printing.py:242
&gt;&gt; +            if timing[1] &gt; min_seconds_to_print:
&gt; 
&gt; why the change?

The old code was just wrong, not sure how we lived so long with it.

Line 236 is:

timings.append((directory, round(stats[directory][&apos;total_time&apos;], 1), stats[directory][&apos;num_tests&apos;]))

Clearly, timing[0] is the directory, timing[1] is the time the directory took.

&gt;&gt; Tools/Scripts/webkitpy/port/driver.py:695
&gt;&gt; +                if out_line[-1] != &apos;\n&apos; and out_line[-1] != 10:
&gt; 
&gt; Why do we need the second check?

Because Python 2 is silly.

The second check is actually the correct one, but Python 2 doesn&apos;t like comparing characters against the integer representations of those same characters, so &apos;foo\n&apos;[-1] != 10.

On the other hand, Python 3 doesn&apos;t like comparing bytes with characters, so b&apos;foo\n&apos;[-1] != &apos;\n&apos;, and even b&apos;foo\n&apos;[-1] != b&apos;\n&apos; won&apos;t work in Python 3

&gt;&gt; Tools/Scripts/webkitpy/port/image_diff.py:62
&gt;&gt; +            self._process.write(actual_contents)
&gt; 
&gt; Have you compared the output?  You&apos;re inserting a newline here where there wasn&apos;t one.

I think there was a newline before, just hiding between %d and %s:

self._process.write(&apos;Content-Length: %d\n%s...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599238</commentid>
    <comment_count>4</comment_count>
      <attachid>385839</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-16 17:42:17 -0800</bug_when>
    <thetext>Created attachment 385839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599447</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-12-17 09:22:34 -0800</bug_when>
    <thetext>&gt;&gt;&gt; +            if timing[1] &gt; min_seconds_to_print:
&gt;&gt; 
&gt;&gt; why the change?
&gt;
&gt;
&gt; The old code was just wrong, not sure how we lived so long with it.

How does this change the output? I never paid very close attention to the timing printed at the end of test runs, but what I did see appeared reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599451</commentid>
    <comment_count>6</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-17 09:38:24 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #5)
&gt; &gt;&gt;&gt; +            if timing[1] &gt; min_seconds_to_print:
&gt; &gt;&gt; 
&gt; &gt;&gt; why the change?
&gt; &gt;
&gt; &gt;
&gt; &gt; The old code was just wrong, not sure how we lived so long with it.
&gt; 
&gt; How does this change the output? I never paid very close attention to the
&gt; timing printed at the end of test runs, but what I did see appeared
&gt; reasonable.

I think the old behavior would have ended up being pretty non-deterministic. We were comparing a string against some limit, the string probably would have usually resolved to something &quot;greater&quot; than min_seconds_to_print. In effect, we probably were printing more than expected, but I&apos;m not exactly sure, and it would depend on the directory name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600573</commentid>
    <comment_count>7</comment_count>
      <attachid>385839</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-19 17:06:30 -0800</bug_when>
    <thetext>Comment on attachment 385839
Patch

Clearing flags on attachment: 385839

Committed r253804: &lt;https://trac.webkit.org/changeset/253804&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600574</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-19 17:06:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600575</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-19 17:07:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/58097078&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601721</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-28 19:35:33 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 205622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601723</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-12-28 19:37:07 -0800</bug_when>
    <thetext>I&apos;m seeing a lot of strange test failures that seem to have started after this patch. Will try rolling back, and will re-land if it doesn&apos;t help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601785</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-12-29 12:31:17 -0800</bug_when>
    <thetext>The rollback did eliminate the &quot;diff (null%)&quot; failures seen on many tests. These same tests continue to fail with larger diffs on other hardware though.

I think that the regression from this patch is about dealing with reftest mismatches that are within noise level.

Before:

04:02:09.776 30742   svg/gradients/spreadMethodDiagonal4.svg -&gt; ref test hashes didn&apos;t match but diff passed

After:

22:24:23.922 2955   svg/gradients/spreadMethodDiagonal4.svg : ImageDiff timed out
22:24:23.923 2955 ref test mismatch did not produce an image diff.
22:24:23.924 2911 [48488/52894] svg/gradients/spreadMethodDiagonal4.svg failed unexpectedly (reference mismatch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604642</commentid>
    <comment_count>13</comment_count>
      <attachid>387233</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-09 08:37:31 -0800</bug_when>
    <thetext>Created attachment 387233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604663</commentid>
    <comment_count>14</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-09 09:05:14 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #12)
&gt; The rollback did eliminate the &quot;diff (null%)&quot; failures seen on many tests.
&gt; These same tests continue to fail with larger diffs on other hardware though.
&gt; 
&gt; I think that the regression from this patch is about dealing with reftest
&gt; mismatches that are within noise level.
&gt; 
&gt; Before:
&gt; 
&gt; 04:02:09.776 30742   svg/gradients/spreadMethodDiagonal4.svg -&gt; ref test
&gt; hashes didn&apos;t match but diff passed
&gt; 
&gt; After:
&gt; 
&gt; 22:24:23.922 2955   svg/gradients/spreadMethodDiagonal4.svg : ImageDiff
&gt; timed out
&gt; 22:24:23.923 2955 ref test mismatch did not produce an image diff.
&gt; 22:24:23.924 2911 [48488/52894] svg/gradients/spreadMethodDiagonal4.svg
&gt; failed unexpectedly (reference mismatch)

I am pretty sure that this was caused by a failure to decode the content-length. I ran a test with the decode, with the previous patch and now I&apos;m comparing those results against no patch at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604685</commentid>
    <comment_count>15</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-09 10:01:51 -0800</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #14)
&gt; (In reply to Alexey Proskuryakov from comment #12)
&gt; &gt; The rollback did eliminate the &quot;diff (null%)&quot; failures seen on many tests.
&gt; &gt; These same tests continue to fail with larger diffs on other hardware though.
&gt; &gt; 
&gt; &gt; I think that the regression from this patch is about dealing with reftest
&gt; &gt; mismatches that are within noise level.
&gt; &gt; 
&gt; &gt; Before:
&gt; &gt; 
&gt; &gt; 04:02:09.776 30742   svg/gradients/spreadMethodDiagonal4.svg -&gt; ref test
&gt; &gt; hashes didn&apos;t match but diff passed
&gt; &gt; 
&gt; &gt; After:
&gt; &gt; 
&gt; &gt; 22:24:23.922 2955   svg/gradients/spreadMethodDiagonal4.svg : ImageDiff
&gt; &gt; timed out
&gt; &gt; 22:24:23.923 2955 ref test mismatch did not produce an image diff.
&gt; &gt; 22:24:23.924 2911 [48488/52894] svg/gradients/spreadMethodDiagonal4.svg
&gt; &gt; failed unexpectedly (reference mismatch)
&gt; 
&gt; I am pretty sure that this was caused by a failure to decode the
&gt; content-length. I ran a test with the decode, with the previous patch and
&gt; now I&apos;m comparing those results against no patch at all.

Was able to confirm this is the problem by looking at test results without the change.

This makes sense, bytes are likely using their ASCII representation when cast to integers rather than the number that the string actually represents. ImageDiff was timing out because it was waiting on data that would never come.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605109</commentid>
    <comment_count>16</comment_count>
      <attachid>387233</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-10 08:16:26 -0800</bug_when>
    <thetext>Comment on attachment 387233
Patch

Clearing flags on attachment: 387233

Committed r254340: &lt;https://trac.webkit.org/changeset/254340&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605110</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-10 08:16:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605137</commentid>
    <comment_count>18</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-10 09:11:09 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605138</commentid>
    <comment_count>19</comment_count>
      <attachid>387344</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-10 09:11:10 -0800</bug_when>
    <thetext>Created attachment 387344
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605146</commentid>
    <comment_count>20</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-10 09:16:59 -0800</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #19)
&gt; Created attachment 387344 [details]
&gt; Patch for landing

Accidentally broke some Python 3 unit tests in this process, fixing those. We aren&apos;t running them in automation yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605177</commentid>
    <comment_count>21</comment_count>
      <attachid>387344</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-10 10:14:09 -0800</bug_when>
    <thetext>Comment on attachment 387344
Patch for landing

Clearing flags on attachment: 387344

Committed r254346: &lt;https://trac.webkit.org/changeset/254346&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605178</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-10 10:14:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608166</commentid>
    <comment_count>23</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-17 13:06:57 -0800</bug_when>
    <thetext>Committed r254762: &lt;https://trac.webkit.org/changeset/254762&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385803</attachid>
            <date>2019-12-16 13:30:59 -0800</date>
            <delta_ts>2019-12-16 17:42:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205291-20191216133058.patch</filename>
            <type>text/plain</type>
            <size>64136</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MzU2OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDkwIEBACisyMDE5LTEyLTE2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgdG8gcnVuLXdlYmtpdC10ZXN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjkxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRz
L3Rlc3Qtd2Via2l0cHktcHl0aG9uMzogQWRkIHdlYmtpdHB5LmxheW91dF90ZXN0cy4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9tZXNzYWdlX3Bvb2wucHk6CisgICAgICAgIChf
TWVzc2FnZVBvb2wuX2xvb3ApOiBNb3ZlIGV4Y2VwdGlvbiBpbnNpZGUgb2YgbG9vcC4KKyAgICAg
ICAgKF9NZXNzYWdlLl9fcmVwcl9fKTogVXNlIC5mb3JtYXQgc3RyaW5ncy4KKyAgICAgICAgKF9X
b3JrZXIuX19pbml0X18pOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi93YXZlZGlmZi5weToKKyAgICAgICAgKFdhdmVEaWZmLl9faW5pdF9fKTogVXNlIFB5dGhvbiAz
IGNvbXBhdGlibGUgQnl0ZXNJTyBhbmQgU3RyaW5nSU8uCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5OgorICAg
ICAgICAoTGF5b3V0VGVzdEZpbmRlci5fcmVhZF90ZXN0X25hbWVzX2Zyb21fZmlsZSk6IFVzZSAu
Zm9ybWF0IHN0cmluZy4KKyAgICAgICAgKExheW91dFRlc3RGaW5kZXIuc3BsaXRfaW50b19jaHVu
a3MpOiBFeHBsaWNpdGx5IHVzZSBpbnRlZ2VyIGRpdmlzaW9uLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6CisgICAgICAgIChN
YW5hZ2VyLl9nZXRfdGVzdF9pbnB1dHMpOiBVc2UgcmFuZ2Ugb3ZlciB4cmFuZ2UuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3Rf
cnVubmVyLnB5OgorICAgICAgICAoU2luZ2xlVGVzdFJ1bm5lci5faGFuZGxlX2Vycm9yKTogVXNl
IC5mb3JtYXQgc3RyaW5ncy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS9qc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvci5weToKKyAgICAg
ICAgKEpTT05MYXlvdXRSZXN1bHRzR2VuZXJhdG9yLl9pbnNlcnRfZmFpbHVyZV9zdW1tYXJpZXMp
OiBVc2UgUHl0aG9uIDMgY29tcGF0aWJsZSBpdGVydmFsdWVzLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3Jlc3VsdHMucHk6CisgICAgICAgIChU
ZXN0UmVzdWx0Ll9faW5pdF9fKTogU29ydCB0eXBlIGxpc3QuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHk6
CisgICAgICAgIChSdW5UZXN0LnNldFVwKTogTXVsdGlwbGUgcHJvY2Vzc2VzIGFyZSBidWdneSBp
biB0ZXN0LXdlYmtpdHB5LgorICAgICAgICAoUnVuVGVzdC50ZXN0X2Jhc2ljKTogcmVwbGFjZSBi
dWZsaXN0IHdpdGggZ2V0dmFsdWUoKS4KKyAgICAgICAgKFJ1blRlc3QudGVzdF9jaGlsZF9wcm9j
ZXNzZXNfMik6IERpdHRvLgorICAgICAgICAoUnVuVGVzdC50ZXN0X2NoaWxkX3Byb2Nlc3Nlc19t
aW4pOiBEaXR0by4KKyAgICAgICAgKFJ1blRlc3QudGVzdF9rZXlib2FyZF9pbnRlcnJ1cHQpOiBE
aXR0by4KKyAgICAgICAgKFJ1blRlc3QudGVzdF9taXNzaW5nX2FuZF91bmV4cGVjdGVkX3Jlc3Vs
dHMpOiBDb21wYXJlIGRpY3Rpb25hcmllcyBpbnN0ZWFkIG9mIGpzb24gc3RyaW5ncy4KKyAgICAg
ICAgKFJ1blRlc3QudGVzdF9jcmFzaF93aXRoX3N0ZGVycik6IERpdHRvLgorICAgICAgICAoUnVu
VGVzdC50ZXN0X3JlZnRlc3Rfc2hvdWxkX25vdF91c2VfbmFtaW5nX2NvbnZlbnRpb25faWZfbm90
X2xpc3RlZF9pbl9yZWZ0ZXN0bGlzdCk6IERpdHRvLgorICAgICAgICAoRW5kVG9FbmRUZXN0LnRl
c3RfcmVmdGVzdF93aXRoX3R3b19ub3RyZWZzKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW0ucHk6CisgICAgICAgIChN
ZXRlcmVkU3RyZWFtLndyaXRlKTogRmx1c2ggc3RyZWFtIGFmdGVyIHdyaXRpbmcuCisgICAgICAg
IChNZXRlcmVkU3RyZWFtLl9lcmFzZV9sYXN0X3BhcnRpYWxfbGluZSk6IERpdHRvLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5OgorICAg
ICAgICAoUHJpbnRlci5fcHJpbnRfZGlyZWN0b3J5X3RpbWluZ3MpOiBDYW4ndCBjb21wYXJlIHN0
cmluZyB0byBpbnRlZ2VyLgorICAgICAgICAoUHJpbnRlci5fcHJpbnRfc3RhdGlzdGljc19mb3Jf
dGVzdF90aW1pbmdzKTogVXNlIGludGVnZXIgZGl2aXNpb24uCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9wb3J0L2Rhcndpbi5weToKKyAgICAgICAgKERhcndpblBvcnQuX21lcmdlX2NyYXNo
X2xvZ3MpOiBVc2UgaXRlbXMgb3ZlciBpdGVyaXRlbXMuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2RldmljZS5weToKKyAgICAgICAgKERldmljZS5fX2hhc2hfXyk6IEFsbG93IGhh
c2hpbmcgb2YgZGV2aWNlcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNl
X3BvcnQucHk6CisgICAgICAgIChEZXZpY2VQb3J0Ll9pbnN0YWxsKTogVXNlIHJhbmdlIG92ZXIg
eHJhbmdlLgorICAgICAgICAoRGV2aWNlUG9ydC5zZXR1cF90ZXN0X3J1bik6IERpdHRvLgorICAg
ICAgICAoRGV2aWNlUG9ydC5jbGVhbl91cF90ZXN0X3J1bik6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHk6CisgICAgICAgIChEcml2ZXJPdXRwdXQuX19p
bml0X18pOiBUZXh0IHNob3VsZCBiZSBkZWNvZGVkLCBhdWRpbyBlbmNvZGVkLgorICAgICAgICAo
RHJpdmVyLl9faW5pdF9fKToKKyAgICAgICAgKERyaXZlci5ydW5fdGVzdCk6CisgICAgICAgIChE
cml2ZXIuX3BhcnNlX2NoaWxkX3Byb2Nlc3Nlc19vdXRwdXQpOiBPdXRwdXQgaXMgYnl0ZSBhcnJh
eS4KKyAgICAgICAgKERyaXZlci5fY2hlY2tfZm9yX2RyaXZlcl90aW1lb3V0KTogRGl0dG8uCisg
ICAgICAgIChEcml2ZXIuX2NoZWNrX2Zvcl9hZGRyZXNzX3Nhbml0aXplcl92aW9sYXRpb24pOiBF
cnJvciBsaW5lcyBhcmUgYnl0ZSBhcnJheXMuCisgICAgICAgIChEcml2ZXIuX2NoZWNrX2Zvcl9k
cml2ZXJfY3Jhc2hfb3JfdW5yZXNwb25zaXZlbmVzcyk6IERpdHRvLgorICAgICAgICAoRHJpdmVy
Ll9yZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrKTogSWYgYSBibG9jayBpcyBiYXNlNjQgZW5jb2Rl
ZCwgd2Ugd2FudCB0aGUgZGVjb2RlZAorICAgICAgICBjb250ZW50LCBvdGhlcndpc2UsIHdlIHdh
bnQgdGhlIGVuY29kZWQgY29udGVudC4KKyAgICAgICAgKERyaXZlci5fcmVhZF9oZWFkZXIpOiBM
aW5lcyBhcmUgYnl0ZSBhcnJheXMsIGRlY29kZSB0aGVtIGJlZm9yZSBwcm9jZXNzaW5nLgorICAg
ICAgICAoRHJpdmVyLl9wcm9jZXNzX3N0ZG91dF9saW5lKTogQmxvY2tzIGFyZSBieXRlIGFycmF5
cy4KKyAgICAgICAgKERyaXZlci5fc3RyaXBfZW9mKTogTGluZXMgc2hvdWxkIGJlIGJ5dGUgYXJy
YXlzLCBub3Qgc3RyaW5ncy4KKyAgICAgICAgKERyaXZlci5fcmVhZF9ibG9jayk6IFN0YW5kYXJk
aXplIGVuY29kaW5nIGluIGJsb2Nrcy4KKyAgICAgICAgKENvbnRlbnRCbG9jay5fX2luaXRfXyk6
IENvbnRlbnQgc2hvdWxkIGJlIGEgYnl0ZSBhcnJheS4KKyAgICAgICAgKENvbnRlbnRCbG9jay5k
ZWNvZGVfY29udGVudCk6IEF0dGVtcHQgdG8gZGVjb2RlIGNvbnRlbnQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weToKKyAgICAgICAgKERyaXZlclRl
c3QudGVzdF9yZWFkX2JpbmFyeV9ibG9jayk6IENvbnRlbnQgc2hvdWxkIGJlIGVuY29kZWQuCisg
ICAgICAgIChEcml2ZXJUZXN0LnRlc3RfcmVhZF9iYXNlNjRfYmxvY2spOiBEaXR0by4KKyAgICAg
ICAgKERyaXZlclRlc3QudGVzdF9jaGVja19mb3JfZHJpdmVyX2NyYXNoKTogU2VydmVyUHJvY2Vz
cyBvdXRwdXQgc2hvdWxkIGJlIGEgYnl0ZSBhcnJheS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BvcnQvaW1hZ2VfZGlmZi5weToKKyAgICAgICAgKEltYWdlRGlmZmVyLmRpZmZfaW1hZ2Up
OiBJbWFnZURpZmYgb3V0cHV0IGlzIGluIGJ5dGUgYXJyYXlzLgorICAgICAgICAoSW1hZ2VEaWZm
ZXIuX3JlYWQpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVy
X3Byb2Nlc3MucHk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLndyaXRlKTogRW5jb2RlIGRhdGEg
YmVmb3JlIHdyaXRpbmcgaXQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZl
cl9wcm9jZXNzX21vY2sucHk6CisgICAgICAgIChNb2NrU2VydmVyUHJvY2Vzcy5fX2luaXRfXyk6
IENvbnZlcnQgc3RyaW5nIG1vY2sgb3V0cHV0IHRvIGJ5dGVzLgorICAgICAgICAoTW9ja1NlcnZl
clByb2Nlc3MucmVhZF9zdGRvdXRfbGluZSk6IFN0ZG91dCBsaW5lcyBhcmUgYnl0ZSBhcnJheXMu
CisgICAgICAgIChNb2NrU2VydmVyUHJvY2Vzcy5yZWFkX3N0ZG91dCk6IERpdHRvLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weToKKyAgICAgICAg
KFNpbXVsYXRvclByb2Nlc3MuTm9uQmxvY2tpbmdGaWxlRnJvbVNvY2tldC5jbG9zZSk6IERvbid0
IGRvdWJsZSBjbG9zZSBzb2NrZXQgaW4gUHl0aG9uIDMuCisgICAgICAgIChTaW11bGF0b3JQcm9j
ZXNzLl9zdGFydCk6IFN0ZGluIHNob3VsZCBiZSBhIGJpbmFyeSBzdHJlYW0uCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHk6CisgICAgICAgICh1bml0X3Rlc3RfbGlzdCk6
IENvbnZlcnQgYXVkaW8gc3RyZWFtcyB0byBieXRlIGFycmF5cy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHk6CisgICAgICAgIChTaW11bGF0ZWRE
ZXZpY2UuaXNfdXNhYmxlKTogRGVjb2RlIHhjcnVuIG91dHB1dC4KKyAgICAgICAgKFNpbXVsYXRl
ZERldmljZS5pbnN0YWxsX2FwcCk6IFVzZSB4cmFuZ2Ugb3ZlciByYW5nZS4KKwogMjAxOS0xMi0x
NiAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgSXNv
bGF0ZWQgb2JqZWN0IGltcGxlbWVudGF0aW9uIG9mIHBhcmFtZXRlcml6ZWQgYXR0cmlidXRlIFNl
bGVjdFRleHRXaXRoQ3JpdGVyaWEuCkluZGV4OiBUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkt
cHl0aG9uMwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHktcHl0aG9u
MwkocmV2aXNpb24gMjUzNTU2KQorKysgVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5LXB5dGhv
bjMJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNyw3IEBAIFBZVEhPTjNfQ09NUEFUSUJMRV9E
SVJFQ1RPUklFUyA9IFsKICAgJ3dlYmtpdHB5LmJlbmNobWFya19ydW5uZXInLAogICAnd2Via2l0
cHkuYnJvd3NlcnBlcmZkYXNoJywKICAgJ3dlYmtpdHB5LmNvbW1vbicsCi0gICd3ZWJraXRweS5s
YXlvdXRfdGVzdHMuY29udHJvbGxlcnMnLAotICAnd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91
dF9wYWNrYWdlJywKLSAgJ3dlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMnLAotICAnd2Via2l0
cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMnLAotICAnd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdz
JywKKyAgJ3dlYmtpdHB5LmxheW91dF90ZXN0cycsCiAgICd3ZWJraXRweS5wZXJmb3JtYW5jZV90
ZXN0cycsCiAgICd3ZWJraXRweS5wb3J0JywKICAgJ3dlYmtpdHB5LnJlc3VsdHMnLApJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbWVzc2FnZV9wb29sLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL21lc3NhZ2VfcG9vbC5weQkocmV2aXNp
b24gMjUzNTU2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbWVzc2FnZV9wb29s
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xODUsMjAgKzE4NSwyMiBAQCBjbGFzcyBfTWVzc2FnZVBv
b2wob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIF9sb29wKHNl
bGYsIGJsb2NrKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAg
ICAgICAgICAgICBpZiBsZW4oc2VsZi5fd29ya2Vyc19zdG9wcGVkKSA9PSBsZW4oc2VsZi5fd29y
a2Vycyk6Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrID0gRmFsc2UKKyAgICAgICAgd2hpbGUg
VHJ1ZToKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl93b3JrZXJzX3N0b3BwZWQpID09IGxlbihz
ZWxmLl93b3JrZXJzKToKKyAgICAgICAgICAgICAgICBibG9jayA9IEZhbHNlCisKKyAgICAgICAg
ICAgIHRyeToKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5fbWVzc2FnZXNfdG9fbWFu
YWdlci5nZXQoYmxvY2spCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nX21lc3NhZ2VzKG1lc3Nh
Z2UubG9ncykKLSAgICAgICAgICAgICAgICBpZiBtZXNzYWdlLmZyb21fdXNlcjoKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fY2FsbGVyLmhhbmRsZShtZXNzYWdlLm5hbWUsIG1lc3NhZ2Uuc3Jj
LCAqbWVzc2FnZS5hcmdzKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAg
ICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2VsZiwgJ19oYW5kbGVfJyArIG1lc3NhZ2UubmFtZSkK
LSAgICAgICAgICAgICAgICBhc3NlcnQgbWV0aG9kLCAnYmFkIG1lc3NhZ2UgJXMnICUgcmVwciht
ZXNzYWdlKQotICAgICAgICAgICAgICAgIG1ldGhvZChtZXNzYWdlLnNyYywgKm1lc3NhZ2UuYXJn
cykKLSAgICAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OgotICAgICAgICAgICAgcGFzcworICAgICAg
ICAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ19tZXNzYWdlcyhtZXNzYWdlLmxvZ3MpCisgICAgICAgICAgICBpZiBt
ZXNzYWdlLmZyb21fdXNlcjoKKyAgICAgICAgICAgICAgICBzZWxmLl9jYWxsZXIuaGFuZGxlKG1l
c3NhZ2UubmFtZSwgbWVzc2FnZS5zcmMsICptZXNzYWdlLmFyZ3MpCisgICAgICAgICAgICAgICAg
Y29udGludWUKKyAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2VsZiwgJ19oYW5kbGVfJyAr
IG1lc3NhZ2UubmFtZSkKKyAgICAgICAgICAgIGFzc2VydCBtZXRob2QsICdiYWQgbWVzc2FnZSAl
cycgJSByZXByKG1lc3NhZ2UpCisgICAgICAgICAgICBtZXRob2QobWVzc2FnZS5zcmMsICptZXNz
YWdlLmFyZ3MpCiAKIAogY2xhc3MgV29ya2VyRXhjZXB0aW9uKEJhc2VFeGNlcHRpb24pOgpAQCAt
MjE1LDcgKzIxNywxMyBAQCBjbGFzcyBfTWVzc2FnZShvYmplY3QpOgogICAgICAgICBzZWxmLmxv
Z3MgPSBsb2dzCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnX01l
c3NhZ2Uoc3JjPSVzLCBuYW1lPSVzLCBhcmdzPSVzLCBmcm9tX3VzZXI9JXMsIGxvZ3M9JXMpJyAl
IChzZWxmLnNyYywgc2VsZi5uYW1lLCBzZWxmLmFyZ3MsIHNlbGYuZnJvbV91c2VyLCBzZWxmLmxv
Z3MpCisgICAgICAgIHJldHVybiAnX01lc3NhZ2Uoc3JjPXtzcmN9LCBuYW1lPXtuYW1lfSwgYXJn
cz17YXJnc30sIGZyb21fdXNlcj17ZnJvbV91c2VyfSwgbG9ncz17bG9nc30pJy5mb3JtYXQoCisg
ICAgICAgICAgICBzcmM9c2VsZi5zcmMsCisgICAgICAgICAgICBuYW1lPXNlbGYubmFtZSwKKyAg
ICAgICAgICAgIGFyZ3M9c2VsZi5hcmdzLAorICAgICAgICAgICAgZnJvbV91c2VyPXNlbGYuZnJv
bV91c2VyLAorICAgICAgICAgICAgbG9ncz1zZWxmLmxvZ3MsCisgICAgICAgICkKIAogCiBjbGFz
cyBfV29ya2VyKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKQEAgLTIyMyw3ICsyMzEsNyBAQCBj
bGFzcyBfV29ya2VyKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKICAgICAgICAgc3VwZXIoX1dv
cmtlciwgc2VsZikuX19pbml0X18oKQogICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAg
IHNlbGYud29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIKLSAgICAgICAgc2VsZi5uYW1lID0g
J3dvcmtlci8lZCcgJSB3b3JrZXJfbnVtYmVyCisgICAgICAgIHNlbGYubmFtZSA9ICd3b3JrZXIv
e30nLmZvcm1hdCh3b3JrZXJfbnVtYmVyKQogICAgICAgICBzZWxmLmxvZ19tZXNzYWdlcyA9IFtd
CiAgICAgICAgIHNlbGYubG9nX2xldmVsID0gbG9nX2xldmVsCiAgICAgICAgIHNlbGYuX3J1bm5p
bmdfaW5saW5lID0gcnVubmluZ19pbmxpbmUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3dhdmVkaWZmLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3dhdmVkaWZmLnB5CShyZXZpc2lvbiAyNTM1NTYpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi93YXZlZGlmZi5weQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBA
QCBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB3YXZlCiAKLWZyb20gaW8gaW1w
b3J0IEJ5dGVzSU8KK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBp
bXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8KIAogCiBjbGFzcyBXYXZlRGlmZihvYmplY3QpOgpAQCAt
MzUsMTIgKzM1LDEyIEBAIGNsYXNzIFdhdmVEaWZmKG9iamVjdCk6CiAgICAgX3RvbGVyYW5jZSA9
IDEKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbjEsIGluMik6Ci0gICAgICAgIGlmIGlzaW5z
dGFuY2UoaW4xLCBmaWxlKToKLSAgICAgICAgICAgIHdhdmVGaWxlMSA9IHdhdmUub3BlbihpbjEs
ICdyYicpCisgICAgICAgIGlmIGlzaW5zdGFuY2UoaW4xLCBzdHIpOgorICAgICAgICAgICAgd2F2
ZUZpbGUxID0gd2F2ZS5vcGVuKFN0cmluZ0lPKGluMSksICdyJykKICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgIHdhdmVGaWxlMSA9IHdhdmUub3BlbihCeXRlc0lPKGluMSksICdyYicpCi0gICAg
ICAgIGlmIGlzaW5zdGFuY2UoaW4yLCBmaWxlKToKLSAgICAgICAgICAgIHdhdmVGaWxlMSA9IHdh
dmUub3BlbihpbjIsICdyYicpCisgICAgICAgIGlmIGlzaW5zdGFuY2UoaW4yLCBzdHIpOgorICAg
ICAgICAgICAgd2F2ZUZpbGUyID0gd2F2ZS5vcGVuKFN0cmluZ0lPKGluMiksICdyJykKICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgIHdhdmVGaWxlMiA9IHdhdmUub3BlbihCeXRlc0lPKGluMiks
ICdyYicpCiAKQEAgLTY2LDEyICs2NiwxMiBAQCBjbGFzcyBXYXZlRGlmZihvYmplY3QpOgogCiAg
ICAgICAgIGFsbERhdGExID0gc2VsZi5fcmVhZFNhbXBsZXMod2F2ZUZpbGUxLCBzYW1wbGVXaWR0
aDEsIGZyYW1lQ291bnQxICogY2hhbm5lbENvdW50MSkKICAgICAgICAgYWxsRGF0YTIgPSBzZWxm
Ll9yZWFkU2FtcGxlcyh3YXZlRmlsZTIsIHNhbXBsZVdpZHRoMiwgZnJhbWVDb3VudDIgKiBjaGFu
bmVsQ291bnQyKQotICAgICAgICByZXN1bHRzID0gbWFwKHNlbGYuX2RpZmZTYW1wbGUsIGFsbERh
dGExLCBhbGxEYXRhMiwgeHJhbmdlKG1heChmcmFtZUNvdW50MSAqIGNoYW5uZWxDb3VudDEsIGZy
YW1lQ291bnQyICogY2hhbm5lbENvdW50MikpKQorICAgICAgICByZXN1bHRzID0gbGlzdChtYXAo
c2VsZi5fZGlmZlNhbXBsZSwgYWxsRGF0YTEsIGFsbERhdGEyLCByYW5nZShtYXgoZnJhbWVDb3Vu
dDEgKiBjaGFubmVsQ291bnQxLCBmcmFtZUNvdW50MiAqIGNoYW5uZWxDb3VudDIpKSkpCiAKICAg
ICAgICAgY3VtdWxhdGl2ZVNhbXBsZURpZmYgPSBzdW0ocmVzdWx0cykKLSAgICAgICAgZGlmZmVy
aW5nU2FtcGxlQ291bnQgPSBsZW4oZmlsdGVyKGJvb2wsIHJlc3VsdHMpKQorICAgICAgICBkaWZm
ZXJpbmdTYW1wbGVDb3VudCA9IGxlbihsaXN0KGZpbHRlcihib29sLCByZXN1bHRzKSkpCiAgICAg
ICAgIHNlbGYuX2ZpbGVzQXJlSWRlbnRpY2FsID0gbm90IGRpZmZlcmluZ1NhbXBsZUNvdW50Ci0g
ICAgICAgIHNlbGYuX2ZpbGVzQXJlSWRlbnRpY2FsV2l0aGluVG9sZXJhbmNlID0gbm90IGxlbihm
aWx0ZXIobGFtYmRhIHg6IHggPiBzZWxmLl90b2xlcmFuY2UsIHJlc3VsdHMpKQorICAgICAgICBz
ZWxmLl9maWxlc0FyZUlkZW50aWNhbFdpdGhpblRvbGVyYW5jZSA9IG5vdCBsZW4obGlzdChmaWx0
ZXIobGFtYmRhIHg6IHggPiBzZWxmLl90b2xlcmFuY2UsIHJlc3VsdHMpKSkKIAogICAgICAgICBp
ZiBkaWZmZXJpbmdTYW1wbGVDb3VudDoKICAgICAgICAgICAgIHNlbGYuX2RpZmYgKz0gJ1xuJwpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
c19pbnRlZ3JhdGlvbnRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkJKHJldmlz
aW9uIDI1MzU1NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsy
OSwxMCBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQganNvbgoraW1wb3J0IHN5cwogaW1wb3J0
IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBp
bXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0
Y2FwdHVyZSwgcGF0aAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNyYXNobG9nc191bml0
dGVzdCBpbXBvcnQgbWFrZV9tb2NrX2NyYXNoX3JlcG9ydF9kYXJ3aW4KIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CkBAIC0xNzYsNyArMTc4
LDggQEAgY2xhc3MgUnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgU3RyZWFtVAogCiAgICAgICAg
ICMgRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IHRlc3Qtd2Via2l0cHkgdG8gd29yawog
ICAgICAgICAjIHByb3Blcmx5IG9uIGN5Z3dpbiAoYnVnIDYzODQ2KS4KLSAgICAgICAgc2VsZi5z
aG91bGRfdGVzdF9wcm9jZXNzZXMgPSBub3Qgc2VsZi5fcGxhdGZvcm0uaXNfd2luKCkKKyAgICAg
ICAgIyBGSVhNRTogTXVsdGlwcm9jZXNzaW5nIGRvZXNuJ3QgZG8gd2VsbCB3aGVuIG5lc3RlZCBp
biBQeXRob24gMyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTI4
MCkKKyAgICAgICAgc2VsZi5zaG91bGRfdGVzdF9wcm9jZXNzZXMgPSBub3Qgc2VsZi5fcGxhdGZv
cm0uaXNfd2luKCkgYW5kIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMCkKIAogICAgIGRlZiB0ZXN0
X2Jhc2ljKHNlbGYpOgogICAgICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VfYXJncyh0ZXN0c19p
bmNsdWRlZD1UcnVlKQpAQCAtMTk1LDcgKzE5OCw3IEBAIGNsYXNzIFJ1blRlc3QodW5pdHRlc3Qu
VGVzdENhc2UsIFN0cmVhbVQKICAgICAgICAgb25lX2xpbmVfc3VtbWFyeSA9ICIlZCB0ZXN0cyBy
YW4gYXMgZXhwZWN0ZWQsICVkIGRpZG4ndDpcbiIgJSAoCiAgICAgICAgICAgICBkZXRhaWxzLmlu
aXRpYWxfcmVzdWx0cy50b3RhbCAtIGRldGFpbHMuaW5pdGlhbF9yZXN1bHRzLmV4cGVjdGVkX3Nr
aXBzIC0gbGVuKGRldGFpbHMuaW5pdGlhbF9yZXN1bHRzLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9u
YW1lKSwKICAgICAgICAgICAgIGxlbihkZXRhaWxzLmluaXRpYWxfcmVzdWx0cy51bmV4cGVjdGVk
X3Jlc3VsdHNfYnlfbmFtZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvbmVfbGluZV9zdW1t
YXJ5IGluIGxvZ2dpbmdfc3RyZWFtLmJ1Zmxpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShv
bmVfbGluZV9zdW1tYXJ5IGluIGxvZ2dpbmdfc3RyZWFtLmdldHZhbHVlKCkpCiAKICAgICAgICAg
IyBFbnN1cmUgdGhlIHJlc3VsdHMgd2VyZSBzdW1tYXJpemVkIHByb3Blcmx5LgogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRldGFpbHMuc3VtbWFyaXplZF9yZXN1bHRzWydudW1fcmVncmVzc2lv
bnMnXSwgZGV0YWlscy5leGl0X2NvZGUpCkBAIC0yMTksMTQgKzIyMiwxNCBAQCBjbGFzcyBSdW5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBTdHJlYW1UCiAgICAgICAgIGlmIHNlbGYuc2hvdWxkX3Rl
c3RfcHJvY2Vzc2VzOgogICAgICAgICAgICAgXywgcmVndWxhcl9vdXRwdXQsIF8gPSBsb2dnaW5n
X3J1bigKICAgICAgICAgICAgICAgICBbJy0tZGVidWctcnd0LWxvZ2dpbmcnLCAnLS1jaGlsZC1w
cm9jZXNzZXMnLCAnMiddLCBzaGFyZWRfcG9ydD1GYWxzZSkKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShhbnkoWydSdW5uaW5nIDIgJyBpbiBsaW5lIGZvciBsaW5lIGluIHJlZ3VsYXJfb3V0
cHV0LmJ1Zmxpc3RdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoWydSdW5uaW5n
IDIgJyBpbiBsaW5lIGZvciBsaW5lIGluIHJlZ3VsYXJfb3V0cHV0LmdldHZhbHVlKCkuc3BsaXRs
aW5lcygpXSkpCiAKICAgICBkZWYgdGVzdF9jaGlsZF9wcm9jZXNzZXNfbWluKHNlbGYpOgogICAg
ICAgICBpZiBzZWxmLnNob3VsZF90ZXN0X3Byb2Nlc3NlczoKICAgICAgICAgICAgIF8sIHJlZ3Vs
YXJfb3V0cHV0LCBfID0gbG9nZ2luZ19ydW4oCiAgICAgICAgICAgICAgICAgWyctLWRlYnVnLXJ3
dC1sb2dnaW5nJywgJy0tY2hpbGQtcHJvY2Vzc2VzJywgJzInLCAnLWknLCAncGFzc2VzL3Bhc3Nl
cycsICdwYXNzZXMnXSwKICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlLCBzaGFy
ZWRfcG9ydD1GYWxzZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoWydSdW5uaW5n
IDEgJyBpbiBsaW5lIGZvciBsaW5lIGluIHJlZ3VsYXJfb3V0cHV0LmJ1Zmxpc3RdKSkKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoWydSdW5uaW5nIDEgJyBpbiBsaW5lIGZvciBsaW5l
IGluIHJlZ3VsYXJfb3V0cHV0LmdldHZhbHVlKCkuc3BsaXRsaW5lcygpXSkpCiAKICAgICBkZWYg
dGVzdF9kcnlydW4oc2VsZik6CiAgICAgICAgIHRlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWyct
LWRyeS1ydW4nXSkKQEAgLTI3Miw3ICsyNzUsNyBAQCBjbGFzcyBSdW5UZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlLCBTdHJlYW1UCiAKICAgICAgICAgaWYgc2VsZi5zaG91bGRfdGVzdF9wcm9jZXNzZXM6
CiAgICAgICAgICAgICBfLCByZWd1bGFyX291dHB1dCwgXyA9IGxvZ2dpbmdfcnVuKFsnZmFpbHVy
ZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCcsICdwYXNzZXMvdGV4dC5odG1sJywgJy0tY2hpbGQt
cHJvY2Vzc2VzJywgJzInLCAnLS1mb3JjZSddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBzaGFyZWRf
cG9ydD1GYWxzZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoWydJbnRlcnJ1cHRl
ZCwgZXhpdGluZycgaW4gbGluZSBmb3IgbGluZSBpbiByZWd1bGFyX291dHB1dC5idWZsaXN0XSkp
CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KFsnSW50ZXJydXB0ZWQsIGV4aXRpbmcn
IGluIGxpbmUgZm9yIGxpbmUgaW4gcmVndWxhcl9vdXRwdXQuZ2V0dmFsdWUoKS5zcGxpdGxpbmVz
KCldKSkKIAogICAgIGRlZiB0ZXN0X25vX3Rlc3RzX2ZvdW5kKHNlbGYpOgogICAgICAgICBkZXRh
aWxzLCBlcnIsIF8gPSBsb2dnaW5nX3J1bihbJ3Jlc291cmNlcyddLCB0ZXN0c19pbmNsdWRlZD1U
cnVlKQpAQCAtNDc2LDEyICs0NzksNTcgQEAgY2xhc3MgUnVuVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSwgU3RyZWFtVAogICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0KQog
ICAgICAgICBmaWxlX2xpc3QgPSBob3N0LmZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcy5rZXlzKCkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXRhaWxzLmV4aXRfY29kZSwgMSkKLSAgICAgICAg
ZXhwZWN0ZWRfdG9rZW4gPSAnInVuZXhwZWN0ZWQiOnsidGV4dC1pbWFnZS1jaGVja3N1bS5odG1s
Ijp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJJTUFH
RStURVhUIiwiaW1hZ2VfZGlmZl9wZXJjZW50IjoxfSwibWlzc2luZ190ZXh0Lmh0bWwiOnsicmVw
b3J0IjoiTUlTU0lORyIsImV4cGVjdGVkIjoiUEFTUyIsImlzX21pc3NpbmdfdGV4dCI6dHJ1ZSwi
YWN0dWFsIjoiTUlTU0lORyJ9JwotICAgICAgICBqc29uX3N0cmluZyA9IGhvc3QuZmlsZXN5c3Rl
bS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5q
c29uJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoZXhwZWN0ZWRf
dG9rZW4pICE9IC0xKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9zdHJpbmcuZmluZCgn
Im51bV9yZWdyZXNzaW9ucyI6MScpICE9IC0xKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoanNv
bl9zdHJpbmcuZmluZCgnIm51bV9mbGFreSI6MCcpICE9IC0xKQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoanNvbl9zdHJpbmcuZmluZCgnIm51bV9taXNzaW5nIjoxJykgIT0gLTEpCisgICAgICAg
IGV4cGVjdGVkX2RpY3Rpb25hcnkgPSB7CisgICAgICAgICAgICAndmVyc2lvbic6IDQsCisgICAg
ICAgICAgICAnZml4YWJsZSc6IDMsCisgICAgICAgICAgICAnc2tpcHBlZCc6IDAsCisgICAgICAg
ICAgICAnbnVtX3Bhc3Nlcyc6IDAsCisgICAgICAgICAgICAnbnVtX2ZsYWt5JzogMCwKKyAgICAg
ICAgICAgICdudW1fbWlzc2luZyc6IDEsCisgICAgICAgICAgICAnbnVtX3JlZ3Jlc3Npb25zJzog
MSwKKyAgICAgICAgICAgICd1c2VzX2V4cGVjdGF0aW9uc19maWxlJzogVHJ1ZSwKKyAgICAgICAg
ICAgICdpbnRlcnJ1cHRlZCc6IEZhbHNlLAorICAgICAgICAgICAgJ2xheW91dF90ZXN0c19kaXIn
OiAnL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMnLAorICAgICAgICAgICAgJ2hhc19wcmV0dHlf
cGF0Y2gnOiBGYWxzZSwKKyAgICAgICAgICAgICdwaXhlbF90ZXN0c19lbmFibGVkJzogVHJ1ZSwK
KyAgICAgICAgICAgICdvdGhlcl9jcmFzaGVzJzoge30sCisgICAgICAgICAgICAnZGF0ZSc6ICcx
MDoxMEFNIG9uIERlY2VtYmVyIDEzLCAyMDE5JywKKyAgICAgICAgICAgICd0ZXN0cyc6IHsKKyAg
ICAgICAgICAgICAgICAnZmFpbHVyZXMnOiB7CisgICAgICAgICAgICAgICAgICAgICdleHBlY3Rl
ZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nX2ltYWdlLmh0bWwnOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGVjdGVkJzogJ1BBU1MgTUlTU0lORycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdHVhbCc6ICdNSVNTSU5HJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnaXNfbWlzc2luZ19pbWFnZSc6IFRydWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB9LCAndW5leHBlY3RlZCc6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nX3RleHQuaHRtbCc6IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAncmVwb3J0JzogJ01JU1NJTkcnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdleHBlY3RlZCc6ICdQQVNTJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnYWN0dWFsJzogJ01JU1NJTkcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdp
c19taXNzaW5nX3RleHQnOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwgJ3RleHQt
aW1hZ2UtY2hlY2tzdW0uaHRtbCc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVw
b3J0JzogJ1JFR1JFU1NJT04nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHBlY3Rl
ZCc6ICdQQVNTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0dWFsJzogJ0lNQUdF
K1RFWFQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbWFnZV9kaWZmX3BlcmNlbnQn
OiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgfQorICAgICAgICBh
Y3R1YWxfZGljdGlvbmFyeSA9IGpzb24ubG9hZHMoaG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4dF9m
aWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nKVtsZW4oJ0FE
RF9SRVNVTFRTKCcpOi0yXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IHNvcnRlZChsaXN0KGV4cGVjdGVkX2RpY3Rpb25hcnlbJ3Rlc3RzJ11bJ2ZhaWx1cmVzJ11bJ2V4
cGVjdGVkJ10pKSwKKyAgICAgICAgICAgIHNvcnRlZChsaXN0KGFjdHVhbF9kaWN0aW9uYXJ5Wyd0
ZXN0cyddWydmYWlsdXJlcyddWydleHBlY3RlZCddKSksCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNvcnRlZChsaXN0KGV4cGVjdGVkX2RpY3Rpb25h
cnlbJ3Rlc3RzJ11bJ2ZhaWx1cmVzJ11bJ3VuZXhwZWN0ZWQnXSkpLAorICAgICAgICAgICAgc29y
dGVkKGxpc3QoYWN0dWFsX2RpY3Rpb25hcnlbJ3Rlc3RzJ11bJ2ZhaWx1cmVzJ11bJ3VuZXhwZWN0
ZWQnXSkpLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfZGlj
dGlvbmFyeVsnbnVtX3JlZ3Jlc3Npb25zJ10sIGFjdHVhbF9kaWN0aW9uYXJ5WydudW1fcmVncmVz
c2lvbnMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9kaWN0aW9uYXJ5Wydu
dW1fZmxha3knXSwgYWN0dWFsX2RpY3Rpb25hcnlbJ251bV9mbGFreSddKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV4cGVjdGVkX2RpY3Rpb25hcnlbJ251bV9taXNzaW5nJ10sIGFjdHVhbF9k
aWN0aW9uYXJ5WydudW1fbWlzc2luZyddKQogCiAgICAgZGVmIHRlc3RfcGl4ZWxfdGVzdF9kaXJl
Y3RvcmllcyhzZWxmKToKICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKQEAgLTUxNyw3ICs1NjUs
MzkgQEAgY2xhc3MgUnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgU3RyZWFtVAogICAgIGRlZiB0
ZXN0X2NyYXNoX3dpdGhfc3RkZXJyKHNlbGYpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQog
ICAgICAgICBfLCByZWd1bGFyX291dHB1dCwgXyA9IGxvZ2dpbmdfcnVuKFsnZmFpbHVyZXMvdW5l
eHBlY3RlZC9jcmFzaC13aXRoLXN0ZGVyci5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhv
c3Q9aG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvc3QuZmlsZXN5c3RlbS5yZWFkX3Rl
eHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykuZmlu
ZCgneyJjcmFzaC13aXRoLXN0ZGVyci5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBl
Y3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJDUkFTSCIsImhhc19zdGRlcnIiOnRydWV9fScpICE9IC0x
KQorICAgICAgICBhY3R1YWxfZGljdGlvbmFyeSA9IGpzb24ubG9hZHMoaG9zdC5maWxlc3lzdGVt
LnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpz
b24nKVtsZW4oJ0FERF9SRVNVTFRTKCcpOi0yXSkKKyAgICAgICAgZXhwZWN0ZWRfZGljdGlvbmFy
eSA9IHsKKyAgICAgICAgICAgICd2ZXJzaW9uJzogNCwKKyAgICAgICAgICAgICdmaXhhYmxlJzog
MSwKKyAgICAgICAgICAgICdza2lwcGVkJzogMCwKKyAgICAgICAgICAgICdudW1fcGFzc2VzJzog
MCwKKyAgICAgICAgICAgICdudW1fZmxha3knOiAwLAorICAgICAgICAgICAgJ251bV9taXNzaW5n
JzogMCwKKyAgICAgICAgICAgICdudW1fcmVncmVzc2lvbnMnOiAxLAorICAgICAgICAgICAgJ3Vz
ZXNfZXhwZWN0YXRpb25zX2ZpbGUnOiBUcnVlLAorICAgICAgICAgICAgJ2ludGVycnVwdGVkJzog
RmFsc2UsCisgICAgICAgICAgICAnbGF5b3V0X3Rlc3RzX2Rpcic6ICcvdGVzdC5jaGVja291dC9M
YXlvdXRUZXN0cycsCisgICAgICAgICAgICAnaGFzX3ByZXR0eV9wYXRjaCc6IEZhbHNlLAorICAg
ICAgICAgICAgJ3BpeGVsX3Rlc3RzX2VuYWJsZWQnOiBUcnVlLAorICAgICAgICAgICAgJ290aGVy
X2NyYXNoZXMnOiB7fSwKKyAgICAgICAgICAgICdkYXRlJzogJzEwOjE4QU0gb24gRGVjZW1iZXIg
MTMsIDIwMTknLAorICAgICAgICAgICAgJ3Rlc3RzJzogeworICAgICAgICAgICAgICAgICdmYWls
dXJlcyc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3VuZXhwZWN0ZWQnOiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAnY3Jhc2gtd2l0aC1zdGRlcnIuaHRtbCc6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnaGFzX3N0ZGVycic6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3JlcG9ydCc6ICdSRUdSRVNTSU9OJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnZXhwZWN0ZWQnOiAnUEFTUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdHVh
bCc6ICdDUkFTSCcsCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICB9Cisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzb3J0ZWQobGlzdChleHBlY3Rl
ZF9kaWN0aW9uYXJ5Wyd0ZXN0cyddWydmYWlsdXJlcyddWyd1bmV4cGVjdGVkJ10pKSwKKyAgICAg
ICAgICAgIHNvcnRlZChsaXN0KGFjdHVhbF9kaWN0aW9uYXJ5Wyd0ZXN0cyddWydmYWlsdXJlcydd
Wyd1bmV4cGVjdGVkJ10pKSwKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rfbm9faW1hZ2VfZmFp
bHVyZV93aXRoX2ltYWdlX2RpZmYoc2VsZik6CiAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCkBA
IC03NDAsMTEgKzgyMCw2NiBAQCBjbGFzcyBSdW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBTdHJl
YW1UCiAgICAgZGVmIHRlc3RfcmVmdGVzdF9zaG91bGRfbm90X3VzZV9uYW1pbmdfY29udmVudGlv
bl9pZl9ub3RfbGlzdGVkX2luX3JlZnRlc3RsaXN0KHNlbGYpOgogICAgICAgICBob3N0ID0gTW9j
a0hvc3QoKQogICAgICAgICBfLCBlcnIsIF8gPSBsb2dnaW5nX3J1bihbJy0tbm8tc2hvdy1yZXN1
bHRzJywgJ3JlZnRlc3RzL2Zvby8nXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9zdD1ob3N0KQot
ICAgICAgICBqc29uX3N0cmluZyA9IGhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3Rt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJ1bmxpc3RlZHRlc3QuaHRtbCI6eyJyZXBvcnQi
OiJNSVNTSU5HIiwiZXhwZWN0ZWQiOiJQQVNTIiwiaXNfbWlzc2luZ190ZXh0Ijp0cnVlLCJhY3R1
YWwiOiJNSVNTSU5HIiwiaXNfbWlzc2luZ19pbWFnZSI6dHJ1ZX0nKSAhPSAtMSkKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJudW1fcmVncmVzc2lvbnMiOjQnKSAh
PSAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJudW1fZmxh
a3kiOjAnKSAhPSAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQo
JyJudW1fbWlzc2luZyI6MScpICE9IC0xKQorICAgICAgICBleHBlY3RlZF9kaWN0aW9uYXJ5ID0g
eworICAgICAgICAgICAgJ3ZlcnNpb24nOiA0LAorICAgICAgICAgICAgJ2ZpeGFibGUnOiA1LAor
ICAgICAgICAgICAgJ3NraXBwZWQnOiAwLAorICAgICAgICAgICAgJ251bV9wYXNzZXMnOiAzLAor
ICAgICAgICAgICAgJ251bV9mbGFreSc6IDAsCisgICAgICAgICAgICAnbnVtX21pc3NpbmcnOiAx
LAorICAgICAgICAgICAgJ251bV9yZWdyZXNzaW9ucyc6IDQsCisgICAgICAgICAgICAndXNlc19l
eHBlY3RhdGlvbnNfZmlsZSc6IFRydWUsCisgICAgICAgICAgICAnaW50ZXJydXB0ZWQnOiBGYWxz
ZSwKKyAgICAgICAgICAgICdsYXlvdXRfdGVzdHNfZGlyJzogJy90ZXN0LmNoZWNrb3V0L0xheW91
dFRlc3RzJywKKyAgICAgICAgICAgICdoYXNfcHJldHR5X3BhdGNoJzogRmFsc2UsCisgICAgICAg
ICAgICAncGl4ZWxfdGVzdHNfZW5hYmxlZCc6IFRydWUsCisgICAgICAgICAgICAnb3RoZXJfY3Jh
c2hlcyc6IHt9LAorICAgICAgICAgICAgJ2RhdGUnOiAnMTA6MjdBTSBvbiBEZWNlbWJlciAxMywg
MjAxOScsCisgICAgICAgICAgICAndGVzdHMnOiB7CisgICAgICAgICAgICAgICAgJ3JlZnRlc3Rz
JzogeworICAgICAgICAgICAgICAgICAgICAnZm9vJzogeworICAgICAgICAgICAgICAgICAgICAg
ICAgJ211bHRpcGxlLWJvdGgtZmFpbHVyZS5odG1sJzogeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdyZWZ0ZXN0X3R5cGUnOiBbJyE9JywgJz09J10sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3JlcG9ydCc6ICdSRUdSRVNTSU9OJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnZXhwZWN0ZWQnOiAnUEFTUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fj
dHVhbCc6ICdJTUFHRScsCisgICAgICAgICAgICAgICAgICAgICAgICB9LCAnbXVsdGlwbGUtbWF0
Y2gtZmFpbHVyZS5odG1sJzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWZ0ZXN0
X3R5cGUnOiBbJz09J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcG9ydCc6ICdS
RUdSRVNTSU9OJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwZWN0ZWQnOiAnUEFT
UycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdHVhbCc6ICdJTUFHRScsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2ltYWdlX2RpZmZfcGVyY2VudCc6IDEsCisgICAgICAg
ICAgICAgICAgICAgICAgICB9LCAnbXVsdGlwbGUtbWlzbWF0Y2gtZmFpbHVyZS5odG1sJzogewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWZ0ZXN0X3R5cGUnOiBbJyE9J10sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcG9ydCc6ICdSRUdSRVNTSU9OJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnZXhwZWN0ZWQnOiAnUEFTUycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2FjdHVhbCc6ICdJTUFHRScsCisgICAgICAgICAgICAgICAgICAgICAgICB9
LCAndGVzdC5odG1sJzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWZ0ZXN0X3R5
cGUnOiBbJz09J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcG9ydCc6ICdSRUdS
RVNTSU9OJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwZWN0ZWQnOiAnUEFTUycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdHVhbCc6ICdJTUFHRScsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2ltYWdlX2RpZmZfcGVyY2VudCc6IE5vbmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICB9LCAndW5saXN0ZWR0ZXN0Lmh0bWwnOiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3JlcG9ydCc6ICdNSVNTSU5HJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnZXhwZWN0ZWQnOiAnUEFTUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2FjdHVhbCc6ICdNSVNTSU5HJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfbWlz
c2luZ190ZXh0JzogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfbWlzc2lu
Z19pbWFnZSc6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICB9
CisgICAgICAgIGFjdHVhbF9kaWN0aW9uYXJ5ID0ganNvbi5sb2Fkcyhob3N0LmZpbGVzeXN0ZW0u
cmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNv
bicpW2xlbignQUREX1JFU1VMVFMoJyk6LTJdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBleHBlY3RlZF9kaWN0aW9uYXJ5Wyd0ZXN0cyddWydyZWZ0ZXN0cyddWydm
b28nXVsndW5saXN0ZWR0ZXN0Lmh0bWwnXSwKKyAgICAgICAgICAgIGFjdHVhbF9kaWN0aW9uYXJ5
Wyd0ZXN0cyddWydyZWZ0ZXN0cyddWydmb28nXVsndW5saXN0ZWR0ZXN0Lmh0bWwnXSwKKyAgICAg
ICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2RpY3Rpb25hcnlbJ251bV9y
ZWdyZXNzaW9ucyddLCBhY3R1YWxfZGljdGlvbmFyeVsnbnVtX3JlZ3Jlc3Npb25zJ10pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfZGljdGlvbmFyeVsnbnVtX2ZsYWt5J10sIGFj
dHVhbF9kaWN0aW9uYXJ5WydudW1fZmxha3knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
eHBlY3RlZF9kaWN0aW9uYXJ5WydudW1fbWlzc2luZyddLCBhY3R1YWxfZGljdGlvbmFyeVsnbnVt
X21pc3NpbmcnXSkKIAogICAgIGRlZiB0ZXN0X2FkZGl0aW9uYWxfcGxhdGZvcm1fZGlyZWN0b3J5
KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLWFkZGl0aW9u
YWwtcGxhdGZvcm0tZGlyZWN0b3J5JywgJy90bXAvZm9vJ10pKQpAQCAtOTQ4LDEyICsxMDgzLDE4
IEBAIGNsYXNzIEVuZFRvRW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgibXVsdGlwbGUtbWF0Y2gtc3VjY2Vzcy5odG1sIiBub3QgaW4ganNvblsidGVz
dHMiXVsicmVmdGVzdHMiXVsiZm9vIl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgibXVsdGlw
bGUtbWlzbWF0Y2gtc3VjY2Vzcy5odG1sIiBub3QgaW4ganNvblsidGVzdHMiXVsicmVmdGVzdHMi
XVsiZm9vIl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgibXVsdGlwbGUtYm90aC1zdWNjZXNz
Lmh0bWwiIG5vdCBpbiBqc29uWyJ0ZXN0cyJdWyJyZWZ0ZXN0cyJdWyJmb28iXSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChqc29uWyJ0ZXN0cyJdWyJyZWZ0ZXN0cyJdWyJmb28iXVsibXVsdGlw
bGUtbWF0Y2gtZmFpbHVyZS5odG1sIl0sCi0gICAgICAgICAgICB7ImV4cGVjdGVkIjogIlBBU1Mi
LCAiYWN0dWFsIjogIklNQUdFIiwgInJlZnRlc3RfdHlwZSI6IFsiPT0iXSwgImltYWdlX2RpZmZf
cGVyY2VudCI6IDEsICJyZXBvcnQiOiAiUkVHUkVTU0lPTiJ9KQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGpzb25bInRlc3RzIl1bInJlZnRlc3RzIl1bImZvbyJdWyJtdWx0aXBsZS1taXNtYXRj
aC1mYWlsdXJlLmh0bWwiXSwKLSAgICAgICAgICAgIHsiZXhwZWN0ZWQiOiAiUEFTUyIsICJhY3R1
YWwiOiAiSU1BR0UiLCAicmVmdGVzdF90eXBlIjogWyIhPSJdLCAicmVwb3J0IjogIlJFR1JFU1NJ
T04ifSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqc29uWyJ0ZXN0cyJdWyJyZWZ0ZXN0cyJd
WyJmb28iXVsibXVsdGlwbGUtYm90aC1mYWlsdXJlLmh0bWwiXSwKLSAgICAgICAgICAgIHsiZXhw
ZWN0ZWQiOiAiUEFTUyIsICJhY3R1YWwiOiAiSU1BR0UiLCAicmVmdGVzdF90eXBlIjogWyI9PSIs
ICIhPSJdLCAicmVwb3J0IjogIlJFR1JFU1NJT04ifSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIGpzb25bInRlc3RzIl1bInJlZnRlc3RzIl1bImZvbyJdWyJtdWx0aXBs
ZS1tYXRjaC1mYWlsdXJlLmh0bWwiXSwKKyAgICAgICAgICAgIHsiZXhwZWN0ZWQiOiAiUEFTUyIs
ICJhY3R1YWwiOiAiSU1BR0UiLCAicmVmdGVzdF90eXBlIjogWyI9PSJdLCAiaW1hZ2VfZGlmZl9w
ZXJjZW50IjogMSwgInJlcG9ydCI6ICJSRUdSRVNTSU9OIn0sCisgICAgICAgICkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGpzb25bInRlc3RzIl1bInJlZnRlc3RzIl1b
ImZvbyJdWyJtdWx0aXBsZS1taXNtYXRjaC1mYWlsdXJlLmh0bWwiXSwKKyAgICAgICAgICAgIHsi
ZXhwZWN0ZWQiOiAiUEFTUyIsICJhY3R1YWwiOiAiSU1BR0UiLCAicmVmdGVzdF90eXBlIjogWyIh
PSJdLCAicmVwb3J0IjogIlJFR1JFU1NJT04ifSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAganNvblsidGVzdHMiXVsicmVmdGVzdHMiXVsiZm9vIl1b
Im11bHRpcGxlLWJvdGgtZmFpbHVyZS5odG1sIl0sCisgICAgICAgICAgICB7ImV4cGVjdGVkIjog
IlBBU1MiLCAiYWN0dWFsIjogIklNQUdFIiwgInJlZnRlc3RfdHlwZSI6IHNvcnRlZChbIj09Iiwg
IiE9Il0pLCAicmVwb3J0IjogIlJFR1JFU1NJT04ifSwKKyAgICAgICAgKQogCiAKIGNsYXNzIFJl
YmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBTdHJlYW1UZXN0aW5nTWl4aW4pOgpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0
X3Rlc3RfZmluZGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X2ZpbmRlci5weQkocmV2aXNpb24gMjUz
NTU2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bGF5b3V0X3Rlc3RfZmluZGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAg
Y2xhc3MgTGF5b3V0VGVzdEZpbmRlcihvYmplY3QpOgogICAgICAgICAgICAgZXhjZXB0IElPRXJy
b3IgYXMgZToKICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVOT0VOVDoKICAg
ICAgICAgICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnJykKLSAgICAgICAgICAgICAgICAgICAg
X2xvZy5jcml0aWNhbCgnLS10ZXN0LWxpc3QgZmlsZSAiJXMiIG5vdCBmb3VuZCcgJSBmaWxlKQor
ICAgICAgICAgICAgICAgICAgICBfbG9nLmNyaXRpY2FsKCctLXRlc3QtbGlzdCBmaWxlICJ7fSIg
bm90IGZvdW5kJy5mb3JtYXQoZmlsZW5hbWVzKSkKICAgICAgICAgICAgICAgICByYWlzZQogICAg
ICAgICByZXR1cm4gdGVzdHMKIApAQCAtMTc2LDcgKzE3Niw3IEBAIGNsYXNzIExheW91dFRlc3RG
aW5kZXIob2JqZWN0KToKICAgICAgICAgICAgIGlmIHJvdW5kZWRfdGVzdHMgJSB0ZXN0X3NpemUg
IT0gMDoKICAgICAgICAgICAgICAgICByb3VuZGVkX3Rlc3RzID0gKG51bV90ZXN0cyArIHRlc3Rf
c2l6ZSAtIChudW1fdGVzdHMgJSB0ZXN0X3NpemUpKQogCi0gICAgICAgICAgICBjaHVua19sZW4g
PSByb3VuZGVkX3Rlc3RzIC8gdGVzdF9zaXplCisgICAgICAgICAgICBjaHVua19sZW4gPSByb3Vu
ZGVkX3Rlc3RzIC8vIHRlc3Rfc2l6ZQogICAgICAgICAgICAgc2xpY2Vfc3RhcnQgPSBjaHVua19s
ZW4gKiAoY2h1bmtfbnVtIC0gMSkKICAgICAgICAgICAgICMgSXQgZG9lcyBub3QgbWluZCBpZiB3
ZSBnbyBvdmVyIHRlc3Rfc2l6ZS4KIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CShyZXZpc2lv
biAyNTM1NTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy9tYW5hZ2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsOSArMTQ1LDkgQEAgY2xhc3Mg
TWFuYWdlcihvYmplY3QpOgogCiAgICAgZGVmIF9nZXRfdGVzdF9pbnB1dHMoc2VsZiwgdGVzdHNf
dG9fcnVuLCByZXBlYXRfZWFjaCwgaXRlcmF0aW9ucywgZGV2aWNlX3R5cGU9Tm9uZSk6CiAgICAg
ICAgIHRlc3RfaW5wdXRzID0gW10KLSAgICAgICAgZm9yIF8gaW4geHJhbmdlKGl0ZXJhdGlvbnMp
OgorICAgICAgICBmb3IgXyBpbiByYW5nZShpdGVyYXRpb25zKToKICAgICAgICAgICAgIGZvciB0
ZXN0IGluIHRlc3RzX3RvX3J1bjoKLSAgICAgICAgICAgICAgICBmb3IgXyBpbiB4cmFuZ2UocmVw
ZWF0X2VhY2gpOgorICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKHJlcGVhdF9lYWNoKToK
ICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbnB1dHMuYXBwZW5kKHNlbGYuX3Rlc3RfaW5wdXRf
Zm9yX2ZpbGUodGVzdCwgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpKQogICAgICAgICByZXR1cm4g
dGVzdF9pbnB1dHMKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5l
ci5weQkocmV2aXNpb24gMjUzNTU2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw3IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIGltcG9ydCB0aW1lCiAK
K2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2Rl
X2ZvcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IHRlc3Rf
cmVzdWx0X3dyaXRlcgogZnJvbSB3ZWJraXRweS5wb3J0LmRyaXZlciBpbXBvcnQgRHJpdmVySW5w
dXQsIERyaXZlck91dHB1dAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9y
dCB0ZXN0X2V4cGVjdGF0aW9ucwpAQCAtMjE0LDcgKzIxNSw3IEBAIGNsYXNzIFNpbmdsZVRlc3RS
dW5uZXIob2JqZWN0KToKICAgICAgICAgZWxpZiBkcml2ZXJfb3V0cHV0LmVycm9yOgogICAgICAg
ICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgb3V0cHV0IHN0ZGVyciBsaW5lczoiICUgKHNlbGYuX3dv
cmtlcl9uYW1lLCB0ZXN0bmFtZSkpCiAgICAgICAgIGZvciBsaW5lIGluIGRyaXZlcl9vdXRwdXQu
ZXJyb3Iuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiICAlcyIgJSBsaW5l
KQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiICB7fSIuZm9ybWF0KGRlY29kZV9mb3IobGluZSwg
c3RyKSkpCiAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCiAgICAgZGVmIF9jb21wYXJlX291dHB1
dChzZWxmLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LCBkcml2ZXJfb3V0cHV0KToKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5
b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0X3Jlc3VsdHNfZ2Vu
ZXJhdG9yLnB5CShyZXZpc2lvbiAyNTM1NTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvci5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQCBpbXBvcnQgbG9nZ2luZwogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19n
ZW5lcmF0b3IKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9l
eHBlY3RhdGlvbnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVz
dF9mYWlsdXJlcworZnJvbSB3ZWJraXRweS5jb21tb24uaXRlcmF0aW9uX2NvbXBhdGliaWxpdHkg
aW1wb3J0IGl0ZXJ2YWx1ZXMKIAogCiBjbGFzcyBKU09OTGF5b3V0UmVzdWx0c0dlbmVyYXRvcihq
c29uX3Jlc3VsdHNfZ2VuZXJhdG9yLkpTT05SZXN1bHRzR2VuZXJhdG9yKToKQEAgLTEzMiw3ICsx
MzMsNyBAQCBjbGFzcyBKU09OTGF5b3V0UmVzdWx0c0dlbmVyYXRvcihqc29uX3JlCiAgICAgICAg
ICAgICBzZWxmLkZJWEFCTEUpCiAKICAgICAgICAgbnVtX2ZpeGFibGUgPSAwCi0gICAgICAgIGZv
ciBleHBlY3RhdGlvbiBpbiBzZWxmLl9leHBlY3RhdGlvbnMuaXRlcnZhbHVlcygpOgorICAgICAg
ICBmb3IgZXhwZWN0YXRpb24gaW4gaXRlcnZhbHVlcyhzZWxmLl9leHBlY3RhdGlvbnMpOgogICAg
ICAgICAgICAgbnVtX2ZpeGFibGUgKz0gbGVuKGV4cGVjdGF0aW9uLm1vZGVsKCkuZ2V0X3Rlc3Rz
X3dpdGhfdGltZWxpbmUodGVzdF9leHBlY3RhdGlvbnMuTk9XKSkKIAogICAgICAgICBzZWxmLl9p
bnNlcnRfaXRlbV9pbnRvX3Jhd19saXN0KHJlc3VsdHNfZm9yX2J1aWxkZXIsIG51bV9maXhhYmxl
LCBzZWxmLkFMTF9GSVhBQkxFX0NPVU5UKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcmVzdWx0cy5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9yZXN1bHRzLnB5CShyZXZp
c2lvbiAyNTM1NTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2Rl
bHMvdGVzdF9yZXN1bHRzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNz
IFRlc3RSZXN1bHQob2JqZWN0KToKICAgICAgICAgc2VsZi5mYWlsdXJlcyA9IGZhaWx1cmVzIG9y
IFtdCiAgICAgICAgIHNlbGYudGVzdF9ydW5fdGltZSA9IHRlc3RfcnVuX3RpbWUgb3IgMCAgIyBU
aGUgdGltZSB0YWtlbiB0byBleGVjdXRlIHRoZSB0ZXN0IGl0c2VsZi4KICAgICAgICAgc2VsZi5o
YXNfc3RkZXJyID0gaGFzX3N0ZGVycgotICAgICAgICBzZWxmLnJlZnRlc3RfdHlwZSA9IHJlZnRl
c3RfdHlwZSBvciBbXQorICAgICAgICBzZWxmLnJlZnRlc3RfdHlwZSA9IHNvcnRlZChyZWZ0ZXN0
X3R5cGUgb3IgW10pCiAgICAgICAgIHNlbGYucGlkID0gcGlkCiAgICAgICAgIHNlbGYucmVmZXJl
bmNlcyA9IHJlZmVyZW5jZXMgb3IgW10KIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW0ucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW0ucHkJKHJl
dmlzaW9uIDI1MzU1NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Zp
ZXdzL21ldGVyZWRfc3RyZWFtLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAg
Y2xhc3MgTWV0ZXJlZFN0cmVhbShvYmplY3QpOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAg
IHNlbGYuX3N0cmVhbS53cml0ZSh0aW1lc3RhbXBfc3RyaW5nICsgdHh0KQorICAgICAgICAgICAg
c2VsZi5fc3RyZWFtLmZsdXNoKCkKICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoK
ICAgICAgICAgICAgIG91dHB1dCA9ICcnCiAgICAgICAgICAgICBmb3IgYyBpbiB0aW1lc3RhbXBf
c3RyaW5nICsgdHh0OgpAQCAtMTE3LDYgKzExOCw3IEBAIGNsYXNzIE1ldGVyZWRTdHJlYW0ob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAg
ICAgICAgICAgICAgICBvdXRwdXQgKz0gJz8nCiAgICAgICAgICAgICBzZWxmLl9zdHJlYW0ud3Jp
dGUob3V0cHV0KQorICAgICAgICAgICAgc2VsZi5fc3RyZWFtLmZsdXNoKCkKIAogICAgIGRlZiB3
cml0ZWxuKHNlbGYsIHR4dCwgbm93PU5vbmUsIHBpZD1Ob25lKToKICAgICAgICAgc2VsZi53cml0
ZShzZWxmLl9lbnN1cmVfbmV3bGluZSh0eHQpLCBub3csIHBpZCkKQEAgLTEyNSw2ICsxMjcsNyBA
QCBjbGFzcyBNZXRlcmVkU3RyZWFtKG9iamVjdCk6CiAgICAgICAgIG51bV9jaGFycyA9IGxlbihz
ZWxmLl9sYXN0X3BhcnRpYWxfbGluZSkKICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlKHNlbGYu
X2VyYXN1cmUoc2VsZi5fbGFzdF9wYXJ0aWFsX2xpbmUpKQogICAgICAgICBzZWxmLl9sYXN0X3Bh
cnRpYWxfbGluZSA9ICcnCisgICAgICAgIHNlbGYuX3N0cmVhbS5mbHVzaCgpCiAKICAgICBkZWYg
Zmx1c2goc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2xhc3RfcGFydGlhbF9saW5lOgpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmcucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJp
bnRpbmcucHkJKHJldmlzaW9uIDI1MzU1NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMzksNyArMjM5
LDcgQEAgY2xhc3MgUHJpbnRlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9wcmludF9kZWJ1Zygi
VGltZSB0byBwcm9jZXNzIHNsb3dlc3Qgc3ViZGlyZWN0b3JpZXM6IikKICAgICAgICAgbWluX3Nl
Y29uZHNfdG9fcHJpbnQgPSAxMAogICAgICAgICBmb3IgdGltaW5nIGluIHRpbWluZ3M6Ci0gICAg
ICAgICAgICBpZiB0aW1pbmdbMF0gPiBtaW5fc2Vjb25kc190b19wcmludDoKKyAgICAgICAgICAg
IGlmIHRpbWluZ1sxXSA+IG1pbl9zZWNvbmRzX3RvX3ByaW50OgogICAgICAgICAgICAgICAgIHNl
bGYuX3ByaW50X2RlYnVnKCIgICVzIHRvb2sgJXMgc2Vjb25kcyB0byBydW4gJXMgdGVzdHMuIiAl
IHRpbWluZykKICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoIiIpCiAKQEAgLTI1NCwxMCArMjU0
LDEwIEBAIGNsYXNzIFByaW50ZXIob2JqZWN0KToKICAgICAgICAgcGVyY2VudGlsZTk5ID0gdGlt
aW5nc1tpbnQoLjk5ICogbnVtX3Rlc3RzKV0KIAogICAgICAgICBpZiBudW1fdGVzdHMgJSAyID09
IDE6Ci0gICAgICAgICAgICBtZWRpYW4gPSB0aW1pbmdzWygobnVtX3Rlc3RzIC0gMSkgLyAyKSAt
IDFdCisgICAgICAgICAgICBtZWRpYW4gPSB0aW1pbmdzWyhudW1fdGVzdHMgLSAxKSAvLyAyIC0g
MV0KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvd2VyID0gdGltaW5nc1tudW1fdGVzdHMg
LyAyIC0gMV0KLSAgICAgICAgICAgIHVwcGVyID0gdGltaW5nc1tudW1fdGVzdHMgLyAyXQorICAg
ICAgICAgICAgbG93ZXIgPSB0aW1pbmdzW251bV90ZXN0cyAvLyAyIC0gMV0KKyAgICAgICAgICAg
IHVwcGVyID0gdGltaW5nc1tudW1fdGVzdHMgLy8gMl0KICAgICAgICAgICAgIG1lZGlhbiA9IChm
bG9hdChsb3dlciArIHVwcGVyKSkgLyAyCiAKICAgICAgICAgbWVhbiA9IHN1bSh0aW1pbmdzKSAv
IG51bV90ZXN0cwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5CShyZXZp
c2lvbiAyNTM1NTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIERhcndpblBvcnQoQXBwbGVQb3J0
KToKICAgICAgICAgcmV0dXJuIHNlbGYuaG9zdC5maWxlc3lzdGVtLmpvaW4obG9nX2RpcmVjdG9y
eSwgJ0NyYXNoUmVwb3J0ZXInKQogCiAgICAgZGVmIF9tZXJnZV9jcmFzaF9sb2dzKHNlbGYsIGxv
Z3MsIG5ld19sb2dzLCBjcmFzaGVkX3Byb2Nlc3Nlcyk6Ci0gICAgICAgIGZvciB0ZXN0LCBjcmFz
aF9sb2cgaW4gbmV3X2xvZ3MuaXRlcml0ZW1zKCk6CisgICAgICAgIGZvciB0ZXN0LCBjcmFzaF9s
b2cgaW4gbmV3X2xvZ3MuaXRlbXMoKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAg
ICBpZiB0ZXN0LnNwbGl0KCctJylbMF0gPT0gJ1NhbmRib3gnOgogICAgICAgICAgICAgICAgICAg
ICBwcm9jZXNzX25hbWUgPSB0ZXN0LnNwbGl0KCctJylbMV0KSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9kZXZpY2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2RldmljZS5weQkocmV2aXNpb24gMjUzNTU2KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2RldmljZS5weQkod29ya2luZyBjb3B5KQpAQCAtMTE2LDMgKzExNiw2IEBA
IGNsYXNzIERldmljZShvYmplY3QpOgogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAg
ICByZXR1cm4gdSd7fScuZm9ybWF0KHNlbGYucGxhdGZvcm1fZGV2aWNlKQorCisgICAgZGVmIF9f
aGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLnVkaWQpCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZV9wb3J0LnB5CShyZXZpc2lvbiAyNTM1NTYp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgRGV2aWNlUG9ydChEYXJ3aW5Qb3J0KToKICAg
ICAgICAgICAgIF9sb2cuZGVidWcoJ1NraXBwaW5nIGluc3RhbGxhdGlvbicpCiAgICAgICAgICAg
ICByZXR1cm4KIAotICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9jZXNzZXMo
KSk6CisgICAgICAgIGZvciBpIGluIHJhbmdlKHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkpOgogICAg
ICAgICAgICAgZGV2aWNlID0gc2VsZi50YXJnZXRfaG9zdChpKQogICAgICAgICAgICAgX2xvZy5k
ZWJ1Zyh1J0luc3RhbGxpbmcgdG8ge30nLmZvcm1hdChkZXZpY2UpKQogICAgICAgICAgICAgIyBX
aXRob3V0IHBhc3NpbmcgRFlMRF9MSUJSQVJZX1BBVEgsIGxpYldlYkNvcmVUZXN0U3VwcG9ydCBj
YW5ub3QgYmUgbG9hZGVkIGFuZCBEUlQvV0tUUiB3aWxsIGNyYXNoIHByZS1sYXVuY2gsCkBAIC0x
ODYsNyArMTg2LDcgQEAgY2xhc3MgRGV2aWNlUG9ydChEYXJ3aW5Qb3J0KToKIAogICAgICAgICBz
ZWxmLl9pbnN0YWxsKCkKIAotICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9j
ZXNzZXMoKSk6CisgICAgICAgIGZvciBpIGluIHJhbmdlKHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkp
OgogICAgICAgICAgICAgaG9zdCA9IHNlbGYudGFyZ2V0X2hvc3QoaSkKICAgICAgICAgICAgIGhv
c3QucHJlcGFyZV9mb3JfdGVzdGluZygKICAgICAgICAgICAgICAgICBzZWxmLnBvcnRzX3RvX2Zv
cndhcmQoKSwKQEAgLTIwMSw3ICsyMDEsNyBAQCBjbGFzcyBEZXZpY2VQb3J0KERhcndpblBvcnQp
OgogICAgICAgICAjIEJlc3QgZWZmb3J0IHRvIGxldCBldmVyeSBkZXZpY2UgdGVhcmRvd24gYmVm
b3JlIHRocm93aW5nIGFueSBleGNlcHRpb25zIGhlcmUuCiAgICAgICAgICMgRmFpbHVyZSB0byB0
ZWFyZG93biBkZXZpY2VzIGNhbiBsZWF2ZSB0aGluZ3MgaW4gYSBiYWQgc3RhdGUuCiAgICAgICAg
IGV4Y2VwdGlvbl9saXN0ID0gW10KLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hpbGRf
cHJvY2Vzc2VzKCkpOgorICAgICAgICBmb3IgaSBpbiByYW5nZShzZWxmLmNoaWxkX3Byb2Nlc3Nl
cygpKToKICAgICAgICAgICAgIGRldmljZSA9IHNlbGYudGFyZ2V0X2hvc3QoaSkKICAgICAgICAg
ICAgIGlmIG5vdCBkZXZpY2U6CiAgICAgICAgICAgICAgICAgY29udGludWUKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQkocmV2aXNpb24gMjUzNTU2KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQkod29ya2luZyBjb3B5KQpAQCAtMzksNiAr
MzksNyBAQCBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogZnJvbSBvcy5wYXRo
IGltcG9ydCBub3JtcGF0aAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRo
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucHJvZmlsZXIgaW1wb3J0IFByb2ZpbGVyRmFj
dG9yeQorZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBl
bmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNvZGVfZm9yCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKF9fbmFtZV9fKQpAQCAtODYsMTEgKzg3LDExIEBAIGNsYXNzIERyaXZlck91dHB1dChvYmpl
Y3QpOgogICAgICAgICAgICAgdGVzdF90aW1lPTAsIG1lYXN1cmVtZW50cz1Ob25lLCB0aW1lb3V0
PUZhbHNlLCBlcnJvcj0nJywgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Jz8/JywKICAgICAgICAgICAg
IGNyYXNoZWRfcGlkPU5vbmUsIGNyYXNoX2xvZz1Ob25lLCBwaWQ9Tm9uZSk6CiAgICAgICAgICMg
RklYTUU6IEFyZ3MgY291bGQgYmUgcmVuYW1lZCB0byBiZXR0ZXIgY2xhcmlmeSB3aGF0IHRoZXkg
ZG8uCi0gICAgICAgIHNlbGYudGV4dCA9IHRleHQKKyAgICAgICAgc2VsZi50ZXh0ID0gZGVjb2Rl
X2Zvcih0ZXh0LCBzdHIpIGlmIHRleHQgZWxzZSBOb25lCiAgICAgICAgIHNlbGYuaW1hZ2UgPSBp
bWFnZSAgIyBNYXkgYmUgZW1wdHktc3RyaW5nIGlmIHRoZSB0ZXN0IGNyYXNoZXMuCiAgICAgICAg
IHNlbGYuaW1hZ2VfaGFzaCA9IGltYWdlX2hhc2gKICAgICAgICAgc2VsZi5pbWFnZV9kaWZmID0g
Tm9uZSAgIyBpbWFnZV9kaWZmIGdldHMgZmlsbGVkIGluIGFmdGVyIGNvbnN0cnVjdGlvbi4KLSAg
ICAgICAgc2VsZi5hdWRpbyA9IGF1ZGlvICAjIEJpbmFyeSBmb3JtYXQgaXMgcG9ydC1kZXBlbmRl
bnQuCisgICAgICAgIHNlbGYuYXVkaW8gPSBlbmNvZGVfaWZfbmVjZXNzYXJ5KGF1ZGlvKSBpZiBh
dWRpbyBlbHNlIE5vbmUgICMgQmluYXJ5IGZvcm1hdCBpcyBwb3J0LWRlcGVuZGVudC4KICAgICAg
ICAgc2VsZi5jcmFzaCA9IGNyYXNoCiAgICAgICAgIHNlbGYuY3Jhc2hlZF9wcm9jZXNzX25hbWUg
PSBjcmFzaGVkX3Byb2Nlc3NfbmFtZQogICAgICAgICBzZWxmLmNyYXNoZWRfcGlkID0gY3Jhc2hl
ZF9waWQKQEAgLTE2MSw3ICsxNjIsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAg
IyBzdGRlcnIgb3V0cHV0LCBhcyB3ZWxsIGFzIGlmIHdlJ3ZlIHNlZW4gI0VPRiBvbiB0aGlzIGRy
aXZlciBpbnN0YW5jZS4KICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHJlbW92
ZSBfcmVhZF9maXJzdF9ibG9jayBhbmQgX3JlYWRfb3B0aW9uYWxfaW1hZ2VfYmxvY2sgYW5kCiAg
ICAgICAgICMgaW5zdGVhZCBzY29wZSB0aGVzZSBsb2NhbGx5IGluIHJ1bl90ZXN0LgotICAgICAg
ICBzZWxmLmVycm9yX2Zyb21fdGVzdCA9IHN0cigpCisgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90
ZXN0ID0gJycKICAgICAgICAgc2VsZi5lcnJfc2Vlbl9lb2YgPSBGYWxzZQogCiAgICAgICAgIHNl
bGYuX3NlcnZlcl9uYW1lID0gc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpCkBAIC0xOTYsNyArMTk3
LDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgIHRlc3RfYmVnaW5fdGltZSA9IHRp
bWUudGltZSgpCiAgICAgICAgIHNlbGYuX2RyaXZlcl90aW1lZF9vdXQgPSBGYWxzZQogICAgICAg
ICBzZWxmLl9jcmFzaF9yZXBvcnRfZnJvbV9kcml2ZXIgPSBOb25lCi0gICAgICAgIHNlbGYuZXJy
b3JfZnJvbV90ZXN0ID0gc3RyKCkKKyAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgPSAnJwog
ICAgICAgICBzZWxmLmVycl9zZWVuX2VvZiA9IEZhbHNlCiAKICAgICAgICAgY29tbWFuZCA9IHNl
bGYuX2NvbW1hbmRfZnJvbV9kcml2ZXJfaW5wdXQoZHJpdmVyX2lucHV0KQpAQCAtMjE0LDYgKzIx
NSw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vz
cy53cml0ZShjb21tYW5kKQogICAgICAgICB0ZXh0LCBhdWRpbyA9IHNlbGYuX3JlYWRfZmlyc3Rf
YmxvY2soZGVhZGxpbmUsIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpICAjIEZpcnN0IGJsb2NrIGlz
IGVpdGhlciB0ZXh0IG9yIGF1ZGlvCiAgICAgICAgIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCA9
IHNlbGYuX3JlYWRfb3B0aW9uYWxfaW1hZ2VfYmxvY2soZGVhZGxpbmUsIGRyaXZlcl9pbnB1dC50
ZXN0X25hbWUpICAjIFRoZSBzZWNvbmQgKG9wdGlvbmFsKSBibG9jayBpcyBpbWFnZSBkYXRhLgor
ICAgICAgICB0ZXh0ID0gZGVjb2RlX2Zvcih0ZXh0LCBzdHIpCiAKICAgICAgICAgY3Jhc2hlZCA9
IHNlbGYuaGFzX2NyYXNoZWQoKQogICAgICAgICB0aW1lZF9vdXQgPSBzZWxmLl9zZXJ2ZXJfcHJv
Y2Vzcy50aW1lZF9vdXQKQEAgLTIyNyw5ICsyMjksOSBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToK
ICAgICAgICAgICAgICMgSW4gdGhlIHRpbWVvdXQgY2FzZSwgd2Uga2lsbCB0aGUgaHVuZyBwcm9j
ZXNzIGFzIHdlbGwuCiAgICAgICAgICAgICBvdXQsIGVyciA9IHNlbGYuX3NlcnZlcl9wcm9jZXNz
LnN0b3Aoc2VsZi5fcG9ydC5kcml2ZXJfc3RvcF90aW1lb3V0KCkgaWYgc3RvcF93aGVuX2RvbmUg
ZWxzZSAwLjApCiAgICAgICAgICAgICBpZiBvdXQ6Ci0gICAgICAgICAgICAgICAgdGV4dCArPSBv
dXQKKyAgICAgICAgICAgICAgICB0ZXh0ICs9IGRlY29kZV9mb3Iob3V0LCBzdHIpCiAgICAgICAg
ICAgICBpZiBlcnI6Ci0gICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZXJy
CisgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZGVjb2RlX2ZvcihlcnIs
IHN0cikKICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzID0gTm9uZQogCiAgICAgICAg
IGNyYXNoX2xvZyA9IE5vbmUKQEAgLTI4MCwxMCArMjgyLDEwIEBAIGNsYXNzIERyaXZlcihvYmpl
Y3QpOgogICAgICAgICBjaGlsZF9wcm9jZXNzZXMgPSBkZWZhdWx0ZGljdChsaXN0KQogCiAgICAg
ICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBtID0gcmUu
bWF0Y2goJ14oW146XSspOiAoWzAtOV0rKSQnLCBsaW5lKQorICAgICAgICAgICAgbSA9IHJlLm1h
dGNoKGInXihbXjpdKyk6IChbMC05XSspJCcsIGxpbmUpCiAgICAgICAgICAgICBpZiBtOgotICAg
ICAgICAgICAgICAgIHByb2Nlc3NfbmFtZSA9IG0uZ3JvdXAoMSkKLSAgICAgICAgICAgICAgICBw
cm9jZXNzX2lkID0gbS5ncm91cCgyKQorICAgICAgICAgICAgICAgIHByb2Nlc3NfbmFtZSA9IGRl
Y29kZV9mb3IobS5ncm91cCgxKSwgc3RyKQorICAgICAgICAgICAgICAgIHByb2Nlc3NfaWQgPSBk
ZWNvZGVfZm9yKG0uZ3JvdXAoMiksIHN0cikKICAgICAgICAgICAgICAgICBjaGlsZF9wcm9jZXNz
ZXNbcHJvY2Vzc19uYW1lXS5hcHBlbmQocHJvY2Vzc19pZCkKIAogICAgICAgICByZXR1cm4gY2hp
bGRfcHJvY2Vzc2VzCkBAIC01NDAsMTAgKzU0MiwxMCBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToK
ICAgICAgICAgcmV0dXJuIGNtZAogCiAgICAgZGVmIF9jaGVja19mb3JfZHJpdmVyX3RpbWVvdXQo
c2VsZiwgb3V0X2xpbmUpOgotICAgICAgICBpZiBvdXRfbGluZS5zdGFydHN3aXRoKCIjUElEIFVO
UkVTUE9OU0lWRSAtICIpOgotICAgICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgnI1BJRCBVTlJF
U1BPTlNJVkUgLSAoXFMrKScsIG91dF9saW5lKQotICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19u
YW1lID0gbWF0Y2guZ3JvdXAoMSkgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2VzcycKLSAgICAgICAg
ICAgIG1hdGNoID0gcmUuc2VhcmNoKCdwaWQgKFxkKyknLCBvdXRfbGluZSkKKyAgICAgICAgaWYg
b3V0X2xpbmUuc3RhcnRzd2l0aChiIiNQSUQgVU5SRVNQT05TSVZFIC0gIik6CisgICAgICAgICAg
ICBtYXRjaCA9IHJlLm1hdGNoKGInI1BJRCBVTlJFU1BPTlNJVkUgLSAoXFMrKScsIG91dF9saW5l
KQorICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19uYW1lID0gZGVjb2RlX2ZvcihtYXRjaC5ncm91
cCgxKSwgc3RyKSBpZiBtYXRjaCBlbHNlICdXZWJQcm9jZXNzJworICAgICAgICAgICAgbWF0Y2gg
PSByZS5zZWFyY2goYidwaWQgKFxkKyknLCBvdXRfbGluZSkKICAgICAgICAgICAgIGNoaWxkX3By
b2Nlc3NfcGlkID0gaW50KG1hdGNoLmdyb3VwKDEpKSBpZiBtYXRjaCBlbHNlIE5vbmUKICAgICAg
ICAgICAgIGVycl9saW5lID0gJ1dhaXQgb24gbm90aWZ5RG9uZSB0aW1lZCBvdXQsIHByb2Nlc3Mg
JyArIGNoaWxkX3Byb2Nlc3NfbmFtZSArICcgcGlkID0gJyArIHN0cihjaGlsZF9wcm9jZXNzX3Bp
ZCkKICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9IGVycl9saW5lCkBAIC01NTQs
MzIgKzU1NiwzMiBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuX2Ry
aXZlcl90aW1lZF9vdXQgPSBUcnVlCiAKICAgICBkZWYgX2NoZWNrX2Zvcl9hZGRyZXNzX3Nhbml0
aXplcl92aW9sYXRpb24oc2VsZiwgZXJyb3JfbGluZSk6Ci0gICAgICAgIGlmICJFUlJPUjogQWRk
cmVzc1Nhbml0aXplciIgaW4gZXJyb3JfbGluZToKKyAgICAgICAgaWYgYiJFUlJPUjogQWRkcmVz
c1Nhbml0aXplciIgaW4gZXJyb3JfbGluZToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAg
ICBkZWYgX2NoZWNrX2Zvcl9kcml2ZXJfY3Jhc2hfb3JfdW5yZXNwb25zaXZlbmVzcyhzZWxmLCBl
cnJvcl9saW5lKToKLSAgICAgICAgY3Jhc2hlZF9jaGVjayA9IGVycm9yX2xpbmUucnN0cmlwKCdc
clxuJykKLSAgICAgICAgaWYgY3Jhc2hlZF9jaGVjayA9PSAiI0NSQVNIRUQiOgorICAgICAgICBj
cmFzaGVkX2NoZWNrID0gZXJyb3JfbGluZS5yc3RyaXAoYidcclxuJykKKyAgICAgICAgaWYgY3Jh
c2hlZF9jaGVjayA9PSBiIiNDUkFTSEVEIjoKICAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJv
Y2Vzc19uYW1lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucHJvY2Vzc19uYW1lKCkKICAgICAgICAg
ICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gc2VsZi5fc2VydmVyX3Byb2Nlc3Muc3lzdGVtX3BpZCgp
CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBlbGlmIGVycm9yX2xpbmUuc3RhcnRz
d2l0aCgiI0NSQVNIRUQgLSAiKToKLSAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2goJyNDUkFT
SEVEIC0gKFxTKyknLCBlcnJvcl9saW5lKQotICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9j
ZXNzX25hbWUgPSBtYXRjaC5ncm91cCgxKSBpZiBtYXRjaCBlbHNlICdXZWJQcm9jZXNzJwotICAg
ICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goJ3BpZCAoXGQrKScsIGVycm9yX2xpbmUpCisgICAg
ICAgIGVsaWYgZXJyb3JfbGluZS5zdGFydHN3aXRoKGIiI0NSQVNIRUQgLSAiKToKKyAgICAgICAg
ICAgIG1hdGNoID0gcmUubWF0Y2goYicjQ1JBU0hFRCAtIChcUyspJywgZXJyb3JfbGluZSkKKyAg
ICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gZGVjb2RlX2ZvcihtYXRjaC5n
cm91cCgxKSwgc3RyKSBpZiBtYXRjaCBlbHNlICdXZWJQcm9jZXNzJworICAgICAgICAgICAgbWF0
Y2ggPSByZS5zZWFyY2goYidwaWQgKFxkKyknLCBlcnJvcl9saW5lKQogICAgICAgICAgICAgc2Vs
Zi5fY3Jhc2hlZF9waWQgPSBpbnQobWF0Y2guZ3JvdXAoMSkpIGlmIG1hdGNoIGVsc2UgTm9uZQog
ICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMgY3Jhc2gsIHBpZCA9ICVzJyAlIChzZWxmLl9jcmFz
aGVkX3Byb2Nlc3NfbmFtZSwgc3RyKHNlbGYuX2NyYXNoZWRfcGlkKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQotICAgICAgICBlbGlmIGVycm9yX2xpbmUuc3RhcnRzd2l0aCgiI1BST0NFU1Mg
VU5SRVNQT05TSVZFIC0gIik6Ci0gICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKCcjUFJPQ0VT
UyBVTlJFU1BPTlNJVkUgLSAoXFMrKScsIGVycm9yX2xpbmUpCi0gICAgICAgICAgICBjaGlsZF9w
cm9jZXNzX25hbWUgPSBtYXRjaC5ncm91cCgxKSBpZiBtYXRjaCBlbHNlICdXZWJQcm9jZXNzJwot
ICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goJ3BpZCAoXGQrKScsIGVycm9yX2xpbmUpCisg
ICAgICAgIGVsaWYgZXJyb3JfbGluZS5zdGFydHN3aXRoKGIiI1BST0NFU1MgVU5SRVNQT05TSVZF
IC0gIik6CisgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKGInI1BST0NFU1MgVU5SRVNQT05T
SVZFIC0gKFxTKyknLCBlcnJvcl9saW5lKQorICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19uYW1l
ID0gZGVjb2RlX2ZvcihtYXRjaC5ncm91cCgxKSwgc3RyKSBpZiBtYXRjaCBlbHNlICdXZWJQcm9j
ZXNzJworICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYidwaWQgKFxkKyknLCBlcnJvcl9s
aW5lKQogICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19waWQgPSBpbnQobWF0Y2guZ3JvdXAoMSkp
IGlmIG1hdGNoIGVsc2UgTm9uZQogICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMgaXMgdW5yZXNw
b25zaXZlLCBwaWQgPSAlcycgJSAoY2hpbGRfcHJvY2Vzc19uYW1lLCBzdHIoY2hpbGRfcHJvY2Vz
c19waWQpKSkKICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl90aW1lZF9vdXQgPSBUcnVlCiAgICAg
ICAgICAgICBpZiBjaGlsZF9wcm9jZXNzX3BpZDoKICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0
LnNhbXBsZV9wcm9jZXNzKGNoaWxkX3Byb2Nlc3NfbmFtZSwgY2hpbGRfcHJvY2Vzc19waWQsIHNl
bGYuX3RhcmdldF9ob3N0KQotICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZXJy
b3JfbGluZQorICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZGVjb2RlX2Zvcihl
cnJvcl9saW5lLCBzdHIpCiAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy53cml0ZSgn
I1NBTVBMRSBGSU5JU0hFRFxuJywgVHJ1ZSkgICMgTXVzdCBiZSBhYmxlIHRvIGlnbm9yZSBhIGJy
b2tlbiBwaXBlIGhlcmUsIHRhcmdldCBwcm9jZXNzIG1heSBhbHJlYWR5IGJlIGNsb3NlZC4KICAg
ICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBzZWxmLmhhc19jcmFzaGVkKCkK
QEAgLTYyOCwxMiArNjMwLDEyIEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICAjIHJl
dHVybnMgKGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCkKICAgICAgICAgYmxvY2sgPSBzZWxmLl9y
ZWFkX2Jsb2NrKGRlYWRsaW5lLCB0ZXN0X25hbWUsIHdhaXRfZm9yX3N0ZGVycl9lb2Y9VHJ1ZSkK
ICAgICAgICAgaWYgYmxvY2suY29udGVudCBhbmQgYmxvY2suY29udGVudF90eXBlID09ICdpbWFn
ZS9wbmcnOgotICAgICAgICAgICAgcmV0dXJuIChibG9jay5kZWNvZGVkX2NvbnRlbnQsIGJsb2Nr
LmNvbnRlbnRfaGFzaCkKKyAgICAgICAgICAgIHJldHVybiAoYmxvY2suZGVjb2RlZF9jb250ZW50
IGlmIGJsb2NrLmVuY29kaW5nID09ICdiYXNlNjQnIGVsc2UgYmxvY2suY29udGVudCwgYmxvY2su
Y29udGVudF9oYXNoKQogICAgICAgICByZXR1cm4gKE5vbmUsIGJsb2NrLmNvbnRlbnRfaGFzaCkK
IAogICAgIGRlZiBfcmVhZF9oZWFkZXIoc2VsZiwgYmxvY2ssIGxpbmUsIGhlYWRlcl90ZXh0LCBo
ZWFkZXJfYXR0ciwgaGVhZGVyX2ZpbHRlcj1Ob25lKToKICAgICAgICAgaWYgbGluZS5zdGFydHN3
aXRoKGhlYWRlcl90ZXh0KSBhbmQgZ2V0YXR0cihibG9jaywgaGVhZGVyX2F0dHIpIGlzIE5vbmU6
Ci0gICAgICAgICAgICB2YWx1ZSA9IGxpbmUuc3BsaXQoKVsxXQorICAgICAgICAgICAgdmFsdWUg
PSBkZWNvZGVfZm9yKGxpbmUuc3BsaXQoKVsxXSwgc3RyKQogICAgICAgICAgICAgaWYgaGVhZGVy
X2ZpbHRlcjoKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGhlYWRlcl9maWx0ZXIodmFsdWUpCiAg
ICAgICAgICAgICBzZXRhdHRyKGJsb2NrLCBoZWFkZXJfYXR0ciwgdmFsdWUpCkBAIC02NDEsMTkg
KzY0MywyMSBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAK
ICAgICBkZWYgX3Byb2Nlc3Nfc3Rkb3V0X2xpbmUoc2VsZiwgYmxvY2ssIGxpbmUpOgotICAgICAg
ICBpZiAoc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdDb250ZW50LVR5cGU6ICcsICdj
b250ZW50X3R5cGUnKQotICAgICAgICAgICAgb3Igc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxp
bmUsICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAnLCAnZW5jb2RpbmcnKQotICAgICAgICAg
ICAgb3Igc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdDb250ZW50LUxlbmd0aDogJywg
J19jb250ZW50X2xlbmd0aCcsIGludCkKLSAgICAgICAgICAgIG9yIHNlbGYuX3JlYWRfaGVhZGVy
KGJsb2NrLCBsaW5lLCAnQWN0dWFsSGFzaDogJywgJ2NvbnRlbnRfaGFzaCcpCi0gICAgICAgICAg
ICBvciBzZWxmLl9yZWFkX2hlYWRlcihibG9jaywgbGluZSwgJ0R1bXBNYWxsb2M6ICcsICdtYWxs
b2MnKQotICAgICAgICAgICAgb3Igc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdEdW1w
SlNIZWFwOiAnLCAnanNfaGVhcCcpKToKKyAgICAgICAgZWFybHlfcmV0dXJuID0gc2VsZi5fcmVh
ZF9oZWFkZXIoYmxvY2ssIGxpbmUsIGInQ29udGVudC1UeXBlOiAnLCAnY29udGVudF90eXBlJykg
b3IgXAorICAgICAgICAgICAgc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsIGInQ29udGVu
dC1UcmFuc2Zlci1FbmNvZGluZzogJywgJ2VuY29kaW5nJykgb3IgXAorICAgICAgICAgICAgc2Vs
Zi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsIGInQ29udGVudC1MZW5ndGg6ICcsICdfY29udGVu
dF9sZW5ndGgnLCBpbnQpIG9yIFwKKyAgICAgICAgICAgIHNlbGYuX3JlYWRfaGVhZGVyKGJsb2Nr
LCBsaW5lLCBiJ0FjdHVhbEhhc2g6ICcsICdjb250ZW50X2hhc2gnKSBvciBcCisgICAgICAgICAg
ICBzZWxmLl9yZWFkX2hlYWRlcihibG9jaywgbGluZSwgYidEdW1wTWFsbG9jOiAnLCAnbWFsbG9j
Jykgb3IgXAorICAgICAgICAgICAgc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsIGInRHVt
cEpTSGVhcDogJywgJ2pzX2hlYXAnKQorICAgICAgICBpZiBlYXJseV9yZXR1cm46CiAgICAgICAg
ICAgICByZXR1cm4KKwogICAgICAgICAjIE5vdGUsIHdlJ3JlIG5vdCByZWFkaW5nIEV4cGVjdGVk
SGFzaDogaGVyZSwgYnV0IHdlIGNvdWxkLgogICAgICAgICAjIElmIHRoZSBsaW5lIHdhc24ndCBh
IGhlYWRlciwgd2UganVzdCBhcHBlbmQgaXQgdG8gdGhlIGNvbnRlbnQuCi0gICAgICAgIGJsb2Nr
LmNvbnRlbnQgKz0gbGluZQorICAgICAgICBibG9jay5jb250ZW50ID0gZW5jb2RlX2lmX25lY2Vz
c2FyeShibG9jay5jb250ZW50KSArIGxpbmUKIAogICAgIGRlZiBfc3RyaXBfZW9mKHNlbGYsIGxp
bmUpOgotICAgICAgICBpZiBsaW5lIGFuZCBsaW5lLmVuZHN3aXRoKCIjRU9GXG4iKToKKyAgICAg
ICAgaWYgbGluZSBhbmQgbGluZS5lbmRzd2l0aChiIiNFT0ZcbiIpOgogICAgICAgICAgICAgcmV0
dXJuIGxpbmVbOi01XSwgVHJ1ZQogICAgICAgICByZXR1cm4gbGluZSwgRmFsc2UKIApAQCAtNjg4
LDM0ICs2OTIsMzQgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAKICAgICAgICAgICAgIGlmIG91
dF9saW5lOgogICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Zvcl9kcml2ZXJfdGltZW91dChv
dXRfbGluZSkKLSAgICAgICAgICAgICAgICBpZiBvdXRfbGluZVstMV0gIT0gIlxuIjoKKyAgICAg
ICAgICAgICAgICBpZiBvdXRfbGluZVstMV0gIT0gJ1xuJyBhbmQgb3V0X2xpbmVbLTFdICE9IDEw
OgogICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCIgICVzIC0+IExhc3QgY2hhcmFjdGVy
IHJlYWQgZnJvbSBEUlQgc3Rkb3V0IGxpbmUgd2FzIG5vdCBhIG5ld2xpbmUhICBUaGlzIGluZGlj
YXRlcyBlaXRoZXIgYSBOUldUIG9yIERSVCBidWcuIiAlIHRlc3RfbmFtZSkKICAgICAgICAgICAg
ICAgICBjb250ZW50X2xlbmd0aF9iZWZvcmVfaGVhZGVyX2NoZWNrID0gYmxvY2suX2NvbnRlbnRf
bGVuZ3RoCiAgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19zdGRvdXRfbGluZShibG9jaywg
b3V0X2xpbmUpCiAgICAgICAgICAgICAgICAgIyBGSVhNRTogVW5saWtlIEhUVFAsIERSVCBkdW1w
cyB0aGUgY29udGVudCByaWdodCBhZnRlciBwcmludGluZyBhIENvbnRlbnQtTGVuZ3RoIGhlYWRl
ci4KICAgICAgICAgICAgICAgICAjIERvbid0IHdhaXQgdW50aWwgd2UncmUgZG9uZSB3aXRoIGhl
YWRlcnMsIGp1c3QgcmVhZCB0aGUgYmluYXJ5IGJsb2IgcmlnaHQgbm93LgogICAgICAgICAgICAg
ICAgIGlmIGNvbnRlbnRfbGVuZ3RoX2JlZm9yZV9oZWFkZXJfY2hlY2sgIT0gYmxvY2suX2NvbnRl
bnRfbGVuZ3RoOgotICAgICAgICAgICAgICAgICAgICBibG9jay5jb250ZW50ID0gc2VsZi5fc2Vy
dmVyX3Byb2Nlc3MucmVhZF9zdGRvdXQoZGVhZGxpbmUsIGJsb2NrLl9jb250ZW50X2xlbmd0aCkK
KyAgICAgICAgICAgICAgICAgICAgYmxvY2suY29udGVudCA9IGVuY29kZV9pZl9uZWNlc3Nhcnko
c2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZF9zdGRvdXQoZGVhZGxpbmUsIGJsb2NrLl9jb250ZW50
X2xlbmd0aCkpCiAKICAgICAgICAgICAgIGlmIGVycl9saW5lOgogICAgICAgICAgICAgICAgIGlm
IHNlbGYuX2NoZWNrX2Zvcl9kcml2ZXJfY3Jhc2hfb3JfdW5yZXNwb25zaXZlbmVzcyhlcnJfbGlu
ZSk6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZWxpZiBzZWxm
Ll9jaGVja19mb3JfYWRkcmVzc19zYW5pdGl6ZXJfdmlvbGF0aW9uKGVycl9saW5lKToKICAgICAg
ICAgICAgICAgICAgICAgYXNhbl92aW9sYXRpb25fZGV0ZWN0ZWQgPSBUcnVlCi0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2NyYXNoX3JlcG9ydF9mcm9tX2RyaXZlciA9ICIiCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2NyYXNoX3JlcG9ydF9mcm9tX2RyaXZlciA9IGInJwogICAgICAgICAg
ICAgICAgICAgICAjIEFTYW4gcmVwb3J0IHN0YXJ0cyB3aXRoIGEgbm9uZGVzY3JpcHQgbGluZSwg
d2Ugb25seSBkZXRlY3QgdGhlIHNlY29uZCBsaW5lLgogICAgICAgICAgICAgICAgICAgICBlbmRf
b2ZfcHJldmlvdXNfZXJyb3JfbGluZSA9IHNlbGYuZXJyb3JfZnJvbV90ZXN0LnJmaW5kKCdcbics
IDAsIC0xKQogICAgICAgICAgICAgICAgICAgICBpZiBlbmRfb2ZfcHJldmlvdXNfZXJyb3JfbGlu
ZSA+IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCA9IHNl
bGYuZXJyb3JfZnJvbV90ZXN0WzplbmRfb2ZfcHJldmlvdXNfZXJyb3JfbGluZV0KICAgICAgICAg
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJv
bV90ZXN0ID0gIiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0
ID0gJycKICAgICAgICAgICAgICAgICAgICAgIyBTeW1ib2xpY2F0aW9uIGNhbiB0YWtlIGEgdmVy
eSBsb25nIHRpbWUsIGdpdmUgaXQgMTAgZXh0cmEgbWludXRlcyB0byBmaW5pc2guCiAgICAgICAg
ICAgICAgICAgICAgICMgRklYTUU6IFRoaXMgY2FuIGxpa2VseSBiZSByZW1vdmVkIG9uY2UgPHJk
YXI6Ly9wcm9ibGVtLzE4NzAxNDQ3PiBpcyBmaXhlZC4KICAgICAgICAgICAgICAgICAgICAgZGVh
ZGxpbmUgKz0gMTAgKiA2MCAqIDEwMDAKICAgICAgICAgICAgICAgICBpZiBhc2FuX3Zpb2xhdGlv
bl9kZXRlY3RlZDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3Jhc2hfcmVwb3J0X2Zyb21f
ZHJpdmVyICs9IGVycl9saW5lCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NyYXNoX3JlcG9y
dF9mcm9tX2RyaXZlciArPSBkZWNvZGVfZm9yKGVycl9saW5lLCBzdHIpCiAgICAgICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZXJy
X2xpbmUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZGVjb2Rl
X2ZvcihlcnJfbGluZSwgc3RyKQogCiAgICAgICAgIGlmIGFzYW5fdmlvbGF0aW9uX2RldGVjdGVk
IGFuZCBub3Qgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWU6CiAgICAgICAgICAgICBzZWxmLl9j
cmFzaGVkX3Byb2Nlc3NfbmFtZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnByb2Nlc3NfbmFtZSgp
CkBAIC03MzgsNyArNzQyLDcgQEAgY2xhc3MgQ29udGVudEJsb2NrKG9iamVjdCk6CiAgICAgICAg
IHNlbGYuY29udGVudF9oYXNoID0gTm9uZQogICAgICAgICBzZWxmLl9jb250ZW50X2xlbmd0aCA9
IE5vbmUKICAgICAgICAgIyBDb250ZW50IGlzIHRyZWF0ZWQgYXMgYmluYXJ5IGRhdGEgZXZlbiB0
aG91Z2ggdGhlIHRleHQgb3V0cHV0IGlzIHVzdWFsbHkgVVRGLTguCi0gICAgICAgIHNlbGYuY29u
dGVudCA9IHN0cigpICAjIEZJWE1FOiBTaG91bGQgYmUgYnl0ZWFycmF5KCkgb25jZSB3ZSByZXF1
aXJlIFB5dGhvbiAyLjYuCisgICAgICAgIHNlbGYuY29udGVudCA9IGInJwogICAgICAgICBzZWxm
LmRlY29kZWRfY29udGVudCA9IE5vbmUKICAgICAgICAgc2VsZi5tYWxsb2MgPSBOb25lCiAgICAg
ICAgIHNlbGYuanNfaGVhcCA9IE5vbmUKQEAgLTc0Nyw3ICs3NTEsMTAgQEAgY2xhc3MgQ29udGVu
dEJsb2NrKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuZW5jb2RpbmcgPT0gJ2Jhc2U2NCcgYW5k
IHNlbGYuY29udGVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250
ZW50ID0gYmFzZTY0LmI2NGRlY29kZShzZWxmLmNvbnRlbnQpCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzZWxmLmRlY29kZWRfY29udGVudCA9IHNlbGYuY29udGVudAorICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gZGVjb2RlX2Zvcihz
ZWxmLmNvbnRlbnQsIHN0cikKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6
CisgICAgICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBOb25lCiAKIAogY2xhc3Mg
RHJpdmVyUHJveHkob2JqZWN0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9k
cml2ZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2RyaXZlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjUzNTU2KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTgy
LDcgKzE4Miw3IEBAIGNsYXNzIERyaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBjb250ZW50X2Jsb2NrID0gZHJpdmVyLl9yZWFkX2Jsb2NrKDAsICIiKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbnRlbnRfYmxvY2suY29udGVudF90eXBlLCAnaW1hZ2UvcG5nJykKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2NrLmNvbnRlbnRfaGFzaCwgJ2FjdHVh
bCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5jb250ZW50LCAnMTIz
NDU2NzhcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5jb250ZW50
LCBiJzEyMzQ1Njc4XG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnRfYmxvY2su
ZGVjb2RlZF9jb250ZW50LCAnMTIzNDU2NzhcbicpCiAgICAgICAgIGRyaXZlci5fc2VydmVyX3By
b2Nlc3MgPSBOb25lCiAKQEAgLTIwMSw3ICsyMDEsNyBAQCBjbGFzcyBEcml2ZXJUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2NrLmNv
bnRlbnRfdHlwZSwgJ2ltYWdlL3BuZycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVu
dF9ibG9jay5jb250ZW50X2hhc2gsICdhY3R1YWwnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbnRlbnRfYmxvY2suZW5jb2RpbmcsICdiYXNlNjQnKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbnRlbnRfYmxvY2suY29udGVudCwgJ01USXpORFUyTnpnSycpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5jb250ZW50LCBiJ01USXpORFUyTnpnSycpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5kZWNvZGVkX2NvbnRlbnQsIGInMTIz
NDU2NzhcbicpCiAKICAgICBkZWYgdGVzdF9ub190aW1lb3V0KHNlbGYpOgpAQCAtMjQ3LDQzICsy
NDcsNDMgQEAgY2xhc3MgRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAg
ICBkcml2ZXIuc3RvcCgpCiAKICAgICAgICAgZHJpdmVyLl9zZXJ2ZXJfcHJvY2VzcyA9IEZha2VT
ZXJ2ZXJQcm9jZXNzKEZhbHNlKQotICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCAnJywgRmFs
c2UsIE5vbmUsIE5vbmUpCisgICAgICAgIGFzc2VydF9jcmFzaChkcml2ZXIsIGInJywgRmFsc2Us
IE5vbmUsIE5vbmUpCiAKICAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5v
bmUKICAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3BpZCA9IE5vbmUKICAgICAgICAgZHJpdmVyLl9z
ZXJ2ZXJfcHJvY2VzcyA9IEZha2VTZXJ2ZXJQcm9jZXNzKEZhbHNlKQogICAgICAgICBkcml2ZXIu
X2RyaXZlcl90aW1lZF9vdXQgPSBGYWxzZQotICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCAn
I0NSQVNIRURcbicsIFRydWUsICdGYWtlU2VydmVyUHJvY2VzcycsIDEyMzQpCisgICAgICAgIGFz
c2VydF9jcmFzaChkcml2ZXIsIGInI0NSQVNIRURcbicsIFRydWUsICdGYWtlU2VydmVyUHJvY2Vz
cycsIDEyMzQpCiAKICAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUK
ICAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3BpZCA9IE5vbmUKICAgICAgICAgZHJpdmVyLl9zZXJ2
ZXJfcHJvY2VzcyA9IEZha2VTZXJ2ZXJQcm9jZXNzKEZhbHNlKQogICAgICAgICBkcml2ZXIuX2Ry
aXZlcl90aW1lZF9vdXQgPSBGYWxzZQotICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCAnI0NS
QVNIRUQgLSBXZWJQcm9jZXNzXG4nLCBUcnVlLCAnV2ViUHJvY2VzcycsIE5vbmUpCisgICAgICAg
IGFzc2VydF9jcmFzaChkcml2ZXIsIGInI0NSQVNIRUQgLSBXZWJQcm9jZXNzXG4nLCBUcnVlLCAn
V2ViUHJvY2VzcycsIE5vbmUpCiAKICAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3Byb2Nlc3NfbmFt
ZSA9IE5vbmUKICAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3BpZCA9IE5vbmUKICAgICAgICAgZHJp
dmVyLl9zZXJ2ZXJfcHJvY2VzcyA9IEZha2VTZXJ2ZXJQcm9jZXNzKEZhbHNlKQogICAgICAgICBk
cml2ZXIuX2RyaXZlcl90aW1lZF9vdXQgPSBGYWxzZQotICAgICAgICBhc3NlcnRfY3Jhc2goZHJp
dmVyLCAnI0NSQVNIRUQgLSBXZWJQcm9jZXNzIChwaWQgODY3NSlcbicsIFRydWUsICdXZWJQcm9j
ZXNzJywgODY3NSkKKyAgICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgYicjQ1JBU0hFRCAtIFdl
YlByb2Nlc3MgKHBpZCA4Njc1KVxuJywgVHJ1ZSwgJ1dlYlByb2Nlc3MnLCA4Njc1KQogCiAgICAg
ICAgIGRyaXZlci5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBOb25lCiAgICAgICAgIGRyaXZlci5f
Y3Jhc2hlZF9waWQgPSBOb25lCiAgICAgICAgIGRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSBGYWtl
U2VydmVyUHJvY2VzcyhGYWxzZSkKICAgICAgICAgZHJpdmVyLl9kcml2ZXJfdGltZWRfb3V0ID0g
RmFsc2UKLSAgICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgJyNQUk9DRVNTIFVOUkVTUE9OU0lW
RSAtIFdlYlByb2Nlc3MgKHBpZCA4Njc1KVxuJywgVHJ1ZSwgTm9uZSwgTm9uZSwgVHJ1ZSkKKyAg
ICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgYicjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQ
cm9jZXNzIChwaWQgODY3NSlcbicsIFRydWUsIE5vbmUsIE5vbmUsIFRydWUpCiAKICAgICAgICAg
ZHJpdmVyLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKICAgICAgICAgZHJpdmVyLl9jcmFz
aGVkX3BpZCA9IE5vbmUKICAgICAgICAgZHJpdmVyLl9zZXJ2ZXJfcHJvY2VzcyA9IEZha2VTZXJ2
ZXJQcm9jZXNzKEZhbHNlKQogICAgICAgICBkcml2ZXIuX2RyaXZlcl90aW1lZF9vdXQgPSBGYWxz
ZQotICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCAnI0NSQVNIRUQgLSByZW5kZXJlciAocGlk
IDg2NzUpXG4nLCBUcnVlLCAncmVuZGVyZXInLCA4Njc1KQorICAgICAgICBhc3NlcnRfY3Jhc2go
ZHJpdmVyLCBiJyNDUkFTSEVEIC0gcmVuZGVyZXIgKHBpZCA4Njc1KVxuJywgVHJ1ZSwgJ3JlbmRl
cmVyJywgODY3NSkKIAogICAgICAgICBkcml2ZXIuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gTm9u
ZQogICAgICAgICBkcml2ZXIuX2NyYXNoZWRfcGlkID0gTm9uZQogICAgICAgICBkcml2ZXIuX3Nl
cnZlcl9wcm9jZXNzID0gRmFrZVNlcnZlclByb2Nlc3MoVHJ1ZSkKICAgICAgICAgZHJpdmVyLl9k
cml2ZXJfdGltZWRfb3V0ID0gRmFsc2UKLSAgICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgJycs
IFRydWUsICdGYWtlU2VydmVyUHJvY2VzcycsIDEyMzQpCisgICAgICAgIGFzc2VydF9jcmFzaChk
cml2ZXIsIGInJywgVHJ1ZSwgJ0Zha2VTZXJ2ZXJQcm9jZXNzJywgMTIzNCkKIAogICAgIGRlZiB0
ZXN0X2NyZWF0aW5nX2FfcG9ydF9kb2VzX25vdF93cml0ZV90b190aGVfZmlsZXN5c3RlbShzZWxm
KToKICAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9pbWFnZV9kaWZmLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9pbWFnZV9kaWZmLnB5CShyZXZpc2lvbiAyNTM1NTYpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvaW1hZ2VfZGlmZi5weQkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsNyBAQCBpbXBvcnQgcmUKIGltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0cHkucG9ydCBp
bXBvcnQgc2VydmVyX3Byb2Nlc3MKK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0
aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2ZvcgogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihf
X25hbWVfXykKQEAgLTU3LDkgKzU4LDEwIEBAIGNsYXNzIEltYWdlRGlmZmVyKG9iamVjdCk6CiAg
ICAgICAgICAgICBpZiBub3Qgc2VsZi5fcHJvY2VzczoKICAgICAgICAgICAgICAgICBzZWxmLl9z
dGFydCh0b2xlcmFuY2UpCiAgICAgICAgICAgICAjIE5vdGUgdGhhdCBhbHRob3VnaCB3ZSBhcmUg
aGFuZGVkICdvbGQnLCAnbmV3JywgSW1hZ2VEaWZmIHdhbnRzICduZXcnLCAnb2xkJy4KLSAgICAg
ICAgICAgIHNlbGYuX3Byb2Nlc3Mud3JpdGUoJ0NvbnRlbnQtTGVuZ3RoOiAlZFxuJXNDb250ZW50
LUxlbmd0aDogJWRcbiVzJyAlICgKLSAgICAgICAgICAgICAgICBsZW4oYWN0dWFsX2NvbnRlbnRz
KSwgYWN0dWFsX2NvbnRlbnRzLAotICAgICAgICAgICAgICAgIGxlbihleHBlY3RlZF9jb250ZW50
cyksIGV4cGVjdGVkX2NvbnRlbnRzKSkKKyAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Mud3JpdGUo
J0NvbnRlbnQtTGVuZ3RoOiB7fVxuJy5mb3JtYXQobGVuKGFjdHVhbF9jb250ZW50cykpKQorICAg
ICAgICAgICAgc2VsZi5fcHJvY2Vzcy53cml0ZShhY3R1YWxfY29udGVudHMpCisgICAgICAgICAg
ICBzZWxmLl9wcm9jZXNzLndyaXRlKCdDb250ZW50LUxlbmd0aDoge31cbicuZm9ybWF0KGxlbihl
eHBlY3RlZF9jb250ZW50cykpKQorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzcy53cml0ZShleHBl
Y3RlZF9jb250ZW50cykKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkKCkKICAgICAgICAg
ZXhjZXB0IElPRXJyb3IgYXMgZXhjZXB0aW9uOgogICAgICAgICAgICAgcmV0dXJuIChOb25lLCAw
LCAiRmFpbGVkIHRvIGNvbXB1dGUgYW4gaW1hZ2UgZGlmZjogJXMiICUgc3RyKGV4Y2VwdGlvbikp
CkBAIC04MywxNyArODUsMTcgQEAgY2xhc3MgSW1hZ2VEaWZmZXIob2JqZWN0KToKICAgICAgICAg
ICAgIGlmIHNlbGYuX3Byb2Nlc3MudGltZWRfb3V0IG9yIHNlbGYuX3Byb2Nlc3MuaGFzX2NyYXNo
ZWQoKSBvciBub3Qgb3V0cHV0OgogICAgICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAgICAg
IGlmIG91dHB1dC5zdGFydHN3aXRoKCdkaWZmJyk6ICAjIFRoaXMgaXMgdGhlIGxhc3QgbGluZSBJ
bWFnZURpZmYgcHJpbnRzLgorICAgICAgICAgICAgaWYgb3V0cHV0LnN0YXJ0c3dpdGgoYidkaWZm
Jyk6ICAjIFRoaXMgaXMgdGhlIGxhc3QgbGluZSBJbWFnZURpZmYgcHJpbnRzLgogICAgICAgICAg
ICAgICAgIGJyZWFrCiAKLSAgICAgICAgICAgIGlmIG91dHB1dC5zdGFydHN3aXRoKCdDb250ZW50
LUxlbmd0aCcpOgotICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgnQ29udGVudC1MZW5ndGg6
IChcZCspJywgb3V0cHV0KQorICAgICAgICAgICAgaWYgb3V0cHV0LnN0YXJ0c3dpdGgoYidDb250
ZW50LUxlbmd0aCcpOgorICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaChiJ0NvbnRlbnQtTGVu
Z3RoOiAoXGQrKScsIG91dHB1dCkKICAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IGlu
dChtLmdyb3VwKDEpKQogICAgICAgICAgICAgICAgIG91dHB1dF9pbWFnZSA9IHNlbGYuX3Byb2Nl
c3MucmVhZF9zdGRvdXQoZGVhZGxpbmUsIGNvbnRlbnRfbGVuZ3RoKQogICAgICAgICAgICAgICAg
IG91dHB1dCA9IHNlbGYuX3Byb2Nlc3MucmVhZF9zdGRvdXRfbGluZShkZWFkbGluZSkKICAgICAg
ICAgICAgICAgICBicmVhawogCi0gICAgICAgIHN0ZGVyciA9IHNlbGYuX3Byb2Nlc3MucG9wX2Fs
bF9idWZmZXJlZF9zdGRlcnIoKQorICAgICAgICBzdGRlcnIgPSBkZWNvZGVfZm9yKHNlbGYuX3By
b2Nlc3MucG9wX2FsbF9idWZmZXJlZF9zdGRlcnIoKSwgc3RyKQogICAgICAgICBlcnJfc3RyID0g
JycKICAgICAgICAgaWYgc3RkZXJyOgogICAgICAgICAgICAgZXJyX3N0ciArPSAiSW1hZ2VEaWZm
IHByb2R1Y2VkIHN0ZGVyciBvdXRwdXQ6XG4iICsgc3RkZXJyCkBAIC0xMDMsOSArMTA1LDkgQEAg
Y2xhc3MgSW1hZ2VEaWZmZXIob2JqZWN0KToKICAgICAgICAgICAgIGVycl9zdHIgKz0gIkltYWdl
RGlmZiBjcmFzaGVkXG4iCiAKICAgICAgICAgZGlmZl9wZXJjZW50ID0gMAotICAgICAgICBpZiBv
dXRwdXQgYW5kIG91dHB1dC5zdGFydHN3aXRoKCdkaWZmJyk6Ci0gICAgICAgICAgICBtID0gcmUu
bWF0Y2goJ2RpZmY6ICguKyklIChwYXNzZWR8ZmFpbGVkKScsIG91dHB1dCkKLSAgICAgICAgICAg
IGlmIG0uZ3JvdXAoMikgPT0gJ3Bhc3NlZCc6CisgICAgICAgIGlmIG91dHB1dCBhbmQgb3V0cHV0
LnN0YXJ0c3dpdGgoYidkaWZmJyk6CisgICAgICAgICAgICBtID0gcmUubWF0Y2goYidkaWZmOiAo
LispJSAocGFzc2VkfGZhaWxlZCknLCBvdXRwdXQpCisgICAgICAgICAgICBpZiBtLmdyb3VwKDIp
ID09IGIncGFzc2VkJzoKICAgICAgICAgICAgICAgICByZXR1cm4gKE5vbmUsIDAsIE5vbmUpCiAg
ICAgICAgICAgICBkaWZmX3BlcmNlbnQgPSBmbG9hdChtLmdyb3VwKDEpKQogCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CShyZXZpc2lvbiAy
NTM1NTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDkgQEAgaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN5
cwogaW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJp
bGl0eSBpbXBvcnQgZW5jb2RlX2lmX25lY2Vzc2FyeQorCiAjIE5vdGUgdGhhdCBhbHRob3VnaCB3
aW4zMiBweXRob24gZG9lcyBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mCiAjIHRoZSB3aW4z
MiBzZWxlY3QgQVBJLCBpdCBvbmx5IHdvcmtzIG9uIHNvY2tldHMsIGFuZCBub3Qgb24gdGhlIG5h
bWVkIHBpcGVzCiAjIHVzZWQgYnkgc3VicHJvY2Vzcywgc28gd2UgaGF2ZSB0byB1c2UgdGhlIG5h
dGl2ZSBBUElzIGRpcmVjdGx5LgpAQCAtNDcsOCArNTAsNiBAQCBlbHNlOgogICAgIGltcG9ydCBv
cwogICAgIGltcG9ydCBzZWxlY3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCiAKQEAgLTE3OCw5ICsxNzksOSBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6
CiAgICAgICAgIGlmIG5vdCBzZWxmLl9wcm9jOgogICAgICAgICAgICAgc2VsZi5fc3RhcnQoKQog
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9wcm9jLnN0ZGluLndyaXRlKGJ5dGVzKQor
ICAgICAgICAgICAgc2VsZi5fcHJvYy5zdGRpbi53cml0ZShlbmNvZGVfaWZfbmVjZXNzYXJ5KGJ5
dGVzKSkKICAgICAgICAgICAgIHNlbGYuX3Byb2Muc3RkaW4uZmx1c2goKQotICAgICAgICBleGNl
cHQgSU9FcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgKElPRXJyb3IsIFZhbHVlRXJyb3IpIGFz
IGU6CiAgICAgICAgICAgICBzZWxmLnN0b3AoMC4wKQogICAgICAgICAgICAgIyBzdG9wKCkgY2Fs
bHMgX3Jlc2V0KCksIHNvIHdlIGhhdmUgdG8gc2V0IGNyYXNoZWQgdG8gVHJ1ZSBhZnRlciBjYWxs
aW5nIHN0b3AoKQogICAgICAgICAgICAgIyB1bmxlc3Mgd2UgYWxyZWFkeSBrbm93IHRoYXQgdGhp
cyBpcyBhIHRpbWVvdXQuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVy
X3Byb2Nlc3NfbW9jay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvc2VydmVyX3Byb2Nlc3NfbW9jay5weQkocmV2aXNpb24gMjUzNTU2KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX21vY2sucHkJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDExICsyNiwxMyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAorZnJv
bSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZf
bmVjZXNzYXJ5CisKIAogY2xhc3MgTW9ja1NlcnZlclByb2Nlc3Mob2JqZWN0KToKICAgICBkZWYg
X19pbml0X18oc2VsZiwgcG9ydF9vYmo9Tm9uZSwgbmFtZT1Ob25lLCBjbWQ9Tm9uZSwgZW52PU5v
bmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgbGluZXM9Tm9uZSwgY3Jhc2hlZD1GYWxzZSwg
dGFyZ2V0X2hvc3Q9Tm9uZSk6CiAgICAgICAgIHNlbGYudGltZWRfb3V0ID0gRmFsc2UKLSAgICAg
ICAgc2VsZi5saW5lcyA9IGxpbmVzIG9yIFtdCisgICAgICAgIHNlbGYubGluZXMgPSBbZW5jb2Rl
X2lmX25lY2Vzc2FyeShsaW5lKSBmb3IgbGluZSBpbiAobGluZXMgb3IgW10pXQogICAgICAgICBz
ZWxmLmNyYXNoZWQgPSBjcmFzaGVkCiAgICAgICAgIHNlbGYud3JpdGVzID0gW10KICAgICAgICAg
c2VsZi5jbWQgPSBjbWQKQEAgLTUyLDcgKzU0LDcgQEAgY2xhc3MgTW9ja1NlcnZlclByb2Nlc3Mo
b2JqZWN0KToKICAgICBkZWYgcmVhZF9zdGRvdXRfbGluZShzZWxmLCBkZWFkbGluZSk6CiAgICAg
ICAgIGlmIHNlbGYuaGFzX2NyYXNoZWQoKToKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAg
ICAgIHJldHVybiBzZWxmLmxpbmVzLnBvcCgwKSArICJcbiIKKyAgICAgICAgcmV0dXJuIHNlbGYu
bGluZXMucG9wKDApICsgYidcbicKIAogICAgIGRlZiBoYXNfYXZhaWxhYmxlX3N0ZG91dChzZWxm
KToKICAgICAgICAgaWYgc2VsZi5oYXNfY3Jhc2hlZCgpOgpAQCAtNjcsOCArNjksOCBAQCBjbGFz
cyBNb2NrU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5saW5lcy5wb3Ao
MCkKICAgICAgICAgICAgIHJlbWFpbmluZ19zaXplID0gc2l6ZSAtIGxlbihmaXJzdF9saW5lKSAt
IDEKICAgICAgICAgICAgIGlmIG5vdCByZW1haW5pbmdfc2l6ZToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmlyc3RfbGluZSArICJcbiIKLSAgICAgICAgICAgIHJldHVybiBmaXJzdF9saW5lICsg
IlxuIiArIHNlbGYucmVhZF9zdGRvdXQoZGVhZGxpbmUsIHJlbWFpbmluZ19zaXplKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmaXJzdF9saW5lICsgYidcbicKKyAgICAgICAgICAgIHJldHVybiBm
aXJzdF9saW5lICsgYidcbicgKyBzZWxmLnJlYWRfc3Rkb3V0KGRlYWRsaW5lLCByZW1haW5pbmdf
c2l6ZSkKICAgICAgICAgcmVzdWx0ID0gc2VsZi5saW5lc1swXVs6c2l6ZV0KICAgICAgICAgc2Vs
Zi5saW5lc1swXSA9IHNlbGYubGluZXNbMF1bc2l6ZTpdCiAgICAgICAgIHJldHVybiByZXN1bHQK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nl
c3MucHkJKHJldmlzaW9uIDI1MzU1NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9z
aW11bGF0b3JfcHJvY2Vzcy5weQkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogCiAK
IGltcG9ydCBvcworaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIAogZnJvbSB3ZWJraXRweS5jb21t
b24udGltZW91dF9jb250ZXh0IGltcG9ydCBUaW1lb3V0CkBAIC02Nyw3ICs2OCw5IEBAIGNsYXNz
IFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJvY2Vzcyk6CiAKICAgICAgICAgZGVmIGNsb3NlKHNl
bGYpOgogICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZmlsZS5jbG9zZSgpCi0gICAgICAgICAg
ICBzZWxmLnNvY2tldC5jbG9zZSgpCisgICAgICAgICAgICAjIENsb3NpbmcgdGhlIGZpbGUgaW1w
bGljaXRseSBjbG9zZXMgdGhlIHNvY2tldCBpbiBQeXRob24gMworICAgICAgICAgICAgaWYgc3lz
LnZlcnNpb25faW5mbyA8ICgzLCAwKToKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9z
ZSgpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
cG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwg
dHJlYXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgdGFyZ2V0X2hvc3Q9Tm9uZSk6CkBAIC0xMDMs
NyArMTA2LDcgQEAgY2xhc3MgU2ltdWxhdG9yUHJvY2VzcyhTZXJ2ZXJQcm9jZXNzKToKICAgICAg
ICAgICAgIHN0ZGVyciA9IE5vbmUKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAj
IFRoaXMgb3JkZXIgbWF0Y2hlcyB0aGUgY2xpZW50IHNpZGUgY29ubmVjdGlvbnMgaW4gVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9JT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgc2V0VXBJT1NM
YXlvdXRUZXN0Q29tbXVuaWNhdGlvbigpCi0gICAgICAgICAgICAgICAgc3RkaW4gPSBTaW11bGF0
b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZWxmLl90YXJnZXRfaG9z
dC5saXN0ZW5pbmdfc29ja2V0LCAndycpCisgICAgICAgICAgICAgICAgc3RkaW4gPSBTaW11bGF0
b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZWxmLl90YXJnZXRfaG9z
dC5saXN0ZW5pbmdfc29ja2V0LCAnd2InKQogICAgICAgICAgICAgICAgIHN0ZG91dCA9IFNpbXVs
YXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9maWxlKHNlbGYuX3RhcmdldF9o
b3N0Lmxpc3RlbmluZ19zb2NrZXQsICdyYicpCiAgICAgICAgICAgICAgICAgc3RkZXJyID0gU2lt
dWxhdG9yUHJvY2Vzcy5fYWNjZXB0X2Nvbm5lY3Rpb25fY3JlYXRlX2ZpbGUoc2VsZi5fdGFyZ2V0
X2hvc3QubGlzdGVuaW5nX3NvY2tldCwgJ3JiJykKICAgICAgICAgICAgIGV4Y2VwdDoKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5CShyZXZpc2lvbiAyNTM1NTYpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQCBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IFBvcnQsIERyaXZlciwgCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0
Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNyYXNobG9ncyBpbXBv
cnQgQ3Jhc2hMb2dzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9y
dCBQVUJMSUNfVEFCTEUsIFZlcnNpb25OYW1lTWFwCitmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmlj
b2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRlY29kZV9mb3IsIGVuY29kZV9pZl9uZWNlc3NhcnkK
IAogCiAjIFRoaXMgc2V0cyBiYXNpYyBleHBlY3RhdGlvbnMgZm9yIGEgdGVzdC4gRWFjaCBpbmRp
dmlkdWFsIGV4cGVjdGF0aW9uCkBAIC0xMTEsOSArMTEyLDkgQEAgVU5FWFBFQ1RFRF9GQUlMVVJF
UyA9IDE4CiAKIAogZGVmIHVuaXRfdGVzdF9saXN0KCk6Ci0gICAgc2lsZW50X2F1ZGlvID0gIlJJ
RkYyXHgwMFx4MDBceDAwV0FWRWZtdCBceDEwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMFx4
MjJceDU2XHgwMFx4MDBceDQ0XHhBQ1x4MDBceDAwXHgwMlx4MDBceDEwXHgwMGRhdGFceDBFXHgw
MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw
XHgwMFx4MDAiCi0gICAgc2lsZW50X2F1ZGlvX3dpdGhfc2luZ2xlX2JpdF9kaWZmZXJlbmNlID0g
IlJJRkYyXHgwMFx4MDBceDAwV0FWRWZtdCBceDEwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgw
MFx4MjJceDU2XHgwMFx4MDBceDQ0XHhBQ1x4MDBceDAwXHgwMlx4MDBceDEwXHgwMGRhdGFceDBF
XHgwMFx4MDBceDAwXHgwMVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc
eDAwXHgwMFx4MDAiCi0gICAgYXVkaW8yID0gIlJJRkYyXHgwMFx4MDBceDAwV0FWRWZtdCBceDEw
XHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMFx4MjJceDU2XHgwMFx4MDBceDQ0XHhBQ1x4MDBc
eDAwXHgwMlx4MDBceDEwXHgwMGRhdGFceDBFXHgwMFx4MDBceDAwXHg0MFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiCisgICAgc2lsZW50X2F1ZGlv
ID0gYiJSSUZGMlx4MDBceDAwXHgwMFdBVkVmbXQgXHgxMFx4MDBceDAwXHgwMFx4MDFceDAwXHgw
MVx4MDBceDIyXHg1Nlx4MDBceDAwXHg0NFx4QUNceDAwXHgwMFx4MDJceDAwXHgxMFx4MDBkYXRh
XHgwRVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc
eDAwXHgwMFx4MDBceDAwIgorICAgIHNpbGVudF9hdWRpb193aXRoX3NpbmdsZV9iaXRfZGlmZmVy
ZW5jZSA9IGIiUklGRjJceDAwXHgwMFx4MDBXQVZFZm10IFx4MTBceDAwXHgwMFx4MDBceDAxXHgw
MFx4MDFceDAwXHgyMlx4NTZceDAwXHgwMFx4NDRceEFDXHgwMFx4MDBceDAyXHgwMFx4MTBceDAw
ZGF0YVx4MEVceDAwXHgwMFx4MDBceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc
eDAwXHgwMFx4MDBceDAwXHgwMCIKKyAgICBhdWRpbzIgPSBiIlJJRkYyXHgwMFx4MDBceDAwV0FW
RWZtdCBceDEwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMFx4MjJceDU2XHgwMFx4MDBceDQ0
XHhBQ1x4MDBceDAwXHgwMlx4MDBceDEwXHgwMGRhdGFceDBFXHgwMFx4MDBceDAwXHg0MFx4MDBc
eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiCiAgICAgdGVz
dHMgPSBUZXN0TGlzdCgpCiAgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5o
dG1sJywgY3Jhc2g9VHJ1ZSkKICAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVkL2V4Y2Vw
dGlvbi5odG1sJywgZXhjZXB0aW9uPVRydWUpCkBAIC00MzQsMTUgKzQzNSwyMCBAQCBjbGFzcyBU
ZXN0UG9ydChQb3J0KToKICAgICAgICAgcmV0dXJuICdSZWxlYXNlJwogCiAgICAgZGVmIGRpZmZf
aW1hZ2Uoc2VsZiwgZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywgdG9sZXJhbmNl
PU5vbmUpOgorICAgICAgICBleHBlY3RlZF9jb250ZW50cyA9IGVuY29kZV9pZl9uZWNlc3Nhcnko
ZXhwZWN0ZWRfY29udGVudHMpCisgICAgICAgIGFjdHVhbF9jb250ZW50cyA9IGVuY29kZV9pZl9u
ZWNlc3NhcnkoYWN0dWFsX2NvbnRlbnRzKQogICAgICAgICBkaWZmZWQgPSBhY3R1YWxfY29udGVu
dHMgIT0gZXhwZWN0ZWRfY29udGVudHMKICAgICAgICAgaWYgbm90IGFjdHVhbF9jb250ZW50cyBh
bmQgbm90IGV4cGVjdGVkX2NvbnRlbnRzOgogICAgICAgICAgICAgcmV0dXJuIChOb25lLCAwLCBO
b25lKQogICAgICAgICBpZiBub3QgYWN0dWFsX2NvbnRlbnRzIG9yIG5vdCBleHBlY3RlZF9jb250
ZW50czoKICAgICAgICAgICAgIHJldHVybiAoVHJ1ZSwgMCwgTm9uZSkKLSAgICAgICAgaWYgJ3Jl
ZicgaW4gZXhwZWN0ZWRfY29udGVudHM6CisgICAgICAgIGlmIGIncmVmJyBpbiBleHBlY3RlZF9j
b250ZW50czoKICAgICAgICAgICAgIGFzc2VydCB0b2xlcmFuY2UgPT0gMAogICAgICAgICBpZiBk
aWZmZWQ6Ci0gICAgICAgICAgICByZXR1cm4gKCI8ICVzXG4tLS1cbj4gJXNcbiIgJSAoZXhwZWN0
ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cyksIDEsIE5vbmUpCisgICAgICAgICAgICByZXR1
cm4gKCI8IHt9XG4tLS1cbj4ge31cbiIuZm9ybWF0KAorICAgICAgICAgICAgICAgIGRlY29kZV9m
b3IoZXhwZWN0ZWRfY29udGVudHMsIHN0ciksCisgICAgICAgICAgICAgICAgZGVjb2RlX2Zvcihh
Y3R1YWxfY29udGVudHMsIHN0ciksCisgICAgICAgICAgICApLCAxLCBOb25lKQogICAgICAgICBy
ZXR1cm4gKE5vbmUsIDAsIE5vbmUpCiAKICAgICBkZWYgbGF5b3V0X3Rlc3RzX2RpcihzZWxmKToK
QEAgLTU2Myw3ICs1NjksNyBAQCBjbGFzcyBUZXN0RHJpdmVyKERyaXZlcik6CiAgICAgICAgIHRl
c3RfYXJncyA9IHRlc3RfaW5wdXQuYXJncyBvciBbXQogICAgICAgICB0ZXN0ID0gc2VsZi5fcG9y
dC5fdGVzdHNbdGVzdF9uYW1lXQogICAgICAgICBpZiB0ZXN0LmtleWJvYXJkOgotICAgICAgICAg
ICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKKyAgICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50
ZXJydXB0KCkKICAgICAgICAgaWYgdGVzdC5leGNlcHRpb246CiAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdleGNlcHRpb24gZnJvbSAnICsgdGVzdF9uYW1lKQogICAgICAgICBpZiB0ZXN0
Lmhhbmc6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZp
Y2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0
ZWRfZGV2aWNlLnB5CShyZXZpc2lvbiAyNTM1NTYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTU2Myw3ICs1NjMs
NyBAQCBjbGFzcyBTaW11bGF0ZWREZXZpY2Uob2JqZWN0KToKICAgICAgICAgICAgIF9sb2cuZGVi
dWcodSd7fSBoYXMgbm8gc2VydmljZSB0byBjaGVjayBpZiB0aGUgZGV2aWNlIGlzIHVzYWJsZScu
Zm9ybWF0KHNlbGYuZGV2aWNlX3R5cGUuc29mdHdhcmVfdmFyaWFudCkpCiAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQogCi0gICAgICAgIHN5c3RlbV9wcm9jZXNzZXMgPSBzZWxmLmV4ZWN1dGl2ZS5y
dW5fY29tbWFuZChbU2ltdWxhdGVkRGV2aWNlTWFuYWdlci54Y3J1biwgJ3NpbWN0bCcsICdzcGF3
bicsIHNlbGYudWRpZCwgJ2xhdW5jaGN0bCcsICdwcmludCcsICdzeXN0ZW0nXSwgZGVjb2RlX291
dHB1dD1GYWxzZSkKKyAgICAgICAgc3lzdGVtX3Byb2Nlc3NlcyA9IHNlbGYuZXhlY3V0aXZlLnJ1
bl9jb21tYW5kKFtTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLnhjcnVuLCAnc2ltY3RsJywgJ3NwYXdu
Jywgc2VsZi51ZGlkLCAnbGF1bmNoY3RsJywgJ3ByaW50JywgJ3N5c3RlbSddLCBkZWNvZGVfb3V0
cHV0PVRydWUpCiAgICAgICAgIGlmIHJlLnNlYXJjaChyJyJ7fSInLmZvcm1hdChob21lX3NjcmVl
bl9zZXJ2aWNlKSwgc3lzdGVtX3Byb2Nlc3Nlcykgb3IgcmUuc2VhcmNoKHInQVxzK3t9Jy5mb3Jt
YXQoaG9tZV9zY3JlZW5fc2VydmljZSksIHN5c3RlbV9wcm9jZXNzZXMpOgogICAgICAgICAgICAg
cmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC02MDQsNyArNjA0LDcgQEAgY2xh
c3MgU2ltdWxhdGVkRGV2aWNlKG9iamVjdCk6CiAKICAgICBkZWYgaW5zdGFsbF9hcHAoc2VsZiwg
YXBwX3BhdGgsIGVudj1Ob25lKToKICAgICAgICAgIyBFdmVuIGFmdGVyIGNhcm91c2VsIGlzIHJ1
bm5pbmcsIGl0IHRha2VzIGEgZmV3IHNlY29uZHMgZm9yIHdhdGNoT1MgdG8gYWxsb3cgaW5zdGFs
bHMuCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLk5VTV9JTlNUQUxMX1JFVFJJRVMpOgor
ICAgICAgICBmb3IgaSBpbiByYW5nZShzZWxmLk5VTV9JTlNUQUxMX1JFVFJJRVMpOgogICAgICAg
ICAgICAgZXhpdF9jb2RlID0gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoWyd4Y3J1bicsICdz
aW1jdGwnLCAnaW5zdGFsbCcsIHNlbGYudWRpZCwgYXBwX3BhdGhdLCByZXR1cm5fZXhpdF9jb2Rl
PVRydWUpCiAgICAgICAgICAgICBpZiBleGl0X2NvZGUgPT0gMDoKICAgICAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385839</attachid>
            <date>2019-12-16 17:42:17 -0800</date>
            <delta_ts>2020-01-09 08:37:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205291-20191216174213.patch</filename>
            <type>text/plain</type>
            <size>64087</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MzYwMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDkwIEBACisyMDE5LTEyLTE2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgdG8gcnVuLXdlYmtpdC10ZXN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjkxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRz
L3Rlc3Qtd2Via2l0cHktcHl0aG9uMzogQWRkIHdlYmtpdHB5LmxheW91dF90ZXN0cy4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9tZXNzYWdlX3Bvb2wucHk6CisgICAgICAgIChf
TWVzc2FnZVBvb2wuX2xvb3ApOiBNb3ZlIGV4Y2VwdGlvbiBpbnNpZGUgb2YgbG9vcC4KKyAgICAg
ICAgKF9NZXNzYWdlLl9fcmVwcl9fKTogVXNlIC5mb3JtYXQgc3RyaW5ncy4KKyAgICAgICAgKF9X
b3JrZXIuX19pbml0X18pOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi93YXZlZGlmZi5weToKKyAgICAgICAgKFdhdmVEaWZmLl9faW5pdF9fKTogVXNlIFB5dGhvbiAz
IGNvbXBhdGlibGUgQnl0ZXNJTyBhbmQgU3RyaW5nSU8uCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5OgorICAg
ICAgICAoTGF5b3V0VGVzdEZpbmRlci5fcmVhZF90ZXN0X25hbWVzX2Zyb21fZmlsZSk6IFVzZSAu
Zm9ybWF0IHN0cmluZy4KKyAgICAgICAgKExheW91dFRlc3RGaW5kZXIuc3BsaXRfaW50b19jaHVu
a3MpOiBFeHBsaWNpdGx5IHVzZSBpbnRlZ2VyIGRpdmlzaW9uLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6CisgICAgICAgIChN
YW5hZ2VyLl9nZXRfdGVzdF9pbnB1dHMpOiBVc2UgcmFuZ2Ugb3ZlciB4cmFuZ2UuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3Rf
cnVubmVyLnB5OgorICAgICAgICAoU2luZ2xlVGVzdFJ1bm5lci5faGFuZGxlX2Vycm9yKTogVXNl
IC5mb3JtYXQgc3RyaW5ncy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS9qc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvci5weToKKyAgICAg
ICAgKEpTT05MYXlvdXRSZXN1bHRzR2VuZXJhdG9yLl9pbnNlcnRfZmFpbHVyZV9zdW1tYXJpZXMp
OiBVc2UgUHl0aG9uIDMgY29tcGF0aWJsZSBpdGVydmFsdWVzLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3Jlc3VsdHMucHk6CisgICAgICAgIChU
ZXN0UmVzdWx0Ll9faW5pdF9fKTogU29ydCB0eXBlIGxpc3QuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHk6
CisgICAgICAgIChSdW5UZXN0LnNldFVwKTogTXVsdGlwbGUgcHJvY2Vzc2VzIGFyZSBidWdneSBp
biB0ZXN0LXdlYmtpdHB5LgorICAgICAgICAoUnVuVGVzdC50ZXN0X2Jhc2ljKTogcmVwbGFjZSBi
dWZsaXN0IHdpdGggZ2V0dmFsdWUoKS4KKyAgICAgICAgKFJ1blRlc3QudGVzdF9jaGlsZF9wcm9j
ZXNzZXNfMik6IERpdHRvLgorICAgICAgICAoUnVuVGVzdC50ZXN0X2NoaWxkX3Byb2Nlc3Nlc19t
aW4pOiBEaXR0by4KKyAgICAgICAgKFJ1blRlc3QudGVzdF9rZXlib2FyZF9pbnRlcnJ1cHQpOiBE
aXR0by4KKyAgICAgICAgKFJ1blRlc3QudGVzdF9taXNzaW5nX2FuZF91bmV4cGVjdGVkX3Jlc3Vs
dHMpOiBDb21wYXJlIGRpY3Rpb25hcmllcyBpbnN0ZWFkIG9mIGpzb24gc3RyaW5ncy4KKyAgICAg
ICAgKFJ1blRlc3QudGVzdF9jcmFzaF93aXRoX3N0ZGVycik6IERpdHRvLgorICAgICAgICAoUnVu
VGVzdC50ZXN0X3JlZnRlc3Rfc2hvdWxkX25vdF91c2VfbmFtaW5nX2NvbnZlbnRpb25faWZfbm90
X2xpc3RlZF9pbl9yZWZ0ZXN0bGlzdCk6IERpdHRvLgorICAgICAgICAoRW5kVG9FbmRUZXN0LnRl
c3RfcmVmdGVzdF93aXRoX3R3b19ub3RyZWZzKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW0ucHk6CisgICAgICAgIChN
ZXRlcmVkU3RyZWFtLndyaXRlKTogRmx1c2ggc3RyZWFtIGFmdGVyIHdyaXRpbmcuCisgICAgICAg
IChNZXRlcmVkU3RyZWFtLl9lcmFzZV9sYXN0X3BhcnRpYWxfbGluZSk6IERpdHRvLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5OgorICAg
ICAgICAoUHJpbnRlci5fcHJpbnRfZGlyZWN0b3J5X3RpbWluZ3MpOiBDYW4ndCBjb21wYXJlIHN0
cmluZyB0byBpbnRlZ2VyLgorICAgICAgICAoUHJpbnRlci5fcHJpbnRfc3RhdGlzdGljc19mb3Jf
dGVzdF90aW1pbmdzKTogVXNlIGludGVnZXIgZGl2aXNpb24uCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9wb3J0L2Rhcndpbi5weToKKyAgICAgICAgKERhcndpblBvcnQuX21lcmdlX2NyYXNo
X2xvZ3MpOiBVc2UgaXRlbXMgb3ZlciBpdGVyaXRlbXMuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2RldmljZS5weToKKyAgICAgICAgKERldmljZS5fX2hhc2hfXyk6IEFsbG93IGhh
c2hpbmcgb2YgZGV2aWNlcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNl
X3BvcnQucHk6CisgICAgICAgIChEZXZpY2VQb3J0Ll9pbnN0YWxsKTogVXNlIHJhbmdlIG92ZXIg
eHJhbmdlLgorICAgICAgICAoRGV2aWNlUG9ydC5zZXR1cF90ZXN0X3J1bik6IERpdHRvLgorICAg
ICAgICAoRGV2aWNlUG9ydC5jbGVhbl91cF90ZXN0X3J1bik6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHk6CisgICAgICAgIChEcml2ZXJPdXRwdXQuX19p
bml0X18pOiBUZXh0IHNob3VsZCBiZSBkZWNvZGVkLCBhdWRpbyBlbmNvZGVkLgorICAgICAgICAo
RHJpdmVyLl9faW5pdF9fKToKKyAgICAgICAgKERyaXZlci5ydW5fdGVzdCk6CisgICAgICAgIChE
cml2ZXIuX3BhcnNlX2NoaWxkX3Byb2Nlc3Nlc19vdXRwdXQpOiBPdXRwdXQgaXMgYnl0ZSBhcnJh
eS4KKyAgICAgICAgKERyaXZlci5fY2hlY2tfZm9yX2RyaXZlcl90aW1lb3V0KTogRGl0dG8uCisg
ICAgICAgIChEcml2ZXIuX2NoZWNrX2Zvcl9hZGRyZXNzX3Nhbml0aXplcl92aW9sYXRpb24pOiBF
cnJvciBsaW5lcyBhcmUgYnl0ZSBhcnJheXMuCisgICAgICAgIChEcml2ZXIuX2NoZWNrX2Zvcl9k
cml2ZXJfY3Jhc2hfb3JfdW5yZXNwb25zaXZlbmVzcyk6IERpdHRvLgorICAgICAgICAoRHJpdmVy
Ll9yZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrKTogSWYgYSBibG9jayBpcyBiYXNlNjQgZW5jb2Rl
ZCwgd2Ugd2FudCB0aGUgZGVjb2RlZAorICAgICAgICBjb250ZW50LCBvdGhlcndpc2UsIHdlIHdh
bnQgdGhlIGVuY29kZWQgY29udGVudC4KKyAgICAgICAgKERyaXZlci5fcmVhZF9oZWFkZXIpOiBM
aW5lcyBhcmUgYnl0ZSBhcnJheXMsIGRlY29kZSB0aGVtIGJlZm9yZSBwcm9jZXNzaW5nLgorICAg
ICAgICAoRHJpdmVyLl9wcm9jZXNzX3N0ZG91dF9saW5lKTogQmxvY2tzIGFyZSBieXRlIGFycmF5
cy4KKyAgICAgICAgKERyaXZlci5fc3RyaXBfZW9mKTogTGluZXMgc2hvdWxkIGJlIGJ5dGUgYXJy
YXlzLCBub3Qgc3RyaW5ncy4KKyAgICAgICAgKERyaXZlci5fcmVhZF9ibG9jayk6IFN0YW5kYXJk
aXplIGVuY29kaW5nIGluIGJsb2Nrcy4KKyAgICAgICAgKENvbnRlbnRCbG9jay5fX2luaXRfXyk6
IENvbnRlbnQgc2hvdWxkIGJlIGEgYnl0ZSBhcnJheS4KKyAgICAgICAgKENvbnRlbnRCbG9jay5k
ZWNvZGVfY29udGVudCk6IEF0dGVtcHQgdG8gZGVjb2RlIGNvbnRlbnQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weToKKyAgICAgICAgKERyaXZlclRl
c3QudGVzdF9yZWFkX2JpbmFyeV9ibG9jayk6IENvbnRlbnQgc2hvdWxkIGJlIGVuY29kZWQuCisg
ICAgICAgIChEcml2ZXJUZXN0LnRlc3RfcmVhZF9iYXNlNjRfYmxvY2spOiBEaXR0by4KKyAgICAg
ICAgKERyaXZlclRlc3QudGVzdF9jaGVja19mb3JfZHJpdmVyX2NyYXNoKTogU2VydmVyUHJvY2Vz
cyBvdXRwdXQgc2hvdWxkIGJlIGEgYnl0ZSBhcnJheS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BvcnQvaW1hZ2VfZGlmZi5weToKKyAgICAgICAgKEltYWdlRGlmZmVyLmRpZmZfaW1hZ2Up
OiBJbWFnZURpZmYgb3V0cHV0IGlzIGluIGJ5dGUgYXJyYXlzLgorICAgICAgICAoSW1hZ2VEaWZm
ZXIuX3JlYWQpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVy
X3Byb2Nlc3MucHk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLndyaXRlKTogRW5jb2RlIGRhdGEg
YmVmb3JlIHdyaXRpbmcgaXQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZl
cl9wcm9jZXNzX21vY2sucHk6CisgICAgICAgIChNb2NrU2VydmVyUHJvY2Vzcy5fX2luaXRfXyk6
IENvbnZlcnQgc3RyaW5nIG1vY2sgb3V0cHV0IHRvIGJ5dGVzLgorICAgICAgICAoTW9ja1NlcnZl
clByb2Nlc3MucmVhZF9zdGRvdXRfbGluZSk6IFN0ZG91dCBsaW5lcyBhcmUgYnl0ZSBhcnJheXMu
CisgICAgICAgIChNb2NrU2VydmVyUHJvY2Vzcy5yZWFkX3N0ZG91dCk6IERpdHRvLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weToKKyAgICAgICAg
KFNpbXVsYXRvclByb2Nlc3MuTm9uQmxvY2tpbmdGaWxlRnJvbVNvY2tldC5jbG9zZSk6IERvbid0
IGRvdWJsZSBjbG9zZSBzb2NrZXQgaW4gUHl0aG9uIDMuCisgICAgICAgIChTaW11bGF0b3JQcm9j
ZXNzLl9zdGFydCk6IFN0ZGluIHNob3VsZCBiZSBhIGJpbmFyeSBzdHJlYW0uCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHk6CisgICAgICAgICh1bml0X3Rlc3RfbGlzdCk6
IENvbnZlcnQgYXVkaW8gc3RyZWFtcyB0byBieXRlIGFycmF5cy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHk6CisgICAgICAgIChTaW11bGF0ZWRE
ZXZpY2UuaXNfdXNhYmxlKTogRGVjb2RlIHhjcnVuIG91dHB1dC4KKyAgICAgICAgKFNpbXVsYXRl
ZERldmljZS5pbnN0YWxsX2FwcCk6IFVzZSB4cmFuZ2Ugb3ZlciByYW5nZS4KKwogMjAxOS0xMi0x
NiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICAtW1VJ
V0tEb2N1bWVudENvbnRleHQgbWFya2VkVGV4dFJhbmdlXSBpcyB3cm9uZyB3aGVuIHRoZSBjYXJl
dCBpcyBub3QgYXQgdGhlIHN0YXJ0IG9mIG1hcmtlZCB0ZXh0CkluZGV4OiBUb29scy9TY3JpcHRz
L3Rlc3Qtd2Via2l0cHktcHl0aG9uMwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3Rlc3Qt
d2Via2l0cHktcHl0aG9uMwkocmV2aXNpb24gMjUzNjAzKQorKysgVG9vbHMvU2NyaXB0cy90ZXN0
LXdlYmtpdHB5LXB5dGhvbjMJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNyw3IEBAIFBZVEhP
TjNfQ09NUEFUSUJMRV9ESVJFQ1RPUklFUyA9IFsKICAgJ3dlYmtpdHB5LmJlbmNobWFya19ydW5u
ZXInLAogICAnd2Via2l0cHkuYnJvd3NlcnBlcmZkYXNoJywKICAgJ3dlYmtpdHB5LmNvbW1vbics
Ci0gICd3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMnLAotICAnd2Via2l0cHkubGF5
b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlJywKLSAgJ3dlYmtpdHB5LmxheW91dF90ZXN0cy5tb2Rl
bHMnLAotICAnd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMnLAotICAnd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnZpZXdzJywKKyAgJ3dlYmtpdHB5LmxheW91dF90ZXN0cycsCiAgICd3ZWJraXRw
eS5wZXJmb3JtYW5jZV90ZXN0cycsCiAgICd3ZWJraXRweS5wb3J0JywKICAgJ3dlYmtpdHB5LnJl
c3VsdHMnLApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbWVzc2FnZV9wb29s
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL21lc3NhZ2Vf
cG9vbC5weQkocmV2aXNpb24gMjUzNjAzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbWVzc2FnZV9wb29sLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xODUsMjAgKzE4NSwyMiBAQCBj
bGFzcyBfTWVzc2FnZVBvb2wob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAg
ICAgZGVmIF9sb29wKHNlbGYsIGJsb2NrKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hp
bGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBpZiBsZW4oc2VsZi5fd29ya2Vyc19zdG9wcGVkKSA9
PSBsZW4oc2VsZi5fd29ya2Vycyk6Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrID0gRmFsc2UK
KyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl93b3JrZXJzX3N0
b3BwZWQpID09IGxlbihzZWxmLl93b3JrZXJzKToKKyAgICAgICAgICAgICAgICBibG9jayA9IEZh
bHNlCisKKyAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5f
bWVzc2FnZXNfdG9fbWFuYWdlci5nZXQoYmxvY2spCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9n
X21lc3NhZ2VzKG1lc3NhZ2UubG9ncykKLSAgICAgICAgICAgICAgICBpZiBtZXNzYWdlLmZyb21f
dXNlcjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsbGVyLmhhbmRsZShtZXNzYWdlLm5h
bWUsIG1lc3NhZ2Uuc3JjLCAqbWVzc2FnZS5hcmdzKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQotICAgICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2VsZiwgJ19oYW5kbGVfJyAr
IG1lc3NhZ2UubmFtZSkKLSAgICAgICAgICAgICAgICBhc3NlcnQgbWV0aG9kLCAnYmFkIG1lc3Nh
Z2UgJXMnICUgcmVwcihtZXNzYWdlKQotICAgICAgICAgICAgICAgIG1ldGhvZChtZXNzYWdlLnNy
YywgKm1lc3NhZ2UuYXJncykKLSAgICAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OgotICAgICAgICAg
ICAgcGFzcworICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OgorICAgICAgICAgICAgICAg
IGJyZWFrCisKKyAgICAgICAgICAgIHNlbGYuX2xvZ19tZXNzYWdlcyhtZXNzYWdlLmxvZ3MpCisg
ICAgICAgICAgICBpZiBtZXNzYWdlLmZyb21fdXNlcjoKKyAgICAgICAgICAgICAgICBzZWxmLl9j
YWxsZXIuaGFuZGxlKG1lc3NhZ2UubmFtZSwgbWVzc2FnZS5zcmMsICptZXNzYWdlLmFyZ3MpCisg
ICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2Vs
ZiwgJ19oYW5kbGVfJyArIG1lc3NhZ2UubmFtZSkKKyAgICAgICAgICAgIGFzc2VydCBtZXRob2Qs
ICdiYWQgbWVzc2FnZSAlcycgJSByZXByKG1lc3NhZ2UpCisgICAgICAgICAgICBtZXRob2QobWVz
c2FnZS5zcmMsICptZXNzYWdlLmFyZ3MpCiAKIAogY2xhc3MgV29ya2VyRXhjZXB0aW9uKEJhc2VF
eGNlcHRpb24pOgpAQCAtMjE1LDcgKzIxNywxMyBAQCBjbGFzcyBfTWVzc2FnZShvYmplY3QpOgog
ICAgICAgICBzZWxmLmxvZ3MgPSBsb2dzCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAg
ICAgIHJldHVybiAnX01lc3NhZ2Uoc3JjPSVzLCBuYW1lPSVzLCBhcmdzPSVzLCBmcm9tX3VzZXI9
JXMsIGxvZ3M9JXMpJyAlIChzZWxmLnNyYywgc2VsZi5uYW1lLCBzZWxmLmFyZ3MsIHNlbGYuZnJv
bV91c2VyLCBzZWxmLmxvZ3MpCisgICAgICAgIHJldHVybiAnX01lc3NhZ2Uoc3JjPXtzcmN9LCBu
YW1lPXtuYW1lfSwgYXJncz17YXJnc30sIGZyb21fdXNlcj17ZnJvbV91c2VyfSwgbG9ncz17bG9n
c30pJy5mb3JtYXQoCisgICAgICAgICAgICBzcmM9c2VsZi5zcmMsCisgICAgICAgICAgICBuYW1l
PXNlbGYubmFtZSwKKyAgICAgICAgICAgIGFyZ3M9c2VsZi5hcmdzLAorICAgICAgICAgICAgZnJv
bV91c2VyPXNlbGYuZnJvbV91c2VyLAorICAgICAgICAgICAgbG9ncz1zZWxmLmxvZ3MsCisgICAg
ICAgICkKIAogCiBjbGFzcyBfV29ya2VyKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKQEAgLTIy
Myw3ICsyMzEsNyBAQCBjbGFzcyBfV29ya2VyKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKICAg
ICAgICAgc3VwZXIoX1dvcmtlciwgc2VsZikuX19pbml0X18oKQogICAgICAgICBzZWxmLmhvc3Qg
PSBob3N0CiAgICAgICAgIHNlbGYud29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIKLSAgICAg
ICAgc2VsZi5uYW1lID0gJ3dvcmtlci8lZCcgJSB3b3JrZXJfbnVtYmVyCisgICAgICAgIHNlbGYu
bmFtZSA9ICd3b3JrZXIve30nLmZvcm1hdCh3b3JrZXJfbnVtYmVyKQogICAgICAgICBzZWxmLmxv
Z19tZXNzYWdlcyA9IFtdCiAgICAgICAgIHNlbGYubG9nX2xldmVsID0gbG9nX2xldmVsCiAgICAg
ICAgIHNlbGYuX3J1bm5pbmdfaW5saW5lID0gcnVubmluZ19pbmxpbmUKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3dhdmVkaWZmLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3dhdmVkaWZmLnB5CShyZXZpc2lvbiAyNTM2MDMpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi93YXZlZGlmZi5weQkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB3YXZl
CiAKLWZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVf
Y29tcGF0aWJpbGl0eSBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8KIAogCiBjbGFzcyBXYXZlRGlm
ZihvYmplY3QpOgpAQCAtMzUsMTIgKzM1LDEyIEBAIGNsYXNzIFdhdmVEaWZmKG9iamVjdCk6CiAg
ICAgX3RvbGVyYW5jZSA9IDEKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbjEsIGluMik6Ci0g
ICAgICAgIGlmIGlzaW5zdGFuY2UoaW4xLCBmaWxlKToKLSAgICAgICAgICAgIHdhdmVGaWxlMSA9
IHdhdmUub3BlbihpbjEsICdyYicpCisgICAgICAgIGlmIGlzaW5zdGFuY2UoaW4xLCBzdHIpOgor
ICAgICAgICAgICAgd2F2ZUZpbGUxID0gd2F2ZS5vcGVuKFN0cmluZ0lPKGluMSksICdyJykKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIHdhdmVGaWxlMSA9IHdhdmUub3BlbihCeXRlc0lPKGlu
MSksICdyYicpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoaW4yLCBmaWxlKToKLSAgICAgICAgICAg
IHdhdmVGaWxlMSA9IHdhdmUub3BlbihpbjIsICdyYicpCisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
aW4yLCBzdHIpOgorICAgICAgICAgICAgd2F2ZUZpbGUyID0gd2F2ZS5vcGVuKFN0cmluZ0lPKGlu
MiksICdyJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHdhdmVGaWxlMiA9IHdhdmUub3Bl
bihCeXRlc0lPKGluMiksICdyYicpCiAKQEAgLTY2LDEyICs2NiwxMiBAQCBjbGFzcyBXYXZlRGlm
ZihvYmplY3QpOgogCiAgICAgICAgIGFsbERhdGExID0gc2VsZi5fcmVhZFNhbXBsZXMod2F2ZUZp
bGUxLCBzYW1wbGVXaWR0aDEsIGZyYW1lQ291bnQxICogY2hhbm5lbENvdW50MSkKICAgICAgICAg
YWxsRGF0YTIgPSBzZWxmLl9yZWFkU2FtcGxlcyh3YXZlRmlsZTIsIHNhbXBsZVdpZHRoMiwgZnJh
bWVDb3VudDIgKiBjaGFubmVsQ291bnQyKQotICAgICAgICByZXN1bHRzID0gbWFwKHNlbGYuX2Rp
ZmZTYW1wbGUsIGFsbERhdGExLCBhbGxEYXRhMiwgeHJhbmdlKG1heChmcmFtZUNvdW50MSAqIGNo
YW5uZWxDb3VudDEsIGZyYW1lQ291bnQyICogY2hhbm5lbENvdW50MikpKQorICAgICAgICByZXN1
bHRzID0gbGlzdChtYXAoc2VsZi5fZGlmZlNhbXBsZSwgYWxsRGF0YTEsIGFsbERhdGEyLCByYW5n
ZShtYXgoZnJhbWVDb3VudDEgKiBjaGFubmVsQ291bnQxLCBmcmFtZUNvdW50MiAqIGNoYW5uZWxD
b3VudDIpKSkpCiAKICAgICAgICAgY3VtdWxhdGl2ZVNhbXBsZURpZmYgPSBzdW0ocmVzdWx0cykK
LSAgICAgICAgZGlmZmVyaW5nU2FtcGxlQ291bnQgPSBsZW4oZmlsdGVyKGJvb2wsIHJlc3VsdHMp
KQorICAgICAgICBkaWZmZXJpbmdTYW1wbGVDb3VudCA9IGxlbihsaXN0KGZpbHRlcihib29sLCBy
ZXN1bHRzKSkpCiAgICAgICAgIHNlbGYuX2ZpbGVzQXJlSWRlbnRpY2FsID0gbm90IGRpZmZlcmlu
Z1NhbXBsZUNvdW50Ci0gICAgICAgIHNlbGYuX2ZpbGVzQXJlSWRlbnRpY2FsV2l0aGluVG9sZXJh
bmNlID0gbm90IGxlbihmaWx0ZXIobGFtYmRhIHg6IHggPiBzZWxmLl90b2xlcmFuY2UsIHJlc3Vs
dHMpKQorICAgICAgICBzZWxmLl9maWxlc0FyZUlkZW50aWNhbFdpdGhpblRvbGVyYW5jZSA9IG5v
dCBsZW4obGlzdChmaWx0ZXIobGFtYmRhIHg6IHggPiBzZWxmLl90b2xlcmFuY2UsIHJlc3VsdHMp
KSkKIAogICAgICAgICBpZiBkaWZmZXJpbmdTYW1wbGVDb3VudDoKICAgICAgICAgICAgIHNlbGYu
X2RpZmYgKz0gJ1xuJwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlv
bnRlc3QucHkJKHJldmlzaW9uIDI1MzYwMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw4ICsyOSwxMCBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQganNvbgoraW1w
b3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVf
Y29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgb3V0cHV0Y2FwdHVyZSwgcGF0aAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmNyYXNobG9nc191bml0dGVzdCBpbXBvcnQgbWFrZV9tb2NrX2NyYXNoX3JlcG9ydF9kYXJ3aW4K
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0
CkBAIC0xNzYsNyArMTc4LDggQEAgY2xhc3MgUnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgU3Ry
ZWFtVAogCiAgICAgICAgICMgRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IHRlc3Qtd2Vi
a2l0cHkgdG8gd29yawogICAgICAgICAjIHByb3Blcmx5IG9uIGN5Z3dpbiAoYnVnIDYzODQ2KS4K
LSAgICAgICAgc2VsZi5zaG91bGRfdGVzdF9wcm9jZXNzZXMgPSBub3Qgc2VsZi5fcGxhdGZvcm0u
aXNfd2luKCkKKyAgICAgICAgIyBGSVhNRTogTXVsdGlwcm9jZXNzaW5nIGRvZXNuJ3QgZG8gd2Vs
bCB3aGVuIG5lc3RlZCBpbiBQeXRob24gMyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNTI4MCkKKyAgICAgICAgc2VsZi5zaG91bGRfdGVzdF9wcm9jZXNzZXMgPSBu
b3Qgc2VsZi5fcGxhdGZvcm0uaXNfd2luKCkgYW5kIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMCkK
IAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgogICAgICAgICBvcHRpb25zLCBhcmdzID0gcGFy
c2VfYXJncyh0ZXN0c19pbmNsdWRlZD1UcnVlKQpAQCAtMTk1LDcgKzE5OCw3IEBAIGNsYXNzIFJ1
blRlc3QodW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVQKICAgICAgICAgb25lX2xpbmVfc3VtbWFy
eSA9ICIlZCB0ZXN0cyByYW4gYXMgZXhwZWN0ZWQsICVkIGRpZG4ndDpcbiIgJSAoCiAgICAgICAg
ICAgICBkZXRhaWxzLmluaXRpYWxfcmVzdWx0cy50b3RhbCAtIGRldGFpbHMuaW5pdGlhbF9yZXN1
bHRzLmV4cGVjdGVkX3NraXBzIC0gbGVuKGRldGFpbHMuaW5pdGlhbF9yZXN1bHRzLnVuZXhwZWN0
ZWRfcmVzdWx0c19ieV9uYW1lKSwKICAgICAgICAgICAgIGxlbihkZXRhaWxzLmluaXRpYWxfcmVz
dWx0cy51bmV4cGVjdGVkX3Jlc3VsdHNfYnlfbmFtZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShvbmVfbGluZV9zdW1tYXJ5IGluIGxvZ2dpbmdfc3RyZWFtLmJ1Zmxpc3QpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShvbmVfbGluZV9zdW1tYXJ5IGluIGxvZ2dpbmdfc3RyZWFtLmdldHZhbHVl
KCkpCiAKICAgICAgICAgIyBFbnN1cmUgdGhlIHJlc3VsdHMgd2VyZSBzdW1tYXJpemVkIHByb3Bl
cmx5LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRldGFpbHMuc3VtbWFyaXplZF9yZXN1bHRz
WydudW1fcmVncmVzc2lvbnMnXSwgZGV0YWlscy5leGl0X2NvZGUpCkBAIC0yMTksMTQgKzIyMiwx
NCBAQCBjbGFzcyBSdW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBTdHJlYW1UCiAgICAgICAgIGlm
IHNlbGYuc2hvdWxkX3Rlc3RfcHJvY2Vzc2VzOgogICAgICAgICAgICAgXywgcmVndWxhcl9vdXRw
dXQsIF8gPSBsb2dnaW5nX3J1bigKICAgICAgICAgICAgICAgICBbJy0tZGVidWctcnd0LWxvZ2dp
bmcnLCAnLS1jaGlsZC1wcm9jZXNzZXMnLCAnMiddLCBzaGFyZWRfcG9ydD1GYWxzZSkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoWydSdW5uaW5nIDIgJyBpbiBsaW5lIGZvciBsaW5l
IGluIHJlZ3VsYXJfb3V0cHV0LmJ1Zmxpc3RdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShhbnkoWydSdW5uaW5nIDIgJyBpbiBsaW5lIGZvciBsaW5lIGluIHJlZ3VsYXJfb3V0cHV0Lmdl
dHZhbHVlKCkuc3BsaXRsaW5lcygpXSkpCiAKICAgICBkZWYgdGVzdF9jaGlsZF9wcm9jZXNzZXNf
bWluKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnNob3VsZF90ZXN0X3Byb2Nlc3NlczoKICAgICAg
ICAgICAgIF8sIHJlZ3VsYXJfb3V0cHV0LCBfID0gbG9nZ2luZ19ydW4oCiAgICAgICAgICAgICAg
ICAgWyctLWRlYnVnLXJ3dC1sb2dnaW5nJywgJy0tY2hpbGQtcHJvY2Vzc2VzJywgJzInLCAnLWkn
LCAncGFzc2VzL3Bhc3NlcycsICdwYXNzZXMnXSwKICAgICAgICAgICAgICAgICB0ZXN0c19pbmNs
dWRlZD1UcnVlLCBzaGFyZWRfcG9ydD1GYWxzZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShhbnkoWydSdW5uaW5nIDEgJyBpbiBsaW5lIGZvciBsaW5lIGluIHJlZ3VsYXJfb3V0cHV0LmJ1
Zmxpc3RdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoWydSdW5uaW5nIDEgJyBp
biBsaW5lIGZvciBsaW5lIGluIHJlZ3VsYXJfb3V0cHV0LmdldHZhbHVlKCkuc3BsaXRsaW5lcygp
XSkpCiAKICAgICBkZWYgdGVzdF9kcnlydW4oc2VsZik6CiAgICAgICAgIHRlc3RzX3J1biA9IGdl
dF90ZXN0c19ydW4oWyctLWRyeS1ydW4nXSkKQEAgLTI3Miw3ICsyNzUsNyBAQCBjbGFzcyBSdW5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBTdHJlYW1UCiAKICAgICAgICAgaWYgc2VsZi5zaG91bGRf
dGVzdF9wcm9jZXNzZXM6CiAgICAgICAgICAgICBfLCByZWd1bGFyX291dHB1dCwgXyA9IGxvZ2dp
bmdfcnVuKFsnZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCcsICdwYXNzZXMvdGV4dC5o
dG1sJywgJy0tY2hpbGQtcHJvY2Vzc2VzJywgJzInLCAnLS1mb3JjZSddLCB0ZXN0c19pbmNsdWRl
ZD1UcnVlLCBzaGFyZWRfcG9ydD1GYWxzZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShh
bnkoWydJbnRlcnJ1cHRlZCwgZXhpdGluZycgaW4gbGluZSBmb3IgbGluZSBpbiByZWd1bGFyX291
dHB1dC5idWZsaXN0XSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KFsnSW50ZXJy
dXB0ZWQsIGV4aXRpbmcnIGluIGxpbmUgZm9yIGxpbmUgaW4gcmVndWxhcl9vdXRwdXQuZ2V0dmFs
dWUoKS5zcGxpdGxpbmVzKCldKSkKIAogICAgIGRlZiB0ZXN0X25vX3Rlc3RzX2ZvdW5kKHNlbGYp
OgogICAgICAgICBkZXRhaWxzLCBlcnIsIF8gPSBsb2dnaW5nX3J1bihbJ3Jlc291cmNlcyddLCB0
ZXN0c19pbmNsdWRlZD1UcnVlKQpAQCAtNDc2LDEyICs0NzksNTcgQEAgY2xhc3MgUnVuVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSwgU3RyZWFtVAogICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1
ZSwgaG9zdD1ob3N0KQogICAgICAgICBmaWxlX2xpc3QgPSBob3N0LmZpbGVzeXN0ZW0ud3JpdHRl
bl9maWxlcy5rZXlzKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXRhaWxzLmV4aXRfY29k
ZSwgMSkKLSAgICAgICAgZXhwZWN0ZWRfdG9rZW4gPSAnInVuZXhwZWN0ZWQiOnsidGV4dC1pbWFn
ZS1jaGVja3N1bS5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1Mi
LCJhY3R1YWwiOiJJTUFHRStURVhUIiwiaW1hZ2VfZGlmZl9wZXJjZW50IjoxfSwibWlzc2luZ190
ZXh0Lmh0bWwiOnsicmVwb3J0IjoiTUlTU0lORyIsImV4cGVjdGVkIjoiUEFTUyIsImlzX21pc3Np
bmdfdGV4dCI6dHJ1ZSwiYWN0dWFsIjoiTUlTU0lORyJ9JwotICAgICAgICBqc29uX3N0cmluZyA9
IGhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRz
L2Z1bGxfcmVzdWx0cy5qc29uJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5n
LmZpbmQoZXhwZWN0ZWRfdG9rZW4pICE9IC0xKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoanNv
bl9zdHJpbmcuZmluZCgnIm51bV9yZWdyZXNzaW9ucyI6MScpICE9IC0xKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUoanNvbl9zdHJpbmcuZmluZCgnIm51bV9mbGFreSI6MCcpICE9IC0xKQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUoanNvbl9zdHJpbmcuZmluZCgnIm51bV9taXNzaW5nIjoxJykg
IT0gLTEpCisgICAgICAgIGV4cGVjdGVkX2RpY3Rpb25hcnkgPSB7CisgICAgICAgICAgICAndmVy
c2lvbic6IDQsCisgICAgICAgICAgICAnZml4YWJsZSc6IDMsCisgICAgICAgICAgICAnc2tpcHBl
ZCc6IDAsCisgICAgICAgICAgICAnbnVtX3Bhc3Nlcyc6IDAsCisgICAgICAgICAgICAnbnVtX2Zs
YWt5JzogMCwKKyAgICAgICAgICAgICdudW1fbWlzc2luZyc6IDEsCisgICAgICAgICAgICAnbnVt
X3JlZ3Jlc3Npb25zJzogMSwKKyAgICAgICAgICAgICd1c2VzX2V4cGVjdGF0aW9uc19maWxlJzog
VHJ1ZSwKKyAgICAgICAgICAgICdpbnRlcnJ1cHRlZCc6IEZhbHNlLAorICAgICAgICAgICAgJ2xh
eW91dF90ZXN0c19kaXInOiAnL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMnLAorICAgICAgICAg
ICAgJ2hhc19wcmV0dHlfcGF0Y2gnOiBGYWxzZSwKKyAgICAgICAgICAgICdwaXhlbF90ZXN0c19l
bmFibGVkJzogVHJ1ZSwKKyAgICAgICAgICAgICdvdGhlcl9jcmFzaGVzJzoge30sCisgICAgICAg
ICAgICAnZGF0ZSc6ICcxMDoxMEFNIG9uIERlY2VtYmVyIDEzLCAyMDE5JywKKyAgICAgICAgICAg
ICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICAgICAnZmFpbHVyZXMnOiB7CisgICAgICAgICAgICAg
ICAgICAgICdleHBlY3RlZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nX2lt
YWdlLmh0bWwnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGVjdGVkJzogJ1BB
U1MgTUlTU0lORycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdHVhbCc6ICdNSVNT
SU5HJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfbWlzc2luZ19pbWFnZSc6IFRy
dWUsCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB9LCAn
dW5leHBlY3RlZCc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nX3RleHQuaHRt
bCc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVwb3J0JzogJ01JU1NJTkcnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHBlY3RlZCc6ICdQQVNTJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnYWN0dWFsJzogJ01JU1NJTkcnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdpc19taXNzaW5nX3RleHQnOiBUcnVlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgfSwgJ3RleHQtaW1hZ2UtY2hlY2tzdW0uaHRtbCc6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAncmVwb3J0JzogJ1JFR1JFU1NJT04nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdleHBlY3RlZCc6ICdQQVNTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
YWN0dWFsJzogJ0lNQUdFK1RFWFQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbWFn
ZV9kaWZmX3BlcmNlbnQnOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAg
ICAgfQorICAgICAgICBhY3R1YWxfZGljdGlvbmFyeSA9IGpzb24ubG9hZHMoaG9zdC5maWxlc3lz
dGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRz
Lmpzb24nKVtsZW4oJ0FERF9SRVNVTFRTKCcpOi0yXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIHNvcnRlZChsaXN0KGV4cGVjdGVkX2RpY3Rpb25hcnlbJ3Rlc3RzJ11b
J2ZhaWx1cmVzJ11bJ2V4cGVjdGVkJ10pKSwKKyAgICAgICAgICAgIHNvcnRlZChsaXN0KGFjdHVh
bF9kaWN0aW9uYXJ5Wyd0ZXN0cyddWydmYWlsdXJlcyddWydleHBlY3RlZCddKSksCisgICAgICAg
ICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNvcnRlZChsaXN0KGV4
cGVjdGVkX2RpY3Rpb25hcnlbJ3Rlc3RzJ11bJ2ZhaWx1cmVzJ11bJ3VuZXhwZWN0ZWQnXSkpLAor
ICAgICAgICAgICAgc29ydGVkKGxpc3QoYWN0dWFsX2RpY3Rpb25hcnlbJ3Rlc3RzJ11bJ2ZhaWx1
cmVzJ11bJ3VuZXhwZWN0ZWQnXSkpLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWRfZGljdGlvbmFyeVsnbnVtX3JlZ3Jlc3Npb25zJ10sIGFjdHVhbF9kaWN0aW9u
YXJ5WydudW1fcmVncmVzc2lvbnMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl
ZF9kaWN0aW9uYXJ5WydudW1fZmxha3knXSwgYWN0dWFsX2RpY3Rpb25hcnlbJ251bV9mbGFreSdd
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2RpY3Rpb25hcnlbJ251bV9taXNz
aW5nJ10sIGFjdHVhbF9kaWN0aW9uYXJ5WydudW1fbWlzc2luZyddKQogCiAgICAgZGVmIHRlc3Rf
cGl4ZWxfdGVzdF9kaXJlY3RvcmllcyhzZWxmKToKICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkK
QEAgLTUxNyw3ICs1NjUsMzkgQEAgY2xhc3MgUnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgU3Ry
ZWFtVAogICAgIGRlZiB0ZXN0X2NyYXNoX3dpdGhfc3RkZXJyKHNlbGYpOgogICAgICAgICBob3N0
ID0gTW9ja0hvc3QoKQogICAgICAgICBfLCByZWd1bGFyX291dHB1dCwgXyA9IGxvZ2dpbmdfcnVu
KFsnZmFpbHVyZXMvdW5leHBlY3RlZC9jcmFzaC13aXRoLXN0ZGVyci5odG1sJ10sIHRlc3RzX2lu
Y2x1ZGVkPVRydWUsIGhvc3Q9aG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvc3QuZmls
ZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVz
dWx0cy5qc29uJykuZmluZCgneyJjcmFzaC13aXRoLXN0ZGVyci5odG1sIjp7InJlcG9ydCI6IlJF
R1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJDUkFTSCIsImhhc19zdGRlcnIi
OnRydWV9fScpICE9IC0xKQorICAgICAgICBhY3R1YWxfZGljdGlvbmFyeSA9IGpzb24ubG9hZHMo
aG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMv
ZnVsbF9yZXN1bHRzLmpzb24nKVtsZW4oJ0FERF9SRVNVTFRTKCcpOi0yXSkKKyAgICAgICAgZXhw
ZWN0ZWRfZGljdGlvbmFyeSA9IHsKKyAgICAgICAgICAgICd2ZXJzaW9uJzogNCwKKyAgICAgICAg
ICAgICdmaXhhYmxlJzogMSwKKyAgICAgICAgICAgICdza2lwcGVkJzogMCwKKyAgICAgICAgICAg
ICdudW1fcGFzc2VzJzogMCwKKyAgICAgICAgICAgICdudW1fZmxha3knOiAwLAorICAgICAgICAg
ICAgJ251bV9taXNzaW5nJzogMCwKKyAgICAgICAgICAgICdudW1fcmVncmVzc2lvbnMnOiAxLAor
ICAgICAgICAgICAgJ3VzZXNfZXhwZWN0YXRpb25zX2ZpbGUnOiBUcnVlLAorICAgICAgICAgICAg
J2ludGVycnVwdGVkJzogRmFsc2UsCisgICAgICAgICAgICAnbGF5b3V0X3Rlc3RzX2Rpcic6ICcv
dGVzdC5jaGVja291dC9MYXlvdXRUZXN0cycsCisgICAgICAgICAgICAnaGFzX3ByZXR0eV9wYXRj
aCc6IEZhbHNlLAorICAgICAgICAgICAgJ3BpeGVsX3Rlc3RzX2VuYWJsZWQnOiBUcnVlLAorICAg
ICAgICAgICAgJ290aGVyX2NyYXNoZXMnOiB7fSwKKyAgICAgICAgICAgICdkYXRlJzogJzEwOjE4
QU0gb24gRGVjZW1iZXIgMTMsIDIwMTknLAorICAgICAgICAgICAgJ3Rlc3RzJzogeworICAgICAg
ICAgICAgICAgICdmYWlsdXJlcyc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3VuZXhwZWN0ZWQn
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnY3Jhc2gtd2l0aC1zdGRlcnIuaHRtbCc6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzX3N0ZGVycic6IFRydWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3JlcG9ydCc6ICdSRUdSRVNTSU9OJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnZXhwZWN0ZWQnOiAnUEFTUycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2FjdHVhbCc6ICdDUkFTSCcsCisgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9
LAorICAgICAgICB9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzb3J0
ZWQobGlzdChleHBlY3RlZF9kaWN0aW9uYXJ5Wyd0ZXN0cyddWydmYWlsdXJlcyddWyd1bmV4cGVj
dGVkJ10pKSwKKyAgICAgICAgICAgIHNvcnRlZChsaXN0KGFjdHVhbF9kaWN0aW9uYXJ5Wyd0ZXN0
cyddWydmYWlsdXJlcyddWyd1bmV4cGVjdGVkJ10pKSwKKyAgICAgICAgKQogCiAgICAgZGVmIHRl
c3Rfbm9faW1hZ2VfZmFpbHVyZV93aXRoX2ltYWdlX2RpZmYoc2VsZik6CiAgICAgICAgIGhvc3Qg
PSBNb2NrSG9zdCgpCkBAIC03NDAsMTEgKzgyMCw2NiBAQCBjbGFzcyBSdW5UZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlLCBTdHJlYW1UCiAgICAgZGVmIHRlc3RfcmVmdGVzdF9zaG91bGRfbm90X3VzZV9u
YW1pbmdfY29udmVudGlvbl9pZl9ub3RfbGlzdGVkX2luX3JlZnRlc3RsaXN0KHNlbGYpOgogICAg
ICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICBfLCBlcnIsIF8gPSBsb2dnaW5nX3J1bihb
Jy0tbm8tc2hvdy1yZXN1bHRzJywgJ3JlZnRlc3RzL2Zvby8nXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1
ZSwgaG9zdD1ob3N0KQotICAgICAgICBqc29uX3N0cmluZyA9IGhvc3QuZmlsZXN5c3RlbS5yZWFk
X3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJykK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJ1bmxpc3RlZHRlc3Qu
aHRtbCI6eyJyZXBvcnQiOiJNSVNTSU5HIiwiZXhwZWN0ZWQiOiJQQVNTIiwiaXNfbWlzc2luZ190
ZXh0Ijp0cnVlLCJhY3R1YWwiOiJNSVNTSU5HIiwiaXNfbWlzc2luZ19pbWFnZSI6dHJ1ZX0nKSAh
PSAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJudW1fcmVn
cmVzc2lvbnMiOjQnKSAhPSAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5n
LmZpbmQoJyJudW1fZmxha3kiOjAnKSAhPSAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpz
b25fc3RyaW5nLmZpbmQoJyJudW1fbWlzc2luZyI6MScpICE9IC0xKQorICAgICAgICBleHBlY3Rl
ZF9kaWN0aW9uYXJ5ID0geworICAgICAgICAgICAgJ3ZlcnNpb24nOiA0LAorICAgICAgICAgICAg
J2ZpeGFibGUnOiA1LAorICAgICAgICAgICAgJ3NraXBwZWQnOiAwLAorICAgICAgICAgICAgJ251
bV9wYXNzZXMnOiAzLAorICAgICAgICAgICAgJ251bV9mbGFreSc6IDAsCisgICAgICAgICAgICAn
bnVtX21pc3NpbmcnOiAxLAorICAgICAgICAgICAgJ251bV9yZWdyZXNzaW9ucyc6IDQsCisgICAg
ICAgICAgICAndXNlc19leHBlY3RhdGlvbnNfZmlsZSc6IFRydWUsCisgICAgICAgICAgICAnaW50
ZXJydXB0ZWQnOiBGYWxzZSwKKyAgICAgICAgICAgICdsYXlvdXRfdGVzdHNfZGlyJzogJy90ZXN0
LmNoZWNrb3V0L0xheW91dFRlc3RzJywKKyAgICAgICAgICAgICdoYXNfcHJldHR5X3BhdGNoJzog
RmFsc2UsCisgICAgICAgICAgICAncGl4ZWxfdGVzdHNfZW5hYmxlZCc6IFRydWUsCisgICAgICAg
ICAgICAnb3RoZXJfY3Jhc2hlcyc6IHt9LAorICAgICAgICAgICAgJ2RhdGUnOiAnMTA6MjdBTSBv
biBEZWNlbWJlciAxMywgMjAxOScsCisgICAgICAgICAgICAndGVzdHMnOiB7CisgICAgICAgICAg
ICAgICAgJ3JlZnRlc3RzJzogeworICAgICAgICAgICAgICAgICAgICAnZm9vJzogeworICAgICAg
ICAgICAgICAgICAgICAgICAgJ211bHRpcGxlLWJvdGgtZmFpbHVyZS5odG1sJzogeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdyZWZ0ZXN0X3R5cGUnOiBbJyE9JywgJz09J10sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcG9ydCc6ICdSRUdSRVNTSU9OJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnZXhwZWN0ZWQnOiAnUEFTUycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2FjdHVhbCc6ICdJTUFHRScsCisgICAgICAgICAgICAgICAgICAgICAgICB9
LCAnbXVsdGlwbGUtbWF0Y2gtZmFpbHVyZS5odG1sJzogeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdyZWZ0ZXN0X3R5cGUnOiBbJz09J10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3JlcG9ydCc6ICdSRUdSRVNTSU9OJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
ZXhwZWN0ZWQnOiAnUEFTUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdHVhbCc6
ICdJTUFHRScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltYWdlX2RpZmZfcGVyY2Vu
dCc6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICB9LCAnbXVsdGlwbGUtbWlzbWF0Y2gtZmFp
bHVyZS5odG1sJzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWZ0ZXN0X3R5cGUn
OiBbJyE9J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcG9ydCc6ICdSRUdSRVNT
SU9OJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwZWN0ZWQnOiAnUEFTUycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdHVhbCc6ICdJTUFHRScsCisgICAgICAgICAg
ICAgICAgICAgICAgICB9LCAndGVzdC5odG1sJzogeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdyZWZ0ZXN0X3R5cGUnOiBbJz09J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3JlcG9ydCc6ICdSRUdSRVNTSU9OJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhw
ZWN0ZWQnOiAnUEFTUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdHVhbCc6ICdJ
TUFHRScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltYWdlX2RpZmZfcGVyY2VudCc6
IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICB9LCAndW5saXN0ZWR0ZXN0Lmh0bWwnOiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcG9ydCc6ICdNSVNTSU5HJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZXhwZWN0ZWQnOiAnUEFTUycsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2FjdHVhbCc6ICdNSVNTSU5HJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnaXNfbWlzc2luZ190ZXh0JzogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnaXNfbWlzc2luZ19pbWFnZSc6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICB9LAorICAgICAgICB9CisgICAgICAgIGFjdHVhbF9kaWN0aW9uYXJ5ID0ganNvbi5sb2Fkcyho
b3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9m
dWxsX3Jlc3VsdHMuanNvbicpW2xlbignQUREX1JFU1VMVFMoJyk6LTJdKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBleHBlY3RlZF9kaWN0aW9uYXJ5Wyd0ZXN0cydd
WydyZWZ0ZXN0cyddWydmb28nXVsndW5saXN0ZWR0ZXN0Lmh0bWwnXSwKKyAgICAgICAgICAgIGFj
dHVhbF9kaWN0aW9uYXJ5Wyd0ZXN0cyddWydyZWZ0ZXN0cyddWydmb28nXVsndW5saXN0ZWR0ZXN0
Lmh0bWwnXSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2Rp
Y3Rpb25hcnlbJ251bV9yZWdyZXNzaW9ucyddLCBhY3R1YWxfZGljdGlvbmFyeVsnbnVtX3JlZ3Jl
c3Npb25zJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfZGljdGlvbmFyeVsn
bnVtX2ZsYWt5J10sIGFjdHVhbF9kaWN0aW9uYXJ5WydudW1fZmxha3knXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChleHBlY3RlZF9kaWN0aW9uYXJ5WydudW1fbWlzc2luZyddLCBhY3R1YWxf
ZGljdGlvbmFyeVsnbnVtX21pc3NpbmcnXSkKIAogICAgIGRlZiB0ZXN0X2FkZGl0aW9uYWxfcGxh
dGZvcm1fZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19y
dW4oWyctLWFkZGl0aW9uYWwtcGxhdGZvcm0tZGlyZWN0b3J5JywgJy90bXAvZm9vJ10pKQpAQCAt
OTQ4LDEyICsxMDgzLDE4IEBAIGNsYXNzIEVuZFRvRW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgibXVsdGlwbGUtbWF0Y2gtc3VjY2Vzcy5odG1sIiBu
b3QgaW4ganNvblsidGVzdHMiXVsicmVmdGVzdHMiXVsiZm9vIl0pCiAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSgibXVsdGlwbGUtbWlzbWF0Y2gtc3VjY2Vzcy5odG1sIiBub3QgaW4ganNvblsidGVz
dHMiXVsicmVmdGVzdHMiXVsiZm9vIl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgibXVsdGlw
bGUtYm90aC1zdWNjZXNzLmh0bWwiIG5vdCBpbiBqc29uWyJ0ZXN0cyJdWyJyZWZ0ZXN0cyJdWyJm
b28iXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqc29uWyJ0ZXN0cyJdWyJyZWZ0ZXN0cyJd
WyJmb28iXVsibXVsdGlwbGUtbWF0Y2gtZmFpbHVyZS5odG1sIl0sCi0gICAgICAgICAgICB7ImV4
cGVjdGVkIjogIlBBU1MiLCAiYWN0dWFsIjogIklNQUdFIiwgInJlZnRlc3RfdHlwZSI6IFsiPT0i
XSwgImltYWdlX2RpZmZfcGVyY2VudCI6IDEsICJyZXBvcnQiOiAiUkVHUkVTU0lPTiJ9KQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGpzb25bInRlc3RzIl1bInJlZnRlc3RzIl1bImZvbyJdWyJt
dWx0aXBsZS1taXNtYXRjaC1mYWlsdXJlLmh0bWwiXSwKLSAgICAgICAgICAgIHsiZXhwZWN0ZWQi
OiAiUEFTUyIsICJhY3R1YWwiOiAiSU1BR0UiLCAicmVmdGVzdF90eXBlIjogWyIhPSJdLCAicmVw
b3J0IjogIlJFR1JFU1NJT04ifSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqc29uWyJ0ZXN0
cyJdWyJyZWZ0ZXN0cyJdWyJmb28iXVsibXVsdGlwbGUtYm90aC1mYWlsdXJlLmh0bWwiXSwKLSAg
ICAgICAgICAgIHsiZXhwZWN0ZWQiOiAiUEFTUyIsICJhY3R1YWwiOiAiSU1BR0UiLCAicmVmdGVz
dF90eXBlIjogWyI9PSIsICIhPSJdLCAicmVwb3J0IjogIlJFR1JFU1NJT04ifSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGpzb25bInRlc3RzIl1bInJlZnRlc3RzIl1b
ImZvbyJdWyJtdWx0aXBsZS1tYXRjaC1mYWlsdXJlLmh0bWwiXSwKKyAgICAgICAgICAgIHsiZXhw
ZWN0ZWQiOiAiUEFTUyIsICJhY3R1YWwiOiAiSU1BR0UiLCAicmVmdGVzdF90eXBlIjogWyI9PSJd
LCAiaW1hZ2VfZGlmZl9wZXJjZW50IjogMSwgInJlcG9ydCI6ICJSRUdSRVNTSU9OIn0sCisgICAg
ICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGpzb25bInRlc3Rz
Il1bInJlZnRlc3RzIl1bImZvbyJdWyJtdWx0aXBsZS1taXNtYXRjaC1mYWlsdXJlLmh0bWwiXSwK
KyAgICAgICAgICAgIHsiZXhwZWN0ZWQiOiAiUEFTUyIsICJhY3R1YWwiOiAiSU1BR0UiLCAicmVm
dGVzdF90eXBlIjogWyIhPSJdLCAicmVwb3J0IjogIlJFR1JFU1NJT04ifSwKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAganNvblsidGVzdHMiXVsicmVm
dGVzdHMiXVsiZm9vIl1bIm11bHRpcGxlLWJvdGgtZmFpbHVyZS5odG1sIl0sCisgICAgICAgICAg
ICB7ImV4cGVjdGVkIjogIlBBU1MiLCAiYWN0dWFsIjogIklNQUdFIiwgInJlZnRlc3RfdHlwZSI6
IHNvcnRlZChbIj09IiwgIiE9Il0pLCAicmVwb3J0IjogIlJFR1JFU1NJT04ifSwKKyAgICAgICAg
KQogCiAKIGNsYXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBTdHJlYW1UZXN0
aW5nTWl4aW4pOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X2ZpbmRlci5w
eQkocmV2aXNpb24gMjUzNjAzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsNyArMTAyLDcgQEAgY2xhc3MgTGF5b3V0VGVzdEZpbmRlcihvYmplY3QpOgogICAgICAgICAg
ICAgZXhjZXB0IElPRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVy
cm5vLkVOT0VOVDoKICAgICAgICAgICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnJykKLSAgICAg
ICAgICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnLS10ZXN0LWxpc3QgZmlsZSAiJXMiIG5vdCBm
b3VuZCcgJSBmaWxlKQorICAgICAgICAgICAgICAgICAgICBfbG9nLmNyaXRpY2FsKCctLXRlc3Qt
bGlzdCBmaWxlICJ7fSIgbm90IGZvdW5kJy5mb3JtYXQoZmlsZW5hbWVzKSkKICAgICAgICAgICAg
ICAgICByYWlzZQogICAgICAgICByZXR1cm4gdGVzdHMKIApAQCAtMTc2LDcgKzE3Niw3IEBAIGNs
YXNzIExheW91dFRlc3RGaW5kZXIob2JqZWN0KToKICAgICAgICAgICAgIGlmIHJvdW5kZWRfdGVz
dHMgJSB0ZXN0X3NpemUgIT0gMDoKICAgICAgICAgICAgICAgICByb3VuZGVkX3Rlc3RzID0gKG51
bV90ZXN0cyArIHRlc3Rfc2l6ZSAtIChudW1fdGVzdHMgJSB0ZXN0X3NpemUpKQogCi0gICAgICAg
ICAgICBjaHVua19sZW4gPSByb3VuZGVkX3Rlc3RzIC8gdGVzdF9zaXplCisgICAgICAgICAgICBj
aHVua19sZW4gPSByb3VuZGVkX3Rlc3RzIC8vIHRlc3Rfc2l6ZQogICAgICAgICAgICAgc2xpY2Vf
c3RhcnQgPSBjaHVua19sZW4gKiAoY2h1bmtfbnVtIC0gMSkKICAgICAgICAgICAgICMgSXQgZG9l
cyBub3QgbWluZCBpZiB3ZSBnbyBvdmVyIHRlc3Rfc2l6ZS4KIApJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyLnB5CShyZXZpc2lvbiAyNTM2MDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsOSAr
MTQ1LDkgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogCiAgICAgZGVmIF9nZXRfdGVzdF9pbnB1
dHMoc2VsZiwgdGVzdHNfdG9fcnVuLCByZXBlYXRfZWFjaCwgaXRlcmF0aW9ucywgZGV2aWNlX3R5
cGU9Tm9uZSk6CiAgICAgICAgIHRlc3RfaW5wdXRzID0gW10KLSAgICAgICAgZm9yIF8gaW4geHJh
bmdlKGl0ZXJhdGlvbnMpOgorICAgICAgICBmb3IgXyBpbiByYW5nZShpdGVyYXRpb25zKToKICAg
ICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzX3RvX3J1bjoKLSAgICAgICAgICAgICAgICBmb3Ig
XyBpbiB4cmFuZ2UocmVwZWF0X2VhY2gpOgorICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdl
KHJlcGVhdF9lYWNoKToKICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbnB1dHMuYXBwZW5kKHNl
bGYuX3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdCwgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpKQog
ICAgICAgICByZXR1cm4gdGVzdF9pbnB1dHMKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Np
bmdsZV90ZXN0X3J1bm5lci5weQkocmV2aXNpb24gMjUzNjAzKQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUK
IGltcG9ydCB0aW1lCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0
eSBpbXBvcnQgZGVjb2RlX2ZvcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxl
cnMgaW1wb3J0IHRlc3RfcmVzdWx0X3dyaXRlcgogZnJvbSB3ZWJraXRweS5wb3J0LmRyaXZlciBp
bXBvcnQgRHJpdmVySW5wdXQsIERyaXZlck91dHB1dAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwpAQCAtMjE0LDcgKzIxNSw3IEBAIGNs
YXNzIFNpbmdsZVRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgZWxpZiBkcml2ZXJfb3V0cHV0
LmVycm9yOgogICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgb3V0cHV0IHN0ZGVyciBsaW5l
czoiICUgKHNlbGYuX3dvcmtlcl9uYW1lLCB0ZXN0bmFtZSkpCiAgICAgICAgIGZvciBsaW5lIGlu
IGRyaXZlcl9vdXRwdXQuZXJyb3Iuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgX2xvZy5kZWJ1
ZygiICAlcyIgJSBsaW5lKQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiICB7fSIuZm9ybWF0KGRl
Y29kZV9mb3IobGluZSwgc3RyKSkpCiAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCiAgICAgZGVm
IF9jb21wYXJlX291dHB1dChzZWxmLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LCBkcml2ZXJfb3V0
cHV0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL2pzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5
b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5CShyZXZpc2lvbiAyNTM2MDMpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX2xheW91dF9yZXN1
bHRzX2dlbmVyYXRvci5weQkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQCBpbXBvcnQg
bG9nZ2luZwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0
IGpzb25fcmVzdWx0c19nZW5lcmF0b3IKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVs
cyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcworZnJvbSB3ZWJraXRweS5jb21tb24uaXRlcmF0aW9u
X2NvbXBhdGliaWxpdHkgaW1wb3J0IGl0ZXJ2YWx1ZXMKIAogCiBjbGFzcyBKU09OTGF5b3V0UmVz
dWx0c0dlbmVyYXRvcihqc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLkpTT05SZXN1bHRzR2VuZXJhdG9y
KToKQEAgLTEzMiw3ICsxMzMsNyBAQCBjbGFzcyBKU09OTGF5b3V0UmVzdWx0c0dlbmVyYXRvcihq
c29uX3JlCiAgICAgICAgICAgICBzZWxmLkZJWEFCTEUpCiAKICAgICAgICAgbnVtX2ZpeGFibGUg
PSAwCi0gICAgICAgIGZvciBleHBlY3RhdGlvbiBpbiBzZWxmLl9leHBlY3RhdGlvbnMuaXRlcnZh
bHVlcygpOgorICAgICAgICBmb3IgZXhwZWN0YXRpb24gaW4gaXRlcnZhbHVlcyhzZWxmLl9leHBl
Y3RhdGlvbnMpOgogICAgICAgICAgICAgbnVtX2ZpeGFibGUgKz0gbGVuKGV4cGVjdGF0aW9uLm1v
ZGVsKCkuZ2V0X3Rlc3RzX3dpdGhfdGltZWxpbmUodGVzdF9leHBlY3RhdGlvbnMuTk9XKSkKIAog
ICAgICAgICBzZWxmLl9pbnNlcnRfaXRlbV9pbnRvX3Jhd19saXN0KHJlc3VsdHNfZm9yX2J1aWxk
ZXIsIG51bV9maXhhYmxlLCBzZWxmLkFMTF9GSVhBQkxFX0NPVU5UKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcmVzdWx0cy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9y
ZXN1bHRzLnB5CShyZXZpc2lvbiAyNTM2MDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9tb2RlbHMvdGVzdF9yZXN1bHRzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIGNsYXNzIFRlc3RSZXN1bHQob2JqZWN0KToKICAgICAgICAgc2VsZi5mYWlsdXJl
cyA9IGZhaWx1cmVzIG9yIFtdCiAgICAgICAgIHNlbGYudGVzdF9ydW5fdGltZSA9IHRlc3RfcnVu
X3RpbWUgb3IgMCAgIyBUaGUgdGltZSB0YWtlbiB0byBleGVjdXRlIHRoZSB0ZXN0IGl0c2VsZi4K
ICAgICAgICAgc2VsZi5oYXNfc3RkZXJyID0gaGFzX3N0ZGVycgotICAgICAgICBzZWxmLnJlZnRl
c3RfdHlwZSA9IHJlZnRlc3RfdHlwZSBvciBbXQorICAgICAgICBzZWxmLnJlZnRlc3RfdHlwZSA9
IHNvcnRlZChyZWZ0ZXN0X3R5cGUgb3IgW10pCiAgICAgICAgIHNlbGYucGlkID0gcGlkCiAgICAg
ICAgIHNlbGYucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXMgb3IgW10KIApJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW0ucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJl
ZF9zdHJlYW0ucHkJKHJldmlzaW9uIDI1MzYwMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0x
MDksNiArMTA5LDcgQEAgY2xhc3MgTWV0ZXJlZFN0cmVhbShvYmplY3QpOgogCiAgICAgICAgIHRy
eToKICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZSh0aW1lc3RhbXBfc3RyaW5nICsgdHh0
KQorICAgICAgICAgICAgc2VsZi5fc3RyZWFtLmZsdXNoKCkKICAgICAgICAgZXhjZXB0IFVuaWNv
ZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgIG91dHB1dCA9ICcnCiAgICAgICAgICAgICBmb3Ig
YyBpbiB0aW1lc3RhbXBfc3RyaW5nICsgdHh0OgpAQCAtMTE3LDYgKzExOCw3IEBAIGNsYXNzIE1l
dGVyZWRTdHJlYW0ob2JqZWN0KToKICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29k
ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJz8nCiAgICAgICAgICAgICBz
ZWxmLl9zdHJlYW0ud3JpdGUob3V0cHV0KQorICAgICAgICAgICAgc2VsZi5fc3RyZWFtLmZsdXNo
KCkKIAogICAgIGRlZiB3cml0ZWxuKHNlbGYsIHR4dCwgbm93PU5vbmUsIHBpZD1Ob25lKToKICAg
ICAgICAgc2VsZi53cml0ZShzZWxmLl9lbnN1cmVfbmV3bGluZSh0eHQpLCBub3csIHBpZCkKQEAg
LTEyNSw2ICsxMjcsNyBAQCBjbGFzcyBNZXRlcmVkU3RyZWFtKG9iamVjdCk6CiAgICAgICAgIG51
bV9jaGFycyA9IGxlbihzZWxmLl9sYXN0X3BhcnRpYWxfbGluZSkKICAgICAgICAgc2VsZi5fc3Ry
ZWFtLndyaXRlKHNlbGYuX2VyYXN1cmUoc2VsZi5fbGFzdF9wYXJ0aWFsX2xpbmUpKQogICAgICAg
ICBzZWxmLl9sYXN0X3BhcnRpYWxfbGluZSA9ICcnCisgICAgICAgIHNlbGYuX3N0cmVhbS5mbHVz
aCgpCiAKICAgICBkZWYgZmx1c2goc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2xhc3RfcGFydGlh
bF9saW5lOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3Mv
cHJpbnRpbmcucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvdmlld3MvcHJpbnRpbmcucHkJKHJldmlzaW9uIDI1MzYwMykKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yMzksNyArMjM5LDcgQEAgY2xhc3MgUHJpbnRlcihvYmplY3QpOgogICAgICAgICBzZWxm
Ll9wcmludF9kZWJ1ZygiVGltZSB0byBwcm9jZXNzIHNsb3dlc3Qgc3ViZGlyZWN0b3JpZXM6IikK
ICAgICAgICAgbWluX3NlY29uZHNfdG9fcHJpbnQgPSAxMAogICAgICAgICBmb3IgdGltaW5nIGlu
IHRpbWluZ3M6Ci0gICAgICAgICAgICBpZiB0aW1pbmdbMF0gPiBtaW5fc2Vjb25kc190b19wcmlu
dDoKKyAgICAgICAgICAgIGlmIHRpbWluZ1sxXSA+IG1pbl9zZWNvbmRzX3RvX3ByaW50OgogICAg
ICAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCIgICVzIHRvb2sgJXMgc2Vjb25kcyB0byBy
dW4gJXMgdGVzdHMuIiAlIHRpbWluZykKICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoIiIpCiAK
QEAgLTI1NCwxMCArMjU0LDEwIEBAIGNsYXNzIFByaW50ZXIob2JqZWN0KToKICAgICAgICAgcGVy
Y2VudGlsZTk5ID0gdGltaW5nc1tpbnQoLjk5ICogbnVtX3Rlc3RzKV0KIAogICAgICAgICBpZiBu
dW1fdGVzdHMgJSAyID09IDE6Ci0gICAgICAgICAgICBtZWRpYW4gPSB0aW1pbmdzWygobnVtX3Rl
c3RzIC0gMSkgLyAyKSAtIDFdCisgICAgICAgICAgICBtZWRpYW4gPSB0aW1pbmdzWyhudW1fdGVz
dHMgLSAxKSAvLyAyIC0gMV0KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvd2VyID0gdGlt
aW5nc1tudW1fdGVzdHMgLyAyIC0gMV0KLSAgICAgICAgICAgIHVwcGVyID0gdGltaW5nc1tudW1f
dGVzdHMgLyAyXQorICAgICAgICAgICAgbG93ZXIgPSB0aW1pbmdzW251bV90ZXN0cyAvLyAyIC0g
MV0KKyAgICAgICAgICAgIHVwcGVyID0gdGltaW5nc1tudW1fdGVzdHMgLy8gMl0KICAgICAgICAg
ICAgIG1lZGlhbiA9IChmbG9hdChsb3dlciArIHVwcGVyKSkgLyAyCiAKICAgICAgICAgbWVhbiA9
IHN1bSh0aW1pbmdzKSAvIG51bV90ZXN0cwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2Rhcndpbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZGFyd2luLnB5CShyZXZpc2lvbiAyNTM2MDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZGFyd2luLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIERhcndp
blBvcnQoQXBwbGVQb3J0KToKICAgICAgICAgcmV0dXJuIHNlbGYuaG9zdC5maWxlc3lzdGVtLmpv
aW4obG9nX2RpcmVjdG9yeSwgJ0NyYXNoUmVwb3J0ZXInKQogCiAgICAgZGVmIF9tZXJnZV9jcmFz
aF9sb2dzKHNlbGYsIGxvZ3MsIG5ld19sb2dzLCBjcmFzaGVkX3Byb2Nlc3Nlcyk6Ci0gICAgICAg
IGZvciB0ZXN0LCBjcmFzaF9sb2cgaW4gbmV3X2xvZ3MuaXRlcml0ZW1zKCk6CisgICAgICAgIGZv
ciB0ZXN0LCBjcmFzaF9sb2cgaW4gbmV3X2xvZ3MuaXRlbXMoKToKICAgICAgICAgICAgIHRyeToK
ICAgICAgICAgICAgICAgICBpZiB0ZXN0LnNwbGl0KCctJylbMF0gPT0gJ1NhbmRib3gnOgogICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzX25hbWUgPSB0ZXN0LnNwbGl0KCctJylbMV0KSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kZXZpY2UucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZS5weQkocmV2aXNpb24gMjUzNjAzKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZS5weQkod29ya2luZyBjb3B5KQpAQCAt
MTE2LDMgKzExNiw2IEBAIGNsYXNzIERldmljZShvYmplY3QpOgogCiAgICAgZGVmIF9fcmVwcl9f
KHNlbGYpOgogICAgICAgICByZXR1cm4gdSd7fScuZm9ybWF0KHNlbGYucGxhdGZvcm1fZGV2aWNl
KQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLnVk
aWQpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZV9wb3J0LnB5CShy
ZXZpc2lvbiAyNTM2MDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNlX3Bv
cnQucHkJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgRGV2aWNlUG9ydChE
YXJ3aW5Qb3J0KToKICAgICAgICAgICAgIF9sb2cuZGVidWcoJ1NraXBwaW5nIGluc3RhbGxhdGlv
bicpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2VsZi5j
aGlsZF9wcm9jZXNzZXMoKSk6CisgICAgICAgIGZvciBpIGluIHJhbmdlKHNlbGYuY2hpbGRfcHJv
Y2Vzc2VzKCkpOgogICAgICAgICAgICAgZGV2aWNlID0gc2VsZi50YXJnZXRfaG9zdChpKQogICAg
ICAgICAgICAgX2xvZy5kZWJ1Zyh1J0luc3RhbGxpbmcgdG8ge30nLmZvcm1hdChkZXZpY2UpKQog
ICAgICAgICAgICAgIyBXaXRob3V0IHBhc3NpbmcgRFlMRF9MSUJSQVJZX1BBVEgsIGxpYldlYkNv
cmVUZXN0U3VwcG9ydCBjYW5ub3QgYmUgbG9hZGVkIGFuZCBEUlQvV0tUUiB3aWxsIGNyYXNoIHBy
ZS1sYXVuY2gsCkBAIC0xODYsNyArMTg2LDcgQEAgY2xhc3MgRGV2aWNlUG9ydChEYXJ3aW5Qb3J0
KToKIAogICAgICAgICBzZWxmLl9pbnN0YWxsKCkKIAotICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uo
c2VsZi5jaGlsZF9wcm9jZXNzZXMoKSk6CisgICAgICAgIGZvciBpIGluIHJhbmdlKHNlbGYuY2hp
bGRfcHJvY2Vzc2VzKCkpOgogICAgICAgICAgICAgaG9zdCA9IHNlbGYudGFyZ2V0X2hvc3QoaSkK
ICAgICAgICAgICAgIGhvc3QucHJlcGFyZV9mb3JfdGVzdGluZygKICAgICAgICAgICAgICAgICBz
ZWxmLnBvcnRzX3RvX2ZvcndhcmQoKSwKQEAgLTIwMSw3ICsyMDEsNyBAQCBjbGFzcyBEZXZpY2VQ
b3J0KERhcndpblBvcnQpOgogICAgICAgICAjIEJlc3QgZWZmb3J0IHRvIGxldCBldmVyeSBkZXZp
Y2UgdGVhcmRvd24gYmVmb3JlIHRocm93aW5nIGFueSBleGNlcHRpb25zIGhlcmUuCiAgICAgICAg
ICMgRmFpbHVyZSB0byB0ZWFyZG93biBkZXZpY2VzIGNhbiBsZWF2ZSB0aGluZ3MgaW4gYSBiYWQg
c3RhdGUuCiAgICAgICAgIGV4Y2VwdGlvbl9saXN0ID0gW10KLSAgICAgICAgZm9yIGkgaW4geHJh
bmdlKHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkpOgorICAgICAgICBmb3IgaSBpbiByYW5nZShzZWxm
LmNoaWxkX3Byb2Nlc3NlcygpKToKICAgICAgICAgICAgIGRldmljZSA9IHNlbGYudGFyZ2V0X2hv
c3QoaSkKICAgICAgICAgICAgIGlmIG5vdCBkZXZpY2U6CiAgICAgICAgICAgICAgICAgY29udGlu
dWUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQkocmV2aXNpb24gMjUz
NjAzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksNyBAQCBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGlj
dAogZnJvbSBvcy5wYXRoIGltcG9ydCBub3JtcGF0aAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtIGltcG9ydCBwYXRoCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucHJvZmlsZXIgaW1w
b3J0IFByb2ZpbGVyRmFjdG9yeQorZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRp
YmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5LCBkZWNvZGVfZm9yCiAKIAogX2xvZyA9
IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtODYsMTEgKzg3LDExIEBAIGNsYXNzIERy
aXZlck91dHB1dChvYmplY3QpOgogICAgICAgICAgICAgdGVzdF90aW1lPTAsIG1lYXN1cmVtZW50
cz1Ob25lLCB0aW1lb3V0PUZhbHNlLCBlcnJvcj0nJywgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Jz8/
JywKICAgICAgICAgICAgIGNyYXNoZWRfcGlkPU5vbmUsIGNyYXNoX2xvZz1Ob25lLCBwaWQ9Tm9u
ZSk6CiAgICAgICAgICMgRklYTUU6IEFyZ3MgY291bGQgYmUgcmVuYW1lZCB0byBiZXR0ZXIgY2xh
cmlmeSB3aGF0IHRoZXkgZG8uCi0gICAgICAgIHNlbGYudGV4dCA9IHRleHQKKyAgICAgICAgc2Vs
Zi50ZXh0ID0gZGVjb2RlX2Zvcih0ZXh0LCBzdHIpIGlmIHRleHQgZWxzZSBOb25lCiAgICAgICAg
IHNlbGYuaW1hZ2UgPSBpbWFnZSAgIyBNYXkgYmUgZW1wdHktc3RyaW5nIGlmIHRoZSB0ZXN0IGNy
YXNoZXMuCiAgICAgICAgIHNlbGYuaW1hZ2VfaGFzaCA9IGltYWdlX2hhc2gKICAgICAgICAgc2Vs
Zi5pbWFnZV9kaWZmID0gTm9uZSAgIyBpbWFnZV9kaWZmIGdldHMgZmlsbGVkIGluIGFmdGVyIGNv
bnN0cnVjdGlvbi4KLSAgICAgICAgc2VsZi5hdWRpbyA9IGF1ZGlvICAjIEJpbmFyeSBmb3JtYXQg
aXMgcG9ydC1kZXBlbmRlbnQuCisgICAgICAgIHNlbGYuYXVkaW8gPSBlbmNvZGVfaWZfbmVjZXNz
YXJ5KGF1ZGlvKSBpZiBhdWRpbyBlbHNlIE5vbmUgICMgQmluYXJ5IGZvcm1hdCBpcyBwb3J0LWRl
cGVuZGVudC4KICAgICAgICAgc2VsZi5jcmFzaCA9IGNyYXNoCiAgICAgICAgIHNlbGYuY3Jhc2hl
ZF9wcm9jZXNzX25hbWUgPSBjcmFzaGVkX3Byb2Nlc3NfbmFtZQogICAgICAgICBzZWxmLmNyYXNo
ZWRfcGlkID0gY3Jhc2hlZF9waWQKQEAgLTE2MSw3ICsxNjIsNyBAQCBjbGFzcyBEcml2ZXIob2Jq
ZWN0KToKICAgICAgICAgIyBzdGRlcnIgb3V0cHV0LCBhcyB3ZWxsIGFzIGlmIHdlJ3ZlIHNlZW4g
I0VPRiBvbiB0aGlzIGRyaXZlciBpbnN0YW5jZS4KICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxk
IHByb2JhYmx5IHJlbW92ZSBfcmVhZF9maXJzdF9ibG9jayBhbmQgX3JlYWRfb3B0aW9uYWxfaW1h
Z2VfYmxvY2sgYW5kCiAgICAgICAgICMgaW5zdGVhZCBzY29wZSB0aGVzZSBsb2NhbGx5IGluIHJ1
bl90ZXN0LgotICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCA9IHN0cigpCisgICAgICAgIHNl
bGYuZXJyb3JfZnJvbV90ZXN0ID0gJycKICAgICAgICAgc2VsZi5lcnJfc2Vlbl9lb2YgPSBGYWxz
ZQogCiAgICAgICAgIHNlbGYuX3NlcnZlcl9uYW1lID0gc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgp
CkBAIC0xOTYsNyArMTk3LDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgIHRlc3Rf
YmVnaW5fdGltZSA9IHRpbWUudGltZSgpCiAgICAgICAgIHNlbGYuX2RyaXZlcl90aW1lZF9vdXQg
PSBGYWxzZQogICAgICAgICBzZWxmLl9jcmFzaF9yZXBvcnRfZnJvbV9kcml2ZXIgPSBOb25lCi0g
ICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ID0gc3RyKCkKKyAgICAgICAgc2VsZi5lcnJvcl9m
cm9tX3Rlc3QgPSAnJwogICAgICAgICBzZWxmLmVycl9zZWVuX2VvZiA9IEZhbHNlCiAKICAgICAg
ICAgY29tbWFuZCA9IHNlbGYuX2NvbW1hbmRfZnJvbV9kcml2ZXJfaW5wdXQoZHJpdmVyX2lucHV0
KQpAQCAtMjE0LDYgKzIxNSw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICBzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy53cml0ZShjb21tYW5kKQogICAgICAgICB0ZXh0LCBhdWRpbyA9IHNl
bGYuX3JlYWRfZmlyc3RfYmxvY2soZGVhZGxpbmUsIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpICAj
IEZpcnN0IGJsb2NrIGlzIGVpdGhlciB0ZXh0IG9yIGF1ZGlvCiAgICAgICAgIGltYWdlLCBhY3R1
YWxfaW1hZ2VfaGFzaCA9IHNlbGYuX3JlYWRfb3B0aW9uYWxfaW1hZ2VfYmxvY2soZGVhZGxpbmUs
IGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpICAjIFRoZSBzZWNvbmQgKG9wdGlvbmFsKSBibG9jayBp
cyBpbWFnZSBkYXRhLgorICAgICAgICB0ZXh0ID0gZGVjb2RlX2Zvcih0ZXh0LCBzdHIpCiAKICAg
ICAgICAgY3Jhc2hlZCA9IHNlbGYuaGFzX2NyYXNoZWQoKQogICAgICAgICB0aW1lZF9vdXQgPSBz
ZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQKQEAgLTIyNyw5ICsyMjksOSBAQCBjbGFzcyBE
cml2ZXIob2JqZWN0KToKICAgICAgICAgICAgICMgSW4gdGhlIHRpbWVvdXQgY2FzZSwgd2Uga2ls
bCB0aGUgaHVuZyBwcm9jZXNzIGFzIHdlbGwuCiAgICAgICAgICAgICBvdXQsIGVyciA9IHNlbGYu
X3NlcnZlcl9wcm9jZXNzLnN0b3Aoc2VsZi5fcG9ydC5kcml2ZXJfc3RvcF90aW1lb3V0KCkgaWYg
c3RvcF93aGVuX2RvbmUgZWxzZSAwLjApCiAgICAgICAgICAgICBpZiBvdXQ6Ci0gICAgICAgICAg
ICAgICAgdGV4dCArPSBvdXQKKyAgICAgICAgICAgICAgICB0ZXh0ICs9IGRlY29kZV9mb3Iob3V0
LCBzdHIpCiAgICAgICAgICAgICBpZiBlcnI6Ci0gICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9m
cm9tX3Rlc3QgKz0gZXJyCisgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0g
ZGVjb2RlX2ZvcihlcnIsIHN0cikKICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzID0g
Tm9uZQogCiAgICAgICAgIGNyYXNoX2xvZyA9IE5vbmUKQEAgLTI4MCwxMCArMjgyLDEwIEBAIGNs
YXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICBjaGlsZF9wcm9jZXNzZXMgPSBkZWZhdWx0ZGlj
dChsaXN0KQogCiAgICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCk6Ci0gICAg
ICAgICAgICBtID0gcmUubWF0Y2goJ14oW146XSspOiAoWzAtOV0rKSQnLCBsaW5lKQorICAgICAg
ICAgICAgbSA9IHJlLm1hdGNoKGInXihbXjpdKyk6IChbMC05XSspJCcsIGxpbmUpCiAgICAgICAg
ICAgICBpZiBtOgotICAgICAgICAgICAgICAgIHByb2Nlc3NfbmFtZSA9IG0uZ3JvdXAoMSkKLSAg
ICAgICAgICAgICAgICBwcm9jZXNzX2lkID0gbS5ncm91cCgyKQorICAgICAgICAgICAgICAgIHBy
b2Nlc3NfbmFtZSA9IGRlY29kZV9mb3IobS5ncm91cCgxKSwgc3RyKQorICAgICAgICAgICAgICAg
IHByb2Nlc3NfaWQgPSBkZWNvZGVfZm9yKG0uZ3JvdXAoMiksIHN0cikKICAgICAgICAgICAgICAg
ICBjaGlsZF9wcm9jZXNzZXNbcHJvY2Vzc19uYW1lXS5hcHBlbmQocHJvY2Vzc19pZCkKIAogICAg
ICAgICByZXR1cm4gY2hpbGRfcHJvY2Vzc2VzCkBAIC01NDAsMTAgKzU0MiwxMCBAQCBjbGFzcyBE
cml2ZXIob2JqZWN0KToKICAgICAgICAgcmV0dXJuIGNtZAogCiAgICAgZGVmIF9jaGVja19mb3Jf
ZHJpdmVyX3RpbWVvdXQoc2VsZiwgb3V0X2xpbmUpOgotICAgICAgICBpZiBvdXRfbGluZS5zdGFy
dHN3aXRoKCIjUElEIFVOUkVTUE9OU0lWRSAtICIpOgotICAgICAgICAgICAgbWF0Y2ggPSByZS5t
YXRjaCgnI1BJRCBVTlJFU1BPTlNJVkUgLSAoXFMrKScsIG91dF9saW5lKQotICAgICAgICAgICAg
Y2hpbGRfcHJvY2Vzc19uYW1lID0gbWF0Y2guZ3JvdXAoMSkgaWYgbWF0Y2ggZWxzZSAnV2ViUHJv
Y2VzcycKLSAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCdwaWQgKFxkKyknLCBvdXRfbGlu
ZSkKKyAgICAgICAgaWYgb3V0X2xpbmUuc3RhcnRzd2l0aChiIiNQSUQgVU5SRVNQT05TSVZFIC0g
Iik6CisgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKGInI1BJRCBVTlJFU1BPTlNJVkUgLSAo
XFMrKScsIG91dF9saW5lKQorICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19uYW1lID0gZGVjb2Rl
X2ZvcihtYXRjaC5ncm91cCgxKSwgc3RyKSBpZiBtYXRjaCBlbHNlICdXZWJQcm9jZXNzJworICAg
ICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYidwaWQgKFxkKyknLCBvdXRfbGluZSkKICAgICAg
ICAgICAgIGNoaWxkX3Byb2Nlc3NfcGlkID0gaW50KG1hdGNoLmdyb3VwKDEpKSBpZiBtYXRjaCBl
bHNlIE5vbmUKICAgICAgICAgICAgIGVycl9saW5lID0gJ1dhaXQgb24gbm90aWZ5RG9uZSB0aW1l
ZCBvdXQsIHByb2Nlc3MgJyArIGNoaWxkX3Byb2Nlc3NfbmFtZSArICcgcGlkID0gJyArIHN0cihj
aGlsZF9wcm9jZXNzX3BpZCkKICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9IGVy
cl9saW5lCkBAIC01NTQsMzIgKzU1NiwzMiBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAg
ICAgICAgIHNlbGYuX2RyaXZlcl90aW1lZF9vdXQgPSBUcnVlCiAKICAgICBkZWYgX2NoZWNrX2Zv
cl9hZGRyZXNzX3Nhbml0aXplcl92aW9sYXRpb24oc2VsZiwgZXJyb3JfbGluZSk6Ci0gICAgICAg
IGlmICJFUlJPUjogQWRkcmVzc1Nhbml0aXplciIgaW4gZXJyb3JfbGluZToKKyAgICAgICAgaWYg
YiJFUlJPUjogQWRkcmVzc1Nhbml0aXplciIgaW4gZXJyb3JfbGluZToKICAgICAgICAgICAgIHJl
dHVybiBUcnVlCiAKICAgICBkZWYgX2NoZWNrX2Zvcl9kcml2ZXJfY3Jhc2hfb3JfdW5yZXNwb25z
aXZlbmVzcyhzZWxmLCBlcnJvcl9saW5lKToKLSAgICAgICAgY3Jhc2hlZF9jaGVjayA9IGVycm9y
X2xpbmUucnN0cmlwKCdcclxuJykKLSAgICAgICAgaWYgY3Jhc2hlZF9jaGVjayA9PSAiI0NSQVNI
RUQiOgorICAgICAgICBjcmFzaGVkX2NoZWNrID0gZXJyb3JfbGluZS5yc3RyaXAoYidcclxuJykK
KyAgICAgICAgaWYgY3Jhc2hlZF9jaGVjayA9PSBiIiNDUkFTSEVEIjoKICAgICAgICAgICAgIHNl
bGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucHJvY2Vzc19u
YW1lKCkKICAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gc2VsZi5fc2VydmVyX3Byb2Nl
c3Muc3lzdGVtX3BpZCgpCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBlbGlmIGVy
cm9yX2xpbmUuc3RhcnRzd2l0aCgiI0NSQVNIRUQgLSAiKToKLSAgICAgICAgICAgIG1hdGNoID0g
cmUubWF0Y2goJyNDUkFTSEVEIC0gKFxTKyknLCBlcnJvcl9saW5lKQotICAgICAgICAgICAgc2Vs
Zi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBtYXRjaC5ncm91cCgxKSBpZiBtYXRjaCBlbHNlICdX
ZWJQcm9jZXNzJwotICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goJ3BpZCAoXGQrKScsIGVy
cm9yX2xpbmUpCisgICAgICAgIGVsaWYgZXJyb3JfbGluZS5zdGFydHN3aXRoKGIiI0NSQVNIRUQg
LSAiKToKKyAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2goYicjQ1JBU0hFRCAtIChcUyspJywg
ZXJyb3JfbGluZSkKKyAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gZGVj
b2RlX2ZvcihtYXRjaC5ncm91cCgxKSwgc3RyKSBpZiBtYXRjaCBlbHNlICdXZWJQcm9jZXNzJwor
ICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYidwaWQgKFxkKyknLCBlcnJvcl9saW5lKQog
ICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9waWQgPSBpbnQobWF0Y2guZ3JvdXAoMSkpIGlmIG1h
dGNoIGVsc2UgTm9uZQogICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMgY3Jhc2gsIHBpZCA9ICVz
JyAlIChzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSwgc3RyKHNlbGYuX2NyYXNoZWRfcGlkKSkp
CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBlbGlmIGVycm9yX2xpbmUuc3RhcnRz
d2l0aCgiI1BST0NFU1MgVU5SRVNQT05TSVZFIC0gIik6Ci0gICAgICAgICAgICBtYXRjaCA9IHJl
Lm1hdGNoKCcjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSAoXFMrKScsIGVycm9yX2xpbmUpCi0gICAg
ICAgICAgICBjaGlsZF9wcm9jZXNzX25hbWUgPSBtYXRjaC5ncm91cCgxKSBpZiBtYXRjaCBlbHNl
ICdXZWJQcm9jZXNzJwotICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goJ3BpZCAoXGQrKScs
IGVycm9yX2xpbmUpCisgICAgICAgIGVsaWYgZXJyb3JfbGluZS5zdGFydHN3aXRoKGIiI1BST0NF
U1MgVU5SRVNQT05TSVZFIC0gIik6CisgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKGInI1BS
T0NFU1MgVU5SRVNQT05TSVZFIC0gKFxTKyknLCBlcnJvcl9saW5lKQorICAgICAgICAgICAgY2hp
bGRfcHJvY2Vzc19uYW1lID0gZGVjb2RlX2ZvcihtYXRjaC5ncm91cCgxKSwgc3RyKSBpZiBtYXRj
aCBlbHNlICdXZWJQcm9jZXNzJworICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goYidwaWQg
KFxkKyknLCBlcnJvcl9saW5lKQogICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc19waWQgPSBpbnQo
bWF0Y2guZ3JvdXAoMSkpIGlmIG1hdGNoIGVsc2UgTm9uZQogICAgICAgICAgICAgX2xvZy5kZWJ1
ZygnJXMgaXMgdW5yZXNwb25zaXZlLCBwaWQgPSAlcycgJSAoY2hpbGRfcHJvY2Vzc19uYW1lLCBz
dHIoY2hpbGRfcHJvY2Vzc19waWQpKSkKICAgICAgICAgICAgIHNlbGYuX2RyaXZlcl90aW1lZF9v
dXQgPSBUcnVlCiAgICAgICAgICAgICBpZiBjaGlsZF9wcm9jZXNzX3BpZDoKICAgICAgICAgICAg
ICAgICBzZWxmLl9wb3J0LnNhbXBsZV9wcm9jZXNzKGNoaWxkX3Byb2Nlc3NfbmFtZSwgY2hpbGRf
cHJvY2Vzc19waWQsIHNlbGYuX3RhcmdldF9ob3N0KQotICAgICAgICAgICAgc2VsZi5lcnJvcl9m
cm9tX3Rlc3QgKz0gZXJyb3JfbGluZQorICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3Qg
Kz0gZGVjb2RlX2ZvcihlcnJvcl9saW5lLCBzdHIpCiAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJf
cHJvY2Vzcy53cml0ZSgnI1NBTVBMRSBGSU5JU0hFRFxuJywgVHJ1ZSkgICMgTXVzdCBiZSBhYmxl
IHRvIGlnbm9yZSBhIGJyb2tlbiBwaXBlIGhlcmUsIHRhcmdldCBwcm9jZXNzIG1heSBhbHJlYWR5
IGJlIGNsb3NlZC4KICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBzZWxm
Lmhhc19jcmFzaGVkKCkKQEAgLTYyOCwxMiArNjMwLDEyIEBAIGNsYXNzIERyaXZlcihvYmplY3Qp
OgogICAgICAgICAjIHJldHVybnMgKGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCkKICAgICAgICAg
YmxvY2sgPSBzZWxmLl9yZWFkX2Jsb2NrKGRlYWRsaW5lLCB0ZXN0X25hbWUsIHdhaXRfZm9yX3N0
ZGVycl9lb2Y9VHJ1ZSkKICAgICAgICAgaWYgYmxvY2suY29udGVudCBhbmQgYmxvY2suY29udGVu
dF90eXBlID09ICdpbWFnZS9wbmcnOgotICAgICAgICAgICAgcmV0dXJuIChibG9jay5kZWNvZGVk
X2NvbnRlbnQsIGJsb2NrLmNvbnRlbnRfaGFzaCkKKyAgICAgICAgICAgIHJldHVybiAoYmxvY2su
ZGVjb2RlZF9jb250ZW50IGlmIGJsb2NrLmVuY29kaW5nID09ICdiYXNlNjQnIGVsc2UgYmxvY2su
Y29udGVudCwgYmxvY2suY29udGVudF9oYXNoKQogICAgICAgICByZXR1cm4gKE5vbmUsIGJsb2Nr
LmNvbnRlbnRfaGFzaCkKIAogICAgIGRlZiBfcmVhZF9oZWFkZXIoc2VsZiwgYmxvY2ssIGxpbmUs
IGhlYWRlcl90ZXh0LCBoZWFkZXJfYXR0ciwgaGVhZGVyX2ZpbHRlcj1Ob25lKToKICAgICAgICAg
aWYgbGluZS5zdGFydHN3aXRoKGhlYWRlcl90ZXh0KSBhbmQgZ2V0YXR0cihibG9jaywgaGVhZGVy
X2F0dHIpIGlzIE5vbmU6Ci0gICAgICAgICAgICB2YWx1ZSA9IGxpbmUuc3BsaXQoKVsxXQorICAg
ICAgICAgICAgdmFsdWUgPSBkZWNvZGVfZm9yKGxpbmUuc3BsaXQoKVsxXSwgc3RyKQogICAgICAg
ICAgICAgaWYgaGVhZGVyX2ZpbHRlcjoKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGhlYWRlcl9m
aWx0ZXIodmFsdWUpCiAgICAgICAgICAgICBzZXRhdHRyKGJsb2NrLCBoZWFkZXJfYXR0ciwgdmFs
dWUpCkBAIC02NDEsMTkgKzY0MywyMyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAg
cmV0dXJuIEZhbHNlCiAKICAgICBkZWYgX3Byb2Nlc3Nfc3Rkb3V0X2xpbmUoc2VsZiwgYmxvY2ss
IGxpbmUpOgotICAgICAgICBpZiAoc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdDb250
ZW50LVR5cGU6ICcsICdjb250ZW50X3R5cGUnKQotICAgICAgICAgICAgb3Igc2VsZi5fcmVhZF9o
ZWFkZXIoYmxvY2ssIGxpbmUsICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAnLCAnZW5jb2Rp
bmcnKQotICAgICAgICAgICAgb3Igc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdDb250
ZW50LUxlbmd0aDogJywgJ19jb250ZW50X2xlbmd0aCcsIGludCkKLSAgICAgICAgICAgIG9yIHNl
bGYuX3JlYWRfaGVhZGVyKGJsb2NrLCBsaW5lLCAnQWN0dWFsSGFzaDogJywgJ2NvbnRlbnRfaGFz
aCcpCi0gICAgICAgICAgICBvciBzZWxmLl9yZWFkX2hlYWRlcihibG9jaywgbGluZSwgJ0R1bXBN
YWxsb2M6ICcsICdtYWxsb2MnKQotICAgICAgICAgICAgb3Igc2VsZi5fcmVhZF9oZWFkZXIoYmxv
Y2ssIGxpbmUsICdEdW1wSlNIZWFwOiAnLCAnanNfaGVhcCcpKToKLSAgICAgICAgICAgIHJldHVy
bgorICAgICAgICBmb3IgaGVhZGVyIGluIFsKKyAgICAgICAgICAgIChiJ0NvbnRlbnQtVHlwZTog
JywgJ2NvbnRlbnRfdHlwZScsIE5vbmUpLAorICAgICAgICAgICAgKGInQ29udGVudC1UcmFuc2Zl
ci1FbmNvZGluZzogJywgJ2VuY29kaW5nJywgTm9uZSksCisgICAgICAgICAgICAoYidDb250ZW50
LUxlbmd0aDogJywgJ19jb250ZW50X2xlbmd0aCcsIGludCksCisgICAgICAgICAgICAoYidBY3R1
YWxIYXNoOiAnLCAnY29udGVudF9oYXNoJywgTm9uZSksCisgICAgICAgICAgICAoYidEdW1wTWFs
bG9jOiAnLCAnbWFsbG9jJywgTm9uZSksCisgICAgICAgICAgICAoYidEdW1wSlNIZWFwOiAnLCAn
anNfaGVhcCcsIE5vbmUpLAorICAgICAgICBdOgorICAgICAgICAgICAgaWYgc2VsZi5fcmVhZF9o
ZWFkZXIoYmxvY2ssIGxpbmUsIGhlYWRlclswXSwgaGVhZGVyWzFdLCBoZWFkZXJbMl0pOgorICAg
ICAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgICMgTm90ZSwgd2UncmUgbm90IHJlYWRpbmcg
RXhwZWN0ZWRIYXNoOiBoZXJlLCBidXQgd2UgY291bGQuCiAgICAgICAgICMgSWYgdGhlIGxpbmUg
d2Fzbid0IGEgaGVhZGVyLCB3ZSBqdXN0IGFwcGVuZCBpdCB0byB0aGUgY29udGVudC4KLSAgICAg
ICAgYmxvY2suY29udGVudCArPSBsaW5lCisgICAgICAgIGJsb2NrLmNvbnRlbnQgPSBlbmNvZGVf
aWZfbmVjZXNzYXJ5KGJsb2NrLmNvbnRlbnQpICsgbGluZQogCiAgICAgZGVmIF9zdHJpcF9lb2Yo
c2VsZiwgbGluZSk6Ci0gICAgICAgIGlmIGxpbmUgYW5kIGxpbmUuZW5kc3dpdGgoIiNFT0ZcbiIp
OgorICAgICAgICBpZiBsaW5lIGFuZCBsaW5lLmVuZHN3aXRoKGIiI0VPRlxuIik6CiAgICAgICAg
ICAgICByZXR1cm4gbGluZVs6LTVdLCBUcnVlCiAgICAgICAgIHJldHVybiBsaW5lLCBGYWxzZQog
CkBAIC02ODgsMzQgKzY5NCwzNCBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKIAogICAgICAgICAg
ICAgaWYgb3V0X2xpbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfZm9yX2RyaXZlcl90
aW1lb3V0KG91dF9saW5lKQotICAgICAgICAgICAgICAgIGlmIG91dF9saW5lWy0xXSAhPSAiXG4i
OgorICAgICAgICAgICAgICAgIGlmIG91dF9saW5lWy0xXSAhPSAnXG4nIGFuZCBvdXRfbGluZVst
MV0gIT0gMTA6CiAgICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoIiAgJXMgLT4gTGFzdCBj
aGFyYWN0ZXIgcmVhZCBmcm9tIERSVCBzdGRvdXQgbGluZSB3YXMgbm90IGEgbmV3bGluZSEgIFRo
aXMgaW5kaWNhdGVzIGVpdGhlciBhIE5SV1Qgb3IgRFJUIGJ1Zy4iICUgdGVzdF9uYW1lKQogICAg
ICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoX2JlZm9yZV9oZWFkZXJfY2hlY2sgPSBibG9jay5f
Y29udGVudF9sZW5ndGgKICAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX3N0ZG91dF9saW5l
KGJsb2NrLCBvdXRfbGluZSkKICAgICAgICAgICAgICAgICAjIEZJWE1FOiBVbmxpa2UgSFRUUCwg
RFJUIGR1bXBzIHRoZSBjb250ZW50IHJpZ2h0IGFmdGVyIHByaW50aW5nIGEgQ29udGVudC1MZW5n
dGggaGVhZGVyLgogICAgICAgICAgICAgICAgICMgRG9uJ3Qgd2FpdCB1bnRpbCB3ZSdyZSBkb25l
IHdpdGggaGVhZGVycywganVzdCByZWFkIHRoZSBiaW5hcnkgYmxvYiByaWdodCBub3cuCiAgICAg
ICAgICAgICAgICAgaWYgY29udGVudF9sZW5ndGhfYmVmb3JlX2hlYWRlcl9jaGVjayAhPSBibG9j
ay5fY29udGVudF9sZW5ndGg6Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrLmNvbnRlbnQgPSBz
ZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZG91dChkZWFkbGluZSwgYmxvY2suX2NvbnRlbnRf
bGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICBibG9jay5jb250ZW50ID0gZW5jb2RlX2lmX25l
Y2Vzc2FyeShzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZG91dChkZWFkbGluZSwgYmxvY2su
X2NvbnRlbnRfbGVuZ3RoKSkKIAogICAgICAgICAgICAgaWYgZXJyX2xpbmU6CiAgICAgICAgICAg
ICAgICAgaWYgc2VsZi5fY2hlY2tfZm9yX2RyaXZlcl9jcmFzaF9vcl91bnJlc3BvbnNpdmVuZXNz
KGVycl9saW5lKToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBl
bGlmIHNlbGYuX2NoZWNrX2Zvcl9hZGRyZXNzX3Nhbml0aXplcl92aW9sYXRpb24oZXJyX2xpbmUp
OgogICAgICAgICAgICAgICAgICAgICBhc2FuX3Zpb2xhdGlvbl9kZXRlY3RlZCA9IFRydWUKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fY3Jhc2hfcmVwb3J0X2Zyb21fZHJpdmVyID0gIiIKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fY3Jhc2hfcmVwb3J0X2Zyb21fZHJpdmVyID0gYicnCiAg
ICAgICAgICAgICAgICAgICAgICMgQVNhbiByZXBvcnQgc3RhcnRzIHdpdGggYSBub25kZXNjcmlw
dCBsaW5lLCB3ZSBvbmx5IGRldGVjdCB0aGUgc2Vjb25kIGxpbmUuCiAgICAgICAgICAgICAgICAg
ICAgIGVuZF9vZl9wcmV2aW91c19lcnJvcl9saW5lID0gc2VsZi5lcnJvcl9mcm9tX3Rlc3QucmZp
bmQoJ1xuJywgMCwgLTEpCiAgICAgICAgICAgICAgICAgICAgIGlmIGVuZF9vZl9wcmV2aW91c19l
cnJvcl9saW5lID4gMDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90
ZXN0ID0gc2VsZi5lcnJvcl9mcm9tX3Rlc3RbOmVuZF9vZl9wcmV2aW91c19lcnJvcl9saW5lXQog
ICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5l
cnJvcl9mcm9tX3Rlc3QgPSAiIgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9m
cm9tX3Rlc3QgPSAnJwogICAgICAgICAgICAgICAgICAgICAjIFN5bWJvbGljYXRpb24gY2FuIHRh
a2UgYSB2ZXJ5IGxvbmcgdGltZSwgZ2l2ZSBpdCAxMCBleHRyYSBtaW51dGVzIHRvIGZpbmlzaC4K
ICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBjYW4gbGlrZWx5IGJlIHJlbW92ZWQg
b25jZSA8cmRhcjovL3Byb2JsZW0vMTg3MDE0NDc+IGlzIGZpeGVkLgogICAgICAgICAgICAgICAg
ICAgICBkZWFkbGluZSArPSAxMCAqIDYwICogMTAwMAogICAgICAgICAgICAgICAgIGlmIGFzYW5f
dmlvbGF0aW9uX2RldGVjdGVkOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jcmFzaF9yZXBv
cnRfZnJvbV9kcml2ZXIgKz0gZXJyX2xpbmUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3Jh
c2hfcmVwb3J0X2Zyb21fZHJpdmVyICs9IGRlY29kZV9mb3IoZXJyX2xpbmUsIHN0cikKICAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVz
dCArPSBlcnJfbGluZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCAr
PSBkZWNvZGVfZm9yKGVycl9saW5lLCBzdHIpCiAKICAgICAgICAgaWYgYXNhbl92aW9sYXRpb25f
ZGV0ZWN0ZWQgYW5kIG5vdCBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZToKICAgICAgICAgICAg
IHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucHJvY2Vz
c19uYW1lKCkKQEAgLTczOCw3ICs3NDQsNyBAQCBjbGFzcyBDb250ZW50QmxvY2sob2JqZWN0KToK
ICAgICAgICAgc2VsZi5jb250ZW50X2hhc2ggPSBOb25lCiAgICAgICAgIHNlbGYuX2NvbnRlbnRf
bGVuZ3RoID0gTm9uZQogICAgICAgICAjIENvbnRlbnQgaXMgdHJlYXRlZCBhcyBiaW5hcnkgZGF0
YSBldmVuIHRob3VnaCB0aGUgdGV4dCBvdXRwdXQgaXMgdXN1YWxseSBVVEYtOC4KLSAgICAgICAg
c2VsZi5jb250ZW50ID0gc3RyKCkgICMgRklYTUU6IFNob3VsZCBiZSBieXRlYXJyYXkoKSBvbmNl
IHdlIHJlcXVpcmUgUHl0aG9uIDIuNi4KKyAgICAgICAgc2VsZi5jb250ZW50ID0gYicnCiAgICAg
ICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gTm9uZQogICAgICAgICBzZWxmLm1hbGxvYyA9IE5v
bmUKICAgICAgICAgc2VsZi5qc19oZWFwID0gTm9uZQpAQCAtNzQ3LDcgKzc1MywxMCBAQCBjbGFz
cyBDb250ZW50QmxvY2sob2JqZWN0KToKICAgICAgICAgaWYgc2VsZi5lbmNvZGluZyA9PSAnYmFz
ZTY0JyBhbmQgc2VsZi5jb250ZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5kZWNv
ZGVkX2NvbnRlbnQgPSBiYXNlNjQuYjY0ZGVjb2RlKHNlbGYuY29udGVudCkKICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gc2VsZi5jb250ZW50CisgICAg
ICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBkZWNv
ZGVfZm9yKHNlbGYuY29udGVudCwgc3RyKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNv
ZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLmRlY29kZWRfY29udGVudCA9IE5vbmUKIAog
CiBjbGFzcyBEcml2ZXJQcm94eShvYmplY3QpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2RyaXZlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNTM2MDMpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0xODIsNyArMTgyLDcgQEAgY2xhc3MgRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgIGNvbnRlbnRfYmxvY2sgPSBkcml2ZXIuX3JlYWRfYmxvY2soMCwgIiIpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5jb250ZW50X3R5cGUsICdpbWFnZS9w
bmcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnRfYmxvY2suY29udGVudF9oYXNo
LCAnYWN0dWFsJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2NrLmNvbnRl
bnQsICcxMjM0NTY3OFxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2Nr
LmNvbnRlbnQsIGInMTIzNDU2NzhcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVu
dF9ibG9jay5kZWNvZGVkX2NvbnRlbnQsICcxMjM0NTY3OFxuJykKICAgICAgICAgZHJpdmVyLl9z
ZXJ2ZXJfcHJvY2VzcyA9IE5vbmUKIApAQCAtMjAxLDcgKzIwMSw3IEBAIGNsYXNzIERyaXZlclRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnRf
YmxvY2suY29udGVudF90eXBlLCAnaW1hZ2UvcG5nJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb250ZW50X2Jsb2NrLmNvbnRlbnRfaGFzaCwgJ2FjdHVhbCcpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29udGVudF9ibG9jay5lbmNvZGluZywgJ2Jhc2U2NCcpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5jb250ZW50LCAnTVRJek5EVTJOemdLJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2NrLmNvbnRlbnQsIGInTVRJek5EVTJOemdL
JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2NrLmRlY29kZWRfY29udGVu
dCwgYicxMjM0NTY3OFxuJykKIAogICAgIGRlZiB0ZXN0X25vX3RpbWVvdXQoc2VsZik6CkBAIC0y
NDcsNDMgKzI0Nyw0MyBAQCBjbGFzcyBEcml2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgICAgIGRyaXZlci5zdG9wKCkKIAogICAgICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNz
ID0gRmFrZVNlcnZlclByb2Nlc3MoRmFsc2UpCi0gICAgICAgIGFzc2VydF9jcmFzaChkcml2ZXIs
ICcnLCBGYWxzZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgYicn
LCBGYWxzZSwgTm9uZSwgTm9uZSkKIAogICAgICAgICBkcml2ZXIuX2NyYXNoZWRfcHJvY2Vzc19u
YW1lID0gTm9uZQogICAgICAgICBkcml2ZXIuX2NyYXNoZWRfcGlkID0gTm9uZQogICAgICAgICBk
cml2ZXIuX3NlcnZlcl9wcm9jZXNzID0gRmFrZVNlcnZlclByb2Nlc3MoRmFsc2UpCiAgICAgICAg
IGRyaXZlci5fZHJpdmVyX3RpbWVkX291dCA9IEZhbHNlCi0gICAgICAgIGFzc2VydF9jcmFzaChk
cml2ZXIsICcjQ1JBU0hFRFxuJywgVHJ1ZSwgJ0Zha2VTZXJ2ZXJQcm9jZXNzJywgMTIzNCkKKyAg
ICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgYicjQ1JBU0hFRFxuJywgVHJ1ZSwgJ0Zha2VTZXJ2
ZXJQcm9jZXNzJywgMTIzNCkKIAogICAgICAgICBkcml2ZXIuX2NyYXNoZWRfcHJvY2Vzc19uYW1l
ID0gTm9uZQogICAgICAgICBkcml2ZXIuX2NyYXNoZWRfcGlkID0gTm9uZQogICAgICAgICBkcml2
ZXIuX3NlcnZlcl9wcm9jZXNzID0gRmFrZVNlcnZlclByb2Nlc3MoRmFsc2UpCiAgICAgICAgIGRy
aXZlci5fZHJpdmVyX3RpbWVkX291dCA9IEZhbHNlCi0gICAgICAgIGFzc2VydF9jcmFzaChkcml2
ZXIsICcjQ1JBU0hFRCAtIFdlYlByb2Nlc3NcbicsIFRydWUsICdXZWJQcm9jZXNzJywgTm9uZSkK
KyAgICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgYicjQ1JBU0hFRCAtIFdlYlByb2Nlc3Ncbics
IFRydWUsICdXZWJQcm9jZXNzJywgTm9uZSkKIAogICAgICAgICBkcml2ZXIuX2NyYXNoZWRfcHJv
Y2Vzc19uYW1lID0gTm9uZQogICAgICAgICBkcml2ZXIuX2NyYXNoZWRfcGlkID0gTm9uZQogICAg
ICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzID0gRmFrZVNlcnZlclByb2Nlc3MoRmFsc2UpCiAg
ICAgICAgIGRyaXZlci5fZHJpdmVyX3RpbWVkX291dCA9IEZhbHNlCi0gICAgICAgIGFzc2VydF9j
cmFzaChkcml2ZXIsICcjQ1JBU0hFRCAtIFdlYlByb2Nlc3MgKHBpZCA4Njc1KVxuJywgVHJ1ZSwg
J1dlYlByb2Nlc3MnLCA4Njc1KQorICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCBiJyNDUkFT
SEVEIC0gV2ViUHJvY2VzcyAocGlkIDg2NzUpXG4nLCBUcnVlLCAnV2ViUHJvY2VzcycsIDg2NzUp
CiAKICAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKICAgICAgICAg
ZHJpdmVyLl9jcmFzaGVkX3BpZCA9IE5vbmUKICAgICAgICAgZHJpdmVyLl9zZXJ2ZXJfcHJvY2Vz
cyA9IEZha2VTZXJ2ZXJQcm9jZXNzKEZhbHNlKQogICAgICAgICBkcml2ZXIuX2RyaXZlcl90aW1l
ZF9vdXQgPSBGYWxzZQotICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCAnI1BST0NFU1MgVU5S
RVNQT05TSVZFIC0gV2ViUHJvY2VzcyAocGlkIDg2NzUpXG4nLCBUcnVlLCBOb25lLCBOb25lLCBU
cnVlKQorICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCBiJyNQUk9DRVNTIFVOUkVTUE9OU0lW
RSAtIFdlYlByb2Nlc3MgKHBpZCA4Njc1KVxuJywgVHJ1ZSwgTm9uZSwgTm9uZSwgVHJ1ZSkKIAog
ICAgICAgICBkcml2ZXIuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gTm9uZQogICAgICAgICBkcml2
ZXIuX2NyYXNoZWRfcGlkID0gTm9uZQogICAgICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzID0g
RmFrZVNlcnZlclByb2Nlc3MoRmFsc2UpCiAgICAgICAgIGRyaXZlci5fZHJpdmVyX3RpbWVkX291
dCA9IEZhbHNlCi0gICAgICAgIGFzc2VydF9jcmFzaChkcml2ZXIsICcjQ1JBU0hFRCAtIHJlbmRl
cmVyIChwaWQgODY3NSlcbicsIFRydWUsICdyZW5kZXJlcicsIDg2NzUpCisgICAgICAgIGFzc2Vy
dF9jcmFzaChkcml2ZXIsIGInI0NSQVNIRUQgLSByZW5kZXJlciAocGlkIDg2NzUpXG4nLCBUcnVl
LCAncmVuZGVyZXInLCA4Njc1KQogCiAgICAgICAgIGRyaXZlci5fY3Jhc2hlZF9wcm9jZXNzX25h
bWUgPSBOb25lCiAgICAgICAgIGRyaXZlci5fY3Jhc2hlZF9waWQgPSBOb25lCiAgICAgICAgIGRy
aXZlci5fc2VydmVyX3Byb2Nlc3MgPSBGYWtlU2VydmVyUHJvY2VzcyhUcnVlKQogICAgICAgICBk
cml2ZXIuX2RyaXZlcl90aW1lZF9vdXQgPSBGYWxzZQotICAgICAgICBhc3NlcnRfY3Jhc2goZHJp
dmVyLCAnJywgVHJ1ZSwgJ0Zha2VTZXJ2ZXJQcm9jZXNzJywgMTIzNCkKKyAgICAgICAgYXNzZXJ0
X2NyYXNoKGRyaXZlciwgYicnLCBUcnVlLCAnRmFrZVNlcnZlclByb2Nlc3MnLCAxMjM0KQogCiAg
ICAgZGVmIHRlc3RfY3JlYXRpbmdfYV9wb3J0X2RvZXNfbm90X3dyaXRlX3RvX3RoZV9maWxlc3lz
dGVtKHNlbGYpOgogICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2ltYWdlX2RpZmYucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2ltYWdlX2RpZmYucHkJKHJldmlzaW9uIDI1MzYwMykKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pbWFnZV9kaWZmLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw2ICszNSw3IEBAIGltcG9ydCByZQogaW1wb3J0IHRpbWUKIAogZnJvbSB3ZWJraXRw
eS5wb3J0IGltcG9ydCBzZXJ2ZXJfcHJvY2VzcworZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29k
ZV9jb21wYXRpYmlsaXR5IGltcG9ydCBkZWNvZGVfZm9yCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fbmFtZV9fKQpAQCAtNTcsOSArNTgsMTAgQEAgY2xhc3MgSW1hZ2VEaWZmZXIob2Jq
ZWN0KToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wcm9jZXNzOgogICAgICAgICAgICAgICAg
IHNlbGYuX3N0YXJ0KHRvbGVyYW5jZSkKICAgICAgICAgICAgICMgTm90ZSB0aGF0IGFsdGhvdWdo
IHdlIGFyZSBoYW5kZWQgJ29sZCcsICduZXcnLCBJbWFnZURpZmYgd2FudHMgJ25ldycsICdvbGQn
LgotICAgICAgICAgICAgc2VsZi5fcHJvY2Vzcy53cml0ZSgnQ29udGVudC1MZW5ndGg6ICVkXG4l
c0NvbnRlbnQtTGVuZ3RoOiAlZFxuJXMnICUgKAotICAgICAgICAgICAgICAgIGxlbihhY3R1YWxf
Y29udGVudHMpLCBhY3R1YWxfY29udGVudHMsCi0gICAgICAgICAgICAgICAgbGVuKGV4cGVjdGVk
X2NvbnRlbnRzKSwgZXhwZWN0ZWRfY29udGVudHMpKQorICAgICAgICAgICAgc2VsZi5fcHJvY2Vz
cy53cml0ZSgnQ29udGVudC1MZW5ndGg6IHt9XG4nLmZvcm1hdChsZW4oYWN0dWFsX2NvbnRlbnRz
KSkpCisgICAgICAgICAgICBzZWxmLl9wcm9jZXNzLndyaXRlKGFjdHVhbF9jb250ZW50cykKKyAg
ICAgICAgICAgIHNlbGYuX3Byb2Nlc3Mud3JpdGUoJ0NvbnRlbnQtTGVuZ3RoOiB7fVxuJy5mb3Jt
YXQobGVuKGV4cGVjdGVkX2NvbnRlbnRzKSkpCisgICAgICAgICAgICBzZWxmLl9wcm9jZXNzLndy
aXRlKGV4cGVjdGVkX2NvbnRlbnRzKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWQoKQog
ICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBleGNlcHRpb246CiAgICAgICAgICAgICByZXR1cm4g
KE5vbmUsIDAsICJGYWlsZWQgdG8gY29tcHV0ZSBhbiBpbWFnZSBkaWZmOiAlcyIgJSBzdHIoZXhj
ZXB0aW9uKSkKQEAgLTgzLDE3ICs4NSwxNyBAQCBjbGFzcyBJbWFnZURpZmZlcihvYmplY3QpOgog
ICAgICAgICAgICAgaWYgc2VsZi5fcHJvY2Vzcy50aW1lZF9vdXQgb3Igc2VsZi5fcHJvY2Vzcy5o
YXNfY3Jhc2hlZCgpIG9yIG5vdCBvdXRwdXQ6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAotICAg
ICAgICAgICAgaWYgb3V0cHV0LnN0YXJ0c3dpdGgoJ2RpZmYnKTogICMgVGhpcyBpcyB0aGUgbGFz
dCBsaW5lIEltYWdlRGlmZiBwcmludHMuCisgICAgICAgICAgICBpZiBvdXRwdXQuc3RhcnRzd2l0
aChiJ2RpZmYnKTogICMgVGhpcyBpcyB0aGUgbGFzdCBsaW5lIEltYWdlRGlmZiBwcmludHMuCiAg
ICAgICAgICAgICAgICAgYnJlYWsKIAotICAgICAgICAgICAgaWYgb3V0cHV0LnN0YXJ0c3dpdGgo
J0NvbnRlbnQtTGVuZ3RoJyk6Ci0gICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCdDb250ZW50
LUxlbmd0aDogKFxkKyknLCBvdXRwdXQpCisgICAgICAgICAgICBpZiBvdXRwdXQuc3RhcnRzd2l0
aChiJ0NvbnRlbnQtTGVuZ3RoJyk6CisgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKGInQ29u
dGVudC1MZW5ndGg6IChcZCspJywgb3V0cHV0KQogICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVu
Z3RoID0gaW50KG0uZ3JvdXAoMSkpCiAgICAgICAgICAgICAgICAgb3V0cHV0X2ltYWdlID0gc2Vs
Zi5fcHJvY2Vzcy5yZWFkX3N0ZG91dChkZWFkbGluZSwgY29udGVudF9sZW5ndGgpCiAgICAgICAg
ICAgICAgICAgb3V0cHV0ID0gc2VsZi5fcHJvY2Vzcy5yZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5l
KQogICAgICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAgc3RkZXJyID0gc2VsZi5fcHJvY2Vz
cy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZGVycigpCisgICAgICAgIHN0ZGVyciA9IGRlY29kZV9mb3Io
c2VsZi5fcHJvY2Vzcy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZGVycigpLCBzdHIpCiAgICAgICAgIGVy
cl9zdHIgPSAnJwogICAgICAgICBpZiBzdGRlcnI6CiAgICAgICAgICAgICBlcnJfc3RyICs9ICJJ
bWFnZURpZmYgcHJvZHVjZWQgc3RkZXJyIG91dHB1dDpcbiIgKyBzdGRlcnIKQEAgLTEwMyw5ICsx
MDUsOSBAQCBjbGFzcyBJbWFnZURpZmZlcihvYmplY3QpOgogICAgICAgICAgICAgZXJyX3N0ciAr
PSAiSW1hZ2VEaWZmIGNyYXNoZWRcbiIKIAogICAgICAgICBkaWZmX3BlcmNlbnQgPSAwCi0gICAg
ICAgIGlmIG91dHB1dCBhbmQgb3V0cHV0LnN0YXJ0c3dpdGgoJ2RpZmYnKToKLSAgICAgICAgICAg
IG0gPSByZS5tYXRjaCgnZGlmZjogKC4rKSUgKHBhc3NlZHxmYWlsZWQpJywgb3V0cHV0KQotICAg
ICAgICAgICAgaWYgbS5ncm91cCgyKSA9PSAncGFzc2VkJzoKKyAgICAgICAgaWYgb3V0cHV0IGFu
ZCBvdXRwdXQuc3RhcnRzd2l0aChiJ2RpZmYnKToKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChi
J2RpZmY6ICguKyklIChwYXNzZWR8ZmFpbGVkKScsIG91dHB1dCkKKyAgICAgICAgICAgIGlmIG0u
Z3JvdXAoMikgPT0gYidwYXNzZWQnOgogICAgICAgICAgICAgICAgIHJldHVybiAoTm9uZSwgMCwg
Tm9uZSkKICAgICAgICAgICAgIGRpZmZfcGVyY2VudCA9IGZsb2F0KG0uZ3JvdXAoMSkpCiAKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkJKHJl
dmlzaW9uIDI1MzYwMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJv
Y2Vzcy5weQkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOSBAQCBpbXBvcnQgc2lnbmFsCiBp
bXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9j
b21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5CisKICMgTm90ZSB0aGF0IGFs
dGhvdWdoIHdpbjMyIHB5dGhvbiBkb2VzIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2YKICMg
dGhlIHdpbjMyIHNlbGVjdCBBUEksIGl0IG9ubHkgd29ya3Mgb24gc29ja2V0cywgYW5kIG5vdCBv
biB0aGUgbmFtZWQgcGlwZXMKICMgdXNlZCBieSBzdWJwcm9jZXNzLCBzbyB3ZSBoYXZlIHRvIHVz
ZSB0aGUgbmF0aXZlIEFQSXMgZGlyZWN0bHkuCkBAIC00Nyw4ICs1MCw2IEBAIGVsc2U6CiAgICAg
aW1wb3J0IG9zCiAgICAgaW1wb3J0IHNlbGVjdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotCiAKIF9sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKIApAQCAtMTc4LDkgKzE3OSw5IEBAIGNsYXNzIFNlcnZlclByb2Nlc3Mo
b2JqZWN0KToKICAgICAgICAgaWYgbm90IHNlbGYuX3Byb2M6CiAgICAgICAgICAgICBzZWxmLl9z
dGFydCgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3Byb2Muc3RkaW4ud3JpdGUo
Ynl0ZXMpCisgICAgICAgICAgICBzZWxmLl9wcm9jLnN0ZGluLndyaXRlKGVuY29kZV9pZl9uZWNl
c3NhcnkoYnl0ZXMpKQogICAgICAgICAgICAgc2VsZi5fcHJvYy5zdGRpbi5mbHVzaCgpCi0gICAg
ICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgVmFsdWVF
cnJvcikgYXMgZToKICAgICAgICAgICAgIHNlbGYuc3RvcCgwLjApCiAgICAgICAgICAgICAjIHN0
b3AoKSBjYWxscyBfcmVzZXQoKSwgc28gd2UgaGF2ZSB0byBzZXQgY3Jhc2hlZCB0byBUcnVlIGFm
dGVyIGNhbGxpbmcgc3RvcCgpCiAgICAgICAgICAgICAjIHVubGVzcyB3ZSBhbHJlYWR5IGtub3cg
dGhhdCB0aGlzIGlzIGEgdGltZW91dC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9zZXJ2ZXJfcHJvY2Vzc19tb2NrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzc19tb2NrLnB5CShyZXZpc2lvbiAyNTM2MDMpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfbW9jay5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDEzIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGVu
Y29kZV9pZl9uZWNlc3NhcnkKKwogCiBjbGFzcyBNb2NrU2VydmVyUHJvY2VzcyhvYmplY3QpOgog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaj1Ob25lLCBuYW1lPU5vbmUsIGNtZD1Ob25l
LCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCBsaW5lcz1Ob25lLCBjcmFzaGVk
PUZhbHNlLCB0YXJnZXRfaG9zdD1Ob25lKToKICAgICAgICAgc2VsZi50aW1lZF9vdXQgPSBGYWxz
ZQotICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMgb3IgW10KKyAgICAgICAgc2VsZi5saW5lcyA9
IFtlbmNvZGVfaWZfbmVjZXNzYXJ5KGxpbmUpIGZvciBsaW5lIGluIChsaW5lcyBvciBbXSldCiAg
ICAgICAgIHNlbGYuY3Jhc2hlZCA9IGNyYXNoZWQKICAgICAgICAgc2VsZi53cml0ZXMgPSBbXQog
ICAgICAgICBzZWxmLmNtZCA9IGNtZApAQCAtNTIsNyArNTQsNyBAQCBjbGFzcyBNb2NrU2VydmVy
UHJvY2VzcyhvYmplY3QpOgogICAgIGRlZiByZWFkX3N0ZG91dF9saW5lKHNlbGYsIGRlYWRsaW5l
KToKICAgICAgICAgaWYgc2VsZi5oYXNfY3Jhc2hlZCgpOgogICAgICAgICAgICAgcmV0dXJuIE5v
bmUKLSAgICAgICAgcmV0dXJuIHNlbGYubGluZXMucG9wKDApICsgIlxuIgorICAgICAgICByZXR1
cm4gc2VsZi5saW5lcy5wb3AoMCkgKyBiJ1xuJwogCiAgICAgZGVmIGhhc19hdmFpbGFibGVfc3Rk
b3V0KHNlbGYpOgogICAgICAgICBpZiBzZWxmLmhhc19jcmFzaGVkKCk6CkBAIC02Nyw4ICs2OSw4
IEBAIGNsYXNzIE1vY2tTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLmxp
bmVzLnBvcCgwKQogICAgICAgICAgICAgcmVtYWluaW5nX3NpemUgPSBzaXplIC0gbGVuKGZpcnN0
X2xpbmUpIC0gMQogICAgICAgICAgICAgaWYgbm90IHJlbWFpbmluZ19zaXplOgotICAgICAgICAg
ICAgICAgIHJldHVybiBmaXJzdF9saW5lICsgIlxuIgotICAgICAgICAgICAgcmV0dXJuIGZpcnN0
X2xpbmUgKyAiXG4iICsgc2VsZi5yZWFkX3N0ZG91dChkZWFkbGluZSwgcmVtYWluaW5nX3NpemUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0X2xpbmUgKyBiJ1xuJworICAgICAgICAgICAg
cmV0dXJuIGZpcnN0X2xpbmUgKyBiJ1xuJyArIHNlbGYucmVhZF9zdGRvdXQoZGVhZGxpbmUsIHJl
bWFpbmluZ19zaXplKQogICAgICAgICByZXN1bHQgPSBzZWxmLmxpbmVzWzBdWzpzaXplXQogICAg
ICAgICBzZWxmLmxpbmVzWzBdID0gc2VsZi5saW5lc1swXVtzaXplOl0KICAgICAgICAgcmV0dXJu
IHJlc3VsdApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9j
ZXNzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0
b3JfcHJvY2Vzcy5weQkocmV2aXNpb24gMjUzNjAzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3
IEBACiAKIAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi50aW1lb3V0X2NvbnRleHQgaW1wb3J0IFRpbWVvdXQKQEAgLTY3LDcgKzY4LDkg
QEAgY2xhc3MgU2ltdWxhdG9yUHJvY2VzcyhTZXJ2ZXJQcm9jZXNzKToKIAogICAgICAgICBkZWYg
Y2xvc2Uoc2VsZik6CiAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9maWxlLmNsb3NlKCkKLSAg
ICAgICAgICAgIHNlbGYuc29ja2V0LmNsb3NlKCkKKyAgICAgICAgICAgICMgQ2xvc2luZyB0aGUg
ZmlsZSBpbXBsaWNpdGx5IGNsb3NlcyB0aGUgc29ja2V0IGluIFB5dGhvbiAzCisgICAgICAgICAg
ICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDApOgorICAgICAgICAgICAgICAgIHNlbGYuc29j
a2V0LmNsb3NlKCkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwb3J0X29iaiwgbmFtZSwgY21kLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVz
PUZhbHNlLCB0cmVhdF9ub19kYXRhX2FzX2NyYXNoPUZhbHNlLCB0YXJnZXRfaG9zdD1Ob25lKToK
QEAgLTEwMyw3ICsxMDYsNyBAQCBjbGFzcyBTaW11bGF0b3JQcm9jZXNzKFNlcnZlclByb2Nlc3Mp
OgogICAgICAgICAgICAgc3RkZXJyID0gTm9uZQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgICAgICMgVGhpcyBvcmRlciBtYXRjaGVzIHRoZSBjbGllbnQgc2lkZSBjb25uZWN0aW9ucyBp
biBUb29scy9UZXN0UnVubmVyU2hhcmVkL0lPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCBz
ZXRVcElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uKCkKLSAgICAgICAgICAgICAgICBzdGRpbiA9
IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9maWxlKHNlbGYuX3Rh
cmdldF9ob3N0Lmxpc3RlbmluZ19zb2NrZXQsICd3JykKKyAgICAgICAgICAgICAgICBzdGRpbiA9
IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9maWxlKHNlbGYuX3Rh
cmdldF9ob3N0Lmxpc3RlbmluZ19zb2NrZXQsICd3YicpCiAgICAgICAgICAgICAgICAgc3Rkb3V0
ID0gU2ltdWxhdG9yUHJvY2Vzcy5fYWNjZXB0X2Nvbm5lY3Rpb25fY3JlYXRlX2ZpbGUoc2VsZi5f
dGFyZ2V0X2hvc3QubGlzdGVuaW5nX3NvY2tldCwgJ3JiJykKICAgICAgICAgICAgICAgICBzdGRl
cnIgPSBTaW11bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVhdGVfZmlsZShzZWxm
Ll90YXJnZXRfaG9zdC5saXN0ZW5pbmdfc29ja2V0LCAncmInKQogICAgICAgICAgICAgZXhjZXB0
OgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkJKHJldmlzaW9uIDI1MzYwMykK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBAIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgUG9ydCwgRHJpdmVyLCAK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1w
b3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hs
b2dzIGltcG9ydCBDcmFzaExvZ3MKIGZyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb25fbmFtZV9t
YXAgaW1wb3J0IFBVQkxJQ19UQUJMRSwgVmVyc2lvbk5hbWVNYXAKK2Zyb20gd2Via2l0cHkuY29t
bW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2ZvciwgZW5jb2RlX2lmX25l
Y2Vzc2FyeQogCiAKICMgVGhpcyBzZXRzIGJhc2ljIGV4cGVjdGF0aW9ucyBmb3IgYSB0ZXN0LiBF
YWNoIGluZGl2aWR1YWwgZXhwZWN0YXRpb24KQEAgLTExMSw5ICsxMTIsOSBAQCBVTkVYUEVDVEVE
X0ZBSUxVUkVTID0gMTgKIAogCiBkZWYgdW5pdF90ZXN0X2xpc3QoKToKLSAgICBzaWxlbnRfYXVk
aW8gPSAiUklGRjJceDAwXHgwMFx4MDBXQVZFZm10IFx4MTBceDAwXHgwMFx4MDBceDAxXHgwMFx4
MDFceDAwXHgyMlx4NTZceDAwXHgwMFx4NDRceEFDXHgwMFx4MDBceDAyXHgwMFx4MTBceDAwZGF0
YVx4MEVceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw
XHgwMFx4MDBceDAwXHgwMCIKLSAgICBzaWxlbnRfYXVkaW9fd2l0aF9zaW5nbGVfYml0X2RpZmZl
cmVuY2UgPSAiUklGRjJceDAwXHgwMFx4MDBXQVZFZm10IFx4MTBceDAwXHgwMFx4MDBceDAxXHgw
MFx4MDFceDAwXHgyMlx4NTZceDAwXHgwMFx4NDRceEFDXHgwMFx4MDBceDAyXHgwMFx4MTBceDAw
ZGF0YVx4MEVceDAwXHgwMFx4MDBceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc
eDAwXHgwMFx4MDBceDAwXHgwMCIKLSAgICBhdWRpbzIgPSAiUklGRjJceDAwXHgwMFx4MDBXQVZF
Zm10IFx4MTBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDFceDAwXHgyMlx4NTZceDAwXHgwMFx4NDRc
eEFDXHgwMFx4MDBceDAyXHgwMFx4MTBceDAwZGF0YVx4MEVceDAwXHgwMFx4MDBceDQwXHgwMFx4
MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCIKKyAgICBzaWxl
bnRfYXVkaW8gPSBiIlJJRkYyXHgwMFx4MDBceDAwV0FWRWZtdCBceDEwXHgwMFx4MDBceDAwXHgw
MVx4MDBceDAxXHgwMFx4MjJceDU2XHgwMFx4MDBceDQ0XHhBQ1x4MDBceDAwXHgwMlx4MDBceDEw
XHgwMGRhdGFceDBFXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc
eDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiCisgICAgc2lsZW50X2F1ZGlvX3dpdGhfc2luZ2xlX2Jp
dF9kaWZmZXJlbmNlID0gYiJSSUZGMlx4MDBceDAwXHgwMFdBVkVmbXQgXHgxMFx4MDBceDAwXHgw
MFx4MDFceDAwXHgwMVx4MDBceDIyXHg1Nlx4MDBceDAwXHg0NFx4QUNceDAwXHgwMFx4MDJceDAw
XHgxMFx4MDBkYXRhXHgwRVx4MDBceDAwXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc
eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgorICAgIGF1ZGlvMiA9IGIiUklGRjJceDAwXHgw
MFx4MDBXQVZFZm10IFx4MTBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDFceDAwXHgyMlx4NTZceDAw
XHgwMFx4NDRceEFDXHgwMFx4MDBceDAyXHgwMFx4MTBceDAwZGF0YVx4MEVceDAwXHgwMFx4MDBc
eDQwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCIK
ICAgICB0ZXN0cyA9IFRlc3RMaXN0KCkKICAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVk
L2NyYXNoLmh0bWwnLCBjcmFzaD1UcnVlKQogICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMvZXhwZWN0
ZWQvZXhjZXB0aW9uLmh0bWwnLCBleGNlcHRpb249VHJ1ZSkKQEAgLTQzNCwxNSArNDM1LDIwIEBA
IGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAgICAgICByZXR1cm4gJ1JlbGVhc2UnCiAKICAgICBk
ZWYgZGlmZl9pbWFnZShzZWxmLCBleHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRlbnRzLCB0
b2xlcmFuY2U9Tm9uZSk6CisgICAgICAgIGV4cGVjdGVkX2NvbnRlbnRzID0gZW5jb2RlX2lmX25l
Y2Vzc2FyeShleHBlY3RlZF9jb250ZW50cykKKyAgICAgICAgYWN0dWFsX2NvbnRlbnRzID0gZW5j
b2RlX2lmX25lY2Vzc2FyeShhY3R1YWxfY29udGVudHMpCiAgICAgICAgIGRpZmZlZCA9IGFjdHVh
bF9jb250ZW50cyAhPSBleHBlY3RlZF9jb250ZW50cwogICAgICAgICBpZiBub3QgYWN0dWFsX2Nv
bnRlbnRzIGFuZCBub3QgZXhwZWN0ZWRfY29udGVudHM6CiAgICAgICAgICAgICByZXR1cm4gKE5v
bmUsIDAsIE5vbmUpCiAgICAgICAgIGlmIG5vdCBhY3R1YWxfY29udGVudHMgb3Igbm90IGV4cGVj
dGVkX2NvbnRlbnRzOgogICAgICAgICAgICAgcmV0dXJuIChUcnVlLCAwLCBOb25lKQotICAgICAg
ICBpZiAncmVmJyBpbiBleHBlY3RlZF9jb250ZW50czoKKyAgICAgICAgaWYgYidyZWYnIGluIGV4
cGVjdGVkX2NvbnRlbnRzOgogICAgICAgICAgICAgYXNzZXJ0IHRvbGVyYW5jZSA9PSAwCiAgICAg
ICAgIGlmIGRpZmZlZDoKLSAgICAgICAgICAgIHJldHVybiAoIjwgJXNcbi0tLVxuPiAlc1xuIiAl
IChleHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRlbnRzKSwgMSwgTm9uZSkKKyAgICAgICAg
ICAgIHJldHVybiAoIjwge31cbi0tLVxuPiB7fVxuIi5mb3JtYXQoCisgICAgICAgICAgICAgICAg
ZGVjb2RlX2ZvcihleHBlY3RlZF9jb250ZW50cywgc3RyKSwKKyAgICAgICAgICAgICAgICBkZWNv
ZGVfZm9yKGFjdHVhbF9jb250ZW50cywgc3RyKSwKKyAgICAgICAgICAgICksIDEsIE5vbmUpCiAg
ICAgICAgIHJldHVybiAoTm9uZSwgMCwgTm9uZSkKIAogICAgIGRlZiBsYXlvdXRfdGVzdHNfZGly
KHNlbGYpOgpAQCAtNTYzLDcgKzU2OSw3IEBAIGNsYXNzIFRlc3REcml2ZXIoRHJpdmVyKToKICAg
ICAgICAgdGVzdF9hcmdzID0gdGVzdF9pbnB1dC5hcmdzIG9yIFtdCiAgICAgICAgIHRlc3QgPSBz
ZWxmLl9wb3J0Ll90ZXN0c1t0ZXN0X25hbWVdCiAgICAgICAgIGlmIHRlc3Qua2V5Ym9hcmQ6Ci0g
ICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAorICAgICAgICAgICAgcmFpc2UgS2V5
Ym9hcmRJbnRlcnJ1cHQoKQogICAgICAgICBpZiB0ZXN0LmV4Y2VwdGlvbjoKICAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoJ2V4Y2VwdGlvbiBmcm9tICcgKyB0ZXN0X25hbWUpCiAgICAgICAg
IGlmIHRlc3QuaGFuZzoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxh
dGVkX2RldmljZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2Rl
L3NpbXVsYXRlZF9kZXZpY2UucHkJKHJldmlzaW9uIDI1MzYwMykKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZS5weQkod29ya2luZyBjb3B5KQpAQCAtNTYz
LDcgKzU2Myw3IEBAIGNsYXNzIFNpbXVsYXRlZERldmljZShvYmplY3QpOgogICAgICAgICAgICAg
X2xvZy5kZWJ1Zyh1J3t9IGhhcyBubyBzZXJ2aWNlIHRvIGNoZWNrIGlmIHRoZSBkZXZpY2UgaXMg
dXNhYmxlJy5mb3JtYXQoc2VsZi5kZXZpY2VfdHlwZS5zb2Z0d2FyZV92YXJpYW50KSkKICAgICAg
ICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAgICAgc3lzdGVtX3Byb2Nlc3NlcyA9IHNlbGYuZXhl
Y3V0aXZlLnJ1bl9jb21tYW5kKFtTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLnhjcnVuLCAnc2ltY3Rs
JywgJ3NwYXduJywgc2VsZi51ZGlkLCAnbGF1bmNoY3RsJywgJ3ByaW50JywgJ3N5c3RlbSddLCBk
ZWNvZGVfb3V0cHV0PUZhbHNlKQorICAgICAgICBzeXN0ZW1fcHJvY2Vzc2VzID0gc2VsZi5leGVj
dXRpdmUucnVuX2NvbW1hbmQoW1NpbXVsYXRlZERldmljZU1hbmFnZXIueGNydW4sICdzaW1jdGwn
LCAnc3Bhd24nLCBzZWxmLnVkaWQsICdsYXVuY2hjdGwnLCAncHJpbnQnLCAnc3lzdGVtJ10sIGRl
Y29kZV9vdXRwdXQ9VHJ1ZSkKICAgICAgICAgaWYgcmUuc2VhcmNoKHInInt9IicuZm9ybWF0KGhv
bWVfc2NyZWVuX3NlcnZpY2UpLCBzeXN0ZW1fcHJvY2Vzc2VzKSBvciByZS5zZWFyY2gocidBXHMr
e30nLmZvcm1hdChob21lX3NjcmVlbl9zZXJ2aWNlKSwgc3lzdGVtX3Byb2Nlc3Nlcyk6CiAgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTYwNCw3ICs2MDQs
NyBAQCBjbGFzcyBTaW11bGF0ZWREZXZpY2Uob2JqZWN0KToKIAogICAgIGRlZiBpbnN0YWxsX2Fw
cChzZWxmLCBhcHBfcGF0aCwgZW52PU5vbmUpOgogICAgICAgICAjIEV2ZW4gYWZ0ZXIgY2Fyb3Vz
ZWwgaXMgcnVubmluZywgaXQgdGFrZXMgYSBmZXcgc2Vjb25kcyBmb3Igd2F0Y2hPUyB0byBhbGxv
dyBpbnN0YWxscy4KLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuTlVNX0lOU1RBTExfUkVU
UklFUyk6CisgICAgICAgIGZvciBpIGluIHJhbmdlKHNlbGYuTlVNX0lOU1RBTExfUkVUUklFUyk6
CiAgICAgICAgICAgICBleGl0X2NvZGUgPSBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ3hj
cnVuJywgJ3NpbWN0bCcsICdpbnN0YWxsJywgc2VsZi51ZGlkLCBhcHBfcGF0aF0sIHJldHVybl9l
eGl0X2NvZGU9VHJ1ZSkKICAgICAgICAgICAgIGlmIGV4aXRfY29kZSA9PSAwOgogICAgICAgICAg
ICAgICAgIHJldHVybiBUcnVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387233</attachid>
            <date>2020-01-09 08:37:31 -0800</date>
            <delta_ts>2020-01-10 09:11:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205291-20200109083729.patch</filename>
            <type>text/plain</type>
            <size>64555</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1NDIzMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDkwIEBACisyMDIwLTAxLTA4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgdG8gcnVuLXdlYmtpdC10ZXN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjkxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRz
L3Rlc3Qtd2Via2l0cHktcHl0aG9uMzogQWRkIHdlYmtpdHB5LmxheW91dF90ZXN0cy4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9tZXNzYWdlX3Bvb2wucHk6CisgICAgICAgIChf
TWVzc2FnZVBvb2wuX2xvb3ApOiBNb3ZlIGV4Y2VwdGlvbiBpbnNpZGUgb2YgbG9vcC4KKyAgICAg
ICAgKF9NZXNzYWdlLl9fcmVwcl9fKTogVXNlIC5mb3JtYXQgc3RyaW5ncy4KKyAgICAgICAgKF9X
b3JrZXIuX19pbml0X18pOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi93YXZlZGlmZi5weToKKyAgICAgICAgKFdhdmVEaWZmLl9faW5pdF9fKTogVXNlIFB5dGhvbiAz
IGNvbXBhdGlibGUgQnl0ZXNJTyBhbmQgU3RyaW5nSU8uCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5OgorICAg
ICAgICAoTGF5b3V0VGVzdEZpbmRlci5fcmVhZF90ZXN0X25hbWVzX2Zyb21fZmlsZSk6IFVzZSAu
Zm9ybWF0IHN0cmluZy4KKyAgICAgICAgKExheW91dFRlc3RGaW5kZXIuc3BsaXRfaW50b19jaHVu
a3MpOiBFeHBsaWNpdGx5IHVzZSBpbnRlZ2VyIGRpdmlzaW9uLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6CisgICAgICAgIChN
YW5hZ2VyLl9nZXRfdGVzdF9pbnB1dHMpOiBVc2UgcmFuZ2Ugb3ZlciB4cmFuZ2UuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3Rf
cnVubmVyLnB5OgorICAgICAgICAoU2luZ2xlVGVzdFJ1bm5lci5faGFuZGxlX2Vycm9yKTogVXNl
IC5mb3JtYXQgc3RyaW5ncy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS9qc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvci5weToKKyAgICAg
ICAgKEpTT05MYXlvdXRSZXN1bHRzR2VuZXJhdG9yLl9pbnNlcnRfZmFpbHVyZV9zdW1tYXJpZXMp
OiBVc2UgUHl0aG9uIDMgY29tcGF0aWJsZSBpdGVydmFsdWVzLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3Jlc3VsdHMucHk6CisgICAgICAgIChU
ZXN0UmVzdWx0Ll9faW5pdF9fKTogU29ydCB0eXBlIGxpc3QuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHk6
CisgICAgICAgIChSdW5UZXN0LnNldFVwKTogTXVsdGlwbGUgcHJvY2Vzc2VzIGFyZSBidWdneSBp
biB0ZXN0LXdlYmtpdHB5LgorICAgICAgICAoUnVuVGVzdC50ZXN0X2Jhc2ljKTogcmVwbGFjZSBi
dWZsaXN0IHdpdGggZ2V0dmFsdWUoKS4KKyAgICAgICAgKFJ1blRlc3QudGVzdF9jaGlsZF9wcm9j
ZXNzZXNfMik6IERpdHRvLgorICAgICAgICAoUnVuVGVzdC50ZXN0X2NoaWxkX3Byb2Nlc3Nlc19t
aW4pOiBEaXR0by4KKyAgICAgICAgKFJ1blRlc3QudGVzdF9rZXlib2FyZF9pbnRlcnJ1cHQpOiBE
aXR0by4KKyAgICAgICAgKFJ1blRlc3QudGVzdF9taXNzaW5nX2FuZF91bmV4cGVjdGVkX3Jlc3Vs
dHMpOiBDb21wYXJlIGRpY3Rpb25hcmllcyBpbnN0ZWFkIG9mIGpzb24gc3RyaW5ncy4KKyAgICAg
ICAgKFJ1blRlc3QudGVzdF9jcmFzaF93aXRoX3N0ZGVycik6IERpdHRvLgorICAgICAgICAoUnVu
VGVzdC50ZXN0X3JlZnRlc3Rfc2hvdWxkX25vdF91c2VfbmFtaW5nX2NvbnZlbnRpb25faWZfbm90
X2xpc3RlZF9pbl9yZWZ0ZXN0bGlzdCk6IERpdHRvLgorICAgICAgICAoRW5kVG9FbmRUZXN0LnRl
c3RfcmVmdGVzdF93aXRoX3R3b19ub3RyZWZzKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW0ucHk6CisgICAgICAgIChN
ZXRlcmVkU3RyZWFtLndyaXRlKTogRmx1c2ggc3RyZWFtIGFmdGVyIHdyaXRpbmcuCisgICAgICAg
IChNZXRlcmVkU3RyZWFtLl9lcmFzZV9sYXN0X3BhcnRpYWxfbGluZSk6IERpdHRvLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5OgorICAg
ICAgICAoUHJpbnRlci5fcHJpbnRfZGlyZWN0b3J5X3RpbWluZ3MpOiBDYW4ndCBjb21wYXJlIHN0
cmluZyB0byBpbnRlZ2VyLgorICAgICAgICAoUHJpbnRlci5fcHJpbnRfc3RhdGlzdGljc19mb3Jf
dGVzdF90aW1pbmdzKTogVXNlIGludGVnZXIgZGl2aXNpb24uCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9wb3J0L2Rhcndpbi5weToKKyAgICAgICAgKERhcndpblBvcnQuX21lcmdlX2NyYXNo
X2xvZ3MpOiBVc2UgaXRlbXMgb3ZlciBpdGVyaXRlbXMuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2RldmljZS5weToKKyAgICAgICAgKERldmljZS5fX2hhc2hfXyk6IEFsbG93IGhh
c2hpbmcgb2YgZGV2aWNlcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNl
X3BvcnQucHk6CisgICAgICAgIChEZXZpY2VQb3J0Ll9pbnN0YWxsKTogVXNlIHJhbmdlIG92ZXIg
eHJhbmdlLgorICAgICAgICAoRGV2aWNlUG9ydC5zZXR1cF90ZXN0X3J1bik6IERpdHRvLgorICAg
ICAgICAoRGV2aWNlUG9ydC5jbGVhbl91cF90ZXN0X3J1bik6IERpdHRvLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHk6CisgICAgICAgIChEcml2ZXJPdXRwdXQuX19p
bml0X18pOiBUZXh0IHNob3VsZCBiZSBkZWNvZGVkLCBhdWRpbyBlbmNvZGVkLgorICAgICAgICAo
RHJpdmVyLl9faW5pdF9fKToKKyAgICAgICAgKERyaXZlci5ydW5fdGVzdCk6CisgICAgICAgIChE
cml2ZXIuX3BhcnNlX2NoaWxkX3Byb2Nlc3Nlc19vdXRwdXQpOiBPdXRwdXQgaXMgYnl0ZSBhcnJh
eS4KKyAgICAgICAgKERyaXZlci5fY2hlY2tfZm9yX2RyaXZlcl90aW1lb3V0KTogRGl0dG8uCisg
ICAgICAgIChEcml2ZXIuX2NoZWNrX2Zvcl9hZGRyZXNzX3Nhbml0aXplcl92aW9sYXRpb24pOiBF
cnJvciBsaW5lcyBhcmUgYnl0ZSBhcnJheXMuCisgICAgICAgIChEcml2ZXIuX2NoZWNrX2Zvcl9k
cml2ZXJfY3Jhc2hfb3JfdW5yZXNwb25zaXZlbmVzcyk6IERpdHRvLgorICAgICAgICAoRHJpdmVy
Ll9yZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrKTogSWYgYSBibG9jayBpcyBiYXNlNjQgZW5jb2Rl
ZCwgd2Ugd2FudCB0aGUgZGVjb2RlZAorICAgICAgICBjb250ZW50LCBvdGhlcndpc2UsIHdlIHdh
bnQgdGhlIGVuY29kZWQgY29udGVudC4KKyAgICAgICAgKERyaXZlci5fcmVhZF9oZWFkZXIpOiBM
aW5lcyBhcmUgYnl0ZSBhcnJheXMsIGRlY29kZSB0aGVtIGJlZm9yZSBwcm9jZXNzaW5nLgorICAg
ICAgICAoRHJpdmVyLl9wcm9jZXNzX3N0ZG91dF9saW5lKTogQmxvY2tzIGFyZSBieXRlIGFycmF5
cy4KKyAgICAgICAgKERyaXZlci5fc3RyaXBfZW9mKTogTGluZXMgc2hvdWxkIGJlIGJ5dGUgYXJy
YXlzLCBub3Qgc3RyaW5ncy4KKyAgICAgICAgKERyaXZlci5fcmVhZF9ibG9jayk6IFN0YW5kYXJk
aXplIGVuY29kaW5nIGluIGJsb2Nrcy4KKyAgICAgICAgKENvbnRlbnRCbG9jay5fX2luaXRfXyk6
IENvbnRlbnQgc2hvdWxkIGJlIGEgYnl0ZSBhcnJheS4KKyAgICAgICAgKENvbnRlbnRCbG9jay5k
ZWNvZGVfY29udGVudCk6IEF0dGVtcHQgdG8gZGVjb2RlIGNvbnRlbnQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weToKKyAgICAgICAgKERyaXZlclRl
c3QudGVzdF9yZWFkX2JpbmFyeV9ibG9jayk6IENvbnRlbnQgc2hvdWxkIGJlIGVuY29kZWQuCisg
ICAgICAgIChEcml2ZXJUZXN0LnRlc3RfcmVhZF9iYXNlNjRfYmxvY2spOiBEaXR0by4KKyAgICAg
ICAgKERyaXZlclRlc3QudGVzdF9jaGVja19mb3JfZHJpdmVyX2NyYXNoKTogU2VydmVyUHJvY2Vz
cyBvdXRwdXQgc2hvdWxkIGJlIGEgYnl0ZSBhcnJheS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BvcnQvaW1hZ2VfZGlmZi5weToKKyAgICAgICAgKEltYWdlRGlmZmVyLmRpZmZfaW1hZ2Up
OiBJbWFnZURpZmYgb3V0cHV0IGlzIGluIGJ5dGUgYXJyYXlzLgorICAgICAgICAoSW1hZ2VEaWZm
ZXIuX3JlYWQpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVy
X3Byb2Nlc3MucHk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLndyaXRlKTogRW5jb2RlIGRhdGEg
YmVmb3JlIHdyaXRpbmcgaXQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZl
cl9wcm9jZXNzX21vY2sucHk6CisgICAgICAgIChNb2NrU2VydmVyUHJvY2Vzcy5fX2luaXRfXyk6
IENvbnZlcnQgc3RyaW5nIG1vY2sgb3V0cHV0IHRvIGJ5dGVzLgorICAgICAgICAoTW9ja1NlcnZl
clByb2Nlc3MucmVhZF9zdGRvdXRfbGluZSk6IFN0ZG91dCBsaW5lcyBhcmUgYnl0ZSBhcnJheXMu
CisgICAgICAgIChNb2NrU2VydmVyUHJvY2Vzcy5yZWFkX3N0ZG91dCk6IERpdHRvLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weToKKyAgICAgICAg
KFNpbXVsYXRvclByb2Nlc3MuTm9uQmxvY2tpbmdGaWxlRnJvbVNvY2tldC5jbG9zZSk6IERvbid0
IGRvdWJsZSBjbG9zZSBzb2NrZXQgaW4gUHl0aG9uIDMuCisgICAgICAgIChTaW11bGF0b3JQcm9j
ZXNzLl9zdGFydCk6IFN0ZGluIHNob3VsZCBiZSBhIGJpbmFyeSBzdHJlYW0uCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHk6CisgICAgICAgICh1bml0X3Rlc3RfbGlzdCk6
IENvbnZlcnQgYXVkaW8gc3RyZWFtcyB0byBieXRlIGFycmF5cy4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHk6CisgICAgICAgIChTaW11bGF0ZWRE
ZXZpY2UuaXNfdXNhYmxlKTogRGVjb2RlIHhjcnVuIG91dHB1dC4KKyAgICAgICAgKFNpbXVsYXRl
ZERldmljZS5pbnN0YWxsX2FwcCk6IFVzZSB4cmFuZ2Ugb3ZlciByYW5nZS4KKwogMjAyMC0wMS0w
OCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIHRlc3Rp
bmcgYnVpbGQgY29uZmlndXJhdGlvbiB0byByZWxlYXNlK2Fzc2VydCwgYW5kIGFkZCBuZXcgdGVz
dGluZyBidWlsZCBjb25maWd1cmF0aW9uLgpJbmRleDogVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtp
dHB5LXB5dGhvbjMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5LXB5
dGhvbjMJKHJldmlzaW9uIDI1NDIzMykKKysrIFRvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweS1w
eXRob24zCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsNyBAQCBQWVRIT04zX0NPTVBBVElC
TEVfRElSRUNUT1JJRVMgPSBbCiAgICd3ZWJraXRweS5iZW5jaG1hcmtfcnVubmVyJywKICAgJ3dl
YmtpdHB5LmJyb3dzZXJwZXJmZGFzaCcsCiAgICd3ZWJraXRweS5jb21tb24nLAotICAnd2Via2l0
cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzJywKLSAgJ3dlYmtpdHB5LmxheW91dF90ZXN0cy5s
YXlvdXRfcGFja2FnZScsCi0gICd3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzJywKLSAgJ3dl
YmtpdHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzJywKLSAgJ3dlYmtpdHB5LmxheW91dF90ZXN0cy52
aWV3cycsCisgICd3ZWJraXRweS5sYXlvdXRfdGVzdHMnLAogICAnd2Via2l0cHkucGVyZm9ybWFu
Y2VfdGVzdHMnLAogICAnd2Via2l0cHkucG9ydCcsCiAgICd3ZWJraXRweS5yZXN1bHRzJywKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL21lc3NhZ2VfcG9vbC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9tZXNzYWdlX3Bvb2wucHkJKHJl
dmlzaW9uIDI1NDIzMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL21lc3NhZ2Vf
cG9vbC5weQkod29ya2luZyBjb3B5KQpAQCAtMTg1LDIwICsxODUsMjIgQEAgY2xhc3MgX01lc3Nh
Z2VQb29sKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBfbG9v
cChzZWxmLCBibG9jayk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0g
ICAgICAgICAgICAgICAgaWYgbGVuKHNlbGYuX3dvcmtlcnNfc3RvcHBlZCkgPT0gbGVuKHNlbGYu
X3dvcmtlcnMpOgotICAgICAgICAgICAgICAgICAgICBibG9jayA9IEZhbHNlCisgICAgICAgIHdo
aWxlIFRydWU6CisgICAgICAgICAgICBpZiBsZW4oc2VsZi5fd29ya2Vyc19zdG9wcGVkKSA9PSBs
ZW4oc2VsZi5fd29ya2Vycyk6CisgICAgICAgICAgICAgICAgYmxvY2sgPSBGYWxzZQorCisgICAg
ICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX21lc3NhZ2VzX3Rv
X21hbmFnZXIuZ2V0KGJsb2NrKQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ19tZXNzYWdlcyht
ZXNzYWdlLmxvZ3MpCi0gICAgICAgICAgICAgICAgaWYgbWVzc2FnZS5mcm9tX3VzZXI6Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxlci5oYW5kbGUobWVzc2FnZS5uYW1lLCBtZXNzYWdl
LnNyYywgKm1lc3NhZ2UuYXJncykKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAg
ICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHNlbGYsICdfaGFuZGxlXycgKyBtZXNzYWdlLm5h
bWUpCi0gICAgICAgICAgICAgICAgYXNzZXJ0IG1ldGhvZCwgJ2JhZCBtZXNzYWdlICVzJyAlIHJl
cHIobWVzc2FnZSkKLSAgICAgICAgICAgICAgICBtZXRob2QobWVzc2FnZS5zcmMsICptZXNzYWdl
LmFyZ3MpCi0gICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKLSAgICAgICAgICAgIHBhc3MKKyAg
ICAgICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKKyAgICAgICAgICAgICAgICBicmVhaworCisg
ICAgICAgICAgICBzZWxmLl9sb2dfbWVzc2FnZXMobWVzc2FnZS5sb2dzKQorICAgICAgICAgICAg
aWYgbWVzc2FnZS5mcm9tX3VzZXI6CisgICAgICAgICAgICAgICAgc2VsZi5fY2FsbGVyLmhhbmRs
ZShtZXNzYWdlLm5hbWUsIG1lc3NhZ2Uuc3JjLCAqbWVzc2FnZS5hcmdzKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHNlbGYsICdfaGFuZGxl
XycgKyBtZXNzYWdlLm5hbWUpCisgICAgICAgICAgICBhc3NlcnQgbWV0aG9kLCAnYmFkIG1lc3Nh
Z2UgJXMnICUgcmVwcihtZXNzYWdlKQorICAgICAgICAgICAgbWV0aG9kKG1lc3NhZ2Uuc3JjLCAq
bWVzc2FnZS5hcmdzKQogCiAKIGNsYXNzIFdvcmtlckV4Y2VwdGlvbihCYXNlRXhjZXB0aW9uKToK
QEAgLTIxNSw3ICsyMTcsMTMgQEAgY2xhc3MgX01lc3NhZ2Uob2JqZWN0KToKICAgICAgICAgc2Vs
Zi5sb2dzID0gbG9ncwogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4g
J19NZXNzYWdlKHNyYz0lcywgbmFtZT0lcywgYXJncz0lcywgZnJvbV91c2VyPSVzLCBsb2dzPSVz
KScgJSAoc2VsZi5zcmMsIHNlbGYubmFtZSwgc2VsZi5hcmdzLCBzZWxmLmZyb21fdXNlciwgc2Vs
Zi5sb2dzKQorICAgICAgICByZXR1cm4gJ19NZXNzYWdlKHNyYz17c3JjfSwgbmFtZT17bmFtZX0s
IGFyZ3M9e2FyZ3N9LCBmcm9tX3VzZXI9e2Zyb21fdXNlcn0sIGxvZ3M9e2xvZ3N9KScuZm9ybWF0
KAorICAgICAgICAgICAgc3JjPXNlbGYuc3JjLAorICAgICAgICAgICAgbmFtZT1zZWxmLm5hbWUs
CisgICAgICAgICAgICBhcmdzPXNlbGYuYXJncywKKyAgICAgICAgICAgIGZyb21fdXNlcj1zZWxm
LmZyb21fdXNlciwKKyAgICAgICAgICAgIGxvZ3M9c2VsZi5sb2dzLAorICAgICAgICApCiAKIAog
Y2xhc3MgX1dvcmtlcihtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyk6CkBAIC0yMjMsNyArMjMxLDcg
QEAgY2xhc3MgX1dvcmtlcihtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyk6CiAgICAgICAgIHN1cGVy
KF9Xb3JrZXIsIHNlbGYpLl9faW5pdF9fKCkKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAg
ICAgICBzZWxmLndvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVtYmVyCi0gICAgICAgIHNlbGYubmFt
ZSA9ICd3b3JrZXIvJWQnICUgd29ya2VyX251bWJlcgorICAgICAgICBzZWxmLm5hbWUgPSAnd29y
a2VyL3t9Jy5mb3JtYXQod29ya2VyX251bWJlcikKICAgICAgICAgc2VsZi5sb2dfbWVzc2FnZXMg
PSBbXQogICAgICAgICBzZWxmLmxvZ19sZXZlbCA9IGxvZ19sZXZlbAogICAgICAgICBzZWxmLl9y
dW5uaW5nX2lubGluZSA9IHJ1bm5pbmdfaW5saW5lCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi93YXZlZGlmZi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi93YXZlZGlmZi5weQkocmV2aXNpb24gMjU0MjMzKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vd2F2ZWRpZmYucHkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDcgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgd2F2ZQogCi1mcm9tIGlv
IGltcG9ydCBCeXRlc0lPCitmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxp
dHkgaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCiAKIAogY2xhc3MgV2F2ZURpZmYob2JqZWN0KToK
QEAgLTM1LDEyICszNSwxMiBAQCBjbGFzcyBXYXZlRGlmZihvYmplY3QpOgogICAgIF90b2xlcmFu
Y2UgPSAxCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaW4xLCBpbjIpOgotICAgICAgICBpZiBp
c2luc3RhbmNlKGluMSwgZmlsZSk6Ci0gICAgICAgICAgICB3YXZlRmlsZTEgPSB3YXZlLm9wZW4o
aW4xLCAncmInKQorICAgICAgICBpZiBpc2luc3RhbmNlKGluMSwgc3RyKToKKyAgICAgICAgICAg
IHdhdmVGaWxlMSA9IHdhdmUub3BlbihTdHJpbmdJTyhpbjEpLCAncicpCiAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICB3YXZlRmlsZTEgPSB3YXZlLm9wZW4oQnl0ZXNJTyhpbjEpLCAncmInKQot
ICAgICAgICBpZiBpc2luc3RhbmNlKGluMiwgZmlsZSk6Ci0gICAgICAgICAgICB3YXZlRmlsZTEg
PSB3YXZlLm9wZW4oaW4yLCAncmInKQorICAgICAgICBpZiBpc2luc3RhbmNlKGluMiwgc3RyKToK
KyAgICAgICAgICAgIHdhdmVGaWxlMiA9IHdhdmUub3BlbihTdHJpbmdJTyhpbjIpLCAncicpCiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICB3YXZlRmlsZTIgPSB3YXZlLm9wZW4oQnl0ZXNJTyhp
bjIpLCAncmInKQogCkBAIC02NiwxMiArNjYsMTIgQEAgY2xhc3MgV2F2ZURpZmYob2JqZWN0KToK
IAogICAgICAgICBhbGxEYXRhMSA9IHNlbGYuX3JlYWRTYW1wbGVzKHdhdmVGaWxlMSwgc2FtcGxl
V2lkdGgxLCBmcmFtZUNvdW50MSAqIGNoYW5uZWxDb3VudDEpCiAgICAgICAgIGFsbERhdGEyID0g
c2VsZi5fcmVhZFNhbXBsZXMod2F2ZUZpbGUyLCBzYW1wbGVXaWR0aDIsIGZyYW1lQ291bnQyICog
Y2hhbm5lbENvdW50MikKLSAgICAgICAgcmVzdWx0cyA9IG1hcChzZWxmLl9kaWZmU2FtcGxlLCBh
bGxEYXRhMSwgYWxsRGF0YTIsIHhyYW5nZShtYXgoZnJhbWVDb3VudDEgKiBjaGFubmVsQ291bnQx
LCBmcmFtZUNvdW50MiAqIGNoYW5uZWxDb3VudDIpKSkKKyAgICAgICAgcmVzdWx0cyA9IGxpc3Qo
bWFwKHNlbGYuX2RpZmZTYW1wbGUsIGFsbERhdGExLCBhbGxEYXRhMiwgcmFuZ2UobWF4KGZyYW1l
Q291bnQxICogY2hhbm5lbENvdW50MSwgZnJhbWVDb3VudDIgKiBjaGFubmVsQ291bnQyKSkpKQog
CiAgICAgICAgIGN1bXVsYXRpdmVTYW1wbGVEaWZmID0gc3VtKHJlc3VsdHMpCi0gICAgICAgIGRp
ZmZlcmluZ1NhbXBsZUNvdW50ID0gbGVuKGZpbHRlcihib29sLCByZXN1bHRzKSkKKyAgICAgICAg
ZGlmZmVyaW5nU2FtcGxlQ291bnQgPSBsZW4obGlzdChmaWx0ZXIoYm9vbCwgcmVzdWx0cykpKQog
ICAgICAgICBzZWxmLl9maWxlc0FyZUlkZW50aWNhbCA9IG5vdCBkaWZmZXJpbmdTYW1wbGVDb3Vu
dAotICAgICAgICBzZWxmLl9maWxlc0FyZUlkZW50aWNhbFdpdGhpblRvbGVyYW5jZSA9IG5vdCBs
ZW4oZmlsdGVyKGxhbWJkYSB4OiB4ID4gc2VsZi5fdG9sZXJhbmNlLCByZXN1bHRzKSkKKyAgICAg
ICAgc2VsZi5fZmlsZXNBcmVJZGVudGljYWxXaXRoaW5Ub2xlcmFuY2UgPSBub3QgbGVuKGxpc3Qo
ZmlsdGVyKGxhbWJkYSB4OiB4ID4gc2VsZi5fdG9sZXJhbmNlLCByZXN1bHRzKSkpCiAKICAgICAg
ICAgaWYgZGlmZmVyaW5nU2FtcGxlQ291bnQ6CiAgICAgICAgICAgICBzZWxmLl9kaWZmICs9ICdc
bicKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CShy
ZXZpc2lvbiAyNTQyMzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjks
OCArMjksMTAgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IGpzb24KK2ltcG9ydCBzeXMKIGlt
cG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxp
dHkgaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91
dHB1dGNhcHR1cmUsIHBhdGgKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxvZ3Nf
dW5pdHRlc3QgaW1wb3J0IG1ha2VfbW9ja19jcmFzaF9yZXBvcnRfZGFyd2luCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdApAQCAtMTc2LDcg
KzE3OCw4IEBAIGNsYXNzIFJ1blRlc3QodW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVQKIAogICAg
ICAgICAjIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHdlIGZpeCB0ZXN0LXdlYmtpdHB5IHRvIHdv
cmsKICAgICAgICAgIyBwcm9wZXJseSBvbiBjeWd3aW4gKGJ1ZyA2Mzg0NikuCi0gICAgICAgIHNl
bGYuc2hvdWxkX3Rlc3RfcHJvY2Vzc2VzID0gbm90IHNlbGYuX3BsYXRmb3JtLmlzX3dpbigpCisg
ICAgICAgICMgRklYTUU6IE11bHRpcHJvY2Vzc2luZyBkb2Vzbid0IGRvIHdlbGwgd2hlbiBuZXN0
ZWQgaW4gUHl0aG9uIDMgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDUyODApCisgICAgICAgIHNlbGYuc2hvdWxkX3Rlc3RfcHJvY2Vzc2VzID0gbm90IHNlbGYuX3Bs
YXRmb3JtLmlzX3dpbigpIGFuZCBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDApCiAKICAgICBkZWYg
dGVzdF9iYXNpYyhzZWxmKToKICAgICAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlX2FyZ3ModGVz
dHNfaW5jbHVkZWQ9VHJ1ZSkKQEAgLTE5NSw3ICsxOTgsNyBAQCBjbGFzcyBSdW5UZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlLCBTdHJlYW1UCiAgICAgICAgIG9uZV9saW5lX3N1bW1hcnkgPSAiJWQgdGVz
dHMgcmFuIGFzIGV4cGVjdGVkLCAlZCBkaWRuJ3Q6XG4iICUgKAogICAgICAgICAgICAgZGV0YWls
cy5pbml0aWFsX3Jlc3VsdHMudG90YWwgLSBkZXRhaWxzLmluaXRpYWxfcmVzdWx0cy5leHBlY3Rl
ZF9za2lwcyAtIGxlbihkZXRhaWxzLmluaXRpYWxfcmVzdWx0cy51bmV4cGVjdGVkX3Jlc3VsdHNf
YnlfbmFtZSksCiAgICAgICAgICAgICBsZW4oZGV0YWlscy5pbml0aWFsX3Jlc3VsdHMudW5leHBl
Y3RlZF9yZXN1bHRzX2J5X25hbWUpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob25lX2xpbmVf
c3VtbWFyeSBpbiBsb2dnaW5nX3N0cmVhbS5idWZsaXN0KQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUob25lX2xpbmVfc3VtbWFyeSBpbiBsb2dnaW5nX3N0cmVhbS5nZXR2YWx1ZSgpKQogCiAgICAg
ICAgICMgRW5zdXJlIHRoZSByZXN1bHRzIHdlcmUgc3VtbWFyaXplZCBwcm9wZXJseS4KICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChkZXRhaWxzLnN1bW1hcml6ZWRfcmVzdWx0c1snbnVtX3JlZ3Jl
c3Npb25zJ10sIGRldGFpbHMuZXhpdF9jb2RlKQpAQCAtMjE5LDE0ICsyMjIsMTQgQEAgY2xhc3Mg
UnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgU3RyZWFtVAogICAgICAgICBpZiBzZWxmLnNob3Vs
ZF90ZXN0X3Byb2Nlc3NlczoKICAgICAgICAgICAgIF8sIHJlZ3VsYXJfb3V0cHV0LCBfID0gbG9n
Z2luZ19ydW4oCiAgICAgICAgICAgICAgICAgWyctLWRlYnVnLXJ3dC1sb2dnaW5nJywgJy0tY2hp
bGQtcHJvY2Vzc2VzJywgJzInXSwgc2hhcmVkX3BvcnQ9RmFsc2UpCi0gICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUoYW55KFsnUnVubmluZyAyICcgaW4gbGluZSBmb3IgbGluZSBpbiByZWd1bGFy
X291dHB1dC5idWZsaXN0XSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KFsnUnVu
bmluZyAyICcgaW4gbGluZSBmb3IgbGluZSBpbiByZWd1bGFyX291dHB1dC5nZXR2YWx1ZSgpLnNw
bGl0bGluZXMoKV0pKQogCiAgICAgZGVmIHRlc3RfY2hpbGRfcHJvY2Vzc2VzX21pbihzZWxmKToK
ICAgICAgICAgaWYgc2VsZi5zaG91bGRfdGVzdF9wcm9jZXNzZXM6CiAgICAgICAgICAgICBfLCBy
ZWd1bGFyX291dHB1dCwgXyA9IGxvZ2dpbmdfcnVuKAogICAgICAgICAgICAgICAgIFsnLS1kZWJ1
Zy1yd3QtbG9nZ2luZycsICctLWNoaWxkLXByb2Nlc3NlcycsICcyJywgJy1pJywgJ3Bhc3Nlcy9w
YXNzZXMnLCAncGFzc2VzJ10sCiAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwg
c2hhcmVkX3BvcnQ9RmFsc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KFsnUnVu
bmluZyAxICcgaW4gbGluZSBmb3IgbGluZSBpbiByZWd1bGFyX291dHB1dC5idWZsaXN0XSkpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KFsnUnVubmluZyAxICcgaW4gbGluZSBmb3Ig
bGluZSBpbiByZWd1bGFyX291dHB1dC5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKV0pKQogCiAgICAg
ZGVmIHRlc3RfZHJ5cnVuKHNlbGYpOgogICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVu
KFsnLS1kcnktcnVuJ10pCkBAIC0yNzIsNyArMjc1LDcgQEAgY2xhc3MgUnVuVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSwgU3RyZWFtVAogCiAgICAgICAgIGlmIHNlbGYuc2hvdWxkX3Rlc3RfcHJvY2Vz
c2VzOgogICAgICAgICAgICAgXywgcmVndWxhcl9vdXRwdXQsIF8gPSBsb2dnaW5nX3J1bihbJ2Zh
aWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwnLCAncGFzc2VzL3RleHQuaHRtbCcsICctLWNo
aWxkLXByb2Nlc3NlcycsICcyJywgJy0tZm9yY2UnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgc2hh
cmVkX3BvcnQ9RmFsc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KFsnSW50ZXJy
dXB0ZWQsIGV4aXRpbmcnIGluIGxpbmUgZm9yIGxpbmUgaW4gcmVndWxhcl9vdXRwdXQuYnVmbGlz
dF0pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueShbJ0ludGVycnVwdGVkLCBleGl0
aW5nJyBpbiBsaW5lIGZvciBsaW5lIGluIHJlZ3VsYXJfb3V0cHV0LmdldHZhbHVlKCkuc3BsaXRs
aW5lcygpXSkpCiAKICAgICBkZWYgdGVzdF9ub190ZXN0c19mb3VuZChzZWxmKToKICAgICAgICAg
ZGV0YWlscywgZXJyLCBfID0gbG9nZ2luZ19ydW4oWydyZXNvdXJjZXMnXSwgdGVzdHNfaW5jbHVk
ZWQ9VHJ1ZSkKQEAgLTQ3NiwxMiArNDc5LDU3IEBAIGNsYXNzIFJ1blRlc3QodW5pdHRlc3QuVGVz
dENhc2UsIFN0cmVhbVQKICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9z
dCkKICAgICAgICAgZmlsZV9saXN0ID0gaG9zdC5maWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMua2V5
cygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGV0YWlscy5leGl0X2NvZGUsIDEpCi0gICAg
ICAgIGV4cGVjdGVkX3Rva2VuID0gJyJ1bmV4cGVjdGVkIjp7InRleHQtaW1hZ2UtY2hlY2tzdW0u
aHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoi
SU1BR0UrVEVYVCIsImltYWdlX2RpZmZfcGVyY2VudCI6MX0sIm1pc3NpbmdfdGV4dC5odG1sIjp7
InJlcG9ydCI6Ik1JU1NJTkciLCJleHBlY3RlZCI6IlBBU1MiLCJpc19taXNzaW5nX3RleHQiOnRy
dWUsImFjdHVhbCI6Ik1JU1NJTkcifScKLSAgICAgICAganNvbl9zdHJpbmcgPSBob3N0LmZpbGVz
eXN0ZW0ucmVhZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3Vs
dHMuanNvbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKGV4cGVj
dGVkX3Rva2VuKSAhPSAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGpzb25fc3RyaW5nLmZp
bmQoJyJudW1fcmVncmVzc2lvbnMiOjEnKSAhPSAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGpzb25fc3RyaW5nLmZpbmQoJyJudW1fZmxha3kiOjAnKSAhPSAtMSkKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGpzb25fc3RyaW5nLmZpbmQoJyJudW1fbWlzc2luZyI6MScpICE9IC0xKQorICAg
ICAgICBleHBlY3RlZF9kaWN0aW9uYXJ5ID0geworICAgICAgICAgICAgJ3ZlcnNpb24nOiA0LAor
ICAgICAgICAgICAgJ2ZpeGFibGUnOiAzLAorICAgICAgICAgICAgJ3NraXBwZWQnOiAwLAorICAg
ICAgICAgICAgJ251bV9wYXNzZXMnOiAwLAorICAgICAgICAgICAgJ251bV9mbGFreSc6IDAsCisg
ICAgICAgICAgICAnbnVtX21pc3NpbmcnOiAxLAorICAgICAgICAgICAgJ251bV9yZWdyZXNzaW9u
cyc6IDEsCisgICAgICAgICAgICAndXNlc19leHBlY3RhdGlvbnNfZmlsZSc6IFRydWUsCisgICAg
ICAgICAgICAnaW50ZXJydXB0ZWQnOiBGYWxzZSwKKyAgICAgICAgICAgICdsYXlvdXRfdGVzdHNf
ZGlyJzogJy90ZXN0LmNoZWNrb3V0L0xheW91dFRlc3RzJywKKyAgICAgICAgICAgICdoYXNfcHJl
dHR5X3BhdGNoJzogRmFsc2UsCisgICAgICAgICAgICAncGl4ZWxfdGVzdHNfZW5hYmxlZCc6IFRy
dWUsCisgICAgICAgICAgICAnb3RoZXJfY3Jhc2hlcyc6IHt9LAorICAgICAgICAgICAgJ2RhdGUn
OiAnMTA6MTBBTSBvbiBEZWNlbWJlciAxMywgMjAxOScsCisgICAgICAgICAgICAndGVzdHMnOiB7
CisgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzJzogeworICAgICAgICAgICAgICAgICAgICAnZXhw
ZWN0ZWQnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZ19pbWFnZS5odG1sJzog
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHBlY3RlZCc6ICdQQVNTIE1JU1NJTkcn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3R1YWwnOiAnTUlTU0lORycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX21pc3NpbmdfaW1hZ2UnOiBUcnVlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgfSwgJ3VuZXhwZWN0ZWQn
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZ190ZXh0Lmh0bWwnOiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcG9ydCc6ICdNSVNTSU5HJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnZXhwZWN0ZWQnOiAnUEFTUycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2FjdHVhbCc6ICdNSVNTSU5HJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnaXNfbWlzc2luZ190ZXh0JzogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sICd0
ZXh0LWltYWdlLWNoZWNrc3VtLmh0bWwnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3JlcG9ydCc6ICdSRUdSRVNTSU9OJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhw
ZWN0ZWQnOiAnUEFTUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdHVhbCc6ICdJ
TUFHRStURVhUJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1hZ2VfZGlmZl9wZXJj
ZW50JzogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0KKyAgICAg
ICAgYWN0dWFsX2RpY3Rpb25hcnkgPSBqc29uLmxvYWRzKGhvc3QuZmlsZXN5c3RlbS5yZWFkX3Rl
eHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJylbbGVu
KCdBRERfUkVTVUxUUygnKTotMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBzb3J0ZWQobGlzdChleHBlY3RlZF9kaWN0aW9uYXJ5Wyd0ZXN0cyddWydmYWlsdXJlcydd
WydleHBlY3RlZCddKSksCisgICAgICAgICAgICBzb3J0ZWQobGlzdChhY3R1YWxfZGljdGlvbmFy
eVsndGVzdHMnXVsnZmFpbHVyZXMnXVsnZXhwZWN0ZWQnXSkpLAorICAgICAgICApCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzb3J0ZWQobGlzdChleHBlY3RlZF9kaWN0
aW9uYXJ5Wyd0ZXN0cyddWydmYWlsdXJlcyddWyd1bmV4cGVjdGVkJ10pKSwKKyAgICAgICAgICAg
IHNvcnRlZChsaXN0KGFjdHVhbF9kaWN0aW9uYXJ5Wyd0ZXN0cyddWydmYWlsdXJlcyddWyd1bmV4
cGVjdGVkJ10pKSwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVk
X2RpY3Rpb25hcnlbJ251bV9yZWdyZXNzaW9ucyddLCBhY3R1YWxfZGljdGlvbmFyeVsnbnVtX3Jl
Z3Jlc3Npb25zJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfZGljdGlvbmFy
eVsnbnVtX2ZsYWt5J10sIGFjdHVhbF9kaWN0aW9uYXJ5WydudW1fZmxha3knXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9kaWN0aW9uYXJ5WydudW1fbWlzc2luZyddLCBhY3R1
YWxfZGljdGlvbmFyeVsnbnVtX21pc3NpbmcnXSkKIAogICAgIGRlZiB0ZXN0X3BpeGVsX3Rlc3Rf
ZGlyZWN0b3JpZXMoc2VsZik6CiAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCkBAIC01MTcsNyAr
NTY1LDM5IEBAIGNsYXNzIFJ1blRlc3QodW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVQKICAgICBk
ZWYgdGVzdF9jcmFzaF93aXRoX3N0ZGVycihzZWxmKToKICAgICAgICAgaG9zdCA9IE1vY2tIb3N0
KCkKICAgICAgICAgXywgcmVndWxhcl9vdXRwdXQsIF8gPSBsb2dnaW5nX3J1bihbJ2ZhaWx1cmVz
L3VuZXhwZWN0ZWQvY3Jhc2gtd2l0aC1zdGRlcnIuaHRtbCddLCB0ZXN0c19pbmNsdWRlZD1UcnVl
LCBob3N0PWhvc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShob3N0LmZpbGVzeXN0ZW0ucmVh
ZF90ZXh0X2ZpbGUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicp
LmZpbmQoJ3siY3Jhc2gtd2l0aC1zdGRlcnIuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwi
ZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiQ1JBU0giLCJoYXNfc3RkZXJyIjp0cnVlfX0nKSAh
PSAtMSkKKyAgICAgICAgYWN0dWFsX2RpY3Rpb25hcnkgPSBqc29uLmxvYWRzKGhvc3QuZmlsZXN5
c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0
cy5qc29uJylbbGVuKCdBRERfUkVTVUxUUygnKTotMl0pCisgICAgICAgIGV4cGVjdGVkX2RpY3Rp
b25hcnkgPSB7CisgICAgICAgICAgICAndmVyc2lvbic6IDQsCisgICAgICAgICAgICAnZml4YWJs
ZSc6IDEsCisgICAgICAgICAgICAnc2tpcHBlZCc6IDAsCisgICAgICAgICAgICAnbnVtX3Bhc3Nl
cyc6IDAsCisgICAgICAgICAgICAnbnVtX2ZsYWt5JzogMCwKKyAgICAgICAgICAgICdudW1fbWlz
c2luZyc6IDAsCisgICAgICAgICAgICAnbnVtX3JlZ3Jlc3Npb25zJzogMSwKKyAgICAgICAgICAg
ICd1c2VzX2V4cGVjdGF0aW9uc19maWxlJzogVHJ1ZSwKKyAgICAgICAgICAgICdpbnRlcnJ1cHRl
ZCc6IEZhbHNlLAorICAgICAgICAgICAgJ2xheW91dF90ZXN0c19kaXInOiAnL3Rlc3QuY2hlY2tv
dXQvTGF5b3V0VGVzdHMnLAorICAgICAgICAgICAgJ2hhc19wcmV0dHlfcGF0Y2gnOiBGYWxzZSwK
KyAgICAgICAgICAgICdwaXhlbF90ZXN0c19lbmFibGVkJzogVHJ1ZSwKKyAgICAgICAgICAgICdv
dGhlcl9jcmFzaGVzJzoge30sCisgICAgICAgICAgICAnZGF0ZSc6ICcxMDoxOEFNIG9uIERlY2Vt
YmVyIDEzLCAyMDE5JywKKyAgICAgICAgICAgICd0ZXN0cyc6IHsKKyAgICAgICAgICAgICAgICAn
ZmFpbHVyZXMnOiB7CisgICAgICAgICAgICAgICAgICAgICd1bmV4cGVjdGVkJzogeworICAgICAg
ICAgICAgICAgICAgICAgICAgJ2NyYXNoLXdpdGgtc3RkZXJyLmh0bWwnOiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2hhc19zdGRlcnInOiBUcnVlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdyZXBvcnQnOiAnUkVHUkVTU0lPTicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2V4cGVjdGVkJzogJ1BBU1MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdh
Y3R1YWwnOiAnQ1JBU0gnLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAg
fQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc29ydGVkKGxpc3QoZXhw
ZWN0ZWRfZGljdGlvbmFyeVsndGVzdHMnXVsnZmFpbHVyZXMnXVsndW5leHBlY3RlZCddKSksCisg
ICAgICAgICAgICBzb3J0ZWQobGlzdChhY3R1YWxfZGljdGlvbmFyeVsndGVzdHMnXVsnZmFpbHVy
ZXMnXVsndW5leHBlY3RlZCddKSksCisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X25vX2ltYWdl
X2ZhaWx1cmVfd2l0aF9pbWFnZV9kaWZmKHNlbGYpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3Qo
KQpAQCAtNzQwLDExICs4MjAsNjYgQEAgY2xhc3MgUnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwg
U3RyZWFtVAogICAgIGRlZiB0ZXN0X3JlZnRlc3Rfc2hvdWxkX25vdF91c2VfbmFtaW5nX2NvbnZl
bnRpb25faWZfbm90X2xpc3RlZF9pbl9yZWZ0ZXN0bGlzdChzZWxmKToKICAgICAgICAgaG9zdCA9
IE1vY2tIb3N0KCkKICAgICAgICAgXywgZXJyLCBfID0gbG9nZ2luZ19ydW4oWyctLW5vLXNob3ct
cmVzdWx0cycsICdyZWZ0ZXN0cy9mb28vJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGhvc3Q9aG9z
dCkKLSAgICAgICAganNvbl9zdHJpbmcgPSBob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUo
Jy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicpCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKCcidW5saXN0ZWR0ZXN0Lmh0bWwiOnsicmVw
b3J0IjoiTUlTU0lORyIsImV4cGVjdGVkIjoiUEFTUyIsImlzX21pc3NpbmdfdGV4dCI6dHJ1ZSwi
YWN0dWFsIjoiTUlTU0lORyIsImlzX21pc3NpbmdfaW1hZ2UiOnRydWV9JykgIT0gLTEpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKCcibnVtX3JlZ3Jlc3Npb25zIjo0
JykgIT0gLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5maW5kKCcibnVt
X2ZsYWt5IjowJykgIT0gLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uX3N0cmluZy5m
aW5kKCcibnVtX21pc3NpbmciOjEnKSAhPSAtMSkKKyAgICAgICAgZXhwZWN0ZWRfZGljdGlvbmFy
eSA9IHsKKyAgICAgICAgICAgICd2ZXJzaW9uJzogNCwKKyAgICAgICAgICAgICdmaXhhYmxlJzog
NSwKKyAgICAgICAgICAgICdza2lwcGVkJzogMCwKKyAgICAgICAgICAgICdudW1fcGFzc2VzJzog
MywKKyAgICAgICAgICAgICdudW1fZmxha3knOiAwLAorICAgICAgICAgICAgJ251bV9taXNzaW5n
JzogMSwKKyAgICAgICAgICAgICdudW1fcmVncmVzc2lvbnMnOiA0LAorICAgICAgICAgICAgJ3Vz
ZXNfZXhwZWN0YXRpb25zX2ZpbGUnOiBUcnVlLAorICAgICAgICAgICAgJ2ludGVycnVwdGVkJzog
RmFsc2UsCisgICAgICAgICAgICAnbGF5b3V0X3Rlc3RzX2Rpcic6ICcvdGVzdC5jaGVja291dC9M
YXlvdXRUZXN0cycsCisgICAgICAgICAgICAnaGFzX3ByZXR0eV9wYXRjaCc6IEZhbHNlLAorICAg
ICAgICAgICAgJ3BpeGVsX3Rlc3RzX2VuYWJsZWQnOiBUcnVlLAorICAgICAgICAgICAgJ290aGVy
X2NyYXNoZXMnOiB7fSwKKyAgICAgICAgICAgICdkYXRlJzogJzEwOjI3QU0gb24gRGVjZW1iZXIg
MTMsIDIwMTknLAorICAgICAgICAgICAgJ3Rlc3RzJzogeworICAgICAgICAgICAgICAgICdyZWZ0
ZXN0cyc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ2Zvbyc6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdtdWx0aXBsZS1ib3RoLWZhaWx1cmUuaHRtbCc6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAncmVmdGVzdF90eXBlJzogWychPScsICc9PSddLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdyZXBvcnQnOiAnUkVHUkVTU0lPTicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2V4cGVjdGVkJzogJ1BBU1MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdhY3R1YWwnOiAnSU1BR0UnLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwgJ211bHRpcGxl
LW1hdGNoLWZhaWx1cmUuaHRtbCc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVm
dGVzdF90eXBlJzogWyc9PSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBvcnQn
OiAnUkVHUkVTU0lPTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGVjdGVkJzog
J1BBU1MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3R1YWwnOiAnSU1BR0UnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbWFnZV9kaWZmX3BlcmNlbnQnOiAxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgfSwgJ211bHRpcGxlLW1pc21hdGNoLWZhaWx1cmUuaHRtbCc6
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVmdGVzdF90eXBlJzogWychPSddLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBvcnQnOiAnUkVHUkVTU0lPTicsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGVjdGVkJzogJ1BBU1MnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdhY3R1YWwnOiAnSU1BR0UnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgfSwgJ3Rlc3QuaHRtbCc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVmdGVz
dF90eXBlJzogWyc9PSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBvcnQnOiAn
UkVHUkVTU0lPTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGVjdGVkJzogJ1BB
U1MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3R1YWwnOiAnSU1BR0UnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdpbWFnZV9kaWZmX3BlcmNlbnQnOiBOb25lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgfSwgJ3VubGlzdGVkdGVzdC5odG1sJzogeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdyZXBvcnQnOiAnTUlTU0lORycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2V4cGVjdGVkJzogJ1BBU1MnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdhY3R1YWwnOiAnTUlTU0lORycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lz
X21pc3NpbmdfdGV4dCc6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX21p
c3NpbmdfaW1hZ2UnOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAg
ICAgfQorICAgICAgICBhY3R1YWxfZGljdGlvbmFyeSA9IGpzb24ubG9hZHMoaG9zdC5maWxlc3lz
dGVtLnJlYWRfdGV4dF9maWxlKCcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRz
Lmpzb24nKVtsZW4oJ0FERF9SRVNVTFRTKCcpOi0yXSkKKworICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgZXhwZWN0ZWRfZGljdGlvbmFyeVsndGVzdHMnXVsncmVmdGVzdHMn
XVsnZm9vJ11bJ3VubGlzdGVkdGVzdC5odG1sJ10sCisgICAgICAgICAgICBhY3R1YWxfZGljdGlv
bmFyeVsndGVzdHMnXVsncmVmdGVzdHMnXVsnZm9vJ11bJ3VubGlzdGVkdGVzdC5odG1sJ10sCisg
ICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9kaWN0aW9uYXJ5Wydu
dW1fcmVncmVzc2lvbnMnXSwgYWN0dWFsX2RpY3Rpb25hcnlbJ251bV9yZWdyZXNzaW9ucyddKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2RpY3Rpb25hcnlbJ251bV9mbGFreSdd
LCBhY3R1YWxfZGljdGlvbmFyeVsnbnVtX2ZsYWt5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWRfZGljdGlvbmFyeVsnbnVtX21pc3NpbmcnXSwgYWN0dWFsX2RpY3Rpb25hcnlb
J251bV9taXNzaW5nJ10pCiAKICAgICBkZWYgdGVzdF9hZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVj
dG9yeShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1hZGRp
dGlvbmFsLXBsYXRmb3JtLWRpcmVjdG9yeScsICcvdG1wL2ZvbyddKSkKQEAgLTk0OCwxMiArMTA4
MywxOCBAQCBjbGFzcyBFbmRUb0VuZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBz
ZWxmLmFzc2VydFRydWUoIm11bHRpcGxlLW1hdGNoLXN1Y2Nlc3MuaHRtbCIgbm90IGluIGpzb25b
InRlc3RzIl1bInJlZnRlc3RzIl1bImZvbyJdKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoIm11
bHRpcGxlLW1pc21hdGNoLXN1Y2Nlc3MuaHRtbCIgbm90IGluIGpzb25bInRlc3RzIl1bInJlZnRl
c3RzIl1bImZvbyJdKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoIm11bHRpcGxlLWJvdGgtc3Vj
Y2Vzcy5odG1sIiBub3QgaW4ganNvblsidGVzdHMiXVsicmVmdGVzdHMiXVsiZm9vIl0pCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoanNvblsidGVzdHMiXVsicmVmdGVzdHMiXVsiZm9vIl1bIm11
bHRpcGxlLW1hdGNoLWZhaWx1cmUuaHRtbCJdLAotICAgICAgICAgICAgeyJleHBlY3RlZCI6ICJQ
QVNTIiwgImFjdHVhbCI6ICJJTUFHRSIsICJyZWZ0ZXN0X3R5cGUiOiBbIj09Il0sICJpbWFnZV9k
aWZmX3BlcmNlbnQiOiAxLCAicmVwb3J0IjogIlJFR1JFU1NJT04ifSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChqc29uWyJ0ZXN0cyJdWyJyZWZ0ZXN0cyJdWyJmb28iXVsibXVsdGlwbGUtbWlz
bWF0Y2gtZmFpbHVyZS5odG1sIl0sCi0gICAgICAgICAgICB7ImV4cGVjdGVkIjogIlBBU1MiLCAi
YWN0dWFsIjogIklNQUdFIiwgInJlZnRlc3RfdHlwZSI6IFsiIT0iXSwgInJlcG9ydCI6ICJSRUdS
RVNTSU9OIn0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoanNvblsidGVzdHMiXVsicmVmdGVz
dHMiXVsiZm9vIl1bIm11bHRpcGxlLWJvdGgtZmFpbHVyZS5odG1sIl0sCi0gICAgICAgICAgICB7
ImV4cGVjdGVkIjogIlBBU1MiLCAiYWN0dWFsIjogIklNQUdFIiwgInJlZnRlc3RfdHlwZSI6IFsi
PT0iLCAiIT0iXSwgInJlcG9ydCI6ICJSRUdSRVNTSU9OIn0pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBqc29uWyJ0ZXN0cyJdWyJyZWZ0ZXN0cyJdWyJmb28iXVsibXVs
dGlwbGUtbWF0Y2gtZmFpbHVyZS5odG1sIl0sCisgICAgICAgICAgICB7ImV4cGVjdGVkIjogIlBB
U1MiLCAiYWN0dWFsIjogIklNQUdFIiwgInJlZnRlc3RfdHlwZSI6IFsiPT0iXSwgImltYWdlX2Rp
ZmZfcGVyY2VudCI6IDEsICJyZXBvcnQiOiAiUkVHUkVTU0lPTiJ9LAorICAgICAgICApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBqc29uWyJ0ZXN0cyJdWyJyZWZ0ZXN0
cyJdWyJmb28iXVsibXVsdGlwbGUtbWlzbWF0Y2gtZmFpbHVyZS5odG1sIl0sCisgICAgICAgICAg
ICB7ImV4cGVjdGVkIjogIlBBU1MiLCAiYWN0dWFsIjogIklNQUdFIiwgInJlZnRlc3RfdHlwZSI6
IFsiIT0iXSwgInJlcG9ydCI6ICJSRUdSRVNTSU9OIn0sCisgICAgICAgICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGpzb25bInRlc3RzIl1bInJlZnRlc3RzIl1bImZv
byJdWyJtdWx0aXBsZS1ib3RoLWZhaWx1cmUuaHRtbCJdLAorICAgICAgICAgICAgeyJleHBlY3Rl
ZCI6ICJQQVNTIiwgImFjdHVhbCI6ICJJTUFHRSIsICJyZWZ0ZXN0X3R5cGUiOiBzb3J0ZWQoWyI9
PSIsICIhPSJdKSwgInJlcG9ydCI6ICJSRUdSRVNTSU9OIn0sCisgICAgICAgICkKIAogCiBjbGFz
cyBSZWJhc2VsaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgU3RyZWFtVGVzdGluZ01peGluKToK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xh
eW91dF90ZXN0X2ZpbmRlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9maW5kZXIucHkJKHJldmlzaW9u
IDI1NDIzMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL2xheW91dF90ZXN0X2ZpbmRlci5weQkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3
IEBAIGNsYXNzIExheW91dFRlc3RGaW5kZXIob2JqZWN0KToKICAgICAgICAgICAgIGV4Y2VwdCBJ
T0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6
CiAgICAgICAgICAgICAgICAgICAgIF9sb2cuY3JpdGljYWwoJycpCi0gICAgICAgICAgICAgICAg
ICAgIF9sb2cuY3JpdGljYWwoJy0tdGVzdC1saXN0IGZpbGUgIiVzIiBub3QgZm91bmQnICUgZmls
ZSkKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5jcml0aWNhbCgnLS10ZXN0LWxpc3QgZmlsZSAi
e30iIG5vdCBmb3VuZCcuZm9ybWF0KGZpbGVuYW1lcykpCiAgICAgICAgICAgICAgICAgcmFpc2UK
ICAgICAgICAgcmV0dXJuIHRlc3RzCiAKQEAgLTE3Niw3ICsxNzYsNyBAQCBjbGFzcyBMYXlvdXRU
ZXN0RmluZGVyKG9iamVjdCk6CiAgICAgICAgICAgICBpZiByb3VuZGVkX3Rlc3RzICUgdGVzdF9z
aXplICE9IDA6CiAgICAgICAgICAgICAgICAgcm91bmRlZF90ZXN0cyA9IChudW1fdGVzdHMgKyB0
ZXN0X3NpemUgLSAobnVtX3Rlc3RzICUgdGVzdF9zaXplKSkKIAotICAgICAgICAgICAgY2h1bmtf
bGVuID0gcm91bmRlZF90ZXN0cyAvIHRlc3Rfc2l6ZQorICAgICAgICAgICAgY2h1bmtfbGVuID0g
cm91bmRlZF90ZXN0cyAvLyB0ZXN0X3NpemUKICAgICAgICAgICAgIHNsaWNlX3N0YXJ0ID0gY2h1
bmtfbGVuICogKGNodW5rX251bSAtIDEpCiAgICAgICAgICAgICAjIEl0IGRvZXMgbm90IG1pbmQg
aWYgd2UgZ28gb3ZlciB0ZXN0X3NpemUuCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQkocmV2
aXNpb24gMjU0MjMzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWFuYWdlci5weQkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDkgKzE0NSw5IEBAIGNs
YXNzIE1hbmFnZXIob2JqZWN0KToKIAogICAgIGRlZiBfZ2V0X3Rlc3RfaW5wdXRzKHNlbGYsIHRl
c3RzX3RvX3J1biwgcmVwZWF0X2VhY2gsIGl0ZXJhdGlvbnMsIGRldmljZV90eXBlPU5vbmUpOgog
ICAgICAgICB0ZXN0X2lucHV0cyA9IFtdCi0gICAgICAgIGZvciBfIGluIHhyYW5nZShpdGVyYXRp
b25zKToKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoaXRlcmF0aW9ucyk6CiAgICAgICAgICAgICBm
b3IgdGVzdCBpbiB0ZXN0c190b19ydW46Ci0gICAgICAgICAgICAgICAgZm9yIF8gaW4geHJhbmdl
KHJlcGVhdF9lYWNoKToKKyAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShyZXBlYXRfZWFj
aCk6CiAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5wdXRzLmFwcGVuZChzZWxmLl90ZXN0X2lu
cHV0X2Zvcl9maWxlKHRlc3QsIGRldmljZV90eXBlPWRldmljZV90eXBlKSkKICAgICAgICAgcmV0
dXJuIHRlc3RfaW5wdXRzCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9y
dW5uZXIucHkJKHJldmlzaW9uIDI1NDIzMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiBpbXBvcnQgdGlt
ZQogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IGRl
Y29kZV9mb3IKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9ydCB0
ZXN0X3Jlc3VsdF93cml0ZXIKIGZyb20gd2Via2l0cHkucG9ydC5kcml2ZXIgaW1wb3J0IERyaXZl
cklucHV0LCBEcml2ZXJPdXRwdXQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBp
bXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKQEAgLTIxNCw3ICsyMTUsNyBAQCBjbGFzcyBTaW5nbGVU
ZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgIGVsaWYgZHJpdmVyX291dHB1dC5lcnJvcjoKICAg
ICAgICAgICAgIF9sb2cuZGVidWcoIiVzICVzIG91dHB1dCBzdGRlcnIgbGluZXM6IiAlIChzZWxm
Ll93b3JrZXJfbmFtZSwgdGVzdG5hbWUpKQogICAgICAgICBmb3IgbGluZSBpbiBkcml2ZXJfb3V0
cHV0LmVycm9yLnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIF9sb2cuZGVidWcoIiAgJXMiICUg
bGluZSkKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIiAge30iLmZvcm1hdChkZWNvZGVfZm9yKGxp
bmUsIHN0cikpKQogICAgICAgICByZXR1cm4gZmFpbHVyZXMKIAogICAgIGRlZiBfY29tcGFyZV9v
dXRwdXQoc2VsZiwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dCwgZHJpdmVyX291dHB1dCk6CkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29u
X2xheW91dF9yZXN1bHRzX2dlbmVyYXRvci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX2xheW91dF9yZXN1bHRz
X2dlbmVyYXRvci5weQkocmV2aXNpb24gMjU0MjMzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0
b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAgaW1wb3J0IGxvZ2dpbmcKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBqc29uX3Jlc3Vs
dHNfZ2VuZXJhdG9yCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRl
c3RfZXhwZWN0YXRpb25zCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0
IHRlc3RfZmFpbHVyZXMKK2Zyb20gd2Via2l0cHkuY29tbW9uLml0ZXJhdGlvbl9jb21wYXRpYmls
aXR5IGltcG9ydCBpdGVydmFsdWVzCiAKIAogY2xhc3MgSlNPTkxheW91dFJlc3VsdHNHZW5lcmF0
b3IoanNvbl9yZXN1bHRzX2dlbmVyYXRvci5KU09OUmVzdWx0c0dlbmVyYXRvcik6CkBAIC0xMzIs
NyArMTMzLDcgQEAgY2xhc3MgSlNPTkxheW91dFJlc3VsdHNHZW5lcmF0b3IoanNvbl9yZQogICAg
ICAgICAgICAgc2VsZi5GSVhBQkxFKQogCiAgICAgICAgIG51bV9maXhhYmxlID0gMAotICAgICAg
ICBmb3IgZXhwZWN0YXRpb24gaW4gc2VsZi5fZXhwZWN0YXRpb25zLml0ZXJ2YWx1ZXMoKToKKyAg
ICAgICAgZm9yIGV4cGVjdGF0aW9uIGluIGl0ZXJ2YWx1ZXMoc2VsZi5fZXhwZWN0YXRpb25zKToK
ICAgICAgICAgICAgIG51bV9maXhhYmxlICs9IGxlbihleHBlY3RhdGlvbi5tb2RlbCgpLmdldF90
ZXN0c193aXRoX3RpbWVsaW5lKHRlc3RfZXhwZWN0YXRpb25zLk5PVykpCiAKICAgICAgICAgc2Vs
Zi5faW5zZXJ0X2l0ZW1faW50b19yYXdfbGlzdChyZXN1bHRzX2Zvcl9idWlsZGVyLCBudW1fZml4
YWJsZSwgc2VsZi5BTExfRklYQUJMRV9DT1VOVCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3Jlc3VsdHMucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcmVzdWx0cy5weQko
cmV2aXNpb24gMjU0MjMzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3RfcmVzdWx0cy5weQkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBj
bGFzcyBUZXN0UmVzdWx0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuZmFpbHVyZXMgPSBmYWlsdXJl
cyBvciBbXQogICAgICAgICBzZWxmLnRlc3RfcnVuX3RpbWUgPSB0ZXN0X3J1bl90aW1lIG9yIDAg
ICMgVGhlIHRpbWUgdGFrZW4gdG8gZXhlY3V0ZSB0aGUgdGVzdCBpdHNlbGYuCiAgICAgICAgIHNl
bGYuaGFzX3N0ZGVyciA9IGhhc19zdGRlcnIKLSAgICAgICAgc2VsZi5yZWZ0ZXN0X3R5cGUgPSBy
ZWZ0ZXN0X3R5cGUgb3IgW10KKyAgICAgICAgc2VsZi5yZWZ0ZXN0X3R5cGUgPSBzb3J0ZWQocmVm
dGVzdF90eXBlIG9yIFtdKQogICAgICAgICBzZWxmLnBpZCA9IHBpZAogICAgICAgICBzZWxmLnJl
ZmVyZW5jZXMgPSByZWZlcmVuY2VzIG9yIFtdCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtLnB5
CShyZXZpc2lvbiAyNTQyMzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy92aWV3cy9tZXRlcmVkX3N0cmVhbS5weQkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3
IEBAIGNsYXNzIE1ldGVyZWRTdHJlYW0ob2JqZWN0KToKIAogICAgICAgICB0cnk6CiAgICAgICAg
ICAgICBzZWxmLl9zdHJlYW0ud3JpdGUodGltZXN0YW1wX3N0cmluZyArIHR4dCkKKyAgICAgICAg
ICAgIHNlbGYuX3N0cmVhbS5mbHVzaCgpCiAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJy
b3I6CiAgICAgICAgICAgICBvdXRwdXQgPSAnJwogICAgICAgICAgICAgZm9yIGMgaW4gdGltZXN0
YW1wX3N0cmluZyArIHR4dDoKQEAgLTExNyw2ICsxMTgsNyBAQCBjbGFzcyBNZXRlcmVkU3RyZWFt
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAg
ICAgICAgICAgICAgICAgICAgb3V0cHV0ICs9ICc/JwogICAgICAgICAgICAgc2VsZi5fc3RyZWFt
LndyaXRlKG91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5mbHVzaCgpCiAKICAgICBk
ZWYgd3JpdGVsbihzZWxmLCB0eHQsIG5vdz1Ob25lLCBwaWQ9Tm9uZSk6CiAgICAgICAgIHNlbGYu
d3JpdGUoc2VsZi5fZW5zdXJlX25ld2xpbmUodHh0KSwgbm93LCBwaWQpCkBAIC0xMjUsNiArMTI3
LDcgQEAgY2xhc3MgTWV0ZXJlZFN0cmVhbShvYmplY3QpOgogICAgICAgICBudW1fY2hhcnMgPSBs
ZW4oc2VsZi5fbGFzdF9wYXJ0aWFsX2xpbmUpCiAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZShz
ZWxmLl9lcmFzdXJlKHNlbGYuX2xhc3RfcGFydGlhbF9saW5lKSkKICAgICAgICAgc2VsZi5fbGFz
dF9wYXJ0aWFsX2xpbmUgPSAnJworICAgICAgICBzZWxmLl9zdHJlYW0uZmx1c2goKQogCiAgICAg
ZGVmIGZsdXNoKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9sYXN0X3BhcnRpYWxfbGluZToKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdz
L3ByaW50aW5nLnB5CShyZXZpc2lvbiAyNTQyMzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy92aWV3cy9wcmludGluZy5weQkod29ya2luZyBjb3B5KQpAQCAtMjM5LDcg
KzIzOSw3IEBAIGNsYXNzIFByaW50ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fcHJpbnRfZGVi
dWcoIlRpbWUgdG8gcHJvY2VzcyBzbG93ZXN0IHN1YmRpcmVjdG9yaWVzOiIpCiAgICAgICAgIG1p
bl9zZWNvbmRzX3RvX3ByaW50ID0gMTAKICAgICAgICAgZm9yIHRpbWluZyBpbiB0aW1pbmdzOgot
ICAgICAgICAgICAgaWYgdGltaW5nWzBdID4gbWluX3NlY29uZHNfdG9fcHJpbnQ6CisgICAgICAg
ICAgICBpZiB0aW1pbmdbMV0gPiBtaW5fc2Vjb25kc190b19wcmludDoKICAgICAgICAgICAgICAg
ICBzZWxmLl9wcmludF9kZWJ1ZygiICAlcyB0b29rICVzIHNlY29uZHMgdG8gcnVuICVzIHRlc3Rz
LiIgJSB0aW1pbmcpCiAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCIiKQogCkBAIC0yNTQsMTAg
KzI1NCwxMCBAQCBjbGFzcyBQcmludGVyKG9iamVjdCk6CiAgICAgICAgIHBlcmNlbnRpbGU5OSA9
IHRpbWluZ3NbaW50KC45OSAqIG51bV90ZXN0cyldCiAKICAgICAgICAgaWYgbnVtX3Rlc3RzICUg
MiA9PSAxOgotICAgICAgICAgICAgbWVkaWFuID0gdGltaW5nc1soKG51bV90ZXN0cyAtIDEpIC8g
MikgLSAxXQorICAgICAgICAgICAgbWVkaWFuID0gdGltaW5nc1sobnVtX3Rlc3RzIC0gMSkgLy8g
MiAtIDFdCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb3dlciA9IHRpbWluZ3NbbnVtX3Rl
c3RzIC8gMiAtIDFdCi0gICAgICAgICAgICB1cHBlciA9IHRpbWluZ3NbbnVtX3Rlc3RzIC8gMl0K
KyAgICAgICAgICAgIGxvd2VyID0gdGltaW5nc1tudW1fdGVzdHMgLy8gMiAtIDFdCisgICAgICAg
ICAgICB1cHBlciA9IHRpbWluZ3NbbnVtX3Rlc3RzIC8vIDJdCiAgICAgICAgICAgICBtZWRpYW4g
PSAoZmxvYXQobG93ZXIgKyB1cHBlcikpIC8gMgogCiAgICAgICAgIG1lYW4gPSBzdW0odGltaW5n
cykgLyBudW1fdGVzdHMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW4u
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weQko
cmV2aXNpb24gMjU0MjMzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5w
eQkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBEYXJ3aW5Qb3J0KEFwcGxl
UG9ydCk6CiAgICAgICAgIHJldHVybiBzZWxmLmhvc3QuZmlsZXN5c3RlbS5qb2luKGxvZ19kaXJl
Y3RvcnksICdDcmFzaFJlcG9ydGVyJykKIAogICAgIGRlZiBfbWVyZ2VfY3Jhc2hfbG9ncyhzZWxm
LCBsb2dzLCBuZXdfbG9ncywgY3Jhc2hlZF9wcm9jZXNzZXMpOgotICAgICAgICBmb3IgdGVzdCwg
Y3Jhc2hfbG9nIGluIG5ld19sb2dzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3IgdGVzdCwgY3Jh
c2hfbG9nIGluIG5ld19sb2dzLml0ZW1zKCk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAg
ICAgICAgaWYgdGVzdC5zcGxpdCgnLScpWzBdID09ICdTYW5kYm94JzoKICAgICAgICAgICAgICAg
ICAgICAgcHJvY2Vzc19uYW1lID0gdGVzdC5zcGxpdCgnLScpWzFdCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9kZXZpY2UucHkJKHJldmlzaW9uIDI1NDIzMykKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9kZXZpY2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTExNiwzICsxMTYs
NiBAQCBjbGFzcyBEZXZpY2Uob2JqZWN0KToKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAg
ICAgICAgcmV0dXJuIHUne30nLmZvcm1hdChzZWxmLnBsYXRmb3JtX2RldmljZSkKKworICAgIGRl
ZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi51ZGlkKQpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZV9wb3J0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kZXZpY2VfcG9ydC5weQkocmV2aXNpb24gMjU0
MjMzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZV9wb3J0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIGNsYXNzIERldmljZVBvcnQoRGFyd2luUG9ydCk6
CiAgICAgICAgICAgICBfbG9nLmRlYnVnKCdTa2lwcGluZyBpbnN0YWxsYXRpb24nKQogICAgICAg
ICAgICAgcmV0dXJuCiAKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hpbGRfcHJvY2Vz
c2VzKCkpOgorICAgICAgICBmb3IgaSBpbiByYW5nZShzZWxmLmNoaWxkX3Byb2Nlc3NlcygpKToK
ICAgICAgICAgICAgIGRldmljZSA9IHNlbGYudGFyZ2V0X2hvc3QoaSkKICAgICAgICAgICAgIF9s
b2cuZGVidWcodSdJbnN0YWxsaW5nIHRvIHt9Jy5mb3JtYXQoZGV2aWNlKSkKICAgICAgICAgICAg
ICMgV2l0aG91dCBwYXNzaW5nIERZTERfTElCUkFSWV9QQVRILCBsaWJXZWJDb3JlVGVzdFN1cHBv
cnQgY2Fubm90IGJlIGxvYWRlZCBhbmQgRFJUL1dLVFIgd2lsbCBjcmFzaCBwcmUtbGF1bmNoLApA
QCAtMTg2LDcgKzE4Niw3IEBAIGNsYXNzIERldmljZVBvcnQoRGFyd2luUG9ydCk6CiAKICAgICAg
ICAgc2VsZi5faW5zdGFsbCgpCiAKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hpbGRf
cHJvY2Vzc2VzKCkpOgorICAgICAgICBmb3IgaSBpbiByYW5nZShzZWxmLmNoaWxkX3Byb2Nlc3Nl
cygpKToKICAgICAgICAgICAgIGhvc3QgPSBzZWxmLnRhcmdldF9ob3N0KGkpCiAgICAgICAgICAg
ICBob3N0LnByZXBhcmVfZm9yX3Rlc3RpbmcoCiAgICAgICAgICAgICAgICAgc2VsZi5wb3J0c190
b19mb3J3YXJkKCksCkBAIC0yMDEsNyArMjAxLDcgQEAgY2xhc3MgRGV2aWNlUG9ydChEYXJ3aW5Q
b3J0KToKICAgICAgICAgIyBCZXN0IGVmZm9ydCB0byBsZXQgZXZlcnkgZGV2aWNlIHRlYXJkb3du
IGJlZm9yZSB0aHJvd2luZyBhbnkgZXhjZXB0aW9ucyBoZXJlLgogICAgICAgICAjIEZhaWx1cmUg
dG8gdGVhcmRvd24gZGV2aWNlcyBjYW4gbGVhdmUgdGhpbmdzIGluIGEgYmFkIHN0YXRlLgogICAg
ICAgICBleGNlcHRpb25fbGlzdCA9IFtdCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNo
aWxkX3Byb2Nlc3NlcygpKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2VsZi5jaGlsZF9wcm9j
ZXNzZXMoKSk6CiAgICAgICAgICAgICBkZXZpY2UgPSBzZWxmLnRhcmdldF9ob3N0KGkpCiAgICAg
ICAgICAgICBpZiBub3QgZGV2aWNlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHJldmlzaW9uIDI1NDIzMykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDYgKzM5LDcgQEAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIGZyb20gb3Mu
cGF0aCBpbXBvcnQgbm9ybXBhdGgKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQg
cGF0aAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnByb2ZpbGVyIGltcG9ydCBQcm9maWxl
ckZhY3RvcnkKK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBv
cnQgZW5jb2RlX2lmX25lY2Vzc2FyeSwgZGVjb2RlX2ZvcgogCiAKIF9sb2cgPSBsb2dnaW5nLmdl
dExvZ2dlcihfX25hbWVfXykKQEAgLTg2LDExICs4NywxMSBAQCBjbGFzcyBEcml2ZXJPdXRwdXQo
b2JqZWN0KToKICAgICAgICAgICAgIHRlc3RfdGltZT0wLCBtZWFzdXJlbWVudHM9Tm9uZSwgdGlt
ZW91dD1GYWxzZSwgZXJyb3I9JycsIGNyYXNoZWRfcHJvY2Vzc19uYW1lPSc/PycsCiAgICAgICAg
ICAgICBjcmFzaGVkX3BpZD1Ob25lLCBjcmFzaF9sb2c9Tm9uZSwgcGlkPU5vbmUpOgogICAgICAg
ICAjIEZJWE1FOiBBcmdzIGNvdWxkIGJlIHJlbmFtZWQgdG8gYmV0dGVyIGNsYXJpZnkgd2hhdCB0
aGV5IGRvLgotICAgICAgICBzZWxmLnRleHQgPSB0ZXh0CisgICAgICAgIHNlbGYudGV4dCA9IGRl
Y29kZV9mb3IodGV4dCwgc3RyKSBpZiB0ZXh0IGVsc2UgTm9uZQogICAgICAgICBzZWxmLmltYWdl
ID0gaW1hZ2UgICMgTWF5IGJlIGVtcHR5LXN0cmluZyBpZiB0aGUgdGVzdCBjcmFzaGVzLgogICAg
ICAgICBzZWxmLmltYWdlX2hhc2ggPSBpbWFnZV9oYXNoCiAgICAgICAgIHNlbGYuaW1hZ2VfZGlm
ZiA9IE5vbmUgICMgaW1hZ2VfZGlmZiBnZXRzIGZpbGxlZCBpbiBhZnRlciBjb25zdHJ1Y3Rpb24u
Ci0gICAgICAgIHNlbGYuYXVkaW8gPSBhdWRpbyAgIyBCaW5hcnkgZm9ybWF0IGlzIHBvcnQtZGVw
ZW5kZW50LgorICAgICAgICBzZWxmLmF1ZGlvID0gZW5jb2RlX2lmX25lY2Vzc2FyeShhdWRpbykg
aWYgYXVkaW8gZWxzZSBOb25lICAjIEJpbmFyeSBmb3JtYXQgaXMgcG9ydC1kZXBlbmRlbnQuCiAg
ICAgICAgIHNlbGYuY3Jhc2ggPSBjcmFzaAogICAgICAgICBzZWxmLmNyYXNoZWRfcHJvY2Vzc19u
YW1lID0gY3Jhc2hlZF9wcm9jZXNzX25hbWUKICAgICAgICAgc2VsZi5jcmFzaGVkX3BpZCA9IGNy
YXNoZWRfcGlkCkBAIC0xNjEsNyArMTYyLDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAg
ICAgICMgc3RkZXJyIG91dHB1dCwgYXMgd2VsbCBhcyBpZiB3ZSd2ZSBzZWVuICNFT0Ygb24gdGhp
cyBkcml2ZXIgaW5zdGFuY2UuCiAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSBy
ZW1vdmUgX3JlYWRfZmlyc3RfYmxvY2sgYW5kIF9yZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrIGFu
ZAogICAgICAgICAjIGluc3RlYWQgc2NvcGUgdGhlc2UgbG9jYWxseSBpbiBydW5fdGVzdC4KLSAg
ICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgPSBzdHIoKQorICAgICAgICBzZWxmLmVycm9yX2Zy
b21fdGVzdCA9ICcnCiAgICAgICAgIHNlbGYuZXJyX3NlZW5fZW9mID0gRmFsc2UKIAogICAgICAg
ICBzZWxmLl9zZXJ2ZXJfbmFtZSA9IHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKQpAQCAtMTk2LDcg
KzE5Nyw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICB0ZXN0X2JlZ2luX3RpbWUg
PSB0aW1lLnRpbWUoKQogICAgICAgICBzZWxmLl9kcml2ZXJfdGltZWRfb3V0ID0gRmFsc2UKICAg
ICAgICAgc2VsZi5fY3Jhc2hfcmVwb3J0X2Zyb21fZHJpdmVyID0gTm9uZQotICAgICAgICBzZWxm
LmVycm9yX2Zyb21fdGVzdCA9IHN0cigpCisgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ID0g
JycKICAgICAgICAgc2VsZi5lcnJfc2Vlbl9lb2YgPSBGYWxzZQogCiAgICAgICAgIGNvbW1hbmQg
PSBzZWxmLl9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KGRyaXZlcl9pbnB1dCkKQEAgLTIxNCw2
ICsyMTUsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fc2VydmVyX3By
b2Nlc3Mud3JpdGUoY29tbWFuZCkKICAgICAgICAgdGV4dCwgYXVkaW8gPSBzZWxmLl9yZWFkX2Zp
cnN0X2Jsb2NrKGRlYWRsaW5lLCBkcml2ZXJfaW5wdXQudGVzdF9uYW1lKSAgIyBGaXJzdCBibG9j
ayBpcyBlaXRoZXIgdGV4dCBvciBhdWRpbwogICAgICAgICBpbWFnZSwgYWN0dWFsX2ltYWdlX2hh
c2ggPSBzZWxmLl9yZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrKGRlYWRsaW5lLCBkcml2ZXJfaW5w
dXQudGVzdF9uYW1lKSAgIyBUaGUgc2Vjb25kIChvcHRpb25hbCkgYmxvY2sgaXMgaW1hZ2UgZGF0
YS4KKyAgICAgICAgdGV4dCA9IGRlY29kZV9mb3IodGV4dCwgc3RyKQogCiAgICAgICAgIGNyYXNo
ZWQgPSBzZWxmLmhhc19jcmFzaGVkKCkKICAgICAgICAgdGltZWRfb3V0ID0gc2VsZi5fc2VydmVy
X3Byb2Nlc3MudGltZWRfb3V0CkBAIC0yMjcsOSArMjI5LDkgQEAgY2xhc3MgRHJpdmVyKG9iamVj
dCk6CiAgICAgICAgICAgICAjIEluIHRoZSB0aW1lb3V0IGNhc2UsIHdlIGtpbGwgdGhlIGh1bmcg
cHJvY2VzcyBhcyB3ZWxsLgogICAgICAgICAgICAgb3V0LCBlcnIgPSBzZWxmLl9zZXJ2ZXJfcHJv
Y2Vzcy5zdG9wKHNlbGYuX3BvcnQuZHJpdmVyX3N0b3BfdGltZW91dCgpIGlmIHN0b3Bfd2hlbl9k
b25lIGVsc2UgMC4wKQogICAgICAgICAgICAgaWYgb3V0OgotICAgICAgICAgICAgICAgIHRleHQg
Kz0gb3V0CisgICAgICAgICAgICAgICAgdGV4dCArPSBkZWNvZGVfZm9yKG91dCwgc3RyKQogICAg
ICAgICAgICAgaWYgZXJyOgotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9
IGVycgorICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9IGRlY29kZV9mb3Io
ZXJyLCBzdHIpCiAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IE5vbmUKIAogICAg
ICAgICBjcmFzaF9sb2cgPSBOb25lCkBAIC0yODAsMTAgKzI4MiwxMCBAQCBjbGFzcyBEcml2ZXIo
b2JqZWN0KToKICAgICAgICAgY2hpbGRfcHJvY2Vzc2VzID0gZGVmYXVsdGRpY3QobGlzdCkKIAog
ICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgbSA9
IHJlLm1hdGNoKCdeKFteOl0rKTogKFswLTldKykkJywgbGluZSkKKyAgICAgICAgICAgIG0gPSBy
ZS5tYXRjaChiJ14oW146XSspOiAoWzAtOV0rKSQnLCBsaW5lKQogICAgICAgICAgICAgaWYgbToK
LSAgICAgICAgICAgICAgICBwcm9jZXNzX25hbWUgPSBtLmdyb3VwKDEpCi0gICAgICAgICAgICAg
ICAgcHJvY2Vzc19pZCA9IG0uZ3JvdXAoMikKKyAgICAgICAgICAgICAgICBwcm9jZXNzX25hbWUg
PSBkZWNvZGVfZm9yKG0uZ3JvdXAoMSksIHN0cikKKyAgICAgICAgICAgICAgICBwcm9jZXNzX2lk
ID0gZGVjb2RlX2ZvcihtLmdyb3VwKDIpLCBzdHIpCiAgICAgICAgICAgICAgICAgY2hpbGRfcHJv
Y2Vzc2VzW3Byb2Nlc3NfbmFtZV0uYXBwZW5kKHByb2Nlc3NfaWQpCiAKICAgICAgICAgcmV0dXJu
IGNoaWxkX3Byb2Nlc3NlcwpAQCAtNTQwLDEwICs1NDIsMTAgQEAgY2xhc3MgRHJpdmVyKG9iamVj
dCk6CiAgICAgICAgIHJldHVybiBjbWQKIAogICAgIGRlZiBfY2hlY2tfZm9yX2RyaXZlcl90aW1l
b3V0KHNlbGYsIG91dF9saW5lKToKLSAgICAgICAgaWYgb3V0X2xpbmUuc3RhcnRzd2l0aCgiI1BJ
RCBVTlJFU1BPTlNJVkUgLSAiKToKLSAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2goJyNQSUQg
VU5SRVNQT05TSVZFIC0gKFxTKyknLCBvdXRfbGluZSkKLSAgICAgICAgICAgIGNoaWxkX3Byb2Nl
c3NfbmFtZSA9IG1hdGNoLmdyb3VwKDEpIGlmIG1hdGNoIGVsc2UgJ1dlYlByb2Nlc3MnCi0gICAg
ICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgncGlkIChcZCspJywgb3V0X2xpbmUpCisgICAgICAg
IGlmIG91dF9saW5lLnN0YXJ0c3dpdGgoYiIjUElEIFVOUkVTUE9OU0lWRSAtICIpOgorICAgICAg
ICAgICAgbWF0Y2ggPSByZS5tYXRjaChiJyNQSUQgVU5SRVNQT05TSVZFIC0gKFxTKyknLCBvdXRf
bGluZSkKKyAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3NfbmFtZSA9IGRlY29kZV9mb3IobWF0Y2gu
Z3JvdXAoMSksIHN0cikgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2VzcycKKyAgICAgICAgICAgIG1h
dGNoID0gcmUuc2VhcmNoKGIncGlkIChcZCspJywgb3V0X2xpbmUpCiAgICAgICAgICAgICBjaGls
ZF9wcm9jZXNzX3BpZCA9IGludChtYXRjaC5ncm91cCgxKSkgaWYgbWF0Y2ggZWxzZSBOb25lCiAg
ICAgICAgICAgICBlcnJfbGluZSA9ICdXYWl0IG9uIG5vdGlmeURvbmUgdGltZWQgb3V0LCBwcm9j
ZXNzICcgKyBjaGlsZF9wcm9jZXNzX25hbWUgKyAnIHBpZCA9ICcgKyBzdHIoY2hpbGRfcHJvY2Vz
c19waWQpCiAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBlcnJfbGluZQpAQCAt
NTU0LDMyICs1NTYsMzIgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxm
Ll9kcml2ZXJfdGltZWRfb3V0ID0gVHJ1ZQogCiAgICAgZGVmIF9jaGVja19mb3JfYWRkcmVzc19z
YW5pdGl6ZXJfdmlvbGF0aW9uKHNlbGYsIGVycm9yX2xpbmUpOgotICAgICAgICBpZiAiRVJST1I6
IEFkZHJlc3NTYW5pdGl6ZXIiIGluIGVycm9yX2xpbmU6CisgICAgICAgIGlmIGIiRVJST1I6IEFk
ZHJlc3NTYW5pdGl6ZXIiIGluIGVycm9yX2xpbmU6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQog
CiAgICAgZGVmIF9jaGVja19mb3JfZHJpdmVyX2NyYXNoX29yX3VucmVzcG9uc2l2ZW5lc3Moc2Vs
ZiwgZXJyb3JfbGluZSk6Ci0gICAgICAgIGNyYXNoZWRfY2hlY2sgPSBlcnJvcl9saW5lLnJzdHJp
cCgnXHJcbicpCi0gICAgICAgIGlmIGNyYXNoZWRfY2hlY2sgPT0gIiNDUkFTSEVEIjoKKyAgICAg
ICAgY3Jhc2hlZF9jaGVjayA9IGVycm9yX2xpbmUucnN0cmlwKGInXHJcbicpCisgICAgICAgIGlm
IGNyYXNoZWRfY2hlY2sgPT0gYiIjQ1JBU0hFRCI6CiAgICAgICAgICAgICBzZWxmLl9jcmFzaGVk
X3Byb2Nlc3NfbmFtZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnByb2Nlc3NfbmFtZSgpCiAgICAg
ICAgICAgICBzZWxmLl9jcmFzaGVkX3BpZCA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnN5c3RlbV9w
aWQoKQogICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgZWxpZiBlcnJvcl9saW5lLnN0
YXJ0c3dpdGgoIiNDUkFTSEVEIC0gIik6Ci0gICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKCcj
Q1JBU0hFRCAtIChcUyspJywgZXJyb3JfbGluZSkKLSAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRf
cHJvY2Vzc19uYW1lID0gbWF0Y2guZ3JvdXAoMSkgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2VzcycK
LSAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCdwaWQgKFxkKyknLCBlcnJvcl9saW5lKQor
ICAgICAgICBlbGlmIGVycm9yX2xpbmUuc3RhcnRzd2l0aChiIiNDUkFTSEVEIC0gIik6CisgICAg
ICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKGInI0NSQVNIRUQgLSAoXFMrKScsIGVycm9yX2xpbmUp
CisgICAgICAgICAgICBzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IGRlY29kZV9mb3IobWF0
Y2guZ3JvdXAoMSksIHN0cikgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2VzcycKKyAgICAgICAgICAg
IG1hdGNoID0gcmUuc2VhcmNoKGIncGlkIChcZCspJywgZXJyb3JfbGluZSkKICAgICAgICAgICAg
IHNlbGYuX2NyYXNoZWRfcGlkID0gaW50KG1hdGNoLmdyb3VwKDEpKSBpZiBtYXRjaCBlbHNlIE5v
bmUKICAgICAgICAgICAgIF9sb2cuZGVidWcoJyVzIGNyYXNoLCBwaWQgPSAlcycgJSAoc2VsZi5f
Y3Jhc2hlZF9wcm9jZXNzX25hbWUsIHN0cihzZWxmLl9jcmFzaGVkX3BpZCkpKQogICAgICAgICAg
ICAgcmV0dXJuIFRydWUKLSAgICAgICAgZWxpZiBlcnJvcl9saW5lLnN0YXJ0c3dpdGgoIiNQUk9D
RVNTIFVOUkVTUE9OU0lWRSAtICIpOgotICAgICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgnI1BS
T0NFU1MgVU5SRVNQT05TSVZFIC0gKFxTKyknLCBlcnJvcl9saW5lKQotICAgICAgICAgICAgY2hp
bGRfcHJvY2Vzc19uYW1lID0gbWF0Y2guZ3JvdXAoMSkgaWYgbWF0Y2ggZWxzZSAnV2ViUHJvY2Vz
cycKLSAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCdwaWQgKFxkKyknLCBlcnJvcl9saW5l
KQorICAgICAgICBlbGlmIGVycm9yX2xpbmUuc3RhcnRzd2l0aChiIiNQUk9DRVNTIFVOUkVTUE9O
U0lWRSAtICIpOgorICAgICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChiJyNQUk9DRVNTIFVOUkVT
UE9OU0lWRSAtIChcUyspJywgZXJyb3JfbGluZSkKKyAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3Nf
bmFtZSA9IGRlY29kZV9mb3IobWF0Y2guZ3JvdXAoMSksIHN0cikgaWYgbWF0Y2ggZWxzZSAnV2Vi
UHJvY2VzcycKKyAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKGIncGlkIChcZCspJywgZXJy
b3JfbGluZSkKICAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3NfcGlkID0gaW50KG1hdGNoLmdyb3Vw
KDEpKSBpZiBtYXRjaCBlbHNlIE5vbmUKICAgICAgICAgICAgIF9sb2cuZGVidWcoJyVzIGlzIHVu
cmVzcG9uc2l2ZSwgcGlkID0gJXMnICUgKGNoaWxkX3Byb2Nlc3NfbmFtZSwgc3RyKGNoaWxkX3By
b2Nlc3NfcGlkKSkpCiAgICAgICAgICAgICBzZWxmLl9kcml2ZXJfdGltZWRfb3V0ID0gVHJ1ZQog
ICAgICAgICAgICAgaWYgY2hpbGRfcHJvY2Vzc19waWQ6CiAgICAgICAgICAgICAgICAgc2VsZi5f
cG9ydC5zYW1wbGVfcHJvY2VzcyhjaGlsZF9wcm9jZXNzX25hbWUsIGNoaWxkX3Byb2Nlc3NfcGlk
LCBzZWxmLl90YXJnZXRfaG9zdCkKLSAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9
IGVycm9yX2xpbmUKKyAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9IGRlY29kZV9m
b3IoZXJyb3JfbGluZSwgc3RyKQogICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mud3Jp
dGUoJyNTQU1QTEUgRklOSVNIRURcbicsIFRydWUpICAjIE11c3QgYmUgYWJsZSB0byBpZ25vcmUg
YSBicm9rZW4gcGlwZSBoZXJlLCB0YXJnZXQgcHJvY2VzcyBtYXkgYWxyZWFkeSBiZSBjbG9zZWQu
CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gc2VsZi5oYXNfY3Jhc2hl
ZCgpCkBAIC02MjgsMTIgKzYzMCwxMiBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAg
IyByZXR1cm5zIChpbWFnZSwgYWN0dWFsX2ltYWdlX2hhc2gpCiAgICAgICAgIGJsb2NrID0gc2Vs
Zi5fcmVhZF9ibG9jayhkZWFkbGluZSwgdGVzdF9uYW1lLCB3YWl0X2Zvcl9zdGRlcnJfZW9mPVRy
dWUpCiAgICAgICAgIGlmIGJsb2NrLmNvbnRlbnQgYW5kIGJsb2NrLmNvbnRlbnRfdHlwZSA9PSAn
aW1hZ2UvcG5nJzoKLSAgICAgICAgICAgIHJldHVybiAoYmxvY2suZGVjb2RlZF9jb250ZW50LCBi
bG9jay5jb250ZW50X2hhc2gpCisgICAgICAgICAgICByZXR1cm4gKGJsb2NrLmRlY29kZWRfY29u
dGVudCBpZiBibG9jay5lbmNvZGluZyA9PSAnYmFzZTY0JyBlbHNlIGJsb2NrLmNvbnRlbnQsIGJs
b2NrLmNvbnRlbnRfaGFzaCkKICAgICAgICAgcmV0dXJuIChOb25lLCBibG9jay5jb250ZW50X2hh
c2gpCiAKICAgICBkZWYgX3JlYWRfaGVhZGVyKHNlbGYsIGJsb2NrLCBsaW5lLCBoZWFkZXJfdGV4
dCwgaGVhZGVyX2F0dHIsIGhlYWRlcl9maWx0ZXI9Tm9uZSk6CiAgICAgICAgIGlmIGxpbmUuc3Rh
cnRzd2l0aChoZWFkZXJfdGV4dCkgYW5kIGdldGF0dHIoYmxvY2ssIGhlYWRlcl9hdHRyKSBpcyBO
b25lOgotICAgICAgICAgICAgdmFsdWUgPSBsaW5lLnNwbGl0KClbMV0KKyAgICAgICAgICAgIHZh
bHVlID0gZGVjb2RlX2ZvcihsaW5lLnNwbGl0KClbMV0sIHN0cikKICAgICAgICAgICAgIGlmIGhl
YWRlcl9maWx0ZXI6CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBoZWFkZXJfZmlsdGVyKHZhbHVl
KQogICAgICAgICAgICAgc2V0YXR0cihibG9jaywgaGVhZGVyX2F0dHIsIHZhbHVlKQpAQCAtNjQx
LDE5ICs2NDMsMjMgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBGYWxz
ZQogCiAgICAgZGVmIF9wcm9jZXNzX3N0ZG91dF9saW5lKHNlbGYsIGJsb2NrLCBsaW5lKToKLSAg
ICAgICAgaWYgKHNlbGYuX3JlYWRfaGVhZGVyKGJsb2NrLCBsaW5lLCAnQ29udGVudC1UeXBlOiAn
LCAnY29udGVudF90eXBlJykKLSAgICAgICAgICAgIG9yIHNlbGYuX3JlYWRfaGVhZGVyKGJsb2Nr
LCBsaW5lLCAnQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogJywgJ2VuY29kaW5nJykKLSAgICAg
ICAgICAgIG9yIHNlbGYuX3JlYWRfaGVhZGVyKGJsb2NrLCBsaW5lLCAnQ29udGVudC1MZW5ndGg6
ICcsICdfY29udGVudF9sZW5ndGgnLCBpbnQpCi0gICAgICAgICAgICBvciBzZWxmLl9yZWFkX2hl
YWRlcihibG9jaywgbGluZSwgJ0FjdHVhbEhhc2g6ICcsICdjb250ZW50X2hhc2gnKQotICAgICAg
ICAgICAgb3Igc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdEdW1wTWFsbG9jOiAnLCAn
bWFsbG9jJykKLSAgICAgICAgICAgIG9yIHNlbGYuX3JlYWRfaGVhZGVyKGJsb2NrLCBsaW5lLCAn
RHVtcEpTSGVhcDogJywgJ2pzX2hlYXAnKSk6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAg
Zm9yIGhlYWRlciBpbiBbCisgICAgICAgICAgICAoYidDb250ZW50LVR5cGU6ICcsICdjb250ZW50
X3R5cGUnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6
ICcsICdlbmNvZGluZycsIE5vbmUpLAorICAgICAgICAgICAgKGInQ29udGVudC1MZW5ndGg6ICcs
ICdfY29udGVudF9sZW5ndGgnLCBpbnQpLAorICAgICAgICAgICAgKGInQWN0dWFsSGFzaDogJywg
J2NvbnRlbnRfaGFzaCcsIE5vbmUpLAorICAgICAgICAgICAgKGInRHVtcE1hbGxvYzogJywgJ21h
bGxvYycsIE5vbmUpLAorICAgICAgICAgICAgKGInRHVtcEpTSGVhcDogJywgJ2pzX2hlYXAnLCBO
b25lKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIGlmIHNlbGYuX3JlYWRfaGVhZGVyKGJsb2Nr
LCBsaW5lLCBoZWFkZXJbMF0sIGhlYWRlclsxXSwgaGVhZGVyWzJdKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4KKwogICAgICAgICAjIE5vdGUsIHdlJ3JlIG5vdCByZWFkaW5nIEV4cGVjdGVkSGFz
aDogaGVyZSwgYnV0IHdlIGNvdWxkLgogICAgICAgICAjIElmIHRoZSBsaW5lIHdhc24ndCBhIGhl
YWRlciwgd2UganVzdCBhcHBlbmQgaXQgdG8gdGhlIGNvbnRlbnQuCi0gICAgICAgIGJsb2NrLmNv
bnRlbnQgKz0gbGluZQorICAgICAgICBibG9jay5jb250ZW50ID0gZW5jb2RlX2lmX25lY2Vzc2Fy
eShibG9jay5jb250ZW50KSArIGxpbmUKIAogICAgIGRlZiBfc3RyaXBfZW9mKHNlbGYsIGxpbmUp
OgotICAgICAgICBpZiBsaW5lIGFuZCBsaW5lLmVuZHN3aXRoKCIjRU9GXG4iKToKKyAgICAgICAg
aWYgbGluZSBhbmQgbGluZS5lbmRzd2l0aChiIiNFT0ZcbiIpOgogICAgICAgICAgICAgcmV0dXJu
IGxpbmVbOi01XSwgVHJ1ZQogICAgICAgICByZXR1cm4gbGluZSwgRmFsc2UKIApAQCAtNjg4LDM0
ICs2OTQsMzQgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAKICAgICAgICAgICAgIGlmIG91dF9s
aW5lOgogICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Zvcl9kcml2ZXJfdGltZW91dChvdXRf
bGluZSkKLSAgICAgICAgICAgICAgICBpZiBvdXRfbGluZVstMV0gIT0gIlxuIjoKKyAgICAgICAg
ICAgICAgICBpZiBvdXRfbGluZVstMV0gIT0gJ1xuJyBhbmQgb3V0X2xpbmVbLTFdICE9IDEwOgog
ICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCIgICVzIC0+IExhc3QgY2hhcmFjdGVyIHJl
YWQgZnJvbSBEUlQgc3Rkb3V0IGxpbmUgd2FzIG5vdCBhIG5ld2xpbmUhICBUaGlzIGluZGljYXRl
cyBlaXRoZXIgYSBOUldUIG9yIERSVCBidWcuIiAlIHRlc3RfbmFtZSkKICAgICAgICAgICAgICAg
ICBjb250ZW50X2xlbmd0aF9iZWZvcmVfaGVhZGVyX2NoZWNrID0gYmxvY2suX2NvbnRlbnRfbGVu
Z3RoCiAgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19zdGRvdXRfbGluZShibG9jaywgb3V0
X2xpbmUpCiAgICAgICAgICAgICAgICAgIyBGSVhNRTogVW5saWtlIEhUVFAsIERSVCBkdW1wcyB0
aGUgY29udGVudCByaWdodCBhZnRlciBwcmludGluZyBhIENvbnRlbnQtTGVuZ3RoIGhlYWRlci4K
ICAgICAgICAgICAgICAgICAjIERvbid0IHdhaXQgdW50aWwgd2UncmUgZG9uZSB3aXRoIGhlYWRl
cnMsIGp1c3QgcmVhZCB0aGUgYmluYXJ5IGJsb2IgcmlnaHQgbm93LgogICAgICAgICAgICAgICAg
IGlmIGNvbnRlbnRfbGVuZ3RoX2JlZm9yZV9oZWFkZXJfY2hlY2sgIT0gYmxvY2suX2NvbnRlbnRf
bGVuZ3RoOgotICAgICAgICAgICAgICAgICAgICBibG9jay5jb250ZW50ID0gc2VsZi5fc2VydmVy
X3Byb2Nlc3MucmVhZF9zdGRvdXQoZGVhZGxpbmUsIGJsb2NrLl9jb250ZW50X2xlbmd0aCkKKyAg
ICAgICAgICAgICAgICAgICAgYmxvY2suY29udGVudCA9IGVuY29kZV9pZl9uZWNlc3Nhcnkoc2Vs
Zi5fc2VydmVyX3Byb2Nlc3MucmVhZF9zdGRvdXQoZGVhZGxpbmUsIGJsb2NrLl9jb250ZW50X2xl
bmd0aCkpCiAKICAgICAgICAgICAgIGlmIGVycl9saW5lOgogICAgICAgICAgICAgICAgIGlmIHNl
bGYuX2NoZWNrX2Zvcl9kcml2ZXJfY3Jhc2hfb3JfdW5yZXNwb25zaXZlbmVzcyhlcnJfbGluZSk6
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZWxpZiBzZWxmLl9j
aGVja19mb3JfYWRkcmVzc19zYW5pdGl6ZXJfdmlvbGF0aW9uKGVycl9saW5lKToKICAgICAgICAg
ICAgICAgICAgICAgYXNhbl92aW9sYXRpb25fZGV0ZWN0ZWQgPSBUcnVlCi0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2NyYXNoX3JlcG9ydF9mcm9tX2RyaXZlciA9ICIiCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2NyYXNoX3JlcG9ydF9mcm9tX2RyaXZlciA9IGInJwogICAgICAgICAgICAg
ICAgICAgICAjIEFTYW4gcmVwb3J0IHN0YXJ0cyB3aXRoIGEgbm9uZGVzY3JpcHQgbGluZSwgd2Ug
b25seSBkZXRlY3QgdGhlIHNlY29uZCBsaW5lLgogICAgICAgICAgICAgICAgICAgICBlbmRfb2Zf
cHJldmlvdXNfZXJyb3JfbGluZSA9IHNlbGYuZXJyb3JfZnJvbV90ZXN0LnJmaW5kKCdcbicsIDAs
IC0xKQogICAgICAgICAgICAgICAgICAgICBpZiBlbmRfb2ZfcHJldmlvdXNfZXJyb3JfbGluZSA+
IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCA9IHNlbGYu
ZXJyb3JfZnJvbV90ZXN0WzplbmRfb2ZfcHJldmlvdXNfZXJyb3JfbGluZV0KICAgICAgICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90
ZXN0ID0gIiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ID0g
JycKICAgICAgICAgICAgICAgICAgICAgIyBTeW1ib2xpY2F0aW9uIGNhbiB0YWtlIGEgdmVyeSBs
b25nIHRpbWUsIGdpdmUgaXQgMTAgZXh0cmEgbWludXRlcyB0byBmaW5pc2guCiAgICAgICAgICAg
ICAgICAgICAgICMgRklYTUU6IFRoaXMgY2FuIGxpa2VseSBiZSByZW1vdmVkIG9uY2UgPHJkYXI6
Ly9wcm9ibGVtLzE4NzAxNDQ3PiBpcyBmaXhlZC4KICAgICAgICAgICAgICAgICAgICAgZGVhZGxp
bmUgKz0gMTAgKiA2MCAqIDEwMDAKICAgICAgICAgICAgICAgICBpZiBhc2FuX3Zpb2xhdGlvbl9k
ZXRlY3RlZDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3Jhc2hfcmVwb3J0X2Zyb21fZHJp
dmVyICs9IGVycl9saW5lCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NyYXNoX3JlcG9ydF9m
cm9tX2RyaXZlciArPSBkZWNvZGVfZm9yKGVycl9saW5lLCBzdHIpCiAgICAgICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZXJyX2xp
bmUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZGVjb2RlX2Zv
cihlcnJfbGluZSwgc3RyKQogCiAgICAgICAgIGlmIGFzYW5fdmlvbGF0aW9uX2RldGVjdGVkIGFu
ZCBub3Qgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWU6CiAgICAgICAgICAgICBzZWxmLl9jcmFz
aGVkX3Byb2Nlc3NfbmFtZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnByb2Nlc3NfbmFtZSgpCkBA
IC03MzgsNyArNzQ0LDcgQEAgY2xhc3MgQ29udGVudEJsb2NrKG9iamVjdCk6CiAgICAgICAgIHNl
bGYuY29udGVudF9oYXNoID0gTm9uZQogICAgICAgICBzZWxmLl9jb250ZW50X2xlbmd0aCA9IE5v
bmUKICAgICAgICAgIyBDb250ZW50IGlzIHRyZWF0ZWQgYXMgYmluYXJ5IGRhdGEgZXZlbiB0aG91
Z2ggdGhlIHRleHQgb3V0cHV0IGlzIHVzdWFsbHkgVVRGLTguCi0gICAgICAgIHNlbGYuY29udGVu
dCA9IHN0cigpICAjIEZJWE1FOiBTaG91bGQgYmUgYnl0ZWFycmF5KCkgb25jZSB3ZSByZXF1aXJl
IFB5dGhvbiAyLjYuCisgICAgICAgIHNlbGYuY29udGVudCA9IGInJwogICAgICAgICBzZWxmLmRl
Y29kZWRfY29udGVudCA9IE5vbmUKICAgICAgICAgc2VsZi5tYWxsb2MgPSBOb25lCiAgICAgICAg
IHNlbGYuanNfaGVhcCA9IE5vbmUKQEAgLTc0Nyw3ICs3NTMsMTAgQEAgY2xhc3MgQ29udGVudEJs
b2NrKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuZW5jb2RpbmcgPT0gJ2Jhc2U2NCcgYW5kIHNl
bGYuY29udGVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50
ID0gYmFzZTY0LmI2NGRlY29kZShzZWxmLmNvbnRlbnQpCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBzZWxmLmRlY29kZWRfY29udGVudCA9IHNlbGYuY29udGVudAorICAgICAgICAgICAgdHJ5
OgorICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gZGVjb2RlX2ZvcihzZWxm
LmNvbnRlbnQsIHN0cikKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6Cisg
ICAgICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBOb25lCiAKIAogY2xhc3MgRHJp
dmVyUHJveHkob2JqZWN0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2
ZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2RyaXZlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjU0MjMzKQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcg
KzE4Miw3IEBAIGNsYXNzIERyaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBj
b250ZW50X2Jsb2NrID0gZHJpdmVyLl9yZWFkX2Jsb2NrKDAsICIiKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNvbnRlbnRfYmxvY2suY29udGVudF90eXBlLCAnaW1hZ2UvcG5nJykKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2NrLmNvbnRlbnRfaGFzaCwgJ2FjdHVhbCcp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5jb250ZW50LCAnMTIzNDU2
NzhcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5jb250ZW50LCBi
JzEyMzQ1Njc4XG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnRfYmxvY2suZGVj
b2RlZF9jb250ZW50LCAnMTIzNDU2NzhcbicpCiAgICAgICAgIGRyaXZlci5fc2VydmVyX3Byb2Nl
c3MgPSBOb25lCiAKQEAgLTIwMSw3ICsyMDEsNyBAQCBjbGFzcyBEcml2ZXJUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X2Jsb2NrLmNvbnRl
bnRfdHlwZSwgJ2ltYWdlL3BuZycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9i
bG9jay5jb250ZW50X2hhc2gsICdhY3R1YWwnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bnRlbnRfYmxvY2suZW5jb2RpbmcsICdiYXNlNjQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbnRlbnRfYmxvY2suY29udGVudCwgJ01USXpORFUyTnpnSycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29udGVudF9ibG9jay5jb250ZW50LCBiJ01USXpORFUyTnpnSycpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudF9ibG9jay5kZWNvZGVkX2NvbnRlbnQsIGInMTIzNDU2
NzhcbicpCiAKICAgICBkZWYgdGVzdF9ub190aW1lb3V0KHNlbGYpOgpAQCAtMjQ3LDQzICsyNDcs
NDMgQEAgY2xhc3MgRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBk
cml2ZXIuc3RvcCgpCiAKICAgICAgICAgZHJpdmVyLl9zZXJ2ZXJfcHJvY2VzcyA9IEZha2VTZXJ2
ZXJQcm9jZXNzKEZhbHNlKQotICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCAnJywgRmFsc2Us
IE5vbmUsIE5vbmUpCisgICAgICAgIGFzc2VydF9jcmFzaChkcml2ZXIsIGInJywgRmFsc2UsIE5v
bmUsIE5vbmUpCiAKICAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUK
ICAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3BpZCA9IE5vbmUKICAgICAgICAgZHJpdmVyLl9zZXJ2
ZXJfcHJvY2VzcyA9IEZha2VTZXJ2ZXJQcm9jZXNzKEZhbHNlKQogICAgICAgICBkcml2ZXIuX2Ry
aXZlcl90aW1lZF9vdXQgPSBGYWxzZQotICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCAnI0NS
QVNIRURcbicsIFRydWUsICdGYWtlU2VydmVyUHJvY2VzcycsIDEyMzQpCisgICAgICAgIGFzc2Vy
dF9jcmFzaChkcml2ZXIsIGInI0NSQVNIRURcbicsIFRydWUsICdGYWtlU2VydmVyUHJvY2Vzcycs
IDEyMzQpCiAKICAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKICAg
ICAgICAgZHJpdmVyLl9jcmFzaGVkX3BpZCA9IE5vbmUKICAgICAgICAgZHJpdmVyLl9zZXJ2ZXJf
cHJvY2VzcyA9IEZha2VTZXJ2ZXJQcm9jZXNzKEZhbHNlKQogICAgICAgICBkcml2ZXIuX2RyaXZl
cl90aW1lZF9vdXQgPSBGYWxzZQotICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCAnI0NSQVNI
RUQgLSBXZWJQcm9jZXNzXG4nLCBUcnVlLCAnV2ViUHJvY2VzcycsIE5vbmUpCisgICAgICAgIGFz
c2VydF9jcmFzaChkcml2ZXIsIGInI0NSQVNIRUQgLSBXZWJQcm9jZXNzXG4nLCBUcnVlLCAnV2Vi
UHJvY2VzcycsIE5vbmUpCiAKICAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9
IE5vbmUKICAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3BpZCA9IE5vbmUKICAgICAgICAgZHJpdmVy
Ll9zZXJ2ZXJfcHJvY2VzcyA9IEZha2VTZXJ2ZXJQcm9jZXNzKEZhbHNlKQogICAgICAgICBkcml2
ZXIuX2RyaXZlcl90aW1lZF9vdXQgPSBGYWxzZQotICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVy
LCAnI0NSQVNIRUQgLSBXZWJQcm9jZXNzIChwaWQgODY3NSlcbicsIFRydWUsICdXZWJQcm9jZXNz
JywgODY3NSkKKyAgICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgYicjQ1JBU0hFRCAtIFdlYlBy
b2Nlc3MgKHBpZCA4Njc1KVxuJywgVHJ1ZSwgJ1dlYlByb2Nlc3MnLCA4Njc1KQogCiAgICAgICAg
IGRyaXZlci5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBOb25lCiAgICAgICAgIGRyaXZlci5fY3Jh
c2hlZF9waWQgPSBOb25lCiAgICAgICAgIGRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSBGYWtlU2Vy
dmVyUHJvY2VzcyhGYWxzZSkKICAgICAgICAgZHJpdmVyLl9kcml2ZXJfdGltZWRfb3V0ID0gRmFs
c2UKLSAgICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgJyNQUk9DRVNTIFVOUkVTUE9OU0lWRSAt
IFdlYlByb2Nlc3MgKHBpZCA4Njc1KVxuJywgVHJ1ZSwgTm9uZSwgTm9uZSwgVHJ1ZSkKKyAgICAg
ICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgYicjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9j
ZXNzIChwaWQgODY3NSlcbicsIFRydWUsIE5vbmUsIE5vbmUsIFRydWUpCiAKICAgICAgICAgZHJp
dmVyLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKICAgICAgICAgZHJpdmVyLl9jcmFzaGVk
X3BpZCA9IE5vbmUKICAgICAgICAgZHJpdmVyLl9zZXJ2ZXJfcHJvY2VzcyA9IEZha2VTZXJ2ZXJQ
cm9jZXNzKEZhbHNlKQogICAgICAgICBkcml2ZXIuX2RyaXZlcl90aW1lZF9vdXQgPSBGYWxzZQot
ICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCAnI0NSQVNIRUQgLSByZW5kZXJlciAocGlkIDg2
NzUpXG4nLCBUcnVlLCAncmVuZGVyZXInLCA4Njc1KQorICAgICAgICBhc3NlcnRfY3Jhc2goZHJp
dmVyLCBiJyNDUkFTSEVEIC0gcmVuZGVyZXIgKHBpZCA4Njc1KVxuJywgVHJ1ZSwgJ3JlbmRlcmVy
JywgODY3NSkKIAogICAgICAgICBkcml2ZXIuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gTm9uZQog
ICAgICAgICBkcml2ZXIuX2NyYXNoZWRfcGlkID0gTm9uZQogICAgICAgICBkcml2ZXIuX3NlcnZl
cl9wcm9jZXNzID0gRmFrZVNlcnZlclByb2Nlc3MoVHJ1ZSkKICAgICAgICAgZHJpdmVyLl9kcml2
ZXJfdGltZWRfb3V0ID0gRmFsc2UKLSAgICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgJycsIFRy
dWUsICdGYWtlU2VydmVyUHJvY2VzcycsIDEyMzQpCisgICAgICAgIGFzc2VydF9jcmFzaChkcml2
ZXIsIGInJywgVHJ1ZSwgJ0Zha2VTZXJ2ZXJQcm9jZXNzJywgMTIzNCkKIAogICAgIGRlZiB0ZXN0
X2NyZWF0aW5nX2FfcG9ydF9kb2VzX25vdF93cml0ZV90b190aGVfZmlsZXN5c3RlbShzZWxmKToK
ICAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9pbWFnZV9kaWZmLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9pbWFnZV9kaWZmLnB5CShyZXZpc2lvbiAyNTQyMzMpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvaW1hZ2VfZGlmZi5weQkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsNyBAQCBpbXBvcnQgcmUKIGltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0cHkucG9ydCBpbXBv
cnQgc2VydmVyX3Byb2Nlc3MKK2Zyb20gd2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJp
bGl0eSBpbXBvcnQgZGVjb2RlX2ZvcgogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKQEAgLTU3LDkgKzU4LDEwIEBAIGNsYXNzIEltYWdlRGlmZmVyKG9iamVjdCk6CiAgICAg
ICAgICAgICBpZiBub3Qgc2VsZi5fcHJvY2VzczoKICAgICAgICAgICAgICAgICBzZWxmLl9zdGFy
dCh0b2xlcmFuY2UpCiAgICAgICAgICAgICAjIE5vdGUgdGhhdCBhbHRob3VnaCB3ZSBhcmUgaGFu
ZGVkICdvbGQnLCAnbmV3JywgSW1hZ2VEaWZmIHdhbnRzICduZXcnLCAnb2xkJy4KLSAgICAgICAg
ICAgIHNlbGYuX3Byb2Nlc3Mud3JpdGUoJ0NvbnRlbnQtTGVuZ3RoOiAlZFxuJXNDb250ZW50LUxl
bmd0aDogJWRcbiVzJyAlICgKLSAgICAgICAgICAgICAgICBsZW4oYWN0dWFsX2NvbnRlbnRzKSwg
YWN0dWFsX2NvbnRlbnRzLAotICAgICAgICAgICAgICAgIGxlbihleHBlY3RlZF9jb250ZW50cyks
IGV4cGVjdGVkX2NvbnRlbnRzKSkKKyAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Mud3JpdGUoJ0Nv
bnRlbnQtTGVuZ3RoOiB7fVxuJy5mb3JtYXQobGVuKGFjdHVhbF9jb250ZW50cykpKQorICAgICAg
ICAgICAgc2VsZi5fcHJvY2Vzcy53cml0ZShhY3R1YWxfY29udGVudHMpCisgICAgICAgICAgICBz
ZWxmLl9wcm9jZXNzLndyaXRlKCdDb250ZW50LUxlbmd0aDoge31cbicuZm9ybWF0KGxlbihleHBl
Y3RlZF9jb250ZW50cykpKQorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzcy53cml0ZShleHBlY3Rl
ZF9jb250ZW50cykKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkKCkKICAgICAgICAgZXhj
ZXB0IElPRXJyb3IgYXMgZXhjZXB0aW9uOgogICAgICAgICAgICAgcmV0dXJuIChOb25lLCAwLCAi
RmFpbGVkIHRvIGNvbXB1dGUgYW4gaW1hZ2UgZGlmZjogJXMiICUgc3RyKGV4Y2VwdGlvbikpCkBA
IC03NiwyNCArNzgsMjQgQEAgY2xhc3MgSW1hZ2VEaWZmZXIob2JqZWN0KToKICAgICBkZWYgX3Jl
YWQoc2VsZik6CiAgICAgICAgIGRlYWRsaW5lID0gdGltZS50aW1lKCkgKyAyLjAKICAgICAgICAg
b3V0cHV0ID0gTm9uZQotICAgICAgICBvdXRwdXRfaW1hZ2UgPSAiIgorICAgICAgICBvdXRwdXRf
aW1hZ2UgPSBiJycKIAogICAgICAgICB3aGlsZSBub3Qgc2VsZi5fcHJvY2Vzcy50aW1lZF9vdXQg
YW5kIG5vdCBzZWxmLl9wcm9jZXNzLmhhc19jcmFzaGVkKCk6CiAgICAgICAgICAgICBvdXRwdXQg
PSBzZWxmLl9wcm9jZXNzLnJlYWRfc3Rkb3V0X2xpbmUoZGVhZGxpbmUpCiAgICAgICAgICAgICBp
ZiBzZWxmLl9wcm9jZXNzLnRpbWVkX291dCBvciBzZWxmLl9wcm9jZXNzLmhhc19jcmFzaGVkKCkg
b3Igbm90IG91dHB1dDoKICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgICAgICAgICBpZiBv
dXRwdXQuc3RhcnRzd2l0aCgnZGlmZicpOiAgIyBUaGlzIGlzIHRoZSBsYXN0IGxpbmUgSW1hZ2VE
aWZmIHByaW50cy4KKyAgICAgICAgICAgIGlmIG91dHB1dC5zdGFydHN3aXRoKGInZGlmZicpOiAg
IyBUaGlzIGlzIHRoZSBsYXN0IGxpbmUgSW1hZ2VEaWZmIHByaW50cy4KICAgICAgICAgICAgICAg
ICBicmVhawogCi0gICAgICAgICAgICBpZiBvdXRwdXQuc3RhcnRzd2l0aCgnQ29udGVudC1MZW5n
dGgnKToKLSAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2goJ0NvbnRlbnQtTGVuZ3RoOiAoXGQr
KScsIG91dHB1dCkKLSAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IGludChtLmdyb3Vw
KDEpKQorICAgICAgICAgICAgaWYgb3V0cHV0LnN0YXJ0c3dpdGgoYidDb250ZW50LUxlbmd0aCcp
OgorICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaChiJ0NvbnRlbnQtTGVuZ3RoOiAoXGQrKScs
IG91dHB1dCkKKyAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IGludChkZWNvZGVfZm9y
KG0uZ3JvdXAoMSksIHN0cikpCiAgICAgICAgICAgICAgICAgb3V0cHV0X2ltYWdlID0gc2VsZi5f
cHJvY2Vzcy5yZWFkX3N0ZG91dChkZWFkbGluZSwgY29udGVudF9sZW5ndGgpCiAgICAgICAgICAg
ICAgICAgb3V0cHV0ID0gc2VsZi5fcHJvY2Vzcy5yZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5lKQog
ICAgICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAgc3RkZXJyID0gc2VsZi5fcHJvY2Vzcy5w
b3BfYWxsX2J1ZmZlcmVkX3N0ZGVycigpCisgICAgICAgIHN0ZGVyciA9IGRlY29kZV9mb3Ioc2Vs
Zi5fcHJvY2Vzcy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZGVycigpLCBzdHIpCiAgICAgICAgIGVycl9z
dHIgPSAnJwogICAgICAgICBpZiBzdGRlcnI6CiAgICAgICAgICAgICBlcnJfc3RyICs9ICJJbWFn
ZURpZmYgcHJvZHVjZWQgc3RkZXJyIG91dHB1dDpcbiIgKyBzdGRlcnIKQEAgLTEwMywxMSArMTA1
LDExIEBAIGNsYXNzIEltYWdlRGlmZmVyKG9iamVjdCk6CiAgICAgICAgICAgICBlcnJfc3RyICs9
ICJJbWFnZURpZmYgY3Jhc2hlZFxuIgogCiAgICAgICAgIGRpZmZfcGVyY2VudCA9IDAKLSAgICAg
ICAgaWYgb3V0cHV0IGFuZCBvdXRwdXQuc3RhcnRzd2l0aCgnZGlmZicpOgotICAgICAgICAgICAg
bSA9IHJlLm1hdGNoKCdkaWZmOiAoLispJSAocGFzc2VkfGZhaWxlZCknLCBvdXRwdXQpCi0gICAg
ICAgICAgICBpZiBtLmdyb3VwKDIpID09ICdwYXNzZWQnOgorICAgICAgICBpZiBvdXRwdXQgYW5k
IG91dHB1dC5zdGFydHN3aXRoKGInZGlmZicpOgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKGIn
ZGlmZjogKC4rKSUgKHBhc3NlZHxmYWlsZWQpJywgb3V0cHV0KQorICAgICAgICAgICAgaWYgbS5n
cm91cCgyKSA9PSBiJ3Bhc3NlZCc6CiAgICAgICAgICAgICAgICAgcmV0dXJuIChOb25lLCAwLCBO
b25lKQotICAgICAgICAgICAgZGlmZl9wZXJjZW50ID0gZmxvYXQobS5ncm91cCgxKSkKKyAgICAg
ICAgICAgIGRpZmZfcGVyY2VudCA9IGZsb2F0KGRlY29kZV9mb3IobS5ncm91cCgxKSwgc3RyKSkK
IAogICAgICAgICByZXR1cm4gKG91dHB1dF9pbWFnZSwgZGlmZl9wZXJjZW50LCBlcnJfc3RyIG9y
IE5vbmUpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vz
cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3By
b2Nlc3MucHkJKHJldmlzaW9uIDI1NDIzMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9zZXJ2ZXJfcHJvY2Vzcy5weQkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOSBAQCBpbXBv
cnQgc2lnbmFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5jb21t
b24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBlbmNvZGVfaWZfbmVjZXNzYXJ5CisKICMg
Tm90ZSB0aGF0IGFsdGhvdWdoIHdpbjMyIHB5dGhvbiBkb2VzIHByb3ZpZGUgYW4gaW1wbGVtZW50
YXRpb24gb2YKICMgdGhlIHdpbjMyIHNlbGVjdCBBUEksIGl0IG9ubHkgd29ya3Mgb24gc29ja2V0
cywgYW5kIG5vdCBvbiB0aGUgbmFtZWQgcGlwZXMKICMgdXNlZCBieSBzdWJwcm9jZXNzLCBzbyB3
ZSBoYXZlIHRvIHVzZSB0aGUgbmF0aXZlIEFQSXMgZGlyZWN0bHkuCkBAIC00Nyw4ICs1MCw2IEBA
IGVsc2U6CiAgICAgaW1wb3J0IG9zCiAgICAgaW1wb3J0IHNlbGVjdAogCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotCiAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIApAQCAtMTc4LDkgKzE3OSw5IEBAIGNsYXNzIFNl
cnZlclByb2Nlc3Mob2JqZWN0KToKICAgICAgICAgaWYgbm90IHNlbGYuX3Byb2M6CiAgICAgICAg
ICAgICBzZWxmLl9zdGFydCgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3Byb2Mu
c3RkaW4ud3JpdGUoYnl0ZXMpCisgICAgICAgICAgICBzZWxmLl9wcm9jLnN0ZGluLndyaXRlKGVu
Y29kZV9pZl9uZWNlc3NhcnkoYnl0ZXMpKQogICAgICAgICAgICAgc2VsZi5fcHJvYy5zdGRpbi5m
bHVzaCgpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCAoSU9F
cnJvciwgVmFsdWVFcnJvcikgYXMgZToKICAgICAgICAgICAgIHNlbGYuc3RvcCgwLjApCiAgICAg
ICAgICAgICAjIHN0b3AoKSBjYWxscyBfcmVzZXQoKSwgc28gd2UgaGF2ZSB0byBzZXQgY3Jhc2hl
ZCB0byBUcnVlIGFmdGVyIGNhbGxpbmcgc3RvcCgpCiAgICAgICAgICAgICAjIHVubGVzcyB3ZSBh
bHJlYWR5IGtub3cgdGhhdCB0aGlzIGlzIGEgdGltZW91dC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzc19tb2NrLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzc19tb2NrLnB5CShyZXZpc2lvbiAy
NTQyMzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfbW9j
ay5weQkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDEzIEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxp
dHkgaW1wb3J0IGVuY29kZV9pZl9uZWNlc3NhcnkKKwogCiBjbGFzcyBNb2NrU2VydmVyUHJvY2Vz
cyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaj1Ob25lLCBuYW1lPU5v
bmUsIGNtZD1Ob25lLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCBsaW5lcz1O
b25lLCBjcmFzaGVkPUZhbHNlLCB0YXJnZXRfaG9zdD1Ob25lKToKICAgICAgICAgc2VsZi50aW1l
ZF9vdXQgPSBGYWxzZQotICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMgb3IgW10KKyAgICAgICAg
c2VsZi5saW5lcyA9IFtlbmNvZGVfaWZfbmVjZXNzYXJ5KGxpbmUpIGZvciBsaW5lIGluIChsaW5l
cyBvciBbXSldCiAgICAgICAgIHNlbGYuY3Jhc2hlZCA9IGNyYXNoZWQKICAgICAgICAgc2VsZi53
cml0ZXMgPSBbXQogICAgICAgICBzZWxmLmNtZCA9IGNtZApAQCAtNTIsNyArNTQsNyBAQCBjbGFz
cyBNb2NrU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgIGRlZiByZWFkX3N0ZG91dF9saW5lKHNl
bGYsIGRlYWRsaW5lKToKICAgICAgICAgaWYgc2VsZi5oYXNfY3Jhc2hlZCgpOgogICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHNlbGYubGluZXMucG9wKDApICsgIlxuIgor
ICAgICAgICByZXR1cm4gc2VsZi5saW5lcy5wb3AoMCkgKyBiJ1xuJwogCiAgICAgZGVmIGhhc19h
dmFpbGFibGVfc3Rkb3V0KHNlbGYpOgogICAgICAgICBpZiBzZWxmLmhhc19jcmFzaGVkKCk6CkBA
IC02Nyw4ICs2OSw4IEBAIGNsYXNzIE1vY2tTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAgICAg
ICAgICBzZWxmLmxpbmVzLnBvcCgwKQogICAgICAgICAgICAgcmVtYWluaW5nX3NpemUgPSBzaXpl
IC0gbGVuKGZpcnN0X2xpbmUpIC0gMQogICAgICAgICAgICAgaWYgbm90IHJlbWFpbmluZ19zaXpl
OgotICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdF9saW5lICsgIlxuIgotICAgICAgICAgICAg
cmV0dXJuIGZpcnN0X2xpbmUgKyAiXG4iICsgc2VsZi5yZWFkX3N0ZG91dChkZWFkbGluZSwgcmVt
YWluaW5nX3NpemUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0X2xpbmUgKyBiJ1xuJwor
ICAgICAgICAgICAgcmV0dXJuIGZpcnN0X2xpbmUgKyBiJ1xuJyArIHNlbGYucmVhZF9zdGRvdXQo
ZGVhZGxpbmUsIHJlbWFpbmluZ19zaXplKQogICAgICAgICByZXN1bHQgPSBzZWxmLmxpbmVzWzBd
WzpzaXplXQogICAgICAgICBzZWxmLmxpbmVzWzBdID0gc2VsZi5saW5lc1swXVtzaXplOl0KICAg
ICAgICAgcmV0dXJuIHJlc3VsdApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Np
bXVsYXRvcl9wcm9jZXNzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weQkocmV2aXNpb24gMjU0MjMzKQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yMiw2ICsyMiw3IEBACiAKIAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQog
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi50aW1lb3V0X2NvbnRleHQgaW1wb3J0IFRpbWVvdXQKQEAg
LTY3LDcgKzY4LDkgQEAgY2xhc3MgU2ltdWxhdG9yUHJvY2VzcyhTZXJ2ZXJQcm9jZXNzKToKIAog
ICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9maWxl
LmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuc29ja2V0LmNsb3NlKCkKKyAgICAgICAgICAgICMg
Q2xvc2luZyB0aGUgZmlsZSBpbXBsaWNpdGx5IGNsb3NlcyB0aGUgc29ja2V0IGluIFB5dGhvbiAz
CisgICAgICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDApOgorICAgICAgICAgICAg
ICAgIHNlbGYuc29ja2V0LmNsb3NlKCkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaiwgbmFtZSwgY21kLCBlbnY9Tm9uZSwgdW5pdmVy
c2FsX25ld2xpbmVzPUZhbHNlLCB0cmVhdF9ub19kYXRhX2FzX2NyYXNoPUZhbHNlLCB0YXJnZXRf
aG9zdD1Ob25lKToKQEAgLTEwMyw3ICsxMDYsNyBAQCBjbGFzcyBTaW11bGF0b3JQcm9jZXNzKFNl
cnZlclByb2Nlc3MpOgogICAgICAgICAgICAgc3RkZXJyID0gTm9uZQogICAgICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgICAgICMgVGhpcyBvcmRlciBtYXRjaGVzIHRoZSBjbGllbnQgc2lkZSBj
b25uZWN0aW9ucyBpbiBUb29scy9UZXN0UnVubmVyU2hhcmVkL0lPU0xheW91dFRlc3RDb21tdW5p
Y2F0aW9uLmNwcCBzZXRVcElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uKCkKLSAgICAgICAgICAg
ICAgICBzdGRpbiA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9m
aWxlKHNlbGYuX3RhcmdldF9ob3N0Lmxpc3RlbmluZ19zb2NrZXQsICd3JykKKyAgICAgICAgICAg
ICAgICBzdGRpbiA9IFNpbXVsYXRvclByb2Nlc3MuX2FjY2VwdF9jb25uZWN0aW9uX2NyZWF0ZV9m
aWxlKHNlbGYuX3RhcmdldF9ob3N0Lmxpc3RlbmluZ19zb2NrZXQsICd3YicpCiAgICAgICAgICAg
ICAgICAgc3Rkb3V0ID0gU2ltdWxhdG9yUHJvY2Vzcy5fYWNjZXB0X2Nvbm5lY3Rpb25fY3JlYXRl
X2ZpbGUoc2VsZi5fdGFyZ2V0X2hvc3QubGlzdGVuaW5nX3NvY2tldCwgJ3JiJykKICAgICAgICAg
ICAgICAgICBzdGRlcnIgPSBTaW11bGF0b3JQcm9jZXNzLl9hY2NlcHRfY29ubmVjdGlvbl9jcmVh
dGVfZmlsZShzZWxmLl90YXJnZXRfaG9zdC5saXN0ZW5pbmdfc29ja2V0LCAncmInKQogICAgICAg
ICAgICAgZXhjZXB0OgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkJKHJldmlz
aW9uIDI1NDIzMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBAIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgUG9y
dCwgRHJpdmVyLCAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZp
Z3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uY3Jhc2hsb2dzIGltcG9ydCBDcmFzaExvZ3MKIGZyb20gd2Via2l0cHkuY29tbW9uLnZl
cnNpb25fbmFtZV9tYXAgaW1wb3J0IFBVQkxJQ19UQUJMRSwgVmVyc2lvbk5hbWVNYXAKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgZGVjb2RlX2Zvciwg
ZW5jb2RlX2lmX25lY2Vzc2FyeQogCiAKICMgVGhpcyBzZXRzIGJhc2ljIGV4cGVjdGF0aW9ucyBm
b3IgYSB0ZXN0LiBFYWNoIGluZGl2aWR1YWwgZXhwZWN0YXRpb24KQEAgLTExMSw5ICsxMTIsOSBA
QCBVTkVYUEVDVEVEX0ZBSUxVUkVTID0gMTgKIAogCiBkZWYgdW5pdF90ZXN0X2xpc3QoKToKLSAg
ICBzaWxlbnRfYXVkaW8gPSAiUklGRjJceDAwXHgwMFx4MDBXQVZFZm10IFx4MTBceDAwXHgwMFx4
MDBceDAxXHgwMFx4MDFceDAwXHgyMlx4NTZceDAwXHgwMFx4NDRceEFDXHgwMFx4MDBceDAyXHgw
MFx4MTBceDAwZGF0YVx4MEVceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw
XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCIKLSAgICBzaWxlbnRfYXVkaW9fd2l0aF9zaW5n
bGVfYml0X2RpZmZlcmVuY2UgPSAiUklGRjJceDAwXHgwMFx4MDBXQVZFZm10IFx4MTBceDAwXHgw
MFx4MDBceDAxXHgwMFx4MDFceDAwXHgyMlx4NTZceDAwXHgwMFx4NDRceEFDXHgwMFx4MDBceDAy
XHgwMFx4MTBceDAwZGF0YVx4MEVceDAwXHgwMFx4MDBceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBc
eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCIKLSAgICBhdWRpbzIgPSAiUklGRjJceDAw
XHgwMFx4MDBXQVZFZm10IFx4MTBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDFceDAwXHgyMlx4NTZc
eDAwXHgwMFx4NDRceEFDXHgwMFx4MDBceDAyXHgwMFx4MTBceDAwZGF0YVx4MEVceDAwXHgwMFx4
MDBceDQwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw
MCIKKyAgICBzaWxlbnRfYXVkaW8gPSBiIlJJRkYyXHgwMFx4MDBceDAwV0FWRWZtdCBceDEwXHgw
MFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMFx4MjJceDU2XHgwMFx4MDBceDQ0XHhBQ1x4MDBceDAw
XHgwMlx4MDBceDEwXHgwMGRhdGFceDBFXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc
eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiCisgICAgc2lsZW50X2F1ZGlvX3dp
dGhfc2luZ2xlX2JpdF9kaWZmZXJlbmNlID0gYiJSSUZGMlx4MDBceDAwXHgwMFdBVkVmbXQgXHgx
MFx4MDBceDAwXHgwMFx4MDFceDAwXHgwMVx4MDBceDIyXHg1Nlx4MDBceDAwXHg0NFx4QUNceDAw
XHgwMFx4MDJceDAwXHgxMFx4MDBkYXRhXHgwRVx4MDBceDAwXHgwMFx4MDFceDAwXHgwMFx4MDBc
eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgorICAgIGF1ZGlvMiA9IGIi
UklGRjJceDAwXHgwMFx4MDBXQVZFZm10IFx4MTBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDFceDAw
XHgyMlx4NTZceDAwXHgwMFx4NDRceEFDXHgwMFx4MDBceDAyXHgwMFx4MTBceDAwZGF0YVx4MEVc
eDAwXHgwMFx4MDBceDQwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMCIKICAgICB0ZXN0cyA9IFRlc3RMaXN0KCkKICAgICB0ZXN0cy5hZGQoJ2ZhaWx1
cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnLCBjcmFzaD1UcnVlKQogICAgIHRlc3RzLmFkZCgnZmFp
bHVyZXMvZXhwZWN0ZWQvZXhjZXB0aW9uLmh0bWwnLCBleGNlcHRpb249VHJ1ZSkKQEAgLTQzNCwx
NSArNDM1LDIwIEBAIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAgICAgICByZXR1cm4gJ1JlbGVh
c2UnCiAKICAgICBkZWYgZGlmZl9pbWFnZShzZWxmLCBleHBlY3RlZF9jb250ZW50cywgYWN0dWFs
X2NvbnRlbnRzLCB0b2xlcmFuY2U9Tm9uZSk6CisgICAgICAgIGV4cGVjdGVkX2NvbnRlbnRzID0g
ZW5jb2RlX2lmX25lY2Vzc2FyeShleHBlY3RlZF9jb250ZW50cykKKyAgICAgICAgYWN0dWFsX2Nv
bnRlbnRzID0gZW5jb2RlX2lmX25lY2Vzc2FyeShhY3R1YWxfY29udGVudHMpCiAgICAgICAgIGRp
ZmZlZCA9IGFjdHVhbF9jb250ZW50cyAhPSBleHBlY3RlZF9jb250ZW50cwogICAgICAgICBpZiBu
b3QgYWN0dWFsX2NvbnRlbnRzIGFuZCBub3QgZXhwZWN0ZWRfY29udGVudHM6CiAgICAgICAgICAg
ICByZXR1cm4gKE5vbmUsIDAsIE5vbmUpCiAgICAgICAgIGlmIG5vdCBhY3R1YWxfY29udGVudHMg
b3Igbm90IGV4cGVjdGVkX2NvbnRlbnRzOgogICAgICAgICAgICAgcmV0dXJuIChUcnVlLCAwLCBO
b25lKQotICAgICAgICBpZiAncmVmJyBpbiBleHBlY3RlZF9jb250ZW50czoKKyAgICAgICAgaWYg
YidyZWYnIGluIGV4cGVjdGVkX2NvbnRlbnRzOgogICAgICAgICAgICAgYXNzZXJ0IHRvbGVyYW5j
ZSA9PSAwCiAgICAgICAgIGlmIGRpZmZlZDoKLSAgICAgICAgICAgIHJldHVybiAoIjwgJXNcbi0t
LVxuPiAlc1xuIiAlIChleHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRlbnRzKSwgMSwgTm9u
ZSkKKyAgICAgICAgICAgIHJldHVybiAoIjwge31cbi0tLVxuPiB7fVxuIi5mb3JtYXQoCisgICAg
ICAgICAgICAgICAgZGVjb2RlX2ZvcihleHBlY3RlZF9jb250ZW50cywgc3RyKSwKKyAgICAgICAg
ICAgICAgICBkZWNvZGVfZm9yKGFjdHVhbF9jb250ZW50cywgc3RyKSwKKyAgICAgICAgICAgICks
IDEsIE5vbmUpCiAgICAgICAgIHJldHVybiAoTm9uZSwgMCwgTm9uZSkKIAogICAgIGRlZiBsYXlv
dXRfdGVzdHNfZGlyKHNlbGYpOgpAQCAtNTYzLDcgKzU2OSw3IEBAIGNsYXNzIFRlc3REcml2ZXIo
RHJpdmVyKToKICAgICAgICAgdGVzdF9hcmdzID0gdGVzdF9pbnB1dC5hcmdzIG9yIFtdCiAgICAg
ICAgIHRlc3QgPSBzZWxmLl9wb3J0Ll90ZXN0c1t0ZXN0X25hbWVdCiAgICAgICAgIGlmIHRlc3Qu
a2V5Ym9hcmQ6Ci0gICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAorICAgICAgICAg
ICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQoKQogICAgICAgICBpZiB0ZXN0LmV4Y2VwdGlvbjoK
ICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2V4Y2VwdGlvbiBmcm9tICcgKyB0ZXN0X25h
bWUpCiAgICAgICAgIGlmIHRlc3QuaGFuZzoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
eGNvZGUvc2ltdWxhdGVkX2RldmljZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHkJKHJldmlzaW9uIDI1NDIzMykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZS5weQkod29ya2luZyBj
b3B5KQpAQCAtNTYzLDcgKzU2Myw3IEBAIGNsYXNzIFNpbXVsYXRlZERldmljZShvYmplY3QpOgog
ICAgICAgICAgICAgX2xvZy5kZWJ1Zyh1J3t9IGhhcyBubyBzZXJ2aWNlIHRvIGNoZWNrIGlmIHRo
ZSBkZXZpY2UgaXMgdXNhYmxlJy5mb3JtYXQoc2VsZi5kZXZpY2VfdHlwZS5zb2Z0d2FyZV92YXJp
YW50KSkKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAgICAgc3lzdGVtX3Byb2Nlc3Nl
cyA9IHNlbGYuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFtTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLnhj
cnVuLCAnc2ltY3RsJywgJ3NwYXduJywgc2VsZi51ZGlkLCAnbGF1bmNoY3RsJywgJ3ByaW50Jywg
J3N5c3RlbSddLCBkZWNvZGVfb3V0cHV0PUZhbHNlKQorICAgICAgICBzeXN0ZW1fcHJvY2Vzc2Vz
ID0gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoW1NpbXVsYXRlZERldmljZU1hbmFnZXIueGNy
dW4sICdzaW1jdGwnLCAnc3Bhd24nLCBzZWxmLnVkaWQsICdsYXVuY2hjdGwnLCAncHJpbnQnLCAn
c3lzdGVtJ10sIGRlY29kZV9vdXRwdXQ9VHJ1ZSkKICAgICAgICAgaWYgcmUuc2VhcmNoKHInInt9
IicuZm9ybWF0KGhvbWVfc2NyZWVuX3NlcnZpY2UpLCBzeXN0ZW1fcHJvY2Vzc2VzKSBvciByZS5z
ZWFyY2gocidBXHMre30nLmZvcm1hdChob21lX3NjcmVlbl9zZXJ2aWNlKSwgc3lzdGVtX3Byb2Nl
c3Nlcyk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKQEAg
LTYwNCw3ICs2MDQsNyBAQCBjbGFzcyBTaW11bGF0ZWREZXZpY2Uob2JqZWN0KToKIAogICAgIGRl
ZiBpbnN0YWxsX2FwcChzZWxmLCBhcHBfcGF0aCwgZW52PU5vbmUpOgogICAgICAgICAjIEV2ZW4g
YWZ0ZXIgY2Fyb3VzZWwgaXMgcnVubmluZywgaXQgdGFrZXMgYSBmZXcgc2Vjb25kcyBmb3Igd2F0
Y2hPUyB0byBhbGxvdyBpbnN0YWxscy4KLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuTlVN
X0lOU1RBTExfUkVUUklFUyk6CisgICAgICAgIGZvciBpIGluIHJhbmdlKHNlbGYuTlVNX0lOU1RB
TExfUkVUUklFUyk6CiAgICAgICAgICAgICBleGl0X2NvZGUgPSBzZWxmLmV4ZWN1dGl2ZS5ydW5f
Y29tbWFuZChbJ3hjcnVuJywgJ3NpbWN0bCcsICdpbnN0YWxsJywgc2VsZi51ZGlkLCBhcHBfcGF0
aF0sIHJldHVybl9leGl0X2NvZGU9VHJ1ZSkKICAgICAgICAgICAgIGlmIGV4aXRfY29kZSA9PSAw
OgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387344</attachid>
            <date>2020-01-10 09:11:10 -0800</date>
            <delta_ts>2020-01-10 10:14:09 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-205291-20200110091109.patch</filename>
            <type>text/plain</type>
            <size>3967</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1NDM0MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDIwLTAxLTEwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBQeXRob24gMzogQWRkIHN1cHBvcnQgdG8gcnVuLXdlYmtpdC10ZXN0cyAo
Rm9sbG93LXVwIGZpeCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNTI5MQorCisgICAgICAgIFVucmV2aWV3ZWQgZm9sbG93LXVwIGZpeC4KKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAo
UG9ydFRlc3RDYXNlLnRlc3RfZGlmZl9pbWFnZSk6IERpZmYgb3V0cHV0IGlzIGJ5dGUgYXJyYXks
IG5vdCBzdHJpbmcuCisgICAgICAgIChQb3J0VGVzdENhc2UudGVzdF9kaWZmX2ltYWdlX2ZhaWxl
ZCk6IERpdHRvLgorICAgICAgICAoUG9ydFRlc3RDYXNlLnRlc3RfZGlmZl9pbWFnZV9jcmFzaGVk
KTogRGl0dG8uCisKIDIwMjAtMDEtMTAgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXVFJdIFVzZSBzaG9ydCBoZWFydCBiZWF0IHRpbWVyIGFzIGEgVGVzdE9w
dGlvbgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2Uu
cHkJKHJldmlzaW9uIDI1NDM0MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0
X3Rlc3RjYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsMjIgKzI5MiwyMiBAQCBjbGFzcyBQ
b3J0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIEZpcnN0IHRlc3QgdGhl
IGNhc2Ugb2Ygbm90IHVzaW5nIHRoZSBKSEJ1aWxkIHdyYXBwZXIuCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UocG9ydC5fc2hvdWxkX3VzZV9qaGJ1aWxkKCkpCiAKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwb3J0LmRpZmZfaW1hZ2UoJ2ZvbycsICdiYXInKSwgKCcnLCAxMDAuMCwgTm9uZSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kaWZmX2ltYWdlKCdmb28nLCAnYmFyJyks
IChiJycsIDEwMC4wLCBOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2Mu
Y21kLCBbcG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCksICItLXRvbGVyYW5jZSIsICIwLjEiXSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmRpZmZfaW1hZ2UoJ2ZvbycsICdiYXInLCBO
b25lKSwgKCcnLCAxMDAuMCwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5k
aWZmX2ltYWdlKCdmb28nLCAnYmFyJywgTm9uZSksIChiJycsIDEwMC4wLCBOb25lKSkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2MuY21kLCBbcG9ydC5fcGF0aF90b19pbWFnZV9k
aWZmKCksICItLXRvbGVyYW5jZSIsICIwLjEiXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
b3J0LmRpZmZfaW1hZ2UoJ2ZvbycsICdiYXInLCAwKSwgKCcnLCAxMDAuMCwgTm9uZSkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kaWZmX2ltYWdlKCdmb28nLCAnYmFyJywgMCksIChi
JycsIDEwMC4wLCBOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2MuY21k
LCBbcG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCksICItLXRvbGVyYW5jZSIsICIwIl0pCiAKICAg
ICAgICAgIyBOb3cgdGVzdCB0aGUgY2FzZSBvZiB1c2luZyBKSEJ1aWxkIHdyYXBwZXIuCiAgICAg
ICAgIHBvcnQuX2ZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkocG9ydC5wYXRoX2Zyb21f
d2Via2l0X2Jhc2UoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcyVzJyAlIHBvcnQucG9ydF9u
YW1lLnVwcGVyKCkpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5fc2hvdWxkX3VzZV9q
aGJ1aWxkKCkpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmRpZmZfaW1hZ2UoJ2Zv
bycsICdiYXInKSwgKCcnLCAxMDAuMCwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cG9ydC5kaWZmX2ltYWdlKCdmb28nLCAnYmFyJyksIChiJycsIDEwMC4wLCBOb25lKSkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2MuY21kLCBwb3J0Ll9qaGJ1aWxkX3dyYXBwZXIg
KyBbcG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCksICItLXRvbGVyYW5jZSIsICIwLjEiXSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmRpZmZfaW1hZ2UoJ2ZvbycsICdiYXInLCBOb25l
KSwgKCcnLCAxMDAuMCwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kaWZm
X2ltYWdlKCdmb28nLCAnYmFyJywgTm9uZSksIChiJycsIDEwMC4wLCBOb25lKSkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2MuY21kLCBwb3J0Ll9qaGJ1aWxkX3dyYXBwZXIgKyBb
cG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCksICItLXRvbGVyYW5jZSIsICIwLjEiXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmRpZmZfaW1hZ2UoJ2ZvbycsICdiYXInLCAwKSwgKCcn
LCAxMDAuMCwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kaWZmX2ltYWdl
KCdmb28nLCAnYmFyJywgMCksIChiJycsIDEwMC4wLCBOb25lKSkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZWxmLnByb2MuY21kLCBwb3J0Ll9qaGJ1aWxkX3dyYXBwZXIgKyBbcG9ydC5fcGF0
aF90b19pbWFnZV9kaWZmKCksICItLXRvbGVyYW5jZSIsICIwIl0pCiAKICAgICAgICAgcG9ydC5j
bGVhbl91cF90ZXN0X3J1bigpCkBAIC0zMjQsNyArMzI0LDcgQEAgY2xhc3MgUG9ydFRlc3RDYXNl
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKICAg
ICAgICAgcG9ydC5fc2VydmVyX3Byb2Nlc3NfY29uc3RydWN0b3IgPSBsYW1iZGEgcG9ydCwgbm0s
IGNtZCwgZW52OiBNb2NrU2VydmVyUHJvY2VzcyhsaW5lcz1bJ2RpZmY6IDEwMCUgZmFpbGVkXG4n
XSkKICAgICAgICAgaW1hZ2VfZGlmZmVyID0gSW1hZ2VEaWZmZXIocG9ydCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChpbWFnZV9kaWZmZXIuZGlmZl9pbWFnZSgnZm9vJywgJ2JhcicsIDAuMSks
ICgnJywgMTAwLjAsIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltYWdlX2RpZmZl
ci5kaWZmX2ltYWdlKCdmb28nLCAnYmFyJywgMC4xKSwgKGInJywgMTAwLjAsIE5vbmUpKQogCiAg
ICAgZGVmIHRlc3RfZGlmZl9pbWFnZV9jcmFzaGVkKHNlbGYpOgogICAgICAgICBwb3J0ID0gc2Vs
Zi5tYWtlX3BvcnQoKQpAQCAtMzQwLDcgKzM0MCw3IEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgcG9ydC5fc2VydmVyX3Byb2Nlc3NfY29uc3RydWN0
b3IgPSBtYWtlX3Byb2MKICAgICAgICAgcG9ydC5zZXR1cF90ZXN0X3J1bigpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocG9ydC5kaWZmX2ltYWdlKCdmb28nLCAnYmFyJyksICgnJywgMCwgJ0lt
YWdlRGlmZiBjcmFzaGVkXG4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmRpZmZf
aW1hZ2UoJ2ZvbycsICdiYXInKSwgKGInJywgMCwgJ0ltYWdlRGlmZiBjcmFzaGVkXG4nKSkKICAg
ICAgICAgcG9ydC5jbGVhbl91cF90ZXN0X3J1bigpCiAKICAgICBkZWYgaW50ZWdyYXRpb25fdGVz
dF93ZWJzb2NrZXRfc2VydmVyX19ub3JtYWwoc2VsZik6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>