<?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>226234</bug_id>
          
          <creation_ts>2021-05-25 12:56:01 -0700</creation_ts>
          <short_desc>[run-webkit-tests] Use webkitcorepy&apos;s TaskPool</short_desc>
          <delta_ts>2021-06-04 07:04:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226236</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226238</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226344</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226506</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1763633</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-25 12:56:01 -0700</bug_when>
    <thetext>In order to support Python 3, run-webkit-tests needs to use webkitcorepy&apos;s TaskPool for multiprocessing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763634</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-25 12:56:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/78471695&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766163</commentid>
    <comment_count>2</comment_count>
      <attachid>430407</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-02 14:34:34 -0700</bug_when>
    <thetext>Created attachment 430407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766213</commentid>
    <comment_count>3</comment_count>
      <attachid>430418</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-02 16:42:33 -0700</bug_when>
    <thetext>Created attachment 430418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766540</commentid>
    <comment_count>4</comment_count>
      <attachid>430418</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-06-03 14:52:16 -0700</bug_when>
    <thetext>Comment on attachment 430418
Patch

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

r=me

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:154
&gt; +        self.printer.write_update(&apos;Starting %s ...&apos; % pluralize(num_workers, &quot;worker&quot;))

Use formatted string?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766548</commentid>
    <comment_count>5</comment_count>
      <attachid>430503</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-03 15:01:27 -0700</bug_when>
    <thetext>Created attachment 430503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766751</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-04 07:04:42 -0700</bug_when>
    <thetext>Committed r278454 (238474@main): &lt;https://commits.webkit.org/238474@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430503.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430407</attachid>
            <date>2021-06-02 14:34:34 -0700</date>
            <delta_ts>2021-06-02 16:42:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226234-20210602143433.patch</filename>
            <type>text/plain</type>
            <size>30549</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3ODM2MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU0IEBACisyMDIxLTA2LTAyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcnVuLXdlYmtpdC10ZXN0c10gVXNlIHdlYmtpdGNvcmVweSdzIFRhc2tQ
