<?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>64922</bug_id>
          
          <creation_ts>2011-07-20 20:52:30 -0700</creation_ts>
          <short_desc>Add a way to edit test expectations.</short_desc>
          <delta_ts>2011-08-03 08:33:46 -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>
          
          <blocked>64184</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>440230</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-20 20:52:30 -0700</bug_when>
    <thetext>Add a way to edit test expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440238</commentid>
    <comment_count>1</comment_count>
      <attachid>101552</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-20 21:22:46 -0700</bug_when>
    <thetext>Created attachment 101552
WIP: Still lots to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445587</commentid>
    <comment_count>2</comment_count>
      <attachid>102710</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-02 16:15:36 -0700</bug_when>
    <thetext>Created attachment 102710
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445590</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-02 16:18:40 -0700</bug_when>
    <thetext>Attachment 102710 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1

Tools/Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:603:  whitespace before &apos;]&apos;  [pep8/E202] [5]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445596</commentid>
    <comment_count>4</comment_count>
      <attachid>102710</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-02 16:22:29 -0700</bug_when>
    <thetext>Comment on attachment 102710
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:588
&gt; +class BugManager:
&gt; +    &quot;&quot;&quot;A simple interface for managing bugs from TestExpectationsEditor.&quot;&quot;&quot;
&gt; +    def close_bug(self, bug_id, reference_bug_id=None):
&gt; +        pass
&gt; +
&gt; +    def create_bug(self):
&gt; +        return &apos;BUG_NEWLY_CREATED&apos;

