<?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>45801</bug_id>
          
          <creation_ts>2010-09-14 19:30:58 -0700</creation_ts>
          <short_desc>new-run-webkit-tests: add port-specific mechanism for finding list of tests to run and the ability to run w/o needing tests in the filesystem</short_desc>
          <delta_ts>2010-09-22 18:35:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>279334</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-14 19:30:58 -0700</bug_when>
    <thetext>new-run-webkit-tests: add port-specific mechanism for finding list of tests to run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279337</commentid>
    <comment_count>1</comment_count>
      <attachid>67634</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-14 19:33:46 -0700</bug_when>
    <thetext>Created attachment 67634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279701</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-15 14:05:37 -0700</bug_when>
    <thetext>I&apos;m confused why we&apos;d want this?  Why wouldn&apos;t the enabled-webgl test run just stop blacklisting them at that point?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279705</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-15 14:14:20 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;m confused why we&apos;d want this?  Why wouldn&apos;t the enabled-webgl test run just stop blacklisting them at that point?

I&apos;m actually creating a new version of the port that will only run a subset of the tests by default (e.g., fast/compositing). By adding this, we can set the subset in the code and not have to worry about passing the right thing in on the command line or crafting an expectations file with a ton of SKIPs (which would break whenever a new directory was added).

This seems like a generically useful thing to have for any port or configuration that wants to run a minority of the layout tests; I&apos;m open to other suggestions for how to do this (although note that I will need to create other changes for the accelerated versions of the ports anyway, to adjust command line flags and baseline search paths).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280526</commentid>
    <comment_count>4</comment_count>
      <attachid>67634</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-16 21:11:12 -0700</bug_when>
    <thetext>Comment on attachment 67634
Patch

per conversation w/ tony@chromium.org, I will re-do the patch to actually make the port/test.py implementation in-memory only. This will require changing more generic code and adding a few more hooks in the port interface to stop assuming that tests can be accessed via the filesystem directly.

We will look at what the resulting port patch looks like and figure out if it&apos;s worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281070</commentid>
    <comment_count>5</comment_count>
      <attachid>67993</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-17 19:39:09 -0700</bug_when>
    <thetext>Created attachment 67993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281073</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-17 19:48:36 -0700</bug_when>
    <thetext>Okay, the patch got *much* larger, but it works and I think it makes the generic code somewhat cleaner, at the cost (?) of preventing generic code from being able to assume that test files and expectations actually exist on the local filesystem.

The main advantage of this CL is that it deletes the whole tree under webkitpy/layout_tests/data and makes the test code in port/test.py a whole lot easier to understand.

There are a few test cases added for generic functionality and some minor bug fixes, but those could probably be applied separately. There is also a change that&apos;s half implemented to switch the code from
the results-live-in-the-filesystem approach used by test_shell/image_diff to the data-lives-in-memory-and-pipes approach used by DRT/ImageDiff. This could also be done independently of these other changes.

Please take a look at the ChangeLog entry for the list of everything that I had to change and then do some spot checking to see if we think this ends up being a useful change to commit before anyone spends a large amount of time reviewing the whole thing (or asking me to break it up into smaller chunks, which is doable but somewhat painful; I don&apos;t want to spend any more time on this CL if we don&apos;t actually like the intent). 

I think the patch is worthwhile, but I don&apos;t think it&apos;s a huge win and won&apos;t be bent out of shape if we decide that we would prefer to be able to assume files do exist in the filesystem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282092</commentid>
    <comment_count>7</comment_count>
      <attachid>67993</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-09-20 22:01:59 -0700</bug_when>
    <thetext>Comment on attachment 67993