b29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYy
MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc4NDcxNjk1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9ydW4td2Via2l0LXRlc3Rz
OiBTdG9wIHVzaW5nIG11bHRpcHJvY2Vzc2luZ19ib290c3RyYXAuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5
OgorICAgICAgICAoc2V0dXBfc2hhcmQpOiBSdW4gc2V0dXAgaW4gV29ya2VyIHByb2Nlc3MuCisg
ICAgICAgIChoYW5kbGVfc3RhcnRlZF90ZXN0KTogTm90aWZ5IHBhcmVudCBwcm9jZXNzIHRoYXQg
YSB0ZXN0IGhhcyBzdGFydGVkLgorICAgICAgICAocnVuX3NoYXJkKTogUnVuIHRlc3Qgc2hhcmQg
aW4gV29ya2VyIHByb2Nlc3MuCisgICAgICAgIChoYW5kbGVfZmluaXNoZWRfdGVzdCk6IE5vdGlm
eSBwYXJlbnQgcHJvY2VzcyB0aGF0IGEgdGVzdCBoYXMgZmluaXNoZWQuCisgICAgICAgICh0ZWFy
ZG93bl9zaGFyZCk6IFRlYXJkb3duIHdvcmtlciBwcm9jZXNzIG1ldGFkYXRhLgorICAgICAgICAo
TGF5b3V0VGVzdFJ1bm5lci5fX2luaXRfXyk6IE1ha2UgcHJpbnRlciBwdWJsaWMuCisgICAgICAg
IChMYXlvdXRUZXN0UnVubmVyLnJ1bl90ZXN0cyk6IFVzZSBUYXNrUG9vbCB0byBzcGF3biBtdWx0
aXBsZSB3b3JrZXJzLgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lci51cGRhdGVfc3VtbWFyeV93
aXRoX3Jlc3VsdCk6IFJlbmFtZWQgZnJvbQorICAgICAgICBfdXBkYXRlX3N1bW1hcnlfd2l0aF9y
ZXN1bHQsIHN0cmlwIHVudXNlZCBhcmd1bWVudHMuCisgICAgICAgIChMYXlvdXRUZXN0UnVubmVy
Ll9hbm5vdGF0ZV9yZXN1bHRzX3dpdGhfYWRkaXRpb25hbF9mYWlsdXJlcyk6IFN0cmlwCisgICAg
ICAgIHVudXNlZCBhcmd1bWVudHMuCisgICAgICAgIChMYXlvdXRUZXN0UnVubmVyLnN0YXJ0X3Nl
cnZlcnMpOiBNYWtlIHByaW50ZXIgcHVibGljLgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lci5z
dG9wX3NlcnZlcnMpOiBEaXR0by4KKyAgICAgICAgKFdvcmtlci5zZXR1cCk6IEluc3RhbnRpYXRl
IHNpbmdsZXRvbiB3b3JrZXIuCisgICAgICAgIChXb3JrZXIudGVhcmRvd24pOiBUZWFyZG93biBz
aW5nbGV0b24gd29ya2VyLgorICAgICAgICAoV29ya2VyLl9faW5pdF9fKTogUGFzcyBwb3J0IG9i
amVjdCwgcmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KKyAgICAgICAgKFdvcmtlci5ydW5fdGVzdHMp
OiBVc2UgVGFza1Bvb2wgcHJvY2VzcyBuYW1lLgorICAgICAgICAoV29ya2VyLnN0b3ApOiBEaXR0
by4KKyAgICAgICAgKFdvcmtlci5fa2lsbF9kcml2ZXIpOiBVc2UgcG9ydCBvcHRpb25zLCB1c2Ug
VGFza1Bvb2wgcHJvY2VzcyBuYW1lLgorICAgICAgICAoV29ya2VyLl9ydW5fdGVzdF93aXRoX29y
X3dpdGhvdXRfdGltZW91dCk6IERpdHRvLgorICAgICAgICAoV29ya2VyLl9jbGVhbl91cF9hZnRl
cl90ZXN0KTogVXNlIFRhc2tQb29sIHByb2Nlc3MgbmFtZS4KKyAgICAgICAgKFdvcmtlci5fcnVu
X3Rlc3RfaW5fYW5vdGhlcl90aHJlYWQpOiBEaXR0by4KKyAgICAgICAgKFdvcmtlci5fcnVuX3Rl
c3RfaW5fdGhpc190aHJlYWQpOiBEaXR0by4KKyAgICAgICAgKFdvcmtlci5fcnVuX3NpbmdsZV90
ZXN0KTogVXNlIHBvcnQgb3B0aW9ucy4KKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX3dvcmtl
cl9mYWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX2hhbmRsZV9k
aWRfc3Bhd25fd29ya2VyKTogRGVsZXRlZC4KKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX3Vw
ZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKExheW91dFRlc3RS
dW5uZXIuaGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX2hhbmRs
ZV9zdGFydGVkX3Rlc3QpOiBEZWxldGVkLgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lci5faGFu
ZGxlX2ZpbmlzaGVkX3Rlc3QpOiBEZWxldGVkLgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lci5f
aGFuZGxlX2ZpbmlzaGVkX3Rlc3RfZ3JvdXApOiBEZWxldGVkLgorICAgICAgICAoV29ya2VyLl9f
ZGVsX18pOiBEZWxldGVkLgorICAgICAgICAoV29ya2VyLnN0YXJ0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdvcmtlci5oYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV29ya2VyLl9ydW5fdGVzdCk6
IERlbGV0ZWQuCisgICAgICAgIChXb3JrZXIuX2ZpbmlzaGVkX3Rlc3RfZ3JvdXApOiBEZWxldGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHk6IFJlbW92ZSBjYWxsIHRvIG1haW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9w
b3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0Lndvcmtlcl9zdGFydHVwX2RlbGF5X3NlY3MpOiBE
ZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5OgorCiAyMDIx
LTA2LTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IgQVBJIHRlc3QgaXMgZmFpbGluZywKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvcnVuLXdlYmtpdC10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi13
ZWJraXQtdGVzdHMJKHJldmlzaW9uIDI3ODM2MykKKysrIFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtp
dC10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogIiIiV3JhcHBlciBhcm91
bmQgd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkiIiIKIGltcG9ydCBz
eXMKIAotZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IG11bHRpcHJvY2Vzc2luZ19ib290c3Ry
YXAKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnJ1bl93ZWJraXRfdGVzdHMgaW1wb3J0IG1h
aW4KIAogaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CiAgICAgaW1wb3J0IG9z
CkBAIC00Miw0ICs0Miw1IEBAIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgog
ICAgIGltcG9ydCBmbGF0cGFrdXRpbHMKICAgICBmbGF0cGFrdXRpbHMucnVuX2luX3NhbmRib3hf
aWZfYXZhaWxhYmxlKHN5cy5hcmd2KQogCi1tdWx0aXByb2Nlc3NpbmdfYm9vdHN0cmFwLnJ1bign
d2Via2l0cHknLCAnbGF5b3V0X3Rlc3RzJywgJ3J1bl93ZWJraXRfdGVzdHMucHknKQoraWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2WzE6XSwgc3lz
LnN0ZG91dCwgc3lzLnN0ZGVycikpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkJKHJldmlzaW9uIDI3ODM2
MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDYgQEAgZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcHRwYXJzZQogaW1w
b3J0IG9zCi1pbXBvcnQgc2lnbmFsCi1pbXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCiAKIGZy
b20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKQEAgLTQ5MSw2ICs0ODksMyBAQCBk
ZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIGxvZ2dpbmdfc3RyCiAgICAgICAgIHJldHVybiBy
dW5fZGV0YWlscwogICAgIGZpbmFsbHk6CiAgICAgICAgIHByaW50ZXIuY2xlYW51cCgpCi0KLWlm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgc3lzLmV4aXQobWFpbihzeXMuYXJndlsxOl0s
IHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
c19pbnRlZ3JhdGlvbnRlc3QucHkJKHJldmlzaW9uIDI3ODM2MykKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAgY2xhc3MgUnVuVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSwgU3RyZWFtVAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRldGFpbHMuaW5p
dGlhbF9yZXN1bHRzLnRvdGFsLCB0ZXN0LlRPVEFMX1RFU1RTKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGRldGFpbHMuaW5pdGlhbF9yZXN1bHRzLmV4cGVjdGVkX3NraXBzLCB0ZXN0LlRPVEFM
X1NLSVBTKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkZXRhaWxzLmluaXRpYWxfcmVz
dWx0cy51bmV4cGVjdGVkX3Jlc3VsdHNfYnlfbmFtZSksIHRlc3QuVU5FWFBFQ1RFRF9QQVNTRVMg
KyB0ZXN0LlVORVhQRUNURURfRkFJTFVSRVMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGV0
YWlscy5leGl0X2NvZGUsIHRlc3QuVU5FWFBFQ1RFRF9GQUlMVVJFUykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkZXRhaWxzLmV4aXRfY29kZSwgdGVzdC5VTkVYUEVDVEVEX0ZBSUxVUkVTIC0g
MSkgICMgZmFpbHVyZXMvZXhwZWN0ZWQvaGFuZy5odG1sIGFjdHVhbGx5IHBhc3NlcyB3aGVuIHJ1
biBpbiB0aGUgc2FtZSBwcm9jZXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGV0YWlscy5y
ZXRyeV9yZXN1bHRzLnRvdGFsLCB0ZXN0LlRPVEFMX1JFVFJJRVMpCiAKICAgICAgICAgb25lX2xp
bmVfc3VtbWFyeSA9ICIlZCB0ZXN0cyByYW4gYXMgZXhwZWN0ZWQsICVkIGRpZG4ndDpcbiIgJSAo
CkBAIC0yNTUsMTMgKzI1NSw2IEBAIGNsYXNzIFJ1blRlc3QodW5pdHRlc3QuVGVzdENhc2UsIFN0
cmVhbVQKICAgICAgICAgZGV0YWlscywgXywgXyA9IGxvZ2dpbmdfcnVuKFsnLS1mdWxsLXJlc3Vs
dHMtaHRtbCddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRldGFpbHMuZXhpdF9jb2RlLCAw
KQogCi0gICAgZGVmIHRlc3RfaHVuZ190aHJlYWQoc2VsZik6Ci0gICAgICAgIGRldGFpbHMsIGVy
ciwgXyA9IGxvZ2dpbmdfcnVuKFsnLS1ydW4tc2luZ2x5JywgJy0tdGltZS1vdXQtbXM9NTAnLCAn
ZmFpbHVyZXMvZXhwZWN0ZWQvaGFuZy5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUpCi0gICAg
ICAgICMgTm90ZSB0aGF0IGhhbmcuaHRtbCBpcyBtYXJrZWQgYXMgV29udEZpeCBhbmQgYWxsIFdv
bnRGaXggdGVzdHMgYXJlCi0gICAgICAgICMgZXhwZWN0ZWQgdG8gUGFzcywgc28gdGhhdCBhY3R1
YWxseSBydW5uaW5nIHRoZW0gZ2VuZXJhdGVzIGFuICJ1bmV4cGVjdGVkIiBlcnJvci4KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChkZXRhaWxzLmV4aXRfY29kZSwgMSkKLSAgICAgICAgc2VsZi5h
c3NlcnROb3RFbXB0eShlcnIpCi0KICAgICBkZWYgdGVzdF9rZXlib2FyZF9pbnRlcnJ1cHQoc2Vs
Zik6CiAgICAgICAgICMgTm90ZSB0aGF0IHRoaXMgYWxzbyB0ZXN0cyBydW5uaW5nIGEgdGVzdCBt
YXJrZWQgYXMgU0tJUCBpZgogICAgICAgICAjIHlvdSBzcGVjaWZ5IGl0IGV4cGxpY2l0bHkuCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlv
dXRfdGVzdF9ydW5uZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5CShyZXZpc2lvbiAy
NzgzNjMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9sYXlvdXRfdGVzdF9ydW5uZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDExIEBA
IGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0Y29yZXB5LnN0cmlu
Z191dGlscyBpbXBvcnQgcGx1cmFsaXplCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVGFza1Bv
b2wKIAogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IG1lc3NhZ2VfcG9vbAogZnJvbSB3ZWJr
aXRweS5jb21tb24uaXRlcmF0aW9uX2NvbXBhdGliaWxpdHkgaW1wb3J0IGl0ZXJpdGVtcworZnJv
bSB3ZWJraXRweS5jb21tb24uaW50ZXJydXB0X2RlYnVnZ2luZyBpbXBvcnQgbG9nX3N0YWNrX3Ry
YWNlX29uX3NpZ25hbAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1w
b3J0IHNpbmdsZV90ZXN0X3J1bm5lcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxz
LnRlc3RfcnVuX3Jlc3VsdHMgaW1wb3J0IFRlc3RSdW5SZXN1bHRzCiBmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCkBAIC00Nyw4ICs0OSw0
MCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIFRlc3RFeHBlY3RhdGlv
bnMgPSB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zCiAKLSMgRXhwb3J0IHRoaXMg
c28gY2FsbGVycyBkb24ndCBuZWVkIHRvIGtub3cgYWJvdXQgbWVzc2FnZSBwb29scy4KLVdvcmtl
ckV4Y2VwdGlvbiA9IG1lc3NhZ2VfcG9vbC5Xb3JrZXJFeGNlcHRpb24KKworZGVmIHNldHVwX3No
YXJkKHBvcnQ9Tm9uZSwgcmVzdWx0c19kaXJlY3Rvcnk9Tm9uZSwgZGV2aWNlcz1Ob25lLCByZXRy
eWluZz1GYWxzZSk6CisgICAgaWYgZGV2aWNlcyBhbmQgZ2V0YXR0cihwb3J0LCAnREVWSUNFX01B
TkFHRVInLCBOb25lKToKKyAgICAgICAgcG9ydC5ERVZJQ0VfTUFOQUdFUi5BVkFJTEFCTEVfREVW
SUNFUyA9IGRldmljZXMuZ2V0KCdhdmFpbGFibGVfZGV2aWNlcycsIFtdKQorICAgICAgICBwb3J0
LkRFVklDRV9NQU5BR0VSLklOSVRJQUxJWkVEX0RFVklDRVMgPSBkZXZpY2VzLmdldCgnaW5pdGlh
bGl6ZWRfZGV2aWNlcycsIE5vbmUpCisKKyAgICBpZiByZXRyeWluZzoKKyAgICAgICAgcmVzdWx0
c19kaXJlY3RvcnkgPSBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5qb2luKHJlc3VsdHNfZGlyZWN0b3J5
LCAncmV0cmllcycpCisgICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLm1heWJlX21ha2VfZGly
ZWN0b3J5KHJlc3VsdHNfZGlyZWN0b3J5KQorCisgICAgc3RhY2tfdHJhY2VfcGF0aCA9IHBvcnQu
aG9zdC5maWxlc3lzdGVtLmpvaW4ocmVzdWx0c19kaXJlY3RvcnksICdweXRob25fc3RhY2tfdHJh
Y2UudHh0JykKKyAgICBsb2dfc3RhY2tfdHJhY2Vfb25fc2lnbmFsKCdTSUdURVJNJywgb3V0cHV0
X2ZpbGU9c3RhY2tfdHJhY2VfcGF0aCkKKyAgICBsb2dfc3RhY2tfdHJhY2Vfb25fc2lnbmFsKCdT
SUdJTlQnLCBvdXRwdXRfZmlsZT1zdGFja190cmFjZV9wYXRoKQorCisgICAgcG9ydC5kaWRfc3Bh
d25fd29ya2VyKGludCgoVGFza1Bvb2wuUHJvY2Vzcy5uYW1lKS5zcGxpdCgnLycpWy0xXSkpCisg
ICAgcmV0dXJuIFdvcmtlci5zZXR1cChwb3J0PXBvcnQsIHJlc3VsdHNfZGlyZWN0b3J5PXJlc3Vs
dHNfZGlyZWN0b3J5KQorCisKK2RlZiBoYW5kbGVfc3RhcnRlZF90ZXN0KHdvcmtlciwgbmFtZSk6
CisgICAgaWYgTGF5b3V0VGVzdFJ1bm5lci5pbnN0YW5jZToKKyAgICAgICAgTGF5b3V0VGVzdFJ1
bm5lci5pbnN0YW5jZS5wcmludGVyLnByaW50X3N0YXJ0ZWRfdGVzdChuYW1lKQorCisKK2RlZiBy
dW5fc2hhcmQoc2hhcmQpOgorICAgIHJldHVybiBXb3JrZXIuaW5zdGFuY2UucnVuX3Rlc3RzKHNo
YXJkKQorCisKK2RlZiBoYW5kbGVfZmluaXNoZWRfdGVzdCh3b3JrZXIsIHJlc3VsdCk6CisgICAg
aWYgTGF5b3V0VGVzdFJ1bm5lci5pbnN0YW5jZToKKyAgICAgICAgTGF5b3V0VGVzdFJ1bm5lci5p
bnN0YW5jZS51cGRhdGVfc3VtbWFyeV93aXRoX3Jlc3VsdChyZXN1bHQpCisKKworZGVmIHRlYXJk
b3duX3NoYXJkKCk6CisgICAgcmV0dXJuIFdvcmtlci50ZWFyZG93bigpCiAKIAogY2xhc3MgVGVz
dFJ1bkludGVycnVwdGVkRXhjZXB0aW9uKEV4Y2VwdGlvbik6CkBAIC02MywxMCArOTcsMTIgQEAg
Y2xhc3MgVGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9uKEV4Y2VwdAogCiAKIGNsYXNzIExheW91
dFRlc3RSdW5uZXIob2JqZWN0KToKKyAgICBpbnN0YW5jZSA9IE5vbmUKKwogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBvcHRpb25zLCBwb3J0LCBwcmludGVyLCByZXN1bHRzX2RpcmVjdG9yeSwgbmVl
ZHNfaHR0cD1GYWxzZSwgbmVlZHNfd2Vic29ja2V0cz1GYWxzZSwgbmVlZHNfd2ViX3BsYXRmb3Jt
X3Rlc3Rfc2VydmVyPUZhbHNlKToKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAg
ICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKLSAgICAgICAgc2VsZi5fcHJpbnRlciA9IHByaW50ZXIK
KyAgICAgICAgc2VsZi5wcmludGVyID0gcHJpbnRlcgogICAgICAgICBzZWxmLl9yZXN1bHRzX2Rp
cmVjdG9yeSA9IHJlc3VsdHNfZGlyZWN0b3J5CiAgICAgICAgIHNlbGYuX25lZWRzX2h0dHAgPSBu
ZWVkc19odHRwCiAgICAgICAgIHNlbGYuX25lZWRzX3dlYnNvY2tldHMgPSBuZWVkc193ZWJzb2Nr
ZXRzCkBAIC0xMDAsNDggKzEzNiw2MyBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyKG9iamVjdCk6
CiAgICAgICAgICMgRklYTUU6IHJlbmFtZSBhbGwgdmFyaWFibGVzIHRvIHRlc3RfcnVuX3Jlc3Vs
dHMgb3Igc29tZSBzdWNoIC4uLgogICAgICAgICBydW5fcmVzdWx0cyA9IFRlc3RSdW5SZXN1bHRz
KHNlbGYuX2V4cGVjdGF0aW9ucywgbGVuKHRlc3RfaW5wdXRzKSkKICAgICAgICAgc2VsZi5fY3Vy
cmVudF9ydW5fcmVzdWx0cyA9IHJ1bl9yZXN1bHRzCi0gICAgICAgIHNlbGYuX3ByaW50ZXIubnVt
X3Rlc3RzID0gbGVuKHRlc3RfaW5wdXRzKQotICAgICAgICBzZWxmLl9wcmludGVyLm51bV9zdGFy
dGVkID0gMAorICAgICAgICBzZWxmLnByaW50ZXIubnVtX3Rlc3RzID0gbGVuKHRlc3RfaW5wdXRz
KQorICAgICAgICBzZWxmLnByaW50ZXIubnVtX3N0YXJ0ZWQgPSAwCiAKICAgICAgICAgaWYgbm90
IHJldHJ5aW5nOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZChydW5f
cmVzdWx0cywgc2VsZi5fZXhwZWN0YXRpb25zLm1vZGVsKCkuZ2V0X3Rlc3RzX3dpdGhfcmVzdWx0
X3R5cGUpCisgICAgICAgICAgICBzZWxmLnByaW50ZXIucHJpbnRfZXhwZWN0ZWQocnVuX3Jlc3Vs
dHMsIHNlbGYuX2V4cGVjdGF0aW9ucy5tb2RlbCgpLmdldF90ZXN0c193aXRoX3Jlc3VsdF90eXBl
KQogCi0gICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKCdTaGFyZGluZyB0ZXN0cyAu
Li4nKQorICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdTaGFyZGluZyB0ZXN0cyAu
Li4nKQogICAgICAgICBhbGxfc2hhcmRzID0gc2VsZi5fc2hhcmRlci5zaGFyZF90ZXN0cyh0ZXN0
X2lucHV0cywgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgc2VsZi5fb3B0aW9u
cy5mdWxseV9wYXJhbGxlbCkKIAotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3dvcmtlcnNf
YW5kX3NoYXJkcyhudW1fd29ya2VycywgbGVuKGFsbF9zaGFyZHMpKQorICAgICAgICBudW1fd29y
a2VycyA9IG1pbihudW1fd29ya2VycywgbGVuKGFsbF9zaGFyZHMpKQorICAgICAgICBzZWxmLnBy
aW50ZXIucHJpbnRfd29ya2Vyc19hbmRfc2hhcmRzKG51bV93b3JrZXJzLCBsZW4oYWxsX3NoYXJk
cykpCiAKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgogICAgICAgICAgICAgcmV0
dXJuIHJ1bl9yZXN1bHRzCiAKLSAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoJ1N0
YXJ0aW5nICVzIC4uLicgJSBwbHVyYWxpemUobnVtX3dvcmtlcnMsICJ3b3JrZXIiKSkKKyAgICAg
ICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgnU3RhcnRpbmcgJXMgLi4uJyAlIHBsdXJhbGl6
ZShudW1fd29ya2VycywgIndvcmtlciIpKQorCisgICAgICAgIGRldmljZXMgPSBOb25lCisgICAg
ICAgIGlmIGdldGF0dHIoc2VsZi5fcG9ydCwgJ0RFVklDRV9NQU5BR0VSJywgTm9uZSk6CisgICAg
ICAgICAgICBkZXZpY2VzID0gZGljdCgKKyAgICAgICAgICAgICAgICBhdmFpbGFibGVfZGV2aWNl
cz1zZWxmLl9wb3J0LkRFVklDRV9NQU5BR0VSLkFWQUlMQUJMRV9ERVZJQ0VTLAorICAgICAgICAg
ICAgICAgIGluaXRpYWxpemVkX2RldmljZXM9c2VsZi5fcG9ydC5ERVZJQ0VfTUFOQUdFUi5JTklU
SUFMSVpFRF9ERVZJQ0VTLAorICAgICAgICAgICAgKQogCiAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHdpdGggbWVzc2FnZV9wb29sLmdldChzZWxmLCBzZWxmLl93b3JrZXJfZmFjdG9yeSwgbnVt
X3dvcmtlcnMsIHNlbGYuX3BvcnQud29ya2VyX3N0YXJ0dXBfZGVsYXlfc2VjcygpLCBzZWxmLl9w
b3J0Lmhvc3QpIGFzIHBvb2w6Ci0gICAgICAgICAgICAgICAgcG9vbC5ydW4oKCd0ZXN0X2xpc3Qn
LCBzaGFyZC5uYW1lLCBzaGFyZC50ZXN0X2lucHV0cykgZm9yIHNoYXJkIGluIGFsbF9zaGFyZHMp
CisgICAgICAgICAgICBMYXlvdXRUZXN0UnVubmVyLmluc3RhbmNlID0gc2VsZgorICAgICAgICAg
ICAgd2l0aCBUYXNrUG9vbCgKKyAgICAgICAgICAgICAgICB3b3JrZXJzPW51bV93b3JrZXJzLAor
ICAgICAgICAgICAgICAgIHNldHVwPXNldHVwX3NoYXJkLCBzZXR1cGt3YXJncz1kaWN0KAorICAg
ICAgICAgICAgICAgICAgICBwb3J0PXNlbGYuX3BvcnQsCisgICAgICAgICAgICAgICAgICAgIGRl
dmljZXM9ZGV2aWNlcywKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0c19kaXJlY3Rvcnk9c2Vs
Zi5fcmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgIHJldHJ5aW5nPXNlbGYu
X3JldHJ5aW5nLAorICAgICAgICAgICAgICAgICksIHRlYXJkb3duPXRlYXJkb3duX3NoYXJkLAor
ICAgICAgICAgICAgKSBhcyBwb29sOgorICAgICAgICAgICAgICAgIGZvciBzaGFyZCBpbiBhbGxf
c2hhcmRzOgorICAgICAgICAgICAgICAgICAgICBwb29sLmRvKAorICAgICAgICAgICAgICAgICAg
ICAgICAgcnVuX3NoYXJkLCBzaGFyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
PWxhbWJkYSB2YWx1ZTogc2VsZi5fYW5ub3RhdGVfcmVzdWx0c193aXRoX2FkZGl0aW9uYWxfZmFp
bHVyZXModmFsdWUpLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgcG9v
bC53YWl0KCkKKwogICAgICAgICBleGNlcHQgVGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9uIGFz
IGU6CiAgICAgICAgICAgICBfbG9nLndhcm5pbmcoZS5yZWFzb24pCiAgICAgICAgICAgICBydW5f
cmVzdWx0cy5pbnRlcnJ1cHRlZCA9IFRydWUKICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJy
dXB0OgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5mbHVzaCgpCi0gICAgICAgICAgICBzZWxm
Ll9wcmludGVyLndyaXRlbG4oJ0ludGVycnVwdGVkLCBleGl0aW5nIC4uLicpCisgICAgICAgICAg
ICBzZWxmLnByaW50ZXIuZmx1c2goKQorICAgICAgICAgICAgc2VsZi5wcmludGVyLndyaXRlbG4o
J0ludGVycnVwdGVkLCBleGl0aW5nIC4uLicpCiAgICAgICAgICAgICBydW5fcmVzdWx0cy5rZXli
b2FyZF9pbnRlcnJ1cHRlZCA9IFRydWUKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgot
ICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMoIiVzIikgcmFpc2VkLCBleGl0aW5nJyAlIChlLl9f
Y2xhc3NfXy5fX25hbWVfXywgc3RyKGUpKSkKKyAgICAgICAgICAgIF9sb2cuZGVidWcoJ3t9KCJ7
fSIpIHJhaXNlZCwgZXhpdGluZycuZm9ybWF0KGUuX19jbGFzc19fLl9fbmFtZV9fLCBzdHIoZSkp
KQogICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIExheW91
dFRlc3RSdW5uZXIuaW5zdGFuY2UgPSBOb25lCiAKICAgICAgICAgcmV0dXJuIHJ1bl9yZXN1bHRz
CiAKLSAgICBkZWYgX3dvcmtlcl9mYWN0b3J5KHNlbGYsIHdvcmtlcl9jb25uZWN0aW9uKToKLSAg
ICAgICAgcmVzdWx0c19kaXJlY3RvcnkgPSBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeQotICAgICAg
ICBpZiBzZWxmLl9yZXRyeWluZzoKLSAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ubWF5YmVf
bWFrZV9kaXJlY3Rvcnkoc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0
b3J5LCAncmV0cmllcycpKQotICAgICAgICAgICAgcmVzdWx0c19kaXJlY3RvcnkgPSBzZWxmLl9m
aWxlc3lzdGVtLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksICdyZXRyaWVzJykKLSAgICAg
ICAgcmV0dXJuIFdvcmtlcih3b3JrZXJfY29ubmVjdGlvbiwgcmVzdWx0c19kaXJlY3RvcnksIHNl
bGYuX29wdGlvbnMpCi0KLSAgICBkZWYgX2hhbmRsZV9kaWRfc3Bhd25fd29ya2VyKHNlbGYsIHdv
cmtlcl9udW1iZXIpOgotICAgICAgICBzZWxmLl9wb3J0LmRpZF9zcGF3bl93b3JrZXIod29ya2Vy
X251bWJlcikKLQogICAgIGRlZiBfbWFya19pbnRlcnJ1cHRlZF90ZXN0c19hc19za2lwcGVkKHNl
bGYsIHJ1bl9yZXN1bHRzKToKICAgICAgICAgZm9yIHRlc3RfaW5wdXQgaW4gc2VsZi5fdGVzdF9p
bnB1dHM6CiAgICAgICAgICAgICBpZiB0ZXN0X2lucHV0LnRlc3RfbmFtZSBub3QgaW4gcnVuX3Jl
c3VsdHMucmVzdWx0c19ieV9uYW1lOgpAQCAtMTcyLDcgKzIyMyw3IEBAIGNsYXNzIExheW91dFRl
c3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgICMgVGhpcyBkaWZmZXJzIGZyb20gT1JXVCBi
ZWNhdXNlIGl0IGRvZXMgbm90IGluY2x1ZGUgV2ViUHJvY2VzcyBjcmFzaGVzLgogICAgICAgICAg
ICAgIkV4aXRpbmcgZWFybHkgYWZ0ZXIgJWQgY3Jhc2hlcyBhbmQgJWQgdGltZW91dHMuIiAlIChy
dW5fcmVzdWx0cy51bmV4cGVjdGVkX2NyYXNoZXMsIHJ1bl9yZXN1bHRzLnVuZXhwZWN0ZWRfdGlt
ZW91dHMpKQogCi0gICAgZGVmIF91cGRhdGVfc3VtbWFyeV93aXRoX3Jlc3VsdChzZWxmLCBydW5f
cmVzdWx0cywgcmVzdWx0KToKKyAgICBkZWYgdXBkYXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQoc2Vs
ZiwgcmVzdWx0KToKICAgICAgICAgaWYgcmVzdWx0LnR5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMu
U0tJUDoKICAgICAgICAgICAgIGV4cF9zdHIgPSBnb3Rfc3RyID0gJ1NLSVAnCiAgICAgICAgICAg
ICBleHBlY3RlZCA9IFRydWUKQEAgLTE4MiwxNSArMjMzLDE1IEBAIGNsYXNzIExheW91dFRlc3RS
dW5uZXIob2JqZWN0KToKICAgICAgICAgICAgIGV4cF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMu
bW9kZWwoKS5leHBlY3RhdGlvbnNfdG9fc3RyaW5nKGV4cGVjdGF0aW9ucykKICAgICAgICAgICAg
IGdvdF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMubW9kZWwoKS5leHBlY3RhdGlvbl90b19zdHJp
bmcocmVzdWx0LnR5cGUpCiAKLSAgICAgICAgcnVuX3Jlc3VsdHMuYWRkKHJlc3VsdCwgZXhwZWN0
ZWQpCisgICAgICAgIHNlbGYuX2N1cnJlbnRfcnVuX3Jlc3VsdHMuYWRkKHJlc3VsdCwgZXhwZWN0
ZWQpCiAKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9maW5pc2hlZF90ZXN0KHJlc3VsdCwg
ZXhwZWN0ZWQsIGV4cF9zdHIsIGdvdF9zdHIpCisgICAgICAgIHNlbGYucHJpbnRlci5wcmludF9m
aW5pc2hlZF90ZXN0KHJlc3VsdCwgZXhwZWN0ZWQsIGV4cF9zdHIsIGdvdF9zdHIpCiAKLSAgICAg
ICAgc2VsZi5faW50ZXJydXB0X2lmX2F0X2ZhaWx1cmVfbGltaXRzKHJ1bl9yZXN1bHRzKQorICAg
ICAgICBzZWxmLl9pbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9saW1pdHMoc2VsZi5fY3VycmVudF9y
dW5fcmVzdWx0cykKIAotICAgIGRlZiBfYW5ub3RhdGVfcmVzdWx0c193aXRoX2FkZGl0aW9uYWxf
ZmFpbHVyZXMoc2VsZiwgcnVuX3Jlc3VsdHMsIHJlc3VsdHMpOgorICAgIGRlZiBfYW5ub3RhdGVf
cmVzdWx0c193aXRoX2FkZGl0aW9uYWxfZmFpbHVyZXMoc2VsZiwgcmVzdWx0cyk6CiAgICAgICAg
IGZvciBuZXdfcmVzdWx0IGluIHJlc3VsdHM6Ci0gICAgICAgICAgICBleGlzdGluZ19yZXN1bHQg
PSBydW5fcmVzdWx0cy5yZXN1bHRzX2J5X25hbWUuZ2V0KG5ld19yZXN1bHQudGVzdF9uYW1lKQor
ICAgICAgICAgICAgZXhpc3RpbmdfcmVzdWx0ID0gc2VsZi5fY3VycmVudF9ydW5fcmVzdWx0cy5y
ZXN1bHRzX2J5X25hbWUuZ2V0KG5ld19yZXN1bHQudGVzdF9uYW1lKQogICAgICAgICAgICAgIyBX
aGVuIHJ1bm5pbmcgYSBjaHVuayAoLS1ydW4tY2h1bmspLCByZXN1bHRzX2J5X25hbWUgY29udGFp
bnMgYWxsIHRoZSB0ZXN0cywgYnV0IChjb25mdXNpbmdseSkgYWxsX3Rlc3RzIG9ubHkgY29udGFp
bnMgdGhvc2UgaW4gdGhlIGNodW5rIHRoYXQgd2FzIHJ1biwKICAgICAgICAgICAgICMgYW5kIHdl
IGRvbid0IHdhbnQgdG8gbW9kaWZ5IHRoZSByZXN1bHRzIG9mIGEgdGVzdCB0aGF0IGRpZG4ndCBy
dW4uIGV4aXN0aW5nX3Jlc3VsdC50ZXN0X251bWJlciBpcyBvbmx5IG5vbi1Ob25lIGZvciB0ZXN0
cyB0aGF0IHJhbi4KICAgICAgICAgICAgIGlmIGV4aXN0aW5nX3Jlc3VsdCBhbmQgZXhpc3Rpbmdf
cmVzdWx0LnRlc3RfbnVtYmVyIGlzIG5vdCBOb25lOgpAQCAtMjAyLDExMCArMjUzLDEwOCBAQCBj
bGFzcyBMYXlvdXRUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIF9sb2cu
d2FybmluZygnICAlcyAtPiBjaGFuZ2VkIGJ5IGxlYWsgZGV0ZWN0aW9uIGZyb20gYSAlcyAoJXMp
IHRvIGEgJXMgKCVzKScgJSAobmV3X3Jlc3VsdC50ZXN0X25hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXN0RXhwZWN0YXRpb25zLkVYUEVDVEFUSU9OX0RFU0NSSVBUSU9OW2V4aXN0aW5n
X3Jlc3VsdC50eXBlXSwgJ2V4cGVjdGVkJyBpZiB3YXNfZXhwZWN0ZWQgZWxzZSAndW5leHBlY3Rl
ZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0RXhwZWN0YXRpb25zLkVYUEVDVEFUSU9O
X0RFU0NSSVBUSU9OW25ld19yZXN1bHQudHlwZV0sICdleHBlY3RlZCcgaWYgbm93X2V4cGVjdGVk
IGVsc2UgJ3VuZXhwZWN0ZWQnKSkKLSAgICAgICAgICAgICAgICBydW5fcmVzdWx0cy5jaGFuZ2Vf
cmVzdWx0X3RvX2ZhaWx1cmUoZXhpc3RpbmdfcmVzdWx0LCBuZXdfcmVzdWx0LCB3YXNfZXhwZWN0
ZWQsIG5vd19leHBlY3RlZCkKKyAgICAgICAgICAgICAgICBzZWxmLl9jdXJyZW50X3J1bl9yZXN1
bHRzLmNoYW5nZV9yZXN1bHRfdG9fZmFpbHVyZShleGlzdGluZ19yZXN1bHQsIG5ld19yZXN1bHQs
IHdhc19leHBlY3RlZCwgbm93X2V4cGVjdGVkKQogCiAgICAgZGVmIHN0YXJ0X3NlcnZlcnMoc2Vs
Zik6CiAgICAgICAgIGlmIHNlbGYuX25lZWRzX2h0dHAgYW5kIG5vdCBzZWxmLl9kaWRfc3RhcnRf
aHR0cF9zZXJ2ZXIgYW5kIG5vdCBzZWxmLl9wb3J0LmlzX2h0dHBfc2VydmVyX3J1bm5pbmcoKToK
LSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKCdTdGFydGluZyBIVFRQIHNl
cnZlciAuLi4nKQorICAgICAgICAgICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgnU3RhcnRp
bmcgSFRUUCBzZXJ2ZXIgLi4uJykKICAgICAgICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfaHR0cF9z
ZXJ2ZXIoKQogICAgICAgICAgICAgc2VsZi5fZGlkX3N0YXJ0X2h0dHBfc2VydmVyID0gVHJ1ZQog
ICAgICAgICBpZiBzZWxmLl9uZWVkc193ZWJzb2NrZXRzIGFuZCBub3Qgc2VsZi5fZGlkX3N0YXJ0
X3dlYnNvY2tldF9zZXJ2ZXIgYW5kIG5vdCBzZWxmLl9wb3J0LmlzX3dlYnNvY2tldF9zZXJ2ZXJf
cnVubmluZygpOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoJ1N0YXJ0
aW5nIFdlYlNvY2tldCBzZXJ2ZXIgLi4uJykKKyAgICAgICAgICAgIHNlbGYucHJpbnRlci53cml0
ZV91cGRhdGUoJ1N0YXJ0aW5nIFdlYlNvY2tldCBzZXJ2ZXIgLi4uJykKICAgICAgICAgICAgIHNl
bGYuX3BvcnQuc3RhcnRfd2Vic29ja2V0X3NlcnZlcigpCiAgICAgICAgICAgICBzZWxmLl9kaWRf
c3RhcnRfd2Vic29ja2V0X3NlcnZlciA9IFRydWUKICAgICAgICAgaWYgc2VsZi5fbmVlZHNfd2Vi
X3BsYXRmb3JtX3Rlc3Rfc2VydmVyIGFuZCBub3Qgc2VsZi5fZGlkX3N0YXJ0X3dwdF9zZXJ2ZXIg
YW5kIG5vdCBzZWxmLl9wb3J0LmlzX3dwdF9zZXJ2ZXJfcnVubmluZygpOgotICAgICAgICAgICAg
c2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoJ1N0YXJ0aW5nIFdlYiBQbGF0Zm9ybSBUZXN0IHNl
cnZlciAuLi4nKQorICAgICAgICAgICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgnU3RhcnRp
bmcgV2ViIFBsYXRmb3JtIFRlc3Qgc2VydmVyIC4uLicpCiAgICAgICAgICAgICBzZWxmLl9wb3J0
LnN0YXJ0X3dlYl9wbGF0Zm9ybV90ZXN0X3NlcnZlcigpCiAgICAgICAgICAgICBzZWxmLl9kaWRf
c3RhcnRfd3B0X3NlcnZlciA9IFRydWUKIAogICAgIGRlZiBzdG9wX3NlcnZlcnMoc2VsZik6CiAg
ICAgICAgIGlmIHNlbGYuX2RpZF9zdGFydF9odHRwX3NlcnZlcjoKLSAgICAgICAgICAgIHNlbGYu
X3ByaW50ZXIud3JpdGVfdXBkYXRlKCdTdG9wcGluZyBIVFRQIHNlcnZlciAuLi4nKQorICAgICAg
ICAgICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgnU3RvcHBpbmcgSFRUUCBzZXJ2ZXIgLi4u
JykKICAgICAgICAgICAgIHNlbGYuX3BvcnQuc3RvcF9odHRwX3NlcnZlcigpCiAgICAgICAgICAg
ICBzZWxmLl9kaWRfc3RhcnRfaHR0cF9zZXJ2ZXIgPSBGYWxzZQogICAgICAgICBpZiBzZWxmLl9k
aWRfc3RhcnRfd2Vic29ja2V0X3NlcnZlcjoKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3Jp
dGVfdXBkYXRlKCdTdG9wcGluZyBXZWJTb2NrZXQgc2VydmVyIC4uLicpCisgICAgICAgICAgICBz
ZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdTdG9wcGluZyBXZWJTb2NrZXQgc2VydmVyIC4uLicp
CiAgICAgICAgICAgICBzZWxmLl9wb3J0LnN0b3Bfd2Vic29ja2V0X3NlcnZlcigpCiAgICAgICAg
ICAgICBzZWxmLl9kaWRfc3RhcnRfd2Vic29ja2V0X3NlcnZlciA9IEZhbHNlCiAgICAgICAgIGlm
IHNlbGYuX2RpZF9zdGFydF93cHRfc2VydmVyOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53
cml0ZV91cGRhdGUoJ1N0b3BwaW5nIFdlYiBQbGF0Zm9ybSBUZXN0IHNlcnZlciAuLi4nKQorICAg
ICAgICAgICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgnU3RvcHBpbmcgV2ViIFBsYXRmb3Jt
IFRlc3Qgc2VydmVyIC4uLicpCiAgICAgICAgICAgICBzZWxmLl9wb3J0LnN0b3Bfd2ViX3BsYXRm
b3JtX3Rlc3Rfc2VydmVyKCkKICAgICAgICAgICAgIHNlbGYuX2RpZF9zdGFydF93cHRfc2VydmVy
ID0gRmFsc2UKIAotICAgIGRlZiBoYW5kbGUoc2VsZiwgbmFtZSwgc291cmNlLCAqYXJncyk6Ci0g
ICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2VsZiwgJ19oYW5kbGVfJyArIG5hbWUpCi0gICAgICAg
IGlmIG1ldGhvZDoKLSAgICAgICAgICAgIHJldHVybiBtZXRob2Qoc291cmNlLCAqYXJncykKLSAg
ICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ3Vua25vd24gbWVzc2FnZSAlcyByZWNlaXZlZCBm
cm9tICVzLCBhcmdzPSVzJyAlIChuYW1lLCBzb3VyY2UsIHJlcHIoYXJncykpKQotCi0gICAgZGVm
IF9oYW5kbGVfc3RhcnRlZF90ZXN0KHNlbGYsIHdvcmtlcl9uYW1lLCB0ZXN0X2lucHV0LCB0ZXN0
X3RpbWVvdXRfc2VjKToKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9zdGFydGVkX3Rlc3Qo
dGVzdF9pbnB1dC50ZXN0X25hbWUpCiAKLSAgICBkZWYgX2hhbmRsZV9maW5pc2hlZF90ZXN0KHNl
bGYsIHdvcmtlcl9uYW1lLCByZXN1bHQsIGxvZ19tZXNzYWdlcz1bXSk6Ci0gICAgICAgIHNlbGYu
X3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHNlbGYuX2N1cnJlbnRfcnVuX3Jlc3VsdHMsIHJl
c3VsdCkKLQotICAgIGRlZiBfaGFuZGxlX2ZpbmlzaGVkX3Rlc3RfZ3JvdXAoc2VsZiwgd29ya2Vy
X25hbWUsIG92ZXJsYXlfcmVzdWx0cywgbG9nX21lc3NhZ2VzPVtdKToKLSAgICAgICAgc2VsZi5f
YW5ub3RhdGVfcmVzdWx0c193aXRoX2FkZGl0aW9uYWxfZmFpbHVyZXMoc2VsZi5fY3VycmVudF9y
dW5fcmVzdWx0cywgb3ZlcmxheV9yZXN1bHRzKQorY2xhc3MgV29ya2VyKG9iamVjdCk6CisgICAg
aW5zdGFuY2UgPSBOb25lCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0dXAoY2xzLCBw
b3J0PU5vbmUsIHJlc3VsdHNfZGlyZWN0b3J5PU5vbmUpOgorICAgICAgICBjbHMuaW5zdGFuY2Ug
PSBjbHMocG9ydD1wb3J0LCByZXN1bHRzX2RpcmVjdG9yeT1yZXN1bHRzX2RpcmVjdG9yeSkKKwor
ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyZG93bihjbHMpOgorICAgICAgICBpZiBjbHMu
aW5zdGFuY2U6CisgICAgICAgICAgICBjbHMuaW5zdGFuY2Uuc3RvcCgpCisgICAgICAgIGNscy5p
bnN0YW5jZSA9IE5vbmUKIAotY2xhc3MgV29ya2VyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGNhbGxlciwgcmVzdWx0c19kaXJlY3RvcnksIG9wdGlvbnMpOgotICAgICAgICBzZWxm
Ll9jYWxsZXIgPSBjYWxsZXIKLSAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IGNhbGxlci53
b3JrZXJfbnVtYmVyCi0gICAgICAgIHNlbGYuX25hbWUgPSBjYWxsZXIubmFtZQorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBwb3J0LCByZXN1bHRzX2RpcmVjdG9yeSk6CisgICAgICAgIHNlbGYuX3Bv
cnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5ID0gcmVzdWx0c19kaXJl
Y3RvcnkKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKIAotICAgICAgICAjIFRoZSBy
ZW1haW5pbmcgZmllbGRzIGFyZSBpbml0aWFsaXplZCBpbiBzdGFydCgpCi0gICAgICAgIHNlbGYu
X2hvc3QgPSBOb25lCi0gICAgICAgIHNlbGYuX3BvcnQgPSBOb25lCi0gICAgICAgIHNlbGYuX2Jh
dGNoX3NpemUgPSBOb25lCi0gICAgICAgIHNlbGYuX2JhdGNoX2NvdW50ID0gTm9uZQotICAgICAg
ICBzZWxmLl9maWxlc3lzdGVtID0gTm9uZQotICAgICAgICBzZWxmLl9kcml2ZXIgPSBOb25lCiAg
ICAgICAgIHNlbGYuX251bV90ZXN0cyA9IDAKKyAgICAgICAgc2VsZi5fYmF0Y2hfY291bnQgPSAw
CisgICAgICAgIHNlbGYuX2RyaXZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5fYmF0Y2hfc2l6ZSA9
IHNlbGYuX3BvcnQuZ2V0X29wdGlvbignYmF0Y2hfc2l6ZScpIG9yIDAKIAotICAgIGRlZiBfX2Rl
bF9fKHNlbGYpOgotICAgICAgICBzZWxmLnN0b3AoKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgot
ICAgICAgICAiIiJUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgb2JqZWN0IGlzIHN0YXJ0
aW5nIHRvIGJlIHVzZWQgYW5kIGl0IGlzIHNhZmUKLSAgICAgICAgZm9yIHRoZSBvYmplY3QgdG8g
Y3JlYXRlIHN0YXRlIHRoYXQgZG9lcyBub3QgbmVlZCB0byBiZSBwaWNrbGVkICh1c3VhbGx5IHRo
aXMgbWVhbnMKLSAgICAgICAgaXQgaXMgY2FsbGVkIGluIGEgY2hpbGQgcHJvY2VzcykuIiIiCi0g
ICAgICAgIHNlbGYuX2hvc3QgPSBzZWxmLl9jYWxsZXIuaG9zdAotICAgICAgICBzZWxmLl9maWxl
c3lzdGVtID0gc2VsZi5faG9zdC5maWxlc3lzdGVtCi0gICAgICAgIHNlbGYuX3BvcnQgPSBzZWxm
Ll9ob3N0LnBvcnRfZmFjdG9yeS5nZXQoc2VsZi5fb3B0aW9ucy5wbGF0Zm9ybSwgc2VsZi5fb3B0
aW9ucykKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsIHNoYXJkKToKKyAgICAgICAgZm9yIGlucHV0
IGluIHNoYXJkLnRlc3RfaW5wdXRzOgorICAgICAgICAgICAgaWYgbm90IFRhc2tQb29sLlByb2Nl
c3Mud29ya2luZzoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgV29ya2VyLmlu
c3RhbmNlLnJ1bl90ZXN0KGlucHV0LCBzaGFyZC5uYW1lKQogCi0gICAgICAgIHNlbGYuX2JhdGNo
X2NvdW50ID0gMAotICAgICAgICBzZWxmLl9iYXRjaF9zaXplID0gc2VsZi5fb3B0aW9ucy5iYXRj
aF9zaXplIG9yIDAKKyAgICAgICAgX2xvZy5kZWJ1Zygne30gZmluaXNoZWQgdGVzdCBncm91cCcu
Zm9ybWF0KFRhc2tQb29sLlByb2Nlc3MubmFtZSkpCiAKLSAgICBkZWYgaGFuZGxlKHNlbGYsIG5h
bWUsIHNvdXJjZSwgdGVzdF9saXN0X25hbWUsIHRlc3RfaW5wdXRzKToKLSAgICAgICAgYXNzZXJ0
IG5hbWUgPT0gJ3Rlc3RfbGlzdCcKLSAgICAgICAgZm9yIHRlc3RfaW5wdXQgaW4gdGVzdF9pbnB1
dHM6Ci0gICAgICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2lucHV0LCB0ZXN0X2xpc3RfbmFt
ZSkKKyAgICAgICAgaWYgc2VsZi5fZHJpdmVyIGFuZCBzZWxmLl9kcml2ZXIuaGFzX2NyYXNoZWQo
KToKKyAgICAgICAgICAgIHNlbGYuX2tpbGxfZHJpdmVyKCkKIAotICAgICAgICBzZWxmLl9maW5p
c2hlZF90ZXN0X2dyb3VwKHRlc3RfaW5wdXRzKQorICAgICAgICBhZGRpdGlvbmFsX3Jlc3VsdHMg
PSBbXQorICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdydW5fc2luZ2x5Jyk6
CisgICAgICAgICAgICBhZGRpdGlvbmFsX3Jlc3VsdHMgPSBzZWxmLl9kb19wb3N0X3Rlc3RzX3dv
cmsoc2VsZi5fZHJpdmVyKQorICAgICAgICByZXR1cm4gYWRkaXRpb25hbF9yZXN1bHRzCiAKLSAg
ICBkZWYgX3J1bl90ZXN0KHNlbGYsIHRlc3RfaW5wdXQsIHNoYXJkX25hbWUpOgorICAgIGRlZiBy
dW5fdGVzdChzZWxmLCB0ZXN0X2lucHV0LCBzaGFyZF9uYW1lKToKICAgICAgICAgc2VsZi5fYmF0
Y2hfY291bnQgKz0gMQogCiAgICAgICAgIHN0b3Bfd2hlbl9kb25lID0gRmFsc2UKLSAgICAgICAg
aWYgc2VsZi5fYmF0Y2hfc2l6ZSA+IDAgYW5kIHNlbGYuX2JhdGNoX2NvdW50ID49IHNlbGYuX2Jh
dGNoX3NpemU6CisgICAgICAgIGlmIDAgPCBzZWxmLl9iYXRjaF9zaXplIDw9IHNlbGYuX2JhdGNo
X2NvdW50OgogICAgICAgICAgICAgc2VsZi5fYmF0Y2hfY291bnQgPSAwCiAgICAgICAgICAgICBz
dG9wX3doZW5fZG9uZSA9IFRydWUKIAogICAgICAgICB0ZXN0X3RpbWVvdXRfc2VjID0gc2VsZi5f
dGltZW91dCh0ZXN0X2lucHV0KQogICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCi0gICAgICAg
IHNlbGYuX2NhbGxlci5wb3N0KCdzdGFydGVkX3Rlc3QnLCB0ZXN0X2lucHV0LCB0ZXN0X3RpbWVv
dXRfc2VjKQorCisgICAgICAgIGlmIFRhc2tQb29sLlByb2Nlc3MucXVldWU6CisgICAgICAgICAg
ICBUYXNrUG9vbC5Qcm9jZXNzLnF1ZXVlLnNlbmQoVGFza1Bvb2wuVGFzaygKKyAgICAgICAgICAg
ICAgICBoYW5kbGVfc3RhcnRlZF90ZXN0LCBOb25lLCBUYXNrUG9vbC5Qcm9jZXNzLm5hbWUsCisg
ICAgICAgICAgICAgICAgdGVzdF9pbnB1dC50ZXN0X25hbWUsCisgICAgICAgICAgICApKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgaGFuZGxlX3N0YXJ0ZWRfdGVzdChUYXNrUG9vbC5Qcm9j
ZXNzLm5hbWUsIHRlc3RfaW5wdXQudGVzdF9uYW1lKQogCiAgICAgICAgIHJlc3VsdCA9IHNlbGYu
X3J1bl90ZXN0X3dpdGhfb3Jfd2l0aG91dF90aW1lb3V0KHRlc3RfaW5wdXQsIHRlc3RfdGltZW91
dF9zZWMsIHN0b3Bfd2hlbl9kb25lKQogICAgICAgICByZXN1bHQuc2hhcmRfbmFtZSA9IHNoYXJk
X25hbWUKLSAgICAgICAgcmVzdWx0Lndvcmtlcl9uYW1lID0gc2VsZi5fbmFtZQorICAgICAgICBy
ZXN1bHQud29ya2VyX25hbWUgPSBUYXNrUG9vbC5Qcm9jZXNzLm5hbWUKICAgICAgICAgcmVzdWx0
LnRvdGFsX3J1bl90aW1lID0gdGltZS50aW1lKCkgLSBzdGFydAogICAgICAgICByZXN1bHQudGVz
dF9udW1iZXIgPSBzZWxmLl9udW1fdGVzdHMKICAgICAgICAgc2VsZi5fbnVtX3Rlc3RzICs9IDEK
IAotICAgICAgICBzZWxmLl9jYWxsZXIucG9zdCgnZmluaXNoZWRfdGVzdCcsIHJlc3VsdCkKKyAg
ICAgICAgaWYgVGFza1Bvb2wuUHJvY2Vzcy5xdWV1ZToKKyAgICAgICAgICAgIFRhc2tQb29sLlBy
b2Nlc3MucXVldWUuc2VuZChUYXNrUG9vbC5UYXNrKAorICAgICAgICAgICAgICAgIGhhbmRsZV9m
aW5pc2hlZF90ZXN0LCBOb25lLCBUYXNrUG9vbC5Qcm9jZXNzLm5hbWUsCisgICAgICAgICAgICAg
ICAgcmVzdWx0LAorICAgICAgICAgICAgKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGhh
bmRsZV9maW5pc2hlZF90ZXN0KFRhc2tQb29sLlByb2Nlc3MubmFtZSwgcmVzdWx0KQogCiAgICAg
ICAgIHNlbGYuX2NsZWFuX3VwX2FmdGVyX3Rlc3QodGVzdF9pbnB1dCwgcmVzdWx0KQogCkBAIC0z
MjAsMjAgKzM2OSw4IEBAIGNsYXNzIFdvcmtlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIGFk
ZGl0aW9uYWxfcmVzdWx0cy5hcHBlbmQodGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQodGVzdF9uYW1l
LCBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlRG9jdW1lbnRMZWFrKGRvY19saXN0KV0pKQogICAgICAg
ICByZXR1cm4gYWRkaXRpb25hbF9yZXN1bHRzCiAKLSAgICBkZWYgX2ZpbmlzaGVkX3Rlc3RfZ3Jv
dXAoc2VsZiwgdGVzdF9pbnB1dHMpOgotICAgICAgICBfbG9nLmRlYnVnKCIlcyBmaW5pc2hlZCB0
ZXN0IGdyb3VwIiAlIHNlbGYuX25hbWUpCi0KLSAgICAgICAgaWYgc2VsZi5fZHJpdmVyIGFuZCBz
ZWxmLl9kcml2ZXIuaGFzX2NyYXNoZWQoKToKLSAgICAgICAgICAgIHNlbGYuX2tpbGxfZHJpdmVy
KCkKLQotICAgICAgICBhZGRpdGlvbmFsX3Jlc3VsdHMgPSBbXQotICAgICAgICBpZiBub3Qgc2Vs
Zi5fb3B0aW9ucy5ydW5fc2luZ2x5OgotICAgICAgICAgICAgYWRkaXRpb25hbF9yZXN1bHRzID0g
c2VsZi5fZG9fcG9zdF90ZXN0c193b3JrKHNlbGYuX2RyaXZlcikKLQotICAgICAgICBzZWxmLl9j
YWxsZXIucG9zdCgnZmluaXNoZWRfdGVzdF9ncm91cCcsIGFkZGl0aW9uYWxfcmVzdWx0cykKLQog
ICAgIGRlZiBzdG9wKHNlbGYpOgotICAgICAgICBfbG9nLmRlYnVnKCIlcyBjbGVhbmluZyB1cCIg
JSBzZWxmLl9uYW1lKQorICAgICAgICBfbG9nLmRlYnVnKCd7fSBjbGVhbmluZyB1cCcuZm9ybWF0
KFRhc2tQb29sLlByb2Nlc3MubmFtZSkpCiAgICAgICAgIHNlbGYuX2tpbGxfZHJpdmVyKCkKIAog
ICAgIGRlZiBfdGltZW91dChzZWxmLCB0ZXN0X2lucHV0KToKQEAgLTM0NSw3ICszODIsNyBAQCBj
bGFzcyBXb3JrZXIob2JqZWN0KToKICAgICAgICAgIyBOb3RlIHRoYXQgd2UgbmVlZCB0byBjb252
ZXJ0IHRoZSB0ZXN0IHRpbWVvdXQgZnJvbSBhCiAgICAgICAgICMgc3RyaW5nIHZhbHVlIGluIG1p
bGxpc2Vjb25kcyB0byBhIGZsb2F0IGZvciBQeXRob24uCiAgICAgICAgIGRyaXZlcl90aW1lb3V0
X3NlYyA9IDMuMCAqIGZsb2F0KHRlc3RfaW5wdXQudGltZW91dCkgLyAxMDAwLjAKLSAgICAgICAg
aWYgbm90IHNlbGYuX29wdGlvbnMucnVuX3NpbmdseToKKyAgICAgICAgaWYgbm90IHNlbGYuX3Bv
cnQuZ2V0X29wdGlvbigncnVuX3NpbmdseScpOgogICAgICAgICAgICAgcmV0dXJuIGRyaXZlcl90
aW1lb3V0X3NlYwogCiAgICAgICAgIHRocmVhZF9wYWRkaW5nX3NlYyA9IDEuMApAQCAtMzU4LDEx
ICszOTUsMTEgQEAgY2xhc3MgV29ya2VyKG9iamVjdCk6CiAgICAgICAgIGRyaXZlciA9IHNlbGYu
X2RyaXZlcgogICAgICAgICBzZWxmLl9kcml2ZXIgPSBOb25lCiAgICAgICAgIGlmIGRyaXZlcjoK
LSAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzIGtpbGxpbmcgZHJpdmVyIiAlIHNlbGYuX25hbWUp
CisgICAgICAgICAgICBfbG9nLmRlYnVnKCd7fSBraWxsaW5nIGRyaXZlcicuZm9ybWF0KFRhc2tQ
b29sLlByb2Nlc3MubmFtZSkpCiAgICAgICAgICAgICBkcml2ZXIuc3RvcCgpCiAKICAgICBkZWYg
X3J1bl90ZXN0X3dpdGhfb3Jfd2l0aG91dF90aW1lb3V0KHNlbGYsIHRlc3RfaW5wdXQsIHRpbWVv
dXQsIHN0b3Bfd2hlbl9kb25lKToKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ydW5fc2luZ2x5
OgorICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3J1bl9zaW5nbHknKToKICAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9ydW5fdGVzdF9pbl9hbm90aGVyX3RocmVhZCh0ZXN0X2lucHV0
LCB0aW1lb3V0LCBzdG9wX3doZW5fZG9uZSkKICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl90ZXN0
X2luX3RoaXNfdGhyZWFkKHRlc3RfaW5wdXQsIHN0b3Bfd2hlbl9kb25lKQogCkBAIC0zNzcsMTMg
KzQxNCwxMyBAQCBjbGFzcyBXb3JrZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBzZWxmLl9i
YXRjaF9jb3VudCA9IDAKIAogICAgICAgICAgICAgIyBQcmludCB0aGUgZXJyb3IgbWVzc2FnZShz
KS4KLSAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzICVzIGZhaWxlZDoiICUgKHNlbGYuX25hbWUs
IHRlc3RfbmFtZSkpCisgICAgICAgICAgICBfbG9nLmRlYnVnKCd7fSB7fSBmYWlsZWQ6Jy5mb3Jt
YXQoVGFza1Bvb2wuUHJvY2Vzcy5uYW1lLCB0ZXN0X25hbWUpKQogICAgICAgICAgICAgZm9yIGYg
aW4gcmVzdWx0LmZhaWx1cmVzOgotICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzICAlcyIg
JSAoc2VsZi5fbmFtZSwgZi5tZXNzYWdlKCkpKQorICAgICAgICAgICAgICAgIF9sb2cuZGVidWco
J3t9ICB7fScuZm9ybWF0KFRhc2tQb29sLlByb2Nlc3MubmFtZSwgZi5tZXNzYWdlKCkpKQogICAg
ICAgICBlbGlmIHJlc3VsdC50eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLlNLSVA6Ci0gICAgICAg
ICAgICBfbG9nLmRlYnVnKCIlcyAlcyBza2lwcGVkIiAlIChzZWxmLl9uYW1lLCB0ZXN0X25hbWUp
KQorICAgICAgICAgICAgX2xvZy5kZWJ1Zygne30ge30gc2tpcHBlZCcuZm9ybWF0KFRhc2tQb29s
LlByb2Nlc3MubmFtZSwgdGVzdF9uYW1lKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIF9s
b2cuZGVidWcoIiVzICVzIHBhc3NlZCIgJSAoc2VsZi5fbmFtZSwgdGVzdF9uYW1lKSkKKyAgICAg
ICAgICAgIF9sb2cuZGVidWcoInt9IHt9IHBhc3NlZCIuZm9ybWF0KFRhc2tQb29sLlByb2Nlc3Mu
bmFtZSwgdGVzdF9uYW1lKSkKIAogICAgIGRlZiBfcnVuX3Rlc3RfaW5fYW5vdGhlcl90aHJlYWQo
c2VsZiwgdGVzdF9pbnB1dCwgdGhyZWFkX3RpbWVvdXRfc2VjLCBzdG9wX3doZW5fZG9uZSk6CiAg
ICAgICAgICIiIlJ1biBhIHRlc3QgaW4gYSBzZXBhcmF0ZSB0aHJlYWQsIGVuZm9yY2luZyBhIGhh
cmQgdGltZSBsaW1pdC4KQEAgLTQwMCw3ICs0MzcsNyBAQCBjbGFzcyBXb3JrZXIob2JqZWN0KToK
ICAgICAgICAgIiIiCiAgICAgICAgIHdvcmtlciA9IHNlbGYKIAotICAgICAgICBkcml2ZXIgPSBz
ZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIoc2VsZi5fd29ya2VyX251bWJlciwgc2VsZi5fb3B0aW9u
cy5ub190aW1lb3V0KQorICAgICAgICBkcml2ZXIgPSBzZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIo
aW50KChUYXNrUG9vbC5Qcm9jZXNzLm5hbWUpLnNwbGl0KCcvJylbLTFdKSwgc2VsZi5fcG9ydC5n
ZXRfb3B0aW9uKCdub190aW1lb3V0JykpCiAKICAgICAgICAgY2xhc3MgU2luZ2xlVGVzdFRocmVh
ZCh0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKQEAg
LTQ0OSwxMiArNDg2LDE1IEBAIGNsYXNzIFdvcmtlcihvYmplY3QpOgogICAgICAgICBpZiBzZWxm
Ll9kcml2ZXIgYW5kIHNlbGYuX2RyaXZlci5oYXNfY3Jhc2hlZCgpOgogICAgICAgICAgICAgc2Vs
Zi5fa2lsbF9kcml2ZXIoKQogICAgICAgICBpZiBub3Qgc2VsZi5fZHJpdmVyOgotICAgICAgICAg
ICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVyKHNlbGYuX3dvcmtlcl9u
dW1iZXIsIHNlbGYuX29wdGlvbnMubm9fdGltZW91dCkKKyAgICAgICAgICAgIHNlbGYuX2RyaXZl
ciA9IHNlbGYuX3BvcnQuY3JlYXRlX2RyaXZlcihpbnQoKFRhc2tQb29sLlByb2Nlc3MubmFtZSku
c3BsaXQoJy8nKVstMV0pLCBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ25vX3RpbWVvdXQnKSkKICAg
ICAgICAgcmV0dXJuIHNlbGYuX3J1bl9zaW5nbGVfdGVzdChzZWxmLl9kcml2ZXIsIHRlc3RfaW5w
dXQsIHN0b3Bfd2hlbl9kb25lKQogCiAgICAgZGVmIF9ydW5fc2luZ2xlX3Rlc3Qoc2VsZiwgZHJp
dmVyLCB0ZXN0X2lucHV0LCBzdG9wX3doZW5fZG9uZSk6Ci0gICAgICAgIHJldHVybiBzaW5nbGVf
dGVzdF9ydW5uZXIucnVuX3NpbmdsZV90ZXN0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsIHNl
bGYuX3Jlc3VsdHNfZGlyZWN0b3J5LAotICAgICAgICAgICAgc2VsZi5fbmFtZSwgZHJpdmVyLCB0
ZXN0X2lucHV0LCBzdG9wX3doZW5fZG9uZSkKKyAgICAgICAgcmV0dXJuIHNpbmdsZV90ZXN0X3J1
bm5lci5ydW5fc2luZ2xlX3Rlc3QoCisgICAgICAgICAgICBzZWxmLl9wb3J0LCBzZWxmLl9wb3J0
Ll9vcHRpb25zLCBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwKKyAgICAgICAgICAgIFRhc2tQb29s
LlByb2Nlc3MubmFtZSwKKyAgICAgICAgICAgIGRyaXZlciwgdGVzdF9pbnB1dCwgc3RvcF93aGVu
X2RvbmUsCisgICAgICAgICkKIAogCiBjbGFzcyBUZXN0U2hhcmQob2JqZWN0KToKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0
X3J1bm5lcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXJfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI3ODM2MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtMTMwLDIzICsxMzAsMjMgQEAgY2xhc3MgTGF5b3V0VGVzdFJ1bm5lclRlc3RzKHVuaXR0
ZXN0LlRlcwogICAgICAgICBleHBlY3RhdGlvbnMucGFyc2VfYWxsX2V4cGVjdGF0aW9ucygpCiAg
ICAgICAgIHJ1bm5lci5fZXhwZWN0YXRpb25zID0gZXhwZWN0YXRpb25zCiAKLSAgICAgICAgcnVu
X3Jlc3VsdHMgPSBUZXN0UnVuUmVzdWx0cyhleHBlY3RhdGlvbnMsIDEpCisgICAgICAgIHJ1bm5l
ci5fY3VycmVudF9ydW5fcmVzdWx0cyA9IFRlc3RSdW5SZXN1bHRzKGV4cGVjdGF0aW9ucywgMSkK
ICAgICAgICAgcmVzdWx0ID0gVGVzdFJlc3VsdCh0ZXN0LCBmYWlsdXJlcz1bdGVzdF9mYWlsdXJl
cy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoRGlkTm90T2NjdXIoKV0sIHJlZnRlc3RfdHlwZT1bJyE9
J10pCi0gICAgICAgIHJ1bm5lci5fdXBkYXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQocnVuX3Jlc3Vs
dHMsIHJlc3VsdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBydW5fcmVzdWx0cy5leHBl
Y3RlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5fcmVzdWx0cy51bmV4cGVjdGVk
KQorICAgICAgICBydW5uZXIudXBkYXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQocmVzdWx0KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHJ1bm5lci5fY3VycmVudF9ydW5fcmVzdWx0cy5leHBl
Y3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5uZXIuX2N1cnJlbnRfcnVuX3Jl
c3VsdHMudW5leHBlY3RlZCkKIAotICAgICAgICBydW5fcmVzdWx0cyA9IFRlc3RSdW5SZXN1bHRz
KGV4cGVjdGF0aW9ucywgMSkKKyAgICAgICAgcnVubmVyLl9jdXJyZW50X3J1bl9yZXN1bHRzID0g
VGVzdFJ1blJlc3VsdHMoZXhwZWN0YXRpb25zLCAxKQogICAgICAgICByZXN1bHQgPSBUZXN0UmVz
dWx0KHRlc3QsIGZhaWx1cmVzPVtdLCByZWZ0ZXN0X3R5cGU9Wyc9PSddKQotICAgICAgICBydW5u
ZXIuX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHJ1bl9yZXN1bHRzLCByZXN1bHQpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuX3Jlc3VsdHMuZXhwZWN0ZWQpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgcnVuX3Jlc3VsdHMudW5leHBlY3RlZCkKKyAgICAgICAgcnVubmVy
LnVwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgwLCBydW5uZXIuX2N1cnJlbnRfcnVuX3Jlc3VsdHMuZXhwZWN0ZWQpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgcnVubmVyLl9jdXJyZW50X3J1bl9yZXN1bHRzLnVuZXhwZWN0ZWQp
CiAKLSAgICAgICAgcnVuX3Jlc3VsdHMgPSBUZXN0UnVuUmVzdWx0cyhleHBlY3RhdGlvbnMsIDEp
CisgICAgICAgIHJ1bm5lci5fY3VycmVudF9ydW5fcmVzdWx0cyA9IFRlc3RSdW5SZXN1bHRzKGV4
cGVjdGF0aW9ucywgMSkKICAgICAgICAgcmVzdWx0ID0gVGVzdFJlc3VsdChsZWFrX3Rlc3QsIGZh
aWx1cmVzPVtdKQotICAgICAgICBydW5uZXIuX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHJ1
bl9yZXN1bHRzLCByZXN1bHQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcnVuX3Jlc3Vs
dHMuZXhwZWN0ZWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuX3Jlc3VsdHMudW5l
eHBlY3RlZCkKKyAgICAgICAgcnVubmVyLnVwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHJlc3Vs
dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBydW5uZXIuX2N1cnJlbnRfcnVuX3Jlc3Vs
dHMuZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVubmVyLl9jdXJyZW50
X3J1bl9yZXN1bHRzLnVuZXhwZWN0ZWQpCiAKICAgICBkZWYgdGVzdF9zZXJ2ZXJzX3N0YXJ0ZWQo
c2VsZik6CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CShyZXZpc2lvbiAy
NzgzNjMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkod29ya2luZyBj
b3B5KQpAQCAtMTgzLDEzICsxODMsNiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICMg
QW4gZW1wdHkgbGlzdCB3b3VsZCBpbmRpY2F0ZSBhIHBvcnQgd2FzIGluY2FwYWJsZSBvZiBydW5u
aW5nIHRlc3RzLgogICAgICAgICByZXR1cm4gW05vbmVdCiAKLSAgICBkZWYgd29ya2VyX3N0YXJ0
dXBfZGVsYXlfc2VjcyhzZWxmKToKLSAgICAgICAgIyBGSVhNRTogSWYgd2Ugc3RhcnQgd29ya2Vy
cyB1cCB0b28gcXVpY2tseSwgRHVtcFJlbmRlclRyZWUgYXBwZWFycwotICAgICAgICAjIHRvIHRo
cmFzaCBvbiBzb21ldGhpbmcgYW5kIHRpbWUgb3V0IGl0cyBmaXJzdCBmZXcgdGVzdHMuIFVudGls
Ci0gICAgICAgICMgd2UgY2FuIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uLCBzbGVlcCBhIGJp
dCBpbiBiZXR3ZWVuCi0gICAgICAgICMgd29ya2Vycy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03OTE0NyAuCi0gICAgICAgIHJldHVybiAwLjEKLQogICAgIGRl
ZiBiYXNlbGluZV9wYXRoKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGFic29sdXRlIHBh
dGggdG8gdGhlIGRpcmVjdG9yeSB0byBzdG9yZSBuZXcgYmFzZWxpbmVzIGluIGZvciB0aGlzIHBv
cnQuIiIiCiAgICAgICAgICMgRklYTUU6IHJlbW92ZSBvbmNlIGFsbCBjYWxsZXJzIGFyZSBjYWxs
aW5nIGVpdGhlciBiYXNlbGluZV92ZXJzaW9uX2RpcigpIG9yIGJhc2VsaW5lX3BsYXRmb3JtX2Rp
cigpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weQkocmV2aXNpb24gMjc4MzYz
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTM5Myw5ICszOTMsNiBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToKICAgICBkZWYgZGVmYXVs
dF9jaGlsZF9wcm9jZXNzZXMoc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICByZXR1cm4gMQogCi0g
ICAgZGVmIHdvcmtlcl9zdGFydHVwX2RlbGF5X3NlY3Moc2VsZik6Ci0gICAgICAgIHJldHVybiAw
Ci0KICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZik6CiAgICAgICAgIHJldHVybiBUcnVlCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430418</attachid>
            <date>2021-06-02 16:42:33 -0700</date>
            <delta_ts>2021-06-03 15:01:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226234-20210602164232.patch</filename>
            <type>text/plain</type>
            <size>30731</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3ODM4MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDYwIEBACisyMDIxLTA2LTAyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcnVuLXdlYmtpdC10ZXN0c10gVXNlIHdlYmtpdGNvcmVweSdzIFRhc2tQ
