<?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>50375</bug_id>
          
          <creation_ts>2010-12-02 00:15:33 -0800</creation_ts>
          <short_desc>nrwt multiprocessing - actually implement messaging</short_desc>
          <delta_ts>2010-12-14 20:51:38 -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>50557</dependson>
          <blocked>50381</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>eric</cc>
    
    <cc>hayato</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>316031</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-02 00:15:33 -0800</bug_when>
    <thetext>nrwt multiprocessing - actually implement messaging</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316055</commentid>
    <comment_count>1</comment_count>
      <attachid>75361</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-02 02:39:13 -0800</bug_when>
    <thetext>Created attachment 75361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316636</commentid>
    <comment_count>2</comment_count>
      <attachid>75457</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-02 20:10:42 -0800</bug_when>
    <thetext>Created attachment 75457
update to tip of tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317550</commentid>
    <comment_count>3</comment_count>
      <attachid>75672</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-06 04:27:34 -0800</bug_when>
    <thetext>Created attachment 75672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317555</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-06 04:33:24 -0800</bug_when>
    <thetext>Okay, I have attempted to simplify this patch by splitting it in to. The first half has moved into bug 50557, and contains the new implementation of the message_broker (message_broker2) as a standalone module.

This patch now just contains the changed need to run_webkit_tests.py and dump_render_tree_thread.py to call the new module. The main aspect of these changes, apart from the actual switch to posting messages, is that the code no longer synchronously does cross-class access from run_webkit_tests to dump_render_tree_thread and vice versa; all access is mediated as:

TestRunner &lt;-&gt; ManagerConnection &lt;-&gt; WorkerMessageBroker &lt;-&gt; *WorkerConnection &lt;-&gt; dump_render_tree_thread.Worker

In some ways it is unfortunate that there are three objects for this, but there need to be at least two to avoid using multiple inheritance in between *WorkerConnection and Worker, and creating ManagerConnection allows us to have a nice symmetry and very clean APIs.

message_broker.py is still in the tree as of this patch, but it can be removed (I&apos;m planning to do so in a later patch once everything subsides, but I can add the deletion to this patch if that makes anything easier).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317572</commentid>
    <comment_count>5</comment_count>
      <attachid>75681</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-06 05:32:52 -0800</bug_when>
    <thetext>Created attachment 75681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322488</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-14 20:51:26 -0800</bug_when>
    <thetext>marking as WONTFIX. Will split up the patches differently.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75361</attachid>
            <date>2010-12-02 02:39:13 -0800</date>
            <delta_ts>2010-12-02 20:10:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50375-20101202023912.patch</filename>
            <type>text/plain</type>
            <size>44043</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA3ODFkNGJkZDIyYTQ4OGIzN2I3ZTc2MjMyY2NkMTc5YjdhZWY5NmU5Li41MzRiNjAw
YWVlNTFkZjYwMGVmZDBhMzYxNDg0OWIxOWNlYzQ4Nzk1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMTItMDEgIERpcmsgUHJhbmtlICA8ZHByYW5la0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGFjdHVhbGx5IGltcGxlbWVudCBtZXNzYWdpbmcgYmV0d2VlbgorICAgICAgICB0aHJl
YWRzLgorICAgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGRlcGVuZHMgb24gYnVnIDUwMzc0
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDM3
NQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9i
cm9rZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5OgorCiAyMDEwLTEyLTAxICBEaXJr
IFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9k
dW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCBkMDhlYTBjZTFjYzE5NDQ5OTRmZDBkMGVl
YjAyYjkyMzdmYThjMDg1Li4zNzU0ODI3YWVhNTUwZTZhZTU3ODk0ZmRmMjM2Y2NiZWNkMTg5ZmRm
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRl
cl90cmVlX3RocmVhZC5weQpAQCAtNDIsMTAgKzQyLDggQEAgaW1wb3J0IGNvZGVjcwogaW1wb3J0
IGNvcHkKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKLWltcG9ydCBRdWV1ZQogaW1wb3J0IHNp
Z25hbAogaW1wb3J0IHN5cwotaW1wb3J0IHRocmVhZAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0
IHRpbWUKIApAQCAtNTQsNiArNTIsNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0
X3R5cGVzIGltcG9ydCBpbWFnZV9kaWZmCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0
X3R5cGVzIGltcG9ydCB0ZXN0X3R5cGVfYmFzZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
dGVzdF90eXBlcyBpbXBvcnQgdGV4dF9kaWZmCiAKK2ltcG9ydCBtZXNzYWdlX2Jyb2tlcgogaW1w
b3J0IHRlc3RfZmFpbHVyZXMKIGltcG9ydCB0ZXN0X291dHB1dAogaW1wb3J0IHRlc3RfcmVzdWx0
cwpAQCAtNjIsNzggKzYxLDIzIEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHku
bGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQiKQogCiAKLWNsYXNzIFdhdGNoYWJsZVRocmVhZCh0aHJl
YWRpbmcuVGhyZWFkKToKLSAgICAiIiJUaGlzIGNsYXNzIGFic3RyYWN0cyBhbiBpbnRlcmZhY2Ug
dXNlZCBieQotICAgIHJ1bl93ZWJraXRfdGVzdHMuVGVzdFJ1bm5lci5fd2FpdF9mb3JfdGhyZWFk
c190b19maW5pc2ggZm9yIHRocmVhZAotICAgIG1hbmFnZW1lbnQuIiIiCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYpOgotICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCi0gICAg
ICAgIHNlbGYuX2NhbmNlbGxlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuX2V4Y2VwdGlvbl9pbmZv
ID0gTm9uZQotICAgICAgICBzZWxmLl9uZXh0X3RpbWVvdXQgPSBOb25lCi0gICAgICAgIHNlbGYu
X3RocmVhZF9pZCA9IE5vbmUKLQotICAgIGRlZiBjYW5jZWwoc2VsZik6Ci0gICAgICAgICIiIlNl
dCBhIGZsYWcgdGVsbGluZyB0aGlzIHRocmVhZCB0byBxdWl0LiIiIgotICAgICAgICBzZWxmLl9j
YW5jZWxsZWQgPSBUcnVlCi0KLSAgICBkZWYgY2xlYXJfbmV4dF90aW1lb3V0KHNlbGYpOgotICAg
ICAgICAiIiJNYXJrIGEgZmxhZyB0ZWxsaW5nIHRoaXMgdGhyZWFkIHRvIHN0b3Agc2V0dGluZyB0
aW1lb3V0cy4iIiIKLSAgICAgICAgc2VsZi5fdGltZW91dCA9IDAKLQotICAgIGRlZiBleGNlcHRp
b25faW5mbyhzZWxmKToKLSAgICAgICAgIiIiSWYgcnVuKCkgdGVybWluYXRlZCBvbiBhbiB1bmNh
dWdodCBleGNlcHRpb24sIHJldHVybiBpdCBoZXJlCi0gICAgICAgICgodHlwZSwgdmFsdWUsIHRy
YWNlYmFjaykgdHVwbGUpLgotICAgICAgICBSZXR1cm5zIE5vbmUgaWYgcnVuKCkgdGVybWluYXRl
ZCBub3JtYWxseS4gTWVhbnQgdG8gYmUgY2FsbGVkIGFmdGVyCi0gICAgICAgIGpvaW5pbmcgdGhp
cyB0aHJlYWQuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9leGNlcHRpb25faW5mbwotCi0gICAg
ZGVmIGlkKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gYSB0aHJlYWQgaWRlbnRpZmllci4iIiIK
LSAgICAgICAgcmV0dXJuIHNlbGYuX3RocmVhZF9pZAotCi0gICAgZGVmIG5leHRfdGltZW91dChz
ZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lIHRoZSB0ZXN0IGlzIHN1cHBvc2VkIHRv
IGZpbmlzaCBieS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX25leHRfdGltZW91dAotCi0KLWNs
YXNzIFRlc3RTaGVsbFRocmVhZChXYXRjaGFibGVUaHJlYWQpOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBwb3J0LCBvcHRpb25zLCB3b3JrZXJfbnVtYmVyLAotICAgICAgICAgICAgICAgICBmaWxl
bmFtZV9saXN0X3F1ZXVlLCByZXN1bHRfcXVldWUpOgotICAgICAgICAiIiJJbml0aWFsaXplIGFs
bCB0aGUgbG9jYWwgc3RhdGUgZm9yIHRoaXMgRHVtcFJlbmRlclRyZWUgdGhyZWFkLgotCi0gICAg
ICAgIEFyZ3M6Ci0gICAgICAgICAgcG9ydDogaW50ZXJmYWNlIHRvIHBvcnQtc3BlY2lmaWMgaG9v
a3MKLSAgICAgICAgICBvcHRpb25zOiBjb21tYW5kIGxpbmUgb3B0aW9ucyBhcmd1bWVudCBmcm9t
IG9wdHBhcnNlCi0gICAgICAgICAgd29ya2VyX251bWJlcjogaWRlbnRpZmllciBmb3IgYSBwYXJ0
aWN1bGFyIHdvcmtlciB0aHJlYWQuCi0gICAgICAgICAgZmlsZW5hbWVfbGlzdF9xdWV1ZTogQSB0
aHJlYWQgc2FmZSBRdWV1ZSBjbGFzcyB0aGF0IGNvbnRhaW5zIGxpc3RzCi0gICAgICAgICAgICAg
IG9mIHR1cGxlcyBvZiAoZmlsZW5hbWUsIHVyaSkgcGFpcnMuCi0gICAgICAgICAgcmVzdWx0X3F1
ZXVlOiBBIHRocmVhZCBzYWZlIFF1ZXVlIGNsYXNzIHRoYXQgd2lsbCBjb250YWluCi0gICAgICAg
ICAgICAgIHNlcmlhbGl6ZWQgVGVzdFJlc3VsdCBvYmplY3RzLgotICAgICAgICAiIiIKLSAgICAg
ICAgV2F0Y2hhYmxlVGhyZWFkLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX3BvcnQgPSBw
b3J0Ci0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCitjbGFzcyBXb3JrZXIob2JqZWN0
KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfbnVtYmVyKToKKyAgICAg
ICAgc3VwZXIoV29ya2VyLCBzZWxmKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYuX2Jyb2tlciA9
IGJyb2tlcgogICAgICAgICBzZWxmLl93b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgogICAg
ICAgICBzZWxmLl9uYW1lID0gJ3dvcmtlci8lZCcgJSB3b3JrZXJfbnVtYmVyCi0gICAgICAgIHNl
bGYuX2ZpbGVuYW1lX2xpc3RfcXVldWUgPSBmaWxlbmFtZV9saXN0X3F1ZXVlCi0gICAgICAgIHNl
bGYuX3Jlc3VsdF9xdWV1ZSA9IHJlc3VsdF9xdWV1ZQogCisgICAgICAgIHNlbGYuX2NhbmNlbGxl
ZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX2RvbmUgPSBGYWxzZQorCisgICAgICAgIHNlbGYuX3Bv
cnQgPSBicm9rZXIuX3BvcnQKKyAgICAgICAgc2VsZi5fb3B0aW9ucyA9IGJyb2tlci5fb3B0aW9u
cwogICAgICAgICBzZWxmLl9iYXRjaF9jb3VudCA9IDAKICAgICAgICAgc2VsZi5fYmF0Y2hfc2l6
ZSA9IHNlbGYuX29wdGlvbnMuYmF0Y2hfc2l6ZQogICAgICAgICBzZWxmLl9kcml2ZXIgPSBOb25l
CiAgICAgICAgIHNlbGYuX2hhdmVfaHR0cF9sb2NrID0gRmFsc2UKIAotICAgICAgICBzZWxmLl90
ZXN0X3J1bm5lciA9IE5vbmUKLSAgICAgICAgc2VsZi5fcmVzdWx0X3N1bW1hcnkgPSBOb25lCi0g
ICAgICAgIHNlbGYuX3Rlc3RfbGlzdF90aW1pbmdfc3RhdHMgPSB7fQotICAgICAgICBzZWxmLl90
ZXN0X3Jlc3VsdHMgPSBbXQotICAgICAgICBzZWxmLl9udW1fdGVzdHMgPSAwCi0gICAgICAgIHNl
bGYuX3N0YXJ0X3RpbWUgPSAwCi0gICAgICAgIHNlbGYuX3N0b3BfdGltZSA9IDAKLSAgICAgICAg
c2VsZi5faHR0cF9sb2NrX3dhaXRfYmVnaW4gPSAwCi0gICAgICAgIHNlbGYuX2h0dHBfbG9ja193
YWl0X2VuZCA9IDAKLQogICAgICAgICBzZWxmLl90ZXN0X3R5cGVzID0gW10KICAgICAgICAgZm9y
IGNscyBpbiBzZWxmLl9nZXRfdGVzdF90eXBlX2NsYXNzZXMoKToKICAgICAgICAgICAgIHNlbGYu
X3Rlc3RfdHlwZXMuYXBwZW5kKGNscyhzZWxmLl9wb3J0LApAQCAtMTUxLDcgKzk1LDYgQEAgY2xh
c3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgIHRlc3RfYXJncyA9
IHRlc3RfdHlwZV9iYXNlLlRlc3RBcmd1bWVudHMoKQogICAgICAgICB0ZXN0X2FyZ3MubmV3X2Jh
c2VsaW5lID0gc2VsZi5fb3B0aW9ucy5uZXdfYmFzZWxpbmUKICAgICAgICAgdGVzdF9hcmdzLnJl
c2V0X3Jlc3VsdHMgPSBzZWxmLl9vcHRpb25zLnJlc2V0X3Jlc3VsdHMKLQogICAgICAgICByZXR1
cm4gdGVzdF9hcmdzCiAKICAgICBkZWYgX2dldF90ZXN0X3R5cGVfY2xhc3NlcyhzZWxmKToKQEAg
LTE2MCw4OCArMTAzLDM4IEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZChXYXRjaGFibGVUaHJlYWQp
OgogICAgICAgICAgICAgY2xhc3Nlcy5hcHBlbmQoaW1hZ2VfZGlmZi5JbWFnZURpZmYpCiAgICAg
ICAgIHJldHVybiBjbGFzc2VzCiAKLSAgICBkZWYgZ2V0X3Rlc3RfZ3JvdXBfdGltaW5nX3N0YXRz
KHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIGEgZGljdGlvbmFyeSBtYXBwaW5nIHRlc3QgZ3Jv
dXAgdG8gYSB0dXBsZSBvZgotICAgICAgICAobnVtYmVyIG9mIHRlc3RzIGluIHRoYXQgZ3JvdXAs
IHRpbWUgdG8gcnVuIHRoZSB0ZXN0cykiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfbGlz
dF90aW1pbmdfc3RhdHMKLQotICAgIGRlZiBnZXRfdGVzdF9yZXN1bHRzKHNlbGYpOgotICAgICAg
ICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIHRlc3RzIHJ1biBvbiB0aGlzIHRocmVhZC4KLQot
ICAgICAgICBUaGlzIGlzIHVzZWQgdG8gY2FsY3VsYXRlIHBlci10aHJlYWQgc3RhdGlzdGljcy4K
LQotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfcmVzdWx0cwotCi0gICAg
ZGVmIGdldF90b3RhbF90aW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gbWF4KHNlbGYuX3N0b3Bf
dGltZSAtIHNlbGYuX3N0YXJ0X3RpbWUgLQotICAgICAgICAgICAgICAgICAgIHNlbGYuX2h0dHBf
bG9ja193YWl0X3RpbWUoKSwgMC4wKQorICAgIGRlZiBjYW5jZWwoc2VsZik6CisgICAgICAgICIi
IkF0dGVtcHQgdG8gYWJvcnQgcHJvY2Vzc2luZyAoYmVzdCBlZmZvcnQpLiIiIgorICAgICAgICBz
ZWxmLl9jYW5jZWxsZWQgPSBUcnVlCiAKLSAgICBkZWYgZ2V0X251bV90ZXN0cyhzZWxmKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX251bV90ZXN0cworICAgIGRlZiBpc19kb25lKHNlbGYpOgorICAg
ICAgICAjIFRoaXMgaXMgdXNlZCBmb3IgYXNzZXJ0aW9uIGNoZWNraW5nIGluIHRoZSBtYW5hZ2Vy
LgorICAgICAgICByZXR1cm4gc2VsZi5fZG9uZSBvciBzZWxmLl9jYW5jZWxsZWQKIAogICAgIGRl
ZiBuYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQogCi0gICAgZGVmIG5leHRf
dGltZW91dChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lIHRoZSB0ZXN0IGlzIHN1
cHBvc2VkIHRvIGZpbmlzaCBieS4iIiIKLSAgICAgICAgaWYgc2VsZi5fbmV4dF90aW1lb3V0Ogot
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX25leHRfdGltZW91dCArIHNlbGYuX2h0dHBfbG9ja193
YWl0X3RpbWUoKQotICAgICAgICByZXR1cm4gc2VsZi5fbmV4dF90aW1lb3V0Ci0KICAgICBkZWYg
cnVuKHNlbGYpOgotICAgICAgICAiIiJEZWxlZ2F0ZSBtYWluIHdvcmsgdG8gYSBoZWxwZXIgbWV0
aG9kIGFuZCB3YXRjaCBmb3IgdW5jYXVnaHQKLSAgICAgICAgZXhjZXB0aW9ucy4iIiIKLSAgICAg
ICAgc2VsZi5fY292ZXJlZF9ydW4oKQotCi0gICAgZGVmIF9jb3ZlcmVkX3J1bihzZWxmKToKLSAg
ICAgICAgIyBGSVhNRTogdGhpcyBpcyBhIHNlcGFyYXRlIHJvdXRpbmUgdG8gd29yayBhcm91bmQg
YSBidWcKLSAgICAgICAgIyBpbiBjb3ZlcmFnZTogc2VlIGh0dHA6Ly9iaXRidWNrZXQub3JnL25l
ZC9jb3ZlcmFnZXB5L2lzc3VlLzg1LgotICAgICAgICBzZWxmLl90aHJlYWRfaWQgPSB0aHJlYWQu
Z2V0X2lkZW50KCkKLSAgICAgICAgc2VsZi5fc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAg
ICAgIGV4Y2VwdGlvbl9tc2cgPSAiIgorICAgICAgICBfbG9nLmRlYnVnKCclcyBzdGFydGluZycg
JSBzZWxmLl9uYW1lKQorCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIF9sb2cuZGVidWcoJyVz
IHN0YXJ0aW5nJyAlIChzZWxmLl9uYW1lKSkKLSAgICAgICAgICAgIHNlbGYuX3J1bih0ZXN0X3J1
bm5lcj1Ob25lLCByZXN1bHRfc3VtbWFyeT1Ob25lKQotICAgICAgICAgICAgX2xvZy5kZWJ1Zygn
JXMgZG9uZSAoJWQgdGVzdHMpJyAlIChzZWxmLl9uYW1lLCBzZWxmLl9udW1fdGVzdHMpKQorICAg
ICAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdlX2xvb3Aoc2VsZiwgbWVzc2FnZV9icm9r
ZXIuQU5ZX1dPUktFUikKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2RvbmUoKToKKyAgICAg
ICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiJXM6IHJhbiBvdXQgb2YgbWVzc2FnZXMg
aW4gd29ya2VyIHF1ZXVlLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAl
IHNlbGYuX25hbWUpCiAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAg
ICAgIHNlbGYuX2V4Y2VwdGlvbl9pbmZvID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgICAgIF9s
b2cuZGVidWcoIiVzIGludGVycnVwdGVkIiAlIHNlbGYuX25hbWUpCisgICAgICAgICAgICBleGNl
cHRpb25fbXNnID0gIiwgaW50ZXJydXB0ZWQiCiAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAg
ICMgU2F2ZSB0aGUgZXhjZXB0aW9uIGZvciBvdXIgY2FsbGVyIHRvIHNlZS4KLSAgICAgICAgICAg
IHNlbGYuX2V4Y2VwdGlvbl9pbmZvID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgICAgIHNlbGYu
X3N0b3BfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgICAgICBfbG9nLmVycm9yKCclcyBkeWlu
ZywgZXhjZXB0aW9uIHJhaXNlZCcgJSBzZWxmLl9uYW1lKQotCi0gICAgICAgIHNlbGYuX3N0b3Bf
dGltZSA9IHRpbWUudGltZSgpCi0KLSAgICBkZWYgcnVuX2luX21haW5fdGhyZWFkKHNlbGYsIHRl
c3RfcnVubmVyLCByZXN1bHRfc3VtbWFyeSk6Ci0gICAgICAgICIiIlRoaXMgaG9vayBhbGxvd3Mg
dXMgdG8gcnVuIHRoZSB0ZXN0cyBmcm9tIHRoZSBtYWluIHRocmVhZCBpZgotICAgICAgICAtLW51
bS10ZXN0LXNoZWxscz09MSwgaW5zdGVhZCBvZiBoYXZpbmcgdG8gYWx3YXlzIHJ1biB0d28gb3Ig
bW9yZQotICAgICAgICB0aHJlYWRzLiBUaGlzIGFsbG93cyB1cyB0byBkZWJ1ZyB0aGUgdGVzdCBo
YXJuZXNzIHdpdGhvdXQgaGF2aW5nIHRvCi0gICAgICAgIGRvIG11bHRpLXRocmVhZGVkIGRlYnVn
Z2luZy4iIiIKLSAgICAgICAgc2VsZi5fcnVuKHRlc3RfcnVubmVyLCByZXN1bHRfc3VtbWFyeSkK
LQotICAgIGRlZiBfcnVuKHNlbGYsIHRlc3RfcnVubmVyLCByZXN1bHRfc3VtbWFyeSk6Ci0gICAg
ICAgICIiIk1haW4gd29yayBlbnRyeSBwb2ludCBvZiB0aGUgdGhyZWFkLiBCYXNpY2FsbHkgd2Ug
cHVsbCB1cmxzIGZyb20gdGhlCi0gICAgICAgIGZpbGVuYW1lIHF1ZXVlIGFuZCBydW4gdGhlIHRl
c3RzIHVudGlsIHdlIHJ1biBvdXQgb2YgdXJscy4KLQotICAgICAgICBJZiB0ZXN0X3J1bm5lciBp
cyBub3QgTm9uZSwgdGhlbiB3ZSBjYWxsIHRlc3RfcnVubmVyLlVwZGF0ZVN1bW1hcnkoKQotICAg
ICAgICB3aXRoIHRoZSByZXN1bHRzIG9mIGVhY2ggdGVzdCBkdXJpbmcgX3RlYXJfZG93bl90ZXN0
KCksIGJlbG93LiIiIgotICAgICAgICBzZWxmLl90ZXN0X3J1bm5lciA9IHRlc3RfcnVubmVyCi0g
ICAgICAgIHNlbGYuX3Jlc3VsdF9zdW1tYXJ5ID0gcmVzdWx0X3N1bW1hcnkKLQotICAgICAgICB3
aGlsZSBub3Qgc2VsZi5fY2FuY2VsbGVkOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ICAgIGN1cnJlbnRfZ3JvdXAsIGZpbGVuYW1lX2xpc3QgPSBcCi0gICAgICAgICAgICAgICAgICAg
IHNlbGYuX2ZpbGVuYW1lX2xpc3RfcXVldWUuZ2V0X25vd2FpdCgpCi0gICAgICAgICAgICAgICAg
c2VsZi5oYW5kbGVfdGVzdF9saXN0KGN1cnJlbnRfZ3JvdXAsIGZpbGVuYW1lX2xpc3QpCi0gICAg
ICAgICAgICBleGNlcHQgUXVldWUuRW1wdHk6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAg
ICAgICBpZiBzZWxmLl9jYW5jZWxsZWQ6Ci0gICAgICAgICAgICBfbG9nLmRlYnVnKCdUZXN0aW5n
IGNhbmNlbGxlZCcpCi0KLSAgICAgICAgc2VsZi5fY2xlYW51cCgpCisgICAgICAgICAgICBleGNl
cHRpb25fbXNnID0gIiwgZXhjZXB0aW9uIHJhaXNlZCIKKyAgICAgICAgZmluYWxseToKKyAgICAg
ICAgICAgIF9sb2cuZGVidWcoIiVzIGRvbmUlcyIgJSAoc2VsZi5fbmFtZSwgZXhjZXB0aW9uX21z
ZykpCisgICAgICAgICAgICBpZiBleGNlcHRpb25fbXNnOgorICAgICAgICAgICAgICAgIGV4Y19p
bmZvID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBFeHRyYWN0IHRo
ZSBzdGFjayB0cmFjZSBpbnRvIGEgc3RyaW5nPworICAgICAgICAgICAgICAgIHNlbGYuX3Bvc3Qo
J2V4Y2VwdGlvbicsIGV4Y19pbmZvWzBdLCBleGNfaW5mb1sxXSwgTm9uZSkKKyAgICAgICAgICAg
IHNlbGYuX3Bvc3QoJ2RvbmUnKQorICAgICAgICAgICAgc2VsZi5fY2xlYW51cCgpCiAKICAgICBk
ZWYgX2NsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYuX2tpbGxfZHVtcF9yZW5kZXJfdHJlZSgp
CkBAIC0yNTEsNyArMTQ0LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVh
ZCk6CiAgICAgICAgICAgICBzZWxmLl90ZXN0c19ydW5fZmlsZS5jbG9zZSgpCiAgICAgICAgICAg
ICBzZWxmLl90ZXN0c19ydW5fZmlsZSA9IE5vbmUKIAotICAgIGRlZiBoYW5kbGVfdGVzdF9saXN0
KHNlbGYsIGxpc3RfbmFtZSwgdGVzdF9saXN0KToKKyAgICBkZWYgaGFuZGxlX3Rlc3RfbGlzdChz
ZWxmLCBzcmMsIGxpc3RfbmFtZSwgdGVzdF9saXN0KToKICAgICAgICAgaWYgbGlzdF9uYW1lID09
ICJ0ZXN0c190b19odHRwX2xvY2siOgogICAgICAgICAgICAgc2VsZi5fc3RhcnRfc2VydmVyc193
aXRoX2xvY2soKQogCkBAIC0yNTksNiArMTUyLDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdh
dGNoYWJsZVRocmVhZCk6CiAgICAgICAgIG51bV90ZXN0cyA9IDAKICAgICAgICAgZm9yIHRlc3Rf
aW5wdXQgaW4gdGVzdF9saXN0OgogICAgICAgICAgICAgc2VsZi5fcnVuX3Rlc3QodGVzdF9pbnB1
dCkKKyAgICAgICAgICAgIHNlbGYueWllbGRfdG9fYnJva2VyKCkKICAgICAgICAgICAgIGlmIHNl
bGYuX2NhbmNlbGxlZDoKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgbnVtX3Rl
c3RzICs9IDEKQEAgLTI2OCw4ICsxNjIsMjAgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNo
YWJsZVRocmVhZCk6CiAgICAgICAgIGlmIHNlbGYuX2hhdmVfaHR0cF9sb2NrOgogICAgICAgICAg
ICAgc2VsZi5fc3RvcF9zZXJ2ZXJzX3dpdGhfbG9jaygpCiAKLSAgICAgICAgc2VsZi5fdGVzdF9s
aXN0X3RpbWluZ19zdGF0c1tsaXN0X25hbWVdID0gXAotICAgICAgICAgICAobnVtX3Rlc3RzLCBl
bGFwc2VkX3RpbWUpCisgICAgICAgIHNlbGYuX3Bvc3QoJ2ZpbmlzaGVkX2xpc3QnLCBsaXN0X25h
bWUsIG51bV90ZXN0cywgZWxhcHNlZF90aW1lKQorCisgICAgZGVmIHlpZWxkX3RvX2Jyb2tlcihz
ZWxmKToKKyAgICAgICAgIiIiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCB0aGlzIGlmIHRoZXkg
YXJlIG5vdCBydW5uaW5nIGluIGEKKyAgICAgICAgZGVkaWNhdGVkIHRocmVhZCBvciBwcm9jZXNz
LiIiIgorICAgICAgICBwYXNzCisKKyAgICBkZWYgaGFuZGxlX3N0b3Aoc2VsZiwgc3JjKToKKyAg
ICAgICAgIiIiU3RvcCByZWNlaXZlZCAtIG5vIG1vcmUgdGVzdHMgdG8gcnVuLiIiIgorICAgICAg
ICBzZWxmLl9kb25lID0gVHJ1ZQorCisgICAgZGVmIF9wb3N0KHNlbGYsIG1lc3NhZ2VfbmFtZSwg
Km1lc3NhZ2VfYXJncyk6CisgICAgICAgIHNlbGYuX2Jyb2tlci5wdXRfbWVzc2FnZShzZWxmLl9u
YW1lLCBtZXNzYWdlX2Jyb2tlci5NQU5BR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZV9uYW1lLCBtZXNzYWdlX2FyZ3MpCiAKICAgICBkZWYgX3J1bl90ZXN0KHNl
bGYsIHRlc3RfaW5wdXQpOgogICAgICAgICBzZWxmLl9zZXRfdXBfdGVzdCh0ZXN0X2lucHV0KQpA
QCAtMjkwLDggKzE5Niw4IEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZChXYXRjaGFibGVUaHJlYWQp
OgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdGVzdF90aW1lb3V0ID0gZHJpdmVyX3RpbWVv
dXQKIAorICAgICAgICBzZWxmLl9wb3N0KCdzdGFydGVkX3Rlc3QnLCB0ZXN0X2lucHV0LCB0ZXN0
X3RpbWVvdXQpCiAgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKLSAgICAgICAgc2VsZi5fbmV4
dF90aW1lb3V0ID0gc3RhcnQgKyB0ZXN0X3RpbWVvdXQKIAogICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLnJ1bl9zaW5nbHk6CiAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9ydW5fdGVzdF9pbl9h
bm90aGVyX3RocmVhZCh0ZXN0X2lucHV0LApAQCAtMjk5LDcgKzIwNSw3IEBAIGNsYXNzIFRlc3RT
aGVsbFRocmVhZChXYXRjaGFibGVUaHJlYWQpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
cmVzdWx0ID0gc2VsZi5fcnVuX3Rlc3RfaW5fdGhpc190aHJlYWQodGVzdF9pbnB1dCkKIAotICAg
ICAgICBzZWxmLl90ZWFyX2Rvd25fdGVzdCh0ZXN0X2lucHV0LCByZXN1bHQpCisgICAgICAgIHNl
bGYuX3RlYXJfZG93bl90ZXN0KHRlc3RfaW5wdXQsIHJlc3VsdCwgdGltZS50aW1lKCkgLSBzdGFy
dCkKIAogICAgIGRlZiBfc2V0X3VwX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCk6CiAgICAgICAgIHRl
c3RfaW5wdXQudXJpID0gc2VsZi5fcG9ydC5maWxlbmFtZV90b191cmkodGVzdF9pbnB1dC5maWxl
bmFtZSkKQEAgLTM2OSwxMCArMjc1LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJs
ZVRocmVhZCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9kcml2ZXIgb3Igc2VsZi5fZHJpdmVyLnBv
bGwoKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2RyaXZlciA9IHNlbGYuX3BvcnQu
Y3JlYXRlX2RyaXZlcihzZWxmLl93b3JrZXJfbnVtYmVyKQogICAgICAgICAgICAgc2VsZi5fZHJp
dmVyLnN0YXJ0KCkKLQotICAgICAgICB0ZXN0X3Jlc3VsdCA9IHNlbGYuX3J1bl9zaW5nbGVfdGVz
dCh0ZXN0X2lucHV0LCBzZWxmLl9kcml2ZXIpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVzdWx0cy5h
cHBlbmQodGVzdF9yZXN1bHQpCi0gICAgICAgIHJldHVybiB0ZXN0X3Jlc3VsdAorICAgICAgICBy
ZXR1cm4gc2VsZi5fcnVuX3NpbmdsZV90ZXN0KHRlc3RfaW5wdXQsIHNlbGYuX2RyaXZlcikKIAog
ICAgIGRlZiBfcnVuX3NpbmdsZV90ZXN0KHNlbGYsIHRlc3RfaW5wdXQsIGRyaXZlcik6CiAgICAg
ICAgICMgVGhlIGltYWdlIGhhc2ggaXMgdXNlZCB0byBhdm9pZCBkb2luZyBhbiBpbWFnZSBkdW1w
IGlmIHRoZQpAQCAtNDQ4LDggKzM1MSw3IEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZChXYXRjaGFi
bGVUaHJlYWQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9y
dC5leHBlY3RlZF9pbWFnZShmaWxlbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9wb3J0LmV4cGVjdGVkX2NoZWNrc3VtKGZpbGVuYW1lKSkKIAotICAgIGRl
ZiBfdGVhcl9kb3duX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCwgcmVzdWx0KToKLSAgICAgICAgc2Vs
Zi5fbnVtX3Rlc3RzICs9IDEKKyAgICBkZWYgX3RlYXJfZG93bl90ZXN0KHNlbGYsIHRlc3RfaW5w
dXQsIHJlc3VsdCwgZWxhcHNlZF90aW1lKToKICAgICAgICAgc2VsZi5fYmF0Y2hfY291bnQgKz0g
MQogICAgICAgICBzZWxmLl90ZXN0c19ydW5fZmlsZS53cml0ZSh0ZXN0X2lucHV0LmZpbGVuYW1l
ICsgIlxuIikKICAgICAgICAgdGVzdF9uYW1lID0gc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2Zp
bGVuYW1lKHRlc3RfaW5wdXQuZmlsZW5hbWUpCkBAIC00NjgsMjUgKzM3MCwyMCBAQCBjbGFzcyBU
ZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgIF9sb2cuZGVidWcoIiVzICVzIHBhc3NlZCIgJSAoc2VsZi5fbmFtZSwgdGVzdF9uYW1lKSkK
IAotICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUucHV0KHJlc3VsdC5kdW1wcygpKQorICAgICAg
ICBzZWxmLl9wb3N0KCdmaW5pc2hlZF90ZXN0JywgcmVzdWx0LCBlbGFwc2VkX3RpbWUpCiAKICAg
ICAgICAgaWYgc2VsZi5fYmF0Y2hfc2l6ZSA+IDAgYW5kIHNlbGYuX2JhdGNoX2NvdW50ID49IHNl
bGYuX2JhdGNoX3NpemU6CiAgICAgICAgICAgICAjIEJvdW5jZSB0aGUgc2hlbGwgYW5kIHJlc2V0
IGNvdW50LgogICAgICAgICAgICAgc2VsZi5fa2lsbF9kdW1wX3JlbmRlcl90cmVlKCkKICAgICAg
ICAgICAgIHNlbGYuX2JhdGNoX2NvdW50ID0gMAogCi0gICAgICAgIGlmIHNlbGYuX3Rlc3RfcnVu
bmVyOgotICAgICAgICAgICAgc2VsZi5fdGVzdF9ydW5uZXIudXBkYXRlX3N1bW1hcnkoc2VsZi5f
cmVzdWx0X3N1bW1hcnkpCi0KICAgICBkZWYgX3N0YXJ0X3NlcnZlcnNfd2l0aF9sb2NrKHNlbGYp
OgotICAgICAgICBzZWxmLl9odHRwX2xvY2tfd2FpdF9iZWdpbiA9IHRpbWUudGltZSgpCiAgICAg
ICAgIF9sb2cuZGVidWcoJ0FjcXVpcmluZyBodHRwIGxvY2sgLi4uJykKICAgICAgICAgc2VsZi5f
cG9ydC5hY3F1aXJlX2h0dHBfbG9jaygpCiAgICAgICAgIF9sb2cuZGVidWcoJ1N0YXJ0aW5nIEhU
VFAgc2VydmVyIC4uLicpCiAgICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfaHR0cF9zZXJ2ZXIoKQog
ICAgICAgICBfbG9nLmRlYnVnKCdTdGFydGluZyBXZWJTb2NrZXQgc2VydmVyIC4uLicpCiAgICAg
ICAgIHNlbGYuX3BvcnQuc3RhcnRfd2Vic29ja2V0X3NlcnZlcigpCi0gICAgICAgIHNlbGYuX2h0
dHBfbG9ja193YWl0X2VuZCA9IHRpbWUudGltZSgpCiAgICAgICAgIHNlbGYuX2hhdmVfaHR0cF9s
b2NrID0gVHJ1ZQogCiAgICAgZGVmIF9odHRwX2xvY2tfd2FpdF90aW1lKHNlbGYpOgpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvbWVzc2FnZV9icm9rZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlci5weQppbmRleCA3NTUyNDZk
NWM2Y2E1ZTU0ODhlNjdiM2MwNThlYjA0ZTZjNDhlMGQyLi5mZDFkZjZjZjI4ZTY3ZjIwNTdmZTg3
Y2FmMjZmYjIzNGE2ZjkyZTc2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlci5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9t
ZXNzYWdlX2Jyb2tlci5weQpAQCAtNDAsOCArNDAsMTQgQEAgaGFuZGxlcyBsYXVuY2hpbmcgdGhy
ZWFkcyBhbmQvb3IgcHJvY2Vzc2VzIGRlcGVuZGluZyBvbiB0aGUKIHJlcXVlc3RlZCBjb25maWd1
cmF0aW9uLgogIiIiCiAKK2ltcG9ydCBjUGlja2xlCiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IG11
bHRpcHJvY2Vzc2luZworaW1wb3J0IG9zCitpbXBvcnQgUXVldWUKIGltcG9ydCBzeXMKK2ltcG9y
dCB0aHJlYWQKK2ltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNr
CiAKQEAgLTQ5LDYgKzU1LDkgQEAgaW1wb3J0IGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkCiAKIF9s
b2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAorTUFOQUdFUiA9ICdtYW5hZ2VyJwor
QU5ZX1dPUktFUiA9ICd3b3JrZXInCisKIAogZGVmIGdldChwb3J0LCBvcHRpb25zKToKICAgICAi
IiJSZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBXb3JrZXJNZXNzYWdlQnJva2VyLiIiIgpAQCAtNjAs
ODAgKzY5LDI3NSBAQCBkZWYgZ2V0KHBvcnQsIG9wdGlvbnMpOgogICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ3Vuc3VwcG9ydGVkIHZhbHVlIGZvciAtLXdvcmtlci1tb2RlbDogJXMnICUgd29ya2VyX21v
ZGVsKQogCiAKK2NsYXNzIF9NZXNzYWdlKG9iamVjdCk6CisgICAgQHN0YXRpY21ldGhvZAorICAg
IGRlZiBsb2FkcyhzdHIpOgorICAgICAgICBvYmogPSBjUGlja2xlLmxvYWRzKHN0cikKKyAgICAg
ICAgYXNzZXJ0KGlzaW5zdGFuY2Uob2JqLCBfTWVzc2FnZSkpCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgc3JjLCBkZXN0LCBoZHIsIGJvZHkpOgorICAgICAgICBzZWxmLnNyYyA9IHNyYworICAg
ICAgICBzZWxmLmRlc3QgPSBkZXN0CisgICAgICAgIHNlbGYuaGRyID0gaGRyCisgICAgICAgIHNl
bGYuYm9keSA9IGJvZHkKKworICAgIGRlZiBkdW1wcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGNQ
aWNrbGUuZHVtcHMoc2VsZikKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0
dXJuICgiX01lc3NhZ2Uoc3JjPSclcycsIGRlc3Q9JyVzJywgaGRyPSclcycpIiAlCisgICAgICAg
ICAgICAgICAgKHNlbGYuc3JjLCBzZWxmLmRlc3QsIHNlbGYuaGRyKSkKKworCitjbGFzcyBfVGlt
ZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2FsbGJhY2ssIGRlbGF5KToKKyAg
ICAgICAgc2VsZi5jYWxsYmFjayA9IGNhbGxiYWNrCisgICAgICAgIHNlbGYuZGVsYXkgPSBkZWxh
eQorICAgICAgICBzZWxmLmRlYWRsaW5lID0gdGltZS50aW1lKCkgKyBkZWxheQorCisKIGNsYXNz
IF9Xb3JrZXJNZXNzYWdlQnJva2VyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBv
cnQsIG9wdGlvbnMpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBzZWxmLl9v
cHRpb25zID0gb3B0aW9ucwogCi0gICAgICAgICMgVGhpcyBtYXBzIHdvcmtlcl9uYW1lcyB0byBU
ZXN0U2hlbGxUaHJlYWRzCi0gICAgICAgIHNlbGYuX3RocmVhZHMgPSB7fQorICAgICAgICBzZWxm
Ll90aW1lcnMgPSB7fQorICAgICAgICBzZWxmLl90aW1lcnNbTUFOQUdFUl0gPSBOb25lCisgICAg
ICAgIHNlbGYuX3RpbWVyc1tBTllfV09SS0VSXSA9IE5vbmUKKyAgICAgICAgc2VsZi5fcXVldWVz
ID0ge30KIAotICAgIGRlZiBzdGFydF93b3JrZXIoc2VsZiwgdGVzdF9ydW5uZXIsIHdvcmtlcl9u
dW1iZXIpOgorICAgIGRlZiBzdGFydF93b3JrZXIoc2VsZiwgd29ya2VyX251bWJlcik6CiAgICAg
ICAgICIiIlN0YXJ0IGEgd29ya2VyIHdpdGggdGhlIGdpdmVuIGluZGV4IG51bWJlci4KIAogICAg
ICAgICBSZXR1cm5zIHRoZSBhY3R1YWwgVGVzdFNoZWxsVGhyZWFkIG9iamVjdC4iIiIKLSAgICAg
ICAgIyBGSVhNRTogUmVtb3ZlIGRlcGVuZGVuY2llcyBvbiB0ZXN0X3J1bm5lci4KLSAgICAgICAg
IyBGSVhNRTogUmVwbGFjZSB3aXRoIHNvbWV0aGluZyB0aGF0IGlzbid0IGEgdGhyZWFkLCBhbmQg
cmV0dXJuCi0gICAgICAgICMgdGhlIG5hbWUgb2YgdGhlIHdvcmtlciwgbm90IHRoZSB0aHJlYWQg
aXRzZWxmLiBXZSBuZWVkIHRvIHJldHVybgotICAgICAgICAjIHRoZSB0aHJlYWQgaXRzZWxmIGZv
ciBub3cgdG8gYWxsb3cgVGVzdFJ1bm5lciB0byBhY2Nlc3MgdGhlIG9iamVjdAotICAgICAgICAj
IGRpcmVjdGx5IHRvIHJlYWQgc2hhcmVkIHN0YXRlLgotICAgICAgICB0aHJlYWQgPSBkdW1wX3Jl
bmRlcl90cmVlX3RocmVhZC5UZXN0U2hlbGxUaHJlYWQoc2VsZi5fcG9ydCwKLSAgICAgICAgICAg
IHNlbGYuX29wdGlvbnMsIHdvcmtlcl9udW1iZXIsIHRlc3RfcnVubmVyLl9jdXJyZW50X2ZpbGVu
YW1lX3F1ZXVlLAotICAgICAgICAgICAgdGVzdF9ydW5uZXIuX3Jlc3VsdF9xdWV1ZSkKLSAgICAg
ICAgc2VsZi5fdGhyZWFkc1t0aHJlYWQubmFtZSgpXSA9IHRocmVhZAotICAgICAgICAjIE5vdGU6
IERvbid0IHN0YXJ0KCkgdGhlIHRocmVhZCEgSWYgd2UgZGlkLCBpdCB3b3VsZCBhY3R1YWxseQot
ICAgICAgICAjIGNyZWF0ZSBhbm90aGVyIHRocmVhZCBhbmQgc3RhcnQgZXhlY3V0aW5nIGl0LCBh
bmQgd2UnZCBubyBsb25nZXIKLSAgICAgICAgIyBiZSBzaW5nbGUtdGhyZWFkZWQuCi0gICAgICAg
IHJldHVybiB0aHJlYWQKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAg
ZGVmIGNhbmNlbF93b3JrZXIoc2VsZiwgd29ya2VyX25hbWUpOgogICAgICAgICAiIiJBdHRlbXB0
IHRvIGNhbmNlbCBhIHdvcmtlciAoYmVzdC1lZmZvcnQpLiBUaGUgd29ya2VyIG1heSBzdGlsbCBi
ZQogICAgICAgICBydW5uaW5nIGFmdGVyIHRoaXMgY2FsbCByZXR1cm5zLiIiIgotICAgICAgICBz
ZWxmLl90aHJlYWRzW3dvcmtlcl9uYW1lXS5jYW5jZWwoKQorICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yCisKKyAgICBkZWYgam9pbl93b3JrZXIoc2VsZiwgd29ya2VyX25hbWUsIHRp
bWVvdXQpOgorICAgICAgICAiIiJXYWl0IHVudGlsIHdvcmtlciBleGl0cyBvciB0aW1lb3V0IG9j
Y3Vycy4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVmIHdv
cmtlcl9pc19hbGl2ZShzZWxmLCB3b3JrZXJfbmFtZSk6CisgICAgICAgICIiIlJldHVybiB3aGV0
aGVyIHRoZSB3b3JrZXIgaXMgc3RpbGwgcnVubmluZy4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHdvcmtlcl9u
YW1lKToKICAgICAgICAgIiIiTG9nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBnaXZlbiB3b3JrZXIn
cyBzdGF0ZS4iIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi0gICAgZGVm
IHJ1bl9tZXNzYWdlX2xvb3Aoc2VsZiwgdGVzdF9ydW5uZXIpOgotICAgICAgICAiIiJMb29wIHBy
b2Nlc3NpbmcgbWVzc2FnZXMgdW50aWwgZG9uZS4iIiIKLSAgICAgICAgIyBGSVhNRTogZXZlbnR1
YWxseSB3ZSdsbCBuZWVkIGEgbWVzc2FnZSBsb29wIHRoYXQgdGhlIHdvcmtlcnMKLSAgICAgICAg
IyBjYW4gYWxzbyBjYWxsLgorICAgIGRlZiBhZGRfdGltZXIoc2VsZiwgcXVldWVfbmFtZSwgY2Fs
bGJhY2ssIGRlbGF5X3NlY3MpOgorICAgICAgICAiIiJBZGQgYSB0aW1lciB0aGF0IHdpbGwgZmly
ZSBkdXJpbmcgcnVuX21lc3NhZ2VfbG9vcChxdWV1ZV9uYW1lKS4KKworICAgICAgICBUaW1lciBj
YWxsYmFja3MgdGFrZSBubyBhcmd1bWVudHMsIGFuZCBzaG91bGQgcmV0dXJuIFRydWUgaWZmCisg
ICAgICAgIHJ1bl9tZXNzYWdlX2xvb3Agc2hvdWxkIGV4aXQuIEN1cnJlbnRseSB0aGUgY29kZSBv
bmx5IHN1cHBvcnRzIG9uZQorICAgICAgICB0aW1lciBwZXIgcXVldWVfbmFtZSwgYnV0IGEgdGlt
ZXIgY2FuIGJlIGFkZGVkIGZyb20gaW5zaWRlIHRoZQorICAgICAgICBjYWxsIGJhY2ssIGluIG9y
ZGVyIHRvIGNyZWF0ZSBwZXJpb2RpYyB0aW1lcnMuIiIiCisgICAgICAgIGFzc2VydChzZWxmLl90
aW1lcnNbcXVldWVfbmFtZV0gaXMgTm9uZSkKKyAgICAgICAgc2VsZi5fdGltZXJzW3F1ZXVlX25h
bWVdID0gX1RpbWVyKGNhbGxiYWNrLCBkZWxheV9zZWNzKQorCisgICAgZGVmIHB1dF9tZXNzYWdl
KHNlbGYsIHNyYywgZGVzdCwgbWVzc2FnZV9uYW1lLCBib2R5PU5vbmUpOgorICAgICAgICAiIiJQ
b3N0IGEgbWVzc2FnZSB0byB0aGUgcXVldWUgbmFtZWQgJ2Rlc3QnLiIiIgorICAgICAgICBib2R5
ID0gYm9keSBvciB0dXBsZSgpCisgICAgICAgIG1zZyA9IF9NZXNzYWdlKHNyYywgZGVzdCwgbWVz
c2FnZV9uYW1lLCBib2R5KQorICAgICAgICBzZWxmLl9xdWV1ZXNbZGVzdF0ucHV0KG1zZykKKwor
ICAgIGRlZiBydW5fbWVzc2FnZV9sb29wKHNlbGYsIHJlYWRlciwgcXVldWVfbmFtZSk6CisgICAg
ICAgICIiIkxvb3AgcHJvY2Vzc2luZyBtZXNzYWdlcyB1bnRpbCBkb25lLgorCisgICAgICAgIFRo
ZSBsb29wIGlzIGRvbmUgd2hlbiBlaXRoZXIgcmVhZGVyLmlzX2RvbmUoKSByZXR1cm5zIFRydWUg
b3IgYQorICAgICAgICB0aW1lciBmaXJlcyBhbmQgcmV0dXJucyBUcnVlLiIiIgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKKyAgICBkZWYgX2NoZWNrX3RpbWVyKHNlbGYsIHF1
ZXVlX25hbWUsIG5vdyk6CisgICAgICAgICIiIkNoZWNrIGlmIGFueSB0aW1lcnMgbmVlZCB0byBm
aXJlLCBhbmQgZmlyZSB0aGVtLgorCisgICAgICAgIFJldHVybnMgYSB0dXBsZSBvZiAod2hldGhl
ciBhIHRpbWVyIGZpcmVkLCB3aGV0aGVyIGEgdGltZXIKKyAgICAgICAgICAgIHJldHVybmVkIFRy
dWUgdG8gaW5kaWNhdGUgdGhhdCB3ZSBzaG91bGQgYmFpbCBvdXQgb2YgdGhlIGEKKyAgICAgICAg
ICAgIG1lc3NhZ2UgbG9vcCBpZiBuZWNlc3NhcnkpLiIiIgorICAgICAgICAjIFRoZSBmaXJzdCBy
ZXR1cm4gdmFsdWUgaXMgbmVlZGVkIGJ5IElubGluZUJyb2tlci5fZHJhaW5fcXVldWUoKSwKKyAg
ICAgICAgIyB0aGUgc2Vjb25kIGJ5IE11bHRpVGhyZWFkZWRCcm9rZXIucnVuX21lc3NhZ2VfbG9v
cCgpLgorICAgICAgICBpZiBzZWxmLl90aW1lcl9leHBpcmVkKHF1ZXVlX25hbWUsIG5vdyk6Cisg
ICAgICAgICAgICBkZWxheSA9IHNlbGYuX3RpbWVyX2RlbGF5KHF1ZXVlX25hbWUsIG5vdykKKyAg
ICAgICAgICAgIHQgPSBzZWxmLl90aW1lcnNbcXVldWVfbmFtZV0KKyAgICAgICAgICAgIHNlbGYu
X3RpbWVyc1txdWV1ZV9uYW1lXSA9IE5vbmUKKyAgICAgICAgICAgIGRvbmUgPSB0LmNhbGxiYWNr
KCkKKyAgICAgICAgICAgIHJldHVybiBUcnVlLCBkb25lCisgICAgICAgIHJldHVybiBGYWxzZSwg
RmFsc2UKKworICAgIGRlZiBfdGltZXJfZGVsYXkoc2VsZiwgcXVldWVfbmFtZSwgbm93KToKKyAg
ICAgICAgIiIiIlJldHVybiB0aGUgdGltZSAoaW4gc2VjcykgZnJvbSAnbm93JyB1bnRpbCB0aGUg
cXVldWUgdGltZXIgZmlyZXMuCisKKyAgICAgICAgVGhlIHJldHVybiB2YWx1ZSBtYXkgYmUgbmVn
YXRpdmUsIGluZGljYXRpbmcgdGhhdCB0aGUgdGltZXIgaGFzCisgICAgICAgIGV4cGlyZWQsIG9y
IE5vbmUsIHRvIGluZGljYXRlIHRoYXQgdGhlcmUgaXMgbm8gdGltZXIgb24gdGhlIHF1ZXVlCisg
ICAgICAgIChkZWxheSBmb3JldmVyKS4iIiIKKyAgICAgICAgdCA9IHNlbGYuX3RpbWVyc1txdWV1
ZV9uYW1lXQorICAgICAgICBpZiB0OgorICAgICAgICAgICAgcmV0dXJuIHQuZGVhZGxpbmUgLSBu
b3cKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfdGltZXJfZXhwaXJlZChzZWxmLCBx
dWV1ZV9uYW1lLCBub3cpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgcXVldWUgaGFz
IGEgdGltZXIgd2hvc2UgZGVhZGxpbmUgaXMgZWFybGllciB0aGFuIG5vdy4iIiIKKyAgICAgICAg
dCA9IHNlbGYuX3RpbWVyc1txdWV1ZV9uYW1lXQorICAgICAgICByZXR1cm4gKHQgaXMgbm90IE5v
bmUpIGFuZCBub3cgPj0gdC5kZWFkbGluZQorCisgICAgZGVmIF9kaXNwYXRjaF9tZXNzYWdlKHNl
bGYsIG1zZywgcmVhZGVyKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIocmVhZGVyLCAnaGFuZGxl
XycgKyBtc2cuaGRyKToKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAorICAgICAg
ICAgICAgICAgIiVzOiByZWNlaXZlZCBtZXNzYWdlICclcycgaXQgY291bGRuJ3QgaGFuZGxlIiAl
CisgICAgICAgICAgICAgICAocmVhZGVyLm5hbWUoKSwgbXNnLmhkcikpCisKKyAgICAgICAgb3B0
YXJncyA9IG1zZy5ib2R5CisgICAgICAgIGZuID0gZ2V0YXR0cihyZWFkZXIsICdoYW5kbGVfJyAr
IG1zZy5oZHIpCisgICAgICAgIGZuKG1zZy5zcmMsICpvcHRhcmdzKQorCiAKIGNsYXNzIF9Jbmxp
bmVCcm9rZXIoX1dvcmtlck1lc3NhZ2VCcm9rZXIpOgotICAgIGRlZiBydW5fbWVzc2FnZV9sb29w
KHNlbGYsIHRlc3RfcnVubmVyKToKLSAgICAgICAgdGhyZWFkID0gc2VsZi5fdGhyZWFkcy52YWx1
ZXMoKVswXQotICAgICAgICB0aHJlYWQucnVuX2luX21haW5fdGhyZWFkKHRlc3RfcnVubmVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcnVubmVyLl9jdXJyZW50X3Jl
c3VsdF9zdW1tYXJ5KQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBvcHRpb25zKToKKyAg
ICAgICAgc3VwZXIoX0lubGluZUJyb2tlciwgc2VsZikuX19pbml0X18ocG9ydCwgb3B0aW9ucykK
KyAgICAgICAgIyBGSVhNRTogV2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0aHJlYWRzYWZlIHF1ZXVl
cyBoZXJlLgorICAgICAgICBzZWxmLl9xdWV1ZXNbTUFOQUdFUl0gPSBRdWV1ZS5RdWV1ZSgpCisg
ICAgICAgIHNlbGYuX3F1ZXVlc1tBTllfV09SS0VSXSA9IFF1ZXVlLlF1ZXVlKCkKKyAgICAgICAg
c2VsZi5fbWFuYWdlciA9IE5vbmUKIAotICAgIGRlZiBsb2dfd2VkZ2VkX3dvcmtlcihzZWxmLCB3
b3JrZXJfbmFtZSk6Ci0gICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdfSW5saW5lQnJva2Vy
LmxvZ193ZWRnZWRfd29ya2VyKCkgY2FsbGVkJykKKyAgICBjbGFzcyBfV29ya2VyKGR1bXBfcmVu
ZGVyX3RyZWVfdGhyZWFkLldvcmtlcik6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9r
ZXIsIHdvcmtlcl9udW1iZXIpOgorICAgICAgICAgICAgc3VwZXIoX0lubGluZUJyb2tlci5fV29y
a2VyLCBzZWxmKS5fX2luaXRfXyhicm9rZXIsIHdvcmtlcl9udW1iZXIpCisgICAgICAgICAgICBz
ZWxmLl9hbGl2ZSA9IEZhbHNlCisKKyAgICAgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgorICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX2FsaXZlCisKKyAgICAgICAgZGVmIHJ1bihzZWxmKToKKyAgICAg
ICAgICAgIHNlbGYuX2FsaXZlID0gVHJ1ZQorICAgICAgICAgICAgc3VwZXIoX0lubGluZUJyb2tl
ci5Xb3JrZXIsIHNlbGYpLnJ1bigpCisgICAgICAgICAgICBzZWxmLl9hbGl2ZSA9IEZhbHNlCisK
KyAgICAgICAgZGVmIHlpZWxkX3RvX2Jyb2tlcihzZWxmKToKKyAgICAgICAgICAgIHNlbGYuX2Jy
b2tlci5fZHJhaW5fcXVldWUoc2VsZi5fYnJva2VyLl9tYW5hZ2VyLCBNQU5BR0VSKQorCisgICAg
ZGVmIHN0YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyKToKKyAgICAgICAgc2VsZi5faW5s
aW5lX3dvcmtlciA9IHNlbGYuX1dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyKQorICAgICAgICBy
ZXR1cm4gc2VsZi5faW5saW5lX3dvcmtlci5uYW1lKCkKKworICAgIGRlZiBydW5fbWVzc2FnZV9s
b29wKHNlbGYsIG1hbmFnZXIsIHF1ZXVlX25hbWUpOgorICAgICAgICAiIiJMb29wIHByb2Nlc3Np
bmcgbWVzc2FnZXMgdW50aWwgZG9uZS4iIiIKKyAgICAgICAgc2VsZi5fbWFuYWdlciA9IG1hbmFn
ZXIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGlkX3dvcmsgPSBUcnVlCisgICAgICAgICAg
ICB3aGlsZSBkaWRfd29yazoKKyAgICAgICAgICAgICAgICBkaWRfd29yayA9IHNlbGYuX2RyYWlu
X3F1ZXVlKHNlbGYuX2lubGluZV93b3JrZXIsIEFOWV9XT1JLRVIpCisgICAgICAgICAgICAgICAg
ZGlkX3dvcmsgPSBkaWRfd29yayBvciBzZWxmLl9kcmFpbl9xdWV1ZShtYW5hZ2VyLCBNQU5BR0VS
KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fbWFuYWdlciA9IE5vbmUKKwor
ICAgIGRlZiBjYW5jZWxfd29ya2VyKHNlbGYsIHdvcmtlcl9uYW1lKToKKyAgICAgICAgYXNzZXJ0
IHdvcmtlcl9uYW1lID09IHNlbGYuX2lubGluZV93b3JrZXIubmFtZSgpCisgICAgICAgIHNlbGYu
X2lubGluZV93b3JrZXIuY2FuY2VsKCkKKworICAgIGRlZiB3b3JrZXJfaXNfYWxpdmUoc2VsZiwg
d29ya2VyX25hbWUpOgorICAgICAgICBhc3NlcnQgd29ya2VyX25hbWUgPT0gc2VsZi5faW5saW5l
X3dvcmtlci5uYW1lKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lubGluZV93b3JrZXIuaXNfYWxp
dmUoKQorCisgICAgZGVmIGpvaW5fd29ya2VyKHNlbGYsIHdvcmtlcl9uYW1lLCB0aW1lb3V0KToK
KyAgICAgICAgYXNzZXJ0IHdvcmtlcl9uYW1lID09IHNlbGYuX2lubGluZV93b3JrZXIubmFtZSgp
CisgICAgICAgIGFzc2VydCBzZWxmLl9pbmxpbmVfd29ya2VyLmlzX2RvbmUoKQorCisgICAgZGVm
IGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHdvcmtlcl9uYW1lLCB0ZXN0X25hbWUpOgorICAgICAg
ICByYWlzZSBBc3NlcnRpb25FcnJvcigiX0lubGluZUJyb2tlci5sb2dfd2VkZ2VkX3dvcmtlcigp
IGNhbGxlZCIpCisKKyAgICBkZWYgX2RyYWluX3F1ZXVlKHNlbGYsIHJlYWRlciwgcXVldWVfbmFt
ZSk6CisgICAgICAgICIiIkxvb3AgdW50aWwgd2UgcnVuIG91dCBvZiBzdHVmZiB0byBkbyB3L28g
YmxvY2tpbmcuCisKKyAgICAgICAgVGhpcyBtZWFucyB0aGVyZSBhcmUgbm8gbWVzc2FnZXMgdG8g
cHJvY2VzcyBhbmQgbm8gdGltZXJzIGFyZSBmaXJpbmcuCisgICAgICAgIFRoZSBtZXRob2Qgd2ls
bCBrZWVwIHByb2Nlc3NpbmcgbWVzc2FnZXMgYW5kIGZpcmluZyB0aW1lcnMgcmVnYXJkbGVzcwor
ICAgICAgICBvZiB3aGF0IHRoZSB0aW1lcnMgcmV0dXJuIG9yIHdoYXQgcmVhZGVyLmlzX2RvbmUo
KSByZXR1cm5zLgorCisgICAgICAgIFJldHVybnMgd2hldGhlciBvciBub3Qgd2UgZGlkIGFueXRo
aW5nIGF0IGFsbC4iIiIKKyAgICAgICAgIyBGSVhNRTogU2hvdWxkIHdlIGV4aXQgZWFybHkgaWYg
dGltZXJzIHJldHVybiBkb25lIG9yIHJlYWRlci5pc19kb25lKCkKKyAgICAgICAgIyBpcyBUcnVl
PworCisgICAgICAgIGRpZF93b3JrID0gRmFsc2UKKyAgICAgICAgZGlkX3dvcmtfb25fdGhpc19y
dW4gPSBUcnVlCisgICAgICAgIHdoaWxlIGRpZF93b3JrX29uX3RoaXNfcnVuOgorICAgICAgICAg
ICAgIyBQZXIgdGhlIGFib3ZlLCB3ZSBpZ25vcmUgdGhlICdkb25lJyB2YWx1ZSBmcm9tIGNoZWNr
X3RpbWVyKCkKKyAgICAgICAgICAgIGRpZF93b3JrX29uX3RoaXNfcnVuLCBfID0gc2VsZi5fY2hl
Y2tfdGltZXIocXVldWVfbmFtZSwgdGltZS50aW1lKCkpCisgICAgICAgICAgICB0cnk6CisgICAg
ICAgICAgICAgICAgbXNnID0gc2VsZi5fcXVldWVzW3F1ZXVlX25hbWVdLmdldChibG9jaz1GYWxz
ZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9kaXNwYXRjaF9tZXNzYWdlKG1zZywgcmVhZGVyKQor
ICAgICAgICAgICAgICAgIGRpZF93b3JrX29uX3RoaXNfcnVuID0gVHJ1ZQorICAgICAgICAgICAg
ZXhjZXB0IFF1ZXVlLkVtcHR5OgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAg
aWYgZGlkX3dvcmtfb25fdGhpc19ydW46CisgICAgICAgICAgICAgICAgZGlkX3dvcmsgPSBUcnVl
CisKKyAgICAgICAgcmV0dXJuIGRpZF93b3JrCiAKIAogY2xhc3MgX011bHRpVGhyZWFkZWRCcm9r
ZXIoX1dvcmtlck1lc3NhZ2VCcm9rZXIpOgotICAgIGRlZiBzdGFydF93b3JrZXIoc2VsZiwgdGVz
dF9ydW5uZXIsIHdvcmtlcl9udW1iZXIpOgotICAgICAgICB0aHJlYWQgPSBzdXBlcihfTXVsdGlU
aHJlYWRlZEJyb2tlciwgc2VsZikuc3RhcnRfd29ya2VyKHRlc3RfcnVubmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdv
cmtlcl9udW1iZXIpCi0gICAgICAgICMgVW5saWtlIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uLCBo
ZXJlIHdlIGFjdHVhbGx5IHdhbnQgdG8gc3RhcnQKLSAgICAgICAgIyB0aGUgdGhyZWFkLgotICAg
ICAgICB0aHJlYWQuc3RhcnQoKQotICAgICAgICByZXR1cm4gdGhyZWFkCi0KLSAgICBkZWYgcnVu
X21lc3NhZ2VfbG9vcChzZWxmLCB0ZXN0X3J1bm5lcik6Ci0gICAgICAgICMgRklYTUU6IFJlbW92
ZSB0aGUgZGVwZW5kZW5jaWVzIG9uIHRlc3RfcnVubmVyLiBDaGVja2luZyBvbiB3b3JrZXJzCi0g
ICAgICAgICMgc2hvdWxkIGJlIGRvbmUgdmlhIGEgdGltZXIgZmlyaW5nLgotICAgICAgICB0ZXN0
X3J1bm5lci5fY2hlY2tfb25fd29ya2VycygpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQs
IG9wdGlvbnMpOgorICAgICAgICBzdXBlcihfTXVsdGlUaHJlYWRlZEJyb2tlciwgc2VsZikuX19p
bml0X18ocG9ydCwgb3B0aW9ucykKKyAgICAgICAgc2VsZi5fcXVldWVzW01BTkFHRVJdID0gUXVl
dWUuUXVldWUoKQorICAgICAgICBzZWxmLl9xdWV1ZXNbQU5ZX1dPUktFUl0gPSBRdWV1ZS5RdWV1
ZSgpCiAKLSAgICBkZWYgbG9nX3dlZGdlZF93b3JrZXIoc2VsZiwgd29ya2VyX25hbWUpOgorICAg
ICAgICBzZWxmLl90aHJlYWRzID0ge30KKworICAgIGNsYXNzIF9Xb3JrZXIoZHVtcF9yZW5kZXJf
dHJlZV90aHJlYWQuV29ya2VyLCB0aHJlYWRpbmcuVGhyZWFkKToKKyAgICAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX251bWJlcik6CisgICAgICAgICAgICBzdXBlcihfTXVs
dGlUaHJlYWRlZEJyb2tlci5fV29ya2VyLCBzZWxmKS5fX2luaXRfXyhicm9rZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
b3JrZXJfbnVtYmVyKQorICAgICAgICAgICAgc2VsZi50aWQgPSAiPG5vbmU+IgorCisgICAgICAg
IGRlZiBydW4oc2VsZik6CisgICAgICAgICAgICBzZWxmLnRpZCA9IHRocmVhZC5nZXRfaWRlbnQo
KQorICAgICAgICAgICAgZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQuV29ya2VyLnJ1bihzZWxmKQor
CisgICAgZGVmIHN0YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyKToKKyAgICAgICAgd29y
a2VyID0gc2VsZi5fV29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIpCisgICAgICAgIG5hbWUgPSB3
b3JrZXIubmFtZSgpCisgICAgICAgIHNlbGYuX3RocmVhZHNbbmFtZV0gPSB3b3JrZXIKKyAgICAg
ICAgd29ya2VyLnN0YXJ0KCkKKyAgICAgICAgcmV0dXJuIG5hbWUKKworICAgIGRlZiBydW5fbWVz
c2FnZV9sb29wKHNlbGYsIHJlYWRlciwgcXVldWVfbmFtZSk6CisgICAgICAgIHdoaWxlIFRydWU6
CisgICAgICAgICAgICAjIEhlcmUgd2UgZG9uJ3QgY2FyZSBpZiB3ZSBkbyB3b3JrIGluIHRoZSB0
aW1lci4KKyAgICAgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgICAgICBfLCBkb25l
ID0gc2VsZi5fY2hlY2tfdGltZXIocXVldWVfbmFtZSwgbm93KQorICAgICAgICAgICAgaWYgZG9u
ZSBvciByZWFkZXIuaXNfZG9uZSgpOgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAg
ICAgICAjIFJlLWNoZWNrIHRoZSB0aW1lLCBpbiBjYXNlIHRoZSB0aW1lciBoYWQgYSBzbG93IGNh
bGxiYWNrLgorICAgICAgICAgICAgbm93ID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgIGlmIG5v
dCBzZWxmLl90aW1lcl9leHBpcmVkKHF1ZXVlX25hbWUsIG5vdyk6CisgICAgICAgICAgICAgICAg
ZGVsYXkgPSBzZWxmLl90aW1lcl9kZWxheShxdWV1ZV9uYW1lLCBub3cpCisgICAgICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLl9xdWV1ZXNbcXVldWVfbmFt
ZV0uZ2V0KGJsb2NrPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZW91dD1kZWxheSkKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fZGlzcGF0Y2hfbWVzc2FnZShtc2csIHJlYWRlcikKKyAgICAgICAgICAgICAgICBleGNlcHQg
UXVldWUuRW1wdHk6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiBjYW5jZWxf
d29ya2VyKHNlbGYsIHdvcmtlcl9uYW1lKToKKyAgICAgICAgc2VsZi5fdGhyZWFkc1t3b3JrZXJf
bmFtZV0uY2FuY2VsKCkKKworICAgIGRlZiBqb2luX3dvcmtlcihzZWxmLCB3b3JrZXJfbmFtZSwg
dGltZW91dCk6CisgICAgICAgIHNlbGYuX3RocmVhZHNbd29ya2VyX25hbWVdLmpvaW4odGltZW91
dCkKKworICAgIGRlZiB3b3JrZXJfaXNfYWxpdmUoc2VsZiwgd29ya2VyX25hbWUpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fdGhyZWFkc1t3b3JrZXJfbmFtZV0uaXNfYWxpdmUoKQorCisgICAgZGVm
IGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHdvcmtlcl9uYW1lLCB0ZXN0X25hbWUpOgogICAgICAg
ICB0aHJlYWQgPSBzZWxmLl90aHJlYWRzW3dvcmtlcl9uYW1lXQogICAgICAgICBzdGFjayA9IHNl
bGYuX2ZpbmRfdGhyZWFkX3N0YWNrKHRocmVhZC5pZCgpKQogICAgICAgICBhc3NlcnQoc3RhY2sg
aXMgbm90IE5vbmUpCi0gICAgICAgIF9sb2cuZXJyb3IoIiIpCi0gICAgICAgIF9sb2cuZXJyb3Io
IiVzICh0aWQgJWQpIGlzIHdlZGdlZCIgJSAod29ya2VyX25hbWUsIHRocmVhZC5pZCgpKSkKKyAg
ICAgICAgX2xvZy5lcnJvcigiJXMgKHRpZCAlZCkgaXMgd2VkZ2VkIG9uIHRlc3QgJXMiICUKKyAg
ICAgICAgICAgICAgICAgICAod29ya2VyX25hbWUsIHRocmVhZC5pZCgpLCB0ZXN0X25hbWUpKQog
ICAgICAgICBzZWxmLl9sb2dfc3RhY2soc3RhY2spCi0gICAgICAgIF9sb2cuZXJyb3IoIiIpCiAK
ICAgICBkZWYgX2ZpbmRfdGhyZWFkX3N0YWNrKHNlbGYsIGlkKToKICAgICAgICAgIiIiUmV0dXJu
cyBhIHN0YWNrIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGR1bXAgYSBzdGFjayB0cmFjZSBm
b3IKQEAgLTE0OSwzICszNTMsNCBAQCBjbGFzcyBfTXVsdGlUaHJlYWRlZEJyb2tlcihfV29ya2Vy
TWVzc2FnZUJyb2tlcik6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCdGaWxlOiAiJXMiLCBsaW5l
ICVkLCBpbiAlcycgJSAoZmlsZW5hbWUsIGxpbmVubywgbmFtZSkpCiAgICAgICAgICAgICBpZiBs
aW5lOgogICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJyAgJXMnICUgbGluZS5zdHJpcCgpKQor
ICAgICAgICBfbG9nLmVycm9yKCIiKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXJfdW5pdHRl
c3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS9tZXNzYWdlX2Jyb2tlcl91bml0dGVzdC5weQppbmRleCBkNDZkZjRjNTdmMTU0OTZk
ZTM0NmRhOWE4NDY5MzY4ZDVhOGZkODA0Li42NDZhZDRhZGYzMTY0OGU2MDM4ZmQ3YjMwYjFjNWU3
OWI2Yzk4OGU3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlcl91bml0dGVzdC5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9t
ZXNzYWdlX2Jyb2tlcl91bml0dGVzdC5weQpAQCAtNjcsNyArNjcsNyBAQCBjbGFzcyBUZXN0VGhy
ZWFkU3RhY2tzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9icm9rZXIoc2VsZik6
CiAgICAgICAgIG9wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucygpCiAgICAgICAgIHJldHVy
biBtZXNzYWdlX2Jyb2tlci5fTXVsdGlUaHJlYWRlZEJyb2tlcihwb3J0PU5vbmUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9b3B0
aW9ucykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGlvbnM9b3B0aW9ucykKIAogICAgIGRlZiB0ZXN0X2ZpbmRfdGhyZWFkX3N0YWNrX2ZvdW5k
KHNlbGYpOgogICAgICAgICBicm9rZXIgPSBzZWxmLm1ha2VfYnJva2VyKCkKQEAgLTkyLDcgKzky
LDcgQEAgY2xhc3MgVGVzdFRocmVhZFN0YWNrcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IGJyb2tlci5fdGhyZWFkc1tjaGlsZF90aHJlYWQubmFtZSgpXSA9IGNoaWxkX3RocmVhZAogICAg
ICAgICBtc2cgPSBzdGFydGluZ19xdWV1ZS5nZXQoKQogCi0gICAgICAgIGJyb2tlci5sb2dfd2Vk
Z2VkX3dvcmtlcihjaGlsZF90aHJlYWQubmFtZSgpKQorICAgICAgICBicm9rZXIubG9nX3dlZGdl
ZF93b3JrZXIoY2hpbGRfdGhyZWFkLm5hbWUoKSwgJ3Rlc3RfbmFtZScpCiAgICAgICAgIHN0b3Bw
aW5nX3F1ZXVlLnB1dCgnJykKICAgICAgICAgY2hpbGRfdGhyZWFkLmpvaW4odGltZW91dD0xLjAp
CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDU3MGYyMjJiZTYzMjJlMTQxZmM1MmZk
NGYwNjAwOWZlY2JjZjcyYmQuLjc2OTYyMDJiYmU3MzkzOWI3Y2Y4NzNhMDJkNzkzZDc1NTljNzRm
ZGIgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtNjQsNyArNjQsNiBAQCBpbXBvcnQg
c3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogCi1mcm9tIGxheW91dF9wYWNrYWdl
IGltcG9ydCBkdW1wX3JlbmRlcl90cmVlX3RocmVhZAogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBv
cnQganNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1w
b3J0IG1lc3NhZ2VfYnJva2VyCiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCBwcmludGluZwpA
QCAtMTM1LDcgKzEzNCw3IEBAIGNsYXNzIFJlc3VsdFN1bW1hcnkob2JqZWN0KToKICAgICAgICAg
IiIiQWRkIGEgVGVzdFJlc3VsdCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBiaW4uCiAKICAgICAgICAg
QXJnczoKLSAgICAgICAgICByZXN1bHQ6IFRlc3RSZXN1bHQgZnJvbSBkdW1wX3JlbmRlcl90cmVl
X3RocmVhZC4KKyAgICAgICAgICByZXN1bHQ6IFRlc3RSZXN1bHQKICAgICAgICAgICBleHBlY3Rl
ZDogd2hldGhlciB0aGUgcmVzdWx0IHdhcyB3aGF0IHdlIGV4cGVjdGVkIGl0IHRvIGJlLgogICAg
ICAgICAiIiIKIApAQCAtMjMxLDEzICsyMzAsMjAgQEAgZGVmIHN1bW1hcml6ZV91bmV4cGVjdGVk
X3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksCiAjIEZJWE1F
OiBUaGlzIG5hbWUgaXMgc29tZXdoYXQgbWlzbGVhZGluZyBiZWNhdXNlIHRoZSBhY3R1YWwgd29y
a2VycyBoYXZlCiAjIHRoZWlyIG93biBpbnRlcm5hbCBzdGF0ZSBpbiBUZXN0U2hlbGxUaHJlYWQu
IEhvd2V2ZXIsIGEgYmV0dGVyIG5hbWUgZm9yCiAjIHRoaXMgaGFzIHlldCB0byBiZSBmb3VuZC4K
LWNsYXNzIFdvcmtlclN0YXRlKG9iamVjdCk6Ci0gICAgIiIiQSBjbGFzcyBmb3IgdGhlIFRlc3RS
dW5uZXIvbWFuYWdlciB0byB1c2UgdG8gdHJhY2sgdGhlIGN1cnJlbnQgc3RhdGUKLSAgICBvZiB0
aGUgd29ya2Vycy4iIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgbnVtYmVyLCB0aHJl
YWQpOgorY2xhc3MgX1dvcmtlclN0YXRlKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIG51bWJlcik6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5u
dW1iZXIgPSBudW1iZXIKLSAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWQKKyAgICAgICAgc2Vs
Zi5kb25lID0gRmFsc2UKKyAgICAgICAgc2VsZi5uZXh0X3RpbWVvdXQgPSBOb25lCisgICAgICAg
IHNlbGYud2VkZ2VkID0gRmFsc2UKKyAgICAgICAgc2VsZi5zdGF0cyA9IHt9CisgICAgICAgIHNl
bGYuc3RhdHNbJ25hbWUnXSA9IG5hbWUKKyAgICAgICAgc2VsZi5zdGF0c1snbnVtX3Rlc3RzJ10g
PSAwCisgICAgICAgIHNlbGYuc3RhdHNbJ3RvdGFsX3RpbWUnXSA9IDAKKworICAgIGRlZiBfX3Jl
cHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJfV29ya2VyU3RhdGUoIiArIHN0cihzZWxmLl9f
ZGljdF9fKSArICIpIgogCiAKIGNsYXNzIFRlc3RSdW5uZXI6CkBAIC0yNjAsOSArMjY2LDEyIEBA
IGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgb3B0aW9uczogYSBkaWN0aW9uYXJ5IG9mIGNv
bW1hbmQgbGluZSBvcHRpb25zCiAgICAgICAgICAgcHJpbnRlcjogYSBQcmludGVyIG9iamVjdCB0
byByZWNvcmQgdXBkYXRlcyB0by4KICAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX25hbWUgPSBt
ZXNzYWdlX2Jyb2tlci5NQU5BR0VSCiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAg
IHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX3ByaW50ZXIgPSBwcmludGVy
CisgICAgICAgIHNlbGYuX21lc3NhZ2VfYnJva2VyID0gTm9uZQorICAgICAgICBzZWxmLlVQREFU
RV9JTlRFUlZBTCA9IDAuMDEKIAogICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIGFjdHVhbGx5IGEg
Y29sbGVjdGlvbiBvZiBXb3JrZXJTdGF0ZSBvYmplY3RzIHRoYXQKICAgICAgICAgIyByZXByZXNl
bnQgdGhlIHN0YXRlIG9mIHRoZSB3b3JrZXJzICh3aGljaCBtYXkgYmUgc2VwYXJhdGUgdGhyZWFk
cwpAQCAtMjc3LDkgKzI4NiwxNCBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAjIGEgc2V0
IG9mIHRlc3QgZmlsZXMsIGFuZCB0aGUgc2FtZSB0ZXN0cyBhcyBhIGxpc3QKICAgICAgICAgc2Vs
Zi5fdGVzdF9maWxlcyA9IHNldCgpCiAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IE5v
bmUKLSAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlID0gUXVldWUuUXVldWUoKQogICAgICAgICBz
ZWxmLl9yZXRyeWluZyA9IEZhbHNlCiAKKyAgICBkZWYgaXNfZG9uZShzZWxmKToKKyAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X25hbWUKKwogICAgIGRlZiBjb2xsZWN0X3Rlc3RzKHNlbGYsIGFyZ3MsIGxhc3RfdW5leHBlY3Rl
ZF9yZXN1bHRzKToKICAgICAgICAgIiIiRmluZCBhbGwgdGhlIGZpbGVzIHRvIHRlc3QuCiAKQEAg
LTYwMSw5NiArNjE1LDk4IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICAgIGluIHRo
ZSBmb3JtIHtmaWxlbmFtZTpmaWxlbmFtZSwgdGVzdF9ydW5fdGltZTp0ZXN0X3J1bl90aW1lfQog
ICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IHRvIHBvcHVsYXRlIHdp
dGggdGhlIHJlc3VsdHMKICAgICAgICAgIiIiCisgICAgICAgIG51bV93b3JrZXJzID0gc2VsZi5f
bnVtX3dvcmtlcnMoKQorCisgICAgICAgIHNlbGYuX2N1cnJlbnRfZmlsZV9saXN0ID0gZmlsZV9s
aXN0CisgICAgICAgIHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkgPSByZXN1bHRfc3VtbWFy
eQogCisgICAgICAgIHNlbGYuX2FsbF9yZXN1bHRzID0gW10KKyAgICAgICAgc2VsZi5fZ3JvdXBf
c3RhdHMgPSB7fQogICAgICAgICBzZWxmLl93b3JrZXJzID0ge30KIAogICAgICAgICBzZWxmLl9w
cmludGVyLnByaW50X3VwZGF0ZSgnU2hhcmRpbmcgdGVzdHMgLi4uJykKLSAgICAgICAgbnVtX3dv
cmtlcnMgPSBzZWxmLl9udW1fd29ya2VycygpCiAgICAgICAgIHRlc3RfbGlzdHMgPSBzZWxmLl9z
aGFyZF90ZXN0cyhmaWxlX2xpc3QsCiAgICAgICAgICAgICBudW1fd29ya2VycyA+IDEgYW5kIG5v
dCBzZWxmLl9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxlbCkKIAogICAgICAgICBi
cm9rZXIgPSBtZXNzYWdlX2Jyb2tlci5nZXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucykKICAg
ICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIgPSBicm9rZXIKKyAgICAgICAgZm9yIHRlc3RfbGlz
dCBpbiB0ZXN0X2xpc3RzOgorICAgICAgICAgICAgc2VsZi5fcG9zdCgndGVzdF9saXN0JywgdGVz
dF9saXN0KQogCi0gICAgICAgIGZpbGVuYW1lX3F1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAg
ICBmb3IgaXRlbSBpbiB0ZXN0X2xpc3RzOgotICAgICAgICAgICAgZmlsZW5hbWVfcXVldWUucHV0
KGl0ZW0pCisgICAgICAgICMgVGVsbCB0aGUgd29ya2VycyB0byBzaHV0IGRvd24gYWZ0ZXIgdGhl
eSdyZSBkb25lIHJ1bm5pbmcgYWxsIHRoZQorICAgICAgICAjIHRlc3RzLgorICAgICAgICBmb3Ig
aSBpbiB4cmFuZ2UobnVtX3dvcmtlcnMpOgorICAgICAgICAgICAgc2VsZi5fcG9zdCgnc3RvcCcp
CiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nICVzIC4uLicg
JQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyLnBsdXJhbGl6ZSgn
d29ya2VyJywgbnVtX3dvcmtlcnMpKQotICAgICAgICBzZWxmLl9jdXJyZW50X2ZpbGVuYW1lX3F1
ZXVlID0gZmlsZW5hbWVfcXVldWUKLSAgICAgICAgc2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFy
eSA9IHJlc3VsdF9zdW1tYXJ5Ci0KICAgICAgICAgZm9yIHdvcmtlcl9udW1iZXIgaW4geHJhbmdl
KG51bV93b3JrZXJzKToKLSAgICAgICAgICAgIHRocmVhZCA9IGJyb2tlci5zdGFydF93b3JrZXIo
c2VsZiwgd29ya2VyX251bWJlcikKLSAgICAgICAgICAgIHcgPSBXb3JrZXJTdGF0ZSh0aHJlYWQu
bmFtZSgpLCB3b3JrZXJfbnVtYmVyLCB0aHJlYWQpCi0gICAgICAgICAgICBzZWxmLl93b3JrZXJz
W3RocmVhZC5uYW1lKCldID0gdworICAgICAgICAgICAgd29ya2VyX25hbWUgPSBicm9rZXIuc3Rh
cnRfd29ya2VyKHdvcmtlcl9udW1iZXIpCisgICAgICAgICAgICB3ID0gX1dvcmtlclN0YXRlKHdv
cmtlcl9uYW1lLCB3b3JrZXJfbnVtYmVyKQorICAgICAgICAgICAgc2VsZi5fd29ya2Vyc1t3b3Jr
ZXJfbmFtZV0gPSB3CiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoIlN0YXJ0
aW5nIHRlc3RpbmcgLi4uIikKICAgICAgICAga2V5Ym9hcmRfaW50ZXJydXB0ZWQgPSBGYWxzZQot
ICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgotICAgICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgICAgIGJyb2tlci5ydW5fbWVzc2FnZV9sb29wKHNlbGYpCi0gICAgICAgICAg
ICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJJ
bnRlcnJ1cHRlZCwgZXhpdGluZyIpCi0gICAgICAgICAgICAgICAgZm9yIHdvcmtlcl9uYW1lIGlu
IHNlbGYuX3dvcmtlcnMua2V5cygpOgotICAgICAgICAgICAgICAgICAgICBicm9rZXIuY2FuY2Vs
X3dvcmtlcih3b3JrZXJfbmFtZSkKLSAgICAgICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRl
ZCA9IFRydWUKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAjIFVuZXhwZWN0
ZWQgZXhjZXB0aW9uOyBkb24ndCB0cnkgdG8gY2xlYW4gdXAgd29ya2Vycy4KLSAgICAgICAgICAg
ICAgICBfbG9nLmluZm8oIkV4Y2VwdGlvbiByYWlzZWQsIGV4aXRpbmciKQotICAgICAgICAgICAg
ICAgIHJhaXNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25z
LmRyeV9ydW46CisgICAgICAgICAgICAgICAgZG9uZSA9IHNlbGYuX2NoZWNrX29uX3dvcmtlcnMo
KQorICAgICAgICAgICAgICAgIGlmIG5vdCBkb25lOgorICAgICAgICAgICAgICAgICAgICBicm9r
ZXIucnVuX21lc3NhZ2VfbG9vcChzZWxmLCBtZXNzYWdlX2Jyb2tlci5NQU5BR0VSKQorCisgICAg
ICAgICAgICAgICAgZm9yIHcgaW4gc2VsZi5fd29ya2Vycy52YWx1ZXMoKToKKyAgICAgICAgICAg
ICAgICAgICAgaWYgbm90IHcud2VkZ2VkIGFuZCBicm9rZXIud29ya2VyX2lzX2FsaXZlKHcubmFt
ZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBicm9rZXIuam9pbl93b3JrZXIody5uYW1lLCAw
LjUpCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGJyb2tlci53b3JrZXJfaXNf
YWxpdmUody5uYW1lKQorCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAg
ICAgICAgIF9sb2cuaW5mbygiSW50ZXJydXB0ZWQsIGV4aXRpbmciKQorICAgICAgICAgICAgZm9y
IHdvcmtlcl9uYW1lIGluIHNlbGYuX3dvcmtlcnMua2V5cygpOgorICAgICAgICAgICAgICAgIGJy
b2tlci5jYW5jZWxfd29ya2VyKHdvcmtlcl9uYW1lKQorICAgICAgICAgICAga2V5Ym9hcmRfaW50
ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICMgVW5leHBlY3Rl
ZCBleGNlcHRpb247IGRvbid0IHRyeSB0byBjbGVhbiB1cCB3b3JrZXJzLgorICAgICAgICAgICAg
X2xvZy5pbmZvKCJFeGNlcHRpb24gcmFpc2VkLCBleGl0aW5nIikKKyAgICAgICAgICAgIHNlbGYu
X21lc3NhZ2VfYnJva2VyID0gTm9uZQorICAgICAgICAgICAgcmFpc2UKIAotICAgICAgICB0aHJl
YWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyA9IFwKLSAg
ICAgICAgICAgIHNlbGYuX2NvbGxlY3RfdGltaW5nX2luZm8oc2VsZi5fd29ya2VycykKICAgICAg
ICAgc2VsZi5fbWVzc2FnZV9icm9rZXIgPSBOb25lCisgICAgICAgIHRocmVhZF90aW1pbmdzID0g
W3cuc3RhdHMgZm9yIHcgaW4gc2VsZi5fd29ya2Vycy52YWx1ZXMoKV0KKyAgICAgICAgcmV0dXJu
IChrZXlib2FyZF9pbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsCisgICAgICAgICAgICAgICAg
c2VsZi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRzKQogCi0gICAgICAgIHJldHVybiAo
a2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLCB0ZXN0X3RpbWluZ3MsCi0gICAg
ICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpCisgICAgZGVmIF9wb3N0KHNlbGYs
IG1lc3NhZ2VfbmFtZSwgKm1lc3NhZ2VfYXJncyk6CisgICAgICAgIHNlbGYuX21lc3NhZ2VfYnJv
a2VyLnB1dF9tZXNzYWdlKHNlbGYuX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2VfYnJva2VyLkFOWV9XT1JLRVIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfbmFtZSwgKm1lc3NhZ2VfYXJncykKIAog
ICAgIGRlZiBfY2hlY2tfb25fd29ya2VycyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBUcnVl
IGlmZiBhbGwgdGhlIHdvcmtlcnMgaGF2ZSBlaXRoZXIgY29tcGxldGVkIG9yIHdlZGdlZC4iIiIK
LQotICAgICAgICAjIExvb3AgdGhyb3VnaCBhbGwgdGhlIHRocmVhZHMgd2FpdGluZyBmb3IgdGhl
bSB0byBmaW5pc2guCi0gICAgICAgIHNvbWVfdGhyZWFkX2lzX2FsaXZlID0gVHJ1ZQotICAgICAg
ICB3aGlsZSBzb21lX3RocmVhZF9pc19hbGl2ZToKLSAgICAgICAgICAgIHNvbWVfdGhyZWFkX2lz
X2FsaXZlID0gRmFsc2UKLSAgICAgICAgICAgIHQgPSB0aW1lLnRpbWUoKQotICAgICAgICAgICAg
Zm9yIHdvcmtlciBpbiBzZWxmLl93b3JrZXJzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIHRo
cmVhZCA9IHdvcmtlci50aHJlYWQKLSAgICAgICAgICAgICAgICBleGNlcHRpb25faW5mbyA9IHRo
cmVhZC5leGNlcHRpb25faW5mbygpCi0gICAgICAgICAgICAgICAgaWYgZXhjZXB0aW9uX2luZm8g
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICMgUmUtcmFpc2UgdGhlIHRocmVhZCdz
IGV4Y2VwdGlvbiBoZXJlIHRvIG1ha2UgaXQKLSAgICAgICAgICAgICAgICAgICAgIyBjbGVhciB0
aGF0IHRlc3Rpbmcgd2FzIGFib3J0ZWQuIE90aGVyd2lzZSwKLSAgICAgICAgICAgICAgICAgICAg
IyB0aGUgdGVzdHMgdGhhdCBkaWQgbm90IHJ1biB3b3VsZCBiZSBhc3N1bWVkCi0gICAgICAgICAg
ICAgICAgICAgICMgdG8gaGF2ZSBwYXNzZWQuCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGV4
Y2VwdGlvbl9pbmZvWzBdLCBleGNlcHRpb25faW5mb1sxXSwgZXhjZXB0aW9uX2luZm9bMl0KLQot
ICAgICAgICAgICAgICAgIGlmIHRocmVhZC5pc0FsaXZlKCk6Ci0gICAgICAgICAgICAgICAgICAg
IHNvbWVfdGhyZWFkX2lzX2FsaXZlID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBuZXh0X3Rp
bWVvdXQgPSB0aHJlYWQubmV4dF90aW1lb3V0KCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbmV4
dF90aW1lb3V0IGFuZCB0ID4gbmV4dF90aW1lb3V0OgotICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fbWVzc2FnZV9icm9rZXIubG9nX3dlZGdlZF93b3JrZXIod29ya2VyLm5hbWUpCi0gICAg
ICAgICAgICAgICAgICAgICAgICB0aHJlYWQuY2xlYXJfbmV4dF90aW1lb3V0KCkKLQotICAgICAg
ICAgICAgc2VsZi51cGRhdGVfc3VtbWFyeShzZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5KQot
Ci0gICAgICAgICAgICBpZiBzb21lX3RocmVhZF9pc19hbGl2ZToKLSAgICAgICAgICAgICAgICB0
aW1lLnNsZWVwKDAuMDEpCi0KLSAgICBkZWYgX2NvbGxlY3RfdGltaW5nX2luZm8oc2VsZiwgd29y
a2Vycyk6Ci0gICAgICAgIHRlc3RfdGltaW5ncyA9IHt9Ci0gICAgICAgIGluZGl2aWR1YWxfdGVz
dF90aW1pbmdzID0gW10KLSAgICAgICAgdGhyZWFkX3RpbWluZ3MgPSBbXQotCi0gICAgICAgIGZv
ciB0aHJlYWQgaW4gW3cudGhyZWFkIGZvciB3IGluIHdvcmtlcnMudmFsdWVzKCldOgotICAgICAg
ICAgICAgdGhyZWFkX3RpbWluZ3MuYXBwZW5kKHsnbmFtZSc6IHRocmVhZC5uYW1lKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudW1fdGVzdHMnOiB0aHJlYWQuZ2V0X251
bV90ZXN0cygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG90YWxfdGlt
ZSc6IHRocmVhZC5nZXRfdG90YWxfdGltZSgpfSkKLSAgICAgICAgICAgIHRlc3RfdGltaW5ncy51
cGRhdGUodGhyZWFkLmdldF90ZXN0X2dyb3VwX3RpbWluZ19zdGF0cygpKQotICAgICAgICAgICAg
aW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MuZXh0ZW5kKHRocmVhZC5nZXRfdGVzdF9yZXN1bHRzKCkp
Ci0KLSAgICAgICAgcmV0dXJuICh0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBpbmRpdmlk
dWFsX3Rlc3RfdGltaW5ncykKKyAgICAgICAgIiIiUmV0dXJucyB0cnVlIGlmZiBhbGwgdGhlIHdv
cmtlcnMgaGF2ZSBlaXRoZXIgY29tcGxldGVkIG9yIHdlZGdlZC4iIiIKKyAgICAgICAgZG9uZSA9
IFRydWUKKyAgICAgICAgdCA9IHRpbWUudGltZSgpCisgICAgICAgIGJyb2tlciA9IHNlbGYuX21l
c3NhZ2VfYnJva2VyCisgICAgICAgIGZvciB3IGluIHNlbGYuX3dvcmtlcnMudmFsdWVzKCk6Cisg
ICAgICAgICAgICBpZiBub3Qgdy5kb25lIGFuZCBub3Qgdy53ZWRnZWQ6CisgICAgICAgICAgICAg
ICAgbmV4dF90aW1lb3V0ID0gdy5uZXh0X3RpbWVvdXQKKyAgICAgICAgICAgICAgICBXRURHRV9Q
QURESU5HID0gNDAuMAorICAgICAgICAgICAgICAgIGlmIG5leHRfdGltZW91dCBhbmQgdCA+IG5l
eHRfdGltZW91dCArIFdFREdFX1BBRERJTkc6CisgICAgICAgICAgICAgICAgICAgIF9sb2cuZXJy
b3IoJycpCisgICAgICAgICAgICAgICAgICAgIGJyb2tlci5sb2dfd2VkZ2VkX3dvcmtlcih3Lm5h
bWUsIHcuY3VycmVudF90ZXN0X25hbWUpCisgICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3Io
JycpCisgICAgICAgICAgICAgICAgICAgIHcud2VkZ2VkID0gVHJ1ZQorICAgICAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBGYWxzZQorCisgICAgICAgIGlmIGRv
bmU6CisgICAgICAgICAgICBpZiBhbnkoW3cud2VkZ2VkIGZvciB3YyBpbiBzZWxmLl93b3JrZXJz
XSk6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykKKyAgICAgICAgICAgICAgICBfbG9n
LmVycm9yKCdSZW1haW5pbmcgd29ya2VycyBhcmUgd2VkZ2VkLCBiYWlsaW5nIG91dC4nKQorICAg
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIF9sb2cuZGVidWcoJ05vIHdlZGdlZCB0aHJlYWRzJykKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIGJyb2tlci5hZGRfdGltZXIoc2VsZi5uYW1lKCksIHNlbGYuX2NoZWNrX29uX3dv
cmtlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuVVBEQVRFX0lOVEVSVkFM
KQorICAgICAgICByZXR1cm4gZG9uZQogCiAgICAgZGVmIG5lZWRzX2h0dHAoc2VsZik6CiAgICAg
ICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgdGVzdCBydW5uZXIgbmVlZHMgYW4gSFRUUCBzZXJ2
ZXIuIiIiCkBAIC04MjQsMjMgKzg0MCw1MSBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICBf
bG9nLmRlYnVnKCJzdG9wcGluZyBoZWxwZXIiKQogICAgICAgICBzZWxmLl9wb3J0LnN0b3BfaGVs
cGVyKCkKIAotICAgIGRlZiB1cGRhdGVfc3VtbWFyeShzZWxmLCByZXN1bHRfc3VtbWFyeSk6Cisg
ICAgZGVmIGhhbmRsZV9zdGFydGVkX3Rlc3Qoc2VsZiwgc3JjLCB0ZXN0X2luZm8sIGhhbmdfdGlt
ZW91dCk6CisgICAgICAgIHcgPSBzZWxmLl93b3JrZXJzW3NyY10KKyAgICAgICAgdy5jdXJyZW50
X3Rlc3RfbmFtZSA9IHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZSgKKyAgICAgICAg
ICAgIHRlc3RfaW5mby5maWxlbmFtZSkKKyAgICAgICAgdy5uZXh0X3RpbWVvdXQgPSB0aW1lLnRp
bWUoKSArIGhhbmdfdGltZW91dAorCisgICAgZGVmIGhhbmRsZV9kb25lKHNlbGYsIHNyYyk6Cisg
ICAgICAgIHcgPSBzZWxmLl93b3JrZXJzW3NyY10KKyAgICAgICAgdy5kb25lID0gVHJ1ZQorICAg
ICAgICBwYXNzCisKKyAgICBkZWYgaGFuZGxlX2ZpbmlzaGVkX3Rlc3Qoc2VsZiwgc3JjLCByZXN1
bHQsIGVsYXBzZWRfdGltZSk6CiAgICAgICAgICIiIlVwZGF0ZSB0aGUgc3VtbWFyeSBhbmQgcHJp
bnQgcmVzdWx0cyB3aXRoIGFueSBjb21wbGV0ZWQgdGVzdHMuIiIiCi0gICAgICAgIHdoaWxlIFRy
dWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGVzdF9yZXN1
bHRzLlRlc3RSZXN1bHQubG9hZHMoc2VsZi5fcmVzdWx0X3F1ZXVlLmdldF9ub3dhaXQoKSkKLSAg
ICAgICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKLSAgICAgICAgICAgICAgICByZXR1cm4KLQot
ICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLl9leHBlY3RhdGlvbnMubWF0Y2hlc19hbl9leHBl
Y3RlZF9yZXN1bHQoCi0gICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lLCByZXN1bHQudHlw
ZSwgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cykKLSAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5
LmFkZChyZXN1bHQsIGV4cGVjdGVkKQotICAgICAgICAgICAgZXhwX3N0ciA9IHNlbGYuX2V4cGVj
dGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX3N0cmluZygKLSAgICAgICAgICAgICAgICByZXN1bHQu
ZmlsZW5hbWUpCi0gICAgICAgICAgICBnb3Rfc3RyID0gc2VsZi5fZXhwZWN0YXRpb25zLmV4cGVj
dGF0aW9uX3RvX3N0cmluZyhyZXN1bHQudHlwZSkKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIu
cHJpbnRfdGVzdF9yZXN1bHQocmVzdWx0LCBleHBlY3RlZCwgZXhwX3N0ciwgZ290X3N0cikKLSAg
ICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfcHJvZ3Jlc3MocmVzdWx0X3N1bW1hcnksIHNl
bGYuX3JldHJ5aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCisgICAgICAgIHcgPSBzZWxmLl93b3JrZXJzW3NyY10KKyAg
ICAgICAgdy5uZXh0X3RpbWVvdXQgPSBOb25lCisgICAgICAgIHcuY3VycmVudF90ZXN0ID0gTm9u
ZQorCisgICAgICAgIGlmIHcud2VkZ2VkOgorICAgICAgICAgICAgIyBIbW0uIFRoaXMgc2hvdWxk
bid0IGhhcHBlbiBpZiB3ZSBoYXZlIG91ciB0aW1lb3V0cworICAgICAgICAgICAgIyB0dW5lZCBw
cm9wZXJseS4KKyAgICAgICAgICAgIF9sb2cuZXJyb3IoIiVzIHVud2VkZ2VkIiwgdy5uYW1lKQor
CisgICAgICAgIHNlbGYuX3VwZGF0ZV93b3JrZXJfc3RhdHMoc3JjLCByZXN1bHQsIGVsYXBzZWRf
dGltZSkKKworICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2V4cGVjdGF0aW9ucy5tYXRjaGVzX2Fu
X2V4cGVjdGVkX3Jlc3VsdCgKKyAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZSwgcmVzdWx0LnR5
cGUsIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMpCisgICAgICAgIGV4cF9zdHIgPSBzZWxmLl9l
eHBlY3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9uc19zdHJpbmcoCisgICAgICAgICAgICByZXN1bHQu
ZmlsZW5hbWUpCisgICAgICAgIGdvdF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMuZXhwZWN0YXRp
b25fdG9fc3RyaW5nKHJlc3VsdC50eXBlKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3Rl
c3RfcmVzdWx0KHJlc3VsdCwgZXhwZWN0ZWQsIGV4cF9zdHIsIGdvdF9zdHIpCisKKyAgICAgICAg
c2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFyeS5hZGQocmVzdWx0LCBleHBlY3RlZCkKKyAgICAg
ICAgc2VsZi5fcHJpbnRlci5wcmludF9wcm9ncmVzcyhzZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1t
YXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JldHJ5aW5n
LCBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCisKKyAgICBkZWYgaGFuZGxlX2ZpbmlzaGVkX2xpc3Qo
c2VsZiwgc3JjLCBsaXN0X25hbWUsIG51bV90ZXN0cywgZWxhcHNlZF90aW1lKToKKyAgICAgICAg
c2VsZi5fZ3JvdXBfc3RhdHNbbGlzdF9uYW1lXSA9IChudW1fdGVzdHMsIGVsYXBzZWRfdGltZSkK
KworICAgIGRlZiBoYW5kbGVfZXhjZXB0aW9uKHNlbGYsIHNyYywgZXhjZXB0aW9uX2luZm8pOgor
ICAgICAgICByYWlzZSBleGNlcHRpb25faW5mb1swXSwgZXhjZXB0aW9uX2luZm9bMV0sIGV4Y2Vw
dGlvbl9pbmZvWzJdCisKKyAgICBkZWYgX3VwZGF0ZV93b3JrZXJfc3RhdHMoc2VsZiwgc3JjLCBy
ZXN1bHQsIGVsYXBzZWRfdGltZSk6CisgICAgICAgIHNlbGYuX3dvcmtlcnNbc3JjXS5zdGF0c1sn
dG90YWxfdGltZSddICs9IGVsYXBzZWRfdGltZQorICAgICAgICBzZWxmLl93b3JrZXJzW3NyY10u
c3RhdHNbJ251bV90ZXN0cyddICs9IDEKKyAgICAgICAgc2VsZi5fYWxsX3Jlc3VsdHMuYXBwZW5k
KHJlc3VsdCkKIAogICAgIGRlZiBfY2xvYmJlcl9vbGRfcmVzdWx0cyhzZWxmKToKICAgICAgICAg
IyBKdXN0IGNsb2JiZXIgdGhlIGFjdHVhbCB0ZXN0IHJlc3VsdHMgZGlyZWN0b3JpZXMgc2luY2Ug
dGhlIG90aGVyCkBAIC0xMDIwLDggKzEwNjQsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgIGRl
ZiBfcHJpbnRfYWdncmVnYXRlX3Rlc3Rfc3RhdGlzdGljcyhzZWxmLCBpbmRpdmlkdWFsX3Rlc3Rf
dGltaW5ncyk6CiAgICAgICAgICIiIlByaW50cyBhZ2dyZWdhdGUgc3RhdGlzdGljcyAoZS5nLiBt
ZWRpYW4sIG1lYW4sIGV0Yy4pIGZvciBhbGwgdGVzdHMuCiAgICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2YgZHVtcF9yZW5kZXJfdHJlZV90aHJl
YWQuVGVzdFN0YXRzCi0gICAgICAgICAgICAgIGZvciBhbGwgdGVzdHMuCisgICAgICAgICAgaW5k
aXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2YgVGVzdFJlc3VsdHMgZm9yIGFsbCB0ZXN0cy4K
ICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfdHlwZXMgPSBbXSAgIyBVbml0IHRlc3RzIGRvbid0
IGFjdHVhbGx5IHByb2R1Y2UgYW55IHRpbWluZ3MuCiAgICAgICAgIGlmIGluZGl2aWR1YWxfdGVz
dF90aW1pbmdzOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5k
ZXggYzMxNzc1Y2MwNmQzZmIxMDc4MDZmYjhmNDFlZGE2M2QyMzUzOTU3NC4uYjExZmRkMmQ1NmYw
MGVkMDUyMzAwYTU2YTdmOTU4YmQwYjM1NzhiMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0xODgsNyArMTg4LDcgQEAgY2xhc3MgTWFpblRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBiYXRjaF90ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVu
KFsnLS1iYXRjaC1zaXplJywgJzInXSkKICAgICAgICAgZm9yIGJhdGNoIGluIGJhdGNoX3Rlc3Rz
X3J1bjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oYmF0Y2gpIDw9IDIsICclcyBo
YWQgdG9vIG1hbnkgdGVzdHMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpv
aW4oYmF0Y2gpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsJy5qb2luKGJhdGNoKSkK
IAogICAgIGRlZiB0ZXN0X2NoaWxkX3Byb2Nlc3NfMShzZWxmKToKICAgICAgICAgKHJlcywgYnVp
bGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCwgdXNlcikgPSBsb2dnaW5nX3J1bigKQEAgLTI4
Niw4ICsyODYsMTYgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAg
ZGVmIHRlc3RfcnVuX2ZvcmNlKHNlbGYpOgogICAgICAgICAjIFRoaXMgcmFpc2VzIGFuIGV4Y2Vw
dGlvbiBiZWNhdXNlIHdlIHJ1bgotICAgICAgICAjIGZhaWx1cmVzL2V4cGVjdGVkL2V4Y2VwdGlv
bi5odG1sLCB3aGljaCBpcyBub3JtYWxseSBTS0lQcGVkLgotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nX3J1biwgWyctLWZvcmNlJ10pCisgICAgICAgICMgZmFp
bHVyZXMvZXhwZWN0ZWQvZXhjZXB0aW9uLmh0bWwgYW5kCisgICAgICAgICMgZmFpbHVyZXMvZXhw
ZWN0ZWQva2V5Ym9hcmQsIHdoaWNoIGFyZSBub3JtYWxseSBTS0lQcGVkLgorICAgICAgICB0cnk6
CisgICAgICAgICAgICBsb2dnaW5nX3J1bihbJy0tZm9yY2UnXSkKKyAgICAgICAgICAgIHRlc3Rf
cGFzc2VkID0gRmFsc2UKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICB0
ZXN0X3Bhc3NlZCA9IFRydWUKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAg
ICAgICAgICAgdGVzdF9wYXNzZWQgPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0
X3Bhc3NlZCkKIAogICAgIGRlZiB0ZXN0X3J1bl9wYXJ0KHNlbGYpOgogICAgICAgICAjIFRlc3Qg
dGhhdCB3ZSBhY3R1YWxseSBzZWxlY3QgdGhlIHJpZ2h0IHBhcnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75457</attachid>
            <date>2010-12-02 20:10:42 -0800</date>
            <delta_ts>2010-12-06 04:27:31 -0800</delta_ts>
            <desc>update to tip of tree</desc>
            <filename>bug-50375-20101202201041.patch</filename>
            <type>text/plain</type>
            <size>43576</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAyZGU1OWU3YWQwMTkwZWQ3YjM0YzhkZjVkNjRlMzBlYmY3MWYxNjQ5Li41YjNiNWNi
NzhiNzMxNzc4YWRmNjcwNzViMGRmMmZlODMwZjIxNWY0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMTItMDIgIERpcmsgUHJhbmtlICA8ZHByYW5la0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGFjdHVhbGx5IGltcGxlbWVudCBtZXNzYWdpbmcgYmV0d2VlbgorICAgICAgICB0aHJl
YWRzLgorICAgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGRlcGVuZHMgb24gYnVnIDUwMzc0
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDM3
NQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9i
cm9rZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5OgorCiAyMDEwLTEyLTAyICBEaXJr
IFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRv
bnkgQ2hhbmcuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBf
cmVuZGVyX3RyZWVfdGhyZWFkLnB5CmluZGV4IDhjNWJjMTFiY2UzZmU0NDljYTFkZDdhMWNkOTA1
OTk3MDk1ZmQ1NGUuLjUwYmM1ZjhmNDE3Y2EzMjdiOTYyNWM0MGY1MjBmMDU4MDIzZDA1NzkgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3Ry
ZWVfdGhyZWFkLnB5CkBAIC00MiwxMCArNDIsOCBAQCBpbXBvcnQgY29kZWNzCiBpbXBvcnQgY29w
eQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwotaW1wb3J0IFF1ZXVlCiBpbXBvcnQgc2lnbmFs
CiBpbXBvcnQgc3lzCi1pbXBvcnQgdGhyZWFkCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGlt
ZQogCkBAIC01NCw2ICs1Miw3IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnRlc3RfdHlw
ZXMgaW1wb3J0IGltYWdlX2RpZmYKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnRlc3RfdHlw
ZXMgaW1wb3J0IHRlc3RfdHlwZV9iYXNlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0
X3R5cGVzIGltcG9ydCB0ZXh0X2RpZmYKIAoraW1wb3J0IG1lc3NhZ2VfYnJva2VyCiBpbXBvcnQg
dGVzdF9mYWlsdXJlcwogaW1wb3J0IHRlc3Rfb3V0cHV0CiBpbXBvcnQgdGVzdF9yZXN1bHRzCkBA
IC02Miw3OCArNjEsMjIgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlv
dXRfdGVzdHMubGF5b3V0X3BhY2thZ2UuIgogICAgICAgICAgICAgICAgICAgICAgICAgICJkdW1w
X3JlbmRlcl90cmVlX3RocmVhZCIpCiAKIAotY2xhc3MgV2F0Y2hhYmxlVGhyZWFkKHRocmVhZGlu
Zy5UaHJlYWQpOgotICAgICIiIlRoaXMgY2xhc3MgYWJzdHJhY3RzIGFuIGludGVyZmFjZSB1c2Vk
IGJ5Ci0gICAgcnVuX3dlYmtpdF90ZXN0cy5UZXN0UnVubmVyLl93YWl0X2Zvcl90aHJlYWRzX3Rv
X2ZpbmlzaCBmb3IgdGhyZWFkCi0gICAgbWFuYWdlbWVudC4iIiIKLSAgICBkZWYgX19pbml0X18o
c2VsZik6Ci0gICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAg
c2VsZi5fY2FuY2VsZWQgPSBGYWxzZQotICAgICAgICBzZWxmLl9leGNlcHRpb25faW5mbyA9IE5v
bmUKLSAgICAgICAgc2VsZi5fbmV4dF90aW1lb3V0ID0gTm9uZQotICAgICAgICBzZWxmLl90aHJl
YWRfaWQgPSBOb25lCi0KLSAgICBkZWYgY2FuY2VsKHNlbGYpOgotICAgICAgICAiIiJTZXQgYSBm
bGFnIHRlbGxpbmcgdGhpcyB0aHJlYWQgdG8gcXVpdC4iIiIKLSAgICAgICAgc2VsZi5fY2FuY2Vs
ZWQgPSBUcnVlCi0KLSAgICBkZWYgY2xlYXJfbmV4dF90aW1lb3V0KHNlbGYpOgotICAgICAgICAi
IiJNYXJrIGEgZmxhZyB0ZWxsaW5nIHRoaXMgdGhyZWFkIHRvIHN0b3Agc2V0dGluZyB0aW1lb3V0
cy4iIiIKLSAgICAgICAgc2VsZi5fdGltZW91dCA9IDAKLQotICAgIGRlZiBleGNlcHRpb25faW5m
byhzZWxmKToKLSAgICAgICAgIiIiSWYgcnVuKCkgdGVybWluYXRlZCBvbiBhbiB1bmNhdWdodCBl
eGNlcHRpb24sIHJldHVybiBpdCBoZXJlCi0gICAgICAgICgodHlwZSwgdmFsdWUsIHRyYWNlYmFj
aykgdHVwbGUpLgotICAgICAgICBSZXR1cm5zIE5vbmUgaWYgcnVuKCkgdGVybWluYXRlZCBub3Jt
YWxseS4gTWVhbnQgdG8gYmUgY2FsbGVkIGFmdGVyCi0gICAgICAgIGpvaW5pbmcgdGhpcyB0aHJl
YWQuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9leGNlcHRpb25faW5mbwotCi0gICAgZGVmIGlk
KHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gYSB0aHJlYWQgaWRlbnRpZmllci4iIiIKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX3RocmVhZF9pZAotCi0gICAgZGVmIG5leHRfdGltZW91dChzZWxmKToK
LSAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lIHRoZSB0ZXN0IGlzIHN1cHBvc2VkIHRvIGZpbmlz
aCBieS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX25leHRfdGltZW91dAotCi0KLWNsYXNzIFRl
c3RTaGVsbFRocmVhZChXYXRjaGFibGVUaHJlYWQpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw
b3J0LCBvcHRpb25zLCB3b3JrZXJfbnVtYmVyLAotICAgICAgICAgICAgICAgICBmaWxlbmFtZV9s
aXN0X3F1ZXVlLCByZXN1bHRfcXVldWUpOgotICAgICAgICAiIiJJbml0aWFsaXplIGFsbCB0aGUg
bG9jYWwgc3RhdGUgZm9yIHRoaXMgRHVtcFJlbmRlclRyZWUgdGhyZWFkLgotCi0gICAgICAgIEFy
Z3M6Ci0gICAgICAgICAgcG9ydDogaW50ZXJmYWNlIHRvIHBvcnQtc3BlY2lmaWMgaG9va3MKLSAg
ICAgICAgICBvcHRpb25zOiBjb21tYW5kIGxpbmUgb3B0aW9ucyBhcmd1bWVudCBmcm9tIG9wdHBh
cnNlCi0gICAgICAgICAgd29ya2VyX251bWJlcjogaWRlbnRpZmllciBmb3IgYSBwYXJ0aWN1bGFy
IHdvcmtlciB0aHJlYWQuCi0gICAgICAgICAgZmlsZW5hbWVfbGlzdF9xdWV1ZTogQSB0aHJlYWQg
c2FmZSBRdWV1ZSBjbGFzcyB0aGF0IGNvbnRhaW5zIGxpc3RzCi0gICAgICAgICAgICAgIG9mIHR1
cGxlcyBvZiAoZmlsZW5hbWUsIHVyaSkgcGFpcnMuCi0gICAgICAgICAgcmVzdWx0X3F1ZXVlOiBB
IHRocmVhZCBzYWZlIFF1ZXVlIGNsYXNzIHRoYXQgd2lsbCBjb250YWluCi0gICAgICAgICAgICAg
IHNlcmlhbGl6ZWQgVGVzdFJlc3VsdCBvYmplY3RzLgotICAgICAgICAiIiIKLSAgICAgICAgV2F0
Y2hhYmxlVGhyZWFkLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0Ci0g
ICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCitjbGFzcyBXb3JrZXIob2JqZWN0KToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfbnVtYmVyKToKKyAgICAgICAgc3Vw
ZXIoV29ya2VyLCBzZWxmKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYuX2Jyb2tlciA9IGJyb2tl
cgogICAgICAgICBzZWxmLl93b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgogICAgICAgICBz
ZWxmLl9uYW1lID0gJ3dvcmtlci8lZCcgJSB3b3JrZXJfbnVtYmVyCi0gICAgICAgIHNlbGYuX2Zp
bGVuYW1lX2xpc3RfcXVldWUgPSBmaWxlbmFtZV9saXN0X3F1ZXVlCi0gICAgICAgIHNlbGYuX3Jl
c3VsdF9xdWV1ZSA9IHJlc3VsdF9xdWV1ZQogCisgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gRmFs
c2UKKyAgICAgICAgc2VsZi5fZG9uZSA9IEZhbHNlCisKKyAgICAgICAgc2VsZi5fcG9ydCA9IGJy
b2tlci5fcG9ydAorICAgICAgICBzZWxmLl9vcHRpb25zID0gYnJva2VyLl9vcHRpb25zCiAgICAg
ICAgIHNlbGYuX2JhdGNoX2NvdW50ID0gMAogICAgICAgICBzZWxmLl9iYXRjaF9zaXplID0gc2Vs
Zi5fb3B0aW9ucy5iYXRjaF9zaXplCiAgICAgICAgIHNlbGYuX2RyaXZlciA9IE5vbmUKICAgICAg
ICAgc2VsZi5faGF2ZV9odHRwX2xvY2sgPSBGYWxzZQotCi0gICAgICAgIHNlbGYuX3Rlc3RfcnVu
bmVyID0gTm9uZQotICAgICAgICBzZWxmLl9yZXN1bHRfc3VtbWFyeSA9IE5vbmUKLSAgICAgICAg
c2VsZi5fdGVzdF9saXN0X3RpbWluZ19zdGF0cyA9IHt9Ci0gICAgICAgIHNlbGYuX3Rlc3RfcmVz
dWx0cyA9IFtdCi0gICAgICAgIHNlbGYuX251bV90ZXN0cyA9IDAKLSAgICAgICAgc2VsZi5fc3Rh
cnRfdGltZSA9IDAKLSAgICAgICAgc2VsZi5fc3RvcF90aW1lID0gMAotICAgICAgICBzZWxmLl9o
dHRwX2xvY2tfd2FpdF9iZWdpbiA9IDAKLSAgICAgICAgc2VsZi5faHR0cF9sb2NrX3dhaXRfZW5k
ID0gMAotCiAgICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMgPSBbXQogICAgICAgICBmb3IgY2xzIGlu
IHNlbGYuX2dldF90ZXN0X3R5cGVfY2xhc3NlcygpOgogICAgICAgICAgICAgc2VsZi5fdGVzdF90
eXBlcy5hcHBlbmQoY2xzKHNlbGYuX3BvcnQsCkBAIC0xNTQsNyArOTcsNiBAQCBjbGFzcyBUZXN0
U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgdGVzdF9hcmdzID0gdGVzdF90
eXBlX2Jhc2UuVGVzdEFyZ3VtZW50cygpCiAgICAgICAgIHRlc3RfYXJncy5uZXdfYmFzZWxpbmUg
PSBzZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZQogICAgICAgICB0ZXN0X2FyZ3MucmVzZXRfcmVz
dWx0cyA9IHNlbGYuX29wdGlvbnMucmVzZXRfcmVzdWx0cwotCiAgICAgICAgIHJldHVybiB0ZXN0
X2FyZ3MKIAogICAgIGRlZiBfZ2V0X3Rlc3RfdHlwZV9jbGFzc2VzKHNlbGYpOgpAQCAtMTYzLDg4
ICsxMDUsMzggQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAg
ICAgICAgICBjbGFzc2VzLmFwcGVuZChpbWFnZV9kaWZmLkltYWdlRGlmZikKICAgICAgICAgcmV0
dXJuIGNsYXNzZXMKIAotICAgIGRlZiBnZXRfdGVzdF9ncm91cF90aW1pbmdfc3RhdHMoc2VsZik6
Ci0gICAgICAgICIiIlJldHVybnMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgdGVzdCBncm91cCB0byBh
IHR1cGxlIG9mCi0gICAgICAgIChudW1iZXIgb2YgdGVzdHMgaW4gdGhhdCBncm91cCwgdGltZSB0
byBydW4gdGhlIHRlc3RzKSIiIgotICAgICAgICByZXR1cm4gc2VsZi5fdGVzdF9saXN0X3RpbWlu
Z19zdGF0cwotCi0gICAgZGVmIGdldF90ZXN0X3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgICIiIlJl
dHVybiB0aGUgbGlzdCBvZiBhbGwgdGVzdHMgcnVuIG9uIHRoaXMgdGhyZWFkLgotCi0gICAgICAg
IFRoaXMgaXMgdXNlZCB0byBjYWxjdWxhdGUgcGVyLXRocmVhZCBzdGF0aXN0aWNzLgotCi0gICAg
ICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fdGVzdF9yZXN1bHRzCi0KLSAgICBkZWYgZ2V0
X3RvdGFsX3RpbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiBtYXgoc2VsZi5fc3RvcF90aW1lIC0g
c2VsZi5fc3RhcnRfdGltZSAtCi0gICAgICAgICAgICAgICAgICAgc2VsZi5faHR0cF9sb2NrX3dh
aXRfdGltZSgpLCAwLjApCisgICAgZGVmIGNhbmNlbChzZWxmKToKKyAgICAgICAgIiIiQXR0ZW1w
dCB0byBhYm9ydCBwcm9jZXNzaW5nIChiZXN0IGVmZm9ydCkuIiIiCisgICAgICAgIHNlbGYuX2Nh
bmNlbGVkID0gVHJ1ZQogCi0gICAgZGVmIGdldF9udW1fdGVzdHMoc2VsZik6Ci0gICAgICAgIHJl
dHVybiBzZWxmLl9udW1fdGVzdHMKKyAgICBkZWYgaXNfZG9uZShzZWxmKToKKyAgICAgICAgIyBU
aGlzIGlzIHVzZWQgZm9yIGFzc2VydGlvbiBjaGVja2luZyBpbiB0aGUgbWFuYWdlci4KKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2RvbmUgb3Igc2VsZi5fY2FuY2VsZWQKIAogICAgIGRlZiBuYW1lKHNl
bGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQogCi0gICAgZGVmIG5leHRfdGltZW91dChz
ZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lIHRoZSB0ZXN0IGlzIHN1cHBvc2VkIHRv
IGZpbmlzaCBieS4iIiIKLSAgICAgICAgaWYgc2VsZi5fbmV4dF90aW1lb3V0OgotICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuX25leHRfdGltZW91dCArIHNlbGYuX2h0dHBfbG9ja193YWl0X3RpbWUo
KQotICAgICAgICByZXR1cm4gc2VsZi5fbmV4dF90aW1lb3V0Ci0KICAgICBkZWYgcnVuKHNlbGYp
OgotICAgICAgICAiIiJEZWxlZ2F0ZSBtYWluIHdvcmsgdG8gYSBoZWxwZXIgbWV0aG9kIGFuZCB3
YXRjaCBmb3IgdW5jYXVnaHQKLSAgICAgICAgZXhjZXB0aW9ucy4iIiIKLSAgICAgICAgc2VsZi5f
Y292ZXJlZF9ydW4oKQotCi0gICAgZGVmIF9jb3ZlcmVkX3J1bihzZWxmKToKLSAgICAgICAgIyBG
SVhNRTogdGhpcyBpcyBhIHNlcGFyYXRlIHJvdXRpbmUgdG8gd29yayBhcm91bmQgYSBidWcKLSAg
ICAgICAgIyBpbiBjb3ZlcmFnZTogc2VlIGh0dHA6Ly9iaXRidWNrZXQub3JnL25lZC9jb3ZlcmFn
ZXB5L2lzc3VlLzg1LgotICAgICAgICBzZWxmLl90aHJlYWRfaWQgPSB0aHJlYWQuZ2V0X2lkZW50
KCkKLSAgICAgICAgc2VsZi5fc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIGV4Y2Vw
dGlvbl9tc2cgPSAiIgorICAgICAgICBfbG9nLmRlYnVnKCclcyBzdGFydGluZycgJSBzZWxmLl9u
YW1lKQorCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIF9sb2cuZGVidWcoJyVzIHN0YXJ0aW5n
JyAlIChzZWxmLl9uYW1lKSkKLSAgICAgICAgICAgIHNlbGYuX3J1bih0ZXN0X3J1bm5lcj1Ob25l
LCByZXN1bHRfc3VtbWFyeT1Ob25lKQotICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMgZG9uZSAo
JWQgdGVzdHMpJyAlIChzZWxmLl9uYW1lLCBzZWxmLl9udW1fdGVzdHMpKQorICAgICAgICAgICAg
c2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdlX2xvb3Aoc2VsZiwgbWVzc2FnZV9icm9rZXIuQU5ZX1dP
UktFUikKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2RvbmUoKToKKyAgICAgICAgICAgICAg
ICByYWlzZSBBc3NlcnRpb25FcnJvcigiJXM6IHJhbiBvdXQgb2YgbWVzc2FnZXMgaW4gd29ya2Vy
IHF1ZXVlLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHNlbGYuX25h
bWUpCiAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIHNlbGYu
X2V4Y2VwdGlvbl9pbmZvID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgICAgIF9sb2cuZGVidWco
IiVzIGludGVycnVwdGVkIiAlIHNlbGYuX25hbWUpCisgICAgICAgICAgICBleGNlcHRpb25fbXNn
ID0gIiwgaW50ZXJydXB0ZWQiCiAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICMgU2F2ZSB0
aGUgZXhjZXB0aW9uIGZvciBvdXIgY2FsbGVyIHRvIHNlZS4KLSAgICAgICAgICAgIHNlbGYuX2V4
Y2VwdGlvbl9pbmZvID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgICAgIHNlbGYuX3N0b3BfdGlt
ZSA9IHRpbWUudGltZSgpCi0gICAgICAgICAgICBfbG9nLmVycm9yKCclcyBkeWluZywgZXhjZXB0
aW9uIHJhaXNlZCcgJSBzZWxmLl9uYW1lKQotCi0gICAgICAgIHNlbGYuX3N0b3BfdGltZSA9IHRp
bWUudGltZSgpCi0KLSAgICBkZWYgcnVuX2luX21haW5fdGhyZWFkKHNlbGYsIHRlc3RfcnVubmVy
LCByZXN1bHRfc3VtbWFyeSk6Ci0gICAgICAgICIiIlRoaXMgaG9vayBhbGxvd3MgdXMgdG8gcnVu
IHRoZSB0ZXN0cyBmcm9tIHRoZSBtYWluIHRocmVhZCBpZgotICAgICAgICAtLW51bS10ZXN0LXNo
ZWxscz09MSwgaW5zdGVhZCBvZiBoYXZpbmcgdG8gYWx3YXlzIHJ1biB0d28gb3IgbW9yZQotICAg
ICAgICB0aHJlYWRzLiBUaGlzIGFsbG93cyB1cyB0byBkZWJ1ZyB0aGUgdGVzdCBoYXJuZXNzIHdp
dGhvdXQgaGF2aW5nIHRvCi0gICAgICAgIGRvIG11bHRpLXRocmVhZGVkIGRlYnVnZ2luZy4iIiIK
LSAgICAgICAgc2VsZi5fcnVuKHRlc3RfcnVubmVyLCByZXN1bHRfc3VtbWFyeSkKLQotICAgIGRl
ZiBfcnVuKHNlbGYsIHRlc3RfcnVubmVyLCByZXN1bHRfc3VtbWFyeSk6Ci0gICAgICAgICIiIk1h
aW4gd29yayBlbnRyeSBwb2ludCBvZiB0aGUgdGhyZWFkLiBCYXNpY2FsbHkgd2UgcHVsbCB1cmxz
IGZyb20gdGhlCi0gICAgICAgIGZpbGVuYW1lIHF1ZXVlIGFuZCBydW4gdGhlIHRlc3RzIHVudGls
IHdlIHJ1biBvdXQgb2YgdXJscy4KLQotICAgICAgICBJZiB0ZXN0X3J1bm5lciBpcyBub3QgTm9u
ZSwgdGhlbiB3ZSBjYWxsIHRlc3RfcnVubmVyLlVwZGF0ZVN1bW1hcnkoKQotICAgICAgICB3aXRo
IHRoZSByZXN1bHRzIG9mIGVhY2ggdGVzdCBkdXJpbmcgX3RlYXJfZG93bl90ZXN0KCksIGJlbG93
LiIiIgotICAgICAgICBzZWxmLl90ZXN0X3J1bm5lciA9IHRlc3RfcnVubmVyCi0gICAgICAgIHNl
bGYuX3Jlc3VsdF9zdW1tYXJ5ID0gcmVzdWx0X3N1bW1hcnkKLQotICAgICAgICB3aGlsZSBub3Qg
c2VsZi5fY2FuY2VsZWQ6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY3VycmVu
dF9ncm91cCwgZmlsZW5hbWVfbGlzdCA9IFwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmls
ZW5hbWVfbGlzdF9xdWV1ZS5nZXRfbm93YWl0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmhhbmRs
ZV90ZXN0X2xpc3QoY3VycmVudF9ncm91cCwgZmlsZW5hbWVfbGlzdCkKLSAgICAgICAgICAgIGV4
Y2VwdCBRdWV1ZS5FbXB0eToKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIGlmIHNl
bGYuX2NhbmNlbGVkOgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygnVGVzdGluZyBjYW5jZWxlZCcp
Ci0KLSAgICAgICAgc2VsZi5fY2xlYW51cCgpCisgICAgICAgICAgICBleGNlcHRpb25fbXNnID0g
IiwgZXhjZXB0aW9uIHJhaXNlZCIKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIF9sb2cu
ZGVidWcoIiVzIGRvbmUlcyIgJSAoc2VsZi5fbmFtZSwgZXhjZXB0aW9uX21zZykpCisgICAgICAg
ICAgICBpZiBleGNlcHRpb25fbXNnOgorICAgICAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4
Y19pbmZvKCkKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBFeHRyYWN0IHRoZSBzdGFjayB0cmFj
ZSBpbnRvIGEgc3RyaW5nPworICAgICAgICAgICAgICAgIHNlbGYuX3Bvc3QoJ2V4Y2VwdGlvbics
IChleGNfaW5mb1swXSwgZXhjX2luZm9bMV0sIE5vbmUpKQorICAgICAgICAgICAgc2VsZi5fcG9z
dCgnZG9uZScpCisgICAgICAgICAgICBzZWxmLl9jbGVhbnVwKCkKIAogICAgIGRlZiBfY2xlYW51
cChzZWxmKToKICAgICAgICAgc2VsZi5fa2lsbF9kdW1wX3JlbmRlcl90cmVlKCkKQEAgLTI1NCw3
ICsxNDYsNyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAg
ICAgICAgIHNlbGYuX3Rlc3RzX3J1bl9maWxlLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYuX3Rl
c3RzX3J1bl9maWxlID0gTm9uZQogCi0gICAgZGVmIGhhbmRsZV90ZXN0X2xpc3Qoc2VsZiwgbGlz
dF9uYW1lLCB0ZXN0X2xpc3QpOgorICAgIGRlZiBoYW5kbGVfdGVzdF9saXN0KHNlbGYsIHNyYywg
bGlzdF9uYW1lLCB0ZXN0X2xpc3QpOgogICAgICAgICBpZiBsaXN0X25hbWUgPT0gInRlc3RzX3Rv
X2h0dHBfbG9jayI6CiAgICAgICAgICAgICBzZWxmLl9zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jaygp
CiAKQEAgLTI2Miw2ICsxNTQsNyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhy
ZWFkKToKICAgICAgICAgbnVtX3Rlc3RzID0gMAogICAgICAgICBmb3IgdGVzdF9pbnB1dCBpbiB0
ZXN0X2xpc3Q6CiAgICAgICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2lucHV0KQorICAgICAg
ICAgICAgc2VsZi55aWVsZF90b19icm9rZXIoKQogICAgICAgICAgICAgaWYgc2VsZi5fY2FuY2Vs
ZWQ6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIG51bV90ZXN0cyArPSAxCkBA
IC0yNzEsOCArMTY0LDIwIEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZChXYXRjaGFibGVUaHJlYWQp
OgogICAgICAgICBpZiBzZWxmLl9oYXZlX2h0dHBfbG9jazoKICAgICAgICAgICAgIHNlbGYuX3N0
b3Bfc2VydmVyc193aXRoX2xvY2soKQogCi0gICAgICAgIHNlbGYuX3Rlc3RfbGlzdF90aW1pbmdf
c3RhdHNbbGlzdF9uYW1lXSA9IFwKLSAgICAgICAgICAgKG51bV90ZXN0cywgZWxhcHNlZF90aW1l
KQorICAgICAgICBzZWxmLl9wb3N0KCdmaW5pc2hlZF9saXN0JywgbGlzdF9uYW1lLCBudW1fdGVz
dHMsIGVsYXBzZWRfdGltZSkKKworICAgIGRlZiB5aWVsZF90b19icm9rZXIoc2VsZik6CisgICAg
ICAgICIiIlN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgdGhpcyBpZiB0aGV5IGFyZSBub3QgcnVu
bmluZyBpbiBhCisgICAgICAgIGRlZGljYXRlZCB0aHJlYWQgb3IgcHJvY2Vzcy4iIiIKKyAgICAg
ICAgcGFzcworCisgICAgZGVmIGhhbmRsZV9zdG9wKHNlbGYsIHNyYyk6CisgICAgICAgICIiIlN0
b3AgcmVjZWl2ZWQgLSBubyBtb3JlIHRlc3RzIHRvIHJ1bi4iIiIKKyAgICAgICAgc2VsZi5fZG9u
ZSA9IFRydWUKKworICAgIGRlZiBfcG9zdChzZWxmLCBtZXNzYWdlX25hbWUsICptZXNzYWdlX2Fy
Z3MpOgorICAgICAgICBzZWxmLl9icm9rZXIucHV0X21lc3NhZ2Uoc2VsZi5fbmFtZSwgbWVzc2Fn
ZV9icm9rZXIuTUFOQUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2VfbmFtZSwgbWVzc2FnZV9hcmdzKQogCiAgICAgZGVmIF9ydW5fdGVzdChzZWxmLCB0ZXN0X2lu
cHV0KToKICAgICAgICAgc2VsZi5fc2V0X3VwX3Rlc3QodGVzdF9pbnB1dCkKQEAgLTI5NCw3ICsx
OTksNyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAg
ICAgIHRlc3RfdGltZW91dF9zZWMgPSBkcml2ZXJfdGltZW91dF9zZWMKIAogICAgICAgICBzdGFy
dCA9IHRpbWUudGltZSgpCi0gICAgICAgIHNlbGYuX25leHRfdGltZW91dCA9IHN0YXJ0ICsgdGVz
dF90aW1lb3V0X3NlYworICAgICAgICBzZWxmLl9wb3N0KCdzdGFydGVkX3Rlc3QnLCB0ZXN0X2lu
cHV0LCB0ZXN0X3RpbWVvdXRfc2VjKQogCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucnVuX3Np
bmdseToKICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX3J1bl90ZXN0X2luX2Fub3RoZXJfdGhy
ZWFkKHRlc3RfaW5wdXQsCkBAIC0zMDIsNyArMjA3LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFk
KFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXN1bHQgPSBz
ZWxmLl9ydW5fdGVzdF9pbl90aGlzX3RocmVhZCh0ZXN0X2lucHV0KQogCi0gICAgICAgIHNlbGYu
X3RlYXJfZG93bl90ZXN0KHRlc3RfaW5wdXQsIHJlc3VsdCkKKyAgICAgICAgc2VsZi5fdGVhcl9k
b3duX3Rlc3QodGVzdF9pbnB1dCwgcmVzdWx0LCB0aW1lLnRpbWUoKSAtIHN0YXJ0KQogCiAgICAg
ZGVmIF9zZXRfdXBfdGVzdChzZWxmLCB0ZXN0X2lucHV0KToKICAgICAgICAgdGVzdF9pbnB1dC51
cmkgPSBzZWxmLl9wb3J0LmZpbGVuYW1lX3RvX3VyaSh0ZXN0X2lucHV0LmZpbGVuYW1lKQpAQCAt
MzcyLDEwICsyNzcsNyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToK
ICAgICAgICAgaWYgbm90IHNlbGYuX2RyaXZlciBvciBzZWxmLl9kcml2ZXIucG9sbCgpIGlzIG5v
dCBOb25lOgogICAgICAgICAgICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJp
dmVyKHNlbGYuX3dvcmtlcl9udW1iZXIpCiAgICAgICAgICAgICBzZWxmLl9kcml2ZXIuc3RhcnQo
KQotCi0gICAgICAgIHRlc3RfcmVzdWx0ID0gc2VsZi5fcnVuX3NpbmdsZV90ZXN0KHRlc3RfaW5w
dXQsIHNlbGYuX2RyaXZlcikKLSAgICAgICAgc2VsZi5fdGVzdF9yZXN1bHRzLmFwcGVuZCh0ZXN0
X3Jlc3VsdCkKLSAgICAgICAgcmV0dXJuIHRlc3RfcmVzdWx0CisgICAgICAgIHJldHVybiBzZWxm
Ll9ydW5fc2luZ2xlX3Rlc3QodGVzdF9pbnB1dCwgc2VsZi5fZHJpdmVyKQogCiAgICAgZGVmIF9y
dW5fc2luZ2xlX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCwgZHJpdmVyKToKICAgICAgICAgIyBUaGUg
aW1hZ2UgaGFzaCBpcyB1c2VkIHRvIGF2b2lkIGRvaW5nIGFuIGltYWdlIGR1bXAgaWYgdGhlCkBA
IC00NTIsOCArMzU0LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmV4cGVjdGVk
X2ltYWdlKGZpbGVuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3BvcnQuZXhwZWN0ZWRfY2hlY2tzdW0oZmlsZW5hbWUpKQogCi0gICAgZGVmIF90ZWFyX2Rv
d25fdGVzdChzZWxmLCB0ZXN0X2lucHV0LCByZXN1bHQpOgotICAgICAgICBzZWxmLl9udW1fdGVz
dHMgKz0gMQorICAgIGRlZiBfdGVhcl9kb3duX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCwgcmVzdWx0
LCBlbGFwc2VkX3RpbWUpOgogICAgICAgICBzZWxmLl9iYXRjaF9jb3VudCArPSAxCiAgICAgICAg
IHNlbGYuX3Rlc3RzX3J1bl9maWxlLndyaXRlKHRlc3RfaW5wdXQuZmlsZW5hbWUgKyAiXG4iKQog
ICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVz
dF9pbnB1dC5maWxlbmFtZSkKQEAgLTQ3MiwzNSArMzczLDIyIEBAIGNsYXNzIFRlc3RTaGVsbFRo
cmVhZChXYXRjaGFibGVUaHJlYWQpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgX2xvZy5k
ZWJ1ZygiJXMgJXMgcGFzc2VkIiAlIChzZWxmLl9uYW1lLCB0ZXN0X25hbWUpKQogCi0gICAgICAg
IHNlbGYuX3Jlc3VsdF9xdWV1ZS5wdXQocmVzdWx0LmR1bXBzKCkpCisgICAgICAgIHNlbGYuX3Bv
c3QoJ2ZpbmlzaGVkX3Rlc3QnLCByZXN1bHQsIGVsYXBzZWRfdGltZSkKIAogICAgICAgICBpZiBz
ZWxmLl9iYXRjaF9zaXplID4gMCBhbmQgc2VsZi5fYmF0Y2hfY291bnQgPj0gc2VsZi5fYmF0Y2hf
c2l6ZToKICAgICAgICAgICAgICMgQm91bmNlIHRoZSBzaGVsbCBhbmQgcmVzZXQgY291bnQuCiAg
ICAgICAgICAgICBzZWxmLl9raWxsX2R1bXBfcmVuZGVyX3RyZWUoKQogICAgICAgICAgICAgc2Vs
Zi5fYmF0Y2hfY291bnQgPSAwCiAKLSAgICAgICAgaWYgc2VsZi5fdGVzdF9ydW5uZXI6Ci0gICAg
ICAgICAgICBzZWxmLl90ZXN0X3J1bm5lci51cGRhdGVfc3VtbWFyeShzZWxmLl9yZXN1bHRfc3Vt
bWFyeSkKLQogICAgIGRlZiBfc3RhcnRfc2VydmVyc193aXRoX2xvY2soc2VsZik6Ci0gICAgICAg
IHNlbGYuX2h0dHBfbG9ja193YWl0X2JlZ2luID0gdGltZS50aW1lKCkKICAgICAgICAgX2xvZy5k
ZWJ1ZygnQWNxdWlyaW5nIGh0dHAgbG9jayAuLi4nKQogICAgICAgICBzZWxmLl9wb3J0LmFjcXVp
cmVfaHR0cF9sb2NrKCkKICAgICAgICAgX2xvZy5kZWJ1ZygnU3RhcnRpbmcgSFRUUCBzZXJ2ZXIg
Li4uJykKICAgICAgICAgc2VsZi5fcG9ydC5zdGFydF9odHRwX3NlcnZlcigpCiAgICAgICAgIF9s
b2cuZGVidWcoJ1N0YXJ0aW5nIFdlYlNvY2tldCBzZXJ2ZXIgLi4uJykKICAgICAgICAgc2VsZi5f
cG9ydC5zdGFydF93ZWJzb2NrZXRfc2VydmVyKCkKLSAgICAgICAgc2VsZi5faHR0cF9sb2NrX3dh
aXRfZW5kID0gdGltZS50aW1lKCkKICAgICAgICAgc2VsZi5faGF2ZV9odHRwX2xvY2sgPSBUcnVl
CiAKLSAgICBkZWYgX2h0dHBfbG9ja193YWl0X3RpbWUoc2VsZik6Ci0gICAgICAgICIiIlJldHVy
biB0aGUgdGltZSB3aGF0IGh0dHAgbG9ja2luZyB0YWtlcy4iIiIKLSAgICAgICAgaWYgc2VsZi5f
aHR0cF9sb2NrX3dhaXRfYmVnaW4gPT0gMDoKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAg
IGlmIHNlbGYuX2h0dHBfbG9ja193YWl0X2VuZCA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIHRp
bWUudGltZSgpIC0gc2VsZi5faHR0cF9sb2NrX3dhaXRfYmVnaW4KLSAgICAgICAgcmV0dXJuIHNl
bGYuX2h0dHBfbG9ja193YWl0X2VuZCAtIHNlbGYuX2h0dHBfbG9ja193YWl0X2JlZ2luCi0KICAg
ICBkZWYgX3N0b3Bfc2VydmVyc193aXRoX2xvY2soc2VsZik6CiAgICAgICAgICIiIlN0b3AgdGhl
IHNlcnZlcnMgYW5kIHJlbGVhc2UgaHR0cCBsb2NrLiIiIgogICAgICAgICBpZiBzZWxmLl9oYXZl
X2h0dHBfbG9jazoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyLnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9r
ZXIucHkKaW5kZXggYmMzZDMzNmYwODVjMzAzMGRmZmUxNzk5YmJlYjBlZWJjMjMzNWY1MC4uMjNj
MGI1MDBjYWVkOTgzZjk0NzhlYzMzNjQ0NGZiZDQxYmIzYzNlMCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2Fn
ZV9icm9rZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIucHkKQEAgLTQwLDggKzQwLDEzIEBAIGhh
bmRsZXMgbGF1bmNoaW5nIHRocmVhZHMgYW5kL29yIHByb2Nlc3NlcyBkZXBlbmRpbmcgb24gdGhl
CiByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbi4KICIiIgogCitpbXBvcnQgY1BpY2tsZQogaW1wb3J0
IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IFF1ZXVlCiBpbXBvcnQgc3lzCitpbXBvcnQgdGhy
ZWFkCitpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogCkBA
IC00OSw2ICs1NCw5IEBAIGltcG9ydCBkdW1wX3JlbmRlcl90cmVlX3RocmVhZAogCiBfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKK01BTkFHRVIgPSAnbWFuYWdlcicKK0FOWV9X
T1JLRVIgPSAnd29ya2VyJworCiAKIGRlZiBnZXQocG9ydCwgb3B0aW9ucyk6CiAgICAgIiIiUmV0
dXJuIGFuIGluc3RhbmNlIG9mIGEgV29ya2VyTWVzc2FnZUJyb2tlci4iIiIKQEAgLTYwLDgwICs2
OCwyNzUgQEAgZGVmIGdldChwb3J0LCBvcHRpb25zKToKICAgICByYWlzZSBWYWx1ZUVycm9yKCd1
bnN1cHBvcnRlZCB2YWx1ZSBmb3IgLS13b3JrZXItbW9kZWw6ICVzJyAlIHdvcmtlcl9tb2RlbCkK
IAogCitjbGFzcyBfTWVzc2FnZShvYmplY3QpOgorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg
bG9hZHMoc3RyKToKKyAgICAgICAgb2JqID0gY1BpY2tsZS5sb2FkcyhzdHIpCisgICAgICAgIGFz
c2VydChpc2luc3RhbmNlKG9iaiwgX01lc3NhZ2UpKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHNyYywgZGVzdCwgaGRyLCBib2R5KToKKyAgICAgICAgc2VsZi5zcmMgPSBzcmMKKyAgICAgICAg
c2VsZi5kZXN0ID0gZGVzdAorICAgICAgICBzZWxmLmhkciA9IGhkcgorICAgICAgICBzZWxmLmJv
ZHkgPSBib2R5CisKKyAgICBkZWYgZHVtcHMoc2VsZik6CisgICAgICAgIHJldHVybiBjUGlja2xl
LmR1bXBzKHNlbGYpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAo
Il9NZXNzYWdlKHNyYz0nJXMnLCBkZXN0PSclcycsIGhkcj0nJXMnKSIgJQorICAgICAgICAgICAg
ICAgIChzZWxmLnNyYywgc2VsZi5kZXN0LCBzZWxmLmhkcikpCisKKworY2xhc3MgX1RpbWVyKG9i
amVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhbGxiYWNrLCBkZWxheSk6CisgICAgICAg
IHNlbGYuY2FsbGJhY2sgPSBjYWxsYmFjaworICAgICAgICBzZWxmLmRlbGF5ID0gZGVsYXkKKyAg
ICAgICAgc2VsZi5kZWFkbGluZSA9IHRpbWUudGltZSgpICsgZGVsYXkKKworCiBjbGFzcyBfV29y
a2VyTWVzc2FnZUJyb2tlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBv
cHRpb25zKToKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi5fb3B0aW9u
cyA9IG9wdGlvbnMKIAotICAgICAgICAjIFRoaXMgbWFwcyB3b3JrZXJfbmFtZXMgdG8gVGVzdFNo
ZWxsVGhyZWFkcwotICAgICAgICBzZWxmLl90aHJlYWRzID0ge30KKyAgICAgICAgc2VsZi5fdGlt
ZXJzID0ge30KKyAgICAgICAgc2VsZi5fdGltZXJzW01BTkFHRVJdID0gTm9uZQorICAgICAgICBz
ZWxmLl90aW1lcnNbQU5ZX1dPUktFUl0gPSBOb25lCisgICAgICAgIHNlbGYuX3F1ZXVlcyA9IHt9
CiAKLSAgICBkZWYgc3RhcnRfd29ya2VyKHNlbGYsIHRlc3RfcnVubmVyLCB3b3JrZXJfbnVtYmVy
KToKKyAgICBkZWYgc3RhcnRfd29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIpOgogICAgICAgICAi
IiJTdGFydCBhIHdvcmtlciB3aXRoIHRoZSBnaXZlbiBpbmRleCBudW1iZXIuCiAKICAgICAgICAg
UmV0dXJucyB0aGUgYWN0dWFsIFRlc3RTaGVsbFRocmVhZCBvYmplY3QuIiIiCi0gICAgICAgICMg
RklYTUU6IFJlbW92ZSBkZXBlbmRlbmNpZXMgb24gdGVzdF9ydW5uZXIuCi0gICAgICAgICMgRklY
TUU6IFJlcGxhY2Ugd2l0aCBzb21ldGhpbmcgdGhhdCBpc24ndCBhIHRocmVhZCwgYW5kIHJldHVy
bgotICAgICAgICAjIHRoZSBuYW1lIG9mIHRoZSB3b3JrZXIsIG5vdCB0aGUgdGhyZWFkIGl0c2Vs
Zi4gV2UgbmVlZCB0byByZXR1cm4KLSAgICAgICAgIyB0aGUgdGhyZWFkIGl0c2VsZiBmb3Igbm93
IHRvIGFsbG93IFRlc3RSdW5uZXIgdG8gYWNjZXNzIHRoZSBvYmplY3QKLSAgICAgICAgIyBkaXJl
Y3RseSB0byByZWFkIHNoYXJlZCBzdGF0ZS4KLSAgICAgICAgdGhyZWFkID0gZHVtcF9yZW5kZXJf
dHJlZV90aHJlYWQuVGVzdFNoZWxsVGhyZWFkKHNlbGYuX3BvcnQsCi0gICAgICAgICAgICBzZWxm
Ll9vcHRpb25zLCB3b3JrZXJfbnVtYmVyLCB0ZXN0X3J1bm5lci5fY3VycmVudF9maWxlbmFtZV9x
dWV1ZSwKLSAgICAgICAgICAgIHRlc3RfcnVubmVyLl9yZXN1bHRfcXVldWUpCi0gICAgICAgIHNl
bGYuX3RocmVhZHNbdGhyZWFkLm5hbWUoKV0gPSB0aHJlYWQKLSAgICAgICAgIyBOb3RlOiBEb24n
dCBzdGFydCgpIHRoZSB0aHJlYWQhIElmIHdlIGRpZCwgaXQgd291bGQgYWN0dWFsbHkKLSAgICAg
ICAgIyBjcmVhdGUgYW5vdGhlciB0aHJlYWQgYW5kIHN0YXJ0IGV4ZWN1dGluZyBpdCwgYW5kIHdl
J2Qgbm8gbG9uZ2VyCi0gICAgICAgICMgYmUgc2luZ2xlLXRocmVhZGVkLgotICAgICAgICByZXR1
cm4gdGhyZWFkCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBj
YW5jZWxfd29ya2VyKHNlbGYsIHdvcmtlcl9uYW1lKToKICAgICAgICAgIiIiQXR0ZW1wdCB0byBj
YW5jZWwgYSB3b3JrZXIgKGJlc3QtZWZmb3J0KS4gVGhlIHdvcmtlciBtYXkgc3RpbGwgYmUKICAg
ICAgICAgcnVubmluZyBhZnRlciB0aGlzIGNhbGwgcmV0dXJucy4iIiIKLSAgICAgICAgc2VsZi5f
dGhyZWFkc1t3b3JrZXJfbmFtZV0uY2FuY2VsKCkKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcgorCisgICAgZGVmIGpvaW5fd29ya2VyKHNlbGYsIHdvcmtlcl9uYW1lLCB0aW1lb3V0
KToKKyAgICAgICAgIiIiV2FpdCB1bnRpbCB3b3JrZXIgZXhpdHMgb3IgdGltZW91dCBvY2N1cnMu
IiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIGRlZiB3b3JrZXJf
aXNfYWxpdmUoc2VsZiwgd29ya2VyX25hbWUpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0
aGUgd29ya2VyIGlzIHN0aWxsIHJ1bm5pbmcuIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IKIAogICAgIGRlZiBsb2dfd2VkZ2VkX3dvcmtlcihzZWxmLCB3b3JrZXJfbmFtZSk6
CiAgICAgICAgICIiIkxvZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ2l2ZW4gd29ya2VyJ3Mgc3Rh
dGUuIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIGRlZiBydW5f
bWVzc2FnZV9sb29wKHNlbGYsIHRlc3RfcnVubmVyKToKLSAgICAgICAgIiIiTG9vcCBwcm9jZXNz
aW5nIG1lc3NhZ2VzIHVudGlsIGRvbmUuIiIiCi0gICAgICAgICMgRklYTUU6IGV2ZW50dWFsbHkg
d2UnbGwgbmVlZCBhIG1lc3NhZ2UgbG9vcCB0aGF0IHRoZSB3b3JrZXJzCi0gICAgICAgICMgY2Fu
IGFsc28gY2FsbC4KKyAgICBkZWYgYWRkX3RpbWVyKHNlbGYsIHF1ZXVlX25hbWUsIGNhbGxiYWNr
LCBkZWxheV9zZWNzKToKKyAgICAgICAgIiIiQWRkIGEgdGltZXIgdGhhdCB3aWxsIGZpcmUgZHVy
aW5nIHJ1bl9tZXNzYWdlX2xvb3AocXVldWVfbmFtZSkuCisKKyAgICAgICAgVGltZXIgY2FsbGJh
Y2tzIHRha2Ugbm8gYXJndW1lbnRzLCBhbmQgc2hvdWxkIHJldHVybiBUcnVlIGlmZgorICAgICAg
ICBydW5fbWVzc2FnZV9sb29wIHNob3VsZCBleGl0LiBDdXJyZW50bHkgdGhlIGNvZGUgb25seSBz
dXBwb3J0cyBvbmUKKyAgICAgICAgdGltZXIgcGVyIHF1ZXVlX25hbWUsIGJ1dCBhIHRpbWVyIGNh
biBiZSBhZGRlZCBmcm9tIGluc2lkZSB0aGUKKyAgICAgICAgY2FsbCBiYWNrLCBpbiBvcmRlciB0
byBjcmVhdGUgcGVyaW9kaWMgdGltZXJzLiIiIgorICAgICAgICBhc3NlcnQoc2VsZi5fdGltZXJz
W3F1ZXVlX25hbWVdIGlzIE5vbmUpCisgICAgICAgIHNlbGYuX3RpbWVyc1txdWV1ZV9uYW1lXSA9
IF9UaW1lcihjYWxsYmFjaywgZGVsYXlfc2VjcykKKworICAgIGRlZiBwdXRfbWVzc2FnZShzZWxm
LCBzcmMsIGRlc3QsIG1lc3NhZ2VfbmFtZSwgYm9keT1Ob25lKToKKyAgICAgICAgIiIiUG9zdCBh
IG1lc3NhZ2UgdG8gdGhlIHF1ZXVlIG5hbWVkICdkZXN0Jy4iIiIKKyAgICAgICAgYm9keSA9IGJv
ZHkgb3IgdHVwbGUoKQorICAgICAgICBtc2cgPSBfTWVzc2FnZShzcmMsIGRlc3QsIG1lc3NhZ2Vf
bmFtZSwgYm9keSkKKyAgICAgICAgc2VsZi5fcXVldWVzW2Rlc3RdLnB1dChtc2cpCisKKyAgICBk
ZWYgcnVuX21lc3NhZ2VfbG9vcChzZWxmLCByZWFkZXIsIHF1ZXVlX25hbWUpOgorICAgICAgICAi
IiJMb29wIHByb2Nlc3NpbmcgbWVzc2FnZXMgdW50aWwgZG9uZS4KKworICAgICAgICBUaGUgbG9v
cCBpcyBkb25lIHdoZW4gZWl0aGVyIHJlYWRlci5pc19kb25lKCkgcmV0dXJucyBUcnVlIG9yIGEK
KyAgICAgICAgdGltZXIgZmlyZXMgYW5kIHJldHVybnMgVHJ1ZS4iIiIKICAgICAgICAgcmFpc2Ug
Tm90SW1wbGVtZW50ZWRFcnJvcgogCisgICAgZGVmIF9jaGVja190aW1lcihzZWxmLCBxdWV1ZV9u
YW1lLCBub3cpOgorICAgICAgICAiIiJDaGVjayBpZiBhbnkgdGltZXJzIG5lZWQgdG8gZmlyZSwg
YW5kIGZpcmUgdGhlbS4KKworICAgICAgICBSZXR1cm5zIGEgdHVwbGUgb2YgKHdoZXRoZXIgYSB0
aW1lciBmaXJlZCwgd2hldGhlciBhIHRpbWVyCisgICAgICAgICAgICByZXR1cm5lZCBUcnVlIHRv
IGluZGljYXRlIHRoYXQgd2Ugc2hvdWxkIGJhaWwgb3V0IG9mIHRoZSBhCisgICAgICAgICAgICBt
ZXNzYWdlIGxvb3AgaWYgbmVjZXNzYXJ5KS4iIiIKKyAgICAgICAgIyBUaGUgZmlyc3QgcmV0dXJu
IHZhbHVlIGlzIG5lZWRlZCBieSBJbmxpbmVCcm9rZXIuX2RyYWluX3F1ZXVlKCksCisgICAgICAg
ICMgdGhlIHNlY29uZCBieSBNdWx0aVRocmVhZGVkQnJva2VyLnJ1bl9tZXNzYWdlX2xvb3AoKS4K
KyAgICAgICAgaWYgc2VsZi5fdGltZXJfZXhwaXJlZChxdWV1ZV9uYW1lLCBub3cpOgorICAgICAg
ICAgICAgZGVsYXkgPSBzZWxmLl90aW1lcl9kZWxheShxdWV1ZV9uYW1lLCBub3cpCisgICAgICAg
ICAgICB0ID0gc2VsZi5fdGltZXJzW3F1ZXVlX25hbWVdCisgICAgICAgICAgICBzZWxmLl90aW1l
cnNbcXVldWVfbmFtZV0gPSBOb25lCisgICAgICAgICAgICBkb25lID0gdC5jYWxsYmFjaygpCisg
ICAgICAgICAgICByZXR1cm4gVHJ1ZSwgZG9uZQorICAgICAgICByZXR1cm4gRmFsc2UsIEZhbHNl
CisKKyAgICBkZWYgX3RpbWVyX2RlbGF5KHNlbGYsIHF1ZXVlX25hbWUsIG5vdyk6CisgICAgICAg
ICIiIiJSZXR1cm4gdGhlIHRpbWUgKGluIHNlY3MpIGZyb20gJ25vdycgdW50aWwgdGhlIHF1ZXVl
IHRpbWVyIGZpcmVzLgorCisgICAgICAgIFRoZSByZXR1cm4gdmFsdWUgbWF5IGJlIG5lZ2F0aXZl
LCBpbmRpY2F0aW5nIHRoYXQgdGhlIHRpbWVyIGhhcworICAgICAgICBleHBpcmVkLCBvciBOb25l
LCB0byBpbmRpY2F0ZSB0aGF0IHRoZXJlIGlzIG5vIHRpbWVyIG9uIHRoZSBxdWV1ZQorICAgICAg
ICAoZGVsYXkgZm9yZXZlcikuIiIiCisgICAgICAgIHQgPSBzZWxmLl90aW1lcnNbcXVldWVfbmFt
ZV0KKyAgICAgICAgaWYgdDoKKyAgICAgICAgICAgIHJldHVybiB0LmRlYWRsaW5lIC0gbm93Cisg
ICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgX3RpbWVyX2V4cGlyZWQoc2VsZiwgcXVldWVf
bmFtZSwgbm93KToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIHF1ZXVlIGhhcyBhIHRp
bWVyIHdob3NlIGRlYWRsaW5lIGlzIGVhcmxpZXIgdGhhbiBub3cuIiIiCisgICAgICAgIHQgPSBz
ZWxmLl90aW1lcnNbcXVldWVfbmFtZV0KKyAgICAgICAgcmV0dXJuICh0IGlzIG5vdCBOb25lKSBh
bmQgbm93ID49IHQuZGVhZGxpbmUKKworICAgIGRlZiBfZGlzcGF0Y2hfbWVzc2FnZShzZWxmLCBt
c2csIHJlYWRlcik6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHJlYWRlciwgJ2hhbmRsZV8nICsg
bXNnLmhkcik6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKyAgICAgICAgICAg
ICAgICIlczogcmVjZWl2ZWQgbWVzc2FnZSAnJXMnIGl0IGNvdWxkbid0IGhhbmRsZSIgJQorICAg
ICAgICAgICAgICAgKHJlYWRlci5uYW1lKCksIG1zZy5oZHIpKQorCisgICAgICAgIG9wdGFyZ3Mg
PSBtc2cuYm9keQorICAgICAgICBmbiA9IGdldGF0dHIocmVhZGVyLCAnaGFuZGxlXycgKyBtc2cu
aGRyKQorICAgICAgICBmbihtc2cuc3JjLCAqb3B0YXJncykKKwogCiBjbGFzcyBfSW5saW5lQnJv
a2VyKF9Xb3JrZXJNZXNzYWdlQnJva2VyKToKLSAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChzZWxm
LCB0ZXN0X3J1bm5lcik6Ci0gICAgICAgIHRocmVhZCA9IHNlbGYuX3RocmVhZHMudmFsdWVzKClb
MF0KLSAgICAgICAgdGhyZWFkLnJ1bl9pbl9tYWluX3RocmVhZCh0ZXN0X3J1bm5lciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3J1bm5lci5fY3VycmVudF9yZXN1bHRf
c3VtbWFyeSkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucyk6CisgICAgICAg
IHN1cGVyKF9JbmxpbmVCcm9rZXIsIHNlbGYpLl9faW5pdF9fKHBvcnQsIG9wdGlvbnMpCisgICAg
ICAgICMgRklYTUU6IFdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdGhyZWFkc2FmZSBxdWV1ZXMgaGVy
ZS4KKyAgICAgICAgc2VsZi5fcXVldWVzW01BTkFHRVJdID0gUXVldWUuUXVldWUoKQorICAgICAg
ICBzZWxmLl9xdWV1ZXNbQU5ZX1dPUktFUl0gPSBRdWV1ZS5RdWV1ZSgpCisgICAgICAgIHNlbGYu
X21hbmFnZXIgPSBOb25lCiAKLSAgICBkZWYgbG9nX3dlZGdlZF93b3JrZXIoc2VsZiwgd29ya2Vy
X25hbWUpOgotICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignX0lubGluZUJyb2tlci5sb2df
d2VkZ2VkX3dvcmtlcigpIGNhbGxlZCcpCisgICAgY2xhc3MgX1dvcmtlcihkdW1wX3JlbmRlcl90
cmVlX3RocmVhZC5Xb3JrZXIpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCB3
b3JrZXJfbnVtYmVyKToKKyAgICAgICAgICAgIHN1cGVyKF9JbmxpbmVCcm9rZXIuX1dvcmtlciwg
c2VsZikuX19pbml0X18oYnJva2VyLCB3b3JrZXJfbnVtYmVyKQorICAgICAgICAgICAgc2VsZi5f
YWxpdmUgPSBGYWxzZQorCisgICAgICAgIGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgICAg
IHJldHVybiBzZWxmLl9hbGl2ZQorCisgICAgICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgICAg
ICBzZWxmLl9hbGl2ZSA9IFRydWUKKyAgICAgICAgICAgIHN1cGVyKF9JbmxpbmVCcm9rZXIuV29y
a2VyLCBzZWxmKS5ydW4oKQorICAgICAgICAgICAgc2VsZi5fYWxpdmUgPSBGYWxzZQorCisgICAg
ICAgIGRlZiB5aWVsZF90b19icm9rZXIoc2VsZik6CisgICAgICAgICAgICBzZWxmLl9icm9rZXIu
X2RyYWluX3F1ZXVlKHNlbGYuX2Jyb2tlci5fbWFuYWdlciwgTUFOQUdFUikKKworICAgIGRlZiBz
dGFydF93b3JrZXIoc2VsZiwgd29ya2VyX251bWJlcik6CisgICAgICAgIHNlbGYuX2lubGluZV93
b3JrZXIgPSBzZWxmLl9Xb3JrZXIoc2VsZiwgd29ya2VyX251bWJlcikKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2lubGluZV93b3JrZXIubmFtZSgpCisKKyAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChz
ZWxmLCBtYW5hZ2VyLCBxdWV1ZV9uYW1lKToKKyAgICAgICAgIiIiTG9vcCBwcm9jZXNzaW5nIG1l
c3NhZ2VzIHVudGlsIGRvbmUuIiIiCisgICAgICAgIHNlbGYuX21hbmFnZXIgPSBtYW5hZ2VyCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIGRpZF93b3JrID0gVHJ1ZQorICAgICAgICAgICAgd2hp
bGUgZGlkX3dvcms6CisgICAgICAgICAgICAgICAgZGlkX3dvcmsgPSBzZWxmLl9kcmFpbl9xdWV1
ZShzZWxmLl9pbmxpbmVfd29ya2VyLCBBTllfV09SS0VSKQorICAgICAgICAgICAgICAgIGRpZF93
b3JrID0gZGlkX3dvcmsgb3Igc2VsZi5fZHJhaW5fcXVldWUobWFuYWdlciwgTUFOQUdFUikKKyAg
ICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX21hbmFnZXIgPSBOb25lCisKKyAgICBk
ZWYgY2FuY2VsX3dvcmtlcihzZWxmLCB3b3JrZXJfbmFtZSk6CisgICAgICAgIGFzc2VydCB3b3Jr
ZXJfbmFtZSA9PSBzZWxmLl9pbmxpbmVfd29ya2VyLm5hbWUoKQorICAgICAgICBzZWxmLl9pbmxp
bmVfd29ya2VyLmNhbmNlbCgpCisKKyAgICBkZWYgd29ya2VyX2lzX2FsaXZlKHNlbGYsIHdvcmtl
cl9uYW1lKToKKyAgICAgICAgYXNzZXJ0IHdvcmtlcl9uYW1lID09IHNlbGYuX2lubGluZV93b3Jr
ZXIubmFtZSgpCisgICAgICAgIHJldHVybiBzZWxmLl9pbmxpbmVfd29ya2VyLmlzX2FsaXZlKCkK
KworICAgIGRlZiBqb2luX3dvcmtlcihzZWxmLCB3b3JrZXJfbmFtZSwgdGltZW91dCk6CisgICAg
ICAgIGFzc2VydCB3b3JrZXJfbmFtZSA9PSBzZWxmLl9pbmxpbmVfd29ya2VyLm5hbWUoKQorICAg
ICAgICBhc3NlcnQgc2VsZi5faW5saW5lX3dvcmtlci5pc19kb25lKCkKKworICAgIGRlZiBsb2df
d2VkZ2VkX3dvcmtlcihzZWxmLCB3b3JrZXJfbmFtZSwgdGVzdF9uYW1lKToKKyAgICAgICAgcmFp
c2UgQXNzZXJ0aW9uRXJyb3IoIl9JbmxpbmVCcm9rZXIubG9nX3dlZGdlZF93b3JrZXIoKSBjYWxs
ZWQiKQorCisgICAgZGVmIF9kcmFpbl9xdWV1ZShzZWxmLCByZWFkZXIsIHF1ZXVlX25hbWUpOgor
ICAgICAgICAiIiJMb29wIHVudGlsIHdlIHJ1biBvdXQgb2Ygc3R1ZmYgdG8gZG8gdy9vIGJsb2Nr
aW5nLgorCisgICAgICAgIFRoaXMgbWVhbnMgdGhlcmUgYXJlIG5vIG1lc3NhZ2VzIHRvIHByb2Nl
c3MgYW5kIG5vIHRpbWVycyBhcmUgZmlyaW5nLgorICAgICAgICBUaGUgbWV0aG9kIHdpbGwga2Vl
cCBwcm9jZXNzaW5nIG1lc3NhZ2VzIGFuZCBmaXJpbmcgdGltZXJzIHJlZ2FyZGxlc3MKKyAgICAg
ICAgb2Ygd2hhdCB0aGUgdGltZXJzIHJldHVybiBvciB3aGF0IHJlYWRlci5pc19kb25lKCkgcmV0
dXJucy4KKworICAgICAgICBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHdlIGRpZCBhbnl0aGluZyBh
dCBhbGwuIiIiCisgICAgICAgICMgRklYTUU6IFNob3VsZCB3ZSBleGl0IGVhcmx5IGlmIHRpbWVy
cyByZXR1cm4gZG9uZSBvciByZWFkZXIuaXNfZG9uZSgpCisgICAgICAgICMgaXMgVHJ1ZT8KKwor
ICAgICAgICBkaWRfd29yayA9IEZhbHNlCisgICAgICAgIGRpZF93b3JrX29uX3RoaXNfcnVuID0g
VHJ1ZQorICAgICAgICB3aGlsZSBkaWRfd29ya19vbl90aGlzX3J1bjoKKyAgICAgICAgICAgICMg
UGVyIHRoZSBhYm92ZSwgd2UgaWdub3JlIHRoZSAnZG9uZScgdmFsdWUgZnJvbSBjaGVja190aW1l
cigpCisgICAgICAgICAgICBkaWRfd29ya19vbl90aGlzX3J1biwgXyA9IHNlbGYuX2NoZWNrX3Rp
bWVyKHF1ZXVlX25hbWUsIHRpbWUudGltZSgpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgICAgIG1zZyA9IHNlbGYuX3F1ZXVlc1txdWV1ZV9uYW1lXS5nZXQoYmxvY2s9RmFsc2UpCisg
ICAgICAgICAgICAgICAgc2VsZi5fZGlzcGF0Y2hfbWVzc2FnZShtc2csIHJlYWRlcikKKyAgICAg
ICAgICAgICAgICBkaWRfd29ya19vbl90aGlzX3J1biA9IFRydWUKKyAgICAgICAgICAgIGV4Y2Vw
dCBRdWV1ZS5FbXB0eToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIGlmIGRp
ZF93b3JrX29uX3RoaXNfcnVuOgorICAgICAgICAgICAgICAgIGRpZF93b3JrID0gVHJ1ZQorCisg
ICAgICAgIHJldHVybiBkaWRfd29yawogCiAKIGNsYXNzIF9NdWx0aVRocmVhZGVkQnJva2VyKF9X
b3JrZXJNZXNzYWdlQnJva2VyKToKLSAgICBkZWYgc3RhcnRfd29ya2VyKHNlbGYsIHRlc3RfcnVu
bmVyLCB3b3JrZXJfbnVtYmVyKToKLSAgICAgICAgdGhyZWFkID0gX1dvcmtlck1lc3NhZ2VCcm9r
ZXIuc3RhcnRfd29ya2VyKHNlbGYsIHRlc3RfcnVubmVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyX251bWJlcikKLSAgICAgICAgIyBV
bmxpa2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24sIGhlcmUgd2UgYWN0dWFsbHkgd2FudCB0byBz
dGFydAotICAgICAgICAjIHRoZSB0aHJlYWQuCi0gICAgICAgIHRocmVhZC5zdGFydCgpCi0gICAg
ICAgIHJldHVybiB0aHJlYWQKLQotICAgIGRlZiBydW5fbWVzc2FnZV9sb29wKHNlbGYsIHRlc3Rf
cnVubmVyKToKLSAgICAgICAgIyBGSVhNRTogUmVtb3ZlIHRoZSBkZXBlbmRlbmNpZXMgb24gdGVz
dF9ydW5uZXIuIENoZWNraW5nIG9uIHdvcmtlcnMKLSAgICAgICAgIyBzaG91bGQgYmUgZG9uZSB2
aWEgYSB0aW1lciBmaXJpbmcuCi0gICAgICAgIHRlc3RfcnVubmVyLl9jaGVja19vbl93b3JrZXJz
KCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucyk6CisgICAgICAgIHN1cGVy
KF9NdWx0aVRocmVhZGVkQnJva2VyLCBzZWxmKS5fX2luaXRfXyhwb3J0LCBvcHRpb25zKQorICAg
ICAgICBzZWxmLl9xdWV1ZXNbTUFOQUdFUl0gPSBRdWV1ZS5RdWV1ZSgpCisgICAgICAgIHNlbGYu
X3F1ZXVlc1tBTllfV09SS0VSXSA9IFF1ZXVlLlF1ZXVlKCkKIAotICAgIGRlZiBsb2dfd2VkZ2Vk
X3dvcmtlcihzZWxmLCB3b3JrZXJfbmFtZSk6CisgICAgICAgIHNlbGYuX3RocmVhZHMgPSB7fQor
CisgICAgY2xhc3MgX1dvcmtlcihkdW1wX3JlbmRlcl90cmVlX3RocmVhZC5Xb3JrZXIsIHRocmVh
ZGluZy5UaHJlYWQpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJf
bnVtYmVyKToKKyAgICAgICAgICAgIHN1cGVyKF9NdWx0aVRocmVhZGVkQnJva2VyLl9Xb3JrZXIs
IHNlbGYpLl9faW5pdF9fKGJyb2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlcl9udW1iZXIpCisgICAgICAgICAg
ICBzZWxmLnRpZCA9ICI8bm9uZT4iCisKKyAgICAgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAg
ICAgIHNlbGYudGlkID0gdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgICAgICBkdW1wX3JlbmRl
cl90cmVlX3RocmVhZC5Xb3JrZXIucnVuKHNlbGYpCisKKyAgICBkZWYgc3RhcnRfd29ya2VyKHNl
bGYsIHdvcmtlcl9udW1iZXIpOgorICAgICAgICB3b3JrZXIgPSBzZWxmLl9Xb3JrZXIoc2VsZiwg
d29ya2VyX251bWJlcikKKyAgICAgICAgbmFtZSA9IHdvcmtlci5uYW1lKCkKKyAgICAgICAgc2Vs
Zi5fdGhyZWFkc1tuYW1lXSA9IHdvcmtlcgorICAgICAgICB3b3JrZXIuc3RhcnQoKQorICAgICAg
ICByZXR1cm4gbmFtZQorCisgICAgZGVmIHJ1bl9tZXNzYWdlX2xvb3Aoc2VsZiwgcmVhZGVyLCBx
dWV1ZV9uYW1lKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICMgSGVyZSB3ZSBk
b24ndCBjYXJlIGlmIHdlIGRvIHdvcmsgaW4gdGhlIHRpbWVyLgorICAgICAgICAgICAgbm93ID0g
dGltZS50aW1lKCkKKyAgICAgICAgICAgIF8sIGRvbmUgPSBzZWxmLl9jaGVja190aW1lcihxdWV1
ZV9uYW1lLCBub3cpCisgICAgICAgICAgICBpZiBkb25lIG9yIHJlYWRlci5pc19kb25lKCk6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgUmUtY2hlY2sgdGhlIHRpbWUs
IGluIGNhc2UgdGhlIHRpbWVyIGhhZCBhIHNsb3cgY2FsbGJhY2suCisgICAgICAgICAgICBub3cg
PSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3RpbWVyX2V4cGlyZWQocXVl
dWVfbmFtZSwgbm93KToKKyAgICAgICAgICAgICAgICBkZWxheSA9IHNlbGYuX3RpbWVyX2RlbGF5
KHF1ZXVlX25hbWUsIG5vdykKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
ICAgIG1zZyA9IHNlbGYuX3F1ZXVlc1txdWV1ZV9uYW1lXS5nZXQoYmxvY2s9VHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0
PWRlbGF5KQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9kaXNwYXRjaF9tZXNzYWdlKG1zZywg
cmVhZGVyKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKKyAgICAgICAgICAg
ICAgICAgICAgcGFzcworCisgICAgZGVmIGNhbmNlbF93b3JrZXIoc2VsZiwgd29ya2VyX25hbWUp
OgorICAgICAgICBzZWxmLl90aHJlYWRzW3dvcmtlcl9uYW1lXS5jYW5jZWwoKQorCisgICAgZGVm
IGpvaW5fd29ya2VyKHNlbGYsIHdvcmtlcl9uYW1lLCB0aW1lb3V0KToKKyAgICAgICAgc2VsZi5f
dGhyZWFkc1t3b3JrZXJfbmFtZV0uam9pbih0aW1lb3V0KQorCisgICAgZGVmIHdvcmtlcl9pc19h
bGl2ZShzZWxmLCB3b3JrZXJfbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLl90aHJlYWRzW3dv
cmtlcl9uYW1lXS5pc19hbGl2ZSgpCisKKyAgICBkZWYgbG9nX3dlZGdlZF93b3JrZXIoc2VsZiwg
d29ya2VyX25hbWUsIHRlc3RfbmFtZSk6CiAgICAgICAgIHRocmVhZCA9IHNlbGYuX3RocmVhZHNb
d29ya2VyX25hbWVdCiAgICAgICAgIHN0YWNrID0gc2VsZi5fZmluZF90aHJlYWRfc3RhY2sodGhy
ZWFkLmlkKCkpCiAgICAgICAgIGFzc2VydChzdGFjayBpcyBub3QgTm9uZSkKLSAgICAgICAgX2xv
Zy5lcnJvcigiIikKLSAgICAgICAgX2xvZy5lcnJvcigiJXMgKHRpZCAlZCkgaXMgd2VkZ2VkIiAl
ICh3b3JrZXJfbmFtZSwgdGhyZWFkLmlkKCkpKQorICAgICAgICBfbG9nLmVycm9yKCIlcyAodGlk
ICVkKSBpcyB3ZWRnZWQgb24gdGVzdCAlcyIgJQorICAgICAgICAgICAgICAgICAgICh3b3JrZXJf
bmFtZSwgdGhyZWFkLmlkKCksIHRlc3RfbmFtZSkpCiAgICAgICAgIHNlbGYuX2xvZ19zdGFjayhz
dGFjaykKLSAgICAgICAgX2xvZy5lcnJvcigiIikKIAogICAgIGRlZiBfZmluZF90aHJlYWRfc3Rh
Y2soc2VsZiwgaWQpOgogICAgICAgICAiIiJSZXR1cm5zIGEgc3RhY2sgb2JqZWN0IHRoYXQgY2Fu
IGJlIHVzZWQgdG8gZHVtcCBhIHN0YWNrIHRyYWNlIGZvcgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9i
cm9rZXJfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlcl91bml0dGVzdC5weQppbmRleCBkNDZk
ZjRjNTdmMTU0OTZkZTM0NmRhOWE4NDY5MzY4ZDVhOGZkODA0Li42NDZhZDRhZGYzMTY0OGU2MDM4
ZmQ3YjMwYjFjNWU3OWI2Yzk4OGU3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlcl91bml0dGVz
dC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlcl91bml0dGVzdC5weQpAQCAtNjcsNyArNjcsNyBAQCBj
bGFzcyBUZXN0VGhyZWFkU3RhY2tzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9i
cm9rZXIoc2VsZik6CiAgICAgICAgIG9wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucygpCiAg
ICAgICAgIHJldHVybiBtZXNzYWdlX2Jyb2tlci5fTXVsdGlUaHJlYWRlZEJyb2tlcihwb3J0PU5v
bmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wdGlvbnM9b3B0aW9ucykKIAogICAgIGRlZiB0ZXN0X2ZpbmRfdGhyZWFk
X3N0YWNrX2ZvdW5kKHNlbGYpOgogICAgICAgICBicm9rZXIgPSBzZWxmLm1ha2VfYnJva2VyKCkK
QEAgLTkyLDcgKzkyLDcgQEAgY2xhc3MgVGVzdFRocmVhZFN0YWNrcyh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgIGJyb2tlci5fdGhyZWFkc1tjaGlsZF90aHJlYWQubmFtZSgpXSA9IGNoaWxk
X3RocmVhZAogICAgICAgICBtc2cgPSBzdGFydGluZ19xdWV1ZS5nZXQoKQogCi0gICAgICAgIGJy
b2tlci5sb2dfd2VkZ2VkX3dvcmtlcihjaGlsZF90aHJlYWQubmFtZSgpKQorICAgICAgICBicm9r
ZXIubG9nX3dlZGdlZF93b3JrZXIoY2hpbGRfdGhyZWFkLm5hbWUoKSwgJ3Rlc3RfbmFtZScpCiAg
ICAgICAgIHN0b3BwaW5nX3F1ZXVlLnB1dCgnJykKICAgICAgICAgY2hpbGRfdGhyZWFkLmpvaW4o
dGltZW91dD0xLjApCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IGRkODQ3ODg2MTcx
ZmJlYzMxOGRkMTM5YTY5OTk2MmMzNDM2ZTllMTQuLjhkZWVjY2FmNmRlMGRhOGQ0OGZmNTNlOWZk
YzI5NDNlYTJhNzdkOTIgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtNjQsNyArNjQs
NiBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogCi1mcm9tIGxh
eW91dF9wYWNrYWdlIGltcG9ydCBkdW1wX3JlbmRlcl90cmVlX3RocmVhZAogZnJvbSBsYXlvdXRf
cGFja2FnZSBpbXBvcnQganNvbl9sYXlvdXRfcmVzdWx0c19nZW5lcmF0b3IKIGZyb20gbGF5b3V0
X3BhY2thZ2UgaW1wb3J0IG1lc3NhZ2VfYnJva2VyCiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9y
dCBwcmludGluZwpAQCAtMTM1LDcgKzEzNCw3IEBAIGNsYXNzIFJlc3VsdFN1bW1hcnkob2JqZWN0
KToKICAgICAgICAgIiIiQWRkIGEgVGVzdFJlc3VsdCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBiaW4u
CiAKICAgICAgICAgQXJnczoKLSAgICAgICAgICByZXN1bHQ6IFRlc3RSZXN1bHQgZnJvbSBkdW1w
X3JlbmRlcl90cmVlX3RocmVhZC4KKyAgICAgICAgICByZXN1bHQ6IFRlc3RSZXN1bHQKICAgICAg
ICAgICBleHBlY3RlZDogd2hldGhlciB0aGUgcmVzdWx0IHdhcyB3aGF0IHdlIGV4cGVjdGVkIGl0
IHRvIGJlLgogICAgICAgICAiIiIKIApAQCAtMjI4LDEzICsyMjcsMjIgQEAgZGVmIHN1bW1hcml6
ZV91bmV4cGVjdGVkX3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1h
cnksCiAgICAgcmV0dXJuIHJlc3VsdHMKIAogCi1jbGFzcyBXb3JrZXJTdGF0ZShvYmplY3QpOgor
Y2xhc3MgX1dvcmtlclN0YXRlKG9iamVjdCk6CiAgICAgIiIiQSBjbGFzcyBmb3IgdGhlIFRlc3RS
dW5uZXIvbWFuYWdlciB0byB1c2UgdG8gdHJhY2sgdGhlIGN1cnJlbnQgc3RhdGUKICAgICBvZiB0
aGUgd29ya2Vycy4iIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgbnVtYmVyLCB0aHJl
YWQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBudW1iZXIpOgogICAgICAgICBzZWxm
Lm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYubnVtYmVyID0gbnVtYmVyCi0gICAgICAgIHNlbGYu
dGhyZWFkID0gdGhyZWFkCisgICAgICAgIHNlbGYuZG9uZSA9IEZhbHNlCisgICAgICAgIHNlbGYu
bmV4dF90aW1lb3V0ID0gTm9uZQorICAgICAgICBzZWxmLndlZGdlZCA9IEZhbHNlCisgICAgICAg
IHNlbGYuc3RhdHMgPSB7fQorICAgICAgICBzZWxmLnN0YXRzWyduYW1lJ10gPSBuYW1lCisgICAg
ICAgIHNlbGYuc3RhdHNbJ251bV90ZXN0cyddID0gMAorICAgICAgICBzZWxmLnN0YXRzWyd0b3Rh
bF90aW1lJ10gPSAwCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAi
X1dvcmtlclN0YXRlKCIgKyBzdHIoc2VsZi5fX2RpY3RfXykgKyAiKSIKIAogCiBjbGFzcyBUZXN0
UnVubmVyOgpAQCAtMjU3LDkgKzI2NSwxMiBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAg
IG9wdGlvbnM6IGEgZGljdGlvbmFyeSBvZiBjb21tYW5kIGxpbmUgb3B0aW9ucwogICAgICAgICAg
IHByaW50ZXI6IGEgUHJpbnRlciBvYmplY3QgdG8gcmVjb3JkIHVwZGF0ZXMgdG8uCiAgICAgICAg
ICIiIgorICAgICAgICBzZWxmLl9uYW1lID0gbWVzc2FnZV9icm9rZXIuTUFOQUdFUgogICAgICAg
ICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAg
ICAgICBzZWxmLl9wcmludGVyID0gcHJpbnRlcgorICAgICAgICBzZWxmLl9tZXNzYWdlX2Jyb2tl
ciA9IE5vbmUKKyAgICAgICAgc2VsZi5VUERBVEVfSU5URVJWQUwgPSAwLjAxCiAKICAgICAgICAg
IyBUaGlzIG1hcHMgd29ya2VyIG5hbWVzIHRvIHRoZSBzdGF0ZSB3ZSBhcmUgdHJhY2tpbmcgZm9y
IGVhY2ggb2YgdGhlbS4KICAgICAgICAgc2VsZi5fd29ya2VycyA9IHt9CkBAIC0yNzEsOSArMjgy
LDE0IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICMgYSBzZXQgb2YgdGVzdCBmaWxlcywg
YW5kIHRoZSBzYW1lIHRlc3RzIGFzIGEgbGlzdAogICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0g
c2V0KCkKICAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0gTm9uZQotICAgICAgICBzZWxm
Ll9yZXN1bHRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCiAgICAgICAgIHNlbGYuX3JldHJ5aW5nID0g
RmFsc2UKIAorICAgIGRlZiBpc19kb25lKHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKwor
ICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCiAgICAgZGVm
IGNvbGxlY3RfdGVzdHMoc2VsZiwgYXJncywgbGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMpOgogICAg
ICAgICAiIiJGaW5kIGFsbCB0aGUgZmlsZXMgdG8gdGVzdC4KIApAQCAtNTk1LDk3ICs2MTEsMTAw
IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICAgIGluIHRoZSBmb3JtIHtmaWxlbmFt
ZTpmaWxlbmFtZSwgdGVzdF9ydW5fdGltZTp0ZXN0X3J1bl90aW1lfQogICAgICAgICAgICAgcmVz
dWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IHRvIHBvcHVsYXRlIHdpdGggdGhlIHJlc3VsdHMK
ICAgICAgICAgIiIiCisgICAgICAgIG51bV93b3JrZXJzID0gc2VsZi5fbnVtX3dvcmtlcnMoKQor
CisgICAgICAgIHNlbGYuX2N1cnJlbnRfZmlsZV9saXN0ID0gZmlsZV9saXN0CisgICAgICAgIHNl
bGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkgPSByZXN1bHRfc3VtbWFyeQorCisgICAgICAgIHNl
bGYuX2FsbF9yZXN1bHRzID0gW10KKyAgICAgICAgc2VsZi5fZ3JvdXBfc3RhdHMgPSB7fQorICAg
ICAgICBzZWxmLl93b3JrZXJzID0ge30KIAogICAgICAgICBzZWxmLl93b3JrZXJzID0ge30KIAog
ICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU2hhcmRpbmcgdGVzdHMgLi4uJykK
LSAgICAgICAgbnVtX3dvcmtlcnMgPSBzZWxmLl9udW1fd29ya2VycygpCiAgICAgICAgIHRlc3Rf
bGlzdHMgPSBzZWxmLl9zaGFyZF90ZXN0cyhmaWxlX2xpc3QsCiAgICAgICAgICAgICBudW1fd29y
a2VycyA+IDEgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxl
bCkKIAogICAgICAgICBicm9rZXIgPSBtZXNzYWdlX2Jyb2tlci5nZXQoc2VsZi5fcG9ydCwgc2Vs
Zi5fb3B0aW9ucykKICAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIgPSBicm9rZXIKKyAgICAg
ICAgZm9yIHRlc3RfbGlzdCBpbiB0ZXN0X2xpc3RzOgorICAgICAgICAgICAgc2VsZi5fcG9zdCgn
dGVzdF9saXN0JywgdGVzdF9saXN0KQogCi0gICAgICAgIGZpbGVuYW1lX3F1ZXVlID0gUXVldWUu
UXVldWUoKQotICAgICAgICBmb3IgaXRlbSBpbiB0ZXN0X2xpc3RzOgotICAgICAgICAgICAgZmls
ZW5hbWVfcXVldWUucHV0KGl0ZW0pCisgICAgICAgICMgVGVsbCB0aGUgd29ya2VycyB0byBzaHV0
IGRvd24gYWZ0ZXIgdGhleSdyZSBkb25lIHJ1bm5pbmcgYWxsIHRoZQorICAgICAgICAjIHRlc3Rz
LgorICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobnVtX3dvcmtlcnMpOgorICAgICAgICAgICAgc2Vs
Zi5fcG9zdCgnc3RvcCcpCiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0
YXJ0aW5nICVzIC4uLicgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFt
bWFyLnBsdXJhbGl6ZSgnd29ya2VyJywgbnVtX3dvcmtlcnMpKQotICAgICAgICBzZWxmLl9jdXJy
ZW50X2ZpbGVuYW1lX3F1ZXVlID0gZmlsZW5hbWVfcXVldWUKLSAgICAgICAgc2VsZi5fY3VycmVu
dF9yZXN1bHRfc3VtbWFyeSA9IHJlc3VsdF9zdW1tYXJ5Ci0KICAgICAgICAgZm9yIHdvcmtlcl9u
dW1iZXIgaW4geHJhbmdlKG51bV93b3JrZXJzKToKLSAgICAgICAgICAgIHRocmVhZCA9IGJyb2tl
ci5zdGFydF93b3JrZXIoc2VsZiwgd29ya2VyX251bWJlcikKLSAgICAgICAgICAgIHcgPSBXb3Jr
ZXJTdGF0ZSh0aHJlYWQubmFtZSgpLCB3b3JrZXJfbnVtYmVyLCB0aHJlYWQpCi0gICAgICAgICAg
ICBzZWxmLl93b3JrZXJzW3RocmVhZC5uYW1lKCldID0gdworICAgICAgICAgICAgd29ya2VyX25h
bWUgPSBicm9rZXIuc3RhcnRfd29ya2VyKHdvcmtlcl9udW1iZXIpCisgICAgICAgICAgICB3ID0g
X1dvcmtlclN0YXRlKHdvcmtlcl9uYW1lLCB3b3JrZXJfbnVtYmVyKQorICAgICAgICAgICAgc2Vs
Zi5fd29ya2Vyc1t3b3JrZXJfbmFtZV0gPSB3CiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmlu
dF91cGRhdGUoIlN0YXJ0aW5nIHRlc3RpbmcgLi4uIikKICAgICAgICAga2V5Ym9hcmRfaW50ZXJy
dXB0ZWQgPSBGYWxzZQotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgotICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGJyb2tlci5ydW5fbWVzc2FnZV9sb29wKHNl
bGYpCi0gICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAg
ICAgX2xvZy5pbmZvKCJJbnRlcnJ1cHRlZCwgZXhpdGluZyIpCi0gICAgICAgICAgICAgICAgZm9y
IHdvcmtlcl9uYW1lIGluIHNlbGYuX3dvcmtlcnMua2V5cygpOgotICAgICAgICAgICAgICAgICAg
ICBicm9rZXIuY2FuY2VsX3dvcmtlcih3b3JrZXJfbmFtZSkKLSAgICAgICAgICAgICAgICBrZXli
b2FyZF9pbnRlcnJ1cHRlZCA9IFRydWUKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAg
ICAgICAjIFVuZXhwZWN0ZWQgZXhjZXB0aW9uOyBkb24ndCB0cnkgdG8gY2xlYW4gdXAgd29ya2Vy
cy4KLSAgICAgICAgICAgICAgICBfbG9nLmluZm8oIkV4Y2VwdGlvbiByYWlzZWQsIGV4aXRpbmci
KQotICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5v
dCBzZWxmLl9vcHRpb25zLmRyeV9ydW46CisgICAgICAgICAgICAgICAgZG9uZSA9IHNlbGYuX2No
ZWNrX29uX3dvcmtlcnMoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBkb25lOgorICAgICAgICAg
ICAgICAgICAgICBicm9rZXIucnVuX21lc3NhZ2VfbG9vcChzZWxmLCBtZXNzYWdlX2Jyb2tlci5N
QU5BR0VSKQorCisgICAgICAgICAgICAgICAgZm9yIHcgaW4gc2VsZi5fd29ya2Vycy52YWx1ZXMo
KToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHcud2VkZ2VkIGFuZCBicm9rZXIud29ya2Vy
X2lzX2FsaXZlKHcubmFtZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBicm9rZXIuam9pbl93
b3JrZXIody5uYW1lLCAwLjUpCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGJy
b2tlci53b3JrZXJfaXNfYWxpdmUody5uYW1lKQorCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZElu
dGVycnVwdDoKKyAgICAgICAgICAgIF9sb2cuaW5mbygiSW50ZXJydXB0ZWQsIGV4aXRpbmciKQor
ICAgICAgICAgICAgZm9yIHdvcmtlcl9uYW1lIGluIHNlbGYuX3dvcmtlcnMua2V5cygpOgorICAg
ICAgICAgICAgICAgIGJyb2tlci5jYW5jZWxfd29ya2VyKHdvcmtlcl9uYW1lKQorICAgICAgICAg
ICAga2V5Ym9hcmRfaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAg
ICAgICMgVW5leHBlY3RlZCBleGNlcHRpb247IGRvbid0IHRyeSB0byBjbGVhbiB1cCB3b3JrZXJz
LgorICAgICAgICAgICAgX2xvZy5pbmZvKCJFeGNlcHRpb24gcmFpc2VkLCBleGl0aW5nIikKKyAg
ICAgICAgICAgIHNlbGYuX21lc3NhZ2VfYnJva2VyID0gTm9uZQorICAgICAgICAgICAgcmFpc2UK
IAotICAgICAgICB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3Rf
dGltaW5ncyA9IFwKLSAgICAgICAgICAgIHNlbGYuX2NvbGxlY3RfdGltaW5nX2luZm8oc2VsZi5f
d29ya2VycykKICAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIgPSBOb25lCisgICAgICAgIHRo
cmVhZF90aW1pbmdzID0gW3cuc3RhdHMgZm9yIHcgaW4gc2VsZi5fd29ya2Vycy52YWx1ZXMoKV0K
KyAgICAgICAgcmV0dXJuIChrZXlib2FyZF9pbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsCisg
ICAgICAgICAgICAgICAgc2VsZi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRzKQogCi0g
ICAgICAgIHJldHVybiAoa2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLCB0ZXN0
X3RpbWluZ3MsCi0gICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpCisgICAg
ZGVmIF9wb3N0KHNlbGYsIG1lc3NhZ2VfbmFtZSwgKm1lc3NhZ2VfYXJncyk6CisgICAgICAgIHNl
bGYuX21lc3NhZ2VfYnJva2VyLnB1dF9tZXNzYWdlKHNlbGYuX25hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfYnJva2VyLkFOWV9XT1JLRVIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfbmFtZSwgKm1l
c3NhZ2VfYXJncykKIAogICAgIGRlZiBfY2hlY2tfb25fd29ya2VycyhzZWxmKToKLSAgICAgICAg
IiIiUmV0dXJucyBUcnVlIGlmZiBhbGwgdGhlIHdvcmtlcnMgaGF2ZSBlaXRoZXIgY29tcGxldGVk
IG9yIHdlZGdlZC4iIiIKLQotICAgICAgICAjIExvb3AgdGhyb3VnaCBhbGwgdGhlIHRocmVhZHMg
d2FpdGluZyBmb3IgdGhlbSB0byBmaW5pc2guCi0gICAgICAgIHNvbWVfdGhyZWFkX2lzX2FsaXZl
ID0gVHJ1ZQotICAgICAgICB3aGlsZSBzb21lX3RocmVhZF9pc19hbGl2ZToKLSAgICAgICAgICAg
IHNvbWVfdGhyZWFkX2lzX2FsaXZlID0gRmFsc2UKLSAgICAgICAgICAgIHQgPSB0aW1lLnRpbWUo
KQotICAgICAgICAgICAgZm9yIHdvcmtlciBpbiBzZWxmLl93b3JrZXJzLnZhbHVlcygpOgotICAg
ICAgICAgICAgICAgIHRocmVhZCA9IHdvcmtlci50aHJlYWQKLSAgICAgICAgICAgICAgICBleGNl
cHRpb25faW5mbyA9IHRocmVhZC5leGNlcHRpb25faW5mbygpCi0gICAgICAgICAgICAgICAgaWYg
ZXhjZXB0aW9uX2luZm8gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICMgUmUtcmFp
c2UgdGhlIHRocmVhZCdzIGV4Y2VwdGlvbiBoZXJlIHRvIG1ha2UgaXQKLSAgICAgICAgICAgICAg
ICAgICAgIyBjbGVhciB0aGF0IHRlc3Rpbmcgd2FzIGFib3J0ZWQuIE90aGVyd2lzZSwKLSAgICAg
ICAgICAgICAgICAgICAgIyB0aGUgdGVzdHMgdGhhdCBkaWQgbm90IHJ1biB3b3VsZCBiZSBhc3N1
bWVkCi0gICAgICAgICAgICAgICAgICAgICMgdG8gaGF2ZSBwYXNzZWQuCi0gICAgICAgICAgICAg
ICAgICAgIHJhaXNlIGV4Y2VwdGlvbl9pbmZvWzBdLCBleGNlcHRpb25faW5mb1sxXSwgZXhjZXB0
aW9uX2luZm9bMl0KLQotICAgICAgICAgICAgICAgIGlmIHRocmVhZC5pc0FsaXZlKCk6Ci0gICAg
ICAgICAgICAgICAgICAgIHNvbWVfdGhyZWFkX2lzX2FsaXZlID0gVHJ1ZQotICAgICAgICAgICAg
ICAgICAgICBuZXh0X3RpbWVvdXQgPSB0aHJlYWQubmV4dF90aW1lb3V0KCkKLSAgICAgICAgICAg
ICAgICAgICAgaWYgbmV4dF90aW1lb3V0IGFuZCB0ID4gbmV4dF90aW1lb3V0OgotICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIubG9nX3dlZGdlZF93b3JrZXIod29y
a2VyLm5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQuY2xlYXJfbmV4dF90aW1l
b3V0KCkKLQotICAgICAgICAgICAgc2VsZi51cGRhdGVfc3VtbWFyeShzZWxmLl9jdXJyZW50X3Jl
c3VsdF9zdW1tYXJ5KQotCi0gICAgICAgICAgICBpZiBzb21lX3RocmVhZF9pc19hbGl2ZToKLSAg
ICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCi0KLSAgICBkZWYgX2NvbGxlY3RfdGltaW5n
X2luZm8oc2VsZiwgd29ya2Vycyk6Ci0gICAgICAgIHRlc3RfdGltaW5ncyA9IHt9Ci0gICAgICAg
IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gW10KLSAgICAgICAgdGhyZWFkX3RpbWluZ3MgPSBb
XQotCi0gICAgICAgIGZvciB3IGluIHdvcmtlcnMudmFsdWVzKCk6Ci0gICAgICAgICAgICB0aHJl
YWQgPSB3LnRocmVhZAotICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MuYXBwZW5kKHsnbmFtZSc6
IHRocmVhZC5uYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudW1f
dGVzdHMnOiB0aHJlYWQuZ2V0X251bV90ZXN0cygpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAndG90YWxfdGltZSc6IHRocmVhZC5nZXRfdG90YWxfdGltZSgpfSkKLSAgICAg
ICAgICAgIHRlc3RfdGltaW5ncy51cGRhdGUodGhyZWFkLmdldF90ZXN0X2dyb3VwX3RpbWluZ19z
dGF0cygpKQotICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MuZXh0ZW5kKHRocmVh
ZC5nZXRfdGVzdF9yZXN1bHRzKCkpCi0KLSAgICAgICAgcmV0dXJuICh0aHJlYWRfdGltaW5ncywg
dGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncykKKyAgICAgICAgIiIiUmV0dXJu
cyB0cnVlIGlmZiBhbGwgdGhlIHdvcmtlcnMgaGF2ZSBlaXRoZXIgY29tcGxldGVkIG9yIHdlZGdl
ZC4iIiIKKyAgICAgICAgZG9uZSA9IFRydWUKKyAgICAgICAgdCA9IHRpbWUudGltZSgpCisgICAg
ICAgIGJyb2tlciA9IHNlbGYuX21lc3NhZ2VfYnJva2VyCisgICAgICAgIGZvciB3IGluIHNlbGYu
X3dvcmtlcnMudmFsdWVzKCk6CisgICAgICAgICAgICBpZiBub3Qgdy5kb25lIGFuZCBub3Qgdy53
ZWRnZWQ6CisgICAgICAgICAgICAgICAgbmV4dF90aW1lb3V0ID0gdy5uZXh0X3RpbWVvdXQKKyAg
ICAgICAgICAgICAgICBXRURHRV9QQURESU5HID0gNDAuMAorICAgICAgICAgICAgICAgIGlmIG5l
eHRfdGltZW91dCBhbmQgdCA+IG5leHRfdGltZW91dCArIFdFREdFX1BBRERJTkc6CisgICAgICAg
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgICAgICAgICAgICAgIGJyb2tlci5s
b2dfd2VkZ2VkX3dvcmtlcih3Lm5hbWUsIHcuY3VycmVudF90ZXN0X25hbWUpCisgICAgICAgICAg
ICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgICAgICAgICAgICAgIHcud2VkZ2VkID0g
VHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBG
YWxzZQorCisgICAgICAgIGlmIGRvbmU6CisgICAgICAgICAgICBpZiBhbnkoW3cud2VkZ2VkIGZv
ciB3YyBpbiBzZWxmLl93b3JrZXJzXSk6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykK
KyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdSZW1haW5pbmcgd29ya2VycyBhcmUgd2VkZ2Vk
LCBiYWlsaW5nIG91dC4nKQorICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJ05vIHdlZGdlZCB0aHJlYWRz
JykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyb2tlci5hZGRfdGltZXIoc2VsZi5uYW1l
KCksIHNlbGYuX2NoZWNrX29uX3dvcmtlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuVVBEQVRFX0lOVEVSVkFMKQorICAgICAgICByZXR1cm4gZG9uZQogCiAgICAgZGVmIG5l
ZWRzX2h0dHAoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgdGVzdCBydW5u
ZXIgbmVlZHMgYW4gSFRUUCBzZXJ2ZXIuIiIiCkBAIC04MTksMjMgKzgzOCw1MSBAQCBjbGFzcyBU
ZXN0UnVubmVyOgogICAgICAgICBfbG9nLmRlYnVnKCJzdG9wcGluZyBoZWxwZXIiKQogICAgICAg
ICBzZWxmLl9wb3J0LnN0b3BfaGVscGVyKCkKIAotICAgIGRlZiB1cGRhdGVfc3VtbWFyeShzZWxm
LCByZXN1bHRfc3VtbWFyeSk6CisgICAgZGVmIGhhbmRsZV9zdGFydGVkX3Rlc3Qoc2VsZiwgc3Jj
LCB0ZXN0X2luZm8sIGhhbmdfdGltZW91dCk6CisgICAgICAgIHcgPSBzZWxmLl93b3JrZXJzW3Ny
Y10KKyAgICAgICAgdy5jdXJyZW50X3Rlc3RfbmFtZSA9IHNlbGYuX3BvcnQucmVsYXRpdmVfdGVz
dF9maWxlbmFtZSgKKyAgICAgICAgICAgIHRlc3RfaW5mby5maWxlbmFtZSkKKyAgICAgICAgdy5u
ZXh0X3RpbWVvdXQgPSB0aW1lLnRpbWUoKSArIGhhbmdfdGltZW91dAorCisgICAgZGVmIGhhbmRs
ZV9kb25lKHNlbGYsIHNyYyk6CisgICAgICAgIHcgPSBzZWxmLl93b3JrZXJzW3NyY10KKyAgICAg
ICAgdy5kb25lID0gVHJ1ZQorICAgICAgICBwYXNzCisKKyAgICBkZWYgaGFuZGxlX2ZpbmlzaGVk
X3Rlc3Qoc2VsZiwgc3JjLCByZXN1bHQsIGVsYXBzZWRfdGltZSk6CiAgICAgICAgICIiIlVwZGF0
ZSB0aGUgc3VtbWFyeSBhbmQgcHJpbnQgcmVzdWx0cyB3aXRoIGFueSBjb21wbGV0ZWQgdGVzdHMu
IiIiCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0ID0gdGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQubG9hZHMoc2VsZi5fcmVzdWx0X3F1
ZXVlLmdldF9ub3dhaXQoKSkKLSAgICAgICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKLSAgICAg
ICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLl9leHBlY3Rh
dGlvbnMubWF0Y2hlc19hbl9leHBlY3RlZF9yZXN1bHQoCi0gICAgICAgICAgICAgICAgcmVzdWx0
LmZpbGVuYW1lLCByZXN1bHQudHlwZSwgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cykKLSAgICAg
ICAgICAgIHJlc3VsdF9zdW1tYXJ5LmFkZChyZXN1bHQsIGV4cGVjdGVkKQotICAgICAgICAgICAg
ZXhwX3N0ciA9IHNlbGYuX2V4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX3N0cmluZygKLSAg
ICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUpCi0gICAgICAgICAgICBnb3Rfc3RyID0gc2Vs
Zi5fZXhwZWN0YXRpb25zLmV4cGVjdGF0aW9uX3RvX3N0cmluZyhyZXN1bHQudHlwZSkKLSAgICAg
ICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGVzdF9yZXN1bHQocmVzdWx0LCBleHBlY3RlZCwg
ZXhwX3N0ciwgZ290X3N0cikKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfcHJvZ3Jl
c3MocmVzdWx0X3N1bW1hcnksIHNlbGYuX3JldHJ5aW5nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCisgICAgICAgIHcgPSBz
ZWxmLl93b3JrZXJzW3NyY10KKyAgICAgICAgdy5uZXh0X3RpbWVvdXQgPSBOb25lCisgICAgICAg
IHcuY3VycmVudF90ZXN0ID0gTm9uZQorCisgICAgICAgIGlmIHcud2VkZ2VkOgorICAgICAgICAg
ICAgIyBIbW0uIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBpZiB3ZSBoYXZlIG91ciB0aW1lb3V0cwor
ICAgICAgICAgICAgIyB0dW5lZCBwcm9wZXJseS4KKyAgICAgICAgICAgIF9sb2cuZXJyb3IoIiVz
IHVud2VkZ2VkIiwgdy5uYW1lKQorCisgICAgICAgIHNlbGYuX3VwZGF0ZV93b3JrZXJfc3RhdHMo
c3JjLCByZXN1bHQsIGVsYXBzZWRfdGltZSkKKworICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2V4
cGVjdGF0aW9ucy5tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdCgKKyAgICAgICAgICAgIHJlc3Vs
dC5maWxlbmFtZSwgcmVzdWx0LnR5cGUsIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMpCisgICAg
ICAgIGV4cF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9uc19zdHJpbmco
CisgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUpCisgICAgICAgIGdvdF9zdHIgPSBzZWxmLl9l
eHBlY3RhdGlvbnMuZXhwZWN0YXRpb25fdG9fc3RyaW5nKHJlc3VsdC50eXBlKQorICAgICAgICBz
ZWxmLl9wcmludGVyLnByaW50X3Rlc3RfcmVzdWx0KHJlc3VsdCwgZXhwZWN0ZWQsIGV4cF9zdHIs
IGdvdF9zdHIpCisKKyAgICAgICAgc2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFyeS5hZGQocmVz
dWx0LCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9wcm9ncmVzcyhzZWxm
Ll9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3JldHJ5aW5nLCBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCisKKyAgICBkZWYg
aGFuZGxlX2ZpbmlzaGVkX2xpc3Qoc2VsZiwgc3JjLCBsaXN0X25hbWUsIG51bV90ZXN0cywgZWxh
cHNlZF90aW1lKToKKyAgICAgICAgc2VsZi5fZ3JvdXBfc3RhdHNbbGlzdF9uYW1lXSA9IChudW1f
dGVzdHMsIGVsYXBzZWRfdGltZSkKKworICAgIGRlZiBoYW5kbGVfZXhjZXB0aW9uKHNlbGYsIHNy
YywgZXhjZXB0aW9uX2luZm8pOgorICAgICAgICByYWlzZSBleGNlcHRpb25faW5mb1swXSwgZXhj
ZXB0aW9uX2luZm9bMV0sIGV4Y2VwdGlvbl9pbmZvWzJdCisKKyAgICBkZWYgX3VwZGF0ZV93b3Jr
ZXJfc3RhdHMoc2VsZiwgc3JjLCByZXN1bHQsIGVsYXBzZWRfdGltZSk6CisgICAgICAgIHNlbGYu
X3dvcmtlcnNbc3JjXS5zdGF0c1sndG90YWxfdGltZSddICs9IGVsYXBzZWRfdGltZQorICAgICAg
ICBzZWxmLl93b3JrZXJzW3NyY10uc3RhdHNbJ251bV90ZXN0cyddICs9IDEKKyAgICAgICAgc2Vs
Zi5fYWxsX3Jlc3VsdHMuYXBwZW5kKHJlc3VsdCkKIAogICAgIGRlZiBfY2xvYmJlcl9vbGRfcmVz
dWx0cyhzZWxmKToKICAgICAgICAgIyBKdXN0IGNsb2JiZXIgdGhlIGFjdHVhbCB0ZXN0IHJlc3Vs
dHMgZGlyZWN0b3JpZXMgc2luY2UgdGhlIG90aGVyCkBAIC0xMDE1LDggKzEwNjIsNyBAQCBjbGFz
cyBUZXN0UnVubmVyOgogICAgIGRlZiBfcHJpbnRfYWdncmVnYXRlX3Rlc3Rfc3RhdGlzdGljcyhz
ZWxmLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyk6CiAgICAgICAgICIiIlByaW50cyBhZ2dyZWdh
dGUgc3RhdGlzdGljcyAoZS5nLiBtZWRpYW4sIG1lYW4sIGV0Yy4pIGZvciBhbGwgdGVzdHMuCiAg
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2Yg
ZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQuVGVzdFN0YXRzCi0gICAgICAgICAgICAgIGZvciBhbGwg
dGVzdHMuCisgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2YgVGVzdFJl
c3VsdHMgZm9yIGFsbCB0ZXN0cy4KICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfdHlwZXMgPSBb
XSAgIyBVbml0IHRlc3RzIGRvbid0IGFjdHVhbGx5IHByb2R1Y2UgYW55IHRpbWluZ3MuCiAgICAg
ICAgIGlmIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHNfdW5pdHRlc3QucHkKaW5kZXggZDMyNWExYzk1NTU5ZDU5MTUzMTYyZmVhYWRlMmQ4MGU5
MmE4YTYyNS4uMDhkYjY3YjU0YWYxOGRhNjg4MjEyZmY1ZDljNTA3Y2I5ZmYzZWYzOSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0c191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0yODIsOCArMjgyLDE2
IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3J1
bl9mb3JjZShzZWxmKToKICAgICAgICAgIyBUaGlzIHJhaXNlcyBhbiBleGNlcHRpb24gYmVjYXVz
ZSB3ZSBydW4KLSAgICAgICAgIyBmYWlsdXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRtbCwgd2hp
Y2ggaXMgbm9ybWFsbHkgU0tJUHBlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVF
cnJvciwgbG9nZ2luZ19ydW4sIFsnLS1mb3JjZSddKQorICAgICAgICAjIGZhaWx1cmVzL2V4cGVj
dGVkL2V4Y2VwdGlvbi5odG1sIGFuZAorICAgICAgICAjIGZhaWx1cmVzL2V4cGVjdGVkL2tleWJv
YXJkLCB3aGljaCBhcmUgbm9ybWFsbHkgU0tJUHBlZC4KKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgbG9nZ2luZ19ydW4oWyctLWZvcmNlJ10pCisgICAgICAgICAgICB0ZXN0X3Bhc3NlZCA9IEZh
bHNlCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgdGVzdF9wYXNzZWQg
PSBUcnVlCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIHRl
c3RfcGFzc2VkID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9wYXNzZWQpCiAK
ICAgICBkZWYgdGVzdF9ydW5fcGFydChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgYWN0
dWFsbHkgc2VsZWN0IHRoZSByaWdodCBwYXJ0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75672</attachid>
            <date>2010-12-06 04:27:34 -0800</date>
            <delta_ts>2010-12-06 05:32:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50375-20101206042733.patch</filename>
            <type>text/plain</type>
            <size>29924</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1NTc0YTIzZWE1NWI5MDkzM2U2ZTg4OWQ0Zjc4OTA3MWQ4MWU0NDJiLi5jZDZmNmY1
YjZjMjMxODM3ZTUzOWIyYjQ2YzhmMWFmMTk5NGVmOTAyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMTItMDYgIERpcmsgUHJhbmtlICA8ZHByYW5la0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGFjdHVhbGx5IGltcGxlbWVudCBtZXNzYWdpbmcgYmV0d2VlbgorICAgICAgICB0aHJl
YWRzLiBUaGlzIHBhdGNoIHN3aXRjaGVzIG5yd3QgdG8gdXNlIHRoZSBtZXNzYWdlX2Jyb2tlcjIK
KyAgICAgICAgbW9kdWxlLgorICAgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGRlcGVuZHMg
b24gYnVnIDUwNTU3LCB3aGljaCBpbnRyb2R1Y2VzIHRoYXQgbW9kdWxlLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDM3NQorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJf
dHJlZV90aHJlYWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5OgorCiAyMDEwLTEyLTA2ICBEaXJrIFBy
YW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1w
X3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCA4YzViYzExYmNlM2ZlNDQ5Y2ExZGQ3YTFjZDkw
NTk5NzA5NWZkNTRlLi42MzhmNDVkOWQ5ZjU1NTc1MDgwMGVkOGFiMTlkMWIwYjI2ZmVlZGE3IDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90
cmVlX3RocmVhZC5weQpAQCAtNDIsMTAgKzQyLDggQEAgaW1wb3J0IGNvZGVjcwogaW1wb3J0IGNv
cHkKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKLWltcG9ydCBRdWV1ZQogaW1wb3J0IHNpZ25h
bAogaW1wb3J0IHN5cwotaW1wb3J0IHRocmVhZAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRp
bWUKIApAQCAtNTQsNiArNTIsNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0X3R5
cGVzIGltcG9ydCBpbWFnZV9kaWZmCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0X3R5
cGVzIGltcG9ydCB0ZXN0X3R5cGVfYmFzZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudGVz
dF90eXBlcyBpbXBvcnQgdGV4dF9kaWZmCiAKK2ltcG9ydCBtZXNzYWdlX2Jyb2tlcjIgYXMgbWVz
c2FnZV9icm9rZXIKIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBpbXBvcnQgdGVzdF9vdXRwdXQKIGlt
cG9ydCB0ZXN0X3Jlc3VsdHMKQEAgLTYyLDc4ICs2MSwyMSBAQCBfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS4iCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgImR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkIikKIAogCi1jbGFzcyBXYXRj
aGFibGVUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgIiIiVGhpcyBjbGFzcyBhYnN0cmFj
dHMgYW4gaW50ZXJmYWNlIHVzZWQgYnkKLSAgICBydW5fd2Via2l0X3Rlc3RzLlRlc3RSdW5uZXIu
X3dhaXRfZm9yX3RocmVhZHNfdG9fZmluaXNoIGZvciB0aHJlYWQKLSAgICBtYW5hZ2VtZW50LiIi
IgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2lu
aXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9jYW5jZWxlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYu
X2V4Y2VwdGlvbl9pbmZvID0gTm9uZQotICAgICAgICBzZWxmLl9uZXh0X3RpbWVvdXQgPSBOb25l
Ci0gICAgICAgIHNlbGYuX3RocmVhZF9pZCA9IE5vbmUKLQotICAgIGRlZiBjYW5jZWwoc2VsZik6
Ci0gICAgICAgICIiIlNldCBhIGZsYWcgdGVsbGluZyB0aGlzIHRocmVhZCB0byBxdWl0LiIiIgot
ICAgICAgICBzZWxmLl9jYW5jZWxlZCA9IFRydWUKLQotICAgIGRlZiBjbGVhcl9uZXh0X3RpbWVv
dXQoc2VsZik6Ci0gICAgICAgICIiIk1hcmsgYSBmbGFnIHRlbGxpbmcgdGhpcyB0aHJlYWQgdG8g
c3RvcCBzZXR0aW5nIHRpbWVvdXRzLiIiIgotICAgICAgICBzZWxmLl90aW1lb3V0ID0gMAotCi0g
ICAgZGVmIGV4Y2VwdGlvbl9pbmZvKHNlbGYpOgotICAgICAgICAiIiJJZiBydW4oKSB0ZXJtaW5h
dGVkIG9uIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiwgcmV0dXJuIGl0IGhlcmUKLSAgICAgICAgKCh0
eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKSB0dXBsZSkuCi0gICAgICAgIFJldHVybnMgTm9uZSBpZiBy
dW4oKSB0ZXJtaW5hdGVkIG5vcm1hbGx5LiBNZWFudCB0byBiZSBjYWxsZWQgYWZ0ZXIKLSAgICAg
ICAgam9pbmluZyB0aGlzIHRocmVhZC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4Y2VwdGlv
bl9pbmZvCi0KLSAgICBkZWYgaWQoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhIHRocmVhZCBp
ZGVudGlmaWVyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fdGhyZWFkX2lkCi0KLSAgICBkZWYg
bmV4dF90aW1lb3V0KHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIHRpbWUgdGhlIHRlc3Qg
aXMgc3VwcG9zZWQgdG8gZmluaXNoIGJ5LiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbmV4dF90
aW1lb3V0Ci0KLQotY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMsIHdvcmtlcl9udW1iZXIsCi0gICAgICAg
ICAgICAgICAgIGZpbGVuYW1lX2xpc3RfcXVldWUsIHJlc3VsdF9xdWV1ZSk6Ci0gICAgICAgICIi
IkluaXRpYWxpemUgYWxsIHRoZSBsb2NhbCBzdGF0ZSBmb3IgdGhpcyBEdW1wUmVuZGVyVHJlZSB0
aHJlYWQuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBwb3J0OiBpbnRlcmZhY2UgdG8gcG9y
dC1zcGVjaWZpYyBob29rcwotICAgICAgICAgIG9wdGlvbnM6IGNvbW1hbmQgbGluZSBvcHRpb25z
IGFyZ3VtZW50IGZyb20gb3B0cGFyc2UKLSAgICAgICAgICB3b3JrZXJfbnVtYmVyOiBpZGVudGlm
aWVyIGZvciBhIHBhcnRpY3VsYXIgd29ya2VyIHRocmVhZC4KLSAgICAgICAgICBmaWxlbmFtZV9s
aXN0X3F1ZXVlOiBBIHRocmVhZCBzYWZlIFF1ZXVlIGNsYXNzIHRoYXQgY29udGFpbnMgbGlzdHMK
LSAgICAgICAgICAgICAgb2YgdHVwbGVzIG9mIChmaWxlbmFtZSwgdXJpKSBwYWlycy4KLSAgICAg
ICAgICByZXN1bHRfcXVldWU6IEEgdGhyZWFkIHNhZmUgUXVldWUgY2xhc3MgdGhhdCB3aWxsIGNv
bnRhaW4KLSAgICAgICAgICAgICAgc2VyaWFsaXplZCBUZXN0UmVzdWx0IG9iamVjdHMuCi0gICAg
ICAgICIiIgotICAgICAgICBXYXRjaGFibGVUaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAg
c2VsZi5fcG9ydCA9IHBvcnQKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKK2NsYXNz
IFdvcmtlcihtZXNzYWdlX2Jyb2tlci5DbGllbnRJbnRlcmZhY2UpOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBicm9rZXIsIHdvcmtlcl9udW1iZXIpOgorICAgICAgICBzZWxmLl9icm9rZXIgPSBi
cm9rZXIKICAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIKICAgICAg
ICAgc2VsZi5fbmFtZSA9ICd3b3JrZXIvJWQnICUgd29ya2VyX251bWJlcgotICAgICAgICBzZWxm
Ll9maWxlbmFtZV9saXN0X3F1ZXVlID0gZmlsZW5hbWVfbGlzdF9xdWV1ZQotICAgICAgICBzZWxm
Ll9yZXN1bHRfcXVldWUgPSByZXN1bHRfcXVldWUKIAorICAgICAgICBzZWxmLl9jYW5jZWxlZCA9
IEZhbHNlCisgICAgICAgIHNlbGYuX2RvbmUgPSBGYWxzZQorCisgICAgICAgIHNlbGYuX3BvcnQg
PSBicm9rZXIucG9ydCgpCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBicm9rZXIub3B0aW9ucygp
CiAgICAgICAgIHNlbGYuX2JhdGNoX2NvdW50ID0gMAogICAgICAgICBzZWxmLl9iYXRjaF9zaXpl
ID0gc2VsZi5fb3B0aW9ucy5iYXRjaF9zaXplCiAgICAgICAgIHNlbGYuX2RyaXZlciA9IE5vbmUK
ICAgICAgICAgc2VsZi5faGF2ZV9odHRwX2xvY2sgPSBGYWxzZQotCi0gICAgICAgIHNlbGYuX3Rl
c3RfcnVubmVyID0gTm9uZQotICAgICAgICBzZWxmLl9yZXN1bHRfc3VtbWFyeSA9IE5vbmUKLSAg
ICAgICAgc2VsZi5fdGVzdF9saXN0X3RpbWluZ19zdGF0cyA9IHt9Ci0gICAgICAgIHNlbGYuX3Rl
c3RfcmVzdWx0cyA9IFtdCi0gICAgICAgIHNlbGYuX251bV90ZXN0cyA9IDAKLSAgICAgICAgc2Vs
Zi5fc3RhcnRfdGltZSA9IDAKLSAgICAgICAgc2VsZi5fc3RvcF90aW1lID0gMAotICAgICAgICBz
ZWxmLl9odHRwX2xvY2tfd2FpdF9iZWdpbiA9IDAKLSAgICAgICAgc2VsZi5faHR0cF9sb2NrX3dh
aXRfZW5kID0gMAotCiAgICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMgPSBbXQogICAgICAgICBmb3Ig
Y2xzIGluIHNlbGYuX2dldF90ZXN0X3R5cGVfY2xhc3NlcygpOgogICAgICAgICAgICAgc2VsZi5f
dGVzdF90eXBlcy5hcHBlbmQoY2xzKHNlbGYuX3BvcnQsCkBAIC0xNTQsNyArOTYsNiBAQCBjbGFz
cyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgdGVzdF9hcmdzID0g
dGVzdF90eXBlX2Jhc2UuVGVzdEFyZ3VtZW50cygpCiAgICAgICAgIHRlc3RfYXJncy5uZXdfYmFz
ZWxpbmUgPSBzZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZQogICAgICAgICB0ZXN0X2FyZ3MucmVz
ZXRfcmVzdWx0cyA9IHNlbGYuX29wdGlvbnMucmVzZXRfcmVzdWx0cwotCiAgICAgICAgIHJldHVy
biB0ZXN0X2FyZ3MKIAogICAgIGRlZiBfZ2V0X3Rlc3RfdHlwZV9jbGFzc2VzKHNlbGYpOgpAQCAt
MTYzLDg4ICsxMDQsMzkgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6
CiAgICAgICAgICAgICBjbGFzc2VzLmFwcGVuZChpbWFnZV9kaWZmLkltYWdlRGlmZikKICAgICAg
ICAgcmV0dXJuIGNsYXNzZXMKIAotICAgIGRlZiBnZXRfdGVzdF9ncm91cF90aW1pbmdfc3RhdHMo
c2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgdGVzdCBncm91
cCB0byBhIHR1cGxlIG9mCi0gICAgICAgIChudW1iZXIgb2YgdGVzdHMgaW4gdGhhdCBncm91cCwg
dGltZSB0byBydW4gdGhlIHRlc3RzKSIiIgotICAgICAgICByZXR1cm4gc2VsZi5fdGVzdF9saXN0
X3RpbWluZ19zdGF0cwotCi0gICAgZGVmIGdldF90ZXN0X3Jlc3VsdHMoc2VsZik6Ci0gICAgICAg
ICIiIlJldHVybiB0aGUgbGlzdCBvZiBhbGwgdGVzdHMgcnVuIG9uIHRoaXMgdGhyZWFkLgotCi0g
ICAgICAgIFRoaXMgaXMgdXNlZCB0byBjYWxjdWxhdGUgcGVyLXRocmVhZCBzdGF0aXN0aWNzLgot
Ci0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fdGVzdF9yZXN1bHRzCi0KLSAgICBk
ZWYgZ2V0X3RvdGFsX3RpbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiBtYXgoc2VsZi5fc3RvcF90
aW1lIC0gc2VsZi5fc3RhcnRfdGltZSAtCi0gICAgICAgICAgICAgICAgICAgc2VsZi5faHR0cF9s
b2NrX3dhaXRfdGltZSgpLCAwLjApCisgICAgZGVmIGNhbmNlbChzZWxmKToKKyAgICAgICAgIiIi
QXR0ZW1wdCB0byBhYm9ydCBwcm9jZXNzaW5nIChiZXN0IGVmZm9ydCkuIiIiCisgICAgICAgIHNl
bGYuX2NhbmNlbGVkID0gVHJ1ZQogCi0gICAgZGVmIGdldF9udW1fdGVzdHMoc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLl9udW1fdGVzdHMKKyAgICBkZWYgaXNfZG9uZShzZWxmKToKKyAgICAg
ICAgIyBUaGlzIGlzIHVzZWQgZm9yIGFzc2VydGlvbiBjaGVja2luZyBpbiB0aGUgbWFuYWdlci4K
KyAgICAgICAgcmV0dXJuIHNlbGYuX2RvbmUgb3Igc2VsZi5fY2FuY2VsZWQKIAogICAgIGRlZiBu
YW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQogCi0gICAgZGVmIG5leHRfdGlt
ZW91dChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lIHRoZSB0ZXN0IGlzIHN1cHBv
c2VkIHRvIGZpbmlzaCBieS4iIiIKLSAgICAgICAgaWYgc2VsZi5fbmV4dF90aW1lb3V0OgotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX25leHRfdGltZW91dCArIHNlbGYuX2h0dHBfbG9ja193YWl0
X3RpbWUoKQotICAgICAgICByZXR1cm4gc2VsZi5fbmV4dF90aW1lb3V0Ci0KICAgICBkZWYgcnVu
KHNlbGYpOgotICAgICAgICAiIiJEZWxlZ2F0ZSBtYWluIHdvcmsgdG8gYSBoZWxwZXIgbWV0aG9k
IGFuZCB3YXRjaCBmb3IgdW5jYXVnaHQKLSAgICAgICAgZXhjZXB0aW9ucy4iIiIKLSAgICAgICAg
c2VsZi5fY292ZXJlZF9ydW4oKQotCi0gICAgZGVmIF9jb3ZlcmVkX3J1bihzZWxmKToKLSAgICAg
ICAgIyBGSVhNRTogdGhpcyBpcyBhIHNlcGFyYXRlIHJvdXRpbmUgdG8gd29yayBhcm91bmQgYSBi
dWcKLSAgICAgICAgIyBpbiBjb3ZlcmFnZTogc2VlIGh0dHA6Ly9iaXRidWNrZXQub3JnL25lZC9j
b3ZlcmFnZXB5L2lzc3VlLzg1LgotICAgICAgICBzZWxmLl90aHJlYWRfaWQgPSB0aHJlYWQuZ2V0
X2lkZW50KCkKLSAgICAgICAgc2VsZi5fc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAg
IGV4Y2VwdGlvbl9tc2cgPSAiIgorICAgICAgICBfbG9nLmRlYnVnKCclcyBzdGFydGluZycgJSBz
ZWxmLl9uYW1lKQorCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIF9sb2cuZGVidWcoJyVzIHN0
YXJ0aW5nJyAlIChzZWxmLl9uYW1lKSkKLSAgICAgICAgICAgIHNlbGYuX3J1bih0ZXN0X3J1bm5l
cj1Ob25lLCByZXN1bHRfc3VtbWFyeT1Ob25lKQotICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMg
ZG9uZSAoJWQgdGVzdHMpJyAlIChzZWxmLl9uYW1lLCBzZWxmLl9udW1fdGVzdHMpKQorICAgICAg
ICAgICAgc2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdlX2xvb3AoKQorICAgICAgICAgICAgaWYgbm90
IHNlbGYuaXNfZG9uZSgpOgorICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCIl
czogcmFuIG91dCBvZiBtZXNzYWdlcyBpbiB3b3JrZXIgcXVldWUuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICUgc2VsZi5fbmFtZSkKICAgICAgICAgZXhjZXB0IEtleWJv
YXJkSW50ZXJydXB0OgotICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2luZm8gPSBzeXMuZXhj
X2luZm8oKQotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgaW50ZXJydXB0ZWQiICUgc2VsZi5f
bmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAiLCBpbnRlcnJ1cHRlZCIKICAgICAg
ICAgZXhjZXB0OgotICAgICAgICAgICAgIyBTYXZlIHRoZSBleGNlcHRpb24gZm9yIG91ciBjYWxs
ZXIgdG8gc2VlLgotICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2luZm8gPSBzeXMuZXhjX2lu
Zm8oKQotICAgICAgICAgICAgc2VsZi5fc3RvcF90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAg
ICAgIF9sb2cuZXJyb3IoJyVzIGR5aW5nLCBleGNlcHRpb24gcmFpc2VkJyAlIHNlbGYuX25hbWUp
Ci0KLSAgICAgICAgc2VsZi5fc3RvcF90aW1lID0gdGltZS50aW1lKCkKLQotICAgIGRlZiBydW5f
aW5fbWFpbl90aHJlYWQoc2VsZiwgdGVzdF9ydW5uZXIsIHJlc3VsdF9zdW1tYXJ5KToKLSAgICAg
ICAgIiIiVGhpcyBob29rIGFsbG93cyB1cyB0byBydW4gdGhlIHRlc3RzIGZyb20gdGhlIG1haW4g
dGhyZWFkIGlmCi0gICAgICAgIC0tbnVtLXRlc3Qtc2hlbGxzPT0xLCBpbnN0ZWFkIG9mIGhhdmlu
ZyB0byBhbHdheXMgcnVuIHR3byBvciBtb3JlCi0gICAgICAgIHRocmVhZHMuIFRoaXMgYWxsb3dz
IHVzIHRvIGRlYnVnIHRoZSB0ZXN0IGhhcm5lc3Mgd2l0aG91dCBoYXZpbmcgdG8KLSAgICAgICAg
ZG8gbXVsdGktdGhyZWFkZWQgZGVidWdnaW5nLiIiIgotICAgICAgICBzZWxmLl9ydW4odGVzdF9y
dW5uZXIsIHJlc3VsdF9zdW1tYXJ5KQotCi0gICAgZGVmIF9ydW4oc2VsZiwgdGVzdF9ydW5uZXIs
IHJlc3VsdF9zdW1tYXJ5KToKLSAgICAgICAgIiIiTWFpbiB3b3JrIGVudHJ5IHBvaW50IG9mIHRo
ZSB0aHJlYWQuIEJhc2ljYWxseSB3ZSBwdWxsIHVybHMgZnJvbSB0aGUKLSAgICAgICAgZmlsZW5h
bWUgcXVldWUgYW5kIHJ1biB0aGUgdGVzdHMgdW50aWwgd2UgcnVuIG91dCBvZiB1cmxzLgotCi0g
ICAgICAgIElmIHRlc3RfcnVubmVyIGlzIG5vdCBOb25lLCB0aGVuIHdlIGNhbGwgdGVzdF9ydW5u
ZXIuVXBkYXRlU3VtbWFyeSgpCi0gICAgICAgIHdpdGggdGhlIHJlc3VsdHMgb2YgZWFjaCB0ZXN0
IGR1cmluZyBfdGVhcl9kb3duX3Rlc3QoKSwgYmVsb3cuIiIiCi0gICAgICAgIHNlbGYuX3Rlc3Rf
cnVubmVyID0gdGVzdF9ydW5uZXIKLSAgICAgICAgc2VsZi5fcmVzdWx0X3N1bW1hcnkgPSByZXN1
bHRfc3VtbWFyeQotCi0gICAgICAgIHdoaWxlIG5vdCBzZWxmLl9jYW5jZWxlZDoKLSAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICBjdXJyZW50X2dyb3VwLCBmaWxlbmFtZV9saXN0ID0g
XAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlbmFtZV9saXN0X3F1ZXVlLmdldF9ub3dh
aXQoKQotICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX3Rlc3RfbGlzdChjdXJyZW50X2dyb3Vw
LCBmaWxlbmFtZV9saXN0KQotICAgICAgICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5OgotICAgICAg
ICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYgc2VsZi5fY2FuY2VsZWQ6Ci0gICAgICAgICAg
ICBfbG9nLmRlYnVnKCdUZXN0aW5nIGNhbmNlbGVkJykKLQotICAgICAgICBzZWxmLl9jbGVhbnVw
KCkKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAiLCBleGNlcHRpb24gcmFpc2VkIgorICAg
ICAgICBmaW5hbGx5OgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgZG9uZSVzIiAlIChzZWxm
Ll9uYW1lLCBleGNlcHRpb25fbXNnKSkKKyAgICAgICAgICAgIGlmIGV4Y2VwdGlvbl9tc2c6Cisg
ICAgICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAg
ICMgRklYTUU6IEV4dHJhY3QgdGhlIHN0YWNrIHRyYWNlIGludG8gYSBzdHJpbmc/CisgICAgICAg
ICAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZSgnZXhjZXB0aW9uJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleGNfaW5mb1swXSwgZXhjX2luZm9b
MV0sIE5vbmUpKQorICAgICAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZSgnZG9uZScp
CisgICAgICAgICAgICBzZWxmLl9jbGVhbnVwKCkKIAogICAgIGRlZiBfY2xlYW51cChzZWxmKToK
ICAgICAgICAgc2VsZi5fa2lsbF9kdW1wX3JlbmRlcl90cmVlKCkKQEAgLTI1NCw3ICsxNDYsNyBA
QCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgICAgIHNl
bGYuX3Rlc3RzX3J1bl9maWxlLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYuX3Rlc3RzX3J1bl9m
aWxlID0gTm9uZQogCi0gICAgZGVmIGhhbmRsZV90ZXN0X2xpc3Qoc2VsZiwgbGlzdF9uYW1lLCB0
ZXN0X2xpc3QpOgorICAgIGRlZiBoYW5kbGVfdGVzdF9saXN0KHNlbGYsIHNyYywgbGlzdF9uYW1l
LCB0ZXN0X2xpc3QpOgogICAgICAgICBpZiBsaXN0X25hbWUgPT0gInRlc3RzX3RvX2h0dHBfbG9j
ayI6CiAgICAgICAgICAgICBzZWxmLl9zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jaygpCiAKQEAgLTI2
Miw2ICsxNTQsNyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAg
ICAgICAgbnVtX3Rlc3RzID0gMAogICAgICAgICBmb3IgdGVzdF9pbnB1dCBpbiB0ZXN0X2xpc3Q6
CiAgICAgICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2lucHV0KQorICAgICAgICAgICAgc2Vs
Zi5fYnJva2VyLnlpZWxkX3RvX2Jyb2tlcigpCiAgICAgICAgICAgICBpZiBzZWxmLl9jYW5jZWxl
ZDoKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgbnVtX3Rlc3RzICs9IDEKQEAg
LTI3MSw4ICsxNjQsMTIgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6
CiAgICAgICAgIGlmIHNlbGYuX2hhdmVfaHR0cF9sb2NrOgogICAgICAgICAgICAgc2VsZi5fc3Rv
cF9zZXJ2ZXJzX3dpdGhfbG9jaygpCiAKLSAgICAgICAgc2VsZi5fdGVzdF9saXN0X3RpbWluZ19z
dGF0c1tsaXN0X25hbWVdID0gXAotICAgICAgICAgICAobnVtX3Rlc3RzLCBlbGFwc2VkX3RpbWUp
CisgICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ2ZpbmlzaGVkX2xpc3QnLCBsaXN0
X25hbWUsIG51bV90ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFw
c2VkX3RpbWUpCisKKyAgICBkZWYgaGFuZGxlX3N0b3Aoc2VsZiwgc3JjKToKKyAgICAgICAgIiIi
U3RvcCByZWNlaXZlZCAtIG5vIG1vcmUgdGVzdHMgdG8gcnVuLiIiIgorICAgICAgICBzZWxmLl9k
b25lID0gVHJ1ZQogCiAgICAgZGVmIF9ydW5fdGVzdChzZWxmLCB0ZXN0X2lucHV0KToKICAgICAg
ICAgc2VsZi5fc2V0X3VwX3Rlc3QodGVzdF9pbnB1dCkKQEAgLTI5NCw3ICsxOTEsNyBAQCBjbGFz
cyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgICAgIHRlc3RfdGlt
ZW91dF9zZWMgPSBkcml2ZXJfdGltZW91dF9zZWMKIAogICAgICAgICBzdGFydCA9IHRpbWUudGlt
ZSgpCi0gICAgICAgIHNlbGYuX25leHRfdGltZW91dCA9IHN0YXJ0ICsgdGVzdF90aW1lb3V0X3Nl
YworICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCdzdGFydGVkX3Rlc3QnLCB0ZXN0
X2lucHV0LCB0ZXN0X3RpbWVvdXRfc2VjKQogCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucnVu
X3NpbmdseToKICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX3J1bl90ZXN0X2luX2Fub3RoZXJf
dGhyZWFkKHRlc3RfaW5wdXQsCkBAIC0zMDIsNyArMTk5LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhy
ZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXN1bHQg
PSBzZWxmLl9ydW5fdGVzdF9pbl90aGlzX3RocmVhZCh0ZXN0X2lucHV0KQogCi0gICAgICAgIHNl
bGYuX3RlYXJfZG93bl90ZXN0KHRlc3RfaW5wdXQsIHJlc3VsdCkKKyAgICAgICAgc2VsZi5fdGVh
cl9kb3duX3Rlc3QodGVzdF9pbnB1dCwgcmVzdWx0LCB0aW1lLnRpbWUoKSAtIHN0YXJ0KQogCiAg
ICAgZGVmIF9zZXRfdXBfdGVzdChzZWxmLCB0ZXN0X2lucHV0KToKICAgICAgICAgdGVzdF9pbnB1
dC51cmkgPSBzZWxmLl9wb3J0LmZpbGVuYW1lX3RvX3VyaSh0ZXN0X2lucHV0LmZpbGVuYW1lKQpA
QCAtMzcyLDEwICsyNjksNyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFk
KToKICAgICAgICAgaWYgbm90IHNlbGYuX2RyaXZlciBvciBzZWxmLl9kcml2ZXIucG9sbCgpIGlz
IG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVf
ZHJpdmVyKHNlbGYuX3dvcmtlcl9udW1iZXIpCiAgICAgICAgICAgICBzZWxmLl9kcml2ZXIuc3Rh
cnQoKQotCi0gICAgICAgIHRlc3RfcmVzdWx0ID0gc2VsZi5fcnVuX3NpbmdsZV90ZXN0KHRlc3Rf
aW5wdXQsIHNlbGYuX2RyaXZlcikKLSAgICAgICAgc2VsZi5fdGVzdF9yZXN1bHRzLmFwcGVuZCh0
ZXN0X3Jlc3VsdCkKLSAgICAgICAgcmV0dXJuIHRlc3RfcmVzdWx0CisgICAgICAgIHJldHVybiBz
ZWxmLl9ydW5fc2luZ2xlX3Rlc3QodGVzdF9pbnB1dCwgc2VsZi5fZHJpdmVyKQogCiAgICAgZGVm
IF9ydW5fc2luZ2xlX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCwgZHJpdmVyKToKICAgICAgICAgIyBU
aGUgaW1hZ2UgaGFzaCBpcyB1c2VkIHRvIGF2b2lkIGRvaW5nIGFuIGltYWdlIGR1bXAgaWYgdGhl
CkBAIC00NTIsOCArMzQ2LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVh
ZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmV4cGVj
dGVkX2ltYWdlKGZpbGVuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3BvcnQuZXhwZWN0ZWRfY2hlY2tzdW0oZmlsZW5hbWUpKQogCi0gICAgZGVmIF90ZWFy
X2Rvd25fdGVzdChzZWxmLCB0ZXN0X2lucHV0LCByZXN1bHQpOgotICAgICAgICBzZWxmLl9udW1f
dGVzdHMgKz0gMQorICAgIGRlZiBfdGVhcl9kb3duX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCwgcmVz
dWx0LCBlbGFwc2VkX3RpbWUpOgogICAgICAgICBzZWxmLl9iYXRjaF9jb3VudCArPSAxCiAgICAg
ICAgIHNlbGYuX3Rlc3RzX3J1bl9maWxlLndyaXRlKHRlc3RfaW5wdXQuZmlsZW5hbWUgKyAiXG4i
KQogICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUo
dGVzdF9pbnB1dC5maWxlbmFtZSkKQEAgLTQ3MiwzNSArMzY1LDIyIEBAIGNsYXNzIFRlc3RTaGVs
bFRocmVhZChXYXRjaGFibGVUaHJlYWQpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgX2xv
Zy5kZWJ1ZygiJXMgJXMgcGFzc2VkIiAlIChzZWxmLl9uYW1lLCB0ZXN0X25hbWUpKQogCi0gICAg
ICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZS5wdXQocmVzdWx0LmR1bXBzKCkpCisgICAgICAgIHNlbGYu
X2Jyb2tlci5wb3N0X21lc3NhZ2UoJ2ZpbmlzaGVkX3Rlc3QnLCByZXN1bHQsIGVsYXBzZWRfdGlt
ZSkKIAogICAgICAgICBpZiBzZWxmLl9iYXRjaF9zaXplID4gMCBhbmQgc2VsZi5fYmF0Y2hfY291
bnQgPj0gc2VsZi5fYmF0Y2hfc2l6ZToKICAgICAgICAgICAgICMgQm91bmNlIHRoZSBzaGVsbCBh
bmQgcmVzZXQgY291bnQuCiAgICAgICAgICAgICBzZWxmLl9raWxsX2R1bXBfcmVuZGVyX3RyZWUo
KQogICAgICAgICAgICAgc2VsZi5fYmF0Y2hfY291bnQgPSAwCiAKLSAgICAgICAgaWYgc2VsZi5f
dGVzdF9ydW5uZXI6Ci0gICAgICAgICAgICBzZWxmLl90ZXN0X3J1bm5lci51cGRhdGVfc3VtbWFy
eShzZWxmLl9yZXN1bHRfc3VtbWFyeSkKLQogICAgIGRlZiBfc3RhcnRfc2VydmVyc193aXRoX2xv
Y2soc2VsZik6Ci0gICAgICAgIHNlbGYuX2h0dHBfbG9ja193YWl0X2JlZ2luID0gdGltZS50aW1l
KCkKICAgICAgICAgX2xvZy5kZWJ1ZygnQWNxdWlyaW5nIGh0dHAgbG9jayAuLi4nKQogICAgICAg
ICBzZWxmLl9wb3J0LmFjcXVpcmVfaHR0cF9sb2NrKCkKICAgICAgICAgX2xvZy5kZWJ1ZygnU3Rh
cnRpbmcgSFRUUCBzZXJ2ZXIgLi4uJykKICAgICAgICAgc2VsZi5fcG9ydC5zdGFydF9odHRwX3Nl
cnZlcigpCiAgICAgICAgIF9sb2cuZGVidWcoJ1N0YXJ0aW5nIFdlYlNvY2tldCBzZXJ2ZXIgLi4u
JykKICAgICAgICAgc2VsZi5fcG9ydC5zdGFydF93ZWJzb2NrZXRfc2VydmVyKCkKLSAgICAgICAg
c2VsZi5faHR0cF9sb2NrX3dhaXRfZW5kID0gdGltZS50aW1lKCkKICAgICAgICAgc2VsZi5faGF2
ZV9odHRwX2xvY2sgPSBUcnVlCiAKLSAgICBkZWYgX2h0dHBfbG9ja193YWl0X3RpbWUoc2VsZik6
Ci0gICAgICAgICIiIlJldHVybiB0aGUgdGltZSB3aGF0IGh0dHAgbG9ja2luZyB0YWtlcy4iIiIK
LSAgICAgICAgaWYgc2VsZi5faHR0cF9sb2NrX3dhaXRfYmVnaW4gPT0gMDoKLSAgICAgICAgICAg
IHJldHVybiAwCi0gICAgICAgIGlmIHNlbGYuX2h0dHBfbG9ja193YWl0X2VuZCA9PSAwOgotICAg
ICAgICAgICAgcmV0dXJuIHRpbWUudGltZSgpIC0gc2VsZi5faHR0cF9sb2NrX3dhaXRfYmVnaW4K
LSAgICAgICAgcmV0dXJuIHNlbGYuX2h0dHBfbG9ja193YWl0X2VuZCAtIHNlbGYuX2h0dHBfbG9j
a193YWl0X2JlZ2luCi0KICAgICBkZWYgX3N0b3Bfc2VydmVyc193aXRoX2xvY2soc2VsZik6CiAg
ICAgICAgICIiIlN0b3AgdGhlIHNlcnZlcnMgYW5kIHJlbGVhc2UgaHR0cCBsb2NrLiIiIgogICAg
ICAgICBpZiBzZWxmLl9oYXZlX2h0dHBfbG9jazoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Cmlu
ZGV4IGRkODQ3ODg2MTcxZmJlYzMxOGRkMTM5YTY5OTk2MmMzNDM2ZTllMTQuLmRlNTVkNzEwNzFl
ZWRkNzVlNWQyMjdkYjE4M2ZlOTQyZGJmY2JkM2MgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5w
eQpAQCAtNjYsNyArNjYsNyBAQCBpbXBvcnQgdHJhY2ViYWNrCiAKIGZyb20gbGF5b3V0X3BhY2th
Z2UgaW1wb3J0IGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkCiBmcm9tIGxheW91dF9wYWNrYWdlIGlt
cG9ydCBqc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvcgotZnJvbSBsYXlvdXRfcGFja2FnZSBp
bXBvcnQgbWVzc2FnZV9icm9rZXIKK2Zyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1lc3NhZ2Vf
YnJva2VyMiBhcyBtZXNzYWdlX2Jyb2tlcgogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgcHJp
bnRpbmcKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9t
IGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCkBAIC0xMzUsNyArMTM1LDcgQEAg
Y2xhc3MgUmVzdWx0U3VtbWFyeShvYmplY3QpOgogICAgICAgICAiIiJBZGQgYSBUZXN0UmVzdWx0
IGludG8gdGhlIGFwcHJvcHJpYXRlIGJpbi4KIAogICAgICAgICBBcmdzOgotICAgICAgICAgIHJl
c3VsdDogVGVzdFJlc3VsdCBmcm9tIGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLgorICAgICAgICAg
IHJlc3VsdDogVGVzdFJlc3VsdAogICAgICAgICAgIGV4cGVjdGVkOiB3aGV0aGVyIHRoZSByZXN1
bHQgd2FzIHdoYXQgd2UgZXhwZWN0ZWQgaXQgdG8gYmUuCiAgICAgICAgICIiIgogCkBAIC0yMjgs
MTMgKzIyOCwyMiBAQCBkZWYgc3VtbWFyaXplX3VuZXhwZWN0ZWRfcmVzdWx0cyhwb3J0X29iaiwg
ZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwKICAgICByZXR1cm4gcmVzdWx0cwogCiAKLWNs
YXNzIFdvcmtlclN0YXRlKG9iamVjdCk6CitjbGFzcyBfV29ya2VyU3RhdGUob2JqZWN0KToKICAg
ICAiIiJBIGNsYXNzIGZvciB0aGUgVGVzdFJ1bm5lci9tYW5hZ2VyIHRvIHVzZSB0byB0cmFjayB0
aGUgY3VycmVudCBzdGF0ZQogICAgIG9mIHRoZSB3b3JrZXJzLiIiIgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBuYW1lLCBudW1iZXIsIHRocmVhZCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWUsIG51bWJlcik6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5udW1i
ZXIgPSBudW1iZXIKLSAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWQKKyAgICAgICAgc2VsZi5k
b25lID0gRmFsc2UKKyAgICAgICAgc2VsZi5uZXh0X3RpbWVvdXQgPSBOb25lCisgICAgICAgIHNl
bGYud2VkZ2VkID0gRmFsc2UKKyAgICAgICAgc2VsZi5zdGF0cyA9IHt9CisgICAgICAgIHNlbGYu
c3RhdHNbJ25hbWUnXSA9IG5hbWUKKyAgICAgICAgc2VsZi5zdGF0c1snbnVtX3Rlc3RzJ10gPSAw
CisgICAgICAgIHNlbGYuc3RhdHNbJ3RvdGFsX3RpbWUnXSA9IDAKKworICAgIGRlZiBfX3JlcHJf
XyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJfV29ya2VyU3RhdGUoIiArIHN0cihzZWxmLl9fZGlj
dF9fKSArICIpIgogCiAKIGNsYXNzIFRlc3RSdW5uZXI6CkBAIC0yNTcsOSArMjY2LDEyIEBAIGNs
YXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgb3B0aW9uczogYSBkaWN0aW9uYXJ5IG9mIGNvbW1h
bmQgbGluZSBvcHRpb25zCiAgICAgICAgICAgcHJpbnRlcjogYSBQcmludGVyIG9iamVjdCB0byBy
ZWNvcmQgdXBkYXRlcyB0by4KICAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX25hbWUgPSAnVGVz
dFJ1bm5lcicKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi5fb3B0aW9u
cyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fcHJpbnRlciA9IHByaW50ZXIKKyAgICAgICAgc2Vs
Zi5fbWVzc2FnZV9icm9rZXIgPSBOb25lCisgICAgICAgIHNlbGYuVVBEQVRFX0lOVEVSVkFMID0g
MC4wMQogCiAgICAgICAgICMgVGhpcyBtYXBzIHdvcmtlciBuYW1lcyB0byB0aGUgc3RhdGUgd2Ug
YXJlIHRyYWNraW5nIGZvciBlYWNoIG9mIHRoZW0uCiAgICAgICAgIHNlbGYuX3dvcmtlcnMgPSB7
fQpAQCAtMjcxLDkgKzI4MywxNCBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAjIGEgc2V0
IG9mIHRlc3QgZmlsZXMsIGFuZCB0aGUgc2FtZSB0ZXN0cyBhcyBhIGxpc3QKICAgICAgICAgc2Vs
Zi5fdGVzdF9maWxlcyA9IHNldCgpCiAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IE5v
bmUKLSAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlID0gUXVldWUuUXVldWUoKQogICAgICAgICBz
ZWxmLl9yZXRyeWluZyA9IEZhbHNlCiAKKyAgICBkZWYgaXNfZG9uZShzZWxmKToKKyAgICAgICAg
cmV0dXJuIEZhbHNlCisKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X25hbWUKKwogICAgIGRlZiBjb2xsZWN0X3Rlc3RzKHNlbGYsIGFyZ3MsIGxhc3RfdW5leHBlY3Rl
ZF9yZXN1bHRzKToKICAgICAgICAgIiIiRmluZCBhbGwgdGhlIGZpbGVzIHRvIHRlc3QuCiAKQEAg
LTU5NSw5NyArNjEyLDkzIEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICAgIGluIHRo
ZSBmb3JtIHtmaWxlbmFtZTpmaWxlbmFtZSwgdGVzdF9ydW5fdGltZTp0ZXN0X3J1bl90aW1lfQog
ICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IHRvIHBvcHVsYXRlIHdp
dGggdGhlIHJlc3VsdHMKICAgICAgICAgIiIiCisgICAgICAgIG51bV93b3JrZXJzID0gc2VsZi5f
bnVtX3dvcmtlcnMoKQorCisgICAgICAgIHNlbGYuX2N1cnJlbnRfZmlsZV9saXN0ID0gZmlsZV9s
aXN0CisgICAgICAgIHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnkgPSByZXN1bHRfc3VtbWFy
eQogCisgICAgICAgIHNlbGYuX2FsbF9yZXN1bHRzID0gW10KKyAgICAgICAgc2VsZi5fZ3JvdXBf
c3RhdHMgPSB7fQogICAgICAgICBzZWxmLl93b3JrZXJzID0ge30KIAogICAgICAgICBzZWxmLl9w
cmludGVyLnByaW50X3VwZGF0ZSgnU2hhcmRpbmcgdGVzdHMgLi4uJykKLSAgICAgICAgbnVtX3dv
cmtlcnMgPSBzZWxmLl9udW1fd29ya2VycygpCiAgICAgICAgIHRlc3RfbGlzdHMgPSBzZWxmLl9z
aGFyZF90ZXN0cyhmaWxlX2xpc3QsCiAgICAgICAgICAgICBudW1fd29ya2VycyA+IDEgYW5kIG5v
dCBzZWxmLl9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxlbCkKIAotICAgICAgICBi
cm9rZXIgPSBtZXNzYWdlX2Jyb2tlci5nZXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucykKKyAg
ICAgICAgYnJva2VyID0gbWVzc2FnZV9icm9rZXIuZ2V0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlv
bnMsIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX3JlbmRl
cl90cmVlX3RocmVhZC5Xb3JrZXIpCiAgICAgICAgIHNlbGYuX21lc3NhZ2VfYnJva2VyID0gYnJv
a2VyCisgICAgICAgIGZvciB0ZXN0X2xpc3QgaW4gdGVzdF9saXN0czoKKyAgICAgICAgICAgIGJy
b2tlci5wb3N0X21lc3NhZ2UoJ3Rlc3RfbGlzdCcsIHRlc3RfbGlzdFswXSwgdGVzdF9saXN0WzFd
KQogCi0gICAgICAgIGZpbGVuYW1lX3F1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAgICBmb3Ig
aXRlbSBpbiB0ZXN0X2xpc3RzOgotICAgICAgICAgICAgZmlsZW5hbWVfcXVldWUucHV0KGl0ZW0p
CisgICAgICAgICMgVGVsbCB0aGUgd29ya2VycyB0byBzaHV0IGRvd24gYWZ0ZXIgdGhleSdyZSBk
b25lIHJ1bm5pbmcgYWxsIHRoZQorICAgICAgICAjIHRlc3RzLgorICAgICAgICBmb3IgaSBpbiB4
cmFuZ2UobnVtX3dvcmtlcnMpOgorICAgICAgICAgICAgYnJva2VyLnBvc3RfbWVzc2FnZSgnc3Rv
cCcpCiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nICVzIC4u
LicgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyLnBsdXJhbGl6
ZSgnd29ya2VyJywgbnVtX3dvcmtlcnMpKQotICAgICAgICBzZWxmLl9jdXJyZW50X2ZpbGVuYW1l
X3F1ZXVlID0gZmlsZW5hbWVfcXVldWUKLSAgICAgICAgc2VsZi5fY3VycmVudF9yZXN1bHRfc3Vt
bWFyeSA9IHJlc3VsdF9zdW1tYXJ5Ci0KICAgICAgICAgZm9yIHdvcmtlcl9udW1iZXIgaW4geHJh
bmdlKG51bV93b3JrZXJzKToKLSAgICAgICAgICAgIHRocmVhZCA9IGJyb2tlci5zdGFydF93b3Jr
ZXIoc2VsZiwgd29ya2VyX251bWJlcikKLSAgICAgICAgICAgIHcgPSBXb3JrZXJTdGF0ZSh0aHJl
YWQubmFtZSgpLCB3b3JrZXJfbnVtYmVyLCB0aHJlYWQpCi0gICAgICAgICAgICBzZWxmLl93b3Jr
ZXJzW3RocmVhZC5uYW1lKCldID0gdworICAgICAgICAgICAgd29ya2VyX25hbWUgPSBicm9rZXIu
c3RhcnRfd29ya2VyKHdvcmtlcl9udW1iZXIpCisgICAgICAgICAgICB3ID0gX1dvcmtlclN0YXRl
KHdvcmtlcl9uYW1lLCB3b3JrZXJfbnVtYmVyKQorICAgICAgICAgICAgc2VsZi5fd29ya2Vyc1t3
b3JrZXJfbmFtZV0gPSB3CiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoIlN0
YXJ0aW5nIHRlc3RpbmcgLi4uIikKICAgICAgICAga2V5Ym9hcmRfaW50ZXJydXB0ZWQgPSBGYWxz
ZQotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgotICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIGJyb2tlci5ydW5fbWVzc2FnZV9sb29wKHNlbGYpCi0gICAgICAg
ICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgX2xvZy5pbmZv
KCJJbnRlcnJ1cHRlZCwgZXhpdGluZyIpCi0gICAgICAgICAgICAgICAgZm9yIHdvcmtlcl9uYW1l
IGluIHNlbGYuX3dvcmtlcnMua2V5cygpOgotICAgICAgICAgICAgICAgICAgICBicm9rZXIuY2Fu
Y2VsX3dvcmtlcih3b3JrZXJfbmFtZSkKLSAgICAgICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1
cHRlZCA9IFRydWUKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAjIFVuZXhw
ZWN0ZWQgZXhjZXB0aW9uOyBkb24ndCB0cnkgdG8gY2xlYW4gdXAgd29ya2Vycy4KLSAgICAgICAg
ICAgICAgICBfbG9nLmluZm8oIkV4Y2VwdGlvbiByYWlzZWQsIGV4aXRpbmciKQotICAgICAgICAg
ICAgICAgIHJhaXNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRp
b25zLmRyeV9ydW46CisgICAgICAgICAgICAgICAgZG9uZSA9IHNlbGYuX2NoZWNrX29uX3dvcmtl
cnMoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBkb25lOgorICAgICAgICAgICAgICAgICAgICBi
cm9rZXIucnVuX21lc3NhZ2VfbG9vcCgpCisKKyAgICAgICAgICAgICAgICBmb3IgdyBpbiBzZWxm
Ll93b3JrZXJzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgdy53ZWRnZWQg
YW5kIGJyb2tlci53b3JrZXJfaXNfYWxpdmUody5uYW1lKToKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyb2tlci5qb2luX3dvcmtlcih3Lm5hbWUsIDAuNSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFzc2VydCBub3QgYnJva2VyLndvcmtlcl9pc19hbGl2ZSh3Lm5hbWUpCisKKyAgICAgICAg
ZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgX2xvZy5pbmZvKCJJbnRlcnJ1
cHRlZCwgZXhpdGluZyIpCisgICAgICAgICAgICBmb3Igd29ya2VyX25hbWUgaW4gc2VsZi5fd29y
a2Vycy5rZXlzKCk6CisgICAgICAgICAgICAgICAgYnJva2VyLmNhbmNlbF93b3JrZXIod29ya2Vy
X25hbWUpCisgICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAg
ZXhjZXB0OgorICAgICAgICAgICAgIyBVbmV4cGVjdGVkIGV4Y2VwdGlvbjsgZG9uJ3QgdHJ5IHRv
IGNsZWFuIHVwIHdvcmtlcnMuCisgICAgICAgICAgICBfbG9nLmluZm8oIkV4Y2VwdGlvbiByYWlz
ZWQsIGV4aXRpbmciKQorICAgICAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIgPSBOb25lCisg
ICAgICAgICAgICByYWlzZQogCi0gICAgICAgIHRocmVhZF90aW1pbmdzLCB0ZXN0X3RpbWluZ3Ms
IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gXAotICAgICAgICAgICAgc2VsZi5fY29sbGVjdF90
aW1pbmdfaW5mbyhzZWxmLl93b3JrZXJzKQogICAgICAgICBzZWxmLl9tZXNzYWdlX2Jyb2tlciA9
IE5vbmUKLQotICAgICAgICByZXR1cm4gKGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGlt
aW5ncywgdGVzdF90aW1pbmdzLAotICAgICAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1p
bmdzKQorICAgICAgICB0aHJlYWRfdGltaW5ncyA9IFt3LnN0YXRzIGZvciB3IGluIHNlbGYuX3dv
cmtlcnMudmFsdWVzKCldCisgICAgICAgIHJldHVybiAoa2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRo
cmVhZF90aW1pbmdzLAorICAgICAgICAgICAgICAgIHNlbGYuX2dyb3VwX3N0YXRzLCBzZWxmLl9h
bGxfcmVzdWx0cykKIAogICAgIGRlZiBfY2hlY2tfb25fd29ya2VycyhzZWxmKToKLSAgICAgICAg
IiIiUmV0dXJucyBUcnVlIGlmZiBhbGwgdGhlIHdvcmtlcnMgaGF2ZSBlaXRoZXIgY29tcGxldGVk
IG9yIHdlZGdlZC4iIiIKLQotICAgICAgICAjIExvb3AgdGhyb3VnaCBhbGwgdGhlIHRocmVhZHMg
d2FpdGluZyBmb3IgdGhlbSB0byBmaW5pc2guCi0gICAgICAgIHNvbWVfdGhyZWFkX2lzX2FsaXZl
ID0gVHJ1ZQotICAgICAgICB3aGlsZSBzb21lX3RocmVhZF9pc19hbGl2ZToKLSAgICAgICAgICAg
IHNvbWVfdGhyZWFkX2lzX2FsaXZlID0gRmFsc2UKLSAgICAgICAgICAgIHQgPSB0aW1lLnRpbWUo
KQotICAgICAgICAgICAgZm9yIHdvcmtlciBpbiBzZWxmLl93b3JrZXJzLnZhbHVlcygpOgotICAg
ICAgICAgICAgICAgIHRocmVhZCA9IHdvcmtlci50aHJlYWQKLSAgICAgICAgICAgICAgICBleGNl
cHRpb25faW5mbyA9IHRocmVhZC5leGNlcHRpb25faW5mbygpCi0gICAgICAgICAgICAgICAgaWYg
ZXhjZXB0aW9uX2luZm8gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICMgUmUtcmFp
c2UgdGhlIHRocmVhZCdzIGV4Y2VwdGlvbiBoZXJlIHRvIG1ha2UgaXQKLSAgICAgICAgICAgICAg
ICAgICAgIyBjbGVhciB0aGF0IHRlc3Rpbmcgd2FzIGFib3J0ZWQuIE90aGVyd2lzZSwKLSAgICAg
ICAgICAgICAgICAgICAgIyB0aGUgdGVzdHMgdGhhdCBkaWQgbm90IHJ1biB3b3VsZCBiZSBhc3N1
bWVkCi0gICAgICAgICAgICAgICAgICAgICMgdG8gaGF2ZSBwYXNzZWQuCi0gICAgICAgICAgICAg
ICAgICAgIHJhaXNlIGV4Y2VwdGlvbl9pbmZvWzBdLCBleGNlcHRpb25faW5mb1sxXSwgZXhjZXB0
aW9uX2luZm9bMl0KLQotICAgICAgICAgICAgICAgIGlmIHRocmVhZC5pc0FsaXZlKCk6Ci0gICAg
ICAgICAgICAgICAgICAgIHNvbWVfdGhyZWFkX2lzX2FsaXZlID0gVHJ1ZQotICAgICAgICAgICAg
ICAgICAgICBuZXh0X3RpbWVvdXQgPSB0aHJlYWQubmV4dF90aW1lb3V0KCkKLSAgICAgICAgICAg
ICAgICAgICAgaWYgbmV4dF90aW1lb3V0IGFuZCB0ID4gbmV4dF90aW1lb3V0OgotICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIubG9nX3dlZGdlZF93b3JrZXIod29y
a2VyLm5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQuY2xlYXJfbmV4dF90aW1l
b3V0KCkKLQotICAgICAgICAgICAgc2VsZi51cGRhdGVfc3VtbWFyeShzZWxmLl9jdXJyZW50X3Jl
c3VsdF9zdW1tYXJ5KQotCi0gICAgICAgICAgICBpZiBzb21lX3RocmVhZF9pc19hbGl2ZToKLSAg
ICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCi0KLSAgICBkZWYgX2NvbGxlY3RfdGltaW5n
X2luZm8oc2VsZiwgd29ya2Vycyk6Ci0gICAgICAgIHRlc3RfdGltaW5ncyA9IHt9Ci0gICAgICAg
IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gW10KLSAgICAgICAgdGhyZWFkX3RpbWluZ3MgPSBb
XQotCi0gICAgICAgIGZvciB3IGluIHdvcmtlcnMudmFsdWVzKCk6Ci0gICAgICAgICAgICB0aHJl
YWQgPSB3LnRocmVhZAotICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MuYXBwZW5kKHsnbmFtZSc6
IHRocmVhZC5uYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudW1f
dGVzdHMnOiB0aHJlYWQuZ2V0X251bV90ZXN0cygpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAndG90YWxfdGltZSc6IHRocmVhZC5nZXRfdG90YWxfdGltZSgpfSkKLSAgICAg
ICAgICAgIHRlc3RfdGltaW5ncy51cGRhdGUodGhyZWFkLmdldF90ZXN0X2dyb3VwX3RpbWluZ19z
dGF0cygpKQotICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MuZXh0ZW5kKHRocmVh
ZC5nZXRfdGVzdF9yZXN1bHRzKCkpCi0KLSAgICAgICAgcmV0dXJuICh0aHJlYWRfdGltaW5ncywg
dGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncykKKyAgICAgICAgIiIiUmV0dXJu
cyB0cnVlIGlmZiBhbGwgdGhlIHdvcmtlcnMgaGF2ZSBlaXRoZXIgY29tcGxldGVkIG9yIHdlZGdl
ZC4iIiIKKyAgICAgICAgZG9uZSA9IFRydWUKKyAgICAgICAgdCA9IHRpbWUudGltZSgpCisgICAg
ICAgIGJyb2tlciA9IHNlbGYuX21lc3NhZ2VfYnJva2VyCisgICAgICAgIGZvciB3IGluIHNlbGYu
X3dvcmtlcnMudmFsdWVzKCk6CisgICAgICAgICAgICBpZiBub3Qgdy5kb25lIGFuZCBub3Qgdy53
ZWRnZWQ6CisgICAgICAgICAgICAgICAgbmV4dF90aW1lb3V0ID0gdy5uZXh0X3RpbWVvdXQKKyAg
ICAgICAgICAgICAgICBXRURHRV9QQURESU5HID0gNDAuMAorICAgICAgICAgICAgICAgIGlmIG5l
eHRfdGltZW91dCBhbmQgdCA+IG5leHRfdGltZW91dCArIFdFREdFX1BBRERJTkc6CisgICAgICAg
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgICAgICAgICAgICAgIGJyb2tlci5s
b2dfd2VkZ2VkX3dvcmtlcih3Lm5hbWUsIHcuY3VycmVudF90ZXN0X25hbWUpCisgICAgICAgICAg
ICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgICAgICAgICAgICAgIHcud2VkZ2VkID0g
VHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBG
YWxzZQorCisgICAgICAgIGlmIGRvbmU6CisgICAgICAgICAgICBpZiBhbnkoW3cud2VkZ2VkIGZv
ciB3YyBpbiBzZWxmLl93b3JrZXJzXSk6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykK
KyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdSZW1haW5pbmcgd29ya2VycyBhcmUgd2VkZ2Vk
LCBiYWlsaW5nIG91dC4nKQorICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJ05vIHdlZGdlZCB0aHJlYWRz
JykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyb2tlci5hZGRfdGltZXIoc2VsZi5fY2hl
Y2tfb25fd29ya2Vycywgc2VsZi5VUERBVEVfSU5URVJWQUwpCisgICAgICAgIHJldHVybiBkb25l
CiAKICAgICBkZWYgbmVlZHNfaHR0cChzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVy
IHRoZSB0ZXN0IHJ1bm5lciBuZWVkcyBhbiBIVFRQIHNlcnZlci4iIiIKQEAgLTgxOSwyMyArODMy
LDUxIEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIF9sb2cuZGVidWcoInN0b3BwaW5nIGhl
bHBlciIpCiAgICAgICAgIHNlbGYuX3BvcnQuc3RvcF9oZWxwZXIoKQogCi0gICAgZGVmIHVwZGF0
ZV9zdW1tYXJ5KHNlbGYsIHJlc3VsdF9zdW1tYXJ5KToKKyAgICBkZWYgaGFuZGxlX3N0YXJ0ZWRf
dGVzdChzZWxmLCBzcmMsIHRlc3RfaW5mbywgaGFuZ190aW1lb3V0KToKKyAgICAgICAgdyA9IHNl
bGYuX3dvcmtlcnNbc3JjXQorICAgICAgICB3LmN1cnJlbnRfdGVzdF9uYW1lID0gc2VsZi5fcG9y
dC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKAorICAgICAgICAgICAgdGVzdF9pbmZvLmZpbGVuYW1l
KQorICAgICAgICB3Lm5leHRfdGltZW91dCA9IHRpbWUudGltZSgpICsgaGFuZ190aW1lb3V0CisK
KyAgICBkZWYgaGFuZGxlX2RvbmUoc2VsZiwgc3JjKToKKyAgICAgICAgdyA9IHNlbGYuX3dvcmtl
cnNbc3JjXQorICAgICAgICB3LmRvbmUgPSBUcnVlCisgICAgICAgIHBhc3MKKworICAgIGRlZiBo
YW5kbGVfZmluaXNoZWRfdGVzdChzZWxmLCBzcmMsIHJlc3VsdCwgZWxhcHNlZF90aW1lKToKICAg
ICAgICAgIiIiVXBkYXRlIHRoZSBzdW1tYXJ5IGFuZCBwcmludCByZXN1bHRzIHdpdGggYW55IGNv
bXBsZXRlZCB0ZXN0cy4iIiIKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToK
LSAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdC5sb2Fkcyhz
ZWxmLl9yZXN1bHRfcXVldWUuZ2V0X25vd2FpdCgpKQotICAgICAgICAgICAgZXhjZXB0IFF1ZXVl
LkVtcHR5OgotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICBleHBlY3RlZCA9
IHNlbGYuX2V4cGVjdGF0aW9ucy5tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdCgKLSAgICAgICAg
ICAgICAgICByZXN1bHQuZmlsZW5hbWUsIHJlc3VsdC50eXBlLCBzZWxmLl9vcHRpb25zLnBpeGVs
X3Rlc3RzKQotICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkuYWRkKHJlc3VsdCwgZXhwZWN0ZWQp
Ci0gICAgICAgICAgICBleHBfc3RyID0gc2VsZi5fZXhwZWN0YXRpb25zLmdldF9leHBlY3RhdGlv
bnNfc3RyaW5nKAotICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZSkKLSAgICAgICAgICAg
IGdvdF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMuZXhwZWN0YXRpb25fdG9fc3RyaW5nKHJlc3Vs
dC50eXBlKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF90ZXN0X3Jlc3VsdChyZXN1
bHQsIGV4cGVjdGVkLCBleHBfc3RyLCBnb3Rfc3RyKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRl
ci5wcmludF9wcm9ncmVzcyhyZXN1bHRfc3VtbWFyeSwgc2VsZi5fcmV0cnlpbmcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkK
KyAgICAgICAgdyA9IHNlbGYuX3dvcmtlcnNbc3JjXQorICAgICAgICB3Lm5leHRfdGltZW91dCA9
IE5vbmUKKyAgICAgICAgdy5jdXJyZW50X3Rlc3QgPSBOb25lCisKKyAgICAgICAgaWYgdy53ZWRn
ZWQ6CisgICAgICAgICAgICAjIEhtbS4gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGlmIHdlIGhhdmUg
b3VyIHRpbWVvdXRzCisgICAgICAgICAgICAjIHR1bmVkIHByb3Blcmx5LgorICAgICAgICAgICAg
X2xvZy5lcnJvcigiJXMgdW53ZWRnZWQiLCB3Lm5hbWUpCisKKyAgICAgICAgc2VsZi5fdXBkYXRl
X3dvcmtlcl9zdGF0cyhzcmMsIHJlc3VsdCwgZWxhcHNlZF90aW1lKQorCisgICAgICAgIGV4cGVj
dGVkID0gc2VsZi5fZXhwZWN0YXRpb25zLm1hdGNoZXNfYW5fZXhwZWN0ZWRfcmVzdWx0KAorICAg
ICAgICAgICAgcmVzdWx0LmZpbGVuYW1lLCByZXN1bHQudHlwZSwgc2VsZi5fb3B0aW9ucy5waXhl
bF90ZXN0cykKKyAgICAgICAgZXhwX3N0ciA9IHNlbGYuX2V4cGVjdGF0aW9ucy5nZXRfZXhwZWN0
YXRpb25zX3N0cmluZygKKyAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZSkKKyAgICAgICAgZ290
X3N0ciA9IHNlbGYuX2V4cGVjdGF0aW9ucy5leHBlY3RhdGlvbl90b19zdHJpbmcocmVzdWx0LnR5
cGUpCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGVzdF9yZXN1bHQocmVzdWx0LCBleHBl
Y3RlZCwgZXhwX3N0ciwgZ290X3N0cikKKworICAgICAgICBzZWxmLl9jdXJyZW50X3Jlc3VsdF9z
dW1tYXJ5LmFkZChyZXN1bHQsIGV4cGVjdGVkKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50
X3Byb2dyZXNzKHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1hcnksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmV0cnlpbmcsIHNlbGYuX3Rlc3RfZmlsZXNfbGlz
dCkKKworICAgIGRlZiBoYW5kbGVfZmluaXNoZWRfbGlzdChzZWxmLCBzcmMsIGxpc3RfbmFtZSwg
bnVtX3Rlc3RzLCBlbGFwc2VkX3RpbWUpOgorICAgICAgICBzZWxmLl9ncm91cF9zdGF0c1tsaXN0
X25hbWVdID0gKG51bV90ZXN0cywgZWxhcHNlZF90aW1lKQorCisgICAgZGVmIGhhbmRsZV9leGNl
cHRpb24oc2VsZiwgc3JjLCBleGNlcHRpb25faW5mbyk6CisgICAgICAgIHJhaXNlIGV4Y2VwdGlv
bl9pbmZvCisKKyAgICBkZWYgX3VwZGF0ZV93b3JrZXJfc3RhdHMoc2VsZiwgc3JjLCByZXN1bHQs
IGVsYXBzZWRfdGltZSk6CisgICAgICAgIHNlbGYuX3dvcmtlcnNbc3JjXS5zdGF0c1sndG90YWxf
dGltZSddICs9IGVsYXBzZWRfdGltZQorICAgICAgICBzZWxmLl93b3JrZXJzW3NyY10uc3RhdHNb
J251bV90ZXN0cyddICs9IDEKKyAgICAgICAgc2VsZi5fYWxsX3Jlc3VsdHMuYXBwZW5kKHJlc3Vs
dCkKIAogICAgIGRlZiBfY2xvYmJlcl9vbGRfcmVzdWx0cyhzZWxmKToKICAgICAgICAgIyBKdXN0
IGNsb2JiZXIgdGhlIGFjdHVhbCB0ZXN0IHJlc3VsdHMgZGlyZWN0b3JpZXMgc2luY2UgdGhlIG90
aGVyCkBAIC0xMDE1LDggKzEwNTYsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgIGRlZiBfcHJp
bnRfYWdncmVnYXRlX3Rlc3Rfc3RhdGlzdGljcyhzZWxmLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
cyk6CiAgICAgICAgICIiIlByaW50cyBhZ2dyZWdhdGUgc3RhdGlzdGljcyAoZS5nLiBtZWRpYW4s
IG1lYW4sIGV0Yy4pIGZvciBhbGwgdGVzdHMuCiAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgaW5k
aXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2YgZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQuVGVz
dFN0YXRzCi0gICAgICAgICAgICAgIGZvciBhbGwgdGVzdHMuCisgICAgICAgICAgaW5kaXZpZHVh
bF90ZXN0X3RpbWluZ3M6IExpc3Qgb2YgVGVzdFJlc3VsdHMgZm9yIGFsbCB0ZXN0cy4KICAgICAg
ICAgIiIiCiAgICAgICAgIHRlc3RfdHlwZXMgPSBbXSAgIyBVbml0IHRlc3RzIGRvbid0IGFjdHVh
bGx5IHByb2R1Y2UgYW55IHRpbWluZ3MuCiAgICAgICAgIGlmIGluZGl2aWR1YWxfdGVzdF90aW1p
bmdzOgpAQCAtMTQ5Miw2ICsxNTMyLDggQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAg
ICAgICAgICAgIGhlbHA9IkRvbid0IHVzZSBoYXJkd2FyZS1hY2NlbGVyYXRlZCAyRCBDYW52YXMg
Y2FsbHMiKSwKICAgICBdCiAKKyAgICBtZXNzYWdlX2Jyb2tlcl9vcHRpb25zID0gbWVzc2FnZV9i
cm9rZXIucnVudGltZV9vcHRpb25zKCkKKwogICAgICMgTWlzc2luZyBNYWMtc3BlY2lmaWMgb2xk
LXJ1bi13ZWJraXQtdGVzdHMgb3B0aW9uczoKICAgICAjIEZJWE1FOiBOZWVkOiAtZywgLS1ndWFy
ZCBmb3IgZ3VhcmQgbWFsbG9jIHN1cHBvcnQgb24gTWFjLgogICAgICMgRklYTUU6IE5lZWQ6IC1s
IC0tbGVha3MgICAgRW5hYmxlIGxlYWtzIGNoZWNraW5nLgpAQCAtMTYxMiw5ICsxNjU0LDYgQEAg
ZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICAgICAgICAgIGhlbHA9Ik51bWJlciBvZiBE
dW1wUmVuZGVyVHJlZXMgdG8gcnVuIGluIHBhcmFsbGVsLiIpLAogICAgICAgICAjIEZJWE1FOiBE
aXNwbGF5IGRlZmF1bHQgbnVtYmVyIG9mIGNoaWxkIHByb2Nlc3NlcyB0aGF0IHdpbGwgcnVuLgog
ICAgICAgICAjIEZJWE1FOiBEaXNwbGF5IGRlZmF1bHQgdGhyZWFkaW5nIG1vZGVsICh3aWxsIGJl
IHBvcnQtc3BlY2lmaWMpLgotICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS13b3JrZXIt
bW9kZWwiLCBhY3Rpb249InN0b3JlIiwKLSAgICAgICAgICAgIGhlbHA9KCJjb250cm9scyB3b3Jr
ZXIgbW9kZWwuIFZhbGlkIHZhbHVlcyBhcmUgIgotICAgICAgICAgICAgIidpbmxpbmUnIGFuZCAn
dGhyZWFkcycuIikpLAogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1leHBlcmltZW50
YWwtZnVsbHktcGFyYWxsZWwiLAogICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVm
YXVsdD1GYWxzZSwKICAgICAgICAgICAgIGhlbHA9InJ1biBhbGwgdGVzdHMgaW4gcGFyYWxsZWwi
KSwKQEAgLTE2NjUsNiArMTcwNCw3IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CiAgICAg
XQogCiAgICAgb3B0aW9uX2xpc3QgPSAoY29uZmlndXJhdGlvbl9vcHRpb25zICsgcHJpbnRfb3B0
aW9ucyArCisgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9icm9rZXJfb3B0aW9ucyArCiAgICAg
ICAgICAgICAgICAgICAgY2hyb21pdW1fb3B0aW9ucyArIHJlc3VsdHNfb3B0aW9ucyArIHRlc3Rf
b3B0aW9ucyArCiAgICAgICAgICAgICAgICAgICAgbWlzY19vcHRpb25zICsgcmVzdWx0c19qc29u
X29wdGlvbnMgKwogICAgICAgICAgICAgICAgICAgIG9sZF9ydW5fd2Via2l0X3Rlc3RzX2NvbXBh
dCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGQzMjVh
MWM5NTU1OWQ1OTE1MzE2MmZlYWFkZTJkODBlOTJhOGE2MjUuLjA4ZGI2N2I1NGFmMThkYTY4ODIx
MmZmNWQ5YzUwN2NiOWZmM2VmMzkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191
bml0dGVzdC5weQpAQCAtMjgyLDggKzI4MiwxNiBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9ydW5fZm9yY2Uoc2VsZik6CiAgICAgICAgICMgVGhp
cyByYWlzZXMgYW4gZXhjZXB0aW9uIGJlY2F1c2Ugd2UgcnVuCi0gICAgICAgICMgZmFpbHVyZXMv
ZXhwZWN0ZWQvZXhjZXB0aW9uLmh0bWwsIHdoaWNoIGlzIG5vcm1hbGx5IFNLSVBwZWQuCi0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmdfcnVuLCBbJy0tZm9yY2Un
XSkKKyAgICAgICAgIyBmYWlsdXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRtbCBhbmQKKyAgICAg
ICAgIyBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZCwgd2hpY2ggYXJlIG5vcm1hbGx5IFNLSVBw
ZWQuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxvZ2dpbmdfcnVuKFsnLS1mb3JjZSddKQor
ICAgICAgICAgICAgdGVzdF9wYXNzZWQgPSBGYWxzZQorICAgICAgICBleGNlcHQgVmFsdWVFcnJv
cjoKKyAgICAgICAgICAgIHRlc3RfcGFzc2VkID0gVHJ1ZQorICAgICAgICBleGNlcHQgS2V5Ym9h
cmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICB0ZXN0X3Bhc3NlZCA9IFRydWUKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHRlc3RfcGFzc2VkKQogCiAgICAgZGVmIHRlc3RfcnVuX3BhcnQoc2VsZik6
CiAgICAgICAgICMgVGVzdCB0aGF0IHdlIGFjdHVhbGx5IHNlbGVjdCB0aGUgcmlnaHQgcGFydAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75681</attachid>
            <date>2010-12-06 05:32:52 -0800</date>
            <delta_ts>2010-12-14 20:51:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50375-20101206053251.patch</filename>
            <type>text/plain</type>
            <size>33650</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1NTc0YTIzZWE1NWI5MDkzM2U2ZTg4OWQ0Zjc4OTA3MWQ4MWU0NDJiLi5jZDZmNmY1
YjZjMjMxODM3ZTUzOWIyYjQ2YzhmMWFmMTk5NGVmOTAyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMTItMDYgIERpcmsgUHJhbmtlICA8ZHByYW5la0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGFjdHVhbGx5IGltcGxlbWVudCBtZXNzYWdpbmcgYmV0d2VlbgorICAgICAgICB0aHJl
YWRzLiBUaGlzIHBhdGNoIHN3aXRjaGVzIG5yd3QgdG8gdXNlIHRoZSBtZXNzYWdlX2Jyb2tlcjIK
KyAgICAgICAgbW9kdWxlLgorICAgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGRlcGVuZHMg
b24gYnVnIDUwNTU3LCB3aGljaCBpbnRyb2R1Y2VzIHRoYXQgbW9kdWxlLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDM3NQorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJf
dHJlZV90aHJlYWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5OgorCiAyMDEwLTEyLTA2ICBEaXJrIFBy
YW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1w
X3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCA4YzViYzExYmNlM2ZlNDQ5Y2ExZGQ3YTFjZDkw
NTk5NzA5NWZkNTRlLi42MzhmNDVkOWQ5ZjU1NTc1MDgwMGVkOGFiMTlkMWIwYjI2ZmVlZGE3IDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90
cmVlX3RocmVhZC5weQpAQCAtNDIsMTAgKzQyLDggQEAgaW1wb3J0IGNvZGVjcwogaW1wb3J0IGNv
cHkKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKLWltcG9ydCBRdWV1ZQogaW1wb3J0IHNpZ25h
bAogaW1wb3J0IHN5cwotaW1wb3J0IHRocmVhZAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRp
bWUKIApAQCAtNTQsNiArNTIsNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0X3R5
cGVzIGltcG9ydCBpbWFnZV9kaWZmCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0X3R5
cGVzIGltcG9ydCB0ZXN0X3R5cGVfYmFzZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudGVz
dF90eXBlcyBpbXBvcnQgdGV4dF9kaWZmCiAKK2ltcG9ydCBtZXNzYWdlX2Jyb2tlcjIgYXMgbWVz
c2FnZV9icm9rZXIKIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBpbXBvcnQgdGVzdF9vdXRwdXQKIGlt
cG9ydCB0ZXN0X3Jlc3VsdHMKQEAgLTYyLDc4ICs2MSwyMSBAQCBfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS4iCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgImR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkIikKIAogCi1jbGFzcyBXYXRj
aGFibGVUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgIiIiVGhpcyBjbGFzcyBhYnN0cmFj
dHMgYW4gaW50ZXJmYWNlIHVzZWQgYnkKLSAgICBydW5fd2Via2l0X3Rlc3RzLlRlc3RSdW5uZXIu
X3dhaXRfZm9yX3RocmVhZHNfdG9fZmluaXNoIGZvciB0aHJlYWQKLSAgICBtYW5hZ2VtZW50LiIi
IgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2lu
aXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9jYW5jZWxlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYu
X2V4Y2VwdGlvbl9pbmZvID0gTm9uZQotICAgICAgICBzZWxmLl9uZXh0X3RpbWVvdXQgPSBOb25l
Ci0gICAgICAgIHNlbGYuX3RocmVhZF9pZCA9IE5vbmUKLQotICAgIGRlZiBjYW5jZWwoc2VsZik6
Ci0gICAgICAgICIiIlNldCBhIGZsYWcgdGVsbGluZyB0aGlzIHRocmVhZCB0byBxdWl0LiIiIgot
ICAgICAgICBzZWxmLl9jYW5jZWxlZCA9IFRydWUKLQotICAgIGRlZiBjbGVhcl9uZXh0X3RpbWVv
dXQoc2VsZik6Ci0gICAgICAgICIiIk1hcmsgYSBmbGFnIHRlbGxpbmcgdGhpcyB0aHJlYWQgdG8g
c3RvcCBzZXR0aW5nIHRpbWVvdXRzLiIiIgotICAgICAgICBzZWxmLl90aW1lb3V0ID0gMAotCi0g
ICAgZGVmIGV4Y2VwdGlvbl9pbmZvKHNlbGYpOgotICAgICAgICAiIiJJZiBydW4oKSB0ZXJtaW5h
dGVkIG9uIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiwgcmV0dXJuIGl0IGhlcmUKLSAgICAgICAgKCh0
eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKSB0dXBsZSkuCi0gICAgICAgIFJldHVybnMgTm9uZSBpZiBy
dW4oKSB0ZXJtaW5hdGVkIG5vcm1hbGx5LiBNZWFudCB0byBiZSBjYWxsZWQgYWZ0ZXIKLSAgICAg
ICAgam9pbmluZyB0aGlzIHRocmVhZC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4Y2VwdGlv
bl9pbmZvCi0KLSAgICBkZWYgaWQoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhIHRocmVhZCBp
ZGVudGlmaWVyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fdGhyZWFkX2lkCi0KLSAgICBkZWYg
bmV4dF90aW1lb3V0KHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIHRpbWUgdGhlIHRlc3Qg
aXMgc3VwcG9zZWQgdG8gZmluaXNoIGJ5LiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbmV4dF90
aW1lb3V0Ci0KLQotY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMsIHdvcmtlcl9udW1iZXIsCi0gICAgICAg
ICAgICAgICAgIGZpbGVuYW1lX2xpc3RfcXVldWUsIHJlc3VsdF9xdWV1ZSk6Ci0gICAgICAgICIi
IkluaXRpYWxpemUgYWxsIHRoZSBsb2NhbCBzdGF0ZSBmb3IgdGhpcyBEdW1wUmVuZGVyVHJlZSB0
aHJlYWQuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBwb3J0OiBpbnRlcmZhY2UgdG8gcG9y
dC1zcGVjaWZpYyBob29rcwotICAgICAgICAgIG9wdGlvbnM6IGNvbW1hbmQgbGluZSBvcHRpb25z
IGFyZ3VtZW50IGZyb20gb3B0cGFyc2UKLSAgICAgICAgICB3b3JrZXJfbnVtYmVyOiBpZGVudGlm
aWVyIGZvciBhIHBhcnRpY3VsYXIgd29ya2VyIHRocmVhZC4KLSAgICAgICAgICBmaWxlbmFtZV9s
aXN0X3F1ZXVlOiBBIHRocmVhZCBzYWZlIFF1ZXVlIGNsYXNzIHRoYXQgY29udGFpbnMgbGlzdHMK
LSAgICAgICAgICAgICAgb2YgdHVwbGVzIG9mIChmaWxlbmFtZSwgdXJpKSBwYWlycy4KLSAgICAg
ICAgICByZXN1bHRfcXVldWU6IEEgdGhyZWFkIHNhZmUgUXVldWUgY2xhc3MgdGhhdCB3aWxsIGNv
bnRhaW4KLSAgICAgICAgICAgICAgc2VyaWFsaXplZCBUZXN0UmVzdWx0IG9iamVjdHMuCi0gICAg
ICAgICIiIgotICAgICAgICBXYXRjaGFibGVUaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAg
c2VsZi5fcG9ydCA9IHBvcnQKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKK2NsYXNz
IFdvcmtlcihtZXNzYWdlX2Jyb2tlci5DbGllbnRJbnRlcmZhY2UpOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBicm9rZXIsIHdvcmtlcl9udW1iZXIpOgorICAgICAgICBzZWxmLl9icm9rZXIgPSBi
cm9rZXIKICAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIKICAgICAg
ICAgc2VsZi5fbmFtZSA9ICd3b3JrZXIvJWQnICUgd29ya2VyX251bWJlcgotICAgICAgICBzZWxm
Ll9maWxlbmFtZV9saXN0X3F1ZXVlID0gZmlsZW5hbWVfbGlzdF9xdWV1ZQotICAgICAgICBzZWxm
Ll9yZXN1bHRfcXVldWUgPSByZXN1bHRfcXVldWUKIAorICAgICAgICBzZWxmLl9jYW5jZWxlZCA9
IEZhbHNlCisgICAgICAgIHNlbGYuX2RvbmUgPSBGYWxzZQorCisgICAgICAgIHNlbGYuX3BvcnQg
PSBicm9rZXIucG9ydCgpCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBicm9rZXIub3B0aW9ucygp
CiAgICAgICAgIHNlbGYuX2JhdGNoX2NvdW50ID0gMAogICAgICAgICBzZWxmLl9iYXRjaF9zaXpl
ID0gc2VsZi5fb3B0aW9ucy5iYXRjaF9zaXplCiAgICAgICAgIHNlbGYuX2RyaXZlciA9IE5vbmUK
ICAgICAgICAgc2VsZi5faGF2ZV9odHRwX2xvY2sgPSBGYWxzZQotCi0gICAgICAgIHNlbGYuX3Rl
c3RfcnVubmVyID0gTm9uZQotICAgICAgICBzZWxmLl9yZXN1bHRfc3VtbWFyeSA9IE5vbmUKLSAg
ICAgICAgc2VsZi5fdGVzdF9saXN0X3RpbWluZ19zdGF0cyA9IHt9Ci0gICAgICAgIHNlbGYuX3Rl
c3RfcmVzdWx0cyA9IFtdCi0gICAgICAgIHNlbGYuX251bV90ZXN0cyA9IDAKLSAgICAgICAgc2Vs
Zi5fc3RhcnRfdGltZSA9IDAKLSAgICAgICAgc2VsZi5fc3RvcF90aW1lID0gMAotICAgICAgICBz
ZWxmLl9odHRwX2xvY2tfd2FpdF9iZWdpbiA9IDAKLSAgICAgICAgc2VsZi5faHR0cF9sb2NrX3dh
aXRfZW5kID0gMAotCiAgICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMgPSBbXQogICAgICAgICBmb3Ig
Y2xzIGluIHNlbGYuX2dldF90ZXN0X3R5cGVfY2xhc3NlcygpOgogICAgICAgICAgICAgc2VsZi5f
dGVzdF90eXBlcy5hcHBlbmQoY2xzKHNlbGYuX3BvcnQsCkBAIC0xNTQsNyArOTYsNiBAQCBjbGFz
cyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgdGVzdF9hcmdzID0g
dGVzdF90eXBlX2Jhc2UuVGVzdEFyZ3VtZW50cygpCiAgICAgICAgIHRlc3RfYXJncy5uZXdfYmFz
ZWxpbmUgPSBzZWxmLl9vcHRpb25zLm5ld19iYXNlbGluZQogICAgICAgICB0ZXN0X2FyZ3MucmVz
ZXRfcmVzdWx0cyA9IHNlbGYuX29wdGlvbnMucmVzZXRfcmVzdWx0cwotCiAgICAgICAgIHJldHVy
biB0ZXN0X2FyZ3MKIAogICAgIGRlZiBfZ2V0X3Rlc3RfdHlwZV9jbGFzc2VzKHNlbGYpOgpAQCAt
MTYzLDg4ICsxMDQsMzkgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6
CiAgICAgICAgICAgICBjbGFzc2VzLmFwcGVuZChpbWFnZV9kaWZmLkltYWdlRGlmZikKICAgICAg
ICAgcmV0dXJuIGNsYXNzZXMKIAotICAgIGRlZiBnZXRfdGVzdF9ncm91cF90aW1pbmdfc3RhdHMo
c2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgdGVzdCBncm91
cCB0byBhIHR1cGxlIG9mCi0gICAgICAgIChudW1iZXIgb2YgdGVzdHMgaW4gdGhhdCBncm91cCwg
dGltZSB0byBydW4gdGhlIHRlc3RzKSIiIgotICAgICAgICByZXR1cm4gc2VsZi5fdGVzdF9saXN0
X3RpbWluZ19zdGF0cwotCi0gICAgZGVmIGdldF90ZXN0X3Jlc3VsdHMoc2VsZik6Ci0gICAgICAg
ICIiIlJldHVybiB0aGUgbGlzdCBvZiBhbGwgdGVzdHMgcnVuIG9uIHRoaXMgdGhyZWFkLgotCi0g
ICAgICAgIFRoaXMgaXMgdXNlZCB0byBjYWxjdWxhdGUgcGVyLXRocmVhZCBzdGF0aXN0aWNzLgot
Ci0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fdGVzdF9yZXN1bHRzCi0KLSAgICBk
ZWYgZ2V0X3RvdGFsX3RpbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiBtYXgoc2VsZi5fc3RvcF90
aW1lIC0gc2VsZi5fc3RhcnRfdGltZSAtCi0gICAgICAgICAgICAgICAgICAgc2VsZi5faHR0cF9s
b2NrX3dhaXRfdGltZSgpLCAwLjApCisgICAgZGVmIGNhbmNlbChzZWxmKToKKyAgICAgICAgIiIi
QXR0ZW1wdCB0byBhYm9ydCBwcm9jZXNzaW5nIChiZXN0IGVmZm9ydCkuIiIiCisgICAgICAgIHNl
bGYuX2NhbmNlbGVkID0gVHJ1ZQogCi0gICAgZGVmIGdldF9udW1fdGVzdHMoc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLl9udW1fdGVzdHMKKyAgICBkZWYgaXNfZG9uZShzZWxmKToKKyAgICAg
ICAgIyBUaGlzIGlzIHVzZWQgZm9yIGFzc2VydGlvbiBjaGVja2luZyBpbiB0aGUgbWFuYWdlci4K
KyAgICAgICAgcmV0dXJuIHNlbGYuX2RvbmUgb3Igc2VsZi5fY2FuY2VsZWQKIAogICAgIGRlZiBu
YW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQogCi0gICAgZGVmIG5leHRfdGlt
ZW91dChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lIHRoZSB0ZXN0IGlzIHN1cHBv
c2VkIHRvIGZpbmlzaCBieS4iIiIKLSAgICAgICAgaWYgc2VsZi5fbmV4dF90aW1lb3V0OgotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX25leHRfdGltZW91dCArIHNlbGYuX2h0dHBfbG9ja193YWl0
X3RpbWUoKQotICAgICAgICByZXR1cm4gc2VsZi5fbmV4dF90aW1lb3V0Ci0KICAgICBkZWYgcnVu
KHNlbGYpOgotICAgICAgICAiIiJEZWxlZ2F0ZSBtYWluIHdvcmsgdG8gYSBoZWxwZXIgbWV0aG9k
IGFuZCB3YXRjaCBmb3IgdW5jYXVnaHQKLSAgICAgICAgZXhjZXB0aW9ucy4iIiIKLSAgICAgICAg
c2VsZi5fY292ZXJlZF9ydW4oKQotCi0gICAgZGVmIF9jb3ZlcmVkX3J1bihzZWxmKToKLSAgICAg
ICAgIyBGSVhNRTogdGhpcyBpcyBhIHNlcGFyYXRlIHJvdXRpbmUgdG8gd29yayBhcm91bmQgYSBi
dWcKLSAgICAgICAgIyBpbiBjb3ZlcmFnZTogc2VlIGh0dHA6Ly9iaXRidWNrZXQub3JnL25lZC9j
b3ZlcmFnZXB5L2lzc3VlLzg1LgotICAgICAgICBzZWxmLl90aHJlYWRfaWQgPSB0aHJlYWQuZ2V0
X2lkZW50KCkKLSAgICAgICAgc2VsZi5fc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAg
IGV4Y2VwdGlvbl9tc2cgPSAiIgorICAgICAgICBfbG9nLmRlYnVnKCclcyBzdGFydGluZycgJSBz
ZWxmLl9uYW1lKQorCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIF9sb2cuZGVidWcoJyVzIHN0
YXJ0aW5nJyAlIChzZWxmLl9uYW1lKSkKLSAgICAgICAgICAgIHNlbGYuX3J1bih0ZXN0X3J1bm5l
cj1Ob25lLCByZXN1bHRfc3VtbWFyeT1Ob25lKQotICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMg
ZG9uZSAoJWQgdGVzdHMpJyAlIChzZWxmLl9uYW1lLCBzZWxmLl9udW1fdGVzdHMpKQorICAgICAg
ICAgICAgc2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdlX2xvb3AoKQorICAgICAgICAgICAgaWYgbm90
IHNlbGYuaXNfZG9uZSgpOgorICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCIl
czogcmFuIG91dCBvZiBtZXNzYWdlcyBpbiB3b3JrZXIgcXVldWUuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICUgc2VsZi5fbmFtZSkKICAgICAgICAgZXhjZXB0IEtleWJv
YXJkSW50ZXJydXB0OgotICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2luZm8gPSBzeXMuZXhj
X2luZm8oKQotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgaW50ZXJydXB0ZWQiICUgc2VsZi5f
bmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAiLCBpbnRlcnJ1cHRlZCIKICAgICAg
ICAgZXhjZXB0OgotICAgICAgICAgICAgIyBTYXZlIHRoZSBleGNlcHRpb24gZm9yIG91ciBjYWxs
ZXIgdG8gc2VlLgotICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uX2luZm8gPSBzeXMuZXhjX2lu
Zm8oKQotICAgICAgICAgICAgc2VsZi5fc3RvcF90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAg
ICAgIF9sb2cuZXJyb3IoJyVzIGR5aW5nLCBleGNlcHRpb24gcmFpc2VkJyAlIHNlbGYuX25hbWUp
Ci0KLSAgICAgICAgc2VsZi5fc3RvcF90aW1lID0gdGltZS50aW1lKCkKLQotICAgIGRlZiBydW5f
aW5fbWFpbl90aHJlYWQoc2VsZiwgdGVzdF9ydW5uZXIsIHJlc3VsdF9zdW1tYXJ5KToKLSAgICAg
ICAgIiIiVGhpcyBob29rIGFsbG93cyB1cyB0byBydW4gdGhlIHRlc3RzIGZyb20gdGhlIG1haW4g
dGhyZWFkIGlmCi0gICAgICAgIC0tbnVtLXRlc3Qtc2hlbGxzPT0xLCBpbnN0ZWFkIG9mIGhhdmlu
ZyB0byBhbHdheXMgcnVuIHR3byBvciBtb3JlCi0gICAgICAgIHRocmVhZHMuIFRoaXMgYWxsb3dz
IHVzIHRvIGRlYnVnIHRoZSB0ZXN0IGhhcm5lc3Mgd2l0aG91dCBoYXZpbmcgdG8KLSAgICAgICAg
ZG8gbXVsdGktdGhyZWFkZWQgZGVidWdnaW5nLiIiIgotICAgICAgICBzZWxmLl9ydW4odGVzdF9y
dW5uZXIsIHJlc3VsdF9zdW1tYXJ5KQotCi0gICAgZGVmIF9ydW4oc2VsZiwgdGVzdF9ydW5uZXIs
IHJlc3VsdF9zdW1tYXJ5KToKLSAgICAgICAgIiIiTWFpbiB3b3JrIGVudHJ5IHBvaW50IG9mIHRo
ZSB0aHJlYWQuIEJhc2ljYWxseSB3ZSBwdWxsIHVybHMgZnJvbSB0aGUKLSAgICAgICAgZmlsZW5h
bWUgcXVldWUgYW5kIHJ1biB0aGUgdGVzdHMgdW50aWwgd2UgcnVuIG91dCBvZiB1cmxzLgotCi0g
ICAgICAgIElmIHRlc3RfcnVubmVyIGlzIG5vdCBOb25lLCB0aGVuIHdlIGNhbGwgdGVzdF9ydW5u
ZXIuVXBkYXRlU3VtbWFyeSgpCi0gICAgICAgIHdpdGggdGhlIHJlc3VsdHMgb2YgZWFjaCB0ZXN0
IGR1cmluZyBfdGVhcl9kb3duX3Rlc3QoKSwgYmVsb3cuIiIiCi0gICAgICAgIHNlbGYuX3Rlc3Rf
cnVubmVyID0gdGVzdF9ydW5uZXIKLSAgICAgICAgc2VsZi5fcmVzdWx0X3N1bW1hcnkgPSByZXN1
bHRfc3VtbWFyeQotCi0gICAgICAgIHdoaWxlIG5vdCBzZWxmLl9jYW5jZWxlZDoKLSAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICBjdXJyZW50X2dyb3VwLCBmaWxlbmFtZV9saXN0ID0g
XAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlbmFtZV9saXN0X3F1ZXVlLmdldF9ub3dh
aXQoKQotICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX3Rlc3RfbGlzdChjdXJyZW50X2dyb3Vw
LCBmaWxlbmFtZV9saXN0KQotICAgICAgICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5OgotICAgICAg
ICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYgc2VsZi5fY2FuY2VsZWQ6Ci0gICAgICAgICAg
ICBfbG9nLmRlYnVnKCdUZXN0aW5nIGNhbmNlbGVkJykKLQotICAgICAgICBzZWxmLl9jbGVhbnVw
KCkKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAiLCBleGNlcHRpb24gcmFpc2VkIgorICAg
ICAgICBmaW5hbGx5OgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgZG9uZSVzIiAlIChzZWxm
Ll9uYW1lLCBleGNlcHRpb25fbXNnKSkKKyAgICAgICAgICAgIGlmIGV4Y2VwdGlvbl9tc2c6Cisg
ICAgICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAg
ICMgRklYTUU6IEV4dHJhY3QgdGhlIHN0YWNrIHRyYWNlIGludG8gYSBzdHJpbmc/CisgICAgICAg
ICAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZSgnZXhjZXB0aW9uJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleGNfaW5mb1swXSwgZXhjX2luZm9b
MV0sIE5vbmUpKQorICAgICAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZSgnZG9uZScp
CisgICAgICAgICAgICBzZWxmLl9jbGVhbnVwKCkKIAogICAgIGRlZiBfY2xlYW51cChzZWxmKToK
ICAgICAgICAgc2VsZi5fa2lsbF9kdW1wX3JlbmRlcl90cmVlKCkKQEAgLTI1NCw3ICsxNDYsNyBA
QCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgICAgIHNl
bGYuX3Rlc3RzX3J1bl9maWxlLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYuX3Rlc3RzX3J1bl9m
aWxlID0gTm9uZQogCi0gICAgZGVmIGhhbmRsZV90ZXN0X2xpc3Qoc2VsZiwgbGlzdF9uYW1lLCB0
ZXN0X2xpc3QpOgorICAgIGRlZiBoYW5kbGVfdGVzdF9saXN0KHNlbGYsIHNyYywgbGlzdF9uYW1l
LCB0ZXN0X2xpc3QpOgogICAgICAgICBpZiBsaXN0X25hbWUgPT0gInRlc3RzX3RvX2h0dHBfbG9j
ayI6CiAgICAgICAgICAgICBzZWxmLl9zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jaygpCiAKQEAgLTI2
Miw2ICsxNTQsNyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAg
ICAgICAgbnVtX3Rlc3RzID0gMAogICAgICAgICBmb3IgdGVzdF9pbnB1dCBpbiB0ZXN0X2xpc3Q6
CiAgICAgICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2lucHV0KQorICAgICAgICAgICAgc2Vs
Zi5fYnJva2VyLnlpZWxkX3RvX2Jyb2tlcigpCiAgICAgICAgICAgICBpZiBzZWxmLl9jYW5jZWxl
ZDoKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgbnVtX3Rlc3RzICs9IDEKQEAg
LTI3MSw4ICsxNjQsMTIgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6
CiAgICAgICAgIGlmIHNlbGYuX2hhdmVfaHR0cF9sb2NrOgogICAgICAgICAgICAgc2VsZi5fc3Rv
cF9zZXJ2ZXJzX3dpdGhfbG9jaygpCiAKLSAgICAgICAgc2VsZi5fdGVzdF9saXN0X3RpbWluZ19z
dGF0c1tsaXN0X25hbWVdID0gXAotICAgICAgICAgICAobnVtX3Rlc3RzLCBlbGFwc2VkX3RpbWUp
CisgICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ2ZpbmlzaGVkX2xpc3QnLCBsaXN0
X25hbWUsIG51bV90ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFw
c2VkX3RpbWUpCisKKyAgICBkZWYgaGFuZGxlX3N0b3Aoc2VsZiwgc3JjKToKKyAgICAgICAgIiIi
U3RvcCByZWNlaXZlZCAtIG5vIG1vcmUgdGVzdHMgdG8gcnVuLiIiIgorICAgICAgICBzZWxmLl9k
b25lID0gVHJ1ZQogCiAgICAgZGVmIF9ydW5fdGVzdChzZWxmLCB0ZXN0X2lucHV0KToKICAgICAg
ICAgc2VsZi5fc2V0X3VwX3Rlc3QodGVzdF9pbnB1dCkKQEAgLTI5NCw3ICsxOTEsNyBAQCBjbGFz
cyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgICAgIHRlc3RfdGlt
ZW91dF9zZWMgPSBkcml2ZXJfdGltZW91dF9zZWMKIAogICAgICAgICBzdGFydCA9IHRpbWUudGlt
ZSgpCi0gICAgICAgIHNlbGYuX25leHRfdGltZW91dCA9IHN0YXJ0ICsgdGVzdF90aW1lb3V0X3Nl
YworICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCdzdGFydGVkX3Rlc3QnLCB0ZXN0
X2lucHV0LCB0ZXN0X3RpbWVvdXRfc2VjKQogCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucnVu
X3NpbmdseToKICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX3J1bl90ZXN0X2luX2Fub3RoZXJf
dGhyZWFkKHRlc3RfaW5wdXQsCkBAIC0zMDIsNyArMTk5LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhy
ZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXN1bHQg
PSBzZWxmLl9ydW5fdGVzdF9pbl90aGlzX3RocmVhZCh0ZXN0X2lucHV0KQogCi0gICAgICAgIHNl
bGYuX3RlYXJfZG93bl90ZXN0KHRlc3RfaW5wdXQsIHJlc3VsdCkKKyAgICAgICAgc2VsZi5fdGVh
cl9kb3duX3Rlc3QodGVzdF9pbnB1dCwgcmVzdWx0LCB0aW1lLnRpbWUoKSAtIHN0YXJ0KQogCiAg
ICAgZGVmIF9zZXRfdXBfdGVzdChzZWxmLCB0ZXN0X2lucHV0KToKICAgICAgICAgdGVzdF9pbnB1
dC51cmkgPSBzZWxmLl9wb3J0LmZpbGVuYW1lX3RvX3VyaSh0ZXN0X2lucHV0LmZpbGVuYW1lKQpA
QCAtMzcyLDEwICsyNjksNyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFk
KToKICAgICAgICAgaWYgbm90IHNlbGYuX2RyaXZlciBvciBzZWxmLl9kcml2ZXIucG9sbCgpIGlz
IG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVf
ZHJpdmVyKHNlbGYuX3dvcmtlcl9udW1iZXIpCiAgICAgICAgICAgICBzZWxmLl9kcml2ZXIuc3Rh
cnQoKQotCi0gICAgICAgIHRlc3RfcmVzdWx0ID0gc2VsZi5fcnVuX3NpbmdsZV90ZXN0KHRlc3Rf
aW5wdXQsIHNlbGYuX2RyaXZlcikKLSAgICAgICAgc2VsZi5fdGVzdF9yZXN1bHRzLmFwcGVuZCh0
ZXN0X3Jlc3VsdCkKLSAgICAgICAgcmV0dXJuIHRlc3RfcmVzdWx0CisgICAgICAgIHJldHVybiBz
ZWxmLl9ydW5fc2luZ2xlX3Rlc3QodGVzdF9pbnB1dCwgc2VsZi5fZHJpdmVyKQogCiAgICAgZGVm
IF9ydW5fc2luZ2xlX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCwgZHJpdmVyKToKICAgICAgICAgIyBU
aGUgaW1hZ2UgaGFzaCBpcyB1c2VkIHRvIGF2b2lkIGRvaW5nIGFuIGltYWdlIGR1bXAgaWYgdGhl
CkBAIC00NTIsOCArMzQ2LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVh
ZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmV4cGVj
dGVkX2ltYWdlKGZpbGVuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3BvcnQuZXhwZWN0ZWRfY2hlY2tzdW0oZmlsZW5hbWUpKQogCi0gICAgZGVmIF90ZWFy
X2Rvd25fdGVzdChzZWxmLCB0ZXN0X2lucHV0LCByZXN1bHQpOgotICAgICAgICBzZWxmLl9udW1f
dGVzdHMgKz0gMQorICAgIGRlZiBfdGVhcl9kb3duX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCwgcmVz
dWx0LCBlbGFwc2VkX3RpbWUpOgogICAgICAgICBzZWxmLl9iYXRjaF9jb3VudCArPSAxCiAgICAg
ICAgIHNlbGYuX3Rlc3RzX3J1bl9maWxlLndyaXRlKHRlc3RfaW5wdXQuZmlsZW5hbWUgKyAiXG4i
KQogICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUo
dGVzdF9pbnB1dC5maWxlbmFtZSkKQEAgLTQ3MiwzNSArMzY1LDIyIEBAIGNsYXNzIFRlc3RTaGVs
bFRocmVhZChXYXRjaGFibGVUaHJlYWQpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgX2xv
Zy5kZWJ1ZygiJXMgJXMgcGFzc2VkIiAlIChzZWxmLl9uYW1lLCB0ZXN0X25hbWUpKQogCi0gICAg
ICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZS5wdXQocmVzdWx0LmR1bXBzKCkpCisgICAgICAgIHNlbGYu
X2Jyb2tlci5wb3N0X21lc3NhZ2UoJ2ZpbmlzaGVkX3Rlc3QnLCByZXN1bHQsIGVsYXBzZWRfdGlt
ZSkKIAogICAgICAgICBpZiBzZWxmLl9iYXRjaF9zaXplID4gMCBhbmQgc2VsZi5fYmF0Y2hfY291
bnQgPj0gc2VsZi5fYmF0Y2hfc2l6ZToKICAgICAgICAgICAgICMgQm91bmNlIHRoZSBzaGVsbCBh
bmQgcmVzZXQgY291bnQuCiAgICAgICAgICAgICBzZWxmLl9raWxsX2R1bXBfcmVuZGVyX3RyZWUo
KQogICAgICAgICAgICAgc2VsZi5fYmF0Y2hfY291bnQgPSAwCiAKLSAgICAgICAgaWYgc2VsZi5f
dGVzdF9ydW5uZXI6Ci0gICAgICAgICAgICBzZWxmLl90ZXN0X3J1bm5lci51cGRhdGVfc3VtbWFy
eShzZWxmLl9yZXN1bHRfc3VtbWFyeSkKLQogICAgIGRlZiBfc3RhcnRfc2VydmVyc193aXRoX2xv
Y2soc2VsZik6Ci0gICAgICAgIHNlbGYuX2h0dHBfbG9ja193YWl0X2JlZ2luID0gdGltZS50aW1l
KCkKICAgICAgICAgX2xvZy5kZWJ1ZygnQWNxdWlyaW5nIGh0dHAgbG9jayAuLi4nKQogICAgICAg
ICBzZWxmLl9wb3J0LmFjcXVpcmVfaHR0cF9sb2NrKCkKICAgICAgICAgX2xvZy5kZWJ1ZygnU3Rh
cnRpbmcgSFRUUCBzZXJ2ZXIgLi4uJykKICAgICAgICAgc2VsZi5fcG9ydC5zdGFydF9odHRwX3Nl
cnZlcigpCiAgICAgICAgIF9sb2cuZGVidWcoJ1N0YXJ0aW5nIFdlYlNvY2tldCBzZXJ2ZXIgLi4u
JykKICAgICAgICAgc2VsZi5fcG9ydC5zdGFydF93ZWJzb2NrZXRfc2VydmVyKCkKLSAgICAgICAg
c2VsZi5faHR0cF9sb2NrX3dhaXRfZW5kID0gdGltZS50aW1lKCkKICAgICAgICAgc2VsZi5faGF2
ZV9odHRwX2xvY2sgPSBUcnVlCiAKLSAgICBkZWYgX2h0dHBfbG9ja193YWl0X3RpbWUoc2VsZik6
Ci0gICAgICAgICIiIlJldHVybiB0aGUgdGltZSB3aGF0IGh0dHAgbG9ja2luZyB0YWtlcy4iIiIK
LSAgICAgICAgaWYgc2VsZi5faHR0cF9sb2NrX3dhaXRfYmVnaW4gPT0gMDoKLSAgICAgICAgICAg
IHJldHVybiAwCi0gICAgICAgIGlmIHNlbGYuX2h0dHBfbG9ja193YWl0X2VuZCA9PSAwOgotICAg
ICAgICAgICAgcmV0dXJuIHRpbWUudGltZSgpIC0gc2VsZi5faHR0cF9sb2NrX3dhaXRfYmVnaW4K
LSAgICAgICAgcmV0dXJuIHNlbGYuX2h0dHBfbG9ja193YWl0X2VuZCAtIHNlbGYuX2h0dHBfbG9j
a193YWl0X2JlZ2luCi0KICAgICBkZWYgX3N0b3Bfc2VydmVyc193aXRoX2xvY2soc2VsZik6CiAg
ICAgICAgICIiIlN0b3AgdGhlIHNlcnZlcnMgYW5kIHJlbGVhc2UgaHR0cCBsb2NrLiIiIgogICAg
ICAgICBpZiBzZWxmLl9oYXZlX2h0dHBfbG9jazoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2Vy
Ml91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyMl91bml0dGVzdC5weQppbmRleCAxYzgyZDUy
MzE3N2Y1N2RjYzlkZTMyMGJmNTE4ZDg2NzNhYmZhMmUxLi4zZGY4YTkyMDc4MzA1YWY1MzhmNTUx
MThiMWUzMDZkN2M1ZWVmZTQ0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlcjJfdW5pdHRlc3Qu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIyX3VuaXR0ZXN0LnB5CkBAIC0yNyw2ICsyNyw3IEBACiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKIGltcG9ydCBsb2dnaW5nCitpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBp
bXBvcnQgb3B0cGFyc2UKIGltcG9ydCBRdWV1ZQogaW1wb3J0IHN5cwpAQCAtNjcsOSArNjgsMTEg
QEAgZGVmIG1ha2Vfd29ya2VyX2NsYXNzKHN0YXJ0aW5nX3F1ZXVlPU5vbmUsIHN0b3BwaW5nX3F1
ZXVlPU5vbmUsIG1zZz0nZG9uZScpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKIAog
ICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAgICAgaWYgc3RhcnRpbmdfcXVldWU6Cisg
ICAgICAgICAgICAgICAgc3RhcnRpbmdfcXVldWUucHV0KCcnKQorICAgICAgICAgICAgaWYgc3Rv
cHBpbmdfcXVldWU6CisgICAgICAgICAgICAgICAgc3RvcHBpbmdfcXVldWUuZ2V0KCkKICAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpZiBzdGFydGluZ19xdWV1ZToKLSAgICAgICAg
ICAgICAgICAgICAgc3RhcnRpbmdfcXVldWUucHV0KCcnKQogICAgICAgICAgICAgICAgIHNlbGYu
X2Jyb2tlci5ydW5fbWVzc2FnZV9sb29wKCkKICAgICAgICAgICAgICAgICBzZWxmLl9icm9rZXIu
eWllbGRfdG9fYnJva2VyKCkKICAgICAgICAgICAgICAgICBpZiBtc2c6CkBAIC0xOTAsMTEgKzE5
Myw4IEBAIGNsYXNzIF9Xb3JrZXJNZXNzYWdlQnJva2VyVGVzdHNNaXhpbihvYmplY3QpOgogICAg
ICAgICBzZWxmLm1ha2VfYnJva2VyKCkKICAgICAgICAgd29ya2VyX25hbWUgPSBzZWxmLl9icm9r
ZXIuc3RhcnRfd29ya2VyKDApCiAgICAgICAgIHNlbGYuX2Jyb2tlci5jYW5jZWxfd29ya2VyKHdv
cmtlcl9uYW1lKQotICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCdzdG9wJykKLSAg
ICAgICAgc2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdlX2xvb3AoKQogICAgICAgICBzZWxmLl9icm9r
ZXIuam9pbl93b3JrZXIod29ya2VyX25hbWUsIDAuNSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShzZWxmLl9icm9rZXIud29ya2VyX2lzX2FsaXZlKHdvcmtlcl9uYW1lKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHNlbGYuaXNfZG9uZSgpKQogCiAgICAgZGVmIHRlc3RfZG9uZShzZWxmKToK
ICAgICAgICAgc2VsZi5tYWtlX2Jyb2tlcigpCkBAIC0yMDgsNiArMjA4LDIzIEBAIGNsYXNzIF9X
b3JrZXJNZXNzYWdlQnJva2VyVGVzdHNNaXhpbihvYmplY3QpOgogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlbGYuX2FuX2ludCwgMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9h
X3N0ciwgJ2hpLCBldmVyeWJvZHknKQogCisgICAgZGVmIHRlc3RfbG9nX3dlZGdlZF93b3JrZXIo
c2VsZik6CisgICAgICAgIHN0YXJ0aW5nX3F1ZXVlID0gc2VsZi5xdWV1ZSgpCisgICAgICAgIHN0
b3BwaW5nX3F1ZXVlID0gc2VsZi5xdWV1ZSgpCisgICAgICAgIHNlbGYubWFrZV9icm9rZXIoc3Rh
cnRpbmdfcXVldWUsIHN0b3BwaW5nX3F1ZXVlKQorICAgICAgICBvYyA9IG91dHB1dGNhcHR1cmUu
T3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgd29y
a2VyX25hbWUgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDApCisgICAgICAgIHN0YXJ0aW5n
X3F1ZXVlLmdldCgpCisgICAgICAgIHNlbGYuX2Jyb2tlci5sb2dfd2VkZ2VkX3dvcmtlcih3b3Jr
ZXJfbmFtZSwgJ3Rlc3RfbmFtZScpCisgICAgICAgIHN0b3BwaW5nX3F1ZXVlLnB1dCgnJykKKyAg
ICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZSgnc3RvcCcpCisgICAgICAgIHNlbGYuX2Jy
b2tlci5ydW5fbWVzc2FnZV9sb29wKCkKKyAgICAgICAgc2VsZi5fYnJva2VyLmpvaW5fd29ya2Vy
KHdvcmtlcl9uYW1lLCAwLjUpCisgICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShzZWxmLl9icm9rZXIud29ya2VyX2lzX2FsaXZlKHdvcmtlcl9uYW1l
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXNfZG9uZSgpKQorCiAgICAgZGVmIHRl
c3RfdW5rbm93bl9tZXNzYWdlKHNlbGYpOgogICAgICAgICBzZWxmLm1ha2VfYnJva2VyKCkKICAg
ICAgICAgd29ya2VyX25hbWUgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDApCkBAIC0yMzQs
NiArMjUxLDkgQEAgY2xhc3MgSW5saW5lQnJva2VyVGVzdHMoX1dvcmtlck1lc3NhZ2VCcm9rZXJU
ZXN0c01peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKIAogY2xhc3MgVGhyZWFkZWRCcm9rZXJU
ZXN0cyhfV29ya2VyTWVzc2FnZUJyb2tlclRlc3RzTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToK
KyAgICBkZWYgcXVldWUoc2VsZik6CisgICAgICAgIHJldHVybiBRdWV1ZS5RdWV1ZSgpCisKICAg
ICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIF9Xb3JrZXJNZXNzYWdlQnJva2VyVGVzdHNNaXhp
bi5zZXRVcChzZWxmKQogICAgICAgICBzZWxmLl93b3JrZXJfbW9kZWwgPSAndGhyZWFkcycKQEAg
LTI0OSwxOSArMjY5LDYgQEAgY2xhc3MgVGhyZWFkZWRCcm9rZXJUZXN0cyhfV29ya2VyTWVzc2Fn
ZUJyb2tlclRlc3RzTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZm91bmRfc3Rh
Y2sgPSBzZWxmLl9icm9rZXIuX2ZpbmRfdGhyZWFkX3N0YWNrKDApCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZm91bmRfc3RhY2ssIE5vbmUpCiAKLSAgICBkZWYgdGVzdF9sb2dfd2VkZ2VkX3dv
cmtlcihzZWxmKToKLSAgICAgICAgc3RhcnRpbmdfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAg
ICAgIHN0b3BwaW5nX3F1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAgICBzZWxmLm1ha2VfYnJv
a2VyKHN0YXJ0aW5nX3F1ZXVlLCBzdG9wcGluZ19xdWV1ZSkKLSAgICAgICAgb2MgPSBvdXRwdXRj
YXB0dXJlLk91dHB1dENhcHR1cmUoKQotICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCi0KLSAg
ICAgICAgd29ya2VyX25hbWUgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDApCi0gICAgICAg
IHN0YXJ0aW5nX3F1ZXVlLmdldCgpCi0gICAgICAgIHNlbGYuX2Jyb2tlci5sb2dfd2VkZ2VkX3dv
cmtlcih3b3JrZXJfbmFtZSwgJ3Rlc3RfbmFtZScpCi0gICAgICAgIHN0b3BwaW5nX3F1ZXVlLnB1
dCgnJykKLSAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQotCiAKIGNsYXNzIE1lc3NhZ2VUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9fbm9fYm9keShzZWxmKToKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IGRkODQ3ODg2MTcxZmJlYzMxOGRkMTM5YTY5OTk2MmMz
NDM2ZTllMTQuLmRlNTVkNzEwNzFlZWRkNzVlNWQyMjdkYjE4M2ZlOTQyZGJmY2JkM2MgMTAwNzU1
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtNjYsNyArNjYsNyBAQCBpbXBvcnQgdHJhY2ViYWNr
CiAKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkCiBm
cm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCBqc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvcgot
ZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgbWVzc2FnZV9icm9rZXIKK2Zyb20gbGF5b3V0X3Bh
Y2thZ2UgaW1wb3J0IG1lc3NhZ2VfYnJva2VyMiBhcyBtZXNzYWdlX2Jyb2tlcgogZnJvbSBsYXlv
dXRfcGFja2FnZSBpbXBvcnQgcHJpbnRpbmcKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRl
c3RfZXhwZWN0YXRpb25zCiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1cmVz
CkBAIC0xMzUsNyArMTM1LDcgQEAgY2xhc3MgUmVzdWx0U3VtbWFyeShvYmplY3QpOgogICAgICAg
ICAiIiJBZGQgYSBUZXN0UmVzdWx0IGludG8gdGhlIGFwcHJvcHJpYXRlIGJpbi4KIAogICAgICAg
ICBBcmdzOgotICAgICAgICAgIHJlc3VsdDogVGVzdFJlc3VsdCBmcm9tIGR1bXBfcmVuZGVyX3Ry
ZWVfdGhyZWFkLgorICAgICAgICAgIHJlc3VsdDogVGVzdFJlc3VsdAogICAgICAgICAgIGV4cGVj
dGVkOiB3aGV0aGVyIHRoZSByZXN1bHQgd2FzIHdoYXQgd2UgZXhwZWN0ZWQgaXQgdG8gYmUuCiAg
ICAgICAgICIiIgogCkBAIC0yMjgsMTMgKzIyOCwyMiBAQCBkZWYgc3VtbWFyaXplX3VuZXhwZWN0
ZWRfcmVzdWx0cyhwb3J0X29iaiwgZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwKICAgICBy
ZXR1cm4gcmVzdWx0cwogCiAKLWNsYXNzIFdvcmtlclN0YXRlKG9iamVjdCk6CitjbGFzcyBfV29y
a2VyU3RhdGUob2JqZWN0KToKICAgICAiIiJBIGNsYXNzIGZvciB0aGUgVGVzdFJ1bm5lci9tYW5h
Z2VyIHRvIHVzZSB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0ZQogICAgIG9mIHRoZSB3b3JrZXJz
LiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBudW1iZXIsIHRocmVhZCk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIG51bWJlcik6CiAgICAgICAgIHNlbGYubmFtZSA9IG5h
bWUKICAgICAgICAgc2VsZi5udW1iZXIgPSBudW1iZXIKLSAgICAgICAgc2VsZi50aHJlYWQgPSB0
aHJlYWQKKyAgICAgICAgc2VsZi5kb25lID0gRmFsc2UKKyAgICAgICAgc2VsZi5uZXh0X3RpbWVv
dXQgPSBOb25lCisgICAgICAgIHNlbGYud2VkZ2VkID0gRmFsc2UKKyAgICAgICAgc2VsZi5zdGF0
cyA9IHt9CisgICAgICAgIHNlbGYuc3RhdHNbJ25hbWUnXSA9IG5hbWUKKyAgICAgICAgc2VsZi5z
dGF0c1snbnVtX3Rlc3RzJ10gPSAwCisgICAgICAgIHNlbGYuc3RhdHNbJ3RvdGFsX3RpbWUnXSA9
IDAKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJfV29ya2VyU3Rh
dGUoIiArIHN0cihzZWxmLl9fZGljdF9fKSArICIpIgogCiAKIGNsYXNzIFRlc3RSdW5uZXI6CkBA
IC0yNTcsOSArMjY2LDEyIEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgb3B0aW9uczog
YSBkaWN0aW9uYXJ5IG9mIGNvbW1hbmQgbGluZSBvcHRpb25zCiAgICAgICAgICAgcHJpbnRlcjog
YSBQcmludGVyIG9iamVjdCB0byByZWNvcmQgdXBkYXRlcyB0by4KICAgICAgICAgIiIiCisgICAg
ICAgIHNlbGYuX25hbWUgPSAnVGVzdFJ1bm5lcicKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQK
ICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fcHJpbnRlciA9
IHByaW50ZXIKKyAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIgPSBOb25lCisgICAgICAgIHNl
bGYuVVBEQVRFX0lOVEVSVkFMID0gMC4wMQogCiAgICAgICAgICMgVGhpcyBtYXBzIHdvcmtlciBu
YW1lcyB0byB0aGUgc3RhdGUgd2UgYXJlIHRyYWNraW5nIGZvciBlYWNoIG9mIHRoZW0uCiAgICAg
ICAgIHNlbGYuX3dvcmtlcnMgPSB7fQpAQCAtMjcxLDkgKzI4MywxNCBAQCBjbGFzcyBUZXN0UnVu
bmVyOgogICAgICAgICAjIGEgc2V0IG9mIHRlc3QgZmlsZXMsIGFuZCB0aGUgc2FtZSB0ZXN0cyBh
cyBhIGxpc3QKICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNldCgpCiAgICAgICAgIHNlbGYu
X3Rlc3RfZmlsZXNfbGlzdCA9IE5vbmUKLSAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlID0gUXVl
dWUuUXVldWUoKQogICAgICAgICBzZWxmLl9yZXRyeWluZyA9IEZhbHNlCiAKKyAgICBkZWYgaXNf
ZG9uZShzZWxmKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgbmFtZShzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKwogICAgIGRlZiBjb2xsZWN0X3Rlc3RzKHNlbGYs
IGFyZ3MsIGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzKToKICAgICAgICAgIiIiRmluZCBhbGwgdGhl
IGZpbGVzIHRvIHRlc3QuCiAKQEAgLTU5NSw5NyArNjEyLDkzIEBAIGNsYXNzIFRlc3RSdW5uZXI6
CiAgICAgICAgICAgICAgIGluIHRoZSBmb3JtIHtmaWxlbmFtZTpmaWxlbmFtZSwgdGVzdF9ydW5f
dGltZTp0ZXN0X3J1bl90aW1lfQogICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnk6IHN1bW1hcnkg
b2JqZWN0IHRvIHBvcHVsYXRlIHdpdGggdGhlIHJlc3VsdHMKICAgICAgICAgIiIiCisgICAgICAg
IG51bV93b3JrZXJzID0gc2VsZi5fbnVtX3dvcmtlcnMoKQorCisgICAgICAgIHNlbGYuX2N1cnJl
bnRfZmlsZV9saXN0ID0gZmlsZV9saXN0CisgICAgICAgIHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1
bW1hcnkgPSByZXN1bHRfc3VtbWFyeQogCisgICAgICAgIHNlbGYuX2FsbF9yZXN1bHRzID0gW10K
KyAgICAgICAgc2VsZi5fZ3JvdXBfc3RhdHMgPSB7fQogICAgICAgICBzZWxmLl93b3JrZXJzID0g
e30KIAogICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU2hhcmRpbmcgdGVzdHMg
Li4uJykKLSAgICAgICAgbnVtX3dvcmtlcnMgPSBzZWxmLl9udW1fd29ya2VycygpCiAgICAgICAg
IHRlc3RfbGlzdHMgPSBzZWxmLl9zaGFyZF90ZXN0cyhmaWxlX2xpc3QsCiAgICAgICAgICAgICBu
dW1fd29ya2VycyA+IDEgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9w
YXJhbGxlbCkKIAotICAgICAgICBicm9rZXIgPSBtZXNzYWdlX2Jyb2tlci5nZXQoc2VsZi5fcG9y
dCwgc2VsZi5fb3B0aW9ucykKKyAgICAgICAgYnJva2VyID0gbWVzc2FnZV9icm9rZXIuZ2V0KHNl
bGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkdW1wX3JlbmRlcl90cmVlX3RocmVhZC5Xb3JrZXIpCiAgICAgICAgIHNlbGYu
X21lc3NhZ2VfYnJva2VyID0gYnJva2VyCisgICAgICAgIGZvciB0ZXN0X2xpc3QgaW4gdGVzdF9s
aXN0czoKKyAgICAgICAgICAgIGJyb2tlci5wb3N0X21lc3NhZ2UoJ3Rlc3RfbGlzdCcsIHRlc3Rf
bGlzdFswXSwgdGVzdF9saXN0WzFdKQogCi0gICAgICAgIGZpbGVuYW1lX3F1ZXVlID0gUXVldWUu
UXVldWUoKQotICAgICAgICBmb3IgaXRlbSBpbiB0ZXN0X2xpc3RzOgotICAgICAgICAgICAgZmls
ZW5hbWVfcXVldWUucHV0KGl0ZW0pCisgICAgICAgICMgVGVsbCB0aGUgd29ya2VycyB0byBzaHV0
IGRvd24gYWZ0ZXIgdGhleSdyZSBkb25lIHJ1bm5pbmcgYWxsIHRoZQorICAgICAgICAjIHRlc3Rz
LgorICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobnVtX3dvcmtlcnMpOgorICAgICAgICAgICAgYnJv
a2VyLnBvc3RfbWVzc2FnZSgnc3RvcCcpCiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91
cGRhdGUoJ1N0YXJ0aW5nICVzIC4uLicgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBncmFtbWFyLnBsdXJhbGl6ZSgnd29ya2VyJywgbnVtX3dvcmtlcnMpKQotICAgICAgICBz
ZWxmLl9jdXJyZW50X2ZpbGVuYW1lX3F1ZXVlID0gZmlsZW5hbWVfcXVldWUKLSAgICAgICAgc2Vs
Zi5fY3VycmVudF9yZXN1bHRfc3VtbWFyeSA9IHJlc3VsdF9zdW1tYXJ5Ci0KICAgICAgICAgZm9y
IHdvcmtlcl9udW1iZXIgaW4geHJhbmdlKG51bV93b3JrZXJzKToKLSAgICAgICAgICAgIHRocmVh
ZCA9IGJyb2tlci5zdGFydF93b3JrZXIoc2VsZiwgd29ya2VyX251bWJlcikKLSAgICAgICAgICAg
IHcgPSBXb3JrZXJTdGF0ZSh0aHJlYWQubmFtZSgpLCB3b3JrZXJfbnVtYmVyLCB0aHJlYWQpCi0g
ICAgICAgICAgICBzZWxmLl93b3JrZXJzW3RocmVhZC5uYW1lKCldID0gdworICAgICAgICAgICAg
d29ya2VyX25hbWUgPSBicm9rZXIuc3RhcnRfd29ya2VyKHdvcmtlcl9udW1iZXIpCisgICAgICAg
ICAgICB3ID0gX1dvcmtlclN0YXRlKHdvcmtlcl9uYW1lLCB3b3JrZXJfbnVtYmVyKQorICAgICAg
ICAgICAgc2VsZi5fd29ya2Vyc1t3b3JrZXJfbmFtZV0gPSB3CiAKICAgICAgICAgc2VsZi5fcHJp
bnRlci5wcmludF91cGRhdGUoIlN0YXJ0aW5nIHRlc3RpbmcgLi4uIikKICAgICAgICAga2V5Ym9h
cmRfaW50ZXJydXB0ZWQgPSBGYWxzZQotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5kcnlf
cnVuOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGJyb2tlci5ydW5fbWVzc2Fn
ZV9sb29wKHNlbGYpCi0gICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAg
ICAgICAgICAgICAgX2xvZy5pbmZvKCJJbnRlcnJ1cHRlZCwgZXhpdGluZyIpCi0gICAgICAgICAg
ICAgICAgZm9yIHdvcmtlcl9uYW1lIGluIHNlbGYuX3dvcmtlcnMua2V5cygpOgotICAgICAgICAg
ICAgICAgICAgICBicm9rZXIuY2FuY2VsX3dvcmtlcih3b3JrZXJfbmFtZSkKLSAgICAgICAgICAg
ICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCA9IFRydWUKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAg
ICAgICAgICAgICAgICAjIFVuZXhwZWN0ZWQgZXhjZXB0aW9uOyBkb24ndCB0cnkgdG8gY2xlYW4g
dXAgd29ya2Vycy4KLSAgICAgICAgICAgICAgICBfbG9nLmluZm8oIkV4Y2VwdGlvbiByYWlzZWQs
IGV4aXRpbmciKQotICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW46CisgICAgICAgICAgICAgICAgZG9uZSA9
IHNlbGYuX2NoZWNrX29uX3dvcmtlcnMoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBkb25lOgor
ICAgICAgICAgICAgICAgICAgICBicm9rZXIucnVuX21lc3NhZ2VfbG9vcCgpCisKKyAgICAgICAg
ICAgICAgICBmb3IgdyBpbiBzZWxmLl93b3JrZXJzLnZhbHVlcygpOgorICAgICAgICAgICAgICAg
ICAgICBpZiBub3Qgdy53ZWRnZWQgYW5kIGJyb2tlci53b3JrZXJfaXNfYWxpdmUody5uYW1lKToK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyb2tlci5qb2luX3dvcmtlcih3Lm5hbWUsIDAuNSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBub3QgYnJva2VyLndvcmtlcl9pc19hbGl2
ZSh3Lm5hbWUpCisKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAg
ICAgX2xvZy5pbmZvKCJJbnRlcnJ1cHRlZCwgZXhpdGluZyIpCisgICAgICAgICAgICBmb3Igd29y
a2VyX25hbWUgaW4gc2VsZi5fd29ya2Vycy5rZXlzKCk6CisgICAgICAgICAgICAgICAgYnJva2Vy
LmNhbmNlbF93b3JrZXIod29ya2VyX25hbWUpCisgICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1
cHRlZCA9IFRydWUKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgIyBVbmV4cGVjdGVkIGV4
Y2VwdGlvbjsgZG9uJ3QgdHJ5IHRvIGNsZWFuIHVwIHdvcmtlcnMuCisgICAgICAgICAgICBfbG9n
LmluZm8oIkV4Y2VwdGlvbiByYWlzZWQsIGV4aXRpbmciKQorICAgICAgICAgICAgc2VsZi5fbWVz
c2FnZV9icm9rZXIgPSBOb25lCisgICAgICAgICAgICByYWlzZQogCi0gICAgICAgIHRocmVhZF90
aW1pbmdzLCB0ZXN0X3RpbWluZ3MsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gXAotICAgICAg
ICAgICAgc2VsZi5fY29sbGVjdF90aW1pbmdfaW5mbyhzZWxmLl93b3JrZXJzKQogICAgICAgICBz
ZWxmLl9tZXNzYWdlX2Jyb2tlciA9IE5vbmUKLQotICAgICAgICByZXR1cm4gKGtleWJvYXJkX2lu
dGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLAotICAgICAgICAgICAgICAg
IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQorICAgICAgICB0aHJlYWRfdGltaW5ncyA9IFt3LnN0
YXRzIGZvciB3IGluIHNlbGYuX3dvcmtlcnMudmFsdWVzKCldCisgICAgICAgIHJldHVybiAoa2V5
Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLAorICAgICAgICAgICAgICAgIHNlbGYu
X2dyb3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKIAogICAgIGRlZiBfY2hlY2tfb25fd29y
a2VycyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBUcnVlIGlmZiBhbGwgdGhlIHdvcmtlcnMg
aGF2ZSBlaXRoZXIgY29tcGxldGVkIG9yIHdlZGdlZC4iIiIKLQotICAgICAgICAjIExvb3AgdGhy
b3VnaCBhbGwgdGhlIHRocmVhZHMgd2FpdGluZyBmb3IgdGhlbSB0byBmaW5pc2guCi0gICAgICAg
IHNvbWVfdGhyZWFkX2lzX2FsaXZlID0gVHJ1ZQotICAgICAgICB3aGlsZSBzb21lX3RocmVhZF9p
c19hbGl2ZToKLSAgICAgICAgICAgIHNvbWVfdGhyZWFkX2lzX2FsaXZlID0gRmFsc2UKLSAgICAg
ICAgICAgIHQgPSB0aW1lLnRpbWUoKQotICAgICAgICAgICAgZm9yIHdvcmtlciBpbiBzZWxmLl93
b3JrZXJzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIHRocmVhZCA9IHdvcmtlci50aHJlYWQK
LSAgICAgICAgICAgICAgICBleGNlcHRpb25faW5mbyA9IHRocmVhZC5leGNlcHRpb25faW5mbygp
Ci0gICAgICAgICAgICAgICAgaWYgZXhjZXB0aW9uX2luZm8gaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICAgICAgICAgICMgUmUtcmFpc2UgdGhlIHRocmVhZCdzIGV4Y2VwdGlvbiBoZXJlIHRvIG1h
a2UgaXQKLSAgICAgICAgICAgICAgICAgICAgIyBjbGVhciB0aGF0IHRlc3Rpbmcgd2FzIGFib3J0
ZWQuIE90aGVyd2lzZSwKLSAgICAgICAgICAgICAgICAgICAgIyB0aGUgdGVzdHMgdGhhdCBkaWQg
bm90IHJ1biB3b3VsZCBiZSBhc3N1bWVkCi0gICAgICAgICAgICAgICAgICAgICMgdG8gaGF2ZSBw
YXNzZWQuCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbl9pbmZvWzBdLCBleGNl
cHRpb25faW5mb1sxXSwgZXhjZXB0aW9uX2luZm9bMl0KLQotICAgICAgICAgICAgICAgIGlmIHRo
cmVhZC5pc0FsaXZlKCk6Ci0gICAgICAgICAgICAgICAgICAgIHNvbWVfdGhyZWFkX2lzX2FsaXZl
ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBuZXh0X3RpbWVvdXQgPSB0aHJlYWQubmV4dF90
aW1lb3V0KCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbmV4dF90aW1lb3V0IGFuZCB0ID4gbmV4
dF90aW1lb3V0OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWVzc2FnZV9icm9rZXIu
bG9nX3dlZGdlZF93b3JrZXIod29ya2VyLm5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICB0
aHJlYWQuY2xlYXJfbmV4dF90aW1lb3V0KCkKLQotICAgICAgICAgICAgc2VsZi51cGRhdGVfc3Vt
bWFyeShzZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5KQotCi0gICAgICAgICAgICBpZiBzb21l
X3RocmVhZF9pc19hbGl2ZToKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCi0KLSAg
ICBkZWYgX2NvbGxlY3RfdGltaW5nX2luZm8oc2VsZiwgd29ya2Vycyk6Ci0gICAgICAgIHRlc3Rf
dGltaW5ncyA9IHt9Ci0gICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzID0gW10KLSAgICAg
ICAgdGhyZWFkX3RpbWluZ3MgPSBbXQotCi0gICAgICAgIGZvciB3IGluIHdvcmtlcnMudmFsdWVz
KCk6Ci0gICAgICAgICAgICB0aHJlYWQgPSB3LnRocmVhZAotICAgICAgICAgICAgdGhyZWFkX3Rp
bWluZ3MuYXBwZW5kKHsnbmFtZSc6IHRocmVhZC5uYW1lKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdudW1fdGVzdHMnOiB0aHJlYWQuZ2V0X251bV90ZXN0cygpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG90YWxfdGltZSc6IHRocmVhZC5nZXRf
dG90YWxfdGltZSgpfSkKLSAgICAgICAgICAgIHRlc3RfdGltaW5ncy51cGRhdGUodGhyZWFkLmdl
dF90ZXN0X2dyb3VwX3RpbWluZ19zdGF0cygpKQotICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0
X3RpbWluZ3MuZXh0ZW5kKHRocmVhZC5nZXRfdGVzdF9yZXN1bHRzKCkpCi0KLSAgICAgICAgcmV0
dXJuICh0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
cykKKyAgICAgICAgIiIiUmV0dXJucyB0cnVlIGlmZiBhbGwgdGhlIHdvcmtlcnMgaGF2ZSBlaXRo
ZXIgY29tcGxldGVkIG9yIHdlZGdlZC4iIiIKKyAgICAgICAgZG9uZSA9IFRydWUKKyAgICAgICAg
dCA9IHRpbWUudGltZSgpCisgICAgICAgIGJyb2tlciA9IHNlbGYuX21lc3NhZ2VfYnJva2VyCisg
ICAgICAgIGZvciB3IGluIHNlbGYuX3dvcmtlcnMudmFsdWVzKCk6CisgICAgICAgICAgICBpZiBu
b3Qgdy5kb25lIGFuZCBub3Qgdy53ZWRnZWQ6CisgICAgICAgICAgICAgICAgbmV4dF90aW1lb3V0
ID0gdy5uZXh0X3RpbWVvdXQKKyAgICAgICAgICAgICAgICBXRURHRV9QQURESU5HID0gNDAuMAor
ICAgICAgICAgICAgICAgIGlmIG5leHRfdGltZW91dCBhbmQgdCA+IG5leHRfdGltZW91dCArIFdF
REdFX1BBRERJTkc6CisgICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAg
ICAgICAgICAgICAgIGJyb2tlci5sb2dfd2VkZ2VkX3dvcmtlcih3Lm5hbWUsIHcuY3VycmVudF90
ZXN0X25hbWUpCisgICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgICAg
ICAgICAgICAgIHcud2VkZ2VkID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIGRvbmUgPSBGYWxzZQorCisgICAgICAgIGlmIGRvbmU6CisgICAgICAgICAg
ICBpZiBhbnkoW3cud2VkZ2VkIGZvciB3YyBpbiBzZWxmLl93b3JrZXJzXSk6CisgICAgICAgICAg
ICAgICAgX2xvZy5lcnJvcignJykKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdSZW1haW5p
bmcgd29ya2VycyBhcmUgd2VkZ2VkLCBiYWlsaW5nIG91dC4nKQorICAgICAgICAgICAgICAgIF9s
b2cuZXJyb3IoJycpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIF9sb2cuZGVi
dWcoJ05vIHdlZGdlZCB0aHJlYWRzJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyb2tl
ci5hZGRfdGltZXIoc2VsZi5fY2hlY2tfb25fd29ya2Vycywgc2VsZi5VUERBVEVfSU5URVJWQUwp
CisgICAgICAgIHJldHVybiBkb25lCiAKICAgICBkZWYgbmVlZHNfaHR0cChzZWxmKToKICAgICAg
ICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSB0ZXN0IHJ1bm5lciBuZWVkcyBhbiBIVFRQIHNlcnZl
ci4iIiIKQEAgLTgxOSwyMyArODMyLDUxIEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIF9s
b2cuZGVidWcoInN0b3BwaW5nIGhlbHBlciIpCiAgICAgICAgIHNlbGYuX3BvcnQuc3RvcF9oZWxw
ZXIoKQogCi0gICAgZGVmIHVwZGF0ZV9zdW1tYXJ5KHNlbGYsIHJlc3VsdF9zdW1tYXJ5KToKKyAg
ICBkZWYgaGFuZGxlX3N0YXJ0ZWRfdGVzdChzZWxmLCBzcmMsIHRlc3RfaW5mbywgaGFuZ190aW1l
b3V0KToKKyAgICAgICAgdyA9IHNlbGYuX3dvcmtlcnNbc3JjXQorICAgICAgICB3LmN1cnJlbnRf
dGVzdF9uYW1lID0gc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKAorICAgICAgICAg
ICAgdGVzdF9pbmZvLmZpbGVuYW1lKQorICAgICAgICB3Lm5leHRfdGltZW91dCA9IHRpbWUudGlt
ZSgpICsgaGFuZ190aW1lb3V0CisKKyAgICBkZWYgaGFuZGxlX2RvbmUoc2VsZiwgc3JjKToKKyAg
ICAgICAgdyA9IHNlbGYuX3dvcmtlcnNbc3JjXQorICAgICAgICB3LmRvbmUgPSBUcnVlCisgICAg
ICAgIHBhc3MKKworICAgIGRlZiBoYW5kbGVfZmluaXNoZWRfdGVzdChzZWxmLCBzcmMsIHJlc3Vs
dCwgZWxhcHNlZF90aW1lKToKICAgICAgICAgIiIiVXBkYXRlIHRoZSBzdW1tYXJ5IGFuZCBwcmlu
dCByZXN1bHRzIHdpdGggYW55IGNvbXBsZXRlZCB0ZXN0cy4iIiIKLSAgICAgICAgd2hpbGUgVHJ1
ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXN0X3Jlc3Vs
dHMuVGVzdFJlc3VsdC5sb2FkcyhzZWxmLl9yZXN1bHRfcXVldWUuZ2V0X25vd2FpdCgpKQotICAg
ICAgICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5OgotICAgICAgICAgICAgICAgIHJldHVybgotCi0g
ICAgICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2V4cGVjdGF0aW9ucy5tYXRjaGVzX2FuX2V4cGVj
dGVkX3Jlc3VsdCgKLSAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUsIHJlc3VsdC50eXBl
LCBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzKQotICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnku
YWRkKHJlc3VsdCwgZXhwZWN0ZWQpCi0gICAgICAgICAgICBleHBfc3RyID0gc2VsZi5fZXhwZWN0
YXRpb25zLmdldF9leHBlY3RhdGlvbnNfc3RyaW5nKAotICAgICAgICAgICAgICAgIHJlc3VsdC5m
aWxlbmFtZSkKLSAgICAgICAgICAgIGdvdF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMuZXhwZWN0
YXRpb25fdG9fc3RyaW5nKHJlc3VsdC50eXBlKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF90ZXN0X3Jlc3VsdChyZXN1bHQsIGV4cGVjdGVkLCBleHBfc3RyLCBnb3Rfc3RyKQotICAg
ICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9wcm9ncmVzcyhyZXN1bHRfc3VtbWFyeSwgc2Vs
Zi5fcmV0cnlpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3Rlc3RfZmlsZXNfbGlzdCkKKyAgICAgICAgdyA9IHNlbGYuX3dvcmtlcnNbc3JjXQorICAg
ICAgICB3Lm5leHRfdGltZW91dCA9IE5vbmUKKyAgICAgICAgdy5jdXJyZW50X3Rlc3QgPSBOb25l
CisKKyAgICAgICAgaWYgdy53ZWRnZWQ6CisgICAgICAgICAgICAjIEhtbS4gVGhpcyBzaG91bGRu
J3QgaGFwcGVuIGlmIHdlIGhhdmUgb3VyIHRpbWVvdXRzCisgICAgICAgICAgICAjIHR1bmVkIHBy
b3Blcmx5LgorICAgICAgICAgICAgX2xvZy5lcnJvcigiJXMgdW53ZWRnZWQiLCB3Lm5hbWUpCisK
KyAgICAgICAgc2VsZi5fdXBkYXRlX3dvcmtlcl9zdGF0cyhzcmMsIHJlc3VsdCwgZWxhcHNlZF90
aW1lKQorCisgICAgICAgIGV4cGVjdGVkID0gc2VsZi5fZXhwZWN0YXRpb25zLm1hdGNoZXNfYW5f
ZXhwZWN0ZWRfcmVzdWx0KAorICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lLCByZXN1bHQudHlw
ZSwgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cykKKyAgICAgICAgZXhwX3N0ciA9IHNlbGYuX2V4
cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX3N0cmluZygKKyAgICAgICAgICAgIHJlc3VsdC5m
aWxlbmFtZSkKKyAgICAgICAgZ290X3N0ciA9IHNlbGYuX2V4cGVjdGF0aW9ucy5leHBlY3RhdGlv
bl90b19zdHJpbmcocmVzdWx0LnR5cGUpCisgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdGVz
dF9yZXN1bHQocmVzdWx0LCBleHBlY3RlZCwgZXhwX3N0ciwgZ290X3N0cikKKworICAgICAgICBz
ZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5LmFkZChyZXN1bHQsIGV4cGVjdGVkKQorICAgICAg
ICBzZWxmLl9wcmludGVyLnByaW50X3Byb2dyZXNzKHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1h
cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmV0cnlpbmcs
IHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkKKworICAgIGRlZiBoYW5kbGVfZmluaXNoZWRfbGlzdChz
ZWxmLCBzcmMsIGxpc3RfbmFtZSwgbnVtX3Rlc3RzLCBlbGFwc2VkX3RpbWUpOgorICAgICAgICBz
ZWxmLl9ncm91cF9zdGF0c1tsaXN0X25hbWVdID0gKG51bV90ZXN0cywgZWxhcHNlZF90aW1lKQor
CisgICAgZGVmIGhhbmRsZV9leGNlcHRpb24oc2VsZiwgc3JjLCBleGNlcHRpb25faW5mbyk6Cisg
ICAgICAgIHJhaXNlIGV4Y2VwdGlvbl9pbmZvCisKKyAgICBkZWYgX3VwZGF0ZV93b3JrZXJfc3Rh
dHMoc2VsZiwgc3JjLCByZXN1bHQsIGVsYXBzZWRfdGltZSk6CisgICAgICAgIHNlbGYuX3dvcmtl
cnNbc3JjXS5zdGF0c1sndG90YWxfdGltZSddICs9IGVsYXBzZWRfdGltZQorICAgICAgICBzZWxm
Ll93b3JrZXJzW3NyY10uc3RhdHNbJ251bV90ZXN0cyddICs9IDEKKyAgICAgICAgc2VsZi5fYWxs
X3Jlc3VsdHMuYXBwZW5kKHJlc3VsdCkKIAogICAgIGRlZiBfY2xvYmJlcl9vbGRfcmVzdWx0cyhz
ZWxmKToKICAgICAgICAgIyBKdXN0IGNsb2JiZXIgdGhlIGFjdHVhbCB0ZXN0IHJlc3VsdHMgZGly
ZWN0b3JpZXMgc2luY2UgdGhlIG90aGVyCkBAIC0xMDE1LDggKzEwNTYsNyBAQCBjbGFzcyBUZXN0
UnVubmVyOgogICAgIGRlZiBfcHJpbnRfYWdncmVnYXRlX3Rlc3Rfc3RhdGlzdGljcyhzZWxmLCBp
bmRpdmlkdWFsX3Rlc3RfdGltaW5ncyk6CiAgICAgICAgICIiIlByaW50cyBhZ2dyZWdhdGUgc3Rh
dGlzdGljcyAoZS5nLiBtZWRpYW4sIG1lYW4sIGV0Yy4pIGZvciBhbGwgdGVzdHMuCiAgICAgICAg
IEFyZ3M6Ci0gICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2YgZHVtcF9y
ZW5kZXJfdHJlZV90aHJlYWQuVGVzdFN0YXRzCi0gICAgICAgICAgICAgIGZvciBhbGwgdGVzdHMu
CisgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6IExpc3Qgb2YgVGVzdFJlc3VsdHMg
Zm9yIGFsbCB0ZXN0cy4KICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfdHlwZXMgPSBbXSAgIyBV
bml0IHRlc3RzIGRvbid0IGFjdHVhbGx5IHByb2R1Y2UgYW55IHRpbWluZ3MuCiAgICAgICAgIGlm
IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOgpAQCAtMTQ5Miw2ICsxNTMyLDggQEAgZGVmIHBhcnNl
X2FyZ3MoYXJncz1Ob25lKToKICAgICAgICAgICAgIGhlbHA9IkRvbid0IHVzZSBoYXJkd2FyZS1h
Y2NlbGVyYXRlZCAyRCBDYW52YXMgY2FsbHMiKSwKICAgICBdCiAKKyAgICBtZXNzYWdlX2Jyb2tl
cl9vcHRpb25zID0gbWVzc2FnZV9icm9rZXIucnVudGltZV9vcHRpb25zKCkKKwogICAgICMgTWlz
c2luZyBNYWMtc3BlY2lmaWMgb2xkLXJ1bi13ZWJraXQtdGVzdHMgb3B0aW9uczoKICAgICAjIEZJ
WE1FOiBOZWVkOiAtZywgLS1ndWFyZCBmb3IgZ3VhcmQgbWFsbG9jIHN1cHBvcnQgb24gTWFjLgog
ICAgICMgRklYTUU6IE5lZWQ6IC1sIC0tbGVha3MgICAgRW5hYmxlIGxlYWtzIGNoZWNraW5nLgpA
QCAtMTYxMiw5ICsxNjU0LDYgQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICAgICAg
ICAgIGhlbHA9Ik51bWJlciBvZiBEdW1wUmVuZGVyVHJlZXMgdG8gcnVuIGluIHBhcmFsbGVsLiIp
LAogICAgICAgICAjIEZJWE1FOiBEaXNwbGF5IGRlZmF1bHQgbnVtYmVyIG9mIGNoaWxkIHByb2Nl
c3NlcyB0aGF0IHdpbGwgcnVuLgogICAgICAgICAjIEZJWE1FOiBEaXNwbGF5IGRlZmF1bHQgdGhy
ZWFkaW5nIG1vZGVsICh3aWxsIGJlIHBvcnQtc3BlY2lmaWMpLgotICAgICAgICBvcHRwYXJzZS5t
YWtlX29wdGlvbigiLS13b3JrZXItbW9kZWwiLCBhY3Rpb249InN0b3JlIiwKLSAgICAgICAgICAg
IGhlbHA9KCJjb250cm9scyB3b3JrZXIgbW9kZWwuIFZhbGlkIHZhbHVlcyBhcmUgIgotICAgICAg
ICAgICAgIidpbmxpbmUnIGFuZCAndGhyZWFkcycuIikpLAogICAgICAgICBvcHRwYXJzZS5tYWtl
X29wdGlvbigiLS1leHBlcmltZW50YWwtZnVsbHktcGFyYWxsZWwiLAogICAgICAgICAgICAgYWN0
aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgIGhlbHA9InJ1biBh
bGwgdGVzdHMgaW4gcGFyYWxsZWwiKSwKQEAgLTE2NjUsNiArMTcwNCw3IEBAIGRlZiBwYXJzZV9h
cmdzKGFyZ3M9Tm9uZSk6CiAgICAgXQogCiAgICAgb3B0aW9uX2xpc3QgPSAoY29uZmlndXJhdGlv
bl9vcHRpb25zICsgcHJpbnRfb3B0aW9ucyArCisgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9i
cm9rZXJfb3B0aW9ucyArCiAgICAgICAgICAgICAgICAgICAgY2hyb21pdW1fb3B0aW9ucyArIHJl
c3VsdHNfb3B0aW9ucyArIHRlc3Rfb3B0aW9ucyArCiAgICAgICAgICAgICAgICAgICAgbWlzY19v
cHRpb25zICsgcmVzdWx0c19qc29uX29wdGlvbnMgKwogICAgICAgICAgICAgICAgICAgIG9sZF9y
dW5fd2Via2l0X3Rlc3RzX2NvbXBhdCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3Vu
aXR0ZXN0LnB5CmluZGV4IGQzMjVhMWM5NTU1OWQ1OTE1MzE2MmZlYWFkZTJkODBlOTJhOGE2MjUu
LjA4ZGI2N2I1NGFmMThkYTY4ODIxMmZmNWQ5YzUwN2NiOWZmM2VmMzkgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNf
dW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAtMjgyLDggKzI4MiwxNiBAQCBjbGFz
cyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9ydW5fZm9yY2Uo
c2VsZik6CiAgICAgICAgICMgVGhpcyByYWlzZXMgYW4gZXhjZXB0aW9uIGJlY2F1c2Ugd2UgcnVu
Ci0gICAgICAgICMgZmFpbHVyZXMvZXhwZWN0ZWQvZXhjZXB0aW9uLmh0bWwsIHdoaWNoIGlzIG5v
cm1hbGx5IFNLSVBwZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxv
Z2dpbmdfcnVuLCBbJy0tZm9yY2UnXSkKKyAgICAgICAgIyBmYWlsdXJlcy9leHBlY3RlZC9leGNl
cHRpb24uaHRtbCBhbmQKKyAgICAgICAgIyBmYWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZCwgd2hp
Y2ggYXJlIG5vcm1hbGx5IFNLSVBwZWQuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxvZ2dp
bmdfcnVuKFsnLS1mb3JjZSddKQorICAgICAgICAgICAgdGVzdF9wYXNzZWQgPSBGYWxzZQorICAg
ICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHRlc3RfcGFzc2VkID0gVHJ1ZQor
ICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICB0ZXN0X3Bhc3Nl
ZCA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfcGFzc2VkKQogCiAgICAgZGVm
IHRlc3RfcnVuX3BhcnQoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHdlIGFjdHVhbGx5IHNl
bGVjdCB0aGUgcmlnaHQgcGFydAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>