<?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>183796</bug_id>
          
          <creation_ts>2018-03-20 13:36:46 -0700</creation_ts>
          <short_desc>Lint web-platform-tests changes with the wpt linter before exporting</short_desc>
          <delta_ts>2018-03-23 14:20:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brendan McLoughlin">brendan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dean_johnson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1407781</commentid>
    <comment_count>0</comment_count>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-03-20 13:36:46 -0700</bug_when>
    <thetext>Lint web-platform-tests changes with the wpt linter before exporting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407789</commentid>
    <comment_count>1</comment_count>
      <attachid>336148</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-03-20 13:50:41 -0700</bug_when>
    <thetext>Created attachment 336148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407791</commentid>
    <comment_count>2</comment_count>
      <attachid>336149</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-03-20 14:06:53 -0700</bug_when>
    <thetext>Created attachment 336149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407978</commentid>
    <comment_count>3</comment_count>
      <attachid>336189</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-03-21 06:52:54 -0700</bug_when>
    <thetext>Created attachment 336189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407995</commentid>
    <comment_count>4</comment_count>
      <attachid>336193</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-03-21 07:59:25 -0700</bug_when>
    <thetext>Created attachment 336193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408041</commentid>
    <comment_count>5</comment_count>
      <attachid>336193</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-21 09:09:18 -0700</bug_when>
    <thetext>Comment on attachment 336193
Patch

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

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:46
&gt; +sys.path.append(WEBKIT_WPT_DIR)

I wonder whether we have another way of doing this. Jonathan, Dean?
Maybe this explains why webkitpy bot is failing here.

Brendan, you can try to do what the bot is doing to reproduce the issue:
/Volumes/.. /Tools/Scripts/webkit-patch build-and-test --no-clean --no-update --test --non-interactive --build-style=release --group=webkitpy --port=mac

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:231
&gt; +        return filter(lambda x: x.startswith(WEBKIT_WPT_DIR), changed_files)

Is it working for all options passed to the exporter, like if a specific commit is specified?
I also wonder whether we should do the lint once we applied the patch to the wpt repo.
That would ensure that we use the latest linter from WPT and not the one from WebKit repo.

&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:235
&gt; +        repo_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir, os.pardir, os.pardir, &apos;LayoutTests&apos;, &apos;imported&apos;, &apos;w3c&apos;, &apos;web-platform-tests&apos;))

We usually try to use self._filesystem and not os.path directly.
At some point, we might also want to have check-webkit-style do some lint, so maybe there should be a dedicated class for a WPT lint wrapper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408058</commentid>
    <comment_count>6</comment_count>
      <attachid>336193</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-03-21 09:44:14 -0700</bug_when>
    <thetext>Comment on attachment 336193
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_exporter.py:46
&gt;&gt; +sys.path.append(WEBKIT_WPT_DIR)
&gt; 
&gt; I wonder whether we have another way of doing this. Jonathan, Dean?
&gt; Maybe this explains why webkitpy bot is failing here.
&gt; 
&gt; Brendan, you can try to do what the bot is doing to reproduce the issue:
&gt; /Volumes/.. /Tools/Scripts/webkit-patch build-and-test --no-clean --no-update --test --non-interactive --build-style=release --group=webkitpy --port=mac

Unless the containing script added this directory the python path, sys.path.append is probably the best way to do this. There are some other nasty import magic stuff you can do, but I think that makes things more difficult.
I believe this comment should read &apos;Add web-platform-tests to the python path so we can import the WPT lint module&apos;

You also want to do something like this to handle people running from weird directories:

WEBKIT_WPT_DIR = os.join(os.path.dirname(os.path.abspath(__file__)), &apos;..&apos;, &apos;..&apos;, &apos;..&apos;, &apos;LayoutTests&apos;, &apos;imported&apos;, &apos;w3c&apos;, &apos;web-platform-tests&apos;&apos;)
...
sys.path.append(WEBKIT_WPT_DIR)

I would also prefer that we append &apos;LayoutTests/imported/w3c&apos; and future imports would be &apos;from &lt;something WPT unique&gt;.tools.lint.lint import ....&apos; The trouble with this is that &apos;web-platform-tests&apos; is an invalid module name in Python.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408418</commentid>
    <comment_count>7</comment_count>
      <attachid>336290</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-03-22 11:14:39 -0700</bug_when>
    <thetext>Created attachment 336290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408420</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-22 11:16:27 -0700</bug_when>
    <thetext>Attachment 336290 did not pass style-queue:


ERROR: Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py:142:  [TestExporterTest.test_export] Instance of &apos;WPTLinter&apos; has no &apos;calls&apos; member (but some types could not be inferred)  [pylint/E1103] [5]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408423</commentid>
    <comment_count>9</comment_count>
      <attachid>336292</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-03-22 11:35:07 -0700</bug_when>
    <thetext>Created attachment 336292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408426</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-22 11:37:47 -0700</bug_when>
    <thetext>Attachment 336292 did not pass style-queue:


ERROR: Tools/Scripts/webkitpy/w3c/test_exporter.py:37:  No name &apos;wpt_lint&apos; in module &apos;webkitpy.w3c&apos;  [pylint/E0611] [5]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408430</commentid>
    <comment_count>11</comment_count>
      <attachid>336294</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-03-22 11:50:06 -0700</bug_when>
    <thetext>Created attachment 336294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408489</commentid>
    <comment_count>12</comment_count>
      <attachid>336294</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-22 14:24:08 -0700</bug_when>
    <thetext>Comment on attachment 336294
Patch

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

&gt; Tools/Scripts/webkitpy/w3c/wpt_linter.py:31
&gt; +    calls = []

Probably not needed.

&gt; Tools/Scripts/webkitpy/w3c/wpt_linter.py:37
&gt; +        cmd = [self.repository_directory + &apos;/wpt&apos;, &apos;lint&apos;]

We usually use webkitpy filesystem.join to concat paths appropriately.
Maybe you could pass the filesystem to the constructor and build the path there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408790</commentid>
    <comment_count>13</comment_count>
      <attachid>336294</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-03-23 11:31:30 -0700</bug_when>
    <thetext>Comment on attachment 336294
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/w3c/wpt_linter.py:31
&gt;&gt; +    calls = []
&gt; 
&gt; Probably not needed.

When I remove this line I get the following linter error:

ERROR: Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py:142:  [TestExporterTest.test_export] Instance of &apos;WPTLinter&apos; has no &apos;calls&apos; member (but some types could not be inferred)  [pylint/E1103] [5]

Here the linter wrong, since the reference to `calls` on line 142 in test_exporter_unittest.py is actually an instance of MockWPTLinter but I wasn&apos;t able to figure out a way to signal that to the linter and I&apos;m not sure why the other Mock objects used in test_exporter_unittest.py also don&apos;t trigger the same volition.

&gt;&gt; Tools/Scripts/webkitpy/w3c/wpt_linter.py:37
&gt;&gt; +        cmd = [self.repository_directory + &apos;/wpt&apos;, &apos;lint&apos;]
&gt; 
&gt; We usually use webkitpy filesystem.join to concat paths appropriately.
&gt; Maybe you could pass the filesystem to the constructor and build the path there.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408800</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-23 11:46:23 -0700</bug_when>
    <thetext>&gt; &gt;&gt; Tools/Scripts/webkitpy/w3c/wpt_linter.py:31
&gt; &gt;&gt; +    calls = []
&gt; &gt; 
&gt; &gt; Probably not needed.
&gt; 
&gt; When I remove this line I get the following linter error:
&gt; 
&gt; ERROR: Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py:142: 
&gt; [TestExporterTest.test_export] Instance of &apos;WPTLinter&apos; has no &apos;calls&apos; member
&gt; (but some types could not be inferred)  [pylint/E1103] [5]
&gt; 
&gt; Here the linter wrong, since the reference to `calls` on line 142 in
&gt; test_exporter_unittest.py is actually an instance of MockWPTLinter but I
&gt; wasn&apos;t able to figure out a way to signal that to the linter and I&apos;m not
&gt; sure why the other Mock objects used in test_exporter_unittest.py also don&apos;t
&gt; trigger the same volition.


It might be that the linter has been improved since the time we committed the changes?
Maybe you could keep the Mock linter in a variable and check its calls member directly instead of accessing through the exporter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408804</commentid>
    <comment_count>15</comment_count>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-03-23 11:54:48 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #14)
&gt; 
&gt; It might be that the linter has been improved since the time we committed
&gt; the changes?
&gt; Maybe you could keep the Mock linter in a variable and check its calls
&gt; member directly instead of accessing through the exporter.

I&apos;ll give that a try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408806</commentid>
    <comment_count>16</comment_count>
      <attachid>336399</attachid>
    <who name="Brendan McLoughlin">brendan</who>
    <bug_when>2018-03-23 11:57:20 -0700</bug_when>
    <thetext>Created attachment 336399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408872</commentid>
    <comment_count>17</comment_count>
      <attachid>336399</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-23 13:58:54 -0700</bug_when>
    <thetext>Comment on attachment 336399
Patch

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

&gt; Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py:117
&gt; +            mock_linter = self

We should probably empty self.calls otherwise it will grow for each sub test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408878</commentid>
    <comment_count>18</comment_count>
      <attachid>336399</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-23 14:08:12 -0700</bug_when>
    <thetext>Comment on attachment 336399
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py:117
&gt;&gt; +            mock_linter = self
&gt; 
&gt; We should probably empty self.calls otherwise it will grow for each sub test.

Was wrong about that, no need for emptying it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408882</commentid>
    <comment_count>19</comment_count>
      <attachid>336399</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-23 14:19:42 -0700</bug_when>
    <thetext>Comment on attachment 336399
Patch

Clearing flags on attachment: 336399

Committed r229921: &lt;https://trac.webkit.org/changeset/229921&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408883</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-23 14:19:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408884</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-23 14:20:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/38807006&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336148</attachid>
            <date>2018-03-20 13:50:41 -0700</date>
            <delta_ts>2018-03-20 14:06:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183796-20180320165039.patch</filename>
            <type>text/plain</type>
            <size>98193</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5Njc1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjE2MTY2NGUxMWM2YjUxOGI4NzkwYWNkNTcyMTJiZDU3
ODY4NzNlZC4uZDE5N2ExMmQ5ZTBhOWUxZDQ3MDVhYTEyNmMwOTdlZGE0OGRiMTYzMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE4LTAzLTIwICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgTGludCB3ZWItcGxhdGZvcm0tdGVzdHMgY2hhbmdlcyB3aXRoIHRoZSB3cHQg
bGludGVyIGJlZm9yZSBleHBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mzc5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weToK
KyAgICAgICAgKFRlc3RFeHBvcnRlci5jaGFuZ2VkX3dwdF9maWxlcyk6CisgICAgICAgIChUZXN0
RXhwb3J0ZXIpOgorICAgICAgICAoVGVzdEV4cG9ydGVyLmxpbnRfY2hhbmdlZF93cHRfZmlsZXMp
OgorICAgICAgICAoVGVzdEV4cG9ydGVyLmRvX2V4cG9ydCk6CisKIDIwMTgtMDMtMTYgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQuUmVzdG9yZVNlc3Np
b25TdGF0ZUNvbnRhaW5pbmdTY3JvbGxSZXN0b3JhdGlvbkRlZmF1bHQgQVBJIHRlc3QgaXMgZmFp
bGluZyB3aXRoIGFzeW5jIHBvbGljeSBkZWxlZ2F0ZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X2V4cG9ydGVyLnB5CmluZGV4IDhiM2Q2NjZjMjgwY2JkNWRhZmZjMTUyMDNlMzcx
NzViOGQxZmIxZWUuLjM3OGYyYzZhZWY0OTU5NWM3NmMyNjM4NGRiZGNiMmFjNzIyOTg4YmUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weQpAQCAtMjgsNiAr
MjgsNyBAQCBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9y
dCB0aW1lCitpbXBvcnQgc3lzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5n
aXQgaW1wb3J0IEdpdAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdApAQCAt
NDEsNiArNDIsOSBAQCBXRUJLSVRfV1BUX0RJUiA9ICdMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzJwogV1BUX1BSX1VSTCA9ICJodHRwczovL2dpdGh1Yi5jb20vdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9wdWxsLyIKIFdFQktJVF9FWFBPUlRfUFJfTEFCRUwgPSAnd2Vi
a2l0LWV4cG9ydCcKIAorIyBBZGQgd2Via2l0IHRvIHRoZSBweXRob24gcGF0aCBzbyB3ZSBjYW4g
aW1wb3J0IHRoZSBXUFQgbGludCBtb2R1bGUKK3N5cy5wYXRoLmFwcGVuZChXRUJLSVRfV1BUX0RJ
UikKK2Zyb20gdG9vbHMubGludC5saW50IGltcG9ydCBsaW50LCBsaW50X3BhdGhzCiAKIGNsYXNz
IFRlc3RFeHBvcnRlcihvYmplY3QpOgogCkBAIC0yMjIsNyArMjI2LDI0IEBAIGNsYXNzIFRlc3RF
eHBvcnRlcihvYmplY3QpOgogICAgICAgICBpZiBub3Qgc2VsZi5fd3B0X2ZvcmtfcmVtb3RlIGlu
IHNlbGYuX2dpdC5yZW1vdGUoW10pOgogICAgICAgICAgICAgc2VsZi5fZ2l0LnJlbW90ZShbImFk
ZCIsIHNlbGYuX3dwdF9mb3JrX3JlbW90ZSwgc2VsZi5fd3B0X2ZvcmtfcHVzaF91cmxdKQogCisg
ICAgZGVmIGNoYW5nZWRfd3B0X2ZpbGVzKHNlbGYpOgorICAgICAgICBjaGFuZ2VkX2ZpbGVzID0g
c2VsZi5faG9zdC5zY20oKS5jaGFuZ2VkX2ZpbGVzKCkKKyAgICAgICAgcmV0dXJuIGZpbHRlcihs
YW1iZGEgeDogeC5zdGFydHN3aXRoKFdFQktJVF9XUFRfRElSKSwgY2hhbmdlZF9maWxlcykKKwor
ICAgIGRlZiBsaW50X2NoYW5nZWRfd3B0X2ZpbGVzKHNlbGYpOgorICAgICAgICBoZXJlID0gb3Mu
cGF0aC5hYnNwYXRoKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdKQorICAgICAgICByZXBvX3Jv
b3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3MucGFy
ZGlyLCBvcy5wYXJkaXIsIG9zLnBhcmRpciwgJ0xheW91dFRlc3RzJywgJ2ltcG9ydGVkJywgJ3cz
YycsICd3ZWItcGxhdGZvcm0tdGVzdHMnKSkKKyAgICAgICAgdGVzdF9wYXRoID0gc2VsZi5jaGFu
Z2VkX3dwdF9maWxlcygpCisgICAgICAgIHBhdGhzID0gbGludF9wYXRocyh7J3BhdGhzJzogdGVz
dF9wYXRofSwgcmVwb19yb290KQorICAgICAgICBsaW50X2Vycm9ycyA9IGxpbnQocmVwb19yb290
LCBwYXRocywgJ25vcm1hbCcpCisKKyAgICAgICAgcmV0dXJuIGxpbnRfZXJyb3JzCisKICAgICBk
ZWYgZG9fZXhwb3J0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLmxpbnRfY2hhbmdlZF93cHRfZmls
ZXMoKToKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoIkxpbnQgZXJyb3JzIGRldGVjdGVkLiBQbGVh
c2UgYWRkcmVzcyB0aGUgYWJvdmUgZXJyb3JzIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGV4cG9ydCBj
aGFuZ2VzIHRvIHRoZSB3ZWItcGxhdGZvcm0tdGVzdCByZXBvc2l0b3J5LiIpCisgICAgICAgICAg
ICByZXR1cm4KKwogICAgICAgICBnaXRfcGF0Y2hfZmlsZSA9IHNlbGYuY3JlYXRlX2dpdF9wYXRj
aCgpCiAKICAgICAgICAgaWYgbm90IGdpdF9wYXRjaF9maWxlOgpAQCAtMjk1LDcgKzMxNiw3IEBA
IGRlZiBjb25maWd1cmVfbG9nZ2luZygpOgogICAgICAgICAgICAgICAgIHJldHVybiAiJXM6ICVz
IiAlIChyZWNvcmQubGV2ZWxuYW1lLCByZWNvcmQuZ2V0TWVzc2FnZSgpKQogICAgICAgICAgICAg
cmV0dXJuIHJlY29yZC5nZXRNZXNzYWdlKCkKIAotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKCkKKyAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2Via2l0cHkudzNjLnRlc3Rf
ZXhwb3J0ZXInKQogICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCiAgICAgaGFuZGxl
ciA9IExvZ0hhbmRsZXIoKQogICAgIGhhbmRsZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNzFjNmVkNmIwN2EwM2VlMmM1MmU1ZDIxMmEy
OTIwNGQ5MDBkZTRiNC4uOTJhZDU3MjAyODYzMjY1MjQ2YzFiN2ZmZmQyNGY4ODk3MTIzNDM0NSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMDMt
MjAgIEJyZW5kYW4gTWNMb3VnaGxpbiAgPGJyZW5kYW5AYm9jb3VwLmNvbT4KKworICAgICAgICBJ
bXBvcnQgbGludGVyIG1vZHVsZSBmcm9tIHdlYi1wbGF0Zm9ybS10ZXN0cyB0byBzdXBwb3J0aW5n
IGxpbnRpbmcgY2hhbmdlcyB3aXRoIHRoZSB3cHQgbGludGVyIGJlZm9yZSBleHBvcnRpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc5NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHk6CisgICAgICAgIChUZXN0aGFybmVzc1Rl
c3QuX19pbml0X18pOgorICAgICAgICAoVGVzdGhhcm5lc3NUZXN0Lm1ldGFfa2V5KToKKyAgICAg
ICAgKFRlc3RoYXJuZXNzVGVzdC50b19qc29uKToKKyAgICAgICAgKFRlc3RoYXJuZXNzVGVzdC5m
cm9tX2pzb24pOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9z
b3VyY2VmaWxlLnB5OgorICAgICAgICAoU291cmNlRmlsZSk6CisgICAgICAgIChTb3VyY2VGaWxl
LnRlc3Rkcml2ZXJfbm9kZXMpOgorICAgICAgICAoU291cmNlRmlsZS5oYXNfdGVzdGRyaXZlcik6
CisgICAgICAgIChTb3VyY2VGaWxlLm1hbmlmZXN0X2l0ZW1zKToKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvX19pbml0X18ucHk6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3Rfc291cmNlZmlsZS5w
eToKKwogMjAxOC0wMy0xNiAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgcmViYXNlbGluZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L19faW5pdF9fLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1ZWI1ZTEyZDVmODlmYzlmY2QwZWUxMGI2NmIxNjE0
ZDQyZGY2ODQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvX19pbml0X18ucHkKQEAgLTAsMCArMSBAQAorZnJv
bSAuIGltcG9ydCBsaW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvY29tbWFuZHMuanNvbiBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9jb21tYW5kcy5qc29uCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE4ZTk4NDRmYWZlZTk5OTgwODg0YmI0ZjUxYjIwMGQ5OTFmYTUzZmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvY29tbWFuZHMuanNvbgpAQCAtMCwwICsxLDMgQEAKK3sibGludCI6CisgeyJw
YXRoIjogImxpbnQucHkiLCAic2NyaXB0IjogIm1haW4iLCAicGFyc2VyIjogImNyZWF0ZV9wYXJz
ZXIiLCAiaGVscCI6ICJSdW4gdGhlIGxpbnQiLAorICAidmlydHVhbGVudiI6IGZhbHNlfX0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC9mbm1hdGNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L2ZubWF0Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZlM2ViMGFhOWU1YWYw
N2UxMWFkNWIwOGQ5MGY4MjliOGE1MWE1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9mbm1hdGNoLnB5CkBA
IC0wLDAgKzEsMzIgQEAKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisK
K2ltcG9ydCBmbm1hdGNoIGFzIF9zdGRsaWJfZm5tYXRjaAoraW1wb3J0IG9zCisKKworX19hbGxf
XyA9IFsiZm5tYXRjaCIsICJmbm1hdGNoY2FzZSIsICJmaWx0ZXIiLCAidHJhbnNsYXRlIl0KKwor
CitkZWYgZm5tYXRjaChuYW1lLCBwYXQpOgorICAgIG5hbWUgPSBvcy5wYXRoLm5vcm1jYXNlKG5h
bWUpCisgICAgcGF0ID0gb3MucGF0aC5ub3JtY2FzZShwYXQpCisgICAgcmV0dXJuIGZubWF0Y2hj
YXNlKG5hbWUsIHBhdCkKKworCitkZWYgZm5tYXRjaGNhc2UobmFtZSwgcGF0KToKKyAgICBpZiAn
Pycgbm90IGluIHBhdCBhbmQgJ1snIG5vdCBpbiBwYXQ6CisgICAgICAgIHdpbGRjYXJkcyA9IHBh
dC5jb3VudCgiKiIpCisgICAgICAgIGlmIHdpbGRjYXJkcyA9PSAwOgorICAgICAgICAgICAgcmV0
dXJuIG5hbWUgPT0gcGF0CisgICAgICAgIGVsaWYgd2lsZGNhcmRzID09IDEgYW5kIHBhdFswXSA9
PSAiKiI6CisgICAgICAgICAgICByZXR1cm4gbmFtZS5lbmRzd2l0aChwYXRbMTpdKQorICAgICAg
ICBlbGlmIHdpbGRjYXJkcyA9PSAxIGFuZCBwYXRbLTFdID09ICIqIjoKKyAgICAgICAgICAgIHJl
dHVybiBuYW1lLnN0YXJ0c3dpdGgocGF0WzotMV0pCisgICAgcmV0dXJuIF9zdGRsaWJfZm5tYXRj
aC5mbm1hdGNoY2FzZShuYW1lLCBwYXQpCisKKworZGVmIGZpbHRlcihuYW1lcywgcGF0KToKKyAg
ICByZXR1cm4gW24gZm9yIG4gaW4gbmFtZXMgaWYgZm5tYXRjaChuLCBwYXQpXQorCisKK3RyYW5z
bGF0ZSA9IF9zdGRsaWJfZm5tYXRjaC50cmFuc2xhdGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9saW50LnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L2xpbnQu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzFhNmNlMDJkMWUzYzI4Nzc3ODEyZTkyYzQ0ZjE4Y2VmNDljZDdkYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC9saW50LnB5CkBAIC0wLDAgKzEsODQ3IEBACitmcm9tIF9fZnV0dXJl
X18gaW1wb3J0IHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCisKK2ltcG9ydCBhYmMK
K2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGFzdAoraW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IGpz
b24KK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cwor
Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorCitmcm9tIC4gaW1wb3J0IGZu
bWF0Y2gKK2Zyb20gLi4gaW1wb3J0IGxvY2FscGF0aHMKK2Zyb20gLi5naXRpZ25vcmUuZ2l0aWdu
b3JlIGltcG9ydCBQYXRoRmlsdGVyCitmcm9tIC4ud3B0IGltcG9ydCB0ZXN0ZmlsZXMKKworZnJv
bSBtYW5pZmVzdC5zb3VyY2VmaWxlIGltcG9ydCBTb3VyY2VGaWxlLCBqc19tZXRhX3JlLCBweXRo
b25fbWV0YV9yZSwgc3BhY2VfY2hhcnMKK2Zyb20gc2l4IGltcG9ydCBiaW5hcnlfdHlwZSwgaXRl
cml0ZW1zLCBpdGVydmFsdWVzCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKK2Zyb20gc2l4
Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsc3BsaXQsIHVybGpvaW4KKworaW1wb3J0IGxv
Z2dpbmcKKworbG9nZ2VyID0gTm9uZQorCitkZWYgc2V0dXBfbG9nZ2luZyhwcmVmaXg9RmFsc2Up
OgorICAgIGdsb2JhbCBsb2dnZXIKKyAgICBpZiBsb2dnZXIgaXMgTm9uZToKKyAgICAgICAgbG9n
Z2VyID0gbG9nZ2luZy5nZXRMb2dnZXIob3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLnNwbGl0ZXh0
KF9fZmlsZV9fKVswXSkpCisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIo
c3lzLnN0ZG91dCkKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKyAgICBpZiBw
cmVmaXg6CisgICAgICAgIGZvcm1hdCA9IGxvZ2dpbmcuQkFTSUNfRk9STUFUCisgICAgZWxzZToK
KyAgICAgICAgZm9ybWF0ID0gIiUobWVzc2FnZSlzIgorICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcu
Rm9ybWF0dGVyKGZvcm1hdCkKKyAgICBmb3IgaGFuZGxlciBpbiBsb2dnZXIuaGFuZGxlcnM6Cisg
ICAgICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKKyAgICBsb2dnZXIuc2V0TGV2
ZWwobG9nZ2luZy5ERUJVRykKKworCitzZXR1cF9sb2dnaW5nKCkKKworCitFUlJPUl9NU0cgPSAi
IiJZb3UgbXVzdCBmaXggYWxsIGVycm9yczsgZm9yIGRldGFpbHMgb24gaG93IHRvIGZpeCB0aGVt
LCBzZWUKK2h0dHA6Ly93ZWItcGxhdGZvcm0tdGVzdHMub3JnL3dyaXRpbmctdGVzdHMvbGludC10
b29sLmh0bWwKKworSG93ZXZlciwgaW5zdGVhZCBvZiBmaXhpbmcgYSBwYXJ0aWN1bGFyIGVycm9y
LCBpdCdzIHNvbWV0aW1lcworT0sgdG8gYWRkIGEgbGluZSB0byB0aGUgbGludC53aGl0ZWxpc3Qg
ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUKK3dlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkgdG8g
bWFrZSB0aGUgbGludCB0b29sIGlnbm9yZSBpdC4KKworRm9yIGV4YW1wbGUsIHRvIG1ha2UgdGhl
IGxpbnQgdG9vbCBpZ25vcmUgYWxsICclcycKK2Vycm9ycyBpbiB0aGUgJXMgZmlsZSwKK3lvdSBj
b3VsZCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRoZSBsaW50LndoaXRlbGlzdCBmaWxlLgor
CislczogJXMiIiIKKworZGVmIGFsbF9maWxlc3lzdGVtX3BhdGhzKHJlcG9fcm9vdCk6CisgICAg
cGF0aF9maWx0ZXIgPSBQYXRoRmlsdGVyKHJlcG9fcm9vdCwgZXh0cmFzPVsiLmdpdC8qIl0pCisg
ICAgZm9yIGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMgaW4gb3Mud2FsayhyZXBvX3Jvb3Qp
OgorICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgorICAgICAgICAgICAgcGF0aCA9
IG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmpvaW4oZGlycGF0aCwgZmlsZW5hbWUpLCByZXBvX3Jv
b3QpCisgICAgICAgICAgICBpZiBwYXRoX2ZpbHRlcihwYXRoKToKKyAgICAgICAgICAgICAgICB5
aWVsZCBwYXRoCisgICAgICAgIGRpcm5hbWVzWzpdID0gW2l0ZW0gZm9yIGl0ZW0gaW4gZGlybmFt
ZXMgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9maWx0ZXIob3MucGF0aC5yZWxwYXRo
KG9zLnBhdGguam9pbihkaXJwYXRoLCBpdGVtKSArICIvIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9fcm9vdCkpXQorCisKK2RlZiBfYWxs
X2ZpbGVzX2VxdWFsKHBhdGhzKToKKyAgICAiIiIKKyAgICBDaGVja3MgYWxsIHRoZSBwYXRocyBh
cmUgZmlsZXMgdGhhdCBhcmUgYnl0ZS1mb3ItYnl0ZSBpZGVudGljYWwKKworICAgIDpwYXJhbSBw
YXRoczogdGhlIGxpc3Qgb2YgcGF0aHMgdG8gY29tcGFyZQorICAgIDpyZXR1cm5zOiBUcnVlIGlm
IHRoZXkgYXJlIGFsbCBpZGVudGljYWwKKyAgICAiIiIKKyAgICBwYXRocyA9IGxpc3QocGF0aHMp
CisgICAgaWYgbGVuKHBhdGhzKSA8IDI6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBmaXJz
dCA9IHBhdGhzLnBvcCgpCisgICAgc2l6ZSA9IG9zLnBhdGguZ2V0c2l6ZShmaXJzdCkKKyAgICBp
ZiBhbnkob3MucGF0aC5nZXRzaXplKHBhdGgpICE9IHNpemUgZm9yIHBhdGggaW4gcGF0aHMpOgor
ICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICMgQ2h1bmsgdGhpcyB0byBhdm9pZCBlYXRpbmcg
dXAgbWVtb3J5IGFuZCBmaWxlIGRlc2NyaXB0b3JzCisgICAgYnVmc2l6ZSA9IDQwOTYqNCAgIyAx
NktCLCBhICJyZWFzb25hYmxlIiBudW1iZXIgb2YgZGlzayBzZWN0b3JzCisgICAgZ3JvdXBzaXpl
ID0gOCAgIyBIeXBvdGhlc2lzZWQgdG8gYmUgbGFyZ2UgZW5vdWdoIGluIHRoZSBjb21tb24gY2Fz
ZSB0aGF0IGV2ZXJ5dGhpbmcgZml0cyBpbiBvbmUgZ3JvdXAKKyAgICB3aXRoIG9wZW4oZmlyc3Qs
ICJyYiIpIGFzIGZpcnN0X2Y6CisgICAgICAgIGZvciBzdGFydCBpbiByYW5nZSgwLCBsZW4ocGF0
aHMpLCBncm91cHNpemUpOgorICAgICAgICAgICAgcGF0aF9ncm91cCA9IHBhdGhzW3N0YXJ0OnN0
YXJ0K2dyb3Vwc2l6ZV0KKyAgICAgICAgICAgIGZpcnN0X2Yuc2VlaygwKQorICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgIGZpbGVzID0gW29wZW4oeCwgInJiIikgZm9yIHggaW4gcGF0
aF9ncm91cF0KKyAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZSgwLCBzaXplLCBidWZzaXpl
KToKKyAgICAgICAgICAgICAgICAgICAgYSA9IGZpcnN0X2YucmVhZChidWZzaXplKQorICAgICAg
ICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGIg
PSBmLnJlYWQoYnVmc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGEgIT0gYjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGZpbmFs
bHk6CisgICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAg
IGYuY2xvc2UoKQorCisgICAgcmV0dXJuIFRydWUKKworCitkZWYgY2hlY2tfcGF0aF9sZW5ndGgo
cmVwb19yb290LCBwYXRoKToKKyAgICBpZiBsZW4ocGF0aCkgKyAxID4gMTUwOgorICAgICAgICBy
ZXR1cm4gWygiUEFUSCBMRU5HVEgiLCAiLyVzIGxvbmdlciB0aGFuIG1heGltdW0gcGF0aCBsZW5n
dGggKCVkID4gMTUwKSIgJSAocGF0aCwgbGVuKHBhdGgpICsgMSksIHBhdGgsIE5vbmUpXQorICAg
IHJldHVybiBbXQorCisKK2RlZiBjaGVja193b3JrZXJfY29sbGlzaW9uKHJlcG9fcm9vdCwgcGF0
aCk6CisgICAgZW5kaW5ncyA9IFsoIi5hbnkuaHRtbCIsICIuYW55LmpzIiksCisgICAgICAgICAg
ICAgICAoIi5hbnkud29ya2VyLmh0bWwiLCAiLmFueS5qcyIpLAorICAgICAgICAgICAgICAgKCIu
d29ya2VyLmh0bWwiLCAiLndvcmtlci5qcyIpXQorICAgIGZvciBwYXRoX2VuZGluZywgZ2VuZXJh
dGVkIGluIGVuZGluZ3M6CisgICAgICAgIGlmIHBhdGguZW5kc3dpdGgocGF0aF9lbmRpbmcpOgor
ICAgICAgICAgICAgcmV0dXJuIFsoIldPUktFUiBDT0xMSVNJT04iLAorICAgICAgICAgICAgICAg
ICAgICAgInBhdGggZW5kcyB3aXRoICVzIHdoaWNoIGNvbGxpZGVzIHdpdGggZ2VuZXJhdGVkIHRl
c3RzIGZyb20gJXMgZmlsZXMiICUgKHBhdGhfZW5kaW5nLCBnZW5lcmF0ZWQpLAorICAgICAgICAg
ICAgICAgICAgICAgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgIE5vbmUpXQorICAgIHJldHVy
biBbXQorCisKK2RlZiBjaGVja19haGVtX2NvcHkocmVwb19yb290LCBwYXRoKToKKyAgICBscGF0
aCA9IHBhdGgubG93ZXIoKQorICAgIGlmICJhaGVtIiBpbiBscGF0aCBhbmQgbHBhdGguZW5kc3dp
dGgoIi50dGYiKToKKyAgICAgICAgcmV0dXJuIFsoIkFIRU0gQ09QWSIsICJEb24ndCBhZGQgZXh0
cmEgY29waWVzIG9mIEFoZW0sIHVzZSAvZm9udHMvQWhlbS50dGYiLCBwYXRoLCBOb25lKV0KKyAg
ICByZXR1cm4gW10KKworCitkcmFmdHNfY3Nzd2dfcmUgPSByZS5jb21waWxlKHIiaHR0cHM/XDpc
L1wvZHJhZnRzXC5jc3N3Z1wub3JnXC8oW14vPyNdKykiKQordzNjX3RyX3JlID0gcmUuY29tcGls
ZShyImh0dHBzP1w6XC9cL3d3d1wudzNjP1wub3JnXC9UUlwvKFteLz8jXSspIikKK3czY19kZXZf
cmUgPSByZS5jb21waWxlKHIiaHR0cHM/XDpcL1wvZGV2XC53M2M/XC5vcmdcL1teLz8jXStcLyhb
Xi8/I10rKSIpCisKKworZGVmIGNoZWNrX2Nzc19nbG9iYWxseV91bmlxdWUocmVwb19yb290LCBw
YXRocyk6CisgICAgIiIiCisgICAgQ2hlY2tzIHRoYXQgQ1NTIGZpbGVuYW1lcyBhcmUgc3VmZmlj
aWVudGx5IHVuaXF1ZQorCisgICAgVGhpcyBncm91cHMgZmlsZXMgYnkgcGF0aCBjbGFzc2lmeWlu
ZyB0aGVtIGFzICJ0ZXN0IiwgInJlZmVyZW5jZSIsIG9yCisgICAgInN1cHBvcnQiLgorCisgICAg
InRlc3QiIGZpbGVzIG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lIGFjcm9zcyBmaWxlcyB0aGF0IHNo
YXJlIGxpbmtzIHRvIHRoZQorICAgIHNhbWUgc3BlYy4KKworICAgICJyZWZlcmVuY2UiIGFuZCAi
c3VwcG9ydCIgZmlsZXMsIG9uIHRoZSBvdGhlciBoYW5kLCBtdXN0IGhhdmUgZ2xvYmFsbHkKKyAg
ICB1bmlxdWUgbmFtZXMuCisKKyAgICA6cGFyYW0gcmVwb19yb290OiB0aGUgcmVwb3NpdG9yeSBy
b290CisgICAgOnBhcmFtIHBhdGhzOiBsaXN0IG9mIGFsbCBwYXRocworICAgIDpyZXR1cm5zOiBh
IGxpc3Qgb2YgZXJyb3JzIGZvdW5kIGluIGBgcGF0aHNgYAorCisgICAgIiIiCisgICAgdGVzdF9m
aWxlcyA9IGRlZmF1bHRkaWN0KHNldCkKKyAgICByZWZfZmlsZXMgPSBkZWZhdWx0ZGljdChzZXQp
CisgICAgc3VwcG9ydF9maWxlcyA9IGRlZmF1bHRkaWN0KHNldCkKKworICAgIGZvciBwYXRoIGlu
IHBhdGhzOgorICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CisgICAgICAgICAgICBwYXRoID0g
cGF0aC5yZXBsYWNlKCJcXCIsICIvIikKKworICAgICAgICBpZiBub3QgcGF0aC5zdGFydHN3aXRo
KCJjc3MvIik6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHNvdXJjZV9maWxlID0g
U291cmNlRmlsZShyZXBvX3Jvb3QsIHBhdGgsICIvIikKKyAgICAgICAgaWYgc291cmNlX2ZpbGUu
bmFtZV9pc19ub25fdGVzdDoKKyAgICAgICAgICAgICMgSWYgd2UncmUgbmFtZV9pc19ub25fdGVz
dCBmb3IgYSByZWFzb24gYXBhcnQgZnJvbSBzdXBwb3J0LCBpZ25vcmUgaXQuCisgICAgICAgICAg
ICAjIFdlIGNhcmUgYWJvdXQgc3VwcG9ydCBiZWNhdXNlIG9mIHRoZSByZXF1aXJlbWVudCBhbGwg
c3VwcG9ydCBmaWxlcyBpbiBjc3MvIHRvIGJlIGluCisgICAgICAgICAgICAjIGEgc3VwcG9ydCBk
aXJlY3Rvcnk7IHNlZSB0aGUgc3RhcnQgb2YgY2hlY2tfcGFyc2VkLgorICAgICAgICAgICAgb2Zm
c2V0ID0gcGF0aC5maW5kKCIvc3VwcG9ydC8iKQorICAgICAgICAgICAgaWYgb2Zmc2V0ID09IC0x
OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHBhcnRzID0gc291cmNl
X2ZpbGUuZGlyX3BhdGguc3BsaXQob3MucGF0aC5zZXApCisgICAgICAgICAgICBpZiAocGFydHNb
MF0gaW4gc291cmNlX2ZpbGUucm9vdF9kaXJfbm9uX3Rlc3Qgb3IKKyAgICAgICAgICAgICAgICBh
bnkoaXRlbSBpbiBzb3VyY2VfZmlsZS5kaXJfbm9uX3Rlc3QgLSB7InN1cHBvcnQifSBmb3IgaXRl
bSBpbiBwYXJ0cykgb3IKKyAgICAgICAgICAgICAgICBhbnkocGFydHNbOmxlbihub25fdGVzdF9w
YXRoKV0gPT0gbGlzdChub25fdGVzdF9wYXRoKSBmb3Igbm9uX3Rlc3RfcGF0aCBpbiBzb3VyY2Vf
ZmlsZS5kaXJfcGF0aF9ub25fdGVzdCkpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAg
ICAgICAgICAgIG5hbWUgPSBwYXRoW29mZnNldCsxOl0KKyAgICAgICAgICAgIHN1cHBvcnRfZmls
ZXNbbmFtZV0uYWRkKHBhdGgpCisgICAgICAgIGVsaWYgc291cmNlX2ZpbGUubmFtZV9pc19yZWZl
cmVuY2U6CisgICAgICAgICAgICByZWZfZmlsZXNbc291cmNlX2ZpbGUubmFtZV0uYWRkKHBhdGgp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXN0X2ZpbGVzW3NvdXJjZV9maWxlLm5hbWVd
LmFkZChwYXRoKQorCisgICAgZXJyb3JzID0gW10KKworICAgIGZvciBuYW1lLCBjb2xsaWRpbmcg
aW4gaXRlcml0ZW1zKHRlc3RfZmlsZXMpOgorICAgICAgICBpZiBsZW4oY29sbGlkaW5nKSA+IDE6
CisgICAgICAgICAgICBpZiBub3QgX2FsbF9maWxlc19lcXVhbChbb3MucGF0aC5qb2luKHJlcG9f
cm9vdCwgeCkgZm9yIHggaW4gY29sbGlkaW5nXSk6CisgICAgICAgICAgICAgICAgIyBPbmx5IGNv
bXB1dGUgYnlfc3BlYyBpZiB0aGVyZSBhcmUgcHJpbWEtZmFjaWUgY29sbGlzaW9ucyBiZWNhdXNl
IG9mIGNvc3QKKyAgICAgICAgICAgICAgICBieV9zcGVjID0gZGVmYXVsdGRpY3Qoc2V0KQorICAg
ICAgICAgICAgICAgIGZvciBwYXRoIGluIGNvbGxpZGluZzoKKyAgICAgICAgICAgICAgICAgICAg
c291cmNlX2ZpbGUgPSBTb3VyY2VGaWxlKHJlcG9fcm9vdCwgcGF0aCwgIi8iKQorICAgICAgICAg
ICAgICAgICAgICBmb3IgbGluayBpbiBzb3VyY2VfZmlsZS5zcGVjX2xpbmtzOgorICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yIHIgaW4gKGRyYWZ0c19jc3N3Z19yZSwgdzNjX3RyX3JlLCB3M2Nf
ZGV2X3JlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gci5tYXRjaChsaW5rKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNwZWMgPSBtLmdyb3VwKDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBieV9zcGVjW3Nw
ZWNdLmFkZChwYXRoKQorCisgICAgICAgICAgICAgICAgZm9yIHNwZWMsIHBhdGhzIGluIGl0ZXJp
dGVtcyhieV9zcGVjKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9hbGxfZmlsZXNfZXF1
YWwoW29zLnBhdGguam9pbihyZXBvX3Jvb3QsIHgpIGZvciB4IGluIHBhdGhzXSk6CisgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXRoczoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcnMuYXBwZW5kKCgiQ1NTLUNPTExJRElORy1URVNULU5BTUUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsZW5hbWUgJXMgaW4gdGhl
ICVzIHRlc3RzdWl0ZSBpcyBzaGFyZWQgYnk6ICVzIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICUgKG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiLCAiLmpvaW4oc29ydGVkKHBhdGhzKSkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTm9uZSkpCisKKyAgICBmb3IgZXJyb3JfbmFtZSwgZCBpbiBbKCJD
U1MtQ09MTElESU5HLVJFRi1OQU1FIiwgcmVmX2ZpbGVzKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCJDU1MtQ09MTElESU5HLVNVUFBPUlQtTkFNRSIsIHN1cHBvcnRfZmlsZXMpXToKKyAg
ICAgICAgZm9yIG5hbWUsIGNvbGxpZGluZyBpbiBpdGVyaXRlbXMoZCk6CisgICAgICAgICAgICBp
ZiBsZW4oY29sbGlkaW5nKSA+IDE6CisgICAgICAgICAgICAgICAgaWYgbm90IF9hbGxfZmlsZXNf
ZXF1YWwoW29zLnBhdGguam9pbihyZXBvX3Jvb3QsIHgpIGZvciB4IGluIGNvbGxpZGluZ10pOgor
ICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBjb2xsaWRpbmc6CisgICAgICAgICAgICAgICAg
ICAgICAgICBlcnJvcnMuYXBwZW5kKChlcnJvcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlRoZSBmaWxlbmFtZSAlcyBpcyBzaGFyZWQgYnk6ICVzIiAlIChu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLmpvaW4oc29ydGVkKGNvbGxpZGluZykpKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKSkKKworICAgIHJldHVybiBlcnJvcnMKKwor
CitkZWYgcGFyc2Vfd2hpdGVsaXN0KGYpOgorICAgICIiIgorICAgIFBhcnNlIHRoZSB3aGl0ZWxp
c3QgZmlsZSBnaXZlbiBieSBgZmAsIGFuZCByZXR1cm4gdGhlIHBhcnNlZCBzdHJ1Y3R1cmUuCisg
ICAgIiIiCisKKyAgICBkYXRhID0gZGVmYXVsdGRpY3QobGFtYmRhOmRlZmF1bHRkaWN0KHNldCkp
CisgICAgaWdub3JlZF9maWxlcyA9IHNldCgpCisKKyAgICBmb3IgbGluZSBpbiBmOgorICAgICAg
ICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBsaW5lIG9yIGxpbmUuc3RhcnRz
d2l0aCgiIyIpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcGFydHMgPSBbaXRlbS5z
dHJpcCgpIGZvciBpdGVtIGluIGxpbmUuc3BsaXQoIjoiKV0KKyAgICAgICAgaWYgbGVuKHBhcnRz
KSA9PSAyOgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKE5vbmUpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBwYXJ0c1stMV0gPSBpbnQocGFydHNbLTFdKQorCisgICAgICAgIGVycm9yX3R5
cGVzLCBmaWxlX21hdGNoLCBsaW5lX251bWJlciA9IHBhcnRzCisgICAgICAgIGVycm9yX3R5cGVz
ID0ge2l0ZW0uc3RyaXAoKSBmb3IgaXRlbSBpbiBlcnJvcl90eXBlcy5zcGxpdCgiLCIpfQorICAg
ICAgICBmaWxlX21hdGNoID0gb3MucGF0aC5ub3JtY2FzZShmaWxlX21hdGNoKQorCisgICAgICAg
IGlmICIqIiBpbiBlcnJvcl90eXBlczoKKyAgICAgICAgICAgIGlnbm9yZWRfZmlsZXMuYWRkKGZp
bGVfbWF0Y2gpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3IgZXJyb3JfdHlwZSBpbiBl
cnJvcl90eXBlczoKKyAgICAgICAgICAgICAgICBkYXRhW2Vycm9yX3R5cGVdW2ZpbGVfbWF0Y2hd
LmFkZChsaW5lX251bWJlcikKKworICAgIHJldHVybiBkYXRhLCBpZ25vcmVkX2ZpbGVzCisKKwor
ZGVmIGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKGRhdGEsIGVycm9ycyk6CisgICAgIiIiCisgICAg
RmlsdGVyIG91dCB0aG9zZSBlcnJvcnMgdGhhdCBhcmUgd2hpdGVsaXN0ZWQgaW4gYGRhdGFgLgor
ICAgICIiIgorCisgICAgaWYgbm90IGVycm9yczoKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICB3
aGl0ZWxpc3RlZCA9IFtGYWxzZSBmb3IgaXRlbSBpbiByYW5nZShsZW4oZXJyb3JzKSldCisKKyAg
ICBmb3IgaSwgKGVycm9yX3R5cGUsIG1zZywgcGF0aCwgbGluZSkgaW4gZW51bWVyYXRlKGVycm9y
cyk6CisgICAgICAgIG5vcm1wYXRoID0gb3MucGF0aC5ub3JtY2FzZShwYXRoKQorICAgICAgICBp
ZiBlcnJvcl90eXBlIGluIGRhdGE6CisgICAgICAgICAgICB3bF9maWxlcyA9IGRhdGFbZXJyb3Jf
dHlwZV0KKyAgICAgICAgICAgIGZvciBmaWxlX21hdGNoLCBhbGxvd2VkX2xpbmVzIGluIGl0ZXJp
dGVtcyh3bF9maWxlcyk6CisgICAgICAgICAgICAgICAgaWYgTm9uZSBpbiBhbGxvd2VkX2xpbmVz
IG9yIGxpbmUgaW4gYWxsb3dlZF9saW5lczoKKyAgICAgICAgICAgICAgICAgICAgaWYgZm5tYXRj
aC5mbm1hdGNoY2FzZShub3JtcGF0aCwgZmlsZV9tYXRjaCk6CisgICAgICAgICAgICAgICAgICAg
ICAgICB3aGl0ZWxpc3RlZFtpXSA9IFRydWUKKworICAgIHJldHVybiBbaXRlbSBmb3IgaSwgaXRl
bSBpbiBlbnVtZXJhdGUoZXJyb3JzKSBpZiBub3Qgd2hpdGVsaXN0ZWRbaV1dCisKK2NsYXNzIFJl
Z2V4cChvYmplY3QpOgorICAgIHBhdHRlcm4gPSBOb25lCisgICAgZmlsZV9leHRlbnNpb25zID0g
Tm9uZQorICAgIGVycm9yID0gTm9uZQorICAgIF9yZSA9IE5vbmUKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKKyAgICAgICAgc2VsZi5fcmUgPSByZS5jb21waWxlKHNlbGYucGF0dGVybikKKwor
ICAgIGRlZiBhcHBsaWVzKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gKHNlbGYuZmlsZV9l
eHRlbnNpb25zIGlzIE5vbmUgb3IKKyAgICAgICAgICAgICAgICBvcy5wYXRoLnNwbGl0ZXh0KHBh
dGgpWzFdIGluIHNlbGYuZmlsZV9leHRlbnNpb25zKQorCisgICAgZGVmIHNlYXJjaChzZWxmLCBs
aW5lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlLnNlYXJjaChsaW5lKQorCitjbGFzcyBUcmFp
bGluZ1doaXRlc3BhY2VSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0ZXJuID0gYiJbIFx0XGZcdl0k
IgorICAgIGVycm9yID0gIlRSQUlMSU5HIFdISVRFU1BBQ0UiCisgICAgZGVzY3JpcHRpb24gPSAi
V2hpdGVzcGFjZSBhdCBFT0wiCisKK2NsYXNzIFRhYnNSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0
ZXJuID0gYiJeXHQiCisgICAgZXJyb3IgPSAiSU5ERU5UIFRBQlMiCisgICAgZGVzY3JpcHRpb24g
PSAiVGFicyB1c2VkIGZvciBpbmRlbnRhdGlvbiIKKworY2xhc3MgQ1JSZWdleHAoUmVnZXhwKToK
KyAgICBwYXR0ZXJuID0gYiJcciQiCisgICAgZXJyb3IgPSAiQ1IgQVQgRU9MIgorICAgIGRlc2Ny
aXB0aW9uID0gIkNSIGNoYXJhY3RlciBpbiBsaW5lIHNlcGFyYXRvciIKKworY2xhc3MgU2V0VGlt
ZW91dFJlZ2V4cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBiInNldFRpbWVvdXRccypcKCIKKyAg
ICBlcnJvciA9ICJTRVQgVElNRU9VVCIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwg
Ii5odG0iLCAiLmpzIiwgIi54aHQiLCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRlc2NyaXB0aW9u
ID0gInNldFRpbWVvdXQgdXNlZDsgc3RlcF90aW1lb3V0IHNob3VsZCB0eXBpY2FsbHkgYmUgdXNl
ZCBpbnN0ZWFkIgorCitjbGFzcyBXM0NUZXN0T3JnUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVy
biA9IGIidzNjXC10ZXN0XC5vcmciCisgICAgZXJyb3IgPSAiVzNDLVRFU1QuT1JHIgorICAgIGRl
c2NyaXB0aW9uID0gIkV4dGVybmFsIHczYy10ZXN0Lm9yZyBkb21haW4gdXNlZCIKKworY2xhc3Mg
V2ViUGxhdGZvcm1UZXN0UmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGIid2ViXC1wbGF0
Zm9ybVwudGVzdCIKKyAgICBlcnJvciA9ICJXRUItUExBVEZPUk0uVEVTVCIKKyAgICBkZXNjcmlw
dGlvbiA9ICJJbnRlcm5hbCB3ZWItcGxhdGZvcm0udGVzdCBkb21haW4gdXNlZCIKKworY2xhc3Mg
V2ViaWRsMlJlZ2V4cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBiIndlYmlkbDJcLmpzIgorICAg
IGVycm9yID0gIldFQklETDIuSlMiCisgICAgZGVzY3JpcHRpb24gPSAiTGVnYWN5IHdlYmlkbDIu
anMgc2NyaXB0IHVzZWQiCisKK2NsYXNzIENvbnNvbGVSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0
ZXJuID0gYiJjb25zb2xlXC5bYS16QS1aXStccypcKCIKKyAgICBlcnJvciA9ICJDT05TT0xFIgor
ICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsiLmh0bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIsICIu
eGh0bWwiLCAiLnN2ZyJdCisgICAgZGVzY3JpcHRpb24gPSAiQ29uc29sZSBsb2dnaW5nIEFQSSB1
c2VkIgorCitjbGFzcyBHZW5lcmF0ZVRlc3RzUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9
IGIiZ2VuZXJhdGVfdGVzdHNccypcKCIKKyAgICBlcnJvciA9ICJHRU5FUkFURV9URVNUUyIKKyAg
ICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0iLCAiLmpzIiwgIi54aHQiLCAiLnho
dG1sIiwgIi5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gImdlbmVyYXRlX3Rlc3RzIHVzZWQiCisK
K2NsYXNzIFByaW50UmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGIicHJpbnQoPzpcc3xc
cypcKCkiCisgICAgZXJyb3IgPSAiUFJJTlQgU1RBVEVNRU5UIgorICAgIGZpbGVfZXh0ZW5zaW9u
cyA9IFsiLnB5Il0KKyAgICBkZXNjcmlwdGlvbiA9ICJQcmludCBmdW5jdGlvbiB1c2VkIgorCitj
bGFzcyBMYXlvdXRUZXN0c1JlZ2V4cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBiImV2ZW50U2Vu
ZGVyfHRlc3RSdW5uZXJ8d2luZG93XC5pbnRlcm5hbHMiCisgICAgZXJyb3IgPSAiTEFZT1VUVEVT
VFMgQVBJUyIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0iLCAiLmpzIiwg
Ii54aHQiLCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gImV2ZW50U2VuZGVy
L3Rlc3RSdW5uZXIvd2luZG93LmludGVybmFscyB1c2VkOyB0aGVzZSBhcmUgTGF5b3V0VGVzdHMt
c3BlY2lmaWMgQVBJcyAoV2ViS2l0L0JsaW5rKSIKKworY2xhc3MgU3BlY2lhbFBvd2Vyc1JlZ2V4
cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBiIlNwZWNpYWxQb3dlcnMiCisgICAgZXJyb3IgPSAi
U1BFQ0lBTFBPV0VSUyBBUEkiCisgICAgZmlsZV9leHRlbnNpb25zID0gWyIuaHRtbCIsICIuaHRt
IiwgIi5qcyIsICIueGh0IiwgIi54aHRtbCIsICIuc3ZnIl0KKyAgICBkZXNjcmlwdGlvbiA9ICJT
cGVjaWFsUG93ZXJzIHVzZWQ7IHRoaXMgaXMgZ2Vja28tc3BlY2lmaWMgYW5kIG5vdCBzdXBwb3J0
ZWQgaW4gd3B0IgorCisKK3JlZ2V4cHMgPSBbaXRlbSgpIGZvciBpdGVtIGluCisgICAgICAgICAg
IFtUcmFpbGluZ1doaXRlc3BhY2VSZWdleHAsCisgICAgICAgICAgICBUYWJzUmVnZXhwLAorICAg
ICAgICAgICAgQ1JSZWdleHAsCisgICAgICAgICAgICBTZXRUaW1lb3V0UmVnZXhwLAorICAgICAg
ICAgICAgVzNDVGVzdE9yZ1JlZ2V4cCwKKyAgICAgICAgICAgIFdlYlBsYXRmb3JtVGVzdFJlZ2V4
cCwKKyAgICAgICAgICAgIFdlYmlkbDJSZWdleHAsCisgICAgICAgICAgICBDb25zb2xlUmVnZXhw
LAorICAgICAgICAgICAgR2VuZXJhdGVUZXN0c1JlZ2V4cCwKKyAgICAgICAgICAgIFByaW50UmVn
ZXhwLAorICAgICAgICAgICAgTGF5b3V0VGVzdHNSZWdleHAsCisgICAgICAgICAgICBTcGVjaWFs
UG93ZXJzUmVnZXhwXV0KKworZGVmIGNoZWNrX3JlZ2V4cF9saW5lKHJlcG9fcm9vdCwgcGF0aCwg
Zik6CisgICAgZXJyb3JzID0gW10KKworICAgIGFwcGxpY2FibGVfcmVnZXhwcyA9IFtyZWdleHAg
Zm9yIHJlZ2V4cCBpbiByZWdleHBzIGlmIHJlZ2V4cC5hcHBsaWVzKHBhdGgpXQorCisgICAgZm9y
IGksIGxpbmUgaW4gZW51bWVyYXRlKGYpOgorICAgICAgICBmb3IgcmVnZXhwIGluIGFwcGxpY2Fi
bGVfcmVnZXhwczoKKyAgICAgICAgICAgIGlmIHJlZ2V4cC5zZWFyY2gobGluZSk6CisgICAgICAg
ICAgICAgICAgZXJyb3JzLmFwcGVuZCgocmVnZXhwLmVycm9yLCByZWdleHAuZGVzY3JpcHRpb24s
IHBhdGgsIGkrMSkpCisKKyAgICByZXR1cm4gZXJyb3JzCisKK2RlZiBjaGVja19wYXJzZWQocmVw
b19yb290LCBwYXRoLCBmKToKKyAgICBzb3VyY2VfZmlsZSA9IFNvdXJjZUZpbGUocmVwb19yb290
LCBwYXRoLCAiLyIsIGNvbnRlbnRzPWYucmVhZCgpKQorCisgICAgZXJyb3JzID0gW10KKworICAg
IGlmIHBhdGguc3RhcnRzd2l0aCgiY3NzLyIpOgorICAgICAgICBpZiAoc291cmNlX2ZpbGUudHlw
ZSA9PSAic3VwcG9ydCIgYW5kCisgICAgICAgICAgICBub3Qgc291cmNlX2ZpbGUubmFtZV9pc19u
b25fdGVzdCBhbmQKKyAgICAgICAgICAgIG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX3JlZmVyZW5j
ZSk6CisgICAgICAgICAgICByZXR1cm4gWygiU1VQUE9SVC1XUk9ORy1ESVIiLCAiU3VwcG9ydCBm
aWxlIG5vdCBpbiBzdXBwb3J0IGRpcmVjdG9yeSIsIHBhdGgsIE5vbmUpXQorCisgICAgICAgIGlm
IChzb3VyY2VfZmlsZS50eXBlICE9ICJzdXBwb3J0IiBhbmQKKyAgICAgICAgICAgIG5vdCBzb3Vy
Y2VfZmlsZS5uYW1lX2lzX3JlZmVyZW5jZSBhbmQKKyAgICAgICAgICAgIG5vdCBzb3VyY2VfZmls
ZS5zcGVjX2xpbmtzKToKKyAgICAgICAgICAgIHJldHVybiBbKCJNSVNTSU5HLUxJTksiLCAiVGVz
dGNhc2UgZmlsZSBtdXN0IGhhdmUgYSBsaW5rIHRvIGEgc3BlYyIsIHBhdGgsIE5vbmUpXQorCisg
ICAgaWYgc291cmNlX2ZpbGUubmFtZV9pc19ub25fdGVzdCBvciBzb3VyY2VfZmlsZS5uYW1lX2lz
X21hbnVhbDoKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBpZiBzb3VyY2VfZmlsZS5tYXJrdXBf
dHlwZSBpcyBOb25lOgorICAgICAgICByZXR1cm4gW10KKworICAgIGlmIHNvdXJjZV9maWxlLnJv
b3QgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIFsoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8g
cGFyc2UgZmlsZSIsIHBhdGgsIE5vbmUpXQorCisgICAgaWYgc291cmNlX2ZpbGUudHlwZSA9PSAi
bWFudWFsIiBhbmQgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfbWFudWFsOgorICAgICAgICByZXR1
cm4gWygiQ09OVEVOVC1NQU5VQUwiLCAiTWFudWFsIHRlc3Qgd2hvc2UgZmlsZW5hbWUgZG9lc24n
dCBlbmQgaW4gJy1tYW51YWwnIiwgcGF0aCwgTm9uZSldCisKKyAgICBpZiBzb3VyY2VfZmlsZS50
eXBlID09ICJ2aXN1YWwiIGFuZCBub3Qgc291cmNlX2ZpbGUubmFtZV9pc192aXN1YWw6CisgICAg
ICAgIHJldHVybiBbKCJDT05URU5ULVZJU1VBTCIsICJWaXN1YWwgdGVzdCB3aG9zZSBmaWxlbmFt
ZSBkb2Vzbid0IGVuZCBpbiAnLXZpc3VhbCciLCBwYXRoLCBOb25lKV0KKworICAgIGZvciByZWZ0
ZXN0X25vZGUgaW4gc291cmNlX2ZpbGUucmVmdGVzdF9ub2RlczoKKyAgICAgICAgaHJlZiA9IHJl
ZnRlc3Rfbm9kZS5hdHRyaWIuZ2V0KCJocmVmIiwgIiIpLnN0cmlwKHNwYWNlX2NoYXJzKQorICAg
ICAgICBwYXJ0cyA9IHVybHNwbGl0KGhyZWYpCisgICAgICAgIGlmIHBhcnRzLnNjaGVtZSBvciBw
YXJ0cy5uZXRsb2M6CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgiQUJTT0xVVEUtVVJMLVJF
RiIsCisgICAgICAgICAgICAgICAgICAgICAiUmVmZXJlbmNlIHRlc3Qgd2l0aCBhIHJlZmVyZW5j
ZSBmaWxlIHNwZWNpZmllZCB2aWEgYW4gYWJzb2x1dGUgVVJMOiAnJXMnIiAlIGhyZWYsIHBhdGgs
IE5vbmUpKQorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICByZWZfdXJsID0gdXJsam9p
bihzb3VyY2VfZmlsZS51cmwsIGhyZWYpCisgICAgICAgIHJlZl9wYXJ0cyA9IHVybHNwbGl0KHJl
Zl91cmwpCisKKyAgICAgICAgaWYgc291cmNlX2ZpbGUudXJsID09IHJlZl91cmw6CisgICAgICAg
ICAgICBlcnJvcnMuYXBwZW5kKCgiU0FNRS1GSUxFLVJFRiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiUmVmZXJlbmNlIHRlc3Qgd2hpY2ggcG9pbnRzIGF0IGl0c2VsZiBhcyBhIHJlZmVy
ZW5jZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTm9uZSkpCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGFzc2Vy
dCByZWZfcGFydHMucGF0aCAhPSAiIgorCisgICAgICAgIHJlZmVyZW5jZV9maWxlID0gb3MucGF0
aC5qb2luKHJlcG9fcm9vdCwgcmVmX3BhcnRzLnBhdGhbMTpdKQorICAgICAgICByZWZlcmVuY2Vf
cmVsID0gcmVmdGVzdF9ub2RlLmF0dHJpYi5nZXQoInJlbCIsICIiKQorCisgICAgICAgIGlmIG5v
dCBvcy5wYXRoLmlzZmlsZShyZWZlcmVuY2VfZmlsZSk6CisgICAgICAgICAgICBlcnJvcnMuYXBw
ZW5kKCgiTk9OLUVYSVNURU5ULVJFRiIsCisgICAgICAgICAgICAgICAgICAgICAiUmVmZXJlbmNl
IHRlc3Qgd2l0aCBhIG5vbi1leGlzdGVudCAnJXMnIHJlbGF0aW9uc2hpcCByZWZlcmVuY2U6ICcl
cyciICUgKHJlZmVyZW5jZV9yZWwsIGhyZWYpLCBwYXRoLCBOb25lKSkKKworICAgIGlmIGxlbihz
b3VyY2VfZmlsZS50aW1lb3V0X25vZGVzKSA+IDE6CisgICAgICAgIGVycm9ycy5hcHBlbmQoKCJN
VUxUSVBMRS1USU1FT1VUIiwgIk1vcmUgdGhhbiBvbmUgbWV0YSBuYW1lPSd0aW1lb3V0JyIsIHBh
dGgsIE5vbmUpKQorCisgICAgZm9yIHRpbWVvdXRfbm9kZSBpbiBzb3VyY2VfZmlsZS50aW1lb3V0
X25vZGVzOgorICAgICAgICB0aW1lb3V0X3ZhbHVlID0gdGltZW91dF9ub2RlLmF0dHJpYi5nZXQo
ImNvbnRlbnQiLCAiIikubG93ZXIoKQorICAgICAgICBpZiB0aW1lb3V0X3ZhbHVlICE9ICJsb25n
IjoKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJJTlZBTElELVRJTUVPVVQiLCAiSW52YWxp
ZCB0aW1lb3V0IHZhbHVlICVzIiAlIHRpbWVvdXRfdmFsdWUsIHBhdGgsIE5vbmUpKQorCisgICAg
aWYgc291cmNlX2ZpbGUudGVzdGhhcm5lc3Nfbm9kZXM6CisgICAgICAgIGlmIGxlbihzb3VyY2Vf
ZmlsZS50ZXN0aGFybmVzc19ub2RlcykgPiAxOgorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgo
Ik1VTFRJUExFLVRFU1RIQVJORVNTIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3Jl
IHRoYW4gb25lIDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz4iLCBwYXRo
LCBOb25lKSkKKworICAgICAgICB0ZXN0aGFybmVzc3JlcG9ydF9ub2RlcyA9IHNvdXJjZV9maWxl
LnJvb3QuZmluZGFsbCgiLi8ve2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWx9c2NyaXB0W0Bz
cmM9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnXSIpCisgICAgICAgIGlmIG5vdCB0
ZXN0aGFybmVzc3JlcG9ydF9ub2RlczoKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJNSVNT
SU5HLVRFU1RIQVJORVNTUkVQT1JUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaXNz
aW5nIDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz4iLCBwYXRo
LCBOb25lKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGxlbih0ZXN0aGFybmVzc3Jl
cG9ydF9ub2RlcykgPiAxOgorICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJNVUxUSVBM
RS1URVNUSEFSTkVTU1JFUE9SVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1v
cmUgdGhhbiBvbmUgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMn
PiIsIHBhdGgsIE5vbmUpKQorCisgICAgICAgIHRlc3RoYXJuZXNzY3NzX25vZGVzID0gc291cmNl
X2ZpbGUucm9vdC5maW5kYWxsKCIuLy97aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbH1saW5r
W0BocmVmPScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyddIikKKyAgICAgICAgaWYgdGVzdGhh
cm5lc3Njc3Nfbm9kZXM6CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgiUFJFU0VOVC1URVNU
SEFSTkVTU0NTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwbGljaXQgbGluayB0
byB0ZXN0aGFybmVzcy5jc3MgcHJlc2VudCIsIHBhdGgsIE5vbmUpKQorCisgICAgICAgIGZvciBl
bGVtZW50IGluIHNvdXJjZV9maWxlLnZhcmlhbnRfbm9kZXM6CisgICAgICAgICAgICBpZiAiY29u
dGVudCIgbm90IGluIGVsZW1lbnQuYXR0cmliOgorICAgICAgICAgICAgICAgIGVycm9ycy5hcHBl
bmQoKCJWQVJJQU5ULU1JU1NJTkciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8
bWV0YSBuYW1lPXZhcmlhbnQ+IG1pc3NpbmcgJ2NvbnRlbnQnIGF0dHJpYnV0ZSIsIHBhdGgsIE5v
bmUpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB2YXJpYW50ID0gZWxlbWVu
dC5hdHRyaWJbImNvbnRlbnQiXQorICAgICAgICAgICAgICAgIGlmIHZhcmlhbnQgIT0gIiIgYW5k
IHZhcmlhbnRbMF0gbm90IGluICgiPyIsICIjIik6CisgICAgICAgICAgICAgICAgICAgIGVycm9y
cy5hcHBlbmQoKCJNQUxGT1JNRUQtVkFSSUFOVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiVzIDxtZXRhIG5hbWU9dmFyaWFudD4gJ2NvbnRlbnQnIGF0dHJpYnV0ZSBtdXN0IGJl
IHRoZSBlbXB0eSBzdHJpbmcgb3Igc3RhcnQgd2l0aCAnPycgb3IgJyMnIiAlIHBhdGgsIE5vbmUp
KQorCisgICAgICAgIHNlZW5fZWxlbWVudHMgPSB7InRpbWVvdXQiOiBGYWxzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAidGVzdGhhcm5lc3MiOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAidGVzdGhhcm5lc3NyZXBvcnQiOiBGYWxzZX0KKyAgICAgICAgcmVxdWlyZWRfZWxl
bWVudHMgPSBba2V5IGZvciBrZXksIHZhbHVlIGluIHsidGVzdGhhcm5lc3MiOiBUcnVlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0aGFy
bmVzc3JlcG9ydCI6IGxlbih0ZXN0aGFybmVzc3JlcG9ydF9ub2RlcykgPiAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IjogbGVu
KHNvdXJjZV9maWxlLnRpbWVvdXRfbm9kZXMpID4gMH0uaXRlbXMoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiB2YWx1ZV0KKworICAgICAgICBmb3IgZWxlbSBpbiBzb3VyY2VfZmls
ZS5yb290Lml0ZXIoKToKKyAgICAgICAgICAgIGlmIHNvdXJjZV9maWxlLnRpbWVvdXRfbm9kZXMg
YW5kIGVsZW0gPT0gc291cmNlX2ZpbGUudGltZW91dF9ub2Rlc1swXToKKyAgICAgICAgICAgICAg
ICBzZWVuX2VsZW1lbnRzWyJ0aW1lb3V0Il0gPSBUcnVlCisgICAgICAgICAgICAgICAgaWYgc2Vl
bl9lbGVtZW50c1sidGVzdGhhcm5lc3MiXToKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFw
cGVuZCgoIkxBVEUtVElNRU9VVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICI8bWV0YSBuYW1lPXRpbWVvdXQ+IHNlZW4gYWZ0ZXIgdGVzdGhhcm5lc3MuanMgc2NyaXB0Iiwg
cGF0aCwgTm9uZSkpCisKKyAgICAgICAgICAgIGVsaWYgZWxlbSA9PSBzb3VyY2VfZmlsZS50ZXN0
aGFybmVzc19ub2Rlc1swXToKKyAgICAgICAgICAgICAgICBzZWVuX2VsZW1lbnRzWyJ0ZXN0aGFy
bmVzcyJdID0gVHJ1ZQorCisgICAgICAgICAgICBlbGlmIHRlc3RoYXJuZXNzcmVwb3J0X25vZGVz
IGFuZCBlbGVtID09IHRlc3RoYXJuZXNzcmVwb3J0X25vZGVzWzBdOgorICAgICAgICAgICAgICAg
IHNlZW5fZWxlbWVudHNbInRlc3RoYXJuZXNzcmVwb3J0Il0gPSBUcnVlCisgICAgICAgICAgICAg
ICAgaWYgbm90IHNlZW5fZWxlbWVudHNbInRlc3RoYXJuZXNzIl06CisgICAgICAgICAgICAgICAg
ICAgIGVycm9ycy5hcHBlbmQoKCJFQVJMWS1URVNUSEFSTkVTU1JFUE9SVCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0aGFybmVzc3JlcG9ydC5qcyBzY3JpcHQgc2Vl
biBiZWZvcmUgdGVzdGhhcm5lc3MuanMgc2NyaXB0IiwgcGF0aCwgTm9uZSkpCisKKyAgICAgICAg
ICAgIGlmIGFsbChzZWVuX2VsZW1lbnRzW25hbWVdIGZvciBuYW1lIGluIHJlcXVpcmVkX2VsZW1l
bnRzKToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgaWYgc291cmNlX2ZpbGUudGVzdGRy
aXZlcl9ub2RlczoKKyAgICAgICAgaWYgbGVuKHNvdXJjZV9maWxlLnRlc3Rkcml2ZXJfbm9kZXMp
ID4gMToKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJNVUxUSVBMRS1URVNURFJJVkVSIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIHRoYW4gb25lIDxzY3JpcHQgc3JjPScv
cmVzb3VyY2VzL3Rlc3Rkcml2ZXIuanMnPiIsIHBhdGgsIE5vbmUpKQorCisgICAgICAgIHRlc3Rk
cml2ZXJfdmVuZG9yX25vZGVzID0gc291cmNlX2ZpbGUucm9vdC5maW5kYWxsKCIuLy97aHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbH1zY3JpcHRbQHNyYz0nL3Jlc291cmNlcy90ZXN0ZHJpdmVy
LXZlbmRvci5qcyddIikKKyAgICAgICAgaWYgbm90IHRlc3Rkcml2ZXJfdmVuZG9yX25vZGVzOgor
ICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIk1JU1NJTkctVEVTVERSSVZFUi1WRU5ET1IiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pc3NpbmcgPHNjcmlwdCBzcmM9Jy9yZXNvdXJj
ZXMvdGVzdGRyaXZlci12ZW5kb3IuanMnPiIsIHBhdGgsIE5vbmUpKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgaWYgbGVuKHRlc3Rkcml2ZXJfdmVuZG9yX25vZGVzKSA+IDE6CisgICAgICAg
ICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIk1VTFRJUExFLVRFU1REUklWRVItVkVORE9SIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSB0aGFuIG9uZSA8c2NyaXB0IHNyYz0n
L3Jlc291cmNlcy90ZXN0ZHJpdmVyLXZlbmRvci5qcyc+IiwgcGF0aCwgTm9uZSkpCisKKyAgICBm
b3IgZWxlbWVudCBpbiBzb3VyY2VfZmlsZS5yb290LmZpbmRhbGwoIi4vL3todHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sfXNjcmlwdFtAc3JjXSIpOgorICAgICAgICBzcmMgPSBlbGVtZW50LmF0
dHJpYlsic3JjIl0KKyAgICAgICAgZm9yIG5hbWUgaW4gWyJ0ZXN0aGFybmVzcyIsICJ0ZXN0aGFy
bmVzc3JlcG9ydCIsICJ0ZXN0ZHJpdmVyIiwgInRlc3Rkcml2ZXItdmVuZG9yIl06CisgICAgICAg
ICAgICBpZiAiJXMuanMiICUgbmFtZSA9PSBzcmMgb3IgKCIvJXMuanMiICUgbmFtZSBpbiBzcmMg
YW5kIHNyYyAhPSAiL3Jlc291cmNlcy8lcy5qcyIgJSBuYW1lKToKKyAgICAgICAgICAgICAgICBl
cnJvcnMuYXBwZW5kKCgiJXMtUEFUSCIgJSBuYW1lLnVwcGVyKCksICIlcy5qcyBzY3JpcHQgc2Vl
biB3aXRoIGluY29ycmVjdCBwYXRoIiAlIG5hbWUsIHBhdGgsIE5vbmUpKQorCisgICAgcmV0dXJu
IGVycm9ycworCitjbGFzcyBBU1RDaGVjayhvYmplY3QpOgorICAgIF9fbWV0YWNsYXNzX18gPSBh
YmMuQUJDTWV0YQorICAgIGVycm9yID0gTm9uZQorICAgIGRlc2NyaXB0aW9uID0gTm9uZQorCisg
ICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBjaGVjayhzZWxmLCByb290KToKKyAgICAg
ICAgcGFzcworCitjbGFzcyBPcGVuTW9kZUNoZWNrKEFTVENoZWNrKToKKyAgICBlcnJvciA9ICJP
UEVOLU5PLU1PREUiCisgICAgZGVzY3JpcHRpb24gPSAiRmlsZSBvcGVuZWQgd2l0aG91dCBwcm92
aWRpbmcgYW4gZXhwbGljaXQgbW9kZSAobm90ZTogYmluYXJ5IGZpbGVzIG11c3QgYmUgcmVhZCB3
aXRoICdiJyBpbiB0aGUgbW9kZSBmbGFncykiCisKKyAgICBkZWYgY2hlY2soc2VsZiwgcm9vdCk6
CisgICAgICAgIGVycm9ycyA9IFtdCisgICAgICAgIGZvciBub2RlIGluIGFzdC53YWxrKHJvb3Qp
OgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBhc3QuQ2FsbCk6CisgICAgICAgICAg
ICAgICAgaWYgaGFzYXR0cihub2RlLmZ1bmMsICJpZCIpIGFuZCBub2RlLmZ1bmMuaWQgaW4gKCJv
cGVuIiwgImZpbGUiKToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxlbihub2RlLmFyZ3MpIDwg
MiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbChpdGVtLmFyZyAhPSAibW9kZSIgZm9y
IGl0ZW0gaW4gbm9kZS5rZXl3b3JkcykpOgorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jz
LmFwcGVuZChub2RlLmxpbmVubykKKyAgICAgICAgcmV0dXJuIGVycm9ycworCithc3RfY2hlY2tl
cnMgPSBbaXRlbSgpIGZvciBpdGVtIGluIFtPcGVuTW9kZUNoZWNrXV0KKworZGVmIGNoZWNrX3B5
dGhvbl9hc3QocmVwb19yb290LCBwYXRoLCBmKToKKyAgICBpZiBub3QgcGF0aC5lbmRzd2l0aCgi
LnB5Iik6CisgICAgICAgIHJldHVybiBbXQorCisgICAgdHJ5OgorICAgICAgICByb290ID0gYXN0
LnBhcnNlKGYucmVhZCgpKQorICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBlOgorICAgICAgICBy
ZXR1cm4gWygiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgcGF0aCwgZS5s
aW5lbm8pXQorCisgICAgZXJyb3JzID0gW10KKyAgICBmb3IgY2hlY2tlciBpbiBhc3RfY2hlY2tl
cnM6CisgICAgICAgIGZvciBsaW5lbm8gaW4gY2hlY2tlci5jaGVjayhyb290KToKKyAgICAgICAg
ICAgIGVycm9ycy5hcHBlbmQoKGNoZWNrZXIuZXJyb3IsIGNoZWNrZXIuZGVzY3JpcHRpb24sIHBh
dGgsIGxpbmVubykpCisgICAgcmV0dXJuIGVycm9ycworCisKK2Jyb2tlbl9qc19tZXRhZGF0YSA9
IHJlLmNvbXBpbGUoYiIvL1xzKk1FVEE6IikKK2Jyb2tlbl9weXRob25fbWV0YWRhdGEgPSByZS5j
b21waWxlKGIiI1xzKk1FVEE6IikKKworCitkZWYgY2hlY2tfc2NyaXB0X21ldGFkYXRhKHJlcG9f
cm9vdCwgcGF0aCwgZik6CisgICAgaWYgcGF0aC5lbmRzd2l0aCgoIi53b3JrZXIuanMiLCAiLmFu
eS5qcyIpKToKKyAgICAgICAgbWV0YV9yZSA9IGpzX21ldGFfcmUKKyAgICAgICAgYnJva2VuX21l
dGFkYXRhID0gYnJva2VuX2pzX21ldGFkYXRhCisgICAgZWxpZiBwYXRoLmVuZHN3aXRoKCIucHki
KToKKyAgICAgICAgbWV0YV9yZSA9IHB5dGhvbl9tZXRhX3JlCisgICAgICAgIGJyb2tlbl9tZXRh
ZGF0YSA9IGJyb2tlbl9weXRob25fbWV0YWRhdGEKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4g
W10KKworICAgIGRvbmUgPSBGYWxzZQorICAgIGVycm9ycyA9IFtdCisgICAgZm9yIGlkeCwgbGlu
ZSBpbiBlbnVtZXJhdGUoZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGxpbmUsIGJpbmFy
eV90eXBlKSwgbGluZQorCisgICAgICAgIG0gPSBtZXRhX3JlLm1hdGNoKGxpbmUpCisgICAgICAg
IGlmIG06CisgICAgICAgICAgICBrZXksIHZhbHVlID0gbS5ncm91cHMoKQorICAgICAgICAgICAg
aWYga2V5ID09IGIidGltZW91dCI6CisgICAgICAgICAgICAgICAgaWYgdmFsdWUgIT0gYiJsb25n
IjoKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIlVOS05PV04tVElNRU9VVC1N
RVRBREFUQSIsICJVbmV4cGVjdGVkIHZhbHVlIGZvciB0aW1lb3V0IG1ldGFkYXRhIiwgcGF0aCwg
aWR4ICsgMSkpCisgICAgICAgICAgICBlbGlmIGtleSA9PSBiInNjcmlwdCI6CisgICAgICAgICAg
ICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlcnJvcnMuYXBw
ZW5kKCgiVU5LTk9XTi1NRVRBREFUQSIsICJVbmV4cGVjdGVkIGtpbmQgb2YgbWV0YWRhdGEiLCBw
YXRoLCBpZHggKyAxKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRvbmUgPSBUcnVlCisK
KyAgICAgICAgaWYgZG9uZToKKyAgICAgICAgICAgIGlmIG1ldGFfcmUubWF0Y2gobGluZSk6Cisg
ICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIlNUUkFZLU1FVEFEQVRBIiwgIk1ldGFkYXRh
IGNvbW1lbnRzIHNob3VsZCBzdGFydCB0aGUgZmlsZSIsIHBhdGgsIGlkeCArIDEpKQorICAgICAg
ICAgICAgZWxpZiBtZXRhX3JlLnNlYXJjaChsaW5lKToKKyAgICAgICAgICAgICAgICBlcnJvcnMu
YXBwZW5kKCgiSU5ERU5URUQtTUVUQURBVEEiLCAiTWV0YWRhdGEgY29tbWVudHMgc2hvdWxkIHN0
YXJ0IHRoZSBsaW5lIiwgcGF0aCwgaWR4ICsgMSkpCisgICAgICAgICAgICBlbGlmIGJyb2tlbl9t
ZXRhZGF0YS5zZWFyY2gobGluZSk6CisgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIkJS
T0tFTi1NRVRBREFUQSIsICJNZXRhZGF0YSBjb21tZW50IGlzIG5vdCBmb3JtYXR0ZWQgY29ycmVj
dGx5IiwgcGF0aCwgaWR4ICsgMSkpCisKKyAgICByZXR1cm4gZXJyb3JzCisKKworZGVmIGNoZWNr
X3BhdGgocmVwb19yb290LCBwYXRoKToKKyAgICAiIiIKKyAgICBSdW5zIGxpbnRzIHRoYXQgY2hl
Y2sgdGhlIGZpbGUgcGF0aC4KKworICAgIDpwYXJhbSByZXBvX3Jvb3Q6IHRoZSByZXBvc2l0b3J5
IHJvb3QKKyAgICA6cGFyYW0gcGF0aDogdGhlIHBhdGggb2YgdGhlIGZpbGUgd2l0aGluIHRoZSBy
ZXBvc2l0b3J5CisgICAgOnJldHVybnM6IGEgbGlzdCBvZiBlcnJvcnMgZm91bmQgaW4gYGBwYXRo
YGAKKyAgICAiIiIKKworICAgIGVycm9ycyA9IFtdCisgICAgZm9yIHBhdGhfZm4gaW4gcGF0aF9s
aW50czoKKyAgICAgICAgZXJyb3JzLmV4dGVuZChwYXRoX2ZuKHJlcG9fcm9vdCwgcGF0aCkpCisg
ICAgcmV0dXJuIGVycm9ycworCisKK2RlZiBjaGVja19hbGxfcGF0aHMocmVwb19yb290LCBwYXRo
cyk6CisgICAgIiIiCisgICAgUnVucyBsaW50cyB0aGF0IGNoZWNrIGFsbCBwYXRocyBnbG9iYWxs
eS4KKworICAgIDpwYXJhbSByZXBvX3Jvb3Q6IHRoZSByZXBvc2l0b3J5IHJvb3QKKyAgICA6cGFy
YW0gcGF0aHM6IGEgbGlzdCBvZiBhbGwgdGhlIHBhdGhzIHdpdGhpbiB0aGUgcmVwb3NpdG9yeQor
ICAgIDpyZXR1cm5zOiBhIGxpc3Qgb2YgZXJyb3JzIGZvdW5kIGluIGBgZmBgCisgICAgIiIiCisK
KyAgICBlcnJvcnMgPSBbXQorICAgIGZvciBwYXRoc19mbiBpbiBhbGxfcGF0aHNfbGludHM6Cisg
ICAgICAgIGVycm9ycy5leHRlbmQocGF0aHNfZm4ocmVwb19yb290LCBwYXRocykpCisgICAgcmV0
dXJuIGVycm9ycworCisKK2RlZiBjaGVja19maWxlX2NvbnRlbnRzKHJlcG9fcm9vdCwgcGF0aCwg
Zik6CisgICAgIiIiCisgICAgUnVucyBsaW50cyB0aGF0IGNoZWNrIHRoZSBmaWxlIGNvbnRlbnRz
LgorCisgICAgOnBhcmFtIHJlcG9fcm9vdDogdGhlIHJlcG9zaXRvcnkgcm9vdAorICAgIDpwYXJh
bSBwYXRoOiB0aGUgcGF0aCBvZiB0aGUgZmlsZSB3aXRoaW4gdGhlIHJlcG9zaXRvcnkKKyAgICA6
cGFyYW0gZjogYSBmaWxlLWxpa2Ugb2JqZWN0IHdpdGggdGhlIGZpbGUgY29udGVudHMKKyAgICA6
cmV0dXJuczogYSBsaXN0IG9mIGVycm9ycyBmb3VuZCBpbiBgYGZgYAorICAgICIiIgorCisgICAg
ZXJyb3JzID0gW10KKyAgICBmb3IgZmlsZV9mbiBpbiBmaWxlX2xpbnRzOgorICAgICAgICBlcnJv
cnMuZXh0ZW5kKGZpbGVfZm4ocmVwb19yb290LCBwYXRoLCBmKSkKKyAgICAgICAgZi5zZWVrKDAp
CisgICAgcmV0dXJuIGVycm9ycworCisKK2RlZiBvdXRwdXRfZXJyb3JzX3RleHQoZXJyb3JzKToK
KyAgICBmb3IgZXJyb3JfdHlwZSwgZGVzY3JpcHRpb24sIHBhdGgsIGxpbmVfbnVtYmVyIGluIGVy
cm9yczoKKyAgICAgICAgcG9zX3N0cmluZyA9IHBhdGgKKyAgICAgICAgaWYgbGluZV9udW1iZXI6
CisgICAgICAgICAgICBwb3Nfc3RyaW5nICs9ICI6JXMiICUgbGluZV9udW1iZXIKKyAgICAgICAg
bG9nZ2VyLmVycm9yKCIlczogJXMgKCVzKSIgJSAocG9zX3N0cmluZywgZGVzY3JpcHRpb24sIGVy
cm9yX3R5cGUpKQorCisKK2RlZiBvdXRwdXRfZXJyb3JzX21hcmtkb3duKGVycm9ycyk6CisgICAg
aWYgbm90IGVycm9yczoKKyAgICAgICAgcmV0dXJuCisgICAgaGVhZGluZyA9ICIiIkdvdCBsaW50
IGVycm9yczoKKworfCBFcnJvciBUeXBlIHwgUG9zaXRpb24gfCBNZXNzYWdlIHwKK3wtLS0tLS0t
LS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS18IiIiCisgICAgZm9yIGxpbmUgaW4gaGVhZGluZy5z
cGxpdCgiXG4iKToKKyAgICAgICAgbG9nZ2VyLmVycm9yKGxpbmUpCisgICAgZm9yIGVycm9yX3R5
cGUsIGRlc2NyaXB0aW9uLCBwYXRoLCBsaW5lX251bWJlciBpbiBlcnJvcnM6CisgICAgICAgIHBv
c19zdHJpbmcgPSBwYXRoCisgICAgICAgIGlmIGxpbmVfbnVtYmVyOgorICAgICAgICAgICAgcG9z
X3N0cmluZyArPSAiOiVzIiAlIGxpbmVfbnVtYmVyCisgICAgICAgIGxvZ2dlci5lcnJvcigiJXMg
fCAlcyB8ICVzIHwiICUgKGVycm9yX3R5cGUsIHBvc19zdHJpbmcsIGRlc2NyaXB0aW9uKSkKKwor
CitkZWYgb3V0cHV0X2Vycm9yc19qc29uKGVycm9ycyk6CisgICAgZm9yIGVycm9yX3R5cGUsIGVy
cm9yLCBwYXRoLCBsaW5lX251bWJlciBpbiBlcnJvcnM6CisgICAgICAgIHByaW50KGpzb24uZHVt
cHMoeyJwYXRoIjogcGF0aCwgImxpbmVubyI6IGxpbmVfbnVtYmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAicnVsZSI6IGVycm9yX3R5cGUsICJtZXNzYWdlIjogZXJyb3J9KSkKKworCitk
ZWYgb3V0cHV0X2Vycm9yX2NvdW50KGVycm9yX2NvdW50KToKKyAgICBpZiBub3QgZXJyb3JfY291
bnQ6CisgICAgICAgIHJldHVybgorCisgICAgYnlfdHlwZSA9ICIgIi5qb2luKCIlczogJWQiICUg
aXRlbSBmb3IgaXRlbSBpbiBlcnJvcl9jb3VudC5pdGVtcygpKQorICAgIGNvdW50ID0gc3VtKGVy
cm9yX2NvdW50LnZhbHVlcygpKQorICAgIGxvZ2dlci5pbmZvKCIiKQorICAgIGlmIGNvdW50ID09
IDE6CisgICAgICAgIGxvZ2dlci5pbmZvKCJUaGVyZSB3YXMgMSBlcnJvciAoJXMpIiAlIChieV90
eXBlLCkpCisgICAgZWxzZToKKyAgICAgICAgbG9nZ2VyLmluZm8oIlRoZXJlIHdlcmUgJWQgZXJy
b3JzICglcykiICUgKGNvdW50LCBieV90eXBlKSkKKworCitkZWYgY2hhbmdlZF9maWxlcyh3cHRf
cm9vdCk6CisgICAgcmV2aXNoID0gdGVzdGZpbGVzLmdldF9yZXZpc2gocmV2aXNoPU5vbmUpCisg
ICAgY2hhbmdlZCwgXyA9IHRlc3RmaWxlcy5maWxlc19jaGFuZ2VkKHJldmlzaCwgc2V0KCksIGlu
Y2x1ZGVfdW5jb21taXR0ZWQ9VHJ1ZSwgaW5jbHVkZV9uZXc9VHJ1ZSkKKyAgICByZXR1cm4gW29z
LnBhdGgucmVscGF0aChpdGVtLCB3cHRfcm9vdCkgZm9yIGl0ZW0gaW4gY2hhbmdlZF0KKworCitk
ZWYgbGludF9wYXRocyhrd2FyZ3MsIHdwdF9yb290KToKKyAgICBpZiBrd2FyZ3MuZ2V0KCJwYXRo
cyIpOgorICAgICAgICByID0gb3MucGF0aC5yZWFscGF0aCh3cHRfcm9vdCkKKyAgICAgICAgcGF0
aHMgPSBbb3MucGF0aC5yZWxwYXRoKG9zLnBhdGgucmVhbHBhdGgoeCksIHIpIGZvciB4IGluIGt3
YXJnc1sicGF0aHMiXV0KKyAgICBlbGlmIGt3YXJnc1siYWxsIl06CisgICAgICAgIHBhdGhzID0g
bGlzdChhbGxfZmlsZXN5c3RlbV9wYXRocyh3cHRfcm9vdCkpCisgICAgZWxzZToKKyAgICAgICAg
Y2hhbmdlZF9wYXRocyA9IGNoYW5nZWRfZmlsZXMod3B0X3Jvb3QpCisgICAgICAgIGZvcmNlX2Fs
bCA9IEZhbHNlCisgICAgICAgICMgSWYgd2UgY2hhbmdlZCB0aGUgbGludCBpdHNlbGYgZW5zdXJl
IHRoYXQgd2UgcmV0ZXN0IGV2ZXJ5dGhpbmcKKyAgICAgICAgZm9yIHBhdGggaW4gY2hhbmdlZF9w
YXRoczoKKyAgICAgICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2Uob3MucGF0aC5zZXAsICIvIikK
KyAgICAgICAgICAgIGlmIHBhdGggPT0gImxpbnQud2hpdGVsaXN0IiBvciBwYXRoLnN0YXJ0c3dp
dGgoInRvb2xzL2xpbnQvIik6CisgICAgICAgICAgICAgICAgZm9yY2VfYWxsID0gVHJ1ZQorICAg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHBhdGhzID0gKGxpc3QoY2hhbmdlZF9wYXRocykg
aWYgbm90IGZvcmNlX2FsbAorICAgICAgICAgICAgICAgICBlbHNlIGxpc3QoYWxsX2ZpbGVzeXN0
ZW1fcGF0aHMod3B0X3Jvb3QpKSkKKworICAgIHJldHVybiBwYXRocworCisKK2RlZiBjcmVhdGVf
cGFyc2VyKCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoInBhdGhzIiwgbmFyZ3M9IioiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0iTGlzdCBvZiBwYXRocyB0byBsaW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCItLWpzb24iLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0iT3V0cHV0IG1hY2hpbmUtcmVhZGFibGUgSlNPTiBmb3JtYXQiKQorICAgIHBhcnNl
ci5hZGRfYXJndW1lbnQoIi0tbWFya2Rvd24iLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0iT3V0cHV0IG1hcmtkb3duIikKKyAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KCItLWNzcy1tb2RlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9IlJ1biBDU1MgdGVzdHN1aXRlIHNwZWNpZmljIGxpbnRzIikKKyAg
ICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXJlcG8tcm9vdCIsIGhlbHA9IlRoZSBXUFQgZGlyZWN0
b3J5LiBVc2UgdGhpcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvcHRpb24gaWYgdGhlIGxp
bnQgc2NyaXB0IGV4aXN0cyBvdXRzaWRlIHRoZSByZXBvc2l0b3J5IikKKyAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KCItLWFsbCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IklmIG5vIHBhdGhz
IGFyZSBwYXNzZWQsIHRyeSB0byBsaW50IHRoZSB3aG9sZSAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAid29ya2luZyBkaXJlY3RvcnksIG5vdCBqdXN0IGZpbGVzIHRoYXQgY2hhbmdlZCIpCisg
ICAgcmV0dXJuIHBhcnNlcgorCisKK2RlZiBtYWluKCoqa3dhcmdzKToKKyAgICBpZiBrd2FyZ3Mu
Z2V0KCJqc29uIikgYW5kIGt3YXJncy5nZXQoIm1hcmtkb3duIik6CisgICAgICAgIGxvZ2dlci5j
cml0aWNhbCgiQ2Fubm90IHNwZWNpZnkgLS1qc29uIGFuZCAtLW1hcmtkb3duIikKKyAgICAgICAg
c3lzLmV4aXQoMikKKworICAgIHJlcG9fcm9vdCA9IGt3YXJncy5nZXQoJ3JlcG9fcm9vdCcpIG9y
IGxvY2FscGF0aHMucmVwb19yb290CisgICAgb3V0cHV0X2Zvcm1hdCA9IHsoVHJ1ZSwgRmFsc2Up
OiAianNvbiIsCisgICAgICAgICAgICAgICAgICAgICAoRmFsc2UsIFRydWUpOiAibWFya2Rvd24i
LAorICAgICAgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSk6ICJub3JtYWwifVsoa3dhcmdz
LmdldCgianNvbiIsIEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGt3YXJncy5nZXQoIm1hcmtkb3duIiwgRmFsc2UpKV0KKworICAgIGlmIG91
dHB1dF9mb3JtYXQgPT0gIm1hcmtkb3duIjoKKyAgICAgICAgc2V0dXBfbG9nZ2luZyhUcnVlKQor
CisgICAgcGF0aHMgPSBsaW50X3BhdGhzKGt3YXJncywgcmVwb19yb290KQorCisgICAgcmV0dXJu
IGxpbnQocmVwb19yb290LCBwYXRocywgb3V0cHV0X2Zvcm1hdCkKKworCitkZWYgbGludChyZXBv
X3Jvb3QsIHBhdGhzLCBvdXRwdXRfZm9ybWF0KToKKyAgICBlcnJvcl9jb3VudCA9IGRlZmF1bHRk
aWN0KGludCkKKyAgICBsYXN0ID0gTm9uZQorCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihy
ZXBvX3Jvb3QsICJsaW50LndoaXRlbGlzdCIpKSBhcyBmOgorICAgICAgICB3aGl0ZWxpc3QsIGln
bm9yZWRfZmlsZXMgPSBwYXJzZV93aGl0ZWxpc3QoZikKKworICAgIG91dHB1dF9lcnJvcnMgPSB7
Impzb24iOiBvdXRwdXRfZXJyb3JzX2pzb24sCisgICAgICAgICAgICAgICAgICAgICAibWFya2Rv
d24iOiBvdXRwdXRfZXJyb3JzX21hcmtkb3duLAorICAgICAgICAgICAgICAgICAgICAgIm5vcm1h
bCI6IG91dHB1dF9lcnJvcnNfdGV4dH1bb3V0cHV0X2Zvcm1hdF0KKworICAgIGRlZiBwcm9jZXNz
X2Vycm9ycyhlcnJvcnMpOgorICAgICAgICAiIiIKKyAgICAgICAgRmlsdGVycyBhbmQgcHJpbnRz
IHRoZSBlcnJvcnMsIGFuZCB1cGRhdGVzIHRoZSBgYGVycm9yX2NvdW50YGAgb2JqZWN0LgorCisg
ICAgICAgIDpwYXJhbSBlcnJvcnM6IGEgbGlzdCBvZiBlcnJvciB0dXBsZXMgKGVycm9yIHR5cGUs
IG1lc3NhZ2UsIHBhdGgsIGxpbmUgbnVtYmVyKQorICAgICAgICA6cmV0dXJuczogYGBOb25lYGAg
aWYgdGhlcmUgd2VyZSBubyBlcnJvcnMsIG9yCisgICAgICAgICAgICAgICAgICBhIHR1cGxlIG9m
IHRoZSBlcnJvciB0eXBlIGFuZCB0aGUgcGF0aCBvdGhlcndpc2UKKyAgICAgICAgIiIiCisKKyAg
ICAgICAgZXJyb3JzID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBlcnJvcnMp
CisKKyAgICAgICAgaWYgbm90IGVycm9yczoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAg
ICAgICAgb3V0cHV0X2Vycm9ycyhlcnJvcnMpCisgICAgICAgIGZvciBlcnJvcl90eXBlLCBlcnJv
ciwgcGF0aCwgbGluZSBpbiBlcnJvcnM6CisgICAgICAgICAgICBlcnJvcl9jb3VudFtlcnJvcl90
eXBlXSArPSAxCisKKyAgICAgICAgcmV0dXJuIChlcnJvcnNbLTFdWzBdLCBwYXRoKQorCisgICAg
Zm9yIHBhdGggaW4gcGF0aHNbOl06CisgICAgICAgIGFic19wYXRoID0gb3MucGF0aC5qb2luKHJl
cG9fcm9vdCwgcGF0aCkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGFic19wYXRoKToK
KyAgICAgICAgICAgIHBhdGhzLnJlbW92ZShwYXRoKQorICAgICAgICAgICAgY29udGludWUKKwor
ICAgICAgICBpZiBhbnkoZm5tYXRjaC5mbm1hdGNoKHBhdGgsIGZpbGVfbWF0Y2gpIGZvciBmaWxl
X21hdGNoIGluIGlnbm9yZWRfZmlsZXMpOgorICAgICAgICAgICAgcGF0aHMucmVtb3ZlKHBhdGgp
CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGVycm9ycyA9IGNoZWNrX3BhdGgocmVw
b19yb290LCBwYXRoKQorICAgICAgICBsYXN0ID0gcHJvY2Vzc19lcnJvcnMoZXJyb3JzKSBvciBs
YXN0CisKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoYWJzX3BhdGgpOgorICAgICAgICAg
ICAgd2l0aCBvcGVuKGFic19wYXRoLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgIGVycm9y
cyA9IGNoZWNrX2ZpbGVfY29udGVudHMocmVwb19yb290LCBwYXRoLCBmKQorICAgICAgICAgICAg
ICAgIGxhc3QgPSBwcm9jZXNzX2Vycm9ycyhlcnJvcnMpIG9yIGxhc3QKKworICAgIGVycm9ycyA9
IGNoZWNrX2FsbF9wYXRocyhyZXBvX3Jvb3QsIHBhdGhzKQorICAgIGxhc3QgPSBwcm9jZXNzX2Vy
cm9ycyhlcnJvcnMpIG9yIGxhc3QKKworICAgIGlmIG91dHB1dF9mb3JtYXQgaW4gKCJub3JtYWwi
LCAibWFya2Rvd24iKToKKyAgICAgICAgb3V0cHV0X2Vycm9yX2NvdW50KGVycm9yX2NvdW50KQor
ICAgICAgICBpZiBlcnJvcl9jb3VudDoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIChFUlJPUl9N
U0cgJSAobGFzdFswXSwgbGFzdFsxXSwgbGFzdFswXSwgbGFzdFsxXSkpLnNwbGl0KCJcbiIpOgor
ICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGxpbmUpCisgICAgcmV0dXJuIHN1bShpdGVydmFs
dWVzKGVycm9yX2NvdW50KSkKKworcGF0aF9saW50cyA9IFtjaGVja19wYXRoX2xlbmd0aCwgY2hl
Y2tfd29ya2VyX2NvbGxpc2lvbiwgY2hlY2tfYWhlbV9jb3B5XQorYWxsX3BhdGhzX2xpbnRzID0g
W2NoZWNrX2Nzc19nbG9iYWxseV91bmlxdWVdCitmaWxlX2xpbnRzID0gW2NoZWNrX3JlZ2V4cF9s
aW5lLCBjaGVja19wYXJzZWQsIGNoZWNrX3B5dGhvbl9hc3QsIGNoZWNrX3NjcmlwdF9tZXRhZGF0
YV0KKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBhcmdzID0gY3JlYXRlX3BhcnNl
cigpLnBhcnNlX2FyZ3MoKQorICAgIGVycm9yX2NvdW50ID0gbWFpbigqKnZhcnMoYXJncykpCisg
ICAgaWYgZXJyb3JfY291bnQgPiAwOgorICAgICAgICBzeXMuZXhpdCgxKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rl
c3RzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJk
MWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9iYXNlLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rl
c3RzL2Jhc2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzYwZjEzY2UyOTM1YTNlNTkxZGI4YjQ3MjAwN2EyNzAx
MGM4YTgxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9iYXNlLnB5CkBAIC0wLDAgKzEsMTEgQEAK
K2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscworCitmcm9tIHNpeCBpbXBv
cnQgaW50ZWdlcl90eXBlcywgdGV4dF90eXBlCisKK2RlZiBjaGVja19lcnJvcnMoZXJyb3JzKToK
KyAgICBmb3IgZSBpbiBlcnJvcnM6CisgICAgICAgIGVycm9yX3R5cGUsIGRlc2NyaXB0aW9uLCBw
YXRoLCBsaW5lX251bWJlciA9IGUKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZXJyb3JfdHlw
ZSwgdGV4dF90eXBlKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkZXNjcmlwdGlvbiwgdGV4
dF90eXBlKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShwYXRoLCB0ZXh0X3R5cGUpCisgICAg
ICAgIGFzc2VydCBsaW5lX251bWJlciBpcyBOb25lIG9yIGlzaW5zdGFuY2UobGluZV9udW1iZXIs
IGludGVnZXJfdHlwZXMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvYnJva2VuLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvYnJva2VuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ3OTNjNDNjYWYwMTY1MWU1MTU1ZDc5OTNk
OTlmOWI1ZmQ5Mjg4YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9rZW4uaHRtbApA
QCAtMCwwICsxIEBACitUSElTIExJTkUgSEFTIFRSQUlMSU5HIFdISVRFU1BBQ0UgICAgCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvZHVtbXkvYnJva2VuX2lnbm9yZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9rZW5f
aWdub3JlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0NzkzYzQzY2FmMDE2NTFlNTE1NWQ3OTkzZDk5Zjli
NWZkOTI4OGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvYnJva2VuX2lnbm9yZWQuaHRt
bApAQCAtMCwwICsxIEBACitUSElTIExJTkUgSEFTIFRSQUlMSU5HIFdISVRFU1BBQ0UgICAgCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvYS1yZWYuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9jc3MvY3NzLXVuaXF1ZS9hLXJlZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMDQ5MWZkN2U1YmI2ZmEy
OGM1MTdhMGJiMzJiOGI1MDY1MzlkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvYS1yZWYuaHRtbApAQCAtMCwwICsxIEBACisxCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvY3NzL2Nzcy11bmlxdWUvYS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL2Eu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43M2M1ZDBiYzM3M2Y1YjFmYzJlZTQ1YjI5ODVjMzNhODhjODQ0MjMy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL2EuaHRtbApAQCAt
MCwwICsxLDQgQEAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93d3cudzMub3JnL1RS
L0NTUzIxL2F1cmFsLmh0bWwjcHJvcGRlZi1zdHJlc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nz
cy9jc3MtdW5pcXVlL21hdGNoL2EtcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUv
bWF0Y2gvYS1yZWYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDA0OTFmZDdlNWJiNmZhMjhjNTE3YTBiYjMy
YjhiNTA2NTM5ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVl
L21hdGNoL2EtcmVmLmh0bWwKQEAgLTAsMCArMSBAQAorMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2Nzcy9jc3MtdW5pcXVlL21hdGNoL2EuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9t
YXRjaC9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzNjNWQwYmMzNzNmNWIxZmMyZWU0NWIyOTg1YzMzYTg4
Yzg0NDIzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRj
aC9hLmh0bWwKQEAgLTAsMCArMSw0IEBACis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8v
d3d3LnczLm9yZy9UUi9DU1MyMS9hdXJhbC5odG1sI3Byb3BkZWYtc3RyZXNzIj4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9zdXBwb3J0L2EuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9zdXBwb3J0L2EuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDA0OTFm
ZDdlNWJiNmZhMjhjNTE3YTBiYjMyYjhiNTA2NTM5ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvYS5odG1sCkBAIC0wLDAgKzEgQEAK
KzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9zdXBwb3J0L3Rv
b2xzL2EuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9zdXBwb3J0L3Rvb2xz
L2EuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wY2ZiZjA4ODg2ZmNhOWE5MWNiNzUzZWM4NzM0Yzg0ZmNiZTUy
YzlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1
cHBvcnQvdG9vbHMvYS5odG1sCkBAIC0wLDAgKzEgQEAKKzIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC90b29scy9hLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11
bmlxdWUvbWF0Y2gvdG9vbHMvYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMDQ5MWZkN2U1YmI2ZmEyOGM1
MTdhMGJiMzJiOGI1MDY1MzlkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nz
cy11bmlxdWUvbWF0Y2gvdG9vbHMvYS5odG1sCkBAIC0wLDAgKzEgQEAKKzEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvYS1yZWYuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvYS1yZWYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2ZiZjA4
ODg2ZmNhOWE5MWNiNzUzZWM4NzM0Yzg0ZmNiZTUyYzlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLXJlZi5odG1sCkBAIC0wLDAgKzEgQEAK
KzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvYS5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGIwY2UzODNhMjVjYzQzZjYzNTU1NDgxODZmOTIyNWQ3OWM3YjQ1MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvYS5odG1sCkBAIC0wLDAgKzEs
NCBAQAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjEv
YXVyYWwuaHRtbCNwcm9wZGVmLXN0cmVzcyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11
bmlxdWUvbm90LW1hdGNoL3N1cHBvcnQvYS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVl
L25vdC1tYXRjaC9zdXBwb3J0L2EuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2ZiZjA4ODg2ZmNhOWE5MWNi
NzUzZWM4NzM0Yzg0ZmNiZTUyYzlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9j
c3MtdW5pcXVlL25vdC1tYXRjaC9zdXBwb3J0L2EuaHRtbApAQCAtMCwwICsxIEBACisyCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL3Rvb2xzL2EuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvdG9vbHMvYS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBjZmJmMDg4ODZmY2E5YTkxY2I3NTNlYzg3MzRjODRmY2JlNTJjOWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL3Rvb2xzL2EuaHRtbApA
QCAtMCwwICsxIEBACisyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc2Vs
ZWN0b3JzL2EuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zZWxlY3RvcnMvYS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBkNjNjNmJmZWRkMTM4Njg4M2ZhOGZhZTMyNDIzOTUzMDVhMWMyY2QKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc2VsZWN0b3JzL2EuaHRt
bApAQCAtMCwwICsxLDQgQEAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL3NlbGVjdG9ycy0zLyN0eXBlLXNlbGVjdG9ycyI+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisxCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvY3NzL2Nzcy11bmlxdWUvc3VwcG9ydC9hLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvc3VwcG9ydC9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAwNDkxZmQ3ZTViYjZmYTI4YzUxN2EwYmIz
MmI4YjUwNjUzOWQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1
ZS9zdXBwb3J0L2EuaHRtbApAQCAtMCwwICsxIEBACisxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
Y3NzL2Nzcy11bmlxdWUvc3VwcG9ydC90b29scy9hLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11
bmlxdWUvc3VwcG9ydC90b29scy9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNmYmYwODg4NmZjYTlhOTFj
Yjc1M2VjODczNGM4NGZjYmU1MmM5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3Mv
Y3NzLXVuaXF1ZS9zdXBwb3J0L3Rvb2xzL2EuaHRtbApAQCAtMCwwICsxIEBACisyCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvdG9vbHMvYS5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nz
cy9jc3MtdW5pcXVlL3Rvb2xzL2EuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDA0OTFmZDdlNWJiNmZhMjhj
NTE3YTBiYjMyYjhiNTA2NTM5ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9j
c3MtdW5pcXVlL3Rvb2xzL2EuaHRtbApAQCAtMCwwICsxIEBACisxCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvZGVwZW5kZW5jeS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2RlcGVuZGVuY3kuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yOTI5NmY0YzU4NzZmYzhjNGNkMDUyNTQ4NjE2MDA1YzFlNDZmMGU0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9saW50L3Rlc3RzL2R1bW15L2RlcGVuZGVuY3kuaHRtbApAQCAtMCwwICsxIEBACitUaGlzIGZp
bGUgaXMgdXNlZCB0byBkZW1vbnN0cmF0ZSBhY2NlcHRhbmNlIG9mIHJvb3QtcmVsYXRpdmUgcmVm
dGVzdCByZWZlcmVuY2VzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQud2hpdGVsaXN0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rl
c3RzL2R1bW15L2xpbnQud2hpdGVsaXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3NjNlNDQzMmU1YWZhMjEyMzAz
NTM0NWUxMzBkMDE4NzEwZmZkZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC53
aGl0ZWxpc3QKQEAgLTAsMCArMSBAQAorKjpicm9rZW5faWdub3JlZC5odG1sCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQv
dGVzdHMvZHVtbXkvb2theS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L29rYXkuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
MzE3OGEzYzgzYTM4MzVjNzFiYzA3NjhjMGMxZWE3YmQzZmY3MjI2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L29rYXkuaHRtbApAQCAtMCwwICsxIEBACitUSElTIExJTkUgSEFTIE5PIFRS
QUlMSU5HIFdISVRFU1BBQ0UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvYWJzb2x1dGUuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS9yZWYvYWJzb2x1dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjQ3YmM4ODM2NzFi
ZDMwODEzNTk3YzNhZWJhOTIyOTkzYjM2NTNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L3JlZi9hYnNvbHV0ZS5odG1sCkBAIC0wLDAgKzEgQEAKKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9
Imh0dHA6Ly9leGFtcGxlLmNvbS9yZWZlcmVuY2UuaHRtbCI+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvcmVmL2V4aXN0ZW50X3JlbGF0aXZlLXJlZi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVu
dF9yZWxhdGl2ZS1yZWYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3
NzVhZDhjMmU0OGM1MzkxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2V4aXN0ZW50X3JlbGF0
aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2V4aXN0ZW50X3JlbGF0aXZlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjkzNjRlZTVmYjExYzY5ZWE3ZDA3ZDQ0ZjE3NzYwOTBkOGM2ZTgyYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9yZWYvZXhpc3RlbnRfcmVsYXRpdmUuaHRtbApAQCAtMCwwICsxIEBA
Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJleGlzdGVudF9yZWxhdGl2ZS1yZWYuaHRtbCI+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2V4aXN0ZW50X3Jvb3RfcmVsYXRpdmUuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9yZWYvZXhpc3RlbnRfcm9vdF9yZWxhdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiZWRj
MmQzMDliYWE3NWY0YjY4MjcxNzIxZTEyZDgxNDU1YTRhNjIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvcmVmL2V4aXN0ZW50X3Jvb3RfcmVsYXRpdmUuaHRtbApAQCAtMCwwICsxIEBACis8
bGluayByZWw9Im1hdGNoIiBocmVmPSIvZGVwZW5kZW5jeS5odG1sIj4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9yZWYvbm9uX2V4aXN0ZW50X3JlbGF0aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL25v
bl9leGlzdGVudF9yZWxhdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwOWExZDVlYjAxMTk5ZDQ3MDYz
Njg4ZjNlZTIzZmFkMzQ2NjM2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL25v
bl9leGlzdGVudF9yZWxhdGl2ZS5odG1sCkBAIC0wLDAgKzEgQEAKKzxsaW5rIHJlbD0ibWF0Y2gi
IGhyZWY9Im5vbl9leGlzdGVudF9maWxlLmh0bWwiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Jl
Zi9ub25fZXhpc3RlbnRfcm9vdF9yZWxhdGl2ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9ub25fZXhp
c3RlbnRfcm9vdF9yZWxhdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxODEyMDEzYWEwOWE2NmZiMDE5
NWNlZmE2YzRmOGNlMGE0YzkwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL25v
bl9leGlzdGVudF9yb290X3JlbGF0aXZlLmh0bWwKQEAgLTAsMCArMSBAQAorPGxpbmsgcmVsPSJt
YXRjaCIgaHJlZj0iL25vbl9leGlzdGVudF9maWxlLmh0bWwiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L3JlZi9zYW1lX2ZpbGVfZW1wdHkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvc2FtZV9maWxlX2Vt
cHR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFhMThlOWMwMTA4NmY4OGZiYWE2YzliMDVkZDZlMjZjNGQ2
YWI0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvc2FtZV9maWxlX2VtcHR5Lmh0
bWwKQEAgLTAsMCArMSBAQAorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iIj4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS9yZWYvc2FtZV9maWxlX3BhdGguaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvc2FtZV9m
aWxlX3BhdGguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTgwYzFmMjBkZGYwZGZmOGJhMTBlZmYzY2NlNGZj
NzI4NmY3OWM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9zYW1lX2ZpbGVfcGF0
aC5odG1sCkBAIC0wLDAgKzEgQEAKKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InNhbWVfZmlsZV9w
YXRoLmh0bWwiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfZmlsZV9saW50cy5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0
X2ZpbGVfbGludHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRmYjIyMWI3YTU4NzBmMDA3NWJkNTUwZWY3NGI0
MmJkN2ZlZWE3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkKQEAg
LTAsMCArMSw1OTggQEAKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwor
Citmcm9tIC4ubGludCBpbXBvcnQgY2hlY2tfZmlsZV9jb250ZW50cworZnJvbSAuYmFzZSBpbXBv
cnQgY2hlY2tfZXJyb3JzCitpbXBvcnQgb3MKK2ltcG9ydCBweXRlc3QKK2ltcG9ydCBzaXgKKwor
SU5URVJFU1RJTkdfRklMRV9OQU1FUyA9IHsKKyAgICAicHl0aG9uIjogWworICAgICAgICAidGVz
dC5weSIsCisgICAgXSwKKyAgICAianMiOiBbCisgICAgICAgICJ0ZXN0LmpzIiwKKyAgICBdLAor
ICAgICJ3ZWItbGF4IjogWworICAgICAgICAidGVzdC5odG0iLAorICAgICAgICAidGVzdC5odG1s
IiwKKyAgICBdLAorICAgICJ3ZWItc3RyaWN0IjogWworICAgICAgICAidGVzdC5zdmciLAorICAg
ICAgICAidGVzdC54aHQiLAorICAgICAgICAidGVzdC54aHRtbCIsCisgICAgXSwKK30KKworZGVm
IGNoZWNrX3dpdGhfZmlsZXMoaW5wdXRfYnl0ZXMpOgorICAgIHJldHVybiB7CisgICAgICAgIGZp
bGVuYW1lOiAoY2hlY2tfZmlsZV9jb250ZW50cygiIiwgZmlsZW5hbWUsIHNpeC5CeXRlc0lPKGlu
cHV0X2J5dGVzKSksIGtpbmQpCisgICAgICAgIGZvciAoZmlsZW5hbWUsIGtpbmQpIGluCisgICAg
ICAgICgKKyAgICAgICAgICAgIChvcy5wYXRoLmpvaW4oImh0bWwiLCBmaWxlbmFtZSksIGtpbmQp
CisgICAgICAgICAgICBmb3IgKGtpbmQsIGZpbGVuYW1lcykgaW4gSU5URVJFU1RJTkdfRklMRV9O
QU1FUy5pdGVtcygpCisgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzCisgICAg
ICAgICkKKyAgICB9CisKKworZGVmIHRlc3RfdHJhaWxpbmdfd2hpdGVzcGFjZSgpOgorICAgIGVy
cm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJ0ZXN0OyAiKQorCisgICAgZm9yIChmaWxlbmFt
ZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19l
cnJvcnMoZXJyb3JzKQorCisgICAgICAgIGV4cGVjdGVkID0gWygiVFJBSUxJTkcgV0hJVEVTUEFD
RSIsICJXaGl0ZXNwYWNlIGF0IEVPTCIsIGZpbGVuYW1lLCAxKV0KKyAgICAgICAgaWYga2luZCA9
PSAid2ViLXN0cmljdCI6CisgICAgICAgICAgICBleHBlY3RlZC5hcHBlbmQoKCJQQVJTRS1GQUlM
RUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgTm9uZSkpCisgICAgICAgIGFz
c2VydCBlcnJvcnMgPT0gZXhwZWN0ZWQKKworCitkZWYgdGVzdF9pbmRlbnRfdGFicygpOgorICAg
IGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJkZWYgZm9vKCk6XG5ceDA5cGFzcyIpCisK
KyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6
CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbKCJJ
TkRFTlQgVEFCUyIsICJUYWJzIHVzZWQgZm9yIGluZGVudGF0aW9uIiwgZmlsZW5hbWUsIDIpXQor
ICAgICAgICBpZiBraW5kID09ICJ3ZWItc3RyaWN0IjoKKyAgICAgICAgICAgIGV4cGVjdGVkLmFw
cGVuZCgoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCBO
b25lKSkKKyAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBleHBlY3RlZAorCisKK2RlZiB0ZXN0X2Ny
X25vdF9hdF9lb2woKToKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGIibGluZTFc
cmxpbmUyXHIiKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9y
X21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGV4
cGVjdGVkID0gWygiQ1IgQVQgRU9MIiwgIkNSIGNoYXJhY3RlciBpbiBsaW5lIHNlcGFyYXRvciIs
IGZpbGVuYW1lLCAxKV0KKyAgICAgICAgaWYga2luZCA9PSAid2ViLXN0cmljdCI6CisgICAgICAg
ICAgICBleHBlY3RlZC5hcHBlbmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZp
bGUiLCBmaWxlbmFtZSwgTm9uZSkpCisgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gZXhwZWN0ZWQK
KworCitkZWYgdGVzdF9jcl9hdF9lb2woKToKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2Zp
bGVzKGIibGluZTFcclxubGluZTJcclxuIikKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMs
IGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9y
cykKKworICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICgiQ1IgQVQgRU9MIiwgIkNS
IGNoYXJhY3RlciBpbiBsaW5lIHNlcGFyYXRvciIsIGZpbGVuYW1lLCAxKSwKKyAgICAgICAgICAg
ICgiQ1IgQVQgRU9MIiwgIkNSIGNoYXJhY3RlciBpbiBsaW5lIHNlcGFyYXRvciIsIGZpbGVuYW1l
LCAyKSwKKyAgICAgICAgXQorICAgICAgICBpZiBraW5kID09ICJ3ZWItc3RyaWN0IjoKKyAgICAg
ICAgICAgIGV4cGVjdGVkLmFwcGVuZCgoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2Ug
ZmlsZSIsIGZpbGVuYW1lLCBOb25lKSkKKyAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBleHBlY3Rl
ZAorCisKK2RlZiB0ZXN0X3czY190ZXN0X29yZygpOgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dp
dGhfZmlsZXMoYiJpbXBvcnQoJ2h0dHA6Ly93d3cudzNjLXRlc3Qub3JnLycpIikKKworICAgIGZv
ciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAg
ICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBleHBlY3RlZCA9IFsoIlczQy1URVNU
Lk9SRyIsICJFeHRlcm5hbCB3M2MtdGVzdC5vcmcgZG9tYWluIHVzZWQiLCBmaWxlbmFtZSwgMSld
CisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAgICBleHBlY3RlZC5hcHBl
bmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgMSkp
CisgICAgICAgIGVsaWYga2luZCA9PSAid2ViLXN0cmljdCI6CisgICAgICAgICAgICBleHBlY3Rl
ZC5hcHBlbmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFt
ZSwgTm9uZSkpCisgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gZXhwZWN0ZWQKKworZGVmIHRlc3Rf
d2ViX3BsYXRmb3JtX3Rlc3QoKToKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGIi
aW1wb3J0KCdodHRwOi8vd2ViLXBsYXRmb3JtLnRlc3QvJykiKQorCisgICAgZm9yIChmaWxlbmFt
ZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19l
cnJvcnMoZXJyb3JzKQorCisgICAgICAgIGV4cGVjdGVkID0gWygiV0VCLVBMQVRGT1JNLlRFU1Qi
LCAiSW50ZXJuYWwgd2ViLXBsYXRmb3JtLnRlc3QgZG9tYWluIHVzZWQiLCBmaWxlbmFtZSwgMSld
CisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAgICBleHBlY3RlZC5hcHBl
bmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgMSkp
CisgICAgICAgIGVsaWYga2luZCA9PSAid2ViLXN0cmljdCI6CisgICAgICAgICAgICBleHBlY3Rl
ZC5hcHBlbmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFt
ZSwgTm9uZSkpCisgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gZXhwZWN0ZWQKKworCitkZWYgdGVz
dF93ZWJpZGwyX2pzKCk6CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhiIjxzY3Jp
cHQgc3JjPS9yZXNvdXJjZXMvd2ViaWRsMi5qcz4iKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVy
cm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMo
ZXJyb3JzKQorCisgICAgICAgIGV4cGVjdGVkID0gWygiV0VCSURMMi5KUyIsICJMZWdhY3kgd2Vi
aWRsMi5qcyBzY3JpcHQgdXNlZCIsIGZpbGVuYW1lLCAxKV0KKyAgICAgICAgaWYga2luZCA9PSAi
cHl0aG9uIjoKKyAgICAgICAgICAgIGV4cGVjdGVkLmFwcGVuZCgoIlBBUlNFLUZBSUxFRCIsICJV
bmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKSkKKyAgICAgICAgZWxpZiBraW5kID09
ICJ3ZWItc3RyaWN0IjoKKyAgICAgICAgICAgIGV4cGVjdGVkLmFwcGVuZCgoIlBBUlNFLUZBSUxF
RCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCBOb25lKSkKKyAgICAgICAgYXNz
ZXJ0IGVycm9ycyA9PSBleHBlY3RlZAorCisKK2RlZiB0ZXN0X2NvbnNvbGUoKToKKyAgICBlcnJv
cl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGIiPHNjcmlwdD5cbmNvbnNvbGUubG9nKCdlcnJvcicp
O1xuY29uc29sZS5lcnJvciAoJ2xvZycpXG48L3NjcmlwdD4iKQorCisgICAgZm9yIChmaWxlbmFt
ZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19l
cnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgaW4gWyJ3ZWItbGF4IiwgIndlYi1zdHJp
Y3QiLCAianMiXToKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAg
ICAgICgiQ09OU09MRSIsICJDb25zb2xlIGxvZ2dpbmcgQVBJIHVzZWQiLCBmaWxlbmFtZSwgMiks
CisgICAgICAgICAgICAgICAgKCJDT05TT0xFIiwgIkNvbnNvbGUgbG9nZ2luZyBBUEkgdXNlZCIs
IGZpbGVuYW1lLCAzKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGFzc2VydCBlcnJvcnMgPT0gWygiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxl
IiwgZmlsZW5hbWUsIDEpXQorCisKK2RlZiB0ZXN0X3NldFRpbWVvdXQoKToKKyAgICBlcnJvcl9t
YXAgPSBjaGVja193aXRoX2ZpbGVzKGIiPHNjcmlwdD5zZXRUaW1lb3V0KCgpID0+IDEsIDEwKTwv
c2NyaXB0PiIpCisKKyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3Jf
bWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYg
a2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWygiUEFSU0Ut
RkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDEpXQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbKCdTRVQgVElNRU9VVCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NldFRpbWVvdXQgdXNlZDsgc3RlcF90aW1lb3V0
IHNob3VsZCB0eXBpY2FsbHkgYmUgdXNlZCBpbnN0ZWFkJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKV0K
KworCitkZWYgdGVzdF9ldmVudFNlbmRlcigpOgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhf
ZmlsZXMoYiI8c2NyaXB0PmV2ZW50U2VuZGVyLm1vdXNlRG93bigpPC9zY3JpcHQ+IikKKworICAg
IGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAg
ICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBpZiBraW5kID09ICJweXRob24i
OgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxl
IHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgMSldCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBhc3NlcnQgZXJyb3JzID09IFsoJ0xBWU9VVFRFU1RTIEFQSVMnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdldmVudFNlbmRlci90ZXN0UnVubmVyL3dpbmRvdy5pbnRlcm5hbHMg
dXNlZDsgdGhlc2UgYXJlIExheW91dFRlc3RzLXNwZWNpZmljIEFQSXMgKFdlYktpdC9CbGluaykn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEpXQorCisKK2RlZiB0ZXN0X3Rlc3RSdW5uZXIoKToKKyAgICBl
cnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGIiPHNjcmlwdD5pZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7IH08L3NjcmlwdD4iKQorCisgICAgZm9y
IChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAg
ICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6Cisg
ICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8g
cGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFz
c2VydCBlcnJvcnMgPT0gWygnTEFZT1VUVEVTVFMgQVBJUycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2V2ZW50U2VuZGVyL3Rlc3RSdW5uZXIvd2luZG93LmludGVybmFscyB1c2Vk
OyB0aGVzZSBhcmUgTGF5b3V0VGVzdHMtc3BlY2lmaWMgQVBJcyAoV2ViS2l0L0JsaW5rKScsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMSldCisKKworZGVmIHRlc3Rfd2luZG93RG90SW50ZXJuYWxzKCk6Cisg
ICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhiIjxzY3JpcHQ+aWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsgaW50ZXJuYWxzLmRvQVRoaW5nKCk7IH08L3NjcmlwdD4iKQorCisgICAgZm9yIChm
aWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBj
aGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAg
ICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFy
c2UgZmlsZSIsIGZpbGVuYW1lLCAxKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2Vy
dCBlcnJvcnMgPT0gWygnTEFZT1VUVEVTVFMgQVBJUycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2V2ZW50U2VuZGVyL3Rlc3RSdW5uZXIvd2luZG93LmludGVybmFscyB1c2VkOyB0
aGVzZSBhcmUgTGF5b3V0VGVzdHMtc3BlY2lmaWMgQVBJcyAoV2ViS2l0L0JsaW5rKScsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMSldCisKKworZGVmIHRlc3RfbWV0YV90aW1lb3V0KCk6CisgICAgY29kZSA9
IGIiIiIKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxtZXRh
IG5hbWU9InRpbWVvdXQiIC8+Cis8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJzaG9ydCIg
Lz4KKzxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciIC8+Cis8L2h0bWw+CisiIiIK
KyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGNvZGUpCisKKyAgICBmb3IgKGZpbGVu
YW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNr
X2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCBpbiBbIndlYi1sYXgiLCAid2ViLXN0
cmljdCJdOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAgICAg
KCJNVUxUSVBMRS1USU1FT1VUIiwgIk1vcmUgdGhhbiBvbmUgbWV0YSBuYW1lPSd0aW1lb3V0JyIs
IGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoIklOVkFMSUQtVElNRU9VVCIsICJJ
bnZhbGlkIHRpbWVvdXQgdmFsdWUgIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAg
ICgiSU5WQUxJRC1USU1FT1VUIiwgIkludmFsaWQgdGltZW91dCB2YWx1ZSBzaG9ydCIsIGZpbGVu
YW1lLCBOb25lKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxpZiBraW5kID09ICJweXRob24i
OgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAgICAgKCJQQVJT
RS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgMiksCisgICAgICAg
ICAgICBdCisKKworZGVmIHRlc3RfZWFybHlfdGVzdGhhcm5lc3NyZXBvcnQoKToKKyAgICBjb2Rl
ID0gYiIiIgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9odG1sPgor
IiIiCisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhjb2RlKQorCisgICAgZm9yIChm
aWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBj
aGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgaW4gWyJ3ZWItbGF4IiwgIndl
Yi1zdHJpY3QiXToKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAg
ICAgICgiRUFSTFktVEVTVEhBUk5FU1NSRVBPUlQiLCAidGVzdGhhcm5lc3NyZXBvcnQuanMgc2Ny
aXB0IHNlZW4gYmVmb3JlIHRlc3RoYXJuZXNzLmpzIHNjcmlwdCIsIGZpbGVuYW1lLCBOb25lKSwK
KyAgICAgICAgICAgIF0KKyAgICAgICAgZWxpZiBraW5kID09ICJweXRob24iOgorICAgICAgICAg
ICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAgICAgKCJQQVJTRS1GQUlMRUQiLCAi
VW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgMiksCisgICAgICAgICAgICBdCisKKwor
ZGVmIHRlc3RfbXVsdGlwbGVfdGVzdGhhcm5lc3MoKToKKyAgICBjb2RlID0gYiIiIgorPGh0bWwg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9odG1sPgorIiIiCisgICAgZXJyb3JfbWFwID0g
Y2hlY2tfd2l0aF9maWxlcyhjb2RlKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2lu
ZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQor
CisgICAgICAgIGlmIGtpbmQgaW4gWyJ3ZWItbGF4IiwgIndlYi1zdHJpY3QiXToKKyAgICAgICAg
ICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAgICgiTVVMVElQTEUtVEVTVEhB
Uk5FU1MiLCAiTW9yZSB0aGFuIG9uZSA8c2NyaXB0IHNyYz0nL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyc+IiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgiTUlTU0lORy1URVNU
SEFSTkVTU1JFUE9SVCIsICJNaXNzaW5nIDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzJz4iLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICBdCisgICAgICAg
IGVsaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWwor
ICAgICAgICAgICAgICAgICgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwg
ZmlsZW5hbWUsIDIpLAorICAgICAgICAgICAgXQorCisKK2RlZiB0ZXN0X211bHRpcGxlX3Rlc3Ro
YXJuZXNzcmVwb3J0KCk6CisgICAgY29kZSA9IGIiIiIKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KKyIiIgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhf
ZmlsZXMoY29kZSkKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJv
cl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBp
ZiBraW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3RyaWN0Il06CisgICAgICAgICAgICBhc3NlcnQg
ZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIk1VTFRJUExFLVRFU1RIQVJORVNTUkVQT1JU
IiwgIk1vcmUgdGhhbiBvbmUgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMnPiIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxpZiBr
aW5kID09ICJweXRob24iOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAg
ICAgICAgICAgKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFt
ZSwgMiksCisgICAgICAgICAgICBdCisKKworZGVmIHRlc3RfcHJlc2VudF90ZXN0aGFybmVzc2Nz
cygpOgorICAgIGNvZGUgPSBiIiIiCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
Y3NzIi8+Cis8L2h0bWw+CisiIiIKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGNv
ZGUpCisKKyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0
ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCBp
biBbIndlYi1sYXgiLCAid2ViLXN0cmljdCJdOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9
PSBbCisgICAgICAgICAgICAgICAgKCJQUkVTRU5ULVRFU1RIQVJORVNTQ1NTIiwgIkV4cGxpY2l0
IGxpbmsgdG8gdGVzdGhhcm5lc3MuY3NzIHByZXNlbnQiLCBmaWxlbmFtZSwgTm9uZSksCisgICAg
ICAgICAgICBdCisgICAgICAgIGVsaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAgIGFz
c2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAgICgiUEFSU0UtRkFJTEVEIiwgIlVuYWJs
ZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDIpLAorICAgICAgICAgICAgXQorCisKK2RlZiB0
ZXN0X3Rlc3RoYXJuZXNzX3BhdGgoKToKKyAgICBjb2RlID0gYiIiIlwKKzxodG1sIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3JpcHQgc3JjPSJ0ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Imh0dHA6Ly93M2MtdGVzdC5vcmcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KKyIiIgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhf
ZmlsZXMoY29kZSkKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJv
cl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBl
eHBlY3RlZCA9IFsoIlczQy1URVNULk9SRyIsICJFeHRlcm5hbCB3M2MtdGVzdC5vcmcgZG9tYWlu
IHVzZWQiLCBmaWxlbmFtZSwgNSldCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAg
ICAgICAgICBleHBlY3RlZC5hcHBlbmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNl
IGZpbGUiLCBmaWxlbmFtZSwgMSkpCisgICAgICAgIGVsaWYga2luZCBpbiBbIndlYi1sYXgiLCAi
d2ViLXN0cmljdCJdOgorICAgICAgICAgICAgZXhwZWN0ZWQuZXh0ZW5kKFsKKyAgICAgICAgICAg
ICAgICAoIlRFU1RIQVJORVNTLVBBVEgiLCAidGVzdGhhcm5lc3MuanMgc2NyaXB0IHNlZW4gd2l0
aCBpbmNvcnJlY3QgcGF0aCIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoIlRF
U1RIQVJORVNTLVBBVEgiLCAidGVzdGhhcm5lc3MuanMgc2NyaXB0IHNlZW4gd2l0aCBpbmNvcnJl
Y3QgcGF0aCIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoIlRFU1RIQVJORVNT
LVBBVEgiLCAidGVzdGhhcm5lc3MuanMgc2NyaXB0IHNlZW4gd2l0aCBpbmNvcnJlY3QgcGF0aCIs
IGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoIlRFU1RIQVJORVNTLVBBVEgiLCAi
dGVzdGhhcm5lc3MuanMgc2NyaXB0IHNlZW4gd2l0aCBpbmNvcnJlY3QgcGF0aCIsIGZpbGVuYW1l
LCBOb25lKSwKKyAgICAgICAgICAgIF0pCisgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gZXhwZWN0
ZWQKKworCitkZWYgdGVzdF90ZXN0aGFybmVzc3JlcG9ydF9wYXRoKCk6CisgICAgY29kZSA9IGIi
IiJcCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8c2NyaXB0
IHNyYz0idGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJodHRw
Oi8vdzNjLXRlc3Qub3JnL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8L2h0bWw+CisiIiIKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGNvZGUpCisK
KyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6
CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbKCJX
M0MtVEVTVC5PUkciLCAiRXh0ZXJuYWwgdzNjLXRlc3Qub3JnIGRvbWFpbiB1c2VkIiwgZmlsZW5h
bWUsIDUpXQorICAgICAgICBpZiBraW5kID09ICJweXRob24iOgorICAgICAgICAgICAgZXhwZWN0
ZWQuYXBwZW5kKCgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5h
bWUsIDEpKQorICAgICAgICBlbGlmIGtpbmQgaW4gWyJ3ZWItbGF4IiwgIndlYi1zdHJpY3QiXToK
KyAgICAgICAgICAgIGV4cGVjdGVkLmV4dGVuZChbCisgICAgICAgICAgICAgICAgKCJURVNUSEFS
TkVTU1JFUE9SVC1QQVRIIiwgInRlc3RoYXJuZXNzcmVwb3J0LmpzIHNjcmlwdCBzZWVuIHdpdGgg
aW5jb3JyZWN0IHBhdGgiLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICAgICAgKCJURVNU
SEFSTkVTU1JFUE9SVC1QQVRIIiwgInRlc3RoYXJuZXNzcmVwb3J0LmpzIHNjcmlwdCBzZWVuIHdp
dGggaW5jb3JyZWN0IHBhdGgiLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICAgICAgKCJU
RVNUSEFSTkVTU1JFUE9SVC1QQVRIIiwgInRlc3RoYXJuZXNzcmVwb3J0LmpzIHNjcmlwdCBzZWVu
IHdpdGggaW5jb3JyZWN0IHBhdGgiLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICAgICAg
KCJURVNUSEFSTkVTU1JFUE9SVC1QQVRIIiwgInRlc3RoYXJuZXNzcmVwb3J0LmpzIHNjcmlwdCBz
ZWVuIHdpdGggaW5jb3JyZWN0IHBhdGgiLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICBd
KQorICAgICAgICBhc3NlcnQgZXJyb3JzID09IGV4cGVjdGVkCisKKworZGVmIHRlc3Rfbm90X3Rl
c3RoYXJuZXNzX3BhdGgoKToKKyAgICBjb2RlID0gYiIiIlwKKzxodG1sIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VicGVyZnRlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KKyIiIgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dp
dGhfZmlsZXMoY29kZSkKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBl
cnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAg
ICBpZiBraW5kID09ICJweXRob24iOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisg
ICAgICAgICAgICAgICAgKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBm
aWxlbmFtZSwgMSksCisgICAgICAgICAgICBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBh
c3NlcnQgZXJyb3JzID09IFtdCisKKworQHB5dGVzdC5tYXJrLnNraXBpZihzaXguUFkzLCByZWFz
b249IkNhbm5vdCBwYXJzZSBwcmludCBzdGF0ZW1lbnRzIGZyb20gcHl0aG9uIDMiKQorZGVmIHRl
c3RfcHJpbnRfc3RhdGVtZW50KCk6CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhi
ImRlZiBmb28oKTpcbiAgcHJpbnQgJ3N0YXRlbWVudCdcbiAgcHJpbnRcbiIpCisKKyAgICBmb3Ig
KGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAg
IGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCA9PSAicHl0aG9uIjoKKyAg
ICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAgICgiUFJJTlQgU1RB
VEVNRU5UIiwgIlByaW50IGZ1bmN0aW9uIHVzZWQiLCBmaWxlbmFtZSwgMiksCisgICAgICAgICAg
ICAgICAgKCJQUklOVCBTVEFURU1FTlQiLCAiUHJpbnQgZnVuY3Rpb24gdXNlZCIsIGZpbGVuYW1l
LCAzKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxpZiBraW5kID09ICJ3ZWItc3RyaWN0IjoK
KyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAgICgiUEFSU0Ut
RkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAg
ICAgICAgXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbXQor
CisKK2RlZiB0ZXN0X3ByaW50X2Z1bmN0aW9uKCk6CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0
aF9maWxlcyhiImRlZiBmb28oKTpcbiAgcHJpbnQoJ2Z1bmN0aW9uJylcbiIpCisKKyAgICBmb3Ig
KGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAg
IGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCA9PSAicHl0aG9uIjoKKyAg
ICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAgICgiUFJJTlQgU1RB
VEVNRU5UIiwgIlByaW50IGZ1bmN0aW9uIHVzZWQiLCBmaWxlbmFtZSwgMiksCisgICAgICAgICAg
ICBdCisgICAgICAgIGVsaWYga2luZCA9PSAid2ViLXN0cmljdCI6CisgICAgICAgICAgICBhc3Nl
cnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUg
dG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gW10KKworCitvcGVuX21vZGVfY29k
ZSA9ICIiIgorZGVmIGZpcnN0KCk6CisgICAgcmV0dXJuIHswfSgidGVzdC5wbmciKQorCitkZWYg
c2Vjb25kKCk6CisgICAgcmV0dXJuIHswfSgidGVzdC5wbmciLCAiciIpCisKK2RlZiB0aGlyZCgp
OgorICAgIHJldHVybiB7MH0oInRlc3QucG5nIiwgInJiIikKKworZGVmIGZvdXJ0aCgpOgorICAg
IHJldHVybiB7MH0oInRlc3QucG5nIiwgZW5jb2Rpbmc9InV0Zi04IikKKworZGVmIGZpZnRoKCk6
CisgICAgcmV0dXJuIHswfSgidGVzdC5wbmciLCBtb2RlPSJyYiIpCisiIiIKKworCitkZWYgdGVz
dF9vcGVuX21vZGUoKToKKyAgICBmb3IgbWV0aG9kIGluIFsib3BlbiIsICJmaWxlIl06CisgICAg
ICAgIGNvZGUgPSBvcGVuX21vZGVfY29kZS5mb3JtYXQobWV0aG9kKS5lbmNvZGUoInV0Zi04IikK
KyAgICAgICAgZXJyb3JzID0gY2hlY2tfZmlsZV9jb250ZW50cygiIiwgInRlc3QucHkiLCBzaXgu
Qnl0ZXNJTyhjb2RlKSkKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBt
ZXNzYWdlID0gKCJGaWxlIG9wZW5lZCB3aXRob3V0IHByb3ZpZGluZyBhbiBleHBsaWNpdCBtb2Rl
IChub3RlOiAiICsKKyAgICAgICAgICAgICAgICAgICAiYmluYXJ5IGZpbGVzIG11c3QgYmUgcmVh
ZCB3aXRoICdiJyBpbiB0aGUgbW9kZSBmbGFncykiKQorCisgICAgICAgIGFzc2VydCBlcnJvcnMg
PT0gWworICAgICAgICAgICAgKCJPUEVOLU5PLU1PREUiLCBtZXNzYWdlLCAidGVzdC5weSIsIDMp
LAorICAgICAgICAgICAgKCJPUEVOLU5PLU1PREUiLCBtZXNzYWdlLCAidGVzdC5weSIsIDEyKSwK
KyAgICAgICAgXQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAiZmlsZW5hbWUs
ZXhwZWN0X2Vycm9yIiwKKyAgICBbCisgICAgICAgICgiZm9vL2Jhci5odG1sIiwgRmFsc2UpLAor
ICAgICAgICAoImNzcy9iYXIuaHRtbCIsIFRydWUpLAorICAgIF0pCitkZWYgdGVzdF9jc3Nfc3Vw
cG9ydF9maWxlKGZpbGVuYW1lLCBleHBlY3RfZXJyb3IpOgorICAgIGVycm9ycyA9IGNoZWNrX2Zp
bGVfY29udGVudHMoIiIsIGZpbGVuYW1lLCBzaXguQnl0ZXNJTyhiIiIpKQorICAgIGNoZWNrX2Vy
cm9ycyhlcnJvcnMpCisKKyAgICBpZiBleHBlY3RfZXJyb3I6CisgICAgICAgIGFzc2VydCBlcnJv
cnMgPT0gWworICAgICAgICAgICAgKCdTVVBQT1JULVdST05HLURJUicsCisgICAgICAgICAgICAg
J1N1cHBvcnQgZmlsZSBub3QgaW4gc3VwcG9ydCBkaXJlY3RvcnknLAorICAgICAgICAgICAgIGZp
bGVuYW1lLAorICAgICAgICAgICAgIE5vbmUpLAorICAgICAgICBdCisgICAgZWxzZToKKyAgICAg
ICAgYXNzZXJ0IGVycm9ycyA9PSBbXQorCisKK2RlZiB0ZXN0X2Nzc19taXNzaW5nX2ZpbGVfaW5f
Y3NzKCk6CisgICAgY29kZSA9IGIiIiJcCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94aHRtbCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8L2h0bWw+CisiIiIKKyAgICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIi
LCAiY3NzL2Zvby9iYXIuaHRtbCIsIHNpeC5CeXRlc0lPKGNvZGUpKQorICAgIGNoZWNrX2Vycm9y
cyhlcnJvcnMpCisKKyAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgKCdNSVNTSU5HLUxJ
TksnLAorICAgICAgICAgJ1Rlc3RjYXNlIGZpbGUgbXVzdCBoYXZlIGEgbGluayB0byBhIHNwZWMn
LAorICAgICAgICAgImNzcy9mb28vYmFyLmh0bWwiLAorICAgICAgICAgTm9uZSksCisgICAgXQor
CisKK2RlZiB0ZXN0X2Nzc19taXNzaW5nX2ZpbGVfbWFudWFsKCk6CisgICAgZXJyb3JzID0gY2hl
Y2tfZmlsZV9jb250ZW50cygiIiwgImNzcy9mb28vYmFyLW1hbnVhbC5odG1sIiwgc2l4LkJ5dGVz
SU8oYiIiKSkKKyAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgYXNzZXJ0IGVycm9ycyA9
PSBbCisgICAgICAgICgnTUlTU0lORy1MSU5LJywKKyAgICAgICAgICdUZXN0Y2FzZSBmaWxlIG11
c3QgaGF2ZSBhIGxpbmsgdG8gYSBzcGVjJywKKyAgICAgICAgICJjc3MvZm9vL2Jhci1tYW51YWwu
aHRtbCIsCisgICAgICAgICBOb25lKSwKKyAgICBdCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJmaWxlbmFtZSIsIFsKKyAgICAiZm9vLndvcmtlci5qcyIsCisgICAgImZvby5hbnkuanMi
LAorXSkKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiaW5wdXQsZXJyb3IiLCBbCisgICAgKGIi
IiIvL01FVEE6IHRpbWVvdXQ9bG9uZ1xuIiIiLCBOb25lKSwKKyAgICAoYiIiIi8vIE1FVEE6IHRp
bWVvdXQ9bG9uZ1xuIiIiLCBOb25lKSwKKyAgICAoYiIiIi8vICBNRVRBOiB0aW1lb3V0PWxvbmdc
biIiIiwgTm9uZSksCisgICAgKGIiIiIvLyBNRVRBOiBzY3JpcHQ9Zm9vLmpzXG4iIiIsIE5vbmUp
LAorICAgIChiIiIiIyBNRVRBOlxuIiIiLCBOb25lKSwKKyAgICAoYiIiIlxuLy8gTUVUQTogdGlt
ZW91dD1sb25nXG4iIiIsICgyLCAiU1RSQVktTUVUQURBVEEiKSksCisgICAgKGIiIiIgLy8gTUVU
QTogdGltZW91dD1sb25nXG4iIiIsICgxLCAiSU5ERU5URUQtTUVUQURBVEEiKSksCisgICAgKGIi
IiIvLyBNRVRBOiB0aW1lb3V0PWxvbmdcbi8vIE1FVEE6IHRpbWVvdXQ9bG9uZ1xuIiIiLCBOb25l
KSwKKyAgICAoYiIiIi8vIE1FVEE6IHRpbWVvdXQ9bG9uZ1xuXG4vLyBNRVRBOiB0aW1lb3V0PWxv
bmdcbiIiIiwgKDMsICJTVFJBWS1NRVRBREFUQSIpKSwKKyAgICAoYiIiIi8vIE1FVEE6IHRpbWVv
dXQ9bG9uZ1xuLy8gU3RhcnQgb2YgdGhlIHRlc3Rcbi8vIE1FVEE6IHRpbWVvdXQ9bG9uZ1xuIiIi
LCAoMywgIlNUUkFZLU1FVEFEQVRBIikpLAorICAgIChiIiIiLy8gTUVUQTpcbiIiIiwgKDEsICJC
Uk9LRU4tTUVUQURBVEEiKSksCisgICAgKGIiIiIvLyBNRVRBOiBmb29iYXJcbiIiIiwgKDEsICJC
Uk9LRU4tTUVUQURBVEEiKSksCisgICAgKGIiIiIvLyBNRVRBOiBmb289YmFyXG4iIiIsICgxLCAi
VU5LTk9XTi1NRVRBREFUQSIpKSwKKyAgICAoYiIiIi8vIE1FVEE6IHRpbWVvdXQ9YmFyXG4iIiIs
ICgxLCAiVU5LTk9XTi1USU1FT1VULU1FVEFEQVRBIikpLAorXSkKK2RlZiB0ZXN0X3NjcmlwdF9t
ZXRhZGF0YShmaWxlbmFtZSwgaW5wdXQsIGVycm9yKToKKyAgICBlcnJvcnMgPSBjaGVja19maWxl
X2NvbnRlbnRzKCIiLCBmaWxlbmFtZSwgc2l4LkJ5dGVzSU8oaW5wdXQpKQorICAgIGNoZWNrX2Vy
cm9ycyhlcnJvcnMpCisKKyAgICBpZiBlcnJvciBpcyBub3QgTm9uZToKKyAgICAgICAgbGluZSwg
a2luZCA9IGVycm9yCisgICAgICAgIG1lc3NhZ2VzID0geworICAgICAgICAgICAgIlNUUkFZLU1F
VEFEQVRBIjogIk1ldGFkYXRhIGNvbW1lbnRzIHNob3VsZCBzdGFydCB0aGUgZmlsZSIsCisgICAg
ICAgICAgICAiSU5ERU5URUQtTUVUQURBVEEiOiAiTWV0YWRhdGEgY29tbWVudHMgc2hvdWxkIHN0
YXJ0IHRoZSBsaW5lIiwKKyAgICAgICAgICAgICJCUk9LRU4tTUVUQURBVEEiOiAiTWV0YWRhdGEg
Y29tbWVudCBpcyBub3QgZm9ybWF0dGVkIGNvcnJlY3RseSIsCisgICAgICAgICAgICAiVU5LTk9X
Ti1USU1FT1VULU1FVEFEQVRBIjogIlVuZXhwZWN0ZWQgdmFsdWUgZm9yIHRpbWVvdXQgbWV0YWRh
dGEiLAorICAgICAgICAgICAgIlVOS05PV04tTUVUQURBVEEiOiAiVW5leHBlY3RlZCBraW5kIG9m
IG1ldGFkYXRhIiwKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAg
ICAgICAgIChraW5kLAorICAgICAgICAgICAgIG1lc3NhZ2VzW2tpbmRdLAorICAgICAgICAgICAg
IGZpbGVuYW1lLAorICAgICAgICAgICAgIGxpbmUpLAorICAgICAgICBdCisgICAgZWxzZToKKyAg
ICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbXQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgi
aW5wdXQsZXJyb3IiLCBbCisgICAgKGIiIiIjTUVUQTogdGltZW91dD1sb25nXG4iIiIsIE5vbmUp
LAorICAgIChiIiIiIyBNRVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgTm9uZSksCisgICAgKGIiIiIj
ICBNRVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgTm9uZSksCisgICAgKGIiIiIiLy8gTUVUQToiXG4i
IiIsIE5vbmUpLAorICAgIChiIiIiXG4jIE1FVEE6IHRpbWVvdXQ9bG9uZ1xuIiIiLCAoMiwgIlNU
UkFZLU1FVEFEQVRBIikpLAorICAgIChiIiIiICMgTUVUQTogdGltZW91dD1sb25nXG4iIiIsICgx
LCAiSU5ERU5URUQtTUVUQURBVEEiKSksCisgICAgKGIiIiIjIE1FVEE6IHRpbWVvdXQ9bG9uZ1xu
IyBNRVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgTm9uZSksCisgICAgKGIiIiIjIE1FVEE6IHRpbWVv
dXQ9bG9uZ1xuXG4jIE1FVEE6IHRpbWVvdXQ9bG9uZ1xuIiIiLCAoMywgIlNUUkFZLU1FVEFEQVRB
IikpLAorICAgIChiIiIiIyBNRVRBOiB0aW1lb3V0PWxvbmdcbiMgU3RhcnQgb2YgdGhlIHRlc3Rc
biMgTUVUQTogdGltZW91dD1sb25nXG4iIiIsICgzLCAiU1RSQVktTUVUQURBVEEiKSksCisgICAg
KGIiIiIjIE1FVEE6XG4iIiIsICgxLCAiQlJPS0VOLU1FVEFEQVRBIikpLAorICAgIChiIiIiIyBN
RVRBOiBmb29iYXJcbiIiIiwgKDEsICJCUk9LRU4tTUVUQURBVEEiKSksCisgICAgKGIiIiIjIE1F
VEE6IGZvbz1iYXJcbiIiIiwgKDEsICJVTktOT1dOLU1FVEFEQVRBIikpLAorICAgIChiIiIiIyBN
RVRBOiB0aW1lb3V0PWJhclxuIiIiLCAoMSwgIlVOS05PV04tVElNRU9VVC1NRVRBREFUQSIpKSwK
K10pCitkZWYgdGVzdF9weXRob25fbWV0YWRhdGEoaW5wdXQsIGVycm9yKToKKyAgICBmaWxlbmFt
ZSA9ICJ0ZXN0LnB5IgorICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVudHMoIiIsIGZpbGVu
YW1lLCBzaXguQnl0ZXNJTyhpbnB1dCkpCisgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAg
IGlmIGVycm9yIGlzIG5vdCBOb25lOgorICAgICAgICBsaW5lLCBraW5kID0gZXJyb3IKKyAgICAg
ICAgbWVzc2FnZXMgPSB7CisgICAgICAgICAgICAiU1RSQVktTUVUQURBVEEiOiAiTWV0YWRhdGEg
Y29tbWVudHMgc2hvdWxkIHN0YXJ0IHRoZSBmaWxlIiwKKyAgICAgICAgICAgICJJTkRFTlRFRC1N
RVRBREFUQSI6ICJNZXRhZGF0YSBjb21tZW50cyBzaG91bGQgc3RhcnQgdGhlIGxpbmUiLAorICAg
ICAgICAgICAgIkJST0tFTi1NRVRBREFUQSI6ICJNZXRhZGF0YSBjb21tZW50IGlzIG5vdCBmb3Jt
YXR0ZWQgY29ycmVjdGx5IiwKKyAgICAgICAgICAgICJVTktOT1dOLVRJTUVPVVQtTUVUQURBVEEi
OiAiVW5leHBlY3RlZCB2YWx1ZSBmb3IgdGltZW91dCBtZXRhZGF0YSIsCisgICAgICAgICAgICAi
VU5LTk9XTi1NRVRBREFUQSI6ICJVbmV4cGVjdGVkIGtpbmQgb2YgbWV0YWRhdGEiLAorICAgICAg
ICB9CisgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgKGtpbmQsCisgICAg
ICAgICAgICAgbWVzc2FnZXNba2luZF0sCisgICAgICAgICAgICAgZmlsZW5hbWUsCisgICAgICAg
ICAgICAgbGluZSksCisgICAgICAgIF0KKyAgICBlbHNlOgorICAgICAgICBhc3NlcnQgZXJyb3Jz
ID09IFtdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfbGludC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45Mzc1ZTJmNzU2MGI0NjA0MmUyYmY0ZjlkY2RlY2NjZDVjYzg0MTBkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL3Rlc3RfbGludC5weQpAQCAtMCwwICsxLDQyMiBAQAorZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCisKK2ltcG9ydCBvcworaW1wb3J0IHN5
cworCitpbXBvcnQgbW9jaworaW1wb3J0IHB5dGVzdAoraW1wb3J0IHNpeAorCitmcm9tIC4uLmxv
Y2FscGF0aHMgaW1wb3J0IHJlcG9fcm9vdAorZnJvbSAuLiBpbXBvcnQgbGludCBhcyBsaW50X21v
ZAorZnJvbSAuLmxpbnQgaW1wb3J0IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzLCBwYXJzZV93aGl0
ZWxpc3QsIGxpbnQsIGNyZWF0ZV9wYXJzZXIKKworX2R1bW15X3JlcG8gPSBvcy5wYXRoLmpvaW4o
b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgImR1bW15IikKKworZGVmIF9tb2NrX2xpbnQobmFt
ZSwgKiprd2FyZ3MpOgorICAgIHdyYXBwZWQgPSBnZXRhdHRyKGxpbnRfbW9kLCBuYW1lKQorICAg
IHJldHVybiBtb2NrLnBhdGNoKGxpbnRfbW9kLl9fbmFtZV9fICsgIi4iICsgbmFtZSwgd3JhcHM9
d3JhcHBlZCwgKiprd2FyZ3MpCisKKworZGVmIHRlc3RfZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMo
KToKKyAgICB3aGl0ZWxpc3QgPSB7CisgICAgICAgICdDT05TT0xFJzogeworICAgICAgICAgICAg
J3N2Zy8qJzogezEyfQorICAgICAgICB9LAorICAgICAgICAnSU5ERU5UIFRBQlMnOiB7CisgICAg
ICAgICAgICAnc3ZnLyonOiB7Tm9uZX0KKyAgICAgICAgfQorICAgIH0KKyAgICAjIHBhcnNlX3do
aXRlbGlzdCBub3JtYWxpc2VzIHRoZSBjYXNlL3BhdGggb2YgdGhlIG1hdGNoIHN0cmluZyBzbyBu
ZWVkIHRvIGRvIHRoZSBzYW1lCisgICAgd2hpdGVsaXN0ID0ge2U6IHtvcy5wYXRoLm5vcm1jYXNl
KGspOiB2IGZvciBrLCB2IGluIHAuaXRlbXMoKX0KKyAgICAgICAgICAgICAgICAgZm9yIGUsIHAg
aW4gd2hpdGVsaXN0Lml0ZW1zKCl9CisgICAgIyBwYXRocyBwYXNzZWQgaW50byBmaWx0ZXJfd2hp
dGVsaXN0X2Vycm9ycyBhcmUgYWx3YXlzIFVuaXggc3R5bGUKKyAgICBmaWx0ZXJlZGZpbGUgPSAn
c3ZnL3Rlc3QuaHRtbCcKKyAgICB1bmZpbHRlcmVkZmlsZSA9ICdodG1sL3Rlc3QuaHRtbCcKKyAg
ICAjIFRlc3RzIGZvciBwYXNzaW5nIG5vIGVycm9ycworICAgIGZpbHRlcmVkID0gZmlsdGVyX3do
aXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBbXSkKKyAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW10K
KyAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKHdoaXRlbGlzdCwgW10pCisg
ICAgYXNzZXJ0IGZpbHRlcmVkID09IFtdCisgICAgIyBUZXN0cyBmb3IgZmlsdGVyaW5nIG9uIGZp
bGUgYW5kIGxpbmUgbnVtYmVyCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9y
cyh3aGl0ZWxpc3QsIFtbJ0NPTlNPTEUnLCAnJywgZmlsdGVyZWRmaWxlLCAxMl1dKQorICAgIGFz
c2VydCBmaWx0ZXJlZCA9PSBbXQorICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJv
cnMod2hpdGVsaXN0LCBbWydDT05TT0xFJywgJycsIHVuZmlsdGVyZWRmaWxlLCAxMl1dKQorICAg
IGFzc2VydCBmaWx0ZXJlZCA9PSBbWydDT05TT0xFJywgJycsIHVuZmlsdGVyZWRmaWxlLCAxMl1d
CisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0NP
TlNPTEUnLCAnJywgZmlsdGVyZWRmaWxlLCAxMV1dKQorICAgIGFzc2VydCBmaWx0ZXJlZCA9PSBb
WydDT05TT0xFJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXQorICAgICMgVGVzdHMgZm9yIGZpbHRl
cmluZyBvbiBqdXN0IGZpbGUKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3Jz
KHdoaXRlbGlzdCwgW1snSU5ERU5UIFRBQlMnLCAnJywgZmlsdGVyZWRmaWxlLCAxMl1dKQorICAg
IGFzc2VydCBmaWx0ZXJlZCA9PSBbXQorICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9l
cnJvcnMod2hpdGVsaXN0LCBbWydJTkRFTlQgVEFCUycsICcnLCBmaWx0ZXJlZGZpbGUsIDExXV0p
CisgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtdCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVs
aXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIHVuZmlsdGVyZWRmaWxl
LCAxMV1dKQorICAgIGFzc2VydCBmaWx0ZXJlZCA9PSBbWydJTkRFTlQgVEFCUycsICcnLCB1bmZp
bHRlcmVkZmlsZSwgMTFdXQorCisKK2RlZiB0ZXN0X3BhcnNlX3doaXRlbGlzdCgpOgorICAgIGlu
cHV0X2J1ZmZlciA9IHNpeC5TdHJpbmdJTygiIiIKKyMgQ29tbWVudAorQ1IgQVQgRU9MOiBzdmcv
aW1wb3J0LyoKK0NSIEFUIEVPTDogc3RyZWFtcy9yZXNvdXJjZXMvdGVzdC11dGlscy5qcworCitJ
TkRFTlQgVEFCUzogLmdpdG1vZHVsZXMKK0lOREVOVCBUQUJTOiBhcHAtdXJpLyoKK0lOREVOVCBU
QUJTOiBzdmcvKgorCitUUkFJTElORyBXSElURVNQQUNFOiBhcHAtdXJpLyoKKworQ09OU09MRTpz
dHJlYW1zL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzOiAxMgorCitDUiBBVCBFT0wsIElOREVOVCBU
QUJTOiBodG1sL3Rlc3QuanMKKworQ1IgQVQgRU9MLCBJTkRFTlQgVEFCUzogaHRtbC90ZXN0Mi5q
czogNDIKKworKjoqLnBkZgorKjpyZXNvdXJjZXMvKgorCisqLCBDUiBBVCBFT0w6ICoucG5nCisi
IiIpCisKKyAgICBleHBlY3RlZF9kYXRhID0geworICAgICAgICAnSU5ERU5UIFRBQlMnOiB7Cisg
ICAgICAgICAgICAnLmdpdG1vZHVsZXMnOiB7Tm9uZX0sCisgICAgICAgICAgICAnYXBwLXVyaS8q
Jzoge05vbmV9LAorICAgICAgICAgICAgJ3N2Zy8qJzoge05vbmV9LAorICAgICAgICAgICAgJ2h0
bWwvdGVzdC5qcyc6IHtOb25lfSwKKyAgICAgICAgICAgICdodG1sL3Rlc3QyLmpzJzogezQyfSwK
KyAgICAgICAgfSwKKyAgICAgICAgJ1RSQUlMSU5HIFdISVRFU1BBQ0UnOiB7CisgICAgICAgICAg
ICAnYXBwLXVyaS8qJzoge05vbmV9LAorICAgICAgICB9LAorICAgICAgICAnQ09OU09MRSc6IHsK
KyAgICAgICAgICAgICdzdHJlYW1zL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzJzogezEyfSwKKyAg
ICAgICAgfSwKKyAgICAgICAgJ0NSIEFUIEVPTCc6IHsKKyAgICAgICAgICAgICdzdHJlYW1zL3Jl
c291cmNlcy90ZXN0LXV0aWxzLmpzJzoge05vbmV9LAorICAgICAgICAgICAgJ3N2Zy9pbXBvcnQv
Kic6IHtOb25lfSwKKyAgICAgICAgICAgICdodG1sL3Rlc3QuanMnOiB7Tm9uZX0sCisgICAgICAg
ICAgICAnaHRtbC90ZXN0Mi5qcyc6IHs0Mn0sCisgICAgICAgIH0KKyAgICB9CisgICAgZXhwZWN0
ZWRfZGF0YSA9IHtlOiB7b3MucGF0aC5ub3JtY2FzZShrKTogdiBmb3IgaywgdiBpbiBwLml0ZW1z
KCl9CisgICAgICAgICAgICAgICAgICAgICBmb3IgZSwgcCBpbiBleHBlY3RlZF9kYXRhLml0ZW1z
KCl9CisgICAgZXhwZWN0ZWRfaWdub3JlZCA9IHtvcy5wYXRoLm5vcm1jYXNlKHgpIGZvciB4IGlu
IHsiKi5wZGYiLCAicmVzb3VyY2VzLyoiLCAiKi5wbmcifX0KKyAgICBkYXRhLCBpZ25vcmVkID0g
cGFyc2Vfd2hpdGVsaXN0KGlucHV0X2J1ZmZlcikKKyAgICBhc3NlcnQgZGF0YSA9PSBleHBlY3Rl
ZF9kYXRhCisgICAgYXNzZXJ0IGlnbm9yZWQgPT0gZXhwZWN0ZWRfaWdub3JlZAorCisKK2RlZiB0
ZXN0X2xpbnRfbm9fZmlsZXMoY2FwbG9nKToKKyAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFtd
LCAibm9ybWFsIikKKyAgICBhc3NlcnQgcnYgPT0gMAorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9
PSAiIgorCisKK2RlZiB0ZXN0X2xpbnRfaWdub3JlZF9maWxlKGNhcGxvZyk6CisgICAgd2l0aCBf
bW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdp
dGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxl
X2NvbnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImJyb2tlbl9p
Z25vcmVkLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAg
ICAgICAgICAgYXNzZXJ0IG5vdCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsZWQKKyAgICAgICAgICAg
IGFzc2VydCBub3QgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbGVkCisgICAgYXNzZXJ0
IGNhcGxvZy50ZXh0ID09ICIiCisKKworZGVmIHRlc3RfbGludF9ub3RfZXhpc3RpbmdfZmlsZShj
YXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVj
a19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBh
cyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgICMgcmVhbGx5IGxvbmcg
cGF0aC1saW50ZWQgZmlsZW5hbWUKKyAgICAgICAgICAgIG5hbWUgPSAiYSIgKiAyNTYgKyAiLmh0
bWwiCisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFtuYW1lXSwgIm5vcm1hbCIp
CisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG5vdCBtb2Nr
ZWRfY2hlY2tfcGF0aC5jYWxsZWQKKyAgICAgICAgICAgIGFzc2VydCBub3QgbW9ja2VkX2NoZWNr
X2ZpbGVfY29udGVudHMuY2FsbGVkCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisKKwor
ZGVmIHRlc3RfbGludF9wYXNzaW5nKGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50KCJjaGVj
a19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgi
Y2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAg
ICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbIm9rYXkuaHRtbCJdLCAibm9ybWFsIikK
KyAgICAgICAgICAgIGFzc2VydCBydiA9PSAwCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2No
ZWNrX3BhdGguY2FsbF9jb3VudCA9PSAxCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNr
X2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAxCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09
ICIiCisKKworZGVmIHRlc3RfbGludF9mYWlsaW5nKGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19s
aW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21v
Y2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRl
bnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImJyb2tlbi5odG1sIl0s
ICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDEKKyAgICAgICAgICAgIGFzc2Vy
dCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDEKKyAgICAgICAgICAgIGFzc2VydCBt
b2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDEKKyAgICBhc3NlcnQgIlRS
QUlMSU5HIFdISVRFU1BBQ0UiIGluIGNhcGxvZy50ZXh0CisgICAgYXNzZXJ0ICJicm9rZW4uaHRt
bDoxIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0ZXN0X3JlZl9leGlzdGVudF9yZWxhdGl2ZShj
YXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVj
a19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBh
cyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVt
bXlfcmVwbywgWyJyZWYvZXhpc3RlbnRfcmVsYXRpdmUuaHRtbCJdLCAibm9ybWFsIikKKyAgICAg
ICAgICAgIGFzc2VydCBydiA9PSAwCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3Bh
dGguY2FsbF9jb3VudCA9PSAxCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVf
Y29udGVudHMuY2FsbF9jb3VudCA9PSAxCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisK
KworZGVmIHRlc3RfcmVmX2V4aXN0ZW50X3Jvb3RfcmVsYXRpdmUoY2FwbG9nKToKKyAgICB3aXRo
IF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAg
d2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2Zp
bGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsicmVmL2V4
aXN0ZW50X3Jvb3RfcmVsYXRpdmUuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2Vy
dCBydiA9PSAwCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3Vu
dCA9PSAxCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2Fs
bF9jb3VudCA9PSAxCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisKKworZGVmIHRlc3Rf
cmVmX25vbl9leGlzdGVudF9yZWxhdGl2ZShjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgi
Y2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xp
bnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoK
KyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJyZWYvbm9uX2V4aXN0ZW50X3Jl
bGF0aXZlLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMQorICAg
ICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMQorICAgICAg
ICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMQor
ICAgIGFzc2VydCAiTk9OLUVYSVNURU5ULVJFRiIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3NlcnQg
InJlZi9ub25fZXhpc3RlbnRfcmVsYXRpdmUuaHRtbCIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3Nl
cnQgIm5vbl9leGlzdGVudF9maWxlLmh0bWwiIGluIGNhcGxvZy50ZXh0CisKKworZGVmIHRlc3Rf
cmVmX25vbl9leGlzdGVudF9yb290X3JlbGF0aXZlKGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19s
aW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21v
Y2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRl
bnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbInJlZi9ub25fZXhpc3Rl
bnRfcm9vdF9yZWxhdGl2ZS5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2
ID09IDEKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09
IDEKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2Nv
dW50ID09IDEKKyAgICBhc3NlcnQgIk5PTi1FWElTVEVOVC1SRUYiIGluIGNhcGxvZy50ZXh0Cisg
ICAgYXNzZXJ0ICJyZWYvbm9uX2V4aXN0ZW50X3Jvb3RfcmVsYXRpdmUuaHRtbCIgaW4gY2FwbG9n
LnRleHQKKyAgICBhc3NlcnQgIi9ub25fZXhpc3RlbnRfZmlsZS5odG1sIiBpbiBjYXBsb2cudGV4
dAorCisKKworZGVmIHRlc3RfcmVmX2Fic29sdXRlX3VybChjYXBsb2cpOgorICAgIHdpdGggX21v
Y2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRo
IF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9j
b250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJyZWYvYWJzb2x1
dGUuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAxCisgICAgICAg
ICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAxCisgICAgICAgICAg
ICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAxCisgICAg
YXNzZXJ0ICJBQlNPTFVURS1VUkwtUkVGIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2VydCAiaHR0
cDovL2V4YW1wbGUuY29tL3JlZmVyZW5jZS5odG1sIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2Vy
dCAicmVmL2Fic29sdXRlLmh0bWwiIGluIGNhcGxvZy50ZXh0CisKKworZGVmIHRlc3RfcmVmX3Nh
bWVfZmlsZV9lbXB0eShjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIp
IGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2Zp
bGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAg
IHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJyZWYvc2FtZV9maWxlX2VtcHR5Lmh0bWwiXSwgIm5v
cm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMQorICAgICAgICAgICAgYXNzZXJ0IG1v
Y2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMQorICAgICAgICAgICAgYXNzZXJ0IG1vY2tl
ZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMQorICAgIGFzc2VydCAiU0FNRS1G
SUxFLVJFRiIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3NlcnQgInNhbWVfZmlsZV9lbXB0eS5odG1s
IiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0ZXN0X3JlZl9zYW1lX2ZpbGVfcGF0aChjYXBsb2cp
OgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRo
OgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2Nr
ZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVw
bywgWyJyZWYvc2FtZV9maWxlX3BhdGguaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFz
c2VydCBydiA9PSAxCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9j
b3VudCA9PSAxCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMu
Y2FsbF9jb3VudCA9PSAxCisgICAgYXNzZXJ0ICJTQU1FLUZJTEUtUkVGIiBpbiBjYXBsb2cudGV4
dAorICAgIGFzc2VydCAic2FtZV9maWxlX3BhdGguaHRtbCIgaW4gY2FwbG9nLnRleHQKKworCitk
ZWYgdGVzdF9saW50X3Bhc3NpbmdfYW5kX2ZhaWxpbmcoY2FwbG9nKToKKyAgICB3aXRoIF9tb2Nr
X2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBf
bW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29u
dGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiYnJva2VuLmh0bWwi
LCAib2theS5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDEKKyAg
ICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAg
ICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIK
KyAgICBhc3NlcnQgIlRSQUlMSU5HIFdISVRFU1BBQ0UiIGluIGNhcGxvZy50ZXh0CisgICAgYXNz
ZXJ0ICJicm9rZW4uaHRtbDoxIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2VydCAib2theS5odG1s
IiBub3QgaW4gY2FwbG9nLnRleHQKKworCitkZWYgdGVzdF9jaGVja19jc3NfZ2xvYmFsbHlfdW5p
cXVlX2lkZW50aWNhbF90ZXN0KGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19w
YXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hl
Y2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAg
ICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImNzcy9jc3MtdW5pcXVlL21hdGNoL2EuaHRt
bCIsICJjc3MvY3NzLXVuaXF1ZS9hLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3Nl
cnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291
bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNh
bGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0
X2NoZWNrX2Nzc19nbG9iYWxseV91bmlxdWVfZGlmZmVyZW50X3Rlc3QoY2FwbG9nKToKKyAgICB3
aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAg
ICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNr
X2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiY3Nz
L2Nzcy11bmlxdWUvbm90LW1hdGNoL2EuaHRtbCIsICJjc3MvY3NzLXVuaXF1ZS9hLmh0bWwiXSwg
Im5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMgorICAgICAgICAgICAgYXNzZXJ0
IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1v
Y2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCAiQ1NT
LUNPTExJRElORy1URVNULU5BTUUiIGluIGNhcGxvZy50ZXh0CisKKworZGVmIHRlc3RfY2hlY2tf
Y3NzX2dsb2JhbGx5X3VuaXF1ZV9kaWZmZXJlbnRfc3BlY190ZXN0KGNhcGxvZyk6CisgICAgd2l0
aCBfbW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAg
IHdpdGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19m
aWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImNzcy9j
c3MtdW5pcXVlL3NlbGVjdG9ycy9hLmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUvYS5odG1sIl0sICJu
b3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFzc2VydCBt
b2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2Nr
ZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIKKyAgICBhc3NlcnQgY2FwbG9n
LnRleHQgPT0gIiIKKworCitkZWYgdGVzdF9jaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlX3N1cHBv
cnRfaWdub3JlZChjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFz
IG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVf
Y29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2
ID0gbGludChfZHVtbXlfcmVwbywgWyJjc3MvY3NzLXVuaXF1ZS9zdXBwb3J0L2EuaHRtbCIsICJj
c3MvY3NzLXVuaXF1ZS9zdXBwb3J0L3Rvb2xzL2EuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAg
ICAgIGFzc2VydCBydiA9PSAwCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGgu
Y2FsbF9jb3VudCA9PSAyCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29u
dGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisKKwor
ZGVmIHRlc3RfY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV9zdXBwb3J0X2lkZW50aWNhbChjYXBs
b2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19w
YXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBt
b2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlf
cmVwbywgWyJjc3MvY3NzLXVuaXF1ZS9zdXBwb3J0L2EuaHRtbCIsICJjc3MvY3NzLXVuaXF1ZS9t
YXRjaC9zdXBwb3J0L2EuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9
PSAwCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAy
CisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3Vu
dCA9PSAyCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisKKworZGVmIHRlc3RfY2hlY2tf
Y3NzX2dsb2JhbGx5X3VuaXF1ZV9zdXBwb3J0X2RpZmZlcmVudChjYXBsb2cpOgorICAgIHdpdGgg
X21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3
aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmls
ZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJjc3MvY3Nz
LXVuaXF1ZS9ub3QtbWF0Y2gvc3VwcG9ydC9hLmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUvc3VwcG9y
dC9hLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMgorICAgICAg
ICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAg
ICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAg
IGFzc2VydCAiQ1NTLUNPTExJRElORy1TVVBQT1JULU5BTUUiIGluIGNhcGxvZy50ZXh0CisKKwor
ZGVmIHRlc3RfY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV90ZXN0X3N1cHBvcnQoY2FwbG9nKToK
KyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoK
KyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2Vk
X2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8s
IFsiY3NzL2Nzcy11bmlxdWUvc3VwcG9ydC9hLmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUvYS5odG1s
Il0sICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFz
c2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAgICAgICAgIGFzc2Vy
dCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIKKyAgICBhc3NlcnQg
Y2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYgdGVzdF9jaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVl
X3JlZl9pZGVudGljYWwoY2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgi
KSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19m
aWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAgICAg
ICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiY3NzL2Nzcy11bmlxdWUvYS1yZWYuaHRtbCIsICJj
c3MvY3NzLXVuaXF1ZS9tYXRjaC9hLXJlZi5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAg
YXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxs
X2NvdW50ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50
cy5jYWxsX2NvdW50ID09IDIKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYg
dGVzdF9jaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlX3JlZl9kaWZmZXJlbnQoY2FwbG9nKToKKyAg
ICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAg
ICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2No
ZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsi
Y3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EtcmVmLmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUvYS1y
ZWYuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAyCisgICAgICAg
ICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAyCisgICAgICAgICAg
ICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAg
YXNzZXJ0ICJDU1MtQ09MTElESU5HLVJFRi1OQU1FIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0
ZXN0X2NoZWNrX2Nzc19nbG9iYWxseV91bmlxdWVfdGVzdF9yZWYoY2FwbG9nKToKKyAgICB3aXRo
IF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAg
d2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2Zp
bGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiY3NzL2Nz
cy11bmlxdWUvYS1yZWYuaHRtbCIsICJjc3MvY3NzLXVuaXF1ZS9hLmh0bWwiXSwgIm5vcm1hbCIp
CisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9j
aGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVj
a19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9
PSAiIgorCisKK2RlZiB0ZXN0X2NoZWNrX2Nzc19nbG9iYWxseV91bmlxdWVfaWdub3JlZChjYXBs
b2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19w
YXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBt
b2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlf
cmVwbywgWyJjc3MvY3NzLXVuaXF1ZS90b29scy9hLmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUvbm90
LW1hdGNoL3Rvb2xzL2EuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9
PSAwCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAy
CisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3Vu
dCA9PSAyCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisKKworZGVmIHRlc3RfY2hlY2tf
Y3NzX2dsb2JhbGx5X3VuaXF1ZV9pZ25vcmVkX2RpcihjYXBsb2cpOgorICAgIHdpdGggX21vY2tf
bGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9t
b2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250
ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJjc3MvY3NzLXVuaXF1
ZS9zdXBwb3J0L2EuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAw
CisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAxCisg
ICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9
PSAxCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisKKworZGVmIHRlc3RfYWxsX2ZpbGVz
eXN0ZW1fcGF0aHMoKToKKyAgICB3aXRoIG1vY2sucGF0Y2goCisgICAgICAgICAgICAnb3Mud2Fs
aycsCisgICAgICAgICAgICByZXR1cm5fdmFsdWU9WygnLicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbJ2Rpcl9hJywgJ2Rpcl9iJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBb
J2ZpbGVfYScsICdmaWxlX2InXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChvcy5wYXRo
LmpvaW4oJy4nLCAnZGlyX2EnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWydmaWxlX2MnLCAnZmlsZV9kJ10pXQorICAgICkgYXMg
bToKKyAgICAgICAgZ290ID0gbGlzdChsaW50X21vZC5hbGxfZmlsZXN5c3RlbV9wYXRocygnLicp
KQorICAgICAgICBhc3NlcnQgZ290ID09IFsnZmlsZV9hJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgJ2ZpbGVfYicsCisgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbignZGlyX2En
LCAnZmlsZV9jJyksCisgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbignZGlyX2En
LCAnZmlsZV9kJyldCisKKworZGVmIHRlc3RfbWFpbl93aXRoX2FyZ3MoKToKKyAgICBvcmlnX2Fy
Z3YgPSBzeXMuYXJndgorICAgIHRyeToKKyAgICAgICAgc3lzLmFyZ3YgPSBbJy4vbGludCcsICdh
JywgJ2InLCAnYyddCisgICAgICAgIHdpdGggX21vY2tfbGludCgnbGludCcsIHJldHVybl92YWx1
ZT1UcnVlKSBhcyBtOgorICAgICAgICAgICAgbGludF9tb2QubWFpbigqKnZhcnMoY3JlYXRlX3Bh
cnNlcigpLnBhcnNlX2FyZ3MoKSkpCisgICAgICAgICAgICBtLmFzc2VydF9jYWxsZWRfb25jZV93
aXRoKHJlcG9fcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29z
LnBhdGgucmVscGF0aChvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIHgpLCByZXBvX3Jvb3QpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBbJ2EnLCAnYics
ICdjJ11dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9ybWFsIikK
KyAgICBmaW5hbGx5OgorICAgICAgICBzeXMuYXJndiA9IG9yaWdfYXJndgorCisKK2RlZiB0ZXN0
X21haW5fbm9fYXJncygpOgorICAgIG9yaWdfYXJndiA9IHN5cy5hcmd2CisgICAgdHJ5OgorICAg
ICAgICBzeXMuYXJndiA9IFsnLi9saW50J10KKyAgICAgICAgd2l0aCBfbW9ja19saW50KCdsaW50
JywgcmV0dXJuX3ZhbHVlPVRydWUpIGFzIG06CisgICAgICAgICAgICB3aXRoIF9tb2NrX2xpbnQo
J2NoYW5nZWRfZmlsZXMnLCByZXR1cm5fdmFsdWU9Wydmb28nLCAnYmFyJ10pIGFzIG0yOgorICAg
ICAgICAgICAgICAgIGxpbnRfbW9kLm1haW4oKip2YXJzKGNyZWF0ZV9wYXJzZXIoKS5wYXJzZV9h
cmdzKCkpKQorICAgICAgICAgICAgICAgIG0uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgocmVwb19y
b290LCBbJ2ZvbycsICdiYXInXSwgIm5vcm1hbCIpCisgICAgZmluYWxseToKKyAgICAgICAgc3lz
LmFyZ3YgPSBvcmlnX2FyZ3YKKworCitkZWYgdGVzdF9tYWluX2FsbCgpOgorICAgIG9yaWdfYXJn
diA9IHN5cy5hcmd2CisgICAgdHJ5OgorICAgICAgICBzeXMuYXJndiA9IFsnLi9saW50JywgJy0t
YWxsJ10KKyAgICAgICAgd2l0aCBfbW9ja19saW50KCdsaW50JywgcmV0dXJuX3ZhbHVlPVRydWUp
IGFzIG06CisgICAgICAgICAgICB3aXRoIF9tb2NrX2xpbnQoJ2FsbF9maWxlc3lzdGVtX3BhdGhz
JywgcmV0dXJuX3ZhbHVlPVsnZm9vJywgJ2JhciddKSBhcyBtMjoKKyAgICAgICAgICAgICAgICBs
aW50X21vZC5tYWluKCoqdmFycyhjcmVhdGVfcGFyc2VyKCkucGFyc2VfYXJncygpKSkKKyAgICAg
ICAgICAgICAgICBtLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKHJlcG9fcm9vdCwgWydmb28nLCAn
YmFyJ10sICJub3JtYWwiKQorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5hcmd2ID0gb3JpZ19h
cmd2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9wYXRoX2xpbnRzLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfcGF0aF9s
aW50cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iNTgxODI4OWVhY2M1ZWU4YTg3OWFjOThiYTIzZWE5MjMzZThm
YTdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfcGF0aF9saW50cy5weQpAQCAtMCwwICsx
LDQxIEBACitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKKworZnJvbSAu
LmxpbnQgaW1wb3J0IGNoZWNrX3BhdGgKK2Zyb20gLmJhc2UgaW1wb3J0IGNoZWNrX2Vycm9ycwor
aW1wb3J0IHB5dGVzdAoraW1wb3J0IHNpeAorCitkZWYgdGVzdF9hbGxvd2VkX3BhdGhfbGVuZ3Ro
KCk6CisgICAgYmFzZW5hbWUgPSAyOSAqICJ0ZXN0LyIKKworICAgIGZvciBpZHggaW4gcmFuZ2Uo
NSk6CisgICAgICAgIGZpbGVuYW1lID0gYmFzZW5hbWUgKyBpZHggKiAiYSIKKworICAgICAgICBl
cnJvcnMgPSBjaGVja19wYXRoKCIvZm9vLyIsIGZpbGVuYW1lKQorICAgICAgICBjaGVja19lcnJv
cnMoZXJyb3JzKQorICAgICAgICBhc3NlcnQgZXJyb3JzID09IFtdCisKKworZGVmIHRlc3RfZm9y
YmlkZGVuX3BhdGhfbGVuZ3RoKCk6CisgICAgYmFzZW5hbWUgPSAyOSAqICJ0ZXN0LyIKKworICAg
IGZvciBpZHggaW4gcmFuZ2UoNSwgMTApOgorICAgICAgICBmaWxlbmFtZSA9IGJhc2VuYW1lICsg
aWR4ICogImEiCisgICAgICAgIG1lc3NhZ2UgPSAiLyVzIGxvbmdlciB0aGFuIG1heGltdW0gcGF0
aCBsZW5ndGggKCVzID4gMTUwKSIgJSAoZmlsZW5hbWUsIDE0NiArIGlkeCkKKworICAgICAgICBl
cnJvcnMgPSBjaGVja19wYXRoKCIvZm9vLyIsIGZpbGVuYW1lKQorICAgICAgICBjaGVja19lcnJv
cnMoZXJyb3JzKQorICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsoIlBBVEggTEVOR1RIIiwgbWVz
c2FnZSwgZmlsZW5hbWUsIE5vbmUpXQorCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoInBhdGhf
ZW5kaW5nLGdlbmVyYXRlZCIsIFsoIi53b3JrZXIuaHRtbCIsICIud29ya2VyLmpzIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIi5hbnkud29y
a2VyLmh0bWwiLCAiLmFueS5qcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCIuYW55Lmh0bWwiLCAiLmFueS5qcyIpXSkKK2RlZiB0ZXN0X2Zv
cmJpZGRlbl9wYXRoX2VuZGluZ3MocGF0aF9lbmRpbmcsIGdlbmVyYXRlZCk6CisgICAgcGF0aCA9
ICIvdGVzdC90ZXN0IiArIHBhdGhfZW5kaW5nCisKKyAgICBtZXNzYWdlID0gKCJwYXRoIGVuZHMg
d2l0aCAlcyB3aGljaCBjb2xsaWRlcyB3aXRoIGdlbmVyYXRlZCB0ZXN0cyBmcm9tICVzIGZpbGVz
IiAlCisgICAgICAgICAgICAgICAocGF0aF9lbmRpbmcsIGdlbmVyYXRlZCkpCisKKyAgICBlcnJv
cnMgPSBjaGVja19wYXRoKCIvZm9vLyIsIHBhdGgpCisgICAgY2hlY2tfZXJyb3JzKGVycm9ycykK
KyAgICBhc3NlcnQgZXJyb3JzID09IFsoIldPUktFUiBDT0xMSVNJT04iLCBtZXNzYWdlLCBwYXRo
LCBOb25lKV0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weQppbmRleCA2MWJlNDQ0
M2I0MDIxYTdkZmYwM2Y3MzVjMTU4Nzg2NzE2MzY0YTFmLi4wNmFlM2MyMzZlNjE3MDQ3ZjMwOGE1
YTg2NDRlOTRmOWFmZDE3OTI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5
CkBAIC0xMDIsMTcgKzEwMiwyMCBAQCBjbGFzcyBVUkxNYW5pZmVzdEl0ZW0oTWFuaWZlc3RJdGVt
KToKIGNsYXNzIFRlc3RoYXJuZXNzVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgogICAgIGl0ZW1fdHlw
ZSA9ICJ0ZXN0aGFybmVzcyIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb3VyY2VfZmlsZSwg
dXJsLCB1cmxfYmFzZT0iLyIsIHRpbWVvdXQ9Tm9uZSwgbWFuaWZlc3Q9Tm9uZSk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHNvdXJjZV9maWxlLCB1cmwsIHVybF9iYXNlPSIvIiwgdGltZW91dD1O
b25lLCB0ZXN0ZHJpdmVyPUZhbHNlLCBtYW5pZmVzdD1Ob25lKToKICAgICAgICAgVVJMTWFuaWZl
c3RJdGVtLl9faW5pdF9fKHNlbGYsIHNvdXJjZV9maWxlLCB1cmwsIHVybF9iYXNlPXVybF9iYXNl
LCBtYW5pZmVzdD1tYW5pZmVzdCkKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAorICAg
ICAgICBzZWxmLnRlc3Rkcml2ZXIgPSB0ZXN0ZHJpdmVyCiAKICAgICBkZWYgbWV0YV9rZXkoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiAoc2VsZi50aW1lb3V0LCkKKyAgICAgICAgcmV0dXJuIChzZWxm
LnRpbWVvdXQsIHNlbGYudGVzdGRyaXZlcikKIAogICAgIGRlZiB0b19qc29uKHNlbGYpOgogICAg
ICAgICBydiA9IFVSTE1hbmlmZXN0SXRlbS50b19qc29uKHNlbGYpCiAgICAgICAgIGlmIHNlbGYu
dGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJ2Wy0xXVsidGltZW91dCJdID0gc2Vs
Zi50aW1lb3V0CisgICAgICAgIGlmIHNlbGYudGVzdGRyaXZlcjoKKyAgICAgICAgICAgIHJ2Wy0x
XVsidGVzdGRyaXZlciJdID0gc2VsZi50ZXN0ZHJpdmVyCiAgICAgICAgIHJldHVybiBydgogCiAg
ICAgQGNsYXNzbWV0aG9kCkBAIC0xMjQsNiArMTI3LDcgQEAgY2xhc3MgVGVzdGhhcm5lc3NUZXN0
KFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgICAgICAgICAgICAgICAgdXJsLAogICAgICAgICAgICAg
ICAgICAgIHVybF9iYXNlPW1hbmlmZXN0LnVybF9iYXNlLAogICAgICAgICAgICAgICAgICAgIHRp
bWVvdXQ9ZXh0cmFzLmdldCgidGltZW91dCIpLAorICAgICAgICAgICAgICAgICAgIHRlc3Rkcml2
ZXI9Ym9vbChleHRyYXMuZ2V0KCJ0ZXN0ZHJpdmVyIikpLAogICAgICAgICAgICAgICAgICAgIG1h
bmlmZXN0PW1hbmlmZXN0KQogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291cmNlZmlsZS5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291
cmNlZmlsZS5weQppbmRleCBiZjcyZjQ1YjM1MTdiMWYxZjUzMzY3MjRhMzFlYzI3ODUxNjFmMGVl
Li4wOTNmYzJiZDQ3MDJmNzhmOWEwYWJjNzc5YTVlNzNhNTk1OTczMGRkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0
L3NvdXJjZWZpbGUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9tYW5pZmVzdC9zb3VyY2VmaWxlLnB5CkBAIC01NCw4ICs1NCw3IEBAIGNs
YXNzIFNvdXJjZUZpbGUob2JqZWN0KToKICAgICAgICAgICAgICAgICJ4aHRtbCI6bGFtYmRhIHg6
RWxlbWVudFRyZWUucGFyc2UoeCwgWE1MUGFyc2VyLlhNTFBhcnNlcigpKSwKICAgICAgICAgICAg
ICAgICJzdmciOmxhbWJkYSB4OkVsZW1lbnRUcmVlLnBhcnNlKHgsIFhNTFBhcnNlci5YTUxQYXJz
ZXIoKSl9CiAKLSAgICByb290X2Rpcl9ub25fdGVzdCA9IHNldChbImNvbW1vbiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ3b3JrLWluLXByb2dyZXNzIl0pCisgICAgcm9vdF9kaXJf
bm9uX3Rlc3QgPSBzZXQoWyJjb21tb24iXSkKIAogICAgIGRpcl9ub25fdGVzdCA9IHNldChbInJl
c291cmNlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydCIsCkBAIC02Myw4ICs2
Miw3IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKIAogICAgIGRpcl9wYXRoX25vbl90ZXN0
ID0geygiY3NzMjEiLCAiYXJjaGl2ZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgiY3Nz
IiwgIkNTUzIiLCAiYXJjaGl2ZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICgiY3NzIiwg
ImNvbW1vbiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICgiY3NzIiwgIndvcmstaW4tcHJv
Z3Jlc3MiKX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAoImNzcyIsICJjb21tb24iKX0KIAog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCByZWxfcGF0aCwgdXJsX2Jhc2UsIGNv
bnRlbnRzPU5vbmUpOgogICAgICAgICAiIiJPYmplY3QgcmVwcmVzZW50aW5nIGEgZmlsZSBpbiBh
IHNvdXJjZSB0cmVlLgpAQCAtMzgyLDYgKzM4MCwyMCBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVj
dCk6CiAKICAgICAgICAgcmV0dXJuIHJ2CiAKKyAgICBAY2FjaGVkX3Byb3BlcnR5CisgICAgZGVm
IHRlc3Rkcml2ZXJfbm9kZXMoc2VsZik6CisgICAgICAgICIiIkxpc3Qgb2YgRWxlbWVudFRyZWUg
RWxlbWVudHMgY29ycmVzcG9uZGluZyB0byBub2RlcyByZXByZXNlbnRpbmcgYQorICAgICAgICB0
ZXN0ZHJpdmVyLmpzIHNjcmlwdCIiIgorICAgICAgICByZXR1cm4gc2VsZi5yb290LmZpbmRhbGwo
Ii4vL3todHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sfXNjcmlwdFtAc3JjPScvcmVzb3VyY2Vz
L3Rlc3Rkcml2ZXIuanMnXSIpCisKKyAgICBAY2FjaGVkX3Byb3BlcnR5CisgICAgZGVmIGhhc190
ZXN0ZHJpdmVyKHNlbGYpOgorICAgICAgICAiIiJCb29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0
aGUgZmlsZSBjb250ZW50IHJlcHJlc2VudHMgYQorICAgICAgICB0ZXN0aGFybmVzcy5qcyB0ZXN0
IiIiCisgICAgICAgIGlmIHNlbGYucm9vdCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi50ZXN0ZHJpdmVyX25vZGVzKQorCiAgICAgQGNh
Y2hlZF9wcm9wZXJ0eQogICAgIGRlZiByZWZ0ZXN0X25vZGVzKHNlbGYpOgogICAgICAgICAiIiJM
aXN0IG9mIEVsZW1lbnRUcmVlIEVsZW1lbnRzIGNvcnJlc3BvbmRpbmcgdG8gbm9kZXMgcmVwcmVz
ZW50aW5nIGEKQEAgLTUyMyw5ICs1MzUsMTAgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgog
CiAgICAgICAgIGVsaWYgc2VsZi5jb250ZW50X2lzX3Rlc3RoYXJuZXNzOgogICAgICAgICAgICAg
cnYgPSBUZXN0aGFybmVzc1Rlc3QuaXRlbV90eXBlLCBbXQorICAgICAgICAgICAgdGVzdGRyaXZl
ciA9IHNlbGYuaGFzX3Rlc3Rkcml2ZXIKICAgICAgICAgICAgIGZvciB2YXJpYW50IGluIHNlbGYu
dGVzdF92YXJpYW50czoKICAgICAgICAgICAgICAgICB1cmwgPSBzZWxmLnVybCArIHZhcmlhbnQK
LSAgICAgICAgICAgICAgICBydlsxXS5hcHBlbmQoVGVzdGhhcm5lc3NUZXN0KHNlbGYsIHVybCwg
dGltZW91dD1zZWxmLnRpbWVvdXQpKQorICAgICAgICAgICAgICAgIHJ2WzFdLmFwcGVuZChUZXN0
aGFybmVzc1Rlc3Qoc2VsZiwgdXJsLCB0aW1lb3V0PXNlbGYudGltZW91dCwgdGVzdGRyaXZlcj10
ZXN0ZHJpdmVyKSkKIAogICAgICAgICBlbGlmIHNlbGYuY29udGVudF9pc19yZWZfbm9kZToKICAg
ICAgICAgICAgIHJ2ID0gKFJlZlRlc3ROb2RlLml0ZW1fdHlwZSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336149</attachid>
            <date>2018-03-20 14:06:53 -0700</date>
            <delta_ts>2018-03-21 06:52:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183796-20180320170652.patch</filename>
            <type>text/plain</type>
            <size>98987</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5Njc1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjE2MTY2NGUxMWM2YjUxOGI4NzkwYWNkNTcyMTJiZDU3
ODY4NzNlZC4uZDE5N2ExMmQ5ZTBhOWUxZDQ3MDVhYTEyNmMwOTdlZGE0OGRiMTYzMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE4LTAzLTIwICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgTGludCB3ZWItcGxhdGZvcm0tdGVzdHMgY2hhbmdlcyB3aXRoIHRoZSB3cHQg
bGludGVyIGJlZm9yZSBleHBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mzc5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weToK
KyAgICAgICAgKFRlc3RFeHBvcnRlci5jaGFuZ2VkX3dwdF9maWxlcyk6CisgICAgICAgIChUZXN0
RXhwb3J0ZXIpOgorICAgICAgICAoVGVzdEV4cG9ydGVyLmxpbnRfY2hhbmdlZF93cHRfZmlsZXMp
OgorICAgICAgICAoVGVzdEV4cG9ydGVyLmRvX2V4cG9ydCk6CisKIDIwMTgtMDMtMTYgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQuUmVzdG9yZVNlc3Np
b25TdGF0ZUNvbnRhaW5pbmdTY3JvbGxSZXN0b3JhdGlvbkRlZmF1bHQgQVBJIHRlc3QgaXMgZmFp
bGluZyB3aXRoIGFzeW5jIHBvbGljeSBkZWxlZ2F0ZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X2V4cG9ydGVyLnB5CmluZGV4IDhiM2Q2NjZjMjgwY2JkNWRhZmZjMTUyMDNlMzcx
NzViOGQxZmIxZWUuLjM3OGYyYzZhZWY0OTU5NWM3NmMyNjM4NGRiZGNiMmFjNzIyOTg4YmUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weQpAQCAtMjgsNiAr
MjgsNyBAQCBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9y
dCB0aW1lCitpbXBvcnQgc3lzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5n
aXQgaW1wb3J0IEdpdAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdApAQCAt
NDEsNiArNDIsOSBAQCBXRUJLSVRfV1BUX0RJUiA9ICdMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzJwogV1BUX1BSX1VSTCA9ICJodHRwczovL2dpdGh1Yi5jb20vdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9wdWxsLyIKIFdFQktJVF9FWFBPUlRfUFJfTEFCRUwgPSAnd2Vi
a2l0LWV4cG9ydCcKIAorIyBBZGQgd2Via2l0IHRvIHRoZSBweXRob24gcGF0aCBzbyB3ZSBjYW4g
aW1wb3J0IHRoZSBXUFQgbGludCBtb2R1bGUKK3N5cy5wYXRoLmFwcGVuZChXRUJLSVRfV1BUX0RJ
UikKK2Zyb20gdG9vbHMubGludC5saW50IGltcG9ydCBsaW50LCBsaW50X3BhdGhzCiAKIGNsYXNz
IFRlc3RFeHBvcnRlcihvYmplY3QpOgogCkBAIC0yMjIsNyArMjI2LDI0IEBAIGNsYXNzIFRlc3RF
eHBvcnRlcihvYmplY3QpOgogICAgICAgICBpZiBub3Qgc2VsZi5fd3B0X2ZvcmtfcmVtb3RlIGlu
IHNlbGYuX2dpdC5yZW1vdGUoW10pOgogICAgICAgICAgICAgc2VsZi5fZ2l0LnJlbW90ZShbImFk
ZCIsIHNlbGYuX3dwdF9mb3JrX3JlbW90ZSwgc2VsZi5fd3B0X2ZvcmtfcHVzaF91cmxdKQogCisg
ICAgZGVmIGNoYW5nZWRfd3B0X2ZpbGVzKHNlbGYpOgorICAgICAgICBjaGFuZ2VkX2ZpbGVzID0g
c2VsZi5faG9zdC5zY20oKS5jaGFuZ2VkX2ZpbGVzKCkKKyAgICAgICAgcmV0dXJuIGZpbHRlcihs
YW1iZGEgeDogeC5zdGFydHN3aXRoKFdFQktJVF9XUFRfRElSKSwgY2hhbmdlZF9maWxlcykKKwor
ICAgIGRlZiBsaW50X2NoYW5nZWRfd3B0X2ZpbGVzKHNlbGYpOgorICAgICAgICBoZXJlID0gb3Mu
cGF0aC5hYnNwYXRoKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdKQorICAgICAgICByZXBvX3Jv
b3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3MucGFy
ZGlyLCBvcy5wYXJkaXIsIG9zLnBhcmRpciwgJ0xheW91dFRlc3RzJywgJ2ltcG9ydGVkJywgJ3cz
YycsICd3ZWItcGxhdGZvcm0tdGVzdHMnKSkKKyAgICAgICAgdGVzdF9wYXRoID0gc2VsZi5jaGFu
Z2VkX3dwdF9maWxlcygpCisgICAgICAgIHBhdGhzID0gbGludF9wYXRocyh7J3BhdGhzJzogdGVz
dF9wYXRofSwgcmVwb19yb290KQorICAgICAgICBsaW50X2Vycm9ycyA9IGxpbnQocmVwb19yb290
LCBwYXRocywgJ25vcm1hbCcpCisKKyAgICAgICAgcmV0dXJuIGxpbnRfZXJyb3JzCisKICAgICBk
ZWYgZG9fZXhwb3J0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLmxpbnRfY2hhbmdlZF93cHRfZmls
ZXMoKToKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoIkxpbnQgZXJyb3JzIGRldGVjdGVkLiBQbGVh
c2UgYWRkcmVzcyB0aGUgYWJvdmUgZXJyb3JzIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGV4cG9ydCBj
aGFuZ2VzIHRvIHRoZSB3ZWItcGxhdGZvcm0tdGVzdCByZXBvc2l0b3J5LiIpCisgICAgICAgICAg
ICByZXR1cm4KKwogICAgICAgICBnaXRfcGF0Y2hfZmlsZSA9IHNlbGYuY3JlYXRlX2dpdF9wYXRj
aCgpCiAKICAgICAgICAgaWYgbm90IGdpdF9wYXRjaF9maWxlOgpAQCAtMjk1LDcgKzMxNiw3IEBA
IGRlZiBjb25maWd1cmVfbG9nZ2luZygpOgogICAgICAgICAgICAgICAgIHJldHVybiAiJXM6ICVz
IiAlIChyZWNvcmQubGV2ZWxuYW1lLCByZWNvcmQuZ2V0TWVzc2FnZSgpKQogICAgICAgICAgICAg
cmV0dXJuIHJlY29yZC5nZXRNZXNzYWdlKCkKIAotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKCkKKyAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2Via2l0cHkudzNjLnRlc3Rf
ZXhwb3J0ZXInKQogICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCiAgICAgaGFuZGxl
ciA9IExvZ0hhbmRsZXIoKQogICAgIGhhbmRsZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3Qu
cHkKaW5kZXggM2M0M2ZmNjgyOWFhZTNiM2JiZDQxMzdiM2E4MzMwZmNjYjlkODFlOC4uYzQyMzEx
OTYzMmIzOWQxYWMxYzNkNDFkMjhkYWVhOWE4OWJkZDc0MSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0LnB5CkBAIC05NSw2ICs5
NSwxMCBAQCBjbGFzcyBUZXN0RXhwb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgICAgIHNlbGYuY2FsbHMuYXBwZW5kKCdjcmVhdGVfcGF0Y2ggJyArIGNvbW1pdCArICcgJyAr
IHN0cihhcmd1bWVudHMpKQogICAgICAgICAgICAgcmV0dXJuICdteSBwYXRjaCBjb250YWluaW5n
IHNvbWUgZGlmZnMnCiAKKyAgICAgICAgZGVmIGNoYW5nZWRfZmlsZXMoc2VsZik6CisgICAgICAg
ICAgICBzZWxmLmNhbGxzLmFwcGVuZCgnY2hhbmdlZF9maWxlcycpCisgICAgICAgICAgICByZXR1
cm4gWydMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rlc3QxLmh0
bWwnXQorCiAgICAgY2xhc3MgTXlNb2NrSG9zdChNb2NrSG9zdCk6CiAgICAgICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKICAgICAgICAgICAgIE1vY2tIb3N0Ll9faW5pdF9fKHNlbGYpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA3MWM2ZWQ2YjA3YTAzZWUyYzUyZTVkMjEyYTI5MjA0
ZDkwMGRlNGI0Li45MmFkNTcyMDI4NjMyNjUyNDZjMWI3ZmZmZDI0Zjg4OTcxMjM0MzQ1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0wMy0yMCAg
QnJlbmRhbiBNY0xvdWdobGluICA8YnJlbmRhbkBib2NvdXAuY29tPgorCisgICAgICAgIEltcG9y
dCBsaW50ZXIgbW9kdWxlIGZyb20gd2ViLXBsYXRmb3JtLXRlc3RzIHRvIHN1cHBvcnRpbmcgbGlu
dGluZyBjaGFuZ2VzIHdpdGggdGhlIHdwdCBsaW50ZXIgYmVmb3JlIGV4cG9ydGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weToKKyAgICAgICAgKFRlc3RoYXJuZXNzVGVzdC5f
X2luaXRfXyk6CisgICAgICAgIChUZXN0aGFybmVzc1Rlc3QubWV0YV9rZXkpOgorICAgICAgICAo
VGVzdGhhcm5lc3NUZXN0LnRvX2pzb24pOgorICAgICAgICAoVGVzdGhhcm5lc3NUZXN0LmZyb21f
anNvbik6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJj
ZWZpbGUucHk6CisgICAgICAgIChTb3VyY2VGaWxlKToKKyAgICAgICAgKFNvdXJjZUZpbGUudGVz
dGRyaXZlcl9ub2Rlcyk6CisgICAgICAgIChTb3VyY2VGaWxlLmhhc190ZXN0ZHJpdmVyKToKKyAg
ICAgICAgKFNvdXJjZUZpbGUubWFuaWZlc3RfaXRlbXMpOgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy9fX2luaXRfXy5weToKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9zb3VyY2VmaWxlLnB5Ogor
CiAyMDE4LTAzLTE2ICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCByZWJhc2VsaW5lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvX19p
bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVlYjVlMTJkNWY4OWZjOWZjZDBlZTEwYjY2YjE2MTRkNDJk
ZjY4NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACitmcm9tIC4g
aW1wb3J0IGxpbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC9jb21tYW5kcy5qc29uIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L2NvbW1hbmRzLmpzb24KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYThlOTg0NGZhZmVlOTk5ODA4ODRiYjRmNTFiMjAwZDk5MWZhNTNmZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC9jb21tYW5kcy5qc29uCkBAIC0wLDAgKzEsMyBAQAoreyJsaW50IjoKKyB7InBhdGgi
OiAibGludC5weSIsICJzY3JpcHQiOiAibWFpbiIsICJwYXJzZXIiOiAiY3JlYXRlX3BhcnNlciIs
ICJoZWxwIjogIlJ1biB0aGUgbGludCIsCisgICJ2aXJ0dWFsZW52IjogZmFsc2V9fQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L2ZubWF0Y2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvZm5tYXRjaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZmUzZWIwYWE5ZTVhZjA3ZTEx
YWQ1YjA4ZDkwZjgyOWI4YTUxYTUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L2ZubWF0Y2gucHkKQEAgLTAs
MCArMSwzMiBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKworaW1w
b3J0IGZubWF0Y2ggYXMgX3N0ZGxpYl9mbm1hdGNoCitpbXBvcnQgb3MKKworCitfX2FsbF9fID0g
WyJmbm1hdGNoIiwgImZubWF0Y2hjYXNlIiwgImZpbHRlciIsICJ0cmFuc2xhdGUiXQorCisKK2Rl
ZiBmbm1hdGNoKG5hbWUsIHBhdCk6CisgICAgbmFtZSA9IG9zLnBhdGgubm9ybWNhc2UobmFtZSkK
KyAgICBwYXQgPSBvcy5wYXRoLm5vcm1jYXNlKHBhdCkKKyAgICByZXR1cm4gZm5tYXRjaGNhc2Uo
bmFtZSwgcGF0KQorCisKK2RlZiBmbm1hdGNoY2FzZShuYW1lLCBwYXQpOgorICAgIGlmICc/JyBu
b3QgaW4gcGF0IGFuZCAnWycgbm90IGluIHBhdDoKKyAgICAgICAgd2lsZGNhcmRzID0gcGF0LmNv
dW50KCIqIikKKyAgICAgICAgaWYgd2lsZGNhcmRzID09IDA6CisgICAgICAgICAgICByZXR1cm4g
bmFtZSA9PSBwYXQKKyAgICAgICAgZWxpZiB3aWxkY2FyZHMgPT0gMSBhbmQgcGF0WzBdID09ICIq
IjoKKyAgICAgICAgICAgIHJldHVybiBuYW1lLmVuZHN3aXRoKHBhdFsxOl0pCisgICAgICAgIGVs
aWYgd2lsZGNhcmRzID09IDEgYW5kIHBhdFstMV0gPT0gIioiOgorICAgICAgICAgICAgcmV0dXJu
IG5hbWUuc3RhcnRzd2l0aChwYXRbOi0xXSkKKyAgICByZXR1cm4gX3N0ZGxpYl9mbm1hdGNoLmZu
bWF0Y2hjYXNlKG5hbWUsIHBhdCkKKworCitkZWYgZmlsdGVyKG5hbWVzLCBwYXQpOgorICAgIHJl
dHVybiBbbiBmb3IgbiBpbiBuYW1lcyBpZiBmbm1hdGNoKG4sIHBhdCldCisKKwordHJhbnNsYXRl
ID0gX3N0ZGxpYl9mbm1hdGNoLnRyYW5zbGF0ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L2xpbnQucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMWE2Y2UwMmQxZTNjMjg3Nzc4MTJlOTJjNDRmMThjZWY0OWNkN2RjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L2xpbnQucHkKQEAgLTAsMCArMSw4NDcgQEAKK2Zyb20gX19mdXR1cmVfXyBp
bXBvcnQgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0ZXJhbHMKKworaW1wb3J0IGFiYworaW1w
b3J0IGFyZ3BhcnNlCitpbXBvcnQgYXN0CitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQganNvbgor
aW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKK2Zy
b20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CisKK2Zyb20gLiBpbXBvcnQgZm5tYXRj
aAorZnJvbSAuLiBpbXBvcnQgbG9jYWxwYXRocworZnJvbSAuLmdpdGlnbm9yZS5naXRpZ25vcmUg
aW1wb3J0IFBhdGhGaWx0ZXIKK2Zyb20gLi53cHQgaW1wb3J0IHRlc3RmaWxlcworCitmcm9tIG1h
bmlmZXN0LnNvdXJjZWZpbGUgaW1wb3J0IFNvdXJjZUZpbGUsIGpzX21ldGFfcmUsIHB5dGhvbl9t
ZXRhX3JlLCBzcGFjZV9jaGFycworZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCBpdGVyaXRl
bXMsIGl0ZXJ2YWx1ZXMKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQorZnJvbSBzaXgubW92
ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxzcGxpdCwgdXJsam9pbgorCitpbXBvcnQgbG9nZ2lu
ZworCitsb2dnZXIgPSBOb25lCisKK2RlZiBzZXR1cF9sb2dnaW5nKHByZWZpeD1GYWxzZSk6Cisg
ICAgZ2xvYmFsIGxvZ2dlcgorICAgIGlmIGxvZ2dlciBpcyBOb25lOgorICAgICAgICBsb2dnZXIg
PSBsb2dnaW5nLmdldExvZ2dlcihvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGguc3BsaXRleHQoX19m
aWxlX18pWzBdKSkKKyAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMu
c3Rkb3V0KQorICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQorICAgIGlmIHByZWZp
eDoKKyAgICAgICAgZm9ybWF0ID0gbG9nZ2luZy5CQVNJQ19GT1JNQVQKKyAgICBlbHNlOgorICAg
ICAgICBmb3JtYXQgPSAiJShtZXNzYWdlKXMiCisgICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3Jt
YXR0ZXIoZm9ybWF0KQorICAgIGZvciBoYW5kbGVyIGluIGxvZ2dlci5oYW5kbGVyczoKKyAgICAg
ICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyKQorICAgIGxvZ2dlci5zZXRMZXZlbChs
b2dnaW5nLkRFQlVHKQorCisKK3NldHVwX2xvZ2dpbmcoKQorCisKK0VSUk9SX01TRyA9ICIiIllv
dSBtdXN0IGZpeCBhbGwgZXJyb3JzOyBmb3IgZGV0YWlscyBvbiBob3cgdG8gZml4IHRoZW0sIHNl
ZQoraHR0cDovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvd3JpdGluZy10ZXN0cy9saW50LXRvb2wu
aHRtbAorCitIb3dldmVyLCBpbnN0ZWFkIG9mIGZpeGluZyBhIHBhcnRpY3VsYXIgZXJyb3IsIGl0
J3Mgc29tZXRpbWVzCitPSyB0byBhZGQgYSBsaW5lIHRvIHRoZSBsaW50LndoaXRlbGlzdCBmaWxl
IGluIHRoZSByb290IG9mIHRoZQord2ViLXBsYXRmb3JtLXRlc3RzIGRpcmVjdG9yeSB0byBtYWtl
IHRoZSBsaW50IHRvb2wgaWdub3JlIGl0LgorCitGb3IgZXhhbXBsZSwgdG8gbWFrZSB0aGUgbGlu
dCB0b29sIGlnbm9yZSBhbGwgJyVzJworZXJyb3JzIGluIHRoZSAlcyBmaWxlLAoreW91IGNvdWxk
IGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gdGhlIGxpbnQud2hpdGVsaXN0IGZpbGUuCisKKyVz
OiAlcyIiIgorCitkZWYgYWxsX2ZpbGVzeXN0ZW1fcGF0aHMocmVwb19yb290KToKKyAgICBwYXRo
X2ZpbHRlciA9IFBhdGhGaWx0ZXIocmVwb19yb290LCBleHRyYXM9WyIuZ2l0LyoiXSkKKyAgICBm
b3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53YWxrKHJlcG9fcm9vdCk6Cisg
ICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXM6CisgICAgICAgICAgICBwYXRoID0gb3Mu
cGF0aC5yZWxwYXRoKG9zLnBhdGguam9pbihkaXJwYXRoLCBmaWxlbmFtZSksIHJlcG9fcm9vdCkK
KyAgICAgICAgICAgIGlmIHBhdGhfZmlsdGVyKHBhdGgpOgorICAgICAgICAgICAgICAgIHlpZWxk
IHBhdGgKKyAgICAgICAgZGlybmFtZXNbOl0gPSBbaXRlbSBmb3IgaXRlbSBpbiBkaXJuYW1lcyBp
ZgorICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2ZpbHRlcihvcy5wYXRoLnJlbHBhdGgob3Mu
cGF0aC5qb2luKGRpcnBhdGgsIGl0ZW0pICsgIi8iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb19yb290KSldCisKKworZGVmIF9hbGxfZmls
ZXNfZXF1YWwocGF0aHMpOgorICAgICIiIgorICAgIENoZWNrcyBhbGwgdGhlIHBhdGhzIGFyZSBm
aWxlcyB0aGF0IGFyZSBieXRlLWZvci1ieXRlIGlkZW50aWNhbAorCisgICAgOnBhcmFtIHBhdGhz
OiB0aGUgbGlzdCBvZiBwYXRocyB0byBjb21wYXJlCisgICAgOnJldHVybnM6IFRydWUgaWYgdGhl
eSBhcmUgYWxsIGlkZW50aWNhbAorICAgICIiIgorICAgIHBhdGhzID0gbGlzdChwYXRocykKKyAg
ICBpZiBsZW4ocGF0aHMpIDwgMjoKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGZpcnN0ID0g
cGF0aHMucG9wKCkKKyAgICBzaXplID0gb3MucGF0aC5nZXRzaXplKGZpcnN0KQorICAgIGlmIGFu
eShvcy5wYXRoLmdldHNpemUocGF0aCkgIT0gc2l6ZSBmb3IgcGF0aCBpbiBwYXRocyk6CisgICAg
ICAgIHJldHVybiBGYWxzZQorCisgICAgIyBDaHVuayB0aGlzIHRvIGF2b2lkIGVhdGluZyB1cCBt
ZW1vcnkgYW5kIGZpbGUgZGVzY3JpcHRvcnMKKyAgICBidWZzaXplID0gNDA5Nio0ICAjIDE2S0Is
IGEgInJlYXNvbmFibGUiIG51bWJlciBvZiBkaXNrIHNlY3RvcnMKKyAgICBncm91cHNpemUgPSA4
ICAjIEh5cG90aGVzaXNlZCB0byBiZSBsYXJnZSBlbm91Z2ggaW4gdGhlIGNvbW1vbiBjYXNlIHRo
YXQgZXZlcnl0aGluZyBmaXRzIGluIG9uZSBncm91cAorICAgIHdpdGggb3BlbihmaXJzdCwgInJi
IikgYXMgZmlyc3RfZjoKKyAgICAgICAgZm9yIHN0YXJ0IGluIHJhbmdlKDAsIGxlbihwYXRocyks
IGdyb3Vwc2l6ZSk6CisgICAgICAgICAgICBwYXRoX2dyb3VwID0gcGF0aHNbc3RhcnQ6c3RhcnQr
Z3JvdXBzaXplXQorICAgICAgICAgICAgZmlyc3RfZi5zZWVrKDApCisgICAgICAgICAgICB0cnk6
CisgICAgICAgICAgICAgICAgZmlsZXMgPSBbb3Blbih4LCAicmIiKSBmb3IgeCBpbiBwYXRoX2dy
b3VwXQorICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKDAsIHNpemUsIGJ1ZnNpemUpOgor
ICAgICAgICAgICAgICAgICAgICBhID0gZmlyc3RfZi5yZWFkKGJ1ZnNpemUpCisgICAgICAgICAg
ICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGYu
cmVhZChidWZzaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYSAhPSBiOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZmluYWxseToK
KyAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgZi5j
bG9zZSgpCisKKyAgICByZXR1cm4gVHJ1ZQorCisKK2RlZiBjaGVja19wYXRoX2xlbmd0aChyZXBv
X3Jvb3QsIHBhdGgpOgorICAgIGlmIGxlbihwYXRoKSArIDEgPiAxNTA6CisgICAgICAgIHJldHVy
biBbKCJQQVRIIExFTkdUSCIsICIvJXMgbG9uZ2VyIHRoYW4gbWF4aW11bSBwYXRoIGxlbmd0aCAo
JWQgPiAxNTApIiAlIChwYXRoLCBsZW4ocGF0aCkgKyAxKSwgcGF0aCwgTm9uZSldCisgICAgcmV0
dXJuIFtdCisKKworZGVmIGNoZWNrX3dvcmtlcl9jb2xsaXNpb24ocmVwb19yb290LCBwYXRoKToK
KyAgICBlbmRpbmdzID0gWygiLmFueS5odG1sIiwgIi5hbnkuanMiKSwKKyAgICAgICAgICAgICAg
ICgiLmFueS53b3JrZXIuaHRtbCIsICIuYW55LmpzIiksCisgICAgICAgICAgICAgICAoIi53b3Jr
ZXIuaHRtbCIsICIud29ya2VyLmpzIildCisgICAgZm9yIHBhdGhfZW5kaW5nLCBnZW5lcmF0ZWQg
aW4gZW5kaW5nczoKKyAgICAgICAgaWYgcGF0aC5lbmRzd2l0aChwYXRoX2VuZGluZyk6CisgICAg
ICAgICAgICByZXR1cm4gWygiV09SS0VSIENPTExJU0lPTiIsCisgICAgICAgICAgICAgICAgICAg
ICAicGF0aCBlbmRzIHdpdGggJXMgd2hpY2ggY29sbGlkZXMgd2l0aCBnZW5lcmF0ZWQgdGVzdHMg
ZnJvbSAlcyBmaWxlcyIgJSAocGF0aF9lbmRpbmcsIGdlbmVyYXRlZCksCisgICAgICAgICAgICAg
ICAgICAgICBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgTm9uZSldCisgICAgcmV0dXJuIFtd
CisKKworZGVmIGNoZWNrX2FoZW1fY29weShyZXBvX3Jvb3QsIHBhdGgpOgorICAgIGxwYXRoID0g
cGF0aC5sb3dlcigpCisgICAgaWYgImFoZW0iIGluIGxwYXRoIGFuZCBscGF0aC5lbmRzd2l0aCgi
LnR0ZiIpOgorICAgICAgICByZXR1cm4gWygiQUhFTSBDT1BZIiwgIkRvbid0IGFkZCBleHRyYSBj
b3BpZXMgb2YgQWhlbSwgdXNlIC9mb250cy9BaGVtLnR0ZiIsIHBhdGgsIE5vbmUpXQorICAgIHJl
dHVybiBbXQorCisKK2RyYWZ0c19jc3N3Z19yZSA9IHJlLmNvbXBpbGUociJodHRwcz9cOlwvXC9k
cmFmdHNcLmNzc3dnXC5vcmdcLyhbXi8/I10rKSIpCit3M2NfdHJfcmUgPSByZS5jb21waWxlKHIi
aHR0cHM/XDpcL1wvd3d3XC53M2M/XC5vcmdcL1RSXC8oW14vPyNdKykiKQordzNjX2Rldl9yZSA9
IHJlLmNvbXBpbGUociJodHRwcz9cOlwvXC9kZXZcLnczYz9cLm9yZ1wvW14vPyNdK1wvKFteLz8j
XSspIikKKworCitkZWYgY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZShyZXBvX3Jvb3QsIHBhdGhz
KToKKyAgICAiIiIKKyAgICBDaGVja3MgdGhhdCBDU1MgZmlsZW5hbWVzIGFyZSBzdWZmaWNpZW50
bHkgdW5pcXVlCisKKyAgICBUaGlzIGdyb3VwcyBmaWxlcyBieSBwYXRoIGNsYXNzaWZ5aW5nIHRo
ZW0gYXMgInRlc3QiLCAicmVmZXJlbmNlIiwgb3IKKyAgICAic3VwcG9ydCIuCisKKyAgICAidGVz
dCIgZmlsZXMgbXVzdCBoYXZlIGEgdW5pcXVlIG5hbWUgYWNyb3NzIGZpbGVzIHRoYXQgc2hhcmUg
bGlua3MgdG8gdGhlCisgICAgc2FtZSBzcGVjLgorCisgICAgInJlZmVyZW5jZSIgYW5kICJzdXBw
b3J0IiBmaWxlcywgb24gdGhlIG90aGVyIGhhbmQsIG11c3QgaGF2ZSBnbG9iYWxseQorICAgIHVu
aXF1ZSBuYW1lcy4KKworICAgIDpwYXJhbSByZXBvX3Jvb3Q6IHRoZSByZXBvc2l0b3J5IHJvb3QK
KyAgICA6cGFyYW0gcGF0aHM6IGxpc3Qgb2YgYWxsIHBhdGhzCisgICAgOnJldHVybnM6IGEgbGlz
dCBvZiBlcnJvcnMgZm91bmQgaW4gYGBwYXRoc2BgCisKKyAgICAiIiIKKyAgICB0ZXN0X2ZpbGVz
ID0gZGVmYXVsdGRpY3Qoc2V0KQorICAgIHJlZl9maWxlcyA9IGRlZmF1bHRkaWN0KHNldCkKKyAg
ICBzdXBwb3J0X2ZpbGVzID0gZGVmYXVsdGRpY3Qoc2V0KQorCisgICAgZm9yIHBhdGggaW4gcGF0
aHM6CisgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKKyAgICAgICAgICAgIHBhdGggPSBwYXRo
LnJlcGxhY2UoIlxcIiwgIi8iKQorCisgICAgICAgIGlmIG5vdCBwYXRoLnN0YXJ0c3dpdGgoImNz
cy8iKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgc291cmNlX2ZpbGUgPSBTb3Vy
Y2VGaWxlKHJlcG9fcm9vdCwgcGF0aCwgIi8iKQorICAgICAgICBpZiBzb3VyY2VfZmlsZS5uYW1l
X2lzX25vbl90ZXN0OgorICAgICAgICAgICAgIyBJZiB3ZSdyZSBuYW1lX2lzX25vbl90ZXN0IGZv
ciBhIHJlYXNvbiBhcGFydCBmcm9tIHN1cHBvcnQsIGlnbm9yZSBpdC4KKyAgICAgICAgICAgICMg
V2UgY2FyZSBhYm91dCBzdXBwb3J0IGJlY2F1c2Ugb2YgdGhlIHJlcXVpcmVtZW50IGFsbCBzdXBw
b3J0IGZpbGVzIGluIGNzcy8gdG8gYmUgaW4KKyAgICAgICAgICAgICMgYSBzdXBwb3J0IGRpcmVj
dG9yeTsgc2VlIHRoZSBzdGFydCBvZiBjaGVja19wYXJzZWQuCisgICAgICAgICAgICBvZmZzZXQg
PSBwYXRoLmZpbmQoIi9zdXBwb3J0LyIpCisgICAgICAgICAgICBpZiBvZmZzZXQgPT0gLTE6Cisg
ICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcGFydHMgPSBzb3VyY2VfZmls
ZS5kaXJfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKKyAgICAgICAgICAgIGlmIChwYXJ0c1swXSBp
biBzb3VyY2VfZmlsZS5yb290X2Rpcl9ub25fdGVzdCBvcgorICAgICAgICAgICAgICAgIGFueShp
dGVtIGluIHNvdXJjZV9maWxlLmRpcl9ub25fdGVzdCAtIHsic3VwcG9ydCJ9IGZvciBpdGVtIGlu
IHBhcnRzKSBvcgorICAgICAgICAgICAgICAgIGFueShwYXJ0c1s6bGVuKG5vbl90ZXN0X3BhdGgp
XSA9PSBsaXN0KG5vbl90ZXN0X3BhdGgpIGZvciBub25fdGVzdF9wYXRoIGluIHNvdXJjZV9maWxl
LmRpcl9wYXRoX25vbl90ZXN0KSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgbmFtZSA9IHBhdGhbb2Zmc2V0KzE6XQorICAgICAgICAgICAgc3VwcG9ydF9maWxlc1tu
YW1lXS5hZGQocGF0aCkKKyAgICAgICAgZWxpZiBzb3VyY2VfZmlsZS5uYW1lX2lzX3JlZmVyZW5j
ZToKKyAgICAgICAgICAgIHJlZl9maWxlc1tzb3VyY2VfZmlsZS5uYW1lXS5hZGQocGF0aCkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHRlc3RfZmlsZXNbc291cmNlX2ZpbGUubmFtZV0uYWRk
KHBhdGgpCisKKyAgICBlcnJvcnMgPSBbXQorCisgICAgZm9yIG5hbWUsIGNvbGxpZGluZyBpbiBp
dGVyaXRlbXModGVzdF9maWxlcyk6CisgICAgICAgIGlmIGxlbihjb2xsaWRpbmcpID4gMToKKyAg
ICAgICAgICAgIGlmIG5vdCBfYWxsX2ZpbGVzX2VxdWFsKFtvcy5wYXRoLmpvaW4ocmVwb19yb290
LCB4KSBmb3IgeCBpbiBjb2xsaWRpbmddKToKKyAgICAgICAgICAgICAgICAjIE9ubHkgY29tcHV0
ZSBieV9zcGVjIGlmIHRoZXJlIGFyZSBwcmltYS1mYWNpZSBjb2xsaXNpb25zIGJlY2F1c2Ugb2Yg
Y29zdAorICAgICAgICAgICAgICAgIGJ5X3NwZWMgPSBkZWZhdWx0ZGljdChzZXQpCisgICAgICAg
ICAgICAgICAgZm9yIHBhdGggaW4gY29sbGlkaW5nOgorICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2VfZmlsZSA9IFNvdXJjZUZpbGUocmVwb19yb290LCBwYXRoLCAiLyIpCisgICAgICAgICAgICAg
ICAgICAgIGZvciBsaW5rIGluIHNvdXJjZV9maWxlLnNwZWNfbGlua3M6CisgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgciBpbiAoZHJhZnRzX2Nzc3dnX3JlLCB3M2NfdHJfcmUsIHczY19kZXZf
cmUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSByLm1hdGNoKGxpbmspCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3BlYyA9IG0uZ3JvdXAoMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5X3NwZWNbc3BlY10u
YWRkKHBhdGgpCisKKyAgICAgICAgICAgICAgICBmb3Igc3BlYywgcGF0aHMgaW4gaXRlcml0ZW1z
KGJ5X3NwZWMpOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2FsbF9maWxlc19lcXVhbChb
b3MucGF0aC5qb2luKHJlcG9fcm9vdCwgeCkgZm9yIHggaW4gcGF0aHNdKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciB4IGluIHBhdGhzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVycm9ycy5hcHBlbmQoKCJDU1MtQ09MTElESU5HLVRFU1QtTkFNRSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWxlbmFtZSAlcyBpbiB0aGUgJXMg
dGVzdHN1aXRlIGlzIHNoYXJlZCBieTogJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJSAobmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIsICIuam9pbihzb3J0ZWQocGF0aHMpKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOb25lKSkKKworICAgIGZvciBlcnJvcl9uYW1lLCBkIGluIFsoIkNTUy1D
T0xMSURJTkctUkVGLU5BTUUiLCByZWZfZmlsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAoIkNTUy1DT0xMSURJTkctU1VQUE9SVC1OQU1FIiwgc3VwcG9ydF9maWxlcyldOgorICAgICAg
ICBmb3IgbmFtZSwgY29sbGlkaW5nIGluIGl0ZXJpdGVtcyhkKToKKyAgICAgICAgICAgIGlmIGxl
bihjb2xsaWRpbmcpID4gMToKKyAgICAgICAgICAgICAgICBpZiBub3QgX2FsbF9maWxlc19lcXVh
bChbb3MucGF0aC5qb2luKHJlcG9fcm9vdCwgeCkgZm9yIHggaW4gY29sbGlkaW5nXSk6CisgICAg
ICAgICAgICAgICAgICAgIGZvciB4IGluIGNvbGxpZGluZzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVycm9ycy5hcHBlbmQoKGVycm9yX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiVGhlIGZpbGVuYW1lICVzIGlzIHNoYXJlZCBieTogJXMiICUgKG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIsICIuam9pbihzb3J0ZWQoY29sbGlkaW5nKSkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5vbmUpKQorCisgICAgcmV0dXJuIGVycm9ycworCisKK2Rl
ZiBwYXJzZV93aGl0ZWxpc3QoZik6CisgICAgIiIiCisgICAgUGFyc2UgdGhlIHdoaXRlbGlzdCBm
aWxlIGdpdmVuIGJ5IGBmYCwgYW5kIHJldHVybiB0aGUgcGFyc2VkIHN0cnVjdHVyZS4KKyAgICAi
IiIKKworICAgIGRhdGEgPSBkZWZhdWx0ZGljdChsYW1iZGE6ZGVmYXVsdGRpY3Qoc2V0KSkKKyAg
ICBpZ25vcmVkX2ZpbGVzID0gc2V0KCkKKworICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgIGxp
bmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgaWYgbm90IGxpbmUgb3IgbGluZS5zdGFydHN3aXRo
KCIjIik6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBwYXJ0cyA9IFtpdGVtLnN0cmlw
KCkgZm9yIGl0ZW0gaW4gbGluZS5zcGxpdCgiOiIpXQorICAgICAgICBpZiBsZW4ocGFydHMpID09
IDI6CisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoTm9uZSkKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHBhcnRzWy0xXSA9IGludChwYXJ0c1stMV0pCisKKyAgICAgICAgZXJyb3JfdHlwZXMs
IGZpbGVfbWF0Y2gsIGxpbmVfbnVtYmVyID0gcGFydHMKKyAgICAgICAgZXJyb3JfdHlwZXMgPSB7
aXRlbS5zdHJpcCgpIGZvciBpdGVtIGluIGVycm9yX3R5cGVzLnNwbGl0KCIsIil9CisgICAgICAg
IGZpbGVfbWF0Y2ggPSBvcy5wYXRoLm5vcm1jYXNlKGZpbGVfbWF0Y2gpCisKKyAgICAgICAgaWYg
IioiIGluIGVycm9yX3R5cGVzOgorICAgICAgICAgICAgaWdub3JlZF9maWxlcy5hZGQoZmlsZV9t
YXRjaCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBlcnJvcl90eXBlIGluIGVycm9y
X3R5cGVzOgorICAgICAgICAgICAgICAgIGRhdGFbZXJyb3JfdHlwZV1bZmlsZV9tYXRjaF0uYWRk
KGxpbmVfbnVtYmVyKQorCisgICAgcmV0dXJuIGRhdGEsIGlnbm9yZWRfZmlsZXMKKworCitkZWYg
ZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMoZGF0YSwgZXJyb3JzKToKKyAgICAiIiIKKyAgICBGaWx0
ZXIgb3V0IHRob3NlIGVycm9ycyB0aGF0IGFyZSB3aGl0ZWxpc3RlZCBpbiBgZGF0YWAuCisgICAg
IiIiCisKKyAgICBpZiBub3QgZXJyb3JzOgorICAgICAgICByZXR1cm4gW10KKworICAgIHdoaXRl
bGlzdGVkID0gW0ZhbHNlIGZvciBpdGVtIGluIHJhbmdlKGxlbihlcnJvcnMpKV0KKworICAgIGZv
ciBpLCAoZXJyb3JfdHlwZSwgbXNnLCBwYXRoLCBsaW5lKSBpbiBlbnVtZXJhdGUoZXJyb3JzKToK
KyAgICAgICAgbm9ybXBhdGggPSBvcy5wYXRoLm5vcm1jYXNlKHBhdGgpCisgICAgICAgIGlmIGVy
cm9yX3R5cGUgaW4gZGF0YToKKyAgICAgICAgICAgIHdsX2ZpbGVzID0gZGF0YVtlcnJvcl90eXBl
XQorICAgICAgICAgICAgZm9yIGZpbGVfbWF0Y2gsIGFsbG93ZWRfbGluZXMgaW4gaXRlcml0ZW1z
KHdsX2ZpbGVzKToKKyAgICAgICAgICAgICAgICBpZiBOb25lIGluIGFsbG93ZWRfbGluZXMgb3Ig
bGluZSBpbiBhbGxvd2VkX2xpbmVzOgorICAgICAgICAgICAgICAgICAgICBpZiBmbm1hdGNoLmZu
bWF0Y2hjYXNlKG5vcm1wYXRoLCBmaWxlX21hdGNoKToKKyAgICAgICAgICAgICAgICAgICAgICAg
IHdoaXRlbGlzdGVkW2ldID0gVHJ1ZQorCisgICAgcmV0dXJuIFtpdGVtIGZvciBpLCBpdGVtIGlu
IGVudW1lcmF0ZShlcnJvcnMpIGlmIG5vdCB3aGl0ZWxpc3RlZFtpXV0KKworY2xhc3MgUmVnZXhw
KG9iamVjdCk6CisgICAgcGF0dGVybiA9IE5vbmUKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBOb25l
CisgICAgZXJyb3IgPSBOb25lCisgICAgX3JlID0gTm9uZQorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYpOgorICAgICAgICBzZWxmLl9yZSA9IHJlLmNvbXBpbGUoc2VsZi5wYXR0ZXJuKQorCisgICAg
ZGVmIGFwcGxpZXMoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiAoc2VsZi5maWxlX2V4dGVu
c2lvbnMgaXMgTm9uZSBvcgorICAgICAgICAgICAgICAgIG9zLnBhdGguc3BsaXRleHQocGF0aClb
MV0gaW4gc2VsZi5maWxlX2V4dGVuc2lvbnMpCisKKyAgICBkZWYgc2VhcmNoKHNlbGYsIGxpbmUp
OgorICAgICAgICByZXR1cm4gc2VsZi5fcmUuc2VhcmNoKGxpbmUpCisKK2NsYXNzIFRyYWlsaW5n
V2hpdGVzcGFjZVJlZ2V4cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBiIlsgXHRcZlx2XSQiCisg
ICAgZXJyb3IgPSAiVFJBSUxJTkcgV0hJVEVTUEFDRSIKKyAgICBkZXNjcmlwdGlvbiA9ICJXaGl0
ZXNwYWNlIGF0IEVPTCIKKworY2xhc3MgVGFic1JlZ2V4cChSZWdleHApOgorICAgIHBhdHRlcm4g
PSBiIl5cdCIKKyAgICBlcnJvciA9ICJJTkRFTlQgVEFCUyIKKyAgICBkZXNjcmlwdGlvbiA9ICJU
YWJzIHVzZWQgZm9yIGluZGVudGF0aW9uIgorCitjbGFzcyBDUlJlZ2V4cChSZWdleHApOgorICAg
IHBhdHRlcm4gPSBiIlxyJCIKKyAgICBlcnJvciA9ICJDUiBBVCBFT0wiCisgICAgZGVzY3JpcHRp
b24gPSAiQ1IgY2hhcmFjdGVyIGluIGxpbmUgc2VwYXJhdG9yIgorCitjbGFzcyBTZXRUaW1lb3V0
UmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGIic2V0VGltZW91dFxzKlwoIgorICAgIGVy
cm9yID0gIlNFVCBUSU1FT1VUIgorICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsiLmh0bWwiLCAiLmh0
bSIsICIuanMiLCAiLnhodCIsICIueGh0bWwiLCAiLnN2ZyJdCisgICAgZGVzY3JpcHRpb24gPSAi
c2V0VGltZW91dCB1c2VkOyBzdGVwX3RpbWVvdXQgc2hvdWxkIHR5cGljYWxseSBiZSB1c2VkIGlu
c3RlYWQiCisKK2NsYXNzIFczQ1Rlc3RPcmdSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0ZXJuID0g
YiJ3M2NcLXRlc3RcLm9yZyIKKyAgICBlcnJvciA9ICJXM0MtVEVTVC5PUkciCisgICAgZGVzY3Jp
cHRpb24gPSAiRXh0ZXJuYWwgdzNjLXRlc3Qub3JnIGRvbWFpbiB1c2VkIgorCitjbGFzcyBXZWJQ
bGF0Zm9ybVRlc3RSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0ZXJuID0gYiJ3ZWJcLXBsYXRmb3Jt
XC50ZXN0IgorICAgIGVycm9yID0gIldFQi1QTEFURk9STS5URVNUIgorICAgIGRlc2NyaXB0aW9u
ID0gIkludGVybmFsIHdlYi1wbGF0Zm9ybS50ZXN0IGRvbWFpbiB1c2VkIgorCitjbGFzcyBXZWJp
ZGwyUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGIid2ViaWRsMlwuanMiCisgICAgZXJy
b3IgPSAiV0VCSURMMi5KUyIKKyAgICBkZXNjcmlwdGlvbiA9ICJMZWdhY3kgd2ViaWRsMi5qcyBz
Y3JpcHQgdXNlZCIKKworY2xhc3MgQ29uc29sZVJlZ2V4cChSZWdleHApOgorICAgIHBhdHRlcm4g
PSBiImNvbnNvbGVcLlthLXpBLVpdK1xzKlwoIgorICAgIGVycm9yID0gIkNPTlNPTEUiCisgICAg
ZmlsZV9leHRlbnNpb25zID0gWyIuaHRtbCIsICIuaHRtIiwgIi5qcyIsICIueGh0IiwgIi54aHRt
bCIsICIuc3ZnIl0KKyAgICBkZXNjcmlwdGlvbiA9ICJDb25zb2xlIGxvZ2dpbmcgQVBJIHVzZWQi
CisKK2NsYXNzIEdlbmVyYXRlVGVzdHNSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0ZXJuID0gYiJn
ZW5lcmF0ZV90ZXN0c1xzKlwoIgorICAgIGVycm9yID0gIkdFTkVSQVRFX1RFU1RTIgorICAgIGZp
bGVfZXh0ZW5zaW9ucyA9IFsiLmh0bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIsICIueGh0bWwi
LCAiLnN2ZyJdCisgICAgZGVzY3JpcHRpb24gPSAiZ2VuZXJhdGVfdGVzdHMgdXNlZCIKKworY2xh
c3MgUHJpbnRSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0ZXJuID0gYiJwcmludCg/OlxzfFxzKlwo
KSIKKyAgICBlcnJvciA9ICJQUklOVCBTVEFURU1FTlQiCisgICAgZmlsZV9leHRlbnNpb25zID0g
WyIucHkiXQorICAgIGRlc2NyaXB0aW9uID0gIlByaW50IGZ1bmN0aW9uIHVzZWQiCisKK2NsYXNz
IExheW91dFRlc3RzUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGIiZXZlbnRTZW5kZXJ8
dGVzdFJ1bm5lcnx3aW5kb3dcLmludGVybmFscyIKKyAgICBlcnJvciA9ICJMQVlPVVRURVNUUyBB
UElTIgorICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsiLmh0bWwiLCAiLmh0bSIsICIuanMiLCAiLnho
dCIsICIueGh0bWwiLCAiLnN2ZyJdCisgICAgZGVzY3JpcHRpb24gPSAiZXZlbnRTZW5kZXIvdGVz
dFJ1bm5lci93aW5kb3cuaW50ZXJuYWxzIHVzZWQ7IHRoZXNlIGFyZSBMYXlvdXRUZXN0cy1zcGVj
aWZpYyBBUElzIChXZWJLaXQvQmxpbmspIgorCitjbGFzcyBTcGVjaWFsUG93ZXJzUmVnZXhwKFJl
Z2V4cCk6CisgICAgcGF0dGVybiA9IGIiU3BlY2lhbFBvd2VycyIKKyAgICBlcnJvciA9ICJTUEVD
SUFMUE9XRVJTIEFQSSIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0iLCAi
LmpzIiwgIi54aHQiLCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gIlNwZWNp
YWxQb3dlcnMgdXNlZDsgdGhpcyBpcyBnZWNrby1zcGVjaWZpYyBhbmQgbm90IHN1cHBvcnRlZCBp
biB3cHQiCisKKworcmVnZXhwcyA9IFtpdGVtKCkgZm9yIGl0ZW0gaW4KKyAgICAgICAgICAgW1Ry
YWlsaW5nV2hpdGVzcGFjZVJlZ2V4cCwKKyAgICAgICAgICAgIFRhYnNSZWdleHAsCisgICAgICAg
ICAgICBDUlJlZ2V4cCwKKyAgICAgICAgICAgIFNldFRpbWVvdXRSZWdleHAsCisgICAgICAgICAg
ICBXM0NUZXN0T3JnUmVnZXhwLAorICAgICAgICAgICAgV2ViUGxhdGZvcm1UZXN0UmVnZXhwLAor
ICAgICAgICAgICAgV2ViaWRsMlJlZ2V4cCwKKyAgICAgICAgICAgIENvbnNvbGVSZWdleHAsCisg
ICAgICAgICAgICBHZW5lcmF0ZVRlc3RzUmVnZXhwLAorICAgICAgICAgICAgUHJpbnRSZWdleHAs
CisgICAgICAgICAgICBMYXlvdXRUZXN0c1JlZ2V4cCwKKyAgICAgICAgICAgIFNwZWNpYWxQb3dl
cnNSZWdleHBdXQorCitkZWYgY2hlY2tfcmVnZXhwX2xpbmUocmVwb19yb290LCBwYXRoLCBmKToK
KyAgICBlcnJvcnMgPSBbXQorCisgICAgYXBwbGljYWJsZV9yZWdleHBzID0gW3JlZ2V4cCBmb3Ig
cmVnZXhwIGluIHJlZ2V4cHMgaWYgcmVnZXhwLmFwcGxpZXMocGF0aCldCisKKyAgICBmb3IgaSwg
bGluZSBpbiBlbnVtZXJhdGUoZik6CisgICAgICAgIGZvciByZWdleHAgaW4gYXBwbGljYWJsZV9y
ZWdleHBzOgorICAgICAgICAgICAgaWYgcmVnZXhwLnNlYXJjaChsaW5lKToKKyAgICAgICAgICAg
ICAgICBlcnJvcnMuYXBwZW5kKChyZWdleHAuZXJyb3IsIHJlZ2V4cC5kZXNjcmlwdGlvbiwgcGF0
aCwgaSsxKSkKKworICAgIHJldHVybiBlcnJvcnMKKworZGVmIGNoZWNrX3BhcnNlZChyZXBvX3Jv
b3QsIHBhdGgsIGYpOgorICAgIHNvdXJjZV9maWxlID0gU291cmNlRmlsZShyZXBvX3Jvb3QsIHBh
dGgsICIvIiwgY29udGVudHM9Zi5yZWFkKCkpCisKKyAgICBlcnJvcnMgPSBbXQorCisgICAgaWYg
cGF0aC5zdGFydHN3aXRoKCJjc3MvIik6CisgICAgICAgIGlmIChzb3VyY2VfZmlsZS50eXBlID09
ICJzdXBwb3J0IiBhbmQKKyAgICAgICAgICAgIG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX25vbl90
ZXN0IGFuZAorICAgICAgICAgICAgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfcmVmZXJlbmNlKToK
KyAgICAgICAgICAgIHJldHVybiBbKCJTVVBQT1JULVdST05HLURJUiIsICJTdXBwb3J0IGZpbGUg
bm90IGluIHN1cHBvcnQgZGlyZWN0b3J5IiwgcGF0aCwgTm9uZSldCisKKyAgICAgICAgaWYgKHNv
dXJjZV9maWxlLnR5cGUgIT0gInN1cHBvcnQiIGFuZAorICAgICAgICAgICAgbm90IHNvdXJjZV9m
aWxlLm5hbWVfaXNfcmVmZXJlbmNlIGFuZAorICAgICAgICAgICAgbm90IHNvdXJjZV9maWxlLnNw
ZWNfbGlua3MpOgorICAgICAgICAgICAgcmV0dXJuIFsoIk1JU1NJTkctTElOSyIsICJUZXN0Y2Fz
ZSBmaWxlIG11c3QgaGF2ZSBhIGxpbmsgdG8gYSBzcGVjIiwgcGF0aCwgTm9uZSldCisKKyAgICBp
ZiBzb3VyY2VfZmlsZS5uYW1lX2lzX25vbl90ZXN0IG9yIHNvdXJjZV9maWxlLm5hbWVfaXNfbWFu
dWFsOgorICAgICAgICByZXR1cm4gW10KKworICAgIGlmIHNvdXJjZV9maWxlLm1hcmt1cF90eXBl
IGlzIE5vbmU6CisgICAgICAgIHJldHVybiBbXQorCisgICAgaWYgc291cmNlX2ZpbGUucm9vdCBp
cyBOb25lOgorICAgICAgICByZXR1cm4gWygiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJz
ZSBmaWxlIiwgcGF0aCwgTm9uZSldCisKKyAgICBpZiBzb3VyY2VfZmlsZS50eXBlID09ICJtYW51
YWwiIGFuZCBub3Qgc291cmNlX2ZpbGUubmFtZV9pc19tYW51YWw6CisgICAgICAgIHJldHVybiBb
KCJDT05URU5ULU1BTlVBTCIsICJNYW51YWwgdGVzdCB3aG9zZSBmaWxlbmFtZSBkb2Vzbid0IGVu
ZCBpbiAnLW1hbnVhbCciLCBwYXRoLCBOb25lKV0KKworICAgIGlmIHNvdXJjZV9maWxlLnR5cGUg
PT0gInZpc3VhbCIgYW5kIG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX3Zpc3VhbDoKKyAgICAgICAg
cmV0dXJuIFsoIkNPTlRFTlQtVklTVUFMIiwgIlZpc3VhbCB0ZXN0IHdob3NlIGZpbGVuYW1lIGRv
ZXNuJ3QgZW5kIGluICctdmlzdWFsJyIsIHBhdGgsIE5vbmUpXQorCisgICAgZm9yIHJlZnRlc3Rf
bm9kZSBpbiBzb3VyY2VfZmlsZS5yZWZ0ZXN0X25vZGVzOgorICAgICAgICBocmVmID0gcmVmdGVz
dF9ub2RlLmF0dHJpYi5nZXQoImhyZWYiLCAiIikuc3RyaXAoc3BhY2VfY2hhcnMpCisgICAgICAg
IHBhcnRzID0gdXJsc3BsaXQoaHJlZikKKyAgICAgICAgaWYgcGFydHMuc2NoZW1lIG9yIHBhcnRz
Lm5ldGxvYzoKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJBQlNPTFVURS1VUkwtUkVGIiwK
KyAgICAgICAgICAgICAgICAgICAgICJSZWZlcmVuY2UgdGVzdCB3aXRoIGEgcmVmZXJlbmNlIGZp
bGUgc3BlY2lmaWVkIHZpYSBhbiBhYnNvbHV0ZSBVUkw6ICclcyciICUgaHJlZiwgcGF0aCwgTm9u
ZSkpCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHJlZl91cmwgPSB1cmxqb2luKHNv
dXJjZV9maWxlLnVybCwgaHJlZikKKyAgICAgICAgcmVmX3BhcnRzID0gdXJsc3BsaXQocmVmX3Vy
bCkKKworICAgICAgICBpZiBzb3VyY2VfZmlsZS51cmwgPT0gcmVmX3VybDoKKyAgICAgICAgICAg
IGVycm9ycy5hcHBlbmQoKCJTQU1FLUZJTEUtUkVGIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJSZWZlcmVuY2UgdGVzdCB3aGljaCBwb2ludHMgYXQgaXRzZWxmIGFzIGEgcmVmZXJlbmNl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOb25lKSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgYXNzZXJ0IHJl
Zl9wYXJ0cy5wYXRoICE9ICIiCisKKyAgICAgICAgcmVmZXJlbmNlX2ZpbGUgPSBvcy5wYXRoLmpv
aW4ocmVwb19yb290LCByZWZfcGFydHMucGF0aFsxOl0pCisgICAgICAgIHJlZmVyZW5jZV9yZWwg
PSByZWZ0ZXN0X25vZGUuYXR0cmliLmdldCgicmVsIiwgIiIpCisKKyAgICAgICAgaWYgbm90IG9z
LnBhdGguaXNmaWxlKHJlZmVyZW5jZV9maWxlKToKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQo
KCJOT04tRVhJU1RFTlQtUkVGIiwKKyAgICAgICAgICAgICAgICAgICAgICJSZWZlcmVuY2UgdGVz
dCB3aXRoIGEgbm9uLWV4aXN0ZW50ICclcycgcmVsYXRpb25zaGlwIHJlZmVyZW5jZTogJyVzJyIg
JSAocmVmZXJlbmNlX3JlbCwgaHJlZiksIHBhdGgsIE5vbmUpKQorCisgICAgaWYgbGVuKHNvdXJj
ZV9maWxlLnRpbWVvdXRfbm9kZXMpID4gMToKKyAgICAgICAgZXJyb3JzLmFwcGVuZCgoIk1VTFRJ
UExFLVRJTUVPVVQiLCAiTW9yZSB0aGFuIG9uZSBtZXRhIG5hbWU9J3RpbWVvdXQnIiwgcGF0aCwg
Tm9uZSkpCisKKyAgICBmb3IgdGltZW91dF9ub2RlIGluIHNvdXJjZV9maWxlLnRpbWVvdXRfbm9k
ZXM6CisgICAgICAgIHRpbWVvdXRfdmFsdWUgPSB0aW1lb3V0X25vZGUuYXR0cmliLmdldCgiY29u
dGVudCIsICIiKS5sb3dlcigpCisgICAgICAgIGlmIHRpbWVvdXRfdmFsdWUgIT0gImxvbmciOgor
ICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIklOVkFMSUQtVElNRU9VVCIsICJJbnZhbGlkIHRp
bWVvdXQgdmFsdWUgJXMiICUgdGltZW91dF92YWx1ZSwgcGF0aCwgTm9uZSkpCisKKyAgICBpZiBz
b3VyY2VfZmlsZS50ZXN0aGFybmVzc19ub2RlczoKKyAgICAgICAgaWYgbGVuKHNvdXJjZV9maWxl
LnRlc3RoYXJuZXNzX25vZGVzKSA+IDE6CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgiTVVM
VElQTEUtVEVTVEhBUk5FU1MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vcmUgdGhh
biBvbmUgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPiIsIHBhdGgsIE5v
bmUpKQorCisgICAgICAgIHRlc3RoYXJuZXNzcmVwb3J0X25vZGVzID0gc291cmNlX2ZpbGUucm9v
dC5maW5kYWxsKCIuLy97aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbH1zY3JpcHRbQHNyYz0n
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyddIikKKyAgICAgICAgaWYgbm90IHRlc3Ro
YXJuZXNzcmVwb3J0X25vZGVzOgorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIk1JU1NJTkct
VEVTVEhBUk5FU1NSRVBPUlQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pc3Npbmcg
PHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPiIsIHBhdGgsIE5v
bmUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbGVuKHRlc3RoYXJuZXNzcmVwb3J0
X25vZGVzKSA+IDE6CisgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIk1VTFRJUExFLVRF
U1RIQVJORVNTUkVQT1JUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSB0
aGFuIG9uZSA8c2NyaXB0IHNyYz0nL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+Iiwg
cGF0aCwgTm9uZSkpCisKKyAgICAgICAgdGVzdGhhcm5lc3Njc3Nfbm9kZXMgPSBzb3VyY2VfZmls
ZS5yb290LmZpbmRhbGwoIi4vL3todHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sfWxpbmtbQGhy
ZWY9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJ10iKQorICAgICAgICBpZiB0ZXN0aGFybmVz
c2Nzc19ub2RlczoKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJQUkVTRU5ULVRFU1RIQVJO
RVNTQ1NTIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBsaWNpdCBsaW5rIHRvIHRl
c3RoYXJuZXNzLmNzcyBwcmVzZW50IiwgcGF0aCwgTm9uZSkpCisKKyAgICAgICAgZm9yIGVsZW1l
bnQgaW4gc291cmNlX2ZpbGUudmFyaWFudF9ub2RlczoKKyAgICAgICAgICAgIGlmICJjb250ZW50
IiBub3QgaW4gZWxlbWVudC5hdHRyaWI6CisgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgo
IlZBUklBTlQtTUlTU0lORyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxtZXRh
IG5hbWU9dmFyaWFudD4gbWlzc2luZyAnY29udGVudCcgYXR0cmlidXRlIiwgcGF0aCwgTm9uZSkp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHZhcmlhbnQgPSBlbGVtZW50LmF0
dHJpYlsiY29udGVudCJdCisgICAgICAgICAgICAgICAgaWYgdmFyaWFudCAhPSAiIiBhbmQgdmFy
aWFudFswXSBub3QgaW4gKCI/IiwgIiMiKToKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFw
cGVuZCgoIk1BTEZPUk1FRC1WQVJJQU5UIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiJXMgPG1ldGEgbmFtZT12YXJpYW50PiAnY29udGVudCcgYXR0cmlidXRlIG11c3QgYmUgdGhl
IGVtcHR5IHN0cmluZyBvciBzdGFydCB3aXRoICc/JyBvciAnIyciICUgcGF0aCwgTm9uZSkpCisK
KyAgICAgICAgc2Vlbl9lbGVtZW50cyA9IHsidGltZW91dCI6IEZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0ZXN0aGFybmVzcyI6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICJ0ZXN0aGFybmVzc3JlcG9ydCI6IEZhbHNlfQorICAgICAgICByZXF1aXJlZF9lbGVtZW50
cyA9IFtrZXkgZm9yIGtleSwgdmFsdWUgaW4geyJ0ZXN0aGFybmVzcyI6IFRydWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RoYXJuZXNz
cmVwb3J0IjogbGVuKHRlc3RoYXJuZXNzcmVwb3J0X25vZGVzKSA+IDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQiOiBsZW4oc291
cmNlX2ZpbGUudGltZW91dF9ub2RlcykgPiAwfS5pdGVtcygpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIHZhbHVlXQorCisgICAgICAgIGZvciBlbGVtIGluIHNvdXJjZV9maWxlLnJv
b3QuaXRlcigpOgorICAgICAgICAgICAgaWYgc291cmNlX2ZpbGUudGltZW91dF9ub2RlcyBhbmQg
ZWxlbSA9PSBzb3VyY2VfZmlsZS50aW1lb3V0X25vZGVzWzBdOgorICAgICAgICAgICAgICAgIHNl
ZW5fZWxlbWVudHNbInRpbWVvdXQiXSA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBzZWVuX2Vs
ZW1lbnRzWyJ0ZXN0aGFybmVzcyJdOgorICAgICAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5k
KCgiTEFURS1USU1FT1VUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxt
ZXRhIG5hbWU9dGltZW91dD4gc2VlbiBhZnRlciB0ZXN0aGFybmVzcy5qcyBzY3JpcHQiLCBwYXRo
LCBOb25lKSkKKworICAgICAgICAgICAgZWxpZiBlbGVtID09IHNvdXJjZV9maWxlLnRlc3RoYXJu
ZXNzX25vZGVzWzBdOgorICAgICAgICAgICAgICAgIHNlZW5fZWxlbWVudHNbInRlc3RoYXJuZXNz
Il0gPSBUcnVlCisKKyAgICAgICAgICAgIGVsaWYgdGVzdGhhcm5lc3NyZXBvcnRfbm9kZXMgYW5k
IGVsZW0gPT0gdGVzdGhhcm5lc3NyZXBvcnRfbm9kZXNbMF06CisgICAgICAgICAgICAgICAgc2Vl
bl9lbGVtZW50c1sidGVzdGhhcm5lc3NyZXBvcnQiXSA9IFRydWUKKyAgICAgICAgICAgICAgICBp
ZiBub3Qgc2Vlbl9lbGVtZW50c1sidGVzdGhhcm5lc3MiXToKKyAgICAgICAgICAgICAgICAgICAg
ZXJyb3JzLmFwcGVuZCgoIkVBUkxZLVRFU1RIQVJORVNTUkVQT1JUIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRlc3RoYXJuZXNzcmVwb3J0LmpzIHNjcmlwdCBzZWVuIGJl
Zm9yZSB0ZXN0aGFybmVzcy5qcyBzY3JpcHQiLCBwYXRoLCBOb25lKSkKKworICAgICAgICAgICAg
aWYgYWxsKHNlZW5fZWxlbWVudHNbbmFtZV0gZm9yIG5hbWUgaW4gcmVxdWlyZWRfZWxlbWVudHMp
OgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICBpZiBzb3VyY2VfZmlsZS50ZXN0ZHJpdmVy
X25vZGVzOgorICAgICAgICBpZiBsZW4oc291cmNlX2ZpbGUudGVzdGRyaXZlcl9ub2RlcykgPiAx
OgorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIk1VTFRJUExFLVRFU1REUklWRVIiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vcmUgdGhhbiBvbmUgPHNjcmlwdCBzcmM9Jy9yZXNv
dXJjZXMvdGVzdGRyaXZlci5qcyc+IiwgcGF0aCwgTm9uZSkpCisKKyAgICAgICAgdGVzdGRyaXZl
cl92ZW5kb3Jfbm9kZXMgPSBzb3VyY2VfZmlsZS5yb290LmZpbmRhbGwoIi4vL3todHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sfXNjcmlwdFtAc3JjPScvcmVzb3VyY2VzL3Rlc3Rkcml2ZXItdmVu
ZG9yLmpzJ10iKQorICAgICAgICBpZiBub3QgdGVzdGRyaXZlcl92ZW5kb3Jfbm9kZXM6CisgICAg
ICAgICAgICBlcnJvcnMuYXBwZW5kKCgiTUlTU0lORy1URVNURFJJVkVSLVZFTkRPUiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTWlzc2luZyA8c2NyaXB0IHNyYz0nL3Jlc291cmNlcy90
ZXN0ZHJpdmVyLXZlbmRvci5qcyc+IiwgcGF0aCwgTm9uZSkpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBpZiBsZW4odGVzdGRyaXZlcl92ZW5kb3Jfbm9kZXMpID4gMToKKyAgICAgICAgICAg
ICAgICBlcnJvcnMuYXBwZW5kKCgiTVVMVElQTEUtVEVTVERSSVZFUi1WRU5ET1IiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIHRoYW4gb25lIDxzY3JpcHQgc3JjPScvcmVz
b3VyY2VzL3Rlc3Rkcml2ZXItdmVuZG9yLmpzJz4iLCBwYXRoLCBOb25lKSkKKworICAgIGZvciBl
bGVtZW50IGluIHNvdXJjZV9maWxlLnJvb3QuZmluZGFsbCgiLi8ve2h0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWx9c2NyaXB0W0BzcmNdIik6CisgICAgICAgIHNyYyA9IGVsZW1lbnQuYXR0cmli
WyJzcmMiXQorICAgICAgICBmb3IgbmFtZSBpbiBbInRlc3RoYXJuZXNzIiwgInRlc3RoYXJuZXNz
cmVwb3J0IiwgInRlc3Rkcml2ZXIiLCAidGVzdGRyaXZlci12ZW5kb3IiXToKKyAgICAgICAgICAg
IGlmICIlcy5qcyIgJSBuYW1lID09IHNyYyBvciAoIi8lcy5qcyIgJSBuYW1lIGluIHNyYyBhbmQg
c3JjICE9ICIvcmVzb3VyY2VzLyVzLmpzIiAlIG5hbWUpOgorICAgICAgICAgICAgICAgIGVycm9y
cy5hcHBlbmQoKCIlcy1QQVRIIiAlIG5hbWUudXBwZXIoKSwgIiVzLmpzIHNjcmlwdCBzZWVuIHdp
dGggaW5jb3JyZWN0IHBhdGgiICUgbmFtZSwgcGF0aCwgTm9uZSkpCisKKyAgICByZXR1cm4gZXJy
b3JzCisKK2NsYXNzIEFTVENoZWNrKG9iamVjdCk6CisgICAgX19tZXRhY2xhc3NfXyA9IGFiYy5B
QkNNZXRhCisgICAgZXJyb3IgPSBOb25lCisgICAgZGVzY3JpcHRpb24gPSBOb25lCisKKyAgICBA
YWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGNoZWNrKHNlbGYsIHJvb3QpOgorICAgICAgICBw
YXNzCisKK2NsYXNzIE9wZW5Nb2RlQ2hlY2soQVNUQ2hlY2spOgorICAgIGVycm9yID0gIk9QRU4t
Tk8tTU9ERSIKKyAgICBkZXNjcmlwdGlvbiA9ICJGaWxlIG9wZW5lZCB3aXRob3V0IHByb3ZpZGlu
ZyBhbiBleHBsaWNpdCBtb2RlIChub3RlOiBiaW5hcnkgZmlsZXMgbXVzdCBiZSByZWFkIHdpdGgg
J2InIGluIHRoZSBtb2RlIGZsYWdzKSIKKworICAgIGRlZiBjaGVjayhzZWxmLCByb290KToKKyAg
ICAgICAgZXJyb3JzID0gW10KKyAgICAgICAgZm9yIG5vZGUgaW4gYXN0LndhbGsocm9vdCk6Cisg
ICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIGFzdC5DYWxsKToKKyAgICAgICAgICAgICAg
ICBpZiBoYXNhdHRyKG5vZGUuZnVuYywgImlkIikgYW5kIG5vZGUuZnVuYy5pZCBpbiAoIm9wZW4i
LCAiZmlsZSIpOgorICAgICAgICAgICAgICAgICAgICBpZiAobGVuKG5vZGUuYXJncykgPCAyIGFu
ZAorICAgICAgICAgICAgICAgICAgICAgICAgYWxsKGl0ZW0uYXJnICE9ICJtb2RlIiBmb3IgaXRl
bSBpbiBub2RlLmtleXdvcmRzKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuYXBw
ZW5kKG5vZGUubGluZW5vKQorICAgICAgICByZXR1cm4gZXJyb3JzCisKK2FzdF9jaGVja2VycyA9
IFtpdGVtKCkgZm9yIGl0ZW0gaW4gW09wZW5Nb2RlQ2hlY2tdXQorCitkZWYgY2hlY2tfcHl0aG9u
X2FzdChyZXBvX3Jvb3QsIHBhdGgsIGYpOgorICAgIGlmIG5vdCBwYXRoLmVuZHN3aXRoKCIucHki
KToKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICB0cnk6CisgICAgICAgIHJvb3QgPSBhc3QucGFy
c2UoZi5yZWFkKCkpCisgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGU6CisgICAgICAgIHJldHVy
biBbKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBwYXRoLCBlLmxpbmVu
byldCisKKyAgICBlcnJvcnMgPSBbXQorICAgIGZvciBjaGVja2VyIGluIGFzdF9jaGVja2VyczoK
KyAgICAgICAgZm9yIGxpbmVubyBpbiBjaGVja2VyLmNoZWNrKHJvb3QpOgorICAgICAgICAgICAg
ZXJyb3JzLmFwcGVuZCgoY2hlY2tlci5lcnJvciwgY2hlY2tlci5kZXNjcmlwdGlvbiwgcGF0aCwg
bGluZW5vKSkKKyAgICByZXR1cm4gZXJyb3JzCisKKworYnJva2VuX2pzX21ldGFkYXRhID0gcmUu
Y29tcGlsZShiIi8vXHMqTUVUQToiKQorYnJva2VuX3B5dGhvbl9tZXRhZGF0YSA9IHJlLmNvbXBp
bGUoYiIjXHMqTUVUQToiKQorCisKK2RlZiBjaGVja19zY3JpcHRfbWV0YWRhdGEocmVwb19yb290
LCBwYXRoLCBmKToKKyAgICBpZiBwYXRoLmVuZHN3aXRoKCgiLndvcmtlci5qcyIsICIuYW55Lmpz
IikpOgorICAgICAgICBtZXRhX3JlID0ganNfbWV0YV9yZQorICAgICAgICBicm9rZW5fbWV0YWRh
dGEgPSBicm9rZW5fanNfbWV0YWRhdGEKKyAgICBlbGlmIHBhdGguZW5kc3dpdGgoIi5weSIpOgor
ICAgICAgICBtZXRhX3JlID0gcHl0aG9uX21ldGFfcmUKKyAgICAgICAgYnJva2VuX21ldGFkYXRh
ID0gYnJva2VuX3B5dGhvbl9tZXRhZGF0YQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBbXQor
CisgICAgZG9uZSA9IEZhbHNlCisgICAgZXJyb3JzID0gW10KKyAgICBmb3IgaWR4LCBsaW5lIGlu
IGVudW1lcmF0ZShmKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobGluZSwgYmluYXJ5X3R5
cGUpLCBsaW5lCisKKyAgICAgICAgbSA9IG1ldGFfcmUubWF0Y2gobGluZSkKKyAgICAgICAgaWYg
bToKKyAgICAgICAgICAgIGtleSwgdmFsdWUgPSBtLmdyb3VwcygpCisgICAgICAgICAgICBpZiBr
ZXkgPT0gYiJ0aW1lb3V0IjoKKyAgICAgICAgICAgICAgICBpZiB2YWx1ZSAhPSBiImxvbmciOgor
ICAgICAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgiVU5LTk9XTi1USU1FT1VULU1FVEFE
QVRBIiwgIlVuZXhwZWN0ZWQgdmFsdWUgZm9yIHRpbWVvdXQgbWV0YWRhdGEiLCBwYXRoLCBpZHgg
KyAxKSkKKyAgICAgICAgICAgIGVsaWYga2V5ID09IGIic2NyaXB0IjoKKyAgICAgICAgICAgICAg
ICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQo
KCJVTktOT1dOLU1FVEFEQVRBIiwgIlVuZXhwZWN0ZWQga2luZCBvZiBtZXRhZGF0YSIsIHBhdGgs
IGlkeCArIDEpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZG9uZSA9IFRydWUKKworICAg
ICAgICBpZiBkb25lOgorICAgICAgICAgICAgaWYgbWV0YV9yZS5tYXRjaChsaW5lKToKKyAgICAg
ICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgiU1RSQVktTUVUQURBVEEiLCAiTWV0YWRhdGEgY29t
bWVudHMgc2hvdWxkIHN0YXJ0IHRoZSBmaWxlIiwgcGF0aCwgaWR4ICsgMSkpCisgICAgICAgICAg
ICBlbGlmIG1ldGFfcmUuc2VhcmNoKGxpbmUpOgorICAgICAgICAgICAgICAgIGVycm9ycy5hcHBl
bmQoKCJJTkRFTlRFRC1NRVRBREFUQSIsICJNZXRhZGF0YSBjb21tZW50cyBzaG91bGQgc3RhcnQg
dGhlIGxpbmUiLCBwYXRoLCBpZHggKyAxKSkKKyAgICAgICAgICAgIGVsaWYgYnJva2VuX21ldGFk
YXRhLnNlYXJjaChsaW5lKToKKyAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgiQlJPS0VO
LU1FVEFEQVRBIiwgIk1ldGFkYXRhIGNvbW1lbnQgaXMgbm90IGZvcm1hdHRlZCBjb3JyZWN0bHki
LCBwYXRoLCBpZHggKyAxKSkKKworICAgIHJldHVybiBlcnJvcnMKKworCitkZWYgY2hlY2tfcGF0
aChyZXBvX3Jvb3QsIHBhdGgpOgorICAgICIiIgorICAgIFJ1bnMgbGludHMgdGhhdCBjaGVjayB0
aGUgZmlsZSBwYXRoLgorCisgICAgOnBhcmFtIHJlcG9fcm9vdDogdGhlIHJlcG9zaXRvcnkgcm9v
dAorICAgIDpwYXJhbSBwYXRoOiB0aGUgcGF0aCBvZiB0aGUgZmlsZSB3aXRoaW4gdGhlIHJlcG9z
aXRvcnkKKyAgICA6cmV0dXJuczogYSBsaXN0IG9mIGVycm9ycyBmb3VuZCBpbiBgYHBhdGhgYAor
ICAgICIiIgorCisgICAgZXJyb3JzID0gW10KKyAgICBmb3IgcGF0aF9mbiBpbiBwYXRoX2xpbnRz
OgorICAgICAgICBlcnJvcnMuZXh0ZW5kKHBhdGhfZm4ocmVwb19yb290LCBwYXRoKSkKKyAgICBy
ZXR1cm4gZXJyb3JzCisKKworZGVmIGNoZWNrX2FsbF9wYXRocyhyZXBvX3Jvb3QsIHBhdGhzKToK
KyAgICAiIiIKKyAgICBSdW5zIGxpbnRzIHRoYXQgY2hlY2sgYWxsIHBhdGhzIGdsb2JhbGx5Lgor
CisgICAgOnBhcmFtIHJlcG9fcm9vdDogdGhlIHJlcG9zaXRvcnkgcm9vdAorICAgIDpwYXJhbSBw
YXRoczogYSBsaXN0IG9mIGFsbCB0aGUgcGF0aHMgd2l0aGluIHRoZSByZXBvc2l0b3J5CisgICAg
OnJldHVybnM6IGEgbGlzdCBvZiBlcnJvcnMgZm91bmQgaW4gYGBmYGAKKyAgICAiIiIKKworICAg
IGVycm9ycyA9IFtdCisgICAgZm9yIHBhdGhzX2ZuIGluIGFsbF9wYXRoc19saW50czoKKyAgICAg
ICAgZXJyb3JzLmV4dGVuZChwYXRoc19mbihyZXBvX3Jvb3QsIHBhdGhzKSkKKyAgICByZXR1cm4g
ZXJyb3JzCisKKworZGVmIGNoZWNrX2ZpbGVfY29udGVudHMocmVwb19yb290LCBwYXRoLCBmKToK
KyAgICAiIiIKKyAgICBSdW5zIGxpbnRzIHRoYXQgY2hlY2sgdGhlIGZpbGUgY29udGVudHMuCisK
KyAgICA6cGFyYW0gcmVwb19yb290OiB0aGUgcmVwb3NpdG9yeSByb290CisgICAgOnBhcmFtIHBh
dGg6IHRoZSBwYXRoIG9mIHRoZSBmaWxlIHdpdGhpbiB0aGUgcmVwb3NpdG9yeQorICAgIDpwYXJh
bSBmOiBhIGZpbGUtbGlrZSBvYmplY3Qgd2l0aCB0aGUgZmlsZSBjb250ZW50cworICAgIDpyZXR1
cm5zOiBhIGxpc3Qgb2YgZXJyb3JzIGZvdW5kIGluIGBgZmBgCisgICAgIiIiCisKKyAgICBlcnJv
cnMgPSBbXQorICAgIGZvciBmaWxlX2ZuIGluIGZpbGVfbGludHM6CisgICAgICAgIGVycm9ycy5l
eHRlbmQoZmlsZV9mbihyZXBvX3Jvb3QsIHBhdGgsIGYpKQorICAgICAgICBmLnNlZWsoMCkKKyAg
ICByZXR1cm4gZXJyb3JzCisKKworZGVmIG91dHB1dF9lcnJvcnNfdGV4dChlcnJvcnMpOgorICAg
IGZvciBlcnJvcl90eXBlLCBkZXNjcmlwdGlvbiwgcGF0aCwgbGluZV9udW1iZXIgaW4gZXJyb3Jz
OgorICAgICAgICBwb3Nfc3RyaW5nID0gcGF0aAorICAgICAgICBpZiBsaW5lX251bWJlcjoKKyAg
ICAgICAgICAgIHBvc19zdHJpbmcgKz0gIjolcyIgJSBsaW5lX251bWJlcgorICAgICAgICBsb2dn
ZXIuZXJyb3IoIiVzOiAlcyAoJXMpIiAlIChwb3Nfc3RyaW5nLCBkZXNjcmlwdGlvbiwgZXJyb3Jf
dHlwZSkpCisKKworZGVmIG91dHB1dF9lcnJvcnNfbWFya2Rvd24oZXJyb3JzKToKKyAgICBpZiBu
b3QgZXJyb3JzOgorICAgICAgICByZXR1cm4KKyAgICBoZWFkaW5nID0gIiIiR290IGxpbnQgZXJy
b3JzOgorCit8IEVycm9yIFR5cGUgfCBQb3NpdGlvbiB8IE1lc3NhZ2UgfAorfC0tLS0tLS0tLS0t
LXwtLS0tLS0tLS0tfC0tLS0tLS0tLXwiIiIKKyAgICBmb3IgbGluZSBpbiBoZWFkaW5nLnNwbGl0
KCJcbiIpOgorICAgICAgICBsb2dnZXIuZXJyb3IobGluZSkKKyAgICBmb3IgZXJyb3JfdHlwZSwg
ZGVzY3JpcHRpb24sIHBhdGgsIGxpbmVfbnVtYmVyIGluIGVycm9yczoKKyAgICAgICAgcG9zX3N0
cmluZyA9IHBhdGgKKyAgICAgICAgaWYgbGluZV9udW1iZXI6CisgICAgICAgICAgICBwb3Nfc3Ry
aW5nICs9ICI6JXMiICUgbGluZV9udW1iZXIKKyAgICAgICAgbG9nZ2VyLmVycm9yKCIlcyB8ICVz
IHwgJXMgfCIgJSAoZXJyb3JfdHlwZSwgcG9zX3N0cmluZywgZGVzY3JpcHRpb24pKQorCisKK2Rl
ZiBvdXRwdXRfZXJyb3JzX2pzb24oZXJyb3JzKToKKyAgICBmb3IgZXJyb3JfdHlwZSwgZXJyb3Is
IHBhdGgsIGxpbmVfbnVtYmVyIGluIGVycm9yczoKKyAgICAgICAgcHJpbnQoanNvbi5kdW1wcyh7
InBhdGgiOiBwYXRoLCAibGluZW5vIjogbGluZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJydWxlIjogZXJyb3JfdHlwZSwgIm1lc3NhZ2UiOiBlcnJvcn0pKQorCisKK2RlZiBv
dXRwdXRfZXJyb3JfY291bnQoZXJyb3JfY291bnQpOgorICAgIGlmIG5vdCBlcnJvcl9jb3VudDoK
KyAgICAgICAgcmV0dXJuCisKKyAgICBieV90eXBlID0gIiAiLmpvaW4oIiVzOiAlZCIgJSBpdGVt
IGZvciBpdGVtIGluIGVycm9yX2NvdW50Lml0ZW1zKCkpCisgICAgY291bnQgPSBzdW0oZXJyb3Jf
Y291bnQudmFsdWVzKCkpCisgICAgbG9nZ2VyLmluZm8oIiIpCisgICAgaWYgY291bnQgPT0gMToK
KyAgICAgICAgbG9nZ2VyLmluZm8oIlRoZXJlIHdhcyAxIGVycm9yICglcykiICUgKGJ5X3R5cGUs
KSkKKyAgICBlbHNlOgorICAgICAgICBsb2dnZXIuaW5mbygiVGhlcmUgd2VyZSAlZCBlcnJvcnMg
KCVzKSIgJSAoY291bnQsIGJ5X3R5cGUpKQorCisKK2RlZiBjaGFuZ2VkX2ZpbGVzKHdwdF9yb290
KToKKyAgICByZXZpc2ggPSB0ZXN0ZmlsZXMuZ2V0X3JldmlzaChyZXZpc2g9Tm9uZSkKKyAgICBj
aGFuZ2VkLCBfID0gdGVzdGZpbGVzLmZpbGVzX2NoYW5nZWQocmV2aXNoLCBzZXQoKSwgaW5jbHVk
ZV91bmNvbW1pdHRlZD1UcnVlLCBpbmNsdWRlX25ldz1UcnVlKQorICAgIHJldHVybiBbb3MucGF0
aC5yZWxwYXRoKGl0ZW0sIHdwdF9yb290KSBmb3IgaXRlbSBpbiBjaGFuZ2VkXQorCisKK2RlZiBs
aW50X3BhdGhzKGt3YXJncywgd3B0X3Jvb3QpOgorICAgIGlmIGt3YXJncy5nZXQoInBhdGhzIik6
CisgICAgICAgIHIgPSBvcy5wYXRoLnJlYWxwYXRoKHdwdF9yb290KQorICAgICAgICBwYXRocyA9
IFtvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5yZWFscGF0aCh4KSwgcikgZm9yIHggaW4ga3dhcmdz
WyJwYXRocyJdXQorICAgIGVsaWYga3dhcmdzWyJhbGwiXToKKyAgICAgICAgcGF0aHMgPSBsaXN0
KGFsbF9maWxlc3lzdGVtX3BhdGhzKHdwdF9yb290KSkKKyAgICBlbHNlOgorICAgICAgICBjaGFu
Z2VkX3BhdGhzID0gY2hhbmdlZF9maWxlcyh3cHRfcm9vdCkKKyAgICAgICAgZm9yY2VfYWxsID0g
RmFsc2UKKyAgICAgICAgIyBJZiB3ZSBjaGFuZ2VkIHRoZSBsaW50IGl0c2VsZiBlbnN1cmUgdGhh
dCB3ZSByZXRlc3QgZXZlcnl0aGluZworICAgICAgICBmb3IgcGF0aCBpbiBjaGFuZ2VkX3BhdGhz
OgorICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKQorICAg
ICAgICAgICAgaWYgcGF0aCA9PSAibGludC53aGl0ZWxpc3QiIG9yIHBhdGguc3RhcnRzd2l0aCgi
dG9vbHMvbGludC8iKToKKyAgICAgICAgICAgICAgICBmb3JjZV9hbGwgPSBUcnVlCisgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgcGF0aHMgPSAobGlzdChjaGFuZ2VkX3BhdGhzKSBpZiBu
b3QgZm9yY2VfYWxsCisgICAgICAgICAgICAgICAgIGVsc2UgbGlzdChhbGxfZmlsZXN5c3RlbV9w
YXRocyh3cHRfcm9vdCkpKQorCisgICAgcmV0dXJuIHBhdGhzCisKKworZGVmIGNyZWF0ZV9wYXJz
ZXIoKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgicGF0aHMiLCBuYXJncz0iKiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSJMaXN0IG9mIHBhdGhzIHRvIGxpbnQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Ii0tanNvbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSJPdXRwdXQgbWFjaGluZS1yZWFkYWJsZSBKU09OIGZvcm1hdCIpCisgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgiLS1tYXJrZG93biIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSJPdXRwdXQgbWFya2Rvd24iKQorICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoIi0tY3NzLW1vZGUiLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgaGVscD0iUnVuIENTUyB0ZXN0c3VpdGUgc3BlY2lmaWMgbGludHMiKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoIi0tcmVwby1yb290IiwgaGVscD0iVGhlIFdQVCBkaXJlY3Rvcnku
IFVzZSB0aGlzIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9wdGlvbiBpZiB0aGUgbGludCBz
Y3JpcHQgZXhpc3RzIG91dHNpZGUgdGhlIHJlcG9zaXRvcnkiKQorICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoIi0tYWxsIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iSWYgbm8gcGF0aHMgYXJl
IHBhc3NlZCwgdHJ5IHRvIGxpbnQgdGhlIHdob2xlICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJ3b3JraW5nIGRpcmVjdG9yeSwgbm90IGp1c3QgZmlsZXMgdGhhdCBjaGFuZ2VkIikKKyAgICBy
ZXR1cm4gcGFyc2VyCisKKworZGVmIG1haW4oKiprd2FyZ3MpOgorICAgIGlmIGt3YXJncy5nZXQo
Impzb24iKSBhbmQga3dhcmdzLmdldCgibWFya2Rvd24iKToKKyAgICAgICAgbG9nZ2VyLmNyaXRp
Y2FsKCJDYW5ub3Qgc3BlY2lmeSAtLWpzb24gYW5kIC0tbWFya2Rvd24iKQorICAgICAgICBzeXMu
ZXhpdCgyKQorCisgICAgcmVwb19yb290ID0ga3dhcmdzLmdldCgncmVwb19yb290Jykgb3IgbG9j
YWxwYXRocy5yZXBvX3Jvb3QKKyAgICBvdXRwdXRfZm9ybWF0ID0geyhUcnVlLCBGYWxzZSk6ICJq
c29uIiwKKyAgICAgICAgICAgICAgICAgICAgIChGYWxzZSwgVHJ1ZSk6ICJtYXJrZG93biIsCisg
ICAgICAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlKTogIm5vcm1hbCJ9Wyhrd2FyZ3MuZ2V0
KCJqc29uIiwgRmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga3dhcmdzLmdldCgibWFya2Rvd24iLCBGYWxzZSkpXQorCisgICAgaWYgb3V0cHV0
X2Zvcm1hdCA9PSAibWFya2Rvd24iOgorICAgICAgICBzZXR1cF9sb2dnaW5nKFRydWUpCisKKyAg
ICBwYXRocyA9IGxpbnRfcGF0aHMoa3dhcmdzLCByZXBvX3Jvb3QpCisKKyAgICByZXR1cm4gbGlu
dChyZXBvX3Jvb3QsIHBhdGhzLCBvdXRwdXRfZm9ybWF0KQorCisKK2RlZiBsaW50KHJlcG9fcm9v
dCwgcGF0aHMsIG91dHB1dF9mb3JtYXQpOgorICAgIGVycm9yX2NvdW50ID0gZGVmYXVsdGRpY3Qo
aW50KQorICAgIGxhc3QgPSBOb25lCisKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHJlcG9f
cm9vdCwgImxpbnQud2hpdGVsaXN0IikpIGFzIGY6CisgICAgICAgIHdoaXRlbGlzdCwgaWdub3Jl
ZF9maWxlcyA9IHBhcnNlX3doaXRlbGlzdChmKQorCisgICAgb3V0cHV0X2Vycm9ycyA9IHsianNv
biI6IG91dHB1dF9lcnJvcnNfanNvbiwKKyAgICAgICAgICAgICAgICAgICAgICJtYXJrZG93biI6
IG91dHB1dF9lcnJvcnNfbWFya2Rvd24sCisgICAgICAgICAgICAgICAgICAgICAibm9ybWFsIjog
b3V0cHV0X2Vycm9yc190ZXh0fVtvdXRwdXRfZm9ybWF0XQorCisgICAgZGVmIHByb2Nlc3NfZXJy
b3JzKGVycm9ycyk6CisgICAgICAgICIiIgorICAgICAgICBGaWx0ZXJzIGFuZCBwcmludHMgdGhl
IGVycm9ycywgYW5kIHVwZGF0ZXMgdGhlIGBgZXJyb3JfY291bnRgYCBvYmplY3QuCisKKyAgICAg
ICAgOnBhcmFtIGVycm9yczogYSBsaXN0IG9mIGVycm9yIHR1cGxlcyAoZXJyb3IgdHlwZSwgbWVz
c2FnZSwgcGF0aCwgbGluZSBudW1iZXIpCisgICAgICAgIDpyZXR1cm5zOiBgYE5vbmVgYCBpZiB0
aGVyZSB3ZXJlIG5vIGVycm9ycywgb3IKKyAgICAgICAgICAgICAgICAgIGEgdHVwbGUgb2YgdGhl
IGVycm9yIHR5cGUgYW5kIHRoZSBwYXRoIG90aGVyd2lzZQorICAgICAgICAiIiIKKworICAgICAg
ICBlcnJvcnMgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIGVycm9ycykKKwor
ICAgICAgICBpZiBub3QgZXJyb3JzOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAg
ICBvdXRwdXRfZXJyb3JzKGVycm9ycykKKyAgICAgICAgZm9yIGVycm9yX3R5cGUsIGVycm9yLCBw
YXRoLCBsaW5lIGluIGVycm9yczoKKyAgICAgICAgICAgIGVycm9yX2NvdW50W2Vycm9yX3R5cGVd
ICs9IDEKKworICAgICAgICByZXR1cm4gKGVycm9yc1stMV1bMF0sIHBhdGgpCisKKyAgICBmb3Ig
cGF0aCBpbiBwYXRoc1s6XToKKyAgICAgICAgYWJzX3BhdGggPSBvcy5wYXRoLmpvaW4ocmVwb19y
b290LCBwYXRoKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYWJzX3BhdGgpOgorICAg
ICAgICAgICAgcGF0aHMucmVtb3ZlKHBhdGgpCisgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgIGlmIGFueShmbm1hdGNoLmZubWF0Y2gocGF0aCwgZmlsZV9tYXRjaCkgZm9yIGZpbGVfbWF0
Y2ggaW4gaWdub3JlZF9maWxlcyk6CisgICAgICAgICAgICBwYXRocy5yZW1vdmUocGF0aCkKKyAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgZXJyb3JzID0gY2hlY2tfcGF0aChyZXBvX3Jv
b3QsIHBhdGgpCisgICAgICAgIGxhc3QgPSBwcm9jZXNzX2Vycm9ycyhlcnJvcnMpIG9yIGxhc3QK
KworICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihhYnNfcGF0aCk6CisgICAgICAgICAgICB3
aXRoIG9wZW4oYWJzX3BhdGgsICdyYicpIGFzIGY6CisgICAgICAgICAgICAgICAgZXJyb3JzID0g
Y2hlY2tfZmlsZV9jb250ZW50cyhyZXBvX3Jvb3QsIHBhdGgsIGYpCisgICAgICAgICAgICAgICAg
bGFzdCA9IHByb2Nlc3NfZXJyb3JzKGVycm9ycykgb3IgbGFzdAorCisgICAgZXJyb3JzID0gY2hl
Y2tfYWxsX3BhdGhzKHJlcG9fcm9vdCwgcGF0aHMpCisgICAgbGFzdCA9IHByb2Nlc3NfZXJyb3Jz
KGVycm9ycykgb3IgbGFzdAorCisgICAgaWYgb3V0cHV0X2Zvcm1hdCBpbiAoIm5vcm1hbCIsICJt
YXJrZG93biIpOgorICAgICAgICBvdXRwdXRfZXJyb3JfY291bnQoZXJyb3JfY291bnQpCisgICAg
ICAgIGlmIGVycm9yX2NvdW50OgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gKEVSUk9SX01TRyAl
IChsYXN0WzBdLCBsYXN0WzFdLCBsYXN0WzBdLCBsYXN0WzFdKSkuc3BsaXQoIlxuIik6CisgICAg
ICAgICAgICAgICAgbG9nZ2VyLmluZm8obGluZSkKKyAgICByZXR1cm4gc3VtKGl0ZXJ2YWx1ZXMo
ZXJyb3JfY291bnQpKQorCitwYXRoX2xpbnRzID0gW2NoZWNrX3BhdGhfbGVuZ3RoLCBjaGVja193
b3JrZXJfY29sbGlzaW9uLCBjaGVja19haGVtX2NvcHldCithbGxfcGF0aHNfbGludHMgPSBbY2hl
Y2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV0KK2ZpbGVfbGludHMgPSBbY2hlY2tfcmVnZXhwX2xpbmUs
IGNoZWNrX3BhcnNlZCwgY2hlY2tfcHl0aG9uX2FzdCwgY2hlY2tfc2NyaXB0X21ldGFkYXRhXQor
CitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIGFyZ3MgPSBjcmVhdGVfcGFyc2VyKCku
cGFyc2VfYXJncygpCisgICAgZXJyb3JfY291bnQgPSBtYWluKCoqdmFycyhhcmdzKSkKKyAgICBp
ZiBlcnJvcl9jb3VudCA+IDA6CisgICAgICAgIHN5cy5leGl0KDEpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
X19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0
MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2Jhc2UucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
YmFzZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zNjBmMTNjZTI5MzVhM2U1OTFkYjhiNDcyMDA3YTI3MDEwYzhh
ODE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2Jhc2UucHkKQEAgLTAsMCArMSwxMSBAQAorZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCisKK2Zyb20gc2l4IGltcG9ydCBp
bnRlZ2VyX3R5cGVzLCB0ZXh0X3R5cGUKKworZGVmIGNoZWNrX2Vycm9ycyhlcnJvcnMpOgorICAg
IGZvciBlIGluIGVycm9yczoKKyAgICAgICAgZXJyb3JfdHlwZSwgZGVzY3JpcHRpb24sIHBhdGgs
IGxpbmVfbnVtYmVyID0gZQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShlcnJvcl90eXBlLCB0
ZXh0X3R5cGUpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlc2NyaXB0aW9uLCB0ZXh0X3R5
cGUpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHBhdGgsIHRleHRfdHlwZSkKKyAgICAgICAg
YXNzZXJ0IGxpbmVfbnVtYmVyIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShsaW5lX251bWJlciwgaW50
ZWdlcl90eXBlcykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9rZW4uaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9icm9rZW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDc5M2M0M2NhZjAxNjUxZTUxNTVkNzk5M2Q5OWY5
YjVmZDkyODhiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Jyb2tlbi5odG1sCkBAIC0w
LDAgKzEgQEAKK1RISVMgTElORSBIQVMgVFJBSUxJTkcgV0hJVEVTUEFDRSAgICAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS9icm9rZW5faWdub3JlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Jyb2tlbl9pZ25v
cmVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ3OTNjNDNjYWYwMTY1MWU1MTU1ZDc5OTNkOTlmOWI1ZmQ5
Mjg4YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9rZW5faWdub3JlZC5odG1sCkBA
IC0wLDAgKzEgQEAKK1RISVMgTElORSBIQVMgVFJBSUxJTkcgV0hJVEVTUEFDRSAgICAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9hLXJlZi5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nz
cy9jc3MtdW5pcXVlL2EtcmVmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAwNDkxZmQ3ZTViYjZmYTI4YzUx
N2EwYmIzMmI4YjUwNjUzOWQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS9hLXJlZi5odG1sCkBAIC0wLDAgKzEgQEAKKzEKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9jc3MvY3NzLXVuaXF1ZS9hLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvYS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjczYzVkMGJjMzczZjViMWZjMmVlNDViMjk4NWMzM2E4OGM4NDQyMzIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvYS5odG1sCkBAIC0wLDAg
KzEsNCBAQAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3d3dy53My5vcmcvVFIvQ1NT
MjEvYXVyYWwuaHRtbCNwcm9wZGVmLXN0cmVzcyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nz
cy11bmlxdWUvbWF0Y2gvYS1yZWYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRj
aC9hLXJlZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMDQ5MWZkN2U1YmI2ZmEyOGM1MTdhMGJiMzJiOGI1
MDY1MzlkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0
Y2gvYS1yZWYuaHRtbApAQCAtMCwwICsxIEBACisxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvbWF0Y2gvYS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNo
L2EuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43M2M1ZDBiYzM3M2Y1YjFmYzJlZTQ1YjI5ODVjMzNhODhjODQ0
MjMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL2Eu
aHRtbApAQCAtMCwwICsxLDQgQEAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93d3cu
dzMub3JnL1RSL0NTUzIxL2F1cmFsLmh0bWwjcHJvcGRlZi1zdHJlc3MiPgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorMQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvYS5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nz
cy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMDQ5MWZkN2U1
YmI2ZmEyOGM1MTdhMGJiMzJiOGI1MDY1MzlkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9ydC9hLmh0bWwKQEAgLTAsMCArMSBAQAorMQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvdG9vbHMv
YS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvdG9vbHMvYS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBjZmJmMDg4ODZmY2E5YTkxY2I3NTNlYzg3MzRjODRmY2JlNTJjOWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9y
dC90b29scy9hLmh0bWwKQEAgLTAsMCArMSBAQAorMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nz
cy9jc3MtdW5pcXVlL21hdGNoL3Rvb2xzL2EuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1
ZS9tYXRjaC90b29scy9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAwNDkxZmQ3ZTViYjZmYTI4YzUxN2Ew
YmIzMmI4YjUwNjUzOWQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVu
aXF1ZS9tYXRjaC90b29scy9hLmh0bWwKQEAgLTAsMCArMSBAQAorMQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLXJlZi5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nz
cy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLXJlZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjZmJmMDg4ODZm
Y2E5YTkxY2I3NTNlYzg3MzRjODRmY2JlNTJjOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EtcmVmLmh0bWwKQEAgLTAsMCArMSBAQAorMgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjBj
ZTM4M2EyNWNjNDNmNjM1NTU0ODE4NmY5MjI1ZDc5YzdiNDUwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rl
c3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLmh0bWwKQEAgLTAsMCArMSw0IEBA
Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9hdXJh
bC5odG1sI3Byb3BkZWYtc3RyZXNzIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1
ZS9ub3QtbWF0Y2gvc3VwcG9ydC9hLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90
LW1hdGNoL3N1cHBvcnQvYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjZmJmMDg4ODZmY2E5YTkxY2I3NTNl
Yzg3MzRjODRmY2JlNTJjOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11
bmlxdWUvbm90LW1hdGNoL3N1cHBvcnQvYS5odG1sCkBAIC0wLDAgKzEgQEAKKzIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvdG9vbHMvYS5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC90b29scy9hLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGNmYmYwODg4NmZjYTlhOTFjYjc1M2VjODczNGM4NGZjYmU1MmM5ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvdG9vbHMvYS5odG1sCkBAIC0w
LDAgKzEgQEAKKzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zZWxlY3Rv
cnMvYS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3NlbGVjdG9ycy9hLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGQ2M2M2YmZlZGQxMzg2ODgzZmE4ZmFlMzI0MjM5NTMwNWExYzJjZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zZWxlY3RvcnMvYS5odG1sCkBA
IC0wLDAgKzEsNCBAQAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvc2VsZWN0b3JzLTMvI3R5cGUtc2VsZWN0b3JzIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9j
c3MvY3NzLXVuaXF1ZS9zdXBwb3J0L2EuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9z
dXBwb3J0L2EuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDA0OTFmZDdlNWJiNmZhMjhjNTE3YTBiYjMyYjhi
NTA2NTM5ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3N1
cHBvcnQvYS5odG1sCkBAIC0wLDAgKzEgQEAKKzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3Mv
Y3NzLXVuaXF1ZS9zdXBwb3J0L3Rvb2xzL2EuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1
ZS9zdXBwb3J0L3Rvb2xzL2EuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2ZiZjA4ODg2ZmNhOWE5MWNiNzUz
ZWM4NzM0Yzg0ZmNiZTUyYzlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3Mt
dW5pcXVlL3N1cHBvcnQvdG9vbHMvYS5odG1sCkBAIC0wLDAgKzEgQEAKKzIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS90b29scy9hLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nz
cy11bmlxdWUvdG9vbHMvYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMDQ5MWZkN2U1YmI2ZmEyOGM1MTdh
MGJiMzJiOGI1MDY1MzlkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11
bmlxdWUvdG9vbHMvYS5odG1sCkBAIC0wLDAgKzEgQEAKKzEKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9kZXBlbmRlbmN5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvZGVwZW5kZW5jeS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI5Mjk2ZjRjNTg3NmZjOGM0Y2QwNTI1NDg2MTYwMDVjMWU0NmYwZTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvZGVwZW5kZW5jeS5odG1sCkBAIC0wLDAgKzEgQEAKK1RoaXMgZmlsZSBp
cyB1c2VkIHRvIGRlbW9uc3RyYXRlIGFjY2VwdGFuY2Ugb2Ygcm9vdC1yZWxhdGl2ZSByZWZ0ZXN0
IHJlZmVyZW5jZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC53aGl0ZWxpc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvbGludC53aGl0ZWxpc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc2M2U0NDMyZTVhZmEyMTIzMDM1MzQ1
ZTEzMGQwMTg3MTBmZmRkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9saW50LndoaXRl
bGlzdApAQCAtMCwwICsxIEBACisqOmJyb2tlbl9pZ25vcmVkLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9va2F5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvb2theS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzMTc4
YTNjODNhMzgzNWM3MWJjMDc2OGMwYzFlYTdiZDNmZjcyMjYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvb2theS5odG1sCkBAIC0wLDAgKzEgQEAKK1RISVMgTElORSBIQVMgTk8gVFJBSUxJ
TkcgV0hJVEVTUEFDRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9hYnNvbHV0ZS5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rl
c3RzL2R1bW15L3JlZi9hYnNvbHV0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNDdiYzg4MzY3MWJkMzA4
MTM1OTdjM2FlYmE5MjI5OTNiMzY1M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVm
L2Fic29sdXRlLmh0bWwKQEAgLTAsMCArMSBAQAorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iaHR0
cDovL2V4YW1wbGUuY29tL3JlZmVyZW5jZS5odG1sIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9y
ZWYvZXhpc3RlbnRfcmVsYXRpdmUtcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2V4aXN0ZW50X3Jl
bGF0aXZlLXJlZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFk
OGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvZXhpc3RlbnRfcmVsYXRpdmUu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9yZWYvZXhpc3RlbnRfcmVsYXRpdmUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
OTM2NGVlNWZiMTFjNjllYTdkMDdkNDRmMTc3NjA5MGQ4YzZlODJiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9yZWxhdGl2ZS5odG1sCkBAIC0wLDAgKzEgQEAKKzxs
aW5rIHJlbD0ibWF0Y2giIGhyZWY9ImV4aXN0ZW50X3JlbGF0aXZlLXJlZi5odG1sIj4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9yZWYvZXhpc3RlbnRfcm9vdF9yZWxhdGl2ZS5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L3JlZi9leGlzdGVudF9yb290X3JlbGF0aXZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJlZGMyZDMw
OWJhYTc1ZjRiNjgyNzE3MjFlMTJkODE0NTVhNGE2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS9yZWYvZXhpc3RlbnRfcm9vdF9yZWxhdGl2ZS5odG1sCkBAIC0wLDAgKzEgQEAKKzxsaW5r
IHJlbD0ibWF0Y2giIGhyZWY9Ii9kZXBlbmRlbmN5Lmh0bWwiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L3JlZi9ub25fZXhpc3RlbnRfcmVsYXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvbm9uX2V4
aXN0ZW50X3JlbGF0aXZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA5YTFkNWViMDExOTlkNDcwNjM2ODhm
M2VlMjNmYWQzNDY2MzZiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvbm9uX2V4
aXN0ZW50X3JlbGF0aXZlLmh0bWwKQEAgLTAsMCArMSBAQAorPGxpbmsgcmVsPSJtYXRjaCIgaHJl
Zj0ibm9uX2V4aXN0ZW50X2ZpbGUuaHRtbCI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL25v
bl9leGlzdGVudF9yb290X3JlbGF0aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL25vbl9leGlzdGVu
dF9yb290X3JlbGF0aXZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE4MTIwMTNhYTA5YTY2ZmIwMTk1Y2Vm
YTZjNGY4Y2UwYTRjOTA2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvbm9uX2V4
aXN0ZW50X3Jvb3RfcmVsYXRpdmUuaHRtbApAQCAtMCwwICsxIEBACis8bGluayByZWw9Im1hdGNo
IiBocmVmPSIvbm9uX2V4aXN0ZW50X2ZpbGUuaHRtbCI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
cmVmL3NhbWVfZmlsZV9lbXB0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9zYW1lX2ZpbGVfZW1wdHku
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lYWExOGU5YzAxMDg2Zjg4ZmJhYTZjOWIwNWRkNmUyNmM0ZDZhYjQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9zYW1lX2ZpbGVfZW1wdHkuaHRtbApA
QCAtMCwwICsxIEBACis8bGluayByZWw9Im1hdGNoIiBocmVmPSIiPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L3JlZi9zYW1lX2ZpbGVfcGF0aC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9zYW1lX2ZpbGVf
cGF0aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhODBjMWYyMGRkZjBkZmY4YmExMGVmZjNjY2U0ZmM3Mjg2
Zjc5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9wYXRoLmh0
bWwKQEAgLTAsMCArMSBAQAorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0ic2FtZV9maWxlX3BhdGgu
aHRtbCI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9maWxlX2xpbnRzLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfZmls
ZV9saW50cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGZiMjIxYjdhNTg3MGYwMDc1YmQ1NTBlZjc0YjQyYmQ3
ZmVlYTc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfZmlsZV9saW50cy5weQpAQCAtMCww
ICsxLDU5OCBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCisKK2Zy
b20gLi5saW50IGltcG9ydCBjaGVja19maWxlX2NvbnRlbnRzCitmcm9tIC5iYXNlIGltcG9ydCBj
aGVja19lcnJvcnMKK2ltcG9ydCBvcworaW1wb3J0IHB5dGVzdAoraW1wb3J0IHNpeAorCitJTlRF
UkVTVElOR19GSUxFX05BTUVTID0geworICAgICJweXRob24iOiBbCisgICAgICAgICJ0ZXN0LnB5
IiwKKyAgICBdLAorICAgICJqcyI6IFsKKyAgICAgICAgInRlc3QuanMiLAorICAgIF0sCisgICAg
IndlYi1sYXgiOiBbCisgICAgICAgICJ0ZXN0Lmh0bSIsCisgICAgICAgICJ0ZXN0Lmh0bWwiLAor
ICAgIF0sCisgICAgIndlYi1zdHJpY3QiOiBbCisgICAgICAgICJ0ZXN0LnN2ZyIsCisgICAgICAg
ICJ0ZXN0LnhodCIsCisgICAgICAgICJ0ZXN0LnhodG1sIiwKKyAgICBdLAorfQorCitkZWYgY2hl
Y2tfd2l0aF9maWxlcyhpbnB1dF9ieXRlcyk6CisgICAgcmV0dXJuIHsKKyAgICAgICAgZmlsZW5h
bWU6IChjaGVja19maWxlX2NvbnRlbnRzKCIiLCBmaWxlbmFtZSwgc2l4LkJ5dGVzSU8oaW5wdXRf
Ynl0ZXMpKSwga2luZCkKKyAgICAgICAgZm9yIChmaWxlbmFtZSwga2luZCkgaW4KKyAgICAgICAg
KAorICAgICAgICAgICAgKG9zLnBhdGguam9pbigiaHRtbCIsIGZpbGVuYW1lKSwga2luZCkKKyAg
ICAgICAgICAgIGZvciAoa2luZCwgZmlsZW5hbWVzKSBpbiBJTlRFUkVTVElOR19GSUxFX05BTUVT
Lml0ZW1zKCkKKyAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXMKKyAgICAgICAg
KQorICAgIH0KKworCitkZWYgdGVzdF90cmFpbGluZ193aGl0ZXNwYWNlKCk6CisgICAgZXJyb3Jf
bWFwID0gY2hlY2tfd2l0aF9maWxlcyhiInRlc3Q7ICIpCisKKyAgICBmb3IgKGZpbGVuYW1lLCAo
ZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9y
cyhlcnJvcnMpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbKCJUUkFJTElORyBXSElURVNQQUNFIiwg
IldoaXRlc3BhY2UgYXQgRU9MIiwgZmlsZW5hbWUsIDEpXQorICAgICAgICBpZiBraW5kID09ICJ3
ZWItc3RyaWN0IjoKKyAgICAgICAgICAgIGV4cGVjdGVkLmFwcGVuZCgoIlBBUlNFLUZBSUxFRCIs
ICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCBOb25lKSkKKyAgICAgICAgYXNzZXJ0
IGVycm9ycyA9PSBleHBlY3RlZAorCisKK2RlZiB0ZXN0X2luZGVudF90YWJzKCk6CisgICAgZXJy
b3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhiImRlZiBmb28oKTpcblx4MDlwYXNzIikKKworICAg
IGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAg
ICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBleHBlY3RlZCA9IFsoIklOREVO
VCBUQUJTIiwgIlRhYnMgdXNlZCBmb3IgaW5kZW50YXRpb24iLCBmaWxlbmFtZSwgMildCisgICAg
ICAgIGlmIGtpbmQgPT0gIndlYi1zdHJpY3QiOgorICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5k
KCgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIE5vbmUp
KQorICAgICAgICBhc3NlcnQgZXJyb3JzID09IGV4cGVjdGVkCisKKworZGVmIHRlc3RfY3Jfbm90
X2F0X2VvbCgpOgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJsaW5lMVxybGlu
ZTJcciIpCisKKyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFw
Lml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgZXhwZWN0
ZWQgPSBbKCJDUiBBVCBFT0wiLCAiQ1IgY2hhcmFjdGVyIGluIGxpbmUgc2VwYXJhdG9yIiwgZmls
ZW5hbWUsIDEpXQorICAgICAgICBpZiBraW5kID09ICJ3ZWItc3RyaWN0IjoKKyAgICAgICAgICAg
IGV4cGVjdGVkLmFwcGVuZCgoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIs
IGZpbGVuYW1lLCBOb25lKSkKKyAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBleHBlY3RlZAorCisK
K2RlZiB0ZXN0X2NyX2F0X2VvbCgpOgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMo
YiJsaW5lMVxyXG5saW5lMlxyXG4iKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2lu
ZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQor
CisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgKCJDUiBBVCBFT0wiLCAiQ1IgY2hh
cmFjdGVyIGluIGxpbmUgc2VwYXJhdG9yIiwgZmlsZW5hbWUsIDEpLAorICAgICAgICAgICAgKCJD
UiBBVCBFT0wiLCAiQ1IgY2hhcmFjdGVyIGluIGxpbmUgc2VwYXJhdG9yIiwgZmlsZW5hbWUsIDIp
LAorICAgICAgICBdCisgICAgICAgIGlmIGtpbmQgPT0gIndlYi1zdHJpY3QiOgorICAgICAgICAg
ICAgZXhwZWN0ZWQuYXBwZW5kKCgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxl
IiwgZmlsZW5hbWUsIE5vbmUpKQorICAgICAgICBhc3NlcnQgZXJyb3JzID09IGV4cGVjdGVkCisK
KworZGVmIHRlc3RfdzNjX3Rlc3Rfb3JnKCk6CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9m
aWxlcyhiImltcG9ydCgnaHR0cDovL3d3dy53M2MtdGVzdC5vcmcvJykiKQorCisgICAgZm9yIChm
aWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBj
aGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGV4cGVjdGVkID0gWygiVzNDLVRFU1QuT1JH
IiwgIkV4dGVybmFsIHczYy10ZXN0Lm9yZyBkb21haW4gdXNlZCIsIGZpbGVuYW1lLCAxKV0KKyAg
ICAgICAgaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAgIGV4cGVjdGVkLmFwcGVuZCgo
IlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKSkKKyAg
ICAgICAgZWxpZiBraW5kID09ICJ3ZWItc3RyaWN0IjoKKyAgICAgICAgICAgIGV4cGVjdGVkLmFw
cGVuZCgoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCBO
b25lKSkKKyAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBleHBlY3RlZAorCitkZWYgdGVzdF93ZWJf
cGxhdGZvcm1fdGVzdCgpOgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJpbXBv
cnQoJ2h0dHA6Ly93ZWItcGxhdGZvcm0udGVzdC8nKSIpCisKKyAgICBmb3IgKGZpbGVuYW1lLCAo
ZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9y
cyhlcnJvcnMpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbKCJXRUItUExBVEZPUk0uVEVTVCIsICJJ
bnRlcm5hbCB3ZWItcGxhdGZvcm0udGVzdCBkb21haW4gdXNlZCIsIGZpbGVuYW1lLCAxKV0KKyAg
ICAgICAgaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAgIGV4cGVjdGVkLmFwcGVuZCgo
IlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKSkKKyAg
ICAgICAgZWxpZiBraW5kID09ICJ3ZWItc3RyaWN0IjoKKyAgICAgICAgICAgIGV4cGVjdGVkLmFw
cGVuZCgoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCBO
b25lKSkKKyAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBleHBlY3RlZAorCisKK2RlZiB0ZXN0X3dl
YmlkbDJfanMoKToKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGIiPHNjcmlwdCBz
cmM9L3Jlc291cmNlcy93ZWJpZGwyLmpzPiIpCisKKyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3Jz
LCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJv
cnMpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbKCJXRUJJREwyLkpTIiwgIkxlZ2FjeSB3ZWJpZGwy
LmpzIHNjcmlwdCB1c2VkIiwgZmlsZW5hbWUsIDEpXQorICAgICAgICBpZiBraW5kID09ICJweXRo
b24iOgorICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKCgiUEFSU0UtRkFJTEVEIiwgIlVuYWJs
ZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDEpKQorICAgICAgICBlbGlmIGtpbmQgPT0gIndl
Yi1zdHJpY3QiOgorICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKCgiUEFSU0UtRkFJTEVEIiwg
IlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIE5vbmUpKQorICAgICAgICBhc3NlcnQg
ZXJyb3JzID09IGV4cGVjdGVkCisKKworZGVmIHRlc3RfY29uc29sZSgpOgorICAgIGVycm9yX21h
cCA9IGNoZWNrX3dpdGhfZmlsZXMoYiI8c2NyaXB0PlxuY29uc29sZS5sb2coJ2Vycm9yJyk7XG5j
b25zb2xlLmVycm9yICgnbG9nJylcbjwvc2NyaXB0PiIpCisKKyAgICBmb3IgKGZpbGVuYW1lLCAo
ZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9y
cyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCBpbiBbIndlYi1sYXgiLCAid2ViLXN0cmljdCIs
ICJqcyJdOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAgICAg
KCJDT05TT0xFIiwgIkNvbnNvbGUgbG9nZ2luZyBBUEkgdXNlZCIsIGZpbGVuYW1lLCAyKSwKKyAg
ICAgICAgICAgICAgICAoIkNPTlNPTEUiLCAiQ29uc29sZSBsb2dnaW5nIEFQSSB1c2VkIiwgZmls
ZW5hbWUsIDMpLAorICAgICAgICAgICAgXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNz
ZXJ0IGVycm9ycyA9PSBbKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBm
aWxlbmFtZSwgMSldCisKKworZGVmIHRlc3Rfc2V0VGltZW91dCgpOgorICAgIGVycm9yX21hcCA9
IGNoZWNrX3dpdGhfZmlsZXMoYiI8c2NyaXB0PnNldFRpbWVvdXQoKCkgPT4gMSwgMTApPC9zY3Jp
cHQ+IikKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAu
aXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBpZiBraW5k
ID09ICJweXRob24iOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbKCJQQVJTRS1GQUlM
RUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgMSldCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsoJ1NFVCBUSU1FT1VUJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnc2V0VGltZW91dCB1c2VkOyBzdGVwX3RpbWVvdXQgc2hv
dWxkIHR5cGljYWxseSBiZSB1c2VkIGluc3RlYWQnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpXQorCisK
K2RlZiB0ZXN0X2V2ZW50U2VuZGVyKCk6CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxl
cyhiIjxzY3JpcHQ+ZXZlbnRTZW5kZXIubW91c2VEb3duKCk8L3NjcmlwdD4iKQorCisgICAgZm9y
IChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAg
ICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6Cisg
ICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8g
cGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFz
c2VydCBlcnJvcnMgPT0gWygnTEFZT1VUVEVTVFMgQVBJUycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2V2ZW50U2VuZGVyL3Rlc3RSdW5uZXIvd2luZG93LmludGVybmFscyB1c2Vk
OyB0aGVzZSBhcmUgTGF5b3V0VGVzdHMtc3BlY2lmaWMgQVBJcyAoV2ViS2l0L0JsaW5rKScsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMSldCisKKworZGVmIHRlc3RfdGVzdFJ1bm5lcigpOgorICAgIGVycm9y
X21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiI8c2NyaXB0PmlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eyB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsgfTwvc2NyaXB0PiIpCisKKyAgICBmb3IgKGZp
bGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNo
ZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAg
ICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWygiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJz
ZSBmaWxlIiwgZmlsZW5hbWUsIDEpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0
IGVycm9ycyA9PSBbKCdMQVlPVVRURVNUUyBBUElTJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnZXZlbnRTZW5kZXIvdGVzdFJ1bm5lci93aW5kb3cuaW50ZXJuYWxzIHVzZWQ7IHRo
ZXNlIGFyZSBMYXlvdXRUZXN0cy1zcGVjaWZpYyBBUElzIChXZWJLaXQvQmxpbmspJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxKV0KKworCitkZWYgdGVzdF93aW5kb3dEb3RJbnRlcm5hbHMoKToKKyAgICBl
cnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGIiPHNjcmlwdD5pZiAod2luZG93LmludGVybmFs
cykgeyBpbnRlcm5hbHMuZG9BVGhpbmcoKTsgfTwvc2NyaXB0PiIpCisKKyAgICBmb3IgKGZpbGVu
YW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNr
X2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAg
ICAgIGFzc2VydCBlcnJvcnMgPT0gWygiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBm
aWxlIiwgZmlsZW5hbWUsIDEpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGVy
cm9ycyA9PSBbKCdMQVlPVVRURVNUUyBBUElTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnZXZlbnRTZW5kZXIvdGVzdFJ1bm5lci93aW5kb3cuaW50ZXJuYWxzIHVzZWQ7IHRoZXNl
IGFyZSBMYXlvdXRUZXN0cy1zcGVjaWZpYyBBUElzIChXZWJLaXQvQmxpbmspJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxKV0KKworCitkZWYgdGVzdF9tZXRhX3RpbWVvdXQoKToKKyAgICBjb2RlID0gYiIi
IgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPG1ldGEgbmFt
ZT0idGltZW91dCIgLz4KKzxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9InNob3J0IiAvPgor
PG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ibG9uZyIgLz4KKzwvaHRtbD4KKyIiIgorICAg
IGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoY29kZSkKKworICAgIGZvciAoZmlsZW5hbWUs
IChlcnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJy
b3JzKGVycm9ycykKKworICAgICAgICBpZiBraW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3RyaWN0
Il06CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIk1V
TFRJUExFLVRJTUVPVVQiLCAiTW9yZSB0aGFuIG9uZSBtZXRhIG5hbWU9J3RpbWVvdXQnIiwgZmls
ZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgiSU5WQUxJRC1USU1FT1VUIiwgIkludmFs
aWQgdGltZW91dCB2YWx1ZSAiLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICAgICAgKCJJ
TlZBTElELVRJTUVPVVQiLCAiSW52YWxpZCB0aW1lb3V0IHZhbHVlIHNob3J0IiwgZmlsZW5hbWUs
IE5vbmUpLAorICAgICAgICAgICAgXQorICAgICAgICBlbGlmIGtpbmQgPT0gInB5dGhvbiI6Cisg
ICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIlBBUlNFLUZB
SUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAyKSwKKyAgICAgICAgICAg
IF0KKworCitkZWYgdGVzdF9lYXJseV90ZXN0aGFybmVzc3JlcG9ydCgpOgorICAgIGNvZGUgPSBi
IiIiCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+CisiIiIK
KyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGNvZGUpCisKKyAgICBmb3IgKGZpbGVu
YW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNr
X2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCBpbiBbIndlYi1sYXgiLCAid2ViLXN0
cmljdCJdOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAgICAg
KCJFQVJMWS1URVNUSEFSTkVTU1JFUE9SVCIsICJ0ZXN0aGFybmVzc3JlcG9ydC5qcyBzY3JpcHQg
c2VlbiBiZWZvcmUgdGVzdGhhcm5lc3MuanMgc2NyaXB0IiwgZmlsZW5hbWUsIE5vbmUpLAorICAg
ICAgICAgICAgXQorICAgICAgICBlbGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAgICBh
c3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIlBBUlNFLUZBSUxFRCIsICJVbmFi
bGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAyKSwKKyAgICAgICAgICAgIF0KKworCitkZWYg
dGVzdF9tdWx0aXBsZV90ZXN0aGFybmVzcygpOgorICAgIGNvZGUgPSBiIiIiCis8aHRtbCB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+CisiIiIKKyAgICBlcnJvcl9tYXAgPSBjaGVj
a193aXRoX2ZpbGVzKGNvZGUpCisKKyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkg
aW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAg
ICAgICAgaWYga2luZCBpbiBbIndlYi1sYXgiLCAid2ViLXN0cmljdCJdOgorICAgICAgICAgICAg
YXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAgICAgKCJNVUxUSVBMRS1URVNUSEFSTkVT
UyIsICJNb3JlIHRoYW4gb25lIDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Jz4iLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICAgICAgKCJNSVNTSU5HLVRFU1RIQVJO
RVNTUkVQT1JUIiwgIk1pc3NpbmcgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMnPiIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxp
ZiBraW5kID09ICJweXRob24iOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAg
ICAgICAgICAgICAgKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxl
bmFtZSwgMiksCisgICAgICAgICAgICBdCisKKworZGVmIHRlc3RfbXVsdGlwbGVfdGVzdGhhcm5l
c3NyZXBvcnQoKToKKyAgICBjb2RlID0gYiIiIgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPC9odG1sPgorIiIiCisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxl
cyhjb2RlKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21h
cC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtp
bmQgaW4gWyJ3ZWItbGF4IiwgIndlYi1zdHJpY3QiXToKKyAgICAgICAgICAgIGFzc2VydCBlcnJv
cnMgPT0gWworICAgICAgICAgICAgICAgICgiTVVMVElQTEUtVEVTVEhBUk5FU1NSRVBPUlQiLCAi
TW9yZSB0aGFuIG9uZSA8c2NyaXB0IHNyYz0nL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyc+IiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgXQorICAgICAgICBlbGlmIGtpbmQg
PT0gInB5dGhvbiI6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAg
ICAgICAoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAy
KSwKKyAgICAgICAgICAgIF0KKworCitkZWYgdGVzdF9wcmVzZW50X3Rlc3RoYXJuZXNzY3NzKCk6
CisgICAgY29kZSA9IGIiIiIKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3Mi
Lz4KKzwvaHRtbD4KKyIiIgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoY29kZSkK
KworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMo
KToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBpZiBraW5kIGluIFsi
d2ViLWxheCIsICJ3ZWItc3RyaWN0Il06CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsK
KyAgICAgICAgICAgICAgICAoIlBSRVNFTlQtVEVTVEhBUk5FU1NDU1MiLCAiRXhwbGljaXQgbGlu
ayB0byB0ZXN0aGFybmVzcy5jc3MgcHJlc2VudCIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgZWxpZiBraW5kID09ICJweXRob24iOgorICAgICAgICAgICAgYXNzZXJ0
IGVycm9ycyA9PSBbCisgICAgICAgICAgICAgICAgKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRv
IHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgMiksCisgICAgICAgICAgICBdCisKKworZGVmIHRlc3Rf
dGVzdGhhcm5lc3NfcGF0aCgpOgorICAgIGNvZGUgPSBiIiIiXAorPGh0bWwgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNjcmlwdCBzcmM9InRlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iaHR0cDovL3czYy10ZXN0Lm9yZy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPC9odG1sPgorIiIiCisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxl
cyhjb2RlKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21h
cC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGV4cGVj
dGVkID0gWygiVzNDLVRFU1QuT1JHIiwgIkV4dGVybmFsIHczYy10ZXN0Lm9yZyBkb21haW4gdXNl
ZCIsIGZpbGVuYW1lLCA1KV0KKyAgICAgICAgaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAg
ICAgIGV4cGVjdGVkLmFwcGVuZCgoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmls
ZSIsIGZpbGVuYW1lLCAxKSkKKyAgICAgICAgZWxpZiBraW5kIGluIFsid2ViLWxheCIsICJ3ZWIt
c3RyaWN0Il06CisgICAgICAgICAgICBleHBlY3RlZC5leHRlbmQoWworICAgICAgICAgICAgICAg
ICgiVEVTVEhBUk5FU1MtUEFUSCIsICJ0ZXN0aGFybmVzcy5qcyBzY3JpcHQgc2VlbiB3aXRoIGlu
Y29ycmVjdCBwYXRoIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgiVEVTVEhB
Uk5FU1MtUEFUSCIsICJ0ZXN0aGFybmVzcy5qcyBzY3JpcHQgc2VlbiB3aXRoIGluY29ycmVjdCBw
YXRoIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgiVEVTVEhBUk5FU1MtUEFU
SCIsICJ0ZXN0aGFybmVzcy5qcyBzY3JpcHQgc2VlbiB3aXRoIGluY29ycmVjdCBwYXRoIiwgZmls
ZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgiVEVTVEhBUk5FU1MtUEFUSCIsICJ0ZXN0
aGFybmVzcy5qcyBzY3JpcHQgc2VlbiB3aXRoIGluY29ycmVjdCBwYXRoIiwgZmlsZW5hbWUsIE5v
bmUpLAorICAgICAgICAgICAgXSkKKyAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBleHBlY3RlZAor
CisKK2RlZiB0ZXN0X3Rlc3RoYXJuZXNzcmVwb3J0X3BhdGgoKToKKyAgICBjb2RlID0gYiIiIlwK
KzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3JpcHQgc3Jj
PSJ0ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Imh0dHA6Ly93
M2MtdGVzdC5vcmcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwv
aHRtbD4KKyIiIgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoY29kZSkKKworICAg
IGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAg
ICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBleHBlY3RlZCA9IFsoIlczQy1U
RVNULk9SRyIsICJFeHRlcm5hbCB3M2MtdGVzdC5vcmcgZG9tYWluIHVzZWQiLCBmaWxlbmFtZSwg
NSldCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAgICBleHBlY3RlZC5h
cHBlbmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwg
MSkpCisgICAgICAgIGVsaWYga2luZCBpbiBbIndlYi1sYXgiLCAid2ViLXN0cmljdCJdOgorICAg
ICAgICAgICAgZXhwZWN0ZWQuZXh0ZW5kKFsKKyAgICAgICAgICAgICAgICAoIlRFU1RIQVJORVNT
UkVQT1JULVBBVEgiLCAidGVzdGhhcm5lc3NyZXBvcnQuanMgc2NyaXB0IHNlZW4gd2l0aCBpbmNv
cnJlY3QgcGF0aCIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoIlRFU1RIQVJO
RVNTUkVQT1JULVBBVEgiLCAidGVzdGhhcm5lc3NyZXBvcnQuanMgc2NyaXB0IHNlZW4gd2l0aCBp
bmNvcnJlY3QgcGF0aCIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoIlRFU1RI
QVJORVNTUkVQT1JULVBBVEgiLCAidGVzdGhhcm5lc3NyZXBvcnQuanMgc2NyaXB0IHNlZW4gd2l0
aCBpbmNvcnJlY3QgcGF0aCIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoIlRF
U1RIQVJORVNTUkVQT1JULVBBVEgiLCAidGVzdGhhcm5lc3NyZXBvcnQuanMgc2NyaXB0IHNlZW4g
d2l0aCBpbmNvcnJlY3QgcGF0aCIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgIF0pCisg
ICAgICAgIGFzc2VydCBlcnJvcnMgPT0gZXhwZWN0ZWQKKworCitkZWYgdGVzdF9ub3RfdGVzdGhh
cm5lc3NfcGF0aCgpOgorICAgIGNvZGUgPSBiIiIiXAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJwZXJmdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPC9odG1sPgorIiIiCisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9m
aWxlcyhjb2RlKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9y
X21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlm
IGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAg
ICAgICAgICAgICAoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVu
YW1lLCAxKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2Vy
dCBlcnJvcnMgPT0gW10KKworCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKHNpeC5QWTMsIHJlYXNvbj0i
Q2Fubm90IHBhcnNlIHByaW50IHN0YXRlbWVudHMgZnJvbSBweXRob24gMyIpCitkZWYgdGVzdF9w
cmludF9zdGF0ZW1lbnQoKToKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGIiZGVm
IGZvbygpOlxuICBwcmludCAnc3RhdGVtZW50J1xuICBwcmludFxuIikKKworICAgIGZvciAoZmls
ZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hl
Y2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBpZiBraW5kID09ICJweXRob24iOgorICAgICAg
ICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAgICAgKCJQUklOVCBTVEFURU1F
TlQiLCAiUHJpbnQgZnVuY3Rpb24gdXNlZCIsIGZpbGVuYW1lLCAyKSwKKyAgICAgICAgICAgICAg
ICAoIlBSSU5UIFNUQVRFTUVOVCIsICJQcmludCBmdW5jdGlvbiB1c2VkIiwgZmlsZW5hbWUsIDMp
LAorICAgICAgICAgICAgXQorICAgICAgICBlbGlmIGtpbmQgPT0gIndlYi1zdHJpY3QiOgorICAg
ICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAgICAgKCJQQVJTRS1GQUlM
RUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAg
ICBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFtdCisKKwor
ZGVmIHRlc3RfcHJpbnRfZnVuY3Rpb24oKToKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2Zp
bGVzKGIiZGVmIGZvbygpOlxuICBwcmludCgnZnVuY3Rpb24nKVxuIikKKworICAgIGZvciAoZmls
ZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hl
Y2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBpZiBraW5kID09ICJweXRob24iOgorICAgICAg
ICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAgICAgKCJQUklOVCBTVEFURU1F
TlQiLCAiUHJpbnQgZnVuY3Rpb24gdXNlZCIsIGZpbGVuYW1lLCAyKSwKKyAgICAgICAgICAgIF0K
KyAgICAgICAgZWxpZiBraW5kID09ICJ3ZWItc3RyaWN0IjoKKyAgICAgICAgICAgIGFzc2VydCBl
cnJvcnMgPT0gWworICAgICAgICAgICAgICAgICgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBw
YXJzZSBmaWxlIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgXQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbXQorCisKK29wZW5fbW9kZV9jb2RlID0g
IiIiCitkZWYgZmlyc3QoKToKKyAgICByZXR1cm4gezB9KCJ0ZXN0LnBuZyIpCisKK2RlZiBzZWNv
bmQoKToKKyAgICByZXR1cm4gezB9KCJ0ZXN0LnBuZyIsICJyIikKKworZGVmIHRoaXJkKCk6Cisg
ICAgcmV0dXJuIHswfSgidGVzdC5wbmciLCAicmIiKQorCitkZWYgZm91cnRoKCk6CisgICAgcmV0
dXJuIHswfSgidGVzdC5wbmciLCBlbmNvZGluZz0idXRmLTgiKQorCitkZWYgZmlmdGgoKToKKyAg
ICByZXR1cm4gezB9KCJ0ZXN0LnBuZyIsIG1vZGU9InJiIikKKyIiIgorCisKK2RlZiB0ZXN0X29w
ZW5fbW9kZSgpOgorICAgIGZvciBtZXRob2QgaW4gWyJvcGVuIiwgImZpbGUiXToKKyAgICAgICAg
Y29kZSA9IG9wZW5fbW9kZV9jb2RlLmZvcm1hdChtZXRob2QpLmVuY29kZSgidXRmLTgiKQorICAg
ICAgICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCAidGVzdC5weSIsIHNpeC5CeXRl
c0lPKGNvZGUpKQorICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIG1lc3Nh
Z2UgPSAoIkZpbGUgb3BlbmVkIHdpdGhvdXQgcHJvdmlkaW5nIGFuIGV4cGxpY2l0IG1vZGUgKG5v
dGU6ICIgKworICAgICAgICAgICAgICAgICAgICJiaW5hcnkgZmlsZXMgbXVzdCBiZSByZWFkIHdp
dGggJ2InIGluIHRoZSBtb2RlIGZsYWdzKSIpCisKKyAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBb
CisgICAgICAgICAgICAoIk9QRU4tTk8tTU9ERSIsIG1lc3NhZ2UsICJ0ZXN0LnB5IiwgMyksCisg
ICAgICAgICAgICAoIk9QRU4tTk8tTU9ERSIsIG1lc3NhZ2UsICJ0ZXN0LnB5IiwgMTIpLAorICAg
ICAgICBdCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICJmaWxlbmFtZSxleHBl
Y3RfZXJyb3IiLAorICAgIFsKKyAgICAgICAgKCJmb28vYmFyLmh0bWwiLCBGYWxzZSksCisgICAg
ICAgICgiY3NzL2Jhci5odG1sIiwgVHJ1ZSksCisgICAgXSkKK2RlZiB0ZXN0X2Nzc19zdXBwb3J0
X2ZpbGUoZmlsZW5hbWUsIGV4cGVjdF9lcnJvcik6CisgICAgZXJyb3JzID0gY2hlY2tfZmlsZV9j
b250ZW50cygiIiwgZmlsZW5hbWUsIHNpeC5CeXRlc0lPKGIiIikpCisgICAgY2hlY2tfZXJyb3Jz
KGVycm9ycykKKworICAgIGlmIGV4cGVjdF9lcnJvcjoKKyAgICAgICAgYXNzZXJ0IGVycm9ycyA9
PSBbCisgICAgICAgICAgICAoJ1NVUFBPUlQtV1JPTkctRElSJywKKyAgICAgICAgICAgICAnU3Vw
cG9ydCBmaWxlIG5vdCBpbiBzdXBwb3J0IGRpcmVjdG9yeScsCisgICAgICAgICAgICAgZmlsZW5h
bWUsCisgICAgICAgICAgICAgTm9uZSksCisgICAgICAgIF0KKyAgICBlbHNlOgorICAgICAgICBh
c3NlcnQgZXJyb3JzID09IFtdCisKKworZGVmIHRlc3RfY3NzX21pc3NpbmdfZmlsZV9pbl9jc3Mo
KToKKyAgICBjb2RlID0gYiIiIlwKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzwvaHRtbD4KKyIiIgorICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVudHMoIiIsICJj
c3MvZm9vL2Jhci5odG1sIiwgc2l4LkJ5dGVzSU8oY29kZSkpCisgICAgY2hlY2tfZXJyb3JzKGVy
cm9ycykKKworICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAoJ01JU1NJTkctTElOSycs
CisgICAgICAgICAnVGVzdGNhc2UgZmlsZSBtdXN0IGhhdmUgYSBsaW5rIHRvIGEgc3BlYycsCisg
ICAgICAgICAiY3NzL2Zvby9iYXIuaHRtbCIsCisgICAgICAgICBOb25lKSwKKyAgICBdCisKKwor
ZGVmIHRlc3RfY3NzX21pc3NpbmdfZmlsZV9tYW51YWwoKToKKyAgICBlcnJvcnMgPSBjaGVja19m
aWxlX2NvbnRlbnRzKCIiLCAiY3NzL2Zvby9iYXItbWFudWFsLmh0bWwiLCBzaXguQnl0ZXNJTyhi
IiIpKQorICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICBhc3NlcnQgZXJyb3JzID09IFsK
KyAgICAgICAgKCdNSVNTSU5HLUxJTksnLAorICAgICAgICAgJ1Rlc3RjYXNlIGZpbGUgbXVzdCBo
YXZlIGEgbGluayB0byBhIHNwZWMnLAorICAgICAgICAgImNzcy9mb28vYmFyLW1hbnVhbC5odG1s
IiwKKyAgICAgICAgIE5vbmUpLAorICAgIF0KKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo
ImZpbGVuYW1lIiwgWworICAgICJmb28ud29ya2VyLmpzIiwKKyAgICAiZm9vLmFueS5qcyIsCitd
KQorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpbnB1dCxlcnJvciIsIFsKKyAgICAoYiIiIi8v
TUVUQTogdGltZW91dD1sb25nXG4iIiIsIE5vbmUpLAorICAgIChiIiIiLy8gTUVUQTogdGltZW91
dD1sb25nXG4iIiIsIE5vbmUpLAorICAgIChiIiIiLy8gIE1FVEE6IHRpbWVvdXQ9bG9uZ1xuIiIi
LCBOb25lKSwKKyAgICAoYiIiIi8vIE1FVEE6IHNjcmlwdD1mb28uanNcbiIiIiwgTm9uZSksCisg
ICAgKGIiIiIjIE1FVEE6XG4iIiIsIE5vbmUpLAorICAgIChiIiIiXG4vLyBNRVRBOiB0aW1lb3V0
PWxvbmdcbiIiIiwgKDIsICJTVFJBWS1NRVRBREFUQSIpKSwKKyAgICAoYiIiIiAvLyBNRVRBOiB0
aW1lb3V0PWxvbmdcbiIiIiwgKDEsICJJTkRFTlRFRC1NRVRBREFUQSIpKSwKKyAgICAoYiIiIi8v
IE1FVEE6IHRpbWVvdXQ9bG9uZ1xuLy8gTUVUQTogdGltZW91dD1sb25nXG4iIiIsIE5vbmUpLAor
ICAgIChiIiIiLy8gTUVUQTogdGltZW91dD1sb25nXG5cbi8vIE1FVEE6IHRpbWVvdXQ9bG9uZ1xu
IiIiLCAoMywgIlNUUkFZLU1FVEFEQVRBIikpLAorICAgIChiIiIiLy8gTUVUQTogdGltZW91dD1s
b25nXG4vLyBTdGFydCBvZiB0aGUgdGVzdFxuLy8gTUVUQTogdGltZW91dD1sb25nXG4iIiIsICgz
LCAiU1RSQVktTUVUQURBVEEiKSksCisgICAgKGIiIiIvLyBNRVRBOlxuIiIiLCAoMSwgIkJST0tF
Ti1NRVRBREFUQSIpKSwKKyAgICAoYiIiIi8vIE1FVEE6IGZvb2JhclxuIiIiLCAoMSwgIkJST0tF
Ti1NRVRBREFUQSIpKSwKKyAgICAoYiIiIi8vIE1FVEE6IGZvbz1iYXJcbiIiIiwgKDEsICJVTktO
T1dOLU1FVEFEQVRBIikpLAorICAgIChiIiIiLy8gTUVUQTogdGltZW91dD1iYXJcbiIiIiwgKDEs
ICJVTktOT1dOLVRJTUVPVVQtTUVUQURBVEEiKSksCitdKQorZGVmIHRlc3Rfc2NyaXB0X21ldGFk
YXRhKGZpbGVuYW1lLCBpbnB1dCwgZXJyb3IpOgorICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29u
dGVudHMoIiIsIGZpbGVuYW1lLCBzaXguQnl0ZXNJTyhpbnB1dCkpCisgICAgY2hlY2tfZXJyb3Jz
KGVycm9ycykKKworICAgIGlmIGVycm9yIGlzIG5vdCBOb25lOgorICAgICAgICBsaW5lLCBraW5k
ID0gZXJyb3IKKyAgICAgICAgbWVzc2FnZXMgPSB7CisgICAgICAgICAgICAiU1RSQVktTUVUQURB
VEEiOiAiTWV0YWRhdGEgY29tbWVudHMgc2hvdWxkIHN0YXJ0IHRoZSBmaWxlIiwKKyAgICAgICAg
ICAgICJJTkRFTlRFRC1NRVRBREFUQSI6ICJNZXRhZGF0YSBjb21tZW50cyBzaG91bGQgc3RhcnQg
dGhlIGxpbmUiLAorICAgICAgICAgICAgIkJST0tFTi1NRVRBREFUQSI6ICJNZXRhZGF0YSBjb21t
ZW50IGlzIG5vdCBmb3JtYXR0ZWQgY29ycmVjdGx5IiwKKyAgICAgICAgICAgICJVTktOT1dOLVRJ
TUVPVVQtTUVUQURBVEEiOiAiVW5leHBlY3RlZCB2YWx1ZSBmb3IgdGltZW91dCBtZXRhZGF0YSIs
CisgICAgICAgICAgICAiVU5LTk9XTi1NRVRBREFUQSI6ICJVbmV4cGVjdGVkIGtpbmQgb2YgbWV0
YWRhdGEiLAorICAgICAgICB9CisgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAg
ICAgKGtpbmQsCisgICAgICAgICAgICAgbWVzc2FnZXNba2luZF0sCisgICAgICAgICAgICAgZmls
ZW5hbWUsCisgICAgICAgICAgICAgbGluZSksCisgICAgICAgIF0KKyAgICBlbHNlOgorICAgICAg
ICBhc3NlcnQgZXJyb3JzID09IFtdCisKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJpbnB1
dCxlcnJvciIsIFsKKyAgICAoYiIiIiNNRVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgTm9uZSksCisg
ICAgKGIiIiIjIE1FVEE6IHRpbWVvdXQ9bG9uZ1xuIiIiLCBOb25lKSwKKyAgICAoYiIiIiMgIE1F
VEE6IHRpbWVvdXQ9bG9uZ1xuIiIiLCBOb25lKSwKKyAgICAoYiIiIiIvLyBNRVRBOiJcbiIiIiwg
Tm9uZSksCisgICAgKGIiIiJcbiMgTUVUQTogdGltZW91dD1sb25nXG4iIiIsICgyLCAiU1RSQVkt
TUVUQURBVEEiKSksCisgICAgKGIiIiIgIyBNRVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgKDEsICJJ
TkRFTlRFRC1NRVRBREFUQSIpKSwKKyAgICAoYiIiIiMgTUVUQTogdGltZW91dD1sb25nXG4jIE1F
VEE6IHRpbWVvdXQ9bG9uZ1xuIiIiLCBOb25lKSwKKyAgICAoYiIiIiMgTUVUQTogdGltZW91dD1s
b25nXG5cbiMgTUVUQTogdGltZW91dD1sb25nXG4iIiIsICgzLCAiU1RSQVktTUVUQURBVEEiKSks
CisgICAgKGIiIiIjIE1FVEE6IHRpbWVvdXQ9bG9uZ1xuIyBTdGFydCBvZiB0aGUgdGVzdFxuIyBN
RVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgKDMsICJTVFJBWS1NRVRBREFUQSIpKSwKKyAgICAoYiIi
IiMgTUVUQTpcbiIiIiwgKDEsICJCUk9LRU4tTUVUQURBVEEiKSksCisgICAgKGIiIiIjIE1FVEE6
IGZvb2JhclxuIiIiLCAoMSwgIkJST0tFTi1NRVRBREFUQSIpKSwKKyAgICAoYiIiIiMgTUVUQTog
Zm9vPWJhclxuIiIiLCAoMSwgIlVOS05PV04tTUVUQURBVEEiKSksCisgICAgKGIiIiIjIE1FVEE6
IHRpbWVvdXQ9YmFyXG4iIiIsICgxLCAiVU5LTk9XTi1USU1FT1VULU1FVEFEQVRBIikpLAorXSkK
K2RlZiB0ZXN0X3B5dGhvbl9tZXRhZGF0YShpbnB1dCwgZXJyb3IpOgorICAgIGZpbGVuYW1lID0g
InRlc3QucHkiCisgICAgZXJyb3JzID0gY2hlY2tfZmlsZV9jb250ZW50cygiIiwgZmlsZW5hbWUs
IHNpeC5CeXRlc0lPKGlucHV0KSkKKyAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgaWYg
ZXJyb3IgaXMgbm90IE5vbmU6CisgICAgICAgIGxpbmUsIGtpbmQgPSBlcnJvcgorICAgICAgICBt
ZXNzYWdlcyA9IHsKKyAgICAgICAgICAgICJTVFJBWS1NRVRBREFUQSI6ICJNZXRhZGF0YSBjb21t
ZW50cyBzaG91bGQgc3RhcnQgdGhlIGZpbGUiLAorICAgICAgICAgICAgIklOREVOVEVELU1FVEFE
QVRBIjogIk1ldGFkYXRhIGNvbW1lbnRzIHNob3VsZCBzdGFydCB0aGUgbGluZSIsCisgICAgICAg
ICAgICAiQlJPS0VOLU1FVEFEQVRBIjogIk1ldGFkYXRhIGNvbW1lbnQgaXMgbm90IGZvcm1hdHRl
ZCBjb3JyZWN0bHkiLAorICAgICAgICAgICAgIlVOS05PV04tVElNRU9VVC1NRVRBREFUQSI6ICJV
bmV4cGVjdGVkIHZhbHVlIGZvciB0aW1lb3V0IG1ldGFkYXRhIiwKKyAgICAgICAgICAgICJVTktO
T1dOLU1FVEFEQVRBIjogIlVuZXhwZWN0ZWQga2luZCBvZiBtZXRhZGF0YSIsCisgICAgICAgIH0K
KyAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAoa2luZCwKKyAgICAgICAg
ICAgICBtZXNzYWdlc1traW5kXSwKKyAgICAgICAgICAgICBmaWxlbmFtZSwKKyAgICAgICAgICAg
ICBsaW5lKSwKKyAgICAgICAgXQorICAgIGVsc2U6CisgICAgICAgIGFzc2VydCBlcnJvcnMgPT0g
W10KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2xpbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50LnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjkzNzVlMmY3NTYwYjQ2MDQyZTJiZjRmOWRjZGVjY2NkNWNjODQxMGQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvdGVzdF9saW50LnB5CkBAIC0wLDAgKzEsNDIyIEBACitmcm9tIF9fZnV0
dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisK
K2ltcG9ydCBtb2NrCitpbXBvcnQgcHl0ZXN0CitpbXBvcnQgc2l4CisKK2Zyb20gLi4ubG9jYWxw
YXRocyBpbXBvcnQgcmVwb19yb290Citmcm9tIC4uIGltcG9ydCBsaW50IGFzIGxpbnRfbW9kCitm
cm9tIC4ubGludCBpbXBvcnQgZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMsIHBhcnNlX3doaXRlbGlz
dCwgbGludCwgY3JlYXRlX3BhcnNlcgorCitfZHVtbXlfcmVwbyA9IG9zLnBhdGguam9pbihvcy5w
YXRoLmRpcm5hbWUoX19maWxlX18pLCAiZHVtbXkiKQorCitkZWYgX21vY2tfbGludChuYW1lLCAq
Kmt3YXJncyk6CisgICAgd3JhcHBlZCA9IGdldGF0dHIobGludF9tb2QsIG5hbWUpCisgICAgcmV0
dXJuIG1vY2sucGF0Y2gobGludF9tb2QuX19uYW1lX18gKyAiLiIgKyBuYW1lLCB3cmFwcz13cmFw
cGVkLCAqKmt3YXJncykKKworCitkZWYgdGVzdF9maWx0ZXJfd2hpdGVsaXN0X2Vycm9ycygpOgor
ICAgIHdoaXRlbGlzdCA9IHsKKyAgICAgICAgJ0NPTlNPTEUnOiB7CisgICAgICAgICAgICAnc3Zn
LyonOiB7MTJ9CisgICAgICAgIH0sCisgICAgICAgICdJTkRFTlQgVEFCUyc6IHsKKyAgICAgICAg
ICAgICdzdmcvKic6IHtOb25lfQorICAgICAgICB9CisgICAgfQorICAgICMgcGFyc2Vfd2hpdGVs
aXN0IG5vcm1hbGlzZXMgdGhlIGNhc2UvcGF0aCBvZiB0aGUgbWF0Y2ggc3RyaW5nIHNvIG5lZWQg
dG8gZG8gdGhlIHNhbWUKKyAgICB3aGl0ZWxpc3QgPSB7ZToge29zLnBhdGgubm9ybWNhc2Uoayk6
IHYgZm9yIGssIHYgaW4gcC5pdGVtcygpfQorICAgICAgICAgICAgICAgICBmb3IgZSwgcCBpbiB3
aGl0ZWxpc3QuaXRlbXMoKX0KKyAgICAjIHBhdGhzIHBhc3NlZCBpbnRvIGZpbHRlcl93aGl0ZWxp
c3RfZXJyb3JzIGFyZSBhbHdheXMgVW5peCBzdHlsZQorICAgIGZpbHRlcmVkZmlsZSA9ICdzdmcv
dGVzdC5odG1sJworICAgIHVuZmlsdGVyZWRmaWxlID0gJ2h0bWwvdGVzdC5odG1sJworICAgICMg
VGVzdHMgZm9yIHBhc3Npbmcgbm8gZXJyb3JzCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVs
aXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtdKQorICAgIGFzc2VydCBmaWx0ZXJlZCA9PSBbXQorICAg
IGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBbXSkKKyAgICBh
c3NlcnQgZmlsdGVyZWQgPT0gW10KKyAgICAjIFRlc3RzIGZvciBmaWx0ZXJpbmcgb24gZmlsZSBh
bmQgbGluZSBudW1iZXIKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKHdo
aXRlbGlzdCwgW1snQ09OU09MRScsICcnLCBmaWx0ZXJlZGZpbGUsIDEyXV0pCisgICAgYXNzZXJ0
IGZpbHRlcmVkID09IFtdCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3
aGl0ZWxpc3QsIFtbJ0NPTlNPTEUnLCAnJywgdW5maWx0ZXJlZGZpbGUsIDEyXV0pCisgICAgYXNz
ZXJ0IGZpbHRlcmVkID09IFtbJ0NPTlNPTEUnLCAnJywgdW5maWx0ZXJlZGZpbGUsIDEyXV0KKyAg
ICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKHdoaXRlbGlzdCwgW1snQ09OU09M
RScsICcnLCBmaWx0ZXJlZGZpbGUsIDExXV0pCisgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtbJ0NP
TlNPTEUnLCAnJywgZmlsdGVyZWRmaWxlLCAxMV1dCisgICAgIyBUZXN0cyBmb3IgZmlsdGVyaW5n
IG9uIGp1c3QgZmlsZQorICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hp
dGVsaXN0LCBbWydJTkRFTlQgVEFCUycsICcnLCBmaWx0ZXJlZGZpbGUsIDEyXV0pCisgICAgYXNz
ZXJ0IGZpbHRlcmVkID09IFtdCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9y
cyh3aGl0ZWxpc3QsIFtbJ0lOREVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTFdXSkKKyAg
ICBhc3NlcnQgZmlsdGVyZWQgPT0gW10KKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3Rf
ZXJyb3JzKHdoaXRlbGlzdCwgW1snSU5ERU5UIFRBQlMnLCAnJywgdW5maWx0ZXJlZGZpbGUsIDEx
XV0pCisgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtbJ0lOREVOVCBUQUJTJywgJycsIHVuZmlsdGVy
ZWRmaWxlLCAxMV1dCisKKworZGVmIHRlc3RfcGFyc2Vfd2hpdGVsaXN0KCk6CisgICAgaW5wdXRf
YnVmZmVyID0gc2l4LlN0cmluZ0lPKCIiIgorIyBDb21tZW50CitDUiBBVCBFT0w6IHN2Zy9pbXBv
cnQvKgorQ1IgQVQgRU9MOiBzdHJlYW1zL3Jlc291cmNlcy90ZXN0LXV0aWxzLmpzCisKK0lOREVO
VCBUQUJTOiAuZ2l0bW9kdWxlcworSU5ERU5UIFRBQlM6IGFwcC11cmkvKgorSU5ERU5UIFRBQlM6
IHN2Zy8qCisKK1RSQUlMSU5HIFdISVRFU1BBQ0U6IGFwcC11cmkvKgorCitDT05TT0xFOnN0cmVh
bXMvcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanM6IDEyCisKK0NSIEFUIEVPTCwgSU5ERU5UIFRBQlM6
IGh0bWwvdGVzdC5qcworCitDUiBBVCBFT0wsIElOREVOVCBUQUJTOiBodG1sL3Rlc3QyLmpzOiA0
MgorCisqOioucGRmCisqOnJlc291cmNlcy8qCisKKyosIENSIEFUIEVPTDogKi5wbmcKKyIiIikK
KworICAgIGV4cGVjdGVkX2RhdGEgPSB7CisgICAgICAgICdJTkRFTlQgVEFCUyc6IHsKKyAgICAg
ICAgICAgICcuZ2l0bW9kdWxlcyc6IHtOb25lfSwKKyAgICAgICAgICAgICdhcHAtdXJpLyonOiB7
Tm9uZX0sCisgICAgICAgICAgICAnc3ZnLyonOiB7Tm9uZX0sCisgICAgICAgICAgICAnaHRtbC90
ZXN0LmpzJzoge05vbmV9LAorICAgICAgICAgICAgJ2h0bWwvdGVzdDIuanMnOiB7NDJ9LAorICAg
ICAgICB9LAorICAgICAgICAnVFJBSUxJTkcgV0hJVEVTUEFDRSc6IHsKKyAgICAgICAgICAgICdh
cHAtdXJpLyonOiB7Tm9uZX0sCisgICAgICAgIH0sCisgICAgICAgICdDT05TT0xFJzogeworICAg
ICAgICAgICAgJ3N0cmVhbXMvcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMnOiB7MTJ9LAorICAgICAg
ICB9LAorICAgICAgICAnQ1IgQVQgRU9MJzogeworICAgICAgICAgICAgJ3N0cmVhbXMvcmVzb3Vy
Y2VzL3Rlc3QtdXRpbHMuanMnOiB7Tm9uZX0sCisgICAgICAgICAgICAnc3ZnL2ltcG9ydC8qJzog
e05vbmV9LAorICAgICAgICAgICAgJ2h0bWwvdGVzdC5qcyc6IHtOb25lfSwKKyAgICAgICAgICAg
ICdodG1sL3Rlc3QyLmpzJzogezQyfSwKKyAgICAgICAgfQorICAgIH0KKyAgICBleHBlY3RlZF9k
YXRhID0ge2U6IHtvcy5wYXRoLm5vcm1jYXNlKGspOiB2IGZvciBrLCB2IGluIHAuaXRlbXMoKX0K
KyAgICAgICAgICAgICAgICAgICAgIGZvciBlLCBwIGluIGV4cGVjdGVkX2RhdGEuaXRlbXMoKX0K
KyAgICBleHBlY3RlZF9pZ25vcmVkID0ge29zLnBhdGgubm9ybWNhc2UoeCkgZm9yIHggaW4geyIq
LnBkZiIsICJyZXNvdXJjZXMvKiIsICIqLnBuZyJ9fQorICAgIGRhdGEsIGlnbm9yZWQgPSBwYXJz
ZV93aGl0ZWxpc3QoaW5wdXRfYnVmZmVyKQorICAgIGFzc2VydCBkYXRhID09IGV4cGVjdGVkX2Rh
dGEKKyAgICBhc3NlcnQgaWdub3JlZCA9PSBleHBlY3RlZF9pZ25vcmVkCisKKworZGVmIHRlc3Rf
bGludF9ub19maWxlcyhjYXBsb2cpOgorICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgW10sICJu
b3JtYWwiKQorICAgIGFzc2VydCBydiA9PSAwCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIi
CisKKworZGVmIHRlc3RfbGludF9pZ25vcmVkX2ZpbGUoY2FwbG9nKToKKyAgICB3aXRoIF9tb2Nr
X2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBf
bW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29u
dGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiYnJva2VuX2lnbm9y
ZWQuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAwCisgICAgICAg
ICAgICBhc3NlcnQgbm90IG1vY2tlZF9jaGVja19wYXRoLmNhbGxlZAorICAgICAgICAgICAgYXNz
ZXJ0IG5vdCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsZWQKKyAgICBhc3NlcnQgY2Fw
bG9nLnRleHQgPT0gIiIKKworCitkZWYgdGVzdF9saW50X25vdF9leGlzdGluZ19maWxlKGNhcGxv
Zyk6CisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3Bh
dGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1v
Y2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgIyByZWFsbHkgbG9uZyBwYXRo
LWxpbnRlZCBmaWxlbmFtZQorICAgICAgICAgICAgbmFtZSA9ICJhIiAqIDI1NiArICIuaHRtbCIK
KyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgW25hbWVdLCAibm9ybWFsIikKKyAg
ICAgICAgICAgIGFzc2VydCBydiA9PSAwCisgICAgICAgICAgICBhc3NlcnQgbm90IG1vY2tlZF9j
aGVja19wYXRoLmNhbGxlZAorICAgICAgICAgICAgYXNzZXJ0IG5vdCBtb2NrZWRfY2hlY2tfZmls
ZV9jb250ZW50cy5jYWxsZWQKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYg
dGVzdF9saW50X3Bhc3NpbmcoY2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3Bh
dGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVj
a19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAg
ICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsib2theS5odG1sIl0sICJub3JtYWwiKQorICAg
ICAgICAgICAgYXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tf
cGF0aC5jYWxsX2NvdW50ID09IDEKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmls
ZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDEKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIK
KworCitkZWYgdGVzdF9saW50X2ZhaWxpbmcoY2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQo
ImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19s
aW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6
CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiYnJva2VuLmh0bWwiXSwgIm5v
cm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMQorICAgICAgICAgICAgYXNzZXJ0IG1v
Y2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMQorICAgICAgICAgICAgYXNzZXJ0IG1vY2tl
ZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMQorICAgIGFzc2VydCAiVFJBSUxJ
TkcgV0hJVEVTUEFDRSIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3NlcnQgImJyb2tlbi5odG1sOjEi
IGluIGNhcGxvZy50ZXh0CisKKworZGVmIHRlc3RfcmVmX2V4aXN0ZW50X3JlbGF0aXZlKGNhcGxv
Zyk6CisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3Bh
dGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1v
Y2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9y
ZXBvLCBbInJlZi9leGlzdGVudF9yZWxhdGl2ZS5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAg
ICAgYXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5j
YWxsX2NvdW50ID09IDEKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250
ZW50cy5jYWxsX2NvdW50ID09IDEKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitk
ZWYgdGVzdF9yZWZfZXhpc3RlbnRfcm9vdF9yZWxhdGl2ZShjYXBsb2cpOgorICAgIHdpdGggX21v
Y2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRo
IF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9j
b250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJyZWYvZXhpc3Rl
bnRfcm9vdF9yZWxhdGl2ZS5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2
ID09IDAKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09
IDEKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2Nv
dW50ID09IDEKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYgdGVzdF9yZWZf
bm9uX2V4aXN0ZW50X3JlbGF0aXZlKGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50KCJjaGVj
a19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgi
Y2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAg
ICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbInJlZi9ub25fZXhpc3RlbnRfcmVsYXRp
dmUuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAxCisgICAgICAg
ICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAxCisgICAgICAgICAg
ICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAxCisgICAg
YXNzZXJ0ICJOT04tRVhJU1RFTlQtUkVGIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2VydCAicmVm
L25vbl9leGlzdGVudF9yZWxhdGl2ZS5odG1sIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2VydCAi
bm9uX2V4aXN0ZW50X2ZpbGUuaHRtbCIgaW4gY2FwbG9nLnRleHQKKworCitkZWYgdGVzdF9yZWZf
bm9uX2V4aXN0ZW50X3Jvb3RfcmVsYXRpdmUoY2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQo
ImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19s
aW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6
CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsicmVmL25vbl9leGlzdGVudF9y
b290X3JlbGF0aXZlLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0g
MQorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMQor
ICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQg
PT0gMQorICAgIGFzc2VydCAiTk9OLUVYSVNURU5ULVJFRiIgaW4gY2FwbG9nLnRleHQKKyAgICBh
c3NlcnQgInJlZi9ub25fZXhpc3RlbnRfcm9vdF9yZWxhdGl2ZS5odG1sIiBpbiBjYXBsb2cudGV4
dAorICAgIGFzc2VydCAiL25vbl9leGlzdGVudF9maWxlLmh0bWwiIGluIGNhcGxvZy50ZXh0CisK
KworCitkZWYgdGVzdF9yZWZfYWJzb2x1dGVfdXJsKGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19s
aW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21v
Y2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRl
bnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbInJlZi9hYnNvbHV0ZS5o
dG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDEKKyAgICAgICAgICAg
IGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDEKKyAgICAgICAgICAgIGFz
c2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDEKKyAgICBhc3Nl
cnQgIkFCU09MVVRFLVVSTC1SRUYiIGluIGNhcGxvZy50ZXh0CisgICAgYXNzZXJ0ICJodHRwOi8v
ZXhhbXBsZS5jb20vcmVmZXJlbmNlLmh0bWwiIGluIGNhcGxvZy50ZXh0CisgICAgYXNzZXJ0ICJy
ZWYvYWJzb2x1dGUuaHRtbCIgaW4gY2FwbG9nLnRleHQKKworCitkZWYgdGVzdF9yZWZfc2FtZV9m
aWxlX2VtcHR5KGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikgYXMg
bW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9j
b250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgcnYg
PSBsaW50KF9kdW1teV9yZXBvLCBbInJlZi9zYW1lX2ZpbGVfZW1wdHkuaHRtbCJdLCAibm9ybWFs
IikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAxCisgICAgICAgICAgICBhc3NlcnQgbW9ja2Vk
X2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAxCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2No
ZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAxCisgICAgYXNzZXJ0ICJTQU1FLUZJTEUt
UkVGIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2VydCAic2FtZV9maWxlX2VtcHR5Lmh0bWwiIGlu
IGNhcGxvZy50ZXh0CisKKworZGVmIHRlc3RfcmVmX3NhbWVfZmlsZV9wYXRoKGNhcGxvZyk6Cisg
ICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6Cisg
ICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9j
aGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBb
InJlZi9zYW1lX2ZpbGVfcGF0aC5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0
IHJ2ID09IDEKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50
ID09IDEKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxs
X2NvdW50ID09IDEKKyAgICBhc3NlcnQgIlNBTUUtRklMRS1SRUYiIGluIGNhcGxvZy50ZXh0Cisg
ICAgYXNzZXJ0ICJzYW1lX2ZpbGVfcGF0aC5odG1sIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0
ZXN0X2xpbnRfcGFzc2luZ19hbmRfZmFpbGluZyhjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGlu
dCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2Nr
X2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50
czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJicm9rZW4uaHRtbCIsICJv
a2F5Lmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMQorICAgICAg
ICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAg
ICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAg
IGFzc2VydCAiVFJBSUxJTkcgV0hJVEVTUEFDRSIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3NlcnQg
ImJyb2tlbi5odG1sOjEiIGluIGNhcGxvZy50ZXh0CisgICAgYXNzZXJ0ICJva2F5Lmh0bWwiIG5v
dCBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0ZXN0X2NoZWNrX2Nzc19nbG9iYWxseV91bmlxdWVf
aWRlbnRpY2FsX3Rlc3QoY2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgi
KSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19m
aWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAgICAg
ICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiY3NzL2Nzcy11bmlxdWUvbWF0Y2gvYS5odG1sIiwg
ImNzcy9jc3MtdW5pcXVlL2EuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBy
diA9PSAwCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9
PSAyCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9j
b3VudCA9PSAyCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisKKworZGVmIHRlc3RfY2hl
Y2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV9kaWZmZXJlbnRfdGVzdChjYXBsb2cpOgorICAgIHdpdGgg
X21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3
aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmls
ZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJjc3MvY3Nz
LXVuaXF1ZS9ub3QtbWF0Y2gvYS5odG1sIiwgImNzcy9jc3MtdW5pcXVlL2EuaHRtbCJdLCAibm9y
bWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAyCisgICAgICAgICAgICBhc3NlcnQgbW9j
a2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAyCisgICAgICAgICAgICBhc3NlcnQgbW9ja2Vk
X2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAgYXNzZXJ0ICJDU1MtQ09M
TElESU5HLVRFU1QtTkFNRSIgaW4gY2FwbG9nLnRleHQKKworCitkZWYgdGVzdF9jaGVja19jc3Nf
Z2xvYmFsbHlfdW5pcXVlX2RpZmZlcmVudF9zcGVjX3Rlc3QoY2FwbG9nKToKKyAgICB3aXRoIF9t
b2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0
aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVf
Y29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiY3NzL2Nzcy11
bmlxdWUvc2VsZWN0b3JzL2EuaHRtbCIsICJjc3MvY3NzLXVuaXF1ZS9hLmh0bWwiXSwgIm5vcm1h
bCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tl
ZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9j
aGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4
dCA9PSAiIgorCisKK2RlZiB0ZXN0X2NoZWNrX2Nzc19nbG9iYWxseV91bmlxdWVfc3VwcG9ydF9p
Z25vcmVkKGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9j
a2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250
ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgcnYgPSBs
aW50KF9kdW1teV9yZXBvLCBbImNzcy9jc3MtdW5pcXVlL3N1cHBvcnQvYS5odG1sIiwgImNzcy9j
c3MtdW5pcXVlL3N1cHBvcnQvdG9vbHMvYS5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAg
YXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxs
X2NvdW50ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50
cy5jYWxsX2NvdW50ID09IDIKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYg
dGVzdF9jaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlX3N1cHBvcnRfaWRlbnRpY2FsKGNhcGxvZyk6
CisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6
CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tl
ZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBv
LCBbImNzcy9jc3MtdW5pcXVlL3N1cHBvcnQvYS5odG1sIiwgImNzcy9jc3MtdW5pcXVlL21hdGNo
L3N1cHBvcnQvYS5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDAK
KyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAg
ICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09
IDIKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYgdGVzdF9jaGVja19jc3Nf
Z2xvYmFsbHlfdW5pcXVlX3N1cHBvcnRfZGlmZmVyZW50KGNhcGxvZyk6CisgICAgd2l0aCBfbW9j
a19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGgg
X21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2Nv
bnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImNzcy9jc3MtdW5p
cXVlL25vdC1tYXRjaC9zdXBwb3J0L2EuaHRtbCIsICJjc3MvY3NzLXVuaXF1ZS9zdXBwb3J0L2Eu
aHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAyCisgICAgICAgICAg
ICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAyCisgICAgICAgICAgICBh
c3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAgYXNz
ZXJ0ICJDU1MtQ09MTElESU5HLVNVUFBPUlQtTkFNRSIgaW4gY2FwbG9nLnRleHQKKworCitkZWYg
dGVzdF9jaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlX3Rlc3Rfc3VwcG9ydChjYXBsb2cpOgorICAg
IHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAg
ICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hl
Y2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJj
c3MvY3NzLXVuaXF1ZS9zdXBwb3J0L2EuaHRtbCIsICJjc3MvY3NzLXVuaXF1ZS9hLmh0bWwiXSwg
Im5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0
IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1v
Y2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBs
b2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X2NoZWNrX2Nzc19nbG9iYWxseV91bmlxdWVfcmVm
X2lkZW50aWNhbChjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFz
IG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVf
Y29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2
ID0gbGludChfZHVtbXlfcmVwbywgWyJjc3MvY3NzLXVuaXF1ZS9hLXJlZi5odG1sIiwgImNzcy9j
c3MtdW5pcXVlL21hdGNoL2EtcmVmLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3Nl
cnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291
bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNh
bGxfY291bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0
X2NoZWNrX2Nzc19nbG9iYWxseV91bmlxdWVfcmVmX2RpZmZlcmVudChjYXBsb2cpOgorICAgIHdp
dGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAg
ICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tf
ZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJjc3Mv
Y3NzLXVuaXF1ZS9ub3QtbWF0Y2gvYS1yZWYuaHRtbCIsICJjc3MvY3NzLXVuaXF1ZS9hLXJlZi5o
dG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDIKKyAgICAgICAgICAg
IGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAgICAgICAgIGFz
c2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIKKyAgICBhc3Nl
cnQgIkNTUy1DT0xMSURJTkctUkVGLU5BTUUiIGluIGNhcGxvZy50ZXh0CisKKworZGVmIHRlc3Rf
Y2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV90ZXN0X3JlZihjYXBsb2cpOgorICAgIHdpdGggX21v
Y2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRo
IF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9j
b250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJjc3MvY3NzLXVu
aXF1ZS9hLXJlZi5odG1sIiwgImNzcy9jc3MtdW5pcXVlL2EuaHRtbCJdLCAibm9ybWFsIikKKyAg
ICAgICAgICAgIGFzc2VydCBydiA9PSAwCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNr
X3BhdGguY2FsbF9jb3VudCA9PSAyCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2Zp
bGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIi
CisKKworZGVmIHRlc3RfY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV9pZ25vcmVkKGNhcGxvZyk6
CisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6
CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tl
ZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBv
LCBbImNzcy9jc3MtdW5pcXVlL3Rvb2xzL2EuaHRtbCIsICJjc3MvY3NzLXVuaXF1ZS9ub3QtbWF0
Y2gvdG9vbHMvYS5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDAK
KyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAg
ICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09
IDIKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYgdGVzdF9jaGVja19jc3Nf
Z2xvYmFsbHlfdW5pcXVlX2lnbm9yZWRfZGlyKGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50
KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tf
bGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRz
OgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImNzcy9jc3MtdW5pcXVlL3N1
cHBvcnQvYS5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDAKKyAg
ICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDEKKyAgICAg
ICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDEK
KyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYgdGVzdF9hbGxfZmlsZXN5c3Rl
bV9wYXRocygpOgorICAgIHdpdGggbW9jay5wYXRjaCgKKyAgICAgICAgICAgICdvcy53YWxrJywK
KyAgICAgICAgICAgIHJldHVybl92YWx1ZT1bKCcuJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsnZGlyX2EnLCAnZGlyX2InXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZmls
ZV9hJywgJ2ZpbGVfYiddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG9zLnBhdGguam9p
bignLicsICdkaXJfYScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbJ2ZpbGVfYycsICdmaWxlX2QnXSldCisgICAgKSBhcyBtOgor
ICAgICAgICBnb3QgPSBsaXN0KGxpbnRfbW9kLmFsbF9maWxlc3lzdGVtX3BhdGhzKCcuJykpCisg
ICAgICAgIGFzc2VydCBnb3QgPT0gWydmaWxlX2EnLAorICAgICAgICAgICAgICAgICAgICAgICAn
ZmlsZV9iJywKKyAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKCdkaXJfYScsICdm
aWxlX2MnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKCdkaXJfYScsICdm
aWxlX2QnKV0KKworCitkZWYgdGVzdF9tYWluX3dpdGhfYXJncygpOgorICAgIG9yaWdfYXJndiA9
IHN5cy5hcmd2CisgICAgdHJ5OgorICAgICAgICBzeXMuYXJndiA9IFsnLi9saW50JywgJ2EnLCAn
YicsICdjJ10KKyAgICAgICAgd2l0aCBfbW9ja19saW50KCdsaW50JywgcmV0dXJuX3ZhbHVlPVRy
dWUpIGFzIG06CisgICAgICAgICAgICBsaW50X21vZC5tYWluKCoqdmFycyhjcmVhdGVfcGFyc2Vy
KCkucGFyc2VfYXJncygpKSkKKyAgICAgICAgICAgIG0uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgo
cmVwb19yb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3MucGF0
aC5yZWxwYXRoKG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgeCksIHJlcG9fcm9vdCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIFsnYScsICdiJywgJ2Mn
XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3JtYWwiKQorICAg
IGZpbmFsbHk6CisgICAgICAgIHN5cy5hcmd2ID0gb3JpZ19hcmd2CisKKworZGVmIHRlc3RfbWFp
bl9ub19hcmdzKCk6CisgICAgb3JpZ19hcmd2ID0gc3lzLmFyZ3YKKyAgICB0cnk6CisgICAgICAg
IHN5cy5hcmd2ID0gWycuL2xpbnQnXQorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoJ2xpbnQnLCBy
ZXR1cm5fdmFsdWU9VHJ1ZSkgYXMgbToKKyAgICAgICAgICAgIHdpdGggX21vY2tfbGludCgnY2hh
bmdlZF9maWxlcycsIHJldHVybl92YWx1ZT1bJ2ZvbycsICdiYXInXSkgYXMgbTI6CisgICAgICAg
ICAgICAgICAgbGludF9tb2QubWFpbigqKnZhcnMoY3JlYXRlX3BhcnNlcigpLnBhcnNlX2FyZ3Mo
KSkpCisgICAgICAgICAgICAgICAgbS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChyZXBvX3Jvb3Qs
IFsnZm9vJywgJ2JhciddLCAibm9ybWFsIikKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMuYXJn
diA9IG9yaWdfYXJndgorCisKK2RlZiB0ZXN0X21haW5fYWxsKCk6CisgICAgb3JpZ19hcmd2ID0g
c3lzLmFyZ3YKKyAgICB0cnk6CisgICAgICAgIHN5cy5hcmd2ID0gWycuL2xpbnQnLCAnLS1hbGwn
XQorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoJ2xpbnQnLCByZXR1cm5fdmFsdWU9VHJ1ZSkgYXMg
bToKKyAgICAgICAgICAgIHdpdGggX21vY2tfbGludCgnYWxsX2ZpbGVzeXN0ZW1fcGF0aHMnLCBy
ZXR1cm5fdmFsdWU9Wydmb28nLCAnYmFyJ10pIGFzIG0yOgorICAgICAgICAgICAgICAgIGxpbnRf
bW9kLm1haW4oKip2YXJzKGNyZWF0ZV9wYXJzZXIoKS5wYXJzZV9hcmdzKCkpKQorICAgICAgICAg
ICAgICAgIG0uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgocmVwb19yb290LCBbJ2ZvbycsICdiYXIn
XSwgIm5vcm1hbCIpCisgICAgZmluYWxseToKKyAgICAgICAgc3lzLmFyZ3YgPSBvcmlnX2FyZ3YK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC90ZXN0cy90ZXN0X3BhdGhfbGludHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9wYXRoX2xpbnRz
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI1ODE4Mjg5ZWFjYzVlZThhODc5YWM5OGJhMjNlYTkyMzNlOGZhN2MK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9wYXRoX2xpbnRzLnB5CkBAIC0wLDAgKzEsNDEg
QEAKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscworCitmcm9tIC4ubGlu
dCBpbXBvcnQgY2hlY2tfcGF0aAorZnJvbSAuYmFzZSBpbXBvcnQgY2hlY2tfZXJyb3JzCitpbXBv
cnQgcHl0ZXN0CitpbXBvcnQgc2l4CisKK2RlZiB0ZXN0X2FsbG93ZWRfcGF0aF9sZW5ndGgoKToK
KyAgICBiYXNlbmFtZSA9IDI5ICogInRlc3QvIgorCisgICAgZm9yIGlkeCBpbiByYW5nZSg1KToK
KyAgICAgICAgZmlsZW5hbWUgPSBiYXNlbmFtZSArIGlkeCAqICJhIgorCisgICAgICAgIGVycm9y
cyA9IGNoZWNrX3BhdGgoIi9mb28vIiwgZmlsZW5hbWUpCisgICAgICAgIGNoZWNrX2Vycm9ycyhl
cnJvcnMpCisgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gW10KKworCitkZWYgdGVzdF9mb3JiaWRk
ZW5fcGF0aF9sZW5ndGgoKToKKyAgICBiYXNlbmFtZSA9IDI5ICogInRlc3QvIgorCisgICAgZm9y
IGlkeCBpbiByYW5nZSg1LCAxMCk6CisgICAgICAgIGZpbGVuYW1lID0gYmFzZW5hbWUgKyBpZHgg
KiAiYSIKKyAgICAgICAgbWVzc2FnZSA9ICIvJXMgbG9uZ2VyIHRoYW4gbWF4aW11bSBwYXRoIGxl
bmd0aCAoJXMgPiAxNTApIiAlIChmaWxlbmFtZSwgMTQ2ICsgaWR4KQorCisgICAgICAgIGVycm9y
cyA9IGNoZWNrX3BhdGgoIi9mb28vIiwgZmlsZW5hbWUpCisgICAgICAgIGNoZWNrX2Vycm9ycyhl
cnJvcnMpCisgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWygiUEFUSCBMRU5HVEgiLCBtZXNzYWdl
LCBmaWxlbmFtZSwgTm9uZSldCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgicGF0aF9lbmRp
bmcsZ2VuZXJhdGVkIiwgWygiLndvcmtlci5odG1sIiwgIi53b3JrZXIuanMiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiLmFueS53b3JrZXIu
aHRtbCIsICIuYW55LmpzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoIi5hbnkuaHRtbCIsICIuYW55LmpzIildKQorZGVmIHRlc3RfZm9yYmlk
ZGVuX3BhdGhfZW5kaW5ncyhwYXRoX2VuZGluZywgZ2VuZXJhdGVkKToKKyAgICBwYXRoID0gIi90
ZXN0L3Rlc3QiICsgcGF0aF9lbmRpbmcKKworICAgIG1lc3NhZ2UgPSAoInBhdGggZW5kcyB3aXRo
ICVzIHdoaWNoIGNvbGxpZGVzIHdpdGggZ2VuZXJhdGVkIHRlc3RzIGZyb20gJXMgZmlsZXMiICUK
KyAgICAgICAgICAgICAgIChwYXRoX2VuZGluZywgZ2VuZXJhdGVkKSkKKworICAgIGVycm9ycyA9
IGNoZWNrX3BhdGgoIi9mb28vIiwgcGF0aCkKKyAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorICAg
IGFzc2VydCBlcnJvcnMgPT0gWygiV09SS0VSIENPTExJU0lPTiIsIG1lc3NhZ2UsIHBhdGgsIE5v
bmUpXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5CmluZGV4IDYxYmU0NDQzYjQw
MjFhN2RmZjAzZjczNWMxNTg3ODY3MTYzNjRhMWYuLjA2YWUzYzIzNmU2MTcwNDdmMzA4YTVhODY0
NGU5NGY5YWZkMTc5MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkKQEAg
LTEwMiwxNyArMTAyLDIwIEBAIGNsYXNzIFVSTE1hbmlmZXN0SXRlbShNYW5pZmVzdEl0ZW0pOgog
Y2xhc3MgVGVzdGhhcm5lc3NUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgaXRlbV90eXBlID0g
InRlc3RoYXJuZXNzIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvdXJjZV9maWxlLCB1cmws
IHVybF9iYXNlPSIvIiwgdGltZW91dD1Ob25lLCBtYW5pZmVzdD1Ob25lKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgc291cmNlX2ZpbGUsIHVybCwgdXJsX2Jhc2U9Ii8iLCB0aW1lb3V0PU5vbmUs
IHRlc3Rkcml2ZXI9RmFsc2UsIG1hbmlmZXN0PU5vbmUpOgogICAgICAgICBVUkxNYW5pZmVzdEl0
ZW0uX19pbml0X18oc2VsZiwgc291cmNlX2ZpbGUsIHVybCwgdXJsX2Jhc2U9dXJsX2Jhc2UsIG1h
bmlmZXN0PW1hbmlmZXN0KQogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CisgICAgICAg
IHNlbGYudGVzdGRyaXZlciA9IHRlc3Rkcml2ZXIKIAogICAgIGRlZiBtZXRhX2tleShzZWxmKToK
LSAgICAgICAgcmV0dXJuIChzZWxmLnRpbWVvdXQsKQorICAgICAgICByZXR1cm4gKHNlbGYudGlt
ZW91dCwgc2VsZi50ZXN0ZHJpdmVyKQogCiAgICAgZGVmIHRvX2pzb24oc2VsZik6CiAgICAgICAg
IHJ2ID0gVVJMTWFuaWZlc3RJdGVtLnRvX2pzb24oc2VsZikKICAgICAgICAgaWYgc2VsZi50aW1l
b3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcnZbLTFdWyJ0aW1lb3V0Il0gPSBzZWxmLnRp
bWVvdXQKKyAgICAgICAgaWYgc2VsZi50ZXN0ZHJpdmVyOgorICAgICAgICAgICAgcnZbLTFdWyJ0
ZXN0ZHJpdmVyIl0gPSBzZWxmLnRlc3Rkcml2ZXIKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBA
Y2xhc3NtZXRob2QKQEAgLTEyNCw2ICsxMjcsNyBAQCBjbGFzcyBUZXN0aGFybmVzc1Rlc3QoVVJM
TWFuaWZlc3RJdGVtKToKICAgICAgICAgICAgICAgICAgICB1cmwsCiAgICAgICAgICAgICAgICAg
ICAgdXJsX2Jhc2U9bWFuaWZlc3QudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgdGltZW91
dD1leHRyYXMuZ2V0KCJ0aW1lb3V0IiksCisgICAgICAgICAgICAgICAgICAgdGVzdGRyaXZlcj1i
b29sKGV4dHJhcy5nZXQoInRlc3Rkcml2ZXIiKSksCiAgICAgICAgICAgICAgICAgICAgbWFuaWZl
c3Q9bWFuaWZlc3QpCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9zb3VyY2VmaWxlLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9zb3VyY2Vm
aWxlLnB5CmluZGV4IGJmNzJmNDViMzUxN2IxZjFmNTMzNjcyNGEzMWVjMjc4NTE2MWYwZWUuLjA5
M2ZjMmJkNDcwMmY3OGY5YTBhYmM3NzlhNWU3M2E1OTU5NzMwZGQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291
cmNlZmlsZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKQEAgLTU0LDggKzU0LDcgQEAgY2xhc3Mg
U291cmNlRmlsZShvYmplY3QpOgogICAgICAgICAgICAgICAgInhodG1sIjpsYW1iZGEgeDpFbGVt
ZW50VHJlZS5wYXJzZSh4LCBYTUxQYXJzZXIuWE1MUGFyc2VyKCkpLAogICAgICAgICAgICAgICAg
InN2ZyI6bGFtYmRhIHg6RWxlbWVudFRyZWUucGFyc2UoeCwgWE1MUGFyc2VyLlhNTFBhcnNlcigp
KX0KIAotICAgIHJvb3RfZGlyX25vbl90ZXN0ID0gc2V0KFsiY29tbW9uIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIndvcmstaW4tcHJvZ3Jlc3MiXSkKKyAgICByb290X2Rpcl9ub25f
dGVzdCA9IHNldChbImNvbW1vbiJdKQogCiAgICAgZGlyX25vbl90ZXN0ID0gc2V0KFsicmVzb3Vy
Y2VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IiwKQEAgLTYzLDggKzYyLDcg
QEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgZGlyX3BhdGhfbm9uX3Rlc3QgPSB7
KCJjc3MyMSIsICJhcmNoaXZlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCJjc3MiLCAi
Q1NTMiIsICJhcmNoaXZlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgKCJjc3MiLCAiY29t
bW9uIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgKCJjc3MiLCAid29yay1pbi1wcm9ncmVz
cyIpfQorICAgICAgICAgICAgICAgICAgICAgICAgICgiY3NzIiwgImNvbW1vbiIpfQogCiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzX3Jvb3QsIHJlbF9wYXRoLCB1cmxfYmFzZSwgY29udGVu
dHM9Tm9uZSk6CiAgICAgICAgICIiIk9iamVjdCByZXByZXNlbnRpbmcgYSBmaWxlIGluIGEgc291
cmNlIHRyZWUuCkBAIC0zODIsNiArMzgwLDIwIEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToK
IAogICAgICAgICByZXR1cm4gcnYKIAorICAgIEBjYWNoZWRfcHJvcGVydHkKKyAgICBkZWYgdGVz
dGRyaXZlcl9ub2RlcyhzZWxmKToKKyAgICAgICAgIiIiTGlzdCBvZiBFbGVtZW50VHJlZSBFbGVt
ZW50cyBjb3JyZXNwb25kaW5nIHRvIG5vZGVzIHJlcHJlc2VudGluZyBhCisgICAgICAgIHRlc3Rk
cml2ZXIuanMgc2NyaXB0IiIiCisgICAgICAgIHJldHVybiBzZWxmLnJvb3QuZmluZGFsbCgiLi8v
e2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWx9c2NyaXB0W0BzcmM9Jy9yZXNvdXJjZXMvdGVz
dGRyaXZlci5qcyddIikKKworICAgIEBjYWNoZWRfcHJvcGVydHkKKyAgICBkZWYgaGFzX3Rlc3Rk
cml2ZXIoc2VsZik6CisgICAgICAgICIiIkJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBm
aWxlIGNvbnRlbnQgcmVwcmVzZW50cyBhCisgICAgICAgIHRlc3RoYXJuZXNzLmpzIHRlc3QiIiIK
KyAgICAgICAgaWYgc2VsZi5yb290IGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQor
ICAgICAgICByZXR1cm4gYm9vbChzZWxmLnRlc3Rkcml2ZXJfbm9kZXMpCisKICAgICBAY2FjaGVk
X3Byb3BlcnR5CiAgICAgZGVmIHJlZnRlc3Rfbm9kZXMoc2VsZik6CiAgICAgICAgICIiIkxpc3Qg
b2YgRWxlbWVudFRyZWUgRWxlbWVudHMgY29ycmVzcG9uZGluZyB0byBub2RlcyByZXByZXNlbnRp
bmcgYQpAQCAtNTIzLDkgKzUzNSwxMCBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAKICAg
ICAgICAgZWxpZiBzZWxmLmNvbnRlbnRfaXNfdGVzdGhhcm5lc3M6CiAgICAgICAgICAgICBydiA9
IFRlc3RoYXJuZXNzVGVzdC5pdGVtX3R5cGUsIFtdCisgICAgICAgICAgICB0ZXN0ZHJpdmVyID0g
c2VsZi5oYXNfdGVzdGRyaXZlcgogICAgICAgICAgICAgZm9yIHZhcmlhbnQgaW4gc2VsZi50ZXN0
X3ZhcmlhbnRzOgogICAgICAgICAgICAgICAgIHVybCA9IHNlbGYudXJsICsgdmFyaWFudAotICAg
ICAgICAgICAgICAgIHJ2WzFdLmFwcGVuZChUZXN0aGFybmVzc1Rlc3Qoc2VsZiwgdXJsLCB0aW1l
b3V0PXNlbGYudGltZW91dCkpCisgICAgICAgICAgICAgICAgcnZbMV0uYXBwZW5kKFRlc3RoYXJu
ZXNzVGVzdChzZWxmLCB1cmwsIHRpbWVvdXQ9c2VsZi50aW1lb3V0LCB0ZXN0ZHJpdmVyPXRlc3Rk
cml2ZXIpKQogCiAgICAgICAgIGVsaWYgc2VsZi5jb250ZW50X2lzX3JlZl9ub2RlOgogICAgICAg
ICAgICAgcnYgPSAoUmVmVGVzdE5vZGUuaXRlbV90eXBlLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336189</attachid>
            <date>2018-03-21 06:52:54 -0700</date>
            <delta_ts>2018-03-21 07:59:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183796-20180321095253.patch</filename>
            <type>text/plain</type>
            <size>112657</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODAzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2U3ZTMzY2YxMmJiNjcxNTI1Y2Q5YjRmMjMxMmJjNjgx
OTE1MzI4Ny4uODMxOTI1YTJmZDgyY2Q1MGZkYjczZWM2OTBhMDkxY2FiMTU5NmJiNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDE4LTAzLTIxICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgTGludCB3ZWItcGxhdGZvcm0tdGVzdHMgY2hhbmdlcyB3aXRoIHRoZSB3cHQg
bGludGVyIGJlZm9yZSBleHBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mzc5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weToK
KyAgICAgICAgKFRlc3RFeHBvcnRlci5jaGFuZ2VkX3dwdF9maWxlcyk6CisgICAgICAgIChUZXN0
RXhwb3J0ZXIpOgorICAgICAgICAoVGVzdEV4cG9ydGVyLmxpbnRfY2hhbmdlZF93cHRfZmlsZXMp
OgorICAgICAgICAoVGVzdEV4cG9ydGVyLmRvX2V4cG9ydCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RFeHBv
cnRlclRlc3QuTW9ja0dpdC5jaGFuZ2VkX2ZpbGVzKToKKwogMjAxOC0wMy0yMSAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBK
U0MgYmluZGluZ3Mgbm90IGludHJvc3BlY3RhYmxlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2MvdGVzdF9leHBvcnRlci5weQppbmRleCA4YjNkNjY2YzI4MGNiZDVkYWZmYzE1MjAzZTM3MTc1
YjhkMWZiMWVlLi4zNzhmMmM2YWVmNDk1OTVjNzZjMjYzODRkYmRjYjJhYzcyMjk4OGJlIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkKQEAgLTI4LDYgKzI4
LDcgQEAgaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQg
dGltZQoraW1wb3J0IHN5cwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZ2l0
IGltcG9ydCBHaXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKQEAgLTQx
LDYgKzQyLDkgQEAgV0VCS0lUX1dQVF9ESVIgPSAnTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cycKIFdQVF9QUl9VUkwgPSAiaHR0cHM6Ly9naXRodWIuY29tL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvcHVsbC8iCiBXRUJLSVRfRVhQT1JUX1BSX0xBQkVMID0gJ3dlYmtp
dC1leHBvcnQnCiAKKyMgQWRkIHdlYmtpdCB0byB0aGUgcHl0aG9uIHBhdGggc28gd2UgY2FuIGlt
cG9ydCB0aGUgV1BUIGxpbnQgbW9kdWxlCitzeXMucGF0aC5hcHBlbmQoV0VCS0lUX1dQVF9ESVIp
Citmcm9tIHRvb2xzLmxpbnQubGludCBpbXBvcnQgbGludCwgbGludF9wYXRocwogCiBjbGFzcyBU
ZXN0RXhwb3J0ZXIob2JqZWN0KToKIApAQCAtMjIyLDcgKzIyNiwyNCBAQCBjbGFzcyBUZXN0RXhw
b3J0ZXIob2JqZWN0KToKICAgICAgICAgaWYgbm90IHNlbGYuX3dwdF9mb3JrX3JlbW90ZSBpbiBz
ZWxmLl9naXQucmVtb3RlKFtdKToKICAgICAgICAgICAgIHNlbGYuX2dpdC5yZW1vdGUoWyJhZGQi
LCBzZWxmLl93cHRfZm9ya19yZW1vdGUsIHNlbGYuX3dwdF9mb3JrX3B1c2hfdXJsXSkKIAorICAg
IGRlZiBjaGFuZ2VkX3dwdF9maWxlcyhzZWxmKToKKyAgICAgICAgY2hhbmdlZF9maWxlcyA9IHNl
bGYuX2hvc3Quc2NtKCkuY2hhbmdlZF9maWxlcygpCisgICAgICAgIHJldHVybiBmaWx0ZXIobGFt
YmRhIHg6IHguc3RhcnRzd2l0aChXRUJLSVRfV1BUX0RJUiksIGNoYW5nZWRfZmlsZXMpCisKKyAg
ICBkZWYgbGludF9jaGFuZ2VkX3dwdF9maWxlcyhzZWxmKToKKyAgICAgICAgaGVyZSA9IG9zLnBh
dGguYWJzcGF0aChvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSkKKyAgICAgICAgcmVwb19yb290
ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihoZXJlLCBvcy5wYXJkaXIsIG9zLnBhcmRp
ciwgb3MucGFyZGlyLCBvcy5wYXJkaXIsICdMYXlvdXRUZXN0cycsICdpbXBvcnRlZCcsICd3M2Mn
LCAnd2ViLXBsYXRmb3JtLXRlc3RzJykpCisgICAgICAgIHRlc3RfcGF0aCA9IHNlbGYuY2hhbmdl
ZF93cHRfZmlsZXMoKQorICAgICAgICBwYXRocyA9IGxpbnRfcGF0aHMoeydwYXRocyc6IHRlc3Rf
cGF0aH0sIHJlcG9fcm9vdCkKKyAgICAgICAgbGludF9lcnJvcnMgPSBsaW50KHJlcG9fcm9vdCwg
cGF0aHMsICdub3JtYWwnKQorCisgICAgICAgIHJldHVybiBsaW50X2Vycm9ycworCiAgICAgZGVm
IGRvX2V4cG9ydChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5saW50X2NoYW5nZWRfd3B0X2ZpbGVz
KCk6CisgICAgICAgICAgICBfbG9nLmVycm9yKCJMaW50IGVycm9ycyBkZXRlY3RlZC4gUGxlYXNl
IGFkZHJlc3MgdGhlIGFib3ZlIGVycm9ycyBiZWZvcmUgYXR0ZW1wdGluZyB0byBleHBvcnQgY2hh
bmdlcyB0byB0aGUgd2ViLXBsYXRmb3JtLXRlc3QgcmVwb3NpdG9yeS4iKQorICAgICAgICAgICAg
cmV0dXJuCisKICAgICAgICAgZ2l0X3BhdGNoX2ZpbGUgPSBzZWxmLmNyZWF0ZV9naXRfcGF0Y2go
KQogCiAgICAgICAgIGlmIG5vdCBnaXRfcGF0Y2hfZmlsZToKQEAgLTI5NSw3ICszMTYsNyBAQCBk
ZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKICAgICAgICAgICAgICAgICByZXR1cm4gIiVzOiAlcyIg
JSAocmVjb3JkLmxldmVsbmFtZSwgcmVjb3JkLmdldE1lc3NhZ2UoKSkKICAgICAgICAgICAgIHJl
dHVybiByZWNvcmQuZ2V0TWVzc2FnZSgpCiAKLSAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dl
cigpCisgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3dlYmtpdHB5LnczYy50ZXN0X2V4
cG9ydGVyJykKICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQogICAgIGhhbmRsZXIg
PSBMb2dIYW5kbGVyKCkKICAgICBoYW5kbGVyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0LnB5
CmluZGV4IDNjNDNmZjY4MjlhYWUzYjNiYmQ0MTM3YjNhODMzMGZjY2I5ZDgxZTguLmM0MjMxMTk2
MzJiMzlkMWFjMWMzZDQxZDI4ZGFlYTlhODliZGQ3NDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weQpAQCAtOTUsNiArOTUs
MTAgQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
ICAgICBzZWxmLmNhbGxzLmFwcGVuZCgnY3JlYXRlX3BhdGNoICcgKyBjb21taXQgKyAnICcgKyBz
dHIoYXJndW1lbnRzKSkKICAgICAgICAgICAgIHJldHVybiAnbXkgcGF0Y2ggY29udGFpbmluZyBz
b21lIGRpZmZzJwogCisgICAgICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYpOgorICAgICAgICAg
ICAgc2VsZi5jYWxscy5hcHBlbmQoJ2NoYW5nZWRfZmlsZXMnKQorICAgICAgICAgICAgcmV0dXJu
IFsnTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90ZXN0MS5odG1s
J10KKwogICAgIGNsYXNzIE15TW9ja0hvc3QoTW9ja0hvc3QpOgogICAgICAgICBkZWYgX19pbml0
X18oc2VsZik6CiAgICAgICAgICAgICBNb2NrSG9zdC5fX2luaXRfXyhzZWxmKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYzdmZmZkZDlkNjNjYjc4MTA5ZGU1NmZlY2EzZjA2Mzlk
ZjM2MGNkYy4uZTE3MWVmMTZmMDlkNmE1MjYzNDdlMGIzMjQyNWM4Nzc3ZWQ5NGYyNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU5IEBACisyMDE4LTAzLTIxICBC
cmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+CisKKyAgICAgICAgSW1wb3J0
IGxpbnQgdG9vbGluZyBmcm9tIHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwbyB0byBzdXBwb3J0
CisgICAgICAgIGxpbnRpbmcgY2hhbmdlcyB3aXRoIHRoZSB3cHQgbGludGVyIGJlZm9yZSBleHBv
cnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
Mzc5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9fX2luaXRfXy5weTogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25vcmUucHk6
IEFkZGVkLgorICAgICAgICAoZm5tYXRjaF90cmFuc2xhdGUpOgorICAgICAgICAocGFyc2VfbGlu
ZSk6CisgICAgICAgIChQYXRoRmlsdGVyKToKKyAgICAgICAgKFBhdGhGaWx0ZXIuX19pbml0X18p
OgorICAgICAgICAoUGF0aEZpbHRlci5fcmVhZF9pZ25vcmUpOgorICAgICAgICAoUGF0aEZpbHRl
ci5fcmVhZF9saW5lKToKKyAgICAgICAgKFBhdGhGaWx0ZXIuX19jYWxsX18pOgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdGVzdHMvX19pbml0X18ucHk6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdGVzdHMv
dGVzdF9naXRpZ25vcmUucHk6IEFkZGVkLgorICAgICAgICAoZXhwYW5kX2RhdGEpOgorICAgICAg
ICAodGVzdHNfbWF0Y2gpOgorICAgICAgICAodGVzdHNfbm9fbWF0Y2gpOgorICAgICAgICAodGVz
dHNfaW52YWxpZCk6CisgICAgICAgICh0ZXN0X3BhdGhfZmlsdGVyKToKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9fX2luaXRfXy5weTogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvY29tbWFuZHMuanNvbjogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvZm5tYXRjaC5weTogQWRkZWQuCisg
ICAgICAgIChmbm1hdGNoKToKKyAgICAgICAgKGZubWF0Y2hjYXNlKToKKyAgICAgICAgKGZpbHRl
cik6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weTogQWRk
ZWQuCisgICAgICAgIChzZXR1cF9sb2dnaW5nKToKKyAgICAgICAgKGFsbF9maWxlc3lzdGVtX3Bh
dGhzKToKKyAgICAgICAgKF9hbGxfZmlsZXNfZXF1YWwpOgorICAgICAgICAoY2hlY2tfcGF0aF9s
ZW5ndGgpOgorICAgICAgICAoY2hlY2tfd29ya2VyX2NvbGxpc2lvbik6CisgICAgICAgIChjaGVj
a19haGVtX2NvcHkpOgorICAgICAgICAoY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZSk6CisgICAg
ICAgIChwYXJzZV93aGl0ZWxpc3QpOgorICAgICAgICAoZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMp
OgorICAgICAgICAoUmVnZXhwKToKKyAgICAgICAgKFJlZ2V4cC5fX2luaXRfXyk6CisgICAgICAg
IChSZWdleHAuYXBwbGllcyk6CisgICAgICAgIChSZWdleHAuc2VhcmNoKToKKyAgICAgICAgKFRy
YWlsaW5nV2hpdGVzcGFjZVJlZ2V4cCk6CisgICAgICAgIChUYWJzUmVnZXhwKToKKyAgICAgICAg
KENSUmVnZXhwKToKKyAgICAgICAgKFNldFRpbWVvdXRSZWdleHApOgorICAgICAgICAoVzNDVGVz
dE9yZ1JlZ2V4cCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RSZWdleHApOgorICAgICAgICAo
V2ViaWRsMlJlZ2V4cCk6CisgICAgICAgIChDb25zb2xlUmVnZXhwKToKKyAgICAgICAgKEdlbmVy
YXRlVGVzdHNSZWdleHApOgorICAgICAgICAoUHJpbnRSZWdleHApOgorICAgICAgICAoTGF5b3V0
VGVzdHNSZWdleHApOgorICAgICAgICAoU3BlY2lhbFBvd2Vyc1JlZ2V4cCk6CisgICAgICAgIChj
aGVja19yZWdleHBfbGluZSk6CisgICAgICAgIChjaGVja19wYXJzZWQpOgorICAgICAgICAoQVNU
Q2hlY2spOgorICAgICAgICAoQVNUQ2hlY2suY2hlY2spOgorICAgICAgICAoT3Blbk1vZGVDaGVj
ayk6CisgICAgICAgIChPcGVuTW9kZUNoZWNrLmNoZWNrKToKKyAgICAgICAgKGNoZWNrX3B5dGhv
bl9hc3QpOgorICAgICAgICAoY2hlY2tfc2NyaXB0X21ldGFkYXRhKToKKyAgICAgICAgKGNoZWNr
X3BhdGgpOgorICAgICAgICAoY2hlY2tfYWxsX3BhdGhzKToKKyAgICAgICAgKGNoZWNrX2ZpbGVf
Y29udGVudHMpOgorICAgICAgICAob3V0cHV0X2Vycm9yc190ZXh0KToKKyAgICAgICAgKG91dHB1
dF9lcnJvcnNfbWFya2Rvd24pOgorICAgICAgICAob3V0cHV0X2Vycm9yc19qc29uKToKKyAgICAg
ICAgKG91dHB1dF9lcnJvcl9jb3VudCk6CisgICAgICAgIChjaGFuZ2VkX2ZpbGVzKToKKyAgICAg
ICAgKGxpbnRfcGF0aHMpOgorICAgICAgICAoY3JlYXRlX3BhcnNlcik6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKGxpbnQpOgorICAgICAgICAobGludC5wcm9jZXNzX2Vycm9ycyk6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvX19pbml0X18ucHk6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2Jhc2Uu
cHk6IEFkZGVkLgorICAgICAgICAoY2hlY2tfZXJyb3JzKToKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9rZW4uaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvYnJva2VuX2ln
bm9yZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvYS1yZWYuaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvYS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLXJlZi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS9tYXRjaC9hLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvYS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9zdXBwb3J0L3Rvb2xzL2EuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvbWF0Y2gvdG9vbHMvYS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0
Y2gvYS1yZWYuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvbm90LW1hdGNoL3N1cHBvcnQvYS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9u
b3QtbWF0Y2gvdG9vbHMvYS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zZWxlY3RvcnMvYS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS9jc3MvY3NzLXVuaXF1ZS9zdXBwb3J0L2EuaHRtbDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc3Vw
cG9ydC90b29scy9hLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3Rvb2xzL2EuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvZGVw
ZW5kZW5jeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9saW50LndoaXRlbGlzdDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvb2theS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvYWJz
b2x1dGUuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvcmVmL2V4aXN0ZW50X3JlbGF0aXZlLXJlZi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvZXhp
c3RlbnRfcmVsYXRpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2V4aXN0ZW50X3Jvb3RfcmVsYXRpdmUuaHRtbDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvcmVmL25vbl9leGlzdGVudF9yZWxhdGl2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvbm9uX2V4aXN0ZW50X3Jv
b3RfcmVsYXRpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9lbXB0eS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvc2Ft
ZV9maWxlX3BhdGguaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvdGVzdF9maWxlX2xpbnRzLnB5OiBBZGRlZC4KKyAgICAgICAgKGNoZWNr
X3dpdGhfZmlsZXMpOgorICAgICAgICAodGVzdF90cmFpbGluZ193aGl0ZXNwYWNlKToKKyAgICAg
ICAgKHRlc3RfaW5kZW50X3RhYnMpOgorICAgICAgICAodGVzdF9pbmRlbnRfdGFicy5mb28pOgor
ICAgICAgICAodGVzdF9jcl9ub3RfYXRfZW9sKToKKyAgICAgICAgKHRlc3RfY3JfYXRfZW9sKToK
KyAgICAgICAgKHRlc3RfdzNjX3Rlc3Rfb3JnKToKKyAgICAgICAgKHRlc3Rfd2ViX3BsYXRmb3Jt
X3Rlc3QpOgorICAgICAgICAodGVzdF93ZWJpZGwyX2pzKToKKyAgICAgICAgKHRlc3RfY29uc29s
ZSk6CisgICAgICAgICh0ZXN0X3NldFRpbWVvdXQpOgorICAgICAgICAodGVzdF9ldmVudFNlbmRl
cik6CisgICAgICAgICh0ZXN0X3Rlc3RSdW5uZXIpOgorICAgICAgICAodGVzdF93aW5kb3dEb3RJ
bnRlcm5hbHMpOgorICAgICAgICAodGVzdF9tZXRhX3RpbWVvdXQpOgorICAgICAgICAodGVzdF90
ZXN0aGFybmVzc3JlcG9ydF9wYXRoKToKKyAgICAgICAgKHRlc3RfcHJpbnRfc3RhdGVtZW50KToK
KyAgICAgICAgKHRlc3RfcHJpbnRfc3RhdGVtZW50LmZvbyk6CisgICAgICAgICh0ZXN0X3ByaW50
X2Z1bmN0aW9uKToKKyAgICAgICAgKHRlc3RfcHJpbnRfZnVuY3Rpb24uZm9vKToKKyAgICAgICAg
KGZpcnN0KToKKyAgICAgICAgKHNlY29uZCk6CisgICAgICAgICh0aGlyZCk6CisgICAgICAgIChm
b3VydGgpOgorICAgICAgICAoZmlmdGgpOgorICAgICAgICAodGVzdF9jc3NfbWlzc2luZ19maWxl
X21hbnVhbCk6CisgICAgICAgICh0ZXN0X3NjcmlwdF9tZXRhZGF0YSk6CisgICAgICAgICh0ZXN0
X3B5dGhvbl9tZXRhZGF0YSk6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvdGVzdF9saW50LnB5OiBBZGRlZC4KKyAgICAgICAgKF9tb2NrX2xpbnQpOgorICAg
ICAgICAodGVzdF9maWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyk6CisgICAgICAgICh0ZXN0X3BhcnNl
X3doaXRlbGlzdCk6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvdGVzdF9wYXRoX2xpbnRzLnB5OiBBZGRlZC4KKyAgICAgICAgKHRlc3RfYWxsb3dlZF9wYXRo
X2xlbmd0aCk6CisgICAgICAgICh0ZXN0X2ZvcmJpZGRlbl9wYXRoX2xlbmd0aCk6CisgICAgICAg
ICh0ZXN0X2ZvcmJpZGRlbl9wYXRoX2VuZGluZ3MpOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5OgorICAgICAgICAoVGVzdGhhcm5lc3NUZXN0Ll9f
aW5pdF9fKToKKyAgICAgICAgKFRlc3RoYXJuZXNzVGVzdC5tZXRhX2tleSk6CisgICAgICAgIChU
ZXN0aGFybmVzc1Rlc3QudG9fanNvbik6CisgICAgICAgIChUZXN0aGFybmVzc1Rlc3QuZnJvbV9q
c29uKToKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291cmNl
ZmlsZS5weToKKyAgICAgICAgKFNvdXJjZUZpbGUpOgorICAgICAgICAoU291cmNlRmlsZS50ZXN0
ZHJpdmVyX25vZGVzKToKKyAgICAgICAgKFNvdXJjZUZpbGUuaGFzX3Rlc3Rkcml2ZXIpOgorICAg
ICAgICAoU291cmNlRmlsZS5tYW5pZmVzdF9pdGVtcyk6CisKIDIwMTgtMDMtMjAgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIFVw
ZGF0ZSB0aGUgdGltaW5nIG1vZGVsIHdoZW4gcGVuZGluZyB0YXNrcyBzY2hlZHVsZSBjaGFuZ2Vz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2dpdGlnbm9yZS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3Jl
L2dpdGlnbm9yZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjllZDZiNDEyZTRl
YWE0NjEwODdjODQ5YTc2ODU1ZDgyYzdmNmFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvZ2l0aWdu
b3JlLnB5CkBAIC0wLDAgKzEsMTQ4IEBACitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgcmUKK2lt
cG9ydCBvcworCitlbmRfc3BhY2UgPSByZS5jb21waWxlKHIiKFteXFxdXHMpKiQiKQorCisKK2Rl
ZiBmbm1hdGNoX3RyYW5zbGF0ZShwYXQsIHBhdGhfbmFtZT1GYWxzZSk6CisgICAgcGFydHMgPSBb
XQorICAgIHNlcSA9IEZhbHNlCisgICAgaSA9IDAKKyAgICBpZiBwYXRbMF0gPT0gIi8iIG9yIHBh
dGhfbmFtZToKKyAgICAgICAgcGFydHMuYXBwZW5kKCJeIikKKyAgICAgICAgYW55X2NoYXIgPSAi
W14vXSIKKyAgICAgICAgaWYgcGF0WzBdID09ICIvIjoKKyAgICAgICAgICAgIHBhdCA9IHBhdFsx
Ol0KKyAgICBlbHNlOgorICAgICAgICBhbnlfY2hhciA9ICIuIgorICAgICAgICBwYXJ0cy5hcHBl
bmQoIl4oPzouKi8pPyIpCisgICAgd2hpbGUgaSA8IGxlbihwYXQpOgorICAgICAgICBjID0gcGF0
W2ldCisgICAgICAgIGlmIGMgPT0gIlxcIjoKKyAgICAgICAgICAgIGlmIGkgPCBsZW4ocGF0KSAt
IDE6CisgICAgICAgICAgICAgICAgaSArPSAxCisgICAgICAgICAgICAgICAgYyA9IHBhdFtpXQor
ICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChyZS5lc2NhcGUoYykpCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgZWxpZiBzZXE6
CisgICAgICAgICAgICBpZiBjID09ICJdIjoKKyAgICAgICAgICAgICAgICBzZXEgPSBGYWxzZQor
ICAgICAgICAgICAgICAgICMgRmlyc3QgdHdvIGNhc2VzIGFyZSB0byBkZWFsIHdpdGggdGhlIGNh
c2Ugd2hlcmUgLyBpcyB0aGUgb25seSBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAjIGluIHRo
ZSBzZXF1ZW5jZSBidXQgcGF0aF9uYW1lIGlzIFRydWUgc28gaXQgc2hvdWxkbid0IG1hdGNoIGFu
eXRoaW5nCisgICAgICAgICAgICAgICAgaWYgcGFydHNbLTFdID09ICJbIjoKKyAgICAgICAgICAg
ICAgICAgICAgcGFydHMgPSBwYXJ0c1s6LTFdCisgICAgICAgICAgICAgICAgZWxpZiBwYXJ0c1st
MV0gPT0gIl4iIGFuZCBwYXJ0c1stMl0gPT0gIlsiOgorICAgICAgICAgICAgICAgICAgICBwYXJ0
cyA9IHBhcnRzWzotMl0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg
ICBwYXJ0cy5hcHBlbmQoYykKKyAgICAgICAgICAgIGVsaWYgYyA9PSAiLSI6CisgICAgICAgICAg
ICAgICAgcGFydHMuYXBwZW5kKGMpCisgICAgICAgICAgICBlbGlmIG5vdCAocGF0aF9uYW1lIGFu
ZCBjID09ICIvIik6CisgICAgICAgICAgICAgICAgcGFydHMgKz0gcmUuZXNjYXBlKGMpCisgICAg
ICAgIGVsaWYgYyA9PSAiWyI6CisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoIlsiKQorICAgICAg
ICAgICAgaWYgaSA8IGxlbihwYXQpIC0gMSBhbmQgcGF0W2krMV0gaW4gKCIhIiwgIl4iKToKKyAg
ICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoIl4iKQorICAgICAgICAgICAgICAgIGkgKz0gMQor
ICAgICAgICAgICAgc2VxID0gVHJ1ZQorICAgICAgICBlbGlmIGMgPT0gIioiOgorICAgICAgICAg
ICAgaWYgaSA8IGxlbihwYXQpIC0gMSBhbmQgcGF0W2krMV0gPT0gIioiOgorICAgICAgICAgICAg
ICAgIHBhcnRzLmFwcGVuZChhbnlfY2hhciArICIqIikKKyAgICAgICAgICAgICAgICBpICs9IDEK
KyAgICAgICAgICAgICAgICBpZiBpIDwgbGVuKHBhdCkgLSAxIGFuZCBwYXRbaSsxXSA9PSAiKiI6
CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKGFueV9jaGFyICsgIioiKQorICAgICAgICBl
bGlmIGMgPT0gIj8iOgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKGFueV9jaGFyKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKHJlLmVzY2FwZShjKSkKKyAgICAgICAg
aSArPSAxCisKKyAgICBpZiBzZXE6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICBwYXJ0
cy5hcHBlbmQoIiQiKQorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIHJlLmNvbXBpbGUoIiIuam9p
bihwYXJ0cykpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgcmFpc2UKKworCitkZWYg
cGFyc2VfbGluZShsaW5lKToKKyAgICBsaW5lID0gbGluZS5yc3RyaXAoKQorICAgIGlmIG5vdCBs
aW5lIG9yIGxpbmVbMF0gPT0gIiMiOgorICAgICAgICByZXR1cm4KKworICAgIGludmVydCA9IGxp
bmVbMF0gPT0gIiEiCisgICAgaWYgaW52ZXJ0OgorICAgICAgICBsaW5lID0gbGluZVsxOl0KKwor
ICAgIGRpcl9vbmx5ID0gbGluZVstMV0gPT0gIi8iCisKKyAgICBpZiBkaXJfb25seToKKyAgICAg
ICAgbGluZSA9IGxpbmVbOi0xXQorCisgICAgcmV0dXJuIGludmVydCwgZGlyX29ubHksIGZubWF0
Y2hfdHJhbnNsYXRlKGxpbmUsICIvIiBpbiBsaW5lKQorCisKK2NsYXNzIFBhdGhGaWx0ZXIob2Jq
ZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdCwgZXh0cmFzPU5vbmUpOgorICAgICAg
ICBpZiByb290OgorICAgICAgICAgICAgaWdub3JlX3BhdGggPSBvcy5wYXRoLmpvaW4ocm9vdCwg
Ii5naXRpZ25vcmUiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWdub3JlX3BhdGggPSBO
b25lCisgICAgICAgIGlmIG5vdCBpZ25vcmVfcGF0aCBhbmQgbm90IGV4dHJhczoKKyAgICAgICAg
ICAgIHNlbGYudHJpdmlhbCA9IFRydWUKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxm
LnRyaXZpYWwgPSBGYWxzZQorCisgICAgICAgIHNlbGYucnVsZXNfZmlsZSA9IFtdCisgICAgICAg
IHNlbGYucnVsZXNfZGlyID0gW10KKworICAgICAgICBpZiBleHRyYXMgaXMgTm9uZToKKyAgICAg
ICAgICAgIGV4dHJhcyA9IFtdCisKKyAgICAgICAgaWYgaWdub3JlX3BhdGggYW5kIG9zLnBhdGgu
ZXhpc3RzKGlnbm9yZV9wYXRoKToKKyAgICAgICAgICAgIHNlbGYuX3JlYWRfaWdub3JlKGlnbm9y
ZV9wYXRoKQorCisgICAgICAgIGZvciBpdGVtIGluIGV4dHJhczoKKyAgICAgICAgICAgIHNlbGYu
X3JlYWRfbGluZShpdGVtKQorCisgICAgZGVmIF9yZWFkX2lnbm9yZShzZWxmLCBpZ25vcmVfcGF0
aCk6CisgICAgICAgIHdpdGggb3BlbihpZ25vcmVfcGF0aCkgYXMgZjoKKyAgICAgICAgICAgIGZv
ciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9saW5lKGxpbmUpCisKKyAg
ICBkZWYgX3JlYWRfbGluZShzZWxmLCBsaW5lKToKKyAgICAgICAgcGFyc2VkID0gcGFyc2VfbGlu
ZShsaW5lKQorICAgICAgICBpZiBub3QgcGFyc2VkOgorICAgICAgICAgICAgcmV0dXJuCisgICAg
ICAgIGludmVydCwgZGlyX29ubHksIHJlZ2V4cCA9IHBhcnNlZAorICAgICAgICBpZiBkaXJfb25s
eToKKyAgICAgICAgICAgIHNlbGYucnVsZXNfZGlyLmFwcGVuZCgocmVnZXhwLCBpbnZlcnQpKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5ydWxlc19maWxlLmFwcGVuZCgocmVnZXhw
LCBpbnZlcnQpKQorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBv
cy5wYXRoLnNlcCAhPSAiLyI6CisgICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKG9zLnBh
dGguc2VwLCAiLyIpCisKKyAgICAgICAgaWYgc2VsZi50cml2aWFsOgorICAgICAgICAgICAgcmV0
dXJuIFRydWUKKworICAgICAgICBwYXRoX2lzX2RpciA9IHBhdGhbLTFdID09ICIvIgorICAgICAg
ICBpZiBwYXRoX2lzX2RpcjoKKyAgICAgICAgICAgIHBhdGggPSBwYXRoWzotMV0KKyAgICAgICAg
ICAgIHJ1bGVzID0gc2VsZi5ydWxlc19kaXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJ1
bGVzID0gc2VsZi5ydWxlc19maWxlCisKKyAgICAgICAgaW5jbHVkZSA9IFRydWUKKyAgICAgICAg
Zm9yIHJlZ2V4cCwgaW52ZXJ0IGluIHJ1bGVzOgorICAgICAgICAgICAgaWYgbm90IGluY2x1ZGUg
YW5kIGludmVydCBhbmQgcmVnZXhwLm1hdGNoKHBhdGgpOgorICAgICAgICAgICAgICAgIGluY2x1
ZGUgPSBUcnVlCisgICAgICAgICAgICBlbGlmIGluY2x1ZGUgYW5kIG5vdCBpbnZlcnQgYW5kIHJl
Z2V4cC5tYXRjaChwYXRoKToKKyAgICAgICAgICAgICAgICBpbmNsdWRlID0gRmFsc2UKKyAgICAg
ICAgcmV0dXJuIGluY2x1ZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL3Rlc3RzL19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUv
dGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1
YWQ4YzJlNDhjNTM5MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdGVzdHMvdGVzdF9naXRpZ25vcmUucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9y
ZS90ZXN0cy90ZXN0X2dpdGlnbm9yZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGYzMzUzZTk0MTA1YmQxM2Q5
OTZiY2M0YjNiOTA4NjY1ODZhYWIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdGVzdHMvdGVzdF9n
aXRpZ25vcmUucHkKQEAgLTAsMCArMSw3NSBAQAoraW1wb3J0IHB5dGVzdAorCitmcm9tIC4uZ2l0
aWdub3JlIGltcG9ydCBmbm1hdGNoX3RyYW5zbGF0ZSwgUGF0aEZpbHRlcgorCittYXRjaF9kYXRh
ID0gWworICAgICgiZm9vIiwgRmFsc2UsIFsiYS9mb28iLCAiZm9vIl0pLAorICAgICgiKi5hIiwg
RmFsc2UsIFsiZm9vLmEiLCAiYS9mb28uYSIsICJhL2IvZm9vLmEiLCAiYS5hL2Zvby5hIl0pLAor
ICAgICgiKi5weVtjb10iLCBGYWxzZSwgWyJhLnB5YyIsICJhLnB5byIsICJhL2IvYy5weWMiXSks
CisgICAgKCJcXCMqIiwgRmFsc2UsIFsiI2EiLCAiYS8jYiJdKSwKKyAgICAoIiojIiwgRmFsc2Us
IFsiYSMiLCAiYS9iIyIsICIjYSMiXSksCisgICAgKCIvKi5jIiwgRmFsc2UsIFsiYS5jIiwgIi5j
Il0pLAorICAgICgiKiovYiIsIEZhbHNlLCBbImEvYiIsICJhL2MvYiJdKSwKKyAgICAoIipiIiwg
VHJ1ZSwgWyJhYiJdKSwKKyAgICAoIioqL2IiLCBUcnVlLCBbImEvYiJdKQorXQorCittaXNtYXRj
aF9kYXRhID0gWworICAgICgiZm9vIiwgRmFsc2UsIFsiZm9vYiIsICJhZm9vIl0pLAorICAgICgi
Ki5hIiwgRmFsc2UsIFsiYSIsICJmb286YSIsICJhLmEvZm9vIl0pLAorICAgICgiKi5weVtjb10i
LCBGYWxzZSwgWyJhLnB5ZCIsICJweW8iXSksCisgICAgKCIvKi5jIiwgRmFsc2UsIFsiYS9iLmMi
XSksCisgICAgKCIqYiIsIFRydWUsIFsiYS9iIl0pLAorICAgICgiKipiIiwgVHJ1ZSwgWyJhL2Ii
XSksCisgICAgKCJhWy9dYiIsIFRydWUsIFsiYS9iIl0pLAorICAgICgiKiovYiIsIFRydWUsIFsi
YS9jL2IiXSksCitdCisKK2ludmFsaWRfZGF0YSA9IFsKKyAgICAiW2EiLAorICAgICIqKiovZm9v
IiwKKyAgICAiYVxcIiwKK10KKworZmlsdGVyX2RhdGEgPSBbCisgICAgKCJmb28iLCBUcnVlKSwK
KyAgICAoImEiLCBGYWxzZSksCisgICAgKCJhL2IiLCBGYWxzZSksCisgICAgKCJhL2MiLCBUcnVl
KSwKKyAgICAoImEvYy8iLCBGYWxzZSksCisgICAgKCJjL2IiLCBUcnVlKQorXQorCitkZWYgZXhw
YW5kX2RhdGEoY29tcGFjdF9kYXRhKToKKyAgICBmb3IgcGF0dGVybiwgcGF0aF9uYW1lLCBpbnB1
dHMgaW4gY29tcGFjdF9kYXRhOgorICAgICAgICBmb3IgaW5wdXQgaW4gaW5wdXRzOgorICAgICAg
ICAgICAgeWllbGQgcGF0dGVybiwgaW5wdXQsIHBhdGhfbmFtZQorCitAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoInBhdHRlcm4sIGlucHV0LCBwYXRoX25hbWUiLCBleHBhbmRfZGF0YShtYXRjaF9k
YXRhKSkKK2RlZiB0ZXN0c19tYXRjaChwYXR0ZXJuLCBpbnB1dCwgcGF0aF9uYW1lKToKKyAgICBy
ZWdleHAgPSBmbm1hdGNoX3RyYW5zbGF0ZShwYXR0ZXJuLCBwYXRoX25hbWUpCisgICAgYXNzZXJ0
IHJlZ2V4cC5tYXRjaChpbnB1dCkgaXMgbm90IE5vbmUKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJwYXR0ZXJuLCBpbnB1dCwgcGF0aF9uYW1lIiwgZXhwYW5kX2RhdGEobWlzbWF0Y2hfZGF0
YSkpCitkZWYgdGVzdHNfbm9fbWF0Y2gocGF0dGVybiwgaW5wdXQsIHBhdGhfbmFtZSk6CisgICAg
cmVnZXhwID0gZm5tYXRjaF90cmFuc2xhdGUocGF0dGVybiwgcGF0aF9uYW1lKQorICAgIGFzc2Vy
dCByZWdleHAubWF0Y2goaW5wdXQpIGlzIE5vbmUKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJwYXR0ZXJuIiwgaW52YWxpZF9kYXRhKQorZGVmIHRlc3RzX2ludmFsaWQocGF0dGVybik6Cisg
ICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICBmbm1hdGNoX3RyYW5z
bGF0ZShwYXR0ZXJuLCBGYWxzZSkKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6
CisgICAgICAgIGZubWF0Y2hfdHJhbnNsYXRlKHBhdHRlcm4sIFRydWUpCisKK0BweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgicGF0aCwgZXhwZWN0ZWQiLCBmaWx0ZXJfZGF0YSkKK2RlZiB0ZXN0X3Bh
dGhfZmlsdGVyKHBhdGgsIGV4cGVjdGVkKToKKyAgICBleHRyYXMgPSBbCisgICAgICAgICIjZm9v
IiwKKyAgICAgICAgImEgICIsCisgICAgICAgICIqKi9iIiwKKyAgICAgICAgImEvYy8iLAorICAg
ICAgICAiIWMvYiIsCisgICAgXQorICAgIGYgPSBQYXRoRmlsdGVyKE5vbmUsIGV4dHJhcykKKyAg
ICBhc3NlcnQgZihwYXRoKSA9PSBleHBlY3RlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L19faW5p
dF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU1ZWI1ZTEyZDVmODlmYzlmY2QwZWUxMGI2NmIxNjE0ZDQyZGY2
ODQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvX19pbml0X18ucHkKQEAgLTAsMCArMSBAQAorZnJvbSAuIGlt
cG9ydCBsaW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvY29tbWFuZHMuanNvbiBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9jb21tYW5kcy5qc29uCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE4ZTk4NDRmYWZlZTk5OTgwODg0YmI0ZjUxYjIwMGQ5OTFmYTUzZmYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvY29tbWFuZHMuanNvbgpAQCAtMCwwICsxLDMgQEAKK3sibGludCI6CisgeyJwYXRoIjog
ImxpbnQucHkiLCAic2NyaXB0IjogIm1haW4iLCAicGFyc2VyIjogImNyZWF0ZV9wYXJzZXIiLCAi
aGVscCI6ICJSdW4gdGhlIGxpbnQiLAorICAidmlydHVhbGVudiI6IGZhbHNlfX0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC9mbm1hdGNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L2ZubWF0Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZlM2ViMGFhOWU1YWYwN2UxMWFk
NWIwOGQ5MGY4MjliOGE1MWE1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9mbm1hdGNoLnB5CkBAIC0wLDAg
KzEsMzIgQEAKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisKK2ltcG9y
dCBmbm1hdGNoIGFzIF9zdGRsaWJfZm5tYXRjaAoraW1wb3J0IG9zCisKKworX19hbGxfXyA9IFsi
Zm5tYXRjaCIsICJmbm1hdGNoY2FzZSIsICJmaWx0ZXIiLCAidHJhbnNsYXRlIl0KKworCitkZWYg
Zm5tYXRjaChuYW1lLCBwYXQpOgorICAgIG5hbWUgPSBvcy5wYXRoLm5vcm1jYXNlKG5hbWUpCisg
ICAgcGF0ID0gb3MucGF0aC5ub3JtY2FzZShwYXQpCisgICAgcmV0dXJuIGZubWF0Y2hjYXNlKG5h
bWUsIHBhdCkKKworCitkZWYgZm5tYXRjaGNhc2UobmFtZSwgcGF0KToKKyAgICBpZiAnPycgbm90
IGluIHBhdCBhbmQgJ1snIG5vdCBpbiBwYXQ6CisgICAgICAgIHdpbGRjYXJkcyA9IHBhdC5jb3Vu
dCgiKiIpCisgICAgICAgIGlmIHdpbGRjYXJkcyA9PSAwOgorICAgICAgICAgICAgcmV0dXJuIG5h
bWUgPT0gcGF0CisgICAgICAgIGVsaWYgd2lsZGNhcmRzID09IDEgYW5kIHBhdFswXSA9PSAiKiI6
CisgICAgICAgICAgICByZXR1cm4gbmFtZS5lbmRzd2l0aChwYXRbMTpdKQorICAgICAgICBlbGlm
IHdpbGRjYXJkcyA9PSAxIGFuZCBwYXRbLTFdID09ICIqIjoKKyAgICAgICAgICAgIHJldHVybiBu
YW1lLnN0YXJ0c3dpdGgocGF0WzotMV0pCisgICAgcmV0dXJuIF9zdGRsaWJfZm5tYXRjaC5mbm1h
dGNoY2FzZShuYW1lLCBwYXQpCisKKworZGVmIGZpbHRlcihuYW1lcywgcGF0KToKKyAgICByZXR1
cm4gW24gZm9yIG4gaW4gbmFtZXMgaWYgZm5tYXRjaChuLCBwYXQpXQorCisKK3RyYW5zbGF0ZSA9
IF9zdGRsaWJfZm5tYXRjaC50cmFuc2xhdGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9saW50LnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L2xpbnQucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzFhNmNlMDJkMWUzYzI4Nzc3ODEyZTkyYzQ0ZjE4Y2VmNDljZDdkYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC9saW50LnB5CkBAIC0wLDAgKzEsODQ3IEBACitmcm9tIF9fZnV0dXJlX18gaW1w
b3J0IHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCisKK2ltcG9ydCBhYmMKK2ltcG9y
dCBhcmdwYXJzZQoraW1wb3J0IGFzdAoraW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IGpzb24KK2lt
cG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworCitmcm9t
IGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorCitmcm9tIC4gaW1wb3J0IGZubWF0Y2gK
K2Zyb20gLi4gaW1wb3J0IGxvY2FscGF0aHMKK2Zyb20gLi5naXRpZ25vcmUuZ2l0aWdub3JlIGlt
cG9ydCBQYXRoRmlsdGVyCitmcm9tIC4ud3B0IGltcG9ydCB0ZXN0ZmlsZXMKKworZnJvbSBtYW5p
ZmVzdC5zb3VyY2VmaWxlIGltcG9ydCBTb3VyY2VGaWxlLCBqc19tZXRhX3JlLCBweXRob25fbWV0
YV9yZSwgc3BhY2VfY2hhcnMKK2Zyb20gc2l4IGltcG9ydCBiaW5hcnlfdHlwZSwgaXRlcml0ZW1z
LCBpdGVydmFsdWVzCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKK2Zyb20gc2l4Lm1vdmVz
LnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsc3BsaXQsIHVybGpvaW4KKworaW1wb3J0IGxvZ2dpbmcK
KworbG9nZ2VyID0gTm9uZQorCitkZWYgc2V0dXBfbG9nZ2luZyhwcmVmaXg9RmFsc2UpOgorICAg
IGdsb2JhbCBsb2dnZXIKKyAgICBpZiBsb2dnZXIgaXMgTm9uZToKKyAgICAgICAgbG9nZ2VyID0g
bG9nZ2luZy5nZXRMb2dnZXIob3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLnNwbGl0ZXh0KF9fZmls
ZV9fKVswXSkpCisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0
ZG91dCkKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKyAgICBpZiBwcmVmaXg6
CisgICAgICAgIGZvcm1hdCA9IGxvZ2dpbmcuQkFTSUNfRk9STUFUCisgICAgZWxzZToKKyAgICAg
ICAgZm9ybWF0ID0gIiUobWVzc2FnZSlzIgorICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0
dGVyKGZvcm1hdCkKKyAgICBmb3IgaGFuZGxlciBpbiBsb2dnZXIuaGFuZGxlcnM6CisgICAgICAg
IGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKKyAgICBsb2dnZXIuc2V0TGV2ZWwobG9n
Z2luZy5ERUJVRykKKworCitzZXR1cF9sb2dnaW5nKCkKKworCitFUlJPUl9NU0cgPSAiIiJZb3Ug
bXVzdCBmaXggYWxsIGVycm9yczsgZm9yIGRldGFpbHMgb24gaG93IHRvIGZpeCB0aGVtLCBzZWUK
K2h0dHA6Ly93ZWItcGxhdGZvcm0tdGVzdHMub3JnL3dyaXRpbmctdGVzdHMvbGludC10b29sLmh0
bWwKKworSG93ZXZlciwgaW5zdGVhZCBvZiBmaXhpbmcgYSBwYXJ0aWN1bGFyIGVycm9yLCBpdCdz
IHNvbWV0aW1lcworT0sgdG8gYWRkIGEgbGluZSB0byB0aGUgbGludC53aGl0ZWxpc3QgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUKK3dlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkgdG8gbWFrZSB0
aGUgbGludCB0b29sIGlnbm9yZSBpdC4KKworRm9yIGV4YW1wbGUsIHRvIG1ha2UgdGhlIGxpbnQg
dG9vbCBpZ25vcmUgYWxsICclcycKK2Vycm9ycyBpbiB0aGUgJXMgZmlsZSwKK3lvdSBjb3VsZCBh
ZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRoZSBsaW50LndoaXRlbGlzdCBmaWxlLgorCislczog
JXMiIiIKKworZGVmIGFsbF9maWxlc3lzdGVtX3BhdGhzKHJlcG9fcm9vdCk6CisgICAgcGF0aF9m
aWx0ZXIgPSBQYXRoRmlsdGVyKHJlcG9fcm9vdCwgZXh0cmFzPVsiLmdpdC8qIl0pCisgICAgZm9y
IGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMgaW4gb3Mud2FsayhyZXBvX3Jvb3QpOgorICAg
ICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgorICAgICAgICAgICAgcGF0aCA9IG9zLnBh
dGgucmVscGF0aChvcy5wYXRoLmpvaW4oZGlycGF0aCwgZmlsZW5hbWUpLCByZXBvX3Jvb3QpCisg
ICAgICAgICAgICBpZiBwYXRoX2ZpbHRlcihwYXRoKToKKyAgICAgICAgICAgICAgICB5aWVsZCBw
YXRoCisgICAgICAgIGRpcm5hbWVzWzpdID0gW2l0ZW0gZm9yIGl0ZW0gaW4gZGlybmFtZXMgaWYK
KyAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9maWx0ZXIob3MucGF0aC5yZWxwYXRoKG9zLnBh
dGguam9pbihkaXJwYXRoLCBpdGVtKSArICIvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9fcm9vdCkpXQorCisKK2RlZiBfYWxsX2ZpbGVz
X2VxdWFsKHBhdGhzKToKKyAgICAiIiIKKyAgICBDaGVja3MgYWxsIHRoZSBwYXRocyBhcmUgZmls
ZXMgdGhhdCBhcmUgYnl0ZS1mb3ItYnl0ZSBpZGVudGljYWwKKworICAgIDpwYXJhbSBwYXRoczog
dGhlIGxpc3Qgb2YgcGF0aHMgdG8gY29tcGFyZQorICAgIDpyZXR1cm5zOiBUcnVlIGlmIHRoZXkg
YXJlIGFsbCBpZGVudGljYWwKKyAgICAiIiIKKyAgICBwYXRocyA9IGxpc3QocGF0aHMpCisgICAg
aWYgbGVuKHBhdGhzKSA8IDI6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBmaXJzdCA9IHBh
dGhzLnBvcCgpCisgICAgc2l6ZSA9IG9zLnBhdGguZ2V0c2l6ZShmaXJzdCkKKyAgICBpZiBhbnko
b3MucGF0aC5nZXRzaXplKHBhdGgpICE9IHNpemUgZm9yIHBhdGggaW4gcGF0aHMpOgorICAgICAg
ICByZXR1cm4gRmFsc2UKKworICAgICMgQ2h1bmsgdGhpcyB0byBhdm9pZCBlYXRpbmcgdXAgbWVt
b3J5IGFuZCBmaWxlIGRlc2NyaXB0b3JzCisgICAgYnVmc2l6ZSA9IDQwOTYqNCAgIyAxNktCLCBh
ICJyZWFzb25hYmxlIiBudW1iZXIgb2YgZGlzayBzZWN0b3JzCisgICAgZ3JvdXBzaXplID0gOCAg
IyBIeXBvdGhlc2lzZWQgdG8gYmUgbGFyZ2UgZW5vdWdoIGluIHRoZSBjb21tb24gY2FzZSB0aGF0
IGV2ZXJ5dGhpbmcgZml0cyBpbiBvbmUgZ3JvdXAKKyAgICB3aXRoIG9wZW4oZmlyc3QsICJyYiIp
IGFzIGZpcnN0X2Y6CisgICAgICAgIGZvciBzdGFydCBpbiByYW5nZSgwLCBsZW4ocGF0aHMpLCBn
cm91cHNpemUpOgorICAgICAgICAgICAgcGF0aF9ncm91cCA9IHBhdGhzW3N0YXJ0OnN0YXJ0K2dy
b3Vwc2l6ZV0KKyAgICAgICAgICAgIGZpcnN0X2Yuc2VlaygwKQorICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgIGZpbGVzID0gW29wZW4oeCwgInJiIikgZm9yIHggaW4gcGF0aF9ncm91
cF0KKyAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZSgwLCBzaXplLCBidWZzaXplKToKKyAg
ICAgICAgICAgICAgICAgICAgYSA9IGZpcnN0X2YucmVhZChidWZzaXplKQorICAgICAgICAgICAg
ICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBmLnJl
YWQoYnVmc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGEgIT0gYjoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGZpbmFsbHk6Cisg
ICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIGYuY2xv
c2UoKQorCisgICAgcmV0dXJuIFRydWUKKworCitkZWYgY2hlY2tfcGF0aF9sZW5ndGgocmVwb19y
b290LCBwYXRoKToKKyAgICBpZiBsZW4ocGF0aCkgKyAxID4gMTUwOgorICAgICAgICByZXR1cm4g
WygiUEFUSCBMRU5HVEgiLCAiLyVzIGxvbmdlciB0aGFuIG1heGltdW0gcGF0aCBsZW5ndGggKCVk
ID4gMTUwKSIgJSAocGF0aCwgbGVuKHBhdGgpICsgMSksIHBhdGgsIE5vbmUpXQorICAgIHJldHVy
biBbXQorCisKK2RlZiBjaGVja193b3JrZXJfY29sbGlzaW9uKHJlcG9fcm9vdCwgcGF0aCk6Cisg
ICAgZW5kaW5ncyA9IFsoIi5hbnkuaHRtbCIsICIuYW55LmpzIiksCisgICAgICAgICAgICAgICAo
Ii5hbnkud29ya2VyLmh0bWwiLCAiLmFueS5qcyIpLAorICAgICAgICAgICAgICAgKCIud29ya2Vy
Lmh0bWwiLCAiLndvcmtlci5qcyIpXQorICAgIGZvciBwYXRoX2VuZGluZywgZ2VuZXJhdGVkIGlu
IGVuZGluZ3M6CisgICAgICAgIGlmIHBhdGguZW5kc3dpdGgocGF0aF9lbmRpbmcpOgorICAgICAg
ICAgICAgcmV0dXJuIFsoIldPUktFUiBDT0xMSVNJT04iLAorICAgICAgICAgICAgICAgICAgICAg
InBhdGggZW5kcyB3aXRoICVzIHdoaWNoIGNvbGxpZGVzIHdpdGggZ2VuZXJhdGVkIHRlc3RzIGZy
b20gJXMgZmlsZXMiICUgKHBhdGhfZW5kaW5nLCBnZW5lcmF0ZWQpLAorICAgICAgICAgICAgICAg
ICAgICAgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgIE5vbmUpXQorICAgIHJldHVybiBbXQor
CisKK2RlZiBjaGVja19haGVtX2NvcHkocmVwb19yb290LCBwYXRoKToKKyAgICBscGF0aCA9IHBh
dGgubG93ZXIoKQorICAgIGlmICJhaGVtIiBpbiBscGF0aCBhbmQgbHBhdGguZW5kc3dpdGgoIi50
dGYiKToKKyAgICAgICAgcmV0dXJuIFsoIkFIRU0gQ09QWSIsICJEb24ndCBhZGQgZXh0cmEgY29w
aWVzIG9mIEFoZW0sIHVzZSAvZm9udHMvQWhlbS50dGYiLCBwYXRoLCBOb25lKV0KKyAgICByZXR1
cm4gW10KKworCitkcmFmdHNfY3Nzd2dfcmUgPSByZS5jb21waWxlKHIiaHR0cHM/XDpcL1wvZHJh
ZnRzXC5jc3N3Z1wub3JnXC8oW14vPyNdKykiKQordzNjX3RyX3JlID0gcmUuY29tcGlsZShyImh0
dHBzP1w6XC9cL3d3d1wudzNjP1wub3JnXC9UUlwvKFteLz8jXSspIikKK3czY19kZXZfcmUgPSBy
ZS5jb21waWxlKHIiaHR0cHM/XDpcL1wvZGV2XC53M2M/XC5vcmdcL1teLz8jXStcLyhbXi8/I10r
KSIpCisKKworZGVmIGNoZWNrX2Nzc19nbG9iYWxseV91bmlxdWUocmVwb19yb290LCBwYXRocyk6
CisgICAgIiIiCisgICAgQ2hlY2tzIHRoYXQgQ1NTIGZpbGVuYW1lcyBhcmUgc3VmZmljaWVudGx5
IHVuaXF1ZQorCisgICAgVGhpcyBncm91cHMgZmlsZXMgYnkgcGF0aCBjbGFzc2lmeWluZyB0aGVt
IGFzICJ0ZXN0IiwgInJlZmVyZW5jZSIsIG9yCisgICAgInN1cHBvcnQiLgorCisgICAgInRlc3Qi
IGZpbGVzIG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lIGFjcm9zcyBmaWxlcyB0aGF0IHNoYXJlIGxp
bmtzIHRvIHRoZQorICAgIHNhbWUgc3BlYy4KKworICAgICJyZWZlcmVuY2UiIGFuZCAic3VwcG9y
dCIgZmlsZXMsIG9uIHRoZSBvdGhlciBoYW5kLCBtdXN0IGhhdmUgZ2xvYmFsbHkKKyAgICB1bmlx
dWUgbmFtZXMuCisKKyAgICA6cGFyYW0gcmVwb19yb290OiB0aGUgcmVwb3NpdG9yeSByb290Cisg
ICAgOnBhcmFtIHBhdGhzOiBsaXN0IG9mIGFsbCBwYXRocworICAgIDpyZXR1cm5zOiBhIGxpc3Qg
b2YgZXJyb3JzIGZvdW5kIGluIGBgcGF0aHNgYAorCisgICAgIiIiCisgICAgdGVzdF9maWxlcyA9
IGRlZmF1bHRkaWN0KHNldCkKKyAgICByZWZfZmlsZXMgPSBkZWZhdWx0ZGljdChzZXQpCisgICAg
c3VwcG9ydF9maWxlcyA9IGRlZmF1bHRkaWN0KHNldCkKKworICAgIGZvciBwYXRoIGluIHBhdGhz
OgorICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CisgICAgICAgICAgICBwYXRoID0gcGF0aC5y
ZXBsYWNlKCJcXCIsICIvIikKKworICAgICAgICBpZiBub3QgcGF0aC5zdGFydHN3aXRoKCJjc3Mv
Iik6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHNvdXJjZV9maWxlID0gU291cmNl
RmlsZShyZXBvX3Jvb3QsIHBhdGgsICIvIikKKyAgICAgICAgaWYgc291cmNlX2ZpbGUubmFtZV9p
c19ub25fdGVzdDoKKyAgICAgICAgICAgICMgSWYgd2UncmUgbmFtZV9pc19ub25fdGVzdCBmb3Ig
YSByZWFzb24gYXBhcnQgZnJvbSBzdXBwb3J0LCBpZ25vcmUgaXQuCisgICAgICAgICAgICAjIFdl
IGNhcmUgYWJvdXQgc3VwcG9ydCBiZWNhdXNlIG9mIHRoZSByZXF1aXJlbWVudCBhbGwgc3VwcG9y
dCBmaWxlcyBpbiBjc3MvIHRvIGJlIGluCisgICAgICAgICAgICAjIGEgc3VwcG9ydCBkaXJlY3Rv
cnk7IHNlZSB0aGUgc3RhcnQgb2YgY2hlY2tfcGFyc2VkLgorICAgICAgICAgICAgb2Zmc2V0ID0g
cGF0aC5maW5kKCIvc3VwcG9ydC8iKQorICAgICAgICAgICAgaWYgb2Zmc2V0ID09IC0xOgorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHBhcnRzID0gc291cmNlX2ZpbGUu
ZGlyX3BhdGguc3BsaXQob3MucGF0aC5zZXApCisgICAgICAgICAgICBpZiAocGFydHNbMF0gaW4g
c291cmNlX2ZpbGUucm9vdF9kaXJfbm9uX3Rlc3Qgb3IKKyAgICAgICAgICAgICAgICBhbnkoaXRl
bSBpbiBzb3VyY2VfZmlsZS5kaXJfbm9uX3Rlc3QgLSB7InN1cHBvcnQifSBmb3IgaXRlbSBpbiBw
YXJ0cykgb3IKKyAgICAgICAgICAgICAgICBhbnkocGFydHNbOmxlbihub25fdGVzdF9wYXRoKV0g
PT0gbGlzdChub25fdGVzdF9wYXRoKSBmb3Igbm9uX3Rlc3RfcGF0aCBpbiBzb3VyY2VfZmlsZS5k
aXJfcGF0aF9ub25fdGVzdCkpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAg
ICAgIG5hbWUgPSBwYXRoW29mZnNldCsxOl0KKyAgICAgICAgICAgIHN1cHBvcnRfZmlsZXNbbmFt
ZV0uYWRkKHBhdGgpCisgICAgICAgIGVsaWYgc291cmNlX2ZpbGUubmFtZV9pc19yZWZlcmVuY2U6
CisgICAgICAgICAgICByZWZfZmlsZXNbc291cmNlX2ZpbGUubmFtZV0uYWRkKHBhdGgpCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICB0ZXN0X2ZpbGVzW3NvdXJjZV9maWxlLm5hbWVdLmFkZChw
YXRoKQorCisgICAgZXJyb3JzID0gW10KKworICAgIGZvciBuYW1lLCBjb2xsaWRpbmcgaW4gaXRl
cml0ZW1zKHRlc3RfZmlsZXMpOgorICAgICAgICBpZiBsZW4oY29sbGlkaW5nKSA+IDE6CisgICAg
ICAgICAgICBpZiBub3QgX2FsbF9maWxlc19lcXVhbChbb3MucGF0aC5qb2luKHJlcG9fcm9vdCwg
eCkgZm9yIHggaW4gY29sbGlkaW5nXSk6CisgICAgICAgICAgICAgICAgIyBPbmx5IGNvbXB1dGUg
Ynlfc3BlYyBpZiB0aGVyZSBhcmUgcHJpbWEtZmFjaWUgY29sbGlzaW9ucyBiZWNhdXNlIG9mIGNv
c3QKKyAgICAgICAgICAgICAgICBieV9zcGVjID0gZGVmYXVsdGRpY3Qoc2V0KQorICAgICAgICAg
ICAgICAgIGZvciBwYXRoIGluIGNvbGxpZGluZzoKKyAgICAgICAgICAgICAgICAgICAgc291cmNl
X2ZpbGUgPSBTb3VyY2VGaWxlKHJlcG9fcm9vdCwgcGF0aCwgIi8iKQorICAgICAgICAgICAgICAg
ICAgICBmb3IgbGluayBpbiBzb3VyY2VfZmlsZS5zcGVjX2xpbmtzOgorICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIHIgaW4gKGRyYWZ0c19jc3N3Z19yZSwgdzNjX3RyX3JlLCB3M2NfZGV2X3Jl
KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gci5tYXRjaChsaW5rKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNwZWMgPSBtLmdyb3VwKDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBieV9zcGVjW3NwZWNdLmFk
ZChwYXRoKQorCisgICAgICAgICAgICAgICAgZm9yIHNwZWMsIHBhdGhzIGluIGl0ZXJpdGVtcyhi
eV9zcGVjKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9hbGxfZmlsZXNfZXF1YWwoW29z
LnBhdGguam9pbihyZXBvX3Jvb3QsIHgpIGZvciB4IGluIHBhdGhzXSk6CisgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgeCBpbiBwYXRoczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
cnJvcnMuYXBwZW5kKCgiQ1NTLUNPTExJRElORy1URVNULU5BTUUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsZW5hbWUgJXMgaW4gdGhlICVzIHRl
c3RzdWl0ZSBpcyBzaGFyZWQgYnk6ICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICUgKG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiLCAiLmpvaW4oc29ydGVkKHBhdGhzKSkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTm9uZSkpCisKKyAgICBmb3IgZXJyb3JfbmFtZSwgZCBpbiBbKCJDU1MtQ09M
TElESU5HLVJFRi1OQU1FIiwgcmVmX2ZpbGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
KCJDU1MtQ09MTElESU5HLVNVUFBPUlQtTkFNRSIsIHN1cHBvcnRfZmlsZXMpXToKKyAgICAgICAg
Zm9yIG5hbWUsIGNvbGxpZGluZyBpbiBpdGVyaXRlbXMoZCk6CisgICAgICAgICAgICBpZiBsZW4o
Y29sbGlkaW5nKSA+IDE6CisgICAgICAgICAgICAgICAgaWYgbm90IF9hbGxfZmlsZXNfZXF1YWwo
W29zLnBhdGguam9pbihyZXBvX3Jvb3QsIHgpIGZvciB4IGluIGNvbGxpZGluZ10pOgorICAgICAg
ICAgICAgICAgICAgICBmb3IgeCBpbiBjb2xsaWRpbmc6CisgICAgICAgICAgICAgICAgICAgICAg
ICBlcnJvcnMuYXBwZW5kKChlcnJvcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlRoZSBmaWxlbmFtZSAlcyBpcyBzaGFyZWQgYnk6ICVzIiAlIChuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiLCAiLmpvaW4oc29ydGVkKGNvbGxpZGluZykpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOb25lKSkKKworICAgIHJldHVybiBlcnJvcnMKKworCitkZWYg
cGFyc2Vfd2hpdGVsaXN0KGYpOgorICAgICIiIgorICAgIFBhcnNlIHRoZSB3aGl0ZWxpc3QgZmls
ZSBnaXZlbiBieSBgZmAsIGFuZCByZXR1cm4gdGhlIHBhcnNlZCBzdHJ1Y3R1cmUuCisgICAgIiIi
CisKKyAgICBkYXRhID0gZGVmYXVsdGRpY3QobGFtYmRhOmRlZmF1bHRkaWN0KHNldCkpCisgICAg
aWdub3JlZF9maWxlcyA9IHNldCgpCisKKyAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICBsaW5l
ID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBsaW5lIG9yIGxpbmUuc3RhcnRzd2l0aCgi
IyIpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcGFydHMgPSBbaXRlbS5zdHJpcCgp
IGZvciBpdGVtIGluIGxpbmUuc3BsaXQoIjoiKV0KKyAgICAgICAgaWYgbGVuKHBhcnRzKSA9PSAy
OgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKE5vbmUpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBwYXJ0c1stMV0gPSBpbnQocGFydHNbLTFdKQorCisgICAgICAgIGVycm9yX3R5cGVzLCBm
aWxlX21hdGNoLCBsaW5lX251bWJlciA9IHBhcnRzCisgICAgICAgIGVycm9yX3R5cGVzID0ge2l0
ZW0uc3RyaXAoKSBmb3IgaXRlbSBpbiBlcnJvcl90eXBlcy5zcGxpdCgiLCIpfQorICAgICAgICBm
aWxlX21hdGNoID0gb3MucGF0aC5ub3JtY2FzZShmaWxlX21hdGNoKQorCisgICAgICAgIGlmICIq
IiBpbiBlcnJvcl90eXBlczoKKyAgICAgICAgICAgIGlnbm9yZWRfZmlsZXMuYWRkKGZpbGVfbWF0
Y2gpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3IgZXJyb3JfdHlwZSBpbiBlcnJvcl90
eXBlczoKKyAgICAgICAgICAgICAgICBkYXRhW2Vycm9yX3R5cGVdW2ZpbGVfbWF0Y2hdLmFkZChs
aW5lX251bWJlcikKKworICAgIHJldHVybiBkYXRhLCBpZ25vcmVkX2ZpbGVzCisKKworZGVmIGZp
bHRlcl93aGl0ZWxpc3RfZXJyb3JzKGRhdGEsIGVycm9ycyk6CisgICAgIiIiCisgICAgRmlsdGVy
IG91dCB0aG9zZSBlcnJvcnMgdGhhdCBhcmUgd2hpdGVsaXN0ZWQgaW4gYGRhdGFgLgorICAgICIi
IgorCisgICAgaWYgbm90IGVycm9yczoKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICB3aGl0ZWxp
c3RlZCA9IFtGYWxzZSBmb3IgaXRlbSBpbiByYW5nZShsZW4oZXJyb3JzKSldCisKKyAgICBmb3Ig
aSwgKGVycm9yX3R5cGUsIG1zZywgcGF0aCwgbGluZSkgaW4gZW51bWVyYXRlKGVycm9ycyk6Cisg
ICAgICAgIG5vcm1wYXRoID0gb3MucGF0aC5ub3JtY2FzZShwYXRoKQorICAgICAgICBpZiBlcnJv
cl90eXBlIGluIGRhdGE6CisgICAgICAgICAgICB3bF9maWxlcyA9IGRhdGFbZXJyb3JfdHlwZV0K
KyAgICAgICAgICAgIGZvciBmaWxlX21hdGNoLCBhbGxvd2VkX2xpbmVzIGluIGl0ZXJpdGVtcyh3
bF9maWxlcyk6CisgICAgICAgICAgICAgICAgaWYgTm9uZSBpbiBhbGxvd2VkX2xpbmVzIG9yIGxp
bmUgaW4gYWxsb3dlZF9saW5lczoKKyAgICAgICAgICAgICAgICAgICAgaWYgZm5tYXRjaC5mbm1h
dGNoY2FzZShub3JtcGF0aCwgZmlsZV9tYXRjaCk6CisgICAgICAgICAgICAgICAgICAgICAgICB3
aGl0ZWxpc3RlZFtpXSA9IFRydWUKKworICAgIHJldHVybiBbaXRlbSBmb3IgaSwgaXRlbSBpbiBl
bnVtZXJhdGUoZXJyb3JzKSBpZiBub3Qgd2hpdGVsaXN0ZWRbaV1dCisKK2NsYXNzIFJlZ2V4cChv
YmplY3QpOgorICAgIHBhdHRlcm4gPSBOb25lCisgICAgZmlsZV9leHRlbnNpb25zID0gTm9uZQor
ICAgIGVycm9yID0gTm9uZQorICAgIF9yZSA9IE5vbmUKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKKyAgICAgICAgc2VsZi5fcmUgPSByZS5jb21waWxlKHNlbGYucGF0dGVybikKKworICAgIGRl
ZiBhcHBsaWVzKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gKHNlbGYuZmlsZV9leHRlbnNp
b25zIGlzIE5vbmUgb3IKKyAgICAgICAgICAgICAgICBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpWzFd
IGluIHNlbGYuZmlsZV9leHRlbnNpb25zKQorCisgICAgZGVmIHNlYXJjaChzZWxmLCBsaW5lKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX3JlLnNlYXJjaChsaW5lKQorCitjbGFzcyBUcmFpbGluZ1do
aXRlc3BhY2VSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0ZXJuID0gYiJbIFx0XGZcdl0kIgorICAg
IGVycm9yID0gIlRSQUlMSU5HIFdISVRFU1BBQ0UiCisgICAgZGVzY3JpcHRpb24gPSAiV2hpdGVz
cGFjZSBhdCBFT0wiCisKK2NsYXNzIFRhYnNSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0ZXJuID0g
YiJeXHQiCisgICAgZXJyb3IgPSAiSU5ERU5UIFRBQlMiCisgICAgZGVzY3JpcHRpb24gPSAiVGFi
cyB1c2VkIGZvciBpbmRlbnRhdGlvbiIKKworY2xhc3MgQ1JSZWdleHAoUmVnZXhwKToKKyAgICBw
YXR0ZXJuID0gYiJcciQiCisgICAgZXJyb3IgPSAiQ1IgQVQgRU9MIgorICAgIGRlc2NyaXB0aW9u
ID0gIkNSIGNoYXJhY3RlciBpbiBsaW5lIHNlcGFyYXRvciIKKworY2xhc3MgU2V0VGltZW91dFJl
Z2V4cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBiInNldFRpbWVvdXRccypcKCIKKyAgICBlcnJv
ciA9ICJTRVQgVElNRU9VVCIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0i
LCAiLmpzIiwgIi54aHQiLCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gInNl
dFRpbWVvdXQgdXNlZDsgc3RlcF90aW1lb3V0IHNob3VsZCB0eXBpY2FsbHkgYmUgdXNlZCBpbnN0
ZWFkIgorCitjbGFzcyBXM0NUZXN0T3JnUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGIi
dzNjXC10ZXN0XC5vcmciCisgICAgZXJyb3IgPSAiVzNDLVRFU1QuT1JHIgorICAgIGRlc2NyaXB0
aW9uID0gIkV4dGVybmFsIHczYy10ZXN0Lm9yZyBkb21haW4gdXNlZCIKKworY2xhc3MgV2ViUGxh
dGZvcm1UZXN0UmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGIid2ViXC1wbGF0Zm9ybVwu
dGVzdCIKKyAgICBlcnJvciA9ICJXRUItUExBVEZPUk0uVEVTVCIKKyAgICBkZXNjcmlwdGlvbiA9
ICJJbnRlcm5hbCB3ZWItcGxhdGZvcm0udGVzdCBkb21haW4gdXNlZCIKKworY2xhc3MgV2ViaWRs
MlJlZ2V4cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBiIndlYmlkbDJcLmpzIgorICAgIGVycm9y
ID0gIldFQklETDIuSlMiCisgICAgZGVzY3JpcHRpb24gPSAiTGVnYWN5IHdlYmlkbDIuanMgc2Ny
aXB0IHVzZWQiCisKK2NsYXNzIENvbnNvbGVSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0ZXJuID0g
YiJjb25zb2xlXC5bYS16QS1aXStccypcKCIKKyAgICBlcnJvciA9ICJDT05TT0xFIgorICAgIGZp
bGVfZXh0ZW5zaW9ucyA9IFsiLmh0bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIsICIueGh0bWwi
LCAiLnN2ZyJdCisgICAgZGVzY3JpcHRpb24gPSAiQ29uc29sZSBsb2dnaW5nIEFQSSB1c2VkIgor
CitjbGFzcyBHZW5lcmF0ZVRlc3RzUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGIiZ2Vu
ZXJhdGVfdGVzdHNccypcKCIKKyAgICBlcnJvciA9ICJHRU5FUkFURV9URVNUUyIKKyAgICBmaWxl
X2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0iLCAiLmpzIiwgIi54aHQiLCAiLnhodG1sIiwg
Ii5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gImdlbmVyYXRlX3Rlc3RzIHVzZWQiCisKK2NsYXNz
IFByaW50UmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGIicHJpbnQoPzpcc3xccypcKCki
CisgICAgZXJyb3IgPSAiUFJJTlQgU1RBVEVNRU5UIgorICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsi
LnB5Il0KKyAgICBkZXNjcmlwdGlvbiA9ICJQcmludCBmdW5jdGlvbiB1c2VkIgorCitjbGFzcyBM
YXlvdXRUZXN0c1JlZ2V4cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBiImV2ZW50U2VuZGVyfHRl
c3RSdW5uZXJ8d2luZG93XC5pbnRlcm5hbHMiCisgICAgZXJyb3IgPSAiTEFZT1VUVEVTVFMgQVBJ
UyIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0iLCAiLmpzIiwgIi54aHQi
LCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gImV2ZW50U2VuZGVyL3Rlc3RS
dW5uZXIvd2luZG93LmludGVybmFscyB1c2VkOyB0aGVzZSBhcmUgTGF5b3V0VGVzdHMtc3BlY2lm
aWMgQVBJcyAoV2ViS2l0L0JsaW5rKSIKKworY2xhc3MgU3BlY2lhbFBvd2Vyc1JlZ2V4cChSZWdl
eHApOgorICAgIHBhdHRlcm4gPSBiIlNwZWNpYWxQb3dlcnMiCisgICAgZXJyb3IgPSAiU1BFQ0lB
TFBPV0VSUyBBUEkiCisgICAgZmlsZV9leHRlbnNpb25zID0gWyIuaHRtbCIsICIuaHRtIiwgIi5q
cyIsICIueGh0IiwgIi54aHRtbCIsICIuc3ZnIl0KKyAgICBkZXNjcmlwdGlvbiA9ICJTcGVjaWFs
UG93ZXJzIHVzZWQ7IHRoaXMgaXMgZ2Vja28tc3BlY2lmaWMgYW5kIG5vdCBzdXBwb3J0ZWQgaW4g
d3B0IgorCisKK3JlZ2V4cHMgPSBbaXRlbSgpIGZvciBpdGVtIGluCisgICAgICAgICAgIFtUcmFp
bGluZ1doaXRlc3BhY2VSZWdleHAsCisgICAgICAgICAgICBUYWJzUmVnZXhwLAorICAgICAgICAg
ICAgQ1JSZWdleHAsCisgICAgICAgICAgICBTZXRUaW1lb3V0UmVnZXhwLAorICAgICAgICAgICAg
VzNDVGVzdE9yZ1JlZ2V4cCwKKyAgICAgICAgICAgIFdlYlBsYXRmb3JtVGVzdFJlZ2V4cCwKKyAg
ICAgICAgICAgIFdlYmlkbDJSZWdleHAsCisgICAgICAgICAgICBDb25zb2xlUmVnZXhwLAorICAg
ICAgICAgICAgR2VuZXJhdGVUZXN0c1JlZ2V4cCwKKyAgICAgICAgICAgIFByaW50UmVnZXhwLAor
ICAgICAgICAgICAgTGF5b3V0VGVzdHNSZWdleHAsCisgICAgICAgICAgICBTcGVjaWFsUG93ZXJz
UmVnZXhwXV0KKworZGVmIGNoZWNrX3JlZ2V4cF9saW5lKHJlcG9fcm9vdCwgcGF0aCwgZik6Cisg
ICAgZXJyb3JzID0gW10KKworICAgIGFwcGxpY2FibGVfcmVnZXhwcyA9IFtyZWdleHAgZm9yIHJl
Z2V4cCBpbiByZWdleHBzIGlmIHJlZ2V4cC5hcHBsaWVzKHBhdGgpXQorCisgICAgZm9yIGksIGxp
bmUgaW4gZW51bWVyYXRlKGYpOgorICAgICAgICBmb3IgcmVnZXhwIGluIGFwcGxpY2FibGVfcmVn
ZXhwczoKKyAgICAgICAgICAgIGlmIHJlZ2V4cC5zZWFyY2gobGluZSk6CisgICAgICAgICAgICAg
ICAgZXJyb3JzLmFwcGVuZCgocmVnZXhwLmVycm9yLCByZWdleHAuZGVzY3JpcHRpb24sIHBhdGgs
IGkrMSkpCisKKyAgICByZXR1cm4gZXJyb3JzCisKK2RlZiBjaGVja19wYXJzZWQocmVwb19yb290
LCBwYXRoLCBmKToKKyAgICBzb3VyY2VfZmlsZSA9IFNvdXJjZUZpbGUocmVwb19yb290LCBwYXRo
LCAiLyIsIGNvbnRlbnRzPWYucmVhZCgpKQorCisgICAgZXJyb3JzID0gW10KKworICAgIGlmIHBh
dGguc3RhcnRzd2l0aCgiY3NzLyIpOgorICAgICAgICBpZiAoc291cmNlX2ZpbGUudHlwZSA9PSAi
c3VwcG9ydCIgYW5kCisgICAgICAgICAgICBub3Qgc291cmNlX2ZpbGUubmFtZV9pc19ub25fdGVz
dCBhbmQKKyAgICAgICAgICAgIG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX3JlZmVyZW5jZSk6Cisg
ICAgICAgICAgICByZXR1cm4gWygiU1VQUE9SVC1XUk9ORy1ESVIiLCAiU3VwcG9ydCBmaWxlIG5v
dCBpbiBzdXBwb3J0IGRpcmVjdG9yeSIsIHBhdGgsIE5vbmUpXQorCisgICAgICAgIGlmIChzb3Vy
Y2VfZmlsZS50eXBlICE9ICJzdXBwb3J0IiBhbmQKKyAgICAgICAgICAgIG5vdCBzb3VyY2VfZmls
ZS5uYW1lX2lzX3JlZmVyZW5jZSBhbmQKKyAgICAgICAgICAgIG5vdCBzb3VyY2VfZmlsZS5zcGVj
X2xpbmtzKToKKyAgICAgICAgICAgIHJldHVybiBbKCJNSVNTSU5HLUxJTksiLCAiVGVzdGNhc2Ug
ZmlsZSBtdXN0IGhhdmUgYSBsaW5rIHRvIGEgc3BlYyIsIHBhdGgsIE5vbmUpXQorCisgICAgaWYg
c291cmNlX2ZpbGUubmFtZV9pc19ub25fdGVzdCBvciBzb3VyY2VfZmlsZS5uYW1lX2lzX21hbnVh
bDoKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBpZiBzb3VyY2VfZmlsZS5tYXJrdXBfdHlwZSBp
cyBOb25lOgorICAgICAgICByZXR1cm4gW10KKworICAgIGlmIHNvdXJjZV9maWxlLnJvb3QgaXMg
Tm9uZToKKyAgICAgICAgcmV0dXJuIFsoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2Ug
ZmlsZSIsIHBhdGgsIE5vbmUpXQorCisgICAgaWYgc291cmNlX2ZpbGUudHlwZSA9PSAibWFudWFs
IiBhbmQgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfbWFudWFsOgorICAgICAgICByZXR1cm4gWygi
Q09OVEVOVC1NQU5VQUwiLCAiTWFudWFsIHRlc3Qgd2hvc2UgZmlsZW5hbWUgZG9lc24ndCBlbmQg
aW4gJy1tYW51YWwnIiwgcGF0aCwgTm9uZSldCisKKyAgICBpZiBzb3VyY2VfZmlsZS50eXBlID09
ICJ2aXN1YWwiIGFuZCBub3Qgc291cmNlX2ZpbGUubmFtZV9pc192aXN1YWw6CisgICAgICAgIHJl
dHVybiBbKCJDT05URU5ULVZJU1VBTCIsICJWaXN1YWwgdGVzdCB3aG9zZSBmaWxlbmFtZSBkb2Vz
bid0IGVuZCBpbiAnLXZpc3VhbCciLCBwYXRoLCBOb25lKV0KKworICAgIGZvciByZWZ0ZXN0X25v
ZGUgaW4gc291cmNlX2ZpbGUucmVmdGVzdF9ub2RlczoKKyAgICAgICAgaHJlZiA9IHJlZnRlc3Rf
bm9kZS5hdHRyaWIuZ2V0KCJocmVmIiwgIiIpLnN0cmlwKHNwYWNlX2NoYXJzKQorICAgICAgICBw
YXJ0cyA9IHVybHNwbGl0KGhyZWYpCisgICAgICAgIGlmIHBhcnRzLnNjaGVtZSBvciBwYXJ0cy5u
ZXRsb2M6CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgiQUJTT0xVVEUtVVJMLVJFRiIsCisg
ICAgICAgICAgICAgICAgICAgICAiUmVmZXJlbmNlIHRlc3Qgd2l0aCBhIHJlZmVyZW5jZSBmaWxl
IHNwZWNpZmllZCB2aWEgYW4gYWJzb2x1dGUgVVJMOiAnJXMnIiAlIGhyZWYsIHBhdGgsIE5vbmUp
KQorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICByZWZfdXJsID0gdXJsam9pbihzb3Vy
Y2VfZmlsZS51cmwsIGhyZWYpCisgICAgICAgIHJlZl9wYXJ0cyA9IHVybHNwbGl0KHJlZl91cmwp
CisKKyAgICAgICAgaWYgc291cmNlX2ZpbGUudXJsID09IHJlZl91cmw6CisgICAgICAgICAgICBl
cnJvcnMuYXBwZW5kKCgiU0FNRS1GSUxFLVJFRiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiUmVmZXJlbmNlIHRlc3Qgd2hpY2ggcG9pbnRzIGF0IGl0c2VsZiBhcyBhIHJlZmVyZW5jZSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTm9uZSkpCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGFzc2VydCByZWZf
cGFydHMucGF0aCAhPSAiIgorCisgICAgICAgIHJlZmVyZW5jZV9maWxlID0gb3MucGF0aC5qb2lu
KHJlcG9fcm9vdCwgcmVmX3BhcnRzLnBhdGhbMTpdKQorICAgICAgICByZWZlcmVuY2VfcmVsID0g
cmVmdGVzdF9ub2RlLmF0dHJpYi5nZXQoInJlbCIsICIiKQorCisgICAgICAgIGlmIG5vdCBvcy5w
YXRoLmlzZmlsZShyZWZlcmVuY2VfZmlsZSk6CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgi
Tk9OLUVYSVNURU5ULVJFRiIsCisgICAgICAgICAgICAgICAgICAgICAiUmVmZXJlbmNlIHRlc3Qg
d2l0aCBhIG5vbi1leGlzdGVudCAnJXMnIHJlbGF0aW9uc2hpcCByZWZlcmVuY2U6ICclcyciICUg
KHJlZmVyZW5jZV9yZWwsIGhyZWYpLCBwYXRoLCBOb25lKSkKKworICAgIGlmIGxlbihzb3VyY2Vf
ZmlsZS50aW1lb3V0X25vZGVzKSA+IDE6CisgICAgICAgIGVycm9ycy5hcHBlbmQoKCJNVUxUSVBM
RS1USU1FT1VUIiwgIk1vcmUgdGhhbiBvbmUgbWV0YSBuYW1lPSd0aW1lb3V0JyIsIHBhdGgsIE5v
bmUpKQorCisgICAgZm9yIHRpbWVvdXRfbm9kZSBpbiBzb3VyY2VfZmlsZS50aW1lb3V0X25vZGVz
OgorICAgICAgICB0aW1lb3V0X3ZhbHVlID0gdGltZW91dF9ub2RlLmF0dHJpYi5nZXQoImNvbnRl
bnQiLCAiIikubG93ZXIoKQorICAgICAgICBpZiB0aW1lb3V0X3ZhbHVlICE9ICJsb25nIjoKKyAg
ICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJJTlZBTElELVRJTUVPVVQiLCAiSW52YWxpZCB0aW1l
b3V0IHZhbHVlICVzIiAlIHRpbWVvdXRfdmFsdWUsIHBhdGgsIE5vbmUpKQorCisgICAgaWYgc291
cmNlX2ZpbGUudGVzdGhhcm5lc3Nfbm9kZXM6CisgICAgICAgIGlmIGxlbihzb3VyY2VfZmlsZS50
ZXN0aGFybmVzc19ub2RlcykgPiAxOgorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIk1VTFRJ
UExFLVRFU1RIQVJORVNTIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIHRoYW4g
b25lIDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz4iLCBwYXRoLCBOb25l
KSkKKworICAgICAgICB0ZXN0aGFybmVzc3JlcG9ydF9ub2RlcyA9IHNvdXJjZV9maWxlLnJvb3Qu
ZmluZGFsbCgiLi8ve2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWx9c2NyaXB0W0BzcmM9Jy9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnXSIpCisgICAgICAgIGlmIG5vdCB0ZXN0aGFy
bmVzc3JlcG9ydF9ub2RlczoKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJNSVNTSU5HLVRF
U1RIQVJORVNTUkVQT1JUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaXNzaW5nIDxz
Y3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz4iLCBwYXRoLCBOb25l
KSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGxlbih0ZXN0aGFybmVzc3JlcG9ydF9u
b2RlcykgPiAxOgorICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJNVUxUSVBMRS1URVNU
SEFSTkVTU1JFUE9SVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vcmUgdGhh
biBvbmUgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPiIsIHBh
dGgsIE5vbmUpKQorCisgICAgICAgIHRlc3RoYXJuZXNzY3NzX25vZGVzID0gc291cmNlX2ZpbGUu
cm9vdC5maW5kYWxsKCIuLy97aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbH1saW5rW0BocmVm
PScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyddIikKKyAgICAgICAgaWYgdGVzdGhhcm5lc3Nj
c3Nfbm9kZXM6CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgiUFJFU0VOVC1URVNUSEFSTkVT
U0NTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwbGljaXQgbGluayB0byB0ZXN0
aGFybmVzcy5jc3MgcHJlc2VudCIsIHBhdGgsIE5vbmUpKQorCisgICAgICAgIGZvciBlbGVtZW50
IGluIHNvdXJjZV9maWxlLnZhcmlhbnRfbm9kZXM6CisgICAgICAgICAgICBpZiAiY29udGVudCIg
bm90IGluIGVsZW1lbnQuYXR0cmliOgorICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJW
QVJJQU5ULU1JU1NJTkciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bWV0YSBu
YW1lPXZhcmlhbnQ+IG1pc3NpbmcgJ2NvbnRlbnQnIGF0dHJpYnV0ZSIsIHBhdGgsIE5vbmUpKQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB2YXJpYW50ID0gZWxlbWVudC5hdHRy
aWJbImNvbnRlbnQiXQorICAgICAgICAgICAgICAgIGlmIHZhcmlhbnQgIT0gIiIgYW5kIHZhcmlh
bnRbMF0gbm90IGluICgiPyIsICIjIik6CisgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBl
bmQoKCJNQUxGT1JNRUQtVkFSSUFOVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiVzIDxtZXRhIG5hbWU9dmFyaWFudD4gJ2NvbnRlbnQnIGF0dHJpYnV0ZSBtdXN0IGJlIHRoZSBl
bXB0eSBzdHJpbmcgb3Igc3RhcnQgd2l0aCAnPycgb3IgJyMnIiAlIHBhdGgsIE5vbmUpKQorCisg
ICAgICAgIHNlZW5fZWxlbWVudHMgPSB7InRpbWVvdXQiOiBGYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAidGVzdGhhcm5lc3MiOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAidGVzdGhhcm5lc3NyZXBvcnQiOiBGYWxzZX0KKyAgICAgICAgcmVxdWlyZWRfZWxlbWVudHMg
PSBba2V5IGZvciBrZXksIHZhbHVlIGluIHsidGVzdGhhcm5lc3MiOiBUcnVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0aGFybmVzc3Jl
cG9ydCI6IGxlbih0ZXN0aGFybmVzc3JlcG9ydF9ub2RlcykgPiAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IjogbGVuKHNvdXJj
ZV9maWxlLnRpbWVvdXRfbm9kZXMpID4gMH0uaXRlbXMoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiB2YWx1ZV0KKworICAgICAgICBmb3IgZWxlbSBpbiBzb3VyY2VfZmlsZS5yb290
Lml0ZXIoKToKKyAgICAgICAgICAgIGlmIHNvdXJjZV9maWxlLnRpbWVvdXRfbm9kZXMgYW5kIGVs
ZW0gPT0gc291cmNlX2ZpbGUudGltZW91dF9ub2Rlc1swXToKKyAgICAgICAgICAgICAgICBzZWVu
X2VsZW1lbnRzWyJ0aW1lb3V0Il0gPSBUcnVlCisgICAgICAgICAgICAgICAgaWYgc2Vlbl9lbGVt
ZW50c1sidGVzdGhhcm5lc3MiXToKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgo
IkxBVEUtVElNRU9VVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bWV0
YSBuYW1lPXRpbWVvdXQ+IHNlZW4gYWZ0ZXIgdGVzdGhhcm5lc3MuanMgc2NyaXB0IiwgcGF0aCwg
Tm9uZSkpCisKKyAgICAgICAgICAgIGVsaWYgZWxlbSA9PSBzb3VyY2VfZmlsZS50ZXN0aGFybmVz
c19ub2Rlc1swXToKKyAgICAgICAgICAgICAgICBzZWVuX2VsZW1lbnRzWyJ0ZXN0aGFybmVzcyJd
ID0gVHJ1ZQorCisgICAgICAgICAgICBlbGlmIHRlc3RoYXJuZXNzcmVwb3J0X25vZGVzIGFuZCBl
bGVtID09IHRlc3RoYXJuZXNzcmVwb3J0X25vZGVzWzBdOgorICAgICAgICAgICAgICAgIHNlZW5f
ZWxlbWVudHNbInRlc3RoYXJuZXNzcmVwb3J0Il0gPSBUcnVlCisgICAgICAgICAgICAgICAgaWYg
bm90IHNlZW5fZWxlbWVudHNbInRlc3RoYXJuZXNzIl06CisgICAgICAgICAgICAgICAgICAgIGVy
cm9ycy5hcHBlbmQoKCJFQVJMWS1URVNUSEFSTkVTU1JFUE9SVCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0ZXN0aGFybmVzc3JlcG9ydC5qcyBzY3JpcHQgc2VlbiBiZWZv
cmUgdGVzdGhhcm5lc3MuanMgc2NyaXB0IiwgcGF0aCwgTm9uZSkpCisKKyAgICAgICAgICAgIGlm
IGFsbChzZWVuX2VsZW1lbnRzW25hbWVdIGZvciBuYW1lIGluIHJlcXVpcmVkX2VsZW1lbnRzKToK
KyAgICAgICAgICAgICAgICBicmVhaworCisgICAgaWYgc291cmNlX2ZpbGUudGVzdGRyaXZlcl9u
b2RlczoKKyAgICAgICAgaWYgbGVuKHNvdXJjZV9maWxlLnRlc3Rkcml2ZXJfbm9kZXMpID4gMToK
KyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJNVUxUSVBMRS1URVNURFJJVkVSIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJNb3JlIHRoYW4gb25lIDxzY3JpcHQgc3JjPScvcmVzb3Vy
Y2VzL3Rlc3Rkcml2ZXIuanMnPiIsIHBhdGgsIE5vbmUpKQorCisgICAgICAgIHRlc3Rkcml2ZXJf
dmVuZG9yX25vZGVzID0gc291cmNlX2ZpbGUucm9vdC5maW5kYWxsKCIuLy97aHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbH1zY3JpcHRbQHNyYz0nL3Jlc291cmNlcy90ZXN0ZHJpdmVyLXZlbmRv
ci5qcyddIikKKyAgICAgICAgaWYgbm90IHRlc3Rkcml2ZXJfdmVuZG9yX25vZGVzOgorICAgICAg
ICAgICAgZXJyb3JzLmFwcGVuZCgoIk1JU1NJTkctVEVTVERSSVZFUi1WRU5ET1IiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIk1pc3NpbmcgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVz
dGRyaXZlci12ZW5kb3IuanMnPiIsIHBhdGgsIE5vbmUpKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgaWYgbGVuKHRlc3Rkcml2ZXJfdmVuZG9yX25vZGVzKSA+IDE6CisgICAgICAgICAgICAg
ICAgZXJyb3JzLmFwcGVuZCgoIk1VTFRJUExFLVRFU1REUklWRVItVkVORE9SIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSB0aGFuIG9uZSA8c2NyaXB0IHNyYz0nL3Jlc291
cmNlcy90ZXN0ZHJpdmVyLXZlbmRvci5qcyc+IiwgcGF0aCwgTm9uZSkpCisKKyAgICBmb3IgZWxl
bWVudCBpbiBzb3VyY2VfZmlsZS5yb290LmZpbmRhbGwoIi4vL3todHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sfXNjcmlwdFtAc3JjXSIpOgorICAgICAgICBzcmMgPSBlbGVtZW50LmF0dHJpYlsi
c3JjIl0KKyAgICAgICAgZm9yIG5hbWUgaW4gWyJ0ZXN0aGFybmVzcyIsICJ0ZXN0aGFybmVzc3Jl
cG9ydCIsICJ0ZXN0ZHJpdmVyIiwgInRlc3Rkcml2ZXItdmVuZG9yIl06CisgICAgICAgICAgICBp
ZiAiJXMuanMiICUgbmFtZSA9PSBzcmMgb3IgKCIvJXMuanMiICUgbmFtZSBpbiBzcmMgYW5kIHNy
YyAhPSAiL3Jlc291cmNlcy8lcy5qcyIgJSBuYW1lKToKKyAgICAgICAgICAgICAgICBlcnJvcnMu
YXBwZW5kKCgiJXMtUEFUSCIgJSBuYW1lLnVwcGVyKCksICIlcy5qcyBzY3JpcHQgc2VlbiB3aXRo
IGluY29ycmVjdCBwYXRoIiAlIG5hbWUsIHBhdGgsIE5vbmUpKQorCisgICAgcmV0dXJuIGVycm9y
cworCitjbGFzcyBBU1RDaGVjayhvYmplY3QpOgorICAgIF9fbWV0YWNsYXNzX18gPSBhYmMuQUJD
TWV0YQorICAgIGVycm9yID0gTm9uZQorICAgIGRlc2NyaXB0aW9uID0gTm9uZQorCisgICAgQGFi
Yy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBjaGVjayhzZWxmLCByb290KToKKyAgICAgICAgcGFz
cworCitjbGFzcyBPcGVuTW9kZUNoZWNrKEFTVENoZWNrKToKKyAgICBlcnJvciA9ICJPUEVOLU5P
LU1PREUiCisgICAgZGVzY3JpcHRpb24gPSAiRmlsZSBvcGVuZWQgd2l0aG91dCBwcm92aWRpbmcg
YW4gZXhwbGljaXQgbW9kZSAobm90ZTogYmluYXJ5IGZpbGVzIG11c3QgYmUgcmVhZCB3aXRoICdi
JyBpbiB0aGUgbW9kZSBmbGFncykiCisKKyAgICBkZWYgY2hlY2soc2VsZiwgcm9vdCk6CisgICAg
ICAgIGVycm9ycyA9IFtdCisgICAgICAgIGZvciBub2RlIGluIGFzdC53YWxrKHJvb3QpOgorICAg
ICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBhc3QuQ2FsbCk6CisgICAgICAgICAgICAgICAg
aWYgaGFzYXR0cihub2RlLmZ1bmMsICJpZCIpIGFuZCBub2RlLmZ1bmMuaWQgaW4gKCJvcGVuIiwg
ImZpbGUiKToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxlbihub2RlLmFyZ3MpIDwgMiBhbmQK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFsbChpdGVtLmFyZyAhPSAibW9kZSIgZm9yIGl0ZW0g
aW4gbm9kZS5rZXl3b3JkcykpOgorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVu
ZChub2RlLmxpbmVubykKKyAgICAgICAgcmV0dXJuIGVycm9ycworCithc3RfY2hlY2tlcnMgPSBb
aXRlbSgpIGZvciBpdGVtIGluIFtPcGVuTW9kZUNoZWNrXV0KKworZGVmIGNoZWNrX3B5dGhvbl9h
c3QocmVwb19yb290LCBwYXRoLCBmKToKKyAgICBpZiBub3QgcGF0aC5lbmRzd2l0aCgiLnB5Iik6
CisgICAgICAgIHJldHVybiBbXQorCisgICAgdHJ5OgorICAgICAgICByb290ID0gYXN0LnBhcnNl
KGYucmVhZCgpKQorICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBlOgorICAgICAgICByZXR1cm4g
WygiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgcGF0aCwgZS5saW5lbm8p
XQorCisgICAgZXJyb3JzID0gW10KKyAgICBmb3IgY2hlY2tlciBpbiBhc3RfY2hlY2tlcnM6Cisg
ICAgICAgIGZvciBsaW5lbm8gaW4gY2hlY2tlci5jaGVjayhyb290KToKKyAgICAgICAgICAgIGVy
cm9ycy5hcHBlbmQoKGNoZWNrZXIuZXJyb3IsIGNoZWNrZXIuZGVzY3JpcHRpb24sIHBhdGgsIGxp
bmVubykpCisgICAgcmV0dXJuIGVycm9ycworCisKK2Jyb2tlbl9qc19tZXRhZGF0YSA9IHJlLmNv
bXBpbGUoYiIvL1xzKk1FVEE6IikKK2Jyb2tlbl9weXRob25fbWV0YWRhdGEgPSByZS5jb21waWxl
KGIiI1xzKk1FVEE6IikKKworCitkZWYgY2hlY2tfc2NyaXB0X21ldGFkYXRhKHJlcG9fcm9vdCwg
cGF0aCwgZik6CisgICAgaWYgcGF0aC5lbmRzd2l0aCgoIi53b3JrZXIuanMiLCAiLmFueS5qcyIp
KToKKyAgICAgICAgbWV0YV9yZSA9IGpzX21ldGFfcmUKKyAgICAgICAgYnJva2VuX21ldGFkYXRh
ID0gYnJva2VuX2pzX21ldGFkYXRhCisgICAgZWxpZiBwYXRoLmVuZHN3aXRoKCIucHkiKToKKyAg
ICAgICAgbWV0YV9yZSA9IHB5dGhvbl9tZXRhX3JlCisgICAgICAgIGJyb2tlbl9tZXRhZGF0YSA9
IGJyb2tlbl9weXRob25fbWV0YWRhdGEKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gW10KKwor
ICAgIGRvbmUgPSBGYWxzZQorICAgIGVycm9ycyA9IFtdCisgICAgZm9yIGlkeCwgbGluZSBpbiBl
bnVtZXJhdGUoZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGxpbmUsIGJpbmFyeV90eXBl
KSwgbGluZQorCisgICAgICAgIG0gPSBtZXRhX3JlLm1hdGNoKGxpbmUpCisgICAgICAgIGlmIG06
CisgICAgICAgICAgICBrZXksIHZhbHVlID0gbS5ncm91cHMoKQorICAgICAgICAgICAgaWYga2V5
ID09IGIidGltZW91dCI6CisgICAgICAgICAgICAgICAgaWYgdmFsdWUgIT0gYiJsb25nIjoKKyAg
ICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIlVOS05PV04tVElNRU9VVC1NRVRBREFU
QSIsICJVbmV4cGVjdGVkIHZhbHVlIGZvciB0aW1lb3V0IG1ldGFkYXRhIiwgcGF0aCwgaWR4ICsg
MSkpCisgICAgICAgICAgICBlbGlmIGtleSA9PSBiInNjcmlwdCI6CisgICAgICAgICAgICAgICAg
cGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgi
VU5LTk9XTi1NRVRBREFUQSIsICJVbmV4cGVjdGVkIGtpbmQgb2YgbWV0YWRhdGEiLCBwYXRoLCBp
ZHggKyAxKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRvbmUgPSBUcnVlCisKKyAgICAg
ICAgaWYgZG9uZToKKyAgICAgICAgICAgIGlmIG1ldGFfcmUubWF0Y2gobGluZSk6CisgICAgICAg
ICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIlNUUkFZLU1FVEFEQVRBIiwgIk1ldGFkYXRhIGNvbW1l
bnRzIHNob3VsZCBzdGFydCB0aGUgZmlsZSIsIHBhdGgsIGlkeCArIDEpKQorICAgICAgICAgICAg
ZWxpZiBtZXRhX3JlLnNlYXJjaChsaW5lKToKKyAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5k
KCgiSU5ERU5URUQtTUVUQURBVEEiLCAiTWV0YWRhdGEgY29tbWVudHMgc2hvdWxkIHN0YXJ0IHRo
ZSBsaW5lIiwgcGF0aCwgaWR4ICsgMSkpCisgICAgICAgICAgICBlbGlmIGJyb2tlbl9tZXRhZGF0
YS5zZWFyY2gobGluZSk6CisgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIkJST0tFTi1N
RVRBREFUQSIsICJNZXRhZGF0YSBjb21tZW50IGlzIG5vdCBmb3JtYXR0ZWQgY29ycmVjdGx5Iiwg
cGF0aCwgaWR4ICsgMSkpCisKKyAgICByZXR1cm4gZXJyb3JzCisKKworZGVmIGNoZWNrX3BhdGgo
cmVwb19yb290LCBwYXRoKToKKyAgICAiIiIKKyAgICBSdW5zIGxpbnRzIHRoYXQgY2hlY2sgdGhl
IGZpbGUgcGF0aC4KKworICAgIDpwYXJhbSByZXBvX3Jvb3Q6IHRoZSByZXBvc2l0b3J5IHJvb3QK
KyAgICA6cGFyYW0gcGF0aDogdGhlIHBhdGggb2YgdGhlIGZpbGUgd2l0aGluIHRoZSByZXBvc2l0
b3J5CisgICAgOnJldHVybnM6IGEgbGlzdCBvZiBlcnJvcnMgZm91bmQgaW4gYGBwYXRoYGAKKyAg
ICAiIiIKKworICAgIGVycm9ycyA9IFtdCisgICAgZm9yIHBhdGhfZm4gaW4gcGF0aF9saW50czoK
KyAgICAgICAgZXJyb3JzLmV4dGVuZChwYXRoX2ZuKHJlcG9fcm9vdCwgcGF0aCkpCisgICAgcmV0
dXJuIGVycm9ycworCisKK2RlZiBjaGVja19hbGxfcGF0aHMocmVwb19yb290LCBwYXRocyk6Cisg
ICAgIiIiCisgICAgUnVucyBsaW50cyB0aGF0IGNoZWNrIGFsbCBwYXRocyBnbG9iYWxseS4KKwor
ICAgIDpwYXJhbSByZXBvX3Jvb3Q6IHRoZSByZXBvc2l0b3J5IHJvb3QKKyAgICA6cGFyYW0gcGF0
aHM6IGEgbGlzdCBvZiBhbGwgdGhlIHBhdGhzIHdpdGhpbiB0aGUgcmVwb3NpdG9yeQorICAgIDpy
ZXR1cm5zOiBhIGxpc3Qgb2YgZXJyb3JzIGZvdW5kIGluIGBgZmBgCisgICAgIiIiCisKKyAgICBl
cnJvcnMgPSBbXQorICAgIGZvciBwYXRoc19mbiBpbiBhbGxfcGF0aHNfbGludHM6CisgICAgICAg
IGVycm9ycy5leHRlbmQocGF0aHNfZm4ocmVwb19yb290LCBwYXRocykpCisgICAgcmV0dXJuIGVy
cm9ycworCisKK2RlZiBjaGVja19maWxlX2NvbnRlbnRzKHJlcG9fcm9vdCwgcGF0aCwgZik6Cisg
ICAgIiIiCisgICAgUnVucyBsaW50cyB0aGF0IGNoZWNrIHRoZSBmaWxlIGNvbnRlbnRzLgorCisg
ICAgOnBhcmFtIHJlcG9fcm9vdDogdGhlIHJlcG9zaXRvcnkgcm9vdAorICAgIDpwYXJhbSBwYXRo
OiB0aGUgcGF0aCBvZiB0aGUgZmlsZSB3aXRoaW4gdGhlIHJlcG9zaXRvcnkKKyAgICA6cGFyYW0g
ZjogYSBmaWxlLWxpa2Ugb2JqZWN0IHdpdGggdGhlIGZpbGUgY29udGVudHMKKyAgICA6cmV0dXJu
czogYSBsaXN0IG9mIGVycm9ycyBmb3VuZCBpbiBgYGZgYAorICAgICIiIgorCisgICAgZXJyb3Jz
ID0gW10KKyAgICBmb3IgZmlsZV9mbiBpbiBmaWxlX2xpbnRzOgorICAgICAgICBlcnJvcnMuZXh0
ZW5kKGZpbGVfZm4ocmVwb19yb290LCBwYXRoLCBmKSkKKyAgICAgICAgZi5zZWVrKDApCisgICAg
cmV0dXJuIGVycm9ycworCisKK2RlZiBvdXRwdXRfZXJyb3JzX3RleHQoZXJyb3JzKToKKyAgICBm
b3IgZXJyb3JfdHlwZSwgZGVzY3JpcHRpb24sIHBhdGgsIGxpbmVfbnVtYmVyIGluIGVycm9yczoK
KyAgICAgICAgcG9zX3N0cmluZyA9IHBhdGgKKyAgICAgICAgaWYgbGluZV9udW1iZXI6CisgICAg
ICAgICAgICBwb3Nfc3RyaW5nICs9ICI6JXMiICUgbGluZV9udW1iZXIKKyAgICAgICAgbG9nZ2Vy
LmVycm9yKCIlczogJXMgKCVzKSIgJSAocG9zX3N0cmluZywgZGVzY3JpcHRpb24sIGVycm9yX3R5
cGUpKQorCisKK2RlZiBvdXRwdXRfZXJyb3JzX21hcmtkb3duKGVycm9ycyk6CisgICAgaWYgbm90
IGVycm9yczoKKyAgICAgICAgcmV0dXJuCisgICAgaGVhZGluZyA9ICIiIkdvdCBsaW50IGVycm9y
czoKKworfCBFcnJvciBUeXBlIHwgUG9zaXRpb24gfCBNZXNzYWdlIHwKK3wtLS0tLS0tLS0tLS18
LS0tLS0tLS0tLXwtLS0tLS0tLS18IiIiCisgICAgZm9yIGxpbmUgaW4gaGVhZGluZy5zcGxpdCgi
XG4iKToKKyAgICAgICAgbG9nZ2VyLmVycm9yKGxpbmUpCisgICAgZm9yIGVycm9yX3R5cGUsIGRl
c2NyaXB0aW9uLCBwYXRoLCBsaW5lX251bWJlciBpbiBlcnJvcnM6CisgICAgICAgIHBvc19zdHJp
bmcgPSBwYXRoCisgICAgICAgIGlmIGxpbmVfbnVtYmVyOgorICAgICAgICAgICAgcG9zX3N0cmlu
ZyArPSAiOiVzIiAlIGxpbmVfbnVtYmVyCisgICAgICAgIGxvZ2dlci5lcnJvcigiJXMgfCAlcyB8
ICVzIHwiICUgKGVycm9yX3R5cGUsIHBvc19zdHJpbmcsIGRlc2NyaXB0aW9uKSkKKworCitkZWYg
b3V0cHV0X2Vycm9yc19qc29uKGVycm9ycyk6CisgICAgZm9yIGVycm9yX3R5cGUsIGVycm9yLCBw
YXRoLCBsaW5lX251bWJlciBpbiBlcnJvcnM6CisgICAgICAgIHByaW50KGpzb24uZHVtcHMoeyJw
YXRoIjogcGF0aCwgImxpbmVubyI6IGxpbmVfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAicnVsZSI6IGVycm9yX3R5cGUsICJtZXNzYWdlIjogZXJyb3J9KSkKKworCitkZWYgb3V0
cHV0X2Vycm9yX2NvdW50KGVycm9yX2NvdW50KToKKyAgICBpZiBub3QgZXJyb3JfY291bnQ6Cisg
ICAgICAgIHJldHVybgorCisgICAgYnlfdHlwZSA9ICIgIi5qb2luKCIlczogJWQiICUgaXRlbSBm
b3IgaXRlbSBpbiBlcnJvcl9jb3VudC5pdGVtcygpKQorICAgIGNvdW50ID0gc3VtKGVycm9yX2Nv
dW50LnZhbHVlcygpKQorICAgIGxvZ2dlci5pbmZvKCIiKQorICAgIGlmIGNvdW50ID09IDE6Cisg
ICAgICAgIGxvZ2dlci5pbmZvKCJUaGVyZSB3YXMgMSBlcnJvciAoJXMpIiAlIChieV90eXBlLCkp
CisgICAgZWxzZToKKyAgICAgICAgbG9nZ2VyLmluZm8oIlRoZXJlIHdlcmUgJWQgZXJyb3JzICgl
cykiICUgKGNvdW50LCBieV90eXBlKSkKKworCitkZWYgY2hhbmdlZF9maWxlcyh3cHRfcm9vdCk6
CisgICAgcmV2aXNoID0gdGVzdGZpbGVzLmdldF9yZXZpc2gocmV2aXNoPU5vbmUpCisgICAgY2hh
bmdlZCwgXyA9IHRlc3RmaWxlcy5maWxlc19jaGFuZ2VkKHJldmlzaCwgc2V0KCksIGluY2x1ZGVf
dW5jb21taXR0ZWQ9VHJ1ZSwgaW5jbHVkZV9uZXc9VHJ1ZSkKKyAgICByZXR1cm4gW29zLnBhdGgu
cmVscGF0aChpdGVtLCB3cHRfcm9vdCkgZm9yIGl0ZW0gaW4gY2hhbmdlZF0KKworCitkZWYgbGlu
dF9wYXRocyhrd2FyZ3MsIHdwdF9yb290KToKKyAgICBpZiBrd2FyZ3MuZ2V0KCJwYXRocyIpOgor
ICAgICAgICByID0gb3MucGF0aC5yZWFscGF0aCh3cHRfcm9vdCkKKyAgICAgICAgcGF0aHMgPSBb
b3MucGF0aC5yZWxwYXRoKG9zLnBhdGgucmVhbHBhdGgoeCksIHIpIGZvciB4IGluIGt3YXJnc1si
cGF0aHMiXV0KKyAgICBlbGlmIGt3YXJnc1siYWxsIl06CisgICAgICAgIHBhdGhzID0gbGlzdChh
bGxfZmlsZXN5c3RlbV9wYXRocyh3cHRfcm9vdCkpCisgICAgZWxzZToKKyAgICAgICAgY2hhbmdl
ZF9wYXRocyA9IGNoYW5nZWRfZmlsZXMod3B0X3Jvb3QpCisgICAgICAgIGZvcmNlX2FsbCA9IEZh
bHNlCisgICAgICAgICMgSWYgd2UgY2hhbmdlZCB0aGUgbGludCBpdHNlbGYgZW5zdXJlIHRoYXQg
d2UgcmV0ZXN0IGV2ZXJ5dGhpbmcKKyAgICAgICAgZm9yIHBhdGggaW4gY2hhbmdlZF9wYXRoczoK
KyAgICAgICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2Uob3MucGF0aC5zZXAsICIvIikKKyAgICAg
ICAgICAgIGlmIHBhdGggPT0gImxpbnQud2hpdGVsaXN0IiBvciBwYXRoLnN0YXJ0c3dpdGgoInRv
b2xzL2xpbnQvIik6CisgICAgICAgICAgICAgICAgZm9yY2VfYWxsID0gVHJ1ZQorICAgICAgICAg
ICAgICAgIGJyZWFrCisgICAgICAgIHBhdGhzID0gKGxpc3QoY2hhbmdlZF9wYXRocykgaWYgbm90
IGZvcmNlX2FsbAorICAgICAgICAgICAgICAgICBlbHNlIGxpc3QoYWxsX2ZpbGVzeXN0ZW1fcGF0
aHMod3B0X3Jvb3QpKSkKKworICAgIHJldHVybiBwYXRocworCisKK2RlZiBjcmVhdGVfcGFyc2Vy
KCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoInBhdGhzIiwgbmFyZ3M9IioiLAorICAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0iTGlzdCBvZiBwYXRocyB0byBsaW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCIt
LWpzb24iLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0iT3V0cHV0IG1hY2hpbmUtcmVhZGFibGUgSlNPTiBmb3JtYXQiKQorICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoIi0tbWFya2Rvd24iLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0iT3V0cHV0IG1hcmtkb3duIikKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCItLWNzcy1tb2RlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9IlJ1biBDU1MgdGVzdHN1aXRlIHNwZWNpZmljIGxpbnRzIikKKyAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KCItLXJlcG8tcm9vdCIsIGhlbHA9IlRoZSBXUFQgZGlyZWN0b3J5LiBV
c2UgdGhpcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvcHRpb24gaWYgdGhlIGxpbnQgc2Ny
aXB0IGV4aXN0cyBvdXRzaWRlIHRoZSByZXBvc2l0b3J5IikKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCItLWFsbCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IklmIG5vIHBhdGhzIGFyZSBw
YXNzZWQsIHRyeSB0byBsaW50IHRoZSB3aG9sZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAi
d29ya2luZyBkaXJlY3RvcnksIG5vdCBqdXN0IGZpbGVzIHRoYXQgY2hhbmdlZCIpCisgICAgcmV0
dXJuIHBhcnNlcgorCisKK2RlZiBtYWluKCoqa3dhcmdzKToKKyAgICBpZiBrd2FyZ3MuZ2V0KCJq
c29uIikgYW5kIGt3YXJncy5nZXQoIm1hcmtkb3duIik6CisgICAgICAgIGxvZ2dlci5jcml0aWNh
bCgiQ2Fubm90IHNwZWNpZnkgLS1qc29uIGFuZCAtLW1hcmtkb3duIikKKyAgICAgICAgc3lzLmV4
aXQoMikKKworICAgIHJlcG9fcm9vdCA9IGt3YXJncy5nZXQoJ3JlcG9fcm9vdCcpIG9yIGxvY2Fs
cGF0aHMucmVwb19yb290CisgICAgb3V0cHV0X2Zvcm1hdCA9IHsoVHJ1ZSwgRmFsc2UpOiAianNv
biIsCisgICAgICAgICAgICAgICAgICAgICAoRmFsc2UsIFRydWUpOiAibWFya2Rvd24iLAorICAg
ICAgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSk6ICJub3JtYWwifVsoa3dhcmdzLmdldCgi
anNvbiIsIEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGt3YXJncy5nZXQoIm1hcmtkb3duIiwgRmFsc2UpKV0KKworICAgIGlmIG91dHB1dF9m
b3JtYXQgPT0gIm1hcmtkb3duIjoKKyAgICAgICAgc2V0dXBfbG9nZ2luZyhUcnVlKQorCisgICAg
cGF0aHMgPSBsaW50X3BhdGhzKGt3YXJncywgcmVwb19yb290KQorCisgICAgcmV0dXJuIGxpbnQo
cmVwb19yb290LCBwYXRocywgb3V0cHV0X2Zvcm1hdCkKKworCitkZWYgbGludChyZXBvX3Jvb3Qs
IHBhdGhzLCBvdXRwdXRfZm9ybWF0KToKKyAgICBlcnJvcl9jb3VudCA9IGRlZmF1bHRkaWN0KGlu
dCkKKyAgICBsYXN0ID0gTm9uZQorCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihyZXBvX3Jv
b3QsICJsaW50LndoaXRlbGlzdCIpKSBhcyBmOgorICAgICAgICB3aGl0ZWxpc3QsIGlnbm9yZWRf
ZmlsZXMgPSBwYXJzZV93aGl0ZWxpc3QoZikKKworICAgIG91dHB1dF9lcnJvcnMgPSB7Impzb24i
OiBvdXRwdXRfZXJyb3JzX2pzb24sCisgICAgICAgICAgICAgICAgICAgICAibWFya2Rvd24iOiBv
dXRwdXRfZXJyb3JzX21hcmtkb3duLAorICAgICAgICAgICAgICAgICAgICAgIm5vcm1hbCI6IG91
dHB1dF9lcnJvcnNfdGV4dH1bb3V0cHV0X2Zvcm1hdF0KKworICAgIGRlZiBwcm9jZXNzX2Vycm9y
cyhlcnJvcnMpOgorICAgICAgICAiIiIKKyAgICAgICAgRmlsdGVycyBhbmQgcHJpbnRzIHRoZSBl
cnJvcnMsIGFuZCB1cGRhdGVzIHRoZSBgYGVycm9yX2NvdW50YGAgb2JqZWN0LgorCisgICAgICAg
IDpwYXJhbSBlcnJvcnM6IGEgbGlzdCBvZiBlcnJvciB0dXBsZXMgKGVycm9yIHR5cGUsIG1lc3Nh
Z2UsIHBhdGgsIGxpbmUgbnVtYmVyKQorICAgICAgICA6cmV0dXJuczogYGBOb25lYGAgaWYgdGhl
cmUgd2VyZSBubyBlcnJvcnMsIG9yCisgICAgICAgICAgICAgICAgICBhIHR1cGxlIG9mIHRoZSBl
cnJvciB0eXBlIGFuZCB0aGUgcGF0aCBvdGhlcndpc2UKKyAgICAgICAgIiIiCisKKyAgICAgICAg
ZXJyb3JzID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBlcnJvcnMpCisKKyAg
ICAgICAgaWYgbm90IGVycm9yczoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAg
b3V0cHV0X2Vycm9ycyhlcnJvcnMpCisgICAgICAgIGZvciBlcnJvcl90eXBlLCBlcnJvciwgcGF0
aCwgbGluZSBpbiBlcnJvcnM6CisgICAgICAgICAgICBlcnJvcl9jb3VudFtlcnJvcl90eXBlXSAr
PSAxCisKKyAgICAgICAgcmV0dXJuIChlcnJvcnNbLTFdWzBdLCBwYXRoKQorCisgICAgZm9yIHBh
dGggaW4gcGF0aHNbOl06CisgICAgICAgIGFic19wYXRoID0gb3MucGF0aC5qb2luKHJlcG9fcm9v
dCwgcGF0aCkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGFic19wYXRoKToKKyAgICAg
ICAgICAgIHBhdGhzLnJlbW92ZShwYXRoKQorICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICBpZiBhbnkoZm5tYXRjaC5mbm1hdGNoKHBhdGgsIGZpbGVfbWF0Y2gpIGZvciBmaWxlX21hdGNo
IGluIGlnbm9yZWRfZmlsZXMpOgorICAgICAgICAgICAgcGF0aHMucmVtb3ZlKHBhdGgpCisgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgIGVycm9ycyA9IGNoZWNrX3BhdGgocmVwb19yb290
LCBwYXRoKQorICAgICAgICBsYXN0ID0gcHJvY2Vzc19lcnJvcnMoZXJyb3JzKSBvciBsYXN0CisK
KyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoYWJzX3BhdGgpOgorICAgICAgICAgICAgd2l0
aCBvcGVuKGFic19wYXRoLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgIGVycm9ycyA9IGNo
ZWNrX2ZpbGVfY29udGVudHMocmVwb19yb290LCBwYXRoLCBmKQorICAgICAgICAgICAgICAgIGxh
c3QgPSBwcm9jZXNzX2Vycm9ycyhlcnJvcnMpIG9yIGxhc3QKKworICAgIGVycm9ycyA9IGNoZWNr
X2FsbF9wYXRocyhyZXBvX3Jvb3QsIHBhdGhzKQorICAgIGxhc3QgPSBwcm9jZXNzX2Vycm9ycyhl
cnJvcnMpIG9yIGxhc3QKKworICAgIGlmIG91dHB1dF9mb3JtYXQgaW4gKCJub3JtYWwiLCAibWFy
a2Rvd24iKToKKyAgICAgICAgb3V0cHV0X2Vycm9yX2NvdW50KGVycm9yX2NvdW50KQorICAgICAg
ICBpZiBlcnJvcl9jb3VudDoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIChFUlJPUl9NU0cgJSAo
bGFzdFswXSwgbGFzdFsxXSwgbGFzdFswXSwgbGFzdFsxXSkpLnNwbGl0KCJcbiIpOgorICAgICAg
ICAgICAgICAgIGxvZ2dlci5pbmZvKGxpbmUpCisgICAgcmV0dXJuIHN1bShpdGVydmFsdWVzKGVy
cm9yX2NvdW50KSkKKworcGF0aF9saW50cyA9IFtjaGVja19wYXRoX2xlbmd0aCwgY2hlY2tfd29y
a2VyX2NvbGxpc2lvbiwgY2hlY2tfYWhlbV9jb3B5XQorYWxsX3BhdGhzX2xpbnRzID0gW2NoZWNr
X2Nzc19nbG9iYWxseV91bmlxdWVdCitmaWxlX2xpbnRzID0gW2NoZWNrX3JlZ2V4cF9saW5lLCBj
aGVja19wYXJzZWQsIGNoZWNrX3B5dGhvbl9hc3QsIGNoZWNrX3NjcmlwdF9tZXRhZGF0YV0KKwor
aWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBhcmdzID0gY3JlYXRlX3BhcnNlcigpLnBh
cnNlX2FyZ3MoKQorICAgIGVycm9yX2NvdW50ID0gbWFpbigqKnZhcnMoYXJncykpCisgICAgaWYg
ZXJyb3JfY291bnQgPiAwOgorICAgICAgICBzeXMuZXhpdCgxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL19f
aW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0
YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9iYXNlLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2Jh
c2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzYwZjEzY2UyOTM1YTNlNTkxZGI4YjQ3MjAwN2EyNzAxMGM4YTgx
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9iYXNlLnB5CkBAIC0wLDAgKzEsMTEgQEAKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscworCitmcm9tIHNpeCBpbXBvcnQgaW50
ZWdlcl90eXBlcywgdGV4dF90eXBlCisKK2RlZiBjaGVja19lcnJvcnMoZXJyb3JzKToKKyAgICBm
b3IgZSBpbiBlcnJvcnM6CisgICAgICAgIGVycm9yX3R5cGUsIGRlc2NyaXB0aW9uLCBwYXRoLCBs
aW5lX251bWJlciA9IGUKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZXJyb3JfdHlwZSwgdGV4
dF90eXBlKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkZXNjcmlwdGlvbiwgdGV4dF90eXBl
KQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShwYXRoLCB0ZXh0X3R5cGUpCisgICAgICAgIGFz
c2VydCBsaW5lX251bWJlciBpcyBOb25lIG9yIGlzaW5zdGFuY2UobGluZV9udW1iZXIsIGludGVn
ZXJfdHlwZXMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvYnJva2VuLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
YnJva2VuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhjYjZkNDI4YzU0YmE4MzU0NDQ3NzdhNzNiZWFhNTJm
NjQ3ODNlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9rZW4uaHRtbApAQCAtMCww
ICsxIEBACitUSElTIExJTkUgSEFTIFRSQUlMSU5HIFdISVRFU1BBQ0UKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9icm9rZW5faWdub3JlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Jyb2tlbl9pZ25vcmVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzhjYjZkNDI4YzU0YmE4MzU0NDQ3NzdhNzNiZWFhNTJmNjQ3ODNlMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9rZW5faWdub3JlZC5odG1sCkBAIC0wLDAg
KzEgQEAKK1RISVMgTElORSBIQVMgVFJBSUxJTkcgV0hJVEVTUEFDRQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL2EtcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvYS1yZWYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDA0OTFmZDdlNWJiNmZhMjhjNTE3YTBiYjMyYjhi
NTA2NTM5ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL2Et
cmVmLmh0bWwKQEAgLTAsMCArMSBAQAorMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3Mt
dW5pcXVlL2EuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9hLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzNjNWQwYmMzNzNmNWIxZmMyZWU0NWIyOTg1YzMzYTg4Yzg0NDIzMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9hLmh0bWwKQEAgLTAsMCArMSw0IEBACis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9hdXJhbC5o
dG1sI3Byb3BkZWYtc3RyZXNzIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9t
YXRjaC9hLXJlZi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL2EtcmVmLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDAwNDkxZmQ3ZTViYjZmYTI4YzUxN2EwYmIzMmI4YjUwNjUzOWQ0ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLXJlZi5o
dG1sCkBAIC0wLDAgKzEgQEAKKzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1
ZS9tYXRjaC9hLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvYS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjczYzVkMGJjMzczZjViMWZjMmVlNDViMjk4NWMzM2E4OGM4NDQyMzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvYS5odG1sCkBAIC0w
LDAgKzEsNCBAQAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3d3dy53My5vcmcvVFIv
Q1NTMjEvYXVyYWwuaHRtbCNwcm9wZGVmLXN0cmVzcyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9ydC9hLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvbWF0Y2gvc3VwcG9ydC9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAwNDkxZmQ3ZTViYjZmYTI4YzUx
N2EwYmIzMmI4YjUwNjUzOWQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS9tYXRjaC9zdXBwb3J0L2EuaHRtbApAQCAtMCwwICsxIEBACisxCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQv
dGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9ydC90b29scy9hLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9ydC90b29scy9hLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGNmYmYwODg4NmZjYTlhOTFjYjc1M2VjODczNGM4NGZjYmU1MmM5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9zdXBwb3J0L3Rvb2xzL2Eu
aHRtbApAQCAtMCwwICsxIEBACisyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvbWF0Y2gvdG9vbHMvYS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3Rv
b2xzL2EuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDA0OTFmZDdlNWJiNmZhMjhjNTE3YTBiYjMyYjhiNTA2
NTM5ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNo
L3Rvb2xzL2EuaHRtbApAQCAtMCwwICsxIEBACisxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvbm90LW1hdGNoL2EtcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvbm90LW1hdGNoL2EtcmVmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNmYmYwODg4NmZjYTlhOTFjYjc1
M2VjODczNGM4NGZjYmU1MmM5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS9ub3QtbWF0Y2gvYS1yZWYuaHRtbApAQCAtMCwwICsxIEBACisyCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQv
dGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9j
c3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiMGNlMzgzYTI1Y2M0
M2Y2MzU1NTQ4MTg2ZjkyMjVkNzljN2I0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
Y3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EuaHRtbApAQCAtMCwwICsxLDQgQEAKKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL2F1cmFsLmh0bWwjcHJv
cGRlZi1zdHJlc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRj
aC9zdXBwb3J0L2EuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvc3Vw
cG9ydC9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNmYmYwODg4NmZjYTlhOTFjYjc1M2VjODczNGM4NGZj
YmU1MmM5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3Qt
bWF0Y2gvc3VwcG9ydC9hLmh0bWwKQEAgLTAsMCArMSBAQAorMgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC90b29scy9hLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvbm90LW1hdGNoL3Rvb2xzL2EuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2ZiZjA4ODg2
ZmNhOWE5MWNiNzUzZWM4NzM0Yzg0ZmNiZTUyYzlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC90b29scy9hLmh0bWwKQEAgLTAsMCArMSBAQAor
MgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3NlbGVjdG9ycy9hLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQv
dGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc2VsZWN0b3JzL2EuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
ZDYzYzZiZmVkZDEzODY4ODNmYThmYWUzMjQyMzk1MzA1YTFjMmNkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3NlbGVjdG9ycy9hLmh0bWwKQEAgLTAsMCArMSw0
IEBACis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9zZWxl
Y3RvcnMtMy8jdHlwZS1zZWxlY3RvcnMiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5p
cXVlL3N1cHBvcnQvYS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3N1cHBvcnQvYS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQwMDQ5MWZkN2U1YmI2ZmEyOGM1MTdhMGJiMzJiOGI1MDY1MzlkNGQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc3VwcG9ydC9hLmh0
bWwKQEAgLTAsMCArMSBAQAorMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVl
L3N1cHBvcnQvdG9vbHMvYS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3N1cHBvcnQv
dG9vbHMvYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjZmJmMDg4ODZmY2E5YTkxY2I3NTNlYzg3MzRjODRm
Y2JlNTJjOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc3Vw
cG9ydC90b29scy9hLmh0bWwKQEAgLTAsMCArMSBAQAorMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2Nzcy9jc3MtdW5pcXVlL3Rvb2xzL2EuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS90
b29scy9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAwNDkxZmQ3ZTViYjZmYTI4YzUxN2EwYmIzMmI4YjUw
NjUzOWQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS90b29s
cy9hLmh0bWwKQEAgLTAsMCArMSBAQAorMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2RlcGVuZGVu
Y3kuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS9kZXBlbmRlbmN5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkyOTZmNGM1
ODc2ZmM4YzRjZDA1MjU0ODYxNjAwNWMxZTQ2ZjBlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS9kZXBlbmRlbmN5Lmh0bWwKQEAgLTAsMCArMSBAQAorVGhpcyBmaWxlIGlzIHVzZWQgdG8g
ZGVtb25zdHJhdGUgYWNjZXB0YW5jZSBvZiByb290LXJlbGF0aXZlIHJlZnRlc3QgcmVmZXJlbmNl
cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9saW50LndoaXRlbGlzdCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9saW50
LndoaXRlbGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzYzZTQ0MzJlNWFmYTIxMjMwMzUzNDVlMTMwZDAxODcx
MGZmZGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQud2hpdGVsaXN0CkBAIC0w
LDAgKzEgQEAKKyo6YnJva2VuX2lnbm9yZWQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L29r
YXkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS9va2F5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTMxNzhhM2M4M2EzODM1
YzcxYmMwNzY4YzBjMWVhN2JkM2ZmNzIyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9v
a2F5Lmh0bWwKQEAgLTAsMCArMSBAQAorVEhJUyBMSU5FIEhBUyBOTyBUUkFJTElORyBXSElURVNQ
QUNFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2Fic29sdXRlLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
cmVmL2Fic29sdXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI0N2JjODgzNjcxYmQzMDgxMzU5N2MzYWVi
YTkyMjk5M2IzNjUzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvYWJzb2x1dGUu
aHRtbApAQCAtMCwwICsxIEBACis8bGluayByZWw9Im1hdGNoIiBocmVmPSJodHRwOi8vZXhhbXBs
ZS5jb20vcmVmZXJlbmNlLmh0bWwiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVu
dF9yZWxhdGl2ZS1yZWYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvZXhpc3RlbnRfcmVsYXRpdmUtcmVm
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5
MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9yZWxhdGl2ZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L3JlZi9leGlzdGVudF9yZWxhdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5MzY0ZWU1ZmIx
MWM2OWVhN2QwN2Q0NGYxNzc2MDkwZDhjNmU4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvcmVmL2V4aXN0ZW50X3JlbGF0aXZlLmh0bWwKQEAgLTAsMCArMSBAQAorPGxpbmsgcmVsPSJt
YXRjaCIgaHJlZj0iZXhpc3RlbnRfcmVsYXRpdmUtcmVmLmh0bWwiPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L3JlZi9leGlzdGVudF9yb290X3JlbGF0aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2V4
aXN0ZW50X3Jvb3RfcmVsYXRpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYmVkYzJkMzA5YmFhNzVmNGI2
ODI3MTcyMWUxMmQ4MTQ1NWE0YTYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9l
eGlzdGVudF9yb290X3JlbGF0aXZlLmh0bWwKQEAgLTAsMCArMSBAQAorPGxpbmsgcmVsPSJtYXRj
aCIgaHJlZj0iL2RlcGVuZGVuY3kuaHRtbCI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL25v
bl9leGlzdGVudF9yZWxhdGl2ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9ub25fZXhpc3RlbnRfcmVs
YXRpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDlhMWQ1ZWIwMTE5OWQ0NzA2MzY4OGYzZWUyM2ZhZDM0
NjYzNmIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9ub25fZXhpc3RlbnRfcmVs
YXRpdmUuaHRtbApAQCAtMCwwICsxIEBACis8bGluayByZWw9Im1hdGNoIiBocmVmPSJub25fZXhp
c3RlbnRfZmlsZS5odG1sIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvbm9uX2V4aXN0ZW50
X3Jvb3RfcmVsYXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvbm9uX2V4aXN0ZW50X3Jvb3RfcmVs
YXRpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTgxMjAxM2FhMDlhNjZmYjAxOTVjZWZhNmM0ZjhjZTBh
NGM5MDYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9ub25fZXhpc3RlbnRfcm9v
dF9yZWxhdGl2ZS5odG1sCkBAIC0wLDAgKzEgQEAKKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9Ii9u
b25fZXhpc3RlbnRfZmlsZS5odG1sIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvc2FtZV9m
aWxlX2VtcHR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9lbXB0eS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVhYTE4ZTljMDEwODZmODhmYmFhNmM5YjA1ZGQ2ZTI2YzRkNmFiNDYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9lbXB0eS5odG1sCkBAIC0wLDAgKzEg
QEAKKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9IiI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVm
L3NhbWVfZmlsZV9wYXRoLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9wYXRoLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmE4MGMxZjIwZGRmMGRmZjhiYTEwZWZmM2NjZTRmYzcyODZmNzljOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvc2FtZV9maWxlX3BhdGguaHRtbApAQCAtMCww
ICsxIEBACis8bGluayByZWw9Im1hdGNoIiBocmVmPSJzYW1lX2ZpbGVfcGF0aC5odG1sIj4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9maWxlX2xpbnRzLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY0ZmIyMjFiN2E1ODcwZjAwNzViZDU1MGVmNzRiNDJiZDdmZWVhNzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9maWxlX2xpbnRzLnB5CkBAIC0wLDAgKzEsNTk4IEBA
Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKKworZnJvbSAuLmxpbnQg
aW1wb3J0IGNoZWNrX2ZpbGVfY29udGVudHMKK2Zyb20gLmJhc2UgaW1wb3J0IGNoZWNrX2Vycm9y
cworaW1wb3J0IG9zCitpbXBvcnQgcHl0ZXN0CitpbXBvcnQgc2l4CisKK0lOVEVSRVNUSU5HX0ZJ
TEVfTkFNRVMgPSB7CisgICAgInB5dGhvbiI6IFsKKyAgICAgICAgInRlc3QucHkiLAorICAgIF0s
CisgICAgImpzIjogWworICAgICAgICAidGVzdC5qcyIsCisgICAgXSwKKyAgICAid2ViLWxheCI6
IFsKKyAgICAgICAgInRlc3QuaHRtIiwKKyAgICAgICAgInRlc3QuaHRtbCIsCisgICAgXSwKKyAg
ICAid2ViLXN0cmljdCI6IFsKKyAgICAgICAgInRlc3Quc3ZnIiwKKyAgICAgICAgInRlc3QueGh0
IiwKKyAgICAgICAgInRlc3QueGh0bWwiLAorICAgIF0sCit9CisKK2RlZiBjaGVja193aXRoX2Zp
bGVzKGlucHV0X2J5dGVzKToKKyAgICByZXR1cm4geworICAgICAgICBmaWxlbmFtZTogKGNoZWNr
X2ZpbGVfY29udGVudHMoIiIsIGZpbGVuYW1lLCBzaXguQnl0ZXNJTyhpbnB1dF9ieXRlcykpLCBr
aW5kKQorICAgICAgICBmb3IgKGZpbGVuYW1lLCBraW5kKSBpbgorICAgICAgICAoCisgICAgICAg
ICAgICAob3MucGF0aC5qb2luKCJodG1sIiwgZmlsZW5hbWUpLCBraW5kKQorICAgICAgICAgICAg
Zm9yIChraW5kLCBmaWxlbmFtZXMpIGluIElOVEVSRVNUSU5HX0ZJTEVfTkFNRVMuaXRlbXMoKQor
ICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lcworICAgICAgICApCisgICAgfQor
CisKK2RlZiB0ZXN0X3RyYWlsaW5nX3doaXRlc3BhY2UoKToKKyAgICBlcnJvcl9tYXAgPSBjaGVj
a193aXRoX2ZpbGVzKGIidGVzdDsgIikKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtp
bmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykK
KworICAgICAgICBleHBlY3RlZCA9IFsoIlRSQUlMSU5HIFdISVRFU1BBQ0UiLCAiV2hpdGVzcGFj
ZSBhdCBFT0wiLCBmaWxlbmFtZSwgMSldCisgICAgICAgIGlmIGtpbmQgPT0gIndlYi1zdHJpY3Qi
OgorICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKCgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0
byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIE5vbmUpKQorICAgICAgICBhc3NlcnQgZXJyb3JzID09
IGV4cGVjdGVkCisKKworZGVmIHRlc3RfaW5kZW50X3RhYnMoKToKKyAgICBlcnJvcl9tYXAgPSBj
aGVja193aXRoX2ZpbGVzKGIiZGVmIGZvbygpOlxuXHgwOXBhc3MiKQorCisgICAgZm9yIChmaWxl
bmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVj
a19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGV4cGVjdGVkID0gWygiSU5ERU5UIFRBQlMiLCAi
VGFicyB1c2VkIGZvciBpbmRlbnRhdGlvbiIsIGZpbGVuYW1lLCAyKV0KKyAgICAgICAgaWYga2lu
ZCA9PSAid2ViLXN0cmljdCI6CisgICAgICAgICAgICBleHBlY3RlZC5hcHBlbmQoKCJQQVJTRS1G
QUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgTm9uZSkpCisgICAgICAg
IGFzc2VydCBlcnJvcnMgPT0gZXhwZWN0ZWQKKworCitkZWYgdGVzdF9jcl9ub3RfYXRfZW9sKCk6
CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhiImxpbmUxXHJsaW5lMlxyIikKKwor
ICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToK
KyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBleHBlY3RlZCA9IFsoIkNS
IEFUIEVPTCIsICJDUiBjaGFyYWN0ZXIgaW4gbGluZSBzZXBhcmF0b3IiLCBmaWxlbmFtZSwgMSld
CisgICAgICAgIGlmIGtpbmQgPT0gIndlYi1zdHJpY3QiOgorICAgICAgICAgICAgZXhwZWN0ZWQu
YXBwZW5kKCgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUs
IE5vbmUpKQorICAgICAgICBhc3NlcnQgZXJyb3JzID09IGV4cGVjdGVkCisKKworZGVmIHRlc3Rf
Y3JfYXRfZW9sKCk6CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhiImxpbmUxXHJc
bmxpbmUyXHJcbiIpCisKKyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJy
b3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAg
ZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoIkNSIEFUIEVPTCIsICJDUiBjaGFyYWN0ZXIgaW4g
bGluZSBzZXBhcmF0b3IiLCBmaWxlbmFtZSwgMSksCisgICAgICAgICAgICAoIkNSIEFUIEVPTCIs
ICJDUiBjaGFyYWN0ZXIgaW4gbGluZSBzZXBhcmF0b3IiLCBmaWxlbmFtZSwgMiksCisgICAgICAg
IF0KKyAgICAgICAgaWYga2luZCA9PSAid2ViLXN0cmljdCI6CisgICAgICAgICAgICBleHBlY3Rl
ZC5hcHBlbmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFt
ZSwgTm9uZSkpCisgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gZXhwZWN0ZWQKKworCitkZWYgdGVz
dF93M2NfdGVzdF9vcmcoKToKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGIiaW1w
b3J0KCdodHRwOi8vd3d3LnczYy10ZXN0Lm9yZy8nKSIpCisKKyAgICBmb3IgKGZpbGVuYW1lLCAo
ZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9y
cyhlcnJvcnMpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbKCJXM0MtVEVTVC5PUkciLCAiRXh0ZXJu
YWwgdzNjLXRlc3Qub3JnIGRvbWFpbiB1c2VkIiwgZmlsZW5hbWUsIDEpXQorICAgICAgICBpZiBr
aW5kID09ICJweXRob24iOgorICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKCgiUEFSU0UtRkFJ
TEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDEpKQorICAgICAgICBlbGlm
IGtpbmQgPT0gIndlYi1zdHJpY3QiOgorICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKCgiUEFS
U0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIE5vbmUpKQorICAg
ICAgICBhc3NlcnQgZXJyb3JzID09IGV4cGVjdGVkCisKK2RlZiB0ZXN0X3dlYl9wbGF0Zm9ybV90
ZXN0KCk6CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhiImltcG9ydCgnaHR0cDov
L3dlYi1wbGF0Zm9ybS50ZXN0LycpIikKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtp
bmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykK
KworICAgICAgICBleHBlY3RlZCA9IFsoIldFQi1QTEFURk9STS5URVNUIiwgIkludGVybmFsIHdl
Yi1wbGF0Zm9ybS50ZXN0IGRvbWFpbiB1c2VkIiwgZmlsZW5hbWUsIDEpXQorICAgICAgICBpZiBr
aW5kID09ICJweXRob24iOgorICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKCgiUEFSU0UtRkFJ
TEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDEpKQorICAgICAgICBlbGlm
IGtpbmQgPT0gIndlYi1zdHJpY3QiOgorICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKCgiUEFS
U0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIE5vbmUpKQorICAg
ICAgICBhc3NlcnQgZXJyb3JzID09IGV4cGVjdGVkCisKKworZGVmIHRlc3Rfd2ViaWRsMl9qcygp
OgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiI8c2NyaXB0IHNyYz0vcmVzb3Vy
Y2VzL3dlYmlkbDIuanM+IikKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBp
biBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAg
ICAgICBleHBlY3RlZCA9IFsoIldFQklETDIuSlMiLCAiTGVnYWN5IHdlYmlkbDIuanMgc2NyaXB0
IHVzZWQiLCBmaWxlbmFtZSwgMSldCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAg
ICAgICAgICBleHBlY3RlZC5hcHBlbmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNl
IGZpbGUiLCBmaWxlbmFtZSwgMSkpCisgICAgICAgIGVsaWYga2luZCA9PSAid2ViLXN0cmljdCI6
CisgICAgICAgICAgICBleHBlY3RlZC5hcHBlbmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRv
IHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgTm9uZSkpCisgICAgICAgIGFzc2VydCBlcnJvcnMgPT0g
ZXhwZWN0ZWQKKworCitkZWYgdGVzdF9jb25zb2xlKCk6CisgICAgZXJyb3JfbWFwID0gY2hlY2tf
d2l0aF9maWxlcyhiIjxzY3JpcHQ+XG5jb25zb2xlLmxvZygnZXJyb3InKTtcbmNvbnNvbGUuZXJy
b3IgKCdsb2cnKVxuPC9zY3JpcHQ+IikKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtp
bmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykK
KworICAgICAgICBpZiBraW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3RyaWN0IiwgImpzIl06Cisg
ICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIkNPTlNPTEUi
LCAiQ29uc29sZSBsb2dnaW5nIEFQSSB1c2VkIiwgZmlsZW5hbWUsIDIpLAorICAgICAgICAgICAg
ICAgICgiQ09OU09MRSIsICJDb25zb2xlIGxvZ2dpbmcgQVBJIHVzZWQiLCBmaWxlbmFtZSwgMyks
CisgICAgICAgICAgICBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3Jz
ID09IFsoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAx
KV0KKworCitkZWYgdGVzdF9zZXRUaW1lb3V0KCk6CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0
aF9maWxlcyhiIjxzY3JpcHQ+c2V0VGltZW91dCgoKSA9PiAxLCAxMCk8L3NjcmlwdD4iKQorCisg
ICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgor
ICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhv
biI6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsoIlBBUlNFLUZBSUxFRCIsICJVbmFi
bGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGFzc2VydCBlcnJvcnMgPT0gWygnU0VUIFRJTUVPVVQnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdzZXRUaW1lb3V0IHVzZWQ7IHN0ZXBfdGltZW91dCBzaG91bGQgdHlwaWNh
bGx5IGJlIHVzZWQgaW5zdGVhZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmls
ZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSldCisKKworZGVmIHRlc3Rf
ZXZlbnRTZW5kZXIoKToKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGIiPHNjcmlw
dD5ldmVudFNlbmRlci5tb3VzZURvd24oKTwvc2NyaXB0PiIpCisKKyAgICBmb3IgKGZpbGVuYW1l
LCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vy
cm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAg
IGFzc2VydCBlcnJvcnMgPT0gWygiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxl
IiwgZmlsZW5hbWUsIDEpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9y
cyA9PSBbKCdMQVlPVVRURVNUUyBBUElTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnZXZlbnRTZW5kZXIvdGVzdFJ1bm5lci93aW5kb3cuaW50ZXJuYWxzIHVzZWQ7IHRoZXNlIGFy
ZSBMYXlvdXRUZXN0cy1zcGVjaWZpYyBBUElzIChXZWJLaXQvQmxpbmspJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxKV0KKworCitkZWYgdGVzdF90ZXN0UnVubmVyKCk6CisgICAgZXJyb3JfbWFwID0gY2hl
Y2tfd2l0aF9maWxlcyhiIjxzY3JpcHQ+aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7IHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOyB9PC9zY3JpcHQ+IikKKworICAgIGZvciAoZmlsZW5hbWUsIChl
cnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3Jz
KGVycm9ycykKKworICAgICAgICBpZiBraW5kID09ICJweXRob24iOgorICAgICAgICAgICAgYXNz
ZXJ0IGVycm9ycyA9PSBbKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBm
aWxlbmFtZSwgMSldCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09
IFsoJ0xBWU9VVFRFU1RTIEFQSVMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdl
dmVudFNlbmRlci90ZXN0UnVubmVyL3dpbmRvdy5pbnRlcm5hbHMgdXNlZDsgdGhlc2UgYXJlIExh
eW91dFRlc3RzLXNwZWNpZmljIEFQSXMgKFdlYktpdC9CbGluayknLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEpXQorCisKK2RlZiB0ZXN0X3dpbmRvd0RvdEludGVybmFscygpOgorICAgIGVycm9yX21hcCA9
IGNoZWNrX3dpdGhfZmlsZXMoYiI8c2NyaXB0PmlmICh3aW5kb3cuaW50ZXJuYWxzKSB7IGludGVy
bmFscy5kb0FUaGluZygpOyB9PC9zY3JpcHQ+IikKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJv
cnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVy
cm9ycykKKworICAgICAgICBpZiBraW5kID09ICJweXRob24iOgorICAgICAgICAgICAgYXNzZXJ0
IGVycm9ycyA9PSBbKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxl
bmFtZSwgMSldCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFso
J0xBWU9VVFRFU1RTIEFQSVMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdldmVu
dFNlbmRlci90ZXN0UnVubmVyL3dpbmRvdy5pbnRlcm5hbHMgdXNlZDsgdGhlc2UgYXJlIExheW91
dFRlc3RzLXNwZWNpZmljIEFQSXMgKFdlYktpdC9CbGluayknLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEp
XQorCisKK2RlZiB0ZXN0X21ldGFfdGltZW91dCgpOgorICAgIGNvZGUgPSBiIiIiCis8aHRtbCB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8bWV0YSBuYW1lPSJ0aW1lb3V0
IiAvPgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ic2hvcnQiIC8+Cis8bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIiAvPgorPC9odG1sPgorIiIiCisgICAgZXJyb3JfbWFw
ID0gY2hlY2tfd2l0aF9maWxlcyhjb2RlKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywg
a2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMoZXJyb3Jz
KQorCisgICAgICAgIGlmIGtpbmQgaW4gWyJ3ZWItbGF4IiwgIndlYi1zdHJpY3QiXToKKyAgICAg
ICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAgICgiTVVMVElQTEUtVElN
RU9VVCIsICJNb3JlIHRoYW4gb25lIG1ldGEgbmFtZT0ndGltZW91dCciLCBmaWxlbmFtZSwgTm9u
ZSksCisgICAgICAgICAgICAgICAgKCJJTlZBTElELVRJTUVPVVQiLCAiSW52YWxpZCB0aW1lb3V0
IHZhbHVlICIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoIklOVkFMSUQtVElN
RU9VVCIsICJJbnZhbGlkIHRpbWVvdXQgdmFsdWUgc2hvcnQiLCBmaWxlbmFtZSwgTm9uZSksCisg
ICAgICAgICAgICBdCisgICAgICAgIGVsaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAg
IGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAgICgiUEFSU0UtRkFJTEVEIiwgIlVu
YWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDIpLAorICAgICAgICAgICAgXQorCisKK2Rl
ZiB0ZXN0X2Vhcmx5X3Rlc3RoYXJuZXNzcmVwb3J0KCk6CisgICAgY29kZSA9IGIiIiIKKzxodG1s
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KKyIiIgorICAgIGVycm9y
X21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoY29kZSkKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJv
cnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVy
cm9ycykKKworICAgICAgICBpZiBraW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3RyaWN0Il06Cisg
ICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIkVBUkxZLVRF
U1RIQVJORVNTUkVQT1JUIiwgInRlc3RoYXJuZXNzcmVwb3J0LmpzIHNjcmlwdCBzZWVuIGJlZm9y
ZSB0ZXN0aGFybmVzcy5qcyBzY3JpcHQiLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICBd
CisgICAgICAgIGVsaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAgIGFzc2VydCBlcnJv
cnMgPT0gWworICAgICAgICAgICAgICAgICgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJz
ZSBmaWxlIiwgZmlsZW5hbWUsIDIpLAorICAgICAgICAgICAgXQorCisKK2RlZiB0ZXN0X211bHRp
cGxlX3Rlc3RoYXJuZXNzKCk6CisgICAgY29kZSA9IGIiIiIKKzxodG1sIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKzwvaHRtbD4KKyIiIgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmls
ZXMoY29kZSkKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9t
YXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBpZiBr
aW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3RyaWN0Il06CisgICAgICAgICAgICBhc3NlcnQgZXJy
b3JzID09IFsKKyAgICAgICAgICAgICAgICAoIk1VTFRJUExFLVRFU1RIQVJORVNTIiwgIk1vcmUg
dGhhbiBvbmUgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPiIsIGZpbGVu
YW1lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoIk1JU1NJTkctVEVTVEhBUk5FU1NSRVBPUlQi
LCAiTWlzc2luZyA8c2NyaXB0IHNyYz0nL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+
IiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgXQorICAgICAgICBlbGlmIGtpbmQgPT0g
InB5dGhvbiI6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAg
ICAoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAyKSwK
KyAgICAgICAgICAgIF0KKworCitkZWYgdGVzdF9tdWx0aXBsZV90ZXN0aGFybmVzc3JlcG9ydCgp
OgorICAgIGNvZGUgPSBiIiIiCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8L2h0bWw+CisiIiIKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGNvZGUpCisK
KyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6
CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCBpbiBbIndl
Yi1sYXgiLCAid2ViLXN0cmljdCJdOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisg
ICAgICAgICAgICAgICAgKCJNVUxUSVBMRS1URVNUSEFSTkVTU1JFUE9SVCIsICJNb3JlIHRoYW4g
b25lIDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz4iLCBmaWxl
bmFtZSwgTm9uZSksCisgICAgICAgICAgICBdCisgICAgICAgIGVsaWYga2luZCA9PSAicHl0aG9u
IjoKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAgICgiUEFS
U0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDIpLAorICAgICAg
ICAgICAgXQorCisKK2RlZiB0ZXN0X3ByZXNlbnRfdGVzdGhhcm5lc3Njc3MoKToKKyAgICBjb2Rl
ID0gYiIiIgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIvPgorPC9odG1s
PgorIiIiCisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhjb2RlKQorCisgICAgZm9y
IChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAg
ICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgaW4gWyJ3ZWItbGF4Iiwg
IndlYi1zdHJpY3QiXToKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAg
ICAgICAgICgiUFJFU0VOVC1URVNUSEFSTkVTU0NTUyIsICJFeHBsaWNpdCBsaW5rIHRvIHRlc3Ro
YXJuZXNzLmNzcyBwcmVzZW50IiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgXQorICAg
ICAgICBlbGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09
IFsKKyAgICAgICAgICAgICAgICAoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmls
ZSIsIGZpbGVuYW1lLCAyKSwKKyAgICAgICAgICAgIF0KKworCitkZWYgdGVzdF90ZXN0aGFybmVz
c19wYXRoKCk6CisgICAgY29kZSA9IGIiIiJcCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCI+Cis8c2NyaXB0IHNyYz0idGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJodHRwOi8vdzNjLXRlc3Qub3JnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8L2h0bWw+CisiIiIKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGNvZGUpCisK
KyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6
CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbKCJX
M0MtVEVTVC5PUkciLCAiRXh0ZXJuYWwgdzNjLXRlc3Qub3JnIGRvbWFpbiB1c2VkIiwgZmlsZW5h
bWUsIDUpXQorICAgICAgICBpZiBraW5kID09ICJweXRob24iOgorICAgICAgICAgICAgZXhwZWN0
ZWQuYXBwZW5kKCgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5h
bWUsIDEpKQorICAgICAgICBlbGlmIGtpbmQgaW4gWyJ3ZWItbGF4IiwgIndlYi1zdHJpY3QiXToK
KyAgICAgICAgICAgIGV4cGVjdGVkLmV4dGVuZChbCisgICAgICAgICAgICAgICAgKCJURVNUSEFS
TkVTUy1QQVRIIiwgInRlc3RoYXJuZXNzLmpzIHNjcmlwdCBzZWVuIHdpdGggaW5jb3JyZWN0IHBh
dGgiLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICAgICAgKCJURVNUSEFSTkVTUy1QQVRI
IiwgInRlc3RoYXJuZXNzLmpzIHNjcmlwdCBzZWVuIHdpdGggaW5jb3JyZWN0IHBhdGgiLCBmaWxl
bmFtZSwgTm9uZSksCisgICAgICAgICAgICAgICAgKCJURVNUSEFSTkVTUy1QQVRIIiwgInRlc3Ro
YXJuZXNzLmpzIHNjcmlwdCBzZWVuIHdpdGggaW5jb3JyZWN0IHBhdGgiLCBmaWxlbmFtZSwgTm9u
ZSksCisgICAgICAgICAgICAgICAgKCJURVNUSEFSTkVTUy1QQVRIIiwgInRlc3RoYXJuZXNzLmpz
IHNjcmlwdCBzZWVuIHdpdGggaW5jb3JyZWN0IHBhdGgiLCBmaWxlbmFtZSwgTm9uZSksCisgICAg
ICAgICAgICBdKQorICAgICAgICBhc3NlcnQgZXJyb3JzID09IGV4cGVjdGVkCisKKworZGVmIHRl
c3RfdGVzdGhhcm5lc3NyZXBvcnRfcGF0aCgpOgorICAgIGNvZGUgPSBiIiIiXAorPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNjcmlwdCBzcmM9InRlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iaHR0cDovL3czYy10ZXN0Lm9y
Zy9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9odG1sPgorIiIi
CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhjb2RlKQorCisgICAgZm9yIChmaWxl
bmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVj
a19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGV4cGVjdGVkID0gWygiVzNDLVRFU1QuT1JHIiwg
IkV4dGVybmFsIHczYy10ZXN0Lm9yZyBkb21haW4gdXNlZCIsIGZpbGVuYW1lLCA1KV0KKyAgICAg
ICAgaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAgIGV4cGVjdGVkLmFwcGVuZCgoIlBB
UlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKSkKKyAgICAg
ICAgZWxpZiBraW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3RyaWN0Il06CisgICAgICAgICAgICBl
eHBlY3RlZC5leHRlbmQoWworICAgICAgICAgICAgICAgICgiVEVTVEhBUk5FU1NSRVBPUlQtUEFU
SCIsICJ0ZXN0aGFybmVzc3JlcG9ydC5qcyBzY3JpcHQgc2VlbiB3aXRoIGluY29ycmVjdCBwYXRo
IiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgiVEVTVEhBUk5FU1NSRVBPUlQt
UEFUSCIsICJ0ZXN0aGFybmVzc3JlcG9ydC5qcyBzY3JpcHQgc2VlbiB3aXRoIGluY29ycmVjdCBw
YXRoIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgiVEVTVEhBUk5FU1NSRVBP
UlQtUEFUSCIsICJ0ZXN0aGFybmVzc3JlcG9ydC5qcyBzY3JpcHQgc2VlbiB3aXRoIGluY29ycmVj
dCBwYXRoIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgiVEVTVEhBUk5FU1NS
RVBPUlQtUEFUSCIsICJ0ZXN0aGFybmVzc3JlcG9ydC5qcyBzY3JpcHQgc2VlbiB3aXRoIGluY29y
cmVjdCBwYXRoIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgXSkKKyAgICAgICAgYXNz
ZXJ0IGVycm9ycyA9PSBleHBlY3RlZAorCisKK2RlZiB0ZXN0X25vdF90ZXN0aGFybmVzc19wYXRo
KCk6CisgICAgY29kZSA9IGIiIiJcCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnBlcmZ0ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8L2h0bWw+CisiIiIKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGNvZGUp
CisKKyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1z
KCk6CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCA9PSAi
cHl0aG9uIjoKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAg
ICgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDEpLAor
ICAgICAgICAgICAgXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9
PSBbXQorCisKK0BweXRlc3QubWFyay5za2lwaWYoc2l4LlBZMywgcmVhc29uPSJDYW5ub3QgcGFy
c2UgcHJpbnQgc3RhdGVtZW50cyBmcm9tIHB5dGhvbiAzIikKK2RlZiB0ZXN0X3ByaW50X3N0YXRl
bWVudCgpOgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJkZWYgZm9vKCk6XG4g
IHByaW50ICdzdGF0ZW1lbnQnXG4gIHByaW50XG4iKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVy
cm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMo
ZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAgICBhc3Nl
cnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIlBSSU5UIFNUQVRFTUVOVCIsICJQcmlu
dCBmdW5jdGlvbiB1c2VkIiwgZmlsZW5hbWUsIDIpLAorICAgICAgICAgICAgICAgICgiUFJJTlQg
U1RBVEVNRU5UIiwgIlByaW50IGZ1bmN0aW9uIHVzZWQiLCBmaWxlbmFtZSwgMyksCisgICAgICAg
ICAgICBdCisgICAgICAgIGVsaWYga2luZCA9PSAid2ViLXN0cmljdCI6CisgICAgICAgICAgICBh
c3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIlBBUlNFLUZBSUxFRCIsICJVbmFi
bGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gW10KKworCitkZWYgdGVzdF9w
cmludF9mdW5jdGlvbigpOgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJkZWYg
Zm9vKCk6XG4gIHByaW50KCdmdW5jdGlvbicpXG4iKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVy
cm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMo
ZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAgICBhc3Nl
cnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIlBSSU5UIFNUQVRFTUVOVCIsICJQcmlu
dCBmdW5jdGlvbiB1c2VkIiwgZmlsZW5hbWUsIDIpLAorICAgICAgICAgICAgXQorICAgICAgICBl
bGlmIGtpbmQgPT0gIndlYi1zdHJpY3QiOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBb
CisgICAgICAgICAgICAgICAgKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUi
LCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICBdCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBhc3NlcnQgZXJyb3JzID09IFtdCisKKworb3Blbl9tb2RlX2NvZGUgPSAiIiIKK2RlZiBm
aXJzdCgpOgorICAgIHJldHVybiB7MH0oInRlc3QucG5nIikKKworZGVmIHNlY29uZCgpOgorICAg
IHJldHVybiB7MH0oInRlc3QucG5nIiwgInIiKQorCitkZWYgdGhpcmQoKToKKyAgICByZXR1cm4g
ezB9KCJ0ZXN0LnBuZyIsICJyYiIpCisKK2RlZiBmb3VydGgoKToKKyAgICByZXR1cm4gezB9KCJ0
ZXN0LnBuZyIsIGVuY29kaW5nPSJ1dGYtOCIpCisKK2RlZiBmaWZ0aCgpOgorICAgIHJldHVybiB7
MH0oInRlc3QucG5nIiwgbW9kZT0icmIiKQorIiIiCisKKworZGVmIHRlc3Rfb3Blbl9tb2RlKCk6
CisgICAgZm9yIG1ldGhvZCBpbiBbIm9wZW4iLCAiZmlsZSJdOgorICAgICAgICBjb2RlID0gb3Bl
bl9tb2RlX2NvZGUuZm9ybWF0KG1ldGhvZCkuZW5jb2RlKCJ1dGYtOCIpCisgICAgICAgIGVycm9y
cyA9IGNoZWNrX2ZpbGVfY29udGVudHMoIiIsICJ0ZXN0LnB5Iiwgc2l4LkJ5dGVzSU8oY29kZSkp
CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgbWVzc2FnZSA9ICgiRmls
ZSBvcGVuZWQgd2l0aG91dCBwcm92aWRpbmcgYW4gZXhwbGljaXQgbW9kZSAobm90ZTogIiArCisg
ICAgICAgICAgICAgICAgICAgImJpbmFyeSBmaWxlcyBtdXN0IGJlIHJlYWQgd2l0aCAnYicgaW4g
dGhlIG1vZGUgZmxhZ3MpIikKKworICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAg
ICAgICgiT1BFTi1OTy1NT0RFIiwgbWVzc2FnZSwgInRlc3QucHkiLCAzKSwKKyAgICAgICAgICAg
ICgiT1BFTi1OTy1NT0RFIiwgbWVzc2FnZSwgInRlc3QucHkiLCAxMiksCisgICAgICAgIF0KKwor
CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgImZpbGVuYW1lLGV4cGVjdF9lcnJvciIs
CisgICAgWworICAgICAgICAoImZvby9iYXIuaHRtbCIsIEZhbHNlKSwKKyAgICAgICAgKCJjc3Mv
YmFyLmh0bWwiLCBUcnVlKSwKKyAgICBdKQorZGVmIHRlc3RfY3NzX3N1cHBvcnRfZmlsZShmaWxl
bmFtZSwgZXhwZWN0X2Vycm9yKToKKyAgICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIi
LCBmaWxlbmFtZSwgc2l4LkJ5dGVzSU8oYiIiKSkKKyAgICBjaGVja19lcnJvcnMoZXJyb3JzKQor
CisgICAgaWYgZXhwZWN0X2Vycm9yOgorICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAg
ICAgICAgICgnU1VQUE9SVC1XUk9ORy1ESVInLAorICAgICAgICAgICAgICdTdXBwb3J0IGZpbGUg
bm90IGluIHN1cHBvcnQgZGlyZWN0b3J5JywKKyAgICAgICAgICAgICBmaWxlbmFtZSwKKyAgICAg
ICAgICAgICBOb25lKSwKKyAgICAgICAgXQorICAgIGVsc2U6CisgICAgICAgIGFzc2VydCBlcnJv
cnMgPT0gW10KKworCitkZWYgdGVzdF9jc3NfbWlzc2luZ19maWxlX2luX2NzcygpOgorICAgIGNv
ZGUgPSBiIiIiXAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9odG1s
PgorIiIiCisgICAgZXJyb3JzID0gY2hlY2tfZmlsZV9jb250ZW50cygiIiwgImNzcy9mb28vYmFy
Lmh0bWwiLCBzaXguQnl0ZXNJTyhjb2RlKSkKKyAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisg
ICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICgnTUlTU0lORy1MSU5LJywKKyAgICAgICAg
ICdUZXN0Y2FzZSBmaWxlIG11c3QgaGF2ZSBhIGxpbmsgdG8gYSBzcGVjJywKKyAgICAgICAgICJj
c3MvZm9vL2Jhci5odG1sIiwKKyAgICAgICAgIE5vbmUpLAorICAgIF0KKworCitkZWYgdGVzdF9j
c3NfbWlzc2luZ19maWxlX21hbnVhbCgpOgorICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVu
dHMoIiIsICJjc3MvZm9vL2Jhci1tYW51YWwuaHRtbCIsIHNpeC5CeXRlc0lPKGIiIikpCisgICAg
Y2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAo
J01JU1NJTkctTElOSycsCisgICAgICAgICAnVGVzdGNhc2UgZmlsZSBtdXN0IGhhdmUgYSBsaW5r
IHRvIGEgc3BlYycsCisgICAgICAgICAiY3NzL2Zvby9iYXItbWFudWFsLmh0bWwiLAorICAgICAg
ICAgTm9uZSksCisgICAgXQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiZmlsZW5hbWUi
LCBbCisgICAgImZvby53b3JrZXIuanMiLAorICAgICJmb28uYW55LmpzIiwKK10pCitAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoImlucHV0LGVycm9yIiwgWworICAgIChiIiIiLy9NRVRBOiB0aW1l
b3V0PWxvbmdcbiIiIiwgTm9uZSksCisgICAgKGIiIiIvLyBNRVRBOiB0aW1lb3V0PWxvbmdcbiIi
IiwgTm9uZSksCisgICAgKGIiIiIvLyAgTUVUQTogdGltZW91dD1sb25nXG4iIiIsIE5vbmUpLAor
ICAgIChiIiIiLy8gTUVUQTogc2NyaXB0PWZvby5qc1xuIiIiLCBOb25lKSwKKyAgICAoYiIiIiMg
TUVUQTpcbiIiIiwgTm9uZSksCisgICAgKGIiIiJcbi8vIE1FVEE6IHRpbWVvdXQ9bG9uZ1xuIiIi
LCAoMiwgIlNUUkFZLU1FVEFEQVRBIikpLAorICAgIChiIiIiIC8vIE1FVEE6IHRpbWVvdXQ9bG9u
Z1xuIiIiLCAoMSwgIklOREVOVEVELU1FVEFEQVRBIikpLAorICAgIChiIiIiLy8gTUVUQTogdGlt
ZW91dD1sb25nXG4vLyBNRVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgTm9uZSksCisgICAgKGIiIiIv
LyBNRVRBOiB0aW1lb3V0PWxvbmdcblxuLy8gTUVUQTogdGltZW91dD1sb25nXG4iIiIsICgzLCAi
U1RSQVktTUVUQURBVEEiKSksCisgICAgKGIiIiIvLyBNRVRBOiB0aW1lb3V0PWxvbmdcbi8vIFN0
YXJ0IG9mIHRoZSB0ZXN0XG4vLyBNRVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgKDMsICJTVFJBWS1N
RVRBREFUQSIpKSwKKyAgICAoYiIiIi8vIE1FVEE6XG4iIiIsICgxLCAiQlJPS0VOLU1FVEFEQVRB
IikpLAorICAgIChiIiIiLy8gTUVUQTogZm9vYmFyXG4iIiIsICgxLCAiQlJPS0VOLU1FVEFEQVRB
IikpLAorICAgIChiIiIiLy8gTUVUQTogZm9vPWJhclxuIiIiLCAoMSwgIlVOS05PV04tTUVUQURB
VEEiKSksCisgICAgKGIiIiIvLyBNRVRBOiB0aW1lb3V0PWJhclxuIiIiLCAoMSwgIlVOS05PV04t
VElNRU9VVC1NRVRBREFUQSIpKSwKK10pCitkZWYgdGVzdF9zY3JpcHRfbWV0YWRhdGEoZmlsZW5h
bWUsIGlucHV0LCBlcnJvcik6CisgICAgZXJyb3JzID0gY2hlY2tfZmlsZV9jb250ZW50cygiIiwg
ZmlsZW5hbWUsIHNpeC5CeXRlc0lPKGlucHV0KSkKKyAgICBjaGVja19lcnJvcnMoZXJyb3JzKQor
CisgICAgaWYgZXJyb3IgaXMgbm90IE5vbmU6CisgICAgICAgIGxpbmUsIGtpbmQgPSBlcnJvcgor
ICAgICAgICBtZXNzYWdlcyA9IHsKKyAgICAgICAgICAgICJTVFJBWS1NRVRBREFUQSI6ICJNZXRh
ZGF0YSBjb21tZW50cyBzaG91bGQgc3RhcnQgdGhlIGZpbGUiLAorICAgICAgICAgICAgIklOREVO
VEVELU1FVEFEQVRBIjogIk1ldGFkYXRhIGNvbW1lbnRzIHNob3VsZCBzdGFydCB0aGUgbGluZSIs
CisgICAgICAgICAgICAiQlJPS0VOLU1FVEFEQVRBIjogIk1ldGFkYXRhIGNvbW1lbnQgaXMgbm90
IGZvcm1hdHRlZCBjb3JyZWN0bHkiLAorICAgICAgICAgICAgIlVOS05PV04tVElNRU9VVC1NRVRB
REFUQSI6ICJVbmV4cGVjdGVkIHZhbHVlIGZvciB0aW1lb3V0IG1ldGFkYXRhIiwKKyAgICAgICAg
ICAgICJVTktOT1dOLU1FVEFEQVRBIjogIlVuZXhwZWN0ZWQga2luZCBvZiBtZXRhZGF0YSIsCisg
ICAgICAgIH0KKyAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAoa2luZCwK
KyAgICAgICAgICAgICBtZXNzYWdlc1traW5kXSwKKyAgICAgICAgICAgICBmaWxlbmFtZSwKKyAg
ICAgICAgICAgICBsaW5lKSwKKyAgICAgICAgXQorICAgIGVsc2U6CisgICAgICAgIGFzc2VydCBl
cnJvcnMgPT0gW10KKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImlucHV0LGVycm9yIiwg
WworICAgIChiIiIiI01FVEE6IHRpbWVvdXQ9bG9uZ1xuIiIiLCBOb25lKSwKKyAgICAoYiIiIiMg
TUVUQTogdGltZW91dD1sb25nXG4iIiIsIE5vbmUpLAorICAgIChiIiIiIyAgTUVUQTogdGltZW91
dD1sb25nXG4iIiIsIE5vbmUpLAorICAgIChiIiIiIi8vIE1FVEE6IlxuIiIiLCBOb25lKSwKKyAg
ICAoYiIiIlxuIyBNRVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgKDIsICJTVFJBWS1NRVRBREFUQSIp
KSwKKyAgICAoYiIiIiAjIE1FVEE6IHRpbWVvdXQ9bG9uZ1xuIiIiLCAoMSwgIklOREVOVEVELU1F
VEFEQVRBIikpLAorICAgIChiIiIiIyBNRVRBOiB0aW1lb3V0PWxvbmdcbiMgTUVUQTogdGltZW91
dD1sb25nXG4iIiIsIE5vbmUpLAorICAgIChiIiIiIyBNRVRBOiB0aW1lb3V0PWxvbmdcblxuIyBN
RVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgKDMsICJTVFJBWS1NRVRBREFUQSIpKSwKKyAgICAoYiIi
IiMgTUVUQTogdGltZW91dD1sb25nXG4jIFN0YXJ0IG9mIHRoZSB0ZXN0XG4jIE1FVEE6IHRpbWVv
dXQ9bG9uZ1xuIiIiLCAoMywgIlNUUkFZLU1FVEFEQVRBIikpLAorICAgIChiIiIiIyBNRVRBOlxu
IiIiLCAoMSwgIkJST0tFTi1NRVRBREFUQSIpKSwKKyAgICAoYiIiIiMgTUVUQTogZm9vYmFyXG4i
IiIsICgxLCAiQlJPS0VOLU1FVEFEQVRBIikpLAorICAgIChiIiIiIyBNRVRBOiBmb289YmFyXG4i
IiIsICgxLCAiVU5LTk9XTi1NRVRBREFUQSIpKSwKKyAgICAoYiIiIiMgTUVUQTogdGltZW91dD1i
YXJcbiIiIiwgKDEsICJVTktOT1dOLVRJTUVPVVQtTUVUQURBVEEiKSksCitdKQorZGVmIHRlc3Rf
cHl0aG9uX21ldGFkYXRhKGlucHV0LCBlcnJvcik6CisgICAgZmlsZW5hbWUgPSAidGVzdC5weSIK
KyAgICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCBmaWxlbmFtZSwgc2l4LkJ5dGVz
SU8oaW5wdXQpKQorICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICBpZiBlcnJvciBpcyBu
b3QgTm9uZToKKyAgICAgICAgbGluZSwga2luZCA9IGVycm9yCisgICAgICAgIG1lc3NhZ2VzID0g
eworICAgICAgICAgICAgIlNUUkFZLU1FVEFEQVRBIjogIk1ldGFkYXRhIGNvbW1lbnRzIHNob3Vs
ZCBzdGFydCB0aGUgZmlsZSIsCisgICAgICAgICAgICAiSU5ERU5URUQtTUVUQURBVEEiOiAiTWV0
YWRhdGEgY29tbWVudHMgc2hvdWxkIHN0YXJ0IHRoZSBsaW5lIiwKKyAgICAgICAgICAgICJCUk9L
RU4tTUVUQURBVEEiOiAiTWV0YWRhdGEgY29tbWVudCBpcyBub3QgZm9ybWF0dGVkIGNvcnJlY3Rs
eSIsCisgICAgICAgICAgICAiVU5LTk9XTi1USU1FT1VULU1FVEFEQVRBIjogIlVuZXhwZWN0ZWQg
dmFsdWUgZm9yIHRpbWVvdXQgbWV0YWRhdGEiLAorICAgICAgICAgICAgIlVOS05PV04tTUVUQURB
VEEiOiAiVW5leHBlY3RlZCBraW5kIG9mIG1ldGFkYXRhIiwKKyAgICAgICAgfQorICAgICAgICBh
c3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgIChraW5kLAorICAgICAgICAgICAgIG1lc3Nh
Z2VzW2tpbmRdLAorICAgICAgICAgICAgIGZpbGVuYW1lLAorICAgICAgICAgICAgIGxpbmUpLAor
ICAgICAgICBdCisgICAgZWxzZToKKyAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL3Rlc3RfbGludC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2xpbnQucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTM3
NWUyZjc1NjBiNDYwNDJlMmJmNGY5ZGNkZWNjY2Q1Y2M4NDEwZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy90ZXN0X2xpbnQucHkKQEAgLTAsMCArMSw0MjIgQEAKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgdW5pY29kZV9saXRlcmFscworCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworaW1wb3J0IG1v
Y2sKK2ltcG9ydCBweXRlc3QKK2ltcG9ydCBzaXgKKworZnJvbSAuLi5sb2NhbHBhdGhzIGltcG9y
dCByZXBvX3Jvb3QKK2Zyb20gLi4gaW1wb3J0IGxpbnQgYXMgbGludF9tb2QKK2Zyb20gLi5saW50
IGltcG9ydCBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycywgcGFyc2Vfd2hpdGVsaXN0LCBsaW50LCBj
cmVhdGVfcGFyc2VyCisKK19kdW1teV9yZXBvID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFt
ZShfX2ZpbGVfXyksICJkdW1teSIpCisKK2RlZiBfbW9ja19saW50KG5hbWUsICoqa3dhcmdzKToK
KyAgICB3cmFwcGVkID0gZ2V0YXR0cihsaW50X21vZCwgbmFtZSkKKyAgICByZXR1cm4gbW9jay5w
YXRjaChsaW50X21vZC5fX25hbWVfXyArICIuIiArIG5hbWUsIHdyYXBzPXdyYXBwZWQsICoqa3dh
cmdzKQorCisKK2RlZiB0ZXN0X2ZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKCk6CisgICAgd2hpdGVs
aXN0ID0geworICAgICAgICAnQ09OU09MRSc6IHsKKyAgICAgICAgICAgICdzdmcvKic6IHsxMn0K
KyAgICAgICAgfSwKKyAgICAgICAgJ0lOREVOVCBUQUJTJzogeworICAgICAgICAgICAgJ3N2Zy8q
Jzoge05vbmV9CisgICAgICAgIH0KKyAgICB9CisgICAgIyBwYXJzZV93aGl0ZWxpc3Qgbm9ybWFs
aXNlcyB0aGUgY2FzZS9wYXRoIG9mIHRoZSBtYXRjaCBzdHJpbmcgc28gbmVlZCB0byBkbyB0aGUg
c2FtZQorICAgIHdoaXRlbGlzdCA9IHtlOiB7b3MucGF0aC5ub3JtY2FzZShrKTogdiBmb3Igaywg
diBpbiBwLml0ZW1zKCl9CisgICAgICAgICAgICAgICAgIGZvciBlLCBwIGluIHdoaXRlbGlzdC5p
dGVtcygpfQorICAgICMgcGF0aHMgcGFzc2VkIGludG8gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMg
YXJlIGFsd2F5cyBVbml4IHN0eWxlCisgICAgZmlsdGVyZWRmaWxlID0gJ3N2Zy90ZXN0Lmh0bWwn
CisgICAgdW5maWx0ZXJlZGZpbGUgPSAnaHRtbC90ZXN0Lmh0bWwnCisgICAgIyBUZXN0cyBmb3Ig
cGFzc2luZyBubyBlcnJvcnMKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3Jz
KHdoaXRlbGlzdCwgW10pCisgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtdCisgICAgZmlsdGVyZWQg
PSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtdKQorICAgIGFzc2VydCBmaWx0
ZXJlZCA9PSBbXQorICAgICMgVGVzdHMgZm9yIGZpbHRlcmluZyBvbiBmaWxlIGFuZCBsaW5lIG51
bWJlcgorICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBb
WydDT05TT0xFJywgJycsIGZpbHRlcmVkZmlsZSwgMTJdXSkKKyAgICBhc3NlcnQgZmlsdGVyZWQg
PT0gW10KKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKHdoaXRlbGlzdCwg
W1snQ09OU09MRScsICcnLCB1bmZpbHRlcmVkZmlsZSwgMTJdXSkKKyAgICBhc3NlcnQgZmlsdGVy
ZWQgPT0gW1snQ09OU09MRScsICcnLCB1bmZpbHRlcmVkZmlsZSwgMTJdXQorICAgIGZpbHRlcmVk
ID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBbWydDT05TT0xFJywgJycsIGZp
bHRlcmVkZmlsZSwgMTFdXSkKKyAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW1snQ09OU09MRScsICcn
LCBmaWx0ZXJlZGZpbGUsIDExXV0KKyAgICAjIFRlc3RzIGZvciBmaWx0ZXJpbmcgb24ganVzdCBm
aWxlCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtb
J0lOREVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTJdXSkKKyAgICBhc3NlcnQgZmlsdGVy
ZWQgPT0gW10KKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKHdoaXRlbGlz
dCwgW1snSU5ERU5UIFRBQlMnLCAnJywgZmlsdGVyZWRmaWxlLCAxMV1dKQorICAgIGFzc2VydCBm
aWx0ZXJlZCA9PSBbXQorICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hp
dGVsaXN0LCBbWydJTkRFTlQgVEFCUycsICcnLCB1bmZpbHRlcmVkZmlsZSwgMTFdXSkKKyAgICBh
c3NlcnQgZmlsdGVyZWQgPT0gW1snSU5ERU5UIFRBQlMnLCAnJywgdW5maWx0ZXJlZGZpbGUsIDEx
XV0KKworCitkZWYgdGVzdF9wYXJzZV93aGl0ZWxpc3QoKToKKyAgICBpbnB1dF9idWZmZXIgPSBz
aXguU3RyaW5nSU8oIiIiCisjIENvbW1lbnQKK0NSIEFUIEVPTDogc3ZnL2ltcG9ydC8qCitDUiBB
VCBFT0w6IHN0cmVhbXMvcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKworSU5ERU5UIFRBQlM6IC5n
aXRtb2R1bGVzCitJTkRFTlQgVEFCUzogYXBwLXVyaS8qCitJTkRFTlQgVEFCUzogc3ZnLyoKKwor
VFJBSUxJTkcgV0hJVEVTUEFDRTogYXBwLXVyaS8qCisKK0NPTlNPTEU6c3RyZWFtcy9yZXNvdXJj
ZXMvdGVzdC11dGlscy5qczogMTIKKworQ1IgQVQgRU9MLCBJTkRFTlQgVEFCUzogaHRtbC90ZXN0
LmpzCisKK0NSIEFUIEVPTCwgSU5ERU5UIFRBQlM6IGh0bWwvdGVzdDIuanM6IDQyCisKKyo6Ki5w
ZGYKKyo6cmVzb3VyY2VzLyoKKworKiwgQ1IgQVQgRU9MOiAqLnBuZworIiIiKQorCisgICAgZXhw
ZWN0ZWRfZGF0YSA9IHsKKyAgICAgICAgJ0lOREVOVCBUQUJTJzogeworICAgICAgICAgICAgJy5n
aXRtb2R1bGVzJzoge05vbmV9LAorICAgICAgICAgICAgJ2FwcC11cmkvKic6IHtOb25lfSwKKyAg
ICAgICAgICAgICdzdmcvKic6IHtOb25lfSwKKyAgICAgICAgICAgICdodG1sL3Rlc3QuanMnOiB7
Tm9uZX0sCisgICAgICAgICAgICAnaHRtbC90ZXN0Mi5qcyc6IHs0Mn0sCisgICAgICAgIH0sCisg
ICAgICAgICdUUkFJTElORyBXSElURVNQQUNFJzogeworICAgICAgICAgICAgJ2FwcC11cmkvKic6
IHtOb25lfSwKKyAgICAgICAgfSwKKyAgICAgICAgJ0NPTlNPTEUnOiB7CisgICAgICAgICAgICAn
c3RyZWFtcy9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyc6IHsxMn0sCisgICAgICAgIH0sCisgICAg
ICAgICdDUiBBVCBFT0wnOiB7CisgICAgICAgICAgICAnc3RyZWFtcy9yZXNvdXJjZXMvdGVzdC11
dGlscy5qcyc6IHtOb25lfSwKKyAgICAgICAgICAgICdzdmcvaW1wb3J0LyonOiB7Tm9uZX0sCisg
ICAgICAgICAgICAnaHRtbC90ZXN0LmpzJzoge05vbmV9LAorICAgICAgICAgICAgJ2h0bWwvdGVz
dDIuanMnOiB7NDJ9LAorICAgICAgICB9CisgICAgfQorICAgIGV4cGVjdGVkX2RhdGEgPSB7ZTog
e29zLnBhdGgubm9ybWNhc2Uoayk6IHYgZm9yIGssIHYgaW4gcC5pdGVtcygpfQorICAgICAgICAg
ICAgICAgICAgICAgZm9yIGUsIHAgaW4gZXhwZWN0ZWRfZGF0YS5pdGVtcygpfQorICAgIGV4cGVj
dGVkX2lnbm9yZWQgPSB7b3MucGF0aC5ub3JtY2FzZSh4KSBmb3IgeCBpbiB7IioucGRmIiwgInJl
c291cmNlcy8qIiwgIioucG5nIn19CisgICAgZGF0YSwgaWdub3JlZCA9IHBhcnNlX3doaXRlbGlz
dChpbnB1dF9idWZmZXIpCisgICAgYXNzZXJ0IGRhdGEgPT0gZXhwZWN0ZWRfZGF0YQorICAgIGFz
c2VydCBpZ25vcmVkID09IGV4cGVjdGVkX2lnbm9yZWQKKworCitkZWYgdGVzdF9saW50X25vX2Zp
bGVzKGNhcGxvZyk6CisgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbXSwgIm5vcm1hbCIpCisg
ICAgYXNzZXJ0IHJ2ID09IDAKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYg
dGVzdF9saW50X2lnbm9yZWRfZmlsZShjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hl
Y2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQo
ImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAg
ICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJicm9rZW5faWdub3JlZC5odG1sIl0s
ICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFzc2Vy
dCBub3QgbW9ja2VkX2NoZWNrX3BhdGguY2FsbGVkCisgICAgICAgICAgICBhc3NlcnQgbm90IG1v
Y2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxlZAorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9
PSAiIgorCisKK2RlZiB0ZXN0X2xpbnRfbm90X2V4aXN0aW5nX2ZpbGUoY2FwbG9nKToKKyAgICB3
aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAg
ICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNr
X2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICAjIHJlYWxseSBsb25nIHBhdGgtbGludGVkIGZp
bGVuYW1lCisgICAgICAgICAgICBuYW1lID0gImEiICogMjU2ICsgIi5odG1sIgorICAgICAgICAg
ICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbbmFtZV0sICJub3JtYWwiKQorICAgICAgICAgICAg
YXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFzc2VydCBub3QgbW9ja2VkX2NoZWNrX3BhdGgu
Y2FsbGVkCisgICAgICAgICAgICBhc3NlcnQgbm90IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRz
LmNhbGxlZAorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X2xpbnRf
cGFzc2luZyhjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1v
Y2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29u
dGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0g
bGludChfZHVtbXlfcmVwbywgWyJva2F5Lmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBh
c3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxf
Y291bnQgPT0gMQorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRz
LmNhbGxfY291bnQgPT0gMQorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0
ZXN0X2xpbnRfZmFpbGluZyhjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0
aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNr
X2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAg
ICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJicm9rZW4uaHRtbCJdLCAibm9ybWFsIikKKyAg
ICAgICAgICAgIGFzc2VydCBydiA9PSAxCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNr
X3BhdGguY2FsbF9jb3VudCA9PSAxCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2Zp
bGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAxCisgICAgYXNzZXJ0ICJUUkFJTElORyBXSElURVNQ
QUNFIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2VydCAiYnJva2VuLmh0bWw6MSIgaW4gY2FwbG9n
LnRleHQKKworCitkZWYgdGVzdF9yZWZfZXhpc3RlbnRfcmVsYXRpdmUoY2FwbG9nKToKKyAgICB3
aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAg
ICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNr
X2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsicmVm
L2V4aXN0ZW50X3JlbGF0aXZlLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQg
cnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQg
PT0gMQorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxf
Y291bnQgPT0gMQorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X3Jl
Zl9leGlzdGVudF9yb290X3JlbGF0aXZlKGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50KCJj
aGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGlu
dCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgor
ICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbInJlZi9leGlzdGVudF9yb290X3Jl
bGF0aXZlLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAg
ICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMQorICAgICAg
ICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMQor
ICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X3JlZl9ub25fZXhpc3Rl
bnRfcmVsYXRpdmUoY2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBh
cyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxl
X2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBy
diA9IGxpbnQoX2R1bW15X3JlcG8sIFsicmVmL25vbl9leGlzdGVudF9yZWxhdGl2ZS5odG1sIl0s
ICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDEKKyAgICAgICAgICAgIGFzc2Vy
dCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDEKKyAgICAgICAgICAgIGFzc2VydCBt
b2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDEKKyAgICBhc3NlcnQgIk5P
Ti1FWElTVEVOVC1SRUYiIGluIGNhcGxvZy50ZXh0CisgICAgYXNzZXJ0ICJyZWYvbm9uX2V4aXN0
ZW50X3JlbGF0aXZlLmh0bWwiIGluIGNhcGxvZy50ZXh0CisgICAgYXNzZXJ0ICJub25fZXhpc3Rl
bnRfZmlsZS5odG1sIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0ZXN0X3JlZl9ub25fZXhpc3Rl
bnRfcm9vdF9yZWxhdGl2ZShjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0
aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNr
X2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAg
ICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJyZWYvbm9uX2V4aXN0ZW50X3Jvb3RfcmVsYXRp
dmUuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAxCisgICAgICAg
ICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAxCisgICAgICAgICAg
ICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAxCisgICAg
YXNzZXJ0ICJOT04tRVhJU1RFTlQtUkVGIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2VydCAicmVm
L25vbl9leGlzdGVudF9yb290X3JlbGF0aXZlLmh0bWwiIGluIGNhcGxvZy50ZXh0CisgICAgYXNz
ZXJ0ICIvbm9uX2V4aXN0ZW50X2ZpbGUuaHRtbCIgaW4gY2FwbG9nLnRleHQKKworCisKK2RlZiB0
ZXN0X3JlZl9hYnNvbHV0ZV91cmwoY2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNr
X3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJj
aGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAg
ICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsicmVmL2Fic29sdXRlLmh0bWwiXSwgIm5v
cm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMQorICAgICAgICAgICAgYXNzZXJ0IG1v
Y2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMQorICAgICAgICAgICAgYXNzZXJ0IG1vY2tl
ZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMQorICAgIGFzc2VydCAiQUJTT0xV
VEUtVVJMLVJFRiIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3NlcnQgImh0dHA6Ly9leGFtcGxlLmNv
bS9yZWZlcmVuY2UuaHRtbCIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3NlcnQgInJlZi9hYnNvbHV0
ZS5odG1sIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0ZXN0X3JlZl9zYW1lX2ZpbGVfZW1wdHko
Y2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hl
Y2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikg
YXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1
bW15X3JlcG8sIFsicmVmL3NhbWVfZmlsZV9lbXB0eS5odG1sIl0sICJub3JtYWwiKQorICAgICAg
ICAgICAgYXNzZXJ0IHJ2ID09IDEKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0
aC5jYWxsX2NvdW50ID09IDEKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9j
b250ZW50cy5jYWxsX2NvdW50ID09IDEKKyAgICBhc3NlcnQgIlNBTUUtRklMRS1SRUYiIGluIGNh
cGxvZy50ZXh0CisgICAgYXNzZXJ0ICJzYW1lX2ZpbGVfZW1wdHkuaHRtbCIgaW4gY2FwbG9nLnRl
eHQKKworCitkZWYgdGVzdF9yZWZfc2FtZV9maWxlX3BhdGgoY2FwbG9nKToKKyAgICB3aXRoIF9t
b2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0
aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVf
Y29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsicmVmL3NhbWVf
ZmlsZV9wYXRoLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMQor
ICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMQorICAg
ICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0g
MQorICAgIGFzc2VydCAiU0FNRS1GSUxFLVJFRiIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3NlcnQg
InNhbWVfZmlsZV9wYXRoLmh0bWwiIGluIGNhcGxvZy50ZXh0CisKKworZGVmIHRlc3RfbGludF9w
YXNzaW5nX2FuZF9mYWlsaW5nKGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19w
YXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hl
Y2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAg
ICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImJyb2tlbi5odG1sIiwgIm9rYXkuaHRtbCJd
LCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAxCisgICAgICAgICAgICBhc3Nl
cnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAyCisgICAgICAgICAgICBhc3NlcnQg
bW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAgYXNzZXJ0ICJU
UkFJTElORyBXSElURVNQQUNFIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2VydCAiYnJva2VuLmh0
bWw6MSIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3NlcnQgIm9rYXkuaHRtbCIgbm90IGluIGNhcGxv
Zy50ZXh0CisKKworZGVmIHRlc3RfY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV9pZGVudGljYWxf
dGVzdChjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tl
ZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVu
dHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGlu
dChfZHVtbXlfcmVwbywgWyJjc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLmh0bWwiLCAiY3NzL2Nzcy11
bmlxdWUvYS5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDAKKyAg
ICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAg
ICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIK
KyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYgdGVzdF9jaGVja19jc3NfZ2xv
YmFsbHlfdW5pcXVlX2RpZmZlcmVudF90ZXN0KGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50
KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tf
bGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRz
OgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImNzcy9jc3MtdW5pcXVlL25v
dC1tYXRjaC9hLmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUvYS5odG1sIl0sICJub3JtYWwiKQorICAg
ICAgICAgICAgYXNzZXJ0IHJ2ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tf
cGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmls
ZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIKKyAgICBhc3NlcnQgIkNTUy1DT0xMSURJTkctVEVT
VC1OQU1FIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0ZXN0X2NoZWNrX2Nzc19nbG9iYWxseV91
bmlxdWVfZGlmZmVyZW50X3NwZWNfdGVzdChjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgi
Y2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xp
bnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoK
KyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJjc3MvY3NzLXVuaXF1ZS9zZWxl
Y3RvcnMvYS5odG1sIiwgImNzcy9jc3MtdW5pcXVlL2EuaHRtbCJdLCAibm9ybWFsIikKKyAgICAg
ICAgICAgIGFzc2VydCBydiA9PSAwCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3Bh
dGguY2FsbF9jb3VudCA9PSAyCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVf
Y29udGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisK
KworZGVmIHRlc3RfY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV9zdXBwb3J0X2lnbm9yZWQoY2Fw
bG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tf
cGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMg
bW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15
X3JlcG8sIFsiY3NzL2Nzcy11bmlxdWUvc3VwcG9ydC9hLmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUv
c3VwcG9ydC90b29scy9hLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYg
PT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0g
MgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291
bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X2NoZWNr
X2Nzc19nbG9iYWxseV91bmlxdWVfc3VwcG9ydF9pZGVudGljYWwoY2FwbG9nKToKKyAgICB3aXRo
IF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAg
d2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2Zp
bGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiY3NzL2Nz
cy11bmlxdWUvc3VwcG9ydC9hLmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9ydC9h
Lmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAg
ICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAg
YXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFz
c2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X2NoZWNrX2Nzc19nbG9iYWxseV91
bmlxdWVfc3VwcG9ydF9kaWZmZXJlbnQoY2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNo
ZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50
KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6Cisg
ICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiY3NzL2Nzcy11bmlxdWUvbm90LW1h
dGNoL3N1cHBvcnQvYS5odG1sIiwgImNzcy9jc3MtdW5pcXVlL3N1cHBvcnQvYS5odG1sIl0sICJu
b3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBt
b2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2Nr
ZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIKKyAgICBhc3NlcnQgIkNTUy1D
T0xMSURJTkctU1VQUE9SVC1OQU1FIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0ZXN0X2NoZWNr
X2Nzc19nbG9iYWxseV91bmlxdWVfdGVzdF9zdXBwb3J0KGNhcGxvZyk6CisgICAgd2l0aCBfbW9j
a19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGgg
X21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2Nv
bnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImNzcy9jc3MtdW5p
cXVlL3N1cHBvcnQvYS5odG1sIiwgImNzcy9jc3MtdW5pcXVlL2EuaHRtbCJdLCAibm9ybWFsIikK
KyAgICAgICAgICAgIGFzc2VydCBydiA9PSAwCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2No
ZWNrX3BhdGguY2FsbF9jb3VudCA9PSAyCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNr
X2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09
ICIiCisKKworZGVmIHRlc3RfY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV9yZWZfaWRlbnRpY2Fs
KGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2No
ZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIp
IGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9k
dW1teV9yZXBvLCBbImNzcy9jc3MtdW5pcXVlL2EtcmVmLmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUv
bWF0Y2gvYS1yZWYuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAw
CisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAyCisg
ICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9
PSAyCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisKKworZGVmIHRlc3RfY2hlY2tfY3Nz
X2dsb2JhbGx5X3VuaXF1ZV9yZWZfZGlmZmVyZW50KGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19s
aW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21v
Y2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRl
bnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImNzcy9jc3MtdW5pcXVl
L25vdC1tYXRjaC9hLXJlZi5odG1sIiwgImNzcy9jc3MtdW5pcXVlL2EtcmVmLmh0bWwiXSwgIm5v
cm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1v
Y2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tl
ZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCAiQ1NTLUNP
TExJRElORy1SRUYtTkFNRSIgaW4gY2FwbG9nLnRleHQKKworCitkZWYgdGVzdF9jaGVja19jc3Nf
Z2xvYmFsbHlfdW5pcXVlX3Rlc3RfcmVmKGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50KCJj
aGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGlu
dCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgor
ICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImNzcy9jc3MtdW5pcXVlL2EtcmVm
Lmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUvYS5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAg
YXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxs
X2NvdW50ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50
cy5jYWxsX2NvdW50ID09IDIKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYg
dGVzdF9jaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlX2lnbm9yZWQoY2FwbG9nKToKKyAgICB3aXRo
IF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAg
d2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2Zp
bGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiY3NzL2Nz
cy11bmlxdWUvdG9vbHMvYS5odG1sIiwgImNzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC90b29scy9h
Lmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAg
ICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAg
YXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFz
c2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X2NoZWNrX2Nzc19nbG9iYWxseV91
bmlxdWVfaWdub3JlZF9kaXIoY2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3Bh
dGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVj
a19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAg
ICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiY3NzL2Nzcy11bmlxdWUvc3VwcG9ydC9hLmh0
bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAgICAg
YXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMQorICAgICAgICAgICAgYXNz
ZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMQorICAgIGFzc2Vy
dCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X2FsbF9maWxlc3lzdGVtX3BhdGhzKCk6
CisgICAgd2l0aCBtb2NrLnBhdGNoKAorICAgICAgICAgICAgJ29zLndhbGsnLAorICAgICAgICAg
ICAgcmV0dXJuX3ZhbHVlPVsoJy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgWydkaXJf
YScsICdkaXJfYiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgWydmaWxlX2EnLCAnZmls
ZV9iJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAob3MucGF0aC5qb2luKCcuJywgJ2Rp
cl9hJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsnZmlsZV9jJywgJ2ZpbGVfZCddKV0KKyAgICApIGFzIG06CisgICAgICAgIGdv
dCA9IGxpc3QobGludF9tb2QuYWxsX2ZpbGVzeXN0ZW1fcGF0aHMoJy4nKSkKKyAgICAgICAgYXNz
ZXJ0IGdvdCA9PSBbJ2ZpbGVfYScsCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlX2InLAor
ICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oJ2Rpcl9hJywgJ2ZpbGVfYycpLAor
ICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oJ2Rpcl9hJywgJ2ZpbGVfZCcpXQor
CisKK2RlZiB0ZXN0X21haW5fd2l0aF9hcmdzKCk6CisgICAgb3JpZ19hcmd2ID0gc3lzLmFyZ3YK
KyAgICB0cnk6CisgICAgICAgIHN5cy5hcmd2ID0gWycuL2xpbnQnLCAnYScsICdiJywgJ2MnXQor
ICAgICAgICB3aXRoIF9tb2NrX2xpbnQoJ2xpbnQnLCByZXR1cm5fdmFsdWU9VHJ1ZSkgYXMgbToK
KyAgICAgICAgICAgIGxpbnRfbW9kLm1haW4oKip2YXJzKGNyZWF0ZV9wYXJzZXIoKS5wYXJzZV9h
cmdzKCkpKQorICAgICAgICAgICAgbS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChyZXBvX3Jvb3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcy5wYXRoLnJlbHBhdGgo
b3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCB4KSwgcmVwb19yb290KQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gWydhJywgJ2InLCAnYyddXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vcm1hbCIpCisgICAgZmluYWxseToK
KyAgICAgICAgc3lzLmFyZ3YgPSBvcmlnX2FyZ3YKKworCitkZWYgdGVzdF9tYWluX25vX2FyZ3Mo
KToKKyAgICBvcmlnX2FyZ3YgPSBzeXMuYXJndgorICAgIHRyeToKKyAgICAgICAgc3lzLmFyZ3Yg
PSBbJy4vbGludCddCisgICAgICAgIHdpdGggX21vY2tfbGludCgnbGludCcsIHJldHVybl92YWx1
ZT1UcnVlKSBhcyBtOgorICAgICAgICAgICAgd2l0aCBfbW9ja19saW50KCdjaGFuZ2VkX2ZpbGVz
JywgcmV0dXJuX3ZhbHVlPVsnZm9vJywgJ2JhciddKSBhcyBtMjoKKyAgICAgICAgICAgICAgICBs
aW50X21vZC5tYWluKCoqdmFycyhjcmVhdGVfcGFyc2VyKCkucGFyc2VfYXJncygpKSkKKyAgICAg
ICAgICAgICAgICBtLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKHJlcG9fcm9vdCwgWydmb28nLCAn
YmFyJ10sICJub3JtYWwiKQorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5hcmd2ID0gb3JpZ19h
cmd2CisKKworZGVmIHRlc3RfbWFpbl9hbGwoKToKKyAgICBvcmlnX2FyZ3YgPSBzeXMuYXJndgor
ICAgIHRyeToKKyAgICAgICAgc3lzLmFyZ3YgPSBbJy4vbGludCcsICctLWFsbCddCisgICAgICAg
IHdpdGggX21vY2tfbGludCgnbGludCcsIHJldHVybl92YWx1ZT1UcnVlKSBhcyBtOgorICAgICAg
ICAgICAgd2l0aCBfbW9ja19saW50KCdhbGxfZmlsZXN5c3RlbV9wYXRocycsIHJldHVybl92YWx1
ZT1bJ2ZvbycsICdiYXInXSkgYXMgbTI6CisgICAgICAgICAgICAgICAgbGludF9tb2QubWFpbigq
KnZhcnMoY3JlYXRlX3BhcnNlcigpLnBhcnNlX2FyZ3MoKSkpCisgICAgICAgICAgICAgICAgbS5h
c3NlcnRfY2FsbGVkX29uY2Vfd2l0aChyZXBvX3Jvb3QsIFsnZm9vJywgJ2JhciddLCAibm9ybWFs
IikKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMuYXJndiA9IG9yaWdfYXJndgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL3Rlc3RfcGF0aF9saW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X3BhdGhfbGludHMucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjU4MTgyODllYWNjNWVlOGE4NzlhYzk4YmEyM2VhOTIzM2U4ZmE3YwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy90ZXN0X3BhdGhfbGludHMucHkKQEAgLTAsMCArMSw0MSBAQAorZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCisKK2Zyb20gLi5saW50IGltcG9ydCBj
aGVja19wYXRoCitmcm9tIC5iYXNlIGltcG9ydCBjaGVja19lcnJvcnMKK2ltcG9ydCBweXRlc3QK
K2ltcG9ydCBzaXgKKworZGVmIHRlc3RfYWxsb3dlZF9wYXRoX2xlbmd0aCgpOgorICAgIGJhc2Vu
YW1lID0gMjkgKiAidGVzdC8iCisKKyAgICBmb3IgaWR4IGluIHJhbmdlKDUpOgorICAgICAgICBm
aWxlbmFtZSA9IGJhc2VuYW1lICsgaWR4ICogImEiCisKKyAgICAgICAgZXJyb3JzID0gY2hlY2tf
cGF0aCgiL2Zvby8iLCBmaWxlbmFtZSkKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKyAg
ICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbXQorCisKK2RlZiB0ZXN0X2ZvcmJpZGRlbl9wYXRoX2xl
bmd0aCgpOgorICAgIGJhc2VuYW1lID0gMjkgKiAidGVzdC8iCisKKyAgICBmb3IgaWR4IGluIHJh
bmdlKDUsIDEwKToKKyAgICAgICAgZmlsZW5hbWUgPSBiYXNlbmFtZSArIGlkeCAqICJhIgorICAg
ICAgICBtZXNzYWdlID0gIi8lcyBsb25nZXIgdGhhbiBtYXhpbXVtIHBhdGggbGVuZ3RoICglcyA+
IDE1MCkiICUgKGZpbGVuYW1lLCAxNDYgKyBpZHgpCisKKyAgICAgICAgZXJyb3JzID0gY2hlY2tf
cGF0aCgiL2Zvby8iLCBmaWxlbmFtZSkKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKyAg
ICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbKCJQQVRIIExFTkdUSCIsIG1lc3NhZ2UsIGZpbGVuYW1l
LCBOb25lKV0KKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJwYXRoX2VuZGluZyxnZW5lcmF0
ZWQiLCBbKCIud29ya2VyLmh0bWwiLCAiLndvcmtlci5qcyIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCIuYW55Lndvcmtlci5odG1sIiwgIi5h
bnkuanMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICgiLmFueS5odG1sIiwgIi5hbnkuanMiKV0pCitkZWYgdGVzdF9mb3JiaWRkZW5fcGF0aF9l
bmRpbmdzKHBhdGhfZW5kaW5nLCBnZW5lcmF0ZWQpOgorICAgIHBhdGggPSAiL3Rlc3QvdGVzdCIg
KyBwYXRoX2VuZGluZworCisgICAgbWVzc2FnZSA9ICgicGF0aCBlbmRzIHdpdGggJXMgd2hpY2gg
Y29sbGlkZXMgd2l0aCBnZW5lcmF0ZWQgdGVzdHMgZnJvbSAlcyBmaWxlcyIgJQorICAgICAgICAg
ICAgICAgKHBhdGhfZW5kaW5nLCBnZW5lcmF0ZWQpKQorCisgICAgZXJyb3JzID0gY2hlY2tfcGF0
aCgiL2Zvby8iLCBwYXRoKQorICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisgICAgYXNzZXJ0IGVy
cm9ycyA9PSBbKCJXT1JLRVIgQ09MTElTSU9OIiwgbWVzc2FnZSwgcGF0aCwgTm9uZSldCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L2l0ZW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkKaW5kZXggNjFiZTQ0NDNiNDAyMWE3ZGZmMDNm
NzM1YzE1ODc4NjcxNjM2NGExZi4uMDZhZTNjMjM2ZTYxNzA0N2YzMDhhNWE4NjQ0ZTk0ZjlhZmQx
NzkyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weQpAQCAtMTAyLDE3ICsx
MDIsMjAgQEAgY2xhc3MgVVJMTWFuaWZlc3RJdGVtKE1hbmlmZXN0SXRlbSk6CiBjbGFzcyBUZXN0
aGFybmVzc1Rlc3QoVVJMTWFuaWZlc3RJdGVtKToKICAgICBpdGVtX3R5cGUgPSAidGVzdGhhcm5l
c3MiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc291cmNlX2ZpbGUsIHVybCwgdXJsX2Jhc2U9
Ii8iLCB0aW1lb3V0PU5vbmUsIG1hbmlmZXN0PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBzb3VyY2VfZmlsZSwgdXJsLCB1cmxfYmFzZT0iLyIsIHRpbWVvdXQ9Tm9uZSwgdGVzdGRyaXZl
cj1GYWxzZSwgbWFuaWZlc3Q9Tm9uZSk6CiAgICAgICAgIFVSTE1hbmlmZXN0SXRlbS5fX2luaXRf
XyhzZWxmLCBzb3VyY2VfZmlsZSwgdXJsLCB1cmxfYmFzZT11cmxfYmFzZSwgbWFuaWZlc3Q9bWFu
aWZlc3QpCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgc2VsZi50ZXN0
ZHJpdmVyID0gdGVzdGRyaXZlcgogCiAgICAgZGVmIG1ldGFfa2V5KHNlbGYpOgotICAgICAgICBy
ZXR1cm4gKHNlbGYudGltZW91dCwpCisgICAgICAgIHJldHVybiAoc2VsZi50aW1lb3V0LCBzZWxm
LnRlc3Rkcml2ZXIpCiAKICAgICBkZWYgdG9fanNvbihzZWxmKToKICAgICAgICAgcnYgPSBVUkxN
YW5pZmVzdEl0ZW0udG9fanNvbihzZWxmKQogICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgbm90
IE5vbmU6CiAgICAgICAgICAgICBydlstMV1bInRpbWVvdXQiXSA9IHNlbGYudGltZW91dAorICAg
ICAgICBpZiBzZWxmLnRlc3Rkcml2ZXI6CisgICAgICAgICAgICBydlstMV1bInRlc3Rkcml2ZXIi
XSA9IHNlbGYudGVzdGRyaXZlcgogICAgICAgICByZXR1cm4gcnYKIAogICAgIEBjbGFzc21ldGhv
ZApAQCAtMTI0LDYgKzEyNyw3IEBAIGNsYXNzIFRlc3RoYXJuZXNzVGVzdChVUkxNYW5pZmVzdEl0
ZW0pOgogICAgICAgICAgICAgICAgICAgIHVybCwKICAgICAgICAgICAgICAgICAgICB1cmxfYmFz
ZT1tYW5pZmVzdC51cmxfYmFzZSwKICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PWV4dHJhcy5n
ZXQoInRpbWVvdXQiKSwKKyAgICAgICAgICAgICAgICAgICB0ZXN0ZHJpdmVyPWJvb2woZXh0cmFz
LmdldCgidGVzdGRyaXZlciIpKSwKICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdD1tYW5pZmVz
dCkKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKaW5k
ZXggYmY3MmY0NWIzNTE3YjFmMWY1MzM2NzI0YTMxZWMyNzg1MTYxZjBlZS4uMDkzZmMyYmQ0NzAy
Zjc4ZjlhMGFiYzc3OWE1ZTczYTU5NTk3MzBkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9zb3VyY2VmaWxlLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3Qvc291cmNlZmlsZS5weQpAQCAtNTQsOCArNTQsNyBAQCBjbGFzcyBTb3VyY2VGaWxl
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAieGh0bWwiOmxhbWJkYSB4OkVsZW1lbnRUcmVlLnBh
cnNlKHgsIFhNTFBhcnNlci5YTUxQYXJzZXIoKSksCiAgICAgICAgICAgICAgICAic3ZnIjpsYW1i
ZGEgeDpFbGVtZW50VHJlZS5wYXJzZSh4LCBYTUxQYXJzZXIuWE1MUGFyc2VyKCkpfQogCi0gICAg
cm9vdF9kaXJfbm9uX3Rlc3QgPSBzZXQoWyJjb21tb24iLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAid29yay1pbi1wcm9ncmVzcyJdKQorICAgIHJvb3RfZGlyX25vbl90ZXN0ID0gc2V0
KFsiY29tbW9uIl0pCiAKICAgICBkaXJfbm9uX3Rlc3QgPSBzZXQoWyJyZXNvdXJjZXMiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnQiLApAQCAtNjMsOCArNjIsNyBAQCBjbGFzcyBT
b3VyY2VGaWxlKG9iamVjdCk6CiAKICAgICBkaXJfcGF0aF9ub25fdGVzdCA9IHsoImNzczIxIiwg
ImFyY2hpdmUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoImNzcyIsICJDU1MyIiwgImFy
Y2hpdmUiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoImNzcyIsICJjb21tb24iKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAoImNzcyIsICJ3b3JrLWluLXByb2dyZXNzIil9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgKCJjc3MiLCAiY29tbW9uIil9CiAKICAgICBkZWYgX19pbml0
X18oc2VsZiwgdGVzdHNfcm9vdCwgcmVsX3BhdGgsIHVybF9iYXNlLCBjb250ZW50cz1Ob25lKToK
ICAgICAgICAgIiIiT2JqZWN0IHJlcHJlc2VudGluZyBhIGZpbGUgaW4gYSBzb3VyY2UgdHJlZS4K
QEAgLTM4Miw2ICszODAsMjAgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgICAg
IHJldHVybiBydgogCisgICAgQGNhY2hlZF9wcm9wZXJ0eQorICAgIGRlZiB0ZXN0ZHJpdmVyX25v
ZGVzKHNlbGYpOgorICAgICAgICAiIiJMaXN0IG9mIEVsZW1lbnRUcmVlIEVsZW1lbnRzIGNvcnJl
c3BvbmRpbmcgdG8gbm9kZXMgcmVwcmVzZW50aW5nIGEKKyAgICAgICAgdGVzdGRyaXZlci5qcyBz
Y3JpcHQiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucm9vdC5maW5kYWxsKCIuLy97aHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbH1zY3JpcHRbQHNyYz0nL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpz
J10iKQorCisgICAgQGNhY2hlZF9wcm9wZXJ0eQorICAgIGRlZiBoYXNfdGVzdGRyaXZlcihzZWxm
KToKKyAgICAgICAgIiIiQm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgY29udGVu
dCByZXByZXNlbnRzIGEKKyAgICAgICAgdGVzdGhhcm5lc3MuanMgdGVzdCIiIgorICAgICAgICBp
ZiBzZWxmLnJvb3QgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJl
dHVybiBib29sKHNlbGYudGVzdGRyaXZlcl9ub2RlcykKKwogICAgIEBjYWNoZWRfcHJvcGVydHkK
ICAgICBkZWYgcmVmdGVzdF9ub2RlcyhzZWxmKToKICAgICAgICAgIiIiTGlzdCBvZiBFbGVtZW50
VHJlZSBFbGVtZW50cyBjb3JyZXNwb25kaW5nIHRvIG5vZGVzIHJlcHJlc2VudGluZyBhCkBAIC01
MjMsOSArNTM1LDEwIEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKIAogICAgICAgICBlbGlm
IHNlbGYuY29udGVudF9pc190ZXN0aGFybmVzczoKICAgICAgICAgICAgIHJ2ID0gVGVzdGhhcm5l
c3NUZXN0Lml0ZW1fdHlwZSwgW10KKyAgICAgICAgICAgIHRlc3Rkcml2ZXIgPSBzZWxmLmhhc190
ZXN0ZHJpdmVyCiAgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiBzZWxmLnRlc3RfdmFyaWFudHM6
CiAgICAgICAgICAgICAgICAgdXJsID0gc2VsZi51cmwgKyB2YXJpYW50Ci0gICAgICAgICAgICAg
ICAgcnZbMV0uYXBwZW5kKFRlc3RoYXJuZXNzVGVzdChzZWxmLCB1cmwsIHRpbWVvdXQ9c2VsZi50
aW1lb3V0KSkKKyAgICAgICAgICAgICAgICBydlsxXS5hcHBlbmQoVGVzdGhhcm5lc3NUZXN0KHNl
bGYsIHVybCwgdGltZW91dD1zZWxmLnRpbWVvdXQsIHRlc3Rkcml2ZXI9dGVzdGRyaXZlcikpCiAK
ICAgICAgICAgZWxpZiBzZWxmLmNvbnRlbnRfaXNfcmVmX25vZGU6CiAgICAgICAgICAgICBydiA9
IChSZWZUZXN0Tm9kZS5pdGVtX3R5cGUsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336193</attachid>
            <date>2018-03-21 07:59:25 -0700</date>
            <delta_ts>2018-03-22 11:14:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183796-20180321105924.patch</filename>
            <type>text/plain</type>
            <size>127001</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODAzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2U3ZTMzY2YxMmJiNjcxNTI1Y2Q5YjRmMjMxMmJjNjgx
OTE1MzI4Ny4uODMxOTI1YTJmZDgyY2Q1MGZkYjczZWM2OTBhMDkxY2FiMTU5NmJiNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDE4LTAzLTIxICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgTGludCB3ZWItcGxhdGZvcm0tdGVzdHMgY2hhbmdlcyB3aXRoIHRoZSB3cHQg
bGludGVyIGJlZm9yZSBleHBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mzc5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weToK
KyAgICAgICAgKFRlc3RFeHBvcnRlci5jaGFuZ2VkX3dwdF9maWxlcyk6CisgICAgICAgIChUZXN0
RXhwb3J0ZXIpOgorICAgICAgICAoVGVzdEV4cG9ydGVyLmxpbnRfY2hhbmdlZF93cHRfZmlsZXMp
OgorICAgICAgICAoVGVzdEV4cG9ydGVyLmRvX2V4cG9ydCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RFeHBv
cnRlclRlc3QuTW9ja0dpdC5jaGFuZ2VkX2ZpbGVzKToKKwogMjAxOC0wMy0yMSAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBK
U0MgYmluZGluZ3Mgbm90IGludHJvc3BlY3RhYmxlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2MvdGVzdF9leHBvcnRlci5weQppbmRleCA4YjNkNjY2YzI4MGNiZDVkYWZmYzE1MjAzZTM3MTc1
YjhkMWZiMWVlLi4zNzhmMmM2YWVmNDk1OTVjNzZjMjYzODRkYmRjYjJhYzcyMjk4OGJlIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkKQEAgLTI4LDYgKzI4
LDcgQEAgaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQg
dGltZQoraW1wb3J0IHN5cwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZ2l0
IGltcG9ydCBHaXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKQEAgLTQx
LDYgKzQyLDkgQEAgV0VCS0lUX1dQVF9ESVIgPSAnTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cycKIFdQVF9QUl9VUkwgPSAiaHR0cHM6Ly9naXRodWIuY29tL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvcHVsbC8iCiBXRUJLSVRfRVhQT1JUX1BSX0xBQkVMID0gJ3dlYmtp
dC1leHBvcnQnCiAKKyMgQWRkIHdlYmtpdCB0byB0aGUgcHl0aG9uIHBhdGggc28gd2UgY2FuIGlt
cG9ydCB0aGUgV1BUIGxpbnQgbW9kdWxlCitzeXMucGF0aC5hcHBlbmQoV0VCS0lUX1dQVF9ESVIp
Citmcm9tIHRvb2xzLmxpbnQubGludCBpbXBvcnQgbGludCwgbGludF9wYXRocwogCiBjbGFzcyBU
ZXN0RXhwb3J0ZXIob2JqZWN0KToKIApAQCAtMjIyLDcgKzIyNiwyNCBAQCBjbGFzcyBUZXN0RXhw
b3J0ZXIob2JqZWN0KToKICAgICAgICAgaWYgbm90IHNlbGYuX3dwdF9mb3JrX3JlbW90ZSBpbiBz
ZWxmLl9naXQucmVtb3RlKFtdKToKICAgICAgICAgICAgIHNlbGYuX2dpdC5yZW1vdGUoWyJhZGQi
LCBzZWxmLl93cHRfZm9ya19yZW1vdGUsIHNlbGYuX3dwdF9mb3JrX3B1c2hfdXJsXSkKIAorICAg
IGRlZiBjaGFuZ2VkX3dwdF9maWxlcyhzZWxmKToKKyAgICAgICAgY2hhbmdlZF9maWxlcyA9IHNl
bGYuX2hvc3Quc2NtKCkuY2hhbmdlZF9maWxlcygpCisgICAgICAgIHJldHVybiBmaWx0ZXIobGFt
YmRhIHg6IHguc3RhcnRzd2l0aChXRUJLSVRfV1BUX0RJUiksIGNoYW5nZWRfZmlsZXMpCisKKyAg
ICBkZWYgbGludF9jaGFuZ2VkX3dwdF9maWxlcyhzZWxmKToKKyAgICAgICAgaGVyZSA9IG9zLnBh
dGguYWJzcGF0aChvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSkKKyAgICAgICAgcmVwb19yb290
ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihoZXJlLCBvcy5wYXJkaXIsIG9zLnBhcmRp
ciwgb3MucGFyZGlyLCBvcy5wYXJkaXIsICdMYXlvdXRUZXN0cycsICdpbXBvcnRlZCcsICd3M2Mn
LCAnd2ViLXBsYXRmb3JtLXRlc3RzJykpCisgICAgICAgIHRlc3RfcGF0aCA9IHNlbGYuY2hhbmdl
ZF93cHRfZmlsZXMoKQorICAgICAgICBwYXRocyA9IGxpbnRfcGF0aHMoeydwYXRocyc6IHRlc3Rf
cGF0aH0sIHJlcG9fcm9vdCkKKyAgICAgICAgbGludF9lcnJvcnMgPSBsaW50KHJlcG9fcm9vdCwg
cGF0aHMsICdub3JtYWwnKQorCisgICAgICAgIHJldHVybiBsaW50X2Vycm9ycworCiAgICAgZGVm
IGRvX2V4cG9ydChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5saW50X2NoYW5nZWRfd3B0X2ZpbGVz
KCk6CisgICAgICAgICAgICBfbG9nLmVycm9yKCJMaW50IGVycm9ycyBkZXRlY3RlZC4gUGxlYXNl
IGFkZHJlc3MgdGhlIGFib3ZlIGVycm9ycyBiZWZvcmUgYXR0ZW1wdGluZyB0byBleHBvcnQgY2hh
bmdlcyB0byB0aGUgd2ViLXBsYXRmb3JtLXRlc3QgcmVwb3NpdG9yeS4iKQorICAgICAgICAgICAg
cmV0dXJuCisKICAgICAgICAgZ2l0X3BhdGNoX2ZpbGUgPSBzZWxmLmNyZWF0ZV9naXRfcGF0Y2go
KQogCiAgICAgICAgIGlmIG5vdCBnaXRfcGF0Y2hfZmlsZToKQEAgLTI5NSw3ICszMTYsNyBAQCBk
ZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKICAgICAgICAgICAgICAgICByZXR1cm4gIiVzOiAlcyIg
JSAocmVjb3JkLmxldmVsbmFtZSwgcmVjb3JkLmdldE1lc3NhZ2UoKSkKICAgICAgICAgICAgIHJl
dHVybiByZWNvcmQuZ2V0TWVzc2FnZSgpCiAKLSAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dl
cigpCisgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3dlYmtpdHB5LnczYy50ZXN0X2V4
cG9ydGVyJykKICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQogICAgIGhhbmRsZXIg
PSBMb2dIYW5kbGVyKCkKICAgICBoYW5kbGVyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0LnB5
CmluZGV4IDNjNDNmZjY4MjlhYWUzYjNiYmQ0MTM3YjNhODMzMGZjY2I5ZDgxZTguLmM0MjMxMTk2
MzJiMzlkMWFjMWMzZDQxZDI4ZGFlYTlhODliZGQ3NDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weQpAQCAtOTUsNiArOTUs
MTAgQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
ICAgICBzZWxmLmNhbGxzLmFwcGVuZCgnY3JlYXRlX3BhdGNoICcgKyBjb21taXQgKyAnICcgKyBz
dHIoYXJndW1lbnRzKSkKICAgICAgICAgICAgIHJldHVybiAnbXkgcGF0Y2ggY29udGFpbmluZyBz
b21lIGRpZmZzJwogCisgICAgICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYpOgorICAgICAgICAg
ICAgc2VsZi5jYWxscy5hcHBlbmQoJ2NoYW5nZWRfZmlsZXMnKQorICAgICAgICAgICAgcmV0dXJu
IFsnTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90ZXN0MS5odG1s
J10KKwogICAgIGNsYXNzIE15TW9ja0hvc3QoTW9ja0hvc3QpOgogICAgICAgICBkZWYgX19pbml0
X18oc2VsZik6CiAgICAgICAgICAgICBNb2NrSG9zdC5fX2luaXRfXyhzZWxmKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYzdmZmZkZDlkNjNjYjc4MTA5ZGU1NmZlY2EzZjA2Mzlk
ZjM2MGNkYy4uZTE3MWVmMTZmMDlkNmE1MjYzNDdlMGIzMjQyNWM4Nzc3ZWQ5NGYyNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU5IEBACisyMDE4LTAzLTIxICBC
cmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+CisKKyAgICAgICAgSW1wb3J0
IGxpbnQgdG9vbGluZyBmcm9tIHRoZSB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwbyB0byBzdXBwb3J0
CisgICAgICAgIGxpbnRpbmcgY2hhbmdlcyB3aXRoIHRoZSB3cHQgbGludGVyIGJlZm9yZSBleHBv
cnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
Mzc5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9fX2luaXRfXy5weTogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25vcmUucHk6
IEFkZGVkLgorICAgICAgICAoZm5tYXRjaF90cmFuc2xhdGUpOgorICAgICAgICAocGFyc2VfbGlu
ZSk6CisgICAgICAgIChQYXRoRmlsdGVyKToKKyAgICAgICAgKFBhdGhGaWx0ZXIuX19pbml0X18p
OgorICAgICAgICAoUGF0aEZpbHRlci5fcmVhZF9pZ25vcmUpOgorICAgICAgICAoUGF0aEZpbHRl
ci5fcmVhZF9saW5lKToKKyAgICAgICAgKFBhdGhGaWx0ZXIuX19jYWxsX18pOgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdGVzdHMvX19pbml0X18ucHk6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdGVzdHMv
dGVzdF9naXRpZ25vcmUucHk6IEFkZGVkLgorICAgICAgICAoZXhwYW5kX2RhdGEpOgorICAgICAg
ICAodGVzdHNfbWF0Y2gpOgorICAgICAgICAodGVzdHNfbm9fbWF0Y2gpOgorICAgICAgICAodGVz
dHNfaW52YWxpZCk6CisgICAgICAgICh0ZXN0X3BhdGhfZmlsdGVyKToKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9fX2luaXRfXy5weTogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvY29tbWFuZHMuanNvbjogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvZm5tYXRjaC5weTogQWRkZWQuCisg
ICAgICAgIChmbm1hdGNoKToKKyAgICAgICAgKGZubWF0Y2hjYXNlKToKKyAgICAgICAgKGZpbHRl
cik6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weTogQWRk
ZWQuCisgICAgICAgIChzZXR1cF9sb2dnaW5nKToKKyAgICAgICAgKGFsbF9maWxlc3lzdGVtX3Bh
dGhzKToKKyAgICAgICAgKF9hbGxfZmlsZXNfZXF1YWwpOgorICAgICAgICAoY2hlY2tfcGF0aF9s
ZW5ndGgpOgorICAgICAgICAoY2hlY2tfd29ya2VyX2NvbGxpc2lvbik6CisgICAgICAgIChjaGVj
a19haGVtX2NvcHkpOgorICAgICAgICAoY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZSk6CisgICAg
ICAgIChwYXJzZV93aGl0ZWxpc3QpOgorICAgICAgICAoZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMp
OgorICAgICAgICAoUmVnZXhwKToKKyAgICAgICAgKFJlZ2V4cC5fX2luaXRfXyk6CisgICAgICAg
IChSZWdleHAuYXBwbGllcyk6CisgICAgICAgIChSZWdleHAuc2VhcmNoKToKKyAgICAgICAgKFRy
YWlsaW5nV2hpdGVzcGFjZVJlZ2V4cCk6CisgICAgICAgIChUYWJzUmVnZXhwKToKKyAgICAgICAg
KENSUmVnZXhwKToKKyAgICAgICAgKFNldFRpbWVvdXRSZWdleHApOgorICAgICAgICAoVzNDVGVz
dE9yZ1JlZ2V4cCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RSZWdleHApOgorICAgICAgICAo
V2ViaWRsMlJlZ2V4cCk6CisgICAgICAgIChDb25zb2xlUmVnZXhwKToKKyAgICAgICAgKEdlbmVy
YXRlVGVzdHNSZWdleHApOgorICAgICAgICAoUHJpbnRSZWdleHApOgorICAgICAgICAoTGF5b3V0
VGVzdHNSZWdleHApOgorICAgICAgICAoU3BlY2lhbFBvd2Vyc1JlZ2V4cCk6CisgICAgICAgIChj
aGVja19yZWdleHBfbGluZSk6CisgICAgICAgIChjaGVja19wYXJzZWQpOgorICAgICAgICAoQVNU
Q2hlY2spOgorICAgICAgICAoQVNUQ2hlY2suY2hlY2spOgorICAgICAgICAoT3Blbk1vZGVDaGVj
ayk6CisgICAgICAgIChPcGVuTW9kZUNoZWNrLmNoZWNrKToKKyAgICAgICAgKGNoZWNrX3B5dGhv
bl9hc3QpOgorICAgICAgICAoY2hlY2tfc2NyaXB0X21ldGFkYXRhKToKKyAgICAgICAgKGNoZWNr
X3BhdGgpOgorICAgICAgICAoY2hlY2tfYWxsX3BhdGhzKToKKyAgICAgICAgKGNoZWNrX2ZpbGVf
Y29udGVudHMpOgorICAgICAgICAob3V0cHV0X2Vycm9yc190ZXh0KToKKyAgICAgICAgKG91dHB1
dF9lcnJvcnNfbWFya2Rvd24pOgorICAgICAgICAob3V0cHV0X2Vycm9yc19qc29uKToKKyAgICAg
ICAgKG91dHB1dF9lcnJvcl9jb3VudCk6CisgICAgICAgIChjaGFuZ2VkX2ZpbGVzKToKKyAgICAg
ICAgKGxpbnRfcGF0aHMpOgorICAgICAgICAoY3JlYXRlX3BhcnNlcik6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKGxpbnQpOgorICAgICAgICAobGludC5wcm9jZXNzX2Vycm9ycyk6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvX19pbml0X18ucHk6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2Jhc2Uu
cHk6IEFkZGVkLgorICAgICAgICAoY2hlY2tfZXJyb3JzKToKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9rZW4uaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvYnJva2VuX2ln
bm9yZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvYS1yZWYuaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvYS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLXJlZi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS9tYXRjaC9hLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvYS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9zdXBwb3J0L3Rvb2xzL2EuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvbWF0Y2gvdG9vbHMvYS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0
Y2gvYS1yZWYuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvbm90LW1hdGNoL3N1cHBvcnQvYS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9u
b3QtbWF0Y2gvdG9vbHMvYS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zZWxlY3RvcnMvYS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS9jc3MvY3NzLXVuaXF1ZS9zdXBwb3J0L2EuaHRtbDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc3Vw
cG9ydC90b29scy9hLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3Rvb2xzL2EuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvZGVw
ZW5kZW5jeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9saW50LndoaXRlbGlzdDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvb2theS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvYWJz
b2x1dGUuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvcmVmL2V4aXN0ZW50X3JlbGF0aXZlLXJlZi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvZXhp
c3RlbnRfcmVsYXRpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2V4aXN0ZW50X3Jvb3RfcmVsYXRpdmUuaHRtbDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvcmVmL25vbl9leGlzdGVudF9yZWxhdGl2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvbm9uX2V4aXN0ZW50X3Jv
b3RfcmVsYXRpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9lbXB0eS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvc2Ft
ZV9maWxlX3BhdGguaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvdGVzdF9maWxlX2xpbnRzLnB5OiBBZGRlZC4KKyAgICAgICAgKGNoZWNr
X3dpdGhfZmlsZXMpOgorICAgICAgICAodGVzdF90cmFpbGluZ193aGl0ZXNwYWNlKToKKyAgICAg
ICAgKHRlc3RfaW5kZW50X3RhYnMpOgorICAgICAgICAodGVzdF9pbmRlbnRfdGFicy5mb28pOgor
ICAgICAgICAodGVzdF9jcl9ub3RfYXRfZW9sKToKKyAgICAgICAgKHRlc3RfY3JfYXRfZW9sKToK
KyAgICAgICAgKHRlc3RfdzNjX3Rlc3Rfb3JnKToKKyAgICAgICAgKHRlc3Rfd2ViX3BsYXRmb3Jt
X3Rlc3QpOgorICAgICAgICAodGVzdF93ZWJpZGwyX2pzKToKKyAgICAgICAgKHRlc3RfY29uc29s
ZSk6CisgICAgICAgICh0ZXN0X3NldFRpbWVvdXQpOgorICAgICAgICAodGVzdF9ldmVudFNlbmRl
cik6CisgICAgICAgICh0ZXN0X3Rlc3RSdW5uZXIpOgorICAgICAgICAodGVzdF93aW5kb3dEb3RJ
bnRlcm5hbHMpOgorICAgICAgICAodGVzdF9tZXRhX3RpbWVvdXQpOgorICAgICAgICAodGVzdF90
ZXN0aGFybmVzc3JlcG9ydF9wYXRoKToKKyAgICAgICAgKHRlc3RfcHJpbnRfc3RhdGVtZW50KToK
KyAgICAgICAgKHRlc3RfcHJpbnRfc3RhdGVtZW50LmZvbyk6CisgICAgICAgICh0ZXN0X3ByaW50
X2Z1bmN0aW9uKToKKyAgICAgICAgKHRlc3RfcHJpbnRfZnVuY3Rpb24uZm9vKToKKyAgICAgICAg
KGZpcnN0KToKKyAgICAgICAgKHNlY29uZCk6CisgICAgICAgICh0aGlyZCk6CisgICAgICAgIChm
b3VydGgpOgorICAgICAgICAoZmlmdGgpOgorICAgICAgICAodGVzdF9jc3NfbWlzc2luZ19maWxl
X21hbnVhbCk6CisgICAgICAgICh0ZXN0X3NjcmlwdF9tZXRhZGF0YSk6CisgICAgICAgICh0ZXN0
X3B5dGhvbl9tZXRhZGF0YSk6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvdGVzdF9saW50LnB5OiBBZGRlZC4KKyAgICAgICAgKF9tb2NrX2xpbnQpOgorICAg
ICAgICAodGVzdF9maWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyk6CisgICAgICAgICh0ZXN0X3BhcnNl
X3doaXRlbGlzdCk6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvdGVzdF9wYXRoX2xpbnRzLnB5OiBBZGRlZC4KKyAgICAgICAgKHRlc3RfYWxsb3dlZF9wYXRo
X2xlbmd0aCk6CisgICAgICAgICh0ZXN0X2ZvcmJpZGRlbl9wYXRoX2xlbmd0aCk6CisgICAgICAg
ICh0ZXN0X2ZvcmJpZGRlbl9wYXRoX2VuZGluZ3MpOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5OgorICAgICAgICAoVGVzdGhhcm5lc3NUZXN0Ll9f
aW5pdF9fKToKKyAgICAgICAgKFRlc3RoYXJuZXNzVGVzdC5tZXRhX2tleSk6CisgICAgICAgIChU
ZXN0aGFybmVzc1Rlc3QudG9fanNvbik6CisgICAgICAgIChUZXN0aGFybmVzc1Rlc3QuZnJvbV9q
c29uKToKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291cmNl
ZmlsZS5weToKKyAgICAgICAgKFNvdXJjZUZpbGUpOgorICAgICAgICAoU291cmNlRmlsZS50ZXN0
ZHJpdmVyX25vZGVzKToKKyAgICAgICAgKFNvdXJjZUZpbGUuaGFzX3Rlc3Rkcml2ZXIpOgorICAg
ICAgICAoU291cmNlRmlsZS5tYW5pZmVzdF9pdGVtcyk6CisKIDIwMTgtMDMtMjAgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIFVw
ZGF0ZSB0aGUgdGltaW5nIG1vZGVsIHdoZW4gcGVuZGluZyB0YXNrcyBzY2hlZHVsZSBjaGFuZ2Vz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2dpdGlnbm9yZS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3Jl
L2dpdGlnbm9yZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjllZDZiNDEyZTRl
YWE0NjEwODdjODQ5YTc2ODU1ZDgyYzdmNmFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvZ2l0aWdu
b3JlLnB5CkBAIC0wLDAgKzEsMTQ4IEBACitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgcmUKK2lt
cG9ydCBvcworCitlbmRfc3BhY2UgPSByZS5jb21waWxlKHIiKFteXFxdXHMpKiQiKQorCisKK2Rl
ZiBmbm1hdGNoX3RyYW5zbGF0ZShwYXQsIHBhdGhfbmFtZT1GYWxzZSk6CisgICAgcGFydHMgPSBb
XQorICAgIHNlcSA9IEZhbHNlCisgICAgaSA9IDAKKyAgICBpZiBwYXRbMF0gPT0gIi8iIG9yIHBh
dGhfbmFtZToKKyAgICAgICAgcGFydHMuYXBwZW5kKCJeIikKKyAgICAgICAgYW55X2NoYXIgPSAi
W14vXSIKKyAgICAgICAgaWYgcGF0WzBdID09ICIvIjoKKyAgICAgICAgICAgIHBhdCA9IHBhdFsx
Ol0KKyAgICBlbHNlOgorICAgICAgICBhbnlfY2hhciA9ICIuIgorICAgICAgICBwYXJ0cy5hcHBl
bmQoIl4oPzouKi8pPyIpCisgICAgd2hpbGUgaSA8IGxlbihwYXQpOgorICAgICAgICBjID0gcGF0
W2ldCisgICAgICAgIGlmIGMgPT0gIlxcIjoKKyAgICAgICAgICAgIGlmIGkgPCBsZW4ocGF0KSAt
IDE6CisgICAgICAgICAgICAgICAgaSArPSAxCisgICAgICAgICAgICAgICAgYyA9IHBhdFtpXQor
ICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChyZS5lc2NhcGUoYykpCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgZWxpZiBzZXE6
CisgICAgICAgICAgICBpZiBjID09ICJdIjoKKyAgICAgICAgICAgICAgICBzZXEgPSBGYWxzZQor
ICAgICAgICAgICAgICAgICMgRmlyc3QgdHdvIGNhc2VzIGFyZSB0byBkZWFsIHdpdGggdGhlIGNh
c2Ugd2hlcmUgLyBpcyB0aGUgb25seSBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAjIGluIHRo
ZSBzZXF1ZW5jZSBidXQgcGF0aF9uYW1lIGlzIFRydWUgc28gaXQgc2hvdWxkbid0IG1hdGNoIGFu
eXRoaW5nCisgICAgICAgICAgICAgICAgaWYgcGFydHNbLTFdID09ICJbIjoKKyAgICAgICAgICAg
ICAgICAgICAgcGFydHMgPSBwYXJ0c1s6LTFdCisgICAgICAgICAgICAgICAgZWxpZiBwYXJ0c1st
MV0gPT0gIl4iIGFuZCBwYXJ0c1stMl0gPT0gIlsiOgorICAgICAgICAgICAgICAgICAgICBwYXJ0
cyA9IHBhcnRzWzotMl0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg
ICBwYXJ0cy5hcHBlbmQoYykKKyAgICAgICAgICAgIGVsaWYgYyA9PSAiLSI6CisgICAgICAgICAg
ICAgICAgcGFydHMuYXBwZW5kKGMpCisgICAgICAgICAgICBlbGlmIG5vdCAocGF0aF9uYW1lIGFu
ZCBjID09ICIvIik6CisgICAgICAgICAgICAgICAgcGFydHMgKz0gcmUuZXNjYXBlKGMpCisgICAg
ICAgIGVsaWYgYyA9PSAiWyI6CisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoIlsiKQorICAgICAg
ICAgICAgaWYgaSA8IGxlbihwYXQpIC0gMSBhbmQgcGF0W2krMV0gaW4gKCIhIiwgIl4iKToKKyAg
ICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoIl4iKQorICAgICAgICAgICAgICAgIGkgKz0gMQor
ICAgICAgICAgICAgc2VxID0gVHJ1ZQorICAgICAgICBlbGlmIGMgPT0gIioiOgorICAgICAgICAg
ICAgaWYgaSA8IGxlbihwYXQpIC0gMSBhbmQgcGF0W2krMV0gPT0gIioiOgorICAgICAgICAgICAg
ICAgIHBhcnRzLmFwcGVuZChhbnlfY2hhciArICIqIikKKyAgICAgICAgICAgICAgICBpICs9IDEK
KyAgICAgICAgICAgICAgICBpZiBpIDwgbGVuKHBhdCkgLSAxIGFuZCBwYXRbaSsxXSA9PSAiKiI6
CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKGFueV9jaGFyICsgIioiKQorICAgICAgICBl
bGlmIGMgPT0gIj8iOgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKGFueV9jaGFyKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKHJlLmVzY2FwZShjKSkKKyAgICAgICAg
aSArPSAxCisKKyAgICBpZiBzZXE6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICBwYXJ0
cy5hcHBlbmQoIiQiKQorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIHJlLmNvbXBpbGUoIiIuam9p
bihwYXJ0cykpCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgcmFpc2UKKworCitkZWYg
cGFyc2VfbGluZShsaW5lKToKKyAgICBsaW5lID0gbGluZS5yc3RyaXAoKQorICAgIGlmIG5vdCBs
aW5lIG9yIGxpbmVbMF0gPT0gIiMiOgorICAgICAgICByZXR1cm4KKworICAgIGludmVydCA9IGxp
bmVbMF0gPT0gIiEiCisgICAgaWYgaW52ZXJ0OgorICAgICAgICBsaW5lID0gbGluZVsxOl0KKwor
ICAgIGRpcl9vbmx5ID0gbGluZVstMV0gPT0gIi8iCisKKyAgICBpZiBkaXJfb25seToKKyAgICAg
ICAgbGluZSA9IGxpbmVbOi0xXQorCisgICAgcmV0dXJuIGludmVydCwgZGlyX29ubHksIGZubWF0
Y2hfdHJhbnNsYXRlKGxpbmUsICIvIiBpbiBsaW5lKQorCisKK2NsYXNzIFBhdGhGaWx0ZXIob2Jq
ZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdCwgZXh0cmFzPU5vbmUpOgorICAgICAg
ICBpZiByb290OgorICAgICAgICAgICAgaWdub3JlX3BhdGggPSBvcy5wYXRoLmpvaW4ocm9vdCwg
Ii5naXRpZ25vcmUiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWdub3JlX3BhdGggPSBO
b25lCisgICAgICAgIGlmIG5vdCBpZ25vcmVfcGF0aCBhbmQgbm90IGV4dHJhczoKKyAgICAgICAg
ICAgIHNlbGYudHJpdmlhbCA9IFRydWUKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxm
LnRyaXZpYWwgPSBGYWxzZQorCisgICAgICAgIHNlbGYucnVsZXNfZmlsZSA9IFtdCisgICAgICAg
IHNlbGYucnVsZXNfZGlyID0gW10KKworICAgICAgICBpZiBleHRyYXMgaXMgTm9uZToKKyAgICAg
ICAgICAgIGV4dHJhcyA9IFtdCisKKyAgICAgICAgaWYgaWdub3JlX3BhdGggYW5kIG9zLnBhdGgu
ZXhpc3RzKGlnbm9yZV9wYXRoKToKKyAgICAgICAgICAgIHNlbGYuX3JlYWRfaWdub3JlKGlnbm9y
ZV9wYXRoKQorCisgICAgICAgIGZvciBpdGVtIGluIGV4dHJhczoKKyAgICAgICAgICAgIHNlbGYu
X3JlYWRfbGluZShpdGVtKQorCisgICAgZGVmIF9yZWFkX2lnbm9yZShzZWxmLCBpZ25vcmVfcGF0
aCk6CisgICAgICAgIHdpdGggb3BlbihpZ25vcmVfcGF0aCkgYXMgZjoKKyAgICAgICAgICAgIGZv
ciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9saW5lKGxpbmUpCisKKyAg
ICBkZWYgX3JlYWRfbGluZShzZWxmLCBsaW5lKToKKyAgICAgICAgcGFyc2VkID0gcGFyc2VfbGlu
ZShsaW5lKQorICAgICAgICBpZiBub3QgcGFyc2VkOgorICAgICAgICAgICAgcmV0dXJuCisgICAg
ICAgIGludmVydCwgZGlyX29ubHksIHJlZ2V4cCA9IHBhcnNlZAorICAgICAgICBpZiBkaXJfb25s
eToKKyAgICAgICAgICAgIHNlbGYucnVsZXNfZGlyLmFwcGVuZCgocmVnZXhwLCBpbnZlcnQpKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5ydWxlc19maWxlLmFwcGVuZCgocmVnZXhw
LCBpbnZlcnQpKQorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBv
cy5wYXRoLnNlcCAhPSAiLyI6CisgICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKG9zLnBh
dGguc2VwLCAiLyIpCisKKyAgICAgICAgaWYgc2VsZi50cml2aWFsOgorICAgICAgICAgICAgcmV0
dXJuIFRydWUKKworICAgICAgICBwYXRoX2lzX2RpciA9IHBhdGhbLTFdID09ICIvIgorICAgICAg
ICBpZiBwYXRoX2lzX2RpcjoKKyAgICAgICAgICAgIHBhdGggPSBwYXRoWzotMV0KKyAgICAgICAg
ICAgIHJ1bGVzID0gc2VsZi5ydWxlc19kaXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJ1
bGVzID0gc2VsZi5ydWxlc19maWxlCisKKyAgICAgICAgaW5jbHVkZSA9IFRydWUKKyAgICAgICAg
Zm9yIHJlZ2V4cCwgaW52ZXJ0IGluIHJ1bGVzOgorICAgICAgICAgICAgaWYgbm90IGluY2x1ZGUg
YW5kIGludmVydCBhbmQgcmVnZXhwLm1hdGNoKHBhdGgpOgorICAgICAgICAgICAgICAgIGluY2x1
ZGUgPSBUcnVlCisgICAgICAgICAgICBlbGlmIGluY2x1ZGUgYW5kIG5vdCBpbnZlcnQgYW5kIHJl
Z2V4cC5tYXRjaChwYXRoKToKKyAgICAgICAgICAgICAgICBpbmNsdWRlID0gRmFsc2UKKyAgICAg
ICAgcmV0dXJuIGluY2x1ZGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL3Rlc3RzL19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUv
dGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1
YWQ4YzJlNDhjNTM5MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdGVzdHMvdGVzdF9naXRpZ25vcmUucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9y
ZS90ZXN0cy90ZXN0X2dpdGlnbm9yZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGYzMzUzZTk0MTA1YmQxM2Q5
OTZiY2M0YjNiOTA4NjY1ODZhYWIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdGVzdHMvdGVzdF9n
aXRpZ25vcmUucHkKQEAgLTAsMCArMSw3NSBAQAoraW1wb3J0IHB5dGVzdAorCitmcm9tIC4uZ2l0
aWdub3JlIGltcG9ydCBmbm1hdGNoX3RyYW5zbGF0ZSwgUGF0aEZpbHRlcgorCittYXRjaF9kYXRh
ID0gWworICAgICgiZm9vIiwgRmFsc2UsIFsiYS9mb28iLCAiZm9vIl0pLAorICAgICgiKi5hIiwg
RmFsc2UsIFsiZm9vLmEiLCAiYS9mb28uYSIsICJhL2IvZm9vLmEiLCAiYS5hL2Zvby5hIl0pLAor
ICAgICgiKi5weVtjb10iLCBGYWxzZSwgWyJhLnB5YyIsICJhLnB5byIsICJhL2IvYy5weWMiXSks
CisgICAgKCJcXCMqIiwgRmFsc2UsIFsiI2EiLCAiYS8jYiJdKSwKKyAgICAoIiojIiwgRmFsc2Us
IFsiYSMiLCAiYS9iIyIsICIjYSMiXSksCisgICAgKCIvKi5jIiwgRmFsc2UsIFsiYS5jIiwgIi5j
Il0pLAorICAgICgiKiovYiIsIEZhbHNlLCBbImEvYiIsICJhL2MvYiJdKSwKKyAgICAoIipiIiwg
VHJ1ZSwgWyJhYiJdKSwKKyAgICAoIioqL2IiLCBUcnVlLCBbImEvYiJdKQorXQorCittaXNtYXRj
aF9kYXRhID0gWworICAgICgiZm9vIiwgRmFsc2UsIFsiZm9vYiIsICJhZm9vIl0pLAorICAgICgi
Ki5hIiwgRmFsc2UsIFsiYSIsICJmb286YSIsICJhLmEvZm9vIl0pLAorICAgICgiKi5weVtjb10i
LCBGYWxzZSwgWyJhLnB5ZCIsICJweW8iXSksCisgICAgKCIvKi5jIiwgRmFsc2UsIFsiYS9iLmMi
XSksCisgICAgKCIqYiIsIFRydWUsIFsiYS9iIl0pLAorICAgICgiKipiIiwgVHJ1ZSwgWyJhL2Ii
XSksCisgICAgKCJhWy9dYiIsIFRydWUsIFsiYS9iIl0pLAorICAgICgiKiovYiIsIFRydWUsIFsi
YS9jL2IiXSksCitdCisKK2ludmFsaWRfZGF0YSA9IFsKKyAgICAiW2EiLAorICAgICIqKiovZm9v
IiwKKyAgICAiYVxcIiwKK10KKworZmlsdGVyX2RhdGEgPSBbCisgICAgKCJmb28iLCBUcnVlKSwK
KyAgICAoImEiLCBGYWxzZSksCisgICAgKCJhL2IiLCBGYWxzZSksCisgICAgKCJhL2MiLCBUcnVl
KSwKKyAgICAoImEvYy8iLCBGYWxzZSksCisgICAgKCJjL2IiLCBUcnVlKQorXQorCitkZWYgZXhw
YW5kX2RhdGEoY29tcGFjdF9kYXRhKToKKyAgICBmb3IgcGF0dGVybiwgcGF0aF9uYW1lLCBpbnB1
dHMgaW4gY29tcGFjdF9kYXRhOgorICAgICAgICBmb3IgaW5wdXQgaW4gaW5wdXRzOgorICAgICAg
ICAgICAgeWllbGQgcGF0dGVybiwgaW5wdXQsIHBhdGhfbmFtZQorCitAcHl0ZXN0Lm1hcmsucGFy
YW1ldHJpemUoInBhdHRlcm4sIGlucHV0LCBwYXRoX25hbWUiLCBleHBhbmRfZGF0YShtYXRjaF9k
YXRhKSkKK2RlZiB0ZXN0c19tYXRjaChwYXR0ZXJuLCBpbnB1dCwgcGF0aF9uYW1lKToKKyAgICBy
ZWdleHAgPSBmbm1hdGNoX3RyYW5zbGF0ZShwYXR0ZXJuLCBwYXRoX25hbWUpCisgICAgYXNzZXJ0
IHJlZ2V4cC5tYXRjaChpbnB1dCkgaXMgbm90IE5vbmUKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRy
aXplKCJwYXR0ZXJuLCBpbnB1dCwgcGF0aF9uYW1lIiwgZXhwYW5kX2RhdGEobWlzbWF0Y2hfZGF0
YSkpCitkZWYgdGVzdHNfbm9fbWF0Y2gocGF0dGVybiwgaW5wdXQsIHBhdGhfbmFtZSk6CisgICAg
cmVnZXhwID0gZm5tYXRjaF90cmFuc2xhdGUocGF0dGVybiwgcGF0aF9uYW1lKQorICAgIGFzc2Vy
dCByZWdleHAubWF0Y2goaW5wdXQpIGlzIE5vbmUKKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXpl
KCJwYXR0ZXJuIiwgaW52YWxpZF9kYXRhKQorZGVmIHRlc3RzX2ludmFsaWQocGF0dGVybik6Cisg
ICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICBmbm1hdGNoX3RyYW5z
bGF0ZShwYXR0ZXJuLCBGYWxzZSkKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6
CisgICAgICAgIGZubWF0Y2hfdHJhbnNsYXRlKHBhdHRlcm4sIFRydWUpCisKK0BweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgicGF0aCwgZXhwZWN0ZWQiLCBmaWx0ZXJfZGF0YSkKK2RlZiB0ZXN0X3Bh
dGhfZmlsdGVyKHBhdGgsIGV4cGVjdGVkKToKKyAgICBleHRyYXMgPSBbCisgICAgICAgICIjZm9v
IiwKKyAgICAgICAgImEgICIsCisgICAgICAgICIqKi9iIiwKKyAgICAgICAgImEvYy8iLAorICAg
ICAgICAiIWMvYiIsCisgICAgXQorICAgIGYgPSBQYXRoRmlsdGVyKE5vbmUsIGV4dHJhcykKKyAg
ICBhc3NlcnQgZihwYXRoKSA9PSBleHBlY3RlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L19faW5p
dF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU1ZWI1ZTEyZDVmODlmYzlmY2QwZWUxMGI2NmIxNjE0ZDQyZGY2
ODQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvX19pbml0X18ucHkKQEAgLTAsMCArMSBAQAorZnJvbSAuIGlt
cG9ydCBsaW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvY29tbWFuZHMuanNvbiBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9jb21tYW5kcy5qc29uCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmE4ZTk4NDRmYWZlZTk5OTgwODg0YmI0ZjUxYjIwMGQ5OTFmYTUzZmYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvY29tbWFuZHMuanNvbgpAQCAtMCwwICsxLDMgQEAKK3sibGludCI6CisgeyJwYXRoIjog
ImxpbnQucHkiLCAic2NyaXB0IjogIm1haW4iLCAicGFyc2VyIjogImNyZWF0ZV9wYXJzZXIiLCAi
aGVscCI6ICJSdW4gdGhlIGxpbnQiLAorICAidmlydHVhbGVudiI6IGZhbHNlfX0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC9mbm1hdGNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L2ZubWF0Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZlM2ViMGFhOWU1YWYwN2UxMWFk
NWIwOGQ5MGY4MjliOGE1MWE1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9mbm1hdGNoLnB5CkBAIC0wLDAg
KzEsMzIgQEAKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisKK2ltcG9y
dCBmbm1hdGNoIGFzIF9zdGRsaWJfZm5tYXRjaAoraW1wb3J0IG9zCisKKworX19hbGxfXyA9IFsi
Zm5tYXRjaCIsICJmbm1hdGNoY2FzZSIsICJmaWx0ZXIiLCAidHJhbnNsYXRlIl0KKworCitkZWYg
Zm5tYXRjaChuYW1lLCBwYXQpOgorICAgIG5hbWUgPSBvcy5wYXRoLm5vcm1jYXNlKG5hbWUpCisg
ICAgcGF0ID0gb3MucGF0aC5ub3JtY2FzZShwYXQpCisgICAgcmV0dXJuIGZubWF0Y2hjYXNlKG5h
bWUsIHBhdCkKKworCitkZWYgZm5tYXRjaGNhc2UobmFtZSwgcGF0KToKKyAgICBpZiAnPycgbm90
IGluIHBhdCBhbmQgJ1snIG5vdCBpbiBwYXQ6CisgICAgICAgIHdpbGRjYXJkcyA9IHBhdC5jb3Vu
dCgiKiIpCisgICAgICAgIGlmIHdpbGRjYXJkcyA9PSAwOgorICAgICAgICAgICAgcmV0dXJuIG5h
bWUgPT0gcGF0CisgICAgICAgIGVsaWYgd2lsZGNhcmRzID09IDEgYW5kIHBhdFswXSA9PSAiKiI6
CisgICAgICAgICAgICByZXR1cm4gbmFtZS5lbmRzd2l0aChwYXRbMTpdKQorICAgICAgICBlbGlm
IHdpbGRjYXJkcyA9PSAxIGFuZCBwYXRbLTFdID09ICIqIjoKKyAgICAgICAgICAgIHJldHVybiBu
YW1lLnN0YXJ0c3dpdGgocGF0WzotMV0pCisgICAgcmV0dXJuIF9zdGRsaWJfZm5tYXRjaC5mbm1h
dGNoY2FzZShuYW1lLCBwYXQpCisKKworZGVmIGZpbHRlcihuYW1lcywgcGF0KToKKyAgICByZXR1
cm4gW24gZm9yIG4gaW4gbmFtZXMgaWYgZm5tYXRjaChuLCBwYXQpXQorCisKK3RyYW5zbGF0ZSA9
IF9zdGRsaWJfZm5tYXRjaC50cmFuc2xhdGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9saW50LnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L2xpbnQucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzFhNmNlMDJkMWUzYzI4Nzc3ODEyZTkyYzQ0ZjE4Y2VmNDljZDdkYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbGludC9saW50LnB5CkBAIC0wLDAgKzEsODQ3IEBACitmcm9tIF9fZnV0dXJlX18gaW1w
b3J0IHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCisKK2ltcG9ydCBhYmMKK2ltcG9y
dCBhcmdwYXJzZQoraW1wb3J0IGFzdAoraW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IGpzb24KK2lt
cG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworCitmcm9t
IGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorCitmcm9tIC4gaW1wb3J0IGZubWF0Y2gK
K2Zyb20gLi4gaW1wb3J0IGxvY2FscGF0aHMKK2Zyb20gLi5naXRpZ25vcmUuZ2l0aWdub3JlIGlt
cG9ydCBQYXRoRmlsdGVyCitmcm9tIC4ud3B0IGltcG9ydCB0ZXN0ZmlsZXMKKworZnJvbSBtYW5p
ZmVzdC5zb3VyY2VmaWxlIGltcG9ydCBTb3VyY2VGaWxlLCBqc19tZXRhX3JlLCBweXRob25fbWV0
YV9yZSwgc3BhY2VfY2hhcnMKK2Zyb20gc2l4IGltcG9ydCBiaW5hcnlfdHlwZSwgaXRlcml0ZW1z
LCBpdGVydmFsdWVzCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKK2Zyb20gc2l4Lm1vdmVz
LnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsc3BsaXQsIHVybGpvaW4KKworaW1wb3J0IGxvZ2dpbmcK
KworbG9nZ2VyID0gTm9uZQorCitkZWYgc2V0dXBfbG9nZ2luZyhwcmVmaXg9RmFsc2UpOgorICAg
IGdsb2JhbCBsb2dnZXIKKyAgICBpZiBsb2dnZXIgaXMgTm9uZToKKyAgICAgICAgbG9nZ2VyID0g
bG9nZ2luZy5nZXRMb2dnZXIob3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLnNwbGl0ZXh0KF9fZmls
ZV9fKVswXSkpCisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0
ZG91dCkKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKyAgICBpZiBwcmVmaXg6
CisgICAgICAgIGZvcm1hdCA9IGxvZ2dpbmcuQkFTSUNfRk9STUFUCisgICAgZWxzZToKKyAgICAg
ICAgZm9ybWF0ID0gIiUobWVzc2FnZSlzIgorICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0
dGVyKGZvcm1hdCkKKyAgICBmb3IgaGFuZGxlciBpbiBsb2dnZXIuaGFuZGxlcnM6CisgICAgICAg
IGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKKyAgICBsb2dnZXIuc2V0TGV2ZWwobG9n
Z2luZy5ERUJVRykKKworCitzZXR1cF9sb2dnaW5nKCkKKworCitFUlJPUl9NU0cgPSAiIiJZb3Ug
bXVzdCBmaXggYWxsIGVycm9yczsgZm9yIGRldGFpbHMgb24gaG93IHRvIGZpeCB0aGVtLCBzZWUK
K2h0dHA6Ly93ZWItcGxhdGZvcm0tdGVzdHMub3JnL3dyaXRpbmctdGVzdHMvbGludC10b29sLmh0
bWwKKworSG93ZXZlciwgaW5zdGVhZCBvZiBmaXhpbmcgYSBwYXJ0aWN1bGFyIGVycm9yLCBpdCdz
IHNvbWV0aW1lcworT0sgdG8gYWRkIGEgbGluZSB0byB0aGUgbGludC53aGl0ZWxpc3QgZmlsZSBp
biB0aGUgcm9vdCBvZiB0aGUKK3dlYi1wbGF0Zm9ybS10ZXN0cyBkaXJlY3RvcnkgdG8gbWFrZSB0
aGUgbGludCB0b29sIGlnbm9yZSBpdC4KKworRm9yIGV4YW1wbGUsIHRvIG1ha2UgdGhlIGxpbnQg
dG9vbCBpZ25vcmUgYWxsICclcycKK2Vycm9ycyBpbiB0aGUgJXMgZmlsZSwKK3lvdSBjb3VsZCBh
ZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRoZSBsaW50LndoaXRlbGlzdCBmaWxlLgorCislczog
JXMiIiIKKworZGVmIGFsbF9maWxlc3lzdGVtX3BhdGhzKHJlcG9fcm9vdCk6CisgICAgcGF0aF9m
aWx0ZXIgPSBQYXRoRmlsdGVyKHJlcG9fcm9vdCwgZXh0cmFzPVsiLmdpdC8qIl0pCisgICAgZm9y
IGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMgaW4gb3Mud2FsayhyZXBvX3Jvb3QpOgorICAg
ICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgorICAgICAgICAgICAgcGF0aCA9IG9zLnBh
dGgucmVscGF0aChvcy5wYXRoLmpvaW4oZGlycGF0aCwgZmlsZW5hbWUpLCByZXBvX3Jvb3QpCisg
ICAgICAgICAgICBpZiBwYXRoX2ZpbHRlcihwYXRoKToKKyAgICAgICAgICAgICAgICB5aWVsZCBw
YXRoCisgICAgICAgIGRpcm5hbWVzWzpdID0gW2l0ZW0gZm9yIGl0ZW0gaW4gZGlybmFtZXMgaWYK
KyAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9maWx0ZXIob3MucGF0aC5yZWxwYXRoKG9zLnBh
dGguam9pbihkaXJwYXRoLCBpdGVtKSArICIvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9fcm9vdCkpXQorCisKK2RlZiBfYWxsX2ZpbGVz
X2VxdWFsKHBhdGhzKToKKyAgICAiIiIKKyAgICBDaGVja3MgYWxsIHRoZSBwYXRocyBhcmUgZmls
ZXMgdGhhdCBhcmUgYnl0ZS1mb3ItYnl0ZSBpZGVudGljYWwKKworICAgIDpwYXJhbSBwYXRoczog
dGhlIGxpc3Qgb2YgcGF0aHMgdG8gY29tcGFyZQorICAgIDpyZXR1cm5zOiBUcnVlIGlmIHRoZXkg
YXJlIGFsbCBpZGVudGljYWwKKyAgICAiIiIKKyAgICBwYXRocyA9IGxpc3QocGF0aHMpCisgICAg
aWYgbGVuKHBhdGhzKSA8IDI6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBmaXJzdCA9IHBh
dGhzLnBvcCgpCisgICAgc2l6ZSA9IG9zLnBhdGguZ2V0c2l6ZShmaXJzdCkKKyAgICBpZiBhbnko
b3MucGF0aC5nZXRzaXplKHBhdGgpICE9IHNpemUgZm9yIHBhdGggaW4gcGF0aHMpOgorICAgICAg
ICByZXR1cm4gRmFsc2UKKworICAgICMgQ2h1bmsgdGhpcyB0byBhdm9pZCBlYXRpbmcgdXAgbWVt
b3J5IGFuZCBmaWxlIGRlc2NyaXB0b3JzCisgICAgYnVmc2l6ZSA9IDQwOTYqNCAgIyAxNktCLCBh
ICJyZWFzb25hYmxlIiBudW1iZXIgb2YgZGlzayBzZWN0b3JzCisgICAgZ3JvdXBzaXplID0gOCAg
IyBIeXBvdGhlc2lzZWQgdG8gYmUgbGFyZ2UgZW5vdWdoIGluIHRoZSBjb21tb24gY2FzZSB0aGF0
IGV2ZXJ5dGhpbmcgZml0cyBpbiBvbmUgZ3JvdXAKKyAgICB3aXRoIG9wZW4oZmlyc3QsICJyYiIp
IGFzIGZpcnN0X2Y6CisgICAgICAgIGZvciBzdGFydCBpbiByYW5nZSgwLCBsZW4ocGF0aHMpLCBn
cm91cHNpemUpOgorICAgICAgICAgICAgcGF0aF9ncm91cCA9IHBhdGhzW3N0YXJ0OnN0YXJ0K2dy
b3Vwc2l6ZV0KKyAgICAgICAgICAgIGZpcnN0X2Yuc2VlaygwKQorICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgIGZpbGVzID0gW29wZW4oeCwgInJiIikgZm9yIHggaW4gcGF0aF9ncm91
cF0KKyAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZSgwLCBzaXplLCBidWZzaXplKToKKyAg
ICAgICAgICAgICAgICAgICAgYSA9IGZpcnN0X2YucmVhZChidWZzaXplKQorICAgICAgICAgICAg
ICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBmLnJl
YWQoYnVmc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGEgIT0gYjoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGZpbmFsbHk6Cisg
ICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIGYuY2xv
c2UoKQorCisgICAgcmV0dXJuIFRydWUKKworCitkZWYgY2hlY2tfcGF0aF9sZW5ndGgocmVwb19y
b290LCBwYXRoKToKKyAgICBpZiBsZW4ocGF0aCkgKyAxID4gMTUwOgorICAgICAgICByZXR1cm4g
WygiUEFUSCBMRU5HVEgiLCAiLyVzIGxvbmdlciB0aGFuIG1heGltdW0gcGF0aCBsZW5ndGggKCVk
ID4gMTUwKSIgJSAocGF0aCwgbGVuKHBhdGgpICsgMSksIHBhdGgsIE5vbmUpXQorICAgIHJldHVy
biBbXQorCisKK2RlZiBjaGVja193b3JrZXJfY29sbGlzaW9uKHJlcG9fcm9vdCwgcGF0aCk6Cisg
ICAgZW5kaW5ncyA9IFsoIi5hbnkuaHRtbCIsICIuYW55LmpzIiksCisgICAgICAgICAgICAgICAo
Ii5hbnkud29ya2VyLmh0bWwiLCAiLmFueS5qcyIpLAorICAgICAgICAgICAgICAgKCIud29ya2Vy
Lmh0bWwiLCAiLndvcmtlci5qcyIpXQorICAgIGZvciBwYXRoX2VuZGluZywgZ2VuZXJhdGVkIGlu
IGVuZGluZ3M6CisgICAgICAgIGlmIHBhdGguZW5kc3dpdGgocGF0aF9lbmRpbmcpOgorICAgICAg
ICAgICAgcmV0dXJuIFsoIldPUktFUiBDT0xMSVNJT04iLAorICAgICAgICAgICAgICAgICAgICAg
InBhdGggZW5kcyB3aXRoICVzIHdoaWNoIGNvbGxpZGVzIHdpdGggZ2VuZXJhdGVkIHRlc3RzIGZy
b20gJXMgZmlsZXMiICUgKHBhdGhfZW5kaW5nLCBnZW5lcmF0ZWQpLAorICAgICAgICAgICAgICAg
ICAgICAgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgIE5vbmUpXQorICAgIHJldHVybiBbXQor
CisKK2RlZiBjaGVja19haGVtX2NvcHkocmVwb19yb290LCBwYXRoKToKKyAgICBscGF0aCA9IHBh
dGgubG93ZXIoKQorICAgIGlmICJhaGVtIiBpbiBscGF0aCBhbmQgbHBhdGguZW5kc3dpdGgoIi50
dGYiKToKKyAgICAgICAgcmV0dXJuIFsoIkFIRU0gQ09QWSIsICJEb24ndCBhZGQgZXh0cmEgY29w
aWVzIG9mIEFoZW0sIHVzZSAvZm9udHMvQWhlbS50dGYiLCBwYXRoLCBOb25lKV0KKyAgICByZXR1
cm4gW10KKworCitkcmFmdHNfY3Nzd2dfcmUgPSByZS5jb21waWxlKHIiaHR0cHM/XDpcL1wvZHJh
ZnRzXC5jc3N3Z1wub3JnXC8oW14vPyNdKykiKQordzNjX3RyX3JlID0gcmUuY29tcGlsZShyImh0
dHBzP1w6XC9cL3d3d1wudzNjP1wub3JnXC9UUlwvKFteLz8jXSspIikKK3czY19kZXZfcmUgPSBy
ZS5jb21waWxlKHIiaHR0cHM/XDpcL1wvZGV2XC53M2M/XC5vcmdcL1teLz8jXStcLyhbXi8/I10r
KSIpCisKKworZGVmIGNoZWNrX2Nzc19nbG9iYWxseV91bmlxdWUocmVwb19yb290LCBwYXRocyk6
CisgICAgIiIiCisgICAgQ2hlY2tzIHRoYXQgQ1NTIGZpbGVuYW1lcyBhcmUgc3VmZmljaWVudGx5
IHVuaXF1ZQorCisgICAgVGhpcyBncm91cHMgZmlsZXMgYnkgcGF0aCBjbGFzc2lmeWluZyB0aGVt
IGFzICJ0ZXN0IiwgInJlZmVyZW5jZSIsIG9yCisgICAgInN1cHBvcnQiLgorCisgICAgInRlc3Qi
IGZpbGVzIG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lIGFjcm9zcyBmaWxlcyB0aGF0IHNoYXJlIGxp
bmtzIHRvIHRoZQorICAgIHNhbWUgc3BlYy4KKworICAgICJyZWZlcmVuY2UiIGFuZCAic3VwcG9y
dCIgZmlsZXMsIG9uIHRoZSBvdGhlciBoYW5kLCBtdXN0IGhhdmUgZ2xvYmFsbHkKKyAgICB1bmlx
dWUgbmFtZXMuCisKKyAgICA6cGFyYW0gcmVwb19yb290OiB0aGUgcmVwb3NpdG9yeSByb290Cisg
ICAgOnBhcmFtIHBhdGhzOiBsaXN0IG9mIGFsbCBwYXRocworICAgIDpyZXR1cm5zOiBhIGxpc3Qg
b2YgZXJyb3JzIGZvdW5kIGluIGBgcGF0aHNgYAorCisgICAgIiIiCisgICAgdGVzdF9maWxlcyA9
IGRlZmF1bHRkaWN0KHNldCkKKyAgICByZWZfZmlsZXMgPSBkZWZhdWx0ZGljdChzZXQpCisgICAg
c3VwcG9ydF9maWxlcyA9IGRlZmF1bHRkaWN0KHNldCkKKworICAgIGZvciBwYXRoIGluIHBhdGhz
OgorICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CisgICAgICAgICAgICBwYXRoID0gcGF0aC5y
ZXBsYWNlKCJcXCIsICIvIikKKworICAgICAgICBpZiBub3QgcGF0aC5zdGFydHN3aXRoKCJjc3Mv
Iik6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHNvdXJjZV9maWxlID0gU291cmNl
RmlsZShyZXBvX3Jvb3QsIHBhdGgsICIvIikKKyAgICAgICAgaWYgc291cmNlX2ZpbGUubmFtZV9p
c19ub25fdGVzdDoKKyAgICAgICAgICAgICMgSWYgd2UncmUgbmFtZV9pc19ub25fdGVzdCBmb3Ig
YSByZWFzb24gYXBhcnQgZnJvbSBzdXBwb3J0LCBpZ25vcmUgaXQuCisgICAgICAgICAgICAjIFdl
IGNhcmUgYWJvdXQgc3VwcG9ydCBiZWNhdXNlIG9mIHRoZSByZXF1aXJlbWVudCBhbGwgc3VwcG9y
dCBmaWxlcyBpbiBjc3MvIHRvIGJlIGluCisgICAgICAgICAgICAjIGEgc3VwcG9ydCBkaXJlY3Rv
cnk7IHNlZSB0aGUgc3RhcnQgb2YgY2hlY2tfcGFyc2VkLgorICAgICAgICAgICAgb2Zmc2V0ID0g
cGF0aC5maW5kKCIvc3VwcG9ydC8iKQorICAgICAgICAgICAgaWYgb2Zmc2V0ID09IC0xOgorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHBhcnRzID0gc291cmNlX2ZpbGUu
ZGlyX3BhdGguc3BsaXQob3MucGF0aC5zZXApCisgICAgICAgICAgICBpZiAocGFydHNbMF0gaW4g
c291cmNlX2ZpbGUucm9vdF9kaXJfbm9uX3Rlc3Qgb3IKKyAgICAgICAgICAgICAgICBhbnkoaXRl
bSBpbiBzb3VyY2VfZmlsZS5kaXJfbm9uX3Rlc3QgLSB7InN1cHBvcnQifSBmb3IgaXRlbSBpbiBw
YXJ0cykgb3IKKyAgICAgICAgICAgICAgICBhbnkocGFydHNbOmxlbihub25fdGVzdF9wYXRoKV0g
PT0gbGlzdChub25fdGVzdF9wYXRoKSBmb3Igbm9uX3Rlc3RfcGF0aCBpbiBzb3VyY2VfZmlsZS5k
aXJfcGF0aF9ub25fdGVzdCkpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAg
ICAgIG5hbWUgPSBwYXRoW29mZnNldCsxOl0KKyAgICAgICAgICAgIHN1cHBvcnRfZmlsZXNbbmFt
ZV0uYWRkKHBhdGgpCisgICAgICAgIGVsaWYgc291cmNlX2ZpbGUubmFtZV9pc19yZWZlcmVuY2U6
CisgICAgICAgICAgICByZWZfZmlsZXNbc291cmNlX2ZpbGUubmFtZV0uYWRkKHBhdGgpCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICB0ZXN0X2ZpbGVzW3NvdXJjZV9maWxlLm5hbWVdLmFkZChw
YXRoKQorCisgICAgZXJyb3JzID0gW10KKworICAgIGZvciBuYW1lLCBjb2xsaWRpbmcgaW4gaXRl
cml0ZW1zKHRlc3RfZmlsZXMpOgorICAgICAgICBpZiBsZW4oY29sbGlkaW5nKSA+IDE6CisgICAg
ICAgICAgICBpZiBub3QgX2FsbF9maWxlc19lcXVhbChbb3MucGF0aC5qb2luKHJlcG9fcm9vdCwg
eCkgZm9yIHggaW4gY29sbGlkaW5nXSk6CisgICAgICAgICAgICAgICAgIyBPbmx5IGNvbXB1dGUg
Ynlfc3BlYyBpZiB0aGVyZSBhcmUgcHJpbWEtZmFjaWUgY29sbGlzaW9ucyBiZWNhdXNlIG9mIGNv
c3QKKyAgICAgICAgICAgICAgICBieV9zcGVjID0gZGVmYXVsdGRpY3Qoc2V0KQorICAgICAgICAg
ICAgICAgIGZvciBwYXRoIGluIGNvbGxpZGluZzoKKyAgICAgICAgICAgICAgICAgICAgc291cmNl
X2ZpbGUgPSBTb3VyY2VGaWxlKHJlcG9fcm9vdCwgcGF0aCwgIi8iKQorICAgICAgICAgICAgICAg
ICAgICBmb3IgbGluayBpbiBzb3VyY2VfZmlsZS5zcGVjX2xpbmtzOgorICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIHIgaW4gKGRyYWZ0c19jc3N3Z19yZSwgdzNjX3RyX3JlLCB3M2NfZGV2X3Jl
KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gci5tYXRjaChsaW5rKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNwZWMgPSBtLmdyb3VwKDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBieV9zcGVjW3NwZWNdLmFk
ZChwYXRoKQorCisgICAgICAgICAgICAgICAgZm9yIHNwZWMsIHBhdGhzIGluIGl0ZXJpdGVtcyhi
eV9zcGVjKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9hbGxfZmlsZXNfZXF1YWwoW29z
LnBhdGguam9pbihyZXBvX3Jvb3QsIHgpIGZvciB4IGluIHBhdGhzXSk6CisgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgeCBpbiBwYXRoczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
cnJvcnMuYXBwZW5kKCgiQ1NTLUNPTExJRElORy1URVNULU5BTUUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsZW5hbWUgJXMgaW4gdGhlICVzIHRl
c3RzdWl0ZSBpcyBzaGFyZWQgYnk6ICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICUgKG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiLCAiLmpvaW4oc29ydGVkKHBhdGhzKSkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTm9uZSkpCisKKyAgICBmb3IgZXJyb3JfbmFtZSwgZCBpbiBbKCJDU1MtQ09M
TElESU5HLVJFRi1OQU1FIiwgcmVmX2ZpbGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
KCJDU1MtQ09MTElESU5HLVNVUFBPUlQtTkFNRSIsIHN1cHBvcnRfZmlsZXMpXToKKyAgICAgICAg
Zm9yIG5hbWUsIGNvbGxpZGluZyBpbiBpdGVyaXRlbXMoZCk6CisgICAgICAgICAgICBpZiBsZW4o
Y29sbGlkaW5nKSA+IDE6CisgICAgICAgICAgICAgICAgaWYgbm90IF9hbGxfZmlsZXNfZXF1YWwo
W29zLnBhdGguam9pbihyZXBvX3Jvb3QsIHgpIGZvciB4IGluIGNvbGxpZGluZ10pOgorICAgICAg
ICAgICAgICAgICAgICBmb3IgeCBpbiBjb2xsaWRpbmc6CisgICAgICAgICAgICAgICAgICAgICAg
ICBlcnJvcnMuYXBwZW5kKChlcnJvcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlRoZSBmaWxlbmFtZSAlcyBpcyBzaGFyZWQgYnk6ICVzIiAlIChuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiLCAiLmpvaW4oc29ydGVkKGNvbGxpZGluZykpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOb25lKSkKKworICAgIHJldHVybiBlcnJvcnMKKworCitkZWYg
cGFyc2Vfd2hpdGVsaXN0KGYpOgorICAgICIiIgorICAgIFBhcnNlIHRoZSB3aGl0ZWxpc3QgZmls
ZSBnaXZlbiBieSBgZmAsIGFuZCByZXR1cm4gdGhlIHBhcnNlZCBzdHJ1Y3R1cmUuCisgICAgIiIi
CisKKyAgICBkYXRhID0gZGVmYXVsdGRpY3QobGFtYmRhOmRlZmF1bHRkaWN0KHNldCkpCisgICAg
aWdub3JlZF9maWxlcyA9IHNldCgpCisKKyAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICBsaW5l
ID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBsaW5lIG9yIGxpbmUuc3RhcnRzd2l0aCgi
IyIpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcGFydHMgPSBbaXRlbS5zdHJpcCgp
IGZvciBpdGVtIGluIGxpbmUuc3BsaXQoIjoiKV0KKyAgICAgICAgaWYgbGVuKHBhcnRzKSA9PSAy
OgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKE5vbmUpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBwYXJ0c1stMV0gPSBpbnQocGFydHNbLTFdKQorCisgICAgICAgIGVycm9yX3R5cGVzLCBm
aWxlX21hdGNoLCBsaW5lX251bWJlciA9IHBhcnRzCisgICAgICAgIGVycm9yX3R5cGVzID0ge2l0
ZW0uc3RyaXAoKSBmb3IgaXRlbSBpbiBlcnJvcl90eXBlcy5zcGxpdCgiLCIpfQorICAgICAgICBm
aWxlX21hdGNoID0gb3MucGF0aC5ub3JtY2FzZShmaWxlX21hdGNoKQorCisgICAgICAgIGlmICIq
IiBpbiBlcnJvcl90eXBlczoKKyAgICAgICAgICAgIGlnbm9yZWRfZmlsZXMuYWRkKGZpbGVfbWF0
Y2gpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3IgZXJyb3JfdHlwZSBpbiBlcnJvcl90
eXBlczoKKyAgICAgICAgICAgICAgICBkYXRhW2Vycm9yX3R5cGVdW2ZpbGVfbWF0Y2hdLmFkZChs
aW5lX251bWJlcikKKworICAgIHJldHVybiBkYXRhLCBpZ25vcmVkX2ZpbGVzCisKKworZGVmIGZp
bHRlcl93aGl0ZWxpc3RfZXJyb3JzKGRhdGEsIGVycm9ycyk6CisgICAgIiIiCisgICAgRmlsdGVy
IG91dCB0aG9zZSBlcnJvcnMgdGhhdCBhcmUgd2hpdGVsaXN0ZWQgaW4gYGRhdGFgLgorICAgICIi
IgorCisgICAgaWYgbm90IGVycm9yczoKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICB3aGl0ZWxp
c3RlZCA9IFtGYWxzZSBmb3IgaXRlbSBpbiByYW5nZShsZW4oZXJyb3JzKSldCisKKyAgICBmb3Ig
aSwgKGVycm9yX3R5cGUsIG1zZywgcGF0aCwgbGluZSkgaW4gZW51bWVyYXRlKGVycm9ycyk6Cisg
ICAgICAgIG5vcm1wYXRoID0gb3MucGF0aC5ub3JtY2FzZShwYXRoKQorICAgICAgICBpZiBlcnJv
cl90eXBlIGluIGRhdGE6CisgICAgICAgICAgICB3bF9maWxlcyA9IGRhdGFbZXJyb3JfdHlwZV0K
KyAgICAgICAgICAgIGZvciBmaWxlX21hdGNoLCBhbGxvd2VkX2xpbmVzIGluIGl0ZXJpdGVtcyh3
bF9maWxlcyk6CisgICAgICAgICAgICAgICAgaWYgTm9uZSBpbiBhbGxvd2VkX2xpbmVzIG9yIGxp
bmUgaW4gYWxsb3dlZF9saW5lczoKKyAgICAgICAgICAgICAgICAgICAgaWYgZm5tYXRjaC5mbm1h
dGNoY2FzZShub3JtcGF0aCwgZmlsZV9tYXRjaCk6CisgICAgICAgICAgICAgICAgICAgICAgICB3
aGl0ZWxpc3RlZFtpXSA9IFRydWUKKworICAgIHJldHVybiBbaXRlbSBmb3IgaSwgaXRlbSBpbiBl
bnVtZXJhdGUoZXJyb3JzKSBpZiBub3Qgd2hpdGVsaXN0ZWRbaV1dCisKK2NsYXNzIFJlZ2V4cChv
YmplY3QpOgorICAgIHBhdHRlcm4gPSBOb25lCisgICAgZmlsZV9leHRlbnNpb25zID0gTm9uZQor
ICAgIGVycm9yID0gTm9uZQorICAgIF9yZSA9IE5vbmUKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKKyAgICAgICAgc2VsZi5fcmUgPSByZS5jb21waWxlKHNlbGYucGF0dGVybikKKworICAgIGRl
ZiBhcHBsaWVzKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gKHNlbGYuZmlsZV9leHRlbnNp
b25zIGlzIE5vbmUgb3IKKyAgICAgICAgICAgICAgICBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpWzFd
IGluIHNlbGYuZmlsZV9leHRlbnNpb25zKQorCisgICAgZGVmIHNlYXJjaChzZWxmLCBsaW5lKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX3JlLnNlYXJjaChsaW5lKQorCitjbGFzcyBUcmFpbGluZ1do
aXRlc3BhY2VSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0ZXJuID0gYiJbIFx0XGZcdl0kIgorICAg
IGVycm9yID0gIlRSQUlMSU5HIFdISVRFU1BBQ0UiCisgICAgZGVzY3JpcHRpb24gPSAiV2hpdGVz
cGFjZSBhdCBFT0wiCisKK2NsYXNzIFRhYnNSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0ZXJuID0g
YiJeXHQiCisgICAgZXJyb3IgPSAiSU5ERU5UIFRBQlMiCisgICAgZGVzY3JpcHRpb24gPSAiVGFi
cyB1c2VkIGZvciBpbmRlbnRhdGlvbiIKKworY2xhc3MgQ1JSZWdleHAoUmVnZXhwKToKKyAgICBw
YXR0ZXJuID0gYiJcciQiCisgICAgZXJyb3IgPSAiQ1IgQVQgRU9MIgorICAgIGRlc2NyaXB0aW9u
ID0gIkNSIGNoYXJhY3RlciBpbiBsaW5lIHNlcGFyYXRvciIKKworY2xhc3MgU2V0VGltZW91dFJl
Z2V4cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBiInNldFRpbWVvdXRccypcKCIKKyAgICBlcnJv
ciA9ICJTRVQgVElNRU9VVCIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0i
LCAiLmpzIiwgIi54aHQiLCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gInNl
dFRpbWVvdXQgdXNlZDsgc3RlcF90aW1lb3V0IHNob3VsZCB0eXBpY2FsbHkgYmUgdXNlZCBpbnN0
ZWFkIgorCitjbGFzcyBXM0NUZXN0T3JnUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGIi
dzNjXC10ZXN0XC5vcmciCisgICAgZXJyb3IgPSAiVzNDLVRFU1QuT1JHIgorICAgIGRlc2NyaXB0
aW9uID0gIkV4dGVybmFsIHczYy10ZXN0Lm9yZyBkb21haW4gdXNlZCIKKworY2xhc3MgV2ViUGxh
dGZvcm1UZXN0UmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGIid2ViXC1wbGF0Zm9ybVwu
dGVzdCIKKyAgICBlcnJvciA9ICJXRUItUExBVEZPUk0uVEVTVCIKKyAgICBkZXNjcmlwdGlvbiA9
ICJJbnRlcm5hbCB3ZWItcGxhdGZvcm0udGVzdCBkb21haW4gdXNlZCIKKworY2xhc3MgV2ViaWRs
MlJlZ2V4cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBiIndlYmlkbDJcLmpzIgorICAgIGVycm9y
ID0gIldFQklETDIuSlMiCisgICAgZGVzY3JpcHRpb24gPSAiTGVnYWN5IHdlYmlkbDIuanMgc2Ny
aXB0IHVzZWQiCisKK2NsYXNzIENvbnNvbGVSZWdleHAoUmVnZXhwKToKKyAgICBwYXR0ZXJuID0g
YiJjb25zb2xlXC5bYS16QS1aXStccypcKCIKKyAgICBlcnJvciA9ICJDT05TT0xFIgorICAgIGZp
bGVfZXh0ZW5zaW9ucyA9IFsiLmh0bWwiLCAiLmh0bSIsICIuanMiLCAiLnhodCIsICIueGh0bWwi
LCAiLnN2ZyJdCisgICAgZGVzY3JpcHRpb24gPSAiQ29uc29sZSBsb2dnaW5nIEFQSSB1c2VkIgor
CitjbGFzcyBHZW5lcmF0ZVRlc3RzUmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGIiZ2Vu
ZXJhdGVfdGVzdHNccypcKCIKKyAgICBlcnJvciA9ICJHRU5FUkFURV9URVNUUyIKKyAgICBmaWxl
X2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0iLCAiLmpzIiwgIi54aHQiLCAiLnhodG1sIiwg
Ii5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gImdlbmVyYXRlX3Rlc3RzIHVzZWQiCisKK2NsYXNz
IFByaW50UmVnZXhwKFJlZ2V4cCk6CisgICAgcGF0dGVybiA9IGIicHJpbnQoPzpcc3xccypcKCki
CisgICAgZXJyb3IgPSAiUFJJTlQgU1RBVEVNRU5UIgorICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsi
LnB5Il0KKyAgICBkZXNjcmlwdGlvbiA9ICJQcmludCBmdW5jdGlvbiB1c2VkIgorCitjbGFzcyBM
YXlvdXRUZXN0c1JlZ2V4cChSZWdleHApOgorICAgIHBhdHRlcm4gPSBiImV2ZW50U2VuZGVyfHRl
c3RSdW5uZXJ8d2luZG93XC5pbnRlcm5hbHMiCisgICAgZXJyb3IgPSAiTEFZT1VUVEVTVFMgQVBJ
UyIKKyAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0iLCAiLmpzIiwgIi54aHQi
LCAiLnhodG1sIiwgIi5zdmciXQorICAgIGRlc2NyaXB0aW9uID0gImV2ZW50U2VuZGVyL3Rlc3RS
dW5uZXIvd2luZG93LmludGVybmFscyB1c2VkOyB0aGVzZSBhcmUgTGF5b3V0VGVzdHMtc3BlY2lm
aWMgQVBJcyAoV2ViS2l0L0JsaW5rKSIKKworY2xhc3MgU3BlY2lhbFBvd2Vyc1JlZ2V4cChSZWdl
eHApOgorICAgIHBhdHRlcm4gPSBiIlNwZWNpYWxQb3dlcnMiCisgICAgZXJyb3IgPSAiU1BFQ0lB
TFBPV0VSUyBBUEkiCisgICAgZmlsZV9leHRlbnNpb25zID0gWyIuaHRtbCIsICIuaHRtIiwgIi5q
cyIsICIueGh0IiwgIi54aHRtbCIsICIuc3ZnIl0KKyAgICBkZXNjcmlwdGlvbiA9ICJTcGVjaWFs
UG93ZXJzIHVzZWQ7IHRoaXMgaXMgZ2Vja28tc3BlY2lmaWMgYW5kIG5vdCBzdXBwb3J0ZWQgaW4g
d3B0IgorCisKK3JlZ2V4cHMgPSBbaXRlbSgpIGZvciBpdGVtIGluCisgICAgICAgICAgIFtUcmFp
bGluZ1doaXRlc3BhY2VSZWdleHAsCisgICAgICAgICAgICBUYWJzUmVnZXhwLAorICAgICAgICAg
ICAgQ1JSZWdleHAsCisgICAgICAgICAgICBTZXRUaW1lb3V0UmVnZXhwLAorICAgICAgICAgICAg
VzNDVGVzdE9yZ1JlZ2V4cCwKKyAgICAgICAgICAgIFdlYlBsYXRmb3JtVGVzdFJlZ2V4cCwKKyAg
ICAgICAgICAgIFdlYmlkbDJSZWdleHAsCisgICAgICAgICAgICBDb25zb2xlUmVnZXhwLAorICAg
ICAgICAgICAgR2VuZXJhdGVUZXN0c1JlZ2V4cCwKKyAgICAgICAgICAgIFByaW50UmVnZXhwLAor
ICAgICAgICAgICAgTGF5b3V0VGVzdHNSZWdleHAsCisgICAgICAgICAgICBTcGVjaWFsUG93ZXJz
UmVnZXhwXV0KKworZGVmIGNoZWNrX3JlZ2V4cF9saW5lKHJlcG9fcm9vdCwgcGF0aCwgZik6Cisg
ICAgZXJyb3JzID0gW10KKworICAgIGFwcGxpY2FibGVfcmVnZXhwcyA9IFtyZWdleHAgZm9yIHJl
Z2V4cCBpbiByZWdleHBzIGlmIHJlZ2V4cC5hcHBsaWVzKHBhdGgpXQorCisgICAgZm9yIGksIGxp
bmUgaW4gZW51bWVyYXRlKGYpOgorICAgICAgICBmb3IgcmVnZXhwIGluIGFwcGxpY2FibGVfcmVn
ZXhwczoKKyAgICAgICAgICAgIGlmIHJlZ2V4cC5zZWFyY2gobGluZSk6CisgICAgICAgICAgICAg
ICAgZXJyb3JzLmFwcGVuZCgocmVnZXhwLmVycm9yLCByZWdleHAuZGVzY3JpcHRpb24sIHBhdGgs
IGkrMSkpCisKKyAgICByZXR1cm4gZXJyb3JzCisKK2RlZiBjaGVja19wYXJzZWQocmVwb19yb290
LCBwYXRoLCBmKToKKyAgICBzb3VyY2VfZmlsZSA9IFNvdXJjZUZpbGUocmVwb19yb290LCBwYXRo
LCAiLyIsIGNvbnRlbnRzPWYucmVhZCgpKQorCisgICAgZXJyb3JzID0gW10KKworICAgIGlmIHBh
dGguc3RhcnRzd2l0aCgiY3NzLyIpOgorICAgICAgICBpZiAoc291cmNlX2ZpbGUudHlwZSA9PSAi
c3VwcG9ydCIgYW5kCisgICAgICAgICAgICBub3Qgc291cmNlX2ZpbGUubmFtZV9pc19ub25fdGVz
dCBhbmQKKyAgICAgICAgICAgIG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX3JlZmVyZW5jZSk6Cisg
ICAgICAgICAgICByZXR1cm4gWygiU1VQUE9SVC1XUk9ORy1ESVIiLCAiU3VwcG9ydCBmaWxlIG5v
dCBpbiBzdXBwb3J0IGRpcmVjdG9yeSIsIHBhdGgsIE5vbmUpXQorCisgICAgICAgIGlmIChzb3Vy
Y2VfZmlsZS50eXBlICE9ICJzdXBwb3J0IiBhbmQKKyAgICAgICAgICAgIG5vdCBzb3VyY2VfZmls
ZS5uYW1lX2lzX3JlZmVyZW5jZSBhbmQKKyAgICAgICAgICAgIG5vdCBzb3VyY2VfZmlsZS5zcGVj
X2xpbmtzKToKKyAgICAgICAgICAgIHJldHVybiBbKCJNSVNTSU5HLUxJTksiLCAiVGVzdGNhc2Ug
ZmlsZSBtdXN0IGhhdmUgYSBsaW5rIHRvIGEgc3BlYyIsIHBhdGgsIE5vbmUpXQorCisgICAgaWYg
c291cmNlX2ZpbGUubmFtZV9pc19ub25fdGVzdCBvciBzb3VyY2VfZmlsZS5uYW1lX2lzX21hbnVh
bDoKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBpZiBzb3VyY2VfZmlsZS5tYXJrdXBfdHlwZSBp
cyBOb25lOgorICAgICAgICByZXR1cm4gW10KKworICAgIGlmIHNvdXJjZV9maWxlLnJvb3QgaXMg
Tm9uZToKKyAgICAgICAgcmV0dXJuIFsoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2Ug
ZmlsZSIsIHBhdGgsIE5vbmUpXQorCisgICAgaWYgc291cmNlX2ZpbGUudHlwZSA9PSAibWFudWFs
IiBhbmQgbm90IHNvdXJjZV9maWxlLm5hbWVfaXNfbWFudWFsOgorICAgICAgICByZXR1cm4gWygi
Q09OVEVOVC1NQU5VQUwiLCAiTWFudWFsIHRlc3Qgd2hvc2UgZmlsZW5hbWUgZG9lc24ndCBlbmQg
aW4gJy1tYW51YWwnIiwgcGF0aCwgTm9uZSldCisKKyAgICBpZiBzb3VyY2VfZmlsZS50eXBlID09
ICJ2aXN1YWwiIGFuZCBub3Qgc291cmNlX2ZpbGUubmFtZV9pc192aXN1YWw6CisgICAgICAgIHJl
dHVybiBbKCJDT05URU5ULVZJU1VBTCIsICJWaXN1YWwgdGVzdCB3aG9zZSBmaWxlbmFtZSBkb2Vz
bid0IGVuZCBpbiAnLXZpc3VhbCciLCBwYXRoLCBOb25lKV0KKworICAgIGZvciByZWZ0ZXN0X25v
ZGUgaW4gc291cmNlX2ZpbGUucmVmdGVzdF9ub2RlczoKKyAgICAgICAgaHJlZiA9IHJlZnRlc3Rf
bm9kZS5hdHRyaWIuZ2V0KCJocmVmIiwgIiIpLnN0cmlwKHNwYWNlX2NoYXJzKQorICAgICAgICBw
YXJ0cyA9IHVybHNwbGl0KGhyZWYpCisgICAgICAgIGlmIHBhcnRzLnNjaGVtZSBvciBwYXJ0cy5u
ZXRsb2M6CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgiQUJTT0xVVEUtVVJMLVJFRiIsCisg
ICAgICAgICAgICAgICAgICAgICAiUmVmZXJlbmNlIHRlc3Qgd2l0aCBhIHJlZmVyZW5jZSBmaWxl
IHNwZWNpZmllZCB2aWEgYW4gYWJzb2x1dGUgVVJMOiAnJXMnIiAlIGhyZWYsIHBhdGgsIE5vbmUp
KQorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICByZWZfdXJsID0gdXJsam9pbihzb3Vy
Y2VfZmlsZS51cmwsIGhyZWYpCisgICAgICAgIHJlZl9wYXJ0cyA9IHVybHNwbGl0KHJlZl91cmwp
CisKKyAgICAgICAgaWYgc291cmNlX2ZpbGUudXJsID09IHJlZl91cmw6CisgICAgICAgICAgICBl
cnJvcnMuYXBwZW5kKCgiU0FNRS1GSUxFLVJFRiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiUmVmZXJlbmNlIHRlc3Qgd2hpY2ggcG9pbnRzIGF0IGl0c2VsZiBhcyBhIHJlZmVyZW5jZSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTm9uZSkpCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGFzc2VydCByZWZf
cGFydHMucGF0aCAhPSAiIgorCisgICAgICAgIHJlZmVyZW5jZV9maWxlID0gb3MucGF0aC5qb2lu
KHJlcG9fcm9vdCwgcmVmX3BhcnRzLnBhdGhbMTpdKQorICAgICAgICByZWZlcmVuY2VfcmVsID0g
cmVmdGVzdF9ub2RlLmF0dHJpYi5nZXQoInJlbCIsICIiKQorCisgICAgICAgIGlmIG5vdCBvcy5w
YXRoLmlzZmlsZShyZWZlcmVuY2VfZmlsZSk6CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgi
Tk9OLUVYSVNURU5ULVJFRiIsCisgICAgICAgICAgICAgICAgICAgICAiUmVmZXJlbmNlIHRlc3Qg
d2l0aCBhIG5vbi1leGlzdGVudCAnJXMnIHJlbGF0aW9uc2hpcCByZWZlcmVuY2U6ICclcyciICUg
KHJlZmVyZW5jZV9yZWwsIGhyZWYpLCBwYXRoLCBOb25lKSkKKworICAgIGlmIGxlbihzb3VyY2Vf
ZmlsZS50aW1lb3V0X25vZGVzKSA+IDE6CisgICAgICAgIGVycm9ycy5hcHBlbmQoKCJNVUxUSVBM
RS1USU1FT1VUIiwgIk1vcmUgdGhhbiBvbmUgbWV0YSBuYW1lPSd0aW1lb3V0JyIsIHBhdGgsIE5v
bmUpKQorCisgICAgZm9yIHRpbWVvdXRfbm9kZSBpbiBzb3VyY2VfZmlsZS50aW1lb3V0X25vZGVz
OgorICAgICAgICB0aW1lb3V0X3ZhbHVlID0gdGltZW91dF9ub2RlLmF0dHJpYi5nZXQoImNvbnRl
bnQiLCAiIikubG93ZXIoKQorICAgICAgICBpZiB0aW1lb3V0X3ZhbHVlICE9ICJsb25nIjoKKyAg
ICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJJTlZBTElELVRJTUVPVVQiLCAiSW52YWxpZCB0aW1l
b3V0IHZhbHVlICVzIiAlIHRpbWVvdXRfdmFsdWUsIHBhdGgsIE5vbmUpKQorCisgICAgaWYgc291
cmNlX2ZpbGUudGVzdGhhcm5lc3Nfbm9kZXM6CisgICAgICAgIGlmIGxlbihzb3VyY2VfZmlsZS50
ZXN0aGFybmVzc19ub2RlcykgPiAxOgorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIk1VTFRJ
UExFLVRFU1RIQVJORVNTIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIHRoYW4g
b25lIDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz4iLCBwYXRoLCBOb25l
KSkKKworICAgICAgICB0ZXN0aGFybmVzc3JlcG9ydF9ub2RlcyA9IHNvdXJjZV9maWxlLnJvb3Qu
ZmluZGFsbCgiLi8ve2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWx9c2NyaXB0W0BzcmM9Jy9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnXSIpCisgICAgICAgIGlmIG5vdCB0ZXN0aGFy
bmVzc3JlcG9ydF9ub2RlczoKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJNSVNTSU5HLVRF
U1RIQVJORVNTUkVQT1JUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaXNzaW5nIDxz
Y3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz4iLCBwYXRoLCBOb25l
KSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGxlbih0ZXN0aGFybmVzc3JlcG9ydF9u
b2RlcykgPiAxOgorICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJNVUxUSVBMRS1URVNU
SEFSTkVTU1JFUE9SVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vcmUgdGhh
biBvbmUgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPiIsIHBh
dGgsIE5vbmUpKQorCisgICAgICAgIHRlc3RoYXJuZXNzY3NzX25vZGVzID0gc291cmNlX2ZpbGUu
cm9vdC5maW5kYWxsKCIuLy97aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbH1saW5rW0BocmVm
PScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyddIikKKyAgICAgICAgaWYgdGVzdGhhcm5lc3Nj
c3Nfbm9kZXM6CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgiUFJFU0VOVC1URVNUSEFSTkVT
U0NTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwbGljaXQgbGluayB0byB0ZXN0
aGFybmVzcy5jc3MgcHJlc2VudCIsIHBhdGgsIE5vbmUpKQorCisgICAgICAgIGZvciBlbGVtZW50
IGluIHNvdXJjZV9maWxlLnZhcmlhbnRfbm9kZXM6CisgICAgICAgICAgICBpZiAiY29udGVudCIg
bm90IGluIGVsZW1lbnQuYXR0cmliOgorICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJW
QVJJQU5ULU1JU1NJTkciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bWV0YSBu
YW1lPXZhcmlhbnQ+IG1pc3NpbmcgJ2NvbnRlbnQnIGF0dHJpYnV0ZSIsIHBhdGgsIE5vbmUpKQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB2YXJpYW50ID0gZWxlbWVudC5hdHRy
aWJbImNvbnRlbnQiXQorICAgICAgICAgICAgICAgIGlmIHZhcmlhbnQgIT0gIiIgYW5kIHZhcmlh
bnRbMF0gbm90IGluICgiPyIsICIjIik6CisgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBl
bmQoKCJNQUxGT1JNRUQtVkFSSUFOVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiVzIDxtZXRhIG5hbWU9dmFyaWFudD4gJ2NvbnRlbnQnIGF0dHJpYnV0ZSBtdXN0IGJlIHRoZSBl
bXB0eSBzdHJpbmcgb3Igc3RhcnQgd2l0aCAnPycgb3IgJyMnIiAlIHBhdGgsIE5vbmUpKQorCisg
ICAgICAgIHNlZW5fZWxlbWVudHMgPSB7InRpbWVvdXQiOiBGYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAidGVzdGhhcm5lc3MiOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAidGVzdGhhcm5lc3NyZXBvcnQiOiBGYWxzZX0KKyAgICAgICAgcmVxdWlyZWRfZWxlbWVudHMg
PSBba2V5IGZvciBrZXksIHZhbHVlIGluIHsidGVzdGhhcm5lc3MiOiBUcnVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0aGFybmVzc3Jl
cG9ydCI6IGxlbih0ZXN0aGFybmVzc3JlcG9ydF9ub2RlcykgPiAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IjogbGVuKHNvdXJj
ZV9maWxlLnRpbWVvdXRfbm9kZXMpID4gMH0uaXRlbXMoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiB2YWx1ZV0KKworICAgICAgICBmb3IgZWxlbSBpbiBzb3VyY2VfZmlsZS5yb290
Lml0ZXIoKToKKyAgICAgICAgICAgIGlmIHNvdXJjZV9maWxlLnRpbWVvdXRfbm9kZXMgYW5kIGVs
ZW0gPT0gc291cmNlX2ZpbGUudGltZW91dF9ub2Rlc1swXToKKyAgICAgICAgICAgICAgICBzZWVu
X2VsZW1lbnRzWyJ0aW1lb3V0Il0gPSBUcnVlCisgICAgICAgICAgICAgICAgaWYgc2Vlbl9lbGVt
ZW50c1sidGVzdGhhcm5lc3MiXToKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgo
IkxBVEUtVElNRU9VVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bWV0
YSBuYW1lPXRpbWVvdXQ+IHNlZW4gYWZ0ZXIgdGVzdGhhcm5lc3MuanMgc2NyaXB0IiwgcGF0aCwg
Tm9uZSkpCisKKyAgICAgICAgICAgIGVsaWYgZWxlbSA9PSBzb3VyY2VfZmlsZS50ZXN0aGFybmVz
c19ub2Rlc1swXToKKyAgICAgICAgICAgICAgICBzZWVuX2VsZW1lbnRzWyJ0ZXN0aGFybmVzcyJd
ID0gVHJ1ZQorCisgICAgICAgICAgICBlbGlmIHRlc3RoYXJuZXNzcmVwb3J0X25vZGVzIGFuZCBl
bGVtID09IHRlc3RoYXJuZXNzcmVwb3J0X25vZGVzWzBdOgorICAgICAgICAgICAgICAgIHNlZW5f
ZWxlbWVudHNbInRlc3RoYXJuZXNzcmVwb3J0Il0gPSBUcnVlCisgICAgICAgICAgICAgICAgaWYg
bm90IHNlZW5fZWxlbWVudHNbInRlc3RoYXJuZXNzIl06CisgICAgICAgICAgICAgICAgICAgIGVy
cm9ycy5hcHBlbmQoKCJFQVJMWS1URVNUSEFSTkVTU1JFUE9SVCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0ZXN0aGFybmVzc3JlcG9ydC5qcyBzY3JpcHQgc2VlbiBiZWZv
cmUgdGVzdGhhcm5lc3MuanMgc2NyaXB0IiwgcGF0aCwgTm9uZSkpCisKKyAgICAgICAgICAgIGlm
IGFsbChzZWVuX2VsZW1lbnRzW25hbWVdIGZvciBuYW1lIGluIHJlcXVpcmVkX2VsZW1lbnRzKToK
KyAgICAgICAgICAgICAgICBicmVhaworCisgICAgaWYgc291cmNlX2ZpbGUudGVzdGRyaXZlcl9u
b2RlczoKKyAgICAgICAgaWYgbGVuKHNvdXJjZV9maWxlLnRlc3Rkcml2ZXJfbm9kZXMpID4gMToK
KyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJNVUxUSVBMRS1URVNURFJJVkVSIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJNb3JlIHRoYW4gb25lIDxzY3JpcHQgc3JjPScvcmVzb3Vy
Y2VzL3Rlc3Rkcml2ZXIuanMnPiIsIHBhdGgsIE5vbmUpKQorCisgICAgICAgIHRlc3Rkcml2ZXJf
dmVuZG9yX25vZGVzID0gc291cmNlX2ZpbGUucm9vdC5maW5kYWxsKCIuLy97aHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbH1zY3JpcHRbQHNyYz0nL3Jlc291cmNlcy90ZXN0ZHJpdmVyLXZlbmRv
ci5qcyddIikKKyAgICAgICAgaWYgbm90IHRlc3Rkcml2ZXJfdmVuZG9yX25vZGVzOgorICAgICAg
ICAgICAgZXJyb3JzLmFwcGVuZCgoIk1JU1NJTkctVEVTVERSSVZFUi1WRU5ET1IiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIk1pc3NpbmcgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVz
dGRyaXZlci12ZW5kb3IuanMnPiIsIHBhdGgsIE5vbmUpKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgaWYgbGVuKHRlc3Rkcml2ZXJfdmVuZG9yX25vZGVzKSA+IDE6CisgICAgICAgICAgICAg
ICAgZXJyb3JzLmFwcGVuZCgoIk1VTFRJUExFLVRFU1REUklWRVItVkVORE9SIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSB0aGFuIG9uZSA8c2NyaXB0IHNyYz0nL3Jlc291
cmNlcy90ZXN0ZHJpdmVyLXZlbmRvci5qcyc+IiwgcGF0aCwgTm9uZSkpCisKKyAgICBmb3IgZWxl
bWVudCBpbiBzb3VyY2VfZmlsZS5yb290LmZpbmRhbGwoIi4vL3todHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sfXNjcmlwdFtAc3JjXSIpOgorICAgICAgICBzcmMgPSBlbGVtZW50LmF0dHJpYlsi
c3JjIl0KKyAgICAgICAgZm9yIG5hbWUgaW4gWyJ0ZXN0aGFybmVzcyIsICJ0ZXN0aGFybmVzc3Jl
cG9ydCIsICJ0ZXN0ZHJpdmVyIiwgInRlc3Rkcml2ZXItdmVuZG9yIl06CisgICAgICAgICAgICBp
ZiAiJXMuanMiICUgbmFtZSA9PSBzcmMgb3IgKCIvJXMuanMiICUgbmFtZSBpbiBzcmMgYW5kIHNy
YyAhPSAiL3Jlc291cmNlcy8lcy5qcyIgJSBuYW1lKToKKyAgICAgICAgICAgICAgICBlcnJvcnMu
YXBwZW5kKCgiJXMtUEFUSCIgJSBuYW1lLnVwcGVyKCksICIlcy5qcyBzY3JpcHQgc2VlbiB3aXRo
IGluY29ycmVjdCBwYXRoIiAlIG5hbWUsIHBhdGgsIE5vbmUpKQorCisgICAgcmV0dXJuIGVycm9y
cworCitjbGFzcyBBU1RDaGVjayhvYmplY3QpOgorICAgIF9fbWV0YWNsYXNzX18gPSBhYmMuQUJD
TWV0YQorICAgIGVycm9yID0gTm9uZQorICAgIGRlc2NyaXB0aW9uID0gTm9uZQorCisgICAgQGFi
Yy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBjaGVjayhzZWxmLCByb290KToKKyAgICAgICAgcGFz
cworCitjbGFzcyBPcGVuTW9kZUNoZWNrKEFTVENoZWNrKToKKyAgICBlcnJvciA9ICJPUEVOLU5P
LU1PREUiCisgICAgZGVzY3JpcHRpb24gPSAiRmlsZSBvcGVuZWQgd2l0aG91dCBwcm92aWRpbmcg
YW4gZXhwbGljaXQgbW9kZSAobm90ZTogYmluYXJ5IGZpbGVzIG11c3QgYmUgcmVhZCB3aXRoICdi
JyBpbiB0aGUgbW9kZSBmbGFncykiCisKKyAgICBkZWYgY2hlY2soc2VsZiwgcm9vdCk6CisgICAg
ICAgIGVycm9ycyA9IFtdCisgICAgICAgIGZvciBub2RlIGluIGFzdC53YWxrKHJvb3QpOgorICAg
ICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBhc3QuQ2FsbCk6CisgICAgICAgICAgICAgICAg
aWYgaGFzYXR0cihub2RlLmZ1bmMsICJpZCIpIGFuZCBub2RlLmZ1bmMuaWQgaW4gKCJvcGVuIiwg
ImZpbGUiKToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxlbihub2RlLmFyZ3MpIDwgMiBhbmQK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFsbChpdGVtLmFyZyAhPSAibW9kZSIgZm9yIGl0ZW0g
aW4gbm9kZS5rZXl3b3JkcykpOgorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVu
ZChub2RlLmxpbmVubykKKyAgICAgICAgcmV0dXJuIGVycm9ycworCithc3RfY2hlY2tlcnMgPSBb
aXRlbSgpIGZvciBpdGVtIGluIFtPcGVuTW9kZUNoZWNrXV0KKworZGVmIGNoZWNrX3B5dGhvbl9h
c3QocmVwb19yb290LCBwYXRoLCBmKToKKyAgICBpZiBub3QgcGF0aC5lbmRzd2l0aCgiLnB5Iik6
CisgICAgICAgIHJldHVybiBbXQorCisgICAgdHJ5OgorICAgICAgICByb290ID0gYXN0LnBhcnNl
KGYucmVhZCgpKQorICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBlOgorICAgICAgICByZXR1cm4g
WygiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgcGF0aCwgZS5saW5lbm8p
XQorCisgICAgZXJyb3JzID0gW10KKyAgICBmb3IgY2hlY2tlciBpbiBhc3RfY2hlY2tlcnM6Cisg
ICAgICAgIGZvciBsaW5lbm8gaW4gY2hlY2tlci5jaGVjayhyb290KToKKyAgICAgICAgICAgIGVy
cm9ycy5hcHBlbmQoKGNoZWNrZXIuZXJyb3IsIGNoZWNrZXIuZGVzY3JpcHRpb24sIHBhdGgsIGxp
bmVubykpCisgICAgcmV0dXJuIGVycm9ycworCisKK2Jyb2tlbl9qc19tZXRhZGF0YSA9IHJlLmNv
bXBpbGUoYiIvL1xzKk1FVEE6IikKK2Jyb2tlbl9weXRob25fbWV0YWRhdGEgPSByZS5jb21waWxl
KGIiI1xzKk1FVEE6IikKKworCitkZWYgY2hlY2tfc2NyaXB0X21ldGFkYXRhKHJlcG9fcm9vdCwg
cGF0aCwgZik6CisgICAgaWYgcGF0aC5lbmRzd2l0aCgoIi53b3JrZXIuanMiLCAiLmFueS5qcyIp
KToKKyAgICAgICAgbWV0YV9yZSA9IGpzX21ldGFfcmUKKyAgICAgICAgYnJva2VuX21ldGFkYXRh
ID0gYnJva2VuX2pzX21ldGFkYXRhCisgICAgZWxpZiBwYXRoLmVuZHN3aXRoKCIucHkiKToKKyAg
ICAgICAgbWV0YV9yZSA9IHB5dGhvbl9tZXRhX3JlCisgICAgICAgIGJyb2tlbl9tZXRhZGF0YSA9
IGJyb2tlbl9weXRob25fbWV0YWRhdGEKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gW10KKwor
ICAgIGRvbmUgPSBGYWxzZQorICAgIGVycm9ycyA9IFtdCisgICAgZm9yIGlkeCwgbGluZSBpbiBl
bnVtZXJhdGUoZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGxpbmUsIGJpbmFyeV90eXBl
KSwgbGluZQorCisgICAgICAgIG0gPSBtZXRhX3JlLm1hdGNoKGxpbmUpCisgICAgICAgIGlmIG06
CisgICAgICAgICAgICBrZXksIHZhbHVlID0gbS5ncm91cHMoKQorICAgICAgICAgICAgaWYga2V5
ID09IGIidGltZW91dCI6CisgICAgICAgICAgICAgICAgaWYgdmFsdWUgIT0gYiJsb25nIjoKKyAg
ICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIlVOS05PV04tVElNRU9VVC1NRVRBREFU
QSIsICJVbmV4cGVjdGVkIHZhbHVlIGZvciB0aW1lb3V0IG1ldGFkYXRhIiwgcGF0aCwgaWR4ICsg
MSkpCisgICAgICAgICAgICBlbGlmIGtleSA9PSBiInNjcmlwdCI6CisgICAgICAgICAgICAgICAg
cGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgi
VU5LTk9XTi1NRVRBREFUQSIsICJVbmV4cGVjdGVkIGtpbmQgb2YgbWV0YWRhdGEiLCBwYXRoLCBp
ZHggKyAxKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRvbmUgPSBUcnVlCisKKyAgICAg
ICAgaWYgZG9uZToKKyAgICAgICAgICAgIGlmIG1ldGFfcmUubWF0Y2gobGluZSk6CisgICAgICAg
ICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIlNUUkFZLU1FVEFEQVRBIiwgIk1ldGFkYXRhIGNvbW1l
bnRzIHNob3VsZCBzdGFydCB0aGUgZmlsZSIsIHBhdGgsIGlkeCArIDEpKQorICAgICAgICAgICAg
ZWxpZiBtZXRhX3JlLnNlYXJjaChsaW5lKToKKyAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5k
KCgiSU5ERU5URUQtTUVUQURBVEEiLCAiTWV0YWRhdGEgY29tbWVudHMgc2hvdWxkIHN0YXJ0IHRo
ZSBsaW5lIiwgcGF0aCwgaWR4ICsgMSkpCisgICAgICAgICAgICBlbGlmIGJyb2tlbl9tZXRhZGF0
YS5zZWFyY2gobGluZSk6CisgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIkJST0tFTi1N
RVRBREFUQSIsICJNZXRhZGF0YSBjb21tZW50IGlzIG5vdCBmb3JtYXR0ZWQgY29ycmVjdGx5Iiwg
cGF0aCwgaWR4ICsgMSkpCisKKyAgICByZXR1cm4gZXJyb3JzCisKKworZGVmIGNoZWNrX3BhdGgo
cmVwb19yb290LCBwYXRoKToKKyAgICAiIiIKKyAgICBSdW5zIGxpbnRzIHRoYXQgY2hlY2sgdGhl
IGZpbGUgcGF0aC4KKworICAgIDpwYXJhbSByZXBvX3Jvb3Q6IHRoZSByZXBvc2l0b3J5IHJvb3QK
KyAgICA6cGFyYW0gcGF0aDogdGhlIHBhdGggb2YgdGhlIGZpbGUgd2l0aGluIHRoZSByZXBvc2l0
b3J5CisgICAgOnJldHVybnM6IGEgbGlzdCBvZiBlcnJvcnMgZm91bmQgaW4gYGBwYXRoYGAKKyAg
ICAiIiIKKworICAgIGVycm9ycyA9IFtdCisgICAgZm9yIHBhdGhfZm4gaW4gcGF0aF9saW50czoK
KyAgICAgICAgZXJyb3JzLmV4dGVuZChwYXRoX2ZuKHJlcG9fcm9vdCwgcGF0aCkpCisgICAgcmV0
dXJuIGVycm9ycworCisKK2RlZiBjaGVja19hbGxfcGF0aHMocmVwb19yb290LCBwYXRocyk6Cisg
ICAgIiIiCisgICAgUnVucyBsaW50cyB0aGF0IGNoZWNrIGFsbCBwYXRocyBnbG9iYWxseS4KKwor
ICAgIDpwYXJhbSByZXBvX3Jvb3Q6IHRoZSByZXBvc2l0b3J5IHJvb3QKKyAgICA6cGFyYW0gcGF0
aHM6IGEgbGlzdCBvZiBhbGwgdGhlIHBhdGhzIHdpdGhpbiB0aGUgcmVwb3NpdG9yeQorICAgIDpy
ZXR1cm5zOiBhIGxpc3Qgb2YgZXJyb3JzIGZvdW5kIGluIGBgZmBgCisgICAgIiIiCisKKyAgICBl
cnJvcnMgPSBbXQorICAgIGZvciBwYXRoc19mbiBpbiBhbGxfcGF0aHNfbGludHM6CisgICAgICAg
IGVycm9ycy5leHRlbmQocGF0aHNfZm4ocmVwb19yb290LCBwYXRocykpCisgICAgcmV0dXJuIGVy
cm9ycworCisKK2RlZiBjaGVja19maWxlX2NvbnRlbnRzKHJlcG9fcm9vdCwgcGF0aCwgZik6Cisg
ICAgIiIiCisgICAgUnVucyBsaW50cyB0aGF0IGNoZWNrIHRoZSBmaWxlIGNvbnRlbnRzLgorCisg
ICAgOnBhcmFtIHJlcG9fcm9vdDogdGhlIHJlcG9zaXRvcnkgcm9vdAorICAgIDpwYXJhbSBwYXRo
OiB0aGUgcGF0aCBvZiB0aGUgZmlsZSB3aXRoaW4gdGhlIHJlcG9zaXRvcnkKKyAgICA6cGFyYW0g
ZjogYSBmaWxlLWxpa2Ugb2JqZWN0IHdpdGggdGhlIGZpbGUgY29udGVudHMKKyAgICA6cmV0dXJu
czogYSBsaXN0IG9mIGVycm9ycyBmb3VuZCBpbiBgYGZgYAorICAgICIiIgorCisgICAgZXJyb3Jz
ID0gW10KKyAgICBmb3IgZmlsZV9mbiBpbiBmaWxlX2xpbnRzOgorICAgICAgICBlcnJvcnMuZXh0
ZW5kKGZpbGVfZm4ocmVwb19yb290LCBwYXRoLCBmKSkKKyAgICAgICAgZi5zZWVrKDApCisgICAg
cmV0dXJuIGVycm9ycworCisKK2RlZiBvdXRwdXRfZXJyb3JzX3RleHQoZXJyb3JzKToKKyAgICBm
b3IgZXJyb3JfdHlwZSwgZGVzY3JpcHRpb24sIHBhdGgsIGxpbmVfbnVtYmVyIGluIGVycm9yczoK
KyAgICAgICAgcG9zX3N0cmluZyA9IHBhdGgKKyAgICAgICAgaWYgbGluZV9udW1iZXI6CisgICAg
ICAgICAgICBwb3Nfc3RyaW5nICs9ICI6JXMiICUgbGluZV9udW1iZXIKKyAgICAgICAgbG9nZ2Vy
LmVycm9yKCIlczogJXMgKCVzKSIgJSAocG9zX3N0cmluZywgZGVzY3JpcHRpb24sIGVycm9yX3R5
cGUpKQorCisKK2RlZiBvdXRwdXRfZXJyb3JzX21hcmtkb3duKGVycm9ycyk6CisgICAgaWYgbm90
IGVycm9yczoKKyAgICAgICAgcmV0dXJuCisgICAgaGVhZGluZyA9ICIiIkdvdCBsaW50IGVycm9y
czoKKworfCBFcnJvciBUeXBlIHwgUG9zaXRpb24gfCBNZXNzYWdlIHwKK3wtLS0tLS0tLS0tLS18
LS0tLS0tLS0tLXwtLS0tLS0tLS18IiIiCisgICAgZm9yIGxpbmUgaW4gaGVhZGluZy5zcGxpdCgi
XG4iKToKKyAgICAgICAgbG9nZ2VyLmVycm9yKGxpbmUpCisgICAgZm9yIGVycm9yX3R5cGUsIGRl
c2NyaXB0aW9uLCBwYXRoLCBsaW5lX251bWJlciBpbiBlcnJvcnM6CisgICAgICAgIHBvc19zdHJp
bmcgPSBwYXRoCisgICAgICAgIGlmIGxpbmVfbnVtYmVyOgorICAgICAgICAgICAgcG9zX3N0cmlu
ZyArPSAiOiVzIiAlIGxpbmVfbnVtYmVyCisgICAgICAgIGxvZ2dlci5lcnJvcigiJXMgfCAlcyB8
ICVzIHwiICUgKGVycm9yX3R5cGUsIHBvc19zdHJpbmcsIGRlc2NyaXB0aW9uKSkKKworCitkZWYg
b3V0cHV0X2Vycm9yc19qc29uKGVycm9ycyk6CisgICAgZm9yIGVycm9yX3R5cGUsIGVycm9yLCBw
YXRoLCBsaW5lX251bWJlciBpbiBlcnJvcnM6CisgICAgICAgIHByaW50KGpzb24uZHVtcHMoeyJw
YXRoIjogcGF0aCwgImxpbmVubyI6IGxpbmVfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAicnVsZSI6IGVycm9yX3R5cGUsICJtZXNzYWdlIjogZXJyb3J9KSkKKworCitkZWYgb3V0
cHV0X2Vycm9yX2NvdW50KGVycm9yX2NvdW50KToKKyAgICBpZiBub3QgZXJyb3JfY291bnQ6Cisg
ICAgICAgIHJldHVybgorCisgICAgYnlfdHlwZSA9ICIgIi5qb2luKCIlczogJWQiICUgaXRlbSBm
b3IgaXRlbSBpbiBlcnJvcl9jb3VudC5pdGVtcygpKQorICAgIGNvdW50ID0gc3VtKGVycm9yX2Nv
dW50LnZhbHVlcygpKQorICAgIGxvZ2dlci5pbmZvKCIiKQorICAgIGlmIGNvdW50ID09IDE6Cisg
ICAgICAgIGxvZ2dlci5pbmZvKCJUaGVyZSB3YXMgMSBlcnJvciAoJXMpIiAlIChieV90eXBlLCkp
CisgICAgZWxzZToKKyAgICAgICAgbG9nZ2VyLmluZm8oIlRoZXJlIHdlcmUgJWQgZXJyb3JzICgl
cykiICUgKGNvdW50LCBieV90eXBlKSkKKworCitkZWYgY2hhbmdlZF9maWxlcyh3cHRfcm9vdCk6
CisgICAgcmV2aXNoID0gdGVzdGZpbGVzLmdldF9yZXZpc2gocmV2aXNoPU5vbmUpCisgICAgY2hh
bmdlZCwgXyA9IHRlc3RmaWxlcy5maWxlc19jaGFuZ2VkKHJldmlzaCwgc2V0KCksIGluY2x1ZGVf
dW5jb21taXR0ZWQ9VHJ1ZSwgaW5jbHVkZV9uZXc9VHJ1ZSkKKyAgICByZXR1cm4gW29zLnBhdGgu
cmVscGF0aChpdGVtLCB3cHRfcm9vdCkgZm9yIGl0ZW0gaW4gY2hhbmdlZF0KKworCitkZWYgbGlu
dF9wYXRocyhrd2FyZ3MsIHdwdF9yb290KToKKyAgICBpZiBrd2FyZ3MuZ2V0KCJwYXRocyIpOgor
ICAgICAgICByID0gb3MucGF0aC5yZWFscGF0aCh3cHRfcm9vdCkKKyAgICAgICAgcGF0aHMgPSBb
b3MucGF0aC5yZWxwYXRoKG9zLnBhdGgucmVhbHBhdGgoeCksIHIpIGZvciB4IGluIGt3YXJnc1si
cGF0aHMiXV0KKyAgICBlbGlmIGt3YXJnc1siYWxsIl06CisgICAgICAgIHBhdGhzID0gbGlzdChh
bGxfZmlsZXN5c3RlbV9wYXRocyh3cHRfcm9vdCkpCisgICAgZWxzZToKKyAgICAgICAgY2hhbmdl
ZF9wYXRocyA9IGNoYW5nZWRfZmlsZXMod3B0X3Jvb3QpCisgICAgICAgIGZvcmNlX2FsbCA9IEZh
bHNlCisgICAgICAgICMgSWYgd2UgY2hhbmdlZCB0aGUgbGludCBpdHNlbGYgZW5zdXJlIHRoYXQg
d2UgcmV0ZXN0IGV2ZXJ5dGhpbmcKKyAgICAgICAgZm9yIHBhdGggaW4gY2hhbmdlZF9wYXRoczoK
KyAgICAgICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2Uob3MucGF0aC5zZXAsICIvIikKKyAgICAg
ICAgICAgIGlmIHBhdGggPT0gImxpbnQud2hpdGVsaXN0IiBvciBwYXRoLnN0YXJ0c3dpdGgoInRv
b2xzL2xpbnQvIik6CisgICAgICAgICAgICAgICAgZm9yY2VfYWxsID0gVHJ1ZQorICAgICAgICAg
ICAgICAgIGJyZWFrCisgICAgICAgIHBhdGhzID0gKGxpc3QoY2hhbmdlZF9wYXRocykgaWYgbm90
IGZvcmNlX2FsbAorICAgICAgICAgICAgICAgICBlbHNlIGxpc3QoYWxsX2ZpbGVzeXN0ZW1fcGF0
aHMod3B0X3Jvb3QpKSkKKworICAgIHJldHVybiBwYXRocworCisKK2RlZiBjcmVhdGVfcGFyc2Vy
KCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoInBhdGhzIiwgbmFyZ3M9IioiLAorICAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0iTGlzdCBvZiBwYXRocyB0byBsaW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCIt
LWpzb24iLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0iT3V0cHV0IG1hY2hpbmUtcmVhZGFibGUgSlNPTiBmb3JtYXQiKQorICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoIi0tbWFya2Rvd24iLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0iT3V0cHV0IG1hcmtkb3duIikKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCItLWNzcy1tb2RlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9IlJ1biBDU1MgdGVzdHN1aXRlIHNwZWNpZmljIGxpbnRzIikKKyAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KCItLXJlcG8tcm9vdCIsIGhlbHA9IlRoZSBXUFQgZGlyZWN0b3J5LiBV
c2UgdGhpcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvcHRpb24gaWYgdGhlIGxpbnQgc2Ny
aXB0IGV4aXN0cyBvdXRzaWRlIHRoZSByZXBvc2l0b3J5IikKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCItLWFsbCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IklmIG5vIHBhdGhzIGFyZSBw
YXNzZWQsIHRyeSB0byBsaW50IHRoZSB3aG9sZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAi
d29ya2luZyBkaXJlY3RvcnksIG5vdCBqdXN0IGZpbGVzIHRoYXQgY2hhbmdlZCIpCisgICAgcmV0
dXJuIHBhcnNlcgorCisKK2RlZiBtYWluKCoqa3dhcmdzKToKKyAgICBpZiBrd2FyZ3MuZ2V0KCJq
c29uIikgYW5kIGt3YXJncy5nZXQoIm1hcmtkb3duIik6CisgICAgICAgIGxvZ2dlci5jcml0aWNh
bCgiQ2Fubm90IHNwZWNpZnkgLS1qc29uIGFuZCAtLW1hcmtkb3duIikKKyAgICAgICAgc3lzLmV4
aXQoMikKKworICAgIHJlcG9fcm9vdCA9IGt3YXJncy5nZXQoJ3JlcG9fcm9vdCcpIG9yIGxvY2Fs
cGF0aHMucmVwb19yb290CisgICAgb3V0cHV0X2Zvcm1hdCA9IHsoVHJ1ZSwgRmFsc2UpOiAianNv
biIsCisgICAgICAgICAgICAgICAgICAgICAoRmFsc2UsIFRydWUpOiAibWFya2Rvd24iLAorICAg
ICAgICAgICAgICAgICAgICAgKEZhbHNlLCBGYWxzZSk6ICJub3JtYWwifVsoa3dhcmdzLmdldCgi
anNvbiIsIEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGt3YXJncy5nZXQoIm1hcmtkb3duIiwgRmFsc2UpKV0KKworICAgIGlmIG91dHB1dF9m
b3JtYXQgPT0gIm1hcmtkb3duIjoKKyAgICAgICAgc2V0dXBfbG9nZ2luZyhUcnVlKQorCisgICAg
cGF0aHMgPSBsaW50X3BhdGhzKGt3YXJncywgcmVwb19yb290KQorCisgICAgcmV0dXJuIGxpbnQo
cmVwb19yb290LCBwYXRocywgb3V0cHV0X2Zvcm1hdCkKKworCitkZWYgbGludChyZXBvX3Jvb3Qs
IHBhdGhzLCBvdXRwdXRfZm9ybWF0KToKKyAgICBlcnJvcl9jb3VudCA9IGRlZmF1bHRkaWN0KGlu
dCkKKyAgICBsYXN0ID0gTm9uZQorCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihyZXBvX3Jv
b3QsICJsaW50LndoaXRlbGlzdCIpKSBhcyBmOgorICAgICAgICB3aGl0ZWxpc3QsIGlnbm9yZWRf
ZmlsZXMgPSBwYXJzZV93aGl0ZWxpc3QoZikKKworICAgIG91dHB1dF9lcnJvcnMgPSB7Impzb24i
OiBvdXRwdXRfZXJyb3JzX2pzb24sCisgICAgICAgICAgICAgICAgICAgICAibWFya2Rvd24iOiBv
dXRwdXRfZXJyb3JzX21hcmtkb3duLAorICAgICAgICAgICAgICAgICAgICAgIm5vcm1hbCI6IG91
dHB1dF9lcnJvcnNfdGV4dH1bb3V0cHV0X2Zvcm1hdF0KKworICAgIGRlZiBwcm9jZXNzX2Vycm9y
cyhlcnJvcnMpOgorICAgICAgICAiIiIKKyAgICAgICAgRmlsdGVycyBhbmQgcHJpbnRzIHRoZSBl
cnJvcnMsIGFuZCB1cGRhdGVzIHRoZSBgYGVycm9yX2NvdW50YGAgb2JqZWN0LgorCisgICAgICAg
IDpwYXJhbSBlcnJvcnM6IGEgbGlzdCBvZiBlcnJvciB0dXBsZXMgKGVycm9yIHR5cGUsIG1lc3Nh
Z2UsIHBhdGgsIGxpbmUgbnVtYmVyKQorICAgICAgICA6cmV0dXJuczogYGBOb25lYGAgaWYgdGhl
cmUgd2VyZSBubyBlcnJvcnMsIG9yCisgICAgICAgICAgICAgICAgICBhIHR1cGxlIG9mIHRoZSBl
cnJvciB0eXBlIGFuZCB0aGUgcGF0aCBvdGhlcndpc2UKKyAgICAgICAgIiIiCisKKyAgICAgICAg
ZXJyb3JzID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBlcnJvcnMpCisKKyAg
ICAgICAgaWYgbm90IGVycm9yczoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAg
b3V0cHV0X2Vycm9ycyhlcnJvcnMpCisgICAgICAgIGZvciBlcnJvcl90eXBlLCBlcnJvciwgcGF0
aCwgbGluZSBpbiBlcnJvcnM6CisgICAgICAgICAgICBlcnJvcl9jb3VudFtlcnJvcl90eXBlXSAr
PSAxCisKKyAgICAgICAgcmV0dXJuIChlcnJvcnNbLTFdWzBdLCBwYXRoKQorCisgICAgZm9yIHBh
dGggaW4gcGF0aHNbOl06CisgICAgICAgIGFic19wYXRoID0gb3MucGF0aC5qb2luKHJlcG9fcm9v
dCwgcGF0aCkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGFic19wYXRoKToKKyAgICAg
ICAgICAgIHBhdGhzLnJlbW92ZShwYXRoKQorICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICBpZiBhbnkoZm5tYXRjaC5mbm1hdGNoKHBhdGgsIGZpbGVfbWF0Y2gpIGZvciBmaWxlX21hdGNo
IGluIGlnbm9yZWRfZmlsZXMpOgorICAgICAgICAgICAgcGF0aHMucmVtb3ZlKHBhdGgpCisgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgIGVycm9ycyA9IGNoZWNrX3BhdGgocmVwb19yb290
LCBwYXRoKQorICAgICAgICBsYXN0ID0gcHJvY2Vzc19lcnJvcnMoZXJyb3JzKSBvciBsYXN0CisK
KyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoYWJzX3BhdGgpOgorICAgICAgICAgICAgd2l0
aCBvcGVuKGFic19wYXRoLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgIGVycm9ycyA9IGNo
ZWNrX2ZpbGVfY29udGVudHMocmVwb19yb290LCBwYXRoLCBmKQorICAgICAgICAgICAgICAgIGxh
c3QgPSBwcm9jZXNzX2Vycm9ycyhlcnJvcnMpIG9yIGxhc3QKKworICAgIGVycm9ycyA9IGNoZWNr
X2FsbF9wYXRocyhyZXBvX3Jvb3QsIHBhdGhzKQorICAgIGxhc3QgPSBwcm9jZXNzX2Vycm9ycyhl
cnJvcnMpIG9yIGxhc3QKKworICAgIGlmIG91dHB1dF9mb3JtYXQgaW4gKCJub3JtYWwiLCAibWFy
a2Rvd24iKToKKyAgICAgICAgb3V0cHV0X2Vycm9yX2NvdW50KGVycm9yX2NvdW50KQorICAgICAg
ICBpZiBlcnJvcl9jb3VudDoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIChFUlJPUl9NU0cgJSAo
bGFzdFswXSwgbGFzdFsxXSwgbGFzdFswXSwgbGFzdFsxXSkpLnNwbGl0KCJcbiIpOgorICAgICAg
ICAgICAgICAgIGxvZ2dlci5pbmZvKGxpbmUpCisgICAgcmV0dXJuIHN1bShpdGVydmFsdWVzKGVy
cm9yX2NvdW50KSkKKworcGF0aF9saW50cyA9IFtjaGVja19wYXRoX2xlbmd0aCwgY2hlY2tfd29y
a2VyX2NvbGxpc2lvbiwgY2hlY2tfYWhlbV9jb3B5XQorYWxsX3BhdGhzX2xpbnRzID0gW2NoZWNr
X2Nzc19nbG9iYWxseV91bmlxdWVdCitmaWxlX2xpbnRzID0gW2NoZWNrX3JlZ2V4cF9saW5lLCBj
aGVja19wYXJzZWQsIGNoZWNrX3B5dGhvbl9hc3QsIGNoZWNrX3NjcmlwdF9tZXRhZGF0YV0KKwor
aWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBhcmdzID0gY3JlYXRlX3BhcnNlcigpLnBh
cnNlX2FyZ3MoKQorICAgIGVycm9yX2NvdW50ID0gbWFpbigqKnZhcnMoYXJncykpCisgICAgaWYg
ZXJyb3JfY291bnQgPiAwOgorICAgICAgICBzeXMuZXhpdCgxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL19f
aW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0
YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9iYXNlLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2Jh
c2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzYwZjEzY2UyOTM1YTNlNTkxZGI4YjQ3MjAwN2EyNzAxMGM4YTgx
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9iYXNlLnB5CkBAIC0wLDAgKzEsMTEgQEAKK2Zyb20g
X19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscworCitmcm9tIHNpeCBpbXBvcnQgaW50
ZWdlcl90eXBlcywgdGV4dF90eXBlCisKK2RlZiBjaGVja19lcnJvcnMoZXJyb3JzKToKKyAgICBm
b3IgZSBpbiBlcnJvcnM6CisgICAgICAgIGVycm9yX3R5cGUsIGRlc2NyaXB0aW9uLCBwYXRoLCBs
aW5lX251bWJlciA9IGUKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZXJyb3JfdHlwZSwgdGV4
dF90eXBlKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkZXNjcmlwdGlvbiwgdGV4dF90eXBl
KQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShwYXRoLCB0ZXh0X3R5cGUpCisgICAgICAgIGFz
c2VydCBsaW5lX251bWJlciBpcyBOb25lIG9yIGlzaW5zdGFuY2UobGluZV9udW1iZXIsIGludGVn
ZXJfdHlwZXMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvYnJva2VuLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
YnJva2VuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhjYjZkNDI4YzU0YmE4MzU0NDQ3NzdhNzNiZWFhNTJm
NjQ3ODNlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9rZW4uaHRtbApAQCAtMCww
ICsxIEBACitUSElTIExJTkUgSEFTIFRSQUlMSU5HIFdISVRFU1BBQ0UKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9icm9rZW5faWdub3JlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Jyb2tlbl9pZ25vcmVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzhjYjZkNDI4YzU0YmE4MzU0NDQ3NzdhNzNiZWFhNTJmNjQ3ODNlMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9rZW5faWdub3JlZC5odG1sCkBAIC0wLDAg
KzEgQEAKK1RISVMgTElORSBIQVMgVFJBSUxJTkcgV0hJVEVTUEFDRQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL2EtcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvYS1yZWYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDA0OTFmZDdlNWJiNmZhMjhjNTE3YTBiYjMyYjhi
NTA2NTM5ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL2Et
cmVmLmh0bWwKQEAgLTAsMCArMSBAQAorMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3Mt
dW5pcXVlL2EuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9hLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzNjNWQwYmMzNzNmNWIxZmMyZWU0NWIyOTg1YzMzYTg4Yzg0NDIzMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9hLmh0bWwKQEAgLTAsMCArMSw0IEBACis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9hdXJhbC5o
dG1sI3Byb3BkZWYtc3RyZXNzIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9t
YXRjaC9hLXJlZi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL2EtcmVmLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDAwNDkxZmQ3ZTViYjZmYTI4YzUxN2EwYmIzMmI4YjUwNjUzOWQ0ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLXJlZi5o
dG1sCkBAIC0wLDAgKzEgQEAKKzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1
ZS9tYXRjaC9hLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvYS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjczYzVkMGJjMzczZjViMWZjMmVlNDViMjk4NWMzM2E4OGM4NDQyMzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvYS5odG1sCkBAIC0w
LDAgKzEsNCBAQAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3d3dy53My5vcmcvVFIv
Q1NTMjEvYXVyYWwuaHRtbCNwcm9wZGVmLXN0cmVzcyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9ydC9hLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvbWF0Y2gvc3VwcG9ydC9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAwNDkxZmQ3ZTViYjZmYTI4YzUx
N2EwYmIzMmI4YjUwNjUzOWQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS9tYXRjaC9zdXBwb3J0L2EuaHRtbApAQCAtMCwwICsxIEBACisxCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQv
dGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9ydC90b29scy9hLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9ydC90b29scy9hLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGNmYmYwODg4NmZjYTlhOTFjYjc1M2VjODczNGM4NGZjYmU1MmM5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9zdXBwb3J0L3Rvb2xzL2Eu
aHRtbApAQCAtMCwwICsxIEBACisyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvbWF0Y2gvdG9vbHMvYS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3Rv
b2xzL2EuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDA0OTFmZDdlNWJiNmZhMjhjNTE3YTBiYjMyYjhiNTA2
NTM5ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNo
L3Rvb2xzL2EuaHRtbApAQCAtMCwwICsxIEBACisxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvbm90LW1hdGNoL2EtcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvbm90LW1hdGNoL2EtcmVmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNmYmYwODg4NmZjYTlhOTFjYjc1
M2VjODczNGM4NGZjYmU1MmM5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS9ub3QtbWF0Y2gvYS1yZWYuaHRtbApAQCAtMCwwICsxIEBACisyCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQv
dGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9j
c3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiMGNlMzgzYTI1Y2M0
M2Y2MzU1NTQ4MTg2ZjkyMjVkNzljN2I0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
Y3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EuaHRtbApAQCAtMCwwICsxLDQgQEAKKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL2F1cmFsLmh0bWwjcHJv
cGRlZi1zdHJlc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRj
aC9zdXBwb3J0L2EuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvc3Vw
cG9ydC9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNmYmYwODg4NmZjYTlhOTFjYjc1M2VjODczNGM4NGZj
YmU1MmM5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3Qt
bWF0Y2gvc3VwcG9ydC9hLmh0bWwKQEAgLTAsMCArMSBAQAorMgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC90b29scy9hLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvbm90LW1hdGNoL3Rvb2xzL2EuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2ZiZjA4ODg2
ZmNhOWE5MWNiNzUzZWM4NzM0Yzg0ZmNiZTUyYzlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC90b29scy9hLmh0bWwKQEAgLTAsMCArMSBAQAor
MgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3NlbGVjdG9ycy9hLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQv
dGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc2VsZWN0b3JzL2EuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
ZDYzYzZiZmVkZDEzODY4ODNmYThmYWUzMjQyMzk1MzA1YTFjMmNkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3NlbGVjdG9ycy9hLmh0bWwKQEAgLTAsMCArMSw0
IEBACis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9zZWxl
Y3RvcnMtMy8jdHlwZS1zZWxlY3RvcnMiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5p
cXVlL3N1cHBvcnQvYS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3N1cHBvcnQvYS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQwMDQ5MWZkN2U1YmI2ZmEyOGM1MTdhMGJiMzJiOGI1MDY1MzlkNGQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc3VwcG9ydC9hLmh0
bWwKQEAgLTAsMCArMSBAQAorMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVl
L3N1cHBvcnQvdG9vbHMvYS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3N1cHBvcnQv
dG9vbHMvYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjZmJmMDg4ODZmY2E5YTkxY2I3NTNlYzg3MzRjODRm
Y2JlNTJjOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc3Vw
cG9ydC90b29scy9hLmh0bWwKQEAgLTAsMCArMSBAQAorMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2Nzcy9jc3MtdW5pcXVlL3Rvb2xzL2EuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS90
b29scy9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAwNDkxZmQ3ZTViYjZmYTI4YzUxN2EwYmIzMmI4YjUw
NjUzOWQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS90b29s
cy9hLmh0bWwKQEAgLTAsMCArMSBAQAorMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2RlcGVuZGVu
Y3kuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS9kZXBlbmRlbmN5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkyOTZmNGM1
ODc2ZmM4YzRjZDA1MjU0ODYxNjAwNWMxZTQ2ZjBlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9k
dW1teS9kZXBlbmRlbmN5Lmh0bWwKQEAgLTAsMCArMSBAQAorVGhpcyBmaWxlIGlzIHVzZWQgdG8g
ZGVtb25zdHJhdGUgYWNjZXB0YW5jZSBvZiByb290LXJlbGF0aXZlIHJlZnRlc3QgcmVmZXJlbmNl
cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9saW50LndoaXRlbGlzdCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9saW50
LndoaXRlbGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzYzZTQ0MzJlNWFmYTIxMjMwMzUzNDVlMTMwZDAxODcx
MGZmZGQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2xpbnQud2hpdGVsaXN0CkBAIC0w
LDAgKzEgQEAKKyo6YnJva2VuX2lnbm9yZWQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L29r
YXkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS9va2F5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTMxNzhhM2M4M2EzODM1
YzcxYmMwNzY4YzBjMWVhN2JkM2ZmNzIyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9v
a2F5Lmh0bWwKQEAgLTAsMCArMSBAQAorVEhJUyBMSU5FIEhBUyBOTyBUUkFJTElORyBXSElURVNQ
QUNFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2Fic29sdXRlLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
cmVmL2Fic29sdXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI0N2JjODgzNjcxYmQzMDgxMzU5N2MzYWVi
YTkyMjk5M2IzNjUzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvYWJzb2x1dGUu
aHRtbApAQCAtMCwwICsxIEBACis8bGluayByZWw9Im1hdGNoIiBocmVmPSJodHRwOi8vZXhhbXBs
ZS5jb20vcmVmZXJlbmNlLmh0bWwiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVu
dF9yZWxhdGl2ZS1yZWYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvZXhpc3RlbnRfcmVsYXRpdmUtcmVm
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5
MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9yZWxhdGl2ZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L3JlZi9leGlzdGVudF9yZWxhdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5MzY0ZWU1ZmIx
MWM2OWVhN2QwN2Q0NGYxNzc2MDkwZDhjNmU4MmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvcmVmL2V4aXN0ZW50X3JlbGF0aXZlLmh0bWwKQEAgLTAsMCArMSBAQAorPGxpbmsgcmVsPSJt
YXRjaCIgaHJlZj0iZXhpc3RlbnRfcmVsYXRpdmUtcmVmLmh0bWwiPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L3JlZi9leGlzdGVudF9yb290X3JlbGF0aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2V4
aXN0ZW50X3Jvb3RfcmVsYXRpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYmVkYzJkMzA5YmFhNzVmNGI2
ODI3MTcyMWUxMmQ4MTQ1NWE0YTYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9l
eGlzdGVudF9yb290X3JlbGF0aXZlLmh0bWwKQEAgLTAsMCArMSBAQAorPGxpbmsgcmVsPSJtYXRj
aCIgaHJlZj0iL2RlcGVuZGVuY3kuaHRtbCI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL25v
bl9leGlzdGVudF9yZWxhdGl2ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9ub25fZXhpc3RlbnRfcmVs
YXRpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDlhMWQ1ZWIwMTE5OWQ0NzA2MzY4OGYzZWUyM2ZhZDM0
NjYzNmIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9ub25fZXhpc3RlbnRfcmVs
YXRpdmUuaHRtbApAQCAtMCwwICsxIEBACis8bGluayByZWw9Im1hdGNoIiBocmVmPSJub25fZXhp
c3RlbnRfZmlsZS5odG1sIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvbm9uX2V4aXN0ZW50
X3Jvb3RfcmVsYXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvbm9uX2V4aXN0ZW50X3Jvb3RfcmVs
YXRpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTgxMjAxM2FhMDlhNjZmYjAxOTVjZWZhNmM0ZjhjZTBh
NGM5MDYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9ub25fZXhpc3RlbnRfcm9v
dF9yZWxhdGl2ZS5odG1sCkBAIC0wLDAgKzEgQEAKKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9Ii9u
b25fZXhpc3RlbnRfZmlsZS5odG1sIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvc2FtZV9m
aWxlX2VtcHR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9lbXB0eS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVhYTE4ZTljMDEwODZmODhmYmFhNmM5YjA1ZGQ2ZTI2YzRkNmFiNDYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9lbXB0eS5odG1sCkBAIC0wLDAgKzEg
QEAKKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9IiI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVm
L3NhbWVfZmlsZV9wYXRoLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9wYXRoLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmE4MGMxZjIwZGRmMGRmZjhiYTEwZWZmM2NjZTRmYzcyODZmNzljOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvc2FtZV9maWxlX3BhdGguaHRtbApAQCAtMCww
ICsxIEBACis8bGluayByZWw9Im1hdGNoIiBocmVmPSJzYW1lX2ZpbGVfcGF0aC5odG1sIj4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9maWxlX2xpbnRzLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY0ZmIyMjFiN2E1ODcwZjAwNzViZDU1MGVmNzRiNDJiZDdmZWVhNzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9maWxlX2xpbnRzLnB5CkBAIC0wLDAgKzEsNTk4IEBA
Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKKworZnJvbSAuLmxpbnQg
aW1wb3J0IGNoZWNrX2ZpbGVfY29udGVudHMKK2Zyb20gLmJhc2UgaW1wb3J0IGNoZWNrX2Vycm9y
cworaW1wb3J0IG9zCitpbXBvcnQgcHl0ZXN0CitpbXBvcnQgc2l4CisKK0lOVEVSRVNUSU5HX0ZJ
TEVfTkFNRVMgPSB7CisgICAgInB5dGhvbiI6IFsKKyAgICAgICAgInRlc3QucHkiLAorICAgIF0s
CisgICAgImpzIjogWworICAgICAgICAidGVzdC5qcyIsCisgICAgXSwKKyAgICAid2ViLWxheCI6
IFsKKyAgICAgICAgInRlc3QuaHRtIiwKKyAgICAgICAgInRlc3QuaHRtbCIsCisgICAgXSwKKyAg
ICAid2ViLXN0cmljdCI6IFsKKyAgICAgICAgInRlc3Quc3ZnIiwKKyAgICAgICAgInRlc3QueGh0
IiwKKyAgICAgICAgInRlc3QueGh0bWwiLAorICAgIF0sCit9CisKK2RlZiBjaGVja193aXRoX2Zp
bGVzKGlucHV0X2J5dGVzKToKKyAgICByZXR1cm4geworICAgICAgICBmaWxlbmFtZTogKGNoZWNr
X2ZpbGVfY29udGVudHMoIiIsIGZpbGVuYW1lLCBzaXguQnl0ZXNJTyhpbnB1dF9ieXRlcykpLCBr
aW5kKQorICAgICAgICBmb3IgKGZpbGVuYW1lLCBraW5kKSBpbgorICAgICAgICAoCisgICAgICAg
ICAgICAob3MucGF0aC5qb2luKCJodG1sIiwgZmlsZW5hbWUpLCBraW5kKQorICAgICAgICAgICAg
Zm9yIChraW5kLCBmaWxlbmFtZXMpIGluIElOVEVSRVNUSU5HX0ZJTEVfTkFNRVMuaXRlbXMoKQor
ICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lcworICAgICAgICApCisgICAgfQor
CisKK2RlZiB0ZXN0X3RyYWlsaW5nX3doaXRlc3BhY2UoKToKKyAgICBlcnJvcl9tYXAgPSBjaGVj
a193aXRoX2ZpbGVzKGIidGVzdDsgIikKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtp
bmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykK
KworICAgICAgICBleHBlY3RlZCA9IFsoIlRSQUlMSU5HIFdISVRFU1BBQ0UiLCAiV2hpdGVzcGFj
ZSBhdCBFT0wiLCBmaWxlbmFtZSwgMSldCisgICAgICAgIGlmIGtpbmQgPT0gIndlYi1zdHJpY3Qi
OgorICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKCgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0
byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIE5vbmUpKQorICAgICAgICBhc3NlcnQgZXJyb3JzID09
IGV4cGVjdGVkCisKKworZGVmIHRlc3RfaW5kZW50X3RhYnMoKToKKyAgICBlcnJvcl9tYXAgPSBj
aGVja193aXRoX2ZpbGVzKGIiZGVmIGZvbygpOlxuXHgwOXBhc3MiKQorCisgICAgZm9yIChmaWxl
bmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVj
a19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGV4cGVjdGVkID0gWygiSU5ERU5UIFRBQlMiLCAi
VGFicyB1c2VkIGZvciBpbmRlbnRhdGlvbiIsIGZpbGVuYW1lLCAyKV0KKyAgICAgICAgaWYga2lu
ZCA9PSAid2ViLXN0cmljdCI6CisgICAgICAgICAgICBleHBlY3RlZC5hcHBlbmQoKCJQQVJTRS1G
QUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgTm9uZSkpCisgICAgICAg
IGFzc2VydCBlcnJvcnMgPT0gZXhwZWN0ZWQKKworCitkZWYgdGVzdF9jcl9ub3RfYXRfZW9sKCk6
CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhiImxpbmUxXHJsaW5lMlxyIikKKwor
ICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToK
KyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBleHBlY3RlZCA9IFsoIkNS
IEFUIEVPTCIsICJDUiBjaGFyYWN0ZXIgaW4gbGluZSBzZXBhcmF0b3IiLCBmaWxlbmFtZSwgMSld
CisgICAgICAgIGlmIGtpbmQgPT0gIndlYi1zdHJpY3QiOgorICAgICAgICAgICAgZXhwZWN0ZWQu
YXBwZW5kKCgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUs
IE5vbmUpKQorICAgICAgICBhc3NlcnQgZXJyb3JzID09IGV4cGVjdGVkCisKKworZGVmIHRlc3Rf
Y3JfYXRfZW9sKCk6CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhiImxpbmUxXHJc
bmxpbmUyXHJcbiIpCisKKyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJy
b3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAg
ZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoIkNSIEFUIEVPTCIsICJDUiBjaGFyYWN0ZXIgaW4g
bGluZSBzZXBhcmF0b3IiLCBmaWxlbmFtZSwgMSksCisgICAgICAgICAgICAoIkNSIEFUIEVPTCIs
ICJDUiBjaGFyYWN0ZXIgaW4gbGluZSBzZXBhcmF0b3IiLCBmaWxlbmFtZSwgMiksCisgICAgICAg
IF0KKyAgICAgICAgaWYga2luZCA9PSAid2ViLXN0cmljdCI6CisgICAgICAgICAgICBleHBlY3Rl
ZC5hcHBlbmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFt
ZSwgTm9uZSkpCisgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gZXhwZWN0ZWQKKworCitkZWYgdGVz
dF93M2NfdGVzdF9vcmcoKToKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGIiaW1w
b3J0KCdodHRwOi8vd3d3LnczYy10ZXN0Lm9yZy8nKSIpCisKKyAgICBmb3IgKGZpbGVuYW1lLCAo
ZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9y
cyhlcnJvcnMpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbKCJXM0MtVEVTVC5PUkciLCAiRXh0ZXJu
YWwgdzNjLXRlc3Qub3JnIGRvbWFpbiB1c2VkIiwgZmlsZW5hbWUsIDEpXQorICAgICAgICBpZiBr
aW5kID09ICJweXRob24iOgorICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKCgiUEFSU0UtRkFJ
TEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDEpKQorICAgICAgICBlbGlm
IGtpbmQgPT0gIndlYi1zdHJpY3QiOgorICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKCgiUEFS
U0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIE5vbmUpKQorICAg
ICAgICBhc3NlcnQgZXJyb3JzID09IGV4cGVjdGVkCisKK2RlZiB0ZXN0X3dlYl9wbGF0Zm9ybV90
ZXN0KCk6CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhiImltcG9ydCgnaHR0cDov
L3dlYi1wbGF0Zm9ybS50ZXN0LycpIikKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtp
bmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykK
KworICAgICAgICBleHBlY3RlZCA9IFsoIldFQi1QTEFURk9STS5URVNUIiwgIkludGVybmFsIHdl
Yi1wbGF0Zm9ybS50ZXN0IGRvbWFpbiB1c2VkIiwgZmlsZW5hbWUsIDEpXQorICAgICAgICBpZiBr
aW5kID09ICJweXRob24iOgorICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKCgiUEFSU0UtRkFJ
TEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDEpKQorICAgICAgICBlbGlm
IGtpbmQgPT0gIndlYi1zdHJpY3QiOgorICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKCgiUEFS
U0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIE5vbmUpKQorICAg
ICAgICBhc3NlcnQgZXJyb3JzID09IGV4cGVjdGVkCisKKworZGVmIHRlc3Rfd2ViaWRsMl9qcygp
OgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiI8c2NyaXB0IHNyYz0vcmVzb3Vy
Y2VzL3dlYmlkbDIuanM+IikKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBp
biBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAg
ICAgICBleHBlY3RlZCA9IFsoIldFQklETDIuSlMiLCAiTGVnYWN5IHdlYmlkbDIuanMgc2NyaXB0
IHVzZWQiLCBmaWxlbmFtZSwgMSldCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAg
ICAgICAgICBleHBlY3RlZC5hcHBlbmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNl
IGZpbGUiLCBmaWxlbmFtZSwgMSkpCisgICAgICAgIGVsaWYga2luZCA9PSAid2ViLXN0cmljdCI6
CisgICAgICAgICAgICBleHBlY3RlZC5hcHBlbmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRv
IHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgTm9uZSkpCisgICAgICAgIGFzc2VydCBlcnJvcnMgPT0g
ZXhwZWN0ZWQKKworCitkZWYgdGVzdF9jb25zb2xlKCk6CisgICAgZXJyb3JfbWFwID0gY2hlY2tf
d2l0aF9maWxlcyhiIjxzY3JpcHQ+XG5jb25zb2xlLmxvZygnZXJyb3InKTtcbmNvbnNvbGUuZXJy
b3IgKCdsb2cnKVxuPC9zY3JpcHQ+IikKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtp
bmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykK
KworICAgICAgICBpZiBraW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3RyaWN0IiwgImpzIl06Cisg
ICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIkNPTlNPTEUi
LCAiQ29uc29sZSBsb2dnaW5nIEFQSSB1c2VkIiwgZmlsZW5hbWUsIDIpLAorICAgICAgICAgICAg
ICAgICgiQ09OU09MRSIsICJDb25zb2xlIGxvZ2dpbmcgQVBJIHVzZWQiLCBmaWxlbmFtZSwgMyks
CisgICAgICAgICAgICBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3Jz
ID09IFsoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAx
KV0KKworCitkZWYgdGVzdF9zZXRUaW1lb3V0KCk6CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0
aF9maWxlcyhiIjxzY3JpcHQ+c2V0VGltZW91dCgoKSA9PiAxLCAxMCk8L3NjcmlwdD4iKQorCisg
ICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgor
ICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhv
biI6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsoIlBBUlNFLUZBSUxFRCIsICJVbmFi
bGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGFzc2VydCBlcnJvcnMgPT0gWygnU0VUIFRJTUVPVVQnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdzZXRUaW1lb3V0IHVzZWQ7IHN0ZXBfdGltZW91dCBzaG91bGQgdHlwaWNh
bGx5IGJlIHVzZWQgaW5zdGVhZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmls
ZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSldCisKKworZGVmIHRlc3Rf
ZXZlbnRTZW5kZXIoKToKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGIiPHNjcmlw
dD5ldmVudFNlbmRlci5tb3VzZURvd24oKTwvc2NyaXB0PiIpCisKKyAgICBmb3IgKGZpbGVuYW1l
LCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vy
cm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAg
IGFzc2VydCBlcnJvcnMgPT0gWygiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxl
IiwgZmlsZW5hbWUsIDEpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9y
cyA9PSBbKCdMQVlPVVRURVNUUyBBUElTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnZXZlbnRTZW5kZXIvdGVzdFJ1bm5lci93aW5kb3cuaW50ZXJuYWxzIHVzZWQ7IHRoZXNlIGFy
ZSBMYXlvdXRUZXN0cy1zcGVjaWZpYyBBUElzIChXZWJLaXQvQmxpbmspJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxKV0KKworCitkZWYgdGVzdF90ZXN0UnVubmVyKCk6CisgICAgZXJyb3JfbWFwID0gY2hl
Y2tfd2l0aF9maWxlcyhiIjxzY3JpcHQ+aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7IHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOyB9PC9zY3JpcHQ+IikKKworICAgIGZvciAoZmlsZW5hbWUsIChl
cnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3Jz
KGVycm9ycykKKworICAgICAgICBpZiBraW5kID09ICJweXRob24iOgorICAgICAgICAgICAgYXNz
ZXJ0IGVycm9ycyA9PSBbKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBm
aWxlbmFtZSwgMSldCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09
IFsoJ0xBWU9VVFRFU1RTIEFQSVMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdl
dmVudFNlbmRlci90ZXN0UnVubmVyL3dpbmRvdy5pbnRlcm5hbHMgdXNlZDsgdGhlc2UgYXJlIExh
eW91dFRlc3RzLXNwZWNpZmljIEFQSXMgKFdlYktpdC9CbGluayknLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEpXQorCisKK2RlZiB0ZXN0X3dpbmRvd0RvdEludGVybmFscygpOgorICAgIGVycm9yX21hcCA9
IGNoZWNrX3dpdGhfZmlsZXMoYiI8c2NyaXB0PmlmICh3aW5kb3cuaW50ZXJuYWxzKSB7IGludGVy
bmFscy5kb0FUaGluZygpOyB9PC9zY3JpcHQ+IikKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJv
cnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVy
cm9ycykKKworICAgICAgICBpZiBraW5kID09ICJweXRob24iOgorICAgICAgICAgICAgYXNzZXJ0
IGVycm9ycyA9PSBbKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxl
bmFtZSwgMSldCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFso
J0xBWU9VVFRFU1RTIEFQSVMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdldmVu
dFNlbmRlci90ZXN0UnVubmVyL3dpbmRvdy5pbnRlcm5hbHMgdXNlZDsgdGhlc2UgYXJlIExheW91
dFRlc3RzLXNwZWNpZmljIEFQSXMgKFdlYktpdC9CbGluayknLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEp
XQorCisKK2RlZiB0ZXN0X21ldGFfdGltZW91dCgpOgorICAgIGNvZGUgPSBiIiIiCis8aHRtbCB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8bWV0YSBuYW1lPSJ0aW1lb3V0
IiAvPgorPG1ldGEgbmFtZT0idGltZW91dCIgY29udGVudD0ic2hvcnQiIC8+Cis8bWV0YSBuYW1l
PSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIiAvPgorPC9odG1sPgorIiIiCisgICAgZXJyb3JfbWFw
ID0gY2hlY2tfd2l0aF9maWxlcyhjb2RlKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywg
a2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMoZXJyb3Jz
KQorCisgICAgICAgIGlmIGtpbmQgaW4gWyJ3ZWItbGF4IiwgIndlYi1zdHJpY3QiXToKKyAgICAg
ICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAgICgiTVVMVElQTEUtVElN
RU9VVCIsICJNb3JlIHRoYW4gb25lIG1ldGEgbmFtZT0ndGltZW91dCciLCBmaWxlbmFtZSwgTm9u
ZSksCisgICAgICAgICAgICAgICAgKCJJTlZBTElELVRJTUVPVVQiLCAiSW52YWxpZCB0aW1lb3V0
IHZhbHVlICIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoIklOVkFMSUQtVElN
RU9VVCIsICJJbnZhbGlkIHRpbWVvdXQgdmFsdWUgc2hvcnQiLCBmaWxlbmFtZSwgTm9uZSksCisg
ICAgICAgICAgICBdCisgICAgICAgIGVsaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAg
IGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAgICgiUEFSU0UtRkFJTEVEIiwgIlVu
YWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDIpLAorICAgICAgICAgICAgXQorCisKK2Rl
ZiB0ZXN0X2Vhcmx5X3Rlc3RoYXJuZXNzcmVwb3J0KCk6CisgICAgY29kZSA9IGIiIiIKKzxodG1s
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KKyIiIgorICAgIGVycm9y
X21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoY29kZSkKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJv
cnMsIGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVy
cm9ycykKKworICAgICAgICBpZiBraW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3RyaWN0Il06Cisg
ICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIkVBUkxZLVRF
U1RIQVJORVNTUkVQT1JUIiwgInRlc3RoYXJuZXNzcmVwb3J0LmpzIHNjcmlwdCBzZWVuIGJlZm9y
ZSB0ZXN0aGFybmVzcy5qcyBzY3JpcHQiLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICBd
CisgICAgICAgIGVsaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAgIGFzc2VydCBlcnJv
cnMgPT0gWworICAgICAgICAgICAgICAgICgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJz
ZSBmaWxlIiwgZmlsZW5hbWUsIDIpLAorICAgICAgICAgICAgXQorCisKK2RlZiB0ZXN0X211bHRp
cGxlX3Rlc3RoYXJuZXNzKCk6CisgICAgY29kZSA9IGIiIiIKKzxodG1sIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKzwvaHRtbD4KKyIiIgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmls
ZXMoY29kZSkKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtpbmQpKSBpbiBlcnJvcl9t
YXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgICAgICBpZiBr
aW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3RyaWN0Il06CisgICAgICAgICAgICBhc3NlcnQgZXJy
b3JzID09IFsKKyAgICAgICAgICAgICAgICAoIk1VTFRJUExFLVRFU1RIQVJORVNTIiwgIk1vcmUg
dGhhbiBvbmUgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPiIsIGZpbGVu
YW1lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoIk1JU1NJTkctVEVTVEhBUk5FU1NSRVBPUlQi
LCAiTWlzc2luZyA8c2NyaXB0IHNyYz0nL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+
IiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgXQorICAgICAgICBlbGlmIGtpbmQgPT0g
InB5dGhvbiI6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAg
ICAoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAyKSwK
KyAgICAgICAgICAgIF0KKworCitkZWYgdGVzdF9tdWx0aXBsZV90ZXN0aGFybmVzc3JlcG9ydCgp
OgorICAgIGNvZGUgPSBiIiIiCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8L2h0bWw+CisiIiIKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGNvZGUpCisK
KyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6
CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCBpbiBbIndl
Yi1sYXgiLCAid2ViLXN0cmljdCJdOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisg
ICAgICAgICAgICAgICAgKCJNVUxUSVBMRS1URVNUSEFSTkVTU1JFUE9SVCIsICJNb3JlIHRoYW4g
b25lIDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz4iLCBmaWxl
bmFtZSwgTm9uZSksCisgICAgICAgICAgICBdCisgICAgICAgIGVsaWYga2luZCA9PSAicHl0aG9u
IjoKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAgICgiUEFS
U0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDIpLAorICAgICAg
ICAgICAgXQorCisKK2RlZiB0ZXN0X3ByZXNlbnRfdGVzdGhhcm5lc3Njc3MoKToKKyAgICBjb2Rl
ID0gYiIiIgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIvPgorPC9odG1s
PgorIiIiCisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhjb2RlKQorCisgICAgZm9y
IChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAg
ICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgaW4gWyJ3ZWItbGF4Iiwg
IndlYi1zdHJpY3QiXToKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAg
ICAgICAgICgiUFJFU0VOVC1URVNUSEFSTkVTU0NTUyIsICJFeHBsaWNpdCBsaW5rIHRvIHRlc3Ro
YXJuZXNzLmNzcyBwcmVzZW50IiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgXQorICAg
ICAgICBlbGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09
IFsKKyAgICAgICAgICAgICAgICAoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmls
ZSIsIGZpbGVuYW1lLCAyKSwKKyAgICAgICAgICAgIF0KKworCitkZWYgdGVzdF90ZXN0aGFybmVz
c19wYXRoKCk6CisgICAgY29kZSA9IGIiIiJcCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCI+Cis8c2NyaXB0IHNyYz0idGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJodHRwOi8vdzNjLXRlc3Qub3JnL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8L2h0bWw+CisiIiIKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGNvZGUpCisK
KyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6
CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbKCJX
M0MtVEVTVC5PUkciLCAiRXh0ZXJuYWwgdzNjLXRlc3Qub3JnIGRvbWFpbiB1c2VkIiwgZmlsZW5h
bWUsIDUpXQorICAgICAgICBpZiBraW5kID09ICJweXRob24iOgorICAgICAgICAgICAgZXhwZWN0
ZWQuYXBwZW5kKCgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5h
bWUsIDEpKQorICAgICAgICBlbGlmIGtpbmQgaW4gWyJ3ZWItbGF4IiwgIndlYi1zdHJpY3QiXToK
KyAgICAgICAgICAgIGV4cGVjdGVkLmV4dGVuZChbCisgICAgICAgICAgICAgICAgKCJURVNUSEFS
TkVTUy1QQVRIIiwgInRlc3RoYXJuZXNzLmpzIHNjcmlwdCBzZWVuIHdpdGggaW5jb3JyZWN0IHBh
dGgiLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICAgICAgKCJURVNUSEFSTkVTUy1QQVRI
IiwgInRlc3RoYXJuZXNzLmpzIHNjcmlwdCBzZWVuIHdpdGggaW5jb3JyZWN0IHBhdGgiLCBmaWxl
bmFtZSwgTm9uZSksCisgICAgICAgICAgICAgICAgKCJURVNUSEFSTkVTUy1QQVRIIiwgInRlc3Ro
YXJuZXNzLmpzIHNjcmlwdCBzZWVuIHdpdGggaW5jb3JyZWN0IHBhdGgiLCBmaWxlbmFtZSwgTm9u
ZSksCisgICAgICAgICAgICAgICAgKCJURVNUSEFSTkVTUy1QQVRIIiwgInRlc3RoYXJuZXNzLmpz
IHNjcmlwdCBzZWVuIHdpdGggaW5jb3JyZWN0IHBhdGgiLCBmaWxlbmFtZSwgTm9uZSksCisgICAg
ICAgICAgICBdKQorICAgICAgICBhc3NlcnQgZXJyb3JzID09IGV4cGVjdGVkCisKKworZGVmIHRl
c3RfdGVzdGhhcm5lc3NyZXBvcnRfcGF0aCgpOgorICAgIGNvZGUgPSBiIiIiXAorPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNjcmlwdCBzcmM9InRlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iaHR0cDovL3czYy10ZXN0Lm9y
Zy9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9odG1sPgorIiIi
CisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhjb2RlKQorCisgICAgZm9yIChmaWxl
bmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVj
a19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGV4cGVjdGVkID0gWygiVzNDLVRFU1QuT1JHIiwg
IkV4dGVybmFsIHczYy10ZXN0Lm9yZyBkb21haW4gdXNlZCIsIGZpbGVuYW1lLCA1KV0KKyAgICAg
ICAgaWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAgIGV4cGVjdGVkLmFwcGVuZCgoIlBB
UlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKSkKKyAgICAg
ICAgZWxpZiBraW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3RyaWN0Il06CisgICAgICAgICAgICBl
eHBlY3RlZC5leHRlbmQoWworICAgICAgICAgICAgICAgICgiVEVTVEhBUk5FU1NSRVBPUlQtUEFU
SCIsICJ0ZXN0aGFybmVzc3JlcG9ydC5qcyBzY3JpcHQgc2VlbiB3aXRoIGluY29ycmVjdCBwYXRo
IiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgiVEVTVEhBUk5FU1NSRVBPUlQt
UEFUSCIsICJ0ZXN0aGFybmVzc3JlcG9ydC5qcyBzY3JpcHQgc2VlbiB3aXRoIGluY29ycmVjdCBw
YXRoIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgiVEVTVEhBUk5FU1NSRVBP
UlQtUEFUSCIsICJ0ZXN0aGFybmVzc3JlcG9ydC5qcyBzY3JpcHQgc2VlbiB3aXRoIGluY29ycmVj
dCBwYXRoIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgiVEVTVEhBUk5FU1NS
RVBPUlQtUEFUSCIsICJ0ZXN0aGFybmVzc3JlcG9ydC5qcyBzY3JpcHQgc2VlbiB3aXRoIGluY29y
cmVjdCBwYXRoIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgXSkKKyAgICAgICAgYXNz
ZXJ0IGVycm9ycyA9PSBleHBlY3RlZAorCisKK2RlZiB0ZXN0X25vdF90ZXN0aGFybmVzc19wYXRo
KCk6CisgICAgY29kZSA9IGIiIiJcCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnBlcmZ0ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8L2h0bWw+CisiIiIKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGNvZGUp
CisKKyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1z
KCk6CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCA9PSAi
cHl0aG9uIjoKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAg
ICgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDEpLAor
ICAgICAgICAgICAgXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9
PSBbXQorCisKK0BweXRlc3QubWFyay5za2lwaWYoc2l4LlBZMywgcmVhc29uPSJDYW5ub3QgcGFy
c2UgcHJpbnQgc3RhdGVtZW50cyBmcm9tIHB5dGhvbiAzIikKK2RlZiB0ZXN0X3ByaW50X3N0YXRl
bWVudCgpOgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJkZWYgZm9vKCk6XG4g
IHByaW50ICdzdGF0ZW1lbnQnXG4gIHByaW50XG4iKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVy
cm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMo
ZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAgICBhc3Nl
cnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIlBSSU5UIFNUQVRFTUVOVCIsICJQcmlu
dCBmdW5jdGlvbiB1c2VkIiwgZmlsZW5hbWUsIDIpLAorICAgICAgICAgICAgICAgICgiUFJJTlQg
U1RBVEVNRU5UIiwgIlByaW50IGZ1bmN0aW9uIHVzZWQiLCBmaWxlbmFtZSwgMyksCisgICAgICAg
ICAgICBdCisgICAgICAgIGVsaWYga2luZCA9PSAid2ViLXN0cmljdCI6CisgICAgICAgICAgICBh
c3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIlBBUlNFLUZBSUxFRCIsICJVbmFi
bGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gW10KKworCitkZWYgdGVzdF9w
cmludF9mdW5jdGlvbigpOgorICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhfZmlsZXMoYiJkZWYg
Zm9vKCk6XG4gIHByaW50KCdmdW5jdGlvbicpXG4iKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVy
cm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMo
ZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAgICBhc3Nl
cnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIlBSSU5UIFNUQVRFTUVOVCIsICJQcmlu
dCBmdW5jdGlvbiB1c2VkIiwgZmlsZW5hbWUsIDIpLAorICAgICAgICAgICAgXQorICAgICAgICBl
bGlmIGtpbmQgPT0gIndlYi1zdHJpY3QiOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBb
CisgICAgICAgICAgICAgICAgKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUi
LCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICBdCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBhc3NlcnQgZXJyb3JzID09IFtdCisKKworb3Blbl9tb2RlX2NvZGUgPSAiIiIKK2RlZiBm
aXJzdCgpOgorICAgIHJldHVybiB7MH0oInRlc3QucG5nIikKKworZGVmIHNlY29uZCgpOgorICAg
IHJldHVybiB7MH0oInRlc3QucG5nIiwgInIiKQorCitkZWYgdGhpcmQoKToKKyAgICByZXR1cm4g
ezB9KCJ0ZXN0LnBuZyIsICJyYiIpCisKK2RlZiBmb3VydGgoKToKKyAgICByZXR1cm4gezB9KCJ0
ZXN0LnBuZyIsIGVuY29kaW5nPSJ1dGYtOCIpCisKK2RlZiBmaWZ0aCgpOgorICAgIHJldHVybiB7
MH0oInRlc3QucG5nIiwgbW9kZT0icmIiKQorIiIiCisKKworZGVmIHRlc3Rfb3Blbl9tb2RlKCk6
CisgICAgZm9yIG1ldGhvZCBpbiBbIm9wZW4iLCAiZmlsZSJdOgorICAgICAgICBjb2RlID0gb3Bl
bl9tb2RlX2NvZGUuZm9ybWF0KG1ldGhvZCkuZW5jb2RlKCJ1dGYtOCIpCisgICAgICAgIGVycm9y
cyA9IGNoZWNrX2ZpbGVfY29udGVudHMoIiIsICJ0ZXN0LnB5Iiwgc2l4LkJ5dGVzSU8oY29kZSkp
CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgbWVzc2FnZSA9ICgiRmls
ZSBvcGVuZWQgd2l0aG91dCBwcm92aWRpbmcgYW4gZXhwbGljaXQgbW9kZSAobm90ZTogIiArCisg
ICAgICAgICAgICAgICAgICAgImJpbmFyeSBmaWxlcyBtdXN0IGJlIHJlYWQgd2l0aCAnYicgaW4g
dGhlIG1vZGUgZmxhZ3MpIikKKworICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAg
ICAgICgiT1BFTi1OTy1NT0RFIiwgbWVzc2FnZSwgInRlc3QucHkiLCAzKSwKKyAgICAgICAgICAg
ICgiT1BFTi1OTy1NT0RFIiwgbWVzc2FnZSwgInRlc3QucHkiLCAxMiksCisgICAgICAgIF0KKwor
CitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoCisgICAgImZpbGVuYW1lLGV4cGVjdF9lcnJvciIs
CisgICAgWworICAgICAgICAoImZvby9iYXIuaHRtbCIsIEZhbHNlKSwKKyAgICAgICAgKCJjc3Mv
YmFyLmh0bWwiLCBUcnVlKSwKKyAgICBdKQorZGVmIHRlc3RfY3NzX3N1cHBvcnRfZmlsZShmaWxl
bmFtZSwgZXhwZWN0X2Vycm9yKToKKyAgICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIi
LCBmaWxlbmFtZSwgc2l4LkJ5dGVzSU8oYiIiKSkKKyAgICBjaGVja19lcnJvcnMoZXJyb3JzKQor
CisgICAgaWYgZXhwZWN0X2Vycm9yOgorICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAg
ICAgICAgICgnU1VQUE9SVC1XUk9ORy1ESVInLAorICAgICAgICAgICAgICdTdXBwb3J0IGZpbGUg
bm90IGluIHN1cHBvcnQgZGlyZWN0b3J5JywKKyAgICAgICAgICAgICBmaWxlbmFtZSwKKyAgICAg
ICAgICAgICBOb25lKSwKKyAgICAgICAgXQorICAgIGVsc2U6CisgICAgICAgIGFzc2VydCBlcnJv
cnMgPT0gW10KKworCitkZWYgdGVzdF9jc3NfbWlzc2luZ19maWxlX2luX2NzcygpOgorICAgIGNv
ZGUgPSBiIiIiXAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9odG1s
PgorIiIiCisgICAgZXJyb3JzID0gY2hlY2tfZmlsZV9jb250ZW50cygiIiwgImNzcy9mb28vYmFy
Lmh0bWwiLCBzaXguQnl0ZXNJTyhjb2RlKSkKKyAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisg
ICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICgnTUlTU0lORy1MSU5LJywKKyAgICAgICAg
ICdUZXN0Y2FzZSBmaWxlIG11c3QgaGF2ZSBhIGxpbmsgdG8gYSBzcGVjJywKKyAgICAgICAgICJj
c3MvZm9vL2Jhci5odG1sIiwKKyAgICAgICAgIE5vbmUpLAorICAgIF0KKworCitkZWYgdGVzdF9j
c3NfbWlzc2luZ19maWxlX21hbnVhbCgpOgorICAgIGVycm9ycyA9IGNoZWNrX2ZpbGVfY29udGVu
dHMoIiIsICJjc3MvZm9vL2Jhci1tYW51YWwuaHRtbCIsIHNpeC5CeXRlc0lPKGIiIikpCisgICAg
Y2hlY2tfZXJyb3JzKGVycm9ycykKKworICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAo
J01JU1NJTkctTElOSycsCisgICAgICAgICAnVGVzdGNhc2UgZmlsZSBtdXN0IGhhdmUgYSBsaW5r
IHRvIGEgc3BlYycsCisgICAgICAgICAiY3NzL2Zvby9iYXItbWFudWFsLmh0bWwiLAorICAgICAg
ICAgTm9uZSksCisgICAgXQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiZmlsZW5hbWUi
LCBbCisgICAgImZvby53b3JrZXIuanMiLAorICAgICJmb28uYW55LmpzIiwKK10pCitAcHl0ZXN0
Lm1hcmsucGFyYW1ldHJpemUoImlucHV0LGVycm9yIiwgWworICAgIChiIiIiLy9NRVRBOiB0aW1l
b3V0PWxvbmdcbiIiIiwgTm9uZSksCisgICAgKGIiIiIvLyBNRVRBOiB0aW1lb3V0PWxvbmdcbiIi
IiwgTm9uZSksCisgICAgKGIiIiIvLyAgTUVUQTogdGltZW91dD1sb25nXG4iIiIsIE5vbmUpLAor
ICAgIChiIiIiLy8gTUVUQTogc2NyaXB0PWZvby5qc1xuIiIiLCBOb25lKSwKKyAgICAoYiIiIiMg
TUVUQTpcbiIiIiwgTm9uZSksCisgICAgKGIiIiJcbi8vIE1FVEE6IHRpbWVvdXQ9bG9uZ1xuIiIi
LCAoMiwgIlNUUkFZLU1FVEFEQVRBIikpLAorICAgIChiIiIiIC8vIE1FVEE6IHRpbWVvdXQ9bG9u
Z1xuIiIiLCAoMSwgIklOREVOVEVELU1FVEFEQVRBIikpLAorICAgIChiIiIiLy8gTUVUQTogdGlt
ZW91dD1sb25nXG4vLyBNRVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgTm9uZSksCisgICAgKGIiIiIv
LyBNRVRBOiB0aW1lb3V0PWxvbmdcblxuLy8gTUVUQTogdGltZW91dD1sb25nXG4iIiIsICgzLCAi
U1RSQVktTUVUQURBVEEiKSksCisgICAgKGIiIiIvLyBNRVRBOiB0aW1lb3V0PWxvbmdcbi8vIFN0
YXJ0IG9mIHRoZSB0ZXN0XG4vLyBNRVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgKDMsICJTVFJBWS1N
RVRBREFUQSIpKSwKKyAgICAoYiIiIi8vIE1FVEE6XG4iIiIsICgxLCAiQlJPS0VOLU1FVEFEQVRB
IikpLAorICAgIChiIiIiLy8gTUVUQTogZm9vYmFyXG4iIiIsICgxLCAiQlJPS0VOLU1FVEFEQVRB
IikpLAorICAgIChiIiIiLy8gTUVUQTogZm9vPWJhclxuIiIiLCAoMSwgIlVOS05PV04tTUVUQURB
VEEiKSksCisgICAgKGIiIiIvLyBNRVRBOiB0aW1lb3V0PWJhclxuIiIiLCAoMSwgIlVOS05PV04t
VElNRU9VVC1NRVRBREFUQSIpKSwKK10pCitkZWYgdGVzdF9zY3JpcHRfbWV0YWRhdGEoZmlsZW5h
bWUsIGlucHV0LCBlcnJvcik6CisgICAgZXJyb3JzID0gY2hlY2tfZmlsZV9jb250ZW50cygiIiwg
ZmlsZW5hbWUsIHNpeC5CeXRlc0lPKGlucHV0KSkKKyAgICBjaGVja19lcnJvcnMoZXJyb3JzKQor
CisgICAgaWYgZXJyb3IgaXMgbm90IE5vbmU6CisgICAgICAgIGxpbmUsIGtpbmQgPSBlcnJvcgor
ICAgICAgICBtZXNzYWdlcyA9IHsKKyAgICAgICAgICAgICJTVFJBWS1NRVRBREFUQSI6ICJNZXRh
ZGF0YSBjb21tZW50cyBzaG91bGQgc3RhcnQgdGhlIGZpbGUiLAorICAgICAgICAgICAgIklOREVO
VEVELU1FVEFEQVRBIjogIk1ldGFkYXRhIGNvbW1lbnRzIHNob3VsZCBzdGFydCB0aGUgbGluZSIs
CisgICAgICAgICAgICAiQlJPS0VOLU1FVEFEQVRBIjogIk1ldGFkYXRhIGNvbW1lbnQgaXMgbm90
IGZvcm1hdHRlZCBjb3JyZWN0bHkiLAorICAgICAgICAgICAgIlVOS05PV04tVElNRU9VVC1NRVRB
REFUQSI6ICJVbmV4cGVjdGVkIHZhbHVlIGZvciB0aW1lb3V0IG1ldGFkYXRhIiwKKyAgICAgICAg
ICAgICJVTktOT1dOLU1FVEFEQVRBIjogIlVuZXhwZWN0ZWQga2luZCBvZiBtZXRhZGF0YSIsCisg
ICAgICAgIH0KKyAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAoa2luZCwK
KyAgICAgICAgICAgICBtZXNzYWdlc1traW5kXSwKKyAgICAgICAgICAgICBmaWxlbmFtZSwKKyAg
ICAgICAgICAgICBsaW5lKSwKKyAgICAgICAgXQorICAgIGVsc2U6CisgICAgICAgIGFzc2VydCBl
cnJvcnMgPT0gW10KKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImlucHV0LGVycm9yIiwg
WworICAgIChiIiIiI01FVEE6IHRpbWVvdXQ9bG9uZ1xuIiIiLCBOb25lKSwKKyAgICAoYiIiIiMg
TUVUQTogdGltZW91dD1sb25nXG4iIiIsIE5vbmUpLAorICAgIChiIiIiIyAgTUVUQTogdGltZW91
dD1sb25nXG4iIiIsIE5vbmUpLAorICAgIChiIiIiIi8vIE1FVEE6IlxuIiIiLCBOb25lKSwKKyAg
ICAoYiIiIlxuIyBNRVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgKDIsICJTVFJBWS1NRVRBREFUQSIp
KSwKKyAgICAoYiIiIiAjIE1FVEE6IHRpbWVvdXQ9bG9uZ1xuIiIiLCAoMSwgIklOREVOVEVELU1F
VEFEQVRBIikpLAorICAgIChiIiIiIyBNRVRBOiB0aW1lb3V0PWxvbmdcbiMgTUVUQTogdGltZW91
dD1sb25nXG4iIiIsIE5vbmUpLAorICAgIChiIiIiIyBNRVRBOiB0aW1lb3V0PWxvbmdcblxuIyBN
RVRBOiB0aW1lb3V0PWxvbmdcbiIiIiwgKDMsICJTVFJBWS1NRVRBREFUQSIpKSwKKyAgICAoYiIi
IiMgTUVUQTogdGltZW91dD1sb25nXG4jIFN0YXJ0IG9mIHRoZSB0ZXN0XG4jIE1FVEE6IHRpbWVv
dXQ9bG9uZ1xuIiIiLCAoMywgIlNUUkFZLU1FVEFEQVRBIikpLAorICAgIChiIiIiIyBNRVRBOlxu
IiIiLCAoMSwgIkJST0tFTi1NRVRBREFUQSIpKSwKKyAgICAoYiIiIiMgTUVUQTogZm9vYmFyXG4i
IiIsICgxLCAiQlJPS0VOLU1FVEFEQVRBIikpLAorICAgIChiIiIiIyBNRVRBOiBmb289YmFyXG4i
IiIsICgxLCAiVU5LTk9XTi1NRVRBREFUQSIpKSwKKyAgICAoYiIiIiMgTUVUQTogdGltZW91dD1i
YXJcbiIiIiwgKDEsICJVTktOT1dOLVRJTUVPVVQtTUVUQURBVEEiKSksCitdKQorZGVmIHRlc3Rf
cHl0aG9uX21ldGFkYXRhKGlucHV0LCBlcnJvcik6CisgICAgZmlsZW5hbWUgPSAidGVzdC5weSIK
KyAgICBlcnJvcnMgPSBjaGVja19maWxlX2NvbnRlbnRzKCIiLCBmaWxlbmFtZSwgc2l4LkJ5dGVz
SU8oaW5wdXQpKQorICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICBpZiBlcnJvciBpcyBu
b3QgTm9uZToKKyAgICAgICAgbGluZSwga2luZCA9IGVycm9yCisgICAgICAgIG1lc3NhZ2VzID0g
eworICAgICAgICAgICAgIlNUUkFZLU1FVEFEQVRBIjogIk1ldGFkYXRhIGNvbW1lbnRzIHNob3Vs
ZCBzdGFydCB0aGUgZmlsZSIsCisgICAgICAgICAgICAiSU5ERU5URUQtTUVUQURBVEEiOiAiTWV0
YWRhdGEgY29tbWVudHMgc2hvdWxkIHN0YXJ0IHRoZSBsaW5lIiwKKyAgICAgICAgICAgICJCUk9L
RU4tTUVUQURBVEEiOiAiTWV0YWRhdGEgY29tbWVudCBpcyBub3QgZm9ybWF0dGVkIGNvcnJlY3Rs
eSIsCisgICAgICAgICAgICAiVU5LTk9XTi1USU1FT1VULU1FVEFEQVRBIjogIlVuZXhwZWN0ZWQg
dmFsdWUgZm9yIHRpbWVvdXQgbWV0YWRhdGEiLAorICAgICAgICAgICAgIlVOS05PV04tTUVUQURB
VEEiOiAiVW5leHBlY3RlZCBraW5kIG9mIG1ldGFkYXRhIiwKKyAgICAgICAgfQorICAgICAgICBh
c3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgIChraW5kLAorICAgICAgICAgICAgIG1lc3Nh
Z2VzW2tpbmRdLAorICAgICAgICAgICAgIGZpbGVuYW1lLAorICAgICAgICAgICAgIGxpbmUpLAor
ICAgICAgICBdCisgICAgZWxzZToKKyAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL3Rlc3RfbGludC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2xpbnQucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTM3
NWUyZjc1NjBiNDYwNDJlMmJmNGY5ZGNkZWNjY2Q1Y2M4NDEwZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy90ZXN0X2xpbnQucHkKQEAgLTAsMCArMSw0MjIgQEAKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgdW5pY29kZV9saXRlcmFscworCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworaW1wb3J0IG1v
Y2sKK2ltcG9ydCBweXRlc3QKK2ltcG9ydCBzaXgKKworZnJvbSAuLi5sb2NhbHBhdGhzIGltcG9y
dCByZXBvX3Jvb3QKK2Zyb20gLi4gaW1wb3J0IGxpbnQgYXMgbGludF9tb2QKK2Zyb20gLi5saW50
IGltcG9ydCBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycywgcGFyc2Vfd2hpdGVsaXN0LCBsaW50LCBj
cmVhdGVfcGFyc2VyCisKK19kdW1teV9yZXBvID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFt
ZShfX2ZpbGVfXyksICJkdW1teSIpCisKK2RlZiBfbW9ja19saW50KG5hbWUsICoqa3dhcmdzKToK
KyAgICB3cmFwcGVkID0gZ2V0YXR0cihsaW50X21vZCwgbmFtZSkKKyAgICByZXR1cm4gbW9jay5w
YXRjaChsaW50X21vZC5fX25hbWVfXyArICIuIiArIG5hbWUsIHdyYXBzPXdyYXBwZWQsICoqa3dh
cmdzKQorCisKK2RlZiB0ZXN0X2ZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKCk6CisgICAgd2hpdGVs
aXN0ID0geworICAgICAgICAnQ09OU09MRSc6IHsKKyAgICAgICAgICAgICdzdmcvKic6IHsxMn0K
KyAgICAgICAgfSwKKyAgICAgICAgJ0lOREVOVCBUQUJTJzogeworICAgICAgICAgICAgJ3N2Zy8q
Jzoge05vbmV9CisgICAgICAgIH0KKyAgICB9CisgICAgIyBwYXJzZV93aGl0ZWxpc3Qgbm9ybWFs
aXNlcyB0aGUgY2FzZS9wYXRoIG9mIHRoZSBtYXRjaCBzdHJpbmcgc28gbmVlZCB0byBkbyB0aGUg
c2FtZQorICAgIHdoaXRlbGlzdCA9IHtlOiB7b3MucGF0aC5ub3JtY2FzZShrKTogdiBmb3Igaywg
diBpbiBwLml0ZW1zKCl9CisgICAgICAgICAgICAgICAgIGZvciBlLCBwIGluIHdoaXRlbGlzdC5p
dGVtcygpfQorICAgICMgcGF0aHMgcGFzc2VkIGludG8gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMg
YXJlIGFsd2F5cyBVbml4IHN0eWxlCisgICAgZmlsdGVyZWRmaWxlID0gJ3N2Zy90ZXN0Lmh0bWwn
CisgICAgdW5maWx0ZXJlZGZpbGUgPSAnaHRtbC90ZXN0Lmh0bWwnCisgICAgIyBUZXN0cyBmb3Ig
cGFzc2luZyBubyBlcnJvcnMKKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3Jz
KHdoaXRlbGlzdCwgW10pCisgICAgYXNzZXJ0IGZpbHRlcmVkID09IFtdCisgICAgZmlsdGVyZWQg
PSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtdKQorICAgIGFzc2VydCBmaWx0
ZXJlZCA9PSBbXQorICAgICMgVGVzdHMgZm9yIGZpbHRlcmluZyBvbiBmaWxlIGFuZCBsaW5lIG51
bWJlcgorICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBb
WydDT05TT0xFJywgJycsIGZpbHRlcmVkZmlsZSwgMTJdXSkKKyAgICBhc3NlcnQgZmlsdGVyZWQg
PT0gW10KKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKHdoaXRlbGlzdCwg
W1snQ09OU09MRScsICcnLCB1bmZpbHRlcmVkZmlsZSwgMTJdXSkKKyAgICBhc3NlcnQgZmlsdGVy
ZWQgPT0gW1snQ09OU09MRScsICcnLCB1bmZpbHRlcmVkZmlsZSwgMTJdXQorICAgIGZpbHRlcmVk
ID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hpdGVsaXN0LCBbWydDT05TT0xFJywgJycsIGZp
bHRlcmVkZmlsZSwgMTFdXSkKKyAgICBhc3NlcnQgZmlsdGVyZWQgPT0gW1snQ09OU09MRScsICcn
LCBmaWx0ZXJlZGZpbGUsIDExXV0KKyAgICAjIFRlc3RzIGZvciBmaWx0ZXJpbmcgb24ganVzdCBm
aWxlCisgICAgZmlsdGVyZWQgPSBmaWx0ZXJfd2hpdGVsaXN0X2Vycm9ycyh3aGl0ZWxpc3QsIFtb
J0lOREVOVCBUQUJTJywgJycsIGZpbHRlcmVkZmlsZSwgMTJdXSkKKyAgICBhc3NlcnQgZmlsdGVy
ZWQgPT0gW10KKyAgICBmaWx0ZXJlZCA9IGZpbHRlcl93aGl0ZWxpc3RfZXJyb3JzKHdoaXRlbGlz
dCwgW1snSU5ERU5UIFRBQlMnLCAnJywgZmlsdGVyZWRmaWxlLCAxMV1dKQorICAgIGFzc2VydCBm
aWx0ZXJlZCA9PSBbXQorICAgIGZpbHRlcmVkID0gZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMod2hp
dGVsaXN0LCBbWydJTkRFTlQgVEFCUycsICcnLCB1bmZpbHRlcmVkZmlsZSwgMTFdXSkKKyAgICBh
c3NlcnQgZmlsdGVyZWQgPT0gW1snSU5ERU5UIFRBQlMnLCAnJywgdW5maWx0ZXJlZGZpbGUsIDEx
XV0KKworCitkZWYgdGVzdF9wYXJzZV93aGl0ZWxpc3QoKToKKyAgICBpbnB1dF9idWZmZXIgPSBz
aXguU3RyaW5nSU8oIiIiCisjIENvbW1lbnQKK0NSIEFUIEVPTDogc3ZnL2ltcG9ydC8qCitDUiBB
VCBFT0w6IHN0cmVhbXMvcmVzb3VyY2VzL3Rlc3QtdXRpbHMuanMKKworSU5ERU5UIFRBQlM6IC5n
aXRtb2R1bGVzCitJTkRFTlQgVEFCUzogYXBwLXVyaS8qCitJTkRFTlQgVEFCUzogc3ZnLyoKKwor
VFJBSUxJTkcgV0hJVEVTUEFDRTogYXBwLXVyaS8qCisKK0NPTlNPTEU6c3RyZWFtcy9yZXNvdXJj
ZXMvdGVzdC11dGlscy5qczogMTIKKworQ1IgQVQgRU9MLCBJTkRFTlQgVEFCUzogaHRtbC90ZXN0
LmpzCisKK0NSIEFUIEVPTCwgSU5ERU5UIFRBQlM6IGh0bWwvdGVzdDIuanM6IDQyCisKKyo6Ki5w
ZGYKKyo6cmVzb3VyY2VzLyoKKworKiwgQ1IgQVQgRU9MOiAqLnBuZworIiIiKQorCisgICAgZXhw
ZWN0ZWRfZGF0YSA9IHsKKyAgICAgICAgJ0lOREVOVCBUQUJTJzogeworICAgICAgICAgICAgJy5n
aXRtb2R1bGVzJzoge05vbmV9LAorICAgICAgICAgICAgJ2FwcC11cmkvKic6IHtOb25lfSwKKyAg
ICAgICAgICAgICdzdmcvKic6IHtOb25lfSwKKyAgICAgICAgICAgICdodG1sL3Rlc3QuanMnOiB7
Tm9uZX0sCisgICAgICAgICAgICAnaHRtbC90ZXN0Mi5qcyc6IHs0Mn0sCisgICAgICAgIH0sCisg
ICAgICAgICdUUkFJTElORyBXSElURVNQQUNFJzogeworICAgICAgICAgICAgJ2FwcC11cmkvKic6
IHtOb25lfSwKKyAgICAgICAgfSwKKyAgICAgICAgJ0NPTlNPTEUnOiB7CisgICAgICAgICAgICAn
c3RyZWFtcy9yZXNvdXJjZXMvdGVzdC11dGlscy5qcyc6IHsxMn0sCisgICAgICAgIH0sCisgICAg
ICAgICdDUiBBVCBFT0wnOiB7CisgICAgICAgICAgICAnc3RyZWFtcy9yZXNvdXJjZXMvdGVzdC11
dGlscy5qcyc6IHtOb25lfSwKKyAgICAgICAgICAgICdzdmcvaW1wb3J0LyonOiB7Tm9uZX0sCisg
ICAgICAgICAgICAnaHRtbC90ZXN0LmpzJzoge05vbmV9LAorICAgICAgICAgICAgJ2h0bWwvdGVz
dDIuanMnOiB7NDJ9LAorICAgICAgICB9CisgICAgfQorICAgIGV4cGVjdGVkX2RhdGEgPSB7ZTog
e29zLnBhdGgubm9ybWNhc2Uoayk6IHYgZm9yIGssIHYgaW4gcC5pdGVtcygpfQorICAgICAgICAg
ICAgICAgICAgICAgZm9yIGUsIHAgaW4gZXhwZWN0ZWRfZGF0YS5pdGVtcygpfQorICAgIGV4cGVj
dGVkX2lnbm9yZWQgPSB7b3MucGF0aC5ub3JtY2FzZSh4KSBmb3IgeCBpbiB7IioucGRmIiwgInJl
c291cmNlcy8qIiwgIioucG5nIn19CisgICAgZGF0YSwgaWdub3JlZCA9IHBhcnNlX3doaXRlbGlz
dChpbnB1dF9idWZmZXIpCisgICAgYXNzZXJ0IGRhdGEgPT0gZXhwZWN0ZWRfZGF0YQorICAgIGFz
c2VydCBpZ25vcmVkID09IGV4cGVjdGVkX2lnbm9yZWQKKworCitkZWYgdGVzdF9saW50X25vX2Zp
bGVzKGNhcGxvZyk6CisgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbXSwgIm5vcm1hbCIpCisg
ICAgYXNzZXJ0IHJ2ID09IDAKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYg
dGVzdF9saW50X2lnbm9yZWRfZmlsZShjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hl
Y2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQo
ImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAg
ICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJicm9rZW5faWdub3JlZC5odG1sIl0s
ICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFzc2Vy
dCBub3QgbW9ja2VkX2NoZWNrX3BhdGguY2FsbGVkCisgICAgICAgICAgICBhc3NlcnQgbm90IG1v
Y2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxlZAorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9
PSAiIgorCisKK2RlZiB0ZXN0X2xpbnRfbm90X2V4aXN0aW5nX2ZpbGUoY2FwbG9nKToKKyAgICB3
aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAg
ICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNr
X2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICAjIHJlYWxseSBsb25nIHBhdGgtbGludGVkIGZp
bGVuYW1lCisgICAgICAgICAgICBuYW1lID0gImEiICogMjU2ICsgIi5odG1sIgorICAgICAgICAg
ICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbbmFtZV0sICJub3JtYWwiKQorICAgICAgICAgICAg
YXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFzc2VydCBub3QgbW9ja2VkX2NoZWNrX3BhdGgu
Y2FsbGVkCisgICAgICAgICAgICBhc3NlcnQgbm90IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRz
LmNhbGxlZAorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X2xpbnRf
cGFzc2luZyhjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1v
Y2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29u
dGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0g
bGludChfZHVtbXlfcmVwbywgWyJva2F5Lmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBh
c3NlcnQgcnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxf
Y291bnQgPT0gMQorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRz
LmNhbGxfY291bnQgPT0gMQorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0
ZXN0X2xpbnRfZmFpbGluZyhjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0
aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNr
X2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAg
ICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJicm9rZW4uaHRtbCJdLCAibm9ybWFsIikKKyAg
ICAgICAgICAgIGFzc2VydCBydiA9PSAxCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNr
X3BhdGguY2FsbF9jb3VudCA9PSAxCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2Zp
bGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAxCisgICAgYXNzZXJ0ICJUUkFJTElORyBXSElURVNQ
QUNFIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2VydCAiYnJva2VuLmh0bWw6MSIgaW4gY2FwbG9n
LnRleHQKKworCitkZWYgdGVzdF9yZWZfZXhpc3RlbnRfcmVsYXRpdmUoY2FwbG9nKToKKyAgICB3
aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAg
ICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNr
X2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsicmVm
L2V4aXN0ZW50X3JlbGF0aXZlLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQg
cnYgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQg
PT0gMQorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxf
Y291bnQgPT0gMQorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X3Jl
Zl9leGlzdGVudF9yb290X3JlbGF0aXZlKGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50KCJj
aGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGlu
dCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgor
ICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbInJlZi9leGlzdGVudF9yb290X3Jl
bGF0aXZlLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAg
ICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMQorICAgICAg
ICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMQor
ICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X3JlZl9ub25fZXhpc3Rl
bnRfcmVsYXRpdmUoY2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBh
cyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxl
X2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBy
diA9IGxpbnQoX2R1bW15X3JlcG8sIFsicmVmL25vbl9leGlzdGVudF9yZWxhdGl2ZS5odG1sIl0s
ICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDEKKyAgICAgICAgICAgIGFzc2Vy
dCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDEKKyAgICAgICAgICAgIGFzc2VydCBt
b2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDEKKyAgICBhc3NlcnQgIk5P
Ti1FWElTVEVOVC1SRUYiIGluIGNhcGxvZy50ZXh0CisgICAgYXNzZXJ0ICJyZWYvbm9uX2V4aXN0
ZW50X3JlbGF0aXZlLmh0bWwiIGluIGNhcGxvZy50ZXh0CisgICAgYXNzZXJ0ICJub25fZXhpc3Rl
bnRfZmlsZS5odG1sIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0ZXN0X3JlZl9ub25fZXhpc3Rl
bnRfcm9vdF9yZWxhdGl2ZShjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0
aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNr
X2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAg
ICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJyZWYvbm9uX2V4aXN0ZW50X3Jvb3RfcmVsYXRp
dmUuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAxCisgICAgICAg
ICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAxCisgICAgICAgICAg
ICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAxCisgICAg
YXNzZXJ0ICJOT04tRVhJU1RFTlQtUkVGIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2VydCAicmVm
L25vbl9leGlzdGVudF9yb290X3JlbGF0aXZlLmh0bWwiIGluIGNhcGxvZy50ZXh0CisgICAgYXNz
ZXJ0ICIvbm9uX2V4aXN0ZW50X2ZpbGUuaHRtbCIgaW4gY2FwbG9nLnRleHQKKworCisKK2RlZiB0
ZXN0X3JlZl9hYnNvbHV0ZV91cmwoY2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNr
X3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJj
aGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAg
ICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsicmVmL2Fic29sdXRlLmh0bWwiXSwgIm5v
cm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMQorICAgICAgICAgICAgYXNzZXJ0IG1v
Y2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMQorICAgICAgICAgICAgYXNzZXJ0IG1vY2tl
ZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMQorICAgIGFzc2VydCAiQUJTT0xV
VEUtVVJMLVJFRiIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3NlcnQgImh0dHA6Ly9leGFtcGxlLmNv
bS9yZWZlcmVuY2UuaHRtbCIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3NlcnQgInJlZi9hYnNvbHV0
ZS5odG1sIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0ZXN0X3JlZl9zYW1lX2ZpbGVfZW1wdHko
Y2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hl
Y2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikg
YXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1
bW15X3JlcG8sIFsicmVmL3NhbWVfZmlsZV9lbXB0eS5odG1sIl0sICJub3JtYWwiKQorICAgICAg
ICAgICAgYXNzZXJ0IHJ2ID09IDEKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0
aC5jYWxsX2NvdW50ID09IDEKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9j
b250ZW50cy5jYWxsX2NvdW50ID09IDEKKyAgICBhc3NlcnQgIlNBTUUtRklMRS1SRUYiIGluIGNh
cGxvZy50ZXh0CisgICAgYXNzZXJ0ICJzYW1lX2ZpbGVfZW1wdHkuaHRtbCIgaW4gY2FwbG9nLnRl
eHQKKworCitkZWYgdGVzdF9yZWZfc2FtZV9maWxlX3BhdGgoY2FwbG9nKToKKyAgICB3aXRoIF9t
b2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0
aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVf
Y29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsicmVmL3NhbWVf
ZmlsZV9wYXRoLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMQor
ICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMQorICAg
ICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0g
MQorICAgIGFzc2VydCAiU0FNRS1GSUxFLVJFRiIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3NlcnQg
InNhbWVfZmlsZV9wYXRoLmh0bWwiIGluIGNhcGxvZy50ZXh0CisKKworZGVmIHRlc3RfbGludF9w
YXNzaW5nX2FuZF9mYWlsaW5nKGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19w
YXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hl
Y2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAg
ICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImJyb2tlbi5odG1sIiwgIm9rYXkuaHRtbCJd
LCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAxCisgICAgICAgICAgICBhc3Nl
cnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAyCisgICAgICAgICAgICBhc3NlcnQg
bW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAgYXNzZXJ0ICJU
UkFJTElORyBXSElURVNQQUNFIiBpbiBjYXBsb2cudGV4dAorICAgIGFzc2VydCAiYnJva2VuLmh0
bWw6MSIgaW4gY2FwbG9nLnRleHQKKyAgICBhc3NlcnQgIm9rYXkuaHRtbCIgbm90IGluIGNhcGxv
Zy50ZXh0CisKKworZGVmIHRlc3RfY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV9pZGVudGljYWxf
dGVzdChjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfcGF0aCIpIGFzIG1vY2tl
ZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX2ZpbGVfY29udGVu
dHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoKKyAgICAgICAgICAgIHJ2ID0gbGlu
dChfZHVtbXlfcmVwbywgWyJjc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLmh0bWwiLCAiY3NzL2Nzcy11
bmlxdWUvYS5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDAKKyAg
ICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAg
ICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIK
KyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYgdGVzdF9jaGVja19jc3NfZ2xv
YmFsbHlfdW5pcXVlX2RpZmZlcmVudF90ZXN0KGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50
KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tf
bGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRz
OgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImNzcy9jc3MtdW5pcXVlL25v
dC1tYXRjaC9hLmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUvYS5odG1sIl0sICJub3JtYWwiKQorICAg
ICAgICAgICAgYXNzZXJ0IHJ2ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tf
cGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmls
ZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIKKyAgICBhc3NlcnQgIkNTUy1DT0xMSURJTkctVEVT
VC1OQU1FIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0ZXN0X2NoZWNrX2Nzc19nbG9iYWxseV91
bmlxdWVfZGlmZmVyZW50X3NwZWNfdGVzdChjYXBsb2cpOgorICAgIHdpdGggX21vY2tfbGludCgi
Y2hlY2tfcGF0aCIpIGFzIG1vY2tlZF9jaGVja19wYXRoOgorICAgICAgICB3aXRoIF9tb2NrX2xp
bnQoImNoZWNrX2ZpbGVfY29udGVudHMiKSBhcyBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50czoK
KyAgICAgICAgICAgIHJ2ID0gbGludChfZHVtbXlfcmVwbywgWyJjc3MvY3NzLXVuaXF1ZS9zZWxl
Y3RvcnMvYS5odG1sIiwgImNzcy9jc3MtdW5pcXVlL2EuaHRtbCJdLCAibm9ybWFsIikKKyAgICAg
ICAgICAgIGFzc2VydCBydiA9PSAwCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3Bh
dGguY2FsbF9jb3VudCA9PSAyCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVf
Y29udGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisK
KworZGVmIHRlc3RfY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV9zdXBwb3J0X2lnbm9yZWQoY2Fw
bG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tf
cGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMg
bW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15
X3JlcG8sIFsiY3NzL2Nzcy11bmlxdWUvc3VwcG9ydC9hLmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUv
c3VwcG9ydC90b29scy9hLmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYg
PT0gMAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0g
MgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291
bnQgPT0gMgorICAgIGFzc2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X2NoZWNr
X2Nzc19nbG9iYWxseV91bmlxdWVfc3VwcG9ydF9pZGVudGljYWwoY2FwbG9nKToKKyAgICB3aXRo
IF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAg
d2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2Zp
bGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiY3NzL2Nz
cy11bmlxdWUvc3VwcG9ydC9hLmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9ydC9h
Lmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAg
ICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAg
YXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFz
c2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X2NoZWNrX2Nzc19nbG9iYWxseV91
bmlxdWVfc3VwcG9ydF9kaWZmZXJlbnQoY2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNo
ZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50
KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6Cisg
ICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiY3NzL2Nzcy11bmlxdWUvbm90LW1h
dGNoL3N1cHBvcnQvYS5odG1sIiwgImNzcy9jc3MtdW5pcXVlL3N1cHBvcnQvYS5odG1sIl0sICJu
b3JtYWwiKQorICAgICAgICAgICAgYXNzZXJ0IHJ2ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBt
b2NrZWRfY2hlY2tfcGF0aC5jYWxsX2NvdW50ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2Nr
ZWRfY2hlY2tfZmlsZV9jb250ZW50cy5jYWxsX2NvdW50ID09IDIKKyAgICBhc3NlcnQgIkNTUy1D
T0xMSURJTkctU1VQUE9SVC1OQU1FIiBpbiBjYXBsb2cudGV4dAorCisKK2RlZiB0ZXN0X2NoZWNr
X2Nzc19nbG9iYWxseV91bmlxdWVfdGVzdF9zdXBwb3J0KGNhcGxvZyk6CisgICAgd2l0aCBfbW9j
a19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGgg
X21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2Nv
bnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImNzcy9jc3MtdW5p
cXVlL3N1cHBvcnQvYS5odG1sIiwgImNzcy9jc3MtdW5pcXVlL2EuaHRtbCJdLCAibm9ybWFsIikK
KyAgICAgICAgICAgIGFzc2VydCBydiA9PSAwCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2No
ZWNrX3BhdGguY2FsbF9jb3VudCA9PSAyCisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNr
X2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAyCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09
ICIiCisKKworZGVmIHRlc3RfY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV9yZWZfaWRlbnRpY2Fs
KGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2No
ZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIp
IGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9k
dW1teV9yZXBvLCBbImNzcy9jc3MtdW5pcXVlL2EtcmVmLmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUv
bWF0Y2gvYS1yZWYuaHRtbCJdLCAibm9ybWFsIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAw
CisgICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX3BhdGguY2FsbF9jb3VudCA9PSAyCisg
ICAgICAgICAgICBhc3NlcnQgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9
PSAyCisgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisKKworZGVmIHRlc3RfY2hlY2tfY3Nz
X2dsb2JhbGx5X3VuaXF1ZV9yZWZfZGlmZmVyZW50KGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19s
aW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21v
Y2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRl
bnRzOgorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImNzcy9jc3MtdW5pcXVl
L25vdC1tYXRjaC9hLXJlZi5odG1sIiwgImNzcy9jc3MtdW5pcXVlL2EtcmVmLmh0bWwiXSwgIm5v
cm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1v
Y2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAgYXNzZXJ0IG1vY2tl
ZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFzc2VydCAiQ1NTLUNP
TExJRElORy1SRUYtTkFNRSIgaW4gY2FwbG9nLnRleHQKKworCitkZWYgdGVzdF9jaGVja19jc3Nf
Z2xvYmFsbHlfdW5pcXVlX3Rlc3RfcmVmKGNhcGxvZyk6CisgICAgd2l0aCBfbW9ja19saW50KCJj
aGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGlu
dCgiY2hlY2tfZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgor
ICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImNzcy9jc3MtdW5pcXVlL2EtcmVm
Lmh0bWwiLCAiY3NzL2Nzcy11bmlxdWUvYS5odG1sIl0sICJub3JtYWwiKQorICAgICAgICAgICAg
YXNzZXJ0IHJ2ID09IDAKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxs
X2NvdW50ID09IDIKKyAgICAgICAgICAgIGFzc2VydCBtb2NrZWRfY2hlY2tfZmlsZV9jb250ZW50
cy5jYWxsX2NvdW50ID09IDIKKyAgICBhc3NlcnQgY2FwbG9nLnRleHQgPT0gIiIKKworCitkZWYg
dGVzdF9jaGVja19jc3NfZ2xvYmFsbHlfdW5pcXVlX2lnbm9yZWQoY2FwbG9nKToKKyAgICB3aXRo
IF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAg
d2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2Zp
bGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiY3NzL2Nz
cy11bmlxdWUvdG9vbHMvYS5odG1sIiwgImNzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC90b29scy9h
Lmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAg
ICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAg
YXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgIGFz
c2VydCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X2NoZWNrX2Nzc19nbG9iYWxseV91
bmlxdWVfaWdub3JlZF9kaXIoY2FwbG9nKToKKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3Bh
dGgiKSBhcyBtb2NrZWRfY2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVj
a19maWxlX2NvbnRlbnRzIikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAg
ICAgICBydiA9IGxpbnQoX2R1bW15X3JlcG8sIFsiY3NzL2Nzcy11bmlxdWUvc3VwcG9ydC9hLmh0
bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAorICAgICAgICAgICAg
YXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMQorICAgICAgICAgICAgYXNz
ZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMQorICAgIGFzc2Vy
dCBjYXBsb2cudGV4dCA9PSAiIgorCisKK2RlZiB0ZXN0X2FsbF9maWxlc3lzdGVtX3BhdGhzKCk6
CisgICAgd2l0aCBtb2NrLnBhdGNoKAorICAgICAgICAgICAgJ29zLndhbGsnLAorICAgICAgICAg
ICAgcmV0dXJuX3ZhbHVlPVsoJy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgWydkaXJf
YScsICdkaXJfYiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgWydmaWxlX2EnLCAnZmls
ZV9iJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAob3MucGF0aC5qb2luKCcuJywgJ2Rp
cl9hJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsnZmlsZV9jJywgJ2ZpbGVfZCddKV0KKyAgICApIGFzIG06CisgICAgICAgIGdv
dCA9IGxpc3QobGludF9tb2QuYWxsX2ZpbGVzeXN0ZW1fcGF0aHMoJy4nKSkKKyAgICAgICAgYXNz
ZXJ0IGdvdCA9PSBbJ2ZpbGVfYScsCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlX2InLAor
ICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oJ2Rpcl9hJywgJ2ZpbGVfYycpLAor
ICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oJ2Rpcl9hJywgJ2ZpbGVfZCcpXQor
CisKK2RlZiB0ZXN0X21haW5fd2l0aF9hcmdzKCk6CisgICAgb3JpZ19hcmd2ID0gc3lzLmFyZ3YK
KyAgICB0cnk6CisgICAgICAgIHN5cy5hcmd2ID0gWycuL2xpbnQnLCAnYScsICdiJywgJ2MnXQor
ICAgICAgICB3aXRoIF9tb2NrX2xpbnQoJ2xpbnQnLCByZXR1cm5fdmFsdWU9VHJ1ZSkgYXMgbToK
KyAgICAgICAgICAgIGxpbnRfbW9kLm1haW4oKip2YXJzKGNyZWF0ZV9wYXJzZXIoKS5wYXJzZV9h
cmdzKCkpKQorICAgICAgICAgICAgbS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChyZXBvX3Jvb3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcy5wYXRoLnJlbHBhdGgo
b3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCB4KSwgcmVwb19yb290KQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gWydhJywgJ2InLCAnYyddXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vcm1hbCIpCisgICAgZmluYWxseToK
KyAgICAgICAgc3lzLmFyZ3YgPSBvcmlnX2FyZ3YKKworCitkZWYgdGVzdF9tYWluX25vX2FyZ3Mo
KToKKyAgICBvcmlnX2FyZ3YgPSBzeXMuYXJndgorICAgIHRyeToKKyAgICAgICAgc3lzLmFyZ3Yg
PSBbJy4vbGludCddCisgICAgICAgIHdpdGggX21vY2tfbGludCgnbGludCcsIHJldHVybl92YWx1
ZT1UcnVlKSBhcyBtOgorICAgICAgICAgICAgd2l0aCBfbW9ja19saW50KCdjaGFuZ2VkX2ZpbGVz
JywgcmV0dXJuX3ZhbHVlPVsnZm9vJywgJ2JhciddKSBhcyBtMjoKKyAgICAgICAgICAgICAgICBs
aW50X21vZC5tYWluKCoqdmFycyhjcmVhdGVfcGFyc2VyKCkucGFyc2VfYXJncygpKSkKKyAgICAg
ICAgICAgICAgICBtLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKHJlcG9fcm9vdCwgWydmb28nLCAn
YmFyJ10sICJub3JtYWwiKQorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5hcmd2ID0gb3JpZ19h
cmd2CisKKworZGVmIHRlc3RfbWFpbl9hbGwoKToKKyAgICBvcmlnX2FyZ3YgPSBzeXMuYXJndgor
ICAgIHRyeToKKyAgICAgICAgc3lzLmFyZ3YgPSBbJy4vbGludCcsICctLWFsbCddCisgICAgICAg
IHdpdGggX21vY2tfbGludCgnbGludCcsIHJldHVybl92YWx1ZT1UcnVlKSBhcyBtOgorICAgICAg
ICAgICAgd2l0aCBfbW9ja19saW50KCdhbGxfZmlsZXN5c3RlbV9wYXRocycsIHJldHVybl92YWx1
ZT1bJ2ZvbycsICdiYXInXSkgYXMgbTI6CisgICAgICAgICAgICAgICAgbGludF9tb2QubWFpbigq
KnZhcnMoY3JlYXRlX3BhcnNlcigpLnBhcnNlX2FyZ3MoKSkpCisgICAgICAgICAgICAgICAgbS5h
c3NlcnRfY2FsbGVkX29uY2Vfd2l0aChyZXBvX3Jvb3QsIFsnZm9vJywgJ2JhciddLCAibm9ybWFs
IikKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMuYXJndiA9IG9yaWdfYXJndgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL3Rlc3RfcGF0aF9saW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X3BhdGhfbGludHMucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjU4MTgyODllYWNjNWVlOGE4NzlhYzk4YmEyM2VhOTIzM2U4ZmE3YwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy90ZXN0X3BhdGhfbGludHMucHkKQEAgLTAsMCArMSw0MSBAQAorZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCisKK2Zyb20gLi5saW50IGltcG9ydCBj
aGVja19wYXRoCitmcm9tIC5iYXNlIGltcG9ydCBjaGVja19lcnJvcnMKK2ltcG9ydCBweXRlc3QK
K2ltcG9ydCBzaXgKKworZGVmIHRlc3RfYWxsb3dlZF9wYXRoX2xlbmd0aCgpOgorICAgIGJhc2Vu
YW1lID0gMjkgKiAidGVzdC8iCisKKyAgICBmb3IgaWR4IGluIHJhbmdlKDUpOgorICAgICAgICBm
aWxlbmFtZSA9IGJhc2VuYW1lICsgaWR4ICogImEiCisKKyAgICAgICAgZXJyb3JzID0gY2hlY2tf
cGF0aCgiL2Zvby8iLCBmaWxlbmFtZSkKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKyAg
ICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbXQorCisKK2RlZiB0ZXN0X2ZvcmJpZGRlbl9wYXRoX2xl
bmd0aCgpOgorICAgIGJhc2VuYW1lID0gMjkgKiAidGVzdC8iCisKKyAgICBmb3IgaWR4IGluIHJh
bmdlKDUsIDEwKToKKyAgICAgICAgZmlsZW5hbWUgPSBiYXNlbmFtZSArIGlkeCAqICJhIgorICAg
ICAgICBtZXNzYWdlID0gIi8lcyBsb25nZXIgdGhhbiBtYXhpbXVtIHBhdGggbGVuZ3RoICglcyA+
IDE1MCkiICUgKGZpbGVuYW1lLCAxNDYgKyBpZHgpCisKKyAgICAgICAgZXJyb3JzID0gY2hlY2tf
cGF0aCgiL2Zvby8iLCBmaWxlbmFtZSkKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKKyAg
ICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbKCJQQVRIIExFTkdUSCIsIG1lc3NhZ2UsIGZpbGVuYW1l
LCBOb25lKV0KKworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJwYXRoX2VuZGluZyxnZW5lcmF0
ZWQiLCBbKCIud29ya2VyLmh0bWwiLCAiLndvcmtlci5qcyIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCIuYW55Lndvcmtlci5odG1sIiwgIi5h
bnkuanMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICgiLmFueS5odG1sIiwgIi5hbnkuanMiKV0pCitkZWYgdGVzdF9mb3JiaWRkZW5fcGF0aF9l
bmRpbmdzKHBhdGhfZW5kaW5nLCBnZW5lcmF0ZWQpOgorICAgIHBhdGggPSAiL3Rlc3QvdGVzdCIg
KyBwYXRoX2VuZGluZworCisgICAgbWVzc2FnZSA9ICgicGF0aCBlbmRzIHdpdGggJXMgd2hpY2gg
Y29sbGlkZXMgd2l0aCBnZW5lcmF0ZWQgdGVzdHMgZnJvbSAlcyBmaWxlcyIgJQorICAgICAgICAg
ICAgICAgKHBhdGhfZW5kaW5nLCBnZW5lcmF0ZWQpKQorCisgICAgZXJyb3JzID0gY2hlY2tfcGF0
aCgiL2Zvby8iLCBwYXRoKQorICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisgICAgYXNzZXJ0IGVy
cm9ycyA9PSBbKCJXT1JLRVIgQ09MTElTSU9OIiwgbWVzc2FnZSwgcGF0aCwgTm9uZSldCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L2l0ZW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkKaW5kZXggNjFiZTQ0NDNiNDAyMWE3ZGZmMDNm
NzM1YzE1ODc4NjcxNjM2NGExZi4uMDZhZTNjMjM2ZTYxNzA0N2YzMDhhNWE4NjQ0ZTk0ZjlhZmQx
NzkyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9tYW5pZmVzdC9pdGVtLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvaXRlbS5weQpAQCAtMTAyLDE3ICsx
MDIsMjAgQEAgY2xhc3MgVVJMTWFuaWZlc3RJdGVtKE1hbmlmZXN0SXRlbSk6CiBjbGFzcyBUZXN0
aGFybmVzc1Rlc3QoVVJMTWFuaWZlc3RJdGVtKToKICAgICBpdGVtX3R5cGUgPSAidGVzdGhhcm5l
c3MiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc291cmNlX2ZpbGUsIHVybCwgdXJsX2Jhc2U9
Ii8iLCB0aW1lb3V0PU5vbmUsIG1hbmlmZXN0PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBzb3VyY2VfZmlsZSwgdXJsLCB1cmxfYmFzZT0iLyIsIHRpbWVvdXQ9Tm9uZSwgdGVzdGRyaXZl
cj1GYWxzZSwgbWFuaWZlc3Q9Tm9uZSk6CiAgICAgICAgIFVSTE1hbmlmZXN0SXRlbS5fX2luaXRf
XyhzZWxmLCBzb3VyY2VfZmlsZSwgdXJsLCB1cmxfYmFzZT11cmxfYmFzZSwgbWFuaWZlc3Q9bWFu
aWZlc3QpCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgc2VsZi50ZXN0
ZHJpdmVyID0gdGVzdGRyaXZlcgogCiAgICAgZGVmIG1ldGFfa2V5KHNlbGYpOgotICAgICAgICBy
ZXR1cm4gKHNlbGYudGltZW91dCwpCisgICAgICAgIHJldHVybiAoc2VsZi50aW1lb3V0LCBzZWxm
LnRlc3Rkcml2ZXIpCiAKICAgICBkZWYgdG9fanNvbihzZWxmKToKICAgICAgICAgcnYgPSBVUkxN
YW5pZmVzdEl0ZW0udG9fanNvbihzZWxmKQogICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgbm90
IE5vbmU6CiAgICAgICAgICAgICBydlstMV1bInRpbWVvdXQiXSA9IHNlbGYudGltZW91dAorICAg
ICAgICBpZiBzZWxmLnRlc3Rkcml2ZXI6CisgICAgICAgICAgICBydlstMV1bInRlc3Rkcml2ZXIi
XSA9IHNlbGYudGVzdGRyaXZlcgogICAgICAgICByZXR1cm4gcnYKIAogICAgIEBjbGFzc21ldGhv
ZApAQCAtMTI0LDYgKzEyNyw3IEBAIGNsYXNzIFRlc3RoYXJuZXNzVGVzdChVUkxNYW5pZmVzdEl0
ZW0pOgogICAgICAgICAgICAgICAgICAgIHVybCwKICAgICAgICAgICAgICAgICAgICB1cmxfYmFz
ZT1tYW5pZmVzdC51cmxfYmFzZSwKICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PWV4dHJhcy5n
ZXQoInRpbWVvdXQiKSwKKyAgICAgICAgICAgICAgICAgICB0ZXN0ZHJpdmVyPWJvb2woZXh0cmFz
LmdldCgidGVzdGRyaXZlciIpKSwKICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdD1tYW5pZmVz
dCkKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKaW5k
ZXggYmY3MmY0NWIzNTE3YjFmMWY1MzM2NzI0YTMxZWMyNzg1MTYxZjBlZS4uMDkzZmMyYmQ0NzAy
Zjc4ZjlhMGFiYzc3OWE1ZTczYTU5NTk3MzBkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9zb3VyY2VmaWxlLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3Qvc291cmNlZmlsZS5weQpAQCAtNTQsOCArNTQsNyBAQCBjbGFzcyBTb3VyY2VGaWxl
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAieGh0bWwiOmxhbWJkYSB4OkVsZW1lbnRUcmVlLnBh
cnNlKHgsIFhNTFBhcnNlci5YTUxQYXJzZXIoKSksCiAgICAgICAgICAgICAgICAic3ZnIjpsYW1i
ZGEgeDpFbGVtZW50VHJlZS5wYXJzZSh4LCBYTUxQYXJzZXIuWE1MUGFyc2VyKCkpfQogCi0gICAg
cm9vdF9kaXJfbm9uX3Rlc3QgPSBzZXQoWyJjb21tb24iLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAid29yay1pbi1wcm9ncmVzcyJdKQorICAgIHJvb3RfZGlyX25vbl90ZXN0ID0gc2V0
KFsiY29tbW9uIl0pCiAKICAgICBkaXJfbm9uX3Rlc3QgPSBzZXQoWyJyZXNvdXJjZXMiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnQiLApAQCAtNjMsOCArNjIsNyBAQCBjbGFzcyBT
b3VyY2VGaWxlKG9iamVjdCk6CiAKICAgICBkaXJfcGF0aF9ub25fdGVzdCA9IHsoImNzczIxIiwg
ImFyY2hpdmUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoImNzcyIsICJDU1MyIiwgImFy
Y2hpdmUiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoImNzcyIsICJjb21tb24iKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAoImNzcyIsICJ3b3JrLWluLXByb2dyZXNzIil9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgKCJjc3MiLCAiY29tbW9uIil9CiAKICAgICBkZWYgX19pbml0
X18oc2VsZiwgdGVzdHNfcm9vdCwgcmVsX3BhdGgsIHVybF9iYXNlLCBjb250ZW50cz1Ob25lKToK
ICAgICAgICAgIiIiT2JqZWN0IHJlcHJlc2VudGluZyBhIGZpbGUgaW4gYSBzb3VyY2UgdHJlZS4K
QEAgLTM4Miw2ICszODAsMjAgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgICAg
IHJldHVybiBydgogCisgICAgQGNhY2hlZF9wcm9wZXJ0eQorICAgIGRlZiB0ZXN0ZHJpdmVyX25v
ZGVzKHNlbGYpOgorICAgICAgICAiIiJMaXN0IG9mIEVsZW1lbnRUcmVlIEVsZW1lbnRzIGNvcnJl
c3BvbmRpbmcgdG8gbm9kZXMgcmVwcmVzZW50aW5nIGEKKyAgICAgICAgdGVzdGRyaXZlci5qcyBz
Y3JpcHQiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucm9vdC5maW5kYWxsKCIuLy97aHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbH1zY3JpcHRbQHNyYz0nL3Jlc291cmNlcy90ZXN0ZHJpdmVyLmpz
J10iKQorCisgICAgQGNhY2hlZF9wcm9wZXJ0eQorICAgIGRlZiBoYXNfdGVzdGRyaXZlcihzZWxm
KToKKyAgICAgICAgIiIiQm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgY29udGVu
dCByZXByZXNlbnRzIGEKKyAgICAgICAgdGVzdGhhcm5lc3MuanMgdGVzdCIiIgorICAgICAgICBp
ZiBzZWxmLnJvb3QgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJl
dHVybiBib29sKHNlbGYudGVzdGRyaXZlcl9ub2RlcykKKwogICAgIEBjYWNoZWRfcHJvcGVydHkK
ICAgICBkZWYgcmVmdGVzdF9ub2RlcyhzZWxmKToKICAgICAgICAgIiIiTGlzdCBvZiBFbGVtZW50
VHJlZSBFbGVtZW50cyBjb3JyZXNwb25kaW5nIHRvIG5vZGVzIHJlcHJlc2VudGluZyBhCkBAIC01
MjMsOSArNTM1LDEwIEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKIAogICAgICAgICBlbGlm
IHNlbGYuY29udGVudF9pc190ZXN0aGFybmVzczoKICAgICAgICAgICAgIHJ2ID0gVGVzdGhhcm5l
c3NUZXN0Lml0ZW1fdHlwZSwgW10KKyAgICAgICAgICAgIHRlc3Rkcml2ZXIgPSBzZWxmLmhhc190
ZXN0ZHJpdmVyCiAgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiBzZWxmLnRlc3RfdmFyaWFudHM6
CiAgICAgICAgICAgICAgICAgdXJsID0gc2VsZi51cmwgKyB2YXJpYW50Ci0gICAgICAgICAgICAg
ICAgcnZbMV0uYXBwZW5kKFRlc3RoYXJuZXNzVGVzdChzZWxmLCB1cmwsIHRpbWVvdXQ9c2VsZi50
aW1lb3V0KSkKKyAgICAgICAgICAgICAgICBydlsxXS5hcHBlbmQoVGVzdGhhcm5lc3NUZXN0KHNl
bGYsIHVybCwgdGltZW91dD1zZWxmLnRpbWVvdXQsIHRlc3Rkcml2ZXI9dGVzdGRyaXZlcikpCiAK
ICAgICAgICAgZWxpZiBzZWxmLmNvbnRlbnRfaXNfcmVmX25vZGU6CiAgICAgICAgICAgICBydiA9
IChSZWZUZXN0Tm9kZS5pdGVtX3R5cGUsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9fX2luaXRfXy5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L19faW5pdF9fLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L3Rlc3RmaWxlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RmaWxlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmU2NzNkNzNmZGJl
M2UwODhjMDQwNGRlMzExODNlYjA5OTA3ZjY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdGZpbGVzLnB5
CkBAIC0wLDAgKzEsMzM2IEBACitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBpdGVydG9vbHMKK2lt
cG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2lt
cG9ydCBzeXMKKworZnJvbSAuLm1hbmlmZXN0IGltcG9ydCBtYW5pZmVzdCwgdXBkYXRlCisKK2hl
cmUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCit3cHRfcm9vdCA9IG9zLnBhdGguYWJzcGF0
aChvcy5wYXRoLmpvaW4oaGVyZSwgb3MucGFyZGlyLCBvcy5wYXJkaXIpKQorCitsb2dnZXIgPSBs
b2dnaW5nLmdldExvZ2dlcigpCisKKworZGVmIGdldF9naXRfY21kKHJlcG9fcGF0aCk6CisgICAg
IiIiQ3JlYXRlIGEgZnVuY3Rpb24gZm9yIGludm9raW5nIGdpdCBjb21tYW5kcyBhcyBhIHN1YnBy
b2Nlc3MuIiIiCisgICAgZGVmIGdpdChjbWQsICphcmdzKToKKyAgICAgICAgZnVsbF9jbWQgPSBb
ImdpdCIsIGNtZF0gKyBsaXN0KGl0ZW0uZGVjb2RlKCJ1dGY4IikgaWYgaXNpbnN0YW5jZShpdGVt
LCBieXRlcykgZWxzZSBpdGVtIGZvciBpdGVtIGluIGFyZ3MpCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIGxvZ2dlci5kZWJ1ZygiICIuam9pbihmdWxsX2NtZCkpCisgICAgICAgICAgICByZXR1
cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoZnVsbF9jbWQsIGN3ZD1yZXBvX3BhdGgsIHN0ZGVy
cj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGY4Iikuc3RyaXAoKQorICAgICAgICBleGNl
cHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGxvZ2dl
ci5lcnJvcigiR2l0IGNvbW1hbmQgZXhpdGVkIHdpdGggc3RhdHVzICVpIiAlIGUucmV0dXJuY29k
ZSkKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcihlLm91dHB1dCkKKyAgICAgICAgICAgIHN5cy5l
eGl0KDEpCisgICAgcmV0dXJuIGdpdAorCisKK2RlZiBkaXNwbGF5X2JyYW5jaF9wb2ludCgpOgor
ICAgIHByaW50KGJyYW5jaF9wb2ludCgpKQorCisKK2RlZiBicmFuY2hfcG9pbnQoKToKKyAgICBn
aXQgPSBnZXRfZ2l0X2NtZCh3cHRfcm9vdCkKKyAgICBpZiAob3MuZW52aXJvbi5nZXQoIlRSQVZJ
U19QVUxMX1JFUVVFU1QiLCAiZmFsc2UiKSA9PSAiZmFsc2UiIGFuZAorICAgICAgICBvcy5lbnZp
cm9uLmdldCgiVFJBVklTX0JSQU5DSCIpID09ICJtYXN0ZXIiKToKKyAgICAgICAgIyBGb3IgYnVp
bGRzIG9uIHRoZSBtYXN0ZXIgYnJhbmNoIGp1c3QgcmV0dXJuIHRoZSBIRUFEIGNvbW1pdAorICAg
ICAgICByZXR1cm4gZ2l0KCJyZXYtcGFyc2UiLCAiSEVBRCIpCisgICAgZWxpZiBvcy5lbnZpcm9u
LmdldCgiVFJBVklTX1BVTExfUkVRVUVTVCIsICJmYWxzZSIpICE9ICJmYWxzZSI6CisgICAgICAg
ICMgVGhpcyBpcyBhIFBSLCBzbyB0aGUgYmFzZSBicmFuY2ggaXMgaW4gVFJBVklTX0JSQU5DSAor
ICAgICAgICB0cmF2aXNfYnJhbmNoID0gb3MuZW52aXJvbi5nZXQoIlRSQVZJU19CUkFOQ0giKQor
ICAgICAgICBhc3NlcnQgdHJhdmlzX2JyYW5jaCwgIlRSQVZJU19CUkFOQ0ggZW52aXJvbm1lbnQg
dmFyaWFibGUgaXMgZGVmaW5lZCIKKyAgICAgICAgYnJhbmNoX3BvaW50ID0gZ2l0KCJyZXYtcGFy
c2UiLCB0cmF2aXNfYnJhbmNoKQorICAgIGVsc2U6CisgICAgICAgICMgT3RoZXJ3aXNlIHdlIGFy
ZW4ndCBvbiBhIFBSLCBzbyB3ZSB0cnkgdG8gZmluZCBjb21taXRzIHRoYXQgYXJlIG9ubHkgaW4g
dGhlCisgICAgICAgICMgY3VycmVudCBicmFuY2ggYy5mLgorICAgICAgICAjIGh0dHA6Ly9zdGFj
a292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTM0NjAxNTIvZmluZC1maXJzdC1hbmNlc3Rvci1jb21t
aXQtaW4tYW5vdGhlci1icmFuY2gKKyAgICAgICAgaGVhZCA9IGdpdCgicmV2LXBhcnNlIiwgIkhF
QUQiKQorICAgICAgICBub3RfaGVhZHMgPSBbaXRlbSBmb3IgaXRlbSBpbiBnaXQoInJldi1wYXJz
ZSIsICItLW5vdCIsICItLWFsbCIpLnNwbGl0KCJcbiIpCisgICAgICAgICAgICAgICAgICAgICBp
ZiBpdGVtLnN0cmlwKCkgYW5kIGhlYWQgbm90IGluIGl0ZW1dCisgICAgICAgIGNvbW1pdHMgPSBn
aXQoInJldi1saXN0IiwgIkhFQUQiLCAqbm90X2hlYWRzKS5zcGxpdCgiXG4iKQorICAgICAgICBi
cmFuY2hfcG9pbnQgPSBOb25lCisgICAgICAgIGlmIGxlbihjb21taXRzKToKKyAgICAgICAgICAg
IGZpcnN0X2NvbW1pdCA9IGNvbW1pdHNbLTFdCisgICAgICAgICAgICBpZiBmaXJzdF9jb21taXQ6
CisgICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50ID0gZ2l0KCJyZXYtcGFyc2UiLCBmaXJzdF9j
b21taXQgKyAiXiIpCisKKyAgICAgICAgIyBUaGUgYWJvdmUgaGV1cmlzdGljIHdpbGwgZmFpbCBp
biB0aGUgZm9sbG93aW5nIGNhc2VzOgorICAgICAgICAjCisgICAgICAgICMgLSBUaGUgY3VycmVu
dCBicmFuY2ggaGFzIGZhbGxlbiBiZWhpbmQgdGhlIHZlcnNpb24gcmV0cmlldmVkIHZpYSB0aGUg
YWJvdmUKKyAgICAgICAgIyAgIGBmZXRjaGAgaW52b2NhdGlvbgorICAgICAgICAjIC0gQ2hhbmdl
cyBvbiB0aGUgY3VycmVudCBicmFuY2ggd2VyZSByZWJhc2VkIGFuZCB0aGVyZWZvcmUgZG8gbm90
IGV4aXN0IG9uIGFueQorICAgICAgICAjICAgb3RoZXIgYnJhbmNoLiBUaGlzIHdpbGwgcmVzdWx0
IGluIHRoZSBzZWxlY3Rpb24gb2YgYSBjb21taXQgdGhhdCBpcyBlYXJsaWVyCisgICAgICAgICMg
ICBpbiB0aGUgaGlzdG9yeSB0aGFuIGRlc2lyZWQgKGFzIGRldGVybWluZWQgYnkgY2FsY3VsYXRp
bmcgdGhlIGxhdGVyIG9mIHRoZQorICAgICAgICAjICAgYnJhbmNoIHBvaW50IGFuZCB0aGUgbWVy
Z2UgYmFzZSkKKyAgICAgICAgIworICAgICAgICAjIEluIGVpdGhlciBjYXNlLCBmYWxsIGJhY2sg
dG8gdXNpbmcgdGhlIG1lcmdlIGJhc2UgYXMgdGhlIGJyYW5jaCBwb2ludC4KKyAgICAgICAgbWVy
Z2VfYmFzZSA9IGdpdCgibWVyZ2UtYmFzZSIsICJIRUFEIiwgIm9yaWdpbi9tYXN0ZXIiKQorICAg
ICAgICBpZiAoYnJhbmNoX3BvaW50IGlzIE5vbmUgb3IKKyAgICAgICAgICAgIChicmFuY2hfcG9p
bnQgIT0gbWVyZ2VfYmFzZSBhbmQKKyAgICAgICAgICAgICBub3QgZ2l0KCJsb2ciLCAiLS1vbmVs
aW5lIiwgIiVzLi4lcyIgJSAobWVyZ2VfYmFzZSwgYnJhbmNoX3BvaW50KSkuc3RyaXAoKSkpOgor
ICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJVc2luZyBtZXJnZS1iYXNlIGFzIHRoZSBicmFuY2gg
cG9pbnQiKQorICAgICAgICAgICAgYnJhbmNoX3BvaW50ID0gbWVyZ2VfYmFzZQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJVc2luZyBmaXJzdCBjb21taXQgb24gYW5v
dGhlciBicmFuY2ggYXMgdGhlIGJyYW5jaCBwb2ludCIpCisKKyAgICBsb2dnZXIuZGVidWcoIkJy
YW5jaCBwb2ludCBmcm9tIG1hc3RlcjogJXMiICUgYnJhbmNoX3BvaW50KQorICAgIHJldHVybiBi
cmFuY2hfcG9pbnQKKworCitkZWYgY29tcGlsZV9pZ25vcmVfcnVsZShydWxlKToKKyAgICBydWxl
ID0gcnVsZS5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpCisgICAgcGFydHMgPSBydWxlLnNwbGl0
KCIvIikKKyAgICByZV9wYXJ0cyA9IFtdCisgICAgZm9yIHBhcnQgaW4gcGFydHM6CisgICAgICAg
IGlmIHBhcnQuZW5kc3dpdGgoIioqIik6CisgICAgICAgICAgICByZV9wYXJ0cy5hcHBlbmQocmUu
ZXNjYXBlKHBhcnRbOi0yXSkgKyAiLioiKQorICAgICAgICBlbGlmIHBhcnQuZW5kc3dpdGgoIioi
KToKKyAgICAgICAgICAgIHJlX3BhcnRzLmFwcGVuZChyZS5lc2NhcGUocGFydFs6LTFdKSArICJb
Xi9dKiIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZV9wYXJ0cy5hcHBlbmQocmUuZXNj
YXBlKHBhcnQpKQorICAgIHJldHVybiByZS5jb21waWxlKCJeJXMkIiAlICIvIi5qb2luKHJlX3Bh
cnRzKSkKKworCitkZWYgcmVwb19maWxlc19jaGFuZ2VkKHJldmlzaCwgaW5jbHVkZV91bmNvbW1p
dHRlZD1GYWxzZSwgaW5jbHVkZV9uZXc9RmFsc2UpOgorICAgIGdpdCA9IGdldF9naXRfY21kKHdw
dF9yb290KQorICAgIGZpbGVzID0gZ2l0KCJkaWZmIiwgIi0tbmFtZS1vbmx5IiwgIi16IiwgcmV2
aXNoKS5zcGxpdCgiXDAiKQorICAgIGFzc2VydCBub3QgZmlsZXNbLTFdCisgICAgZmlsZXMgPSBz
ZXQoZmlsZXNbOi0xXSkKKworICAgIGlmIGluY2x1ZGVfdW5jb21taXR0ZWQ6CisgICAgICAgIGVu
dHJpZXMgPSBnaXQoInN0YXR1cyIsICIteiIpLnNwbGl0KCJcMCIpCisgICAgICAgIGFzc2VydCBu
b3QgZW50cmllc1stMV0KKyAgICAgICAgZW50cmllcyA9IGVudHJpZXNbOi0xXQorICAgICAgICBm
b3IgaXRlbSBpbiBlbnRyaWVzOgorICAgICAgICAgICAgc3RhdHVzLCBwYXRoID0gaXRlbS5zcGxp
dCgpCisgICAgICAgICAgICBpZiBzdGF0dXMgPT0gIj8/IiBhbmQgbm90IGluY2x1ZGVfbmV3Ogor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICAgICAgICAgICAgICBmaWxl
cy5hZGQocGF0aCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBm
b3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53YWxrKHBhdGgpOgorICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lczoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaWxlcy5hZGQob3MucGF0aC5qb2luKGRpcnBhdGgsIGZpbGVuYW1l
KSkKKworICAgIHJldHVybiBmaWxlcworCisKK2RlZiBleGNsdWRlX2lnbm9yZWQoZmlsZXMsIGln
bm9yZV9ydWxlcyk6CisgICAgaWYgaWdub3JlX3J1bGVzIGlzIE5vbmU6CisgICAgICAgIGlnbm9y
ZV9ydWxlcyA9IFtdCisgICAgaWdub3JlX3J1bGVzID0gW2NvbXBpbGVfaWdub3JlX3J1bGUoaXRl
bSkgZm9yIGl0ZW0gaW4gaWdub3JlX3J1bGVzXQorCisgICAgY2hhbmdlZCA9IFtdCisgICAgaWdu
b3JlZCA9IFtdCisgICAgZm9yIGl0ZW0gaW4gc29ydGVkKGZpbGVzKToKKyAgICAgICAgZnVsbHBh
dGggPSBvcy5wYXRoLmpvaW4od3B0X3Jvb3QsIGl0ZW0pCisgICAgICAgIHJ1bGVfcGF0aCA9IGl0
ZW0ucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKQorICAgICAgICBmb3IgcnVsZSBpbiBpZ25vcmVf
cnVsZXM6CisgICAgICAgICAgICBpZiBydWxlLm1hdGNoKHJ1bGVfcGF0aCk6CisgICAgICAgICAg
ICAgICAgaWdub3JlZC5hcHBlbmQoZnVsbHBhdGgpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGNoYW5nZWQuYXBwZW5kKGZ1bGxwYXRoKQorCisgICAg
cmV0dXJuIGNoYW5nZWQsIGlnbm9yZWQKKworCitkZWYgZmlsZXNfY2hhbmdlZChyZXZpc2gsIGln
bm9yZV9ydWxlcz1Ob25lLCBpbmNsdWRlX3VuY29tbWl0dGVkPUZhbHNlLCBpbmNsdWRlX25ldz1G
YWxzZSk6CisgICAgIiIiR2V0IGFuZCByZXR1cm4gZmlsZXMgY2hhbmdlZCBzaW5jZSBjdXJyZW50
IGJyYW5jaCBkaXZlcmdlZCBmcm9tIG1hc3RlciwKKyAgICBleGNsdWRpbmcgdGhvc2UgdGhhdCBh
cmUgbG9jYXRlZCB3aXRoaW4gYW55IHBhdGggbWF0Y2hlZCBieQorICAgIGBpZ25vcmVfcnVsZXNg
LiIiIgorICAgIGZpbGVzID0gcmVwb19maWxlc19jaGFuZ2VkKHJldmlzaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3VuY29tbWl0dGVkPWluY2x1ZGVfdW5jb21taXR0
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9uZXc9aW5jbHVkZV9u
ZXcpCisgICAgaWYgbm90IGZpbGVzOgorICAgICAgICByZXR1cm4gW10sIFtdCisKKyAgICByZXR1
cm4gZXhjbHVkZV9pZ25vcmVkKGZpbGVzLCBpZ25vcmVfcnVsZXMpCisKKworZGVmIF9pbl9yZXBv
X3Jvb3QoZnVsbF9wYXRoKToKKyAgICByZWxfcGF0aCA9IG9zLnBhdGgucmVscGF0aChmdWxsX3Bh
dGgsIHdwdF9yb290KQorICAgIHBhdGhfY29tcG9uZW50cyA9IHJlbF9wYXRoLnNwbGl0KG9zLnNl
cCkKKyAgICByZXR1cm4gbGVuKHBhdGhfY29tcG9uZW50cykgPCAyCisKKworZGVmIF9pbml0X21h
bmlmZXN0X2NhY2hlKCk6CisgICAgYyA9IHt9CisKKyAgICBkZWYgbG9hZChtYW5pZmVzdF9wYXRo
PU5vbmUpOgorICAgICAgICBpZiBtYW5pZmVzdF9wYXRoIGlzIE5vbmU6CisgICAgICAgICAgICBt
YW5pZmVzdF9wYXRoID0gb3MucGF0aC5qb2luKHdwdF9yb290LCAiTUFOSUZFU1QuanNvbiIpCisg
ICAgICAgIGlmIGMuZ2V0KG1hbmlmZXN0X3BhdGgpOgorICAgICAgICAgICAgcmV0dXJuIGNbbWFu
aWZlc3RfcGF0aF0KKyAgICAgICAgIyBjYWNoZSBhdCBtb3N0IG9uZSBwYXRoOm1hbmlmZXN0Cisg
ICAgICAgIGMuY2xlYXIoKQorICAgICAgICB3cHRfbWFuaWZlc3QgPSBtYW5pZmVzdC5sb2FkKHdw
dF9yb290LCBtYW5pZmVzdF9wYXRoKQorICAgICAgICBpZiB3cHRfbWFuaWZlc3QgaXMgTm9uZToK
KyAgICAgICAgICAgIHdwdF9tYW5pZmVzdCA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKKyAgICAgICAg
dXBkYXRlLnVwZGF0ZSh3cHRfcm9vdCwgd3B0X21hbmlmZXN0KQorICAgICAgICBjW21hbmlmZXN0
X3BhdGhdID0gd3B0X21hbmlmZXN0CisgICAgICAgIHJldHVybiBjW21hbmlmZXN0X3BhdGhdCisg
ICAgcmV0dXJuIGxvYWQKKworCitsb2FkX21hbmlmZXN0ID0gX2luaXRfbWFuaWZlc3RfY2FjaGUo
KQorCisKK2RlZiBhZmZlY3RlZF90ZXN0ZmlsZXMoZmlsZXNfY2hhbmdlZCwgc2tpcF90ZXN0cywg
bWFuaWZlc3RfcGF0aD1Ob25lKToKKyAgICAiIiJEZXRlcm1pbmUgYW5kIHJldHVybiBsaXN0IG9m
IHRlc3QgZmlsZXMgdGhhdCByZWZlcmVuY2UgY2hhbmdlZCBmaWxlcy4iIiIKKyAgICBhZmZlY3Rl
ZF90ZXN0ZmlsZXMgPSBzZXQoKQorICAgICMgRXhjbHVkZSBmaWxlcyB0aGF0IGFyZSBpbiB0aGUg
cmVwbyByb290LCBiZWNhdXNlCisgICAgIyB0aGV5IGFyZSBub3QgcGFydCBvZiBhbnkgdGVzdC4K
KyAgICBmaWxlc19jaGFuZ2VkID0gW2YgZm9yIGYgaW4gZmlsZXNfY2hhbmdlZCBpZiBub3QgX2lu
X3JlcG9fcm9vdChmKV0KKyAgICBub250ZXN0c19jaGFuZ2VkID0gc2V0KGZpbGVzX2NoYW5nZWQp
CisgICAgd3B0X21hbmlmZXN0ID0gbG9hZF9tYW5pZmVzdChtYW5pZmVzdF9wYXRoKQorCisgICAg
dGVzdF90eXBlcyA9IFsidGVzdGhhcm5lc3MiLCAicmVmdGVzdCIsICJ3ZHNwZWMiXQorICAgIHN1
cHBvcnRfZmlsZXMgPSB7b3MucGF0aC5qb2luKHdwdF9yb290LCBwYXRoKQorICAgICAgICAgICAg
ICAgICAgICAgZm9yIF8sIHBhdGgsIF8gaW4gd3B0X21hbmlmZXN0Lml0ZXJ0eXBlcygic3VwcG9y
dCIpfQorICAgIHdkc3BlY190ZXN0X2ZpbGVzID0ge29zLnBhdGguam9pbih3cHRfcm9vdCwgcGF0
aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgXywgcGF0aCwgXyBpbiB3cHRfbWFuaWZl
c3QuaXRlcnR5cGVzKCJ3ZHNwZWMiKX0KKyAgICB0ZXN0X2ZpbGVzID0ge29zLnBhdGguam9pbih3
cHRfcm9vdCwgcGF0aCkKKyAgICAgICAgICAgICAgICAgIGZvciBfLCBwYXRoLCBfIGluIHdwdF9t
YW5pZmVzdC5pdGVydHlwZXMoKnRlc3RfdHlwZXMpfQorCisgICAgbm9udGVzdHNfY2hhbmdlZCA9
IG5vbnRlc3RzX2NoYW5nZWQuaW50ZXJzZWN0aW9uKHN1cHBvcnRfZmlsZXMpCisKKyAgICB0ZXN0
c19jaGFuZ2VkID0gc2V0KGl0ZW0gZm9yIGl0ZW0gaW4gZmlsZXNfY2hhbmdlZCBpZiBpdGVtIGlu
IHRlc3RfZmlsZXMpCisKKyAgICBub250ZXN0X2NoYW5nZWRfcGF0aHMgPSBzZXQoKQorICAgIHJl
d3JpdGVzID0geyIvcmVzb3VyY2VzL3dlYmlkbDIvbGliL3dlYmlkbDIuanMiOiAiL3Jlc291cmNl
cy9XZWJJRExQYXJzZXIuanMifQorICAgIGZvciBmdWxsX3BhdGggaW4gbm9udGVzdHNfY2hhbmdl
ZDoKKyAgICAgICAgcmVsX3BhdGggPSBvcy5wYXRoLnJlbHBhdGgoZnVsbF9wYXRoLCB3cHRfcm9v
dCkKKyAgICAgICAgcGF0aF9jb21wb25lbnRzID0gcmVsX3BhdGguc3BsaXQob3Muc2VwKQorICAg
ICAgICB0b3BfbGV2ZWxfc3ViZGlyID0gcGF0aF9jb21wb25lbnRzWzBdCisgICAgICAgIGlmIHRv
cF9sZXZlbF9zdWJkaXIgaW4gc2tpcF90ZXN0czoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAg
ICAgIHJlcG9fcGF0aCA9ICIvIiArIG9zLnBhdGgucmVscGF0aChmdWxsX3BhdGgsIHdwdF9yb290
KS5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpCisgICAgICAgIGlmIHJlcG9fcGF0aCBpbiByZXdy
aXRlczoKKyAgICAgICAgICAgIHJlcG9fcGF0aCA9IHJld3JpdGVzW3JlcG9fcGF0aF0KKyAgICAg
ICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGguam9pbih3cHRfcm9vdCwgcmVwb19wYXRoWzE6XS5y
ZXBsYWNlKCIvIiwgb3MucGF0aC5zZXApKQorICAgICAgICBub250ZXN0X2NoYW5nZWRfcGF0aHMu
YWRkKChmdWxsX3BhdGgsIHJlcG9fcGF0aCkpCisKKyAgICBkZWYgYWZmZWN0ZWRfYnlfd2RzcGVj
KHRlc3QpOgorICAgICAgICBhZmZlY3RlZCA9IEZhbHNlCisgICAgICAgIGlmIHRlc3QgaW4gd2Rz
cGVjX3Rlc3RfZmlsZXM6CisgICAgICAgICAgICBmb3Igc3VwcG9ydF9mdWxsX3BhdGgsIF8gaW4g
bm9udGVzdF9jaGFuZ2VkX3BhdGhzOgorICAgICAgICAgICAgICAgICMgcGFyZW50IG9mIHN1cHBv
cnQgZmlsZSBvciBvZiAic3VwcG9ydCIgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgcGFyZW50
ID0gb3MucGF0aC5kaXJuYW1lKHN1cHBvcnRfZnVsbF9wYXRoKQorICAgICAgICAgICAgICAgIGlm
IG9zLnBhdGguYmFzZW5hbWUocGFyZW50KSA9PSAic3VwcG9ydCI6CisgICAgICAgICAgICAgICAg
ICAgIHBhcmVudCA9IG9zLnBhdGguZGlybmFtZShwYXJlbnQpCisgICAgICAgICAgICAgICAgcmVs
cGF0aCA9IG9zLnBhdGgucmVscGF0aCh0ZXN0LCBwYXJlbnQpCisgICAgICAgICAgICAgICAgaWYg
bm90IHJlbHBhdGguc3RhcnRzd2l0aChvcy5wYXJkaXIpOgorICAgICAgICAgICAgICAgICAgICAj
IHRlc3RmaWxlIGlzIGluIHN1YnRyZWUgb2Ygc3VwcG9ydCBmaWxlCisgICAgICAgICAgICAgICAg
ICAgIGFmZmVjdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBy
ZXR1cm4gYWZmZWN0ZWQKKworICAgIGZvciByb290LCBkaXJzLCBmbmFtZXMgaW4gb3Mud2Fsayh3
cHRfcm9vdCk6CisgICAgICAgICMgV2FsayB0b3BfbGV2ZWxfc3ViZGlyIGxvb2tpbmcgZm9yIHRl
c3QgZmlsZXMgY29udGFpbmluZyBlaXRoZXIgdGhlCisgICAgICAgICMgcmVsYXRpdmUgZmlsZXBh
dGggb3IgYWJzb2x1dGUgZmlsZXBhdGggdG8gdGhlIGNoYW5nZWQgZmlsZXMuCisgICAgICAgIGlm
IHJvb3QgPT0gd3B0X3Jvb3Q6CisgICAgICAgICAgICBmb3IgZGlyX25hbWUgaW4gc2tpcF90ZXN0
czoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZShkaXJfbmFtZSkKKyAgICAgICAgZm9yIGZu
YW1lIGluIGZuYW1lczoKKyAgICAgICAgICAgIHRlc3RfZnVsbF9wYXRoID0gb3MucGF0aC5qb2lu
KHJvb3QsIGZuYW1lKQorICAgICAgICAgICAgIyBTa2lwIGFueSBmaWxlIHRoYXQncyBub3QgYSB0
ZXN0IGZpbGUuCisgICAgICAgICAgICBpZiB0ZXN0X2Z1bGxfcGF0aCBub3QgaW4gdGVzdF9maWxl
czoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgYWZmZWN0ZWRfYnlf
d2RzcGVjKHRlc3RfZnVsbF9wYXRoKToKKyAgICAgICAgICAgICAgICBhZmZlY3RlZF90ZXN0Zmls
ZXMuYWRkKHRlc3RfZnVsbF9wYXRoKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgIHdpdGggb3Blbih0ZXN0X2Z1bGxfcGF0aCwgInJiIikgYXMgZmg6CisgICAgICAgICAg
ICAgICAgZmlsZV9jb250ZW50cyA9IGZoLnJlYWQoKQorICAgICAgICAgICAgICAgIGlmIGZpbGVf
Y29udGVudHMuc3RhcnRzd2l0aCgiXHhmZVx4ZmYiKToKKyAgICAgICAgICAgICAgICAgICAgZmls
ZV9jb250ZW50cyA9IGZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGYtMTZiZSIsICJyZXBsYWNlIikK
KyAgICAgICAgICAgICAgICBlbGlmIGZpbGVfY29udGVudHMuc3RhcnRzd2l0aCgiXHhmZlx4ZmUi
KToKKyAgICAgICAgICAgICAgICAgICAgZmlsZV9jb250ZW50cyA9IGZpbGVfY29udGVudHMuZGVj
b2RlKCJ1dGYtMTZsZSIsICJyZXBsYWNlIikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gZmlsZV9jb250ZW50cy5kZWNvZGUoInV0Zjgi
LCAicmVwbGFjZSIpCisgICAgICAgICAgICAgICAgZm9yIGZ1bGxfcGF0aCwgcmVwb19wYXRoIGlu
IG5vbnRlc3RfY2hhbmdlZF9wYXRoczoKKyAgICAgICAgICAgICAgICAgICAgcmVsX3BhdGggPSBv
cy5wYXRoLnJlbHBhdGgoZnVsbF9wYXRoLCByb290KS5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIp
CisgICAgICAgICAgICAgICAgICAgIGlmIHJlbF9wYXRoIGluIGZpbGVfY29udGVudHMgb3IgcmVw
b19wYXRoIGluIGZpbGVfY29udGVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICBhZmZlY3Rl
ZF90ZXN0ZmlsZXMuYWRkKHRlc3RfZnVsbF9wYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKKworICAgIHJldHVybiB0ZXN0c19jaGFuZ2VkLCBhZmZlY3RlZF90ZXN0ZmlsZXMK
KworCitkZWYgZ2V0X3BhcnNlcigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFy
c2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJyZXZpc2giLCBkZWZhdWx0PU5vbmUsIGhl
bHA9IkNvbW1pdHMgdG8gY29uc2lkZXIuIERlZmF1bHRzIHRvIHRoZSAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAiY29tbWl0cyBvbiB0aGUgY3VycmVudCBicmFuY2giLCBuYXJncz0iPyIpCisg
ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1pZ25vcmUtcnVsZXMiLCBuYXJncz0iKiIsIHR5cGU9
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1zZXQoWyJyZXNvdXJjZXMvdGVz
dGhhcm5lc3MqIl0pLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUnVsZXMgZm9yIHBh
dGhzIHRvIGV4Y2x1ZGUgZnJvbSBsaXN0cyBvZiBjaGFuZ2VzLiBSdWxlcyBhcmUgcGF0aHMgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgInJlbGF0aXZlIHRvIHRoZSB0ZXN0IHJvb3QsIHdpdGgg
KiBiZWZvcmUgYSBzZXBhcmF0b3Igb3IgdGhlIGVuZCBtYXRjaGluZyAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAiYW55dGhpbmcgb3RoZXIgdGhhbiBhIHBhdGggc2VwYXJhdG9yIGFuZCAqKiBp
biB0aGF0IHBvc2l0aW9uIG1hdGNoaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbnl0
aGluZyIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1tb2RpZmllZCIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJJbmNsdWRlIGZpbGVzIHVu
ZGVyIHZlcnNpb24gY29udHJvbCB0aGF0IGhhdmUgYmVlbiAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAibW9kaWZpZWQgb3Igc3RhZ2VkIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLW5l
dyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJJ
bmNsdWRlIGZpbGVzIGluIHRoZSB3b3JrdHJlZSB0aGF0IGFyZSBub3QgaW4gdmVyc2lvbiBjb250
cm9sIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXNob3ctdHlwZSIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQcmludCB0aGUgdGVzdCB0
eXBlIGFsb25nIHdpdGggZWFjaCBhZmZlY3RlZCB0ZXN0IikKKyAgICByZXR1cm4gcGFyc2VyCisK
KworZGVmIGdldF9wYXJzZXJfYWZmZWN0ZWQoKToKKyAgICBwYXJzZXIgPSBnZXRfcGFyc2VyKCkK
KyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLW1ldGFkYXRhIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9Im1ldGFkYXRhX3Jvb3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0
aW9uPSJzdG9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PXdwdF9yb290LAor
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRGlyZWN0b3J5IHRoYXQgd2lsbCBjb250YWlu
IE1BTklGRVNULmpzb24iKQorICAgIHJldHVybiBwYXJzZXIKKworCitkZWYgZ2V0X3JldmlzaCgq
Kmt3YXJncyk6CisgICAgcmV2aXNoID0ga3dhcmdzWyJyZXZpc2giXQorICAgIGlmIGt3YXJnc1si
cmV2aXNoIl0gaXMgTm9uZToKKyAgICAgICAgcmV2aXNoID0gIiVzLi5IRUFEIiAlIGJyYW5jaF9w
b2ludCgpCisgICAgcmV0dXJuIHJldmlzaAorCisKK2RlZiBydW5fY2hhbmdlZF9maWxlcygqKmt3
YXJncyk6CisgICAgcmV2aXNoID0gZ2V0X3JldmlzaCgqKmt3YXJncykKKyAgICBjaGFuZ2VkLCBf
ID0gZmlsZXNfY2hhbmdlZChyZXZpc2gsIGt3YXJnc1siaWdub3JlX3J1bGVzIl0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV91bmNvbW1pdHRlZD1rd2FyZ3NbIm1vZGlm
aWVkIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9uZXc9a3dhcmdz
WyJuZXciXSkKKyAgICBmb3IgaXRlbSBpbiBzb3J0ZWQoY2hhbmdlZCk6CisgICAgICAgIHByaW50
KG9zLnBhdGgucmVscGF0aChpdGVtLCB3cHRfcm9vdCkpCisKKworZGVmIHJ1bl90ZXN0c19hZmZl
Y3RlZCgqKmt3YXJncyk6CisgICAgcmV2aXNoID0gZ2V0X3JldmlzaCgqKmt3YXJncykKKyAgICBj
aGFuZ2VkLCBfID0gZmlsZXNfY2hhbmdlZChyZXZpc2gsIGt3YXJnc1siaWdub3JlX3J1bGVzIl0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV91bmNvbW1pdHRlZD1rd2Fy
Z3NbIm1vZGlmaWVkIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9u
ZXc9a3dhcmdzWyJuZXciXSkKKyAgICBtYW5pZmVzdF9wYXRoID0gb3MucGF0aC5qb2luKGt3YXJn
c1sibWV0YWRhdGFfcm9vdCJdLCAiTUFOSUZFU1QuanNvbiIpCisgICAgdGVzdHNfY2hhbmdlZCwg
ZGVwZW5kZW50cyA9IGFmZmVjdGVkX3Rlc3RmaWxlcygKKyAgICAgICAgY2hhbmdlZCwKKyAgICAg
ICAgc2V0KFsiY29uZm9ybWFuY2UtY2hlY2tlcnMiLCAiZG9jcyIsICJ0b29scyJdKSwKKyAgICAg
ICAgbWFuaWZlc3RfcGF0aD1tYW5pZmVzdF9wYXRoCisgICAgKQorCisgICAgbWVzc2FnZSA9ICJ7
cGF0aH0iCisgICAgaWYga3dhcmdzWyJzaG93X3R5cGUiXToKKyAgICAgICAgd3B0X21hbmlmZXN0
ID0gbG9hZF9tYW5pZmVzdChtYW5pZmVzdF9wYXRoKQorICAgICAgICBtZXNzYWdlID0gIntwYXRo
fVx0e2l0ZW1fdHlwZX0iCisgICAgZm9yIGl0ZW0gaW4gc29ydGVkKHRlc3RzX2NoYW5nZWQgfCBk
ZXBlbmRlbnRzKToKKyAgICAgICAgcmVzdWx0cyA9IHsKKyAgICAgICAgICAgICJwYXRoIjogb3Mu
cGF0aC5yZWxwYXRoKGl0ZW0sIHdwdF9yb290KQorICAgICAgICB9CisgICAgICAgIGlmIGt3YXJn
c1sic2hvd190eXBlIl06CisgICAgICAgICAgICBpdGVtX3R5cGVzID0ge2kuaXRlbV90eXBlIGZv
ciBpIGluIHdwdF9tYW5pZmVzdC5pdGVycGF0aChyZXN1bHRzWyJwYXRoIl0pfQorICAgICAgICAg
ICAgaWYgbGVuKGl0ZW1fdHlwZXMpICE9IDE6CisgICAgICAgICAgICAgICAgaXRlbV90eXBlcyA9
IFsiICIuam9pbihpdGVtX3R5cGVzKV0KKyAgICAgICAgICAgIHJlc3VsdHNbIml0ZW1fdHlwZSJd
ID0gaXRlbV90eXBlcy5wb3AoKQorICAgICAgICBwcmludChtZXNzYWdlLmZvcm1hdCgqKnJlc3Vs
dHMpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336290</attachid>
            <date>2018-03-22 11:14:39 -0700</date>
            <delta_ts>2018-03-22 11:35:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183796-20180322141438.patch</filename>
            <type>text/plain</type>
            <size>8025</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODAzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2U3ZTMzY2YxMmJiNjcxNTI1Y2Q5YjRmMjMxMmJjNjgx
OTE1MzI4Ny4uMDQ2ZmY0NjY0N2I2MTFiOGEzNjgxMzY2ZWNlMWJjYjlkYTVhNWVjZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDE4LTAzLTIyICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgTGludCB3ZWItcGxhdGZvcm0tdGVzdHMgY2hhbmdlcyB3aXRoIHRoZSB3cHQg
bGludGVyIGJlZm9yZSBleHBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mzc5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weToK
KyAgICAgICAgKFRlc3RFeHBvcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0RXhwb3J0ZXIu
ZG9fZXhwb3J0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVy
X3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKToK
KyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlci5fX2luaXRfXyk6CisgICAg
ICAgIChUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIubGludCk6CisgICAgICAgIChUZXN0
RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0KToKKyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QudGVz
dF9leHBvcnRfd2l0aF9zcGVjaWZpY19icmFuY2gpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdzNjL3dwdF9saW50LnB5OiBBZGRlZC4KKyAgICAgICAgKFdQVExpbnRlcik6CisgICAgICAg
IChXUFRMaW50ZXIuX19pbml0X18pOgorICAgICAgICAoV1BUTGludGVyLmxpbnQpOgorCiAyMDE4
LTAzLTIxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXVtXUEVdIEpTQyBiaW5kaW5ncyBub3QgaW50cm9zcGVjdGFibGUKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyLnB5CmluZGV4IDhiM2Q2NjZjMjgwY2Jk
NWRhZmZjMTUyMDNlMzcxNzViOGQxZmIxZWUuLjUwNzMxNWMwYTI5MGMyMjhjM2UwM2FjOWUwYmQy
MzIzOWI3Yjg3YjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3Rf
ZXhwb3J0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRl
ci5weQpAQCAtMzQsNiArMzQsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBI
b3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEJ1Z3ppbGxhCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKIGZy
b20gd2Via2l0cHkudzNjLndwdF9naXRodWIgaW1wb3J0IFdQVEdpdEh1YgorZnJvbSB3ZWJraXRw
eS53M2Mud3B0X2xpbnQgaW1wb3J0IFdQVExpbnRlcgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCiAKQEAgLTQ0LDcgKzQ1LDcgQEAgV0VCS0lUX0VYUE9SVF9QUl9MQUJFTCA9
ICd3ZWJraXQtZXhwb3J0JwogCiBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKIAotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBob3N0LCBvcHRpb25zLCBnaXRDbGFzcz1HaXQsIGJ1Z3ppbGxhQ2xh
c3M9QnVnemlsbGEsIFdQVEdpdEh1YkNsYXNzPVdQVEdpdEh1Yik6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGhvc3QsIG9wdGlvbnMsIGdpdENsYXNzPUdpdCwgYnVnemlsbGFDbGFzcz1CdWd6aWxs
YSwgV1BUR2l0SHViQ2xhc3M9V1BUR2l0SHViLCBXUFRMaW50ZXJDbGFzcz1XUFRMaW50ZXIpOgog
ICAgICAgICBzZWxmLl9ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gaG9z
dC5maWxlc3lzdGVtCiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCkBAIC02NCw2ICs2
NSw3IEBAIGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5yZXBvc2l0b3J5X2RpcmVjdG9yeSA9IHdlYmtpdF9maW5kZXIucGF0aF9mcm9tX3dlYmtp
dF9iYXNlKCdXZWJLaXRCdWlsZCcsICd3M2MtdGVzdHMnLCAnd2ViLXBsYXRmb3JtLXRlc3RzJykK
IAogICAgICAgICBzZWxmLl9naXQgPSBzZWxmLl9lbnN1cmVfd3B0X3JlcG9zaXRvcnkoImh0dHBz
Oi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCIsIHNlbGYuX29wdGlvbnMu
cmVwb3NpdG9yeV9kaXJlY3RvcnksIGdpdENsYXNzKQorICAgICAgICBzZWxmLl9saW50ZXIgPSBX
UFRMaW50ZXJDbGFzcyhzZWxmLl9vcHRpb25zLnJlcG9zaXRvcnlfZGlyZWN0b3J5KQogCiAgICAg
ICAgIHNlbGYuX3VzZXJuYW1lID0gb3B0aW9ucy51c2VybmFtZQogICAgICAgICBpZiBub3Qgc2Vs
Zi5fdXNlcm5hbWU6CkBAIC0yNDAsNiArMjQyLDEzIEBAIGNsYXNzIFRlc3RFeHBvcnRlcihvYmpl
Y3QpOgogICAgICAgICBpZiBnaXRfcGF0Y2hfZmlsZToKICAgICAgICAgICAgIHNlbGYuX2ZpbGVz
eXN0ZW0ucmVtb3ZlKGdpdF9wYXRjaF9maWxlKQogCisgICAgICAgIGxpbnRfZXJyb3JzID0gc2Vs
Zi5fbGludGVyLmxpbnQoKQorICAgICAgICBpZiBsaW50X2Vycm9yczoKKyAgICAgICAgICAgIF9s
b2cuZXJyb3IoIlRoZSB3cHQgbGludGVyIGRldGVjdGVkICVzIGxpbnRpbmcgZXJyb3IocykuIFBs
ZWFzZSBhZGRyZXNzIHRoZSBhYm92ZSBlcnJvcnMgYmVmb3JlIGF0dGVtcHRpbmcgdG8gZXhwb3J0
IGNoYW5nZXMgdG8gdGhlIHdlYi1wbGF0Zm9ybS10ZXN0IHJlcG9zaXRvcnkuIiAlIChsaW50X2Vy
cm9ycywpKQorICAgICAgICAgICAgc2VsZi5kZWxldGVfbG9jYWxfYnJhbmNoKCkKKyAgICAgICAg
ICAgIHNlbGYuY2xlYW4oKQorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgdHJ5OgogICAg
ICAgICAgICAgaWYgc2VsZi5wdXNoX3RvX3dwdF9mb3JrKCk6CiAgICAgICAgICAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5jcmVhdGVfcHVsbF9yZXF1ZXN0OgpAQCAtMjk1LDcgKzMwNCw3IEBAIGRl
ZiBjb25maWd1cmVfbG9nZ2luZygpOgogICAgICAgICAgICAgICAgIHJldHVybiAiJXM6ICVzIiAl
IChyZWNvcmQubGV2ZWxuYW1lLCByZWNvcmQuZ2V0TWVzc2FnZSgpKQogICAgICAgICAgICAgcmV0
dXJuIHJlY29yZC5nZXRNZXNzYWdlKCkKIAotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCkKKyAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2Via2l0cHkudzNjLnRlc3RfZXhw
b3J0ZXInKQogICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCiAgICAgaGFuZGxlciA9
IExvZ0hhbmRsZXIoKQogICAgIGhhbmRsZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkK
aW5kZXggM2M0M2ZmNjgyOWFhZTNiM2JiZDQxMzdiM2E4MzMwZmNjYjlkODFlOC4uNGI3OGRkMjg4
OTY4YTdmM2E4NDkxMTQ0NWUzNGFhZmU4YzExOGU3MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0LnB5CkBAIC0xMDUsMTAgKzEw
NSwxOCBAQCBjbGFzcyBUZXN0RXhwb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgZGVmIHNjbShzZWxmKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2NrU0NNCiAKKyAg
ICBjbGFzcyBNb2NrV1BUTGludGVyKG9iamVjdCk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm
LCByZXBvc2l0b3J5X2RpcmVjdG9yeSk6CisgICAgICAgICAgICBzZWxmLmNhbGxzID0gW3JlcG9z
aXRvcnlfZGlyZWN0b3J5XQorCisgICAgICAgIGRlZiBsaW50KHNlbGYpOgorICAgICAgICAgICAg
c2VsZi5jYWxscy5hcHBlbmQoJ2xpbnQnKQorICAgICAgICAgICAgcmV0dXJuIDAKKwogICAgIGRl
ZiB0ZXN0X2V4cG9ydChzZWxmKToKICAgICAgICAgaG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlN
b2NrSG9zdCgpCiAgICAgICAgIG9wdGlvbnMgPSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5w
eScsICctZycsICdIRUFEJywgJy1iJywgJzEyMzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcs
ICdUT0tFTiddKQotICAgICAgICBleHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25z
LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxh
LCBNb2NrV1BUR2l0SHViKQorICAgICAgICBleHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBv
cHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1
Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCiAg
ICAgICAgIGV4cG9ydGVyLmRvX2V4cG9ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4
cG9ydGVyLl9naXRodWIuY2FsbHMsIFsnY3JlYXRlX3ByJywgJ2FkZF9sYWJlbCAid2Via2l0LWV4
cG9ydCInXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdXZWJLaXQgZXhwb3J0JyBpbiBleHBv
cnRlci5fZ2l0aHViLnB1bGxfcmVxdWVzdHNfY3JlYXRlZFswXVsxXSkKQEAgLTEzMSwxMSArMTM5
LDEyIEBAIGNsYXNzIFRlc3RFeHBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhleHBvcnRlci5fYnVnemlsbGEuY2FsbHMsIFsKICAgICAgICAg
ICAgICdmZXRjaCBidWcgMTIzNCcsCiAgICAgICAgICAgICAncG9zdCBjb21tZW50IHRvIGJ1ZyAx
MjM0IDogU3VibWl0dGVkIHdlYi1wbGF0Zm9ybS10ZXN0cyBwdWxsIHJlcXVlc3Q6IGh0dHBzOi8v
Z2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3B1bGwvNTY3OCddKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhleHBvcnRlci5fbGludGVyLmNhbGxzLCBbJy9tb2NrLWNoZWNrb3V0
L1dlYktpdEJ1aWxkL3czYy10ZXN0cy93ZWItcGxhdGZvcm0tdGVzdHMnLCAnbGludCddKQogCiAg
ICAgZGVmIHRlc3RfZXhwb3J0X3dpdGhfc3BlY2lmaWNfYnJhbmNoKHNlbGYpOgogICAgICAgICBo
b3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKICAgICAgICAgb3B0aW9ucyA9IHBh
cnNlX2FyZ3MoWyd0ZXN0X2V4cG9ydGVyLnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcs
ICctYycsICctbicsICdVU0VSJywgJy10JywgJ1RPS0VOJywgJy1ibicsICd3cHQtZXhwb3J0LWJy
YW5jaCddKQotICAgICAgICBleHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25zLCBU
ZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxhLCBN
b2NrV1BUR2l0SHViKQorICAgICAgICBleHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRp
b25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3pp
bGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCiAgICAg
ICAgIGV4cG9ydGVyLmRvX2V4cG9ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cG9y
dGVyLl9naXQuY2FsbHMsIFsKICAgICAgICAgICAgICcvbW9jay1jaGVja291dC9XZWJLaXRCdWls
ZC93M2MtdGVzdHMvd2ViLXBsYXRmb3JtLXRlc3RzJywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3dwdF9saW50LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
d3B0X2xpbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk1NDQyYWI3ODQ2ZmEzZjJlODRkMzc2YTVjZWI0NDlk
OWY2ZDFkZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dw
dF9saW50LnB5CkBAIC0wLDAgKzEsMzcgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDE4LCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
IyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworIiIiCisgVGhpcyBzY3JpcHQgaXMgYSB3cmFwcGVyIGZvciB0aGUgd2ViLXBs
YXRmb3JtLXRlc3RzIGxpbnRlcgorIiIiCisKK2ltcG9ydCBzdWJwcm9jZXNzCisKKworY2xhc3Mg
V1BUTGludGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcG9zaXRvcnlfZGly
ZWN0b3J5KToKKyAgICAgICAgc2VsZi5yZXBvc2l0b3J5X2RpcmVjdG9yeSA9IHJlcG9zaXRvcnlf
ZGlyZWN0b3J5CisKKyAgICBkZWYgbGludChzZWxmKToKKyAgICAgICAgY21kID0gW3NlbGYucmVw
b3NpdG9yeV9kaXJlY3RvcnkgKyAnL3dwdCcsICdsaW50J10KKyAgICAgICAgcHJvYyA9IHN1YnBy
b2Nlc3MuUG9wZW4oY21kKQorICAgICAgICByZXR1cm4gcHJvYy53YWl0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336292</attachid>
            <date>2018-03-22 11:35:07 -0700</date>
            <delta_ts>2018-03-22 11:50:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183796-20180322143507.patch</filename>
            <type>text/plain</type>
            <size>8051</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODAzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2U3ZTMzY2YxMmJiNjcxNTI1Y2Q5YjRmMjMxMmJjNjgx
OTE1MzI4Ny4uZGJmMjE5OTBkZjFkZTU2MmRmZWE5ZWFlYzk5YWEwZTg2ZGMyZDBjMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDE4LTAzLTIyICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgTGludCB3ZWItcGxhdGZvcm0tdGVzdHMgY2hhbmdlcyB3aXRoIHRoZSB3cHQg
bGludGVyIGJlZm9yZSBleHBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mzc5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weToK
KyAgICAgICAgKFRlc3RFeHBvcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0RXhwb3J0ZXIu
ZG9fZXhwb3J0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVy
X3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKToK
KyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlci5fX2luaXRfXyk6CisgICAg
ICAgIChUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIubGludCk6CisgICAgICAgIChUZXN0
RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0KToKKyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QudGVz
dF9leHBvcnRfd2l0aF9zcGVjaWZpY19icmFuY2gpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdzNjL3dwdF9saW50ZXIucHk6IEFkZGVkLgorICAgICAgICAoV1BUTGludGVyKToKKyAgICAg
ICAgKFdQVExpbnRlci5fX2luaXRfXyk6CisgICAgICAgIChXUFRMaW50ZXIubGludCk6CisKIDIw
MTgtMDMtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW1dQRV0gSlNDIGJpbmRpbmdzIG5vdCBpbnRyb3NwZWN0YWJsZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkKaW5kZXggOGIzZDY2NmMyODBj
YmQ1ZGFmZmMxNTIwM2UzNzE3NWI4ZDFmYjFlZS4uNTA3MzE1YzBhMjkwYzIyOGMzZTAzYWM5ZTBi
ZDIzMjM5YjdiODdiNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVz
dF9leHBvcnRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9y
dGVyLnB5CkBAIC0zNCw2ICszNCw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0
IEhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEK
IGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgog
ZnJvbSB3ZWJraXRweS53M2Mud3B0X2dpdGh1YiBpbXBvcnQgV1BUR2l0SHViCitmcm9tIHdlYmtp
dHB5LnczYy53cHRfbGludCBpbXBvcnQgV1BUTGludGVyCiAKIF9sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKIApAQCAtNDQsNyArNDUsNyBAQCBXRUJLSVRfRVhQT1JUX1BSX0xBQkVM
ID0gJ3dlYmtpdC1leHBvcnQnCiAKIGNsYXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIG9wdGlvbnMsIGdpdENsYXNzPUdpdCwgYnVnemlsbGFD
bGFzcz1CdWd6aWxsYSwgV1BUR2l0SHViQ2xhc3M9V1BUR2l0SHViKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgaG9zdCwgb3B0aW9ucywgZ2l0Q2xhc3M9R2l0LCBidWd6aWxsYUNsYXNzPUJ1Z3pp
bGxhLCBXUFRHaXRIdWJDbGFzcz1XUFRHaXRIdWIsIFdQVExpbnRlckNsYXNzPVdQVExpbnRlcik6
CiAgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CiAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBo
b3N0LmZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKQEAgLTY0LDYg
KzY1LDcgQEAgY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLl9v
cHRpb25zLnJlcG9zaXRvcnlfZGlyZWN0b3J5ID0gd2Via2l0X2ZpbmRlci5wYXRoX2Zyb21fd2Vi
a2l0X2Jhc2UoJ1dlYktpdEJ1aWxkJywgJ3czYy10ZXN0cycsICd3ZWItcGxhdGZvcm0tdGVzdHMn
KQogCiAgICAgICAgIHNlbGYuX2dpdCA9IHNlbGYuX2Vuc3VyZV93cHRfcmVwb3NpdG9yeSgiaHR0
cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0Iiwgc2VsZi5fb3B0aW9u
cy5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgZ2l0Q2xhc3MpCisgICAgICAgIHNlbGYuX2xpbnRlciA9
IFdQVExpbnRlckNsYXNzKHNlbGYuX29wdGlvbnMucmVwb3NpdG9yeV9kaXJlY3RvcnkpCiAKICAg
ICAgICAgc2VsZi5fdXNlcm5hbWUgPSBvcHRpb25zLnVzZXJuYW1lCiAgICAgICAgIGlmIG5vdCBz
ZWxmLl91c2VybmFtZToKQEAgLTI0MCw2ICsyNDIsMTMgQEAgY2xhc3MgVGVzdEV4cG9ydGVyKG9i
amVjdCk6CiAgICAgICAgIGlmIGdpdF9wYXRjaF9maWxlOgogICAgICAgICAgICAgc2VsZi5fZmls
ZXN5c3RlbS5yZW1vdmUoZ2l0X3BhdGNoX2ZpbGUpCiAKKyAgICAgICAgbGludF9lcnJvcnMgPSBz
ZWxmLl9saW50ZXIubGludCgpCisgICAgICAgIGlmIGxpbnRfZXJyb3JzOgorICAgICAgICAgICAg
X2xvZy5lcnJvcigiVGhlIHdwdCBsaW50ZXIgZGV0ZWN0ZWQgJXMgbGludGluZyBlcnJvcihzKS4g
UGxlYXNlIGFkZHJlc3MgdGhlIGFib3ZlIGVycm9ycyBiZWZvcmUgYXR0ZW1wdGluZyB0byBleHBv
cnQgY2hhbmdlcyB0byB0aGUgd2ViLXBsYXRmb3JtLXRlc3QgcmVwb3NpdG9yeS4iICUgKGxpbnRf
ZXJyb3JzLCkpCisgICAgICAgICAgICBzZWxmLmRlbGV0ZV9sb2NhbF9icmFuY2goKQorICAgICAg
ICAgICAgc2VsZi5jbGVhbigpCisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICB0cnk6CiAg
ICAgICAgICAgICBpZiBzZWxmLnB1c2hfdG9fd3B0X2ZvcmsoKToKICAgICAgICAgICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLmNyZWF0ZV9wdWxsX3JlcXVlc3Q6CkBAIC0yOTUsNyArMzA0LDcgQEAg
ZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuICIlczogJXMi
ICUgKHJlY29yZC5sZXZlbG5hbWUsIHJlY29yZC5nZXRNZXNzYWdlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gcmVjb3JkLmdldE1lc3NhZ2UoKQogCi0gICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dn
ZXIoKQorICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3ZWJraXRweS53M2MudGVzdF9l
eHBvcnRlcicpCiAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKICAgICBoYW5kbGVy
ID0gTG9nSGFuZGxlcigpCiAgICAgaGFuZGxlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5w
eQppbmRleCAzYzQzZmY2ODI5YWFlM2IzYmJkNDEzN2IzYTgzMzBmY2NiOWQ4MWU4Li40Yjc4ZGQy
ODg5NjhhN2YzYTg0OTExNDQ1ZTM0YWFmZThjMTE4ZTczIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkKQEAgLTEwNSwxMCAr
MTA1LDE4IEBAIGNsYXNzIFRlc3RFeHBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICBkZWYgc2NtKHNlbGYpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21vY2tTQ00KIAor
ICAgIGNsYXNzIE1vY2tXUFRMaW50ZXIob2JqZWN0KToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHJlcG9zaXRvcnlfZGlyZWN0b3J5KToKKyAgICAgICAgICAgIHNlbGYuY2FsbHMgPSBbcmVw
b3NpdG9yeV9kaXJlY3RvcnldCisKKyAgICAgICAgZGVmIGxpbnQoc2VsZik6CisgICAgICAgICAg
ICBzZWxmLmNhbGxzLmFwcGVuZCgnbGludCcpCisgICAgICAgICAgICByZXR1cm4gMAorCiAgICAg
ZGVmIHRlc3RfZXhwb3J0KHNlbGYpOgogICAgICAgICBob3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5N
eU1vY2tIb3N0KCkKICAgICAgICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoWyd0ZXN0X2V4cG9ydGVy
LnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcsICctYycsICctbicsICdVU0VSJywgJy10
JywgJ1RPS0VOJ10pCi0gICAgICAgIGV4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlv
bnMsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrQnVnemls
bGEsIE1vY2tXUFRHaXRIdWIpCisgICAgICAgIGV4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3Qs
IG9wdGlvbnMsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2Nr
QnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikK
ICAgICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
ZXhwb3J0ZXIuX2dpdGh1Yi5jYWxscywgWydjcmVhdGVfcHInLCAnYWRkX2xhYmVsICJ3ZWJraXQt
ZXhwb3J0IiddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1dlYktpdCBleHBvcnQnIGluIGV4
cG9ydGVyLl9naXRodWIucHVsbF9yZXF1ZXN0c19jcmVhdGVkWzBdWzFdKQpAQCAtMTMxLDExICsx
MzksMTIgQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cG9ydGVyLl9idWd6aWxsYS5jYWxscywgWwogICAgICAg
ICAgICAgJ2ZldGNoIGJ1ZyAxMjM0JywKICAgICAgICAgICAgICdwb3N0IGNvbW1lbnQgdG8gYnVn
IDEyMzQgOiBTdWJtaXR0ZWQgd2ViLXBsYXRmb3JtLXRlc3RzIHB1bGwgcmVxdWVzdDogaHR0cHM6
Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcHVsbC81Njc4J10pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKGV4cG9ydGVyLl9saW50ZXIuY2FsbHMsIFsnL21vY2stY2hlY2tv
dXQvV2ViS2l0QnVpbGQvdzNjLXRlc3RzL3dlYi1wbGF0Zm9ybS10ZXN0cycsICdsaW50J10pCiAK
ICAgICBkZWYgdGVzdF9leHBvcnRfd2l0aF9zcGVjaWZpY19icmFuY2goc2VsZik6CiAgICAgICAg
IGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0Lk15TW9ja0hvc3QoKQogICAgICAgICBvcHRpb25zID0g
cGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0
JywgJy1jJywgJy1uJywgJ1VTRVInLCAnLXQnLCAnVE9LRU4nLCAnLWJuJywgJ3dwdC1leHBvcnQt
YnJhbmNoJ10pCi0gICAgICAgIGV4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9wdGlvbnMs
IFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrQnVnemlsbGEs
IE1vY2tXUFRHaXRIdWIpCisgICAgICAgIGV4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3QsIG9w
dGlvbnMsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrQnVn
emlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlcikKICAg
ICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhw
b3J0ZXIuX2dpdC5jYWxscywgWwogICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1
aWxkL3czYy10ZXN0cy93ZWItcGxhdGZvcm0tdGVzdHMnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2Mvd3B0X2xpbnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3dwdF9saW50ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJmMDVhZmMwZGIxMjNhNTkzNGM3NzkzYmQ1
ODUzZWVjYTI4NTQ2OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3dwdF9saW50ZXIucHkKQEAgLTAsMCArMSwzOSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTgs
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisiIiIKKyBUaGlzIHNjcmlwdCBpcyBhIHdyYXBwZXIgZm9yIHRo
ZSB3ZWItcGxhdGZvcm0tdGVzdHMgbGludGVyCisiIiIKKworaW1wb3J0IHN1YnByb2Nlc3MKKwor
CitjbGFzcyBXUFRMaW50ZXIob2JqZWN0KToKKyAgICBjYWxscyA9IFtdCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgcmVwb3NpdG9yeV9kaXJlY3RvcnkpOgorICAgICAgICBzZWxmLnJlcG9zaXRv
cnlfZGlyZWN0b3J5ID0gcmVwb3NpdG9yeV9kaXJlY3RvcnkKKworICAgIGRlZiBsaW50KHNlbGYp
OgorICAgICAgICBjbWQgPSBbc2VsZi5yZXBvc2l0b3J5X2RpcmVjdG9yeSArICcvd3B0JywgJ2xp
bnQnXQorICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQpCisgICAgICAgIHJldHVy
biBwcm9jLndhaXQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336294</attachid>
            <date>2018-03-22 11:50:06 -0700</date>
            <delta_ts>2018-03-23 11:57:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183796-20180322145005.patch</filename>
            <type>text/plain</type>
            <size>8053</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODAzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2U3ZTMzY2YxMmJiNjcxNTI1Y2Q5YjRmMjMxMmJjNjgx
OTE1MzI4Ny4uZGJmMjE5OTBkZjFkZTU2MmRmZWE5ZWFlYzk5YWEwZTg2ZGMyZDBjMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDE4LTAzLTIyICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgTGludCB3ZWItcGxhdGZvcm0tdGVzdHMgY2hhbmdlcyB3aXRoIHRoZSB3cHQg
bGludGVyIGJlZm9yZSBleHBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mzc5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weToK
KyAgICAgICAgKFRlc3RFeHBvcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0RXhwb3J0ZXIu
ZG9fZXhwb3J0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVy
X3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKToK
KyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlci5fX2luaXRfXyk6CisgICAg
ICAgIChUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIubGludCk6CisgICAgICAgIChUZXN0
RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0KToKKyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QudGVz
dF9leHBvcnRfd2l0aF9zcGVjaWZpY19icmFuY2gpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdzNjL3dwdF9saW50ZXIucHk6IEFkZGVkLgorICAgICAgICAoV1BUTGludGVyKToKKyAgICAg
ICAgKFdQVExpbnRlci5fX2luaXRfXyk6CisgICAgICAgIChXUFRMaW50ZXIubGludCk6CisKIDIw
MTgtMDMtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW1dQRV0gSlNDIGJpbmRpbmdzIG5vdCBpbnRyb3NwZWN0YWJsZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkKaW5kZXggOGIzZDY2NmMyODBj
YmQ1ZGFmZmMxNTIwM2UzNzE3NWI4ZDFmYjFlZS4uNmM2N2FjYTY5MzE1NThlZTA2NWYyNzU2ZDFk
MWVkYTBhODg4NTFlYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVz
dF9leHBvcnRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9y
dGVyLnB5CkBAIC0zNCw2ICszNCw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0
IEhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEK
IGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgog
ZnJvbSB3ZWJraXRweS53M2Mud3B0X2dpdGh1YiBpbXBvcnQgV1BUR2l0SHViCitmcm9tIHdlYmtp
dHB5LnczYy53cHRfbGludGVyIGltcG9ydCBXUFRMaW50ZXIKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fbmFtZV9fKQogCkBAIC00NCw3ICs0NSw3IEBAIFdFQktJVF9FWFBPUlRfUFJfTEFC
RUwgPSAnd2Via2l0LWV4cG9ydCcKIAogY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgb3B0aW9ucywgZ2l0Q2xhc3M9R2l0LCBidWd6aWxs
YUNsYXNzPUJ1Z3ppbGxhLCBXUFRHaXRIdWJDbGFzcz1XUFRHaXRIdWIpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBob3N0LCBvcHRpb25zLCBnaXRDbGFzcz1HaXQsIGJ1Z3ppbGxhQ2xhc3M9QnVn
emlsbGEsIFdQVEdpdEh1YkNsYXNzPVdQVEdpdEh1YiwgV1BUTGludGVyQ2xhc3M9V1BUTGludGVy
KToKICAgICAgICAgc2VsZi5faG9zdCA9IGhvc3QKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9
IGhvc3QuZmlsZXN5c3RlbQogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwpAQCAtNjQs
NiArNjUsNyBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMucmVwb3NpdG9yeV9kaXJlY3RvcnkgPSB3ZWJraXRfZmluZGVyLnBhdGhfZnJvbV93
ZWJraXRfYmFzZSgnV2ViS2l0QnVpbGQnLCAndzNjLXRlc3RzJywgJ3dlYi1wbGF0Zm9ybS10ZXN0
cycpCiAKICAgICAgICAgc2VsZi5fZ2l0ID0gc2VsZi5fZW5zdXJlX3dwdF9yZXBvc2l0b3J5KCJo
dHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQiLCBzZWxmLl9vcHRp
b25zLnJlcG9zaXRvcnlfZGlyZWN0b3J5LCBnaXRDbGFzcykKKyAgICAgICAgc2VsZi5fbGludGVy
ID0gV1BUTGludGVyQ2xhc3Moc2VsZi5fb3B0aW9ucy5yZXBvc2l0b3J5X2RpcmVjdG9yeSkKIAog
ICAgICAgICBzZWxmLl91c2VybmFtZSA9IG9wdGlvbnMudXNlcm5hbWUKICAgICAgICAgaWYgbm90
IHNlbGYuX3VzZXJuYW1lOgpAQCAtMjQwLDYgKzI0MiwxMyBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIo
b2JqZWN0KToKICAgICAgICAgaWYgZ2l0X3BhdGNoX2ZpbGU6CiAgICAgICAgICAgICBzZWxmLl9m
aWxlc3lzdGVtLnJlbW92ZShnaXRfcGF0Y2hfZmlsZSkKIAorICAgICAgICBsaW50X2Vycm9ycyA9
IHNlbGYuX2xpbnRlci5saW50KCkKKyAgICAgICAgaWYgbGludF9lcnJvcnM6CisgICAgICAgICAg
ICBfbG9nLmVycm9yKCJUaGUgd3B0IGxpbnRlciBkZXRlY3RlZCAlcyBsaW50aW5nIGVycm9yKHMp
LiBQbGVhc2UgYWRkcmVzcyB0aGUgYWJvdmUgZXJyb3JzIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGV4
cG9ydCBjaGFuZ2VzIHRvIHRoZSB3ZWItcGxhdGZvcm0tdGVzdCByZXBvc2l0b3J5LiIgJSAobGlu
dF9lcnJvcnMsKSkKKyAgICAgICAgICAgIHNlbGYuZGVsZXRlX2xvY2FsX2JyYW5jaCgpCisgICAg
ICAgICAgICBzZWxmLmNsZWFuKCkKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIHRyeToK
ICAgICAgICAgICAgIGlmIHNlbGYucHVzaF90b193cHRfZm9yaygpOgogICAgICAgICAgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMuY3JlYXRlX3B1bGxfcmVxdWVzdDoKQEAgLTI5NSw3ICszMDQsNyBA
QCBkZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKICAgICAgICAgICAgICAgICByZXR1cm4gIiVzOiAl
cyIgJSAocmVjb3JkLmxldmVsbmFtZSwgcmVjb3JkLmdldE1lc3NhZ2UoKSkKICAgICAgICAgICAg
IHJldHVybiByZWNvcmQuZ2V0TWVzc2FnZSgpCiAKLSAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExv
Z2dlcigpCisgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3dlYmtpdHB5LnczYy50ZXN0
X2V4cG9ydGVyJykKICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQogICAgIGhhbmRs
ZXIgPSBMb2dIYW5kbGVyKCkKICAgICBoYW5kbGVyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0ZXN0
LnB5CmluZGV4IDNjNDNmZjY4MjlhYWUzYjNiYmQ0MTM3YjNhODMzMGZjY2I5ZDgxZTguLjRiNzhk
ZDI4ODk2OGE3ZjNhODQ5MTE0NDVlMzRhYWZlOGMxMThlNzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVzdC5weQpAQCAtMTA1LDEw
ICsxMDUsMTggQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIGRlZiBzY20oc2VsZik6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fbW9ja1NDTQog
CisgICAgY2xhc3MgTW9ja1dQVExpbnRlcihvYmplY3QpOgorICAgICAgICBkZWYgX19pbml0X18o
c2VsZiwgcmVwb3NpdG9yeV9kaXJlY3RvcnkpOgorICAgICAgICAgICAgc2VsZi5jYWxscyA9IFty
ZXBvc2l0b3J5X2RpcmVjdG9yeV0KKworICAgICAgICBkZWYgbGludChzZWxmKToKKyAgICAgICAg
ICAgIHNlbGYuY2FsbHMuYXBwZW5kKCdsaW50JykKKyAgICAgICAgICAgIHJldHVybiAwCisKICAg
ICBkZWYgdGVzdF9leHBvcnQoc2VsZik6CiAgICAgICAgIGhvc3QgPSBUZXN0RXhwb3J0ZXJUZXN0
Lk15TW9ja0hvc3QoKQogICAgICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhbJ3Rlc3RfZXhwb3J0
ZXIucHknLCAnLWcnLCAnSEVBRCcsICctYicsICcxMjM0JywgJy1jJywgJy1uJywgJ1VTRVInLCAn
LXQnLCAnVE9LRU4nXSkKLSAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0
aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6
aWxsYSwgTW9ja1dQVEdpdEh1YikKKyAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9z
dCwgb3B0aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1v
Y2tCdWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVy
KQogICAgICAgICBleHBvcnRlci5kb19leHBvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhleHBvcnRlci5fZ2l0aHViLmNhbGxzLCBbJ2NyZWF0ZV9wcicsICdhZGRfbGFiZWwgIndlYmtp
dC1leHBvcnQiJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnV2ViS2l0IGV4cG9ydCcgaW4g
ZXhwb3J0ZXIuX2dpdGh1Yi5wdWxsX3JlcXVlc3RzX2NyZWF0ZWRbMF1bMV0pCkBAIC0xMzEsMTEg
KzEzOSwxMiBAQCBjbGFzcyBUZXN0RXhwb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwb3J0ZXIuX2J1Z3ppbGxhLmNhbGxzLCBbCiAgICAg
ICAgICAgICAnZmV0Y2ggYnVnIDEyMzQnLAogICAgICAgICAgICAgJ3Bvc3QgY29tbWVudCB0byBi
dWcgMTIzNCA6IFN1Ym1pdHRlZCB3ZWItcGxhdGZvcm0tdGVzdHMgcHVsbCByZXF1ZXN0OiBodHRw
czovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wdWxsLzU2NzgnXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwb3J0ZXIuX2xpbnRlci5jYWxscywgWycvbW9jay1jaGVj
a291dC9XZWJLaXRCdWlsZC93M2MtdGVzdHMvd2ViLXBsYXRmb3JtLXRlc3RzJywgJ2xpbnQnXSkK
IAogICAgIGRlZiB0ZXN0X2V4cG9ydF93aXRoX3NwZWNpZmljX2JyYW5jaChzZWxmKToKICAgICAg
ICAgaG9zdCA9IFRlc3RFeHBvcnRlclRlc3QuTXlNb2NrSG9zdCgpCiAgICAgICAgIG9wdGlvbnMg
PSBwYXJzZV9hcmdzKFsndGVzdF9leHBvcnRlci5weScsICctZycsICdIRUFEJywgJy1iJywgJzEy
MzQnLCAnLWMnLCAnLW4nLCAnVVNFUicsICctdCcsICdUT0tFTicsICctYm4nLCAnd3B0LWV4cG9y
dC1icmFuY2gnXSkKLSAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwgb3B0aW9u
cywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tCdWd6aWxs
YSwgTW9ja1dQVEdpdEh1YikKKyAgICAgICAgZXhwb3J0ZXIgPSBUZXN0RXhwb3J0ZXIoaG9zdCwg
b3B0aW9ucywgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrR2l0LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tC
dWd6aWxsYSwgTW9ja1dQVEdpdEh1YiwgVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKQog
ICAgICAgICBleHBvcnRlci5kb19leHBvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhl
eHBvcnRlci5fZ2l0LmNhbGxzLCBbCiAgICAgICAgICAgICAnL21vY2stY2hlY2tvdXQvV2ViS2l0
QnVpbGQvdzNjLXRlc3RzL3dlYi1wbGF0Zm9ybS10ZXN0cycsCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3czYy93cHRfbGludGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2Mvd3B0X2xpbnRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmYwNWFmYzBkYjEyM2E1OTM0Yzc3OTNi
ZDU4NTNlZWNhMjg1NDY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2Mvd3B0X2xpbnRlci5weQpAQCAtMCwwICsxLDM5IEBACisjIENvcHlyaWdodCAoYykgMjAx
OCwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIgorIFRoaXMgc2NyaXB0IGlzIGEgd3JhcHBlciBmb3Ig
dGhlIHdlYi1wbGF0Zm9ybS10ZXN0cyBsaW50ZXIKKyIiIgorCitpbXBvcnQgc3VicHJvY2Vzcwor
CisKK2NsYXNzIFdQVExpbnRlcihvYmplY3QpOgorICAgIGNhbGxzID0gW10KKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCByZXBvc2l0b3J5X2RpcmVjdG9yeSk6CisgICAgICAgIHNlbGYucmVwb3Np
dG9yeV9kaXJlY3RvcnkgPSByZXBvc2l0b3J5X2RpcmVjdG9yeQorCisgICAgZGVmIGxpbnQoc2Vs
Zik6CisgICAgICAgIGNtZCA9IFtzZWxmLnJlcG9zaXRvcnlfZGlyZWN0b3J5ICsgJy93cHQnLCAn
bGludCddCisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCkKKyAgICAgICAgcmV0
dXJuIHByb2Mud2FpdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336399</attachid>
            <date>2018-03-23 11:57:20 -0700</date>
            <delta_ts>2018-03-23 14:19:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183796-20180323145719.patch</filename>
            <type>text/plain</type>
            <size>8664</size>
            <attacher name="Brendan McLoughlin">brendan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODAzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2U3ZTMzY2YxMmJiNjcxNTI1Y2Q5YjRmMjMxMmJjNjgx
OTE1MzI4Ny4uMTk1ZTg3MWZiZjE5MWE5ZjIwZGRiMDlhZDEyY2NhNDkyNDIwZDhhMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDE4LTAzLTIzICBCcmVuZGFuIE1jTG91Z2hsaW4gIDxicmVuZGFuQGJvY291cC5jb20+
CisKKyAgICAgICAgTGludCB3ZWItcGxhdGZvcm0tdGVzdHMgY2hhbmdlcyB3aXRoIHRoZSB3cHQg
bGludGVyIGJlZm9yZSBleHBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mzc5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weToK
KyAgICAgICAgKFRlc3RFeHBvcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0RXhwb3J0ZXIu
ZG9fZXhwb3J0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVy
X3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdEV4cG9ydGVyVGVzdC5Nb2NrV1BUTGludGVyKToK
KyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExpbnRlci5fX2luaXRfXyk6CisgICAg
ICAgIChUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIubGludCk6CisgICAgICAgIChUZXN0
RXhwb3J0ZXJUZXN0LnRlc3RfZXhwb3J0KToKKyAgICAgICAgKFRlc3RFeHBvcnRlclRlc3QudGVz
dF9leHBvcnRfd2l0aF9zcGVjaWZpY19icmFuY2gpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdzNjL3dwdF9saW50ZXIucHk6IEFkZGVkLgorICAgICAgICAoV1BUTGludGVyKToKKyAgICAg
ICAgKFdQVExpbnRlci5fX2luaXRfXyk6CisgICAgICAgIChXUFRMaW50ZXIubGludCk6CisKIDIw
MTgtMDMtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW1dQRV0gSlNDIGJpbmRpbmdzIG5vdCBpbnRyb3NwZWN0YWJsZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlci5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZXhwb3J0ZXIucHkKaW5kZXggOGIzZDY2NmMyODBj
YmQ1ZGFmZmMxNTIwM2UzNzE3NWI4ZDFmYjFlZS4uNzMzNTY4MTAxZmE1NTlhMmYwNmVkZTc1MWQ4
OTI2NjViYzc0NWE4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVz
dF9leHBvcnRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9y
dGVyLnB5CkBAIC0zNCw2ICszNCw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0
IEhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEK
IGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgog
ZnJvbSB3ZWJraXRweS53M2Mud3B0X2dpdGh1YiBpbXBvcnQgV1BUR2l0SHViCitmcm9tIHdlYmtp
dHB5LnczYy53cHRfbGludGVyIGltcG9ydCBXUFRMaW50ZXIKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fbmFtZV9fKQogCkBAIC00NCw3ICs0NSw3IEBAIFdFQktJVF9FWFBPUlRfUFJfTEFC
RUwgPSAnd2Via2l0LWV4cG9ydCcKIAogY2xhc3MgVGVzdEV4cG9ydGVyKG9iamVjdCk6CiAKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgb3B0aW9ucywgZ2l0Q2xhc3M9R2l0LCBidWd6aWxs
YUNsYXNzPUJ1Z3ppbGxhLCBXUFRHaXRIdWJDbGFzcz1XUFRHaXRIdWIpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBob3N0LCBvcHRpb25zLCBnaXRDbGFzcz1HaXQsIGJ1Z3ppbGxhQ2xhc3M9QnVn
emlsbGEsIFdQVEdpdEh1YkNsYXNzPVdQVEdpdEh1YiwgV1BUTGludGVyQ2xhc3M9V1BUTGludGVy
KToKICAgICAgICAgc2VsZi5faG9zdCA9IGhvc3QKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9
IGhvc3QuZmlsZXN5c3RlbQogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwpAQCAtNjQs
NiArNjUsNyBAQCBjbGFzcyBUZXN0RXhwb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMucmVwb3NpdG9yeV9kaXJlY3RvcnkgPSB3ZWJraXRfZmluZGVyLnBhdGhfZnJvbV93
ZWJraXRfYmFzZSgnV2ViS2l0QnVpbGQnLCAndzNjLXRlc3RzJywgJ3dlYi1wbGF0Zm9ybS10ZXN0
cycpCiAKICAgICAgICAgc2VsZi5fZ2l0ID0gc2VsZi5fZW5zdXJlX3dwdF9yZXBvc2l0b3J5KCJo
dHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQiLCBzZWxmLl9vcHRp
b25zLnJlcG9zaXRvcnlfZGlyZWN0b3J5LCBnaXRDbGFzcykKKyAgICAgICAgc2VsZi5fbGludGVy
ID0gV1BUTGludGVyQ2xhc3Moc2VsZi5fb3B0aW9ucy5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgaG9z
dC5maWxlc3lzdGVtKQogCiAgICAgICAgIHNlbGYuX3VzZXJuYW1lID0gb3B0aW9ucy51c2VybmFt
ZQogICAgICAgICBpZiBub3Qgc2VsZi5fdXNlcm5hbWU6CkBAIC0yNDAsNiArMjQyLDEzIEBAIGNs
YXNzIFRlc3RFeHBvcnRlcihvYmplY3QpOgogICAgICAgICBpZiBnaXRfcGF0Y2hfZmlsZToKICAg
ICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ucmVtb3ZlKGdpdF9wYXRjaF9maWxlKQogCisgICAg
ICAgIGxpbnRfZXJyb3JzID0gc2VsZi5fbGludGVyLmxpbnQoKQorICAgICAgICBpZiBsaW50X2Vy
cm9yczoKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoIlRoZSB3cHQgbGludGVyIGRldGVjdGVkICVz
IGxpbnRpbmcgZXJyb3IocykuIFBsZWFzZSBhZGRyZXNzIHRoZSBhYm92ZSBlcnJvcnMgYmVmb3Jl
IGF0dGVtcHRpbmcgdG8gZXhwb3J0IGNoYW5nZXMgdG8gdGhlIHdlYi1wbGF0Zm9ybS10ZXN0IHJl
cG9zaXRvcnkuIiAlIChsaW50X2Vycm9ycywpKQorICAgICAgICAgICAgc2VsZi5kZWxldGVfbG9j
YWxfYnJhbmNoKCkKKyAgICAgICAgICAgIHNlbGYuY2xlYW4oKQorICAgICAgICAgICAgcmV0dXJu
CisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgc2VsZi5wdXNoX3RvX3dwdF9mb3JrKCk6
CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jcmVhdGVfcHVsbF9yZXF1ZXN0OgpA
QCAtMjk1LDcgKzMwNCw3IEBAIGRlZiBjb25maWd1cmVfbG9nZ2luZygpOgogICAgICAgICAgICAg
ICAgIHJldHVybiAiJXM6ICVzIiAlIChyZWNvcmQubGV2ZWxuYW1lLCByZWNvcmQuZ2V0TWVzc2Fn
ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHJlY29yZC5nZXRNZXNzYWdlKCkKIAotICAgIGxvZ2dl
ciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcign
d2Via2l0cHkudzNjLnRlc3RfZXhwb3J0ZXInKQogICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5n
LklORk8pCiAgICAgaGFuZGxlciA9IExvZ0hhbmRsZXIoKQogICAgIGhhbmRsZXIuc2V0TGV2ZWwo
bG9nZ2luZy5JTkZPKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVz
dF9leHBvcnRlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3Rf
ZXhwb3J0ZXJfdW5pdHRlc3QucHkKaW5kZXggM2M0M2ZmNjgyOWFhZTNiM2JiZDQxMzdiM2E4MzMw
ZmNjYjlkODFlOC4uYjNmODgzN2FiNzlmMDFhMjU2YjAwZmQ5NjZiMjI3MmZlNzBhYzY4MSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9leHBvcnRlcl91bml0dGVz
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2V4cG9ydGVyX3VuaXR0
ZXN0LnB5CkBAIC0yOCw2ICsyOCw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIKIGZyb20gd2Via2l0cHkudzNjLnRlc3Rf
ZXhwb3J0ZXIgaW1wb3J0IFRlc3RFeHBvcnRlciwgcGFyc2VfYXJncwogZnJvbSB3ZWJraXRweS53
M2Mud3B0X2dpdGh1Yl9tb2NrIGltcG9ydCBNb2NrV1BUR2l0SHViCiAKK21vY2tfbGludGVyID0g
Tm9uZQogCiBjbGFzcyBUZXN0RXhwb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBt
YXhEaWZmID0gTm9uZQpAQCAtMTA1LDEwICsxMDYsMjQgQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiBzY20oc2VsZik6CiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fbW9ja1NDTQogCisgICAgY2xhc3MgTW9ja1dQVExpbnRlcihvYmplY3Qp
OgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcmVwb3NpdG9yeV9kaXJlY3RvcnksIGZpbGVz
eXN0ZW0pOgorICAgICAgICAgICAgc2VsZi5jYWxscyA9IFtyZXBvc2l0b3J5X2RpcmVjdG9yeV0K
KyAgICAgICAgICAgICMgd29ya2Fyb3VuZCB0byBhcHBlYXNlIHRoZSBzdHlsZSBjaGVja2VyIHdo
aWNoIHRoaW5rcworICAgICAgICAgICAgIyBleHBvcnRlci5fbGludGVyIGlzIGFuIGluc3RhbmNl
IG9mIFdQVExpbnRlciBhbmQKKyAgICAgICAgICAgICMgY29tcGxhaW5zIGlmIHdlIHRyeSB0byBh
Y2Nlc3MgdGhlIGNhbGxzIHByb3BlcnR5IHdoaWNoCisgICAgICAgICAgICAjIG9ubHkgZXhpc3Rz
IG9uIE1vY2tXUFRMaW50ZXIKKyAgICAgICAgICAgIGdsb2JhbCBtb2NrX2xpbnRlcgorICAgICAg
ICAgICAgbW9ja19saW50ZXIgPSBzZWxmCisKKyAgICAgICAgZGVmIGxpbnQoc2VsZik6CisgICAg
ICAgICAgICBzZWxmLmNhbGxzLmFwcGVuZCgnbGludCcpCisgICAgICAgICAgICByZXR1cm4gMAor
CiAgICAgZGVmIHRlc3RfZXhwb3J0KHNlbGYpOgogICAgICAgICBob3N0ID0gVGVzdEV4cG9ydGVy
VGVzdC5NeU1vY2tIb3N0KCkKICAgICAgICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoWyd0ZXN0X2V4
cG9ydGVyLnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIzNCcsICctYycsICctbicsICdVU0VS
JywgJy10JywgJ1RPS0VOJ10pCi0gICAgICAgIGV4cG9ydGVyID0gVGVzdEV4cG9ydGVyKGhvc3Qs
IG9wdGlvbnMsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVzdC5Nb2Nr
QnVnemlsbGEsIE1vY2tXUFRHaXRIdWIpCisgICAgICAgIGV4cG9ydGVyID0gVGVzdEV4cG9ydGVy
KGhvc3QsIG9wdGlvbnMsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0dpdCwgVGVzdEV4cG9ydGVyVGVz
dC5Nb2NrQnVnemlsbGEsIE1vY2tXUFRHaXRIdWIsIFRlc3RFeHBvcnRlclRlc3QuTW9ja1dQVExp
bnRlcikKICAgICAgICAgZXhwb3J0ZXIuZG9fZXhwb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoZXhwb3J0ZXIuX2dpdGh1Yi5jYWxscywgWydjcmVhdGVfcHInLCAnYWRkX2xhYmVsICJ3
ZWJraXQtZXhwb3J0IiddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1dlYktpdCBleHBvcnQn
IGluIGV4cG9ydGVyLl9naXRodWIucHVsbF9yZXF1ZXN0c19jcmVhdGVkWzBdWzFdKQpAQCAtMTMx
LDExICsxNDYsMTIgQEAgY2xhc3MgVGVzdEV4cG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cG9ydGVyLl9idWd6aWxsYS5jYWxscywgWwog
ICAgICAgICAgICAgJ2ZldGNoIGJ1ZyAxMjM0JywKICAgICAgICAgICAgICdwb3N0IGNvbW1lbnQg
dG8gYnVnIDEyMzQgOiBTdWJtaXR0ZWQgd2ViLXBsYXRmb3JtLXRlc3RzIHB1bGwgcmVxdWVzdDog
aHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcHVsbC81Njc4J10pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1vY2tfbGludGVyLmNhbGxzLCBbJy9tb2NrLWNoZWNr
b3V0L1dlYktpdEJ1aWxkL3czYy10ZXN0cy93ZWItcGxhdGZvcm0tdGVzdHMnLCAnbGludCddKQog
CiAgICAgZGVmIHRlc3RfZXhwb3J0X3dpdGhfc3BlY2lmaWNfYnJhbmNoKHNlbGYpOgogICAgICAg
ICBob3N0ID0gVGVzdEV4cG9ydGVyVGVzdC5NeU1vY2tIb3N0KCkKICAgICAgICAgb3B0aW9ucyA9
IHBhcnNlX2FyZ3MoWyd0ZXN0X2V4cG9ydGVyLnB5JywgJy1nJywgJ0hFQUQnLCAnLWInLCAnMTIz
NCcsICctYycsICctbicsICdVU0VSJywgJy10JywgJ1RPS0VOJywgJy1ibicsICd3cHQtZXhwb3J0
LWJyYW5jaCddKQotICAgICAgICBleHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBvcHRpb25z
LCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1Z3ppbGxh
LCBNb2NrV1BUR2l0SHViKQorICAgICAgICBleHBvcnRlciA9IFRlc3RFeHBvcnRlcihob3N0LCBv
cHRpb25zLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tHaXQsIFRlc3RFeHBvcnRlclRlc3QuTW9ja0J1
Z3ppbGxhLCBNb2NrV1BUR2l0SHViLCBUZXN0RXhwb3J0ZXJUZXN0Lk1vY2tXUFRMaW50ZXIpCiAg
ICAgICAgIGV4cG9ydGVyLmRvX2V4cG9ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4
cG9ydGVyLl9naXQuY2FsbHMsIFsKICAgICAgICAgICAgICcvbW9jay1jaGVja291dC9XZWJLaXRC
dWlsZC93M2MtdGVzdHMvd2ViLXBsYXRmb3JtLXRlc3RzJywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3dwdF9saW50ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy93cHRfbGludGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMDdmNThiOTVhZjgyYmNiMzlkMGY2NWU3
OWM3MTA3OTAyNWExZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy93cHRfbGludGVyLnB5CkBAIC0wLDAgKzEsMzcgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDE4
LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIiIiCisgVGhpcyBzY3JpcHQgaXMgYSB3cmFwcGVyIGZvciB0
aGUgd2ViLXBsYXRmb3JtLXRlc3RzIGxpbnRlcgorIiIiCisKK2ltcG9ydCBzdWJwcm9jZXNzCisK
KworY2xhc3MgV1BUTGludGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcG9z
aXRvcnlfZGlyZWN0b3J5LCBmaWxlc3lzdGVtKToKKyAgICAgICAgc2VsZi53cHRfcGF0aCA9IGZp
bGVzeXN0ZW0uam9pbihyZXBvc2l0b3J5X2RpcmVjdG9yeSwgJ3dwdCcpCisKKyAgICBkZWYgbGlu
dChzZWxmKToKKyAgICAgICAgY21kID0gW3NlbGYud3B0X3BhdGgsICdsaW50J10KKyAgICAgICAg
cHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kKQorICAgICAgICByZXR1cm4gcHJvYy53YWl0KCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>