<?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>71494</bug_id>
          
          <creation_ts>2011-11-03 11:53:04 -0700</creation_ts>
          <short_desc>Remove deprecated free functions in port.factory</short_desc>
          <delta_ts>2011-11-04 17:27:47 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>495688</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-03 11:53:04 -0700</bug_when>
    <thetext>Remove deprecated free functions in port.factory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495711</commentid>
    <comment_count>1</comment_count>
      <attachid>113540</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-03 12:18:06 -0700</bug_when>
    <thetext>Created attachment 113540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495720</commentid>
    <comment_count>2</comment_count>
      <attachid>113540</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-03 12:31:47 -0700</bug_when>
    <thetext>Comment on attachment 113540
Patch

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

Seems fine.  I&apos;m slightly worried this is going to cause tests to fail on Windows because of the branch in engage_windows_hacks.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_win.py:104
&gt; +        if sys.platform != &quot;win32&quot;:
&gt; +            return

This isn&apos;t actually as bad as it seems.  We feature-detect whether the hacks are needed.  If they&apos;re not needed, we won&apos;t do anything.

should we add a static boolean for whether we&apos;ve tried to engage the hacks before?  We shouldn&apos;t need to try to engage them twice.

&gt; Tools/Scripts/webkitpy/layout_tests/port/test.py:278
&gt; +    def _set_default_overriding_none(self, dictionary, key, default):
&gt; +        # dict.setdefault almost works, but won&apos;t actually override None values, which we want.
&gt; +        if not dictionary.get(key):
&gt; +            dictionary[key] = default
&gt; +        return dictionary[key]

This code looks duplicated.

&gt; Tools/Scripts/webkitpy/layout_tests/port/win.py:62
&gt; +        # No sense in trying to detect our windows version on non-windows platforms, unless we&apos;re unittesting.
&gt; +        if sys.platform != &apos;cygwin&apos; and not run_on_non_windows_platforms:

Lame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495725</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-03 12:44:22 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 113540 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113540&amp;action=review
&gt; 
&gt; Seems fine.  I&apos;m slightly worried this is going to cause tests to fail on Windows because of the branch in engage_windows_hacks.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_win.py:104
&gt; &gt; +        if sys.platform != &quot;win32&quot;:
&gt; &gt; +            return
&gt; 
&gt; This isn&apos;t actually as bad as it seems.  We feature-detect whether the hacks are needed.  If they&apos;re not needed, we won&apos;t do anything.

Well, we still execute a command, which is what was showing up in the unittests which instantiate a CrWinPort and have a logging executive.

&gt; should we add a static boolean for whether we&apos;ve tried to engage the hacks before?  We shouldn&apos;t need to try to engage them twice.

Yes, we should.  Probably a separate change.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/test.py:278
&gt; &gt; +    def _set_default_overriding_none(self, dictionary, key, default):
&gt; &gt; +        # dict.setdefault almost works, but won&apos;t actually override None values, which we want.
&gt; &gt; +        if not dictionary.get(key):
&gt; &gt; +            dictionary[key] = default
&gt; &gt; +        return dictionary[key]
&gt; 
&gt; This code looks duplicated.

It is.  Not sure where to put it.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/win.py:62
&gt; &gt; +        # No sense in trying to detect our windows version on non-windows platforms, unless we&apos;re unittesting.
&gt; &gt; +        if sys.platform != &apos;cygwin&apos; and not run_on_non_windows_platforms:
&gt; 
&gt; Lame.

Yeah, it is kinda lame.  Again, just trying to avoid running a command we don&apos;t need when we have a logging executive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495728</commentid>
    <comment_count>4</comment_count>
      <attachid>113542</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-03 12:45:36 -0700</bug_when>
    <thetext>Created attachment 113542
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495748</commentid>
    <comment_count>5</comment_count>
      <attachid>113542</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-03 13:26:03 -0700</bug_when>
    <thetext>Comment on attachment 113542
Patch for landing

Clearing flags on attachment: 113542

Committed r99233: &lt;http://trac.webkit.org/changeset/99233&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495749</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-03 13:26:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495761</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-03 13:40:51 -0700</bug_when>
    <thetext>This patch regressed not needing python-irclib to run new-run-webkit-tests.  Previously, you could run new-run-webkit-tests without having the autoinstall need to download python-irclib.  Is it possible to get that behavior back?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495835</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-03 15:52:10 -0700</bug_when>
    <thetext>Very likely.  Is there a way we can test that property to make sure we don&apos;t regress it again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495844</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-03 16:06:43 -0700</bug_when>
    <thetext>Yes, it&apos;s very easy to add that behavior back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495866</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-03 16:28:34 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Very likely.  Is there a way we can test that property to make sure we don&apos;t regress it again?

Probably.  Feel free to file a bug against me to write a test for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496089</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-11-04 00:39:47 -0700</bug_when>
    <thetext>It broke a webkitpy test on all port:

ERROR: test_get_host_port_object (webkitpy.to_be_moved.rebaseline_chromium_webkit_tests_unittest.TestGetHostPortObject)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &quot;/ramdisk/qt-linux-release/build/Tools/Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py&quot;, line 181, in test_get_host_port_object
    self.assert_result(False, False, False)
  File &quot;/ramdisk/qt-linux-release/build/Tools/Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py&quot;, line 171, in assert_result
    port_obj = rebaseline_chromium_webkit_tests.get_host_port_object(port_factory, options)
  File &quot;/ramdisk/qt-linux-release/build/Tools/Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py&quot;, line 815, in get_host_port_object
    port_obj = port_factory.get(None, options)
TypeError: get() takes exactly 2 arguments (3 given)

Could you check it, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496098</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-04 01:02:07 -0700</bug_when>
    <thetext>Certainly, one sec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496126</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-04 02:20:11 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; It broke a webkitpy test on all port:
&gt; 
&gt; ERROR: test_get_host_port_object (webkitpy.to_be_moved.rebaseline_chromium_webkit_tests_unittest.TestGetHostPortObject)
&gt; ----------------------------------------------------------------------
&gt; Traceback (most recent call last):
&gt;   File &quot;/ramdisk/qt-linux-release/build/Tools/Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py&quot;, line 181, in test_get_host_port_object
&gt;     self.assert_result(False, False, False)
&gt;   File &quot;/ramdisk/qt-linux-release/build/Tools/Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py&quot;, line 171, in assert_result
&gt;     port_obj = rebaseline_chromium_webkit_tests.get_host_port_object(port_factory, options)
&gt;   File &quot;/ramdisk/qt-linux-release/build/Tools/Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py&quot;, line 815, in get_host_port_object
&gt;     port_obj = port_factory.get(None, options)
&gt; TypeError: get() takes exactly 2 arguments (3 given)
&gt; 
&gt; Could you check it, please?

Sorry.  Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496127</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-04 02:20:23 -0700</bug_when>
    <thetext>Committed r99271: &lt;http://trac.webkit.org/changeset/99271&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496129</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-04 02:23:15 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Yes, it&apos;s very easy to add that behavior back.

Filed bug 71549.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496581</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-04 17:27:47 -0700</bug_when>
    <thetext>Committed r99335: &lt;http://trac.webkit.org/changeset/99335&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113540</attachid>
            <date>2011-11-03 12:18:06 -0700</date>
            <delta_ts>2011-11-03 12:45:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71494-20111103121804.patch</filename>
            <type>text/plain</type>
            <size>83662</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxNDAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmY2M0ODM1MGY4YjBmNjlkODUxMDcyMTIwYzg3Y2QxOGVm
Yzg3OGU4Li4wYWUyNTEzMjQ2ODE0ZTA2MDAyYmU2MmE3MTAzMjQ2Y2VhNDI3MjdjIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAz
IEBACisyMDExLTExLTAzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZW1vdmUgZGVwcmVjYXRlZCBmcmVlIGZ1bmN0aW9ucyBpbiBwb3J0LmZhY3RvcnkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDk0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSByZW1vdmVkIHBvcnQu
ZmFjdG9yeS5nZXQsIGdldF9hbGwsIGFuZCBhbGxfcG9ydF9uYW1lcyAtLSBsb25nLXNpbmNlIGRl
cHJlY2F0ZWQKKyAgICAgICAgZnJlZSBmdW5jdGlvbnMgaW4gZmFjdG9yeS5weS4gIFRvIHJlbW92
ZSB0aGVzZSByZXF1aXJlZCBmaXhpbmcgYWxsIGNhbGxzaXRlcworICAgICAgICB0byB1c2UgTW9j
a0hvc3QsIEhvc3QsIG9yIFBvcnRGYWN0b3J5IHdoZXJlIGFwcHJvcHJpYXRlLiAgQWZ0ZXIgdGhp
cyBjaGFuZ2UKKyAgICAgICAgd2UncmUgb25seSBsZWZ0IHdpdGggYSBoYW5kZnVsbCBvZiBwbGFj
ZXMgd2hlcmUgd2UgaW5hcHByb3ByYWl0ZWx5IHVzZSBhCisgICAgICAgIHJlYWwgRXhlY3V0aXZl
LCBGaWxlU3lzdGVtIG9yIFVzZXIgb2JqZWN0IGR1cmluZyB1bml0dGVzdGluZy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAgLSBUaGVzZSBQb3J0RmFjdG9yeSBvdmVycmlkZXMgd2VyZSBm
cm9tIGFuIGVhcmxpZXIgZWRpdGlvbiBvZiBteSBwcmV2aW91cyBwYXRjaAorICAgICAgICAgICBp
biB0aGUgZW5kLCBJIHJlbW92ZWQgTW9ja1BvcnRGYWN0b3J5IHNvIGFsbCB0ZXN0cyBlbmRlZCB1
cCB3aXRoIHRoaXMgc2FtZQorICAgICAgICAgICByZWFsIFBvcnRGYWN0b3J5KCkgd2l0aCBhIE1v
Y2tIb3N0LiAgVGhpcyB3YXMgc2ltcGx5IHJlZHVuZGVudCBjb2RlLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHk6
CisgICAgICAgICAtIFVzZSBNb2NrSG9zdCB0byBnZXQgYSBtb2NrZWQtb3V0IFBvcnRGYWN0b3J5
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXJfd29ya2VyX2Jyb2tlci5weToKKyAgICAgICAgIC0gVGhpcyBjb2RlIGhhcyBubyBhY2Nl
c3MgdG8gYSBIb3N0IG9iamVjdCwgc28gd2UganVzdCB1c2UgYSBkZWZhdWx0IFBvcnRGYWN0b3J5
CisgICAgICAgICAgIGZvciBub3cuICBUaGlzIHdpbGwgc3RpbGwgaW5jb3JyZWN0bHkgY3JlYXRl
IHJlYWwgRXhlY3V0aXZlL0ZpbGVTeXN0ZW0gb2JqZWN0cworICAgICAgICAgICBkdXJyaW5nIHVu
aXR0ZXN0aW5nLCB3aGljaCBpcyB3cm9uZy4gOigKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3Qu
cHk6CisgICAgICAgICAtIFVzZSBhIE1vY2tIb3N0IHRvIGdldCBhIG1vY2tlZCBQb3J0RmFjdG9y
eS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90
ZXN0X2V4cGVjdGF0aW9uc19lZGl0b3JfdW5pdHRlc3QucHk6CisgICAgICAgICAtIFVzZSBhIE1v
Y2tIb3N0IHRvIGdldCBhIG1vY2tlZCBQb3J0RmFjdG9yeS4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9jb25maWd1cmF0aW9uX3VuaXR0ZXN0LnB5
OgorICAgICAgICAgLSBkaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisgICAgICAgICAtIGRp
dHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvX19pbml0
X18ucHk6CisgICAgICAgICAtIGZhY3RvcnkuZ2V0IG5vIGxvbmdlciBleGlzdHMuICBZYXkhCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVf
dW5pdHRlc3QucHk6CisgICAgICAgICAtIFVzZSBhIE1vY2tIb3N0IHRvIGdldCBhIG1vY2tlZCBQ
b3J0RmFjdG9yeS4KKyAgICAgICAgICAgVG8gZG8gdGhpcyBlZmZpY2llbnRseSwgSSBjcmVhdGVk
IGEgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgICAgIGFuZCBjb21iaW5lZCBhbGwgdGhlc2UgKG1v
c3RseSByZWR1bmRhbnQpIHRlc3RzIGludG8gb25lIHRlc3QKKyAgICAgICAgICAgd2l0aCBzZXZl
cmFsIGNhbGxzIHRvIHRoZSBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weToKKyAgICAgICAgIC0g
UGFzcyBNb2NrVXNlciBhbmQgTW9ja0V4ZWN1dGl2ZSBpbiB0aGVzZSBwb3J0IHRlc3Rpbmcgc3Vi
Y2xhc3Nlcy4KKyAgICAgICAgIC0gSSBhbHNvIHJlbW92ZWQgYSBidW5jaCBvZiB1bmVjZXNzYXJ5
IHVzZXMgb2YgbW9ja3Rvb2wuIG5hbWVzcGFjaW5nLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5OgorICAgICAgICAgLSBBd2Vzb21l
IHdpbmRvd3MgaGFja3Mgc2hvdWxkIG9ubHkgaGFwcGVuIG9uIHdpbjMyLiAgT25jZSB3ZSBzdGFy
dGVkCisgICAgICAgICAgIHVzaW5nIE1vY2tFeGVjdXRpdmVzIHRoZXNlICdzdm4gaGVscCcgY29t
bWFuZHMgc3RhcnRlZCBwcmludGluZyBpbgorICAgICAgICAgICBvdGhlciB0ZXN0cywgd2hpY2gg
aXMgaG93IEkgZm91bmQgdGhpcyBidWcuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9kcnlydW4ucHk6CisgICAgICAgICAtIERyeVJ1blBvcnQgaGFzIG5vIEhv
c3QsIHNvIGp1c3QgdXNlIGEgUG9ydEZhY3RvcnkoKSBkaXJlY3RseS4KKyAgICAgICAgICAgVGhp
cyB3aWxsIGRvIHRoZSB3cm9uZyB0aGluZyBpZiB3ZSdyZSB1bml0dGVzdGluZyB0aGUgRHJ5UnVu
IHBvcnQKKyAgICAgICAgICAgYnV0IGl0J3Mgbm8gd29yc2UgdGhhbiB0aGUgZXhpc3RpbmcgY29k
ZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3Rvcnku
cHk6CisgICAgICAgICAtIFJlbW92ZSB0aGUgZnJlZSBmdW5jdGlvbnMuCisgICAgICAgICAtIEZp
eCBhcmd1bWVudCBvdmVycmlkaW5nIHRvIGJlIGFibGUgdG8gb3ZlcnJpZGUgTm9uZS4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3Qu
cHk6CisgICAgICAgICAtIFVzZSBhIG1vY2tlZC1vdXQgUG9ydEZhY3RvcnkgZHVyaW5nIHRlc3Rp
bmcuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVf
Y2hyb21lX3VuaXR0ZXN0LnB5OgorICAgICAgICAgLSBQYXNzIE1vY2tFeGVjdXRpdmUgYW5kIE1v
Y2tVc2VyIHRvIHRoZXNlIG1hbnVhbCBQb3J0IGluc3RhbnRpYXRpb25zLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHk6CisgICAgICAgICAt
IE5vIGFjY2VzcyB0byBhIEhvc3Qgb2JqZWN0IGhlcmUsIHNvIGp1c3QgdXNpbmcgUG9ydEZhY3Rv
cnkgZGlyZWN0bHkuCisgICAgICAgICAgIFRoaXMgaXMgd3JvbmcsIGJ1dCBubyBtb3JlIHdyb25n
IHRoYW4gdGhlIGV4aXN0aW5nIGNvZGUgd2FzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHk6CisgICAgICAgICAtIFVzZSBh
IE1vY2tIb3N0IHRvIGdldCBhIG1vY2tlZCBvdXQgUG9ydEZhY3RvcnkuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAgLSBVc2Ug
b3VyIGZhbmN5IF9zZXRfZGVmYXVsdF9vdmVycmlkaW5nX25vbmUgc3lzdGVtIHRvIGNsZWFuIHRo
aXMgY29kZSB1cCBhbmQgcGFzcyBhIE1vY2tFeGVjdXRpdmUuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW4ucHk6CisgICAgICAgICAtIERvbid0IHJ1biBj
bWQgL2MgdmVyIGZyb20gV2luUG9ydC5fX2luaXRfXyBvciBpdCBzaG93cyB1cCBpbiB1bml0dGVz
dHMgd2hpY2ggaGF2ZSBsb2dnaW5nIE1vY2tFeGVjdXRpdmUKKyAgICAgICAgICAgbm93IHRoYXQg
d2UncmUgYWN0dWFsbHkgcGFzc2luZyBNb2NrRXhlY3V0aXZlIHRvIG1vc3QgUG9ydCBpbnN0YW50
aWF0aW9ucyBkdXJpbmcgdGVzdGluZy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weToKKyAgICAgICAgIC0gUGFzcyBvdXIgbmV3ICJ1
bml0dGVzdGluZyIgYm9vbCB0byBfZGV0ZWN0X3ZlcnNpb24gd2hlbiBhY3R1YWxseSB1bml0dGVz
dGluZy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzLnB5OgorICAgICAgICAgLSBIb3N0IGlzIHRoZSBmdXR1cmUuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRl
c3QucHk6CisgICAgICAgICAtIFVzZSBhIE1vY2tIb3N0IHRvIGdldCBhIG1vY2tlZCBvdXQgUG9y
dEZhY3RvcnkuICBPbmNlIHdlIGhhdmUgYSBtb2NrZWQgUG9ydEZhY3RvcnkKKyAgICAgICAgICAg
d2UgZG9uJ3QgbmVlZCB0byBwYXNzIE1vY2tVc2VyIGV4cGxpY2l0bHksIGl0IGRvZXMgdGhhdCBh
dXRvbWF0aWNhbGx5IGZvciB1cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy92aWV3cy9wcmludGluZ191bml0dGVzdC5weToKKyAgICAgICAgIC0gVXNlIGEgTW9ja0hv
c3QgdG8gZ2V0IGEgbW9ja2VkIG91dCBQb3J0RmFjdG9yeS4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5OgorICAgICAgICAgLSBX
ZSBkb24ndCBoYXZlIGFjY2VzcyB0byBhIEhvc3Qgb2JqZWN0LCBzbyB1c2luZyBQb3J0RmFjdG9y
eSgpIGRpcmVjdGx5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
dGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisgICAgICAgICAtIFJlbW92ZSB1bnVzZWQg
dmFyaWFibGUuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2Vs
aW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgIC0gSG9zdCBpc24ndCBhY2Nl
c3NpYmxlIGhlcmUsIHNvIHVzaW5nIFBvcnRGYWN0b3J5KCkgZGlyZWN0bHksIHdoaWNoCisgICAg
ICAgICAgIGFsdGhvdWdoIHVuZm9ydHVuYXRlIGlzIG5vIHdvcnNlIHRoYW4gYmVmb3JlLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93
ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisgICAgICAgICAtIFRlc3RpbmcgaXMgbXVjaCBlYXNp
ZXIgd2hlbiB5b3UgZG9uJ3QgbmVlZCB0byBoYWNrIGdsb2JhbCBzdGF0ZS4uLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9leHBlY3RhdGlvbnMucHk6CisgICAgICAg
ICAtIFVzZSB0aGUgcG9ydF9mYWN0b3J5IG9uIHRoZSB0b29sLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5OgorICAgICAgICAgLSBkaXR0by4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZV91bml0
dGVzdC5weToKKyAgICAgICAgIC0gVGhpcyB1bml0dGVzdCB3YXMgd3JvbmcuICBJdCB3YXMgdHJ5
aW5nIHRvIHBhc3MgdGhlIHRvb2wgb2JqZWN0LCBidXQgZmFpbGluZyB0byBwYXNzCisgICAgICAg
ICAgIHRoZSBhcmd1bWVudHMgaW4gdGhlIHJpZ2h0IG9yZGVyLiAgRml4aW5nIHRoYXQgbWFkZSBp
dCB1c2UgYSBNb2NrRmlsZVN5c3RlbQorICAgICAgICAgICAobGlrZSBpdCBoYWQgYmVlbiB0cnlp
bmcgdG8pLCB3aGljaCB0aGVuIHJlcXVpcmVkIHVzIHRvIGFjdHVhbGx5IHBvcHVsYXRlCisgICAg
ICAgICAgIHRoYXQgTW9ja0ZpbGVTeXN0ZW0gd2l0aCBmYWtlIGV4cGVjdGF0aW9uIGZpbGVzIChp
bnN0ZWFkIG9mIHVzaW5nIHRoZSBvbmVzIG9uIHRoZSByZWFsIGRpc2spLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lc2VydmVyLnB5OgorICAgICAg
ICAgLSBHZXQgdGhlIHBvcnRfZmFjdG9yeSBmcm9tIHRoZSB0b29sLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlci5weToKKyAgICAgICAgIC0g
RGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5n
c2VydmVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAgLSBVc2UgYSBNb2NrSG9zdCB0byBnZXQgYSBt
b2NrZWQgb3V0IFBvcnQgb2JqZWN0LgorCiAyMDExLTExLTAyICBFcmljIFNlaWRlbCAgPGVyaWNA
d2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIE1vY2tzIGludG8gX21vY2sgZmlsZXMgbmVhciB0
aGVpciBpbXBsZW1lbnRhdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYmFzZWxpbmVvcHRpbWl6ZXJfdW5pdHRlc3Qu
cHkKaW5kZXggMWQzZTU3MzcwZmRmOTBhNDA3ZjI3NWJiOTQ0MTk2NTdiMjI3MjM1Zi4uNzJkN2E3
ZWJmZGJjZTZmOTE2ZGIzNmVhNzI3N2ZmZTEyYmRiZTliZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYmFzZWxpbmVvcHRpbWl6ZXJfdW5pdHRlc3Qu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYmFzZWxpbmVv
cHRpbWl6ZXJfdW5pdHRlc3QucHkKQEAgLTMxLDE0ICszMSwxMiBAQCBpbXBvcnQgdW5pdHRlc3QK
IAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuYmFzZWxpbmVvcHRpbWl6ZXIgaW1wb3J0
IEJhc2VsaW5lT3B0aW1pemVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3Rl
bV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
cG9ydC5mYWN0b3J5IGltcG9ydCBQb3J0RmFjdG9yeQogZnJvbSB3ZWJraXRweS5jb21tb24uaG9z
dF9tb2NrIGltcG9ydCBNb2NrSG9zdAogCiAKIGNsYXNzIFRlc3RCYXNlbGluZU9wdGltaXplcihC
YXNlbGluZU9wdGltaXplcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vY2tfcmVzdWx0c19i
eV9kaXJlY3RvcnkpOgogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgICAgICBob3N0LnBv
cnRfZmFjdG9yeSA9IFBvcnRGYWN0b3J5KGhvc3QpICAjIFdlIHdhbnQgYSByZWFsIFBvcnRGYWN0
b3J5LCBidXQgaXQgc2hvdWxkIHVzZSBtb2Nrcy4KICAgICAgICAgQmFzZWxpbmVPcHRpbWl6ZXIu
X19pbml0X18oc2VsZiwgaG9zdCkKICAgICAgICAgc2VsZi5fbW9ja19yZXN1bHRzX2J5X2RpcmVj
dG9yeSA9IG1vY2tfcmVzdWx0c19ieV9kaXJlY3RvcnkKIApAQCAtNTYsNyArNTQsNiBAQCBjbGFz
cyBCYXNlbGluZU9wdGltaXplclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRl
c3RfbW92ZV9iYXNlbGluZXMoc2VsZik6CiAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAg
ICAgIGhvc3QucG9ydF9mYWN0b3J5ID0gUG9ydEZhY3RvcnkoaG9zdCkgICMgV2Ugd2FudCBhIHJl
YWwgUG9ydEZhY3RvcnksIGJ1dCBpdCBzaG91bGQgdXNlIG1vY2tzLgogICAgICAgICBob3N0LmZp
bGVzeXN0ZW0ud3JpdGVfYmluYXJ5X2ZpbGUoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLXdpbi9hbm90aGVyL3Rlc3QtZXhwZWN0ZWQudHh0JywgJ3Jlc3VsdCBB
JykKICAgICAgICAgaG9zdC5maWxlc3lzdGVtLndyaXRlX2JpbmFyeV9maWxlKCcvbW9jay1jaGVj
a291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1jZy1tYWMvYW5vdGhlci90ZXN0LWV4
cGVjdGVkLnR4dCcsICdyZXN1bHQgQScpCiAgICAgICAgIGhvc3QuZmlsZXN5c3RlbS53cml0ZV9i
aW5hcnlfZmlsZSgnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YW5vdGhlci90ZXN0LWV4cGVjdGVkLnR4dCcsICdyZXN1bHQgQicpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlcl91bml0dGVzdC5weQppbmRleCA3MGM5MDI2MTE0ZTQxMWFiNTY2MTBjMjAyMzQzNzU2
MzI2ZTdmYzE4Li5lMWVlZDA4OGMxODU2NDIzNGE3ZjNiMDFhODU3YTU1ZWNhNzM5ZGNhIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHkKQEAgLTM4LDcgKzM4LDYgQEAgZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVT
eXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0Y2FwdHVyZQog
ZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Via2l0cHkg
aW1wb3J0IGxheW91dF90ZXN0cwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBv
cnQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UK
IAogZnJvbSB3ZWJraXRweSBpbXBvcnQgbGF5b3V0X3Rlc3RzCkBAIC00OSw2ICs0OCw3IEBAIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9ydCBwcmludGluZwogZnJvbSB3ZWJr
aXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0udXNlcl9tb2NrIGltcG9ydCBNb2NrVXNlcgorZnJvbSB3ZWJraXRw
eS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogCiAKIGNsYXNzIE1hbmFnZXJXcmFw
cGVyKE1hbmFnZXIpOgpAQCAtNzEsNyArNzEsOCBAQCBjbGFzcyBTaGFyZGluZ1Rlc3RzKHVuaXR0
ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBnZXRfc2hhcmRzKHNlbGYsIG51bV93b3JrZXJzLCBm
dWxseV9wYXJhbGxlbCwgdGVzdF9saXN0PU5vbmUpOgogICAgICAgICB0ZXN0X2xpc3QgPSB0ZXN0
X2xpc3Qgb3Igc2VsZi50ZXN0X2xpc3QKLSAgICAgICAgcG9ydCA9IGxheW91dF90ZXN0cy5wb3J0
LmdldChwb3J0X25hbWU9J3Rlc3QnKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAg
ICBwb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZT0ndGVzdCcpCiAgICAgICAg
IHBvcnQuX2ZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSgpCiAgICAgICAgICMgRklYTUU6IFRo
aXMgc2hvdWxkIHVzZSBNb2NrT3B0aW9ucygpIGluc3RlYWQgb2YgTW9jaygpCiAgICAgICAgIHNl
bGYubWFuYWdlciA9IE1hbmFnZXJXcmFwcGVyKHBvcnQ9cG9ydCwgb3B0aW9ucz1Nb2NrKCksIHBy
aW50ZXI9TW9jaygpKQpAQCAtMTU5LDggKzE2MCw4IEBAIGNsYXNzIE1hbmFnZXJUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2ZhbGxiYWNrX3BhdGhfaW5fY29uZmlnKHNl
bGYpOgogICAgICAgICBvcHRpb25zID0gc2VsZi5nZXRfb3B0aW9ucygpCi0KLSAgICAgICAgcG9y
dCA9IGxheW91dF90ZXN0cy5wb3J0LmdldCgndGVzdC1tYWMtbGVvcGFyZCcsIG9wdGlvbnM9b3B0
aW9ucykKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgcG9ydCA9IGhvc3QucG9y
dF9mYWN0b3J5LmdldCgndGVzdC1tYWMtbGVvcGFyZCcsIG9wdGlvbnM9b3B0aW9ucykKICAgICAg
ICAgcHJpbnRlciA9IHNlbGYuZ2V0X3ByaW50ZXIoKQogICAgICAgICBtYW5hZ2VyID0gTWFuYWdl
cihwb3J0LCBwb3J0Lm9wdGlvbnMsIHByaW50ZXIpCiAgICAgICAgIG1hbmFnZXIucHJpbnRfY29u
ZmlnKCkKQEAgLTE4Niw4ICsxODcsOCBAQCBjbGFzcyBNYW5hZ2VyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbmlzaGVkX2xpc3RfY2FsbGVkID0g
VHJ1ZQogCiAgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBydW5fd2Via2l0X3Rlc3RzLnBhcnNlX2Fy
Z3MoWyctLXBsYXRmb3JtPXRlc3QnLCAnLS1wcmludD1ub3RoaW5nJywgJ2h0dHAvdGVzdHMvcGFz
c2VzJywgJ3Bhc3NlcyddKQotICAgICAgICAjIE5vdGUgd2UgZG8gbm90IHBhc3MgYSBmaWxlc3lz
dGVtIGFzIHRoZSAidGVzdCBwb3J0IiBtYWdpY2FsbHkgc3VwbGllcyBpdHMgb3duIG1vY2sgZmls
ZXN5c3RlbS4KLSAgICAgICAgcG9ydCA9IGxheW91dF90ZXN0cy5wb3J0LmdldChwb3J0X25hbWU9
b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zLCB1c2VyPU1vY2tVc2VyKCksIGV4ZWN1
dGl2ZT1Nb2NrRXhlY3V0aXZlKCkpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAg
IHBvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lPW9wdGlvbnMucGxhdGZvcm0s
IG9wdGlvbnM9b3B0aW9ucywgdXNlcj1Nb2NrVXNlcigpLCBleGVjdXRpdmU9TW9ja0V4ZWN1dGl2
ZSgpKQogICAgICAgICBydW5fd2Via2l0X3Rlc3RzLl9zZXRfdXBfZGVyaXZlZF9vcHRpb25zKHBv
cnQsIG9wdGlvbnMpCiAgICAgICAgIHByaW50ZXIgPSBwcmludGluZy5QcmludGVyKHBvcnQsIG9w
dGlvbnMsIFN0cmluZ0lPLlN0cmluZ0lPKCksIFN0cmluZ0lPLlN0cmluZ0lPKCksIGNvbmZpZ3Vy
ZV9sb2dnaW5nPVRydWUpCiAgICAgICAgIG1hbmFnZXIgPSBMb2NrQ2hlY2tpbmdNYW5hZ2VyKHBv
cnQsIG9wdGlvbnMsIHByaW50ZXIpCkBAIC0yNDMsNyArMjQ0LDggQEAgY2xhc3MgTWFuYWdlclRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfbmVlZHNf
c2VydmVycyhzZWxmKToKICAgICAgICAgZGVmIGdldF9tYW5hZ2VyX3dpdGhfdGVzdHModGVzdF9u
YW1lcyk6Ci0gICAgICAgICAgICBwb3J0ID0gbGF5b3V0X3Rlc3RzLnBvcnQuZ2V0KCkKKyAgICAg
ICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgICAgICBwb3J0ID0gaG9zdC5wb3J0X2Zh
Y3RvcnkuZ2V0KCkKICAgICAgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyKHBvcnQsIG9wdGlvbnM9
TW9ja09wdGlvbnModGVzdF9saXN0PU5vbmUsIGh0dHA9VHJ1ZSksIHByaW50ZXI9TW9jaygpKQog
ICAgICAgICAgICAgbWFuYWdlci5jb2xsZWN0X3Rlc3RzKHRlc3RfbmFtZXMpCiAgICAgICAgICAg
ICByZXR1cm4gbWFuYWdlcgpAQCAtMjg2LDcgKzI4OCw4IEBAIGNsYXNzIE5hdHVyYWxDb21wYXJl
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKIGNsYXNzIEtleUNvbXBhcmVUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYucG9ydCA9IGxh
eW91dF90ZXN0cy5wb3J0LmdldCgndGVzdCcpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisg
ICAgICAgIHNlbGYucG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdCcpCiAKICAgICBk
ZWYgYXNzZXJ0X2NtcChzZWxmLCB4LCB5LCByZXN1bHQpOgogICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhjbXAodGVzdF9rZXkoc2VsZi5wb3J0LCB4KSwgdGVzdF9rZXkoc2VsZi5wb3J0LCB5KSks
IHJlc3VsdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQpp
bmRleCBlNDMxZjUzM2I2ZDhlOWFlYzQ0Njg3NWEzMzVjMzkwZjYxMDAyODAzLi5lOGE1MTE0YWJl
MzE0NTRhZGZiMWYzZjYzODEwMGM0M2ZjOTBmNDNhIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CkBAIC01Miw3ICs1Miw3IEBAIHRyeToKIGV4Y2VwdCBJ
bXBvcnRFcnJvcjoKICAgICBtdWx0aXByb2Nlc3NpbmcgPSBOb25lCiAKLWZyb20gd2Via2l0cHkg
aW1wb3J0IGxheW91dF90ZXN0cworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5mYWN0
b3J5IGltcG9ydCBQb3J0RmFjdG9yeQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJv
bGxlcnMgaW1wb3J0IG1lc3NhZ2VfYnJva2VyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52
aWV3cyBpbXBvcnQgcHJpbnRpbmcKIApAQCAtOTksOCArOTksNyBAQCBkZWYgZ2V0KHBvcnQsIG9w
dGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKToKICAgICAgICAgcXVldWVfY2xhc3MgPSBtdWx0
aXByb2Nlc3NpbmcuUXVldWUKICAgICAgICAgbWFuYWdlcl9jbGFzcyA9IF9NdWx0aVByb2Nlc3NN
YW5hZ2VyCiAgICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5zdXBwb3J0ZWQg
dmFsdWUgZm9yIC0td29ya2VyLW1vZGVsOiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAg
IHdvcmtlcl9tb2RlbCkKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5zdXBwb3J0ZWQgdmFs
dWUgZm9yIC0td29ya2VyLW1vZGVsOiAlcyIgJSB3b3JrZXJfbW9kZWwpCiAKICAgICBicm9rZXIg
PSBtZXNzYWdlX2Jyb2tlci5Ccm9rZXIob3B0aW9ucywgcXVldWVfY2xhc3MpCiAgICAgcmV0dXJu
IG1hbmFnZXJfY2xhc3MoYnJva2VyLCBwb3J0LCBvcHRpb25zLCBjbGllbnQsIHdvcmtlcl9jbGFz
cykKQEAgLTI1Myw3ICsyNTIsOCBAQCBpZiBtdWx0aXByb2Nlc3Npbmc6CiAKICAgICAgICAgZGVm
IHJ1bihzZWxmKToKICAgICAgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCi0gICAgICAg
ICAgICBwb3J0X29iaiA9IGxheW91dF90ZXN0cy5wb3J0LmdldChzZWxmLl9wbGF0Zm9ybV9uYW1l
LCBvcHRpb25zKQorICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgZ2V0IHRoZSBQb3J0
RmFjdG9yeSBmcm9tIHRoZSBIb3N0LgorICAgICAgICAgICAgcG9ydF9vYmogPSBQb3J0RmFjdG9y
eSgpLmdldChzZWxmLl9wbGF0Zm9ybV9uYW1lLCBvcHRpb25zKQogCiAgICAgICAgICAgICAjIFRo
ZSB1bml4IG11bHRpcHJvY2Vzc2luZyBpbXBsZW1lbnRhdGlvbiBjbG9uZXMgdGhlCiAgICAgICAg
ICAgICAjIGxvZyBoYW5kbGVyIGNvbmZpZ3VyYXRpb24gaW50byB0aGUgY2hpbGQgcHJvY2Vzc2Vz
LApAQCAtMjYzLDggKzI2Myw3IEBAIGlmIG11bHRpcHJvY2Vzc2luZzoKICAgICAgICAgICAgICMg
RklYTUU6IHRoaXMgd29uJ3Qgd29yayBpZiB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGxvZ2dpbmcK
ICAgICAgICAgICAgICMgc29tZXdoZXJlIG90aGVyIHRoYW4gc3lzLnN0ZGVyciBhbmQgc3lzLnN0
ZG91dCwgYnV0IEknbSBub3Qgc3VyZQogICAgICAgICAgICAgIyBpZiB0aGlzIHdpbGwgYmUgYW4g
aXNzdWUgaW4gcHJhY3RpY2UuCi0gICAgICAgICAgICBwcmludGVyID0gcHJpbnRpbmcuUHJpbnRl
cihwb3J0X29iaiwgb3B0aW9ucywgc3lzLnN0ZGVyciwgc3lzLnN0ZG91dCwKLSAgICAgICAgICAg
ICAgICBjb25maWd1cmVfbG9nZ2luZykKKyAgICAgICAgICAgIHByaW50ZXIgPSBwcmludGluZy5Q
cmludGVyKHBvcnRfb2JqLCBvcHRpb25zLCBzeXMuc3RkZXJyLCBzeXMuc3Rkb3V0LCBjb25maWd1
cmVfbG9nZ2luZykKICAgICAgICAgICAgIHNlbGYuX2NsaWVudC5ydW4ocG9ydF9vYmopCiAgICAg
ICAgICAgICBwcmludGVyLmNsZWFudXAoKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKaW5kZXggYjIyNGMxZDQ3Y2I0YmRl
YTRiNDc2NzNlOTE3MzZjOGNlMjAxMGViOS4uZTgwNzY1YTk5MzliYjlkNjU1YTVhODE1OTY5MTNi
OGJhNWQ4YmVkZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29y
a2VyX2Jyb2tlcl91bml0dGVzdC5weQpAQCAtMzgsMTIgKzM4LDE0IEBAIGV4Y2VwdCBJbXBvcnRF
cnJvcjoKIAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1
cmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIAogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9ydCBtYW5hZ2VyX3dvcmtlcl9icm9rZXIKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9ydCBtZXNzYWdlX2Jyb2tlcgogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MgaW1wb3J0IHByaW50aW5nCiAKKwogIyBJbiBv
cmRlciB0byByZWxpYWJseSBjb250cm9sIHdoZW4gY2hpbGQgd29ya2VycyBhcmUgc3RhcnRpbmcg
YW5kIHN0b3BwaW5nLAogIyB3ZSB1c2UgYSBwYWlyIG9mIGdsb2JhbCB2YXJpYWJsZXMgdG8gaG9s
ZCBxdWV1ZXMgdXNlZCBmb3IgbWVzc2FnaW5nLiBJZGVhbGx5CiAjIHdlIHdvdWxkbid0IG5lZWQg
Z2xvYmFscywgYnV0IHdlIGNhbid0IHBhc3MgdGhlc2UgdGhyb3VnaCBhIGxleGljYWwgY2xvc3Vy
ZQpAQCAtNTksNyArNjEsOSBAQCBkZWYgbWFrZV9icm9rZXIobWFuYWdlciwgd29ya2VyX21vZGVs
LCBzdGFydF9xdWV1ZT1Ob25lLCBzdG9wX3F1ZXVlPU5vbmUpOgogICAgIHN0YXJ0aW5nX3F1ZXVl
ID0gc3RhcnRfcXVldWUKICAgICBzdG9wcGluZ19xdWV1ZSA9IHN0b3BfcXVldWUKICAgICBvcHRp
b25zID0gZ2V0X29wdGlvbnMod29ya2VyX21vZGVsKQotICAgIHJldHVybiBtYW5hZ2VyX3dvcmtl
cl9icm9rZXIuZ2V0KHBvcnQuZ2V0KCJ0ZXN0IiksIG9wdGlvbnMsIG1hbmFnZXIsIF9UZXN0V29y
a2VyKQorICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgdGVzdF9wb3J0ID0gaG9zdC5wb3J0X2Zh
Y3RvcnkuZ2V0KCJ0ZXN0IikKKyAgICByZXR1cm4gbWFuYWdlcl93b3JrZXJfYnJva2VyLmdldCh0
ZXN0X3BvcnQsIG9wdGlvbnMsIG1hbmFnZXIsIF9UZXN0V29ya2VyKQogCiAKIGNsYXNzIF9UZXN0
V29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X2V4
cGVjdGF0aW9uc19lZGl0b3JfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X2V4cGVjdGF0aW9uc19lZGl0b3JfdW5pdHRlc3Qu
cHkKaW5kZXggYTgxOWZhZWJjZTIyMzM0NGY0NWU0NGUwNjdkMTU3ZTk0MjY3Zjg5Zi4uZjM2NWQ3
N2FjYTk0MTcwODJlOTBjYWJkNjQ3MGY3YmQ4N2YxYjRmMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9leHBlY3RhdGlvbnNf
ZWRpdG9yX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL3Rlc3RfZXhwZWN0YXRpb25zX2VkaXRvcl91bml0dGVzdC5weQpAQCAt
MjksMTIgKzI5LDEyIEBACiAKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cyBpbXBvcnQgcG9ydAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9y
dCBNb2NrSG9zdAorCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy50ZXN0
X2V4cGVjdGF0aW9uc19lZGl0b3IgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
Lm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0ICoKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLm1vZGVscy50ZXN0X2V4cGVjdGF0aW9ucyBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgKgotZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYmFzZQogCiAKIGNsYXNzIE1vY2tCdWdNYW5h
Z2VyKG9iamVjdCk6CkBAIC03MCw3ICs3MCw4IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbkVkaXRv
clRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBdKQogCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHRlc3RGdW5jKToKLSAgICAgICAgc2VsZi50ZXN0X3BvcnQgPSBwb3J0LmdldCgndGVzdC13
aW4teHAnLCBOb25lKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBzZWxmLnRl
c3RfcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdC13aW4teHAnLCBOb25lKQogICAg
ICAgICBzZWxmLmZ1bGxfdGVzdF9saXN0ID0gWydmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5o
dG1sJywgJ2ZhaWx1cmVzL2V4cGVjdGVkL2F1ZGlvLmh0bWwnXQogICAgICAgICB1bml0dGVzdC5U
ZXN0Q2FzZS5fX2luaXRfXyhzZWxmLCB0ZXN0RnVuYykKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfY29uZmlndXJhdGlvbl91bml0
dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0
X2NvbmZpZ3VyYXRpb25fdW5pdHRlc3QucHkKaW5kZXggYzRkN2U4YWU2YWUyNTgwYzY3ZjljMTBm
NDMwOWIxNDZjY2M0MWY3MS4uZGEwNjQzZTkwYmIyOGY0OWM3MDQwNWI2OWEwYTEzOGIzYmViMDEz
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxz
L3Rlc3RfY29uZmlndXJhdGlvbl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9jb25maWd1cmF0aW9uX3VuaXR0ZXN0LnB5CkBA
IC0yOCw3ICsyOCw4IEBACiAKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cyBpbXBvcnQgcG9ydAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9y
dCBNb2NrSG9zdAorCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25m
aWd1cmF0aW9uIGltcG9ydCAqCiAKIApAQCAtOTAsNyArOTEsOSBAQCBjbGFzcyBUZXN0Q29uZmln
dXJhdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZXEoc2VsZik6
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFRlc3RDb25maWd1cmF0aW9uKCd4cCcsICd4ODYn
LCAncmVsZWFzZScsICdjcHUnKSwgVGVzdENvbmZpZ3VyYXRpb24oJ3hwJywgJ3g4NicsICdyZWxl
YXNlJywgJ2NwdScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhUZXN0Q29uZmlndXJhdGlv
bi5mcm9tX3BvcnQocG9ydC5nZXQoJ3Rlc3Qtd2luLXhwJywgTm9uZSkpLCBUZXN0Q29uZmlndXJh
dGlvbigneHAnLCAneDg2JywgJ3JlbGVhc2UnLCAnY3B1JykpCisgICAgICAgIGhvc3QgPSBNb2Nr
SG9zdCgpCisgICAgICAgIHRlc3RfcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdC13
aW4teHAnLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhUZXN0Q29uZmlndXJhdGlv
bi5mcm9tX3BvcnQodGVzdF9wb3J0KSwgVGVzdENvbmZpZ3VyYXRpb24oJ3hwJywgJ3g4NicsICdy
ZWxlYXNlJywgJ2NwdScpKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFscyhUZXN0Q29uZmln
dXJhdGlvbigneHAnLCAneDg2JywgJ3JlbGVhc2UnLCAnZ3B1JyksIFRlc3RDb25maWd1cmF0aW9u
KCd4cCcsICd4ODYnLCAncmVsZWFzZScsICdjcHUnKSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RF
cXVhbHMoVGVzdENvbmZpZ3VyYXRpb24oJ3hwJywgJ3g4NicsICdkZWJ1ZycsICdjcHUnKSwgVGVz
dENvbmZpZ3VyYXRpb24oJ3hwJywgJ3g4NicsICdyZWxlYXNlJywgJ2NwdScpKQogCkBAIC0xMDIs
NyArMTA1LDkgQEAgY2xhc3MgVGVzdENvbmZpZ3VyYXRpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2V0KFsneHAnLCAneDg2JywgJ3JlbGVhc2Un
LCAnY3B1J10pLCBzZXQocmVzdWx0X2NvbmZpZ192YWx1ZXMpKQogCiAgICAgZGVmIHRlc3RfZnJv
bV9wb3J0KHNlbGYpOgotICAgICAgICBjb25maWcgPSBUZXN0Q29uZmlndXJhdGlvbi5mcm9tX3Bv
cnQocG9ydC5nZXQoJ3Rlc3Qtd2luLXhwJywgTm9uZSkpCisgICAgICAgIGhvc3QgPSBNb2NrSG9z
dCgpCisgICAgICAgIHRlc3RfcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdC13aW4t
eHAnLCBOb25lKQorICAgICAgICBjb25maWcgPSBUZXN0Q29uZmlndXJhdGlvbi5mcm9tX3BvcnQo
dGVzdF9wb3J0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnPHhwLCB4ODYsIHJlbGVhc2Us
IGNwdT4nLCBzdHIoY29uZmlnKSkKIAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlv
bnNfdW5pdHRlc3QucHkKaW5kZXggY2NmNGJhNTNiMGQwMjkwNzMyMjUwMzM5YjBiOGRjYjliNTE5
NjQxNi4uMWE2NGYyMWM1NjQ0OWM4MTVhNjIzNTc0N2Y1YTdiYmU2YWQ5ZWZjOSAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0
YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpAQCAtMjksOCArMjksOCBA
QAogCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0
IHBvcnQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJhc2UKK2Zyb20g
d2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKKwogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgKgogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfZXhwZWN0YXRpb25zIGltcG9ydCAqCiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9y
dCAqCkBAIC05Miw3ICs5Miw4IEBAIGNsYXNzIEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICMgYmVpbmcgdGVzdGVkIGlzIFdpbmRvd3MgWFAsIFJlbGVhc2UgYnVpbGQuCiAKICAgICBkZWYg
X19pbml0X18oc2VsZiwgdGVzdEZ1bmMsIHNldFVwPU5vbmUsIHRlYXJEb3duPU5vbmUsIGRlc2Ny
aXB0aW9uPU5vbmUpOgotICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydC5nZXQoJ3Rlc3Qtd2luLXhw
JywgTm9uZSkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgc2VsZi5fcG9ydCA9
IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdC13aW4teHAnLCBOb25lKQogICAgICAgICBzZWxm
Ll9mcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5fZXhwID0gTm9uZQog
ICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmLCB0ZXN0RnVuYykKQEAgLTQ1
Myw3ICs0NTQsOCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25QYXJzZXJUZXN0cyh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGF0aW9uLmVycm9y
cyksIDApCiAKICAgICBkZWYgdGVzdF9wYXJzZV9lbXB0eV9zdHJpbmcoc2VsZik6Ci0gICAgICAg
IHRlc3RfcG9ydCA9IHBvcnQuZ2V0KCd0ZXN0LXdpbi14cCcsIE5vbmUpCisgICAgICAgIGhvc3Qg
PSBNb2NrSG9zdCgpCisgICAgICAgIHRlc3RfcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgn
dGVzdC13aW4teHAnLCBOb25lKQogICAgICAgICB0ZXN0X3BvcnQudGVzdF9leGlzdHMgPSBsYW1i
ZGEgdGVzdDogVHJ1ZQogICAgICAgICB0ZXN0X2NvbmZpZyA9IHRlc3RfcG9ydC50ZXN0X2NvbmZp
Z3VyYXRpb24oKQogICAgICAgICBmdWxsX3Rlc3RfbGlzdCA9IFtdCkBAIC00NjUsNyArNDY3LDgg
QEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uUGFyc2VyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgog
CiBjbGFzcyBUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyVGVzdHModW5pdHRlc3QuVGVzdENhc2Up
OgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0RnVuYyk6Ci0gICAgICAgIHRlc3RfcG9ydCA9
IHBvcnQuZ2V0KCd0ZXN0LXdpbi14cCcsIE5vbmUpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgp
CisgICAgICAgIHRlc3RfcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdC13aW4teHAn
LCBOb25lKQogICAgICAgICBzZWxmLl9jb252ZXJ0ZXIgPSBUZXN0Q29uZmlndXJhdGlvbkNvbnZl
cnRlcih0ZXN0X3BvcnQuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoKSwgdGVzdF9wb3J0LmNvbmZp
Z3VyYXRpb25fc3BlY2lmaWVyX21hY3JvcygpKQogICAgICAgICBzZWxmLl9zZXJpYWxpemVyID0g
VGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplcihzZWxmLl9jb252ZXJ0ZXIpCiAgICAgICAgIHVuaXR0
ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsIHRlc3RGdW5jKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9fX2luaXRfXy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvX19pbml0X18ucHkKaW5kZXggYmM3MGM3
MjhmOTlhMmY4ZmI2ZDk2ZmMyODM5OWZmMDk3YjIyODY4MC4uZTU4NDY5ODI2NzE2NjM4NDU3MTAz
MWUxZmZlNzJjNjhiYWE2ZTE5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9fX2luaXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L19faW5pdF9fLnB5CkBAIC0yOSw4ICsyOSw2IEBACiAKICIiIlBv
cnQtc3BlY2lmaWMgZW50cnlwb2ludHMgZm9yIHRoZSBsYXlvdXQgdGVzdHMgdGVzdCBpbmZyYXN0
cnVjdHVyZS4iIiIKIAotZnJvbSBmYWN0b3J5IGltcG9ydCBnZXQKLQogaW1wb3J0IGJ1aWxkZXJz
ICAjIFdoeSBpcyB0aGlzIGluIHBvcnQ/CiAKIGZyb20gYmFzZSBpbXBvcnQgUG9ydCAgIyBJdCdz
IHBvc3NpYmxlIHdlIGRvbid0IG5lZWQgdG8gZXhwb3J0IHRoaXMgdmlydHVhbCBiYXNlY2xhc3Mg
b3V0c2lkZSB0aGUgbW9kdWxlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weQppbmRl
eCA3ODlkNzJmNDc4ZGU2ZTE3NDNhZDQ1OGIyNWVmYmI1OTA2M2FhNWI4Li43MDE1YzRhNzJkODc0
ZDY5YTk5Y2Y0MGVkYjc4MTU4ODRhYWY3ODk3IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0
dGVzdC5weQpAQCAtMjcsMTIgKzI3LDEzIEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QK
IAotZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9vbAogaW1wb3J0IGNocm9taXVtX2dw
dQogCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBmYWN0b3J5Citmcm9t
IHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCitmcm9tIHdlYmtpdHB5
LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCiAKKwogY2xhc3MgQ2hyb21pdW1HcHVUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgaW50ZWdyYXRpb25fdGVzdF9jaHJvbWl1bV9n
cHVfbGludXgoc2VsZik6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBub3QgaW4gKCdsaW51eDIn
LCAnbGludXgzJyk6CkBAIC01OCw3ICs1OSw3IEBAIGNsYXNzIENocm9taXVtR3B1VGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgYXNzZXJ0X3BvcnRfd29ya3Moc2VsZiwgcG9ydF9u
YW1lLCBpbnB1dF9uYW1lPU5vbmUsIHBsYXRmb3JtPU5vbmUpOgogICAgICAgICAjIHRlc3QgdGhh
dCB3ZSBnb3QgdGhlIHJpZ2h0IHBvcnQKLSAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wu
TW9ja09wdGlvbnMoYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmc9Tm9uZSwKKyAgICAgICAgbW9ja19v
cHRpb25zID0gTW9ja09wdGlvbnMoYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmc9Tm9uZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZWxlcmF0ZWRfMmRfY2Fu
dmFzPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXJfbmFtZT0nZm9vJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hpbGRfcHJvY2Vzc2VzPU5vbmUpCkBAIC0xMDIsMzUgKzEwMywyNCBAQCBjbGFzcyBD
aHJvbWl1bUdwdVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHBvcnQuX2ZpbGVzeXN0ZW0uZXhpc3RzKHBvcnQuYWJzcGF0aF9mb3JfdGVzdChwYXRo
KSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhdGggaW4gZmlsZXMpCiAKLSAgICBk
ZWYgdGVzdF9jaHJvbWl1bV9ncHVfX3Zpc3RhKHNlbGYpOgotICAgICAgICBwb3J0ID0gZmFjdG9y
eS5nZXQoJ2Nocm9taXVtLWdwdS13aW4tdmlzdGEnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhwb3J0Lm5hbWUoKSwgJ2Nocm9taXVtLWdwdS13aW4tdmlzdGEnKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhwb3J0LmJhc2VsaW5lX3BhdGgoKSwgcG9ydC5fd2Via2l0X2Jhc2VsaW5lX3Bh
dGgoJ2Nocm9taXVtLWdwdS13aW4nKSkKLQotICAgIGRlZiB0ZXN0X2Nocm9taXVtX2dwdV9feHAo
c2VsZik6Ci0gICAgICAgIHBvcnQgPSBmYWN0b3J5LmdldCgnY2hyb21pdW0tZ3B1LXdpbi14cCcp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQubmFtZSgpLCAnY2hyb21pdW0tZ3B1LXdp
bi14cCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuYmFzZWxpbmVfcGF0aCgpLCBw
b3J0Ll93ZWJraXRfYmFzZWxpbmVfcGF0aCgnY2hyb21pdW0tZ3B1LXdpbicpKQotCi0gICAgZGVm
IHRlc3RfY2hyb21pdW1fZ3B1X193aW43KHNlbGYpOgotICAgICAgICBwb3J0ID0gZmFjdG9yeS5n
ZXQoJ2Nocm9taXVtLWdwdS13aW4td2luNycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBv
cnQubmFtZSgpLCAnY2hyb21pdW0tZ3B1LXdpbi13aW43JykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMocG9ydC5iYXNlbGluZV9wYXRoKCksIHBvcnQuX3dlYmtpdF9iYXNlbGluZV9wYXRoKCdj
aHJvbWl1bS1ncHUtd2luJykpCi0KLSAgICBkZWYgdGVzdF9jaHJvbWl1bV9ncHVfX2xlb3BhcmQo
c2VsZik6Ci0gICAgICAgIHBvcnQgPSBmYWN0b3J5LmdldCgnY2hyb21pdW0tZ3B1LWNnLW1hYy1s
ZW9wYXJkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5uYW1lKCksICdjaHJvbWl1
bS1ncHUtY2ctbWFjLWxlb3BhcmQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0LmJh
c2VsaW5lX3BhdGgoKSwgcG9ydC5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ2Nocm9taXVtLWdwdS1j
Zy1tYWMnKSkKKyAgICBkZWYgX2Fzc2VydF9iYXNlbGluZV9wYXRoKHNlbGYsIHBvcnRfbmFtZSwg
YmFzZWxpbmVfcGF0aCk6CisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHBvcnQg
PSBob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhwb3J0Lm5hbWUoKSwgcG9ydF9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhw
b3J0LmJhc2VsaW5lX3BhdGgoKSwgcG9ydC5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoYmFzZWxpbmVf
cGF0aCkpCiAKLSAgICBkZWYgdGVzdF9jaHJvbWl1bV9ncHVfX3Nub3dsZW9wYXJkKHNlbGYpOgot
ICAgICAgICBwb3J0ID0gZmFjdG9yeS5nZXQoJ2Nocm9taXVtLWdwdS1jZy1tYWMtc25vd2xlb3Bh
cmQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Lm5hbWUoKSwgJ2Nocm9taXVtLWdw
dS1jZy1tYWMtc25vd2xlb3BhcmQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0LmJh
c2VsaW5lX3BhdGgoKSwgcG9ydC5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ2Nocm9taXVtLWdwdS1j
Zy1tYWMnKSkKKyAgICBkZWYgdGVzdF9iYXNlbGluZV9wYXRocyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5fYXNzZXJ0X2Jhc2VsaW5lX3BhdGgoJ2Nocm9taXVtLWdwdS13aW4tdmlzdGEnLCAnY2hyb21p
dW0tZ3B1LXdpbicpCisgICAgICAgIHNlbGYuX2Fzc2VydF9iYXNlbGluZV9wYXRoKCdjaHJvbWl1
bS1ncHUtd2luLXhwJywgJ2Nocm9taXVtLWdwdS13aW4nKQorICAgICAgICBzZWxmLl9hc3NlcnRf
YmFzZWxpbmVfcGF0aCgnY2hyb21pdW0tZ3B1LXdpbi13aW43JywgJ2Nocm9taXVtLWdwdS13aW4n
KQorICAgICAgICBzZWxmLl9hc3NlcnRfYmFzZWxpbmVfcGF0aCgnY2hyb21pdW0tZ3B1LWNnLW1h
Yy1sZW9wYXJkJywgJ2Nocm9taXVtLWdwdS1jZy1tYWMnKQorICAgICAgICBzZWxmLl9hc3NlcnRf
YmFzZWxpbmVfcGF0aCgnY2hyb21pdW0tZ3B1LWNnLW1hYy1zbm93bGVvcGFyZCcsICdjaHJvbWl1
bS1ncHUtY2ctbWFjJykKIAogICAgIGRlZiB0ZXN0X2dyYXBoaWNzX3R5cGUoc2VsZik6Ci0gICAg
ICAgIHBvcnQgPSBmYWN0b3J5LmdldCgnY2hyb21pdW0tZ3B1LWNnLW1hYycpCisgICAgICAgIGhv
c3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHBvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoJ2No
cm9taXVtLWdwdS1jZy1tYWMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnZ3B1LWNnJywg
cG9ydC5ncmFwaGljc190eXBlKCkpCi0gICAgICAgIHBvcnQgPSBmYWN0b3J5LmdldCgnY2hyb21p
dW0tZ3B1LW1hYycpCisgICAgICAgIHBvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoJ2Nocm9t
aXVtLWdwdS1tYWMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnZ3B1JywgcG9ydC5ncmFw
aGljc190eXBlKCkpCiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKaW5kZXggZGVjMDljNDUx
MzlmNWMzMGE1NGU5ZTE1OTdkMGJhNjIzNTBlMzhmNC4uZGUwZTk4MjY4MjBlNDFkY2I5YjZmOTk4
NzA1YjMzYTFkOTUzMTgzNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CkBAIC0zMCwxMSAr
MzAsMTEgQEAgaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgU3RyaW5nSU8KIAogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d0ZXN0aW5nCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZV9tb2NrCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0g
aW1wb3J0IGZpbGVzeXN0ZW1fbW9jawotZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9v
bAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2Nr
RXhlY3V0aXZlLCBNb2NrRXhlY3V0aXZlMgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZp
bGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS51c2VyX21vY2sgaW1wb3J0IE1vY2tVc2VyCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFy
dHkubW9jayBpbXBvcnQgTW9jawotCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0
IE1vY2tPcHRpb25zCiAKIGltcG9ydCBjaHJvbWl1bQogaW1wb3J0IGNocm9taXVtX2xpbnV4CkBA
IC0xODQsMTAgKzE4NCw4IEBAIGNsYXNzIENocm9taXVtUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Q
b3J0VGVzdENhc2UpOgogCiAgICAgY2xhc3MgVGVzdE1hY1BvcnQoY2hyb21pdW1fbWFjLkNocm9t
aXVtTWFjUG9ydCk6CiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKLSAgICAg
ICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBNb2NrRXhlY3V0aXZlIGFuZCBNb2NrVXNl
ciBhcyB3ZWxsLgotICAgICAgICAgICAgY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydC5fX2lu
aXRfXyhzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcHRpb25zPW9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbV9tb2NrLk1vY2tGaWxlU3lzdGVt
KCkpCisgICAgICAgICAgICBjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0Ll9faW5pdF9fKHNl
bGYsIG9wdGlvbnM9b3B0aW9ucywKKyAgICAgICAgICAgICAgICBmaWxlc3lzdGVtPU1vY2tGaWxl
U3lzdGVtKCksIHVzZXI9TW9ja1VzZXIoKSwgZXhlY3V0aXZlPU1vY2tFeGVjdXRpdmUoKSkKIAog
ICAgICAgICBkZWYgZGVmYXVsdF9jb25maWd1cmF0aW9uKHNlbGYpOgogICAgICAgICAgICAgc2Vs
Zi5kZWZhdWx0X2NvbmZpZ3VyYXRpb25fY2FsbGVkID0gVHJ1ZQpAQCAtMTk1LDEwICsxOTMsOCBA
QCBjbGFzcyBDaHJvbWl1bVBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKIAog
ICAgIGNsYXNzIFRlc3RMaW51eFBvcnQoY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQp
OgogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0gICAgICAgICAgICAjIEZJ
WE1FOiBUaGlzIHNob3VsZCB1c2UgTW9ja0V4ZWN1dGl2ZSBhbmQgTW9ja1VzZXIgYXMgd2VsbC4K
LSAgICAgICAgICAgIGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0Ll9faW5pdF9fKHNl
bGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcHRpb25zPW9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtPWZpbGVzeXN0ZW1fbW9jay5Nb2NrRmlsZVN5c3Rl
bSgpKQorICAgICAgICAgICAgY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQuX19pbml0
X18oc2VsZiwgb3B0aW9ucz1vcHRpb25zLAorICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW09TW9j
a0ZpbGVTeXN0ZW0oKSwgdXNlcj1Nb2NrVXNlcigpLCBleGVjdXRpdmU9TW9ja0V4ZWN1dGl2ZSgp
KQogCiAgICAgICAgIGRlZiBkZWZhdWx0X2NvbmZpZ3VyYXRpb24oc2VsZik6CiAgICAgICAgICAg
ICBzZWxmLmRlZmF1bHRfY29uZmlndXJhdGlvbl9jYWxsZWQgPSBUcnVlCkBAIC0yMDYsMjkgKzIw
MiwyNSBAQCBjbGFzcyBDaHJvbWl1bVBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNl
KToKIAogICAgIGNsYXNzIFRlc3RXaW5Qb3J0KGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQp
OgogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0gICAgICAgICAgICAjIEZJ
WE1FOiBUaGlzIHNob3VsZCB1c2UgTW9ja0V4ZWN1dGl2ZSBhbmQgTW9ja1VzZXIgYXMgd2VsbC4K
LSAgICAgICAgICAgIGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQuX19pbml0X18oc2VsZiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9u
cz1vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWxlc3lzdGVtPWZpbGVzeXN0ZW1fbW9jay5Nb2NrRmlsZVN5c3RlbSgpKQorICAgICAg
ICAgICAgY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydC5fX2luaXRfXyhzZWxmLCBvcHRpb25z
PW9wdGlvbnMsCisgICAgICAgICAgICAgICAgZmlsZXN5c3RlbT1Nb2NrRmlsZVN5c3RlbSgpLCB1
c2VyPU1vY2tVc2VyKCksIGV4ZWN1dGl2ZT1Nb2NrRXhlY3V0aXZlKCkpCiAKICAgICAgICAgZGVm
IGRlZmF1bHRfY29uZmlndXJhdGlvbihzZWxmKToKICAgICAgICAgICAgIHNlbGYuZGVmYXVsdF9j
b25maWd1cmF0aW9uX2NhbGxlZCA9IFRydWUKICAgICAgICAgICAgIHJldHVybiAnZGVmYXVsdCcK
IAogICAgIGRlZiB0ZXN0X3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKLSAgICAgICAgbW9ja19v
cHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMoKQorICAgICAgICBtb2NrX29wdGlvbnMgPSBN
b2NrT3B0aW9ucygpCiAgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBv
cnQob3B0aW9ucz1tb2NrX29wdGlvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9w
YXRoX3RvX2ltYWdlX2RpZmYoKS5lbmRzd2l0aCgKLSAgICAgICAgICAgICcvb3V0L2RlZmF1bHQv
SW1hZ2VEaWZmJykpCisgICAgICAgICMgRklYTUU6IFRoZXNlIGRvbid0IG5lZWQgdG8gdXNlIGVu
ZHN3aXRoIG5vdyB0aGF0IHRoZSBwb3J0IHVzZXMgYSBNb2NrRmlsZVN5c3RlbS4KKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHBvcnQuX3BhdGhfdG9faW1hZ2VfZGlmZigpLmVuZHN3aXRoKCcvb3V0
L2RlZmF1bHQvSW1hZ2VEaWZmJykpCiAgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRl
c3RNYWNQb3J0KG9wdGlvbnM9bW9ja19vcHRpb25zKQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
cG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCkuZW5kc3dpdGgoCi0gICAgICAgICAgICAnL3hjb2Rl
YnVpbGQvZGVmYXVsdC9JbWFnZURpZmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQu
X3BhdGhfdG9faW1hZ2VfZGlmZigpLmVuZHN3aXRoKCcveGNvZGVidWlsZC9kZWZhdWx0L0ltYWdl
RGlmZicpKQogICAgICAgICBwb3J0ID0gQ2hyb21pdW1Qb3J0VGVzdC5UZXN0V2luUG9ydChvcHRp
b25zPW1vY2tfb3B0aW9ucykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX3BhdGhfdG9f
aW1hZ2VfZGlmZigpLmVuZHN3aXRoKAotICAgICAgICAgICAgJy9kZWZhdWx0L0ltYWdlRGlmZi5l
eGUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX3BhdGhfdG9faW1hZ2VfZGlmZigp
LmVuZHN3aXRoKCcvZGVmYXVsdC9JbWFnZURpZmYuZXhlJykpCiAKICAgICBkZWYgdGVzdF9za2lw
cGVkX2xheW91dF90ZXN0cyhzZWxmKToKLSAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wu
TW9ja09wdGlvbnMoKQorICAgICAgICBtb2NrX29wdGlvbnMgPSBNb2NrT3B0aW9ucygpCiAgICAg
ICAgIG1vY2tfb3B0aW9ucy5jb25maWd1cmF0aW9uID0gJ3JlbGVhc2UnCiAgICAgICAgIHBvcnQg
PSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0aW9ucz1tb2NrX29wdGlvbnMpCiAK
QEAgLTI0NCwxMiArMjM2LDEyIEBAIExJTlVYIFdJTiA6IGZhc3QvanMvdmVyeS1nb29kLmpzID0g
VElNRU9VVCBQQVNTIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiZmFzdC9qcy9ub3QtZ29v
ZC5qcyIgaW4gc2tpcHBlZF90ZXN0cykKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29uZmlndXJh
dGlvbihzZWxmKToKLSAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMo
KQorICAgICAgICBtb2NrX29wdGlvbnMgPSBNb2NrT3B0aW9ucygpCiAgICAgICAgIHBvcnQgPSBD
aHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0aW9ucz1tb2NrX29wdGlvbnMpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1vY2tfb3B0aW9ucy5jb25maWd1cmF0aW9uLCAnZGVmYXVs
dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRlZmF1bHRfY29uZmlndXJhdGlvbl9j
YWxsZWQpCiAKLSAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMoY29u
ZmlndXJhdGlvbj1Ob25lKQorICAgICAgICBtb2NrX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25m
aWd1cmF0aW9uPU5vbmUpCiAgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51
eFBvcnQobW9ja19vcHRpb25zKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtb2NrX29wdGlv
bnMuY29uZmlndXJhdGlvbiwgJ2RlZmF1bHQnKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9y
dC5kZWZhdWx0X2NvbmZpZ3VyYXRpb25fY2FsbGVkKQpAQCAtMjU5LDcgKzI1MSw3IEBAIExJTlVY
IFdJTiA6IGZhc3QvanMvdmVyeS1nb29kLmpzID0gVElNRU9VVCBQQVNTIiIiCiAgICAgICAgICAg
ICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4g
Ii9wYXRoL3RvL2ltYWdlX2RpZmYiCiAKLSAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wu
TW9ja09wdGlvbnMoKQorICAgICAgICBtb2NrX29wdGlvbnMgPSBNb2NrT3B0aW9ucygpCiAgICAg
ICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQobW9ja19vcHRpb25zKQog
CiAgICAgICAgIG1vY2tfaW1hZ2VfZGlmZiA9ICJNT0NLIEltYWdlIERpZmYiCkBAIC0yNjksMTUg
KzI2MSwxNSBAQCBMSU5VWCBXSU4gOiBmYXN0L2pzL3ZlcnktZ29vZC5qcyA9IFRJTUVPVVQgUEFT
UyIiIgogICAgICAgICAgICAgcmV0dXJuIDEKIAogICAgICAgICAjIEltYWdlcyBhcmUgZGlmZmVy
ZW50LgotICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBleGVjdXRpdmVfbW9jay5Nb2NrRXhlY3V0
aXZlMihydW5fY29tbWFuZF9mbj1tb2NrX3J1bl9jb21tYW5kKQorICAgICAgICBwb3J0Ll9leGVj
dXRpdmUgPSBNb2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9mbj1tb2NrX3J1bl9jb21tYW5kKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtb2NrX2ltYWdlX2RpZmYsIHBvcnQuZGlmZl9pbWFn
ZSgiRVhQRUNURUQiLCAiQUNUVUFMIilbMF0pCiAKICAgICAgICAgIyBJbWFnZXMgYXJlIHRoZSBz
YW1lLgotICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBleGVjdXRpdmVfbW9jay5Nb2NrRXhlY3V0
aXZlMihleGl0X2NvZGU9MCkKKyAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2
ZTIoZXhpdF9jb2RlPTApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE5vbmUsIHBvcnQuZGlm
Zl9pbWFnZSgiRVhQRUNURUQiLCAiQUNUVUFMIilbMF0pCiAKICAgICAgICAgIyBUaGVyZSB3YXMg
c29tZSBlcnJvciBydW5uaW5nIGltYWdlX2RpZmYuCi0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9
IGV4ZWN1dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUyKGV4aXRfY29kZT0yKQorICAgICAgICBwb3J0
Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihleGl0X2NvZGU9MikKICAgICAgICAgZXhjZXB0
aW9uX3JhaXNlZCA9IEZhbHNlCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHBvcnQuZGlmZl9p
bWFnZSgiRVhQRUNURUQiLCAiQUNUVUFMIikKQEAgLTI5MCw3ICsyODIsNyBAQCBMSU5VWCBXSU4g
OiBmYXN0L2pzL3ZlcnktZ29vZC5qcyA9IFRJTUVPVVQgUEFTUyIiIgogICAgICAgICBpZiBub3Qg
cG9ydDoKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGZpbGVzeXN0ZW0gPSBmaWxlc3lz
dGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oKQorICAgICAgICBmaWxlc3lzdGVtID0gTW9ja0ZpbGVT
eXN0ZW0oKQogICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gZmlsZXN5c3RlbQogICAgICAgICBw
b3J0LnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlID0gbGFtYmRhICpjb21wczogJy8nICsgJy8nLmpv
aW4oY29tcHMpCiAKQEAgLTMxMCwxNSArMzAyLDE1IEBAIExJTlVYIFdJTiA6IGZhc3QvanMvdmVy
eS1nb29kLmpzID0gVElNRU9VVCBQQVNTIiIiCiAKIGNsYXNzIENocm9taXVtUG9ydExvZ2dpbmdU
ZXN0KGxvZ3Rlc3RpbmcuTG9nZ2luZ1Rlc3RDYXNlKToKICAgICBkZWYgdGVzdF9jaGVja19zeXNf
ZGVwcyhzZWxmKToKLSAgICAgICAgbW9ja19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnMo
KQorICAgICAgICBtb2NrX29wdGlvbnMgPSBNb2NrT3B0aW9ucygpCiAgICAgICAgIHBvcnQgPSBD
aHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0aW9ucz1tb2NrX29wdGlvbnMpCiAKICAg
ICAgICAgIyBTdWNjZXNzCi0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZV9tb2Nr
Lk1vY2tFeGVjdXRpdmUyKGV4aXRfY29kZT0wKQorICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBN
b2NrRXhlY3V0aXZlMihleGl0X2NvZGU9MCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQu
Y2hlY2tfc3lzX2RlcHMobmVlZHNfaHR0cD1GYWxzZSkpCiAKICAgICAgICAgIyBGYWlsdXJlCi0g
ICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUyKGV4
aXRfY29kZT0xLAorICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihleGl0
X2NvZGU9MSwKICAgICAgICAgICAgIG91dHB1dD0ndGVzdGluZyBvdXRwdXQgZmFpbHVyZScpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5jaGVja19zeXNfZGVwcyhuZWVkc19odHRwPUZh
bHNlKSkKICAgICAgICAgc2VsZi5hc3NlcnRMb2coWwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQppbmRleCAxZjI2
Y2VkNzE5YTMxYmM4ZGE5NDgwZmI0ZTMyOTY5OGU3MWMwOWVjLi41MzI1YTEwZWVmY2NiYzczN2Y3
NDlhOTE1YzEzODZkY2I3Y2EyZGZkIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQpAQCAtMTAwLDYgKzEwMCw4
IEBAIGNsYXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAg
ICBzZWxmLl9lbmdhZ2VfYXdlc29tZV93aW5kb3dzX2hhY2tzKCkKIAogICAgIGRlZiBfZW5nYWdl
X2F3ZXNvbWVfd2luZG93c19oYWNrcyhzZWxmKToKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9
ICJ3aW4zMiI6CisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAg
c2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2hlbHAnXSkKICAgICAgICAgZXhj
ZXB0IE9TRXJyb3IsIGU6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2RyeXJ1bi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZHJ5cnVuLnB5CmluZGV4IDkzZTkwMWE0OWEwZmZkODNhZWQyYTQ3NDZiZDZlZTM1
NjkwMGQyNTguLjA4NTM0NzQ2NjNjMjMxZmVmMTgxY2M3OWM1MDYxMWQ5MDQzYWY2MTMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJ5cnVuLnB5
CkBAIC02NCw3ICs2NCw4IEBAIGNsYXNzIERyeVJ1blBvcnQob2JqZWN0KToKICAgICAgICAgICAg
ICAgICBrd2FyZ3NbJ3BvcnRfbmFtZSddID0ga3dhcmdzWydwb3J0X25hbWUnXVtsZW4ocGZ4KTpd
CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGt3YXJnc1sncG9ydF9uYW1lJ10g
PSBOb25lCi0gICAgICAgIHNlbGYuX19kZWxlZ2F0ZSA9IGZhY3RvcnkuZ2V0KCoqa3dhcmdzKQor
ICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBnZXQgdGhlIFBvcnRGYWN0b3J5IGZyb20gYSBI
b3N0IG9iamVjdC4KKyAgICAgICAgc2VsZi5fX2RlbGVnYXRlID0gZmFjdG9yeS5Qb3J0RmFjdG9y
eSgpLmdldCgqKmt3YXJncykKIAogICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKICAg
ICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5fX2RlbGVnYXRlLCBuYW1lKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5CmluZGV4IDVi
MWE5MjE2YmI4NGFhZTJhOTAxYTIwZjlmZDc4NmMxODIyYTFjYmYuLjI5ZDVkYTlkY2EyNTRhOTI4
ZGU5NGQ4MTUyYTZkZjg0NmJmODA1ZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkKQEAgLTMyLDYgKzMyLDggQEAKIGltcG9y
dCByZQogaW1wb3J0IHN5cwogCitmcm9tIC50ZXN0IGltcG9ydCB1bml0X3Rlc3RfZmlsZXN5c3Rl
bQorCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBidWlsZGVycwogCiAK
QEAgLTY3LDEyICs2OSwyMiBAQCBjbGFzcyBQb3J0RmFjdG9yeShvYmplY3QpOgogICAgICAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5rbm93biBwb3J0OyBzeXMucGxhdGZvcm0g
PSAiJXMiJyAlIHN5cy5wbGF0Zm9ybSkKICAgICAgICAgcmV0dXJuIHBvcnRfdG9fdXNlCiAKKyAg
ICBkZWYgX3NldF9kZWZhdWx0X292ZXJyaWRpbmdfbm9uZShzZWxmLCBkaWN0aW9uYXJ5LCBrZXks
IGRlZmF1bHQpOgorICAgICAgICAjIGRpY3Quc2V0ZGVmYXVsdCBhbG1vc3Qgd29ya3MsIGJ1dCB3
b24ndCBhY3R1YWxseSBvdmVycmlkZSBOb25lIHZhbHVlcywgd2hpY2ggd2Ugd2FudC4KKyAgICAg
ICAgaWYgbm90IGRpY3Rpb25hcnkuZ2V0KGtleSk6CisgICAgICAgICAgICBkaWN0aW9uYXJ5W2tl
eV0gPSBkZWZhdWx0CisgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5W2tleV0KKwogICAgIGRlZiBf
Z2V0X2t3YXJncyhzZWxmLCAqKmt3YXJncyk6CiAgICAgICAgIHBvcnRfdG9fdXNlID0gc2VsZi5f
cG9ydF9uYW1lX2Zyb21fYXJndW1lbnRzX2FuZF9vcHRpb25zKCoqa3dhcmdzKQogCiAgICAgICAg
IGlmIHBvcnRfdG9fdXNlLnN0YXJ0c3dpdGgoJ3Rlc3QnKToKICAgICAgICAgICAgIGltcG9ydCB0
ZXN0CiAgICAgICAgICAgICBtYWtlciA9IHRlc3QuVGVzdFBvcnQKKyAgICAgICAgICAgICMgRklY
TUU6IFRoaXMgaXMgYSBoYWNrIHRvIG92ZXJyaWRlIHRoZSAiZGVmYXVsdCIgZmlsZXN5c3RlbQor
ICAgICAgICAgICAgIyBwcm92aWRlZCB0byB0aGUgcG9ydC4gIFRoZSB1bml0X3Rlc3RfZmlsZXN5
c3RlbSBoYXMgYW4gZXh0cmEKKyAgICAgICAgICAgICMgX3Rlc3RzIGF0dHJpYnV0ZSB3aGljaCBh
IGJ1bmNoIG9mIHVuaXR0ZXN0cyBkZXBlbmQgb24uCisgICAgICAgICAgICBzZWxmLl9zZXRfZGVm
YXVsdF9vdmVycmlkaW5nX25vbmUoa3dhcmdzLCAnZmlsZXN5c3RlbScsIHVuaXRfdGVzdF9maWxl
c3lzdGVtKCkpCiAgICAgICAgIGVsaWYgcG9ydF90b191c2Uuc3RhcnRzd2l0aCgnZHJ5cnVuJyk6
CiAgICAgICAgICAgICBpbXBvcnQgZHJ5cnVuCiAgICAgICAgICAgICBtYWtlciA9IGRyeXJ1bi5E
cnlSdW5Qb3J0CkBAIC0xMTYsOSArMTI4LDkgQEAgY2xhc3MgUG9ydEZhY3Rvcnkob2JqZWN0KToK
ICAgICAgICAgIyB0aGUgZXhlY3V0aXZlL3VzZXIvZmlsZXN5c3RlbSBmcm9tIHRoZSBwcm92aWRl
ZCBob3N0LgogICAgICAgICAjIEZJWE1FOiBFdmVudHVhbGx5IE5SV1Qgd2lsbCB1c2UgYSBIb3N0
IG9iamVjdCBhbmQgUG9ydCB3aWxsIG5vIGxvbmdlciBzdG9yZSB0aGVzZSBwb2ludGVycy4KICAg
ICAgICAgaWYgc2VsZi5faG9zdDoKLSAgICAgICAgICAgIGt3YXJncy5zZXRkZWZhdWx0KCdleGVj
dXRpdmUnLCBzZWxmLl9ob3N0LmV4ZWN1dGl2ZSkKLSAgICAgICAgICAgIGt3YXJncy5zZXRkZWZh
dWx0KCd1c2VyJywgc2VsZi5faG9zdC51c2VyKQotICAgICAgICAgICAga3dhcmdzLnNldGRlZmF1
bHQoJ2ZpbGVzeXN0ZW0nLCBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0pCisgICAgICAgICAgICBzZWxm
Ll9zZXRfZGVmYXVsdF9vdmVycmlkaW5nX25vbmUoa3dhcmdzLCAnZXhlY3V0aXZlJywgc2VsZi5f
aG9zdC5leGVjdXRpdmUpCisgICAgICAgICAgICBzZWxmLl9zZXRfZGVmYXVsdF9vdmVycmlkaW5n
X25vbmUoa3dhcmdzLCAndXNlcicsIHNlbGYuX2hvc3QudXNlcikKKyAgICAgICAgICAgIHNlbGYu
X3NldF9kZWZhdWx0X292ZXJyaWRpbmdfbm9uZShrd2FyZ3MsICdmaWxlc3lzdGVtJywgc2VsZi5f
aG9zdC5maWxlc3lzdGVtKQogCiAgICAgICAgIHJldHVybiBtYWtlcigqKmt3YXJncykKIApAQCAt
MTQ4LDE1ICsxNjAsMyBAQCBjbGFzcyBQb3J0RmFjdG9yeShvYmplY3QpOgogICAgICAgICBwb3J0
ID0gc2VsZi5nZXQocG9ydF9uYW1lLCBCdWlsZGVyT3B0aW9ucyhidWlsZGVyX25hbWUpKQogICAg
ICAgICBhc3NlcnQocG9ydCkgICMgTmVlZCB0byB1cGRhdGUgcG9ydF9uYW1lX2Zvcl9idWlsZGVy
X25hbWUKICAgICAgICAgcmV0dXJuIHBvcnQKLQotCi0KLSMgRklYTUU6IFRoZXNlIGZyZWUgZnVu
Y3Rpb25zIGFyZSBhbGwgZGVwcmVjYXRlZC4gIENhbGxlcnMgc2hvdWxkIGJlIHVzaW5nIFBvcnRG
YWN0b3J5IGluc3RlYWQuCi1kZWYgYWxsX3BvcnRfbmFtZXMoKToKLSAgICByZXR1cm4gUG9ydEZh
Y3RvcnkoKS5hbGxfcG9ydF9uYW1lcygpCi0KLWRlZiBnZXQocG9ydF9uYW1lPU5vbmUsIG9wdGlv
bnM9Tm9uZSwgKiprd2FyZ3MpOgotICAgIHJldHVybiBQb3J0RmFjdG9yeSgpLmdldChwb3J0X25h
bWUsIG9wdGlvbnMsICoqa3dhcmdzKQotCi1kZWYgZ2V0X2Zyb21fYnVpbGRlcl9uYW1lKGJ1aWxk
ZXJfbmFtZSk6Ci0gICAgcmV0dXJuIFBvcnRGYWN0b3J5KCkuZ2V0X2Zyb21fYnVpbGRlcl9uYW1l
KGJ1aWxkZXJfbmFtZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQppbmRleCA1ZTE1MWFkN2MyNGVj
YmNlMThhMDEzMzlhOGIzOTJkYTQ3Nzc4YzBkLi44ZGFlZDIzNTEyMzg2YmNjNDBkNzYzNWEyNjRh
OWRiODlhYTExODhjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CkBAIC0yOSwxMCArMjksOCBA
QAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5
LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKLWZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS51c2VyX21vY2sgaW1wb3J0IE1vY2tVc2VyCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiAKIGltcG9ydCBjaHJvbWl1bV9ncHUKIGlt
cG9ydCBjaHJvbWl1bV9saW51eApAQCAtNjUsNiArNjMsMTEgQEAgY2xhc3MgRmFjdG9yeVRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc3lz
LnBsYXRmb3JtID0gc2VsZi5yZWFsX3N5c19wbGF0Zm9ybQogCisgICAgZGVmIG1ha2VfZmFjdG9y
eShzZWxmKToKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgIyBUaGUgUG9ydEZh
Y3Rvcnkgb24gTW9ja0hvc3QgaXMgYSByZWFsIFBvcnRGYWN0b3J5IHdpdGggYSBNb2NrRmlsZVN5
c3RlbSwgZXRjLgorICAgICAgICByZXR1cm4gaG9zdC5wb3J0X2ZhY3RvcnkKKwogICAgIGRlZiBh
c3NlcnRfcG9ydChzZWxmLCBwb3J0X25hbWUsIGV4cGVjdGVkX3BvcnQsIHBvcnRfb2JqPU5vbmUp
OgogICAgICAgICAiIiJIZWxwZXIgYXNzZXJ0IGZvciBwb3J0X25hbWUuCiAKQEAgLTczLDggKzc2
LDcgQEAgY2xhc3MgRmFjdG9yeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgIGV4
cGVjdGVkX3BvcnQ6IGNsYXNzIG9mIGV4cGVjdGVkIHBvcnQgb2JqZWN0LgogICAgICAgICAgIHBv
cnRfb2JqOiBvcHRpb25hbCBwb3J0IG9iamVjdAogICAgICAgICAiIiIKLQotICAgICAgICBwb3J0
X29iaiA9IHBvcnRfb2JqIG9yIGZhY3RvcnkuZ2V0KHBvcnRfbmFtZT1wb3J0X25hbWUsIGZpbGVz
eXN0ZW09TW9ja0ZpbGVTeXN0ZW0oKSwgdXNlcj1Nb2NrVXNlcigpLCBleGVjdXRpdmU9TW9ja0V4
ZWN1dGl2ZSgpKQorICAgICAgICBwb3J0X29iaiA9IHBvcnRfb2JqIG9yIHNlbGYubWFrZV9mYWN0
b3J5KCkuZ2V0KHBvcnRfbmFtZT1wb3J0X25hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShp
c2luc3RhbmNlKHBvcnRfb2JqLCBleHBlY3RlZF9wb3J0KSkKIAogICAgIGRlZiBhc3NlcnRfcGxh
dGZvcm1fcG9ydChzZWxmLCBwbGF0Zm9ybSwgb3B0aW9ucywgZXhwZWN0ZWRfcG9ydCk6CkBAIC04
Niw5ICs4OCwxMCBAQCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgICAgZXhwZWN0ZWRfcG9ydDogY2xhc3Mgb2YgZXhwZWN0ZWQgcG9ydCBvYmplY3QuCiAKICAg
ICAgICAgIiIiCisgICAgICAgICMgRklYTUU6IEhhY2tpbmcgc3lzLnBsYXRmb3JtIGxpa2UgdGhp
cyBpcyBXUk9ORy4KICAgICAgICAgb3JpZ19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQogICAgICAg
ICBzeXMucGxhdGZvcm0gPSBwbGF0Zm9ybQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0
YW5jZShmYWN0b3J5LmdldChvcHRpb25zPW9wdGlvbnMsIGZpbGVzeXN0ZW09TW9ja0ZpbGVTeXN0
ZW0oKSwgdXNlcj1Nb2NrVXNlcigpLCBleGVjdXRpdmU9TW9ja0V4ZWN1dGl2ZSgpKSwgZXhwZWN0
ZWRfcG9ydCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHNlbGYubWFrZV9m
YWN0b3J5KCkuZ2V0KG9wdGlvbnM9b3B0aW9ucyksIGV4cGVjdGVkX3BvcnQpKQogICAgICAgICBz
eXMucGxhdGZvcm0gPSBvcmlnX3BsYXRmb3JtCiAKICAgICBkZWYgdGVzdF9tYWMoc2VsZik6CkBA
IC0xNDksMTQgKzE1MiwxMyBAQCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAKICAgICBkZWYgdGVzdF91bmtub3duX3NwZWNpZmllZChzZWxmKToKICAgICAgICAgIyBUZXN0
IHdoYXQgaGFwcGVucyB3aGVuIHlvdSBzcGVjaWZ5IGFuIHVua25vd24gcG9ydC4KLSAgICAgICAg
b3JpZ19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhO
b3RJbXBsZW1lbnRlZEVycm9yLCBmYWN0b3J5LmdldCwgcG9ydF9uYW1lPSd1bmtub3duJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgc2VsZi5tYWtlX2Zh
Y3RvcnkoKS5nZXQsIHBvcnRfbmFtZT0ndW5rbm93bicpCiAKICAgICBkZWYgdGVzdF91bmtub3du
X2RlZmF1bHQoc2VsZik6CiAgICAgICAgICMgVGVzdCB3aGF0IGhhcHBlbnMgd2hlbiB5b3UncmUg
cnVubmluZyBvbiBhbiB1bmtub3duIHBsYXRmb3JtLgogICAgICAgICBvcmlnX3BsYXRmb3JtID0g
c3lzLnBsYXRmb3JtCiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9ICd1bmtub3duJwotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBmYWN0b3J5LmdldCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgc2VsZi5tYWtlX2ZhY3Rv
cnkoKS5nZXQpCiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IG9yaWdfcGxhdGZvcm0KIAogCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9j
aHJvbWVfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkKaW5kZXggNmZjYzkwODQwZjJkODliN2E2ZWM2
ZmVlZDc2MWFmNTBmNDA1ZjQ2Ni4uNDdhOTA0ZTE2ODJmMGJhZDI4OGVjZWZjZDY0OGExMDRmNWFj
N2QxNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9nb29nbGVfY2hyb21lX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weQpAQCAtMjYsMTYgKzI2
LDE4IEBACiAKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0g
aW1wb3J0IGZpbGVzeXN0ZW1fbW9jaworZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGlt
cG9ydCBNb2NrSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9j
ayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2Vy
X21vY2sgaW1wb3J0IE1vY2tVc2VyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKKwogCi1pbXBvcnQgZmFjdG9yeQogaW1wb3J0
IGdvb2dsZV9jaHJvbWUKIAogCiBjbGFzcyBHZXRHb29nbGVDaHJvbWVQb3J0VGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZ2V0X2dvb2dsZV9jaHJvbWVfcG9ydChzZWxmKToK
LSAgICAgICAgdGVzdF9wb3J0cyA9ICgnZ29vZ2xlLWNocm9tZS1saW51eDMyJywgJ2dvb2dsZS1j
aHJvbWUtbGludXg2NCcsCi0gICAgICAgICAgICAnZ29vZ2xlLWNocm9tZS1tYWMnLCAnZ29vZ2xl
LWNocm9tZS13aW4nKQorICAgICAgICB0ZXN0X3BvcnRzID0gKCdnb29nbGUtY2hyb21lLWxpbnV4
MzInLCAnZ29vZ2xlLWNocm9tZS1saW51eDY0JywgJ2dvb2dsZS1jaHJvbWUtbWFjJywgJ2dvb2ds
ZS1jaHJvbWUtd2luJykKICAgICAgICAgZm9yIHBvcnQgaW4gdGVzdF9wb3J0czoKICAgICAgICAg
ICAgIHNlbGYuX3ZlcmlmeV9iYXNlbGluZV9wYXRoKHBvcnQsIHBvcnQpCiAgICAgICAgICAgICBz
ZWxmLl92ZXJpZnlfZXhwZWN0YXRpb25zX292ZXJyaWRlcyhwb3J0KQpAQCAtNDUsOCArNDcsNyBA
QCBjbGFzcyBHZXRHb29nbGVDaHJvbWVQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgIHNlbGYuX3ZlcmlmeV9iYXNlbGluZV9wYXRoKCdnb29nbGUtY2hyb21lLXdpbicsICdnb29n
bGUtY2hyb21lLXdpbi12aXN0YScpCiAKICAgICBkZWYgX3ZlcmlmeV9iYXNlbGluZV9wYXRoKHNl
bGYsIGV4cGVjdGVkX3BhdGgsIHBvcnRfbmFtZSk6Ci0gICAgICAgIHBvcnQgPSBnb29nbGVfY2hy
b21lLkdldEdvb2dsZUNocm9tZVBvcnQocG9ydF9uYW1lPXBvcnRfbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPU5vbmUpCisgICAg
ICAgIHBvcnQgPSBnb29nbGVfY2hyb21lLkdldEdvb2dsZUNocm9tZVBvcnQocG9ydF9uYW1lPXBv
cnRfbmFtZSwgb3B0aW9ucz1Ob25lLCBmaWxlc3lzdGVtPU1vY2tGaWxlU3lzdGVtKCksIGV4ZWN1
dGl2ZT1Nb2NrRXhlY3V0aXZlKCksIHVzZXI9TW9ja1VzZXIoKSkKICAgICAgICAgcGF0aCA9IHBv
cnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKVswXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGVkX3BhdGgsIHBvcnQuX2ZpbGVzeXN0ZW0uYmFzZW5hbWUocGF0aCkpCiAKQEAgLTU1LDE4
ICs1NiwxNiBAQCBjbGFzcyBHZXRHb29nbGVDaHJvbWVQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgICMgd2Ugc2hvdWxkIGJlIGFibGUgdG8gdGVzdCBmb3IgdGhlIGZpbGVzIGV4
aXN0aW5nIG9yIG5vdCwgYW5kCiAgICAgICAgICMgYmUgYWJsZSB0byBjb250cm9sIHRoZSBjb250
ZW50cyBiZXR0ZXIuCiAKLSAgICAgICAgY2hyb21pdW1fcG9ydCA9IGZhY3RvcnkuZ2V0KCJjaHJv
bWl1bS1jZy1tYWMiKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBjaHJvbWl1
bV9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCJjaHJvbWl1bS1jZy1tYWMiKQogICAgICAg
ICBjaHJvbWl1bV9iYXNlID0gY2hyb21pdW1fcG9ydC5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgp
Ci0gICAgICAgIGZzID0gZmlsZXN5c3RlbV9tb2NrLk1vY2tGaWxlU3lzdGVtKCkKLSAgICAgICAg
cG9ydCA9IGdvb2dsZV9jaHJvbWUuR2V0R29vZ2xlQ2hyb21lUG9ydChwb3J0X25hbWU9cG9ydF9u
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbnM9Tm9uZSwgZmlsZXN5c3RlbT1mcykKKyAgICAgICAgZnMgPSBNb2NrRmlsZVN5c3RlbSgp
CisgICAgICAgIHBvcnQgPSBnb29nbGVfY2hyb21lLkdldEdvb2dsZUNocm9tZVBvcnQocG9ydF9u
YW1lPXBvcnRfbmFtZSwgb3B0aW9ucz1Ob25lLCBmaWxlc3lzdGVtPWZzLCBleGVjdXRpdmU9TW9j
a0V4ZWN1dGl2ZSgpLCB1c2VyPU1vY2tVc2VyKCkpCiAKICAgICAgICAgZXhwZWN0ZWRfY2hyb21p
dW1fb3ZlcnJpZGVzID0gJy8vIGNocm9taXVtIG92ZXJyaWRlc1xuJwogICAgICAgICBleHBlY3Rl
ZF9jaHJvbWVfb3ZlcnJpZGVzID0gJy8vIGNocm9tZSBvdmVycmlkZXNcbicKLSAgICAgICAgY2hy
b21pdW1fcGF0aCA9IGZzLmpvaW4oY2hyb21pdW1fYmFzZSwgJ3dlYmtpdCcsICd0b29scycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsYXlvdXRfdGVzdHMnLCAndGVzdF9leHBl
Y3RhdGlvbnMudHh0JykKLSAgICAgICAgY2hyb21lX3BhdGggPSBmcy5qb2luKGNocm9taXVtX2Jh
c2UsICd3ZWJraXQnLCAndG9vbHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xh
eW91dF90ZXN0cycsICd0ZXN0X2V4cGVjdGF0aW9uc19jaHJvbWUudHh0JykKKyAgICAgICAgY2hy
b21pdW1fcGF0aCA9IGZzLmpvaW4oY2hyb21pdW1fYmFzZSwgJ3dlYmtpdCcsICd0b29scycsICds
YXlvdXRfdGVzdHMnLCAndGVzdF9leHBlY3RhdGlvbnMudHh0JykKKyAgICAgICAgY2hyb21lX3Bh
dGggPSBmcy5qb2luKGNocm9taXVtX2Jhc2UsICd3ZWJraXQnLCAndG9vbHMnLCAnbGF5b3V0X3Rl
c3RzJywgJ3Rlc3RfZXhwZWN0YXRpb25zX2Nocm9tZS50eHQnKQogCiAgICAgICAgIGZzLmZpbGVz
W2Nocm9taXVtX3BhdGhdID0gZXhwZWN0ZWRfY2hyb21pdW1fb3ZlcnJpZGVzCiAgICAgICAgIGZz
LmZpbGVzW2Nocm9tZV9wYXRoXSA9IE5vbmUKQEAgLTc1LDggKzc0LDcgQEAgY2xhc3MgR2V0R29v
Z2xlQ2hyb21lUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAgIGZzLmZpbGVz
W2Nocm9tZV9wYXRoXSA9IGV4cGVjdGVkX2Nocm9tZV9vdmVycmlkZXMKICAgICAgICAgYWN0dWFs
X2Nocm9tZV9vdmVycmlkZXMgPSBwb3J0LnRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcygpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2Nocm9tZV9vdmVycmlkZXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfY2hyb21pdW1fb3ZlcnJpZGVzICsgZXhwZWN0ZWRf
Y2hyb21lX292ZXJyaWRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfY2hyb21l
X292ZXJyaWRlcywgZXhwZWN0ZWRfY2hyb21pdW1fb3ZlcnJpZGVzICsgZXhwZWN0ZWRfY2hyb21l
X292ZXJyaWRlcykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHkKaW5kZXgg
MDI1MjkwZTQzZTVmYzMwMzUzNWY4NjQ5ZjA2NjUzZDEyNGFhNmIxNi4uMTMyMjlkZWY3NTIyZDQ5
NjUzZDZkMTA4YTA3MDQ4YzZiNmFkOTc3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5CkBAIC00MSw3ICs0MSw3IEBAIGlt
cG9ydCBzeXMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbQog
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBiYXNlCi1mcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBmYWN0b3J5Citmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5wb3J0LmZhY3RvcnkgaW1wb3J0IFBvcnRGYWN0b3J5CiBmcm9tIHdlYmtpdHB5LnRv
b2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiAKIApAQCAtNTUsNyArNTUsOCBAQCBjbGFz
cyBNb2NrRFJUUG9ydChvYmplY3QpOgogICAgICAgICBwcmVmaXggPSAnbW9jay0nCiAgICAgICAg
IGlmICdwb3J0X25hbWUnIGluIGt3YXJnczoKICAgICAgICAgICAgIGt3YXJnc1sncG9ydF9uYW1l
J10gPSBrd2FyZ3NbJ3BvcnRfbmFtZSddW2xlbihwcmVmaXgpOl0KLSAgICAgICAgc2VsZi5fX2Rl
bGVnYXRlID0gZmFjdG9yeS5nZXQoKiprd2FyZ3MpCisgICAgICAgICMgRklYTUU6IFRoaXMgc2hv
dWxkIGdldCB0aGUgUG9ydEZhY3RvcnkgZnJvbSBhIEhvc3Qgb2JqZWN0LgorICAgICAgICBzZWxm
Ll9fZGVsZWdhdGUgPSBQb3J0RmFjdG9yeSgpLmdldCgqKmt3YXJncykKICAgICAgICAgc2VsZi5f
X3JlYWxfbmFtZSA9IHByZWZpeCArIHNlbGYuX19kZWxlZ2F0ZS5uYW1lKCkKIAogICAgIGRlZiBy
ZWFsX25hbWUoc2VsZik6CkBAIC0xODQsNyArMTg1LDggQEAgY2xhc3MgTW9ja0RSVChvYmplY3Qp
OgogICAgICAgICBwb3J0X25hbWUgPSBOb25lCiAgICAgICAgIGlmIG9wdGlvbnMucGxhdGZvcm06
CiAgICAgICAgICAgICBwb3J0X25hbWUgPSBvcHRpb25zLnBsYXRmb3JtCi0gICAgICAgIHNlbGYu
X3BvcnQgPSBmYWN0b3J5LmdldChwb3J0X25hbWUsIG9wdGlvbnM9b3B0aW9ucywgZmlsZXN5c3Rl
bT1maWxlc3lzdGVtKQorICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBnZXQgdGhlIFBvcnRG
YWN0b3J5IGZyb20gYSBIb3N0IG9iamVjdC4KKyAgICAgICAgc2VsZi5fcG9ydCA9IFBvcnRGYWN0
b3J5KCkuZ2V0KHBvcnRfbmFtZSwgb3B0aW9ucz1vcHRpb25zLCBmaWxlc3lzdGVtPWZpbGVzeXN0
ZW0pCiAKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICB3aGlsZSBUcnVlOgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydF91bml0
dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19k
cnRfdW5pdHRlc3QucHkKaW5kZXggNmZmMDc4Njg3YzE5OTMxN2EzMzdiMzY4NmNhOTMwNWI1ZjQ4
N2QwMS4uOWEwNzRjMThjZWEzOTI1MGM1ODFmZWYwOTUzMTU5ZDU3YzA0YTk2NCAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydF91bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21v
Y2tfZHJ0X3VuaXR0ZXN0LnB5CkBAIC0zNSwxMCArMzUsMTEgQEAgaW1wb3J0IHVuaXR0ZXN0CiBm
cm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgbmV3c3RyaW5naW8KIAogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgbW9ja19kcnQKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnBvcnQgaW1wb3J0IGZhY3RvcnkKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQg
aW1wb3J0IHBvcnRfdGVzdGNhc2UKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1w
b3J0IHRlc3QKIAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9z
dAorCiBmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCiBtb2NrX29wdGlvbnMgPSBt
b2NrdG9vbC5Nb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJykKIApAQCAtMTM2LDE1
ICsxMzcsMTUgQEAgY2xhc3MgTW9ja0RSVFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICAgICAgICAgICAgICAnI0VPRlxuJywKICAgICAgICAgICAgICAgICAgICAgJyNFT0ZcbiddCiAK
LSAgICBkZWYgYXNzZXJ0VGVzdChzZWxmLCB0ZXN0X25hbWUsIHBpeGVsX3Rlc3RzLCBleHBlY3Rl
ZF9jaGVja3N1bT1Ob25lLAotICAgICAgICAgICAgICAgICAgIGRydF9vdXRwdXQ9Tm9uZSwgZmls
ZXN5c3RlbT1Ob25lKToKLSAgICAgICAgcGxhdGZvcm0gPSAndGVzdCcKKyAgICBkZWYgYXNzZXJ0
VGVzdChzZWxmLCB0ZXN0X25hbWUsIHBpeGVsX3Rlc3RzLCBleHBlY3RlZF9jaGVja3N1bT1Ob25l
LCBkcnRfb3V0cHV0PU5vbmUsIGZpbGVzeXN0ZW09Tm9uZSk6CisgICAgICAgIHBvcnRfbmFtZSA9
ICd0ZXN0JworICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICBmaWxlc3lzdGVtID0g
ZmlsZXN5c3RlbSBvciB0ZXN0LnVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICAgICAgcG9ydCA9
IGZhY3RvcnkuZ2V0KHBsYXRmb3JtLCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIHBv
cnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lLCBmaWxlc3lzdGVtPWZpbGVzeXN0
ZW0pCiAgICAgICAgIGRydF9pbnB1dCwgZHJ0X291dHB1dCA9IHNlbGYubWFrZV9pbnB1dF9vdXRw
dXQocG9ydCwgdGVzdF9uYW1lLAogICAgICAgICAgICAgcGl4ZWxfdGVzdHMsIGV4cGVjdGVkX2No
ZWNrc3VtLCBkcnRfb3V0cHV0KQogCi0gICAgICAgIGFyZ3MgPSBbJy0tcGxhdGZvcm0nLCAndGVz
dCddICsgc2VsZi5leHRyYV9hcmdzKHBpeGVsX3Rlc3RzKQorICAgICAgICBhcmdzID0gWyctLXBs
YXRmb3JtJywgcG9ydF9uYW1lXSArIHNlbGYuZXh0cmFfYXJncyhwaXhlbF90ZXN0cykKICAgICAg
ICAgc3RkaW4gPSBuZXdzdHJpbmdpby5TdHJpbmdJTyhkcnRfaW5wdXQpCiAgICAgICAgIHN0ZG91
dCA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKCkKICAgICAgICAgc3RkZXJyID0gbmV3c3RyaW5naW8u
U3RyaW5nSU8oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC90ZXN0LnB5CmluZGV4IDJkMWI0NTIyMGFmYjk0YTIwNGI1ZDA2NGFjMzM5NWQwNzMxYjQwNzcu
LjE4ZTBlNDgwNGM0MTY1MmRkYjMxODIyMDJmZjE4NzIwYzdmMGMzOWQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTMzLDEwICsz
MywxMSBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiBpbXBvcnQgYmFz
ZTY0CiBpbXBvcnQgdGltZQogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGZp
bGVzeXN0ZW1fbW9jawogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgUG9y
dCwgRHJpdmVyLCBEcml2ZXJPdXRwdXQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVs
cy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0udXNlcl9tb2NrIGltcG9ydCBNb2NrVXNlcgorZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5
c3RlbQogCiAKICMgVGhpcyBzZXRzIGJhc2ljIGV4cGVjdGF0aW9ucyBmb3IgYSB0ZXN0LiBFYWNo
IGluZGl2aWR1YWwgZXhwZWN0YXRpb24KQEAgLTI1Nyw3ICsyNTgsNyBAQCBXT05URklYIFNLSVAg
OiBmYWlsdXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRtbCA9IENSQVNICiAgICAgIyBBZGQgaW4g
YSBmaWxlIHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRlc3RfZmlsZXMuZmluZCgpLgogICAgICNmaWxl
c1tMQVlPVVRfVEVTVF9ESVIgKyAnL3VzZXJzY3JpcHRzL3Jlc291cmNlcy9pZnJhbWUuaHRtbCdd
ID0gJ2lmcmFtZScKIAotICAgIGZzID0gZmlsZXN5c3RlbV9tb2NrLk1vY2tGaWxlU3lzdGVtKGZp
bGVzLCBkaXJzPXNldChbJy9tb2NrLWNoZWNrb3V0J10pKSAgIyBNYWtlIHN1cmUgYXQgbGVhc3Qg
dGhlIGNoZWNrb3V0X3Jvb3QgZXhpc3RzIGFzIGEgZGlyZWN0b3J5LgorICAgIGZzID0gTW9ja0Zp
bGVTeXN0ZW0oZmlsZXMsIGRpcnM9c2V0KFsnL21vY2stY2hlY2tvdXQnXSkpICAjIE1ha2Ugc3Vy
ZSBhdCBsZWFzdCB0aGUgY2hlY2tvdXRfcm9vdCBleGlzdHMgYXMgYSBkaXJlY3RvcnkuCiAgICAg
ZnMuX3Rlc3RzID0gdGVzdF9saXN0CiAgICAgcmV0dXJuIGZzCiAKQEAgLTI3MCwxMyArMjcxLDIx
IEBAIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAgICAgICAndGVzdC1saW51eC14ODZfNjQnLAog
ICAgICkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25hbWU9Tm9uZSwgdXNlcj1Ob25l
LCBmaWxlc3lzdGVtPU5vbmUsICoqa3dhcmdzKToKKyAgICBkZWYgX3NldF9kZWZhdWx0X292ZXJy
aWRpbmdfbm9uZShzZWxmLCBkaWN0aW9uYXJ5LCBrZXksIGRlZmF1bHQpOgorICAgICAgICAjIGRp
Y3Quc2V0ZGVmYXVsdCBhbG1vc3Qgd29ya3MsIGJ1dCB3b24ndCBhY3R1YWxseSBvdmVycmlkZSBO
b25lIHZhbHVlcywgd2hpY2ggd2Ugd2FudC4KKyAgICAgICAgaWYgbm90IGRpY3Rpb25hcnkuZ2V0
KGtleSk6CisgICAgICAgICAgICBkaWN0aW9uYXJ5W2tleV0gPSBkZWZhdWx0CisgICAgICAgIHJl
dHVybiBkaWN0aW9uYXJ5W2tleV0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25hbWU9
Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBpZiBub3QgcG9ydF9uYW1lIG9yIHBvcnRfbmFtZSA9
PSAndGVzdCc6CiAgICAgICAgICAgICBwb3J0X25hbWUgPSAndGVzdC1tYWMtbGVvcGFyZCcKLSAg
ICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIGEgTW9ja0V4ZWN1dGl2ZSB0b28uCi0gICAg
ICAgIHVzZXIgPSB1c2VyIG9yIE1vY2tVc2VyKCkKLSAgICAgICAgZmlsZXN5c3RlbSA9IGZpbGVz
eXN0ZW0gb3IgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotICAgICAgICBQb3J0Ll9faW5pdF9fKHNl
bGYsIHBvcnRfbmFtZT1wb3J0X25hbWUsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSwgdXNlcj11c2Vy
LCAqKmt3YXJncykKKworICAgICAgICBzZWxmLl9zZXRfZGVmYXVsdF9vdmVycmlkaW5nX25vbmUo
a3dhcmdzLCAndXNlcicsIE1vY2tVc2VyKCkpCisgICAgICAgIHNlbGYuX3NldF9kZWZhdWx0X292
ZXJyaWRpbmdfbm9uZShrd2FyZ3MsICdleGVjdXRpdmUnLCBNb2NrRXhlY3V0aXZlKCkpCisgICAg
ICAgIGZpbGVzeXN0ZW0gPSBzZWxmLl9zZXRfZGVmYXVsdF9vdmVycmlkaW5nX25vbmUoa3dhcmdz
LCAnZmlsZXN5c3RlbScsIHVuaXRfdGVzdF9maWxlc3lzdGVtKCkpCisKKyAgICAgICAgUG9ydC5f
X2luaXRfXyhzZWxmLCBwb3J0X25hbWU9cG9ydF9uYW1lLCAqKmt3YXJncykKICAgICAgICAgc2Vs
Zi5fcmVzdWx0c19kaXJlY3RvcnkgPSBOb25lCiAKICAgICAgICAgYXNzZXJ0IGZpbGVzeXN0ZW0u
X3Rlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2lu
LnB5CmluZGV4IGQ1YmQwZjQwOTdiMmFjMzc3MGJhZmE2NTdlYjEwYzg4Mjc5NmE5NTkuLjEwOGM5
ZDI3Yzg3ZWNmYzMzYTdhMzE5YWVlMGRjNTlkMmJiMDUzYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2luLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2luLnB5CkBAIC0yOCw2ICsyOCw3IEBACiAK
IGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKK2ltcG9ydCBzeXMKIAogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLnBvcnQuYXBwbGUgaW1wb3J0IEFwcGxlUG9ydApAQCAtNTIsMTAgKzUzLDE1
IEBAIGNsYXNzIFdpblBvcnQoQXBwbGVQb3J0KToKICAgICAgICAgICAgIHJldHVybiAneHAnCiAg
ICAgICAgIHJldHVybiBOb25lCiAKLSAgICBkZWYgX2RldGVjdF92ZXJzaW9uKHNlbGYsIG9zX3Zl
cnNpb25fc3RyaW5nPU5vbmUpOgorICAgIGRlZiBfZGV0ZWN0X3ZlcnNpb24oc2VsZiwgb3NfdmVy
c2lvbl9zdHJpbmc9Tm9uZSwgcnVuX29uX25vbl93aW5kb3dzX3BsYXRmb3Jtcz1Ob25lKToKICAg
ICAgICAgIyBGSVhNRTogb3NfdmVyc2lvbl9zdHJpbmcgaXMgZm9yIHVuaXQgdGVzdGluZywgYnV0
IG1heSBldmVudHVhbGx5IGJlIHByb3ZpZGVkIGJ5IGZhY3RvcnkucHkgaW5zdGVhZC4KICAgICAg
ICAgaWYgb3NfdmVyc2lvbl9zdHJpbmcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4g
b3NfdmVyc2lvbl9zdHJpbmcKKworICAgICAgICAjIE5vIHNlbnNlIGluIHRyeWluZyB0byBkZXRl
Y3Qgb3VyIHdpbmRvd3MgdmVyc2lvbiBvbiBub24td2luZG93cyBwbGF0Zm9ybXMsIHVubGVzcyB3
ZSdyZSB1bml0dGVzdGluZy4KKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICdjeWd3aW4nIGFu
ZCBub3QgcnVuX29uX25vbl93aW5kb3dzX3BsYXRmb3JtczoKKyAgICAgICAgICAgIHJldHVybiBO
b25lCisKICAgICAgICAgIyBOb3RlLCB0aGlzIGludGVudGlvbmFsbHkgcmV0dXJucyBOb25lIHRv
IG1lYW4gdGhhdCBpdCBjYW4ndCBkZXRlY3Qgd2hhdCB0aGUgY3VycmVudCB2ZXJzaW9uIGlzLgog
ICAgICAgICAjIENhbGxlcnMgY2FuIHRoZW4gZGVjaWRlIHdoYXQgdmVyc2lvbiB0aGV5IHdhbnQg
dG8gcHJldGVuZCB0byBiZS4KICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW5fdW5pdHRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weQppbmRleCA3MjA2
NTcxNjg0NGY5NDY4YWU0Y2Q0NzVmNmRkMzM3YzkyYTg4NzUwLi41ZDMzZGQwODA0ZWI0NGIyM2Ey
ZjU4NjY3OWVkMGUyZmRkNjJjY2FiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weQpAQCAtNTgsMTQgKzU4LDE0
IEBAIGNsYXNzIFdpblBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICAg
ICAgICAgIHJldHVybiAiNi4xLjc2MDAiCiAKICAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9j
a0V4ZWN1dGl2ZTIocnVuX2NvbW1hbmRfZm49bW9ja19ydW5fY29tbWFuZCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMocG9ydC5fZGV0ZWN0X3ZlcnNpb24oKSwgJzdzcDAnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9kZXRlY3RfdmVyc2lvbihydW5fb25fbm9uX3dpbmRvd3Nf
cGxhdGZvcm1zPVRydWUpLCAnN3NwMCcpCiAKICAgICAgICAgZGVmIG1vY2tfcnVuX2NvbW1hbmQo
Y21kKToKICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCdGYWlsdXJlJykKIAogICAgICAg
ICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9mbj1tb2NrX3J1
bl9jb21tYW5kKQogICAgICAgICAjIEZhaWx1cmVzIGxvZyB0byB0aGUgcHl0aG9uIGVycm9yIGxv
ZywgYnV0IHdlIGhhdmUgbm8gZWFzeSB3YXkgdG8gY2FwdHVyZS90ZXN0IHRoYXQuCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuX2RldGVjdF92ZXJzaW9uKCksIE5vbmUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuX2RldGVjdF92ZXJzaW9uKHJ1bl9vbl9ub25fd2luZG93
c19wbGF0Zm9ybXM9VHJ1ZSksIE5vbmUpCiAKICAgICBkZWYgX2Fzc2VydF9zZWFyY2hfcGF0aChz
ZWxmLCBleHBlY3RlZF9zZWFyY2hfcGF0aHMsIHZlcnNpb24sIHVzZV93ZWJraXQyPUZhbHNlKToK
ICAgICAgICAgcG9ydCA9IFdpblBvcnQob3NfdmVyc2lvbl9zdHJpbmc9dmVyc2lvbiwKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rl
c3RzLnB5CmluZGV4IGMwNDM4Njk4MWNhZDZkYTYyNjQwMGNiNzU1MGNhODNhMjBjZTM1M2QuLmU4
MTliMGRjMDUyMjA4ZGNjYTkyNDdmOTY4OTJhNmZlZWY3ODBhMzggMTAwNzU1Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpA
QCAtNDI3LDcgKzQyNyw4IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CiAKIGRlZiBtYWlu
KCk6CiAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlX2FyZ3MoKQotICAgIHBvcnQgPSBsYXlvdXRf
dGVzdHMucG9ydC5nZXQob3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucykKKyAgICBob3N0ID0gSG9z
dCgpCisgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChvcHRpb25zLnBsYXRmb3JtLCBv
cHRpb25zKQogICAgIHJldHVybiBydW4ocG9ydCwgb3B0aW9ucywgYXJncykKIAogCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
X2ludGVncmF0aW9udGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CmluZGV4IDQ3ZGFiOWE0MmVkY2Mw
MDk0OTY3NWU2NTg4ODM2N2UzMmNjOTBiODcuLjdhYjdiZGU3OTA5MDYwZGU5ZDQ1NzAyZWYzZTEx
ZjUzOTkwZTI4ZDQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0
LnB5CkBAIC02MSw4ICs2MSw4IEBAIFNIT1VMRF9URVNUX1BST0NFU1NFUyA9IG11bHRpcHJvY2Vz
c2luZyBhbmQgc3lzLnBsYXRmb3JtIG5vdCBpbiAoJ2N5Z3dpbicsICd3aW4zCiAKIGZyb20gd2Vi
a2l0cHkuY29tbW9uIGltcG9ydCBhcnJheV9zdHJlYW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbSBpbXBvcnQgb3V0cHV0Y2FwdHVyZQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGlt
cG9ydCBmaWxlc3lzdGVtX21vY2sKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyX21v
Y2sgaW1wb3J0IE1vY2tVc2VyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0
IE1vY2tIb3N0CiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcnVuX3dlYmtpdF90ZXN0cwpAQCAtNzEsOCAr
NzEsNiBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnRlc3RfZmlsZXMgaW1wb3J0
IGlzX3JlZmVyZW5jZV9odG1sX2ZpbGUKIGZyb20gd2Via2l0cHkucHl0aG9uMjQudmVyc2lvbmlu
ZyBpbXBvcnQgY29tcGFyZV92ZXJzaW9uCiBmcm9tIHdlYmtpdHB5LnRlc3Quc2tpcCBpbXBvcnQg
c2tpcF9pZgogCi1mcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawotCiAK
IGRlZiBwYXJzZV9hcmdzKGV4dHJhX2FyZ3M9Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFsc2UsIHRl
c3RzX2luY2x1ZGVkPUZhbHNlLCBuZXdfcmVzdWx0cz1GYWxzZSwgcHJpbnRfbm90aGluZz1UcnVl
KToKICAgICBleHRyYV9hcmdzID0gZXh0cmFfYXJncyBvciBbXQpAQCAtMTAxLDggKzk5LDEwIEBA
IGRlZiBwYXJzZV9hcmdzKGV4dHJhX2FyZ3M9Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFsc2UsIHRl
c3RzX2luY2x1ZGVkPUZhbHNlLCBuZXdfCiAKIGRlZiBwYXNzaW5nX3J1bihleHRyYV9hcmdzPU5v
bmUsIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLCB0ZXN0c19pbmNsdWRlZD1G
YWxzZSwgZmlsZXN5c3RlbT1Ob25lKToKICAgICBvcHRpb25zLCBwYXJzZWRfYXJncyA9IHBhcnNl
X2FyZ3MoZXh0cmFfYXJncywgcmVjb3JkX3Jlc3VsdHMsIHRlc3RzX2luY2x1ZGVkKQorICAgIGZp
bGVzeXN0ZW0gPSBmaWxlc3lzdGVtIG9yIHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKICAgICBpZiBu
b3QgcG9ydF9vYmo6Ci0gICAgICAgIHBvcnRfb2JqID0gcG9ydC5nZXQocG9ydF9uYW1lPW9wdGlv
bnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0aW9ucywgdXNlcj1Nb2NrVXNlcigpLCBmaWxlc3lzdGVt
PWZpbGVzeXN0ZW0pCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHBvcnRfb2Jq
ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZT1vcHRpb25zLnBsYXRmb3JtLCBvcHRp
b25zPW9wdGlvbnMsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKICAgICBidWlsZGJvdF9vdXRwdXQg
PSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQogICAgIHJlZ3VsYXJfb3V0cHV0ID0gYXJyYXlf
c3RyZWFtLkFycmF5U3RyZWFtKCkKICAgICByZXMgPSBydW5fd2Via2l0X3Rlc3RzLnJ1bihwb3J0
X29iaiwgb3B0aW9ucywgcGFyc2VkX2FyZ3MsIGJ1aWxkYm90X291dHB1dD1idWlsZGJvdF9vdXRw
dXQsIHJlZ3VsYXJfb3V0cHV0PXJlZ3VsYXJfb3V0cHV0KQpAQCAtMTE0LDEyICsxMTQsMTMgQEAg
ZGVmIGxvZ2dpbmdfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgcG9ydF9vYmo9Tm9uZSwgcmVjb3JkX3Jl
c3VsdHM9RmFsc2UsIHRlc3RzX2luY2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVjb3JkX3Jlc3VsdHM9cmVjb3JkX3Jlc3VsdHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPXRlc3RzX2luY2x1ZGVkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF9ub3RoaW5nPUZhbHNlLCBuZXdf
cmVzdWx0cz1uZXdfcmVzdWx0cykKLSAgICB1c2VyID0gTW9ja1VzZXIoKQorICAgIGhvc3QgPSBN
b2NrSG9zdCgpCisgICAgZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0gb3IgdW5pdF90ZXN0X2ZpbGVz
eXN0ZW0oKQogICAgIGlmIG5vdCBwb3J0X29iajoKLSAgICAgICAgcG9ydF9vYmogPSBwb3J0Lmdl
dChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zLCB1c2VyPXVzZXIs
IGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAgICAgICAgcG9ydF9vYmogPSBob3N0LnBvcnRfZmFj
dG9yeS5nZXQocG9ydF9uYW1lPW9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0aW9ucywgZmls
ZXN5c3RlbT1maWxlc3lzdGVtKQogCiAgICAgcmVzLCBidWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJf
b3V0cHV0ID0gcnVuX2FuZF9jYXB0dXJlKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncykK
LSAgICByZXR1cm4gKHJlcywgYnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCwgdXNlcikK
KyAgICByZXR1cm4gKHJlcywgYnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCwgaG9zdC51
c2VyKQogCiAKIGRlZiBydW5fYW5kX2NhcHR1cmUocG9ydF9vYmosIG9wdGlvbnMsIHBhcnNlZF9h
cmdzKToKQEAgLTI5MSw4ICsyOTIsOCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAKICAgICBkZWYgdGVzdF9saW50X3Rlc3RfZmlsZXNfX2Vycm9ycyhzZWxmKToKICAgICAg
ICAgb3B0aW9ucywgcGFyc2VkX2FyZ3MgPSBwYXJzZV9hcmdzKFsnLS1saW50LXRlc3QtZmlsZXMn
XSkKLSAgICAgICAgdXNlciA9IE1vY2tVc2VyKCkKLSAgICAgICAgcG9ydF9vYmogPSBwb3J0Lmdl
dChvcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMsIHVzZXI9dXNlcikKKyAgICAgICAg
aG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5n
ZXQob3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zKQogICAgICAgICBwb3J0X29iai50
ZXN0X2V4cGVjdGF0aW9ucyA9IGxhbWJkYTogIiMgc3ludGF4IGVycm9yIgogICAgICAgICByZXMs
IG91dCwgZXJyID0gcnVuX2FuZF9jYXB0dXJlKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJn
cykKIApAQCAtODE2LDE0ICs4MTcsMTEgQEAgY2xhc3MgRHJ5cnVuVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAiZGFyd2luIjoKICAgICAgICAgICAg
IHJldHVybgogCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tcGxhdGZv
cm0nLCAnZHJ5cnVuJywgJ2Zhc3QvaHRtbCddLAotICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dHNfaW5jbHVkZWQ9VHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihb
Jy0tcGxhdGZvcm0nLCAnZHJ5cnVuLW1hYycsICdmYXN0L2h0bWwnXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
cGFzc2luZ19ydW4oWyctLXBsYXRmb3JtJywgJ2RyeXJ1bicsICdmYXN0L2h0bWwnXSwgdGVzdHNf
aW5jbHVkZWQ9VHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0t
cGxhdGZvcm0nLCAnZHJ5cnVuLW1hYycsICdmYXN0L2h0bWwnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1
ZSkpCiAKICAgICBkZWYgdGVzdF90ZXN0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUo
cGFzc2luZ19ydW4oWyctLXBsYXRmb3JtJywgJ2RyeXJ1bi10ZXN0JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1waXhlbC10ZXN0cyddKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1wbGF0Zm9ybScsICdkcnlydW4tdGVzdCcs
ICctLXBpeGVsLXRlc3RzJ10pKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGlu
Z191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdz
L3ByaW50aW5nX3VuaXR0ZXN0LnB5CmluZGV4IGM5OTJhYTQ1OGQ5ZDU3ODQ1MTliNTdjN2QyNzZm
YWIyNDZhNWE1ZDguLjA5MTZlOGVmNjM4YjY5NjY3NTExMWQzYjU3N2ZiY2U1ZGNiZTJhOTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50
aW5nX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3ZpZXdzL3ByaW50aW5nX3VuaXR0ZXN0LnB5CkBAIC0zNSw2ICszNSw4IEBAIGltcG9ydCB0aW1l
CiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IGFycmF5X3N0
cmVhbQorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAorCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcKIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5j
b250cm9sbGVycyBpbXBvcnQgbWFuYWdlcgpAQCAtMTEzLDcgKzExNSw4IEBAIGNsYXNzICBUZXN0
cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHByaW50aW5nX29wdGlvbnMgPSBw
cmludGluZy5wcmludF9vcHRpb25zKCkKICAgICAgICAgb3B0aW9uX3BhcnNlciA9IG9wdHBhcnNl
Lk9wdGlvblBhcnNlcihvcHRpb25fbGlzdD1wcmludGluZ19vcHRpb25zKQogICAgICAgICBvcHRp
b25zLCBhcmdzID0gb3B0aW9uX3BhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0gICAgICAgIHNlbGYu
X3BvcnQgPSBwb3J0LmdldCgndGVzdCcsIG9wdGlvbnMpCisgICAgICAgIGhvc3QgPSBNb2NrSG9z
dCgpCisgICAgICAgIHNlbGYuX3BvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QnLCBv
cHRpb25zKQogICAgICAgICBucHJvYyA9IDIKIAogICAgICAgICByZWd1bGFyX291dHB1dCA9IGFy
cmF5X3N0cmVhbS5BcnJheVN0cmVhbSh0dHk9dHR5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXgg
YzU3MDc5MThkMGMxMjZjNTlmZDljMjllOGZkNTY3NjA1ZjVmNjI4Zi4uYjZkYWFiMTRkMTgxOWRh
NDQ2ZTVlN2ZjZWQwNjRlNGIyOTUxOTM1YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC0zNCwx
OSArMzQsMTUgQEAgaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiAKIGZyb20gY29tbW9uIGltcG9ydCBU
YWJDaGVja2VyCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAorZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5mYWN0b3J5IGltcG9ydCBQb3J0RmFjdG9yeQogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwog
CiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCisjIEZJWE1FOiBUaGlz
IGNvdWxkIHVzZSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyhjaHJvbWl1bT1UcnVlKSBvciBiYXNlLkR1
bW15T3B0aW9ucyhjaHJvbWl1bT1UcnVlKSBpbnN0ZWFkLgogY2xhc3MgQ2hyb21pdW1PcHRpb25z
KG9iamVjdCk6Ci0gICAgIiIiQSBtb2NrIG9iamVjdCBmb3IgY3JlYXRpbmcgY2hyb21pdW0gcG9y
dCBvYmplY3QuCi0KLSAgICBwb3J0LmdldCgpIHJlcXVpcmVzIGFuIG9wdGlvbnMgb2JqZWN0IHdo
aWNoIGhhcyAnY2hyb21pdW0nIGF0dHJpYnV0ZSB0byBjcmVhdGUKLSAgICBjaHJvbWl1bSBwb3J0
IG9iamVjdCBmb3IgZWFjaCBwbGF0Zm9ybS4gVGhpcyBjbGFzcyBtb2NrcyBzdWNoIG9iamVjdC4K
LSAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuY2hyb21pdW0g
PSBUcnVlCiAKQEAgLTYyLDIxICs1OCwyNSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zQ2hlY2tl
cihvYmplY3QpOgogICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IudHVybl9vZmZfbGlu
ZV9maWx0ZXJpbmcoKQogICAgICAgICBzZWxmLl90YWJfY2hlY2tlciA9IFRhYkNoZWNrZXIoZmls
ZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpCiAgICAgICAgIHNlbGYuX291dHB1dF9yZWdleCA9
IHJlLmNvbXBpbGUoJ0xpbmU6KD9QPGxpbmU+XGQrKVxzKig/UDxtZXNzYWdlPi4rKScpCisKKyAg
ICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgZ2V0IHRoZSBQb3J0RmFjdG9yeSBmcm9tIGEgSG9z
dCBvYmplY3QhCisgICAgICAgIHBvcnRfZmFjdG9yeSA9IFBvcnRGYWN0b3J5KCkKKwogICAgICAg
ICAjIERldGVybWluaW5nIHRoZSBwb3J0IG9mIHRoaXMgZXhwZWN0YXRpb25zLgogICAgICAgICB0
cnk6CiAgICAgICAgICAgICBwb3J0X25hbWUgPSBzZWxmLl9maWxlX3BhdGguc3BsaXQob3Muc2Vw
KVstMl0KICAgICAgICAgICAgIGlmIHBvcnRfbmFtZSA9PSAiY2hyb21pdW0iOgogICAgICAgICAg
ICAgICAgIG9wdGlvbnMgPSBDaHJvbWl1bU9wdGlvbnMoKQotICAgICAgICAgICAgICAgIHNlbGYu
X3BvcnRfb2JqID0gcG9ydC5nZXQocG9ydF9uYW1lPU5vbmUsIG9wdGlvbnM9b3B0aW9ucykKKyAg
ICAgICAgICAgICAgICBzZWxmLl9wb3J0X29iaiA9IHBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1l
PU5vbmUsIG9wdGlvbnM9b3B0aW9ucykKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fcG9ydF9vYmogPSBwb3J0LmdldChwb3J0X25hbWU9cG9ydF9uYW1lKQorICAgICAg
ICAgICAgICAgIHNlbGYuX3BvcnRfb2JqID0gcG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWU9cG9y
dF9uYW1lKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAjIFVzaW5nICd0ZXN0JyBwb3J0
IHdoZW4gd2UgY291bGRuJ3QgZGV0ZXJtaW5lIHRoZSBwb3J0IGZvciB0aGlzCiAgICAgICAgICAg
ICAjIGV4cGVjdGF0aW9ucy4KICAgICAgICAgICAgIF9sb2cud2FybigiQ291bGQgbm90IGRldGVy
bWluZSB0aGUgcG9ydCBmb3IgJXMuICIKICAgICAgICAgICAgICAgICAgICAgICAiVXNpbmcgJ3Rl
c3QnIHBvcnQsIGJ1dCBwbGF0Zm9ybS1zcGVjaWZpYyBleHBlY3RhdGlvbnMgIgogICAgICAgICAg
ICAgICAgICAgICAgICJ3aWxsIGZhaWwgdGhlIGNoZWNrLiIgJSBzZWxmLl9maWxlX3BhdGgpCi0g
ICAgICAgICAgICBzZWxmLl9wb3J0X29iaiA9IHBvcnQuZ2V0KCd0ZXN0JykKKyAgICAgICAgICAg
IHNlbGYuX3BvcnRfb2JqID0gcG9ydF9mYWN0b3J5LmdldCgndGVzdCcpCiAgICAgICAgICMgU3Vw
cHJlc3MgZXJyb3IgbWVzc2FnZXMgb2YgdGVzdF9leHBlY3RhdGlvbnMgbW9kdWxlIHNpbmNlIHRo
ZXkgd2lsbCBiZQogICAgICAgICAjIHJlcG9ydGVkIGxhdGVyLgogICAgICAgICBsb2cgPSBsb2dn
aW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLiIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBl
Y3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CmluZGV4IGNkY2ViNjA3MjkzMzMwYzZj
MmZiNzkwY2RjZmM4YjdlYmE3ZDQxNWQuLmM5YzlhY2U0M2MxY2NmOWMwNDQ4MGNkYTNjMDEzZTAy
ZGYzNTE5ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpAQCAtNjEs
NyArNjEsNiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zVGVzdENhc2UodW5pdHRlc3QuVGVzdENh
c2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLl9lcnJvcl9jb2xsZWN0
b3IgPSBFcnJvckNvbGxlY3RvcigpCi0gICAgICAgIHBvcnRfb2JqID0gcG9ydC5nZXQoJ3Rlc3Qn
KQogICAgICAgICBzZWxmLl90ZXN0X2ZpbGUgPSAncGFzc2VzL3RleHQuaHRtbCcKIAogICAgIGRl
ZiBwcm9jZXNzX2V4cGVjdGF0aW9ucyhzZWxmLCBleHBlY3RhdGlvbnMsIG92ZXJyaWRlcz1Ob25l
KToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNl
bGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
X2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDliZmU4
MjU0MWYxNDNiZTE4NmY4YjQwMWUwOWM0Y2VmNzNlZGU3OWEuLmM4NTFmZjRmZTQzZjgzZjU5M2Nj
ODYzZGNmMmJlZTBlMjZiNjk1MTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtp
dF90ZXN0cy5weQpAQCAtNTUsMTEgKzU1LDEzIEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgemlwZmlsZXNldAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBw
YXRoCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHVybGZldGNoZXIKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CiAKLWZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzIGltcG9ydCBwb3J0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmZhY3Rv
cnkgaW1wb3J0IFBvcnRGYWN0b3J5CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQg
cmVhZF9jaGVja3N1bV9mcm9tX3BuZwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxz
IGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogCisKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihf
X25hbWVfXykKIAogQkFTRUxJTkVfU1VGRklYRVMgPSAoJy50eHQnLCAnLnBuZycsICcuY2hlY2tz
dW0nKQpAQCAtMTYzLDcgKzE2NSw5IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAgICAg
ICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBydW5uaW5nX3BvcnQuX2ZpbGVzeXN0ZW0KICAgICAgICAg
c2VsZi5fdGFyZ2V0X3BvcnQgPSB0YXJnZXRfcG9ydAogCi0gICAgICAgIHNlbGYuX3JlYmFzZWxp
bmVfcG9ydCA9IHBvcnQuZ2V0KHBsYXRmb3JtLCBvcHRpb25zLCBmaWxlc3lzdGVtPXNlbGYuX2Zp
bGVzeXN0ZW0pCisgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGdldCBpdHMgUG9ydEZhY3Rv
cnkgZnJvbSBhIEhvc3Qgb2JqZWN0LgorICAgICAgICAjIE5vdGU6IHVzaW5nIHJ1bm5pbmdfcG9y
dC5leGVjdXRpdmUsIHJ1bm5pbmdfcG9ydC51c2VyIHNpbmNlIHdlIGNhbid0IGdldCB0aGVtIGZy
b20gYSBob3N0LgorICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQgPSBQb3J0RmFjdG9yeSgp
LmdldChwbGF0Zm9ybSwgb3B0aW9ucywgZmlsZXN5c3RlbT1zZWxmLl9maWxlc3lzdGVtLCBleGVj
dXRpdmU9cnVubmluZ19wb3J0LmV4ZWN1dGl2ZSwgdXNlcj1ydW5uaW5nX3BvcnQudXNlcikKICAg
ICAgICAgc2VsZi5fcmViYXNlbGluaW5nX3Rlc3RzID0gc2V0KCkKICAgICAgICAgc2VsZi5fcmVi
YXNlbGluZWRfdGVzdHMgPSBbXQogICAgICAgICBzZWxmLl9sb2dnZWRfYmVmb3JlID0gbG9nZ2Vk
X2JlZm9yZQpAQCAtODAxLDE4ICs4MDUsMTggQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihvYmplY3Qp
OgogICAgICAgICAgICAgcmV0dXJuICdPdGhlcicKIAogCi1kZWYgZ2V0X2hvc3RfcG9ydF9vYmpl
Y3Qob3B0aW9ucyk6CitkZWYgZ2V0X2hvc3RfcG9ydF9vYmplY3QocG9ydF9mYWN0b3J5LCBvcHRp
b25zKToKICAgICAiIiJSZXR1cm4gYSBwb3J0IG9iamVjdCBmb3IgdGhlIHBsYXRmb3JtIHdlJ3Jl
IHJ1bm5pbmcgb24uIiIiCiAgICAgIyBXZSB3YW50IHRoZSBJbWFnZURpZmYgbG9naWMgdG8gbWF0
Y2ggdGhhdCBvZiB0aGUgY2hyb21pdW0gYm90cywgc28gd2UKICAgICAjIGZvcmNlIHRoZSB1c2Ug
b2YgYSBDaHJvbWl1bSBwb3J0LiAgV2Ugd2lsbCBsb29rIGZvciBlaXRoZXIgRGVidWcgb3IKICAg
ICAjIFJlbGVhc2UgdmVyc2lvbnMuCiAgICAgb3B0aW9ucy5jb25maWd1cmF0aW9uID0gIlJlbGVh
c2UiCiAgICAgb3B0aW9ucy5jaHJvbWl1bSA9IFRydWUKLSAgICBwb3J0X29iaiA9IHBvcnQuZ2V0
KE5vbmUsIG9wdGlvbnMpCisgICAgcG9ydF9vYmogPSBwb3J0X2ZhY3RvcnkuZ2V0KE5vbmUsIG9w
dGlvbnMpCiAgICAgaWYgbm90IHBvcnRfb2JqLmNoZWNrX2ltYWdlX2RpZmYob3ZlcnJpZGVfc3Rl
cD1Ob25lLCBsb2dnaW5nPUZhbHNlKToKICAgICAgICAgX2xvZy5kZWJ1ZygnTm8gcmVsZWFzZSB2
ZXJzaW9uIG9mIHRoZSBpbWFnZSBkaWZmIGJpbmFyeSB3YXMgZm91bmQuJykKICAgICAgICAgb3B0
aW9ucy5jb25maWd1cmF0aW9uID0gIkRlYnVnIgotICAgICAgICBwb3J0X29iaiA9IHBvcnQuZ2V0
KE5vbmUsIG9wdGlvbnMpCisgICAgICAgIHBvcnRfb2JqID0gcG9ydF9mYWN0b3J5LmdldChOb25l
LCBvcHRpb25zKQogICAgICAgICBpZiBub3QgcG9ydF9vYmouY2hlY2tfaW1hZ2VfZGlmZihvdmVy
cmlkZV9zdGVwPU5vbmUsIGxvZ2dpbmc9RmFsc2UpOgogICAgICAgICAgICAgX2xvZy5lcnJvcign
Tm8gdmVyc2lvbiBvZiBpbWFnZSBkaWZmIHdhcyBmb3VuZC4gQ2hlY2sgeW91ciBidWlsZC4nKQog
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKQEAgLTkzOSw4ICs5NDMsOSBAQCBkZWYgbWFpbihhcmdz
KToKICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nX2xldmVsKQogICAgIGxvZ2dlci5hZGRIYW5kbGVy
KGxvZ19oYW5kbGVyKQogCi0gICAgdGFyZ2V0X3BvcnRfb2JqID0gcG9ydC5nZXQoTm9uZSwgdGFy
Z2V0X29wdGlvbnMpCi0gICAgaG9zdF9wb3J0X29iaiA9IGdldF9ob3N0X3BvcnRfb2JqZWN0KG9w
dGlvbnMpCisgICAgaG9zdCA9IEhvc3QoKQorICAgIHRhcmdldF9wb3J0X29iaiA9IGhvc3QucG9y
dF9mYWN0b3J5LmdldChOb25lLCB0YXJnZXRfb3B0aW9ucykKKyAgICBob3N0X3BvcnRfb2JqID0g
Z2V0X2hvc3RfcG9ydF9vYmplY3QoaG9zdC5wb3J0X2ZhY3RvcnksIG9wdGlvbnMpCiAgICAgaWYg
bm90IGhvc3RfcG9ydF9vYmogb3Igbm90IHRhcmdldF9wb3J0X29iajoKICAgICAgICAgcmV0dXJu
IDEKIApAQCAtOTUzLDggKzk1OCw3IEBAIGRlZiBtYWluKGFyZ3MpOgogICAgICMgRklYTUU6IFND
TSBtb2R1bGUgZG9lc24ndCBoYW5kbGUgcGF0aHMgdGhhdCBhcmVuJ3QgcmVsYXRpdmUgdG8gdGhl
IGNoZWNrb3V0X3Jvb3QgY29uc2lzdGVudGx5LgogICAgIGhvc3RfcG9ydF9vYmouX2ZpbGVzeXN0
ZW0uY2hkaXIoc2NtX29iai5jaGVja291dF9yb290KQogCi0gICAgcmV0X2NvZGUgPSByZWFsX21h
aW4ob3B0aW9ucywgdGFyZ2V0X29wdGlvbnMsIGhvc3RfcG9ydF9vYmosIHRhcmdldF9wb3J0X29i
aiwgdXJsX2ZldGNoZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgemlwX2ZhY3RvcnksIHNj
bV9vYmopCisgICAgcmV0X2NvZGUgPSByZWFsX21haW4ob3B0aW9ucywgdGFyZ2V0X29wdGlvbnMs
IGhvc3RfcG9ydF9vYmosIHRhcmdldF9wb3J0X29iaiwgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5
LCBzY21fb2JqKQogICAgIGlmIG5vdCByZXRfY29kZSBhbmQgbG9nX2hhbmRsZXIubnVtX2ZhaWx1
cmVzOgogICAgICAgICByZXRfY29kZSA9IDEKICAgICBwcmludCAnJwpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtp
dF90ZXN0c191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQv
cmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXggOTE1ZTJh
ZDhhNjY3OGZlNWU2N2FkODM2MGM0ZjRkOTFjNzMwMmRlNy4uMjk4NmViZjc1OGUzOWQwMDMyYTI5
YTdmMWQ2Mjk0Y2E4MjdjN2M3NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0zMyw3ICszMyw4IEBAIGltcG9ydCB1bml0
dGVzdAogCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHVybGZldGNoZXJfbW9jawotZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBmaWxlc3lzdGVtX21vY2sKK2Zyb20gd2Via2l0
cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKKwogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtIGltcG9ydCB6aXBmaWxlc2V0X21vY2sKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbSBpbXBvcnQgb3V0cHV0Y2FwdHVyZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgpAQCAtNTQsMTAgKzU1LDEyIEBA
IGNsYXNzIE1vY2tQb3J0KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLmltYWdlX2RpZmZf
ZXhpc3RzCiAKIAotZGVmIGdldF9tb2NrX2dldChjb25maWdfZXhwZWN0YXRpb25zKToKLSAgICBk
ZWYgbW9ja19nZXQocG9ydF9uYW1lLCBvcHRpb25zKToKK2NsYXNzIE1vY2tQb3J0RmFjdG9yeShv
YmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWdfZXhwZWN0YXRpb25zKToKKyAg
ICAgICAgc2VsZi5jb25maWdfZXhwZWN0YXRpb25zID0gY29uZmlnX2V4cGVjdGF0aW9ucworCisg
ICAgZGVmIGdldChwb3J0X25hbWUsIG9wdGlvbnMpOgogICAgICAgICByZXR1cm4gTW9ja1BvcnQo
Y29uZmlnX2V4cGVjdGF0aW9uc1tvcHRpb25zLmNvbmZpZ3VyYXRpb25dKQotICAgIHJldHVybiBt
b2NrX2dldAogCiAKIEFSQ0hJVkVfVVJMID0gJ2h0dHA6Ly9sb2NhbGhvc3QvbGF5b3V0X3Rlc3Rf
cmVzdWx0cycKQEAgLTc1LDEyICs3OCwxMiBAQCBkZWYgdGVzdF9vcHRpb25zKCk6CiAKIAogZGVm
IHRlc3RfaG9zdF9wb3J0X2FuZF9maWxlc3lzdGVtKG9wdGlvbnMsIGV4cGVjdGF0aW9ucyk6Ci0g
ICAgZmlsZXN5c3RlbSA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKLSAgICBob3N0X3BvcnRfb2Jq
ID0gcG9ydC5nZXQoJ3Rlc3QnLCBvcHRpb25zLCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0sIHVzZXI9
TW9ja1VzZXIoKSkKKyAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgIGhvc3RfcG9ydF9vYmogPSBo
b3N0LnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QnLCBvcHRpb25zKQogCiAgICAgZXhwZWN0YXRpb25z
X3BhdGggPSBob3N0X3BvcnRfb2JqLnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpCi0g
ICAgZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoZXhwZWN0YXRpb25zX3BhdGgsIGV4cGVjdGF0
aW9ucykKLSAgICByZXR1cm4gKGhvc3RfcG9ydF9vYmosIGZpbGVzeXN0ZW0pCisgICAgaG9zdF9w
b3J0X29iai5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShleHBlY3RhdGlvbnNfcGF0aCwgZXhw
ZWN0YXRpb25zKQorICAgIHJldHVybiAoaG9zdF9wb3J0X29iaiwgaG9zdF9wb3J0X29iai5maWxl
c3lzdGVtKQogCiAKIGRlZiB0ZXN0X3VybF9mZXRjaGVyKGZpbGVzeXN0ZW0pOgpAQCAtMTYzLDIw
ICsxNjYsMTUgQEAgY2xhc3MgVGVzdEdldEhvc3RQb3J0T2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgYXNzZXJ0X3Jlc3VsdChzZWxmLCByZWxlYXNlX3ByZXNlbnQsIGRlYnVnX3By
ZXNlbnQsIHZhbGlkX3BvcnRfb2JqKToKICAgICAgICAgIyBUZXN0cyB3aGV0aGVyIHdlIGdldCBh
IHZhbGlkIHBvcnQgb2JqZWN0IHJldHVybmVkIHdoZW4gd2UgY2xhaW0KICAgICAgICAgIyB0aGF0
IEltYWdlIGRpZmYgaXMgKG9yIGlzbid0KSBwcmVzZW50IGluIHRoZSB0d28gY29uZmlncy4KLSAg
ICAgICAgcG9ydC5nZXQgPSBnZXRfbW9ja19nZXQoeydSZWxlYXNlJzogcmVsZWFzZV9wcmVzZW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlYnVnJzogZGVidWdfcHJlc2Vu
dH0pCi0gICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPU5vbmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sX2RpcmVjdG9yeT0nL3Rt
cCcpCi0gICAgICAgIHBvcnRfb2JqID0gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMu
Z2V0X2hvc3RfcG9ydF9vYmplY3Qob3B0aW9ucykKKyAgICAgICAgcG9ydF9mYWN0b3J5ID0gTW9j
a1BvcnRGYWN0b3J5KHsnUmVsZWFzZSc6IHJlbGVhc2VfcHJlc2VudCwgJ0RlYnVnJzogZGVidWdf
cHJlc2VudH0pCisgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPU5v
bmUsIGh0bWxfZGlyZWN0b3J5PScvdG1wJykKKyAgICAgICAgcG9ydF9vYmogPSByZWJhc2VsaW5l
X2Nocm9taXVtX3dlYmtpdF90ZXN0cy5nZXRfaG9zdF9wb3J0X29iamVjdChwb3J0X2ZhY3Rvcnks
IG9wdGlvbnMpCiAgICAgICAgIGlmIHZhbGlkX3BvcnRfb2JqOgogICAgICAgICAgICAgc2VsZi5h
c3NlcnROb3RFcXVhbChwb3J0X29iaiwgTm9uZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydF9vYmosIE5vbmUpCiAKICAgICBkZWYgdGVzdF9nZXRfaG9z
dF9wb3J0X29iamVjdChzZWxmKToKLSAgICAgICAgIyBTYXZlIHRoZSBub3JtYWwgcG9ydC5nZXQo
KSBmdW5jdGlvbiBmb3IgZnV0dXJlIHRlc3RpbmcuCi0gICAgICAgIG9sZF9nZXQgPSBwb3J0Lmdl
dAotCiAgICAgICAgICMgVGVzdCB3aGV0aGVyIHdlIGdldCBhIHZhbGlkIHBvcnQgb2JqZWN0IGJh
Y2sgZm9yIHRoZSBmb3VyCiAgICAgICAgICMgcG9zc2libGUgY2FzZXMgb2YgaGF2aW5nIEltYWdl
RGlmZnMgYnVpbHQuIEl0IHNob3VsZCB3b3JrIHdoZW4KICAgICAgICAgIyB0aGVyZSBpcyBhdCBs
ZWFzdCBvbmUgYmluYXJ5IHByZXNlbnQuCkBAIC0xODUsOSArMTgzLDYgQEAgY2xhc3MgVGVzdEdl
dEhvc3RQb3J0T2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRf
cmVzdWx0KEZhbHNlLCBUcnVlLCBUcnVlKQogICAgICAgICBzZWxmLmFzc2VydF9yZXN1bHQoVHJ1
ZSwgVHJ1ZSwgVHJ1ZSkKIAotICAgICAgICAjIFJlc3RvcmUgdGhlIG5vcm1hbCBwb3J0LmdldCgp
IGZ1bmN0aW9uLgotICAgICAgICBwb3J0LmdldCA9IG9sZF9nZXQKLQogCiBjbGFzcyBUZXN0T3B0
aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcGFyc2Vfb3B0aW9ucyhzZWxm
KToKQEAgLTIxNCw4ICsyMDksOCBAQCBjbGFzcyBUZXN0UmViYXNlbGluZXIodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBob3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVtID0gdGVzdF9ob3N0X3Bv
cnRfYW5kX2ZpbGVzeXN0ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKQogCiAgICAgICAgIHRhcmdl
dF9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICB0YXJnZXRfcG9ydF9vYmogPSBwb3J0LmdldCgn
dGVzdCcsIHRhcmdldF9vcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAg
ICAgIHRhcmdldF9wb3J0X29iaiA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdCcsIHRhcmdl
dF9vcHRpb25zLCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCiAgICAgICAgIHRhcmdldF9wb3J0X29i
ai5fZXhwZWN0YXRpb25zID0gZXhwZWN0YXRpb25zCiAgICAgICAgIHBsYXRmb3JtID0gdGFyZ2V0
X3BvcnRfb2JqLm5hbWUoKQogCkBAIC0zODcsNyArMzgyLDggQEAgY2xhc3MgVGVzdFJlYWxNYWlu
KHVuaXR0ZXN0LlRlc3RDYXNlKToKIGNsYXNzIFRlc3RIdG1sR2VuZXJhdG9yKHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICBkZWYgbWFrZV9nZW5lcmF0b3Ioc2VsZiwgZmlsZXMsIHRlc3RzKToKICAg
ICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249Tm9uZSwgaHRtbF9kaXJl
Y3Rvcnk9Jy90bXAnKQotICAgICAgICBob3N0X3BvcnQgPSBwb3J0LmdldCgndGVzdCcsIG9wdGlv
bnMsIGZpbGVzeXN0ZW09dW5pdF90ZXN0X2ZpbGVzeXN0ZW0oZmlsZXMpKQorICAgICAgICBob3N0
ID0gTW9ja0hvc3QoKQorICAgICAgICBob3N0X3BvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQo
J3Rlc3QnLCBvcHRpb25zLCBmaWxlc3lzdGVtPXVuaXRfdGVzdF9maWxlc3lzdGVtKGZpbGVzKSkK
ICAgICAgICAgZ2VuZXJhdG9yID0gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMuSHRt
bEdlbmVyYXRvcihob3N0X3BvcnQsCiAgICAgICAgICAgICB0YXJnZXRfcG9ydD1Ob25lLCBvcHRp
b25zPW9wdGlvbnMsIHBsYXRmb3Jtcz1bJ3Rlc3QtbWFjLWxlb3BhcmQnXSwgcmViYXNlbGluaW5n
X3Rlc3RzPXRlc3RzKQogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLCBob3N0X3BvcnQKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9leHBlY3RhdGlvbnMu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZXhwZWN0YXRpb25zLnB5
CmluZGV4IDc2MWQ5NmU5OWQ2MjhkNjhkMDcxNDZlOTllZGQ4MDY1MzU4NjU3MjcuLjU3NWU4MGNl
ODViZjhjZWVmMzRlM2I0NmQ5MjQ2MGM2YzNjYzhiMjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9leHBlY3RhdGlvbnMucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2V4cGVjdGF0aW9ucy5weQpAQCAtMjgsNyArMjgs
NiBAQAogCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0
aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbkNvbnZlcnRlcgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubW9kZWxzLnRlc3RfZXhwZWN0YXRpb25zIGltcG9ydCBUZXN0RXhwZWN0YXRpb25Q
YXJzZXIsIFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXIKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnBvcnQgaW1wb3J0IGZhY3RvcnkKIGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0
b29sIGltcG9ydCBBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZAogCiAKQEAgLTM3LDcgKzM2LDcg
QEAgY2xhc3MgT3B0aW1pemVFeHBlY3RhdGlvbnMoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQp
OgogICAgIGhlbHBfdGV4dCA9ICJGaXhlcyBzaW1wbGUgc3R5bGUgaXNzdWVzIGluIHRlc3RfZXhw
ZWN0YXRpb25zIGZpbGUuICAoQ3VycmVudGx5IHdvcmtzIG9ubHkgZm9yIGNocm9taXVtIHBvcnQu
KSIKIAogICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAg
ICBwb3J0ID0gZmFjdG9yeS5nZXQoImNocm9taXVtLXdpbi13aW43IikgICMgRklYTUU6IFRoaXMg
c2hvdWxkIGJlIHNlbGVjdGFibGUuCisgICAgICAgIHBvcnQgPSB0b29sLnBvcnRfZmFjdG9yeS5n
ZXQoImNocm9taXVtLXdpbi13aW43IikgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHNlbGVjdGFi
bGUuCiAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmVzID0gVGVzdEV4cGVjdGF0aW9uUGFyc2VyLnRv
a2VuaXplX2xpc3QocG9ydC50ZXN0X2V4cGVjdGF0aW9ucygpKQogICAgICAgICBwYXJzZXIgPSBU
ZXN0RXhwZWN0YXRpb25QYXJzZXIocG9ydCwgW10sIGFsbG93X3JlYmFzZWxpbmVfbW9kaWZpZXI9
RmFsc2UpCiAgICAgICAgIGZvciBleHBlY3RhdGlvbl9saW5lIGluIGV4cGVjdGF0aW9uX2xpbmVz
OgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFz
ZWxpbmUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGlu
ZS5weQppbmRleCBhM2JlYzcxODljN2JmYzUyMzc5MGU4YzNiNzMyYTVlNWRlZTcwN2E0Li5iNjIz
MjcyNWY5MzJhOTEwOTJlMmZkODM1MDU3MjliN2VkNjZlYWQ5IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQpAQCAtNDAsNyArNDAs
NyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlciBpbXBvcnQgVXNlcgogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UudGVzdF9yZXN1bHRfd3JpdGVyIGlt
cG9ydCBUZXN0UmVzdWx0V3JpdGVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMg
aW1wb3J0IHRlc3RfZmFpbHVyZXMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50
ZXN0X2V4cGVjdGF0aW9ucyBpbXBvcnQgVGVzdEV4cGVjdGF0aW9ucwotZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgZmFjdG9yeSwgYnVpbGRlcnMKK2Zyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJ1aWxkZXJzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0IGltcG9ydCB0ZXN0X2ZpbGVzCiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBp
bXBvcnQgcGx1cmFsaXplCiBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBv
cnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgUmVi
YXNlbGluZVRlc3QoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgICAgICByZXR1cm4g
YnVpbGRlci5hY2N1bXVsYXRlZF9yZXN1bHRzX3VybCgpCiAKICAgICBkZWYgX2Jhc2VsaW5lX2Rp
cmVjdG9yeShzZWxmLCBidWlsZGVyX25hbWUpOgotICAgICAgICBwb3J0ID0gZmFjdG9yeS5nZXRf
ZnJvbV9idWlsZGVyX25hbWUoYnVpbGRlcl9uYW1lKQorICAgICAgICBwb3J0ID0gc2VsZi5fdG9v
bC5wb3J0X2ZhY3RvcnkuZ2V0X2Zyb21fYnVpbGRlcl9uYW1lKGJ1aWxkZXJfbmFtZSkKICAgICAg
ICAgcmV0dXJuIHBvcnQuYmFzZWxpbmVfcGF0aCgpCiAKICAgICBkZWYgX3NhdmVfYmFzZWxpbmUo
c2VsZiwgZGF0YSwgdGFyZ2V0X2Jhc2VsaW5lKToKQEAgLTExNyw3ICsxMTcsNyBAQCBjbGFzcyBP
cHRpbWl6ZUJhc2VsaW5lcyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAKICAgICBkZWYg
ZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICAgICAgc2VsZi5fYmFzZWxp
bmVfb3B0aW1pemVyID0gQmFzZWxpbmVPcHRpbWl6ZXIodG9vbCkKLSAgICAgICAgc2VsZi5fcG9y
dCA9IGZhY3RvcnkuZ2V0KCJjaHJvbWl1bS13aW4td2luNyIpICAjIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBzZWxlY3RhYmxlLgorICAgICAgICBzZWxmLl9wb3J0ID0gdG9vbC5wb3J0X2ZhY3Rvcnku
Z2V0KCJjaHJvbWl1bS13aW4td2luNyIpICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBzZWxlY3Rh
YmxlLgogCiAgICAgICAgIGZvciB0ZXN0X25hbWUgaW4gbWFwKHNlbGYuX3RvX3Rlc3RfbmFtZSwg
dGVzdF9maWxlcy5maW5kKHNlbGYuX3BvcnQsIGFyZ3MpKToKICAgICAgICAgICAgIHByaW50ICJP
cHRpbWl6aW5nICVzLiIgJSB0ZXN0X25hbWUKQEAgLTE0Nyw3ICsxNDcsNyBAQCBjbGFzcyBBbmFs
eXplQmFzZWxpbmVzKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKIAogICAgIGRlZiBleGVj
dXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICBzZWxmLl9iYXNlbGluZV9v
cHRpbWl6ZXIgPSBCYXNlbGluZU9wdGltaXplcih0b29sKQotICAgICAgICBzZWxmLl9wb3J0ID0g
ZmFjdG9yeS5nZXQoImNocm9taXVtLXdpbi13aW43IikgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJl
IHNlbGVjdGFibGUuCisgICAgICAgIHNlbGYuX3BvcnQgPSB0b29sLnBvcnRfZmFjdG9yeS5nZXQo
ImNocm9taXVtLXdpbi13aW43IikgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHNlbGVjdGFibGUu
CiAKICAgICAgICAgZm9yIHRlc3RfbmFtZSBpbiBtYXAoc2VsZi5fdG9fdGVzdF9uYW1lLCB0ZXN0
X2ZpbGVzLmZpbmQoc2VsZi5fcG9ydCwgYXJncykpOgogICAgICAgICAgICAgc2VsZi5fYW5hbHl6
ZV9iYXNlbGluZSh0ZXN0X25hbWUpCkBAIC0xNzMsNyArMTczLDcgQEAgY2xhc3MgUmViYXNlbGlu
ZUV4cGVjdGF0aW9ucyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgZGVmIF91cGRh
dGVfZXhwZWN0YXRpb25zX2ZpbGUoc2VsZiwgcG9ydF9uYW1lKToKICAgICAgICAgaWYgbm90IHNl
bGYuX2lzX3N1cHBvcnRlZF9wb3J0KHBvcnRfbmFtZSk6CiAgICAgICAgICAgICByZXR1cm4KLSAg
ICAgICAgcG9ydCA9IGZhY3RvcnkuZ2V0KHBvcnRfbmFtZSkKKyAgICAgICAgcG9ydCA9IHNlbGYu
X3Rvb2wucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWUpCiAgICAgICAgIGV4cGVjdGF0aW9ucyA9
IHNlbGYuX2V4cGVjdGF0aW9ucyhwb3J0KQogICAgICAgICBwYXRoID0gcG9ydC5wYXRoX3RvX3Rl
c3RfZXhwZWN0YXRpb25zX2ZpbGUoKQogICAgICAgICBzZWxmLl90b29sLmZpbGVzeXN0ZW0ud3Jp
dGVfdGV4dF9maWxlKHBhdGgsIGV4cGVjdGF0aW9ucy5yZW1vdmVfcmViYXNlbGluZWRfdGVzdHMo
ZXhwZWN0YXRpb25zLmdldF9yZWJhc2VsaW5pbmdfZmFpbHVyZXMoKSkpCkBAIC0xODgsMTYgKzE4
OCwxNiBAQCBjbGFzcyBSZWJhc2VsaW5lRXhwZWN0YXRpb25zKEFic3RyYWN0RGVjbGFyYXRpdmVD
b21tYW5kKToKICAgICAgICAgaWYgbm90IGJ1aWxkZXJfbmFtZToKICAgICAgICAgICAgIHJldHVy
bgogICAgICAgICBwcmludCAiUmV0cmlldmluZyByZXN1bHRzIGZvciAlcyBmcm9tICVzLiIgJSAo
cG9ydF9uYW1lLCBidWlsZGVyX25hbWUpCi0gICAgICAgIGZvciB0ZXN0X25hbWUgaW4gc2VsZi5f
dGVzdHNfdG9fcmViYXNlbGluZShmYWN0b3J5LmdldChwb3J0X25hbWUpKToKKyAgICAgICAgZm9y
IHRlc3RfbmFtZSBpbiBzZWxmLl90ZXN0c190b19yZWJhc2VsaW5lKHNlbGYuX3Rvb2wucG9ydF9m
YWN0b3J5LmdldChwb3J0X25hbWUpKToKICAgICAgICAgICAgIHNlbGYuX3RvdWNoZWRfdGVzdF9u
YW1lcy5hZGQodGVzdF9uYW1lKQogICAgICAgICAgICAgcHJpbnQgIiAgICAlcyIgJSB0ZXN0X25h
bWUKICAgICAgICAgICAgIHNlbGYuX3J1bl93ZWJraXRfcGF0Y2goWydyZWJhc2VsaW5lLXRlc3Qn
LCBidWlsZGVyX25hbWUsIHRlc3RfbmFtZV0pCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRp
b25zLCBhcmdzLCB0b29sKToKICAgICAgICAgc2VsZi5fdG91Y2hlZF90ZXN0X25hbWVzID0gc2V0
KFtdKQotICAgICAgICBmb3IgcG9ydF9uYW1lIGluIGZhY3RvcnkuYWxsX3BvcnRfbmFtZXMoKToK
KyAgICAgICAgZm9yIHBvcnRfbmFtZSBpbiB0b29sLnBvcnRfZmFjdG9yeS5hbGxfcG9ydF9uYW1l
cygpOgogICAgICAgICAgICAgc2VsZi5fcmViYXNlbGluZV9wb3J0KHBvcnRfbmFtZSkKLSAgICAg
ICAgZm9yIHBvcnRfbmFtZSBpbiBmYWN0b3J5LmFsbF9wb3J0X25hbWVzKCk6CisgICAgICAgIGZv
ciBwb3J0X25hbWUgaW4gdG9vbC5wb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMoKToKICAgICAg
ICAgICAgIHNlbGYuX3VwZGF0ZV9leHBlY3RhdGlvbnNfZmlsZShwb3J0X25hbWUpCiAgICAgICAg
IGZvciB0ZXN0X25hbWUgaW4gc2VsZi5fdG91Y2hlZF90ZXN0X25hbWVzOgogICAgICAgICAgICAg
cHJpbnQgIk9wdGltaXppbmcgYmFzZWxpbmVzIGZvciAlcy4iICUgdGVzdF9uYW1lCkBAIC0yMzYs
NyArMjM2LDcgQEAgY2xhc3MgUmViYXNlbGluZShBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6
CiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgIGJ1
aWxkZXIsIGJ1aWxkX251bWJlciA9IHNlbGYuX2J1aWxkZXJfdG9fcHVsbF9mcm9tKCkKICAgICAg
ICAgYnVpbGQgPSBidWlsZGVyLmJ1aWxkKGJ1aWxkX251bWJlcikKLSAgICAgICAgcG9ydCA9IGZh
Y3RvcnkuZ2V0X2Zyb21fYnVpbGRlcl9uYW1lKGJ1aWxkZXIubmFtZSgpKQorICAgICAgICBwb3J0
ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0X2Zyb21fYnVpbGRlcl9uYW1lKGJ1aWxkZXIubmFtZSgp
KQogCiAgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuX3Rlc3RzX3RvX3VwZGF0ZShidWlsZCk6CiAg
ICAgICAgICAgICByZXN1bHRzX3VybCA9IHNlbGYuX3Jlc3VsdHNfdXJsX2Zvcl90ZXN0KGJ1aWxk
LCB0ZXN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3JlYmFzZWxpbmVfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5weQppbmRleCBhMzY5YzlmMTZhNWU1ZmU2YzMwZTZh
ZTc5N2M5ZTEyMjA4YmNjYmUyLi5iY2IwOTIxYWFmMzg1NjVkOWYwNjgwMGQ0MWI0NGU4OWU1M2Zl
MjYyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmVi
YXNlbGluZV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5weQpAQCAtNTEsOCArNTEsMTUgQEAgY2xhc3MgVGVz
dFJlYmFzZWxpbmUodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVf
ZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAgICBjb21tYW5kID0gUmViYXNlbGluZUV4cGVjdGF0
aW9ucygpCiAgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCi0gICAgICAgIHRvb2wuZXhlY3V0aXZl
ID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpCiAgICAgICAgIGNvbW1hbmQuYmluZF90
b190b29sKHRvb2wpCisKKyAgICAgICAgZm9yIHBvcnRfbmFtZSBpbiB0b29sLnBvcnRfZmFjdG9y
eS5hbGxfcG9ydF9uYW1lcygpOgorICAgICAgICAgICAgcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5
LmdldChwb3J0X25hbWUpCisgICAgICAgICAgICB0b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9m
aWxlKHBvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCksICcnKQorCisgICAgICAg
ICMgRG9uJ3QgZW5hYmxlIGxvZ2dpbmcgdW50aWwgYWZ0ZXIgd2UgY3JlYXRlIHRoZSBtb2NrIGV4
cGVjdGF0aW9uIGZpbGVzIGFzIHNvbWUgUG9ydC5fX2luaXRfXydzIHJ1biBzdWJjb21tYW5kcy4K
KyAgICAgICAgdG9vbC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkK
KwogICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiIiJSZXRyaWV2aW5nIHJlc3VsdHMgZm9yIGNo
cm9taXVtLWNnLW1hYy1sZW9wYXJkIGZyb20gV2Via2l0IE1hYzEwLjUgKENHKS4KICAgICB1c2Vy
c2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbAogICAgIHVzZXJzY3JpcHRzL2ltYWdlcy5zdmcKQEAg
LTExMCw0ICsxMTcsNCBAQCBNT0NLIHJ1bl9jb21tYW5kOiBbJ2VjaG8nLCAnb3B0aW1pemUtYmFz
ZWxpbmVzJywgJ3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJwogTU9DSyBydW5fY29tbWFu
ZDogWydlY2hvJywgJ29wdGltaXplLWJhc2VsaW5lcycsICd1c2Vyc2NyaXB0cy9pbWFnZXMuc3Zn
J10sIGN3ZD0vbW9jay1jaGVja291dAogIiIiCiAgICAgICAgIGNvbW1hbmQuX3Rlc3RzX3RvX3Jl
YmFzZWxpbmUgPSBsYW1iZGEgcG9ydDogW10gaWYgbm90IHBvcnQubmFtZSgpLmZpbmQoJy1ncHUt
JykgPT0gLTEgZWxzZSBbJ3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJywgJ3VzZXJzY3Jp
cHRzL2ltYWdlcy5zdmcnXQotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMo
c2VsZiwgY29tbWFuZC5leGVjdXRlLCBbTW9ja1Rvb2woKSwgTm9uZSwgTm9uZV0sIGV4cGVjdGVk
X3N0ZG91dD1leHBlY3RlZF9zdGRvdXQsIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIp
CisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjb21tYW5kLmV4
ZWN1dGUsIFtOb25lLCBbXSwgdG9vbF0sIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQs
IGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZXNlcnZlci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lc2VydmVyLnB5CmluZGV4IDkw
NTM4ZjFjMzEzYTZkOTJlMjNmMDg1YTE2MGVlMTUyMGE0YThjNWUuLmU3ZmY4NmExNDlkNWM1ZmI0
NjdjYmJhZDQzZGIxYTNmMmJmY2VjMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lc2VydmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lc2VydmVyLnB5CkBAIC0zNiw3ICszNiw2
IEBAIGltcG9ydCBvcy5wYXRoCiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgc3lzdGVtCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQucmVzdWx0c2pzb25wYXJzZXIgaW1wb3J0IGZvcl9lYWNo
X3Rlc3QsIEpTT05UZXN0UmVzdWx0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRf
cGFja2FnZSBpbXBvcnQganNvbl9yZXN1bHRzX2dlbmVyYXRvcgotZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydCBpbXBvcnQgZmFjdG9yeQogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRz
LmFic3RyYWN0bG9jYWxzZXJ2ZXJjb21tYW5kIGltcG9ydCBBYnN0cmFjdExvY2FsU2VydmVyQ29t
bWFuZAogZnJvbSB3ZWJraXRweS50b29sLnNlcnZlcnMucmViYXNlbGluZXNlcnZlciBpbXBvcnQg
Z2V0X3Rlc3RfYmFzZWxpbmVzLCBSZWJhc2VsaW5lSFRUUFNlcnZlciwgU1RBVEVfTkVFRFNfUkVC
QVNFTElORQogCkBAIC04NCw3ICs4Myw3IEBAIGNsYXNzIFJlYmFzZWxpbmVTZXJ2ZXIoQWJzdHJh
Y3RMb2NhbFNlcnZlckNvbW1hbmQpOgogICAgICAgICByZXN1bHRzX2pzb25fcGF0aCA9IGZpbGVz
eXN0ZW0uam9pbihyZXN1bHRzX2RpcmVjdG9yeSwgJ2Z1bGxfcmVzdWx0cy5qc29uJykKICAgICAg
ICAgcmVzdWx0c19qc29uID0ganNvbl9yZXN1bHRzX2dlbmVyYXRvci5sb2FkX2pzb24oZmlsZXN5
c3RlbSwgcmVzdWx0c19qc29uX3BhdGgpCiAKLSAgICAgICAgcG9ydCA9IGZhY3RvcnkuZ2V0KCkK
KyAgICAgICAgcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldCgpCiAgICAgICAgIGxheW91dF90
ZXN0c19kaXJlY3RvcnkgPSBwb3J0LmxheW91dF90ZXN0c19kaXIoKQogICAgICAgICBwbGF0Zm9y
bXMgPSBmaWxlc3lzdGVtLmxpc3RkaXIoZmlsZXN5c3RlbS5qb2luKGxheW91dF90ZXN0c19kaXJl
Y3RvcnksICdwbGF0Zm9ybScpKQogICAgICAgICBzZWxmLl90ZXN0X2NvbmZpZyA9IFRlc3RDb25m
aWcocG9ydCwgbGF5b3V0X3Rlc3RzX2RpcmVjdG9yeSwgcmVzdWx0c19kaXJlY3RvcnksIHBsYXRm
b3JtcywgZmlsZXN5c3RlbSwgc2NtKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyLnB5CmluZGV4IGNlMWJjZGU1MmZlMzlmODI4
YzMzOTk1ZjIyMDVlZmRlNzVlZjY0ZDIuLjQyNWQxY2VhNzc2NTRmOGFlOWNiZDg3MDcxODhjOWQ2
ZmI5MWY2ZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJz
L2dhcmRlbmluZ3NlcnZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2Vy
dmVycy9nYXJkZW5pbmdzZXJ2ZXIucHkKQEAgLTMwLDcgKzMwLDYgQEAgZnJvbSB3ZWJraXRweS50
b29sLnNlcnZlcnMucmVmbGVjdGlvbmhhbmRsZXIgaW1wb3J0IFJlZmxlY3Rpb25IYW5kbGVyCiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy50ZXN0X2V4cGVjdGF0aW9uc19l
ZGl0b3IgaW1wb3J0IEJ1Z01hbmFnZXIsIFRlc3RFeHBlY3RhdGlvbnNFZGl0b3IKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2V4cGVjdGF0aW9ucyBpbXBvcnQgVGVzdEV4
cGVjdGF0aW9uUGFyc2VyLCBUZXN0RXhwZWN0YXRpb25zLCBUZXN0RXhwZWN0YXRpb25TZXJpYWxp
emVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9u
IGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbkNvbnZlcnRlcgotZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMucG9ydCBpbXBvcnQgZmFjdG9yeQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dCBpbXBvcnQgYnVpbGRlcnMKIAogCkBAIC0xMTYsNyArMTE1LDcgQEAgY2xhc3MgR2FyZGVuaW5n
SFRUUFJlcXVlc3RIYW5kbGVyKFJlZmxlY3Rpb25IYW5kbGVyKToKICAgICBkZWYgX2V4cGVjdGF0
aW9uc191cGRhdGVyKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBTaG91bGQgc3BsaXQgZmFpbHVy
ZV9pbmZvX2xpc3QgaW50byBsaXN0cyBwZXIgcG9ydCwgdGhlbiBlZGl0IGVhY2ggZXhwZWN0YXRp
b25zIGZpbGUgc2VwYXJhdGVseS4KICAgICAgICAgIyBGb3Igbm93LCBhc3N1bWUgQ2hyb21pdW0g
cG9ydC4KLSAgICAgICAgcG9ydCA9IGZhY3RvcnkuZ2V0KCJjaHJvbWl1bS13aW4td2luNyIpCisg
ICAgICAgIHBvcnQgPSBzZWxmLnNlcnZlci50b29sLmdldCgiY2hyb21pdW0td2luLXdpbjciKQog
ICAgICAgICByZXR1cm4gR2FyZGVuaW5nRXhwZWN0YXRpb25zVXBkYXRlcihzZWxmLnNlcnZlci50
b29sLCBwb3J0KQogCiAgICAgZGVmIHJvbGxvdXQoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXJfdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXJfdW5p
dHRlc3QucHkKaW5kZXggNjdkYjdjZDYyNzNhOGMyNzFjNmNkMzc2MzA1ZDFkYWNkY2RiODZmNy4u
MzQ0ODZhMzc4ZjQ4OGQwYmVkMTUwZjE0OWIzMGIzNDg2YTY0YzNhZCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3Nl
cnZlcl91bml0dGVzdC5weQpAQCAtMzUsMTggKzM1LDIwIEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoK
IGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2Fw
dHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dCBpbXBvcnQgZmFjdG9yeQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3Rf
Y29uZmlndXJhdGlvbiBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1w
b3J0IE1vY2sKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1
dGl2ZQorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogZnJv
bSB3ZWJraXRweS50b29sLnNlcnZlcnMuZ2FyZGVuaW5nc2VydmVyIGltcG9ydCAqCiAKIAogY2xh
c3MgVGVzdFBvcnRGYWN0b3J5KG9iamVjdCk6CisgICAgIyBGSVhNRTogV2h5IGlzIHRoaXMgYSBj
bGFzcyBtZXRob2Q/CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGNyZWF0ZShjbHMpOgotICAg
ICAgICByZXR1cm4gZmFjdG9yeS5nZXQoInRlc3Qtd2luLXhwIikKKyAgICAgICAgaG9zdCA9IE1v
Y2tIb3N0KCkKKyAgICAgICAgcmV0dXJuIGhvc3QucG9ydF9mYWN0b3J5LmdldCgidGVzdC13aW4t
eHAiKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlv
bnNfZmlsZShjbHMpOgpAQCAtODcsNyArODksOCBAQCBjbGFzcyBUZXN0R2FyZGVuaW5nSFRUUFJl
cXVlc3RIYW5kbGVyKEdhcmRlbmluZ0hUVFBSZXF1ZXN0SGFuZGxlcik6CiBjbGFzcyBCdWlsZENv
dmVyYWdlRXh0cmFwb2xhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rf
ZXh0cmFwb2xhdGUoc2VsZik6CiAgICAgICAgICMgRklYTUU6IE1ha2UgdGhpcyB0ZXN0IG5vdCBy
ZWx5IG9uIGFjdHVhbCAobm90IG1vY2spIHBvcnQgb2JqZWN0cy4KLSAgICAgICAgcG9ydCA9IGZh
Y3RvcnkuZ2V0KCdjaHJvbWl1bS13aW4td2luNycsIE5vbmUpCisgICAgICAgIGhvc3QgPSBNb2Nr
SG9zdCgpCisgICAgICAgIHBvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoJ2Nocm9taXVtLXdp
bi13aW43JywgTm9uZSkKICAgICAgICAgY29udmVydGVyID0gVGVzdENvbmZpZ3VyYXRpb25Db252
ZXJ0ZXIocG9ydC5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpLCBwb3J0LmNvbmZpZ3VyYXRpb25f
c3BlY2lmaWVyX21hY3JvcygpKQogICAgICAgICBleHRyYXBvbGF0b3IgPSBCdWlsZENvdmVyYWdl
RXh0cmFwb2xhdG9yKGNvbnZlcnRlcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXh0cmFw
b2xhdG9yLmV4dHJhcG9sYXRlX3Rlc3RfY29uZmlndXJhdGlvbnMoIldlYmtpdCBXaW4iKSwgc2V0
KFtUZXN0Q29uZmlndXJhdGlvbih2ZXJzaW9uPSd4cCcsIGFyY2hpdGVjdHVyZT0neDg2JywgYnVp
bGRfdHlwZT0ncmVsZWFzZScsIGdyYXBoaWNzX3R5cGU9J2NwdScpXSkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113542</attachid>
            <date>2011-11-03 12:45:36 -0700</date>
            <delta_ts>2011-11-03 13:26:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-71494-20111103124535.patch</filename>
            <type>text/plain</type>
            <size>83873</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxNDAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmY2M0ODM1MGY4YjBmNjlkODUxMDcyMTIwYzg3Y2QxOGVm
Yzg3OGU4Li5iMjUwZGEwOTI4MTg2YjBiNjFkOWE1MjE2MGY4MTA5NDA2YmNjMmZkIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAz
IEBACisyMDExLTExLTAzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZW1vdmUgZGVwcmVjYXRlZCBmcmVlIGZ1bmN0aW9ucyBpbiBwb3J0LmZhY3RvcnkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDk0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBJIHJlbW92ZWQgcG9ydC5mYWN0
b3J5LmdldCwgZ2V0X2FsbCwgYW5kIGFsbF9wb3J0X25hbWVzIC0tIGxvbmctc2luY2UgZGVwcmVj
YXRlZAorICAgICAgICBmcmVlIGZ1bmN0aW9ucyBpbiBmYWN0b3J5LnB5LiAgVG8gcmVtb3ZlIHRo
ZXNlIHJlcXVpcmVkIGZpeGluZyBhbGwgY2FsbHNpdGVzCisgICAgICAgIHRvIHVzZSBNb2NrSG9z
dCwgSG9zdCwgb3IgUG9ydEZhY3Rvcnkgd2hlcmUgYXBwcm9wcmlhdGUuICBBZnRlciB0aGlzIGNo
YW5nZQorICAgICAgICB3ZSdyZSBvbmx5IGxlZnQgd2l0aCBhIGhhbmRmdWxsIG9mIHBsYWNlcyB3
aGVyZSB3ZSBpbmFwcHJvcHJhaXRlbHkgdXNlIGEKKyAgICAgICAgcmVhbCBFeGVjdXRpdmUsIEZp
bGVTeXN0ZW0gb3IgVXNlciBvYmplY3QgZHVyaW5nIHVuaXR0ZXN0aW5nLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYmFzZWxpbmVvcHRpbWl6ZXJfdW5pdHRl
c3QucHk6CisgICAgICAgICAtIFRoZXNlIFBvcnRGYWN0b3J5IG92ZXJyaWRlcyB3ZXJlIGZyb20g
YW4gZWFybGllciBlZGl0aW9uIG9mIG15IHByZXZpb3VzIHBhdGNoCisgICAgICAgICAgIGluIHRo
ZSBlbmQsIEkgcmVtb3ZlZCBNb2NrUG9ydEZhY3Rvcnkgc28gYWxsIHRlc3RzIGVuZGVkIHVwIHdp
dGggdGhpcyBzYW1lCisgICAgICAgICAgIHJlYWwgUG9ydEZhY3RvcnkoKSB3aXRoIGEgTW9ja0hv
c3QuICBUaGlzIHdhcyBzaW1wbHkgcmVkdW5kZW50IGNvZGUuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weToKKyAg
ICAgICAgIC0gVXNlIE1vY2tIb3N0IHRvIGdldCBhIG1vY2tlZC1vdXQgUG9ydEZhY3RvcnkuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdl
cl93b3JrZXJfYnJva2VyLnB5OgorICAgICAgICAgLSBUaGlzIGNvZGUgaGFzIG5vIGFjY2VzcyB0
byBhIEhvc3Qgb2JqZWN0LCBzbyB3ZSBqdXN0IHVzZSBhIGRlZmF1bHQgUG9ydEZhY3RvcnkKKyAg
ICAgICAgICAgZm9yIG5vdy4gIFRoaXMgd2lsbCBzdGlsbCBpbmNvcnJlY3RseSBjcmVhdGUgcmVh
bCBFeGVjdXRpdmUvRmlsZVN5c3RlbSBvYmplY3RzCisgICAgICAgICAgIGR1cnJpbmcgdW5pdHRl
c3RpbmcsIHdoaWNoIGlzIHdyb25nLiA6KAorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weToK
KyAgICAgICAgIC0gVXNlIGEgTW9ja0hvc3QgdG8gZ2V0IGEgbW9ja2VkIFBvcnRGYWN0b3J5Lgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Rlc3Rf
ZXhwZWN0YXRpb25zX2VkaXRvcl91bml0dGVzdC5weToKKyAgICAgICAgIC0gVXNlIGEgTW9ja0hv
c3QgdG8gZ2V0IGEgbW9ja2VkIFBvcnRGYWN0b3J5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2NvbmZpZ3VyYXRpb25fdW5pdHRlc3QucHk6Cisg
ICAgICAgICAtIGRpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKyAgICAgICAgIC0gZGl0dG8u
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9fX2luaXRfXy5w
eToKKyAgICAgICAgIC0gZmFjdG9yeS5nZXQgbm8gbG9uZ2VyIGV4aXN0cy4gIFlheSEKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0
dGVzdC5weToKKyAgICAgICAgIC0gVXNlIGEgTW9ja0hvc3QgdG8gZ2V0IGEgbW9ja2VkIFBvcnRG
YWN0b3J5LgorICAgICAgICAgICBUbyBkbyB0aGlzIGVmZmljaWVudGx5LCBJIGNyZWF0ZWQgYSBo
ZWxwZXIgZnVuY3Rpb24KKyAgICAgICAgICAgYW5kIGNvbWJpbmVkIGFsbCB0aGVzZSAobW9zdGx5
IHJlZHVuZGFudCkgdGVzdHMgaW50byBvbmUgdGVzdAorICAgICAgICAgICB3aXRoIHNldmVyYWwg
Y2FsbHMgdG8gdGhlIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5OgorICAgICAgICAgLSBQYXNz
IE1vY2tVc2VyIGFuZCBNb2NrRXhlY3V0aXZlIGluIHRoZXNlIHBvcnQgdGVzdGluZyBzdWJjbGFz
c2VzLgorICAgICAgICAgLSBJIGFsc28gcmVtb3ZlZCBhIGJ1bmNoIG9mIHVuZWNlc3NhcnkgdXNl
cyBvZiBtb2NrdG9vbC4gbmFtZXNwYWNpbmcuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHk6CisgICAgICAgICAtIEF3ZXNvbWUgd2lu
ZG93cyBoYWNrcyBzaG91bGQgb25seSBoYXBwZW4gb24gd2luMzIuICBPbmNlIHdlIHN0YXJ0ZWQK
KyAgICAgICAgICAgdXNpbmcgTW9ja0V4ZWN1dGl2ZXMgdGhlc2UgJ3N2biBoZWxwJyBjb21tYW5k
cyBzdGFydGVkIHByaW50aW5nIGluCisgICAgICAgICAgIG90aGVyIHRlc3RzLCB3aGljaCBpcyBo
b3cgSSBmb3VuZCB0aGlzIGJ1Zy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2RyeXJ1bi5weToKKyAgICAgICAgIC0gRHJ5UnVuUG9ydCBoYXMgbm8gSG9zdCwg
c28ganVzdCB1c2UgYSBQb3J0RmFjdG9yeSgpIGRpcmVjdGx5LgorICAgICAgICAgICBUaGlzIHdp
bGwgZG8gdGhlIHdyb25nIHRoaW5nIGlmIHdlJ3JlIHVuaXR0ZXN0aW5nIHRoZSBEcnlSdW4gcG9y
dAorICAgICAgICAgICBidXQgaXQncyBubyB3b3JzZSB0aGFuIHRoZSBleGlzdGluZyBjb2RlLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weToK
KyAgICAgICAgIC0gUmVtb3ZlIHRoZSBmcmVlIGZ1bmN0aW9ucy4KKyAgICAgICAgIC0gRml4IGFy
Z3VtZW50IG92ZXJyaWRpbmcgdG8gYmUgYWJsZSB0byBvdmVycmlkZSBOb25lLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weToK
KyAgICAgICAgIC0gVXNlIGEgbW9ja2VkLW91dCBQb3J0RmFjdG9yeSBkdXJpbmcgdGVzdGluZy4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJv
bWVfdW5pdHRlc3QucHk6CisgICAgICAgICAtIFBhc3MgTW9ja0V4ZWN1dGl2ZSBhbmQgTW9ja1Vz
ZXIgdG8gdGhlc2UgbWFudWFsIFBvcnQgaW5zdGFudGlhdGlvbnMuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weToKKyAgICAgICAgIC0gTm8g
YWNjZXNzIHRvIGEgSG9zdCBvYmplY3QgaGVyZSwgc28ganVzdCB1c2luZyBQb3J0RmFjdG9yeSBk
aXJlY3RseS4KKyAgICAgICAgICAgVGhpcyBpcyB3cm9uZywgYnV0IG5vIG1vcmUgd3JvbmcgdGhh
biB0aGUgZXhpc3RpbmcgY29kZSB3YXMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weToKKyAgICAgICAgIC0gVXNlIGEgTW9j
a0hvc3QgdG8gZ2V0IGEgbW9ja2VkIG91dCBQb3J0RmFjdG9yeS4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6CisgICAgICAgICAtIFVzZSBvdXIg
ZmFuY3kgX3NldF9kZWZhdWx0X292ZXJyaWRpbmdfbm9uZSBzeXN0ZW0gdG8gY2xlYW4gdGhpcyBj
b2RlIHVwIGFuZCBwYXNzIGEgTW9ja0V4ZWN1dGl2ZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbi5weToKKyAgICAgICAgIC0gRG9uJ3QgcnVuIGNtZCAv
YyB2ZXIgZnJvbSBXaW5Qb3J0Ll9faW5pdF9fIG9yIGl0IHNob3dzIHVwIGluIHVuaXR0ZXN0cyB3
aGljaCBoYXZlIGxvZ2dpbmcgTW9ja0V4ZWN1dGl2ZQorICAgICAgICAgICBub3cgdGhhdCB3ZSdy
ZSBhY3R1YWxseSBwYXNzaW5nIE1vY2tFeGVjdXRpdmUgdG8gbW9zdCBQb3J0IGluc3RhbnRpYXRp
b25zIGR1cmluZyB0ZXN0aW5nLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvd2luX3VuaXR0ZXN0LnB5OgorICAgICAgICAgLSBQYXNzIG91ciBuZXcgInVuaXR0
ZXN0aW5nIiBib29sIHRvIF9kZXRlY3RfdmVyc2lvbiB3aGVuIGFjdHVhbGx5IHVuaXR0ZXN0aW5n
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHk6CisgICAgICAgICAtIEhvc3QgaXMgdGhlIGZ1dHVyZS4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5w
eToKKyAgICAgICAgIC0gVXNlIGEgTW9ja0hvc3QgdG8gZ2V0IGEgbW9ja2VkIG91dCBQb3J0RmFj
dG9yeS4gIE9uY2Ugd2UgaGF2ZSBhIG1vY2tlZCBQb3J0RmFjdG9yeQorICAgICAgICAgICB3ZSBk
b24ndCBuZWVkIHRvIHBhc3MgTW9ja1VzZXIgZXhwbGljaXRseSwgaXQgZG9lcyB0aGF0IGF1dG9t
YXRpY2FsbHkgZm9yIHVzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3ZpZXdzL3ByaW50aW5nX3VuaXR0ZXN0LnB5OgorICAgICAgICAgLSBVc2UgYSBNb2NrSG9zdCB0
byBnZXQgYSBtb2NrZWQgb3V0IFBvcnRGYWN0b3J5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHk6CisgICAgICAgICAtIFdlIGRv
bid0IGhhdmUgYWNjZXNzIHRvIGEgSG9zdCBvYmplY3QsIHNvIHVzaW5nIFBvcnRGYWN0b3J5KCkg
ZGlyZWN0bHkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0
X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKyAgICAgICAgIC0gUmVtb3ZlIHVudXNlZCB2YXJp
YWJsZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVf
Y2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAgLSBIb3N0IGlzbid0IGFjY2Vzc2li
bGUgaGVyZSwgc28gdXNpbmcgUG9ydEZhY3RvcnkoKSBkaXJlY3RseSwgd2hpY2gKKyAgICAgICAg
ICAgYWx0aG91Z2ggdW5mb3J0dW5hdGUgaXMgbm8gd29yc2UgdGhhbiBiZWZvcmUuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtp
dF90ZXN0c191bml0dGVzdC5weToKKyAgICAgICAgIC0gVGVzdGluZyBpcyBtdWNoIGVhc2llciB3
aGVuIHlvdSBkb24ndCBuZWVkIHRvIGhhY2sgZ2xvYmFsIHN0YXRlLi4uCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgIC0g
VXNlIHRoZSBwb3J0X2ZhY3Rvcnkgb24gdGhlIHRvb2wuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHk6CisgICAgICAgICAtIGRpdHRvLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0
LnB5OgorICAgICAgICAgLSBUaGlzIHVuaXR0ZXN0IHdhcyB3cm9uZy4gIEl0IHdhcyB0cnlpbmcg
dG8gcGFzcyB0aGUgdG9vbCBvYmplY3QsIGJ1dCBmYWlsaW5nIHRvIHBhc3MKKyAgICAgICAgICAg
dGhlIGFyZ3VtZW50cyBpbiB0aGUgcmlnaHQgb3JkZXIuICBGaXhpbmcgdGhhdCBtYWRlIGl0IHVz
ZSBhIE1vY2tGaWxlU3lzdGVtCisgICAgICAgICAgIChsaWtlIGl0IGhhZCBiZWVuIHRyeWluZyB0
byksIHdoaWNoIHRoZW4gcmVxdWlyZWQgdXMgdG8gYWN0dWFsbHkgcG9wdWxhdGUKKyAgICAgICAg
ICAgdGhhdCBNb2NrRmlsZVN5c3RlbSB3aXRoIGZha2UgZXhwZWN0YXRpb24gZmlsZXMgKGluc3Rl
YWQgb2YgdXNpbmcgdGhlIG9uZXMgb24gdGhlIHJlYWwgZGlzaykuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVzZXJ2ZXIucHk6CisgICAgICAgICAt
IEdldCB0aGUgcG9ydF9mYWN0b3J5IGZyb20gdGhlIHRvb2wuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyLnB5OgorICAgICAgICAgLSBEaXR0
by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2
ZXJfdW5pdHRlc3QucHk6CisgICAgICAgICAtIFVzZSBhIE1vY2tIb3N0IHRvIGdldCBhIG1vY2tl
ZCBvdXQgUG9ydCBvYmplY3QuCisKIDIwMTEtMTEtMDIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIE1vdmUgTW9ja3MgaW50byBfbW9jayBmaWxlcyBuZWFyIHRoZWly
IGltcGxlbWVudGF0aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvYmFzZWxpbmVvcHRpbWl6ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplcl91bml0dGVzdC5weQpp
bmRleCAxZDNlNTczNzBmZGY5MGE0MDdmMjc1YmI5NDQxOTY1N2IyMjcyMzVmLi43MmQ3YTdlYmZk
YmNlNmY5MTZkYjM2ZWE3Mjc3ZmZlMTJiZGJlOWJlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplcl91bml0dGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGlt
aXplcl91bml0dGVzdC5weQpAQCAtMzEsMTQgKzMxLDEyIEBAIGltcG9ydCB1bml0dGVzdAogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5iYXNlbGluZW9wdGltaXplciBpbXBvcnQgQmFz
ZWxpbmVPcHRpbWl6ZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21v
Y2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0
LmZhY3RvcnkgaW1wb3J0IFBvcnRGYWN0b3J5CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21v
Y2sgaW1wb3J0IE1vY2tIb3N0CiAKIAogY2xhc3MgVGVzdEJhc2VsaW5lT3B0aW1pemVyKEJhc2Vs
aW5lT3B0aW1pemVyKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbW9ja19yZXN1bHRzX2J5X2Rp
cmVjdG9yeSk6CiAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAgIGhvc3QucG9ydF9m
YWN0b3J5ID0gUG9ydEZhY3RvcnkoaG9zdCkgICMgV2Ugd2FudCBhIHJlYWwgUG9ydEZhY3Rvcnks
IGJ1dCBpdCBzaG91bGQgdXNlIG1vY2tzLgogICAgICAgICBCYXNlbGluZU9wdGltaXplci5fX2lu
aXRfXyhzZWxmLCBob3N0KQogICAgICAgICBzZWxmLl9tb2NrX3Jlc3VsdHNfYnlfZGlyZWN0b3J5
ID0gbW9ja19yZXN1bHRzX2J5X2RpcmVjdG9yeQogCkBAIC01Niw3ICs1NCw2IEBAIGNsYXNzIEJh
c2VsaW5lT3B0aW1pemVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9t
b3ZlX2Jhc2VsaW5lcyhzZWxmKToKICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICAgICAg
aG9zdC5wb3J0X2ZhY3RvcnkgPSBQb3J0RmFjdG9yeShob3N0KSAgIyBXZSB3YW50IGEgcmVhbCBQ
b3J0RmFjdG9yeSwgYnV0IGl0IHNob3VsZCB1c2UgbW9ja3MuCiAgICAgICAgIGhvc3QuZmlsZXN5
c3RlbS53cml0ZV9iaW5hcnlfZmlsZSgnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0td2luL2Fub3RoZXIvdGVzdC1leHBlY3RlZC50eHQnLCAncmVzdWx0IEEnKQog
ICAgICAgICBob3N0LmZpbGVzeXN0ZW0ud3JpdGVfYmluYXJ5X2ZpbGUoJy9tb2NrLWNoZWNrb3V0
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWNnLW1hYy9hbm90aGVyL3Rlc3QtZXhwZWN0
ZWQudHh0JywgJ3Jlc3VsdCBBJykKICAgICAgICAgaG9zdC5maWxlc3lzdGVtLndyaXRlX2JpbmFy
eV9maWxlKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hbm90
aGVyL3Rlc3QtZXhwZWN0ZWQudHh0JywgJ3Jlc3VsdCBCJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyX3VuaXR0ZXN0LnB5CmluZGV4IDcwYzkwMjYxMTRlNDExYWI1NjYxMGMyMDIzNDM3NTYzMjZl
N2ZjMTguLmUxZWVkMDg4YzE4NTY0MjM0YTdmM2IwMWE4NTdhNTVlY2E3MzlkY2EgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFn
ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weQpAQCAtMzgsNyArMzgsNiBAQCBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3Rl
bQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlCiBmcm9t
IHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogZnJvbSB3ZWJraXRweSBpbXBv
cnQgbGF5b3V0X3Rlc3RzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQogCiBm
cm9tIHdlYmtpdHB5IGltcG9ydCBsYXlvdXRfdGVzdHMKQEAgLTQ5LDYgKzQ4LDcgQEAgZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MgaW1wb3J0IHByaW50aW5nCiBmcm9tIHdlYmtpdHB5
LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS51c2VyX21vY2sgaW1wb3J0IE1vY2tVc2VyCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiAKIAogY2xhc3MgTWFuYWdlcldyYXBwZXIo
TWFuYWdlcik6CkBAIC03MSw3ICs3MSw4IEBAIGNsYXNzIFNoYXJkaW5nVGVzdHModW5pdHRlc3Qu
VGVzdENhc2UpOgogCiAgICAgZGVmIGdldF9zaGFyZHMoc2VsZiwgbnVtX3dvcmtlcnMsIGZ1bGx5
X3BhcmFsbGVsLCB0ZXN0X2xpc3Q9Tm9uZSk6CiAgICAgICAgIHRlc3RfbGlzdCA9IHRlc3RfbGlz
dCBvciBzZWxmLnRlc3RfbGlzdAotICAgICAgICBwb3J0ID0gbGF5b3V0X3Rlc3RzLnBvcnQuZ2V0
KHBvcnRfbmFtZT0ndGVzdCcpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHBv
cnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lPSd0ZXN0JykKICAgICAgICAgcG9y
dC5fZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKCkKICAgICAgICAgIyBGSVhNRTogVGhpcyBz
aG91bGQgdXNlIE1vY2tPcHRpb25zKCkgaW5zdGVhZCBvZiBNb2NrKCkKICAgICAgICAgc2VsZi5t
YW5hZ2VyID0gTWFuYWdlcldyYXBwZXIocG9ydD1wb3J0LCBvcHRpb25zPU1vY2soKSwgcHJpbnRl
cj1Nb2NrKCkpCkBAIC0xNTksOCArMTYwLDggQEAgY2xhc3MgTWFuYWdlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZmFsbGJhY2tfcGF0aF9pbl9jb25maWcoc2VsZik6
CiAgICAgICAgIG9wdGlvbnMgPSBzZWxmLmdldF9vcHRpb25zKCkKLQotICAgICAgICBwb3J0ID0g
bGF5b3V0X3Rlc3RzLnBvcnQuZ2V0KCd0ZXN0LW1hYy1sZW9wYXJkJywgb3B0aW9ucz1vcHRpb25z
KQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBwb3J0ID0gaG9zdC5wb3J0X2Zh
Y3RvcnkuZ2V0KCd0ZXN0LW1hYy1sZW9wYXJkJywgb3B0aW9ucz1vcHRpb25zKQogICAgICAgICBw
cmludGVyID0gc2VsZi5nZXRfcHJpbnRlcigpCiAgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyKHBv
cnQsIHBvcnQub3B0aW9ucywgcHJpbnRlcikKICAgICAgICAgbWFuYWdlci5wcmludF9jb25maWco
KQpAQCAtMTg2LDggKzE4Nyw4IEBAIGNsYXNzIE1hbmFnZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmluaXNoZWRfbGlzdF9jYWxsZWQgPSBUcnVl
CiAKICAgICAgICAgb3B0aW9ucywgYXJncyA9IHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncyhb
Jy0tcGxhdGZvcm09dGVzdCcsICctLXByaW50PW5vdGhpbmcnLCAnaHR0cC90ZXN0cy9wYXNzZXMn
LCAncGFzc2VzJ10pCi0gICAgICAgICMgTm90ZSB3ZSBkbyBub3QgcGFzcyBhIGZpbGVzeXN0ZW0g
YXMgdGhlICJ0ZXN0IHBvcnQiIG1hZ2ljYWxseSBzdXBsaWVzIGl0cyBvd24gbW9jayBmaWxlc3lz
dGVtLgotICAgICAgICBwb3J0ID0gbGF5b3V0X3Rlc3RzLnBvcnQuZ2V0KHBvcnRfbmFtZT1vcHRp
b25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMsIHVzZXI9TW9ja1VzZXIoKSwgZXhlY3V0aXZl
PU1vY2tFeGVjdXRpdmUoKSkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgcG9y
dCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0
aW9ucz1vcHRpb25zLCB1c2VyPU1vY2tVc2VyKCksIGV4ZWN1dGl2ZT1Nb2NrRXhlY3V0aXZlKCkp
CiAgICAgICAgIHJ1bl93ZWJraXRfdGVzdHMuX3NldF91cF9kZXJpdmVkX29wdGlvbnMocG9ydCwg
b3B0aW9ucykKICAgICAgICAgcHJpbnRlciA9IHByaW50aW5nLlByaW50ZXIocG9ydCwgb3B0aW9u
cywgU3RyaW5nSU8uU3RyaW5nSU8oKSwgU3RyaW5nSU8uU3RyaW5nSU8oKSwgY29uZmlndXJlX2xv
Z2dpbmc9VHJ1ZSkKICAgICAgICAgbWFuYWdlciA9IExvY2tDaGVja2luZ01hbmFnZXIocG9ydCwg
b3B0aW9ucywgcHJpbnRlcikKQEAgLTI0Myw3ICsyNDQsOCBAQCBjbGFzcyBNYW5hZ2VyVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgaW50ZWdyYXRpb25fdGVzdF9uZWVkc19zZXJ2
ZXJzKHNlbGYpOgogICAgICAgICBkZWYgZ2V0X21hbmFnZXJfd2l0aF90ZXN0cyh0ZXN0X25hbWVz
KToKLSAgICAgICAgICAgIHBvcnQgPSBsYXlvdXRfdGVzdHMucG9ydC5nZXQoKQorICAgICAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgICAgIHBvcnQgPSBob3N0LnBvcnRfZmFjdG9y
eS5nZXQoKQogICAgICAgICAgICAgbWFuYWdlciA9IE1hbmFnZXIocG9ydCwgb3B0aW9ucz1Nb2Nr
T3B0aW9ucyh0ZXN0X2xpc3Q9Tm9uZSwgaHR0cD1UcnVlKSwgcHJpbnRlcj1Nb2NrKCkpCiAgICAg
ICAgICAgICBtYW5hZ2VyLmNvbGxlY3RfdGVzdHModGVzdF9uYW1lcykKICAgICAgICAgICAgIHJl
dHVybiBtYW5hZ2VyCkBAIC0yODYsNyArMjg4LDggQEAgY2xhc3MgTmF0dXJhbENvbXBhcmVUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogY2xhc3MgS2V5Q29tcGFyZVRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5wb3J0ID0gbGF5b3V0
X3Rlc3RzLnBvcnQuZ2V0KCd0ZXN0JykKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAg
ICAgc2VsZi5wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0JykKIAogICAgIGRlZiBh
c3NlcnRfY21wKHNlbGYsIHgsIHksIHJlc3VsdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KGNtcCh0ZXN0X2tleShzZWxmLnBvcnQsIHgpLCB0ZXN0X2tleShzZWxmLnBvcnQsIHkpKSwgcmVz
dWx0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CmluZGV4
IGU0MzFmNTMzYjZkOGU5YWVjNDQ2ODc1YTMzNWMzOTBmNjEwMDI4MDMuLmU4YTUxMTRhYmUzMTQ1
NGFkZmIxZjNmNjM4MTAwYzQzZmM5MGY0M2EgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyX3dvcmtlcl9icm9rZXIucHkKQEAgLTUyLDcgKzUyLDcgQEAgdHJ5OgogZXhjZXB0IEltcG9y
dEVycm9yOgogICAgIG11bHRpcHJvY2Vzc2luZyA9IE5vbmUKIAotZnJvbSB3ZWJraXRweSBpbXBv
cnQgbGF5b3V0X3Rlc3RzCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmZhY3Rvcnkg
aW1wb3J0IFBvcnRGYWN0b3J5CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVy
cyBpbXBvcnQgbWVzc2FnZV9icm9rZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdz
IGltcG9ydCBwcmludGluZwogCkBAIC05OSw4ICs5OSw3IEBAIGRlZiBnZXQocG9ydCwgb3B0aW9u
cywgY2xpZW50LCB3b3JrZXJfY2xhc3MpOgogICAgICAgICBxdWV1ZV9jbGFzcyA9IG11bHRpcHJv
Y2Vzc2luZy5RdWV1ZQogICAgICAgICBtYW5hZ2VyX2NsYXNzID0gX011bHRpUHJvY2Vzc01hbmFn
ZXIKICAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCB2YWx1
ZSBmb3IgLS13b3JrZXItbW9kZWw6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgd29y
a2VyX21vZGVsKQorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCB2YWx1ZSBm
b3IgLS13b3JrZXItbW9kZWw6ICVzIiAlIHdvcmtlcl9tb2RlbCkKIAogICAgIGJyb2tlciA9IG1l
c3NhZ2VfYnJva2VyLkJyb2tlcihvcHRpb25zLCBxdWV1ZV9jbGFzcykKICAgICByZXR1cm4gbWFu
YWdlcl9jbGFzcyhicm9rZXIsIHBvcnQsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKQpA
QCAtMjUzLDcgKzI1Miw4IEBAIGlmIG11bHRpcHJvY2Vzc2luZzoKIAogICAgICAgICBkZWYgcnVu
KHNlbGYpOgogICAgICAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKLSAgICAgICAgICAg
IHBvcnRfb2JqID0gbGF5b3V0X3Rlc3RzLnBvcnQuZ2V0KHNlbGYuX3BsYXRmb3JtX25hbWUsIG9w
dGlvbnMpCisgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBnZXQgdGhlIFBvcnRGYWN0
b3J5IGZyb20gdGhlIEhvc3QuCisgICAgICAgICAgICBwb3J0X29iaiA9IFBvcnRGYWN0b3J5KCku
Z2V0KHNlbGYuX3BsYXRmb3JtX25hbWUsIG9wdGlvbnMpCiAKICAgICAgICAgICAgICMgVGhlIHVu
aXggbXVsdGlwcm9jZXNzaW5nIGltcGxlbWVudGF0aW9uIGNsb25lcyB0aGUKICAgICAgICAgICAg
ICMgbG9nIGhhbmRsZXIgY29uZmlndXJhdGlvbiBpbnRvIHRoZSBjaGlsZCBwcm9jZXNzZXMsCkBA
IC0yNjMsOCArMjYzLDcgQEAgaWYgbXVsdGlwcm9jZXNzaW5nOgogICAgICAgICAgICAgIyBGSVhN
RTogdGhpcyB3b24ndCB3b3JrIGlmIHRoZSBjYWxsaW5nIHByb2Nlc3MgaXMgbG9nZ2luZwogICAg
ICAgICAgICAgIyBzb21ld2hlcmUgb3RoZXIgdGhhbiBzeXMuc3RkZXJyIGFuZCBzeXMuc3Rkb3V0
LCBidXQgSSdtIG5vdCBzdXJlCiAgICAgICAgICAgICAjIGlmIHRoaXMgd2lsbCBiZSBhbiBpc3N1
ZSBpbiBwcmFjdGljZS4KLSAgICAgICAgICAgIHByaW50ZXIgPSBwcmludGluZy5QcmludGVyKHBv
cnRfb2JqLCBvcHRpb25zLCBzeXMuc3RkZXJyLCBzeXMuc3Rkb3V0LAotICAgICAgICAgICAgICAg
IGNvbmZpZ3VyZV9sb2dnaW5nKQorICAgICAgICAgICAgcHJpbnRlciA9IHByaW50aW5nLlByaW50
ZXIocG9ydF9vYmosIG9wdGlvbnMsIHN5cy5zdGRlcnIsIHN5cy5zdGRvdXQsIGNvbmZpZ3VyZV9s
b2dnaW5nKQogICAgICAgICAgICAgc2VsZi5fY2xpZW50LnJ1bihwb3J0X29iaikKICAgICAgICAg
ICAgIHByaW50ZXIuY2xlYW51cCgpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weQppbmRleCBiMjI0YzFkNDdjYjRiZGVhNGI0
NzY3M2U5MTczNmM4Y2UyMDEwZWI5Li5lODA3NjVhOTkzOWJiOWQ2NTVhNWE4MTU5NjkxM2I4YmE1
ZDhiZWRlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJf
YnJva2VyX3VuaXR0ZXN0LnB5CkBAIC0zOCwxMiArMzgsMTQgQEAgZXhjZXB0IEltcG9ydEVycm9y
OgogCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0Y2FwdHVyZQor
ZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMuY29udHJvbGxlcnMgaW1wb3J0IG1hbmFnZXJfd29ya2VyX2Jyb2tlcgogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IG1lc3NhZ2VfYnJva2VyCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRpbmcKIAorCiAjIEluIG9yZGVy
IHRvIHJlbGlhYmx5IGNvbnRyb2wgd2hlbiBjaGlsZCB3b3JrZXJzIGFyZSBzdGFydGluZyBhbmQg
c3RvcHBpbmcsCiAjIHdlIHVzZSBhIHBhaXIgb2YgZ2xvYmFsIHZhcmlhYmxlcyB0byBob2xkIHF1
ZXVlcyB1c2VkIGZvciBtZXNzYWdpbmcuIElkZWFsbHkKICMgd2Ugd291bGRuJ3QgbmVlZCBnbG9i
YWxzLCBidXQgd2UgY2FuJ3QgcGFzcyB0aGVzZSB0aHJvdWdoIGEgbGV4aWNhbCBjbG9zdXJlCkBA
IC01OSw3ICs2MSw5IEBAIGRlZiBtYWtlX2Jyb2tlcihtYW5hZ2VyLCB3b3JrZXJfbW9kZWwsIHN0
YXJ0X3F1ZXVlPU5vbmUsIHN0b3BfcXVldWU9Tm9uZSk6CiAgICAgc3RhcnRpbmdfcXVldWUgPSBz
dGFydF9xdWV1ZQogICAgIHN0b3BwaW5nX3F1ZXVlID0gc3RvcF9xdWV1ZQogICAgIG9wdGlvbnMg
PSBnZXRfb3B0aW9ucyh3b3JrZXJfbW9kZWwpCi0gICAgcmV0dXJuIG1hbmFnZXJfd29ya2VyX2Jy
b2tlci5nZXQocG9ydC5nZXQoInRlc3QiKSwgb3B0aW9ucywgbWFuYWdlciwgX1Rlc3RXb3JrZXIp
CisgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICB0ZXN0X3BvcnQgPSBob3N0LnBvcnRfZmFjdG9y
eS5nZXQoInRlc3QiKQorICAgIHJldHVybiBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuZ2V0KHRlc3Rf
cG9ydCwgb3B0aW9ucywgbWFuYWdlciwgX1Rlc3RXb3JrZXIpCiAKIAogY2xhc3MgX1Rlc3RXb3Jr
ZXIobWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Rlc3RfZXhwZWN0
YXRpb25zX2VkaXRvcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL3Rlc3RfZXhwZWN0YXRpb25zX2VkaXRvcl91bml0dGVzdC5weQpp
bmRleCBhODE5ZmFlYmNlMjIzMzQ0ZjQ1ZTQ0ZTA2N2QxNTdlOTQyNjdmODlmLi5mMzY1ZDc3YWNh
OTQxNzA4MmU5MGNhYmQ2NDcwZjdiZDg3ZjFiNGYzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X2V4cGVjdGF0aW9uc19lZGl0
b3JfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvdGVzdF9leHBlY3RhdGlvbnNfZWRpdG9yX3VuaXR0ZXN0LnB5CkBAIC0yOSwx
MiArMjksMTIgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzIGltcG9ydCBwb3J0Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1v
Y2tIb3N0CisKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzLnRlc3RfZXhw
ZWN0YXRpb25zX2VkaXRvciBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9k
ZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubW9kZWxzLnRlc3RfZXhwZWN0YXRpb25zIGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCAqCi1mcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBiYXNlCiAKIAogY2xhc3MgTW9ja0J1Z01hbmFnZXIo
b2JqZWN0KToKQEAgLTcwLDcgKzcwLDggQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uRWRpdG9yVGVz
dHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIF0pCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
dGVzdEZ1bmMpOgotICAgICAgICBzZWxmLnRlc3RfcG9ydCA9IHBvcnQuZ2V0KCd0ZXN0LXdpbi14
cCcsIE5vbmUpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHNlbGYudGVzdF9w
b3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0LXdpbi14cCcsIE5vbmUpCiAgICAgICAg
IHNlbGYuZnVsbF90ZXN0X2xpc3QgPSBbJ2ZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwn
LCAnZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRtbCddCiAgICAgICAgIHVuaXR0ZXN0LlRlc3RD
YXNlLl9faW5pdF9fKHNlbGYsIHRlc3RGdW5jKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9jb25maWd1cmF0aW9uX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfY29u
ZmlndXJhdGlvbl91bml0dGVzdC5weQppbmRleCBjNGQ3ZThhZTZhZTI1ODBjNjdmOWMxMGY0MzA5
YjE0NmNjYzQxZjcxLi5kYTA2NDNlOTBiYjI4ZjQ5YzcwNDA1YjY5YTBhMTM4YjNiZWIwMTNkIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVz
dF9jb25maWd1cmF0aW9uX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2NvbmZpZ3VyYXRpb25fdW5pdHRlc3QucHkKQEAgLTI4
LDcgKzI4LDggQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzIGltcG9ydCBwb3J0Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1v
Y2tIb3N0CisKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3Vy
YXRpb24gaW1wb3J0ICoKIAogCkBAIC05MCw3ICs5MSw5IEBAIGNsYXNzIFRlc3RDb25maWd1cmF0
aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9lcShzZWxmKToKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoVGVzdENvbmZpZ3VyYXRpb24oJ3hwJywgJ3g4NicsICdy
ZWxlYXNlJywgJ2NwdScpLCBUZXN0Q29uZmlndXJhdGlvbigneHAnLCAneDg2JywgJ3JlbGVhc2Un
LCAnY3B1JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFRlc3RDb25maWd1cmF0aW9uLmZy
b21fcG9ydChwb3J0LmdldCgndGVzdC13aW4teHAnLCBOb25lKSksIFRlc3RDb25maWd1cmF0aW9u
KCd4cCcsICd4ODYnLCAncmVsZWFzZScsICdjcHUnKSkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0
KCkKKyAgICAgICAgdGVzdF9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0LXdpbi14
cCcsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFRlc3RDb25maWd1cmF0aW9uLmZy
b21fcG9ydCh0ZXN0X3BvcnQpLCBUZXN0Q29uZmlndXJhdGlvbigneHAnLCAneDg2JywgJ3JlbGVh
c2UnLCAnY3B1JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWxzKFRlc3RDb25maWd1cmF0
aW9uKCd4cCcsICd4ODYnLCAncmVsZWFzZScsICdncHUnKSwgVGVzdENvbmZpZ3VyYXRpb24oJ3hw
JywgJ3g4NicsICdyZWxlYXNlJywgJ2NwdScpKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFs
cyhUZXN0Q29uZmlndXJhdGlvbigneHAnLCAneDg2JywgJ2RlYnVnJywgJ2NwdScpLCBUZXN0Q29u
ZmlndXJhdGlvbigneHAnLCAneDg2JywgJ3JlbGVhc2UnLCAnY3B1JykpCiAKQEAgLTEwMiw3ICsx
MDUsOSBAQCBjbGFzcyBUZXN0Q29uZmlndXJhdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZXQoWyd4cCcsICd4ODYnLCAncmVsZWFzZScsICdj
cHUnXSksIHNldChyZXN1bHRfY29uZmlnX3ZhbHVlcykpCiAKICAgICBkZWYgdGVzdF9mcm9tX3Bv
cnQoc2VsZik6Ci0gICAgICAgIGNvbmZpZyA9IFRlc3RDb25maWd1cmF0aW9uLmZyb21fcG9ydChw
b3J0LmdldCgndGVzdC13aW4teHAnLCBOb25lKSkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkK
KyAgICAgICAgdGVzdF9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0LXdpbi14cCcs
IE5vbmUpCisgICAgICAgIGNvbmZpZyA9IFRlc3RDb25maWd1cmF0aW9uLmZyb21fcG9ydCh0ZXN0
X3BvcnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCc8eHAsIHg4NiwgcmVsZWFzZSwgY3B1
PicsIHN0cihjb25maWcpKQogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191
bml0dGVzdC5weQppbmRleCBjY2Y0YmE1M2IwZDAyOTA3MzIyNTAzMzliMGI4ZGNiOWI1MTk2NDE2
Li4xYTY0ZjIxYzU2NDQ5YzgxNWE2MjM1NzQ3ZjVhN2JiZTZhZDllZmM5IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlv
bnNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CkBAIC0yOSw4ICsyOSw4IEBACiAK
IGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9y
dAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYmFzZQorZnJvbSB3ZWJr
aXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAorCiBmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCAqCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0ICoKIGZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0ICoK
QEAgLTkyLDcgKzkyLDggQEAgY2xhc3MgQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBi
ZWluZyB0ZXN0ZWQgaXMgV2luZG93cyBYUCwgUmVsZWFzZSBidWlsZC4KIAogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB0ZXN0RnVuYywgc2V0VXA9Tm9uZSwgdGVhckRvd249Tm9uZSwgZGVzY3JpcHRp
b249Tm9uZSk6Ci0gICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0LmdldCgndGVzdC13aW4teHAnLCBO
b25lKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBzZWxmLl9wb3J0ID0gaG9z
dC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0LXdpbi14cCcsIE5vbmUpCiAgICAgICAgIHNlbGYuX2Zz
ID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQogICAgICAgICBzZWxmLl9leHAgPSBOb25lCiAgICAg
ICAgIHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsIHRlc3RGdW5jKQpAQCAtNDUzLDcg
KzQ1NCw4IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvblBhcnNlclRlc3RzKHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0YXRpb24uZXJyb3JzKSwg
MCkKIAogICAgIGRlZiB0ZXN0X3BhcnNlX2VtcHR5X3N0cmluZyhzZWxmKToKLSAgICAgICAgdGVz
dF9wb3J0ID0gcG9ydC5nZXQoJ3Rlc3Qtd2luLXhwJywgTm9uZSkKKyAgICAgICAgaG9zdCA9IE1v
Y2tIb3N0KCkKKyAgICAgICAgdGVzdF9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0
LXdpbi14cCcsIE5vbmUpCiAgICAgICAgIHRlc3RfcG9ydC50ZXN0X2V4aXN0cyA9IGxhbWJkYSB0
ZXN0OiBUcnVlCiAgICAgICAgIHRlc3RfY29uZmlnID0gdGVzdF9wb3J0LnRlc3RfY29uZmlndXJh
dGlvbigpCiAgICAgICAgIGZ1bGxfdGVzdF9saXN0ID0gW10KQEAgLTQ2NSw3ICs0NjcsOCBAQCBj
bGFzcyBUZXN0RXhwZWN0YXRpb25QYXJzZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKIGNs
YXNzIFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RGdW5jKToKLSAgICAgICAgdGVzdF9wb3J0ID0gcG9y
dC5nZXQoJ3Rlc3Qtd2luLXhwJywgTm9uZSkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAg
ICAgICAgdGVzdF9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0LXdpbi14cCcsIE5v
bmUpCiAgICAgICAgIHNlbGYuX2NvbnZlcnRlciA9IFRlc3RDb25maWd1cmF0aW9uQ29udmVydGVy
KHRlc3RfcG9ydC5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpLCB0ZXN0X3BvcnQuY29uZmlndXJh
dGlvbl9zcGVjaWZpZXJfbWFjcm9zKCkpCiAgICAgICAgIHNlbGYuX3NlcmlhbGl6ZXIgPSBUZXN0
RXhwZWN0YXRpb25TZXJpYWxpemVyKHNlbGYuX2NvbnZlcnRlcikKICAgICAgICAgdW5pdHRlc3Qu
VGVzdENhc2UuX19pbml0X18oc2VsZiwgdGVzdEZ1bmMpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9fX2luaXRfXy5weQppbmRleCBiYzcwYzcyOGY5
OWEyZjhmYjZkOTZmYzI4Mzk5ZmYwOTdiMjI4NjgwLi5lNTg0Njk4MjY3MTY2Mzg0NTcxMDMxZTFm
ZmU3MmM2OGJhYTZlMTllIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvX19pbml0X18ucHkKQEAgLTI5LDggKzI5LDYgQEAKIAogIiIiUG9ydC1z
cGVjaWZpYyBlbnRyeXBvaW50cyBmb3IgdGhlIGxheW91dCB0ZXN0cyB0ZXN0IGluZnJhc3RydWN0
dXJlLiIiIgogCi1mcm9tIGZhY3RvcnkgaW1wb3J0IGdldAotCiBpbXBvcnQgYnVpbGRlcnMgICMg
V2h5IGlzIHRoaXMgaW4gcG9ydD8KIAogZnJvbSBiYXNlIGltcG9ydCBQb3J0ICAjIEl0J3MgcG9z
c2libGUgd2UgZG9uJ3QgbmVlZCB0byBleHBvcnQgdGhpcyB2aXJ0dWFsIGJhc2VjbGFzcyBvdXRz
aWRlIHRoZSBtb2R1bGUuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5CmluZGV4IDc4
OWQ3MmY0NzhkZTZlMTc0M2FkNDU4YjI1ZWZiYjU5MDYzYWE1YjguLjcwMTVjNGE3MmQ4NzRkNjlh
OTljZjQwZWRiNzgxNTg4NGFhZjc4OTcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0
LnB5CkBAIC0yNywxMiArMjcsMTMgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCi1m
cm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCiBpbXBvcnQgY2hyb21pdW1fZ3B1CiAK
LWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGZhY3RvcnkKK2Zyb20gd2Vi
a2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKK2Zyb20gd2Via2l0cHkuY29t
bW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIAorCiBjbGFzcyBDaHJvbWl1bUdwdVRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0X2Nocm9taXVtX2dwdV9s
aW51eChzZWxmKToKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtIG5vdCBpbiAoJ2xpbnV4MicsICds
aW51eDMnKToKQEAgLTU4LDcgKzU5LDcgQEAgY2xhc3MgQ2hyb21pdW1HcHVUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKIAogICAgIGRlZiBhc3NlcnRfcG9ydF93b3JrcyhzZWxmLCBwb3J0X25hbWUs
IGlucHV0X25hbWU9Tm9uZSwgcGxhdGZvcm09Tm9uZSk6CiAgICAgICAgICMgdGVzdCB0aGF0IHdl
IGdvdCB0aGUgcmlnaHQgcG9ydAotICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2Nr
T3B0aW9ucyhhY2NlbGVyYXRlZF9jb21wb3NpdGluZz1Ob25lLAorICAgICAgICBtb2NrX29wdGlv
bnMgPSBNb2NrT3B0aW9ucyhhY2NlbGVyYXRlZF9jb21wb3NpdGluZz1Ob25lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlbGVyYXRlZF8yZF9jYW52YXM9
Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRl
cl9uYW1lPSdmb28nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGlsZF9wcm9jZXNzZXM9Tm9uZSkKQEAgLTEwMiwzNSArMTAzLDI0IEBAIGNsYXNzIENocm9t
aXVtR3B1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRy
dWUocG9ydC5fZmlsZXN5c3RlbS5leGlzdHMocG9ydC5hYnNwYXRoX2Zvcl90ZXN0KHBhdGgpKSkK
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGF0aCBpbiBmaWxlcykKIAotICAgIGRlZiB0
ZXN0X2Nocm9taXVtX2dwdV9fdmlzdGEoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBmYWN0b3J5Lmdl
dCgnY2hyb21pdW0tZ3B1LXdpbi12aXN0YScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBv
cnQubmFtZSgpLCAnY2hyb21pdW0tZ3B1LXdpbi12aXN0YScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHBvcnQuYmFzZWxpbmVfcGF0aCgpLCBwb3J0Ll93ZWJraXRfYmFzZWxpbmVfcGF0aCgn
Y2hyb21pdW0tZ3B1LXdpbicpKQotCi0gICAgZGVmIHRlc3RfY2hyb21pdW1fZ3B1X194cChzZWxm
KToKLSAgICAgICAgcG9ydCA9IGZhY3RvcnkuZ2V0KCdjaHJvbWl1bS1ncHUtd2luLXhwJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5uYW1lKCksICdjaHJvbWl1bS1ncHUtd2luLXhw
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5iYXNlbGluZV9wYXRoKCksIHBvcnQu
X3dlYmtpdF9iYXNlbGluZV9wYXRoKCdjaHJvbWl1bS1ncHUtd2luJykpCi0KLSAgICBkZWYgdGVz
dF9jaHJvbWl1bV9ncHVfX3dpbjcoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBmYWN0b3J5LmdldCgn
Y2hyb21pdW0tZ3B1LXdpbi13aW43JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9ydC5u
YW1lKCksICdjaHJvbWl1bS1ncHUtd2luLXdpbjcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhwb3J0LmJhc2VsaW5lX3BhdGgoKSwgcG9ydC5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ2Nocm9t
aXVtLWdwdS13aW4nKSkKLQotICAgIGRlZiB0ZXN0X2Nocm9taXVtX2dwdV9fbGVvcGFyZChzZWxm
KToKLSAgICAgICAgcG9ydCA9IGZhY3RvcnkuZ2V0KCdjaHJvbWl1bS1ncHUtY2ctbWFjLWxlb3Bh
cmQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Lm5hbWUoKSwgJ2Nocm9taXVtLWdw
dS1jZy1tYWMtbGVvcGFyZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuYmFzZWxp
bmVfcGF0aCgpLCBwb3J0Ll93ZWJraXRfYmFzZWxpbmVfcGF0aCgnY2hyb21pdW0tZ3B1LWNnLW1h
YycpKQorICAgIGRlZiBfYXNzZXJ0X2Jhc2VsaW5lX3BhdGgoc2VsZiwgcG9ydF9uYW1lLCBiYXNl
bGluZV9wYXRoKToKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgcG9ydCA9IGhv
c3QucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KHBvcnQubmFtZSgpLCBwb3J0X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQu
YmFzZWxpbmVfcGF0aCgpLCBwb3J0Ll93ZWJraXRfYmFzZWxpbmVfcGF0aChiYXNlbGluZV9wYXRo
KSkKIAotICAgIGRlZiB0ZXN0X2Nocm9taXVtX2dwdV9fc25vd2xlb3BhcmQoc2VsZik6Ci0gICAg
ICAgIHBvcnQgPSBmYWN0b3J5LmdldCgnY2hyb21pdW0tZ3B1LWNnLW1hYy1zbm93bGVvcGFyZCcp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQubmFtZSgpLCAnY2hyb21pdW0tZ3B1LWNn
LW1hYy1zbm93bGVvcGFyZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuYmFzZWxp
bmVfcGF0aCgpLCBwb3J0Ll93ZWJraXRfYmFzZWxpbmVfcGF0aCgnY2hyb21pdW0tZ3B1LWNnLW1h
YycpKQorICAgIGRlZiB0ZXN0X2Jhc2VsaW5lX3BhdGhzKHNlbGYpOgorICAgICAgICBzZWxmLl9h
c3NlcnRfYmFzZWxpbmVfcGF0aCgnY2hyb21pdW0tZ3B1LXdpbi12aXN0YScsICdjaHJvbWl1bS1n
cHUtd2luJykKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2Jhc2VsaW5lX3BhdGgoJ2Nocm9taXVtLWdw
dS13aW4teHAnLCAnY2hyb21pdW0tZ3B1LXdpbicpCisgICAgICAgIHNlbGYuX2Fzc2VydF9iYXNl
bGluZV9wYXRoKCdjaHJvbWl1bS1ncHUtd2luLXdpbjcnLCAnY2hyb21pdW0tZ3B1LXdpbicpCisg
ICAgICAgIHNlbGYuX2Fzc2VydF9iYXNlbGluZV9wYXRoKCdjaHJvbWl1bS1ncHUtY2ctbWFjLWxl
b3BhcmQnLCAnY2hyb21pdW0tZ3B1LWNnLW1hYycpCisgICAgICAgIHNlbGYuX2Fzc2VydF9iYXNl
bGluZV9wYXRoKCdjaHJvbWl1bS1ncHUtY2ctbWFjLXNub3dsZW9wYXJkJywgJ2Nocm9taXVtLWdw
dS1jZy1tYWMnKQogCiAgICAgZGVmIHRlc3RfZ3JhcGhpY3NfdHlwZShzZWxmKToKLSAgICAgICAg
cG9ydCA9IGZhY3RvcnkuZ2V0KCdjaHJvbWl1bS1ncHUtY2ctbWFjJykKKyAgICAgICAgaG9zdCA9
IE1vY2tIb3N0KCkKKyAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgnY2hyb21p
dW0tZ3B1LWNnLW1hYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdncHUtY2cnLCBwb3J0
LmdyYXBoaWNzX3R5cGUoKSkKLSAgICAgICAgcG9ydCA9IGZhY3RvcnkuZ2V0KCdjaHJvbWl1bS1n
cHUtbWFjJykKKyAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgnY2hyb21pdW0t
Z3B1LW1hYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdncHUnLCBwb3J0LmdyYXBoaWNz
X3R5cGUoKSkKIAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQppbmRleCBkZWMwOWM0NTEzOWY1
YzMwYTU0ZTllMTU5N2QwYmE2MjM1MGUzOGY0Li5kZTBlOTgyNjgyMGU0MWRjYjliNmY5OTg3MDVi
MzNhMWQ5NTMxODM3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKQEAgLTMwLDExICszMCwx
MSBAQCBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBTdHJpbmdJTwogCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgZXhlY3V0aXZlX21vY2sKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBv
cnQgZmlsZXN5c3RlbV9tb2NrCi1mcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVj
dXRpdmUsIE1vY2tFeGVjdXRpdmUyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5
c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLnVzZXJfbW9jayBpbXBvcnQgTW9ja1VzZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5t
b2NrIGltcG9ydCBNb2NrCi0KK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9j
a09wdGlvbnMKIAogaW1wb3J0IGNocm9taXVtCiBpbXBvcnQgY2hyb21pdW1fbGludXgKQEAgLTE4
NCwxMCArMTg0LDggQEAgY2xhc3MgQ2hyb21pdW1Qb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRU
ZXN0Q2FzZSk6CiAKICAgICBjbGFzcyBUZXN0TWFjUG9ydChjaHJvbWl1bV9tYWMuQ2hyb21pdW1N
YWNQb3J0KToKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgotICAgICAgICAg
ICAgIyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIE1vY2tFeGVjdXRpdmUgYW5kIE1vY2tVc2VyIGFz
IHdlbGwuCi0gICAgICAgICAgICBjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0Ll9faW5pdF9f
KHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGlvbnM9b3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmlsZXN5c3RlbT1maWxlc3lzdGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oKSkK
KyAgICAgICAgICAgIGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQuX19pbml0X18oc2VsZiwg
b3B0aW9ucz1vcHRpb25zLAorICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW09TW9ja0ZpbGVTeXN0
ZW0oKSwgdXNlcj1Nb2NrVXNlcigpLCBleGVjdXRpdmU9TW9ja0V4ZWN1dGl2ZSgpKQogCiAgICAg
ICAgIGRlZiBkZWZhdWx0X2NvbmZpZ3VyYXRpb24oc2VsZik6CiAgICAgICAgICAgICBzZWxmLmRl
ZmF1bHRfY29uZmlndXJhdGlvbl9jYWxsZWQgPSBUcnVlCkBAIC0xOTUsMTAgKzE5Myw4IEBAIGNs
YXNzIENocm9taXVtUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogCiAgICAg
Y2xhc3MgVGVzdExpbnV4UG9ydChjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydCk6CiAg
ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKLSAgICAgICAgICAgICMgRklYTUU6
IFRoaXMgc2hvdWxkIHVzZSBNb2NrRXhlY3V0aXZlIGFuZCBNb2NrVXNlciBhcyB3ZWxsLgotICAg
ICAgICAgICAgY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQuX19pbml0X18oc2VsZiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbnM9b3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbV9tb2NrLk1vY2tGaWxlU3lzdGVtKCkp
CisgICAgICAgICAgICBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydC5fX2luaXRfXyhz
ZWxmLCBvcHRpb25zPW9wdGlvbnMsCisgICAgICAgICAgICAgICAgZmlsZXN5c3RlbT1Nb2NrRmls
ZVN5c3RlbSgpLCB1c2VyPU1vY2tVc2VyKCksIGV4ZWN1dGl2ZT1Nb2NrRXhlY3V0aXZlKCkpCiAK
ICAgICAgICAgZGVmIGRlZmF1bHRfY29uZmlndXJhdGlvbihzZWxmKToKICAgICAgICAgICAgIHNl
bGYuZGVmYXVsdF9jb25maWd1cmF0aW9uX2NhbGxlZCA9IFRydWUKQEAgLTIwNiwyOSArMjAyLDI1
IEBAIGNsYXNzIENocm9taXVtUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgog
CiAgICAgY2xhc3MgVGVzdFdpblBvcnQoY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydCk6CiAg
ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKLSAgICAgICAgICAgICMgRklYTUU6
IFRoaXMgc2hvdWxkIHVzZSBNb2NrRXhlY3V0aXZlIGFuZCBNb2NrVXNlciBhcyB3ZWxsLgotICAg
ICAgICAgICAgY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydC5fX2luaXRfXyhzZWxmLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPW9w
dGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbGVzeXN0ZW09ZmlsZXN5c3RlbV9tb2NrLk1vY2tGaWxlU3lzdGVtKCkpCisgICAgICAgICAg
ICBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0Ll9faW5pdF9fKHNlbGYsIG9wdGlvbnM9b3B0
aW9ucywKKyAgICAgICAgICAgICAgICBmaWxlc3lzdGVtPU1vY2tGaWxlU3lzdGVtKCksIHVzZXI9
TW9ja1VzZXIoKSwgZXhlY3V0aXZlPU1vY2tFeGVjdXRpdmUoKSkKIAogICAgICAgICBkZWYgZGVm
YXVsdF9jb25maWd1cmF0aW9uKHNlbGYpOgogICAgICAgICAgICAgc2VsZi5kZWZhdWx0X2NvbmZp
Z3VyYXRpb25fY2FsbGVkID0gVHJ1ZQogICAgICAgICAgICAgcmV0dXJuICdkZWZhdWx0JwogCiAg
ICAgZGVmIHRlc3RfcGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgotICAgICAgICBtb2NrX29wdGlv
bnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucygpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9IE1vY2tP
cHRpb25zKCkKICAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChv
cHRpb25zPW1vY2tfb3B0aW9ucykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX3BhdGhf
dG9faW1hZ2VfZGlmZigpLmVuZHN3aXRoKAotICAgICAgICAgICAgJy9vdXQvZGVmYXVsdC9JbWFn
ZURpZmYnKSkKKyAgICAgICAgIyBGSVhNRTogVGhlc2UgZG9uJ3QgbmVlZCB0byB1c2UgZW5kc3dp
dGggbm93IHRoYXQgdGhlIHBvcnQgdXNlcyBhIE1vY2tGaWxlU3lzdGVtLgorICAgICAgICBzZWxm
LmFzc2VydFRydWUocG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCkuZW5kc3dpdGgoJy9vdXQvZGVm
YXVsdC9JbWFnZURpZmYnKSkKICAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdE1h
Y1BvcnQob3B0aW9ucz1tb2NrX29wdGlvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0
Ll9wYXRoX3RvX2ltYWdlX2RpZmYoKS5lbmRzd2l0aCgKLSAgICAgICAgICAgICcveGNvZGVidWls
ZC9kZWZhdWx0L0ltYWdlRGlmZicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5fcGF0
aF90b19pbWFnZV9kaWZmKCkuZW5kc3dpdGgoJy94Y29kZWJ1aWxkL2RlZmF1bHQvSW1hZ2VEaWZm
JykpCiAgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RXaW5Qb3J0KG9wdGlvbnM9
bW9ja19vcHRpb25zKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5fcGF0aF90b19pbWFn
ZV9kaWZmKCkuZW5kc3dpdGgoCi0gICAgICAgICAgICAnL2RlZmF1bHQvSW1hZ2VEaWZmLmV4ZScp
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKCkuZW5k
c3dpdGgoJy9kZWZhdWx0L0ltYWdlRGlmZi5leGUnKSkKIAogICAgIGRlZiB0ZXN0X3NraXBwZWRf
bGF5b3V0X3Rlc3RzKHNlbGYpOgotICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2Nr
T3B0aW9ucygpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9IE1vY2tPcHRpb25zKCkKICAgICAgICAg
bW9ja19vcHRpb25zLmNvbmZpZ3VyYXRpb24gPSAncmVsZWFzZScKICAgICAgICAgcG9ydCA9IENo
cm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChvcHRpb25zPW1vY2tfb3B0aW9ucykKIApAQCAt
MjQ0LDEyICsyMzYsMTIgQEAgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdvb2QuanMgPSBUSU1F
T1VUIFBBU1MiIiIKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJmYXN0L2pzL25vdC1nb29kLmpz
IiBpbiBza2lwcGVkX3Rlc3RzKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF9jb25maWd1cmF0aW9u
KHNlbGYpOgotICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucygpCisg
ICAgICAgIG1vY2tfb3B0aW9ucyA9IE1vY2tPcHRpb25zKCkKICAgICAgICAgcG9ydCA9IENocm9t
aXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChvcHRpb25zPW1vY2tfb3B0aW9ucykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMobW9ja19vcHRpb25zLmNvbmZpZ3VyYXRpb24sICdkZWZhdWx0JykK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGVmYXVsdF9jb25maWd1cmF0aW9uX2NhbGxl
ZCkKIAotICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyhjb25maWd1
cmF0aW9uPU5vbmUpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3Vy
YXRpb249Tm9uZSkKICAgICAgICAgcG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9y
dChtb2NrX29wdGlvbnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1vY2tfb3B0aW9ucy5j
b25maWd1cmF0aW9uLCAnZGVmYXVsdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRl
ZmF1bHRfY29uZmlndXJhdGlvbl9jYWxsZWQpCkBAIC0yNTksNyArMjUxLDcgQEAgTElOVVggV0lO
IDogZmFzdC9qcy92ZXJ5LWdvb2QuanMgPSBUSU1FT1VUIFBBU1MiIiIKICAgICAgICAgICAgIGRl
ZiBfcGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiAiL3Bh
dGgvdG8vaW1hZ2VfZGlmZiIKIAotICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2Nr
T3B0aW9ucygpCisgICAgICAgIG1vY2tfb3B0aW9ucyA9IE1vY2tPcHRpb25zKCkKICAgICAgICAg
cG9ydCA9IENocm9taXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChtb2NrX29wdGlvbnMpCiAKICAg
ICAgICAgbW9ja19pbWFnZV9kaWZmID0gIk1PQ0sgSW1hZ2UgRGlmZiIKQEAgLTI2OSwxNSArMjYx
LDE1IEBAIExJTlVYIFdJTiA6IGZhc3QvanMvdmVyeS1nb29kLmpzID0gVElNRU9VVCBQQVNTIiIi
CiAgICAgICAgICAgICByZXR1cm4gMQogCiAgICAgICAgICMgSW1hZ2VzIGFyZSBkaWZmZXJlbnQu
Ci0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUy
KHJ1bl9jb21tYW5kX2ZuPW1vY2tfcnVuX2NvbW1hbmQpCisgICAgICAgIHBvcnQuX2V4ZWN1dGl2
ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPW1vY2tfcnVuX2NvbW1hbmQpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1vY2tfaW1hZ2VfZGlmZiwgcG9ydC5kaWZmX2ltYWdlKCJF
WFBFQ1RFRCIsICJBQ1RVQUwiKVswXSkKIAogICAgICAgICAjIEltYWdlcyBhcmUgdGhlIHNhbWUu
Ci0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUy
KGV4aXRfY29kZT0wKQorICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihl
eGl0X2NvZGU9MCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoTm9uZSwgcG9ydC5kaWZmX2lt
YWdlKCJFWFBFQ1RFRCIsICJBQ1RVQUwiKVswXSkKIAogICAgICAgICAjIFRoZXJlIHdhcyBzb21l
IGVycm9yIHJ1bm5pbmcgaW1hZ2VfZGlmZi4KLSAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gZXhl
Y3V0aXZlX21vY2suTW9ja0V4ZWN1dGl2ZTIoZXhpdF9jb2RlPTIpCisgICAgICAgIHBvcnQuX2V4
ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKGV4aXRfY29kZT0yKQogICAgICAgICBleGNlcHRpb25f
cmFpc2VkID0gRmFsc2UKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcG9ydC5kaWZmX2ltYWdl
KCJFWFBFQ1RFRCIsICJBQ1RVQUwiKQpAQCAtMjkwLDcgKzI4Miw3IEBAIExJTlVYIFdJTiA6IGZh
c3QvanMvdmVyeS1nb29kLmpzID0gVElNRU9VVCBQQVNTIiIiCiAgICAgICAgIGlmIG5vdCBwb3J0
OgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW1f
bW9jay5Nb2NrRmlsZVN5c3RlbSgpCisgICAgICAgIGZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3Rl
bSgpCiAgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtCiAgICAgICAgIHBvcnQu
cGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UgPSBsYW1iZGEgKmNvbXBzOiAnLycgKyAnLycuam9pbihj
b21wcykKIApAQCAtMzEwLDE1ICszMDIsMTUgQEAgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdv
b2QuanMgPSBUSU1FT1VUIFBBU1MiIiIKIAogY2xhc3MgQ2hyb21pdW1Qb3J0TG9nZ2luZ1Rlc3Qo
bG9ndGVzdGluZy5Mb2dnaW5nVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2NoZWNrX3N5c19kZXBz
KHNlbGYpOgotICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucygpCisg
ICAgICAgIG1vY2tfb3B0aW9ucyA9IE1vY2tPcHRpb25zKCkKICAgICAgICAgcG9ydCA9IENocm9t
aXVtUG9ydFRlc3QuVGVzdExpbnV4UG9ydChvcHRpb25zPW1vY2tfb3B0aW9ucykKIAogICAgICAg
ICAjIFN1Y2Nlc3MKLSAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gZXhlY3V0aXZlX21vY2suTW9j
a0V4ZWN1dGl2ZTIoZXhpdF9jb2RlPTApCisgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tF
eGVjdXRpdmUyKGV4aXRfY29kZT0wKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5jaGVj
a19zeXNfZGVwcyhuZWVkc19odHRwPUZhbHNlKSkKIAogICAgICAgICAjIEZhaWx1cmUKLSAgICAg
ICAgcG9ydC5fZXhlY3V0aXZlID0gZXhlY3V0aXZlX21vY2suTW9ja0V4ZWN1dGl2ZTIoZXhpdF9j
b2RlPTEsCisgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKGV4aXRfY29k
ZT0xLAogICAgICAgICAgICAgb3V0cHV0PSd0ZXN0aW5nIG91dHB1dCBmYWlsdXJlJykKICAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0LmNoZWNrX3N5c19kZXBzKG5lZWRzX2h0dHA9RmFsc2Up
KQogICAgICAgICBzZWxmLmFzc2VydExvZyhbCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CmluZGV4IDFmMjZjZWQ3
MTlhMzFiYzhkYTk0ODBmYjRlMzI5Njk4ZTcxYzA5ZWMuLjUzMjVhMTBlZWZjY2JjNzM3Zjc0OWE5
MTVjMTM4NmRjYjdjYTJkZmQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CkBAIC0xMDAsNiArMTAwLDggQEAg
Y2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIHNl
bGYuX2VuZ2FnZV9hd2Vzb21lX3dpbmRvd3NfaGFja3MoKQogCiAgICAgZGVmIF9lbmdhZ2VfYXdl
c29tZV93aW5kb3dzX2hhY2tzKHNlbGYpOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gIndp
bjMyIjoKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxm
Ll9leGVjdXRpdmUucnVuX2NvbW1hbmQoWydzdm4nLCAnaGVscCddKQogICAgICAgICBleGNlcHQg
T1NFcnJvciwgZToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZHJ5cnVuLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9kcnlydW4ucHkKaW5kZXggOTNlOTAxYTQ5YTBmZmQ4M2FlZDJhNDc0NmJkNmVlMzU2OTAw
ZDI1OC4uMDg1MzQ3NDY2M2MyMzFmZWYxODFjYzc5YzUwNjExZDkwNDNhZjYxMyAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcnlydW4ucHkKQEAg
LTY0LDcgKzY0LDggQEAgY2xhc3MgRHJ5UnVuUG9ydChvYmplY3QpOgogICAgICAgICAgICAgICAg
IGt3YXJnc1sncG9ydF9uYW1lJ10gPSBrd2FyZ3NbJ3BvcnRfbmFtZSddW2xlbihwZngpOl0KICAg
ICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAga3dhcmdzWydwb3J0X25hbWUnXSA9IE5v
bmUKLSAgICAgICAgc2VsZi5fX2RlbGVnYXRlID0gZmFjdG9yeS5nZXQoKiprd2FyZ3MpCisgICAg
ICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGdldCB0aGUgUG9ydEZhY3RvcnkgZnJvbSBhIEhvc3Qg
b2JqZWN0LgorICAgICAgICBzZWxmLl9fZGVsZWdhdGUgPSBmYWN0b3J5LlBvcnRGYWN0b3J5KCku
Z2V0KCoqa3dhcmdzKQogCiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgogICAgICAg
ICByZXR1cm4gZ2V0YXR0cihzZWxmLl9fZGVsZWdhdGUsIG5hbWUpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkKaW5kZXggNWIxYTky
MTZiYjg0YWFlMmE5MDFhMjBmOWZkNzg2YzE4MjJhMWNiZi4uMjlkNWRhOWRjYTI1NGE5MjhkZTk0
ZDgxNTJhNmRmODQ2YmY4MDVlMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQpAQCAtMzIsNiArMzIsOCBAQAogaW1wb3J0IHJl
CiBpbXBvcnQgc3lzCiAKK2Zyb20gLnRlc3QgaW1wb3J0IHVuaXRfdGVzdF9maWxlc3lzdGVtCisK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJ1aWxkZXJzCiAKIApAQCAt
NjcsMTIgKzY5LDIyIEBAIGNsYXNzIFBvcnRGYWN0b3J5KG9iamVjdCk6CiAgICAgICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCd1bmtub3duIHBvcnQ7IHN5cy5wbGF0Zm9ybSA9ICIl
cyInICUgc3lzLnBsYXRmb3JtKQogICAgICAgICByZXR1cm4gcG9ydF90b191c2UKIAorICAgIGRl
ZiBfc2V0X2RlZmF1bHRfb3ZlcnJpZGluZ19ub25lKHNlbGYsIGRpY3Rpb25hcnksIGtleSwgZGVm
YXVsdCk6CisgICAgICAgICMgZGljdC5zZXRkZWZhdWx0IGFsbW9zdCB3b3JrcywgYnV0IHdvbid0
IGFjdHVhbGx5IG92ZXJyaWRlIE5vbmUgdmFsdWVzLCB3aGljaCB3ZSB3YW50LgorICAgICAgICBp
ZiBub3QgZGljdGlvbmFyeS5nZXQoa2V5KToKKyAgICAgICAgICAgIGRpY3Rpb25hcnlba2V5XSA9
IGRlZmF1bHQKKyAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnlba2V5XQorCiAgICAgZGVmIF9nZXRf
a3dhcmdzKHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgcG9ydF90b191c2UgPSBzZWxmLl9wb3J0
X25hbWVfZnJvbV9hcmd1bWVudHNfYW5kX29wdGlvbnMoKiprd2FyZ3MpCiAKICAgICAgICAgaWYg
cG9ydF90b191c2Uuc3RhcnRzd2l0aCgndGVzdCcpOgogICAgICAgICAgICAgaW1wb3J0IHRlc3QK
ICAgICAgICAgICAgIG1ha2VyID0gdGVzdC5UZXN0UG9ydAorICAgICAgICAgICAgIyBGSVhNRTog
VGhpcyBpcyBhIGhhY2sgdG8gb3ZlcnJpZGUgdGhlICJkZWZhdWx0IiBmaWxlc3lzdGVtCisgICAg
ICAgICAgICAjIHByb3ZpZGVkIHRvIHRoZSBwb3J0LiAgVGhlIHVuaXRfdGVzdF9maWxlc3lzdGVt
IGhhcyBhbiBleHRyYQorICAgICAgICAgICAgIyBfdGVzdHMgYXR0cmlidXRlIHdoaWNoIGEgYnVu
Y2ggb2YgdW5pdHRlc3RzIGRlcGVuZCBvbi4KKyAgICAgICAgICAgIHNlbGYuX3NldF9kZWZhdWx0
X292ZXJyaWRpbmdfbm9uZShrd2FyZ3MsICdmaWxlc3lzdGVtJywgdW5pdF90ZXN0X2ZpbGVzeXN0
ZW0oKSkKICAgICAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3aXRoKCdkcnlydW4nKToKICAg
ICAgICAgICAgIGltcG9ydCBkcnlydW4KICAgICAgICAgICAgIG1ha2VyID0gZHJ5cnVuLkRyeVJ1
blBvcnQKQEAgLTExNiw5ICsxMjgsOSBAQCBjbGFzcyBQb3J0RmFjdG9yeShvYmplY3QpOgogICAg
ICAgICAjIHRoZSBleGVjdXRpdmUvdXNlci9maWxlc3lzdGVtIGZyb20gdGhlIHByb3ZpZGVkIGhv
c3QuCiAgICAgICAgICMgRklYTUU6IEV2ZW50dWFsbHkgTlJXVCB3aWxsIHVzZSBhIEhvc3Qgb2Jq
ZWN0IGFuZCBQb3J0IHdpbGwgbm8gbG9uZ2VyIHN0b3JlIHRoZXNlIHBvaW50ZXJzLgogICAgICAg
ICBpZiBzZWxmLl9ob3N0OgotICAgICAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoJ2V4ZWN1dGl2
ZScsIHNlbGYuX2hvc3QuZXhlY3V0aXZlKQotICAgICAgICAgICAga3dhcmdzLnNldGRlZmF1bHQo
J3VzZXInLCBzZWxmLl9ob3N0LnVzZXIpCi0gICAgICAgICAgICBrd2FyZ3Muc2V0ZGVmYXVsdCgn
ZmlsZXN5c3RlbScsIHNlbGYuX2hvc3QuZmlsZXN5c3RlbSkKKyAgICAgICAgICAgIHNlbGYuX3Nl
dF9kZWZhdWx0X292ZXJyaWRpbmdfbm9uZShrd2FyZ3MsICdleGVjdXRpdmUnLCBzZWxmLl9ob3N0
LmV4ZWN1dGl2ZSkKKyAgICAgICAgICAgIHNlbGYuX3NldF9kZWZhdWx0X292ZXJyaWRpbmdfbm9u
ZShrd2FyZ3MsICd1c2VyJywgc2VsZi5faG9zdC51c2VyKQorICAgICAgICAgICAgc2VsZi5fc2V0
X2RlZmF1bHRfb3ZlcnJpZGluZ19ub25lKGt3YXJncywgJ2ZpbGVzeXN0ZW0nLCBzZWxmLl9ob3N0
LmZpbGVzeXN0ZW0pCiAKICAgICAgICAgcmV0dXJuIG1ha2VyKCoqa3dhcmdzKQogCkBAIC0xNDgs
MTUgKzE2MCwzIEBAIGNsYXNzIFBvcnRGYWN0b3J5KG9iamVjdCk6CiAgICAgICAgIHBvcnQgPSBz
ZWxmLmdldChwb3J0X25hbWUsIEJ1aWxkZXJPcHRpb25zKGJ1aWxkZXJfbmFtZSkpCiAgICAgICAg
IGFzc2VydChwb3J0KSAgIyBOZWVkIHRvIHVwZGF0ZSBwb3J0X25hbWVfZm9yX2J1aWxkZXJfbmFt
ZQogICAgICAgICByZXR1cm4gcG9ydAotCi0KLQotIyBGSVhNRTogVGhlc2UgZnJlZSBmdW5jdGlv
bnMgYXJlIGFsbCBkZXByZWNhdGVkLiAgQ2FsbGVycyBzaG91bGQgYmUgdXNpbmcgUG9ydEZhY3Rv
cnkgaW5zdGVhZC4KLWRlZiBhbGxfcG9ydF9uYW1lcygpOgotICAgIHJldHVybiBQb3J0RmFjdG9y
eSgpLmFsbF9wb3J0X25hbWVzKCkKLQotZGVmIGdldChwb3J0X25hbWU9Tm9uZSwgb3B0aW9ucz1O
b25lLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJuIFBvcnRGYWN0b3J5KCkuZ2V0KHBvcnRfbmFtZSwg
b3B0aW9ucywgKiprd2FyZ3MpCi0KLWRlZiBnZXRfZnJvbV9idWlsZGVyX25hbWUoYnVpbGRlcl9u
YW1lKToKLSAgICByZXR1cm4gUG9ydEZhY3RvcnkoKS5nZXRfZnJvbV9idWlsZGVyX25hbWUoYnVp
bGRlcl9uYW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CmluZGV4IDVlMTUxYWQ3YzI0ZWNiY2Ux
OGEwMTMzOWE4YjM5MmRhNDc3NzhjMGQuLjhkYWVkMjM1MTIzODZiY2M0MGQ3NjM1YTI2NGE5ZGI4
OWFhMTE4OGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKQEAgLTI5LDEwICsyOSw4IEBACiBp
bXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkudG9v
bC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQotZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLnVzZXJfbW9jayBpbXBvcnQgTW9ja1VzZXIKK2Zyb20gd2Via2l0cHkuY29tbW9u
Lmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIAogaW1wb3J0IGNocm9taXVtX2dwdQogaW1wb3J0
IGNocm9taXVtX2xpbnV4CkBAIC02NSw2ICs2MywxMSBAQCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzeXMucGxh
dGZvcm0gPSBzZWxmLnJlYWxfc3lzX3BsYXRmb3JtCiAKKyAgICBkZWYgbWFrZV9mYWN0b3J5KHNl
bGYpOgorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICAjIFRoZSBQb3J0RmFjdG9y
eSBvbiBNb2NrSG9zdCBpcyBhIHJlYWwgUG9ydEZhY3Rvcnkgd2l0aCBhIE1vY2tGaWxlU3lzdGVt
LCBldGMuCisgICAgICAgIHJldHVybiBob3N0LnBvcnRfZmFjdG9yeQorCiAgICAgZGVmIGFzc2Vy
dF9wb3J0KHNlbGYsIHBvcnRfbmFtZSwgZXhwZWN0ZWRfcG9ydCwgcG9ydF9vYmo9Tm9uZSk6CiAg
ICAgICAgICIiIkhlbHBlciBhc3NlcnQgZm9yIHBvcnRfbmFtZS4KIApAQCAtNzMsOCArNzYsNyBA
QCBjbGFzcyBGYWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgZXhwZWN0
ZWRfcG9ydDogY2xhc3Mgb2YgZXhwZWN0ZWQgcG9ydCBvYmplY3QuCiAgICAgICAgICAgcG9ydF9v
Ymo6IG9wdGlvbmFsIHBvcnQgb2JqZWN0CiAgICAgICAgICIiIgotCi0gICAgICAgIHBvcnRfb2Jq
ID0gcG9ydF9vYmogb3IgZmFjdG9yeS5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZSwgZmlsZXN5c3Rl
bT1Nb2NrRmlsZVN5c3RlbSgpLCB1c2VyPU1vY2tVc2VyKCksIGV4ZWN1dGl2ZT1Nb2NrRXhlY3V0
aXZlKCkpCisgICAgICAgIHBvcnRfb2JqID0gcG9ydF9vYmogb3Igc2VsZi5tYWtlX2ZhY3Rvcnko
KS5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5z
dGFuY2UocG9ydF9vYmosIGV4cGVjdGVkX3BvcnQpKQogCiAgICAgZGVmIGFzc2VydF9wbGF0Zm9y
bV9wb3J0KHNlbGYsIHBsYXRmb3JtLCBvcHRpb25zLCBleHBlY3RlZF9wb3J0KToKQEAgLTg2LDkg
Kzg4LDEwIEBAIGNsYXNzIEZhY3RvcnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
ICBleHBlY3RlZF9wb3J0OiBjbGFzcyBvZiBleHBlY3RlZCBwb3J0IG9iamVjdC4KIAogICAgICAg
ICAiIiIKKyAgICAgICAgIyBGSVhNRTogSGFja2luZyBzeXMucGxhdGZvcm0gbGlrZSB0aGlzIGlz
IFdST05HLgogICAgICAgICBvcmlnX3BsYXRmb3JtID0gc3lzLnBsYXRmb3JtCiAgICAgICAgIHN5
cy5wbGF0Zm9ybSA9IHBsYXRmb3JtCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNl
KGZhY3RvcnkuZ2V0KG9wdGlvbnM9b3B0aW9ucywgZmlsZXN5c3RlbT1Nb2NrRmlsZVN5c3RlbSgp
LCB1c2VyPU1vY2tVc2VyKCksIGV4ZWN1dGl2ZT1Nb2NrRXhlY3V0aXZlKCkpLCBleHBlY3RlZF9w
b3J0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5tYWtlX2ZhY3Rv
cnkoKS5nZXQob3B0aW9ucz1vcHRpb25zKSwgZXhwZWN0ZWRfcG9ydCkpCiAgICAgICAgIHN5cy5w
bGF0Zm9ybSA9IG9yaWdfcGxhdGZvcm0KIAogICAgIGRlZiB0ZXN0X21hYyhzZWxmKToKQEAgLTE0
OSwxNCArMTUyLDEzIEBAIGNsYXNzIEZhY3RvcnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAog
ICAgIGRlZiB0ZXN0X3Vua25vd25fc3BlY2lmaWVkKHNlbGYpOgogICAgICAgICAjIFRlc3Qgd2hh
dCBoYXBwZW5zIHdoZW4geW91IHNwZWNpZnkgYW4gdW5rbm93biBwb3J0LgotICAgICAgICBvcmln
X3BsYXRmb3JtID0gc3lzLnBsYXRmb3JtCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdElt
cGxlbWVudGVkRXJyb3IsIGZhY3RvcnkuZ2V0LCBwb3J0X25hbWU9J3Vua25vd24nKQorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzZWxmLm1ha2VfZmFjdG9y
eSgpLmdldCwgcG9ydF9uYW1lPSd1bmtub3duJykKIAogICAgIGRlZiB0ZXN0X3Vua25vd25fZGVm
YXVsdChzZWxmKToKICAgICAgICAgIyBUZXN0IHdoYXQgaGFwcGVucyB3aGVuIHlvdSdyZSBydW5u
aW5nIG9uIGFuIHVua25vd24gcGxhdGZvcm0uCiAgICAgICAgIG9yaWdfcGxhdGZvcm0gPSBzeXMu
cGxhdGZvcm0KICAgICAgICAgc3lzLnBsYXRmb3JtID0gJ3Vua25vd24nCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIGZhY3RvcnkuZ2V0KQorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzZWxmLm1ha2VfZmFjdG9yeSgp
LmdldCkKICAgICAgICAgc3lzLnBsYXRmb3JtID0gb3JpZ19wbGF0Zm9ybQogCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9t
ZV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Z29vZ2xlX2Nocm9tZV91bml0dGVzdC5weQppbmRleCA2ZmNjOTA4NDBmMmQ4OWI3YTZlYzZmZWVk
NzYxYWY1MGY0MDVmNDY2Li40N2E5MDRlMTY4MmYwYmFkMjg4ZWNlZmNkNjQ4YTEwNGY1YWM3ZDE1
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dv
b2dsZV9jaHJvbWVfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lX3VuaXR0ZXN0LnB5CkBAIC0yNiwxNiArMjYsMTgg
QEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBv
cnQgZmlsZXN5c3RlbV9tb2NrCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0
IE1vY2tIb3N0Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGlt
cG9ydCBNb2NrRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXJfbW9j
ayBpbXBvcnQgTW9ja1VzZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVf
bW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQorCiAKLWltcG9ydCBmYWN0b3J5CiBpbXBvcnQgZ29v
Z2xlX2Nocm9tZQogCiAKIGNsYXNzIEdldEdvb2dsZUNocm9tZVBvcnRUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICBkZWYgdGVzdF9nZXRfZ29vZ2xlX2Nocm9tZV9wb3J0KHNlbGYpOgotICAg
ICAgICB0ZXN0X3BvcnRzID0gKCdnb29nbGUtY2hyb21lLWxpbnV4MzInLCAnZ29vZ2xlLWNocm9t
ZS1saW51eDY0JywKLSAgICAgICAgICAgICdnb29nbGUtY2hyb21lLW1hYycsICdnb29nbGUtY2hy
b21lLXdpbicpCisgICAgICAgIHRlc3RfcG9ydHMgPSAoJ2dvb2dsZS1jaHJvbWUtbGludXgzMics
ICdnb29nbGUtY2hyb21lLWxpbnV4NjQnLCAnZ29vZ2xlLWNocm9tZS1tYWMnLCAnZ29vZ2xlLWNo
cm9tZS13aW4nKQogICAgICAgICBmb3IgcG9ydCBpbiB0ZXN0X3BvcnRzOgogICAgICAgICAgICAg
c2VsZi5fdmVyaWZ5X2Jhc2VsaW5lX3BhdGgocG9ydCwgcG9ydCkKICAgICAgICAgICAgIHNlbGYu
X3ZlcmlmeV9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHBvcnQpCkBAIC00NSw4ICs0Nyw3IEBAIGNs
YXNzIEdldEdvb2dsZUNocm9tZVBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
c2VsZi5fdmVyaWZ5X2Jhc2VsaW5lX3BhdGgoJ2dvb2dsZS1jaHJvbWUtd2luJywgJ2dvb2dsZS1j
aHJvbWUtd2luLXZpc3RhJykKIAogICAgIGRlZiBfdmVyaWZ5X2Jhc2VsaW5lX3BhdGgoc2VsZiwg
ZXhwZWN0ZWRfcGF0aCwgcG9ydF9uYW1lKToKLSAgICAgICAgcG9ydCA9IGdvb2dsZV9jaHJvbWUu
R2V0R29vZ2xlQ2hyb21lUG9ydChwb3J0X25hbWU9cG9ydF9uYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9Tm9uZSkKKyAgICAgICAg
cG9ydCA9IGdvb2dsZV9jaHJvbWUuR2V0R29vZ2xlQ2hyb21lUG9ydChwb3J0X25hbWU9cG9ydF9u
YW1lLCBvcHRpb25zPU5vbmUsIGZpbGVzeXN0ZW09TW9ja0ZpbGVTeXN0ZW0oKSwgZXhlY3V0aXZl
PU1vY2tFeGVjdXRpdmUoKSwgdXNlcj1Nb2NrVXNlcigpKQogICAgICAgICBwYXRoID0gcG9ydC5i
YXNlbGluZV9zZWFyY2hfcGF0aCgpWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0
ZWRfcGF0aCwgcG9ydC5fZmlsZXN5c3RlbS5iYXNlbmFtZShwYXRoKSkKIApAQCAtNTUsMTggKzU2
LDE2IEBAIGNsYXNzIEdldEdvb2dsZUNocm9tZVBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgIyB3ZSBzaG91bGQgYmUgYWJsZSB0byB0ZXN0IGZvciB0aGUgZmlsZXMgZXhpc3Rp
bmcgb3Igbm90LCBhbmQKICAgICAgICAgIyBiZSBhYmxlIHRvIGNvbnRyb2wgdGhlIGNvbnRlbnRz
IGJldHRlci4KIAotICAgICAgICBjaHJvbWl1bV9wb3J0ID0gZmFjdG9yeS5nZXQoImNocm9taXVt
LWNnLW1hYyIpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIGNocm9taXVtX3Bv
cnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoImNocm9taXVtLWNnLW1hYyIpCiAgICAgICAgIGNo
cm9taXVtX2Jhc2UgPSBjaHJvbWl1bV9wb3J0LnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCkKLSAg
ICAgICAgZnMgPSBmaWxlc3lzdGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oKQotICAgICAgICBwb3J0
ID0gZ29vZ2xlX2Nocm9tZS5HZXRHb29nbGVDaHJvbWVQb3J0KHBvcnRfbmFtZT1wb3J0X25hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9u
cz1Ob25lLCBmaWxlc3lzdGVtPWZzKQorICAgICAgICBmcyA9IE1vY2tGaWxlU3lzdGVtKCkKKyAg
ICAgICAgcG9ydCA9IGdvb2dsZV9jaHJvbWUuR2V0R29vZ2xlQ2hyb21lUG9ydChwb3J0X25hbWU9
cG9ydF9uYW1lLCBvcHRpb25zPU5vbmUsIGZpbGVzeXN0ZW09ZnMsIGV4ZWN1dGl2ZT1Nb2NrRXhl
Y3V0aXZlKCksIHVzZXI9TW9ja1VzZXIoKSkKIAogICAgICAgICBleHBlY3RlZF9jaHJvbWl1bV9v
dmVycmlkZXMgPSAnLy8gY2hyb21pdW0gb3ZlcnJpZGVzXG4nCiAgICAgICAgIGV4cGVjdGVkX2No
cm9tZV9vdmVycmlkZXMgPSAnLy8gY2hyb21lIG92ZXJyaWRlc1xuJwotICAgICAgICBjaHJvbWl1
bV9wYXRoID0gZnMuam9pbihjaHJvbWl1bV9iYXNlLCAnd2Via2l0JywgJ3Rvb2xzJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xheW91dF90ZXN0cycsICd0ZXN0X2V4cGVjdGF0
aW9ucy50eHQnKQotICAgICAgICBjaHJvbWVfcGF0aCA9IGZzLmpvaW4oY2hyb21pdW1fYmFzZSwg
J3dlYmtpdCcsICd0b29scycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGF5b3V0
X3Rlc3RzJywgJ3Rlc3RfZXhwZWN0YXRpb25zX2Nocm9tZS50eHQnKQorICAgICAgICBjaHJvbWl1
bV9wYXRoID0gZnMuam9pbihjaHJvbWl1bV9iYXNlLCAnd2Via2l0JywgJ3Rvb2xzJywgJ2xheW91
dF90ZXN0cycsICd0ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQorICAgICAgICBjaHJvbWVfcGF0aCA9
IGZzLmpvaW4oY2hyb21pdW1fYmFzZSwgJ3dlYmtpdCcsICd0b29scycsICdsYXlvdXRfdGVzdHMn
LCAndGVzdF9leHBlY3RhdGlvbnNfY2hyb21lLnR4dCcpCiAKICAgICAgICAgZnMuZmlsZXNbY2hy
b21pdW1fcGF0aF0gPSBleHBlY3RlZF9jaHJvbWl1bV9vdmVycmlkZXMKICAgICAgICAgZnMuZmls
ZXNbY2hyb21lX3BhdGhdID0gTm9uZQpAQCAtNzUsOCArNzQsNyBAQCBjbGFzcyBHZXRHb29nbGVD
aHJvbWVQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgZnMuZmlsZXNbY2hy
b21lX3BhdGhdID0gZXhwZWN0ZWRfY2hyb21lX292ZXJyaWRlcwogICAgICAgICBhY3R1YWxfY2hy
b21lX292ZXJyaWRlcyA9IHBvcnQudGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfY2hyb21lX292ZXJyaWRlcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3RlZF9jaHJvbWl1bV9vdmVycmlkZXMgKyBleHBlY3RlZF9jaHJv
bWVfb3ZlcnJpZGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9jaHJvbWVfb3Zl
cnJpZGVzLCBleHBlY3RlZF9jaHJvbWl1bV9vdmVycmlkZXMgKyBleHBlY3RlZF9jaHJvbWVfb3Zl
cnJpZGVzKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weQppbmRleCAwMjUy
OTBlNDNlNWZjMzAzNTM1Zjg2NDlmMDY2NTNkMTI0YWE2YjE2Li4xMzIyOWRlZjc1MjJkNDk2NTNk
NmQxMDhhMDcwNDhjNmI2YWQ5NzdlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnQucHkKQEAgLTQxLDcgKzQxLDcgQEAgaW1wb3J0
IHN5cwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBmaWxlc3lzdGVtCiAKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJhc2UKLWZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGZhY3RvcnkKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnBvcnQuZmFjdG9yeSBpbXBvcnQgUG9ydEZhY3RvcnkKIGZyb20gd2Via2l0cHkudG9vbC5t
b2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKIAogCkBAIC01NSw3ICs1NSw4IEBAIGNsYXNzIE1v
Y2tEUlRQb3J0KG9iamVjdCk6CiAgICAgICAgIHByZWZpeCA9ICdtb2NrLScKICAgICAgICAgaWYg
J3BvcnRfbmFtZScgaW4ga3dhcmdzOgogICAgICAgICAgICAga3dhcmdzWydwb3J0X25hbWUnXSA9
IGt3YXJnc1sncG9ydF9uYW1lJ11bbGVuKHByZWZpeCk6XQotICAgICAgICBzZWxmLl9fZGVsZWdh
dGUgPSBmYWN0b3J5LmdldCgqKmt3YXJncykKKyAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQg
Z2V0IHRoZSBQb3J0RmFjdG9yeSBmcm9tIGEgSG9zdCBvYmplY3QuCisgICAgICAgIHNlbGYuX19k
ZWxlZ2F0ZSA9IFBvcnRGYWN0b3J5KCkuZ2V0KCoqa3dhcmdzKQogICAgICAgICBzZWxmLl9fcmVh
bF9uYW1lID0gcHJlZml4ICsgc2VsZi5fX2RlbGVnYXRlLm5hbWUoKQogCiAgICAgZGVmIHJlYWxf
bmFtZShzZWxmKToKQEAgLTE4NCw3ICsxODUsOCBAQCBjbGFzcyBNb2NrRFJUKG9iamVjdCk6CiAg
ICAgICAgIHBvcnRfbmFtZSA9IE5vbmUKICAgICAgICAgaWYgb3B0aW9ucy5wbGF0Zm9ybToKICAg
ICAgICAgICAgIHBvcnRfbmFtZSA9IG9wdGlvbnMucGxhdGZvcm0KLSAgICAgICAgc2VsZi5fcG9y
dCA9IGZhY3RvcnkuZ2V0KHBvcnRfbmFtZSwgb3B0aW9ucz1vcHRpb25zLCBmaWxlc3lzdGVtPWZp
bGVzeXN0ZW0pCisgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGdldCB0aGUgUG9ydEZhY3Rv
cnkgZnJvbSBhIEhvc3Qgb2JqZWN0LgorICAgICAgICBzZWxmLl9wb3J0ID0gUG9ydEZhY3Rvcnko
KS5nZXQocG9ydF9uYW1lLCBvcHRpb25zPW9wdGlvbnMsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkK
IAogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIHdoaWxlIFRydWU6CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydF91
bml0dGVzdC5weQppbmRleCA2ZmYwNzg2ODdjMTk5MzE3YTMzN2IzNjg2Y2E5MzA1YjVmNDg3ZDAx
Li45YTA3NGMxOGNlYTM5MjUwYzU4MWZlZjA5NTMxNTlkNTdjMDRhOTY0IDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19k
cnRfdW5pdHRlc3QucHkKQEAgLTM1LDEwICszNSwxMSBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20g
d2Via2l0cHkuY29tbW9uIGltcG9ydCBuZXdzdHJpbmdpbwogCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5wb3J0IGltcG9ydCBtb2NrX2RydAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
cG9ydCBpbXBvcnQgZmFjdG9yeQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBv
cnQgcG9ydF90ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQg
dGVzdAogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CisK
IGZyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKIG1vY2tfb3B0aW9ucyA9IG1vY2t0
b29sLk1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnKQogCkBAIC0xMzYsMTUgKzEz
NywxNSBAQCBjbGFzcyBNb2NrRFJUVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAg
ICAgICAgICAgICcjRU9GXG4nLAogICAgICAgICAgICAgICAgICAgICAnI0VPRlxuJ10KIAotICAg
IGRlZiBhc3NlcnRUZXN0KHNlbGYsIHRlc3RfbmFtZSwgcGl4ZWxfdGVzdHMsIGV4cGVjdGVkX2No
ZWNrc3VtPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgZHJ0X291dHB1dD1Ob25lLCBmaWxlc3lz
dGVtPU5vbmUpOgotICAgICAgICBwbGF0Zm9ybSA9ICd0ZXN0JworICAgIGRlZiBhc3NlcnRUZXN0
KHNlbGYsIHRlc3RfbmFtZSwgcGl4ZWxfdGVzdHMsIGV4cGVjdGVkX2NoZWNrc3VtPU5vbmUsIGRy
dF9vdXRwdXQ9Tm9uZSwgZmlsZXN5c3RlbT1Ob25lKToKKyAgICAgICAgcG9ydF9uYW1lID0gJ3Rl
c3QnCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIGZpbGVzeXN0ZW0gPSBmaWxl
c3lzdGVtIG9yIHRlc3QudW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQotICAgICAgICBwb3J0ID0gZmFj
dG9yeS5nZXQocGxhdGZvcm0sIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAgICAgICAgcG9ydCA9
IGhvc3QucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWUsIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkK
ICAgICAgICAgZHJ0X2lucHV0LCBkcnRfb3V0cHV0ID0gc2VsZi5tYWtlX2lucHV0X291dHB1dChw
b3J0LCB0ZXN0X25hbWUsCiAgICAgICAgICAgICBwaXhlbF90ZXN0cywgZXhwZWN0ZWRfY2hlY2tz
dW0sIGRydF9vdXRwdXQpCiAKLSAgICAgICAgYXJncyA9IFsnLS1wbGF0Zm9ybScsICd0ZXN0J10g
KyBzZWxmLmV4dHJhX2FyZ3MocGl4ZWxfdGVzdHMpCisgICAgICAgIGFyZ3MgPSBbJy0tcGxhdGZv
cm0nLCBwb3J0X25hbWVdICsgc2VsZi5leHRyYV9hcmdzKHBpeGVsX3Rlc3RzKQogICAgICAgICBz
dGRpbiA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKGRydF9pbnB1dCkKICAgICAgICAgc3Rkb3V0ID0g
bmV3c3RyaW5naW8uU3RyaW5nSU8oKQogICAgICAgICBzdGRlcnIgPSBuZXdzdHJpbmdpby5TdHJp
bmdJTygpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3Rlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rl
c3QucHkKaW5kZXggMmQxYjQ1MjIwYWZiOTRhMjA0YjVkMDY0YWMzMzk1ZDA3MzFiNDA3Ny4uMThl
MGU0ODA0YzQxNjUyZGRiMzE4MjIwMmZmMTg3MjBjN2YwYzM5ZCAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtMzMsMTAgKzMzLDEx
IEBAIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKIGltcG9ydCBiYXNlNjQK
IGltcG9ydCB0aW1lCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5
c3RlbV9tb2NrCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBQb3J0LCBE
cml2ZXIsIERyaXZlck91dHB1dAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRl
c3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS51c2VyX21vY2sgaW1wb3J0IE1vY2tVc2VyCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVt
CiAKIAogIyBUaGlzIHNldHMgYmFzaWMgZXhwZWN0YXRpb25zIGZvciBhIHRlc3QuIEVhY2ggaW5k
aXZpZHVhbCBleHBlY3RhdGlvbgpAQCAtMjU3LDcgKzI1OCw3IEBAIFdPTlRGSVggU0tJUCA6IGZh
aWx1cmVzL2V4cGVjdGVkL2V4Y2VwdGlvbi5odG1sID0gQ1JBU0gKICAgICAjIEFkZCBpbiBhIGZp
bGUgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGVzdF9maWxlcy5maW5kKCkuCiAgICAgI2ZpbGVzW0xB
WU9VVF9URVNUX0RJUiArICcvdXNlcnNjcmlwdHMvcmVzb3VyY2VzL2lmcmFtZS5odG1sJ10gPSAn
aWZyYW1lJwogCi0gICAgZnMgPSBmaWxlc3lzdGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oZmlsZXMs
IGRpcnM9c2V0KFsnL21vY2stY2hlY2tvdXQnXSkpICAjIE1ha2Ugc3VyZSBhdCBsZWFzdCB0aGUg
Y2hlY2tvdXRfcm9vdCBleGlzdHMgYXMgYSBkaXJlY3RvcnkuCisgICAgZnMgPSBNb2NrRmlsZVN5
c3RlbShmaWxlcywgZGlycz1zZXQoWycvbW9jay1jaGVja291dCddKSkgICMgTWFrZSBzdXJlIGF0
IGxlYXN0IHRoZSBjaGVja291dF9yb290IGV4aXN0cyBhcyBhIGRpcmVjdG9yeS4KICAgICBmcy5f
dGVzdHMgPSB0ZXN0X2xpc3QKICAgICByZXR1cm4gZnMKIApAQCAtMjcwLDEzICsyNzEsMjEgQEAg
Y2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgICAgICd0ZXN0LWxpbnV4LXg4Nl82NCcsCiAgICAg
KQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfbmFtZT1Ob25lLCB1c2VyPU5vbmUsIGZp
bGVzeXN0ZW09Tm9uZSwgKiprd2FyZ3MpOgorICAgIGRlZiBfc2V0X2RlZmF1bHRfb3ZlcnJpZGlu
Z19ub25lKHNlbGYsIGRpY3Rpb25hcnksIGtleSwgZGVmYXVsdCk6CisgICAgICAgICMgZGljdC5z
ZXRkZWZhdWx0IGFsbW9zdCB3b3JrcywgYnV0IHdvbid0IGFjdHVhbGx5IG92ZXJyaWRlIE5vbmUg
dmFsdWVzLCB3aGljaCB3ZSB3YW50LgorICAgICAgICBpZiBub3QgZGljdGlvbmFyeS5nZXQoa2V5
KToKKyAgICAgICAgICAgIGRpY3Rpb25hcnlba2V5XSA9IGRlZmF1bHQKKyAgICAgICAgcmV0dXJu
IGRpY3Rpb25hcnlba2V5XQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfbmFtZT1Ob25l
LCAqKmt3YXJncyk6CiAgICAgICAgIGlmIG5vdCBwb3J0X25hbWUgb3IgcG9ydF9uYW1lID09ICd0
ZXN0JzoKICAgICAgICAgICAgIHBvcnRfbmFtZSA9ICd0ZXN0LW1hYy1sZW9wYXJkJwotICAgICAg
ICAjIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgYSBNb2NrRXhlY3V0aXZlIHRvby4KLSAgICAgICAg
dXNlciA9IHVzZXIgb3IgTW9ja1VzZXIoKQotICAgICAgICBmaWxlc3lzdGVtID0gZmlsZXN5c3Rl
bSBvciB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0gICAgICAgIFBvcnQuX19pbml0X18oc2VsZiwg
cG9ydF9uYW1lPXBvcnRfbmFtZSwgZmlsZXN5c3RlbT1maWxlc3lzdGVtLCB1c2VyPXVzZXIsICoq
a3dhcmdzKQorCisgICAgICAgIHNlbGYuX3NldF9kZWZhdWx0X292ZXJyaWRpbmdfbm9uZShrd2Fy
Z3MsICd1c2VyJywgTW9ja1VzZXIoKSkKKyAgICAgICAgc2VsZi5fc2V0X2RlZmF1bHRfb3ZlcnJp
ZGluZ19ub25lKGt3YXJncywgJ2V4ZWN1dGl2ZScsIE1vY2tFeGVjdXRpdmUoKSkKKyAgICAgICAg
ZmlsZXN5c3RlbSA9IHNlbGYuX3NldF9kZWZhdWx0X292ZXJyaWRpbmdfbm9uZShrd2FyZ3MsICdm
aWxlc3lzdGVtJywgdW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKSkKKworICAgICAgICBQb3J0Ll9faW5p
dF9fKHNlbGYsIHBvcnRfbmFtZT1wb3J0X25hbWUsICoqa3dhcmdzKQogICAgICAgICBzZWxmLl9y
ZXN1bHRzX2RpcmVjdG9yeSA9IE5vbmUKIAogICAgICAgICBhc3NlcnQgZmlsZXN5c3RlbS5fdGVz
dHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
d2luLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW4ucHkK
aW5kZXggZDViZDBmNDA5N2IyYWMzNzcwYmFmYTY1N2ViMTBjODgyNzk2YTk1OS4uMTA4YzlkMjdj
ODdlY2ZjMzNhN2EzMTlhZWUwZGM1OWQyYmIwNTNjOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW4ucHkKQEAgLTI4LDYgKzI4LDcgQEAKIAogaW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCByZQoraW1wb3J0IHN5cwogCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydC5hcHBsZSBpbXBvcnQgQXBwbGVQb3J0CkBAIC01MiwxMCArNTMsMTUgQEAg
Y2xhc3MgV2luUG9ydChBcHBsZVBvcnQpOgogICAgICAgICAgICAgcmV0dXJuICd4cCcKICAgICAg
ICAgcmV0dXJuIE5vbmUKIAotICAgIGRlZiBfZGV0ZWN0X3ZlcnNpb24oc2VsZiwgb3NfdmVyc2lv
bl9zdHJpbmc9Tm9uZSk6CisgICAgZGVmIF9kZXRlY3RfdmVyc2lvbihzZWxmLCBvc192ZXJzaW9u
X3N0cmluZz1Ob25lLCBydW5fb25fbm9uX3dpbmRvd3NfcGxhdGZvcm1zPU5vbmUpOgogICAgICAg
ICAjIEZJWE1FOiBvc192ZXJzaW9uX3N0cmluZyBpcyBmb3IgdW5pdCB0ZXN0aW5nLCBidXQgbWF5
IGV2ZW50dWFsbHkgYmUgcHJvdmlkZWQgYnkgZmFjdG9yeS5weSBpbnN0ZWFkLgogICAgICAgICBp
ZiBvc192ZXJzaW9uX3N0cmluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiBvc192
ZXJzaW9uX3N0cmluZworCisgICAgICAgICMgTm8gc2Vuc2UgaW4gdHJ5aW5nIHRvIGRldGVjdCBv
dXIgd2luZG93cyB2ZXJzaW9uIG9uIG5vbi13aW5kb3dzIHBsYXRmb3JtcywgdW5sZXNzIHdlJ3Jl
IHVuaXR0ZXN0aW5nLgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2N5Z3dpbicgYW5kIG5v
dCBydW5fb25fbm9uX3dpbmRvd3NfcGxhdGZvcm1zOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUK
KwogICAgICAgICAjIE5vdGUsIHRoaXMgaW50ZW50aW9uYWxseSByZXR1cm5zIE5vbmUgdG8gbWVh
biB0aGF0IGl0IGNhbid0IGRldGVjdCB3aGF0IHRoZSBjdXJyZW50IHZlcnNpb24gaXMuCiAgICAg
ICAgICMgQ2FsbGVycyBjYW4gdGhlbiBkZWNpZGUgd2hhdCB2ZXJzaW9uIHRoZXkgd2FudCB0byBw
cmV0ZW5kIHRvIGJlLgogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2luX3VuaXR0ZXN0LnB5CmluZGV4IDcyMDY1NzE2
ODQ0Zjk0NjhhZTRjZDQ3NWY2ZGQzMzdjOTJhODg3NTAuLjVkMzNkZDA4MDRlYjQ0YjIzYTJmNTg2
Njc5ZWQwZTJmZGQ2MmNjYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2luX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2luX3VuaXR0ZXN0LnB5CkBAIC01OCwxNCArNTgsMTQgQEAg
Y2xhc3MgV2luUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICAg
ICAgcmV0dXJuICI2LjEuNzYwMCIKIAogICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhl
Y3V0aXZlMihydW5fY29tbWFuZF9mbj1tb2NrX3J1bl9jb21tYW5kKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhwb3J0Ll9kZXRlY3RfdmVyc2lvbigpLCAnN3NwMCcpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKHBvcnQuX2RldGVjdF92ZXJzaW9uKHJ1bl9vbl9ub25fd2luZG93c19wbGF0
Zm9ybXM9VHJ1ZSksICc3c3AwJykKIAogICAgICAgICBkZWYgbW9ja19ydW5fY29tbWFuZChjbWQp
OgogICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoJ0ZhaWx1cmUnKQogCiAgICAgICAgIHBv
cnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPW1vY2tfcnVuX2Nv
bW1hbmQpCiAgICAgICAgICMgRmFpbHVyZXMgbG9nIHRvIHRoZSBweXRob24gZXJyb3IgbG9nLCBi
dXQgd2UgaGF2ZSBubyBlYXN5IHdheSB0byBjYXB0dXJlL3Rlc3QgdGhhdC4KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMocG9ydC5fZGV0ZWN0X3ZlcnNpb24oKSwgTm9uZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMocG9ydC5fZGV0ZWN0X3ZlcnNpb24ocnVuX29uX25vbl93aW5kb3dzX3Bs
YXRmb3Jtcz1UcnVlKSwgTm9uZSkKIAogICAgIGRlZiBfYXNzZXJ0X3NlYXJjaF9wYXRoKHNlbGYs
IGV4cGVjdGVkX3NlYXJjaF9wYXRocywgdmVyc2lvbiwgdXNlX3dlYmtpdDI9RmFsc2UpOgogICAg
ICAgICBwb3J0ID0gV2luUG9ydChvc192ZXJzaW9uX3N0cmluZz12ZXJzaW9uLApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMu
cHkKaW5kZXggYzA0Mzg2OTgxY2FkNmRhNjI2NDAwY2I3NTUwY2E4M2EyMGNlMzUzZC4uMzI0Zjhm
MjU3YjE1MDg3Y2NjZWMwYjQ0MWZkMzkwYTM5ZWFmNWY0NyAxMDA3NTUKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0z
OCw2ICszOCw4IEBAIGltcG9ydCBvcwogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN5cwogCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CisKIGZyb20gd2Via2l0cHkgaW1wb3J0
IGxheW91dF90ZXN0cwogCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy5t
YW5hZ2VyIGltcG9ydCBNYW5hZ2VyLCBXb3JrZXJFeGNlcHRpb24KQEAgLTQyNyw3ICs0MjksOCBA
QCBkZWYgcGFyc2VfYXJncyhhcmdzPU5vbmUpOgogCiBkZWYgbWFpbigpOgogICAgIG9wdGlvbnMs
IGFyZ3MgPSBwYXJzZV9hcmdzKCkKLSAgICBwb3J0ID0gbGF5b3V0X3Rlc3RzLnBvcnQuZ2V0KG9w
dGlvbnMucGxhdGZvcm0sIG9wdGlvbnMpCisgICAgaG9zdCA9IEhvc3QoKQorICAgIHBvcnQgPSBo
b3N0LnBvcnRfZmFjdG9yeS5nZXQob3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucykKICAgICByZXR1
cm4gcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MpCiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
X2ludGVncmF0aW9udGVzdC5weQppbmRleCA0N2RhYjlhNDJlZGNjMDA5NDk2NzVlNjU4ODgzNjdl
MzJjYzkwYjg3Li43YWI3YmRlNzkwOTA2MGRlOWQ0NTcwMmVmM2UxMWY1Mzk5MGUyOGQ0IDEwMDc1
NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rl
c3RzX2ludGVncmF0aW9udGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQpAQCAtNjEsOCArNjEs
OCBAQCBTSE9VTERfVEVTVF9QUk9DRVNTRVMgPSBtdWx0aXByb2Nlc3NpbmcgYW5kIHN5cy5wbGF0
Zm9ybSBub3QgaW4gKCdjeWd3aW4nLCAnd2luMwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBv
cnQgYXJyYXlfc3RyZWFtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1
dGNhcHR1cmUKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9t
b2NrCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlcl9tb2NrIGltcG9ydCBNb2NrVXNl
cgorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogCiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKQEAgLTcxLDggKzcxLDYgQEAgZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0X2ZpbGVzIGltcG9ydCBpc19yZWZlcmVuY2VfaHRt
bF9maWxlCiBmcm9tIHdlYmtpdHB5LnB5dGhvbjI0LnZlcnNpb25pbmcgaW1wb3J0IGNvbXBhcmVf
dmVyc2lvbgogZnJvbSB3ZWJraXRweS50ZXN0LnNraXAgaW1wb3J0IHNraXBfaWYKIAotZnJvbSB3
ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKLQogCiBkZWYgcGFyc2VfYXJncyhl
eHRyYV9hcmdzPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLCB0ZXN0c19pbmNsdWRlZD1GYWxz
ZSwgbmV3X3Jlc3VsdHM9RmFsc2UsIHByaW50X25vdGhpbmc9VHJ1ZSk6CiAgICAgZXh0cmFfYXJn
cyA9IGV4dHJhX2FyZ3Mgb3IgW10KQEAgLTEwMSw4ICs5OSwxMCBAQCBkZWYgcGFyc2VfYXJncyhl
eHRyYV9hcmdzPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLCB0ZXN0c19pbmNsdWRlZD1GYWxz
ZSwgbmV3XwogCiBkZWYgcGFzc2luZ19ydW4oZXh0cmFfYXJncz1Ob25lLCBwb3J0X29iaj1Ob25l
LCByZWNvcmRfcmVzdWx0cz1GYWxzZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsIGZpbGVzeXN0ZW09
Tm9uZSk6CiAgICAgb3B0aW9ucywgcGFyc2VkX2FyZ3MgPSBwYXJzZV9hcmdzKGV4dHJhX2FyZ3Ms
IHJlY29yZF9yZXN1bHRzLCB0ZXN0c19pbmNsdWRlZCkKKyAgICBmaWxlc3lzdGVtID0gZmlsZXN5
c3RlbSBvciB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCiAgICAgaWYgbm90IHBvcnRfb2JqOgotICAg
ICAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KHBvcnRfbmFtZT1vcHRpb25zLnBsYXRmb3JtLCBvcHRp
b25zPW9wdGlvbnMsIHVzZXI9TW9ja1VzZXIoKSwgZmlsZXN5c3RlbT1maWxlc3lzdGVtKQorICAg
ICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBwb3J0X29iaiA9IGhvc3QucG9ydF9mYWN0
b3J5LmdldChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zLCBmaWxl
c3lzdGVtPWZpbGVzeXN0ZW0pCiAgICAgYnVpbGRib3Rfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFy
cmF5U3RyZWFtKCkKICAgICByZWd1bGFyX291dHB1dCA9IGFycmF5X3N0cmVhbS5BcnJheVN0cmVh
bSgpCiAgICAgcmVzID0gcnVuX3dlYmtpdF90ZXN0cy5ydW4ocG9ydF9vYmosIG9wdGlvbnMsIHBh
cnNlZF9hcmdzLCBidWlsZGJvdF9vdXRwdXQ9YnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1
dD1yZWd1bGFyX291dHB1dCkKQEAgLTExNCwxMiArMTE0LDEzIEBAIGRlZiBsb2dnaW5nX3J1bihl
eHRyYV9hcmdzPU5vbmUsIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLCB0ZXN0
c19pbmNsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZF9yZXN1
bHRzPXJlY29yZF9yZXN1bHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0c19pbmNsdWRlZD10ZXN0c19pbmNsdWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpbnRfbm90aGluZz1GYWxzZSwgbmV3X3Jlc3VsdHM9bmV3X3Jlc3Vs
dHMpCi0gICAgdXNlciA9IE1vY2tVc2VyKCkKKyAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgIGZp
bGVzeXN0ZW0gPSBmaWxlc3lzdGVtIG9yIHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKICAgICBpZiBu
b3QgcG9ydF9vYmo6Ci0gICAgICAgIHBvcnRfb2JqID0gcG9ydC5nZXQocG9ydF9uYW1lPW9wdGlv
bnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0aW9ucywgdXNlcj11c2VyLCBmaWxlc3lzdGVtPWZpbGVz
eXN0ZW0pCisgICAgICAgIHBvcnRfb2JqID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFt
ZT1vcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMsIGZpbGVzeXN0ZW09ZmlsZXN5c3Rl
bSkKIAogICAgIHJlcywgYnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCA9IHJ1bl9hbmRf
Y2FwdHVyZShwb3J0X29iaiwgb3B0aW9ucywgcGFyc2VkX2FyZ3MpCi0gICAgcmV0dXJuIChyZXMs
IGJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9vdXRwdXQsIHVzZXIpCisgICAgcmV0dXJuIChyZXMs
IGJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9vdXRwdXQsIGhvc3QudXNlcikKIAogCiBkZWYgcnVu
X2FuZF9jYXB0dXJlKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncyk6CkBAIC0yOTEsOCAr
MjkyLDggQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRl
c3RfbGludF90ZXN0X2ZpbGVzX19lcnJvcnMoc2VsZik6CiAgICAgICAgIG9wdGlvbnMsIHBhcnNl
ZF9hcmdzID0gcGFyc2VfYXJncyhbJy0tbGludC10ZXN0LWZpbGVzJ10pCi0gICAgICAgIHVzZXIg
PSBNb2NrVXNlcigpCi0gICAgICAgIHBvcnRfb2JqID0gcG9ydC5nZXQob3B0aW9ucy5wbGF0Zm9y
bSwgb3B0aW9ucz1vcHRpb25zLCB1c2VyPXVzZXIpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgp
CisgICAgICAgIHBvcnRfb2JqID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KG9wdGlvbnMucGxhdGZv
cm0sIG9wdGlvbnM9b3B0aW9ucykKICAgICAgICAgcG9ydF9vYmoudGVzdF9leHBlY3RhdGlvbnMg
PSBsYW1iZGE6ICIjIHN5bnRheCBlcnJvciIKICAgICAgICAgcmVzLCBvdXQsIGVyciA9IHJ1bl9h
bmRfY2FwdHVyZShwb3J0X29iaiwgb3B0aW9ucywgcGFyc2VkX2FyZ3MpCiAKQEAgLTgxNiwxNCAr
ODE3LDExIEBAIGNsYXNzIERyeXJ1blRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBp
ZiBzeXMucGxhdGZvcm0gIT0gImRhcndpbiI6CiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAg
ICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLXBsYXRmb3JtJywgJ2RyeXJ1bicsICdm
YXN0L2h0bWwnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUp
KQotICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLXBsYXRmb3JtJywgJ2Ry
eXJ1bi1tYWMnLCAnZmFzdC9odG1sJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19p
bmNsdWRlZD1UcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1w
bGF0Zm9ybScsICdkcnlydW4nLCAnZmFzdC9odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLXBsYXRmb3JtJywgJ2RyeXJ1
bi1tYWMnLCAnZmFzdC9odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUpKQogCiAgICAgZGVmIHRl
c3RfdGVzdChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1w
bGF0Zm9ybScsICdkcnlydW4tdGVzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJy0tcGl4ZWwtdGVzdHMnXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShw
YXNzaW5nX3J1bihbJy0tcGxhdGZvcm0nLCAnZHJ5cnVuLXRlc3QnLCAnLS1waXhlbC10ZXN0cydd
KSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGluZ191bml0dGVz
dC5weQppbmRleCBjOTkyYWE0NThkOWQ1Nzg0NTE5YjU3YzdkMjc2ZmFiMjQ2YTVhNWQ4Li4wOTE2
ZThlZjYzOGI2OTY2NzUxMTFkM2I1NzdmYmNlNWRjYmUyYTk4IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGluZ191bml0dGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGluZ191
bml0dGVzdC5weQpAQCAtMzUsNiArMzUsOCBAQCBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0
CiAKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBhcnJheV9zdHJlYW0KK2Zyb20gd2Via2l0
cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKKwogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtIGltcG9ydCBsb2d0ZXN0aW5nCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBp
bXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0
IG1hbmFnZXIKQEAgLTExMyw3ICsxMTUsOCBAQCBjbGFzcyAgVGVzdHByaW50ZXIodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICBwcmludGluZ19vcHRpb25zID0gcHJpbnRpbmcucHJpbnRfb3B0
aW9ucygpCiAgICAgICAgIG9wdGlvbl9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0
aW9uX2xpc3Q9cHJpbnRpbmdfb3B0aW9ucykKICAgICAgICAgb3B0aW9ucywgYXJncyA9IG9wdGlv
bl9wYXJzZXIucGFyc2VfYXJncyhhcmdzKQotICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydC5nZXQo
J3Rlc3QnLCBvcHRpb25zKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBzZWxm
Ll9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0Jywgb3B0aW9ucykKICAgICAgICAg
bnByb2MgPSAyCiAKICAgICAgICAgcmVndWxhcl9vdXRwdXQgPSBhcnJheV9zdHJlYW0uQXJyYXlT
dHJlYW0odHR5PXR0eSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IGM1NzA3OTE4ZDBjMTI2YzU5
ZmQ5YzI5ZThmZDU2NzYwNWY1ZjYyOGYuLmI2ZGFhYjE0ZDE4MTlkYTQ0NmU1ZTdmY2VkMDY0ZTRi
Mjk1MTkzNWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtMzQsMTkgKzM0LDE1IEBAIGltcG9y
dCByZQogaW1wb3J0IHN5cwogCiBmcm9tIGNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlcgotZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBvcnQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnBvcnQuZmFjdG9yeSBpbXBvcnQgUG9ydEZhY3RvcnkKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIAogCiBfbG9nID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAorIyBGSVhNRTogVGhpcyBjb3VsZCB1c2UgbW9ja3Rv
b2wuTW9ja09wdGlvbnMoY2hyb21pdW09VHJ1ZSkgb3IgYmFzZS5EdW1teU9wdGlvbnMoY2hyb21p
dW09VHJ1ZSkgaW5zdGVhZC4KIGNsYXNzIENocm9taXVtT3B0aW9ucyhvYmplY3QpOgotICAgICIi
IkEgbW9jayBvYmplY3QgZm9yIGNyZWF0aW5nIGNocm9taXVtIHBvcnQgb2JqZWN0LgotCi0gICAg
cG9ydC5nZXQoKSByZXF1aXJlcyBhbiBvcHRpb25zIG9iamVjdCB3aGljaCBoYXMgJ2Nocm9taXVt
JyBhdHRyaWJ1dGUgdG8gY3JlYXRlCi0gICAgY2hyb21pdW0gcG9ydCBvYmplY3QgZm9yIGVhY2gg
cGxhdGZvcm0uIFRoaXMgY2xhc3MgbW9ja3Mgc3VjaCBvYmplY3QuCi0gICAgIiIiCiAgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmNocm9taXVtID0gVHJ1ZQogCkBAIC02Miwy
MSArNTgsMjUgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIob2JqZWN0KToKICAgICAg
ICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yLnR1cm5fb2ZmX2xpbmVfZmlsdGVyaW5nKCkKICAg
ICAgICAgc2VsZi5fdGFiX2NoZWNrZXIgPSBUYWJDaGVja2VyKGZpbGVfcGF0aCwgaGFuZGxlX3N0
eWxlX2Vycm9yKQogICAgICAgICBzZWxmLl9vdXRwdXRfcmVnZXggPSByZS5jb21waWxlKCdMaW5l
Oig/UDxsaW5lPlxkKylccyooP1A8bWVzc2FnZT4uKyknKQorCisgICAgICAgICMgRklYTUU6IFRo
aXMgc2hvdWxkIGdldCB0aGUgUG9ydEZhY3RvcnkgZnJvbSBhIEhvc3Qgb2JqZWN0IQorICAgICAg
ICBwb3J0X2ZhY3RvcnkgPSBQb3J0RmFjdG9yeSgpCisKICAgICAgICAgIyBEZXRlcm1pbmluZyB0
aGUgcG9ydCBvZiB0aGlzIGV4cGVjdGF0aW9ucy4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAg
cG9ydF9uYW1lID0gc2VsZi5fZmlsZV9wYXRoLnNwbGl0KG9zLnNlcClbLTJdCiAgICAgICAgICAg
ICBpZiBwb3J0X25hbWUgPT0gImNocm9taXVtIjoKICAgICAgICAgICAgICAgICBvcHRpb25zID0g
Q2hyb21pdW1PcHRpb25zKCkKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0X29iaiA9IHBvcnQu
Z2V0KHBvcnRfbmFtZT1Ob25lLCBvcHRpb25zPW9wdGlvbnMpCisgICAgICAgICAgICAgICAgc2Vs
Zi5fcG9ydF9vYmogPSBwb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZT1Ob25lLCBvcHRpb25zPW9w
dGlvbnMpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnRfb2Jq
ID0gcG9ydC5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9w
b3J0X29iaiA9IHBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lPXBvcnRfbmFtZSkKICAgICAgICAg
ZXhjZXB0OgogICAgICAgICAgICAgIyBVc2luZyAndGVzdCcgcG9ydCB3aGVuIHdlIGNvdWxkbid0
IGRldGVybWluZSB0aGUgcG9ydCBmb3IgdGhpcwogICAgICAgICAgICAgIyBleHBlY3RhdGlvbnMu
CiAgICAgICAgICAgICBfbG9nLndhcm4oIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIHBvcnQgZm9y
ICVzLiAiCiAgICAgICAgICAgICAgICAgICAgICAgIlVzaW5nICd0ZXN0JyBwb3J0LCBidXQgcGxh
dGZvcm0tc3BlY2lmaWMgZXhwZWN0YXRpb25zICIKICAgICAgICAgICAgICAgICAgICAgICAid2ls
bCBmYWlsIHRoZSBjaGVjay4iICUgc2VsZi5fZmlsZV9wYXRoKQotICAgICAgICAgICAgc2VsZi5f
cG9ydF9vYmogPSBwb3J0LmdldCgndGVzdCcpCisgICAgICAgICAgICBzZWxmLl9wb3J0X29iaiA9
IHBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QnKQogICAgICAgICAjIFN1cHByZXNzIGVycm9yIG1lc3Nh
Z2VzIG9mIHRlc3RfZXhwZWN0YXRpb25zIG1vZHVsZSBzaW5jZSB0aGV5IHdpbGwgYmUKICAgICAg
ICAgIyByZXBvcnRlZCBsYXRlci4KICAgICAgICAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndl
YmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS4iCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0
aW9uc191bml0dGVzdC5weQppbmRleCBjZGNlYjYwNzI5MzMzMGM2YzJmYjc5MGNkY2ZjOGI3ZWJh
N2Q0MTVkLi5jOWM5YWNlNDNjMWNjZjljMDQ0ODBjZGEzYzAxM2UwMmRmMzUxOTg2IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRp
b25zX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKQEAgLTYxLDcgKzYxLDYgQEAgY2xhc3Mg
VGVzdEV4cGVjdGF0aW9uc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBz
ZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5fZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0
b3IoKQotICAgICAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KCd0ZXN0JykKICAgICAgICAgc2VsZi5f
dGVzdF9maWxlID0gJ3Bhc3Nlcy90ZXh0Lmh0bWwnCiAKICAgICBkZWYgcHJvY2Vzc19leHBlY3Rh
dGlvbnMoc2VsZiwgZXhwZWN0YXRpb25zLCBvdmVycmlkZXM9Tm9uZSk6CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Vi
a2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2Vs
aW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weQppbmRleCA5YmZlODI1NDFmMTQzYmUxODZmOGI0
MDFlMDljNGNlZjczZWRlNzlhLi5jODUxZmY0ZmU0M2Y4M2Y1OTNjYzg2M2RjZjJiZWUwZTI2YjY5
NTEyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFz
ZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKQEAgLTU1
LDExICs1NSwxMyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHppcGZpbGVz
ZXQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgcGF0aAogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtIGltcG9ydCB1cmxmZXRjaGVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5jb21tb24u
aG9zdCBpbXBvcnQgSG9zdAogCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9y
dAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5mYWN0b3J5IGltcG9ydCBQb3J0RmFj
dG9yeQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJlYWRfY2hlY2tzdW1fZnJv
bV9wbmcKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBl
Y3RhdGlvbnMKIAorCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIEJBU0VM
SU5FX1NVRkZJWEVTID0gKCcudHh0JywgJy5wbmcnLCAnLmNoZWNrc3VtJykKQEAgLTE2Myw3ICsx
NjUsOSBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAgICAgICBzZWxmLl9maWxlc3lz
dGVtID0gcnVubmluZ19wb3J0Ll9maWxlc3lzdGVtCiAgICAgICAgIHNlbGYuX3RhcmdldF9wb3J0
ID0gdGFyZ2V0X3BvcnQKIAotICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQgPSBwb3J0Lmdl
dChwbGF0Zm9ybSwgb3B0aW9ucywgZmlsZXN5c3RlbT1zZWxmLl9maWxlc3lzdGVtKQorICAgICAg
ICAjIEZJWE1FOiBUaGlzIHNob3VsZCBnZXQgaXRzIFBvcnRGYWN0b3J5IGZyb20gYSBIb3N0IG9i
amVjdC4KKyAgICAgICAgIyBOb3RlOiB1c2luZyBydW5uaW5nX3BvcnQuZXhlY3V0aXZlLCBydW5u
aW5nX3BvcnQudXNlciBzaW5jZSB3ZSBjYW4ndCBnZXQgdGhlbSBmcm9tIGEgaG9zdC4KKyAgICAg
ICAgc2VsZi5fcmViYXNlbGluZV9wb3J0ID0gUG9ydEZhY3RvcnkoKS5nZXQocGxhdGZvcm0sIG9w
dGlvbnMsIGZpbGVzeXN0ZW09c2VsZi5fZmlsZXN5c3RlbSwgZXhlY3V0aXZlPXJ1bm5pbmdfcG9y
dC5leGVjdXRpdmUsIHVzZXI9cnVubmluZ19wb3J0LnVzZXIpCiAgICAgICAgIHNlbGYuX3JlYmFz
ZWxpbmluZ190ZXN0cyA9IHNldCgpCiAgICAgICAgIHNlbGYuX3JlYmFzZWxpbmVkX3Rlc3RzID0g
W10KICAgICAgICAgc2VsZi5fbG9nZ2VkX2JlZm9yZSA9IGxvZ2dlZF9iZWZvcmUKQEAgLTgwMSwx
OCArODA1LDE4IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAgICAgICAgICAgIHJl
dHVybiAnT3RoZXInCiAKIAotZGVmIGdldF9ob3N0X3BvcnRfb2JqZWN0KG9wdGlvbnMpOgorZGVm
IGdldF9ob3N0X3BvcnRfb2JqZWN0KHBvcnRfZmFjdG9yeSwgb3B0aW9ucyk6CiAgICAgIiIiUmV0
dXJuIGEgcG9ydCBvYmplY3QgZm9yIHRoZSBwbGF0Zm9ybSB3ZSdyZSBydW5uaW5nIG9uLiIiIgog
ICAgICMgV2Ugd2FudCB0aGUgSW1hZ2VEaWZmIGxvZ2ljIHRvIG1hdGNoIHRoYXQgb2YgdGhlIGNo
cm9taXVtIGJvdHMsIHNvIHdlCiAgICAgIyBmb3JjZSB0aGUgdXNlIG9mIGEgQ2hyb21pdW0gcG9y
dC4gIFdlIHdpbGwgbG9vayBmb3IgZWl0aGVyIERlYnVnIG9yCiAgICAgIyBSZWxlYXNlIHZlcnNp
b25zLgogICAgIG9wdGlvbnMuY29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgogICAgIG9wdGlvbnMu
Y2hyb21pdW0gPSBUcnVlCi0gICAgcG9ydF9vYmogPSBwb3J0LmdldChOb25lLCBvcHRpb25zKQor
ICAgIHBvcnRfb2JqID0gcG9ydF9mYWN0b3J5LmdldChOb25lLCBvcHRpb25zKQogICAgIGlmIG5v
dCBwb3J0X29iai5jaGVja19pbWFnZV9kaWZmKG92ZXJyaWRlX3N0ZXA9Tm9uZSwgbG9nZ2luZz1G
YWxzZSk6CiAgICAgICAgIF9sb2cuZGVidWcoJ05vIHJlbGVhc2UgdmVyc2lvbiBvZiB0aGUgaW1h
Z2UgZGlmZiBiaW5hcnkgd2FzIGZvdW5kLicpCiAgICAgICAgIG9wdGlvbnMuY29uZmlndXJhdGlv
biA9ICJEZWJ1ZyIKLSAgICAgICAgcG9ydF9vYmogPSBwb3J0LmdldChOb25lLCBvcHRpb25zKQor
ICAgICAgICBwb3J0X29iaiA9IHBvcnRfZmFjdG9yeS5nZXQoTm9uZSwgb3B0aW9ucykKICAgICAg
ICAgaWYgbm90IHBvcnRfb2JqLmNoZWNrX2ltYWdlX2RpZmYob3ZlcnJpZGVfc3RlcD1Ob25lLCBs
b2dnaW5nPUZhbHNlKToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ05vIHZlcnNpb24gb2YgaW1h
Z2UgZGlmZiB3YXMgZm91bmQuIENoZWNrIHlvdXIgYnVpbGQuJykKICAgICAgICAgICAgIHJldHVy
biBOb25lCkBAIC05MzksOCArOTQzLDkgQEAgZGVmIG1haW4oYXJncyk6CiAgICAgbG9nZ2VyLnNl
dExldmVsKGxvZ19sZXZlbCkKICAgICBsb2dnZXIuYWRkSGFuZGxlcihsb2dfaGFuZGxlcikKIAot
ICAgIHRhcmdldF9wb3J0X29iaiA9IHBvcnQuZ2V0KE5vbmUsIHRhcmdldF9vcHRpb25zKQotICAg
IGhvc3RfcG9ydF9vYmogPSBnZXRfaG9zdF9wb3J0X29iamVjdChvcHRpb25zKQorICAgIGhvc3Qg
PSBIb3N0KCkKKyAgICB0YXJnZXRfcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoTm9u
ZSwgdGFyZ2V0X29wdGlvbnMpCisgICAgaG9zdF9wb3J0X29iaiA9IGdldF9ob3N0X3BvcnRfb2Jq
ZWN0KGhvc3QucG9ydF9mYWN0b3J5LCBvcHRpb25zKQogICAgIGlmIG5vdCBob3N0X3BvcnRfb2Jq
IG9yIG5vdCB0YXJnZXRfcG9ydF9vYmo6CiAgICAgICAgIHJldHVybiAxCiAKQEAgLTk1Myw4ICs5
NTgsNyBAQCBkZWYgbWFpbihhcmdzKToKICAgICAjIEZJWE1FOiBTQ00gbW9kdWxlIGRvZXNuJ3Qg
aGFuZGxlIHBhdGhzIHRoYXQgYXJlbid0IHJlbGF0aXZlIHRvIHRoZSBjaGVja291dF9yb290IGNv
bnNpc3RlbnRseS4KICAgICBob3N0X3BvcnRfb2JqLl9maWxlc3lzdGVtLmNoZGlyKHNjbV9vYmou
Y2hlY2tvdXRfcm9vdCkKIAotICAgIHJldF9jb2RlID0gcmVhbF9tYWluKG9wdGlvbnMsIHRhcmdl
dF9vcHRpb25zLCBob3N0X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosIHVybF9mZXRjaGVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHppcF9mYWN0b3J5LCBzY21fb2JqKQorICAgIHJldF9j
b2RlID0gcmVhbF9tYWluKG9wdGlvbnMsIHRhcmdldF9vcHRpb25zLCBob3N0X3BvcnRfb2JqLCB0
YXJnZXRfcG9ydF9vYmosIHVybF9mZXRjaGVyLCB6aXBfZmFjdG9yeSwgc2NtX29iaikKICAgICBp
ZiBub3QgcmV0X2NvZGUgYW5kIGxvZ19oYW5kbGVyLm51bV9mYWlsdXJlczoKICAgICAgICAgcmV0
X2NvZGUgPSAxCiAgICAgcHJpbnQgJycKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IDkxNWUyYWQ4YTY2NzhmZTVlNjdhZDgz
NjBjNGY0ZDkxYzczMDJkZTcuLjI5ODZlYmY3NThlMzlkMDAzMmEyOWE3ZjFkNjI5NGNhODI3Yzdj
NzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNl
bGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191
bml0dGVzdC5weQpAQCAtMzMsNyArMzMsOCBAQCBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJr
aXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtIGltcG9ydCB1cmxmZXRjaGVyX21vY2sKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21v
Y2sgaW1wb3J0IE1vY2tIb3N0CisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQg
emlwZmlsZXNldF9tb2NrCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1
dGNhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4
ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKQEAgLTU0LDEwICs1NSwxMiBAQCBjbGFzcyBNb2NrUG9ydChv
YmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5pbWFnZV9kaWZmX2V4aXN0cwogCiAKLWRlZiBn
ZXRfbW9ja19nZXQoY29uZmlnX2V4cGVjdGF0aW9ucyk6Ci0gICAgZGVmIG1vY2tfZ2V0KHBvcnRf
bmFtZSwgb3B0aW9ucyk6CitjbGFzcyBNb2NrUG9ydEZhY3Rvcnkob2JqZWN0KToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgY29uZmlnX2V4cGVjdGF0aW9ucyk6CisgICAgICAgIHNlbGYuY29uZmln
X2V4cGVjdGF0aW9ucyA9IGNvbmZpZ19leHBlY3RhdGlvbnMKKworICAgIGRlZiBnZXQocG9ydF9u
YW1lLCBvcHRpb25zKToKICAgICAgICAgcmV0dXJuIE1vY2tQb3J0KGNvbmZpZ19leHBlY3RhdGlv
bnNbb3B0aW9ucy5jb25maWd1cmF0aW9uXSkKLSAgICByZXR1cm4gbW9ja19nZXQKIAogCiBBUkNI
SVZFX1VSTCA9ICdodHRwOi8vbG9jYWxob3N0L2xheW91dF90ZXN0X3Jlc3VsdHMnCkBAIC03NSwx
MiArNzgsMTIgQEAgZGVmIHRlc3Rfb3B0aW9ucygpOgogCiAKIGRlZiB0ZXN0X2hvc3RfcG9ydF9h
bmRfZmlsZXN5c3RlbShvcHRpb25zLCBleHBlY3RhdGlvbnMpOgotICAgIGZpbGVzeXN0ZW0gPSB1
bml0X3Rlc3RfZmlsZXN5c3RlbSgpCi0gICAgaG9zdF9wb3J0X29iaiA9IHBvcnQuZ2V0KCd0ZXN0
Jywgb3B0aW9ucywgZmlsZXN5c3RlbT1maWxlc3lzdGVtLCB1c2VyPU1vY2tVc2VyKCkpCisgICAg
aG9zdCA9IE1vY2tIb3N0KCkKKyAgICBob3N0X3BvcnRfb2JqID0gaG9zdC5wb3J0X2ZhY3Rvcnku
Z2V0KCd0ZXN0Jywgb3B0aW9ucykKIAogICAgIGV4cGVjdGF0aW9uc19wYXRoID0gaG9zdF9wb3J0
X29iai5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKQotICAgIGZpbGVzeXN0ZW0ud3Jp
dGVfdGV4dF9maWxlKGV4cGVjdGF0aW9uc19wYXRoLCBleHBlY3RhdGlvbnMpCi0gICAgcmV0dXJu
IChob3N0X3BvcnRfb2JqLCBmaWxlc3lzdGVtKQorICAgIGhvc3RfcG9ydF9vYmouZmlsZXN5c3Rl
bS53cml0ZV90ZXh0X2ZpbGUoZXhwZWN0YXRpb25zX3BhdGgsIGV4cGVjdGF0aW9ucykKKyAgICBy
ZXR1cm4gKGhvc3RfcG9ydF9vYmosIGhvc3RfcG9ydF9vYmouZmlsZXN5c3RlbSkKIAogCiBkZWYg
dGVzdF91cmxfZmV0Y2hlcihmaWxlc3lzdGVtKToKQEAgLTE2MywyMCArMTY2LDE1IEBAIGNsYXNz
IFRlc3RHZXRIb3N0UG9ydE9iamVjdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGFzc2Vy
dF9yZXN1bHQoc2VsZiwgcmVsZWFzZV9wcmVzZW50LCBkZWJ1Z19wcmVzZW50LCB2YWxpZF9wb3J0
X29iaik6CiAgICAgICAgICMgVGVzdHMgd2hldGhlciB3ZSBnZXQgYSB2YWxpZCBwb3J0IG9iamVj
dCByZXR1cm5lZCB3aGVuIHdlIGNsYWltCiAgICAgICAgICMgdGhhdCBJbWFnZSBkaWZmIGlzIChv
ciBpc24ndCkgcHJlc2VudCBpbiB0aGUgdHdvIGNvbmZpZ3MuCi0gICAgICAgIHBvcnQuZ2V0ID0g
Z2V0X21vY2tfZ2V0KHsnUmVsZWFzZSc6IHJlbGVhc2VfcHJlc2VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdEZWJ1Zyc6IGRlYnVnX3ByZXNlbnR9KQotICAgICAgICBvcHRp
b25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj1Ob25lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaHRtbF9kaXJlY3Rvcnk9Jy90bXAnKQotICAgICAgICBwb3J0
X29iaiA9IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLmdldF9ob3N0X3BvcnRfb2Jq
ZWN0KG9wdGlvbnMpCisgICAgICAgIHBvcnRfZmFjdG9yeSA9IE1vY2tQb3J0RmFjdG9yeSh7J1Jl
bGVhc2UnOiByZWxlYXNlX3ByZXNlbnQsICdEZWJ1Zyc6IGRlYnVnX3ByZXNlbnR9KQorICAgICAg
ICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj1Ob25lLCBodG1sX2RpcmVjdG9y
eT0nL3RtcCcpCisgICAgICAgIHBvcnRfb2JqID0gcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRf
dGVzdHMuZ2V0X2hvc3RfcG9ydF9vYmplY3QocG9ydF9mYWN0b3J5LCBvcHRpb25zKQogICAgICAg
ICBpZiB2YWxpZF9wb3J0X29iajoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocG9y
dF9vYmosIE5vbmUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBvcnRfb2JqLCBOb25lKQogCiAgICAgZGVmIHRlc3RfZ2V0X2hvc3RfcG9ydF9vYmplY3Qoc2Vs
Zik6Ci0gICAgICAgICMgU2F2ZSB0aGUgbm9ybWFsIHBvcnQuZ2V0KCkgZnVuY3Rpb24gZm9yIGZ1
dHVyZSB0ZXN0aW5nLgotICAgICAgICBvbGRfZ2V0ID0gcG9ydC5nZXQKLQogICAgICAgICAjIFRl
c3Qgd2hldGhlciB3ZSBnZXQgYSB2YWxpZCBwb3J0IG9iamVjdCBiYWNrIGZvciB0aGUgZm91cgog
ICAgICAgICAjIHBvc3NpYmxlIGNhc2VzIG9mIGhhdmluZyBJbWFnZURpZmZzIGJ1aWx0LiBJdCBz
aG91bGQgd29yayB3aGVuCiAgICAgICAgICMgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGJpbmFyeSBw
cmVzZW50LgpAQCAtMTg1LDkgKzE4Myw2IEBAIGNsYXNzIFRlc3RHZXRIb3N0UG9ydE9iamVjdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0X3Jlc3VsdChGYWxzZSwgVHJ1
ZSwgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRfcmVzdWx0KFRydWUsIFRydWUsIFRydWUpCiAK
LSAgICAgICAgIyBSZXN0b3JlIHRoZSBub3JtYWwgcG9ydC5nZXQoKSBmdW5jdGlvbi4KLSAgICAg
ICAgcG9ydC5nZXQgPSBvbGRfZ2V0Ci0KIAogY2xhc3MgVGVzdE9wdGlvbnModW5pdHRlc3QuVGVz
dENhc2UpOgogICAgIGRlZiB0ZXN0X3BhcnNlX29wdGlvbnMoc2VsZik6CkBAIC0yMTQsOCArMjA5
LDggQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
aG9zdF9wb3J0X29iaiwgZmlsZXN5c3RlbSA9IHRlc3RfaG9zdF9wb3J0X2FuZF9maWxlc3lzdGVt
KG9wdGlvbnMsIGV4cGVjdGF0aW9ucykKIAogICAgICAgICB0YXJnZXRfb3B0aW9ucyA9IG9wdGlv
bnMKLSAgICAgICAgdGFyZ2V0X3BvcnRfb2JqID0gcG9ydC5nZXQoJ3Rlc3QnLCB0YXJnZXRfb3B0
aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbT1maWxl
c3lzdGVtKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICB0YXJnZXRfcG9ydF9v
YmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoJ3Rlc3QnLCB0YXJnZXRfb3B0aW9ucywgZmlsZXN5
c3RlbT1maWxlc3lzdGVtKQogICAgICAgICB0YXJnZXRfcG9ydF9vYmouX2V4cGVjdGF0aW9ucyA9
IGV4cGVjdGF0aW9ucwogICAgICAgICBwbGF0Zm9ybSA9IHRhcmdldF9wb3J0X29iai5uYW1lKCkK
IApAQCAtMzg3LDcgKzM4Miw4IEBAIGNsYXNzIFRlc3RSZWFsTWFpbih1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiBjbGFzcyBUZXN0SHRtbEdlbmVyYXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVm
IG1ha2VfZ2VuZXJhdG9yKHNlbGYsIGZpbGVzLCB0ZXN0cyk6CiAgICAgICAgIG9wdGlvbnMgPSBN
b2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPU5vbmUsIGh0bWxfZGlyZWN0b3J5PScvdG1wJykKLSAg
ICAgICAgaG9zdF9wb3J0ID0gcG9ydC5nZXQoJ3Rlc3QnLCBvcHRpb25zLCBmaWxlc3lzdGVtPXVu
aXRfdGVzdF9maWxlc3lzdGVtKGZpbGVzKSkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAg
ICAgICAgaG9zdF9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0ZXN0Jywgb3B0aW9ucywg
ZmlsZXN5c3RlbT11bml0X3Rlc3RfZmlsZXN5c3RlbShmaWxlcykpCiAgICAgICAgIGdlbmVyYXRv
ciA9IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLkh0bWxHZW5lcmF0b3IoaG9zdF9w
b3J0LAogICAgICAgICAgICAgdGFyZ2V0X3BvcnQ9Tm9uZSwgb3B0aW9ucz1vcHRpb25zLCBwbGF0
Zm9ybXM9Wyd0ZXN0LW1hYy1sZW9wYXJkJ10sIHJlYmFzZWxpbmluZ190ZXN0cz10ZXN0cykKICAg
ICAgICAgcmV0dXJuIGdlbmVyYXRvciwgaG9zdF9wb3J0CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZXhwZWN0YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2V4cGVjdGF0aW9ucy5weQppbmRleCA3NjFkOTZlOTlk
NjI4ZDY4ZDA3MTQ2ZTk5ZWRkODA2NTM1ODY1NzI3Li41NzVlODBjZTg1YmY4Y2VlZjM0ZTNiNDZk
OTI0NjBjNmMzY2M4YjIxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZXhwZWN0YXRpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9leHBlY3RhdGlvbnMucHkKQEAgLTI4LDcgKzI4LDYgQEAKIAogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENv
bmZpZ3VyYXRpb25Db252ZXJ0ZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50
ZXN0X2V4cGVjdGF0aW9ucyBpbXBvcnQgVGVzdEV4cGVjdGF0aW9uUGFyc2VyLCBUZXN0RXhwZWN0
YXRpb25TZXJpYWxpemVyCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBm
YWN0b3J5CiBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQWJzdHJh
Y3REZWNsYXJhdGl2ZUNvbW1hbmQKIAogCkBAIC0zNyw3ICszNiw3IEBAIGNsYXNzIE9wdGltaXpl
RXhwZWN0YXRpb25zKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKICAgICBoZWxwX3RleHQg
PSAiRml4ZXMgc2ltcGxlIHN0eWxlIGlzc3VlcyBpbiB0ZXN0X2V4cGVjdGF0aW9ucyBmaWxlLiAg
KEN1cnJlbnRseSB3b3JrcyBvbmx5IGZvciBjaHJvbWl1bSBwb3J0LikiCiAKICAgICBkZWYgZXhl
Y3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAgICAgcG9ydCA9IGZhY3Rvcnku
Z2V0KCJjaHJvbWl1bS13aW4td2luNyIpICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBzZWxlY3Rh
YmxlLgorICAgICAgICBwb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KCJjaHJvbWl1bS13aW4t
d2luNyIpICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBzZWxlY3RhYmxlLgogICAgICAgICBleHBl
Y3RhdGlvbl9saW5lcyA9IFRlc3RFeHBlY3RhdGlvblBhcnNlci50b2tlbml6ZV9saXN0KHBvcnQu
dGVzdF9leHBlY3RhdGlvbnMoKSkKICAgICAgICAgcGFyc2VyID0gVGVzdEV4cGVjdGF0aW9uUGFy
c2VyKHBvcnQsIFtdLCBhbGxvd19yZWJhc2VsaW5lX21vZGlmaWVyPUZhbHNlKQogICAgICAgICBm
b3IgZXhwZWN0YXRpb25fbGluZSBpbiBleHBlY3RhdGlvbl9saW5lczoKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkKaW5kZXggYTNiZWM3
MTg5YzdiZmM1MjM3OTBlOGMzYjczMmE1ZTVkZWU3MDdhNC4uYjYyMzI3MjVmOTMyYTkxMDkyZTJm
ZDgzNTA1NzI5YjdlZDY2ZWFkOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkKQEAgLTQwLDcgKzQwLDcgQEAgZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLnVzZXIgaW1wb3J0IFVzZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLmxheW91dF9wYWNrYWdlLnRlc3RfcmVzdWx0X3dyaXRlciBpbXBvcnQgVGVzdFJlc3VsdFdy
aXRlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1
cmVzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9leHBlY3RhdGlvbnMg
aW1wb3J0IFRlc3RFeHBlY3RhdGlvbnMKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQg
aW1wb3J0IGZhY3RvcnksIGJ1aWxkZXJzCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0
IGltcG9ydCBidWlsZGVycwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQg
dGVzdF9maWxlcwogZnJvbSB3ZWJraXRweS50b29sLmdyYW1tYXIgaW1wb3J0IHBsdXJhbGl6ZQog
ZnJvbSB3ZWJraXRweS50b29sLm11bHRpY29tbWFuZHRvb2wgaW1wb3J0IEFic3RyYWN0RGVjbGFy
YXRpdmVDb21tYW5kCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFJlYmFzZWxpbmVUZXN0KEFic3Ry
YWN0RGVjbGFyYXRpdmVDb21tYW5kKToKICAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYWNjdW11bGF0
ZWRfcmVzdWx0c191cmwoKQogCiAgICAgZGVmIF9iYXNlbGluZV9kaXJlY3Rvcnkoc2VsZiwgYnVp
bGRlcl9uYW1lKToKLSAgICAgICAgcG9ydCA9IGZhY3RvcnkuZ2V0X2Zyb21fYnVpbGRlcl9uYW1l
KGJ1aWxkZXJfbmFtZSkKKyAgICAgICAgcG9ydCA9IHNlbGYuX3Rvb2wucG9ydF9mYWN0b3J5Lmdl
dF9mcm9tX2J1aWxkZXJfbmFtZShidWlsZGVyX25hbWUpCiAgICAgICAgIHJldHVybiBwb3J0LmJh
c2VsaW5lX3BhdGgoKQogCiAgICAgZGVmIF9zYXZlX2Jhc2VsaW5lKHNlbGYsIGRhdGEsIHRhcmdl
dF9iYXNlbGluZSk6CkBAIC0xMTcsNyArMTE3LDcgQEAgY2xhc3MgT3B0aW1pemVCYXNlbGluZXMo
QWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogCiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0
aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgIHNlbGYuX2Jhc2VsaW5lX29wdGltaXplciA9IEJh
c2VsaW5lT3B0aW1pemVyKHRvb2wpCi0gICAgICAgIHNlbGYuX3BvcnQgPSBmYWN0b3J5LmdldCgi
Y2hyb21pdW0td2luLXdpbjciKSAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgc2VsZWN0YWJsZS4K
KyAgICAgICAgc2VsZi5fcG9ydCA9IHRvb2wucG9ydF9mYWN0b3J5LmdldCgiY2hyb21pdW0td2lu
LXdpbjciKSAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgc2VsZWN0YWJsZS4KIAogICAgICAgICBm
b3IgdGVzdF9uYW1lIGluIG1hcChzZWxmLl90b190ZXN0X25hbWUsIHRlc3RfZmlsZXMuZmluZChz
ZWxmLl9wb3J0LCBhcmdzKSk6CiAgICAgICAgICAgICBwcmludCAiT3B0aW1pemluZyAlcy4iICUg
dGVzdF9uYW1lCkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xhc3MgQW5hbHl6ZUJhc2VsaW5lcyhBYnN0
cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25z
LCBhcmdzLCB0b29sKToKICAgICAgICAgc2VsZi5fYmFzZWxpbmVfb3B0aW1pemVyID0gQmFzZWxp
bmVPcHRpbWl6ZXIodG9vbCkKLSAgICAgICAgc2VsZi5fcG9ydCA9IGZhY3RvcnkuZ2V0KCJjaHJv
bWl1bS13aW4td2luNyIpICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBzZWxlY3RhYmxlLgorICAg
ICAgICBzZWxmLl9wb3J0ID0gdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KCJjaHJvbWl1bS13aW4td2lu
NyIpICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBzZWxlY3RhYmxlLgogCiAgICAgICAgIGZvciB0
ZXN0X25hbWUgaW4gbWFwKHNlbGYuX3RvX3Rlc3RfbmFtZSwgdGVzdF9maWxlcy5maW5kKHNlbGYu
X3BvcnQsIGFyZ3MpKToKICAgICAgICAgICAgIHNlbGYuX2FuYWx5emVfYmFzZWxpbmUodGVzdF9u
YW1lKQpAQCAtMTczLDcgKzE3Myw3IEBAIGNsYXNzIFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMoQWJz
dHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgIGRlZiBfdXBkYXRlX2V4cGVjdGF0aW9uc19m
aWxlKHNlbGYsIHBvcnRfbmFtZSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9pc19zdXBwb3J0ZWRf
cG9ydChwb3J0X25hbWUpOgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHBvcnQgPSBmYWN0
b3J5LmdldChwb3J0X25hbWUpCisgICAgICAgIHBvcnQgPSBzZWxmLl90b29sLnBvcnRfZmFjdG9y
eS5nZXQocG9ydF9uYW1lKQogICAgICAgICBleHBlY3RhdGlvbnMgPSBzZWxmLl9leHBlY3RhdGlv
bnMocG9ydCkKICAgICAgICAgcGF0aCA9IHBvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19m
aWxlKCkKICAgICAgICAgc2VsZi5fdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwYXRo
LCBleHBlY3RhdGlvbnMucmVtb3ZlX3JlYmFzZWxpbmVkX3Rlc3RzKGV4cGVjdGF0aW9ucy5nZXRf
cmViYXNlbGluaW5nX2ZhaWx1cmVzKCkpKQpAQCAtMTg4LDE2ICsxODgsMTYgQEAgY2xhc3MgUmVi
YXNlbGluZUV4cGVjdGF0aW9ucyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgICAg
IGlmIG5vdCBidWlsZGVyX25hbWU6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgcHJpbnQg
IlJldHJpZXZpbmcgcmVzdWx0cyBmb3IgJXMgZnJvbSAlcy4iICUgKHBvcnRfbmFtZSwgYnVpbGRl
cl9uYW1lKQotICAgICAgICBmb3IgdGVzdF9uYW1lIGluIHNlbGYuX3Rlc3RzX3RvX3JlYmFzZWxp
bmUoZmFjdG9yeS5nZXQocG9ydF9uYW1lKSk6CisgICAgICAgIGZvciB0ZXN0X25hbWUgaW4gc2Vs
Zi5fdGVzdHNfdG9fcmViYXNlbGluZShzZWxmLl90b29sLnBvcnRfZmFjdG9yeS5nZXQocG9ydF9u
YW1lKSk6CiAgICAgICAgICAgICBzZWxmLl90b3VjaGVkX3Rlc3RfbmFtZXMuYWRkKHRlc3RfbmFt
ZSkKICAgICAgICAgICAgIHByaW50ICIgICAgJXMiICUgdGVzdF9uYW1lCiAgICAgICAgICAgICBz
ZWxmLl9ydW5fd2Via2l0X3BhdGNoKFsncmViYXNlbGluZS10ZXN0JywgYnVpbGRlcl9uYW1lLCB0
ZXN0X25hbWVdKQogCiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6
CiAgICAgICAgIHNlbGYuX3RvdWNoZWRfdGVzdF9uYW1lcyA9IHNldChbXSkKLSAgICAgICAgZm9y
IHBvcnRfbmFtZSBpbiBmYWN0b3J5LmFsbF9wb3J0X25hbWVzKCk6CisgICAgICAgIGZvciBwb3J0
X25hbWUgaW4gdG9vbC5wb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMoKToKICAgICAgICAgICAg
IHNlbGYuX3JlYmFzZWxpbmVfcG9ydChwb3J0X25hbWUpCi0gICAgICAgIGZvciBwb3J0X25hbWUg
aW4gZmFjdG9yeS5hbGxfcG9ydF9uYW1lcygpOgorICAgICAgICBmb3IgcG9ydF9uYW1lIGluIHRv
b2wucG9ydF9mYWN0b3J5LmFsbF9wb3J0X25hbWVzKCk6CiAgICAgICAgICAgICBzZWxmLl91cGRh
dGVfZXhwZWN0YXRpb25zX2ZpbGUocG9ydF9uYW1lKQogICAgICAgICBmb3IgdGVzdF9uYW1lIGlu
IHNlbGYuX3RvdWNoZWRfdGVzdF9uYW1lczoKICAgICAgICAgICAgIHByaW50ICJPcHRpbWl6aW5n
IGJhc2VsaW5lcyBmb3IgJXMuIiAlIHRlc3RfbmFtZQpAQCAtMjM2LDcgKzIzNiw3IEBAIGNsYXNz
IFJlYmFzZWxpbmUoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgIGRlZiBleGVjdXRl
KHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICBidWlsZGVyLCBidWlsZF9udW1i
ZXIgPSBzZWxmLl9idWlsZGVyX3RvX3B1bGxfZnJvbSgpCiAgICAgICAgIGJ1aWxkID0gYnVpbGRl
ci5idWlsZChidWlsZF9udW1iZXIpCi0gICAgICAgIHBvcnQgPSBmYWN0b3J5LmdldF9mcm9tX2J1
aWxkZXJfbmFtZShidWlsZGVyLm5hbWUoKSkKKyAgICAgICAgcG9ydCA9IHRvb2wucG9ydF9mYWN0
b3J5LmdldF9mcm9tX2J1aWxkZXJfbmFtZShidWlsZGVyLm5hbWUoKSkKIAogICAgICAgICBmb3Ig
dGVzdCBpbiBzZWxmLl90ZXN0c190b191cGRhdGUoYnVpbGQpOgogICAgICAgICAgICAgcmVzdWx0
c191cmwgPSBzZWxmLl9yZXN1bHRzX3VybF9mb3JfdGVzdChidWlsZCwgdGVzdCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVf
dW5pdHRlc3QucHkKaW5kZXggYTM2OWM5ZjE2YTVlNWZlNmMzMGU2YWU3OTdjOWUxMjIwOGJjY2Jl
Mi4uYmNiMDkyMWFhZjM4NTY1ZDlmMDY4MDBkNDFiNDRlODllNTNmZTI2MiAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3Qu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVf
dW5pdHRlc3QucHkKQEAgLTUxLDggKzUxLDE1IEBAIGNsYXNzIFRlc3RSZWJhc2VsaW5lKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2V4cGVjdGF0aW9ucyhzZWxm
KToKICAgICAgICAgY29tbWFuZCA9IFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMoKQogICAgICAgICB0
b29sID0gTW9ja1Rvb2woKQotICAgICAgICB0b29sLmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUo
c2hvdWxkX2xvZz1UcnVlKQogICAgICAgICBjb21tYW5kLmJpbmRfdG9fdG9vbCh0b29sKQorCisg
ICAgICAgIGZvciBwb3J0X25hbWUgaW4gdG9vbC5wb3J0X2ZhY3RvcnkuYWxsX3BvcnRfbmFtZXMo
KToKKyAgICAgICAgICAgIHBvcnQgPSB0b29sLnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lKQor
ICAgICAgICAgICAgdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwb3J0LnBhdGhfdG9f
dGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpLCAnJykKKworICAgICAgICAjIERvbid0IGVuYWJsZSBs
b2dnaW5nIHVudGlsIGFmdGVyIHdlIGNyZWF0ZSB0aGUgbW9jayBleHBlY3RhdGlvbiBmaWxlcyBh
cyBzb21lIFBvcnQuX19pbml0X18ncyBydW4gc3ViY29tbWFuZHMuCisgICAgICAgIHRvb2wuZXhl
Y3V0aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpCisKICAgICAgICAgZXhwZWN0
ZWRfc3Rkb3V0ID0gIiIiUmV0cmlldmluZyByZXN1bHRzIGZvciBjaHJvbWl1bS1jZy1tYWMtbGVv
cGFyZCBmcm9tIFdlYmtpdCBNYWMxMC41IChDRykuCiAgICAgdXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0Lmh0bWwKICAgICB1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnCkBAIC0xMTAsNCArMTE3LDQgQEAg
TU9DSyBydW5fY29tbWFuZDogWydlY2hvJywgJ29wdGltaXplLWJhc2VsaW5lcycsICd1c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QuaHRtbCcKIE1PQ0sgcnVuX2NvbW1hbmQ6IFsnZWNobycsICdvcHRp
bWl6ZS1iYXNlbGluZXMnLCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2ZyddLCBjd2Q9L21vY2stY2hl
Y2tvdXQKICIiIgogICAgICAgICBjb21tYW5kLl90ZXN0c190b19yZWJhc2VsaW5lID0gbGFtYmRh
IHBvcnQ6IFtdIGlmIG5vdCBwb3J0Lm5hbWUoKS5maW5kKCctZ3B1LScpID09IC0xIGVsc2UgWyd1
c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCcsICd1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnJ10K
LSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuZXhl
Y3V0ZSwgW01vY2tUb29sKCksIE5vbmUsIE5vbmVdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRf
c3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQorICAgICAgICBPdXRwdXRD
YXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29tbWFuZC5leGVjdXRlLCBbTm9uZSwgW10s
IHRvb2xdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRlcnI9
ZXhwZWN0ZWRfc3RkZXJyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL3JlYmFzZWxpbmVzZXJ2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvcmViYXNlbGluZXNlcnZlci5weQppbmRleCA5MDUzOGYxYzMxM2E2ZDkyZTIz
ZjA4NWExNjBlZTE1MjBhNGE4YzVlLi5lN2ZmODZhMTQ5ZDVjNWZiNDY3Y2JiYWQ0M2RiMWEzZjJi
ZmNlYzFhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cmViYXNlbGluZXNlcnZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcmViYXNlbGluZXNlcnZlci5weQpAQCAtMzYsNyArMzYsNiBAQCBpbXBvcnQgb3MucGF0
aAogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21t
b24ubmV0LnJlc3VsdHNqc29ucGFyc2VyIGltcG9ydCBmb3JfZWFjaF90ZXN0LCBKU09OVGVzdFJl
c3VsdAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpz
b25fcmVzdWx0c19nZW5lcmF0b3IKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1w
b3J0IGZhY3RvcnkKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5hYnN0cmFjdGxvY2Fsc2Vy
dmVyY29tbWFuZCBpbXBvcnQgQWJzdHJhY3RMb2NhbFNlcnZlckNvbW1hbmQKIGZyb20gd2Via2l0
cHkudG9vbC5zZXJ2ZXJzLnJlYmFzZWxpbmVzZXJ2ZXIgaW1wb3J0IGdldF90ZXN0X2Jhc2VsaW5l
cywgUmViYXNlbGluZUhUVFBTZXJ2ZXIsIFNUQVRFX05FRURTX1JFQkFTRUxJTkUKIApAQCAtODQs
NyArODMsNyBAQCBjbGFzcyBSZWJhc2VsaW5lU2VydmVyKEFic3RyYWN0TG9jYWxTZXJ2ZXJDb21t
YW5kKToKICAgICAgICAgcmVzdWx0c19qc29uX3BhdGggPSBmaWxlc3lzdGVtLmpvaW4ocmVzdWx0
c19kaXJlY3RvcnksICdmdWxsX3Jlc3VsdHMuanNvbicpCiAgICAgICAgIHJlc3VsdHNfanNvbiA9
IGpzb25fcmVzdWx0c19nZW5lcmF0b3IubG9hZF9qc29uKGZpbGVzeXN0ZW0sIHJlc3VsdHNfanNv
bl9wYXRoKQogCi0gICAgICAgIHBvcnQgPSBmYWN0b3J5LmdldCgpCisgICAgICAgIHBvcnQgPSB0
b29sLnBvcnRfZmFjdG9yeS5nZXQoKQogICAgICAgICBsYXlvdXRfdGVzdHNfZGlyZWN0b3J5ID0g
cG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKICAgICAgICAgcGxhdGZvcm1zID0gZmlsZXN5c3RlbS5s
aXN0ZGlyKGZpbGVzeXN0ZW0uam9pbihsYXlvdXRfdGVzdHNfZGlyZWN0b3J5LCAncGxhdGZvcm0n
KSkKICAgICAgICAgc2VsZi5fdGVzdF9jb25maWcgPSBUZXN0Q29uZmlnKHBvcnQsIGxheW91dF90
ZXN0c19kaXJlY3RvcnksIHJlc3VsdHNfZGlyZWN0b3J5LCBwbGF0Zm9ybXMsIGZpbGVzeXN0ZW0s
IHNjbSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dh
cmRlbmluZ3NlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dh
cmRlbmluZ3NlcnZlci5weQppbmRleCBjZTFiY2RlNTJmZTM5ZjgyOGMzMzk5NWYyMjA1ZWZkZTc1
ZWY2NGQyLi40MjVkMWNlYTc3NjU0ZjhhZTljYmQ4NzA3MTg4YzlkNmZiOTFmNmYzIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXIu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2Vy
dmVyLnB5CkBAIC0zMCw3ICszMCw2IEBAIGZyb20gd2Via2l0cHkudG9vbC5zZXJ2ZXJzLnJlZmxl
Y3Rpb25oYW5kbGVyIGltcG9ydCBSZWZsZWN0aW9uSGFuZGxlcgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMuY29udHJvbGxlcnMudGVzdF9leHBlY3RhdGlvbnNfZWRpdG9yIGltcG9ydCBCdWdN
YW5hZ2VyLCBUZXN0RXhwZWN0YXRpb25zRWRpdG9yCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5tb2RlbHMudGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0IFRlc3RFeHBlY3RhdGlvblBhcnNlciwg
VGVzdEV4cGVjdGF0aW9ucywgVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplcgogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZp
Z3VyYXRpb25Db252ZXJ0ZXIKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0
IGZhY3RvcnkKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJ1aWxkZXJz
CiAKIApAQCAtMTE2LDcgKzExNSw3IEBAIGNsYXNzIEdhcmRlbmluZ0hUVFBSZXF1ZXN0SGFuZGxl
cihSZWZsZWN0aW9uSGFuZGxlcik6CiAgICAgZGVmIF9leHBlY3RhdGlvbnNfdXBkYXRlcihzZWxm
KToKICAgICAgICAgIyBGSVhNRTogU2hvdWxkIHNwbGl0IGZhaWx1cmVfaW5mb19saXN0IGludG8g
bGlzdHMgcGVyIHBvcnQsIHRoZW4gZWRpdCBlYWNoIGV4cGVjdGF0aW9ucyBmaWxlIHNlcGFyYXRl
bHkuCiAgICAgICAgICMgRm9yIG5vdywgYXNzdW1lIENocm9taXVtIHBvcnQuCi0gICAgICAgIHBv
cnQgPSBmYWN0b3J5LmdldCgiY2hyb21pdW0td2luLXdpbjciKQorICAgICAgICBwb3J0ID0gc2Vs
Zi5zZXJ2ZXIudG9vbC5nZXQoImNocm9taXVtLXdpbi13aW43IikKICAgICAgICAgcmV0dXJuIEdh
cmRlbmluZ0V4cGVjdGF0aW9uc1VwZGF0ZXIoc2VsZi5zZXJ2ZXIudG9vbCwgcG9ydCkKIAogICAg
IGRlZiByb2xsb3V0KHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyX3VuaXR0ZXN0LnB5CmluZGV4IDY3
ZGI3Y2Q2MjczYThjMjcxYzZjZDM3NjMwNWQxZGFjZGNkYjg2ZjcuLjM0NDg2YTM3OGY0ODhkMGJl
ZDE1MGYxNDliMzBiMzQ4NmE2NGMzYWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXJfdW5pdHRlc3QucHkK
QEAgLTM1LDE4ICszNSwyMCBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiBpbXBvcnQgdW5pdHRlc3QK
IAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1
dENhcHR1cmUKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGZhY3RvcnkK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1w
b3J0ICoKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHdl
YmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0
cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkudG9vbC5z
ZXJ2ZXJzLmdhcmRlbmluZ3NlcnZlciBpbXBvcnQgKgogCiAKIGNsYXNzIFRlc3RQb3J0RmFjdG9y
eShvYmplY3QpOgorICAgICMgRklYTUU6IFdoeSBpcyB0aGlzIGEgY2xhc3MgbWV0aG9kPwogICAg
IEBjbGFzc21ldGhvZAogICAgIGRlZiBjcmVhdGUoY2xzKToKLSAgICAgICAgcmV0dXJuIGZhY3Rv
cnkuZ2V0KCJ0ZXN0LXdpbi14cCIpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAg
IHJldHVybiBob3N0LnBvcnRfZmFjdG9yeS5nZXQoInRlc3Qtd2luLXhwIikKIAogICAgIEBjbGFz
c21ldGhvZAogICAgIGRlZiBwYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoY2xzKToKQEAg
LTg3LDcgKzg5LDggQEAgY2xhc3MgVGVzdEdhcmRlbmluZ0hUVFBSZXF1ZXN0SGFuZGxlcihHYXJk
ZW5pbmdIVFRQUmVxdWVzdEhhbmRsZXIpOgogY2xhc3MgQnVpbGRDb3ZlcmFnZUV4dHJhcG9sYXRv
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2V4dHJhcG9sYXRlKHNlbGYp
OgogICAgICAgICAjIEZJWE1FOiBNYWtlIHRoaXMgdGVzdCBub3QgcmVseSBvbiBhY3R1YWwgKG5v
dCBtb2NrKSBwb3J0IG9iamVjdHMuCi0gICAgICAgIHBvcnQgPSBmYWN0b3J5LmdldCgnY2hyb21p
dW0td2luLXdpbjcnLCBOb25lKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICBw
b3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCdjaHJvbWl1bS13aW4td2luNycsIE5vbmUpCiAg
ICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb25maWd1cmF0aW9uQ29udmVydGVyKHBvcnQuYWxsX3Rl
c3RfY29uZmlndXJhdGlvbnMoKSwgcG9ydC5jb25maWd1cmF0aW9uX3NwZWNpZmllcl9tYWNyb3Mo
KSkKICAgICAgICAgZXh0cmFwb2xhdG9yID0gQnVpbGRDb3ZlcmFnZUV4dHJhcG9sYXRvcihjb252
ZXJ0ZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4dHJhcG9sYXRvci5leHRyYXBvbGF0
ZV90ZXN0X2NvbmZpZ3VyYXRpb25zKCJXZWJraXQgV2luIiksIHNldChbVGVzdENvbmZpZ3VyYXRp
b24odmVyc2lvbj0neHAnLCBhcmNoaXRlY3R1cmU9J3g4NicsIGJ1aWxkX3R5cGU9J3JlbGVhc2Un
LCBncmFwaGljc190eXBlPSdjcHUnKV0pKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>