<?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>134764</bug_id>
          
          <creation_ts>2014-07-09 06:51:04 -0700</creation_ts>
          <short_desc>WebKit test infrastructure should automate the process of cloning W3C test suite and importing tests from it</short_desc>
          <delta_ts>2015-03-13 09:00:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>142085</dependson>
          <blocked>134766</blocked>
    
    <blocked>142163</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>bjonesbe</cc>
    
    <cc>commit-queue</cc>
    
    <cc>glenn</cc>
    
    <cc>rhauck</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1021349</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-07-09 06:51:04 -0700</bug_when>
    <thetext>To import W3C tests, the first step is to clone the W3C test suite.
To ease test import, it would be convenient to have a tool that automates the process of cloning/refreshing the W3C test suite repo then importing parts or all tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021352</commentid>
    <comment_count>1</comment_count>
      <attachid>234633</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-07-09 06:59:02 -0700</bug_when>
    <thetext>Created attachment 234633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022784</commentid>
    <comment_count>2</comment_count>
      <attachid>235011</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-07-16 11:33:39 -0700</bug_when>
    <thetext>Created attachment 235011
Handlingof resources path</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035416</commentid>
    <comment_count>3</comment_count>
      <attachid>238161</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-09-16 01:57:21 -0700</bug_when>
    <thetext>Created attachment 238161
Added file version and skipping .git dir import</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035445</commentid>
    <comment_count>4</comment_count>
      <attachid>238175</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-09-16 05:31:35 -0700</bug_when>
    <thetext>Created attachment 238175
Rebasing according TestImporter change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036564</commentid>
    <comment_count>5</comment_count>
      <attachid>238175</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-09-22 11:12:29 -0700</bug_when>
    <thetext>Comment on attachment 238175
Rebasing according TestImporter change

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

I&apos;m all for importing the WPT tests!

How is this importer going to be invoked? Are you planning to write a wrapper script?

Also, it would be nice to seem some unit tests for this code.

&gt; Tools/ChangeLog:9
&gt; +        * Scripts/webkitpy/w3c/factory.py: Added (w3c test suite argument parser).
&gt; +        (w3c_create_argument_parser):

This function isn&apos;t used by any of your code, and factory.py isn&apos;t a very good filename. Is this actually needed? If so what are you using if for?

&gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:97
&gt; +    def wptsha(self):

wpt_version would be a better name.

&gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:108
&gt; +    def git_clone_arguments(self):

Maybe name this git_clone_tests, and have it actually do the call to Executive().run_command? It doesn&apos;t seem that useful for it just to return the list that has to be passed ton run_command.

&gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:111
&gt; +    def git_pull_arguments(self):

Ditto, &quot;git_pull_tests&quot;

&gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:114
&gt; +    def git_checkout_arguments(self, version):

Ditto, &quot;git_checkout_test_version&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036578</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-09-22 12:49:54 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 238175 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238175&amp;action=review
&gt; 
&gt; I&apos;m all for importing the WPT tests!
&gt; 
&gt; How is this importer going to be invoked? Are you planning to write a wrapper script?

bug 134766 and 134767 are using it.
A wrapper script may still be handy though.

&gt; Also, it would be nice to seem some unit tests for this code.

Right, I will add some.

&gt; 
&gt; &gt; Tools/ChangeLog:9
&gt; &gt; +        * Scripts/webkitpy/w3c/factory.py: Added (w3c test suite argument parser).
&gt; &gt; +        (w3c_create_argument_parser):
&gt; 
&gt; This function isn&apos;t used by any of your code, and factory.py isn&apos;t a very good filename. Is this actually needed? If so what are you using if for?

It is used elsewhere, I will rationalize this.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:97
&gt; &gt; +    def wptsha(self):
&gt; 
&gt; wpt_version would be a better name.

OK

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:108
&gt; &gt; +    def git_clone_arguments(self):
&gt; 
&gt; Maybe name this git_clone_tests, and have it actually do the call to Executive().run_command? It doesn&apos;t seem that useful for it just to return the list that has to be passed ton run_command.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:111
&gt; &gt; +    def git_pull_arguments(self):
&gt; 
&gt; Ditto, &quot;git_pull_tests&quot;
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:114
&gt; &gt; +    def git_checkout_arguments(self, version):
&gt; 
&gt; Ditto, &quot;git_checkout_test_version&quot;

Thanks for the feedback, I will update the patch accordingly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057584</commentid>
    <comment_count>7</comment_count>
      <attachid>243673</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-12-23 07:06:03 -0800</bug_when>
    <thetext>Created attachment 243673
Updated according review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057586</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-12-23 07:11:02 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 238175 [details]
&gt; Rebasing according TestImporter change
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=238175&amp;action=review
&gt; 
&gt; I&apos;m all for importing the WPT tests!
&gt; 
&gt; How is this importer going to be invoked? Are you planning to write a
&gt; wrapper script?
&gt; 
&gt; Also, it would be nice to seem some unit tests for this code.

It seems difficult to write meaningful tests without making network calls or doing executive cmd.
If you have some ideas on tests to add, I will be happy to add them in a following patch.(In reply to comment #5)
&gt; Comment on attachment 238175 [details]
&gt; Rebasing according TestImporter change
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=238175&amp;action=review
&gt; 
&gt; I&apos;m all for importing the WPT tests!
&gt; 
&gt; How is this importer going to be invoked? Are you planning to write a
&gt; wrapper script?
&gt; 
&gt; Also, it would be nice to seem some unit tests for this code.

It seems difficult to write meaningful tests without making network calls or doing executive cmd.
If you have some ideas on tests to add, I will be happy to add them in a following patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057616</commentid>
    <comment_count>9</comment_count>
      <attachid>243673</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-12-23 11:32:12 -0800</bug_when>
    <thetext>Comment on attachment 243673
Updated according review

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

&gt; Tools/ChangeLog:9
&gt; +        WebPlatformTestImporter imports W3C tests into Webkit from the official W3C repository (https://github.com/w3c/web-platform-tests.git).
&gt; +        The W3C test suite repository is cloned and tests are then imported using test_import.py.

We already have http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/w3c/test_importer.py
How is this version different from that?

&gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:57
&gt; +        # Excluding some directories
&gt; +        self._exclude_dir = [&apos;conformance-checkers&apos;, &apos;old-tests&apos;, &apos;.git&apos;]
&gt; +        # Including test infrastructure directories (use of test importer)
&gt; +        self._always_import_dirs = (&apos;common&apos;, &apos;fonts&apos;, &apos;images&apos;, &apos;media&apos;, &apos;resources&apos;, &apos;tools&apos;)
&gt; +        # Including test infrastructure files (no use of test importer, direct copy)
&gt; +        self._always_import_files = [&apos;config.default.json&apos;, &apos;serve.py&apos;]

These comments repeat what the code says.  Please remove them.
Also, rename _always_import_dirs to a more descriptive name like _test_infrastructure_dirs
and _always_import_files to _test_infrastrcutre_files.

&gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:64
&gt; +        if self._options.__dict__[&apos;w3c_verbose&apos;] is False:

What kind of an object is options?  This code looks funky and superfluous.

&gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:87
&gt; +    def always_imported_files(self):
&gt; +        return self._always_import_files
&gt; +
&gt; +    def always_imported_directories(self):
&gt; +        return self._always_import_dirs

Ditto about renames.  But these methods seem to be never called anywhere.

Could we not have them until we need them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057670</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-12-23 15:28:42 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 243673 [details]
&gt; Updated according review
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=243673&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:9
&gt; &gt; +        WebPlatformTestImporter imports W3C tests into Webkit from the official W3C repository (https://github.com/w3c/web-platform-tests.git).
&gt; &gt; +        The W3C test suite repository is cloned and tests are then imported using test_import.py.
&gt; 
&gt; We already have
&gt; http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/w3c/
&gt; test_importer.py
&gt; How is this version different from that?

Two test infrastructure coexist in the W3C: WPT and CSS 
web_platform_test_importer.py is dedicated to WPT (git cloning and conversion).
test_importer.py is used to convert both CSS and WPT tests.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:57
&gt; &gt; +        # Excluding some directories
&gt; &gt; +        self._exclude_dir = [&apos;conformance-checkers&apos;, &apos;old-tests&apos;, &apos;.git&apos;]
&gt; &gt; +        # Including test infrastructure directories (use of test importer)
&gt; &gt; +        self._always_import_dirs = (&apos;common&apos;, &apos;fonts&apos;, &apos;images&apos;, &apos;media&apos;, &apos;resources&apos;, &apos;tools&apos;)
&gt; &gt; +        # Including test infrastructure files (no use of test importer, direct copy)
&gt; &gt; +        self._always_import_files = [&apos;config.default.json&apos;, &apos;serve.py&apos;]
&gt; 
&gt; These comments repeat what the code says.  Please remove them.
&gt; Also, rename _always_import_dirs to a more descriptive name like
&gt; _test_infrastructure_dirs
&gt; and _always_import_files to _test_infrastrcutre_files.

OK

&gt; &gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:64
&gt; &gt; +        if self._options.__dict__[&apos;w3c_verbose&apos;] is False:
&gt; 
&gt; What kind of an object is options?  This code looks funky and superfluous.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/w3c/web_platform_test_importer.py:87
&gt; &gt; +    def always_imported_files(self):
&gt; &gt; +        return self._always_import_files
&gt; &gt; +
&gt; &gt; +    def always_imported_directories(self):
&gt; &gt; +        return self._always_import_dirs
&gt; 
&gt; Ditto about renames.  But these methods seem to be never called anywhere.
&gt; 
&gt; Could we not have them until we need them?

Let&apos;s remove these methods and make the classs fields public, as they are used by the wpt baseline generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057672</commentid>
    <comment_count>11</comment_count>
      <attachid>243700</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-12-23 15:30:48 -0800</bug_when>
    <thetext>Created attachment 243700
Updated according review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057783</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-12-24 16:12:01 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Comment on attachment 243673 [details]
&gt; &gt; Updated according review
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=243673&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/ChangeLog:9
&gt; &gt; &gt; +        WebPlatformTestImporter imports W3C tests into Webkit from the official W3C repository (https://github.com/w3c/web-platform-tests.git).
&gt; &gt; &gt; +        The W3C test suite repository is cloned and tests are then imported using test_import.py.
&gt; &gt; 
&gt; &gt; We already have
&gt; &gt; http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/w3c/
&gt; &gt; test_importer.py
&gt; &gt; How is this version different from that?
&gt; 
&gt; Two test infrastructure coexist in the W3C: WPT and CSS 
&gt; web_platform_test_importer.py is dedicated to WPT (git cloning and
&gt; conversion).
&gt; test_importer.py is used to convert both CSS and WPT tests.

If that&apos;s the case, it appears to me that test_importer.py is the one that should be using web_platform_test_importer.py, not the other way around as it&apos;s currently done in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057930</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-12-26 14:28:10 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; Two test infrastructure coexist in the W3C: WPT and CSS 
&gt; &gt; web_platform_test_importer.py is dedicated to WPT (git cloning and
&gt; &gt; conversion).
&gt; &gt; test_importer.py is used to convert both CSS and WPT tests.
&gt; 
&gt; If that&apos;s the case, it appears to me that test_importer.py is the one that
&gt; should be using web_platform_test_importer.py, not the other way around as
&gt; it&apos;s currently done in this patch.

test_importer.py should be split in two parts:
- one specific (css_test_suite_importer.py) to CSS test suite
- one generic (w3c_test_importer.py) used by the dedicated CSS and WPT test suite importers 

web_platform_test_importer.py could be renamed in web_platform_test_suite_importer.py</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058128</commentid>
    <comment_count>14</comment_count>
      <attachid>243807</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-12-29 12:12:10 -0800</bug_when>
    <thetext>Created attachment 243807
Rebasing according bug 134763</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060819</commentid>
    <comment_count>15</comment_count>
      <attachid>244512</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-01-13 07:25:35 -0800</bug_when>
    <thetext>Created attachment 244512
Adding CSS tests import</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060820</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-01-13 07:27:52 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created attachment 244512 [details]
&gt; Adding CSS tests import

As part of this additional support, TestImporter stays the main entry point. If no source directory is provided, CSS and WPT repositories are cloned and filtered before being actually imported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060857</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-01-13 11:39:30 -0800</bug_when>
    <thetext>&gt; If that&apos;s the case, it appears to me that test_importer.py is the one that
&gt; should be using web_platform_test_importer.py, not the other way around as
&gt; it&apos;s currently done in this patch.

Done as part of the latest patch, test_downloader being responsible of downloading both wpt and css tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063232</commentid>
    <comment_count>18</comment_count>
      <attachid>244512</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2015-01-21 17:02:09 -0800</bug_when>
    <thetext>Comment on attachment 244512
Adding CSS tests import

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

In general, I like this patch. Some comments and questions, though.

&gt; Tools/ChangeLog:27
&gt; +        Replaced shutil calls by filesystem calls.
&gt; +        Migrated from optparse to argparse to ease conformance scripts.

It seems like these would be good in their own patch, since this one is pretty big as is.

&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:120
&gt; +    def checkout_web_platform_tests(self):
&gt; +        version = self.tests_version(&apos;WPT&apos;)
&gt; +        if not self._filesystem.exists(self.web_platform_tests_directory):
&gt; +            _log.info(&apos;Cloning web-platform-tests repository...&apos;)
&gt; +            self.git_clone(self.WPT_URL, self.web_platform_tests_directory)
&gt; +        elif self._options.fetch is True:
&gt; +            _log.info(&apos;Fetching web-platform-tests repository...&apos;)
&gt; +            self.git_fetch(self.web_platform_tests_directory)
&gt; +        _log.info(&apos;Checking out web_platform_tests repository branch &apos; + version)
&gt; +        self.git_checkout(self.web_platform_tests_directory, version)
&gt; +
&gt; +    def checkout_csswg_tests(self):
&gt; +        version = self.tests_version(&apos;CSS&apos;)
&gt; +        if not self._filesystem.exists(self.csswg_tests_directory):
&gt; +            _log.info(&apos;Cloning csswg-test repository...&apos;)
&gt; +            self.git_clone(self.CSS_URL, self.csswg_tests_directory)
&gt; +        elif self._options.fetch is True:
&gt; +            _log.info(&apos;Fetching csswg-test repository...&apos;)
&gt; +            self.git_fetch(self.csswg_tests_directory)
&gt; +        _log.info(&apos;Checking out csswg-test repository branch &apos; + version)
&gt; +        self.git_checkout(self.csswg_tests_directory, version)

Nit: These two methods are pretty much identical. It would be nice to remove the duplication.

&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:134
&gt; +            elif &apos;PASS&apos; in line.expectations:
&gt; +                self.infrastructure_paths.append(line.name)

It seems like infrastructure_paths is a misnomer here, since these paths you are adding aren&apos;t only infrastructure paths, it includes test paths, right? Maybe name it paths_to_import or something like that?

&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:152
&gt; +        for name in self._filesystem.listdir(self.web_platform_tests_directory):
&gt; +            relative_path = self._filesystem.join(self.WPT_NAME, name)
&gt; +            if self._should_copy(relative_path, name):
&gt; +                test_paths.append(relative_path)
&gt; +        for name in self._filesystem.listdir(self.csswg_tests_directory):
&gt; +            relative_path = self._filesystem.join(self.CSS_NAME, name)
&gt; +            if self._should_copy(relative_path, name):
&gt; +                test_paths.append(relative_path)

Nit: It would be nice to fix the duplication here as well.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:57
&gt; +            This should be applied to CSS tests but not to WPT tests.

Nit: &quot;This is applied&quot;

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:129
&gt; +    parser.add_argument(&apos;-l&apos;, &apos;--no-links-conversion&apos;, dest=&apos;convert_test_harness_links&apos;, action=&apos;store_false&apos;, default=True,
&gt; +        help=&apos;Do not change links (testharness js or css e.g.). By default, links are converted to point to WebKit testharness files if a w3c test directory to import is provided&apos;)

This help should be updated to reflect that links are only converted by default for CSS WG tests, this flag has no effect for WPT tests.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:426
&gt; +        import_log.write(&apos;Instead, push changes to the corresponding CSS repository:\n&apos;)
&gt;          import_log.write(&apos;\thttp://hg.csswg.org/test\n&apos;)

We could simplify this message and remove the mention of the HG repo. I think most people working in the WebKit source will be more inclined to go the Git route.

&gt; LayoutTests/imported/w3c/resources/ImportExpectations:1
&gt; +csswg-tests/compositing-1 [ Skip ]

From my reading of the code, if a new directory is added, it will be imported. I think it would be better if the default was to Skip, and this acted as a whitelist so that tests won&apos;t be accidentally imported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063328</commentid>
    <comment_count>19</comment_count>
      <attachid>244512</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-01-22 02:10:30 -0800</bug_when>
    <thetext>Comment on attachment 244512
Adding CSS tests import

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

&gt;&gt; Tools/ChangeLog:27
&gt;&gt; +        Migrated from optparse to argparse to ease conformance scripts.
&gt; 
&gt; It seems like these would be good in their own patch, since this one is pretty big as is.

Thanks a lot for the review.
I will update the patch according your suggestions, except for the last item which may need more discussion (see below).

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:120
&gt;&gt; +        self.git_checkout(self.csswg_tests_directory, version)
&gt; 
&gt; Nit: These two methods are pretty much identical. It would be nice to remove the duplication.

OK

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:134
&gt;&gt; +                self.infrastructure_paths.append(line.name)
&gt; 
&gt; It seems like infrastructure_paths is a misnomer here, since these paths you are adding aren&apos;t only infrastructure paths, it includes test paths, right? Maybe name it paths_to_import or something like that?

OK

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:152
&gt;&gt; +                test_paths.append(relative_path)
&gt; 
&gt; Nit: It would be nice to fix the duplication here as well.

OK

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:57
&gt;&gt; +            This should be applied to CSS tests but not to WPT tests.
&gt; 
&gt; Nit: &quot;This is applied&quot;

OK

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:129
&gt;&gt; +        help=&apos;Do not change links (testharness js or css e.g.). By default, links are converted to point to WebKit testharness files if a w3c test directory to import is provided&apos;)
&gt; 
&gt; This help should be updated to reflect that links are only converted by default for CSS WG tests, this flag has no effect for WPT tests.

OK

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:426
&gt;&gt;          import_log.write(&apos;\thttp://hg.csswg.org/test\n&apos;)
&gt; 
&gt; We could simplify this message and remove the mention of the HG repo. I think most people working in the WebKit source will be more inclined to go the Git route.

OK

&gt;&gt; LayoutTests/imported/w3c/resources/ImportExpectations:1
&gt;&gt; +csswg-tests/compositing-1 [ Skip ]
&gt; 
&gt; From my reading of the code, if a new directory is added, it will be imported. I think it would be better if the default was to Skip, and this acted as a whitelist so that tests won&apos;t be accidentally imported.

Right, pass is the default currently, mirroring the test expectations files.
It makes things a bit simpler as this file contains only Skip lines (test suites or individual tests) and comments.
This gives the incentive to make the file smaller if not empty.

The issue you mention happens when bumping the version of the repo.
As it may also be fixed at that level, I would tend to revisit this issue when we get some more practice on bumping version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063375</commentid>
    <comment_count>20</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2015-01-22 09:52:00 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Comment on attachment 244512 [details]
&gt; Adding CSS tests import
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244512&amp;action=review
&gt; 
&gt; &gt;&gt; LayoutTests/imported/w3c/resources/ImportExpectations:1
&gt; &gt;&gt; +csswg-tests/compositing-1 [ Skip ]
&gt; &gt; 
&gt; &gt; From my reading of the code, if a new directory is added, it will be imported. I think it would be better if the default was to Skip, and this acted as a whitelist so that tests won&apos;t be accidentally imported.
&gt; 
&gt; Right, pass is the default currently, mirroring the test expectations files.
&gt; It makes things a bit simpler as this file contains only Skip lines (test
&gt; suites or individual tests) and comments.
&gt; This gives the incentive to make the file smaller if not empty.
&gt; 
&gt; The issue you mention happens when bumping the version of the repo.
&gt; As it may also be fixed at that level, I would tend to revisit this issue
&gt; when we get some more practice on bumping version.

You have a good point there. Having it work like existing expectations files is valuable. It would be nice if we could have the script notify on version updates if a new path is getting imported so that something intelligent could be done about it. But that&apos;s something for the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063475</commentid>
    <comment_count>21</comment_count>
      <attachid>245166</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-01-22 14:51:34 -0800</bug_when>
    <thetext>Created attachment 245166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064032</commentid>
    <comment_count>22</comment_count>
      <attachid>245166</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-25 13:44:12 -0800</bug_when>
    <thetext>Comment on attachment 245166
Patch

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

&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:72
&gt; +        self._init_paths_from_expectations(self._filesystem.join(self.layout_tests_w3c_resources_path, &apos;InfrastructurePaths&apos;))

I don&apos;t think we should be using TestExpectations format for InfrastructurePaths.
That would be very confusion because web-platform-tests/config.default.json, for example, is never ran as a test.
We should just use a JSON format indicating whether a file should be imported or not.
r- because of this.

&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:91
&gt; +    def _run_command(self, arguments):
&gt; +        Executive().run_command(arguments, return_stderr=False)
&gt; +
&gt; +    def git_clone(self, url, directory):
&gt; +        arguments = [&apos;git&apos;, &apos;clone&apos;, &apos;--recursive&apos;, url, directory]
&gt; +        self._run_command(arguments)
&gt; +
&gt; +    def git_fetch(self, directory):
&gt; +        arguments = [&apos;git&apos;, &apos;-C&apos;, directory, &apos;pull&apos;]
&gt; +        self._run_command(arguments)
&gt; +
&gt; +    def git_checkout(self, directory, version):
&gt; +        arguments = [&apos;git&apos;, &apos;-C&apos;, directory, &apos;checkout&apos;, version]
&gt; +        if not self._options.verbose:
&gt; +            arguments += [&apos;-q&apos;]
&gt; +        self._run_command(arguments)

Why are we not using scm/git.py instead?

&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:93
&gt; +    def tests_version(self, name):

Is &quot;version&quot; some W3C test specific terminology?  If not, why don&apos;t we call it &quot;branch&quot; to match git terminology?

&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:100
&gt; +    def checkout_tests(self, version, url, directory):

I would call this checkout_test_repository instead.

&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:129
&gt; +    def _should_copy(self, relative_path, name):
&gt; +        if name == &apos;.git&apos;:
&gt; +            return False
&gt; +        if relative_path in self.paths_to_skip:
&gt; +            return False
&gt; +        return True

I don&apos;t think it&apos;s helpful to have a separate method here.  I&apos;d prefer seeing this logic inside _add_test_suite_paths instead.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:183
&gt; +        if len(self.options.test_paths) == 0 or self._importing_downloaded_tests:

While we&apos;re at it, we should change the first condition to &quot;not self.options.test_paths&quot; to match the WebKit style guide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064143</commentid>
    <comment_count>23</comment_count>
      <attachid>245166</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-01-26 05:43:42 -0800</bug_when>
    <thetext>Comment on attachment 245166
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:72
&gt;&gt; +        self._init_paths_from_expectations(self._filesystem.join(self.layout_tests_w3c_resources_path, &apos;InfrastructurePaths&apos;))
&gt; 
&gt; I don&apos;t think we should be using TestExpectations format for InfrastructurePaths.
&gt; That would be very confusion because web-platform-tests/config.default.json, for example, is never ran as a test.
&gt; We should just use a JSON format indicating whether a file should be imported or not.
&gt; r- because of this.

Sounds good.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:91
&gt;&gt; +        self._run_command(arguments)
&gt; 
&gt; Why are we not using scm/git.py instead?

I was not aware of it.
Checking it now, I will use _run_git method.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:93
&gt;&gt; +    def tests_version(self, name):
&gt; 
&gt; Is &quot;version&quot; some W3C test specific terminology?  If not, why don&apos;t we call it &quot;branch&quot; to match git terminology?

&quot;revision&quot; sounds good.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:100
&gt;&gt; +    def checkout_tests(self, version, url, directory):
&gt; 
&gt; I would call this checkout_test_repository instead.

OK

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:129
&gt;&gt; +        return True
&gt; 
&gt; I don&apos;t think it&apos;s helpful to have a separate method here.  I&apos;d prefer seeing this logic inside _add_test_suite_paths instead.

OK

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:183
&gt;&gt; +        if len(self.options.test_paths) == 0 or self._importing_downloaded_tests:
&gt; 
&gt; While we&apos;re at it, we should change the first condition to &quot;not self.options.test_paths&quot; to match the WebKit style guide.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064154</commentid>
    <comment_count>24</comment_count>
      <attachid>245348</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-01-26 06:51:40 -0800</bug_when>
    <thetext>Created attachment 245348
Using scm git, changing to JSON for TestInfrastructurePaths and repository revisions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064157</commentid>
    <comment_count>25</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-01-26 07:00:26 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Created attachment 245348 [details]
&gt; Using scm git, changing to JSON for TestInfrastructurePaths and repository
&gt; revisions

I made some small additional modifications:
- Added TestsRevision file into imported/w3c/resources
- If not able to get a proper revision, the script will fail(previously we were returning master)
- Removed verbose option
- No copy of top files starting with &apos;.&apos; and not only &apos;.git&apos;

One small downsides of using _run_git is that no status update is displayed when cloning a repo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066196</commentid>
    <comment_count>26</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-02-02 12:48:36 -0800</bug_when>
    <thetext>The following features are missing:
- Making git clone not recursive (submodules are not checked in WebKit repo).
- Automatically generate repository submodules decription (imported/w3c/resources/WPTModules)
- Better handling of ImportExpectations. In particular Skip should be working for test files and not only top-level directories.

I can integrate those changes in the current patch.
Since it seems patch is converging, I would tend to file these as separate bugs.

Any review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071415</commentid>
    <comment_count>27</comment_count>
      <attachid>245348</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-02-23 16:50:15 -0800</bug_when>
    <thetext>Comment on attachment 245348
Using scm git, changing to JSON for TestInfrastructurePaths and repository revisions

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

&gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:47
&gt; +    CSS_NAME = &apos;csswg-tests&apos;
&gt; +    CSS_URL = &apos;https://github.com/w3c/csswg-test.git&apos;
&gt; +
&gt; +    WPT_NAME = &apos;web-platform-tests&apos;
&gt; +    WPT_URL = &apos;https://github.com/w3c/web-platform-tests.git&apos;

Can we use an array/dictionary of name/url pairs instead?

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:100
&gt; +    import_dir = args[0] if len(args) &gt; 0 else None

if args else None is sufficient. In fact, that&apos;s the preferred style in WebKit per our coding guideline.

&gt; LayoutTests/imported/w3c/ChangeLog:16
&gt; +        * resources/ImportExpectations: Added.
&gt; +        * resources/InfrastructurePaths: Added.
&gt; +        * resources/TestRevisions: Added.

It annoys me that there are there different files specifying revisions, files to import, and then a list of files to skip after importing.
I think we should at least combine the first two into one file.

Also, why can&apos;t we simply avoid importing without having ImportExpectations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071630</commentid>
    <comment_count>28</comment_count>
      <attachid>247225</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-02-24 05:14:38 -0800</bug_when>
    <thetext>Created attachment 247225
Refactoring repository description and download</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071634</commentid>
    <comment_count>29</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-02-24 05:21:50 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; Comment on attachment 245348 [details]
&gt; Using scm git, changing to JSON for TestInfrastructurePaths and repository
&gt; revisions
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=245348&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/w3c/test_downloader.py:47
&gt; &gt; +    CSS_NAME = &apos;csswg-tests&apos;
&gt; &gt; +    CSS_URL = &apos;https://github.com/w3c/csswg-test.git&apos;
&gt; &gt; +
&gt; &gt; +    WPT_NAME = &apos;web-platform-tests&apos;
&gt; &gt; +    WPT_URL = &apos;https://github.com/w3c/web-platform-tests.git&apos;
&gt; 
&gt; Can we use an array/dictionary of name/url pairs instead?

I refactored this to put all information in resources/TestRepositories, which also merge resources/InfrastructurePaths and resources/TestRevisions.

&gt; &gt; Tools/Scripts/webkitpy/w3c/test_importer.py:100
&gt; &gt; +    import_dir = args[0] if len(args) &gt; 0 else None
&gt; 
&gt; if args else None is sufficient. In fact, that&apos;s the preferred style in
&gt; WebKit per our coding guideline.

OK

&gt; &gt; LayoutTests/imported/w3c/ChangeLog:16
&gt; &gt; +        * resources/ImportExpectations: Added.
&gt; &gt; +        * resources/InfrastructurePaths: Added.
&gt; &gt; +        * resources/TestRevisions: Added.
&gt; 
&gt; It annoys me that there are there different files specifying revisions,
&gt; files to import, and then a list of files to skip after importing.
&gt; I think we should at least combine the first two into one file.

Latest patch merges the last two files in one.

ImportExpectations contain test not to import.
InfrastructurePaths contain folders that need to be copied but should be skipped in the TestExpectations.

&gt; Also, why can&apos;t we simply avoid importing without having ImportExpectations?

Initial patches were importing every test in a given folder.
The failing/timeout/crash tests were then marked as skip in the TestExpectations (see bug 134766).

Bem suggested to introduce the ImportExpectations file to capture this list of failing tests. I think it makes sense to do so, there is no real point in importing test that do not assert anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073339</commentid>
    <comment_count>30</comment_count>
      <attachid>247674</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-03-02 09:20:17 -0800</bug_when>
    <thetext>Created attachment 247674
Rebasing and adding already imported tests in ImportExpectations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073346</commentid>
    <comment_count>31</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-03-02 09:33:15 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; Created attachment 247674 [details]
&gt; Rebasing and adding already imported tests in ImportExpectations

Patch from bug 142163 (https://bugs.webkit.org/attachment.cgi?id=247676) illustrates how would be used ImportExpectations to progressively import and triage W3C tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076948</commentid>
    <comment_count>32</comment_count>
      <attachid>247674</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-13 09:00:36 -0700</bug_when>
    <thetext>Comment on attachment 247674
Rebasing and adding already imported tests in ImportExpectations

Clearing flags on attachment: 247674

Committed r181479: &lt;http://trac.webkit.org/changeset/181479&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076949</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-13 09:00:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234633</attachid>
            <date>2014-07-09 06:59:02 -0700</date>
            <delta_ts>2014-07-16 11:33:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134764-20140709155843.patch</filename>
            <type>text/plain</type>
            <size>12825</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNzk5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWQ4MTIyY2IxM2M2YTUyOTY4ZWEwZTA5MjIxZWQ0NDQ5
YzBjMzE0My4uNmM4NTc3ZDcyYjg5NTFlOTJiMDdjN2Y5ZWM2YmQ2ZmVjNzhlMTUzNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDE0LTA3LTA5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgVzNDIHRlc3QgaW1wb3J0ZXIgc2hvdWxkIGNvbnZlcnQgdGVzdGhhcm5l
c3MuanMvdGVzdGhhcm5lc3NyZXBvcnQuanMgbGlua3MgYXMgcmVsYXRpdmUgbGlua3MgdG8gaW1w
b3J0ZWQgV1BUIHJlc291cmNlcyBmb2xkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNDc2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIu
cHk6CisgICAgICAgIChfVzNDVGVzdENvbnZlcnRlci5fX2luaXRfXyk6CisKIDIwMTQtMDctMDMg
IFNoaXZha3VtYXIgSk0gIDxzaGl2YS5qbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtX
SzJdIEVuaGFuY2UgdGhlIE1pbmlicm93c2VyIHRvIHNob3cgdGV4dCBzZWFyY2ggY291bnQgYW5k
IGNsb3NlIHNlYXJjaCBiYXIuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy9mYWN0b3J5LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvZmFjdG9yeS5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xYWM5ZjY4ZmJmYzhmZThmNjZlZDA3NTg5NGI5NTE5ZDRjNmU4OThlCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvZmFjdG9yeS5weQpAQCAtMCww
ICsxLDYxIEBACisjIENvcHlyaWdodCAoYykgMjAxNCwgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJGYWN0b3J5IG1ldGhvZCB0byByZXRyaWV2ZSB0aGUg
YXBwcm9wcmlhdGUgVzNDIGNvbnRleHQuIiIiCisKK2ltcG9ydCBhcmdwYXJzZQorCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0Citmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0
IHBsYXRmb3JtX29wdGlvbnMKKworCitkZWYgdzNjX2NyZWF0ZV9hcmd1bWVudF9wYXJzZXIoaG9z
dCwgc2NyaXB0X25hbWUpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkK
KworICAgICMgQWRkIHBsYXRmb3JtIGFyZ3VtZW50cworICAgIGZvciBvcHQgaW4gcGxhdGZvcm1f
b3B0aW9ucyh1c2VfZ2xvYnM9RmFsc2UpOgorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KG9w
dC5nZXRfb3B0X3N0cmluZygpLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgZGVzdD0ncGxhdGZvcm0n
LCBjb25zdD1vcHQuY29uc3QpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWZ1bGwtaGVs
cCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9J0Rp
c3BsYXkgJyArIHNjcmlwdF9uYW1lICsgJyBhbmQgc3Vic2NyaXB0IGhlbHAgbWVzc2FnZXMuJykK
KyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXdlYmtpdC10ZXN0LXJ1bm5lcicsICctMicsIGFj
dGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9J1NldCBXZWJL
aXQgYXJjaGl0ZWN0dXJlIFdlYktpdDEgb3IgV2ViS2l0MiAoZGVmYXVsdCBXSzEpLicpCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgnLXczYy1xJywgJy0tdzNjLXF1aWV0JywgYWN0aW9uPSdzdG9y
ZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgaGVscD0nUHJpbnQgbWluaW1hbCBsb2cu
JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdzNjLXYnLCAnLS13M2MtdmVyYm9zZScsIGFj
dGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9J1ByaW50IGRl
dGFpbCBhbmQgYWN0aXZhdGUgbG9nIG9mIHNjcmlwdCBjYWxsLicpCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgnLXczYy1sJywgJy0tdzNjLWxpc3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZh
dWx0PUZhbHNlLAorICAgICAgICBoZWxwPSdMaXN0IGF2YWlsYWJsZSB0ZXN0IGdyb3VwcyBpbnRv
IHdlYi1wbGF0Zm9ybS10ZXN0IHJlcG9zaXRvcnkuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KCctdzNjLXQnLCAnLS13M2MtdGVzdCcsIGRlc3Q9J3Rlc3RzJywgZGVmYXVsdD0nJywKKyAgICAg
ICAgaGVscD0nSW1wb3J0IGFuZCBydW4gYSBzcGVjaWZpYyBsaXN0IG9mIHRlc3RzICgtdCB0ZXN0
MTp0ZXN0MjouLi4pLicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXczYy1yJywgJy0tdzNj
LXJlZnJlc2gnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICBo
ZWxwPSdSZWZyZXNoIHRlc3Qgd2l0aCBhIGdpdCBwdWxsLCBjaGVja291dCB3aXRoIHRoZSBnaXZl
biBzaGEgYW5kIHJlZG8gdGVzdCBpbXBvcnQuIFRoaXMgb3B0aW9uIGlzIGFzc29jaWF0ZWQgd2l0
aCB0aGUgLXczYy13cHQtc2hhIG9wdGlvbi4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy13
M2MtZCcsICctLXdlYi1wbGF0Zm9ybS10ZXN0cy1kaXInLCBkZXN0PSdyZWZ0ZXN0ZGlyJywgZGVm
YXVsdD0nd2ViLXBsYXRmb3JtLXRlc3RzJywKKyAgICAgICAgaGVscD0nQ2xvbmUgdGhlIHdlYi1w
bGF0Zm9ybS10ZXN0IHJlcG9zaXRvcnkgaW50byBhIHNwZWNpZmljIGRpcmVjdG9yeSByZWxhdGl2
ZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRlZC4gQnkgZGVmYXVsdCwgaW1wb3J0cyBpbnRvIHdlYi1w
bGF0Zm9ybS10ZXN0cy4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy13M2Mtd3B0LXNoYScs
ICctLXdlYi1wbGF0Zm9ybS10ZXN0cy1zaGEnLCBkZXN0PSd3cHRzaGEnLCBkZWZhdWx0PSdtYXN0
ZXInLAorICAgICAgICBoZWxwPSdDbG9uZSBhIHNwZWNpZmljIHdlYi1wbGF0Zm9ybS10ZXN0IHJl
dmlzaW9uLiBCeSBkZWZhdWx0LCB1c2UgZmlsZSBjb21taXQgaW4gTGF5b3V0VGVzdHMvaW1wb3J0
L3czYy4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy13M2MtaW1wb3J0LWRpcicsIGRlc3Q9
J2ltcG9ydGRpcicsIGRlZmF1bHQ9aG9zdC5maWxlc3lzdGVtLmpvaW4oJ2ltcG9ydGVkJywgJ3cz
YycsICd3cHQnKSwKKyAgICAgICAgaGVscD0nRGlyZWN0b3J5IHdoZXJlIFczQyB0ZXN0IHN1aXRl
cyBhcmUgaW1wb3J0ZWQuIEJ5IGRlZmF1bHQsIHRlc3RzIGFyZSBpbXBvcnRlZCBpbiBpbXBvcnRl
ZC93M2Mvd3B0IHJlbGF0aXZlIHRvIExheW91dFRlc3RzLicpCisgICAgcmV0dXJuIHBhcnNlcgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mvd2ViX3BsYXRmb3JtX3Rlc3Rf
aW1wb3J0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy93ZWJfcGxhdGZvcm1fdGVz
dF9pbXBvcnRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmEwMjRjNGY3NGRhMzg1NDYxYjE3MWFlOTZlYzE2
YWFiYjM4NDMyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
d2ViX3BsYXRmb3JtX3Rlc3RfaW1wb3J0ZXIucHkKQEAgLTAsMCArMSwxNjggQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoYykgMjAxNCwgQ2Fub24gSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4g
bm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiIKKyBUaGlzIHNjcmlwdCBpbXBvcnRzIFcz
QyB0ZXN0cyBpbnRvIFdlYmtpdCBmcm9tIHRoZSBvZmZpY2lhbCBXM0MgcmVwb3NpdG9yeSAoaHR0
cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0KS4KKyBUaGUgVzNDIHRl
c3Qgc3VpdGUgcmVwb3NpdG9yeSBpcyBjbG9uZWQgYW5kIHRlc3RzIGFyZSB0aGVuIGltcG9ydGVk
IHVzaW5nIHRlc3RfaW1wb3J0LnB5LgorIiIiCisKK2ltcG9ydCBnbG9iCitpbXBvcnQgbG9nZ2lu
ZworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNodXRpbAor
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0Citmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29t
bW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgorZnJvbSB3ZWJraXRweS53M2Mu
dGVzdF9pbXBvcnRlciBpbXBvcnQgVGVzdEltcG9ydGVyCisKK19sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKKworCitjbGFzcyBXZWJQbGF0Zm9ybVRlc3RJbXBvcnRlcihvYmplY3Qp
OgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMpOgorICAgICAgICBzZWxm
LnBvcnQgPSBwb3J0CisgICAgICAgIHNlbGYuaG9zdCA9IHBvcnQuaG9zdAorICAgICAgICBzZWxm
Lm9wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYucGxhdGZvcm0gPSBvcHRpb25zLnBsYXRm
b3JtCisKKyAgICAgICAgc2VsZi5maWxlc3lzdGVtID0gc2VsZi5ob3N0LmZpbGVzeXN0ZW0KKwor
ICAgICAgICB3ZWJraXRfZmluZGVyID0gV2ViS2l0RmluZGVyKHNlbGYuZmlsZXN5c3RlbSkKKyAg
ICAgICAgc2VsZi5fd2Via2l0X3Jvb3QgPSB3ZWJraXRfZmluZGVyLndlYmtpdF9iYXNlKCkKKwor
ICAgICAgICBzZWxmLndlYl9wbGF0Zm9ybV90ZXN0c19kZXN0ID0gb3B0aW9ucy5fX2RpY3RfX1sn
aW1wb3J0ZGlyJ10KKyAgICAgICAgc2VsZi53ZWJfcGxhdGZvcm1fdGVzdHNfZGlyID0gc2VsZi5m
aWxlc3lzdGVtLmpvaW4oJ1dlYktpdEJ1aWxkJywgb3B0aW9ucy5fX2RpY3RfX1sncmVmdGVzdGRp
ciddKQorICAgICAgICBzZWxmLnRlc3Rfc3VpdGVfbGlzdCA9IFtdCisgICAgICAgICMgRXhjbHVk
aW5nIHNvbWUgZGlyZWN0b3JpZXMKKyAgICAgICAgc2VsZi5leGNsdWRlX2RpciA9IFsnY29uZm9y
bWFuY2UtY2hlY2tlcnMnLCAnb2xkLXRlc3RzJ10KKyAgICAgICAgIyBJbmNsdWRpbmcgc29tZSB0
ZXN0IGluZnJhc3RydWN0dXJlIGRpcmVjdG9yaWVzCisgICAgICAgIHNlbGYuYWx3YXlzX2ltcG9y
dF9kaXJzID0gKCdjb21tb24nLCAnZm9udHMnLCAnaW1hZ2VzJywgJ21lZGlhJywgJ3Jlc291cmNl
cycsICd0b29scycpCisgICAgICAgIHNlbGYuYWx3YXlzX2ltcG9ydF9maWxlcyA9IFsnY29uZmln
LmRlZmF1bHQuanNvbicsICdzZXJ2ZS5weSddCisKKyAgICAgICAgc2VsZi5jcmVhdGVfdGVzdF9z
dWl0ZV9saXN0KCkKKworICAgIGRlZiBjcmVhdGVfdGVzdF9zdWl0ZV9saXN0KHNlbGYpOgorCisg
ICAgICAgIHNlbGYuY2hlY2tvdXRfdGVzdHMoKQorCisgICAgICAgIGlmIHNlbGYub3B0aW9ucy5f
X2RpY3RfX1sndzNjX2xpc3QnXSBpcyBUcnVlOgorICAgICAgICAgICAgc2VsZi5kdW1wX3Rlc3Rz
KCkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHNlbGYub3B0aW9ucy5fX2RpY3Rf
X1sndGVzdHMnXToKKyAgICAgICAgICAgIHNlbGYudGVzdF9zdWl0ZV9saXN0ID0gcmUuc3BsaXQo
JzonLCBzZWxmLm9wdGlvbnMuX19kaWN0X19bJ3Rlc3RzJ10pCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBlbnRyaWVzID0gZ2xvYi5nbG9iKHNlbGYud2ViX3BsYXRmb3JtX3Rlc3RzX2RpciAr
ICcvKicpCisgICAgICAgICAgICBkaXJzID0gZmlsdGVyKGxhbWJkYSBmOiBvcy5wYXRoLmlzZGly
KGYpLCBlbnRyaWVzKQorICAgICAgICAgICAgZm9yIGQgaW4gc29ydGVkKGRpcnMpOgorICAgICAg
ICAgICAgICAgIHRlc3RzID0gb3MucGF0aC5iYXNlbmFtZShkKQorICAgICAgICAgICAgICAgIGlm
IHRlc3RzIG5vdCBpbiBzZWxmLmV4Y2x1ZGVfZGlyIGFuZCB0ZXN0cyBub3QgaW4gc2VsZi5hbHdh
eXNfaW1wb3J0X2RpcnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdF9zdWl0ZV9saXN0
LmFwcGVuZCh0ZXN0cykKKworICAgICAgICBzZWxmLnRlc3Rfc3VpdGVfbGlzdC5zb3J0KCkKKwor
ICAgIGRlZiB0ZXN0X3N1aXRlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudGVzdF9zdWl0
ZV9saXN0CisKKyAgICBkZWYgdGVzdHMoc2VsZik6CisgICAgICAgIHBhdGhzID0gW10KKyAgICAg
ICAgZm9yIHRlc3Rfc3VpdGUgaW4gc2VsZi50ZXN0X3N1aXRlX2xpc3Q6CisgICAgICAgICAgICBw
YXRocyArPSBbc2VsZi5maWxlc3lzdGVtLmpvaW4oc2VsZi53ZWJfcGxhdGZvcm1fdGVzdHNfZGVz
dCwgdGVzdF9zdWl0ZSldCisgICAgICAgIHJldHVybiBzZWxmLnBvcnQudGVzdHMocGF0aHMpCisK
KyAgICBkZWYgaW1wb3J0X3Rlc3RzKHNlbGYpOgorICAgICAgICBzZWxmLmltcG9ydF9kaXJzKHNl
bGYuYWx3YXlzX2ltcG9ydF9kaXJzKQorICAgICAgICBzZWxmLmltcG9ydF9maWxlcyhzZWxmLmFs
d2F5c19pbXBvcnRfZmlsZXMpCisgICAgICAgICMgSW1wb3J0IGFuZCBhZGFwdCB0ZXN0cyB0byBl
bmFibGUgZXhlY3V0aW9uIHdpdGggdGhlIFdlYktpdCB0ZXN0IGZyYW1ld29yaworICAgICAgICBz
ZWxmLmltcG9ydF9kaXJzKHNlbGYudGVzdF9zdWl0ZV9saXN0KQorCisgICAgZGVmIHdwdHNoYShz
ZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYub3B0aW9ucy5fX2RpY3RfX1snd3B0c2hhJ106Cisg
ICAgICAgICAgICB2ZXJzaW9uX2ZpbGUgPSBzZWxmLmZpbGVzeXN0ZW0uam9pbignTGF5b3V0VGVz
dHMnLCAncGxhdGZvcm0nLCBzZWxmLnBsYXRmb3JtLCAnaW1wb3J0ZWQnLCAndzNjJywgJ1dQVGVz
dHNWZXJzaW9uJykKKyAgICAgICAgICAgIHdpdGggb3Blbih2ZXJzaW9uX2ZpbGUsICdyJykgYXMg
ZjoKKyAgICAgICAgICAgICAgICBzZWxmLm9wdGlvbnMuX19kaWN0X19bJ3dwdHNoYSddID0gZi5y
ZWFkbGluZSgpLnJzdHJpcCgpCisgICAgICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHJl
dHVybiBzZWxmLm9wdGlvbnMuX19kaWN0X19bJ3dwdHNoYSddCisKKyAgICBkZWYgY2hlY2tvdXRf
dGVzdHMoc2VsZik6CisgICAgICAgICIiIkdldCBXM0MgcmVmZXJlbmNlIHRlc3RzIGZyb20gdGhl
IG9mZmljaWFsIGdpdGh1YiByZXBvc2l0b3J5LiIiIgorICAgICAgICBpZiBub3Qgb3MucGF0aC5l
eGlzdHMoc2VsZi53ZWJfcGxhdGZvcm1fdGVzdHNfZGlyKToKKyAgICAgICAgICAgIF9sb2cuZGVi
dWcoJ0Nsb25pbmcgd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9zaXRvcnkuLi4nKQorICAgICAgICAg
ICAgRXhlY3V0aXZlKCkucnVuX2NvbW1hbmQoWydnaXQnLCAnY2xvbmUnLCAnLS1yZWN1cnNpdmUn
LCAnaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53ZWJfcGxhdGZvcm1fdGVzdHNf
ZGlyXSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkKKyAgICAgICAgZWxpZiBzZWxmLm9wdGlvbnMuX19k
aWN0X19bJ3czY19yZWZyZXNoJ10gaXMgVHJ1ZToKKyAgICAgICAgICAgIF9sb2cuZGVidWcoJ1B1
bGxpbmcgd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9zaXRvcnkuLi4nKQorICAgICAgICAgICAgRXhl
Y3V0aXZlKCkucnVuX2NvbW1hbmQoWydnaXQnLCAnLUMnLCBzZWxmLndlYl9wbGF0Zm9ybV90ZXN0
c19kaXIsICdjaGVja291dCcsICdtYXN0ZXInXSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkKKyAgICAg
ICAgICAgIEV4ZWN1dGl2ZSgpLnJ1bl9jb21tYW5kKFsnZ2l0JywgJy1DJywgc2VsZi53ZWJfcGxh
dGZvcm1fdGVzdHNfZGlyLCAncHVsbCddLCByZXR1cm5fc3RkZXJyPUZhbHNlKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIF9sb2cuZGVidWcoJ0NoZWNraW5nIG91
dCBicmFuY2ggJyArIHNlbGYud3B0c2hhKCkpCisgICAgICAgIEV4ZWN1dGl2ZSgpLnJ1bl9jb21t
YW5kKFsnZ2l0JywgJy1DJywgc2VsZi53ZWJfcGxhdGZvcm1fdGVzdHNfZGlyLCAnY2hlY2tvdXQn
LCBzZWxmLndwdHNoYSgpXSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkKKworICAgIGRlZiBkdW1wX3Rl
c3RzKHNlbGYpOgorICAgICAgICBfbG9nLmluZm8oJ1czQyBUZXN0czonKQorICAgICAgICBlbnRy
aWVzID0gZ2xvYi5nbG9iKHNlbGYud2ViX3BsYXRmb3JtX3Rlc3RzX2RpciArICcvKicpCisgICAg
ICAgIGRpcnMgPSBmaWx0ZXIobGFtYmRhIGY6IG9zLnBhdGguaXNkaXIoZiksIGVudHJpZXMpCisg
ICAgICAgIGZvciBkIGluIHNvcnRlZChkaXJzKToKKyAgICAgICAgICAgIHRlc3RzID0gb3MucGF0
aC5iYXNlbmFtZShkKQorICAgICAgICAgICAgaWYgdGVzdHMgbm90IGluIHNlbGYuZXhjbHVkZV9k
aXIgYW5kIHRlc3RzIG5vdCBpbiBzZWxmLmFsd2F5c19pbXBvcnRfZGlyczoKKyAgICAgICAgICAg
ICAgICBfbG9nLmluZm8oJyAgJyArIHRlc3RzKQorCisgICAgZGVmIGltcG9ydF9maWxlcyhzZWxm
LCBmaWxlcyk6CisgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgZiA9IHNlbGYu
ZmlsZXN5c3RlbS5ub3JtcGF0aChmKQorICAgICAgICAgICAgc2VsZi5maWxlc3lzdGVtLmNvcHlm
aWxlKHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYud2ViX3BsYXRmb3JtX3Rlc3RzX2RpciwgZiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlc3lzdGVtLmpv
aW4oc2VsZi5fd2Via2l0X3Jvb3QsICdMYXlvdXRUZXN0cycsIHNlbGYud2ViX3BsYXRmb3JtX3Rl
c3RzX2Rlc3QsIGYpKQorCisgICAgZGVmIGltcG9ydF9kaXJzKHNlbGYsIHRlc3Rfc3VpdGVfbGlz
dCk6CisgICAgICAgICNfbG9nLmluZm8oJ0ltcG9ydCB0ZXN0cy4uLicpCisKKyAgICAgICAgb3Mu
Y2hkaXIoc2VsZi53ZWJfcGxhdGZvcm1fdGVzdHNfZGlyKQorCisgICAgICAgIGZvciB0ZXN0IGlu
IHRlc3Rfc3VpdGVfbGlzdDoKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuZmls
ZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9yb290LCAnTGF5b3V0VGVzdHMnLCBzZWxmLndlYl9w
bGF0Zm9ybV90ZXN0c19kZXN0LCB0ZXN0KSk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5vcHRp
b25zLl9fZGljdF9fWyd3M2NfcmVmcmVzaCddIGlzIFRydWU6CisgICAgICAgICAgICAgICAgICAg
IHNodXRpbC5ybXRyZWUoc2VsZi5maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X3Jvb3QsICdM
YXlvdXRUZXN0cycsIHNlbGYud2ViX3BsYXRmb3JtX3Rlc3RzX2Rlc3QsIHRlc3QpKQorICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICNfbG9nLmluZm8oJ1NraXAgaW1w
b3J0IHRlc3QgOiAnICsgdGVzdCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAg
ICAgICAgICAgX2xvZy5pbmZvKCdJbXBvcnQgdGVzdCA6ICcgKyB0ZXN0KQorICAgICAgICAgICAg
b3B0aW9ucyA9IG9wdHBhcnNlLlZhbHVlcworCisgICAgICAgICAgICBvcHRpb25zLmFsbCA9IEZh
bHNlCisgICAgICAgICAgICBvcHRpb25zLmRlc3RpbmF0aW9uID0gc2VsZi5maWxlc3lzdGVtLmpv
aW4oc2VsZi53ZWJfcGxhdGZvcm1fdGVzdHNfZGVzdCwgdGVzdCkKKyAgICAgICAgICAgIG9wdGlv
bnMub3ZlcndyaXRlID0gVHJ1ZQorCisgICAgICAgICAgICB0ZXN0X2ltcG9ydGVyID0gVGVzdElt
cG9ydGVyKEhvc3QoKSwgdGVzdCwgdGVzdCwgb3B0aW9ucykKKyAgICAgICAgICAgIHRlc3RfaW1w
b3J0ZXIuZG9faW1wb3J0KCkKKworICAgICAgICBvcy5jaGRpcihzZWxmLl93ZWJraXRfcm9vdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235011</attachid>
            <date>2014-07-16 11:33:39 -0700</date>
            <delta_ts>2014-09-16 01:57:16 -0700</delta_ts>
            <desc>Handlingof resources path</desc>
            <filename>bug-134764-20140716203321.patch</filename>
            <type>text/plain</type>
            <size>16721</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNzk5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWQ4MTIyY2IxM2M2YTUyOTY4ZWEwZTA5MjIxZWQ0NDQ5
YzBjMzE0My4uZGIzNzA5ZDllNGQyNTExNTEwZWUxNDY4Mzc2NDMxMjBjYWE1OWI3ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
IEBACisyMDE0LTA3LTE0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgdXBkYXRpbmcgd2ViIHBsYXRmb3JtIHRlc3QgaW1wb3J0ZXIgdG8gc2V0
IHRoZSByZXNvdXJjZXMgZm9sZGVyIHRvIGFuIGludGVybmFsIG9uZQorCisgICAgICAgIHVwZGF0
aW5nIHczYyB0ZXN0IGltcG9ydGVyICB0byB1c2UgdGhlIHRlc3QgY29udmVydGVyIHBhcmFtZXRl
ciB0aGF0IHNwZWNpZmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIHJlc291cmNlcyBmb2xkZXIgdGhh
dCBjb250YWlucyB0ZXN0aGFybmVzcy5ocyBhbmQgdGVzdGhhcm5lc3NyZXBvcnQuanMKKworICAg
ICAgICBhdXRvbWF0ZSBXM0MgdGVzdCBzdWl0ZSBjbG9uaW5nIGFuZCBpbXBvcnRpbmcgaW50byBX
ZWJLaXQgdHJ1bmsKKworICAgICAgICBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVyZSBzaG91bGQg
YXV0b21hdGUgdGhlIHByb2Nlc3Mgb2YgY2xvbmluZyBXM0MgdGVzdCBzdWl0ZSBhbmQgaW1wb3J0
aW5nIHRlc3RzIGZyb20gaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNDc2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvZmFjdG9yeS5weTogQWRkZWQuCisgICAg
ICAgICh3M2NfY3JlYXRlX2FyZ3VtZW50X3BhcnNlcik6IHczYyB0ZXN0IHN1aXRlIGFyZ3VtZW50
IHBhcnNlci4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5
OgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuX19pbml0X18p
OiBVcGRhdGVkIGRlZmF1bHQgaW1wb3J0IGZvbGRlciB0byBpbXBvcnRlZC93M2MgYW5kIGFkZGVk
IHBhcmFtZXRlciB0byBzcGVjaWZpYyB0aGUgbG9jYXRpb24gb2YgcmVzb3VyY2VzIGZvbGRlciwg
ZGVmYXVsdCB2YWx1ZSBiZWluZyByZXNvdXJjZXMvCisgICAgICAgIChUZXN0SW1wb3J0ZXIuaW1w
b3J0X3Rlc3RzKTogTWFrZSB1c2Ugb2YgdGhlIHJlc291cmNlcyBmb2xkZXIgcGFyYW1ldGVyCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2Mvd2ViX3BsYXRmb3JtX3Rlc3RfaW1wb3J0ZXIu
cHk6IEFkZGVkLgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIpOiBSZXNwb25zaWJs
ZSBvZiBjbG9uaW5nIFczQyB0ZXN0IHN1aXRlIGFuZCBjb252ZXJ0aW5nIHRoZW0KKyAgICAgICAg
KFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLl9faW5pdF9fKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
VGVzdEltcG9ydGVyLmNyZWF0ZV90ZXN0X3N1aXRlX2xpc3QpOgorICAgICAgICAoV2ViUGxhdGZv
cm1UZXN0SW1wb3J0ZXIudGVzdF9zdWl0ZXMpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0SW1w
b3J0ZXIudGVzdHMpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIuaW1wb3J0X3Rl
c3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLndwdHNoYSk6CisgICAgICAg
IChXZWJQbGF0Zm9ybVRlc3RJbXBvcnRlci5jaGVja291dF90ZXN0cyk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVRlc3RJbXBvcnRlci5kdW1wX3Rlc3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVz
dEltcG9ydGVyLmltcG9ydF9maWxlcyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RJbXBvcnRl
ci5pbXBvcnRfZGlycyk6CisKIDIwMTQtMDctMDMgIFNoaXZha3VtYXIgSk0gIDxzaGl2YS5qbUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEVuaGFuY2UgdGhlIE1pbmlicm93c2Vy
IHRvIHNob3cgdGV4dCBzZWFyY2ggY291bnQgYW5kIGNsb3NlIHNlYXJjaCBiYXIuCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9mYWN0b3J5LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS93M2MvZmFjdG9yeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWM5ZjY4ZmJmYzhmZThmNjZl
ZDA3NTg5NGI5NTE5ZDRjNmU4OThlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93M2MvZmFjdG9yeS5weQpAQCAtMCwwICsxLDYxIEBACisjIENvcHlyaWdodCAoYykg
MjAxNCwgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5P
TiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJG
YWN0b3J5IG1ldGhvZCB0byByZXRyaWV2ZSB0aGUgYXBwcm9wcmlhdGUgVzNDIGNvbnRleHQuIiIi
CisKK2ltcG9ydCBhcmdwYXJzZQorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBI
b3N0Citmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHBsYXRmb3JtX29wdGlvbnMKKworCitkZWYg
dzNjX2NyZWF0ZV9hcmd1bWVudF9wYXJzZXIoaG9zdCwgc2NyaXB0X25hbWUpOgorICAgIHBhcnNl
ciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKworICAgICMgQWRkIHBsYXRmb3JtIGFyZ3Vt
ZW50cworICAgIGZvciBvcHQgaW4gcGxhdGZvcm1fb3B0aW9ucyh1c2VfZ2xvYnM9RmFsc2UpOgor
ICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KG9wdC5nZXRfb3B0X3N0cmluZygpLCBhY3Rpb249
J3N0b3JlX2NvbnN0JywgZGVzdD0ncGxhdGZvcm0nLCBjb25zdD1vcHQuY29uc3QpCisKKyAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCctLWZ1bGwtaGVscCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRl
ZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9J0Rpc3BsYXkgJyArIHNjcmlwdF9uYW1lICsgJyBh
bmQgc3Vic2NyaXB0IGhlbHAgbWVzc2FnZXMuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCct
LXdlYmtpdC10ZXN0LXJ1bm5lcicsICctMicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9
RmFsc2UsCisgICAgICAgIGhlbHA9J1NldCBXZWJLaXQgYXJjaGl0ZWN0dXJlIFdlYktpdDEgb3Ig
V2ViS2l0MiAoZGVmYXVsdCBXSzEpLicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXczYy1x
JywgJy0tdzNjLXF1aWV0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAg
ICAgICAgaGVscD0nUHJpbnQgbWluaW1hbCBsb2cuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KCctdzNjLXYnLCAnLS13M2MtdmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9
RmFsc2UsCisgICAgICAgIGhlbHA9J1ByaW50IGRldGFpbCBhbmQgYWN0aXZhdGUgbG9nIG9mIHNj
cmlwdCBjYWxsLicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXczYy1sJywgJy0tdzNjLWxp
c3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICBoZWxwPSdM
aXN0IGF2YWlsYWJsZSB0ZXN0IGdyb3VwcyBpbnRvIHdlYi1wbGF0Zm9ybS10ZXN0IHJlcG9zaXRv
cnkuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdzNjLXQnLCAnLS13M2MtdGVzdCcsIGRl
c3Q9J3Rlc3RzJywgZGVmYXVsdD0nJywKKyAgICAgICAgaGVscD0nSW1wb3J0IGFuZCBydW4gYSBz
cGVjaWZpYyBsaXN0IG9mIHRlc3RzICgtdCB0ZXN0MTp0ZXN0MjouLi4pLicpCisgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgnLXczYy1yJywgJy0tdzNjLXJlZnJlc2gnLCBhY3Rpb249J3N0b3JlX3Ry
dWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICBoZWxwPSdSZWZyZXNoIHRlc3Qgd2l0aCBhIGdp
dCBwdWxsLCBjaGVja291dCB3aXRoIHRoZSBnaXZlbiBzaGEgYW5kIHJlZG8gdGVzdCBpbXBvcnQu
IFRoaXMgb3B0aW9uIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgLXczYy13cHQtc2hhIG9wdGlvbi4n
KQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy13M2MtZCcsICctLXdlYi1wbGF0Zm9ybS10ZXN0
cy1kaXInLCBkZXN0PSdyZWZ0ZXN0ZGlyJywgZGVmYXVsdD0nd2ViLXBsYXRmb3JtLXRlc3RzJywK
KyAgICAgICAgaGVscD0nQ2xvbmUgdGhlIHdlYi1wbGF0Zm9ybS10ZXN0IHJlcG9zaXRvcnkgaW50
byBhIHNwZWNpZmljIGRpcmVjdG9yeSByZWxhdGl2ZSB0byBMYXlvdXRUZXN0cy9pbXBvcnRlZC4g
QnkgZGVmYXVsdCwgaW1wb3J0cyBpbnRvIHdlYi1wbGF0Zm9ybS10ZXN0cy4nKQorICAgIHBhcnNl
ci5hZGRfYXJndW1lbnQoJy13M2Mtd3B0LXNoYScsICctLXdlYi1wbGF0Zm9ybS10ZXN0cy1zaGEn
LCBkZXN0PSd3cHRzaGEnLCBkZWZhdWx0PSdtYXN0ZXInLAorICAgICAgICBoZWxwPSdDbG9uZSBh
IHNwZWNpZmljIHdlYi1wbGF0Zm9ybS10ZXN0IHJldmlzaW9uLiBCeSBkZWZhdWx0LCB1c2UgZmls
ZSBjb21taXQgaW4gTGF5b3V0VGVzdHMvaW1wb3J0L3czYy4nKQorICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoJy13M2MtaW1wb3J0LWRpcicsIGRlc3Q9J2ltcG9ydGRpcicsIGRlZmF1bHQ9aG9zdC5m
aWxlc3lzdGVtLmpvaW4oJ2ltcG9ydGVkJywgJ3czYycsICd3cHQnKSwKKyAgICAgICAgaGVscD0n
RGlyZWN0b3J5IHdoZXJlIFczQyB0ZXN0IHN1aXRlcyBhcmUgaW1wb3J0ZWQuIEJ5IGRlZmF1bHQs
IHRlc3RzIGFyZSBpbXBvcnRlZCBpbiBpbXBvcnRlZC93M2Mvd3B0IHJlbGF0aXZlIHRvIExheW91
dFRlc3RzLicpCisgICAgcmV0dXJuIHBhcnNlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfaW1wb3J0ZXIucHkKaW5kZXggZjgwMTQ1OWU4ZWU1NjRmMzBlOTk3MTFlMzYxMDk5YTA4
NjNlNTlkNS4uZTliMmI1ZTIxOWM4OTNhN2Q4NGFhZjYwMTNkNzllY2RmZDI5MjI1ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CkBAIC0xMzQsOCArMTM0
LDEwIEBAIGRlZiBwYXJzZV9hcmdzKCk6CiAgICAgICAgIGhlbHA9J0ZsYWcgdG8gcHJldmVudCBk
dXBsaWNhdGUgdGVzdCBmaWxlcyBmcm9tIG92ZXJ3cml0aW5nIGV4aXN0aW5nIHRlc3RzLiBCeSBk
ZWZhdWx0LCB0aGV5IHdpbGwgYmUgb3ZlcndyaXR0ZW4nKQogICAgIHBhcnNlci5hZGRfb3B0aW9u
KCctYScsICctLWFsbCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAg
ICAgIGhlbHA9J0ltcG9ydCBhbGwgdGVzdHMgaW5jbHVkaW5nIHJlZnRlc3RzLCBKUyB0ZXN0cywg
YW5kIG1hbnVhbC9waXhlbCB0ZXN0cy4gQnkgZGVmYXVsdCwgb25seSByZWZ0ZXN0cyBhbmQgSlMg
dGVzdHMgYXJlIGltcG9ydGVkJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWQnLCAnLS1kZXN0
LWRpcicsIGRlc3Q9J2Rlc3RpbmF0aW9uJywgZGVmYXVsdD0ndzNjJywKLSAgICAgICAgaGVscD0n
SW1wb3J0IGludG8gYSBzcGVjaWZpZWQgZGlyZWN0b3J5IHJlbGF0aXZlIHRvIHRoZSBMYXlvdXRU
ZXN0cyByb290LiBCeSBkZWZhdWx0LCBpbXBvcnRzIGludG8gdzNjJykKKyAgICBwYXJzZXIuYWRk
X29wdGlvbignLWQnLCAnLS1kZXN0LWRpcicsIGRlc3Q9J2Rlc3RpbmF0aW9uJywgZGVmYXVsdD0n
aW1wb3J0ZWQvdzNjJywKKyAgICAgICAgaGVscD0nSW1wb3J0IGludG8gYSBzcGVjaWZpZWQgZGly
ZWN0b3J5IHJlbGF0aXZlIHRvIHRoZSBMYXlvdXRUZXN0cyByb290LiBCeSBkZWZhdWx0LCBpbXBv
cnRzIGludG8gaW1wb3J0ZWQvdzNjJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLWQnLCAnLS1y
ZXNvdXJjZXMtcGF0aCcsIGRlc3Q9J3Jlc291cmNlc19wYXRoJywgZGVmYXVsdD0ncmVzb3VyY2Vz
JywKKyAgICAgICAgaGVscD0nU2V0cyB0aGUgcGF0aCB0byB0aGUgcmVzb3VyY2VzIGZvbGRlciB0
aGF0IGNvbnRhaW5zIHRlc3RoYXJuZXNzLmpzIGFuZCB0ZXN0aGFybmVzc3JlcG9ydC5qcyBmaWxl
cywgcmVsYXRpdmUgdG8gdGhlIExheW91dFRlc3RzIHJvb3QuIERlZmF1bHQgaXMgInJlc291cmNl
cyInKQogCiAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKICAgICBpZiBs
ZW4oYXJncykgbm90IGluICgxLCAyKToKQEAgLTE1Nyw2ICsxNTksNyBAQCBjbGFzcyBUZXN0SW1w
b3J0ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5yZXBvX2RpciA9IHJlcG9fZGlyCiAKICAgICAg
ICAgc2VsZi5kZXN0aW5hdGlvbl9kaXJlY3RvcnkgPSB3ZWJraXRfZmluZGVyLnBhdGhfZnJvbV93
ZWJraXRfYmFzZSgiTGF5b3V0VGVzdHMiLCBvcHRpb25zLmRlc3RpbmF0aW9uKQorICAgICAgICBz
ZWxmLnJlc291cmNlc19wYXRoID0gd2Via2l0X2ZpbmRlci5wYXRoX2Zyb21fd2Via2l0X2Jhc2Uo
IkxheW91dFRlc3RzIiwgb3B0aW9ucy5yZXNvdXJjZXNfcGF0aCkKIAogICAgICAgICBzZWxmLmNo
YW5nZXNldCA9IENIQU5HRVNFVF9OT1RfQVZBSUxBQkxFCiAKQEAgLTMxMyw3ICszMTYsNyBAQCBj
bGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBtaW1ldHlwZSA9IG1p
bWV0eXBlcy5ndWVzc190eXBlKG9yaWdfZmlsZXBhdGgpCiAgICAgICAgICAgICAgICAgaWYgJ2h0
bWwnIGluIHN0cihtaW1ldHlwZVswXSkgb3IgJ3htbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSAgb3Ig
J2NzcycgaW4gc3RyKG1pbWV0eXBlWzBdKToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkX2ZpbGUgPSBjb252ZXJ0X2Zvcl93ZWJraXQo
bmV3X3BhdGgsIGZpbGVuYW1lPW9yaWdfZmlsZXBhdGgpCisgICAgICAgICAgICAgICAgICAgICAg
ICBjb252ZXJ0ZWRfZmlsZSA9IGNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWU9
b3JpZ19maWxlcGF0aCwgcmVzb3VyY2VzX3BhdGg9c2VsZi5yZXNvdXJjZXNfcGF0aCkKICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgICAgICAgICAgX2xvZy53YXJu
KCdGYWlsZWQgY29udmVydGluZyAlcycsIG9yaWdfZmlsZXBhdGgpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWlsZWRfY29udmVyc2lvbl9maWxlcy5hcHBlbmQob3JpZ19maWxlcGF0aCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dlYl9wbGF0Zm9ybV90ZXN0X2lt
cG9ydGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mvd2ViX3BsYXRmb3JtX3Rlc3Rf
aW1wb3J0ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI5NTdjNWJhNWVlZmY4N2UwNDgwNGQ0ZDBiNjkwZmI1
MmU1MGYxOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dl
Yl9wbGF0Zm9ybV90ZXN0X2ltcG9ydGVyLnB5CkBAIC0wLDAgKzEsMTY5IEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIENhbm9uIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMg
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiCisgVGhpcyBzY3JpcHQgaW1wb3J0cyBXM0Mg
dGVzdHMgaW50byBXZWJraXQgZnJvbSB0aGUgb2ZmaWNpYWwgVzNDIHJlcG9zaXRvcnkgKGh0dHBz
Oi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCkuCisgVGhlIFczQyB0ZXN0
IHN1aXRlIHJlcG9zaXRvcnkgaXMgY2xvbmVkIGFuZCB0ZXN0cyBhcmUgdGhlbiBpbXBvcnRlZCB1
c2luZyB0ZXN0X2ltcG9ydC5weS4KKyIiIgorCitpbXBvcnQgZ2xvYgoraW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKKwor
ZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAorZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi53ZWJraXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKK2Zyb20gd2Via2l0cHkudzNjLnRl
c3RfaW1wb3J0ZXIgaW1wb3J0IFRlc3RJbXBvcnRlcgorCitfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCisKKworY2xhc3MgV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIob2JqZWN0KToK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBvcHRpb25zKToKKyAgICAgICAgc2VsZi5w
b3J0ID0gcG9ydAorICAgICAgICBzZWxmLmhvc3QgPSBwb3J0Lmhvc3QKKyAgICAgICAgc2VsZi5v
cHRpb25zID0gb3B0aW9ucworICAgICAgICBzZWxmLnBsYXRmb3JtID0gb3B0aW9ucy5wbGF0Zm9y
bQorCisgICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IHNlbGYuaG9zdC5maWxlc3lzdGVtCisKKyAg
ICAgICAgd2Via2l0X2ZpbmRlciA9IFdlYktpdEZpbmRlcihzZWxmLmZpbGVzeXN0ZW0pCisgICAg
ICAgIHNlbGYuX3dlYmtpdF9yb290ID0gd2Via2l0X2ZpbmRlci53ZWJraXRfYmFzZSgpCisKKyAg
ICAgICAgc2VsZi53ZWJfcGxhdGZvcm1fdGVzdHNfZGVzdCA9IG9wdGlvbnMuX19kaWN0X19bJ2lt
cG9ydGRpciddCisgICAgICAgIHNlbGYud2ViX3BsYXRmb3JtX3Rlc3RzX2RpciA9IHNlbGYuZmls
ZXN5c3RlbS5qb2luKCdXZWJLaXRCdWlsZCcsIG9wdGlvbnMuX19kaWN0X19bJ3JlZnRlc3RkaXIn
XSkKKyAgICAgICAgc2VsZi50ZXN0X3N1aXRlX2xpc3QgPSBbXQorICAgICAgICAjIEV4Y2x1ZGlu
ZyBzb21lIGRpcmVjdG9yaWVzCisgICAgICAgIHNlbGYuZXhjbHVkZV9kaXIgPSBbJ2NvbmZvcm1h
bmNlLWNoZWNrZXJzJywgJ29sZC10ZXN0cyddCisgICAgICAgICMgSW5jbHVkaW5nIHNvbWUgdGVz
dCBpbmZyYXN0cnVjdHVyZSBkaXJlY3RvcmllcworICAgICAgICBzZWxmLmFsd2F5c19pbXBvcnRf
ZGlycyA9ICgnY29tbW9uJywgJ2ZvbnRzJywgJ2ltYWdlcycsICdtZWRpYScsICdyZXNvdXJjZXMn
LCAndG9vbHMnKQorICAgICAgICBzZWxmLmFsd2F5c19pbXBvcnRfZmlsZXMgPSBbJ2NvbmZpZy5k
ZWZhdWx0Lmpzb24nLCAnc2VydmUucHknXQorCisgICAgICAgIHNlbGYuY3JlYXRlX3Rlc3Rfc3Vp
dGVfbGlzdCgpCisKKyAgICBkZWYgY3JlYXRlX3Rlc3Rfc3VpdGVfbGlzdChzZWxmKToKKworICAg
ICAgICBzZWxmLmNoZWNrb3V0X3Rlc3RzKCkKKworICAgICAgICBpZiBzZWxmLm9wdGlvbnMuX19k
aWN0X19bJ3czY19saXN0J10gaXMgVHJ1ZToKKyAgICAgICAgICAgIHNlbGYuZHVtcF90ZXN0cygp
CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBzZWxmLm9wdGlvbnMuX19kaWN0X19b
J3Rlc3RzJ106CisgICAgICAgICAgICBzZWxmLnRlc3Rfc3VpdGVfbGlzdCA9IHJlLnNwbGl0KCc6
Jywgc2VsZi5vcHRpb25zLl9fZGljdF9fWyd0ZXN0cyddKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgZW50cmllcyA9IGdsb2IuZ2xvYihzZWxmLndlYl9wbGF0Zm9ybV90ZXN0c19kaXIgKyAn
LyonKQorICAgICAgICAgICAgZGlycyA9IGZpbHRlcihsYW1iZGEgZjogb3MucGF0aC5pc2Rpcihm
KSwgZW50cmllcykKKyAgICAgICAgICAgIGZvciBkIGluIHNvcnRlZChkaXJzKToKKyAgICAgICAg
ICAgICAgICB0ZXN0cyA9IG9zLnBhdGguYmFzZW5hbWUoZCkKKyAgICAgICAgICAgICAgICBpZiB0
ZXN0cyBub3QgaW4gc2VsZi5leGNsdWRlX2RpciBhbmQgdGVzdHMgbm90IGluIHNlbGYuYWx3YXlz
X2ltcG9ydF9kaXJzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3Rfc3VpdGVfbGlzdC5h
cHBlbmQodGVzdHMpCisKKyAgICAgICAgc2VsZi50ZXN0X3N1aXRlX2xpc3Quc29ydCgpCisKKyAg
ICBkZWYgdGVzdF9zdWl0ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnRlc3Rfc3VpdGVf
bGlzdAorCisgICAgZGVmIHRlc3RzKHNlbGYpOgorICAgICAgICBwYXRocyA9IFtdCisgICAgICAg
IGZvciB0ZXN0X3N1aXRlIGluIHNlbGYudGVzdF9zdWl0ZV9saXN0OgorICAgICAgICAgICAgcGF0
aHMgKz0gW3NlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYud2ViX3BsYXRmb3JtX3Rlc3RzX2Rlc3Qs
IHRlc3Rfc3VpdGUpXQorICAgICAgICByZXR1cm4gc2VsZi5wb3J0LnRlc3RzKHBhdGhzKQorCisg
ICAgZGVmIGltcG9ydF90ZXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5pbXBvcnRfZGlycyhzZWxm
LmFsd2F5c19pbXBvcnRfZGlycykKKyAgICAgICAgc2VsZi5pbXBvcnRfZmlsZXMoc2VsZi5hbHdh
eXNfaW1wb3J0X2ZpbGVzKQorICAgICAgICAjIEltcG9ydCBhbmQgYWRhcHQgdGVzdHMgdG8gZW5h
YmxlIGV4ZWN1dGlvbiB3aXRoIHRoZSBXZWJLaXQgdGVzdCBmcmFtZXdvcmsKKyAgICAgICAgc2Vs
Zi5pbXBvcnRfZGlycyhzZWxmLnRlc3Rfc3VpdGVfbGlzdCkKKworICAgIGRlZiB3cHRzaGEoc2Vs
Zik6CisgICAgICAgIGlmIG5vdCBzZWxmLm9wdGlvbnMuX19kaWN0X19bJ3dwdHNoYSddOgorICAg
ICAgICAgICAgdmVyc2lvbl9maWxlID0gc2VsZi5maWxlc3lzdGVtLmpvaW4oJ0xheW91dFRlc3Rz
JywgJ3BsYXRmb3JtJywgc2VsZi5wbGF0Zm9ybSwgJ2ltcG9ydGVkJywgJ3czYycsICdXUFRlc3Rz
VmVyc2lvbicpCisgICAgICAgICAgICB3aXRoIG9wZW4odmVyc2lvbl9maWxlLCAncicpIGFzIGY6
CisgICAgICAgICAgICAgICAgc2VsZi5vcHRpb25zLl9fZGljdF9fWyd3cHRzaGEnXSA9IGYucmVh
ZGxpbmUoKS5yc3RyaXAoKQorICAgICAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICByZXR1
cm4gc2VsZi5vcHRpb25zLl9fZGljdF9fWyd3cHRzaGEnXQorCisgICAgZGVmIGNoZWNrb3V0X3Rl
c3RzKHNlbGYpOgorICAgICAgICAiIiJHZXQgVzNDIHJlZmVyZW5jZSB0ZXN0cyBmcm9tIHRoZSBv
ZmZpY2lhbCBnaXRodWIgcmVwb3NpdG9yeS4iIiIKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhp
c3RzKHNlbGYud2ViX3BsYXRmb3JtX3Rlc3RzX2Rpcik6CisgICAgICAgICAgICBfbG9nLmRlYnVn
KCdDbG9uaW5nIHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5Li4uJykKKyAgICAgICAgICAg
IEV4ZWN1dGl2ZSgpLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2Nsb25lJywgJy0tcmVjdXJzaXZlJywg
J2h0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud2ViX3BsYXRmb3JtX3Rlc3RzX2Rp
cl0sIHJldHVybl9zdGRlcnI9RmFsc2UpCisgICAgICAgIGVsaWYgc2VsZi5vcHRpb25zLl9fZGlj
dF9fWyd3M2NfcmVmcmVzaCddIGlzIFRydWU6CisgICAgICAgICAgICBfbG9nLmRlYnVnKCdQdWxs
aW5nIHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5Li4uJykKKyAgICAgICAgICAgIEV4ZWN1
dGl2ZSgpLnJ1bl9jb21tYW5kKFsnZ2l0JywgJy1DJywgc2VsZi53ZWJfcGxhdGZvcm1fdGVzdHNf
ZGlyLCAnY2hlY2tvdXQnLCAnbWFzdGVyJ10sIHJldHVybl9zdGRlcnI9RmFsc2UpCisgICAgICAg
ICAgICBFeGVjdXRpdmUoKS5ydW5fY29tbWFuZChbJ2dpdCcsICctQycsIHNlbGYud2ViX3BsYXRm
b3JtX3Rlc3RzX2RpciwgJ3B1bGwnXSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBfbG9nLmRlYnVnKCdDaGVja2luZyBvdXQg
YnJhbmNoICcgKyBzZWxmLndwdHNoYSgpKQorICAgICAgICBFeGVjdXRpdmUoKS5ydW5fY29tbWFu
ZChbJ2dpdCcsICctQycsIHNlbGYud2ViX3BsYXRmb3JtX3Rlc3RzX2RpciwgJ2NoZWNrb3V0Jywg
c2VsZi53cHRzaGEoKV0sIHJldHVybl9zdGRlcnI9RmFsc2UpCisKKyAgICBkZWYgZHVtcF90ZXN0
cyhzZWxmKToKKyAgICAgICAgX2xvZy5pbmZvKCdXM0MgVGVzdHM6JykKKyAgICAgICAgZW50cmll
cyA9IGdsb2IuZ2xvYihzZWxmLndlYl9wbGF0Zm9ybV90ZXN0c19kaXIgKyAnLyonKQorICAgICAg
ICBkaXJzID0gZmlsdGVyKGxhbWJkYSBmOiBvcy5wYXRoLmlzZGlyKGYpLCBlbnRyaWVzKQorICAg
ICAgICBmb3IgZCBpbiBzb3J0ZWQoZGlycyk6CisgICAgICAgICAgICB0ZXN0cyA9IG9zLnBhdGgu
YmFzZW5hbWUoZCkKKyAgICAgICAgICAgIGlmIHRlc3RzIG5vdCBpbiBzZWxmLmV4Y2x1ZGVfZGly
IGFuZCB0ZXN0cyBub3QgaW4gc2VsZi5hbHdheXNfaW1wb3J0X2RpcnM6CisgICAgICAgICAgICAg
ICAgX2xvZy5pbmZvKCcgICcgKyB0ZXN0cykKKworICAgIGRlZiBpbXBvcnRfZmlsZXMoc2VsZiwg
ZmlsZXMpOgorICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgIGYgPSBzZWxmLmZp
bGVzeXN0ZW0ubm9ybXBhdGgoZikKKyAgICAgICAgICAgIHNlbGYuZmlsZXN5c3RlbS5jb3B5Zmls
ZShzZWxmLmZpbGVzeXN0ZW0uam9pbihzZWxmLndlYl9wbGF0Zm9ybV90ZXN0c19kaXIsIGYpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZXN5c3RlbS5qb2lu
KHNlbGYuX3dlYmtpdF9yb290LCAnTGF5b3V0VGVzdHMnLCBzZWxmLndlYl9wbGF0Zm9ybV90ZXN0
c19kZXN0LCBmKSkKKworICAgIGRlZiBpbXBvcnRfZGlycyhzZWxmLCB0ZXN0X3N1aXRlX2xpc3Qp
OgorICAgICAgICAjX2xvZy5pbmZvKCdJbXBvcnQgdGVzdHMuLi4nKQorCisgICAgICAgIG9zLmNo
ZGlyKHNlbGYud2ViX3BsYXRmb3JtX3Rlc3RzX2RpcikKKworICAgICAgICBmb3IgdGVzdCBpbiB0
ZXN0X3N1aXRlX2xpc3Q6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmZpbGVz
eXN0ZW0uam9pbihzZWxmLl93ZWJraXRfcm9vdCwgJ0xheW91dFRlc3RzJywgc2VsZi53ZWJfcGxh
dGZvcm1fdGVzdHNfZGVzdCwgdGVzdCkpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYub3B0aW9u
cy5fX2RpY3RfX1sndzNjX3JlZnJlc2gnXSBpcyBUcnVlOgorICAgICAgICAgICAgICAgICAgICBz
aHV0aWwucm10cmVlKHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9yb290LCAnTGF5
b3V0VGVzdHMnLCBzZWxmLndlYl9wbGF0Zm9ybV90ZXN0c19kZXN0LCB0ZXN0KSkKKyAgICAgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjX2xvZy5pbmZvKCdTa2lwIGltcG9y
dCB0ZXN0IDogJyArIHRlc3QpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgIF9sb2cuaW5mbygnSW1wb3J0IHRlc3QgOiAnICsgdGVzdCkKKyAgICAgICAgICAgIG9w
dGlvbnMgPSBvcHRwYXJzZS5WYWx1ZXMKKworICAgICAgICAgICAgb3B0aW9ucy5hbGwgPSBGYWxz
ZQorICAgICAgICAgICAgb3B0aW9ucy5kZXN0aW5hdGlvbiA9IHNlbGYuZmlsZXN5c3RlbS5qb2lu
KHNlbGYud2ViX3BsYXRmb3JtX3Rlc3RzX2Rlc3QsIHRlc3QpCisgICAgICAgICAgICBvcHRpb25z
LnJlc291cmNlc19wYXRoID0gc2VsZi5maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X3Jvb3Qs
ICdMYXlvdXRUZXN0cycsIHNlbGYud2ViX3BsYXRmb3JtX3Rlc3RzX2Rlc3QsICJyZXNvdXJjZXMi
KQorICAgICAgICAgICAgb3B0aW9ucy5vdmVyd3JpdGUgPSBUcnVlCisKKyAgICAgICAgICAgIHRl
c3RfaW1wb3J0ZXIgPSBUZXN0SW1wb3J0ZXIoSG9zdCgpLCB0ZXN0LCB0ZXN0LCBvcHRpb25zKQor
ICAgICAgICAgICAgdGVzdF9pbXBvcnRlci5kb19pbXBvcnQoKQorCisgICAgICAgIG9zLmNoZGly
KHNlbGYuX3dlYmtpdF9yb290KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238161</attachid>
            <date>2014-09-16 01:57:21 -0700</date>
            <delta_ts>2014-09-16 05:31:30 -0700</delta_ts>
            <desc>Added file version and skipping .git dir import</desc>
            <filename>bug-134764-20140916105717.patch</filename>
            <type>text/plain</type>
            <size>13476</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNjE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjAxYjEwMjM2OGU4YzVmZGE3NWZiZjI1NjQwOWYxYzJj
NjVlZmFiNy4uODI0YzE2YzI2MjY1MDU3YTMwNTRlNmM5ZGRhMmM0NDcwYThhYTVjMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDE0LTA5LTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGF1dG9tYXRl
IHRoZSBwcm9jZXNzIG9mIGNsb25pbmcgVzNDIHRlc3Qgc3VpdGUgYW5kIGltcG9ydGluZyB0ZXN0
cyBmcm9tIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQ3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL2ZhY3RvcnkucHk6IEFkZGVkICh3M2MgdGVzdCBzdWl0
ZSBhcmd1bWVudCBwYXJzZXIpLgorICAgICAgICAodzNjX2NyZWF0ZV9hcmd1bWVudF9wYXJzZXIp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3dlYl9wbGF0Zm9ybV90ZXN0X2ltcG9y
dGVyLnB5OiBBZGRlZCAoUmVzcG9uc2libGUgb2YgY2xvbmluZyBXM0MgdGVzdCBzdWl0ZSBhbmQg
Y29udmVydGluZyB0aGVtKS4KKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLl9faW5pdF9fKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtVGVzdEltcG9ydGVyLl9jcmVhdGVfdGVzdF9zdWl0ZV9saXN0KToKKyAgICAgICAgKFdl
YlBsYXRmb3JtVGVzdEltcG9ydGVyLmFsd2F5c19pbXBvcnRlZF9maWxlcyk6CisgICAgICAgIChX
ZWJQbGF0Zm9ybVRlc3RJbXBvcnRlci5hbHdheXNfaW1wb3J0ZWRfZGlyZWN0b3JpZXMpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIudGVzdF9zdWl0ZXMpOgorICAgICAgICAoV2Vi
UGxhdGZvcm1UZXN0SW1wb3J0ZXIuaW1wb3J0X3Rlc3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
VGVzdEltcG9ydGVyLndwdHNoYSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RJbXBvcnRlci5n
aXRfY2xvbmVfYXJndW1lbnRzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLmdp
dF9wdWxsX2FyZ3VtZW50cyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RJbXBvcnRlci5naXRf
Y2hlY2tvdXRfYXJndW1lbnRzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLmNo
ZWNrb3V0X3Rlc3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLmR1bXBfdGVz
dF9saXN0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLl9pbXBvcnRfZmlsZXMp
OgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIuX2ltcG9ydF9kaXJzKToKKwogMjAx
NC0wOS0xMiAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogcmVtaW5kIGFib3V0IHJlYmFzZWxpbmluZyBnZW5lcmF0b3IgdGVz
dCByZXN1bHRzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9mYWN0b3J5
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvZmFjdG9yeS5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YmM4ZTAzNzg3YWQyMDQxODYwZWYyM2QxNGJhOWRhOTVjOTFlZWU1Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvZmFjdG9yeS5weQpAQCAtMCwwICsxLDU2IEBA
CisjIENvcHlyaWdodCAoYykgMjAxNCwgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisiIiJGYWN0b3J5IG1ldGhvZCB0byByZXRyaWV2ZSB0aGUgYXBwcm9wcmlh
dGUgVzNDIGNvbnRleHQuIiIiCisKK2ltcG9ydCBhcmdwYXJzZQorCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5ob3N0IGltcG9ydCBIb3N0Citmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHBsYXRmb3Jt
X29wdGlvbnMKKworCitkZWYgdzNjX2NyZWF0ZV9hcmd1bWVudF9wYXJzZXIoaG9zdCwgc2NyaXB0
X25hbWUpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKworICAgICMg
QWRkIHBsYXRmb3JtIGFyZ3VtZW50cworICAgIGZvciBvcHQgaW4gcGxhdGZvcm1fb3B0aW9ucyh1
c2VfZ2xvYnM9RmFsc2UpOgorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KG9wdC5nZXRfb3B0
X3N0cmluZygpLCBhY3Rpb249b3B0LmFjdGlvbiwgZGVzdD1vcHQuZGVzdCwgY29uc3Q9Z2V0YXR0
cihvcHQsICdjb25zdCcpLCBoZWxwPWdldGF0dHIob3B0LCAnaGVscCcpKQorICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoJy0td2Via2l0LXRlc3QtcnVubmVyJywgJy0yJywgYWN0aW9uPSdzdG9yZV90
cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgaGVscD0nU2V0IFdlYktpdCBhcmNoaXRlY3R1
cmUgV2ViS2l0MSBvciBXZWJLaXQyIChkZWZhdWx0IFdLMSkuJykKKyAgICAjIFRPRE86IGFkZCAt
LWRlYnVnIG9wdGlvbj8KKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdzNjLXF1aWV0Jywg
YWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgaGVscD0nUHJpbnQg
bWluaW1hbCBsb2cuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXczYy12ZXJib3NlJywg
YWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgaGVscD0nUHJpbnQg
bWF4aW1hbCBsb2cuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdzNjLWwnLCAnLS13M2Mt
bGlzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9
J0xpc3QgYXZhaWxhYmxlIHRlc3QgZ3JvdXBzIGludG8gd2ViLXBsYXRmb3JtLXRlc3QgcmVwb3Np
dG9yeS4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy13M2MtdCcsICctLXczYy10ZXN0c3Vp
dGUnLCBkZXN0PSd0ZXN0cycsIGRlZmF1bHQ9JycsCisgICAgICAgIGhlbHA9J0ltcG9ydCBhbmQg
cnVuIGEgc3BlY2lmaWMgbGlzdCBvZiB0ZXN0IGZvbGRlcnMgKC10IHRlc3RzdWl0ZTE6dGVzdHN1
aXRlMjouLi4pLicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXczYy1zJywgJy0tdzNjLXNr
aXAtcmVmcmVzaCcsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLCBkZWZhdWx0PVRydWUsIGRlc3Q9J3cz
Y19yZWZyZXNoJywKKyAgICAgICAgaGVscD0nRGlzYWJsZSByZWZyZXNoIG9mIHRlc3RzIChnaXQg
cHVsbCArIGltcG9ydCkuIEJ5IGRlZmF1bHQsIHRlc3RzIGFyZSByZWZyZXNoZWQuJykKKyAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCctdzNjLXYnLCAnLS13ZWItcGxhdGZvcm0tdGVzdHMtdmVyc2lv
bicsIGRlc3Q9J3dwdHNoYScsCisgICAgICAgIGhlbHA9J0Nsb25lIGEgc3BlY2lmaWMgd2ViLXBs
YXRmb3JtLXRlc3QgcmV2aXNpb24gdXNpbmcgdGhlIHByb3ZpZGVkIHNoYSB2YWx1ZS4gQnkgZGVm
YXVsdCwgdXNlIGZpbGUgY29tbWl0IGluIExheW91dFRlc3RzL2ltcG9ydC93M2MuJykKKyAgICBy
ZXR1cm4gcGFyc2VyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy93ZWJf
cGxhdGZvcm1fdGVzdF9pbXBvcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dl
Yl9wbGF0Zm9ybV90ZXN0X2ltcG9ydGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZTg2YTE0MzMwNWVhNWYz
OWIyN2I1ODI4YjNjM2U4MmRkYTVhODQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy93ZWJfcGxhdGZvcm1fdGVzdF9pbXBvcnRlci5weQpAQCAtMCwwICsxLDE2
MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCBDYW5v
biBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIgorIFRoaXMgc2Ny
aXB0IGltcG9ydHMgVzNDIHRlc3RzIGludG8gV2Via2l0IGZyb20gdGhlIG9mZmljaWFsIFczQyBy
ZXBvc2l0b3J5IChodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQp
LgorIFRoZSBXM0MgdGVzdCBzdWl0ZSByZXBvc2l0b3J5IGlzIGNsb25lZCBhbmQgdGVzdHMgYXJl
IHRoZW4gaW1wb3J0ZWQgdXNpbmcgdGVzdF9pbXBvcnQucHkuCisiIiIKKworaW1wb3J0IGxvZ2dp
bmcKK2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0IHJlCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhv
c3QgaW1wb3J0IEhvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1w
b3J0IEV4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS53M2MudGVzdF9pbXBvcnRlciBpbXBvcnQgVGVz
dEltcG9ydGVyCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworCitjbGFz
cyBXZWJQbGF0Zm9ybVRlc3RJbXBvcnRlcihvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBvcnQsIG9wdGlvbnMpOgorICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAorICAgICAgICBz
ZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gcG9ydC5o
b3N0LmZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5fdGVzdF9zdWl0ZXMgPSBbXQorCisgICAgICAg
ICMgRXhjbHVkaW5nIHNvbWUgZGlyZWN0b3JpZXMKKyAgICAgICAgc2VsZi5fZXhjbHVkZV9kaXIg
PSBbJ2NvbmZvcm1hbmNlLWNoZWNrZXJzJywgJ29sZC10ZXN0cycsICcuZ2l0J10KKyAgICAgICAg
IyBJbmNsdWRpbmcgdGVzdCBpbmZyYXN0cnVjdHVyZSBkaXJlY3RvcmllcyAodXNlIG9mIHRlc3Qg
aW1wb3J0ZXIpCisgICAgICAgIHNlbGYuX2Fsd2F5c19pbXBvcnRfZGlycyA9ICgnY29tbW9uJywg
J2ZvbnRzJywgJ2ltYWdlcycsICdtZWRpYScsICdyZXNvdXJjZXMnLCAndG9vbHMnKQorICAgICAg
ICAjIEluY2x1ZGluZyB0ZXN0IGluZnJhc3RydWN0dXJlIGZpbGVzIChubyB1c2Ugb2YgdGVzdCBp
bXBvcnRlciwgZGlyZWN0IGNvcHkpCisgICAgICAgIHNlbGYuX2Fsd2F5c19pbXBvcnRfZmlsZXMg
PSBbJ2NvbmZpZy5kZWZhdWx0Lmpzb24nLCAnc2VydmUucHknXQorCisgICAgICAgIHNlbGYuaW1w
b3J0ZWRfdGVzdHNfZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHBvcnQudzNjX2Nv
bmZvcm1hbmNlX3Jlc3VsdHNfZGlyZWN0b3J5KCksICJpbXBvcnRlZC10ZXN0cyIpCisgICAgICAg
IHNlbGYudGVzdHNfcmVwb3NpdG9yeV9kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4o
cG9ydC53M2NfY29uZm9ybWFuY2VfcmVzdWx0c19kaXJlY3RvcnkoKSwgIndlYi1wbGF0Zm9ybS10
ZXN0cyIpCisKKyAgICAgICAgc2VsZi5fY3JlYXRlX3Rlc3Rfc3VpdGVfbGlzdCgpCisKKyAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy5fX2RpY3RfX1sndzNjX3ZlcmJvc2UnXSBpcyBGYWxzZToKKyAg
ICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3ZWJraXRweS53M2MudGVzdF9pbXBvcnRlcicp
LnNldExldmVsKGxvZ2dpbmcuV0FSTklORykKKyAgICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCd3ZWJraXRweS53M2MudGVzdF9wYXJzZXInKS5zZXRMZXZlbChsb2dnaW5nLldBUk5JTkcpCisK
KyAgICBkZWYgX2NyZWF0ZV90ZXN0X3N1aXRlX2xpc3Qoc2VsZik6CisgICAgICAgIHNlbGYuY2hl
Y2tvdXRfdGVzdHMoKQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuX19kaWN0X19bJ3Rlc3Rz
J106CisgICAgICAgICAgICBzZWxmLl90ZXN0X3N1aXRlcyA9IHJlLnNwbGl0KCc6Jywgc2VsZi5f
b3B0aW9ucy5fX2RpY3RfX1sndGVzdHMnXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNl
bGYuX3Rlc3Rfc3VpdGVzID0gW2ZpbGVuYW1lIGZvciBmaWxlbmFtZSBpbiBzZWxmLl9maWxlc3lz
dGVtLmxpc3RkaXIoc2VsZi50ZXN0c19yZXBvc2l0b3J5X2RpcmVjdG9yeSkKKyAgICAgICAgICAg
ICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmlzZGlyKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
LnRlc3RzX3JlcG9zaXRvcnlfZGlyZWN0b3J5LCBmaWxlbmFtZSkpCisgICAgICAgICAgICAgICAg
YW5kIGZpbGVuYW1lIG5vdCBpbiBzZWxmLl9leGNsdWRlX2RpciBhbmQgZmlsZW5hbWUgbm90IGlu
IHNlbGYuX2Fsd2F5c19pbXBvcnRfZGlyc10KKyAgICAgICAgc2VsZi5fdGVzdF9zdWl0ZXMuc29y
dCgpCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5fX2RpY3RfX1sndzNjX2xpc3QnXSBpcyBU
cnVlOgorICAgICAgICAgICAgc2VsZi5kdW1wX3Rlc3RfbGlzdCgpCisgICAgICAgICAgICByZXR1
cm4KKworICAgIGRlZiBhbHdheXNfaW1wb3J0ZWRfZmlsZXMoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLl9hbHdheXNfaW1wb3J0X2ZpbGVzCisKKyAgICBkZWYgYWx3YXlzX2ltcG9ydGVkX2Rp
cmVjdG9yaWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYWx3YXlzX2ltcG9ydF9kaXJz
CisKKyAgICBkZWYgdGVzdF9zdWl0ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl90ZXN0
X3N1aXRlcworCisgICAgZGVmIGltcG9ydF90ZXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5faW1w
b3J0X2RpcnMoc2VsZi5fYWx3YXlzX2ltcG9ydF9kaXJzKQorICAgICAgICBzZWxmLl9pbXBvcnRf
ZmlsZXMoc2VsZi5fYWx3YXlzX2ltcG9ydF9maWxlcykKKyAgICAgICAgc2VsZi5faW1wb3J0X2Rp
cnMoc2VsZi5fdGVzdF9zdWl0ZXMpCisKKyAgICBkZWYgd3B0c2hhKHNlbGYpOgorICAgICAgICBp
ZiBub3Qgc2VsZi5fb3B0aW9ucy5fX2RpY3RfX1snd3B0c2hhJ106CisgICAgICAgICAgICB2ZXJz
aW9uX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oJ0xheW91dFRlc3RzJywgJ3BsYXRmb3Jt
Jywgc2VsZi5fcG9ydC5wb3J0X25hbWUsICdpbXBvcnRlZCcsICd3M2MnLCAnV1BUZXN0c1ZlcnNp
b24nKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3Blbih2ZXJzaW9u
X2ZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5fX2Rp
Y3RfX1snd3B0c2hhJ10gPSBmLnJlYWRsaW5lKCkucnN0cmlwKCkKKyAgICAgICAgICAgICAgICAg
ICAgZi5jbG9zZSgpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5fX2RpY3RfX1snd3B0c2hhJ10gPSAnbWFzdGVyJworICAgICAgICByZXR1cm4gc2Vs
Zi5fb3B0aW9ucy5fX2RpY3RfX1snd3B0c2hhJ10KKworICAgIGRlZiBnaXRfY2xvbmVfYXJndW1l
bnRzKHNlbGYpOgorICAgICAgICByZXR1cm4gWydnaXQnLCAnY2xvbmUnLCAnLS1yZWN1cnNpdmUn
LCAnaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0Jywgc2VsZi50
ZXN0c19yZXBvc2l0b3J5X2RpcmVjdG9yeV0KKworICAgIGRlZiBnaXRfcHVsbF9hcmd1bWVudHMo
c2VsZik6CisgICAgICAgIHJldHVybiBbJ2dpdCcsICctQycsIHNlbGYudGVzdHNfcmVwb3NpdG9y
eV9kaXJlY3RvcnksICdwdWxsJ10KKworICAgIGRlZiBnaXRfY2hlY2tvdXRfYXJndW1lbnRzKHNl
bGYsIHZlcnNpb24pOgorICAgICAgICBhcmd1bWVudHMgPSBbJ2dpdCcsICctQycsIHNlbGYudGVz
dHNfcmVwb3NpdG9yeV9kaXJlY3RvcnksICdjaGVja291dCcsIHZlcnNpb25dCisgICAgICAgIGlm
IG5vdCBzZWxmLl9vcHRpb25zLl9fZGljdF9fWyd3M2NfdmVyYm9zZSddOgorICAgICAgICAgICAg
YXJndW1lbnRzICs9IFsnLXEnXQorICAgICAgICByZXR1cm4gYXJndW1lbnRzCisKKyAgICBkZWYg
Y2hlY2tvdXRfdGVzdHMoc2VsZik6CisgICAgICAgICIiIkdldCBXM0MgcmVmZXJlbmNlIHRlc3Rz
IGZyb20gdGhlIG9mZmljaWFsIGdpdGh1YiByZXBvc2l0b3J5LiIiIgorICAgICAgICBpZiBub3Qg
c2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoc2VsZi50ZXN0c19yZXBvc2l0b3J5X2RpcmVjdG9yeSk6
CisgICAgICAgICAgICBfbG9nLmluZm8oJ0Nsb25pbmcgd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9z
aXRvcnkuLi4nKQorICAgICAgICAgICAgRXhlY3V0aXZlKCkucnVuX2NvbW1hbmQoc2VsZi5naXRf
Y2xvbmVfYXJndW1lbnRzKCksIHJldHVybl9zdGRlcnI9RmFsc2UpCisgICAgICAgIGVsaWYgc2Vs
Zi5fb3B0aW9ucy5fX2RpY3RfX1sndzNjX3JlZnJlc2gnXSBpcyBUcnVlOgorICAgICAgICAgICAg
X2xvZy5pbmZvKCdQdWxsaW5nIHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5Li4uJykKKyAg
ICAgICAgICAgIEV4ZWN1dGl2ZSgpLnJ1bl9jb21tYW5kKHNlbGYuZ2l0X2NoZWNrb3V0X2FyZ3Vt
ZW50cygnbWFzdGVyJyksIHJldHVybl9zdGRlcnI9RmFsc2UpCisgICAgICAgICAgICBFeGVjdXRp
dmUoKS5ydW5fY29tbWFuZChzZWxmLmdpdF9wdWxsX2FyZ3VtZW50cygpLCByZXR1cm5fc3RkZXJy
PUZhbHNlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIF9sb2cu
aW5mbygnQ2hlY2tpbmcgb3V0IGJyYW5jaCAnICsgc2VsZi53cHRzaGEoKSkKKyAgICAgICAgRXhl
Y3V0aXZlKCkucnVuX2NvbW1hbmQoc2VsZi5naXRfY2hlY2tvdXRfYXJndW1lbnRzKHNlbGYud3B0
c2hhKCkpLCByZXR1cm5fc3RkZXJyPUZhbHNlKQorCisgICAgZGVmIGR1bXBfdGVzdF9saXN0KHNl
bGYpOgorICAgICAgICBfbG9nLmluZm8oJ1czQyBUZXN0czonKQorICAgICAgICBmb3IgdGVzdF9z
dWl0ZSBpbiBzZWxmLnRlc3Rfc3VpdGVzKCk6CisgICAgICAgICAgICBfbG9nLmluZm8oJyAgJyAr
IHRlc3Rfc3VpdGUpCisKKyAgICBkZWYgX2ltcG9ydF9maWxlcyhzZWxmLCBmaWxlcyk6CisgICAg
ICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgZiA9IHNlbGYuX2ZpbGVzeXN0ZW0ubm9y
bXBhdGgoZikKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uY29weWZpbGUoc2VsZi5fZmls
ZXN5c3RlbS5qb2luKHNlbGYudGVzdHNfcmVwb3NpdG9yeV9kaXJlY3RvcnksIGYpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
LmltcG9ydGVkX3Rlc3RzX2RpcmVjdG9yeSwgZikpCisKKyAgICBkZWYgX2ltcG9ydF9kaXJzKHNl
bGYsIHRlc3Rfc3VpdGVfbGlzdCk6CisgICAgICAgIGZvciB0ZXN0X3N1aXRlIGluIHRlc3Rfc3Vp
dGVfbGlzdDoKKyAgICAgICAgICAgIF9sb2cuaW5mbygnSW1wb3J0aW5nIHRlc3Qgc3VpdGU6ICcg
KyB0ZXN0X3N1aXRlKQorICAgICAgICAgICAgaW1wb3J0ZWRfdGVzdF9zdWl0ZV9kaXJlY3Rvcnkg
PSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5pbXBvcnRlZF90ZXN0c19kaXJlY3RvcnksIHRl
c3Rfc3VpdGUpCisgICAgICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhpbXBvcnRl
ZF90ZXN0X3N1aXRlX2RpcmVjdG9yeSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVz
eXN0ZW0ucm10cmVlKGltcG9ydGVkX3Rlc3Rfc3VpdGVfZGlyZWN0b3J5KQorCisgICAgICAgICAg
ICBvcHRpb25zID0gb3B0cGFyc2UuVmFsdWVzCisKKyAgICAgICAgICAgIG9wdGlvbnMuYWxsID0g
RmFsc2UKKyAgICAgICAgICAgIG9wdGlvbnMuZGVzdGluYXRpb24gPSBzZWxmLl9maWxlc3lzdGVt
LmFic3BhdGgoaW1wb3J0ZWRfdGVzdF9zdWl0ZV9kaXJlY3RvcnkpCisgICAgICAgICAgICAjIFRl
c3RoYXJuZXNzIHNjcmlwdHMgYXJlIHJldHJpZXZlZCBmcm9tIHRoZSBsb2NhbCAncmVzb3VyY2Vz
JyBmb2xkZXIgYW5kIG5vdCB3ZWJraXQgZm9sZGVyIHNvIGFzIHRvIGJlIHNlcnZlZCBieSB3cHQg
c2VydmVyLgorICAgICAgICAgICAgIyBXM0MgdGVzdHMgYWxzbyB1c2Ugc29tZSB0ZXN0aGFybmVz
cyBmdW5jdGlvbnMgdGhhdCBtYXkgbm90IGJlIHByZXNlbnQgaW4gd2Via2l0IHRlc3RoYXJuZXNz
IHNjcmlwdHMuCisgICAgICAgICAgICBvcHRpb25zLnJlc291cmNlc19wYXRoID0gc2VsZi5fZmls
ZXN5c3RlbS5hYnNwYXRoKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmltcG9ydGVkX3Rlc3Rz
X2RpcmVjdG9yeSwgInJlc291cmNlcyIpKQorICAgICAgICAgICAgb3B0aW9ucy5vdmVyd3JpdGUg
PSBUcnVlCisgICAgICAgICAgICB0ZXN0X3N1aXRlX2RpcmVjdG9yeSA9IHNlbGYuX2ZpbGVzeXN0
ZW0uam9pbihzZWxmLnRlc3RzX3JlcG9zaXRvcnlfZGlyZWN0b3J5LCB0ZXN0X3N1aXRlKQorICAg
ICAgICAgICAgdGVzdF9pbXBvcnRlciA9IFRlc3RJbXBvcnRlcihIb3N0KCksIHRlc3Rfc3VpdGVf
ZGlyZWN0b3J5LCB0ZXN0X3N1aXRlX2RpcmVjdG9yeSwgb3B0aW9ucykKKyAgICAgICAgICAgIHRl
c3RfaW1wb3J0ZXIuZG9faW1wb3J0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238175</attachid>
            <date>2014-09-16 05:31:35 -0700</date>
            <delta_ts>2014-12-23 07:05:57 -0800</delta_ts>
            <desc>Rebasing according TestImporter change</desc>
            <filename>bug-134764-20140916143131.patch</filename>
            <type>text/plain</type>
            <size>13491</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNjE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjAxYjEwMjM2OGU4YzVmZGE3NWZiZjI1NjQwOWYxYzJj
NjVlZmFiNy4uODI0YzE2YzI2MjY1MDU3YTMwNTRlNmM5ZGRhMmM0NDcwYThhYTVjMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDE0LTA5LTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGF1dG9tYXRl
IHRoZSBwcm9jZXNzIG9mIGNsb25pbmcgVzNDIHRlc3Qgc3VpdGUgYW5kIGltcG9ydGluZyB0ZXN0
cyBmcm9tIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQ3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL2ZhY3RvcnkucHk6IEFkZGVkICh3M2MgdGVzdCBzdWl0
ZSBhcmd1bWVudCBwYXJzZXIpLgorICAgICAgICAodzNjX2NyZWF0ZV9hcmd1bWVudF9wYXJzZXIp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3dlYl9wbGF0Zm9ybV90ZXN0X2ltcG9y
dGVyLnB5OiBBZGRlZCAoUmVzcG9uc2libGUgb2YgY2xvbmluZyBXM0MgdGVzdCBzdWl0ZSBhbmQg
Y29udmVydGluZyB0aGVtKS4KKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLl9faW5pdF9fKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtVGVzdEltcG9ydGVyLl9jcmVhdGVfdGVzdF9zdWl0ZV9saXN0KToKKyAgICAgICAgKFdl
YlBsYXRmb3JtVGVzdEltcG9ydGVyLmFsd2F5c19pbXBvcnRlZF9maWxlcyk6CisgICAgICAgIChX
ZWJQbGF0Zm9ybVRlc3RJbXBvcnRlci5hbHdheXNfaW1wb3J0ZWRfZGlyZWN0b3JpZXMpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIudGVzdF9zdWl0ZXMpOgorICAgICAgICAoV2Vi
UGxhdGZvcm1UZXN0SW1wb3J0ZXIuaW1wb3J0X3Rlc3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
VGVzdEltcG9ydGVyLndwdHNoYSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RJbXBvcnRlci5n
aXRfY2xvbmVfYXJndW1lbnRzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLmdp
dF9wdWxsX2FyZ3VtZW50cyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRlc3RJbXBvcnRlci5naXRf
Y2hlY2tvdXRfYXJndW1lbnRzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLmNo
ZWNrb3V0X3Rlc3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLmR1bXBfdGVz
dF9saXN0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLl9pbXBvcnRfZmlsZXMp
OgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIuX2ltcG9ydF9kaXJzKToKKwogMjAx
NC0wOS0xMiAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogcmVtaW5kIGFib3V0IHJlYmFzZWxpbmluZyBnZW5lcmF0b3IgdGVz
dCByZXN1bHRzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9mYWN0b3J5
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvZmFjdG9yeS5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YmM4ZTAzNzg3YWQyMDQxODYwZWYyM2QxNGJhOWRhOTVjOTFlZWU1Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvZmFjdG9yeS5weQpAQCAtMCwwICsxLDU2IEBA
CisjIENvcHlyaWdodCAoYykgMjAxNCwgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisiIiJGYWN0b3J5IG1ldGhvZCB0byByZXRyaWV2ZSB0aGUgYXBwcm9wcmlh
dGUgVzNDIGNvbnRleHQuIiIiCisKK2ltcG9ydCBhcmdwYXJzZQorCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5ob3N0IGltcG9ydCBIb3N0Citmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHBsYXRmb3Jt
X29wdGlvbnMKKworCitkZWYgdzNjX2NyZWF0ZV9hcmd1bWVudF9wYXJzZXIoaG9zdCwgc2NyaXB0
X25hbWUpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKworICAgICMg
QWRkIHBsYXRmb3JtIGFyZ3VtZW50cworICAgIGZvciBvcHQgaW4gcGxhdGZvcm1fb3B0aW9ucyh1
c2VfZ2xvYnM9RmFsc2UpOgorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KG9wdC5nZXRfb3B0
X3N0cmluZygpLCBhY3Rpb249b3B0LmFjdGlvbiwgZGVzdD1vcHQuZGVzdCwgY29uc3Q9Z2V0YXR0
cihvcHQsICdjb25zdCcpLCBoZWxwPWdldGF0dHIob3B0LCAnaGVscCcpKQorICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoJy0td2Via2l0LXRlc3QtcnVubmVyJywgJy0yJywgYWN0aW9uPSdzdG9yZV90
cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgaGVscD0nU2V0IFdlYktpdCBhcmNoaXRlY3R1
cmUgV2ViS2l0MSBvciBXZWJLaXQyIChkZWZhdWx0IFdLMSkuJykKKyAgICAjIFRPRE86IGFkZCAt
LWRlYnVnIG9wdGlvbj8KKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdzNjLXF1aWV0Jywg
YWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgaGVscD0nUHJpbnQg
bWluaW1hbCBsb2cuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXczYy12ZXJib3NlJywg
YWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgaGVscD0nUHJpbnQg
bWF4aW1hbCBsb2cuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdzNjLWwnLCAnLS13M2Mt
bGlzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9
J0xpc3QgYXZhaWxhYmxlIHRlc3QgZ3JvdXBzIGludG8gd2ViLXBsYXRmb3JtLXRlc3QgcmVwb3Np
dG9yeS4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy13M2MtdCcsICctLXczYy10ZXN0c3Vp
dGUnLCBkZXN0PSd0ZXN0cycsIGRlZmF1bHQ9JycsCisgICAgICAgIGhlbHA9J0ltcG9ydCBhbmQg
cnVuIGEgc3BlY2lmaWMgbGlzdCBvZiB0ZXN0IGZvbGRlcnMgKC10IHRlc3RzdWl0ZTE6dGVzdHN1
aXRlMjouLi4pLicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXczYy1zJywgJy0tdzNjLXNr
aXAtcmVmcmVzaCcsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLCBkZWZhdWx0PVRydWUsIGRlc3Q9J3cz
Y19yZWZyZXNoJywKKyAgICAgICAgaGVscD0nRGlzYWJsZSByZWZyZXNoIG9mIHRlc3RzIChnaXQg
cHVsbCArIGltcG9ydCkuIEJ5IGRlZmF1bHQsIHRlc3RzIGFyZSByZWZyZXNoZWQuJykKKyAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCctdzNjLXYnLCAnLS13ZWItcGxhdGZvcm0tdGVzdHMtdmVyc2lv
bicsIGRlc3Q9J3dwdHNoYScsCisgICAgICAgIGhlbHA9J0Nsb25lIGEgc3BlY2lmaWMgd2ViLXBs
YXRmb3JtLXRlc3QgcmV2aXNpb24gdXNpbmcgdGhlIHByb3ZpZGVkIHNoYSB2YWx1ZS4gQnkgZGVm
YXVsdCwgdXNlIGZpbGUgY29tbWl0IGluIExheW91dFRlc3RzL2ltcG9ydC93M2MuJykKKyAgICBy
ZXR1cm4gcGFyc2VyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy93ZWJf
cGxhdGZvcm1fdGVzdF9pbXBvcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dl
Yl9wbGF0Zm9ybV90ZXN0X2ltcG9ydGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzNTc2N2I1NWIyMTM5MWRi
YjA2M2JiYWM4ZWI5MTY4M2Q4MTVhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy93ZWJfcGxhdGZvcm1fdGVzdF9pbXBvcnRlci5weQpAQCAtMCwwICsxLDE2
MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCBDYW5v
biBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIgorIFRoaXMgc2Ny
aXB0IGltcG9ydHMgVzNDIHRlc3RzIGludG8gV2Via2l0IGZyb20gdGhlIG9mZmljaWFsIFczQyBy
ZXBvc2l0b3J5IChodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQp
LgorIFRoZSBXM0MgdGVzdCBzdWl0ZSByZXBvc2l0b3J5IGlzIGNsb25lZCBhbmQgdGVzdHMgYXJl
IHRoZW4gaW1wb3J0ZWQgdXNpbmcgdGVzdF9pbXBvcnQucHkuCisiIiIKKworaW1wb3J0IGxvZ2dp
bmcKK2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0IHJlCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhv
c3QgaW1wb3J0IEhvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1w
b3J0IEV4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS53M2MudGVzdF9pbXBvcnRlciBpbXBvcnQgVGVz
dEltcG9ydGVyCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworCitjbGFz
cyBXZWJQbGF0Zm9ybVRlc3RJbXBvcnRlcihvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBvcnQsIG9wdGlvbnMpOgorICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAorICAgICAgICBz
ZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gcG9ydC5o
b3N0LmZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5fdGVzdF9zdWl0ZXMgPSBbXQorCisgICAgICAg
ICMgRXhjbHVkaW5nIHNvbWUgZGlyZWN0b3JpZXMKKyAgICAgICAgc2VsZi5fZXhjbHVkZV9kaXIg
PSBbJ2NvbmZvcm1hbmNlLWNoZWNrZXJzJywgJ29sZC10ZXN0cycsICcuZ2l0J10KKyAgICAgICAg
IyBJbmNsdWRpbmcgdGVzdCBpbmZyYXN0cnVjdHVyZSBkaXJlY3RvcmllcyAodXNlIG9mIHRlc3Qg
aW1wb3J0ZXIpCisgICAgICAgIHNlbGYuX2Fsd2F5c19pbXBvcnRfZGlycyA9ICgnY29tbW9uJywg
J2ZvbnRzJywgJ2ltYWdlcycsICdtZWRpYScsICdyZXNvdXJjZXMnLCAndG9vbHMnKQorICAgICAg
ICAjIEluY2x1ZGluZyB0ZXN0IGluZnJhc3RydWN0dXJlIGZpbGVzIChubyB1c2Ugb2YgdGVzdCBp
bXBvcnRlciwgZGlyZWN0IGNvcHkpCisgICAgICAgIHNlbGYuX2Fsd2F5c19pbXBvcnRfZmlsZXMg
PSBbJ2NvbmZpZy5kZWZhdWx0Lmpzb24nLCAnc2VydmUucHknXQorCisgICAgICAgIHNlbGYuaW1w
b3J0ZWRfdGVzdHNfZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHBvcnQudzNjX2Nv
bmZvcm1hbmNlX3Jlc3VsdHNfZGlyZWN0b3J5KCksICJpbXBvcnRlZC10ZXN0cyIpCisgICAgICAg
IHNlbGYudGVzdHNfcmVwb3NpdG9yeV9kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4o
cG9ydC53M2NfY29uZm9ybWFuY2VfcmVzdWx0c19kaXJlY3RvcnkoKSwgIndlYi1wbGF0Zm9ybS10
ZXN0cyIpCisKKyAgICAgICAgc2VsZi5fY3JlYXRlX3Rlc3Rfc3VpdGVfbGlzdCgpCisKKyAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy5fX2RpY3RfX1sndzNjX3ZlcmJvc2UnXSBpcyBGYWxzZToKKyAg
ICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3ZWJraXRweS53M2MudGVzdF9pbXBvcnRlcicp
LnNldExldmVsKGxvZ2dpbmcuV0FSTklORykKKyAgICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCd3ZWJraXRweS53M2MudGVzdF9wYXJzZXInKS5zZXRMZXZlbChsb2dnaW5nLldBUk5JTkcpCisK
KyAgICBkZWYgX2NyZWF0ZV90ZXN0X3N1aXRlX2xpc3Qoc2VsZik6CisgICAgICAgIHNlbGYuY2hl
Y2tvdXRfdGVzdHMoKQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuX19kaWN0X19bJ3Rlc3Rz
J106CisgICAgICAgICAgICBzZWxmLl90ZXN0X3N1aXRlcyA9IHJlLnNwbGl0KCc6Jywgc2VsZi5f
b3B0aW9ucy5fX2RpY3RfX1sndGVzdHMnXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNl
bGYuX3Rlc3Rfc3VpdGVzID0gW2ZpbGVuYW1lIGZvciBmaWxlbmFtZSBpbiBzZWxmLl9maWxlc3lz
dGVtLmxpc3RkaXIoc2VsZi50ZXN0c19yZXBvc2l0b3J5X2RpcmVjdG9yeSkKKyAgICAgICAgICAg
ICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmlzZGlyKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
LnRlc3RzX3JlcG9zaXRvcnlfZGlyZWN0b3J5LCBmaWxlbmFtZSkpCisgICAgICAgICAgICAgICAg
YW5kIGZpbGVuYW1lIG5vdCBpbiBzZWxmLl9leGNsdWRlX2RpciBhbmQgZmlsZW5hbWUgbm90IGlu
IHNlbGYuX2Fsd2F5c19pbXBvcnRfZGlyc10KKyAgICAgICAgc2VsZi5fdGVzdF9zdWl0ZXMuc29y
dCgpCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5fX2RpY3RfX1sndzNjX2xpc3QnXSBpcyBU
cnVlOgorICAgICAgICAgICAgc2VsZi5kdW1wX3Rlc3RfbGlzdCgpCisgICAgICAgICAgICByZXR1
cm4KKworICAgIGRlZiBhbHdheXNfaW1wb3J0ZWRfZmlsZXMoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLl9hbHdheXNfaW1wb3J0X2ZpbGVzCisKKyAgICBkZWYgYWx3YXlzX2ltcG9ydGVkX2Rp
cmVjdG9yaWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYWx3YXlzX2ltcG9ydF9kaXJz
CisKKyAgICBkZWYgdGVzdF9zdWl0ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl90ZXN0
X3N1aXRlcworCisgICAgZGVmIGltcG9ydF90ZXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5faW1w
b3J0X2RpcnMoc2VsZi5fYWx3YXlzX2ltcG9ydF9kaXJzKQorICAgICAgICBzZWxmLl9pbXBvcnRf
ZmlsZXMoc2VsZi5fYWx3YXlzX2ltcG9ydF9maWxlcykKKyAgICAgICAgc2VsZi5faW1wb3J0X2Rp
cnMoc2VsZi5fdGVzdF9zdWl0ZXMpCisKKyAgICBkZWYgd3B0c2hhKHNlbGYpOgorICAgICAgICBp
ZiBub3Qgc2VsZi5fb3B0aW9ucy5fX2RpY3RfX1snd3B0c2hhJ106CisgICAgICAgICAgICB2ZXJz
aW9uX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oJ0xheW91dFRlc3RzJywgJ3BsYXRmb3Jt
Jywgc2VsZi5fcG9ydC5wb3J0X25hbWUsICdpbXBvcnRlZCcsICd3M2MnLCAnV1BUZXN0c1ZlcnNp
b24nKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3Blbih2ZXJzaW9u
X2ZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5fX2Rp
Y3RfX1snd3B0c2hhJ10gPSBmLnJlYWRsaW5lKCkucnN0cmlwKCkKKyAgICAgICAgICAgICAgICAg
ICAgZi5jbG9zZSgpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5fX2RpY3RfX1snd3B0c2hhJ10gPSAnbWFzdGVyJworICAgICAgICByZXR1cm4gc2Vs
Zi5fb3B0aW9ucy5fX2RpY3RfX1snd3B0c2hhJ10KKworICAgIGRlZiBnaXRfY2xvbmVfYXJndW1l
bnRzKHNlbGYpOgorICAgICAgICByZXR1cm4gWydnaXQnLCAnY2xvbmUnLCAnLS1yZWN1cnNpdmUn
LCAnaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0Jywgc2VsZi50
ZXN0c19yZXBvc2l0b3J5X2RpcmVjdG9yeV0KKworICAgIGRlZiBnaXRfcHVsbF9hcmd1bWVudHMo
c2VsZik6CisgICAgICAgIHJldHVybiBbJ2dpdCcsICctQycsIHNlbGYudGVzdHNfcmVwb3NpdG9y
eV9kaXJlY3RvcnksICdwdWxsJ10KKworICAgIGRlZiBnaXRfY2hlY2tvdXRfYXJndW1lbnRzKHNl
bGYsIHZlcnNpb24pOgorICAgICAgICBhcmd1bWVudHMgPSBbJ2dpdCcsICctQycsIHNlbGYudGVz
dHNfcmVwb3NpdG9yeV9kaXJlY3RvcnksICdjaGVja291dCcsIHZlcnNpb25dCisgICAgICAgIGlm
IG5vdCBzZWxmLl9vcHRpb25zLl9fZGljdF9fWyd3M2NfdmVyYm9zZSddOgorICAgICAgICAgICAg
YXJndW1lbnRzICs9IFsnLXEnXQorICAgICAgICByZXR1cm4gYXJndW1lbnRzCisKKyAgICBkZWYg
Y2hlY2tvdXRfdGVzdHMoc2VsZik6CisgICAgICAgICIiIkdldCBXM0MgcmVmZXJlbmNlIHRlc3Rz
IGZyb20gdGhlIG9mZmljaWFsIGdpdGh1YiByZXBvc2l0b3J5LiIiIgorICAgICAgICBpZiBub3Qg
c2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoc2VsZi50ZXN0c19yZXBvc2l0b3J5X2RpcmVjdG9yeSk6
CisgICAgICAgICAgICBfbG9nLmluZm8oJ0Nsb25pbmcgd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9z
aXRvcnkuLi4nKQorICAgICAgICAgICAgRXhlY3V0aXZlKCkucnVuX2NvbW1hbmQoc2VsZi5naXRf
Y2xvbmVfYXJndW1lbnRzKCksIHJldHVybl9zdGRlcnI9RmFsc2UpCisgICAgICAgIGVsaWYgc2Vs
Zi5fb3B0aW9ucy5fX2RpY3RfX1sndzNjX3JlZnJlc2gnXSBpcyBUcnVlOgorICAgICAgICAgICAg
X2xvZy5pbmZvKCdQdWxsaW5nIHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5Li4uJykKKyAg
ICAgICAgICAgIEV4ZWN1dGl2ZSgpLnJ1bl9jb21tYW5kKHNlbGYuZ2l0X2NoZWNrb3V0X2FyZ3Vt
ZW50cygnbWFzdGVyJyksIHJldHVybl9zdGRlcnI9RmFsc2UpCisgICAgICAgICAgICBFeGVjdXRp
dmUoKS5ydW5fY29tbWFuZChzZWxmLmdpdF9wdWxsX2FyZ3VtZW50cygpLCByZXR1cm5fc3RkZXJy
PUZhbHNlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIF9sb2cu
aW5mbygnQ2hlY2tpbmcgb3V0IGJyYW5jaCAnICsgc2VsZi53cHRzaGEoKSkKKyAgICAgICAgRXhl
Y3V0aXZlKCkucnVuX2NvbW1hbmQoc2VsZi5naXRfY2hlY2tvdXRfYXJndW1lbnRzKHNlbGYud3B0
c2hhKCkpLCByZXR1cm5fc3RkZXJyPUZhbHNlKQorCisgICAgZGVmIGR1bXBfdGVzdF9saXN0KHNl
bGYpOgorICAgICAgICBfbG9nLmluZm8oJ1czQyBUZXN0czonKQorICAgICAgICBmb3IgdGVzdF9z
dWl0ZSBpbiBzZWxmLnRlc3Rfc3VpdGVzKCk6CisgICAgICAgICAgICBfbG9nLmluZm8oJyAgJyAr
IHRlc3Rfc3VpdGUpCisKKyAgICBkZWYgX2ltcG9ydF9maWxlcyhzZWxmLCBmaWxlcyk6CisgICAg
ICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgZiA9IHNlbGYuX2ZpbGVzeXN0ZW0ubm9y
bXBhdGgoZikKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uY29weWZpbGUoc2VsZi5fZmls
ZXN5c3RlbS5qb2luKHNlbGYudGVzdHNfcmVwb3NpdG9yeV9kaXJlY3RvcnksIGYpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
LmltcG9ydGVkX3Rlc3RzX2RpcmVjdG9yeSwgZikpCisKKyAgICBkZWYgX2ltcG9ydF9kaXJzKHNl
bGYsIHRlc3Rfc3VpdGVfbGlzdCk6CisgICAgICAgIGZvciB0ZXN0X3N1aXRlIGluIHRlc3Rfc3Vp
dGVfbGlzdDoKKyAgICAgICAgICAgIF9sb2cuaW5mbygnSW1wb3J0aW5nIHRlc3Qgc3VpdGU6ICcg
KyB0ZXN0X3N1aXRlKQorICAgICAgICAgICAgaW1wb3J0ZWRfdGVzdF9zdWl0ZV9kaXJlY3Rvcnkg
PSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5pbXBvcnRlZF90ZXN0c19kaXJlY3RvcnksIHRl
c3Rfc3VpdGUpCisgICAgICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhpbXBvcnRl
ZF90ZXN0X3N1aXRlX2RpcmVjdG9yeSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVz
eXN0ZW0ucm10cmVlKGltcG9ydGVkX3Rlc3Rfc3VpdGVfZGlyZWN0b3J5KQorCisgICAgICAgICAg
ICBvcHRpb25zID0gb3B0cGFyc2UuVmFsdWVzCisKKyAgICAgICAgICAgIG9wdGlvbnMuYWxsID0g
RmFsc2UKKyAgICAgICAgICAgIG9wdGlvbnMuZGVzdGluYXRpb24gPSBzZWxmLl9maWxlc3lzdGVt
LmFic3BhdGgoaW1wb3J0ZWRfdGVzdF9zdWl0ZV9kaXJlY3RvcnkpCisgICAgICAgICAgICAjIFRl
c3RoYXJuZXNzIHNjcmlwdHMgYXJlIHJldHJpZXZlZCBmcm9tIHRoZSBsb2NhbCAncmVzb3VyY2Vz
JyBmb2xkZXIgYW5kIG5vdCB3ZWJraXQgZm9sZGVyIHNvIGFzIHRvIGJlIHNlcnZlZCBieSB3cHQg
c2VydmVyLgorICAgICAgICAgICAgIyBXM0MgdGVzdHMgYWxzbyB1c2Ugc29tZSB0ZXN0aGFybmVz
cyBmdW5jdGlvbnMgdGhhdCBtYXkgbm90IGJlIHByZXNlbnQgaW4gd2Via2l0IHRlc3RoYXJuZXNz
IHNjcmlwdHMuCisgICAgICAgICAgICBvcHRpb25zLnRlc3RfcGF0aHMgPSBbXQorICAgICAgICAg
ICAgb3B0aW9ucy5yZXNvdXJjZXNfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChzZWxm
Ll9maWxlc3lzdGVtLmpvaW4oc2VsZi5pbXBvcnRlZF90ZXN0c19kaXJlY3RvcnksICJyZXNvdXJj
ZXMiKSkKKyAgICAgICAgICAgIG9wdGlvbnMub3ZlcndyaXRlID0gVHJ1ZQorICAgICAgICAgICAg
dGVzdF9zdWl0ZV9kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi50ZXN0c19y
ZXBvc2l0b3J5X2RpcmVjdG9yeSwgdGVzdF9zdWl0ZSkKKyAgICAgICAgICAgIHRlc3RfaW1wb3J0
ZXIgPSBUZXN0SW1wb3J0ZXIoSG9zdCgpLCB0ZXN0X3N1aXRlX2RpcmVjdG9yeSwgb3B0aW9ucykK
KyAgICAgICAgICAgIHRlc3RfaW1wb3J0ZXIuZG9faW1wb3J0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243673</attachid>
            <date>2014-12-23 07:06:03 -0800</date>
            <delta_ts>2014-12-23 15:30:42 -0800</delta_ts>
            <desc>Updated according review</desc>
            <filename>bug-134764-20141223160603.patch</filename>
            <type>text/plain</type>
            <size>10028</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3NjIwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGM2N2ZmOWVjZDIxOWYwYjhjOGEyZDcwNmY1MWQ2Yjgx
NjU3Y2UxYS4uMmI4NGYzMDkyNDM0NDNiZDQzYjFmODEwOGU5YzdkMjAzOTRjOWVlZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDE0LTEyLTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGF1dG9tYXRl
IHRoZSBwcm9jZXNzIG9mIGNsb25pbmcgVzNDIHRlc3Qgc3VpdGUgYW5kIGltcG9ydGluZyB0ZXN0
cyBmcm9tIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQ3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWJQbGF0Zm9ybVRlc3RJbXBvcnRlciBpbXBvcnRzIFczQyB0ZXN0cyBpbnRvIFdlYmtpdCBm
cm9tIHRoZSBvZmZpY2lhbCBXM0MgcmVwb3NpdG9yeSAoaHR0cHM6Ly9naXRodWIuY29tL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMuZ2l0KS4KKyAgICAgICAgVGhlIFczQyB0ZXN0IHN1aXRlIHJlcG9z
aXRvcnkgaXMgY2xvbmVkIGFuZCB0ZXN0cyBhcmUgdGhlbiBpbXBvcnRlZCB1c2luZyB0ZXN0X2lt
cG9ydC5weS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3dlYl9wbGF0Zm9ybV90
ZXN0X2ltcG9ydGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVy
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLl9faW5pdF9fKToKKyAgICAgICAg
KFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLl9jcmVhdGVfdGVzdF9zdWl0ZV9saXN0KToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLmFsd2F5c19pbXBvcnRlZF9maWxlcyk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVRlc3RJbXBvcnRlci5hbHdheXNfaW1wb3J0ZWRfZGlyZWN0b3JpZXMp
OgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIudGVzdF9zdWl0ZXMpOgorICAgICAg
ICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIuaW1wb3J0X3Rlc3RzKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtVGVzdEltcG9ydGVyLndlYl9wbGF0Zm9ybV90ZXN0X3N1aXRlX3ZlcnNpb24pOgorICAg
ICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIuZ2l0X2Nsb25lX3Rlc3RzKToKKyAgICAgICAg
KFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLmdpdF9wdWxsX3Rlc3RzKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtVGVzdEltcG9ydGVyLmdpdF9jaGVja291dF90ZXN0c192ZXJzaW9uKToKKyAgICAgICAg
KFdlYlBsYXRmb3JtVGVzdEltcG9ydGVyLmNoZWNrb3V0X3Rlc3RzKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtVGVzdEltcG9ydGVyLmR1bXBfdGVzdF9saXN0KToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
VGVzdEltcG9ydGVyLl9pbXBvcnRfZmlsZXMpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0SW1w
b3J0ZXIuX2ltcG9ydF9kaXJzKToKKwogMjAxNC0xMi0xOSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBSZXZpc2UgRFJUIGxvZ2ljIHRvIG1hdGNo
IE1hYy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dlYl9wbGF0Zm9y
bV90ZXN0X2ltcG9ydGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mvd2ViX3BsYXRm
b3JtX3Rlc3RfaW1wb3J0ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWRhYzdlZDRlMzM2ZWNiZTU1ZmQxZmU4
NWRhMjcxNWNkNzE1YzFlMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3dlYl9wbGF0Zm9ybV90ZXN0X2ltcG9ydGVyLnB5CkBAIC0wLDAgKzEsMTY1IEBACisj
IS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIENhbm9uIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5v
biBJbmMuIG5vciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiCisgVGhpcyBzY3JpcHQgaW1w
b3J0cyBXM0MgdGVzdHMgaW50byBXZWJraXQgZnJvbSB0aGUgb2ZmaWNpYWwgVzNDIHJlcG9zaXRv
cnkgKGh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCkuCisgVGhl
IFczQyB0ZXN0IHN1aXRlIHJlcG9zaXRvcnkgaXMgY2xvbmVkIGFuZCB0ZXN0cyBhcmUgdGhlbiBp
bXBvcnRlZCB1c2luZyB0ZXN0X2ltcG9ydC5weS4KKyIiIgorCitpbXBvcnQgbG9nZ2luZworaW1w
b3J0IG9wdHBhcnNlCitpbXBvcnQgcmUKKworZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBv
cnQgSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhl
Y3V0aXZlCitmcm9tIHdlYmtpdHB5LnczYy50ZXN0X2ltcG9ydGVyIGltcG9ydCBUZXN0SW1wb3J0
ZXIKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIFdlYlBs
YXRmb3JtVGVzdEltcG9ydGVyKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9y
dCwgb3B0aW9ucyk6CisgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CisgICAgICAgIHNlbGYuX29w
dGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0Lmhvc3QuZmls
ZXN5c3RlbQorICAgICAgICBzZWxmLl90ZXN0X3N1aXRlcyA9IFtdCisKKyAgICAgICAgIyBFeGNs
dWRpbmcgc29tZSBkaXJlY3RvcmllcworICAgICAgICBzZWxmLl9leGNsdWRlX2RpciA9IFsnY29u
Zm9ybWFuY2UtY2hlY2tlcnMnLCAnb2xkLXRlc3RzJywgJy5naXQnXQorICAgICAgICAjIEluY2x1
ZGluZyB0ZXN0IGluZnJhc3RydWN0dXJlIGRpcmVjdG9yaWVzICh1c2Ugb2YgdGVzdCBpbXBvcnRl
cikKKyAgICAgICAgc2VsZi5fYWx3YXlzX2ltcG9ydF9kaXJzID0gKCdjb21tb24nLCAnZm9udHMn
LCAnaW1hZ2VzJywgJ21lZGlhJywgJ3Jlc291cmNlcycsICd0b29scycpCisgICAgICAgICMgSW5j
bHVkaW5nIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgZmlsZXMgKG5vIHVzZSBvZiB0ZXN0IGltcG9ydGVy
LCBkaXJlY3QgY29weSkKKyAgICAgICAgc2VsZi5fYWx3YXlzX2ltcG9ydF9maWxlcyA9IFsnY29u
ZmlnLmRlZmF1bHQuanNvbicsICdzZXJ2ZS5weSddCisKKyAgICAgICAgc2VsZi5pbXBvcnRlZF90
ZXN0c19kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4ocG9ydC53M2NfY29uZm9ybWFu
Y2VfcmVzdWx0c19kaXJlY3RvcnkoKSwgImltcG9ydGVkLXRlc3RzIikKKyAgICAgICAgc2VsZi50
ZXN0c19yZXBvc2l0b3J5X2RpcmVjdG9yeSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihwb3J0Lncz
Y19jb25mb3JtYW5jZV9yZXN1bHRzX2RpcmVjdG9yeSgpLCAid2ViLXBsYXRmb3JtLXRlc3RzIikK
KworICAgICAgICBzZWxmLl9jcmVhdGVfdGVzdF9zdWl0ZV9saXN0KCkKKworICAgICAgICBpZiBz
ZWxmLl9vcHRpb25zLl9fZGljdF9fWyd3M2NfdmVyYm9zZSddIGlzIEZhbHNlOgorICAgICAgICAg
ICAgbG9nZ2luZy5nZXRMb2dnZXIoJ3dlYmtpdHB5LnczYy50ZXN0X2ltcG9ydGVyJykuc2V0TGV2
ZWwobG9nZ2luZy5XQVJOSU5HKQorICAgICAgICAgICAgbG9nZ2luZy5nZXRMb2dnZXIoJ3dlYmtp
dHB5LnczYy50ZXN0X3BhcnNlcicpLnNldExldmVsKGxvZ2dpbmcuV0FSTklORykKKworICAgIGRl
ZiBfY3JlYXRlX3Rlc3Rfc3VpdGVfbGlzdChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja291dF90
ZXN0cygpCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5fX2RpY3RfX1sndGVzdHMnXToKKyAg
ICAgICAgICAgIHNlbGYuX3Rlc3Rfc3VpdGVzID0gcmUuc3BsaXQoJzonLCBzZWxmLl9vcHRpb25z
Ll9fZGljdF9fWyd0ZXN0cyddKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fdGVz
dF9zdWl0ZXMgPSBbZmlsZW5hbWUgZm9yIGZpbGVuYW1lIGluIHNlbGYuX2ZpbGVzeXN0ZW0ubGlz
dGRpcihzZWxmLnRlc3RzX3JlcG9zaXRvcnlfZGlyZWN0b3J5KQorICAgICAgICAgICAgICAgIGlm
IHNlbGYuX2ZpbGVzeXN0ZW0uaXNkaXIoc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYudGVzdHNf
cmVwb3NpdG9yeV9kaXJlY3RvcnksIGZpbGVuYW1lKSkKKyAgICAgICAgICAgICAgICBhbmQgZmls
ZW5hbWUgbm90IGluIHNlbGYuX2V4Y2x1ZGVfZGlyIGFuZCBmaWxlbmFtZSBub3QgaW4gc2VsZi5f
YWx3YXlzX2ltcG9ydF9kaXJzXQorICAgICAgICBzZWxmLl90ZXN0X3N1aXRlcy5zb3J0KCkKKwor
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLl9fZGljdF9fWyd3M2NfbGlzdCddIGlzIFRydWU6Cisg
ICAgICAgICAgICBzZWxmLmR1bXBfdGVzdF9saXN0KCkKKyAgICAgICAgICAgIHJldHVybgorCisg
ICAgZGVmIGFsd2F5c19pbXBvcnRlZF9maWxlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2Fsd2F5c19pbXBvcnRfZmlsZXMKKworICAgIGRlZiBhbHdheXNfaW1wb3J0ZWRfZGlyZWN0b3Jp
ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hbHdheXNfaW1wb3J0X2RpcnMKKworICAg
IGRlZiB0ZXN0X3N1aXRlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3Rfc3VpdGVz
CisKKyAgICBkZWYgaW1wb3J0X3Rlc3RzKHNlbGYpOgorICAgICAgICBzZWxmLl9pbXBvcnRfZGly
cyhzZWxmLl9hbHdheXNfaW1wb3J0X2RpcnMpCisgICAgICAgIHNlbGYuX2ltcG9ydF9maWxlcyhz
ZWxmLl9hbHdheXNfaW1wb3J0X2ZpbGVzKQorICAgICAgICBzZWxmLl9pbXBvcnRfZGlycyhzZWxm
Ll90ZXN0X3N1aXRlcykKKworICAgIGRlZiB3ZWJfcGxhdGZvcm1fdGVzdF9zdWl0ZV92ZXJzaW9u
KHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5fX2RpY3RfX1snd3B0X3ZlcnNp
b24nXToKKyAgICAgICAgICAgIHZlcnNpb25fZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbign
TGF5b3V0VGVzdHMnLCAncGxhdGZvcm0nLCBzZWxmLl9wb3J0LnBvcnRfbmFtZSwgJ2ltcG9ydGVk
JywgJ3czYycsICdXUFRlc3RzVmVyc2lvbicpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgd2l0aCBvcGVuKHZlcnNpb25fZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLl9fZGljdF9fWyd3cHRfdmVyc2lvbiddID0gZi5yZWFkbGluZSgp
LnJzdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgZXhj
ZXB0OgorICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuX19kaWN0X19bJ3dwdF92ZXJzaW9u
J10gPSAnbWFzdGVyJworICAgICAgICByZXR1cm4gc2VsZi5fb3B0aW9ucy5fX2RpY3RfX1snd3B0
X3ZlcnNpb24nXQorCisgICAgZGVmIGdpdF9jbG9uZV90ZXN0cyhzZWxmKToKKyAgICAgICAgYXJn
dW1lbnRzID0gWydnaXQnLCAnY2xvbmUnLCAnLS1yZWN1cnNpdmUnLCAnaHR0cHM6Ly9naXRodWIu
Y29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0Jywgc2VsZi50ZXN0c19yZXBvc2l0b3J5X2Rp
cmVjdG9yeV0KKyAgICAgICAgRXhlY3V0aXZlKCkucnVuX2NvbW1hbmQoYXJndW1lbnRzLCByZXR1
cm5fc3RkZXJyPUZhbHNlKQorCisgICAgZGVmIGdpdF9wdWxsX3Rlc3RzKHNlbGYpOgorICAgICAg
ICBhcmd1bWVudHMgPSBbJ2dpdCcsICctQycsIHNlbGYudGVzdHNfcmVwb3NpdG9yeV9kaXJlY3Rv
cnksICdwdWxsJ10KKyAgICAgICAgRXhlY3V0aXZlKCkucnVuX2NvbW1hbmQoYXJndW1lbnRzLCBy
ZXR1cm5fc3RkZXJyPUZhbHNlKQorCisgICAgZGVmIGdpdF9jaGVja291dF90ZXN0c192ZXJzaW9u
KHNlbGYsIHZlcnNpb24pOgorICAgICAgICBhcmd1bWVudHMgPSBbJ2dpdCcsICctQycsIHNlbGYu
dGVzdHNfcmVwb3NpdG9yeV9kaXJlY3RvcnksICdjaGVja291dCcsIHZlcnNpb25dCisgICAgICAg
IGlmIG5vdCBzZWxmLl9vcHRpb25zLl9fZGljdF9fWyd3M2NfdmVyYm9zZSddOgorICAgICAgICAg
ICAgYXJndW1lbnRzICs9IFsnLXEnXQorICAgICAgICBFeGVjdXRpdmUoKS5ydW5fY29tbWFuZChh
cmd1bWVudHMsIHJldHVybl9zdGRlcnI9RmFsc2UpCisKKyAgICBkZWYgY2hlY2tvdXRfdGVzdHMo
c2VsZik6CisgICAgICAgICIiIkdldCBXM0MgcmVmZXJlbmNlIHRlc3RzIGZyb20gdGhlIG9mZmlj
aWFsIGdpdGh1YiByZXBvc2l0b3J5LiIiIgorICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3Rl
bS5leGlzdHMoc2VsZi50ZXN0c19yZXBvc2l0b3J5X2RpcmVjdG9yeSk6CisgICAgICAgICAgICBf
bG9nLmluZm8oJ0Nsb25pbmcgd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9zaXRvcnkuLi4nKQorICAg
ICAgICAgICAgc2VsZi5naXRfY2xvbmVfdGVzdHMoKQorICAgICAgICBlbGlmIHNlbGYuX29wdGlv
bnMuX19kaWN0X19bJ3czY19yZWZyZXNoJ10gaXMgVHJ1ZToKKyAgICAgICAgICAgIF9sb2cuaW5m
bygnUHVsbGluZyB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwb3NpdG9yeS4uLicpCisgICAgICAgICAg
ICBzZWxmLmdpdF9jaGVja291dF90ZXN0c192ZXJzaW9uKCdtYXN0ZXInKQorICAgICAgICAgICAg
c2VsZi5naXRfcHVsbF90ZXN0cygpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4K
KyAgICAgICAgX2xvZy5pbmZvKCdDaGVja2luZyBvdXQgYnJhbmNoICcgKyBzZWxmLndlYl9wbGF0
Zm9ybV90ZXN0X3N1aXRlX3ZlcnNpb24oKSkKKyAgICAgICAgc2VsZi5naXRfY2hlY2tvdXRfdGVz
dHNfdmVyc2lvbihzZWxmLndlYl9wbGF0Zm9ybV90ZXN0X3N1aXRlX3ZlcnNpb24oKSkKKworICAg
IGRlZiBkdW1wX3Rlc3RfbGlzdChzZWxmKToKKyAgICAgICAgX2xvZy5pbmZvKCdXM0MgVGVzdHM6
JykKKyAgICAgICAgZm9yIHRlc3Rfc3VpdGUgaW4gc2VsZi50ZXN0X3N1aXRlcygpOgorICAgICAg
ICAgICAgX2xvZy5pbmZvKCcgICcgKyB0ZXN0X3N1aXRlKQorCisgICAgZGVmIF9pbXBvcnRfZmls
ZXMoc2VsZiwgZmlsZXMpOgorICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgIGYg
PSBzZWxmLl9maWxlc3lzdGVtLm5vcm1wYXRoKGYpCisgICAgICAgICAgICBzZWxmLl9maWxlc3lz
dGVtLmNvcHlmaWxlKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLnRlc3RzX3JlcG9zaXRvcnlf
ZGlyZWN0b3J5LCBmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9maWxlc3lzdGVtLmpvaW4oc2VsZi5pbXBvcnRlZF90ZXN0c19kaXJlY3RvcnksIGYpKQorCisg
ICAgZGVmIF9pbXBvcnRfZGlycyhzZWxmLCB0ZXN0X3N1aXRlX2xpc3QpOgorICAgICAgICBmb3Ig
dGVzdF9zdWl0ZSBpbiB0ZXN0X3N1aXRlX2xpc3Q6CisgICAgICAgICAgICBfbG9nLmluZm8oJ0lt
cG9ydGluZyB0ZXN0IHN1aXRlOiAnICsgdGVzdF9zdWl0ZSkKKyAgICAgICAgICAgIGltcG9ydGVk
X3Rlc3Rfc3VpdGVfZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuaW1wb3J0
ZWRfdGVzdHNfZGlyZWN0b3J5LCB0ZXN0X3N1aXRlKQorICAgICAgICAgICAgaWYgc2VsZi5fZmls
ZXN5c3RlbS5leGlzdHMoaW1wb3J0ZWRfdGVzdF9zdWl0ZV9kaXJlY3RvcnkpOgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLnJtdHJlZShpbXBvcnRlZF90ZXN0X3N1aXRlX2Rp
cmVjdG9yeSkKKworICAgICAgICAgICAgb3B0aW9ucyA9IG9wdHBhcnNlLlZhbHVlcworCisgICAg
ICAgICAgICBvcHRpb25zLmFsbCA9IEZhbHNlCisgICAgICAgICAgICBvcHRpb25zLmRlc3RpbmF0
aW9uID0gc2VsZi5fZmlsZXN5c3RlbS5hYnNwYXRoKGltcG9ydGVkX3Rlc3Rfc3VpdGVfZGlyZWN0
b3J5KQorICAgICAgICAgICAgb3B0aW9ucy50ZXN0X3BhdGhzID0gW10KKyAgICAgICAgICAgIG9w
dGlvbnMucmVzb3VyY2VzX3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgoc2VsZi5fZmls
ZXN5c3RlbS5qb2luKHNlbGYuaW1wb3J0ZWRfdGVzdHNfZGlyZWN0b3J5LCAicmVzb3VyY2VzIikp
CisgICAgICAgICAgICBvcHRpb25zLm92ZXJ3cml0ZSA9IFRydWUKKyAgICAgICAgICAgICMgVGVz
dGhhcm5lc3Mgc2NyaXB0cyBhcmUgcmV0cmlldmVkIGZyb20gdGhlIFdQVCAncmVzb3VyY2VzJyBm
b2xkZXIgYW5kIG5vdCBmcm9tIHdlYmtpdCBmb2xkZXIgc28gYXMgdG8gYmUgc2VydmVkIGJ5IHdw
dCBzZXJ2ZXIuCisgICAgICAgICAgICBvcHRpb25zLm5vX2xpbmtzX2NvbnZlcnNpb24gPSBUcnVl
CisgICAgICAgICAgICB0ZXN0X3N1aXRlX2RpcmVjdG9yeSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9p
bihzZWxmLnRlc3RzX3JlcG9zaXRvcnlfZGlyZWN0b3J5LCB0ZXN0X3N1aXRlKQorICAgICAgICAg
ICAgdGVzdF9pbXBvcnRlciA9IFRlc3RJbXBvcnRlcihIb3N0KCksIHRlc3Rfc3VpdGVfZGlyZWN0
b3J5LCBvcHRpb25zKQorICAgICAgICAgICAgdGVzdF9pbXBvcnRlci5kb19pbXBvcnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243700</attachid>
            <date>2014-12-23 15:30:48 -0800</date>
            <delta_ts>2014-12-29 12:12:02 -0800</delta_ts>
            <desc>Updated according review</desc>
            <filename>bug-134764-20141224003048.patch</filename>
            <type>text/plain</type>
            <size>9419</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3NjIwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGM2N2ZmOWVjZDIxOWYwYjhjOGEyZDcwNmY1MWQ2Yjgx
NjU3Y2UxYS4uN2MyNmYyMmU4OGUwNWRkODQwMTFiY2FjMjhiMjg2Y2E4N2FlOGFkZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDE0LTEyLTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGF1dG9tYXRl
IHRoZSBwcm9jZXNzIG9mIGNsb25pbmcgVzNDIHRlc3Qgc3VpdGUgYW5kIGltcG9ydGluZyB0ZXN0
cyBmcm9tIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQ3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWJQbGF0Zm9ybVRlc3RJbXBvcnRlciBpbXBvcnRzIFczQyB0ZXN0cyBpbnRvIFdlYmtpdCBm
cm9tIHRoZSBvZmZpY2lhbCBXM0MgcmVwb3NpdG9yeSAoaHR0cHM6Ly9naXRodWIuY29tL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMuZ2l0KS4KKyAgICAgICAgVGhlIFczQyB0ZXN0IHN1aXRlIHJlcG9z
aXRvcnkgaXMgY2xvbmVkIGFuZCB0ZXN0cyBhcmUgdGhlbiBpbXBvcnRlZCB1c2luZyB0aGUgcmVn
dWxhciBXM0MgdGVzdCBpbXBvcnRlciAoU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnQu
cHkpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2Mvd2ViX3BsYXRmb3JtX3Rlc3Rf
aW1wb3J0ZXIucHk6IEFkZGVkLgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIpOgor
ICAgICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIuX19pbml0X18pOgorICAgICAgICAoV2Vi
UGxhdGZvcm1UZXN0SW1wb3J0ZXIuX2NyZWF0ZV90ZXN0X3N1aXRlX2xpc3QpOgorICAgICAgICAo
V2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIudGVzdF9zdWl0ZXMpOgorICAgICAgICAoV2ViUGxhdGZv
cm1UZXN0SW1wb3J0ZXIuaW1wb3J0X3Rlc3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdElt
cG9ydGVyLndlYl9wbGF0Zm9ybV90ZXN0X3N1aXRlX3ZlcnNpb24pOgorICAgICAgICAoV2ViUGxh
dGZvcm1UZXN0SW1wb3J0ZXIuZ2l0X2Nsb25lX3Rlc3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
VGVzdEltcG9ydGVyLmdpdF9wdWxsX3Rlc3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdElt
cG9ydGVyLmdpdF9jaGVja291dF90ZXN0c192ZXJzaW9uKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
VGVzdEltcG9ydGVyLmNoZWNrb3V0X3Rlc3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdElt
cG9ydGVyLmR1bXBfdGVzdF9saXN0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVy
Ll9pbXBvcnRfZmlsZXMpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIuX2ltcG9y
dF9kaXJlY3Rvcmllcyk6CisKIDIwMTQtMTItMTkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gUmV2aXNlIERSVCBsb2dpYyB0byBtYXRjaCBNYWMu
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy93ZWJfcGxhdGZvcm1fdGVz
dF9pbXBvcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dlYl9wbGF0Zm9ybV90
ZXN0X2ltcG9ydGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkYzlhYTYwODQxNjA4M2VhMWQ2ZDA1NWMwOWNi
MDAxYzIyYWM1YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy93ZWJfcGxhdGZvcm1fdGVzdF9pbXBvcnRlci5weQpAQCAtMCwwICsxLDE1NSBAQAorIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCBDYW5vbiBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5j
LiBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIgorIFRoaXMgc2NyaXB0IGltcG9ydHMg
V2ViIFBsYXRmb3JtIFRlc3Qgc3VpdGVzIGFzIFdlYktpdCB0ZXN0cyBmcm9tIHRoZSBvZmZpY2lh
bCBXM0MgcmVwb3NpdG9yeSAoaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMuZ2l0KS4KKyBUaGUgVzNDIHRlc3Qgc3VpdGUgcmVwb3NpdG9yeSBpcyBjbG9uZWQgYW5kIHRl
c3RzIGFyZSB0aGVuIGltcG9ydGVkIHVzaW5nIHRlc3RfaW1wb3J0LnB5LgorIiIiCisKK2ltcG9y
dCBsb2dnaW5nCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCByZQorCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5ob3N0IGltcG9ydCBIb3N0Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfaW1wb3J0ZXIgaW1w
b3J0IFRlc3RJbXBvcnRlcgorCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisK
KworY2xhc3MgV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIob2JqZWN0KToKKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwb3J0LCBvcHRpb25zKToKKyAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKKyAg
ICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9
IHBvcnQuaG9zdC5maWxlc3lzdGVtCisgICAgICAgIHNlbGYuX3Rlc3Rfc3VpdGVzID0gW10KKwor
ICAgICAgICBzZWxmLl9leGNsdWRlX2RpciA9IFsnY29uZm9ybWFuY2UtY2hlY2tlcnMnLCAnb2xk
LXRlc3RzJywgJy5naXQnXQorICAgICAgICBzZWxmLnRlc3RfaW5mcmFzdHJ1Y3R1cmVfZGlyZWN0
b3JpZXMgPSAoJ2NvbW1vbicsICdmb250cycsICdpbWFnZXMnLCAnbWVkaWEnLCAncmVzb3VyY2Vz
JywgJ3Rvb2xzJykKKyAgICAgICAgc2VsZi50ZXN0X2luZnJhc3RydWN0dXJlX2ZpbGVzID0gWydj
b25maWcuZGVmYXVsdC5qc29uJywgJ3NlcnZlLnB5J10KKworICAgICAgICBzZWxmLmltcG9ydGVk
X3Rlc3RzX2RpcmVjdG9yeSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihwb3J0LnczY19jb25mb3Jt
YW5jZV9yZXN1bHRzX2RpcmVjdG9yeSgpLCAiaW1wb3J0ZWQtdGVzdHMiKQorICAgICAgICBzZWxm
LnRlc3RzX3JlcG9zaXRvcnlfZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHBvcnQu
dzNjX2NvbmZvcm1hbmNlX3Jlc3VsdHNfZGlyZWN0b3J5KCksICJ3ZWItcGxhdGZvcm0tdGVzdHMi
KQorCisgICAgICAgIHNlbGYuX2NyZWF0ZV90ZXN0X3N1aXRlX2xpc3QoKQorCisgICAgICAgIGlm
IHNlbGYuX29wdGlvbnMudzNjX3ZlcmJvc2UgaXMgRmFsc2U6CisgICAgICAgICAgICBsb2dnaW5n
LmdldExvZ2dlcignd2Via2l0cHkudzNjLnRlc3RfaW1wb3J0ZXInKS5zZXRMZXZlbChsb2dnaW5n
LldBUk5JTkcpCisgICAgICAgICAgICBsb2dnaW5nLmdldExvZ2dlcignd2Via2l0cHkudzNjLnRl
c3RfcGFyc2VyJykuc2V0TGV2ZWwobG9nZ2luZy5XQVJOSU5HKQorCisgICAgZGVmIF9jcmVhdGVf
dGVzdF9zdWl0ZV9saXN0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrb3V0X3Rlc3RzKCkKKwor
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnRlc3RzOgorICAgICAgICAgICAgc2VsZi5fdGVzdF9z
dWl0ZXMgPSByZS5zcGxpdCgnOicsIHNlbGYuX29wdGlvbnMudGVzdHMpCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBzZWxmLl90ZXN0X3N1aXRlcyA9IFtmaWxlbmFtZSBmb3IgZmlsZW5hbWUg
aW4gc2VsZi5fZmlsZXN5c3RlbS5saXN0ZGlyKHNlbGYudGVzdHNfcmVwb3NpdG9yeV9kaXJlY3Rv
cnkpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5pc2RpcihzZWxmLl9maWxl
c3lzdGVtLmpvaW4oc2VsZi50ZXN0c19yZXBvc2l0b3J5X2RpcmVjdG9yeSwgZmlsZW5hbWUpKQor
ICAgICAgICAgICAgICAgIGFuZCBmaWxlbmFtZSBub3QgaW4gc2VsZi5fZXhjbHVkZV9kaXIgYW5k
IGZpbGVuYW1lIG5vdCBpbiBzZWxmLnRlc3RfaW5mcmFzdHJ1Y3R1cmVfZGlyZWN0b3JpZXNdCisg
ICAgICAgIHNlbGYuX3Rlc3Rfc3VpdGVzLnNvcnQoKQorCisgICAgICAgIGlmIHNlbGYuX29wdGlv
bnMudzNjX2xpc3QgaXMgVHJ1ZToKKyAgICAgICAgICAgIHNlbGYuZHVtcF90ZXN0X2xpc3QoKQor
ICAgICAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgdGVzdF9zdWl0ZXMoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLl90ZXN0X3N1aXRlcworCisgICAgZGVmIGltcG9ydF90ZXN0cyhzZWxmKToK
KyAgICAgICAgc2VsZi5faW1wb3J0X2RpcmVjdG9yaWVzKHNlbGYudGVzdF9pbmZyYXN0cnVjdHVy
ZV9kaXJlY3RvcmllcykKKyAgICAgICAgc2VsZi5faW1wb3J0X2ZpbGVzKHNlbGYudGVzdF9pbmZy
YXN0cnVjdHVyZV9maWxlcykKKyAgICAgICAgc2VsZi5faW1wb3J0X2RpcmVjdG9yaWVzKHNlbGYu
X3Rlc3Rfc3VpdGVzKQorCisgICAgZGVmIHdlYl9wbGF0Zm9ybV90ZXN0X3N1aXRlX3ZlcnNpb24o
c2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLndwdF92ZXJzaW9uOgorICAgICAg
ICAgICAgdmVyc2lvbl9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKCdMYXlvdXRUZXN0cycs
ICdwbGF0Zm9ybScsIHNlbGYuX3BvcnQucG9ydF9uYW1lLCAnaW1wb3J0ZWQnLCAndzNjJywgJ1dQ
VGVzdHNWZXJzaW9uJykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aXRoIG9w
ZW4odmVyc2lvbl9maWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMud3B0X3ZlcnNpb24gPSBmLnJlYWRsaW5lKCkucnN0cmlwKCkKKyAgICAgICAgICAgICAg
ICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy53cHRfdmVyc2lvbiA9ICdtYXN0ZXInCisgICAgICAgIHJldHVybiBzZWxmLl9v
cHRpb25zLndwdF92ZXJzaW9uCisKKyAgICBkZWYgZ2l0X2Nsb25lX3Rlc3RzKHNlbGYpOgorICAg
ICAgICBhcmd1bWVudHMgPSBbJ2dpdCcsICdjbG9uZScsICctLXJlY3Vyc2l2ZScsICdodHRwczov
L2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQnLCBzZWxmLnRlc3RzX3JlcG9z
aXRvcnlfZGlyZWN0b3J5XQorICAgICAgICBFeGVjdXRpdmUoKS5ydW5fY29tbWFuZChhcmd1bWVu
dHMsIHJldHVybl9zdGRlcnI9RmFsc2UpCisKKyAgICBkZWYgZ2l0X3B1bGxfdGVzdHMoc2VsZik6
CisgICAgICAgIGFyZ3VtZW50cyA9IFsnZ2l0JywgJy1DJywgc2VsZi50ZXN0c19yZXBvc2l0b3J5
X2RpcmVjdG9yeSwgJ3B1bGwnXQorICAgICAgICBFeGVjdXRpdmUoKS5ydW5fY29tbWFuZChhcmd1
bWVudHMsIHJldHVybl9zdGRlcnI9RmFsc2UpCisKKyAgICBkZWYgZ2l0X2NoZWNrb3V0X3Rlc3Rz
X3ZlcnNpb24oc2VsZiwgdmVyc2lvbik6CisgICAgICAgIGFyZ3VtZW50cyA9IFsnZ2l0JywgJy1D
Jywgc2VsZi50ZXN0c19yZXBvc2l0b3J5X2RpcmVjdG9yeSwgJ2NoZWNrb3V0JywgdmVyc2lvbl0K
KyAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMudzNjX3ZlcmJvc2U6CisgICAgICAgICAgICBh
cmd1bWVudHMgKz0gWyctcSddCisgICAgICAgIEV4ZWN1dGl2ZSgpLnJ1bl9jb21tYW5kKGFyZ3Vt
ZW50cywgcmV0dXJuX3N0ZGVycj1GYWxzZSkKKworICAgIGRlZiBjaGVja291dF90ZXN0cyhzZWxm
KToKKyAgICAgICAgIiIiR2V0IFczQyByZWZlcmVuY2UgdGVzdHMgZnJvbSB0aGUgb2ZmaWNpYWwg
Z2l0aHViIHJlcG9zaXRvcnkuIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4
aXN0cyhzZWxmLnRlc3RzX3JlcG9zaXRvcnlfZGlyZWN0b3J5KToKKyAgICAgICAgICAgIF9sb2cu
aW5mbygnQ2xvbmluZyB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwb3NpdG9yeS4uLicpCisgICAgICAg
ICAgICBzZWxmLmdpdF9jbG9uZV90ZXN0cygpCisgICAgICAgIGVsaWYgc2VsZi5fb3B0aW9ucy53
M2NfcmVmcmVzaCBpcyBUcnVlOgorICAgICAgICAgICAgX2xvZy5pbmZvKCdQdWxsaW5nIHdlYi1w
bGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5Li4uJykKKyAgICAgICAgICAgIHNlbGYuZ2l0X2NoZWNr
b3V0X3Rlc3RzX3ZlcnNpb24oJ21hc3RlcicpCisgICAgICAgICAgICBzZWxmLmdpdF9wdWxsX3Rl
c3RzKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBfbG9nLmlu
Zm8oJ0NoZWNraW5nIG91dCBicmFuY2ggJyArIHNlbGYud2ViX3BsYXRmb3JtX3Rlc3Rfc3VpdGVf
dmVyc2lvbigpKQorICAgICAgICBzZWxmLmdpdF9jaGVja291dF90ZXN0c192ZXJzaW9uKHNlbGYu
d2ViX3BsYXRmb3JtX3Rlc3Rfc3VpdGVfdmVyc2lvbigpKQorCisgICAgZGVmIGR1bXBfdGVzdF9s
aXN0KHNlbGYpOgorICAgICAgICBfbG9nLmluZm8oJ1czQyBUZXN0czonKQorICAgICAgICBmb3Ig
dGVzdF9zdWl0ZSBpbiBzZWxmLnRlc3Rfc3VpdGVzKCk6CisgICAgICAgICAgICBfbG9nLmluZm8o
JyAgJyArIHRlc3Rfc3VpdGUpCisKKyAgICBkZWYgX2ltcG9ydF9maWxlcyhzZWxmLCBmaWxlcyk6
CisgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgZiA9IHNlbGYuX2ZpbGVzeXN0
ZW0ubm9ybXBhdGgoZikKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uY29weWZpbGUoc2Vs
Zi5fZmlsZXN5c3RlbS5qb2luKHNlbGYudGVzdHNfcmVwb3NpdG9yeV9kaXJlY3RvcnksIGYpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uam9p
bihzZWxmLmltcG9ydGVkX3Rlc3RzX2RpcmVjdG9yeSwgZikpCisKKyAgICBkZWYgX2ltcG9ydF9k
aXJlY3RvcmllcyhzZWxmLCB0ZXN0X3N1aXRlX2xpc3QpOgorICAgICAgICBmb3IgdGVzdF9zdWl0
ZSBpbiB0ZXN0X3N1aXRlX2xpc3Q6CisgICAgICAgICAgICBfbG9nLmluZm8oJ0ltcG9ydGluZyB0
ZXN0IHN1aXRlOiAnICsgdGVzdF9zdWl0ZSkKKyAgICAgICAgICAgIGltcG9ydGVkX3Rlc3Rfc3Vp
dGVfZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuaW1wb3J0ZWRfdGVzdHNf
ZGlyZWN0b3J5LCB0ZXN0X3N1aXRlKQorICAgICAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5l
eGlzdHMoaW1wb3J0ZWRfdGVzdF9zdWl0ZV9kaXJlY3RvcnkpOgorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9maWxlc3lzdGVtLnJtdHJlZShpbXBvcnRlZF90ZXN0X3N1aXRlX2RpcmVjdG9yeSkK
KworICAgICAgICAgICAgb3B0aW9ucyA9IG9wdHBhcnNlLlZhbHVlcworCisgICAgICAgICAgICBv
cHRpb25zLmFsbCA9IEZhbHNlCisgICAgICAgICAgICBvcHRpb25zLmRlc3RpbmF0aW9uID0gc2Vs
Zi5fZmlsZXN5c3RlbS5hYnNwYXRoKGltcG9ydGVkX3Rlc3Rfc3VpdGVfZGlyZWN0b3J5KQorICAg
ICAgICAgICAgb3B0aW9ucy50ZXN0X3BhdGhzID0gW10KKyAgICAgICAgICAgIG9wdGlvbnMucmVz
b3VyY2VzX3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgoc2VsZi5fZmlsZXN5c3RlbS5q
b2luKHNlbGYuaW1wb3J0ZWRfdGVzdHNfZGlyZWN0b3J5LCAicmVzb3VyY2VzIikpCisgICAgICAg
ICAgICBvcHRpb25zLm92ZXJ3cml0ZSA9IFRydWUKKyAgICAgICAgICAgIG9wdGlvbnMubGlua3Nf
Y29udmVyc2lvbiA9IEZhbHNlCisgICAgICAgICAgICB0ZXN0X3N1aXRlX2RpcmVjdG9yeSA9IHNl
bGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLnRlc3RzX3JlcG9zaXRvcnlfZGlyZWN0b3J5LCB0ZXN0
X3N1aXRlKQorICAgICAgICAgICAgdGVzdF9pbXBvcnRlciA9IFRlc3RJbXBvcnRlcihIb3N0KCks
IHRlc3Rfc3VpdGVfZGlyZWN0b3J5LCBvcHRpb25zKQorICAgICAgICAgICAgdGVzdF9pbXBvcnRl
ci5kb19pbXBvcnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243807</attachid>
            <date>2014-12-29 12:12:10 -0800</date>
            <delta_ts>2015-01-13 07:25:26 -0800</delta_ts>
            <desc>Rebasing according bug 134763</desc>
            <filename>bug-134764-20141229211212.patch</filename>
            <type>text/plain</type>
            <size>9437</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3Nzk1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzFhYWU3NzNkNjhkMjkyYzlmNWQxODg1MWUzNDYwMDI1
NDc1YWYzMS4uMjc1YWM2Y2EyZGU1ODRlMDJjOWNmZWQ5ZTNhZDhlN2NjZDI2NDc3ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDE0LTEyLTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGF1dG9tYXRl
IHRoZSBwcm9jZXNzIG9mIGNsb25pbmcgVzNDIHRlc3Qgc3VpdGUgYW5kIGltcG9ydGluZyB0ZXN0
cyBmcm9tIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQ3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWJQbGF0Zm9ybVRlc3RJbXBvcnRlciBpbXBvcnRzIFczQyB0ZXN0cyBpbnRvIFdlYmtpdCBm
cm9tIHRoZSBvZmZpY2lhbCBXM0MgcmVwb3NpdG9yeSAoaHR0cHM6Ly9naXRodWIuY29tL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMuZ2l0KS4KKyAgICAgICAgVGhlIFczQyB0ZXN0IHN1aXRlIHJlcG9z
aXRvcnkgaXMgY2xvbmVkIGFuZCB0ZXN0cyBhcmUgdGhlbiBpbXBvcnRlZCB1c2luZyB0aGUgcmVn
dWxhciBXM0MgdGVzdCBpbXBvcnRlciAoU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnQu
cHkpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2Mvd2ViX3BsYXRmb3JtX3Rlc3Rf
aW1wb3J0ZXIucHk6IEFkZGVkLgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIpOgor
ICAgICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIuX19pbml0X18pOgorICAgICAgICAoV2Vi
UGxhdGZvcm1UZXN0SW1wb3J0ZXIuX2NyZWF0ZV90ZXN0X3N1aXRlX2xpc3QpOgorICAgICAgICAo
V2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIudGVzdF9zdWl0ZXMpOgorICAgICAgICAoV2ViUGxhdGZv
cm1UZXN0SW1wb3J0ZXIuaW1wb3J0X3Rlc3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdElt
cG9ydGVyLndlYl9wbGF0Zm9ybV90ZXN0X3N1aXRlX3ZlcnNpb24pOgorICAgICAgICAoV2ViUGxh
dGZvcm1UZXN0SW1wb3J0ZXIuZ2l0X2Nsb25lX3Rlc3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
VGVzdEltcG9ydGVyLmdpdF9wdWxsX3Rlc3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdElt
cG9ydGVyLmdpdF9jaGVja291dF90ZXN0c192ZXJzaW9uKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
VGVzdEltcG9ydGVyLmNoZWNrb3V0X3Rlc3RzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdElt
cG9ydGVyLmR1bXBfdGVzdF9saXN0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtVGVzdEltcG9ydGVy
Ll9pbXBvcnRfZmlsZXMpOgorICAgICAgICAoV2ViUGxhdGZvcm1UZXN0SW1wb3J0ZXIuX2ltcG9y
dF9kaXJlY3Rvcmllcyk6CisKIDIwMTQtMTItMjkgIEZhYmllbiBWYWxsw6llICA8ZnZhbGxlZUBj
b25uZWN0ZWQtbGFicy5jb20+CiAKICAgICAgICAgW2poQnVpbGRdIGNhaXJvIGJ1aWxkIGVycm9y
ICgtZmx0bykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3dlYl9wbGF0
Zm9ybV90ZXN0X2ltcG9ydGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mvd2ViX3Bs
YXRmb3JtX3Rlc3RfaW1wb3J0ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZkYTZlZDEzNjQ3NzMxZWQ5YTc3
YTFiNDc2Y2NiYzEyMzdiYWE2MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL3dlYl9wbGF0Zm9ybV90ZXN0X2ltcG9ydGVyLnB5CkBAIC0wLDAgKzEsMTU1IEBA
CisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIENhbm9uIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBD
YW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiCisgVGhpcyBzY3JpcHQg
aW1wb3J0cyBXZWIgUGxhdGZvcm0gVGVzdCBzdWl0ZXMgYXMgV2ViS2l0IHRlc3RzIGZyb20gdGhl
IG9mZmljaWFsIFczQyByZXBvc2l0b3J5IChodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy5naXQpLgorIFRoZSBXM0MgdGVzdCBzdWl0ZSByZXBvc2l0b3J5IGlzIGNsb25l
ZCBhbmQgdGVzdHMgYXJlIHRoZW4gaW1wb3J0ZWQgdXNpbmcgdGVzdF9pbXBvcnQucHkuCisiIiIK
KworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0IHJlCisKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS53M2MudGVzdF9pbXBv
cnRlciBpbXBvcnQgVGVzdEltcG9ydGVyCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKKworCitjbGFzcyBXZWJQbGF0Zm9ybVRlc3RJbXBvcnRlcihvYmplY3QpOgorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMpOgorICAgICAgICBzZWxmLl9wb3J0ID0g
cG9ydAorICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAgICAgICBzZWxmLl9maWxl
c3lzdGVtID0gcG9ydC5ob3N0LmZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5fdGVzdF9zdWl0ZXMg
PSBbXQorCisgICAgICAgIHNlbGYuX2V4Y2x1ZGVfZGlyID0gWydjb25mb3JtYW5jZS1jaGVja2Vy
cycsICdvbGQtdGVzdHMnLCAnLmdpdCddCisgICAgICAgIHNlbGYudGVzdF9pbmZyYXN0cnVjdHVy
ZV9kaXJlY3RvcmllcyA9ICgnY29tbW9uJywgJ2ZvbnRzJywgJ2ltYWdlcycsICdtZWRpYScsICdy
ZXNvdXJjZXMnLCAndG9vbHMnKQorICAgICAgICBzZWxmLnRlc3RfaW5mcmFzdHJ1Y3R1cmVfZmls
ZXMgPSBbJ2NvbmZpZy5kZWZhdWx0Lmpzb24nLCAnc2VydmUucHknXQorCisgICAgICAgIHNlbGYu
aW1wb3J0ZWRfdGVzdHNfZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHBvcnQudzNj
X2NvbmZvcm1hbmNlX3Jlc3VsdHNfZGlyZWN0b3J5KCksICJpbXBvcnRlZC10ZXN0cyIpCisgICAg
ICAgIHNlbGYudGVzdHNfcmVwb3NpdG9yeV9kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lzdGVtLmpv
aW4ocG9ydC53M2NfY29uZm9ybWFuY2VfcmVzdWx0c19kaXJlY3RvcnkoKSwgIndlYi1wbGF0Zm9y
bS10ZXN0cyIpCisKKyAgICAgICAgc2VsZi5fY3JlYXRlX3Rlc3Rfc3VpdGVfbGlzdCgpCisKKyAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy53M2NfdmVyYm9zZSBpcyBGYWxzZToKKyAgICAgICAgICAg
IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3ZWJraXRweS53M2MudGVzdF9pbXBvcnRlcicpLnNldExldmVs
KGxvZ2dpbmcuV0FSTklORykKKyAgICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3ZWJraXRw
eS53M2MudGVzdF9wYXJzZXInKS5zZXRMZXZlbChsb2dnaW5nLldBUk5JTkcpCisKKyAgICBkZWYg
X2NyZWF0ZV90ZXN0X3N1aXRlX2xpc3Qoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tvdXRfdGVz
dHMoKQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudGVzdHM6CisgICAgICAgICAgICBzZWxm
Ll90ZXN0X3N1aXRlcyA9IHJlLnNwbGl0KCc6Jywgc2VsZi5fb3B0aW9ucy50ZXN0cykKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3Rlc3Rfc3VpdGVzID0gW2ZpbGVuYW1lIGZvciBm
aWxlbmFtZSBpbiBzZWxmLl9maWxlc3lzdGVtLmxpc3RkaXIoc2VsZi50ZXN0c19yZXBvc2l0b3J5
X2RpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmlzZGlyKHNl
bGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLnRlc3RzX3JlcG9zaXRvcnlfZGlyZWN0b3J5LCBmaWxl
bmFtZSkpCisgICAgICAgICAgICAgICAgYW5kIGZpbGVuYW1lIG5vdCBpbiBzZWxmLl9leGNsdWRl
X2RpciBhbmQgZmlsZW5hbWUgbm90IGluIHNlbGYudGVzdF9pbmZyYXN0cnVjdHVyZV9kaXJlY3Rv
cmllc10KKyAgICAgICAgc2VsZi5fdGVzdF9zdWl0ZXMuc29ydCgpCisKKyAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy53M2NfbGlzdCBpcyBUcnVlOgorICAgICAgICAgICAgc2VsZi5kdW1wX3Rlc3Rf
bGlzdCgpCisgICAgICAgICAgICByZXR1cm4KKworICAgIGRlZiB0ZXN0X3N1aXRlcyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3Rfc3VpdGVzCisKKyAgICBkZWYgaW1wb3J0X3Rlc3Rz
KHNlbGYpOgorICAgICAgICBzZWxmLl9pbXBvcnRfZGlyZWN0b3JpZXMoc2VsZi50ZXN0X2luZnJh
c3RydWN0dXJlX2RpcmVjdG9yaWVzKQorICAgICAgICBzZWxmLl9pbXBvcnRfZmlsZXMoc2VsZi50
ZXN0X2luZnJhc3RydWN0dXJlX2ZpbGVzKQorICAgICAgICBzZWxmLl9pbXBvcnRfZGlyZWN0b3Jp
ZXMoc2VsZi5fdGVzdF9zdWl0ZXMpCisKKyAgICBkZWYgd2ViX3BsYXRmb3JtX3Rlc3Rfc3VpdGVf
dmVyc2lvbihzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMud3B0X3ZlcnNpb246
CisgICAgICAgICAgICB2ZXJzaW9uX2ZpbGUgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oJ0xheW91
dFRlc3RzJywgJ3BsYXRmb3JtJywgc2VsZi5fcG9ydC5wb3J0X25hbWUsICdpbXBvcnRlZCcsICd3
M2MnLCAnV1BUZXN0c1ZlcnNpb24nKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg
IHdpdGggb3Blbih2ZXJzaW9uX2ZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy53cHRfdmVyc2lvbiA9IGYucmVhZGxpbmUoKS5yc3RyaXAoKQorICAgICAg
ICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLndwdF92ZXJzaW9uID0gJ21hc3RlcicKKyAgICAgICAgcmV0dXJu
IHNlbGYuX29wdGlvbnMud3B0X3ZlcnNpb24KKworICAgIGRlZiBnaXRfY2xvbmVfdGVzdHMoc2Vs
Zik6CisgICAgICAgIGFyZ3VtZW50cyA9IFsnZ2l0JywgJ2Nsb25lJywgJy0tcmVjdXJzaXZlJywg
J2h0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCcsIHNlbGYudGVz
dHNfcmVwb3NpdG9yeV9kaXJlY3RvcnldCisgICAgICAgIEV4ZWN1dGl2ZSgpLnJ1bl9jb21tYW5k
KGFyZ3VtZW50cywgcmV0dXJuX3N0ZGVycj1GYWxzZSkKKworICAgIGRlZiBnaXRfcHVsbF90ZXN0
cyhzZWxmKToKKyAgICAgICAgYXJndW1lbnRzID0gWydnaXQnLCAnLUMnLCBzZWxmLnRlc3RzX3Jl
cG9zaXRvcnlfZGlyZWN0b3J5LCAncHVsbCddCisgICAgICAgIEV4ZWN1dGl2ZSgpLnJ1bl9jb21t
YW5kKGFyZ3VtZW50cywgcmV0dXJuX3N0ZGVycj1GYWxzZSkKKworICAgIGRlZiBnaXRfY2hlY2tv
dXRfdGVzdHNfdmVyc2lvbihzZWxmLCB2ZXJzaW9uKToKKyAgICAgICAgYXJndW1lbnRzID0gWydn
aXQnLCAnLUMnLCBzZWxmLnRlc3RzX3JlcG9zaXRvcnlfZGlyZWN0b3J5LCAnY2hlY2tvdXQnLCB2
ZXJzaW9uXQorICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy53M2NfdmVyYm9zZToKKyAgICAg
ICAgICAgIGFyZ3VtZW50cyArPSBbJy1xJ10KKyAgICAgICAgRXhlY3V0aXZlKCkucnVuX2NvbW1h
bmQoYXJndW1lbnRzLCByZXR1cm5fc3RkZXJyPUZhbHNlKQorCisgICAgZGVmIGNoZWNrb3V0X3Rl
c3RzKHNlbGYpOgorICAgICAgICAiIiJHZXQgVzNDIHJlZmVyZW5jZSB0ZXN0cyBmcm9tIHRoZSBv
ZmZpY2lhbCBnaXRodWIgcmVwb3NpdG9yeS4iIiIKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVz
eXN0ZW0uZXhpc3RzKHNlbGYudGVzdHNfcmVwb3NpdG9yeV9kaXJlY3RvcnkpOgorICAgICAgICAg
ICAgX2xvZy5pbmZvKCdDbG9uaW5nIHdlYi1wbGF0Zm9ybS10ZXN0cyByZXBvc2l0b3J5Li4uJykK
KyAgICAgICAgICAgIHNlbGYuZ2l0X2Nsb25lX3Rlc3RzKCkKKyAgICAgICAgZWxpZiBzZWxmLl9v
cHRpb25zLnczY19yZWZyZXNoIGlzIFRydWU6CisgICAgICAgICAgICBfbG9nLmluZm8oJ1B1bGxp
bmcgd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9zaXRvcnkuLi4nKQorICAgICAgICAgICAgc2VsZi5n
aXRfY2hlY2tvdXRfdGVzdHNfdmVyc2lvbignbWFzdGVyJykKKyAgICAgICAgICAgIHNlbGYuZ2l0
X3B1bGxfdGVzdHMoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
IF9sb2cuaW5mbygnQ2hlY2tpbmcgb3V0IGJyYW5jaCAnICsgc2VsZi53ZWJfcGxhdGZvcm1fdGVz
dF9zdWl0ZV92ZXJzaW9uKCkpCisgICAgICAgIHNlbGYuZ2l0X2NoZWNrb3V0X3Rlc3RzX3ZlcnNp
b24oc2VsZi53ZWJfcGxhdGZvcm1fdGVzdF9zdWl0ZV92ZXJzaW9uKCkpCisKKyAgICBkZWYgZHVt
cF90ZXN0X2xpc3Qoc2VsZik6CisgICAgICAgIF9sb2cuaW5mbygnVzNDIFRlc3RzOicpCisgICAg
ICAgIGZvciB0ZXN0X3N1aXRlIGluIHNlbGYudGVzdF9zdWl0ZXMoKToKKyAgICAgICAgICAgIF9s
b2cuaW5mbygnICAnICsgdGVzdF9zdWl0ZSkKKworICAgIGRlZiBfaW1wb3J0X2ZpbGVzKHNlbGYs
IGZpbGVzKToKKyAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICBmID0gc2VsZi5f
ZmlsZXN5c3RlbS5ub3JtcGF0aChmKQorICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5jb3B5
ZmlsZShzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi50ZXN0c19yZXBvc2l0b3J5X2RpcmVjdG9y
eSwgZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHNlbGYuaW1wb3J0ZWRfdGVzdHNfZGlyZWN0b3J5LCBmKSkKKworICAgIGRlZiBf
aW1wb3J0X2RpcmVjdG9yaWVzKHNlbGYsIHRlc3Rfc3VpdGVfbGlzdCk6CisgICAgICAgIGZvciB0
ZXN0X3N1aXRlIGluIHRlc3Rfc3VpdGVfbGlzdDoKKyAgICAgICAgICAgIF9sb2cuaW5mbygnSW1w
b3J0aW5nIHRlc3Qgc3VpdGU6ICcgKyB0ZXN0X3N1aXRlKQorICAgICAgICAgICAgaW1wb3J0ZWRf
dGVzdF9zdWl0ZV9kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5pbXBvcnRl
ZF90ZXN0c19kaXJlY3RvcnksIHRlc3Rfc3VpdGUpCisgICAgICAgICAgICBpZiBzZWxmLl9maWxl
c3lzdGVtLmV4aXN0cyhpbXBvcnRlZF90ZXN0X3N1aXRlX2RpcmVjdG9yeSk6CisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ucm10cmVlKGltcG9ydGVkX3Rlc3Rfc3VpdGVfZGly
ZWN0b3J5KQorCisgICAgICAgICAgICBvcHRpb25zID0gb3B0cGFyc2UuVmFsdWVzCisKKyAgICAg
ICAgICAgIG9wdGlvbnMuYWxsID0gRmFsc2UKKyAgICAgICAgICAgIG9wdGlvbnMuZGVzdGluYXRp
b24gPSBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgoaW1wb3J0ZWRfdGVzdF9zdWl0ZV9kaXJlY3Rv
cnkpCisgICAgICAgICAgICBvcHRpb25zLnRlc3RfcGF0aHMgPSBbXQorICAgICAgICAgICAgb3B0
aW9ucy5yZXNvdXJjZXNfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChzZWxmLl9maWxl
c3lzdGVtLmpvaW4oc2VsZi5pbXBvcnRlZF90ZXN0c19kaXJlY3RvcnksICJyZXNvdXJjZXMiKSkK
KyAgICAgICAgICAgIG9wdGlvbnMub3ZlcndyaXRlID0gVHJ1ZQorICAgICAgICAgICAgb3B0aW9u
cy5jb252ZXJ0X3Rlc3RfaGFybmVzc19saW5rcyA9IEZhbHNlCisgICAgICAgICAgICB0ZXN0X3N1
aXRlX2RpcmVjdG9yeSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLnRlc3RzX3JlcG9zaXRv
cnlfZGlyZWN0b3J5LCB0ZXN0X3N1aXRlKQorICAgICAgICAgICAgdGVzdF9pbXBvcnRlciA9IFRl
c3RJbXBvcnRlcihIb3N0KCksIHRlc3Rfc3VpdGVfZGlyZWN0b3J5LCBvcHRpb25zKQorICAgICAg
ICAgICAgdGVzdF9pbXBvcnRlci5kb19pbXBvcnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244512</attachid>
            <date>2015-01-13 07:25:35 -0800</date>
            <delta_ts>2015-01-22 14:51:25 -0800</delta_ts>
            <desc>Adding CSS tests import</desc>
            <filename>bug-134764-20150113162539.patch</filename>
            <type>text/plain</type>
            <size>34702</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4MjU1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmVjY2Q3OTg5N2VjMTU5NDA2YTk3ZmYyNDBhNGYwMzA3
NzBmNmFjYS4uYmQ4MDJmY2FjNGE5OWJjOTdiNzNhN2E1NWViN2RiNWRhZWE1MDQ0OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYx
IEBACisyMDE1LTAxLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGF1dG9tYXRl
IHRoZSBwcm9jZXNzIG9mIGNsb25pbmcgVzNDIHRlc3Qgc3VpdGUgYW5kIGltcG9ydGluZyB0ZXN0
cyBmcm9tIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQ3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0RG93bmxvYWRlciBpcyBpbnRyb2R1Y2VkIHRvIGRvd25sb2FkIFczQyB0ZXN0cyBmcm9t
IHRoZSBvZmZpY2lhbAorICAgICAgICBXM0MgdGVzdHMgcmVwb3NpdG9yaWVzIChodHRwczovL2dp
dGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQKKyAgICAgICAgYW5kIGh0dHBzOi8v
Z2l0aHViLmNvbS93M2MvY3Nzd2ctdGVzdC5naXQpLgorICAgICAgICBUZXN0RG93bmxvYWRlciBj
bG9uZXMgdGhlIHJlcG9zaXRvcmllcyBhbmQgY2hlY2tvdXQgYSBkZWRpY2F0ZWQKKyAgICAgICAg
dmVyc2lvbiBvZiB0aGUgdGVzdHMsIGRlZmluZWQgaW4KKyAgICAgICAgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3Jlc291cmNlcy9XUFRWZXJzaW9uIGFuZAorICAgICAgICBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvcmVzb3VyY2VzL0NTU1ZlcnNpb24uCisKKyAgICAgICAgU2ltaWxhcmx5IHRv
IGh0dHBzOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMTQ4MTczMDE2LAorICAgICAgICBUZXN0
RG93bmxvYWRlciBjb3BpZXMgcGFydCBvZiB0aGUgZmlsZXMgYmFzZWQgb24gdGhlIHJ1bGVzCisg
ICAgICAgIGRlZmluZWQgaW4gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9JbXBv
cnRFeHBlY3RhdGlvbnMuCisKKyAgICAgICAgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291
cmNlcy9JbmZyYXN0cnVjdHVyZVBhdGhzIGlzIGludHJvZHVjZWQKKyAgICAgICAgdG8gZW5zdXJl
IGluZnJhc3RydWN0dXJlIGRpcmVjdG9yaWVzIGFyZSBhbHdheXMgaW1wb3J0ZWQuIEl0IGlzIGFs
c28gdXNlZAorICAgICAgICB0byBlbnN1cmUgdGhhdCBydW4td2Via2l0LXRlc3RzIHdpbGwgbm90
IHJ1biB0ZXN0cyB3aXRoaW4gdGhlc2UgcGF0aHMuCisKKyAgICAgICAgVGVzdERvd25sb2FkZXIg
aXMgdXNlZCBieSBUZXN0SW1wb3J0ZXIgd2hlbiBubyBzb3VyY2UgZGlyZWN0b3J5IGlzIHByb3Zp
ZGVkLgorCisgICAgICAgIFJlcGxhY2VkIHNodXRpbCBjYWxscyBieSBmaWxlc3lzdGVtIGNhbGxz
LgorICAgICAgICBNaWdyYXRlZCBmcm9tIG9wdHBhcnNlIHRvIGFyZ3BhcnNlIHRvIGVhc2UgY29u
Zm9ybWFuY2Ugc2NyaXB0cy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3Rf
ZG93bmxvYWRlci5weTogQWRkZWQuCisgICAgICAgIChUZXN0RG93bmxvYWRlcik6CisgICAgICAg
IChUZXN0RG93bmxvYWRlci5kZWZhdWx0X29wdGlvbnMpOgorICAgICAgICAoVGVzdERvd25sb2Fk
ZXIuX19pbml0X18pOgorICAgICAgICAoVGVzdERvd25sb2FkZXIuX3J1bl9jb21tYW5kKToKKyAg
ICAgICAgKFRlc3REb3dubG9hZGVyLmdpdF9jbG9uZSk6CisgICAgICAgIChUZXN0RG93bmxvYWRl
ci5naXRfZmV0Y2gpOgorICAgICAgICAoVGVzdERvd25sb2FkZXIuZ2l0X2NoZWNrb3V0KToKKyAg
ICAgICAgKFRlc3REb3dubG9hZGVyLnRlc3RzX3ZlcnNpb24pOgorICAgICAgICAoVGVzdERvd25s
b2FkZXIuY2hlY2tvdXRfd2ViX3BsYXRmb3JtX3Rlc3RzKToKKyAgICAgICAgKFRlc3REb3dubG9h
ZGVyLmNoZWNrb3V0X2Nzc3dnX3Rlc3RzKToKKyAgICAgICAgKFRlc3REb3dubG9hZGVyLl9pbml0
X3BhdGhzX2Zyb21fZXhwZWN0YXRpb25zKToKKyAgICAgICAgKFRlc3REb3dubG9hZGVyLl9zaG91
bGRfY29weSk6CisgICAgICAgIChUZXN0RG93bmxvYWRlci5hbGxfdGVzdF9wYXRocyk6CisgICAg
ICAgIChUZXN0RG93bmxvYWRlci5fZW1wdHlfZGlyZWN0b3J5KToKKyAgICAgICAgKFRlc3REb3du
bG9hZGVyLmNvcHlfdGVzdHMpOgorICAgICAgICAoVGVzdERvd25sb2FkZXIuZG93bmxvYWRfdGVz
dHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHk6Cisg
ICAgICAgIChtYWluKTogTWFkZSBzb3VyY2UgZGlyZWN0b3J5IHBhcmFtZXRlciBvcHRpb25hbC4K
KyAgICAgICAgKHBhcnNlX2FyZ3MpOiBBZGRlZCBuby1mZXRjaCBhbmQgaW1wb3J0LWFsbCBvcHRp
b25zLgorICAgICAgICAoVGVzdEltcG9ydGVyLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3RJbXBv
cnRlci5kb19pbXBvcnQpOgorICAgICAgICAoVGVzdEltcG9ydGVyLnRlc3RfZG93bmxvYWRlcik6
CisgICAgICAgIChUZXN0SW1wb3J0ZXIuc2hvdWxkX2tlZXBfc3ViZGlyKToKKyAgICAgICAgKFRl
c3RJbXBvcnRlci5maW5kX2ltcG9ydGFibGVfdGVzdHMpOgorICAgICAgICAoVGVzdEltcG9ydGVy
LnNob3VsZF9jb252ZXJ0X3Rlc3RfaGFybmVzc19saW5rcyk6CisgICAgICAgIChUZXN0SW1wb3J0
ZXIuaW1wb3J0X3Rlc3RzKToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5yZW1vdmVfZGVsZXRlZF9m
aWxlcyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIud3JpdGVfaW1wb3J0X2xvZyk6CisKIDIwMTUt
MDEtMTAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIGJ1aWxkLXdlYmtpdDogc2lsZW5jZSBvdXRwdXQgb2YgJ3doaWNoJwpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9kb3dubG9hZGVyLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9kb3dubG9hZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjZmY4NmE5
ODVmZjg2MzliZDI2YTNlZDk5OTdjNWMyYzRiYTllNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2Rvd25sb2FkZXIucHkKQEAgLTAsMCArMSwxODYg
QEAKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVz
IG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyIiIgorIFRoaXMgc2NyaXB0IGRvd25sb2FkcyBXM0MgdGVzdCByZXBv
c2l0b3JpZXMuCisiIiIKKworaW1wb3J0IGxvZ2dpbmcKKworZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi53
ZWJraXRfZmluZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLm1vZGVscy50ZXN0X2V4cGVjdGF0aW9ucyBpbXBvcnQgVGVzdEV4cGVjdGF0aW9uUGFyc2Vy
CisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworCitjbGFzcyBUZXN0RG93
bmxvYWRlcihvYmplY3QpOgorCisgICAgQ1NTX05BTUUgPSAnY3Nzd2ctdGVzdHMnCisgICAgQ1NT
X1VSTCA9ICdodHRwczovL2dpdGh1Yi5jb20vdzNjL2Nzc3dnLXRlc3QuZ2l0JworCisgICAgV1BU
X05BTUUgPSAnd2ViLXBsYXRmb3JtLXRlc3RzJworICAgIFdQVF9VUkwgPSAnaHR0cHM6Ly9naXRo
dWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMuZ2l0JworCisgICAgQHN0YXRpY21ldGhvZAor
ICAgIGRlZiBkZWZhdWx0X29wdGlvbnMoKToKKyAgICAgICAgb3B0aW9ucyA9IHR5cGUoJycsICgp
LCB7fSkKKyAgICAgICAgb3B0aW9ucy5mZXRjaCA9IFRydWUKKyAgICAgICAgb3B0aW9ucy52ZXJi
b3NlID0gRmFsc2UKKyAgICAgICAgb3B0aW9ucy5pbXBvcnRfYWxsID0gRmFsc2UKKyAgICAgICAg
b3B0aW9ucy5kb3dubG9hZF9jc3N3Z190ZXN0cyA9IFRydWUKKyAgICAgICAgb3B0aW9ucy5kb3du
bG9hZF93ZWJfcGxhdGZvcm1fdGVzdHMgPSBUcnVlCisgICAgICAgIHJldHVybiBvcHRpb25zCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVwb3NpdG9yeV9kaXJlY3RvcnksIGhvc3QsIG9wdGlv
bnMpOgorICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAgICAgICBzZWxmLl9ob3N0
ID0gaG9zdAorICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gaG9zdC5maWxlc3lzdGVtCisgICAg
ICAgIHNlbGYuX3Rlc3Rfc3VpdGVzID0gW10KKworICAgICAgICBzZWxmLnJlcG9zaXRvcnlfZGly
ZWN0b3J5ID0gcmVwb3NpdG9yeV9kaXJlY3RvcnkKKyAgICAgICAgc2VsZi53ZWJfcGxhdGZvcm1f
dGVzdHNfZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHJlcG9zaXRvcnlfZGlyZWN0
b3J5LCBzZWxmLldQVF9OQU1FKQorICAgICAgICBzZWxmLmNzc3dnX3Rlc3RzX2RpcmVjdG9yeSA9
IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihyZXBvc2l0b3J5X2RpcmVjdG9yeSwgc2VsZi5DU1NfTkFN
RSkKKworICAgICAgICB3ZWJraXRfZmluZGVyID0gV2ViS2l0RmluZGVyKHNlbGYuX2ZpbGVzeXN0
ZW0pCisgICAgICAgIHNlbGYubGF5b3V0X3Rlc3RzX3czY19yZXNvdXJjZXNfcGF0aCA9IHdlYmtp
dF9maW5kZXIucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycsICdpbXBvcnRlZCcs
ICd3M2MnLCAncmVzb3VyY2VzJykKKworICAgICAgICBzZWxmLnVubmVlZGVkX3BhdGhzID0gW10K
KyAgICAgICAgc2VsZi5pbmZyYXN0cnVjdHVyZV9wYXRocyA9IFtdCisgICAgICAgIHNlbGYuX2lu
aXRfcGF0aHNfZnJvbV9leHBlY3RhdGlvbnMoc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5
b3V0X3Rlc3RzX3czY19yZXNvdXJjZXNfcGF0aCwgJ0luZnJhc3RydWN0dXJlUGF0aHMnKSkKKyAg
ICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuaW1wb3J0X2FsbDoKKyAgICAgICAgICAgIHNlbGYu
X2luaXRfcGF0aHNfZnJvbV9leHBlY3RhdGlvbnMoc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYu
bGF5b3V0X3Rlc3RzX3czY19yZXNvdXJjZXNfcGF0aCwgJ0ltcG9ydEV4cGVjdGF0aW9ucycpKQor
CisgICAgZGVmIF9ydW5fY29tbWFuZChzZWxmLCBhcmd1bWVudHMpOgorICAgICAgICBFeGVjdXRp
dmUoKS5ydW5fY29tbWFuZChhcmd1bWVudHMsIHJldHVybl9zdGRlcnI9RmFsc2UpCisKKyAgICBk
ZWYgZ2l0X2Nsb25lKHNlbGYsIHVybCwgZGlyZWN0b3J5KToKKyAgICAgICAgYXJndW1lbnRzID0g
WydnaXQnLCAnY2xvbmUnLCAnLS1yZWN1cnNpdmUnLCB1cmwsIGRpcmVjdG9yeV0KKyAgICAgICAg
c2VsZi5fcnVuX2NvbW1hbmQoYXJndW1lbnRzKQorCisgICAgZGVmIGdpdF9mZXRjaChzZWxmLCBk
aXJlY3RvcnkpOgorICAgICAgICBhcmd1bWVudHMgPSBbJ2dpdCcsICctQycsIGRpcmVjdG9yeSwg
J3B1bGwnXQorICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmd1bWVudHMpCisKKyAgICBkZWYg
Z2l0X2NoZWNrb3V0KHNlbGYsIGRpcmVjdG9yeSwgdmVyc2lvbik6CisgICAgICAgIGFyZ3VtZW50
cyA9IFsnZ2l0JywgJy1DJywgZGlyZWN0b3J5LCAnY2hlY2tvdXQnLCB2ZXJzaW9uXQorICAgICAg
ICBpZiBub3Qgc2VsZi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAgICAgYXJndW1lbnRzICs9
IFsnLXEnXQorICAgICAgICBzZWxmLl9ydW5fY29tbWFuZChhcmd1bWVudHMpCisKKyAgICBkZWYg
dGVzdHNfdmVyc2lvbihzZWxmLCBuYW1lKToKKyAgICAgICAgdmVyc2lvbl9maWxlX3BhdGggPSBz
ZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfdzNjX3Jlc291cmNlc19wYXRo
LCBuYW1lICsgJ1ZlcnNpb24nKQorICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5pc2Zp
bGUodmVyc2lvbl9maWxlX3BhdGgpOgorICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdVbmFibGUg
dG8gcmVhZCAlcycgJSB2ZXJzaW9uX2ZpbGVfcGF0aCkKKyAgICAgICAgICAgIHJldHVybiAnbWFz
dGVyJworICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSh2ZXJz
aW9uX2ZpbGVfcGF0aCkuc3RyaXAoKQorCisgICAgZGVmIGNoZWNrb3V0X3dlYl9wbGF0Zm9ybV90
ZXN0cyhzZWxmKToKKyAgICAgICAgdmVyc2lvbiA9IHNlbGYudGVzdHNfdmVyc2lvbignV1BUJykK
KyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNlbGYud2ViX3BsYXRmb3Jt
X3Rlc3RzX2RpcmVjdG9yeSk6CisgICAgICAgICAgICBfbG9nLmluZm8oJ0Nsb25pbmcgd2ViLXBs
YXRmb3JtLXRlc3RzIHJlcG9zaXRvcnkuLi4nKQorICAgICAgICAgICAgc2VsZi5naXRfY2xvbmUo
c2VsZi5XUFRfVVJMLCBzZWxmLndlYl9wbGF0Zm9ybV90ZXN0c19kaXJlY3RvcnkpCisgICAgICAg
IGVsaWYgc2VsZi5fb3B0aW9ucy5mZXRjaCBpcyBUcnVlOgorICAgICAgICAgICAgX2xvZy5pbmZv
KCdGZXRjaGluZyB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwb3NpdG9yeS4uLicpCisgICAgICAgICAg
ICBzZWxmLmdpdF9mZXRjaChzZWxmLndlYl9wbGF0Zm9ybV90ZXN0c19kaXJlY3RvcnkpCisgICAg
ICAgIF9sb2cuaW5mbygnQ2hlY2tpbmcgb3V0IHdlYl9wbGF0Zm9ybV90ZXN0cyByZXBvc2l0b3J5
IGJyYW5jaCAnICsgdmVyc2lvbikKKyAgICAgICAgc2VsZi5naXRfY2hlY2tvdXQoc2VsZi53ZWJf
cGxhdGZvcm1fdGVzdHNfZGlyZWN0b3J5LCB2ZXJzaW9uKQorCisgICAgZGVmIGNoZWNrb3V0X2Nz
c3dnX3Rlc3RzKHNlbGYpOgorICAgICAgICB2ZXJzaW9uID0gc2VsZi50ZXN0c192ZXJzaW9uKCdD
U1MnKQorICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoc2VsZi5jc3N3Z190
ZXN0c19kaXJlY3RvcnkpOgorICAgICAgICAgICAgX2xvZy5pbmZvKCdDbG9uaW5nIGNzc3dnLXRl
c3QgcmVwb3NpdG9yeS4uLicpCisgICAgICAgICAgICBzZWxmLmdpdF9jbG9uZShzZWxmLkNTU19V
UkwsIHNlbGYuY3Nzd2dfdGVzdHNfZGlyZWN0b3J5KQorICAgICAgICBlbGlmIHNlbGYuX29wdGlv
bnMuZmV0Y2ggaXMgVHJ1ZToKKyAgICAgICAgICAgIF9sb2cuaW5mbygnRmV0Y2hpbmcgY3Nzd2ct
dGVzdCByZXBvc2l0b3J5Li4uJykKKyAgICAgICAgICAgIHNlbGYuZ2l0X2ZldGNoKHNlbGYuY3Nz
d2dfdGVzdHNfZGlyZWN0b3J5KQorICAgICAgICBfbG9nLmluZm8oJ0NoZWNraW5nIG91dCBjc3N3
Zy10ZXN0IHJlcG9zaXRvcnkgYnJhbmNoICcgKyB2ZXJzaW9uKQorICAgICAgICBzZWxmLmdpdF9j
aGVja291dChzZWxmLmNzc3dnX3Rlc3RzX2RpcmVjdG9yeSwgdmVyc2lvbikKKworICAgIGRlZiBf
aW5pdF9wYXRoc19mcm9tX2V4cGVjdGF0aW9ucyhzZWxmLCBmaWxlX3BhdGgpOgorICAgICAgICBp
ZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5pc2ZpbGUoZmlsZV9wYXRoKToKKyAgICAgICAgICAgIF9s
b2cud2FybmluZygnVW5hYmxlIHRvIHJlYWQgaW1wb3J0LWluaXQtcGF0aCBmaWxlOiAlcycgJSBm
aWxlX3BhdGgpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcG9ydCA9IHNlbGYuX2hvc3Qu
cG9ydF9mYWN0b3J5LmdldCgpCisgICAgICAgIGV4cGVjdGF0aW9ucyA9IHNlbGYuX2ZpbGVzeXN0
ZW0ucmVhZF90ZXh0X2ZpbGUoZmlsZV9wYXRoKQorICAgICAgICBwYXJzZXIgPSBUZXN0RXhwZWN0
YXRpb25QYXJzZXIocG9ydCwgKCksIEZhbHNlKQorICAgICAgICBleHBlY3RhdGlvbl9saW5lcyA9
IHBhcnNlci5wYXJzZShmaWxlX3BhdGgsIGV4cGVjdGF0aW9ucykKKyAgICAgICAgZm9yIGxpbmUg
aW4gZXhwZWN0YXRpb25fbGluZXM6CisgICAgICAgICAgICBpZiAnU0tJUCcgaW4gbGluZS5tb2Rp
ZmllcnM6CisgICAgICAgICAgICAgICAgc2VsZi51bm5lZWRlZF9wYXRocy5hcHBlbmQobGluZS5u
YW1lKQorICAgICAgICAgICAgZWxpZiAnUEFTUycgaW4gbGluZS5leHBlY3RhdGlvbnM6CisgICAg
ICAgICAgICAgICAgc2VsZi5pbmZyYXN0cnVjdHVyZV9wYXRocy5hcHBlbmQobGluZS5uYW1lKQor
CisgICAgZGVmIF9zaG91bGRfY29weShzZWxmLCByZWxhdGl2ZV9wYXRoLCBuYW1lKToKKyAgICAg
ICAgaWYgbmFtZSA9PSAnLmdpdCc6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAg
aWYgcmVsYXRpdmVfcGF0aCBpbiBzZWxmLnVubmVlZGVkX3BhdGhzOgorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgYWxsX3Rlc3RfcGF0aHMo
c2VsZik6CisgICAgICAgIHRlc3RfcGF0aHMgPSBbXQorICAgICAgICBmb3IgbmFtZSBpbiBzZWxm
Ll9maWxlc3lzdGVtLmxpc3RkaXIoc2VsZi53ZWJfcGxhdGZvcm1fdGVzdHNfZGlyZWN0b3J5KToK
KyAgICAgICAgICAgIHJlbGF0aXZlX3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5X
UFRfTkFNRSwgbmFtZSkKKyAgICAgICAgICAgIGlmIHNlbGYuX3Nob3VsZF9jb3B5KHJlbGF0aXZl
X3BhdGgsIG5hbWUpOgorICAgICAgICAgICAgICAgIHRlc3RfcGF0aHMuYXBwZW5kKHJlbGF0aXZl
X3BhdGgpCisgICAgICAgIGZvciBuYW1lIGluIHNlbGYuX2ZpbGVzeXN0ZW0ubGlzdGRpcihzZWxm
LmNzc3dnX3Rlc3RzX2RpcmVjdG9yeSk6CisgICAgICAgICAgICByZWxhdGl2ZV9wYXRoID0gc2Vs
Zi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuQ1NTX05BTUUsIG5hbWUpCisgICAgICAgICAgICBpZiBz
ZWxmLl9zaG91bGRfY29weShyZWxhdGl2ZV9wYXRoLCBuYW1lKToKKyAgICAgICAgICAgICAgICB0
ZXN0X3BhdGhzLmFwcGVuZChyZWxhdGl2ZV9wYXRoKQorICAgICAgICByZXR1cm4gdGVzdF9wYXRo
cworCisgICAgZGVmIF9lbXB0eV9kaXJlY3Rvcnkoc2VsZiwgZGlyZWN0b3J5KToKKyAgICAgICAg
aWYgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoZGlyZWN0b3J5KToKKyAgICAgICAgICAgIHNlbGYu
X2ZpbGVzeXN0ZW0ucm10cmVlKGRpcmVjdG9yeSkKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5t
YXliZV9tYWtlX2RpcmVjdG9yeShkaXJlY3RvcnkpCisKKyAgICBkZWYgY29weV90ZXN0cyhzZWxm
LCBkZXN0aW5hdGlvbl9kaXJlY3RvcnksIHRlc3RfcGF0aHMpOgorICAgICAgICBzZWxmLl9lbXB0
eV9kaXJlY3Rvcnkoc2VsZi5fZmlsZXN5c3RlbS5qb2luKGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwg
c2VsZi5XUFRfTkFNRSkpCisgICAgICAgIHNlbGYuX2VtcHR5X2RpcmVjdG9yeShzZWxmLl9maWxl
c3lzdGVtLmpvaW4oZGVzdGluYXRpb25fZGlyZWN0b3J5LCBzZWxmLkNTU19OQU1FKSkKKworICAg
ICAgICBjb3B5X3BhdGhzID0gW10KKyAgICAgICAgaWYgbGVuKHRlc3RfcGF0aHMpID4gMDoKKyAg
ICAgICAgICAgIGNvcHlfcGF0aHMuZXh0ZW5kKHRlc3RfcGF0aHMpCisgICAgICAgICAgICBjb3B5
X3BhdGhzLmV4dGVuZChzZWxmLmluZnJhc3RydWN0dXJlX3BhdGhzKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgY29weV9wYXRocy5leHRlbmQoc2VsZi5hbGxfdGVzdF9wYXRocygpKQorCisg
ICAgICAgIGZvciBwYXRoIGluIGNvcHlfcGF0aHM6CisgICAgICAgICAgICBzb3VyY2VfcGF0aCA9
IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLnJlcG9zaXRvcnlfZGlyZWN0b3J5LCBwYXRoKQor
ICAgICAgICAgICAgZGVzdGluYXRpb25fcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihkZXN0
aW5hdGlvbl9kaXJlY3RvcnksIHBhdGgpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5
c3RlbS5leGlzdHMoc291cmNlX3BhdGgpOgorICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygn
Q2Fubm90IGNvcHkgJXMnICUgc291cmNlX3BhdGgpCisgICAgICAgICAgICBlbGlmIHNlbGYuX2Zp
bGVzeXN0ZW0uaXNkaXIoc291cmNlX3BhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVz
eXN0ZW0uY29weXRyZWUoc291cmNlX3BhdGgsIGRlc3RpbmF0aW9uX3BhdGgpCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uY29weWZpbGUoc291cmNl
X3BhdGgsIGRlc3RpbmF0aW9uX3BhdGgpCisKKyAgICBkZWYgZG93bmxvYWRfdGVzdHMoc2VsZiwg
ZGVzdGluYXRpb25fZGlyZWN0b3J5LCB0ZXN0X3BhdGhzPVtdKToKKyAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5kb3dubG9hZF9jc3N3Z190ZXN0czoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tvdXRf
Y3Nzd2dfdGVzdHMoKQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmRvd25sb2FkX3dlYl9wbGF0
Zm9ybV90ZXN0czoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tvdXRfd2ViX3BsYXRmb3JtX3Rlc3Rz
KCkKKyAgICAgICAgc2VsZi5jb3B5X3Rlc3RzKGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgdGVzdF9w
YXRocykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CmluZGV4
IDk1MzQ4ZTAzYWIzNTEyZjBlMGJjMWZiZDA3ODI3YjNlODJlYzRlMzUuLjFiODU5YzU2Yjc5ZWJk
MWM5Y2VhN2M2YmU1YjAyNGY0Mzk0YmIzZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2MvdGVzdF9pbXBvcnRlci5weQpAQCAtMSw2ICsxLDcgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhv
bgogCiAjIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTcgKzI5
LDE1IEBACiAjIFNVQ0ggREFNQUdFLgogCiAiIiIKLSBUaGlzIHNjcmlwdCBpbXBvcnRzIGEgZGly
ZWN0b3J5IG9mIFczQyBDU1MgdGVzdHMgaW50byBXZWJLaXQuCi0KLSBZb3UgbXVzdCBoYXZlIGNo
ZWNrZWQgb3V0IHRoZSBXM0MgcmVwb3NpdG9yeSB0byB5b3VyIGxvY2FsIGRyaXZlLgorIFRoaXMg
c2NyaXB0IGltcG9ydHMgVzNDIHRlc3RzIGludG8gV2ViS2l0LCBlaXRoZXIgZnJvbSBhIGxvY2Fs
IGZvbGRlciBvciBieSBjbG9uaW5nIFczQyBDU1MgYW5kIFdQVCByZXBvc2l0b3JpZXMuCiAKICBU
aGlzIHNjcmlwdCB3aWxsIGltcG9ydCB0aGUgdGVzdHMgaW50byBXZWJLaXQgZm9sbG93aW5nIHRo
ZXNlIHJ1bGVzOgogCi0gICAgLSBBbGwgdGVzdHMgYXJlIGltcG9ydGVkIGludG8gTGF5b3V0VGVz
dHMvdzNjCisgICAgLSBBbGwgdGVzdHMgYXJlIGJ5IGRlZmF1bHQgaW1wb3J0ZWQgaW50byBMYXlv
dXRUZXN0cy93M2MKIAogICAgIC0gVGVzdHMgd2lsbCBiZSBpbXBvcnRlZCBpbnRvIGEgZGlyZWN0
b3J5IHRyZWUgdGhhdAotICAgICAgbWlycm9ycyB0aGUgQ1NTIE1lcmN1cmlhbCByZXBvLiBGb3Ig
ZXhhbXBsZSwgPGNzc3dnX3JlcG9fcm9vdD4vY3NzMi4xIGlzIGJyb3VnaHQgaW4KLSAgICAgIGFz
IExheW91dFRlc3RzL2Nzc3dnL2NzczIuMSwgbWFpbnRhaW5pbmcgdGhlIGVudGlyZSBkaXJlY3Rv
cnkgc3RydWN0dXJlIHVuZGVyIHRoYXQKKyAgICAgIG1pcnJvcnMgdGhlIENTUyBhbmQgV1BUIHJl
cG9zaXRvcmllcy4gRm9yIGV4YW1wbGUsIDxjc3N3Z19yZXBvX3Jvb3Q+L2NzczIuMSBzaG91bGQg
YmUgYnJvdWdodCBpbgorICAgICAgYXMgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL2Nzc3dnLXRl
c3RzL2NzczIuMSwgbWFpbnRhaW5pbmcgdGhlIGVudGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHVu
ZGVyIHRoYXQKIAogICAgIC0gQnkgZGVmYXVsdCwgb25seSByZWZ0ZXN0cyBhbmQganN0ZXN0IGFy
ZSBpbXBvcnRlZC4gVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIGEgLWEgb3IgLS1hbGwKICAg
ICAgIGFyZ3VtZW50CkBAIC00Nyw5ICs0NiwxNSBAQAogICAgICAgdGhleSBhcmUgb3ZlcndyaXR0
ZW4gd2l0aCB0aGUgaWRlYSB0aGF0IHJ1bm5pbmcgdGhpcyBzY3JpcHQgd291bGQgcmVmcmVzaCBm
aWxlcyBwZXJpb2RpY2FsbHkuCiAgICAgICBUaGlzIGNhbiBhbHNvIGJlIG92ZXJyaWRkZW4gYnkg
YSAtbiBvciAtLW5vLW92ZXJ3cml0ZSBmbGFnCiAKKyAgICAtIElmIG5vIGltcG9ydF9kaXJlY3Rv
cnkgaXMgcHJvdmlkZWQsIHRoZSBzY3JpcHQgd2lsbCBkb3dubG9hZCB0aGUgdGVzdHMgZnJvbSB0
aGUgVzNDIGdpdGh1YiByZXBvc2l0b3JpZXMuCisgICAgICBUaGUgc2VsZWN0aW9uIG9mIHRlc3Rz
IGFuZCBmb2xkZXJzIHRvIGltcG9ydCB3aWxsIGJlIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgZmls
ZXM6CisgICAgICAgICAxLiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL0luZnJh
c3RydWN0dXJlUGF0aHMgbGlzdCB0aGUgaW5mcmFzdHJ1Y3R1cmUgZm9sZGVycyB0aGF0IG5lZWQg
dG8gYmUgaW1wb3J0ZWQuCisgICAgICAgICAyLiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVz
b3VyY2VzL0ltcG9ydEV4cGVjdGF0aW9ucyBsaXN0IHRoZSB0ZXN0IHN1aXRlcyBvciB0ZXN0cyB0
byBOT1QgaW1wb3J0LgorCiAgICAgLSBBbGwgZmlsZXMgYXJlIGNvbnZlcnRlZCB0byB3b3JrIGlu
IFdlYktpdDoKLSAgICAgICAgIDEuIFBhdGhzIHRvIHRlc3RoYXJuZXNzLmpzIGZpbGVzIGFyZSBt
b2RpZmllZCBwb2ludCB0byBXZWJraXQncyBjb3B5IG9mIHRoZW0gaW4KLSAgICAgICAgICAgIExh
eW91dFRlc3RzL3Jlc291cmNlcywgdXNpbmcgdGhlIGNvcnJlY3QgcmVsYXRpdmUgcGF0aCBmcm9t
IHRoZSBuZXcgbG9jYXRpb24KKyAgICAgICAgIDEuIFBhdGhzIHRvIHRlc3RoYXJuZXNzLmpzIGZp
bGVzIGFyZSBtb2RpZmllZCB0byBwb2ludCB0byBXZWJraXQncyBjb3B5IG9mIHRoZW0gaW4KKyAg
ICAgICAgICAgIExheW91dFRlc3RzL3Jlc291cmNlcywgdXNpbmcgdGhlIGNvcnJlY3QgcmVsYXRp
dmUgcGF0aCBmcm9tIHRoZSBuZXcgbG9jYXRpb24uCisgICAgICAgICAgICBUaGlzIHNob3VsZCBi
ZSBhcHBsaWVkIHRvIENTUyB0ZXN0cyBidXQgbm90IHRvIFdQVCB0ZXN0cy4KICAgICAgICAgIDIu
IEFsbCBDU1MgcHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtdmVuZG9yIHByZWZpeCBh
cmUgcHJlZml4ZWQgLSB0aGlzIGN1cnJlbnQKICAgICAgICAgICAgIGxpc3Qgb2Ygd2hhdCBuZWVk
cyBwcmVmaXhlcyBpcyByZWFkIGZyb20gU291cmNlL1dlYkNvcmUvQ1NTL0NTU1Byb3BlcnRpZXMu
aW4KICAgICAgICAgIDMuIEVhY2ggcmVmdGVzdCBoYXMgaXRzIG93biBjb3B5IG9mIGl0cyByZWZl
cmVuY2UgZmlsZSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9ucwpAQCAtNjgsMTQgKzcz
LDEzIEBACiAgICAgICAgVGhlIHNjcmlwdCByZW1vdmVzIHRoZXNlIGZpbGVzIGFjY29yZGluZ2x5
LgogIiIiCiAKLSMgRklYTUU6IENoYW5nZSB0aGlzIGZpbGUgdG8gdXNlIHRoZSBIb3N0IGFic3Ry
YWN0aW9ucyByYXRoZXIgdGhhdCBvcywgc3lzLCBzaHV0aWxzLCBldGMuCisjIEZJWE1FOiBDaGFu
Z2UgdGhpcyBmaWxlIHRvIHVzZSB0aGUgSG9zdCBhYnN0cmFjdGlvbnMgcmF0aGVyIHRoYXQgb3Ms
IHN5cywgZXRjLgogCitpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBkYXRldGltZQogaW1wb3J0IGxv
Z2dpbmcKIGltcG9ydCBtaW1ldHlwZXMKLWltcG9ydCBvcHRwYXJzZQogaW1wb3J0IG9zCi1pbXBv
cnQgc2h1dGlsCiBpbXBvcnQgc3lzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0
IEhvc3QKQEAgLTgzLDYgKzg3LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRl
ciBpbXBvcnQgV2ViS2l0RmluZGVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS53M2MudGVzdF9wYXJzZXIgaW1w
b3J0IFRlc3RQYXJzZXIKIGZyb20gd2Via2l0cHkudzNjLnRlc3RfY29udmVydGVyIGltcG9ydCBj
b252ZXJ0X2Zvcl93ZWJraXQKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfZG93bmxvYWRlciBpbXBv
cnQgVGVzdERvd25sb2FkZXIKIAogQ0hBTkdFU0VUX05PVF9BVkFJTEFCTEUgPSAnTm90IEF2YWls
YWJsZScKIApAQCAtOTAsMTEgKzk1LDggQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQogCiAKIGRlZiBtYWluKF9hcmd2LCBfc3Rkb3V0LCBfc3RkZXJyKToKLSAgICBvcHRpb25z
LCBhcmdzID0gcGFyc2VfYXJncygpCi0gICAgaW1wb3J0X2RpciA9IGFyZ3NbMF0KLQotICAgIGlm
IG5vdCBvcy5wYXRoLmV4aXN0cyhpbXBvcnRfZGlyKToKLSAgICAgICAgc3lzLmV4aXQoJ1NvdXJj
ZSBkaXJlY3RvcnkgJXMgbm90IGZvdW5kIScgJSBpbXBvcnRfZGlyKQorICAgIG9wdGlvbnMsIGFy
Z3MgPSBwYXJzZV9hcmdzKF9hcmd2KQorICAgIGltcG9ydF9kaXIgPSBhcmdzWzBdIGlmIGxlbihh
cmdzKSA+IDAgZWxzZSBOb25lCiAKICAgICBjb25maWd1cmVfbG9nZ2luZygpCiAKQEAgLTExOCwy
NCArMTIwLDI4IEBAIGRlZiBjb25maWd1cmVfbG9nZ2luZygpOgogICAgIHJldHVybiBoYW5kbGVy
CiAKIAotZGVmIHBhcnNlX2FyZ3MoKToKLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJz
ZXIodXNhZ2U9J3VzYWdlOiAlcHJvZyBbb3B0aW9uc10gdzNjX3Rlc3RfZGlyZWN0b3J5JykKK2Rl
ZiBwYXJzZV9hcmdzKGFyZ3MpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2Vy
KGRlc2NyaXB0aW9uPSd1c2FnZTogaW1wb3J0LXczYy10ZXN0cyBbb3B0aW9uc10gW3Rlc3Rfc291
cmNlX2RpcmVjdG9yeV0nKQogCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1uJywgJy0tbm8tb3Zl
cndyaXRlJywgZGVzdD0nb3ZlcndyaXRlJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9
VHJ1ZSwKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbicsICctLW5vLW92ZXJ3cml0ZScsIGRl
c3Q9J292ZXJ3cml0ZScsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLCBkZWZhdWx0PVRydWUsCiAgICAg
ICAgIGhlbHA9J0ZsYWcgdG8gcHJldmVudCBkdXBsaWNhdGUgdGVzdCBmaWxlcyBmcm9tIG92ZXJ3
cml0aW5nIGV4aXN0aW5nIHRlc3RzLiBCeSBkZWZhdWx0LCB0aGV5IHdpbGwgYmUgb3ZlcndyaXR0
ZW4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbCcsICctLW5vLWxpbmtzLWNvbnZlcnNpb24n
LCBkZXN0PSdjb252ZXJ0X3Rlc3RfaGFybmVzc19saW5rcycsIGFjdGlvbj0nc3RvcmVfZmFsc2Un
LCBkZWZhdWx0PVRydWUsCi0gICAgICAgIGhlbHA9J0RvIG5vdCBjaGFuZ2UgbGlua3MgKHRlc3Ro
YXJuZXNzIGpzIG9yIGNzcyBlLmcuKS4gQnkgZGVmYXVsdCwgbGlua3MgYXJlIGNvbnZlcnRlZCB0
byBwb2ludCB0byBXZWJLaXQgdGVzdGhhcm5lc3MgZmlsZXMuJykKKyAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KCctbCcsICctLW5vLWxpbmtzLWNvbnZlcnNpb24nLCBkZXN0PSdjb252ZXJ0X3Rlc3Rf
aGFybmVzc19saW5rcycsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLCBkZWZhdWx0PVRydWUsCisgICAg
ICAgIGhlbHA9J0RvIG5vdCBjaGFuZ2UgbGlua3MgKHRlc3RoYXJuZXNzIGpzIG9yIGNzcyBlLmcu
KS4gQnkgZGVmYXVsdCwgbGlua3MgYXJlIGNvbnZlcnRlZCB0byBwb2ludCB0byBXZWJLaXQgdGVz
dGhhcm5lc3MgZmlsZXMgaWYgYSB3M2MgdGVzdCBkaXJlY3RvcnkgdG8gaW1wb3J0IGlzIHByb3Zp
ZGVkJykKIAotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctYScsICctLWFsbCcsIGFjdGlvbj0nc3Rv
cmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWEnLCAn
LS1hbGwnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICBoZWxw
PSdJbXBvcnQgYWxsIHRlc3RzIGluY2x1ZGluZyByZWZ0ZXN0cywgSlMgdGVzdHMsIGFuZCBtYW51
YWwvcGl4ZWwgdGVzdHMuIEJ5IGRlZmF1bHQsIG9ubHkgcmVmdGVzdHMgYW5kIEpTIHRlc3RzIGFy
ZSBpbXBvcnRlZCcpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1kJywgJy0tZGVzdC1kaXInLCBk
ZXN0PSdkZXN0aW5hdGlvbicsIGRlZmF1bHQ9J3czYycsCisgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgnLXYnLCAnLS12ZXJib3NlJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwK
KyAgICAgICAgaGVscD0nUHJpbnQgbWF4aW1hbCBsb2cnKQorICAgIHBhcnNlci5hZGRfYXJndW1l
bnQoJy1kJywgJy0tZGVzdC1kaXInLCBkZXN0PSdkZXN0aW5hdGlvbicsIGRlZmF1bHQ9J3czYycs
CiAgICAgICAgIGhlbHA9J0ltcG9ydCBpbnRvIGEgc3BlY2lmaWVkIGRpcmVjdG9yeSByZWxhdGl2
ZSB0byB0aGUgTGF5b3V0VGVzdHMgcm9vdC4gQnkgZGVmYXVsdCwgaW1wb3J0cyBpbnRvIHczYycp
Ci0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy10JywgJy0tdGVzdC1wYXRoJywgYWN0aW9uPSdhcHBl
bmQnLCBkZXN0PSd0ZXN0X3BhdGhzJywgZGVmYXVsdD1bXSwKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCctdCcsICctLXRlc3QtcGF0aCcsIGFjdGlvbj0nYXBwZW5kJywgZGVzdD0ndGVzdF9wYXRo
cycsIGRlZmF1bHQ9W10sCiAgICAgICAgIGhlbHA9J0ltcG9ydCBvbmx5IHRlc3RzIGluIHRoZSBz
dXBwbGllZCBzdWJkaXJlY3Rvcnkgb2YgdGhlIHczY190ZXN0X2RpcmVjdG9yeS4gQ2FuIGJlIHN1
cHBsaWVkIG11bHRpcGxlIHRpbWVzIHRvIGdpdmUgbXVsdGlwbGUgcGF0aHMnKQorICAgIHBhcnNl
ci5hZGRfYXJndW1lbnQoJy0tbm8tZmV0Y2gnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywgZGVzdD0n
ZmV0Y2gnLCBkZWZhdWx0PVRydWUsCisgICAgICAgIGhlbHA9J0RvIG5vdCBmZXRjaCB0aGUgQ1NT
L1dQVCByZXBvc2l0b3JpZXMuIEJ5IGRlZmF1bHQsIHJlcG9zaXRvcmllcyBhcmUgZmV0Y2hlZCBp
ZiBhIFczYyB0ZXN0IGRpcmVjdG9yeSBpcyBub3QgcHJvdmlkZWQnKQorICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoJy0taW1wb3J0LWFsbCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFs
c2UsCisgICAgICAgIGhlbHA9J0lnbm9yZSB0aGUgSW1wb3J0RXhwZWN0YXRpb25zIGZpbGUgYW5k
IGltcG9ydCBldmVyeXRoaW5nLiBUaGlzIG9ubHkgYXBwbGllcyB3aGVuIHRlc3RzIGFyZSBkb3du
bG9hZGVkIGZyb20gVzNDIHJlcG9zaXRvcnknKQogCi0gICAgb3B0aW9ucywgYXJncyA9IHBhcnNl
ci5wYXJzZV9hcmdzKCkKLSAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAgICAgcGFyc2VyLmVy
cm9yKCdJbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cycpCisgICAgb3B0aW9ucywgYXJncyA9
IHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKGFyZ3MpCiAgICAgcmV0dXJuIG9wdGlvbnMsIGFyZ3MK
IAogCkBAIC0xNDgsMjUgKzE1NCw0OSBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKIAog
ICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBzZWxmLmhvc3QuZmlsZXN5c3RlbQogCisgICAgICAg
IHNlbGYuaW1wb3J0X2xpc3QgPSBbXQorICAgICAgICBzZWxmLl9pbXBvcnRpbmdfZG93bmxvYWRl
ZF90ZXN0cyA9IHNvdXJjZV9kaXJlY3RvcnkgaXMgTm9uZQorCiAgICAgICAgIHdlYmtpdF9maW5k
ZXIgPSBXZWJLaXRGaW5kZXIoc2VsZi5maWxlc3lzdGVtKQogICAgICAgICBzZWxmLl93ZWJraXRf
cm9vdCA9IHdlYmtpdF9maW5kZXIud2Via2l0X2Jhc2UoKQotCiAgICAgICAgIHNlbGYuZGVzdGlu
YXRpb25fZGlyZWN0b3J5ID0gd2Via2l0X2ZpbmRlci5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoIkxh
eW91dFRlc3RzIiwgb3B0aW9ucy5kZXN0aW5hdGlvbikKKyAgICAgICAgc2VsZi5sYXlvdXRfdGVz
dHNfdzNjX3BhdGggPSB3ZWJraXRfZmluZGVyLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0
VGVzdHMnLCAnaW1wb3J0ZWQnLCAndzNjJykKKyAgICAgICAgc2VsZi50ZXN0c19kb3dubG9hZF9w
YXRoID0gd2Via2l0X2ZpbmRlci5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ1dlYktpdEJ1aWxkJywg
J3czYy10ZXN0cycpCiAKLSAgICAgICAgc2VsZi5pbXBvcnRfbGlzdCA9IFtdCisgICAgICAgIHNl
bGYuX3Rlc3RfZG93bmxvYWRlciA9IE5vbmUKIAogICAgIGRlZiBkb19pbXBvcnQoc2VsZik6Ci0g
ICAgICAgIGlmIGxlbihzZWxmLm9wdGlvbnMudGVzdF9wYXRocykgPT0gMDoKKyAgICAgICAgaWYg
bm90IHNlbGYuc291cmNlX2RpcmVjdG9yeToKKyAgICAgICAgICAgIF9sb2cuaW5mbygnRG93bmxv
YWRpbmcgVzNDIHRlc3QgcmVwb3NpdG9yaWVzJykKKyAgICAgICAgICAgIHNlbGYuc291cmNlX2Rp
cmVjdG9yeSA9IHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYudGVzdHNfZG93bmxvYWRfcGF0aCwg
J3RvLWJlLWltcG9ydGVkJykKKyAgICAgICAgICAgIHNlbGYuZmlsZXN5c3RlbS5tYXliZV9tYWtl
X2RpcmVjdG9yeShzZWxmLnRlc3RzX2Rvd25sb2FkX3BhdGgpCisgICAgICAgICAgICBzZWxmLmZp
bGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5zb3VyY2VfZGlyZWN0b3J5KQorICAg
ICAgICAgICAgc2VsZi50ZXN0X2Rvd25sb2FkZXIoKS5kb3dubG9hZF90ZXN0cyhzZWxmLnNvdXJj
ZV9kaXJlY3RvcnksIHNlbGYub3B0aW9ucy50ZXN0X3BhdGhzKQorCisgICAgICAgIGlmIGxlbihz
ZWxmLm9wdGlvbnMudGVzdF9wYXRocykgPT0gMCBvciBzZWxmLl9pbXBvcnRpbmdfZG93bmxvYWRl
ZF90ZXN0czoKICAgICAgICAgICAgIHNlbGYuZmluZF9pbXBvcnRhYmxlX3Rlc3RzKHNlbGYuc291
cmNlX2RpcmVjdG9yeSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZvciB0ZXN0X3BhdGgg
aW4gc2VsZi5vcHRpb25zLnRlc3RfcGF0aHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5maW5kX2lt
cG9ydGFibGVfdGVzdHMob3MucGF0aC5qb2luKHNlbGYuc291cmNlX2RpcmVjdG9yeSwgdGVzdF9w
YXRoKSkKKyAgICAgICAgICAgICAgICBzZWxmLmZpbmRfaW1wb3J0YWJsZV90ZXN0cyhzZWxmLmZp
bGVzeXN0ZW0uam9pbihzZWxmLnNvdXJjZV9kaXJlY3RvcnksIHRlc3RfcGF0aCkpCisKICAgICAg
ICAgc2VsZi5pbXBvcnRfdGVzdHMoKQogCisgICAgZGVmIHRlc3RfZG93bmxvYWRlcihzZWxmKToK
KyAgICAgICAgaWYgbm90IHNlbGYuX3Rlc3RfZG93bmxvYWRlcjoKKyAgICAgICAgICAgIGRvd25s
b2FkX29wdGlvbnMgPSBUZXN0RG93bmxvYWRlci5kZWZhdWx0X29wdGlvbnMoKQorICAgICAgICAg
ICAgZG93bmxvYWRfb3B0aW9ucy5mZXRjaCA9IHNlbGYub3B0aW9ucy5mZXRjaAorICAgICAgICAg
ICAgZG93bmxvYWRfb3B0aW9ucy52ZXJib3NlID0gc2VsZi5vcHRpb25zLnZlcmJvc2UKKyAgICAg
ICAgICAgIGRvd25sb2FkX29wdGlvbnMuaW1wb3J0X2FsbCA9IHNlbGYub3B0aW9ucy5pbXBvcnRf
YWxsCisgICAgICAgICAgICBzZWxmLl90ZXN0X2Rvd25sb2FkZXIgPSBUZXN0RG93bmxvYWRlcihz
ZWxmLnRlc3RzX2Rvd25sb2FkX3BhdGgsIHNlbGYuaG9zdCwgZG93bmxvYWRfb3B0aW9ucykKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfZG93bmxvYWRlcgorCiAgICAgZGVmIHNob3VsZF9rZWVw
X3N1YmRpcihzZWxmLCByb290LCBzdWJkaXIpOgorICAgICAgICBpZiBzdWJkaXIuc3RhcnRzd2l0
aCgnLicpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHNlbGYuX2ltcG9y
dGluZ19kb3dubG9hZGVkX3Rlc3RzOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAg
RElSU19UT19TS0lQID0gKCd3b3JrLWluLXByb2dyZXNzJywgJ3Rvb2xzJywgJ3N1cHBvcnQnKQot
ICAgICAgICBzaG91bGRfc2tpcCA9IHN1YmRpci5zdGFydHN3aXRoKCcuJykgb3IgKHJvb3QgPT0g
c2VsZi5zb3VyY2VfZGlyZWN0b3J5IGFuZCBzdWJkaXIgaW4gRElSU19UT19TS0lQKQotICAgICAg
ICByZXR1cm4gbm90IHNob3VsZF9za2lwCisgICAgICAgIHJldHVybiBub3QgKHJvb3QgPT0gc2Vs
Zi5zb3VyY2VfZGlyZWN0b3J5IGFuZCBzdWJkaXIgaW4gRElSU19UT19TS0lQKQogCiAgICAgZGVm
IHNob3VsZF9za2lwX2ZpbGUoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAjIEZvciBzb21lIHJl
YXNvbiB0aGUgdzNjIHJlcG8gY29udGFpbnMgcmFuZG9tIHBlcmwgc2NyaXB0cyB3ZSBkb24ndCBj
YXJlIGFib3V0LgpAQCAtMTk0LDcgKzIyNCw3IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3Qp
OgogICAgICAgICAgICAgICAgIGlmIHNlbGYuc2hvdWxkX3NraXBfZmlsZShmaWxlbmFtZSk6CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgICAgICBmdWxscGF0aCA9
IG9zLnBhdGguam9pbihyb290LCBmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBmdWxscGF0aCA9
IHNlbGYuZmlsZXN5c3RlbS5qb2luKHJvb3QsIGZpbGVuYW1lKQogCiAgICAgICAgICAgICAgICAg
bWltZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShmdWxscGF0aCkKICAgICAgICAgICAgICAg
ICBpZiBub3QgJ2h0bWwnIGluIHN0cihtaW1ldHlwZVswXSkgYW5kIG5vdCAnYXBwbGljYXRpb24v
eGh0bWwreG1sJyBpbiBzdHIobWltZXR5cGVbMF0pIGFuZCBub3QgJ2FwcGxpY2F0aW9uL3htbCcg
aW4gc3RyKG1pbWV0eXBlWzBdKToKQEAgLTIzOCw2ICsyNjgsMTEgQEAgY2xhc3MgVGVzdEltcG9y
dGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfbGlzdC5hcHBlbmQoeydk
aXJuYW1lJzogcm9vdCwgJ2NvcHlfbGlzdCc6IGNvcHlfbGlzdCwKICAgICAgICAgICAgICAgICAg
ICAgJ3JlZnRlc3RzJzogcmVmdGVzdHMsICdqc3Rlc3RzJzoganN0ZXN0cywgJ3RvdGFsX3Rlc3Rz
JzogdG90YWxfdGVzdHN9KQogCisgICAgZGVmIHNob3VsZF9jb252ZXJ0X3Rlc3RfaGFybmVzc19s
aW5rcyhzZWxmLCB0ZXN0KToKKyAgICAgICAgaWYgc2VsZi5faW1wb3J0aW5nX2Rvd25sb2FkZWRf
dGVzdHM6CisgICAgICAgICAgICByZXR1cm4gbm90IHRlc3Quc3RhcnRzd2l0aCgnd2ViLXBsYXRm
b3JtLXRlc3RzJykKKyAgICAgICAgcmV0dXJuIHNlbGYub3B0aW9ucy5jb252ZXJ0X3Rlc3RfaGFy
bmVzc19saW5rcworCiAgICAgZGVmIGltcG9ydF90ZXN0cyhzZWxmKToKICAgICAgICAgdG90YWxf
aW1wb3J0ZWRfdGVzdHMgPSAwCiAgICAgICAgIHRvdGFsX2ltcG9ydGVkX3JlZnRlc3RzID0gMApA
QCAtMjYxLDcgKzI5Niw3IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICAg
ICAgb3JpZ19wYXRoID0gZGlyX3RvX2NvcHlbJ2Rpcm5hbWUnXQogCiAgICAgICAgICAgICBzdWJw
YXRoID0gb3MucGF0aC5yZWxwYXRoKG9yaWdfcGF0aCwgc2VsZi5zb3VyY2VfZGlyZWN0b3J5KQot
ICAgICAgICAgICAgbmV3X3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXN0aW5hdGlvbl9kaXJl
Y3RvcnksIHN1YnBhdGgpCisgICAgICAgICAgICBuZXdfcGF0aCA9IHNlbGYuZmlsZXN5c3RlbS5q
b2luKHNlbGYuZGVzdGluYXRpb25fZGlyZWN0b3J5LCBzdWJwYXRoKQogCiAgICAgICAgICAgICBp
ZiBub3Qob3MucGF0aC5leGlzdHMobmV3X3BhdGgpKToKICAgICAgICAgICAgICAgICBvcy5tYWtl
ZGlycyhuZXdfcGF0aCkKQEAgLTI4MSw3ICszMTYsNyBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCclcyBub3QgZm91bmQuIFBv
c3NpYmxlIGVycm9yIGluIHRoZSB0ZXN0LicsIG9yaWdfZmlsZXBhdGgpCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgICAgICBuZXdfZmlsZXBhdGggPSBvcy5wYXRo
LmpvaW4obmV3X3BhdGgsIGZpbGVfdG9fY29weVsnZGVzdCddKQorICAgICAgICAgICAgICAgIG5l
d19maWxlcGF0aCA9IHNlbGYuZmlsZXN5c3RlbS5qb2luKG5ld19wYXRoLCBmaWxlX3RvX2NvcHlb
J2Rlc3QnXSkKICAgICAgICAgICAgICAgICBpZiAncmVmZXJlbmNlX3N1cHBvcnRfaW5mbycgaW4g
ZmlsZV90b19jb3B5LmtleXMoKSBhbmQgZmlsZV90b19jb3B5WydyZWZlcmVuY2Vfc3VwcG9ydF9p
bmZvJ10gIT0ge306CiAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZV9zdXBwb3J0X2luZm8g
PSBmaWxlX3RvX2NvcHlbJ3JlZmVyZW5jZV9zdXBwb3J0X2luZm8nXQogICAgICAgICAgICAgICAg
IGVsc2U6CkBAIC0zMDQsMTQgKzMzOSwxNCBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToK
ICAgICAgICAgICAgICAgICBtaW1ldHlwZSA9IG1pbWV0eXBlcy5ndWVzc190eXBlKG9yaWdfZmls
ZXBhdGgpCiAgICAgICAgICAgICAgICAgaWYgJ2h0bWwnIGluIHN0cihtaW1ldHlwZVswXSkgb3Ig
J3htbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSAgb3IgJ2NzcycgaW4gc3RyKG1pbWV0eXBlWzBdKToK
ICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgY29udmVy
dGVkX2ZpbGUgPSBjb252ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lPW9yaWdfZmls
ZXBhdGgsIHJlZmVyZW5jZV9zdXBwb3J0X2luZm89cmVmZXJlbmNlX3N1cHBvcnRfaW5mbywgY29u
dmVydF90ZXN0X2hhcm5lc3NfbGlua3M9c2VsZi5vcHRpb25zLmNvbnZlcnRfdGVzdF9oYXJuZXNz
X2xpbmtzKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkX2ZpbGUgPSBjb252ZXJ0
X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lPW9yaWdfZmlsZXBhdGgsIHJlZmVyZW5jZV9z
dXBwb3J0X2luZm89cmVmZXJlbmNlX3N1cHBvcnRfaW5mbywgY29udmVydF90ZXN0X2hhcm5lc3Nf
bGlua3M9c2VsZi5zaG91bGRfY29udmVydF90ZXN0X2hhcm5lc3NfbGlua3Moc3VicGF0aCkpCiAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2cu
d2FybignRmFpbGVkIGNvbnZlcnRpbmcgJXMnLCBvcmlnX2ZpbGVwYXRoKQogICAgICAgICAgICAg
ICAgICAgICAgICAgZmFpbGVkX2NvbnZlcnNpb25fZmlsZXMuYXBwZW5kKG9yaWdfZmlsZXBhdGgp
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWRfZmlsZSA9IE5vbmUKIAogICAgICAg
ICAgICAgICAgICAgICBpZiBub3QgY29udmVydGVkX2ZpbGU6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVwYXRoKSAgIyBUaGUg
ZmlsZSB3YXMgdW5tb2RpZmllZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZXN5
c3RlbS5jb3B5ZmlsZShvcmlnX2ZpbGVwYXRoLCBuZXdfZmlsZXBhdGgpICAjIFRoZSBmaWxlIHdh
cyB1bm1vZGlmaWVkLgogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIHByZWZpeGVkX3Byb3BlcnR5IGluIGNvbnZlcnRlZF9maWxlWzBdOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3ByZWZpeGVkX3Byb3BlcnRpZXMuc2V0ZGVm
YXVsdChwcmVmaXhlZF9wcm9wZXJ0eSwgMCkKQEAgLTMyOSw3ICszNjQsNyBAQCBjbGFzcyBUZXN0
SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUo
Y29udmVydGVkX2ZpbGVbMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRmaWxlLmNsb3Nl
KCkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29w
eWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVwYXRoKQorICAgICAgICAgICAgICAgICAgICBz
ZWxmLmZpbGVzeXN0ZW0uY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVwYXRoKQogCiAg
ICAgICAgICAgICAgICAgY29waWVkX2ZpbGVzLmFwcGVuZChuZXdfZmlsZXBhdGgucmVwbGFjZShz
ZWxmLl93ZWJraXRfcm9vdCwgJycpKQogCkBAIC0zNjAsNyArMzk1LDcgQEAgY2xhc3MgVGVzdElt
cG9ydGVyKG9iamVjdCk6CiAKICAgICAgICAgcHJldmlvdXNfZmlsZV9saXN0ID0gW10KIAotICAg
ICAgICBpbXBvcnRfbG9nX2ZpbGUgPSBvcy5wYXRoLmpvaW4oaW1wb3J0X2RpcmVjdG9yeSwgJ3cz
Yy1pbXBvcnQubG9nJykKKyAgICAgICAgaW1wb3J0X2xvZ19maWxlID0gc2VsZi5maWxlc3lzdGVt
LmpvaW4oaW1wb3J0X2RpcmVjdG9yeSwgJ3czYy1pbXBvcnQubG9nJykKICAgICAgICAgaWYgbm90
IG9zLnBhdGguZXhpc3RzKGltcG9ydF9sb2dfZmlsZSk6CiAgICAgICAgICAgICByZXR1cm4KIApA
QCAtMzc0LDcgKzQwOSw3IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICBk
ZWxldGVkX2ZpbGVzID0gc2V0KHByZXZpb3VzX2ZpbGVfbGlzdCkgLSBzZXQobmV3X2ZpbGVfbGlz
dCkKICAgICAgICAgZm9yIGRlbGV0ZWRfZmlsZSBpbiBkZWxldGVkX2ZpbGVzOgogICAgICAgICAg
ICAgX2xvZy5pbmZvKCdEZWxldGluZyBmaWxlIHJlbW92ZWQgZnJvbSB0aGUgVzNDIHJlcG86ICVz
JywgZGVsZXRlZF9maWxlKQotICAgICAgICAgICAgZGVsZXRlZF9maWxlID0gb3MucGF0aC5qb2lu
KHNlbGYuX3dlYmtpdF9yb290LCBkZWxldGVkX2ZpbGUpCisgICAgICAgICAgICBkZWxldGVkX2Zp
bGUgPSBzZWxmLmZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJraXRfcm9vdCwgZGVsZXRlZF9maWxl
KQogICAgICAgICAgICAgb3MucmVtb3ZlKGRlbGV0ZWRfZmlsZSkKIAogICAgICAgICBpbXBvcnRf
bG9nLmNsb3NlKCkKQEAgLTM4NCwxMyArNDE5LDE0IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmpl
Y3QpOgogCiAgICAgICAgIG5vdyA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCiAKLSAgICAgICAg
aW1wb3J0X2xvZyA9IG9wZW4ob3MucGF0aC5qb2luKGltcG9ydF9kaXJlY3RvcnksICd3M2MtaW1w
b3J0LmxvZycpLCAndycpCisgICAgICAgIGltcG9ydF9sb2cgPSBvcGVuKHNlbGYuZmlsZXN5c3Rl
bS5qb2luKGltcG9ydF9kaXJlY3RvcnksICd3M2MtaW1wb3J0LmxvZycpLCAndycpCiAgICAgICAg
IGltcG9ydF9sb2cud3JpdGUoJ1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LlxuJykKICAgICAgICAgaW1wb3J0X2xvZy53cml0
ZSgnRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJraXQuXG4nKQotICAg
ICAgICBpbXBvcnRfbG9nLndyaXRlKCdJbnN0ZWFkLCBwdXNoIGNoYW5nZXMgdG8gdGhlIFczQyBD
U1MgcmVwbzpcbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0luc3RlYWQsIHB1c2ggY2hh
bmdlcyB0byB0aGUgY29ycmVzcG9uZGluZyBDU1MgcmVwb3NpdG9yeTpcbicpCiAgICAgICAgIGlt
cG9ydF9sb2cud3JpdGUoJ1x0aHR0cDovL2hnLmNzc3dnLm9yZy90ZXN0XG4nKQotICAgICAgICBp
bXBvcnRfbG9nLndyaXRlKCdPciBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFczQyBDU1Mg
Z2l0aHViOlxuJykKLSAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnXHRodHRwczovL2dpdGh1Yi5j
b20vdzNjL2Nzc3dnLXRlc3RcblxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnT3IgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXM0MgQ1NTIG9yIFdQVCBnaXRodWI6XG4nKQorICAg
ICAgICBpbXBvcnRfbG9nLndyaXRlKCdcdGh0dHBzOi8vZ2l0aHViLmNvbS93M2MvY3Nzd2ctdGVz
dFxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnXHRodHRwczovL2dpdGh1Yi5jb20vdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0c1xuXG4nKQogICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdUaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYmtpdCB0byByZWlt
cG9ydFxuXG4nKQogICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdEbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGVcblxuJykKICAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tXG4nKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9p
bXBvcnRlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1w
b3J0ZXJfdW5pdHRlc3QucHkKaW5kZXggNDM2Y2JhYjUzNmJhNWRhNDY1ZTEwOTQ3YjBlNTM3OTAy
MTk3N2EwNS4uNTZkMTg1NzliNDRhZGEyZWZhZDUzNDBhZDRiY2M2ODI3Y2ZkYWRkZCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0
LnB5CkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIFRlc3RJbXBvcnRlclRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBob3N0LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKGV4Y2VwdGlv
bj1PU0Vycm9yKCkpCiAgICAgICAgIGhvc3QuZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKGZp
bGVzPUZBS0VfRklMRVMpCiAKLSAgICAgICAgaW1wb3J0ZXIgPSBUZXN0SW1wb3J0ZXIoaG9zdCwg
RkFLRV9TT1VSQ0VfRElSLCBvcHRwYXJzZS5WYWx1ZXMoeyJvdmVyd3JpdGUiOiBGYWxzZSwgJ2Rl
c3RpbmF0aW9uJzogJ3czYycsICd0ZXN0X3BhdGhzJzogW0ZBS0VfVEVTVF9QQVRIXX0pKQorICAg
ICAgICBpbXBvcnRlciA9IFRlc3RJbXBvcnRlcihob3N0LCBGQUtFX1NPVVJDRV9ESVIsIG9wdHBh
cnNlLlZhbHVlcyh7Im92ZXJ3cml0ZSI6IEZhbHNlLCAgJ2Rlc3RpbmF0aW9uJzogJ3czYycsICd0
ZXN0X3BhdGhzJzogW0ZBS0VfVEVTVF9QQVRIXX0pKQogCiAgICAgICAgIG9jID0gT3V0cHV0Q2Fw
dHVyZSgpCiAgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCmluZGV4IDVmNTQxMjdlMzFmMDk4NzRkY2Q5MDQ5N2E0NGExOTA5ZDQ1ODE0ZTcuLjUz
M2Q4Y2NiMGI1YzA0ZGZiMzM5OGVjNmYzYWViOWQ5NzNiN2I5ZGIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTAxLTEzICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgV2ViS2l0IHRlc3QgaW5m
cmFzdHJ1Y3R1cmUgc2hvdWxkIGF1dG9tYXRlIHRoZSBwcm9jZXNzIG9mIGNsb25pbmcgVzNDIHRl
c3Qgc3VpdGUgYW5kIGltcG9ydGluZyB0ZXN0cyBmcm9tIGl0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ3NjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBmaWxlcyBkZWZpbmVzIHRoZSBydWxl
cyB1c2VkIGJ5IFRlc3REb3dubG9hZGVyIHRvIGZpbHRlciBvdXQgVzNDIHRlc3Qgc3VpdGVzLgor
CisgICAgICAgICogcmVzb3VyY2VzL0ltcG9ydEV4cGVjdGF0aW9uczogQWRkZWQuCisgICAgICAg
ICogcmVzb3VyY2VzL0luZnJhc3RydWN0dXJlUGF0aHM6IEFkZGVkLgorCiAyMDE0LTExLTE0ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1w
b3J0IHczYyB0ZXN0cyBmb3IgY2FudmFzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvcmVzb3VyY2VzL0ltcG9ydEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9yZXNvdXJjZXMvSW1wb3J0RXhwZWN0YXRpb25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NzZiMWQ1Y2Mz
NDgwZjY1Yjg3MWYyMGUxOTljOWUwMDRjMjVkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL0ltcG9ydEV4cGVjdGF0aW9ucwpAQCAtMCwwICsx
LDExMyBAQAorY3Nzd2ctdGVzdHMvY29tcG9zaXRpbmctMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMv
Y3NzLWFsaWduLTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1hbmltYXRpb25zLTEgWyBTa2lw
IF0KK2Nzc3dnLXRlc3RzL2Nzcy1iYWNrZ3JvdW5kcy0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9j
c3MtYm94LTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1icmVhay0zIFsgU2tpcCBdCitjc3N3
Zy10ZXN0cy9jc3MtY29sb3ItMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWNvbmRpdGlvbmFs
LTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1jb3VudGVyLXN0eWxlcy0zIFsgU2tpcCBdCitj
c3N3Zy10ZXN0cy9jc3MtZXhjbHVzaW9ucy0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtZmxl
eGJveC0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtZm9udHMtMyBbIFNraXAgXQorY3Nzd2ct
dGVzdHMvY3NzLWdjcG0tMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWdyaWQtMSBbIFNraXAg
XQorY3Nzd2ctdGVzdHMvY3NzLWltYWdlcy0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtbGlz
dHMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLW1hc2tpbmctMSBbIFNraXAgXQorY3Nzd2ct
dGVzdHMvY3NzLW11bHRpY29sLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1uYW1lc3BhY2Vz
LTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1wYWdlLTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3Rz
L2Nzcy1yZWdpb25zLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1ydWJ5LTEgWyBTa2lwIF0K
K2Nzc3dnLXRlc3RzL2Nzcy1zaGFwZXMtMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXNwZWVj
aC0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3Mtc3R5bGUtYXR0ci0xIFsgU2tpcCBdCitjc3N3
Zy10ZXN0cy9jc3Mtc3ludGF4LTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy10YWJsZXMtMyBb
IFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXRleHQtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3Nz
LXRleHQtZGVjb3ItMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXRyYW5zZm9ybXMtMSBbIFNr
aXAgXQorY3Nzd2ctdGVzdHMvY3NzLXRyYW5zaXRpb25zLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3Rz
L2Nzcy11aS0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtdmFsdWVzLTMgWyBTa2lwIF0KK2Nz
c3dnLXRlc3RzL2Nzcy12YXJpYWJsZXMtMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXdyaXRp
bmctbW9kZXMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzMSBbIFNraXAgXQorY3Nzd2ctdGVz
dHMvY3NzMjEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzc29tLTEgWyBTa2lwIF0KK2Nzc3dnLXRl
c3RzL2Nzc29tLXZpZXctMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvZmlsdGVycy0xIFsgU2tpcCBd
Citjc3N3Zy10ZXN0cy9mb250cyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvZ2VvbWV0cnktMSBbIFNr
aXAgXQorY3Nzd2ctdGVzdHMvbWVkaWFxdWVyaWVzLTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL3Nl
bGVjdG9ycy0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9zZWxlY3RvcnMtNCBbIFNraXAgXQorY3Nz
d2ctdGVzdHMvdmVuZG9yLWltcG9ydHMgWyBTa2lwIF0KKword2ViLXBsYXRmb3JtLXRlc3RzLzJk
Y29udGV4dCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL0RPTUV2ZW50cyBbIFNraXAgXQor
d2ViLXBsYXRmb3JtLXRlc3RzL0ZpbGVBUEkgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9J
bmRleGVkREIgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkgWyBTa2lw
IF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0
cy9YTUxIdHRwUmVxdWVzdCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2FtYmllbnQtbGln
aHQgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9hbmltYXRpb24tdGltaW5nIFsgU2tpcCBd
Cit3ZWItcGxhdGZvcm0tdGVzdHMvYXBwLXVyaSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3Rz
L2JhdHRlcnktc3RhdHVzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9jb3JzIFsgU2tpcCBdCit3
ZWItcGxhdGZvcm0tdGVzdHMvY3VzdG9tLWVsZW1lbnRzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0t
dGVzdHMvZG9jcyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2RvbSBbIFNraXAgXQord2Vi
LXBsYXRmb3JtLXRlc3RzL2RvbXBhcnNpbmcgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9k
b214cGF0aCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2VuY29kaW5nIFsgU2tpcCBdCit3
ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2UgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0
cy9leHQteGh0bWwtcHViaWQgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9nZW9sb2NhdGlv
bi1BUEkgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9nYW1lcGFkIFsgU2tpcCBdCit3ZWIt
cGxhdGZvcm0tdGVzdHMvaHItdGltZSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwg
WyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sLWltcG9ydHMgWyBTa2lwIF0KK3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sLWxvbmdkZXNjIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC1tZWRpYS1jYXB0dXJlIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvaHR0cCBbIFNr
aXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2pzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMv
bWVkaWEgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UgWyBTa2lwIF0K
K3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtc3RyZWFtcyBbIFNraXAgXQord2ViLXBs
YXRmb3JtLXRlc3RzL21pY3JvZGF0YSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL25hdmln
YXRpb24tdGltaW5nIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvbm90aWZpY2F0aW9ucyBb
IFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL29sZC10ZXN0cyBbIFNraXAgXQord2ViLXBsYXRm
b3JtLXRlc3RzL3BhZ2UtdmlzaWJpbGl0eSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3Bl
cmZvcm1hbmNlLXRpbWVsaW5lIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvcG9pbnRlcmV2
ZW50cyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3BvaW50ZXJsb2NrIFsgU2tpcCBdCit3
ZWItcGxhdGZvcm0tdGVzdHMvcHJvZ3Jlc3MtZXZlbnRzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0t
dGVzdHMvcHJveGltaXR5IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvcXVpcmtzLW1vZGUg
WyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9yZXNvdXJjZS10aW1pbmcgWyBTa2lwIF0KK3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zZWxlY3RvcnMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZWxlY3RvcnMtYXBpIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvc2hhZG93LWRvbSBbIFNraXAgXQord2ViLXBs
YXRmb3JtLXRlc3RzL3N1YnJlc291cmNlLWludGVncml0eSBbIFNraXAgXQord2ViLXBsYXRmb3Jt
LXRlc3RzL3RvdWNoLWV2ZW50cyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3R5cGVkYXJy
YXlzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvdXJsIFsgU2tpcCBdCit3ZWItcGxhdGZv
cm0tdGVzdHMvdXNlci10aW1pbmcgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy92aWJyYXRp
b24gWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucyBbIFNraXAgXQor
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMv
d2ViZHJpdmVyIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvd2ViZ2wgWyBTa2lwIF0KK3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzIFsgU2tpcCBd
Cit3ZWItcGxhdGZvcm0tdGVzdHMvd2Vic3RvcmFnZSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnZ0dCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMgWyBTa2lwIF0K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9JbmZyYXN0
cnVjdHVyZVBhdGhzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9JbmZyYXN0
cnVjdHVyZVBhdGhzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzZjk3NGRhMDM0YzU0MGIzMjk4N2ZiZmRlODQ2YzBh
N2IzYjMxNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVz
b3VyY2VzL0luZnJhc3RydWN0dXJlUGF0aHMKQEAgLTAsMCArMSwxNCBAQAord2ViLXBsYXRmb3Jt
LXRlc3RzL2NvbmZvcm1hbmNlLWNoZWNrZXJzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMv
b2xkLXRlc3RzIFsgU2tpcCBdCisKK3dlYi1wbGF0Zm9ybS10ZXN0cy9jb21tb24gWyBQYXNzIF0K
K3dlYi1wbGF0Zm9ybS10ZXN0cy9mb250cyBbIFBhc3MgXQord2ViLXBsYXRmb3JtLXRlc3RzL2lt
YWdlcyBbIFBhc3MgXQord2ViLXBsYXRmb3JtLXRlc3RzL3Jlc291cmNlcyBbIFBhc3MgXQord2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzIFsgUGFzcyBdCit3ZWItcGxhdGZvcm0tdGVzdHMvY29uZmln
LmRlZmF1bHQuanNvbiBbIFBhc3MgXQord2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZlLnB5IFsgUGFz
cyBdCisKK2Nzc3dnLXRlc3RzL3dvcmstaW4tcHJvZ3Jlc3MgWyBTa2lwIF0KK2Nzc3dnLXRlc3Rz
L3Rvb2xzIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9zdXBwb3J0IFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245166</attachid>
            <date>2015-01-22 14:51:34 -0800</date>
            <delta_ts>2015-01-26 06:51:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134764-20150122235140.patch</filename>
            <type>text/plain</type>
            <size>29140</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4OTI5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2I4MjBhM2Q4MzYyYzVjNDEwMGZmNmM2YTdkYTdjYmVi
YjI3MGUzYy4uMmQ4YWRmMzhkNjY1ZDRhNjZiZTI4NTFjNDBlMjhjYTNhM2I1MzZhYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1
IEBACisyMDE1LTAxLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGF1dG9tYXRl
IHRoZSBwcm9jZXNzIG9mIGNsb25pbmcgVzNDIHRlc3Qgc3VpdGUgYW5kIGltcG9ydGluZyB0ZXN0
cyBmcm9tIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQ3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0RG93bmxvYWRlciBpcyBpbnRyb2R1Y2VkIHRvIGRvd25sb2FkIFczQyB0ZXN0cyBmcm9t
IHRoZSBvZmZpY2lhbAorICAgICAgICBXM0MgdGVzdHMgcmVwb3NpdG9yaWVzIChodHRwczovL2dp
dGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQKKyAgICAgICAgYW5kIGh0dHBzOi8v
Z2l0aHViLmNvbS93M2MvY3Nzd2ctdGVzdC5naXQpLgorICAgICAgICBUZXN0RG93bmxvYWRlciBj
bG9uZXMgdGhlIHJlcG9zaXRvcmllcyBhbmQgY2hlY2tvdXQgYSBkZWRpY2F0ZWQKKyAgICAgICAg
dmVyc2lvbiBvZiB0aGUgdGVzdHMsIGRlZmluZWQgaW4KKyAgICAgICAgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3Jlc291cmNlcy9XUFRWZXJzaW9uIGFuZAorICAgICAgICBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvcmVzb3VyY2VzL0NTU1ZlcnNpb24uCisKKyAgICAgICAgU2ltaWxhcmx5IHRv
IGh0dHBzOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMTQ4MTczMDE2LAorICAgICAgICBUZXN0
RG93bmxvYWRlciBjb3BpZXMgcGFydCBvZiB0aGUgZmlsZXMgYmFzZWQgb24gdGhlIHJ1bGVzCisg
ICAgICAgIGRlZmluZWQgaW4gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9JbXBv
cnRFeHBlY3RhdGlvbnMuCisKKyAgICAgICAgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291
cmNlcy9JbmZyYXN0cnVjdHVyZVBhdGhzIGlzIGludHJvZHVjZWQKKyAgICAgICAgdG8gZW5zdXJl
IGluZnJhc3RydWN0dXJlIGRpcmVjdG9yaWVzIGFyZSBhbHdheXMgaW1wb3J0ZWQuIEl0IGlzIGFs
c28gdXNlZAorICAgICAgICB0byBlbnN1cmUgdGhhdCBydW4td2Via2l0LXRlc3RzIHdpbGwgbm90
IHJ1biB0ZXN0cyB3aXRoaW4gdGhlc2UgcGF0aHMuCisKKyAgICAgICAgVGVzdERvd25sb2FkZXIg
aXMgdXNlZCBieSBUZXN0SW1wb3J0ZXIgd2hlbiBubyBzb3VyY2UgZGlyZWN0b3J5IGlzIHByb3Zp
ZGVkLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9kb3dubG9hZGVyLnB5
OiBBZGRlZC4KKyAgICAgICAgKFRlc3REb3dubG9hZGVyKToKKyAgICAgICAgKFRlc3REb3dubG9h
ZGVyLmRlZmF1bHRfb3B0aW9ucyk6CisgICAgICAgIChUZXN0RG93bmxvYWRlci5fX2luaXRfXyk6
CisgICAgICAgIChUZXN0RG93bmxvYWRlci5fcnVuX2NvbW1hbmQpOgorICAgICAgICAoVGVzdERv
d25sb2FkZXIuZ2l0X2Nsb25lKToKKyAgICAgICAgKFRlc3REb3dubG9hZGVyLmdpdF9mZXRjaCk6
CisgICAgICAgIChUZXN0RG93bmxvYWRlci5naXRfY2hlY2tvdXQpOgorICAgICAgICAoVGVzdERv
d25sb2FkZXIudGVzdHNfdmVyc2lvbik6CisgICAgICAgIChUZXN0RG93bmxvYWRlci5jaGVja291
dF90ZXN0cyk6CisgICAgICAgIChUZXN0RG93bmxvYWRlci5faW5pdF9wYXRoc19mcm9tX2V4cGVj
dGF0aW9ucyk6CisgICAgICAgIChUZXN0RG93bmxvYWRlci5fc2hvdWxkX2NvcHkpOgorICAgICAg
ICAoVGVzdERvd25sb2FkZXIuX2FkZF90ZXN0X3N1aXRlX3BhdGhzKToKKyAgICAgICAgKFRlc3RE
b3dubG9hZGVyLl9lbXB0eV9kaXJlY3RvcnkpOgorICAgICAgICAoVGVzdERvd25sb2FkZXIuY29w
eV90ZXN0cyk6CisgICAgICAgIChUZXN0RG93bmxvYWRlci5kb3dubG9hZF90ZXN0cyk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5OgorICAgICAgICAobWFpbik6IE1h
ZGUgc291cmNlIGRpcmVjdG9yeSBwYXJhbWV0ZXIgb3B0aW9uYWwuCisgICAgICAgIChwYXJzZV9h
cmdzKTogQWRkZWQgbm8tZmV0Y2ggYW5kIGltcG9ydC1hbGwgb3B0aW9ucy4KKyAgICAgICAgKFRl
c3RJbXBvcnRlci5kb19pbXBvcnQpOgorICAgICAgICAoVGVzdEltcG9ydGVyLnRlc3RfZG93bmxv
YWRlcik6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuc2hvdWxkX2tlZXBfc3ViZGlyKToKKyAgICAg
ICAgKFRlc3RJbXBvcnRlci5zaG91bGRfY29udmVydF90ZXN0X2hhcm5lc3NfbGlua3MpOgorICAg
ICAgICAoVGVzdEltcG9ydGVyLmltcG9ydF90ZXN0cyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIu
d3JpdGVfaW1wb3J0X2xvZyk6CisKIDIwMTUtMDEtMjIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIHJ1bi13ZWJraXQtdGVzdHMgLS1pb3Mtc2ltIGRp
ZXMgd2l0aCBhbiBlcnJvcjsgZmFpbHMgdG8gcGFyc2UgQXBwbGUgSW50ZXJuYWwKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZG93bmxvYWRlci5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZG93bmxvYWRlci5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODZk
YzFiY2NhOTdiOTY4NjgzY2FkZGZiZGFjY2ViYmIwNGQ3MDg0Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9kb3dubG9hZGVyLnB5CkBAIC0wLDAgKzEs
MTY5IEBACisjIENvcHlyaWdodCAoYykgMjAxNCwgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBu
YW1lcyBvZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisiIiIKKyBUaGlzIHNjcmlwdCBkb3dubG9hZHMgVzNDIHRlc3Qg
cmVwb3NpdG9yaWVzLgorIiIiCisKK2ltcG9ydCBsb2dnaW5nCisKK2Zyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21t
b24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0RmluZGVyCitmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMudGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0IFRlc3RFeHBlY3RhdGlvblBh
cnNlcgorCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3MgVGVz
dERvd25sb2FkZXIob2JqZWN0KToKKworICAgIENTU19OQU1FID0gJ2Nzc3dnLXRlc3RzJworICAg
IENTU19VUkwgPSAnaHR0cHM6Ly9naXRodWIuY29tL3czYy9jc3N3Zy10ZXN0LmdpdCcKKworICAg
IFdQVF9OQU1FID0gJ3dlYi1wbGF0Zm9ybS10ZXN0cycKKyAgICBXUFRfVVJMID0gJ2h0dHBzOi8v
Z2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCcKKworICAgIEBzdGF0aWNtZXRo
b2QKKyAgICBkZWYgZGVmYXVsdF9vcHRpb25zKCk6CisgICAgICAgIG9wdGlvbnMgPSB0eXBlKCcn
LCAoKSwge30pCisgICAgICAgIG9wdGlvbnMuZmV0Y2ggPSBUcnVlCisgICAgICAgIG9wdGlvbnMu
dmVyYm9zZSA9IEZhbHNlCisgICAgICAgIG9wdGlvbnMuaW1wb3J0X2FsbCA9IEZhbHNlCisgICAg
ICAgIG9wdGlvbnMuZG93bmxvYWRfY3Nzd2dfdGVzdHMgPSBUcnVlCisgICAgICAgIG9wdGlvbnMu
ZG93bmxvYWRfd2ViX3BsYXRmb3JtX3Rlc3RzID0gVHJ1ZQorICAgICAgICByZXR1cm4gb3B0aW9u
cworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcG9zaXRvcnlfZGlyZWN0b3J5LCBob3N0LCBv
cHRpb25zKToKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgc2VsZi5f
aG9zdCA9IGhvc3QKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGhvc3QuZmlsZXN5c3RlbQor
ICAgICAgICBzZWxmLl90ZXN0X3N1aXRlcyA9IFtdCisKKyAgICAgICAgc2VsZi5yZXBvc2l0b3J5
X2RpcmVjdG9yeSA9IHJlcG9zaXRvcnlfZGlyZWN0b3J5CisgICAgICAgIHNlbGYud2ViX3BsYXRm
b3JtX3Rlc3RzX2RpcmVjdG9yeSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihyZXBvc2l0b3J5X2Rp
cmVjdG9yeSwgc2VsZi5XUFRfTkFNRSkKKyAgICAgICAgc2VsZi5jc3N3Z190ZXN0c19kaXJlY3Rv
cnkgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4ocmVwb3NpdG9yeV9kaXJlY3RvcnksIHNlbGYuQ1NT
X05BTUUpCisKKyAgICAgICAgd2Via2l0X2ZpbmRlciA9IFdlYktpdEZpbmRlcihzZWxmLl9maWxl
c3lzdGVtKQorICAgICAgICBzZWxmLmxheW91dF90ZXN0c193M2NfcmVzb3VyY2VzX3BhdGggPSB3
ZWJraXRfZmluZGVyLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnLCAnaW1wb3J0
ZWQnLCAndzNjJywgJ3Jlc291cmNlcycpCisKKyAgICAgICAgc2VsZi5wYXRoc190b19za2lwID0g
W10KKyAgICAgICAgc2VsZi5wYXRoc190b19pbXBvcnQgPSBbXQorICAgICAgICBzZWxmLl9pbml0
X3BhdGhzX2Zyb21fZXhwZWN0YXRpb25zKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91
dF90ZXN0c193M2NfcmVzb3VyY2VzX3BhdGgsICdJbmZyYXN0cnVjdHVyZVBhdGhzJykpCisgICAg
ICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmltcG9ydF9hbGw6CisgICAgICAgICAgICBzZWxmLl9p
bml0X3BhdGhzX2Zyb21fZXhwZWN0YXRpb25zKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxh
eW91dF90ZXN0c193M2NfcmVzb3VyY2VzX3BhdGgsICdJbXBvcnRFeHBlY3RhdGlvbnMnKSkKKwor
ICAgIGRlZiBfcnVuX2NvbW1hbmQoc2VsZiwgYXJndW1lbnRzKToKKyAgICAgICAgRXhlY3V0aXZl
KCkucnVuX2NvbW1hbmQoYXJndW1lbnRzLCByZXR1cm5fc3RkZXJyPUZhbHNlKQorCisgICAgZGVm
IGdpdF9jbG9uZShzZWxmLCB1cmwsIGRpcmVjdG9yeSk6CisgICAgICAgIGFyZ3VtZW50cyA9IFsn
Z2l0JywgJ2Nsb25lJywgJy0tcmVjdXJzaXZlJywgdXJsLCBkaXJlY3RvcnldCisgICAgICAgIHNl
bGYuX3J1bl9jb21tYW5kKGFyZ3VtZW50cykKKworICAgIGRlZiBnaXRfZmV0Y2goc2VsZiwgZGly
ZWN0b3J5KToKKyAgICAgICAgYXJndW1lbnRzID0gWydnaXQnLCAnLUMnLCBkaXJlY3RvcnksICdw
dWxsJ10KKyAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQoYXJndW1lbnRzKQorCisgICAgZGVmIGdp
dF9jaGVja291dChzZWxmLCBkaXJlY3RvcnksIHZlcnNpb24pOgorICAgICAgICBhcmd1bWVudHMg
PSBbJ2dpdCcsICctQycsIGRpcmVjdG9yeSwgJ2NoZWNrb3V0JywgdmVyc2lvbl0KKyAgICAgICAg
aWYgbm90IHNlbGYuX29wdGlvbnMudmVyYm9zZToKKyAgICAgICAgICAgIGFyZ3VtZW50cyArPSBb
Jy1xJ10KKyAgICAgICAgc2VsZi5fcnVuX2NvbW1hbmQoYXJndW1lbnRzKQorCisgICAgZGVmIHRl
c3RzX3ZlcnNpb24oc2VsZiwgbmFtZSk6CisgICAgICAgIHZlcnNpb25fZmlsZV9wYXRoID0gc2Vs
Zi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX3czY19yZXNvdXJjZXNfcGF0aCwg
bmFtZSArICdWZXJzaW9uJykKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uaXNmaWxl
KHZlcnNpb25fZmlsZV9wYXRoKToKKyAgICAgICAgICAgIF9sb2cud2FybmluZygnVW5hYmxlIHRv
IHJlYWQgJXMnICUgdmVyc2lvbl9maWxlX3BhdGgpCisgICAgICAgICAgICByZXR1cm4gJ21hc3Rl
cicKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUodmVyc2lv
bl9maWxlX3BhdGgpLnN0cmlwKCkKKworICAgIGRlZiBjaGVja291dF90ZXN0cyhzZWxmLCB2ZXJz
aW9uLCB1cmwsIGRpcmVjdG9yeSk6CisgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4
aXN0cyhkaXJlY3RvcnkpOgorICAgICAgICAgICAgX2xvZy5pbmZvKCdDbG9uaW5nICVzIGludG8g
JXMuLi4nICUgKHVybCwgZGlyZWN0b3J5KSkKKyAgICAgICAgICAgIHNlbGYuZ2l0X2Nsb25lKHVy
bCwgZGlyZWN0b3J5KQorICAgICAgICBlbGlmIHNlbGYuX29wdGlvbnMuZmV0Y2ggaXMgVHJ1ZToK
KyAgICAgICAgICAgIF9sb2cuaW5mbygnRmV0Y2hpbmcgJXMuLi4nICUgdXJsKQorICAgICAgICAg
ICAgc2VsZi5naXRfZmV0Y2goZGlyZWN0b3J5KQorICAgICAgICBfbG9nLmluZm8oJ0NoZWNraW5n
IG91dCB2ZXJzaW9uICcgKyB2ZXJzaW9uKQorICAgICAgICBzZWxmLmdpdF9jaGVja291dChkaXJl
Y3RvcnksIHZlcnNpb24pCisKKyAgICBkZWYgX2luaXRfcGF0aHNfZnJvbV9leHBlY3RhdGlvbnMo
c2VsZiwgZmlsZV9wYXRoKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uaXNmaWxl
KGZpbGVfcGF0aCk6CisgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ1VuYWJsZSB0byByZWFkIGlt
cG9ydC1pbml0LXBhdGggZmlsZTogJXMnICUgZmlsZV9wYXRoKQorICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgIHBvcnQgPSBzZWxmLl9ob3N0LnBvcnRfZmFjdG9yeS5nZXQoKQorICAgICAgICBl
eHBlY3RhdGlvbnMgPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKGZpbGVfcGF0aCkK
KyAgICAgICAgcGFyc2VyID0gVGVzdEV4cGVjdGF0aW9uUGFyc2VyKHBvcnQsICgpLCBGYWxzZSkK
KyAgICAgICAgZXhwZWN0YXRpb25fbGluZXMgPSBwYXJzZXIucGFyc2UoZmlsZV9wYXRoLCBleHBl
Y3RhdGlvbnMpCisgICAgICAgIGZvciBsaW5lIGluIGV4cGVjdGF0aW9uX2xpbmVzOgorICAgICAg
ICAgICAgaWYgJ1NLSVAnIGluIGxpbmUubW9kaWZpZXJzOgorICAgICAgICAgICAgICAgIHNlbGYu
cGF0aHNfdG9fc2tpcC5hcHBlbmQobGluZS5uYW1lKQorICAgICAgICAgICAgZWxpZiAnUEFTUycg
aW4gbGluZS5leHBlY3RhdGlvbnM6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRoc190b19pbXBv
cnQuYXBwZW5kKGxpbmUubmFtZSkKKworICAgIGRlZiBfc2hvdWxkX2NvcHkoc2VsZiwgcmVsYXRp
dmVfcGF0aCwgbmFtZSk6CisgICAgICAgIGlmIG5hbWUgPT0gJy5naXQnOgorICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHJlbGF0aXZlX3BhdGggaW4gc2VsZi5wYXRoc190b19z
a2lwOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAg
ICBkZWYgX2FkZF90ZXN0X3N1aXRlX3BhdGhzKHNlbGYsIHRlc3RfcGF0aHMsIGRpcmVjdG9yeSwg
d2Via2l0X3BhdGgpOgorICAgICAgICBmb3IgZGlyZWN0b3J5X25hbWUgaW4gc2VsZi5fZmlsZXN5
c3RlbS5saXN0ZGlyKGRpcmVjdG9yeSk6CisgICAgICAgICAgICBkaXJlY3RvcnlfcGF0aCA9IHNl
bGYuX2ZpbGVzeXN0ZW0uam9pbih3ZWJraXRfcGF0aCwgZGlyZWN0b3J5X25hbWUpCisgICAgICAg
ICAgICBpZiBzZWxmLl9zaG91bGRfY29weShkaXJlY3RvcnlfcGF0aCwgZGlyZWN0b3J5X25hbWUp
OgorICAgICAgICAgICAgICAgIHRlc3RfcGF0aHMuYXBwZW5kKGRpcmVjdG9yeV9wYXRoKQorCisg
ICAgZGVmIF9lbXB0eV9kaXJlY3Rvcnkoc2VsZiwgZGlyZWN0b3J5KToKKyAgICAgICAgaWYgc2Vs
Zi5fZmlsZXN5c3RlbS5leGlzdHMoZGlyZWN0b3J5KToKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVz
eXN0ZW0ucm10cmVlKGRpcmVjdG9yeSkKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5tYXliZV9t
YWtlX2RpcmVjdG9yeShkaXJlY3RvcnkpCisKKyAgICBkZWYgY29weV90ZXN0cyhzZWxmLCBkZXN0
aW5hdGlvbl9kaXJlY3RvcnksIHRlc3RfcGF0aHMpOgorICAgICAgICBzZWxmLl9lbXB0eV9kaXJl
Y3Rvcnkoc2VsZi5fZmlsZXN5c3RlbS5qb2luKGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgc2VsZi5X
UFRfTkFNRSkpCisgICAgICAgIHNlbGYuX2VtcHR5X2RpcmVjdG9yeShzZWxmLl9maWxlc3lzdGVt
LmpvaW4oZGVzdGluYXRpb25fZGlyZWN0b3J5LCBzZWxmLkNTU19OQU1FKSkKKworICAgICAgICBj
b3B5X3BhdGhzID0gW10KKyAgICAgICAgaWYgbGVuKHRlc3RfcGF0aHMpID4gMDoKKyAgICAgICAg
ICAgIGNvcHlfcGF0aHMuZXh0ZW5kKHRlc3RfcGF0aHMpCisgICAgICAgICAgICBjb3B5X3BhdGhz
LmV4dGVuZChzZWxmLnBhdGhzX3RvX2ltcG9ydCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHNlbGYuX2FkZF90ZXN0X3N1aXRlX3BhdGhzKGNvcHlfcGF0aHMsIHNlbGYud2ViX3BsYXRmb3Jt
X3Rlc3RzX2RpcmVjdG9yeSwgc2VsZi5XUFRfTkFNRSkKKyAgICAgICAgICAgIHNlbGYuX2FkZF90
ZXN0X3N1aXRlX3BhdGhzKGNvcHlfcGF0aHMsIHNlbGYuY3Nzd2dfdGVzdHNfZGlyZWN0b3J5LCBz
ZWxmLkNTU19OQU1FKQorCisgICAgICAgIGZvciBwYXRoIGluIGNvcHlfcGF0aHM6CisgICAgICAg
ICAgICBzb3VyY2VfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLnJlcG9zaXRvcnlf
ZGlyZWN0b3J5LCBwYXRoKQorICAgICAgICAgICAgZGVzdGluYXRpb25fcGF0aCA9IHNlbGYuX2Zp
bGVzeXN0ZW0uam9pbihkZXN0aW5hdGlvbl9kaXJlY3RvcnksIHBhdGgpCisgICAgICAgICAgICBp
ZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoc291cmNlX3BhdGgpOgorICAgICAgICAgICAg
ICAgIF9sb2cud2FybmluZygnQ2Fubm90IGNvcHkgJXMnICUgc291cmNlX3BhdGgpCisgICAgICAg
ICAgICBlbGlmIHNlbGYuX2ZpbGVzeXN0ZW0uaXNkaXIoc291cmNlX3BhdGgpOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uY29weXRyZWUoc291cmNlX3BhdGgsIGRlc3RpbmF0aW9u
X3BhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0
ZW0uY29weWZpbGUoc291cmNlX3BhdGgsIGRlc3RpbmF0aW9uX3BhdGgpCisKKyAgICBkZWYgZG93
bmxvYWRfdGVzdHMoc2VsZiwgZGVzdGluYXRpb25fZGlyZWN0b3J5LCB0ZXN0X3BhdGhzPVtdKToK
KyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5kb3dubG9hZF9jc3N3Z190ZXN0czoKKyAgICAgICAg
ICAgIHNlbGYuY2hlY2tvdXRfdGVzdHMoc2VsZi50ZXN0c192ZXJzaW9uKCdDU1MnKSwgc2VsZi5D
U1NfVVJMLCBzZWxmLmNzc3dnX3Rlc3RzX2RpcmVjdG9yeSkKKyAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5kb3dubG9hZF93ZWJfcGxhdGZvcm1fdGVzdHM6CisgICAgICAgICAgICBzZWxmLmNoZWNr
b3V0X3Rlc3RzKHNlbGYudGVzdHNfdmVyc2lvbignV1BUJyksIHNlbGYuV1BUX1VSTCwgc2VsZi53
ZWJfcGxhdGZvcm1fdGVzdHNfZGlyZWN0b3J5KQorICAgICAgICBzZWxmLmNvcHlfdGVzdHMoZGVz
dGluYXRpb25fZGlyZWN0b3J5LCB0ZXN0X3BhdGhzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfaW1wb3J0ZXIucHkKaW5kZXggOTUzNDhlMDNhYjM1MTJmMGUwYmMxZmJkMDc4Mjdi
M2U4MmVjNGUzNS4uMzA5MWVhYzdjMTc1NWYzMjljYzhhYzg5ZDM5MDEyYzg1OWM0YmNlNyAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CkBAIC0xLDYgKzEs
NyBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAKICMgQ29weXJpZ2h0IChDKSAyMDEzIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOCwxNyArMjksMTUgQEAKICMgU1VDSCBEQU1BR0UuCiAKICIiIgot
IFRoaXMgc2NyaXB0IGltcG9ydHMgYSBkaXJlY3Rvcnkgb2YgVzNDIENTUyB0ZXN0cyBpbnRvIFdl
YktpdC4KLQotIFlvdSBtdXN0IGhhdmUgY2hlY2tlZCBvdXQgdGhlIFczQyByZXBvc2l0b3J5IHRv
IHlvdXIgbG9jYWwgZHJpdmUuCisgVGhpcyBzY3JpcHQgaW1wb3J0cyBXM0MgdGVzdHMgaW50byBX
ZWJLaXQsIGVpdGhlciBmcm9tIGEgbG9jYWwgZm9sZGVyIG9yIGJ5IGNsb25pbmcgVzNDIENTUyBh
bmQgV1BUIHJlcG9zaXRvcmllcy4KIAogIFRoaXMgc2NyaXB0IHdpbGwgaW1wb3J0IHRoZSB0ZXN0
cyBpbnRvIFdlYktpdCBmb2xsb3dpbmcgdGhlc2UgcnVsZXM6CiAKLSAgICAtIEFsbCB0ZXN0cyBh
cmUgaW1wb3J0ZWQgaW50byBMYXlvdXRUZXN0cy93M2MKKyAgICAtIEFsbCB0ZXN0cyBhcmUgYnkg
ZGVmYXVsdCBpbXBvcnRlZCBpbnRvIExheW91dFRlc3RzL3czYwogCiAgICAgLSBUZXN0cyB3aWxs
IGJlIGltcG9ydGVkIGludG8gYSBkaXJlY3RvcnkgdHJlZSB0aGF0Ci0gICAgICBtaXJyb3JzIHRo
ZSBDU1MgTWVyY3VyaWFsIHJlcG8uIEZvciBleGFtcGxlLCA8Y3Nzd2dfcmVwb19yb290Pi9jc3My
LjEgaXMgYnJvdWdodCBpbgotICAgICAgYXMgTGF5b3V0VGVzdHMvY3Nzd2cvY3NzMi4xLCBtYWlu
dGFpbmluZyB0aGUgZW50aXJlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdW5kZXIgdGhhdAorICAgICAg
bWlycm9ycyB0aGUgQ1NTIGFuZCBXUFQgcmVwb3NpdG9yaWVzLiBGb3IgZXhhbXBsZSwgPGNzc3dn
X3JlcG9fcm9vdD4vY3NzMi4xIHNob3VsZCBiZSBicm91Z2h0IGluCisgICAgICBhcyBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvY3Nzd2ctdGVzdHMvY3NzMi4xLCBtYWludGFpbmluZyB0aGUgZW50
aXJlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdW5kZXIgdGhhdAogCiAgICAgLSBCeSBkZWZhdWx0LCBv
bmx5IHJlZnRlc3RzIGFuZCBqc3Rlc3QgYXJlIGltcG9ydGVkLiBUaGlzIGNhbiBiZSBvdmVycmlk
ZGVuIHdpdGggYSAtYSBvciAtLWFsbAogICAgICAgYXJndW1lbnQKQEAgLTQ3LDkgKzQ2LDE1IEBA
CiAgICAgICB0aGV5IGFyZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBpZGVhIHRoYXQgcnVubmluZyB0
aGlzIHNjcmlwdCB3b3VsZCByZWZyZXNoIGZpbGVzIHBlcmlvZGljYWxseS4KICAgICAgIFRoaXMg
Y2FuIGFsc28gYmUgb3ZlcnJpZGRlbiBieSBhIC1uIG9yIC0tbm8tb3ZlcndyaXRlIGZsYWcKIAor
ICAgIC0gSWYgbm8gaW1wb3J0X2RpcmVjdG9yeSBpcyBwcm92aWRlZCwgdGhlIHNjcmlwdCB3aWxs
IGRvd25sb2FkIHRoZSB0ZXN0cyBmcm9tIHRoZSBXM0MgZ2l0aHViIHJlcG9zaXRvcmllcy4KKyAg
ICAgIFRoZSBzZWxlY3Rpb24gb2YgdGVzdHMgYW5kIGZvbGRlcnMgdG8gaW1wb3J0IHdpbGwgYmUg
YmFzZWQgb24gdGhlIGZvbGxvd2luZyBmaWxlczoKKyAgICAgICAgIDEuIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9yZXNvdXJjZXMvSW5mcmFzdHJ1Y3R1cmVQYXRocyBsaXN0IHRoZSBpbmZyYXN0
cnVjdHVyZSBmb2xkZXJzIHRoYXQgbmVlZCB0byBiZSBpbXBvcnRlZC4KKyAgICAgICAgIDIuIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9yZXNvdXJjZXMvSW1wb3J0RXhwZWN0YXRpb25zIGxpc3Qg
dGhlIHRlc3Qgc3VpdGVzIG9yIHRlc3RzIHRvIE5PVCBpbXBvcnQuCisKICAgICAtIEFsbCBmaWxl
cyBhcmUgY29udmVydGVkIHRvIHdvcmsgaW4gV2ViS2l0OgotICAgICAgICAgMS4gUGF0aHMgdG8g
dGVzdGhhcm5lc3MuanMgZmlsZXMgYXJlIG1vZGlmaWVkIHBvaW50IHRvIFdlYmtpdCdzIGNvcHkg
b2YgdGhlbSBpbgotICAgICAgICAgICAgTGF5b3V0VGVzdHMvcmVzb3VyY2VzLCB1c2luZyB0aGUg
Y29ycmVjdCByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIG5ldyBsb2NhdGlvbgorICAgICAgICAgMS4g
UGF0aHMgdG8gdGVzdGhhcm5lc3MuanMgZmlsZXMgYXJlIG1vZGlmaWVkIHRvIHBvaW50IHRvIFdl
YmtpdCdzIGNvcHkgb2YgdGhlbSBpbgorICAgICAgICAgICAgTGF5b3V0VGVzdHMvcmVzb3VyY2Vz
LCB1c2luZyB0aGUgY29ycmVjdCByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIG5ldyBsb2NhdGlvbi4K
KyAgICAgICAgICAgIFRoaXMgaXMgYXBwbGllZCB0byBDU1MgdGVzdHMgYnV0IG5vdCB0byBXUFQg
dGVzdHMuCiAgICAgICAgICAyLiBBbGwgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Vi
a2l0LXZlbmRvciBwcmVmaXggYXJlIHByZWZpeGVkIC0gdGhpcyBjdXJyZW50CiAgICAgICAgICAg
ICBsaXN0IG9mIHdoYXQgbmVlZHMgcHJlZml4ZXMgaXMgcmVhZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L0NTUy9DU1NQcm9wZXJ0aWVzLmluCiAgICAgICAgICAzLiBFYWNoIHJlZnRlc3QgaGFzIGl0cyBv
d24gY29weSBvZiBpdHMgcmVmZXJlbmNlIGZpbGUgZm9sbG93aW5nIHRoZSBuYW1pbmcgY29udmVu
dGlvbnMKQEAgLTgzLDYgKzg4LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRl
ciBpbXBvcnQgV2ViS2l0RmluZGVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS53M2MudGVzdF9wYXJzZXIgaW1w
b3J0IFRlc3RQYXJzZXIKIGZyb20gd2Via2l0cHkudzNjLnRlc3RfY29udmVydGVyIGltcG9ydCBj
b252ZXJ0X2Zvcl93ZWJraXQKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfZG93bmxvYWRlciBpbXBv
cnQgVGVzdERvd25sb2FkZXIKIAogQ0hBTkdFU0VUX05PVF9BVkFJTEFCTEUgPSAnTm90IEF2YWls
YWJsZScKIApAQCAtOTEsOSArOTcsOSBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1l
X18pCiAKIGRlZiBtYWluKF9hcmd2LCBfc3Rkb3V0LCBfc3RkZXJyKToKICAgICBvcHRpb25zLCBh
cmdzID0gcGFyc2VfYXJncygpCi0gICAgaW1wb3J0X2RpciA9IGFyZ3NbMF0KKyAgICBpbXBvcnRf
ZGlyID0gYXJnc1swXSBpZiBsZW4oYXJncykgPiAwIGVsc2UgTm9uZQogCi0gICAgaWYgbm90IG9z
LnBhdGguZXhpc3RzKGltcG9ydF9kaXIpOgorICAgIGlmIGltcG9ydF9kaXIgYW5kIG5vdCBvcy5w
YXRoLmV4aXN0cyhpbXBvcnRfZGlyKToKICAgICAgICAgc3lzLmV4aXQoJ1NvdXJjZSBkaXJlY3Rv
cnkgJXMgbm90IGZvdW5kIScgJSBpbXBvcnRfZGlyKQogCiAgICAgY29uZmlndXJlX2xvZ2dpbmco
KQpAQCAtMTE5LDIyICsxMjUsMjkgQEAgZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKCk6CiAKIAogZGVm
IHBhcnNlX2FyZ3MoKToKLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9
J3VzYWdlOiAlcHJvZyBbb3B0aW9uc10gdzNjX3Rlc3RfZGlyZWN0b3J5JykKKyAgICBwYXJzZXIg
PSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9J3VzYWdlOiAlcHJvZyBbb3B0aW9uc10gW3cz
Y190ZXN0X2RpcmVjdG9yeV0nKQogCiAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1uJywgJy0tbm8t
b3ZlcndyaXRlJywgZGVzdD0nb3ZlcndyaXRlJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1
bHQ9VHJ1ZSwKICAgICAgICAgaGVscD0nRmxhZyB0byBwcmV2ZW50IGR1cGxpY2F0ZSB0ZXN0IGZp
bGVzIGZyb20gb3ZlcndyaXRpbmcgZXhpc3RpbmcgdGVzdHMuIEJ5IGRlZmF1bHQsIHRoZXkgd2ls
bCBiZSBvdmVyd3JpdHRlbicpCiAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1sJywgJy0tbm8tbGlu
a3MtY29udmVyc2lvbicsIGRlc3Q9J2NvbnZlcnRfdGVzdF9oYXJuZXNzX2xpbmtzJywgYWN0aW9u
PSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwKLSAgICAgICAgaGVscD0nRG8gbm90IGNoYW5n
ZSBsaW5rcyAodGVzdGhhcm5lc3MganMgb3IgY3NzIGUuZy4pLiBCeSBkZWZhdWx0LCBsaW5rcyBh
cmUgY29udmVydGVkIHRvIHBvaW50IHRvIFdlYktpdCB0ZXN0aGFybmVzcyBmaWxlcy4nKQorICAg
ICAgICBoZWxwPSdEbyBub3QgY2hhbmdlIGxpbmtzICh0ZXN0aGFybmVzcyBqcyBvciBjc3MgZS5n
LikuIFRoaXMgb3B0aW9uIG9ubHkgYXBwbGllcyB3aGVuIHByb3ZpZGluZyBhIHNvdXJjZSBkaXJl
Y3RvcnksIGluIHdoaWNoIGNhc2UgYnkgZGVmYXVsdCwgbGlua3MgYXJlIGNvbnZlcnRlZCB0byBw
b2ludCB0byBXZWJLaXQgdGVzdGhhcm5lc3MgZmlsZXMuIFdoZW4gdGVzdHMgYXJlIGRvd25sb2Fk
ZWQgZnJvbSBXM0MgcmVwb3NpdG9yeSwgbGlua3MgYXJlIGNvbnZlcnRlZCBmb3IgQ1NTIHRlc3Rz
IGFuZCByZW1haW4gdW5jaGFuZ2VkIGZvciBXUFQgdGVzdHMnKQogCiAgICAgcGFyc2VyLmFkZF9v
cHRpb24oJy1hJywgJy0tYWxsJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwK
ICAgICAgICAgaGVscD0nSW1wb3J0IGFsbCB0ZXN0cyBpbmNsdWRpbmcgcmVmdGVzdHMsIEpTIHRl
c3RzLCBhbmQgbWFudWFsL3BpeGVsIHRlc3RzLiBCeSBkZWZhdWx0LCBvbmx5IHJlZnRlc3RzIGFu
ZCBKUyB0ZXN0cyBhcmUgaW1wb3J0ZWQnKQogICAgIHBhcnNlci5hZGRfb3B0aW9uKCctZCcsICct
LWRlc3QtZGlyJywgZGVzdD0nZGVzdGluYXRpb24nLCBkZWZhdWx0PSd3M2MnLAogICAgICAgICBo
ZWxwPSdJbXBvcnQgaW50byBhIHNwZWNpZmllZCBkaXJlY3RvcnkgcmVsYXRpdmUgdG8gdGhlIExh
eW91dFRlc3RzIHJvb3QuIEJ5IGRlZmF1bHQsIGltcG9ydHMgaW50byB3M2MnKQogICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctdCcsICctLXRlc3QtcGF0aCcsIGFjdGlvbj0nYXBwZW5kJywgZGVzdD0n
dGVzdF9wYXRocycsIGRlZmF1bHQ9W10sCi0gICAgICAgIGhlbHA9J0ltcG9ydCBvbmx5IHRlc3Rz
IGluIHRoZSBzdXBwbGllZCBzdWJkaXJlY3Rvcnkgb2YgdGhlIHczY190ZXN0X2RpcmVjdG9yeS4g
Q2FuIGJlIHN1cHBsaWVkIG11bHRpcGxlIHRpbWVzIHRvIGdpdmUgbXVsdGlwbGUgcGF0aHMnKQor
ICAgICAgICBoZWxwPSdJbXBvcnQgb25seSB0ZXN0cyBpbiB0aGUgc3VwcGxpZWQgc3ViZGlyZWN0
b3J5IG9mIHRoZSBzb3VyY2UgZGlyZWN0b3J5LiBDYW4gYmUgc3VwcGxpZWQgbXVsdGlwbGUgdGlt
ZXMgdG8gZ2l2ZSBtdWx0aXBsZSBwYXRocy4gRm9yIHRlc3RzIGRpcmVjdGx5IGNsb25lZCBmcm9t
IFczQyByZXBvc2l0b3JpZXMsIHVzZSBcJycgKyBUZXN0RG93bmxvYWRlci5DU1NfTkFNRSArICcv
XCcgb3IgXCcnICsgVGVzdERvd25sb2FkZXIuV1BUX05BTUUgKyAnL1wnIHByZWZpeGVzIHRvIGZp
bHRlciBDU1Mgb3IgV1BUIHRlc3RzJykKKworICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdicsICct
LXZlcmJvc2UnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICBo
ZWxwPSdQcmludCBtYXhpbWFsIGxvZycpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbm8tZmV0
Y2gnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywgZGVzdD0nZmV0Y2gnLCBkZWZhdWx0PVRydWUsCisg
ICAgICAgIGhlbHA9J0RvIG5vdCBmZXRjaCB0aGUgQ1NTL1dQVCByZXBvc2l0b3JpZXMuIEJ5IGRl
ZmF1bHQsIHJlcG9zaXRvcmllcyBhcmUgZmV0Y2hlZCBpZiBhIHNvdXJjZSBkaXJlY3RvcnkgaXMg
bm90IHByb3ZpZGVkJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1pbXBvcnQtYWxsJywgYWN0
aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgaGVscD0nSWdub3JlIHRo
ZSBJbXBvcnRFeHBlY3RhdGlvbnMgZmlsZS4gQWxsIHRlc3RzIHdpbGwgYmUgaW1wb3J0ZWQuIFRo
aXMgb3B0aW9uIG9ubHkgYXBwbGllcyB3aGVuIHRlc3RzIGFyZSBkb3dubG9hZGVkIGZyb20gVzND
IHJlcG9zaXRvcnknKQogCiAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkK
LSAgICBpZiBsZW4oYXJncykgIT0gMToKKyAgICBpZiBsZW4oYXJncykgPiAxOgogICAgICAgICBw
YXJzZXIuZXJyb3IoJ0luY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzJykKICAgICByZXR1cm4g
b3B0aW9ucywgYXJncwogCkBAIC0xNDgsMjUgKzE2MSw0OSBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIo
b2JqZWN0KToKIAogICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBzZWxmLmhvc3QuZmlsZXN5c3Rl
bQogCisgICAgICAgIHNlbGYuaW1wb3J0X2xpc3QgPSBbXQorICAgICAgICBzZWxmLl9pbXBvcnRp
bmdfZG93bmxvYWRlZF90ZXN0cyA9IHNvdXJjZV9kaXJlY3RvcnkgaXMgTm9uZQorCiAgICAgICAg
IHdlYmtpdF9maW5kZXIgPSBXZWJLaXRGaW5kZXIoc2VsZi5maWxlc3lzdGVtKQogICAgICAgICBz
ZWxmLl93ZWJraXRfcm9vdCA9IHdlYmtpdF9maW5kZXIud2Via2l0X2Jhc2UoKQotCiAgICAgICAg
IHNlbGYuZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gd2Via2l0X2ZpbmRlci5wYXRoX2Zyb21fd2Vi
a2l0X2Jhc2UoIkxheW91dFRlc3RzIiwgb3B0aW9ucy5kZXN0aW5hdGlvbikKKyAgICAgICAgc2Vs
Zi5sYXlvdXRfdGVzdHNfdzNjX3BhdGggPSB3ZWJraXRfZmluZGVyLnBhdGhfZnJvbV93ZWJraXRf
YmFzZSgnTGF5b3V0VGVzdHMnLCAnaW1wb3J0ZWQnLCAndzNjJykKKyAgICAgICAgc2VsZi50ZXN0
c19kb3dubG9hZF9wYXRoID0gd2Via2l0X2ZpbmRlci5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ1dl
YktpdEJ1aWxkJywgJ3czYy10ZXN0cycpCiAKLSAgICAgICAgc2VsZi5pbXBvcnRfbGlzdCA9IFtd
CisgICAgICAgIHNlbGYuX3Rlc3RfZG93bmxvYWRlciA9IE5vbmUKIAogICAgIGRlZiBkb19pbXBv
cnQoc2VsZik6Ci0gICAgICAgIGlmIGxlbihzZWxmLm9wdGlvbnMudGVzdF9wYXRocykgPT0gMDoK
KyAgICAgICAgaWYgbm90IHNlbGYuc291cmNlX2RpcmVjdG9yeToKKyAgICAgICAgICAgIF9sb2cu
aW5mbygnRG93bmxvYWRpbmcgVzNDIHRlc3QgcmVwb3NpdG9yaWVzJykKKyAgICAgICAgICAgIHNl
bGYuc291cmNlX2RpcmVjdG9yeSA9IHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYudGVzdHNfZG93
bmxvYWRfcGF0aCwgJ3RvLWJlLWltcG9ydGVkJykKKyAgICAgICAgICAgIHNlbGYuZmlsZXN5c3Rl
bS5tYXliZV9tYWtlX2RpcmVjdG9yeShzZWxmLnRlc3RzX2Rvd25sb2FkX3BhdGgpCisgICAgICAg
ICAgICBzZWxmLmZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5zb3VyY2VfZGly
ZWN0b3J5KQorICAgICAgICAgICAgc2VsZi50ZXN0X2Rvd25sb2FkZXIoKS5kb3dubG9hZF90ZXN0
cyhzZWxmLnNvdXJjZV9kaXJlY3RvcnksIHNlbGYub3B0aW9ucy50ZXN0X3BhdGhzKQorCisgICAg
ICAgIGlmIGxlbihzZWxmLm9wdGlvbnMudGVzdF9wYXRocykgPT0gMCBvciBzZWxmLl9pbXBvcnRp
bmdfZG93bmxvYWRlZF90ZXN0czoKICAgICAgICAgICAgIHNlbGYuZmluZF9pbXBvcnRhYmxlX3Rl
c3RzKHNlbGYuc291cmNlX2RpcmVjdG9yeSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZv
ciB0ZXN0X3BhdGggaW4gc2VsZi5vcHRpb25zLnRlc3RfcGF0aHM6Ci0gICAgICAgICAgICAgICAg
c2VsZi5maW5kX2ltcG9ydGFibGVfdGVzdHMob3MucGF0aC5qb2luKHNlbGYuc291cmNlX2RpcmVj
dG9yeSwgdGVzdF9wYXRoKSkKKyAgICAgICAgICAgICAgICBzZWxmLmZpbmRfaW1wb3J0YWJsZV90
ZXN0cyhzZWxmLmZpbGVzeXN0ZW0uam9pbihzZWxmLnNvdXJjZV9kaXJlY3RvcnksIHRlc3RfcGF0
aCkpCisKICAgICAgICAgc2VsZi5pbXBvcnRfdGVzdHMoKQogCisgICAgZGVmIHRlc3RfZG93bmxv
YWRlcihzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX3Rlc3RfZG93bmxvYWRlcjoKKyAgICAg
ICAgICAgIGRvd25sb2FkX29wdGlvbnMgPSBUZXN0RG93bmxvYWRlci5kZWZhdWx0X29wdGlvbnMo
KQorICAgICAgICAgICAgZG93bmxvYWRfb3B0aW9ucy5mZXRjaCA9IHNlbGYub3B0aW9ucy5mZXRj
aAorICAgICAgICAgICAgZG93bmxvYWRfb3B0aW9ucy52ZXJib3NlID0gc2VsZi5vcHRpb25zLnZl
cmJvc2UKKyAgICAgICAgICAgIGRvd25sb2FkX29wdGlvbnMuaW1wb3J0X2FsbCA9IHNlbGYub3B0
aW9ucy5pbXBvcnRfYWxsCisgICAgICAgICAgICBzZWxmLl90ZXN0X2Rvd25sb2FkZXIgPSBUZXN0
RG93bmxvYWRlcihzZWxmLnRlc3RzX2Rvd25sb2FkX3BhdGgsIHNlbGYuaG9zdCwgZG93bmxvYWRf
b3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfZG93bmxvYWRlcgorCiAgICAgZGVm
IHNob3VsZF9rZWVwX3N1YmRpcihzZWxmLCByb290LCBzdWJkaXIpOgorICAgICAgICBpZiBzdWJk
aXIuc3RhcnRzd2l0aCgnLicpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlm
IHNlbGYuX2ltcG9ydGluZ19kb3dubG9hZGVkX3Rlc3RzOgorICAgICAgICAgICAgcmV0dXJuIFRy
dWUKICAgICAgICAgRElSU19UT19TS0lQID0gKCd3b3JrLWluLXByb2dyZXNzJywgJ3Rvb2xzJywg
J3N1cHBvcnQnKQotICAgICAgICBzaG91bGRfc2tpcCA9IHN1YmRpci5zdGFydHN3aXRoKCcuJykg
b3IgKHJvb3QgPT0gc2VsZi5zb3VyY2VfZGlyZWN0b3J5IGFuZCBzdWJkaXIgaW4gRElSU19UT19T
S0lQKQotICAgICAgICByZXR1cm4gbm90IHNob3VsZF9za2lwCisgICAgICAgIHJldHVybiBub3Qg
KHJvb3QgPT0gc2VsZi5zb3VyY2VfZGlyZWN0b3J5IGFuZCBzdWJkaXIgaW4gRElSU19UT19TS0lQ
KQogCiAgICAgZGVmIHNob3VsZF9za2lwX2ZpbGUoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAj
IEZvciBzb21lIHJlYXNvbiB0aGUgdzNjIHJlcG8gY29udGFpbnMgcmFuZG9tIHBlcmwgc2NyaXB0
cyB3ZSBkb24ndCBjYXJlIGFib3V0LgpAQCAtMjM4LDYgKzI3NSwxMSBAQCBjbGFzcyBUZXN0SW1w
b3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLmltcG9ydF9saXN0LmFwcGVuZCh7
J2Rpcm5hbWUnOiByb290LCAnY29weV9saXN0JzogY29weV9saXN0LAogICAgICAgICAgICAgICAg
ICAgICAncmVmdGVzdHMnOiByZWZ0ZXN0cywgJ2pzdGVzdHMnOiBqc3Rlc3RzLCAndG90YWxfdGVz
dHMnOiB0b3RhbF90ZXN0c30pCiAKKyAgICBkZWYgc2hvdWxkX2NvbnZlcnRfdGVzdF9oYXJuZXNz
X2xpbmtzKHNlbGYsIHRlc3QpOgorICAgICAgICBpZiBzZWxmLl9pbXBvcnRpbmdfZG93bmxvYWRl
ZF90ZXN0czoKKyAgICAgICAgICAgIHJldHVybiBub3QgdGVzdC5zdGFydHN3aXRoKFRlc3REb3du
bG9hZGVyLldQVF9OQU1FKQorICAgICAgICByZXR1cm4gc2VsZi5vcHRpb25zLmNvbnZlcnRfdGVz
dF9oYXJuZXNzX2xpbmtzCisKICAgICBkZWYgaW1wb3J0X3Rlc3RzKHNlbGYpOgogICAgICAgICB0
b3RhbF9pbXBvcnRlZF90ZXN0cyA9IDAKICAgICAgICAgdG90YWxfaW1wb3J0ZWRfcmVmdGVzdHMg
PSAwCkBAIC0zMDQsNyArMzQ2LDcgQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgbWltZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShvcmlnX2ZpbGVwYXRo
KQogICAgICAgICAgICAgICAgIGlmICdodG1sJyBpbiBzdHIobWltZXR5cGVbMF0pIG9yICd4bWwn
IGluIHN0cihtaW1ldHlwZVswXSkgIG9yICdjc3MnIGluIHN0cihtaW1ldHlwZVswXSk6CiAgICAg
ICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9m
aWxlID0gY29udmVydF9mb3Jfd2Via2l0KG5ld19wYXRoLCBmaWxlbmFtZT1vcmlnX2ZpbGVwYXRo
LCByZWZlcmVuY2Vfc3VwcG9ydF9pbmZvPXJlZmVyZW5jZV9zdXBwb3J0X2luZm8sIGNvbnZlcnRf
dGVzdF9oYXJuZXNzX2xpbmtzPXNlbGYub3B0aW9ucy5jb252ZXJ0X3Rlc3RfaGFybmVzc19saW5r
cykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9maWxlID0gY29udmVydF9mb3Jf
d2Via2l0KG5ld19wYXRoLCBmaWxlbmFtZT1vcmlnX2ZpbGVwYXRoLCByZWZlcmVuY2Vfc3VwcG9y
dF9pbmZvPXJlZmVyZW5jZV9zdXBwb3J0X2luZm8sIGNvbnZlcnRfdGVzdF9oYXJuZXNzX2xpbmtz
PXNlbGYuc2hvdWxkX2NvbnZlcnRfdGVzdF9oYXJuZXNzX2xpbmtzKHN1YnBhdGgpKQogICAgICAg
ICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBfbG9nLndhcm4o
J0ZhaWxlZCBjb252ZXJ0aW5nICVzJywgb3JpZ19maWxlcGF0aCkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhaWxlZF9jb252ZXJzaW9uX2ZpbGVzLmFwcGVuZChvcmlnX2ZpbGVwYXRoKQpAQCAt
Mzg0LDEzICs0MjYsMTIgQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CiAKICAgICAgICAg
bm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKIAotICAgICAgICBpbXBvcnRfbG9nID0gb3Bl
bihvcy5wYXRoLmpvaW4oaW1wb3J0X2RpcmVjdG9yeSwgJ3czYy1pbXBvcnQubG9nJyksICd3JykK
KyAgICAgICAgaW1wb3J0X2xvZyA9IG9wZW4oc2VsZi5maWxlc3lzdGVtLmpvaW4oaW1wb3J0X2Rp
cmVjdG9yeSwgJ3czYy1pbXBvcnQubG9nJyksICd3JykKICAgICAgICAgaW1wb3J0X2xvZy53cml0
ZSgnVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuXG4nKQogICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYmtpdC5cbicpCi0gICAgICAgIGltcG9ydF9sb2cu
d3JpdGUoJ0luc3RlYWQsIHB1c2ggY2hhbmdlcyB0byB0aGUgVzNDIENTUyByZXBvOlxuJykKLSAg
ICAgICAgaW1wb3J0X2xvZy53cml0ZSgnXHRodHRwOi8vaGcuY3Nzd2cub3JnL3Rlc3RcbicpCi0g
ICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ09yIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
VzNDIENTUyBnaXRodWI6XG4nKQotICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdcdGh0dHBzOi8v
Z2l0aHViLmNvbS93M2MvY3Nzd2ctdGVzdFxuXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRl
KCdJbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFczQyBDU1Mgb3IgV1BUIGdp
dGh1YjpcbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1x0aHR0cHM6Ly9naXRodWIuY29t
L3czYy9jc3N3Zy10ZXN0XG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdcdGh0dHBzOi8v
Z2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzXG5cbicpCiAgICAgICAgIGltcG9ydF9s
b2cud3JpdGUoJ1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2Via2l0IHRvIHJlaW1wb3J0XG5cbicpCiAgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0RvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZVxuXG4nKQogICAgICAgICBpbXBvcnRfbG9nLndy
aXRlKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS1cbicpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRl
eCA1Njc1OTdiMjFkMmEzZDQ1MDFhNDY3YjBjYjcyYWQyOTM0OWRiOGI2Li42NTYwMzJkYWU0NzBm
MjI1MjE3MzQ3NzFmNDE2YTJlY2VjZmUwNjJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wMS0yMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5m
YWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJl
IHNob3VsZCBhdXRvbWF0ZSB0aGUgcHJvY2VzcyBvZiBjbG9uaW5nIFczQyB0ZXN0IHN1aXRlIGFu
ZCBpbXBvcnRpbmcgdGVzdHMgZnJvbSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NzY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlc2UgZmlsZXMgZGVmaW5lcyB0aGUgcnVsZXMgdXNlZCBieSBU
ZXN0RG93bmxvYWRlciB0byBmaWx0ZXIgb3V0IFczQyB0ZXN0IHN1aXRlcy4KKworICAgICAgICAq
IHJlc291cmNlcy9JbXBvcnRFeHBlY3RhdGlvbnM6IEFkZGVkLgorICAgICAgICAqIHJlc291cmNl
cy9JbmZyYXN0cnVjdHVyZVBhdGhzOiBBZGRlZC4KKwogMjAxNS0wMS0yMSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdzNjL2NhbnZh
cy9yZXNvdXJjZXMvIGNvbW1vbiByZXNvdXJjZXMgdG8gdzNjL3Jlc291cmNlcy8uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL0ltcG9ydEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9yZXNvdXJjZXMvSW1wb3J0RXhwZWN0YXRpb25z
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg5NzZiMWQ1Y2MzNDgwZjY1Yjg3MWYyMGUxOTljOWUwMDRjMjVkYjkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL0ltcG9y
dEV4cGVjdGF0aW9ucwpAQCAtMCwwICsxLDExMyBAQAorY3Nzd2ctdGVzdHMvY29tcG9zaXRpbmct
MSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWFsaWduLTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3Rz
L2Nzcy1hbmltYXRpb25zLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1iYWNrZ3JvdW5kcy0z
IFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtYm94LTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nz
cy1icmVhay0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtY29sb3ItMyBbIFNraXAgXQorY3Nz
d2ctdGVzdHMvY3NzLWNvbmRpdGlvbmFsLTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1jb3Vu
dGVyLXN0eWxlcy0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtZXhjbHVzaW9ucy0xIFsgU2tp
cCBdCitjc3N3Zy10ZXN0cy9jc3MtZmxleGJveC0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3Mt
Zm9udHMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWdjcG0tMyBbIFNraXAgXQorY3Nzd2ct
dGVzdHMvY3NzLWdyaWQtMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWltYWdlcy0zIFsgU2tp
cCBdCitjc3N3Zy10ZXN0cy9jc3MtbGlzdHMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLW1h
c2tpbmctMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLW11bHRpY29sLTEgWyBTa2lwIF0KK2Nz
c3dnLXRlc3RzL2Nzcy1uYW1lc3BhY2VzLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1wYWdl
LTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1yZWdpb25zLTEgWyBTa2lwIF0KK2Nzc3dnLXRl
c3RzL2Nzcy1ydWJ5LTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1zaGFwZXMtMSBbIFNraXAg
XQorY3Nzd2ctdGVzdHMvY3NzLXNwZWVjaC0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3Mtc3R5
bGUtYXR0ci0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3Mtc3ludGF4LTMgWyBTa2lwIF0KK2Nz
c3dnLXRlc3RzL2Nzcy10YWJsZXMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXRleHQtMyBb
IFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXRleHQtZGVjb3ItMyBbIFNraXAgXQorY3Nzd2ctdGVz
dHMvY3NzLXRyYW5zZm9ybXMtMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXRyYW5zaXRpb25z
LTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy11aS0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9j
c3MtdmFsdWVzLTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy12YXJpYWJsZXMtMSBbIFNraXAg
XQorY3Nzd2ctdGVzdHMvY3NzLXdyaXRpbmctbW9kZXMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMv
Y3NzMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzMjEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nz
c29tLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzc29tLXZpZXctMSBbIFNraXAgXQorY3Nzd2ct
dGVzdHMvZmlsdGVycy0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9mb250cyBbIFNraXAgXQorY3Nz
d2ctdGVzdHMvZ2VvbWV0cnktMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvbWVkaWFxdWVyaWVzLTMg
WyBTa2lwIF0KK2Nzc3dnLXRlc3RzL3NlbGVjdG9ycy0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9z
ZWxlY3RvcnMtNCBbIFNraXAgXQorY3Nzd2ctdGVzdHMvdmVuZG9yLWltcG9ydHMgWyBTa2lwIF0K
Kword2ViLXBsYXRmb3JtLXRlc3RzLzJkY29udGV4dCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRl
c3RzL0RPTUV2ZW50cyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL0ZpbGVBUEkgWyBTa2lw
IF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10
ZXN0cy9XZWJDcnlwdG9BUEkgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwgWyBT
a2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9YTUxIdHRwUmVxdWVzdCBbIFNraXAgXQord2ViLXBs
YXRmb3JtLXRlc3RzL2FtYmllbnQtbGlnaHQgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9h
bmltYXRpb24tdGltaW5nIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvYXBwLXVyaSBbIFNr
aXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2JhdHRlcnktc3RhdHVzIFsgU2tpcCBdCit3ZWItcGxh
dGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kgWyBTa2lwIF0KK3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb3JzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvY3VzdG9tLWVsZW1lbnRz
IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvZG9jcyBbIFNraXAgXQord2ViLXBsYXRmb3Jt
LXRlc3RzL2RvbSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2RvbXBhcnNpbmcgWyBTa2lw
IF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9kb214cGF0aCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRl
c3RzL2VuY29kaW5nIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvZXZlbnRzb3VyY2UgWyBT
a2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9leHQteGh0bWwtcHViaWQgWyBTa2lwIF0KK3dlYi1w
bGF0Zm9ybS10ZXN0cy9nZW9sb2NhdGlvbi1BUEkgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0
cy9nYW1lcGFkIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvaHItdGltZSBbIFNraXAgXQor
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
LWltcG9ydHMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sLWxvbmdkZXNjIFsgU2tp
cCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC1tZWRpYS1jYXB0dXJlIFsgU2tpcCBdCit3ZWIt
cGxhdGZvcm0tdGVzdHMvaHR0cCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2pzIFsgU2tp
cCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUt
c3RyZWFtcyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL21pY3JvZGF0YSBbIFNraXAgXQor
d2ViLXBsYXRmb3JtLXRlc3RzL25hdmlnYXRpb24tdGltaW5nIFsgU2tpcCBdCit3ZWItcGxhdGZv
cm0tdGVzdHMvbm90aWZpY2F0aW9ucyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL29sZC10
ZXN0cyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3BhZ2UtdmlzaWJpbGl0eSBbIFNraXAg
XQord2ViLXBsYXRmb3JtLXRlc3RzL3BlcmZvcm1hbmNlLXRpbWVsaW5lIFsgU2tpcCBdCit3ZWIt
cGxhdGZvcm0tdGVzdHMvcG9pbnRlcmV2ZW50cyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3Rz
L3BvaW50ZXJsb2NrIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvcHJvZ3Jlc3MtZXZlbnRz
IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvcHJveGltaXR5IFsgU2tpcCBdCit3ZWItcGxh
dGZvcm0tdGVzdHMvcXVpcmtzLW1vZGUgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9yZXNv
dXJjZS10aW1pbmcgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9zZWxlY3RvcnMgWyBTa2lw
IF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9zZWxlY3RvcnMtYXBpIFsgU2tpcCBdCit3ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvc2hh
ZG93LWRvbSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3N1YnJlc291cmNlLWludGVncml0
eSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3RvdWNoLWV2ZW50cyBbIFNraXAgXQord2Vi
LXBsYXRmb3JtLXRlc3RzL3R5cGVkYXJyYXlzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMv
dXJsIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvdXNlci10aW1pbmcgWyBTa2lwIF0KK3dl
Yi1wbGF0Zm9ybS10ZXN0cy92aWJyYXRpb24gWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWItYW5pbWF0aW9ucyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvIFsgU2tp
cCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvd2ViZHJpdmVyIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0t
dGVzdHMvd2ViZ2wgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcgWyBT
a2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJzb2NrZXRzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvd2Vic3RvcmFnZSBb
IFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3dlYnZ0dCBbIFNraXAgXQord2ViLXBsYXRmb3Jt
LXRlc3RzL3dvcmtlcnMgWyBTa2lwIF0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3Jlc291cmNlcy9JbmZyYXN0cnVjdHVyZVBhdGhzIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3Jlc291cmNlcy9JbmZyYXN0cnVjdHVyZVBhdGhzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzZjk3NGRh
MDM0YzU0MGIzMjk4N2ZiZmRlODQ2YzBhN2IzYjMxNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL0luZnJhc3RydWN0dXJlUGF0aHMKQEAgLTAs
MCArMSwxNCBAQAord2ViLXBsYXRmb3JtLXRlc3RzL2NvbmZvcm1hbmNlLWNoZWNrZXJzIFsgU2tp
cCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvb2xkLXRlc3RzIFsgU2tpcCBdCisKK3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb21tb24gWyBQYXNzIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9mb250cyBbIFBhc3Mg
XQord2ViLXBsYXRmb3JtLXRlc3RzL2ltYWdlcyBbIFBhc3MgXQord2ViLXBsYXRmb3JtLXRlc3Rz
L3Jlc291cmNlcyBbIFBhc3MgXQord2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzIFsgUGFzcyBdCit3
ZWItcGxhdGZvcm0tdGVzdHMvY29uZmlnLmRlZmF1bHQuanNvbiBbIFBhc3MgXQord2ViLXBsYXRm
b3JtLXRlc3RzL3NlcnZlLnB5IFsgUGFzcyBdCisKK2Nzc3dnLXRlc3RzL3dvcmstaW4tcHJvZ3Jl
c3MgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL3Rvb2xzIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9zdXBw
b3J0IFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245348</attachid>
            <date>2015-01-26 06:51:40 -0800</date>
            <delta_ts>2015-02-24 05:14:29 -0800</delta_ts>
            <desc>Using scm git, changing to JSON for TestInfrastructurePaths and repository revisions</desc>
            <filename>bug-134764-20150126155141.patch</filename>
            <type>text/plain</type>
            <size>28747</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MTAzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDRjNWI5OTEwNTkxOTBhYTEzYzUxODQyM2IyNjcxNzM5
NmYwOGM0Ny4uM2NiZDEyNDhjZTYwMDQ5YjAyODQxMmQxMTBmZjcxMzdhOGFlMzU3MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2
IEBACisyMDE1LTAxLTI2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBJbXBsZW1lbnQgUmVhZGFibGVTdHJlYW0KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODk2NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3REb3dubG9h
ZGVyIGlzIGludHJvZHVjZWQgdG8gZG93bmxvYWQgVzNDIHRlc3RzIGZyb20gdGhlIG9mZmljaWFs
CisgICAgICAgIFczQyB0ZXN0cyByZXBvc2l0b3JpZXMgKGh0dHBzOi8vZ2l0aHViLmNvbS93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzLmdpdAorICAgICAgICBhbmQgaHR0cHM6Ly9naXRodWIuY29tL3cz
Yy9jc3N3Zy10ZXN0LmdpdCkuCisgICAgICAgIFRlc3REb3dubG9hZGVyIGNsb25lcyB0aGUgcmVw
b3NpdG9yaWVzIGFuZCBjaGVja291dHMgcmV2aXNpb25zIG9mIHRoZSB0ZXN0cworICAgICAgICBk
ZWZpbmVkIGluIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9yZXNvdXJjZXMvVGVzdFJldmlzaW9u
cy4KKworICAgICAgICBTaW1pbGFybHkgdG8gaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9y
Zy8xNDgxNzMwMTYsCisgICAgICAgIFRlc3REb3dubG9hZGVyIGNvcGllcyBwYXJ0IG9mIHRoZSBm
aWxlcyBiYXNlZCBvbiB0aGUgcnVsZXMKKyAgICAgICAgZGVmaW5lZCBpbiBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvcmVzb3VyY2VzL0ltcG9ydEV4cGVjdGF0aW9ucy4KKworICAgICAgICBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL0luZnJhc3RydWN0dXJlUGF0aHMgaXMgaW50
cm9kdWNlZAorICAgICAgICB0byBlbnN1cmUgaW5mcmFzdHJ1Y3R1cmUgZGlyZWN0b3JpZXMgYXJl
IGFsd2F5cyBpbXBvcnRlZC4KKworICAgICAgICBUZXN0RG93bmxvYWRlciBpcyB1c2VkIGJ5IFRl
c3RJbXBvcnRlciB3aGVuIG5vIHNvdXJjZSBkaXJlY3RvcnkgaXMgcHJvdmlkZWQuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2Rvd25sb2FkZXIucHk6IEFkZGVkLgorICAg
ICAgICAoVGVzdERvd25sb2FkZXIpOgorICAgICAgICAoVGVzdERvd25sb2FkZXIuZGVmYXVsdF9v
cHRpb25zKToKKyAgICAgICAgKFRlc3REb3dubG9hZGVyLl9faW5pdF9fKToKKyAgICAgICAgKFRl
c3REb3dubG9hZGVyLmNoZWNrb3V0X3Rlc3RfcmVwb3NpdG9yeSk6CisgICAgICAgIChUZXN0RG93
bmxvYWRlci5faW5pdF9wYXRoc19mcm9tX2V4cGVjdGF0aW9ucyk6CisgICAgICAgIChUZXN0RG93
bmxvYWRlci5fYWRkX3Rlc3Rfc3VpdGVfcGF0aHMpOgorICAgICAgICAoVGVzdERvd25sb2FkZXIu
X2VtcHR5X2RpcmVjdG9yeSk6CisgICAgICAgIChUZXN0RG93bmxvYWRlci5jb3B5X3Rlc3RzKToK
KyAgICAgICAgKFRlc3REb3dubG9hZGVyLmRvd25sb2FkX3Rlc3RzKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5OgorICAgICAgICAobWFpbik6IE1hZGUg
c291cmNlIGRpcmVjdG9yeSBwYXJhbWV0ZXIgb3B0aW9uYWwuCisgICAgICAgIChwYXJzZV9hcmdz
KTogQWRkZWQgbm8tZmV0Y2ggYW5kIGltcG9ydC1hbGwgb3B0aW9ucy4KKyAgICAgICAgKFRlc3RJ
bXBvcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuZG9faW1wb3J0KToKKyAg
ICAgICAgKFRlc3RJbXBvcnRlci50ZXN0X2Rvd25sb2FkZXIpOgorICAgICAgICAoVGVzdEltcG9y
dGVyLnNob3VsZF9rZWVwX3N1YmRpcik6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuc2hvdWxkX2Nv
bnZlcnRfdGVzdF9oYXJuZXNzX2xpbmtzKToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5pbXBvcnRf
dGVzdHMpOgorICAgICAgICAoVGVzdEltcG9ydGVyLndyaXRlX2ltcG9ydF9sb2cpOgorCiAyMDE1
LTAxLTI1ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAg
IFtXaW5dIEFkZCBXZWJLaXQgbWVzc2FnZSBsb29wIGludGVyZmFjZS4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfZG93bmxvYWRlci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfZG93bmxvYWRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGU5MmE4NGVh
MTk5MTA4ZWFjNTc3ZDBhODA0ZDQwMTg1YWRjMmFhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9kb3dubG9hZGVyLnB5CkBAIC0wLDAgKzEsMTQ4IEBA
CisjIENvcHlyaWdodCAoYykgMjAxNCwgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisiIiIKKyBUaGlzIHNjcmlwdCBkb3dubG9hZHMgVzNDIHRlc3QgcmVwb3Np
dG9yaWVzLgorIiIiCisKK2ltcG9ydCBqc29uCitpbXBvcnQgbG9nZ2luZworCitmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKK2Zyb20gd2Via2l0
cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgorZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfZXhwZWN0YXRpb25zIGltcG9ydCBUZXN0RXhwZWN0
YXRpb25QYXJzZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5naXQgaW1wb3J0
IEdpdAorCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3MgVGVz
dERvd25sb2FkZXIob2JqZWN0KToKKworICAgIENTU19OQU1FID0gJ2Nzc3dnLXRlc3RzJworICAg
IENTU19VUkwgPSAnaHR0cHM6Ly9naXRodWIuY29tL3czYy9jc3N3Zy10ZXN0LmdpdCcKKworICAg
IFdQVF9OQU1FID0gJ3dlYi1wbGF0Zm9ybS10ZXN0cycKKyAgICBXUFRfVVJMID0gJ2h0dHBzOi8v
Z2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCcKKworICAgIEBzdGF0aWNtZXRo
b2QKKyAgICBkZWYgZGVmYXVsdF9vcHRpb25zKCk6CisgICAgICAgIG9wdGlvbnMgPSB0eXBlKCcn
LCAoKSwge30pCisgICAgICAgIG9wdGlvbnMuZmV0Y2ggPSBUcnVlCisgICAgICAgIG9wdGlvbnMu
dmVyYm9zZSA9IEZhbHNlCisgICAgICAgIG9wdGlvbnMuaW1wb3J0X2FsbCA9IEZhbHNlCisgICAg
ICAgIG9wdGlvbnMuZG93bmxvYWRfY3Nzd2dfdGVzdHMgPSBUcnVlCisgICAgICAgIG9wdGlvbnMu
ZG93bmxvYWRfd2ViX3BsYXRmb3JtX3Rlc3RzID0gVHJ1ZQorICAgICAgICByZXR1cm4gb3B0aW9u
cworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcG9zaXRvcnlfZGlyZWN0b3J5LCBob3N0LCBv
cHRpb25zKToKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgc2VsZi5f
aG9zdCA9IGhvc3QKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGhvc3QuZmlsZXN5c3RlbQor
ICAgICAgICBzZWxmLl90ZXN0X3N1aXRlcyA9IFtdCisKKyAgICAgICAgc2VsZi5yZXBvc2l0b3J5
X2RpcmVjdG9yeSA9IHJlcG9zaXRvcnlfZGlyZWN0b3J5CisgICAgICAgIHNlbGYud2ViX3BsYXRm
b3JtX3Rlc3RzX2RpcmVjdG9yeSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihyZXBvc2l0b3J5X2Rp
cmVjdG9yeSwgc2VsZi5XUFRfTkFNRSkKKyAgICAgICAgc2VsZi5jc3N3Z190ZXN0c19kaXJlY3Rv
cnkgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4ocmVwb3NpdG9yeV9kaXJlY3RvcnksIHNlbGYuQ1NT
X05BTUUpCisKKyAgICAgICAgd2Via2l0X2ZpbmRlciA9IFdlYktpdEZpbmRlcihzZWxmLl9maWxl
c3lzdGVtKQorICAgICAgICBzZWxmLmxheW91dF90ZXN0c193M2NfcmVzb3VyY2VzX3BhdGggPSB3
ZWJraXRfZmluZGVyLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnLCAnaW1wb3J0
ZWQnLCAndzNjJywgJ3Jlc291cmNlcycpCisKKyAgICAgICAgaW5mcmFzdHJ1Y3R1cmVfcGF0aHMg
PSBqc29uLmxvYWRzKHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX3czY19yZXNvdXJjZXNfcGF0aCwgJ0luZnJhc3Ry
dWN0dXJlUGF0aHMnKSkpCisgICAgICAgIHNlbGYucGF0aHNfdG9fc2tpcCA9IGluZnJhc3RydWN0
dXJlX3BhdGhzWydwYXRoc190b19za2lwJ10KKyAgICAgICAgc2VsZi5wYXRoc190b19pbXBvcnQg
PSBpbmZyYXN0cnVjdHVyZV9wYXRoc1sncGF0aHNfdG9faW1wb3J0J10KKworICAgICAgICBpZiBu
b3Qgc2VsZi5fb3B0aW9ucy5pbXBvcnRfYWxsOgorICAgICAgICAgICAgc2VsZi5faW5pdF9wYXRo
c19mcm9tX2V4cGVjdGF0aW9ucyhzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVz
dHNfdzNjX3Jlc291cmNlc19wYXRoLCAnSW1wb3J0RXhwZWN0YXRpb25zJykpCisKKyAgICAgICAg
dGVzdF9yZXZpc2lvbnNfZmlsZV9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5
b3V0X3Rlc3RzX3czY19yZXNvdXJjZXNfcGF0aCwgJ1Rlc3RSZXZpc2lvbnMnKQorICAgICAgICBz
ZWxmLnRlc3RfcmV2aXNpb25zID0ganNvbi5sb2FkcyhzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4
dF9maWxlKHRlc3RfcmV2aXNpb25zX2ZpbGVfcGF0aCkpCisKKyAgICBkZWYgY2hlY2tvdXRfdGVz
dF9yZXBvc2l0b3J5KHNlbGYsIHJldmlzaW9uLCB1cmwsIGRpcmVjdG9yeSk6CisgICAgICAgIGdp
dCA9IEdpdCgnLicsIE5vbmUpCisgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0
cyhkaXJlY3RvcnkpOgorICAgICAgICAgICAgX2xvZy5pbmZvKCdDbG9uaW5nICVzIGludG8gJXMu
Li4nICUgKHVybCwgZGlyZWN0b3J5KSkKKyAgICAgICAgICAgIGdpdC5fcnVuX2dpdChbJ2Nsb25l
JywgJy12JywgJy0tcmVjdXJzaXZlJywgdXJsLCBkaXJlY3RvcnldKQorICAgICAgICBlbGlmIHNl
bGYuX29wdGlvbnMuZmV0Y2ggaXMgVHJ1ZToKKyAgICAgICAgICAgIF9sb2cuaW5mbygnRmV0Y2hp
bmcgJXMuLi4nICUgdXJsKQorICAgICAgICAgICAgZ2l0Ll9ydW5fZ2l0KFsnLUMnLCBkaXJlY3Rv
cnksICdmZXRjaCddKQorICAgICAgICBfbG9nLmluZm8oJ0NoZWNraW5nIG91dCByZXZpc2lvbiAn
ICsgcmV2aXNpb24pCisgICAgICAgIGNoZWNrb3V0X2FyZ3VtZW50cyA9IFsnLUMnLCBkaXJlY3Rv
cnksICdjaGVja291dCcsIHJldmlzaW9uXQorICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy52
ZXJib3NlOgorICAgICAgICAgICAgY2hlY2tvdXRfYXJndW1lbnRzICs9IFsnLXEnXQorICAgICAg
ICBnaXQuX3J1bl9naXQoY2hlY2tvdXRfYXJndW1lbnRzKQorCisgICAgZGVmIF9pbml0X3BhdGhz
X2Zyb21fZXhwZWN0YXRpb25zKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAgIGlmIG5vdCBzZWxm
Ll9maWxlc3lzdGVtLmlzZmlsZShmaWxlX3BhdGgpOgorICAgICAgICAgICAgX2xvZy53YXJuaW5n
KCdVbmFibGUgdG8gcmVhZCBpbXBvcnQgZXhwZWN0YXRpb24gZmlsZTogJXMnICUgZmlsZV9wYXRo
KQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHBvcnQgPSBzZWxmLl9ob3N0LnBvcnRfZmFj
dG9yeS5nZXQoKQorICAgICAgICBleHBlY3RhdGlvbnMgPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRf
dGV4dF9maWxlKGZpbGVfcGF0aCkKKyAgICAgICAgcGFyc2VyID0gVGVzdEV4cGVjdGF0aW9uUGFy
c2VyKHBvcnQsICgpLCBGYWxzZSkKKyAgICAgICAgZXhwZWN0YXRpb25fbGluZXMgPSBwYXJzZXIu
cGFyc2UoZmlsZV9wYXRoLCBleHBlY3RhdGlvbnMpCisgICAgICAgIGZvciBsaW5lIGluIGV4cGVj
dGF0aW9uX2xpbmVzOgorICAgICAgICAgICAgaWYgJ1NLSVAnIGluIGxpbmUubW9kaWZpZXJzOgor
ICAgICAgICAgICAgICAgIHNlbGYucGF0aHNfdG9fc2tpcC5hcHBlbmQobGluZS5uYW1lKQorICAg
ICAgICAgICAgZWxpZiAnUEFTUycgaW4gbGluZS5leHBlY3RhdGlvbnM6CisgICAgICAgICAgICAg
ICAgc2VsZi5wYXRoc190b19pbXBvcnQuYXBwZW5kKGxpbmUubmFtZSkKKworICAgIGRlZiBfYWRk
X3Rlc3Rfc3VpdGVfcGF0aHMoc2VsZiwgdGVzdF9wYXRocywgZGlyZWN0b3J5LCB3ZWJraXRfcGF0
aCk6CisgICAgICAgIGZvciBuYW1lIGluIHNlbGYuX2ZpbGVzeXN0ZW0ubGlzdGRpcihkaXJlY3Rv
cnkpOgorICAgICAgICAgICAgcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbih3ZWJraXRfcGF0
aCwgbmFtZSkKKyAgICAgICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJy4nKSBhbmQgbm90
IHBhdGggaW4gc2VsZi5wYXRoc190b19za2lwOgorICAgICAgICAgICAgICAgIHRlc3RfcGF0aHMu
YXBwZW5kKHBhdGgpCisKKyAgICBkZWYgX2VtcHR5X2RpcmVjdG9yeShzZWxmLCBkaXJlY3Rvcnkp
OgorICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhkaXJlY3RvcnkpOgorICAgICAg
ICAgICAgc2VsZi5fZmlsZXN5c3RlbS5ybXRyZWUoZGlyZWN0b3J5KQorICAgICAgICBzZWxmLl9m
aWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KGRpcmVjdG9yeSkKKworICAgIGRlZiBjb3B5
X3Rlc3RzKHNlbGYsIGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgdGVzdF9wYXRocyk6CisgICAgICAg
IHNlbGYuX2VtcHR5X2RpcmVjdG9yeShzZWxmLl9maWxlc3lzdGVtLmpvaW4oZGVzdGluYXRpb25f
ZGlyZWN0b3J5LCBzZWxmLldQVF9OQU1FKSkKKyAgICAgICAgc2VsZi5fZW1wdHlfZGlyZWN0b3J5
KHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihkZXN0aW5hdGlvbl9kaXJlY3RvcnksIHNlbGYuQ1NTX05B
TUUpKQorCisgICAgICAgIGNvcHlfcGF0aHMgPSBbXQorICAgICAgICBpZiB0ZXN0X3BhdGhzOgor
ICAgICAgICAgICAgY29weV9wYXRocy5leHRlbmQodGVzdF9wYXRocykKKyAgICAgICAgICAgIGNv
cHlfcGF0aHMuZXh0ZW5kKHNlbGYucGF0aHNfdG9faW1wb3J0KQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgc2VsZi5fYWRkX3Rlc3Rfc3VpdGVfcGF0aHMoY29weV9wYXRocywgc2VsZi53ZWJf
cGxhdGZvcm1fdGVzdHNfZGlyZWN0b3J5LCBzZWxmLldQVF9OQU1FKQorICAgICAgICAgICAgc2Vs
Zi5fYWRkX3Rlc3Rfc3VpdGVfcGF0aHMoY29weV9wYXRocywgc2VsZi5jc3N3Z190ZXN0c19kaXJl
Y3RvcnksIHNlbGYuQ1NTX05BTUUpCisKKyAgICAgICAgZm9yIHBhdGggaW4gY29weV9wYXRoczoK
KyAgICAgICAgICAgIHNvdXJjZV9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYucmVw
b3NpdG9yeV9kaXJlY3RvcnksIHBhdGgpCisgICAgICAgICAgICBkZXN0aW5hdGlvbl9wYXRoID0g
c2VsZi5fZmlsZXN5c3RlbS5qb2luKGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgcGF0aCkKKyAgICAg
ICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzb3VyY2VfcGF0aCk6CisgICAg
ICAgICAgICAgICAgX2xvZy5lcnJvcignQ2Fubm90IGNvcHkgJXMnICUgc291cmNlX3BhdGgpCisg
ICAgICAgICAgICBlbGlmIHNlbGYuX2ZpbGVzeXN0ZW0uaXNkaXIoc291cmNlX3BhdGgpOgorICAg
ICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uY29weXRyZWUoc291cmNlX3BhdGgsIGRlc3Rp
bmF0aW9uX3BhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX2Zp
bGVzeXN0ZW0uY29weWZpbGUoc291cmNlX3BhdGgsIGRlc3RpbmF0aW9uX3BhdGgpCisKKyAgICBk
ZWYgZG93bmxvYWRfdGVzdHMoc2VsZiwgZGVzdGluYXRpb25fZGlyZWN0b3J5LCB0ZXN0X3BhdGhz
PVtdKToKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5kb3dubG9hZF9jc3N3Z190ZXN0czoKKyAg
ICAgICAgICAgIHNlbGYuY2hlY2tvdXRfdGVzdF9yZXBvc2l0b3J5KHNlbGYudGVzdF9yZXZpc2lv
bnNbc2VsZi5DU1NfTkFNRV0sIHNlbGYuQ1NTX1VSTCwgc2VsZi5jc3N3Z190ZXN0c19kaXJlY3Rv
cnkpCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZG93bmxvYWRfd2ViX3BsYXRmb3JtX3Rlc3Rz
OgorICAgICAgICAgICAgc2VsZi5jaGVja291dF90ZXN0X3JlcG9zaXRvcnkoc2VsZi50ZXN0X3Jl
dmlzaW9uc1tzZWxmLldQVF9OQU1FXSwgc2VsZi5XUFRfVVJMLCBzZWxmLndlYl9wbGF0Zm9ybV90
ZXN0c19kaXJlY3RvcnkpCisgICAgICAgIHNlbGYuY29weV90ZXN0cyhkZXN0aW5hdGlvbl9kaXJl
Y3RvcnksIHRlc3RfcGF0aHMpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2ltcG9ydGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBv
cnRlci5weQppbmRleCA5NTM0OGUwM2FiMzUxMmYwZTBiYzFmYmQwNzgyN2IzZTgyZWM0ZTM1Li5m
OGY4OGUwMTQ3Yzk4OGQ5ZTA2NGJiN2YxZDhhM2FhZjliMmJjMzY0IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKQEAgLTEsNiArMSw3IEBACiAjIS91c3Iv
YmluL2VudiBweXRob24KIAogIyBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNv
cnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNSBDYW5v
biBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI4LDE3ICsyOSwxNSBAQAogIyBTVUNIIERBTUFHRS4KIAogIiIiCi0gVGhpcyBzY3JpcHQg
aW1wb3J0cyBhIGRpcmVjdG9yeSBvZiBXM0MgQ1NTIHRlc3RzIGludG8gV2ViS2l0LgotCi0gWW91
IG11c3QgaGF2ZSBjaGVja2VkIG91dCB0aGUgVzNDIHJlcG9zaXRvcnkgdG8geW91ciBsb2NhbCBk
cml2ZS4KKyBUaGlzIHNjcmlwdCBpbXBvcnRzIFczQyB0ZXN0cyBpbnRvIFdlYktpdCwgZWl0aGVy
IGZyb20gYSBsb2NhbCBmb2xkZXIgb3IgYnkgY2xvbmluZyBXM0MgQ1NTIGFuZCBXUFQgcmVwb3Np
dG9yaWVzLgogCiAgVGhpcyBzY3JpcHQgd2lsbCBpbXBvcnQgdGhlIHRlc3RzIGludG8gV2ViS2l0
IGZvbGxvd2luZyB0aGVzZSBydWxlczoKIAotICAgIC0gQWxsIHRlc3RzIGFyZSBpbXBvcnRlZCBp
bnRvIExheW91dFRlc3RzL3czYworICAgIC0gQWxsIHRlc3RzIGFyZSBieSBkZWZhdWx0IGltcG9y
dGVkIGludG8gTGF5b3V0VGVzdHMvdzNjCiAKICAgICAtIFRlc3RzIHdpbGwgYmUgaW1wb3J0ZWQg
aW50byBhIGRpcmVjdG9yeSB0cmVlIHRoYXQKLSAgICAgIG1pcnJvcnMgdGhlIENTUyBNZXJjdXJp
YWwgcmVwby4gRm9yIGV4YW1wbGUsIDxjc3N3Z19yZXBvX3Jvb3Q+L2NzczIuMSBpcyBicm91Z2h0
IGluCi0gICAgICBhcyBMYXlvdXRUZXN0cy9jc3N3Zy9jc3MyLjEsIG1haW50YWluaW5nIHRoZSBl
bnRpcmUgZGlyZWN0b3J5IHN0cnVjdHVyZSB1bmRlciB0aGF0CisgICAgICBtaXJyb3JzIHRoZSBD
U1MgYW5kIFdQVCByZXBvc2l0b3JpZXMuIEZvciBleGFtcGxlLCA8Y3Nzd2dfcmVwb19yb290Pi9j
c3MyLjEgc2hvdWxkIGJlIGJyb3VnaHQgaW4KKyAgICAgIGFzIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9jc3N3Zy10ZXN0cy9jc3MyLjEsIG1haW50YWluaW5nIHRoZSBlbnRpcmUgZGlyZWN0b3J5
IHN0cnVjdHVyZSB1bmRlciB0aGF0CiAKICAgICAtIEJ5IGRlZmF1bHQsIG9ubHkgcmVmdGVzdHMg
YW5kIGpzdGVzdCBhcmUgaW1wb3J0ZWQuIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBhIC1h
IG9yIC0tYWxsCiAgICAgICBhcmd1bWVudApAQCAtNDcsOSArNDYsMTUgQEAKICAgICAgIHRoZXkg
YXJlIG92ZXJ3cml0dGVuIHdpdGggdGhlIGlkZWEgdGhhdCBydW5uaW5nIHRoaXMgc2NyaXB0IHdv
dWxkIHJlZnJlc2ggZmlsZXMgcGVyaW9kaWNhbGx5LgogICAgICAgVGhpcyBjYW4gYWxzbyBiZSBv
dmVycmlkZGVuIGJ5IGEgLW4gb3IgLS1uby1vdmVyd3JpdGUgZmxhZwogCisgICAgLSBJZiBubyBp
bXBvcnRfZGlyZWN0b3J5IGlzIHByb3ZpZGVkLCB0aGUgc2NyaXB0IHdpbGwgZG93bmxvYWQgdGhl
IHRlc3RzIGZyb20gdGhlIFczQyBnaXRodWIgcmVwb3NpdG9yaWVzLgorICAgICAgVGhlIHNlbGVj
dGlvbiBvZiB0ZXN0cyBhbmQgZm9sZGVycyB0byBpbXBvcnQgd2lsbCBiZSBiYXNlZCBvbiB0aGUg
Zm9sbG93aW5nIGZpbGVzOgorICAgICAgICAgMS4gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jl
c291cmNlcy9JbmZyYXN0cnVjdHVyZVBhdGhzIGxpc3QgdGhlIGluZnJhc3RydWN0dXJlIGZvbGRl
cnMgdGhhdCBuZWVkIHRvIGJlIGltcG9ydGVkLgorICAgICAgICAgMi4gTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3Jlc291cmNlcy9JbXBvcnRFeHBlY3RhdGlvbnMgbGlzdCB0aGUgdGVzdCBzdWl0
ZXMgb3IgdGVzdHMgdG8gTk9UIGltcG9ydC4KKwogICAgIC0gQWxsIGZpbGVzIGFyZSBjb252ZXJ0
ZWQgdG8gd29yayBpbiBXZWJLaXQ6Ci0gICAgICAgICAxLiBQYXRocyB0byB0ZXN0aGFybmVzcy5q
cyBmaWxlcyBhcmUgbW9kaWZpZWQgcG9pbnQgdG8gV2Via2l0J3MgY29weSBvZiB0aGVtIGluCi0g
ICAgICAgICAgICBMYXlvdXRUZXN0cy9yZXNvdXJjZXMsIHVzaW5nIHRoZSBjb3JyZWN0IHJlbGF0
aXZlIHBhdGggZnJvbSB0aGUgbmV3IGxvY2F0aW9uCisgICAgICAgICAxLiBQYXRocyB0byB0ZXN0
aGFybmVzcy5qcyBmaWxlcyBhcmUgbW9kaWZpZWQgdG8gcG9pbnQgdG8gV2Via2l0J3MgY29weSBv
ZiB0aGVtIGluCisgICAgICAgICAgICBMYXlvdXRUZXN0cy9yZXNvdXJjZXMsIHVzaW5nIHRoZSBj
b3JyZWN0IHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgbmV3IGxvY2F0aW9uLgorICAgICAgICAgICAg
VGhpcyBpcyBhcHBsaWVkIHRvIENTUyB0ZXN0cyBidXQgbm90IHRvIFdQVCB0ZXN0cy4KICAgICAg
ICAgIDIuIEFsbCBDU1MgcHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtdmVuZG9yIHBy
ZWZpeCBhcmUgcHJlZml4ZWQgLSB0aGlzIGN1cnJlbnQKICAgICAgICAgICAgIGxpc3Qgb2Ygd2hh
dCBuZWVkcyBwcmVmaXhlcyBpcyByZWFkIGZyb20gU291cmNlL1dlYkNvcmUvQ1NTL0NTU1Byb3Bl
cnRpZXMuaW4KICAgICAgICAgIDMuIEVhY2ggcmVmdGVzdCBoYXMgaXRzIG93biBjb3B5IG9mIGl0
cyByZWZlcmVuY2UgZmlsZSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9ucwpAQCAtODMs
NiArODgsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVyIGltcG9ydCBXZWJL
aXRGaW5kZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNj
cmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LnczYy50ZXN0X3BhcnNlciBpbXBvcnQgVGVzdFBhcnNl
cgogZnJvbSB3ZWJraXRweS53M2MudGVzdF9jb252ZXJ0ZXIgaW1wb3J0IGNvbnZlcnRfZm9yX3dl
YmtpdAorZnJvbSB3ZWJraXRweS53M2MudGVzdF9kb3dubG9hZGVyIGltcG9ydCBUZXN0RG93bmxv
YWRlcgogCiBDSEFOR0VTRVRfTk9UX0FWQUlMQUJMRSA9ICdOb3QgQXZhaWxhYmxlJwogCkBAIC05
MSw5ICs5Nyw5IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogZGVmIG1h
aW4oX2FyZ3YsIF9zdGRvdXQsIF9zdGRlcnIpOgogICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZV9h
cmdzKCkKLSAgICBpbXBvcnRfZGlyID0gYXJnc1swXQorICAgIGltcG9ydF9kaXIgPSBhcmdzWzBd
IGlmIGxlbihhcmdzKSA+IDAgZWxzZSBOb25lCiAKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMo
aW1wb3J0X2Rpcik6CisgICAgaWYgaW1wb3J0X2RpciBhbmQgbm90IG9zLnBhdGguZXhpc3RzKGlt
cG9ydF9kaXIpOgogICAgICAgICBzeXMuZXhpdCgnU291cmNlIGRpcmVjdG9yeSAlcyBub3QgZm91
bmQhJyAlIGltcG9ydF9kaXIpCiAKICAgICBjb25maWd1cmVfbG9nZ2luZygpCkBAIC0xMTksMjIg
KzEyNSwyOSBAQCBkZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKIAogCiBkZWYgcGFyc2VfYXJncygp
OgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0ndXNhZ2U6ICVwcm9n
IFtvcHRpb25zXSB3M2NfdGVzdF9kaXJlY3RvcnknKQorICAgIHBhcnNlciA9IG9wdHBhcnNlLk9w
dGlvblBhcnNlcih1c2FnZT0ndXNhZ2U6ICVwcm9nIFtvcHRpb25zXSBbdzNjX3Rlc3RfZGlyZWN0
b3J5XScpCiAKICAgICBwYXJzZXIuYWRkX29wdGlvbignLW4nLCAnLS1uby1vdmVyd3JpdGUnLCBk
ZXN0PSdvdmVyd3JpdGUnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywgZGVmYXVsdD1UcnVlLAogICAg
ICAgICBoZWxwPSdGbGFnIHRvIHByZXZlbnQgZHVwbGljYXRlIHRlc3QgZmlsZXMgZnJvbSBvdmVy
d3JpdGluZyBleGlzdGluZyB0ZXN0cy4gQnkgZGVmYXVsdCwgdGhleSB3aWxsIGJlIG92ZXJ3cml0
dGVuJykKICAgICBwYXJzZXIuYWRkX29wdGlvbignLWwnLCAnLS1uby1saW5rcy1jb252ZXJzaW9u
JywgZGVzdD0nY29udmVydF90ZXN0X2hhcm5lc3NfbGlua3MnLCBhY3Rpb249J3N0b3JlX2ZhbHNl
JywgZGVmYXVsdD1UcnVlLAotICAgICAgICBoZWxwPSdEbyBub3QgY2hhbmdlIGxpbmtzICh0ZXN0
aGFybmVzcyBqcyBvciBjc3MgZS5nLikuIEJ5IGRlZmF1bHQsIGxpbmtzIGFyZSBjb252ZXJ0ZWQg
dG8gcG9pbnQgdG8gV2ViS2l0IHRlc3RoYXJuZXNzIGZpbGVzLicpCisgICAgICAgIGhlbHA9J0Rv
IG5vdCBjaGFuZ2UgbGlua3MgKHRlc3RoYXJuZXNzIGpzIG9yIGNzcyBlLmcuKS4gVGhpcyBvcHRp
b24gb25seSBhcHBsaWVzIHdoZW4gcHJvdmlkaW5nIGEgc291cmNlIGRpcmVjdG9yeSwgaW4gd2hp
Y2ggY2FzZSBieSBkZWZhdWx0LCBsaW5rcyBhcmUgY29udmVydGVkIHRvIHBvaW50IHRvIFdlYktp
dCB0ZXN0aGFybmVzcyBmaWxlcy4gV2hlbiB0ZXN0cyBhcmUgZG93bmxvYWRlZCBmcm9tIFczQyBy
ZXBvc2l0b3J5LCBsaW5rcyBhcmUgY29udmVydGVkIGZvciBDU1MgdGVzdHMgYW5kIHJlbWFpbiB1
bmNoYW5nZWQgZm9yIFdQVCB0ZXN0cycpCiAKICAgICBwYXJzZXIuYWRkX29wdGlvbignLWEnLCAn
LS1hbGwnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICBoZWxw
PSdJbXBvcnQgYWxsIHRlc3RzIGluY2x1ZGluZyByZWZ0ZXN0cywgSlMgdGVzdHMsIGFuZCBtYW51
YWwvcGl4ZWwgdGVzdHMuIEJ5IGRlZmF1bHQsIG9ubHkgcmVmdGVzdHMgYW5kIEpTIHRlc3RzIGFy
ZSBpbXBvcnRlZCcpCiAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1kJywgJy0tZGVzdC1kaXInLCBk
ZXN0PSdkZXN0aW5hdGlvbicsIGRlZmF1bHQ9J3czYycsCiAgICAgICAgIGhlbHA9J0ltcG9ydCBp
bnRvIGEgc3BlY2lmaWVkIGRpcmVjdG9yeSByZWxhdGl2ZSB0byB0aGUgTGF5b3V0VGVzdHMgcm9v
dC4gQnkgZGVmYXVsdCwgaW1wb3J0cyBpbnRvIHczYycpCiAgICAgcGFyc2VyLmFkZF9vcHRpb24o
Jy10JywgJy0tdGVzdC1wYXRoJywgYWN0aW9uPSdhcHBlbmQnLCBkZXN0PSd0ZXN0X3BhdGhzJywg
ZGVmYXVsdD1bXSwKLSAgICAgICAgaGVscD0nSW1wb3J0IG9ubHkgdGVzdHMgaW4gdGhlIHN1cHBs
aWVkIHN1YmRpcmVjdG9yeSBvZiB0aGUgdzNjX3Rlc3RfZGlyZWN0b3J5LiBDYW4gYmUgc3VwcGxp
ZWQgbXVsdGlwbGUgdGltZXMgdG8gZ2l2ZSBtdWx0aXBsZSBwYXRocycpCisgICAgICAgIGhlbHA9
J0ltcG9ydCBvbmx5IHRlc3RzIGluIHRoZSBzdXBwbGllZCBzdWJkaXJlY3Rvcnkgb2YgdGhlIHNv
dXJjZSBkaXJlY3RvcnkuIENhbiBiZSBzdXBwbGllZCBtdWx0aXBsZSB0aW1lcyB0byBnaXZlIG11
bHRpcGxlIHBhdGhzLiBGb3IgdGVzdHMgZGlyZWN0bHkgY2xvbmVkIGZyb20gVzNDIHJlcG9zaXRv
cmllcywgdXNlIFwnJyArIFRlc3REb3dubG9hZGVyLkNTU19OQU1FICsgJy9cJyBvciBcJycgKyBU
ZXN0RG93bmxvYWRlci5XUFRfTkFNRSArICcvXCcgcHJlZml4ZXMgdG8gZmlsdGVyIENTUyBvciBX
UFQgdGVzdHMnKQorCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy12JywgJy0tdmVyYm9zZScsIGFj
dGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9J1ByaW50IG1h
eGltYWwgbG9nJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1uby1mZXRjaCcsIGFjdGlvbj0n
c3RvcmVfZmFsc2UnLCBkZXN0PSdmZXRjaCcsIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgaGVscD0n
RG8gbm90IGZldGNoIHRoZSBDU1MvV1BUIHJlcG9zaXRvcmllcy4gQnkgZGVmYXVsdCwgcmVwb3Np
dG9yaWVzIGFyZSBmZXRjaGVkIGlmIGEgc291cmNlIGRpcmVjdG9yeSBpcyBub3QgcHJvdmlkZWQn
KQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWltcG9ydC1hbGwnLCBhY3Rpb249J3N0b3JlX3Ry
dWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICBoZWxwPSdJZ25vcmUgdGhlIEltcG9ydEV4cGVj
dGF0aW9ucyBmaWxlLiBBbGwgdGVzdHMgd2lsbCBiZSBpbXBvcnRlZC4gVGhpcyBvcHRpb24gb25s
eSBhcHBsaWVzIHdoZW4gdGVzdHMgYXJlIGRvd25sb2FkZWQgZnJvbSBXM0MgcmVwb3NpdG9yeScp
CiAKICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotICAgIGlmIGxlbihh
cmdzKSAhPSAxOgorICAgIGlmIGxlbihhcmdzKSA+IDE6CiAgICAgICAgIHBhcnNlci5lcnJvcign
SW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMnKQogICAgIHJldHVybiBvcHRpb25zLCBhcmdz
CiAKQEAgLTE0OCwyNSArMTYxLDQ5IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogCiAg
ICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IHNlbGYuaG9zdC5maWxlc3lzdGVtCiAKKyAgICAgICAg
c2VsZi5pbXBvcnRfbGlzdCA9IFtdCisgICAgICAgIHNlbGYuX2ltcG9ydGluZ19kb3dubG9hZGVk
X3Rlc3RzID0gc291cmNlX2RpcmVjdG9yeSBpcyBOb25lCisKICAgICAgICAgd2Via2l0X2ZpbmRl
ciA9IFdlYktpdEZpbmRlcihzZWxmLmZpbGVzeXN0ZW0pCiAgICAgICAgIHNlbGYuX3dlYmtpdF9y
b290ID0gd2Via2l0X2ZpbmRlci53ZWJraXRfYmFzZSgpCi0KICAgICAgICAgc2VsZi5kZXN0aW5h
dGlvbl9kaXJlY3RvcnkgPSB3ZWJraXRfZmluZGVyLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgiTGF5
b3V0VGVzdHMiLCBvcHRpb25zLmRlc3RpbmF0aW9uKQorICAgICAgICBzZWxmLmxheW91dF90ZXN0
c193M2NfcGF0aCA9IHdlYmtpdF9maW5kZXIucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRU
ZXN0cycsICdpbXBvcnRlZCcsICd3M2MnKQorICAgICAgICBzZWxmLnRlc3RzX2Rvd25sb2FkX3Bh
dGggPSB3ZWJraXRfZmluZGVyLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnV2ViS2l0QnVpbGQnLCAn
dzNjLXRlc3RzJykKIAotICAgICAgICBzZWxmLmltcG9ydF9saXN0ID0gW10KKyAgICAgICAgc2Vs
Zi5fdGVzdF9kb3dubG9hZGVyID0gTm9uZQogCiAgICAgZGVmIGRvX2ltcG9ydChzZWxmKToKLSAg
ICAgICAgaWYgbGVuKHNlbGYub3B0aW9ucy50ZXN0X3BhdGhzKSA9PSAwOgorICAgICAgICBpZiBu
b3Qgc2VsZi5zb3VyY2VfZGlyZWN0b3J5OgorICAgICAgICAgICAgX2xvZy5pbmZvKCdEb3dubG9h
ZGluZyBXM0MgdGVzdCByZXBvc2l0b3JpZXMnKQorICAgICAgICAgICAgc2VsZi5zb3VyY2VfZGly
ZWN0b3J5ID0gc2VsZi5maWxlc3lzdGVtLmpvaW4oc2VsZi50ZXN0c19kb3dubG9hZF9wYXRoLCAn
dG8tYmUtaW1wb3J0ZWQnKQorICAgICAgICAgICAgc2VsZi5maWxlc3lzdGVtLm1heWJlX21ha2Vf
ZGlyZWN0b3J5KHNlbGYudGVzdHNfZG93bmxvYWRfcGF0aCkKKyAgICAgICAgICAgIHNlbGYuZmls
ZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShzZWxmLnNvdXJjZV9kaXJlY3RvcnkpCisgICAg
ICAgICAgICBzZWxmLnRlc3RfZG93bmxvYWRlcigpLmRvd25sb2FkX3Rlc3RzKHNlbGYuc291cmNl
X2RpcmVjdG9yeSwgc2VsZi5vcHRpb25zLnRlc3RfcGF0aHMpCisKKyAgICAgICAgaWYgbm90IHNl
bGYub3B0aW9ucy50ZXN0X3BhdGhzIG9yIHNlbGYuX2ltcG9ydGluZ19kb3dubG9hZGVkX3Rlc3Rz
OgogICAgICAgICAgICAgc2VsZi5maW5kX2ltcG9ydGFibGVfdGVzdHMoc2VsZi5zb3VyY2VfZGly
ZWN0b3J5KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZm9yIHRlc3RfcGF0aCBpbiBzZWxm
Lm9wdGlvbnMudGVzdF9wYXRoczoKLSAgICAgICAgICAgICAgICBzZWxmLmZpbmRfaW1wb3J0YWJs
ZV90ZXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5zb3VyY2VfZGlyZWN0b3J5LCB0ZXN0X3BhdGgpKQor
ICAgICAgICAgICAgICAgIHNlbGYuZmluZF9pbXBvcnRhYmxlX3Rlc3RzKHNlbGYuZmlsZXN5c3Rl
bS5qb2luKHNlbGYuc291cmNlX2RpcmVjdG9yeSwgdGVzdF9wYXRoKSkKKwogICAgICAgICBzZWxm
LmltcG9ydF90ZXN0cygpCiAKKyAgICBkZWYgdGVzdF9kb3dubG9hZGVyKHNlbGYpOgorICAgICAg
ICBpZiBub3Qgc2VsZi5fdGVzdF9kb3dubG9hZGVyOgorICAgICAgICAgICAgZG93bmxvYWRfb3B0
aW9ucyA9IFRlc3REb3dubG9hZGVyLmRlZmF1bHRfb3B0aW9ucygpCisgICAgICAgICAgICBkb3du
bG9hZF9vcHRpb25zLmZldGNoID0gc2VsZi5vcHRpb25zLmZldGNoCisgICAgICAgICAgICBkb3du
bG9hZF9vcHRpb25zLnZlcmJvc2UgPSBzZWxmLm9wdGlvbnMudmVyYm9zZQorICAgICAgICAgICAg
ZG93bmxvYWRfb3B0aW9ucy5pbXBvcnRfYWxsID0gc2VsZi5vcHRpb25zLmltcG9ydF9hbGwKKyAg
ICAgICAgICAgIHNlbGYuX3Rlc3RfZG93bmxvYWRlciA9IFRlc3REb3dubG9hZGVyKHNlbGYudGVz
dHNfZG93bmxvYWRfcGF0aCwgc2VsZi5ob3N0LCBkb3dubG9hZF9vcHRpb25zKQorICAgICAgICBy
ZXR1cm4gc2VsZi5fdGVzdF9kb3dubG9hZGVyCisKICAgICBkZWYgc2hvdWxkX2tlZXBfc3ViZGly
KHNlbGYsIHJvb3QsIHN1YmRpcik6CisgICAgICAgIGlmIHN1YmRpci5zdGFydHN3aXRoKCcuJyk6
CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2VsZi5faW1wb3J0aW5nX2Rv
d25sb2FkZWRfdGVzdHM6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBESVJTX1RP
X1NLSVAgPSAoJ3dvcmstaW4tcHJvZ3Jlc3MnLCAndG9vbHMnLCAnc3VwcG9ydCcpCi0gICAgICAg
IHNob3VsZF9za2lwID0gc3ViZGlyLnN0YXJ0c3dpdGgoJy4nKSBvciAocm9vdCA9PSBzZWxmLnNv
dXJjZV9kaXJlY3RvcnkgYW5kIHN1YmRpciBpbiBESVJTX1RPX1NLSVApCi0gICAgICAgIHJldHVy
biBub3Qgc2hvdWxkX3NraXAKKyAgICAgICAgcmV0dXJuIG5vdCAocm9vdCA9PSBzZWxmLnNvdXJj
ZV9kaXJlY3RvcnkgYW5kIHN1YmRpciBpbiBESVJTX1RPX1NLSVApCiAKICAgICBkZWYgc2hvdWxk
X3NraXBfZmlsZShzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgICMgRm9yIHNvbWUgcmVhc29uIHRo
ZSB3M2MgcmVwbyBjb250YWlucyByYW5kb20gcGVybCBzY3JpcHRzIHdlIGRvbid0IGNhcmUgYWJv
dXQuCkBAIC0yMzgsNiArMjc1LDExIEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAg
ICAgICAgICAgICAgIHNlbGYuaW1wb3J0X2xpc3QuYXBwZW5kKHsnZGlybmFtZSc6IHJvb3QsICdj
b3B5X2xpc3QnOiBjb3B5X2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICdyZWZ0ZXN0cyc6IHJl
ZnRlc3RzLCAnanN0ZXN0cyc6IGpzdGVzdHMsICd0b3RhbF90ZXN0cyc6IHRvdGFsX3Rlc3RzfSkK
IAorICAgIGRlZiBzaG91bGRfY29udmVydF90ZXN0X2hhcm5lc3NfbGlua3Moc2VsZiwgdGVzdCk6
CisgICAgICAgIGlmIHNlbGYuX2ltcG9ydGluZ19kb3dubG9hZGVkX3Rlc3RzOgorICAgICAgICAg
ICAgcmV0dXJuIG5vdCB0ZXN0LnN0YXJ0c3dpdGgoVGVzdERvd25sb2FkZXIuV1BUX05BTUUpCisg
ICAgICAgIHJldHVybiBzZWxmLm9wdGlvbnMuY29udmVydF90ZXN0X2hhcm5lc3NfbGlua3MKKwog
ICAgIGRlZiBpbXBvcnRfdGVzdHMoc2VsZik6CiAgICAgICAgIHRvdGFsX2ltcG9ydGVkX3Rlc3Rz
ID0gMAogICAgICAgICB0b3RhbF9pbXBvcnRlZF9yZWZ0ZXN0cyA9IDAKQEAgLTMwNCw3ICszNDYs
NyBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBtaW1ldHlw
ZSA9IG1pbWV0eXBlcy5ndWVzc190eXBlKG9yaWdfZmlsZXBhdGgpCiAgICAgICAgICAgICAgICAg
aWYgJ2h0bWwnIGluIHN0cihtaW1ldHlwZVswXSkgb3IgJ3htbCcgaW4gc3RyKG1pbWV0eXBlWzBd
KSAgb3IgJ2NzcycgaW4gc3RyKG1pbWV0eXBlWzBdKToKICAgICAgICAgICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkX2ZpbGUgPSBjb252ZXJ0X2Zvcl93
ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lPW9yaWdfZmlsZXBhdGgsIHJlZmVyZW5jZV9zdXBwb3J0
X2luZm89cmVmZXJlbmNlX3N1cHBvcnRfaW5mbywgY29udmVydF90ZXN0X2hhcm5lc3NfbGlua3M9
c2VsZi5vcHRpb25zLmNvbnZlcnRfdGVzdF9oYXJuZXNzX2xpbmtzKQorICAgICAgICAgICAgICAg
ICAgICAgICAgY29udmVydGVkX2ZpbGUgPSBjb252ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZp
bGVuYW1lPW9yaWdfZmlsZXBhdGgsIHJlZmVyZW5jZV9zdXBwb3J0X2luZm89cmVmZXJlbmNlX3N1
cHBvcnRfaW5mbywgY29udmVydF90ZXN0X2hhcm5lc3NfbGlua3M9c2VsZi5zaG91bGRfY29udmVy
dF90ZXN0X2hhcm5lc3NfbGlua3Moc3VicGF0aCkpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dDoKICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2cud2FybignRmFpbGVkIGNvbnZlcnRpbmcg
JXMnLCBvcmlnX2ZpbGVwYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkX2NvbnZl
cnNpb25fZmlsZXMuYXBwZW5kKG9yaWdfZmlsZXBhdGgpCkBAIC0zODQsMTMgKzQyNiwxMiBAQCBj
bGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKIAogICAgICAgICBub3cgPSBkYXRldGltZS5kYXRl
dGltZS5ub3coKQogCi0gICAgICAgIGltcG9ydF9sb2cgPSBvcGVuKG9zLnBhdGguam9pbihpbXBv
cnRfZGlyZWN0b3J5LCAndzNjLWltcG9ydC5sb2cnKSwgJ3cnKQorICAgICAgICBpbXBvcnRfbG9n
ID0gb3BlbihzZWxmLmZpbGVzeXN0ZW0uam9pbihpbXBvcnRfZGlyZWN0b3J5LCAndzNjLWltcG9y
dC5sb2cnKSwgJ3cnKQogICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdUaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS5cbicpCiAg
ICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2Via2l0LlxuJykKLSAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnSW5zdGVhZCwgcHVz
aCBjaGFuZ2VzIHRvIHRoZSBXM0MgQ1NTIHJlcG86XG4nKQotICAgICAgICBpbXBvcnRfbG9nLndy
aXRlKCdcdGh0dHA6Ly9oZy5jc3N3Zy5vcmcvdGVzdFxuJykKLSAgICAgICAgaW1wb3J0X2xvZy53
cml0ZSgnT3IgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXM0MgQ1NTIGdpdGh1Yjpcbicp
Ci0gICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1x0aHR0cHM6Ly9naXRodWIuY29tL3czYy9jc3N3
Zy10ZXN0XG5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0luc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgVzNDIENTUyBvciBXUFQgZ2l0aHViOlxuJykKKyAgICAgICAg
aW1wb3J0X2xvZy53cml0ZSgnXHRodHRwczovL2dpdGh1Yi5jb20vdzNjL2Nzc3dnLXRlc3Rcbicp
CisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1x0aHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHNcblxuJykKICAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJraXQgdG8gcmVpbXBvcnRc
blxuJykKICAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlXG5cbicpCiAgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LVxuJykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDU2NzU5N2IyMWQyYTNkNDUw
MWE0NjdiMGNiNzJhZDI5MzQ5ZGI4YjYuLjdmMjM3NGVlMWU1ZjJkZTk2YmFkOWU1M2QxOWEwZTgx
MGRjMTg1MzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDE1LTAxLTI2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+
CisKKyAgICAgICAgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGF1dG9tYXRlIHRo
ZSBwcm9jZXNzIG9mIGNsb25pbmcgVzNDIHRlc3Qgc3VpdGUgYW5kIGltcG9ydGluZyB0ZXN0cyBm
cm9tIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzQ3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bmZyYXN0cnVjdHVyZVBhdGhzIGRlZmluZXMgaW5mcmFzdHJ1Y3R1cmUgZmlsZXMgb3IgZGlyZWN0
b3JpZXMKKyAgICAgICAgdGhhdCBzaG91bGQgYmUgc2tpcHBlZCBvciBjb3BpZWQuCisgICAgICAg
IEltcG9ydEV4cGVjdGFydGlvbnMgZGVmaW5lcyB0aGUgdGVzdHMgdG8gaW1wb3J0LgorICAgICAg
ICBUZXN0UmV2aXNpb25zIGRlZmluZXMgdGhlIHJldmlzaW9ucyBvZiB0aGUgQ1NTIGFuZCBXUFQg
cmVwb3NpdG9yaWVzCisgICAgICAgIHVzZWQgdG8gaW1wb3J0IHRlc3RzLgorCisgICAgICAgICog
cmVzb3VyY2VzL0ltcG9ydEV4cGVjdGF0aW9uczogQWRkZWQuCisgICAgICAgICogcmVzb3VyY2Vz
L0luZnJhc3RydWN0dXJlUGF0aHM6IEFkZGVkLgorICAgICAgICAqIHJlc291cmNlcy9UZXN0UmV2
aXNpb25zOiBBZGRlZC4KKwogMjAxNS0wMS0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdzNjL2NhbnZhcy9yZXNvdXJjZXMvIGNv
bW1vbiByZXNvdXJjZXMgdG8gdzNjL3Jlc291cmNlcy8uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL0ltcG9ydEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9yZXNvdXJjZXMvSW1wb3J0RXhwZWN0YXRpb25zCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRj
MGE0N2ViNjljN2VmNDI4NjJjYmJhNmI0ZDEwZjQyNGQ0ZDM1MTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL0ltcG9ydEV4cGVjdGF0aW9ucwpA
QCAtMCwwICsxLDExMiBAQAorY3Nzd2ctdGVzdHMvY29tcG9zaXRpbmctMSBbIFNraXAgXQorY3Nz
d2ctdGVzdHMvY3NzLWFsaWduLTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1hbmltYXRpb25z
LTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1iYWNrZ3JvdW5kcy0zIFsgU2tpcCBdCitjc3N3
Zy10ZXN0cy9jc3MtYm94LTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1icmVhay0zIFsgU2tp
cCBdCitjc3N3Zy10ZXN0cy9jc3MtY29sb3ItMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWNv
bmRpdGlvbmFsLTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1jb3VudGVyLXN0eWxlcy0zIFsg
U2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtZXhjbHVzaW9ucy0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0
cy9jc3MtZmxleGJveC0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtZm9udHMtMyBbIFNraXAg
XQorY3Nzd2ctdGVzdHMvY3NzLWdjcG0tMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWdyaWQt
MSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWltYWdlcy0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0
cy9jc3MtbGlzdHMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLW1hc2tpbmctMSBbIFNraXAg
XQorY3Nzd2ctdGVzdHMvY3NzLW11bHRpY29sLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1u
YW1lc3BhY2VzLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1wYWdlLTMgWyBTa2lwIF0KK2Nz
c3dnLXRlc3RzL2Nzcy1yZWdpb25zLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1ydWJ5LTEg
WyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1zaGFwZXMtMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMv
Y3NzLXNwZWVjaC0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3Mtc3R5bGUtYXR0ci0xIFsgU2tp
cCBdCitjc3N3Zy10ZXN0cy9jc3Mtc3ludGF4LTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy10
YWJsZXMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXRleHQtMyBbIFNraXAgXQorY3Nzd2ct
dGVzdHMvY3NzLXRleHQtZGVjb3ItMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXRyYW5zZm9y
bXMtMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXRyYW5zaXRpb25zLTEgWyBTa2lwIF0KK2Nz
c3dnLXRlc3RzL2Nzcy11aS0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtdmFsdWVzLTMgWyBT
a2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy12YXJpYWJsZXMtMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMv
Y3NzLXdyaXRpbmctbW9kZXMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzMSBbIFNraXAgXQor
Y3Nzd2ctdGVzdHMvY3NzMjEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzc29tLTEgWyBTa2lwIF0K
K2Nzc3dnLXRlc3RzL2Nzc29tLXZpZXctMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvZmlsdGVycy0x
IFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9mb250cyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvZ2VvbWV0
cnktMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvbWVkaWFxdWVyaWVzLTMgWyBTa2lwIF0KK2Nzc3dn
LXRlc3RzL3NlbGVjdG9ycy0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9zZWxlY3RvcnMtNCBbIFNr
aXAgXQorY3Nzd2ctdGVzdHMvdmVuZG9yLWltcG9ydHMgWyBTa2lwIF0KKword2ViLXBsYXRmb3Jt
LXRlc3RzLzJkY29udGV4dCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL0RPTUV2ZW50cyBb
IFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL0ZpbGVBUEkgWyBTa2lwIF0KK3dlYi1wbGF0Zm9y
bS10ZXN0cy9JbmRleGVkREIgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9B
UEkgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwgWyBTa2lwIF0KK3dlYi1wbGF0
Zm9ybS10ZXN0cy9YTUxIdHRwUmVxdWVzdCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2Ft
YmllbnQtbGlnaHQgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9hbmltYXRpb24tdGltaW5n
IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvYXBwLXVyaSBbIFNraXAgXQord2ViLXBsYXRm
b3JtLXRlc3RzL2JhdHRlcnktc3RhdHVzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9jb3JzIFsg
U2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvY3VzdG9tLWVsZW1lbnRzIFsgU2tpcCBdCit3ZWIt
cGxhdGZvcm0tdGVzdHMvZG9tIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvZG9tcGFyc2lu
ZyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2RvbXhwYXRoIFsgU2tpcCBdCit3ZWItcGxh
dGZvcm0tdGVzdHMvZW5jb2RpbmcgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVudHNv
dXJjZSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2V4dC14aHRtbC1wdWJpZCBbIFNraXAg
XQord2ViLXBsYXRmb3JtLXRlc3RzL2dlb2xvY2F0aW9uLUFQSSBbIFNraXAgXQord2ViLXBsYXRm
b3JtLXRlc3RzL2dhbWVwYWQgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9oci10aW1lIFsg
U2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwtaW1wb3J0cyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwtbG9uZ2Rl
c2MgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sLW1lZGlhLWNhcHR1cmUgWyBTa2lw
IF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9odHRwIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMv
anMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYSBbIFNraXAgXQord2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhLXNvdXJjZSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL21lZGlh
Y2FwdHVyZS1zdHJlYW1zIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvbWljcm9kYXRhIFsg
U2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvbmF2aWdhdGlvbi10aW1pbmcgWyBTa2lwIF0KK3dl
Yi1wbGF0Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVz
dHMvb2xkLXRlc3RzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvcGFnZS12aXNpYmlsaXR5
IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvcGVyZm9ybWFuY2UtdGltZWxpbmUgWyBTa2lw
IF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9wb2ludGVyZXZlbnRzIFsgU2tpcCBdCit3ZWItcGxhdGZv
cm0tdGVzdHMvcG9pbnRlcmxvY2sgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9wcm9ncmVz
cy1ldmVudHMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9wcm94aW1pdHkgWyBTa2lwIF0K
K3dlYi1wbGF0Zm9ybS10ZXN0cy9xdWlya3MtbW9kZSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRl
c3RzL3Jlc291cmNlLXRpbWluZyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3NlbGVjdG9y
cyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3NlbGVjdG9ycy1hcGkgWyBTa2lwIF0KK3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10
ZXN0cy9zaGFkb3ctZG9tIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvc3VicmVzb3VyY2Ut
aW50ZWdyaXR5IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvdG91Y2gtZXZlbnRzIFsgU2tp
cCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvdHlwZWRhcnJheXMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9y
bS10ZXN0cy91cmwgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy91c2VyLXRpbWluZyBbIFNr
aXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3ZpYnJhdGlvbiBbIFNraXAgXQord2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYi1hbmltYXRpb25zIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVk
aW8gWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJkcml2ZXIgWyBTa2lwIF0KK3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJnbCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3Nh
Z2luZyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0YyBbIFNraXAgXQord2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnNvY2tldHMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJz
dG9yYWdlIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvd2VidnR0IFsgU2tpcCBdCit3ZWIt
cGxhdGZvcm0tdGVzdHMvd29ya2VycyBbIFNraXAgXQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL0luZnJhc3RydWN0dXJlUGF0aHMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL0luZnJhc3RydWN0dXJlUGF0aHMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmRhNzExN2FkMmU3N2JkNTUxODg4Y2FmMDVmNjM4NWExZWVlMDcwMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9yZXNvdXJjZXMvSW5mcmFzdHJ1Y3R1cmVQYXRo
cwpAQCAtMCwwICsxLDIxIEBACit7CisgICAgInBhdGhzX3RvX3NraXAiOiBbCisgICAgICAgICJj
c3N3Zy10ZXN0cy93b3JrLWluLXByb2dyZXNzIiwKKyAgICAgICAgImNzc3dnLXRlc3RzL3Rvb2xz
IiwKKworICAgICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL2NvbmZvcm1hbmNlLWNoZWNrZXJzIiwK
KyAgICAgICAgIndlYi1wbGF0Zm9ybS10ZXN0cy9kb2NzIiwKKyAgICAgICAgIndlYi1wbGF0Zm9y
bS10ZXN0cy9vbGQtdGVzdHMiCisgICAgXSwKKyAgICAicGF0aHNfdG9faW1wb3J0IjogWworICAg
ICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL2NvbW1vbiIsCisgICAgICAgICJ3ZWItcGxhdGZvcm0t
dGVzdHMvZm9udHMiLAorICAgICAgICAid2ViLXBsYXRmb3JtLXRlc3RzL2ltYWdlcyIsCisgICAg
ICAgICJ3ZWItcGxhdGZvcm0tdGVzdHMvcmVzb3VyY2VzIiwKKyAgICAgICAgIndlYi1wbGF0Zm9y
bS10ZXN0cy90b29scyIsCisgICAgICAgICJ3ZWItcGxhdGZvcm0tdGVzdHMvY29uZmlnLmRlZmF1
bHQuanNvbiIsCisgICAgICAgICJ3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmUucHkiLAorCisgICAg
ICAgICJjc3N3Zy10ZXN0cy9zdXBwb3J0IgorICAgIF0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9yZXNvdXJjZXMvVGVzdFJldmlzaW9ucyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9yZXNvdXJjZXMvVGVzdFJldmlzaW9ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDU4ZDBiZjJm
NjhlZGFmMmM1YzExNmZhOTI5M2QxZjU0MDQ4N2MwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9UZXN0UmV2aXNpb25zCkBAIC0wLDAgKzEsNCBA
QAoreworICAgICJjc3N3Zy10ZXN0cyI6ICI5ZjQ1Zjg5IiwKKyAgICAid2ViLXBsYXRmb3JtLXRl
c3RzIjogIjk5MDc5M2QiCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247225</attachid>
            <date>2015-02-24 05:14:38 -0800</date>
            <delta_ts>2015-03-02 09:20:09 -0800</delta_ts>
            <desc>Refactoring repository description and download</desc>
            <filename>bug-134764-20150224141425.patch</filename>
            <type>text/plain</type>
            <size>28336</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNDkzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2Q4M2E5OTk2Y2M0MDA4ZDcyODM5YzBlOGQ4YzUzZjA1
YzE3ODY4My4uNjQ2NTNmN2IzMTUxNzAyMTI4OGZhMTBkZmNmNGM4N2ViMGFjZjNmZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDE1LTAyLTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGF1dG9tYXRl
IHRoZSBwcm9jZXNzIG9mIGNsb25pbmcgVzNDIHRlc3Qgc3VpdGUgYW5kIGltcG9ydGluZyB0ZXN0
cyBmcm9tIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQ3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0RG93bmxvYWRlciBpcyBpbnRyb2R1Y2VkIHRvIGRvd25sb2FkIFczQyB0ZXN0cyBmcm9t
IHRoZSBvZmZpY2lhbAorICAgICAgICBXM0MgdGVzdHMgcmVwb3NpdG9yaWVzIChodHRwczovL2dp
dGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQKKyAgICAgICAgYW5kIGh0dHBzOi8v
Z2l0aHViLmNvbS93M2MvY3Nzd2ctdGVzdC5naXQpLgorICAgICAgICBUZXN0RG93bmxvYWRlciBj
bG9uZXMgdGhlIHJlcG9zaXRvcmllcyBhbmQgY2hlY2tvdXRzIHJldmlzaW9ucyBvZiB0aGUgdGVz
dHMKKyAgICAgICAgZGVmaW5lZCBpbiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2Vz
L1Rlc3RSZXBvc2l0b3JpZXMuCisKKyAgICAgICAgU2ltaWxhcmx5IHRvIGh0dHBzOi8vY29kZXJl
dmlldy5jaHJvbWl1bS5vcmcvMTQ4MTczMDE2LAorICAgICAgICBUZXN0RG93bmxvYWRlciBjb3Bp
ZXMgcGFydCBvZiB0aGUgZmlsZXMgYmFzZWQgb24gdGhlIHJ1bGVzCisgICAgICAgIGRlZmluZWQg
aW4gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9JbXBvcnRFeHBlY3RhdGlvbnMu
CisKKyAgICAgICAgVGVzdERvd25sb2FkZXIgaXMgdXNlZCBieSBUZXN0SW1wb3J0ZXIgd2hlbiBu
byBzb3VyY2UgZGlyZWN0b3J5IGlzIHByb3ZpZGVkLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS93M2MvdGVzdF9kb3dubG9hZGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3REb3dubG9h
ZGVyKToKKyAgICAgICAgKFRlc3REb3dubG9hZGVyLmRlZmF1bHRfb3B0aW9ucyk6CisgICAgICAg
IChUZXN0RG93bmxvYWRlci50ZXN0X3JlcG9zaXRvcmllcyk6CisgICAgICAgIChUZXN0RG93bmxv
YWRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0RG93bmxvYWRlci5jaGVja291dF90ZXN0X3Jl
cG9zaXRvcnkpOgorICAgICAgICAoVGVzdERvd25sb2FkZXIuX2luaXRfcGF0aHNfZnJvbV9leHBl
Y3RhdGlvbnMpOgorICAgICAgICAoVGVzdERvd25sb2FkZXIuX2FkZF90ZXN0X3N1aXRlX3BhdGhz
KToKKyAgICAgICAgKFRlc3REb3dubG9hZGVyLl9lbXB0eV9kaXJlY3RvcnkpOgorICAgICAgICAo
VGVzdERvd25sb2FkZXIuY29weV90ZXN0cyk6CisgICAgICAgIChUZXN0RG93bmxvYWRlci5kb3du
bG9hZF90ZXN0cyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRl
ci5weToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgIChU
ZXN0SW1wb3J0ZXIuX19pbml0X18pOgorICAgICAgICAoVGVzdEltcG9ydGVyLmRvX2ltcG9ydCk6
CisgICAgICAgIChUZXN0SW1wb3J0ZXIudGVzdF9kb3dubG9hZGVyKToKKyAgICAgICAgKFRlc3RJ
bXBvcnRlci5zaG91bGRfa2VlcF9zdWJkaXIpOgorICAgICAgICAoVGVzdEltcG9ydGVyLnNob3Vs
ZF9jb252ZXJ0X3Rlc3RfaGFybmVzc19saW5rcyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuaW1w
b3J0X3Rlc3RzKToKKyAgICAgICAgKFRlc3RJbXBvcnRlci53cml0ZV9pbXBvcnRfbG9nKToKKwog
MjAxNS0wMi0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgog
CiAgICAgICAgIFRlc3RzIGRvbid0IHdvcmsgb24gc29tZSBib3RzOiBGYWlsZWQgdG8gc3RvcCB3
cHR3awpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9kb3dubG9h
ZGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9kb3dubG9hZGVyLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVjNWQ3MGJmMTE5Yzg1NzE5MWEwZjM1YjZhMWNmNDNjM2RmZDkzNzEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2Rvd25sb2FkZXIu
cHkKQEAgLTAsMCArMSwxNDEgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCBDYW5vbiBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24g
SW5jLiBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIgorIFRoaXMgc2NyaXB0IGRvd25s
b2FkcyBXM0MgdGVzdCByZXBvc2l0b3JpZXMuCisiIiIKKworaW1wb3J0IGpzb24KK2ltcG9ydCBs
b2dnaW5nCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4
ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZp
bGVTeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktp
dEZpbmRlcgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfZXhwZWN0YXRp
b25zIGltcG9ydCBUZXN0RXhwZWN0YXRpb25QYXJzZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNo
ZWNrb3V0LnNjbS5naXQgaW1wb3J0IEdpdAorCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCisKKworY2xhc3MgVGVzdERvd25sb2FkZXIob2JqZWN0KToKKworICAgIEBzdGF0aWNt
ZXRob2QKKyAgICBkZWYgZGVmYXVsdF9vcHRpb25zKCk6CisgICAgICAgIG9wdGlvbnMgPSB0eXBl
KCcnLCAoKSwge30pCisgICAgICAgIG9wdGlvbnMuZmV0Y2ggPSBUcnVlCisgICAgICAgIG9wdGlv
bnMudmVyYm9zZSA9IEZhbHNlCisgICAgICAgIG9wdGlvbnMuaW1wb3J0X2FsbCA9IEZhbHNlCisg
ICAgICAgIHJldHVybiBvcHRpb25zCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGxvYWRf
dGVzdF9yZXBvc2l0b3JpZXMoKToKKyAgICAgICAgZmlsZXN5c3RlbSA9IEZpbGVTeXN0ZW0oKQor
ICAgICAgICB3ZWJraXRfZmluZGVyID0gV2ViS2l0RmluZGVyKGZpbGVzeXN0ZW0pCisgICAgICAg
IHRlc3RfcmVwb3NpdG9yaWVzX3BhdGggPSB3ZWJraXRfZmluZGVyLnBhdGhfZnJvbV93ZWJraXRf
YmFzZSgnTGF5b3V0VGVzdHMnLCAnaW1wb3J0ZWQnLCAndzNjJywgJ3Jlc291cmNlcycsICdUZXN0
UmVwb3NpdG9yaWVzJykKKyAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMoZmlsZXN5c3RlbS5yZWFk
X3RleHRfZmlsZSh0ZXN0X3JlcG9zaXRvcmllc19wYXRoKSkKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCByZXBvc2l0b3J5X2RpcmVjdG9yeSwgaG9zdCwgb3B0aW9ucyk6CisgICAgICAgIHNlbGYu
X29wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CisgICAgICAgIHNl
bGYuX2ZpbGVzeXN0ZW0gPSBob3N0LmZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5fdGVzdF9zdWl0
ZXMgPSBbXQorCisgICAgICAgIHNlbGYucmVwb3NpdG9yeV9kaXJlY3RvcnkgPSByZXBvc2l0b3J5
X2RpcmVjdG9yeQorCisgICAgICAgIHNlbGYudGVzdF9yZXBvc2l0b3JpZXMgPSBzZWxmLmxvYWRf
dGVzdF9yZXBvc2l0b3JpZXMoKQorCisgICAgICAgIHNlbGYucGF0aHNfdG9fc2tpcCA9IFtdCisg
ICAgICAgIHNlbGYucGF0aHNfdG9faW1wb3J0ID0gW10KKyAgICAgICAgZm9yIGtleSBpbiBzZWxm
LnRlc3RfcmVwb3NpdG9yaWVzOgorICAgICAgICAgICAgc2VsZi5wYXRoc190b19za2lwLmV4dGVu
ZChbc2VsZi5fZmlsZXN5c3RlbS5qb2luKGtleSwgcGF0aCkgZm9yIHBhdGggaW4gc2VsZi50ZXN0
X3JlcG9zaXRvcmllc1trZXldWydwYXRoc190b19za2lwJ11dKQorICAgICAgICAgICAgc2VsZi5w
YXRoc190b19pbXBvcnQuZXh0ZW5kKFtzZWxmLl9maWxlc3lzdGVtLmpvaW4oa2V5LCBwYXRoKSBm
b3IgcGF0aCBpbiBzZWxmLnRlc3RfcmVwb3NpdG9yaWVzW2tleV1bJ3BhdGhzX3RvX2ltcG9ydCdd
XSkKKworICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5pbXBvcnRfYWxsOgorICAgICAgICAg
ICAgd2Via2l0X2ZpbmRlciA9IFdlYktpdEZpbmRlcihzZWxmLl9maWxlc3lzdGVtKQorICAgICAg
ICAgICAgaW1wb3J0X2V4cGVjdGF0aW9uc19wYXRoID0gd2Via2l0X2ZpbmRlci5wYXRoX2Zyb21f
d2Via2l0X2Jhc2UoJ0xheW91dFRlc3RzJywgJ2ltcG9ydGVkJywgJ3czYycsICdyZXNvdXJjZXMn
LCAnSW1wb3J0RXhwZWN0YXRpb25zJykKKyAgICAgICAgICAgIHNlbGYuX2luaXRfcGF0aHNfZnJv
bV9leHBlY3RhdGlvbnMoaW1wb3J0X2V4cGVjdGF0aW9uc19wYXRoKQorCisgICAgZGVmIGNoZWNr
b3V0X3Rlc3RfcmVwb3NpdG9yeShzZWxmLCByZXZpc2lvbiwgdXJsLCBkaXJlY3RvcnkpOgorICAg
ICAgICBnaXQgPSBHaXQoJy4nLCBOb25lKQorICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3Rl
bS5leGlzdHMoZGlyZWN0b3J5KToKKyAgICAgICAgICAgIF9sb2cuaW5mbygnQ2xvbmluZyAlcyBp
bnRvICVzLi4uJyAlICh1cmwsIGRpcmVjdG9yeSkpCisgICAgICAgICAgICBnaXQuX3J1bl9naXQo
WydjbG9uZScsICctdicsICctLXJlY3Vyc2l2ZScsIHVybCwgZGlyZWN0b3J5XSkKKyAgICAgICAg
ZWxpZiBzZWxmLl9vcHRpb25zLmZldGNoIGlzIFRydWU6CisgICAgICAgICAgICBfbG9nLmluZm8o
J0ZldGNoaW5nICVzLi4uJyAlIHVybCkKKyAgICAgICAgICAgIGdpdC5fcnVuX2dpdChbJy1DJywg
ZGlyZWN0b3J5LCAnZmV0Y2gnXSkKKyAgICAgICAgX2xvZy5pbmZvKCdDaGVja2luZyBvdXQgcmV2
aXNpb24gJyArIHJldmlzaW9uKQorICAgICAgICBjaGVja291dF9hcmd1bWVudHMgPSBbJy1DJywg
ZGlyZWN0b3J5LCAnY2hlY2tvdXQnLCByZXZpc2lvbl0KKyAgICAgICAgaWYgbm90IHNlbGYuX29w
dGlvbnMudmVyYm9zZToKKyAgICAgICAgICAgIGNoZWNrb3V0X2FyZ3VtZW50cyArPSBbJy1xJ10K
KyAgICAgICAgZ2l0Ll9ydW5fZ2l0KGNoZWNrb3V0X2FyZ3VtZW50cykKKworICAgIGRlZiBfaW5p
dF9wYXRoc19mcm9tX2V4cGVjdGF0aW9ucyhzZWxmLCBmaWxlX3BhdGgpOgorICAgICAgICBpZiBu
b3Qgc2VsZi5fZmlsZXN5c3RlbS5pc2ZpbGUoZmlsZV9wYXRoKToKKyAgICAgICAgICAgIF9sb2cu
d2FybmluZygnVW5hYmxlIHRvIHJlYWQgaW1wb3J0IGV4cGVjdGF0aW9uIGZpbGU6ICVzJyAlIGZp
bGVfcGF0aCkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBwYXJzZXIgPSBUZXN0RXhwZWN0
YXRpb25QYXJzZXIoc2VsZi5faG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCksICgpLCBGYWxzZSkKKyAg
ICAgICAgZm9yIGxpbmUgaW4gcGFyc2VyLnBhcnNlKGZpbGVfcGF0aCwgc2VsZi5fZmlsZXN5c3Rl
bS5yZWFkX3RleHRfZmlsZShmaWxlX3BhdGgpKToKKyAgICAgICAgICAgIGlmICdTS0lQJyBpbiBs
aW5lLm1vZGlmaWVyczoKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhzX3RvX3NraXAuYXBwZW5k
KGxpbmUubmFtZSkKKyAgICAgICAgICAgIGVsaWYgJ1BBU1MnIGluIGxpbmUuZXhwZWN0YXRpb25z
OgorICAgICAgICAgICAgICAgIHNlbGYucGF0aHNfdG9faW1wb3J0LmFwcGVuZChsaW5lLm5hbWUp
CisKKyAgICBkZWYgX2FkZF90ZXN0X3N1aXRlX3BhdGhzKHNlbGYsIHRlc3RfcGF0aHMsIGRpcmVj
dG9yeSwgd2Via2l0X3BhdGgpOgorICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLl9maWxlc3lzdGVt
Lmxpc3RkaXIoZGlyZWN0b3J5KToKKyAgICAgICAgICAgIHBhdGggPSBzZWxmLl9maWxlc3lzdGVt
LmpvaW4od2Via2l0X3BhdGgsIG5hbWUpCisgICAgICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3
aXRoKCcuJykgYW5kIG5vdCBwYXRoIGluIHNlbGYucGF0aHNfdG9fc2tpcDoKKyAgICAgICAgICAg
ICAgICB0ZXN0X3BhdGhzLmFwcGVuZChwYXRoKQorCisgICAgZGVmIF9lbXB0eV9kaXJlY3Rvcnko
c2VsZiwgZGlyZWN0b3J5KToKKyAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoZGly
ZWN0b3J5KToKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ucm10cmVlKGRpcmVjdG9yeSkK
KyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShkaXJlY3Rvcnkp
CisKKyAgICBkZWYgY29weV90ZXN0cyhzZWxmLCBkZXN0aW5hdGlvbl9kaXJlY3RvcnksIHRlc3Rf
cGF0aHMpOgorICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLnRlc3RfcmVwb3NpdG9yaWVzOgorICAg
ICAgICAgICAgc2VsZi5fZW1wdHlfZGlyZWN0b3J5KHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihkZXN0
aW5hdGlvbl9kaXJlY3RvcnksIG5hbWUpKQorCisgICAgICAgIGNvcHlfcGF0aHMgPSBbXQorICAg
ICAgICBpZiB0ZXN0X3BhdGhzOgorICAgICAgICAgICAgY29weV9wYXRocy5leHRlbmQodGVzdF9w
YXRocykKKyAgICAgICAgICAgIGNvcHlfcGF0aHMuZXh0ZW5kKHNlbGYucGF0aHNfdG9faW1wb3J0
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi50ZXN0X3JlcG9z
aXRvcmllczoKKyAgICAgICAgICAgICAgICBzZWxmLl9hZGRfdGVzdF9zdWl0ZV9wYXRocyhjb3B5
X3BhdGhzLCBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5yZXBvc2l0b3J5X2RpcmVjdG9yeSwg
bmFtZSksIG5hbWUpCisKKyAgICAgICAgZm9yIHBhdGggaW4gY29weV9wYXRoczoKKyAgICAgICAg
ICAgIHNvdXJjZV9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYucmVwb3NpdG9yeV9k
aXJlY3RvcnksIHBhdGgpCisgICAgICAgICAgICBkZXN0aW5hdGlvbl9wYXRoID0gc2VsZi5fZmls
ZXN5c3RlbS5qb2luKGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgcGF0aCkKKyAgICAgICAgICAgIGlm
IG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzb3VyY2VfcGF0aCk6CisgICAgICAgICAgICAg
ICAgX2xvZy5lcnJvcignQ2Fubm90IGNvcHkgJXMnICUgc291cmNlX3BhdGgpCisgICAgICAgICAg
ICBlbGlmIHNlbGYuX2ZpbGVzeXN0ZW0uaXNkaXIoc291cmNlX3BhdGgpOgorICAgICAgICAgICAg
ICAgIHNlbGYuX2ZpbGVzeXN0ZW0uY29weXRyZWUoc291cmNlX3BhdGgsIGRlc3RpbmF0aW9uX3Bh
dGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0u
Y29weWZpbGUoc291cmNlX3BhdGgsIGRlc3RpbmF0aW9uX3BhdGgpCisKKyAgICBkZWYgZG93bmxv
YWRfdGVzdHMoc2VsZiwgZGVzdGluYXRpb25fZGlyZWN0b3J5LCB0ZXN0X3BhdGhzPVtdKToKKyAg
ICAgICAgZm9yIG5hbWUgaW4gc2VsZi50ZXN0X3JlcG9zaXRvcmllczoKKyAgICAgICAgICAgIHNl
bGYuY2hlY2tvdXRfdGVzdF9yZXBvc2l0b3J5KHNlbGYudGVzdF9yZXBvc2l0b3JpZXNbbmFtZV1b
J3JldmlzaW9uJ10sIHNlbGYudGVzdF9yZXBvc2l0b3JpZXNbbmFtZV1bJ3VybCddLCBzZWxmLl9m
aWxlc3lzdGVtLmpvaW4oc2VsZi5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgbmFtZSkpCisgICAgICAg
IHNlbGYuY29weV90ZXN0cyhkZXN0aW5hdGlvbl9kaXJlY3RvcnksIHRlc3RfcGF0aHMpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQppbmRleCBlMWY0ZDMwNWI0
YzEyZThjYWZiMzE2MjA5MjY2YTM1Y2Q2ZTJlYjQzLi5mN2NhMDE4MWFmMWJlN2I0MWI1NTQzNzZm
Yjc3YWIyZDE2ZmE5OGIxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2ltcG9ydGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1w
b3J0ZXIucHkKQEAgLTEsNiArMSw3IEBACiAjIS91c3IvYmluL2VudiBweXRob24KIAogIyBDb3B5
cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE3ICsyOSwxNSBAQAogIyBT
VUNIIERBTUFHRS4KIAogIiIiCi0gVGhpcyBzY3JpcHQgaW1wb3J0cyBhIGRpcmVjdG9yeSBvZiBX
M0MgQ1NTIHRlc3RzIGludG8gV2ViS2l0LgotCi0gWW91IG11c3QgaGF2ZSBjaGVja2VkIG91dCB0
aGUgVzNDIHJlcG9zaXRvcnkgdG8geW91ciBsb2NhbCBkcml2ZS4KKyBUaGlzIHNjcmlwdCBpbXBv
cnRzIFczQyB0ZXN0cyBpbnRvIFdlYktpdCwgZWl0aGVyIGZyb20gYSBsb2NhbCBmb2xkZXIgb3Ig
YnkgY2xvbmluZyBXM0MgQ1NTIGFuZCBXUFQgcmVwb3NpdG9yaWVzLgogCiAgVGhpcyBzY3JpcHQg
d2lsbCBpbXBvcnQgdGhlIHRlc3RzIGludG8gV2ViS2l0IGZvbGxvd2luZyB0aGVzZSBydWxlczoK
IAotICAgIC0gQWxsIHRlc3RzIGFyZSBpbXBvcnRlZCBpbnRvIExheW91dFRlc3RzL3czYworICAg
IC0gQWxsIHRlc3RzIGFyZSBieSBkZWZhdWx0IGltcG9ydGVkIGludG8gTGF5b3V0VGVzdHMvdzNj
CiAKICAgICAtIFRlc3RzIHdpbGwgYmUgaW1wb3J0ZWQgaW50byBhIGRpcmVjdG9yeSB0cmVlIHRo
YXQKLSAgICAgIG1pcnJvcnMgdGhlIENTUyBNZXJjdXJpYWwgcmVwby4gRm9yIGV4YW1wbGUsIDxj
c3N3Z19yZXBvX3Jvb3Q+L2NzczIuMSBpcyBicm91Z2h0IGluCi0gICAgICBhcyBMYXlvdXRUZXN0
cy9jc3N3Zy9jc3MyLjEsIG1haW50YWluaW5nIHRoZSBlbnRpcmUgZGlyZWN0b3J5IHN0cnVjdHVy
ZSB1bmRlciB0aGF0CisgICAgICBtaXJyb3JzIHRoZSBDU1MgYW5kIFdQVCByZXBvc2l0b3JpZXMu
IEZvciBleGFtcGxlLCA8Y3Nzd2dfcmVwb19yb290Pi9jc3MyLjEgc2hvdWxkIGJlIGJyb3VnaHQg
aW4KKyAgICAgIGFzIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9jc3N3Zy10ZXN0cy9jc3MyLjEs
IG1haW50YWluaW5nIHRoZSBlbnRpcmUgZGlyZWN0b3J5IHN0cnVjdHVyZSB1bmRlciB0aGF0CiAK
ICAgICAtIEJ5IGRlZmF1bHQsIG9ubHkgcmVmdGVzdHMgYW5kIGpzdGVzdCBhcmUgaW1wb3J0ZWQu
IFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBhIC1hIG9yIC0tYWxsCiAgICAgICBhcmd1bWVu
dApAQCAtNDcsOSArNDYsMTUgQEAKICAgICAgIHRoZXkgYXJlIG92ZXJ3cml0dGVuIHdpdGggdGhl
IGlkZWEgdGhhdCBydW5uaW5nIHRoaXMgc2NyaXB0IHdvdWxkIHJlZnJlc2ggZmlsZXMgcGVyaW9k
aWNhbGx5LgogICAgICAgVGhpcyBjYW4gYWxzbyBiZSBvdmVycmlkZGVuIGJ5IGEgLW4gb3IgLS1u
by1vdmVyd3JpdGUgZmxhZwogCisgICAgLSBJZiBubyBpbXBvcnRfZGlyZWN0b3J5IGlzIHByb3Zp
ZGVkLCB0aGUgc2NyaXB0IHdpbGwgZG93bmxvYWQgdGhlIHRlc3RzIGZyb20gdGhlIFczQyBnaXRo
dWIgcmVwb3NpdG9yaWVzLgorICAgICAgVGhlIHNlbGVjdGlvbiBvZiB0ZXN0cyBhbmQgZm9sZGVy
cyB0byBpbXBvcnQgd2lsbCBiZSBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIGZpbGVzOgorICAgICAg
ICAgMS4gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9UZXN0UmVwb3NpdG9yaWVz
IGxpc3RzIHRoZSByZXBvc2l0b3JpZXMgdG8gY2xvbmUsIHRoZSBjb3JyZXNwb25kaW5nIHJldmlz
aW9uIHRvIGNoZWNrb3V0IGFuZCB0aGUgaW5mcmFzdHJ1Y3R1cmUgZm9sZGVycyB0aGF0IG5lZWQg
dG8gYmUgaW1wb3J0ZWQvc2tpcHBlZC4KKyAgICAgICAgIDIuIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9yZXNvdXJjZXMvSW1wb3J0RXhwZWN0YXRpb25zIGxpc3QgdGhlIHRlc3Qgc3VpdGVzIG9y
IHRlc3RzIHRvIE5PVCBpbXBvcnQuCisKICAgICAtIEFsbCBmaWxlcyBhcmUgY29udmVydGVkIHRv
IHdvcmsgaW4gV2ViS2l0OgotICAgICAgICAgMS4gUGF0aHMgdG8gdGVzdGhhcm5lc3MuanMgZmls
ZXMgYXJlIG1vZGlmaWVkIHBvaW50IHRvIFdlYmtpdCdzIGNvcHkgb2YgdGhlbSBpbgotICAgICAg
ICAgICAgTGF5b3V0VGVzdHMvcmVzb3VyY2VzLCB1c2luZyB0aGUgY29ycmVjdCByZWxhdGl2ZSBw
YXRoIGZyb20gdGhlIG5ldyBsb2NhdGlvbgorICAgICAgICAgMS4gUGF0aHMgdG8gdGVzdGhhcm5l
c3MuanMgZmlsZXMgYXJlIG1vZGlmaWVkIHRvIHBvaW50IHRvIFdlYmtpdCdzIGNvcHkgb2YgdGhl
bSBpbgorICAgICAgICAgICAgTGF5b3V0VGVzdHMvcmVzb3VyY2VzLCB1c2luZyB0aGUgY29ycmVj
dCByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgICAgIFRoaXMg
aXMgYXBwbGllZCB0byBDU1MgdGVzdHMgYnV0IG5vdCB0byBXUFQgdGVzdHMuCiAgICAgICAgICAy
LiBBbGwgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LXZlbmRvciBwcmVmaXgg
YXJlIHByZWZpeGVkIC0gdGhpcyBjdXJyZW50CiAgICAgICAgICAgICBsaXN0IG9mIHdoYXQgbmVl
ZHMgcHJlZml4ZXMgaXMgcmVhZCBmcm9tIFNvdXJjZS9XZWJDb3JlL0NTUy9DU1NQcm9wZXJ0aWVz
LmluCiAgICAgICAgICAzLiBFYWNoIHJlZnRlc3QgaGFzIGl0cyBvd24gY29weSBvZiBpdHMgcmVm
ZXJlbmNlIGZpbGUgZm9sbG93aW5nIHRoZSBuYW1pbmcgY29udmVudGlvbnMKQEAgLTgzLDYgKzg4
LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ud2Via2l0X2ZpbmRlciBpbXBvcnQgV2ViS2l0Rmlu
ZGVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRF
cnJvcgogZnJvbSB3ZWJraXRweS53M2MudGVzdF9wYXJzZXIgaW1wb3J0IFRlc3RQYXJzZXIKIGZy
b20gd2Via2l0cHkudzNjLnRlc3RfY29udmVydGVyIGltcG9ydCBjb252ZXJ0X2Zvcl93ZWJraXQK
K2Zyb20gd2Via2l0cHkudzNjLnRlc3RfZG93bmxvYWRlciBpbXBvcnQgVGVzdERvd25sb2FkZXIK
IAogQ0hBTkdFU0VUX05PVF9BVkFJTEFCTEUgPSAnTm90IEF2YWlsYWJsZScKIApAQCAtOTEsOSAr
OTcsOSBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIGRlZiBtYWluKF9h
cmd2LCBfc3Rkb3V0LCBfc3RkZXJyKToKICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VfYXJncygp
Ci0gICAgaW1wb3J0X2RpciA9IGFyZ3NbMF0KKyAgICBpbXBvcnRfZGlyID0gYXJnc1swXSBpZiBh
cmdzIGVsc2UgTm9uZQogCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGltcG9ydF9kaXIpOgor
ICAgIGlmIGltcG9ydF9kaXIgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyhpbXBvcnRfZGlyKToKICAg
ICAgICAgc3lzLmV4aXQoJ1NvdXJjZSBkaXJlY3RvcnkgJXMgbm90IGZvdW5kIScgJSBpbXBvcnRf
ZGlyKQogCiAgICAgY29uZmlndXJlX2xvZ2dpbmcoKQpAQCAtMTE5LDIyICsxMjUsMzEgQEAgZGVm
IGNvbmZpZ3VyZV9sb2dnaW5nKCk6CiAKIAogZGVmIHBhcnNlX2FyZ3MoKToKLSAgICBwYXJzZXIg
PSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9J3VzYWdlOiAlcHJvZyBbb3B0aW9uc10gdzNj
X3Rlc3RfZGlyZWN0b3J5JykKKyAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNh
Z2U9J3VzYWdlOiAlcHJvZyBbb3B0aW9uc10gW3czY190ZXN0X2RpcmVjdG9yeV0nKQogCiAgICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1uJywgJy0tbm8tb3ZlcndyaXRlJywgZGVzdD0nb3ZlcndyaXRl
JywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwKICAgICAgICAgaGVscD0nRmxh
ZyB0byBwcmV2ZW50IGR1cGxpY2F0ZSB0ZXN0IGZpbGVzIGZyb20gb3ZlcndyaXRpbmcgZXhpc3Rp
bmcgdGVzdHMuIEJ5IGRlZmF1bHQsIHRoZXkgd2lsbCBiZSBvdmVyd3JpdHRlbicpCiAgICAgcGFy
c2VyLmFkZF9vcHRpb24oJy1sJywgJy0tbm8tbGlua3MtY29udmVyc2lvbicsIGRlc3Q9J2NvbnZl
cnRfdGVzdF9oYXJuZXNzX2xpbmtzJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1
ZSwKLSAgICAgICAgaGVscD0nRG8gbm90IGNoYW5nZSBsaW5rcyAodGVzdGhhcm5lc3MganMgb3Ig
Y3NzIGUuZy4pLiBCeSBkZWZhdWx0LCBsaW5rcyBhcmUgY29udmVydGVkIHRvIHBvaW50IHRvIFdl
YktpdCB0ZXN0aGFybmVzcyBmaWxlcy4nKQorICAgICAgICBoZWxwPSdEbyBub3QgY2hhbmdlIGxp
bmtzICh0ZXN0aGFybmVzcyBqcyBvciBjc3MgZS5nLikuIFRoaXMgb3B0aW9uIG9ubHkgYXBwbGll
cyB3aGVuIHByb3ZpZGluZyBhIHNvdXJjZSBkaXJlY3RvcnksIGluIHdoaWNoIGNhc2UgYnkgZGVm
YXVsdCwgbGlua3MgYXJlIGNvbnZlcnRlZCB0byBwb2ludCB0byBXZWJLaXQgdGVzdGhhcm5lc3Mg
ZmlsZXMuIFdoZW4gdGVzdHMgYXJlIGRvd25sb2FkZWQgZnJvbSBXM0MgcmVwb3NpdG9yeSwgbGlu
a3MgYXJlIGNvbnZlcnRlZCBmb3IgQ1NTIHRlc3RzIGFuZCByZW1haW4gdW5jaGFuZ2VkIGZvciBX
UFQgdGVzdHMnKQogCiAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1hJywgJy0tYWxsJywgYWN0aW9u
PSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgaGVscD0nSW1wb3J0IGFsbCB0
ZXN0cyBpbmNsdWRpbmcgcmVmdGVzdHMsIEpTIHRlc3RzLCBhbmQgbWFudWFsL3BpeGVsIHRlc3Rz
LiBCeSBkZWZhdWx0LCBvbmx5IHJlZnRlc3RzIGFuZCBKUyB0ZXN0cyBhcmUgaW1wb3J0ZWQnKQog
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctZCcsICctLWRlc3QtZGlyJywgZGVzdD0nZGVzdGluYXRp
b24nLCBkZWZhdWx0PSd3M2MnLAogICAgICAgICBoZWxwPSdJbXBvcnQgaW50byBhIHNwZWNpZmll
ZCBkaXJlY3RvcnkgcmVsYXRpdmUgdG8gdGhlIExheW91dFRlc3RzIHJvb3QuIEJ5IGRlZmF1bHQs
IGltcG9ydHMgaW50byB3M2MnKQorCisgICAgbGlzdF9vZl9yZXBvc2l0b3JpZXMgPSAnIG9yICcu
am9pbihba2V5IGZvciBrZXkgaW4gVGVzdERvd25sb2FkZXIubG9hZF90ZXN0X3JlcG9zaXRvcmll
cygpXSkKICAgICBwYXJzZXIuYWRkX29wdGlvbignLXQnLCAnLS10ZXN0LXBhdGgnLCBhY3Rpb249
J2FwcGVuZCcsIGRlc3Q9J3Rlc3RfcGF0aHMnLCBkZWZhdWx0PVtdLAotICAgICAgICBoZWxwPSdJ
bXBvcnQgb25seSB0ZXN0cyBpbiB0aGUgc3VwcGxpZWQgc3ViZGlyZWN0b3J5IG9mIHRoZSB3M2Nf
dGVzdF9kaXJlY3RvcnkuIENhbiBiZSBzdXBwbGllZCBtdWx0aXBsZSB0aW1lcyB0byBnaXZlIG11
bHRpcGxlIHBhdGhzJykKKyAgICAgICAgaGVscD0nSW1wb3J0IG9ubHkgdGVzdHMgaW4gdGhlIHN1
cHBsaWVkIHN1YmRpcmVjdG9yeSBvZiB0aGUgc291cmNlIGRpcmVjdG9yeS4gQ2FuIGJlIHN1cHBs
aWVkIG11bHRpcGxlIHRpbWVzIHRvIGdpdmUgbXVsdGlwbGUgcGF0aHMuIEZvciB0ZXN0cyBkaXJl
Y3RseSBjbG9uZWQgZnJvbSBXM0MgcmVwb3NpdG9yaWVzLCB1c2UgJyArIGxpc3Rfb2ZfcmVwb3Np
dG9yaWVzICsgJyBwcmVmaXhlcyB0byBmaWx0ZXIgc3BlY2lmaWMgdGVzdHMnKQorCisgICAgcGFy
c2VyLmFkZF9vcHRpb24oJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRl
ZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9J1ByaW50IG1heGltYWwgbG9nJykKKyAgICBwYXJz
ZXIuYWRkX29wdGlvbignLS1uby1mZXRjaCcsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLCBkZXN0PSdm
ZXRjaCcsIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgaGVscD0nRG8gbm90IGZldGNoIHRoZSByZXBv
c2l0b3JpZXMuIEJ5IGRlZmF1bHQsIHJlcG9zaXRvcmllcyBhcmUgZmV0Y2hlZCBpZiBhIHNvdXJj
ZSBkaXJlY3RvcnkgaXMgbm90IHByb3ZpZGVkJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1p
bXBvcnQtYWxsJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAg
aGVscD0nSWdub3JlIHRoZSBJbXBvcnRFeHBlY3RhdGlvbnMgZmlsZS4gQWxsIHRlc3RzIHdpbGwg
YmUgaW1wb3J0ZWQuIFRoaXMgb3B0aW9uIG9ubHkgYXBwbGllcyB3aGVuIHRlc3RzIGFyZSBkb3du
bG9hZGVkIGZyb20gVzNDIHJlcG9zaXRvcnknKQogCiAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNl
ci5wYXJzZV9hcmdzKCkKLSAgICBpZiBsZW4oYXJncykgIT0gMToKKyAgICBpZiBsZW4oYXJncykg
PiAxOgogICAgICAgICBwYXJzZXIuZXJyb3IoJ0luY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRz
JykKICAgICByZXR1cm4gb3B0aW9ucywgYXJncwogCkBAIC0xNDgsMjUgKzE2Myw0OSBAQCBjbGFz
cyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKIAogICAgICAgICBzZWxmLmZpbGVzeXN0ZW0gPSBzZWxm
Lmhvc3QuZmlsZXN5c3RlbQogCisgICAgICAgIHNlbGYuaW1wb3J0X2xpc3QgPSBbXQorICAgICAg
ICBzZWxmLl9pbXBvcnRpbmdfZG93bmxvYWRlZF90ZXN0cyA9IHNvdXJjZV9kaXJlY3RvcnkgaXMg
Tm9uZQorCiAgICAgICAgIHdlYmtpdF9maW5kZXIgPSBXZWJLaXRGaW5kZXIoc2VsZi5maWxlc3lz
dGVtKQogICAgICAgICBzZWxmLl93ZWJraXRfcm9vdCA9IHdlYmtpdF9maW5kZXIud2Via2l0X2Jh
c2UoKQotCiAgICAgICAgIHNlbGYuZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gd2Via2l0X2ZpbmRl
ci5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoIkxheW91dFRlc3RzIiwgb3B0aW9ucy5kZXN0aW5hdGlv
bikKKyAgICAgICAgc2VsZi5sYXlvdXRfdGVzdHNfdzNjX3BhdGggPSB3ZWJraXRfZmluZGVyLnBh
dGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnLCAnaW1wb3J0ZWQnLCAndzNjJykKKyAg
ICAgICAgc2VsZi50ZXN0c19kb3dubG9hZF9wYXRoID0gd2Via2l0X2ZpbmRlci5wYXRoX2Zyb21f
d2Via2l0X2Jhc2UoJ1dlYktpdEJ1aWxkJywgJ3czYy10ZXN0cycpCiAKLSAgICAgICAgc2VsZi5p
bXBvcnRfbGlzdCA9IFtdCisgICAgICAgIHNlbGYuX3Rlc3RfZG93bmxvYWRlciA9IE5vbmUKIAog
ICAgIGRlZiBkb19pbXBvcnQoc2VsZik6Ci0gICAgICAgIGlmIGxlbihzZWxmLm9wdGlvbnMudGVz
dF9wYXRocykgPT0gMDoKKyAgICAgICAgaWYgbm90IHNlbGYuc291cmNlX2RpcmVjdG9yeToKKyAg
ICAgICAgICAgIF9sb2cuaW5mbygnRG93bmxvYWRpbmcgVzNDIHRlc3QgcmVwb3NpdG9yaWVzJykK
KyAgICAgICAgICAgIHNlbGYuc291cmNlX2RpcmVjdG9yeSA9IHNlbGYuZmlsZXN5c3RlbS5qb2lu
KHNlbGYudGVzdHNfZG93bmxvYWRfcGF0aCwgJ3RvLWJlLWltcG9ydGVkJykKKyAgICAgICAgICAg
IHNlbGYuZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShzZWxmLnRlc3RzX2Rvd25sb2Fk
X3BhdGgpCisgICAgICAgICAgICBzZWxmLmZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3Rvcnko
c2VsZi5zb3VyY2VfZGlyZWN0b3J5KQorICAgICAgICAgICAgc2VsZi50ZXN0X2Rvd25sb2FkZXIo
KS5kb3dubG9hZF90ZXN0cyhzZWxmLnNvdXJjZV9kaXJlY3RvcnksIHNlbGYub3B0aW9ucy50ZXN0
X3BhdGhzKQorCisgICAgICAgIGlmIG5vdCBzZWxmLm9wdGlvbnMudGVzdF9wYXRocyBvciBzZWxm
Ll9pbXBvcnRpbmdfZG93bmxvYWRlZF90ZXN0czoKICAgICAgICAgICAgIHNlbGYuZmluZF9pbXBv
cnRhYmxlX3Rlc3RzKHNlbGYuc291cmNlX2RpcmVjdG9yeSkKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIGZvciB0ZXN0X3BhdGggaW4gc2VsZi5vcHRpb25zLnRlc3RfcGF0aHM6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5maW5kX2ltcG9ydGFibGVfdGVzdHMob3MucGF0aC5qb2luKHNlbGYuc291
cmNlX2RpcmVjdG9yeSwgdGVzdF9wYXRoKSkKKyAgICAgICAgICAgICAgICBzZWxmLmZpbmRfaW1w
b3J0YWJsZV90ZXN0cyhzZWxmLmZpbGVzeXN0ZW0uam9pbihzZWxmLnNvdXJjZV9kaXJlY3Rvcnks
IHRlc3RfcGF0aCkpCisKICAgICAgICAgc2VsZi5pbXBvcnRfdGVzdHMoKQogCisgICAgZGVmIHRl
c3RfZG93bmxvYWRlcihzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX3Rlc3RfZG93bmxvYWRl
cjoKKyAgICAgICAgICAgIGRvd25sb2FkX29wdGlvbnMgPSBUZXN0RG93bmxvYWRlci5kZWZhdWx0
X29wdGlvbnMoKQorICAgICAgICAgICAgZG93bmxvYWRfb3B0aW9ucy5mZXRjaCA9IHNlbGYub3B0
aW9ucy5mZXRjaAorICAgICAgICAgICAgZG93bmxvYWRfb3B0aW9ucy52ZXJib3NlID0gc2VsZi5v
cHRpb25zLnZlcmJvc2UKKyAgICAgICAgICAgIGRvd25sb2FkX29wdGlvbnMuaW1wb3J0X2FsbCA9
IHNlbGYub3B0aW9ucy5pbXBvcnRfYWxsCisgICAgICAgICAgICBzZWxmLl90ZXN0X2Rvd25sb2Fk
ZXIgPSBUZXN0RG93bmxvYWRlcihzZWxmLnRlc3RzX2Rvd25sb2FkX3BhdGgsIHNlbGYuaG9zdCwg
ZG93bmxvYWRfb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfZG93bmxvYWRlcgor
CiAgICAgZGVmIHNob3VsZF9rZWVwX3N1YmRpcihzZWxmLCByb290LCBzdWJkaXIpOgorICAgICAg
ICBpZiBzdWJkaXIuc3RhcnRzd2l0aCgnLicpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisg
ICAgICAgIGlmIHNlbGYuX2ltcG9ydGluZ19kb3dubG9hZGVkX3Rlc3RzOgorICAgICAgICAgICAg
cmV0dXJuIFRydWUKICAgICAgICAgRElSU19UT19TS0lQID0gKCd3b3JrLWluLXByb2dyZXNzJywg
J3Rvb2xzJywgJ3N1cHBvcnQnKQotICAgICAgICBzaG91bGRfc2tpcCA9IHN1YmRpci5zdGFydHN3
aXRoKCcuJykgb3IgKHJvb3QgPT0gc2VsZi5zb3VyY2VfZGlyZWN0b3J5IGFuZCBzdWJkaXIgaW4g
RElSU19UT19TS0lQKQotICAgICAgICByZXR1cm4gbm90IHNob3VsZF9za2lwCisgICAgICAgIHJl
dHVybiBub3QgKHJvb3QgPT0gc2VsZi5zb3VyY2VfZGlyZWN0b3J5IGFuZCBzdWJkaXIgaW4gRElS
U19UT19TS0lQKQogCiAgICAgZGVmIHNob3VsZF9za2lwX2ZpbGUoc2VsZiwgZmlsZW5hbWUpOgog
ICAgICAgICAjIEZvciBzb21lIHJlYXNvbiB0aGUgdzNjIHJlcG8gY29udGFpbnMgcmFuZG9tIHBl
cmwgc2NyaXB0cyB3ZSBkb24ndCBjYXJlIGFib3V0LgpAQCAtMjM4LDYgKzI3NywxNCBAQCBjbGFz
cyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLmltcG9ydF9saXN0
LmFwcGVuZCh7J2Rpcm5hbWUnOiByb290LCAnY29weV9saXN0JzogY29weV9saXN0LAogICAgICAg
ICAgICAgICAgICAgICAncmVmdGVzdHMnOiByZWZ0ZXN0cywgJ2pzdGVzdHMnOiBqc3Rlc3RzLCAn
dG90YWxfdGVzdHMnOiB0b3RhbF90ZXN0c30pCiAKKyAgICBkZWYgc2hvdWxkX2NvbnZlcnRfdGVz
dF9oYXJuZXNzX2xpbmtzKHNlbGYsIHRlc3QpOgorICAgICAgICBpZiBzZWxmLl9pbXBvcnRpbmdf
ZG93bmxvYWRlZF90ZXN0czoKKyAgICAgICAgICAgIGZvciBrZXkgaW4gc2VsZi50ZXN0X2Rvd25s
b2FkZXIoKS50ZXN0X3JlcG9zaXRvcmllczoKKyAgICAgICAgICAgICAgICBpZiB0ZXN0LnN0YXJ0
c3dpdGgoa2V5KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGVzdF9kb3dubG9h
ZGVyKCkudGVzdF9yZXBvc2l0b3JpZXNba2V5XVsnY29udmVydF90ZXN0X2hhcm5lc3NfbGlua3Mn
XQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIHNlbGYub3B0aW9ucy5j
b252ZXJ0X3Rlc3RfaGFybmVzc19saW5rcworCiAgICAgZGVmIGltcG9ydF90ZXN0cyhzZWxmKToK
ICAgICAgICAgdG90YWxfaW1wb3J0ZWRfdGVzdHMgPSAwCiAgICAgICAgIHRvdGFsX2ltcG9ydGVk
X3JlZnRlc3RzID0gMApAQCAtMzA0LDcgKzM1MSw3IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmpl
Y3QpOgogICAgICAgICAgICAgICAgIG1pbWV0eXBlID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUob3Jp
Z19maWxlcGF0aCkKICAgICAgICAgICAgICAgICBpZiAnaHRtbCcgaW4gc3RyKG1pbWV0eXBlWzBd
KSBvciAneG1sJyBpbiBzdHIobWltZXR5cGVbMF0pICBvciAnY3NzJyBpbiBzdHIobWltZXR5cGVb
MF0pOgogICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBj
b252ZXJ0ZWRfZmlsZSA9IGNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWU9b3Jp
Z19maWxlcGF0aCwgcmVmZXJlbmNlX3N1cHBvcnRfaW5mbz1yZWZlcmVuY2Vfc3VwcG9ydF9pbmZv
LCBjb252ZXJ0X3Rlc3RfaGFybmVzc19saW5rcz1zZWxmLm9wdGlvbnMuY29udmVydF90ZXN0X2hh
cm5lc3NfbGlua3MpCisgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWRfZmlsZSA9IGNv
bnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWU9b3JpZ19maWxlcGF0aCwgcmVmZXJl
bmNlX3N1cHBvcnRfaW5mbz1yZWZlcmVuY2Vfc3VwcG9ydF9pbmZvLCBjb252ZXJ0X3Rlc3RfaGFy
bmVzc19saW5rcz1zZWxmLnNob3VsZF9jb252ZXJ0X3Rlc3RfaGFybmVzc19saW5rcyhzdWJwYXRo
KSkKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgICAgICAgICAg
X2xvZy53YXJuKCdGYWlsZWQgY29udmVydGluZyAlcycsIG9yaWdfZmlsZXBhdGgpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBmYWlsZWRfY29udmVyc2lvbl9maWxlcy5hcHBlbmQob3JpZ19maWxl
cGF0aCkKQEAgLTM4NSwxMyArNDMyLDEyIEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgog
ICAgIGRlZiB3cml0ZV9pbXBvcnRfbG9nKHNlbGYsIGltcG9ydF9kaXJlY3RvcnksIGZpbGVfbGlz
dCwgcHJvcF9saXN0LCBwcm9wZXJ0eV92YWx1ZXNfbGlzdCk6CiAgICAgICAgICIiIiBXcml0ZXMg
YSB3M2MtaW1wb3J0LmxvZyBmaWxlIGluIGVhY2ggZGlyZWN0b3J5IHdpdGggaW1wb3J0ZWQgZmls
ZXMuICIiIgogCi0gICAgICAgIGltcG9ydF9sb2cgPSBvcGVuKG9zLnBhdGguam9pbihpbXBvcnRf
ZGlyZWN0b3J5LCAndzNjLWltcG9ydC5sb2cnKSwgJ3cnKQorICAgICAgICBpbXBvcnRfbG9nID0g
b3BlbihzZWxmLmZpbGVzeXN0ZW0uam9pbihpbXBvcnRfZGlyZWN0b3J5LCAndzNjLWltcG9ydC5s
b2cnKSwgJ3cnKQogICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdUaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS5cbicpCiAgICAg
ICAgIGltcG9ydF9sb2cud3JpdGUoJ0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2Via2l0LlxuJykKLSAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnSW5zdGVhZCwgcHVzaCBj
aGFuZ2VzIHRvIHRoZSBXM0MgQ1NTIHJlcG86XG4nKQotICAgICAgICBpbXBvcnRfbG9nLndyaXRl
KCdcdGh0dHA6Ly9oZy5jc3N3Zy5vcmcvdGVzdFxuJykKLSAgICAgICAgaW1wb3J0X2xvZy53cml0
ZSgnT3IgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXM0MgQ1NTIGdpdGh1YjpcbicpCi0g
ICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1x0aHR0cHM6Ly9naXRodWIuY29tL3czYy9jc3N3Zy10
ZXN0XG5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0luc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgVzNDIENTUyBvciBXUFQgZ2l0aHViOlxuJykKKyAgICAgICAgaW1w
b3J0X2xvZy53cml0ZSgnXHRodHRwczovL2dpdGh1Yi5jb20vdzNjL2Nzc3dnLXRlc3RcbicpCisg
ICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1x0aHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxh
dGZvcm0tdGVzdHNcblxuJykKICAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnVGhlbiBydW4gdGhl
IFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJraXQgdG8gcmVpbXBvcnRcblxu
JykKICAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlXG5cbicpCiAgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxu
JykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGYxN2RkZmI4ZmNlNGVmNjFhM2I2
NGNkYTQ3OWQ3OThiMWExMGUxNmYuLjZjMjllZDhjNmZlMmNkZTY4ODkzMjg2ZDNiYzY3MzhjMTI2
YzRiNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDE1LTAyLTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisK
KyAgICAgICAgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGF1dG9tYXRlIHRoZSBw
cm9jZXNzIG9mIGNsb25pbmcgVzNDIHRlc3Qgc3VpdGUgYW5kIGltcG9ydGluZyB0ZXN0cyBmcm9t
IGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ3
NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
UmVwb3NpdG9yaWVzIGRlZmluZXMgdGhlIGdpdCByZXBvc2l0b3JpZXMgdXNlZCB0byBpbXBvcnQg
dGVzdHMuCisgICAgICAgIEl0IGRlZmluZXMgZm9yIGVhY2ggcmVwb3NpdG9yeSB0aGUgaW5mcmFz
dHJ1Y3R1cmUgcGF0aHMgdG8gYWx3YXlzIGltcG9ydCwgdGhlIHBhdGhzIHRvIHNraXAgYW5kIHRo
ZSByZXZpc2lvbiB0byB1c2UuCisgICAgICAgIEltcG9ydEV4cGVjdGFydGlvbnMgZGVmaW5lcyB0
aGUgdGVzdHMgdG8gaW1wb3J0LgorCisgICAgICAgICogcmVzb3VyY2VzL0ltcG9ydEV4cGVjdGF0
aW9uczogQWRkZWQuCisgICAgICAgICogcmVzb3VyY2VzL1Rlc3RSZXBvc2l0b3JpZXM6IEFkZGVk
LgorCiAyMDE1LTAyLTIwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSBzdm46a2V5d29yZHMgcHJvcGVydHkuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL0ltcG9ydEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9yZXNvdXJjZXMvSW1wb3J0RXhwZWN0YXRpb25zCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRjMGE0N2ViNjljN2VmNDI4NjJjYmJhNmI0ZDEwZjQyNGQ0ZDM1MTIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL0ltcG9ydEV4cGVjdGF0aW9u
cwpAQCAtMCwwICsxLDExMiBAQAorY3Nzd2ctdGVzdHMvY29tcG9zaXRpbmctMSBbIFNraXAgXQor
Y3Nzd2ctdGVzdHMvY3NzLWFsaWduLTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1hbmltYXRp
b25zLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1iYWNrZ3JvdW5kcy0zIFsgU2tpcCBdCitj
c3N3Zy10ZXN0cy9jc3MtYm94LTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1icmVhay0zIFsg
U2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtY29sb3ItMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3Nz
LWNvbmRpdGlvbmFsLTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1jb3VudGVyLXN0eWxlcy0z
IFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtZXhjbHVzaW9ucy0xIFsgU2tpcCBdCitjc3N3Zy10
ZXN0cy9jc3MtZmxleGJveC0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtZm9udHMtMyBbIFNr
aXAgXQorY3Nzd2ctdGVzdHMvY3NzLWdjcG0tMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWdy
aWQtMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWltYWdlcy0zIFsgU2tpcCBdCitjc3N3Zy10
ZXN0cy9jc3MtbGlzdHMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLW1hc2tpbmctMSBbIFNr
aXAgXQorY3Nzd2ctdGVzdHMvY3NzLW11bHRpY29sLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nz
cy1uYW1lc3BhY2VzLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1wYWdlLTMgWyBTa2lwIF0K
K2Nzc3dnLXRlc3RzL2Nzcy1yZWdpb25zLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1ydWJ5
LTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1zaGFwZXMtMSBbIFNraXAgXQorY3Nzd2ctdGVz
dHMvY3NzLXNwZWVjaC0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3Mtc3R5bGUtYXR0ci0xIFsg
U2tpcCBdCitjc3N3Zy10ZXN0cy9jc3Mtc3ludGF4LTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nz
cy10YWJsZXMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXRleHQtMyBbIFNraXAgXQorY3Nz
d2ctdGVzdHMvY3NzLXRleHQtZGVjb3ItMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXRyYW5z
Zm9ybXMtMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXRyYW5zaXRpb25zLTEgWyBTa2lwIF0K
K2Nzc3dnLXRlc3RzL2Nzcy11aS0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtdmFsdWVzLTMg
WyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy12YXJpYWJsZXMtMSBbIFNraXAgXQorY3Nzd2ctdGVz
dHMvY3NzLXdyaXRpbmctbW9kZXMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzMSBbIFNraXAg
XQorY3Nzd2ctdGVzdHMvY3NzMjEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzc29tLTEgWyBTa2lw
IF0KK2Nzc3dnLXRlc3RzL2Nzc29tLXZpZXctMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvZmlsdGVy
cy0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9mb250cyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvZ2Vv
bWV0cnktMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvbWVkaWFxdWVyaWVzLTMgWyBTa2lwIF0KK2Nz
c3dnLXRlc3RzL3NlbGVjdG9ycy0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9zZWxlY3RvcnMtNCBb
IFNraXAgXQorY3Nzd2ctdGVzdHMvdmVuZG9yLWltcG9ydHMgWyBTa2lwIF0KKword2ViLXBsYXRm
b3JtLXRlc3RzLzJkY29udGV4dCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL0RPTUV2ZW50
cyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL0ZpbGVBUEkgWyBTa2lwIF0KK3dlYi1wbGF0
Zm9ybS10ZXN0cy9JbmRleGVkREIgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlw
dG9BUEkgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwgWyBTa2lwIF0KK3dlYi1w
bGF0Zm9ybS10ZXN0cy9YTUxIdHRwUmVxdWVzdCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3Rz
L2FtYmllbnQtbGlnaHQgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9hbmltYXRpb24tdGlt
aW5nIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvYXBwLXVyaSBbIFNraXAgXQord2ViLXBs
YXRmb3JtLXRlc3RzL2JhdHRlcnktc3RhdHVzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMv
Y29udGVudC1zZWN1cml0eS1wb2xpY3kgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9jb3Jz
IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvY3VzdG9tLWVsZW1lbnRzIFsgU2tpcCBdCit3
ZWItcGxhdGZvcm0tdGVzdHMvZG9tIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvZG9tcGFy
c2luZyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2RvbXhwYXRoIFsgU2tpcCBdCit3ZWIt
cGxhdGZvcm0tdGVzdHMvZW5jb2RpbmcgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9ldmVu
dHNvdXJjZSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2V4dC14aHRtbC1wdWJpZCBbIFNr
aXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2dlb2xvY2F0aW9uLUFQSSBbIFNraXAgXQord2ViLXBs
YXRmb3JtLXRlc3RzL2dhbWVwYWQgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9oci10aW1l
IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbCBbIFNraXAgXQord2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwtaW1wb3J0cyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwtbG9u
Z2Rlc2MgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sLW1lZGlhLWNhcHR1cmUgWyBT
a2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9odHRwIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVz
dHMvanMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYSBbIFNraXAgXQord2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL21l
ZGlhY2FwdHVyZS1zdHJlYW1zIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvbWljcm9kYXRh
IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvbmF2aWdhdGlvbi10aW1pbmcgWyBTa2lwIF0K
K3dlYi1wbGF0Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0t
dGVzdHMvb2xkLXRlc3RzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvcGFnZS12aXNpYmls
aXR5IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvcGVyZm9ybWFuY2UtdGltZWxpbmUgWyBT
a2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9wb2ludGVyZXZlbnRzIFsgU2tpcCBdCit3ZWItcGxh
dGZvcm0tdGVzdHMvcG9pbnRlcmxvY2sgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9wcm9n
cmVzcy1ldmVudHMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9wcm94aW1pdHkgWyBTa2lw
IF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9xdWlya3MtbW9kZSBbIFNraXAgXQord2ViLXBsYXRmb3Jt
LXRlc3RzL3Jlc291cmNlLXRpbWluZyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3NlbGVj
dG9ycyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3NlbGVjdG9ycy1hcGkgWyBTa2lwIF0K
K3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9y
bS10ZXN0cy9zaGFkb3ctZG9tIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvc3VicmVzb3Vy
Y2UtaW50ZWdyaXR5IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvdG91Y2gtZXZlbnRzIFsg
U2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvdHlwZWRhcnJheXMgWyBTa2lwIF0KK3dlYi1wbGF0
Zm9ybS10ZXN0cy91cmwgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy91c2VyLXRpbWluZyBb
IFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3ZpYnJhdGlvbiBbIFNraXAgXQord2ViLXBsYXRm
b3JtLXRlc3RzL3dlYi1hbmltYXRpb25zIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
YXVkaW8gWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJkcml2ZXIgWyBTa2lwIF0KK3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJnbCBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1l
c3NhZ2luZyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0YyBbIFNraXAgXQord2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJzdG9yYWdlIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvd2VidnR0IFsgU2tpcCBdCit3
ZWItcGxhdGZvcm0tdGVzdHMvd29ya2VycyBbIFNraXAgXQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL1Rlc3RSZXBvc2l0b3JpZXMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL1Rlc3RSZXBvc2l0b3JpZXMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNl
NWMxNzg2ZmQwNzFkMmJiNjQ1MTkzZDdiNDdiZmU5M2E1Y2YwYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9yZXNvdXJjZXMvVGVzdFJlcG9zaXRvcmllcwpAQCAt
MCwwICsxLDMzIEBACit7CisgICAgImNzc3dnLXRlc3RzIjogeworICAgICAgICAidXJsIjogImh0
dHBzOi8vZ2l0aHViLmNvbS93M2MvY3Nzd2ctdGVzdC5naXQiLCAKKyAgICAgICAgInJldmlzaW9u
IjogIjlmNDVmODkiLAorICAgICAgICAicGF0aHNfdG9fc2tpcCI6IFsKKyAgICAgICAgICAgICJ3
b3JrLWluLXByb2dyZXNzIiwKKyAgICAgICAgICAgICJ0b29scyIKKyAgICAgICAgXSwKKyAgICAg
ICAgInBhdGhzX3RvX2ltcG9ydCI6IFsKKyAgICAgICAgICAgICJzdXBwb3J0IgorICAgICAgICBd
LAorICAgICAgICAiY29udmVydF90ZXN0X2hhcm5lc3NfbGlua3MiOiB0cnVlCisgICAgfSwKKyAg
ICAid2ViLXBsYXRmb3JtLXRlc3RzIjogeworICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHVi
LmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLmdpdCIsIAorICAgICAgICAicmV2aXNpb24iOiAi
OTkwNzkzZCIsCisgICAgICAgICJwYXRoc190b19za2lwIjogWworICAgICAgICAgICAgImNvbmZv
cm1hbmNlLWNoZWNrZXJzIiwKKyAgICAgICAgICAgICJkb2NzIiwKKyAgICAgICAgICAgICJvbGQt
dGVzdHMiCisgICAgICAgIF0sCisgICAgICAgICJwYXRoc190b19pbXBvcnQiOiBbCisgICAgICAg
ICAgICAiY29tbW9uIiwKKyAgICAgICAgICAgICJmb250cyIsCisgICAgICAgICAgICAiaW1hZ2Vz
IiwKKyAgICAgICAgICAgICJyZXNvdXJjZXMiLAorICAgICAgICAgICAgInRvb2xzIiwKKyAgICAg
ICAgICAgICJjb25maWcuZGVmYXVsdC5qc29uIiwKKyAgICAgICAgICAgICJzZXJ2ZS5weSIKKyAg
ICAgICAgXSwKKyAgICAgICAgImNvbnZlcnRfdGVzdF9oYXJuZXNzX2xpbmtzIjogZmFsc2UKKyAg
ICB9Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247674</attachid>
            <date>2015-03-02 09:20:17 -0800</date>
            <delta_ts>2015-03-13 09:00:36 -0700</delta_ts>
            <desc>Rebasing and adding already imported tests in ImportExpectations</desc>
            <filename>bug-134764-20150302181959.patch</filename>
            <type>text/plain</type>
            <size>28733</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwODgyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWZkZTA1Nzc3YjE0OTczNDY2NmQ3NzZjYjZiMzFkMTEw
YjdjYzJmNS4uYTIxY2MyZGU4ZTE2NTc5MmE2MzU2MTU5MWM3ODE4Y2IwNWUwNmI0NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDE1LTAzLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGF1dG9tYXRl
IHRoZSBwcm9jZXNzIG9mIGNsb25pbmcgVzNDIHRlc3Qgc3VpdGUgYW5kIGltcG9ydGluZyB0ZXN0
cyBmcm9tIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQ3NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0RG93bmxvYWRlciBpcyBpbnRyb2R1Y2VkIHRvIGRvd25sb2FkIFczQyB0ZXN0cyBmcm9t
IHRoZSBvZmZpY2lhbAorICAgICAgICBXM0MgdGVzdHMgcmVwb3NpdG9yaWVzIChodHRwczovL2dp
dGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQKKyAgICAgICAgYW5kIGh0dHBzOi8v
Z2l0aHViLmNvbS93M2MvY3Nzd2ctdGVzdC5naXQpLgorICAgICAgICBUZXN0RG93bmxvYWRlciBj
bG9uZXMgdGhlIHJlcG9zaXRvcmllcyBhbmQgY2hlY2tvdXRzIHJldmlzaW9ucyBvZiB0aGUgdGVz
dHMKKyAgICAgICAgZGVmaW5lZCBpbiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2Vz
L1Rlc3RSZXBvc2l0b3JpZXMuCisKKyAgICAgICAgU2ltaWxhcmx5IHRvIGh0dHBzOi8vY29kZXJl
dmlldy5jaHJvbWl1bS5vcmcvMTQ4MTczMDE2LAorICAgICAgICBUZXN0RG93bmxvYWRlciBjb3Bp
ZXMgcGFydCBvZiB0aGUgZmlsZXMgYmFzZWQgb24gdGhlIHJ1bGVzCisgICAgICAgIGRlZmluZWQg
aW4gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9JbXBvcnRFeHBlY3RhdGlvbnMu
CisKKyAgICAgICAgVGVzdERvd25sb2FkZXIgaXMgdXNlZCBieSBUZXN0SW1wb3J0ZXIgd2hlbiBu
byBzb3VyY2UgZGlyZWN0b3J5IGlzIHByb3ZpZGVkLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS93M2MvdGVzdF9kb3dubG9hZGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3REb3dubG9h
ZGVyKToKKyAgICAgICAgKFRlc3REb3dubG9hZGVyLmRlZmF1bHRfb3B0aW9ucyk6CisgICAgICAg
IChUZXN0RG93bmxvYWRlci5sb2FkX3Rlc3RfcmVwb3NpdG9yaWVzKToKKyAgICAgICAgKFRlc3RE
b3dubG9hZGVyLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3REb3dubG9hZGVyLmNoZWNrb3V0X3Rl
c3RfcmVwb3NpdG9yeSk6CisgICAgICAgIChUZXN0RG93bmxvYWRlci5faW5pdF9wYXRoc19mcm9t
X2V4cGVjdGF0aW9ucyk6CisgICAgICAgIChUZXN0RG93bmxvYWRlci5fYWRkX3Rlc3Rfc3VpdGVf
cGF0aHMpOgorICAgICAgICAoVGVzdERvd25sb2FkZXIuX2VtcHR5X2RpcmVjdG9yeSk6CisgICAg
ICAgIChUZXN0RG93bmxvYWRlci5jb3B5X3Rlc3RzKToKKyAgICAgICAgKFRlc3REb3dubG9hZGVy
LmRvd25sb2FkX3Rlc3RzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2lt
cG9ydGVyLnB5OgorICAgICAgICAobWFpbik6CisgICAgICAgIChwYXJzZV9hcmdzKToKKyAgICAg
ICAgKFRlc3RJbXBvcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuZG9faW1w
b3J0KToKKyAgICAgICAgKFRlc3RJbXBvcnRlci50ZXN0X2Rvd25sb2FkZXIpOgorICAgICAgICAo
VGVzdEltcG9ydGVyLmZpbmRfaW1wb3J0YWJsZV90ZXN0cy5zaG91bGRfa2VlcF9zdWJkaXIpOgor
ICAgICAgICAoVGVzdEltcG9ydGVyLnNob3VsZF9jb252ZXJ0X3Rlc3RfaGFybmVzc19saW5rcyk6
CisgICAgICAgIChUZXN0SW1wb3J0ZXIuaW1wb3J0X3Rlc3RzKToKKyAgICAgICAgKFRlc3RJbXBv
cnRlci53cml0ZV9pbXBvcnRfbG9nKToKKwogMjAxNS0wMy0wMSAgRGF2aWQgS2lsemVyICA8ZGRr
aWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIExheW91dFRlc3RSZWFseTogUHJlcGVuZCBfX1hQ
Q18gdG8gdGhlIGtleSwgbm90IHRoZSB2YWx1ZSEKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdzNjL3Rlc3RfZG93bmxvYWRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfZG93bmxvYWRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWJhMWYzMzc3MGFhMzFmZmQyZjQx
MTM4N2NjMDMyYWY5ZjdlMmY1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS93M2MvdGVzdF9kb3dubG9hZGVyLnB5CkBAIC0wLDAgKzEsMTUyIEBACisjIENvcHlyaWdo
dCAoYykgMjAxNCwgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENB
Tk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisiIiIKKyBUaGlzIHNjcmlwdCBkb3dubG9hZHMgVzNDIHRlc3QgcmVwb3NpdG9yaWVzLgorIiIi
CisjRklYTUU6IEltcGxlbWVudCBzdWJtb2R1bGVzIGV4dHJhY3Rpb24gdG8gcHJlcGFyZSBmb3Ig
Z2VuZXJhdGlvbiBvZiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M0MvcmVzb3VyY2VzL1dQVE1vZHVs
ZXMKKworaW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5nCisKK2Zyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9u
LndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgorZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubW9kZWxzLnRlc3RfZXhwZWN0YXRpb25zIGltcG9ydCBUZXN0RXhwZWN0YXRpb25QYXJz
ZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5naXQgaW1wb3J0IEdpdAorCitf
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3MgVGVzdERvd25sb2Fk
ZXIob2JqZWN0KToKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZGVmYXVsdF9vcHRpb25z
KCk6CisgICAgICAgIG9wdGlvbnMgPSB0eXBlKCcnLCAoKSwge30pCisgICAgICAgIG9wdGlvbnMu
ZmV0Y2ggPSBUcnVlCisgICAgICAgIG9wdGlvbnMudmVyYm9zZSA9IEZhbHNlCisgICAgICAgIG9w
dGlvbnMuaW1wb3J0X2FsbCA9IEZhbHNlCisgICAgICAgIHJldHVybiBvcHRpb25zCisKKyAgICBA
c3RhdGljbWV0aG9kCisgICAgZGVmIGxvYWRfdGVzdF9yZXBvc2l0b3JpZXMoKToKKyAgICAgICAg
ZmlsZXN5c3RlbSA9IEZpbGVTeXN0ZW0oKQorICAgICAgICB3ZWJraXRfZmluZGVyID0gV2ViS2l0
RmluZGVyKGZpbGVzeXN0ZW0pCisgICAgICAgIHRlc3RfcmVwb3NpdG9yaWVzX3BhdGggPSB3ZWJr
aXRfZmluZGVyLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnLCAnaW1wb3J0ZWQn
LCAndzNjJywgJ3Jlc291cmNlcycsICdUZXN0UmVwb3NpdG9yaWVzJykKKyAgICAgICAgcmV0dXJu
IGpzb24ubG9hZHMoZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSh0ZXN0X3JlcG9zaXRvcmllc19w
YXRoKSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXBvc2l0b3J5X2RpcmVjdG9yeSwgaG9z
dCwgb3B0aW9ucyk6CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNl
bGYuX2hvc3QgPSBob3N0CisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBob3N0LmZpbGVzeXN0
ZW0KKyAgICAgICAgc2VsZi5fdGVzdF9zdWl0ZXMgPSBbXQorCisgICAgICAgIHNlbGYucmVwb3Np
dG9yeV9kaXJlY3RvcnkgPSByZXBvc2l0b3J5X2RpcmVjdG9yeQorCisgICAgICAgIHNlbGYudGVz
dF9yZXBvc2l0b3JpZXMgPSBzZWxmLmxvYWRfdGVzdF9yZXBvc2l0b3JpZXMoKQorCisgICAgICAg
IHNlbGYucGF0aHNfdG9fc2tpcCA9IFtdCisgICAgICAgIHNlbGYucGF0aHNfdG9faW1wb3J0ID0g
W10KKyAgICAgICAgZm9yIHRlc3RfcmVwb3NpdG9yeSBpbiBzZWxmLnRlc3RfcmVwb3NpdG9yaWVz
OgorICAgICAgICAgICAgc2VsZi5wYXRoc190b19za2lwLmV4dGVuZChbc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKHRlc3RfcmVwb3NpdG9yeVsnbmFtZSddLCBwYXRoKSBmb3IgcGF0aCBpbiB0ZXN0X3Jl
cG9zaXRvcnlbJ3BhdGhzX3RvX3NraXAnXV0pCisgICAgICAgICAgICBzZWxmLnBhdGhzX3RvX2lt
cG9ydC5leHRlbmQoW3NlbGYuX2ZpbGVzeXN0ZW0uam9pbih0ZXN0X3JlcG9zaXRvcnlbJ25hbWUn
XSwgcGF0aCkgZm9yIHBhdGggaW4gdGVzdF9yZXBvc2l0b3J5WydwYXRoc190b19pbXBvcnQnXV0p
CisKKyAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuaW1wb3J0X2FsbDoKKyAgICAgICAgICAg
IHdlYmtpdF9maW5kZXIgPSBXZWJLaXRGaW5kZXIoc2VsZi5fZmlsZXN5c3RlbSkKKyAgICAgICAg
ICAgIGltcG9ydF9leHBlY3RhdGlvbnNfcGF0aCA9IHdlYmtpdF9maW5kZXIucGF0aF9mcm9tX3dl
YmtpdF9iYXNlKCdMYXlvdXRUZXN0cycsICdpbXBvcnRlZCcsICd3M2MnLCAncmVzb3VyY2VzJywg
J0ltcG9ydEV4cGVjdGF0aW9ucycpCisgICAgICAgICAgICBzZWxmLl9pbml0X3BhdGhzX2Zyb21f
ZXhwZWN0YXRpb25zKGltcG9ydF9leHBlY3RhdGlvbnNfcGF0aCkKKworICAgIGRlZiBjaGVja291
dF90ZXN0X3JlcG9zaXRvcnkoc2VsZiwgcmV2aXNpb24sIHVybCwgZGlyZWN0b3J5KToKKyAgICAg
ICAgZ2l0ID0gR2l0KCcuJywgTm9uZSkKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0u
ZXhpc3RzKGRpcmVjdG9yeSk6CisgICAgICAgICAgICBfbG9nLmluZm8oJ0Nsb25pbmcgJXMgaW50
byAlcy4uLicgJSAodXJsLCBkaXJlY3RvcnkpKQorICAgICAgICAgICAgZ2l0Ll9ydW5fZ2l0KFsn
Y2xvbmUnLCAnLXYnLCB1cmwsIGRpcmVjdG9yeV0pCisgICAgICAgIGVsaWYgc2VsZi5fb3B0aW9u
cy5mZXRjaCBpcyBUcnVlOgorICAgICAgICAgICAgX2xvZy5pbmZvKCdGZXRjaGluZyAlcy4uLicg
JSB1cmwpCisgICAgICAgICAgICBnaXQuX3J1bl9naXQoWyctQycsIGRpcmVjdG9yeSwgJ2ZldGNo
J10pCisgICAgICAgIF9sb2cuaW5mbygnQ2hlY2tpbmcgb3V0IHJldmlzaW9uICcgKyByZXZpc2lv
bikKKyAgICAgICAgY2hlY2tvdXRfYXJndW1lbnRzID0gWyctQycsIGRpcmVjdG9yeSwgJ2NoZWNr
b3V0JywgcmV2aXNpb25dCisgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLnZlcmJvc2U6Cisg
ICAgICAgICAgICBjaGVja291dF9hcmd1bWVudHMgKz0gWyctcSddCisgICAgICAgIGdpdC5fcnVu
X2dpdChjaGVja291dF9hcmd1bWVudHMpCisKKyAgICBkZWYgX2luaXRfcGF0aHNfZnJvbV9leHBl
Y3RhdGlvbnMoc2VsZiwgZmlsZV9wYXRoKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0
ZW0uaXNmaWxlKGZpbGVfcGF0aCk6CisgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ1VuYWJsZSB0
byByZWFkIGltcG9ydCBleHBlY3RhdGlvbiBmaWxlOiAlcycgJSBmaWxlX3BhdGgpCisgICAgICAg
ICAgICByZXR1cm4KKyAgICAgICAgcGFyc2VyID0gVGVzdEV4cGVjdGF0aW9uUGFyc2VyKHNlbGYu
X2hvc3QucG9ydF9mYWN0b3J5LmdldCgpLCAoKSwgRmFsc2UpCisgICAgICAgIGZvciBsaW5lIGlu
IHBhcnNlci5wYXJzZShmaWxlX3BhdGgsIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUo
ZmlsZV9wYXRoKSk6CisgICAgICAgICAgICBpZiAnU0tJUCcgaW4gbGluZS5tb2RpZmllcnM6Cisg
ICAgICAgICAgICAgICAgc2VsZi5wYXRoc190b19za2lwLmFwcGVuZChsaW5lLm5hbWUpCisgICAg
ICAgICAgICBlbGlmICdQQVNTJyBpbiBsaW5lLmV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgICAg
ICBzZWxmLnBhdGhzX3RvX2ltcG9ydC5hcHBlbmQobGluZS5uYW1lKQorCisgICAgZGVmIF9hZGRf
dGVzdF9zdWl0ZV9wYXRocyhzZWxmLCB0ZXN0X3BhdGhzLCBkaXJlY3RvcnksIHdlYmtpdF9wYXRo
KToKKyAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5fZmlsZXN5c3RlbS5saXN0ZGlyKGRpcmVjdG9y
eSk6CisgICAgICAgICAgICBwYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHdlYmtpdF9wYXRo
LCBuYW1lKQorICAgICAgICAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnLicpIGFuZCBub3Qg
cGF0aCBpbiBzZWxmLnBhdGhzX3RvX3NraXA6CisgICAgICAgICAgICAgICAgdGVzdF9wYXRocy5h
cHBlbmQocGF0aCkKKworICAgIGRlZiBfZW1wdHlfZGlyZWN0b3J5KHNlbGYsIGRpcmVjdG9yeSk6
CisgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGRpcmVjdG9yeSk6CisgICAgICAg
ICAgICBzZWxmLl9maWxlc3lzdGVtLnJtdHJlZShkaXJlY3RvcnkpCisgICAgICAgIHNlbGYuX2Zp
bGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkoZGlyZWN0b3J5KQorCisgICAgZGVmIGNvcHlf
dGVzdHMoc2VsZiwgZGVzdGluYXRpb25fZGlyZWN0b3J5LCB0ZXN0X3BhdGhzKToKKyAgICAgICAg
Zm9yIHRlc3RfcmVwb3NpdG9yeSBpbiBzZWxmLnRlc3RfcmVwb3NpdG9yaWVzOgorICAgICAgICAg
ICAgc2VsZi5fZW1wdHlfZGlyZWN0b3J5KHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihkZXN0aW5hdGlv
bl9kaXJlY3RvcnksIHRlc3RfcmVwb3NpdG9yeVsnbmFtZSddKSkKKworICAgICAgICBjb3B5X3Bh
dGhzID0gW10KKyAgICAgICAgaWYgdGVzdF9wYXRoczoKKyAgICAgICAgICAgIGNvcHlfcGF0aHMu
ZXh0ZW5kKHRlc3RfcGF0aHMpCisgICAgICAgICAgICBjb3B5X3BhdGhzLmV4dGVuZChzZWxmLnBh
dGhzX3RvX2ltcG9ydCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciB0ZXN0X3JlcG9z
aXRvcnkgaW4gc2VsZi50ZXN0X3JlcG9zaXRvcmllczoKKyAgICAgICAgICAgICAgICBzZWxmLl9h
ZGRfdGVzdF9zdWl0ZV9wYXRocyhjb3B5X3BhdGhzLCBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2Vs
Zi5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgdGVzdF9yZXBvc2l0b3J5WyduYW1lJ10pLCB0ZXN0X3Jl
cG9zaXRvcnlbJ25hbWUnXSkKKyAgICAgICAgICAgICMgSGFuZGxpbmcgb2YgdGVzdHMgbWFya2Vk
IGFzIFsgUGFzcyBdIGluIGV4cGVjdGF0aW9ucyBmaWxlLgorICAgICAgICAgICAgZm9yIHBhdGgg
aW4gc2VsZi5wYXRoc190b19pbXBvcnQ6CisgICAgICAgICAgICAgICAgaWYgbm90IHBhdGggaW4g
Y29weV9wYXRoczoKKyAgICAgICAgICAgICAgICAgICAgY29weV9wYXRocy5hcHBlbmQocGF0aCkK
KworICAgICAgICBmb3IgcGF0aCBpbiBjb3B5X3BhdGhzOgorICAgICAgICAgICAgc291cmNlX3Bh
dGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5yZXBvc2l0b3J5X2RpcmVjdG9yeSwgcGF0
aCkKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uX3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4o
ZGVzdGluYXRpb25fZGlyZWN0b3J5LCBwYXRoKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Zp
bGVzeXN0ZW0uZXhpc3RzKHNvdXJjZV9wYXRoKToKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9y
KCdDYW5ub3QgY29weSAlcycgJSBzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgIGVsaWYgc2VsZi5f
ZmlsZXN5c3RlbS5pc2Rpcihzb3VyY2VfcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5fZmls
ZXN5c3RlbS5jb3B5dHJlZShzb3VyY2VfcGF0aCwgZGVzdGluYXRpb25fcGF0aCkKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5tYXliZV9tYWtlX2Rp
cmVjdG9yeShzZWxmLl9maWxlc3lzdGVtLmRpcm5hbWUoZGVzdGluYXRpb25fcGF0aCkpCisgICAg
ICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5jb3B5ZmlsZShzb3VyY2VfcGF0aCwgZGVzdGlu
YXRpb25fcGF0aCkKKworICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLnBhdGhzX3RvX3NraXA6Cisg
ICAgICAgICAgICBkZXN0aW5hdGlvbl9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKGRlc3Rp
bmF0aW9uX2RpcmVjdG9yeSwgcGF0aCkKKyAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0u
aXNmaWxlKGRlc3RpbmF0aW9uX3BhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0
ZW0ucmVtb3ZlKGRlc3RpbmF0aW9uX3BhdGgpCisKKyAgICBkZWYgZG93bmxvYWRfdGVzdHMoc2Vs
ZiwgZGVzdGluYXRpb25fZGlyZWN0b3J5LCB0ZXN0X3BhdGhzPVtdKToKKyAgICAgICAgZm9yIHRl
c3RfcmVwb3NpdG9yeSBpbiBzZWxmLnRlc3RfcmVwb3NpdG9yaWVzOgorICAgICAgICAgICAgc2Vs
Zi5jaGVja291dF90ZXN0X3JlcG9zaXRvcnkodGVzdF9yZXBvc2l0b3J5WydyZXZpc2lvbiddLCB0
ZXN0X3JlcG9zaXRvcnlbJ3VybCddLCBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5yZXBvc2l0
b3J5X2RpcmVjdG9yeSwgdGVzdF9yZXBvc2l0b3J5WyduYW1lJ10pKQorICAgICAgICBzZWxmLmNv
cHlfdGVzdHMoZGVzdGluYXRpb25fZGlyZWN0b3J5LCB0ZXN0X3BhdGhzKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKaW5kZXggNDVhZmI1MDEwYjIyYWIwZGY3
YTk1NTM2NzZjMmIzNDUxNTYwMjViNi4uZjE5NjA5N2IxMmYxN2Y0ZjEwZjNkNjY0MTMwODg0Yzhj
NmZhNjc3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBv
cnRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5
CkBAIC0xLDYgKzEsNyBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAKICMgQ29weXJpZ2h0IChD
KSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwog
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxNyArMjksMTUgQEAKICMgU1VDSCBEQU1B
R0UuCiAKICIiIgotIFRoaXMgc2NyaXB0IGltcG9ydHMgYSBkaXJlY3Rvcnkgb2YgVzNDIENTUyB0
ZXN0cyBpbnRvIFdlYktpdC4KLQotIFlvdSBtdXN0IGhhdmUgY2hlY2tlZCBvdXQgdGhlIFczQyBy
ZXBvc2l0b3J5IHRvIHlvdXIgbG9jYWwgZHJpdmUuCisgVGhpcyBzY3JpcHQgaW1wb3J0cyBXM0Mg
dGVzdHMgaW50byBXZWJLaXQsIGVpdGhlciBmcm9tIGEgbG9jYWwgZm9sZGVyIG9yIGJ5IGNsb25p
bmcgVzNDIENTUyBhbmQgV1BUIHJlcG9zaXRvcmllcy4KIAogIFRoaXMgc2NyaXB0IHdpbGwgaW1w
b3J0IHRoZSB0ZXN0cyBpbnRvIFdlYktpdCBmb2xsb3dpbmcgdGhlc2UgcnVsZXM6CiAKLSAgICAt
IEFsbCB0ZXN0cyBhcmUgaW1wb3J0ZWQgaW50byBMYXlvdXRUZXN0cy93M2MKKyAgICAtIEFsbCB0
ZXN0cyBhcmUgYnkgZGVmYXVsdCBpbXBvcnRlZCBpbnRvIExheW91dFRlc3RzL3czYwogCiAgICAg
LSBUZXN0cyB3aWxsIGJlIGltcG9ydGVkIGludG8gYSBkaXJlY3RvcnkgdHJlZSB0aGF0Ci0gICAg
ICBtaXJyb3JzIHRoZSBDU1MgTWVyY3VyaWFsIHJlcG8uIEZvciBleGFtcGxlLCA8Y3Nzd2dfcmVw
b19yb290Pi9jc3MyLjEgaXMgYnJvdWdodCBpbgotICAgICAgYXMgTGF5b3V0VGVzdHMvY3Nzd2cv
Y3NzMi4xLCBtYWludGFpbmluZyB0aGUgZW50aXJlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdW5kZXIg
dGhhdAorICAgICAgbWlycm9ycyB0aGUgQ1NTIGFuZCBXUFQgcmVwb3NpdG9yaWVzLiBGb3IgZXhh
bXBsZSwgPGNzc3dnX3JlcG9fcm9vdD4vY3NzMi4xIHNob3VsZCBiZSBicm91Z2h0IGluCisgICAg
ICBhcyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvY3Nzd2ctdGVzdHMvY3NzMi4xLCBtYWludGFp
bmluZyB0aGUgZW50aXJlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdW5kZXIgdGhhdAogCiAgICAgLSBC
eSBkZWZhdWx0LCBvbmx5IHJlZnRlc3RzIGFuZCBqc3Rlc3QgYXJlIGltcG9ydGVkLiBUaGlzIGNh
biBiZSBvdmVycmlkZGVuIHdpdGggYSAtYSBvciAtLWFsbAogICAgICAgYXJndW1lbnQKQEAgLTQ3
LDkgKzQ2LDE1IEBACiAgICAgICB0aGV5IGFyZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBpZGVhIHRo
YXQgcnVubmluZyB0aGlzIHNjcmlwdCB3b3VsZCByZWZyZXNoIGZpbGVzIHBlcmlvZGljYWxseS4K
ICAgICAgIFRoaXMgY2FuIGFsc28gYmUgb3ZlcnJpZGRlbiBieSBhIC1uIG9yIC0tbm8tb3Zlcndy
aXRlIGZsYWcKIAorICAgIC0gSWYgbm8gaW1wb3J0X2RpcmVjdG9yeSBpcyBwcm92aWRlZCwgdGhl
IHNjcmlwdCB3aWxsIGRvd25sb2FkIHRoZSB0ZXN0cyBmcm9tIHRoZSBXM0MgZ2l0aHViIHJlcG9z
aXRvcmllcy4KKyAgICAgIFRoZSBzZWxlY3Rpb24gb2YgdGVzdHMgYW5kIGZvbGRlcnMgdG8gaW1w
b3J0IHdpbGwgYmUgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBmaWxlczoKKyAgICAgICAgIDEuIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9yZXNvdXJjZXMvVGVzdFJlcG9zaXRvcmllcyBsaXN0cyB0
aGUgcmVwb3NpdG9yaWVzIHRvIGNsb25lLCB0aGUgY29ycmVzcG9uZGluZyByZXZpc2lvbiB0byBj
aGVja291dCBhbmQgdGhlIGluZnJhc3RydWN0dXJlIGZvbGRlcnMgdGhhdCBuZWVkIHRvIGJlIGlt
cG9ydGVkL3NraXBwZWQuCisgICAgICAgICAyLiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVz
b3VyY2VzL0ltcG9ydEV4cGVjdGF0aW9ucyBsaXN0IHRoZSB0ZXN0IHN1aXRlcyBvciB0ZXN0cyB0
byBOT1QgaW1wb3J0LgorCiAgICAgLSBBbGwgZmlsZXMgYXJlIGNvbnZlcnRlZCB0byB3b3JrIGlu
IFdlYktpdDoKLSAgICAgICAgIDEuIFBhdGhzIHRvIHRlc3RoYXJuZXNzLmpzIGZpbGVzIGFyZSBt
b2RpZmllZCBwb2ludCB0byBXZWJraXQncyBjb3B5IG9mIHRoZW0gaW4KLSAgICAgICAgICAgIExh
eW91dFRlc3RzL3Jlc291cmNlcywgdXNpbmcgdGhlIGNvcnJlY3QgcmVsYXRpdmUgcGF0aCBmcm9t
IHRoZSBuZXcgbG9jYXRpb24KKyAgICAgICAgIDEuIFBhdGhzIHRvIHRlc3RoYXJuZXNzLmpzIGZp
bGVzIGFyZSBtb2RpZmllZCB0byBwb2ludCB0byBXZWJraXQncyBjb3B5IG9mIHRoZW0gaW4KKyAg
ICAgICAgICAgIExheW91dFRlc3RzL3Jlc291cmNlcywgdXNpbmcgdGhlIGNvcnJlY3QgcmVsYXRp
dmUgcGF0aCBmcm9tIHRoZSBuZXcgbG9jYXRpb24uCisgICAgICAgICAgICBUaGlzIGlzIGFwcGxp
ZWQgdG8gQ1NTIHRlc3RzIGJ1dCBub3QgdG8gV1BUIHRlc3RzLgogICAgICAgICAgMi4gQWxsIENT
UyBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUgLXdlYmtpdC12ZW5kb3IgcHJlZml4IGFyZSBwcmVm
aXhlZCAtIHRoaXMgY3VycmVudAogICAgICAgICAgICAgbGlzdCBvZiB3aGF0IG5lZWRzIHByZWZp
eGVzIGlzIHJlYWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9DU1MvQ1NTUHJvcGVydGllcy5pbgogICAg
ICAgICAgMy4gRWFjaCByZWZ0ZXN0IGhhcyBpdHMgb3duIGNvcHkgb2YgaXRzIHJlZmVyZW5jZSBm
aWxlIGZvbGxvd2luZyB0aGUgbmFtaW5nIGNvbnZlbnRpb25zCkBAIC04MSw2ICs4Niw3IEBAIGZy
b20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIGZy
b20gd2Via2l0cHkudzNjLnRlc3RfcGFyc2VyIGltcG9ydCBUZXN0UGFyc2VyCiBmcm9tIHdlYmtp
dHB5LnczYy50ZXN0X2NvbnZlcnRlciBpbXBvcnQgY29udmVydF9mb3Jfd2Via2l0Citmcm9tIHdl
YmtpdHB5LnczYy50ZXN0X2Rvd25sb2FkZXIgaW1wb3J0IFRlc3REb3dubG9hZGVyCiAKIENIQU5H
RVNFVF9OT1RfQVZBSUxBQkxFID0gJ05vdCBBdmFpbGFibGUnCiAKQEAgLTg5LDkgKzk1LDkgQEAg
X2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiBkZWYgbWFpbihfYXJndiwgX3N0
ZG91dCwgX3N0ZGVycik6CiAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlX2FyZ3MoX2FyZ3YpCi0g
ICAgaW1wb3J0X2RpciA9IGFyZ3NbMF0KKyAgICBpbXBvcnRfZGlyID0gYXJnc1swXSBpZiBhcmdz
IGVsc2UgTm9uZQogICAgIGZpbGVzeXN0ZW0gPSBGaWxlU3lzdGVtKCkKLSAgICBpZiBub3QgZmls
ZXN5c3RlbS5leGlzdHMoaW1wb3J0X2Rpcik6CisgICAgaWYgaW1wb3J0X2RpciBhbmQgbm90IGZp
bGVzeXN0ZW0uZXhpc3RzKGltcG9ydF9kaXIpOgogICAgICAgICBzeXMuZXhpdCgnU291cmNlIGRp
cmVjdG9yeSAlcyBub3QgZm91bmQhJyAlIGltcG9ydF9kaXIpCiAKICAgICBjb25maWd1cmVfbG9n
Z2luZygpCkBAIC0xMTcsMjIgKzEyMywzMSBAQCBkZWYgY29uZmlndXJlX2xvZ2dpbmcoKToKIAog
CiBkZWYgcGFyc2VfYXJncyhhcmdzKToKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBh
cnNlcihwcm9nPSdpbXBvcnQtdzNjLXRlc3RzIHczY190ZXN0X3NvdXJjZV9kaXJlY3RvcnknKQor
ICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9J2ltcG9ydC13M2MtdGVz
dHMgW3czY190ZXN0X3NvdXJjZV9kaXJlY3RvcnldJykKIAogICAgIHBhcnNlci5hZGRfYXJndW1l
bnQoJy1uJywgJy0tbm8tb3ZlcndyaXRlJywgZGVzdD0nb3ZlcndyaXRlJywgYWN0aW9uPSdzdG9y
ZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwKICAgICAgICAgaGVscD0nRmxhZyB0byBwcmV2ZW50IGR1
cGxpY2F0ZSB0ZXN0IGZpbGVzIGZyb20gb3ZlcndyaXRpbmcgZXhpc3RpbmcgdGVzdHMuIEJ5IGRl
ZmF1bHQsIHRoZXkgd2lsbCBiZSBvdmVyd3JpdHRlbicpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgnLWwnLCAnLS1uby1saW5rcy1jb252ZXJzaW9uJywgZGVzdD0nY29udmVydF90ZXN0X2hhcm5l
c3NfbGlua3MnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywgZGVmYXVsdD1UcnVlLAotICAgICAgICBo
ZWxwPSdEbyBub3QgY2hhbmdlIGxpbmtzICh0ZXN0aGFybmVzcyBqcyBvciBjc3MgZS5nLikuIEJ5
IGRlZmF1bHQsIGxpbmtzIGFyZSBjb252ZXJ0ZWQgdG8gcG9pbnQgdG8gV2ViS2l0IHRlc3RoYXJu
ZXNzIGZpbGVzLicpCisgICAgICAgaGVscD0nRG8gbm90IGNoYW5nZSBsaW5rcyAodGVzdGhhcm5l
c3MganMgb3IgY3NzIGUuZy4pLiBUaGlzIG9wdGlvbiBvbmx5IGFwcGxpZXMgd2hlbiBwcm92aWRp
bmcgYSBzb3VyY2UgZGlyZWN0b3J5LCBpbiB3aGljaCBjYXNlIGJ5IGRlZmF1bHQsIGxpbmtzIGFy
ZSBjb252ZXJ0ZWQgdG8gcG9pbnQgdG8gV2ViS2l0IHRlc3RoYXJuZXNzIGZpbGVzLiBXaGVuIHRl
c3RzIGFyZSBkb3dubG9hZGVkIGZyb20gVzNDIHJlcG9zaXRvcnksIGxpbmtzIGFyZSBjb252ZXJ0
ZWQgZm9yIENTUyB0ZXN0cyBhbmQgcmVtYWluIHVuY2hhbmdlZCBmb3IgV1BUIHRlc3RzJykKIAog
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1hJywgJy0tYWxsJywgYWN0aW9uPSdzdG9yZV90cnVl
JywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgaGVscD0nSW1wb3J0IGFsbCB0ZXN0cyBpbmNsdWRp
bmcgcmVmdGVzdHMsIEpTIHRlc3RzLCBhbmQgbWFudWFsL3BpeGVsIHRlc3RzLiBCeSBkZWZhdWx0
LCBvbmx5IHJlZnRlc3RzIGFuZCBKUyB0ZXN0cyBhcmUgaW1wb3J0ZWQnKQogICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoJy1kJywgJy0tZGVzdC1kaXInLCBkZXN0PSdkZXN0aW5hdGlvbicsIGRlZmF1
bHQ9J3czYycsCiAgICAgICAgIGhlbHA9J0ltcG9ydCBpbnRvIGEgc3BlY2lmaWVkIGRpcmVjdG9y
eSByZWxhdGl2ZSB0byB0aGUgTGF5b3V0VGVzdHMgcm9vdC4gQnkgZGVmYXVsdCwgaW1wb3J0cyBp
bnRvIHczYycpCisKKyAgICBsaXN0X29mX3JlcG9zaXRvcmllcyA9ICcgb3IgJy5qb2luKFt0ZXN0
X3JlcG9zaXRvcnlbJ25hbWUnXSBmb3IgdGVzdF9yZXBvc2l0b3J5IGluIFRlc3REb3dubG9hZGVy
LmxvYWRfdGVzdF9yZXBvc2l0b3JpZXMoKV0pCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXQn
LCAnLS10ZXN0LXBhdGgnLCBhY3Rpb249J2FwcGVuZCcsIGRlc3Q9J3Rlc3RfcGF0aHMnLCBkZWZh
dWx0PVtdLAotICAgICAgICBoZWxwPSdJbXBvcnQgb25seSB0ZXN0cyBpbiB0aGUgc3VwcGxpZWQg
c3ViZGlyZWN0b3J5IG9mIHRoZSB3M2NfdGVzdF9kaXJlY3RvcnkuIENhbiBiZSBzdXBwbGllZCBt
dWx0aXBsZSB0aW1lcyB0byBnaXZlIG11bHRpcGxlIHBhdGhzJykKKyAgICAgICAgIGhlbHA9J0lt
cG9ydCBvbmx5IHRlc3RzIGluIHRoZSBzdXBwbGllZCBzdWJkaXJlY3Rvcnkgb2YgdGhlIHNvdXJj
ZSBkaXJlY3RvcnkuIENhbiBiZSBzdXBwbGllZCBtdWx0aXBsZSB0aW1lcyB0byBnaXZlIG11bHRp
cGxlIHBhdGhzLiBGb3IgdGVzdHMgZGlyZWN0bHkgY2xvbmVkIGZyb20gVzNDIHJlcG9zaXRvcmll
cywgdXNlICcgKyBsaXN0X29mX3JlcG9zaXRvcmllcyArICcgcHJlZml4ZXMgdG8gZmlsdGVyIHNw
ZWNpZmljIHRlc3RzJykKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9z
ZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICBoZWxwPSdQ
cmludCBtYXhpbWFsIGxvZycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1uby1mZXRjaCcs
IGFjdGlvbj0nc3RvcmVfZmFsc2UnLCBkZXN0PSdmZXRjaCcsIGRlZmF1bHQ9VHJ1ZSwKKyAgICAg
ICAgIGhlbHA9J0RvIG5vdCBmZXRjaCB0aGUgcmVwb3NpdG9yaWVzLiBCeSBkZWZhdWx0LCByZXBv
c2l0b3JpZXMgYXJlIGZldGNoZWQgaWYgYSBzb3VyY2UgZGlyZWN0b3J5IGlzIG5vdCBwcm92aWRl
ZCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1pbXBvcnQtYWxsJywgYWN0aW9uPSdzdG9y
ZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgIGhlbHA9J0lnbm9yZSB0aGUgSW1wb3J0
RXhwZWN0YXRpb25zIGZpbGUuIEFsbCB0ZXN0cyB3aWxsIGJlIGltcG9ydGVkLiBUaGlzIG9wdGlv
biBvbmx5IGFwcGxpZXMgd2hlbiB0ZXN0cyBhcmUgZG93bmxvYWRlZCBmcm9tIFczQyByZXBvc2l0
b3J5JykKIAogICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2Vfa25vd25fYXJncyhhcmdz
KQotICAgIGlmIGxlbihhcmdzKSAhPSAxOgorICAgIGlmIGxlbihhcmdzKSA+IDE6CiAgICAgICAg
IHBhcnNlci5lcnJvcignSW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMnKQogICAgIHJldHVy
biBvcHRpb25zLCBhcmdzCiAKQEAgLTE1MCwxNyArMTY1LDM5IEBAIGNsYXNzIFRlc3RJbXBvcnRl
cihvYmplY3QpOgogICAgICAgICBzZWxmLl93ZWJraXRfcm9vdCA9IHdlYmtpdF9maW5kZXIud2Vi
a2l0X2Jhc2UoKQogCiAgICAgICAgIHNlbGYuZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gd2Via2l0
X2ZpbmRlci5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoIkxheW91dFRlc3RzIiwgb3B0aW9ucy5kZXN0
aW5hdGlvbikKKyAgICAgICAgc2VsZi5sYXlvdXRfdGVzdHNfdzNjX3BhdGggPSB3ZWJraXRfZmlu
ZGVyLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnLCAnaW1wb3J0ZWQnLCAndzNj
JykKKyAgICAgICAgc2VsZi50ZXN0c19kb3dubG9hZF9wYXRoID0gd2Via2l0X2ZpbmRlci5wYXRo
X2Zyb21fd2Via2l0X2Jhc2UoJ1dlYktpdEJ1aWxkJywgJ3czYy10ZXN0cycpCisKKyAgICAgICAg
c2VsZi5fdGVzdF9kb3dubG9hZGVyID0gTm9uZQogCiAgICAgICAgIHNlbGYuaW1wb3J0X2xpc3Qg
PSBbXQorICAgICAgICBzZWxmLl9pbXBvcnRpbmdfZG93bmxvYWRlZF90ZXN0cyA9IHNvdXJjZV9k
aXJlY3RvcnkgaXMgTm9uZQogCiAgICAgZGVmIGRvX2ltcG9ydChzZWxmKToKLSAgICAgICAgaWYg
bGVuKHNlbGYub3B0aW9ucy50ZXN0X3BhdGhzKSA9PSAwOgorICAgICAgICBpZiBub3Qgc2VsZi5z
b3VyY2VfZGlyZWN0b3J5OgorICAgICAgICAgICAgX2xvZy5pbmZvKCdEb3dubG9hZGluZyBXM0Mg
dGVzdCByZXBvc2l0b3JpZXMnKQorICAgICAgICAgICAgc2VsZi5zb3VyY2VfZGlyZWN0b3J5ID0g
c2VsZi5maWxlc3lzdGVtLmpvaW4oc2VsZi50ZXN0c19kb3dubG9hZF9wYXRoLCAndG8tYmUtaW1w
b3J0ZWQnKQorICAgICAgICAgICAgc2VsZi5maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5
KHNlbGYudGVzdHNfZG93bmxvYWRfcGF0aCkKKyAgICAgICAgICAgIHNlbGYuZmlsZXN5c3RlbS5t
YXliZV9tYWtlX2RpcmVjdG9yeShzZWxmLnNvdXJjZV9kaXJlY3RvcnkpCisgICAgICAgICAgICBz
ZWxmLnRlc3RfZG93bmxvYWRlcigpLmRvd25sb2FkX3Rlc3RzKHNlbGYuc291cmNlX2RpcmVjdG9y
eSwgc2VsZi5vcHRpb25zLnRlc3RfcGF0aHMpCisKKyAgICAgICAgaWYgbm90IHNlbGYub3B0aW9u
cy50ZXN0X3BhdGhzIG9yIHNlbGYuX2ltcG9ydGluZ19kb3dubG9hZGVkX3Rlc3RzOgogICAgICAg
ICAgICAgc2VsZi5maW5kX2ltcG9ydGFibGVfdGVzdHMoc2VsZi5zb3VyY2VfZGlyZWN0b3J5KQog
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgZm9yIHRlc3RfcGF0aCBpbiBzZWxmLm9wdGlvbnMu
dGVzdF9wYXRoczoKICAgICAgICAgICAgICAgICBzZWxmLmZpbmRfaW1wb3J0YWJsZV90ZXN0cyhz
ZWxmLmZpbGVzeXN0ZW0uam9pbihzZWxmLnNvdXJjZV9kaXJlY3RvcnksIHRlc3RfcGF0aCkpCisK
ICAgICAgICAgc2VsZi5pbXBvcnRfdGVzdHMoKQogCisgICAgZGVmIHRlc3RfZG93bmxvYWRlcihz
ZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX3Rlc3RfZG93bmxvYWRlcjoKKyAgICAgICAgICAg
IGRvd25sb2FkX29wdGlvbnMgPSBUZXN0RG93bmxvYWRlci5kZWZhdWx0X29wdGlvbnMoKQorICAg
ICAgICAgICAgZG93bmxvYWRfb3B0aW9ucy5mZXRjaCA9IHNlbGYub3B0aW9ucy5mZXRjaAorICAg
ICAgICAgICAgZG93bmxvYWRfb3B0aW9ucy52ZXJib3NlID0gc2VsZi5vcHRpb25zLnZlcmJvc2UK
KyAgICAgICAgICAgIGRvd25sb2FkX29wdGlvbnMuaW1wb3J0X2FsbCA9IHNlbGYub3B0aW9ucy5p
bXBvcnRfYWxsCisgICAgICAgICAgICBzZWxmLl90ZXN0X2Rvd25sb2FkZXIgPSBUZXN0RG93bmxv
YWRlcihzZWxmLnRlc3RzX2Rvd25sb2FkX3BhdGgsIHNlbGYuaG9zdCwgZG93bmxvYWRfb3B0aW9u
cykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfZG93bmxvYWRlcgorCiAgICAgZGVmIHNob3Vs
ZF9za2lwX2ZpbGUoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAjIEZvciBzb21lIHJlYXNvbiB0
aGUgdzNjIHJlcG8gY29udGFpbnMgcmFuZG9tIHBlcmwgc2NyaXB0cyB3ZSBkb24ndCBjYXJlIGFi
b3V0LgogICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLnBsJyk6CkBAIC0xNzEsNiArMjA4
LDggQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CiAKICAgICBkZWYgZmluZF9pbXBvcnRh
YmxlX3Rlc3RzKHNlbGYsIGRpcmVjdG9yeSk6CiAgICAgICAgIGRlZiBzaG91bGRfa2VlcF9zdWJk
aXIoZmlsZXN5c3RlbSwgcGF0aCk6CisgICAgICAgICAgICBpZiBzZWxmLl9pbXBvcnRpbmdfZG93
bmxvYWRlZF90ZXN0czoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICAgICAg
c3ViZGlyID0gcGF0aFtsZW4oZGlyZWN0b3J5KTpdCiAgICAgICAgICAgICBESVJTX1RPX1NLSVAg
PSAoJ3dvcmstaW4tcHJvZ3Jlc3MnLCAndG9vbHMnLCAnc3VwcG9ydCcpCiAgICAgICAgICAgICBz
aG91bGRfc2tpcCA9IGZpbGVzeXN0ZW0uYmFzZW5hbWUoc3ViZGlyKS5zdGFydHN3aXRoKCcuJykg
b3IgKHN1YmRpciBpbiBESVJTX1RPX1NLSVApCkBAIC0yMzcsNiArMjc2LDE0IEBAIGNsYXNzIFRl
c3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0X2xpc3QuYXBw
ZW5kKHsnZGlybmFtZSc6IHJvb3QsICdjb3B5X2xpc3QnOiBjb3B5X2xpc3QsCiAgICAgICAgICAg
ICAgICAgICAgICdyZWZ0ZXN0cyc6IHJlZnRlc3RzLCAnanN0ZXN0cyc6IGpzdGVzdHMsICd0b3Rh
bF90ZXN0cyc6IHRvdGFsX3Rlc3RzfSkKIAorICAgIGRlZiBzaG91bGRfY29udmVydF90ZXN0X2hh
cm5lc3NfbGlua3Moc2VsZiwgdGVzdCk6CisgICAgICAgIGlmIHNlbGYuX2ltcG9ydGluZ19kb3du
bG9hZGVkX3Rlc3RzOgorICAgICAgICAgICAgZm9yIHRlc3RfcmVwb3NpdG9yeSBpbiBzZWxmLnRl
c3RfZG93bmxvYWRlcigpLnRlc3RfcmVwb3NpdG9yaWVzOgorICAgICAgICAgICAgICAgIGlmIHRl
c3Quc3RhcnRzd2l0aCh0ZXN0X3JlcG9zaXRvcnlbJ25hbWUnXSk6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0ZXN0X3JlcG9zaXRvcnlbJ2NvbnZlcnRfdGVzdF9oYXJuZXNzX2xpbmtzJ10K
KyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBzZWxmLm9wdGlvbnMuY29u
dmVydF90ZXN0X2hhcm5lc3NfbGlua3MKKwogICAgIGRlZiBpbXBvcnRfdGVzdHMoc2VsZik6CiAg
ICAgICAgIHRvdGFsX2ltcG9ydGVkX3Rlc3RzID0gMAogICAgICAgICB0b3RhbF9pbXBvcnRlZF9y
ZWZ0ZXN0cyA9IDAKQEAgLTMwMyw3ICszNTAsNyBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0
KToKICAgICAgICAgICAgICAgICBtaW1ldHlwZSA9IG1pbWV0eXBlcy5ndWVzc190eXBlKG9yaWdf
ZmlsZXBhdGgpCiAgICAgICAgICAgICAgICAgaWYgJ2h0bWwnIGluIHN0cihtaW1ldHlwZVswXSkg
b3IgJ3htbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSAgb3IgJ2NzcycgaW4gc3RyKG1pbWV0eXBlWzBd
KToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgY29u
dmVydGVkX2ZpbGUgPSBjb252ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lPW9yaWdf
ZmlsZXBhdGgsIHJlZmVyZW5jZV9zdXBwb3J0X2luZm89cmVmZXJlbmNlX3N1cHBvcnRfaW5mbywg
Y29udmVydF90ZXN0X2hhcm5lc3NfbGlua3M9c2VsZi5vcHRpb25zLmNvbnZlcnRfdGVzdF9oYXJu
ZXNzX2xpbmtzKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkX2ZpbGUgPSBjb252
ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lPW9yaWdfZmlsZXBhdGgsIHJlZmVyZW5j
ZV9zdXBwb3J0X2luZm89cmVmZXJlbmNlX3N1cHBvcnRfaW5mbywgY29udmVydF90ZXN0X2hhcm5l
c3NfbGlua3M9c2VsZi5zaG91bGRfY29udmVydF90ZXN0X2hhcm5lc3NfbGlua3Moc3VicGF0aCkp
CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAgICAgICAgIF9s
b2cud2FybignRmFpbGVkIGNvbnZlcnRpbmcgJXMnLCBvcmlnX2ZpbGVwYXRoKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZmFpbGVkX2NvbnZlcnNpb25fZmlsZXMuYXBwZW5kKG9yaWdfZmlsZXBh
dGgpCkBAIC0zODIsMTAgKzQyOSw5IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAg
ICAgICBpbXBvcnRfbG9nID0gW10KICAgICAgICAgaW1wb3J0X2xvZy5hcHBlbmQoJ1RoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LlxuJykKICAgICAgICAgaW1wb3J0X2xvZy5hcHBlbmQoJ0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2Via2l0LlxuJykKLSAgICAgICAgaW1wb3J0X2xvZy5hcHBlbmQoJ0lu
c3RlYWQsIHB1c2ggY2hhbmdlcyB0byB0aGUgVzNDIENTUyByZXBvOlxuJykKLSAgICAgICAgaW1w
b3J0X2xvZy5hcHBlbmQoJ1x0aHR0cDovL2hnLmNzc3dnLm9yZy90ZXN0XG4nKQotICAgICAgICBp
bXBvcnRfbG9nLmFwcGVuZCgnT3IgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXM0MgQ1NT
IGdpdGh1YjpcbicpCi0gICAgICAgIGltcG9ydF9sb2cuYXBwZW5kKCdcdGh0dHBzOi8vZ2l0aHVi
LmNvbS93M2MvY3Nzd2ctdGVzdFxuXG4nKQorICAgICAgICBpbXBvcnRfbG9nLmFwcGVuZCgnSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXM0MgQ1NTIG9yIFdQVCBnaXRodWI6
XG4nKQorICAgICAgICBpbXBvcnRfbG9nLmFwcGVuZCgnXHRodHRwczovL2dpdGh1Yi5jb20vdzNj
L2Nzc3dnLXRlc3RcbicpCisgICAgICAgIGltcG9ydF9sb2cuYXBwZW5kKCdcdGh0dHBzOi8vZ2l0
aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzXG5cbicpCiAgICAgICAgIGltcG9ydF9sb2cu
YXBwZW5kKCdUaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YmtpdCB0byByZWltcG9ydFxuXG4nKQogICAgICAgICBpbXBvcnRfbG9nLmFwcGVuZCgnRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlXG5cbicpCiAgICAgICAgIGltcG9ydF9sb2cuYXBw
ZW5kKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS1cbicpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRl
eCBmMTdkZGZiOGZjZTRlZjYxYTNiNjRjZGE0NzlkNzk4YjFhMTBlMTZmLi5kOGEwZDdkYzFjZmQz
MDM0NWFmZTc5ZTE4ODk0Y2ZmMzM2MjQ1MDJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wMy0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5m
YWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFdlYktpdCB0ZXN0IGluZnJhc3RydWN0dXJl
IHNob3VsZCBhdXRvbWF0ZSB0aGUgcHJvY2VzcyBvZiBjbG9uaW5nIFczQyB0ZXN0IHN1aXRlIGFu
ZCBpbXBvcnRpbmcgdGVzdHMgZnJvbSBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NzY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdFJlcG9zaXRvcmllcyBkZWZpbmVzIHRoZSBnaXQgcmVwb3Np
dG9yaWVzIHVzZWQgdG8gaW1wb3J0IHRlc3RzLgorICAgICAgICBJdCBkZWZpbmVzIGZvciBlYWNo
IHJlcG9zaXRvcnkgdGhlIGluZnJhc3RydWN0dXJlIHBhdGhzIHRvIGFsd2F5cyBpbXBvcnQsIHRo
ZSBwYXRocyB0byBza2lwIGFuZCB0aGUgcmV2aXNpb24gdG8gdXNlLgorICAgICAgICBJbXBvcnRF
eHBlY3RhcnRpb25zIGRlZmluZXMgdGhlIHRlc3RzIHRvIGltcG9ydC4KKworICAgICAgICAqIHJl
c291cmNlcy9JbXBvcnRFeHBlY3RhdGlvbnM6IEFkZGVkLgorICAgICAgICAqIHJlc291cmNlcy9U
ZXN0UmVwb3NpdG9yaWVzOiBBZGRlZC4KKwogMjAxNS0wMi0yMCAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3ZuOmtleXdvcmRzIHByb3BlcnR5
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9JbXBvcnRF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL0ltcG9ydEV4
cGVjdGF0aW9ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjU5MWY0ZGYyOTA5ZDc3N2RkZTI1NTFmZDJmOWUyOThh
ODJkM2RhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291
cmNlcy9JbXBvcnRFeHBlY3RhdGlvbnMKQEAgLTAsMCArMSwxMTEgQEAKK2Nzc3dnLXRlc3RzL2Nv
bXBvc2l0aW5nLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1hbGlnbi0zIFsgU2tpcCBdCitj
c3N3Zy10ZXN0cy9jc3MtYW5pbWF0aW9ucy0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtYmFj
a2dyb3VuZHMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWJveC0zIFsgU2tpcCBdCitjc3N3
Zy10ZXN0cy9jc3MtYnJlYWstMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWNvbG9yLTMgWyBT
a2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1jb25kaXRpb25hbC0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0
cy9jc3MtY291bnRlci1zdHlsZXMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWV4Y2x1c2lv
bnMtMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWZsZXhib3gtMSBbIFNraXAgXQorY3Nzd2ct
dGVzdHMvY3NzLWZvbnRzLTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1nY3BtLTMgWyBTa2lw
IF0KK2Nzc3dnLXRlc3RzL2Nzcy1ncmlkLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1pbWFn
ZXMtMyBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLWxpc3RzLTMgWyBTa2lwIF0KK2Nzc3dnLXRl
c3RzL2Nzcy1tYXNraW5nLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1tdWx0aWNvbC0xIFsg
U2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtbmFtZXNwYWNlcy0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0
cy9jc3MtcGFnZS0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtcmVnaW9ucy0xIFsgU2tpcCBd
Citjc3N3Zy10ZXN0cy9jc3MtcnVieS0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3Mtc2hhcGVz
LTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy1zcGVlY2gtMSBbIFNraXAgXQorY3Nzd2ctdGVz
dHMvY3NzLXN0eWxlLWF0dHItMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvY3NzLXN5bnRheC0zIFsg
U2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtdGFibGVzLTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nz
cy10ZXh0LTMgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy10ZXh0LWRlY29yLTMgWyBTa2lwIF0K
K2Nzc3dnLXRlc3RzL2Nzcy10cmFuc2Zvcm1zLTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy10
cmFuc2l0aW9ucy0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtdWktMyBbIFNraXAgXQorY3Nz
d2ctdGVzdHMvY3NzLXZhbHVlcy0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3MtdmFyaWFibGVz
LTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2Nzcy13cml0aW5nLW1vZGVzLTMgWyBTa2lwIF0KK2Nz
c3dnLXRlc3RzL2NzczEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL2NzczIxIFsgU2tpcCBdCitjc3N3
Zy10ZXN0cy9jc3NvbS0xIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9jc3NvbS12aWV3LTEgWyBTa2lw
IF0KK2Nzc3dnLXRlc3RzL2ZpbHRlcnMtMSBbIFNraXAgXQorY3Nzd2ctdGVzdHMvZm9udHMgWyBT
a2lwIF0KK2Nzc3dnLXRlc3RzL2dlb21ldHJ5LTEgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL21lZGlh
cXVlcmllcy0zIFsgU2tpcCBdCitjc3N3Zy10ZXN0cy9zZWxlY3RvcnMtMyBbIFNraXAgXQorY3Nz
d2ctdGVzdHMvc2VsZWN0b3JzLTQgWyBTa2lwIF0KK2Nzc3dnLXRlc3RzL3ZlbmRvci1pbXBvcnRz
IFsgU2tpcCBdCisKK3dlYi1wbGF0Zm9ybS10ZXN0cy8yZGNvbnRleHQgWyBTa2lwIF0KK3dlYi1w
bGF0Zm9ybS10ZXN0cy9ET01FdmVudHMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9GaWxl
QVBJIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCIFsgU2tpcCBdCit3ZWIt
cGxhdGZvcm0tdGVzdHMvV2ViQ3J5cHRvQVBJIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMv
V2ViSURMIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvWE1MSHR0cFJlcXVlc3QgWyBTa2lw
IF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9hbWJpZW50LWxpZ2h0IFsgU2tpcCBdCit3ZWItcGxhdGZv
cm0tdGVzdHMvYW5pbWF0aW9uLXRpbWluZyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2Fw
cC11cmkgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9iYXR0ZXJ5LXN0YXR1cyBbIFNraXAg
XQord2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5IFsgU2tpcCBdCit3
ZWItcGxhdGZvcm0tdGVzdHMvY29ycyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2N1c3Rv
bS1lbGVtZW50cyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2RvbSBbIFNraXAgXQorI3dl
Yi1wbGF0Zm9ybS10ZXN0cy9kb21wYXJzaW5nIFsgUGFzcyBdCit3ZWItcGxhdGZvcm0tdGVzdHMv
ZG9teHBhdGggWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9lbmNvZGluZyBbIFNraXAgXQor
d2ViLXBsYXRmb3JtLXRlc3RzL2V2ZW50c291cmNlIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVz
dHMvZXh0LXhodG1sLXB1YmlkIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvZ2VvbG9jYXRp
b24tQVBJIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvZ2FtZXBhZCBbIFNraXAgXQord2Vi
LXBsYXRmb3JtLXRlc3RzL2hyLXRpbWUgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC1pbXBvcnRzIFsgU2tpcCBdCit3ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC1sb25nZGVzYyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwtbWVkaWEtY2FwdHVyZSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL2h0dHAgWyBT
a2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9qcyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3Rz
L21lZGlhIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlIFsgU2tpcCBd
Cit3ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXN0cmVhbXMgWyBTa2lwIF0KK3dlYi1w
bGF0Zm9ybS10ZXN0cy9taWNyb2RhdGEgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9uYXZp
Z2F0aW9uLXRpbWluZyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL25vdGlmaWNhdGlvbnMg
WyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9vbGQtdGVzdHMgWyBTa2lwIF0KK3dlYi1wbGF0
Zm9ybS10ZXN0cy9wYWdlLXZpc2liaWxpdHkgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9w
ZXJmb3JtYW5jZS10aW1lbGluZSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3BvaW50ZXJl
dmVudHMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy9wb2ludGVybG9jayBbIFNraXAgXQor
d2ViLXBsYXRmb3JtLXRlc3RzL3Byb2dyZXNzLWV2ZW50cyBbIFNraXAgXQord2ViLXBsYXRmb3Jt
LXRlc3RzL3Byb3hpbWl0eSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3F1aXJrcy1tb2Rl
IFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvcmVzb3VyY2UtdGltaW5nIFsgU2tpcCBdCit3
ZWItcGxhdGZvcm0tdGVzdHMvc2VsZWN0b3JzIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMv
c2VsZWN0b3JzLWFwaSBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3NoYWRvdy1kb20gWyBTa2lwIF0KK3dlYi1w
bGF0Zm9ybS10ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkgWyBTa2lwIF0KK3dlYi1wbGF0Zm9y
bS10ZXN0cy90b3VjaC1ldmVudHMgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy90eXBlZGFy
cmF5cyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3VybCBbIFNraXAgXQord2ViLXBsYXRm
b3JtLXRlc3RzL3VzZXItdGltaW5nIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvdmlicmF0
aW9uIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMgWyBTa2lwIF0K
K3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpbyBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYmRyaXZlciBbIFNraXAgXQord2ViLXBsYXRmb3JtLXRlc3RzL3dlYmdsIFsgU2tpcCBdCit3
ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjIFsgU2tpcCBdCit3ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cyBbIFNraXAg
XQord2ViLXBsYXRmb3JtLXRlc3RzL3dlYnN0b3JhZ2UgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ2dHQgWyBTa2lwIF0KK3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzIFsgU2tpcCBd
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL1Rlc3RSZXBv
c2l0b3JpZXMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL1Rlc3RSZXBvc2l0
b3JpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTU2OGUyMDk2N2FhMDYyYjc4Yzk2YmVkZDE2YTdhOWYxMzk2MDI2
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9yZXNvdXJjZXMv
VGVzdFJlcG9zaXRvcmllcwpAQCAtMCwwICsxLDM1IEBACitbCisgICAgeworICAgICAgICAibmFt
ZSI6ICJjc3N3Zy10ZXN0cyIsCisgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3cz
Yy9jc3N3Zy10ZXN0LmdpdCIsIAorICAgICAgICAicmV2aXNpb24iOiAiOWY0NWY4OSIsCisgICAg
ICAgICJwYXRoc190b19za2lwIjogWworICAgICAgICAgICAgIndvcmstaW4tcHJvZ3Jlc3MiLAor
ICAgICAgICAgICAgInRvb2xzIgorICAgICAgICBdLAorICAgICAgICAicGF0aHNfdG9faW1wb3J0
IjogWworICAgICAgICAgICAgInN1cHBvcnQiCisgICAgICAgIF0sCisgICAgICAgICJjb252ZXJ0
X3Rlc3RfaGFybmVzc19saW5rcyI6IHRydWUKKyAgICB9LAorICAgIHsKKyAgICAgICAgIm5hbWUi
OiAid2ViLXBsYXRmb3JtLXRlc3RzIiwKKyAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5j
b20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQiLCAKKyAgICAgICAgInJldmlzaW9uIjogIjk5
MDc5M2QiLAorICAgICAgICAicGF0aHNfdG9fc2tpcCI6IFsKKyAgICAgICAgICAgICJjb25mb3Jt
YW5jZS1jaGVja2VycyIsCisgICAgICAgICAgICAiZG9jcyIsCisgICAgICAgICAgICAib2xkLXRl
c3RzIgorICAgICAgICBdLAorICAgICAgICAicGF0aHNfdG9faW1wb3J0IjogWworICAgICAgICAg
ICAgImNvbW1vbiIsCisgICAgICAgICAgICAiZm9udHMiLAorICAgICAgICAgICAgImltYWdlcyIs
CisgICAgICAgICAgICAicmVzb3VyY2VzIiwKKyAgICAgICAgICAgICJ0b29scyIsCisgICAgICAg
ICAgICAiY29uZmlnLmRlZmF1bHQuanNvbiIsCisgICAgICAgICAgICAic2VydmUucHkiCisgICAg
ICAgIF0sCisgICAgICAgICJjb252ZXJ0X3Rlc3RfaGFybmVzc19saW5rcyI6IGZhbHNlCisgICAg
fQorXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>