b29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYy
MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc4NDcxNjk1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9ydW4td2Via2l0LXRlc3Rz
OiBTdG9wIHVzaW5nIG11bHRpcHJvY2Vzc2luZ19ib290c3RyYXAuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5
OgorICAgICAgICAoc2V0dXBfc2hhcmQpOiBSdW4gc2V0dXAgaW4gV29ya2VyIHByb2Nlc3MuCisg
ICAgICAgIChoYW5kbGVfc3RhcnRlZF90ZXN0KTogTm90aWZ5IHBhcmVudCBwcm9jZXNzIHRoYXQg
YSB0ZXN0IGhhcyBzdGFydGVkLgorICAgICAgICAocnVuX3NoYXJkKTogUnVuIHRlc3Qgc2hhcmQg
aW4gV29ya2VyIHByb2Nlc3MuCisgICAgICAgIChoYW5kbGVfZmluaXNoZWRfdGVzdCk6IE5vdGlm
eSBwYXJlbnQgcHJvY2VzcyB0aGF0IGEgdGVzdCBoYXMgZmluaXNoZWQuCisgICAgICAgICh0ZWFy
ZG93bl9zaGFyZCk6IFRlYXJkb3duIHdvcmtlciBwcm9jZXNzIG1ldGFkYXRhLgorICAgICAgICAo
TGF5b3V0VGVzdFJ1bm5lci5fX2luaXRfXyk6IE1ha2UgcHJpbnRlciBwdWJsaWMuCisgICAgICAg
IChMYXlvdXRUZXN0UnVubmVyLnJ1bl90ZXN0cyk6IFVzZSBUYXNrUG9vbCB0byBzcGF3biBtdWx0
aXBsZSB3b3JrZXJzLgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lci51cGRhdGVfc3VtbWFyeV93
aXRoX3Jlc3VsdCk6IFJlbmFtZWQgZnJvbQorICAgICAgICBfdXBkYXRlX3N1bW1hcnlfd2l0aF9y
ZXN1bHQsIHN0cmlwIHVudXNlZCBhcmd1bWVudHMuCisgICAgICAgIChMYXlvdXRUZXN0UnVubmVy
Ll9hbm5vdGF0ZV9yZXN1bHRzX3dpdGhfYWRkaXRpb25hbF9mYWlsdXJlcyk6IFN0cmlwCisgICAg
ICAgIHVudXNlZCBhcmd1bWVudHMuCisgICAgICAgIChMYXlvdXRUZXN0UnVubmVyLnN0YXJ0X3Nl
cnZlcnMpOiBNYWtlIHByaW50ZXIgcHVibGljLgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lci5z
dG9wX3NlcnZlcnMpOiBEaXR0by4KKyAgICAgICAgKFdvcmtlci5zZXR1cCk6IEluc3RhbnRpYXRl
IHNpbmdsZXRvbiB3b3JrZXIuCisgICAgICAgIChXb3JrZXIudGVhcmRvd24pOiBUZWFyZG93biBz
aW5nbGV0b24gd29ya2VyLgorICAgICAgICAoV29ya2VyLl9faW5pdF9fKTogUGFzcyBwb3J0IG9i
amVjdCwgcmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KKyAgICAgICAgKFdvcmtlci5ydW5fdGVzdHMp
OiBVc2UgVGFza1Bvb2wgcHJvY2VzcyBuYW1lLgorICAgICAgICAoV29ya2VyLnN0b3ApOiBEaXR0
by4KKyAgICAgICAgKFdvcmtlci5fa2lsbF9kcml2ZXIpOiBVc2UgcG9ydCBvcHRpb25zLCB1c2Ug
VGFza1Bvb2wgcHJvY2VzcyBuYW1lLgorICAgICAgICAoV29ya2VyLl9ydW5fdGVzdF93aXRoX29y
X3dpdGhvdXRfdGltZW91dCk6IERpdHRvLgorICAgICAgICAoV29ya2VyLl9jbGVhbl91cF9hZnRl
cl90ZXN0KTogVXNlIFRhc2tQb29sIHByb2Nlc3MgbmFtZS4KKyAgICAgICAgKFdvcmtlci5fcnVu
X3Rlc3RfaW5fYW5vdGhlcl90aHJlYWQpOiBEaXR0by4KKyAgICAgICAgKFdvcmtlci5fcnVuX3Rl
c3RfaW5fdGhpc190aHJlYWQpOiBEaXR0by4KKyAgICAgICAgKFdvcmtlci5fcnVuX3NpbmdsZV90
ZXN0KTogVXNlIHBvcnQgb3B0aW9ucy4KKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX3dvcmtl
cl9mYWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX2hhbmRsZV9k
aWRfc3Bhd25fd29ya2VyKTogRGVsZXRlZC4KKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX3Vw
ZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KTogRGVsZXRlZC4KKyAgICAgICAgKExheW91dFRlc3RS
dW5uZXIuaGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX2hhbmRs
ZV9zdGFydGVkX3Rlc3QpOiBEZWxldGVkLgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lci5faGFu
ZGxlX2ZpbmlzaGVkX3Rlc3QpOiBEZWxldGVkLgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lci5f
aGFuZGxlX2ZpbmlzaGVkX3Rlc3RfZ3JvdXApOiBEZWxldGVkLgorICAgICAgICAoV29ya2VyLl9f
ZGVsX18pOiBEZWxldGVkLgorICAgICAgICAoV29ya2VyLnN0YXJ0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdvcmtlci5oYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV29ya2VyLl9ydW5fdGVzdCk6
IERlbGV0ZWQuCisgICAgICAgIChXb3JrZXIuX2ZpbmlzaGVkX3Rlc3RfZ3JvdXApOiBEZWxldGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xh
eW91dF90ZXN0X3J1bm5lcl91bml0dGVzdC5weToKKyAgICAgICAgKExheW91dFRlc3RSdW5uZXJU
ZXN0cy50ZXN0X3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KTogVGhlIHJ1bm5lciBrZWVwcyB0
cmFjayBvZiBpdCdzIHN0YXRlLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bl93ZWJraXRfdGVzdHMucHk6IFJlbW92ZSBjYWxsIHRvIG1haW4uCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlv
bnRlc3QucHk6CisgICAgICAgIChSdW5UZXN0LnNlcmlhbF90ZXN0X2Jhc2ljKTogUnVuIGFsbCB0
ZXN0cyBpbiB0aGUgc2FtZSBwcm9jZXNzLgorICAgICAgICAoUnVuVGVzdC50ZXN0X2h1bmdfdGhy
ZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weToK
KyAgICAgICAgKFBvcnQud29ya2VyX3N0YXJ0dXBfZGVsYXlfc2Vjcyk6IERlbGV0ZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHk6CisgICAgICAgIChQb3J0Lndvcmtl
cl9zdGFydHVwX2RlbGF5X3NlY3MpOiBEZWxldGVkLgorCiAyMDIxLTA2LTAyICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Via2l0Y29yZXB5XSBUYXNr
UG9vbCBzaG91bGRuJ3QgZm9yayB3aGVuIDEgcHJvY2VzcyBpcyBuZWVkZWQKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1
bi13ZWJraXQtdGVzdHMJKHJldmlzaW9uIDI3ODM4MCkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLXdl
YmtpdC10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogIiIiV3JhcHBlciBh
cm91bmQgd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkiIiIKIGltcG9y
dCBzeXMKIAotZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IG11bHRpcHJvY2Vzc2luZ19ib290
c3RyYXAKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnJ1bl93ZWJraXRfdGVzdHMgaW1wb3J0
IG1haW4KIAogaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CiAgICAgaW1wb3J0
IG9zCkBAIC00Miw0ICs0Miw1IEBAIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcp
OgogICAgIGltcG9ydCBmbGF0cGFrdXRpbHMKICAgICBmbGF0cGFrdXRpbHMucnVuX2luX3NhbmRi
b3hfaWZfYXZhaWxhYmxlKHN5cy5hcmd2KQogCi1tdWx0aXByb2Nlc3NpbmdfYm9vdHN0cmFwLnJ1
bignd2Via2l0cHknLCAnbGF5b3V0X3Rlc3RzJywgJ3J1bl93ZWJraXRfdGVzdHMucHknKQoraWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2WzE6XSwg
c3lzLnN0ZG91dCwgc3lzLnN0ZGVycikpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkJKHJldmlzaW9uIDI3
ODM4MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDYgQEAgZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcHRwYXJzZQog
aW1wb3J0IG9zCi1pbXBvcnQgc2lnbmFsCi1pbXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCiAK
IGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKQEAgLTQ5MSw2ICs0ODksMyBA
QCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIGxvZ2dpbmdfc3RyCiAgICAgICAgIHJldHVy
biBydW5fZGV0YWlscwogICAgIGZpbmFsbHk6CiAgICAgICAgIHByaW50ZXIuY2xlYW51cCgpCi0K
LWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgc3lzLmV4aXQobWFpbihzeXMuYXJndlsx
Ol0sIHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkJKHJldmlzaW9uIDI3ODM4MCkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAgY2xhc3MgUnVuVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSwgU3RyZWFtVAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRldGFpbHMu
aW5pdGlhbF9yZXN1bHRzLnRvdGFsLCB0ZXN0LlRPVEFMX1RFU1RTKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRldGFpbHMuaW5pdGlhbF9yZXN1bHRzLmV4cGVjdGVkX3NraXBzLCB0ZXN0LlRP
VEFMX1NLSVBTKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkZXRhaWxzLmluaXRpYWxf
cmVzdWx0cy51bmV4cGVjdGVkX3Jlc3VsdHNfYnlfbmFtZSksIHRlc3QuVU5FWFBFQ1RFRF9QQVNT
RVMgKyB0ZXN0LlVORVhQRUNURURfRkFJTFVSRVMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZGV0YWlscy5leGl0X2NvZGUsIHRlc3QuVU5FWFBFQ1RFRF9GQUlMVVJFUykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChkZXRhaWxzLmV4aXRfY29kZSwgdGVzdC5VTkVYUEVDVEVEX0ZBSUxVUkVT
IC0gMSkgICMgZmFpbHVyZXMvZXhwZWN0ZWQvaGFuZy5odG1sIGFjdHVhbGx5IHBhc3NlcyB3aGVu
IHJ1biBpbiB0aGUgc2FtZSBwcm9jZXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGV0YWls
cy5yZXRyeV9yZXN1bHRzLnRvdGFsLCB0ZXN0LlRPVEFMX1JFVFJJRVMpCiAKICAgICAgICAgb25l
X2xpbmVfc3VtbWFyeSA9ICIlZCB0ZXN0cyByYW4gYXMgZXhwZWN0ZWQsICVkIGRpZG4ndDpcbiIg
JSAoCkBAIC0yNTUsMTMgKzI1NSw2IEBAIGNsYXNzIFJ1blRlc3QodW5pdHRlc3QuVGVzdENhc2Us
IFN0cmVhbVQKICAgICAgICAgZGV0YWlscywgXywgXyA9IGxvZ2dpbmdfcnVuKFsnLS1mdWxsLXJl
c3VsdHMtaHRtbCddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRldGFpbHMuZXhpdF9jb2Rl
LCAwKQogCi0gICAgZGVmIHRlc3RfaHVuZ190aHJlYWQoc2VsZik6Ci0gICAgICAgIGRldGFpbHMs
IGVyciwgXyA9IGxvZ2dpbmdfcnVuKFsnLS1ydW4tc2luZ2x5JywgJy0tdGltZS1vdXQtbXM9NTAn
LCAnZmFpbHVyZXMvZXhwZWN0ZWQvaGFuZy5odG1sJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUpCi0g
ICAgICAgICMgTm90ZSB0aGF0IGhhbmcuaHRtbCBpcyBtYXJrZWQgYXMgV29udEZpeCBhbmQgYWxs
IFdvbnRGaXggdGVzdHMgYXJlCi0gICAgICAgICMgZXhwZWN0ZWQgdG8gUGFzcywgc28gdGhhdCBh
Y3R1YWxseSBydW5uaW5nIHRoZW0gZ2VuZXJhdGVzIGFuICJ1bmV4cGVjdGVkIiBlcnJvci4KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXRhaWxzLmV4aXRfY29kZSwgMSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnROb3RFbXB0eShlcnIpCi0KICAgICBkZWYgdGVzdF9rZXlib2FyZF9pbnRlcnJ1cHQo
c2VsZik6CiAgICAgICAgICMgTm90ZSB0aGF0IHRoaXMgYWxzbyB0ZXN0cyBydW5uaW5nIGEgdGVz
dCBtYXJrZWQgYXMgU0tJUCBpZgogICAgICAgICAjIHlvdSBzcGVjaWZ5IGl0IGV4cGxpY2l0bHku
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9s
YXlvdXRfdGVzdF9ydW5uZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5CShyZXZpc2lv
biAyNzgzODApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDEx
IEBAIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0Y29yZXB5LnN0
cmluZ191dGlscyBpbXBvcnQgcGx1cmFsaXplCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVGFz
a1Bvb2wKIAogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IG1lc3NhZ2VfcG9vbAogZnJvbSB3
ZWJraXRweS5jb21tb24uaXRlcmF0aW9uX2NvbXBhdGliaWxpdHkgaW1wb3J0IGl0ZXJpdGVtcwor
ZnJvbSB3ZWJraXRweS5jb21tb24uaW50ZXJydXB0X2RlYnVnZ2luZyBpbXBvcnQgbG9nX3N0YWNr
X3RyYWNlX29uX3NpZ25hbAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMg
aW1wb3J0IHNpbmdsZV90ZXN0X3J1bm5lcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9k
ZWxzLnRlc3RfcnVuX3Jlc3VsdHMgaW1wb3J0IFRlc3RSdW5SZXN1bHRzCiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCkBAIC00Nyw4ICs0
OSw0MCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIFRlc3RFeHBlY3Rh
dGlvbnMgPSB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zCiAKLSMgRXhwb3J0IHRo
aXMgc28gY2FsbGVycyBkb24ndCBuZWVkIHRvIGtub3cgYWJvdXQgbWVzc2FnZSBwb29scy4KLVdv
cmtlckV4Y2VwdGlvbiA9IG1lc3NhZ2VfcG9vbC5Xb3JrZXJFeGNlcHRpb24KKworZGVmIHNldHVw
X3NoYXJkKHBvcnQ9Tm9uZSwgcmVzdWx0c19kaXJlY3Rvcnk9Tm9uZSwgZGV2aWNlcz1Ob25lLCBy
ZXRyeWluZz1GYWxzZSk6CisgICAgaWYgZGV2aWNlcyBhbmQgZ2V0YXR0cihwb3J0LCAnREVWSUNF
X01BTkFHRVInLCBOb25lKToKKyAgICAgICAgcG9ydC5ERVZJQ0VfTUFOQUdFUi5BVkFJTEFCTEVf
REVWSUNFUyA9IGRldmljZXMuZ2V0KCdhdmFpbGFibGVfZGV2aWNlcycsIFtdKQorICAgICAgICBw
b3J0LkRFVklDRV9NQU5BR0VSLklOSVRJQUxJWkVEX0RFVklDRVMgPSBkZXZpY2VzLmdldCgnaW5p
dGlhbGl6ZWRfZGV2aWNlcycsIE5vbmUpCisKKyAgICBpZiByZXRyeWluZzoKKyAgICAgICAgcmVz
dWx0c19kaXJlY3RvcnkgPSBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5qb2luKHJlc3VsdHNfZGlyZWN0
b3J5LCAncmV0cmllcycpCisgICAgICAgIHBvcnQuaG9zdC5maWxlc3lzdGVtLm1heWJlX21ha2Vf
ZGlyZWN0b3J5KHJlc3VsdHNfZGlyZWN0b3J5KQorCisgICAgc3RhY2tfdHJhY2VfcGF0aCA9IHBv
cnQuaG9zdC5maWxlc3lzdGVtLmpvaW4ocmVzdWx0c19kaXJlY3RvcnksICdweXRob25fc3RhY2tf
dHJhY2UudHh0JykKKyAgICBsb2dfc3RhY2tfdHJhY2Vfb25fc2lnbmFsKCdTSUdURVJNJywgb3V0
cHV0X2ZpbGU9c3RhY2tfdHJhY2VfcGF0aCkKKyAgICBsb2dfc3RhY2tfdHJhY2Vfb25fc2lnbmFs
KCdTSUdJTlQnLCBvdXRwdXRfZmlsZT1zdGFja190cmFjZV9wYXRoKQorCisgICAgcG9ydC5kaWRf
c3Bhd25fd29ya2VyKGludCgoVGFza1Bvb2wuUHJvY2Vzcy5uYW1lKS5zcGxpdCgnLycpWy0xXSkp
CisgICAgcmV0dXJuIFdvcmtlci5zZXR1cChwb3J0PXBvcnQsIHJlc3VsdHNfZGlyZWN0b3J5PXJl
c3VsdHNfZGlyZWN0b3J5KQorCisKK2RlZiBoYW5kbGVfc3RhcnRlZF90ZXN0KHdvcmtlciwgbmFt
ZSk6CisgICAgaWYgTGF5b3V0VGVzdFJ1bm5lci5pbnN0YW5jZToKKyAgICAgICAgTGF5b3V0VGVz
dFJ1bm5lci5pbnN0YW5jZS5wcmludGVyLnByaW50X3N0YXJ0ZWRfdGVzdChuYW1lKQorCisKK2Rl
ZiBydW5fc2hhcmQoc2hhcmQpOgorICAgIHJldHVybiBXb3JrZXIuaW5zdGFuY2UucnVuX3Rlc3Rz
KHNoYXJkKQorCisKK2RlZiBoYW5kbGVfZmluaXNoZWRfdGVzdCh3b3JrZXIsIHJlc3VsdCk6Cisg
ICAgaWYgTGF5b3V0VGVzdFJ1bm5lci5pbnN0YW5jZToKKyAgICAgICAgTGF5b3V0VGVzdFJ1bm5l
ci5pbnN0YW5jZS51cGRhdGVfc3VtbWFyeV93aXRoX3Jlc3VsdChyZXN1bHQpCisKKworZGVmIHRl
YXJkb3duX3NoYXJkKCk6CisgICAgcmV0dXJuIFdvcmtlci50ZWFyZG93bigpCiAKIAogY2xhc3Mg
VGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9uKEV4Y2VwdGlvbik6CkBAIC02MywxMCArOTcsMTIg
QEAgY2xhc3MgVGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9uKEV4Y2VwdAogCiAKIGNsYXNzIExh
eW91dFRlc3RSdW5uZXIob2JqZWN0KToKKyAgICBpbnN0YW5jZSA9IE5vbmUKKwogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBvcHRpb25zLCBwb3J0LCBwcmludGVyLCByZXN1bHRzX2RpcmVjdG9yeSwg
bmVlZHNfaHR0cD1GYWxzZSwgbmVlZHNfd2Vic29ja2V0cz1GYWxzZSwgbmVlZHNfd2ViX3BsYXRm
b3JtX3Rlc3Rfc2VydmVyPUZhbHNlKToKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMK
ICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKLSAgICAgICAgc2VsZi5fcHJpbnRlciA9IHByaW50
ZXIKKyAgICAgICAgc2VsZi5wcmludGVyID0gcHJpbnRlcgogICAgICAgICBzZWxmLl9yZXN1bHRz
X2RpcmVjdG9yeSA9IHJlc3VsdHNfZGlyZWN0b3J5CiAgICAgICAgIHNlbGYuX25lZWRzX2h0dHAg
PSBuZWVkc19odHRwCiAgICAgICAgIHNlbGYuX25lZWRzX3dlYnNvY2tldHMgPSBuZWVkc193ZWJz
b2NrZXRzCkBAIC0xMDAsNDggKzEzNiw2MyBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyKG9iamVj
dCk6CiAgICAgICAgICMgRklYTUU6IHJlbmFtZSBhbGwgdmFyaWFibGVzIHRvIHRlc3RfcnVuX3Jl
c3VsdHMgb3Igc29tZSBzdWNoIC4uLgogICAgICAgICBydW5fcmVzdWx0cyA9IFRlc3RSdW5SZXN1
bHRzKHNlbGYuX2V4cGVjdGF0aW9ucywgbGVuKHRlc3RfaW5wdXRzKSkKICAgICAgICAgc2VsZi5f
Y3VycmVudF9ydW5fcmVzdWx0cyA9IHJ1bl9yZXN1bHRzCi0gICAgICAgIHNlbGYuX3ByaW50ZXIu
bnVtX3Rlc3RzID0gbGVuKHRlc3RfaW5wdXRzKQotICAgICAgICBzZWxmLl9wcmludGVyLm51bV9z
dGFydGVkID0gMAorICAgICAgICBzZWxmLnByaW50ZXIubnVtX3Rlc3RzID0gbGVuKHRlc3RfaW5w
dXRzKQorICAgICAgICBzZWxmLnByaW50ZXIubnVtX3N0YXJ0ZWQgPSAwCiAKICAgICAgICAgaWYg
bm90IHJldHJ5aW5nOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9leHBlY3RlZChy
dW5fcmVzdWx0cywgc2VsZi5fZXhwZWN0YXRpb25zLm1vZGVsKCkuZ2V0X3Rlc3RzX3dpdGhfcmVz
dWx0X3R5cGUpCisgICAgICAgICAgICBzZWxmLnByaW50ZXIucHJpbnRfZXhwZWN0ZWQocnVuX3Jl
c3VsdHMsIHNlbGYuX2V4cGVjdGF0aW9ucy5tb2RlbCgpLmdldF90ZXN0c193aXRoX3Jlc3VsdF90
eXBlKQogCi0gICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKCdTaGFyZGluZyB0ZXN0
cyAuLi4nKQorICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdTaGFyZGluZyB0ZXN0
cyAuLi4nKQogICAgICAgICBhbGxfc2hhcmRzID0gc2VsZi5fc2hhcmRlci5zaGFyZF90ZXN0cyh0
ZXN0X2lucHV0cywgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgc2VsZi5fb3B0
aW9ucy5mdWxseV9wYXJhbGxlbCkKIAotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3dvcmtl
cnNfYW5kX3NoYXJkcyhudW1fd29ya2VycywgbGVuKGFsbF9zaGFyZHMpKQorICAgICAgICBudW1f
d29ya2VycyA9IG1pbihudW1fd29ya2VycywgbGVuKGFsbF9zaGFyZHMpKQorICAgICAgICBzZWxm
LnByaW50ZXIucHJpbnRfd29ya2Vyc19hbmRfc2hhcmRzKG51bV93b3JrZXJzLCBsZW4oYWxsX3No
YXJkcykpCiAKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgogICAgICAgICAgICAg
cmV0dXJuIHJ1bl9yZXN1bHRzCiAKLSAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUo
J1N0YXJ0aW5nICVzIC4uLicgJSBwbHVyYWxpemUobnVtX3dvcmtlcnMsICJ3b3JrZXIiKSkKKyAg
ICAgICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgnU3RhcnRpbmcgJXMgLi4uJyAlIHBsdXJh
bGl6ZShudW1fd29ya2VycywgIndvcmtlciIpKQorCisgICAgICAgIGRldmljZXMgPSBOb25lCisg
ICAgICAgIGlmIGdldGF0dHIoc2VsZi5fcG9ydCwgJ0RFVklDRV9NQU5BR0VSJywgTm9uZSk6Cisg
ICAgICAgICAgICBkZXZpY2VzID0gZGljdCgKKyAgICAgICAgICAgICAgICBhdmFpbGFibGVfZGV2
aWNlcz1zZWxmLl9wb3J0LkRFVklDRV9NQU5BR0VSLkFWQUlMQUJMRV9ERVZJQ0VTLAorICAgICAg
ICAgICAgICAgIGluaXRpYWxpemVkX2RldmljZXM9c2VsZi5fcG9ydC5ERVZJQ0VfTUFOQUdFUi5J
TklUSUFMSVpFRF9ERVZJQ0VTLAorICAgICAgICAgICAgKQogCiAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHdpdGggbWVzc2FnZV9wb29sLmdldChzZWxmLCBzZWxmLl93b3JrZXJfZmFjdG9yeSwg
bnVtX3dvcmtlcnMsIHNlbGYuX3BvcnQud29ya2VyX3N0YXJ0dXBfZGVsYXlfc2VjcygpLCBzZWxm
Ll9wb3J0Lmhvc3QpIGFzIHBvb2w6Ci0gICAgICAgICAgICAgICAgcG9vbC5ydW4oKCd0ZXN0X2xp
c3QnLCBzaGFyZC5uYW1lLCBzaGFyZC50ZXN0X2lucHV0cykgZm9yIHNoYXJkIGluIGFsbF9zaGFy
ZHMpCisgICAgICAgICAgICBMYXlvdXRUZXN0UnVubmVyLmluc3RhbmNlID0gc2VsZgorICAgICAg
ICAgICAgd2l0aCBUYXNrUG9vbCgKKyAgICAgICAgICAgICAgICB3b3JrZXJzPW51bV93b3JrZXJz
LAorICAgICAgICAgICAgICAgIHNldHVwPXNldHVwX3NoYXJkLCBzZXR1cGt3YXJncz1kaWN0KAor
ICAgICAgICAgICAgICAgICAgICBwb3J0PXNlbGYuX3BvcnQsCisgICAgICAgICAgICAgICAgICAg
IGRldmljZXM9ZGV2aWNlcywKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0c19kaXJlY3Rvcnk9
c2VsZi5fcmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgIHJldHJ5aW5nPXNl
bGYuX3JldHJ5aW5nLAorICAgICAgICAgICAgICAgICksIHRlYXJkb3duPXRlYXJkb3duX3NoYXJk
LAorICAgICAgICAgICAgKSBhcyBwb29sOgorICAgICAgICAgICAgICAgIGZvciBzaGFyZCBpbiBh
bGxfc2hhcmRzOgorICAgICAgICAgICAgICAgICAgICBwb29sLmRvKAorICAgICAgICAgICAgICAg
ICAgICAgICAgcnVuX3NoYXJkLCBzaGFyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrPWxhbWJkYSB2YWx1ZTogc2VsZi5fYW5ub3RhdGVfcmVzdWx0c193aXRoX2FkZGl0aW9uYWxf
ZmFpbHVyZXModmFsdWUpLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
cG9vbC53YWl0KCkKKwogICAgICAgICBleGNlcHQgVGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9u
IGFzIGU6CiAgICAgICAgICAgICBfbG9nLndhcm5pbmcoZS5yZWFzb24pCiAgICAgICAgICAgICBy
dW5fcmVzdWx0cy5pbnRlcnJ1cHRlZCA9IFRydWUKICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50
ZXJydXB0OgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5mbHVzaCgpCi0gICAgICAgICAgICBz
ZWxmLl9wcmludGVyLndyaXRlbG4oJ0ludGVycnVwdGVkLCBleGl0aW5nIC4uLicpCisgICAgICAg
ICAgICBzZWxmLnByaW50ZXIuZmx1c2goKQorICAgICAgICAgICAgc2VsZi5wcmludGVyLndyaXRl
bG4oJ0ludGVycnVwdGVkLCBleGl0aW5nIC4uLicpCiAgICAgICAgICAgICBydW5fcmVzdWx0cy5r
ZXlib2FyZF9pbnRlcnJ1cHRlZCA9IFRydWUKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl
OgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMoIiVzIikgcmFpc2VkLCBleGl0aW5nJyAlIChl
Ll9fY2xhc3NfXy5fX25hbWVfXywgc3RyKGUpKSkKKyAgICAgICAgICAgIF9sb2cuZGVidWcoJ3t9
KCJ7fSIpIHJhaXNlZCwgZXhpdGluZycuZm9ybWF0KGUuX19jbGFzc19fLl9fbmFtZV9fLCBzdHIo
ZSkpKQogICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIExh
eW91dFRlc3RSdW5uZXIuaW5zdGFuY2UgPSBOb25lCiAKICAgICAgICAgcmV0dXJuIHJ1bl9yZXN1
bHRzCiAKLSAgICBkZWYgX3dvcmtlcl9mYWN0b3J5KHNlbGYsIHdvcmtlcl9jb25uZWN0aW9uKToK
LSAgICAgICAgcmVzdWx0c19kaXJlY3RvcnkgPSBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeQotICAg
ICAgICBpZiBzZWxmLl9yZXRyeWluZzoKLSAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ubWF5
YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNfZGly
ZWN0b3J5LCAncmV0cmllcycpKQotICAgICAgICAgICAgcmVzdWx0c19kaXJlY3RvcnkgPSBzZWxm
Ll9maWxlc3lzdGVtLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksICdyZXRyaWVzJykKLSAg
ICAgICAgcmV0dXJuIFdvcmtlcih3b3JrZXJfY29ubmVjdGlvbiwgcmVzdWx0c19kaXJlY3Rvcnks
IHNlbGYuX29wdGlvbnMpCi0KLSAgICBkZWYgX2hhbmRsZV9kaWRfc3Bhd25fd29ya2VyKHNlbGYs
IHdvcmtlcl9udW1iZXIpOgotICAgICAgICBzZWxmLl9wb3J0LmRpZF9zcGF3bl93b3JrZXIod29y
a2VyX251bWJlcikKLQogICAgIGRlZiBfbWFya19pbnRlcnJ1cHRlZF90ZXN0c19hc19za2lwcGVk
KHNlbGYsIHJ1bl9yZXN1bHRzKToKICAgICAgICAgZm9yIHRlc3RfaW5wdXQgaW4gc2VsZi5fdGVz
dF9pbnB1dHM6CiAgICAgICAgICAgICBpZiB0ZXN0X2lucHV0LnRlc3RfbmFtZSBub3QgaW4gcnVu
X3Jlc3VsdHMucmVzdWx0c19ieV9uYW1lOgpAQCAtMTcyLDcgKzIyMyw3IEBAIGNsYXNzIExheW91
dFRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgICMgVGhpcyBkaWZmZXJzIGZyb20gT1JX
VCBiZWNhdXNlIGl0IGRvZXMgbm90IGluY2x1ZGUgV2ViUHJvY2VzcyBjcmFzaGVzLgogICAgICAg
ICAgICAgIkV4aXRpbmcgZWFybHkgYWZ0ZXIgJWQgY3Jhc2hlcyBhbmQgJWQgdGltZW91dHMuIiAl
IChydW5fcmVzdWx0cy51bmV4cGVjdGVkX2NyYXNoZXMsIHJ1bl9yZXN1bHRzLnVuZXhwZWN0ZWRf
dGltZW91dHMpKQogCi0gICAgZGVmIF91cGRhdGVfc3VtbWFyeV93aXRoX3Jlc3VsdChzZWxmLCBy
dW5fcmVzdWx0cywgcmVzdWx0KToKKyAgICBkZWYgdXBkYXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQo
c2VsZiwgcmVzdWx0KToKICAgICAgICAgaWYgcmVzdWx0LnR5cGUgPT0gdGVzdF9leHBlY3RhdGlv
bnMuU0tJUDoKICAgICAgICAgICAgIGV4cF9zdHIgPSBnb3Rfc3RyID0gJ1NLSVAnCiAgICAgICAg
ICAgICBleHBlY3RlZCA9IFRydWUKQEAgLTE4MiwxNSArMjMzLDE1IEBAIGNsYXNzIExheW91dFRl
c3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgIGV4cF9zdHIgPSBzZWxmLl9leHBlY3RhdGlv
bnMubW9kZWwoKS5leHBlY3RhdGlvbnNfdG9fc3RyaW5nKGV4cGVjdGF0aW9ucykKICAgICAgICAg
ICAgIGdvdF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMubW9kZWwoKS5leHBlY3RhdGlvbl90b19z
dHJpbmcocmVzdWx0LnR5cGUpCiAKLSAgICAgICAgcnVuX3Jlc3VsdHMuYWRkKHJlc3VsdCwgZXhw
ZWN0ZWQpCisgICAgICAgIHNlbGYuX2N1cnJlbnRfcnVuX3Jlc3VsdHMuYWRkKHJlc3VsdCwgZXhw
ZWN0ZWQpCiAKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9maW5pc2hlZF90ZXN0KHJlc3Vs
dCwgZXhwZWN0ZWQsIGV4cF9zdHIsIGdvdF9zdHIpCisgICAgICAgIHNlbGYucHJpbnRlci5wcmlu
dF9maW5pc2hlZF90ZXN0KHJlc3VsdCwgZXhwZWN0ZWQsIGV4cF9zdHIsIGdvdF9zdHIpCiAKLSAg
ICAgICAgc2VsZi5faW50ZXJydXB0X2lmX2F0X2ZhaWx1cmVfbGltaXRzKHJ1bl9yZXN1bHRzKQor
ICAgICAgICBzZWxmLl9pbnRlcnJ1cHRfaWZfYXRfZmFpbHVyZV9saW1pdHMoc2VsZi5fY3VycmVu
dF9ydW5fcmVzdWx0cykKIAotICAgIGRlZiBfYW5ub3RhdGVfcmVzdWx0c193aXRoX2FkZGl0aW9u
YWxfZmFpbHVyZXMoc2VsZiwgcnVuX3Jlc3VsdHMsIHJlc3VsdHMpOgorICAgIGRlZiBfYW5ub3Rh
dGVfcmVzdWx0c193aXRoX2FkZGl0aW9uYWxfZmFpbHVyZXMoc2VsZiwgcmVzdWx0cyk6CiAgICAg
ICAgIGZvciBuZXdfcmVzdWx0IGluIHJlc3VsdHM6Ci0gICAgICAgICAgICBleGlzdGluZ19yZXN1
bHQgPSBydW5fcmVzdWx0cy5yZXN1bHRzX2J5X25hbWUuZ2V0KG5ld19yZXN1bHQudGVzdF9uYW1l
KQorICAgICAgICAgICAgZXhpc3RpbmdfcmVzdWx0ID0gc2VsZi5fY3VycmVudF9ydW5fcmVzdWx0
cy5yZXN1bHRzX2J5X25hbWUuZ2V0KG5ld19yZXN1bHQudGVzdF9uYW1lKQogICAgICAgICAgICAg
IyBXaGVuIHJ1bm5pbmcgYSBjaHVuayAoLS1ydW4tY2h1bmspLCByZXN1bHRzX2J5X25hbWUgY29u
dGFpbnMgYWxsIHRoZSB0ZXN0cywgYnV0IChjb25mdXNpbmdseSkgYWxsX3Rlc3RzIG9ubHkgY29u
dGFpbnMgdGhvc2UgaW4gdGhlIGNodW5rIHRoYXQgd2FzIHJ1biwKICAgICAgICAgICAgICMgYW5k
IHdlIGRvbid0IHdhbnQgdG8gbW9kaWZ5IHRoZSByZXN1bHRzIG9mIGEgdGVzdCB0aGF0IGRpZG4n
dCBydW4uIGV4aXN0aW5nX3Jlc3VsdC50ZXN0X251bWJlciBpcyBvbmx5IG5vbi1Ob25lIGZvciB0
ZXN0cyB0aGF0IHJhbi4KICAgICAgICAgICAgIGlmIGV4aXN0aW5nX3Jlc3VsdCBhbmQgZXhpc3Rp
bmdfcmVzdWx0LnRlc3RfbnVtYmVyIGlzIG5vdCBOb25lOgpAQCAtMjAyLDExMCArMjUzLDEwMiBA
QCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIF9s
b2cud2FybmluZygnICAlcyAtPiBjaGFuZ2VkIGJ5IGxlYWsgZGV0ZWN0aW9uIGZyb20gYSAlcyAo
JXMpIHRvIGEgJXMgKCVzKScgJSAobmV3X3Jlc3VsdC50ZXN0X25hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXN0RXhwZWN0YXRpb25zLkVYUEVDVEFUSU9OX0RFU0NSSVBUSU9OW2V4aXN0
aW5nX3Jlc3VsdC50eXBlXSwgJ2V4cGVjdGVkJyBpZiB3YXNfZXhwZWN0ZWQgZWxzZSAndW5leHBl
Y3RlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0RXhwZWN0YXRpb25zLkVYUEVDVEFU
SU9OX0RFU0NSSVBUSU9OW25ld19yZXN1bHQudHlwZV0sICdleHBlY3RlZCcgaWYgbm93X2V4cGVj
dGVkIGVsc2UgJ3VuZXhwZWN0ZWQnKSkKLSAgICAgICAgICAgICAgICBydW5fcmVzdWx0cy5jaGFu
Z2VfcmVzdWx0X3RvX2ZhaWx1cmUoZXhpc3RpbmdfcmVzdWx0LCBuZXdfcmVzdWx0LCB3YXNfZXhw
ZWN0ZWQsIG5vd19leHBlY3RlZCkKKyAgICAgICAgICAgICAgICBzZWxmLl9jdXJyZW50X3J1bl9y
ZXN1bHRzLmNoYW5nZV9yZXN1bHRfdG9fZmFpbHVyZShleGlzdGluZ19yZXN1bHQsIG5ld19yZXN1
bHQsIHdhc19leHBlY3RlZCwgbm93X2V4cGVjdGVkKQogCiAgICAgZGVmIHN0YXJ0X3NlcnZlcnMo
c2VsZik6CiAgICAgICAgIGlmIHNlbGYuX25lZWRzX2h0dHAgYW5kIG5vdCBzZWxmLl9kaWRfc3Rh
cnRfaHR0cF9zZXJ2ZXIgYW5kIG5vdCBzZWxmLl9wb3J0LmlzX2h0dHBfc2VydmVyX3J1bm5pbmco
KToKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKCdTdGFydGluZyBIVFRQ
IHNlcnZlciAuLi4nKQorICAgICAgICAgICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgnU3Rh
cnRpbmcgSFRUUCBzZXJ2ZXIgLi4uJykKICAgICAgICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfaHR0
cF9zZXJ2ZXIoKQogICAgICAgICAgICAgc2VsZi5fZGlkX3N0YXJ0X2h0dHBfc2VydmVyID0gVHJ1
ZQogICAgICAgICBpZiBzZWxmLl9uZWVkc193ZWJzb2NrZXRzIGFuZCBub3Qgc2VsZi5fZGlkX3N0
YXJ0X3dlYnNvY2tldF9zZXJ2ZXIgYW5kIG5vdCBzZWxmLl9wb3J0LmlzX3dlYnNvY2tldF9zZXJ2
ZXJfcnVubmluZygpOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoJ1N0
YXJ0aW5nIFdlYlNvY2tldCBzZXJ2ZXIgLi4uJykKKyAgICAgICAgICAgIHNlbGYucHJpbnRlci53
cml0ZV91cGRhdGUoJ1N0YXJ0aW5nIFdlYlNvY2tldCBzZXJ2ZXIgLi4uJykKICAgICAgICAgICAg
IHNlbGYuX3BvcnQuc3RhcnRfd2Vic29ja2V0X3NlcnZlcigpCiAgICAgICAgICAgICBzZWxmLl9k
aWRfc3RhcnRfd2Vic29ja2V0X3NlcnZlciA9IFRydWUKICAgICAgICAgaWYgc2VsZi5fbmVlZHNf
d2ViX3BsYXRmb3JtX3Rlc3Rfc2VydmVyIGFuZCBub3Qgc2VsZi5fZGlkX3N0YXJ0X3dwdF9zZXJ2
ZXIgYW5kIG5vdCBzZWxmLl9wb3J0LmlzX3dwdF9zZXJ2ZXJfcnVubmluZygpOgotICAgICAgICAg
ICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoJ1N0YXJ0aW5nIFdlYiBQbGF0Zm9ybSBUZXN0
IHNlcnZlciAuLi4nKQorICAgICAgICAgICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgnU3Rh
cnRpbmcgV2ViIFBsYXRmb3JtIFRlc3Qgc2VydmVyIC4uLicpCiAgICAgICAgICAgICBzZWxmLl9w
b3J0LnN0YXJ0X3dlYl9wbGF0Zm9ybV90ZXN0X3NlcnZlcigpCiAgICAgICAgICAgICBzZWxmLl9k
aWRfc3RhcnRfd3B0X3NlcnZlciA9IFRydWUKIAogICAgIGRlZiBzdG9wX3NlcnZlcnMoc2VsZik6
CiAgICAgICAgIGlmIHNlbGYuX2RpZF9zdGFydF9odHRwX3NlcnZlcjoKLSAgICAgICAgICAgIHNl
bGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKCdTdG9wcGluZyBIVFRQIHNlcnZlciAuLi4nKQorICAg
ICAgICAgICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgnU3RvcHBpbmcgSFRUUCBzZXJ2ZXIg
Li4uJykKICAgICAgICAgICAgIHNlbGYuX3BvcnQuc3RvcF9odHRwX3NlcnZlcigpCiAgICAgICAg
ICAgICBzZWxmLl9kaWRfc3RhcnRfaHR0cF9zZXJ2ZXIgPSBGYWxzZQogICAgICAgICBpZiBzZWxm
Ll9kaWRfc3RhcnRfd2Vic29ja2V0X3NlcnZlcjoKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIu
d3JpdGVfdXBkYXRlKCdTdG9wcGluZyBXZWJTb2NrZXQgc2VydmVyIC4uLicpCisgICAgICAgICAg
ICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdTdG9wcGluZyBXZWJTb2NrZXQgc2VydmVyIC4u
LicpCiAgICAgICAgICAgICBzZWxmLl9wb3J0LnN0b3Bfd2Vic29ja2V0X3NlcnZlcigpCiAgICAg
ICAgICAgICBzZWxmLl9kaWRfc3RhcnRfd2Vic29ja2V0X3NlcnZlciA9IEZhbHNlCiAgICAgICAg
IGlmIHNlbGYuX2RpZF9zdGFydF93cHRfc2VydmVyOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRl
ci53cml0ZV91cGRhdGUoJ1N0b3BwaW5nIFdlYiBQbGF0Zm9ybSBUZXN0IHNlcnZlciAuLi4nKQor
ICAgICAgICAgICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgnU3RvcHBpbmcgV2ViIFBsYXRm
b3JtIFRlc3Qgc2VydmVyIC4uLicpCiAgICAgICAgICAgICBzZWxmLl9wb3J0LnN0b3Bfd2ViX3Bs
YXRmb3JtX3Rlc3Rfc2VydmVyKCkKICAgICAgICAgICAgIHNlbGYuX2RpZF9zdGFydF93cHRfc2Vy
dmVyID0gRmFsc2UKIAotICAgIGRlZiBoYW5kbGUoc2VsZiwgbmFtZSwgc291cmNlLCAqYXJncyk6
Ci0gICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2VsZiwgJ19oYW5kbGVfJyArIG5hbWUpCi0gICAg
ICAgIGlmIG1ldGhvZDoKLSAgICAgICAgICAgIHJldHVybiBtZXRob2Qoc291cmNlLCAqYXJncykK
LSAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ3Vua25vd24gbWVzc2FnZSAlcyByZWNlaXZl
ZCBmcm9tICVzLCBhcmdzPSVzJyAlIChuYW1lLCBzb3VyY2UsIHJlcHIoYXJncykpKQogCi0gICAg
ZGVmIF9oYW5kbGVfc3RhcnRlZF90ZXN0KHNlbGYsIHdvcmtlcl9uYW1lLCB0ZXN0X2lucHV0LCB0
ZXN0X3RpbWVvdXRfc2VjKToKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9zdGFydGVkX3Rl
c3QodGVzdF9pbnB1dC50ZXN0X25hbWUpCi0KLSAgICBkZWYgX2hhbmRsZV9maW5pc2hlZF90ZXN0
KHNlbGYsIHdvcmtlcl9uYW1lLCByZXN1bHQsIGxvZ19tZXNzYWdlcz1bXSk6Ci0gICAgICAgIHNl
bGYuX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHNlbGYuX2N1cnJlbnRfcnVuX3Jlc3VsdHMs
IHJlc3VsdCkKLQotICAgIGRlZiBfaGFuZGxlX2ZpbmlzaGVkX3Rlc3RfZ3JvdXAoc2VsZiwgd29y
a2VyX25hbWUsIG92ZXJsYXlfcmVzdWx0cywgbG9nX21lc3NhZ2VzPVtdKToKLSAgICAgICAgc2Vs
Zi5fYW5ub3RhdGVfcmVzdWx0c193aXRoX2FkZGl0aW9uYWxfZmFpbHVyZXMoc2VsZi5fY3VycmVu
dF9ydW5fcmVzdWx0cywgb3ZlcmxheV9yZXN1bHRzKQorY2xhc3MgV29ya2VyKG9iamVjdCk6Cisg
ICAgaW5zdGFuY2UgPSBOb25lCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0dXAoY2xz
LCBwb3J0PU5vbmUsIHJlc3VsdHNfZGlyZWN0b3J5PU5vbmUpOgorICAgICAgICBjbHMuaW5zdGFu
Y2UgPSBjbHMocG9ydD1wb3J0LCByZXN1bHRzX2RpcmVjdG9yeT1yZXN1bHRzX2RpcmVjdG9yeSkK
KworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyZG93bihjbHMpOgorICAgICAgICBpZiBj
bHMuaW5zdGFuY2U6CisgICAgICAgICAgICBjbHMuaW5zdGFuY2Uuc3RvcCgpCisgICAgICAgIGNs
cy5pbnN0YW5jZSA9IE5vbmUKIAotY2xhc3MgV29ya2VyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIGNhbGxlciwgcmVzdWx0c19kaXJlY3RvcnksIG9wdGlvbnMpOgotICAgICAgICBz
ZWxmLl9jYWxsZXIgPSBjYWxsZXIKLSAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IGNhbGxl
ci53b3JrZXJfbnVtYmVyCi0gICAgICAgIHNlbGYuX25hbWUgPSBjYWxsZXIubmFtZQorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwb3J0LCByZXN1bHRzX2RpcmVjdG9yeSk6CisgICAgICAgIHNlbGYu
X3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5ID0gcmVzdWx0c19k
aXJlY3RvcnkKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKIAotICAgICAgICAjIFRo
ZSByZW1haW5pbmcgZmllbGRzIGFyZSBpbml0aWFsaXplZCBpbiBzdGFydCgpCi0gICAgICAgIHNl
bGYuX2hvc3QgPSBOb25lCi0gICAgICAgIHNlbGYuX3BvcnQgPSBOb25lCi0gICAgICAgIHNlbGYu
X2JhdGNoX3NpemUgPSBOb25lCi0gICAgICAgIHNlbGYuX2JhdGNoX2NvdW50ID0gTm9uZQotICAg
ICAgICBzZWxmLl9maWxlc3lzdGVtID0gTm9uZQotICAgICAgICBzZWxmLl9kcml2ZXIgPSBOb25l
CiAgICAgICAgIHNlbGYuX251bV90ZXN0cyA9IDAKKyAgICAgICAgc2VsZi5fYmF0Y2hfY291bnQg
PSAwCisgICAgICAgIHNlbGYuX2RyaXZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5fYmF0Y2hfc2l6
ZSA9IHNlbGYuX3BvcnQuZ2V0X29wdGlvbignYmF0Y2hfc2l6ZScpIG9yIDAKIAotICAgIGRlZiBf
X2RlbF9fKHNlbGYpOgotICAgICAgICBzZWxmLnN0b3AoKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYp
OgotICAgICAgICAiIiJUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgb2JqZWN0IGlzIHN0
YXJ0aW5nIHRvIGJlIHVzZWQgYW5kIGl0IGlzIHNhZmUKLSAgICAgICAgZm9yIHRoZSBvYmplY3Qg
dG8gY3JlYXRlIHN0YXRlIHRoYXQgZG9lcyBub3QgbmVlZCB0byBiZSBwaWNrbGVkICh1c3VhbGx5
IHRoaXMgbWVhbnMKLSAgICAgICAgaXQgaXMgY2FsbGVkIGluIGEgY2hpbGQgcHJvY2VzcykuIiIi
Ci0gICAgICAgIHNlbGYuX2hvc3QgPSBzZWxmLl9jYWxsZXIuaG9zdAotICAgICAgICBzZWxmLl9m
aWxlc3lzdGVtID0gc2VsZi5faG9zdC5maWxlc3lzdGVtCi0gICAgICAgIHNlbGYuX3BvcnQgPSBz
ZWxmLl9ob3N0LnBvcnRfZmFjdG9yeS5nZXQoc2VsZi5fb3B0aW9ucy5wbGF0Zm9ybSwgc2VsZi5f
b3B0aW9ucykKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsIHNoYXJkKToKKyAgICAgICAgZm9yIGlu
cHV0IGluIHNoYXJkLnRlc3RfaW5wdXRzOgorICAgICAgICAgICAgaWYgbm90IFRhc2tQb29sLlBy
b2Nlc3Mud29ya2luZzoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgV29ya2Vy
Lmluc3RhbmNlLnJ1bl90ZXN0KGlucHV0LCBzaGFyZC5uYW1lKQogCi0gICAgICAgIHNlbGYuX2Jh
dGNoX2NvdW50ID0gMAotICAgICAgICBzZWxmLl9iYXRjaF9zaXplID0gc2VsZi5fb3B0aW9ucy5i
YXRjaF9zaXplIG9yIDAKKyAgICAgICAgX2xvZy5kZWJ1Zygne30gZmluaXNoZWQgdGVzdCBncm91
cCcuZm9ybWF0KFRhc2tQb29sLlByb2Nlc3MubmFtZSkpCiAKLSAgICBkZWYgaGFuZGxlKHNlbGYs
IG5hbWUsIHNvdXJjZSwgdGVzdF9saXN0X25hbWUsIHRlc3RfaW5wdXRzKToKLSAgICAgICAgYXNz
ZXJ0IG5hbWUgPT0gJ3Rlc3RfbGlzdCcKLSAgICAgICAgZm9yIHRlc3RfaW5wdXQgaW4gdGVzdF9p
bnB1dHM6Ci0gICAgICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2lucHV0LCB0ZXN0X2xpc3Rf
bmFtZSkKKyAgICAgICAgaWYgc2VsZi5fZHJpdmVyIGFuZCBzZWxmLl9kcml2ZXIuaGFzX2NyYXNo
ZWQoKToKKyAgICAgICAgICAgIHNlbGYuX2tpbGxfZHJpdmVyKCkKIAotICAgICAgICBzZWxmLl9m
aW5pc2hlZF90ZXN0X2dyb3VwKHRlc3RfaW5wdXRzKQorICAgICAgICBhZGRpdGlvbmFsX3Jlc3Vs
dHMgPSBbXQorICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdydW5fc2luZ2x5
Jyk6CisgICAgICAgICAgICBhZGRpdGlvbmFsX3Jlc3VsdHMgPSBzZWxmLl9kb19wb3N0X3Rlc3Rz
X3dvcmsoc2VsZi5fZHJpdmVyKQorICAgICAgICByZXR1cm4gYWRkaXRpb25hbF9yZXN1bHRzCiAK
LSAgICBkZWYgX3J1bl90ZXN0KHNlbGYsIHRlc3RfaW5wdXQsIHNoYXJkX25hbWUpOgorICAgIGRl
ZiBydW5fdGVzdChzZWxmLCB0ZXN0X2lucHV0LCBzaGFyZF9uYW1lKToKICAgICAgICAgc2VsZi5f
YmF0Y2hfY291bnQgKz0gMQogCiAgICAgICAgIHN0b3Bfd2hlbl9kb25lID0gRmFsc2UKLSAgICAg
ICAgaWYgc2VsZi5fYmF0Y2hfc2l6ZSA+IDAgYW5kIHNlbGYuX2JhdGNoX2NvdW50ID49IHNlbGYu
X2JhdGNoX3NpemU6CisgICAgICAgIGlmIDAgPCBzZWxmLl9iYXRjaF9zaXplIDw9IHNlbGYuX2Jh
dGNoX2NvdW50OgogICAgICAgICAgICAgc2VsZi5fYmF0Y2hfY291bnQgPSAwCiAgICAgICAgICAg
ICBzdG9wX3doZW5fZG9uZSA9IFRydWUKIAogICAgICAgICB0ZXN0X3RpbWVvdXRfc2VjID0gc2Vs
Zi5fdGltZW91dCh0ZXN0X2lucHV0KQogICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCi0gICAg
ICAgIHNlbGYuX2NhbGxlci5wb3N0KCdzdGFydGVkX3Rlc3QnLCB0ZXN0X2lucHV0LCB0ZXN0X3Rp
bWVvdXRfc2VjKQorCisgICAgICAgIFRhc2tQb29sLlByb2Nlc3MucXVldWUuc2VuZChUYXNrUG9v
bC5UYXNrKAorICAgICAgICAgICAgaGFuZGxlX3N0YXJ0ZWRfdGVzdCwgTm9uZSwgVGFza1Bvb2wu
UHJvY2Vzcy5uYW1lLAorICAgICAgICAgICAgdGVzdF9pbnB1dC50ZXN0X25hbWUsCisgICAgICAg
ICkpCiAKICAgICAgICAgcmVzdWx0ID0gc2VsZi5fcnVuX3Rlc3Rfd2l0aF9vcl93aXRob3V0X3Rp
bWVvdXQodGVzdF9pbnB1dCwgdGVzdF90aW1lb3V0X3NlYywgc3RvcF93aGVuX2RvbmUpCiAgICAg
ICAgIHJlc3VsdC5zaGFyZF9uYW1lID0gc2hhcmRfbmFtZQotICAgICAgICByZXN1bHQud29ya2Vy
X25hbWUgPSBzZWxmLl9uYW1lCisgICAgICAgIHJlc3VsdC53b3JrZXJfbmFtZSA9IFRhc2tQb29s
LlByb2Nlc3MubmFtZQogICAgICAgICByZXN1bHQudG90YWxfcnVuX3RpbWUgPSB0aW1lLnRpbWUo
KSAtIHN0YXJ0CiAgICAgICAgIHJlc3VsdC50ZXN0X251bWJlciA9IHNlbGYuX251bV90ZXN0cwog
ICAgICAgICBzZWxmLl9udW1fdGVzdHMgKz0gMQogCi0gICAgICAgIHNlbGYuX2NhbGxlci5wb3N0
KCdmaW5pc2hlZF90ZXN0JywgcmVzdWx0KQorICAgICAgICBUYXNrUG9vbC5Qcm9jZXNzLnF1ZXVl
LnNlbmQoVGFza1Bvb2wuVGFzaygKKyAgICAgICAgICAgIGhhbmRsZV9maW5pc2hlZF90ZXN0LCBO
b25lLCBUYXNrUG9vbC5Qcm9jZXNzLm5hbWUsCisgICAgICAgICAgICByZXN1bHQsCisgICAgICAg
ICkpCiAKICAgICAgICAgc2VsZi5fY2xlYW5fdXBfYWZ0ZXJfdGVzdCh0ZXN0X2lucHV0LCByZXN1
bHQpCiAKQEAgLTMyMCwyMCArMzYzLDggQEAgY2xhc3MgV29ya2VyKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgYWRkaXRpb25hbF9yZXN1bHRzLmFwcGVuZCh0ZXN0X3Jlc3VsdHMuVGVzdFJlc3Vs
dCh0ZXN0X25hbWUsIFt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVEb2N1bWVudExlYWsoZG9jX2xpc3Qp
XSkpCiAgICAgICAgIHJldHVybiBhZGRpdGlvbmFsX3Jlc3VsdHMKIAotICAgIGRlZiBfZmluaXNo
ZWRfdGVzdF9ncm91cChzZWxmLCB0ZXN0X2lucHV0cyk6Ci0gICAgICAgIF9sb2cuZGVidWcoIiVz
IGZpbmlzaGVkIHRlc3QgZ3JvdXAiICUgc2VsZi5fbmFtZSkKLQotICAgICAgICBpZiBzZWxmLl9k
cml2ZXIgYW5kIHNlbGYuX2RyaXZlci5oYXNfY3Jhc2hlZCgpOgotICAgICAgICAgICAgc2VsZi5f
a2lsbF9kcml2ZXIoKQotCi0gICAgICAgIGFkZGl0aW9uYWxfcmVzdWx0cyA9IFtdCi0gICAgICAg
IGlmIG5vdCBzZWxmLl9vcHRpb25zLnJ1bl9zaW5nbHk6Ci0gICAgICAgICAgICBhZGRpdGlvbmFs
X3Jlc3VsdHMgPSBzZWxmLl9kb19wb3N0X3Rlc3RzX3dvcmsoc2VsZi5fZHJpdmVyKQotCi0gICAg
ICAgIHNlbGYuX2NhbGxlci5wb3N0KCdmaW5pc2hlZF90ZXN0X2dyb3VwJywgYWRkaXRpb25hbF9y
ZXN1bHRzKQotCiAgICAgZGVmIHN0b3Aoc2VsZik6Ci0gICAgICAgIF9sb2cuZGVidWcoIiVzIGNs
ZWFuaW5nIHVwIiAlIHNlbGYuX25hbWUpCisgICAgICAgIF9sb2cuZGVidWcoJ3t9IGNsZWFuaW5n
IHVwJy5mb3JtYXQoVGFza1Bvb2wuUHJvY2Vzcy5uYW1lKSkKICAgICAgICAgc2VsZi5fa2lsbF9k
cml2ZXIoKQogCiAgICAgZGVmIF90aW1lb3V0KHNlbGYsIHRlc3RfaW5wdXQpOgpAQCAtMzQ1LDcg
KzM3Niw3IEBAIGNsYXNzIFdvcmtlcihvYmplY3QpOgogICAgICAgICAjIE5vdGUgdGhhdCB3ZSBu
ZWVkIHRvIGNvbnZlcnQgdGhlIHRlc3QgdGltZW91dCBmcm9tIGEKICAgICAgICAgIyBzdHJpbmcg
dmFsdWUgaW4gbWlsbGlzZWNvbmRzIHRvIGEgZmxvYXQgZm9yIFB5dGhvbi4KICAgICAgICAgZHJp
dmVyX3RpbWVvdXRfc2VjID0gMy4wICogZmxvYXQodGVzdF9pbnB1dC50aW1lb3V0KSAvIDEwMDAu
MAotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5ydW5fc2luZ2x5OgorICAgICAgICBpZiBu
b3Qgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdydW5fc2luZ2x5Jyk6CiAgICAgICAgICAgICByZXR1
cm4gZHJpdmVyX3RpbWVvdXRfc2VjCiAKICAgICAgICAgdGhyZWFkX3BhZGRpbmdfc2VjID0gMS4w
CkBAIC0zNTgsMTEgKzM4OSwxMSBAQCBjbGFzcyBXb3JrZXIob2JqZWN0KToKICAgICAgICAgZHJp
dmVyID0gc2VsZi5fZHJpdmVyCiAgICAgICAgIHNlbGYuX2RyaXZlciA9IE5vbmUKICAgICAgICAg
aWYgZHJpdmVyOgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMga2lsbGluZyBkcml2ZXIiICUg
c2VsZi5fbmFtZSkKKyAgICAgICAgICAgIF9sb2cuZGVidWcoJ3t9IGtpbGxpbmcgZHJpdmVyJy5m
b3JtYXQoVGFza1Bvb2wuUHJvY2Vzcy5uYW1lKSkKICAgICAgICAgICAgIGRyaXZlci5zdG9wKCkK
IAogICAgIGRlZiBfcnVuX3Rlc3Rfd2l0aF9vcl93aXRob3V0X3RpbWVvdXQoc2VsZiwgdGVzdF9p
bnB1dCwgdGltZW91dCwgc3RvcF93aGVuX2RvbmUpOgotICAgICAgICBpZiBzZWxmLl9vcHRpb25z
LnJ1bl9zaW5nbHk6CisgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigncnVuX3Npbmds
eScpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl90ZXN0X2luX2Fub3RoZXJfdGhyZWFk
KHRlc3RfaW5wdXQsIHRpbWVvdXQsIHN0b3Bfd2hlbl9kb25lKQogICAgICAgICByZXR1cm4gc2Vs
Zi5fcnVuX3Rlc3RfaW5fdGhpc190aHJlYWQodGVzdF9pbnB1dCwgc3RvcF93aGVuX2RvbmUpCiAK
QEAgLTM3NywxMyArNDA4LDEzIEBAIGNsYXNzIFdvcmtlcihvYmplY3QpOgogICAgICAgICAgICAg
ICAgIHNlbGYuX2JhdGNoX2NvdW50ID0gMAogCiAgICAgICAgICAgICAjIFByaW50IHRoZSBlcnJv
ciBtZXNzYWdlKHMpLgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgZmFpbGVkOiIgJSAo
c2VsZi5fbmFtZSwgdGVzdF9uYW1lKSkKKyAgICAgICAgICAgIF9sb2cuZGVidWcoJ3t9IHt9IGZh
aWxlZDonLmZvcm1hdChUYXNrUG9vbC5Qcm9jZXNzLm5hbWUsIHRlc3RfbmFtZSkpCiAgICAgICAg
ICAgICBmb3IgZiBpbiByZXN1bHQuZmFpbHVyZXM6Ci0gICAgICAgICAgICAgICAgX2xvZy5kZWJ1
ZygiJXMgICVzIiAlIChzZWxmLl9uYW1lLCBmLm1lc3NhZ2UoKSkpCisgICAgICAgICAgICAgICAg
X2xvZy5kZWJ1Zygne30gIHt9Jy5mb3JtYXQoVGFza1Bvb2wuUHJvY2Vzcy5uYW1lLCBmLm1lc3Nh
Z2UoKSkpCiAgICAgICAgIGVsaWYgcmVzdWx0LnR5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuU0tJ
UDoKLSAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzICVzIHNraXBwZWQiICUgKHNlbGYuX25hbWUs
IHRlc3RfbmFtZSkpCisgICAgICAgICAgICBfbG9nLmRlYnVnKCd7fSB7fSBza2lwcGVkJy5mb3Jt
YXQoVGFza1Bvb2wuUHJvY2Vzcy5uYW1lLCB0ZXN0X25hbWUpKQogICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgcGFzc2VkIiAlIChzZWxmLl9uYW1lLCB0ZXN0X25h
bWUpKQorICAgICAgICAgICAgX2xvZy5kZWJ1Zygie30ge30gcGFzc2VkIi5mb3JtYXQoVGFza1Bv
b2wuUHJvY2Vzcy5uYW1lLCB0ZXN0X25hbWUpKQogCiAgICAgZGVmIF9ydW5fdGVzdF9pbl9hbm90
aGVyX3RocmVhZChzZWxmLCB0ZXN0X2lucHV0LCB0aHJlYWRfdGltZW91dF9zZWMsIHN0b3Bfd2hl
bl9kb25lKToKICAgICAgICAgIiIiUnVuIGEgdGVzdCBpbiBhIHNlcGFyYXRlIHRocmVhZCwgZW5m
b3JjaW5nIGEgaGFyZCB0aW1lIGxpbWl0LgpAQCAtNDAwLDcgKzQzMSw3IEBAIGNsYXNzIFdvcmtl
cihvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgd29ya2VyID0gc2VsZgogCi0gICAgICAg
IGRyaXZlciA9IHNlbGYuX3BvcnQuY3JlYXRlX2RyaXZlcihzZWxmLl93b3JrZXJfbnVtYmVyLCBz
ZWxmLl9vcHRpb25zLm5vX3RpbWVvdXQpCisgICAgICAgIGRyaXZlciA9IHNlbGYuX3BvcnQuY3Jl
YXRlX2RyaXZlcihpbnQoKFRhc2tQb29sLlByb2Nlc3MubmFtZSkuc3BsaXQoJy8nKVstMV0pLCBz
ZWxmLl9wb3J0LmdldF9vcHRpb24oJ25vX3RpbWVvdXQnKSkKIAogICAgICAgICBjbGFzcyBTaW5n
bGVUZXN0VGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAgICAgZGVmIF9faW5pdF9f
KHNlbGYpOgpAQCAtNDQ5LDEyICs0ODAsMTUgQEAgY2xhc3MgV29ya2VyKG9iamVjdCk6CiAgICAg
ICAgIGlmIHNlbGYuX2RyaXZlciBhbmQgc2VsZi5fZHJpdmVyLmhhc19jcmFzaGVkKCk6CiAgICAg
ICAgICAgICBzZWxmLl9raWxsX2RyaXZlcigpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9kcml2ZXI6
Ci0gICAgICAgICAgICBzZWxmLl9kcml2ZXIgPSBzZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIoc2Vs
Zi5fd29ya2VyX251bWJlciwgc2VsZi5fb3B0aW9ucy5ub190aW1lb3V0KQorICAgICAgICAgICAg
c2VsZi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVyKGludCgoVGFza1Bvb2wuUHJv
Y2Vzcy5uYW1lKS5zcGxpdCgnLycpWy0xXSksIHNlbGYuX3BvcnQuZ2V0X29wdGlvbignbm9fdGlt
ZW91dCcpKQogICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3NpbmdsZV90ZXN0KHNlbGYuX2RyaXZl
ciwgdGVzdF9pbnB1dCwgc3RvcF93aGVuX2RvbmUpCiAKICAgICBkZWYgX3J1bl9zaW5nbGVfdGVz
dChzZWxmLCBkcml2ZXIsIHRlc3RfaW5wdXQsIHN0b3Bfd2hlbl9kb25lKToKLSAgICAgICAgcmV0
dXJuIHNpbmdsZV90ZXN0X3J1bm5lci5ydW5fc2luZ2xlX3Rlc3Qoc2VsZi5fcG9ydCwgc2VsZi5f
b3B0aW9ucywgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksCi0gICAgICAgICAgICBzZWxmLl9uYW1l
LCBkcml2ZXIsIHRlc3RfaW5wdXQsIHN0b3Bfd2hlbl9kb25lKQorICAgICAgICByZXR1cm4gc2lu
Z2xlX3Rlc3RfcnVubmVyLnJ1bl9zaW5nbGVfdGVzdCgKKyAgICAgICAgICAgIHNlbGYuX3BvcnQs
IHNlbGYuX3BvcnQuX29wdGlvbnMsIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LAorICAgICAgICAg
ICAgVGFza1Bvb2wuUHJvY2Vzcy5uYW1lLAorICAgICAgICAgICAgZHJpdmVyLCB0ZXN0X2lucHV0
LCBzdG9wX3doZW5fZG9uZSwKKyAgICAgICAgKQogCiAKIGNsYXNzIFRlc3RTaGFyZChvYmplY3Qp
OgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bGF5b3V0X3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lcl91
bml0dGVzdC5weQkocmV2aXNpb24gMjc4MzgwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0xMzAsMjMgKzEzMCwyMyBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVy
VGVzdHModW5pdHRlc3QuVGVzCiAgICAgICAgIGV4cGVjdGF0aW9ucy5wYXJzZV9hbGxfZXhwZWN0
YXRpb25zKCkKICAgICAgICAgcnVubmVyLl9leHBlY3RhdGlvbnMgPSBleHBlY3RhdGlvbnMKIAot
ICAgICAgICBydW5fcmVzdWx0cyA9IFRlc3RSdW5SZXN1bHRzKGV4cGVjdGF0aW9ucywgMSkKKyAg
ICAgICAgcnVubmVyLl9jdXJyZW50X3J1bl9yZXN1bHRzID0gVGVzdFJ1blJlc3VsdHMoZXhwZWN0
YXRpb25zLCAxKQogICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0KHRlc3QsIGZhaWx1cmVzPVt0
ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1cigpXSwgcmVmdGVz
dF90eXBlPVsnIT0nXSkKLSAgICAgICAgcnVubmVyLl91cGRhdGVfc3VtbWFyeV93aXRoX3Jlc3Vs
dChydW5fcmVzdWx0cywgcmVzdWx0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHJ1bl9y
ZXN1bHRzLmV4cGVjdGVkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bl9yZXN1bHRz
LnVuZXhwZWN0ZWQpCisgICAgICAgIHJ1bm5lci51cGRhdGVfc3VtbWFyeV93aXRoX3Jlc3VsdChy
ZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcnVubmVyLl9jdXJyZW50X3J1bl9y
ZXN1bHRzLmV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bm5lci5fY3Vy
cmVudF9ydW5fcmVzdWx0cy51bmV4cGVjdGVkKQogCi0gICAgICAgIHJ1bl9yZXN1bHRzID0gVGVz
dFJ1blJlc3VsdHMoZXhwZWN0YXRpb25zLCAxKQorICAgICAgICBydW5uZXIuX2N1cnJlbnRfcnVu
X3Jlc3VsdHMgPSBUZXN0UnVuUmVzdWx0cyhleHBlY3RhdGlvbnMsIDEpCiAgICAgICAgIHJlc3Vs
dCA9IFRlc3RSZXN1bHQodGVzdCwgZmFpbHVyZXM9W10sIHJlZnRlc3RfdHlwZT1bJz09J10pCi0g
ICAgICAgIHJ1bm5lci5fdXBkYXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQocnVuX3Jlc3VsdHMsIHJl
c3VsdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5fcmVzdWx0cy5leHBlY3RlZCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBydW5fcmVzdWx0cy51bmV4cGVjdGVkKQorICAg
ICAgICBydW5uZXIudXBkYXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQocmVzdWx0KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDAsIHJ1bm5lci5fY3VycmVudF9ydW5fcmVzdWx0cy5leHBlY3RlZCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBydW5uZXIuX2N1cnJlbnRfcnVuX3Jlc3VsdHMu
dW5leHBlY3RlZCkKIAotICAgICAgICBydW5fcmVzdWx0cyA9IFRlc3RSdW5SZXN1bHRzKGV4cGVj
dGF0aW9ucywgMSkKKyAgICAgICAgcnVubmVyLl9jdXJyZW50X3J1bl9yZXN1bHRzID0gVGVzdFJ1
blJlc3VsdHMoZXhwZWN0YXRpb25zLCAxKQogICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0KGxl
YWtfdGVzdCwgZmFpbHVyZXM9W10pCi0gICAgICAgIHJ1bm5lci5fdXBkYXRlX3N1bW1hcnlfd2l0
aF9yZXN1bHQocnVuX3Jlc3VsdHMsIHJlc3VsdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgx
LCBydW5fcmVzdWx0cy5leHBlY3RlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5f
cmVzdWx0cy51bmV4cGVjdGVkKQorICAgICAgICBydW5uZXIudXBkYXRlX3N1bW1hcnlfd2l0aF9y
ZXN1bHQocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHJ1bm5lci5fY3VycmVu
dF9ydW5fcmVzdWx0cy5leHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5u
ZXIuX2N1cnJlbnRfcnVuX3Jlc3VsdHMudW5leHBlY3RlZCkKIAogICAgIGRlZiB0ZXN0X3NlcnZl
cnNfc3RhcnRlZChzZWxmKToKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jh
c2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJ
KHJldmlzaW9uIDI3ODM4MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0xODMsMTMgKzE4Myw2IEBAIGNsYXNzIFBvcnQob2JqZWN0KToK
ICAgICAgICAgIyBBbiBlbXB0eSBsaXN0IHdvdWxkIGluZGljYXRlIGEgcG9ydCB3YXMgaW5jYXBh
YmxlIG9mIHJ1bm5pbmcgdGVzdHMuCiAgICAgICAgIHJldHVybiBbTm9uZV0KIAotICAgIGRlZiB3
b3JrZXJfc3RhcnR1cF9kZWxheV9zZWNzKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiBJZiB3ZSBz
dGFydCB3b3JrZXJzIHVwIHRvbyBxdWlja2x5LCBEdW1wUmVuZGVyVHJlZSBhcHBlYXJzCi0gICAg
ICAgICMgdG8gdGhyYXNoIG9uIHNvbWV0aGluZyBhbmQgdGltZSBvdXQgaXRzIGZpcnN0IGZldyB0
ZXN0cy4gVW50aWwKLSAgICAgICAgIyB3ZSBjYW4gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24s
IHNsZWVwIGEgYml0IGluIGJldHdlZW4KLSAgICAgICAgIyB3b3JrZXJzLiBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQ3IC4KLSAgICAgICAgcmV0dXJuIDAu
MQotCiAgICAgZGVmIGJhc2VsaW5lX3BhdGgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUg
YWJzb2x1dGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHRvIHN0b3JlIG5ldyBiYXNlbGluZXMgaW4g
Zm9yIHRoaXMgcG9ydC4iIiIKICAgICAgICAgIyBGSVhNRTogcmVtb3ZlIG9uY2UgYWxsIGNhbGxl
cnMgYXJlIGNhbGxpbmcgZWl0aGVyIGJhc2VsaW5lX3ZlcnNpb25fZGlyKCkgb3IgYmFzZWxpbmVf
cGxhdGZvcm1fZGlyKCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5CShyZXZp
c2lvbiAyNzgzODApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMzkzLDkgKzM5Myw2IEBAIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAg
IGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmLCAqKmt3YXJncyk6CiAgICAgICAgIHJl
dHVybiAxCiAKLSAgICBkZWYgd29ya2VyX3N0YXJ0dXBfZGVsYXlfc2VjcyhzZWxmKToKLSAgICAg
ICAgcmV0dXJuIDAKLQogICAgIGRlZiBjaGVja19idWlsZChzZWxmKToKICAgICAgICAgcmV0dXJu
IFRydWUKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430503</attachid>
            <date>2021-06-03 15:01:27 -0700</date>
            <delta_ts>2021-06-04 07:04:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226234-20210603150126.patch</filename>
            <type>text/plain</type>
            <size>30698</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3ODQyMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDYwIEBACisyMDIxLTA2LTAyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcnVuLXdlYmtpdC10ZXN0c10gVXNlIHdlYmtpdGNvcmVweSdzIFRhc2tQ