Patch

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:379
&gt; +            return self.relative_test_filename(test)
&gt; +        elif uri.startswith(&quot;http://127.0.0.1:8880/&quot;):
&gt; +            # websocket tests
&gt; +            test = test.replace(&apos;http://127.0.0.1:8880/&apos;,
&gt; +                                &apos;&apos;)
&gt; +            return test
&gt; +        elif uri.startswith(&quot;http://&quot;):
&gt; +            # regular HTTP test
&gt; +            test = test.replace(&apos;http://127.0.0.1:8000/&apos;,
&gt; +                                &apos;http/tests/&apos;)
&gt; +            return test
&gt; +        elif uri.startswith(&quot;https://&quot;):

Per webkit style, these should not be elif since they early return in each block. Once they&apos;re made if statements, i&apos;d also prefer to see a newline after each return.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py:151
&gt;          try:
&gt; -            if self._executive.run_command(cmd, return_exit_code=True) == 0:
&gt; -                return False
&gt; -        except OSError, e:
&gt; -            if e.errno == errno.ENOENT or e.errno == errno.EACCES:
&gt; -                _compare_available = False
&gt; -            else:
&gt; -                raise e
&gt; +            try:
&gt; +                if self._executive.run_command(cmd, return_exit_code=True) == 0:
&gt; +                    return False
&gt; +            except OSError, e:
&gt; +                if e.errno == errno.ENOENT or e.errno == errno.EACCES:
&gt; +                    _compare_available = False
&gt; +                else:
&gt; +                    raise e
&gt; +        finally:

Can&apos;t you write this as a single try/except/finally instead of a try/except nested inside a try/finally?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:108
&gt; +        if not self._have_read_expected_checksum:

Do you really need the boolean? Can&apos;t you just check &quot;if not self._image_checksum:&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282467</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-21 12:01:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 67993 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67993&amp;action=review
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/base.py:379
&gt; &gt; +            return self.relative_test_filename(test)
&gt; &gt; +        elif uri.startswith(&quot;http://127.0.0.1:8880/&quot;):
&gt; &gt; +            # websocket tests
&gt; &gt; +            test = test.replace(&apos;http://127.0.0.1:8880/&apos;,
&gt; &gt; +                                &apos;&apos;)
&gt; &gt; +            return test
&gt; &gt; +        elif uri.startswith(&quot;http://&quot;):
&gt; &gt; +            # regular HTTP test
&gt; &gt; +            test = test.replace(&apos;http://127.0.0.1:8000/&apos;,
&gt; &gt; +                                &apos;http/tests/&apos;)
&gt; &gt; +            return test
&gt; &gt; +        elif uri.startswith(&quot;https://&quot;):
&gt; 
&gt; Per webkit style, these should not be elif since they early return in each block. Once they&apos;re made if statements, i&apos;d also prefer to see a newline after each return.

Done.

&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py:151
&gt; &gt;          try:
&gt; &gt; -            if self._executive.run_command(cmd, return_exit_code=True) == 0:
&gt; &gt; -                return False
&gt; &gt; -        except OSError, e:
&gt; &gt; -            if e.errno == errno.ENOENT or e.errno == errno.EACCES:
&gt; &gt; -                _compare_available = False
&gt; &gt; -            else:
&gt; &gt; -                raise e
&gt; &gt; +            try:
&gt; &gt; +                if self._executive.run_command(cmd, return_exit_code=True) == 0:
&gt; &gt; +                    return False
&gt; &gt; +            except OSError, e:
&gt; &gt; +                if e.errno == errno.ENOENT or e.errno == errno.EACCES:
&gt; &gt; +                    _compare_available = False
&gt; &gt; +                else:
&gt; &gt; +                    raise e
&gt; &gt; +        finally:
&gt; 
&gt; Can&apos;t you write this as a single try/except/finally instead of a try/except nested inside a try/finally?
&gt;

You didn&apos;t used to be able to do this, but it you can starting in 2.5. I don&apos;t think we support 2.4 anywhere anymore, so I&apos;ll change it.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:108
&gt; &gt; +        if not self._have_read_expected_checksum:
&gt; 
&gt; Do you really need the boolean? Can&apos;t you just check &quot;if not self._image_checksum:&quot;?

expected_checksum() returns None if there is no checksum, so you can&apos;t use that. I&apos;ve changed the routine to set _image_checksum = -1 to indicate that we haven&apos;t done a read instead.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282475</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-21 12:11:53 -0700</bug_when>
    <thetext>Committed r67974: &lt;http://trac.webkit.org/changeset/67974&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282537</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-21 13:52:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67974 might have broken Qt Windows 32-bit Debug
The following changes are on the blame list:
http://trac.webkit.org/changeset/67973
http://trac.webkit.org/changeset/67974
http://trac.webkit.org/changeset/67975
http://trac.webkit.org/changeset/67976
http://trac.webkit.org/changeset/67977
http://trac.webkit.org/changeset/67978
http://trac.webkit.org/changeset/67979</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283289</commentid>
    <comment_count>11</comment_count>
      <attachid>67993</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-09-22 15:21:03 -0700</bug_when>
    <thetext>Comment on attachment 67993
Patch

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:524
&gt; +                    with codecs.open(file1, &quot;r&quot;, &quot;utf8&quot;) as file_handle1:
&gt; +                        output1 = file_handle1.read()
&gt; +                    with codecs.open(file2, &quot;r&quot;, &quot;utf8&quot;) as file_handle2:
&gt; +                        output2 = file_handle2.read()

This change broke the rebaseline tool.  There is no file1 or file2 here and you don&apos;t do anything with output1 or output2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283430</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-22 18:22:57 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 67993 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67993&amp;action=review
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:524
&gt; &gt; +                    with codecs.open(file1, &quot;r&quot;, &quot;utf8&quot;) as file_handle1:
&gt; &gt; +                        output1 = file_handle1.read()
&gt; &gt; +                    with codecs.open(file2, &quot;r&quot;, &quot;utf8&quot;) as file_handle2:
&gt; &gt; +                        output2 = file_handle2.read()
&gt; 
&gt; This change broke the rebaseline tool.  There is no file1 or file2 here and you don&apos;t do anything with output1 or output2.

True. This was fixed in r68085.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283443</commentid>
    <comment_count>13</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-09-22 18:32:14 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 67993 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67993&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:524
&gt; &gt; &gt; +                    with codecs.open(file1, &quot;r&quot;, &quot;utf8&quot;) as file_handle1:
&gt; &gt; &gt; +                        output1 = file_handle1.read()
&gt; &gt; &gt; +                    with codecs.open(file2, &quot;r&quot;, &quot;utf8&quot;) as file_handle2:
&gt; &gt; &gt; +                        output2 = file_handle2.read()
&gt; &gt; 
&gt; &gt; This change broke the rebaseline tool.  There is no file1 or file2 here and you don&apos;t do anything with output1 or output2.
&gt; 
&gt; True. This was fixed in r68085.

Did you mean to comment out self._scm.add(path)?
http://trac.webkit.org/changeset/68085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283448</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-22 18:35:16 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; (From update of attachment 67993 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67993&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:524
&gt; &gt; &gt; &gt; +                    with codecs.open(file1, &quot;r&quot;, &quot;utf8&quot;) as file_handle1:
&gt; &gt; &gt; &gt; +                        output1 = file_handle1.read()
&gt; &gt; &gt; &gt; +                    with codecs.open(file2, &quot;r&quot;, &quot;utf8&quot;) as file_handle2:
&gt; &gt; &gt; &gt; +                        output2 = file_handle2.read()
&gt; &gt; &gt; 
&gt; &gt; &gt; This change broke the rebaseline tool.  There is no file1 or file2 here and you don&apos;t do anything with output1 or output2.
&gt; &gt; 
&gt; &gt; True. This was fixed in r68085.
&gt; 
&gt; Did you mean to comment out self._scm.add(path)?
&gt; http://trac.webkit.org/changeset/68085

Grr. Technically, no, I didn&apos;t mean to commit that change. On the other hand, that call doesn&apos;t actually work in a git checkout, which causes a crash (which is why it&apos;s commented out). Given that I expect scm.add() is a no-op under SVN, it&apos;s probably harmless.

I&apos;ve been meaning to file a separate bug to track and fix that issue, but until then, I&apos;ll submit a change undoing this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67634</attachid>
            <date>2010-09-14 19:33:46 -0700</date>
            <delta_ts>2010-09-17 19:39:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45801-20100914193345.patch</filename>
            <type>text/plain</type>
            <size>8727</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1YWFkZWM5MGE4NDk5NWYwYWQ4ODFlODRjZmIxNGM5ODEwMTMxZGE3Li4wNTEyNjA5
ZGZjZjAxODJjM2RiMGI5MmRjZWJkYmEzOGY0MmNjMjg2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAK
KzIwMTAtMDktMTQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IEFkZCB0aGUgYWJpbGl0eSB0byBvdmVycmlkZSB0aGUgbGlzdCBvZiB0ZXN0cyB5b3Ug
KmRvKiB3YW50CisgICAgICAgIHRvIHJ1biBvbiBhIHBvcnQtc3BlY2lmaWMgYmFzaXMuIFRoaXMg
aXMgdXNlZnVsIGlmIHlvdSBhcmUgIndoaXRlbGlzdGluZyIgdGVzdHMKKyAgICAgICAgaW5zdGVh
ZCBvZiAiYmxhY2tsaXN0aW5nIiB0ZXN0cyB1c2luZyBTa2lwcGVkIGZpbGVzIG9yIFNLSVAgbGlu
ZXMuIFRoaXMgd2lsbCBiZQorICAgICAgICB1c2VkIHdoZW4gSSBhZGQgYSBuZXcgcG9ydCB0aGF0
IGp1c3QgZG9lcyB0ZXN0cyBmb3IgR1BVIGFjY2VsZXJhdGVkIGNvZGUgcGF0aHMgc29vbgorICAg
ICAgICBmb3IgQ2hyb21pdW07IGhvd2V2ZXIsIHRoaXMgY2hhbmdlIGlzIGFsc28gZ2VuZXJpY2Fs
bHkgdXNlZnVsIGFzIGl0IG1ha2VzIG1vY2tpbmcKKyAgICAgICAgb3V0IHRoZSB0ZXN0IGxpc3Rz
IGVhc2llciBpbiB0aGUgJ3Rlc3QnIHBvcnQuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgZ2l2
ZXMgdXMgdHdvIHdheXMgdG8gc2tpcCB0ZXN0cyAtIG9uZSB3YXkgKG5vdCBjdXJyZW50bHkgdXNl
ZCkgd291bGQKKyAgICAgICAgYmUgdG8gbm90IHJldHVybiB0aGVtIGluIHRoZSBzZXQgb2YgdGVz
dHMgZnJvbSBwb3J0LmdhdGhlcl90ZXN0cygpLiBUaGUgb3RoZXIKKyAgICAgICAgaXMgdG8gU0tJ
UCB0aGVtIGluIHRoZSBleHBlY3RhdGlvbnMgZmlsZXMuIFdlIHByb2JhYmx5IGRvbid0IHdhbnQg
dG8gZW5jb3VyYWdlIHRoZQorICAgICAgICBmb3JtZXIgbWVjaGFuaXNtIHNpbmNlIHdlIHVsdGlt
YXRlbHkgd2FudCBldmVyeW9uZSB1c2luZyBleHBlY3RhdGlvbnMgZmlsZXMuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1ODAxCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dhdGhlcl90ZXN0cy5weTogUmVu
YW1lZCBmcm9tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfZmlsZXMucHkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToKKwogMjAxMC0wOS0xNCAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVy
cyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCA5MTI1ZjllZDIzZjkwNTI5ZjI1Yjg2MjMwNjE4
ZGVhZmNlZDcyOTY1Li5jZGVkMTI4NjU2ODNlMjlmNWI5Yzc5Mzg4MzRjY2RkMGViMWU0MjY4IDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlLnB5CkBAIC00Miw2ICs0Miw3IEBAIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAK
IGltcG9ydCBhcGFjaGVfaHR0cF9zZXJ2ZXIKK2ltcG9ydCBnYXRoZXJfdGVzdHMKIGltcG9ydCBo
dHRwX3NlcnZlcgogaW1wb3J0IHdlYnNvY2tldF9zZXJ2ZXIKIApAQCAtMjc3LDYgKzI3OCwxMCBA
QCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gImZpbGU6Ly8vIiArIHNl
bGYuZ2V0X2Fic29sdXRlX3BhdGgoZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiAiZmlsZTovLyIg
KyBzZWxmLmdldF9hYnNvbHV0ZV9wYXRoKGZpbGVuYW1lKQogCisgICAgZGVmIGdhdGhlcl90ZXN0
cyhzZWxmLCBwYXRocyk6CisgICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiB0ZXN0cyBmb3Vu
ZCAocmVsYXRpdmUgdG8gbGF5b3V0X3Rlc3RzX2RpcigpLiIiIgorICAgICAgICByZXR1cm4gZ2F0
aGVyX3Rlc3RzLmdhdGhlcl90ZXN0cyhzZWxmLCBwYXRocykKKwogICAgIGRlZiBnZXRfYWJzb2x1
dGVfcGF0aChzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgYWJzb2x1dGUg
cGF0aCBpbiB1bml4IGZvcm1hdCBmb3IgdGhlIGdpdmVuIGZpbGVuYW1lLgogCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bS5weQppbmRleCA4OTZlYWIxNWU1YjEyNjA1NWY4YTA3ZTYwNDAwYjU0MjIwMjdhZmMyLi4z
YjVjNWE3NWMzMTBkZjczN2JmYzY2Yzc5ZTQ4N2ExMTZiYTc1MTRjIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW0ucHkKQEAgLTQ2LDcgKzQ2LDYgQEAgaW1wb3J0IGJhc2UKIGltcG9ydCBodHRwX3NlcnZlcgog
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUK
LWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2Zp
bGVzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVz
dF9leHBlY3RhdGlvbnMKIAogIyBDaHJvbWl1bSBEUlQgb24gT1NYIHVzZXMgV2ViS2l0RHJpdmVy
LgpAQCAtMjYxLDcgKzI2MCw3IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAg
ICAgICB0ZXN0X3BsYXRmb3JtX25hbWUgPSBzZWxmLnRlc3RfcGxhdGZvcm1fbmFtZSgpCiAgICAg
ICAgIGlzX2RlYnVnX21vZGUgPSBGYWxzZQogCi0gICAgICAgIGFsbF90ZXN0X2ZpbGVzID0gdGVz
dF9maWxlcy5nYXRoZXJfdGVzdF9maWxlcyhzZWxmLCAnKicpCisgICAgICAgIGFsbF90ZXN0X2Zp
bGVzID0gc2VsZi5nYXRoZXJfdGVzdHMoW10pCiAgICAgICAgIGlmIGV4dHJhX3Rlc3RfZmlsZXM6
CiAgICAgICAgICAgICBhbGxfdGVzdF9maWxlcy51cGRhdGUoZXh0cmFfdGVzdF9maWxlcykKIApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9maWxlcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZ2F0aGVyX3Rlc3RzLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJl
bmFtZSBmcm9tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfZmlsZXMucHkKcmVuYW1lIHRvIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ2F0aGVyX3Rlc3RzLnB5CmluZGV4IDhmNzk1MDVlMWMz
MmM0NDBjN2IwZjE2NzMyOTg1YTU3YjExOWZmMjIuLmU0YzZhZDQ2YmIyMThkOTU4NTU5YmNjNjc2
NWQ5MGUxMGQ3NWE2ZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmlsZXMucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nYXRoZXJfdGVzdHMucHkKQEAg
LTI3LDExICsyNywxMSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotIiIiVGhp
cyBtb2R1bGUgaXMgdXNlZCB0byBmaW5kIGFsbCBvZiB0aGUgbGF5b3V0IHRlc3QgZmlsZXMgdXNl
ZCBieSBDaHJvbWl1bQotKGFjcm9zcyBhbGwgcGxhdGZvcm1zKS4gSXQgZXhwb3NlcyBvbmUgcHVi
bGljIGZ1bmN0aW9uIC0gR2F0aGVyVGVzdEZpbGVzKCkgLQorIiIiVGhpcyBtb2R1bGUgaXMgdXNl
ZCB0byBmaW5kIGFsbCBvZiB0aGUgbGF5b3V0IHRlc3QgZmlsZXMgdXNlZCBieQorcnVuLXdlYmtp
dC10ZXN0cy4gSXQgZXhwb3NlcyBvbmUgcHVibGljIGZ1bmN0aW9uIC0gZ2F0aGVyX3Rlc3RfZmls
ZXMoKSAtCiB3aGljaCB0YWtlcyBhbiBvcHRpb25hbCBsaXN0IG9mIHBhdGhzLiBJZiBhIGxpc3Qg
aXMgcGFzc2VkIGluLCB0aGUgcmV0dXJuZWQKIGxpc3Qgb2YgdGVzdCBmaWxlcyBpcyBjb25zdHJh
aW5lZCB0byB0aG9zZSBmb3VuZCB1bmRlciB0aGUgcGF0aHMgcGFzc2VkIGluLAotaS5lLiBjYWxs
aW5nIEdhdGhlclRlc3RGaWxlcyhbIkxheW91dFRlc3RzL2Zhc3QiXSkgd2lsbCBvbmx5IHJldHVy
biBmaWxlcworaS5lLiBjYWxsaW5nIGdhdGhlcl90ZXN0X2ZpbGVzKFsiTGF5b3V0VGVzdHMvZmFz
dCJdKSB3aWxsIG9ubHkgcmV0dXJuIGZpbGVzCiB1bmRlciB0aGF0IGRpcmVjdG9yeS4iIiIKIAog
aW1wb3J0IGdsb2IKQEAgLTUxLDcgKzUxLDcgQEAgX3N1cHBvcnRlZF9maWxlX2V4dGVuc2lvbnMg
PSBzZXQoWycuaHRtbCcsICcuc2h0bWwnLCAnLnhtbCcsICcueGh0bWwnLCAnLnhodG1sbXAKIF9z
a2lwcGVkX2RpcmVjdG9yaWVzID0gc2V0KFsnLnN2bicsICdfc3ZuJywgJ3Jlc291cmNlcycsICdz
Y3JpcHQtdGVzdHMnXSkKIAogCi1kZWYgZ2F0aGVyX3Rlc3RfZmlsZXMocG9ydCwgcGF0aHMpOgor
ZGVmIGdhdGhlcl90ZXN0cyhwb3J0LCBwYXRocyk6CiAgICAgIiIiR2VuZXJhdGUgYSBzZXQgb2Yg
dGVzdCBmaWxlcyBhbmQgcmV0dXJuIHRoZW0uCiAKICAgICBBcmdzOgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4
IGEzYTE2YzM0YTVhMjI2Njc0NmFmNWUwODBkZGM2NDUyMDE5Y2NmNDcuLmM3ZTUyYmIyZTY4NjFl
ZjMxNThiYWMwNTkzNDQxMWVjNWRiMzRmNDQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTM2LDYgKzM2LDgg
QEAgaW1wb3J0IHRpbWUKIAogaW1wb3J0IGJhc2UKIAorIyBpbi1tZW1vcnkgY2FjaGUgb2YgdGhl
IHRlc3QgZmlsZXMKK19nYXRoZXJlZF90ZXN0cyA9IHt9CiAKIGNsYXNzIFRlc3RQb3J0KGJhc2Uu
UG9ydCk6CiAgICAgIiIiVGVzdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2Uu
IiIiCkBAIC02Niw2ICs2OCwxNyBAQCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGV4cGVjdGVkX2NvbnRlbnRzLCBhY3R1YWxfY29udGVu
dHMpKQogICAgICAgICByZXR1cm4gZGlmZmVkCiAKKyAgICBkZWYgZ2F0aGVyX3Rlc3RzKHNlbGYs
IHBhdGhzKToKKyAgICAgICAgIyBUZXN0IHRoZSBpZGVhIG9mIHBvcnQtc3BlY2lmaWMgb3ZlcnJp
ZGVzIGZvciB0ZXN0IGxpc3RzLiBBbHNvCisgICAgICAgICMgY2FjaGUgbGlzdHMgb2YgdGVzdHMg
aW4gb3JkZXIgdG8gc3BlZWQgdXAgdGhlIHRlc3QgaGFybmVzcy4KKyAgICAgICAgIworICAgICAg
ICAjIEZJWE1FOiBhY3R1YWxseSBoYXJkLWNvZGUgdGhlIGxpc3Qgb2YgdGVzdHMgaGVyZSBhbmQg
bWFrZSB0aGUKKyAgICAgICAgIyB0ZXN0IHJlc3VsdHMgaGFyZGNvZGVkLCBzbyB3ZSBjYW4gc2tp
cCB0aGUgZmlsZXN5c3RlbSBhbHRvZ2V0aGVyLgorICAgICAgICBrZXkgPSBzdHIocGF0aHMpCisg
ICAgICAgIGlmIG5vdCBrZXkgaW4gX2dhdGhlcmVkX3Rlc3RzOgorICAgICAgICAgICAgX2dhdGhl
cmVkX3Rlc3RzW2tleV0gPSBiYXNlLlBvcnQuZ2F0aGVyX3Rlc3RzKHNlbGYsIHBhdGhzKQorICAg
ICAgICByZXR1cm4gX2dhdGhlcmVkX3Rlc3RzW2tleV0uY29weSgpCisKICAgICBkZWYgbGF5b3V0
X3Rlc3RzX2RpcihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9i
YXNlKCdXZWJLaXRUb29scycsICdTY3JpcHRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd3ZWJraXRweScsICdsYXlvdXRfdGVzdHMnLCAnZGF0YScpCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCAyZTJkYTZkNTg3Mzc3MTgwYzViZmJkMTc0OGRiODU5
NGVmYWFhMjI1Li42YjAyMzUwMzg5ZjE1YmE3ZDg3NjY2MTQ1NTVjNGViMjlhYjQzY2VjIDEwMDc1
NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTY4LDcgKzY4LDYgQEAgZnJvbSBsYXlvdXRfcGFj
a2FnZSBpbXBvcnQganNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IKIGZyb20gbGF5b3V0X3Bh
Y2thZ2UgaW1wb3J0IHByaW50aW5nCiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4
cGVjdGF0aW9ucwogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwotZnJv
bSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9maWxlcwogZnJvbSBsYXlvdXRfcGFja2FnZSBp
bXBvcnQgdGVzdF9yZXN1bHRzX3VwbG9hZGVyCiBmcm9tIHRlc3RfdHlwZXMgaW1wb3J0IGltYWdl
X2RpZmYKIGZyb20gdGVzdF90eXBlcyBpbXBvcnQgdGV4dF9kaWZmCkBAIC0yOTIsNyArMjkxLDcg
QEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgcGF0aHMgKz0gbGFzdF91bmV4cGVjdGVkX3Jl
c3VsdHMKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy50ZXN0X2xpc3Q6CiAgICAgICAgICAgICBw
YXRocyArPSByZWFkX3Rlc3RfZmlsZXMoc2VsZi5fb3B0aW9ucy50ZXN0X2xpc3QpCi0gICAgICAg
IHNlbGYuX3Rlc3RfZmlsZXMgPSB0ZXN0X2ZpbGVzLmdhdGhlcl90ZXN0X2ZpbGVzKHNlbGYuX3Bv
cnQsIHBhdGhzKQorICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gc2VsZi5fcG9ydC5nYXRoZXJf
dGVzdHMocGF0aHMpCiAKICAgICBkZWYgbGludChzZWxmKToKICAgICAgICAgIyBDcmVhdGluZyB0
aGUgZXhwZWNhdGlvbnMgZm9yIGVhY2ggcGxhdGZvcm0vY29uZmlndXJhdGlvbiBwYWlyIGRvZXMK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGFhOTY5NjI3
MmQ5YTg3OGU2YTliOTZhNDQyYTlkNWEzYmZhOTk5NDQuLjYwMTM5MDhkOWM0YjUwZDg3NGE1OWNm
ZWFhMzA3Y2ExMWE1MTljYWYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0
dGVzdC5weQpAQCAtNzcsNyArNzcsNyBAQCBkZWYgbG9nZ2luZ19ydW4oYXJncz1bXSwgdGVzdHNf
aW5jbHVkZWQ9RmFsc2UpOgogICAgIG5ld19hcmdzLmV4dGVuZChhcmdzKQogICAgIGlmIG5vdCB0
ZXN0c19pbmNsdWRlZDoKICAgICAgICAgbmV3X2FyZ3MuZXh0ZW5kKFsncGFzc2VzJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnaHR0cC90ZXN0cycKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAnaHR0cC90ZXN0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dlYnNvY2tldC90ZXN0
cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkLyonXSkKICAg
ICBvcHRpb25zLCBwYXJzZWRfYXJncyA9IHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncyhuZXdf
YXJncykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67993</attachid>
            <date>2010-09-17 19:39:09 -0700</date>
            <delta_ts>2010-09-22 15:21:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-45801-20100917193908.patch</filename>
            <type>text/plain</type>
            <size>96019</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA3ZGRkNTA1NGQzM2Q4NjVmYzc4ZDRkMWQwMDk4ZmFmYjU5MTQ0NGIxLi42ODMyMmI1
YWZkNTA4ZDhkYTRhOGZjMTE1NGMxNjgxN2IyZGExMjZkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEwIEBA
CisyMDEwLTA5LTE3ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG5ldy1ydW4td2Via2l0
LXRlc3RzOiBwdWxsIHRoZSBsaXN0IG9mIHRlc3RzIGZyb20gdGhlIFBvcnQsIGFuZAorICAgICAg
ICAgICBtYWtlIGl0IHBvc3NpYmxlIHRvIHJ1biB3aXRoIG5vIGFjdHVhbCB0ZXN0IGZpbGVzIGlu
IHRoZSBmaWxlc3lzdGVtLgorCisgICAgICAgIFRoaXMgc2V0IG9mIGNoYW5nZXMgYWxsb3dzIHVz
IHRvIGRlbGV0ZSB0aGUgc3BlY2lhbAorICAgICAgICB3ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0
YSBkaXJlY3RvcnkgYW5kIHRlc3QgdGhlIGdlbmVyaWMgY29kZSB3aXRob3V0CisgICAgICAgIHRv
dWNoaW5nIHRoZSBmaWxlc3lzdGVtIChleGNlcHQgdG8gd3JpdGUgcmVzdWx0cykuIFRoaXMgc3Bl
ZWRzIHVwCisgICAgICAgIHRlc3Qtd2Via2l0cHkgc3Vic3RhbnRpYWxseS4KKworICAgICAgICBU
aGlzIGFsc28gY2xlYW5zIHVwIGFuZCByZW1vdmVzIHNldmVyYWwgY29kZSBwYXRocyBpbiB0aGUg
Z2VuZXJpYworICAgICAgICBjb2RlIGFuZCBmaXhlcyBzb21lIG1pbm9yIGJ1Z3MsIG5vdGFibHkg
aW4gdGhlIHRlc3RfZXhwZWN0YXRpb25zCisgICAgICAgIHBhcnNpbmcsIHdoaWNoIHdhcyBwcmV2
aW91c2x5IGZyYWdpbGUgaWYgdGhlIHRlc3RzIHdlcmVuJ3QgcHJlc2VudC4KKworICAgICAgICBX
ZSBhbHNvIGNoYW5nZSB0aGUgd2F5IHdlIGRpZmYgaW1hZ2UgcmVzdWx0cyB0byBiZSBhYmxlIHRv
IGRvIHNvCisgICAgICAgIGluIG1lbW9yeSwgd2l0aG91dCByZWx5aW5nIG9uIGZpbGVzLiBUaGlz
IHNsb3dzIGRvd24gY2hyb21pdW0KKyAgICAgICAgdGVzdF9zaGVsbCwgd2hpY2ggYWx3YXlzIHdy
aXRlcyBpbWFnZXMgdG8gZmlsZXMsIGJ1dCBzaG91bGQgc3BlZWQKKyAgICAgICAgdXAgRFJUIGFu
ZCBJbWFnZURpZmYtYmFzZWQgaW1wbGVtZW50YXRpb25zIHNsaWdodGx5LgorCisgICAgICAgIE5v
dGUgdGhhdCBwdWxsaW5nIHRoZSBsaXN0IG9mIHRlc3RzIHRvIHJ1biBmcm9tIHRoZSBQb3J0IHdp
bGwgYWxsb3cKKyAgICAgICAgcG9ydHMgdG8gc3BlY2lmeSB3aGF0IHRlc3RzIHRvIHJ1biBhcyBh
biBpbmNsdXNpdmUgbGlzdDsgcHJldmlvdXNseQorICAgICAgICB5b3UgY291bGQgb25seSBkbyB0
aGlzIGFzIGFuIGV4Y2x1c2l2ZSBsaXN0IGJ5IHVzaW5nIGEgCisgICAgICAgIHRlc3RfZXhwZWN0
YXRpb25zIGZpbGUgb3IgU2tpcHBlZCBmaWxlczsgbm90aGluZyBhY3R1YWxseSB1c2VzIHRoaXMK
KyAgICAgICAgZmVhdHVyZSB5ZXQgYW5kIGl0J3MgdW5jbGVhciBpZiBpdCBzaG91bGQgYmUgdXNl
ZC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyAt
LSBhcGFydCBmcm9tIG5vdyAKKyAgICAgICAgYWx3YXlzIHByaW50aW5nIG91dCB0aGUgbG9jYXRp
b24gb2YgdGhlIGNoZWNrc3VtIGZpbGUgd2hlbiB3ZSBhcmUKKyAgICAgICAgdHJhY2luZyB0ZXN0
IHJ1bnMgLS0gYW5kIHRoZSB0b3RhbCBudW1iZXIgb2YgbGluZXMgb2Ygbm9uLXRlc3QgY29kZQor
ICAgICAgICBhY3R1YWxseSBkcm9wcyBieSB0d28uCisKKyAgICAgICAgVGhlcmUgaXMgc29tZSBt
b3JlIGNsZWFudXAgdGhhdCBjYW4gYmUgZG9uZSBpbiB0aGUgUG9ydC9Ecml2ZXIgCisgICAgICAg
IGludGVyZmFjZSBhbmQgaW4gc29tZSBoYW5kbGluZyBvZiBmaWxlbmFtZXMsIGJ1dCBJJ2xsIHNh
dmUgdGhhdAorICAgICAgICBmb3IgYW5vdGhlciBjaGFuZ2UuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1ODAxCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhLyo6IFJlbW92ZWQuCisgICAgICAgICAgICAtIG5v
IGxvbmdlciBuZWVkIHNwZWNpYWwgbW9jayBsYXlvdXRfdGVzdHNfZGlyZWN0b3J5IGluIHRoZQor
ICAgICAgICAgICAgICByZXBvc2l0b3J5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nLnB5OgorICAgICAgICAgICAgLSBhZGQg
Y29kZSB0byBkaXNwbGF5IG1pc3NpbmcgdGV4dCBmaWxlcywgY2hlY2tzdW1zIHdoZW4gdHJhY2lu
ZworICAgICAgICAgICAgLSB1cGRhdGUgdG8gbm90IGxvb2sgYXQgdGhlIGZpbGVzeXN0ZW0gZGly
ZWN0bHkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHk6CisgICAgICAgICAgICAtIGFkZCBtb3JlIHVuaXQg
dGVzdHMKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgICAgIC0gcmVtb3ZlIHRlc3RzX2Fy
ZV9wcmVzZW50IGZsYWcKKyAgICAgICAgICAgIC0gdXBkYXRlIHdpdGggY2hhbmdlcyBpbiBQb3J0
IGludGVyZmFjZSAtIG5vIGxvbmdlciBhY2Nlc3MKKyAgICAgICAgICAgICAgdGhlIGZpbGVzeXN0
ZW0gZGlyZWN0bHksIGFsdGhvdWdoIHdlIHN0aWxsIHVzZSBvcy5wYXRoIGZvcgorICAgICAgICAg
ICAgICBmaWxlbmFtZSBtYW5pcHVsYXRpb24uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6
CisgICAgICAgICAgICAtIGFkZCBtb3JlIHVuaXQgdGVzdHMKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZpbGVzLnB5OiBSZW1vdmVk
LgorICAgICAgICAgICAgLSByZW5hbWVkIHRvIHBvcnQvdGVzdF9maWxlcy5weQorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgICAg
IC0gY2hhbmdlIGRpZmZfaW1hZ2UoKSB0byBleHBlY3QgYWN0dWFsIGltYWdlIGRhdGEsIG5vdCBm
aWxlbmFtZXMKKyAgICAgICAgICAgIC0gYWRkIGV4cGVjdGVkX2NoZWNrc3VtKCksIGV4cGVjdGVk
X2ltYWdlKCksIGV4cGVjdGVkX3RleHQoKSB0bworICAgICAgICAgICAgICByZXR1cm4gdGhlIGNv
bnRlbnQgb2YgdGhlIGZpbGVzIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCBhIGZpbGVzeXN0ZW0KKyAg
ICAgICAgICAgIC0gYWRkIHBhdGhfZXhpc3RzKCksIHBhdGhfaXNkaXIoKSBmb3IgZmlsZXN5c3Rl
bS1saWtlIGFjY2Vzcy4KKyAgICAgICAgICAgIC0gYWRkIHRlc3RfZGlycygpIHRvIGtlZXAgY2xv
YmJlci10ZXN0LXJlc3VsdHMgZnJvbSBuZWVkaW5nIHRvCisgICAgICAgICAgICAgIGFjdHVhbGx5
IGxvb2sgYXQgYSByZWFsIGxheW91dCB0ZXN0cyBkaXIKKyAgICAgICAgICAgIC0gYWRkIHRlc3Rz
KCkgdG8gcmV0dXJuIHRoZSBsaXN0IG9mIHRlc3RzIHRvIHJ1biBvbiB0aGUgcG9ydAorICAgICAg
ICAgICAgICAoY2FsbHMgcG9ydC90ZXN0X2ZpbGVzIHRvIGRvIHRoZSB3b3JrKS4KKyAgICAgICAg
ICAgIC0gYWRkIHVwZGF0ZV9iYXNlbGluZSgpIHRvIGJlIGFibGUgdG8gc2F2ZSBuZXcgYmFzZWxp
bmVzCisgICAgICAgICAgICAtIGFkZCB1cmlfdG9fdGVzdF9uYW1lKCkgZnJvbSBwb3J0L2RyeXJ1
bi5weSBzbyB3ZSBjYW4gZWFzaWx5IGNoZWNrCisgICAgICAgICAgICAgIGZpbGVuYW1lX3RvX3Vy
aSgpCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAgICAgLSBhZGQgbW9yZSB1bml0IHRlc3RzCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKKyAgICAgICAg
ICAgIC0gY2hhbmdlIGRpZmZfaW1hZ2UoKSB0byBhY2NlcHQgaW1hZ2UgY29udGVudCwgbm90IGZp
bGVuYW1lcy4KKyAgICAgICAgICAgICAgVGhpcyB3aWxsIGJlIHNsb3dlciBmb3IgdGVzdF9zaGVs
bC9pbWFnZV9kaWZmLCBidXQgZmFzdGVyCisgICAgICAgICAgICAgIGZvciBEUlQvSW1hZ2VEaWZm
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
dW5pdHRlc3QucHk6CisgICAgICAgICAgICAtIGFkZCBtb3JlIHVuaXQgdGVzdHMKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weToKKyAgICAgICAg
ICAgIC0gc2ltcGxpZnkgZ3JlYXRseQorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weToKKyAgICAgICAgICAgIC0gYWRkIG1vcmUgdW5p
dCB0ZXN0cworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVz
dC5weToKKyAgICAgICAgICAgIC0gbWFzc2l2ZSByZXdyaXRlIHRvIHVzZSBpbi1zY3JpcHQgbGlz
dCBvZiB0ZXN0cyBhbmQgZXhwZWN0YXRpb25zCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVzLnB5OgorICAgICAgICAgICAgLSByZW5hbWUgZnJv
bSBsYXlvdXRfcGFja2FnZS90ZXN0X2ZpbGVzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weToKKyAgICAgICAgICAgIC0g
YWRkIHVuaXQgdGVzdHMKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dlYmtpdC5weToKKyAgICAgICAgICAgIC0gdXBkYXRlIGRpZmZfaW1hZ2UoKSB0byB0YWtl
IGltYWdlIGNvbnRlbnRzLCBub3QgZmlsZXMuIFNob3VsZAorICAgICAgICAgICAgICBtYWtlIHRo
aW5ncyBzbGlnaHRseSBmYXN0ZXIuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICAgICAt
IHVwZGF0ZSB3aXRoIGNoYW5nZXMgdG8gZGlmZl9pbWFnZSgpCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5p
dHRlc3QucHk6CisgICAgICAgICAgICAtIHVwZGF0ZSB3aXRoIGNoYW5nZXMgdG8gZGlmZl9pbWFn
ZSgpCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0cy5weToKKyAgICAgICAgICAgIC0gcmVtb3ZlIHRlc3RzX2FyZV9wcmVzZW50IGZyb20gdGVz
dF9leHBlY3RhdGlvbnMKKyAgICAgICAgICAgIC0gcHVsbCB0aGUgbGlzdCBvZiB0ZXN0cyBmcm9t
IHBvcnQudGVzdHMoKSBpbnN0ZWFkCisgICAgICAgICAgICAgIG9mIGNhbGxpbmcgdGVzdF9maWxl
cy5weSBkaXJlY3RseS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5OgorICAgICAgICAgICAgLSB1cGRhdGUgdW5pdCB0
ZXN0cworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMv
aW1hZ2VfZGlmZi5weToKKyAgICAgICAgICAgIC0gdXBkYXRlIHdpdGggY2hhbmdlcyB0byAKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlw
ZV9iYXNlLnB5OgorICAgICAgICAgICAgLSB1cGRhdGUgd2l0aCBjaGFuZ2UgaW4gUG9ydCBpbnRl
cmZhY2UKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVz
L3RleHRfZGlmZi5weToKKyAgICAgICAgICAgIC0gdXBkYXRlIHdpdGggY2hhbmdlIGluIFBvcnQg
aW50ZXJmYWNlCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0
X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgICAgIC0gcmVtb3ZlIHRoZSB0ZXN0c19hcmVfcHJl
c2VudCBmbGFnCisKIDIwMTAtMDktMTYgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9l
eHBlY3RlZC9jaGVja3N1bS1leHBlY3RlZC5jaGVja3N1bSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvY2hlY2tzdW0tZXhw
ZWN0ZWQuY2hlY2tzdW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4OTAxMTI2YjFi
ODEzY2Q4Zjk2NmFhY2I2N2M3NWIyOTdkNDFmMDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9jaGVja3N1bS1leHBlY3RlZC5jaGVja3N1bQor
KysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWNoZWNrc3VtLWNoZWNrc3VtCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVz
L2V4cGVjdGVkL2NoZWNrc3VtLWV4cGVjdGVkLnBuZyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvY2hlY2tzdW0tZXhwZWN0
ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2E1ZGUzOTRlOWI1NTE0NTcz
MmY5OTQwOTIwODA0MTRkMTcyZWVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Rh
dGEvZmFpbHVyZXMvZXhwZWN0ZWQvY2hlY2tzdW0tZXhwZWN0ZWQucG5nCisrKyAvZGV2L251bGwK
QEAgLTEgKzAsMCBAQAotY2hlY2tzdW0tcG5nCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL2NoZWNrc3Vt
LWV4cGVjdGVkLnR4dCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvY2hlY2tzdW0tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1NjI4ZDY5ZjJlNWQ1NGZkYTIxNmMzMTUwNGZjNGVkODRlYmU0
YWVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0
ZWQvY2hlY2tzdW0tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotY2hl
Y2tzdW0tdHh0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL2NoZWNrc3VtLmh0bWwgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL2No
ZWNrc3VtLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNzhkMzEyOTM4MGVi
ODZiMWE3NjkwMTExNGJlYzU3ZWFmMjg0NjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9jaGVja3N1bS5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEgKzAsMCBAQAotaW1hZ2VfY2hlY2tzdW0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRt
bCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVy
ZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJj
Mzc5OGI5YjkwMGRjNTFhYWRkMWIzNjE0YWIxZmE5Nzg5ODBjOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSArMCwwIEBACi1jcmFzaApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9leGNlcHRpb24u
aHRtbCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFp
bHVyZXMvZXhwZWN0ZWQvZXhjZXB0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDM4YzU0ZTM3YjhiMDg3MTYxZTZjZGY0ZThmNTliYzRjNDg2MTlmOTAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBl
Y3RlZC9oYW5nLmh0bWwgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL2hhbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNGUwZGUwODg3OTFiMDY0YWM2ZDU1MjhkMGRmNmNlM2NhNjUyMDcwMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL2hhbmcuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXRpbWVvdXQtdGhyZWFkCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVz
L2V4cGVjdGVkL2ltYWdlLWV4cGVjdGVkLmNoZWNrc3VtIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9pbWFnZS1leHBlY3Rl
ZC5jaGVja3N1bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRiODg3YTljMjQyMDll
OTdmMmMxYjcyNzYxMWVmYTU3ZWYzMTUyNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLWV4cGVjdGVkLmNoZWNrc3VtCisrKyAvZGV2
L251bGwKQEAgLTEgKzAsMCBAQAotaW1hZ2UtY2hlY2tzdW0KZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQv
aW1hZ2UtZXhwZWN0ZWQucG5nIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9pbWFnZS1leHBlY3RlZC5wbmcKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjMjM5OTZjN2M3MTkyNTk4Yjg5ZjRjNGMwMjMyOGM1NTY5
OThmMjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBl
Y3RlZC9pbWFnZS1leHBlY3RlZC5wbmcKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1pbWFn
ZS1wbmcKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UtZXhwZWN0ZWQudHh0IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9p
bWFnZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZWU3MTg5
YzI2ZjA4MzAwNGYzYWEzMGU2NDM3ZDc3NDdkZGY1ZGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9pbWFnZS1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSArMCwwIEBACi1pbWFnZS10eHQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvaW1h
Z2UuaHRtbCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEv
ZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTNlNGIyN2UxZmM4ZGRiYmQ2ZmE2MTM0YWQ5NmMzNTg3ODJmYTg4Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1pbWFnZV9mYWlsdXJlCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVj
dGVkL2ltYWdlX2NoZWNrc3VtLWV4cGVjdGVkLmNoZWNrc3VtIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVj
a3N1bS1leHBlY3RlZC5jaGVja3N1bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZh
MDg1MWQzMTZmZmFmZmZkZDNjOWQwMDVjYTU0ZjQ5M2RkMWM4Ni4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2NoZWNrc3VtLWV4cGVj
dGVkLmNoZWNrc3VtCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotaW1hZ2VfY2hlY2tzdW0t
Y2hlY2tzdW0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0tZXhwZWN0ZWQucG5n
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJl
cy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ2NzdkMmUwZGU2OThiOTQ1NWYyNWQ3ZTQ1YWRiNDhmMzBiMjI1YzAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9pbWFn
ZV9jaGVja3N1bS1leHBlY3RlZC5wbmcKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1pbWFn
ZV9jaGVja3N1bS1wbmcKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0tZXhwZWN0
ZWQudHh0IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9m
YWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQ1M2YyMTMxNWJkNDdjZWE4NGYwMDczMTFkYjZlYTc4ODJjM2Yw
NzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3Rl
ZC9pbWFnZV9jaGVja3N1bS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBA
Ci1pbWFnZV9jaGVja3N1bS10eHQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0u
aHRtbCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFp
bHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmI3OGQzMTI5MzgwZWI4NmIxYTc2OTAxMTE0YmVjNTdlYWYyODQ2Ny4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2No
ZWNrc3VtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1pbWFnZV9jaGVja3N1bQpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0
YS9mYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjUzOTgzNDc1M2Q1NjY3YTYxNzU5YmI2
NGIxMjYyMjgxYmI2NmVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFp
bHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAK
LWtleWJvYXJkCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfY2hlY2stZXhwZWN0ZWQucG5n
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJl
cy9leHBlY3RlZC9taXNzaW5nX2NoZWNrLWV4cGVjdGVkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTQ1YzdhZjVjNTcyYzg1YTZhMDFhM2JiNTg1ZWI5NWM3ODU5NWJjZi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL21pc3Np
bmdfY2hlY2stZXhwZWN0ZWQucG5nCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotbWlzc2lu
Z19jaGVjay1wbmcKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19jaGVjay1leHBlY3RlZC50
eHQgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1
cmVzL2V4cGVjdGVkL21pc3NpbmdfY2hlY2stZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwZWE5MjI3N2E2NDFjZjU3YWQxZDU2M2Q2YmIwOTIzMWIxOWY3ZDk2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvbWlz
c2luZ19jaGVjay1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1taXNz
aW5nX2NoZWNrLXR4dApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2NoZWNrLmh0bWwgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4
cGVjdGVkL21pc3NpbmdfY2hlY2suaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGFmODAwMDNlODg5MDUzNTE2ZDZmNTA3MzljNzFjNDdhZDk3OTE1MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfY2hlY2suaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLW1pc3NpbmdfaW1hZ2UKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMv
ZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhZjgwMDAzZTg4OTA1MzUxNmQ2ZjUwNzM5
YzcxYzQ3YWQ5NzkxNTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWls
dXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSArMCww
IEBACi1taXNzaW5nX2ltYWdlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfdGV4dC5odG1s
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJl
cy9leHBlY3RlZC9taXNzaW5nX3RleHQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDdiOGFkNjRmNmM4MDVmYzU0MzNhOGE1YjgzN2ZmMWM1OTA3YmNhNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL2V4cGVjdGVkL21pc3NpbmdfdGV4dC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotbWlzc2luZ190ZXh0CmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVz
L2V4cGVjdGVkL3RleHQtZXhwZWN0ZWQudHh0IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC90ZXh0LWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIxZWE0NWJlN2Y4ZWQ1OWM4MjI2MmFmYjAx
NzQwMDdiZDRiODJkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1
cmVzL2V4cGVjdGVkL3RleHQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBA
QAotdGV4dF9mYWlsdXJlcy10eHQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBl
Y3RlZC90ZXh0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxZjVmYzdiODAz
NTk1MTA2ODRkMGY5ODFiMTA3ODIzOGNmMDhjZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSArMCwwIEBACi10ZXh0X2ZhaWx1cmUKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1s
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJl
cy9leHBlY3RlZC90aW1lb3V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5
MDg1MWE2YmI5OTg3YzAzNjUzNjM0ZDg0OTQ5YTM5ZDk2MWUyZGUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvZGF0YS9mYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSArMCwwIEBACi10aW1lb3V0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL3VuZXhwZWN0ZWQvdGV4
dC1pbWFnZS1jaGVja3N1bS1leHBlY3RlZC5jaGVja3N1bSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvdW5leHBlY3RlZC90ZXh0LWltYWdl
LWNoZWNrc3VtLWV4cGVjdGVkLmNoZWNrc3VtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwYzRmNmRhNWQ5ZTcxZmRhMDkzMTFkNmU3ODZmNTEzNmU0ZThhOTI2Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvdW5leHBlY3RlZC90ZXh0LWltYWdlLWNo
ZWNrc3VtLWV4cGVjdGVkLmNoZWNrc3VtCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotZmFp
bF9jaGVja3N1bQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvZGF0YS9mYWlsdXJlcy91bmV4cGVjdGVkL3RleHQtaW1hZ2UtY2hlY2tzdW0tZXhw
ZWN0ZWQucG5nIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0
YS9mYWlsdXJlcy91bmV4cGVjdGVkL3RleHQtaW1hZ2UtY2hlY2tzdW0tZXhwZWN0ZWQucG5nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjQ4M2VlMTJkZTQ3M2MyM2M3ZTQ5YWQxMDk5
NWM0NTY4MWVjZDM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVy
ZXMvdW5leHBlY3RlZC90ZXh0LWltYWdlLWNoZWNrc3VtLWV4cGVjdGVkLnBuZworKysgL2Rldi9u
dWxsCkBAIC0xICswLDAgQEAKLWZhaWxfcG5nCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL3VuZXhwZWN0ZWQvdGV4dC1p
bWFnZS1jaGVja3N1bS1leHBlY3RlZC50eHQgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL3VuZXhwZWN0ZWQvdGV4dC1pbWFnZS1jaGVja3N1
bS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExZjNjMjRjZDE5
MDYyN2FmMDg2YTZjNjAwZWYxZDBhMjVkYWFkODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvZGF0YS9mYWlsdXJlcy91bmV4cGVjdGVkL3RleHQtaW1hZ2UtY2hlY2tzdW0tZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotZmFpbF9vdXRwdXQKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvZmFpbHVy
ZXMvdW5leHBlY3RlZC90ZXh0LWltYWdlLWNoZWNrc3VtLmh0bWwgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2ZhaWx1cmVzL3VuZXhwZWN0ZWQvdGV4dC1p
bWFnZS1jaGVja3N1bS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzI1OTI0
N2FjNTg4MTIxYWRhYjcwYzY4MWUxYWIxOGQ4YmRhMzExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2RhdGEvZmFpbHVyZXMvdW5leHBlY3RlZC90ZXh0LWltYWdlLWNoZWNrc3VtLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1Hb29nbGUKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvaHR0cC90ZXN0cy9wYXNz
ZXMvdGV4dC1leHBlY3RlZC50eHQgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9kYXRhL2h0dHAvdGVzdHMvcGFzc2VzL3RleHQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjM4YTA2YTQ5MDdkYzlkMWZhZWIxYWEyZjcxZmUyZTg5
NWEzMTc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvaHR0cC90ZXN0cy9w
YXNzZXMvdGV4dC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi10ZXh0
LXR4dApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvZGF0YS9odHRwL3Rlc3RzL3Bhc3Nlcy90ZXh0Lmh0bWwgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2h0dHAvdGVzdHMvcGFzc2VzL3RleHQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUyN2JlN2Q2MTU0YTFmNjhlYTkxNjBlZjBl
MTg2OTFkMjA1NjBkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2h0dHAv
dGVzdHMvcGFzc2VzL3RleHQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXRleHQK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Rh
dGEvaHR0cC90ZXN0cy9zc2wvdGV4dC1leHBlY3RlZC50eHQgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2h0dHAvdGVzdHMvc3NsL3RleHQtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjM4YTA2YTQ5MDdkYzlkMWZhZWIx
YWEyZjcxZmUyZTg5NWEzMTc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEv
aHR0cC90ZXN0cy9zc2wvdGV4dC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCww
IEBACi10ZXh0LXR4dApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvZGF0YS9odHRwL3Rlc3RzL3NzbC90ZXh0Lmh0bWwgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2h0dHAvdGVzdHMvc3NsL3RleHQuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUyN2JlN2Q2MTU0YTFmNjhlYTkxNjBl
ZjBlMTg2OTFkMjA1NjBkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL2h0
dHAvdGVzdHMvc3NsL3RleHQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXRleHQK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Rh
dGEvcGFzc2VzL2Vycm9yLWV4cGVjdGVkLnR4dCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcGFzc2VzL2Vycm9yLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOTQyNzI2OTlhZTFiMWNjYTA3MTNjZGRlYTk2ZWQ5ZDY5MGFl
MTAzMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL3Bhc3Nlcy9lcnJvci1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1lcnJvci10eHQKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcGFz
c2VzL2Vycm9yLmh0bWwgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9kYXRhL3Bhc3Nlcy9lcnJvci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
Mjc2NzUzNzQ2YjEyYjU4NDNiMjVlYzIyYjVhMDYxNzg3YjBiNjcwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcGFzc2VzL2Vycm9yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSArMCwwIEBACi1lcnJvcgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvZGF0YS9wYXNzZXMvaW1hZ2UtZXhwZWN0ZWQuY2hlY2tzdW0gYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL3Bhc3Nlcy9pbWFnZS1l
eHBlY3RlZC5jaGVja3N1bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRiODg3YTlj
MjQyMDllOTdmMmMxYjcyNzYxMWVmYTU3ZWYzMTUyNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9kYXRhL3Bhc3Nlcy9pbWFnZS1leHBlY3RlZC5jaGVja3N1bQorKysgL2Rldi9udWxs
CkBAIC0xICswLDAgQEAKLWltYWdlLWNoZWNrc3VtCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL3Bhc3Nlcy9pbWFnZS1leHBlY3RlZC5w
bmcgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL3Bhc3Nl
cy9pbWFnZS1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjMjM5
OTZjN2M3MTkyNTk4Yjg5ZjRjNGMwMjMyOGM1NTY5OThmMjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvZGF0YS9wYXNzZXMvaW1hZ2UtZXhwZWN0ZWQucG5nCisrKyAvZGV2L251bGwK
QEAgLTEgKzAsMCBAQAotaW1hZ2UtcG5nCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL3Bhc3Nlcy9pbWFnZS1leHBlY3RlZC50eHQgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL3Bhc3Nlcy9pbWFn
ZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZWU3MTg5YzI2
ZjA4MzAwNGYzYWEzMGU2NDM3ZDc3NDdkZGY1ZGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvZGF0YS9wYXNzZXMvaW1hZ2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEg
KzAsMCBAQAotaW1hZ2UtdHh0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9kYXRhL3Bhc3Nlcy9pbWFnZS5odG1sIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9wYXNzZXMvaW1hZ2UuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzczYjIyMjIyODAxNTk1NzFjMTFmM2RlYTQxMDIzZGJm
YWFiZjVjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL3Bhc3Nlcy9pbWFn
ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotaW1hZ2UKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcGFzc2VzL3BsYXRm
b3JtX2ltYWdlLWV4cGVjdGVkLmNoZWNrc3VtIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvZGF0YS9wYXNzZXMvcGxhdGZvcm1faW1hZ2UtZXhwZWN0ZWQuY2hlY2tz
dW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMDM4YWVlMWU5ZWJkMTBiN2RlYWE0
Yjc5NzhhMGI0Njg2YjEyMmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9w
YXNzZXMvcGxhdGZvcm1faW1hZ2UtZXhwZWN0ZWQuY2hlY2tzdW0KKysrIC9kZXYvbnVsbApAQCAt
MSArMCwwIEBACi1wbGF0Zm9ybV9pbWFnZS1nZW5lcmljLWNoZWNrc3VtCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL3Bhc3Nlcy9wbGF0
Zm9ybV9pbWFnZS1leHBlY3RlZC5wbmcgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9kYXRhL3Bhc3Nlcy9wbGF0Zm9ybV9pbWFnZS1leHBlY3RlZC5wbmcKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4Nzg3MmI3MWFmOTlkYjExNDc2NjI1MjlhMjllZmUz
MjA1NWY2ODIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9wYXNzZXMvcGxh
dGZvcm1faW1hZ2UtZXhwZWN0ZWQucG5nCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotcGxh
dGZvcm1faW1hZ2UtZ2VuZXJpYy1wbmcKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcGFzc2VzL3BsYXRmb3JtX2ltYWdlLWV4cGVjdGVk
LnR4dCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcGFz
c2VzL3BsYXRmb3JtX2ltYWdlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjcxNjgwYzE0YzU1OGFlNDdiNjFlOTAzNjk1YzZjYzU1Mzc4NGFmMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL3Bhc3Nlcy9wbGF0Zm9ybV9pbWFnZS1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1wbGF0Zm9ybV9pbWFnZS1nZW5lcmlj
LXR4dApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvZGF0YS9wYXNzZXMvcGxhdGZvcm1faW1hZ2UuaHRtbCBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcGFzc2VzL3BsYXRmb3JtX2ltYWdlLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNDhhN2I5MDdlNDNiMzU3MDlkNDQ2MmRhMzg3
ZWRjM2VkYjYzZWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9wYXNzZXMv
cGxhdGZvcm1faW1hZ2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXBsYXRmb3Jt
X2ltYWdlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9kYXRhL3Bhc3Nlcy90ZXh0LWV4cGVjdGVkLnR4dCBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcGFzc2VzL3RleHQtZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjM4YTA2YTQ5MDdkYzlkMWZhZWIxYWEyZjcxZmUy
ZTg5NWEzMTc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcGFzc2VzL3Rl
eHQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotdGV4dC10eHQKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEv
cGFzc2VzL3RleHQuaHRtbCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2RhdGEvcGFzc2VzL3RleHQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OGUyN2JlN2Q2MTU0YTFmNjhlYTkxNjBlZjBlMTg2OTFkMjA1NjBkYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9kYXRhL3Bhc3Nlcy90ZXh0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSArMCwwIEBACi10ZXh0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9kYXRhL3BsYXRmb3JtL3Rlc3QvcGFzc2VzL3BsYXRmb3JtX2ltYWdlLWV4
cGVjdGVkLmNoZWNrc3VtIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvZGF0YS9wbGF0Zm9ybS90ZXN0L3Bhc3Nlcy9wbGF0Zm9ybV9pbWFnZS1leHBlY3RlZC5jaGVj
a3N1bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE1NTdjZjE0OTA5MjZiMmVhOWI1
OWRlZDY1MTFmODRhM2FiNDdkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRh
L3BsYXRmb3JtL3Rlc3QvcGFzc2VzL3BsYXRmb3JtX2ltYWdlLWV4cGVjdGVkLmNoZWNrc3VtCisr
KyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotcGxhdGZvcm1faW1hZ2UtY2hlY2tzdW0KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcGxh
dGZvcm0vdGVzdC9wYXNzZXMvcGxhdGZvcm1faW1hZ2UtZXhwZWN0ZWQucG5nIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9wbGF0Zm9ybS90ZXN0L3Bhc3Nl
cy9wbGF0Zm9ybV9pbWFnZS1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGVjNDJmYzE1NDE5ZjBiNzU1NzU5NjI5ZDk5ZTVhYjZmMjk5NWRkMTcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9wbGF0Zm9ybS90ZXN0L3Bhc3Nlcy9wbGF0Zm9ybV9p
bWFnZS1leHBlY3RlZC5wbmcKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1wbGF0Zm9ybV9p
bWFnZS1wbmcKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2RhdGEvcGxhdGZvcm0vdGVzdC9wYXNzZXMvcGxhdGZvcm1faW1hZ2UtZXhwZWN0ZWQu
dHh0IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9wbGF0
Zm9ybS90ZXN0L3Bhc3Nlcy9wbGF0Zm9ybV9pbWFnZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZmOGJmNDMwNTAwNDc1YjVmNDBkNDM2NzQzN2U1NGQxZTY5ZGZk
NDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS9wbGF0Zm9ybS90ZXN0L3Bh
c3Nlcy9wbGF0Zm9ybV9pbWFnZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCww
IEBACi1wbGF0Zm9ybV9pbWFnZS10eHQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcGxhdGZvcm0vdGVzdC90ZXN0X2V4cGVjdGF0aW9u
cy50eHQgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL3Bs
YXRmb3JtL3Rlc3QvdGVzdF9leHBlY3RhdGlvbnMudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwNjE5ZmRlYWNhODMyMzM4ZTRiNGU1MTk3ODFlYjBlZTY2OWJiNGM0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcGxhdGZvcm0vdGVzdC90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1XT05URklYIDogZmFpbHVy
ZXMvZXhwZWN0ZWQvY2hlY2tzdW0uaHRtbCA9IElNQUdFCi1XT05URklYIDogZmFpbHVyZXMvZXhw
ZWN0ZWQvY3Jhc2guaHRtbCA9IENSQVNICi0vLyBUaGlzIG9uZSBhY3R1YWxseSBwYXNzZXMgYmVj
YXVzZSB0aGUgY2hlY2tzdW1zIHdpbGwgbWF0Y2guCi1XT05URklYIDogZmFpbHVyZXMvZXhwZWN0
ZWQvaW1hZ2UuaHRtbCA9IFBBU1MKLVdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9j
aGVja3N1bS5odG1sID0gSU1BR0UKLVdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5n
X2NoZWNrLmh0bWwgPSBNSVNTSU5HIFBBU1MKLVdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9t
aXNzaW5nX2ltYWdlLmh0bWwgPSBNSVNTSU5HIFBBU1MKLVdPTlRGSVggOiBmYWlsdXJlcy9leHBl
Y3RlZC9taXNzaW5nX3RleHQuaHRtbCA9IE1JU1NJTkcgUEFTUwotV09OVEZJWCA6IGZhaWx1cmVz
L2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKLVdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC90
aW1lb3V0Lmh0bWwgPSBUSU1FT1VUCi1XT05URklYIFNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9o
YW5nLmh0bWwgPSBUSU1FT1VUCi1XT05URklYIFNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXli
b2FyZC5odG1sID0gQ1JBU0gKLVdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2V4Y2Vw
dGlvbi5odG1sID0gQ1JBU0gKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcmVzb3VyY2VzL1JFQURNRS50eHQgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL3Jlc291cmNlcy9SRUFETUUudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODA2YjA2Y2EyNmQzMzc0MjZlNzk2NzRmZDEw
NzY2YzU0Njk1MzRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RhdGEvcmVzb3Vy
Y2VzL1JFQURNRS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVRoaXMgZGlyZWN0
b3J5IGV4aXN0cyBzb2xlbHkgdG8gbWFrZSBzdXJlIHRoYXQgd2hlbiB3ZSBnYXRoZXIgdGhlIGxp
c3RzIG9mCi10ZXN0cywgd2Ugc2tpcCBvdmVyIGRpcmVjdG9yaWVzIG5hbWVkICdyZXNvdXJjZXMn
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
ZGF0YS93ZWJzb2NrZXQvdGVzdHMvcGFzc2VzL3RleHQtZXhwZWN0ZWQudHh0IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGF0YS93ZWJzb2NrZXQvdGVzdHMvcGFz
c2VzL3RleHQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjM4
YTA2YTQ5MDdkYzlkMWZhZWIxYWEyZjcxZmUyZTg5NWEzMTc2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2RhdGEvd2Vic29ja2V0L3Rlc3RzL3Bhc3Nlcy90ZXh0LWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXRleHQtdHh0CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL3dlYnNvY2tldC90ZXN0
cy9wYXNzZXMvdGV4dC5odG1sIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvZGF0YS93ZWJzb2NrZXQvdGVzdHMvcGFzc2VzL3RleHQuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOGUyN2JlN2Q2MTU0YTFmNjhlYTkxNjBlZjBlMTg2OTFkMjA1NjBk
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kYXRhL3dlYnNvY2tldC90ZXN0cy9w
YXNzZXMvdGV4dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotdGV4dApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvcHJpbnRpbmcucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZy5weQppbmRleCBkNDIwNjMxZmM4ZTQ0ZDAwYjRm
MWE2ZWQ5MmUxYzNiNzQ1YTMzZDFiLi4wMGZmMjExNGM1MGEwNWUwMzhjMGQ0OTU4N2Q4N2VjMWI3
ZjY5MjA1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZy5weQpAQCAtMzUx
LDExICszNTEsMjAgQEAgY2xhc3MgUHJpbnRlcihvYmplY3QpOgogICAgICAgICBmaWxlbmFtZSA9
IHJlc3VsdC5maWxlbmFtZQogICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZl
X3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpCiAgICAgICAgIHNlbGYuX3dyaXRlKCd0cmFjZTogJXMn
ICUgdGVzdF9uYW1lKQotICAgICAgICBzZWxmLl93cml0ZSgnICB0eHQ6ICVzJyAlCi0gICAgICAg
ICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoCi0gICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3BvcnQuZXhwZWN0ZWRfZmlsZW5hbWUoZmlsZW5hbWUsICcudHh0
JykpKQorICAgICAgICB0eHRfZmlsZSA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfZmlsZW5hbWUoZmls
ZW5hbWUsICcudHh0JykKKyAgICAgICAgaWYgc2VsZi5fcG9ydC5wYXRoX2V4aXN0cyh0eHRfZmls
ZSk6CisgICAgICAgICAgICBzZWxmLl93cml0ZSgnICB0eHQ6ICVzJyAlCisgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodHh0X2ZpbGUpKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fd3JpdGUoJyAgdHh0OiA8bm9uZT4nKQor
ICAgICAgICBjaGVja3N1bV9maWxlID0gc2VsZi5fcG9ydC5leHBlY3RlZF9maWxlbmFtZShmaWxl
bmFtZSwgJy5jaGVja3N1bScpCisgICAgICAgIGlmIHNlbGYuX3BvcnQucGF0aF9leGlzdHMoY2hl
Y2tzdW1fZmlsZSk6CisgICAgICAgICAgICBzZWxmLl93cml0ZSgnICBzdW06ICVzJyAlCisgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoY2hl
Y2tzdW1fZmlsZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl93cml0ZSgnICBz
dW06IDxub25lPicpCiAgICAgICAgIHBuZ19maWxlID0gc2VsZi5fcG9ydC5leHBlY3RlZF9maWxl
bmFtZShmaWxlbmFtZSwgJy5wbmcnKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwbmdfZmls
ZSk6CisgICAgICAgIGlmIHNlbGYuX3BvcnQucGF0aF9leGlzdHMocG5nX2ZpbGUpOgogICAgICAg
ICAgICAgc2VsZi5fd3JpdGUoJyAgcG5nOiAlcycgJQogICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHBuZ19maWxlKSkKICAgICAgICAgZWxz
ZToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3Qu
cHkKaW5kZXggMjkxMzlkMDIwNzAxY2MwYmQ4NTUxNzU0YmY3YTVkMmM3ZDdhOGNlOC4uMDM0NGFh
N2FjNDA4YWViMDgyNDFhYTNiMGQ5ZjcxMjBkYzQxYmE3MCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdf
dW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkKQEAgLTE1MSw3ICsxNTEsNyBA
QCBjbGFzcyAgVGVzdHByaW50ZXIodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBleHBlY3Rh
dGlvbnMgPSB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAogICAgICAgICAgICAg
c2VsZi5fcG9ydCwgdGVzdF9wYXRocywgZXhwZWN0YXRpb25zX3N0ciwKICAgICAgICAgICAgIHNl
bGYuX3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKCksIGlzX2RlYnVnX21vZGU9RmFsc2UsCi0gICAg
ICAgICAgICBpc19saW50X21vZGU9RmFsc2UsIHRlc3RzX2FyZV9wcmVzZW50PUZhbHNlKQorICAg
ICAgICAgICAgaXNfbGludF9tb2RlPUZhbHNlKQogCiAgICAgICAgIHJzID0gcnVuX3dlYmtpdF90
ZXN0cy5SZXN1bHRTdW1tYXJ5KGV4cGVjdGF0aW9ucywgdGVzdF9wYXRocykKICAgICAgICAgcmV0
dXJuIHRlc3RfcGF0aHMsIHJzLCBleHBlY3RhdGlvbnMKQEAgLTMxOCw2ICszMTgsMTYgQEAgY2xh
c3MgIFRlc3RwcmludGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShlcnIuZW1wdHkoKSkKIAogICAgICAgICBwcmludGVyLCBlcnIsIG91dCA9IHNlbGYuZ2V0
X3ByaW50ZXIoWyctLXByaW50JywgJ3RyYWNlLWV2ZXJ5dGhpbmcnXSkKKyAgICAgICAgcmVzdWx0
ID0gc2VsZi5nZXRfcmVzdWx0KCdwYXNzZXMvaW1hZ2UuaHRtbCcpCisgICAgICAgIHByaW50ZXIu
cHJpbnRfdGVzdF9yZXN1bHQocmVzdWx0LCBleHBlY3RlZD1UcnVlLCBleHBfc3RyPScnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdF9zdHI9JycpCisgICAgICAgIHJlc3Vs
dCA9IHNlbGYuZ2V0X3Jlc3VsdCgnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ190ZXh0Lmh0bWwn
KQorICAgICAgICBwcmludGVyLnByaW50X3Rlc3RfcmVzdWx0KHJlc3VsdCwgZXhwZWN0ZWQ9VHJ1
ZSwgZXhwX3N0cj0nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rfc3Ry
PScnKQorICAgICAgICByZXN1bHQgPSBzZWxmLmdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVk
L21pc3NpbmdfY2hlY2suaHRtbCcpCisgICAgICAgIHByaW50ZXIucHJpbnRfdGVzdF9yZXN1bHQo
cmVzdWx0LCBleHBlY3RlZD1UcnVlLCBleHBfc3RyPScnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdF9zdHI9JycpCisgICAgICAgIHJlc3VsdCA9IHNlbGYuZ2V0X3Jlc3Vs
dCgnZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sJykKICAgICAgICAgcHJpbnRl
ci5wcmludF90ZXN0X3Jlc3VsdChyZXN1bHQsIGV4cGVjdGVkPVRydWUsIGV4cF9zdHI9JycsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290X3N0cj0nJykKICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShlcnIuZW1wdHkoKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25z
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXggM2Q4MzQ5YjMwMmExZjVhN2Q2NTYxMDhh
MDdmNGViMzFhOTA5OTZlNC4uNTA4YTZhZDc3ZWRjZDAxMDljMmRhMjE4NDczZTIzZTMxNjdlYThk
YSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlv
bnMucHkKQEAgLTg3LDggKzg3LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uczoKICAgICBURVNU
X0xJU1QgPSAidGVzdF9leHBlY3RhdGlvbnMudHh0IgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBvcnQsIHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfcGxhdGZvcm1fbmFtZSwKLSAgICAgICAg
ICAgICAgICAgaXNfZGVidWdfbW9kZSwgaXNfbGludF9tb2RlLCB0ZXN0c19hcmVfcHJlc2VudD1U
cnVlLAotICAgICAgICAgICAgICAgICBvdmVycmlkZXM9Tm9uZSk6CisgICAgICAgICAgICAgICAg
IGlzX2RlYnVnX21vZGUsIGlzX2xpbnRfbW9kZSwgb3ZlcnJpZGVzPU5vbmUpOgogICAgICAgICAi
IiJMb2FkcyBhbmQgcGFyc2VzIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBnaXZlbiBpbiB0aGUgc3Ry
aW5nLgogICAgICAgICBBcmdzOgogICAgICAgICAgICAgcG9ydDogaGFuZGxlIHRvIG9iamVjdCBj
b250YWluaW5nIHBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkKQEAgLTEwMSwxMCArMTAw
LDYgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uczoKICAgICAgICAgICAgICAgICBpbiB0aGUgZXhw
ZWN0YXRpb25zCiAgICAgICAgICAgICBpc19saW50X21vZGU6IElmIFRydWUsIGp1c3QgcGFyc2Ug
dGhlIGV4cGVjdGF0aW9ucyBzdHJpbmcKICAgICAgICAgICAgICAgICBsb29raW5nIGZvciBlcnJv
cnMuCi0gICAgICAgICAgICB0ZXN0c19hcmVfcHJlc2VudDogd2hldGhlciB0aGUgdGVzdCBmaWxl
cyBleGlzdCBpbiB0aGUgZmlsZQotICAgICAgICAgICAgICAgIHN5c3RlbSBhbmQgY2FuIGJlIHBy
b2JlZCBmb3IuIFRoaXMgaXMgdXNlZnVsIGZvciBkaXN0aW5ndWlzaGluZwotICAgICAgICAgICAg
ICAgIHRlc3QgZmlsZXMgZnJvbSBkaXJlY3RvcmllcywgYW5kIGlzIG5lZWRlZCBieSB0aGUgTFRU
RgotICAgICAgICAgICAgICAgIGRhc2hib2FyZCwgd2hlcmUgdGhlIGZpbGVzIGFyZW4ndCBhY3R1
YWxseSBsb2NhbGx5IHByZXNlbnQuCiAgICAgICAgICAgICBvdmVycmlkZXM6IHRlc3QgZXhwZWN0
YXRpb25zIHRoYXQgYXJlIGFsbG93ZWQgdG8gb3ZlcnJpZGUgYW55CiAgICAgICAgICAgICAgICAg
ZW50cmllcyBpbiB8ZXhwZWN0YXRpb25zfC4gVGhpcyBpcyB1c2VkIGJ5IGNhbGxlcnMKICAgICAg
ICAgICAgICAgICB0aGF0IG5lZWQgdG8gbWFuYWdlIHR3byBzZXRzIG9mIGV4cGVjdGF0aW9ucyAo
ZS5nLiwgdXBzdHJlYW0KQEAgLTExMiw3ICsxMDcsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25z
OgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMgPSBUZXN0RXhw
ZWN0YXRpb25zRmlsZShwb3J0LCBleHBlY3RhdGlvbnMsCiAgICAgICAgICAgICB0ZXN0cywgdGVz
dF9wbGF0Zm9ybV9uYW1lLCBpc19kZWJ1Z19tb2RlLCBpc19saW50X21vZGUsCi0gICAgICAgICAg
ICB0ZXN0c19hcmVfcHJlc2VudD10ZXN0c19hcmVfcHJlc2VudCwgb3ZlcnJpZGVzPW92ZXJyaWRl
cykKKyAgICAgICAgICAgIG92ZXJyaWRlcz1vdmVycmlkZXMpCiAKICAgICAjIFRPRE8ob2phbik6
IEFsbG93IGZvciByZW1vdmluZyBza2lwcGVkIHRlc3RzIHdoZW4gZ2V0dGluZyB0aGUgbGlzdCBv
ZgogICAgICMgdGVzdHMgdG8gcnVuLCBidXQgbm90IHdoZW4gZ2V0dGluZyBtZXRyaWNzLgpAQCAt
MzAyLDggKzI5Nyw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAg
ICAgICAgICAnZmxha3knOiBGTEFLWX0KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBl
eHBlY3RhdGlvbnMsIGZ1bGxfdGVzdF9saXN0LCB0ZXN0X3BsYXRmb3JtX25hbWUsCi0gICAgICAg
IGlzX2RlYnVnX21vZGUsIGlzX2xpbnRfbW9kZSwgc3VwcHJlc3NfZXJyb3JzPUZhbHNlLAotICAg
ICAgICB0ZXN0c19hcmVfcHJlc2VudD1UcnVlLCBvdmVycmlkZXM9Tm9uZSk6CisgICAgICAgIGlz
X2RlYnVnX21vZGUsIGlzX2xpbnRfbW9kZSwgc3VwcHJlc3NfZXJyb3JzPUZhbHNlLCBvdmVycmlk
ZXM9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBleHBlY3RhdGlvbnM6IENvbnRlbnRzIG9m
IHRoZSBleHBlY3RhdGlvbnMgZmlsZQogICAgICAgICBmdWxsX3Rlc3RfbGlzdDogVGhlIGxpc3Qg
b2YgYWxsIHRlc3RzIHRvIGJlIHJ1biBwZW5kaW5nIHByb2Nlc3Npbmcgb2YKQEAgLTMxNCw5ICsz
MDgsNiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgaXNfZGVidWdfbW9k
ZTogV2hldGhlciB3ZSB0ZXN0aW5nIGEgdGVzdF9zaGVsbCBidWlsdCBkZWJ1ZyBtb2RlLgogICAg
ICAgICBpc19saW50X21vZGU6IFdoZXRoZXIgdGhpcyBpcyBqdXN0IGxpbnRpbmcgdGVzdF9leHBl
Y2F0YXRpb25zLnR4dC4KICAgICAgICAgc3VwcHJlc3NfZXJyb3JzOiBXaGV0aGVyIHRvIHN1cHBy
ZXNzIGxpbnQgZXJyb3JzLgotICAgICAgICB0ZXN0c19hcmVfcHJlc2VudDogV2hldGhlciB0aGUg
dGVzdCBmaWxlcyBhcmUgcHJlc2VudCBpbiB0aGUgbG9jYWwKLSAgICAgICAgICAgIGZpbGVzeXN0
ZW0uIFRoZSBMVFRGIERhc2hib2FyZCB1c2VzIEZhbHNlIGhlcmUgdG8gYXZvaWQgaGF2aW5nIHRv
Ci0gICAgICAgICAgICBrZWVwIGEgbG9jYWwgY29weSBvZiB0aGUgdHJlZS4KICAgICAgICAgb3Zl
cnJpZGVzOiB0ZXN0IGV4cGVjdGF0aW9ucyB0aGF0IGFyZSBhbGxvd2VkIHRvIG92ZXJyaWRlIGFu
eQogICAgICAgICAgICAgZW50cmllcyBpbiB8ZXhwZWN0YXRpb25zfC4gVGhpcyBpcyB1c2VkIGJ5
IGNhbGxlcnMKICAgICAgICAgICAgIHRoYXQgbmVlZCB0byBtYW5hZ2UgdHdvIHNldHMgb2YgZXhw
ZWN0YXRpb25zIChlLmcuLCB1cHN0cmVhbQpAQCAtMzI5LDcgKzMyMCw2IEBAIGNsYXNzIFRlc3RF
eHBlY3RhdGlvbnNGaWxlOgogICAgICAgICBzZWxmLl90ZXN0X3BsYXRmb3JtX25hbWUgPSB0ZXN0
X3BsYXRmb3JtX25hbWUKICAgICAgICAgc2VsZi5faXNfZGVidWdfbW9kZSA9IGlzX2RlYnVnX21v
ZGUKICAgICAgICAgc2VsZi5faXNfbGludF9tb2RlID0gaXNfbGludF9tb2RlCi0gICAgICAgIHNl
bGYuX3Rlc3RzX2FyZV9wcmVzZW50ID0gdGVzdHNfYXJlX3ByZXNlbnQKICAgICAgICAgc2VsZi5f
b3ZlcnJpZGVzID0gb3ZlcnJpZGVzCiAgICAgICAgIHNlbGYuX3N1cHByZXNzX2Vycm9ycyA9IHN1
cHByZXNzX2Vycm9ycwogICAgICAgICBzZWxmLl9lcnJvcnMgPSBbXQpAQCAtNDYyLDcgKzQ1Miw3
IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogCiAgICAgZGVmIHJlbW92ZV9wbGF0Zm9y
bV9mcm9tX2V4cGVjdGF0aW9ucyhzZWxmLCB0ZXN0cywgcGxhdGZvcm0pOgogICAgICAgICAiIiJS
ZXR1cm5zIGEgY29weSBvZiB0aGUgZXhwZWN0YXRpb25zIHdpdGggdGhlIHRlc3RzIG1hdGNoaW5n
IHRoZQotICAgICAgICBwbGF0Zm9ybSByZW1vdmUuCisgICAgICAgIHBsYXRmb3JtIHJlbW92ZWQu
CiAKICAgICAgICAgSWYgYSB0ZXN0IGlzIGluIHRoZSB0ZXN0IGxpc3QgYW5kIGhhcyBhbiBvcHRp
b24gdGhhdCBtYXRjaGVzIHRoZSBnaXZlbgogICAgICAgICBwbGF0Zm9ybSwgcmVtb3ZlIHRoZSBt
YXRjaGluZyBwbGF0Zm9ybSBhbmQgc2F2ZSB0aGUgdXBkYXRlZCB0ZXN0IGJhY2sKQEAgLTY5OSw4
ICs2ODksOCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgICMgV2Vi
S2l0J3Mgd2F5IG9mIHNraXBwaW5nIHRlc3RzIGlzIHRvIGFkZCBhIC1kaXNhYmxlZCBzdWZmaXgu
CiAgICAgICAgICAgICAjIFNvIHdlIHNob3VsZCBjb25zaWRlciB0aGUgcGF0aCBleGlzdGluZyBp
ZiB0aGUgcGF0aCBvciB0aGUKICAgICAgICAgICAgICMgLWRpc2FibGVkIHZlcnNpb24gZXhpc3Rz
LgotICAgICAgICAgICAgaWYgKHNlbGYuX3Rlc3RzX2FyZV9wcmVzZW50IGFuZCBub3Qgb3MucGF0
aC5leGlzdHMoZnVsbF9wYXRoKQotICAgICAgICAgICAgICAgIGFuZCBub3Qgb3MucGF0aC5leGlz
dHMoZnVsbF9wYXRoICsgJy1kaXNhYmxlZCcpKToKKyAgICAgICAgICAgIGlmIChub3Qgc2VsZi5f
cG9ydC5wYXRoX2V4aXN0cyhmdWxsX3BhdGgpCisgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxm
Ll9wb3J0LnBhdGhfZXhpc3RzKGZ1bGxfcGF0aCArICctZGlzYWJsZWQnKSk6CiAgICAgICAgICAg
ICAgICAgIyBMb2cgYSBub24gZmF0YWwgZXJyb3IgaGVyZSBzaW5jZSB5b3UgaGl0IHRoaXMgY2Fz
ZSBhbnkKICAgICAgICAgICAgICAgICAjIHRpbWUgeW91IHVwZGF0ZSB0ZXN0X2V4cGVjdGF0aW9u
cy50eHQgd2l0aG91dCBzeW5jaW5nCiAgICAgICAgICAgICAgICAgIyB0aGUgTGF5b3V0VGVzdHMg
ZGlyZWN0b3J5CkBAIC03MzUsNyArNzI1LDggQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6
CiAgICAgICAgIHBhdGggYW5kIG1ha2Ugc3VyZSBkaXJlY3RvcmllcyBlbmQgd2l0aCB0aGUgT1Mg
cGF0aCBzZXBhcmF0b3IuIiIiCiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fcG9y
dC5sYXlvdXRfdGVzdHNfZGlyKCksIHRlc3RfbGlzdF9wYXRoKQogICAgICAgICBwYXRoID0gb3Mu
cGF0aC5ub3JtcGF0aChwYXRoKQotICAgICAgICBwYXRoID0gc2VsZi5fZml4X2RpcihwYXRoKQor
ICAgICAgICBpZiBzZWxmLl9wb3J0LnBhdGhfaXNkaXIocGF0aCk6CisgICAgICAgICAgICBwYXRo
ID0gb3MucGF0aC5qb2luKHBhdGgsICcnKQogCiAgICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAg
IGZvciB0ZXN0IGluIHNlbGYuX2Z1bGxfdGVzdF9saXN0OgpAQCAtNzQzLDIwICs3MzQsNiBAQCBj
bGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KHRlc3QpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgIGRlZiBfZml4X2RpcihzZWxmLCBw
YXRoKToKLSAgICAgICAgIiIiQ2hlY2sgdG8gc2VlIGlmIHRoZSBwYXRoIHBvaW50cyB0byBhIGRp
cmVjdG9yeSwgYW5kIGlmIHNvLCBhcHBlbmQKLSAgICAgICAgdGhlIGRpcmVjdG9yeSBzZXBhcmF0
b3IgaWYgbmVjZXNzYXJ5LiIiIgotICAgICAgICBpZiBzZWxmLl90ZXN0c19hcmVfcHJlc2VudDoK
LSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6Ci0gICAgICAgICAgICAgICAgcGF0
aCA9IG9zLnBhdGguam9pbihwYXRoLCAnJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMg
SWYgd2UgY2FuJ3QgY2hlY2sgdGhlIGZpbGVzeXN0ZW0gdG8gc2VlIGlmIHRoaXMgaXMgYSBkaXJl
Y3RvcnksCi0gICAgICAgICAgICAjIHdlIGFzc3VtZSB0aGF0IGZpbGVzIHcvbyBhbiBleHRlbnNp
b24gYXJlIGRpcmVjdG9yaWVzLgotICAgICAgICAgICAgIyBUT0RPKGRwcmFua2UpOiBXaGF0IGhh
cHBlbnMgdy8gTGF5b3V0VGVzdHMvY3NzMi4xID8KLSAgICAgICAgICAgIGlmIG9zLnBhdGguc3Bs
aXRleHQocGF0aClbMV0gPT0gJyc6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9p
bihwYXRoLCAnJykKLSAgICAgICAgcmV0dXJuIHBhdGgKLQogICAgIGRlZiBfYWRkX3Rlc3RzKHNl
bGYsIHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCiAgICAgICAg
ICAgICAgICAgICAgbW9kaWZpZXJzLCBvcHRpb25zLCBvdmVycmlkZXNfYWxsb3dlZCk6CiAgICAg
ICAgIGZvciB0ZXN0IGluIHRlc3RzOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnNfdW5p
dHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQppbmRleCAyNmViMThkNmVl
OWFmNWY1MDI1MjQzMDQ0ZDZjMTAzNjVlMzA5MWU1Li4yZTFiNmVjYjI0ZmZhODg1OTZmNTI2YzE1
MDk2MTc1NmFlOTc2NjQ4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpAQCAtMTA2LDE0ICsxMDYsMTMg
QEAgQlVHX1RFU1QgV09OVEZJWCBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0g
SU1BR0UKICIiIgogCiAgICAgZGVmIHBhcnNlX2V4cChzZWxmLCBleHBlY3RhdGlvbnMsIG92ZXJy
aWRlcz1Ob25lLCBpc19saW50X21vZGU9RmFsc2UsCi0gICAgICAgICAgICAgICAgICBpc19kZWJ1
Z19tb2RlPUZhbHNlLCB0ZXN0c19hcmVfcHJlc2VudD1UcnVlKToKKyAgICAgICAgICAgICAgICAg
IGlzX2RlYnVnX21vZGU9RmFsc2UpOgogICAgICAgICBzZWxmLl9leHAgPSBUZXN0RXhwZWN0YXRp
b25zKHNlbGYuX3BvcnQsCiAgICAgICAgICAgICAgdGVzdHM9c2VsZi5nZXRfYmFzaWNfdGVzdHMo
KSwKICAgICAgICAgICAgICBleHBlY3RhdGlvbnM9ZXhwZWN0YXRpb25zLAogICAgICAgICAgICAg
IHRlc3RfcGxhdGZvcm1fbmFtZT1zZWxmLl9wb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLAogICAg
ICAgICAgICAgIGlzX2RlYnVnX21vZGU9aXNfZGVidWdfbW9kZSwKICAgICAgICAgICAgICBpc19s
aW50X21vZGU9aXNfbGludF9tb2RlLAotICAgICAgICAgICAgIHRlc3RzX2FyZV9wcmVzZW50PXRl
c3RzX2FyZV9wcmVzZW50LAogICAgICAgICAgICAgIG92ZXJyaWRlcz1vdmVycmlkZXMpCiAKICAg
ICBkZWYgYXNzZXJ0X2V4cChzZWxmLCB0ZXN0LCByZXN1bHQpOgpAQCAtMTUxLDEwICsxNTAsNiBA
QCBCVUdYIERFRkVSIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQogICAgICAgICBzZWxmLmFz
c2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCiAgICAgICAgIHNl
bGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQogCi0g
ICAgICAgIHNlbGYucGFyc2VfZXhwKGV4cF9zdHIsIHRlc3RzX2FyZV9wcmVzZW50PUZhbHNlKQot
ICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRF
WFQpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRt
bCcsIElNQUdFKQotCiAgICAgZGVmIHRlc3RfcmVsZWFzZV9tb2RlKHNlbGYpOgogICAgICAgICBz
ZWxmLnBhcnNlX2V4cCgnQlVHWCBERUJVRyA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9
IFRFWFQnLAogICAgICAgICAgICAgICAgICAgICAgICBpc19kZWJ1Z19tb2RlPVRydWUpCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkKaW5kZXggYzIxYzg4OTQ3YmM5N2MwNmNhNzBkOTQ2NjE4YzUwZjJkNTk3Zjg3NS4uZWZj
ZjRlYTM1ZDMwNzcwM2EwMDM5M2JhZmExNjU1ZmNkODg0MjhiZCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAt
NDIsNiArNDIsNyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCiBpbXBvcnQgYXBhY2hlX2h0
dHBfc2VydmVyCitpbXBvcnQgdGVzdF9maWxlcwogaW1wb3J0IGh0dHBfc2VydmVyCiBpbXBvcnQg
d2Vic29ja2V0X3NlcnZlcgogCkBAIC0xMzAsMTEgKzEzMSwxMSBAQCBjbGFzcyBQb3J0KG9iamVj
dCk6CiAgICAgICAgIGludGVyZmFjZSBzbyB0aGF0IGl0IGNhbiBiZSBvdmVycmlkZW4gZm9yIHRl
c3RpbmcgcHVycG9zZXMuIiIiCiAgICAgICAgIHJldHVybiBleHBlY3RlZF90ZXh0ICE9IGFjdHVh
bF90ZXh0CiAKLSAgICBkZWYgZGlmZl9pbWFnZShzZWxmLCBleHBlY3RlZF9maWxlbmFtZSwgYWN0
dWFsX2ZpbGVuYW1lLAorICAgIGRlZiBkaWZmX2ltYWdlKHNlbGYsIGV4cGVjdGVkX2NvbnRlbnRz
LCBhY3R1YWxfY29udGVudHMsCiAgICAgICAgICAgICAgICAgICAgZGlmZl9maWxlbmFtZT1Ob25l
LCB0b2xlcmFuY2U9MCk6Ci0gICAgICAgICIiIkNvbXBhcmUgdHdvIGltYWdlIGZpbGVzIGFuZCBw
cm9kdWNlIGEgZGVsdGEgaW1hZ2UgZmlsZS4KKyAgICAgICAgIiIiQ29tcGFyZSB0d28gaW1hZ2Vz
IGFuZCBwcm9kdWNlIGEgZGVsdGEgaW1hZ2UgZmlsZS4KIAotICAgICAgICBSZXR1cm4gVHJ1ZSBp
ZiB0aGUgdHdvIGZpbGVzIGFyZSBkaWZmZXJlbnQsIEZhbHNlIGlmIHRoZXkgYXJlIHRoZSBzYW1l
LgorICAgICAgICBSZXR1cm4gVHJ1ZSBpZiB0aGUgdHdvIGltYWdlcyBhcmUgZGlmZmVyZW50LCBG
YWxzZSBpZiB0aGV5IGFyZSB0aGUgc2FtZS4KICAgICAgICAgQWxzbyBwcm9kdWNlIGEgZGVsdGEg
aW1hZ2Ugb2YgdGhlIHR3byBpbWFnZXMgYW5kIHdyaXRlIHRoYXQgaW50bwogICAgICAgICB8ZGlm
Zl9maWxlbmFtZXwgaWYgaXQgaXMgbm90IE5vbmUuCiAKQEAgLTI1Miw2ICsyNTMsMzEgQEAgY2xh
c3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihwbGF0Zm9y
bV9kaXIsIGJhc2VsaW5lX2ZpbGVuYW1lKQogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNl
bGYubGF5b3V0X3Rlc3RzX2RpcigpLCBiYXNlbGluZV9maWxlbmFtZSkKIAorICAgIGRlZiBfZXhw
ZWN0ZWRfZmlsZV9jb250ZW50cyhzZWxmLCB0ZXN0LCBleHRlbnNpb24sIGVuY29kaW5nKToKKyAg
ICAgICAgcGF0aCA9IHNlbGYuZXhwZWN0ZWRfZmlsZW5hbWUodGVzdCwgZXh0ZW5zaW9uKQorICAg
ICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCk6CisgICAgICAgICAgICByZXR1cm4gTm9u
ZQorICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICdyJywgZW5jb2RpbmcpIGFzIGZpbGU6
CisgICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKKworICAgIGRlZiBleHBlY3RlZF9jaGVj
a3N1bShzZWxmLCB0ZXN0KToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgY2hlY2tzdW0gb2YgdGhl
IGltYWdlIHdlIGV4cGVjdCB0aGUgdGVzdCB0byBwcm9kdWNlLCBvciBOb25lIGlmIGl0IGlzIGEg
dGV4dC1vbmx5IHRlc3QuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RlZF9maWxlX2Nv
bnRlbnRzKHRlc3QsICcuY2hlY2tzdW0nLCAnYXNjaWknKQorCisgICAgZGVmIGV4cGVjdGVkX2lt
YWdlKHNlbGYsIHRlc3QpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBpbWFnZSB3ZSBleHBlY3Qg
dGhlIHRlc3QgdG8gcHJvZHVjZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVjdGVkX2Zp
bGVfY29udGVudHModGVzdCwgJy5wbmcnLCBOb25lKQorCisgICAgZGVmIGV4cGVjdGVkX3RleHQo
c2VsZiwgdGVzdCk6CisgICAgICAgICIiIlJldHVybnMgdGhlIHRleHQgb3V0cHV0IHdlIGV4cGVj
dCB0aGUgdGVzdCB0byBwcm9kdWNlLiIiIgorICAgICAgICAjIE5PVEU6IC1leHBlY3RlZC50eHQg
ZmlsZXMgYXJlIEFMV0FZUyB1dGYtOC4gIEhvd2V2ZXIsCisgICAgICAgICMgd2UgZG8gbm90IGRl
Y29kZSB0aGUgb3V0cHV0IGZyb20gRFJULCBzbyB3ZSBzaG91bGQgbm90CisgICAgICAgICMgZGVj
b2RlIHRoZSAtZXhwZWN0ZWQudHh0IHZhbHVlcyBlaXRoZXIgdG8gYWxsb3cgY29tcGFyaXNvbnMu
CisgICAgICAgIHRleHQgPSBzZWxmLl9leHBlY3RlZF9maWxlX2NvbnRlbnRzKHRlc3QsICcudHh0
JywgTm9uZSkKKyAgICAgICAgaWYgbm90IHRleHQ6CisgICAgICAgICAgICByZXR1cm4gJycKKyAg
ICAgICAgcmV0dXJuIHRleHQuc3RyaXAoIlxyXG4iKS5yZXBsYWNlKCJcclxuIiwgIlxuIikgKyAi
XG4iCisKICAgICBkZWYgZmlsZW5hbWVfdG9fdXJpKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAg
IiIiQ29udmVydCBhIHRlc3QgZmlsZSB0byBhIFVSSS4iIiIKICAgICAgICAgTEFZT1VUVEVTVF9I
VFRQX0RJUiA9ICJodHRwL3Rlc3RzLyIKQEAgLTI4Nyw2ICszMTMsNzYgQEAgY2xhc3MgUG9ydChv
YmplY3QpOgogICAgICAgICAgICAgcmV0dXJuICJmaWxlOi8vLyIgKyBzZWxmLmdldF9hYnNvbHV0
ZV9wYXRoKGZpbGVuYW1lKQogICAgICAgICByZXR1cm4gImZpbGU6Ly8iICsgc2VsZi5nZXRfYWJz
b2x1dGVfcGF0aChmaWxlbmFtZSkKIAorICAgIGRlZiB0ZXN0cyhzZWxmLCBwYXRocyk6CisgICAg
ICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiB0ZXN0cyBmb3VuZCAocmVsYXRpdmUgdG8gbGF5b3V0
X3Rlc3RzX2RpcigpLiIiIgorICAgICAgICByZXR1cm4gdGVzdF9maWxlcy5maW5kKHNlbGYsIHBh
dGhzKQorCisgICAgZGVmIHRlc3RfZGlycyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUg
bGlzdCBvZiB0b3AtbGV2ZWwgdGVzdCBkaXJlY3Rvcmllcy4KKworICAgICAgICBVc2VkIGJ5IC0t
Y2xvYmJlci1vbGQtcmVzdWx0cy4iIiIKKyAgICAgICAgbGF5b3V0X3Rlc3RzX2RpciA9IHNlbGYu
bGF5b3V0X3Rlc3RzX2RpcigpCisgICAgICAgIHJldHVybiBmaWx0ZXIobGFtYmRhIHg6IG9zLnBh
dGguaXNkaXIob3MucGF0aC5qb2luKGxheW91dF90ZXN0c19kaXIsIHgpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICBvcy5saXN0ZGlyKGxheW91dF90ZXN0c19kaXIpKQorCisgICAgZGVmIHBhdGhf
aXNkaXIoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgcGF0aCBy
ZWZlcnMgdG8gYSBkaXJlY3Rvcnkgb2YgdGVzdHMuCisKKyAgICAgICAgVXNlZCBieSB0ZXN0X2V4
cGVjdGF0aW9ucy5weSB0byBhcHBseSBydWxlcyB0byB3aG9sZSBkaXJlY3Rvcmllcy4iIiIKKyAg
ICAgICAgcmV0dXJuIG9zLnBhdGguaXNkaXIocGF0aCkKKworICAgIGRlZiBwYXRoX2V4aXN0cyhz
ZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSBwYXRoIHJlZmVycyB0
byBhbiBleGlzdGluZyB0ZXN0IG9yIGJhc2VsaW5lLiIiIgorICAgICAgICAjIFVzZWQgYnkgdGVz
dF9leHBlY3RhdGlvbnMucHkgdG8gZGV0ZXJtaW5lIGlmIGFuIGVudHJ5IHJlZmVycyB0byBhCisg
ICAgICAgICMgdmFsaWQgdGVzdCBhbmQgYnkgcHJpbnRpbmcucHkgdG8gZGV0ZXJtaW5lIGlmIGJh
c2VsaW5lcyBleGlzdC4iIiIKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKHBhdGgpCisK
KyAgICBkZWYgdXBkYXRlX2Jhc2VsaW5lKHNlbGYsIHBhdGgsIGRhdGEsIGVuY29kaW5nKToKKyAg
ICAgICAgIiIiVXBkYXRlcyB0aGUgYmFzZWxpbmUgZm9yIGEgdGVzdC4KKworICAgICAgICBBcmdz
OgorICAgICAgICAgICAgcGF0aDogdGhlIGFjdHVhbCBwYXRoIHRvIHVzZSBmb3IgYmFzZWxpbmUs
IG5vdCB0aGUgcGF0aCB0bworICAgICAgICAgICAgICB0aGUgdGVzdC4gVGhpcyBmdW5jdGlvbiBp
cyB1c2VkIHRvIHVwZGF0ZSBlaXRoZXIgZ2VuZXJpYyBvcgorICAgICAgICAgICAgICBwbGF0Zm9y
bS1zcGVjaWZpYyBiYXNlbGluZXMsIGJ1dCB3ZSBjYW4ndCBpbmZlciB3aGljaCBoZXJlLgorICAg
ICAgICAgICAgZGF0YTogY29udGVudHMgb2YgdGhlIGJhc2VsaW5lLgorICAgICAgICAgICAgZW5j
b2Rpbmc6IGZpbGUgZW5jb2RpbmcgdG8gdXNlIGZvciB0aGUgYmFzZWxpbmUuCisgICAgICAgICIi
IgorICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICJ3IiwgZW5jb2Rpbmc9ZW5jb2Rpbmcp
IGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGRhdGEpCisKKyAgICBkZWYgdXJpX3Rv
X3Rlc3RfbmFtZShzZWxmLCB1cmkpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGJhc2UgbGF5b3V0
IHRlc3QgbmFtZSBmb3IgYSBnaXZlbiBVUkkuCisKKyAgICAgICAgVGhpcyByZXR1cm5zIHRoZSB0
ZXN0IG5hbWUgZm9yIGEgZ2l2ZW4gVVJJLCBlLmcuLCBpZiB5b3UgcGFzc2VkIGluCisgICAgICAg
ICJmaWxlOi8vL3NyYy9MYXlvdXRUZXN0cy9mYXN0L2h0bWwva2V5Z2VuLmh0bWwiIGl0IHdvdWxk
IHJldHVybgorICAgICAgICAiZmFzdC9odG1sL2tleWdlbi5odG1sIi4KKworICAgICAgICAiIiIK
KyAgICAgICAgdGVzdCA9IHVyaQorICAgICAgICBpZiB1cmkuc3RhcnRzd2l0aCgiZmlsZTovLy8i
KToKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAg
ICAgIHRlc3QgPSB0ZXN0LnJlcGxhY2UoJ2ZpbGU6Ly8vJywgJycpCisgICAgICAgICAgICAgICAg
dGVzdCA9IHRlc3QucmVwbGFjZSgnLycsICdcXCcpCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIHRlc3QgPSB0ZXN0LnJlcGxhY2UoJ2ZpbGU6Ly8nLCAnJykKKyAgICAgICAgICAg
IHJldHVybiBzZWxmLnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdCkKKyAgICAgICAgZWxpZiB1
cmkuc3RhcnRzd2l0aCgiaHR0cDovLzEyNy4wLjAuMTo4ODgwLyIpOgorICAgICAgICAgICAgIyB3
ZWJzb2NrZXQgdGVzdHMKKyAgICAgICAgICAgIHRlc3QgPSB0ZXN0LnJlcGxhY2UoJ2h0dHA6Ly8x
MjcuMC4wLjE6ODg4MC8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAg
ICAgICAgICAgIHJldHVybiB0ZXN0CisgICAgICAgIGVsaWYgdXJpLnN0YXJ0c3dpdGgoImh0dHA6
Ly8iKToKKyAgICAgICAgICAgICMgcmVndWxhciBIVFRQIHRlc3QKKyAgICAgICAgICAgIHRlc3Qg
PSB0ZXN0LnJlcGxhY2UoJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC8nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy8nKQorICAgICAgICAgICAgcmV0dXJuIHRlc3QK
KyAgICAgICAgZWxpZiB1cmkuc3RhcnRzd2l0aCgiaHR0cHM6Ly8iKToKKyAgICAgICAgICAgIHRl
c3QgPSB0ZXN0LnJlcGxhY2UoJ2h0dHBzOi8vMTI3LjAuMC4xOjg0NDMvJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMvJykKKyAgICAgICAgICAgIHJldHVybiB0
ZXN0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
KCd1bmtub3duIHVybCB0eXBlOiAlcycgJSB1cmkpCisKICAgICBkZWYgZ2V0X2Fic29sdXRlX3Bh
dGgoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGFic29sdXRlIHBhdGgg
aW4gdW5peCBmb3JtYXQgZm9yIHRoZSBnaXZlbiBmaWxlbmFtZS4KIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
X3VuaXR0ZXN0LnB5CmluZGV4IDQwN2I5MDYxYzFmNDdjYTFlNzliN2RhOWQ0MzA1ZTJhOGExMmM5
ZDYuLmJkYzQ5NDk5MWVhYTc1ZjEzYWE1MmM4NWE3YzcwNmZmZTU4YWI1ODcgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0
dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2VfdW5pdHRlc3QucHkKQEAgLTIxNCw2ICsyMTQsMTEgQEAgY2xhc3MgUG9ydFRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIFRoaXMgcm91dGluZSBpcyBhIG5vLW9wLiBX
ZSBqdXN0IHRlc3QgaXQgZm9yIGNvdmVyYWdlLgogICAgICAgICBwb3J0LnNldHVwX3Rlc3RfcnVu
KCkKIAorICAgIGRlZiB0ZXN0X3Rlc3RfZGlycyhzZWxmKToKKyAgICAgICAgcG9ydCA9IGJhc2Uu
UG9ydCgpCisgICAgICAgIGRpcnMgPSBwb3J0LnRlc3RfZGlycygpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSgnY2FudmFzJyBpbiBkaXJzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2NzczIu
MScgaW4gZGlycykKIAogY2xhc3MgVmlydHVhbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICIiIlRlc3RzIHRoYXQgdmFyaW91cyBtZXRob2RzIGV4cGVjdGVkIHRvIGJlIHZpcnR1YWwgYXJl
LiIiIgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggODk2ZWFiMTVlNWIxMjYwNTVmOGEwN2U2MDQw
MGI1NDIyMDI3YWZjMi4uODAzMmE4MThlODkzMDY0Y2IyMTljNTY1MmYwOWNlZTYxZWM0ZTNjZSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC00Niw3ICs0Niw2IEBAIGltcG9ydCBiYXNlCiBpbXBv
cnQgaHR0cF9zZXJ2ZXIKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgRXhlY3V0aXZlCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2Fn
ZSBpbXBvcnQgdGVzdF9maWxlcwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3Bh
Y2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiAKICMgQ2hyb21pdW0gRFJUIG9uIE9TWCB1
c2VzIFdlYktpdERyaXZlci4KQEAgLTEyNiwyNCArMTI1LDMyIEBAIGNsYXNzIENocm9taXVtUG9y
dChiYXNlLlBvcnQpOgogICAgICAgICByZXR1cm4gY2hlY2tfZmlsZV9leGlzdHMoaW1hZ2VfZGlm
Zl9wYXRoLCAnaW1hZ2UgZGlmZiBleGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3ZlcnJpZGVfc3RlcCwgbG9nZ2luZykKIAotICAgIGRlZiBkaWZmX2ltYWdlKHNlbGYsIGV4
cGVjdGVkX2ZpbGVuYW1lLCBhY3R1YWxfZmlsZW5hbWUsCisgICAgZGVmIGRpZmZfaW1hZ2Uoc2Vs
ZiwgZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywKICAgICAgICAgICAgICAgICAg
ICBkaWZmX2ZpbGVuYW1lPU5vbmUsIHRvbGVyYW5jZT0wKToKICAgICAgICAgZXhlY3V0YWJsZSA9
IHNlbGYuX3BhdGhfdG9faW1hZ2VfZGlmZigpCisgICAgICAgIGV4cGVjdGVkX3RtcGZpbGUgPSB0
ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQorICAgICAgICBleHBlY3RlZF90bXBmaWxlLndy
aXRlKGV4cGVjdGVkX2NvbnRlbnRzKQorICAgICAgICBhY3R1YWxfdG1wZmlsZSA9IHRlbXBmaWxl
Lk5hbWVkVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgIGFjdHVhbF90bXBmaWxlLndyaXRlKGFjdHVh
bF9jb250ZW50cykKICAgICAgICAgaWYgZGlmZl9maWxlbmFtZToKLSAgICAgICAgICAgIGNtZCA9
IFtleGVjdXRhYmxlLCAnLS1kaWZmJywgZXhwZWN0ZWRfZmlsZW5hbWUsIGFjdHVhbF9maWxlbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICBkaWZmX2ZpbGVuYW1lXQorICAgICAgICAgICAgY21kID0g
W2V4ZWN1dGFibGUsICctLWRpZmYnLCBleHBlY3RlZF90bXBmaWxlLm5hbWUsCisgICAgICAgICAg
ICAgICAgICAgYWN0dWFsX3RtcGZpbGUubmFtZSwgZGlmZl9maWxlbmFtZV0KICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGNtZCA9IFtleGVjdXRhYmxlLCBleHBlY3RlZF9maWxlbmFtZSwgYWN0
dWFsX2ZpbGVuYW1lXQorICAgICAgICAgICAgY21kID0gW2V4ZWN1dGFibGUsIGV4cGVjdGVkX3Rt
cGZpbGUubmFtZSwgYWN0dWFsX3RtcGZpbGUubmFtZV0KIAogICAgICAgICByZXN1bHQgPSBUcnVl
CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFu
ZChjbWQsIHJldHVybl9leGl0X2NvZGU9VHJ1ZSkgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6Ci0gICAgICAgICAgICBpZiBlLmVy
cm5vID09IGVycm5vLkVOT0VOVCBvciBlLmVycm5vID09IGVycm5vLkVBQ0NFUzoKLSAgICAgICAg
ICAgICAgICBfY29tcGFyZV9hdmFpbGFibGUgPSBGYWxzZQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICByYWlzZSBlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
aWYgc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGNtZCwgcmV0dXJuX2V4aXRfY29kZT1UcnVl
KSA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGV4
Y2VwdCBPU0Vycm9yLCBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5P
RU5UIG9yIGUuZXJybm8gPT0gZXJybm8uRUFDQ0VTOgorICAgICAgICAgICAgICAgICAgICBfY29t
cGFyZV9hdmFpbGFibGUgPSBGYWxzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgICAgIHJhaXNlIGUKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGV4cGVjdGVk
X3RtcGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgYWN0dWFsX3RtcGZpbGUuY2xvc2UoKQogICAg
ICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgZHJpdmVyX25hbWUoc2VsZik6CkBAIC0yNjEs
MTQgKzI2OCwxMyBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgdGVz
dF9wbGF0Zm9ybV9uYW1lID0gc2VsZi50ZXN0X3BsYXRmb3JtX25hbWUoKQogICAgICAgICBpc19k
ZWJ1Z19tb2RlID0gRmFsc2UKIAotICAgICAgICBhbGxfdGVzdF9maWxlcyA9IHRlc3RfZmlsZXMu
Z2F0aGVyX3Rlc3RfZmlsZXMoc2VsZiwgJyonKQorICAgICAgICBhbGxfdGVzdF9maWxlcyA9IHNl
bGYudGVzdHMoW10pCiAgICAgICAgIGlmIGV4dHJhX3Rlc3RfZmlsZXM6CiAgICAgICAgICAgICBh
bGxfdGVzdF9maWxlcy51cGRhdGUoZXh0cmFfdGVzdF9maWxlcykKIAogICAgICAgICBleHBlY3Rh
dGlvbnMgPSB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAogICAgICAgICAgICAg
c2VsZiwgYWxsX3Rlc3RfZmlsZXMsIGV4cGVjdGF0aW9uc19zdHIsIHRlc3RfcGxhdGZvcm1fbmFt
ZSwKLSAgICAgICAgICAgIGlzX2RlYnVnX21vZGUsIGlzX2xpbnRfbW9kZT1UcnVlLAotICAgICAg
ICAgICAgdGVzdHNfYXJlX3ByZXNlbnQ9RmFsc2UsIG92ZXJyaWRlcz1vdmVycmlkZXNfc3RyKQor
ICAgICAgICAgICAgaXNfZGVidWdfbW9kZSwgaXNfbGludF9tb2RlPVRydWUsIG92ZXJyaWRlcz1v
dmVycmlkZXNfc3RyKQogICAgICAgICB0ZXN0c19kaXIgPSBzZWxmLmxheW91dF90ZXN0c19kaXIo
KQogICAgICAgICByZXR1cm4gW3NlbGYucmVsYXRpdmVfdGVzdF9maWxlbmFtZSh0ZXN0KQogICAg
ICAgICAgICAgICAgIGZvciB0ZXN0IGluIGV4cGVjdGF0aW9ucy5nZXRfdGVzdHNfd2l0aF9yZXN1
bHRfdHlwZSh0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQKV0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X3VuaXR0ZXN0LnB5CmluZGV4IDdhMDA1YjE3MDRlNTk2MzNhNzFiOGI1Njc1MDliYTI0NGRkMDk5
NmIuLjUxOGNkYjkyZGRjMDEzYjE0MzQ2MzhmMjhkZWY2MDNiYzc3ZWUyMTcgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
dW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQpAQCAtMTA5LDYgKzEwOSw4IEBAIGNsYXNzIENo
cm9taXVtRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQudGVzdF9l
eHBlY3RhdGlvbnMgPSBsYW1iZGE6ICIiIkJVR19URVNUIFNLSVAgOiBmYXN0L2pzL25vdC1nb29k
LmpzID0gVEVYVAogREVGRVIgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdvb2QuanMgPSBUSU1F
T1VUIFBBU1MiIiIKICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMgPSBs
YW1iZGE6ICcnCisgICAgICAgIHBvcnQudGVzdHMgPSBsYW1iZGEgcGF0aHM6IHNldCgpCisgICAg
ICAgIHBvcnQucGF0aF9leGlzdHMgPSBsYW1iZGEgdGVzdDogVHJ1ZQogCiAgICAgICAgIHNraXBw
ZWRfdGVzdHMgPSBwb3J0LnNraXBwZWRfbGF5b3V0X3Rlc3RzKGV4dHJhX3Rlc3RfZmlsZXM9W2Zh
a2VfdGVzdCwgXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJmYXN0L2pzL25vdC1nb29kLmpz
IiBpbiBza2lwcGVkX3Rlc3RzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weQppbmRleCAxYWYwMWFkOTA4MzNkMjEy
NzAyMjVjMTFjNWY0YmQ4MWY2MDMzYzdlLi5hNjUxYTZkOTk3NmVlNzhlOTdhZTU3YWU4NzliZDRh
MGQ5Y2EzNjIwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2RyeXJ1bi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2RyeXJ1bi5weQpAQCAtNDYsMzcgKzQ2LDEzIEBACiAKIGZyb20g
X19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKIAoraW1wb3J0IG9zCiBpbXBvcnQgc3lz
CiAKIGltcG9ydCBiYXNlCiBpbXBvcnQgZmFjdG9yeQogCiAKLWRlZiBfcmVhZF9maWxlKHBhdGgs
IG1vZGU9J3InKToKLSAgICAiIiJSZXR1cm4gdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSBhcyBhIHN0
cmluZy4KLQotICAgIFJldHVybnMgJycgaWYgYW55dGhpbmcgZ29lcyB3cm9uZywgaW5zdGVhZCBv
ZiB0aHJvd2luZyBhbiBJT0Vycm9yLgotCi0gICAgIiIiCi0gICAgY29udGVudHMgPSAnJwotICAg
IHRyeToKLSAgICAgICAgd2l0aCBvcGVuKHBhdGgsIG1vZGUpIGFzIGY6Ci0gICAgICAgICAgICBj
b250ZW50cyA9IGYucmVhZCgpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHBhc3MKLSAg
ICByZXR1cm4gY29udGVudHMKLQotCi1kZWYgX3dyaXRlX2ZpbGUocGF0aCwgY29udGVudHMsIG1v
ZGU9J3cnKToKLSAgICAiIiJXcml0ZSB0aGUgc3RyaW5nIHRvIHRoZSBzcGVjaWZpZWQgcGF0aC4K
LQotICAgIFdyaXRlcyBzaG91bGQgbmV2ZXIgZmFpbCwgc28gd2UgbWF5IHJhaXNlIElPRXJyb3Iu
Ci0KLSAgICAiIiIKLSAgICB3aXRoIG9wZW4ocGF0aCwgbW9kZSkgYXMgZjoKLSAgICAgICAgICAg
IGYud3JpdGUoY29udGVudHMpCi0KLQogY2xhc3MgRHJ5UnVuUG9ydChvYmplY3QpOgogICAgICIi
IkRyeVJ1biBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAKQEAgLTEz
MiwxOSArMTA4LDE2IEBAIGNsYXNzIERyeXJ1bkRyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgICAg
IHJldHVybiBOb25lCiAKICAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgdXJpLCB0aW1lb3V0bXMsIGlt
YWdlX2hhc2gpOgotICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl91cmlfdG9fdGVzdCh1cmkpCi0K
LSAgICAgICAgdGV4dF9maWxlbmFtZSA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfZmlsZW5hbWUodGVz
dF9uYW1lLCAnLnR4dCcpCi0gICAgICAgIHRleHRfb3V0cHV0ID0gX3JlYWRfZmlsZSh0ZXh0X2Zp
bGVuYW1lKQorICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnVyaV90b190ZXN0X25hbWUo
dXJpKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3Rz
X2RpcigpLCB0ZXN0X25hbWUpCisgICAgICAgIHRleHRfb3V0cHV0ID0gc2VsZi5fcG9ydC5leHBl
Y3RlZF90ZXh0KHBhdGgpCiAKICAgICAgICAgaWYgaW1hZ2VfaGFzaCBpcyBub3QgTm9uZToKLSAg
ICAgICAgICAgIGltYWdlX2ZpbGVuYW1lID0gc2VsZi5fcG9ydC5leHBlY3RlZF9maWxlbmFtZSh0
ZXN0X25hbWUsICcucG5nJykKLSAgICAgICAgICAgIGltYWdlID0gX3JlYWRfZmlsZShpbWFnZV9m
aWxlbmFtZSwgJ3JiJykKLSAgICAgICAgICAgIGlmIHNlbGYuX2ltYWdlX3BhdGg6Ci0gICAgICAg
ICAgICAgICAgX3dyaXRlX2ZpbGUoc2VsZi5faW1hZ2VfcGF0aCwgaW1hZ2UpCi0gICAgICAgICAg
ICBoYXNoX2ZpbGVuYW1lID0gc2VsZi5fcG9ydC5leHBlY3RlZF9maWxlbmFtZSh0ZXN0X25hbWUs
Ci0gICAgICAgICAgICAgICAgJy5jaGVja3N1bScpCi0gICAgICAgICAgICBoYXNoID0gX3JlYWRf
ZmlsZShoYXNoX2ZpbGVuYW1lKQorICAgICAgICAgICAgaW1hZ2UgPSBzZWxmLl9wb3J0LmV4cGVj
dGVkX2ltYWdlKHBhdGgpCisgICAgICAgICAgICBpZiBpbWFnZSBhbmQgc2VsZi5faW1hZ2VfcGF0
aDoKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5faW1hZ2VfcGF0aCwgJ3cnKSBhcyBm
OgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGltYWdlKQorICAgICAgICAgICAgaGFzaCA9
IHNlbGYuX3BvcnQuZXhwZWN0ZWRfY2hlY2tzdW0ocGF0aCkKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIGhhc2ggPSBOb25lCiAgICAgICAgIHJldHVybiAoRmFsc2UsIEZhbHNlLCBoYXNoLCB0
ZXh0X291dHB1dCwgTm9uZSkKQEAgLTE1NCwzOSArMTI3LDMgQEAgY2xhc3MgRHJ5cnVuRHJpdmVy
KGJhc2UuRHJpdmVyKToKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICBwYXNzCi0KLSAg
ICBkZWYgX3VyaV90b190ZXN0KHNlbGYsIHVyaSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgYmFz
ZSBsYXlvdXQgdGVzdCBuYW1lIGZvciBhIGdpdmVuIFVSSS4KLQotICAgICAgICBUaGlzIHJldHVy
bnMgdGhlIHRlc3QgbmFtZSBmb3IgYSBnaXZlbiBVUkksIGUuZy4sIGlmIHlvdSBwYXNzZWQgaW4K
LSAgICAgICAgImZpbGU6Ly8vc3JjL0xheW91dFRlc3RzL2Zhc3QvaHRtbC9rZXlnZW4uaHRtbCIg
aXQgd291bGQgcmV0dXJuCi0gICAgICAgICJmYXN0L2h0bWwva2V5Z2VuLmh0bWwiLgotCi0gICAg
ICAgICIiIgotICAgICAgICBpZiBub3Qgc2VsZi5fbGF5b3V0X3Rlc3RzX2RpcjoKLSAgICAgICAg
ICAgIHNlbGYuX2xheW91dF90ZXN0c19kaXIgPSBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIo
KQotICAgICAgICB0ZXN0ID0gdXJpCi0KLSAgICAgICAgaWYgdXJpLnN0YXJ0c3dpdGgoImZpbGU6
Ly8vIik6Ci0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAg
ICAgICAgICB0ZXN0ID0gdGVzdC5yZXBsYWNlKCdmaWxlOi8vLycsICcnKQotICAgICAgICAgICAg
ICAgIHRlc3QgPSB0ZXN0LnJlcGxhY2UoJy8nLCAnXFwnKQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICB0ZXN0ID0gdGVzdC5yZXBsYWNlKCdmaWxlOi8vJywgJycpCi0gICAgICAg
ICAgICByZXR1cm4gdGVzdAotICAgICAgICBlbGlmIHVyaS5zdGFydHN3aXRoKCJodHRwOi8vMTI3
LjAuMC4xOjg4ODAvIik6Ci0gICAgICAgICAgICAjIHdlYnNvY2tldCB0ZXN0cwotICAgICAgICAg
ICAgdGVzdCA9IHRlc3QucmVwbGFjZSgnaHR0cDovLzEyNy4wLjAuMTo4ODgwLycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xheW91dF90ZXN0c19kaXIgKyAnLycpCi0g
ICAgICAgICAgICByZXR1cm4gdGVzdAotICAgICAgICBlbGlmIHVyaS5zdGFydHN3aXRoKCJodHRw
Oi8vIik6Ci0gICAgICAgICAgICAjIHJlZ3VsYXIgSFRUUCB0ZXN0Ci0gICAgICAgICAgICB0ZXN0
ID0gdGVzdC5yZXBsYWNlKCdodHRwOi8vMTI3LjAuMC4xOjgwMDAvJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RzX2RpciArICcvaHR0cC90ZXN0cy8n
KQotICAgICAgICAgICAgcmV0dXJuIHRlc3QKLSAgICAgICAgZWxpZiB1cmkuc3RhcnRzd2l0aCgi
aHR0cHM6Ly8iKToKLSAgICAgICAgICAgIHRlc3QgPSB0ZXN0LnJlcGxhY2UoJ2h0dHBzOi8vMTI3
LjAuMC4xOjg0NDMvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbGF5
b3V0X3Rlc3RzX2RpciArICcvaHR0cC90ZXN0cy8nKQotICAgICAgICAgICAgcmV0dXJuIHRlc3QK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3Vu
a25vd24gdXJsIHR5cGU6ICVzJyAlIHVyaSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQpp
bmRleCAyZDY1MGY1MmEzMTNhMjU4NzYwZDgxZTNjN2VlYTA3YTAyMjcxNTcwLi40NzU5N2Q2N2Nj
MjVhNjM4YTlmNjQ1YTdiNWUwYmUyOWQ2NTYxNTVmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3Rj
YXNlLnB5CkBAIC02OCwxNCArNjgsMjAgQEAgY2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0LlRl
c3RDYXNlKToKIAogICAgICAgICBkaXIgPSBwb3J0LmxheW91dF90ZXN0c19kaXIoKQogICAgICAg
ICBmaWxlMSA9IG9zLnBhdGguam9pbihkaXIsICdmYXN0JywgJ2NzcycsICdidXR0b25fY2VudGVy
LnBuZycpCisgICAgICAgIGZoMSA9IGZpbGUoZmlsZTEpCisgICAgICAgIGNvbnRlbnRzMSA9IGZo
MS5yZWFkKCkKICAgICAgICAgZmlsZTIgPSBvcy5wYXRoLmpvaW4oZGlyLCAnZmFzdCcsICdjc3Mn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtb3ZlLXNob3J0aGFuZC1leHBlY3Rl
ZC5wbmcnKQorICAgICAgICBmaDIgPSBmaWxlKGZpbGUyKQorICAgICAgICBjb250ZW50czIgPSBm
aDIucmVhZCgpCiAgICAgICAgIHRtcGZpbGUgPSB0ZW1wZmlsZS5ta3RlbXAoKQogCi0gICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKGZpbGUxLCBmaWxlMSkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoZmlsZTEsIGZpbGUyKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShwb3J0LmRpZmZfaW1hZ2UoY29udGVudHMxLCBjb250ZW50czEpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5kaWZmX2ltYWdlKGNvbnRlbnRzMSwgY29udGVu
dHMyKSkKIAotICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5kaWZmX2ltYWdlKGZpbGUxLCBm
aWxlMiwgdG1wZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2Uo
Y29udGVudHMxLCBjb250ZW50czIsIHRtcGZpbGUpKQorICAgICAgICBmaDEuY2xvc2UoKQorICAg
ICAgICBmaDIuY2xvc2UoKQogICAgICAgICAjIEZJWE1FOiB0aGlzIG1heSBub3QgYmUgYmVpbmcg
d3JpdHRlbj8KICAgICAgICAgIyBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModG1wZmls
ZSkpCiAgICAgICAgICMgb3MucmVtb3ZlKHRtcGZpbGUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggYTNhMTZj
MzRhNWEyMjY2NzQ2YWY1ZTA4MGRkYzY0NTIwMTljY2Y0Ny4uZGQ4YWY2ODIxNjAyZjBlMDM3NTI1
ZDgyODliZGUxMDAyZmFmYTA0NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtMzEsMTcgKzMxLDEwMCBAQAog
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAogCiBpbXBvcnQgY29kZWNzCitp
bXBvcnQgZm5tYXRjaAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCiBpbXBv
cnQgYmFzZQogCiAKKyMgVGhpcyBzZXRzIGJhc2ljIGV4cGVjdGF0aW9ucyBmb3IgYSB0ZXN0LiBF
YWNoIGluZGl2aWR1YWwgZXhwZWN0YXRpb24KKyMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBrZXl3
b3JkIGFyZ3VtZW50IGluIFRlc3RMaXN0LmFkZCgpLgorY2xhc3MgVGVzdEluc3RhbmNlOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAg
ICAgICBzZWxmLmJhc2UgPSBuYW1lWyhuYW1lLnJmaW5kKCIvIikgKyAxKTpuYW1lLnJmaW5kKCIu
aHRtbCIpXQorICAgICAgICBzZWxmLmNyYXNoID0gRmFsc2UKKyAgICAgICAgc2VsZi5leGNlcHRp
b24gPSBGYWxzZQorICAgICAgICBzZWxmLmhhbmcgPSBGYWxzZQorICAgICAgICBzZWxmLmtleWJv
YXJkID0gRmFsc2UKKyAgICAgICAgc2VsZi5lcnJvciA9ICcnCisgICAgICAgIHNlbGYudGltZW91
dCA9IEZhbHNlCisgICAgICAgIHNlbGYuYWN0dWFsX3RleHQgPSBzZWxmLmJhc2UgKyAnLXR4dFxu
JworICAgICAgICBzZWxmLmFjdHVhbF9jaGVja3N1bSA9IHNlbGYuYmFzZSArICctY2hlY2tzdW1c
bicKKyAgICAgICAgc2VsZi5hY3R1YWxfaW1hZ2UgPSBzZWxmLmJhc2UgKyAnLXBuZ1xuJworICAg
ICAgICBzZWxmLmV4cGVjdGVkX3RleHQgPSBzZWxmLmFjdHVhbF90ZXh0CisgICAgICAgIHNlbGYu
ZXhwZWN0ZWRfY2hlY2tzdW0gPSBzZWxmLmFjdHVhbF9jaGVja3N1bQorICAgICAgICBzZWxmLmV4
cGVjdGVkX2ltYWdlID0gc2VsZi5hY3R1YWxfaW1hZ2UKKworCisjIFRoaXMgaXMgYW4gaW4tbWVt
b3J5IGxpc3Qgb2YgdGVzdHMsIHdoYXQgd2Ugd2FudCB0aGVtIHRvIHByb2R1Y2UsIGFuZAorIyB3
aGF0IHdlIHdhbnQgdG8gY2xhaW0gYXJlIHRoZSBleHBlY3RlZCByZXN1bHRzLgorY2xhc3MgVGVz
dExpc3Q6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQpOgorICAgICAgICBzZWxmLnBvcnQg
PSBwb3J0CisgICAgICAgIHNlbGYudGVzdHMgPSB7fQorCisgICAgZGVmIGFkZChzZWxmLCBuYW1l
LCAqKmt3YXJncyk6CisgICAgICAgIHRlc3QgPSBUZXN0SW5zdGFuY2UobmFtZSkKKyAgICAgICAg
Zm9yIGtleSwgdmFsdWUgaW4ga3dhcmdzLml0ZW1zKCk6CisgICAgICAgICAgICB0ZXN0Ll9fZGlj
dF9fW2tleV0gPSB2YWx1ZQorICAgICAgICBzZWxmLnRlc3RzW25hbWVdID0gdGVzdAorCisgICAg
ZGVmIGtleXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnRlc3RzLmtleXMoKQorCisgICAg
ZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKKyAgICAgICAgcmV0dXJuIGl0ZW0gaW4gc2Vs
Zi50ZXN0cworCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGl0ZW0pOgorICAgICAgICByZXR1
cm4gc2VsZi50ZXN0c1tpdGVtXQorCisKIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAg
IiIiVGVzdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgcG9ydF9uYW1lPU5vbmUsIG9wdGlvbnM9Tm9uZSk6CiAgICAgICAg
IGJhc2UuUG9ydC5fX2luaXRfXyhzZWxmLCBwb3J0X25hbWUsIG9wdGlvbnMpCisgICAgICAgIHRl
c3RzID0gVGVzdExpc3Qoc2VsZikKKyAgICAgICAgdGVzdHMuYWRkKCdwYXNzZXMvaW1hZ2UuaHRt
bCcpCisgICAgICAgIHRlc3RzLmFkZCgncGFzc2VzL3RleHQuaHRtbCcpCisgICAgICAgIHRlc3Rz
LmFkZCgnZmFpbHVyZXMvZXhwZWN0ZWQvY2hlY2tzdW0uaHRtbCcsCisgICAgICAgICAgICAgICAg
ICBhY3R1YWxfY2hlY2tzdW09J2NoZWNrc3VtX2ZhaWwtY2hlY2tzdW0nKQorICAgICAgICB0ZXN0
cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnLCBjcmFzaD1UcnVlKQorICAgICAg
ICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVkL2V4Y2VwdGlvbi5odG1sJywgZXhjZXB0aW9u
PVRydWUpCisgICAgICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1s
JywgdGltZW91dD1UcnVlKQorICAgICAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVkL2hh
bmcuaHRtbCcsIGhhbmc9VHJ1ZSkKKyAgICAgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9leHBlY3Rl
ZC9taXNzaW5nX3RleHQuaHRtbCcsCisgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXh0PU5v
bmUpCisgICAgICAgIHRlc3RzLmFkZCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCcsCisg
ICAgICAgICAgICAgICAgICBhY3R1YWxfaW1hZ2U9J2ltYWdlX2ZhaWwtcG5nJywKKyAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkX2ltYWdlPSdpbWFnZS1wbmcnKQorICAgICAgICB0ZXN0cy5hZGQo
J2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwnLAorICAgICAgICAgICAgICAg
ICAgYWN0dWFsX2NoZWNrc3VtPSdpbWFnZV9jaGVja3N1bV9mYWlsLWNoZWNrc3VtJywKKyAgICAg
ICAgICAgICAgICAgIGFjdHVhbF9pbWFnZT0naW1hZ2VfY2hlY2tzdW1fZmFpbC1wbmcnKQorICAg
ICAgICB0ZXN0cy5hZGQoJ2ZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwnLAorICAgICAg
ICAgICAgICAgICAga2V5Ym9hcmQ9VHJ1ZSkKKyAgICAgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9l
eHBlY3RlZC9taXNzaW5nX2NoZWNrLmh0bWwnLAorICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
Y2hlY2tzdW09Tm9uZSkKKyAgICAgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9leHBlY3RlZC9taXNz
aW5nX2ltYWdlLmh0bWwnLAorICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfaW1hZ2U9Tm9uZSkK
KyAgICAgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX3RleHQuaHRtbCcs
CisgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXh0PU5vbmUpCisgICAgICAgIHRlc3RzLmFk
ZCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywKKyAgICAgICAgICAgICAgICAgIGFjdHVh
bF90ZXh0PSd0ZXh0X2ZhaWwtcG5nJykKKyAgICAgICAgdGVzdHMuYWRkKCdmYWlsdXJlcy91bmV4
cGVjdGVkL3RleHQtaW1hZ2UtY2hlY2tzdW0uaHRtbCcsCisgICAgICAgICAgICAgICAgICBhY3R1
YWxfdGV4dD0ndGV4dC1pbWFnZS1jaGVja3N1bV9mYWlsLXR4dCcsCisgICAgICAgICAgICAgICAg
ICBhY3R1YWxfY2hlY2tzdW09J3RleHQtaW1hZ2UtY2hlY2tzdW1fZmFpbC1jaGVja3N1bScpCisg
ICAgICAgIHRlc3RzLmFkZCgnaHR0cC90ZXN0cy9wYXNzZXMvdGV4dC5odG1sJykKKyAgICAgICAg
dGVzdHMuYWRkKCdodHRwL3Rlc3RzL3NzbC90ZXh0Lmh0bWwnKQorICAgICAgICB0ZXN0cy5hZGQo
J3Bhc3Nlcy9lcnJvci5odG1sJywgZXJyb3I9J3N0dWZmIGdvaW5nIHRvIHN0ZGVycicpCisgICAg
ICAgIHRlc3RzLmFkZCgncGFzc2VzL2ltYWdlLmh0bWwnKQorICAgICAgICB0ZXN0cy5hZGQoJ3Bh
c3Nlcy9wbGF0Zm9ybV9pbWFnZS5odG1sJykKKyAgICAgICAgdGVzdHMuYWRkKCdwYXNzZXMvdGV4
dC5odG1sJykKKyAgICAgICAgdGVzdHMuYWRkKCd3ZWJzb2NrZXQvdGVzdHMvcGFzc2VzL3RleHQu
aHRtbCcpCisgICAgICAgIHNlbGYuX3Rlc3RzID0gdGVzdHMKIAogICAgIGRlZiBiYXNlbGluZV9w
YXRoKHNlbGYpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYubGF5b3V0X3Rlc3Rz
X2RpcigpLCAncGxhdGZvcm0nLApAQCAtNTMsMTIgKzEzNiw4IEBAIGNsYXNzIFRlc3RQb3J0KGJh
c2UuUG9ydCk6CiAgICAgZGVmIGNoZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApOgogICAgICAg
ICByZXR1cm4gVHJ1ZQogCi0gICAgZGVmIGRpZmZfaW1hZ2Uoc2VsZiwgZXhwZWN0ZWRfZmlsZW5h
bWUsIGFjdHVhbF9maWxlbmFtZSwKKyAgICBkZWYgZGlmZl9pbWFnZShzZWxmLCBleHBlY3RlZF9j
b250ZW50cywgYWN0dWFsX2NvbnRlbnRzLAogICAgICAgICAgICAgICAgICAgIGRpZmZfZmlsZW5h
bWU9Tm9uZSwgdG9sZXJhbmNlPTApOgotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGFjdHVhbF9m
aWxlbmFtZSwgInIiLCAidXRmLTgiKSBhcyBhY3R1YWxfZmg6Ci0gICAgICAgICAgICBhY3R1YWxf
Y29udGVudHMgPSBhY3R1YWxfZmgucmVhZCgpCi0gICAgICAgIHdpdGggY29kZWNzLm9wZW4oZXhw
ZWN0ZWRfZmlsZW5hbWUsICJyIiwgInV0Zi04IikgYXMgZXhwZWN0ZWRfZmg6Ci0gICAgICAgICAg
ICBleHBlY3RlZF9jb250ZW50cyA9IGV4cGVjdGVkX2ZoLnJlYWQoKQogICAgICAgICBkaWZmZWQg
PSBhY3R1YWxfY29udGVudHMgIT0gZXhwZWN0ZWRfY29udGVudHMKICAgICAgICAgaWYgZGlmZmVk
IGFuZCBkaWZmX2ZpbGVuYW1lOgogICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihkaWZmX2Zp
bGVuYW1lLCAidyIsICJ1dGYtOCIpIGFzIGRpZmZfZmg6CkBAIC02NiwyNCArMTQ1LDc5IEBAIGNs
YXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
ZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cykpCiAgICAgICAgIHJldHVybiBkaWZm
ZWQKIAorICAgIGRlZiBleHBlY3RlZF9jaGVja3N1bShzZWxmLCB0ZXN0KToKKyAgICAgICAgdGVz
dCA9IHNlbGYucmVsYXRpdmVfdGVzdF9maWxlbmFtZSh0ZXN0KQorICAgICAgICByZXR1cm4gc2Vs
Zi5fdGVzdHNbdGVzdF0uZXhwZWN0ZWRfY2hlY2tzdW0KKworICAgIGRlZiBleHBlY3RlZF9pbWFn
ZShzZWxmLCB0ZXN0KToKKyAgICAgICAgdGVzdCA9IHNlbGYucmVsYXRpdmVfdGVzdF9maWxlbmFt
ZSh0ZXN0KQorICAgICAgICByZXR1cm4gc2VsZi5fdGVzdHNbdGVzdF0uZXhwZWN0ZWRfaW1hZ2UK
KworICAgIGRlZiBleHBlY3RlZF90ZXh0KHNlbGYsIHRlc3QpOgorICAgICAgICB0ZXN0ID0gc2Vs
Zi5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3QpCisgICAgICAgIHRleHQgPSBzZWxmLl90ZXN0
c1t0ZXN0XS5leHBlY3RlZF90ZXh0CisgICAgICAgIGlmIG5vdCB0ZXh0OgorICAgICAgICAgICAg
dGV4dCA9ICcnCisgICAgICAgIHJldHVybiB0ZXh0CisKKyAgICBkZWYgdGVzdHMoc2VsZiwgcGF0
aHMpOgorICAgICAgICAjIFRlc3QgdGhlIGlkZWEgb2YgcG9ydC1zcGVjaWZpYyBvdmVycmlkZXMg
Zm9yIHRlc3QgbGlzdHMuIEFsc28KKyAgICAgICAgIyBrZWVwIGluIG1lbW9yeSB0byBzcGVlZCB1
cCB0aGUgdGVzdCBoYXJuZXNzLgorICAgICAgICBpZiBub3QgcGF0aHM6CisgICAgICAgICAgICBw
YXRocyA9IFsnKiddCisKKyAgICAgICAgbWF0Y2hlZF90ZXN0cyA9IFtdCisgICAgICAgIGZvciBw
IGluIHBhdGhzOgorICAgICAgICAgICAgaWYgc2VsZi5wYXRoX2lzZGlyKHApOgorICAgICAgICAg
ICAgICAgIG1hdGNoZWRfdGVzdHMuZXh0ZW5kKGZubWF0Y2guZmlsdGVyKHNlbGYuX3Rlc3RzLmtl
eXMoKSwgcCArICcqJykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1hdGNo
ZWRfdGVzdHMuZXh0ZW5kKGZubWF0Y2guZmlsdGVyKHNlbGYuX3Rlc3RzLmtleXMoKSwgcCkpCisg
ICAgICAgIGxheW91dF90ZXN0c19kaXIgPSBzZWxmLmxheW91dF90ZXN0c19kaXIoKQorICAgICAg
ICByZXR1cm4gc2V0KFtvcy5wYXRoLmpvaW4obGF5b3V0X3Rlc3RzX2RpciwgcCkgZm9yIHAgaW4g
bWF0Y2hlZF90ZXN0c10pCisKKyAgICBkZWYgcGF0aF9leGlzdHMoc2VsZiwgcGF0aCk6CisgICAg
ICAgICMgdXNlZCBieSB0ZXN0X2V4cGVjdGF0aW9ucy5weSBhbmQgcHJpbnRpbmcucHkKKyAgICAg
ICAgcnBhdGggPSBzZWxmLnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUocGF0aCkKKyAgICAgICAgaWYg
cnBhdGggaW4gc2VsZi5fdGVzdHM6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBp
ZiBzZWxmLnBhdGhfaXNkaXIocnBhdGgpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAg
ICAgaWYgcnBhdGguZW5kc3dpdGgoJy1leHBlY3RlZC50eHQnKToKKyAgICAgICAgICAgIHRlc3Qg
PSBycGF0aC5yZXBsYWNlKCctZXhwZWN0ZWQudHh0JywgJy5odG1sJykKKyAgICAgICAgICAgIHJl
dHVybiAodGVzdCBpbiBzZWxmLl90ZXN0cyBhbmQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
dGVzdHNbdGVzdF0uZXhwZWN0ZWRfdGV4dCkKKyAgICAgICAgaWYgcnBhdGguZW5kc3dpdGgoJy1l
eHBlY3RlZC5jaGVja3N1bScpOgorICAgICAgICAgICAgdGVzdCA9IHJwYXRoLnJlcGxhY2UoJy1l
eHBlY3RlZC5jaGVja3N1bScsICcuaHRtbCcpCisgICAgICAgICAgICByZXR1cm4gKHRlc3QgaW4g
c2VsZi5fdGVzdHMgYW5kCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RzW3Rlc3RdLmV4
cGVjdGVkX2NoZWNrc3VtKQorICAgICAgICBpZiBycGF0aC5lbmRzd2l0aCgnLWV4cGVjdGVkLnBu
ZycpOgorICAgICAgICAgICAgdGVzdCA9IHJwYXRoLnJlcGxhY2UoJy1leHBlY3RlZC5wbmcnLCAn
Lmh0bWwnKQorICAgICAgICAgICAgcmV0dXJuICh0ZXN0IGluIHNlbGYuX3Rlc3RzIGFuZAorICAg
ICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0c1t0ZXN0XS5leHBlY3RlZF9pbWFnZSkKKyAgICAg
ICAgcmV0dXJuIEZhbHNlCisKICAgICBkZWYgbGF5b3V0X3Rlc3RzX2RpcihzZWxmKToKICAgICAg
ICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdXZWJLaXRUb29scycsICdTY3Jp
cHRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3ZWJraXRw
eScsICdsYXlvdXRfdGVzdHMnLCAnZGF0YScpCiAKKyAgICBkZWYgcGF0aF9pc2RpcihzZWxmLCBw
YXRoKToKKyAgICAgICAgIyBVc2VkIGJ5IHRlc3RfZXhwZWN0YXRpb25zLnB5CisgICAgICAgICMK
KyAgICAgICAgIyBXZSBhc3N1bWUgdGhhdCBhIHBhdGggaXMgYSBkaXJlY3RvcnkgaWYgd2UgaGF2
ZSBhbnkgdGVzdHMgdGhhdAorICAgICAgICAjIHdob3NlIHByZWZpeCBtYXRjaGVzIHRoZSBwYXRo
IHBsdXMgYSBkaXJlY3RvcnkgbW9kaWZpZXIuCisgICAgICAgIGlmIHBhdGhbLTFdICE9ICcvJzoK
KyAgICAgICAgICAgIHBhdGggKz0gJy8nCisgICAgICAgIHJldHVybiBhbnkoW3Quc3RhcnRzd2l0
aChwYXRoKSBmb3IgdCBpbiBzZWxmLl90ZXN0cy5rZXlzKCldKQorCisgICAgZGVmIHRlc3RfZGly
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFsncGFzc2VzJywgJ2ZhaWx1cmVzJ10KKwogICAgIGRl
ZiBuYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQogCiAgICAgZGVmIG9wdGlv
bnMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9vcHRpb25zCiAKLSAgICBkZWYgc2tpcHBl
ZF9sYXlvdXRfdGVzdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbXQotCi0gICAgZGVmIHBhdGhf
dG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0
aF9mcm9tX3dlYmtpdF9iYXNlKCdXZWJLaXRUb29scycsICdTY3JpcHRzJywKLSAgICAgICAgICAg
ICd3ZWJraXRweScsICdsYXlvdXRfdGVzdHMnLCAnZGF0YScsICdwbGF0Zm9ybScsICd0ZXN0JywK
LSAgICAgICAgICAgICd0ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQotCiAgICAgZGVmIF9wYXRoX3Rv
X3dkaWZmKHNlbGYpOgogICAgICAgICByZXR1cm4gTm9uZQogCkBAIC0xMTYsOSArMjUwLDIxIEBA
IGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAKICAgICAgICAgQmFzaWNhbGx5IHRoaXMgc3Ry
aW5nIHNob3VsZCBjb250YWluIHRoZSBlcXVpdmFsZW50IG9mIGEKICAgICAgICAgdGVzdF9leHBl
Y3RhdGlvbnMgZmlsZS4gU2VlIHRlc3RfZXhwZWN0YXRpb25zLnB5IGZvciBtb3JlIGRldGFpbHMu
IiIiCi0gICAgICAgIGV4cGVjdGF0aW9uc19wYXRoID0gc2VsZi5wYXRoX3RvX3Rlc3RfZXhwZWN0
YXRpb25zX2ZpbGUoKQotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGV4cGVjdGF0aW9uc19wYXRo
LCAiciIsICJ1dGYtOCIpIGFzIGZpbGU6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkK
KyAgICAgICAgcmV0dXJuICIiIgorV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL2NoZWNrc3Vt
Lmh0bWwgPSBJTUFHRQorV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBD
UkFTSAorLy8gVGhpcyBvbmUgYWN0dWFsbHkgcGFzc2VzIGJlY2F1c2UgdGhlIGNoZWNrc3VtcyB3
aWxsIG1hdGNoLgorV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwgPSBQQVNT
CitXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCA9IElNQUdF
CitXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19jaGVjay5odG1sID0gTUlTU0lO
RyBQQVNTCitXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sID0g
TUlTU0lORyBQQVNTCitXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ190ZXh0Lmh0
bWwgPSBNSVNTSU5HIFBBU1MKK1dPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwg
PSBURVhUCitXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sID0gVElNRU9V
VAorV09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvaGFuZy5odG1sID0gVElNRU9VVAor
V09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IENSQVNICitX
T05URklYIFNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRtbCA9IENSQVNICisi
IiIKIAogICAgIGRlZiB0ZXN0X2Jhc2VfcGxhdGZvcm1fbmFtZXMoc2VsZik6CiAgICAgICAgIHJl
dHVybiAoJ21hYycsICd3aW4nKQpAQCAtMTQ5LDY4ICsyOTUsMjEgQEAgY2xhc3MgVGVzdERyaXZl
cihiYXNlLkRyaXZlcik6CiAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgcnVuX3Rlc3Qo
c2VsZiwgdXJpLCB0aW1lb3V0bXMsIGltYWdlX2hhc2gpOgotICAgICAgICBiYXNlbmFtZSA9IHVy
aVsodXJpLnJmaW5kKCIvIikgKyAxKTp1cmkucmZpbmQoIi5odG1sIildCi0KLSAgICAgICAgaWYg
J2Vycm9yJyBpbiBiYXNlbmFtZToKLSAgICAgICAgICAgIGVycm9yID0gYmFzZW5hbWUgKyAiX2Vy
cm9yXG4iCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBlcnJvciA9ICcnCi0gICAgICAgIGNo
ZWNrc3VtID0gTm9uZQotICAgICAgICAjIFRoZXJlIGFyZSBmb3VyIGN1cnJlbnRseSBzdXBwb3J0
ZWQgdHlwZXMgb2YgdGVzdHM6IHRleHQsIGltYWdlLAotICAgICAgICAjIGltYWdlIGhhc2ggKGNo
ZWNrc3VtKSwgYW5kIHN0ZGVyciBvdXRwdXQuIFRoZSBmYWtlIG91dHB1dAotICAgICAgICAjIGlz
IHRoZSBiYXNlbmFtZSBvZiB0aGUgZmlsZSArICItIiBwbHVzIHRoZSB0eXBlIG9mIHRlc3Qgb3V0
cHV0Ci0gICAgICAgICMgKG9yIGEgYmxhbmsgc3RyaW5nIGZvciBzdGRlcnIpLgotICAgICAgICAj
Ci0gICAgICAgICMgSWYgJ2ltYWdlJyBvciAnY2hlY2snIGFwcGVhcnMgaW4gdGhlIGJhc2VuYW1l
LCB3ZSBhc3N1bWUgdGhpcyBpcwotICAgICAgICAjIHNpbXVsYXRpbmcgYSBwaXhlbCB0ZXN0Lgot
ICAgICAgICAjCi0gICAgICAgICMgSWYgJ2ZhaWx1cmVzJyBhcHBlYXJzIGluIHRoZSBVUkksIHRo
ZW4gd2UgYXNzdW1lIHRoaXMgdGVzdCBzaG91bGQKLSAgICAgICAgIyBmYWlsLiBXaGljaCB0eXBl
IG9mIGZhaWx1cmVzIGFyZSBkZXRlcm1pbmVkIGJ5IHdoaWNoIHN0cmluZ3MgYXBwZWFyCi0gICAg
ICAgICMgaW4gdGhlIGJhc2VuYW1lIG9mIHRoZSB0ZXN0LiBGb3IgZmFpbHVyZXMgdGhhdCBwcm9k
dWNlIG91dHB1dHMsCi0gICAgICAgICMgd2UgY2hhbmdlIHRoZSBmYWtlIG91dHB1dCB0byBiYXNl
bmFtZSArICJfZmFpbGVkLSIuCi0gICAgICAgICMKLSAgICAgICAgIyBUaGUgZmFjdCB0aGF0IGVh
Y2ggdGVzdCBwcm9kdWNlcyAobW9yZSBvciBsZXNzKSB1bmlxdWUgb3V0cHV0IGRhdGEKLSAgICAg
ICAgIyB3aWxsIGFsbG93IHVzIHRvIHNlZSBpZiBhbnkgcmVzdWx0cyBnZXQgY3Jvc3NlZCBieSB0
aGUgcmVzdCBvZiB0aGUKLSAgICAgICAgIyBwcm9ncmFtLgotICAgICAgICBpZiAnZmFpbHVyZXMn
IGluIHVyaToKLSAgICAgICAgICAgIGlmICdrZXlib2FyZCcgaW4gYmFzZW5hbWU6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKLSAgICAgICAgICAgIGlmICdleGNlcHRp
b24nIGluIGJhc2VuYW1lOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2V4Y2Vw
dGlvbiBmcm9tICcgKyBiYXNlbmFtZSkKLQotICAgICAgICAgICAgY3Jhc2ggPSAnY3Jhc2gnIGlu
IGJhc2VuYW1lCi0gICAgICAgICAgICB0aW1lb3V0ID0gJ3RpbWVvdXQnIGluIGJhc2VuYW1lIG9y
ICdoYW5nJyBpbiBiYXNlbmFtZQotICAgICAgICAgICAgdGltZW91dCA9ICd0aW1lb3V0JyBpbiBi
YXNlbmFtZQotICAgICAgICAgICAgaWYgJ3RleHQnIGluIGJhc2VuYW1lOgotICAgICAgICAgICAg
ICAgIG91dHB1dCA9IGJhc2VuYW1lICsgJ19mYWlsZWQtdHh0XG4nCi0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIG91dHB1dCA9IGJhc2VuYW1lICsgJy10eHRcbicKLSAgICAgICAg
ICAgIGlmIHNlbGYuX3BvcnQub3B0aW9ucygpLnBpeGVsX3Rlc3RzOgotICAgICAgICAgICAgICAg
IGlmICgnaW1hZ2UnIGluIGJhc2VuYW1lIG9yICdjaGVjaycgaW4gYmFzZW5hbWUpOgotICAgICAg
ICAgICAgICAgICAgICBjaGVja3N1bSA9IGJhc2VuYW1lICsgIi1jaGVja3N1bVxuIgotCi0gICAg
ICAgICAgICAgICAgaWYgJ2ltYWdlJyBpbiBiYXNlbmFtZToKLSAgICAgICAgICAgICAgICAgICAg
d2l0aCBvcGVuKHNlbGYuX2ltYWdlX3BhdGgsICJ3IikgYXMgZjoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGYud3JpdGUoYmFzZW5hbWUgKyAiX2ZhaWxlZC1wbmdcbiIpCi0gICAgICAgICAgICAg
ICAgZWxpZiAnY2hlY2snIGluIGJhc2VuYW1lOgotICAgICAgICAgICAgICAgICAgICB3aXRoIG9w
ZW4oc2VsZi5faW1hZ2VfcGF0aCwgInciKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICAgICAg
Zi53cml0ZShiYXNlbmFtZSArICItcG5nXG4iKQotICAgICAgICAgICAgICAgIGlmICdjaGVja3N1
bScgaW4gYmFzZW5hbWU6Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtID0gYmFzZW5hbWUg
KyAiX2ZhaWxlZC1jaGVja3N1bVxuIgotCi0gICAgICAgICAgICBpZiAnaGFuZycgaW4gYmFzZW5h
bWU6Ci0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgoZmxvYXQodGltZW91dG1zKSAqIDQpIC8g
MTAwMC4wKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY3Jhc2ggPSBGYWxzZQotICAgICAg
ICAgICAgdGltZW91dCA9IEZhbHNlCi0gICAgICAgICAgICBvdXRwdXQgPSBiYXNlbmFtZSArICct
dHh0XG4nCi0gICAgICAgICAgICBpZiBzZWxmLl9wb3J0Lm9wdGlvbnMoKS5waXhlbF90ZXN0cyBh
bmQgKAotICAgICAgICAgICAgICAgICdpbWFnZScgaW4gYmFzZW5hbWUgb3IgJ2NoZWNrJyBpbiBi
YXNlbmFtZSk6Ci0gICAgICAgICAgICAgICAgY2hlY2tzdW0gPSBiYXNlbmFtZSArICctY2hlY2tz
dW1cbicKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5faW1hZ2VfcGF0aCwgInciKSBh
cyBmOgotICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGJhc2VuYW1lICsgIi1wbmciKQotCi0g
ICAgICAgIHJldHVybiAoY3Jhc2gsIHRpbWVvdXQsIGNoZWNrc3VtLCBvdXRwdXQsIGVycm9yKQor
ICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnVyaV90b190ZXN0X25hbWUodXJpKQorICAg
ICAgICB0ZXN0ID0gc2VsZi5fcG9ydC5fdGVzdHNbdGVzdF9uYW1lXQorICAgICAgICBpZiB0ZXN0
LmtleWJvYXJkOgorICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKKyAgICAgICAg
aWYgdGVzdC5leGNlcHRpb246CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdleGNlcHRp
b24gZnJvbSAnICsgdGVzdF9uYW1lKQorICAgICAgICBpZiB0ZXN0Lmhhbmc6CisgICAgICAgICAg
ICB0aW1lLnNsZWVwKChmbG9hdCh0aW1lb3V0bXMpICogNCkgLyAxMDAwLjApCisKKyAgICAgICAg
aWYgc2VsZi5fcG9ydC5vcHRpb25zKCkucGl4ZWxfdGVzdHMgYW5kIHRlc3QuYWN0dWFsX2ltYWdl
OgorICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuX2ltYWdlX3BhdGgsICd3JykgYXMgZmlsZToK
KyAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHRlc3QuYWN0dWFsX2ltYWdlKQorCisgICAgICAg
IHJldHVybiAodGVzdC5jcmFzaCwgdGVzdC50aW1lb3V0LCB0ZXN0LmFjdHVhbF9jaGVja3N1bSwK
KyAgICAgICAgICAgICAgICB0ZXN0LmFjdHVhbF90ZXh0LCB0ZXN0LmVycm9yKQogCiAgICAgZGVm
IHN0YXJ0KHNlbGYpOgogICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZpbGVzLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0X2ZpbGVz
LnB5CnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIFdlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmlsZXMucHkKcmVuYW1l
IHRvIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdF9m
aWxlcy5weQppbmRleCA4Zjc5NTA1ZTFjMzJjNDQwYzdiMGYxNjczMjk4NWE1N2IxMTlmZjIyLi4z
ZmEwZmIzNjRiYjMxOTYwMmU2MTlhZGY1ZGQ1MWQzMmIwZjU3YTUyIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0
X2ZpbGVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvdGVzdF9maWxlcy5weQpAQCAtMjcsMTEgKzI3LDExIEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi0iIiJUaGlzIG1vZHVsZSBpcyB1c2VkIHRvIGZpbmQgYWxsIG9mIHRo
ZSBsYXlvdXQgdGVzdCBmaWxlcyB1c2VkIGJ5IENocm9taXVtCi0oYWNyb3NzIGFsbCBwbGF0Zm9y
bXMpLiBJdCBleHBvc2VzIG9uZSBwdWJsaWMgZnVuY3Rpb24gLSBHYXRoZXJUZXN0RmlsZXMoKSAt
CisiIiJUaGlzIG1vZHVsZSBpcyB1c2VkIHRvIGZpbmQgYWxsIG9mIHRoZSBsYXlvdXQgdGVzdCBm
aWxlcyB1c2VkIGJ5CitydW4td2Via2l0LXRlc3RzLiBJdCBleHBvc2VzIG9uZSBwdWJsaWMgZnVu
Y3Rpb24gLSBmaW5kKCkgLQogd2hpY2ggdGFrZXMgYW4gb3B0aW9uYWwgbGlzdCBvZiBwYXRocy4g
SWYgYSBsaXN0IGlzIHBhc3NlZCBpbiwgdGhlIHJldHVybmVkCiBsaXN0IG9mIHRlc3QgZmlsZXMg
aXMgY29uc3RyYWluZWQgdG8gdGhvc2UgZm91bmQgdW5kZXIgdGhlIHBhdGhzIHBhc3NlZCBpbiwK
LWkuZS4gY2FsbGluZyBHYXRoZXJUZXN0RmlsZXMoWyJMYXlvdXRUZXN0cy9mYXN0Il0pIHdpbGwg
b25seSByZXR1cm4gZmlsZXMKK2kuZS4gY2FsbGluZyBmaW5kKFsiTGF5b3V0VGVzdHMvZmFzdCJd
KSB3aWxsIG9ubHkgcmV0dXJuIGZpbGVzCiB1bmRlciB0aGF0IGRpcmVjdG9yeS4iIiIKIAogaW1w
b3J0IGdsb2IKQEAgLTUxLDEyICs1MSwxMiBAQCBfc3VwcG9ydGVkX2ZpbGVfZXh0ZW5zaW9ucyA9
IHNldChbJy5odG1sJywgJy5zaHRtbCcsICcueG1sJywgJy54aHRtbCcsICcueGh0bWxtcAogX3Nr
aXBwZWRfZGlyZWN0b3JpZXMgPSBzZXQoWycuc3ZuJywgJ19zdm4nLCAncmVzb3VyY2VzJywgJ3Nj
cmlwdC10ZXN0cyddKQogCiAKLWRlZiBnYXRoZXJfdGVzdF9maWxlcyhwb3J0LCBwYXRocyk6Ci0g
ICAgIiIiR2VuZXJhdGUgYSBzZXQgb2YgdGVzdCBmaWxlcyBhbmQgcmV0dXJuIHRoZW0uCitkZWYg
ZmluZChwb3J0LCBwYXRocyk6CisgICAgIiIiRmluZHMgdGhlIHNldCBvZiB0ZXN0cyB1bmRlciBw
b3J0LmxheW91dF90ZXN0c19kaXIoKS4KIAogICAgIEFyZ3M6Ci0gICAgICBwYXRoczogYSBsaXN0
IG9mIGNvbW1hbmQgbGluZSBwYXRocyByZWxhdGl2ZSB0byB0aGUgd2Via2l0L3Rlc3RzCi0gICAg
ICAgICAgZGlyZWN0b3J5LiBnbG9iIHBhdHRlcm5zIGFyZSBvay4KKyAgICAgIHBhdGhzOiBhIGxp
c3Qgb2YgY29tbWFuZCBsaW5lIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBsYXlvdXRfdGVzdHNfZGly
KCkKKyAgICAgICAgICB0byBsaW1pdCB0aGUgc2VhcmNoIHRvLiBnbG9iIHBhdHRlcm5zIGFyZSBv
ay4KICAgICAiIiIKICAgICBnYXRoZXJfc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAgICAgcGF0
aHNfdG9fd2FsayA9IHNldCgpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3RfZmlsZXNfdW5pdHRlc3Qu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzM3ZWI5MjkyNmU4ZGY1NDIyYjcwOWI4YzEyNTIzZmI1MTI5YjNmNQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvdGVzdF9maWxlc191bml0dGVzdC5weQpAQCAtMCwwICsxLDY4IEBACisjIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0IGJhc2UKK2ltcG9y
dCB0ZXN0X2ZpbGVzCisKKworY2xhc3MgVGVzdEZpbGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CisgICAgZGVmIHRlc3RfZmluZF9ub19wYXRoc19zcGVjaWZpZWQoc2VsZik6CisgICAgICAgIHBv
cnQgPSBiYXNlLlBvcnQoKQorICAgICAgICBsYXlvdXRfdGVzdHNfZGlyID0gcG9ydC5sYXlvdXRf
dGVzdHNfZGlyKCkKKyAgICAgICAgcG9ydC5sYXlvdXRfdGVzdHNfZGlyID0gbGFtYmRhOiBvcy5w
YXRoLmpvaW4obGF5b3V0X3Rlc3RzX2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2Zhc3QnLCAnaHRtbCcpCisgICAgICAgIHRlc3RzID0g
dGVzdF9maWxlcy5maW5kKHBvcnQsIFtdKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRl
c3RzLCAwKQorCisgICAgZGVmIHRlc3RfZmluZF9vbmVfdGVzdChzZWxmKToKKyAgICAgICAgcG9y
dCA9IGJhc2UuUG9ydCgpCisgICAgICAgICMgVGhpcyBpcyBqdXN0IGEgdGVzdCBwaWNrZWQgYXQg
cmFuZG9tIGJ1dCBrbm93biB0byBleGlzdC4KKyAgICAgICAgdGVzdHMgPSB0ZXN0X2ZpbGVzLmZp
bmQocG9ydCwgWydmYXN0L2h0bWwva2V5Z2VuLmh0bWwnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4odGVzdHMpLCAxKQorCisgICAgZGVmIHRlc3RfZmluZF9nbG9iKHNlbGYpOgorICAg
ICAgICBwb3J0ID0gYmFzZS5Qb3J0KCkKKyAgICAgICAgdGVzdHMgPSB0ZXN0X2ZpbGVzLmZpbmQo
cG9ydCwgWydmYXN0L2h0bWwva2V5KiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0
ZXN0cyksIDEpCisKKyAgICBkZWYgdGVzdF9maW5kX3dpdGhfc2tpcHBlZF9kaXJlY3Rvcmllcyhz
ZWxmKToKKyAgICAgICAgcG9ydCA9IGJhc2UuUG9ydCgpCisgICAgICAgIHRlc3RzID0gcG9ydC50
ZXN0cygndXNlcnNjcmlwdHMnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3VzZXJzY3JpcHRz
L3Jlc291cmNlcy9mcmFtZTEuaHRtbCcgbm90IGluIHRlc3RzKQorCisgICAgZGVmIHRlc3RfZmlu
ZF93aXRoX3NraXBwZWRfZGlyZWN0b3JpZXNfMihzZWxmKToKKyAgICAgICAgcG9ydCA9IGJhc2Uu
UG9ydCgpCisgICAgICAgIHRlc3RzID0gdGVzdF9maWxlcy5maW5kKHBvcnQsIFsndXNlcnNjcmlw
dHMvcmVzb3VyY2VzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHMsIHNldChbXSkp
CisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
d2Via2l0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93ZWJraXQucHkKaW5kZXggYjA4NWNlYjdlNjhmYzZiZGZjMjViZWEyYWFmYWU4YWI4YmM5MmRi
OC4uZWYyMWRiZmE2OWMwNWRmNzY5MmU3NDdkZmI5MzA3ZjVmOTc0MmJhMiAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJr
aXQucHkKQEAgLTExOSw3ICsxMTksNyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAg
ICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgIGRlZiBk
aWZmX2ltYWdlKHNlbGYsIGV4cGVjdGVkX2ZpbGVuYW1lLCBhY3R1YWxfZmlsZW5hbWUsCisgICAg
ZGVmIGRpZmZfaW1hZ2Uoc2VsZiwgZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywK
ICAgICAgICAgICAgICAgICAgICBkaWZmX2ZpbGVuYW1lPU5vbmUsIHRvbGVyYW5jZT0wLjEpOgog
ICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgdHdvIGZpbGVzIGFyZSBkaWZmZXJlbnQuIEFs
c28gd3JpdGUgYSBkZWx0YQogICAgICAgICBpbWFnZSBvZiB0aGUgdHdvIGltYWdlcyBpbnRvIHxk
aWZmX2ZpbGVuYW1lfCBpZiBpdCBpcyBub3QgTm9uZS4iIiIKQEAgLTEyOCwzMSArMTI4LDI0IEBA
IGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgIyBwYXJhbWV0ZXIsIG9yIG1h
a2UgaXQgZ28gYXdheSBhbmQgYWx3YXlzIHVzZSBleGFjdCBtYXRjaGVzLgogCiAgICAgICAgICMg
SGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSB0ZXN0IGRpZG4ndCBhY3R1YWxseSBnZW5lcmF0ZSBh
biBpbWFnZS4KLSAgICAgICAgYWN0dWFsX2xlbmd0aCA9IG9zLnN0YXQoYWN0dWFsX2ZpbGVuYW1l
KS5zdF9zaXplCi0gICAgICAgIGlmIGFjdHVhbF9sZW5ndGggPT0gMDoKLSAgICAgICAgICAgIGlm
IGRpZmZfZmlsZW5hbWU6Ci0gICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKGFjdHVhbF9m
aWxlbmFtZSwgZXhwZWN0ZWRfZmlsZW5hbWUpCisgICAgICAgIGlmIG5vdCBhY3R1YWxfY29udGVu
dHM6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgICAgIHNwID0gc2VsZi5fZGlmZl9p
bWFnZV9yZXF1ZXN0KGV4cGVjdGVkX2ZpbGVuYW1lLCBhY3R1YWxfZmlsZW5hbWUsIHRvbGVyYW5j
ZSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2RpZmZfaW1hZ2VfcmVwbHkoc3AsIGV4cGVjdGVkX2Zp
bGVuYW1lLCBkaWZmX2ZpbGVuYW1lKQorICAgICAgICBzcCA9IHNlbGYuX2RpZmZfaW1hZ2VfcmVx
dWVzdChleHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRlbnRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0b2xlcmFuY2UpCisgICAgICAgIHJldHVybiBzZWxmLl9k
aWZmX2ltYWdlX3JlcGx5KHNwLCBkaWZmX2ZpbGVuYW1lKQogCi0gICAgZGVmIF9kaWZmX2ltYWdl
X3JlcXVlc3Qoc2VsZiwgZXhwZWN0ZWRfZmlsZW5hbWUsIGFjdHVhbF9maWxlbmFtZSwgdG9sZXJh
bmNlKToKKyAgICBkZWYgX2RpZmZfaW1hZ2VfcmVxdWVzdChzZWxmLCBleHBlY3RlZF9jb250ZW50
cywgYWN0dWFsX2NvbnRlbnRzLCB0b2xlcmFuY2UpOgogICAgICAgICBjb21tYW5kID0gW3NlbGYu
X3BhdGhfdG9faW1hZ2VfZGlmZigpLCAnLS10b2xlcmFuY2UnLCBzdHIodG9sZXJhbmNlKV0KICAg
ICAgICAgc3AgPSBzZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzKHNlbGYsICdJbWFnZURpZmYn
LCBjb21tYW5kKQogCi0gICAgICAgIGFjdHVhbF9sZW5ndGggPSBvcy5zdGF0KGFjdHVhbF9maWxl
bmFtZSkuc3Rfc2l6ZQotICAgICAgICB3aXRoIG9wZW4oYWN0dWFsX2ZpbGVuYW1lKSBhcyBmaWxl
OgotICAgICAgICAgICAgYWN0dWFsX2ZpbGUgPSBmaWxlLnJlYWQoKQotICAgICAgICBleHBlY3Rl
ZF9sZW5ndGggPSBvcy5zdGF0KGV4cGVjdGVkX2ZpbGVuYW1lKS5zdF9zaXplCi0gICAgICAgIHdp
dGggb3BlbihleHBlY3RlZF9maWxlbmFtZSkgYXMgZmlsZToKLSAgICAgICAgICAgIGV4cGVjdGVk
X2ZpbGUgPSBmaWxlLnJlYWQoKQogICAgICAgICBzcC53cml0ZSgnQ29udGVudC1MZW5ndGg6ICVk
XG4lc0NvbnRlbnQtTGVuZ3RoOiAlZFxuJXMnICUKLSAgICAgICAgICAgICAgICAgKGFjdHVhbF9s
ZW5ndGgsIGFjdHVhbF9maWxlLCBleHBlY3RlZF9sZW5ndGgsIGV4cGVjdGVkX2ZpbGUpKQorICAg
ICAgICAgICAgICAgICAobGVuKGFjdHVhbF9jb250ZW50cyksIGFjdHVhbF9jb250ZW50cywKKyAg
ICAgICAgICAgICAgICAgIGxlbihleHBlY3RlZF9jb250ZW50cyksIGV4cGVjdGVkX2NvbnRlbnRz
KSkKIAogICAgICAgICByZXR1cm4gc3AKIAotICAgIGRlZiBfZGlmZl9pbWFnZV9yZXBseShzZWxm
LCBzcCwgZXhwZWN0ZWRfZmlsZW5hbWUsIGRpZmZfZmlsZW5hbWUpOgorICAgIGRlZiBfZGlmZl9p
bWFnZV9yZXBseShzZWxmLCBzcCwgZGlmZl9maWxlbmFtZSk6CiAgICAgICAgIHRpbWVvdXQgPSAy
LjAKICAgICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSArIHRpbWVvdXQKICAgICAgICAgb3V0
cHV0ID0gc3AucmVhZF9saW5lKHRpbWVvdXQpCkBAIC0xNzgsNyArMTcxLDcgQEAgY2xhc3MgV2Vi
S2l0UG9ydChiYXNlLlBvcnQpOgogICAgICAgICAgICAgd2l0aCBvcGVuKGRpZmZfZmlsZW5hbWUs
ICd3JykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKG91dHB1dCkKICAgICAg
ICAgZWxpZiBzcC50aW1lZF9vdXQ6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCJJbWFnZURpZmYg
dGltZWQgb3V0IG9uICVzIiAlIGV4cGVjdGVkX2ZpbGVuYW1lKQorICAgICAgICAgICAgX2xvZy5l
cnJvcigiSW1hZ2VEaWZmIHRpbWVkIG91dCIpCiAgICAgICAgIGVsaWYgc3AuY3Jhc2hlZDoKICAg
ICAgICAgICAgIF9sb2cuZXJyb3IoIkltYWdlRGlmZiBjcmFzaGVkIikKICAgICAgICAgc3Auc3Rv
cCgpCkBAIC0xOTQsOSArMTg3LDggQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogICAg
ICAgICBwYXNzCiAKICAgICBkZWYgc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmLCByZXN1bHRz
X2ZpbGVuYW1lKToKLSAgICAgICAgdXJpID0gc2VsZi5maWxlbmFtZV90b191cmkocmVzdWx0c19m
aWxlbmFtZSkKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIG9wZW4gcmVzdWx0cyBpbiB0aGUg
dmVyc2lvbiBvZiBXZWJLaXQgd2UgYnVpbHQuCi0gICAgICAgIHdlYmJyb3dzZXIub3Blbih1cmks
IG5ldz0xKQorICAgICAgICB3ZWJicm93c2VyLm9wZW4ocmVzdWx0c19maWxlbmFtZSwgbmV3PTEp
CiAKICAgICBkZWYgY3JlYXRlX2RyaXZlcihzZWxmLCBpbWFnZV9wYXRoLCBvcHRpb25zKToKICAg
ICAgICAgcmV0dXJuIFdlYktpdERyaXZlcihzZWxmLCBpbWFnZV9wYXRoLCBvcHRpb25zLCBleGVj
dXRpdmU9c2VsZi5fZXhlY3V0aXZlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0cy5weQppbmRleCAzYTlmOTIzYTA1NjI5NzUyYTQ5YjgzYTI1Yjk4
MTEzMTY1MDU3Yjg3Li5hYzNkZmRlYmRkNmJjMTRmYTAzNTI4MmUzOTJiMWRmYzdjZDJhYzVjIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJh
c2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5w
eQpAQCAtNTE4LDYgKzUxOCwxMCBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAgICAg
ICAgICAgICAgIGZhbGxiYWNrX2Z1bGxwYXRoID0gb3MucGF0aC5ub3JtcGF0aCgKICAgICAgICAg
ICAgICAgICAgICAgb3MucGF0aC5qb2luKGZhbGxiYWNrX2RpciwgZmFsbGJhY2tfZmlsZSkpCiAg
ICAgICAgICAgICAgICAgaWYgZmFsbGJhY2tfZnVsbHBhdGgubG93ZXIoKSAhPSBiYXNlbGluZV9w
YXRoLmxvd2VyKCk6CisgICAgICAgICAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4oZmlsZTEs
ICJyIiwgInV0ZjgiKSBhcyBmaWxlX2hhbmRsZTE6CisgICAgICAgICAgICAgICAgICAgICAgICBv
dXRwdXQxID0gZmlsZV9oYW5kbGUxLnJlYWQoKQorICAgICAgICAgICAgICAgICAgICB3aXRoIGNv
ZGVjcy5vcGVuKGZpbGUyLCAiciIsICJ1dGY4IikgYXMgZmlsZV9oYW5kbGUyOgorICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0cHV0MiA9IGZpbGVfaGFuZGxlMi5yZWFkKCkKICAgICAgICAgICAg
ICAgICAgICAgaWYgbm90IHNlbGYuX2RpZmZfYmFzZWxpbmVzKG5ld19iYXNlbGluZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrX2Z1bGxw
YXRoKToKICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnICBGb3VuZCBzYW1lIGJh
c2VsaW5lIGF0ICVzJywKQEAgLTUyOCwzMSArNTMyLDIwIEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9i
amVjdCk6CiAKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgX2RpZmZfYmFzZWxpbmVz
KHNlbGYsIGZpbGUxLCBmaWxlMik6CisgICAgZGVmIF9kaWZmX2Jhc2VsaW5lcyhzZWxmLCBvdXRw
dXQxLCBvdXRwdXQyLCBpc19pbWFnZSk6CiAgICAgICAgICIiIkNoZWNrIHdoZXRoZXIgdHdvIGJh
c2VsaW5lcyBhcmUgZGlmZmVyZW50LgogCiAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZmlsZTEs
IGZpbGUyOiBmdWxsIHBhdGhzIG9mIHRoZSBiYXNlbGluZXMgdG8gY29tcGFyZS4KKyAgICAgICAg
ICBvdXRwdXQxLCBvdXRwdXQyOiBjb250ZW50cyBvZiB0aGUgYmFzZWxpbmVzIHRvIGNvbXBhcmUu
CiAKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICBUcnVlIGlmIHR3byBmaWxlcyBhcmUgZGlm
ZmVyZW50IG9yIGhhdmUgZGlmZmVyZW50IGV4dGVuc2lvbnMuCiAgICAgICAgICAgRmFsc2Ugb3Ro
ZXJ3aXNlLgogICAgICAgICAiIiIKIAotICAgICAgICBleHQxID0gb3MucGF0aC5zcGxpdGV4dChm
aWxlMSlbMV0udXBwZXIoKQotICAgICAgICBleHQyID0gb3MucGF0aC5zcGxpdGV4dChmaWxlMilb
MV0udXBwZXIoKQotICAgICAgICBpZiBleHQxICE9IGV4dDI6Ci0gICAgICAgICAgICBfbG9nLndh
cm4oJ0ZpbGVzIHRvIGNvbXBhcmUgaGF2ZSBkaWZmZXJlbnQgZXh0LiAnCi0gICAgICAgICAgICAg
ICAgICAgICAgJ0ZpbGUxOiAlczsgRmlsZTI6ICVzJywgZmlsZTEsIGZpbGUyKQotICAgICAgICAg
ICAgcmV0dXJuIFRydWUKLQotICAgICAgICBpZiBleHQxID09ICcuUE5HJzoKLSAgICAgICAgICAg
IHJldHVybiBzZWxmLl9wb3J0LmRpZmZfaW1hZ2UoZmlsZTEsIGZpbGUyKQorICAgICAgICBpZiBp
c19pbWFnZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3J0LmRpZmZfaW1hZ2Uob3V0cHV0
MSwgb3V0cHV0MikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4o
ZmlsZTEsICJyIiwgInV0ZjgiKSBhcyBmaWxlX2hhbmRsZTE6Ci0gICAgICAgICAgICAgICAgb3V0
cHV0MSA9IGZpbGVfaGFuZGxlMS5yZWFkKCkKLSAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4o
ZmlsZTIsICJyIiwgInV0ZjgiKSBhcyBmaWxlX2hhbmRsZTI6Ci0gICAgICAgICAgICAgICAgb3V0
cHV0MiA9IGZpbGVfaGFuZGxlMi5yZWFkKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3J0
LmNvbXBhcmVfdGV4dChvdXRwdXQxLCBvdXRwdXQyKQogCiAgICAgZGVmIF9kZWxldGVfYmFzZWxp
bmUoc2VsZiwgZmlsZW5hbWUpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRl
c3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2Vs
aW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQppbmRleCBkYmIyYjkxY2FmMTBl
YThjYTZlNTFhMGM2YjMwM2U3ZGM3NTA1NDcyLi45YmEzZDZiZDM3YWQ0MmQ4MTk4OTc4MzY2ZDYw
ZjdiZjVkM2FkMTY3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5l
X2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAtMTAzLDE1ICsxMDMsMjAgQEAg
Y2xhc3MgVGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0
X2RpZmZfYmFzZWxpbmVzX3R4dChzZWxmKToKICAgICAgICAgcmViYXNlbGluZXIgPSBzZWxmLm1h
a2VfcmViYXNlbGluZXIoKQotICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHJlYmFzZWxpbmVy
Ll9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InBhc3NlcyIsICJ0ZXh0LWV4cGVjdGVkLnR4dCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
cmViYXNlbGluZXIuX2RpZmZfYmFzZWxpbmVzKHBhdGgsIHBhdGgpKQorICAgICAgICBvdXRwdXQg
PSByZWJhc2VsaW5lci5fcG9ydC5leHBlY3RlZF90ZXh0KAorICAgICAgICAgICAgb3MucGF0aC5q
b2luKHJlYmFzZWxpbmVyLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAncGFzc2VzL3RleHQuaHRtbCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KHJlYmFzZWxpbmVyLl9kaWZmX2Jhc2VsaW5lcyhvdXRwdXQsIG91dHB1dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaW1hZ2U9RmFsc2Up
KQogCiAgICAgZGVmIHRlc3RfZGlmZl9iYXNlbGluZXNfcG5nKHNlbGYpOgorICAgICAgICByZXR1
cm4KICAgICAgICAgcmViYXNlbGluZXIgPSBzZWxmLm1ha2VfcmViYXNlbGluZXIoKQotICAgICAg
ICBwYXRoID0gb3MucGF0aC5qb2luKHJlYmFzZWxpbmVyLl9wb3J0LmxheW91dF90ZXN0c19kaXIo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc2VzIiwgImltYWdlLWV4cGVjdGVk
LnBuZyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmViYXNlbGluZXIuX2RpZmZfYmFzZWxp
bmVzKHBhdGgsIHBhdGgpKQorICAgICAgICBpbWFnZSA9IHJlYmFzZWxpbmVyLl9wb3J0LmV4cGVj
dGVkX2ltYWdlKAorICAgICAgICAgICAgb3MucGF0aC5qb2luKHJlYmFzZWxpbmVyLl9wb3J0Lmxh
eW91dF90ZXN0c19kaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncGFzc2VzL2ltYWdl
Lmh0bWwnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZWJhc2VsaW5lci5fZGlmZl9iYXNl
bGluZXMoaW1hZ2UsIGltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpc19pbWFnZT1UcnVlKSkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4
IDJlMmRhNmQ1ODczNzcxODBjNWJmYmQxNzQ4ZGI4NTk0ZWZhYWEyMjUuLjljMmRhODA0NTg4ZWVh
ZmQ3MjhiZWY5YzY3NmQ0MDIzMmQ2N2M3ZTcgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpA
QCAtNjgsNyArNjgsNiBAQCBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCBqc29uX2xheW91dF9y
ZXN1bHRzX2dlbmVyYXRvcgogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgcHJpbnRpbmcKIGZy
b20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIGxheW91dF9w
YWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCi1mcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0
ZXN0X2ZpbGVzCiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X3Jlc3VsdHNfdXBsb2Fk
ZXIKIGZyb20gdGVzdF90eXBlcyBpbXBvcnQgaW1hZ2VfZGlmZgogZnJvbSB0ZXN0X3R5cGVzIGlt
cG9ydCB0ZXh0X2RpZmYKQEAgLTk2LDI4ICs5NSwyMCBAQCBjbGFzcyBUZXN0SW5mbzoKICAgICAg
ICAgICB0aW1lb3V0OiBUaW1lb3V0IGZvciBydW5uaW5nIHRoZSB0ZXN0IGluIFRlc3RTaGVsbC4K
ICAgICAgICAgICAiIiIKICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCisgICAgICAg
IHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYudXJpID0gcG9ydC5maWxlbmFtZV90b191
cmkoZmlsZW5hbWUpCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKLSAgICAgICAgIyBG
SVhNRTogQ29uZnVzaW5nIHRoYXQgdGhlIGZpbGUgaXMgLmNoZWNrc3VtIGFuZCB3ZSBjYWxsIGl0
ICJoYXNoIgotICAgICAgICBzZWxmLl9leHBlY3RlZF9oYXNoX3BhdGggPSBwb3J0LmV4cGVjdGVk
X2ZpbGVuYW1lKGZpbGVuYW1lLCAnLmNoZWNrc3VtJykKLSAgICAgICAgc2VsZi5faGF2ZV9yZWFk
X2V4cGVjdGVkX2hhc2ggPSBGYWxzZQotICAgICAgICBzZWxmLl9pbWFnZV9oYXNoID0gTm9uZQot
Ci0gICAgZGVmIF9yZWFkX2ltYWdlX2hhc2goc2VsZik6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRo
LmV4aXN0cyhzZWxmLl9leHBlY3RlZF9oYXNoX3BhdGgpOgotICAgICAgICAgICAgcmV0dXJuIE5v
bmUKLQotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHNlbGYuX2V4cGVjdGVkX2hhc2hfcGF0aCwg
InIiLCAiYXNjaWkiKSBhcyBoYXNoX2ZpbGU6Ci0gICAgICAgICAgICByZXR1cm4gaGFzaF9maWxl
LnJlYWQoKQorICAgICAgICBzZWxmLl9oYXZlX3JlYWRfZXhwZWN0ZWRfY2hlY2tzdW0gPSBGYWxz
ZQorICAgICAgICBzZWxmLl9pbWFnZV9jaGVja3N1bSA9IE5vbmUKIAogICAgIGRlZiBpbWFnZV9o
YXNoKHNlbGYpOgogICAgICAgICAjIFJlYWQgdGhlIGltYWdlX2hhc2ggbGF6aWx5IHRvIHJlZHVj
ZSBzdGFydHVwIHRpbWUuCiAgICAgICAgICMgVGhpcyBjbGFzcyBpcyBhY2Nlc3NlZCBhY3Jvc3Mg
dGhyZWFkcywgYnV0IG9ubHkgb25lIHRocmVhZCBzaG91bGQKICAgICAgICAgIyBldmVyIGJlIGRl
YWxpbmcgd2l0aCBhbnkgZ2l2ZW4gVGVzdEluZm8gc28gbm8gbG9ja2luZyBpcyBuZWVkZWQuCi0g
ICAgICAgIGlmIG5vdCBzZWxmLl9oYXZlX3JlYWRfZXhwZWN0ZWRfaGFzaDoKLSAgICAgICAgICAg
IHNlbGYuX2hhdmVfcmVhZF9leHBlY3RlZF9oYXNoID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi5f
aW1hZ2VfaGFzaCA9IHNlbGYuX3JlYWRfaW1hZ2VfaGFzaCgpCi0gICAgICAgIHJldHVybiBzZWxm
Ll9pbWFnZV9oYXNoCisgICAgICAgIGlmIG5vdCBzZWxmLl9oYXZlX3JlYWRfZXhwZWN0ZWRfY2hl
Y2tzdW06CisgICAgICAgICAgICBzZWxmLl9oYXZlX3JlYWRfZXhwZWN0ZWRfY2hlY2tzdW0gPSBU
cnVlCisgICAgICAgICAgICBzZWxmLl9pbWFnZV9jaGVja3N1bSA9IHNlbGYuX3BvcnQuZXhwZWN0
ZWRfY2hlY2tzdW0oc2VsZi5maWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ltYWdlX2No
ZWNrc3VtCiAKIAogY2xhc3MgUmVzdWx0U3VtbWFyeShvYmplY3QpOgpAQCAtMjkyLDcgKzI4Myw3
IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIHBhdGhzICs9IGxhc3RfdW5leHBlY3RlZF9y
ZXN1bHRzCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudGVzdF9saXN0OgogICAgICAgICAgICAg
cGF0aHMgKz0gcmVhZF90ZXN0X2ZpbGVzKHNlbGYuX29wdGlvbnMudGVzdF9saXN0KQotICAgICAg
ICBzZWxmLl90ZXN0X2ZpbGVzID0gdGVzdF9maWxlcy5nYXRoZXJfdGVzdF9maWxlcyhzZWxmLl9w
b3J0LCBwYXRocykKKyAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNlbGYuX3BvcnQudGVzdHMo
cGF0aHMpCiAKICAgICBkZWYgbGludChzZWxmKToKICAgICAgICAgIyBDcmVhdGluZyB0aGUgZXhw
ZWNhdGlvbnMgZm9yIGVhY2ggcGxhdGZvcm0vY29uZmlndXJhdGlvbiBwYWlyIGRvZXMKQEAgLTMy
MSw3ICszMTIsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAgICAgc2VsZi5fZXhwZWN0
YXRpb25zID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucygKICAgICAgICAgICAg
ICAgICBzZWxmLl9wb3J0LCB0ZXN0X2ZpbGVzLCBleHBlY3RhdGlvbnNfc3RyLCB0ZXN0X3BsYXRm
b3JtX25hbWUsCiAgICAgICAgICAgICAgICAgaXNfZGVidWdfbW9kZSwgc2VsZi5fb3B0aW9ucy5s
aW50X3Rlc3RfZmlsZXMsCi0gICAgICAgICAgICAgICAgdGVzdHNfYXJlX3ByZXNlbnQ9VHJ1ZSwg
b3ZlcnJpZGVzPW92ZXJyaWRlc19zdHIpCisgICAgICAgICAgICAgICAgb3ZlcnJpZGVzPW92ZXJy
aWRlc19zdHIpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0YXRpb25zCiAgICAgICAg
IGV4Y2VwdCBTeW50YXhFcnJvciwgZXJyOgogICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5s
aW50X3Rlc3RfZmlsZXM6CkBAIC04NzUsNyArODY2LDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoIkNsb2JiZXJpbmcgb2xkIHJlc3VsdHMg
aW4gJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9u
cy5yZXN1bHRzX2RpcmVjdG9yeSkKICAgICAgICAgbGF5b3V0X3Rlc3RzX2RpciA9IHNlbGYuX3Bv
cnQubGF5b3V0X3Rlc3RzX2RpcigpCi0gICAgICAgIHBvc3NpYmxlX2RpcnMgPSBvcy5saXN0ZGly
KGxheW91dF90ZXN0c19kaXIpCisgICAgICAgIHBvc3NpYmxlX2RpcnMgPSBzZWxmLl9wb3J0LnRl
c3RfZGlycygpCiAgICAgICAgIGZvciBkaXJuYW1lIGluIHBvc3NpYmxlX2RpcnM6CiAgICAgICAg
ICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihsYXlvdXRfdGVzdHNfZGlyLCBkaXJu
YW1lKSk6CiAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShvcy5wYXRoLmpvaW4oc2VsZi5f
b3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
X3VuaXR0ZXN0LnB5CmluZGV4IGFhOTY5NjI3MmQ5YTg3OGU2YTliOTZhNDQyYTlkNWEzYmZhOTk5
NDQuLmUzOTE0ZTg1YjYzZDQ0NzkyZWY1NWM3NWRlOTNkMmYzNmFhOGM3YTUgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAtNzcsNyArNzcsNyBAQCBkZWYg
bG9nZ2luZ19ydW4oYXJncz1bXSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UpOgogICAgIG5ld19hcmdz
LmV4dGVuZChhcmdzKQogICAgIGlmIG5vdCB0ZXN0c19pbmNsdWRlZDoKICAgICAgICAgbmV3X2Fy
Z3MuZXh0ZW5kKFsncGFzc2VzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnaHR0cC90ZXN0
cycKKyAgICAgICAgICAgICAgICAgICAgICAgICAnaHR0cC90ZXN0cycsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3dlYnNvY2tldC90ZXN0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
J2ZhaWx1cmVzL2V4cGVjdGVkLyonXSkKICAgICBvcHRpb25zLCBwYXJzZWRfYXJncyA9IHJ1bl93
ZWJraXRfdGVzdHMucGFyc2VfYXJncyhuZXdfYXJncykKQEAgLTMwOCw3ICszMDgsNyBAQCBjbGFz
cyBEcnlydW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF90ZXN0KHNlbGYp
OgogICAgICAgICByZXMsIG91dCwgZXJyID0gbG9nZ2luZ19ydW4oWyctLXBsYXRmb3JtJywgJ2Ry
eXJ1bi10ZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1waXhl
bC10ZXN0cyddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgMikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXMsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3V0LmVtcHR5
KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyLmVtcHR5KCkpCiAKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvaW1h
Z2VfZGlmZi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rl
c3RfdHlwZXMvaW1hZ2VfZGlmZi5weQppbmRleCA4Nzk2NDZjZmZmYTkxOWE5MDM1YWQ4NWY2MDNm
NTllMDYzYTNmYjU4Li4xYWQwZmU2OWE2OTY3MDdkNGEyZTRiZTBkYmFhYWE0ZWExYTNmOThjIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0
X3R5cGVzL2ltYWdlX2RpZmYucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5CkBAIC0xMDMsNyArMTAzLDExIEBA
IGNsYXNzIEltYWdlRGlmZih0ZXN0X3R5cGVfYmFzZS5UZXN0VHlwZUJhc2UpOgogICAgICAgICBl
eHBlY3RlZF9maWxlbmFtZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKGZpbGVuYW1lLAogICAgICAg
ICAgIHNlbGYuRklMRU5BTUVfU1VGRklYX0VYUEVDVEVEICsgJy5wbmcnKQogCi0gICAgICAgIHJl
c3VsdCA9IHBvcnQuZGlmZl9pbWFnZShleHBlY3RlZF9maWxlbmFtZSwgYWN0dWFsX2ZpbGVuYW1l
LAorICAgICAgICBleHBlY3RlZF9pbWFnZSA9IHBvcnQuZXhwZWN0ZWRfaW1hZ2UoZmlsZW5hbWUp
CisgICAgICAgIHdpdGggY29kZWNzLm9wZW4oYWN0dWFsX2ZpbGVuYW1lLCAncicsIE5vbmUpIGFz
IGZpbGU6CisgICAgICAgICAgICBhY3R1YWxfaW1hZ2UgPSBmaWxlLnJlYWQoKQorCisgICAgICAg
IHJlc3VsdCA9IHBvcnQuZGlmZl9pbWFnZShleHBlY3RlZF9pbWFnZSwgYWN0dWFsX2ltYWdlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZl9maWxlbmFtZSkKICAgICAgICAg
cmV0dXJuIHJlc3VsdAogCkBAIC0xMjQsMTkgKzEyOCwxMiBAQCBjbGFzcyBJbWFnZURpZmYodGVz
dF90eXBlX2Jhc2UuVGVzdFR5cGVCYXNlKToKICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlcwog
CiAgICAgICAgICMgQ29tcGFyZSBoYXNoZXMuCi0gICAgICAgIGV4cGVjdGVkX2hhc2hfZmlsZSA9
IHNlbGYuX3BvcnQuZXhwZWN0ZWRfZmlsZW5hbWUoZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5jaGVja3N1bScpCi0g
ICAgICAgIGV4cGVjdGVkX3BuZ19maWxlID0gc2VsZi5fcG9ydC5leHBlY3RlZF9maWxlbmFtZShm
aWxlbmFtZSwgJy5wbmcnKQotCi0gICAgICAgICMgRklYTUU6IFdlIHJlcGVhdCB0aGlzIHBhdHRl
cm4gb2Z0ZW4sIHdlIHNob3VsZCBzaGFyZSBjb2RlLgotICAgICAgICBleHBlY3RlZF9oYXNoID0g
JycKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZXhwZWN0ZWRfaGFzaF9maWxlKToKLSAgICAg
ICAgICAgIHdpdGggY29kZWNzLm9wZW4oZXhwZWN0ZWRfaGFzaF9maWxlLCAiciIsICJhc2NpaSIp
IGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfaGFzaCA9IGZpbGUucmVhZCgpCisg
ICAgICAgIGV4cGVjdGVkX2hhc2ggPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2NoZWNrc3VtKGZpbGVu
YW1lKQorICAgICAgICBleHBlY3RlZF9wbmcgPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2ltYWdlKGZp
bGVuYW1lKQogCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShleHBlY3RlZF9wbmdfZmls
ZSk6CisgICAgICAgIGlmIG5vdCBleHBlY3RlZF9wbmc6CiAgICAgICAgICAgICAjIFJlcG9ydCBh
IG1pc3NpbmcgZXhwZWN0ZWQgUE5HIGZpbGUuCi0gICAgICAgICAgICBzZWxmLndyaXRlX291dHB1
dF9maWxlcyhwb3J0LCBmaWxlbmFtZSwgJy5jaGVja3N1bScsCisgICAgICAgICAgICBzZWxmLndy
aXRlX291dHB1dF9maWxlcyhmaWxlbmFtZSwgJy5jaGVja3N1bScsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0X2FyZ3MuaGFzaCwgZXhwZWN0ZWRfaGFzaCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSJhc2NpaSIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF90ZXh0X2RpZmZzPUZhbHNlKQpAQCAt
MTQ3LDE3ICsxNDQsMjEgQEAgY2xhc3MgSW1hZ2VEaWZmKHRlc3RfdHlwZV9iYXNlLlRlc3RUeXBl
QmFzZSk6CiAgICAgICAgICAgICAjIEhhc2ggbWF0Y2hlZCAobm8gZGlmZiBuZWVkZWQsIG9rYXkg
dG8gcmV0dXJuKS4KICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlcwogCi0gICAgICAgIHNlbGYu
d3JpdGVfb3V0cHV0X2ZpbGVzKHBvcnQsIGZpbGVuYW1lLCAnLmNoZWNrc3VtJywKKyAgICAgICAg
c2VsZi53cml0ZV9vdXRwdXRfZmlsZXMoZmlsZW5hbWUsICcuY2hlY2tzdW0nLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2FyZ3MuaGFzaCwgZXhwZWN0ZWRfaGFzaCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ImFzY2lpIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfdGV4dF9kaWZmcz1GYWxzZSkKKworICAgICAg
ICAjIEZJWE1FOiBjb21iaW5lIG5leHQgdHdvIGxpbmVzCiAgICAgICAgIHNlbGYuX2NvcHlfb3V0
cHV0X3BuZyhmaWxlbmFtZSwgdGVzdF9hcmdzLnBuZ19wYXRoLCAnLWFjdHVhbC5wbmcnKQotICAg
ICAgICBzZWxmLl9jb3B5X291dHB1dF9wbmcoZmlsZW5hbWUsIGV4cGVjdGVkX3BuZ19maWxlLCAn
LWV4cGVjdGVkLnBuZycpCisgICAgICAgIHNlbGYud3JpdGVfb3V0cHV0X2ZpbGVzKGZpbGVuYW1l
LCAnLnBuZycsIG91dHB1dD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZD1leHBlY3RlZF9wbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
Y29kaW5nPU5vbmUsIHByaW50X3RleHRfZGlmZnM9RmFsc2UpCiAKICAgICAgICAgIyBFdmVuIHRo
b3VnaCB3ZSBvbmx5IHVzZSB0aGUgcmVzdWx0IGluIG9uZSBjb2RlcGF0aCBiZWxvdyBidXQgd2UK
ICAgICAgICAgIyBzdGlsbCBuZWVkIHRvIGNhbGwgQ3JlYXRlSW1hZ2VEaWZmIGZvciBvdGhlciBj
b2RlcGF0aHMuCiAgICAgICAgIGltYWdlc19hcmVfZGlmZmVyZW50ID0gc2VsZi5fY3JlYXRlX2lt
YWdlX2RpZmYocG9ydCwgZmlsZW5hbWUsIGNvbmZpZ3VyYXRpb24pCi0gICAgICAgIGlmIGV4cGVj
dGVkX2hhc2ggPT0gJyc6CisgICAgICAgIGlmIG5vdCBleHBlY3RlZF9oYXNoOgogICAgICAgICAg
ICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2go
KSkKICAgICAgICAgZWxpZiB0ZXN0X2FyZ3MuaGFzaCAhPSBleHBlY3RlZF9oYXNoOgogICAgICAg
ICAgICAgaWYgaW1hZ2VzX2FyZV9kaWZmZXJlbnQ6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90
ZXN0X3R5cGVfYmFzZS5weQppbmRleCA3NTNkYmVlYzQ2ZDIxYTg0OWU1MzU2ZjRkYmE5Yzk4MDk2
MWE4ZTc1Li4zYTZlOTJiN2Q1MzNiYzkwNjBlOTQ4OTBkNDQyYzM1YTEyY2VjY2JiIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVz
L3Rlc3RfdHlwZV9iYXNlLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkKQEAgLTEyMCw3ICsxMjAsNyBA
QCBjbGFzcyBUZXN0VHlwZUJhc2Uob2JqZWN0KToKICAgICAgICAgICAgIG91dHB1dF9wYXRoID0g
c2VsZi5fcG9ydC5leHBlY3RlZF9maWxlbmFtZShmaWxlbmFtZSwgbW9kaWZpZXIpCiAgICAgICAg
ICAgICBfbG9nLmRlYnVnKCdyZXNldHRpbmcgYmFzZWxpbmUgcmVzdWx0ICIlcyInICUgb3V0cHV0
X3BhdGgpCiAKLSAgICAgICAgc2VsZi5fd3JpdGVfaW50b19maWxlX2F0X3BhdGgob3V0cHV0X3Bh
dGgsIGRhdGEsIGVuY29kaW5nKQorICAgICAgICBzZWxmLl9wb3J0LnVwZGF0ZV9iYXNlbGluZShv
dXRwdXRfcGF0aCwgZGF0YSwgZW5jb2RpbmcpCiAKICAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNl
bGYsIGZpbGVuYW1lLCBtb2RpZmllcik6CiAgICAgICAgICIiIlJldHVybnMgYSBmaWxlbmFtZSBp
bnNpZGUgdGhlIG91dHB1dCBkaXIgdGhhdCBjb250YWlucyBtb2RpZmllci4KQEAgLTE2NCw3ICsx
NjQsNyBAQCBjbGFzcyBUZXN0VHlwZUJhc2Uob2JqZWN0KToKICAgICAgICAgd2l0aCBjb2RlY3Mu
b3BlbihmaWxlX3BhdGgsICJ3IiwgZW5jb2Rpbmc9ZW5jb2RpbmcpIGFzIGZpbGU6CiAgICAgICAg
ICAgICBmaWxlLndyaXRlKGNvbnRlbnRzKQogCi0gICAgZGVmIHdyaXRlX291dHB1dF9maWxlcyhz
ZWxmLCBwb3J0LCBmaWxlbmFtZSwgZmlsZV90eXBlLAorICAgIGRlZiB3cml0ZV9vdXRwdXRfZmls
ZXMoc2VsZiwgZmlsZW5hbWUsIGZpbGVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dHB1dCwgZXhwZWN0ZWQsIGVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJpbnRfdGV4dF9kaWZmcz1GYWxzZSk6CiAgICAgICAgICIiIldyaXRlcyB0aGUgdGVzdCBvdXRw
dXQsIHRoZSBleHBlY3RlZCBvdXRwdXQgYW5kIG9wdGlvbmFsbHkgdGhlIGRpZmYKQEAgLTIwMSwx
NiArMjAxLDE2IEBAIGNsYXNzIFRlc3RUeXBlQmFzZShvYmplY3QpOgogICAgICAgICAjIE5vdGU6
IFdlIHBhc3MgZW5jb2Rpbmc9Tm9uZSBmb3IgYWxsIGRpZmYgd3JpdGVzLCBhcyB3ZSB0cmVhdCBk
aWZmCiAgICAgICAgICMgb3V0cHV0IGFzIGJpbmFyeS4gIERpZmYgb3V0cHV0IG1heSBjb250YWlu
IG11bHRpcGxlIGZpbGVzIGluCiAgICAgICAgICMgY29uZmxpY3RpbmcgZW5jb2RpbmdzLgotICAg
ICAgICBkaWZmID0gcG9ydC5kaWZmX3RleHQoZXhwZWN0ZWQsIG91dHB1dCwgZXhwZWN0ZWRfZmls
ZW5hbWUsIGFjdHVhbF9maWxlbmFtZSkKKyAgICAgICAgZGlmZiA9IHNlbGYuX3BvcnQuZGlmZl90
ZXh0KGV4cGVjdGVkLCBvdXRwdXQsIGV4cGVjdGVkX2ZpbGVuYW1lLCBhY3R1YWxfZmlsZW5hbWUp
CiAgICAgICAgIGRpZmZfZmlsZW5hbWUgPSBzZWxmLm91dHB1dF9maWxlbmFtZShmaWxlbmFtZSwg
c2VsZi5GSUxFTkFNRV9TVUZGSVhfRElGRiArIGZpbGVfdHlwZSkKICAgICAgICAgc2VsZi5fd3Jp
dGVfaW50b19maWxlX2F0X3BhdGgoZGlmZl9maWxlbmFtZSwgZGlmZiwgZW5jb2Rpbmc9Tm9uZSkK
IAogICAgICAgICAjIFNoZWxsIG91dCB0byB3ZGlmZiB0byBnZXQgY29sb3JlZCBpbmxpbmUgZGlm
ZnMuCi0gICAgICAgIHdkaWZmID0gcG9ydC53ZGlmZl90ZXh0KGV4cGVjdGVkX2ZpbGVuYW1lLCBh
Y3R1YWxfZmlsZW5hbWUpCisgICAgICAgIHdkaWZmID0gc2VsZi5fcG9ydC53ZGlmZl90ZXh0KGV4
cGVjdGVkX2ZpbGVuYW1lLCBhY3R1YWxfZmlsZW5hbWUpCiAgICAgICAgIHdkaWZmX2ZpbGVuYW1l
ID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsIHNlbGYuRklMRU5BTUVfU1VGRklYX1dE
SUZGKQogICAgICAgICBzZWxmLl93cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCh3ZGlmZl9maWxlbmFt
ZSwgd2RpZmYsIGVuY29kaW5nPU5vbmUpCiAKICAgICAgICAgIyBVc2UgV2ViS2l0J3MgUHJldHR5
UGF0Y2gucmIgdG8gZ2V0IGFuIEhUTUwgZGlmZi4KLSAgICAgICAgcHJldHR5X3BhdGNoID0gcG9y
dC5wcmV0dHlfcGF0Y2hfdGV4dChkaWZmX2ZpbGVuYW1lKQorICAgICAgICBwcmV0dHlfcGF0Y2gg
PSBzZWxmLl9wb3J0LnByZXR0eV9wYXRjaF90ZXh0KGRpZmZfZmlsZW5hbWUpCiAgICAgICAgIHBy
ZXR0eV9wYXRjaF9maWxlbmFtZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKGZpbGVuYW1lLCBzZWxm
LkZJTEVOQU1FX1NVRkZJWF9QUkVUVFlfUEFUQ0gpCiAgICAgICAgIHNlbGYuX3dyaXRlX2ludG9f
ZmlsZV9hdF9wYXRoKHByZXR0eV9wYXRjaF9maWxlbmFtZSwgcHJldHR5X3BhdGNoLCBlbmNvZGlu
Zz1Ob25lKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlmZi5weQppbmRleCA1MGE5OTk1NDUy
MmUwZWMxMjUzNjRlNmIwOGJjZjIzMzFkNmRjYzE4Li5iMWY2MjFlNWI0NWU1ODI0NjYyYjAzMTM5
ZmMzN2I0YTIzN2QwMWE5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlmZi5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlmZi5weQpAQCAt
NTksMjQgKzU5LDcgQEAgY2xhc3MgVGVzdFRleHREaWZmKHRlc3RfdHlwZV9iYXNlLlRlc3RUeXBl
QmFzZSk6CiAgICAgICAgICIiIkdpdmVuIHRoZSBmaWxlbmFtZSBvZiB0aGUgdGVzdCwgcmVhZCB0
aGUgZXhwZWN0ZWQgb3V0cHV0IGZyb20gYSBmaWxlCiAgICAgICAgIGFuZCBub3JtYWxpemUgdGhl
IHRleHQuICBSZXR1cm5zIGEgc3RyaW5nIHdpdGggdGhlIGV4cGVjdGVkIHRleHQsIG9yICcnCiAg
ICAgICAgIGlmIHRoZSBleHBlY3RlZCBvdXRwdXQgZmlsZSB3YXMgbm90IGZvdW5kLiIiIgotICAg
ICAgICAjIFJlYWQgdGhlIHBvcnQtc3BlY2lmaWMgZXhwZWN0ZWQgdGV4dC4KLSAgICAgICAgZXhw
ZWN0ZWRfZmlsZW5hbWUgPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2ZpbGVuYW1lKGZpbGVuYW1lLCAn
LnR4dCcpCi0gICAgICAgIHJldHVybiBzZWxmLl9nZXRfbm9ybWFsaXplZF90ZXh0KGV4cGVjdGVk
X2ZpbGVuYW1lKQotCi0gICAgZGVmIF9nZXRfbm9ybWFsaXplZF90ZXh0KHNlbGYsIGZpbGVuYW1l
KToKLSAgICAgICAgIyBGSVhNRTogV2UgcmVwZWF0IHRoaXMgcGF0dGVybiBvZnRlbiwgd2Ugc2hv
dWxkIHNoYXJlIGNvZGUuCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6
Ci0gICAgICAgICAgICByZXR1cm4gJycKLQotICAgICAgICAjIE5PVEU6IC1leHBlY3RlZC50eHQg
ZmlsZXMgYXJlIEFMV0FZUyB1dGYtOC4gIEhvd2V2ZXIsCi0gICAgICAgICMgd2UgZG8gbm90IGRl
Y29kZSB0aGUgb3V0cHV0IGZyb20gRFJULCBzbyB3ZSBzaG91bGQgbm90Ci0gICAgICAgICMgZGVj
b2RlIHRoZSAtZXhwZWN0ZWQudHh0IHZhbHVlcyBlaXRoZXIgdG8gYWxsb3cgY29tcGFyaXNvbnMu
Ci0gICAgICAgIHdpdGggY29kZWNzLm9wZW4oZmlsZW5hbWUsICJyIiwgZW5jb2Rpbmc9Tm9uZSkg
YXMgZmlsZToKLSAgICAgICAgICAgIHRleHQgPSBmaWxlLnJlYWQoKQotICAgICAgICAgICAgIyBX
ZSBjb3VsZCBhc3NlcnQgdGhhdCB0aGUgdGV4dCBpcyB2YWxpZCB1dGYtOC4KLQotICAgICAgICAj
IE5vcm1hbGl6ZSBsaW5lIGVuZGluZ3MKLSAgICAgICAgcmV0dXJuIHRleHQuc3RyaXAoIlxyXG4i
KS5yZXBsYWNlKCJcclxuIiwgIlxuIikgKyAiXG4iCisgICAgICAgIHJldHVybiBzZWxmLl9wb3J0
LmV4cGVjdGVkX3RleHQoZmlsZW5hbWUpCiAKICAgICBkZWYgY29tcGFyZV9vdXRwdXQoc2VsZiwg
cG9ydCwgZmlsZW5hbWUsIG91dHB1dCwgdGVzdF9hcmdzLCBjb25maWd1cmF0aW9uKToKICAgICAg
ICAgIiIiSW1wbGVtZW50YXRpb24gb2YgQ29tcGFyZU91dHB1dCB0aGF0IGNoZWNrcyB0aGUgb3V0
cHV0IHRleHQgYWdhaW5zdApAQCAtOTksNyArODIsNyBAQCBjbGFzcyBUZXN0VGV4dERpZmYodGVz
dF90eXBlX2Jhc2UuVGVzdFR5cGVCYXNlKToKICAgICAgICAgIyBXcml0ZSBvdXRwdXQgZmlsZXMg
Zm9yIG5ldyB0ZXN0cywgdG9vLgogICAgICAgICBpZiBwb3J0LmNvbXBhcmVfdGV4dChvdXRwdXQs
IGV4cGVjdGVkKToKICAgICAgICAgICAgICMgVGV4dCBkb2Vzbid0IG1hdGNoLCB3cml0ZSBvdXRw
dXQgZmlsZXMuCi0gICAgICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxlcyhwb3J0LCBmaWxl
bmFtZSwgIi50eHQiLCBvdXRwdXQsCisgICAgICAgICAgICBzZWxmLndyaXRlX291dHB1dF9maWxl
cyhmaWxlbmFtZSwgIi50eHQiLCBvdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3RlZCwgZW5jb2Rpbmc9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByaW50X3RleHRfZGlmZnM9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBl
Y3RhdGlvbnMucHkKaW5kZXggZGRjMzk4MzI5ZTAwMjlkZTdjY2YxZDFhYWJiMDg4ZWU1MDE1Nzg2
Ny4uZDJkNjdmMzU3NTVkY2Q0MmM4NjEwOTg3MWIzNDJmZjYzYmQ0OTlkOSAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0
aW9ucy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC05Myw4ICs5Myw3IEBAIGNsYXNzIFRlc3RFeHBlY3Rh
dGlvbnNDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICAgICBleHBlY3RhdGlvbnMgPSB0ZXN0X2V4
cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zRmlsZSgKICAgICAgICAgICAgICAgICBwb3J0PXNl
bGYuX3BvcnRfb2JqLCBleHBlY3RhdGlvbnM9ZXhwZWN0YXRpb25zX3N0ciwgZnVsbF90ZXN0X2xp
c3Q9dGVzdHMsCiAgICAgICAgICAgICAgICAgdGVzdF9wbGF0Zm9ybV9uYW1lPXNlbGYuX3BvcnRf
dG9fY2hlY2ssIGlzX2RlYnVnX21vZGU9RmFsc2UsCi0gICAgICAgICAgICAgICAgaXNfbGludF9t
b2RlPVRydWUsIHN1cHByZXNzX2Vycm9ycz1GYWxzZSwgdGVzdHNfYXJlX3ByZXNlbnQ9VHJ1ZSwK
LSAgICAgICAgICAgICAgICBvdmVycmlkZXM9b3ZlcnJpZGVzKQorICAgICAgICAgICAgICAgIGlz
X2xpbnRfbW9kZT1UcnVlLCBzdXBwcmVzc19lcnJvcnM9RmFsc2UsIG92ZXJyaWRlcz1vdmVycmlk
ZXMpCiAgICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvciwgZXJyb3I6CiAgICAgICAgICAgICBlcnJv
cnMgPSBzdHIoZXJyb3IpLnNwbGl0bGluZXMoKQogCg==
</data>
<flag name="review"
          id="57429"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>