<?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>50374</bug_id>
          
          <creation_ts>2010-12-01 22:53:10 -0800</creation_ts>
          <short_desc>nrwt multiprocessing - simpify message_broker and move logic back into run_webkit_tests</short_desc>
          <delta_ts>2011-01-11 19:01:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>50372</dependson>
    
    <dependson>50443</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>eric</cc>
    
    <cc>hayato</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>316022</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-01 22:53:10 -0800</bug_when>
    <thetext>nrwt multiprocessing - move logic back into run_webkit_tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316028</commentid>
    <comment_count>1</comment_count>
      <attachid>75357</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-01 23:48:22 -0800</bug_when>
    <thetext>Created attachment 75357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316325</commentid>
    <comment_count>2</comment_count>
      <attachid>75357</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-12-02 12:15:46 -0800</bug_when>
    <thetext>Comment on attachment 75357
Patch

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

Seems like this is mostly just moving stuff around.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py:117
&gt; +        thread = super(_MultiThreadedBroker, self).start_worker(test_runner,

Nit: I think the preferred calling convention is _WorkerMessageBroker.start_worker(self, test_runner, worker_number) because super can be ambiguous in the case of multiple inheritance.  I think this is consistent to how we use the super class name in __init__.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:233
&gt; +# FIXME: This name is somewhat misleading because the actual workers have
&gt; +# their own internal state in TestShellThread. However, a better name for
&gt; +# this has yet to be found.

Nit: I think this name is fine for now and the docstring describes it.  I would just remove this comment.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:269
&gt; +        # or processes. This is a bit awkward but a better name has yet to

Nit: Missing closing paren.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:687
&gt; +        for thread in [w.thread for w in workers.values()]:
&gt; +            thread_timings.append({&apos;name&apos;: thread.name(),

This is a bit convoluted.  Why not just:
for worker in workers.values():
    thread = worker.thread
    thread_timings.append(....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316412</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-02 14:03:17 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 75357 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75357&amp;action=review
&gt; 
&gt; Seems like this is mostly just moving stuff around.
&gt; 

Yeah, pretty much.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py:117
&gt; &gt; +        thread = super(_MultiThreadedBroker, self).start_worker(test_runner,
&gt; 
&gt; Nit: I think the preferred calling convention is _WorkerMessageBroker.start_worker(self, test_runner, worker_number) because super can be ambiguous in the case of multiple inheritance.  I think this is consistent to how we use the super class name in __init__.
&gt; 

Maybe I&apos;m misunderstanding something. Are you&apos;re saying it&apos;s ambiguous because super() might end up calling threading.start_broker() if MultiThreadedBroker didn&apos;t implement the method, and it&apos;s better to be explicit about which class you intended to invoke?

Yeah, I could agree that that might be clearer, but I wanted to confirm what you were saying before changing anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316423</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-12-02 14:41:47 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Maybe I&apos;m misunderstanding something. Are you&apos;re saying it&apos;s ambiguous because super() might end up calling threading.start_broker() if MultiThreadedBroker didn&apos;t implement the method, and it&apos;s better to be explicit about which class you intended to invoke?

I&apos;m just saying being explicit is better than using super().  I agree that it&apos;s not actually dangerous in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316561</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-02 17:35:29 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 75357 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75357&amp;action=review
&gt; 
&gt; Seems like this is mostly just moving stuff around.
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py:117
&gt; &gt; +        thread = super(_MultiThreadedBroker, self).start_worker(test_runner,
&gt; 
&gt; Nit: I think the preferred calling convention is _WorkerMessageBroker.start_worker(self, test_runner, worker_number) because super can be ambiguous in the case of multiple inheritance.  I think this is consistent to how we use the super class name in __init__.

Fixed in bug 50372.

&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:233
&gt; &gt; +# FIXME: This name is somewhat misleading because the actual workers have
&gt; &gt; +# their own internal state in TestShellThread. However, a better name for
&gt; &gt; +# this has yet to be found.
&gt; 
&gt; Nit: I think this name is fine for now and the docstring describes it.  I would just remove this comment.
&gt;

Done.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:269
&gt; &gt; +        # or processes. This is a bit awkward but a better name has yet to
&gt; 
&gt; Nit: Missing closing paren.
&gt;

Fixed.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:687
&gt; &gt; +        for thread in [w.thread for w in workers.values()]:
&gt; &gt; +            thread_timings.append({&apos;name&apos;: thread.name(),
&gt; 
&gt; This is a bit convoluted.  Why not just:
&gt; for worker in workers.values():
&gt;     thread = worker.thread
&gt;     thread_timings.append(....

Done. Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316564</commentid>
    <comment_count>6</comment_count>
      <attachid>75445</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-02 17:38:09 -0800</bug_when>
    <thetext>Created attachment 75445
update w/ review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316625</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-02 19:42:04 -0800</bug_when>
    <thetext>Committed r73231: &lt;http://trac.webkit.org/changeset/73231&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316748</commentid>
    <comment_count>8</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-12-03 02:10:00 -0800</bug_when>
    <thetext>Hi,

It seemed that r73211 broke Chromium&apos;s &quot;Webkit Win (dbg)(2)&quot; bot. Unfortunately, there is some conflict with this change, so I needed to roll out this patch.

http://trac.webkit.org/changeset/73255

Feel free to re-land this patch after r73211 is rolled out. Thank you for your understandings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332865</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-11 19:01:10 -0800</bug_when>
    <thetext>closing ... the new patches are different.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75357</attachid>
            <date>2010-12-01 23:48:22 -0800</date>
            <delta_ts>2010-12-02 17:38:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50374-20101201234821.patch</filename>
            <type>text/plain</type>
            <size>23455</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkZjg1NDM3MTI3YWIzODU0ZWE5YmM5NzdhZWE1ZTgzZjE2OTM1YzRkLi43ODFkNGJk
ZDIyYTQ4OGIzN2I3ZTc2MjMyY2NkMTc5YjdhZWY5NmU5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsNDUgQEAK
IAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBucnd0IG11
bHRpcHJvY2Vzc2luZyAtIG1vdmUgbG9naWMgYmFjayBpbnRvIHJ1bl93ZWJraXRfdGVzdHMKKwor
ICAgICAgICBUaGlzIGNoYW5nZSBtb3ZlcyBhIGJ1bmNoIG9mIGxvZ2ljIHRoYXQgSSBoYWQgcHV0
IGludG8KKyAgICAgICAgbWVzc2FnZV9icm9rZXIgYmFjayBpbnRvIHJ1bl93ZWJraXRfdGVzdHMs
IGluIGEgc2xpZ2h0bHkKKyAgICAgICAgZGlmZmVyZW50IGZvcm1hdC4gV29ya2VyTWVzc2FnZUJy
b2tlciBuZWVkZWQgdG8gYmVjb21lIGxlc3MgYXdhcmUgb2YKKyAgICAgICAgdGhlIGxvZ2ljIHRo
ZSBUZXN0UnVubmVyIGNsYXNzIHVzZXMsIGFuZCBtb3JlIGdlbmVyaWMuCisgICAgICAgIEV2ZW50
dWFsbHkgdGhlIE1lc3NhZ2VCcm9rZXIgd2lsbCBvbmx5IGRvIGdlbmVyaWMgbWVzc2FnaW5nIGFu
ZAorICAgICAgICB0aHJlYWQvcHJvY2Vzcy1wb29saW5nLCBhbmQgKGFsbW9zdCkgYWxsIG9mIHRo
ZQorICAgICAgICBydW4td2Via2l0LXRlc3RzLXNwZWNpZmljIGxvZ2ljIHdpbGwgYmUgbW92ZWQg
dG8KKyAgICAgICAgcnVuX3dlYmtpdF90ZXN0cy5weSBhbmQgZHVtcF9yZW5kZXJfdHJlZV90aHJl
YWQucHkuCisgICAgICAgIAorICAgICAgICBUaGUgYmlnZ2VzdCBjaGFuZ2VzIGFyZSB0aGF0IHRo
ZSBCcm9rZXIgY2FuIG5vdyBzdGFydCBhIHNpbmdsZQorICAgICAgICB3b3JrZXIsIGJ1dCB0aGUg
cmVzcG9uc2liaWxpdHkgZm9yIHN0YXJ0aW5nIGFsbCBvZiB0aGVtIGlzIHB1c2hlZAorICAgICAg
ICBiYWNrIHRvIHRoZSBUZXN0UnVubmVyIChNYW5hZ2VyKSwgYW5kIHRoZSBsb2dpYyBmb3IgY2hl
Y2tpbmcgaWYKKyAgICAgICAgdGhlIHRocmVhZHMgYXJlIGRvbmUgb3Igd2VkZ2VkIGlzIG1vdmVk
IGJhY2sgdG8gVGVzdFJ1bm5lci4gV2UKKyAgICAgICAgYWxzbyByZW1vdmUgV29ya2VyTWVzc2Fn
ZUJyb2tlci5jbGVhbnVwIChub3QgbmVlZGVkKSBhbmQKKyAgICAgICAgY2FuY2VsX3dvcmtlcnMg
KHRoZXkgaGF2ZSB0byBiZSBjYW5jZWxsZWQgaW5kaXZpZHVhbGx5KS4KKyAgICAgICAgCisgICAg
ICAgIFRoZSAgbWVzc2FnZV9icm9rZXIgaXMgbm93IGVuY2Fwc3VsYXRlZCBpbnNpZGUKKyAgICAg
ICAgVGVzdFJ1bm5lci5fcnVuX3Rlc3RzKCk7IGl0IG9ubHkgbmVlZHMgdG8gZXhpc3Qgd2hpbGUg
YWN0dWFsbHkKKyAgICAgICAgcnVubmluZyB0aGUgdGVzdHMuCisKKyAgICAgICAgQWxzbywgZGVs
ZXRlIGEgYnVuY2ggb2YgdGVzdHMgaW4gbWVzc2FnZV9icm9rZXJfdW5pdHRlc3QgdGhhdCBubwor
ICAgICAgICBsb25nZXIgbWFrZSBtdWNoIHNlbnNlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZGVw
ZW5kcyBvbiBidWcgNTAzNzIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwMzc0CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jy
b2tlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS9tZXNzYWdlX2Jyb2tlcl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisK
KzIwMTAtMTItMDEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IG1pbm9yIGNsZWFudXAgZm9yIG11bHRpcHJvY2Vzc2luZyB3b3JrCiAKICAgICAgICAg
VGhpcyBjaGFuZ2U6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlci5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJv
a2VyLnB5CmluZGV4IGMwNmVlNGU4ZmJkODJhZmEyYmFhNGYxYWM5MDY3ZDhhYWZhYmFlNWMuLjc1
NTI0NmQ1YzZjYTVlNTQ4OGU2N2IzYzA1OGViMDRlNmM0OGUwZDIgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3Nh
Z2VfYnJva2VyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyLnB5CkBAIC02NCwxMTQgKzY0LDg4IEBA
IGNsYXNzIF9Xb3JrZXJNZXNzYWdlQnJva2VyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBvcnQsIG9wdGlvbnMpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBz
ZWxmLl9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl9udW1fd29ya2VycyA9IGludChz
ZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcykKIAotICAgICAgICAjIFRoaXMgbWFwcyB3b3Jr
ZXIgbmFtZXMgdG8gdGhlaXIgVGVzdFNoZWxsVGhyZWFkIG9iamVjdHMuCisgICAgICAgICMgVGhp
cyBtYXBzIHdvcmtlcl9uYW1lcyB0byBUZXN0U2hlbGxUaHJlYWRzCiAgICAgICAgIHNlbGYuX3Ro
cmVhZHMgPSB7fQogCi0gICAgZGVmIHN0YXJ0X3dvcmtlcnMoc2VsZiwgdGVzdF9ydW5uZXIpOgot
ICAgICAgICAiIiJTdGFydHMgdXAgdGhlIHBvb2wgb2Ygd29ya2VycyBmb3IgcnVubmluZyB0aGUg
dGVzdHMuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHRlc3RfcnVubmVyOiBhIGhhbmRs
ZSB0byB0aGUgbWFuYWdlci9UZXN0UnVubmVyIG9iamVjdAotICAgICAgICAiIiIKLSAgICAgICAg
c2VsZi5fdGVzdF9ydW5uZXIgPSB0ZXN0X3J1bm5lcgotICAgICAgICBmb3Igd29ya2VyX251bWJl
ciBpbiB4cmFuZ2Uoc2VsZi5fbnVtX3dvcmtlcnMpOgotICAgICAgICAgICAgdGhyZWFkID0gc2Vs
Zi5zdGFydF93b3JrZXIod29ya2VyX251bWJlcikKLSAgICAgICAgICAgIHNlbGYuX3RocmVhZHNb
dGhyZWFkLm5hbWUoKV0gPSB0aHJlYWQKLSAgICAgICAgcmV0dXJuIHNlbGYuX3RocmVhZHMudmFs
dWVzKCkKLQotICAgIGRlZiBzdGFydF93b3JrZXIoc2VsZiwgd29ya2VyX251bWJlcik6Ci0gICAg
ICAgICMgRklYTUU6IFJlcGxhY2Ugd2l0aCBzb21ldGhpbmcgdGhhdCBpc24ndCBhIHRocmVhZC4K
KyAgICBkZWYgc3RhcnRfd29ya2VyKHNlbGYsIHRlc3RfcnVubmVyLCB3b3JrZXJfbnVtYmVyKToK
KyAgICAgICAgIiIiU3RhcnQgYSB3b3JrZXIgd2l0aCB0aGUgZ2l2ZW4gaW5kZXggbnVtYmVyLgor
CisgICAgICAgIFJldHVybnMgdGhlIGFjdHVhbCBUZXN0U2hlbGxUaHJlYWQgb2JqZWN0LiIiIgor
ICAgICAgICAjIEZJWE1FOiBSZW1vdmUgZGVwZW5kZW5jaWVzIG9uIHRlc3RfcnVubmVyLgorICAg
ICAgICAjIEZJWE1FOiBSZXBsYWNlIHdpdGggc29tZXRoaW5nIHRoYXQgaXNuJ3QgYSB0aHJlYWQs
IGFuZCByZXR1cm4KKyAgICAgICAgIyB0aGUgbmFtZSBvZiB0aGUgd29ya2VyLCBub3QgdGhlIHRo
cmVhZCBpdHNlbGYuIFdlIG5lZWQgdG8gcmV0dXJuCisgICAgICAgICMgdGhlIHRocmVhZCBpdHNl
bGYgZm9yIG5vdyB0byBhbGxvdyBUZXN0UnVubmVyIHRvIGFjY2VzcyB0aGUgb2JqZWN0CisgICAg
ICAgICMgZGlyZWN0bHkgdG8gcmVhZCBzaGFyZWQgc3RhdGUuCisgICAgICAgIHRocmVhZCA9IGR1
bXBfcmVuZGVyX3RyZWVfdGhyZWFkLlRlc3RTaGVsbFRocmVhZChzZWxmLl9wb3J0LAorICAgICAg
ICAgICAgc2VsZi5fb3B0aW9ucywgd29ya2VyX251bWJlciwgdGVzdF9ydW5uZXIuX2N1cnJlbnRf
ZmlsZW5hbWVfcXVldWUsCisgICAgICAgICAgICB0ZXN0X3J1bm5lci5fcmVzdWx0X3F1ZXVlKQor
ICAgICAgICBzZWxmLl90aHJlYWRzW3RocmVhZC5uYW1lKCldID0gdGhyZWFkCiAgICAgICAgICMg
Tm90ZTogRG9uJ3Qgc3RhcnQoKSB0aGUgdGhyZWFkISBJZiB3ZSBkaWQsIGl0IHdvdWxkIGFjdHVh
bGx5CiAgICAgICAgICMgY3JlYXRlIGFub3RoZXIgdGhyZWFkIGFuZCBzdGFydCBleGVjdXRpbmcg
aXQsIGFuZCB3ZSdkIG5vIGxvbmdlcgogICAgICAgICAjIGJlIHNpbmdsZS10aHJlYWRlZC4KLSAg
ICAgICAgcmV0dXJuIGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLlRlc3RTaGVsbFRocmVhZChzZWxm
Ll9wb3J0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucywgd29ya2VyX251bWJlciwKLSAgICAg
ICAgICAgIHNlbGYuX3Rlc3RfcnVubmVyLl9jdXJyZW50X2ZpbGVuYW1lX3F1ZXVlLAotICAgICAg
ICAgICAgc2VsZi5fdGVzdF9ydW5uZXIuX3Jlc3VsdF9xdWV1ZSkKKyAgICAgICAgcmV0dXJuIHRo
cmVhZAogCi0gICAgZGVmIHJ1bl9tZXNzYWdlX2xvb3Aoc2VsZik6Ci0gICAgICAgICIiIkxvb3Ag
cHJvY2Vzc2luZyBtZXNzYWdlcyB1bnRpbCBkb25lLiIiIgotICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yCisgICAgZGVmIGNhbmNlbF93b3JrZXIoc2VsZiwgd29ya2VyX25hbWUpOgor
ICAgICAgICAiIiJBdHRlbXB0IHRvIGNhbmNlbCBhIHdvcmtlciAoYmVzdC1lZmZvcnQpLiBUaGUg
d29ya2VyIG1heSBzdGlsbCBiZQorICAgICAgICBydW5uaW5nIGFmdGVyIHRoaXMgY2FsbCByZXR1
cm5zLiIiIgorICAgICAgICBzZWxmLl90aHJlYWRzW3dvcmtlcl9uYW1lXS5jYW5jZWwoKQogCi0g
ICAgZGVmIGNhbmNlbF93b3JrZXJzKHNlbGYpOgotICAgICAgICAiIiJDYW5jZWwvaW50ZXJydXB0
IGFueSB3b3JrZXJzIHRoYXQgYXJlIHN0aWxsIGFsaXZlLiIiIgotICAgICAgICBwYXNzCisgICAg
ZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHdvcmtlcl9uYW1lKToKKyAgICAgICAgIiIiTG9n
IGluZm9ybWF0aW9uIGFib3V0IHRoZSBnaXZlbiB3b3JrZXIncyBzdGF0ZS4iIiIKKyAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi0gICAgZGVmIGNsZWFudXAoc2VsZik6Ci0gICAg
ICAgICIiIlBlcmZvcm0gYW55IG5lY2Vzc2FyeSBjbGVhbnVwIG9uIHNodXRkb3duLiIiIgotICAg
ICAgICBwYXNzCisgICAgZGVmIHJ1bl9tZXNzYWdlX2xvb3Aoc2VsZiwgdGVzdF9ydW5uZXIpOgor
ICAgICAgICAiIiJMb29wIHByb2Nlc3NpbmcgbWVzc2FnZXMgdW50aWwgZG9uZS4iIiIKKyAgICAg
ICAgIyBGSVhNRTogZXZlbnR1YWxseSB3ZSdsbCBuZWVkIGEgbWVzc2FnZSBsb29wIHRoYXQgdGhl
IHdvcmtlcnMKKyAgICAgICAgIyBjYW4gYWxzbyBjYWxsLgorICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yCiAKIAogY2xhc3MgX0lubGluZUJyb2tlcihfV29ya2VyTWVzc2FnZUJyb2tl
cik6Ci0gICAgZGVmIHJ1bl9tZXNzYWdlX2xvb3Aoc2VsZik6CisgICAgZGVmIHJ1bl9tZXNzYWdl
X2xvb3Aoc2VsZiwgdGVzdF9ydW5uZXIpOgogICAgICAgICB0aHJlYWQgPSBzZWxmLl90aHJlYWRz
LnZhbHVlcygpWzBdCi0gICAgICAgIHRocmVhZC5ydW5faW5fbWFpbl90aHJlYWQoc2VsZi5fdGVz
dF9ydW5uZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9y
dW5uZXIuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkpCi0gICAgICAgIHNlbGYuX3Rlc3RfcnVubmVy
LnVwZGF0ZSgpCisgICAgICAgIHRocmVhZC5ydW5faW5fbWFpbl90aHJlYWQodGVzdF9ydW5uZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9ydW5uZXIuX2N1cnJlbnRf
cmVzdWx0X3N1bW1hcnkpCisKKyAgICBkZWYgbG9nX3dlZGdlZF93b3JrZXIoc2VsZiwgd29ya2Vy
X25hbWUpOgorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignX0lubGluZUJyb2tlci5sb2df
d2VkZ2VkX3dvcmtlcigpIGNhbGxlZCcpCiAKIAogY2xhc3MgX011bHRpVGhyZWFkZWRCcm9rZXIo
X1dvcmtlck1lc3NhZ2VCcm9rZXIpOgotICAgIGRlZiBzdGFydF93b3JrZXIoc2VsZiwgd29ya2Vy
X251bWJlcik6Ci0gICAgICAgIHRocmVhZCA9IHN1cGVyKF9NdWx0aVRocmVhZGVkQnJva2VyLCBz
ZWxmKS5zdGFydF93b3JrZXIod29ya2VyX251bWJlcikKKyAgICBkZWYgc3RhcnRfd29ya2VyKHNl
bGYsIHRlc3RfcnVubmVyLCB3b3JrZXJfbnVtYmVyKToKKyAgICAgICAgdGhyZWFkID0gc3VwZXIo
X011bHRpVGhyZWFkZWRCcm9rZXIsIHNlbGYpLnN0YXJ0X3dvcmtlcih0ZXN0X3J1bm5lciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3b3JrZXJfbnVtYmVyKQorICAgICAgICAjIFVubGlrZSB0aGUgYmFzZSBpbXBsZW1lbnRh
dGlvbiwgaGVyZSB3ZSBhY3R1YWxseSB3YW50IHRvIHN0YXJ0CisgICAgICAgICMgdGhlIHRocmVh
ZC4KICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKICAgICAgICAgcmV0dXJuIHRocmVhZAogCi0gICAg
ZGVmIHJ1bl9tZXNzYWdlX2xvb3Aoc2VsZik6Ci0gICAgICAgICMgTG9vcCB0aHJvdWdoIGFsbCB0
aGUgdGhyZWFkcyB3YWl0aW5nIGZvciB0aGVtIHRvIGZpbmlzaC4KLSAgICAgICAgc29tZV90aHJl
YWRfaXNfYWxpdmUgPSBUcnVlCi0gICAgICAgIHdoaWxlIHNvbWVfdGhyZWFkX2lzX2FsaXZlOgot
ICAgICAgICAgICAgc29tZV90aHJlYWRfaXNfYWxpdmUgPSBGYWxzZQotICAgICAgICAgICAgdCA9
IHRpbWUudGltZSgpCi0gICAgICAgICAgICBmb3IgdGhyZWFkIGluIHNlbGYuX3RocmVhZHMudmFs
dWVzKCk6Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uX2luZm8gPSB0aHJlYWQuZXhjZXB0aW9u
X2luZm8oKQotICAgICAgICAgICAgICAgIGlmIGV4Y2VwdGlvbl9pbmZvIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgICAgICAgICAjIFJlLXJhaXNlIHRoZSB0aHJlYWQncyBleGNlcHRpb24gaGVy
ZSB0byBtYWtlIGl0Ci0gICAgICAgICAgICAgICAgICAgICMgY2xlYXIgdGhhdCB0ZXN0aW5nIHdh
cyBhYm9ydGVkLiBPdGhlcndpc2UsCi0gICAgICAgICAgICAgICAgICAgICMgdGhlIHRlc3RzIHRo
YXQgZGlkIG5vdCBydW4gd291bGQgYmUgYXNzdW1lZAotICAgICAgICAgICAgICAgICAgICAjIHRv
IGhhdmUgcGFzc2VkLgotICAgICAgICAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25faW5mb1sw
XSwgZXhjZXB0aW9uX2luZm9bMV0sIGV4Y2VwdGlvbl9pbmZvWzJdCi0KLSAgICAgICAgICAgICAg
ICBpZiB0aHJlYWQuaXNBbGl2ZSgpOgotICAgICAgICAgICAgICAgICAgICBzb21lX3RocmVhZF9p
c19hbGl2ZSA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgbmV4dF90aW1lb3V0ID0gdGhyZWFk
Lm5leHRfdGltZW91dCgpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5leHRfdGltZW91dCBhbmQg
dCA+IG5leHRfdGltZW91dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ193ZWRnZWRfd29y
a2VyKHRocmVhZC5uYW1lKCksIHRocmVhZC5pZCgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
dGhyZWFkLmNsZWFyX25leHRfdGltZW91dCgpCi0KLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfcnVu
bmVyLnVwZGF0ZSgpCi0KLSAgICAgICAgICAgIGlmIHNvbWVfdGhyZWFkX2lzX2FsaXZlOgotICAg
ICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMSkKLQotICAgIGRlZiBjYW5jZWxfd29ya2Vycyhz
ZWxmKToKLSAgICAgICAgZm9yIHRocmVhZCBpbiBzZWxmLl90aHJlYWRzLnZhbHVlcygpOgotICAg
ICAgICAgICAgdGhyZWFkLmNhbmNlbCgpCi0KLQotZGVmIGxvZ193ZWRnZWRfd29ya2VyKG5hbWUs
IGlkKToKLSAgICAiIiJMb2cgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdpdmVuIHdvcmtlciBzdGF0
ZS4iIiIKLSAgICBzdGFjayA9IF9maW5kX3RocmVhZF9zdGFjayhpZCkKLSAgICBhc3NlcnQoc3Rh
Y2sgaXMgbm90IE5vbmUpCi0gICAgX2xvZy5lcnJvcigiIikKLSAgICBfbG9nLmVycm9yKCIlcyAo
dGlkICVkKSBpcyB3ZWRnZWQiICUgKG5hbWUsIGlkKSkKLSAgICBfbG9nX3N0YWNrKHN0YWNrKQot
ICAgIF9sb2cuZXJyb3IoIiIpCi0KLQotZGVmIF9maW5kX3RocmVhZF9zdGFjayhpZCk6Ci0gICAg
IiIiUmV0dXJucyBhIHN0YWNrIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGR1bXAgYSBzdGFj
ayB0cmFjZSBmb3IKLSAgICB0aGUgZ2l2ZW4gdGhyZWFkIGlkIChvciBOb25lIGlmIHRoZSBpZCBp
cyBub3QgZm91bmQpLiIiIgotICAgIGZvciB0aHJlYWRfaWQsIHN0YWNrIGluIHN5cy5fY3VycmVu
dF9mcmFtZXMoKS5pdGVtcygpOgotICAgICAgICBpZiB0aHJlYWRfaWQgPT0gaWQ6Ci0gICAgICAg
ICAgICByZXR1cm4gc3RhY2sKLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiBfbG9nX3N0YWNrKHN0
YWNrKToKLSAgICAiIiJMb2cgYSBzdGFjayB0cmFjZSB0byBsb2cuZXJyb3IoKS4iIiIKLSAgICBm
b3IgZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZSBpbiB0cmFjZWJhY2suZXh0cmFjdF9zdGFj
ayhzdGFjayk6Ci0gICAgICAgIF9sb2cuZXJyb3IoJ0ZpbGU6ICIlcyIsIGxpbmUgJWQsIGluICVz
JyAlIChmaWxlbmFtZSwgbGluZW5vLCBuYW1lKSkKLSAgICAgICAgaWYgbGluZToKLSAgICAgICAg
ICAgIF9sb2cuZXJyb3IoJyAgJXMnICUgbGluZS5zdHJpcCgpKQorICAgIGRlZiBydW5fbWVzc2Fn
ZV9sb29wKHNlbGYsIHRlc3RfcnVubmVyKToKKyAgICAgICAgIyBGSVhNRTogUmVtb3ZlIHRoZSBk
ZXBlbmRlbmNpZXMgb24gdGVzdF9ydW5uZXIuIENoZWNraW5nIG9uIHdvcmtlcnMKKyAgICAgICAg
IyBzaG91bGQgYmUgZG9uZSB2aWEgYSB0aW1lciBmaXJpbmcuCisgICAgICAgIHRlc3RfcnVubmVy
Ll9jaGVja19vbl93b3JrZXJzKCkKKworICAgIGRlZiBsb2dfd2VkZ2VkX3dvcmtlcihzZWxmLCB3
b3JrZXJfbmFtZSk6CisgICAgICAgIHRocmVhZCA9IHNlbGYuX3RocmVhZHNbd29ya2VyX25hbWVd
CisgICAgICAgIHN0YWNrID0gc2VsZi5fZmluZF90aHJlYWRfc3RhY2sodGhyZWFkLmlkKCkpCisg
ICAgICAgIGFzc2VydChzdGFjayBpcyBub3QgTm9uZSkKKyAgICAgICAgX2xvZy5lcnJvcigiIikK
KyAgICAgICAgX2xvZy5lcnJvcigiJXMgKHRpZCAlZCkgaXMgd2VkZ2VkIiAlICh3b3JrZXJfbmFt
ZSwgdGhyZWFkLmlkKCkpKQorICAgICAgICBzZWxmLl9sb2dfc3RhY2soc3RhY2spCisgICAgICAg
IF9sb2cuZXJyb3IoIiIpCisKKyAgICBkZWYgX2ZpbmRfdGhyZWFkX3N0YWNrKHNlbGYsIGlkKToK
KyAgICAgICAgIiIiUmV0dXJucyBhIHN0YWNrIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGR1
bXAgYSBzdGFjayB0cmFjZSBmb3IKKyAgICAgICAgdGhlIGdpdmVuIHRocmVhZCBpZCAob3IgTm9u
ZSBpZiB0aGUgaWQgaXMgbm90IGZvdW5kKS4iIiIKKyAgICAgICAgZm9yIHRocmVhZF9pZCwgc3Rh
Y2sgaW4gc3lzLl9jdXJyZW50X2ZyYW1lcygpLml0ZW1zKCk6CisgICAgICAgICAgICBpZiB0aHJl
YWRfaWQgPT0gaWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YWNrCisgICAgICAgIHJldHVy
biBOb25lCisKKyAgICBkZWYgX2xvZ19zdGFjayhzZWxmLCBzdGFjayk6CisgICAgICAgICIiIkxv
ZyBhIHN0YWNrIHRyYWNlIHRvIGxvZy5lcnJvcigpLiIiIgorICAgICAgICBmb3IgZmlsZW5hbWUs
IGxpbmVubywgbmFtZSwgbGluZSBpbiB0cmFjZWJhY2suZXh0cmFjdF9zdGFjayhzdGFjayk6Cisg
ICAgICAgICAgICBfbG9nLmVycm9yKCdGaWxlOiAiJXMiLCBsaW5lICVkLCBpbiAlcycgJSAoZmls
ZW5hbWUsIGxpbmVubywgbmFtZSkpCisgICAgICAgICAgICBpZiBsaW5lOgorICAgICAgICAgICAg
ICAgIF9sb2cuZXJyb3IoJyAgJXMnICUgbGluZS5zdHJpcCgpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2Fn
ZV9icm9rZXJfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlcl91bml0dGVzdC5weQppbmRleCBj
MDA2NDcxZTRhOWZiMjVmZTFjNjgwOTQ1NzZmMzJjZTUxODFmNWQ5Li45MTRkNGVjNWNjNWVhMGIy
ZDM1M2JlMWYxZjk3NjM0YTdjM2UxZjVlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlcl91bml0
dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlcl91bml0dGVzdC5weQpAQCAtNTIsNiArNTIsNyBA
QCBjbGFzcyBUZXN0VGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICBzZWxmLl90aW1l
b3V0ID0gRmFsc2UKICAgICAgICAgc2VsZi5fdGltZW91dF9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkK
ICAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2luZm8gPSBOb25lCisgICAgICAgIHNlbGYuX2lkID0g
Tm9uZQogCiAgICAgZGVmIGlkKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5faWQKQEAgLTc5
LDE3ICs4MCw2IEBAIGNsYXNzIFRlc3RUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAg
IGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbl9pbmZvID0gc3lzLmV4Y19pbmZv
KCkKIAotICAgIGRlZiBleGNlcHRpb25faW5mbyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X2V4Y2VwdGlvbl9pbmZvCi0KLSAgICBkZWYgbmV4dF90aW1lb3V0KHNlbGYpOgotICAgICAgICBp
ZiBzZWxmLl90aW1lb3V0OgotICAgICAgICAgICAgc2VsZi5fdGltZW91dF9xdWV1ZS5wdXQoJ2Rv
bmUnKQotICAgICAgICAgICAgcmV0dXJuIHRpbWUudGltZSgpIC0gMTAKLSAgICAgICAgcmV0dXJu
IHRpbWUudGltZSgpCi0KLSAgICBkZWYgY2xlYXJfbmV4dF90aW1lb3V0KHNlbGYpOgotICAgICAg
ICBzZWxmLl9uZXh0X3RpbWVvdXQgPSBOb25lCiAKIGNsYXNzIFRlc3RIYW5kbGVyKGxvZ2dpbmcu
SGFuZGxlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFzdHJlYW0pOgpAQCAtMTAxLDYxICs5
MSwyNCBAQCBjbGFzcyBUZXN0SGFuZGxlcihsb2dnaW5nLkhhbmRsZXIpOgogCiAKIGNsYXNzIE11
bHRpVGhyZWFkZWRCcm9rZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjbGFzcyBNb2Nr
VGVzdFJ1bm5lcihvYmplY3QpOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAg
ICAgICBwYXNzCi0KLSAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6Ci0gICAgICAgICAgICBwYXNz
Ci0KLSAgICAgICAgZGVmIHVwZGF0ZShzZWxmKToKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGRl
ZiBydW5fb25lX3RocmVhZChzZWxmLCBtc2cpOgotICAgICAgICBydW5uZXIgPSBzZWxmLk1vY2tU
ZXN0UnVubmVyKCkKLSAgICAgICAgcG9ydCA9IE5vbmUKLSAgICAgICAgb3B0aW9ucyA9IG1vY2t0
b29sLk1vY2tPcHRpb25zKGNoaWxkX3Byb2Nlc3Nlcz0nMScpCi0gICAgICAgIHN0YXJ0aW5nX3F1
ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAgICBzdG9wcGluZ19xdWV1ZSA9IFF1ZXVlLlF1ZXVl
KCkKLSAgICAgICAgYnJva2VyID0gbWVzc2FnZV9icm9rZXIuX011bHRpVGhyZWFkZWRCcm9rZXIo
cG9ydCwgb3B0aW9ucykKLSAgICAgICAgYnJva2VyLl90ZXN0X3J1bm5lciA9IHJ1bm5lcgotICAg
ICAgICBjaGlsZF90aHJlYWQgPSBUZXN0VGhyZWFkKHN0YXJ0aW5nX3F1ZXVlLCBzdG9wcGluZ19x
dWV1ZSkKLSAgICAgICAgbmFtZSA9IGNoaWxkX3RocmVhZC5uYW1lKCkKLSAgICAgICAgYnJva2Vy
Ll90aHJlYWRzW25hbWVdID0gY2hpbGRfdGhyZWFkCi0gICAgICAgIGNoaWxkX3RocmVhZC5zdGFy
dCgpCi0gICAgICAgIHN0YXJ0ZWRfbXNnID0gc3RhcnRpbmdfcXVldWUuZ2V0KCkKLSAgICAgICAg
c3RvcHBpbmdfcXVldWUucHV0KG1zZykKLSAgICAgICAgcmV0dXJuIGJyb2tlci5ydW5fbWVzc2Fn
ZV9sb29wKCkKLQotICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgotICAgICAgICBpbnRlcnJ1cHRl
ZCA9IHNlbGYucnVuX29uZV90aHJlYWQoJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW50
ZXJydXB0ZWQpCi0KLSAgICBkZWYgdGVzdF9pbnRlcnJ1cHQoc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKEtleWJvYXJkSW50ZXJydXB0LCBzZWxmLnJ1bl9vbmVfdGhyZWFkLCAnS2V5
Ym9hcmRJbnRlcnJ1cHQnKQotCi0gICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToKLSAgICAgICAg
b2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQotICAgICAgICBvYy5jYXB0dXJlX291
dHB1dCgpCi0gICAgICAgIGludGVycnVwdGVkID0gc2VsZi5ydW5fb25lX3RocmVhZCgnVGltZW91
dCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW50ZXJydXB0ZWQpCi0gICAgICAgIG9jLnJl
c3RvcmVfb3V0cHV0KCkKLQotICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbihzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5ydW5fb25lX3RocmVhZCwgJ0V4Y2Vw
dGlvbicpCi0KKyAgICBkZWYgbWFrZV9icm9rZXIoc2VsZik6CisgICAgICAgIG9wdGlvbnMgPSBt
b2NrdG9vbC5Nb2NrT3B0aW9ucygpCisgICAgICAgIHJldHVybiBtZXNzYWdlX2Jyb2tlci5fTXVs
dGlUaHJlYWRlZEJyb2tlcihwb3J0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9b3B0aW9ucykKIAotY2xhc3MgVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZmluZF90aHJlYWRfc3RhY2tfZm91bmQo
c2VsZik6CisgICAgICAgIGJyb2tlciA9IHNlbGYubWFrZV9icm9rZXIoKQogICAgICAgICBpZCwg
c3RhY2sgPSBzeXMuX2N1cnJlbnRfZnJhbWVzKCkuaXRlbXMoKVswXQotICAgICAgICBmb3VuZF9z
dGFjayA9IG1lc3NhZ2VfYnJva2VyLl9maW5kX3RocmVhZF9zdGFjayhpZCkKKyAgICAgICAgZm91
bmRfc3RhY2sgPSBicm9rZXIuX2ZpbmRfdGhyZWFkX3N0YWNrKGlkKQogICAgICAgICBzZWxmLmFz
c2VydE5vdEVxdWFsKGZvdW5kX3N0YWNrLCBOb25lKQogCiAgICAgZGVmIHRlc3RfZmluZF90aHJl
YWRfc3RhY2tfbm90X2ZvdW5kKHNlbGYpOgotICAgICAgICBmb3VuZF9zdGFjayA9IG1lc3NhZ2Vf
YnJva2VyLl9maW5kX3RocmVhZF9zdGFjaygwKQorICAgICAgICBicm9rZXIgPSBzZWxmLm1ha2Vf
YnJva2VyKCkKKyAgICAgICAgZm91bmRfc3RhY2sgPSBicm9rZXIuX2ZpbmRfdGhyZWFkX3N0YWNr
KDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm91bmRfc3RhY2ssIE5vbmUpCiAKICAgICBk
ZWYgdGVzdF9sb2dfd2VkZ2VkX3dvcmtlcihzZWxmKToKKyAgICAgICAgYnJva2VyID0gc2VsZi5t
YWtlX2Jyb2tlcigpCiAgICAgICAgIG9jID0gb3V0cHV0Y2FwdHVyZS5PdXRwdXRDYXB0dXJlKCkK
ICAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQogICAgICAgICBsb2dnZXIgPSBtZXNzYWdlX2Jy
b2tlci5fbG9nCkBAIC0xNjcsMTAgKzEyMCwxMCBAQCBjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgc3RvcHBpbmdfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCiAgICAgICAgIGNo
aWxkX3RocmVhZCA9IFRlc3RUaHJlYWQoc3RhcnRpbmdfcXVldWUsIHN0b3BwaW5nX3F1ZXVlKQog
ICAgICAgICBjaGlsZF90aHJlYWQuc3RhcnQoKQorICAgICAgICBicm9rZXIuX3RocmVhZHNbY2hp
bGRfdGhyZWFkLm5hbWUoKV0gPSBjaGlsZF90aHJlYWQKICAgICAgICAgbXNnID0gc3RhcnRpbmdf
cXVldWUuZ2V0KCkKIAotICAgICAgICBtZXNzYWdlX2Jyb2tlci5sb2dfd2VkZ2VkX3dvcmtlcihj
aGlsZF90aHJlYWQubmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGlsZF90aHJlYWQuaWQoKSkKKyAgICAgICAgYnJva2VyLmxvZ193ZWRnZWRfd29ya2Vy
KGNoaWxkX3RocmVhZC5uYW1lKCkpCiAgICAgICAgIHN0b3BwaW5nX3F1ZXVlLnB1dCgnJykKICAg
ICAgICAgY2hpbGRfdGhyZWFkLmpvaW4odGltZW91dD0xLjApCiAKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rl
c3RzLnB5CmluZGV4IDQ5NDdhNGM3OWVkZGM3NGRjMmEzZWFkNTc3MWRhMmYzMmY0ZWQ5NmUuLjU3
MGYyMjJiZTYzMjJlMTQxZmM1MmZkNGYwNjAwOWZlY2JjZjcyYmQgMTAwNzU1Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0cy5weQpAQCAtMjI4LDYgKzIyOCwxOCBAQCBkZWYgc3VtbWFyaXplX3VuZXhwZWN0ZWRf
cmVzdWx0cyhwb3J0X29iaiwgZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwKICAgICByZXR1
cm4gcmVzdWx0cwogCiAKKyMgRklYTUU6IFRoaXMgbmFtZSBpcyBzb21ld2hhdCBtaXNsZWFkaW5n
IGJlY2F1c2UgdGhlIGFjdHVhbCB3b3JrZXJzIGhhdmUKKyMgdGhlaXIgb3duIGludGVybmFsIHN0
YXRlIGluIFRlc3RTaGVsbFRocmVhZC4gSG93ZXZlciwgYSBiZXR0ZXIgbmFtZSBmb3IKKyMgdGhp
cyBoYXMgeWV0IHRvIGJlIGZvdW5kLgorY2xhc3MgV29ya2VyU3RhdGUob2JqZWN0KToKKyAgICAi
IiJBIGNsYXNzIGZvciB0aGUgVGVzdFJ1bm5lci9tYW5hZ2VyIHRvIHVzZSB0byB0cmFjayB0aGUg
Y3VycmVudCBzdGF0ZQorICAgIG9mIHRoZSB3b3JrZXJzLiIiIgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBuYW1lLCBudW1iZXIsIHRocmVhZCk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAg
ICAgICAgc2VsZi5udW1iZXIgPSBudW1iZXIKKyAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWQK
KworCiBjbGFzcyBUZXN0UnVubmVyOgogICAgICIiIkEgY2xhc3MgZm9yIG1hbmFnaW5nIHJ1bm5p
bmcgYSBzZXJpZXMgb2YgdGVzdHMgb24gYSBzZXJpZXMgb2YgbGF5b3V0CiAgICAgdGVzdCBmaWxl
cy4iIiIKQEAgLTI0MCwxOSArMjUyLDIzIEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgIyBpbiBE
dW1wUmVuZGVyVHJlZS4KICAgICBERUZBVUxUX1RFU1RfVElNRU9VVF9NUyA9IDYgKiAxMDAwCiAK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywgcHJpbnRlciwgbWVzc2FnZV9i
cm9rZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBvcHRpb25zLCBwcmludGVyKToK
ICAgICAgICAgIiIiSW5pdGlhbGl6ZSB0ZXN0IHJ1bm5lciBkYXRhIHN0cnVjdHVyZXMuCiAKICAg
ICAgICAgQXJnczoKICAgICAgICAgICBwb3J0OiBhbiBvYmplY3QgaW1wbGVtZW50aW5nIHBvcnQt
c3BlY2lmaWMKICAgICAgICAgICBvcHRpb25zOiBhIGRpY3Rpb25hcnkgb2YgY29tbWFuZCBsaW5l
IG9wdGlvbnMKICAgICAgICAgICBwcmludGVyOiBhIFByaW50ZXIgb2JqZWN0IHRvIHJlY29yZCB1
cGRhdGVzIHRvLgotICAgICAgICAgIG1lc3NhZ2VfYnJva2VyOiBvYmplY3QgdXNlZCB0byBjb21t
dW5pY2F0ZSB3aXRoIHdvcmtlcnMuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9wb3J0ID0g
cG9ydAogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9wcmlu
dGVyID0gcHJpbnRlcgotICAgICAgICBzZWxmLl9tZXNzYWdlX2Jyb2tlciA9IG1lc3NhZ2VfYnJv
a2VyCisKKyAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBhY3R1YWxseSBhIGNvbGxlY3Rpb24gb2Yg
V29ya2VyU3RhdGUgb2JqZWN0cyB0aGF0CisgICAgICAgICMgcmVwcmVzZW50IHRoZSBzdGF0ZSBv
ZiB0aGUgd29ya2VycyAod2hpY2ggbWF5IGJlIHNlcGFyYXRlIHRocmVhZHMKKyAgICAgICAgIyBv
ciBwcm9jZXNzZXMuIFRoaXMgaXMgYSBiaXQgYXdrd2FyZCBidXQgYSBiZXR0ZXIgbmFtZSBoYXMg
eWV0IHRvCisgICAgICAgICMgcHJlc2VudCBpdHNlbGYuCisgICAgICAgIHNlbGYuX3dvcmtlcnMg
PSB7fQogCiAgICAgICAgICMgZGlzYWJsZSB3c3Mgc2VydmVyLiBuZWVkIHRvIGluc3RhbGwgcHlP
cGVuU1NMIG9uIGJ1aWxkYm90cy4KICAgICAgICAgIyBzZWxmLl93ZWJzb2NrZXRfc2VjdXJlX3Nl
cnZlciA9IHdlYnNvY2tldF9zZXJ2ZXIuUHlXZWJTb2NrZXQoCkBAIC01ODYsMzMgKzYwMiwzOSBA
QCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkg
b2JqZWN0IHRvIHBvcHVsYXRlIHdpdGggdGhlIHJlc3VsdHMKICAgICAgICAgIiIiCiAKKyAgICAg
ICAgc2VsZi5fd29ya2VycyA9IHt9CisKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRh
dGUoJ1NoYXJkaW5nIHRlc3RzIC4uLicpCiAgICAgICAgIG51bV93b3JrZXJzID0gc2VsZi5fbnVt
X3dvcmtlcnMoKQogICAgICAgICB0ZXN0X2xpc3RzID0gc2VsZi5fc2hhcmRfdGVzdHMoZmlsZV9s
aXN0LAogICAgICAgICAgICAgbnVtX3dvcmtlcnMgPiAxIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5l
eHBlcmltZW50YWxfZnVsbHlfcGFyYWxsZWwpCisKKyAgICAgICAgYnJva2VyID0gbWVzc2FnZV9i
cm9rZXIuZ2V0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMpCisgICAgICAgIHNlbGYuX21lc3Nh
Z2VfYnJva2VyID0gYnJva2VyCisKICAgICAgICAgZmlsZW5hbWVfcXVldWUgPSBRdWV1ZS5RdWV1
ZSgpCiAgICAgICAgIGZvciBpdGVtIGluIHRlc3RfbGlzdHM6CiAgICAgICAgICAgICBmaWxlbmFt
ZV9xdWV1ZS5wdXQoaXRlbSkKIAogICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgn
U3RhcnRpbmcgJXMgLi4uJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdy
YW1tYXIucGx1cmFsaXplKCd3b3JrZXInLCBudW1fd29ya2VycykpCi0gICAgICAgIG1lc3NhZ2Vf
YnJva2VyID0gc2VsZi5fbWVzc2FnZV9icm9rZXIKICAgICAgICAgc2VsZi5fY3VycmVudF9maWxl
bmFtZV9xdWV1ZSA9IGZpbGVuYW1lX3F1ZXVlCiAgICAgICAgIHNlbGYuX2N1cnJlbnRfcmVzdWx0
X3N1bW1hcnkgPSByZXN1bHRfc3VtbWFyeQogCi0gICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25z
LmRyeV9ydW46Ci0gICAgICAgICAgICB0aHJlYWRzID0gbWVzc2FnZV9icm9rZXIuc3RhcnRfd29y
a2VycyhzZWxmKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGhyZWFkcyA9IFtdCisgICAg
ICAgIGZvciB3b3JrZXJfbnVtYmVyIGluIHhyYW5nZShudW1fd29ya2Vycyk6CisgICAgICAgICAg
ICB0aHJlYWQgPSBicm9rZXIuc3RhcnRfd29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIpCisgICAg
ICAgICAgICB3ID0gV29ya2VyU3RhdGUodGhyZWFkLm5hbWUoKSwgd29ya2VyX251bWJlciwgdGhy
ZWFkKQorICAgICAgICAgICAgc2VsZi5fd29ya2Vyc1t0aHJlYWQubmFtZSgpXSA9IHcKIAogICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgiU3RhcnRpbmcgdGVzdGluZyAuLi4iKQog
ICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCA9IEZhbHNlCiAgICAgICAgIGlmIG5vdCBzZWxm
Ll9vcHRpb25zLmRyeV9ydW46CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbWVz
c2FnZV9icm9rZXIucnVuX21lc3NhZ2VfbG9vcCgpCisgICAgICAgICAgICAgICAgYnJva2VyLnJ1
bl9tZXNzYWdlX2xvb3Aoc2VsZikKICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVw
dDoKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oIkludGVycnVwdGVkLCBleGl0aW5nIikKLSAg
ICAgICAgICAgICAgICBtZXNzYWdlX2Jyb2tlci5jYW5jZWxfd29ya2VycygpCisgICAgICAgICAg
ICAgICAgZm9yIHdvcmtlcl9uYW1lIGluIHNlbGYuX3dvcmtlcnMua2V5cygpOgorICAgICAgICAg
ICAgICAgICAgICBicm9rZXIuY2FuY2VsX3dvcmtlcih3b3JrZXJfbmFtZSkKICAgICAgICAgICAg
ICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCA9IFRydWUKICAgICAgICAgICAgIGV4Y2VwdDoKICAg
ICAgICAgICAgICAgICAjIFVuZXhwZWN0ZWQgZXhjZXB0aW9uOyBkb24ndCB0cnkgdG8gY2xlYW4g
dXAgd29ya2Vycy4KQEAgLTYyMCwyMSArNjQyLDQ5IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAg
ICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdz
LCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyA9IFwKLSAgICAgICAgICAgIHNlbGYuX2NvbGxlY3Rf
dGltaW5nX2luZm8odGhyZWFkcykKKyAgICAgICAgICAgIHNlbGYuX2NvbGxlY3RfdGltaW5nX2lu
Zm8oc2VsZi5fd29ya2VycykKKyAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIgPSBOb25lCiAK
ICAgICAgICAgcmV0dXJuIChrZXlib2FyZF9pbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsIHRl
c3RfdGltaW5ncywKICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncykKIAot
ICAgIGRlZiB1cGRhdGUoc2VsZik6Ci0gICAgICAgIHNlbGYudXBkYXRlX3N1bW1hcnkoc2VsZi5f
Y3VycmVudF9yZXN1bHRfc3VtbWFyeSkKLQotICAgIGRlZiBfY29sbGVjdF90aW1pbmdfaW5mbyhz
ZWxmLCB0aHJlYWRzKToKKyAgICBkZWYgX2NoZWNrX29uX3dvcmtlcnMoc2VsZik6CisgICAgICAg
ICIiIlJldHVybnMgVHJ1ZSBpZmYgYWxsIHRoZSB3b3JrZXJzIGhhdmUgZWl0aGVyIGNvbXBsZXRl
ZCBvciB3ZWRnZWQuIiIiCisKKyAgICAgICAgIyBMb29wIHRocm91Z2ggYWxsIHRoZSB0aHJlYWRz
IHdhaXRpbmcgZm9yIHRoZW0gdG8gZmluaXNoLgorICAgICAgICBzb21lX3RocmVhZF9pc19hbGl2
ZSA9IFRydWUKKyAgICAgICAgd2hpbGUgc29tZV90aHJlYWRfaXNfYWxpdmU6CisgICAgICAgICAg
ICBzb21lX3RocmVhZF9pc19hbGl2ZSA9IEZhbHNlCisgICAgICAgICAgICB0ID0gdGltZS50aW1l
KCkKKyAgICAgICAgICAgIGZvciB3b3JrZXIgaW4gc2VsZi5fd29ya2Vycy52YWx1ZXMoKToKKyAg
ICAgICAgICAgICAgICB0aHJlYWQgPSB3b3JrZXIudGhyZWFkCisgICAgICAgICAgICAgICAgZXhj
ZXB0aW9uX2luZm8gPSB0aHJlYWQuZXhjZXB0aW9uX2luZm8oKQorICAgICAgICAgICAgICAgIGlm
IGV4Y2VwdGlvbl9pbmZvIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAjIFJlLXJh
aXNlIHRoZSB0aHJlYWQncyBleGNlcHRpb24gaGVyZSB0byBtYWtlIGl0CisgICAgICAgICAgICAg
ICAgICAgICMgY2xlYXIgdGhhdCB0ZXN0aW5nIHdhcyBhYm9ydGVkLiBPdGhlcndpc2UsCisgICAg
ICAgICAgICAgICAgICAgICMgdGhlIHRlc3RzIHRoYXQgZGlkIG5vdCBydW4gd291bGQgYmUgYXNz
dW1lZAorICAgICAgICAgICAgICAgICAgICAjIHRvIGhhdmUgcGFzc2VkLgorICAgICAgICAgICAg
ICAgICAgICByYWlzZSBleGNlcHRpb25faW5mb1swXSwgZXhjZXB0aW9uX2luZm9bMV0sIGV4Y2Vw
dGlvbl9pbmZvWzJdCisKKyAgICAgICAgICAgICAgICBpZiB0aHJlYWQuaXNBbGl2ZSgpOgorICAg
ICAgICAgICAgICAgICAgICBzb21lX3RocmVhZF9pc19hbGl2ZSA9IFRydWUKKyAgICAgICAgICAg
ICAgICAgICAgbmV4dF90aW1lb3V0ID0gdGhyZWFkLm5leHRfdGltZW91dCgpCisgICAgICAgICAg
ICAgICAgICAgIGlmIG5leHRfdGltZW91dCBhbmQgdCA+IG5leHRfdGltZW91dDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX21lc3NhZ2VfYnJva2VyLmxvZ193ZWRnZWRfd29ya2VyKHdv
cmtlci5uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLmNsZWFyX25leHRfdGlt
ZW91dCgpCisKKyAgICAgICAgICAgIHNlbGYudXBkYXRlX3N1bW1hcnkoc2VsZi5fY3VycmVudF9y
ZXN1bHRfc3VtbWFyeSkKKworICAgICAgICAgICAgaWYgc29tZV90aHJlYWRfaXNfYWxpdmU6Cisg
ICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQorCisgICAgZGVmIF9jb2xsZWN0X3RpbWlu
Z19pbmZvKHNlbGYsIHdvcmtlcnMpOgogICAgICAgICB0ZXN0X3RpbWluZ3MgPSB7fQogICAgICAg
ICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyA9IFtdCiAgICAgICAgIHRocmVhZF90aW1pbmdzID0g
W10KIAotICAgICAgICBmb3IgdGhyZWFkIGluIHRocmVhZHM6Ci0gICAgICAgICAgICB0aHJlYWRf
dGltaW5ncy5hcHBlbmQoeyduYW1lJzogdGhyZWFkLmdldE5hbWUoKSwKKyAgICAgICAgZm9yIHRo
cmVhZCBpbiBbdy50aHJlYWQgZm9yIHcgaW4gd29ya2Vycy52YWx1ZXMoKV06CisgICAgICAgICAg
ICB0aHJlYWRfdGltaW5ncy5hcHBlbmQoeyduYW1lJzogdGhyZWFkLm5hbWUoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bV90ZXN0cyc6IHRocmVhZC5nZXRfbnVtX3Rl
c3RzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b3RhbF90aW1lJzog
dGhyZWFkLmdldF90b3RhbF90aW1lKCl9KQogICAgICAgICAgICAgdGVzdF90aW1pbmdzLnVwZGF0
ZSh0aHJlYWQuZ2V0X3Rlc3RfZ3JvdXBfdGltaW5nX3N0YXRzKCkpCkBAIC0xMDA2LDggKzEwNTYs
NyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdF9zdW1tYXJ5KToKICAgICAgICAgIiIiUHJpbnRzIHRoZSBydW4gdGltZXMgZm9yIHNs
b3csIHRpbWVvdXQgYW5kIGNyYXNoIHRlc3RzLgogICAgICAgICBBcmdzOgotICAgICAgICAgIGlu
ZGl2aWR1YWxfdGVzdF90aW1pbmdzOiBMaXN0IG9mIGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLlRl
c3RTdGF0cwotICAgICAgICAgICAgICBmb3IgYWxsIHRlc3RzLgorICAgICAgICAgIGluZGl2aWR1
YWxfdGVzdF90aW1pbmdzOiBMaXN0IG9mIFRlc3RTdGF0cyBmb3IgYWxsIHRlc3RzLgogICAgICAg
ICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCBmb3IgdGVzdCBydW4KICAgICAgICAg
IiIiCiAgICAgICAgICMgUmV2ZXJzZS1zb3J0IGJ5IHRoZSB0aW1lIHNwZW50IGluIER1bXBSZW5k
ZXJUcmVlLgpAQCAtMTI5NSwxMyArMTM0NCwxMSBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFy
Z3MsIHJlZ3VsYXJfb3V0cHV0PXN5cy5zdGRlcnIsCiAgICAgICAgIHByaW50ZXIuY2xlYW51cCgp
CiAgICAgICAgIHJldHVybiAwCiAKLSAgICBicm9rZXIgPSBtZXNzYWdlX2Jyb2tlci5nZXQocG9y
dCwgb3B0aW9ucykKLQogICAgICMgV2Ugd3JhcCBhbnkgcGFydHMgb2YgdGhlIHJ1biB0aGF0IGFy
ZSBzbG93IG9yIGxpa2VseSB0byByYWlzZSBleGNlcHRpb25zCiAgICAgIyBpbiBhIHRyeS9maW5h
bGx5IHRvIGVuc3VyZSB0aGF0IHdlIGNsZWFuIHVwIHRoZSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24u
CiAgICAgbnVtX3VuZXhwZWN0ZWRfcmVzdWx0cyA9IC0xCiAgICAgdHJ5OgotICAgICAgICB0ZXN0
X3J1bm5lciA9IFRlc3RSdW5uZXIocG9ydCwgb3B0aW9ucywgcHJpbnRlciwgYnJva2VyKQorICAg
ICAgICB0ZXN0X3J1bm5lciA9IFRlc3RSdW5uZXIocG9ydCwgb3B0aW9ucywgcHJpbnRlcikKICAg
ICAgICAgdGVzdF9ydW5uZXIuX3ByaW50X2NvbmZpZygpCiAKICAgICAgICAgcHJpbnRlci5wcmlu
dF91cGRhdGUoIkNvbGxlY3RpbmcgdGVzdHMgLi4uIikKQEAgLTEzMzAsNyArMTM3Nyw2IEBAIGRl
ZiBydW4ocG9ydCwgb3B0aW9ucywgYXJncywgcmVndWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwKICAg
ICAgICAgICAgIF9sb2cuZGVidWcoIlRlc3RpbmcgY29tcGxldGVkLCBFeGl0IHN0YXR1czogJWQi
ICUKICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3VuZXhwZWN0ZWRfcmVzdWx0cykKICAgICBm
aW5hbGx5OgotICAgICAgICBicm9rZXIuY2xlYW51cCgpCiAgICAgICAgIHByaW50ZXIuY2xlYW51
cCgpCiAKICAgICByZXR1cm4gbnVtX3VuZXhwZWN0ZWRfcmVzdWx0cwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191
bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXggZTliOTdiMzRlNjYwOGYzZjIyZmM4M2U0
ZGVmYWVmZTU3OTRhNDNlMS4uYzMxNzc1Y2MwNmQzZmIxMDc4MDZmYjhmNDFlZGE2M2QyMzUzOTU3
NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC00ODks
NyArNDg5LDcgQEAgY2xhc3MgVGVzdFJ1bm5lclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICBtb2NrX3BvcnQuZmlsZW5hbWVfdG9fdXJpID0gbGFtYmRhIG5hbWU6IG5hbWUKIAogICAg
ICAgICBydW5uZXIgPSBydW5fd2Via2l0X3Rlc3RzLlRlc3RSdW5uZXIocG9ydD1tb2NrX3BvcnQs
IG9wdGlvbnM9TW9jaygpLAotICAgICAgICAgICAgcHJpbnRlcj1Nb2NrKCksIG1lc3NhZ2VfYnJv
a2VyPU1vY2soKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByaW50ZXI9TW9jaygpKQogICAgICAgICBleHBlY3RlZF9odG1sID0gdSIiIjxodG1sPgogICA8
aGVhZD4KICAgICA8dGl0bGU+TGF5b3V0IFRlc3QgUmVzdWx0cyAodGltZSk8L3RpdGxlPgpAQCAt
NTA4LDcgKzUwOCw3IEBAIGNsYXNzIFRlc3RSdW5uZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgIyBUZXN0IHRoYXQgX3NoYXJkX3Rlc3RzIGluIHJ1bl93ZWJraXRfdGVzdHMuVGVz
dFJ1bm5lciByZWFsbHkKICAgICAgICAgIyBwdXQgdGhlIGh0dHAgdGVzdHMgZmlyc3QgaW4gdGhl
IHF1ZXVlLgogICAgICAgICBydW5uZXIgPSBUZXN0UnVubmVyV3JhcHBlcihwb3J0PU1vY2soKSwg
b3B0aW9ucz1Nb2NrKCksCi0gICAgICAgICAgICBwcmludGVyPU1vY2soKSwgbWVzc2FnZV9icm9r
ZXI9TW9jaygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGVyPU1v
Y2soKSkKIAogICAgICAgICB0ZXN0X2xpc3QgPSBbCiAgICAgICAgICAgIkxheW91dFRlc3RzL3dl
YnNvY2tldC90ZXN0cy91bmljb2RlLmh0bSIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75445</attachid>
            <date>2010-12-02 17:38:09 -0800</date>
            <delta_ts>2010-12-02 17:38:30 -0800</delta_ts>
            <desc>update w/ review feedback</desc>
            <filename>bug-50374-20101202173808.patch</filename>
            <type>text/plain</type>
            <size>25080</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5MTlhYmYzNzcyMzA0Y2RjODA2MDMzOTVjYzIxNTMwYjViNGI2NmUxLi4xYzg3M2Vi
ZTIyNzJkNDk1NTIyODM4Njc4N2VjYjg3YTFhZjJhZTc5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDYgKzEsNDUgQEAK
IDIwMTAtMTItMDEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKLSAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkg
Q2hhbmcuCisKKyAgICAgICAgbnJ3dCBtdWx0aXByb2Nlc3NpbmcgLSBtb3ZlIGxvZ2ljIGJhY2sg
aW50byBydW5fd2Via2l0X3Rlc3RzCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbW92ZXMgYSBidW5j
aCBvZiBsb2dpYyB0aGF0IEkgaGFkIHB1dCBpbnRvCisgICAgICAgIG1lc3NhZ2VfYnJva2VyIGJh
Y2sgaW50byBydW5fd2Via2l0X3Rlc3RzLCBpbiBhIHNsaWdodGx5CisgICAgICAgIGRpZmZlcmVu
dCBmb3JtYXQuIFdvcmtlck1lc3NhZ2VCcm9rZXIgbmVlZGVkIHRvIGJlY29tZSBsZXNzIGF3YXJl
IG9mCisgICAgICAgIHRoZSBsb2dpYyB0aGUgVGVzdFJ1bm5lciBjbGFzcyB1c2VzLCBhbmQgbW9y
ZSBnZW5lcmljLgorICAgICAgICBFdmVudHVhbGx5IHRoZSBNZXNzYWdlQnJva2VyIHdpbGwgb25s
eSBkbyBnZW5lcmljIG1lc3NhZ2luZyBhbmQKKyAgICAgICAgdGhyZWFkL3Byb2Nlc3MtcG9vbGlu
ZywgYW5kIChhbG1vc3QpIGFsbCBvZiB0aGUKKyAgICAgICAgcnVuLXdlYmtpdC10ZXN0cy1zcGVj
aWZpYyBsb2dpYyB3aWxsIGJlIG1vdmVkIHRvCisgICAgICAgIHJ1bl93ZWJraXRfdGVzdHMucHkg
YW5kIGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5LgorICAgICAgICAKKyAgICAgICAgVGhlIGJp
Z2dlc3QgY2hhbmdlcyBhcmUgdGhhdCB0aGUgQnJva2VyIGNhbiBub3cgc3RhcnQgYSBzaW5nbGUK
KyAgICAgICAgd29ya2VyLCBidXQgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBzdGFydGluZyBhbGwg
b2YgdGhlbSBpcyBwdXNoZWQKKyAgICAgICAgYmFjayB0byB0aGUgVGVzdFJ1bm5lciAoTWFuYWdl
ciksIGFuZCB0aGUgbG9naWMgZm9yIGNoZWNraW5nIGlmCisgICAgICAgIHRoZSB0aHJlYWRzIGFy
ZSBkb25lIG9yIHdlZGdlZCBpcyBtb3ZlZCBiYWNrIHRvIFRlc3RSdW5uZXIuIFdlCisgICAgICAg
IGFsc28gcmVtb3ZlIFdvcmtlck1lc3NhZ2VCcm9rZXIuY2xlYW51cCAobm90IG5lZWRlZCkgYW5k
CisgICAgICAgIGNhbmNlbF93b3JrZXJzICh0aGV5IGhhdmUgdG8gYmUgY2FuY2VsbGVkIGluZGl2
aWR1YWxseSkuCisgICAgICAgIAorICAgICAgICBUaGUgIG1lc3NhZ2VfYnJva2VyIGlzIG5vdyBl
bmNhcHN1bGF0ZWQgaW5zaWRlCisgICAgICAgIFRlc3RSdW5uZXIuX3J1bl90ZXN0cygpOyBpdCBv
bmx5IG5lZWRzIHRvIGV4aXN0IHdoaWxlIGFjdHVhbGx5CisgICAgICAgIHJ1bm5pbmcgdGhlIHRl
c3RzLgorCisgICAgICAgIEFsc28sIGRlbGV0ZSBhIGJ1bmNoIG9mIHRlc3RzIGluIG1lc3NhZ2Vf
YnJva2VyX3VuaXR0ZXN0IHRoYXQgbm8KKyAgICAgICAgbG9uZ2VyIG1ha2UgbXVjaCBzZW5zZS4K
KworICAgICAgICBUaGlzIHBhdGNoIGRlcGVuZHMgb24gYnVnIDUwMzcyLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDM3NAorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJf
dHJlZV90aHJlYWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXJfdW5pdHRlc3Qu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzX3VuaXR0ZXN0LnB5OgorCisyMDEwLTEyLTAxICBEaXJrIFByYW5rZSAgPGRwcmFu
a2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCiAKICAg
ICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IG1pbm9yIGNsZWFudXAgZm9yIG11bHRpcHJvY2Vz
c2luZyB3b3JrCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyLnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9r
ZXIucHkKaW5kZXggMjg1YjJlN2IxZmQ0OTAyOWYyMzhhZTg1ZDU0YTI1MDg3NWRlZGQxZi4uYmMz
ZDMzNmYwODVjMzAzMGRmZmUxNzk5YmJlYjBlZWJjMjMzNWY1MCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2Fn
ZV9icm9rZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIucHkKQEAgLTY0LDExNCArNjQsODggQEAg
Y2xhc3MgX1dvcmtlck1lc3NhZ2VCcm9rZXIob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcG9ydCwgb3B0aW9ucyk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHNl
bGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYuX251bV93b3JrZXJzID0gaW50KHNl
bGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKQogCi0gICAgICAgICMgVGhpcyBtYXBzIHdvcmtl
ciBuYW1lcyB0byB0aGVpciBUZXN0U2hlbGxUaHJlYWQgb2JqZWN0cy4KKyAgICAgICAgIyBUaGlz
IG1hcHMgd29ya2VyX25hbWVzIHRvIFRlc3RTaGVsbFRocmVhZHMKICAgICAgICAgc2VsZi5fdGhy
ZWFkcyA9IHt9CiAKLSAgICBkZWYgc3RhcnRfd29ya2VycyhzZWxmLCB0ZXN0X3J1bm5lcik6Ci0g
ICAgICAgICIiIlN0YXJ0cyB1cCB0aGUgcG9vbCBvZiB3b3JrZXJzIGZvciBydW5uaW5nIHRoZSB0
ZXN0cy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgdGVzdF9ydW5uZXI6IGEgaGFuZGxl
IHRvIHRoZSBtYW5hZ2VyL1Rlc3RSdW5uZXIgb2JqZWN0Ci0gICAgICAgICIiIgotICAgICAgICBz
ZWxmLl90ZXN0X3J1bm5lciA9IHRlc3RfcnVubmVyCi0gICAgICAgIGZvciB3b3JrZXJfbnVtYmVy
IGluIHhyYW5nZShzZWxmLl9udW1fd29ya2Vycyk6Ci0gICAgICAgICAgICB0aHJlYWQgPSBzZWxm
LnN0YXJ0X3dvcmtlcih3b3JrZXJfbnVtYmVyKQotICAgICAgICAgICAgc2VsZi5fdGhyZWFkc1t0
aHJlYWQubmFtZSgpXSA9IHRocmVhZAotICAgICAgICByZXR1cm4gc2VsZi5fdGhyZWFkcy52YWx1
ZXMoKQotCi0gICAgZGVmIHN0YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyKToKLSAgICAg
ICAgIyBGSVhNRTogUmVwbGFjZSB3aXRoIHNvbWV0aGluZyB0aGF0IGlzbid0IGEgdGhyZWFkLgor
ICAgIGRlZiBzdGFydF93b3JrZXIoc2VsZiwgdGVzdF9ydW5uZXIsIHdvcmtlcl9udW1iZXIpOgor
ICAgICAgICAiIiJTdGFydCBhIHdvcmtlciB3aXRoIHRoZSBnaXZlbiBpbmRleCBudW1iZXIuCisK
KyAgICAgICAgUmV0dXJucyB0aGUgYWN0dWFsIFRlc3RTaGVsbFRocmVhZCBvYmplY3QuIiIiCisg
ICAgICAgICMgRklYTUU6IFJlbW92ZSBkZXBlbmRlbmNpZXMgb24gdGVzdF9ydW5uZXIuCisgICAg
ICAgICMgRklYTUU6IFJlcGxhY2Ugd2l0aCBzb21ldGhpbmcgdGhhdCBpc24ndCBhIHRocmVhZCwg
YW5kIHJldHVybgorICAgICAgICAjIHRoZSBuYW1lIG9mIHRoZSB3b3JrZXIsIG5vdCB0aGUgdGhy
ZWFkIGl0c2VsZi4gV2UgbmVlZCB0byByZXR1cm4KKyAgICAgICAgIyB0aGUgdGhyZWFkIGl0c2Vs
ZiBmb3Igbm93IHRvIGFsbG93IFRlc3RSdW5uZXIgdG8gYWNjZXNzIHRoZSBvYmplY3QKKyAgICAg
ICAgIyBkaXJlY3RseSB0byByZWFkIHNoYXJlZCBzdGF0ZS4KKyAgICAgICAgdGhyZWFkID0gZHVt
cF9yZW5kZXJfdHJlZV90aHJlYWQuVGVzdFNoZWxsVGhyZWFkKHNlbGYuX3BvcnQsCisgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLCB3b3JrZXJfbnVtYmVyLCB0ZXN0X3J1bm5lci5fY3VycmVudF9m
aWxlbmFtZV9xdWV1ZSwKKyAgICAgICAgICAgIHRlc3RfcnVubmVyLl9yZXN1bHRfcXVldWUpCisg
ICAgICAgIHNlbGYuX3RocmVhZHNbdGhyZWFkLm5hbWUoKV0gPSB0aHJlYWQKICAgICAgICAgIyBO
b3RlOiBEb24ndCBzdGFydCgpIHRoZSB0aHJlYWQhIElmIHdlIGRpZCwgaXQgd291bGQgYWN0dWFs
bHkKICAgICAgICAgIyBjcmVhdGUgYW5vdGhlciB0aHJlYWQgYW5kIHN0YXJ0IGV4ZWN1dGluZyBp
dCwgYW5kIHdlJ2Qgbm8gbG9uZ2VyCiAgICAgICAgICMgYmUgc2luZ2xlLXRocmVhZGVkLgotICAg
ICAgICByZXR1cm4gZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQuVGVzdFNoZWxsVGhyZWFkKHNlbGYu
X3BvcnQsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLCB3b3JrZXJfbnVtYmVyLAotICAgICAg
ICAgICAgc2VsZi5fdGVzdF9ydW5uZXIuX2N1cnJlbnRfZmlsZW5hbWVfcXVldWUsCi0gICAgICAg
ICAgICBzZWxmLl90ZXN0X3J1bm5lci5fcmVzdWx0X3F1ZXVlKQorICAgICAgICByZXR1cm4gdGhy
ZWFkCiAKLSAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChzZWxmKToKLSAgICAgICAgIiIiTG9vcCBw
cm9jZXNzaW5nIG1lc3NhZ2VzIHVudGlsIGRvbmUuIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxl
bWVudGVkRXJyb3IKKyAgICBkZWYgY2FuY2VsX3dvcmtlcihzZWxmLCB3b3JrZXJfbmFtZSk6Cisg
ICAgICAgICIiIkF0dGVtcHQgdG8gY2FuY2VsIGEgd29ya2VyIChiZXN0LWVmZm9ydCkuIFRoZSB3
b3JrZXIgbWF5IHN0aWxsIGJlCisgICAgICAgIHJ1bm5pbmcgYWZ0ZXIgdGhpcyBjYWxsIHJldHVy
bnMuIiIiCisgICAgICAgIHNlbGYuX3RocmVhZHNbd29ya2VyX25hbWVdLmNhbmNlbCgpCiAKLSAg
ICBkZWYgY2FuY2VsX3dvcmtlcnMoc2VsZik6Ci0gICAgICAgICIiIkNhbmNlbC9pbnRlcnJ1cHQg
YW55IHdvcmtlcnMgdGhhdCBhcmUgc3RpbGwgYWxpdmUuIiIiCi0gICAgICAgIHBhc3MKKyAgICBk
ZWYgbG9nX3dlZGdlZF93b3JrZXIoc2VsZiwgd29ya2VyX25hbWUpOgorICAgICAgICAiIiJMb2cg
aW5mb3JtYXRpb24gYWJvdXQgdGhlIGdpdmVuIHdvcmtlcidzIHN0YXRlLiIiIgorICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLSAgICBkZWYgY2xlYW51cChzZWxmKToKLSAgICAg
ICAgIiIiUGVyZm9ybSBhbnkgbmVjZXNzYXJ5IGNsZWFudXAgb24gc2h1dGRvd24uIiIiCi0gICAg
ICAgIHBhc3MKKyAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChzZWxmLCB0ZXN0X3J1bm5lcik6Cisg
ICAgICAgICIiIkxvb3AgcHJvY2Vzc2luZyBtZXNzYWdlcyB1bnRpbCBkb25lLiIiIgorICAgICAg
ICAjIEZJWE1FOiBldmVudHVhbGx5IHdlJ2xsIG5lZWQgYSBtZXNzYWdlIGxvb3AgdGhhdCB0aGUg
d29ya2VycworICAgICAgICAjIGNhbiBhbHNvIGNhbGwuCisgICAgICAgIHJhaXNlIE5vdEltcGxl
bWVudGVkRXJyb3IKIAogCiBjbGFzcyBfSW5saW5lQnJva2VyKF9Xb3JrZXJNZXNzYWdlQnJva2Vy
KToKLSAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChzZWxmKToKKyAgICBkZWYgcnVuX21lc3NhZ2Vf
bG9vcChzZWxmLCB0ZXN0X3J1bm5lcik6CiAgICAgICAgIHRocmVhZCA9IHNlbGYuX3RocmVhZHMu
dmFsdWVzKClbMF0KLSAgICAgICAgdGhyZWFkLnJ1bl9pbl9tYWluX3RocmVhZChzZWxmLl90ZXN0
X3J1bm5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3J1
bm5lci5fY3VycmVudF9yZXN1bHRfc3VtbWFyeSkKLSAgICAgICAgc2VsZi5fdGVzdF9ydW5uZXIu
dXBkYXRlKCkKKyAgICAgICAgdGhyZWFkLnJ1bl9pbl9tYWluX3RocmVhZCh0ZXN0X3J1bm5lciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3J1bm5lci5fY3VycmVudF9y
ZXN1bHRfc3VtbWFyeSkKKworICAgIGRlZiBsb2dfd2VkZ2VkX3dvcmtlcihzZWxmLCB3b3JrZXJf
bmFtZSk6CisgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdfSW5saW5lQnJva2VyLmxvZ193
ZWRnZWRfd29ya2VyKCkgY2FsbGVkJykKIAogCiBjbGFzcyBfTXVsdGlUaHJlYWRlZEJyb2tlcihf
V29ya2VyTWVzc2FnZUJyb2tlcik6Ci0gICAgZGVmIHN0YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJf
bnVtYmVyKToKLSAgICAgICAgdGhyZWFkID0gX1dvcmtlck1lc3NhZ2VCcm9rZXIuc3RhcnRfd29y
a2VyKHNlbGYsIHdvcmtlcl9udW1iZXIpCisgICAgZGVmIHN0YXJ0X3dvcmtlcihzZWxmLCB0ZXN0
X3J1bm5lciwgd29ya2VyX251bWJlcik6CisgICAgICAgIHRocmVhZCA9IF9Xb3JrZXJNZXNzYWdl
QnJva2VyLnN0YXJ0X3dvcmtlcihzZWxmLCB0ZXN0X3J1bm5lciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlcl9udW1iZXIpCisgICAgICAg
ICMgVW5saWtlIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uLCBoZXJlIHdlIGFjdHVhbGx5IHdhbnQg
dG8gc3RhcnQKKyAgICAgICAgIyB0aGUgdGhyZWFkLgogICAgICAgICB0aHJlYWQuc3RhcnQoKQog
ICAgICAgICByZXR1cm4gdGhyZWFkCiAKLSAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChzZWxmKToK
LSAgICAgICAgIyBMb29wIHRocm91Z2ggYWxsIHRoZSB0aHJlYWRzIHdhaXRpbmcgZm9yIHRoZW0g
dG8gZmluaXNoLgotICAgICAgICBzb21lX3RocmVhZF9pc19hbGl2ZSA9IFRydWUKLSAgICAgICAg
d2hpbGUgc29tZV90aHJlYWRfaXNfYWxpdmU6Ci0gICAgICAgICAgICBzb21lX3RocmVhZF9pc19h
bGl2ZSA9IEZhbHNlCi0gICAgICAgICAgICB0ID0gdGltZS50aW1lKCkKLSAgICAgICAgICAgIGZv
ciB0aHJlYWQgaW4gc2VsZi5fdGhyZWFkcy52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICBleGNl
cHRpb25faW5mbyA9IHRocmVhZC5leGNlcHRpb25faW5mbygpCi0gICAgICAgICAgICAgICAgaWYg
ZXhjZXB0aW9uX2luZm8gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICMgUmUtcmFp
c2UgdGhlIHRocmVhZCdzIGV4Y2VwdGlvbiBoZXJlIHRvIG1ha2UgaXQKLSAgICAgICAgICAgICAg
ICAgICAgIyBjbGVhciB0aGF0IHRlc3Rpbmcgd2FzIGFib3J0ZWQuIE90aGVyd2lzZSwKLSAgICAg
ICAgICAgICAgICAgICAgIyB0aGUgdGVzdHMgdGhhdCBkaWQgbm90IHJ1biB3b3VsZCBiZSBhc3N1
bWVkCi0gICAgICAgICAgICAgICAgICAgICMgdG8gaGF2ZSBwYXNzZWQuCi0gICAgICAgICAgICAg
ICAgICAgIHJhaXNlIGV4Y2VwdGlvbl9pbmZvWzBdLCBleGNlcHRpb25faW5mb1sxXSwgZXhjZXB0
aW9uX2luZm9bMl0KLQotICAgICAgICAgICAgICAgIGlmIHRocmVhZC5pc0FsaXZlKCk6Ci0gICAg
ICAgICAgICAgICAgICAgIHNvbWVfdGhyZWFkX2lzX2FsaXZlID0gVHJ1ZQotICAgICAgICAgICAg
ICAgICAgICBuZXh0X3RpbWVvdXQgPSB0aHJlYWQubmV4dF90aW1lb3V0KCkKLSAgICAgICAgICAg
ICAgICAgICAgaWYgbmV4dF90aW1lb3V0IGFuZCB0ID4gbmV4dF90aW1lb3V0OgotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nX3dlZGdlZF93b3JrZXIodGhyZWFkLm5hbWUoKSwgdGhyZWFkLmlk
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQuY2xlYXJfbmV4dF90aW1lb3V0KCkK
LQotICAgICAgICAgICAgc2VsZi5fdGVzdF9ydW5uZXIudXBkYXRlKCkKLQotICAgICAgICAgICAg
aWYgc29tZV90aHJlYWRfaXNfYWxpdmU6Ci0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAx
KQotCi0gICAgZGVmIGNhbmNlbF93b3JrZXJzKHNlbGYpOgotICAgICAgICBmb3IgdGhyZWFkIGlu
IHNlbGYuX3RocmVhZHMudmFsdWVzKCk6Ci0gICAgICAgICAgICB0aHJlYWQuY2FuY2VsKCkKLQot
Ci1kZWYgbG9nX3dlZGdlZF93b3JrZXIobmFtZSwgaWQpOgotICAgICIiIkxvZyBpbmZvcm1hdGlv
biBhYm91dCB0aGUgZ2l2ZW4gd29ya2VyIHN0YXRlLiIiIgotICAgIHN0YWNrID0gX2ZpbmRfdGhy
ZWFkX3N0YWNrKGlkKQotICAgIGFzc2VydChzdGFjayBpcyBub3QgTm9uZSkKLSAgICBfbG9nLmVy
cm9yKCIiKQotICAgIF9sb2cuZXJyb3IoIiVzICh0aWQgJWQpIGlzIHdlZGdlZCIgJSAobmFtZSwg
aWQpKQotICAgIF9sb2dfc3RhY2soc3RhY2spCi0gICAgX2xvZy5lcnJvcigiIikKLQotCi1kZWYg
X2ZpbmRfdGhyZWFkX3N0YWNrKGlkKToKLSAgICAiIiJSZXR1cm5zIGEgc3RhY2sgb2JqZWN0IHRo
YXQgY2FuIGJlIHVzZWQgdG8gZHVtcCBhIHN0YWNrIHRyYWNlIGZvcgotICAgIHRoZSBnaXZlbiB0
aHJlYWQgaWQgKG9yIE5vbmUgaWYgdGhlIGlkIGlzIG5vdCBmb3VuZCkuIiIiCi0gICAgZm9yIHRo
cmVhZF9pZCwgc3RhY2sgaW4gc3lzLl9jdXJyZW50X2ZyYW1lcygpLml0ZW1zKCk6Ci0gICAgICAg
IGlmIHRocmVhZF9pZCA9PSBpZDoKLSAgICAgICAgICAgIHJldHVybiBzdGFjawotICAgIHJldHVy
biBOb25lCi0KLQotZGVmIF9sb2dfc3RhY2soc3RhY2spOgotICAgICIiIkxvZyBhIHN0YWNrIHRy
YWNlIHRvIGxvZy5lcnJvcigpLiIiIgotICAgIGZvciBmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBs
aW5lIGluIHRyYWNlYmFjay5leHRyYWN0X3N0YWNrKHN0YWNrKToKLSAgICAgICAgX2xvZy5lcnJv
cignRmlsZTogIiVzIiwgbGluZSAlZCwgaW4gJXMnICUgKGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUp
KQotICAgICAgICBpZiBsaW5lOgotICAgICAgICAgICAgX2xvZy5lcnJvcignICAlcycgJSBsaW5l
LnN0cmlwKCkpCisgICAgZGVmIHJ1bl9tZXNzYWdlX2xvb3Aoc2VsZiwgdGVzdF9ydW5uZXIpOgor
ICAgICAgICAjIEZJWE1FOiBSZW1vdmUgdGhlIGRlcGVuZGVuY2llcyBvbiB0ZXN0X3J1bm5lci4g
Q2hlY2tpbmcgb24gd29ya2VycworICAgICAgICAjIHNob3VsZCBiZSBkb25lIHZpYSBhIHRpbWVy
IGZpcmluZy4KKyAgICAgICAgdGVzdF9ydW5uZXIuX2NoZWNrX29uX3dvcmtlcnMoKQorCisgICAg
ZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHdvcmtlcl9uYW1lKToKKyAgICAgICAgdGhyZWFk
ID0gc2VsZi5fdGhyZWFkc1t3b3JrZXJfbmFtZV0KKyAgICAgICAgc3RhY2sgPSBzZWxmLl9maW5k
X3RocmVhZF9zdGFjayh0aHJlYWQuaWQoKSkKKyAgICAgICAgYXNzZXJ0KHN0YWNrIGlzIG5vdCBO
b25lKQorICAgICAgICBfbG9nLmVycm9yKCIiKQorICAgICAgICBfbG9nLmVycm9yKCIlcyAodGlk
ICVkKSBpcyB3ZWRnZWQiICUgKHdvcmtlcl9uYW1lLCB0aHJlYWQuaWQoKSkpCisgICAgICAgIHNl
bGYuX2xvZ19zdGFjayhzdGFjaykKKyAgICAgICAgX2xvZy5lcnJvcigiIikKKworICAgIGRlZiBf
ZmluZF90aHJlYWRfc3RhY2soc2VsZiwgaWQpOgorICAgICAgICAiIiJSZXR1cm5zIGEgc3RhY2sg
b2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gZHVtcCBhIHN0YWNrIHRyYWNlIGZvcgorICAgICAg
ICB0aGUgZ2l2ZW4gdGhyZWFkIGlkIChvciBOb25lIGlmIHRoZSBpZCBpcyBub3QgZm91bmQpLiIi
IgorICAgICAgICBmb3IgdGhyZWFkX2lkLCBzdGFjayBpbiBzeXMuX2N1cnJlbnRfZnJhbWVzKCku
aXRlbXMoKToKKyAgICAgICAgICAgIGlmIHRocmVhZF9pZCA9PSBpZDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RhY2sKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfbG9nX3N0YWNr
KHNlbGYsIHN0YWNrKToKKyAgICAgICAgIiIiTG9nIGEgc3RhY2sgdHJhY2UgdG8gbG9nLmVycm9y
KCkuIiIiCisgICAgICAgIGZvciBmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsaW5lIGluIHRyYWNl
YmFjay5leHRyYWN0X3N0YWNrKHN0YWNrKToKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0ZpbGU6
ICIlcyIsIGxpbmUgJWQsIGluICVzJyAlIChmaWxlbmFtZSwgbGluZW5vLCBuYW1lKSkKKyAgICAg
ICAgICAgIGlmIGxpbmU6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignICAlcycgJSBsaW5l
LnN0cmlwKCkpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlcl91bml0dGVzdC5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3Nh
Z2VfYnJva2VyX3VuaXR0ZXN0LnB5CmluZGV4IGMwMDY0NzFlNGE5ZmIyNWZlMWM2ODA5NDU3NmYz
MmNlNTE4MWY1ZDkuLmQ0NmRmNGM1N2YxNTQ5NmRlMzQ2ZGE5YTg0NjkzNjhkNWE4ZmQ4MDQgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2Vy
X3VuaXR0ZXN0LnB5CkBAIC00MiwxMzkgKzQyLDYwIEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzIGltcG9ydCBydW5fd2Via2l0X3Rlc3RzCiAKIGltcG9ydCBtZXNzYWdlX2Jyb2tlcgogCisj
IEZJWE1FOiBCb3kgZG8gd2UgbmVlZCBhIGxvdCBtb3JlIHRlc3RzIGhlcmUgLi4uCiAKLWNsYXNz
IFRlc3RUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0
YXJ0ZWRfcXVldWUsIHN0b3BwaW5nX3F1ZXVlKToKLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5f
X2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9pZCA9IE5vbmUKLSAgICAgICAgc2VsZi5fc3Rh
cnRlZF9xdWV1ZSA9IHN0YXJ0ZWRfcXVldWUKLSAgICAgICAgc2VsZi5fc3RvcHBpbmdfcXVldWUg
PSBzdG9wcGluZ19xdWV1ZQotICAgICAgICBzZWxmLl90aW1lb3V0ID0gRmFsc2UKLSAgICAgICAg
c2VsZi5fdGltZW91dF9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLSAgICAgICAgc2VsZi5fZXhjZXB0
aW9uX2luZm8gPSBOb25lCi0KLSAgICBkZWYgaWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxm
Ll9pZAotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAnd29ya2VyLzAnCi0K
LSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICBzZWxmLl9jb3ZlcmVkX3J1bigpCi0KLSAgICBk
ZWYgX2NvdmVyZWRfcnVuKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiB0aGlzIGlzIGEgc2VwYXJh
dGUgcm91dGluZSB0byB3b3JrIGFyb3VuZCBhIGJ1ZwotICAgICAgICAjIGluIGNvdmVyYWdlOiBz
ZWUgaHR0cDovL2JpdGJ1Y2tldC5vcmcvbmVkL2NvdmVyYWdlcHkvaXNzdWUvODUuCi0gICAgICAg
IHNlbGYuX2lkID0gdGhyZWFkLmdldF9pZGVudCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IHNlbGYuX3N0YXJ0ZWRfcXVldWUucHV0KCcnKQotICAgICAgICAgICAgbXNnID0gc2VsZi5fc3Rv
cHBpbmdfcXVldWUuZ2V0KCkKLSAgICAgICAgICAgIGlmIG1zZyA9PSAnS2V5Ym9hcmRJbnRlcnJ1
cHQnOgotICAgICAgICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0Ci0gICAgICAgICAg
ICBlbGlmIG1zZyA9PSAnRXhjZXB0aW9uJzoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCkKLSAgICAgICAgICAgIGVsaWYgbXNnID09ICdUaW1lb3V0JzoKLSAgICAgICAgICAgICAg
ICBzZWxmLl90aW1lb3V0ID0gVHJ1ZQotICAgICAgICAgICAgICAgIHNlbGYuX3RpbWVvdXRfcXVl
dWUuZ2V0KCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2lu
Zm8gPSBzeXMuZXhjX2luZm8oKQotCi0gICAgZGVmIGV4Y2VwdGlvbl9pbmZvKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZi5fZXhjZXB0aW9uX2luZm8KLQotICAgIGRlZiBuZXh0X3RpbWVvdXQo
c2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX3RpbWVvdXQ6Ci0gICAgICAgICAgICBzZWxmLl90aW1l
b3V0X3F1ZXVlLnB1dCgnZG9uZScpCi0gICAgICAgICAgICByZXR1cm4gdGltZS50aW1lKCkgLSAx
MAotICAgICAgICByZXR1cm4gdGltZS50aW1lKCkKLQotICAgIGRlZiBjbGVhcl9uZXh0X3RpbWVv
dXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX25leHRfdGltZW91dCA9IE5vbmUKLQotY2xhc3MgVGVz
dEhhbmRsZXIobG9nZ2luZy5IYW5kbGVyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYXN0cmVh
bSk6Ci0gICAgICAgIGxvZ2dpbmcuSGFuZGxlci5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxm
Ll9zdHJlYW0gPSBhc3RyZWFtCi0KLSAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgotICAgICAg
ICBzZWxmLl9zdHJlYW0ud3JpdGUoc2VsZi5mb3JtYXQocmVjb3JkKSkKLQotCi1jbGFzcyBNdWx0
aVRocmVhZGVkQnJva2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgY2xhc3MgTW9ja1Rl
c3RSdW5uZXIob2JqZWN0KToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAg
ICAgcGFzcwotCi0gICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgotICAgICAgICAgICAgcGFzcwot
Ci0gICAgICAgIGRlZiB1cGRhdGUoc2VsZik6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYg
cnVuX29uZV90aHJlYWQoc2VsZiwgbXNnKToKLSAgICAgICAgcnVubmVyID0gc2VsZi5Nb2NrVGVz
dFJ1bm5lcigpCi0gICAgICAgIHBvcnQgPSBOb25lCi0gICAgICAgIG9wdGlvbnMgPSBtb2NrdG9v
bC5Nb2NrT3B0aW9ucyhjaGlsZF9wcm9jZXNzZXM9JzEnKQotICAgICAgICBzdGFydGluZ19xdWV1
ZSA9IFF1ZXVlLlF1ZXVlKCkKLSAgICAgICAgc3RvcHBpbmdfcXVldWUgPSBRdWV1ZS5RdWV1ZSgp
Ci0gICAgICAgIGJyb2tlciA9IG1lc3NhZ2VfYnJva2VyLl9NdWx0aVRocmVhZGVkQnJva2VyKHBv
cnQsIG9wdGlvbnMpCi0gICAgICAgIGJyb2tlci5fdGVzdF9ydW5uZXIgPSBydW5uZXIKLSAgICAg
ICAgY2hpbGRfdGhyZWFkID0gVGVzdFRocmVhZChzdGFydGluZ19xdWV1ZSwgc3RvcHBpbmdfcXVl
dWUpCi0gICAgICAgIG5hbWUgPSBjaGlsZF90aHJlYWQubmFtZSgpCi0gICAgICAgIGJyb2tlci5f
dGhyZWFkc1tuYW1lXSA9IGNoaWxkX3RocmVhZAotICAgICAgICBjaGlsZF90aHJlYWQuc3RhcnQo
KQotICAgICAgICBzdGFydGVkX21zZyA9IHN0YXJ0aW5nX3F1ZXVlLmdldCgpCi0gICAgICAgIHN0
b3BwaW5nX3F1ZXVlLnB1dChtc2cpCi0gICAgICAgIHJldHVybiBicm9rZXIucnVuX21lc3NhZ2Vf
bG9vcCgpCiAKLSAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKLSAgICAgICAgaW50ZXJydXB0ZWQg
PSBzZWxmLnJ1bl9vbmVfdGhyZWFkKCcnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGludGVy
cnVwdGVkKQorY2xhc3MgVGVzdFRocmVhZFN0YWNrcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
Y2xhc3MgVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgorICAgICAgICBkZWYgX19pbml0X18oc2Vs
Ziwgc3RhcnRlZF9xdWV1ZSwgc3RvcHBpbmdfcXVldWUpOgorICAgICAgICAgICAgdGhyZWFkaW5n
LlRocmVhZC5fX2luaXRfXyhzZWxmKQorICAgICAgICAgICAgc2VsZi5faWQgPSBOb25lCisgICAg
ICAgICAgICBzZWxmLl9zdGFydGVkX3F1ZXVlID0gc3RhcnRlZF9xdWV1ZQorICAgICAgICAgICAg
c2VsZi5fc3RvcHBpbmdfcXVldWUgPSBzdG9wcGluZ19xdWV1ZQogCi0gICAgZGVmIHRlc3RfaW50
ZXJydXB0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlib2FyZEludGVycnVw
dCwgc2VsZi5ydW5fb25lX3RocmVhZCwgJ0tleWJvYXJkSW50ZXJydXB0JykKKyAgICAgICAgZGVm
IGlkKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2lkCiAKLSAgICBkZWYgdGVzdF90
aW1lb3V0KHNlbGYpOgotICAgICAgICBvYyA9IG91dHB1dGNhcHR1cmUuT3V0cHV0Q2FwdHVyZSgp
Ci0gICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgaW50ZXJydXB0ZWQgPSBzZWxm
LnJ1bl9vbmVfdGhyZWFkKCdUaW1lb3V0JykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnRl
cnJ1cHRlZCkKLSAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQorICAgICAgICBkZWYgbmFtZShz
ZWxmKToKKyAgICAgICAgICAgIHJldHVybiAnd29ya2VyLzAnCiAKLSAgICBkZWYgdGVzdF9leGNl
cHRpb24oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYu
cnVuX29uZV90aHJlYWQsICdFeGNlcHRpb24nKQorICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAg
ICAgICAgICAgc2VsZi5faWQgPSB0aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgICAgIHNlbGYu
X3N0YXJ0ZWRfcXVldWUucHV0KCcnKQorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RvcHBpbmdf
cXVldWUuZ2V0KCkKIAorICAgIGRlZiBtYWtlX2Jyb2tlcihzZWxmKToKKyAgICAgICAgb3B0aW9u
cyA9IG1vY2t0b29sLk1vY2tPcHRpb25zKCkKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2VfYnJva2Vy
Ll9NdWx0aVRocmVhZGVkQnJva2VyKHBvcnQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1vcHRpb25zKQogCi1jbGFzcyBU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9maW5kX3RocmVhZF9zdGFja19m
b3VuZChzZWxmKToKKyAgICAgICAgYnJva2VyID0gc2VsZi5tYWtlX2Jyb2tlcigpCiAgICAgICAg
IGlkLCBzdGFjayA9IHN5cy5fY3VycmVudF9mcmFtZXMoKS5pdGVtcygpWzBdCi0gICAgICAgIGZv
dW5kX3N0YWNrID0gbWVzc2FnZV9icm9rZXIuX2ZpbmRfdGhyZWFkX3N0YWNrKGlkKQorICAgICAg
ICBmb3VuZF9zdGFjayA9IGJyb2tlci5fZmluZF90aHJlYWRfc3RhY2soaWQpCiAgICAgICAgIHNl
bGYuYXNzZXJ0Tm90RXF1YWwoZm91bmRfc3RhY2ssIE5vbmUpCiAKICAgICBkZWYgdGVzdF9maW5k
X3RocmVhZF9zdGFja19ub3RfZm91bmQoc2VsZik6Ci0gICAgICAgIGZvdW5kX3N0YWNrID0gbWVz
c2FnZV9icm9rZXIuX2ZpbmRfdGhyZWFkX3N0YWNrKDApCisgICAgICAgIGJyb2tlciA9IHNlbGYu
bWFrZV9icm9rZXIoKQorICAgICAgICBmb3VuZF9zdGFjayA9IGJyb2tlci5fZmluZF90aHJlYWRf
c3RhY2soMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3VuZF9zdGFjaywgTm9uZSkKIAog
ICAgIGRlZiB0ZXN0X2xvZ193ZWRnZWRfd29ya2VyKHNlbGYpOgorICAgICAgICBicm9rZXIgPSBz
ZWxmLm1ha2VfYnJva2VyKCkKICAgICAgICAgb2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1
cmUoKQogICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCi0gICAgICAgIGxvZ2dlciA9IG1lc3Nh
Z2VfYnJva2VyLl9sb2cKLSAgICAgICAgYXN0cmVhbSA9IGFycmF5X3N0cmVhbS5BcnJheVN0cmVh
bSgpCi0gICAgICAgIGhhbmRsZXIgPSBUZXN0SGFuZGxlcihhc3RyZWFtKQotICAgICAgICBsb2dn
ZXIuYWRkSGFuZGxlcihoYW5kbGVyKQogCiAgICAgICAgIHN0YXJ0aW5nX3F1ZXVlID0gUXVldWUu
UXVldWUoKQogICAgICAgICBzdG9wcGluZ19xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLSAgICAgICAg
Y2hpbGRfdGhyZWFkID0gVGVzdFRocmVhZChzdGFydGluZ19xdWV1ZSwgc3RvcHBpbmdfcXVldWUp
CisgICAgICAgIGNoaWxkX3RocmVhZCA9IFRlc3RUaHJlYWRTdGFja3MuVGhyZWFkKHN0YXJ0aW5n
X3F1ZXVlLCBzdG9wcGluZ19xdWV1ZSkKICAgICAgICAgY2hpbGRfdGhyZWFkLnN0YXJ0KCkKKyAg
ICAgICAgYnJva2VyLl90aHJlYWRzW2NoaWxkX3RocmVhZC5uYW1lKCldID0gY2hpbGRfdGhyZWFk
CiAgICAgICAgIG1zZyA9IHN0YXJ0aW5nX3F1ZXVlLmdldCgpCiAKLSAgICAgICAgbWVzc2FnZV9i
cm9rZXIubG9nX3dlZGdlZF93b3JrZXIoY2hpbGRfdGhyZWFkLm5hbWUoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRfdGhyZWFkLmlkKCkpCisgICAgICAg
IGJyb2tlci5sb2dfd2VkZ2VkX3dvcmtlcihjaGlsZF90aHJlYWQubmFtZSgpKQogICAgICAgICBz
dG9wcGluZ19xdWV1ZS5wdXQoJycpCiAgICAgICAgIGNoaWxkX3RocmVhZC5qb2luKHRpbWVvdXQ9
MS4wKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXN0cmVhbS5lbXB0eSgpKQogICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKGNoaWxkX3RocmVhZC5pc0FsaXZlKCkpCiAgICAgICAgIG9jLnJl
c3RvcmVfb3V0cHV0KCkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggMGIxMWQ5Yjg4
YjIzY2UxOWZlNWFmMDFhNjY5ODRhYzk0MjQzNjA0OS4uZGQ4NDc4ODYxNzFmYmVjMzE4ZGQxMzlh
Njk5OTYyYzM0MzZlOWUxNCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0yMjgsNiAr
MjI4LDE1IEBAIGRlZiBzdW1tYXJpemVfdW5leHBlY3RlZF9yZXN1bHRzKHBvcnRfb2JqLCBleHBl
Y3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LAogICAgIHJldHVybiByZXN1bHRzCiAKIAorY2xhc3Mg
V29ya2VyU3RhdGUob2JqZWN0KToKKyAgICAiIiJBIGNsYXNzIGZvciB0aGUgVGVzdFJ1bm5lci9t
YW5hZ2VyIHRvIHVzZSB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0ZQorICAgIG9mIHRoZSB3b3Jr
ZXJzLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBudW1iZXIsIHRocmVhZCk6Cisg
ICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5udW1iZXIgPSBudW1iZXIKKyAg
ICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWQKKworCiBjbGFzcyBUZXN0UnVubmVyOgogICAgICIi
IkEgY2xhc3MgZm9yIG1hbmFnaW5nIHJ1bm5pbmcgYSBzZXJpZXMgb2YgdGVzdHMgb24gYSBzZXJp
ZXMgb2YgbGF5b3V0CiAgICAgdGVzdCBmaWxlcy4iIiIKQEAgLTI0MCwxOSArMjQ5LDIwIEBAIGNs
YXNzIFRlc3RSdW5uZXI6CiAgICAgIyBpbiBEdW1wUmVuZGVyVHJlZS4KICAgICBERUZBVUxUX1RF
U1RfVElNRU9VVF9NUyA9IDYgKiAxMDAwCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwg
b3B0aW9ucywgcHJpbnRlciwgbWVzc2FnZV9icm9rZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwb3J0LCBvcHRpb25zLCBwcmludGVyKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSB0ZXN0IHJ1
bm5lciBkYXRhIHN0cnVjdHVyZXMuCiAKICAgICAgICAgQXJnczoKICAgICAgICAgICBwb3J0OiBh
biBvYmplY3QgaW1wbGVtZW50aW5nIHBvcnQtc3BlY2lmaWMKICAgICAgICAgICBvcHRpb25zOiBh
IGRpY3Rpb25hcnkgb2YgY29tbWFuZCBsaW5lIG9wdGlvbnMKICAgICAgICAgICBwcmludGVyOiBh
IFByaW50ZXIgb2JqZWN0IHRvIHJlY29yZCB1cGRhdGVzIHRvLgotICAgICAgICAgIG1lc3NhZ2Vf
YnJva2VyOiBvYmplY3QgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHdvcmtlcnMuCiAgICAgICAg
ICIiIgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBzZWxmLl9vcHRpb25zID0g
b3B0aW9ucwogICAgICAgICBzZWxmLl9wcmludGVyID0gcHJpbnRlcgotICAgICAgICBzZWxmLl9t
ZXNzYWdlX2Jyb2tlciA9IG1lc3NhZ2VfYnJva2VyCisKKyAgICAgICAgIyBUaGlzIG1hcHMgd29y
a2VyIG5hbWVzIHRvIHRoZSBzdGF0ZSB3ZSBhcmUgdHJhY2tpbmcgZm9yIGVhY2ggb2YgdGhlbS4K
KyAgICAgICAgc2VsZi5fd29ya2VycyA9IHt9CiAKICAgICAgICAgIyBkaXNhYmxlIHdzcyBzZXJ2
ZXIuIG5lZWQgdG8gaW5zdGFsbCBweU9wZW5TU0wgb24gYnVpbGRib3RzLgogICAgICAgICAjIHNl
bGYuX3dlYnNvY2tldF9zZWN1cmVfc2VydmVyID0gd2Vic29ja2V0X3NlcnZlci5QeVdlYlNvY2tl
dCgKQEAgLTU4NiwzMyArNTk2LDM5IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICBy
ZXN1bHRfc3VtbWFyeTogc3VtbWFyeSBvYmplY3QgdG8gcG9wdWxhdGUgd2l0aCB0aGUgcmVzdWx0
cwogICAgICAgICAiIiIKIAorICAgICAgICBzZWxmLl93b3JrZXJzID0ge30KKwogICAgICAgICBz
ZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU2hhcmRpbmcgdGVzdHMgLi4uJykKICAgICAgICAg
bnVtX3dvcmtlcnMgPSBzZWxmLl9udW1fd29ya2VycygpCiAgICAgICAgIHRlc3RfbGlzdHMgPSBz
ZWxmLl9zaGFyZF90ZXN0cyhmaWxlX2xpc3QsCiAgICAgICAgICAgICBudW1fd29ya2VycyA+IDEg
YW5kIG5vdCBzZWxmLl9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxlbCkKKworICAg
ICAgICBicm9rZXIgPSBtZXNzYWdlX2Jyb2tlci5nZXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9u
cykKKyAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIgPSBicm9rZXIKKwogICAgICAgICBmaWxl
bmFtZV9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKICAgICAgICAgZm9yIGl0ZW0gaW4gdGVzdF9saXN0
czoKICAgICAgICAgICAgIGZpbGVuYW1lX3F1ZXVlLnB1dChpdGVtKQogCiAgICAgICAgIHNlbGYu
X3ByaW50ZXIucHJpbnRfdXBkYXRlKCdTdGFydGluZyAlcyAuLi4nICUKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hci5wbHVyYWxpemUoJ3dvcmtlcicsIG51bV93b3Jr
ZXJzKSkKLSAgICAgICAgbWVzc2FnZV9icm9rZXIgPSBzZWxmLl9tZXNzYWdlX2Jyb2tlcgogICAg
ICAgICBzZWxmLl9jdXJyZW50X2ZpbGVuYW1lX3F1ZXVlID0gZmlsZW5hbWVfcXVldWUKICAgICAg
ICAgc2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFyeSA9IHJlc3VsdF9zdW1tYXJ5CiAKLSAgICAg
ICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKLSAgICAgICAgICAgIHRocmVhZHMgPSBt
ZXNzYWdlX2Jyb2tlci5zdGFydF93b3JrZXJzKHNlbGYpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICB0aHJlYWRzID0gW10KKyAgICAgICAgZm9yIHdvcmtlcl9udW1iZXIgaW4geHJhbmdlKG51
bV93b3JrZXJzKToKKyAgICAgICAgICAgIHRocmVhZCA9IGJyb2tlci5zdGFydF93b3JrZXIoc2Vs
Ziwgd29ya2VyX251bWJlcikKKyAgICAgICAgICAgIHcgPSBXb3JrZXJTdGF0ZSh0aHJlYWQubmFt
ZSgpLCB3b3JrZXJfbnVtYmVyLCB0aHJlYWQpCisgICAgICAgICAgICBzZWxmLl93b3JrZXJzW3Ro
cmVhZC5uYW1lKCldID0gdwogCiAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCJT
dGFydGluZyB0ZXN0aW5nIC4uLiIpCiAgICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkID0gRmFs
c2UKICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKICAgICAgICAgICAgIHRy
eToKLSAgICAgICAgICAgICAgICBtZXNzYWdlX2Jyb2tlci5ydW5fbWVzc2FnZV9sb29wKCkKKyAg
ICAgICAgICAgICAgICBicm9rZXIucnVuX21lc3NhZ2VfbG9vcChzZWxmKQogICAgICAgICAgICAg
ZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgICAgIF9sb2cuaW5mbygiSW50
ZXJydXB0ZWQsIGV4aXRpbmciKQotICAgICAgICAgICAgICAgIG1lc3NhZ2VfYnJva2VyLmNhbmNl
bF93b3JrZXJzKCkKKyAgICAgICAgICAgICAgICBmb3Igd29ya2VyX25hbWUgaW4gc2VsZi5fd29y
a2Vycy5rZXlzKCk6CisgICAgICAgICAgICAgICAgICAgIGJyb2tlci5jYW5jZWxfd29ya2VyKHdv
cmtlcl9uYW1lKQogICAgICAgICAgICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkID0gVHJ1ZQog
ICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgICMgVW5leHBlY3RlZCBleGNlcHRp
b247IGRvbid0IHRyeSB0byBjbGVhbiB1cCB3b3JrZXJzLgpAQCAtNjIwLDIxICs2MzYsNTAgQEAg
Y2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIHRocmVh
ZF90aW1pbmdzLCB0ZXN0X3RpbWluZ3MsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gXAotICAg
ICAgICAgICAgc2VsZi5fY29sbGVjdF90aW1pbmdfaW5mbyh0aHJlYWRzKQorICAgICAgICAgICAg
c2VsZi5fY29sbGVjdF90aW1pbmdfaW5mbyhzZWxmLl93b3JrZXJzKQorICAgICAgICBzZWxmLl9t
ZXNzYWdlX2Jyb2tlciA9IE5vbmUKIAogICAgICAgICByZXR1cm4gKGtleWJvYXJkX2ludGVycnVw
dGVkLCB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLAogICAgICAgICAgICAgICAgIGluZGl2
aWR1YWxfdGVzdF90aW1pbmdzKQogCi0gICAgZGVmIHVwZGF0ZShzZWxmKToKLSAgICAgICAgc2Vs
Zi51cGRhdGVfc3VtbWFyeShzZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5KQotCi0gICAgZGVm
IF9jb2xsZWN0X3RpbWluZ19pbmZvKHNlbGYsIHRocmVhZHMpOgorICAgIGRlZiBfY2hlY2tfb25f
d29ya2VycyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBUcnVlIGlmZiBhbGwgdGhlIHdvcmtl
cnMgaGF2ZSBlaXRoZXIgY29tcGxldGVkIG9yIHdlZGdlZC4iIiIKKworICAgICAgICAjIExvb3Ag
dGhyb3VnaCBhbGwgdGhlIHRocmVhZHMgd2FpdGluZyBmb3IgdGhlbSB0byBmaW5pc2guCisgICAg
ICAgIHNvbWVfdGhyZWFkX2lzX2FsaXZlID0gVHJ1ZQorICAgICAgICB3aGlsZSBzb21lX3RocmVh
ZF9pc19hbGl2ZToKKyAgICAgICAgICAgIHNvbWVfdGhyZWFkX2lzX2FsaXZlID0gRmFsc2UKKyAg
ICAgICAgICAgIHQgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgZm9yIHdvcmtlciBpbiBzZWxm
Ll93b3JrZXJzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgIHRocmVhZCA9IHdvcmtlci50aHJl
YWQKKyAgICAgICAgICAgICAgICBleGNlcHRpb25faW5mbyA9IHRocmVhZC5leGNlcHRpb25faW5m
bygpCisgICAgICAgICAgICAgICAgaWYgZXhjZXB0aW9uX2luZm8gaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgICAgICMgUmUtcmFpc2UgdGhlIHRocmVhZCdzIGV4Y2VwdGlvbiBoZXJlIHRv
IG1ha2UgaXQKKyAgICAgICAgICAgICAgICAgICAgIyBjbGVhciB0aGF0IHRlc3Rpbmcgd2FzIGFi
b3J0ZWQuIE90aGVyd2lzZSwKKyAgICAgICAgICAgICAgICAgICAgIyB0aGUgdGVzdHMgdGhhdCBk
aWQgbm90IHJ1biB3b3VsZCBiZSBhc3N1bWVkCisgICAgICAgICAgICAgICAgICAgICMgdG8gaGF2
ZSBwYXNzZWQuCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbl9pbmZvWzBdLCBl
eGNlcHRpb25faW5mb1sxXSwgZXhjZXB0aW9uX2luZm9bMl0KKworICAgICAgICAgICAgICAgIGlm
IHRocmVhZC5pc0FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgIHNvbWVfdGhyZWFkX2lzX2Fs
aXZlID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBuZXh0X3RpbWVvdXQgPSB0aHJlYWQubmV4
dF90aW1lb3V0KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbmV4dF90aW1lb3V0IGFuZCB0ID4g
bmV4dF90aW1lb3V0OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9r
ZXIubG9nX3dlZGdlZF93b3JrZXIod29ya2VyLm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAg
ICB0aHJlYWQuY2xlYXJfbmV4dF90aW1lb3V0KCkKKworICAgICAgICAgICAgc2VsZi51cGRhdGVf
c3VtbWFyeShzZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5KQorCisgICAgICAgICAgICBpZiBz
b21lX3RocmVhZF9pc19hbGl2ZToKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCisK
KyAgICBkZWYgX2NvbGxlY3RfdGltaW5nX2luZm8oc2VsZiwgd29ya2Vycyk6CiAgICAgICAgIHRl
c3RfdGltaW5ncyA9IHt9CiAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gW10KICAg
ICAgICAgdGhyZWFkX3RpbWluZ3MgPSBbXQogCi0gICAgICAgIGZvciB0aHJlYWQgaW4gdGhyZWFk
czoKLSAgICAgICAgICAgIHRocmVhZF90aW1pbmdzLmFwcGVuZCh7J25hbWUnOiB0aHJlYWQuZ2V0
TmFtZSgpLAorICAgICAgICBmb3IgdyBpbiB3b3JrZXJzLnZhbHVlcygpOgorICAgICAgICAgICAg
dGhyZWFkID0gdy50aHJlYWQKKyAgICAgICAgICAgIHRocmVhZF90aW1pbmdzLmFwcGVuZCh7J25h
bWUnOiB0aHJlYWQubmFtZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
bnVtX3Rlc3RzJzogdGhyZWFkLmdldF9udW1fdGVzdHMoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3RvdGFsX3RpbWUnOiB0aHJlYWQuZ2V0X3RvdGFsX3RpbWUoKX0pCiAg
ICAgICAgICAgICB0ZXN0X3RpbWluZ3MudXBkYXRlKHRocmVhZC5nZXRfdGVzdF9ncm91cF90aW1p
bmdfc3RhdHMoKSkKQEAgLTEwMDYsOCArMTA1MSw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkpOgogICAgICAgICAi
IiJQcmludHMgdGhlIHJ1biB0aW1lcyBmb3Igc2xvdywgdGltZW91dCBhbmQgY3Jhc2ggdGVzdHMu
CiAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qg
b2YgZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQuVGVzdFN0YXRzCi0gICAgICAgICAgICAgIGZvciBh
bGwgdGVzdHMuCisgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2YgVGVz
dFN0YXRzIGZvciBhbGwgdGVzdHMuCiAgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkg
b2JqZWN0IGZvciB0ZXN0IHJ1bgogICAgICAgICAiIiIKICAgICAgICAgIyBSZXZlcnNlLXNvcnQg
YnkgdGhlIHRpbWUgc3BlbnQgaW4gRHVtcFJlbmRlclRyZWUuCkBAIC0xMjk1LDEzICsxMzM5LDEx
IEBAIGRlZiBydW4ocG9ydCwgb3B0aW9ucywgYXJncywgcmVndWxhcl9vdXRwdXQ9c3lzLnN0ZGVy
ciwKICAgICAgICAgcHJpbnRlci5jbGVhbnVwKCkKICAgICAgICAgcmV0dXJuIDAKIAotICAgIGJy
b2tlciA9IG1lc3NhZ2VfYnJva2VyLmdldChwb3J0LCBvcHRpb25zKQotCiAgICAgIyBXZSB3cmFw
IGFueSBwYXJ0cyBvZiB0aGUgcnVuIHRoYXQgYXJlIHNsb3cgb3IgbGlrZWx5IHRvIHJhaXNlIGV4
Y2VwdGlvbnMKICAgICAjIGluIGEgdHJ5L2ZpbmFsbHkgdG8gZW5zdXJlIHRoYXQgd2UgY2xlYW4g
dXAgdGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbi4KICAgICBudW1fdW5leHBlY3RlZF9yZXN1bHRz
ID0gLTEKICAgICB0cnk6Ci0gICAgICAgIHRlc3RfcnVubmVyID0gVGVzdFJ1bm5lcihwb3J0LCBv
cHRpb25zLCBwcmludGVyLCBicm9rZXIpCisgICAgICAgIHRlc3RfcnVubmVyID0gVGVzdFJ1bm5l
cihwb3J0LCBvcHRpb25zLCBwcmludGVyKQogICAgICAgICB0ZXN0X3J1bm5lci5fcHJpbnRfY29u
ZmlnKCkKIAogICAgICAgICBwcmludGVyLnByaW50X3VwZGF0ZSgiQ29sbGVjdGluZyB0ZXN0cyAu
Li4iKQpAQCAtMTMzMCw3ICsxMzcyLDYgQEAgZGVmIHJ1bihwb3J0LCBvcHRpb25zLCBhcmdzLCBy
ZWd1bGFyX291dHB1dD1zeXMuc3RkZXJyLAogICAgICAgICAgICAgX2xvZy5kZWJ1ZygiVGVzdGlu
ZyBjb21wbGV0ZWQsIEV4aXQgc3RhdHVzOiAlZCIgJQogICAgICAgICAgICAgICAgICAgICAgICBu
dW1fdW5leHBlY3RlZF9yZXN1bHRzKQogICAgIGZpbmFsbHk6Ci0gICAgICAgIGJyb2tlci5jbGVh
bnVwKCkKICAgICAgICAgcHJpbnRlci5jbGVhbnVwKCkKIAogICAgIHJldHVybiBudW1fdW5leHBl
Y3RlZF9yZXN1bHRzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpp
bmRleCAwYWU5YTA5Yzc4ODBlMjk2MjBkMDI3NjM0MzhmYzEzYTI4NDEzY2Q5Li5kMzI1YTFjOTU1
NTlkNTkxNTMxNjJmZWFhZGUyZDgwZTkyYThhNjI1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTQ4OSw3ICs0ODksNyBAQCBjbGFzcyBUZXN0UnVubmVy
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIG1vY2tfcG9ydC5maWxlbmFtZV90b191
cmkgPSBsYW1iZGEgbmFtZTogbmFtZQogCiAgICAgICAgIHJ1bm5lciA9IHJ1bl93ZWJraXRfdGVz
dHMuVGVzdFJ1bm5lcihwb3J0PW1vY2tfcG9ydCwgb3B0aW9ucz1Nb2NrKCksCi0gICAgICAgICAg
ICBwcmludGVyPU1vY2soKSwgbWVzc2FnZV9icm9rZXI9TW9jaygpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRlcj1Nb2NrKCkpCiAgICAgICAgIGV4
cGVjdGVkX2h0bWwgPSB1IiIiPGh0bWw+CiAgIDxoZWFkPgogICAgIDx0aXRsZT5MYXlvdXQgVGVz
dCBSZXN1bHRzICh0aW1lKTwvdGl0bGU+CkBAIC01MDcsNyArNTA3LDcgQEAgY2xhc3MgVGVzdFJ1
bm5lclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIFRlc3QgdGhhdCBfc2hhcmRf
dGVzdHMgaW4gcnVuX3dlYmtpdF90ZXN0cy5UZXN0UnVubmVyIHJlYWxseQogICAgICAgICAjIHB1
dCB0aGUgaHR0cCB0ZXN0cyBmaXJzdCBpbiB0aGUgcXVldWUuCiAgICAgICAgIHJ1bm5lciA9IFRl
c3RSdW5uZXJXcmFwcGVyKHBvcnQ9TW9jaygpLCBvcHRpb25zPU1vY2soKSwKLSAgICAgICAgICAg
IHByaW50ZXI9TW9jaygpLCBtZXNzYWdlX2Jyb2tlcj1Nb2NrKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByaW50ZXI9TW9jaygpKQogCiAgICAgICAgIHRlc3RfbGlzdCA9
IFsKICAgICAgICAgICAiTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3VuaWNvZGUuaHRtIiwK
</data>

          </attachment>
      

    </bug>

</bugzilla>