b29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYy
MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc4NDcxNjk1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERld2VpIFpodS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLXdlYmtpdC10ZXN0czogU3Rv
cCB1c2luZyBtdWx0aXByb2Nlc3NpbmdfYm9vdHN0cmFwLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weToKKyAg
ICAgICAgKHNldHVwX3NoYXJkKTogUnVuIHNldHVwIGluIFdvcmtlciBwcm9jZXNzLgorICAgICAg
ICAoaGFuZGxlX3N0YXJ0ZWRfdGVzdCk6IE5vdGlmeSBwYXJlbnQgcHJvY2VzcyB0aGF0IGEgdGVz
dCBoYXMgc3RhcnRlZC4KKyAgICAgICAgKHJ1bl9zaGFyZCk6IFJ1biB0ZXN0IHNoYXJkIGluIFdv
cmtlciBwcm9jZXNzLgorICAgICAgICAoaGFuZGxlX2ZpbmlzaGVkX3Rlc3QpOiBOb3RpZnkgcGFy
ZW50IHByb2Nlc3MgdGhhdCBhIHRlc3QgaGFzIGZpbmlzaGVkLgorICAgICAgICAodGVhcmRvd25f
c2hhcmQpOiBUZWFyZG93biB3b3JrZXIgcHJvY2VzcyBtZXRhZGF0YS4KKyAgICAgICAgKExheW91
dFRlc3RSdW5uZXIuX19pbml0X18pOiBNYWtlIHByaW50ZXIgcHVibGljLgorICAgICAgICAoTGF5
b3V0VGVzdFJ1bm5lci5ydW5fdGVzdHMpOiBVc2UgVGFza1Bvb2wgdG8gc3Bhd24gbXVsdGlwbGUg
d29ya2Vycy4KKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIudXBkYXRlX3N1bW1hcnlfd2l0aF9y
ZXN1bHQpOiBSZW5hbWVkIGZyb20KKyAgICAgICAgX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0
LCBzdHJpcCB1bnVzZWQgYXJndW1lbnRzLgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lci5fYW5u
b3RhdGVfcmVzdWx0c193aXRoX2FkZGl0aW9uYWxfZmFpbHVyZXMpOiBTdHJpcAorICAgICAgICB1
bnVzZWQgYXJndW1lbnRzLgorICAgICAgICAoTGF5b3V0VGVzdFJ1bm5lci5zdGFydF9zZXJ2ZXJz
KTogTWFrZSBwcmludGVyIHB1YmxpYy4KKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuc3RvcF9z
ZXJ2ZXJzKTogRGl0dG8uCisgICAgICAgIChXb3JrZXIuc2V0dXApOiBJbnN0YW50aWF0ZSBzaW5n
bGV0b24gd29ya2VyLgorICAgICAgICAoV29ya2VyLnRlYXJkb3duKTogVGVhcmRvd24gc2luZ2xl
dG9uIHdvcmtlci4KKyAgICAgICAgKFdvcmtlci5fX2luaXRfXyk6IFBhc3MgcG9ydCBvYmplY3Qs
IHJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCisgICAgICAgIChXb3JrZXIucnVuX3Rlc3RzKTogVXNl
IFRhc2tQb29sIHByb2Nlc3MgbmFtZS4KKyAgICAgICAgKFdvcmtlci5zdG9wKTogRGl0dG8uCisg
ICAgICAgIChXb3JrZXIuX2tpbGxfZHJpdmVyKTogVXNlIHBvcnQgb3B0aW9ucywgdXNlIFRhc2tQ
b29sIHByb2Nlc3MgbmFtZS4KKyAgICAgICAgKFdvcmtlci5fcnVuX3Rlc3Rfd2l0aF9vcl93aXRo
b3V0X3RpbWVvdXQpOiBEaXR0by4KKyAgICAgICAgKFdvcmtlci5fY2xlYW5fdXBfYWZ0ZXJfdGVz
dCk6IFVzZSBUYXNrUG9vbCBwcm9jZXNzIG5hbWUuCisgICAgICAgIChXb3JrZXIuX3J1bl90ZXN0
X2luX2Fub3RoZXJfdGhyZWFkKTogRGl0dG8uCisgICAgICAgIChXb3JrZXIuX3J1bl90ZXN0X2lu
X3RoaXNfdGhyZWFkKTogRGl0dG8uCisgICAgICAgIChXb3JrZXIuX3J1bl9zaW5nbGVfdGVzdCk6
IFVzZSBwb3J0IG9wdGlvbnMuCisgICAgICAgIChMYXlvdXRUZXN0UnVubmVyLl93b3JrZXJfZmFj
dG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChMYXlvdXRUZXN0UnVubmVyLl9oYW5kbGVfZGlkX3Nw
YXduX3dvcmtlcik6IERlbGV0ZWQuCisgICAgICAgIChMYXlvdXRUZXN0UnVubmVyLl91cGRhdGVf
c3VtbWFyeV93aXRoX3Jlc3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChMYXlvdXRUZXN0UnVubmVy
LmhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChMYXlvdXRUZXN0UnVubmVyLl9oYW5kbGVfc3Rh
cnRlZF90ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX2hhbmRsZV9m
aW5pc2hlZF90ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKExheW91dFRlc3RSdW5uZXIuX2hhbmRs
ZV9maW5pc2hlZF90ZXN0X2dyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtlci5fX2RlbF9f
KTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtlci5zdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChX
b3JrZXIuaGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtlci5fcnVuX3Rlc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV29ya2VyLl9maW5pc2hlZF90ZXN0X2dyb3VwKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRf
dGVzdF9ydW5uZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChMYXlvdXRUZXN0UnVubmVyVGVzdHMu
dGVzdF91cGRhdGVfc3VtbWFyeV93aXRoX3Jlc3VsdCk6IFRoZSBydW5uZXIga2VlcHMgdHJhY2sg
b2YgaXQncyBzdGF0ZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5OiBSZW1vdmUgY2FsbCB0byBtYWluLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0
LnB5OgorICAgICAgICAoUnVuVGVzdC5zZXJpYWxfdGVzdF9iYXNpYyk6IFJ1biBhbGwgdGVzdHMg
aW4gdGhlIHNhbWUgcHJvY2Vzcy4KKyAgICAgICAgKFJ1blRlc3QudGVzdF9odW5nX3RocmVhZCk6
IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAg
ICAgIChQb3J0Lndvcmtlcl9zdGFydHVwX2RlbGF5X3NlY3MpOiBEZWxldGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5OgorICAgICAgICAoUG9ydC53b3JrZXJfc3Rh
cnR1cF9kZWxheV9zZWNzKTogRGVsZXRlZC4KKwogMjAyMS0wNi0wMiAgUm9iIEJ1aXMgIDxyYnVp
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNwbGl0IEZpbGxJbmxpbmVQYXRoL1N0cm9rZUlubGlu
ZVBhdGgKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMJKHJldmlzaW9uIDI3ODQyMikKKysrIFRv
b2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NyBAQAogIiIiV3JhcHBlciBhcm91bmQgd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHMucHkiIiIKIGltcG9ydCBzeXMKIAotZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IG11
bHRpcHJvY2Vzc2luZ19ib290c3RyYXAKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnJ1bl93
ZWJraXRfdGVzdHMgaW1wb3J0IG1haW4KIAogaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xp
bnV4Jyk6CiAgICAgaW1wb3J0IG9zCkBAIC00Miw0ICs0Miw1IEBAIGlmIHN5cy5wbGF0Zm9ybS5z
dGFydHN3aXRoKCdsaW51eCcpOgogICAgIGltcG9ydCBmbGF0cGFrdXRpbHMKICAgICBmbGF0cGFr
dXRpbHMucnVuX2luX3NhbmRib3hfaWZfYXZhaWxhYmxlKHN5cy5hcmd2KQogCi1tdWx0aXByb2Nl
c3NpbmdfYm9vdHN0cmFwLnJ1bignd2Via2l0cHknLCAnbGF5b3V0X3Rlc3RzJywgJ3J1bl93ZWJr
aXRfdGVzdHMucHknKQoraWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdCht
YWluKHN5cy5hcmd2WzE6XSwgc3lzLnN0ZG91dCwgc3lzLnN0ZGVycikpCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkJKHJldmlzaW9uIDI3ODQyMikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDYg
QEAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IG9zCi1pbXBvcnQgc2lnbmFsCi1pbXBvcnQgc3lzCiBp
bXBvcnQgdHJhY2ViYWNrCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QK
QEAgLTQ5MSw2ICs0ODksMyBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIGxvZ2dpbmdf
c3RyCiAgICAgICAgIHJldHVybiBydW5fZGV0YWlscwogICAgIGZpbmFsbHk6CiAgICAgICAgIHBy
aW50ZXIuY2xlYW51cCgpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgc3lzLmV4
aXQobWFpbihzeXMuYXJndlsxOl0sIHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIpKQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3Jh
dGlvbnRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkJKHJldmlzaW9uIDI3ODQy
MikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHNfaW50ZWdyYXRpb250ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAg
Y2xhc3MgUnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgU3RyZWFtVAogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRldGFpbHMuaW5pdGlhbF9yZXN1bHRzLnRvdGFsLCB0ZXN0LlRPVEFMX1RFU1RT
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRldGFpbHMuaW5pdGlhbF9yZXN1bHRzLmV4cGVj
dGVkX3NraXBzLCB0ZXN0LlRPVEFMX1NLSVBTKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihkZXRhaWxzLmluaXRpYWxfcmVzdWx0cy51bmV4cGVjdGVkX3Jlc3VsdHNfYnlfbmFtZSksIHRl
c3QuVU5FWFBFQ1RFRF9QQVNTRVMgKyB0ZXN0LlVORVhQRUNURURfRkFJTFVSRVMpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZGV0YWlscy5leGl0X2NvZGUsIHRlc3QuVU5FWFBFQ1RFRF9GQUlM
VVJFUykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXRhaWxzLmV4aXRfY29kZSwgdGVzdC5V
TkVYUEVDVEVEX0ZBSUxVUkVTIC0gMSkgICMgZmFpbHVyZXMvZXhwZWN0ZWQvaGFuZy5odG1sIGFj
dHVhbGx5IHBhc3NlcyB3aGVuIHJ1biBpbiB0aGUgc2FtZSBwcm9jZXNzCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZGV0YWlscy5yZXRyeV9yZXN1bHRzLnRvdGFsLCB0ZXN0LlRPVEFMX1JFVFJJ
RVMpCiAKICAgICAgICAgb25lX2xpbmVfc3VtbWFyeSA9ICIlZCB0ZXN0cyByYW4gYXMgZXhwZWN0
ZWQsICVkIGRpZG4ndDpcbiIgJSAoCkBAIC0yNTUsMTMgKzI1NSw2IEBAIGNsYXNzIFJ1blRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVQKICAgICAgICAgZGV0YWlscywgXywgXyA9IGxvZ2dp
bmdfcnVuKFsnLS1mdWxsLXJlc3VsdHMtaHRtbCddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGRldGFpbHMuZXhpdF9jb2RlLCAwKQogCi0gICAgZGVmIHRlc3RfaHVuZ190aHJlYWQoc2VsZik6
Ci0gICAgICAgIGRldGFpbHMsIGVyciwgXyA9IGxvZ2dpbmdfcnVuKFsnLS1ydW4tc2luZ2x5Jywg
Jy0tdGltZS1vdXQtbXM9NTAnLCAnZmFpbHVyZXMvZXhwZWN0ZWQvaGFuZy5odG1sJ10sIHRlc3Rz
X2luY2x1ZGVkPVRydWUpCi0gICAgICAgICMgTm90ZSB0aGF0IGhhbmcuaHRtbCBpcyBtYXJrZWQg
YXMgV29udEZpeCBhbmQgYWxsIFdvbnRGaXggdGVzdHMgYXJlCi0gICAgICAgICMgZXhwZWN0ZWQg
dG8gUGFzcywgc28gdGhhdCBhY3R1YWxseSBydW5uaW5nIHRoZW0gZ2VuZXJhdGVzIGFuICJ1bmV4
cGVjdGVkIiBlcnJvci4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXRhaWxzLmV4aXRfY29k
ZSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShlcnIpCi0KICAgICBkZWYgdGVzdF9r
ZXlib2FyZF9pbnRlcnJ1cHQoc2VsZik6CiAgICAgICAgICMgTm90ZSB0aGF0IHRoaXMgYWxzbyB0
ZXN0cyBydW5uaW5nIGEgdGVzdCBtYXJrZWQgYXMgU0tJUCBpZgogICAgICAgICAjIHlvdSBzcGVj
aWZ5IGl0IGV4cGxpY2l0bHkuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3Rf
cnVubmVyLnB5CShyZXZpc2lvbiAyNzg0MjIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDkgKzMyLDExIEBAIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiAKIGZy
b20gd2Via2l0Y29yZXB5LnN0cmluZ191dGlscyBpbXBvcnQgcGx1cmFsaXplCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgVGFza1Bvb2wKIAogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IG1l
c3NhZ2VfcG9vbAogZnJvbSB3ZWJraXRweS5jb21tb24uaXRlcmF0aW9uX2NvbXBhdGliaWxpdHkg
aW1wb3J0IGl0ZXJpdGVtcworZnJvbSB3ZWJraXRweS5jb21tb24uaW50ZXJydXB0X2RlYnVnZ2lu
ZyBpbXBvcnQgbG9nX3N0YWNrX3RyYWNlX29uX3NpZ25hbAogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IHNpbmdsZV90ZXN0X3J1bm5lcgogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfcnVuX3Jlc3VsdHMgaW1wb3J0IFRlc3RSdW5SZXN1
bHRzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZXhwZWN0
YXRpb25zCkBAIC00Nyw4ICs0OSw0MCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1l
X18pCiAKIFRlc3RFeHBlY3RhdGlvbnMgPSB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRp
b25zCiAKLSMgRXhwb3J0IHRoaXMgc28gY2FsbGVycyBkb24ndCBuZWVkIHRvIGtub3cgYWJvdXQg
bWVzc2FnZSBwb29scy4KLVdvcmtlckV4Y2VwdGlvbiA9IG1lc3NhZ2VfcG9vbC5Xb3JrZXJFeGNl
cHRpb24KKworZGVmIHNldHVwX3NoYXJkKHBvcnQ9Tm9uZSwgcmVzdWx0c19kaXJlY3Rvcnk9Tm9u
ZSwgZGV2aWNlcz1Ob25lLCByZXRyeWluZz1GYWxzZSk6CisgICAgaWYgZGV2aWNlcyBhbmQgZ2V0
YXR0cihwb3J0LCAnREVWSUNFX01BTkFHRVInLCBOb25lKToKKyAgICAgICAgcG9ydC5ERVZJQ0Vf
TUFOQUdFUi5BVkFJTEFCTEVfREVWSUNFUyA9IGRldmljZXMuZ2V0KCdhdmFpbGFibGVfZGV2aWNl
cycsIFtdKQorICAgICAgICBwb3J0LkRFVklDRV9NQU5BR0VSLklOSVRJQUxJWkVEX0RFVklDRVMg
PSBkZXZpY2VzLmdldCgnaW5pdGlhbGl6ZWRfZGV2aWNlcycsIE5vbmUpCisKKyAgICBpZiByZXRy
eWluZzoKKyAgICAgICAgcmVzdWx0c19kaXJlY3RvcnkgPSBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5q
b2luKHJlc3VsdHNfZGlyZWN0b3J5LCAncmV0cmllcycpCisgICAgICAgIHBvcnQuaG9zdC5maWxl
c3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHJlc3VsdHNfZGlyZWN0b3J5KQorCisgICAgc3Rh
Y2tfdHJhY2VfcGF0aCA9IHBvcnQuaG9zdC5maWxlc3lzdGVtLmpvaW4ocmVzdWx0c19kaXJlY3Rv
cnksICdweXRob25fc3RhY2tfdHJhY2UudHh0JykKKyAgICBsb2dfc3RhY2tfdHJhY2Vfb25fc2ln
bmFsKCdTSUdURVJNJywgb3V0cHV0X2ZpbGU9c3RhY2tfdHJhY2VfcGF0aCkKKyAgICBsb2dfc3Rh
Y2tfdHJhY2Vfb25fc2lnbmFsKCdTSUdJTlQnLCBvdXRwdXRfZmlsZT1zdGFja190cmFjZV9wYXRo
KQorCisgICAgcG9ydC5kaWRfc3Bhd25fd29ya2VyKGludCgoVGFza1Bvb2wuUHJvY2Vzcy5uYW1l
KS5zcGxpdCgnLycpWy0xXSkpCisgICAgcmV0dXJuIFdvcmtlci5zZXR1cChwb3J0PXBvcnQsIHJl
c3VsdHNfZGlyZWN0b3J5PXJlc3VsdHNfZGlyZWN0b3J5KQorCisKK2RlZiBoYW5kbGVfc3RhcnRl
ZF90ZXN0KHdvcmtlciwgbmFtZSk6CisgICAgaWYgTGF5b3V0VGVzdFJ1bm5lci5pbnN0YW5jZToK
KyAgICAgICAgTGF5b3V0VGVzdFJ1bm5lci5pbnN0YW5jZS5wcmludGVyLnByaW50X3N0YXJ0ZWRf
dGVzdChuYW1lKQorCisKK2RlZiBydW5fc2hhcmQoc2hhcmQpOgorICAgIHJldHVybiBXb3JrZXIu
aW5zdGFuY2UucnVuX3Rlc3RzKHNoYXJkKQorCisKK2RlZiBoYW5kbGVfZmluaXNoZWRfdGVzdCh3
b3JrZXIsIHJlc3VsdCk6CisgICAgaWYgTGF5b3V0VGVzdFJ1bm5lci5pbnN0YW5jZToKKyAgICAg
ICAgTGF5b3V0VGVzdFJ1bm5lci5pbnN0YW5jZS51cGRhdGVfc3VtbWFyeV93aXRoX3Jlc3VsdChy
ZXN1bHQpCisKKworZGVmIHRlYXJkb3duX3NoYXJkKCk6CisgICAgcmV0dXJuIFdvcmtlci50ZWFy
ZG93bigpCiAKIAogY2xhc3MgVGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9uKEV4Y2VwdGlvbik6
CkBAIC02MywxMCArOTcsMTIgQEAgY2xhc3MgVGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9uKEV4
Y2VwdAogCiAKIGNsYXNzIExheW91dFRlc3RSdW5uZXIob2JqZWN0KToKKyAgICBpbnN0YW5jZSA9
IE5vbmUKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCBwb3J0LCBwcmludGVyLCBy
ZXN1bHRzX2RpcmVjdG9yeSwgbmVlZHNfaHR0cD1GYWxzZSwgbmVlZHNfd2Vic29ja2V0cz1GYWxz
ZSwgbmVlZHNfd2ViX3BsYXRmb3JtX3Rlc3Rfc2VydmVyPUZhbHNlKToKICAgICAgICAgc2VsZi5f
b3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKLSAgICAgICAgc2Vs
Zi5fcHJpbnRlciA9IHByaW50ZXIKKyAgICAgICAgc2VsZi5wcmludGVyID0gcHJpbnRlcgogICAg
ICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSA9IHJlc3VsdHNfZGlyZWN0b3J5CiAgICAgICAg
IHNlbGYuX25lZWRzX2h0dHAgPSBuZWVkc19odHRwCiAgICAgICAgIHNlbGYuX25lZWRzX3dlYnNv
Y2tldHMgPSBuZWVkc193ZWJzb2NrZXRzCkBAIC0xMDAsNDggKzEzNiw2MyBAQCBjbGFzcyBMYXlv
dXRUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgICMgRklYTUU6IHJlbmFtZSBhbGwgdmFyaWFi
bGVzIHRvIHRlc3RfcnVuX3Jlc3VsdHMgb3Igc29tZSBzdWNoIC4uLgogICAgICAgICBydW5fcmVz
dWx0cyA9IFRlc3RSdW5SZXN1bHRzKHNlbGYuX2V4cGVjdGF0aW9ucywgbGVuKHRlc3RfaW5wdXRz
KSkKICAgICAgICAgc2VsZi5fY3VycmVudF9ydW5fcmVzdWx0cyA9IHJ1bl9yZXN1bHRzCi0gICAg
ICAgIHNlbGYuX3ByaW50ZXIubnVtX3Rlc3RzID0gbGVuKHRlc3RfaW5wdXRzKQotICAgICAgICBz
ZWxmLl9wcmludGVyLm51bV9zdGFydGVkID0gMAorICAgICAgICBzZWxmLnByaW50ZXIubnVtX3Rl
c3RzID0gbGVuKHRlc3RfaW5wdXRzKQorICAgICAgICBzZWxmLnByaW50ZXIubnVtX3N0YXJ0ZWQg
PSAwCiAKICAgICAgICAgaWYgbm90IHJldHJ5aW5nOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRl
ci5wcmludF9leHBlY3RlZChydW5fcmVzdWx0cywgc2VsZi5fZXhwZWN0YXRpb25zLm1vZGVsKCku
Z2V0X3Rlc3RzX3dpdGhfcmVzdWx0X3R5cGUpCisgICAgICAgICAgICBzZWxmLnByaW50ZXIucHJp
bnRfZXhwZWN0ZWQocnVuX3Jlc3VsdHMsIHNlbGYuX2V4cGVjdGF0aW9ucy5tb2RlbCgpLmdldF90
ZXN0c193aXRoX3Jlc3VsdF90eXBlKQogCi0gICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBk
YXRlKCdTaGFyZGluZyB0ZXN0cyAuLi4nKQorICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBk
YXRlKCdTaGFyZGluZyB0ZXN0cyAuLi4nKQogICAgICAgICBhbGxfc2hhcmRzID0gc2VsZi5fc2hh
cmRlci5zaGFyZF90ZXN0cyh0ZXN0X2lucHV0cywgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJv
Y2Vzc2VzKSwgc2VsZi5fb3B0aW9ucy5mdWxseV9wYXJhbGxlbCkKIAotICAgICAgICBzZWxmLl9w
cmludGVyLnByaW50X3dvcmtlcnNfYW5kX3NoYXJkcyhudW1fd29ya2VycywgbGVuKGFsbF9zaGFy
ZHMpKQorICAgICAgICBudW1fd29ya2VycyA9IG1pbihudW1fd29ya2VycywgbGVuKGFsbF9zaGFy
ZHMpKQorICAgICAgICBzZWxmLnByaW50ZXIucHJpbnRfd29ya2Vyc19hbmRfc2hhcmRzKG51bV93
b3JrZXJzLCBsZW4oYWxsX3NoYXJkcykpCiAKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5kcnlf
cnVuOgogICAgICAgICAgICAgcmV0dXJuIHJ1bl9yZXN1bHRzCiAKLSAgICAgICAgc2VsZi5fcHJp
bnRlci53cml0ZV91cGRhdGUoJ1N0YXJ0aW5nICVzIC4uLicgJSBwbHVyYWxpemUobnVtX3dvcmtl
cnMsICJ3b3JrZXIiKSkKKyAgICAgICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgnU3RhcnRp
bmcge30gLi4uJy5mb3JtYXQocGx1cmFsaXplKG51bV93b3JrZXJzLCAid29ya2VyIikpKQorCisg
ICAgICAgIGRldmljZXMgPSBOb25lCisgICAgICAgIGlmIGdldGF0dHIoc2VsZi5fcG9ydCwgJ0RF
VklDRV9NQU5BR0VSJywgTm9uZSk6CisgICAgICAgICAgICBkZXZpY2VzID0gZGljdCgKKyAgICAg
ICAgICAgICAgICBhdmFpbGFibGVfZGV2aWNlcz1zZWxmLl9wb3J0LkRFVklDRV9NQU5BR0VSLkFW
QUlMQUJMRV9ERVZJQ0VTLAorICAgICAgICAgICAgICAgIGluaXRpYWxpemVkX2RldmljZXM9c2Vs
Zi5fcG9ydC5ERVZJQ0VfTUFOQUdFUi5JTklUSUFMSVpFRF9ERVZJQ0VTLAorICAgICAgICAgICAg
KQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggbWVzc2FnZV9wb29sLmdldChzZWxm
LCBzZWxmLl93b3JrZXJfZmFjdG9yeSwgbnVtX3dvcmtlcnMsIHNlbGYuX3BvcnQud29ya2VyX3N0
YXJ0dXBfZGVsYXlfc2VjcygpLCBzZWxmLl9wb3J0Lmhvc3QpIGFzIHBvb2w6Ci0gICAgICAgICAg
ICAgICAgcG9vbC5ydW4oKCd0ZXN0X2xpc3QnLCBzaGFyZC5uYW1lLCBzaGFyZC50ZXN0X2lucHV0
cykgZm9yIHNoYXJkIGluIGFsbF9zaGFyZHMpCisgICAgICAgICAgICBMYXlvdXRUZXN0UnVubmVy
Lmluc3RhbmNlID0gc2VsZgorICAgICAgICAgICAgd2l0aCBUYXNrUG9vbCgKKyAgICAgICAgICAg
ICAgICB3b3JrZXJzPW51bV93b3JrZXJzLAorICAgICAgICAgICAgICAgIHNldHVwPXNldHVwX3No
YXJkLCBzZXR1cGt3YXJncz1kaWN0KAorICAgICAgICAgICAgICAgICAgICBwb3J0PXNlbGYuX3Bv
cnQsCisgICAgICAgICAgICAgICAgICAgIGRldmljZXM9ZGV2aWNlcywKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0c19kaXJlY3Rvcnk9c2VsZi5fcmVzdWx0c19kaXJlY3RvcnksCisgICAgICAg
ICAgICAgICAgICAgIHJldHJ5aW5nPXNlbGYuX3JldHJ5aW5nLAorICAgICAgICAgICAgICAgICks
IHRlYXJkb3duPXRlYXJkb3duX3NoYXJkLAorICAgICAgICAgICAgKSBhcyBwb29sOgorICAgICAg
ICAgICAgICAgIGZvciBzaGFyZCBpbiBhbGxfc2hhcmRzOgorICAgICAgICAgICAgICAgICAgICBw
b29sLmRvKAorICAgICAgICAgICAgICAgICAgICAgICAgcnVuX3NoYXJkLCBzaGFyZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrPWxhbWJkYSB2YWx1ZTogc2VsZi5fYW5ub3RhdGVf
cmVzdWx0c193aXRoX2FkZGl0aW9uYWxfZmFpbHVyZXModmFsdWUpLAorICAgICAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICAgICAgcG9vbC53YWl0KCkKKwogICAgICAgICBleGNlcHQgVGVz
dFJ1bkludGVycnVwdGVkRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBfbG9nLndhcm5pbmco
ZS5yZWFzb24pCiAgICAgICAgICAgICBydW5fcmVzdWx0cy5pbnRlcnJ1cHRlZCA9IFRydWUKICAg
ICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgc2VsZi5fcHJpbnRl
ci5mbHVzaCgpCi0gICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlbG4oJ0ludGVycnVwdGVk
LCBleGl0aW5nIC4uLicpCisgICAgICAgICAgICBzZWxmLnByaW50ZXIuZmx1c2goKQorICAgICAg
ICAgICAgc2VsZi5wcmludGVyLndyaXRlbG4oJ0ludGVycnVwdGVkLCBleGl0aW5nIC4uLicpCiAg
ICAgICAgICAgICBydW5fcmVzdWx0cy5rZXlib2FyZF9pbnRlcnJ1cHRlZCA9IFRydWUKICAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMoIiVz
IikgcmFpc2VkLCBleGl0aW5nJyAlIChlLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKGUpKSkKKyAg
ICAgICAgICAgIF9sb2cuZGVidWcoJ3t9KCJ7fSIpIHJhaXNlZCwgZXhpdGluZycuZm9ybWF0KGUu
X19jbGFzc19fLl9fbmFtZV9fLCBzdHIoZSkpKQogICAgICAgICAgICAgcmFpc2UKKyAgICAgICAg
ZmluYWxseToKKyAgICAgICAgICAgIExheW91dFRlc3RSdW5uZXIuaW5zdGFuY2UgPSBOb25lCiAK
ICAgICAgICAgcmV0dXJuIHJ1bl9yZXN1bHRzCiAKLSAgICBkZWYgX3dvcmtlcl9mYWN0b3J5KHNl
bGYsIHdvcmtlcl9jb25uZWN0aW9uKToKLSAgICAgICAgcmVzdWx0c19kaXJlY3RvcnkgPSBzZWxm
Ll9yZXN1bHRzX2RpcmVjdG9yeQotICAgICAgICBpZiBzZWxmLl9yZXRyeWluZzoKLSAgICAgICAg
ICAgIHNlbGYuX2ZpbGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3Rvcnkoc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAncmV0cmllcycpKQotICAgICAgICAgICAg
cmVzdWx0c19kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fcmVzdWx0c19k
aXJlY3RvcnksICdyZXRyaWVzJykKLSAgICAgICAgcmV0dXJuIFdvcmtlcih3b3JrZXJfY29ubmVj
dGlvbiwgcmVzdWx0c19kaXJlY3RvcnksIHNlbGYuX29wdGlvbnMpCi0KLSAgICBkZWYgX2hhbmRs
ZV9kaWRfc3Bhd25fd29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIpOgotICAgICAgICBzZWxmLl9w
b3J0LmRpZF9zcGF3bl93b3JrZXIod29ya2VyX251bWJlcikKLQogICAgIGRlZiBfbWFya19pbnRl
cnJ1cHRlZF90ZXN0c19hc19za2lwcGVkKHNlbGYsIHJ1bl9yZXN1bHRzKToKICAgICAgICAgZm9y
IHRlc3RfaW5wdXQgaW4gc2VsZi5fdGVzdF9pbnB1dHM6CiAgICAgICAgICAgICBpZiB0ZXN0X2lu
cHV0LnRlc3RfbmFtZSBub3QgaW4gcnVuX3Jlc3VsdHMucmVzdWx0c19ieV9uYW1lOgpAQCAtMTcy
LDcgKzIyMyw3IEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAg
ICMgVGhpcyBkaWZmZXJzIGZyb20gT1JXVCBiZWNhdXNlIGl0IGRvZXMgbm90IGluY2x1ZGUgV2Vi
UHJvY2VzcyBjcmFzaGVzLgogICAgICAgICAgICAgIkV4aXRpbmcgZWFybHkgYWZ0ZXIgJWQgY3Jh
c2hlcyBhbmQgJWQgdGltZW91dHMuIiAlIChydW5fcmVzdWx0cy51bmV4cGVjdGVkX2NyYXNoZXMs
IHJ1bl9yZXN1bHRzLnVuZXhwZWN0ZWRfdGltZW91dHMpKQogCi0gICAgZGVmIF91cGRhdGVfc3Vt
bWFyeV93aXRoX3Jlc3VsdChzZWxmLCBydW5fcmVzdWx0cywgcmVzdWx0KToKKyAgICBkZWYgdXBk
YXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQoc2VsZiwgcmVzdWx0KToKICAgICAgICAgaWYgcmVzdWx0
LnR5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuU0tJUDoKICAgICAgICAgICAgIGV4cF9zdHIgPSBn
b3Rfc3RyID0gJ1NLSVAnCiAgICAgICAgICAgICBleHBlY3RlZCA9IFRydWUKQEAgLTE4MiwxNSAr
MjMzLDE1IEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgIGV4
cF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMubW9kZWwoKS5leHBlY3RhdGlvbnNfdG9fc3RyaW5n
KGV4cGVjdGF0aW9ucykKICAgICAgICAgICAgIGdvdF9zdHIgPSBzZWxmLl9leHBlY3RhdGlvbnMu
bW9kZWwoKS5leHBlY3RhdGlvbl90b19zdHJpbmcocmVzdWx0LnR5cGUpCiAKLSAgICAgICAgcnVu
X3Jlc3VsdHMuYWRkKHJlc3VsdCwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuX2N1cnJlbnRfcnVu
X3Jlc3VsdHMuYWRkKHJlc3VsdCwgZXhwZWN0ZWQpCiAKLSAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF9maW5pc2hlZF90ZXN0KHJlc3VsdCwgZXhwZWN0ZWQsIGV4cF9zdHIsIGdvdF9zdHIpCisg
ICAgICAgIHNlbGYucHJpbnRlci5wcmludF9maW5pc2hlZF90ZXN0KHJlc3VsdCwgZXhwZWN0ZWQs
IGV4cF9zdHIsIGdvdF9zdHIpCiAKLSAgICAgICAgc2VsZi5faW50ZXJydXB0X2lmX2F0X2ZhaWx1
cmVfbGltaXRzKHJ1bl9yZXN1bHRzKQorICAgICAgICBzZWxmLl9pbnRlcnJ1cHRfaWZfYXRfZmFp
bHVyZV9saW1pdHMoc2VsZi5fY3VycmVudF9ydW5fcmVzdWx0cykKIAotICAgIGRlZiBfYW5ub3Rh
dGVfcmVzdWx0c193aXRoX2FkZGl0aW9uYWxfZmFpbHVyZXMoc2VsZiwgcnVuX3Jlc3VsdHMsIHJl
c3VsdHMpOgorICAgIGRlZiBfYW5ub3RhdGVfcmVzdWx0c193aXRoX2FkZGl0aW9uYWxfZmFpbHVy
ZXMoc2VsZiwgcmVzdWx0cyk6CiAgICAgICAgIGZvciBuZXdfcmVzdWx0IGluIHJlc3VsdHM6Ci0g
ICAgICAgICAgICBleGlzdGluZ19yZXN1bHQgPSBydW5fcmVzdWx0cy5yZXN1bHRzX2J5X25hbWUu
Z2V0KG5ld19yZXN1bHQudGVzdF9uYW1lKQorICAgICAgICAgICAgZXhpc3RpbmdfcmVzdWx0ID0g
c2VsZi5fY3VycmVudF9ydW5fcmVzdWx0cy5yZXN1bHRzX2J5X25hbWUuZ2V0KG5ld19yZXN1bHQu
dGVzdF9uYW1lKQogICAgICAgICAgICAgIyBXaGVuIHJ1bm5pbmcgYSBjaHVuayAoLS1ydW4tY2h1
bmspLCByZXN1bHRzX2J5X25hbWUgY29udGFpbnMgYWxsIHRoZSB0ZXN0cywgYnV0IChjb25mdXNp
bmdseSkgYWxsX3Rlc3RzIG9ubHkgY29udGFpbnMgdGhvc2UgaW4gdGhlIGNodW5rIHRoYXQgd2Fz
IHJ1biwKICAgICAgICAgICAgICMgYW5kIHdlIGRvbid0IHdhbnQgdG8gbW9kaWZ5IHRoZSByZXN1
bHRzIG9mIGEgdGVzdCB0aGF0IGRpZG4ndCBydW4uIGV4aXN0aW5nX3Jlc3VsdC50ZXN0X251bWJl
ciBpcyBvbmx5IG5vbi1Ob25lIGZvciB0ZXN0cyB0aGF0IHJhbi4KICAgICAgICAgICAgIGlmIGV4
aXN0aW5nX3Jlc3VsdCBhbmQgZXhpc3RpbmdfcmVzdWx0LnRlc3RfbnVtYmVyIGlzIG5vdCBOb25l
OgpAQCAtMjAyLDExMCArMjUzLDEwMiBAQCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygnICAlcyAtPiBjaGFuZ2VkIGJ5IGxl
YWsgZGV0ZWN0aW9uIGZyb20gYSAlcyAoJXMpIHRvIGEgJXMgKCVzKScgJSAobmV3X3Jlc3VsdC50
ZXN0X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0RXhwZWN0YXRpb25zLkVYUEVD
VEFUSU9OX0RFU0NSSVBUSU9OW2V4aXN0aW5nX3Jlc3VsdC50eXBlXSwgJ2V4cGVjdGVkJyBpZiB3
YXNfZXhwZWN0ZWQgZWxzZSAndW5leHBlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXN0RXhwZWN0YXRpb25zLkVYUEVDVEFUSU9OX0RFU0NSSVBUSU9OW25ld19yZXN1bHQudHlwZV0s
ICdleHBlY3RlZCcgaWYgbm93X2V4cGVjdGVkIGVsc2UgJ3VuZXhwZWN0ZWQnKSkKLSAgICAgICAg
ICAgICAgICBydW5fcmVzdWx0cy5jaGFuZ2VfcmVzdWx0X3RvX2ZhaWx1cmUoZXhpc3RpbmdfcmVz
dWx0LCBuZXdfcmVzdWx0LCB3YXNfZXhwZWN0ZWQsIG5vd19leHBlY3RlZCkKKyAgICAgICAgICAg
ICAgICBzZWxmLl9jdXJyZW50X3J1bl9yZXN1bHRzLmNoYW5nZV9yZXN1bHRfdG9fZmFpbHVyZShl
eGlzdGluZ19yZXN1bHQsIG5ld19yZXN1bHQsIHdhc19leHBlY3RlZCwgbm93X2V4cGVjdGVkKQog
CiAgICAgZGVmIHN0YXJ0X3NlcnZlcnMoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX25lZWRzX2h0
dHAgYW5kIG5vdCBzZWxmLl9kaWRfc3RhcnRfaHR0cF9zZXJ2ZXIgYW5kIG5vdCBzZWxmLl9wb3J0
LmlzX2h0dHBfc2VydmVyX3J1bm5pbmcoKToKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3Jp
dGVfdXBkYXRlKCdTdGFydGluZyBIVFRQIHNlcnZlciAuLi4nKQorICAgICAgICAgICAgc2VsZi5w
cmludGVyLndyaXRlX3VwZGF0ZSgnU3RhcnRpbmcgSFRUUCBzZXJ2ZXIgLi4uJykKICAgICAgICAg
ICAgIHNlbGYuX3BvcnQuc3RhcnRfaHR0cF9zZXJ2ZXIoKQogICAgICAgICAgICAgc2VsZi5fZGlk
X3N0YXJ0X2h0dHBfc2VydmVyID0gVHJ1ZQogICAgICAgICBpZiBzZWxmLl9uZWVkc193ZWJzb2Nr
ZXRzIGFuZCBub3Qgc2VsZi5fZGlkX3N0YXJ0X3dlYnNvY2tldF9zZXJ2ZXIgYW5kIG5vdCBzZWxm
Ll9wb3J0LmlzX3dlYnNvY2tldF9zZXJ2ZXJfcnVubmluZygpOgotICAgICAgICAgICAgc2VsZi5f
cHJpbnRlci53cml0ZV91cGRhdGUoJ1N0YXJ0aW5nIFdlYlNvY2tldCBzZXJ2ZXIgLi4uJykKKyAg
ICAgICAgICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoJ1N0YXJ0aW5nIFdlYlNvY2tldCBz
ZXJ2ZXIgLi4uJykKICAgICAgICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfd2Vic29ja2V0X3NlcnZl
cigpCiAgICAgICAgICAgICBzZWxmLl9kaWRfc3RhcnRfd2Vic29ja2V0X3NlcnZlciA9IFRydWUK
ICAgICAgICAgaWYgc2VsZi5fbmVlZHNfd2ViX3BsYXRmb3JtX3Rlc3Rfc2VydmVyIGFuZCBub3Qg
c2VsZi5fZGlkX3N0YXJ0X3dwdF9zZXJ2ZXIgYW5kIG5vdCBzZWxmLl9wb3J0LmlzX3dwdF9zZXJ2
ZXJfcnVubmluZygpOgotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoJ1N0
YXJ0aW5nIFdlYiBQbGF0Zm9ybSBUZXN0IHNlcnZlciAuLi4nKQorICAgICAgICAgICAgc2VsZi5w
cmludGVyLndyaXRlX3VwZGF0ZSgnU3RhcnRpbmcgV2ViIFBsYXRmb3JtIFRlc3Qgc2VydmVyIC4u
LicpCiAgICAgICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X3dlYl9wbGF0Zm9ybV90ZXN0X3NlcnZl
cigpCiAgICAgICAgICAgICBzZWxmLl9kaWRfc3RhcnRfd3B0X3NlcnZlciA9IFRydWUKIAogICAg
IGRlZiBzdG9wX3NlcnZlcnMoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2RpZF9zdGFydF9odHRw
X3NlcnZlcjoKLSAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKCdTdG9wcGlu
ZyBIVFRQIHNlcnZlciAuLi4nKQorICAgICAgICAgICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0
ZSgnU3RvcHBpbmcgSFRUUCBzZXJ2ZXIgLi4uJykKICAgICAgICAgICAgIHNlbGYuX3BvcnQuc3Rv
cF9odHRwX3NlcnZlcigpCiAgICAgICAgICAgICBzZWxmLl9kaWRfc3RhcnRfaHR0cF9zZXJ2ZXIg
PSBGYWxzZQogICAgICAgICBpZiBzZWxmLl9kaWRfc3RhcnRfd2Vic29ja2V0X3NlcnZlcjoKLSAg
ICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKCdTdG9wcGluZyBXZWJTb2NrZXQg
c2VydmVyIC4uLicpCisgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCdTdG9w
cGluZyBXZWJTb2NrZXQgc2VydmVyIC4uLicpCiAgICAgICAgICAgICBzZWxmLl9wb3J0LnN0b3Bf
d2Vic29ja2V0X3NlcnZlcigpCiAgICAgICAgICAgICBzZWxmLl9kaWRfc3RhcnRfd2Vic29ja2V0
X3NlcnZlciA9IEZhbHNlCiAgICAgICAgIGlmIHNlbGYuX2RpZF9zdGFydF93cHRfc2VydmVyOgot
ICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoJ1N0b3BwaW5nIFdlYiBQbGF0
Zm9ybSBUZXN0IHNlcnZlciAuLi4nKQorICAgICAgICAgICAgc2VsZi5wcmludGVyLndyaXRlX3Vw
ZGF0ZSgnU3RvcHBpbmcgV2ViIFBsYXRmb3JtIFRlc3Qgc2VydmVyIC4uLicpCiAgICAgICAgICAg
ICBzZWxmLl9wb3J0LnN0b3Bfd2ViX3BsYXRmb3JtX3Rlc3Rfc2VydmVyKCkKICAgICAgICAgICAg
IHNlbGYuX2RpZF9zdGFydF93cHRfc2VydmVyID0gRmFsc2UKIAotICAgIGRlZiBoYW5kbGUoc2Vs
ZiwgbmFtZSwgc291cmNlLCAqYXJncyk6Ci0gICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2VsZiwg
J19oYW5kbGVfJyArIG5hbWUpCi0gICAgICAgIGlmIG1ldGhvZDoKLSAgICAgICAgICAgIHJldHVy
biBtZXRob2Qoc291cmNlLCAqYXJncykKLSAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ3Vu
a25vd24gbWVzc2FnZSAlcyByZWNlaXZlZCBmcm9tICVzLCBhcmdzPSVzJyAlIChuYW1lLCBzb3Vy
Y2UsIHJlcHIoYXJncykpKQogCi0gICAgZGVmIF9oYW5kbGVfc3RhcnRlZF90ZXN0KHNlbGYsIHdv
cmtlcl9uYW1lLCB0ZXN0X2lucHV0LCB0ZXN0X3RpbWVvdXRfc2VjKToKLSAgICAgICAgc2VsZi5f
cHJpbnRlci5wcmludF9zdGFydGVkX3Rlc3QodGVzdF9pbnB1dC50ZXN0X25hbWUpCi0KLSAgICBk
ZWYgX2hhbmRsZV9maW5pc2hlZF90ZXN0KHNlbGYsIHdvcmtlcl9uYW1lLCByZXN1bHQsIGxvZ19t
ZXNzYWdlcz1bXSk6Ci0gICAgICAgIHNlbGYuX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHNl
bGYuX2N1cnJlbnRfcnVuX3Jlc3VsdHMsIHJlc3VsdCkKLQotICAgIGRlZiBfaGFuZGxlX2Zpbmlz
aGVkX3Rlc3RfZ3JvdXAoc2VsZiwgd29ya2VyX25hbWUsIG92ZXJsYXlfcmVzdWx0cywgbG9nX21l
c3NhZ2VzPVtdKToKLSAgICAgICAgc2VsZi5fYW5ub3RhdGVfcmVzdWx0c193aXRoX2FkZGl0aW9u
YWxfZmFpbHVyZXMoc2VsZi5fY3VycmVudF9ydW5fcmVzdWx0cywgb3ZlcmxheV9yZXN1bHRzKQor
Y2xhc3MgV29ya2VyKG9iamVjdCk6CisgICAgaW5zdGFuY2UgPSBOb25lCiAKKyAgICBAY2xhc3Nt
ZXRob2QKKyAgICBkZWYgc2V0dXAoY2xzLCBwb3J0PU5vbmUsIHJlc3VsdHNfZGlyZWN0b3J5PU5v
bmUpOgorICAgICAgICBjbHMuaW5zdGFuY2UgPSBjbHMocG9ydD1wb3J0LCByZXN1bHRzX2RpcmVj
dG9yeT1yZXN1bHRzX2RpcmVjdG9yeSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFy
ZG93bihjbHMpOgorICAgICAgICBpZiBjbHMuaW5zdGFuY2U6CisgICAgICAgICAgICBjbHMuaW5z
dGFuY2Uuc3RvcCgpCisgICAgICAgIGNscy5pbnN0YW5jZSA9IE5vbmUKIAotY2xhc3MgV29ya2Vy
KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhbGxlciwgcmVzdWx0c19kaXJlY3Rv
cnksIG9wdGlvbnMpOgotICAgICAgICBzZWxmLl9jYWxsZXIgPSBjYWxsZXIKLSAgICAgICAgc2Vs
Zi5fd29ya2VyX251bWJlciA9IGNhbGxlci53b3JrZXJfbnVtYmVyCi0gICAgICAgIHNlbGYuX25h
bWUgPSBjYWxsZXIubmFtZQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCByZXN1bHRzX2Rp
cmVjdG9yeSk6CisgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX3Jlc3Vs
dHNfZGlyZWN0b3J5ID0gcmVzdWx0c19kaXJlY3RvcnkKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9
IG9wdGlvbnMKIAotICAgICAgICAjIFRoZSByZW1haW5pbmcgZmllbGRzIGFyZSBpbml0aWFsaXpl
ZCBpbiBzdGFydCgpCi0gICAgICAgIHNlbGYuX2hvc3QgPSBOb25lCi0gICAgICAgIHNlbGYuX3Bv
cnQgPSBOb25lCi0gICAgICAgIHNlbGYuX2JhdGNoX3NpemUgPSBOb25lCi0gICAgICAgIHNlbGYu
X2JhdGNoX2NvdW50ID0gTm9uZQotICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gTm9uZQotICAg
ICAgICBzZWxmLl9kcml2ZXIgPSBOb25lCiAgICAgICAgIHNlbGYuX251bV90ZXN0cyA9IDAKKyAg
ICAgICAgc2VsZi5fYmF0Y2hfY291bnQgPSAwCisgICAgICAgIHNlbGYuX2RyaXZlciA9IE5vbmUK
KyAgICAgICAgc2VsZi5fYmF0Y2hfc2l6ZSA9IHNlbGYuX3BvcnQuZ2V0X29wdGlvbignYmF0Y2hf
c2l6ZScpIG9yIDAKIAotICAgIGRlZiBfX2RlbF9fKHNlbGYpOgotICAgICAgICBzZWxmLnN0b3Ao
KQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICAiIiJUaGlzIG1ldGhvZCBpcyBjYWxs
ZWQgd2hlbiB0aGUgb2JqZWN0IGlzIHN0YXJ0aW5nIHRvIGJlIHVzZWQgYW5kIGl0IGlzIHNhZmUK
LSAgICAgICAgZm9yIHRoZSBvYmplY3QgdG8gY3JlYXRlIHN0YXRlIHRoYXQgZG9lcyBub3QgbmVl
ZCB0byBiZSBwaWNrbGVkICh1c3VhbGx5IHRoaXMgbWVhbnMKLSAgICAgICAgaXQgaXMgY2FsbGVk
IGluIGEgY2hpbGQgcHJvY2VzcykuIiIiCi0gICAgICAgIHNlbGYuX2hvc3QgPSBzZWxmLl9jYWxs
ZXIuaG9zdAotICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gc2VsZi5faG9zdC5maWxlc3lzdGVt
Ci0gICAgICAgIHNlbGYuX3BvcnQgPSBzZWxmLl9ob3N0LnBvcnRfZmFjdG9yeS5nZXQoc2VsZi5f
b3B0aW9ucy5wbGF0Zm9ybSwgc2VsZi5fb3B0aW9ucykKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYs
IHNoYXJkKToKKyAgICAgICAgZm9yIGlucHV0IGluIHNoYXJkLnRlc3RfaW5wdXRzOgorICAgICAg
ICAgICAgaWYgbm90IFRhc2tQb29sLlByb2Nlc3Mud29ya2luZzoKKyAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgV29ya2VyLmluc3RhbmNlLnJ1bl90ZXN0KGlucHV0LCBzaGFyZC5u
YW1lKQogCi0gICAgICAgIHNlbGYuX2JhdGNoX2NvdW50ID0gMAotICAgICAgICBzZWxmLl9iYXRj
aF9zaXplID0gc2VsZi5fb3B0aW9ucy5iYXRjaF9zaXplIG9yIDAKKyAgICAgICAgX2xvZy5kZWJ1
Zygne30gZmluaXNoZWQgdGVzdCBncm91cCcuZm9ybWF0KFRhc2tQb29sLlByb2Nlc3MubmFtZSkp
CiAKLSAgICBkZWYgaGFuZGxlKHNlbGYsIG5hbWUsIHNvdXJjZSwgdGVzdF9saXN0X25hbWUsIHRl
c3RfaW5wdXRzKToKLSAgICAgICAgYXNzZXJ0IG5hbWUgPT0gJ3Rlc3RfbGlzdCcKLSAgICAgICAg
Zm9yIHRlc3RfaW5wdXQgaW4gdGVzdF9pbnB1dHM6Ci0gICAgICAgICAgICBzZWxmLl9ydW5fdGVz
dCh0ZXN0X2lucHV0LCB0ZXN0X2xpc3RfbmFtZSkKKyAgICAgICAgaWYgc2VsZi5fZHJpdmVyIGFu
ZCBzZWxmLl9kcml2ZXIuaGFzX2NyYXNoZWQoKToKKyAgICAgICAgICAgIHNlbGYuX2tpbGxfZHJp
dmVyKCkKIAotICAgICAgICBzZWxmLl9maW5pc2hlZF90ZXN0X2dyb3VwKHRlc3RfaW5wdXRzKQor
ICAgICAgICBhZGRpdGlvbmFsX3Jlc3VsdHMgPSBbXQorICAgICAgICBpZiBub3Qgc2VsZi5fcG9y
dC5nZXRfb3B0aW9uKCdydW5fc2luZ2x5Jyk6CisgICAgICAgICAgICBhZGRpdGlvbmFsX3Jlc3Vs
dHMgPSBzZWxmLl9kb19wb3N0X3Rlc3RzX3dvcmsoc2VsZi5fZHJpdmVyKQorICAgICAgICByZXR1
cm4gYWRkaXRpb25hbF9yZXN1bHRzCiAKLSAgICBkZWYgX3J1bl90ZXN0KHNlbGYsIHRlc3RfaW5w
dXQsIHNoYXJkX25hbWUpOgorICAgIGRlZiBydW5fdGVzdChzZWxmLCB0ZXN0X2lucHV0LCBzaGFy
ZF9uYW1lKToKICAgICAgICAgc2VsZi5fYmF0Y2hfY291bnQgKz0gMQogCiAgICAgICAgIHN0b3Bf
d2hlbl9kb25lID0gRmFsc2UKLSAgICAgICAgaWYgc2VsZi5fYmF0Y2hfc2l6ZSA+IDAgYW5kIHNl
bGYuX2JhdGNoX2NvdW50ID49IHNlbGYuX2JhdGNoX3NpemU6CisgICAgICAgIGlmIDAgPCBzZWxm
Ll9iYXRjaF9zaXplIDw9IHNlbGYuX2JhdGNoX2NvdW50OgogICAgICAgICAgICAgc2VsZi5fYmF0
Y2hfY291bnQgPSAwCiAgICAgICAgICAgICBzdG9wX3doZW5fZG9uZSA9IFRydWUKIAogICAgICAg
ICB0ZXN0X3RpbWVvdXRfc2VjID0gc2VsZi5fdGltZW91dCh0ZXN0X2lucHV0KQogICAgICAgICBz
dGFydCA9IHRpbWUudGltZSgpCi0gICAgICAgIHNlbGYuX2NhbGxlci5wb3N0KCdzdGFydGVkX3Rl
c3QnLCB0ZXN0X2lucHV0LCB0ZXN0X3RpbWVvdXRfc2VjKQorCisgICAgICAgIFRhc2tQb29sLlBy
b2Nlc3MucXVldWUuc2VuZChUYXNrUG9vbC5UYXNrKAorICAgICAgICAgICAgaGFuZGxlX3N0YXJ0
ZWRfdGVzdCwgTm9uZSwgVGFza1Bvb2wuUHJvY2Vzcy5uYW1lLAorICAgICAgICAgICAgdGVzdF9p
bnB1dC50ZXN0X25hbWUsCisgICAgICAgICkpCiAKICAgICAgICAgcmVzdWx0ID0gc2VsZi5fcnVu
X3Rlc3Rfd2l0aF9vcl93aXRob3V0X3RpbWVvdXQodGVzdF9pbnB1dCwgdGVzdF90aW1lb3V0X3Nl
Yywgc3RvcF93aGVuX2RvbmUpCiAgICAgICAgIHJlc3VsdC5zaGFyZF9uYW1lID0gc2hhcmRfbmFt
ZQotICAgICAgICByZXN1bHQud29ya2VyX25hbWUgPSBzZWxmLl9uYW1lCisgICAgICAgIHJlc3Vs
dC53b3JrZXJfbmFtZSA9IFRhc2tQb29sLlByb2Nlc3MubmFtZQogICAgICAgICByZXN1bHQudG90
YWxfcnVuX3RpbWUgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CiAgICAgICAgIHJlc3VsdC50ZXN0X251
bWJlciA9IHNlbGYuX251bV90ZXN0cwogICAgICAgICBzZWxmLl9udW1fdGVzdHMgKz0gMQogCi0g
ICAgICAgIHNlbGYuX2NhbGxlci5wb3N0KCdmaW5pc2hlZF90ZXN0JywgcmVzdWx0KQorICAgICAg
ICBUYXNrUG9vbC5Qcm9jZXNzLnF1ZXVlLnNlbmQoVGFza1Bvb2wuVGFzaygKKyAgICAgICAgICAg
IGhhbmRsZV9maW5pc2hlZF90ZXN0LCBOb25lLCBUYXNrUG9vbC5Qcm9jZXNzLm5hbWUsCisgICAg
ICAgICAgICByZXN1bHQsCisgICAgICAgICkpCiAKICAgICAgICAgc2VsZi5fY2xlYW5fdXBfYWZ0
ZXJfdGVzdCh0ZXN0X2lucHV0LCByZXN1bHQpCiAKQEAgLTMyMCwyMCArMzYzLDggQEAgY2xhc3Mg
V29ya2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9yZXN1bHRzLmFwcGVu
ZCh0ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0X25hbWUsIFt0ZXN0X2ZhaWx1cmVzLkZhaWx1
cmVEb2N1bWVudExlYWsoZG9jX2xpc3QpXSkpCiAgICAgICAgIHJldHVybiBhZGRpdGlvbmFsX3Jl
c3VsdHMKIAotICAgIGRlZiBfZmluaXNoZWRfdGVzdF9ncm91cChzZWxmLCB0ZXN0X2lucHV0cyk6
Ci0gICAgICAgIF9sb2cuZGVidWcoIiVzIGZpbmlzaGVkIHRlc3QgZ3JvdXAiICUgc2VsZi5fbmFt
ZSkKLQotICAgICAgICBpZiBzZWxmLl9kcml2ZXIgYW5kIHNlbGYuX2RyaXZlci5oYXNfY3Jhc2hl
ZCgpOgotICAgICAgICAgICAgc2VsZi5fa2lsbF9kcml2ZXIoKQotCi0gICAgICAgIGFkZGl0aW9u
YWxfcmVzdWx0cyA9IFtdCi0gICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLnJ1bl9zaW5nbHk6
Ci0gICAgICAgICAgICBhZGRpdGlvbmFsX3Jlc3VsdHMgPSBzZWxmLl9kb19wb3N0X3Rlc3RzX3dv
cmsoc2VsZi5fZHJpdmVyKQotCi0gICAgICAgIHNlbGYuX2NhbGxlci5wb3N0KCdmaW5pc2hlZF90
ZXN0X2dyb3VwJywgYWRkaXRpb25hbF9yZXN1bHRzKQotCiAgICAgZGVmIHN0b3Aoc2VsZik6Ci0g
ICAgICAgIF9sb2cuZGVidWcoIiVzIGNsZWFuaW5nIHVwIiAlIHNlbGYuX25hbWUpCisgICAgICAg
IF9sb2cuZGVidWcoJ3t9IGNsZWFuaW5nIHVwJy5mb3JtYXQoVGFza1Bvb2wuUHJvY2Vzcy5uYW1l
KSkKICAgICAgICAgc2VsZi5fa2lsbF9kcml2ZXIoKQogCiAgICAgZGVmIF90aW1lb3V0KHNlbGYs
IHRlc3RfaW5wdXQpOgpAQCAtMzQ1LDcgKzM3Niw3IEBAIGNsYXNzIFdvcmtlcihvYmplY3QpOgog
ICAgICAgICAjIE5vdGUgdGhhdCB3ZSBuZWVkIHRvIGNvbnZlcnQgdGhlIHRlc3QgdGltZW91dCBm
cm9tIGEKICAgICAgICAgIyBzdHJpbmcgdmFsdWUgaW4gbWlsbGlzZWNvbmRzIHRvIGEgZmxvYXQg
Zm9yIFB5dGhvbi4KICAgICAgICAgZHJpdmVyX3RpbWVvdXRfc2VjID0gMy4wICogZmxvYXQodGVz
dF9pbnB1dC50aW1lb3V0KSAvIDEwMDAuMAotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5y
dW5fc2luZ2x5OgorICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdydW5fc2lu
Z2x5Jyk6CiAgICAgICAgICAgICByZXR1cm4gZHJpdmVyX3RpbWVvdXRfc2VjCiAKICAgICAgICAg
dGhyZWFkX3BhZGRpbmdfc2VjID0gMS4wCkBAIC0zNTgsMTEgKzM4OSwxMSBAQCBjbGFzcyBXb3Jr
ZXIob2JqZWN0KToKICAgICAgICAgZHJpdmVyID0gc2VsZi5fZHJpdmVyCiAgICAgICAgIHNlbGYu
X2RyaXZlciA9IE5vbmUKICAgICAgICAgaWYgZHJpdmVyOgotICAgICAgICAgICAgX2xvZy5kZWJ1
ZygiJXMga2lsbGluZyBkcml2ZXIiICUgc2VsZi5fbmFtZSkKKyAgICAgICAgICAgIF9sb2cuZGVi
dWcoJ3t9IGtpbGxpbmcgZHJpdmVyJy5mb3JtYXQoVGFza1Bvb2wuUHJvY2Vzcy5uYW1lKSkKICAg
ICAgICAgICAgIGRyaXZlci5zdG9wKCkKIAogICAgIGRlZiBfcnVuX3Rlc3Rfd2l0aF9vcl93aXRo
b3V0X3RpbWVvdXQoc2VsZiwgdGVzdF9pbnB1dCwgdGltZW91dCwgc3RvcF93aGVuX2RvbmUpOgot
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJ1bl9zaW5nbHk6CisgICAgICAgIGlmIHNlbGYuX3Bv
cnQuZ2V0X29wdGlvbigncnVuX3NpbmdseScpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3J1
bl90ZXN0X2luX2Fub3RoZXJfdGhyZWFkKHRlc3RfaW5wdXQsIHRpbWVvdXQsIHN0b3Bfd2hlbl9k
b25lKQogICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RfaW5fdGhpc190aHJlYWQodGVzdF9p
bnB1dCwgc3RvcF93aGVuX2RvbmUpCiAKQEAgLTM3NywxMyArNDA4LDEzIEBAIGNsYXNzIFdvcmtl
cihvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYuX2JhdGNoX2NvdW50ID0gMAogCiAgICAg
ICAgICAgICAjIFByaW50IHRoZSBlcnJvciBtZXNzYWdlKHMpLgotICAgICAgICAgICAgX2xvZy5k
ZWJ1ZygiJXMgJXMgZmFpbGVkOiIgJSAoc2VsZi5fbmFtZSwgdGVzdF9uYW1lKSkKKyAgICAgICAg
ICAgIF9sb2cuZGVidWcoJ3t9IHt9IGZhaWxlZDonLmZvcm1hdChUYXNrUG9vbC5Qcm9jZXNzLm5h
bWUsIHRlc3RfbmFtZSkpCiAgICAgICAgICAgICBmb3IgZiBpbiByZXN1bHQuZmFpbHVyZXM6Ci0g
ICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgICVzIiAlIChzZWxmLl9uYW1lLCBmLm1lc3Nh
Z2UoKSkpCisgICAgICAgICAgICAgICAgX2xvZy5kZWJ1Zygne30gIHt9Jy5mb3JtYXQoVGFza1Bv
b2wuUHJvY2Vzcy5uYW1lLCBmLm1lc3NhZ2UoKSkpCiAgICAgICAgIGVsaWYgcmVzdWx0LnR5cGUg
PT0gdGVzdF9leHBlY3RhdGlvbnMuU0tJUDoKLSAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzICVz
IHNraXBwZWQiICUgKHNlbGYuX25hbWUsIHRlc3RfbmFtZSkpCisgICAgICAgICAgICBfbG9nLmRl
YnVnKCd7fSB7fSBza2lwcGVkJy5mb3JtYXQoVGFza1Bvb2wuUHJvY2Vzcy5uYW1lLCB0ZXN0X25h
bWUpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgcGFzc2Vk
IiAlIChzZWxmLl9uYW1lLCB0ZXN0X25hbWUpKQorICAgICAgICAgICAgX2xvZy5kZWJ1Zygie30g
e30gcGFzc2VkIi5mb3JtYXQoVGFza1Bvb2wuUHJvY2Vzcy5uYW1lLCB0ZXN0X25hbWUpKQogCiAg
ICAgZGVmIF9ydW5fdGVzdF9pbl9hbm90aGVyX3RocmVhZChzZWxmLCB0ZXN0X2lucHV0LCB0aHJl
YWRfdGltZW91dF9zZWMsIHN0b3Bfd2hlbl9kb25lKToKICAgICAgICAgIiIiUnVuIGEgdGVzdCBp
biBhIHNlcGFyYXRlIHRocmVhZCwgZW5mb3JjaW5nIGEgaGFyZCB0aW1lIGxpbWl0LgpAQCAtNDAw
LDcgKzQzMSw3IEBAIGNsYXNzIFdvcmtlcihvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAg
d29ya2VyID0gc2VsZgogCi0gICAgICAgIGRyaXZlciA9IHNlbGYuX3BvcnQuY3JlYXRlX2RyaXZl
cihzZWxmLl93b3JrZXJfbnVtYmVyLCBzZWxmLl9vcHRpb25zLm5vX3RpbWVvdXQpCisgICAgICAg
IGRyaXZlciA9IHNlbGYuX3BvcnQuY3JlYXRlX2RyaXZlcihpbnQoKFRhc2tQb29sLlByb2Nlc3Mu
bmFtZSkuc3BsaXQoJy8nKVstMV0pLCBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ25vX3RpbWVvdXQn
KSkKIAogICAgICAgICBjbGFzcyBTaW5nbGVUZXN0VGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgog
ICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgpAQCAtNDQ5LDEyICs0ODAsMTUgQEAgY2xh
c3MgV29ya2VyKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuX2RyaXZlciBhbmQgc2VsZi5fZHJp
dmVyLmhhc19jcmFzaGVkKCk6CiAgICAgICAgICAgICBzZWxmLl9raWxsX2RyaXZlcigpCiAgICAg
ICAgIGlmIG5vdCBzZWxmLl9kcml2ZXI6Ci0gICAgICAgICAgICBzZWxmLl9kcml2ZXIgPSBzZWxm
Ll9wb3J0LmNyZWF0ZV9kcml2ZXIoc2VsZi5fd29ya2VyX251bWJlciwgc2VsZi5fb3B0aW9ucy5u
b190aW1lb3V0KQorICAgICAgICAgICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVf
ZHJpdmVyKGludCgoVGFza1Bvb2wuUHJvY2Vzcy5uYW1lKS5zcGxpdCgnLycpWy0xXSksIHNlbGYu
X3BvcnQuZ2V0X29wdGlvbignbm9fdGltZW91dCcpKQogICAgICAgICByZXR1cm4gc2VsZi5fcnVu
X3NpbmdsZV90ZXN0KHNlbGYuX2RyaXZlciwgdGVzdF9pbnB1dCwgc3RvcF93aGVuX2RvbmUpCiAK
ICAgICBkZWYgX3J1bl9zaW5nbGVfdGVzdChzZWxmLCBkcml2ZXIsIHRlc3RfaW5wdXQsIHN0b3Bf
d2hlbl9kb25lKToKLSAgICAgICAgcmV0dXJuIHNpbmdsZV90ZXN0X3J1bm5lci5ydW5fc2luZ2xl
X3Rlc3Qoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywgc2VsZi5fcmVzdWx0c19kaXJlY3Rvcnks
Ci0gICAgICAgICAgICBzZWxmLl9uYW1lLCBkcml2ZXIsIHRlc3RfaW5wdXQsIHN0b3Bfd2hlbl9k
b25lKQorICAgICAgICByZXR1cm4gc2luZ2xlX3Rlc3RfcnVubmVyLnJ1bl9zaW5nbGVfdGVzdCgK
KyAgICAgICAgICAgIHNlbGYuX3BvcnQsIHNlbGYuX3BvcnQuX29wdGlvbnMsIHNlbGYuX3Jlc3Vs
dHNfZGlyZWN0b3J5LAorICAgICAgICAgICAgVGFza1Bvb2wuUHJvY2Vzcy5uYW1lLAorICAgICAg
ICAgICAgZHJpdmVyLCB0ZXN0X2lucHV0LCBzdG9wX3doZW5fZG9uZSwKKyAgICAgICAgKQogCiAK
IGNsYXNzIFRlc3RTaGFyZChvYmplY3QpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL2xheW91dF90ZXN0X3J1bm5lcl91bml0dGVzdC5weQkocmV2aXNpb24gMjc4NDIyKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rl
c3RfcnVubmVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsMjMgKzEzMCwyMyBA
QCBjbGFzcyBMYXlvdXRUZXN0UnVubmVyVGVzdHModW5pdHRlc3QuVGVzCiAgICAgICAgIGV4cGVj
dGF0aW9ucy5wYXJzZV9hbGxfZXhwZWN0YXRpb25zKCkKICAgICAgICAgcnVubmVyLl9leHBlY3Rh
dGlvbnMgPSBleHBlY3RhdGlvbnMKIAotICAgICAgICBydW5fcmVzdWx0cyA9IFRlc3RSdW5SZXN1
bHRzKGV4cGVjdGF0aW9ucywgMSkKKyAgICAgICAgcnVubmVyLl9jdXJyZW50X3J1bl9yZXN1bHRz
ID0gVGVzdFJ1blJlc3VsdHMoZXhwZWN0YXRpb25zLCAxKQogICAgICAgICByZXN1bHQgPSBUZXN0
UmVzdWx0KHRlc3QsIGZhaWx1cmVzPVt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0
Y2hEaWROb3RPY2N1cigpXSwgcmVmdGVzdF90eXBlPVsnIT0nXSkKLSAgICAgICAgcnVubmVyLl91
cGRhdGVfc3VtbWFyeV93aXRoX3Jlc3VsdChydW5fcmVzdWx0cywgcmVzdWx0KQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDEsIHJ1bl9yZXN1bHRzLmV4cGVjdGVkKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDAsIHJ1bl9yZXN1bHRzLnVuZXhwZWN0ZWQpCisgICAgICAgIHJ1bm5lci51cGRh
dGVfc3VtbWFyeV93aXRoX3Jlc3VsdChyZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgcnVubmVyLl9jdXJyZW50X3J1bl9yZXN1bHRzLmV4cGVjdGVkKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDAsIHJ1bm5lci5fY3VycmVudF9ydW5fcmVzdWx0cy51bmV4cGVjdGVkKQogCi0g
ICAgICAgIHJ1bl9yZXN1bHRzID0gVGVzdFJ1blJlc3VsdHMoZXhwZWN0YXRpb25zLCAxKQorICAg
ICAgICBydW5uZXIuX2N1cnJlbnRfcnVuX3Jlc3VsdHMgPSBUZXN0UnVuUmVzdWx0cyhleHBlY3Rh
dGlvbnMsIDEpCiAgICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHQodGVzdCwgZmFpbHVyZXM9W10s
IHJlZnRlc3RfdHlwZT1bJz09J10pCi0gICAgICAgIHJ1bm5lci5fdXBkYXRlX3N1bW1hcnlfd2l0
aF9yZXN1bHQocnVuX3Jlc3VsdHMsIHJlc3VsdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgw
LCBydW5fcmVzdWx0cy5leHBlY3RlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBydW5f
cmVzdWx0cy51bmV4cGVjdGVkKQorICAgICAgICBydW5uZXIudXBkYXRlX3N1bW1hcnlfd2l0aF9y
ZXN1bHQocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bm5lci5fY3VycmVu
dF9ydW5fcmVzdWx0cy5leHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBydW5u
ZXIuX2N1cnJlbnRfcnVuX3Jlc3VsdHMudW5leHBlY3RlZCkKIAotICAgICAgICBydW5fcmVzdWx0
cyA9IFRlc3RSdW5SZXN1bHRzKGV4cGVjdGF0aW9ucywgMSkKKyAgICAgICAgcnVubmVyLl9jdXJy
ZW50X3J1bl9yZXN1bHRzID0gVGVzdFJ1blJlc3VsdHMoZXhwZWN0YXRpb25zLCAxKQogICAgICAg
ICByZXN1bHQgPSBUZXN0UmVzdWx0KGxlYWtfdGVzdCwgZmFpbHVyZXM9W10pCi0gICAgICAgIHJ1
bm5lci5fdXBkYXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQocnVuX3Jlc3VsdHMsIHJlc3VsdCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBydW5fcmVzdWx0cy5leHBlY3RlZCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgwLCBydW5fcmVzdWx0cy51bmV4cGVjdGVkKQorICAgICAgICBydW5u
ZXIudXBkYXRlX3N1bW1hcnlfd2l0aF9yZXN1bHQocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEsIHJ1bm5lci5fY3VycmVudF9ydW5fcmVzdWx0cy5leHBlY3RlZCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgwLCBydW5uZXIuX2N1cnJlbnRfcnVuX3Jlc3VsdHMudW5leHBlY3Rl
ZCkKIAogICAgIGRlZiB0ZXN0X3NlcnZlcnNfc3RhcnRlZChzZWxmKToKIApJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDI3ODQyMikKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xODMsMTMgKzE4Myw2
IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgIyBBbiBlbXB0eSBsaXN0IHdvdWxkIGlu
ZGljYXRlIGEgcG9ydCB3YXMgaW5jYXBhYmxlIG9mIHJ1bm5pbmcgdGVzdHMuCiAgICAgICAgIHJl
dHVybiBbTm9uZV0KIAotICAgIGRlZiB3b3JrZXJfc3RhcnR1cF9kZWxheV9zZWNzKHNlbGYpOgot
ICAgICAgICAjIEZJWE1FOiBJZiB3ZSBzdGFydCB3b3JrZXJzIHVwIHRvbyBxdWlja2x5LCBEdW1w
UmVuZGVyVHJlZSBhcHBlYXJzCi0gICAgICAgICMgdG8gdGhyYXNoIG9uIHNvbWV0aGluZyBhbmQg
dGltZSBvdXQgaXRzIGZpcnN0IGZldyB0ZXN0cy4gVW50aWwKLSAgICAgICAgIyB3ZSBjYW4gZmln
dXJlIG91dCB3aGF0J3MgZ29pbmcgb24sIHNsZWVwIGEgYml0IGluIGJldHdlZW4KLSAgICAgICAg
IyB3b3JrZXJzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5
MTQ3IC4KLSAgICAgICAgcmV0dXJuIDAuMQotCiAgICAgZGVmIGJhc2VsaW5lX3BhdGgoc2VsZik6
CiAgICAgICAgICIiIlJldHVybiB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHRv
IHN0b3JlIG5ldyBiYXNlbGluZXMgaW4gZm9yIHRoaXMgcG9ydC4iIiIKICAgICAgICAgIyBGSVhN
RTogcmVtb3ZlIG9uY2UgYWxsIGNhbGxlcnMgYXJlIGNhbGxpbmcgZWl0aGVyIGJhc2VsaW5lX3Zl
cnNpb25fZGlyKCkgb3IgYmFzZWxpbmVfcGxhdGZvcm1fZGlyKCkKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC90ZXN0LnB5CShyZXZpc2lvbiAyNzg0MjIpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvdGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzkzLDkgKzM5Myw2IEBAIGNs
YXNzIFRlc3RQb3J0KFBvcnQpOgogICAgIGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxm
LCAqKmt3YXJncyk6CiAgICAgICAgIHJldHVybiAxCiAKLSAgICBkZWYgd29ya2VyX3N0YXJ0dXBf
ZGVsYXlfc2VjcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIDAKLQogICAgIGRlZiBjaGVja19idWls
ZChzZWxmKToKICAgICAgICAgcmV0dXJuIFRydWUKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>