<?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>187916</bug_id>
          
          <creation_ts>2018-07-23 11:38:37 -0700</creation_ts>
          <short_desc>Add test-lldb-webkit</short_desc>
          <delta_ts>2019-12-16 07:33:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=187872</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=191033</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=205016</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=205271</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>189205</blocked>
    
    <blocked>189206</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>lforschler</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1444338</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-07-23 11:38:37 -0700</bug_when>
    <thetext>We should extract the logic to build and run the lldbwebkit tests from test-webkitpy to a new script, say test-lldbwebkit, to avoid mixing the lldbwebkit tests with the webkitpy tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445732</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-07-27 10:19:32 -0700</bug_when>
    <thetext>One of the reasons is that we’d need to run these tests for WebCore changes, while webkitpy tests only need to run for webkitpy changes.

Running tests as part of test-webkitpy also creates difficulties in settings where we dont’t have a WebKit build in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455805</commentid>
    <comment_count>2</comment_count>
      <attachid>348663</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-31 12:41:44 -0700</bug_when>
    <thetext>Created attachment 348663
Patch

I will teach the EWS and build.webkit.org build bots how to run test-lldb-webkit in a subsequent patch/bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455824</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-31 13:04:21 -0700</bug_when>
    <thetext>Filed bug #189205 and bug #189206 to teach the build bot and EWS how to run the LLDB WebKit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475396</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-05 20:05:18 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #2)
&gt; Created attachment 348663 [details]
&gt; Patch
&gt; 
&gt; I will teach the EWS and build.webkit.org build bots how to run
&gt; test-lldb-webkit in a subsequent patch/bug.

I don’t have time at the moment to do this. Maybe someone else can?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481722</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-26 15:23:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/46258959&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481724</commentid>
    <comment_count>6</comment_count>
      <attachid>355684</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-11-26 15:26:00 -0800</bug_when>
    <thetext>Created attachment 355684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481728</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-26 15:32:47 -0800</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #6)
&gt; Created attachment 355684 [details]
&gt; Patch

How is this different than my patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481730</commentid>
    <comment_count>8</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-11-26 15:38:57 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #7)
&gt; (In reply to Jonathan Bedard from comment #6)
&gt; &gt; Created attachment 355684 [details]
&gt; &gt; Patch
&gt; 
&gt; How is this different than my patch?

I missed that, sorry. I saw comment 4 but not the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481739</commentid>
    <comment_count>9</comment_count>
      <attachid>348663</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-11-26 16:00:46 -0800</bug_when>
    <thetext>Comment on attachment 348663
Patch

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

&gt; Tools/Scripts/webkitpy/lldb_webkit_tests/main.py:63
&gt; +    if os.path.isdir(lldb_python_directory):

Shouldn&apos;t we use the host object here to conform to webkitpy&apos;s idioms?

&gt; Tools/Scripts/webkitpy/lldb_webkit_tests/main.py:95
&gt; +

Can we add a --root option here? (matches with run-webkit-tests and run-api-tests)

&gt; Tools/Scripts/webkitpy/lldb_webkit_tests/main.py:135
&gt; +        self.printer.write_update(&quot;Checking autoinstalled packages ...&quot;)

We shouldn&apos;t need to do this for lldb tests

&gt; Tools/Scripts/webkitpy/test/loader.py:32
&gt; +class _Loader(unittest.TestLoader):

I feel like this should be class Loader(...) if we&apos;re allowing this to be imported, it shouldn&apos;t start with &apos;_&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596828</commentid>
    <comment_count>10</comment_count>
      <attachid>385151</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-09 08:19:14 -0800</bug_when>
    <thetext>Created attachment 385151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596829</commentid>
    <comment_count>11</comment_count>
      <attachid>385151</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-12-09 08:26:05 -0800</bug_when>
    <thetext>Comment on attachment 385151
Patch

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

I have a few wording nitpicks, someone else should probably review in earnest.

&gt; Tools/ChangeLog:8
&gt; +        * Scripts/test-lldb: Added.

This is not a good name for the script. It does not test lldb, it tests WebKit integration with it.

&gt; Tools/Scripts/test-lldb:55
&gt; +        parser.add_argument(&apos;--build&apos;, &apos;--no-build&apos;,

It’s not clear to me from the code what the default is. Is it clear from the printed help message? Also, should definitely say what would be built.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596860</commentid>
    <comment_count>12</comment_count>
      <attachid>385159</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-09 09:44:25 -0800</bug_when>
    <thetext>Created attachment 385159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596948</commentid>
    <comment_count>13</comment_count>
      <attachid>385159</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2019-12-09 14:07:54 -0800</bug_when>
    <thetext>Comment on attachment 385159
Patch

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

&gt; Tools/Scripts/test-lldb-webkit:49
&gt; +

Nice. I miss perl semantics.

&gt; Tools/Scripts/test-lldb-webkit:119
&gt; +        tester.parse_args()

Why are args only parsed in the fail case?

&gt; Tools/Scripts/test-lldb-webkit:120
&gt; +        print(&apos;lldb tests are only supported on macOS&apos;)

This error doesn&apos;t make sense to me. There are other reasons a python directory might be missing. And if you want to say macOS only shouldn&apos;t you do a macOS check?

&gt; Tools/Scripts/webkitpy/test/main.py:235
&gt; +                    style=&apos;release&apos;,

Forget to remove?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596949</commentid>
    <comment_count>14</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2019-12-09 14:09:10 -0800</bug_when>
    <thetext>Not really familiar with the tester object so might have missed something there but I had a few comments on code readability</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596955</commentid>
    <comment_count>15</comment_count>
      <attachid>385159</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-09 14:27:48 -0800</bug_when>
    <thetext>Comment on attachment 385159
Patch

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

&gt;&gt; Tools/Scripts/test-lldb-webkit:119
&gt;&gt; +        tester.parse_args()
&gt; 
&gt; Why are args only parsed in the fail case?

This allows the help message to still work if you aren&apos;t on Mac. We parse arguments inside the tester otherwise.

&gt;&gt; Tools/Scripts/test-lldb-webkit:120
&gt;&gt; +        print(&apos;lldb tests are only supported on macOS&apos;)
&gt; 
&gt; This error doesn&apos;t make sense to me. There are other reasons a python directory might be missing. And if you want to say macOS only shouldn&apos;t you do a macOS check?

If you checkout Tools/Scripts/webkitpy/common/system/systemhost.py, you can see what&apos;s actually going on here.

There are basically two reasons for this, one is that we aren&apos;t on Mac, the other is that we don&apos;t have Xcode installed.

Maybe change this to:

&apos;lldb tests are only supported on macOS with Xcode installed&apos;

&gt;&gt; Tools/Scripts/webkitpy/test/main.py:235
&gt;&gt; +                    style=&apos;release&apos;,
&gt; 
&gt; Forget to remove?

No, we always need a style when reporting results, even though style doesn&apos;t make much sense for webkitpy tests. I figured that &apos;release&apos; makes the most sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596959</commentid>
    <comment_count>16</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-09 14:36:58 -0800</bug_when>
    <thetext>(In reply to Stephanie Lewis from comment #14)
&gt; Not really familiar with the tester object so might have missed something
&gt; there but I had a few comments on code readability

It&apos;s an object designed for running Python unit tests...it&apos;s the same class that we&apos;re moving the code out of in Tools/Scripts/webkitpy/test/main.py.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597040</commentid>
    <comment_count>17</comment_count>
      <attachid>385216</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-09 17:22:58 -0800</bug_when>
    <thetext>Created attachment 385216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597162</commentid>
    <comment_count>18</comment_count>
      <attachid>385257</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-10 07:14:28 -0800</bug_when>
    <thetext>Created attachment 385257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597203</commentid>
    <comment_count>19</comment_count>
      <attachid>385257</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-12-10 09:03:32 -0800</bug_when>
    <thetext>Comment on attachment 385257
Patch

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

&gt; Tools/Scripts/test-lldb-webkit:57
&gt; +                            default=None, help=&apos;Enable or disable building lldb test runner before running the test (enabled by default)&apos;)

Just to double check, does this only build the test runner, not any WebKit project like test-webkitpy used to do?

&gt; Tools/Scripts/test-lldb-webkit:77
&gt; +        parser.add_argument(&apos;--configuration&apos;,
&gt; +                            dest=&apos;configuration&apos;, action=&apos;store&apos;,
&gt; +                            default=None, help=&apos;Store configuration to test.&apos;)

What does &quot;store&quot; mean in this context? I do not understand this, so I doubt that people looking at the help will.

&gt; Tools/Scripts/test-lldb-webkit:79
&gt; +                            default=None, help=&apos;Name of tests to be run.&apos;)

In the help string, s/Name/Names/.

Maybe some examples would help here, I always have trouble figuring out the naming scheme. Also, is this comma separated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597214</commentid>
    <comment_count>20</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-10 09:37:01 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #19)
&gt; Comment on attachment 385257 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=385257&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/test-lldb-webkit:57
&gt; &gt; +                            default=None, help=&apos;Enable or disable building lldb test runner before running the test (enabled by default)&apos;)
&gt; 
&gt; Just to double check, does this only build the test runner, not any WebKit
&gt; project like test-webkitpy used to do?

It runs build-lldbwebkittester, specifically. Which only builds the lldb test runner, along with anything that test runner needs (which is bmalloc and WTF, if I recall.

&gt; 
&gt; &gt; Tools/Scripts/test-lldb-webkit:77
&gt; &gt; +        parser.add_argument(&apos;--configuration&apos;,
&gt; &gt; +                            dest=&apos;configuration&apos;, action=&apos;store&apos;,
&gt; &gt; +                            default=None, help=&apos;Store configuration to test.&apos;)
&gt; 
&gt; What does &quot;store&quot; mean in this context? I do not understand this, so I doubt
&gt; that people looking at the help will.

I&apos;ll try and improve the help message here, but this is a pretty standard option in webkitpy scripts which build.

&gt; 
&gt; &gt; Tools/Scripts/test-lldb-webkit:79
&gt; &gt; +                            default=None, help=&apos;Name of tests to be run.&apos;)
&gt; 
&gt; In the help string, s/Name/Names/.
&gt; 
&gt; Maybe some examples would help here, I always have trouble figuring out the
&gt; naming scheme. Also, is this comma separated?

Examples might get out of date. It&apos;s not comma separated, it&apos;s basically the equivalent of &apos;args&apos; in the old opt parser scripts, it will be separated by spaces.

These are going to be something like: lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFCompactPointerTupleProvider_empty</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597215</commentid>
    <comment_count>21</comment_count>
      <attachid>385272</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-10 09:38:31 -0800</bug_when>
    <thetext>Created attachment 385272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597258</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-12-10 11:07:49 -0800</bug_when>
    <thetext>&gt; It runs build-lldbwebkittester, specifically. Which only builds the lldb
&gt; test runner, along with anything that test runner needs (which is bmalloc
&gt; and WTF, if I recall.

Please explain it in help. This is something that we were unsure about, no need to leave other people confused.

&gt; Examples might get out of date. It&apos;s not comma separated, it&apos;s basically the
&gt; equivalent of &apos;args&apos; in the old opt parser scripts, it will be separated by
&gt; spaces.

Please add it to the help. Even if test names change, which is super unlikely, the overall format won&apos;t.

&gt; lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFCompactPointerTupleProvider_empty

In particular, how is one to know that it begins with lldb_webkit_unittest? It could as well be implicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597267</commentid>
    <comment_count>23</comment_count>
      <attachid>385289</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-10 11:30:42 -0800</bug_when>
    <thetext>Created attachment 385289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597268</commentid>
    <comment_count>24</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-10 11:32:26 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #22)
&gt; &gt; It runs build-lldbwebkittester, specifically. Which only builds the lldb
&gt; &gt; test runner, along with anything that test runner needs (which is bmalloc
&gt; &gt; and WTF, if I recall.
&gt; 
&gt; Please explain it in help. This is something that we were unsure about, no
&gt; need to leave other people confused.

I can, but this is another case where it&apos;s pretty easy for the help message to get out of sync with what build-lldbwebkittester actually does.

&gt; 
&gt; &gt; Examples might get out of date. It&apos;s not comma separated, it&apos;s basically the
&gt; &gt; equivalent of &apos;args&apos; in the old opt parser scripts, it will be separated by
&gt; &gt; spaces.
&gt; 
&gt; Please add it to the help. Even if test names change, which is super
&gt; unlikely, the overall format won&apos;t.
&gt; 
&gt; &gt; lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFCompactPointerTupleProvider_empty
&gt; 
&gt; In particular, how is one to know that it begins with lldb_webkit_unittest?
&gt; It could as well be implicit.

It&apos;s based on the test file name. It&apos;s actually not the only one. Easiest way to get this list would be to pass -v so the test names are printed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597380</commentid>
    <comment_count>25</comment_count>
      <attachid>385311</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-12-10 15:16:15 -0800</bug_when>
    <thetext>Created attachment 385311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597607</commentid>
    <comment_count>26</comment_count>
      <attachid>385311</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-11 07:13:22 -0800</bug_when>
    <thetext>Comment on attachment 385311
Patch

Clearing flags on attachment: 385311

Committed r253371: &lt;https://trac.webkit.org/changeset/253371&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597608</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-11 07:13:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348663</attachid>
            <date>2018-08-31 12:41:44 -0700</date>
            <delta_ts>2019-12-09 08:19:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187916-20180831124143.patch</filename>
            <type>text/plain</type>
            <size>49294</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTU0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODBmODAwMjFhNjhlMTJlMjRmMTZhOWFmNTMyNzUzMTcw
OWZkNzY1NS4uMDFmM2IyMzM0NWE5OTM2Zjg1ZWU2NTU2YzgyMzY4YTQxMTFjMzQxZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
NSBAQAorMjAxOC0wOC0zMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIHRlc3QtbGxkYi13ZWJraXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NzkxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEV4dHJhY3Qgb3V0IGxvZ2ljIHRvIGJ1aWxkIGxsZGJXZWJLaXRU
ZXN0ZXIgYW5kIHJ1biBMTERCIHRlc3RzIGZyb20gdGVzdC13ZWJraXRweSBpbnRvIGl0cworICAg
ICAgICBvd24gdGVzdCBydW5uZXIuIFRoaXMgd2lsbCBoZWxwIG1ha2UgaXQgc3RyYWlnaHRmb3J3
YXJkIHRvIGFkZCBtb3JlIHRlc3RzIGZvciBMTERCIHByZXR0eS0KKyAgICAgICAgcHJpbnRlcnMs
IGluY2x1ZGluZyBwcmV0dHktcHJpbnRlcnMgZm9yIFdlYkNvcmUgdHlwZXMsIHdpdGhvdXQgcmVx
dWlyaW5nIHdlYmtpdHB5IGRldmVsb3BlcnMKKyAgICAgICAgdG8gYnVpbGQgbGxkYldlYktpdFRl
c3RlciBhbmQgaXRzIGRlcGVuZGVuY2llcy4KKworICAgICAgICBUaGUgdGVzdC1sbGRiLXdlYmtp
dCBzY3JpcHQgdXNlcyB0aGUgc2FtZSBvdXRwdXQgZm9ybWF0IGFzIHRlc3Qtd2Via2l0cHkuIEFz
IGEgZmlyc3QgaXRlcmF0aW9uCisgICAgICAgIGl0IGFsc28gc2hhcmVzIHRoZSBzYW1lIG11bHRp
cHJvY2VzcyB0ZXN0IHJ1bm5lciBtYWNoaW5lcnkgd2l0aCB0ZXN0LXdlYmtpdHB5LiBVbmxpa2Ug
dGVzdC13ZWJraXRweQorICAgICAgICBhbGwgdGVzdHMgcnVuIGluIGEgdGhlIHNhbWUgcHJvY2Vz
cyAoc2VyaWFsKSBhbmQgdGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgaGF2aW5nIGJvdGggcGFyYWxs
ZWwKKyAgICAgICAgYW5kIHNlcmlhbCB0ZXN0cyBiZWNhdXNlIExMREIgdGVzdHMgY2FuIG9ubHkg
YmUgcnVuIHNlcmlhbGx5LiBBIHNpZGUgZWZmZWN0IG9mIHRoaXMgZGVzaWduCisgICAgICAgIGNo
YW5nZSBpcyB0aGF0IGl0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gZGVtYXJjYXRlIHRlc3Rz
IHRoYXQgbXVzdCBiZSBydW4gc2VyaWFsbHkgZnJvbQorICAgICAgICB0ZXN0cyBjYW4gYmUgcnVu
IGluIHBhcmFsbGVsIGJ5IHByZWZpeGluZyB0ZXN0IG1ldGhvZCBuYW1lcyB3aXRoICJzZXJpYWxf
dGVzdF8iIGFuZCAidGVzdF8iLAorICAgICAgICByZXNwZWN0aXZlbHkuIEFsbCB0ZXN0IG1ldGhv
ZHMgdGhhdCBhcmUgcHJlZml4ZWQgd2l0aCAidGVzdF8iIHdpbGwgYmUgcnVuIHNlcmlhbGx5Lgor
CisgICAgICAgICogU2NyaXB0cy9idWlsZC1sbGRid2Via2l0dGVzdGVyOiBXZSBvbmx5IHN1cHBv
cnQgYnVpbGRpbmcgbGxkYldlYktpdFRlc3RlciBvbiBNYWMgZm9yIG5vdy4KKyAgICAgICAgRXJy
b3Igb3V0IGlmIHRoaXMgc2NyaXB0IGlzIGludm9rZWQgZm9yIGEgbm9uLU1hYyBwbGF0Zm9ybS4K
KyAgICAgICAgKiBTY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQ6IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGxkYl93ZWJraXRfdGVzdHMvX19pbml0X18ucHk6IEFkZGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGxkYl93ZWJraXRfdGVzdHMvbWFpbi5weTogQWRkZWQu
CisgICAgICAgIChtYWluKToKKyAgICAgICAgKFRlc3Rlcik6CisgICAgICAgIChUZXN0ZXIuX19p
bml0X18pOgorICAgICAgICAoVGVzdGVyLmFkZF90cmVlKToKKyAgICAgICAgKFRlc3Rlci5za2lw
KToKKyAgICAgICAgKFRlc3Rlci5fcGFyc2VfYXJncyk6CisgICAgICAgIChUZXN0ZXIucnVuKToK
KyAgICAgICAgKFRlc3Rlci5fcnVuX3Rlc3RzKToKKyAgICAgICAgKFRlc3Rlci5fY2hlY2tfaW1w
b3J0cyk6CisgICAgICAgIChUZXN0ZXIuX3Rlc3RfbmFtZXMpOgorICAgICAgICAoVGVzdGVyLl9h
bGxfdGVzdF9uYW1lcyk6CisgICAgICAgIChUZXN0ZXIuX2xvZ19leGNlcHRpb24pOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9sb2FkZXIucHk6IEFkZGVkOyBleHRyYWN0ZWQgZnJv
bSB0ZXN0L21haW4ucHkuCisgICAgICAgIChfTG9hZGVyKToKKyAgICAgICAgKF9Mb2FkZXIuZ2V0
VGVzdENhc2VOYW1lcyk6CisgICAgICAgIChfTG9hZGVyLmdldFRlc3RDYXNlTmFtZXMuaXNUZXN0
TWV0aG9kKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weToKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAoVGVzdGVyLl9wYXJzZV9hcmdzKToKKyAgICAgICAgKFRlc3Rl
ci5ydW4pOgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOgorICAgICAgICAoVGVzdGVyLl9s
b2dfZXhjZXB0aW9uKToKKyAgICAgICAgKF9idWlsZF9sbGRiX3dlYmtpdF90ZXN0ZXIpOiBEZWxl
dGVkLgorICAgICAgICAoX3ByaW50X3Jlc3VsdHNfYXNfanNvbik6IERlbGV0ZWQuIE1vdmVkIHRv
IHByaW50ZXIucHkgYW5kIHJlbmFtZWQgdG8gd3JpdGVfcmVzdWx0c19hc19qc29uKCkuCisgICAg
ICAgIChfcHJpbnRfcmVzdWx0c19hc19qc29uLnJlc3VsdF9kaWN0X2Zyb21fdHVwbGUpOiBEZWxl
dGVkLgorICAgICAgICAoX0xvYWRlcik6IERlbGV0ZWQ7IG1vdmVkIHRvIGxvYWRlci5weS4KKyAg
ICAgICAgKF9Mb2FkZXIuZ2V0VGVzdENhc2VOYW1lcyk6IERlbGV0ZWQuCisgICAgICAgIChfTG9h
ZGVyLmdldFRlc3RDYXNlTmFtZXMuaXNUZXN0TWV0aG9kKTogRGVsZXRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rlc3QvcHJpbnRlci5weToKKyAgICAgICAgKHdyaXRlX3Jlc3VsdHNf
YXNfanNvbik6IE1vdmVkIGZyb20gdGVzdC9tYWluLnB5IGFuZCBmb3JtZXJseSBuYW1lZCBfcHJp
bnRfcmVzdWx0c19hc19qc29uKCkuCisgICAgICAgICh3cml0ZV9yZXN1bHRzX2FzX2pzb24ubWFr
ZV9kaWN0X2Zyb21fdHVwbGUpOgorICAgICAgICAqIGxsZGIvZHVtcF9jbGFzc19sYXlvdXRfdW5p
dHRlc3QucHk6CisgICAgICAgIChUZXN0RHVtcENsYXNzTGF5b3V0LnNob3VsZFNraXApOgorICAg
ICAgICAoVGVzdER1bXBDbGFzc0xheW91dC5zZXRVcENsYXNzKToKKyAgICAgICAgKFRlc3REdW1w
Q2xhc3NMYXlvdXQudGVzdF9CYXNpY0NsYXNzTGF5b3V0KToKKyAgICAgICAgKHRlc3RfUGFkZGlu
Z0JldHdlZW5DbGFzc01lbWJlcnMpOgorICAgICAgICAodGVzdF9Cb29sUGFkZGluZ0NsYXNzKToK
KyAgICAgICAgKHRlc3RfQ2xhc3NXaXRoRW1wdHlDbGFzc01lbWJlcnMpOgorICAgICAgICAodGVz
dF9TaW1wbGVWaXJ0dWFsQ2xhc3MpOgorICAgICAgICAodGVzdF9WaXJ0dWFsQ2xhc3NXaXRoTm9u
VmlydHVhbEJhc2UpOgorICAgICAgICAodGVzdF9JbnRlcmxlYXZlZFZpcnR1YWxOb25WaXJ0dWFs
KToKKyAgICAgICAgKHRlc3RfQ2xhc3NXaXRoVHdvVmlydHVhbEJhc2VDbGFzc2VzKToKKyAgICAg
ICAgKHRlc3RfQ2xhc3NXaXRoVmlydHVhbEluaGVyaXRhbmNlKToKKyAgICAgICAgKHRlc3RfQ2xh
c3NXaXRoSW5oZXJpdGFuY2VBbmRDbGFzc01lbWJlcik6CisgICAgICAgICh0ZXN0X0Rlcml2ZWRD
bGFzc1dpdGhJbmRpcmVjdFZpcnR1YWxJbmhlcml0YW5jZSk6CisgICAgICAgICh0ZXN0X0NsYXNz
V2l0aENsYXNzTWVtYmVycyk6CisgICAgICAgICh0ZXN0X0NsYXNzV2l0aEJpdGZpZWxkcyk6Cisg
ICAgICAgICh0ZXN0X0NsYXNzV2l0aFBhZGRlZEJpdGZpZWxkcyk6CisgICAgICAgICh0ZXN0X01l
bWJlckhhc0JpdGZpZWxkUGFkZGluZyk6CisgICAgICAgICh0ZXN0X0luaGVyaXRzRnJvbUNsYXNz
V2l0aFBhZGRlZEJpdGZpZWxkcyk6CisgICAgICAgIChUZXN0RHVtcENsYXNzTGF5b3V0LnNlcmlh
bF90ZXN0X0Jhc2ljQ2xhc3NMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAoc2VyaWFsX3Rlc3Rf
UGFkZGluZ0JldHdlZW5DbGFzc01lbWJlcnMpOiBEZWxldGVkLgorICAgICAgICAoc2VyaWFsX3Rl
c3RfQm9vbFBhZGRpbmdDbGFzcyk6IERlbGV0ZWQuCisgICAgICAgIChzZXJpYWxfdGVzdF9DbGFz
c1dpdGhFbXB0eUNsYXNzTWVtYmVycyk6IERlbGV0ZWQuCisgICAgICAgIChzZXJpYWxfdGVzdF9T
aW1wbGVWaXJ0dWFsQ2xhc3MpOiBEZWxldGVkLgorICAgICAgICAoc2VyaWFsX3Rlc3RfVmlydHVh
bENsYXNzV2l0aE5vblZpcnR1YWxCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKHNlcmlhbF90ZXN0
X0ludGVybGVhdmVkVmlydHVhbE5vblZpcnR1YWwpOiBEZWxldGVkLgorICAgICAgICAoc2VyaWFs
X3Rlc3RfQ2xhc3NXaXRoVHdvVmlydHVhbEJhc2VDbGFzc2VzKTogRGVsZXRlZC4KKyAgICAgICAg
KHNlcmlhbF90ZXN0X0NsYXNzV2l0aFZpcnR1YWxJbmhlcml0YW5jZSk6IERlbGV0ZWQuCisgICAg
ICAgIChzZXJpYWxfdGVzdF9DbGFzc1dpdGhJbmhlcml0YW5jZUFuZENsYXNzTWVtYmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKHNlcmlhbF90ZXN0X0Rlcml2ZWRDbGFzc1dpdGhJbmRpcmVjdFZpcnR1
YWxJbmhlcml0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChzZXJpYWxfdGVzdF9DbGFzc1dpdGhD
bGFzc01lbWJlcnMpOiBEZWxldGVkLgorICAgICAgICAoc2VyaWFsX3Rlc3RfQ2xhc3NXaXRoQml0
ZmllbGRzKTogRGVsZXRlZC4KKyAgICAgICAgKHNlcmlhbF90ZXN0X0NsYXNzV2l0aFBhZGRlZEJp
dGZpZWxkcyk6IERlbGV0ZWQuCisgICAgICAgIChzZXJpYWxfdGVzdF9NZW1iZXJIYXNCaXRmaWVs
ZFBhZGRpbmcpOiBEZWxldGVkLgorICAgICAgICAoc2VyaWFsX3Rlc3RfSW5oZXJpdHNGcm9tQ2xh
c3NXaXRoUGFkZGVkQml0ZmllbGRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGRiL2xsZGJfd2Vi
a2l0X3VuaXR0ZXN0LnB5OgorICAgICAgICAoTExEQkRlYnVnU2Vzc2lvbi5zZXR1cCk6CisgICAg
ICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVy
cy5zaG91bGRTa2lwKTogQWRkZWQuCisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy50ZXN0
X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5nKToKKyAgICAgICAgKFRl
c3RTdW1tYXJ5UHJvdmlkZXJzLnRlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfZW1w
dHlfc3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnRlc3RfV1RGU3RyaW5n
SW1wbF9TdW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1bW1hcnlQ
cm92aWRlcnMudGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcp
OgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMudGVzdF9XVEZTdHJpbmdfU3VtbWFyeVBy
b3ZpZGVyX251bGxfc3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnRlc3Rf
V1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1
bW1hcnlQcm92aWRlcnMudGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5n
KToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnRlc3RfV1RGU3RyaW5nX1N1bW1hcnlQ
cm92aWRlcl8xNmJpdF9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMudGVz
dF9XVEZWZWN0b3JQcm92aWRlcl9lbXB0eV92ZWN0b3IpOgorICAgICAgICAoVGVzdFN1bW1hcnlQ
cm92aWRlcnMudGVzdF9XVEZWZWN0b3JQcm92aWRlcl92ZWN0b3Jfc2l6ZV9hbmRfY2FwYWNpdHkp
OgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMudGVzdF9XVEZIYXNoTWFwX3RhYmxlc2l6
ZV9hbmRfc2l6ZSk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy50ZXN0X1dURkhhc2hN
YXBfb2ZfdmVjdG9yc190YWJsZXNpemVfYW5kX3NpemUpOgorICAgICAgICAoVGVzdFN1bW1hcnlQ
cm92aWRlcnMudGVzdF9XVEZIYXNoU2V0X3RhYmxlc2l6ZV9hbmRfc2l6ZSk6CisgICAgICAgIChU
ZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92
aWRlcl9udWxsX3N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVy
cy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcp
OiBEZWxldGVkLgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RG
U3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5
UHJvdmlkZXJfMTZiaXRfc3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJv
dmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfbnVsbF9zdHJpbmcp
OiBEZWxldGVkLgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RG
U3RyaW5nX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAo
VGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRl
cl84Yml0X3N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5z
ZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzE2Yml0X3N0cmluZyk6IERlbGV0
ZWQuCisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZWZWN0b3JQ
cm92aWRlcl9lbXB0eV92ZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92
aWRlcnMuc2VyaWFsX3Rlc3RfV1RGVmVjdG9yUHJvdmlkZXJfdmVjdG9yX3NpemVfYW5kX2NhcGFj
aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0
X1dURkhhc2hNYXBfdGFibGVzaXplX2FuZF9zaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RT
dW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURkhhc2hNYXBfb2ZfdmVjdG9yc190YWJsZXNp
emVfYW5kX3NpemUpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2Vy
aWFsX3Rlc3RfV1RGSGFzaFNldF90YWJsZXNpemVfYW5kX3NpemUpOiBEZWxldGVkLgorCiAyMDE4
LTA4LTMxICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBsbGRi
LXdlYmtpdDogS2V5RXJyb3IgdGhyb3duIGZvciBPcHRpb25TZXQgd2l0aCBpbnZhbGlkIHZhbHVl
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2J1aWxkLWxsZGJ3ZWJraXR0ZXN0ZXIgYi9Ub29s
cy9TY3JpcHRzL2J1aWxkLWxsZGJ3ZWJraXR0ZXN0ZXIKaW5kZXggNzlkOWM2YTZlYzk1MDBlYjAy
MGUyNjI3MDdkMmEzMTVhNThkMTY1ZS4uYmY1NmYzNDYxM2VhYjg1YTk1YTIzMzFlMTY3NzY1YTA1
MGU0NThjNiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC1sbGRid2Via2l0dGVzdGVy
CisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtbGxkYndlYmtpdHRlc3RlcgpAQCAtNjAsNiArNjAs
MTEgQEAgY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZygpOwogc2V0Q29uZmlndXJhdGlvbigpOwog
Y2hkaXJXZWJLaXQoKTsKIAoraWYgKCFpc0FwcGxlTWFjV2ViS2l0KCkpIHsKKyAgICBwcmludCBT
VERFUlIgImxsZGJXZWJLaXRUZXN0ZXIgaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIG9uIE1h
Yy5cbiI7CisgICAgZXhpdCAxOworfQorCiBteSBAeGNvZGVPcHRpb25zID0gWGNvZGVPcHRpb25z
KCk7CiAKIGJ1aWxkUHJvamVjdE9yRGllKCJTb3VyY2UvYm1hbGxvYyIsICJibWFsbG9jIik7CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQgYi9Ub29scy9TY3JpcHRz
L3Rlc3QtbGxkYi13ZWJraXQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk3YTA2ZWNkYjA5NGViZTM0OWY3NTA2MmIw
NWYzNDQzY2MyZGFjOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvdGVzdC1sbGRi
LXdlYmtpdApAQCAtMCwwICsxLDI2IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRweS5jb21tb24gaW1w
b3J0IG11bHRpcHJvY2Vzc2luZ19ib290c3RyYXAKKworbXVsdGlwcm9jZXNzaW5nX2Jvb3RzdHJh
cC5ydW4oJ3dlYmtpdHB5JywgJ2xsZGJfd2Via2l0X3Rlc3RzJywgJ21haW4ucHknKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sbGRiX3dlYmtpdF90ZXN0cy9fX2luaXRfXy5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGxkYl93ZWJraXRfdGVzdHMvX19pbml0X18ucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWY2NWJlZTViYjc3ZTk2ZWJjN2NkOWM0NzY0MDY5MGZiZGE4YWMxOQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGxkYl93ZWJraXRfdGVzdHMv
X19pbml0X18ucHkKQEAgLTAsMCArMSBAQAorIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJj
aCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xsZGJfd2Via2l0X3Rlc3RzL21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xsZGJfd2Via2l0X3Rlc3RzL21haW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE5OWNjNmM2MmMx
NDA1ZjczNTc0YTBmOGUwMDU2ZGJjYTg4M2JiNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGxkYl93ZWJraXRfdGVzdHMvbWFpbi5weQpAQCAtMCwwICsxLDIxOCBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAx
MCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCisjIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiInVuaXQgdGVzdGluZyBjb2RlIGZvciBsbGRiLXdl
YmtpdC4iIiIKKworaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG11bHRp
cHJvY2Vzc2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9y
dCB0aW1lCitpbXBvcnQgdHJhY2ViYWNrCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmxvZ3V0aWxzIGltcG9ydCBjb25maWd1cmVfbG9nZ2luZworZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRF
cnJvcgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVT
eXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0
ZW1Ib3N0Citmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gd2Vi
a2l0cHkudGVzdC5maW5kZXIgaW1wb3J0IEZpbmRlcgorZnJvbSB3ZWJraXRweS50ZXN0LmxvYWRl
ciBpbXBvcnQgX0xvYWRlcgorZnJvbSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1wb3J0IFByaW50
ZXIsIHdyaXRlX3Jlc3VsdHNfYXNfanNvbgorZnJvbSB3ZWJraXRweS50ZXN0LnJ1bm5lciBpbXBv
cnQgUnVubmVyLCB1bml0X3Rlc3RfbmFtZQorCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCisKK19ob3N0ID0gU3lzdGVtSG9zdCgpCitfd2Via2l0X3Jvb3QgPSBOb25lCisKKwor
ZGVmIG1haW4oKToKKyAgICBnbG9iYWwgX3dlYmtpdF9yb290CisgICAgY29uZmlndXJlX2xvZ2dp
bmcobG9nZ2VyPV9sb2cpCisKKyAgICB1cCA9IG9zLnBhdGguZGlybmFtZQorICAgIF93ZWJraXRf
cm9vdCA9IHVwKHVwKHVwKHVwKHVwKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKSkpKQorCisg
ICAgdGVzdGVyID0gVGVzdGVyKCkKKworICAgIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSA9IF9ob3N0
LnBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KCkKKyAgICBpZiBvcy5wYXRoLmlzZGlyKGxs
ZGJfcHl0aG9uX2RpcmVjdG9yeSk6CisgICAgICAgIGlmIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSBu
b3QgaW4gc3lzLnBhdGg6CisgICAgICAgICAgICBzeXMucGF0aC5hcHBlbmQobGxkYl9weXRob25f
ZGlyZWN0b3J5KQorICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRf
cm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKyAgICBlbHNlOgorICAgICAgICBfbG9nLmVycm9yKCJD
b3VsZCBub3QgZmluZCBwYXRoIHRvIGxsZGIucHkgJ3t9Jy4iLmZvcm1hdChsbGRiX3B5dGhvbl9k
aXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIHJldHVybiBub3QgdGVzdGVy
LnJ1bigpCisKKworY2xhc3MgVGVzdGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZpbGVzeXN0ZW09Tm9uZSk6CisgICAgICAgIHNlbGYuZmluZGVyID0gRmluZGVyKGZpbGVzeXN0
ZW0gb3IgRmlsZVN5c3RlbSgpKQorICAgICAgICBzZWxmLnByaW50ZXIgPSBQcmludGVyKHN5cy5z
dGRlcnIpCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBOb25lCisKKyAgICBkZWYgYWRkX3RyZWUo
c2VsZiwgdG9wX2RpcmVjdG9yeSwgc3RhcnRpbmdfc3ViZGlyZWN0b3J5PU5vbmUpOgorICAgICAg
ICBzZWxmLmZpbmRlci5hZGRfdHJlZSh0b3BfZGlyZWN0b3J5LCBzdGFydGluZ19zdWJkaXJlY3Rv
cnkpCisKKyAgICBkZWYgc2tpcChzZWxmLCBuYW1lcywgcmVhc29uLCBidWdpZCk6CisgICAgICAg
IHNlbGYuZmluZGVyLnNraXAobmFtZXMsIHJlYXNvbiwgYnVnaWQpCisKKyAgICBkZWYgX3BhcnNl
X2FyZ3Moc2VsZiwgYXJndj1Ob25lKToKKyAgICAgICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9u
UGFyc2VyKHVzYWdlPSd1c2FnZTogJXByb2cgW29wdGlvbnNdIFthcmdzLi4uXScpCisKKyAgICAg
ICAgY29uZmlndXJhdGlvbl9ncm91cCA9IG9wdHBhcnNlLk9wdGlvbkdyb3VwKHBhcnNlciwgJ0Nv
bmZpZ3VyYXRpb24gb3B0aW9ucycpCisgICAgICAgIGNvbmZpZ3VyYXRpb25fZ3JvdXAuYWRkX29w
dGlvbignLS1kZWJ1ZycsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nRGVidWcnLCBkZXN0
PSdjb25maWd1cmF0aW9uJywKKyAgICAgICAgICAgIGhlbHA9J1NldCB0aGUgY29uZmlndXJhdGlv
biB0byBEZWJ1ZycpCisgICAgICAgIGNvbmZpZ3VyYXRpb25fZ3JvdXAuYWRkX29wdGlvbignLS1y
ZWxlYXNlJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdSZWxlYXNlJywgZGVzdD0nY29u
ZmlndXJhdGlvbicsCisgICAgICAgICAgICBoZWxwPSdTZXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8g
UmVsZWFzZScpCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uX2dyb3VwKGNvbmZpZ3VyYXRpb25f
Z3JvdXApCisKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYnVpbGQnLCBhY3Rpb249J3N0
b3JlX3RydWUnLCBkZXN0PSdzaG91bGRfYnVpbGQnLCBkZWZhdWx0PVRydWUsCisgICAgICAgICAg
ICBoZWxwPSdDaGVjayB0byBlbnN1cmUgdGhlIGxsZGJXZWJLaXRUZXN0ZXIgYnVpbGQgaXMgdXAt
dG8tZGF0ZSAoZGVmYXVsdCkuJyksCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLW5vLWJ1
aWxkJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlc3Q9J3Nob3VsZF9idWlsZCcsCisgICAgICAg
ICAgICBoZWxwPSJEb24ndCBjaGVjayB0byBzZWUgaWYgdGhlIGxsZGJXZWJLaXRUZXN0ZXIgYnVp
bGQgaXMgdXAtdG8tZGF0ZS4iKSwKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0t
cGFzcy10aHJvdWdoJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0nYmUgZGVidWdnZXIgZnJpZW5kbHkgYnkgcGFzc2lu
ZyBjYXB0dXJlZCBvdXRwdXQgdGhyb3VnaCB0byB0aGUgc3lzdGVtJykKKyAgICAgICAgcGFyc2Vy
LmFkZF9vcHRpb24oJy1xJywgJy0tcXVpZXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0
PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gcXVpZXRseSAoZXJy
b3JzLCB3YXJuaW5ncywgYW5kIHByb2dyZXNzIG9ubHkpJykKKyAgICAgICAgcGFyc2VyLmFkZF9v
cHRpb24oJy10JywgJy0tdGltaW5nJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxz
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzcGxheSBwZXItdGVzdCBleGVj
dXRpb24gdGltZSAoaW1wbGllcyAtLXZlcmJvc2UpJykKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRp
b24oJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nY291bnQnLCBkZWZhdWx0PTAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9J3ZlcmJvc2Ugb3V0cHV0IChzcGVjaWZ5IG9uY2UgZm9y
IGluZGl2aWR1YWwgdGVzdCByZXN1bHRzLCB0d2ljZSBmb3IgZGVidWcgbWVzc2FnZXMpJykKKyAg
ICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tanNvbi1vdXRwdXQnLCBhY3Rpb249J3N0b3JlJywg
dHlwZT0nc3RyaW5nJywgZGVzdD0nanNvbl9maWxlX25hbWUnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSdDcmVhdGUgYSBmaWxlIGF0IHNwZWNpZmllZCBwYXRoLCBsaXN0aW5nIHRl
c3QgcmVzdWx0cyBpbiBKU09OIGZvcm1hdC4nKQorCisgICAgICAgIHBhcnNlci5lcGlsb2cgPSAo
J1thcmdzLi4uXSBpcyBhbiBvcHRpb25hbCBsaXN0IG9mIG1vZHVsZXMsIHRlc3RfY2xhc3Nlcywg
b3IgaW5kaXZpZHVhbCB0ZXN0cy4gJworICAgICAgICAgICAgICAgICAgICAgICAgICdJZiBubyBh
cmdzIGFyZSBnaXZlbiwgYWxsIHRoZSB0ZXN0cyB3aWxsIGJlIHJ1bi4nKQorCisgICAgICAgIHJl
dHVybiBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAg
ICAgc2VsZi5fb3B0aW9ucywgYXJncyA9IHNlbGYuX3BhcnNlX2FyZ3MoKQorICAgICAgICBzZWxm
LnByaW50ZXIuY29uZmlndXJlKHNlbGYuX29wdGlvbnMpCisKKyAgICAgICAgc2VsZi5maW5kZXIu
Y2xlYW5fdHJlZXMoKQorCisgICAgICAgIG5hbWVzID0gc2VsZi5maW5kZXIuZmluZF9uYW1lcyhh
cmdzLCBUcnVlKSAgIyBGaW5kIGFsbCB0ZXN0cy4KKyAgICAgICAgaWYgbm90IG5hbWVzOgorICAg
ICAgICAgICAgX2xvZy5lcnJvcignTm8gdGVzdHMgdG8gcnVuJykKKyAgICAgICAgICAgIHJldHVy
biBGYWxzZQorCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fdGVzdHMobmFtZXMpCisKKyAgICBk
ZWYgX3J1bl90ZXN0cyhzZWxmLCBuYW1lcyk6CisgICAgICAgICMgTWFrZSBzdXJlIFBZVEhPTlBB
VEggaXMgc2V0IHVwIHByb3Blcmx5LgorICAgICAgICBzeXMucGF0aCA9IHNlbGYuZmluZGVyLmFk
ZGl0aW9uYWxfcGF0aHMoc3lzLnBhdGgpICsgc3lzLnBhdGgKKworICAgICAgICAjIFdlIGF1dG9p
bnN0YWxsIGV2ZXJ5dGhpbmcgdXAgc28gdGhhdCB3ZSBjYW4gcnVuIHRlc3RzIGNvbmN1cnJlbnRs
eQorICAgICAgICAjIGFuZCBub3QgaGF2ZSB0byB3b3JyeSBhYm91dCBhdXRvaW5zdGFsbGluZyBw
YWNrYWdlcyBjb25jdXJyZW50bHkuCisgICAgICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUo
IkNoZWNraW5nIGF1dG9pbnN0YWxsZWQgcGFja2FnZXMgLi4uIikKKyAgICAgICAgZnJvbSB3ZWJr
aXRweS50aGlyZHBhcnR5IGltcG9ydCBhdXRvaW5zdGFsbF9ldmVyeXRoaW5nCisgICAgICAgIGF1
dG9pbnN0YWxsX2V2ZXJ5dGhpbmcoKQorCisgICAgICAgIGNvbmZpZyA9IENvbmZpZyhfaG9zdC5l
eGVjdXRpdmUsIHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0pCisgICAgICAgIGNvbmZpZ3VyYXRpb25f
dG9fdXNlID0gc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uIG9yIGNvbmZpZy5kZWZhdWx0X2Nv
bmZpZ3VyYXRpb24oKQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnNob3VsZF9idWlsZDoKKyAg
ICAgICAgICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoJ0J1aWxkaW5nIGxsZGJXZWJLaXRU
ZXN0ZXIgLi4uJykKKyAgICAgICAgICAgIGJ1aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIgPSBvcy5wYXRo
LmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Via2l0
dGVzdGVyJykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfaG9zdC5leGVjdXRp
dmUucnVuX2FuZF90aHJvd19pZl9mYWlsKFtidWlsZF9sbGRid2Via2l0dGVzdGVyLCBjb25maWcu
ZmxhZ19mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3VzZSldLCBxdWlldD0obm90
IGJvb2woc2VsZi5fb3B0aW9ucy52ZXJib3NlKSkpCisgICAgICAgICAgICBleGNlcHQgU2NyaXB0
RXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGUubWVzc2FnZV93aXRoX291
dHB1dChvdXRwdXRfbGltaXQ9Tm9uZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisg
ICAgICAgIG9zLmVudmlyb25bJ0xMREJfV0VCS0lUX1RFU1RFUl9FWEVDVVRBQkxFJ10gPSBzdHIo
b3MucGF0aC5qb2luKGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoY29uZmlndXJhdGlvbl90b191c2Up
LCAnbGxkYldlYktpdFRlc3RlcicpKQorICAgICAgICBpZiBub3Qgc2VsZi5maW5kZXIuZmlsZXN5
c3RlbS5leGlzdHMob3MuZW52aXJvblsnTExEQl9XRUJLSVRfVEVTVEVSX0VYRUNVVEFCTEUnXSk6
CisgICAgICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQgdG8gZmluZCBsbGRiV2ViS2l0VGVzdGVy
LicpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBzZWxmLnByaW50ZXIud3Jp
dGVfdXBkYXRlKCJDaGVja2luZyBpbXBvcnRzIC4uLiIpCisgICAgICAgIGlmIG5vdCBzZWxmLl9j
aGVja19pbXBvcnRzKG5hbWVzKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAg
IHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoIkZpbmRpbmcgdGhlIGluZGl2aWR1YWwgdGVzdCBt
ZXRob2RzIC4uLiIpCisgICAgICAgIGxvYWRlciA9IF9Mb2FkZXIoKQorICAgICAgICB0ZXN0c190
b19ydW4gPSBzZWxmLl90ZXN0X25hbWVzKGxvYWRlciwgbmFtZXMpCisKKyAgICAgICAgc2VsZi5w
cmludGVyLndyaXRlX3VwZGF0ZSgiUnVubmluZyB0aGUgdGVzdHMgLi4uIikKKyAgICAgICAgc2Vs
Zi5wcmludGVyLm51bV90ZXN0cyA9IGxlbih0ZXN0c190b19ydW4pCisgICAgICAgIHN0YXJ0ID0g
dGltZS50aW1lKCkKKyAgICAgICAgdGVzdF9ydW5uZXIgPSBSdW5uZXIoc2VsZi5wcmludGVyLCBs
b2FkZXIpCisKKyAgICAgICAgIyBSdW4gdGhlIHRlc3RzIHNlcmlhbGx5IChvbmUgY2hpbGQgcHJv
Y2VzcykgdG8gYXZvaWQgZXJyb3JzIGVtaXR0ZWQgdG8gc3RhbmRhcmQgZXJyb3Igb2YgdGhlIGZv
cm06CisgICAgICAgICMgICBvYmpjWzc2Nzk0XTogK1tfX01EUXVlcnkgaW5pdGlhbGl6ZV0gbWF5
IGhhdmUgYmVlbiBpbiBwcm9ncmVzcyBpbiBhbm90aGVyIHRocmVhZCB3aGVuIGZvcmsoKSB3YXMg
Y2FsbGVkLgorICAgICAgICAjICAgV2UgY2Fubm90IHNhZmVseSBjYWxsIGl0IG9yIGlnbm9yZSBp
dCBpbiB0aGUgZm9yaygpIGNoaWxkIHByb2Nlc3MuIENyYXNoaW5nIGluc3RlYWQuCisgICAgICAg
IHRlc3RfcnVubmVyLnJ1bih0ZXN0c190b19ydW4sIDEpCisKKyAgICAgICAgc2VsZi5wcmludGVy
LnByaW50X3Jlc3VsdCh0aW1lLnRpbWUoKSAtIHN0YXJ0KQorCisgICAgICAgIGlmIHNlbGYuX29w
dGlvbnMuanNvbl9maWxlX25hbWU6CisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmpzb25fZmls
ZV9uYW1lID0gb3MucGF0aC5hYnNwYXRoKHNlbGYuX29wdGlvbnMuanNvbl9maWxlX25hbWUpCisg
ICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5fb3B0aW9ucy5qc29uX2ZpbGVfbmFtZSwgJ3cnKSBh
cyBqc29uX2ZpbGU6CisgICAgICAgICAgICAgICAgd3JpdGVfcmVzdWx0c19hc19qc29uKGpzb25f
ZmlsZSwgdGVzdHNfdG9fcnVuLCB0ZXN0X3J1bm5lci5mYWlsdXJlcywgdGVzdF9ydW5uZXIuZXJy
b3JzKQorCisgICAgICAgIHJldHVybiBub3Qgc2VsZi5wcmludGVyLm51bV9lcnJvcnMgYW5kIG5v
dCBzZWxmLnByaW50ZXIubnVtX2ZhaWx1cmVzCisKKyAgICBkZWYgX2NoZWNrX2ltcG9ydHMoc2Vs
ZiwgbmFtZXMpOgorICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgICAgIGlmIHNl
bGYuZmluZGVyLmlzX21vZHVsZShuYW1lKToKKyAgICAgICAgICAgICAgICAjIElmIHdlIGZhaWxl
ZCB0byBsb2FkIGEgbmFtZSBhbmQgaXQgbG9va3MgbGlrZSBhIG1vZHVsZSwKKyAgICAgICAgICAg
ICAgICAjIHRyeSBpbXBvcnRpbmcgaXQgZGlyZWN0bHksIGJlY2F1c2UgbG9hZFRlc3RzRnJvbU5h
bWUoKQorICAgICAgICAgICAgICAgICMgcHJvZHVjZXMgbG91c3kgZXJyb3IgbWVzc2FnZXMgZm9y
IGJhZCBtb2R1bGVzLgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAg
X19pbXBvcnRfXyhuYW1lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAg
ICAgICAgICAgICAgICAgICAgX2xvZy5mYXRhbCgnRmFpbGVkIHRvIGltcG9ydCAlczonICUgbmFt
ZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nX2V4Y2VwdGlvbigpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF90
ZXN0X25hbWVzKHNlbGYsIGxvYWRlciwgbmFtZXMpOgorICAgICAgICB0ZXN0cyA9IFtdCisgICAg
ICAgIGxvYWRlci50ZXN0X21ldGhvZF9wcmVmaXhlcyA9IFsndGVzdF8nXQorICAgICAgICBmb3Ig
bmFtZSBpbiBuYW1lczoKKyAgICAgICAgICAgIHRlc3RzLmV4dGVuZChzZWxmLl9hbGxfdGVzdF9u
YW1lcyhsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUobmFtZSwgTm9uZSkpKQorICAgICAgICByZXR1
cm4gdGVzdHMKKworICAgIGRlZiBfYWxsX3Rlc3RfbmFtZXMoc2VsZiwgc3VpdGUpOgorICAgICAg
ICBuYW1lcyA9IFtdCisgICAgICAgIGlmIGhhc2F0dHIoc3VpdGUsICdfdGVzdHMnKToKKyAgICAg
ICAgICAgIGZvciB0IGluIHN1aXRlLl90ZXN0czoKKyAgICAgICAgICAgICAgICBuYW1lcy5leHRl
bmQoc2VsZi5fYWxsX3Rlc3RfbmFtZXModCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBu
YW1lcy5hcHBlbmQodW5pdF90ZXN0X25hbWUoc3VpdGUpKQorICAgICAgICByZXR1cm4gbmFtZXMK
KworICAgIGRlZiBfbG9nX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgcyA9IFN0cmluZ0lPLlN0
cmluZ0lPKCkKKyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXMpCisgICAgICAgIGZv
ciBsIGluIHMuYnVmbGlzdDoKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJyAgJyArIGwucnN0cmlw
KCkpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L2xvYWRlci5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGVzdC9sb2FkZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY4MzZmNjMwZjQw
YTI5NjAwMWEwN2NkZjg5NjBjMjRmZmIyMDUyOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGVzdC9sb2FkZXIucHkKQEAgLTAsMCArMSw0OCBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAxMCBDaHJpcyBKZXJk
b25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCisjIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCB1bml0dGVzdAorCitfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3MgX0xvYWRlcih1bml0dGVzdC5U
ZXN0TG9hZGVyKToKKyAgICB0ZXN0X21ldGhvZF9wcmVmaXhlcyA9IFtdCisKKyAgICBkZWYgZ2V0
VGVzdENhc2VOYW1lcyhzZWxmLCB0ZXN0Q2FzZUNsYXNzKToKKyAgICAgICAgc2hvdWxkX3NraXBf
Y2xhc3NfbWV0aG9kID0gZ2V0YXR0cih0ZXN0Q2FzZUNsYXNzLCAic2hvdWxkU2tpcCIsIE5vbmUp
CisgICAgICAgIGlmIGNhbGxhYmxlKHNob3VsZF9za2lwX2NsYXNzX21ldGhvZCk6CisgICAgICAg
ICAgICBpZiB0ZXN0Q2FzZUNsYXNzLnNob3VsZFNraXAoKToKKyAgICAgICAgICAgICAgICBfbG9n
LmluZm8oJ1NraXBwaW5nIHRlc3RzIGluICVzJyAlICh0ZXN0Q2FzZUNsYXNzLl9fbmFtZV9fKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gW10KKworICAgICAgICBkZWYgaXNUZXN0TWV0aG9kKGF0
dHJuYW1lLCB0ZXN0Q2FzZUNsYXNzPXRlc3RDYXNlQ2xhc3MpOgorICAgICAgICAgICAgaWYgbm90
IGhhc2F0dHIoZ2V0YXR0cih0ZXN0Q2FzZUNsYXNzLCBhdHRybmFtZSksICdfX2NhbGxfXycpOgor
ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIChhbnkoYXR0
cm5hbWUuc3RhcnRzd2l0aChwcmVmaXgpIGZvciBwcmVmaXggaW4gc2VsZi50ZXN0X21ldGhvZF9w
cmVmaXhlcykpCisgICAgICAgIHRlc3RGbk5hbWVzID0gZmlsdGVyKGlzVGVzdE1ldGhvZCwgZGly
KHRlc3RDYXNlQ2xhc3MpKQorICAgICAgICB0ZXN0Rm5OYW1lcy5zb3J0KCkKKyAgICAgICAgcmV0
dXJuIHRlc3RGbk5hbWVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3Qv
bWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CmluZGV4IDZhNGJi
NWUzNDJhYmY1OTUxMzdlODk2YWI3YzQ4NjViYTdhZjc0NWEuLjdjN2IzNDBjNjU5NGMzODgwMzdi
MjI2N2JlZTEzMGU5YTY3YWM0YWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGVzdC9tYWluLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CkBA
IC0yNiwxMCArMjYsOCBAQAogCiBpbXBvcnQgU3RyaW5nSU8KIGltcG9ydCBpdGVydG9vbHMKLWlt
cG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwotaW1wb3J0
IG9wZXJhdG9yCiBpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCBvcwogaW1wb3J0IHN5cwpAQCAtMzgs
NTggKzM2LDMwIEBAIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNvbmZpZ3VyZV9sb2dnaW5nCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNj
cmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQg
RmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0
IFN5c3RlbUhvc3QKIGZyb20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0IENvbmZpZwogZnJv
bSB3ZWJraXRweS50ZXN0LmZpbmRlciBpbXBvcnQgRmluZGVyCi1mcm9tIHdlYmtpdHB5LnRlc3Qu
cHJpbnRlciBpbXBvcnQgUHJpbnRlcgorZnJvbSB3ZWJraXRweS50ZXN0LmxvYWRlciBpbXBvcnQg
X0xvYWRlcgorZnJvbSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1wb3J0IFByaW50ZXIsIHdyaXRl
X3Jlc3VsdHNfYXNfanNvbgogZnJvbSB3ZWJraXRweS50ZXN0LnJ1bm5lciBpbXBvcnQgUnVubmVy
LCB1bml0X3Rlc3RfbmFtZQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAK
LV9ob3N0ID0gU3lzdGVtSG9zdCgpCi1fd2Via2l0X3Jvb3QgPSBOb25lCi0KLQotZGVmIF9idWls
ZF9sbGRiX3dlYmtpdF90ZXN0ZXIoY29uZmlndXJhdGlvbik6Ci0gICAgaWYgbm90IF9ob3N0LnBs
YXRmb3JtLmlzX21hYygpOgotICAgICAgICBfbG9nLmVycm9yKCdsbGRiV2ViS2l0VGVzdGVyIGlz
IG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4nKQotICAgICAgICByZXR1cm4gRmFsc2UK
LSAgICBjb25maWcgPSBDb25maWcoX2hvc3QuZXhlY3V0aXZlLCBfaG9zdC5maWxlc3lzdGVtKQot
ICAgIGJ1aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIgPSBvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAn
VG9vbHMnLCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Via2l0dGVzdGVyJykKLSAgICB0cnk6Ci0g
ICAgICAgIF9ob3N0LmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoW2J1aWxkX2xsZGJ3
ZWJraXR0ZXN0ZXIsIGNvbmZpZy5mbGFnX2Zvcl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24g
b3IgY29uZmlnLmRlZmF1bHRfY29uZmlndXJhdGlvbigpKV0sIHF1aWV0PVRydWUpCi0gICAgZXhj
ZXB0IFNjcmlwdEVycm9yIGFzIGU6Ci0gICAgICAgIF9sb2cuZXJyb3IoZS5tZXNzYWdlX3dpdGhf
b3V0cHV0KG91dHB1dF9saW1pdD1Ob25lKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0
dXJuIFRydWUKLQotCiAKIGRlZiBtYWluKCk6Ci0gICAgZ2xvYmFsIF93ZWJraXRfcm9vdAorICAg
IGdsb2JhbCB3ZWJraXRfcm9vdAogICAgIGNvbmZpZ3VyZV9sb2dnaW5nKGxvZ2dlcj1fbG9nKQog
CiAgICAgdXAgPSBvcy5wYXRoLmRpcm5hbWUKLSAgICBfd2Via2l0X3Jvb3QgPSB1cCh1cCh1cCh1
cCh1cChvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKSkpKSkKKyAgICB3ZWJraXRfcm9vdCA9IHVw
KHVwKHVwKHVwKHVwKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKSkpKQogCiAgICAgdGVzdGVy
ID0gVGVzdGVyKCkKLSAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9v
dCwgJ1Rvb2xzJywgJ1NjcmlwdHMnKSwgJ3dlYmtpdHB5JykKKyAgICB0ZXN0ZXIuYWRkX3RyZWUo
b3MucGF0aC5qb2luKHdlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycpLCAnd2Via2l0cHkn
KQogCiAgICAgIyBUaGVyZSBpcyBubyBXZWJLaXQyIG9uIFdpbmRvd3MsIHNvIHdlIGRvbid0IG5l
ZWQgdG8gcnVuIFdlYktpdDIgdW5pdHRlc3RzIG9uIGl0LgogICAgIGlmIG5vdCAoc3lzLnBsYXRm
b3JtLnN0YXJ0c3dpdGgoJ3dpbicpIG9yIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJyk6Ci0gICAg
ICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnU291cmNlJywg
J1dlYktpdCcsICdTY3JpcHRzJyksICd3ZWJraXQnKQotCi0gICAgbGxkYl9weXRob25fZGlyZWN0
b3J5ID0gX2hvc3QucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKQotICAgIGlmIG9zLnBh
dGguaXNkaXIobGxkYl9weXRob25fZGlyZWN0b3J5KToKLSAgICAgICAgaWYgbGxkYl9weXRob25f
ZGlyZWN0b3J5IG5vdCBpbiBzeXMucGF0aDoKLSAgICAgICAgICAgIHN5cy5wYXRoLmFwcGVuZChs
bGRiX3B5dGhvbl9kaXJlY3RvcnkpCi0gICAgICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpv
aW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnbGxkYicpKQotICAgICAgICB3aWxsX3J1bl9sbGRi
X3dlYmtpdF90ZXN0cyA9IFRydWUKLSAgICBlbHNlOgotICAgICAgICBfbG9nLmluZm8oIlNraXBw
aW5nIGxsZGJfd2Via2l0IHRlc3RzOyBjb3VsZCBub3QgZmluZCBwYXRoIHRvIGxsZGIucHkgJ3t9
Jy4iLmZvcm1hdChsbGRiX3B5dGhvbl9kaXJlY3RvcnkpKQotICAgICAgICB3aWxsX3J1bl9sbGRi
X3dlYmtpdF90ZXN0cyA9IEZhbHNlCisgICAgICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpv
aW4od2Via2l0X3Jvb3QsICdTb3VyY2UnLCAnV2ViS2l0JywgJ1NjcmlwdHMnKSwgJ3dlYmtpdCcp
CiAKICAgICB0ZXN0ZXIuc2tpcCgoJ3dlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtX3Vu
aXR0ZXN0JywpLCAnYXJlIHJlYWxseSwgcmVhbGx5LCBzbG93JywgMzE4MTgpCiAgICAgaWYgc3lz
LnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgpAQCAtMTA0LDIzICs3NCwxMiBAQCBkZWYgbWFp
bigpOgogICAgICAgICBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZGlzdCBpbXBvcnQgdXNlX2xpYnJh
cnkKICAgICAgICAgdXNlX2xpYnJhcnkoJ2RqYW5nbycsICcxLjInKQogICAgICAgICBkZXZfYXBw
c2VydmVyLmZpeF9zeXNfcGF0aCgpCi0gICAgICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpv
aW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnUXVldWVTdGF0dXNTZXJ2ZXInKSkKKyAgICAgICAg
dGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ1F1ZXVl
U3RhdHVzU2VydmVyJykpCiAgICAgZWxzZToKICAgICAgICAgX2xvZy5pbmZvKCdTa2lwcGluZyBR
dWV1ZVN0YXR1c1NlcnZlciB0ZXN0czsgdGhlIEdvb2dsZSBBcHBFbmdpbmUgUHl0aG9uIFNESyBp
cyBub3QgaW5zdGFsbGVkLicpCiAKLSAgICByZXR1cm4gbm90IHRlc3Rlci5ydW4od2lsbF9ydW5f
bGxkYl93ZWJraXRfdGVzdHM9d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMpCi0KLQotZGVmIF9w
cmludF9yZXN1bHRzX2FzX2pzb24oc3RyZWFtLCBhbGxfdGVzdF9uYW1lcywgZmFpbHVyZXMsIGVy
cm9ycyk6Ci0gICAgZGVmIHJlc3VsdF9kaWN0X2Zyb21fdHVwbGUocmVzdWx0X3R1cGxlKToKLSAg
ICAgICAgcmV0dXJuIHsnbmFtZSc6IHJlc3VsdF90dXBsZVswXSwgJ3Jlc3VsdCc6IHJlc3VsdF90
dXBsZVsxXX0KLQotICAgIHJlc3VsdHMgPSB7fQotICAgIHJlc3VsdHNbJ2ZhaWx1cmVzJ10gPSBt
YXAocmVzdWx0X2RpY3RfZnJvbV90dXBsZSwgc29ydGVkKGZhaWx1cmVzLCBrZXk9b3BlcmF0b3Iu
aXRlbWdldHRlcigwKSkpCi0gICAgcmVzdWx0c1snZXJyb3JzJ10gPSBtYXAocmVzdWx0X2RpY3Rf
ZnJvbV90dXBsZSwgc29ydGVkKGVycm9ycywga2V5PW9wZXJhdG9yLml0ZW1nZXR0ZXIoMCkpKQot
ICAgIHJlc3VsdHNbJ3Bhc3NlcyddID0gc29ydGVkKHNldChhbGxfdGVzdF9uYW1lcykgLSBzZXQo
bWFwKG9wZXJhdG9yLml0ZW1nZXR0ZXIoMCksIGZhaWx1cmVzKSkgLSBzZXQobWFwKG9wZXJhdG9y
Lml0ZW1nZXR0ZXIoMCksIGVycm9ycykpKQorICAgIHJldHVybiBub3QgdGVzdGVyLnJ1bigpCiAK
LSAgICBqc29uLmR1bXAocmVzdWx0cywgc3RyZWFtLCBzZXBhcmF0b3JzPSgnLCcsICc6JykpCiAK
IAogY2xhc3MgVGVzdGVyKG9iamVjdCk6CkBAIC0xMzcsMTUgKzk2LDYgQEAgY2xhc3MgVGVzdGVy
KG9iamVjdCk6CiAKICAgICBkZWYgX3BhcnNlX2FyZ3Moc2VsZiwgYXJndj1Ob25lKToKICAgICAg
ICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSd1c2FnZTogJXByb2cgW29w
dGlvbnNdIFthcmdzLi4uXScpCi0KLSAgICAgICAgIyAgQ29uZmlndXJhdGlvbiBvcHRpb25zIG9u
bHkgZWZmZWN0IHRoZSBidWlsZGluZyBvZiBsbGRiV2ViS2l0VGVzdGVyLgotICAgICAgICBjb25m
aWd1cmF0aW9uX2dyb3VwID0gb3B0cGFyc2UuT3B0aW9uR3JvdXAocGFyc2VyLCAnQ29uZmlndXJh
dGlvbiBvcHRpb25zJykKLSAgICAgICAgY29uZmlndXJhdGlvbl9ncm91cC5hZGRfb3B0aW9uKCct
LWRlYnVnJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdEZWJ1ZycsIGRlc3Q9ImNvbmZp
Z3VyYXRpb24iLAotICAgICAgICAgICAgaGVscD0nU2V0IHRoZSBjb25maWd1cmF0aW9uIHRvIERl
YnVnJykKLSAgICAgICAgY29uZmlndXJhdGlvbl9ncm91cC5hZGRfb3B0aW9uKCctLXJlbGVhc2Un
LCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9J1JlbGVhc2UnLCBkZXN0PSJjb25maWd1cmF0
aW9uIiwKLSAgICAgICAgICAgIGhlbHA9J1NldCB0aGUgY29uZmlndXJhdGlvbiB0byBSZWxlYXNl
JykKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAoY29uZmlndXJhdGlvbl9ncm91cCkK
LQogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLWEnLCAnLS1hbGwnLCBhY3Rpb249J3N0b3Jl
X3RydWUnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdy
dW4gYWxsIHRoZSB0ZXN0cycpCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctYycsICctLWNv
dmVyYWdlJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKQEAgLTE3Myw3ICsx
MjMsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gcGFyc2VyLnBh
cnNlX2FyZ3MoYXJndikKIAotICAgIGRlZiBydW4oc2VsZiwgd2lsbF9ydW5fbGxkYl93ZWJraXRf
dGVzdHM9RmFsc2UpOgorICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIHNlbGYuX29wdGlvbnMs
IGFyZ3MgPSBzZWxmLl9wYXJzZV9hcmdzKCkKICAgICAgICAgc2VsZi5wcmludGVyLmNvbmZpZ3Vy
ZShzZWxmLl9vcHRpb25zKQogCkBAIC0xODQsOSArMTM0LDkgQEAgY2xhc3MgVGVzdGVyKG9iamVj
dCk6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCdObyB0ZXN0cyB0byBydW4nKQogICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl90ZXN0cyhuYW1lcywg
d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMpCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fdGVz
dHMobmFtZXMpCiAKLSAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCBuYW1lcywgd2lsbF9ydW5fbGxk
Yl93ZWJraXRfdGVzdHMpOgorICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzKToKICAgICAg
ICAgIyBNYWtlIHN1cmUgUFlUSE9OUEFUSCBpcyBzZXQgdXAgcHJvcGVybHkuCiAgICAgICAgIHN5
cy5wYXRoID0gc2VsZi5maW5kZXIuYWRkaXRpb25hbF9wYXRocyhzeXMucGF0aCkgKyBzeXMucGF0
aAogCkBAIC0xOTYsMTIgKzE0Niw2IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAgICBm
cm9tIHdlYmtpdHB5LnRoaXJkcGFydHkgaW1wb3J0IGF1dG9pbnN0YWxsX2V2ZXJ5dGhpbmcKICAg
ICAgICAgYXV0b2luc3RhbGxfZXZlcnl0aGluZygpCiAKLSAgICAgICAgaWYgd2lsbF9ydW5fbGxk
Yl93ZWJraXRfdGVzdHM6Ci0gICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdC
dWlsZGluZyBsbGRiV2ViS2l0VGVzdGVyIC4uLicpCi0gICAgICAgICAgICBpZiBub3QgX2J1aWxk
X2xsZGJfd2Via2l0X3Rlc3Rlcihjb25maWd1cmF0aW9uPXNlbGYuX29wdGlvbnMuY29uZmlndXJh
dGlvbik6Ci0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcignRmFpbGVkIHRvIGJ1aWxkIGxsZGJX
ZWJLaXRUZXN0ZXIuJykKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLQogICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdlOgogICAgICAgICAgICAgX2xvZy53YXJuaW5nKCJDaGVj
a2luZyBjb2RlIGNvdmVyYWdlLCBzbyBydW5uaW5nIHRoaW5ncyBzZXJpYWxseSIpCiAgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyA9IDEKQEAgLTIyOCwxMiArMTcyLDEy
IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAgICBzZWxmLnByaW50ZXIucHJpbnRfcmVz
dWx0KHRpbWUudGltZSgpIC0gc3RhcnQpCiAKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5qc29u
OgotICAgICAgICAgICAgX3ByaW50X3Jlc3VsdHNfYXNfanNvbihzeXMuc3Rkb3V0LCBpdGVydG9v
bHMuY2hhaW4ocGFyYWxsZWxfdGVzdHMsIHNlcmlhbF90ZXN0cyksIHRlc3RfcnVubmVyLmZhaWx1
cmVzLCB0ZXN0X3J1bm5lci5lcnJvcnMpCisgICAgICAgICAgICB3cml0ZV9yZXN1bHRzX2FzX2pz
b24oc3lzLnN0ZG91dCwgaXRlcnRvb2xzLmNoYWluKHBhcmFsbGVsX3Rlc3RzLCBzZXJpYWxfdGVz
dHMpLCB0ZXN0X3J1bm5lci5mYWlsdXJlcywgdGVzdF9ydW5uZXIuZXJyb3JzKQogCiAgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMuanNvbl9maWxlX25hbWU6CiAgICAgICAgICAgICBzZWxmLl9vcHRp
b25zLmpzb25fZmlsZV9uYW1lID0gb3MucGF0aC5hYnNwYXRoKHNlbGYuX29wdGlvbnMuanNvbl9m
aWxlX25hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5fb3B0aW9ucy5qc29uX2ZpbGVf
bmFtZSwgJ3cnKSBhcyBqc29uX2ZpbGU6Ci0gICAgICAgICAgICAgICAgX3ByaW50X3Jlc3VsdHNf
YXNfanNvbihqc29uX2ZpbGUsIGl0ZXJ0b29scy5jaGFpbihwYXJhbGxlbF90ZXN0cywgc2VyaWFs
X3Rlc3RzKSwgdGVzdF9ydW5uZXIuZmFpbHVyZXMsIHRlc3RfcnVubmVyLmVycm9ycykKKyAgICAg
ICAgICAgICAgICB3cml0ZV9yZXN1bHRzX2FzX2pzb24oanNvbl9maWxlLCBpdGVydG9vbHMuY2hh
aW4ocGFyYWxsZWxfdGVzdHMsIHNlcmlhbF90ZXN0cyksIHRlc3RfcnVubmVyLmZhaWx1cmVzLCB0
ZXN0X3J1bm5lci5lcnJvcnMpCiAKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb3ZlcmFnZToK
ICAgICAgICAgICAgIGNvdi5zdG9wKCkKQEAgLTI5NiwyNCArMjQwLDUgQEAgY2xhc3MgVGVzdGVy
KG9iamVjdCk6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCcgICcgKyBsLnJzdHJpcCgpKQogCiAK
LWNsYXNzIF9Mb2FkZXIodW5pdHRlc3QuVGVzdExvYWRlcik6Ci0gICAgdGVzdF9tZXRob2RfcHJl
Zml4ZXMgPSBbXQotCi0gICAgZGVmIGdldFRlc3RDYXNlTmFtZXMoc2VsZiwgdGVzdENhc2VDbGFz
cyk6Ci0gICAgICAgIHNob3VsZF9za2lwX2NsYXNzX21ldGhvZCA9IGdldGF0dHIodGVzdENhc2VD
bGFzcywgInNob3VsZFNraXAiLCBOb25lKQotICAgICAgICBpZiBjYWxsYWJsZShzaG91bGRfc2tp
cF9jbGFzc19tZXRob2QpOgotICAgICAgICAgICAgaWYgdGVzdENhc2VDbGFzcy5zaG91bGRTa2lw
KCk6Ci0gICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdTa2lwcGluZyB0ZXN0cyBpbiAlcycgJSAo
dGVzdENhc2VDbGFzcy5fX25hbWVfXykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFtdCi0KLSAg
ICAgICAgZGVmIGlzVGVzdE1ldGhvZChhdHRybmFtZSwgdGVzdENhc2VDbGFzcz10ZXN0Q2FzZUNs
YXNzKToKLSAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGdldGF0dHIodGVzdENhc2VDbGFzcywg
YXR0cm5hbWUpLCAnX19jYWxsX18nKToKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgICAgIHJldHVybiAoYW55KGF0dHJuYW1lLnN0YXJ0c3dpdGgocHJlZml4KSBmb3IgcHJl
Zml4IGluIHNlbGYudGVzdF9tZXRob2RfcHJlZml4ZXMpKQotICAgICAgICB0ZXN0Rm5OYW1lcyA9
IGZpbHRlcihpc1Rlc3RNZXRob2QsIGRpcih0ZXN0Q2FzZUNsYXNzKSkKLSAgICAgICAgdGVzdEZu
TmFtZXMuc29ydCgpCi0gICAgICAgIHJldHVybiB0ZXN0Rm5OYW1lcwotCi0KIGlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CiAgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90ZXN0L3ByaW50ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rlc3QvcHJpbnRlci5weQppbmRleCBkMDM2NDI4NjgyNzFmM2M4N2RlYTc1YWNjZTEzYWY1Y2Q1
OTkxMDJmLi40NzlmYzI2ZjRlYzg2MzBjNDAyZDQ5ZTY2YTJjYmE3NjlhMTY0ZmJiIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcHJpbnRlci5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rlc3QvcHJpbnRlci5weQpAQCAtMSw1ICsxLDYgQEAKICMgQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSwgSW5jLgogIyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVy
ZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQorIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMiw3ICsyMyw5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBTdHJpbmdJTworaW1wb3J0
IGpzb24KIGltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3BlcmF0b3IKIAogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdApAQCAtMzIsNiArMzUsMTcgQEAgZnJv
bSB3ZWJraXRweS50b29sLmdyYW1tYXIgaW1wb3J0IHBsdXJhbGl6ZQogX2xvZyA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKK2RlZiB3cml0ZV9yZXN1bHRzX2FzX2pzb24oc3RyZWFt
LCBhbGxfdGVzdF9uYW1lcywgZmFpbHVyZXMsIGVycm9ycyk6CisgICAgZGVmIG1ha2VfZGljdF9m
cm9tX3R1cGxlKHJlc3VsdF90dXBsZSk6CisgICAgICAgIHJldHVybiB7J25hbWUnOiByZXN1bHRf
dHVwbGVbMF0sICdyZXN1bHQnOiByZXN1bHRfdHVwbGVbMV19CisKKyAgICByZXN1bHRzID0ge30K
KyAgICByZXN1bHRzWydmYWlsdXJlcyddID0gbWFwKG1ha2VfZGljdF9mcm9tX3R1cGxlLCBzb3J0
ZWQoZmFpbHVyZXMsIGtleT1vcGVyYXRvci5pdGVtZ2V0dGVyKDApKSkKKyAgICByZXN1bHRzWydl
cnJvcnMnXSA9IG1hcChtYWtlX2RpY3RfZnJvbV90dXBsZSwgc29ydGVkKGVycm9ycywga2V5PW9w
ZXJhdG9yLml0ZW1nZXR0ZXIoMCkpKQorICAgIHJlc3VsdHNbJ3Bhc3NlcyddID0gc29ydGVkKHNl
dChhbGxfdGVzdF9uYW1lcykgLSBzZXQobWFwKG9wZXJhdG9yLml0ZW1nZXR0ZXIoMCksIGZhaWx1
cmVzKSkgLSBzZXQobWFwKG9wZXJhdG9yLml0ZW1nZXR0ZXIoMCksIGVycm9ycykpKQorICAgIGpz
b24uZHVtcChyZXN1bHRzLCBzdHJlYW0sIHNlcGFyYXRvcnM9KCcsJywgJzonKSkKKworCiBjbGFz
cyBQcmludGVyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmVhbSwgb3B0aW9u
cz1Ob25lKToKICAgICAgICAgc2VsZi5zdHJlYW0gPSBzdHJlYW0KZGlmZiAtLWdpdCBhL1Rvb2xz
L2xsZGIvZHVtcF9jbGFzc19sYXlvdXRfdW5pdHRlc3QucHkgYi9Ub29scy9sbGRiL2R1bXBfY2xh
c3NfbGF5b3V0X3VuaXR0ZXN0LnB5CmluZGV4IDEwNDI3YjA1YzRjOGNlNGI4MjcxMDc5OTBjYzYz
MmE2ZmMwYzk3M2IuLjBiZDBkMTE4NWE1MmZlNDkxMGQ4ZTc4Mzc4MTAyNzllOGIxZDkxNzIgMTAw
NzU1Ci0tLSBhL1Rvb2xzL2xsZGIvZHVtcF9jbGFzc19sYXlvdXRfdW5pdHRlc3QucHkKKysrIGIv
VG9vbHMvbGxkYi9kdW1wX2NsYXNzX2xheW91dF91bml0dGVzdC5weQpAQCAtMzAsMTUgKzMwLDEx
IEBAIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtp
dHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcKLQogZnJvbSBsbGRiX2R1bXBfY2xhc3NfbGF5
b3V0IGltcG9ydCBMTERCRGVidWdnZXJJbnN0YW5jZSwgQ2xhc3NMYXlvdXRCYXNlCi0KLV9ob3N0
ID0gU3lzdGVtSG9zdCgpCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBp
bXBvcnQgU3lzdGVtSG9zdAogCiAjIFJ1biB0aGVzZSB0ZXN0cyB3aXRoIC4vVG9vbHMvU2NyaXB0
cy90ZXN0LXdlYmtpdHB5IGR1bXBfY2xhc3NfbGF5b3V0X3VuaXR0ZXN0Ci0jIFJ1biBhIHNpbmds
ZSB0ZXN0IHdpdGggZS5nLiAuL1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweSBkdW1wX2NsYXNz
X2xheW91dF91bml0dGVzdC5UZXN0RHVtcENsYXNzTGF5b3V0LnNlcmlhbF90ZXN0X0NsYXNzV2l0
aFVuaXF1ZVB0cnMKKyMgUnVuIGEgc2luZ2xlIHRlc3Qgd2l0aCBlLmcuIC4vVG9vbHMvU2NyaXB0
cy90ZXN0LXdlYmtpdHB5IGR1bXBfY2xhc3NfbGF5b3V0X3VuaXR0ZXN0LlRlc3REdW1wQ2xhc3NM
YXlvdXQudGVzdF9DbGFzc1dpdGhVbmlxdWVQdHJzCiAjIENvbXBhcmUgd2l0aCBjbGFuZydzIG91
dHB1dDogY2xhbmcrKyAtWGNsYW5nIC1mZHVtcC1yZWNvcmQtbGF5b3V0cyBEdW1wQ2xhc3NMYXlv
dXRUZXN0aW5nLmNwcAogCiBkZWJ1Z2dlcl9pbnN0YW5jZSA9IE5vbmUKQEAgLTUyLDE2ICs0OCwx
MyBAQCBkZWYgZGVzdHJveV9jYWNoZWRfZGVidWdfc2Vzc2lvbigpOgogY2xhc3MgVGVzdER1bXBD
bGFzc0xheW91dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVm
IHNob3VsZFNraXAoY2xzKToKLSAgICAgICAgcmV0dXJuIG5vdCBfaG9zdC5wbGF0Zm9ybS5pc19t
YWMoKQorICAgICAgICByZXR1cm4gbm90IFN5c3RlbUhvc3QoKS5wbGF0Zm9ybS5pc19tYWMoKQog
CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgZ2xv
YmFsIGRlYnVnZ2VyX2luc3RhbmNlCiAgICAgICAgIGlmIG5vdCBkZWJ1Z2dlcl9pbnN0YW5jZToK
LSAgICAgICAgICAgIExMREJfV0VCS0lUX1RFU1RFUl9OQU1FID0gJ2xsZGJXZWJLaXRUZXN0ZXIn
Ci0KLSAgICAgICAgICAgIGNvbmZpZyA9IENvbmZpZyhfaG9zdC5leGVjdXRpdmUsIF9ob3N0LmZp
bGVzeXN0ZW0pCi0gICAgICAgICAgICBsbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSA9IG9zLnBh
dGguam9pbihjb25maWcuYnVpbGRfZGlyZWN0b3J5KGNvbmZpZy5kZWZhdWx0X2NvbmZpZ3VyYXRp
b24oKSksIExMREJfV0VCS0lUX1RFU1RFUl9OQU1FKQorICAgICAgICAgICAgbGxkYldlYktpdFRl
c3RlckV4ZWN1dGFibGUgPSBzdHIob3MuZW52aXJvblsnTExEQl9XRUJLSVRfVEVTVEVSX0VYRUNV
VEFCTEUnXSkKIAogICAgICAgICAgICAgYXJjaGl0ZWN0dXJlID0gJ3g4Nl82NCcKICAgICAgICAg
ICAgIGRlYnVnZ2VyX2luc3RhbmNlID0gTExEQkRlYnVnZ2VySW5zdGFuY2UobGxkYldlYktpdFRl
c3RlckV4ZWN1dGFibGUsIGFyY2hpdGVjdHVyZSkKQEAgLTczLDcgKzY2LDcgQEAgY2xhc3MgVGVz
dER1bXBDbGFzc0xheW91dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYubWF4RGlm
ZiA9IE5vbmUKICAgICAgICAgc2VsZi5hZGRUeXBlRXF1YWxpdHlGdW5jKHN0ciwgc2VsZi5hc3Nl
cnRNdWx0aUxpbmVFcXVhbCkKIAotICAgIGRlZiBzZXJpYWxfdGVzdF9CYXNpY0NsYXNzTGF5b3V0
KHNlbGYpOgorICAgIGRlZiB0ZXN0X0Jhc2ljQ2xhc3NMYXlvdXQoc2VsZik6CiAgICAgICAgIEVY
UEVDVEVEX1JFU1VMVCA9ICIiIiAgKzAgPCAgOD4gQmFzaWNDbGFzc0xheW91dAogICArMCA8ICA0
PiAgIGludCBpbnRNZW1iZXIKICAgKzQgPCAgMT4gICBib29sIGJvb2xNZW1iZXIKQEAgLTg0LDcg
Kzc3LDcgQEAgUGFkZGluZyBwZXJjZW50YWdlOiAzNy41MCAlIiIiCiAgICAgICAgIGFjdHVhbF9s
YXlvdXQgPSBkZWJ1Z2dlcl9pbnN0YW5jZS5sYXlvdXRfZm9yX2NsYXNzbmFtZSgnQmFzaWNDbGFz
c0xheW91dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVhQRUNURURfUkVTVUxULCBhY3R1
YWxfbGF5b3V0LmFzX3N0cmluZygpKQogCi0gICAgZGVmIHNlcmlhbF90ZXN0X1BhZGRpbmdCZXR3
ZWVuQ2xhc3NNZW1iZXJzKHNlbGYpOgorICAgIGRlZiB0ZXN0X1BhZGRpbmdCZXR3ZWVuQ2xhc3NN
ZW1iZXJzKHNlbGYpOgogICAgICAgICBFWFBFQ1RFRF9SRVNVTFQgPSAiIiIgICswIDwgMTY+IFBh
ZGRpbmdCZXR3ZWVuQ2xhc3NNZW1iZXJzCiAgICswIDwgIDg+ICAgICBCYXNpY0NsYXNzTGF5b3V0
IGJhc2ljMQogICArMCA8ICA0PiAgICAgICBpbnQgaW50TWVtYmVyCkBAIC0xMDAsNyArOTMsNyBA
QCBQYWRkaW5nIHBlcmNlbnRhZ2U6IDM3LjUwICUiIiIKICAgICAgICAgYWN0dWFsX2xheW91dCA9
IGRlYnVnZ2VyX2luc3RhbmNlLmxheW91dF9mb3JfY2xhc3NuYW1lKCdQYWRkaW5nQmV0d2VlbkNs
YXNzTWVtYmVycycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVhQRUNURURfUkVTVUxULCBh
Y3R1YWxfbGF5b3V0LmFzX3N0cmluZygpKQogCi0gICAgZGVmIHNlcmlhbF90ZXN0X0Jvb2xQYWRk
aW5nQ2xhc3Moc2VsZik6CisgICAgZGVmIHRlc3RfQm9vbFBhZGRpbmdDbGFzcyhzZWxmKToKICAg
ICAgICAgRVhQRUNURURfUkVTVUxUID0gIiIiICArMCA8IDEyPiBCb29sUGFkZGluZ0NsYXNzCiAg
ICswIDwgIDE+ICAgYm9vbCBib29sMQogICArMSA8ICAxPiAgIGJvb2wgYm9vbDIKQEAgLTExNiw3
ICsxMDksNyBAQCBQYWRkaW5nIHBlcmNlbnRhZ2U6IDMzLjMzICUiIiIKICAgICAgICAgYWN0dWFs
X2xheW91dCA9IGRlYnVnZ2VyX2luc3RhbmNlLmxheW91dF9mb3JfY2xhc3NuYW1lKCdCb29sUGFk
ZGluZ0NsYXNzJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFWFBFQ1RFRF9SRVNVTFQsIGFj
dHVhbF9sYXlvdXQuYXNfc3RyaW5nKCkpCiAKLSAgICBkZWYgc2VyaWFsX3Rlc3RfQ2xhc3NXaXRo
RW1wdHlDbGFzc01lbWJlcnMoc2VsZik6CisgICAgZGVmIHRlc3RfQ2xhc3NXaXRoRW1wdHlDbGFz
c01lbWJlcnMoc2VsZik6CiAgICAgICAgIEVYUEVDVEVEX1JFU1VMVCA9ICIiIiAgKzAgPCAxMj4g
Q2xhc3NXaXRoRW1wdHlDbGFzc01lbWJlcnMKICAgKzAgPCAgND4gICBpbnQgaW50TWVtYmVyCiAg
ICs0IDwgIDE+ICAgICBFbXB0eUNsYXNzIGVtcHR5MQpAQCAtMTMxLDcgKzEyNCw3IEBAIFBhZGRp
bmcgcGVyY2VudGFnZTogMjUuMDAgJSIiIgogICAgICAgICBhY3R1YWxfbGF5b3V0ID0gZGVidWdn
ZXJfaW5zdGFuY2UubGF5b3V0X2Zvcl9jbGFzc25hbWUoJ0NsYXNzV2l0aEVtcHR5Q2xhc3NNZW1i
ZXJzJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFWFBFQ1RFRF9SRVNVTFQsIGFjdHVhbF9s
YXlvdXQuYXNfc3RyaW5nKCkpCiAKLSAgICBkZWYgc2VyaWFsX3Rlc3RfU2ltcGxlVmlydHVhbENs
YXNzKHNlbGYpOgorICAgIGRlZiB0ZXN0X1NpbXBsZVZpcnR1YWxDbGFzcyhzZWxmKToKICAgICAg
ICAgRVhQRUNURURfUkVTVUxUID0gIiIiICArMCA8IDI0PiBTaW1wbGVWaXJ0dWFsQ2xhc3MKICAg
KzAgPCAgOD4gICAgX192dGJsX3B0cl90eXBlICogX3ZwdHIKICAgKzggPCAgND4gICBpbnQgaW50
TWVtYmVyCkBAIC0xNDMsNyArMTM2LDcgQEAgUGFkZGluZyBwZXJjZW50YWdlOiAxNi42NyAlIiIi
CiAgICAgICAgIGFjdHVhbF9sYXlvdXQgPSBkZWJ1Z2dlcl9pbnN0YW5jZS5sYXlvdXRfZm9yX2Ns
YXNzbmFtZSgnU2ltcGxlVmlydHVhbENsYXNzJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChF
WFBFQ1RFRF9SRVNVTFQsIGFjdHVhbF9sYXlvdXQuYXNfc3RyaW5nKCkpCiAKLSAgICBkZWYgc2Vy
aWFsX3Rlc3RfVmlydHVhbENsYXNzV2l0aE5vblZpcnR1YWxCYXNlKHNlbGYpOgorICAgIGRlZiB0
ZXN0X1ZpcnR1YWxDbGFzc1dpdGhOb25WaXJ0dWFsQmFzZShzZWxmKToKICAgICAgICAgRVhQRUNU
RURfUkVTVUxUID0gIiIiICArMCA8IDI0PiBWaXJ0dWFsQ2xhc3NXaXRoTm9uVmlydHVhbEJhc2UK
ICAgKzAgPCAgOD4gICAgX192dGJsX3B0cl90eXBlICogX3ZwdHIKICAgKzggPCAgOD4gICAgIEJh
c2ljQ2xhc3NMYXlvdXQgQmFzaWNDbGFzc0xheW91dApAQCAtMTU3LDcgKzE1MCw3IEBAIFBhZGRp
bmcgcGVyY2VudGFnZTogMTIuNTAgJSIiIgogICAgICAgICBhY3R1YWxfbGF5b3V0ID0gZGVidWdn
ZXJfaW5zdGFuY2UubGF5b3V0X2Zvcl9jbGFzc25hbWUoJ1ZpcnR1YWxDbGFzc1dpdGhOb25WaXJ0
dWFsQmFzZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVhQRUNURURfUkVTVUxULCBhY3R1
YWxfbGF5b3V0LmFzX3N0cmluZygpKQogCi0gICAgZGVmIHNlcmlhbF90ZXN0X0ludGVybGVhdmVk
VmlydHVhbE5vblZpcnR1YWwoc2VsZik6CisgICAgZGVmIHRlc3RfSW50ZXJsZWF2ZWRWaXJ0dWFs
Tm9uVmlydHVhbChzZWxmKToKICAgICAgICAgRVhQRUNURURfUkVTVUxUID0gIiIiICArMCA8IDE2
PiBJbnRlcmxlYXZlZFZpcnR1YWxOb25WaXJ0dWFsCiAgICswIDwgMTY+ICAgICBDbGFzc1dpdGhW
aXJ0dWFsQmFzZSBDbGFzc1dpdGhWaXJ0dWFsQmFzZQogICArMCA8ICA4PiAgICAgICAgIFZpcnR1
YWxCYXNlQ2xhc3MgVmlydHVhbEJhc2VDbGFzcwpAQCAtMTcxLDcgKzE2NCw3IEBAIFBhZGRpbmcg
cGVyY2VudGFnZTogMzcuNTAgJSIiIgogICAgICAgICBhY3R1YWxfbGF5b3V0ID0gZGVidWdnZXJf
aW5zdGFuY2UubGF5b3V0X2Zvcl9jbGFzc25hbWUoJ0ludGVybGVhdmVkVmlydHVhbE5vblZpcnR1
YWwnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVYUEVDVEVEX1JFU1VMVCwgYWN0dWFsX2xh
eW91dC5hc19zdHJpbmcoKSkKIAotICAgIGRlZiBzZXJpYWxfdGVzdF9DbGFzc1dpdGhUd29WaXJ0
dWFsQmFzZUNsYXNzZXMoc2VsZik6CisgICAgZGVmIHRlc3RfQ2xhc3NXaXRoVHdvVmlydHVhbEJh
c2VDbGFzc2VzKHNlbGYpOgogICAgICAgICBFWFBFQ1RFRF9SRVNVTFQgPSAiIiIgICswIDwgMjQ+
IENsYXNzV2l0aFR3b1ZpcnR1YWxCYXNlQ2xhc3NlcwogICArMCA8ICA4PiAgICAgVmlydHVhbEJh
c2VDbGFzcyBWaXJ0dWFsQmFzZUNsYXNzCiAgICswIDwgIDg+ICAgICAgICBfX3Z0YmxfcHRyX3R5
cGUgKiBfdnB0cgpAQCAtMTg1LDcgKzE3OCw3IEBAIFBhZGRpbmcgcGVyY2VudGFnZTogMjkuMTcg
JSIiIgogICAgICAgICBhY3R1YWxfbGF5b3V0ID0gZGVidWdnZXJfaW5zdGFuY2UubGF5b3V0X2Zv
cl9jbGFzc25hbWUoJ0NsYXNzV2l0aFR3b1ZpcnR1YWxCYXNlQ2xhc3NlcycpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoRVhQRUNURURfUkVTVUxULCBhY3R1YWxfbGF5b3V0LmFzX3N0cmluZygp
KQogCi0gICAgZGVmIHNlcmlhbF90ZXN0X0NsYXNzV2l0aFZpcnR1YWxJbmhlcml0YW5jZShzZWxm
KToKKyAgICBkZWYgdGVzdF9DbGFzc1dpdGhWaXJ0dWFsSW5oZXJpdGFuY2Uoc2VsZik6CiAgICAg
ICAgIEVYUEVDVEVEX1JFU1VMVCA9ICIiIiAgKzAgPCA2ND4gQ2xhc3NXaXRoVmlydHVhbEluaGVy
aXRhbmNlCiAgICswIDwgMzI+ICAgICBWaXJ0dWFsSW5oZXJpdGluZ0EgVmlydHVhbEluaGVyaXRp
bmdBCiAgICswIDwgIDg+ICAgICAgICBfX3Z0YmxfcHRyX3R5cGUgKiBfdnB0cgpAQCAtMjEwLDcg
KzIwMyw3IEBAIFBhZGRpbmcgcGVyY2VudGFnZTogMjguMTIgJSIiIgogICAgICAgICBhY3R1YWxf
bGF5b3V0ID0gZGVidWdnZXJfaW5zdGFuY2UubGF5b3V0X2Zvcl9jbGFzc25hbWUoJ0NsYXNzV2l0
aFZpcnR1YWxJbmhlcml0YW5jZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVhQRUNURURf
UkVTVUxULCBhY3R1YWxfbGF5b3V0LmFzX3N0cmluZygpKQogCi0gICAgZGVmIHNlcmlhbF90ZXN0
X0NsYXNzV2l0aEluaGVyaXRhbmNlQW5kQ2xhc3NNZW1iZXIoc2VsZik6CisgICAgZGVmIHRlc3Rf
Q2xhc3NXaXRoSW5oZXJpdGFuY2VBbmRDbGFzc01lbWJlcihzZWxmKToKICAgICAgICAgRVhQRUNU
RURfUkVTVUxUID0gIiIiICArMCA8IDgwPiBDbGFzc1dpdGhJbmhlcml0YW5jZUFuZENsYXNzTWVt
YmVyCiAgICswIDwgMzI+ICAgICBWaXJ0dWFsSW5oZXJpdGluZ0EgVmlydHVhbEluaGVyaXRpbmdB
CiAgICswIDwgIDg+ICAgICAgICBfX3Z0YmxfcHRyX3R5cGUgKiBfdnB0cgpAQCAtMjM5LDcgKzIz
Miw3IEBAIFBhZGRpbmcgcGVyY2VudGFnZTogMzEuMjUgJSIiIgogICAgICAgICBhY3R1YWxfbGF5
b3V0ID0gZGVidWdnZXJfaW5zdGFuY2UubGF5b3V0X2Zvcl9jbGFzc25hbWUoJ0NsYXNzV2l0aElu
aGVyaXRhbmNlQW5kQ2xhc3NNZW1iZXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVYUEVD
VEVEX1JFU1VMVCwgYWN0dWFsX2xheW91dC5hc19zdHJpbmcoKSkKIAotICAgIGRlZiBzZXJpYWxf
dGVzdF9EZXJpdmVkQ2xhc3NXaXRoSW5kaXJlY3RWaXJ0dWFsSW5oZXJpdGFuY2Uoc2VsZik6Cisg
ICAgZGVmIHRlc3RfRGVyaXZlZENsYXNzV2l0aEluZGlyZWN0VmlydHVhbEluaGVyaXRhbmNlKHNl
bGYpOgogICAgICAgICBFWFBFQ1RFRF9SRVNVTFQgPSAiIiIgICswIDwgNzI+IERlcml2ZWRDbGFz
c1dpdGhJbmRpcmVjdFZpcnR1YWxJbmhlcml0YW5jZQogICArMCA8IDY0PiAgICAgQ2xhc3NXaXRo
VmlydHVhbEluaGVyaXRhbmNlIENsYXNzV2l0aFZpcnR1YWxJbmhlcml0YW5jZQogICArMCA8IDMy
PiAgICAgICAgIFZpcnR1YWxJbmhlcml0aW5nQSBWaXJ0dWFsSW5oZXJpdGluZ0EKQEAgLTI2Niw3
ICsyNTksNyBAQCBQYWRkaW5nIHBlcmNlbnRhZ2U6IDI1LjAwICUiIiIKICAgICAgICAgYWN0dWFs
X2xheW91dCA9IGRlYnVnZ2VyX2luc3RhbmNlLmxheW91dF9mb3JfY2xhc3NuYW1lKCdEZXJpdmVk
Q2xhc3NXaXRoSW5kaXJlY3RWaXJ0dWFsSW5oZXJpdGFuY2UnKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKEVYUEVDVEVEX1JFU1VMVCwgYWN0dWFsX2xheW91dC5hc19zdHJpbmcoKSkKIAotICAg
IGRlZiBzZXJpYWxfdGVzdF9DbGFzc1dpdGhDbGFzc01lbWJlcnMoc2VsZik6CisgICAgZGVmIHRl
c3RfQ2xhc3NXaXRoQ2xhc3NNZW1iZXJzKHNlbGYpOgogICAgICAgICBFWFBFQ1RFRF9SRVNVTFQg
PSAiIiIgICswIDwgNzI+IENsYXNzV2l0aENsYXNzTWVtYmVycwogICArMCA8ICAxPiAgIGJvb2wg
Ym9vbE1lbWJlcgogICArMSA8ICAzPiAgIDxQQURESU5HOiAzIGJ5dGVzPgpAQCAtMjk1LDcgKzI4
OCw3IEBAIFBhZGRpbmcgcGVyY2VudGFnZTogMzguODkgJSIiIgogICAgICAgICBhY3R1YWxfbGF5
b3V0ID0gZGVidWdnZXJfaW5zdGFuY2UubGF5b3V0X2Zvcl9jbGFzc25hbWUoJ0NsYXNzV2l0aENs
YXNzTWVtYmVycycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVhQRUNURURfUkVTVUxULCBh
Y3R1YWxfbGF5b3V0LmFzX3N0cmluZygpKQogCi0gICAgZGVmIHNlcmlhbF90ZXN0X0NsYXNzV2l0
aEJpdGZpZWxkcyhzZWxmKToKKyAgICBkZWYgdGVzdF9DbGFzc1dpdGhCaXRmaWVsZHMoc2VsZik6
CiAgICAgICAgIEVYUEVDVEVEX1JFU1VMVCA9ICIiIiAgKzAgPCAxMj4gQ2xhc3NXaXRoQml0Zmll
bGRzCiAgICswIDwgIDE+ICAgYm9vbCBib29sTWVtYmVyCiAgICsxIDwgOjE+ICAgdW5zaWduZWQg
aW50IGJpdGZpZWxkMSA6IDEKQEAgLTMxNiw3ICszMDksNyBAQCBQYWRkaW5nIHBlcmNlbnRhZ2U6
IDQxLjY3ICUiIiIKICAgICAgICAgYWN0dWFsX2xheW91dCA9IGRlYnVnZ2VyX2luc3RhbmNlLmxh
eW91dF9mb3JfY2xhc3NuYW1lKCdDbGFzc1dpdGhCaXRmaWVsZHMnKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKEVYUEVDVEVEX1JFU1VMVCwgYWN0dWFsX2xheW91dC5hc19zdHJpbmcoKSkKIAot
ICAgIGRlZiBzZXJpYWxfdGVzdF9DbGFzc1dpdGhQYWRkZWRCaXRmaWVsZHMoc2VsZik6CisgICAg
ZGVmIHRlc3RfQ2xhc3NXaXRoUGFkZGVkQml0ZmllbGRzKHNlbGYpOgogICAgICAgICBFWFBFQ1RF
RF9SRVNVTFQgPSAiIiIgICswIDwgMTY+IENsYXNzV2l0aFBhZGRlZEJpdGZpZWxkcwogICArMCA8
ICAxPiAgIGJvb2wgYm9vbE1lbWJlcgogICArMSA8IDoxPiAgIHVuc2lnbmVkIGludCBiaXRmaWVs
ZDEgOiAxCkBAIC0zMzgsNyArMzMxLDcgQEAgUGFkZGluZyBwZXJjZW50YWdlOiA1MC4wMCAlIiIi
CiAgICAgICAgIGFjdHVhbF9sYXlvdXQgPSBkZWJ1Z2dlcl9pbnN0YW5jZS5sYXlvdXRfZm9yX2Ns
YXNzbmFtZSgnQ2xhc3NXaXRoUGFkZGVkQml0ZmllbGRzJykKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChFWFBFQ1RFRF9SRVNVTFQsIGFjdHVhbF9sYXlvdXQuYXNfc3RyaW5nKCkpCiAKLSAgICBk
ZWYgc2VyaWFsX3Rlc3RfTWVtYmVySGFzQml0ZmllbGRQYWRkaW5nKHNlbGYpOgorICAgIGRlZiB0
ZXN0X01lbWJlckhhc0JpdGZpZWxkUGFkZGluZyhzZWxmKToKICAgICAgICAgRVhQRUNURURfUkVT
VUxUID0gIiIiICArMCA8IDI0PiBNZW1iZXJIYXNCaXRmaWVsZFBhZGRpbmcKICAgKzAgPCAxNj4g
ICAgIENsYXNzV2l0aFBhZGRlZEJpdGZpZWxkcyBiaXRmaWVsZE1lbWJlcgogICArMCA8ICAxPiAg
ICAgICBib29sIGJvb2xNZW1iZXIKQEAgLTM2NCw3ICszNTcsNyBAQCBQYWRkaW5nIHBlcmNlbnRh
Z2U6IDYyLjUwICUiIiIKICAgICAgICAgYWN0dWFsX2xheW91dCA9IGRlYnVnZ2VyX2luc3RhbmNl
LmxheW91dF9mb3JfY2xhc3NuYW1lKCdNZW1iZXJIYXNCaXRmaWVsZFBhZGRpbmcnKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKEVYUEVDVEVEX1JFU1VMVCwgYWN0dWFsX2xheW91dC5hc19zdHJp
bmcoKSkKIAotICAgIGRlZiBzZXJpYWxfdGVzdF9Jbmhlcml0c0Zyb21DbGFzc1dpdGhQYWRkZWRC
aXRmaWVsZHMoc2VsZik6CisgICAgZGVmIHRlc3RfSW5oZXJpdHNGcm9tQ2xhc3NXaXRoUGFkZGVk
Qml0ZmllbGRzKHNlbGYpOgogICAgICAgICBFWFBFQ1RFRF9SRVNVTFQgPSAiIiIgICswIDwgMTY+
IEluaGVyaXRzRnJvbUNsYXNzV2l0aFBhZGRlZEJpdGZpZWxkcwogICArMCA8IDE2PiAgICAgQ2xh
c3NXaXRoUGFkZGVkQml0ZmllbGRzIENsYXNzV2l0aFBhZGRlZEJpdGZpZWxkcwogICArMCA8ICAx
PiAgICAgICBib29sIGJvb2xNZW1iZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYl93ZWJr
aXRfdW5pdHRlc3QucHkgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5CmluZGV4
IDg2NWM5N2FmNTdiZjc1MDI2YTRkNzdjMmViNDUxNWYwZGYxYWE0M2EuLmRiZTY0YjhkYTc5ZGE2
ZjIzYmZlZGJlNzg1MzVlMTAxZmQyZmFkOGIgMTAwNzU1Ci0tLSBhL1Rvb2xzL2xsZGIvbGxkYl93
ZWJraXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5w
eQpAQCAtMzEsMTEgKzMxLDEwIEBAIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAotZnJv
bSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCiAKICMgUnVuIGp1c3QgdGhlIHRl
c3RzIGluIHRoaXMgZmlsZSB3aXRoIC4vVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5IGxsZGJf
d2Via2l0X3VuaXR0ZXN0CiAKLSMgV2UgY2FjaGUgdGhlIGxsZGIgZGVidWcgc2Vzc2lvbiBzdGF0
ZSBzbyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBpdCBhZ2FpbiBmb3IgZWFjaCBjYWxsIHRvIGEgc2Vy
aWFsX3Rlc3RfIG1ldGhvZC4KKyMgV2UgY2FjaGUgdGhlIGxsZGIgZGVidWcgc2Vzc2lvbiBzdGF0
ZSBzbyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBpdCBhZ2FpbiBmb3IgZWFjaCBjYWxsIHRvIGEgdGVz
dF8gbWV0aG9kLgogIyBXZSBzdG9yZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyB0aGF0IHdl
IGNhbiBkZWxldGUgdGhpcyBjYWNoZWQgc3RhdGUgb24gZXhpdCgzKS4KICMgRklYTUU6IFJlbW92
ZSB0aGlzIG9uY2UgdGVzdC13ZWJraXRweSBzdXBwb3J0cyBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1
cmVzIChpLmUuIHNldFVwQ2xhc3MoKS9zZXRVcE1vZHVsZSgpCiAjIGFyZSBjYWxsZWQgZXhhY3Rs
eSBvbmNlIHBlciBjbGFzcy9tb2R1bGUpLgpAQCAtNTMsMTcgKzUyLDE0IEBAIGRlZiBkZXN0cm95
X2NhY2hlZF9kZWJ1Z19zZXNzaW9uKCk6CiBjbGFzcyBMTERCRGVidWdTZXNzaW9uKG9iamVjdCk6
CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldHVwKGNscyk6Ci0gICAgICAgIExMREJfV0VC
S0lUX1RFU1RFUl9OQU1FID0gJ2xsZGJXZWJLaXRUZXN0ZXInCiAgICAgICAgIEJSRUFLX0ZPUl9U
RVNUSU5HX0ZVTkNUSU9OX05BTUUgPSAnYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycycK
IAogICAgICAgICBjbHMuc2JEZWJ1Z2dlciA9IGxsZGIuU0JEZWJ1Z2dlci5DcmVhdGUoKQogICAg
ICAgICBjbHMuc2JEZWJ1Z2dlci5TZXRBc3luYyhGYWxzZSkKIAotICAgICAgICBob3N0ID0gU3lz
dGVtSG9zdCgpCi0gICAgICAgIGNvbmZpZyA9IENvbmZpZyhob3N0LmV4ZWN1dGl2ZSwgaG9zdC5m
aWxlc3lzdGVtKQotICAgICAgICBjbHMubGxkYldlYktpdFRlc3RlckV4ZWN1dGFibGUgPSBvcy5w
YXRoLmpvaW4oY29uZmlnLmJ1aWxkX2RpcmVjdG9yeShjb25maWcuZGVmYXVsdF9jb25maWd1cmF0
aW9uKCkpLCBMTERCX1dFQktJVF9URVNURVJfTkFNRSkKKyAgICAgICAgY2xzLmxsZGJXZWJLaXRU
ZXN0ZXJFeGVjdXRhYmxlID0gc3RyKG9zLmVudmlyb25bJ0xMREJfV0VCS0lUX1RFU1RFUl9FWEVD
VVRBQkxFJ10pCiAKLSAgICAgICAgY2xzLnNiVGFyZ2V0ID0gY2xzLnNiRGVidWdnZXIuQ3JlYXRl
VGFyZ2V0KHN0cihjbHMubGxkYldlYktpdFRlc3RlckV4ZWN1dGFibGUpKQorICAgICAgICBjbHMu
c2JUYXJnZXQgPSBjbHMuc2JEZWJ1Z2dlci5DcmVhdGVUYXJnZXQoY2xzLmxsZGJXZWJLaXRUZXN0
ZXJFeGVjdXRhYmxlKQogICAgICAgICBhc3NlcnQgY2xzLnNiVGFyZ2V0CiAgICAgICAgIGNscy5z
YlRhcmdldC5CcmVha3BvaW50Q3JlYXRlQnlOYW1lKEJSRUFLX0ZPUl9URVNUSU5HX0ZVTkNUSU9O
X05BTUUsIGNscy5zYlRhcmdldC5HZXRFeGVjdXRhYmxlKCkuR2V0RmlsZW5hbWUoKSkKIApAQCAt
ODcsNiArODMsMTAgQEAgY2xhc3MgTExEQkRlYnVnU2Vzc2lvbihvYmplY3QpOgogCiAKIGNsYXNz
IFRlc3RTdW1tYXJ5UHJvdmlkZXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgc2hvdWxkU2tpcChjbHMpOgorICAgICAgICByZXR1cm4gbm90IFN5c3RlbUhv
c3QoKS5wbGF0Zm9ybS5pc19tYWMoKQorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVw
Q2xhc3MoY2xzKToKICAgICAgICAgZ2xvYmFsIGNhY2hlZF9kZWJ1Z19zZXNzaW9uCkBAIC0xMDUs
NjUgKzEwNSw2NSBAQCBjbGFzcyBUZXN0U3VtbWFyeVByb3ZpZGVycyh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAKICAgICAjIE1BUks6IFdURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyIHRlc3QgY2Fz
ZXMKIAotICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9u
dWxsX3N0cmluZyhzZWxmKToKKyAgICBkZWYgdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92
aWRlcl9udWxsX3N0cmluZyhzZWxmKToKICAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldU
RlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdh
TnVsbFN0cmluZ0ltcGwnKSwge30pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwg
InsgbGVuZ3RoID0gMCwgaXM4Yml0ID0gMSwgY29udGVudHMgPSAnJyB9IikKIAotICAgIGRlZiBz
ZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcoc2Vs
Zik6CisgICAgZGVmIHRlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfZW1wdHlfc3Ry
aW5nKHNlbGYpOgogICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9T
dW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuRW1wdHlTdHJpbmdJ
bXBsJyksIHt9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9
IDAsIGlzOGJpdCA9IDEsIGNvbnRlbnRzID0gJycgfSIpCiAKLSAgICBkZWYgc2VyaWFsX3Rlc3Rf
V1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmcoc2VsZik6CisgICAgZGVm
IHRlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmcoc2VsZik6CiAg
ICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRl
cihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW44Qml0U3RyaW5nSW1wbCcpLCB7fSkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSA4LCBpczhiaXQgPSAx
LCBjb250ZW50cyA9ICdyXFx4ZTlzdW1cXHhlOScgfSIpCiAKLSAgICBkZWYgc2VyaWFsX3Rlc3Rf
V1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKHNlbGYpOgorICAgIGRl
ZiB0ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyXzE2Yml0X3N0cmluZyhzZWxmKToK
ICAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3Zp
ZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhMTZCaXRTdHJpbmdJbXBsJyksIHt9KQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksIHUieyBsZW5ndGggPSAxMywgaXM4Yml0
ID0gMCwgY29udGVudHMgPSAnXFx1MTY4MENhcHB1Y2Npbm9cXHUxNjgwXFx4MDAnIH0iKQogCiAg
ICAgIyBNQVJLOiBXVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyIHRlc3QgY2FzZXMKIAotICAgIGRl
ZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5nKHNlbGYp
OgorICAgIGRlZiB0ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfbnVsbF9zdHJpbmcoc2Vs
Zik6CiAgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFyeVByb3Zp
ZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhTnVsbFN0cmluZycpLCB7fSkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBjb250ZW50cyA9ICcn
IH0iKQogCi0gICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfZW1w
dHlfc3RyaW5nKHNlbGYpOgorICAgIGRlZiB0ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJf
ZW1wdHlfc3RyaW5nKHNlbGYpOgogICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3Ry
aW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW5FbXB0eVN0
cmluZycpLCB7fSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGgg
PSAwLCBjb250ZW50cyA9ICcnIH0iKQogCi0gICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ19T
dW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmcoc2VsZik6CisgICAgZGVmIHRlc3RfV1RGU3RyaW5n
X1N1bW1hcnlQcm92aWRlcl84Yml0X3N0cmluZyhzZWxmKToKICAgICAgICAgc3VtbWFyeSA9IGxs
ZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFy
aWFibGUoJ2FuOEJpdFN0cmluZycpLCB7fSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1t
YXJ5LCAieyBsZW5ndGggPSA4LCBjb250ZW50cyA9ICdyXFx4ZTlzdW1cXHhlOScgfSIpCiAKLSAg
ICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmco
c2VsZik6CisgICAgZGVmIHRlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJp
bmcoc2VsZik6CiAgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFy
eVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhMTZCaXRTdHJpbmcnKSwge30p
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgdSJ7IGxlbmd0aCA9IDEzLCBjb250
ZW50cyA9ICdcXHUxNjgwQ2FwcHVjY2lub1xcdTE2ODBcXHgwMCcgfSIpCiAKICAgICAjIE1BUks6
IFdURlZlY3Rvcl9TdW1tYXJ5UHJvdmlkZXIgdGVzdCBjYXNlcwogCi0gICAgZGVmIHNlcmlhbF90
ZXN0X1dURlZlY3RvclByb3ZpZGVyX2VtcHR5X3ZlY3RvcihzZWxmKToKKyAgICBkZWYgdGVzdF9X
VEZWZWN0b3JQcm92aWRlcl9lbXB0eV92ZWN0b3Ioc2VsZik6CiAgICAgICAgIHZhcmlhYmxlID0g
c2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuRW1wdHlWZWN0b3InKTsKICAgICAgICAgc3Vt
bWFyeSA9IGxsZGJfd2Via2l0LldURlZlY3Rvcl9TdW1tYXJ5UHJvdmlkZXIodmFyaWFibGUsIHt9
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IHNpemUgPSAwLCBjYXBhY2l0
eSA9IDAgfSIpCiAKLSAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGVmVjdG9yUHJvdmlkZXJfdmVjdG9y
X3NpemVfYW5kX2NhcGFjaXR5KHNlbGYpOgorICAgIGRlZiB0ZXN0X1dURlZlY3RvclByb3ZpZGVy
X3ZlY3Rvcl9zaXplX2FuZF9jYXBhY2l0eShzZWxmKToKICAgICAgICAgdmFyaWFibGUgPSBzZWxm
Ll9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYVZlY3RvcldpdGhPbmVJdGVtJyk7CiAgICAgICAgIHN1
bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZWZWN0b3JfU3VtbWFyeVByb3ZpZGVyKHZhcmlhYmxlLCB7
fSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBzaXplID0gMSwgY2FwYWNp
dHkgPSAxNiB9IikKIAogICAgICMgTUFSSzogV1RGSGFzaE1hcF9TdW1tYXJ5UHJvdmlkZXIgYW5k
IFdURkhhc2hTZXRfU3VtbWFyeVByb3ZpZGVyIHRlc3QgY2FzZXMKIAotICAgIGRlZiBzZXJpYWxf
dGVzdF9XVEZIYXNoTWFwX3RhYmxlc2l6ZV9hbmRfc2l6ZShzZWxmKToKKyAgICBkZWYgdGVzdF9X
VEZIYXNoTWFwX3RhYmxlc2l6ZV9hbmRfc2l6ZShzZWxmKToKICAgICAgICAgdmFyaWFibGUgPSBz
ZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnaGFzaE1hcE9mSW50cycpCiAgICAgICAgIHN1bW1h
cnkgPSBsbGRiX3dlYmtpdC5XVEZIYXNoTWFwX1N1bW1hcnlQcm92aWRlcih2YXJpYWJsZSwge30p
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgdGFibGVTaXplID0gOCwga2V5
Q291bnQgPSAyIH0iKQogCi0gICAgZGVmIHNlcmlhbF90ZXN0X1dURkhhc2hNYXBfb2ZfdmVjdG9y
c190YWJsZXNpemVfYW5kX3NpemUoc2VsZik6CisgICAgZGVmIHRlc3RfV1RGSGFzaE1hcF9vZl92
ZWN0b3JzX3RhYmxlc2l6ZV9hbmRfc2l6ZShzZWxmKToKICAgICAgICAgdmFyaWFibGUgPSBzZWxm
Ll9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnaGFzaE1hcE9mVmVjdG9ycycpCiAgICAgICAgIHN1bW1h
cnkgPSBsbGRiX3dlYmtpdC5XVEZIYXNoTWFwX1N1bW1hcnlQcm92aWRlcih2YXJpYWJsZSwge30p
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgdGFibGVTaXplID0gOCwga2V5
Q291bnQgPSAxIH0iKQogCi0gICAgZGVmIHNlcmlhbF90ZXN0X1dURkhhc2hTZXRfdGFibGVzaXpl
X2FuZF9zaXplKHNlbGYpOgorICAgIGRlZiB0ZXN0X1dURkhhc2hTZXRfdGFibGVzaXplX2FuZF9z
aXplKHNlbGYpOgogICAgICAgICB2YXJpYWJsZSA9IHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxl
KCdoYXNoU2V0T2ZJbnRzJykKICAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURkhhc2hT
ZXRfU3VtbWFyeVByb3ZpZGVyKHZhcmlhYmxlLCB7fSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdW1tYXJ5LCAieyB0YWJsZVNpemUgPSA4LCBrZXlDb3VudCA9IDEgfSIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355684</attachid>
            <date>2018-11-26 15:26:00 -0800</date>
            <delta_ts>2018-11-26 15:39:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187916-20181126152559.patch</filename>
            <type>text/plain</type>
            <size>13310</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzODUyNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI3IEBACisyMDE4LTExLTI2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgdGVzdC1sbGRiLXdlYmtpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS80NjI1ODk1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb3ZlIGxvZ2ljIHRvIHJ1biBsbGRiIHRlc3RzIG91dCBvZiB3ZWJraXRweSBhbmQgaW50
byBhIHNlcGFyYXRlIHNjcmlwdC4KKworICAgICAgICAqIFNjcmlwdHMvdGVzdC1sbGRiLXdlYmtp
dDogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKFRlc3Rlcik6CisgICAgICAgIChU
ZXN0ZXIuX19pbml0X18pOgorICAgICAgICAoVGVzdGVyLmFkZF90cmVlKToKKyAgICAgICAgKFRl
c3Rlci5fcGFyc2VfYXJncyk6CisgICAgICAgIChUZXN0ZXIucnVuKToKKyAgICAgICAgKFRlc3Rl
ci5ydW4ucmVjdXJzaXZlX3Rlc3RfbmFtZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dGVzdC9tYWluLnB5OgorICAgICAgICAobWFpbik6CisgICAgICAgIChUZXN0ZXIuX3BhcnNlX2Fy
Z3MpOgorICAgICAgICAoVGVzdGVyLnJ1bik6CisgICAgICAgIChUZXN0ZXIuX3J1bl90ZXN0cyk6
CisKIDIwMTgtMTEtMjYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZW5hbWUgV0tXZWJWaWV3Ll9zYWZlQnJvd3NpbmdXYXJuaW5nRm9yVGVz
dGluZyB0byBfc2FmZUJyb3dzaW5nV2FybmluZyB0byB1c2UgaXQgZm9yIG1vcmUgdGhhbiB0ZXN0
aW5nCkluZGV4OiBUb29scy9TY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy90ZXN0LWxsZGItd2Via2l0CShub25leGlzdGVudCkKKysrIFRvb2xzL1Nj
cmlwdHMvdGVzdC1sbGRiLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2MyBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisj
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBsb2dnaW5nCitpbXBv
cnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNvbmZpZ3VyZV9sb2dnaW5nCitmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAorZnJvbSB3ZWJr
aXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIHdlYmtpdHB5LnRlc3QuZmluZGVy
IGltcG9ydCBGaW5kZXIKK2Zyb20gd2Via2l0cHkudGVzdC5wcmludGVyIGltcG9ydCBQcmludGVy
Citmcm9tIHdlYmtpdHB5LnRlc3QucnVubmVyIGltcG9ydCBSdW5uZXIsIHVuaXRfdGVzdF9uYW1l
CisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworCitkZWYgbWFpbigpOgor
ICAgIGNvbmZpZ3VyZV9sb2dnaW5nKGxvZ2dlcj1fbG9nKQorCisgICAgZ2xvYmFsIFdFQktJVF9S
T09UCisgICAgdXAgPSBvcy5wYXRoLmRpcm5hbWUKKyAgICBXRUJLSVRfUk9PVCA9IHVwKHVwKHVw
KG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKSkKKworICAgIGhvc3QgPSBTeXN0ZW1Ib3N0KCkK
KyAgICBsbGRiX3B5dGhvbl9kaXJlY3RvcnkgPSBob3N0LnBhdGhfdG9fbGxkYl9weXRob25fZGly
ZWN0b3J5KCkKKyAgICBpZiBub3QgaG9zdC5maWxlc3lzdGVtLmlzZGlyKGxsZGJfcHl0aG9uX2Rp
cmVjdG9yeSk6CisgICAgICAgIF9sb2cuZXJyb3IoIkNvdWxkIG5vdCBmaW5kIHBhdGggdG8gbGxk
Yi5weSAne30nLiIuZm9ybWF0KGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkpCisgICAgICAgIHJldHVy
biAtMQorCisgICAgaWYgbGxkYl9weXRob25fZGlyZWN0b3J5IG5vdCBpbiBzeXMucGF0aDoKKyAg
ICAgICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkKKworICAgIHRlc3Rl
ciA9IFRlc3Rlcihob3N0PWhvc3QpCisgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbihX
RUJLSVRfUk9PVCwgJ1Rvb2xzJywgJ2xsZGInKSkKKworICAgIHJldHVybiB0ZXN0ZXIucnVuKCkK
KworCitjbGFzcyBUZXN0ZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD1O
b25lKToKKyAgICAgICAgc2VsZi5ob3N0ID0gaG9zdCBvciBTeXN0ZW1Ib3N0KCkKKyAgICAgICAg
c2VsZi5maW5kZXIgPSBGaW5kZXIoc2VsZi5ob3N0LmZpbGVzeXN0ZW0pCisgICAgICAgIHNlbGYu
cHJpbnRlciA9IFByaW50ZXIoc3lzLnN0ZGVycikKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IE5v
bmUKKworICAgIGRlZiBhZGRfdHJlZShzZWxmLCB0b3BfZGlyZWN0b3J5LCBzdGFydGluZ19zdWJk
aXJlY3Rvcnk9Tm9uZSk6CisgICAgICAgIHNlbGYuZmluZGVyLmFkZF90cmVlKHRvcF9kaXJlY3Rv
cnksIHN0YXJ0aW5nX3N1YmRpcmVjdG9yeSkKKworICAgIGRlZiBfcGFyc2VfYXJncyhzZWxmLCBh
cmd2PU5vbmUpOgorICAgICAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9
J3VzYWdlOiAlcHJvZyBbb3B0aW9uc10gW2FyZ3MuLi5dJykKKworICAgICAgICBjb25maWd1cmF0
aW9uX2dyb3VwID0gb3B0cGFyc2UuT3B0aW9uR3JvdXAocGFyc2VyLCAnQ29uZmlndXJhdGlvbiBv
cHRpb25zJykKKyAgICAgICAgY29uZmlndXJhdGlvbl9ncm91cC5hZGRfb3B0aW9uKCctLWRlYnVn
JywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdEZWJ1ZycsIGRlc3Q9ImNvbmZpZ3VyYXRp
b24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU2V0IHRo
ZSBjb25maWd1cmF0aW9uIHRvIERlYnVnJykKKyAgICAgICAgY29uZmlndXJhdGlvbl9ncm91cC5h
ZGRfb3B0aW9uKCctLXJlbGVhc2UnLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9J1JlbGVh
c2UnLCBkZXN0PSJjb25maWd1cmF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J1NldCB0aGUgY29uZmlndXJhdGlvbiB0byBSZWxlYXNlJykKKyAgICAg
ICAgcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAoY29uZmlndXJhdGlvbl9ncm91cCkKKworICAgICAg
ICBwYXJzZXIuYWRkX29wdGlvbignLS1uby1idWlsZCcsIGRlc3Q9J2J1aWxkJywgYWN0aW9uPSdz
dG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nU2tpcCBidWlsZGluZyBsbGRiV2ViS2l0VGVzdGVyJykKKyAgICAgICAgcGFyc2VyLmFkZF9v
cHRpb24oJy0tcm9vdCcsIGRlZmF1bHQ9Tm9uZSwgaGVscD0nVXNlIGxsZGJXZWJLaXRUZXN0ZXIg
YXQgdGhlIHByb3ZpZGVkIGJ1aWxkIGZvbGRlcicpCisKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRp
b24oJy1wJywgJy0tcGFzcy10aHJvdWdoJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nYmUgZGVidWdnZXIgZnJpZW5k
bHkgYnkgcGFzc2luZyBjYXB0dXJlZCBvdXRwdXQgdGhyb3VnaCB0byB0aGUgc3lzdGVtJykKKyAg
ICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1xJywgJy0tcXVpZXQnLCBhY3Rpb249J3N0b3JlX3Ry
dWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4g
cXVpZXRseSAoZXJyb3JzLCB3YXJuaW5ncywgYW5kIHByb2dyZXNzIG9ubHkpJykKKyAgICAgICAg
cGFyc2VyLmFkZF9vcHRpb24oJy10JywgJy0tdGltaW5nJywgYWN0aW9uPSdzdG9yZV90cnVlJywg
ZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzcGxheSBw
ZXItdGVzdCBleGVjdXRpb24gdGltZSAoaW1wbGllcyAtLXZlcmJvc2UpJykKKyAgICAgICAgcGFy
c2VyLmFkZF9vcHRpb24oJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nY291bnQnLCBkZWZhdWx0
PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ZlcmJvc2Ugb3V0cHV0IChzcGVj
aWZ5IG9uY2UgZm9yIGluZGl2aWR1YWwgdGVzdCByZXN1bHRzLCB0d2ljZSBmb3IgZGVidWcgbWVz
c2FnZXMpJykKKworICAgICAgICBwYXJzZXIuZXBpbG9nID0gKCdbYXJncy4uLl0gaXMgYW4gb3B0
aW9uYWwgbGlzdCBvZiBtb2R1bGVzLCB0ZXN0X2NsYXNzZXMsIG9yIGluZGl2aWR1YWwgdGVzdHMu
ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnSWYgbm8gYXJncyBhcmUgZ2l2ZW4sIGFsbCB0
aGUgdGVzdHMgd2lsbCBiZSBydW4uJykKKworICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlX2Fy
Z3MoYXJndikKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgIHNlbGYuX29wdGlvbnMsIGFy
Z3MgPSBzZWxmLl9wYXJzZV9hcmdzKCkKKyAgICAgICAgc2VsZi5wcmludGVyLmNvbmZpZ3VyZShz
ZWxmLl9vcHRpb25zKQorICAgICAgICBzZWxmLmZpbmRlci5jbGVhbl90cmVlcygpCisKKyAgICAg
ICAgbmFtZXMgPSBzZWxmLmZpbmRlci5maW5kX25hbWVzKGFyZ3MsIEZhbHNlKQorICAgICAgICBp
ZiBub3QgbmFtZXM6CisgICAgICAgICAgICBfbG9nLmVycm9yKCdObyB0ZXN0cyB0byBydW4nKQor
ICAgICAgICAgICAgcmV0dXJuIC0xCisKKyAgICAgICAgc3lzLnBhdGggPSBzZWxmLmZpbmRlci5h
ZGRpdGlvbmFsX3BhdGhzKHN5cy5wYXRoKSArIHN5cy5wYXRoCisKKyAgICAgICAgY29uZmlnID0g
Q29uZmlnKHNlbGYuaG9zdC5leGVjdXRpdmUsIHNlbGYuaG9zdC5maWxlc3lzdGVtKQorICAgICAg
ICBjb25maWd1cmF0aW9uX3RvX3VzZSA9IHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiBvciBj
b25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkKKworICAgICAgICBpZiBub3Qgc2VsZi5fb3B0
aW9ucy5yb290IGFuZCBzZWxmLl9vcHRpb25zLmJ1aWxkOgorICAgICAgICAgICAgc2VsZi5wcmlu
dGVyLndyaXRlX3VwZGF0ZSgnQnVpbGRpbmcgbGxkYldlYktpdFRlc3RlciAuLi4nKQorICAgICAg
ICAgICAgYnVpbGRfbGxkYndlYmtpdHRlc3RlciA9IHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0uam9p
bihXRUJLSVRfUk9PVCwgJ1Rvb2xzJywgJ1NjcmlwdHMnLCAnYnVpbGQtbGxkYndlYmtpdHRlc3Rl
cicpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5ob3N0LmV4ZWN1dGl2
ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoCisgICAgICAgICAgICAgICAgICAgIFtidWlsZF9sbGRi
d2Via2l0dGVzdGVyLCBjb25maWcuZmxhZ19mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
X3RvX3VzZSldLAorICAgICAgICAgICAgICAgICAgICBxdWlldD0obm90IGJvb2woc2VsZi5fb3B0
aW9ucy52ZXJib3NlKSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IFNj
cmlwdEVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcihlLm1lc3NhZ2Vfd2l0
aF9vdXRwdXQob3V0cHV0X2xpbWl0PU5vbmUpKQorICAgICAgICAgICAgICAgIHJldHVybiAtMQor
CisgICAgICAgIG9zLmVudmlyb25bJ0xMREJfV0VCS0lUX1RFU1RFUl9FWEVDVVRBQkxFJ10gPSBz
dHIoc2VsZi5maW5kZXIuZmlsZXN5c3RlbS5qb2luKAorICAgICAgICAgICAgc2VsZi5fb3B0aW9u
cy5yb290IG9yIGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoY29uZmlndXJhdGlvbl90b191c2UpLAor
ICAgICAgICAgICAgJ2xsZGJXZWJLaXRUZXN0ZXInLAorICAgICAgICApKQorICAgICAgICBpZiBu
b3Qgc2VsZi5maW5kZXIuZmlsZXN5c3RlbS5leGlzdHMob3MuZW52aXJvblsnTExEQl9XRUJLSVRf
VEVTVEVSX0VYRUNVVEFCTEUnXSk6CisgICAgICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQgdG8g
ZmluZCBsbGRiV2ViS2l0VGVzdGVyIGF0IHt9LicuZm9ybWF0KG9zLmVudmlyb25bJ0xMREJfV0VC
S0lUX1RFU1RFUl9FWEVDVVRBQkxFJ10pKQorICAgICAgICAgICAgcmV0dXJuIC0xCisKKyAgICAg
ICAgZGVmIHJlY3Vyc2l2ZV90ZXN0X25hbWVzKHN1aXRlKToKKyAgICAgICAgICAgIG5hbWVzID0g
W10KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc3VpdGUsICdfdGVzdHMnKToKKyAgICAgICAgICAg
ICAgICBmb3IgdCBpbiBzdWl0ZS5fdGVzdHM6CisgICAgICAgICAgICAgICAgICAgIG5hbWVzLmV4
dGVuZChyZWN1cnNpdmVfdGVzdF9uYW1lcyh0KSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgbmFtZXMuYXBwZW5kKHVuaXRfdGVzdF9uYW1lKHN1aXRlKSkKKyAgICAgICAgICAg
IHJldHVybiBuYW1lcworCisgICAgICAgIHRlc3RzID0gW10KKyAgICAgICAgbG9hZGVyID0gdW5p
dHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIGxvYWRlci50ZXN0TWV0aG9kUHJlZml4ID0gJ3Nl
cmlhbF90ZXN0XycKKyAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgICAgICB0ZXN0
cy5leHRlbmQocmVjdXJzaXZlX3Rlc3RfbmFtZXMobG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKG5h
bWUsIE5vbmUpKSkKKworICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCJSdW5uaW5n
IHRoZSB0ZXN0cyAuLi4iKQorICAgICAgICBzZWxmLnByaW50ZXIubnVtX3Rlc3RzID0gbGVuKHRl
c3RzKQorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHRlc3RfcnVubmVyID0g
UnVubmVyKHNlbGYucHJpbnRlciwgbG9hZGVyKQorICAgICAgICB0ZXN0X3J1bm5lci5ydW4odGVz
dHMsIDEpCisgICAgICAgIHNlbGYucHJpbnRlci5wcmludF9yZXN1bHQodGltZS50aW1lKCkgLSBz
dGFydCkKKworICAgICAgICByZXR1cm4gc2VsZi5wcmludGVyLm51bV9lcnJvcnMgKyBzZWxmLnBy
aW50ZXIubnVtX2ZhaWx1cmVzCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lz
LmV4aXQobWFpbigpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy90ZXN0LWxs
ZGItd2Via2l0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMK
KyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90ZXN0L21haW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90ZXN0L21haW4ucHkJKHJldmlzaW9uIDIzODUxNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGVzdC9tYWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NiwxNiArNjYsNiBAQCBkZWYgbWFp
bigpOgogICAgIGlmIG5vdCAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpIG9yIHN5cy5w
bGF0Zm9ybSA9PSAnY3lnd2luJyk6CiAgICAgICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpv
aW4oX3dlYmtpdF9yb290LCAnU291cmNlJywgJ1dlYktpdCcsICdTY3JpcHRzJyksICd3ZWJraXQn
KQogCi0gICAgbGxkYl9weXRob25fZGlyZWN0b3J5ID0gX2hvc3QucGF0aF90b19sbGRiX3B5dGhv
bl9kaXJlY3RvcnkoKQotICAgIGlmIG9zLnBhdGguaXNkaXIobGxkYl9weXRob25fZGlyZWN0b3J5
KToKLSAgICAgICAgaWYgbGxkYl9weXRob25fZGlyZWN0b3J5IG5vdCBpbiBzeXMucGF0aDoKLSAg
ICAgICAgICAgIHN5cy5wYXRoLmFwcGVuZChsbGRiX3B5dGhvbl9kaXJlY3RvcnkpCi0gICAgICAg
IHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnbGxk
YicpKQotICAgICAgICB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cyA9IFRydWUKLSAgICBlbHNl
OgotICAgICAgICBfbG9nLmluZm8oIlNraXBwaW5nIGxsZGJfd2Via2l0IHRlc3RzOyBjb3VsZCBu
b3QgZmluZCBwYXRoIHRvIGxsZGIucHkgJ3t9Jy4iLmZvcm1hdChsbGRiX3B5dGhvbl9kaXJlY3Rv
cnkpKQotICAgICAgICB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cyA9IEZhbHNlCi0KICAgICB0
ZXN0ZXIuc2tpcCgoJ3dlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtX3VuaXR0ZXN0Jywp
LCAnYXJlIHJlYWxseSwgcmVhbGx5LCBzbG93JywgMzE4MTgpCiAgICAgaWYgc3lzLnBsYXRmb3Jt
LnN0YXJ0c3dpdGgoJ3dpbicpOgogICAgICAgICB0ZXN0ZXIuc2tpcCgoJ3dlYmtpdHB5LmNvbW1v
bi5jaGVja291dCcsICd3ZWJraXRweS5jb21tb24uY29uZmlnJywgJ3dlYmtpdHB5LnRvb2wnKSwg
J2ZhaWwgaG9ycmlibHkgb24gd2luMzInLCA1NDUyNikKQEAgLTkzLDcgKzgzLDcgQEAgZGVmIG1h
aW4oKToKICAgICBlbHNlOgogICAgICAgICBfbG9nLmluZm8oJ1NraXBwaW5nIFF1ZXVlU3RhdHVz
U2VydmVyIHRlc3RzOyB0aGUgR29vZ2xlIEFwcEVuZ2luZSBQeXRob24gU0RLIGlzIG5vdCBpbnN0
YWxsZWQuJykKIAotICAgIHJldHVybiBub3QgdGVzdGVyLnJ1bih3aWxsX3J1bl9sbGRiX3dlYmtp
dF90ZXN0cz13aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cykKKyAgICByZXR1cm4gbm90IHRlc3Rl
ci5ydW4oKQogCiAKIGRlZiBfcHJpbnRfcmVzdWx0c19hc19qc29uKHN0cmVhbSwgYWxsX3Rlc3Rf
bmFtZXMsIGZhaWx1cmVzLCBlcnJvcnMpOgpAQCAtMTIzLDE0ICsxMTMsNiBAQCBjbGFzcyBUZXN0
ZXIob2JqZWN0KToKICAgICBkZWYgX3BhcnNlX2FyZ3Moc2VsZiwgYXJndj1Ob25lKToKICAgICAg
ICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSd1c2FnZTogJXByb2cgW29w
dGlvbnNdIFthcmdzLi4uXScpCiAKLSAgICAgICAgIyAgQ29uZmlndXJhdGlvbiBvcHRpb25zIG9u
bHkgZWZmZWN0IHRoZSBidWlsZGluZyBvZiBsbGRiV2ViS2l0VGVzdGVyLgotICAgICAgICBjb25m
aWd1cmF0aW9uX2dyb3VwID0gb3B0cGFyc2UuT3B0aW9uR3JvdXAocGFyc2VyLCAnQ29uZmlndXJh
dGlvbiBvcHRpb25zJykKLSAgICAgICAgY29uZmlndXJhdGlvbl9ncm91cC5hZGRfb3B0aW9uKCct
LWRlYnVnJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdEZWJ1ZycsIGRlc3Q9ImNvbmZp
Z3VyYXRpb24iLAotICAgICAgICAgICAgaGVscD0nU2V0IHRoZSBjb25maWd1cmF0aW9uIHRvIERl
YnVnJykKLSAgICAgICAgY29uZmlndXJhdGlvbl9ncm91cC5hZGRfb3B0aW9uKCctLXJlbGVhc2Un
LCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9J1JlbGVhc2UnLCBkZXN0PSJjb25maWd1cmF0
aW9uIiwKLSAgICAgICAgICAgIGhlbHA9J1NldCB0aGUgY29uZmlndXJhdGlvbiB0byBSZWxlYXNl
JykKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAoY29uZmlndXJhdGlvbl9ncm91cCkK
LQogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLWEnLCAnLS1hbGwnLCBhY3Rpb249J3N0b3Jl
X3RydWUnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdy
dW4gYWxsIHRoZSB0ZXN0cycpCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctYycsICctLWNv
dmVyYWdlJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKQEAgLTE1OCw3ICsx
NDAsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gcGFyc2VyLnBh
cnNlX2FyZ3MoYXJndikKIAotICAgIGRlZiBydW4oc2VsZiwgd2lsbF9ydW5fbGxkYl93ZWJraXRf
dGVzdHM9RmFsc2UpOgorICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIHNlbGYuX29wdGlvbnMs
IGFyZ3MgPSBzZWxmLl9wYXJzZV9hcmdzKCkKICAgICAgICAgc2VsZi5wcmludGVyLmNvbmZpZ3Vy
ZShzZWxmLl9vcHRpb25zKQogCkBAIC0xNjksOSArMTUxLDkgQEAgY2xhc3MgVGVzdGVyKG9iamVj
dCk6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCdObyB0ZXN0cyB0byBydW4nKQogICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl90ZXN0cyhuYW1lcywg
d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMpCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fdGVz
dHMobmFtZXMpCiAKLSAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCBuYW1lcywgd2lsbF9ydW5fbGxk
Yl93ZWJraXRfdGVzdHMpOgorICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzKToKICAgICAg
ICAgIyBNYWtlIHN1cmUgUFlUSE9OUEFUSCBpcyBzZXQgdXAgcHJvcGVybHkuCiAgICAgICAgIHN5
cy5wYXRoID0gc2VsZi5maW5kZXIuYWRkaXRpb25hbF9wYXRocyhzeXMucGF0aCkgKyBzeXMucGF0
aAogCkBAIC0xODEsMjEgKzE2Myw2IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAgICBm
cm9tIHdlYmtpdHB5LnRoaXJkcGFydHkgaW1wb3J0IGF1dG9pbnN0YWxsX2V2ZXJ5dGhpbmcKICAg
ICAgICAgYXV0b2luc3RhbGxfZXZlcnl0aGluZygpCiAKLSAgICAgICAgaWYgd2lsbF9ydW5fbGxk
Yl93ZWJraXRfdGVzdHM6Ci0gICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdC
dWlsZGluZyBsbGRiV2ViS2l0VGVzdGVyIC4uLicpCi0gICAgICAgICAgICBidWlsZF9sbGRid2Vi
a2l0dGVzdGVyID0gc2VsZi5maW5kZXIuZmlsZXN5c3RlbS5qb2luKF93ZWJraXRfcm9vdCwgJ1Rv
b2xzJywgJ1NjcmlwdHMnLCAnYnVpbGQtbGxkYndlYmtpdHRlc3RlcicpCi0gICAgICAgICAgICBj
b25maWcgPSBDb25maWcoX2hvc3QuZXhlY3V0aXZlLCBzZWxmLmZpbmRlci5maWxlc3lzdGVtKQot
ICAgICAgICAgICAgY29uZmlndXJhdGlvbl90b191c2UgPSBzZWxmLl9vcHRpb25zLmNvbmZpZ3Vy
YXRpb24gb3IgY29uZmlnLmRlZmF1bHRfY29uZmlndXJhdGlvbigpCi0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgX2hvc3QuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChb
YnVpbGRfbGxkYndlYmtpdHRlc3RlciwgY29uZmlnLmZsYWdfZm9yX2NvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbl90b191c2UpXSwgcXVpZXQ9KG5vdCBib29sKHNlbGYuX29wdGlvbnMudmVyYm9z
ZSkpKQotICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6Ci0gICAgICAgICAgICAg
ICAgX2xvZy5lcnJvcihlLm1lc3NhZ2Vfd2l0aF9vdXRwdXQob3V0cHV0X2xpbWl0PU5vbmUpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgb3MuZW52aXJvblsnTExE
Ql9XRUJLSVRfVEVTVEVSX0VYRUNVVEFCTEUnXSA9IHN0cihzZWxmLmZpbmRlci5maWxlc3lzdGVt
LmpvaW4oY29uZmlnLmJ1aWxkX2RpcmVjdG9yeShjb25maWd1cmF0aW9uX3RvX3VzZSksICdsbGRi
V2ViS2l0VGVzdGVyJykpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5maW5kZXIuZmlsZXN5c3Rl
bS5leGlzdHMob3MuZW52aXJvblsnTExEQl9XRUJLSVRfVEVTVEVSX0VYRUNVVEFCTEUnXSk6Ci0g
ICAgICAgICAgICAgICAgX2xvZy5lcnJvcignRmFpbGVkIHRvIGZpbmQgbGxkYldlYktpdFRlc3Rl
ci4nKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCiAgICAgICAgIGlmIHNlbGYuX29w
dGlvbnMuY292ZXJhZ2U6CiAgICAgICAgICAgICBfbG9nLndhcm5pbmcoIkNoZWNraW5nIGNvZGUg
Y292ZXJhZ2UsIHNvIHJ1bm5pbmcgdGhpbmdzIHNlcmlhbGx5IikKICAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzID0gMQo=
</data>
<flag name="review"
          id="372749"
          type_id="1"
          status="-"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385151</attachid>
            <date>2019-12-09 08:19:14 -0800</date>
            <delta_ts>2019-12-09 09:44:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187916-20191209081912.patch</filename>
            <type>text/plain</type>
            <size>16253</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MzI4OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE5LTEyLTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgdGVzdC1sbGRiLXdlYmtpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3QtbGxkYjogQWRkZWQuCisg
ICAgICAgIChOb0FjdGlvbik6IEFyZ3BhcnNlIGFjdGlvbiB3aGljaCBzdXBwb3J0IC0tPHZhcmlh
YmxlPiBhbmQgLS1uby08dmFyaWFibGU+LgorICAgICAgICAoTGxkYlRlc3Rlcik6IFdyYXBwZXIg
YXJvdW5kIHdlYmtpdHB5J3MgVGVzdGVyIGNsYXNzLgorICAgICAgICAoTGxkYlRlc3Rlci5wYXJz
ZV9hcmdzKTogU3BlY2lhbGl6ZWQgYXJncGFyc2UgZm9yIGxsZGIgdGVzdHMuCisgICAgICAgIChM
bGRiVGVzdGVyLnJ1bik6IFNldHVwIGVudmlyb25tZW50IGFuZCBidWlsZCBsbGRiIHRlc3QgcnVu
bmVyLgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21h
aW4ucHk6CisgICAgICAgIChtYWluKTogUmVtb3ZlIGxsZGIgdGVzdGluZyBjb2RlLgorICAgICAg
ICAoVGVzdGVyLl9wYXJzZV9hcmdzKTogRGl0dG8uCisgICAgICAgIChUZXN0ZXIucnVuKTogRGl0
dG8uCisgICAgICAgIChUZXN0ZXIuX3J1bl90ZXN0cyk6IERpdHRvLgorICAgICAgICAoVGVzdGVy
Ll90ZXN0X25hbWVzKTogRGl0dG8uCisgICAgICAgIChfc3VwcG9ydHNfYnVpbGRpbmdfYW5kX3J1
bm5pbmdfbGxkYl90ZXN0cyk6IERlbGV0ZWQuCisKIDIwMTktMTItMDkgIHlvdWVubiBmYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBvcHRpb24gdG8gY2FwdHVyZSBh
dWRpbyBpbiBHUFUgcHJvY2VzcwpJbmRleDogVG9vbHMvU2NyaXB0cy90ZXN0LWxsZGIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy90ZXN0LWxsZGIJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMv
U2NyaXB0cy90ZXN0LWxsZGIJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzQgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKGMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBv
cnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhv
c3QgaW1wb3J0IEhvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1w
b3J0IFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcK
K2Zyb20gd2Via2l0cHkudGVzdC5tYWluIGltcG9ydCBUZXN0ZXIKKworRVhDRVBUSU9OQUxfRVhJ
VF9TVEFUVVMgPSAtMQorCisKK2NsYXNzIE5vQWN0aW9uKGFyZ3BhcnNlLkFjdGlvbik6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbl9zdHJpbmdzLCBkZXN0LCAqKmt3YXJncyk6CisgICAg
ICAgIHN1cGVyKE5vQWN0aW9uLCBzZWxmKS5fX2luaXRfXyhvcHRpb25fc3RyaW5ncywgZGVzdCwg
bmFyZ3M9MCwgKiprd2FyZ3MpCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2VyLCBuYW1l
c3BhY2UsIHZhbHVlcywgb3B0aW9uX3N0cmluZyk6CisgICAgICAgIHNldGF0dHIobmFtZXNwYWNl
LCBzZWxmLmRlc3QsIEZhbHNlIGlmIG9wdGlvbl9zdHJpbmcuc3RhcnRzd2l0aCgnLS1ubycpIGVs
c2UgVHJ1ZSkKKworCitjbGFzcyBMbGRiVGVzdGVyKFRlc3Rlcik6CisKKyAgICBkZWYgcGFyc2Vf
YXJncyhzZWxmKToKKyAgICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVz
Y3JpcHRpb249J0Egc2NyaXB0IHdoaWNoIHRlc3RzIFdlYktpdFwncyBsbGRiIG1hY3JvcyBhbmQg
aW50ZWdyYXRpb24nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWJ1aWxkJywgJy0t
bm8tYnVpbGQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2J1aWxkJywgYWN0
aW9uPU5vQWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwg
aGVscD0nRW5hYmxlIG9yIGRpc2FibGUgYnVpbGRpbmcgYmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3Qn
KQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJvb3QnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9J3Jvb3QnLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J1BhdGggdG8gYSBkaXJlY3RvcnkgY29u
dGFpbmluZyB0aGUgZXhlY3V0YWJsZXMgbmVlZGVkIHRvIHJ1biB0ZXN0cy4nKQorICAgICAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcmJvc2UnLCBhY3Rpb249J2NvdW50JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PTAsIGhlbHA9J1ZlcmJvc2Ugb3V0cHV0
IChzcGVjaWZ5IG9uY2UgZm9yIGluZGl2aWR1YWwgdGVzdCByZXN1bHRzLCB0d2ljZSBmb3IgZGVi
dWcgbWVzc2FnZXMpJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10aW1p
bmcnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9RmFsc2UsIGhlbHA9J0Rpc3BsYXkgcGVyLXRlc3QgZXhlY3V0aW9uIHRpbWUgKGltcGxp
ZXMgLS12ZXJib3NlKScpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgJy0tcXVp
ZXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9RmFsc2UsIGhlbHA9J1J1biBxdWlldGx5IChlcnJvcnMsIHdhcm5pbmdzLCBhbmQgcHJv
Z3Jlc3Mgb25seSknKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcCcsICctLXBhc3Mt
dGhyb3VnaCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0nQmUgZGVidWdnZXIgZnJpZW5kbHkgYnkgcGFzc2luZyBj
YXB0dXJlZCBvdXRwdXQgdGhyb3VnaCB0byB0aGUgc3lzdGVtJykKKyAgICAgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgnLS1kZWJ1ZycsIGNvbnN0PSdkZWJ1ZycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbicsIGFjdGlvbj0nc3RvcmVfY29uc3QnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nQWxpYXMgZm9yIGNv
bmZpZ3VyYXRpb249ZGVidWcuJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZWxl
YXNlJywgY29uc3Q9J3JlbGVhc2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9
J2NvbmZpZ3VyYXRpb24nLCBhY3Rpb249J3N0b3JlX2NvbnN0JywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J0FsaWFzIGZvciBjb25maWd1cmF0aW9uPXJl
bGVhc2UuJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jb25maWd1cmF0aW9uJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjb25maWd1cmF0aW9uJywgYWN0aW9u
PSdzdG9yZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLCBoZWxw
PSdTdG9yZSBjb25maWd1cmF0aW9uIHRvIHRlc3QuJykKKyAgICAgICAgcmV0dXJuIHBhcnNlci5w
YXJzZV9hcmdzKCkKKworICAgIGRlZiBydW4oc2VsZiwgaG9zdD1Ob25lLCB3ZWJraXRfcm9vdD1O
b25lKToKKyAgICAgICAgaG9zdCA9IGhvc3Qgb3IgSG9zdCgpCisgICAgICAgIHNlbGYuX29wdGlv
bnMgPSBzZWxmLnBhcnNlX2FyZ3MoKQorICAgICAgICBzZWxmLnByaW50ZXIuY29uZmlndXJlKHNl
bGYuX29wdGlvbnMpCisgICAgICAgIHNlbGYuZmluZGVyLmNsZWFuX3RyZWVzKCkKKworICAgICAg
ICBuYW1lcyA9IHNlbGYuZmluZGVyLmZpbmRfbmFtZXMoW10sIFRydWUpCisgICAgICAgIGlmIG5v
dCBuYW1lczoKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJ05vIHRlc3RzIHRvIHJ1bicpCisgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBjb25maWcgPSBDb25maWcoaG9zdC5leGVj
dXRpdmUsIHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0pCisgICAgICAgIGNvbmZpZ3VyYXRpb25fdG9f
dXNlID0gc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uIG9yIGNvbmZpZy5kZWZhdWx0X2NvbmZp
Z3VyYXRpb24oKQorCisgICAgICAgIGlmIChub3Qgc2VsZi5fb3B0aW9ucy5yb290IGFuZCBzZWxm
Ll9vcHRpb25zLmJ1aWxkIGlzIE5vbmUpIG9yIHNlbGYuX29wdGlvbnMuYnVpbGQ6CisgICAgICAg
ICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdCdWlsZGluZyBsbGRiV2ViS2l0VGVzdGVy
IC4uLicpCisgICAgICAgICAgICBidWlsZF9sbGRid2Via2l0dGVzdGVyID0gc2VsZi5maW5kZXIu
ZmlsZXN5c3RlbS5qb2luKHdlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycsICdidWlsZC1s
bGRid2Via2l0dGVzdGVyJykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBob3N0
LmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoCisgICAgICAgICAgICAgICAgICAgIFti
dWlsZF9sbGRid2Via2l0dGVzdGVyLCBjb25maWcuZmxhZ19mb3JfY29uZmlndXJhdGlvbihjb25m
aWd1cmF0aW9uX3RvX3VzZSldLAorICAgICAgICAgICAgICAgICAgICBxdWlldD0obm90IGJvb2wo
c2VsZi5fb3B0aW9ucy52ZXJib3NlKSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcihlLm1l
c3NhZ2Vfd2l0aF9vdXRwdXQob3V0cHV0X2xpbWl0PU5vbmUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQorCisgICAgICAgIG9zLmVudmlyb25bJ0xMREJfV0VCS0lUX1RFU1RFUl9FWEVD
VVRBQkxFJ10gPSBzdHIoc2VsZi5maW5kZXIuZmlsZXN5c3RlbS5qb2luKGNvbmZpZy5idWlsZF9k
aXJlY3RvcnkoY29uZmlndXJhdGlvbl90b191c2UpLCAnbGxkYldlYktpdFRlc3RlcicpKQorICAg
ICAgICBpZiBub3Qgc2VsZi5maW5kZXIuZmlsZXN5c3RlbS5leGlzdHMob3MuZW52aXJvblsnTExE
Ql9XRUJLSVRfVEVTVEVSX0VYRUNVVEFCTEUnXSk6CisgICAgICAgICAgICBfbG9nLmVycm9yKCdG
YWlsZWQgdG8gZmluZCBsbGRiV2ViS2l0VGVzdGVyLicpCisgICAgICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RzKG5hbWVzKQorCisKK2RlZiBtYWlu
KCk6CisgICAgdGVzdGVyID0gTGxkYlRlc3RlcigpCisgICAgaG9zdCA9IEhvc3QoKQorICAgIGxs
ZGJfcHl0aG9uX2RpcmVjdG9yeSA9IGhvc3QucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3Rvcnko
KQorICAgIGlmIG5vdCBob3N0LmZpbGVzeXN0ZW0uaXNkaXIobGxkYl9weXRob25fZGlyZWN0b3J5
KToKKyAgICAgICAgdGVzdGVyLnBhcnNlX2FyZ3MoKQorICAgICAgICBwcmludCgnbGxkYiB0ZXN0
cyBhcmUgb25seSBzdXBwb3J0ZWQgb24gbWFjT1MnKQorICAgICAgICByZXR1cm4gMQorCisgICAg
dXAgPSBob3N0LmZpbGVzeXN0ZW0uZGlybmFtZQorICAgIHdlYmtpdF9yb290ID0gdXAodXAodXAo
aG9zdC5maWxlc3lzdGVtLmFic3BhdGgoX19maWxlX18pKSkpCisKKyAgICBpZiBsbGRiX3B5dGhv
bl9kaXJlY3Rvcnkgbm90IGluIHN5cy5wYXRoOgorICAgICAgICBzeXMucGF0aC5hcHBlbmQobGxk
Yl9weXRob25fZGlyZWN0b3J5KQorICAgIHRlc3Rlci5hZGRfdHJlZShob3N0LmZpbGVzeXN0ZW0u
am9pbih3ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKworICAgIHJldHVybiBub3QgdGVz
dGVyLnJ1bihob3N0PWhvc3QsIHdlYmtpdF9yb290PXdlYmtpdF9yb290KQorCisKK2lmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogVG9vbHMvU2NyaXB0cy90ZXN0LWxsZGIKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1
dGFibGUKIyMgLTAsMCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQkocmV2aXNpb24gMjUzMjg2KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDcgKzQxLDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbQogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KIGZy
b20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9u
LnVuaWNvZGVfY29tcGF0aWJpbGl0eSBpbXBvcnQgU3RyaW5nSU8KLWZyb20gd2Via2l0cHkucG9y
dC5jb25maWcgaW1wb3J0IENvbmZpZwogZnJvbSB3ZWJraXRweS50ZXN0LmZpbmRlciBpbXBvcnQg
RmluZGVyCiBmcm9tIHdlYmtpdHB5LnRlc3QucHJpbnRlciBpbXBvcnQgUHJpbnRlcgogZnJvbSB3
ZWJraXRweS50ZXN0LnJ1bm5lciBpbXBvcnQgUnVubmVyLCB1bml0X3Rlc3RfbmFtZQpAQCAtNjgs
MTkgKzY3LDYgQEAgZGVmIG1haW4oKToKICAgICBpZiBub3QgKHN5cy5wbGF0Zm9ybS5zdGFydHN3
aXRoKCd3aW4nKSBvciBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicpOgogICAgICAgICB0ZXN0ZXIu
YWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9vdCwgJ1NvdXJjZScsICdXZWJLaXQnLCAn
U2NyaXB0cycpLCAnd2Via2l0JykKIAotICAgIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSA9IF9ob3N0
LnBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KCkKLSAgICBpZiBub3QgX3N1cHBvcnRzX2J1
aWxkaW5nX2FuZF9ydW5uaW5nX2xsZGJfdGVzdHMoKToKLSAgICAgICAgX2xvZy5pbmZvKCJTa2lw
cGluZyBsbGRiX3dlYmtpdCB0ZXN0czsgbm90IHlldCBzdXBwb3J0ZWQgb24gbWFjT1MgQ2F0YWxp
bmEuIikKLSAgICAgICAgd2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMgPSBGYWxzZQotICAgIGVs
aWYgbm90IG9zLnBhdGguaXNkaXIobGxkYl9weXRob25fZGlyZWN0b3J5KToKLSAgICAgICAgX2xv
Zy5pbmZvKCJTa2lwcGluZyBsbGRiX3dlYmtpdCB0ZXN0czsgY291bGQgbm90IGZpbmQgcGF0aCB0
byBsbGRiLnB5ICd7fScuIi5mb3JtYXQobGxkYl9weXRob25fZGlyZWN0b3J5KSkKLSAgICAgICAg
d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMgPSBGYWxzZQotICAgIGVsc2U6Ci0gICAgICAgIGlm
IGxsZGJfcHl0aG9uX2RpcmVjdG9yeSBub3QgaW4gc3lzLnBhdGg6Ci0gICAgICAgICAgICBzeXMu
cGF0aC5hcHBlbmQobGxkYl9weXRob25fZGlyZWN0b3J5KQotICAgICAgICB0ZXN0ZXIuYWRkX3Ry
ZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKLSAgICAgICAg
d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMgPSBUcnVlCi0KICAgICB0ZXN0ZXIuc2tpcCgoJ3dl
YmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtX3VuaXR0ZXN0JywpLCAnYXJlIHJlYWxseSwg
cmVhbGx5LCBzbG93JywgMzE4MTgpCiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dp
bicpOgogICAgICAgICB0ZXN0ZXIuc2tpcCgoJ3dlYmtpdHB5LmNvbW1vbi5jaGVja291dCcsICd3
ZWJraXRweS5jb21tb24uY29uZmlnJywgJ3dlYmtpdHB5LnRvb2wnKSwgJ2ZhaWwgaG9ycmlibHkg
b24gd2luMzInLCA1NDUyNikKQEAgLTk4LDE2ICs4NCw3IEBAIGRlZiBtYWluKCk6CiAgICAgZWxz
ZToKICAgICAgICAgX2xvZy5pbmZvKCdTa2lwcGluZyBRdWV1ZVN0YXR1c1NlcnZlciB0ZXN0czsg
dGhlIEdvb2dsZSBBcHBFbmdpbmUgUHl0aG9uIFNESyBpcyBub3QgaW5zdGFsbGVkLicpCiAKLSAg
ICByZXR1cm4gbm90IHRlc3Rlci5ydW4od2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHM9d2lsbF9y
dW5fbGxkYl93ZWJraXRfdGVzdHMpCi0KLQotZGVmIF9zdXBwb3J0c19idWlsZGluZ19hbmRfcnVu
bmluZ19sbGRiX3Rlc3RzKCk6Ci0gICAgIyBGSVhNRTogUmVtb3ZlIHdoZW4gdGVzdC1sbGRiIGlz
IGluIGl0cyBvd24gc2NyaXB0Ci0gICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg3OTE2Ci0gICAgYnVpbGRfdmVyc2lvbiA9IF9ob3N0LnBsYXRmb3JtLmJ1aWxk
X3ZlcnNpb24oKQotICAgIGlmIGJ1aWxkX3ZlcnNpb24gaXMgTm9uZToKLSAgICAgICAgcmV0dXJu
IEZhbHNlCi0gICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gbm90IHRlc3Rlci5ydW4oKQogCiAK
IGRlZiBfcHJpbnRfcmVzdWx0c19hc19qc29uKHN0cmVhbSwgYWxsX3Rlc3RfbmFtZXMsIGZhaWx1
cmVzLCBlcnJvcnMpOgpAQCAtMTM3LDE0ICsxMTQsNiBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToK
ICAgICBkZWYgX3BhcnNlX2FyZ3Moc2VsZiwgYXJndj1Ob25lKToKICAgICAgICAgcGFyc2VyID0g
b3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSd1c2FnZTogJXByb2cgW29wdGlvbnNdIFthcmdz
Li4uXScpCiAKLSAgICAgICAgIyAgQ29uZmlndXJhdGlvbiBvcHRpb25zIG9ubHkgZWZmZWN0IHRo
ZSBidWlsZGluZyBvZiBsbGRiV2ViS2l0VGVzdGVyLgotICAgICAgICBjb25maWd1cmF0aW9uX2dy
b3VwID0gb3B0cGFyc2UuT3B0aW9uR3JvdXAocGFyc2VyLCAnQ29uZmlndXJhdGlvbiBvcHRpb25z
JykKLSAgICAgICAgY29uZmlndXJhdGlvbl9ncm91cC5hZGRfb3B0aW9uKCctLWRlYnVnJywgYWN0
aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdEZWJ1ZycsIGRlc3Q9ImNvbmZpZ3VyYXRpb24iLAot
ICAgICAgICAgICAgaGVscD0nU2V0IHRoZSBjb25maWd1cmF0aW9uIHRvIERlYnVnJykKLSAgICAg
ICAgY29uZmlndXJhdGlvbl9ncm91cC5hZGRfb3B0aW9uKCctLXJlbGVhc2UnLCBhY3Rpb249J3N0
b3JlX2NvbnN0JywgY29uc3Q9J1JlbGVhc2UnLCBkZXN0PSJjb25maWd1cmF0aW9uIiwKLSAgICAg
ICAgICAgIGhlbHA9J1NldCB0aGUgY29uZmlndXJhdGlvbiB0byBSZWxlYXNlJykKLSAgICAgICAg
cGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAoY29uZmlndXJhdGlvbl9ncm91cCkKLQogICAgICAgICB1
cGxvYWRfZ3JvdXAgPSBvcHRwYXJzZS5PcHRpb25Hcm91cChwYXJzZXIsICdVcGxvYWQgT3B0aW9u
cycpCiAgICAgICAgIHVwbG9hZF9ncm91cC5hZGRfb3B0aW9ucyh1cGxvYWRfb3B0aW9ucygpKQog
ICAgICAgICBwYXJzZXIuYWRkX29wdGlvbl9ncm91cCh1cGxvYWRfZ3JvdXApCkBAIC0xNzYsNyAr
MTQ1LDcgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJuIHBhcnNlci5w
YXJzZV9hcmdzKGFyZ3YpCiAKLSAgICBkZWYgcnVuKHNlbGYsIHdpbGxfcnVuX2xsZGJfd2Via2l0
X3Rlc3RzPUZhbHNlKToKKyAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICBzZWxmLl9vcHRpb25z
LCBhcmdzID0gc2VsZi5fcGFyc2VfYXJncygpCiAgICAgICAgIHNlbGYucHJpbnRlci5jb25maWd1
cmUoc2VsZi5fb3B0aW9ucykKIApAQCAtMTg3LDkgKzE1Niw5IEBAIGNsYXNzIFRlc3RlcihvYmpl
Y3QpOgogICAgICAgICAgICAgX2xvZy5lcnJvcignTm8gdGVzdHMgdG8gcnVuJykKICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIHJldHVybiBzZWxmLl9ydW5fdGVzdHMobmFtZXMs
IHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzKQorICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rl
c3RzKG5hbWVzKQogCi0gICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwgbmFtZXMsIHdpbGxfcnVuX2xs
ZGJfd2Via2l0X3Rlc3RzKToKKyAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCBuYW1lcyk6CiAgICAg
ICAgICMgTWFrZSBzdXJlIFBZVEhPTlBBVEggaXMgc2V0IHVwIHByb3Blcmx5LgogICAgICAgICBz
eXMucGF0aCA9IHNlbGYuZmluZGVyLmFkZGl0aW9uYWxfcGF0aHMoc3lzLnBhdGgpICsgc3lzLnBh
dGgKIApAQCAtMjAwLDIzICsxNjksOCBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAg
YXV0b2luc3RhbGxfZXZlcnl0aGluZygpCiAKICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGlt
ZSgpCi0gICAgICAgIGNvbmZpZyA9IENvbmZpZyhfaG9zdC5leGVjdXRpdmUsIHNlbGYuZmluZGVy
LmZpbGVzeXN0ZW0pCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fdG9fdXNlID0gc2VsZi5fb3B0aW9u
cy5jb25maWd1cmF0aW9uIG9yIGNvbmZpZy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKQotCi0gICAg
ICAgIGlmIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzOgotICAgICAgICAgICAgc2VsZi5wcmlu
dGVyLndyaXRlX3VwZGF0ZSgnQnVpbGRpbmcgbGxkYldlYktpdFRlc3RlciAuLi4nKQotICAgICAg
ICAgICAgYnVpbGRfbGxkYndlYmtpdHRlc3RlciA9IHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0uam9p
bihfd2Via2l0X3Jvb3QsICdUb29scycsICdTY3JpcHRzJywgJ2J1aWxkLWxsZGJ3ZWJraXR0ZXN0
ZXInKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIF9ob3N0LmV4ZWN1dGl2ZS5y
dW5fYW5kX3Rocm93X2lmX2ZhaWwoW2J1aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIsIGNvbmZpZy5mbGFn
X2Zvcl9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb25fdG9fdXNlKV0sIHF1aWV0PShub3QgYm9v
bChzZWxmLl9vcHRpb25zLnZlcmJvc2UpKSkKLSAgICAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJv
ciBhcyBlOgotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoZS5tZXNzYWdlX3dpdGhfb3V0cHV0
KG91dHB1dF9saW1pdD1Ob25lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAg
ICAgICAgIG9zLmVudmlyb25bJ0xMREJfV0VCS0lUX1RFU1RFUl9FWEVDVVRBQkxFJ10gPSBzdHIo
c2VsZi5maW5kZXIuZmlsZXN5c3RlbS5qb2luKGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoY29uZmln
dXJhdGlvbl90b191c2UpLCAnbGxkYldlYktpdFRlc3RlcicpKQotICAgICAgICAgICAgaWYgbm90
IHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0uZXhpc3RzKG9zLmVudmlyb25bJ0xMREJfV0VCS0lUX1RF
U1RFUl9FWEVDVVRBQkxFJ10pOgotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0ZhaWxlZCB0
byBmaW5kIGxsZGJXZWJLaXRUZXN0ZXIuJykKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
IAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdlOgorICAgICAgICBpZiBnZXRhdHRy
KHNlbGYuX29wdGlvbnMsICdjb3ZlcmFnZScsIEZhbHNlKToKICAgICAgICAgICAgIF9sb2cud2Fy
bmluZygiQ2hlY2tpbmcgY29kZSBjb3ZlcmFnZSwgc28gcnVubmluZyB0aGluZ3Mgc2VyaWFsbHki
KQogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMgPSAxCiAKQEAgLTI0
MSwyNiArMTk1LDI2IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAgICBzZWxmLnByaW50
ZXIubnVtX3Rlc3RzID0gbGVuKHBhcmFsbGVsX3Rlc3RzKSArIGxlbihzZXJpYWxfdGVzdHMpCiAg
ICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKICAgICAgICAgdGVzdF9ydW5uZXIgPSBSdW5uZXIo
c2VsZi5wcmludGVyLCBsb2FkZXIpCi0gICAgICAgIHRlc3RfcnVubmVyLnJ1bihwYXJhbGxlbF90
ZXN0cywgc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpCisgICAgICAgIHRlc3RfcnVubmVy
LnJ1bihwYXJhbGxlbF90ZXN0cywgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAnY2hpbGRfcHJvY2Vz
c2VzJywgMSkpCiAgICAgICAgIHRlc3RfcnVubmVyLnJ1bihzZXJpYWxfdGVzdHMsIDEpCiAgICAg
ICAgIGVuZF90aW1lID0gdGltZS50aW1lKCkKIAogICAgICAgICBzZWxmLnByaW50ZXIucHJpbnRf
cmVzdWx0KHRpbWUudGltZSgpIC0gc3RhcnQpCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5q
c29uOgorICAgICAgICBpZiBnZXRhdHRyKHNlbGYuX29wdGlvbnMsICdqc29uJywgRmFsc2UpOgog
ICAgICAgICAgICAgX3ByaW50X3Jlc3VsdHNfYXNfanNvbihzeXMuc3Rkb3V0LCBpdGVydG9vbHMu
Y2hhaW4ocGFyYWxsZWxfdGVzdHMsIHNlcmlhbF90ZXN0cyksIHRlc3RfcnVubmVyLmZhaWx1cmVz
LCB0ZXN0X3J1bm5lci5lcnJvcnMpCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5qc29uX2Zp
bGVfbmFtZToKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAnanNvbl9maWxlX25h
bWUnLCBOb25lKToKICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuanNvbl9maWxlX25hbWUgPSBv
cy5wYXRoLmFic3BhdGgoc2VsZi5fb3B0aW9ucy5qc29uX2ZpbGVfbmFtZSkKICAgICAgICAgICAg
IHdpdGggb3BlbihzZWxmLl9vcHRpb25zLmpzb25fZmlsZV9uYW1lLCAndycpIGFzIGpzb25fZmls
ZToKICAgICAgICAgICAgICAgICBfcHJpbnRfcmVzdWx0c19hc19qc29uKGpzb25fZmlsZSwgaXRl
cnRvb2xzLmNoYWluKHBhcmFsbGVsX3Rlc3RzLCBzZXJpYWxfdGVzdHMpLCB0ZXN0X3J1bm5lci5m
YWlsdXJlcywgdGVzdF9ydW5uZXIuZXJyb3JzKQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMu
Y292ZXJhZ2U6CisgICAgICAgIGlmIGdldGF0dHIoc2VsZi5fb3B0aW9ucywgJ2NvdmVyYWdlJywg
RmFsc2UpOgogICAgICAgICAgICAgY292LnN0b3AoKQogICAgICAgICAgICAgY292LnNhdmUoKQog
CiAgICAgICAgIGZhaWxlZF91cGxvYWRzID0gMAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJl
cG9ydF91cmxzOgorICAgICAgICBpZiBnZXRhdHRyKHNlbGYuX29wdGlvbnMsICdyZXBvcnRfdXJs
cycsIE5vbmUpOgogICAgICAgICAgICAgc2VsZi5wcmludGVyLm1ldGVyLndyaXRlbG4oJ1xuJykK
ICAgICAgICAgICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoJ1ByZXBhcmluZyB1cGxvYWQg
ZGF0YSAuLi4nKQogCkBAIC0yNzgsNyArMjMyLDcgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAg
ICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPV9ob3N0LnBsYXRmb3JtLm9zX25hbWUsCiAgICAg
ICAgICAgICAgICAgICAgIHZlcnNpb249c3RyKF9ob3N0LnBsYXRmb3JtLm9zX3ZlcnNpb24pLAog
ICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uX25hbWU9X2hvc3QucGxhdGZvcm0ub3NfdmVyc2lv
bl9uYW1lKCksCi0gICAgICAgICAgICAgICAgICAgIHN0eWxlPSdhc2FuJyBpZiBjb25maWcuYXNh
biBlbHNlIGNvbmZpZ3VyYXRpb25fdG9fdXNlLmxvd2VyKCksCisgICAgICAgICAgICAgICAgICAg
IHN0eWxlPSdyZWxlYXNlJywKICAgICAgICAgICAgICAgICAgICAgc2RrPV9ob3N0LnBsYXRmb3Jt
LmJ1aWxkX3ZlcnNpb24oKSwKICAgICAgICAgICAgICAgICAgICAgZmxhdm9yPXNlbGYuX29wdGlv
bnMucmVzdWx0X3JlcG9ydF9mbGF2b3IsCiAgICAgICAgICAgICAgICAgKSwKQEAgLTMwMCw3ICsy
NTQsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBmYWlsZWRfdXBs
b2FkcyA9IGZhaWxlZF91cGxvYWRzIGlmIHVwbG9hZC51cGxvYWQodXJsLCBsb2dfbGluZV9mdW5j
PXNlbGYucHJpbnRlci5tZXRlci53cml0ZWxuKSBlbHNlIChmYWlsZWRfdXBsb2FkcyArIDEpCiAg
ICAgICAgICAgICBzZWxmLnByaW50ZXIubWV0ZXIud3JpdGVsbignVXBsb2FkcyBjb21wbGV0ZWQh
JykKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdlOgorICAgICAgICBpZiBnZXRh
dHRyKHNlbGYuX29wdGlvbnMsICdjb3ZlcmFnZScsIEZhbHNlKToKICAgICAgICAgICAgIGNvdi5y
ZXBvcnQoc2hvd19taXNzaW5nPUZhbHNlKQogCiAgICAgICAgIHJldHVybiBub3Qgc2VsZi5wcmlu
dGVyLm51bV9lcnJvcnMgYW5kIG5vdCBzZWxmLnByaW50ZXIubnVtX2ZhaWx1cmVzIGFuZCBub3Qg
ZmFpbGVkX3VwbG9hZHMKQEAgLTMyMiw3ICsyNzYsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToK
ICAgICBkZWYgX3Rlc3RfbmFtZXMoc2VsZiwgbG9hZGVyLCBuYW1lcyk6CiAgICAgICAgIHBhcmFs
bGVsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzID0gWyd0ZXN0XyddCiAgICAgICAgIHNlcmlhbF90ZXN0
X21ldGhvZF9wcmVmaXhlcyA9IFsnc2VyaWFsX3Rlc3RfJ10KLSAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5pbnRlZ3JhdGlvbl90ZXN0czoKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRpb25z
LCAnaW50ZWdyYXRpb25fdGVzdHMnLCBOb25lKToKICAgICAgICAgICAgIHBhcmFsbGVsX3Rlc3Rf
bWV0aG9kX3ByZWZpeGVzLmFwcGVuZCgnaW50ZWdyYXRpb25fdGVzdF8nKQogICAgICAgICAgICAg
c2VyaWFsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzLmFwcGVuZCgnc2VyaWFsX2ludGVncmF0aW9uX3Rl
c3RfJykKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385159</attachid>
            <date>2019-12-09 09:44:25 -0800</date>
            <delta_ts>2019-12-09 17:22:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187916-20191209094425.patch</filename>
            <type>text/plain</type>
            <size>16326</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MzI5MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE5LTEyLTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgdGVzdC1sbGRiLXdlYmtpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQ6IEFk
ZGVkLgorICAgICAgICAoTm9BY3Rpb24pOiBBcmdwYXJzZSBhY3Rpb24gd2hpY2ggc3VwcG9ydCAt
LTx2YXJpYWJsZT4gYW5kIC0tbm8tPHZhcmlhYmxlPi4KKyAgICAgICAgKExsZGJUZXN0ZXIpOiBX
cmFwcGVyIGFyb3VuZCB3ZWJraXRweSdzIFRlc3RlciBjbGFzcy4KKyAgICAgICAgKExsZGJUZXN0
ZXIucGFyc2VfYXJncyk6IFNwZWNpYWxpemVkIGFyZ3BhcnNlIGZvciBsbGRiIHRlc3RzLgorICAg
ICAgICAoTGxkYlRlc3Rlci5ydW4pOiBTZXR1cCBlbnZpcm9ubWVudCBhbmQgYnVpbGQgbGxkYiB0
ZXN0IHJ1bm5lci4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dGVzdC9tYWluLnB5OgorICAgICAgICAobWFpbik6IFJlbW92ZSBsbGRiIHRlc3RpbmcgY29kZS4K
KyAgICAgICAgKFRlc3Rlci5fcGFyc2VfYXJncyk6IERpdHRvLgorICAgICAgICAoVGVzdGVyLnJ1
bik6IERpdHRvLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBEaXR0by4KKyAgICAgICAg
KFRlc3Rlci5fdGVzdF9uYW1lcyk6IERpdHRvLgorICAgICAgICAoX3N1cHBvcnRzX2J1aWxkaW5n
X2FuZF9ydW5uaW5nX2xsZGJfdGVzdHMpOiBEZWxldGVkLgorCiAyMDE5LTEyLTA5ICB5b3Vlbm4g
ZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gb3B0aW9uIHRvIGNh
cHR1cmUgYXVkaW8gaW4gR1BVIHByb2Nlc3MKSW5kZXg6IFRvb2xzL1NjcmlwdHMvdGVzdC1sbGRi
LXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQJKG5v
bmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy90ZXN0LWxsZGItd2Via2l0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTM0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0
IChjKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGlt
ZQorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0Citmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRw
eS5wb3J0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCitmcm9tIHdlYmtpdHB5LnRlc3QubWFpbiBpbXBv
cnQgVGVzdGVyCisKK0VYQ0VQVElPTkFMX0VYSVRfU1RBVFVTID0gLTEKKworCitjbGFzcyBOb0Fj
dGlvbihhcmdwYXJzZS5BY3Rpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25fc3Ry
aW5ncywgZGVzdCwgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihOb0FjdGlvbiwgc2VsZikuX19p
bml0X18ob3B0aW9uX3N0cmluZ3MsIGRlc3QsIG5hcmdzPTAsICoqa3dhcmdzKQorCisgICAgZGVm
IF9fY2FsbF9fKHNlbGYsIHBhcnNlciwgbmFtZXNwYWNlLCB2YWx1ZXMsIG9wdGlvbl9zdHJpbmcp
OgorICAgICAgICBzZXRhdHRyKG5hbWVzcGFjZSwgc2VsZi5kZXN0LCBGYWxzZSBpZiBvcHRpb25f
c3RyaW5nLnN0YXJ0c3dpdGgoJy0tbm8nKSBlbHNlIFRydWUpCisKKworY2xhc3MgTGxkYlRlc3Rl
cihUZXN0ZXIpOgorCisgICAgZGVmIHBhcnNlX2FyZ3Moc2VsZik6CisgICAgICAgIHBhcnNlciA9
IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdBIHNjcmlwdCB3aGljaCB0ZXN0
cyBXZWJLaXRcJ3MgbGxkYiBtYWNyb3MgYW5kIGludGVncmF0aW9uJykKKyAgICAgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgnLS1idWlsZCcsICctLW5vLWJ1aWxkJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXN0PSdidWlsZCcsIGFjdGlvbj1Ob0FjdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J0VuYWJsZSBvciBkaXNhYmxlIGJ1aWxk
aW5nIGxsZGIgdGVzdCBydW5uZXIgYmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3QgKGVuYWJsZWQgYnkg
ZGVmYXVsdCknKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJvb3QnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3Jvb3QnLCBhY3Rpb249J3N0b3JlJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J1BhdGggdG8gYSBkaXJl
Y3RvcnkgY29udGFpbmluZyB0aGUgZXhlY3V0YWJsZXMgbmVlZGVkIHRvIHJ1biB0ZXN0cy4nKQor
ICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcmJvc2UnLCBhY3Rpb249J2Nv
dW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PTAsIGhlbHA9J1ZlcmJv
c2Ugb3V0cHV0IChzcGVjaWZ5IG9uY2UgZm9yIGluZGl2aWR1YWwgdGVzdCByZXN1bHRzLCB0d2lj
ZSBmb3IgZGVidWcgbWVzc2FnZXMpJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXQn
LCAnLS10aW1pbmcnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J0Rpc3BsYXkgcGVyLXRlc3QgZXhlY3V0aW9uIHRp
bWUgKGltcGxpZXMgLS12ZXJib3NlKScpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1x
JywgJy0tcXVpZXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J1J1biBxdWlldGx5IChlcnJvcnMsIHdhcm5pbmdz
LCBhbmQgcHJvZ3Jlc3Mgb25seSknKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcCcs
ICctLXBhc3MtdGhyb3VnaCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQmUgZGVidWdnZXIgZnJpZW5kbHkgYnkg
cGFzc2luZyBjYXB0dXJlZCBvdXRwdXQgdGhyb3VnaCB0byB0aGUgc3lzdGVtJykKKyAgICAgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kZWJ1ZycsIGNvbnN0PSdkZWJ1ZycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbicsIGFjdGlvbj0nc3RvcmVfY29u
c3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nQWxp
YXMgZm9yIGNvbmZpZ3VyYXRpb249ZGVidWcuJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgnLS1yZWxlYXNlJywgY29uc3Q9J3JlbGVhc2UnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9J2NvbmZpZ3VyYXRpb24nLCBhY3Rpb249J3N0b3JlX2NvbnN0JywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J0FsaWFzIGZvciBjb25maWd1
cmF0aW9uPXJlbGVhc2UuJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jb25maWd1
cmF0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjb25maWd1cmF0aW9u
JywgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1O
b25lLCBoZWxwPSdTdG9yZSBjb25maWd1cmF0aW9uIHRvIHRlc3QuJykKKyAgICAgICAgcmV0dXJu
IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGRlZiBydW4oc2VsZiwgaG9zdD1Ob25lLCB3ZWJr
aXRfcm9vdD1Ob25lKToKKyAgICAgICAgaG9zdCA9IGhvc3Qgb3IgSG9zdCgpCisgICAgICAgIHNl
bGYuX29wdGlvbnMgPSBzZWxmLnBhcnNlX2FyZ3MoKQorICAgICAgICBzZWxmLnByaW50ZXIuY29u
ZmlndXJlKHNlbGYuX29wdGlvbnMpCisgICAgICAgIHNlbGYuZmluZGVyLmNsZWFuX3RyZWVzKCkK
KworICAgICAgICBuYW1lcyA9IHNlbGYuZmluZGVyLmZpbmRfbmFtZXMoW10sIFRydWUpCisgICAg
ICAgIGlmIG5vdCBuYW1lczoKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJ05vIHRlc3RzIHRvIHJ1
bicpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBjb25maWcgPSBDb25maWco
aG9zdC5leGVjdXRpdmUsIHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0pCisgICAgICAgIGNvbmZpZ3Vy
YXRpb25fdG9fdXNlID0gc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uIG9yIGNvbmZpZy5kZWZh
dWx0X2NvbmZpZ3VyYXRpb24oKQorCisgICAgICAgIGlmIChub3Qgc2VsZi5fb3B0aW9ucy5yb290
IGFuZCBzZWxmLl9vcHRpb25zLmJ1aWxkIGlzIE5vbmUpIG9yIHNlbGYuX29wdGlvbnMuYnVpbGQ6
CisgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdCdWlsZGluZyBsbGRiV2Vi
S2l0VGVzdGVyIC4uLicpCisgICAgICAgICAgICBidWlsZF9sbGRid2Via2l0dGVzdGVyID0gc2Vs
Zi5maW5kZXIuZmlsZXN5c3RlbS5qb2luKHdlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycs
ICdidWlsZC1sbGRid2Via2l0dGVzdGVyJykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg
ICAgICBob3N0LmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoCisgICAgICAgICAgICAg
ICAgICAgIFtidWlsZF9sbGRid2Via2l0dGVzdGVyLCBjb25maWcuZmxhZ19mb3JfY29uZmlndXJh
dGlvbihjb25maWd1cmF0aW9uX3RvX3VzZSldLAorICAgICAgICAgICAgICAgICAgICBxdWlldD0o
bm90IGJvb2woc2VsZi5fb3B0aW9ucy52ZXJib3NlKSksCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgX2xvZy5l
cnJvcihlLm1lc3NhZ2Vfd2l0aF9vdXRwdXQob3V0cHV0X2xpbWl0PU5vbmUpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIG9zLmVudmlyb25bJ0xMREJfV0VCS0lUX1RF
U1RFUl9FWEVDVVRBQkxFJ10gPSBzdHIoc2VsZi5maW5kZXIuZmlsZXN5c3RlbS5qb2luKGNvbmZp
Zy5idWlsZF9kaXJlY3RvcnkoY29uZmlndXJhdGlvbl90b191c2UpLCAnbGxkYldlYktpdFRlc3Rl
cicpKQorICAgICAgICBpZiBub3Qgc2VsZi5maW5kZXIuZmlsZXN5c3RlbS5leGlzdHMob3MuZW52
aXJvblsnTExEQl9XRUJLSVRfVEVTVEVSX0VYRUNVVEFCTEUnXSk6CisgICAgICAgICAgICBfbG9n
LmVycm9yKCdGYWlsZWQgdG8gZmluZCBsbGRiV2ViS2l0VGVzdGVyLicpCisgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKKworICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RzKG5hbWVzKQorCisK
K2RlZiBtYWluKCk6CisgICAgdGVzdGVyID0gTGxkYlRlc3RlcigpCisgICAgaG9zdCA9IEhvc3Qo
KQorICAgIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSA9IGhvc3QucGF0aF90b19sbGRiX3B5dGhvbl9k
aXJlY3RvcnkoKQorICAgIGlmIG5vdCBob3N0LmZpbGVzeXN0ZW0uaXNkaXIobGxkYl9weXRob25f
ZGlyZWN0b3J5KToKKyAgICAgICAgdGVzdGVyLnBhcnNlX2FyZ3MoKQorICAgICAgICBwcmludCgn
bGxkYiB0ZXN0cyBhcmUgb25seSBzdXBwb3J0ZWQgb24gbWFjT1MnKQorICAgICAgICByZXR1cm4g
MQorCisgICAgdXAgPSBob3N0LmZpbGVzeXN0ZW0uZGlybmFtZQorICAgIHdlYmtpdF9yb290ID0g
dXAodXAodXAoaG9zdC5maWxlc3lzdGVtLmFic3BhdGgoX19maWxlX18pKSkpCisKKyAgICBpZiBs
bGRiX3B5dGhvbl9kaXJlY3Rvcnkgbm90IGluIHN5cy5wYXRoOgorICAgICAgICBzeXMucGF0aC5h
cHBlbmQobGxkYl9weXRob25fZGlyZWN0b3J5KQorICAgIHRlc3Rlci5hZGRfdHJlZShob3N0LmZp
bGVzeXN0ZW0uam9pbih3ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKworICAgIHJldHVy
biBub3QgdGVzdGVyLnJ1bihob3N0PWhvc3QsIHdlYmtpdF9yb290PXdlYmtpdF9yb290KQorCisK
K2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy90ZXN0LWxsZGItd2Via2l0Cl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkJKHJldmlz
aW9uIDI1MzI5MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5l
eGVjdXRpdmUgaW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9y
dCBGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCi1m
cm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcKIGZyb20gd2Via2l0cHkudGVz
dC5maW5kZXIgaW1wb3J0IEZpbmRlcgogZnJvbSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1wb3J0
IFByaW50ZXIKIGZyb20gd2Via2l0cHkudGVzdC5ydW5uZXIgaW1wb3J0IFJ1bm5lciwgdW5pdF90
ZXN0X25hbWUKQEAgLTY4LDE5ICs2Nyw2IEBAIGRlZiBtYWluKCk6CiAgICAgaWYgbm90IChzeXMu
cGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykgb3Igc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nKToK
ICAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdTb3Vy
Y2UnLCAnV2ViS2l0JywgJ1NjcmlwdHMnKSwgJ3dlYmtpdCcpCiAKLSAgICBsbGRiX3B5dGhvbl9k
aXJlY3RvcnkgPSBfaG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9uX2RpcmVjdG9yeSgpCi0gICAgaWYg
bm90IF9zdXBwb3J0c19idWlsZGluZ19hbmRfcnVubmluZ19sbGRiX3Rlc3RzKCk6Ci0gICAgICAg
IF9sb2cuaW5mbygiU2tpcHBpbmcgbGxkYl93ZWJraXQgdGVzdHM7IG5vdCB5ZXQgc3VwcG9ydGVk
IG9uIG1hY09TIENhdGFsaW5hLiIpCi0gICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3Rz
ID0gRmFsc2UKLSAgICBlbGlmIG5vdCBvcy5wYXRoLmlzZGlyKGxsZGJfcHl0aG9uX2RpcmVjdG9y
eSk6Ci0gICAgICAgIF9sb2cuaW5mbygiU2tpcHBpbmcgbGxkYl93ZWJraXQgdGVzdHM7IGNvdWxk
IG5vdCBmaW5kIHBhdGggdG8gbGxkYi5weSAne30nLiIuZm9ybWF0KGxsZGJfcHl0aG9uX2RpcmVj
dG9yeSkpCi0gICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gRmFsc2UKLSAgICBl
bHNlOgotICAgICAgICBpZiBsbGRiX3B5dGhvbl9kaXJlY3Rvcnkgbm90IGluIHN5cy5wYXRoOgot
ICAgICAgICAgICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkKLSAgICAg
ICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICds
bGRiJykpCi0gICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gVHJ1ZQotCiAgICAg
dGVzdGVyLnNraXAoKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcs
KSwgJ2FyZSByZWFsbHksIHJlYWxseSwgc2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9y
bS5zdGFydHN3aXRoKCd3aW4nKToKICAgICAgICAgdGVzdGVyLnNraXAoKCd3ZWJraXRweS5jb21t
b24uY2hlY2tvdXQnLCAnd2Via2l0cHkuY29tbW9uLmNvbmZpZycsICd3ZWJraXRweS50b29sJyks
ICdmYWlsIGhvcnJpYmx5IG9uIHdpbjMyJywgNTQ1MjYpCkBAIC05OCwxNiArODQsNyBAQCBkZWYg
bWFpbigpOgogICAgIGVsc2U6CiAgICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgUXVldWVTdGF0
dXNTZXJ2ZXIgdGVzdHM7IHRoZSBHb29nbGUgQXBwRW5naW5lIFB5dGhvbiBTREsgaXMgbm90IGlu
c3RhbGxlZC4nKQogCi0gICAgcmV0dXJuIG5vdCB0ZXN0ZXIucnVuKHdpbGxfcnVuX2xsZGJfd2Vi
a2l0X3Rlc3RzPXdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzKQotCi0KLWRlZiBfc3VwcG9ydHNf
YnVpbGRpbmdfYW5kX3J1bm5pbmdfbGxkYl90ZXN0cygpOgotICAgICMgRklYTUU6IFJlbW92ZSB3
aGVuIHRlc3QtbGxkYiBpcyBpbiBpdHMgb3duIHNjcmlwdAotICAgICMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzkxNgotICAgIGJ1aWxkX3ZlcnNpb24gPSBfaG9z
dC5wbGF0Zm9ybS5idWlsZF92ZXJzaW9uKCkKLSAgICBpZiBidWlsZF92ZXJzaW9uIGlzIE5vbmU6
Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIG5vdCB0
ZXN0ZXIucnVuKCkKIAogCiBkZWYgX3ByaW50X3Jlc3VsdHNfYXNfanNvbihzdHJlYW0sIGFsbF90
ZXN0X25hbWVzLCBmYWlsdXJlcywgZXJyb3JzKToKQEAgLTEzNywxNCArMTE0LDYgQEAgY2xhc3Mg
VGVzdGVyKG9iamVjdCk6CiAgICAgZGVmIF9wYXJzZV9hcmdzKHNlbGYsIGFyZ3Y9Tm9uZSk6CiAg
ICAgICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0ndXNhZ2U6ICVwcm9n
IFtvcHRpb25zXSBbYXJncy4uLl0nKQogCi0gICAgICAgICMgIENvbmZpZ3VyYXRpb24gb3B0aW9u
cyBvbmx5IGVmZmVjdCB0aGUgYnVpbGRpbmcgb2YgbGxkYldlYktpdFRlc3Rlci4KLSAgICAgICAg
Y29uZmlndXJhdGlvbl9ncm91cCA9IG9wdHBhcnNlLk9wdGlvbkdyb3VwKHBhcnNlciwgJ0NvbmZp
Z3VyYXRpb24gb3B0aW9ucycpCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fZ3JvdXAuYWRkX29wdGlv
bignLS1kZWJ1ZycsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nRGVidWcnLCBkZXN0PSJj
b25maWd1cmF0aW9uIiwKLSAgICAgICAgICAgIGhlbHA9J1NldCB0aGUgY29uZmlndXJhdGlvbiB0
byBEZWJ1ZycpCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fZ3JvdXAuYWRkX29wdGlvbignLS1yZWxl
YXNlJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdSZWxlYXNlJywgZGVzdD0iY29uZmln
dXJhdGlvbiIsCi0gICAgICAgICAgICBoZWxwPSdTZXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gUmVs
ZWFzZScpCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uX2dyb3VwKGNvbmZpZ3VyYXRpb25fZ3Jv
dXApCi0KICAgICAgICAgdXBsb2FkX2dyb3VwID0gb3B0cGFyc2UuT3B0aW9uR3JvdXAocGFyc2Vy
LCAnVXBsb2FkIE9wdGlvbnMnKQogICAgICAgICB1cGxvYWRfZ3JvdXAuYWRkX29wdGlvbnModXBs
b2FkX29wdGlvbnMoKSkKICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAodXBsb2FkX2dy
b3VwKQpAQCAtMTc2LDcgKzE0NSw3IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogCiAgICAgICAg
IHJldHVybiBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQogCi0gICAgZGVmIHJ1bihzZWxmLCB3aWxs
X3J1bl9sbGRiX3dlYmtpdF90ZXN0cz1GYWxzZSk6CisgICAgZGVmIHJ1bihzZWxmKToKICAgICAg
ICAgc2VsZi5fb3B0aW9ucywgYXJncyA9IHNlbGYuX3BhcnNlX2FyZ3MoKQogICAgICAgICBzZWxm
LnByaW50ZXIuY29uZmlndXJlKHNlbGYuX29wdGlvbnMpCiAKQEAgLTE4Nyw5ICsxNTYsOSBAQCBj
bGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ05vIHRlc3RzIHRv
IHJ1bicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICByZXR1cm4gc2VsZi5f
cnVuX3Rlc3RzKG5hbWVzLCB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cykKKyAgICAgICAgcmV0
dXJuIHNlbGYuX3J1bl90ZXN0cyhuYW1lcykKIAotICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5h
bWVzLCB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cyk6CisgICAgZGVmIF9ydW5fdGVzdHMoc2Vs
ZiwgbmFtZXMpOgogICAgICAgICAjIE1ha2Ugc3VyZSBQWVRIT05QQVRIIGlzIHNldCB1cCBwcm9w
ZXJseS4KICAgICAgICAgc3lzLnBhdGggPSBzZWxmLmZpbmRlci5hZGRpdGlvbmFsX3BhdGhzKHN5
cy5wYXRoKSArIHN5cy5wYXRoCiAKQEAgLTIwMCwyMyArMTY5LDggQEAgY2xhc3MgVGVzdGVyKG9i
amVjdCk6CiAgICAgICAgIGF1dG9pbnN0YWxsX2V2ZXJ5dGhpbmcoKQogCiAgICAgICAgIHN0YXJ0
X3RpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICBjb25maWcgPSBDb25maWcoX2hvc3QuZXhlY3V0
aXZlLCBzZWxmLmZpbmRlci5maWxlc3lzdGVtKQotICAgICAgICBjb25maWd1cmF0aW9uX3RvX3Vz
ZSA9IHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiBvciBjb25maWcuZGVmYXVsdF9jb25maWd1
cmF0aW9uKCkKLQotICAgICAgICBpZiB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0czoKLSAgICAg
ICAgICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoJ0J1aWxkaW5nIGxsZGJXZWJLaXRUZXN0
ZXIgLi4uJykKLSAgICAgICAgICAgIGJ1aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIgPSBzZWxmLmZpbmRl
ci5maWxlc3lzdGVtLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycsICdidWls
ZC1sbGRid2Via2l0dGVzdGVyJykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBf
aG9zdC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKFtidWlsZF9sbGRid2Via2l0dGVz
dGVyLCBjb25maWcuZmxhZ19mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3VzZSld
LCBxdWlldD0obm90IGJvb2woc2VsZi5fb3B0aW9ucy52ZXJib3NlKSkpCi0gICAgICAgICAgICBl
eGNlcHQgU2NyaXB0RXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGUubWVz
c2FnZV93aXRoX291dHB1dChvdXRwdXRfbGltaXQ9Tm9uZSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCi0gICAgICAgICAgICBvcy5lbnZpcm9uWydMTERCX1dFQktJVF9URVNURVJfRVhF
Q1VUQUJMRSddID0gc3RyKHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0uam9pbihjb25maWcuYnVpbGRf
ZGlyZWN0b3J5KGNvbmZpZ3VyYXRpb25fdG9fdXNlKSwgJ2xsZGJXZWJLaXRUZXN0ZXInKSkKLSAg
ICAgICAgICAgIGlmIG5vdCBzZWxmLmZpbmRlci5maWxlc3lzdGVtLmV4aXN0cyhvcy5lbnZpcm9u
WydMTERCX1dFQktJVF9URVNURVJfRVhFQ1VUQUJMRSddKToKLSAgICAgICAgICAgICAgICBfbG9n
LmVycm9yKCdGYWlsZWQgdG8gZmluZCBsbGRiV2ViS2l0VGVzdGVyLicpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb3ZlcmFnZToKKyAg
ICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAnY292ZXJhZ2UnLCBGYWxzZSk6CiAgICAg
ICAgICAgICBfbG9nLndhcm5pbmcoIkNoZWNraW5nIGNvZGUgY292ZXJhZ2UsIHNvIHJ1bm5pbmcg
dGhpbmdzIHNlcmlhbGx5IikKICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vz
c2VzID0gMQogCkBAIC0yNDEsMjYgKzE5NSwyNiBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAg
ICAgICAgc2VsZi5wcmludGVyLm51bV90ZXN0cyA9IGxlbihwYXJhbGxlbF90ZXN0cykgKyBsZW4o
c2VyaWFsX3Rlc3RzKQogICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCiAgICAgICAgIHRlc3Rf
cnVubmVyID0gUnVubmVyKHNlbGYucHJpbnRlciwgbG9hZGVyKQotICAgICAgICB0ZXN0X3J1bm5l
ci5ydW4ocGFyYWxsZWxfdGVzdHMsIHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKQorICAg
ICAgICB0ZXN0X3J1bm5lci5ydW4ocGFyYWxsZWxfdGVzdHMsIGdldGF0dHIoc2VsZi5fb3B0aW9u
cywgJ2NoaWxkX3Byb2Nlc3NlcycsIDEpKQogICAgICAgICB0ZXN0X3J1bm5lci5ydW4oc2VyaWFs
X3Rlc3RzLCAxKQogICAgICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgpCiAKICAgICAgICAgc2Vs
Zi5wcmludGVyLnByaW50X3Jlc3VsdCh0aW1lLnRpbWUoKSAtIHN0YXJ0KQogCi0gICAgICAgIGlm
IHNlbGYuX29wdGlvbnMuanNvbjoKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAn
anNvbicsIEZhbHNlKToKICAgICAgICAgICAgIF9wcmludF9yZXN1bHRzX2FzX2pzb24oc3lzLnN0
ZG91dCwgaXRlcnRvb2xzLmNoYWluKHBhcmFsbGVsX3Rlc3RzLCBzZXJpYWxfdGVzdHMpLCB0ZXN0
X3J1bm5lci5mYWlsdXJlcywgdGVzdF9ydW5uZXIuZXJyb3JzKQogCi0gICAgICAgIGlmIHNlbGYu
X29wdGlvbnMuanNvbl9maWxlX25hbWU6CisgICAgICAgIGlmIGdldGF0dHIoc2VsZi5fb3B0aW9u
cywgJ2pzb25fZmlsZV9uYW1lJywgTm9uZSk6CiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmpz
b25fZmlsZV9uYW1lID0gb3MucGF0aC5hYnNwYXRoKHNlbGYuX29wdGlvbnMuanNvbl9maWxlX25h
bWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5fb3B0aW9ucy5qc29uX2ZpbGVfbmFtZSwg
J3cnKSBhcyBqc29uX2ZpbGU6CiAgICAgICAgICAgICAgICAgX3ByaW50X3Jlc3VsdHNfYXNfanNv
bihqc29uX2ZpbGUsIGl0ZXJ0b29scy5jaGFpbihwYXJhbGxlbF90ZXN0cywgc2VyaWFsX3Rlc3Rz
KSwgdGVzdF9ydW5uZXIuZmFpbHVyZXMsIHRlc3RfcnVubmVyLmVycm9ycykKIAotICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdlOgorICAgICAgICBpZiBnZXRhdHRyKHNlbGYuX29wdGlv
bnMsICdjb3ZlcmFnZScsIEZhbHNlKToKICAgICAgICAgICAgIGNvdi5zdG9wKCkKICAgICAgICAg
ICAgIGNvdi5zYXZlKCkKIAogICAgICAgICBmYWlsZWRfdXBsb2FkcyA9IDAKLSAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5yZXBvcnRfdXJsczoKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRp
b25zLCAncmVwb3J0X3VybHMnLCBOb25lKToKICAgICAgICAgICAgIHNlbGYucHJpbnRlci5tZXRl
ci53cml0ZWxuKCdcbicpCiAgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdQ
cmVwYXJpbmcgdXBsb2FkIGRhdGEgLi4uJykKIApAQCAtMjc4LDcgKzIzMiw3IEBAIGNsYXNzIFRl
c3RlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT1faG9zdC5wbGF0Zm9y
bS5vc19uYW1lLAogICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPXN0cihfaG9zdC5wbGF0Zm9y
bS5vc192ZXJzaW9uKSwKICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9uYW1lPV9ob3N0LnBs
YXRmb3JtLm9zX3ZlcnNpb25fbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICBzdHlsZT0nYXNh
bicgaWYgY29uZmlnLmFzYW4gZWxzZSBjb25maWd1cmF0aW9uX3RvX3VzZS5sb3dlcigpLAorICAg
ICAgICAgICAgICAgICAgICBzdHlsZT0ncmVsZWFzZScsCiAgICAgICAgICAgICAgICAgICAgIHNk
az1faG9zdC5wbGF0Zm9ybS5idWlsZF92ZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgICAgIGZs
YXZvcj1zZWxmLl9vcHRpb25zLnJlc3VsdF9yZXBvcnRfZmxhdm9yLAogICAgICAgICAgICAgICAg
ICksCkBAIC0zMDAsNyArMjU0LDcgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAgICAgICAg
ICAgICAgZmFpbGVkX3VwbG9hZHMgPSBmYWlsZWRfdXBsb2FkcyBpZiB1cGxvYWQudXBsb2FkKHVy
bCwgbG9nX2xpbmVfZnVuYz1zZWxmLnByaW50ZXIubWV0ZXIud3JpdGVsbikgZWxzZSAoZmFpbGVk
X3VwbG9hZHMgKyAxKQogICAgICAgICAgICAgc2VsZi5wcmludGVyLm1ldGVyLndyaXRlbG4oJ1Vw
bG9hZHMgY29tcGxldGVkIScpCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb3ZlcmFnZToK
KyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAnY292ZXJhZ2UnLCBGYWxzZSk6CiAg
ICAgICAgICAgICBjb3YucmVwb3J0KHNob3dfbWlzc2luZz1GYWxzZSkKIAogICAgICAgICByZXR1
cm4gbm90IHNlbGYucHJpbnRlci5udW1fZXJyb3JzIGFuZCBub3Qgc2VsZi5wcmludGVyLm51bV9m
YWlsdXJlcyBhbmQgbm90IGZhaWxlZF91cGxvYWRzCkBAIC0zMjIsNyArMjc2LDcgQEAgY2xhc3Mg
VGVzdGVyKG9iamVjdCk6CiAgICAgZGVmIF90ZXN0X25hbWVzKHNlbGYsIGxvYWRlciwgbmFtZXMp
OgogICAgICAgICBwYXJhbGxlbF90ZXN0X21ldGhvZF9wcmVmaXhlcyA9IFsndGVzdF8nXQogICAg
ICAgICBzZXJpYWxfdGVzdF9tZXRob2RfcHJlZml4ZXMgPSBbJ3NlcmlhbF90ZXN0XyddCi0gICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMuaW50ZWdyYXRpb25fdGVzdHM6CisgICAgICAgIGlmIGdldGF0
dHIoc2VsZi5fb3B0aW9ucywgJ2ludGVncmF0aW9uX3Rlc3RzJywgTm9uZSk6CiAgICAgICAgICAg
ICBwYXJhbGxlbF90ZXN0X21ldGhvZF9wcmVmaXhlcy5hcHBlbmQoJ2ludGVncmF0aW9uX3Rlc3Rf
JykKICAgICAgICAgICAgIHNlcmlhbF90ZXN0X21ldGhvZF9wcmVmaXhlcy5hcHBlbmQoJ3Nlcmlh
bF9pbnRlZ3JhdGlvbl90ZXN0XycpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385216</attachid>
            <date>2019-12-09 17:22:58 -0800</date>
            <delta_ts>2019-12-10 07:14:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187916-20191209172257.patch</filename>
            <type>text/plain</type>
            <size>16775</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MzMxMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE5LTEyLTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgdGVzdC1sbGRiLXdlYmtpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQ6IEFk
ZGVkLgorICAgICAgICAoTm9BY3Rpb24pOiBBcmdwYXJzZSBhY3Rpb24gd2hpY2ggc3VwcG9ydCAt
LTx2YXJpYWJsZT4gYW5kIC0tbm8tPHZhcmlhYmxlPi4KKyAgICAgICAgKExsZGJUZXN0ZXIpOiBX
cmFwcGVyIGFyb3VuZCB3ZWJraXRweSdzIFRlc3RlciBjbGFzcy4KKyAgICAgICAgKExsZGJUZXN0
ZXIucGFyc2VfYXJncyk6IFNwZWNpYWxpemVkIGFyZ3BhcnNlIGZvciBsbGRiIHRlc3RzLgorICAg
ICAgICAoTGxkYlRlc3Rlci5ydW4pOiBTZXR1cCBlbnZpcm9ubWVudCBhbmQgYnVpbGQgbGxkYiB0
ZXN0IHJ1bm5lci4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dGVzdC9tYWluLnB5OgorICAgICAgICAobWFpbik6IFJlbW92ZSBsbGRiIHRlc3RpbmcgY29kZS4K
KyAgICAgICAgKFRlc3Rlci5fcGFyc2VfYXJncyk6IERpdHRvLgorICAgICAgICAoVGVzdGVyLnJ1
bik6IERpdHRvLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBEaXR0by4KKyAgICAgICAg
KFRlc3Rlci5fdGVzdF9uYW1lcyk6IERpdHRvLgorICAgICAgICAoX3N1cHBvcnRzX2J1aWxkaW5n
X2FuZF9ydW5uaW5nX2xsZGJfdGVzdHMpOiBEZWxldGVkLgorCiAyMDE5LTEyLTA5ICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0LXdlYmtpdHB5OiBS
ZW1vdmUgLS08Y29uZmlndXJhdGlvbj4gZmxhZ3MgZnJvbSBDSQpJbmRleDogVG9vbHMvU2NyaXB0
cy90ZXN0LWxsZGItd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvdGVzdC1sbGRi
LXdlYmtpdAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
IyBDb3B5cmlnaHQgKGMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMK
K2ltcG9ydCB0aW1lCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKK2Zy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitm
cm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gd2Via2l0cHkudGVz
dC5tYWluIGltcG9ydCBUZXN0ZXIKKworRVhDRVBUSU9OQUxfRVhJVF9TVEFUVVMgPSAtMQorCisK
K2NsYXNzIE5vQWN0aW9uKGFyZ3BhcnNlLkFjdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG9wdGlvbl9zdHJpbmdzLCBkZXN0LCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKE5vQWN0aW9u
LCBzZWxmKS5fX2luaXRfXyhvcHRpb25fc3RyaW5ncywgZGVzdCwgbmFyZ3M9MCwgKiprd2FyZ3Mp
CisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2VyLCBuYW1lc3BhY2UsIHZhbHVlcywgb3B0
aW9uX3N0cmluZyk6CisgICAgICAgIHNldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIEZhbHNl
IGlmIG9wdGlvbl9zdHJpbmcuc3RhcnRzd2l0aCgnLS1ubycpIGVsc2UgVHJ1ZSkKKworCitjbGFz
cyBMbGRiVGVzdGVyKFRlc3Rlcik6CisKKyAgICBkZWYgcGFyc2VfYXJncyhzZWxmKToKKyAgICAg
ICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0Egc2NyaXB0
IHdoaWNoIHRlc3RzIFdlYktpdFwncyBsbGRiIG1hY3JvcyBhbmQgaW50ZWdyYXRpb24nKQorICAg
ICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWJ1aWxkJywgJy0tbm8tYnVpbGQnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2J1aWxkJywgYWN0aW9uPU5vQWN0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nRW5hYmxlIG9yIGRp
c2FibGUgYnVpbGRpbmcgbGxkYiB0ZXN0IHJ1bm5lciBiZWZvcmUgcnVubmluZyB0aGUgdGVzdCAo
ZW5hYmxlZCBieSBkZWZhdWx0KScpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcm9v
dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncm9vdCcsIGFjdGlvbj0nc3Rv
cmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nUGF0
aCB0byBhIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBleGVjdXRhYmxlcyBuZWVkZWQgdG8gcnVu
IHRlc3RzLicpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScs
IGFjdGlvbj0nY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9MCwg
aGVscD0nVmVyYm9zZSBvdXRwdXQgKHNwZWNpZnkgb25jZSBmb3IgaW5kaXZpZHVhbCB0ZXN0IHJl
c3VsdHMsIHR3aWNlIGZvciBkZWJ1ZyBtZXNzYWdlcyknKQorICAgICAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KCctdCcsICctLXRpbWluZycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0nRGlzcGxheSBwZXItdGVzdCBl
eGVjdXRpb24gdGltZSAoaW1wbGllcyAtLXZlcmJvc2UpJykKKyAgICAgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0nUnVuIHF1aWV0bHkgKGVycm9y
cywgd2FybmluZ3MsIGFuZCBwcm9ncmVzcyBvbmx5KScpCisgICAgICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoJy1wJywgJy0tcGFzcy10aHJvdWdoJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVs
dD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdCZSBkZWJ1Z2dlciBm
cmllbmRseSBieSBwYXNzaW5nIGNhcHR1cmVkIG91dHB1dCB0aHJvdWdoIHRvIHRoZSBzeXN0ZW0n
KQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRlYnVnJywgY29uc3Q9J2RlYnVnJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjb25maWd1cmF0aW9uJywgYWN0aW9u
PSdzdG9yZV9jb25zdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25l
LCBoZWxwPSdBbGlhcyBmb3IgY29uZmlndXJhdGlvbj1kZWJ1Zy4nKQorICAgICAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KCctLXJlbGVhc2UnLCBjb25zdD0ncmVsZWFzZScsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbicsIGFjdGlvbj0nc3RvcmVfY29uc3Qn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nQWxpYXMg
Zm9yIGNvbmZpZ3VyYXRpb249cmVsZWFzZS4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KCctLWNvbmZpZ3VyYXRpb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2Nv
bmZpZ3VyYXRpb24nLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0PU5vbmUsIGhlbHA9J1N0b3JlIGNvbmZpZ3VyYXRpb24gdG8gdGVzdC4nKQorICAg
ICAgICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgZGVmIHJ1bihzZWxmLCBob3N0
PU5vbmUsIHdlYmtpdF9yb290PU5vbmUpOgorICAgICAgICBob3N0ID0gaG9zdCBvciBIb3N0KCkK
KyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IHNlbGYucGFyc2VfYXJncygpCisgICAgICAgIHNlbGYu
cHJpbnRlci5jb25maWd1cmUoc2VsZi5fb3B0aW9ucykKKyAgICAgICAgc2VsZi5maW5kZXIuY2xl
YW5fdHJlZXMoKQorCisgICAgICAgIG5hbWVzID0gc2VsZi5maW5kZXIuZmluZF9uYW1lcyhbXSwg
VHJ1ZSkKKyAgICAgICAgaWYgbm90IG5hbWVzOgorICAgICAgICAgICAgX2xvZy5lcnJvcignTm8g
dGVzdHMgdG8gcnVuJykKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGNvbmZp
ZyA9IENvbmZpZyhob3N0LmV4ZWN1dGl2ZSwgc2VsZi5maW5kZXIuZmlsZXN5c3RlbSkKKyAgICAg
ICAgY29uZmlndXJhdGlvbl90b191c2UgPSBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24gb3Ig
Y29uZmlnLmRlZmF1bHRfY29uZmlndXJhdGlvbigpCisgICAgICAgIHNlbGYudXBsb2FkX3N0eWxl
ID0gY29uZmlndXJhdGlvbl90b191c2UubG93ZXIoKQorCisgICAgICAgIGlmIChub3Qgc2VsZi5f
b3B0aW9ucy5yb290IGFuZCBzZWxmLl9vcHRpb25zLmJ1aWxkIGlzIE5vbmUpIG9yIHNlbGYuX29w
dGlvbnMuYnVpbGQ6CisgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdCdWls
ZGluZyBsbGRiV2ViS2l0VGVzdGVyIC4uLicpCisgICAgICAgICAgICBidWlsZF9sbGRid2Via2l0
dGVzdGVyID0gc2VsZi5maW5kZXIuZmlsZXN5c3RlbS5qb2luKHdlYmtpdF9yb290LCAnVG9vbHMn
LCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Via2l0dGVzdGVyJykKKyAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICBob3N0LmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoCisg
ICAgICAgICAgICAgICAgICAgIFtidWlsZF9sbGRid2Via2l0dGVzdGVyLCBjb25maWcuZmxhZ19m
b3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3VzZSldLAorICAgICAgICAgICAgICAg
ICAgICBxdWlldD0obm90IGJvb2woc2VsZi5fb3B0aW9ucy52ZXJib3NlKSksCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6CisgICAgICAgICAg
ICAgICAgX2xvZy5lcnJvcihlLm1lc3NhZ2Vfd2l0aF9vdXRwdXQob3V0cHV0X2xpbWl0PU5vbmUp
KQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIG9zLmVudmlyb25bJ0xM
REJfV0VCS0lUX1RFU1RFUl9FWEVDVVRBQkxFJ10gPSBzdHIoc2VsZi5maW5kZXIuZmlsZXN5c3Rl
bS5qb2luKGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoY29uZmlndXJhdGlvbl90b191c2UpLCAnbGxk
YldlYktpdFRlc3RlcicpKQorICAgICAgICBpZiBub3Qgc2VsZi5maW5kZXIuZmlsZXN5c3RlbS5l
eGlzdHMob3MuZW52aXJvblsnTExEQl9XRUJLSVRfVEVTVEVSX0VYRUNVVEFCTEUnXSk6CisgICAg
ICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQgdG8gZmluZCBsbGRiV2ViS2l0VGVzdGVyLicpCisg
ICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3Rz
KG5hbWVzKQorCisKK2RlZiBtYWluKCk6CisgICAgdGVzdGVyID0gTGxkYlRlc3RlcigpCisgICAg
aG9zdCA9IEhvc3QoKQorICAgIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSA9IGhvc3QucGF0aF90b19s
bGRiX3B5dGhvbl9kaXJlY3RvcnkoKQorICAgIGlmIG5vdCBob3N0LmZpbGVzeXN0ZW0uaXNkaXIo
bGxkYl9weXRob25fZGlyZWN0b3J5KToKKyAgICAgICAgdGVzdGVyLnBhcnNlX2FyZ3MoKQorICAg
ICAgICBwcmludCgnbGxkYiB0ZXN0cyBhcmUgb25seSBzdXBwb3J0ZWQgb24gbWFjT1Mgd2l0aCBY
Y29kZSBpbnN0YWxsZWQnKQorICAgICAgICByZXR1cm4gMQorCisgICAgdXAgPSBob3N0LmZpbGVz
eXN0ZW0uZGlybmFtZQorICAgIHdlYmtpdF9yb290ID0gdXAodXAodXAoaG9zdC5maWxlc3lzdGVt
LmFic3BhdGgoX19maWxlX18pKSkpCisKKyAgICBpZiBsbGRiX3B5dGhvbl9kaXJlY3Rvcnkgbm90
IGluIHN5cy5wYXRoOgorICAgICAgICBzeXMucGF0aC5hcHBlbmQobGxkYl9weXRob25fZGlyZWN0
b3J5KQorICAgIHRlc3Rlci5hZGRfdHJlZShob3N0LmZpbGVzeXN0ZW0uam9pbih3ZWJraXRfcm9v
dCwgJ1Rvb2xzJywgJ2xsZGInKSkKKworICAgIHJldHVybiBub3QgdGVzdGVyLnJ1bihob3N0PWhv
c3QsIHdlYmtpdF9yb290PXdlYmtpdF9yb290KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6CisgICAgc3lzLmV4aXQobWFpbigpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2Ny
aXB0cy90ZXN0LWxsZGItd2Via2l0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMj
IC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkJKHJldmlzaW9uIDI1MzMxMSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2
IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW0KIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmljb2Rl
X2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCi1mcm9tIHdlYmtpdHB5LnBvcnQuY29uZmln
IGltcG9ydCBDb25maWcKIGZyb20gd2Via2l0cHkudGVzdC5maW5kZXIgaW1wb3J0IEZpbmRlcgog
ZnJvbSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1wb3J0IFByaW50ZXIKIGZyb20gd2Via2l0cHku
dGVzdC5ydW5uZXIgaW1wb3J0IFJ1bm5lciwgdW5pdF90ZXN0X25hbWUKQEAgLTY4LDE5ICs2Nyw2
IEBAIGRlZiBtYWluKCk6CiAgICAgaWYgbm90IChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2lu
Jykgb3Igc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nKToKICAgICAgICAgdGVzdGVyLmFkZF90cmVl
KG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdTb3VyY2UnLCAnV2ViS2l0JywgJ1NjcmlwdHMn
KSwgJ3dlYmtpdCcpCiAKLSAgICBsbGRiX3B5dGhvbl9kaXJlY3RvcnkgPSBfaG9zdC5wYXRoX3Rv
X2xsZGJfcHl0aG9uX2RpcmVjdG9yeSgpCi0gICAgaWYgbm90IF9zdXBwb3J0c19idWlsZGluZ19h
bmRfcnVubmluZ19sbGRiX3Rlc3RzKCk6Ci0gICAgICAgIF9sb2cuaW5mbygiU2tpcHBpbmcgbGxk
Yl93ZWJraXQgdGVzdHM7IG5vdCB5ZXQgc3VwcG9ydGVkIG9uIG1hY09TIENhdGFsaW5hLiIpCi0g
ICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gRmFsc2UKLSAgICBlbGlmIG5vdCBv
cy5wYXRoLmlzZGlyKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSk6Ci0gICAgICAgIF9sb2cuaW5mbygi
U2tpcHBpbmcgbGxkYl93ZWJraXQgdGVzdHM7IGNvdWxkIG5vdCBmaW5kIHBhdGggdG8gbGxkYi5w
eSAne30nLiIuZm9ybWF0KGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkpCi0gICAgICAgIHdpbGxfcnVu
X2xsZGJfd2Via2l0X3Rlc3RzID0gRmFsc2UKLSAgICBlbHNlOgotICAgICAgICBpZiBsbGRiX3B5
dGhvbl9kaXJlY3Rvcnkgbm90IGluIHN5cy5wYXRoOgotICAgICAgICAgICAgc3lzLnBhdGguYXBw
ZW5kKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkKLSAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBh
dGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdsbGRiJykpCi0gICAgICAgIHdpbGxfcnVu
X2xsZGJfd2Via2l0X3Rlc3RzID0gVHJ1ZQotCiAgICAgdGVzdGVyLnNraXAoKCd3ZWJraXRweS5j
b21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwgJ2FyZSByZWFsbHksIHJlYWxseSwg
c2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAg
ICAgICAgdGVzdGVyLnNraXAoKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQnLCAnd2Via2l0cHku
Y29tbW9uLmNvbmZpZycsICd3ZWJraXRweS50b29sJyksICdmYWlsIGhvcnJpYmx5IG9uIHdpbjMy
JywgNTQ1MjYpCkBAIC05OCwxNiArODQsNyBAQCBkZWYgbWFpbigpOgogICAgIGVsc2U6CiAgICAg
ICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgUXVldWVTdGF0dXNTZXJ2ZXIgdGVzdHM7IHRoZSBHb29n
bGUgQXBwRW5naW5lIFB5dGhvbiBTREsgaXMgbm90IGluc3RhbGxlZC4nKQogCi0gICAgcmV0dXJu
IG5vdCB0ZXN0ZXIucnVuKHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzPXdpbGxfcnVuX2xsZGJf
d2Via2l0X3Rlc3RzKQotCi0KLWRlZiBfc3VwcG9ydHNfYnVpbGRpbmdfYW5kX3J1bm5pbmdfbGxk
Yl90ZXN0cygpOgotICAgICMgRklYTUU6IFJlbW92ZSB3aGVuIHRlc3QtbGxkYiBpcyBpbiBpdHMg
b3duIHNjcmlwdAotICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NzkxNgotICAgIGJ1aWxkX3ZlcnNpb24gPSBfaG9zdC5wbGF0Zm9ybS5idWlsZF92ZXJzaW9u
KCkKLSAgICBpZiBidWlsZF92ZXJzaW9uIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBGYWxzZQot
ICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIG5vdCB0ZXN0ZXIucnVuKCkKIAogCiBkZWYgX3By
aW50X3Jlc3VsdHNfYXNfanNvbihzdHJlYW0sIGFsbF90ZXN0X25hbWVzLCBmYWlsdXJlcywgZXJy
b3JzKToKQEAgLTEyNyw2ICsxMDQsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAg
c2VsZi5maW5kZXIgPSBGaW5kZXIoZmlsZXN5c3RlbSBvciBGaWxlU3lzdGVtKCkpCiAgICAgICAg
IHNlbGYucHJpbnRlciA9IFByaW50ZXIoc3lzLnN0ZGVycikKICAgICAgICAgc2VsZi5fb3B0aW9u
cyA9IE5vbmUKKyAgICAgICAgc2VsZi51cGxvYWRfc3R5bGUgPSAncmVsZWFzZScKIAogICAgIGRl
ZiBhZGRfdHJlZShzZWxmLCB0b3BfZGlyZWN0b3J5LCBzdGFydGluZ19zdWJkaXJlY3Rvcnk9Tm9u
ZSk6CiAgICAgICAgIHNlbGYuZmluZGVyLmFkZF90cmVlKHRvcF9kaXJlY3RvcnksIHN0YXJ0aW5n
X3N1YmRpcmVjdG9yeSkKQEAgLTEzNywxNCArMTE1LDYgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6
CiAgICAgZGVmIF9wYXJzZV9hcmdzKHNlbGYsIGFyZ3Y9Tm9uZSk6CiAgICAgICAgIHBhcnNlciA9
IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0ndXNhZ2U6ICVwcm9nIFtvcHRpb25zXSBbYXJn
cy4uLl0nKQogCi0gICAgICAgICMgIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbmx5IGVmZmVjdCB0
aGUgYnVpbGRpbmcgb2YgbGxkYldlYktpdFRlc3Rlci4KLSAgICAgICAgY29uZmlndXJhdGlvbl9n
cm91cCA9IG9wdHBhcnNlLk9wdGlvbkdyb3VwKHBhcnNlciwgJ0NvbmZpZ3VyYXRpb24gb3B0aW9u
cycpCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fZ3JvdXAuYWRkX29wdGlvbignLS1kZWJ1ZycsIGFj
dGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nRGVidWcnLCBkZXN0PSJjb25maWd1cmF0aW9uIiwK
LSAgICAgICAgICAgIGhlbHA9J1NldCB0aGUgY29uZmlndXJhdGlvbiB0byBEZWJ1ZycpCi0gICAg
ICAgIGNvbmZpZ3VyYXRpb25fZ3JvdXAuYWRkX29wdGlvbignLS1yZWxlYXNlJywgYWN0aW9uPSdz
dG9yZV9jb25zdCcsIGNvbnN0PSdSZWxlYXNlJywgZGVzdD0iY29uZmlndXJhdGlvbiIsCi0gICAg
ICAgICAgICBoZWxwPSdTZXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gUmVsZWFzZScpCi0gICAgICAg
IHBhcnNlci5hZGRfb3B0aW9uX2dyb3VwKGNvbmZpZ3VyYXRpb25fZ3JvdXApCi0KICAgICAgICAg
dXBsb2FkX2dyb3VwID0gb3B0cGFyc2UuT3B0aW9uR3JvdXAocGFyc2VyLCAnVXBsb2FkIE9wdGlv
bnMnKQogICAgICAgICB1cGxvYWRfZ3JvdXAuYWRkX29wdGlvbnModXBsb2FkX29wdGlvbnMoKSkK
ICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAodXBsb2FkX2dyb3VwKQpAQCAtMTc2LDcg
KzE0Niw3IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBwYXJzZXIu
cGFyc2VfYXJncyhhcmd2KQogCi0gICAgZGVmIHJ1bihzZWxmLCB3aWxsX3J1bl9sbGRiX3dlYmtp
dF90ZXN0cz1GYWxzZSk6CisgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgc2VsZi5fb3B0aW9u
cywgYXJncyA9IHNlbGYuX3BhcnNlX2FyZ3MoKQogICAgICAgICBzZWxmLnByaW50ZXIuY29uZmln
dXJlKHNlbGYuX29wdGlvbnMpCiAKQEAgLTE4Nyw5ICsxNTcsOSBAQCBjbGFzcyBUZXN0ZXIob2Jq
ZWN0KToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ05vIHRlc3RzIHRvIHJ1bicpCiAgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RzKG5hbWVz
LCB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl90
ZXN0cyhuYW1lcykKIAotICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzLCB3aWxsX3J1bl9s
bGRiX3dlYmtpdF90ZXN0cyk6CisgICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwgbmFtZXMpOgogICAg
ICAgICAjIE1ha2Ugc3VyZSBQWVRIT05QQVRIIGlzIHNldCB1cCBwcm9wZXJseS4KICAgICAgICAg
c3lzLnBhdGggPSBzZWxmLmZpbmRlci5hZGRpdGlvbmFsX3BhdGhzKHN5cy5wYXRoKSArIHN5cy5w
YXRoCiAKQEAgLTIwMCwyMyArMTcwLDggQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAgICAg
IGF1dG9pbnN0YWxsX2V2ZXJ5dGhpbmcoKQogCiAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRp
bWUoKQotICAgICAgICBjb25maWcgPSBDb25maWcoX2hvc3QuZXhlY3V0aXZlLCBzZWxmLmZpbmRl
ci5maWxlc3lzdGVtKQotICAgICAgICBjb25maWd1cmF0aW9uX3RvX3VzZSA9IHNlbGYuX29wdGlv
bnMuY29uZmlndXJhdGlvbiBvciBjb25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkKLQotICAg
ICAgICBpZiB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0czoKLSAgICAgICAgICAgIHNlbGYucHJp
bnRlci53cml0ZV91cGRhdGUoJ0J1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIgLi4uJykKLSAgICAg
ICAgICAgIGJ1aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIgPSBzZWxmLmZpbmRlci5maWxlc3lzdGVtLmpv
aW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Via2l0dGVz
dGVyJykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfaG9zdC5leGVjdXRpdmUu
cnVuX2FuZF90aHJvd19pZl9mYWlsKFtidWlsZF9sbGRid2Via2l0dGVzdGVyLCBjb25maWcuZmxh
Z19mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3VzZSldLCBxdWlldD0obm90IGJv
b2woc2VsZi5fb3B0aW9ucy52ZXJib3NlKSkpCi0gICAgICAgICAgICBleGNlcHQgU2NyaXB0RXJy
b3IgYXMgZToKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGUubWVzc2FnZV93aXRoX291dHB1
dChvdXRwdXRfbGltaXQ9Tm9uZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAg
ICAgICAgICBvcy5lbnZpcm9uWydMTERCX1dFQktJVF9URVNURVJfRVhFQ1VUQUJMRSddID0gc3Ry
KHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0uam9pbihjb25maWcuYnVpbGRfZGlyZWN0b3J5KGNvbmZp
Z3VyYXRpb25fdG9fdXNlKSwgJ2xsZGJXZWJLaXRUZXN0ZXInKSkKLSAgICAgICAgICAgIGlmIG5v
dCBzZWxmLmZpbmRlci5maWxlc3lzdGVtLmV4aXN0cyhvcy5lbnZpcm9uWydMTERCX1dFQktJVF9U
RVNURVJfRVhFQ1VUQUJMRSddKToKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQg
dG8gZmluZCBsbGRiV2ViS2l0VGVzdGVyLicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb3ZlcmFnZToKKyAgICAgICAgaWYgZ2V0YXR0
cihzZWxmLl9vcHRpb25zLCAnY292ZXJhZ2UnLCBGYWxzZSk6CiAgICAgICAgICAgICBfbG9nLndh
cm5pbmcoIkNoZWNraW5nIGNvZGUgY292ZXJhZ2UsIHNvIHJ1bm5pbmcgdGhpbmdzIHNlcmlhbGx5
IikKICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzID0gMQogCkBAIC0y
NDEsMjYgKzE5NiwyNiBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5wcmlu
dGVyLm51bV90ZXN0cyA9IGxlbihwYXJhbGxlbF90ZXN0cykgKyBsZW4oc2VyaWFsX3Rlc3RzKQog
ICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCiAgICAgICAgIHRlc3RfcnVubmVyID0gUnVubmVy
KHNlbGYucHJpbnRlciwgbG9hZGVyKQotICAgICAgICB0ZXN0X3J1bm5lci5ydW4ocGFyYWxsZWxf
dGVzdHMsIHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKQorICAgICAgICB0ZXN0X3J1bm5l
ci5ydW4ocGFyYWxsZWxfdGVzdHMsIGdldGF0dHIoc2VsZi5fb3B0aW9ucywgJ2NoaWxkX3Byb2Nl
c3NlcycsIDEpKQogICAgICAgICB0ZXN0X3J1bm5lci5ydW4oc2VyaWFsX3Rlc3RzLCAxKQogICAg
ICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgpCiAKICAgICAgICAgc2VsZi5wcmludGVyLnByaW50
X3Jlc3VsdCh0aW1lLnRpbWUoKSAtIHN0YXJ0KQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMu
anNvbjoKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAnanNvbicsIEZhbHNlKToK
ICAgICAgICAgICAgIF9wcmludF9yZXN1bHRzX2FzX2pzb24oc3lzLnN0ZG91dCwgaXRlcnRvb2xz
LmNoYWluKHBhcmFsbGVsX3Rlc3RzLCBzZXJpYWxfdGVzdHMpLCB0ZXN0X3J1bm5lci5mYWlsdXJl
cywgdGVzdF9ydW5uZXIuZXJyb3JzKQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuanNvbl9m
aWxlX25hbWU6CisgICAgICAgIGlmIGdldGF0dHIoc2VsZi5fb3B0aW9ucywgJ2pzb25fZmlsZV9u
YW1lJywgTm9uZSk6CiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmpzb25fZmlsZV9uYW1lID0g
b3MucGF0aC5hYnNwYXRoKHNlbGYuX29wdGlvbnMuanNvbl9maWxlX25hbWUpCiAgICAgICAgICAg
ICB3aXRoIG9wZW4oc2VsZi5fb3B0aW9ucy5qc29uX2ZpbGVfbmFtZSwgJ3cnKSBhcyBqc29uX2Zp
bGU6CiAgICAgICAgICAgICAgICAgX3ByaW50X3Jlc3VsdHNfYXNfanNvbihqc29uX2ZpbGUsIGl0
ZXJ0b29scy5jaGFpbihwYXJhbGxlbF90ZXN0cywgc2VyaWFsX3Rlc3RzKSwgdGVzdF9ydW5uZXIu
ZmFpbHVyZXMsIHRlc3RfcnVubmVyLmVycm9ycykKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25z
LmNvdmVyYWdlOgorICAgICAgICBpZiBnZXRhdHRyKHNlbGYuX29wdGlvbnMsICdjb3ZlcmFnZScs
IEZhbHNlKToKICAgICAgICAgICAgIGNvdi5zdG9wKCkKICAgICAgICAgICAgIGNvdi5zYXZlKCkK
IAogICAgICAgICBmYWlsZWRfdXBsb2FkcyA9IDAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5y
ZXBvcnRfdXJsczoKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAncmVwb3J0X3Vy
bHMnLCBOb25lKToKICAgICAgICAgICAgIHNlbGYucHJpbnRlci5tZXRlci53cml0ZWxuKCdcbicp
CiAgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdQcmVwYXJpbmcgdXBsb2Fk
IGRhdGEgLi4uJykKIApAQCAtMjc4LDcgKzIzMyw3IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgog
ICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT1faG9zdC5wbGF0Zm9ybS5vc19uYW1lLAogICAg
ICAgICAgICAgICAgICAgICB2ZXJzaW9uPXN0cihfaG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9uKSwK
ICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9uYW1lPV9ob3N0LnBsYXRmb3JtLm9zX3ZlcnNp
b25fbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICBzdHlsZT0nYXNhbicgaWYgY29uZmlnLmFz
YW4gZWxzZSBjb25maWd1cmF0aW9uX3RvX3VzZS5sb3dlcigpLAorICAgICAgICAgICAgICAgICAg
ICBzdHlsZT1zZWxmLnVwbG9hZF9zdHlsZSwKICAgICAgICAgICAgICAgICAgICAgc2RrPV9ob3N0
LnBsYXRmb3JtLmJ1aWxkX3ZlcnNpb24oKSwKICAgICAgICAgICAgICAgICAgICAgZmxhdm9yPXNl
bGYuX29wdGlvbnMucmVzdWx0X3JlcG9ydF9mbGF2b3IsCiAgICAgICAgICAgICAgICAgKSwKQEAg
LTMwMCw3ICsyNTUsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBm
YWlsZWRfdXBsb2FkcyA9IGZhaWxlZF91cGxvYWRzIGlmIHVwbG9hZC51cGxvYWQodXJsLCBsb2df
bGluZV9mdW5jPXNlbGYucHJpbnRlci5tZXRlci53cml0ZWxuKSBlbHNlIChmYWlsZWRfdXBsb2Fk
cyArIDEpCiAgICAgICAgICAgICBzZWxmLnByaW50ZXIubWV0ZXIud3JpdGVsbignVXBsb2FkcyBj
b21wbGV0ZWQhJykKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdlOgorICAgICAg
ICBpZiBnZXRhdHRyKHNlbGYuX29wdGlvbnMsICdjb3ZlcmFnZScsIEZhbHNlKToKICAgICAgICAg
ICAgIGNvdi5yZXBvcnQoc2hvd19taXNzaW5nPUZhbHNlKQogCiAgICAgICAgIHJldHVybiBub3Qg
c2VsZi5wcmludGVyLm51bV9lcnJvcnMgYW5kIG5vdCBzZWxmLnByaW50ZXIubnVtX2ZhaWx1cmVz
IGFuZCBub3QgZmFpbGVkX3VwbG9hZHMKQEAgLTMyMiw3ICsyNzcsNyBAQCBjbGFzcyBUZXN0ZXIo
b2JqZWN0KToKICAgICBkZWYgX3Rlc3RfbmFtZXMoc2VsZiwgbG9hZGVyLCBuYW1lcyk6CiAgICAg
ICAgIHBhcmFsbGVsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzID0gWyd0ZXN0XyddCiAgICAgICAgIHNl
cmlhbF90ZXN0X21ldGhvZF9wcmVmaXhlcyA9IFsnc2VyaWFsX3Rlc3RfJ10KLSAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5pbnRlZ3JhdGlvbl90ZXN0czoKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxm
Ll9vcHRpb25zLCAnaW50ZWdyYXRpb25fdGVzdHMnLCBOb25lKToKICAgICAgICAgICAgIHBhcmFs
bGVsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzLmFwcGVuZCgnaW50ZWdyYXRpb25fdGVzdF8nKQogICAg
ICAgICAgICAgc2VyaWFsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzLmFwcGVuZCgnc2VyaWFsX2ludGVn
cmF0aW9uX3Rlc3RfJykKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385257</attachid>
            <date>2019-12-10 07:14:28 -0800</date>
            <delta_ts>2019-12-10 09:38:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187916-20191210071427.patch</filename>
            <type>text/plain</type>
            <size>16923</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MzMxMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE5LTEyLTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgdGVzdC1sbGRiLXdlYmtpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQ6IEFk
ZGVkLgorICAgICAgICAoTm9BY3Rpb24pOiBBcmdwYXJzZSBhY3Rpb24gd2hpY2ggc3VwcG9ydCAt
LTx2YXJpYWJsZT4gYW5kIC0tbm8tPHZhcmlhYmxlPi4KKyAgICAgICAgKExsZGJUZXN0ZXIpOiBX
cmFwcGVyIGFyb3VuZCB3ZWJraXRweSdzIFRlc3RlciBjbGFzcy4KKyAgICAgICAgKExsZGJUZXN0
ZXIucGFyc2VfYXJncyk6IFNwZWNpYWxpemVkIGFyZ3BhcnNlIGZvciBsbGRiIHRlc3RzLgorICAg
ICAgICAoTGxkYlRlc3Rlci5ydW4pOiBTZXR1cCBlbnZpcm9ubWVudCBhbmQgYnVpbGQgbGxkYiB0
ZXN0IHJ1bm5lci4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dGVzdC9tYWluLnB5OgorICAgICAgICAobWFpbik6IFJlbW92ZSBsbGRiIHRlc3RpbmcgY29kZS4K
KyAgICAgICAgKFRlc3Rlci5fcGFyc2VfYXJncyk6IERpdHRvLgorICAgICAgICAoVGVzdGVyLnJ1
bik6IERpdHRvLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBEaXR0by4KKyAgICAgICAg
KFRlc3Rlci5fdGVzdF9uYW1lcyk6IERpdHRvLgorICAgICAgICAoX3N1cHBvcnRzX2J1aWxkaW5n
X2FuZF9ydW5uaW5nX2xsZGJfdGVzdHMpOiBEZWxldGVkLgorCiAyMDE5LTEyLTA5ICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0LXdlYmtpdHB5OiBS
ZW1vdmUgLS08Y29uZmlndXJhdGlvbj4gZmxhZ3MgZnJvbSBDSQpJbmRleDogVG9vbHMvU2NyaXB0
cy90ZXN0LWxsZGItd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvdGVzdC1sbGRi
LXdlYmtpdAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
IyBDb3B5cmlnaHQgKGMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMK
K2ltcG9ydCB0aW1lCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKK2Zy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitm
cm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gd2Via2l0cHkudGVz
dC5tYWluIGltcG9ydCBUZXN0ZXIKKworRVhDRVBUSU9OQUxfRVhJVF9TVEFUVVMgPSAtMQorCisK
K2NsYXNzIE5vQWN0aW9uKGFyZ3BhcnNlLkFjdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG9wdGlvbl9zdHJpbmdzLCBkZXN0LCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKE5vQWN0aW9u
LCBzZWxmKS5fX2luaXRfXyhvcHRpb25fc3RyaW5ncywgZGVzdCwgbmFyZ3M9MCwgKiprd2FyZ3Mp
CisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2VyLCBuYW1lc3BhY2UsIHZhbHVlcywgb3B0
aW9uX3N0cmluZyk6CisgICAgICAgIHNldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIEZhbHNl
IGlmIG9wdGlvbl9zdHJpbmcuc3RhcnRzd2l0aCgnLS1ubycpIGVsc2UgVHJ1ZSkKKworCitjbGFz
cyBMbGRiVGVzdGVyKFRlc3Rlcik6CisKKyAgICBkZWYgcGFyc2VfYXJncyhzZWxmKToKKyAgICAg
ICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0Egc2NyaXB0
IHdoaWNoIHRlc3RzIFdlYktpdFwncyBsbGRiIG1hY3JvcyBhbmQgaW50ZWdyYXRpb24nKQorICAg
ICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWJ1aWxkJywgJy0tbm8tYnVpbGQnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2J1aWxkJywgYWN0aW9uPU5vQWN0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nRW5hYmxlIG9yIGRp
c2FibGUgYnVpbGRpbmcgbGxkYiB0ZXN0IHJ1bm5lciBiZWZvcmUgcnVubmluZyB0aGUgdGVzdCAo
ZW5hYmxlZCBieSBkZWZhdWx0KScpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcm9v
dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncm9vdCcsIGFjdGlvbj0nc3Rv
cmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nUGF0
aCB0byBhIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBleGVjdXRhYmxlcyBuZWVkZWQgdG8gcnVu
IHRlc3RzLicpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScs
IGFjdGlvbj0nY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9MCwg
aGVscD0nVmVyYm9zZSBvdXRwdXQgKHNwZWNpZnkgb25jZSBmb3IgaW5kaXZpZHVhbCB0ZXN0IHJl
c3VsdHMsIHR3aWNlIGZvciBkZWJ1ZyBtZXNzYWdlcyknKQorICAgICAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KCctdCcsICctLXRpbWluZycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0nRGlzcGxheSBwZXItdGVzdCBl
eGVjdXRpb24gdGltZSAoaW1wbGllcyAtLXZlcmJvc2UpJykKKyAgICAgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0nUnVuIHF1aWV0bHkgKGVycm9y
cywgd2FybmluZ3MsIGFuZCBwcm9ncmVzcyBvbmx5KScpCisgICAgICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoJy1wJywgJy0tcGFzcy10aHJvdWdoJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVs
dD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdCZSBkZWJ1Z2dlciBm
cmllbmRseSBieSBwYXNzaW5nIGNhcHR1cmVkIG91dHB1dCB0aHJvdWdoIHRvIHRoZSBzeXN0ZW0n
KQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRlYnVnJywgY29uc3Q9J2RlYnVnJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjb25maWd1cmF0aW9uJywgYWN0aW9u
PSdzdG9yZV9jb25zdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25l
LCBoZWxwPSdBbGlhcyBmb3IgY29uZmlndXJhdGlvbj1kZWJ1Zy4nKQorICAgICAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KCctLXJlbGVhc2UnLCBjb25zdD0ncmVsZWFzZScsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbicsIGFjdGlvbj0nc3RvcmVfY29uc3Qn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nQWxpYXMg
Zm9yIGNvbmZpZ3VyYXRpb249cmVsZWFzZS4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KCctLWNvbmZpZ3VyYXRpb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2Nv
bmZpZ3VyYXRpb24nLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0PU5vbmUsIGhlbHA9J1N0b3JlIGNvbmZpZ3VyYXRpb24gdG8gdGVzdC4nKQorICAg
ICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCduYW1lcycsIG5hcmdzPScqJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J05hbWUgb2YgdGVzdHMgdG8gYmUg
cnVuLicpCisgICAgICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBkZWYgcnVu
KHNlbGYsIGhvc3Q9Tm9uZSwgd2Via2l0X3Jvb3Q9Tm9uZSk6CisgICAgICAgIGhvc3QgPSBob3N0
IG9yIEhvc3QoKQorICAgICAgICBzZWxmLl9vcHRpb25zID0gc2VsZi5wYXJzZV9hcmdzKCkKKyAg
ICAgICAgc2VsZi5wcmludGVyLmNvbmZpZ3VyZShzZWxmLl9vcHRpb25zKQorICAgICAgICBzZWxm
LmZpbmRlci5jbGVhbl90cmVlcygpCisKKyAgICAgICAgbmFtZXMgPSBzZWxmLmZpbmRlci5maW5k
X25hbWVzKHNlbGYuX29wdGlvbnMubmFtZXMgb3IgW10sIFRydWUpCisgICAgICAgIGlmIG5vdCBu
YW1lczoKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJ05vIHRlc3RzIHRvIHJ1bicpCisgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBjb25maWcgPSBDb25maWcoaG9zdC5leGVjdXRp
dmUsIHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0pCisgICAgICAgIGNvbmZpZ3VyYXRpb25fdG9fdXNl
ID0gc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uIG9yIGNvbmZpZy5kZWZhdWx0X2NvbmZpZ3Vy
YXRpb24oKQorICAgICAgICBzZWxmLnVwbG9hZF9zdHlsZSA9IGNvbmZpZ3VyYXRpb25fdG9fdXNl
Lmxvd2VyKCkKKworICAgICAgICBpZiAobm90IHNlbGYuX29wdGlvbnMucm9vdCBhbmQgc2VsZi5f
b3B0aW9ucy5idWlsZCBpcyBOb25lKSBvciBzZWxmLl9vcHRpb25zLmJ1aWxkOgorICAgICAgICAg
ICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgnQnVpbGRpbmcgbGxkYldlYktpdFRlc3RlciAu
Li4nKQorICAgICAgICAgICAgYnVpbGRfbGxkYndlYmtpdHRlc3RlciA9IHNlbGYuZmluZGVyLmZp
bGVzeXN0ZW0uam9pbih3ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ1NjcmlwdHMnLCAnYnVpbGQtbGxk
YndlYmtpdHRlc3RlcicpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaG9zdC5l
eGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKAorICAgICAgICAgICAgICAgICAgICBbYnVp
bGRfbGxkYndlYmtpdHRlc3RlciwgY29uZmlnLmZsYWdfZm9yX2NvbmZpZ3VyYXRpb24oY29uZmln
dXJhdGlvbl90b191c2UpXSwKKyAgICAgICAgICAgICAgICAgICAgcXVpZXQ9KG5vdCBib29sKHNl
bGYuX29wdGlvbnMudmVyYm9zZSkpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4
Y2VwdCBTY3JpcHRFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoZS5tZXNz
YWdlX3dpdGhfb3V0cHV0KG91dHB1dF9saW1pdD1Ob25lKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKworICAgICAgICBvcy5lbnZpcm9uWydMTERCX1dFQktJVF9URVNURVJfRVhFQ1VU
QUJMRSddID0gc3RyKHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0uam9pbihjb25maWcuYnVpbGRfZGly
ZWN0b3J5KGNvbmZpZ3VyYXRpb25fdG9fdXNlKSwgJ2xsZGJXZWJLaXRUZXN0ZXInKSkKKyAgICAg
ICAgaWYgbm90IHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0uZXhpc3RzKG9zLmVudmlyb25bJ0xMREJf
V0VCS0lUX1RFU1RFUl9FWEVDVVRBQkxFJ10pOgorICAgICAgICAgICAgX2xvZy5lcnJvcignRmFp
bGVkIHRvIGZpbmQgbGxkYldlYktpdFRlc3Rlci4nKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl90ZXN0cyhuYW1lcykKKworCitkZWYgbWFpbigp
OgorICAgIHRlc3RlciA9IExsZGJUZXN0ZXIoKQorICAgIGhvc3QgPSBIb3N0KCkKKyAgICBsbGRi
X3B5dGhvbl9kaXJlY3RvcnkgPSBob3N0LnBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KCkK
KyAgICBpZiBub3QgaG9zdC5maWxlc3lzdGVtLmlzZGlyKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSk6
CisgICAgICAgIHRlc3Rlci5wYXJzZV9hcmdzKCkKKyAgICAgICAgcHJpbnQoJ2xsZGIgdGVzdHMg
YXJlIG9ubHkgc3VwcG9ydGVkIG9uIG1hY09TIHdpdGggWGNvZGUgaW5zdGFsbGVkJykKKyAgICAg
ICAgcmV0dXJuIDEKKworICAgIHVwID0gaG9zdC5maWxlc3lzdGVtLmRpcm5hbWUKKyAgICB3ZWJr
aXRfcm9vdCA9IHVwKHVwKHVwKGhvc3QuZmlsZXN5c3RlbS5hYnNwYXRoKF9fZmlsZV9fKSkpKQor
CisgICAgaWYgbGxkYl9weXRob25fZGlyZWN0b3J5IG5vdCBpbiBzeXMucGF0aDoKKyAgICAgICAg
c3lzLnBhdGguYXBwZW5kKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkKKyAgICB0ZXN0ZXIuYWRkX3Ry
ZWUoaG9zdC5maWxlc3lzdGVtLmpvaW4od2Via2l0X3Jvb3QsICdUb29scycsICdsbGRiJykpCisK
KyAgICByZXR1cm4gbm90IHRlc3Rlci5ydW4oaG9zdD1ob3N0LCB3ZWJraXRfcm9vdD13ZWJraXRf
cm9vdCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4o
KSkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1NjcmlwdHMvdGVzdC1sbGRiLXdlYmtpdApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVz
dC9tYWluLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5CShyZXZpc2lvbiAyNTMzMTEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFp
bi5weQkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlIGltCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5
c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQg
SG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24udW5pY29kZV9jb21wYXRpYmlsaXR5IGltcG9ydCBT
dHJpbmdJTwotZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCiBmcm9tIHdl
YmtpdHB5LnRlc3QuZmluZGVyIGltcG9ydCBGaW5kZXIKIGZyb20gd2Via2l0cHkudGVzdC5wcmlu
dGVyIGltcG9ydCBQcmludGVyCiBmcm9tIHdlYmtpdHB5LnRlc3QucnVubmVyIGltcG9ydCBSdW5u
ZXIsIHVuaXRfdGVzdF9uYW1lCkBAIC02OCwxOSArNjcsNiBAQCBkZWYgbWFpbigpOgogICAgIGlm
IG5vdCAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpIG9yIHN5cy5wbGF0Zm9ybSA9PSAn
Y3lnd2luJyk6CiAgICAgICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9y
b290LCAnU291cmNlJywgJ1dlYktpdCcsICdTY3JpcHRzJyksICd3ZWJraXQnKQogCi0gICAgbGxk
Yl9weXRob25fZGlyZWN0b3J5ID0gX2hvc3QucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3Rvcnko
KQotICAgIGlmIG5vdCBfc3VwcG9ydHNfYnVpbGRpbmdfYW5kX3J1bm5pbmdfbGxkYl90ZXN0cygp
OgotICAgICAgICBfbG9nLmluZm8oIlNraXBwaW5nIGxsZGJfd2Via2l0IHRlc3RzOyBub3QgeWV0
IHN1cHBvcnRlZCBvbiBtYWNPUyBDYXRhbGluYS4iKQotICAgICAgICB3aWxsX3J1bl9sbGRiX3dl
YmtpdF90ZXN0cyA9IEZhbHNlCi0gICAgZWxpZiBub3Qgb3MucGF0aC5pc2RpcihsbGRiX3B5dGhv
bl9kaXJlY3RvcnkpOgotICAgICAgICBfbG9nLmluZm8oIlNraXBwaW5nIGxsZGJfd2Via2l0IHRl
c3RzOyBjb3VsZCBub3QgZmluZCBwYXRoIHRvIGxsZGIucHkgJ3t9Jy4iLmZvcm1hdChsbGRiX3B5
dGhvbl9kaXJlY3RvcnkpKQotICAgICAgICB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cyA9IEZh
bHNlCi0gICAgZWxzZToKLSAgICAgICAgaWYgbGxkYl9weXRob25fZGlyZWN0b3J5IG5vdCBpbiBz
eXMucGF0aDoKLSAgICAgICAgICAgIHN5cy5wYXRoLmFwcGVuZChsbGRiX3B5dGhvbl9kaXJlY3Rv
cnkpCi0gICAgICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAn
VG9vbHMnLCAnbGxkYicpKQotICAgICAgICB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cyA9IFRy
dWUKLQogICAgIHRlc3Rlci5za2lwKCgnd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY21f
dW5pdHRlc3QnLCksICdhcmUgcmVhbGx5LCByZWFsbHksIHNsb3cnLCAzMTgxOCkKICAgICBpZiBz
eXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgIHRlc3Rlci5za2lwKCgnd2Vi
a2l0cHkuY29tbW9uLmNoZWNrb3V0JywgJ3dlYmtpdHB5LmNvbW1vbi5jb25maWcnLCAnd2Via2l0
cHkudG9vbCcpLCAnZmFpbCBob3JyaWJseSBvbiB3aW4zMicsIDU0NTI2KQpAQCAtOTgsMTYgKzg0
LDcgQEAgZGVmIG1haW4oKToKICAgICBlbHNlOgogICAgICAgICBfbG9nLmluZm8oJ1NraXBwaW5n
IFF1ZXVlU3RhdHVzU2VydmVyIHRlc3RzOyB0aGUgR29vZ2xlIEFwcEVuZ2luZSBQeXRob24gU0RL
IGlzIG5vdCBpbnN0YWxsZWQuJykKIAotICAgIHJldHVybiBub3QgdGVzdGVyLnJ1bih3aWxsX3J1
bl9sbGRiX3dlYmtpdF90ZXN0cz13aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cykKLQotCi1kZWYg
X3N1cHBvcnRzX2J1aWxkaW5nX2FuZF9ydW5uaW5nX2xsZGJfdGVzdHMoKToKLSAgICAjIEZJWE1F
OiBSZW1vdmUgd2hlbiB0ZXN0LWxsZGIgaXMgaW4gaXRzIG93biBzY3JpcHQKLSAgICAjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc5MTYKLSAgICBidWlsZF92ZXJz
aW9uID0gX2hvc3QucGxhdGZvcm0uYnVpbGRfdmVyc2lvbigpCi0gICAgaWYgYnVpbGRfdmVyc2lv
biBpcyBOb25lOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gVHJ1ZQorICAgIHJl
dHVybiBub3QgdGVzdGVyLnJ1bigpCiAKIAogZGVmIF9wcmludF9yZXN1bHRzX2FzX2pzb24oc3Ry
ZWFtLCBhbGxfdGVzdF9uYW1lcywgZmFpbHVyZXMsIGVycm9ycyk6CkBAIC0xMjcsNiArMTA0LDcg
QEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuZmluZGVyID0gRmluZGVyKGZp
bGVzeXN0ZW0gb3IgRmlsZVN5c3RlbSgpKQogICAgICAgICBzZWxmLnByaW50ZXIgPSBQcmludGVy
KHN5cy5zdGRlcnIpCiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBOb25lCisgICAgICAgIHNlbGYu
dXBsb2FkX3N0eWxlID0gJ3JlbGVhc2UnCiAKICAgICBkZWYgYWRkX3RyZWUoc2VsZiwgdG9wX2Rp
cmVjdG9yeSwgc3RhcnRpbmdfc3ViZGlyZWN0b3J5PU5vbmUpOgogICAgICAgICBzZWxmLmZpbmRl
ci5hZGRfdHJlZSh0b3BfZGlyZWN0b3J5LCBzdGFydGluZ19zdWJkaXJlY3RvcnkpCkBAIC0xMzcs
MTQgKzExNSw2IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgIGRlZiBfcGFyc2VfYXJncyhz
ZWxmLCBhcmd2PU5vbmUpOgogICAgICAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIo
dXNhZ2U9J3VzYWdlOiAlcHJvZyBbb3B0aW9uc10gW2FyZ3MuLi5dJykKIAotICAgICAgICAjICBD
b25maWd1cmF0aW9uIG9wdGlvbnMgb25seSBlZmZlY3QgdGhlIGJ1aWxkaW5nIG9mIGxsZGJXZWJL
aXRUZXN0ZXIuCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fZ3JvdXAgPSBvcHRwYXJzZS5PcHRpb25H
cm91cChwYXJzZXIsICdDb25maWd1cmF0aW9uIG9wdGlvbnMnKQotICAgICAgICBjb25maWd1cmF0
aW9uX2dyb3VwLmFkZF9vcHRpb24oJy0tZGVidWcnLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29u
c3Q9J0RlYnVnJywgZGVzdD0iY29uZmlndXJhdGlvbiIsCi0gICAgICAgICAgICBoZWxwPSdTZXQg
dGhlIGNvbmZpZ3VyYXRpb24gdG8gRGVidWcnKQotICAgICAgICBjb25maWd1cmF0aW9uX2dyb3Vw
LmFkZF9vcHRpb24oJy0tcmVsZWFzZScsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nUmVs
ZWFzZScsIGRlc3Q9ImNvbmZpZ3VyYXRpb24iLAotICAgICAgICAgICAgaGVscD0nU2V0IHRoZSBj
b25maWd1cmF0aW9uIHRvIFJlbGVhc2UnKQotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbl9ncm91
cChjb25maWd1cmF0aW9uX2dyb3VwKQotCiAgICAgICAgIHVwbG9hZF9ncm91cCA9IG9wdHBhcnNl
Lk9wdGlvbkdyb3VwKHBhcnNlciwgJ1VwbG9hZCBPcHRpb25zJykKICAgICAgICAgdXBsb2FkX2dy
b3VwLmFkZF9vcHRpb25zKHVwbG9hZF9vcHRpb25zKCkpCiAgICAgICAgIHBhcnNlci5hZGRfb3B0
aW9uX2dyb3VwKHVwbG9hZF9ncm91cCkKQEAgLTE3Niw3ICsxNDYsNyBAQCBjbGFzcyBUZXN0ZXIo
b2JqZWN0KToKIAogICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3MoYXJndikKIAotICAg
IGRlZiBydW4oc2VsZiwgd2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHM9RmFsc2UpOgorICAgIGRl
ZiBydW4oc2VsZik6CiAgICAgICAgIHNlbGYuX29wdGlvbnMsIGFyZ3MgPSBzZWxmLl9wYXJzZV9h
cmdzKCkKICAgICAgICAgc2VsZi5wcmludGVyLmNvbmZpZ3VyZShzZWxmLl9vcHRpb25zKQogCkBA
IC0xODcsOSArMTU3LDkgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAgICAgICAgICBfbG9n
LmVycm9yKCdObyB0ZXN0cyB0byBydW4nKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX3J1bl90ZXN0cyhuYW1lcywgd2lsbF9ydW5fbGxkYl93ZWJraXRf
dGVzdHMpCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fdGVzdHMobmFtZXMpCiAKLSAgICBkZWYg
X3J1bl90ZXN0cyhzZWxmLCBuYW1lcywgd2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMpOgorICAg
IGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzKToKICAgICAgICAgIyBNYWtlIHN1cmUgUFlUSE9O
UEFUSCBpcyBzZXQgdXAgcHJvcGVybHkuCiAgICAgICAgIHN5cy5wYXRoID0gc2VsZi5maW5kZXIu
YWRkaXRpb25hbF9wYXRocyhzeXMucGF0aCkgKyBzeXMucGF0aAogCkBAIC0yMDAsMjMgKzE3MCw4
IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAgICBhdXRvaW5zdGFsbF9ldmVyeXRoaW5n
KCkKIAogICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgY29uZmlnID0g
Q29uZmlnKF9ob3N0LmV4ZWN1dGl2ZSwgc2VsZi5maW5kZXIuZmlsZXN5c3RlbSkKLSAgICAgICAg
Y29uZmlndXJhdGlvbl90b191c2UgPSBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24gb3IgY29u
ZmlnLmRlZmF1bHRfY29uZmlndXJhdGlvbigpCi0KLSAgICAgICAgaWYgd2lsbF9ydW5fbGxkYl93
ZWJraXRfdGVzdHM6Ci0gICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdCdWls
ZGluZyBsbGRiV2ViS2l0VGVzdGVyIC4uLicpCi0gICAgICAgICAgICBidWlsZF9sbGRid2Via2l0
dGVzdGVyID0gc2VsZi5maW5kZXIuZmlsZXN5c3RlbS5qb2luKF93ZWJraXRfcm9vdCwgJ1Rvb2xz
JywgJ1NjcmlwdHMnLCAnYnVpbGQtbGxkYndlYmtpdHRlc3RlcicpCi0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgX2hvc3QuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChb
YnVpbGRfbGxkYndlYmtpdHRlc3RlciwgY29uZmlnLmZsYWdfZm9yX2NvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbl90b191c2UpXSwgcXVpZXQ9KG5vdCBib29sKHNlbGYuX29wdGlvbnMudmVyYm9z
ZSkpKQotICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6Ci0gICAgICAgICAgICAg
ICAgX2xvZy5lcnJvcihlLm1lc3NhZ2Vfd2l0aF9vdXRwdXQob3V0cHV0X2xpbWl0PU5vbmUpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgb3MuZW52aXJvblsnTExE
Ql9XRUJLSVRfVEVTVEVSX0VYRUNVVEFCTEUnXSA9IHN0cihzZWxmLmZpbmRlci5maWxlc3lzdGVt
LmpvaW4oY29uZmlnLmJ1aWxkX2RpcmVjdG9yeShjb25maWd1cmF0aW9uX3RvX3VzZSksICdsbGRi
V2ViS2l0VGVzdGVyJykpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5maW5kZXIuZmlsZXN5c3Rl
bS5leGlzdHMob3MuZW52aXJvblsnTExEQl9XRUJLSVRfVEVTVEVSX0VYRUNVVEFCTEUnXSk6Ci0g
ICAgICAgICAgICAgICAgX2xvZy5lcnJvcignRmFpbGVkIHRvIGZpbmQgbGxkYldlYktpdFRlc3Rl
ci4nKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIGlmIHNlbGYuX29w
dGlvbnMuY292ZXJhZ2U6CisgICAgICAgIGlmIGdldGF0dHIoc2VsZi5fb3B0aW9ucywgJ2NvdmVy
YWdlJywgRmFsc2UpOgogICAgICAgICAgICAgX2xvZy53YXJuaW5nKCJDaGVja2luZyBjb2RlIGNv
dmVyYWdlLCBzbyBydW5uaW5nIHRoaW5ncyBzZXJpYWxseSIpCiAgICAgICAgICAgICBzZWxmLl9v
cHRpb25zLmNoaWxkX3Byb2Nlc3NlcyA9IDEKIApAQCAtMjQxLDI2ICsxOTYsMjYgQEAgY2xhc3Mg
VGVzdGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYucHJpbnRlci5udW1fdGVzdHMgPSBsZW4ocGFy
YWxsZWxfdGVzdHMpICsgbGVuKHNlcmlhbF90ZXN0cykKICAgICAgICAgc3RhcnQgPSB0aW1lLnRp
bWUoKQogICAgICAgICB0ZXN0X3J1bm5lciA9IFJ1bm5lcihzZWxmLnByaW50ZXIsIGxvYWRlcikK
LSAgICAgICAgdGVzdF9ydW5uZXIucnVuKHBhcmFsbGVsX3Rlc3RzLCBzZWxmLl9vcHRpb25zLmNo
aWxkX3Byb2Nlc3NlcykKKyAgICAgICAgdGVzdF9ydW5uZXIucnVuKHBhcmFsbGVsX3Rlc3RzLCBn
ZXRhdHRyKHNlbGYuX29wdGlvbnMsICdjaGlsZF9wcm9jZXNzZXMnLCAxKSkKICAgICAgICAgdGVz
dF9ydW5uZXIucnVuKHNlcmlhbF90ZXN0cywgMSkKICAgICAgICAgZW5kX3RpbWUgPSB0aW1lLnRp
bWUoKQogCiAgICAgICAgIHNlbGYucHJpbnRlci5wcmludF9yZXN1bHQodGltZS50aW1lKCkgLSBz
dGFydCkKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmpzb246CisgICAgICAgIGlmIGdldGF0
dHIoc2VsZi5fb3B0aW9ucywgJ2pzb24nLCBGYWxzZSk6CiAgICAgICAgICAgICBfcHJpbnRfcmVz
dWx0c19hc19qc29uKHN5cy5zdGRvdXQsIGl0ZXJ0b29scy5jaGFpbihwYXJhbGxlbF90ZXN0cywg
c2VyaWFsX3Rlc3RzKSwgdGVzdF9ydW5uZXIuZmFpbHVyZXMsIHRlc3RfcnVubmVyLmVycm9ycykK
IAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmpzb25fZmlsZV9uYW1lOgorICAgICAgICBpZiBn
ZXRhdHRyKHNlbGYuX29wdGlvbnMsICdqc29uX2ZpbGVfbmFtZScsIE5vbmUpOgogICAgICAgICAg
ICAgc2VsZi5fb3B0aW9ucy5qc29uX2ZpbGVfbmFtZSA9IG9zLnBhdGguYWJzcGF0aChzZWxmLl9v
cHRpb25zLmpzb25fZmlsZV9uYW1lKQogICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuX29wdGlv
bnMuanNvbl9maWxlX25hbWUsICd3JykgYXMganNvbl9maWxlOgogICAgICAgICAgICAgICAgIF9w
cmludF9yZXN1bHRzX2FzX2pzb24oanNvbl9maWxlLCBpdGVydG9vbHMuY2hhaW4ocGFyYWxsZWxf
dGVzdHMsIHNlcmlhbF90ZXN0cyksIHRlc3RfcnVubmVyLmZhaWx1cmVzLCB0ZXN0X3J1bm5lci5l
cnJvcnMpCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb3ZlcmFnZToKKyAgICAgICAgaWYg
Z2V0YXR0cihzZWxmLl9vcHRpb25zLCAnY292ZXJhZ2UnLCBGYWxzZSk6CiAgICAgICAgICAgICBj
b3Yuc3RvcCgpCiAgICAgICAgICAgICBjb3Yuc2F2ZSgpCiAKICAgICAgICAgZmFpbGVkX3VwbG9h
ZHMgPSAwCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMucmVwb3J0X3VybHM6CisgICAgICAgIGlm
IGdldGF0dHIoc2VsZi5fb3B0aW9ucywgJ3JlcG9ydF91cmxzJywgTm9uZSk6CiAgICAgICAgICAg
ICBzZWxmLnByaW50ZXIubWV0ZXIud3JpdGVsbignXG4nKQogICAgICAgICAgICAgc2VsZi5wcmlu
dGVyLndyaXRlX3VwZGF0ZSgnUHJlcGFyaW5nIHVwbG9hZCBkYXRhIC4uLicpCiAKQEAgLTI3OCw3
ICsyMzMsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgcGxh
dGZvcm09X2hvc3QucGxhdGZvcm0ub3NfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgdmVyc2lv
bj1zdHIoX2hvc3QucGxhdGZvcm0ub3NfdmVyc2lvbiksCiAgICAgICAgICAgICAgICAgICAgIHZl
cnNpb25fbmFtZT1faG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9uX25hbWUoKSwKLSAgICAgICAgICAg
ICAgICAgICAgc3R5bGU9J2FzYW4nIGlmIGNvbmZpZy5hc2FuIGVsc2UgY29uZmlndXJhdGlvbl90
b191c2UubG93ZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgc3R5bGU9c2VsZi51cGxvYWRfc3R5
bGUsCiAgICAgICAgICAgICAgICAgICAgIHNkaz1faG9zdC5wbGF0Zm9ybS5idWlsZF92ZXJzaW9u
KCksCiAgICAgICAgICAgICAgICAgICAgIGZsYXZvcj1zZWxmLl9vcHRpb25zLnJlc3VsdF9yZXBv
cnRfZmxhdm9yLAogICAgICAgICAgICAgICAgICksCkBAIC0zMDAsNyArMjU1LDcgQEAgY2xhc3Mg
VGVzdGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgZmFpbGVkX3VwbG9hZHMgPSBmYWlsZWRf
dXBsb2FkcyBpZiB1cGxvYWQudXBsb2FkKHVybCwgbG9nX2xpbmVfZnVuYz1zZWxmLnByaW50ZXIu
bWV0ZXIud3JpdGVsbikgZWxzZSAoZmFpbGVkX3VwbG9hZHMgKyAxKQogICAgICAgICAgICAgc2Vs
Zi5wcmludGVyLm1ldGVyLndyaXRlbG4oJ1VwbG9hZHMgY29tcGxldGVkIScpCiAKLSAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5jb3ZlcmFnZToKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRp
b25zLCAnY292ZXJhZ2UnLCBGYWxzZSk6CiAgICAgICAgICAgICBjb3YucmVwb3J0KHNob3dfbWlz
c2luZz1GYWxzZSkKIAogICAgICAgICByZXR1cm4gbm90IHNlbGYucHJpbnRlci5udW1fZXJyb3Jz
IGFuZCBub3Qgc2VsZi5wcmludGVyLm51bV9mYWlsdXJlcyBhbmQgbm90IGZhaWxlZF91cGxvYWRz
CkBAIC0zMjIsNyArMjc3LDcgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAgZGVmIF90ZXN0
X25hbWVzKHNlbGYsIGxvYWRlciwgbmFtZXMpOgogICAgICAgICBwYXJhbGxlbF90ZXN0X21ldGhv
ZF9wcmVmaXhlcyA9IFsndGVzdF8nXQogICAgICAgICBzZXJpYWxfdGVzdF9tZXRob2RfcHJlZml4
ZXMgPSBbJ3NlcmlhbF90ZXN0XyddCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuaW50ZWdyYXRp
b25fdGVzdHM6CisgICAgICAgIGlmIGdldGF0dHIoc2VsZi5fb3B0aW9ucywgJ2ludGVncmF0aW9u
X3Rlc3RzJywgTm9uZSk6CiAgICAgICAgICAgICBwYXJhbGxlbF90ZXN0X21ldGhvZF9wcmVmaXhl
cy5hcHBlbmQoJ2ludGVncmF0aW9uX3Rlc3RfJykKICAgICAgICAgICAgIHNlcmlhbF90ZXN0X21l
dGhvZF9wcmVmaXhlcy5hcHBlbmQoJ3NlcmlhbF9pbnRlZ3JhdGlvbl90ZXN0XycpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385272</attachid>
            <date>2019-12-10 09:38:31 -0800</date>
            <delta_ts>2019-12-10 11:30:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187916-20191210093830.patch</filename>
            <type>text/plain</type>
            <size>17009</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MzMxMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE5LTEyLTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgdGVzdC1sbGRiLXdlYmtpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQ6IEFk
ZGVkLgorICAgICAgICAoTm9BY3Rpb24pOiBBcmdwYXJzZSBhY3Rpb24gd2hpY2ggc3VwcG9ydCAt
LTx2YXJpYWJsZT4gYW5kIC0tbm8tPHZhcmlhYmxlPi4KKyAgICAgICAgKExsZGJUZXN0ZXIpOiBX
cmFwcGVyIGFyb3VuZCB3ZWJraXRweSdzIFRlc3RlciBjbGFzcy4KKyAgICAgICAgKExsZGJUZXN0
ZXIucGFyc2VfYXJncyk6IFNwZWNpYWxpemVkIGFyZ3BhcnNlIGZvciBsbGRiIHRlc3RzLgorICAg
ICAgICAoTGxkYlRlc3Rlci5ydW4pOiBTZXR1cCBlbnZpcm9ubWVudCBhbmQgYnVpbGQgbGxkYiB0
ZXN0IHJ1bm5lci4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dGVzdC9tYWluLnB5OgorICAgICAgICAobWFpbik6IFJlbW92ZSBsbGRiIHRlc3RpbmcgY29kZS4K
KyAgICAgICAgKFRlc3Rlci5fcGFyc2VfYXJncyk6IERpdHRvLgorICAgICAgICAoVGVzdGVyLnJ1
bik6IERpdHRvLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBEaXR0by4KKyAgICAgICAg
KFRlc3Rlci5fdGVzdF9uYW1lcyk6IERpdHRvLgorICAgICAgICAoX3N1cHBvcnRzX2J1aWxkaW5n
X2FuZF9ydW5uaW5nX2xsZGJfdGVzdHMpOiBEZWxldGVkLgorCiAyMDE5LTEyLTA5ICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0LXdlYmtpdHB5OiBS
ZW1vdmUgLS08Y29uZmlndXJhdGlvbj4gZmxhZ3MgZnJvbSBDSQpJbmRleDogVG9vbHMvU2NyaXB0
cy90ZXN0LWxsZGItd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvdGVzdC1sbGRi
LXdlYmtpdAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
IyBDb3B5cmlnaHQgKGMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMK
K2ltcG9ydCB0aW1lCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKK2Zy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitm
cm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gd2Via2l0cHkudGVz
dC5tYWluIGltcG9ydCBUZXN0ZXIKKworRVhDRVBUSU9OQUxfRVhJVF9TVEFUVVMgPSAtMQorCisK
K2NsYXNzIE5vQWN0aW9uKGFyZ3BhcnNlLkFjdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG9wdGlvbl9zdHJpbmdzLCBkZXN0LCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKE5vQWN0aW9u
LCBzZWxmKS5fX2luaXRfXyhvcHRpb25fc3RyaW5ncywgZGVzdCwgbmFyZ3M9MCwgKiprd2FyZ3Mp
CisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2VyLCBuYW1lc3BhY2UsIHZhbHVlcywgb3B0
aW9uX3N0cmluZyk6CisgICAgICAgIHNldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIEZhbHNl
IGlmIG9wdGlvbl9zdHJpbmcuc3RhcnRzd2l0aCgnLS1ubycpIGVsc2UgVHJ1ZSkKKworCitjbGFz
cyBMbGRiVGVzdGVyKFRlc3Rlcik6CisKKyAgICBkZWYgcGFyc2VfYXJncyhzZWxmKToKKyAgICAg
ICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0Egc2NyaXB0
IHdoaWNoIHRlc3RzIFdlYktpdFwncyBsbGRiIG1hY3JvcyBhbmQgaW50ZWdyYXRpb24nKQorICAg
ICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWJ1aWxkJywgJy0tbm8tYnVpbGQnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2J1aWxkJywgYWN0aW9uPU5vQWN0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nRW5hYmxlIG9yIGRp
c2FibGUgYnVpbGRpbmcgbGxkYiB0ZXN0IHJ1bm5lciBiZWZvcmUgcnVubmluZyB0aGUgdGVzdCAo
ZW5hYmxlZCBieSBkZWZhdWx0KScpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcm9v
dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncm9vdCcsIGFjdGlvbj0nc3Rv
cmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nUGF0
aCB0byBhIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBleGVjdXRhYmxlcyBuZWVkZWQgdG8gcnVu
IHRlc3RzLicpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScs
IGFjdGlvbj0nY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9MCwg
aGVscD0nVmVyYm9zZSBvdXRwdXQgKHNwZWNpZnkgb25jZSBmb3IgaW5kaXZpZHVhbCB0ZXN0IHJl
c3VsdHMsIHR3aWNlIGZvciBkZWJ1ZyBtZXNzYWdlcyknKQorICAgICAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KCctdCcsICctLXRpbWluZycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0nRGlzcGxheSBwZXItdGVzdCBl
eGVjdXRpb24gdGltZSAoaW1wbGllcyAtLXZlcmJvc2UpJykKKyAgICAgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0nUnVuIHF1aWV0bHkgKGVycm9y
cywgd2FybmluZ3MsIGFuZCBwcm9ncmVzcyBvbmx5KScpCisgICAgICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoJy1wJywgJy0tcGFzcy10aHJvdWdoJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVs
dD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdCZSBkZWJ1Z2dlciBm
cmllbmRseSBieSBwYXNzaW5nIGNhcHR1cmVkIG91dHB1dCB0aHJvdWdoIHRvIHRoZSBzeXN0ZW0n
KQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRlYnVnJywgY29uc3Q9J2RlYnVnJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjb25maWd1cmF0aW9uJywgYWN0aW9u
PSdzdG9yZV9jb25zdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25l
LCBoZWxwPSdBbGlhcyBmb3IgY29uZmlndXJhdGlvbj1kZWJ1Zy4nKQorICAgICAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KCctLXJlbGVhc2UnLCBjb25zdD0ncmVsZWFzZScsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbicsIGFjdGlvbj0nc3RvcmVfY29uc3Qn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nQWxpYXMg
Zm9yIGNvbmZpZ3VyYXRpb249cmVsZWFzZS4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KCctLWNvbmZpZ3VyYXRpb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2Nv
bmZpZ3VyYXRpb24nLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0PU5vbmUsIGhlbHA9J1NldCBjb25maWd1cmF0aW9uIChEZWJ1Zy9SZWxlYXNlL0FT
YW4vZWN0LikgdG8gYnVpbGQgYW5kIHRlc3QgdGhlIGxsZGIgdGVzdCBydW5uZXIgd2l0aC4nKQor
ICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCduYW1lcycsIG5hcmdzPScqJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J05hbWUgKG9yIG5hbWVzKSBv
ZiB0ZXN0LCBvciB0ZXN0IHN1aXRlLCB0byBiZSBydW4uJykKKyAgICAgICAgcmV0dXJuIHBhcnNl
ci5wYXJzZV9hcmdzKCkKKworICAgIGRlZiBydW4oc2VsZiwgaG9zdD1Ob25lLCB3ZWJraXRfcm9v
dD1Ob25lKToKKyAgICAgICAgaG9zdCA9IGhvc3Qgb3IgSG9zdCgpCisgICAgICAgIHNlbGYuX29w
dGlvbnMgPSBzZWxmLnBhcnNlX2FyZ3MoKQorICAgICAgICBzZWxmLnByaW50ZXIuY29uZmlndXJl
KHNlbGYuX29wdGlvbnMpCisgICAgICAgIHNlbGYuZmluZGVyLmNsZWFuX3RyZWVzKCkKKworICAg
ICAgICBuYW1lcyA9IHNlbGYuZmluZGVyLmZpbmRfbmFtZXMoc2VsZi5fb3B0aW9ucy5uYW1lcyBv
ciBbXSwgVHJ1ZSkKKyAgICAgICAgaWYgbm90IG5hbWVzOgorICAgICAgICAgICAgX2xvZy5lcnJv
cignTm8gdGVzdHMgdG8gcnVuJykKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAg
IGNvbmZpZyA9IENvbmZpZyhob3N0LmV4ZWN1dGl2ZSwgc2VsZi5maW5kZXIuZmlsZXN5c3RlbSkK
KyAgICAgICAgY29uZmlndXJhdGlvbl90b191c2UgPSBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRp
b24gb3IgY29uZmlnLmRlZmF1bHRfY29uZmlndXJhdGlvbigpCisgICAgICAgIHNlbGYudXBsb2Fk
X3N0eWxlID0gY29uZmlndXJhdGlvbl90b191c2UubG93ZXIoKQorCisgICAgICAgIGlmIChub3Qg
c2VsZi5fb3B0aW9ucy5yb290IGFuZCBzZWxmLl9vcHRpb25zLmJ1aWxkIGlzIE5vbmUpIG9yIHNl
bGYuX29wdGlvbnMuYnVpbGQ6CisgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRl
KCdCdWlsZGluZyBsbGRiV2ViS2l0VGVzdGVyIC4uLicpCisgICAgICAgICAgICBidWlsZF9sbGRi
d2Via2l0dGVzdGVyID0gc2VsZi5maW5kZXIuZmlsZXN5c3RlbS5qb2luKHdlYmtpdF9yb290LCAn
VG9vbHMnLCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Via2l0dGVzdGVyJykKKyAgICAgICAgICAg
IHRyeToKKyAgICAgICAgICAgICAgICBob3N0LmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2Zh
aWwoCisgICAgICAgICAgICAgICAgICAgIFtidWlsZF9sbGRid2Via2l0dGVzdGVyLCBjb25maWcu
ZmxhZ19mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3VzZSldLAorICAgICAgICAg
ICAgICAgICAgICBxdWlldD0obm90IGJvb2woc2VsZi5fb3B0aW9ucy52ZXJib3NlKSksCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6CisgICAg
ICAgICAgICAgICAgX2xvZy5lcnJvcihlLm1lc3NhZ2Vfd2l0aF9vdXRwdXQob3V0cHV0X2xpbWl0
PU5vbmUpKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIG9zLmVudmly
b25bJ0xMREJfV0VCS0lUX1RFU1RFUl9FWEVDVVRBQkxFJ10gPSBzdHIoc2VsZi5maW5kZXIuZmls
ZXN5c3RlbS5qb2luKGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoY29uZmlndXJhdGlvbl90b191c2Up
LCAnbGxkYldlYktpdFRlc3RlcicpKQorICAgICAgICBpZiBub3Qgc2VsZi5maW5kZXIuZmlsZXN5
c3RlbS5leGlzdHMob3MuZW52aXJvblsnTExEQl9XRUJLSVRfVEVTVEVSX0VYRUNVVEFCTEUnXSk6
CisgICAgICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQgdG8gZmluZCBsbGRiV2ViS2l0VGVzdGVy
LicpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICByZXR1cm4gc2VsZi5fcnVu
X3Rlc3RzKG5hbWVzKQorCisKK2RlZiBtYWluKCk6CisgICAgdGVzdGVyID0gTGxkYlRlc3Rlcigp
CisgICAgaG9zdCA9IEhvc3QoKQorICAgIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSA9IGhvc3QucGF0
aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKQorICAgIGlmIG5vdCBob3N0LmZpbGVzeXN0ZW0u
aXNkaXIobGxkYl9weXRob25fZGlyZWN0b3J5KToKKyAgICAgICAgdGVzdGVyLnBhcnNlX2FyZ3Mo
KQorICAgICAgICBwcmludCgnbGxkYiB0ZXN0cyBhcmUgb25seSBzdXBwb3J0ZWQgb24gbWFjT1Mg
d2l0aCBYY29kZSBpbnN0YWxsZWQnKQorICAgICAgICByZXR1cm4gMQorCisgICAgdXAgPSBob3N0
LmZpbGVzeXN0ZW0uZGlybmFtZQorICAgIHdlYmtpdF9yb290ID0gdXAodXAodXAoaG9zdC5maWxl
c3lzdGVtLmFic3BhdGgoX19maWxlX18pKSkpCisKKyAgICBpZiBsbGRiX3B5dGhvbl9kaXJlY3Rv
cnkgbm90IGluIHN5cy5wYXRoOgorICAgICAgICBzeXMucGF0aC5hcHBlbmQobGxkYl9weXRob25f
ZGlyZWN0b3J5KQorICAgIHRlc3Rlci5hZGRfdHJlZShob3N0LmZpbGVzeXN0ZW0uam9pbih3ZWJr
aXRfcm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKworICAgIHJldHVybiBub3QgdGVzdGVyLnJ1biho
b3N0PWhvc3QsIHdlYmtpdF9yb290PXdlYmtpdF9yb290KQorCisKK2lmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9v
bHMvU2NyaXB0cy90ZXN0LWxsZGItd2Via2l0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRh
YmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkJKHJldmlzaW9uIDI1MzMxMSkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW0KIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi51
bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCi1mcm9tIHdlYmtpdHB5LnBvcnQu
Y29uZmlnIGltcG9ydCBDb25maWcKIGZyb20gd2Via2l0cHkudGVzdC5maW5kZXIgaW1wb3J0IEZp
bmRlcgogZnJvbSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1wb3J0IFByaW50ZXIKIGZyb20gd2Vi
a2l0cHkudGVzdC5ydW5uZXIgaW1wb3J0IFJ1bm5lciwgdW5pdF90ZXN0X25hbWUKQEAgLTY4LDE5
ICs2Nyw2IEBAIGRlZiBtYWluKCk6CiAgICAgaWYgbm90IChzeXMucGxhdGZvcm0uc3RhcnRzd2l0
aCgnd2luJykgb3Igc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nKToKICAgICAgICAgdGVzdGVyLmFk
ZF90cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdTb3VyY2UnLCAnV2ViS2l0JywgJ1Nj
cmlwdHMnKSwgJ3dlYmtpdCcpCiAKLSAgICBsbGRiX3B5dGhvbl9kaXJlY3RvcnkgPSBfaG9zdC5w
YXRoX3RvX2xsZGJfcHl0aG9uX2RpcmVjdG9yeSgpCi0gICAgaWYgbm90IF9zdXBwb3J0c19idWls
ZGluZ19hbmRfcnVubmluZ19sbGRiX3Rlc3RzKCk6Ci0gICAgICAgIF9sb2cuaW5mbygiU2tpcHBp
bmcgbGxkYl93ZWJraXQgdGVzdHM7IG5vdCB5ZXQgc3VwcG9ydGVkIG9uIG1hY09TIENhdGFsaW5h
LiIpCi0gICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gRmFsc2UKLSAgICBlbGlm
IG5vdCBvcy5wYXRoLmlzZGlyKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSk6Ci0gICAgICAgIF9sb2cu
aW5mbygiU2tpcHBpbmcgbGxkYl93ZWJraXQgdGVzdHM7IGNvdWxkIG5vdCBmaW5kIHBhdGggdG8g
bGxkYi5weSAne30nLiIuZm9ybWF0KGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkpCi0gICAgICAgIHdp
bGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gRmFsc2UKLSAgICBlbHNlOgotICAgICAgICBpZiBs
bGRiX3B5dGhvbl9kaXJlY3Rvcnkgbm90IGluIHN5cy5wYXRoOgotICAgICAgICAgICAgc3lzLnBh
dGguYXBwZW5kKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkKLSAgICAgICAgdGVzdGVyLmFkZF90cmVl
KG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdsbGRiJykpCi0gICAgICAgIHdp
bGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gVHJ1ZQotCiAgICAgdGVzdGVyLnNraXAoKCd3ZWJr
aXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwgJ2FyZSByZWFsbHksIHJl
YWxseSwgc2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4n
KToKICAgICAgICAgdGVzdGVyLnNraXAoKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQnLCAnd2Vi
a2l0cHkuY29tbW9uLmNvbmZpZycsICd3ZWJraXRweS50b29sJyksICdmYWlsIGhvcnJpYmx5IG9u
IHdpbjMyJywgNTQ1MjYpCkBAIC05OCwxNiArODQsNyBAQCBkZWYgbWFpbigpOgogICAgIGVsc2U6
CiAgICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgUXVldWVTdGF0dXNTZXJ2ZXIgdGVzdHM7IHRo
ZSBHb29nbGUgQXBwRW5naW5lIFB5dGhvbiBTREsgaXMgbm90IGluc3RhbGxlZC4nKQogCi0gICAg
cmV0dXJuIG5vdCB0ZXN0ZXIucnVuKHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzPXdpbGxfcnVu
X2xsZGJfd2Via2l0X3Rlc3RzKQotCi0KLWRlZiBfc3VwcG9ydHNfYnVpbGRpbmdfYW5kX3J1bm5p
bmdfbGxkYl90ZXN0cygpOgotICAgICMgRklYTUU6IFJlbW92ZSB3aGVuIHRlc3QtbGxkYiBpcyBp
biBpdHMgb3duIHNjcmlwdAotICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4NzkxNgotICAgIGJ1aWxkX3ZlcnNpb24gPSBfaG9zdC5wbGF0Zm9ybS5idWlsZF92
ZXJzaW9uKCkKLSAgICBpZiBidWlsZF92ZXJzaW9uIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBG
YWxzZQotICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIG5vdCB0ZXN0ZXIucnVuKCkKIAogCiBk
ZWYgX3ByaW50X3Jlc3VsdHNfYXNfanNvbihzdHJlYW0sIGFsbF90ZXN0X25hbWVzLCBmYWlsdXJl
cywgZXJyb3JzKToKQEAgLTEyNyw2ICsxMDQsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAg
ICAgICAgc2VsZi5maW5kZXIgPSBGaW5kZXIoZmlsZXN5c3RlbSBvciBGaWxlU3lzdGVtKCkpCiAg
ICAgICAgIHNlbGYucHJpbnRlciA9IFByaW50ZXIoc3lzLnN0ZGVycikKICAgICAgICAgc2VsZi5f
b3B0aW9ucyA9IE5vbmUKKyAgICAgICAgc2VsZi51cGxvYWRfc3R5bGUgPSAncmVsZWFzZScKIAog
ICAgIGRlZiBhZGRfdHJlZShzZWxmLCB0b3BfZGlyZWN0b3J5LCBzdGFydGluZ19zdWJkaXJlY3Rv
cnk9Tm9uZSk6CiAgICAgICAgIHNlbGYuZmluZGVyLmFkZF90cmVlKHRvcF9kaXJlY3RvcnksIHN0
YXJ0aW5nX3N1YmRpcmVjdG9yeSkKQEAgLTEzNywxNCArMTE1LDYgQEAgY2xhc3MgVGVzdGVyKG9i
amVjdCk6CiAgICAgZGVmIF9wYXJzZV9hcmdzKHNlbGYsIGFyZ3Y9Tm9uZSk6CiAgICAgICAgIHBh
cnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0ndXNhZ2U6ICVwcm9nIFtvcHRpb25z
XSBbYXJncy4uLl0nKQogCi0gICAgICAgICMgIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbmx5IGVm
ZmVjdCB0aGUgYnVpbGRpbmcgb2YgbGxkYldlYktpdFRlc3Rlci4KLSAgICAgICAgY29uZmlndXJh
dGlvbl9ncm91cCA9IG9wdHBhcnNlLk9wdGlvbkdyb3VwKHBhcnNlciwgJ0NvbmZpZ3VyYXRpb24g
b3B0aW9ucycpCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fZ3JvdXAuYWRkX29wdGlvbignLS1kZWJ1
ZycsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nRGVidWcnLCBkZXN0PSJjb25maWd1cmF0
aW9uIiwKLSAgICAgICAgICAgIGhlbHA9J1NldCB0aGUgY29uZmlndXJhdGlvbiB0byBEZWJ1Zycp
Ci0gICAgICAgIGNvbmZpZ3VyYXRpb25fZ3JvdXAuYWRkX29wdGlvbignLS1yZWxlYXNlJywgYWN0
aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdSZWxlYXNlJywgZGVzdD0iY29uZmlndXJhdGlvbiIs
Ci0gICAgICAgICAgICBoZWxwPSdTZXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gUmVsZWFzZScpCi0g
ICAgICAgIHBhcnNlci5hZGRfb3B0aW9uX2dyb3VwKGNvbmZpZ3VyYXRpb25fZ3JvdXApCi0KICAg
ICAgICAgdXBsb2FkX2dyb3VwID0gb3B0cGFyc2UuT3B0aW9uR3JvdXAocGFyc2VyLCAnVXBsb2Fk
IE9wdGlvbnMnKQogICAgICAgICB1cGxvYWRfZ3JvdXAuYWRkX29wdGlvbnModXBsb2FkX29wdGlv
bnMoKSkKICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAodXBsb2FkX2dyb3VwKQpAQCAt
MTc2LDcgKzE0Niw3IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBw
YXJzZXIucGFyc2VfYXJncyhhcmd2KQogCi0gICAgZGVmIHJ1bihzZWxmLCB3aWxsX3J1bl9sbGRi
X3dlYmtpdF90ZXN0cz1GYWxzZSk6CisgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgc2VsZi5f
b3B0aW9ucywgYXJncyA9IHNlbGYuX3BhcnNlX2FyZ3MoKQogICAgICAgICBzZWxmLnByaW50ZXIu
Y29uZmlndXJlKHNlbGYuX29wdGlvbnMpCiAKQEAgLTE4Nyw5ICsxNTcsOSBAQCBjbGFzcyBUZXN0
ZXIob2JqZWN0KToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ05vIHRlc3RzIHRvIHJ1bicpCiAg
ICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3Rz
KG5hbWVzLCB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cykKKyAgICAgICAgcmV0dXJuIHNlbGYu
X3J1bl90ZXN0cyhuYW1lcykKIAotICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzLCB3aWxs
X3J1bl9sbGRiX3dlYmtpdF90ZXN0cyk6CisgICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwgbmFtZXMp
OgogICAgICAgICAjIE1ha2Ugc3VyZSBQWVRIT05QQVRIIGlzIHNldCB1cCBwcm9wZXJseS4KICAg
ICAgICAgc3lzLnBhdGggPSBzZWxmLmZpbmRlci5hZGRpdGlvbmFsX3BhdGhzKHN5cy5wYXRoKSAr
IHN5cy5wYXRoCiAKQEAgLTIwMCwyMyArMTcwLDggQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAg
ICAgICAgIGF1dG9pbnN0YWxsX2V2ZXJ5dGhpbmcoKQogCiAgICAgICAgIHN0YXJ0X3RpbWUgPSB0
aW1lLnRpbWUoKQotICAgICAgICBjb25maWcgPSBDb25maWcoX2hvc3QuZXhlY3V0aXZlLCBzZWxm
LmZpbmRlci5maWxlc3lzdGVtKQotICAgICAgICBjb25maWd1cmF0aW9uX3RvX3VzZSA9IHNlbGYu
X29wdGlvbnMuY29uZmlndXJhdGlvbiBvciBjb25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkK
LQotICAgICAgICBpZiB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0czoKLSAgICAgICAgICAgIHNl
bGYucHJpbnRlci53cml0ZV91cGRhdGUoJ0J1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIgLi4uJykK
LSAgICAgICAgICAgIGJ1aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIgPSBzZWxmLmZpbmRlci5maWxlc3lz
dGVtLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Vi
a2l0dGVzdGVyJykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfaG9zdC5leGVj
dXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKFtidWlsZF9sbGRid2Via2l0dGVzdGVyLCBjb25m
aWcuZmxhZ19mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3VzZSldLCBxdWlldD0o
bm90IGJvb2woc2VsZi5fb3B0aW9ucy52ZXJib3NlKSkpCi0gICAgICAgICAgICBleGNlcHQgU2Ny
aXB0RXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGUubWVzc2FnZV93aXRo
X291dHB1dChvdXRwdXRfbGltaXQ9Tm9uZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl
Ci0gICAgICAgICAgICBvcy5lbnZpcm9uWydMTERCX1dFQktJVF9URVNURVJfRVhFQ1VUQUJMRSdd
ID0gc3RyKHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0uam9pbihjb25maWcuYnVpbGRfZGlyZWN0b3J5
KGNvbmZpZ3VyYXRpb25fdG9fdXNlKSwgJ2xsZGJXZWJLaXRUZXN0ZXInKSkKLSAgICAgICAgICAg
IGlmIG5vdCBzZWxmLmZpbmRlci5maWxlc3lzdGVtLmV4aXN0cyhvcy5lbnZpcm9uWydMTERCX1dF
QktJVF9URVNURVJfRVhFQ1VUQUJMRSddKToKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdG
YWlsZWQgdG8gZmluZCBsbGRiV2ViS2l0VGVzdGVyLicpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb3ZlcmFnZToKKyAgICAgICAgaWYg
Z2V0YXR0cihzZWxmLl9vcHRpb25zLCAnY292ZXJhZ2UnLCBGYWxzZSk6CiAgICAgICAgICAgICBf
bG9nLndhcm5pbmcoIkNoZWNraW5nIGNvZGUgY292ZXJhZ2UsIHNvIHJ1bm5pbmcgdGhpbmdzIHNl
cmlhbGx5IikKICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzID0gMQog
CkBAIC0yNDEsMjYgKzE5NiwyNiBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgc2Vs
Zi5wcmludGVyLm51bV90ZXN0cyA9IGxlbihwYXJhbGxlbF90ZXN0cykgKyBsZW4oc2VyaWFsX3Rl
c3RzKQogICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCiAgICAgICAgIHRlc3RfcnVubmVyID0g
UnVubmVyKHNlbGYucHJpbnRlciwgbG9hZGVyKQotICAgICAgICB0ZXN0X3J1bm5lci5ydW4ocGFy
YWxsZWxfdGVzdHMsIHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKQorICAgICAgICB0ZXN0
X3J1bm5lci5ydW4ocGFyYWxsZWxfdGVzdHMsIGdldGF0dHIoc2VsZi5fb3B0aW9ucywgJ2NoaWxk
X3Byb2Nlc3NlcycsIDEpKQogICAgICAgICB0ZXN0X3J1bm5lci5ydW4oc2VyaWFsX3Rlc3RzLCAx
KQogICAgICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgpCiAKICAgICAgICAgc2VsZi5wcmludGVy
LnByaW50X3Jlc3VsdCh0aW1lLnRpbWUoKSAtIHN0YXJ0KQogCi0gICAgICAgIGlmIHNlbGYuX29w
dGlvbnMuanNvbjoKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAnanNvbicsIEZh
bHNlKToKICAgICAgICAgICAgIF9wcmludF9yZXN1bHRzX2FzX2pzb24oc3lzLnN0ZG91dCwgaXRl
cnRvb2xzLmNoYWluKHBhcmFsbGVsX3Rlc3RzLCBzZXJpYWxfdGVzdHMpLCB0ZXN0X3J1bm5lci5m
YWlsdXJlcywgdGVzdF9ydW5uZXIuZXJyb3JzKQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMu
anNvbl9maWxlX25hbWU6CisgICAgICAgIGlmIGdldGF0dHIoc2VsZi5fb3B0aW9ucywgJ2pzb25f
ZmlsZV9uYW1lJywgTm9uZSk6CiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmpzb25fZmlsZV9u
YW1lID0gb3MucGF0aC5hYnNwYXRoKHNlbGYuX29wdGlvbnMuanNvbl9maWxlX25hbWUpCiAgICAg
ICAgICAgICB3aXRoIG9wZW4oc2VsZi5fb3B0aW9ucy5qc29uX2ZpbGVfbmFtZSwgJ3cnKSBhcyBq
c29uX2ZpbGU6CiAgICAgICAgICAgICAgICAgX3ByaW50X3Jlc3VsdHNfYXNfanNvbihqc29uX2Zp
bGUsIGl0ZXJ0b29scy5jaGFpbihwYXJhbGxlbF90ZXN0cywgc2VyaWFsX3Rlc3RzKSwgdGVzdF9y
dW5uZXIuZmFpbHVyZXMsIHRlc3RfcnVubmVyLmVycm9ycykKIAotICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLmNvdmVyYWdlOgorICAgICAgICBpZiBnZXRhdHRyKHNlbGYuX29wdGlvbnMsICdjb3Zl
cmFnZScsIEZhbHNlKToKICAgICAgICAgICAgIGNvdi5zdG9wKCkKICAgICAgICAgICAgIGNvdi5z
YXZlKCkKIAogICAgICAgICBmYWlsZWRfdXBsb2FkcyA9IDAKLSAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5yZXBvcnRfdXJsczoKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAncmVw
b3J0X3VybHMnLCBOb25lKToKICAgICAgICAgICAgIHNlbGYucHJpbnRlci5tZXRlci53cml0ZWxu
KCdcbicpCiAgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdQcmVwYXJpbmcg
dXBsb2FkIGRhdGEgLi4uJykKIApAQCAtMjc4LDcgKzIzMyw3IEBAIGNsYXNzIFRlc3RlcihvYmpl
Y3QpOgogICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT1faG9zdC5wbGF0Zm9ybS5vc19uYW1l
LAogICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPXN0cihfaG9zdC5wbGF0Zm9ybS5vc192ZXJz
aW9uKSwKICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9uYW1lPV9ob3N0LnBsYXRmb3JtLm9z
X3ZlcnNpb25fbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICBzdHlsZT0nYXNhbicgaWYgY29u
ZmlnLmFzYW4gZWxzZSBjb25maWd1cmF0aW9uX3RvX3VzZS5sb3dlcigpLAorICAgICAgICAgICAg
ICAgICAgICBzdHlsZT1zZWxmLnVwbG9hZF9zdHlsZSwKICAgICAgICAgICAgICAgICAgICAgc2Rr
PV9ob3N0LnBsYXRmb3JtLmJ1aWxkX3ZlcnNpb24oKSwKICAgICAgICAgICAgICAgICAgICAgZmxh
dm9yPXNlbGYuX29wdGlvbnMucmVzdWx0X3JlcG9ydF9mbGF2b3IsCiAgICAgICAgICAgICAgICAg
KSwKQEAgLTMwMCw3ICsyNTUsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgICAg
ICAgICBmYWlsZWRfdXBsb2FkcyA9IGZhaWxlZF91cGxvYWRzIGlmIHVwbG9hZC51cGxvYWQodXJs
LCBsb2dfbGluZV9mdW5jPXNlbGYucHJpbnRlci5tZXRlci53cml0ZWxuKSBlbHNlIChmYWlsZWRf
dXBsb2FkcyArIDEpCiAgICAgICAgICAgICBzZWxmLnByaW50ZXIubWV0ZXIud3JpdGVsbignVXBs
b2FkcyBjb21wbGV0ZWQhJykKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdlOgor
ICAgICAgICBpZiBnZXRhdHRyKHNlbGYuX29wdGlvbnMsICdjb3ZlcmFnZScsIEZhbHNlKToKICAg
ICAgICAgICAgIGNvdi5yZXBvcnQoc2hvd19taXNzaW5nPUZhbHNlKQogCiAgICAgICAgIHJldHVy
biBub3Qgc2VsZi5wcmludGVyLm51bV9lcnJvcnMgYW5kIG5vdCBzZWxmLnByaW50ZXIubnVtX2Zh
aWx1cmVzIGFuZCBub3QgZmFpbGVkX3VwbG9hZHMKQEAgLTMyMiw3ICsyNzcsNyBAQCBjbGFzcyBU
ZXN0ZXIob2JqZWN0KToKICAgICBkZWYgX3Rlc3RfbmFtZXMoc2VsZiwgbG9hZGVyLCBuYW1lcyk6
CiAgICAgICAgIHBhcmFsbGVsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzID0gWyd0ZXN0XyddCiAgICAg
ICAgIHNlcmlhbF90ZXN0X21ldGhvZF9wcmVmaXhlcyA9IFsnc2VyaWFsX3Rlc3RfJ10KLSAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy5pbnRlZ3JhdGlvbl90ZXN0czoKKyAgICAgICAgaWYgZ2V0YXR0
cihzZWxmLl9vcHRpb25zLCAnaW50ZWdyYXRpb25fdGVzdHMnLCBOb25lKToKICAgICAgICAgICAg
IHBhcmFsbGVsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzLmFwcGVuZCgnaW50ZWdyYXRpb25fdGVzdF8n
KQogICAgICAgICAgICAgc2VyaWFsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzLmFwcGVuZCgnc2VyaWFs
X2ludGVncmF0aW9uX3Rlc3RfJykKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385289</attachid>
            <date>2019-12-10 11:30:42 -0800</date>
            <delta_ts>2019-12-10 15:16:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187916-20191210113041.patch</filename>
            <type>text/plain</type>
            <size>17177</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MzMxMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE5LTEyLTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgdGVzdC1sbGRiLXdlYmtpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQ6IEFk
ZGVkLgorICAgICAgICAoTm9BY3Rpb24pOiBBcmdwYXJzZSBhY3Rpb24gd2hpY2ggc3VwcG9ydCAt
LTx2YXJpYWJsZT4gYW5kIC0tbm8tPHZhcmlhYmxlPi4KKyAgICAgICAgKExsZGJUZXN0ZXIpOiBX
cmFwcGVyIGFyb3VuZCB3ZWJraXRweSdzIFRlc3RlciBjbGFzcy4KKyAgICAgICAgKExsZGJUZXN0
ZXIucGFyc2VfYXJncyk6IFNwZWNpYWxpemVkIGFyZ3BhcnNlIGZvciBsbGRiIHRlc3RzLgorICAg
ICAgICAoTGxkYlRlc3Rlci5ydW4pOiBTZXR1cCBlbnZpcm9ubWVudCBhbmQgYnVpbGQgbGxkYiB0
ZXN0IHJ1bm5lci4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dGVzdC9tYWluLnB5OgorICAgICAgICAobWFpbik6IFJlbW92ZSBsbGRiIHRlc3RpbmcgY29kZS4K
KyAgICAgICAgKFRlc3Rlci5fcGFyc2VfYXJncyk6IERpdHRvLgorICAgICAgICAoVGVzdGVyLnJ1
bik6IERpdHRvLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBEaXR0by4KKyAgICAgICAg
KFRlc3Rlci5fdGVzdF9uYW1lcyk6IERpdHRvLgorICAgICAgICAoX3N1cHBvcnRzX2J1aWxkaW5n
X2FuZF9ydW5uaW5nX2xsZGJfdGVzdHMpOiBEZWxldGVkLgorCiAyMDE5LTEyLTA5ICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0LXdlYmtpdHB5OiBS
ZW1vdmUgLS08Y29uZmlndXJhdGlvbj4gZmxhZ3MgZnJvbSBDSQpJbmRleDogVG9vbHMvU2NyaXB0
cy90ZXN0LWxsZGItd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvdGVzdC1sbGRi
LXdlYmtpdAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
IyBDb3B5cmlnaHQgKGMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMK
K2ltcG9ydCB0aW1lCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKK2Zy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitm
cm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gd2Via2l0cHkudGVz
dC5tYWluIGltcG9ydCBUZXN0ZXIKKworRVhDRVBUSU9OQUxfRVhJVF9TVEFUVVMgPSAtMQorCisK
K2NsYXNzIE5vQWN0aW9uKGFyZ3BhcnNlLkFjdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG9wdGlvbl9zdHJpbmdzLCBkZXN0LCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKE5vQWN0aW9u
LCBzZWxmKS5fX2luaXRfXyhvcHRpb25fc3RyaW5ncywgZGVzdCwgbmFyZ3M9MCwgKiprd2FyZ3Mp
CisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2VyLCBuYW1lc3BhY2UsIHZhbHVlcywgb3B0
aW9uX3N0cmluZyk6CisgICAgICAgIHNldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIEZhbHNl
IGlmIG9wdGlvbl9zdHJpbmcuc3RhcnRzd2l0aCgnLS1ubycpIGVsc2UgVHJ1ZSkKKworCitjbGFz
cyBMbGRiVGVzdGVyKFRlc3Rlcik6CisKKyAgICBkZWYgcGFyc2VfYXJncyhzZWxmKToKKyAgICAg
ICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0Egc2NyaXB0
IHdoaWNoIHRlc3RzIFdlYktpdFwncyBsbGRiIG1hY3JvcyBhbmQgaW50ZWdyYXRpb24nKQorICAg
ICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWJ1aWxkJywgJy0tbm8tYnVpbGQnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2J1aWxkJywgYWN0aW9uPU5vQWN0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nRW5hYmxlIG9yIGRp
c2FibGUgY2FsbGluZyBidWlsZC1sbGRid2Via2l0dGVzdGVyIGJlZm9yZSBydW5uaW5nIHRoZSB0
ZXN0IChlbmFibGVkIGJ5IGRlZmF1bHQpLiBUaGlzIHdpbGwgYnVpbGQgdGhlIGxsZGIgdGVzdCBy
dW5uZXIsIGJtYWxsb2MgYW5kIFdURi4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCct
LXJvb3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3Jvb3QnLCBhY3Rpb249
J3N0b3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9
J1BhdGggdG8gYSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgYmluYXJpZXMgbmVlZGVkIHRvIHJ1
biB0ZXN0cy4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcmJvc2Un
LCBhY3Rpb249J2NvdW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PTAs
IGhlbHA9J1ZlcmJvc2Ugb3V0cHV0IChzcGVjaWZ5IG9uY2UgZm9yIGluZGl2aWR1YWwgdGVzdCBy
ZXN1bHRzLCB0d2ljZSBmb3IgZGVidWcgbWVzc2FnZXMpJykKKyAgICAgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgnLXQnLCAnLS10aW1pbmcnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J0Rpc3BsYXkgcGVyLXRlc3Qg
ZXhlY3V0aW9uIHRpbWUgKGltcGxpZXMgLS12ZXJib3NlKScpCisgICAgICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoJy1xJywgJy0tcXVpZXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J1J1biBxdWlldGx5IChlcnJv
cnMsIHdhcm5pbmdzLCBhbmQgcHJvZ3Jlc3Mgb25seSknKQorICAgICAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KCctcCcsICctLXBhc3MtdGhyb3VnaCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1
bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQmUgZGVidWdnZXIg
ZnJpZW5kbHkgYnkgcGFzc2luZyBjYXB0dXJlZCBvdXRwdXQgdGhyb3VnaCB0byB0aGUgc3lzdGVt
JykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kZWJ1ZycsIGNvbnN0PSdkZWJ1Zycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbicsIGFjdGlv
bj0nc3RvcmVfY29uc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9u
ZSwgaGVscD0nQWxpYXMgZm9yIGNvbmZpZ3VyYXRpb249ZGVidWcuJykKKyAgICAgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgnLS1yZWxlYXNlJywgY29uc3Q9J3JlbGVhc2UnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3Q9J2NvbmZpZ3VyYXRpb24nLCBhY3Rpb249J3N0b3JlX2NvbnN0
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J0FsaWFz
IGZvciBjb25maWd1cmF0aW9uPXJlbGVhc2UuJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgnLS1jb25maWd1cmF0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdj
b25maWd1cmF0aW9uJywgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD1Ob25lLCBoZWxwPSdTZXQgY29uZmlndXJhdGlvbiAoRGVidWcvUmVsZWFzZS9B
U2FuL2VjdC4pIHRvIGJ1aWxkIGFuZCB0ZXN0IHRoZSBsbGRiIHRlc3QgcnVubmVyIHdpdGguJykK
KyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnbmFtZXMnLCBuYXJncz0nKicsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLCBoZWxwPSdOYW1lIChvciBuYW1lcykg
b2YgdGVzdCwgb3IgdGVzdCBzdWl0ZSwgdG8gYmUgcnVuLiBsbGRiX3dlYmtpdF91bml0dGVzdC5U
ZXN0U3VtbWFyeVByb3ZpZGVycyBhbmQgZHVtcF9jbGFzc19sYXlvdXRfdW5pdHRlc3QuVGVzdER1
bXBDbGFzc0xheW91dCBhcmUgdHdvIGV4YW1wbGVzJykKKyAgICAgICAgcmV0dXJuIHBhcnNlci5w
YXJzZV9hcmdzKCkKKworICAgIGRlZiBydW4oc2VsZiwgaG9zdD1Ob25lLCB3ZWJraXRfcm9vdD1O
b25lKToKKyAgICAgICAgaG9zdCA9IGhvc3Qgb3IgSG9zdCgpCisgICAgICAgIHNlbGYuX29wdGlv
bnMgPSBzZWxmLnBhcnNlX2FyZ3MoKQorICAgICAgICBzZWxmLnByaW50ZXIuY29uZmlndXJlKHNl
bGYuX29wdGlvbnMpCisgICAgICAgIHNlbGYuZmluZGVyLmNsZWFuX3RyZWVzKCkKKworICAgICAg
ICBuYW1lcyA9IHNlbGYuZmluZGVyLmZpbmRfbmFtZXMoc2VsZi5fb3B0aW9ucy5uYW1lcyBvciBb
XSwgVHJ1ZSkKKyAgICAgICAgaWYgbm90IG5hbWVzOgorICAgICAgICAgICAgX2xvZy5lcnJvcign
Tm8gdGVzdHMgdG8gcnVuJykKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGNv
bmZpZyA9IENvbmZpZyhob3N0LmV4ZWN1dGl2ZSwgc2VsZi5maW5kZXIuZmlsZXN5c3RlbSkKKyAg
ICAgICAgY29uZmlndXJhdGlvbl90b191c2UgPSBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24g
b3IgY29uZmlnLmRlZmF1bHRfY29uZmlndXJhdGlvbigpCisgICAgICAgIHNlbGYudXBsb2FkX3N0
eWxlID0gY29uZmlndXJhdGlvbl90b191c2UubG93ZXIoKQorCisgICAgICAgIGlmIChub3Qgc2Vs
Zi5fb3B0aW9ucy5yb290IGFuZCBzZWxmLl9vcHRpb25zLmJ1aWxkIGlzIE5vbmUpIG9yIHNlbGYu
X29wdGlvbnMuYnVpbGQ6CisgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdC
dWlsZGluZyBsbGRiV2ViS2l0VGVzdGVyIC4uLicpCisgICAgICAgICAgICBidWlsZF9sbGRid2Vi
a2l0dGVzdGVyID0gc2VsZi5maW5kZXIuZmlsZXN5c3RlbS5qb2luKHdlYmtpdF9yb290LCAnVG9v
bHMnLCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Via2l0dGVzdGVyJykKKyAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICBob3N0LmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwo
CisgICAgICAgICAgICAgICAgICAgIFtidWlsZF9sbGRid2Via2l0dGVzdGVyLCBjb25maWcuZmxh
Z19mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3VzZSldLAorICAgICAgICAgICAg
ICAgICAgICBxdWlldD0obm90IGJvb2woc2VsZi5fb3B0aW9ucy52ZXJib3NlKSksCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6CisgICAgICAg
ICAgICAgICAgX2xvZy5lcnJvcihlLm1lc3NhZ2Vfd2l0aF9vdXRwdXQob3V0cHV0X2xpbWl0PU5v
bmUpKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIG9zLmVudmlyb25b
J0xMREJfV0VCS0lUX1RFU1RFUl9FWEVDVVRBQkxFJ10gPSBzdHIoc2VsZi5maW5kZXIuZmlsZXN5
c3RlbS5qb2luKGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoY29uZmlndXJhdGlvbl90b191c2UpLCAn
bGxkYldlYktpdFRlc3RlcicpKQorICAgICAgICBpZiBub3Qgc2VsZi5maW5kZXIuZmlsZXN5c3Rl
bS5leGlzdHMob3MuZW52aXJvblsnTExEQl9XRUJLSVRfVEVTVEVSX0VYRUNVVEFCTEUnXSk6Cisg
ICAgICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQgdG8gZmluZCBsbGRiV2ViS2l0VGVzdGVyLicp
CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rl
c3RzKG5hbWVzKQorCisKK2RlZiBtYWluKCk6CisgICAgdGVzdGVyID0gTGxkYlRlc3RlcigpCisg
ICAgaG9zdCA9IEhvc3QoKQorICAgIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSA9IGhvc3QucGF0aF90
b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKQorICAgIGlmIG5vdCBob3N0LmZpbGVzeXN0ZW0uaXNk
aXIobGxkYl9weXRob25fZGlyZWN0b3J5KToKKyAgICAgICAgdGVzdGVyLnBhcnNlX2FyZ3MoKQor
ICAgICAgICBwcmludCgnbGxkYiB0ZXN0cyBhcmUgb25seSBzdXBwb3J0ZWQgb24gbWFjT1Mgd2l0
aCBYY29kZSBpbnN0YWxsZWQnKQorICAgICAgICByZXR1cm4gMQorCisgICAgdXAgPSBob3N0LmZp
bGVzeXN0ZW0uZGlybmFtZQorICAgIHdlYmtpdF9yb290ID0gdXAodXAodXAoaG9zdC5maWxlc3lz
dGVtLmFic3BhdGgoX19maWxlX18pKSkpCisKKyAgICBpZiBsbGRiX3B5dGhvbl9kaXJlY3Rvcnkg
bm90IGluIHN5cy5wYXRoOgorICAgICAgICBzeXMucGF0aC5hcHBlbmQobGxkYl9weXRob25fZGly
ZWN0b3J5KQorICAgIHRlc3Rlci5hZGRfdHJlZShob3N0LmZpbGVzeXN0ZW0uam9pbih3ZWJraXRf
cm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKworICAgIHJldHVybiBub3QgdGVzdGVyLnJ1bihob3N0
PWhvc3QsIHdlYmtpdF9yb290PXdlYmtpdF9yb290KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMv
U2NyaXB0cy90ZXN0LWxsZGItd2Via2l0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxl
CiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkJKHJldmlzaW9uIDI1MzMxMSkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0
MSw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW0KIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi51bmlj
b2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCi1mcm9tIHdlYmtpdHB5LnBvcnQuY29u
ZmlnIGltcG9ydCBDb25maWcKIGZyb20gd2Via2l0cHkudGVzdC5maW5kZXIgaW1wb3J0IEZpbmRl
cgogZnJvbSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1wb3J0IFByaW50ZXIKIGZyb20gd2Via2l0
cHkudGVzdC5ydW5uZXIgaW1wb3J0IFJ1bm5lciwgdW5pdF90ZXN0X25hbWUKQEAgLTY4LDE5ICs2
Nyw2IEBAIGRlZiBtYWluKCk6CiAgICAgaWYgbm90IChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgn
d2luJykgb3Igc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nKToKICAgICAgICAgdGVzdGVyLmFkZF90
cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdTb3VyY2UnLCAnV2ViS2l0JywgJ1Njcmlw
dHMnKSwgJ3dlYmtpdCcpCiAKLSAgICBsbGRiX3B5dGhvbl9kaXJlY3RvcnkgPSBfaG9zdC5wYXRo
X3RvX2xsZGJfcHl0aG9uX2RpcmVjdG9yeSgpCi0gICAgaWYgbm90IF9zdXBwb3J0c19idWlsZGlu
Z19hbmRfcnVubmluZ19sbGRiX3Rlc3RzKCk6Ci0gICAgICAgIF9sb2cuaW5mbygiU2tpcHBpbmcg
bGxkYl93ZWJraXQgdGVzdHM7IG5vdCB5ZXQgc3VwcG9ydGVkIG9uIG1hY09TIENhdGFsaW5hLiIp
Ci0gICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gRmFsc2UKLSAgICBlbGlmIG5v
dCBvcy5wYXRoLmlzZGlyKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSk6Ci0gICAgICAgIF9sb2cuaW5m
bygiU2tpcHBpbmcgbGxkYl93ZWJraXQgdGVzdHM7IGNvdWxkIG5vdCBmaW5kIHBhdGggdG8gbGxk
Yi5weSAne30nLiIuZm9ybWF0KGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkpCi0gICAgICAgIHdpbGxf
cnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gRmFsc2UKLSAgICBlbHNlOgotICAgICAgICBpZiBsbGRi
X3B5dGhvbl9kaXJlY3Rvcnkgbm90IGluIHN5cy5wYXRoOgotICAgICAgICAgICAgc3lzLnBhdGgu
YXBwZW5kKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkKLSAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9z
LnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdsbGRiJykpCi0gICAgICAgIHdpbGxf
cnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gVHJ1ZQotCiAgICAgdGVzdGVyLnNraXAoKCd3ZWJraXRw
eS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwgJ2FyZSByZWFsbHksIHJlYWxs
eSwgc2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToK
ICAgICAgICAgdGVzdGVyLnNraXAoKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQnLCAnd2Via2l0
cHkuY29tbW9uLmNvbmZpZycsICd3ZWJraXRweS50b29sJyksICdmYWlsIGhvcnJpYmx5IG9uIHdp
bjMyJywgNTQ1MjYpCkBAIC05OCwxNiArODQsNyBAQCBkZWYgbWFpbigpOgogICAgIGVsc2U6CiAg
ICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgUXVldWVTdGF0dXNTZXJ2ZXIgdGVzdHM7IHRoZSBH
b29nbGUgQXBwRW5naW5lIFB5dGhvbiBTREsgaXMgbm90IGluc3RhbGxlZC4nKQogCi0gICAgcmV0
dXJuIG5vdCB0ZXN0ZXIucnVuKHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzPXdpbGxfcnVuX2xs
ZGJfd2Via2l0X3Rlc3RzKQotCi0KLWRlZiBfc3VwcG9ydHNfYnVpbGRpbmdfYW5kX3J1bm5pbmdf
bGxkYl90ZXN0cygpOgotICAgICMgRklYTUU6IFJlbW92ZSB3aGVuIHRlc3QtbGxkYiBpcyBpbiBp
dHMgb3duIHNjcmlwdAotICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NzkxNgotICAgIGJ1aWxkX3ZlcnNpb24gPSBfaG9zdC5wbGF0Zm9ybS5idWlsZF92ZXJz
aW9uKCkKLSAgICBpZiBidWlsZF92ZXJzaW9uIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBGYWxz
ZQotICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIG5vdCB0ZXN0ZXIucnVuKCkKIAogCiBkZWYg
X3ByaW50X3Jlc3VsdHNfYXNfanNvbihzdHJlYW0sIGFsbF90ZXN0X25hbWVzLCBmYWlsdXJlcywg
ZXJyb3JzKToKQEAgLTEyNyw2ICsxMDQsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAg
ICAgc2VsZi5maW5kZXIgPSBGaW5kZXIoZmlsZXN5c3RlbSBvciBGaWxlU3lzdGVtKCkpCiAgICAg
ICAgIHNlbGYucHJpbnRlciA9IFByaW50ZXIoc3lzLnN0ZGVycikKICAgICAgICAgc2VsZi5fb3B0
aW9ucyA9IE5vbmUKKyAgICAgICAgc2VsZi51cGxvYWRfc3R5bGUgPSAncmVsZWFzZScKIAogICAg
IGRlZiBhZGRfdHJlZShzZWxmLCB0b3BfZGlyZWN0b3J5LCBzdGFydGluZ19zdWJkaXJlY3Rvcnk9
Tm9uZSk6CiAgICAgICAgIHNlbGYuZmluZGVyLmFkZF90cmVlKHRvcF9kaXJlY3RvcnksIHN0YXJ0
aW5nX3N1YmRpcmVjdG9yeSkKQEAgLTEzNywxNCArMTE1LDYgQEAgY2xhc3MgVGVzdGVyKG9iamVj
dCk6CiAgICAgZGVmIF9wYXJzZV9hcmdzKHNlbGYsIGFyZ3Y9Tm9uZSk6CiAgICAgICAgIHBhcnNl
ciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0ndXNhZ2U6ICVwcm9nIFtvcHRpb25zXSBb
YXJncy4uLl0nKQogCi0gICAgICAgICMgIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbmx5IGVmZmVj
dCB0aGUgYnVpbGRpbmcgb2YgbGxkYldlYktpdFRlc3Rlci4KLSAgICAgICAgY29uZmlndXJhdGlv
bl9ncm91cCA9IG9wdHBhcnNlLk9wdGlvbkdyb3VwKHBhcnNlciwgJ0NvbmZpZ3VyYXRpb24gb3B0
aW9ucycpCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fZ3JvdXAuYWRkX29wdGlvbignLS1kZWJ1Zycs
IGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nRGVidWcnLCBkZXN0PSJjb25maWd1cmF0aW9u
IiwKLSAgICAgICAgICAgIGhlbHA9J1NldCB0aGUgY29uZmlndXJhdGlvbiB0byBEZWJ1ZycpCi0g
ICAgICAgIGNvbmZpZ3VyYXRpb25fZ3JvdXAuYWRkX29wdGlvbignLS1yZWxlYXNlJywgYWN0aW9u
PSdzdG9yZV9jb25zdCcsIGNvbnN0PSdSZWxlYXNlJywgZGVzdD0iY29uZmlndXJhdGlvbiIsCi0g
ICAgICAgICAgICBoZWxwPSdTZXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gUmVsZWFzZScpCi0gICAg
ICAgIHBhcnNlci5hZGRfb3B0aW9uX2dyb3VwKGNvbmZpZ3VyYXRpb25fZ3JvdXApCi0KICAgICAg
ICAgdXBsb2FkX2dyb3VwID0gb3B0cGFyc2UuT3B0aW9uR3JvdXAocGFyc2VyLCAnVXBsb2FkIE9w
dGlvbnMnKQogICAgICAgICB1cGxvYWRfZ3JvdXAuYWRkX29wdGlvbnModXBsb2FkX29wdGlvbnMo
KSkKICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAodXBsb2FkX2dyb3VwKQpAQCAtMTc2
LDcgKzE0Niw3IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBwYXJz
ZXIucGFyc2VfYXJncyhhcmd2KQogCi0gICAgZGVmIHJ1bihzZWxmLCB3aWxsX3J1bl9sbGRiX3dl
YmtpdF90ZXN0cz1GYWxzZSk6CisgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgc2VsZi5fb3B0
aW9ucywgYXJncyA9IHNlbGYuX3BhcnNlX2FyZ3MoKQogICAgICAgICBzZWxmLnByaW50ZXIuY29u
ZmlndXJlKHNlbGYuX29wdGlvbnMpCiAKQEAgLTE4Nyw5ICsxNTcsOSBAQCBjbGFzcyBUZXN0ZXIo
b2JqZWN0KToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ05vIHRlc3RzIHRvIHJ1bicpCiAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RzKG5h
bWVzLCB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1
bl90ZXN0cyhuYW1lcykKIAotICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzLCB3aWxsX3J1
bl9sbGRiX3dlYmtpdF90ZXN0cyk6CisgICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwgbmFtZXMpOgog
ICAgICAgICAjIE1ha2Ugc3VyZSBQWVRIT05QQVRIIGlzIHNldCB1cCBwcm9wZXJseS4KICAgICAg
ICAgc3lzLnBhdGggPSBzZWxmLmZpbmRlci5hZGRpdGlvbmFsX3BhdGhzKHN5cy5wYXRoKSArIHN5
cy5wYXRoCiAKQEAgLTIwMCwyMyArMTcwLDggQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAg
ICAgIGF1dG9pbnN0YWxsX2V2ZXJ5dGhpbmcoKQogCiAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1l
LnRpbWUoKQotICAgICAgICBjb25maWcgPSBDb25maWcoX2hvc3QuZXhlY3V0aXZlLCBzZWxmLmZp
bmRlci5maWxlc3lzdGVtKQotICAgICAgICBjb25maWd1cmF0aW9uX3RvX3VzZSA9IHNlbGYuX29w
dGlvbnMuY29uZmlndXJhdGlvbiBvciBjb25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkKLQot
ICAgICAgICBpZiB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0czoKLSAgICAgICAgICAgIHNlbGYu
cHJpbnRlci53cml0ZV91cGRhdGUoJ0J1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIgLi4uJykKLSAg
ICAgICAgICAgIGJ1aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIgPSBzZWxmLmZpbmRlci5maWxlc3lzdGVt
LmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Via2l0
dGVzdGVyJykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfaG9zdC5leGVjdXRp
dmUucnVuX2FuZF90aHJvd19pZl9mYWlsKFtidWlsZF9sbGRid2Via2l0dGVzdGVyLCBjb25maWcu
ZmxhZ19mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3VzZSldLCBxdWlldD0obm90
IGJvb2woc2VsZi5fb3B0aW9ucy52ZXJib3NlKSkpCi0gICAgICAgICAgICBleGNlcHQgU2NyaXB0
RXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGUubWVzc2FnZV93aXRoX291
dHB1dChvdXRwdXRfbGltaXQ9Tm9uZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0g
ICAgICAgICAgICBvcy5lbnZpcm9uWydMTERCX1dFQktJVF9URVNURVJfRVhFQ1VUQUJMRSddID0g
c3RyKHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0uam9pbihjb25maWcuYnVpbGRfZGlyZWN0b3J5KGNv
bmZpZ3VyYXRpb25fdG9fdXNlKSwgJ2xsZGJXZWJLaXRUZXN0ZXInKSkKLSAgICAgICAgICAgIGlm
IG5vdCBzZWxmLmZpbmRlci5maWxlc3lzdGVtLmV4aXN0cyhvcy5lbnZpcm9uWydMTERCX1dFQktJ
VF9URVNURVJfRVhFQ1VUQUJMRSddKToKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdGYWls
ZWQgdG8gZmluZCBsbGRiV2ViS2l0VGVzdGVyLicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb3ZlcmFnZToKKyAgICAgICAgaWYgZ2V0
YXR0cihzZWxmLl9vcHRpb25zLCAnY292ZXJhZ2UnLCBGYWxzZSk6CiAgICAgICAgICAgICBfbG9n
Lndhcm5pbmcoIkNoZWNraW5nIGNvZGUgY292ZXJhZ2UsIHNvIHJ1bm5pbmcgdGhpbmdzIHNlcmlh
bGx5IikKICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzID0gMQogCkBA
IC0yNDEsMjYgKzE5NiwyNiBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5w
cmludGVyLm51bV90ZXN0cyA9IGxlbihwYXJhbGxlbF90ZXN0cykgKyBsZW4oc2VyaWFsX3Rlc3Rz
KQogICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCiAgICAgICAgIHRlc3RfcnVubmVyID0gUnVu
bmVyKHNlbGYucHJpbnRlciwgbG9hZGVyKQotICAgICAgICB0ZXN0X3J1bm5lci5ydW4ocGFyYWxs
ZWxfdGVzdHMsIHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKQorICAgICAgICB0ZXN0X3J1
bm5lci5ydW4ocGFyYWxsZWxfdGVzdHMsIGdldGF0dHIoc2VsZi5fb3B0aW9ucywgJ2NoaWxkX3By
b2Nlc3NlcycsIDEpKQogICAgICAgICB0ZXN0X3J1bm5lci5ydW4oc2VyaWFsX3Rlc3RzLCAxKQog
ICAgICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgpCiAKICAgICAgICAgc2VsZi5wcmludGVyLnBy
aW50X3Jlc3VsdCh0aW1lLnRpbWUoKSAtIHN0YXJ0KQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlv
bnMuanNvbjoKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAnanNvbicsIEZhbHNl
KToKICAgICAgICAgICAgIF9wcmludF9yZXN1bHRzX2FzX2pzb24oc3lzLnN0ZG91dCwgaXRlcnRv
b2xzLmNoYWluKHBhcmFsbGVsX3Rlc3RzLCBzZXJpYWxfdGVzdHMpLCB0ZXN0X3J1bm5lci5mYWls
dXJlcywgdGVzdF9ydW5uZXIuZXJyb3JzKQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuanNv
bl9maWxlX25hbWU6CisgICAgICAgIGlmIGdldGF0dHIoc2VsZi5fb3B0aW9ucywgJ2pzb25fZmls
ZV9uYW1lJywgTm9uZSk6CiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmpzb25fZmlsZV9uYW1l
ID0gb3MucGF0aC5hYnNwYXRoKHNlbGYuX29wdGlvbnMuanNvbl9maWxlX25hbWUpCiAgICAgICAg
ICAgICB3aXRoIG9wZW4oc2VsZi5fb3B0aW9ucy5qc29uX2ZpbGVfbmFtZSwgJ3cnKSBhcyBqc29u
X2ZpbGU6CiAgICAgICAgICAgICAgICAgX3ByaW50X3Jlc3VsdHNfYXNfanNvbihqc29uX2ZpbGUs
IGl0ZXJ0b29scy5jaGFpbihwYXJhbGxlbF90ZXN0cywgc2VyaWFsX3Rlc3RzKSwgdGVzdF9ydW5u
ZXIuZmFpbHVyZXMsIHRlc3RfcnVubmVyLmVycm9ycykKIAotICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLmNvdmVyYWdlOgorICAgICAgICBpZiBnZXRhdHRyKHNlbGYuX29wdGlvbnMsICdjb3ZlcmFn
ZScsIEZhbHNlKToKICAgICAgICAgICAgIGNvdi5zdG9wKCkKICAgICAgICAgICAgIGNvdi5zYXZl
KCkKIAogICAgICAgICBmYWlsZWRfdXBsb2FkcyA9IDAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy5yZXBvcnRfdXJsczoKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAncmVwb3J0
X3VybHMnLCBOb25lKToKICAgICAgICAgICAgIHNlbGYucHJpbnRlci5tZXRlci53cml0ZWxuKCdc
bicpCiAgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdQcmVwYXJpbmcgdXBs
b2FkIGRhdGEgLi4uJykKIApAQCAtMjc4LDcgKzIzMyw3IEBAIGNsYXNzIFRlc3RlcihvYmplY3Qp
OgogICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT1faG9zdC5wbGF0Zm9ybS5vc19uYW1lLAog
ICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPXN0cihfaG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9u
KSwKICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9uYW1lPV9ob3N0LnBsYXRmb3JtLm9zX3Zl
cnNpb25fbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICBzdHlsZT0nYXNhbicgaWYgY29uZmln
LmFzYW4gZWxzZSBjb25maWd1cmF0aW9uX3RvX3VzZS5sb3dlcigpLAorICAgICAgICAgICAgICAg
ICAgICBzdHlsZT1zZWxmLnVwbG9hZF9zdHlsZSwKICAgICAgICAgICAgICAgICAgICAgc2RrPV9o
b3N0LnBsYXRmb3JtLmJ1aWxkX3ZlcnNpb24oKSwKICAgICAgICAgICAgICAgICAgICAgZmxhdm9y
PXNlbGYuX29wdGlvbnMucmVzdWx0X3JlcG9ydF9mbGF2b3IsCiAgICAgICAgICAgICAgICAgKSwK
QEAgLTMwMCw3ICsyNTUsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAg
ICBmYWlsZWRfdXBsb2FkcyA9IGZhaWxlZF91cGxvYWRzIGlmIHVwbG9hZC51cGxvYWQodXJsLCBs
b2dfbGluZV9mdW5jPXNlbGYucHJpbnRlci5tZXRlci53cml0ZWxuKSBlbHNlIChmYWlsZWRfdXBs
b2FkcyArIDEpCiAgICAgICAgICAgICBzZWxmLnByaW50ZXIubWV0ZXIud3JpdGVsbignVXBsb2Fk
cyBjb21wbGV0ZWQhJykKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdlOgorICAg
ICAgICBpZiBnZXRhdHRyKHNlbGYuX29wdGlvbnMsICdjb3ZlcmFnZScsIEZhbHNlKToKICAgICAg
ICAgICAgIGNvdi5yZXBvcnQoc2hvd19taXNzaW5nPUZhbHNlKQogCiAgICAgICAgIHJldHVybiBu
b3Qgc2VsZi5wcmludGVyLm51bV9lcnJvcnMgYW5kIG5vdCBzZWxmLnByaW50ZXIubnVtX2ZhaWx1
cmVzIGFuZCBub3QgZmFpbGVkX3VwbG9hZHMKQEAgLTMyMiw3ICsyNzcsNyBAQCBjbGFzcyBUZXN0
ZXIob2JqZWN0KToKICAgICBkZWYgX3Rlc3RfbmFtZXMoc2VsZiwgbG9hZGVyLCBuYW1lcyk6CiAg
ICAgICAgIHBhcmFsbGVsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzID0gWyd0ZXN0XyddCiAgICAgICAg
IHNlcmlhbF90ZXN0X21ldGhvZF9wcmVmaXhlcyA9IFsnc2VyaWFsX3Rlc3RfJ10KLSAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5pbnRlZ3JhdGlvbl90ZXN0czoKKyAgICAgICAgaWYgZ2V0YXR0cihz
ZWxmLl9vcHRpb25zLCAnaW50ZWdyYXRpb25fdGVzdHMnLCBOb25lKToKICAgICAgICAgICAgIHBh
cmFsbGVsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzLmFwcGVuZCgnaW50ZWdyYXRpb25fdGVzdF8nKQog
ICAgICAgICAgICAgc2VyaWFsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzLmFwcGVuZCgnc2VyaWFsX2lu
dGVncmF0aW9uX3Rlc3RfJykKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385311</attachid>
            <date>2019-12-10 15:16:15 -0800</date>
            <delta_ts>2019-12-11 07:13:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187916-20191210151614.patch</filename>
            <type>text/plain</type>
            <size>17354</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MzMxMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE5LTEyLTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgdGVzdC1sbGRiLXdlYmtpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQ6IEFk
ZGVkLgorICAgICAgICAoTm9BY3Rpb24pOiBBcmdwYXJzZSBhY3Rpb24gd2hpY2ggc3VwcG9ydCAt
LTx2YXJpYWJsZT4gYW5kIC0tbm8tPHZhcmlhYmxlPi4KKyAgICAgICAgKExsZGJUZXN0ZXIpOiBX
cmFwcGVyIGFyb3VuZCB3ZWJraXRweSdzIFRlc3RlciBjbGFzcy4KKyAgICAgICAgKExsZGJUZXN0
ZXIucGFyc2VfYXJncyk6IFNwZWNpYWxpemVkIGFyZ3BhcnNlIGZvciBsbGRiIHRlc3RzLgorICAg
ICAgICAoTGxkYlRlc3Rlci5ydW4pOiBTZXR1cCBlbnZpcm9ubWVudCBhbmQgYnVpbGQgbGxkYiB0
ZXN0IHJ1bm5lci4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dGVzdC9tYWluLnB5OgorICAgICAgICAobWFpbik6IFJlbW92ZSBsbGRiIHRlc3RpbmcgY29kZS4K
KyAgICAgICAgKFRlc3Rlci5fcGFyc2VfYXJncyk6IERpdHRvLgorICAgICAgICAoVGVzdGVyLnJ1
bik6IERpdHRvLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBEaXR0by4KKyAgICAgICAg
KFRlc3Rlci5fdGVzdF9uYW1lcyk6IERpdHRvLgorICAgICAgICAoX3N1cHBvcnRzX2J1aWxkaW5n
X2FuZF9ydW5uaW5nX2xsZGJfdGVzdHMpOiBEZWxldGVkLgorCiAyMDE5LTEyLTA5ICBKb25hdGhh
biBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXN0LXdlYmtpdHB5OiBS
ZW1vdmUgLS08Y29uZmlndXJhdGlvbj4gZmxhZ3MgZnJvbSBDSQpJbmRleDogVG9vbHMvU2NyaXB0
cy90ZXN0LWxsZGItd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvdGVzdC1sbGRi
LXdlYmtpdAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9TY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
IyBDb3B5cmlnaHQgKGMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMK
K2ltcG9ydCB0aW1lCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKK2Zy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitm
cm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcKK2Zyb20gd2Via2l0cHkudGVz
dC5tYWluIGltcG9ydCBUZXN0ZXIKKworRVhDRVBUSU9OQUxfRVhJVF9TVEFUVVMgPSAtMQorCisK
K2NsYXNzIE5vQWN0aW9uKGFyZ3BhcnNlLkFjdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG9wdGlvbl9zdHJpbmdzLCBkZXN0LCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKE5vQWN0aW9u
LCBzZWxmKS5fX2luaXRfXyhvcHRpb25fc3RyaW5ncywgZGVzdCwgbmFyZ3M9MCwgKiprd2FyZ3Mp
CisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2VyLCBuYW1lc3BhY2UsIHZhbHVlcywgb3B0
aW9uX3N0cmluZyk6CisgICAgICAgIHNldGF0dHIobmFtZXNwYWNlLCBzZWxmLmRlc3QsIEZhbHNl
IGlmIG9wdGlvbl9zdHJpbmcuc3RhcnRzd2l0aCgnLS1ubycpIGVsc2UgVHJ1ZSkKKworCitjbGFz
cyBMbGRiVGVzdGVyKFRlc3Rlcik6CisKKyAgICBkZWYgcGFyc2VfYXJncyhzZWxmKToKKyAgICAg
ICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0Egc2NyaXB0
IHdoaWNoIHRlc3RzIFdlYktpdFwncyBsbGRiIG1hY3JvcyBhbmQgaW50ZWdyYXRpb24nKQorICAg
ICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWJ1aWxkJywgJy0tbm8tYnVpbGQnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2J1aWxkJywgYWN0aW9uPU5vQWN0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nRW5hYmxlIG9yIGRp
c2FibGUgY2FsbGluZyBidWlsZC1sbGRid2Via2l0dGVzdGVyIGJlZm9yZSBydW5uaW5nIHRoZSB0
ZXN0IChlbmFibGVkIGJ5IGRlZmF1bHQpLiBUaGlzIHdpbGwgYnVpbGQgdGhlIGxsZGIgdGVzdCBy
dW5uZXIsIGJtYWxsb2MgYW5kIFdURi4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCct
LXJvb3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3Jvb3QnLCBhY3Rpb249
J3N0b3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9
J1BhdGggdG8gYSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgYmluYXJpZXMgbmVlZGVkIHRvIHJ1
biB0ZXN0cy4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcmJvc2Un
LCBhY3Rpb249J2NvdW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PTAs
IGhlbHA9J1ZlcmJvc2Ugb3V0cHV0IChzcGVjaWZ5IG9uY2UgZm9yIGluZGl2aWR1YWwgdGVzdCBy
ZXN1bHRzLCB0d2ljZSBmb3IgZGVidWcgbWVzc2FnZXMpJykKKyAgICAgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgnLXQnLCAnLS10aW1pbmcnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J0Rpc3BsYXkgcGVyLXRlc3Qg
ZXhlY3V0aW9uIHRpbWUgKGltcGxpZXMgLS12ZXJib3NlKScpCisgICAgICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoJy1xJywgJy0tcXVpZXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J1J1biBxdWlldGx5IChlcnJv
cnMsIHdhcm5pbmdzLCBhbmQgcHJvZ3Jlc3Mgb25seSknKQorICAgICAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KCctcCcsICctLXBhc3MtdGhyb3VnaCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1
bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQmUgZGVidWdnZXIg
ZnJpZW5kbHkgYnkgcGFzc2luZyBjYXB0dXJlZCBvdXRwdXQgdGhyb3VnaCB0byB0aGUgc3lzdGVt
JykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kZWJ1ZycsIGNvbnN0PSdkZWJ1Zycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nY29uZmlndXJhdGlvbicsIGFjdGlv
bj0nc3RvcmVfY29uc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9u
ZSwgaGVscD0nQWxpYXMgZm9yIGNvbmZpZ3VyYXRpb249ZGVidWcuJykKKyAgICAgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgnLS1yZWxlYXNlJywgY29uc3Q9J3JlbGVhc2UnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3Q9J2NvbmZpZ3VyYXRpb24nLCBhY3Rpb249J3N0b3JlX2NvbnN0
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J0FsaWFz
IGZvciBjb25maWd1cmF0aW9uPXJlbGVhc2UuJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgnLS1jb25maWd1cmF0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdj
b25maWd1cmF0aW9uJywgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD1Ob25lLCBoZWxwPSdTZXQgY29uZmlndXJhdGlvbiAoRGVidWcvUmVsZWFzZS9B
U2FuL2VjdC4pIHRvIGJ1aWxkIGFuZCB0ZXN0IHRoZSBsbGRiIHRlc3QgcnVubmVyIHdpdGguJykK
KyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnbmFtZXMnLCBuYXJncz0nKicsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLCBoZWxwPSdOYW1lIChvciBuYW1lcykg
b2YgdGVzdCwgb3IgdGVzdCBzdWl0ZSwgdG8gYmUgcnVuLiBsbGRiX3dlYmtpdF91bml0dGVzdC5U
ZXN0U3VtbWFyeVByb3ZpZGVycyBhbmQgZHVtcF9jbGFzc19sYXlvdXRfdW5pdHRlc3QuVGVzdER1
bXBDbGFzc0xheW91dCBhcmUgdHdvIGV4YW1wbGVzJykKKyAgICAgICAgcmV0dXJuIHBhcnNlci5w
YXJzZV9hcmdzKCkKKworICAgIGRlZiBydW4oc2VsZiwgaG9zdD1Ob25lLCB3ZWJraXRfcm9vdD1O
b25lKToKKyAgICAgICAgaG9zdCA9IGhvc3Qgb3IgSG9zdCgpCisgICAgICAgIHNlbGYuX29wdGlv
bnMgPSBzZWxmLnBhcnNlX2FyZ3MoKQorICAgICAgICBzZWxmLnByaW50ZXIuY29uZmlndXJlKHNl
bGYuX29wdGlvbnMpCisgICAgICAgIHNlbGYuZmluZGVyLmNsZWFuX3RyZWVzKCkKKworICAgICAg
ICBuYW1lcyA9IHNlbGYuZmluZGVyLmZpbmRfbmFtZXMoc2VsZi5fb3B0aW9ucy5uYW1lcyBvciBb
XSwgVHJ1ZSkKKyAgICAgICAgaWYgbm90IG5hbWVzOgorICAgICAgICAgICAgX2xvZy5lcnJvcign
Tm8gdGVzdHMgdG8gcnVuJykKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGNv
bmZpZyA9IENvbmZpZyhob3N0LmV4ZWN1dGl2ZSwgc2VsZi5maW5kZXIuZmlsZXN5c3RlbSkKKyAg
ICAgICAgY29uZmlndXJhdGlvbl90b191c2UgPSBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24g
b3IgY29uZmlnLmRlZmF1bHRfY29uZmlndXJhdGlvbigpCisgICAgICAgIHNlbGYudXBsb2FkX3N0
eWxlID0gY29uZmlndXJhdGlvbl90b191c2UubG93ZXIoKQorCisgICAgICAgIGlmIChub3Qgc2Vs
Zi5fb3B0aW9ucy5yb290IGFuZCBzZWxmLl9vcHRpb25zLmJ1aWxkIGlzIE5vbmUpIG9yIHNlbGYu
X29wdGlvbnMuYnVpbGQ6CisgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdC
dWlsZGluZyBsbGRiV2ViS2l0VGVzdGVyIC4uLicpCisgICAgICAgICAgICBidWlsZF9sbGRid2Vi
a2l0dGVzdGVyID0gc2VsZi5maW5kZXIuZmlsZXN5c3RlbS5qb2luKHdlYmtpdF9yb290LCAnVG9v
bHMnLCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Via2l0dGVzdGVyJykKKyAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICBob3N0LmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwo
CisgICAgICAgICAgICAgICAgICAgIFtidWlsZF9sbGRid2Via2l0dGVzdGVyLCBjb25maWcuZmxh
Z19mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3VzZSldLAorICAgICAgICAgICAg
ICAgICAgICBxdWlldD0obm90IGJvb2woc2VsZi5fb3B0aW9ucy52ZXJib3NlKSksCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6CisgICAgICAg
ICAgICAgICAgX2xvZy5lcnJvcihlLm1lc3NhZ2Vfd2l0aF9vdXRwdXQob3V0cHV0X2xpbWl0PU5v
bmUpKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIG9zLmVudmlyb25b
J0xMREJfV0VCS0lUX1RFU1RFUl9FWEVDVVRBQkxFJ10gPSBzdHIoc2VsZi5maW5kZXIuZmlsZXN5
c3RlbS5qb2luKGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoY29uZmlndXJhdGlvbl90b191c2UpLCAn
bGxkYldlYktpdFRlc3RlcicpKQorICAgICAgICBpZiBub3Qgc2VsZi5maW5kZXIuZmlsZXN5c3Rl
bS5leGlzdHMob3MuZW52aXJvblsnTExEQl9XRUJLSVRfVEVTVEVSX0VYRUNVVEFCTEUnXSk6Cisg
ICAgICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQgdG8gZmluZCBsbGRiV2ViS2l0VGVzdGVyLicp
CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rl
c3RzKG5hbWVzKQorCisKK2RlZiBtYWluKCk6CisgICAgdGVzdGVyID0gTGxkYlRlc3RlcigpCisg
ICAgaG9zdCA9IEhvc3QoKQorICAgIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSA9IGhvc3QucGF0aF90
b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKQorICAgIGlmIG5vdCBob3N0LmZpbGVzeXN0ZW0uaXNk
aXIobGxkYl9weXRob25fZGlyZWN0b3J5KToKKyAgICAgICAgdGVzdGVyLnBhcnNlX2FyZ3MoKQor
ICAgICAgICBpZiBub3QgbGxkYl9weXRob25fZGlyZWN0b3J5OgorICAgICAgICAgICAgcHJpbnQo
J2xsZGIgdGVzdHMgYXJlIG9ubHkgc3VwcG9ydGVkIG9uIG1hY09TIHdpdGggWENvZGUgaW5zdGFs
bGVkJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50KCdDb3VsZCBub3QgZmluZCB7
fSwgZGVyaXZlZCBmcm9tIHJ1bm5pbmcgYHhjcnVuIGxsZGIgLS1weXRob24tcGF0aGAnLmZvcm1h
dChsbGRiX3B5dGhvbl9kaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gMQorCisgICAgdXAgPSBo
b3N0LmZpbGVzeXN0ZW0uZGlybmFtZQorICAgIHdlYmtpdF9yb290ID0gdXAodXAodXAoaG9zdC5m
aWxlc3lzdGVtLmFic3BhdGgoX19maWxlX18pKSkpCisKKyAgICBpZiBsbGRiX3B5dGhvbl9kaXJl
Y3Rvcnkgbm90IGluIHN5cy5wYXRoOgorICAgICAgICBzeXMucGF0aC5hcHBlbmQobGxkYl9weXRo
b25fZGlyZWN0b3J5KQorICAgIHRlc3Rlci5hZGRfdHJlZShob3N0LmZpbGVzeXN0ZW0uam9pbih3
ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKworICAgIHJldHVybiBub3QgdGVzdGVyLnJ1
bihob3N0PWhvc3QsIHdlYmtpdF9yb290PXdlYmtpdF9yb290KQorCisKK2lmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjog
VG9vbHMvU2NyaXB0cy90ZXN0LWxsZGItd2Via2l0Cl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVj
dXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkJKHJldmlzaW9uIDI1MzMxMSkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00
MSw3ICs0MSw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW0KIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi51bmljb2RlX2NvbXBhdGliaWxpdHkgaW1wb3J0IFN0cmluZ0lPCi1mcm9tIHdlYmtpdHB5LnBv
cnQuY29uZmlnIGltcG9ydCBDb25maWcKIGZyb20gd2Via2l0cHkudGVzdC5maW5kZXIgaW1wb3J0
IEZpbmRlcgogZnJvbSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1wb3J0IFByaW50ZXIKIGZyb20g
d2Via2l0cHkudGVzdC5ydW5uZXIgaW1wb3J0IFJ1bm5lciwgdW5pdF90ZXN0X25hbWUKQEAgLTY4
LDE5ICs2Nyw2IEBAIGRlZiBtYWluKCk6CiAgICAgaWYgbm90IChzeXMucGxhdGZvcm0uc3RhcnRz
d2l0aCgnd2luJykgb3Igc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nKToKICAgICAgICAgdGVzdGVy
LmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdTb3VyY2UnLCAnV2ViS2l0Jywg
J1NjcmlwdHMnKSwgJ3dlYmtpdCcpCiAKLSAgICBsbGRiX3B5dGhvbl9kaXJlY3RvcnkgPSBfaG9z
dC5wYXRoX3RvX2xsZGJfcHl0aG9uX2RpcmVjdG9yeSgpCi0gICAgaWYgbm90IF9zdXBwb3J0c19i
dWlsZGluZ19hbmRfcnVubmluZ19sbGRiX3Rlc3RzKCk6Ci0gICAgICAgIF9sb2cuaW5mbygiU2tp
cHBpbmcgbGxkYl93ZWJraXQgdGVzdHM7IG5vdCB5ZXQgc3VwcG9ydGVkIG9uIG1hY09TIENhdGFs
aW5hLiIpCi0gICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gRmFsc2UKLSAgICBl
bGlmIG5vdCBvcy5wYXRoLmlzZGlyKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSk6Ci0gICAgICAgIF9s
b2cuaW5mbygiU2tpcHBpbmcgbGxkYl93ZWJraXQgdGVzdHM7IGNvdWxkIG5vdCBmaW5kIHBhdGgg
dG8gbGxkYi5weSAne30nLiIuZm9ybWF0KGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkpCi0gICAgICAg
IHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gRmFsc2UKLSAgICBlbHNlOgotICAgICAgICBp
ZiBsbGRiX3B5dGhvbl9kaXJlY3Rvcnkgbm90IGluIHN5cy5wYXRoOgotICAgICAgICAgICAgc3lz
LnBhdGguYXBwZW5kKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkKLSAgICAgICAgdGVzdGVyLmFkZF90
cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdsbGRiJykpCi0gICAgICAg
IHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gVHJ1ZQotCiAgICAgdGVzdGVyLnNraXAoKCd3
ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwgJ2FyZSByZWFsbHks
IHJlYWxseSwgc2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3
aW4nKToKICAgICAgICAgdGVzdGVyLnNraXAoKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQnLCAn
d2Via2l0cHkuY29tbW9uLmNvbmZpZycsICd3ZWJraXRweS50b29sJyksICdmYWlsIGhvcnJpYmx5
IG9uIHdpbjMyJywgNTQ1MjYpCkBAIC05OCwxNiArODQsNyBAQCBkZWYgbWFpbigpOgogICAgIGVs
c2U6CiAgICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgUXVldWVTdGF0dXNTZXJ2ZXIgdGVzdHM7
IHRoZSBHb29nbGUgQXBwRW5naW5lIFB5dGhvbiBTREsgaXMgbm90IGluc3RhbGxlZC4nKQogCi0g
ICAgcmV0dXJuIG5vdCB0ZXN0ZXIucnVuKHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzPXdpbGxf
cnVuX2xsZGJfd2Via2l0X3Rlc3RzKQotCi0KLWRlZiBfc3VwcG9ydHNfYnVpbGRpbmdfYW5kX3J1
bm5pbmdfbGxkYl90ZXN0cygpOgotICAgICMgRklYTUU6IFJlbW92ZSB3aGVuIHRlc3QtbGxkYiBp
cyBpbiBpdHMgb3duIHNjcmlwdAotICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4NzkxNgotICAgIGJ1aWxkX3ZlcnNpb24gPSBfaG9zdC5wbGF0Zm9ybS5idWls
ZF92ZXJzaW9uKCkKLSAgICBpZiBidWlsZF92ZXJzaW9uIGlzIE5vbmU6Ci0gICAgICAgIHJldHVy
biBGYWxzZQotICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIG5vdCB0ZXN0ZXIucnVuKCkKIAog
CiBkZWYgX3ByaW50X3Jlc3VsdHNfYXNfanNvbihzdHJlYW0sIGFsbF90ZXN0X25hbWVzLCBmYWls
dXJlcywgZXJyb3JzKToKQEAgLTEyNyw2ICsxMDQsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToK
ICAgICAgICAgc2VsZi5maW5kZXIgPSBGaW5kZXIoZmlsZXN5c3RlbSBvciBGaWxlU3lzdGVtKCkp
CiAgICAgICAgIHNlbGYucHJpbnRlciA9IFByaW50ZXIoc3lzLnN0ZGVycikKICAgICAgICAgc2Vs
Zi5fb3B0aW9ucyA9IE5vbmUKKyAgICAgICAgc2VsZi51cGxvYWRfc3R5bGUgPSAncmVsZWFzZScK
IAogICAgIGRlZiBhZGRfdHJlZShzZWxmLCB0b3BfZGlyZWN0b3J5LCBzdGFydGluZ19zdWJkaXJl
Y3Rvcnk9Tm9uZSk6CiAgICAgICAgIHNlbGYuZmluZGVyLmFkZF90cmVlKHRvcF9kaXJlY3Rvcnks
IHN0YXJ0aW5nX3N1YmRpcmVjdG9yeSkKQEAgLTEzNywxNCArMTE1LDYgQEAgY2xhc3MgVGVzdGVy
KG9iamVjdCk6CiAgICAgZGVmIF9wYXJzZV9hcmdzKHNlbGYsIGFyZ3Y9Tm9uZSk6CiAgICAgICAg
IHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0ndXNhZ2U6ICVwcm9nIFtvcHRp
b25zXSBbYXJncy4uLl0nKQogCi0gICAgICAgICMgIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbmx5
IGVmZmVjdCB0aGUgYnVpbGRpbmcgb2YgbGxkYldlYktpdFRlc3Rlci4KLSAgICAgICAgY29uZmln
dXJhdGlvbl9ncm91cCA9IG9wdHBhcnNlLk9wdGlvbkdyb3VwKHBhcnNlciwgJ0NvbmZpZ3VyYXRp
b24gb3B0aW9ucycpCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fZ3JvdXAuYWRkX29wdGlvbignLS1k
ZWJ1ZycsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0nRGVidWcnLCBkZXN0PSJjb25maWd1
cmF0aW9uIiwKLSAgICAgICAgICAgIGhlbHA9J1NldCB0aGUgY29uZmlndXJhdGlvbiB0byBEZWJ1
ZycpCi0gICAgICAgIGNvbmZpZ3VyYXRpb25fZ3JvdXAuYWRkX29wdGlvbignLS1yZWxlYXNlJywg
YWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSdSZWxlYXNlJywgZGVzdD0iY29uZmlndXJhdGlv
biIsCi0gICAgICAgICAgICBoZWxwPSdTZXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gUmVsZWFzZScp
Ci0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uX2dyb3VwKGNvbmZpZ3VyYXRpb25fZ3JvdXApCi0K
ICAgICAgICAgdXBsb2FkX2dyb3VwID0gb3B0cGFyc2UuT3B0aW9uR3JvdXAocGFyc2VyLCAnVXBs
b2FkIE9wdGlvbnMnKQogICAgICAgICB1cGxvYWRfZ3JvdXAuYWRkX29wdGlvbnModXBsb2FkX29w
dGlvbnMoKSkKICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAodXBsb2FkX2dyb3VwKQpA
QCAtMTc2LDcgKzE0Niw3IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogCiAgICAgICAgIHJldHVy
biBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQogCi0gICAgZGVmIHJ1bihzZWxmLCB3aWxsX3J1bl9s
bGRiX3dlYmtpdF90ZXN0cz1GYWxzZSk6CisgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgc2Vs
Zi5fb3B0aW9ucywgYXJncyA9IHNlbGYuX3BhcnNlX2FyZ3MoKQogICAgICAgICBzZWxmLnByaW50
ZXIuY29uZmlndXJlKHNlbGYuX29wdGlvbnMpCiAKQEAgLTE4Nyw5ICsxNTcsOSBAQCBjbGFzcyBU
ZXN0ZXIob2JqZWN0KToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ05vIHRlc3RzIHRvIHJ1bicp
CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rl
c3RzKG5hbWVzLCB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cykKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3J1bl90ZXN0cyhuYW1lcykKIAotICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzLCB3
aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cyk6CisgICAgZGVmIF9ydW5fdGVzdHMoc2VsZiwgbmFt
ZXMpOgogICAgICAgICAjIE1ha2Ugc3VyZSBQWVRIT05QQVRIIGlzIHNldCB1cCBwcm9wZXJseS4K
ICAgICAgICAgc3lzLnBhdGggPSBzZWxmLmZpbmRlci5hZGRpdGlvbmFsX3BhdGhzKHN5cy5wYXRo
KSArIHN5cy5wYXRoCiAKQEAgLTIwMCwyMyArMTcwLDggQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6
CiAgICAgICAgIGF1dG9pbnN0YWxsX2V2ZXJ5dGhpbmcoKQogCiAgICAgICAgIHN0YXJ0X3RpbWUg
PSB0aW1lLnRpbWUoKQotICAgICAgICBjb25maWcgPSBDb25maWcoX2hvc3QuZXhlY3V0aXZlLCBz
ZWxmLmZpbmRlci5maWxlc3lzdGVtKQotICAgICAgICBjb25maWd1cmF0aW9uX3RvX3VzZSA9IHNl
bGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiBvciBjb25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9u
KCkKLQotICAgICAgICBpZiB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0czoKLSAgICAgICAgICAg
IHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoJ0J1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIgLi4u
JykKLSAgICAgICAgICAgIGJ1aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIgPSBzZWxmLmZpbmRlci5maWxl
c3lzdGVtLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycsICdidWlsZC1sbGRi
d2Via2l0dGVzdGVyJykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfaG9zdC5l
eGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKFtidWlsZF9sbGRid2Via2l0dGVzdGVyLCBj
b25maWcuZmxhZ19mb3JfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uX3RvX3VzZSldLCBxdWll
dD0obm90IGJvb2woc2VsZi5fb3B0aW9ucy52ZXJib3NlKSkpCi0gICAgICAgICAgICBleGNlcHQg
U2NyaXB0RXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGUubWVzc2FnZV93
aXRoX291dHB1dChvdXRwdXRfbGltaXQ9Tm9uZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0gICAgICAgICAgICBvcy5lbnZpcm9uWydMTERCX1dFQktJVF9URVNURVJfRVhFQ1VUQUJM
RSddID0gc3RyKHNlbGYuZmluZGVyLmZpbGVzeXN0ZW0uam9pbihjb25maWcuYnVpbGRfZGlyZWN0
b3J5KGNvbmZpZ3VyYXRpb25fdG9fdXNlKSwgJ2xsZGJXZWJLaXRUZXN0ZXInKSkKLSAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLmZpbmRlci5maWxlc3lzdGVtLmV4aXN0cyhvcy5lbnZpcm9uWydMTERC
X1dFQktJVF9URVNURVJfRVhFQ1VUQUJMRSddKToKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9y
KCdGYWlsZWQgdG8gZmluZCBsbGRiV2ViS2l0VGVzdGVyLicpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCiAKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb3ZlcmFnZToKKyAgICAgICAg
aWYgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAnY292ZXJhZ2UnLCBGYWxzZSk6CiAgICAgICAgICAg
ICBfbG9nLndhcm5pbmcoIkNoZWNraW5nIGNvZGUgY292ZXJhZ2UsIHNvIHJ1bm5pbmcgdGhpbmdz
IHNlcmlhbGx5IikKICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzID0g
MQogCkBAIC0yNDEsMjYgKzE5NiwyNiBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAg
c2VsZi5wcmludGVyLm51bV90ZXN0cyA9IGxlbihwYXJhbGxlbF90ZXN0cykgKyBsZW4oc2VyaWFs
X3Rlc3RzKQogICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCiAgICAgICAgIHRlc3RfcnVubmVy
ID0gUnVubmVyKHNlbGYucHJpbnRlciwgbG9hZGVyKQotICAgICAgICB0ZXN0X3J1bm5lci5ydW4o
cGFyYWxsZWxfdGVzdHMsIHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKQorICAgICAgICB0
ZXN0X3J1bm5lci5ydW4ocGFyYWxsZWxfdGVzdHMsIGdldGF0dHIoc2VsZi5fb3B0aW9ucywgJ2No
aWxkX3Byb2Nlc3NlcycsIDEpKQogICAgICAgICB0ZXN0X3J1bm5lci5ydW4oc2VyaWFsX3Rlc3Rz
LCAxKQogICAgICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgpCiAKICAgICAgICAgc2VsZi5wcmlu
dGVyLnByaW50X3Jlc3VsdCh0aW1lLnRpbWUoKSAtIHN0YXJ0KQogCi0gICAgICAgIGlmIHNlbGYu
X29wdGlvbnMuanNvbjoKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAnanNvbics
IEZhbHNlKToKICAgICAgICAgICAgIF9wcmludF9yZXN1bHRzX2FzX2pzb24oc3lzLnN0ZG91dCwg
aXRlcnRvb2xzLmNoYWluKHBhcmFsbGVsX3Rlc3RzLCBzZXJpYWxfdGVzdHMpLCB0ZXN0X3J1bm5l
ci5mYWlsdXJlcywgdGVzdF9ydW5uZXIuZXJyb3JzKQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlv
bnMuanNvbl9maWxlX25hbWU6CisgICAgICAgIGlmIGdldGF0dHIoc2VsZi5fb3B0aW9ucywgJ2pz
b25fZmlsZV9uYW1lJywgTm9uZSk6CiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmpzb25fZmls
ZV9uYW1lID0gb3MucGF0aC5hYnNwYXRoKHNlbGYuX29wdGlvbnMuanNvbl9maWxlX25hbWUpCiAg
ICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5fb3B0aW9ucy5qc29uX2ZpbGVfbmFtZSwgJ3cnKSBh
cyBqc29uX2ZpbGU6CiAgICAgICAgICAgICAgICAgX3ByaW50X3Jlc3VsdHNfYXNfanNvbihqc29u
X2ZpbGUsIGl0ZXJ0b29scy5jaGFpbihwYXJhbGxlbF90ZXN0cywgc2VyaWFsX3Rlc3RzKSwgdGVz
dF9ydW5uZXIuZmFpbHVyZXMsIHRlc3RfcnVubmVyLmVycm9ycykKIAotICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLmNvdmVyYWdlOgorICAgICAgICBpZiBnZXRhdHRyKHNlbGYuX29wdGlvbnMsICdj
b3ZlcmFnZScsIEZhbHNlKToKICAgICAgICAgICAgIGNvdi5zdG9wKCkKICAgICAgICAgICAgIGNv
di5zYXZlKCkKIAogICAgICAgICBmYWlsZWRfdXBsb2FkcyA9IDAKLSAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5yZXBvcnRfdXJsczoKKyAgICAgICAgaWYgZ2V0YXR0cihzZWxmLl9vcHRpb25zLCAn
cmVwb3J0X3VybHMnLCBOb25lKToKICAgICAgICAgICAgIHNlbGYucHJpbnRlci5tZXRlci53cml0
ZWxuKCdcbicpCiAgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdQcmVwYXJp
bmcgdXBsb2FkIGRhdGEgLi4uJykKIApAQCAtMjc4LDcgKzIzMyw3IEBAIGNsYXNzIFRlc3Rlcihv
YmplY3QpOgogICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT1faG9zdC5wbGF0Zm9ybS5vc19u
YW1lLAogICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPXN0cihfaG9zdC5wbGF0Zm9ybS5vc192
ZXJzaW9uKSwKICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9uYW1lPV9ob3N0LnBsYXRmb3Jt
Lm9zX3ZlcnNpb25fbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICBzdHlsZT0nYXNhbicgaWYg
Y29uZmlnLmFzYW4gZWxzZSBjb25maWd1cmF0aW9uX3RvX3VzZS5sb3dlcigpLAorICAgICAgICAg
ICAgICAgICAgICBzdHlsZT1zZWxmLnVwbG9hZF9zdHlsZSwKICAgICAgICAgICAgICAgICAgICAg
c2RrPV9ob3N0LnBsYXRmb3JtLmJ1aWxkX3ZlcnNpb24oKSwKICAgICAgICAgICAgICAgICAgICAg
Zmxhdm9yPXNlbGYuX29wdGlvbnMucmVzdWx0X3JlcG9ydF9mbGF2b3IsCiAgICAgICAgICAgICAg
ICAgKSwKQEAgLTMwMCw3ICsyNTUsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAg
ICAgICAgICBmYWlsZWRfdXBsb2FkcyA9IGZhaWxlZF91cGxvYWRzIGlmIHVwbG9hZC51cGxvYWQo
dXJsLCBsb2dfbGluZV9mdW5jPXNlbGYucHJpbnRlci5tZXRlci53cml0ZWxuKSBlbHNlIChmYWls
ZWRfdXBsb2FkcyArIDEpCiAgICAgICAgICAgICBzZWxmLnByaW50ZXIubWV0ZXIud3JpdGVsbign
VXBsb2FkcyBjb21wbGV0ZWQhJykKIAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdl
OgorICAgICAgICBpZiBnZXRhdHRyKHNlbGYuX29wdGlvbnMsICdjb3ZlcmFnZScsIEZhbHNlKToK
ICAgICAgICAgICAgIGNvdi5yZXBvcnQoc2hvd19taXNzaW5nPUZhbHNlKQogCiAgICAgICAgIHJl
dHVybiBub3Qgc2VsZi5wcmludGVyLm51bV9lcnJvcnMgYW5kIG5vdCBzZWxmLnByaW50ZXIubnVt
X2ZhaWx1cmVzIGFuZCBub3QgZmFpbGVkX3VwbG9hZHMKQEAgLTMyMiw3ICsyNzcsNyBAQCBjbGFz
cyBUZXN0ZXIob2JqZWN0KToKICAgICBkZWYgX3Rlc3RfbmFtZXMoc2VsZiwgbG9hZGVyLCBuYW1l
cyk6CiAgICAgICAgIHBhcmFsbGVsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzID0gWyd0ZXN0XyddCiAg
ICAgICAgIHNlcmlhbF90ZXN0X21ldGhvZF9wcmVmaXhlcyA9IFsnc2VyaWFsX3Rlc3RfJ10KLSAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5pbnRlZ3JhdGlvbl90ZXN0czoKKyAgICAgICAgaWYgZ2V0
YXR0cihzZWxmLl9vcHRpb25zLCAnaW50ZWdyYXRpb25fdGVzdHMnLCBOb25lKToKICAgICAgICAg
ICAgIHBhcmFsbGVsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzLmFwcGVuZCgnaW50ZWdyYXRpb25fdGVz
dF8nKQogICAgICAgICAgICAgc2VyaWFsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzLmFwcGVuZCgnc2Vy
aWFsX2ludGVncmF0aW9uX3Rlc3RfJykKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>