Is this meant to be an interface?  If so, you should consider raising NotImplemented exceptions (e.g., like http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/tool/bot/queueengine.py#L46 ).

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:591
&gt; +class TestExpectationsEditor:

We use new-style classes that derive from object:

class TestExpectationsEditor(object):

I bet this is a common mistake in this code.

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:597
&gt; +    def __init__(self, expectation_lines, bug_manager=None):
&gt; +        self._bug_manager = bug_manager or BugManager()

I&apos;d skip this line and either require the argument or handle the case when it&apos;s None.

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:633
&gt; +                if not expectation_line.matching_configurations:
&gt; +                    self._bug_manager.close_bug(expectation_line.parsed_bug_modifier)

I&apos;m not 100% sure this class should be effecting the bug database.  Maybe it should return a list of bugs to close?  Although, maybe this is a nice design.  I&apos;m not sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445872</commentid>
    <comment_count>5</comment_count>
      <attachid>102710</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-03 08:09:31 -0700</bug_when>
    <thetext>Comment on attachment 102710
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:588
&gt;&gt; +        return &apos;BUG_NEWLY_CREATED&apos;
&gt; 
&gt; Is this meant to be an interface?  If so, you should consider raising NotImplemented exceptions (e.g., like http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/tool/bot/queueengine.py#L46 ).

It&apos;s both an interface and a mock object now. I&apos;ll make it an interface and move mock to the test.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:591
&gt;&gt; +class TestExpectationsEditor:
&gt; 
&gt; We use new-style classes that derive from object:
&gt; 
&gt; class TestExpectationsEditor(object):
&gt; 
&gt; I bet this is a common mistake in this code.

Whoa. I just learned about the new-style classes. Thanks!

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:597
&gt;&gt; +        self._bug_manager = bug_manager or BugManager()
&gt; 
&gt; I&apos;d skip this line and either require the argument or handle the case when it&apos;s None.

yep.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:633
&gt;&gt; +                    self._bug_manager.close_bug(expectation_line.parsed_bug_modifier)
&gt; 
&gt; I&apos;m not 100% sure this class should be effecting the bug database.  Maybe it should return a list of bugs to close?  Although, maybe this is a nice design.  I&apos;m not sure.

Yeah, this is incremental first step. I am not sure either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445883</commentid>
    <comment_count>6</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-03 08:33:46 -0700</bug_when>
    <thetext>Committed r92282: &lt;http://trac.webkit.org/changeset/92282&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101552</attachid>
            <date>2011-07-20 21:22:46 -0700</date>
            <delta_ts>2011-08-02 16:15:33 -0700</delta_ts>
            <desc>WIP: Still lots to do.</desc>
            <filename>bug-64922-20110720212245.patch</filename>
            <type>text/plain</type>
            <size>12103</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE0MjEKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZTg4NDI1ZDZmMTAzM2Q2Yzk3ZTM5Y2UzZTBkOGFhMDky
NDA5YzIyLi43Y2IxYmNhMTg0Mjk4NzQ4NTY4ZjYwNWEzM2FjZjg5YzkwNTRlZWM4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTEtMDctMjAgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4K
KworICAgICAgICBBZGQgYSB3YXkgdG8gZWRpdCB0ZXN0IGV4cGVjdGF0aW9ucy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTIyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0
ZXN0LnB5OgorCiAyMDExLTA3LTIwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBNYWtlIGtpbGwtb2xkLXByb2Nlc3NlcyBraWxsIGh0dHBkIG9uIG1hYwpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhw
ZWN0YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxz
L3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IDIzMGFkZTk1OTVkMjlmYjVkNTk3NTkzNzQ0MGVk
ZGIxMWY2NmE5NmMuLjhlMGI4NWViMjJlNmJhNDhjNThhZGZjYmJiOTUyNmJhZmY0ZDQ5ZGYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0
X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkKQEAgLTE0OCw2ICsxNDgsNyBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyOgogICAgIGRlZiB0b19zdHJpbmcoY2xzLCBleHBlY3Rh
dGlvbik6CiAgICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgIGlmIGV4cGVjdGF0aW9uLmlzX21h
bGZvcm1lZCgpOgorICAgICAgICAgICAgIyBGSVhNRTogU2VyaWFsaXppbmcgbWFsZm9ybWVkLCBi
dXQgcGFyc2VkIGV4cGVjdGF0aW9uIGlzIG5vdCBhbHdheXMganVzdCBwcmludGluZyBpdHMgY29t
bWVudC4KICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZXhwZWN0YXRpb24uY29tbWVudCkKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIGV4cGVjdGF0aW9uLm5hbWUgaXMgTm9uZToKQEAg
LTE5Niw4ICsxOTcsOSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25QYXJzZXI6CiAgICAgICAgIGlm
IHNlbGYuX2NoZWNrX3BhdGhfZG9lc19ub3RfZXhpc3QoZXhwZWN0YXRpb25fbGluZSk6CiAgICAg
ICAgICAgICByZXR1cm4KIAotICAgICAgICBleHBlY3RhdGlvbl9saW5lLnBhdGggPSBzZWxmLl9w
b3J0Lm5vcm1hbGl6ZV90ZXN0X25hbWUoZXhwZWN0YXRpb25fbGluZS5uYW1lKQotICAgICAgICBz
ZWxmLl9jb2xsZWN0X21hdGNoaW5nX3Rlc3RzKGV4cGVjdGF0aW9uX2xpbmUpCisgICAgICAgIGlm
IGV4cGVjdGF0aW9uX2xpbmUubmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGV4cGVjdGF0
aW9uX2xpbmUucGF0aCA9IHNlbGYuX3BvcnQubm9ybWFsaXplX3Rlc3RfbmFtZShleHBlY3RhdGlv
bl9saW5lLm5hbWUpCisgICAgICAgICAgICBzZWxmLl9jb2xsZWN0X21hdGNoaW5nX3Rlc3RzKGV4
cGVjdGF0aW9uX2xpbmUpCiAKICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5wYXJzZWRfbW9kaWZp
ZXJzID0gW21vZGlmaWVyIGZvciBtb2RpZmllciBpbiBleHBlY3RhdGlvbl9saW5lLm1vZGlmaWVy
cyBpZiBtb2RpZmllciBpbiBUZXN0RXhwZWN0YXRpb25zLk1PRElGSUVSU10KICAgICAgICAgc2Vs
Zi5fcGFyc2VfZXhwZWN0YXRpb25zKGV4cGVjdGF0aW9uX2xpbmUpCkBAIC0zNDgsNiArMzUwLDIz
IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbkxpbmU6CiAgICAgZGVmIGlzX2ludmFsaWQoc2VsZik6
CiAgICAgICAgIHJldHVybiBzZWxmLmlzX21hbGZvcm1lZCgpIG9yIGxlbihzZWxmLndhcm5pbmdz
KSA+IDAKIAorICAgIGRlZiBpbmNsdWRlc19hbGxfcG9ydHMoc2VsZiwgdGVzdF9jb25maWcpOgor
ICAgICAgICBwcmludCAiPj5UZXN0RXhwZWN0YXRpb25MaW5lLmluY2x1ZGVzX2FsbF9wb3J0cyh0
ZXN0X2NvbmZpZz0lcykiICUgdGVzdF9jb25maWcKKyAgICAgICAgIyBGSVhNRTogSW1wbGVtZW50
ISEhISExMTEKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaW5jbHVkZXNfcG9ydChz
ZWxmLCB0ZXN0X2NvbmZpZyk6CisgICAgICAgIHByaW50ICI+PlRlc3RFeHBlY3RhdGlvbkxpbmUu
aW5jbHVkZXNfcG9ydCh0ZXN0X2NvbmZpZz0lcykiICUgdGVzdF9jb25maWcKKyAgICAgICAgY2Fs
Y3VsYXRvciA9IFNwZWNpZmljaXR5Q2FsY3VsYXRvcih0ZXN0X2NvbmZpZykKKyAgICAgICAgIyBG
SVhNRTogVGhpcyBzaG91bGQganVzdCByZXR1cm4gYSB2YWx1ZSEhISExMQorICAgICAgICBjYWxj
dWxhdG9yLmNhbGN1bGF0ZShzZWxmKQorICAgICAgICByZXR1cm4gc2VsZi5zcGVjaWZpY2l0eSAh
PSBTcGVjaWZpY2l0eUNhbGN1bGF0b3IuSU5WQUxJRAorCisgICAgZGVmIGluY2x1ZGVzX3BvcnRz
X290aGVyX3RoYW4oc2VsZiwgdGVzdF9jb25maWcpOgorICAgICAgICBwcmludCAiPj5UZXN0RXhw
ZWN0YXRpb25MaW5lLmluY2x1ZGVzX3BvcnRzX290aGVyX3RoYW4odGVzdF9jb25maWc9JXMpIiAl
IHRlc3RfY29uZmlnCisgICAgICAgICMgRklYTUU6IEltcGxlbWVudCEhISEhMTExCisgICAgICAg
IHJldHVybiBGYWxzZQorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGNyZWF0ZV9wYXNzaW5n
X2V4cGVjdGF0aW9uKGNscywgdGVzdCk6CiAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUgPSBUZXN0
RXhwZWN0YXRpb25MaW5lKCkKQEAgLTU1Niw2ICs1NzUsODkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0
aW9uc01vZGVsOgogICAgICAgICByZXR1cm4gVHJ1ZQogCiAKKyMgRklYTUU6IE5hbWUgVEJEISEh
MTEKKyMgRklYTUU6IE1vdmUgdG8gaXRzIG93biBmaWxlISEhMTEKK2NsYXNzIFRlc3RFeHBlY3Rh
dGlvbnNFZGl0b3I6CisgICAgIiIiCisgICAgVGhlIGVkaXRvciBhc3N1bWVzIHRoYXQgdGhlIGV4
cGVjdGF0aW9uIGRhdGEgaXMgZXJyb3ItZnJlZSwgdGhhdCBpcyBlYWNoIHRlc3QgaGFzIG9ubHkg
b25lIGV4cGVjdGF0aW9uIHBlciBjb25maWd1cmF0aW9uLgorICAgICIiIgorICAgICMgRklYTUU6
IE5lZWQgYSB3YXkgdG8gcmVtb3ZlIGV4cGVjdGF0aW9uIG9mIGZsYWtpbmVzcy4KKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBleHBlY3RhdGlvbl9saW5lcywgcGxhY2VfZWRpdHNfbmV4dF90b19y
ZWxhdGVkX2xpbmVzPUZhbHNlKToKKyAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25fbGluZXMgPSBl
eHBlY3RhdGlvbl9saW5lcworICAgICAgICBzZWxmLl90ZXN0X2luZGV4ID0ge30KKyAgICAgICAg
Zm9yIGV4cGVjdGF0aW9uX2xpbmUgaW4gZXhwZWN0YXRpb25fbGluZXM6CisgICAgICAgICAgICBz
ZWxmLl90ZXN0X2luZGV4LnNldGRlZmF1bHQoZXhwZWN0YXRpb25fbGluZS5wYXRoLCBbXSkuYXBw
ZW5kKGV4cGVjdGF0aW9uX2xpbmUpCisKKyAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBzb21laG93
IGFsbG93IHJlbW92aW5nIGV4cGVjdGF0aW9ucyBmb3IgYm90aCBwcmVjaXNlbHkgdGhpcyA8dGVz
dF9jb25maWc+IGFuZCBhbGwgY29uZmlncyB3aXRoaW4gdGhlIHNhbWUgbWFjcm8uCisgICAgZGVm
IHJlbW92ZV9leHBlY3RhdGlvbihzZWxmLCB0ZXN0LCB0ZXN0X2NvbmZpZyk6CisgICAgICAgICIi
IlJlbW92ZXMgYW55IGV4aXN0aW5nIGV4cGVjdGF0aW9ucyBmb3IgPHRlc3Q+IGFuZCBwbGF0Zm9y
bSA8dGVzdF9jb25maWc+LiIiIgorICAgICAgICAjIEZJWE1FOiBGbGFreSB0ZXN0cyBhcmUgc3Bl
Y2lhbC4gVGhleSBzaG91bGQgYmUgaWdub3JlZCBieSB0aGlzIG1ldGhvZC4KKyAgICAgICAgIyBG
SVhNRTogU2hvdWxkIHRoaXMgY2xvc2UgYnVncywgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5lcyBy
ZW1vdmVkPworICAgICAgICAjIEZJWE1FOiBUaGlzIG9ubHkgd29ya3MgZm9yIGV4YWN0IG1hdGNo
ZXMuIE11c3QgZml4IGZvciBkaXJlY3RvcnkgZXhwZWN0YXRpb25zLgorICAgICAgICBmb3IgZXhw
ZWN0YXRpb25fbGluZSBpbiBzZWxmLl9nZXRfZXhwZWN0YXRpb25fbGluZXModGVzdCk6CisgICAg
ICAgICAgICBwcmludCAiPj5leHBlY3RhdGlvbl9saW5lPSVzIiAlIGV4cGVjdGF0aW9uX2xpbmUu
bGluZV9udW1iZXIKKyAgICAgICAgICAgIGlmIGV4cGVjdGF0aW9uX2xpbmUuaW5jbHVkZXNfYWxs
X3BvcnRzKHRlc3RfY29uZmlnKToKKyAgICAgICAgICAgICAgICAjIEFDVElPTjogQWRkIGFsbCBt
b2RpZmllcnMgYnV0IHRoZSBvbmUgZm9yIDx0ZXN0X2NvbmZpZz4gb24gZXhpc3RpbmcgbGluZSBv
ZiA8dGVzdD4KKyAgICAgICAgICAgICAgICBzZWxmLl9hZGRfYWxsX21vZGlmaWVyc19leGNlcHQo
ZXhwZWN0YXRpb25fbGluZSwgdGVzdF9jb25maWcpCisgICAgICAgICAgICAgICAgcmV0dXJuCisK
KyAgICAgICAgICAgIGlmIGV4cGVjdGF0aW9uX2xpbmUuaW5jbHVkZXNfcG9ydCh0ZXN0X2NvbmZp
Zyk6CisgICAgICAgICAgICAgICAgaWYgZXhwZWN0YXRpb25fbGluZS5pbmNsdWRlc19wb3J0c19v
dGhlcl90aGFuKHRlc3RfY29uZmlnKToKKyAgICAgICAgICAgICAgICAgICAgIyBBQ1RJT046IFJl
bW92ZSBtb2RpZmllciBmb3IgPHRlc3RfY29uZmlnPiBvbiBleGlzdGluZyBsaW5lIG9mIDx0ZXN0
PgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZW1vdmVfbW9kaWZpZXIoZXhwZWN0YXRpb25f
bGluZSwgdGVzdF9jb25maWcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICAgICAgIyBBQ1RJT046IFJlbW92ZSBhIGxpbmUgb2YgPHRlc3Q+CisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3JlbW92ZV9saW5lKGV4cGVjdGF0aW9uX2xpbmUpCisgICAgICAgICAgICAgICAg
cmV0dXJuCisKKyAgICBkZWYgdXBkYXRlX2V4cGVjdGF0aW9uKHNlbGYsIHRlc3RfY29uZmlnLCB0
ZXN0LCBleHBlY3RhdGlvbiwgYnVnX2lkPU5vbmUpOgorICAgICAgICAiIiJCTEFIIEJMQUgKKyAg
ICAgICAgaWYgPGJ1Z19pZD4gaXMgbm90IHN1cHBsaWVkLCBhc3N1bWVzIGEgYnJhbmQgbmV3IGlz
c3VlLgorICAgICAgICAiIiIKKyAgICAgICAgIyBGSVhNRTogRmxha3kgdGVzdHMgYXJlIHNwZWNp
YWwgY2FzZS4gRm9yIHRoZW0sIHdlIG9ubHkgYWRkIGV4cGVjdGF0aW9ucyBhcyBtb3JlIHdheXMg
b2YgZmxha2luZXNzLgorICAgICAgICAjIEZJWE1FOiBUaGlzIG9ubHkgd29ya3MgZm9yIGV4YWN0
IG1hdGNoZXMuIE11c3QgZml4IGZvciBkaXJlY3RvcnkgZXhwZWN0YXRpb25zLgorICAgICAgICAj
IEZJWE1FOiBTaG91bGQgcmVtb3ZpbmcgZXhwZWN0YXRpb24gYmUgaW1wbGljaXQ/IElzIHRoZXJl
IGV2ZXIgYSBjYXNlIHdoZW4gSSBkb24ndCB3YW50IHRvIF91cGRhdGVfIGV4cGVjdGF0aW9uPwor
ICAgICAgICBzZWxmLnJlbW92ZV9leHBlY3RhdGlvbih0ZXN0X2NvbmZpZywgdGVzdCkKKyAgICAg
ICAgaWYgYnVnX2lkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZm9yIGV4cGVjdGF0aW9uX2xp
bmUgaW4gc2VsZi5fZ2V0X2V4cGVjdGF0aW9uX2xpbmVzKHRlc3QpOgorICAgICAgICAgICAgICAg
IGlmIGV4cGVjdGF0aW9uX2xpbmUuaGFzX2J1Z19pZChidWdfaWQpOgorICAgICAgICAgICAgICAg
ICAgICBpZiBleHBlY3RhdGlvbl9saW5lLmluY2x1ZGVzX2FsbF9wb3J0c19idXQodGVzdF9jb25m
aWcpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBBQ1RJT046IFJlbW92ZSBhbGwgbW9kaWZp
ZXJzIG9uIGV4aXN0aW5nIGxpbmUgb2YgPHRlc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9jbGVhcl9tb2RpZmllcnMoZXhwZWN0YXRpb25fbGluZSkKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgQUNUSU9OOiBBZGQgbW9kaWZpZXIg
Zm9yIDx0ZXN0X2NvbmZpZz4gb24gZXhpc3RpbmcgbGluZSBvZiA8dGVzdD4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2FkZF9tb2RpZmllcihleHBlY3RhdGlvbl9saW5lLCBleHBlY3Rh
dGlvbiwgdGVzdF9jb25maWcpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAg
ICMgQUNUSU9OOiBBZGQgbmV3IGxpbmUgZm9yIDx0ZXN0PiB3aXRoIGV4cGVjdGF0aW9uIDxleHBl
Y3RhdGlvbj4gYW5kIG1vZGlmaWVyIGZvciA8dGVzdF9jb25maWc+CisgICAgICAgIHNlbGYuX2Fk
ZF9saW5lKHRlc3QsIHRlc3RfY29uZmlnLCBleHBlY3RhdGlvbikKKworICAgIGRlZiBfZ2V0X2V4
cGVjdGF0aW9uX2xpbmVzKHNlbGYsIHRlc3QpOgorICAgICAgICAiIiJSZXR1cm5zIGEgbGlzdCBU
ZXN0RXhwZWN0YXRpb25MaW5lIGluc3RhbmNlcyBtYXRjaGluZyBnaXZlbiA8dGVzdD4gcGF0aCBh
Y3Jvc3MgYWxsIHBvcnRzLiIiIgorICAgICAgICBwcmludCAiPj5UZXN0RXhwZWN0YXRpb25zRWRp
dG9yLl9nZXRfZXhwZWN0YXRpb25fbGluZXModGVzdD0lcykiICUgKHRlc3QpCisgICAgICAgIHJl
dHVybiBzZWxmLl90ZXN0X2luZGV4LmdldCh0ZXN0LCBbXSkKKworICAgIGRlZiBfYWRkX2xpbmUo
c2VsZiwgdGVzdCwgdGVzdF9jb25maWcsIGV4cGVjdGF0aW9uKToKKyAgICAgICAgcHJpbnQgIj4+
VGVzdEV4cGVjdGF0aW9uc0VkaXRvci5fYWRkX2xpbmUodGVzdD0lcywgdGVzdF9jb25maWc9JXMs
IGV4cGVjdGF0aW9uPSVzKSIgJSAodGVzdCwgdGVzdF9jb25maWcsIGV4cGVjdGF0aW9uKQorCisg
ICAgZGVmIF9yZW1vdmVfbGluZShzZWxmLCBleHBlY3RhdGlvbl9saW5lKToKKyAgICAgICAgcHJp
bnQgIj4+VGVzdEV4cGVjdGF0aW9uc0VkaXRvci5fcmVtb3ZlX2xpbmUoZXhwZWN0YXRpb25fbGlu
ZT0lcykiICUgKGV4cGVjdGF0aW9uX2xpbmUpCisgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9uX2xp
bmVzLnJlbW92ZShleHBlY3RhdGlvbl9saW5lKQorCisgICAgZGVmIF9hZGRfbW9kaWZpZXIoc2Vs
ZiwgZXhwZWN0YXRpb25fbGluZSwgZXhwZWN0YXRpb24sIHRlc3RfY29uZmlnKToKKyAgICAgICAg
cHJpbnQgIj4+VGVzdEV4cGVjdGF0aW9uc0VkaXRvci5fYWRkX21vZGlmaWVyKGV4cGVjdGF0aW9u
X2xpbmU9JXMsIGV4cGVjdGF0aW9uPSVzLCB0ZXN0X2NvbmZpZz0lcykiICUgKGV4cGVjdGF0aW9u
X2xpbmUsIGV4cGVjdGF0aW9uLCB0ZXN0X2NvbmZpZykKKworICAgIGRlZiBfcmVtb3ZlX21vZGlm
aWVyKHNlbGYsIGV4cGVjdGF0aW9uX2xpbmUsIHRlc3RfY29uZmlnKToKKyAgICAgICAgcHJpbnQg
Ij4+VGVzdEV4cGVjdGF0aW9uc0VkaXRvci5fcmVtb3ZlX21vZGlmaWVyKGV4cGVjdGF0aW9uX2xp
bmU9JXMsIHRlc3RfY29uZmlnPSVzKSIgJSAoZXhwZWN0YXRpb25fbGluZSwgdGVzdF9jb25maWcp
CisKKyAgICBkZWYgX2NsZWFyX21vZGlmaWVycyhzZWxmLCBleHBlY3RhdGlvbl9saW5lKToKKyAg
ICAgICAgcHJpbnQgIj4+VGVzdEV4cGVjdGF0aW9uc0VkaXRvci5fY2xlYXJfbW9kaWZpZXJzKGV4
cGVjdGF0aW9uX2xpbmU9JXMpIiAlIChleHBlY3RhdGlvbl9saW5lKQorCisgICAgZGVmIF9hZGRf
YWxsX21vZGlmaWVyc19leGNlcHQoc2VsZiwgZXhwZWN0YXRpb25fbGluZSwgdGVzdF9jb25maWcp
OgorICAgICAgICBwcmludCAiPj5UZXN0RXhwZWN0YXRpb25zRWRpdG9yLl9hZGRfYWxsX21vZGlm
aWVyc19leGNlcHQoZXhwZWN0YXRpb25fbGluZT0lcywgdGVzdF9jb25maWc9JXMpIiAlIChleHBl
Y3RhdGlvbl9saW5lLCB0ZXN0X2NvbmZpZykKKworCiBjbGFzcyBUZXN0RXhwZWN0YXRpb25zOgog
ICAgICIiIlRlc3QgZXhwZWN0YXRpb25zIGNvbnNpc3Qgb2YgbGluZXMgd2l0aCBzcGVjaWZpY2F0
aW9ucyBvZiB3aGF0CiAgICAgdG8gZXhwZWN0IGZyb20gbGF5b3V0IHRlc3QgY2FzZXMuIFRoZSB0
ZXN0IGNhc2VzIGNhbiBiZSBkaXJlY3RvcmllcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0
YXRpb25zX3VuaXR0ZXN0LnB5CmluZGV4IDUzZDkwZTQ0N2UxOWZkODIyMWM3MjA3ODRjZWE3NDY4
ZGUzMTllMGYuLmU0NzI5MjA0NjhlYTEyOTVlMzcwZTA2MWMwN2ZkNTEwOGM3NmE1MTQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4
cGVjdGF0aW9uc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKQEAgLTUyNCw2ICs1
MjQsMTYgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uUGFyc2VyVGVzdHModW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleHBlY3RhdGlvbi5leHBlY3RhdGlv
bnMpLCAnW1wnYmF6XCddJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0YXRp
b24uZXJyb3JzKSwgMCkKIAorICAgIGRlZiB0ZXN0X3BhcnNlX2VtcHR5X3N0cmluZyhzZWxmKToK
KyAgICAgICAgdGVzdF9wb3J0ID0gcG9ydC5nZXQoJ3Rlc3Qtd2luLXhwJywgTm9uZSkKKyAgICAg
ICAgdGVzdF9wb3J0LnRlc3RfZXhpc3RzID0gbGFtYmRhIHRlc3Q6IFRydWUKKyAgICAgICAgdGVz
dF9jb25maWcgPSB0ZXN0X3BvcnQudGVzdF9jb25maWd1cmF0aW9uKCkKKyAgICAgICAgZnVsbF90
ZXN0X2xpc3QgPSBbXQorICAgICAgICBleHBlY3RhdGlvbl9saW5lcyA9IFRlc3RFeHBlY3RhdGlv
blBhcnNlci50b2tlbml6ZSgnJykKKyAgICAgICAgcGFyc2VyID0gVGVzdEV4cGVjdGF0aW9uUGFy
c2VyKHRlc3RfcG9ydCwgdGVzdF9jb25maWcsIGZ1bGxfdGVzdF9saXN0LCBhbGxvd19yZWJhc2Vs
aW5lX21vZGlmaWVyPUZhbHNlKQorICAgICAgICBwYXJzZXIucGFyc2UoZXhwZWN0YXRpb25fbGlu
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleHBlY3RhdGlvbl9saW5lLmlzX2ludmFsaWQo
KSkKKwogCiBjbGFzcyBUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyVGVzdHModW5pdHRlc3QuVGVz
dENhc2UpOgogICAgIGRlZiBhc3NlcnRfcm91bmRfdHJpcChzZWxmLCBpbl9zdHJpbmcsIGV4cGVj
dGVkX3N0cmluZz1Ob25lKToKQEAgLTYwMCw1ICs2MTAsNjEgQEAgY2xhc3MgVGVzdEV4cGVjdGF0
aW9uU2VyaWFsaXplclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3Nl
cnRfcm91bmRfdHJpcCgnRk9PIDogICAgICAgYmFyID0gICAgQkFaIC8vIFF1eC4nLCAnRk9PIDog
YmFyID0gQkFaIC8vIFF1eC4nKQogICAgICAgICBzZWxmLmFzc2VydF9yb3VuZF90cmlwKCdGT08g
OiAgICAgICBiYXIgICAgID0gICAgQkFaIC8vIFF1eC4nLCAnRk9PIDogYmFyID0gQkFaIC8vIFF1
eC4nKQogCisKK2NsYXNzIFRlc3RFeHBlY3RhdGlvbkVkaXRvclRlc3RzKHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICBkZWYgYXNzZXJ0X3JlbW92ZV9yb3VudHJpcChzZWxmLCB0ZXN0X3BvcnQsIGlu
X3N0cmluZywgdGVzdCwgZXhwZWN0ZWRfc3RyaW5nKToKKyAgICAgICAgdGVzdF9jb25maWcgPSB0
ZXN0X3BvcnQudGVzdF9jb25maWd1cmF0aW9uKCkKKyAgICAgICAgZnVsbF90ZXN0X2xpc3QgPSBb
CisgICAgICAgICAgICAnZmFzdC9ldmVudHMvYmFyLmh0bWwnLAorICAgICAgICAgICAgJ2Zhc3Qv
ZXZlbnRzL2JhcjEuaHRtbCcKKyAgICAgICAgXQorICAgICAgICBleHBlY3RhdGlvbl9saW5lcyA9
IFRlc3RFeHBlY3RhdGlvblBhcnNlci50b2tlbml6ZV9saXN0KGluX3N0cmluZykKKyAgICAgICAg
cGFyc2VyID0gVGVzdEV4cGVjdGF0aW9uUGFyc2VyKHRlc3RfcG9ydCwgdGVzdF9jb25maWcsIGZ1
bGxfdGVzdF9saXN0LCBhbGxvd19yZWJhc2VsaW5lX21vZGlmaWVyPUZhbHNlKQorICAgICAgICBm
b3IgZXhwZWN0YXRpb25fbGluZSBpbiBleHBlY3RhdGlvbl9saW5lczoKKyAgICAgICAgICAgIGlm
IG5vdCBleHBlY3RhdGlvbl9saW5lLmlzX21hbGZvcm1lZCgpOgorICAgICAgICAgICAgICAgIHBh
cnNlci5wYXJzZShleHBlY3RhdGlvbl9saW5lKQorICAgICAgICBlZGl0b3IgPSBUZXN0RXhwZWN0
YXRpb25zRWRpdG9yKGV4cGVjdGF0aW9uX2xpbmVzKQorICAgICAgICBlZGl0b3IucmVtb3ZlX2V4
cGVjdGF0aW9uKHRlc3QsIHRlc3RfY29uZmlnKQorICAgICAgICByZXN1bHQgPSBUZXN0RXhwZWN0
YXRpb25TZXJpYWxpemVyLmxpc3RfdG9fc3RyaW5nKGV4cGVjdGF0aW9uX2xpbmVzKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHQsIGV4cGVjdGVkX3N0cmluZykKKworICAgIGRlZiB0
ZXN0X3JlbW92ZV9saW5lKHNlbGYpOgorICAgICAgICB0ZXN0X3BvcnQgPSBwb3J0LmdldCgndGVz
dC13aW4teHAnLCBOb25lKQorICAgICAgICB0ZXN0X3BvcnQudGVzdF9leGlzdHMgPSBsYW1iZGEg
dGVzdDogVHJ1ZQorCisgICAgICAgIHNlbGYuYXNzZXJ0X3JlbW92ZV9yb3VudHJpcCh0ZXN0X3Bv
cnQsICIiIgorWFAgUkVMRUFTRSA6IGZhc3QvZXZlbnRzL2Jhci5odG1sID0gSU1BR0UKK1dJTiA6
IGZhc3QvZXZlbnRzL2JhcjEuaHRtbCA9IElNQUdFIiIiLCAnZmFzdC9ldmVudHMvYmFyLmh0bWwn
LCAiIiIKK1dJTiA6IGZhc3QvZXZlbnRzL2JhcjEuaHRtbCA9IElNQUdFIiIiKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0X3JlbW92ZV9yb3VudHJpcCh0ZXN0X3BvcnQsICIiIgorWFAgREVCVUcgOiBm
YXN0L2V2ZW50cy9iYXIuaHRtbCA9IElNQUdFCitXSU4gOiBmYXN0L2V2ZW50cy9iYXIxLmh0bWwg
PSBJTUFHRSIiIiwgJ2Zhc3QvZXZlbnRzL2Jhci5odG1sJywgIiIiCitYUCBERUJVRyA6IGZhc3Qv
ZXZlbnRzL2Jhci5odG1sID0gSU1BR0UKK1dJTiA6IGZhc3QvZXZlbnRzL2JhcjEuaHRtbCA9IElN
QUdFIiIiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X3JlbW92ZV9yb3VudHJpcCh0ZXN0X3BvcnQs
ICIiIgorTUFDIDogZmFzdC9ldmVudHMvYmFyLmh0bWwgPSBJTUFHRQorV0lOIDogZmFzdC9ldmVu
dHMvYmFyMS5odG1sID0gSU1BR0UiIiIsICdmYXN0L2V2ZW50cy9iYXIuaHRtbCcsICAiIiIKK01B
QyA6IGZhc3QvZXZlbnRzL2Jhci5odG1sID0gSU1BR0UKK1dJTiA6IGZhc3QvZXZlbnRzL2JhcjEu
aHRtbCA9IElNQUdFIiIiKQorCisgICAgZGVmIHRlc3RfYWRkX2FsbF9tb2RpZmllcnNfZXhjZXB0
KHNlbGYpOgorICAgICAgICB0ZXN0X3BvcnQgPSBwb3J0LmdldCgndGVzdC13aW4teHAnLCBOb25l
KQorICAgICAgICB0ZXN0X3BvcnQudGVzdF9leGlzdHMgPSBsYW1iZGEgdGVzdDogVHJ1ZQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0X3JlbW92ZV9yb3VudHJpcCh0ZXN0X3BvcnQsICIiIgorV0lOIDog
ZmFzdC9ldmVudHMvYmFyLmh0bWwgPSBJTUFHRQorV0lOIDogZmFzdC9ldmVudHMvYmFyMS5odG1s
ID0gSU1BR0UiIiIsICdmYXN0L2V2ZW50cy9iYXIuaHRtbCcsICIiIgorV0lONyBWSVNUQSA6IGZh
c3QvZXZlbnRzL2Jhci5odG1sID0gSU1BR0UKK1dJTiA6IGZhc3QvZXZlbnRzL2JhcjEuaHRtbCA9
IElNQUdFIiIiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X3JlbW92ZV9yb3VudHJpcCh0ZXN0X3Bv
cnQsICIiIgorWFAgOiBmYXN0L2V2ZW50cy9iYXIuaHRtbCA9IElNQUdFCitXSU4gOiBmYXN0L2V2
ZW50cy9iYXIxLmh0bWwgPSBJTUFHRSIiIiwgJ2Zhc3QvZXZlbnRzL2Jhci5odG1sJywgIiIiCitY
UCBERUJVRyA6IGZhc3QvZXZlbnRzL2Jhci5odG1sID0gSU1BR0UKK1dJTiA6IGZhc3QvZXZlbnRz
L2JhcjEuaHRtbCA9IElNQUdFIiIiKQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAg
ICAgdW5pdHRlc3QubWFpbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102710</attachid>
            <date>2011-08-02 16:15:36 -0700</date>
            <delta_ts>2011-08-03 08:09:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64922-20110802161535.patch</filename>
            <type>text/plain</type>
            <size>31725</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIxMzYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0OTY0N2QxMTBlNmVhOWY5ZTQ1N2QzODZjNDI2NmRjZDM1
MDM0ZGY0Li42NTdlYTU0NmZmNTJjM2NlY2ViY2RhYTk2ZDY5MmM0NTM5MTIwMGMwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMDgtMDIgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4K
KworICAgICAgICBBZGQgYSB3YXkgdG8gZWRpdCB0ZXN0IGV4cGVjdGF0aW9ucy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0OTIyCisKKyAgICAgICAg
SW1wbGVtZW50cyBhIFRlc3RFeHBlY3RhdGlvbnNFZGl0b3IsIHdoaWNoIHByb3ZpZGVzIGEgc3Rh
bmRhcmQgd2F5IHRvCisgICAgICAgIHVwZGF0ZSBhbmQgcmVtb3ZlIHRlc3QgZXhwZWN0YXRpb25z
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5OiBD
aGFuZ2VkIFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXIgdG8gc2tpcCBsaW5lcyB0aGF0IG1hdGNo
IG5vIHRlc3QgY29uZmlndXJhdGlvbnMsCisgICAgICAgICAgICBhZGRlZCBUZXN0RXhwZWN0YXRp
b25MaW5lLmlzX2ZsYWt5LCBhZGRlZCBCdWdNYW5hZ2VyLCBhIHNpbXBsZSBpbnRlcmZhY2UgdG8g
YmUgZmxlc2hlZCBvdXQgbGF0ZXIsIGFuZCBhIFRlc3RFeHBlY3RhdGlvbnNFZGl0b3IsIHRoZSBi
aWcKKyAgICAgICAgICAgIGVuY2hpbGFkYS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6IExvYWRzIG9m
IHRlc3RzIHRvIGNhcHR1cmUgZGVzaXJlZCBiZWhhdmlvci4KKwogMjAxMS0wOC0wMSAgRGltaXRy
aSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRlYWNoIFRlc3RF
eHBlY3RhdGlvblNlcmlhbGl6ZXIgYWJvdXQgcGFyc2VkIGV4cGVjdGF0aW9ucy4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVj
dGF0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90
ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCBkN2E3MmFkN2I4NTk5ZGJkYTI2NjJlMDA5MDc4NDU0
ZTYwMzhmNjk4Li40NzRlNjE1YjBiNTZjNTdjMTRkY2I1OGRiZTkwYzhhMTFjODkyYzdhIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9l
eHBlY3RhdGlvbnMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC0xMzksNyArMTM5LDcgQEAgY2xhc3MgVGVz
dEV4cGVjdGF0aW9uU2VyaWFsaXplcjoKICAgICAgICAgICAgICAgICBtb2RpZmllcnMgPSBzZWxm
Ll9wYXJzZWRfbW9kaWZpZXJfc3RyaW5nKGV4cGVjdGF0aW9uX2xpbmUsIHNwZWNpZmllcnMpCiAg
ICAgICAgICAgICAgICAgZXhwZWN0YXRpb25zID0gc2VsZi5fcGFyc2VkX2V4cGVjdGF0aW9uc19z
dHJpbmcoZXhwZWN0YXRpb25fbGluZSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHNl
bGYuX2Zvcm1hdF9yZXN1bHQobW9kaWZpZXJzLCBleHBlY3RhdGlvbl9saW5lLm5hbWUsIGV4cGVj
dGF0aW9ucywgZXhwZWN0YXRpb25fbGluZS5jb21tZW50KSkKLSAgICAgICAgICAgIHJldHVybiAi
XG4iLmpvaW4ocmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuICJcbiIuam9pbihyZXN1bHQpIGlm
IHJlc3VsdCBlbHNlIE5vbmUKIAogICAgICAgICByZXR1cm4gc2VsZi5fZm9ybWF0X3Jlc3VsdCgi
ICIuam9pbihleHBlY3RhdGlvbl9saW5lLm1vZGlmaWVycyksIGV4cGVjdGF0aW9uX2xpbmUubmFt
ZSwgIiAiLmpvaW4oZXhwZWN0YXRpb25fbGluZS5leHBlY3RhdGlvbnMpLCBleHBlY3RhdGlvbl9s
aW5lLmNvbW1lbnQpCiAKQEAgLTE2Niw5ICsxNjYsOSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25T
ZXJpYWxpemVyOgogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBAY2xhc3NtZXRob2QKLSAg
ICBkZWYgbGlzdF90b19zdHJpbmcoY2xzLCBleHBlY3RhdGlvbnMsIHRlc3RfY29uZmlndXJhdGlv
bl9jb252ZXJ0ZXIpOgorICAgIGRlZiBsaXN0X3RvX3N0cmluZyhjbHMsIGV4cGVjdGF0aW9uX2xp
bmVzLCB0ZXN0X2NvbmZpZ3VyYXRpb25fY29udmVydGVyKToKICAgICAgICAgc2VyaWFsaXplciA9
IGNscyh0ZXN0X2NvbmZpZ3VyYXRpb25fY29udmVydGVyKQotICAgICAgICByZXR1cm4gIlxuIi5q
b2luKFtzZXJpYWxpemVyLnRvX3N0cmluZyhleHBlY3RhdGlvbikgZm9yIGV4cGVjdGF0aW9uIGlu
IGV4cGVjdGF0aW9uc10pCisgICAgICAgIHJldHVybiAiXG4iLmpvaW4oW2xpbmUgZm9yIGxpbmUg
aW4gW3NlcmlhbGl6ZXIudG9fc3RyaW5nKGV4cGVjdGF0aW9uX2xpbmUpIGZvciBleHBlY3RhdGlv
bl9saW5lIGluIGV4cGVjdGF0aW9uX2xpbmVzXSBpZiBsaW5lIGlzIG5vdCBOb25lXSkKIAogCiBj
bGFzcyBUZXN0RXhwZWN0YXRpb25QYXJzZXI6CkBAIC0xODUsNyArMTg1LDcgQEAgY2xhc3MgVGVz
dEV4cGVjdGF0aW9uUGFyc2VyOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGZ1bGxf
dGVzdF9saXN0LCBhbGxvd19yZWJhc2VsaW5lX21vZGlmaWVyKToKICAgICAgICAgc2VsZi5fcG9y
dCA9IHBvcnQKLSAgICAgICAgc2VsZi5fdGVzdF9jb25maWd1cmF0aW9uX2NvbnZlcnRlciA9IFRl
c3RDb25maWd1cmF0aW9uQ29udmVydGVyKHBvcnQuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoKSwg
cG9ydC5jb25maWd1cmF0aW9uX3NwZWNpZmllcl9tYWNyb3MoKSkKKyAgICAgICAgc2VsZi5fdGVz
dF9jb25maWd1cmF0aW9uX2NvbnZlcnRlciA9IFRlc3RDb25maWd1cmF0aW9uQ29udmVydGVyKHNl
dChwb3J0LmFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKCkpLCBwb3J0LmNvbmZpZ3VyYXRpb25fc3Bl
Y2lmaWVyX21hY3JvcygpKQogICAgICAgICBzZWxmLl9mdWxsX3Rlc3RfbGlzdCA9IGZ1bGxfdGVz
dF9saXN0CiAgICAgICAgIHNlbGYuX2FsbG93X3JlYmFzZWxpbmVfbW9kaWZpZXIgPSBhbGxvd19y
ZWJhc2VsaW5lX21vZGlmaWVyCiAKQEAgLTM1OSw2ICszNTksOSBAQCBjbGFzcyBUZXN0RXhwZWN0
YXRpb25MaW5lOgogICAgIGRlZiBpc19pbnZhbGlkKHNlbGYpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5pc19tYWxmb3JtZWQoKSBvciBsZW4oc2VsZi53YXJuaW5ncykgPiAwCiAKKyAgICBkZWYgaXNf
Zmxha3koc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5wYXJzZWRfZXhwZWN0YXRpb25z
KSA+IDEKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBjcmVhdGVfcGFzc2luZ19leHBlY3Rh
dGlvbihjbHMsIHRlc3QpOgogICAgICAgICBleHBlY3RhdGlvbl9saW5lID0gVGVzdEV4cGVjdGF0
aW9uTGluZSgpCkBAIC00MzEsNiArNDM0LDkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc01vZGVs
OgogICAgIGRlZiBoYXNfdGVzdChzZWxmLCB0ZXN0KToKICAgICAgICAgcmV0dXJuIHRlc3QgaW4g
c2VsZi5fdGVzdF90b19leHBlY3RhdGlvbl9saW5lCiAKKyAgICBkZWYgZ2V0X2V4cGVjdGF0aW9u
X2xpbmUoc2VsZiwgdGVzdCk6CisgICAgICAgIHJldHVybiBzZWxmLl90ZXN0X3RvX2V4cGVjdGF0
aW9uX2xpbmUuZ2V0KHRlc3QpCisKICAgICBkZWYgZ2V0X2V4cGVjdGF0aW9ucyhzZWxmLCB0ZXN0
KToKICAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfdG9fZXhwZWN0YXRpb25zW3Rlc3RdCiAKQEAg
LTQ3OCw3ICs0ODQsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zTW9kZWw6CiAgICAgICAgICAg
ICBzZWxmLl9yZXN1bHRfdHlwZV90b190ZXN0c1tTS0lQXS5hZGQodGVzdCkKICAgICAgICAgZWxp
ZiBleHBlY3RhdGlvbl9saW5lLnBhcnNlZF9leHBlY3RhdGlvbnMgPT0gc2V0KFtQQVNTXSk6CiAg
ICAgICAgICAgICBzZWxmLl9yZXN1bHRfdHlwZV90b190ZXN0c1tQQVNTXS5hZGQodGVzdCkKLSAg
ICAgICAgZWxpZiBsZW4oZXhwZWN0YXRpb25fbGluZS5wYXJzZWRfZXhwZWN0YXRpb25zKSA+IDE6
CisgICAgICAgIGVsaWYgZXhwZWN0YXRpb25fbGluZS5pc19mbGFreSgpOgogICAgICAgICAgICAg
c2VsZi5fcmVzdWx0X3R5cGVfdG9fdGVzdHNbRkxBS1ldLmFkZCh0ZXN0KQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgc2VsZi5fcmVzdWx0X3R5cGVfdG9fdGVzdHNbRkFJTF0uYWRkKHRlc3Qp
CkBAIC01NzMsNiArNTc5LDExNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zTW9kZWw6CiAgICAg
ICAgIHJldHVybiBGYWxzZQogCiAKK2NsYXNzIEJ1Z01hbmFnZXI6CisgICAgIiIiQSBzaW1wbGUg
aW50ZXJmYWNlIGZvciBtYW5hZ2luZyBidWdzIGZyb20gVGVzdEV4cGVjdGF0aW9uc0VkaXRvci4i
IiIKKyAgICBkZWYgY2xvc2VfYnVnKHNlbGYsIGJ1Z19pZCwgcmVmZXJlbmNlX2J1Z19pZD1Ob25l
KToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGNyZWF0ZV9idWcoc2VsZik6CisgICAgICAgIHJl
dHVybiAnQlVHX05FV0xZX0NSRUFURUQnCisKKworY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0VkaXRv
cjoKKyAgICAiIiIKKyAgICBUaGUgZWRpdG9yIGFzc3VtZXMgdGhhdCB0aGUgZXhwZWN0YXRpb24g
ZGF0YSBpcyBlcnJvci1mcmVlLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4
cGVjdGF0aW9uX2xpbmVzLCBidWdfbWFuYWdlcj1Ob25lKToKKyAgICAgICAgc2VsZi5fYnVnX21h
bmFnZXIgPSBidWdfbWFuYWdlciBvciBCdWdNYW5hZ2VyKCkKKyAgICAgICAgc2VsZi5fZXhwZWN0
YXRpb25fbGluZXMgPSBleHBlY3RhdGlvbl9saW5lcworICAgICAgICBzZWxmLl90ZXN0c193aXRo
X2RpcmVjdG9yeV9wYXRocyA9IHNldCgpCisgICAgICAgICMgRklYTUU6IFVuaWZ5IHRoaXMgd2l0
aCBUZXN0RXhwZWN0YXRpb25zTW9kZWwuCisgICAgICAgIHNlbGYuX3Rlc3RfdG9fZXhwZWN0YXRp
b25fbGluZXMgPSB7fQorICAgICAgICBmb3IgZXhwZWN0YXRpb25fbGluZSBpbiBleHBlY3RhdGlv
bl9saW5lczoKKyAgICAgICAgICAgIGZvciB0ZXN0IGluIGV4cGVjdGF0aW9uX2xpbmUubWF0Y2hp
bmdfdGVzdHM6CisgICAgICAgICAgICAgICAgaWYgdGVzdCA9PSBleHBlY3RhdGlvbl9saW5lLnBh
dGg6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfdG9fZXhwZWN0YXRpb25fbGluZXMu
c2V0ZGVmYXVsdCh0ZXN0LCBbXSkuYXBwZW5kKGV4cGVjdGF0aW9uX2xpbmUpCisgICAgICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdHNfd2l0aF9kaXJlY3Rv
cnlfcGF0aHMuYWRkKHRlc3QpCisKKyAgICBkZWYgcmVtb3ZlX2V4cGVjdGF0aW9uKHNlbGYsIHRl
c3QsIHRlc3RfY29uZmlnX3NldCwgcmVtb3ZlX2ZsYWtlcz1GYWxzZSk6CisgICAgICAgICIiIlJl
bW92ZXMgZXhpc3RpbmcgZXhwZWN0YXRpb25zIGZvciB7dGVzdH0gaW4gdGhlIG9mIHRlc3QgY29u
ZmlndXJhdGlvbnMge3Rlc3RfY29uZmlnX3NldH0uCisgICAgICAgIElmIHRoZSB0ZXN0IGlzIGZs
YWt5LCB0aGUgZXhwZWN0YXRpb24gaXMgbm90IHJlbW92ZWQsIHVubGVzcyByZW1vdmVfZmxha2Vz
IGlzIFRydWUuCisKKyAgICAgICAgSW4gdGhpcyBjb250ZXh0LCByZW1vdmluZyBleHBlY3RhdGlv
bnMgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGUgdGVzdCBpcyBwYXNzaW5nIC0tIHdlIGFyZSBtZXJl
bHkgcmVtb3ZpbmcKKyAgICAgICAgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoaXMgdGVzdCBmcm9t
IHRoZSBleHBlY3RhdGlvbnMuCisKKyAgICAgICAgV2UgZG8gbm90IHJlbW92ZSB0aGUgYWN0dWFs
IGV4cGVjdGF0aW9uIGxpbmVzIGhlcmUuIEluc3RlYWQsIHdlIGFkanVzdCBUZXN0RXhwZWN0YXRp
b25MaW5lLm1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zLgorICAgICAgICBUaGUgc2VyaWFsaXplciB3
aWxsIGZpZ3VyZSBvdXQgd2hhdCB0byBkbzoKKyAgICAgICAgKiBBbiBlbXB0eSBtYXRjaGluZ19j
b25maWd1cmF0aW9ucyBzZXQgbWVhbnMgdGhhdCB0aGUgdGhpcyBsaW5lIG1hdGNoZXMgbm90aGlu
ZyBhbmQgd2lsbCBzZXJpYWxpemUgYXMgTm9uZS4KKyAgICAgICAgKiBBIG1hdGNoaW5nX2NvbmZp
Z3VyYXRpb25zIHNldCB0aGF0IGNhbid0IGJlIGV4cHJlc3NlZCBhcyBvbmUgbGluZSB3aWxsIGJl
IHNlcmlhbGl6ZWQgYXMgbXVsdGlwbGUgbGluZXMuCisKKyAgICAgICAgQWxzbywgd2UgZG8gb25s
eSBhZGp1c3QgbWF0Y2hpbmdfY29uZmlndXJhdGlvbnMgZm9yIGxpbmVzIHRoYXQgbWF0Y2ggdGVz
dHMgZXhhY3RseSwgYmVjYXVzZSBleHBlY3RhdGlvbiBsaW5lcyB3aXRoCisgICAgICAgIGJldHRl
ciBwYXRoIG1hdGNoZXMgYXJlIHZhbGlkIGFuZCBhbHdheXMgd2luLgorCisgICAgICAgIEZvciBl
eGFtcGxlLCB0aGUgZXhwZWN0YXRpb24gd2l0aCB0aGUgcGF0aCAiZmFzdC9ldmVudHMvc2hhZG93
LyIgd2lsbAorICAgICAgICBiZSBpZ25vcmVkIHdoZW4gcmVtb3ZpbmcgZXhwZWN0YXRpb25zIGZv
ciB0aGUgdGVzdCAiZmFzdC9ldmVudC9zaGFkb3cvYXdlc29tZS1jcmFzaC5odG1sIiwgc2luY2Ug
d2UgY2FuIGp1c3QKKyAgICAgICAgYWRkIGEgbmV3IGV4cGVjdGF0aW9uIGxpbmUgZm9yICJmYXN0
L2V2ZW50L3NoYWRvdy9hd2Vzb21lLWNyYXNoLmh0bWwiIHRvIGluZmx1ZW5jZSBleHBlY3RlZCBy
ZXN1bHRzLgorICAgICAgICAiIiIKKyAgICAgICAgZXhwZWN0YXRpb25fbGluZXMgPSBzZWxmLl90
ZXN0X3RvX2V4cGVjdGF0aW9uX2xpbmVzLmdldCh0ZXN0LCBbXSkKKyAgICAgICAgZm9yIGV4cGVj
dGF0aW9uX2xpbmUgaW4gZXhwZWN0YXRpb25fbGluZXM6CisgICAgICAgICAgICBpZiAobm90IGV4
cGVjdGF0aW9uX2xpbmUuaXNfZmxha3koKSBvciByZW1vdmVfZmxha2VzKSBhbmQgZXhwZWN0YXRp
b25fbGluZS5tYXRjaGluZ19jb25maWd1cmF0aW9ucyAmIHRlc3RfY29uZmlnX3NldDoKKyAgICAg
ICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zID0gZXhw
ZWN0YXRpb25fbGluZS5tYXRjaGluZ19jb25maWd1cmF0aW9ucyAtIHRlc3RfY29uZmlnX3NldAor
ICAgICAgICAgICAgICAgIGlmIG5vdCBleHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX2NvbmZpZ3Vy
YXRpb25zOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWdfbWFuYWdlci5jbG9zZV9idWco
ZXhwZWN0YXRpb25fbGluZS5wYXJzZWRfYnVnX21vZGlmaWVyKQorICAgICAgICAgICAgICAgIHJl
dHVybgorCisgICAgZGVmIHVwZGF0ZV9leHBlY3RhdGlvbihzZWxmLCB0ZXN0LCB0ZXN0X2NvbmZp
Z19zZXQsIGV4cGVjdGF0aW9uX3NldCwgcGFyc2VkX2J1Z19tb2RpZmllcj1Ob25lKToKKyAgICAg
ICAgIiIiVXBkYXRlcyBleHBlY3RhdGlvbnMgZm9yIHt0ZXN0fSBpbiB0aGUgc2V0IG9mIHRlc3Qg
Y29uZmlndXJhdGlvbiB7dGVzdF9jb25maWdfc2V0fSB0byB0aGUgdmFsdWVzIG9mIHtleHBlY3Rh
dGlvbl9zZXR9LgorICAgICAgICBJZiB7cGFyc2VkX2J1Z19tb2RpZmllcn0gaXMgc3VwcGxpZWQs
IGl0IGlzIHVzZWQgZm9yIHVwZGF0ZWQgZXhwZWN0YXRpb25zLiBPdGhlcndpc2UsIGEgbmV3IGJ1
ZyBpcyBjcmVhdGVkLgorCisgICAgICAgIEhlcmUsIHdlIHRyZWF0IHVwZGF0aW5nIGV4cGVjdGF0
aW9ucyB0byBQQVNTIGFzIHNwZWNpYWw6IGlmIHBvc3NpYmxlLCB0aGUgY29ycmVzcG9uZGluZyBs
aW5lcyBhcmUgY29tcGxldGVseSByZW1vdmVkLgorICAgICAgICAiIiIKKyAgICAgICAgIyBGSVhN
RTogQWxsb3cgc3BlY2lmeWluZyBtb2RpZmllcnMgKFNMT1csIFNLSVAsIFdPTlRGSVgpLgorICAg
ICAgICBleHBlY3RhdGlvbl9saW5lcyA9IHNlbGYuX3Rlc3RfdG9fZXhwZWN0YXRpb25fbGluZXMu
Z2V0KHRlc3QsIFtdKQorICAgICAgICByZW1haW5pbmdfY29uZmlndXJhdGlvbnMgPSB0ZXN0X2Nv
bmZpZ19zZXQuY29weSgpCisgICAgICAgIGJ1Z19pZCA9IHNlbGYuX2dldF92YWxpZF9idWdfaWQo
cGFyc2VkX2J1Z19tb2RpZmllcikKKyAgICAgICAgcmVtb3ZlX2V4cGVjdGF0aW9ucyA9IGV4cGVj
dGF0aW9uX3NldCA9PSBzZXQoW1BBU1NdKSBhbmQgdGVzdCBub3QgaW4gc2VsZi5fdGVzdHNfd2l0
aF9kaXJlY3RvcnlfcGF0aHMKKyAgICAgICAgZm9yIGV4cGVjdGF0aW9uX2xpbmUgaW4gZXhwZWN0
YXRpb25fbGluZXM6CisgICAgICAgICAgICBpZiBleHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX2Nv
bmZpZ3VyYXRpb25zID09IHJlbWFpbmluZ19jb25maWd1cmF0aW9uczoKKyAgICAgICAgICAgICAg
ICAjIFR3ZWFrIGV4cGVjdGF0aW9ucyBvbiBleGlzdGluZyBsaW5lLgorICAgICAgICAgICAgICAg
IGlmIGV4cGVjdGF0aW9uX2xpbmUucGFyc2VkX2V4cGVjdGF0aW9ucyA9PSBleHBlY3RhdGlvbl9z
ZXQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgIHNlbGYuX2J1
Z19tYW5hZ2VyLmNsb3NlX2J1ZyhleHBlY3RhdGlvbl9saW5lLnBhcnNlZF9idWdfbW9kaWZpZXIs
IGJ1Z19pZCkKKyAgICAgICAgICAgICAgICBpZiByZW1vdmVfZXhwZWN0YXRpb25zOgorICAgICAg
ICAgICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zID0g
c2V0KCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgZXhwZWN0
YXRpb25fbGluZS5wYXJzZWRfZXhwZWN0YXRpb25zID0gZXhwZWN0YXRpb25fc2V0CisgICAgICAg
ICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5wYXJzZWRfYnVnX21vZGlmaWVyID0gYnVnX2lkCisg
ICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbGlmIGV4cGVjdGF0aW9uX2xpbmUu
bWF0Y2hpbmdfY29uZmlndXJhdGlvbnMgPj0gcmVtYWluaW5nX2NvbmZpZ3VyYXRpb25zOgorICAg
ICAgICAgICAgICAgICMgMSkgU3BsaXQgdXAgaW50byB0d28gZXhwZWN0YXRpb24gbGluZXM6Cisg
ICAgICAgICAgICAgICAgIyAqIG9uZSB3aXRoIG9sZCBleHBlY3RhdGlvbnMgKGV4aXN0aW5nIGV4
cGVjdGF0aW9uX2xpbmUpCisgICAgICAgICAgICAgICAgIyAqIG9uZSB3aXRoIG5ldyBleHBlY3Rh
dGlvbnMgKG5ldyBleHBlY3RhdGlvbl9saW5lKQorICAgICAgICAgICAgICAgICMgMikgRmluaXNo
IGxvb2tpbmcsIHNpbmNlIHRoZXJlIHdpbGwgYmUgbm8gbW9yZSByZW1haW5pbmcgY29uZmlncyB0
byB0ZXN0IGZvci4KKyAgICAgICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX2Nv
bmZpZ3VyYXRpb25zIC09IHJlbWFpbmluZ19jb25maWd1cmF0aW9ucworICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBlbGlmIGV4cGVjdGF0aW9uX2xpbmUubWF0Y2hpbmdfY29uZmln
dXJhdGlvbnMgPD0gcmVtYWluaW5nX2NvbmZpZ3VyYXRpb25zOgorICAgICAgICAgICAgICAgICMg
UmVtb3ZlIGV4aXN0aW5nIGV4cGVjdGF0aW9uIGxpbmUuCisgICAgICAgICAgICAgICAgc2VsZi5f
YnVnX21hbmFnZXIuY2xvc2VfYnVnKGV4cGVjdGF0aW9uX2xpbmUucGFyc2VkX2J1Z19tb2RpZmll
ciwgYnVnX2lkKQorICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX2xpbmUubWF0Y2hpbmdfY29u
ZmlndXJhdGlvbnMgPSBzZXQoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBp
bnRlcnNlY3Rpb24gPSBleHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zICYg
cmVtYWluaW5nX2NvbmZpZ3VyYXRpb25zCisgICAgICAgICAgICAgICAgaWYgaW50ZXJzZWN0aW9u
OgorICAgICAgICAgICAgICAgICAgICBleHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX2NvbmZpZ3Vy
YXRpb25zIC09IGludGVyc2VjdGlvbgorCisgICAgICAgIGlmIG5vdCByZW1vdmVfZXhwZWN0YXRp
b25zOgorICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25fbGluZXMuYXBwZW5kKHNlbGYuX2Ny
ZWF0ZV9uZXdfbGluZSh0ZXN0LCBidWdfaWQsIHJlbWFpbmluZ19jb25maWd1cmF0aW9ucywgZXhw
ZWN0YXRpb25fc2V0KSkKKworICAgIGRlZiBfZ2V0X3ZhbGlkX2J1Z19pZChzZWxmLCBzdWdnZXN0
ZWRfYnVnX2lkKToKKyAgICAgICAgIyBGSVhNRTogRmxlc2ggb3V0IGNyZWF0aW5nIGEgYnVnIHBy
b3Blcmx5ICh0aXRsZSwgZXRjLikKKyAgICAgICAgcmV0dXJuIHN1Z2dlc3RlZF9idWdfaWQgb3Ig
c2VsZi5fYnVnX21hbmFnZXIuY3JlYXRlX2J1ZygpCisKKyAgICBkZWYgX2NyZWF0ZV9uZXdfbGlu
ZShzZWxmLCBuYW1lLCBidWdfaWQsIGNvbmZpZ19zZXQsIGV4cGVjdGF0aW9uX3NldCk6CisgICAg
ICAgIG5ld19saW5lID0gVGVzdEV4cGVjdGF0aW9uTGluZSgpCisgICAgICAgIG5ld19saW5lLm5h
bWUgPSBuYW1lCisgICAgICAgIG5ld19saW5lLnBhcnNlZF9idWdfbW9kaWZpZXIgPSBidWdfaWQK
KyAgICAgICAgbmV3X2xpbmUubWF0Y2hpbmdfY29uZmlndXJhdGlvbnMgPSBjb25maWdfc2V0Cisg
ICAgICAgIG5ld19saW5lLnBhcnNlZF9leHBlY3RhdGlvbnMgPSBleHBlY3RhdGlvbl9zZXQKKyAg
ICAgICAgIyBFbnN1cmUgaW5kZXggaW50ZWdyaXR5IGZvciBtdWx0aXBsZSBvcGVyYXRpb25zLgor
ICAgICAgICBzZWxmLl90ZXN0X3RvX2V4cGVjdGF0aW9uX2xpbmVzLnNldGRlZmF1bHQobmFtZSwg
W10pLmFwcGVuZChuZXdfbGluZSkKKyAgICAgICAgcmV0dXJuIG5ld19saW5lCisKKwogY2xhc3Mg
VGVzdEV4cGVjdGF0aW9uczoKICAgICAiIiJUZXN0IGV4cGVjdGF0aW9ucyBjb25zaXN0IG9mIGxp
bmVzIHdpdGggc3BlY2lmaWNhdGlvbnMgb2Ygd2hhdAogICAgIHRvIGV4cGVjdCBmcm9tIGxheW91
dCB0ZXN0IGNhc2VzLiBUaGUgdGVzdCBjYXNlcyBjYW4gYmUgZGlyZWN0b3JpZXMKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVj
dGF0aW9uc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQppbmRleCBmMmE5NTE5MDRmODBm
NGViYWVlMzRhMmM0NjAwODk5YTY4ZDljMTcxLi5kYmE5MjQwODNmMGRlY2U1NzQ0MWFkYmIxZWIz
MTRlZjAyMzUxNDlhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0
ZXN0LnB5CkBAIC0zMyw2ICszMyw3IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9y
dCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBiYXNlCiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCAq
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9leHBlY3RhdGlvbnMgaW1w
b3J0ICoKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRp
b24gaW1wb3J0ICoKIAogY2xhc3MgRnVuY3Rpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgZGVmIHRlc3RfcmVzdWx0X3dhc19leHBlY3RlZChzZWxmKToKQEAgLTQ5NSw3ICs0OTYsNyBA
QCBjbGFzcyBUZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyVGVzdHModW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICBleHBlY3RhdGlvbl9saW5lLnBhcnNlZF9idWdfbW9kaWZpZXIgPSAnQlVHWCcK
ICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5uYW1lID0gJ3Rlc3QvbmFtZS9mb3IvcmVhbHouaHRt
bCcKICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5wYXJzZWRfZXhwZWN0YXRpb25zID0gc2V0KFtJ
TUFHRV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc2VyaWFsaXplci50b19zdHJp
bmcoZXhwZWN0YXRpb25fbGluZSksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYu
X3NlcmlhbGl6ZXIudG9fc3RyaW5nKGV4cGVjdGF0aW9uX2xpbmUpLCBOb25lKQogICAgICAgICBl
eHBlY3RhdGlvbl9saW5lLm1hdGNoaW5nX2NvbmZpZ3VyYXRpb25zID0gc2V0KFtUZXN0Q29uZmln
dXJhdGlvbihOb25lLCAneHAnLCAneDg2JywgJ3JlbGVhc2UnLCAnY3B1JyldKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNlbGYuX3NlcmlhbGl6ZXIudG9fc3RyaW5nKGV4cGVjdGF0aW9uX2xp
bmUpLCAnQlVHWCBYUCBSRUxFQVNFIENQVSA6IHRlc3QvbmFtZS9mb3IvcmVhbHouaHRtbCA9IElN
QUdFJykKICAgICAgICAgZXhwZWN0YXRpb25fbGluZS5tYXRjaGluZ19jb25maWd1cmF0aW9ucyA9
IHNldChbVGVzdENvbmZpZ3VyYXRpb24oTm9uZSwgJ3hwJywgJ3g4NicsICdyZWxlYXNlJywgJ2Nw
dScpLCBUZXN0Q29uZmlndXJhdGlvbihOb25lLCAneHAnLCAneDg2JywgJ3JlbGVhc2UnLCAnZ3B1
JyldKQpAQCAtNTcxLDUgKzU3MiwzMjIgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXpl
clRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRfcm91bmRfdHJp
cCgnRk9PIDogICAgICAgYmFyICAgICA9ICAgIEJBWiAvLyBRdXguJywgJ0ZPTyA6IGJhciA9IEJB
WiAvLyBRdXguJykKIAogCitjbGFzcyBUZXN0RXhwZWN0YXRpb25FZGl0b3JUZXN0cyh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgV0lOX1JFTEVBU0VfQ1BVX0NPTkZJR1MgPSBzZXQoWworICAgICAg
ICBUZXN0Q29uZmlndXJhdGlvbihOb25lLCAndmlzdGEnLCAneDg2JywgJ3JlbGVhc2UnLCAnY3B1
JyksCisgICAgICAgIFRlc3RDb25maWd1cmF0aW9uKE5vbmUsICd3aW43JywgJ3g4NicsICdyZWxl
YXNlJywgJ2NwdScpLAorICAgICAgICBUZXN0Q29uZmlndXJhdGlvbihOb25lLCAneHAnLCAneDg2
JywgJ3JlbGVhc2UnLCAnY3B1JyksCisgICAgXSkKKworICAgIFJFTEVBU0VfQ09ORklHUyA9IHNl
dChbCisgICAgICAgIFRlc3RDb25maWd1cmF0aW9uKE5vbmUsICd2aXN0YScsICd4ODYnLCAncmVs
ZWFzZScsICdjcHUnKSwKKyAgICAgICAgVGVzdENvbmZpZ3VyYXRpb24oTm9uZSwgJ3dpbjcnLCAn
eDg2JywgJ3JlbGVhc2UnLCAnY3B1JyksCisgICAgICAgIFRlc3RDb25maWd1cmF0aW9uKE5vbmUs
ICd4cCcsICd4ODYnLCAncmVsZWFzZScsICdjcHUnKSwKKyAgICAgICAgVGVzdENvbmZpZ3VyYXRp
b24oTm9uZSwgJ3Zpc3RhJywgJ3g4NicsICdyZWxlYXNlJywgJ2dwdScpLAorICAgICAgICBUZXN0
Q29uZmlndXJhdGlvbihOb25lLCAnd2luNycsICd4ODYnLCAncmVsZWFzZScsICdncHUnKSwKKyAg
ICAgICAgVGVzdENvbmZpZ3VyYXRpb24oTm9uZSwgJ3hwJywgJ3g4NicsICdyZWxlYXNlJywgJ2dw
dScpLAorICAgICAgICBUZXN0Q29uZmlndXJhdGlvbihOb25lLCAnc25vd2xlb3BhcmQnLCAneDg2
JywgJ3JlbGVhc2UnLCAnY3B1JyksCisgICAgICAgIFRlc3RDb25maWd1cmF0aW9uKE5vbmUsICds
ZW9wYXJkJywgJ3g4NicsICdyZWxlYXNlJywgJ2NwdScpLAorICAgICAgICBUZXN0Q29uZmlndXJh
dGlvbihOb25lLCAnc25vd2xlb3BhcmQnLCAneDg2JywgJ3JlbGVhc2UnLCAnZ3B1JyksCisgICAg
ICAgIFRlc3RDb25maWd1cmF0aW9uKE5vbmUsICdsZW9wYXJkJywgJ3g4NicsICdyZWxlYXNlJywg
J2dwdScpLAorICAgICAgICBUZXN0Q29uZmlndXJhdGlvbihOb25lLCAnbHVjaWQnLCAneDg2Jywg
J3JlbGVhc2UnLCAnY3B1JyksCisgICAgICAgIFRlc3RDb25maWd1cmF0aW9uKE5vbmUsICdsdWNp
ZCcsICd4ODZfNjQnLCAncmVsZWFzZScsICdjcHUnKSwKKyAgICAgICAgVGVzdENvbmZpZ3VyYXRp
b24oTm9uZSwgJ2x1Y2lkJywgJ3g4NicsICdyZWxlYXNlJywgJ2dwdScpLAorICAgICAgICBUZXN0
Q29uZmlndXJhdGlvbihOb25lLCAnbHVjaWQnLCAneDg2XzY0JywgJ3JlbGVhc2UnLCAnZ3B1Jyks
CisgICAgXSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0RnVuYyk6CisgICAgICAgIHNl
bGYudGVzdF9wb3J0ID0gcG9ydC5nZXQoJ3Rlc3Qtd2luLXhwJywgTm9uZSkKKyAgICAgICAgc2Vs
Zi5mdWxsX3Rlc3RfbGlzdCA9IFsKKyAgICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC9rZXli
b2FyZC5odG1sJywKKyAgICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sJwor
ICAgICAgICBdCisgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsIHRlc3RG
dW5jKQorCisgICAgZGVmIG1ha2VfcGFyc2VkX2V4cGVjdGF0aW9uX2xpbmVzKHNlbGYsIGluX3N0
cmluZyk6CisgICAgICAgIGV4cGVjdGF0aW9uX2xpbmVzID0gVGVzdEV4cGVjdGF0aW9uUGFyc2Vy
LnRva2VuaXplX2xpc3QoaW5fc3RyaW5nKQorICAgICAgICBwYXJzZXIgPSBUZXN0RXhwZWN0YXRp
b25QYXJzZXIoc2VsZi50ZXN0X3BvcnQsIHNlbGYuZnVsbF90ZXN0X2xpc3QsIGFsbG93X3JlYmFz
ZWxpbmVfbW9kaWZpZXI9RmFsc2UpCisgICAgICAgIGZvciBleHBlY3RhdGlvbl9saW5lIGluIGV4
cGVjdGF0aW9uX2xpbmVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleHBlY3RhdGlv
bl9saW5lLmlzX2ludmFsaWQoKSkKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZShleHBlY3RhdGlv
bl9saW5lKQorICAgICAgICByZXR1cm4gZXhwZWN0YXRpb25fbGluZXMKKworICAgIGRlZiBhc3Nl
cnRfcmVtb3ZlX3JvdW5kdHJpcChzZWxmLCBpbl9zdHJpbmcsIHRlc3QsIGV4cGVjdGVkX3N0cmlu
ZywgcmVtb3ZlX2ZsYWtlcz1GYWxzZSk6CisgICAgICAgIHRlc3RfY29uZmlnX3NldCA9IHNldChb
c2VsZi50ZXN0X3BvcnQudGVzdF9jb25maWd1cmF0aW9uKCldKQorICAgICAgICBleHBlY3RhdGlv
bl9saW5lcyA9IHNlbGYubWFrZV9wYXJzZWRfZXhwZWN0YXRpb25fbGluZXMoaW5fc3RyaW5nKQor
ICAgICAgICBlZGl0b3IgPSBUZXN0RXhwZWN0YXRpb25zRWRpdG9yKGV4cGVjdGF0aW9uX2xpbmVz
KQorICAgICAgICBlZGl0b3IucmVtb3ZlX2V4cGVjdGF0aW9uKHRlc3QsIHRlc3RfY29uZmlnX3Nl
dCwgcmVtb3ZlX2ZsYWtlcykKKyAgICAgICAgY29udmVydGVyID0gVGVzdENvbmZpZ3VyYXRpb25D
b252ZXJ0ZXIoc2VsZi50ZXN0X3BvcnQuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoKSwgc2VsZi50
ZXN0X3BvcnQuY29uZmlndXJhdGlvbl9zcGVjaWZpZXJfbWFjcm9zKCkpCisgICAgICAgIHJlc3Vs
dCA9IFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXIubGlzdF90b19zdHJpbmcoZXhwZWN0YXRpb25f
bGluZXMsIGNvbnZlcnRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzdWx0LCBleHBl
Y3RlZF9zdHJpbmcpCisKKyAgICBkZWYgYXNzZXJ0X3VwZGF0ZV9yb3VuZHRyaXAoc2VsZiwgaW5f
c3RyaW5nLCB0ZXN0LCBleHBlY3RhdGlvbl9zZXQsIGV4cGVjdGVkX3N0cmluZywgcmVtb3ZlX2Zs
YWtlcz1GYWxzZSwgcGFyc2VkX2J1Z19tb2RpZmllcj1Ob25lLCB0ZXN0X2NvbmZpZ3M9Tm9uZSk6
CisgICAgICAgIHRlc3RfY29uZmlnX3NldCA9IHRlc3RfY29uZmlncyBvciBzZXQoW3NlbGYudGVz
dF9wb3J0LnRlc3RfY29uZmlndXJhdGlvbigpXSkKKyAgICAgICAgZXhwZWN0YXRpb25fbGluZXMg
PSBzZWxmLm1ha2VfcGFyc2VkX2V4cGVjdGF0aW9uX2xpbmVzKGluX3N0cmluZykKKyAgICAgICAg
ZWRpdG9yID0gVGVzdEV4cGVjdGF0aW9uc0VkaXRvcihleHBlY3RhdGlvbl9saW5lcykKKyAgICAg
ICAgZWRpdG9yLnVwZGF0ZV9leHBlY3RhdGlvbih0ZXN0LCB0ZXN0X2NvbmZpZ19zZXQsIGV4cGVj
dGF0aW9uX3NldCwgcGFyc2VkX2J1Z19tb2RpZmllcj1wYXJzZWRfYnVnX21vZGlmaWVyKQorICAg
ICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29uZmlndXJhdGlvbkNvbnZlcnRlcihzZWxmLnRlc3RfcG9y
dC5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpLCBzZWxmLnRlc3RfcG9ydC5jb25maWd1cmF0aW9u
X3NwZWNpZmllcl9tYWNyb3MoKSkKKyAgICAgICAgcmVzdWx0ID0gVGVzdEV4cGVjdGF0aW9uU2Vy
aWFsaXplci5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29udmVydGVyKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHQsIGV4cGVjdGVkX3N0cmluZykKKworICAgIGRl
ZiB0ZXN0X3JlbW92ZV9leHBlY3RhdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfcmVt
b3ZlX3JvdW5kdHJpcCgiIiIKK0JVR1gxIFhQIERFQlVHIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5
Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMiBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5o
dG1sID0gSU1BR0UiIiIsICdmYWlsdXJlcy9leHBlY3RlZC9oYW5nLmh0bWwnLCAiIiIKK0JVR1gx
IFhQIERFQlVHIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdY
MiBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sID0gSU1BR0UiIiIpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRfcmVtb3ZlX3JvdW5kdHJpcCgiIiIKK0JVR1gxIFhQIERFQlVHIDogZmFp
bHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMiBXSU4gOiBmYWlsdXJl
cy9leHBlY3RlZC9hdWRpby5odG1sID0gSU1BR0UiIiIsICdmYWlsdXJlcy9leHBlY3RlZC9rZXli
b2FyZC5odG1sJywgIiIiCitCVUdYMSBYUCBERUJVRyA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJv
YXJkLmh0bWwgPSBJTUFHRQorQlVHWDIgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRt
bCA9IElNQUdFIiIiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X3JlbW92ZV9yb3VuZHRyaXAoIiIi
CitCVUdYMSBYUCBERUJVRyA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFH
RQorQlVHWDIgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRtbCA9IElNQUdFIiIiLCAn
ZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCcsICIiIgorQlVHWDEgWFAgREVCVUcgOiBm
YWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gSU1BR0UKK0JVR1gyIFdJTiA6IGZhaWx1
cmVzL2V4cGVjdGVkL2F1ZGlvLmh0bWwgPSBJTUFHRSIiIikKKworICAgICAgICBzZWxmLmFzc2Vy
dF9yZW1vdmVfcm91bmR0cmlwKCIiIgorQlVHWDEgTUFDIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5
Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMiBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5o
dG1sID0gSU1BR0UiIiIsICdmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sJywgICIiIgor
QlVHWDEgTUFDIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdY
MiBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sID0gSU1BR0UiIiIpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRfcmVtb3ZlX3JvdW5kdHJpcCgiIiIKK0JVR1gxIFhQIFJFTEVBU0UgQ1BV
IDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMiBXSU4gOiBm
YWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sID0gSU1BR0UiIiIsICdmYWlsdXJlcy9leHBlY3Rl
ZC9rZXlib2FyZC5odG1sJywgIiIiCitCVUdYMiBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRp
by5odG1sID0gSU1BR0UiIiIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfcmVtb3ZlX3JvdW5kdHJp
cCgiIiIKK0JVR1gxIFdJTiA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFH
RQorQlVHWDIgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRtbCA9IElNQUdFIiIiLCAn
ZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCcsICIiIgorQlVHWDEgWFAgUkVMRUFTRSBH
UFUgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gSU1BR0UKK0JVR1gxIFhQIERF
QlVHIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMSBWSVNU
QSBXSU43IDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMiBX
SU4gOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sID0gSU1BR0UiIiIpCisKKyAgICAgICAg
c2VsZi5hc3NlcnRfcmVtb3ZlX3JvdW5kdHJpcCgiIiIKK0JVR1gxIFhQIDogZmFpbHVyZXMvZXhw
ZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMiBXSU4gOiBmYWlsdXJlcy9leHBlY3Rl
ZC9hdWRpby5odG1sID0gSU1BR0UiIiIsICdmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1s
JywgIiIiCitCVUdYMSBYUCBERUJVRyBDUFUgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5o
dG1sID0gSU1BR0UKK0JVR1gxIFhQIEdQVSA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0
bWwgPSBJTUFHRQorQlVHWDIgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRtbCA9IElN
QUdFIiIiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X3JlbW92ZV9yb3VuZHRyaXAoIiIiCitCVUdY
MSA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRQorQlVHWDIgV0lOIDog
ZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRtbCA9IElNQUdFIiIiLCAnZmFpbHVyZXMvZXhwZWN0
ZWQva2V5Ym9hcmQuaHRtbCcsICIiIgorQlVHWDEgWFAgUkVMRUFTRSBHUFUgOiBmYWlsdXJlcy9l
eHBlY3RlZC9rZXlib2FyZC5odG1sID0gSU1BR0UKK0JVR1gxIFhQIERFQlVHIDogZmFpbHVyZXMv
ZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMSBMSU5VWCBNQUMgVklTVEEgV0lO
NyA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRQorQlVHWDIgV0lOIDog
ZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRtbCA9IElNQUdFIiIiKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0X3JlbW92ZV9yb3VuZHRyaXAoIiIiCitCVUdYMSBXSU4gOiBmYWlsdXJlcy9leHBlY3Rl
ZCA9IFBBU1MKK0JVR1gyIFhQIFJFTEVBU0UgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5o
dG1sID0gSU1BR0UiIiIsICdmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sJywgIiIiCitC
VUdYMSBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZCA9IFBBU1MKK0JVR1gyIFhQIFJFTEVBU0UgR1BV
IDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFIiIiKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0X3JlbW92ZV9yb3VuZHRyaXAoIiIiCitCVUdYMSBYUCBSRUxFQVNFIENQVSA6
IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRQorQlVHWDIgWFAgREVCVUcg
Q1BVIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFIiIiLCAnZmFpbHVy
ZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCcsICIiIgorQlVHWDIgWFAgREVCVUcgQ1BVIDogZmFp
bHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFIiIiKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0X3JlbW92ZV9yb3VuZHRyaXAoIiIiCitCVUdYMSBXSU4gOiBmYWlsdXJlcy9leHBlY3Rl
ZCA9IEZBSUwiIiIsICdmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sJywgIiIiCitCVUdY
MSBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZCA9IEZBSUwiIiIpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRfcmVtb3ZlX3JvdW5kdHJpcCgiIiIKK0JVR1gxIFhQIFJFTEVBU0UgQ1BVIDogZmFpbHVyZXMv
ZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFIFBBU1MKK0JVR1gyIFhQIERFQlVHIENQVSA6
IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRSIiIiwgJ2ZhaWx1cmVzL2V4
cGVjdGVkL2tleWJvYXJkLmh0bWwnLCAiIiIKK0JVR1gxIFhQIFJFTEVBU0UgQ1BVIDogZmFpbHVy
ZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IFBBU1MgSU1BR0UKK0JVR1gyIFhQIERFQlVHIENQ
VSA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRSIiIikKKworICAgICAg
ICBzZWxmLmFzc2VydF9yZW1vdmVfcm91bmR0cmlwKCIiIgorQlVHWDEgWFAgUkVMRUFTRSBDUFUg
OiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gSU1BR0UgUEFTUworQlVHWDIgWFAg
REVCVUcgQ1BVIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFIiIiLCAn
ZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCcsICIiIgorQlVHWDIgWFAgREVCVUcgQ1BV
IDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFIiIiLCByZW1vdmVfZmxh
a2VzPVRydWUpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfZXhwZWN0YXRpb25fbXVsdGlwbGUoc2Vs
Zik6CisgICAgICAgIGluX3N0cmluZyA9ICIiIgorQlVHWDEgV0lOIDogZmFpbHVyZXMvZXhwZWN0
ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMiBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9h
dWRpby5odG1sID0gSU1BR0UiIiIKKyAgICAgICAgZXhwZWN0YXRpb25fbGluZXMgPSBzZWxmLm1h
a2VfcGFyc2VkX2V4cGVjdGF0aW9uX2xpbmVzKGluX3N0cmluZykKKyAgICAgICAgY29udmVydGVy
ID0gVGVzdENvbmZpZ3VyYXRpb25Db252ZXJ0ZXIoc2VsZi50ZXN0X3BvcnQuYWxsX3Rlc3RfY29u
ZmlndXJhdGlvbnMoKSwgc2VsZi50ZXN0X3BvcnQuY29uZmlndXJhdGlvbl9zcGVjaWZpZXJfbWFj
cm9zKCkpCisgICAgICAgIGVkaXRvciA9IFRlc3RFeHBlY3RhdGlvbnNFZGl0b3IoZXhwZWN0YXRp
b25fbGluZXMpCisgICAgICAgIHRlc3QgPSAiZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRt
bCIKKworICAgICAgICBlZGl0b3IucmVtb3ZlX2V4cGVjdGF0aW9uKHRlc3QsIHNldChbVGVzdENv
bmZpZ3VyYXRpb24oTm9uZSwgJ3hwJywgJ3g4NicsICdyZWxlYXNlJywgJ2NwdScpXSkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXIubGlzdF90b19z
dHJpbmcoZXhwZWN0YXRpb25fbGluZXMsIGNvbnZlcnRlciksICIiIgorQlVHWDEgWFAgUkVMRUFT
RSBHUFUgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gSU1BR0UKK0JVR1gxIFhQ
IERFQlVHIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMSBW
SVNUQSBXSU43IDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdY
MiBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9hdWRpby5odG1sID0gSU1BR0UiIiIpCisKKyAgICAg
ICAgZWRpdG9yLnJlbW92ZV9leHBlY3RhdGlvbih0ZXN0LCBzZXQoW1Rlc3RDb25maWd1cmF0aW9u
KE5vbmUsICd4cCcsICd4ODYnLCAnZGVidWcnLCAnY3B1JyldKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplci5saXN0X3RvX3N0cmluZyhleHBlY3Rh
dGlvbl9saW5lcywgY29udmVydGVyKSwgIiIiCitCVUdYMSBYUCBHUFUgOiBmYWlsdXJlcy9leHBl
Y3RlZC9rZXlib2FyZC5odG1sID0gSU1BR0UKK0JVR1gxIFZJU1RBIFdJTjcgOiBmYWlsdXJlcy9l
eHBlY3RlZC9rZXlib2FyZC5odG1sID0gSU1BR0UKK0JVR1gyIFdJTiA6IGZhaWx1cmVzL2V4cGVj
dGVkL2F1ZGlvLmh0bWwgPSBJTUFHRSIiIikKKworICAgICAgICBlZGl0b3IucmVtb3ZlX2V4cGVj
dGF0aW9uKHRlc3QsIHNldChbVGVzdENvbmZpZ3VyYXRpb24oTm9uZSwgJ3Zpc3RhJywgJ3g4Nics
ICdkZWJ1ZycsICdncHUnKSwgVGVzdENvbmZpZ3VyYXRpb24oTm9uZSwgJ3dpbjcnLCAneDg2Jywg
J3JlbGVhc2UnLCAnZ3B1JyldKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoVGVzdEV4cGVj
dGF0aW9uU2VyaWFsaXplci5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29udmVy
dGVyKSwgIiIiCitCVUdYMSBWSVNUQSBERUJVRyBDUFUgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXli
b2FyZC5odG1sID0gSU1BR0UKK0JVR1gxIFdJTjcgREVCVUcgR1BVIDogZmFpbHVyZXMvZXhwZWN0
ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMSBXSU43IENQVSA6IGZhaWx1cmVzL2V4cGVj
dGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRQorQlVHWDEgWFAgR1BVIDogZmFpbHVyZXMvZXhwZWN0
ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMSBWSVNUQSBSRUxFQVNFIDogZmFpbHVyZXMv
ZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMiBXSU4gOiBmYWlsdXJlcy9leHBl
Y3RlZC9hdWRpby5odG1sID0gSU1BR0UiIiIpCisKKyAgICAgICAgZWRpdG9yLnJlbW92ZV9leHBl
Y3RhdGlvbih0ZXN0LCBzZXQoW1Rlc3RDb25maWd1cmF0aW9uKE5vbmUsICd4cCcsICd4ODYnLCAn
ZGVidWcnLCAnZ3B1JyksIFRlc3RDb25maWd1cmF0aW9uKE5vbmUsICd4cCcsICd4ODYnLCAncmVs
ZWFzZScsICdncHUnKV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhUZXN0RXhwZWN0YXRp
b25TZXJpYWxpemVyLmxpc3RfdG9fc3RyaW5nKGV4cGVjdGF0aW9uX2xpbmVzLCBjb252ZXJ0ZXIp
LCAiIiIKK0JVR1gxIFZJU1RBIERFQlVHIENQVSA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJk
Lmh0bWwgPSBJTUFHRQorQlVHWDEgV0lONyBSRUxFQVNFIENQVSA6IGZhaWx1cmVzL2V4cGVjdGVk
L2tleWJvYXJkLmh0bWwgPSBJTUFHRQorQlVHWDEgV0lONyBERUJVRyA6IGZhaWx1cmVzL2V4cGVj
dGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRQorQlVHWDEgVklTVEEgUkVMRUFTRSA6IGZhaWx1cmVz
L2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRQorQlVHWDIgV0lOIDogZmFpbHVyZXMvZXhw
ZWN0ZWQvYXVkaW8uaHRtbCA9IElNQUdFIiIiKQorCisgICAgICAgIGVkaXRvci5yZW1vdmVfZXhw
ZWN0YXRpb24odGVzdCwgc2V0KFtUZXN0Q29uZmlndXJhdGlvbihOb25lLCAndmlzdGEnLCAneDg2
JywgJ2RlYnVnJywgJ2NwdScpLCBUZXN0Q29uZmlndXJhdGlvbihOb25lLCAndmlzdGEnLCAneDg2
JywgJ2RlYnVnJywgJ2dwdScpLCBUZXN0Q29uZmlndXJhdGlvbihOb25lLCAndmlzdGEnLCAneDg2
JywgJ3JlbGVhc2UnLCAnZ3B1JyldKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoVGVzdEV4
cGVjdGF0aW9uU2VyaWFsaXplci5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29u
dmVydGVyKSwgIiIiCitCVUdYMSBXSU43IERFQlVHIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9h
cmQuaHRtbCA9IElNQUdFCitCVUdYMSBWSVNUQSBXSU43IFJFTEVBU0UgQ1BVIDogZmFpbHVyZXMv
ZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFCitCVUdYMiBXSU4gOiBmYWlsdXJlcy9leHBl
Y3RlZC9hdWRpby5odG1sID0gSU1BR0UiIiIpCisKKyAgICAgICAgZWRpdG9yLnJlbW92ZV9leHBl
Y3RhdGlvbih0ZXN0LCBzZXQoc2VsZi50ZXN0X3BvcnQuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMo
KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFRlc3RFeHBlY3RhdGlvblNlcmlhbGl6ZXIu
bGlzdF90b19zdHJpbmcoZXhwZWN0YXRpb25fbGluZXMsIGNvbnZlcnRlciksICIiIgorQlVHWDIg
V0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRtbCA9IElNQUdFIiIiKQorCisgICAgICAg
IHRlc3QgPSAiZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRtbCIKKworICAgICAgICBlZGl0b3Iu
cmVtb3ZlX2V4cGVjdGF0aW9uKHRlc3QsIHNldChzZWxmLnRlc3RfcG9ydC5hbGxfdGVzdF9jb25m
aWd1cmF0aW9ucygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoVGVzdEV4cGVjdGF0aW9u
U2VyaWFsaXplci5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29udmVydGVyKSwg
IiIpCisKKyAgICBkZWYgdGVzdF91cGRhdGVfZXhwZWN0YXRpb24oc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0X3VwZGF0ZV9yb3VuZHRyaXAoIiIiCitCVUdYMSBYUCBSRUxFQVNFIENQVSA6IGZh
aWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBURVhUIiIiLCAnZmFpbHVyZXMvZXhwZWN0
ZWQva2V5Ym9hcmQuaHRtbCcsIHNldChbSU1BR0VdKSwgIiIiCitCVUdfTkVXTFlfQ1JFQVRFRCBY
UCBSRUxFQVNFIENQVSA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRSIi
IikKKworICAgICAgICBzZWxmLmFzc2VydF91cGRhdGVfcm91bmR0cmlwKCIiIgorQlVHWDEgWFAg
UkVMRUFTRSBDUFUgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gVEVYVCIiIiwg
J2ZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwnLCBzZXQoW1BBU1NdKSwgJycpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRfdXBkYXRlX3JvdW5kdHJpcCgiIiIKK0JVR1gxIFhQIFJFTEVBU0Ug
Q1BVIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBURVhUIiIiLCAnZmFpbHVyZXMvZXhwZWN0ZWQva2V5
Ym9hcmQuaHRtbCcsIHNldChbSU1BR0VdKSwgIiIiCitCVUdYMSBYUCBSRUxFQVNFIENQVSA6IGZh
aWx1cmVzL2V4cGVjdGVkID0gVEVYVAorQlVHX05FV0xZX0NSRUFURUQgWFAgUkVMRUFTRSBDUFUg
OiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gSU1BR0UiIiIpCisKKyAgICAgICAg
c2VsZi5hc3NlcnRfdXBkYXRlX3JvdW5kdHJpcCgiIiIKK0JVR1gxIFhQIFJFTEVBU0UgQ1BVIDog
ZmFpbHVyZXMvZXhwZWN0ZWQgPSBURVhUIiIiLCAnZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQu
aHRtbCcsIHNldChbUEFTU10pLCAiIiIKK0JVR1gxIFhQIFJFTEVBU0UgQ1BVIDogZmFpbHVyZXMv
ZXhwZWN0ZWQgPSBURVhUCitCVUdfTkVXTFlfQ1JFQVRFRCBYUCBSRUxFQVNFIENQVSA6IGZhaWx1
cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBQQVNTIiIiKQorCisgICAgICAgIHNlbGYuYXNz
ZXJ0X3VwZGF0ZV9yb3VuZHRyaXAoIiIiCitCVUdYMSBYUCBSRUxFQVNFIENQVSA6IGZhaWx1cmVz
L2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBURVhUIiIiLCAnZmFpbHVyZXMvZXhwZWN0ZWQva2V5
Ym9hcmQuaHRtbCcsIHNldChbVEVYVF0pLCAiIiIKK0JVR1gxIFhQIFJFTEVBU0UgQ1BVIDogZmFp
bHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IFRFWFQiIiIpCisKKyAgICAgICAgc2VsZi5h
c3NlcnRfdXBkYXRlX3JvdW5kdHJpcCgiIiIKK0JVR1gxIFhQIFJFTEVBU0UgQ1BVIDogZmFpbHVy
ZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IFRFWFQiIiIsICdmYWlsdXJlcy9leHBlY3RlZC9r
ZXlib2FyZC5odG1sJywgc2V0KFtJTUFHRV0pLCAiIiIKK0JVR0FXRVNPTUUgWFAgUkVMRUFTRSBD
UFUgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gSU1BR0UiIiIsIHBhcnNlZF9i
dWdfbW9kaWZpZXI9J0JVR0FXRVNPTUUnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X3VwZGF0ZV9y
b3VuZHRyaXAoIiIiCitCVUdYMSBYUCBSRUxFQVNFIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9h
cmQuaHRtbCA9IFRFWFQiIiIsICdmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sJywgc2V0
KFtJTUFHRV0pLCAiIiIKK0JVR1gxIFhQIFJFTEVBU0UgR1BVIDogZmFpbHVyZXMvZXhwZWN0ZWQv
a2V5Ym9hcmQuaHRtbCA9IFRFWFQKK0JVR19ORVdMWV9DUkVBVEVEIFhQIFJFTEVBU0UgQ1BVIDog
ZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFIiIiKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0X3VwZGF0ZV9yb3VuZHRyaXAoIiIiCitCVUdYMSBYUCBSRUxFQVNFIDogZmFpbHVy
ZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IFRFWFQiIiIsICdmYWlsdXJlcy9leHBlY3RlZC9r
ZXlib2FyZC5odG1sJywgc2V0KFtQQVNTXSksICIiIgorQlVHWDEgWFAgUkVMRUFTRSBHUFUgOiBm
YWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gVEVYVCIiIikKKworICAgICAgICBzZWxm
LmFzc2VydF91cGRhdGVfcm91bmR0cmlwKCIiIgorQlVHWDEgWFAgUkVMRUFTRSA6IGZhaWx1cmVz
L2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBURVhUIiIiLCAnZmFpbHVyZXMvZXhwZWN0ZWQva2V5
Ym9hcmQuaHRtbCcsIHNldChbSU1BR0VdKSwgIiIiCitCVUdYMSBYUCBSRUxFQVNFIEdQVSA6IGZh
aWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBURVhUCitCVUdBV0VTT01FIFhQIFJFTEVB
U0UgQ1BVIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFIiIiLCBwYXJz
ZWRfYnVnX21vZGlmaWVyPSdCVUdBV0VTT01FJykKKworICAgICAgICBzZWxmLmFzc2VydF91cGRh
dGVfcm91bmR0cmlwKCIiIgorQlVHWDEgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQu
aHRtbCA9IFRFWFQiIiIsICdmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sJywgc2V0KFtJ
TUFHRV0pLCAiIiIKK0JVR1gxIFhQIERFQlVHIENQVSA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJv
YXJkLmh0bWwgPSBURVhUCitCVUdYMSBYUCBHUFUgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2Fy
ZC5odG1sID0gVEVYVAorQlVHWDEgVklTVEEgV0lONyA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJv
YXJkLmh0bWwgPSBURVhUCitCVUdfTkVXTFlfQ1JFQVRFRCBYUCBSRUxFQVNFIENQVSA6IGZhaWx1
cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRSIiIikKKworICAgICAgICBzZWxmLmFz
c2VydF91cGRhdGVfcm91bmR0cmlwKCIiIgorQlVHWDEgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQv
a2V5Ym9hcmQuaHRtbCA9IFRFWFQiIiIsICdmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1s
Jywgc2V0KFtQQVNTXSksICIiIgorQlVHWDEgWFAgREVCVUcgQ1BVIDogZmFpbHVyZXMvZXhwZWN0
ZWQva2V5Ym9hcmQuaHRtbCA9IFRFWFQKK0JVR1gxIFhQIEdQVSA6IGZhaWx1cmVzL2V4cGVjdGVk
L2tleWJvYXJkLmh0bWwgPSBURVhUCitCVUdYMSBWSVNUQSBXSU43IDogZmFpbHVyZXMvZXhwZWN0
ZWQva2V5Ym9hcmQuaHRtbCA9IFRFWFQiIiIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfdXBkYXRl
X3JvdW5kdHJpcCgiIiIKK0JVR1gxIFdJTiA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0
bWwgPSBURVhUIiIiLCAnZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCcsIHNldChbSU1B
R0VdKSwgIiIiCitCVUdYMSBYUCBERUJVRyBDUFUgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2Fy
ZC5odG1sID0gVEVYVAorQlVHWDEgWFAgR1BVIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQu
aHRtbCA9IFRFWFQKK0JVR1gxIFZJU1RBIFdJTjcgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2Fy
ZC5odG1sID0gVEVYVAorQlVHX05FV0xZX0NSRUFURUQgWFAgUkVMRUFTRSBDUFUgOiBmYWlsdXJl
cy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gSU1BR0UiIiIpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRfdXBkYXRlX3JvdW5kdHJpcCgiIiIKK0JVR1gxIFhQIFJFTEVBU0UgQ1BVOiBmYWlsdXJlcy9l
eHBlY3RlZC9rZXlib2FyZC5odG1sID0gVEVYVCIiIiwgJ2ZhaWx1cmVzL2V4cGVjdGVkL2tleWJv
YXJkLmh0bWwnLCBzZXQoW0lNQUdFXSksICIiIgorQlVHX05FV0xZX0NSRUFURUQgV0lOIFJFTEVB
U0UgQ1BVIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFIiIiLCB0ZXN0
X2NvbmZpZ3M9c2VsZi5XSU5fUkVMRUFTRV9DUFVfQ09ORklHUykKKworICAgICAgICBzZWxmLmFz
c2VydF91cGRhdGVfcm91bmR0cmlwKCIiIgorQlVHWDEgWFAgUkVMRUFTRSBDUFU6IGZhaWx1cmVz
L2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBURVhUIiIiLCAnZmFpbHVyZXMvZXhwZWN0ZWQva2V5
Ym9hcmQuaHRtbCcsIHNldChbUEFTU10pLCAnJywgdGVzdF9jb25maWdzPXNlbGYuV0lOX1JFTEVB
U0VfQ1BVX0NPTkZJR1MpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfdXBkYXRlX3JvdW5kdHJpcCgi
IiIKK0JVR1gxIFJFTEVBU0UgQ1BVOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0g
VEVYVCIiIiwgJ2ZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwnLCBzZXQoW0lNQUdFXSks
ICIiIgorQlVHWDEgTElOVVggTUFDIFJFTEVBU0UgQ1BVIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5
Ym9hcmQuaHRtbCA9IFRFWFQKK0JVR19ORVdMWV9DUkVBVEVEIFdJTiBSRUxFQVNFIENQVSA6IGZh
aWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRSIiIiwgdGVzdF9jb25maWdzPXNl
bGYuV0lOX1JFTEVBU0VfQ1BVX0NPTkZJR1MpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfdXBkYXRl
X3JvdW5kdHJpcCgiIiIKK0JVR1gxIE1BQyA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0
bWwgPSBURVhUIiIiLCAnZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCcsIHNldChbSU1B
R0VdKSwgIiIiCitCVUdYMSBNQUMgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0g
VEVYVAorQlVHX05FV0xZX0NSRUFURUQgV0lOIFJFTEVBU0UgQ1BVIDogZmFpbHVyZXMvZXhwZWN0
ZWQva2V5Ym9hcmQuaHRtbCA9IElNQUdFIiIiLCB0ZXN0X2NvbmZpZ3M9c2VsZi5XSU5fUkVMRUFT
RV9DUFVfQ09ORklHUykKKworICAgIGRlZiB0ZXN0X3VwZGF0ZV9leHBlY3RhdGlvbl9tdWx0aXBs
ZShzZWxmKToKKyAgICAgICAgaW5fc3RyaW5nID0gIiIiCitCVUdYMSBXSU4gOiBmYWlsdXJlcy9l
eHBlY3RlZC9rZXlib2FyZC5odG1sID0gSU1BR0UKK0JVR1gyIFdJTiA6IGZhaWx1cmVzL2V4cGVj
dGVkL2F1ZGlvLmh0bWwgPSBJTUFHRSIiIgorICAgICAgICBleHBlY3RhdGlvbl9saW5lcyA9IHNl
bGYubWFrZV9wYXJzZWRfZXhwZWN0YXRpb25fbGluZXMoaW5fc3RyaW5nKQorICAgICAgICBjb252
ZXJ0ZXIgPSBUZXN0Q29uZmlndXJhdGlvbkNvbnZlcnRlcihzZWxmLnRlc3RfcG9ydC5hbGxfdGVz
dF9jb25maWd1cmF0aW9ucygpLCBzZWxmLnRlc3RfcG9ydC5jb25maWd1cmF0aW9uX3NwZWNpZmll
cl9tYWNyb3MoKSkKKyAgICAgICAgZWRpdG9yID0gVGVzdEV4cGVjdGF0aW9uc0VkaXRvcihleHBl
Y3RhdGlvbl9saW5lcykKKyAgICAgICAgdGVzdCA9ICJmYWlsdXJlcy9leHBlY3RlZC9rZXlib2Fy
ZC5odG1sIgorCisgICAgICAgIGVkaXRvci51cGRhdGVfZXhwZWN0YXRpb24odGVzdCwgc2V0KFtU
ZXN0Q29uZmlndXJhdGlvbihOb25lLCAneHAnLCAneDg2JywgJ3JlbGVhc2UnLCAnY3B1JyldKSwg
c2V0KFtJTUFHRV9QTFVTX1RFWFRdKSwgJ0JVR19VUERBVEUxJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplci5saXN0X3RvX3N0cmluZyhleHBlY3Rh
dGlvbl9saW5lcywgY29udmVydGVyKSwgIiIiCitCVUdYMSBYUCBERUJVRyBDUFUgOiBmYWlsdXJl
cy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gSU1BR0UKK0JVR1gxIFhQIEdQVSA6IGZhaWx1cmVz
L2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRQorQlVHWDEgVklTVEEgV0lONyA6IGZhaWx1
cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRQorQlVHWDIgV0lOIDogZmFpbHVyZXMv
ZXhwZWN0ZWQvYXVkaW8uaHRtbCA9IElNQUdFCitCVUdfVVBEQVRFMSBYUCBSRUxFQVNFIENQVSA6
IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRStURVhUIiIiKQorCisgICAg
ICAgIGVkaXRvci51cGRhdGVfZXhwZWN0YXRpb24odGVzdCwgc2V0KFtUZXN0Q29uZmlndXJhdGlv
bihOb25lLCAneHAnLCAneDg2JywgJ2RlYnVnJywgJ2NwdScpXSksIHNldChbVEVYVF0pLCAnQlVH
X1VQREFURTInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhUZXN0RXhwZWN0YXRpb25TZXJp
YWxpemVyLmxpc3RfdG9fc3RyaW5nKGV4cGVjdGF0aW9uX2xpbmVzLCBjb252ZXJ0ZXIpLCAiIiIK
K0JVR1gxIFhQIEdQVSA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRQor
QlVHWDEgVklTVEEgV0lONyA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFH
RQorQlVHWDIgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvYXVkaW8uaHRtbCA9IElNQUdFCitCVUdf
VVBEQVRFMSBYUCBSRUxFQVNFIENQVSA6IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwg
PSBJTUFHRStURVhUCitCVUdfVVBEQVRFMiBYUCBERUJVRyBDUFUgOiBmYWlsdXJlcy9leHBlY3Rl
ZC9rZXlib2FyZC5odG1sID0gVEVYVCIiIikKKworICAgICAgICBlZGl0b3IudXBkYXRlX2V4cGVj
dGF0aW9uKHRlc3QsIHNlbGYuV0lOX1JFTEVBU0VfQ1BVX0NPTkZJR1MsIHNldChbQ1JBU0hdKSwg
J0JVR19VUERBVEUzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoVGVzdEV4cGVjdGF0aW9u
U2VyaWFsaXplci5saXN0X3RvX3N0cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29udmVydGVyKSwg
IiIiCitCVUdYMSBWSVNUQSBERUJVRyBDUFUgOiBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5o
dG1sID0gSU1BR0UKK0JVR1gxIFdJTjcgUkVMRUFTRSBHUFUgOiBmYWlsdXJlcy9leHBlY3RlZC9r
ZXlib2FyZC5odG1sID0gSU1BR0UKK0JVR1gxIFdJTjcgREVCVUcgOiBmYWlsdXJlcy9leHBlY3Rl
ZC9rZXlib2FyZC5odG1sID0gSU1BR0UKK0JVR1gxIFZJU1RBIFhQIEdQVSA6IGZhaWx1cmVzL2V4
cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRQorQlVHWDIgV0lOIDogZmFpbHVyZXMvZXhwZWN0
ZWQvYXVkaW8uaHRtbCA9IElNQUdFCitCVUdfVVBEQVRFMiBYUCBERUJVRyBDUFUgOiBmYWlsdXJl
cy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gVEVYVAorQlVHX1VQREFURTMgV0lOIFJFTEVBU0Ug
Q1BVIDogZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IENSQVNIIiIiKQorCisgICAg
ICAgIGVkaXRvci51cGRhdGVfZXhwZWN0YXRpb24odGVzdCwgc2VsZi5SRUxFQVNFX0NPTkZJR1Ms
IHNldChbRkFJTF0pLCAnQlVHX1VQREFURTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhU
ZXN0RXhwZWN0YXRpb25TZXJpYWxpemVyLmxpc3RfdG9fc3RyaW5nKGV4cGVjdGF0aW9uX2xpbmVz
LCBjb252ZXJ0ZXIpLCAiIiIKK0JVR1gxIFhQIERFQlVHIEdQVSA6IGZhaWx1cmVzL2V4cGVjdGVk
L2tleWJvYXJkLmh0bWwgPSBJTUFHRQorQlVHWDEgVklTVEEgV0lONyBERUJVRyA6IGZhaWx1cmVz
L2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBJTUFHRQorQlVHWDIgV0lOIDogZmFpbHVyZXMvZXhw
ZWN0ZWQvYXVkaW8uaHRtbCA9IElNQUdFCitCVUdfVVBEQVRFMiBYUCBERUJVRyBDUFUgOiBmYWls
dXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sID0gVEVYVAorQlVHX1VQREFURTQgUkVMRUFTRSA6
IGZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwgPSBGQUlMIiIiKQorCisgICAgICAgIGVk
aXRvci51cGRhdGVfZXhwZWN0YXRpb24odGVzdCwgc2V0KHNlbGYudGVzdF9wb3J0LmFsbF90ZXN0
X2NvbmZpZ3VyYXRpb25zKCkpLCBzZXQoW1RJTUVPVVRdKSwgJ0JVR19VUERBVEU1JykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoVGVzdEV4cGVjdGF0aW9uU2VyaWFsaXplci5saXN0X3RvX3N0
cmluZyhleHBlY3RhdGlvbl9saW5lcywgY29udmVydGVyKSwgIiIiCitCVUdYMiBXSU4gOiBmYWls
dXJlcy9leHBlY3RlZC9hdWRpby5odG1sID0gSU1BR0UKK0JVR19VUERBVEU1IDogZmFpbHVyZXMv
ZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCA9IFRJTUVPVVQiIiIpCisKKwogaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkK
</data>
<flag name="review"
          id="98054"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="98055"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>