<?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>276130</bug_id>
          
          <creation_ts>2024-07-02 11:36:40 -0700</creation_ts>
          <short_desc>REGRESSION(280500@main): [ macOS iOS ] 9X imported/w3c/web-platform-tests/css/css-* is constantly failing.</short_desc>
          <delta_ts>2024-07-02 12:39:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>276138</dup_id>
          
          <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="Anfernee Viduya">aviduya</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ntim</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2044230</commentid>
    <comment_count>0</comment_count>
      <attachid>471793</attachid>
    <who name="Anfernee Viduya">aviduya</who>
    <bug_when>2024-07-02 11:36:40 -0700</bug_when>
    <thetext>Created attachment 471793
test list thats constantly failing

DESCRIPTION: 
imported/w3c/web-platform-tests/css/css-logical/logical-box-border-color.html
imported/w3c/web-platform-tests/css/css-logical/logical-box-border-radius.html
imported/w3c/web-platform-tests/css/css-logical/logical-box-border-shorthands.html
imported/w3c/web-platform-tests/css/css-logical/logical-box-border-style.html
imported/w3c/web-platform-tests/css/css-logical/logical-box-border-width.html
imported/w3c/web-platform-tests/css/css-logical/logical-box-inset.html
imported/w3c/web-platform-tests/css/css-logical/logical-box-margin.html
imported/w3c/web-platform-tests/css/css-logical/logical-box-padding.html
imported/w3c/web-platform-tests/css/css-writing-modes/logical-physical-mapping-001.html 

is constantly failing on all platforms after 280500@main landed. 

HISTORY: 
https://results.webkit.org/?suite=layout-tests&amp;suite=layout-tests&amp;suite=layout-tests&amp;suite=layout-tests&amp;suite=layout-tests&amp;suite=layout-tests&amp;suite=layout-tests&amp;suite=layout-tests&amp;suite=layout-tests&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fcss%2Fcss-logical%2Flogical-box-border-color.html&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fcss%2Fcss-logical%2Flogical-box-border-radius.html&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fcss%2Fcss-logical%2Flogical-box-border-shorthands.html&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fcss%2Fcss-logical%2Flogical-box-border-style.html&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fcss%2Fcss-logical%2Flogical-box-border-width.html&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fcss%2Fcss-logical%2Flogical-box-inset.html&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fcss%2Fcss-logical%2Flogical-box-margin.html&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fcss%2Fcss-logical%2Flogical-box-padding.html&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fcss%2Fcss-writing-modes%2Flogical-physical-mapping-001.html&amp;platform=ios&amp;platform=mac&amp;platform=visionos

REPRODUCIBILITY: 
I was able to bisect the regression at 280500@main using this command. 
run-webkit-tests --root 280500@main --test-list=test_list_0207.txt --child-processes=1 no-retry-failures

I am also attaching the test_list I used for reproduction. 

DIFF / LOGS PRODUCED:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2044231</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-07-02 11:36:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/130984790&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2044232</commentid>
    <comment_count>2</comment_count>
      <attachid>471794</attachid>
    <who name="Anfernee Viduya">aviduya</who>
    <bug_when>2024-07-02 11:38:52 -0700</bug_when>
    <thetext>Created attachment 471794
Log of diffs.

Attaching DIFFS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2044236</commentid>
    <comment_count>3</comment_count>
      <attachid>471794</attachid>
    <who name="Anfernee Viduya">aviduya</who>
    <bug_when>2024-07-02 11:46:13 -0700</bug_when>
    <thetext>Comment on attachment 471794
Log of diffs.

broken file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2044238</commentid>
    <comment_count>4</comment_count>
    <who name="Anfernee Viduya">aviduya</who>
    <bug_when>2024-07-02 11:48:36 -0700</bug_when>
    <thetext>DIFF: 
https://build.webkit.org/results/Apple-Sonoma-Release-AppleSilicon-WK2-Tests/280563@main%20(4512)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2044268</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2024-07-02 12:39:07 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 276138 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>471793</attachid>
            <date>2024-07-02 11:36:40 -0700</date>
            <delta_ts>2024-07-02 11:36:40 -0700</delta_ts>
            <desc>test list thats constantly failing</desc>
            <filename>test_list_0207.txt</filename>
            <type>text/plain</type>
            <size>699</size>
            <attacher name="Anfernee Viduya">aviduya</attacher>
            
              <data encoding="base64">aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWxvZ2ljYWwvbG9naWNhbC1i
b3gtYm9yZGVyLWNvbG9yLmh0bWwKaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWxvZ2ljYWwvbG9naWNhbC1ib3gtYm9yZGVyLXJhZGl1cy5odG1sCmltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1sb2dpY2FsL2xvZ2ljYWwtYm94LWJvcmRlci1zaG9y
dGhhbmRzLmh0bWwKaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWxvZ2lj
YWwvbG9naWNhbC1ib3gtYm9yZGVyLXN0eWxlLmh0bWwKaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWxvZ2ljYWwvbG9naWNhbC1ib3gtYm9yZGVyLXdpZHRoLmh0bWwKaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWxvZ2ljYWwvbG9naWNhbC1ib3gt
aW5zZXQuaHRtbAppbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbG9naWNh
bC9sb2dpY2FsLWJveC1tYXJnaW4uaHRtbAppbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtbG9naWNhbC9sb2dpY2FsLWJveC1wYWRkaW5nLmh0bWwKaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXdyaXRpbmctbW9kZXMvbG9naWNhbC1waHlzaWNhbC1t
YXBwaW5nLTAwMS5odG1s
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>471794</attachid>
            <date>2024-07-02 11:38:52 -0700</date>
            <delta_ts>2024-07-02 11:46:13 -0700</delta_ts>
            <desc>Log of diffs.</desc>
            <filename>results.html</filename>
            <type>text/html</type>
            <size>63714</size>
            <attacher name="Anfernee Viduya">aviduya</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHN0eWxlPgo6cm9vdCB7CiAgICBjb2xvci1z
Y2hlbWU6IGRhcmsgbGlnaHQ7CiAgICAtLWNsaWNrYWJsZS1saW5rLWNvbG9yOiBibHVlOwogICAg
LS1pdGVtLWhpZ2hsaWdodC1jb2xvcjogcmVkOwogICAgLS1idXR0b24tYmFja2dyb3VuZC1jb2xv
cjogd2hpdGU7CiAgICAtLXBhbmVsLWJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1
NSwgMC45KTsKfQoKQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgOnJv
b3QgewogICAgICAgIC0taXRlbS1oaWdobGlnaHQtY29sb3I6ICNGODQ5MEE7CiAgICAgICAgLS1i
dXR0b24tYmFja2dyb3VuZC1jb2xvcjogIzY2NjsKICAgICAgICAtLXBhbmVsLWJhY2tncm91bmQt
Y29sb3I6IHJnYmEoNTAsIDUwLCA1MCwgMC45KTsKICAgICAgICAtLWNsaWNrYWJsZS1saW5rLWNv
bG9yOiAjOWU5ZWZmOwogICAgfQogICAgLyogUmVtb3ZlIHdoZW4gd2Via2l0Lm9yZy9iLzIwOTg1
MSBpcyBmaXhlZC4gKi8KICAgIGE6bGluayB7IGNvbG9yOiAjOWU5ZWZmOyB9CiAgICBhOnZpc2l0
ZWQgeyBjb2xvcjogI2QwYWRmMDsgfQogICAgYTphY3RpdmUgeyBjb2xvcjogcmVkOyB9Cn0KCmJv
ZHkgewogICAgbWFyZ2luOiAwOwogICAgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgc2Fucy1zZXJp
ZjsKICAgIGZvbnQtc2l6ZTogMTFwdDsKfQoKYm9keSA+ICogewogICAgbWFyZ2luLWxlZnQ6IDRw
eDsKICAgIG1hcmdpbi10b3A6IDRweDsKfQoKaDEgewogICAgZm9udC1zaXplOiAxNHB0OwogICAg
bWFyZ2luLXRvcDogMS41ZW07Cn0KCnAgewogICAgbWFyZ2luLWJvdHRvbTogMC4zZW07Cn0KCmEu
Y2xpY2thYmxlIHsKICAgIGNvbG9yOiB2YXIoLS1jbGlja2FibGUtbGluay1jb2xvcik7CiAgICBj
dXJzb3I6IHBvaW50ZXI7CiAgICBtYXJnaW4tbGVmdDogMC4yZW07Cn0KCnRyOm5vdCgucmVzdWx0
cy1yb3cpIHRkIHsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCnRyOm5vdCgucmVzdWx0cy1y
b3cpIHRkOmZpcnN0LW9mLXR5cGUgewogICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKfQoKdGQ6bm90
KDpmaXJzdC1vZi10eXBlKSB7CiAgICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlOwp9Cgp0aCwg
dGQgewogICAgcGFkZGluZzogMXB4IDRweDsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCnRk
Om50aC1jaGlsZCgxKSB7ICAKICAgIG1pbi13aWR0aDogMzVlbTsKfQoKdGg6ZW1wdHksIHRkOmVt
cHR5IHsKICAgIHBhZGRpbmc6IDA7Cn0KCnRoIHsKICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5v
bmU7CiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwp9CgpkdCA+IHN1cCB7CiAgICB2ZXJ0aWNh
bC1hbGlnbjp0ZXh0LXRvcDsKICAgIGZvbnQtc2l6ZTo3NSU7Cn0KCnN1cCA+IGEgewogICAgdGV4
dC1kZWNvcmF0aW9uOiBub25lOwp9CgouY29udGVudC1jb250YWluZXIgewogICAgbWluLWhlaWdo
dDogMDsKfQoKLm5vdGUgewogICAgY29sb3I6IGdyYXk7CiAgICBmb250LXNpemU6IHNtYWxsZXI7
Cn0KCi5yZXN1bHRzLXJvdyBpZnJhbWUsIC5yZXN1bHRzLXJvdyBpbWcgewogICAgd2lkdGg6IDgw
MHB4OwogICAgaGVpZ2h0OiA2MDBweDsKfQoKLnJlc3VsdHMtcm93W2RhdGEtZXhwYW5kZWQ9ImZh
bHNlIl0gewogICAgZGlzcGxheTogbm9uZTsKfQoKI3Rvb2xiYXIgewogICAgcG9zaXRpb246IGZp
eGVkOwogICAgdG9wOiAycHg7CiAgICByaWdodDogMnB4OwogICAgdGV4dC1hbGlnbjogcmlnaHQ7
Cn0KCi5mbG9hdGluZy1wYW5lbCB7CiAgICBwYWRkaW5nOiA2cHg7CiAgICBiYWNrZ3JvdW5kLWNv
bG9yOiB2YXIoLS1wYW5lbC1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgIGJvcmRlcjogMXB4IHNvbGlk
IHNpbHZlcjsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKfQoKLmV4cGFuZC1idXR0b24gewogICAg
YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWJhY2tncm91bmQtY29sb3IpOwogICAgd2lk
dGg6IDExcHg7CiAgICBoZWlnaHQ6IDEycHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCBncmF5Owog
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luOiAwIDNweCAwIDA7CiAgICBwb3Np
dGlvbjogcmVsYXRpdmU7CiAgICBjdXJzb3I6IGRlZmF1bHQ7Cn0KCi5jdXJyZW50IHsKICAgIGNv
bG9yOiB2YXIoLS1pdGVtLWhpZ2hsaWdodC1jb2xvcik7Cn0KCi5jdXJyZW50IC5leHBhbmQtYnV0
dG9uIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0taXRlbS1oaWdobGlnaHQtY29sb3IpOwp9Cgou
ZXhwYW5kLWJ1dHRvbi10ZXh0IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTAu
M2VtOwogICAgbGVmdDogMXB4Owp9Cgp0Ym9keSAuZmxhZyB7CiAgICBkaXNwbGF5OiBub25lOwp9
Cgp0Ym9keS5mbGFnZ2VkIC5mbGFnIHsKICAgIGRpc3BsYXk6IGlubGluZTsKfQoKLnN0b3BwZWQt
cnVubmluZy1lYXJseS1tZXNzYWdlIHsKICAgIGJvcmRlcjogM3B4IHNvbGlkICNkMDA7CiAgICBm
b250LXdlaWdodDogYm9sZDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmc6
IDNweDsKfQoKLnJlc3VsdC1jb250YWluZXIgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwog
ICAgYm9yZGVyOiAxcHggc29saWQgZ3JheTsKICAgIG1hcmdpbjogNHB4Owp9CgoucmVzdWx0LWNv
bnRhaW5lciBpZnJhbWUsIC5yZXN1bHQtY29udGFpbmVyIGltZyB7CiAgICBib3JkZXI6IDA7CiAg
ICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9CgoubGVha3MgPiB0YWJsZSB7CiAgICBtYXJnaW46IDRw
eDsKfQoubGVha3MgPiB0ZCB7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7Cn0KCiNvcHRpb25zIHsK
ICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9Cgojb3B0aW9ucy1tZW51IHsKICAgIGJvcmRl
cjogMXB4IHNvbGlkIGdyYXk7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBtYXJnaW4tdG9w
OiAxcHg7CiAgICBwYWRkaW5nOiAycHggNHB4OwogICAgYm94LXNoYWRvdzogMnB4IDJweCA0cHgg
cmdiYSgwLCAwLCAwLCAwLjYpOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnM7CiAgICB0ZXh0
LWFsaWduOiBsZWZ0OwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDRweDsKICAg
IGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhbmVsLWJhY2tncm91bmQtY29sb3IpOwp9Cgojb3B0
aW9ucy1tZW51IGxhYmVsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouaGlkZGVuLW1lbnUgewog
ICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBvcGFjaXR5OiAwOwp9CgoubGFiZWwgewogICAg
cGFkZGluZy1sZWZ0OiAzcHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGZvbnQtc2l6ZTog
c21hbGw7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzaWx2ZXI7Cn0KCi5waXhlbC16b29tLWNvbnRh
aW5lciB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAg
d2lkdGg6IDk2JTsKICAgIG1hcmdpbjogMTBweDsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBkaXNw
bGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tb3otYm94OwogICAgcG9pbnRlci1ldmVu
dHM6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzaWx2ZXI7CiAgICBib3JkZXItcmFkaXVz
OiAyMHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgZ3JheTsKICAgIGJveC1zaGFkb3c6IDAgMCA1
cHggcmdiYSgwLCAwLCAwLCAwLjc1KTsKfQoKLnBpeGVsLXpvb20tY29udGFpbmVyID4gKiB7CiAg
ICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgLW1vei1ib3gtZmxleDogMTsKICAgIGJvcmRlcjog
MXB4IHNvbGlkIGJsYWNrOwogICAgbWFyZ2luOiA0cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwog
ICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Cn0KCi5waXhlbC16b29tLWNvbnRhaW5lciAuc2Nh
bGVkLWltYWdlLWNvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxv
dzogaGlkZGVuOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDQwMHB4Owp9Cgouc2NhbGVk
LWltYWdlLWNvbnRhaW5lciA+IGltZyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6
IDA7CiAgICBsZWZ0OiAwOwogICAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNv
bnRyYXN0Owp9CgojZmxhZ2dlZC10ZXN0LWNvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogZml4ZWQ7
CiAgICBib3R0b206IDRweDsKICAgIHJpZ2h0OiA0cHg7CiAgICB3aWR0aDogNTAlOwogICAgbWlu
LXdpZHRoOiA0MDBweDsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhbmVsLWJhY2tncm91
bmQtY29sb3IpOwp9CgojZmxhZ2dlZC10ZXN0LWNvbnRhaW5lciA+IGgyIHsKICAgIG1hcmdpbjog
MCAwIDRweCAwOwp9CgojZmxhZ2dlZC10ZXN0cyB7CiAgICBwYWRkaW5nOiAwIDVweDsKICAgIG1h
cmdpbjogMDsKICAgIGhlaWdodDogN2VtOwogICAgb3ZlcmZsb3cteTogc2Nyb2xsOwp9Cjwvc3R5
bGU+CjxzdHlsZSBpZD0idW5leHBlY3RlZC1zdHlsZSI+PC9zdHlsZT4KCjxzY3JpcHQ+CmlmICh3
aW5kb3cudGVzdFJ1bm5lcikKICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwoKY2xhc3MgVXRp
bHMKewogICAgc3RhdGljIG1hdGNoZXNTZWxlY3Rvcihub2RlLCBzZWxlY3RvcikKICAgIHsKICAg
ICAgICBpZiAobm9kZS5tYXRjaGVzKQogICAgICAgICAgICByZXR1cm4gbm9kZS5tYXRjaGVzKHNl
bGVjdG9yKTsKCiAgICAgICAgaWYgKG5vZGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yKQogICAgICAg
ICAgICByZXR1cm4gbm9kZS53ZWJraXRNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpOwoKICAgICAg
ICBpZiAobm9kZS5tb3pNYXRjaGVzU2VsZWN0b3IpCiAgICAgICAgICAgIHJldHVybiBub2RlLm1v
ek1hdGNoZXNTZWxlY3RvcihzZWxlY3Rvcik7CiAgICB9CgogICAgc3RhdGljIHBhcmVudE9mVHlw
ZShub2RlLCBzZWxlY3RvcikKICAgIHsKICAgICAgICB3aGlsZSAobm9kZSA9IG5vZGUucGFyZW50
Tm9kZSkgewogICAgICAgICAgICBpZiAoVXRpbHMubWF0Y2hlc1NlbGVjdG9yKG5vZGUsIHNlbGVj
dG9yKSkKICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgIH0KICAgICAgICByZXR1
cm4gbnVsbDsKICAgIH0KCiAgICBzdGF0aWMgdGVzdFByZWZpeCh0ZXN0TmFtZSkKICAgIHsKICAg
ICAgICBsZXQgdmFyaWFudCA9ICcnOwogICAgICAgIGxldCB2YXJpYW50U2VwYXJhdG9ySW5kZXgg
PSB0ZXN0TmFtZS5pbmRleE9mKCc/Jyk7CiAgICAgICAgaWYgKHZhcmlhbnRTZXBhcmF0b3JJbmRl
eCA+PSAwKSB7CiAgICAgICAgICAgIHZhcmlhbnQgPSB0ZXN0TmFtZS5zdWJzdHJpbmcodmFyaWFu
dFNlcGFyYXRvckluZGV4ICsgMSk7CiAgICAgICAgICAgIHRlc3ROYW1lID0gdGVzdE5hbWUuc3Vi
c3RyaW5nKDAsIHZhcmlhbnRTZXBhcmF0b3JJbmRleCk7CiAgICAgICAgfQogICAgICAgIHZhcmlh
bnRTZXBhcmF0b3JJbmRleCA9IHRlc3ROYW1lLmluZGV4T2YoJyMnKTsKICAgICAgICBpZiAodmFy
aWFudFNlcGFyYXRvckluZGV4ID49IDApIHsKICAgICAgICAgICAgdmFyaWFudCA9IHRlc3ROYW1l
LnN1YnN0cmluZyh2YXJpYW50U2VwYXJhdG9ySW5kZXggKyAxKTsKICAgICAgICAgICAgdGVzdE5h
bWUgPSB0ZXN0TmFtZS5zdWJzdHJpbmcoMCwgdmFyaWFudFNlcGFyYXRvckluZGV4KTsKICAgICAg
ICB9CgogICAgICAgIGxldCBwcmVmaXggPSBVdGlscy5zcGxpdEV4dGVuc2lvbih0ZXN0TmFtZSlb
MF07CiAgICAgICAgaWYgKHZhcmlhbnQubGVuZ3RoKQogICAgICAgICAgICBwcmVmaXggKz0gJ18n
ICsgdmFyaWFudC5yZXBsYWNlKC9bXHxcKiA8PjpdL2csICdfJyk7CiAgICAgICAgcmV0dXJuIHBy
ZWZpeDsKICAgIH0KCiAgICBzdGF0aWMgc3BsaXRFeHRlbnNpb24odGVzdE5hbWUpCiAgICB7CiAg
ICAgICAgLy8gU3BsaXRzICdmb28vYmFyL2Jvby5odG1sP2JsYWgnIHRvIFsnZm9vL2Jhci9ib28n
LCAnLmh0bWwnLCAnP2JsYWgnXS4gTGFzdCBpdGVtIGNhbiBiZQogICAgICAgIC8vIG51bGwgaWYg
YHRlc3ROYW1lYCBoYWQgbm8gVVJMIGZyYWdtZW50IG9yIHF1ZXJ5IHNlcGFyYXRvci4KICAgICAg
ICBsZXQgZmlsZW5hbWVJbmRleCA9IHRlc3ROYW1lLmxhc3RJbmRleE9mKCIvIik7CiAgICAgICAg
bGV0IGJ1ZmZlciA9IHRlc3ROYW1lLnN1YnN0cihmaWxlbmFtZUluZGV4ICsgMSk7CiAgICAgICAg
YnVmZmVyID0gYnVmZmVyLnNwbGl0KCc/JylbMF07CiAgICAgICAgYnVmZmVyID0gYnVmZmVyLnNw
bGl0KCcjJylbMF07CiAgICAgICAgbGV0IHBhcnRzID0gYnVmZmVyLnNwbGl0KCcuJyk7CiAgICAg
ICAgbGV0IGV4dGVuc2lvbkluZGV4ID0gYnVmZmVyLmxhc3RJbmRleE9mKCIuIik7CiAgICAgICAg
bGV0IGZpbGVuYW1lID0gYnVmZmVyLnN1YnN0cigwLCBleHRlbnNpb25JbmRleCk7CiAgICAgICAg
Ly8gVGVzdCBuYW1lcyB0aGF0IGFyZSBhY3V0YWxseSBwcm9jZXNzIG5hbWVzIGFyZSB0cmVhdGVk
IGxpa2UgdGhleSBkb24ndCBoYXZlIGFueSBleHRlbnNpb24KICAgICAgICBpZiAoZmlsZW5hbWUu
bWF0Y2goL2NvbVwuYXBwbGVcLi4rLykgfHwgZmlsZW5hbWUubWF0Y2goL29yZ1wuV2ViS2l0XC4u
Ky8pKSB7CiAgICAgICAgICAgIHJldHVybiBbdGVzdE5hbWUsICcnLCAnJ107CiAgICAgICAgfQog
ICAgICAgIGxldCBleHQgPSBidWZmZXIuc3Vic3RyKGV4dGVuc2lvbkluZGV4KTsKICAgICAgICBs
ZXQgcmVtYWluc0luZGV4ID0gdGVzdE5hbWUubGFzdEluZGV4T2YoZXh0KTsKICAgICAgICBsZXQg
cmVtYWlucyA9IHRlc3ROYW1lLnN1YnN0cihyZW1haW5zSW5kZXggKyBleHQubGVuZ3RoKTsKICAg
ICAgICByZXR1cm4gW3Rlc3ROYW1lLnN1YnN0cigwLCBmaWxlbmFtZUluZGV4KSArICcvJyArIGZp
bGVuYW1lLCBleHQsIHJlbWFpbnNdOwogICAgfQoKICAgIHN0YXRpYyBmb3JFYWNoKG5vZGVMaXN0
LCBoYW5kbGVyKQogICAgewogICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobm9k
ZUxpc3QsIGhhbmRsZXIpOwogICAgfQoKICAgIHN0YXRpYyB0b0FycmF5KG5vZGVMaXN0KQogICAg
ewogICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChub2RlTGlzdCk7CiAg
ICB9CgogICAgc3RhdGljIHRyaW0oc3RyaW5nKQogICAgewogICAgICAgIHJldHVybiBzdHJpbmcu
cmVwbGFjZSgvXltcc1x4YTBdK3xbXHNceGEwXSskL2csICcnKTsKICAgIH0KCiAgICBzdGF0aWMg
YXN5bmMoZnVuYywgYXJncykKICAgIHsKICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgZnVuYy5h
cHBseShudWxsLCBhcmdzKTsgfSwgNTApOwogICAgfQoKICAgIHN0YXRpYyBhcHBlbmRIVE1MKG5v
ZGUsIGh0bWwpCiAgICB7CiAgICAgICAgaWYgKG5vZGUuaW5zZXJ0QWRqYWNlbnRIVE1MKQogICAg
ICAgICAgICBub2RlLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlRW5kJywgaHRtbCk7CiAgICAg
ICAgZWxzZQogICAgICAgICAgICBub2RlLmlubmVySFRNTCArPSBodG1sOwogICAgfX07CgpjbGFz
cyBUZXN0UmVzdWx0CnsKICAgIGNvbnN0cnVjdG9yKGluZm8sIG5hbWUpCiAgICB7CiAgICAgICAg
dGhpcy5uYW1lID0gbmFtZTsKICAgICAgICB0aGlzLmluZm8gPSBpbmZvOyAvLyBGSVhNRTogbWFr
ZSB0aGlzIHByaXZhdGUuCiAgICB9CgogICAgaXNGYWlsdXJlRXhwZWN0ZWQoKQogICAgewogICAg
ICAgIGxldCBhY3R1YWwgPSB0aGlzLmluZm8uYWN0dWFsOyAgICAKICAgICAgICBsZXQgZXhwZWN0
ZWQgPSB0aGlzLmluZm8uZXhwZWN0ZWQgfHwgJ1BBU1MnOwoKICAgICAgICBpZiAoYWN0dWFsICE9
ICdTS0lQJykgewogICAgICAgICAgICBsZXQgZXhwZWN0ZWRBcnJheSA9IGV4cGVjdGVkLnNwbGl0
KCcgJyk7CiAgICAgICAgICAgIGxldCBhY3R1YWxBcnJheSA9IGFjdHVhbC5zcGxpdCgnICcpOwog
ICAgICAgICAgICBmb3IgKGxldCBhY3R1YWxWYWx1ZSBvZiBhY3R1YWxBcnJheSkgewogICAgICAg
ICAgICAgICAgaWYgKGV4cGVjdGVkQXJyYXkuaW5kZXhPZihhY3R1YWxWYWx1ZSkgPT0gLTEgJiYg
KGV4cGVjdGVkQXJyYXkuaW5kZXhPZignRkFJTCcpID09IC0xIHx8IChhY3R1YWxWYWx1ZSAhPSAn
VEVYVCcgJiYgYWN0dWFsVmFsdWUgIT0gJ0lNQUdFK1RFWFQnICYmIGFjdHVhbFZhbHVlICE9ICdB
VURJTycpKSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0K
ICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICAKICAgIGlzTWlzc2luZ0Fs
bFJlc3VsdHMoKQogICAgewogICAgICAgIHJldHVybiB0aGlzLmluZm8uYWN0dWFsID09ICdNSVNT
SU5HJzsKICAgIH0KICAgIAogICAgaGFzTWlzc2luZ1Jlc3VsdCgpCiAgICB7CiAgICAgICAgcmV0
dXJuIHRoaXMuaW5mby5hY3R1YWwuaW5kZXhPZignTUlTU0lORycpICE9IC0xOwogICAgfQogICAg
CiAgICBpc0ZsYWtleShwaXhlbFRlc3RzRW5hYmxlZCkKICAgIHsKICAgICAgICBsZXQgYWN0dWFs
VG9rZW5zID0gdGhpcy5pbmZvLmFjdHVhbC5zcGxpdCgnICcpOwogICAgICAgIGxldCBwYXNzZWRX
aXRoSW1hZ2VPbmx5RmFpbHVyZUluUmV0cnkgPSBhY3R1YWxUb2tlbnNbMF0gPT0gJ1RFWFQnICYm
IGFjdHVhbFRva2Vuc1sxXSA9PSAnSU1BR0UnOwogICAgICAgIGlmIChhY3R1YWxUb2tlbnNbMV0g
JiYgdGhpcy5pbmZvLmFjdHVhbC5pbmRleE9mKCdQQVNTJykgIT0gLTEgfHwgKCFwaXhlbFRlc3Rz
RW5hYmxlZCAmJiBwYXNzZWRXaXRoSW1hZ2VPbmx5RmFpbHVyZUluUmV0cnkpKQogICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAK
ICAgIGlzUGFzcygpCiAgICB7CiAgICAgICAgcmV0dXJuIHRoaXMuaW5mby5hY3R1YWwgPT0gJ1BB
U1MnOwogICAgfQoKICAgIGlzVGV4dEZhaWx1cmUoKQogICAgewogICAgICAgIHJldHVybiB0aGlz
LmluZm8uYWN0dWFsLmluZGV4T2YoJ1RFWFQnKSAhPSAtMTsKICAgIH0KCiAgICBpc0ltYWdlRmFp
bHVyZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHRoaXMuaW5mby5hY3R1YWwuaW5kZXhPZignSU1B
R0UnKSAhPSAtMTsKICAgIH0KCiAgICBpc0F1ZGlvRmFpbHVyZSgpCiAgICB7CiAgICAgICAgcmV0
dXJuIHRoaXMuaW5mby5hY3R1YWwuaW5kZXhPZignQVVESU8nKSAhPSAtMTsKICAgIH0KCiAgICBo
YXNMZWFrKCkKICAgIHsKICAgICAgICByZXR1cm4gdGhpcy5pbmZvLmFjdHVhbC5pbmRleE9mKCdM
RUFLJykgIT0gLTE7CiAgICB9CgogICAgaXNDcmFzaCgpCiAgICB7CiAgICAgICAgcmV0dXJuIHRo
aXMuaW5mby5hY3R1YWwgPT0gJ0NSQVNIJzsKICAgIH0KICAgIAogICAgaXNUaW1lb3V0KCkKICAg
IHsKICAgICAgICByZXR1cm4gdGhpcy5pbmZvLmFjdHVhbCA9PSAnVElNRU9VVCc7CiAgICB9CiAg
ICAKICAgIGlzVW5leHBlY3RlZFBhc3MocGl4ZWxUZXN0c0VuYWJsZWQpCiAgICB7CiAgICAgICAg
aWYgKHRoaXMuaW5mby5hY3R1YWwgPT0gJ1BBU1MnICYmIHRoaXMuaW5mby5leHBlY3RlZCAhPSAn
UEFTUycpIHsKICAgICAgICAgICAgaWYgKHRoaXMuaW5mby5leHBlY3RlZCAhPSAnSU1BR0UnIHx8
IChwaXhlbFRlc3RzRW5hYmxlZCB8fCB0aGlzLmlzUmVmVGVzdCgpKSkKICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICB9CiAgICAKICAgIGlzUmVmVGVzdCgpCiAgICB7CiAgICAgICAgcmV0dXJuICEhdGhpcy5pbmZv
LnJlZnRlc3RfdHlwZTsKICAgIH0KCiAgICBpc01pc21hdGNoUmVmVGVzdCgpCiAgICB7CiAgICAg
ICAgcmV0dXJuIHRoaXMuaXNSZWZUZXN0KCkgJiYgdGhpcy5pbmZvLnJlZnRlc3RfdHlwZS5pbmRl
eE9mKCchPScpICE9IC0xOwogICAgfQoKICAgIGlzTWF0Y2hSZWZUZXN0KCkKICAgIHsKICAgICAg
ICByZXR1cm4gdGhpcy5pc1JlZlRlc3QoKSAmJiB0aGlzLmluZm8ucmVmdGVzdF90eXBlLmluZGV4
T2YoJz09JykgIT0gLTE7CiAgICB9CiAgICAKICAgIGlzTWlzc2luZ1RleHQoKQogICAgewogICAg
ICAgIHJldHVybiB0aGlzLmluZm8uaXNfbWlzc2luZ190ZXh0OwogICAgfQoKICAgIGlzTWlzc2lu
Z0ltYWdlKCkKICAgIHsKICAgICAgICByZXR1cm4gdGhpcy5pbmZvLmlzX21pc3NpbmdfaW1hZ2U7
CiAgICB9CgogICAgaXNNaXNzaW5nQXVkaW8oKQogICAgewogICAgICAgIHJldHVybiB0aGlzLmlu
Zm8uaXNfbWlzc2luZ19hdWRpbzsKICAgIH0KICAgIAogICAgaGFzU3RkRXJyKCkKICAgIHsKICAg
ICAgICByZXR1cm4gdGhpcy5pbmZvLmhhc19zdGRlcnI7CiAgICB9Cn07CgpjbGFzcyBUZXN0UmVz
dWx0cwp7CiAgICBjb25zdHJ1Y3RvcihyZXN1bHRzKQogICAgewogICAgICAgIHRoaXMuX3Jlc3Vs
dHMgPSByZXN1bHRzOwoKICAgICAgICB0aGlzLmNyYXNoVGVzdHMgPSBbXTsKICAgICAgICB0aGlz
LmNyYXNoT3RoZXIgPSBbXTsKICAgICAgICB0aGlzLm1pc3NpbmdSZXN1bHRzID0gW107CiAgICAg
ICAgdGhpcy5mYWlsaW5nVGVzdHMgPSBbXTsKICAgICAgICB0aGlzLnRlc3RzV2l0aFN0ZGVyciA9
IFtdOwogICAgICAgIHRoaXMudGltZW91dFRlc3RzID0gW107CiAgICAgICAgdGhpcy51bmV4cGVj
dGVkUGFzc1Rlc3RzID0gW107CiAgICAgICAgdGhpcy5mbGFreVBhc3NUZXN0cyA9IFtdOwoKICAg
ICAgICB0aGlzLmhhc0h0dHBUZXN0cyA9IGZhbHNlOwogICAgICAgIHRoaXMuaGFzSW1hZ2VGYWls
dXJlcyA9IGZhbHNlOwogICAgICAgIHRoaXMuaGFzVGV4dEZhaWx1cmVzID0gZmFsc2U7CgogICAg
ICAgIHRoaXMuX3Rlc3RzQnlOYW1lID0gbmV3IE1hcDsKCiAgICAgICAgdGhpcy5fZm9yRWFjaFRl
c3QodGhpcy5fcmVzdWx0cy50ZXN0cywgJycpOwogICAgICAgIHRoaXMuX2Zvck90aGVyQ3Jhc2hl
cyh0aGlzLl9yZXN1bHRzLm90aGVyX2NyYXNoZXMpOwogICAgfQogICAgCiAgICBkYXRlKCkKICAg
IHsKICAgICAgICByZXR1cm4gdGhpcy5fcmVzdWx0cy5kYXRlOwogICAgfQoKICAgIGxheW91dFRl
c3RzRGlyKCkKICAgIHsKICAgICAgICByZXR1cm4gdGhpcy5fcmVzdWx0cy5sYXlvdXRfdGVzdHNf
ZGlyOwogICAgfQogICAgCiAgICB1c2VzRXhwZWN0YXRpb25zRmlsZSgpCiAgICB7CiAgICAgICAg
cmV0dXJuIHRoaXMuX3Jlc3VsdHMudXNlc19leHBlY3RhdGlvbnNfZmlsZTsKICAgIH0KICAgIAog
ICAgcmVzdWx0Rm9yVGVzdCh0ZXN0TmFtZSkKICAgIHsKICAgICAgICByZXR1cm4gdGhpcy5fcmVz
dWx0c0J5VGVzdFt0ZXN0TmFtZV07CiAgICB9CiAgICAKICAgIHdhc0ludGVycnVwdGVkKCkKICAg
IHsKICAgICAgICByZXR1cm4gdGhpcy5fcmVzdWx0cy5pbnRlcnJ1cHRlZDsKICAgIH0KCiAgICBo
YXNQcmV0dHlQYXRjaCgpCiAgICB7CiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VsdHMuaGFzX3By
ZXR0eV9wYXRjaDsKICAgIH0KICAgIAogICAgaGFzV0RpZmYoKQogICAgewogICAgICAgIHJldHVy
biB0aGlzLl9yZXN1bHRzLmhhc193ZGlmZjsKICAgIH0KICAgIAogICAgdGVzdFdpdGhOYW1lKHRl
c3ROYW1lKQogICAgewogICAgICAgIHJldHVybiB0aGlzLl90ZXN0c0J5TmFtZS5nZXQodGVzdE5h
bWUpOwogICAgfQoKICAgIF9wcm9jZXNzUmVzdWx0Rm9yVGVzdCh0ZXN0UmVzdWx0KQogICAgewog
ICAgICAgIHRoaXMuX3Rlc3RzQnlOYW1lLnNldCh0ZXN0UmVzdWx0Lm5hbWUsIHRlc3RSZXN1bHQp
OwoKICAgICAgICBsZXQgdGVzdCA9IHRlc3RSZXN1bHQubmFtZTsKICAgICAgICBpZiAodGVzdFJl
c3VsdC5oYXNTdGRFcnIoKSkKICAgICAgICAgICAgdGhpcy50ZXN0c1dpdGhTdGRlcnIucHVzaCh0
ZXN0UmVzdWx0KTsKCiAgICAgICAgdGhpcy5oYXNIdHRwVGVzdHMgfD0gdGVzdC5pbmRleE9mKCdo
dHRwLycpID09IDA7CgogICAgICAgIGlmICh0aGlzLnVzZXNFeHBlY3RhdGlvbnNGaWxlKCkpCiAg
ICAgICAgICAgIHRlc3RSZXN1bHQuaXNFeHBlY3RlZCA9IHRlc3RSZXN1bHQuaXNGYWlsdXJlRXhw
ZWN0ZWQoKTsKICAgICAgICAKICAgICAgICBpZiAodGVzdFJlc3VsdC5pc1RleHRGYWlsdXJlKCkp
CiAgICAgICAgICAgIHRoaXMuaGFzVGV4dEZhaWx1cmVzID0gdHJ1ZTsKCiAgICAgICAgaWYgKHRl
c3RSZXN1bHQuaXNJbWFnZUZhaWx1cmUoKSkKICAgICAgICAgICAgdGhpcy5oYXNJbWFnZUZhaWx1
cmVzID0gdHJ1ZTsKCiAgICAgICAgaWYgKHRlc3RSZXN1bHQuaXNNaXNzaW5nQWxsUmVzdWx0cygp
KSB7CiAgICAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgdGhhdCBuZXctcnVuLXdlYmtpdC10
ZXN0cyBzcGl0cyBvdXQgYW4gLWFjdHVhbC50eHQgZmlsZSBmb3IgdGVzdHMgd2l0aCBNSVNTSU5H
IHJlc3VsdHMuCiAgICAgICAgICAgIHRoaXMubWlzc2luZ1Jlc3VsdHMucHVzaCh0ZXN0UmVzdWx0
KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKHRlc3RSZXN1bHQu
aXNGbGFrZXkodGhpcy5fcmVzdWx0cy5waXhlbF90ZXN0c19lbmFibGVkKSkgewogICAgICAgICAg
ICB0aGlzLmZsYWt5UGFzc1Rlc3RzLnB1c2godGVzdFJlc3VsdCk7CiAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICB9CgogICAgICAgIGlmICh0ZXN0UmVzdWx0LmlzUGFzcygpKSB7CiAgICAgICAg
ICAgIGlmICh0ZXN0UmVzdWx0LmlzVW5leHBlY3RlZFBhc3ModGhpcy5fcmVzdWx0cy5waXhlbF90
ZXN0c19lbmFibGVkKSkKICAgICAgICAgICAgICAgIHRoaXMudW5leHBlY3RlZFBhc3NUZXN0cy5w
dXNoKHRlc3RSZXN1bHQpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBp
ZiAodGVzdFJlc3VsdC5pc0NyYXNoKCkpIHsKICAgICAgICAgICAgdGhpcy5jcmFzaFRlc3RzLnB1
c2godGVzdFJlc3VsdCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlm
ICh0ZXN0UmVzdWx0LmlzVGltZW91dCgpKSB7CiAgICAgICAgICAgIHRoaXMudGltZW91dFRlc3Rz
LnB1c2godGVzdFJlc3VsdCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAKICAg
ICAgICB0aGlzLmZhaWxpbmdUZXN0cy5wdXNoKHRlc3RSZXN1bHQpOwogICAgfQogICAgCiAgICBf
Zm9yRWFjaFRlc3QodHJlZSwgcHJlZml4KQogICAgewogICAgICAgIGZvciAobGV0IGtleSBpbiB0
cmVlKSB7CiAgICAgICAgICAgIGxldCBuZXdQcmVmaXggPSBwcmVmaXggPyAocHJlZml4ICsgJy8n
ICsga2V5KSA6IGtleTsKICAgICAgICAgICAgaWYgKCdhY3R1YWwnIGluIHRyZWVba2V5XSkgewog
ICAgICAgICAgICAgICAgbGV0IHRlc3RPYmplY3QgPSBuZXcgVGVzdFJlc3VsdCh0cmVlW2tleV0s
IG5ld1ByZWZpeCk7CiAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzUmVzdWx0Rm9yVGVzdCh0
ZXN0T2JqZWN0KTsKICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICB0aGlzLl9mb3JF
YWNoVGVzdCh0cmVlW2tleV0sIG5ld1ByZWZpeCk7CiAgICAgICAgfQogICAgfQoKICAgIF9mb3JP
dGhlckNyYXNoZXModHJlZSkKICAgIHsKICAgICAgICBmb3IgKGxldCBrZXkgaW4gdHJlZSkgewog
ICAgICAgICAgICBsZXQgdGVzdE9iamVjdCA9IG5ldyBUZXN0UmVzdWx0KHRyZWVba2V5XSwga2V5
KTsKICAgICAgICAgICAgdGhpcy5jcmFzaE90aGVyLnB1c2godGVzdE9iamVjdCk7CiAgICAgICAg
fQogICAgfQogICAgCiAgICBzdGF0aWMgc29ydEJ5TmFtZSh0ZXN0cykKICAgIHsKICAgICAgICB0
ZXN0cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShi
Lm5hbWUpIH0pOwogICAgfQoKICAgIHN0YXRpYyBoYXNVbmV4cGVjdGVkUmVzdWx0KHRlc3RzKQog
ICAgewogICAgICAgIHJldHVybiB0ZXN0cy5zb21lKGZ1bmN0aW9uICh0ZXN0KSB7IHJldHVybiAh
dGVzdC5pc0V4cGVjdGVkOyB9KTsKICAgIH0KfTsKCmNsYXNzIFRlc3RSZXN1bHRzQ29udHJvbGxl
cgp7ICAgICAgICAKICAgIGNvbnN0cnVjdG9yKGNvbnRhaW5lckVsZW1lbnQsIHRlc3RSZXN1bHRz
KQogICAgewogICAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQ7
CiAgICAgICAgdGhpcy50ZXN0UmVzdWx0cyA9IHRlc3RSZXN1bHRzOwoKICAgICAgICB0aGlzLnNo
b3VsZFRvZ2dsZUltYWdlcyA9IHRydWU7CiAgICAgICAgdGhpcy5fdG9nZ2xpbmdJbWFnZUludGVy
dmFsID0gbnVsbDsKICAgICAgICAKICAgICAgICB0aGlzLl91cGRhdGVQYWdlVGl0bGUoKTsKCiAg
ICAgICAgdGhpcy5idWlsZFJlc3VsdHNUYWJsZXMoKTsKICAgICAgICB0aGlzLmhpZGVOb25BcHBs
aWNhYmxlVUkoKTsKICAgICAgICB0aGlzLnNldHVwU29ydGluZygpOwogICAgICAgIHRoaXMuc2V0
dXBPcHRpb25zKCk7CiAgICB9CiAgICAKICAgIGJ1aWxkUmVzdWx0c1RhYmxlcygpCiAgICB7CiAg
ICAgICAgaWYgKHRoaXMudGVzdFJlc3VsdHMud2FzSW50ZXJydXB0ZWQoKSkgewogICAgICAgICAg
ICBsZXQgaW50ZXJydXB0aW9uTWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsK
ICAgICAgICAgICAgaW50ZXJydXB0aW9uTWVzc2FnZS50ZXh0Q29udGVudCA9ICdUZXN0aW5nIGV4
aXRlZCBlYXJseSc7CiAgICAgICAgICAgIGludGVycnVwdGlvbk1lc3NhZ2UuY2xhc3NMaXN0LmFk
ZCgnc3RvcHBlZC1ydW5uaW5nLWVhcmx5LW1lc3NhZ2UnKTsKICAgICAgICAgICAgdGhpcy5jb250
YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGludGVycnVwdGlvbk1lc3NhZ2UpOwogICAgICAgIH0K
CiAgICAgICAgaWYgKHRoaXMudGVzdFJlc3VsdHMuY3Jhc2hUZXN0cy5sZW5ndGgpCiAgICAgICAg
ICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJ1aWxkT25lU2VjdGlv
bih0aGlzLnRlc3RSZXN1bHRzLmNyYXNoVGVzdHMsICdjcmFzaC10ZXN0cy10YWJsZScpKTsKCiAg
ICAgICAgaWYgKHRoaXMudGVzdFJlc3VsdHMuY3Jhc2hPdGhlci5sZW5ndGgpCiAgICAgICAgICAg
IHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJ1aWxkT25lU2VjdGlvbih0
aGlzLnRlc3RSZXN1bHRzLmNyYXNoT3RoZXIsICdvdGhlci1jcmFzaC10ZXN0cy10YWJsZScpKTsK
CiAgICAgICAgaWYgKHRoaXMudGVzdFJlc3VsdHMuZmFpbGluZ1Rlc3RzLmxlbmd0aCkKICAgICAg
ICAgICAgdGhpcy5jb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYnVpbGRPbmVTZWN0
aW9uKHRoaXMudGVzdFJlc3VsdHMuZmFpbGluZ1Rlc3RzLCAncmVzdWx0cy10YWJsZScpKTsKCiAg
ICAgICAgaWYgKHRoaXMudGVzdFJlc3VsdHMubWlzc2luZ1Jlc3VsdHMubGVuZ3RoKQogICAgICAg
ICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5idWlsZE9uZVNlY3Rp
b24odGhpcy50ZXN0UmVzdWx0cy5taXNzaW5nUmVzdWx0cywgJ21pc3NpbmctdGFibGUnKSk7Cgog
ICAgICAgIGlmICh0aGlzLnRlc3RSZXN1bHRzLnRpbWVvdXRUZXN0cy5sZW5ndGgpCiAgICAgICAg
ICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJ1aWxkT25lU2VjdGlv
bih0aGlzLnRlc3RSZXN1bHRzLnRpbWVvdXRUZXN0cywgJ3RpbWVvdXQtdGVzdHMtdGFibGUnKSk7
CgogICAgICAgIGlmICh0aGlzLnRlc3RSZXN1bHRzLnRlc3RzV2l0aFN0ZGVyci5sZW5ndGgpCiAg
ICAgICAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJ1aWxkT25l
U2VjdGlvbih0aGlzLnRlc3RSZXN1bHRzLnRlc3RzV2l0aFN0ZGVyciwgJ3N0ZGVyci10YWJsZScp
KTsKCiAgICAgICAgaWYgKHRoaXMudGVzdFJlc3VsdHMuZmxha3lQYXNzVGVzdHMubGVuZ3RoKQog
ICAgICAgICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5idWlsZE9u
ZVNlY3Rpb24odGhpcy50ZXN0UmVzdWx0cy5mbGFreVBhc3NUZXN0cywgJ2ZsYWt5LXRlc3RzLXRh
YmxlJykpOwoKICAgICAgICBpZiAodGhpcy50ZXN0UmVzdWx0cy51c2VzRXhwZWN0YXRpb25zRmls
ZSgpICYmIHRoaXMudGVzdFJlc3VsdHMudW5leHBlY3RlZFBhc3NUZXN0cy5sZW5ndGgpCiAgICAg
ICAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJ1aWxkT25lU2Vj
dGlvbih0aGlzLnRlc3RSZXN1bHRzLnVuZXhwZWN0ZWRQYXNzVGVzdHMsICdwYXNzZXMtdGFibGUn
KSk7CgogICAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJ1aWxk
TWlzY0xpbmtzU2VjdGlvbigpKTsKCiAgICAgICAgdGhpcy51cGRhdGVUZXN0bGlzdENvdW50cygp
OwogICAgfQoKICAgIHN0YXRpYyBzZWN0aW9uQnVpbGRlckNsYXNzRm9yVGFibGVJRCh0YWJsZUlE
KQogICAgewogICAgICAgIGNvbnN0IGlkVG9CdWlsZGVyQ2xhc3NNYXAgPSB7CiAgICAgICAgICAg
ICdjcmFzaC10ZXN0cy10YWJsZScgOiBDcmFzaGluZ1Rlc3RzU2VjdGlvbkJ1aWxkZXIsCiAgICAg
ICAgICAgICdvdGhlci1jcmFzaC10ZXN0cy10YWJsZScgOiBPdGhlckNyYXNoZXNTZWN0aW9uQnVp
bGRlciwKICAgICAgICAgICAgJ3Jlc3VsdHMtdGFibGUnIDogRmFpbGluZ1Rlc3RzU2VjdGlvbkJ1
aWxkZXIsCiAgICAgICAgICAgICdtaXNzaW5nLXRhYmxlJyA6IFRlc3RzV2l0aE1pc3NpbmdSZXN1
bHRzU2VjdGlvbkJ1aWxkZXIsCiAgICAgICAgICAgICd0aW1lb3V0LXRlc3RzLXRhYmxlJyA6IFRp
bWVkT3V0VGVzdHNTZWN0aW9uQnVpbGRlciwKICAgICAgICAgICAgJ3N0ZGVyci10YWJsZScgOiBU
ZXN0c1dpdGhTdGRFcnJTZWN0aW9uQnVpbGRlciwKICAgICAgICAgICAgJ2ZsYWt5LXRlc3RzLXRh
YmxlJyA6IEZsYWt5UGFzc1Rlc3RzU2VjdGlvbkJ1aWxkZXIsCiAgICAgICAgICAgICdwYXNzZXMt
dGFibGUnIDogVW5leHBlY3RlZFBhc3NUZXN0c1NlY3Rpb25CdWlsZGVyLAogICAgICAgIH07CiAg
ICAgICAgcmV0dXJuIGlkVG9CdWlsZGVyQ2xhc3NNYXBbdGFibGVJRF07CiAgICB9CiAgICAKICAg
IHNldHVwU29ydGluZygpCiAgICB7CiAgICAgICAgbGV0IHJlc3VsdHNUYWJsZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzLXRhYmxlJyk7CiAgICAgICAgaWYgKCFyZXN1bHRzVGFi
bGUpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAKICAgICAgICAvLyBGSVhNRTogTWFrZSBh
bGwgdGhlIHRhYmxlcyBzb3J0YWJsZS4gTWF5YmUgU2VjdGlvbkJ1aWxkZXIgc2hvdWxkIHB1dCBh
IFRhYmxlU29ydGVyIG9uIGVhY2ggdGFibGUuCiAgICAgICAgcmVzdWx0c1RhYmxlLmFkZEV2ZW50
TGlzdGVuZXIoJ2NsaWNrJywgVGFibGVTb3J0ZXIuaGFuZGxlQ2xpY2ssIGZhbHNlKTsKICAgICAg
ICBUYWJsZVNvcnRlci5zb3J0Q29sdW1uKDApOwogICAgfQogICAgCiAgICBoaWRlTm9uQXBwbGlj
YWJsZVVJKCkKICAgIHsKICAgICAgICAvLyBGSVhNRTogZG8gdGhpcyBhbGwgdGhyb3VnaCBib2R5
IGNsYXNzbmFtZXMuCiAgICAgICAgaWYgKCF0aGlzLnRlc3RSZXN1bHRzLmhhc1RleHRGYWlsdXJl
cykgewogICAgICAgICAgICBsZXQgdGV4dFJlc3VsdHNIZWFkZXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGV4dC1yZXN1bHRzLWhlYWRlcicpOwogICAgICAgICAgICBpZiAodGV4dFJlc3Vs
dHNIZWFkZXIpCiAgICAgICAgICAgICAgICB0ZXh0UmVzdWx0c0hlYWRlci50ZXh0Q29udGVudCA9
ICcnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCF0aGlzLnRlc3RSZXN1bHRzLmhhc0ltYWdlRmFp
bHVyZXMpIHsKICAgICAgICAgICAgbGV0IGltYWdlUmVzdWx0c0hlYWRlciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdpbWFnZS1yZXN1bHRzLWhlYWRlcicpOwogICAgICAgICAgICBpZiAoaW1h
Z2VSZXN1bHRzSGVhZGVyKQogICAgICAgICAgICAgICAgaW1hZ2VSZXN1bHRzSGVhZGVyLnRleHRD
b250ZW50ID0gJyc7CgogICAgICAgICAgICBVdGlscy5wYXJlbnRPZlR5cGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3RvZ2dsZS1pbWFnZXMnKSwgJ2xhYmVsJykuc3R5bGUuZGlzcGxheSA9ICdu
b25lJzsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHNldHVwT3B0aW9ucygpCiAgICB7CiAgICAg
ICAgLy8gRklYTUU6IGRvIHRoaXMgYWxsIHRocm91Z2ggYm9keSBjbGFzc25hbWVzLgogICAgICAg
IGlmICghdGhpcy50ZXN0UmVzdWx0cy51c2VzRXhwZWN0YXRpb25zRmlsZSgpKQogICAgICAgICAg
ICBVdGlscy5wYXJlbnRPZlR5cGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VuZXhwZWN0ZWQt
cmVzdWx0cycpLCAnbGFiZWwnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgfQoKICAgIGJ1
aWxkT25lU2VjdGlvbih0ZXN0cywgdGFibGVJRCkKICAgIHsKICAgICAgICBUZXN0UmVzdWx0cy5z
b3J0QnlOYW1lKHRlc3RzKTsKICAgICAgICAKICAgICAgICBsZXQgc2VjdGlvbkJ1aWxkZXJDbGFz
cyA9IFRlc3RSZXN1bHRzQ29udHJvbGxlci5zZWN0aW9uQnVpbGRlckNsYXNzRm9yVGFibGVJRCh0
YWJsZUlEKTsKICAgICAgICBsZXQgc2VjdGlvbkJ1aWxkZXIgPSBuZXcgc2VjdGlvbkJ1aWxkZXJD
bGFzcyh0ZXN0cywgdGFibGVJRCwgdGhpcyk7CiAgICAgICAgcmV0dXJuIHNlY3Rpb25CdWlsZGVy
LmJ1aWxkKCk7CiAgICB9CgogICAgYnVpbGRNaXNjTGlua3NTZWN0aW9uKCkKICAgIHsKICAgICAg
ICBsZXQgc2VjdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlY3Rpb24nKTsKICAgICAg
ICBsZXQgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDEnKTsKICAgICAgICBoZWFk
ZXIudGV4dENvbnRlbnQgPSAnQWRkaXRpb25hbCB0ZXN0IGRhdGEnOwogICAgICAgIHNlY3Rpb24u
YXBwZW5kQ2hpbGQoaGVhZGVyKTsKCiAgICAgICAgaWYgKHRoaXMudGVzdFJlc3VsdHMuaGFzSHR0
cFRlc3RzKSB7CiAgICAgICAgICAgIGxldCBodHRwZEFjY2Vzc0xvZ0xpbmsgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdwJyk7CiAgICAgICAgICAgIGh0dHBkQWNjZXNzTG9nTGluay5pbm5lckhU
TUwgPSAnPGEgaHJlZj0iYWNjZXNzX2xvZy50eHQiPmh0dHBkIGFjY2VzcyBsb2c8L2E+JzsKCiAg
ICAgICAgICAgIGxldCBodHRwZEVycm9yTG9nTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3AnKTsKICAgICAgICAgICAgaHR0cGRFcnJvckxvZ0xpbmsuaW5uZXJIVE1MID0gJzxhIGhyZWY9
ImVycm9yX2xvZy50eHQiPmh0dHBkIGVycm9yIGxvZzwvYT4nOwogICAgICAgICAgICAKICAgICAg
ICAgICAgc2VjdGlvbi5hcHBlbmRDaGlsZChodHRwZEFjY2Vzc0xvZ0xpbmspOwogICAgICAgICAg
ICBzZWN0aW9uLmFwcGVuZENoaWxkKGh0dHBkRXJyb3JMb2dMaW5rKTsKICAgICAgICB9CgogICAg
ICAgIGxldCBwZXJmVHJlZU1hcExpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CiAg
ICAgICAgcGVyZlRyZWVNYXBMaW5rLmlubmVySFRNTCA9ICc8YSBocmVmPSJ0ZXN0LWR1cmF0aW9u
LXRyZWVtYXAuaHRtbCI+VGVzdCBkdXJhdGlvbnM8L2E+JzsKICAgICAgICBzZWN0aW9uLmFwcGVu
ZENoaWxkKHBlcmZUcmVlTWFwTGluayk7CgogICAgICAgIHJldHVybiBzZWN0aW9uOwogICAgfQoK
ICAgIHVwZGF0ZVRlc3RsaXN0Q291bnRzKCkKICAgIHsKICAgICAgICAvLyBGSVhNRTogZG8gdGhp
cyB0aHJvdWdoIHRoZSBkYXRhIG1vZGVsLCBub3QgdGhyb3VnaCB0aGUgRE9NLgogICAgICAgIGxl
dCBvbmx5U2hvd1VuZXhwZWN0ZWRGYWlsdXJlcyA9IHRoaXMub25seVNob3dVbmV4cGVjdGVkRmFp
bHVyZXMoKTsKICAgICAgICBVdGlscy5mb3JFYWNoKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
Jy50ZXN0LWxpc3QtY291bnQnKSwgY291bnQgPT4gewogICAgICAgICAgICBsZXQgY29udGFpbmVy
ID0gVXRpbHMucGFyZW50T2ZUeXBlKGNvdW50LCAnc2VjdGlvbicpOwogICAgICAgICAgICBsZXQg
dGVzdENvbnRhaW5lcnM7CiAgICAgICAgICAgIGlmIChvbmx5U2hvd1VuZXhwZWN0ZWRGYWlsdXJl
cykKICAgICAgICAgICAgICAgIHRlc3RDb250YWluZXJzID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0
b3JBbGwoJ3Rib2R5Om5vdCguZXhwZWN0ZWQpJyk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgIHRlc3RDb250YWluZXJzID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ3Rib2R5
Jyk7CgogICAgICAgICAgICBjb3VudC50ZXh0Q29udGVudCA9IHRlc3RDb250YWluZXJzLmxlbmd0
aDsKICAgICAgICB9KQogICAgfQogICAgCiAgICBmbGFnQWxsKGhlYWRlckxpbmspCiAgICB7CiAg
ICAgICAgbGV0IHRlc3RzID0gdGhpcy52aXNpYmxlVGVzdHMoVXRpbHMucGFyZW50T2ZUeXBlKGhl
YWRlckxpbmssICdzZWN0aW9uJykpOwogICAgICAgIFV0aWxzLmZvckVhY2godGVzdHMsIHRlc3Rz
ID0+IHsKICAgICAgICAgICAgbGV0IHNob3VsZEZsYWcgPSB0cnVlOwogICAgICAgICAgICB0ZXN0
TmF2aWdhdG9yLmZsYWdUZXN0KHRlc3RzLCBzaG91bGRGbGFnKTsKICAgICAgICB9KQogICAgfQoK
ICAgIHVuZmxhZyhmbGFnKQogICAgewogICAgICAgIGNvbnN0IHNob3VsZEZsYWcgPSBmYWxzZTsK
ICAgICAgICB0ZXN0TmF2aWdhdG9yLmZsYWdUZXN0KFV0aWxzLnBhcmVudE9mVHlwZShmbGFnLCAn
dGJvZHknKSwgc2hvdWxkRmxhZyk7CiAgICB9CgogICAgdmlzaWJsZVRlc3RzKG9wdF9jb250YWlu
ZXIpCiAgICB7CiAgICAgICAgbGV0IGNvbnRhaW5lciA9IG9wdF9jb250YWluZXIgfHwgZG9jdW1l
bnQ7CiAgICAgICAgaWYgKHRoaXMub25seVNob3dVbmV4cGVjdGVkRmFpbHVyZXMoKSkKICAgICAg
ICAgICAgcmV0dXJuIGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCd0Ym9keTpub3QoLmV4cGVj
dGVkKScpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5xdWVyeVNl
bGVjdG9yQWxsKCd0Ym9keScpOwogICAgfQoKICAgIC8vIEZJWE1FOiB0aGlzIGlzIGNvbmZ1c2lu
Zy4gRmxpcCB0aGUgc2Vuc2UgYXJvdW5kLgogICAgb25seVNob3dVbmV4cGVjdGVkRmFpbHVyZXMo
KQogICAgewogICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndW5leHBlY3Rl
ZC1yZXN1bHRzJykuY2hlY2tlZDsKICAgIH0KCiAgICBzdGF0aWMgX3Rlc3RMaXN0SGVhZGVyKHRp
dGxlKQogICAgewogICAgICAgIGxldCBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdo
MScpOwogICAgICAgIGhlYWRlci5pbm5lckhUTUwgPSB0aXRsZSArICcgKDxzcGFuIGNsYXNzPXRl
c3QtbGlzdC1jb3VudD48L3NwYW4+KTogPGEgaHJlZj0iIyIgY2xhc3M9ZmxhZy1hbGwgb25jbGlj
az0iY29udHJvbGxlci5mbGFnQWxsKHRoaXMpIj5mbGFnIGFsbDwvYT4nOwogICAgICAgIHJldHVy
biBoZWFkZXI7CiAgICB9CgogICAgdGVzdFRvVVJMKHRlc3RSZXN1bHQsIGxheW91dFRlc3RzUGF0
aCkKICAgIHsKICAgICAgICBjb25zdCBtYXBwaW5ncyA9IHsKICAgICAgICAgICAgImh0dHAvdGVz
dHMvc3NsLyI6ICJodHRwczovLzEyNy4wLjAuMTo4NDQzL3NzbC8iLAogICAgICAgICAgICAiaHR0
cC90ZXN0cy8iOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwLyIsCiAgICAgICAgICAgICJodHRwL3dw
dC8iOiAiaHR0cDovL2xvY2FsaG9zdDo4ODAwL1dlYktpdC8iLAogICAgICAgICAgICAiaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8iOiAiaHR0cDovL2xvY2FsaG9zdDo4ODAwLyIKICAg
ICAgICB9OwoKICAgICAgICBmb3IgKGxldCBrZXkgaW4gbWFwcGluZ3MpIHsKICAgICAgICAgICAg
aWYgKHRlc3RSZXN1bHQubmFtZS5zdGFydHNXaXRoKGtleSkpCiAgICAgICAgICAgICAgICByZXR1
cm4gbWFwcGluZ3Nba2V5XSArIHRlc3RSZXN1bHQubmFtZS5zdWJzdHJpbmcoa2V5Lmxlbmd0aCk7
CgogICAgICAgIH0KICAgICAgICByZXR1cm4gImZpbGU6Ly8iICsgbGF5b3V0VGVzdHNQYXRoICsg
Ii8iICsgdGVzdFJlc3VsdC5uYW1lOwogICAgfQoKICAgIGxheW91dFRlc3RVUkwodGVzdFJlc3Vs
dCkKICAgIHsKICAgICAgICBpZiAodGhpcy5zaG91bGRVc2VHaXRodWJMaW5rcygpKQogICAgICAg
ICAgICByZXR1cm4gdGhpcy5sYXlvdXRUZXN0c0Jhc2VQYXRoKCkgKyB0ZXN0UmVzdWx0Lm5hbWU7
CgogICAgICAgIHJldHVybiB0aGlzLnRlc3RUb1VSTCh0ZXN0UmVzdWx0LCB0aGlzLmxheW91dFRl
c3RzQmFzZVBhdGgoKSk7CiAgICB9CgogICAgbGF5b3V0VGVzdHNCYXNlUGF0aCgpCiAgICB7CiAg
ICAgICAgbGV0IGJhc2VQYXRoOwogICAgICAgIGlmICh0aGlzLnNob3VsZFVzZUdpdGh1Ykxpbmtz
KCkpCiAgICAgICAgICAgIGJhc2VQYXRoID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9XZWJLaXQvV2Vi
S2l0L2Jsb2IvbWFpbi9MYXlvdXRUZXN0cy8nOwogICAgICAgIGVsc2UKICAgICAgICAgICAgYmFz
ZVBhdGggPSB0aGlzLnRlc3RSZXN1bHRzLmxheW91dFRlc3RzRGlyKCkgKyAnLyc7CgogICAgICAg
IHJldHVybiBiYXNlUGF0aDsKICAgIH0KCiAgICBjb252ZXJ0VG9MYXlvdXRUZXN0QmFzZVJlbGF0
aXZlVVJMKGZ1bGxVUkwpCiAgICB7CiAgICAgICAgaWYgKGZ1bGxVUkwuc3RhcnRzV2l0aCgnZmls
ZTovLycpKSB7CiAgICAgICAgICAgIGxldCB1cmxQcmVmaXggPSAnZmlsZTovLycgKyB0aGlzLmxh
eW91dFRlc3RzQmFzZVBhdGgoKTsKICAgICAgICAgICAgaWYgKGZ1bGxVUkwuc3RhcnRzV2l0aCh1
cmxQcmVmaXgpKQogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bGxVUkwuc3Vic3RyaW5nKHVybFBy
ZWZpeC5sZW5ndGgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gZnVsbFVSTDsK
ICAgIH0KCiAgICBzaG91bGRVc2VHaXRodWJMaW5rcygpCiAgICB7CiAgICAgICAgcmV0dXJuICF0
aGlzLnRlc3RSZXN1bHRzLmxheW91dFRlc3RzRGlyKCkgfHwgIWxvY2F0aW9uLnRvU3RyaW5nKCku
aW5kZXhPZignZmlsZTovLycpID09IDA7CiAgICB9CgogICAgY2hlY2tTZXJ2ZXJJc1J1bm5pbmco
ZXZlbnQpCiAgICB7CiAgICAgICAgaWYgKHRoaXMuc2hvdWxkVXNlR2l0aHViTGlua3MoKSkKICAg
ICAgICAgICAgcmV0dXJuOwoKICAgICAgICBsZXQgdXJsID0gZXZlbnQudGFyZ2V0LmhyZWY7CiAg
ICAgICAgaWYgKHVybC5zdGFydHNXaXRoKCJmaWxlOi8vIikpCiAgICAgICAgICAgIHJldHVybjsK
CiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICBmZXRjaCh1cmwsIHsgbW9k
ZTogIm5vLWNvcnMiIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24g
PSB1cmw7CiAgICAgICAgfSwgKCkgPT4gewogICAgICAgICAgICBhbGVydCgiSFRUUCBzZXJ2ZXIg
ZG9lcyBub3Qgc2VlbSB0byBiZSBydW5uaW5nLCBwbGVhc2UgdXNlIHRoZSBydW4td2Via2l0LWh0
dHBkIHNjcmlwdCIpOwogICAgICAgIH0pOwogICAgfQoKICAgIHRlc3RMaW5rKHRlc3RSZXN1bHQp
CiAgICB7CiAgICAgICAgcmV0dXJuICc8YSBjbGFzcz10ZXN0LWxpbmsgb25jbGljaz0iY29udHJv
bGxlci5jaGVja1NlcnZlcklzUnVubmluZyhldmVudCkiIGhyZWY9IicgKyB0aGlzLmxheW91dFRl
c3RVUkwodGVzdFJlc3VsdCkgKyAnIj4nICsgdGVzdFJlc3VsdC5uYW1lICsgJzwvYT48c3BhbiBj
bGFzcz1mbGFnIG9uY2xpY2s9ImNvbnRyb2xsZXIudW5mbGFnKHRoaXMpIj4gXHUyNjkxPC9zcGFu
Pic7CiAgICB9CiAgICAKICAgIGV4cGFuZEJ1dHRvblNwYW4oKQogICAgewogICAgICAgIHJldHVy
biAnPHNwYW4gY2xhc3M9ZXhwYW5kLWJ1dHRvbiBvbmNsaWNrPSJjb250cm9sbGVyLnRvZ2dsZUV4
cGVjdGF0aW9ucyh0aGlzKSI+PHNwYW4gY2xhc3M9ZXhwYW5kLWJ1dHRvbi10ZXh0Pis8L3NwYW4+
PC9zcGFuPic7CiAgICB9CiAgICAKICAgIHN0YXRpYyByZXN1bHRMaW5rKHRlc3RQcmVmaXgsIHN1
ZmZpeCwgY29udGVudHMpCiAgICB7CiAgICAgICAgcmV0dXJuICc8YSBjbGFzcz1yZXN1bHQtbGlu
ayBocmVmPSInICsgdGVzdFByZWZpeCArIHN1ZmZpeCArICciIGRhdGEtcHJlZml4PSInICsgdGVz
dFByZWZpeCArICciPicgKyBjb250ZW50cyArICc8L2E+ICc7CiAgICB9CgogICAgdGV4dFJlc3Vs
dExpbmtzKHByZWZpeCkKICAgIHsKICAgICAgICBsZXQgaHRtbCA9IFRlc3RSZXN1bHRzQ29udHJv
bGxlci5yZXN1bHRMaW5rKHByZWZpeCwgJy1leHBlY3RlZC50eHQnLCAnZXhwZWN0ZWQnKSArCiAg
ICAgICAgICAgIFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHByZWZpeCwgJy1hY3R1
YWwudHh0JywgJ2FjdHVhbCcpICsKICAgICAgICAgICAgVGVzdFJlc3VsdHNDb250cm9sbGVyLnJl
c3VsdExpbmsocHJlZml4LCAnLWRpZmYudHh0JywgJ2RpZmYnKTsKCiAgICAgICAgaWYgKHRoaXMu
dGVzdFJlc3VsdHMuaGFzUHJldHR5UGF0Y2goKSkKICAgICAgICAgICAgaHRtbCArPSBUZXN0UmVz
dWx0c0NvbnRyb2xsZXIucmVzdWx0TGluayhwcmVmaXgsICctcHJldHR5LWRpZmYuaHRtbCcsICdw
cmV0dHkgZGlmZicpOwoKICAgICAgICBpZiAodGhpcy50ZXN0UmVzdWx0cy5oYXNXRGlmZigpKQog
ICAgICAgICAgICBodG1sICs9IFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHByZWZp
eCwgJy13ZGlmZi5odG1sJywgJ3dkaWZmJyk7CgogICAgICAgIHJldHVybiBodG1sOwogICAgfQoK
ICAgIGZsYWtpbmVzc0Rhc2hib2FyZFVSTEZvclRlc3RzKHRlc3RPYmplY3RzKQogICAgewogICAg
ICAgIC8vIEZJWE1FOiBqdXN0IG1hcCBhbmQgam9pbiBoZXJlLgogICAgICAgIGxldCB0ZXN0TGlz
dCA9ICcnOwogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVzdE9iamVjdHMubGVuZ3RoOyAr
K2kpIHsKICAgICAgICAgICAgdGVzdExpc3QgKz0gdGVzdE9iamVjdHNbaV0ubmFtZTsKCiAgICAg
ICAgICAgIGlmIChpICE9IHRlc3RPYmplY3RzLmxlbmd0aCAtIDEpCiAgICAgICAgICAgICAgICB0
ZXN0TGlzdCArPSAnLCc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJ2h0dHBzOi8vcmVzdWx0
cy53ZWJraXQub3JnLz9zdWl0ZT1sYXlvdXQtdGVzdHMmdGVzdD0nICsgZW5jb2RlVVJJQ29tcG9u
ZW50KHRlc3RMaXN0KTsKICAgIH0KCiAgICBfdXBkYXRlUGFnZVRpdGxlKCkKICAgIHsKICAgICAg
ICBsZXQgZGF0ZVN0cmluZyA9IHRoaXMudGVzdFJlc3VsdHMuZGF0ZSgpOwogICAgICAgIGxldCB0
aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RpdGxlJyk7CiAgICAgICAgdGl0bGUudGV4
dENvbnRlbnQgPSAnTGF5b3V0IFRlc3QgUmVzdWx0cyBmcm9tICcgKyBkYXRlU3RyaW5nOwogICAg
ICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGl0bGUpOwogICAgfQogICAgCiAgICAvLyBP
cHRpb25zIGhhbmRsaW5nLiBGSVhNRTogbW92ZSB0byBhIHNlcGFyYXRlIGNsYXNzPwogICAgdXBk
YXRlQWxsT3B0aW9ucygpCiAgICB7CiAgICAgICAgVXRpbHMuZm9yRWFjaChkb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCcjb3B0aW9ucy1tZW51IGlucHV0JyksIGlucHV0ID0+IHsgaW5wdXQub25j
aGFuZ2UoKSB9KTsKICAgIH0KCiAgICB0b2dnbGVPcHRpb25zTWVudSgpCiAgICB7CiAgICAgICAg
bGV0IG1lbnUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3B0aW9ucy1tZW51Jyk7CiAgICAg
ICAgbWVudS5jbGFzc05hbWUgPSAobWVudS5jbGFzc05hbWUgPT0gJ2hpZGRlbi1tZW51JykgPyAn
JyA6ICdoaWRkZW4tbWVudSc7CiAgICB9CgogICAgaGFuZGxlVG9nZ2xlVXNlTmV3bGluZXMoKQog
ICAgewogICAgICAgIE9wdGlvbldyaXRlci5zYXZlKCk7CiAgICAgICAgdGVzdE5hdmlnYXRvci51
cGRhdGVGbGFnZ2VkVGVzdHMoKTsKICAgIH0KCiAgICBoYW5kbGVVbmV4cGVjdGVkUmVzdWx0c0No
YW5nZSgpCiAgICB7CiAgICAgICAgT3B0aW9uV3JpdGVyLnNhdmUoKTsKICAgICAgICB0aGlzLl91
cGRhdGVFeHBlY3RlZEZhaWx1cmVzKCk7CiAgICB9CgogICAgZXhwYW5kQWxsRXhwZWN0YXRpb25z
KCkKICAgIHsKICAgICAgICBsZXQgZXhwYW5kTGlua3MgPSB0aGlzLl92aXNpYmxlRXhwYW5kTGlu
a3MoKTsKICAgICAgICBmb3IgKGxldCBsaW5rIG9mIGV4cGFuZExpbmtzKQogICAgICAgICAgICBV
dGlscy5hc3luYyhsaW5rID0+IHsgY29udHJvbGxlci5leHBhbmRFeHBlY3RhdGlvbnMobGluaykg
fSwgWyBsaW5rIF0pOwogICAgfQoKICAgIGNvbGxhcHNlQWxsRXhwZWN0YXRpb25zKCkKICAgIHsK
ICAgICAgICBsZXQgZXhwYW5kTGlua3MgPSB0aGlzLl92aXNpYmxlRXhwYW5kTGlua3MoKTsKICAg
ICAgICBmb3IgKGxldCBsaW5rIG9mIGV4cGFuZExpbmtzKQogICAgICAgICAgICBVdGlscy5hc3lu
YyhsaW5rID0+IHsgY29udHJvbGxlci5jb2xsYXBzZUV4cGVjdGF0aW9ucyhsaW5rKSB9LCBbIGxp
bmsgXSk7CiAgICB9CgogICAgZXhwYW5kRXhwZWN0YXRpb25zKGV4cGFuZExpbmspCiAgICB7CiAg
ICAgICAgbGV0IHJvdyA9IFV0aWxzLnBhcmVudE9mVHlwZShleHBhbmRMaW5rLCAndHInKTsKICAg
ICAgICBsZXQgcGFyZW50VGJvZHkgPSByb3cucGFyZW50Tm9kZTsKICAgICAgICBsZXQgZXhpc3Rp
bmdSZXN1bHRzUm93ID0gcGFyZW50VGJvZHkucXVlcnlTZWxlY3RvcignLnJlc3VsdHMtcm93Jyk7
CiAgICAKICAgICAgICBjb25zdCBlbkRhc2ggPSAnXHUyMDEzJzsKICAgICAgICBleHBhbmRMaW5r
LnRleHRDb250ZW50ID0gZW5EYXNoOwogICAgICAgIGlmIChleGlzdGluZ1Jlc3VsdHNSb3cpIHsK
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXhwYW5kZWRTdGF0ZShleGlzdGluZ1Jlc3VsdHNSb3cs
IHRydWUpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBsZXQgdGVzdE5h
bWUgPSByb3cuZ2V0QXR0cmlidXRlKCdkYXRhLXRlc3QtbmFtZScpOwogICAgICAgIGxldCB0ZXN0
UmVzdWx0ID0gdGhpcy50ZXN0UmVzdWx0cy50ZXN0V2l0aE5hbWUodGVzdE5hbWUpOwoKICAgICAg
ICBsZXQgbmV3Um93ID0gVGVzdFJlc3VsdHNDb250cm9sbGVyLl9idWlsZEV4cGFuZGVkUm93Rm9y
VGVzdCh0ZXN0UmVzdWx0LCByb3cpOwogICAgICAgIHBhcmVudFRib2R5LmFwcGVuZENoaWxkKG5l
d1Jvdyk7CgogICAgICAgIHRoaXMuX3VwZGF0ZUV4cGFuZGVkU3RhdGUobmV3Um93LCB0cnVlKTsK
CiAgICAgICAgdGhpcy5fdXBkYXRlSW1hZ2VUb2dnbGluZ1RpbWVyKCk7CiAgICB9CgogICAgY29s
bGFwc2VFeHBlY3RhdGlvbnMoZXhwYW5kTGluaykKICAgIHsKICAgICAgICBleHBhbmRMaW5rLnRl
eHRDb250ZW50ID0gJysnOwogICAgICAgIGxldCBleGlzdGluZ1Jlc3VsdHNSb3cgPSBVdGlscy5w
YXJlbnRPZlR5cGUoZXhwYW5kTGluaywgJ3Rib2R5JykucXVlcnlTZWxlY3RvcignLnJlc3VsdHMt
cm93Jyk7CiAgICAgICAgaWYgKGV4aXN0aW5nUmVzdWx0c1JvdykKICAgICAgICAgICAgdGhpcy5f
dXBkYXRlRXhwYW5kZWRTdGF0ZShleGlzdGluZ1Jlc3VsdHNSb3csIGZhbHNlKTsKICAgIH0KCiAg
ICB0b2dnbGVFeHBlY3RhdGlvbnMoZWxlbWVudCkKICAgIHsKICAgICAgICBsZXQgZXhwYW5kTGlu
ayA9IGVsZW1lbnQ7CiAgICAgICAgaWYgKGV4cGFuZExpbmsuY2xhc3NOYW1lICE9ICdleHBhbmQt
YnV0dG9uLXRleHQnKQogICAgICAgICAgICBleHBhbmRMaW5rID0gZXhwYW5kTGluay5xdWVyeVNl
bGVjdG9yKCcuZXhwYW5kLWJ1dHRvbi10ZXh0Jyk7CgogICAgICAgIGlmIChleHBhbmRMaW5rLnRl
eHRDb250ZW50ID09ICcrJykKICAgICAgICAgICAgdGhpcy5leHBhbmRFeHBlY3RhdGlvbnMoZXhw
YW5kTGluayk7CiAgICAgICAgZWxzZQogICAgICAgICAgICB0aGlzLmNvbGxhcHNlRXhwZWN0YXRp
b25zKGV4cGFuZExpbmspOwogICAgfQoKICAgIF91cGRhdGVFeHBhbmRlZFN0YXRlKHJvdywgaXNF
eHBhbmRlZCkKICAgIHsKICAgICAgICByb3cuc2V0QXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJywg
aXNFeHBhbmRlZCk7CiAgICAgICAgdGhpcy5fdXBkYXRlSW1hZ2VUb2dnbGluZ1RpbWVyKCk7CiAg
ICB9CgogICAgaGFuZGxlVG9nZ2xlSW1hZ2VzQ2hhbmdlKCkKICAgIHsKICAgICAgICBPcHRpb25X
cml0ZXIuc2F2ZSgpOwogICAgICAgIHRoaXMuX3VwZGF0ZVRvZ2dsaW5nSW1hZ2VzKCk7CiAgICB9
CgogICAgX3Zpc2libGVFeHBhbmRMaW5rcygpCiAgICB7CiAgICAgICAgaWYgKHRoaXMub25seVNo
b3dVbmV4cGVjdGVkRmFpbHVyZXMoKSkKICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoJ3Rib2R5Om5vdCguZXhwZWN0ZWQpIC5leHBhbmQtYnV0dG9uLXRleHQnKTsK
ICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCcuZXhwYW5kLWJ1dHRvbi10ZXh0Jyk7CiAgICB9CgogICAgc3RhdGljIF90b2dnbGluZ0ltYWdl
KHByZWZpeCkKICAgIHsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9cmVzdWx0LWNvbnRhaW5l
cj48ZGl2IGNsYXNzPSJsYWJlbCBpbWFnZVRleHQiPjwvZGl2PjxpbWcgY2xhc3M9YW5pbWF0ZWRJ
bWFnZSBkYXRhLXByZWZpeD0iJyArIHByZWZpeCArICciPjwvaW1nPjwvZGl2Pic7CiAgICB9Cgog
ICAgX3VwZGF0ZVRvZ2dsaW5nSW1hZ2VzKCkKICAgIHsKICAgICAgICB0aGlzLnNob3VsZFRvZ2ds
ZUltYWdlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2dnbGUtaW1hZ2VzJykuY2hlY2tl
ZDsKCiAgICAgICAgLy8gRklYTUU6IHRoaXMgaXMgYWxsIHByZXR0eSBjb25mdXNpbmcuIFNpbXBs
aWZ5LgogICAgICAgIGlmICh0aGlzLnNob3VsZFRvZ2dsZUltYWdlcykgewogICAgICAgICAgICBV
dGlscy5mb3JFYWNoKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlOm5vdCgjbWlzc2lu
Zy10YWJsZSkgdGJvZHk6bm90KFttaXNtYXRjaHJlZnRlc3RdKSBhW2hyZWYkPSIucG5nIl0nKSwg
VGVzdFJlc3VsdHNDb250cm9sbGVyLl9jb252ZXJ0VG9Ub2dnbGluZ0hhbmRsZXIoZnVuY3Rpb24o
cHJlZml4KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFJlc3VsdHNDb250cm9sbGVyLnJl
c3VsdExpbmsocHJlZml4LCAnLWRpZmZzLmh0bWwnLCAnaW1hZ2VzJyk7CiAgICAgICAgICAgIH0p
KTsKICAgICAgICAgICAgVXRpbHMuZm9yRWFjaChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0
YWJsZTpub3QoI21pc3NpbmctdGFibGUpIHRib2R5Om5vdChbbWlzbWF0Y2hyZWZ0ZXN0XSkgaW1n
W3NyYyQ9Ii5wbmciXScpLCBUZXN0UmVzdWx0c0NvbnRyb2xsZXIuX2NvbnZlcnRUb1RvZ2dsaW5n
SGFuZGxlcihUZXN0UmVzdWx0c0NvbnRyb2xsZXIuX3RvZ2dsaW5nSW1hZ2UpKTsKICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICBVdGlscy5mb3JFYWNoKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoJ2FbaHJlZiQ9Ii1kaWZmcy5odG1sIl0nKSwgZWxlbWVudCA9PiB7CiAgICAgICAgICAgICAg
ICBUZXN0UmVzdWx0c0NvbnRyb2xsZXIuX2NvbnZlcnRUb05vblRvZ2dsaW5nSGFuZGxlcihlbGVt
ZW50KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIFV0aWxzLmZvckVhY2goZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgnLmFuaW1hdGVkSW1hZ2UnKSwgVGVzdFJlc3VsdHNDb250cm9sbGVy
Ll9jb252ZXJ0VG9Ob25Ub2dnbGluZ0hhbmRsZXIoZnVuY3Rpb24gKGFic29sdXRlUHJlZml4LCBz
dWZmaXgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBUZXN0UmVzdWx0c0NvbnRyb2xsZXIuX3Jl
c3VsdElmcmFtZShhYnNvbHV0ZVByZWZpeCArIHN1ZmZpeCk7CiAgICAgICAgICAgIH0pKTsKICAg
ICAgICB9CgogICAgICAgIHRoaXMuX3VwZGF0ZUltYWdlVG9nZ2xpbmdUaW1lcigpOwogICAgfQoK
ICAgIF91cGRhdGVFeHBlY3RlZEZhaWx1cmVzKCkKICAgIHsKICAgICAgICAvLyBHcm9zcyB0byBk
byB0aGlzIGJ5IHNldHRpbmcgc3R5bGVzaGVldCB0ZXh0LiBVc2UgYSBib2R5IGNsYXNzIQogICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1bmV4cGVjdGVkLXN0eWxlJykudGV4dENvbnRl
bnQgPSB0aGlzLm9ubHlTaG93VW5leHBlY3RlZEZhaWx1cmVzKCkgPyAnLmV4cGVjdGVkIHsgZGlz
cGxheTogbm9uZTsgfScgOiAnJzsKCiAgICAgICAgdGhpcy51cGRhdGVUZXN0bGlzdENvdW50cygp
OwogICAgICAgIHRlc3ROYXZpZ2F0b3Iub25seVNob3dVbmV4cGVjdGVkRmFpbHVyZXNDaGFuZ2Vk
KCk7CiAgICB9CgogICAgc3RhdGljIF9idWlsZEV4cGFuZGVkUm93Rm9yVGVzdCh0ZXN0UmVzdWx0
LCByb3cpCiAgICB7CiAgICAgICAgbGV0IG5ld1JvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3RyJyk7CiAgICAgICAgbmV3Um93LmNsYXNzTmFtZSA9ICdyZXN1bHRzLXJvdyc7CiAgICAgICAg
bGV0IG5ld0NlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwogICAgICAgIG5ld0Nl
bGwuY29sU3BhbiA9IHJvdy5xdWVyeVNlbGVjdG9yQWxsKCd0ZCcpLmxlbmd0aDsKCiAgICAgICAg
Ly8gRklYTUU6IG1pZ3JhdGUgbW9yZSBvZiBjb2RlIHRvIHVzaW5nIHRlc3RSZXN1bHQgZm9yIGJ1
aWxkaW5nIHRoZSBleHBhbmRlZCBjb250ZW50LgogICAgICAgIGxldCByZXN1bHRMaW5rcyA9IHJv
dy5xdWVyeVNlbGVjdG9yQWxsKCcucmVzdWx0LWxpbmsnKTsKICAgICAgICBsZXQgaGFzVG9nZ2xp
bmdJbWFnZXMgPSBmYWxzZTsKICAgICAgICBmb3IgKGxldCBsaW5rIG9mIHJlc3VsdExpbmtzKSB7
CiAgICAgICAgICAgIGxldCByZXN1bHQ7CiAgICAgICAgICAgIGlmIChsaW5rLnRleHRDb250ZW50
ID09ICdpbWFnZXMnKSB7CiAgICAgICAgICAgICAgICBoYXNUb2dnbGluZ0ltYWdlcyA9IHRydWU7
CiAgICAgICAgICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0c0NvbnRyb2xsZXIuX3RvZ2dsaW5n
SW1hZ2UobGluay5nZXRBdHRyaWJ1dGUoJ2RhdGEtcHJlZml4JykpOwogICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHRzQ29udHJvbGxlci5fcmVzdWx0
SWZyYW1lKGxpbmsuaHJlZik7CgogICAgICAgICAgICBVdGlscy5hcHBlbmRIVE1MKG5ld0NlbGws
IHJlc3VsdCk7ICAgIAogICAgICAgIH0KCiAgICAgICAgaWYgKHRlc3RSZXN1bHQuaGFzTGVhaygp
KQogICAgICAgICAgICBuZXdDZWxsLmFwcGVuZENoaWxkKFRlc3RSZXN1bHRzQ29udHJvbGxlci5f
bWFrZUxlYWtzQ2VsbCh0ZXN0UmVzdWx0KSk7CgogICAgICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChu
ZXdDZWxsKTsKCiAgICAgICAgcmV0dXJuIG5ld1JvdzsKICAgIH0KICAgIAogICAgc3RhdGljIF9t
YWtlTGVha3NDZWxsKHRlc3RSZXN1bHQpCiAgICB7CiAgICAgICAgbGV0IGNvbnRhaW5lciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUg
PSAncmVzdWx0LWNvbnRhaW5lciBsZWFrcyc7CiAgICAgICAgCiAgICAgICAgbGV0IGxhYmVsID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgbGFiZWwuY2xhc3NOYW1lID0g
J2xhYmVsJzsKICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9ICJMZWFrcyI7CiAgICAgICAgY29u
dGFpbmVyLmFwcGVuZENoaWxkKGxhYmVsKTsKCiAgICAgICAgbGV0IGxlYWtzVGFibGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpOwogICAgICAgIAogICAgICAgIGZvciAobGV0IGxl
YWsgb2YgdGVzdFJlc3VsdC5pbmZvLmxlYWtzKSB7CiAgICAgICAgICAgIGxldCBsZWFrUm93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCiAgICAgICAgICAgIGZvciAobGV0IGxlYWtl
ZE9iamVjdFR5cGUgaW4gbGVhaykgewogICAgICAgICAgICAgICAgbGV0IHRoID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgndGgnKTsKICAgICAgICAgICAgICAgIHRoLnRleHRDb250ZW50ID0gbGVh
a2VkT2JqZWN0VHlwZTsKICAgICAgICAgICAgICAgIGxldCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3RkJyk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGxldCB1cmwgPSBs
ZWFrW2xlYWtlZE9iamVjdFR5cGVdOyAvLyBGSVhNRTogd2hlbiB3ZSB0cmFjayBsZWFrcyBvdGhl
ciB0aGFuIGRvY3VtZW50cywgdGhpcyBtaWdodCBub3QgYmUgYSBVUkwuCiAgICAgICAgICAgICAg
ICB0ZC50ZXh0Q29udGVudCA9IGNvbnRyb2xsZXIuY29udmVydFRvTGF5b3V0VGVzdEJhc2VSZWxh
dGl2ZVVSTCh1cmwpCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGxlYWtSb3cuYXBw
ZW5kQ2hpbGQodGgpOwogICAgICAgICAgICAgICAgbGVha1Jvdy5hcHBlbmRDaGlsZCh0ZCk7CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGxlYWtzVGFibGUuYXBwZW5kQ2hp
bGQobGVha1Jvdyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGNvbnRhaW5lci5hcHBlbmRD
aGlsZChsZWFrc1RhYmxlKTsKICAgICAgICByZXR1cm4gY29udGFpbmVyOwogICAgfQoKICAgIHN0
YXRpYyBfcmVzdWx0SWZyYW1lKHNyYykKICAgIHsKICAgICAgICAvLyBGSVhNRTogdXNlIGF1ZGlv
IHRhZ3MgZm9yIEFVRElPIHRlc3RzPwogICAgICAgIGxldCBsYXlvdXRUZXN0c0luZGV4ID0gc3Jj
LmluZGV4T2YoJ0xheW91dFRlc3RzJyk7CiAgICAgICAgbGV0IG5hbWU7CiAgICAgICAgaWYgKGxh
eW91dFRlc3RzSW5kZXggIT0gLTEpIHsKICAgICAgICAgICAgbGV0IGhhc0dpdGh1YiA9IHNyYy5p
bmRleE9mKCdnaXRodWIuY29tL1dlYktpdC9XZWJLaXQvJykgIT0gLTE7CiAgICAgICAgICAgIGxl
dCBwcmVmaXggPSBoYXNHaXRodWIgPyAnZ2l0aHViLmNvbS9XZWJLaXQvV2ViS2l0Ly4uLi8nIDog
Jyc7CiAgICAgICAgICAgIG5hbWUgPSBwcmVmaXggKyBzcmMuc3Vic3RyaW5nKGxheW91dFRlc3Rz
SW5kZXggKyAnTGF5b3V0VGVzdHMvJy5sZW5ndGgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgIGxldCBsYXN0RGFzaEluZGV4ID0gc3JjLmxhc3RJbmRleE9mKCctcHJldHR5Jyk7CiAgICAg
ICAgICAgIGlmIChsYXN0RGFzaEluZGV4ID09IC0xKQogICAgICAgICAgICAgICAgbGFzdERhc2hJ
bmRleCA9IHNyYy5sYXN0SW5kZXhPZignLScpOwogICAgICAgICAgICBuYW1lID0gc3JjLnN1YnN0
cmluZyhsYXN0RGFzaEluZGV4ICsgMSk7CiAgICAgICAgfQoKICAgICAgICBsZXQgdGFnTmFtZSA9
IChzcmMubGFzdEluZGV4T2YoJy5wbmcnKSA9PSAtMSkgPyAnaWZyYW1lJyA6ICdpbWcnOwoKICAg
ICAgICBpZiAodGFnTmFtZSAhPSAnaW1nJykKICAgICAgICAgICAgc3JjICs9ICc/Zm9ybWF0PXR4
dCc7CiAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPXJlc3VsdC1jb250YWluZXI+PGRpdiBjbGFz
cz1sYWJlbD4nICsgbmFtZSArICc8L2Rpdj48JyArIHRhZ05hbWUgKyAnIHNyYz0iJyArIHNyYyAr
ICciPjwvJyArIHRhZ05hbWUgKyAnPjwvZGl2Pic7CiAgICB9CgoKICAgIHN0YXRpYyBfdG9nZ2xl
SW1hZ2VzKCkKICAgIHsKICAgICAgICBsZXQgaW1hZ2VzID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgnLmFuaW1hdGVkSW1hZ2UnKTsKICAgICAgICBsZXQgaW1hZ2VUZXh0cyA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbWFnZVRleHQnKTsKICAgICAgICBmb3IgKGxldCBpID0gMCwg
bGVuID0gaW1hZ2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgIGxldCBpbWFn
ZSA9IGltYWdlc1tpXTsKICAgICAgICAgICAgbGV0IHRleHQgPSBpbWFnZVRleHRzW2ldOwogICAg
ICAgICAgICBpZiAodGV4dC50ZXh0Q29udGVudCA9PSAnRXhwZWN0ZWQgSW1hZ2UnKSB7CiAgICAg
ICAgICAgICAgICB0ZXh0LnRleHRDb250ZW50ID0gJ0FjdHVhbCBJbWFnZSc7CiAgICAgICAgICAg
ICAgICBpbWFnZS5zcmMgPSBpbWFnZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcHJlZml4JykgKyAnLWFj
dHVhbC5wbmcnOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGV4dC50ZXh0
Q29udGVudCA9ICdFeHBlY3RlZCBJbWFnZSc7CiAgICAgICAgICAgICAgICBpbWFnZS5zcmMgPSBp
bWFnZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcHJlZml4JykgKyAnLWV4cGVjdGVkLnBuZyc7CiAgICAg
ICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgX3VwZGF0ZUltYWdlVG9nZ2xpbmdUaW1lcigp
CiAgICB7CiAgICAgICAgbGV0IGhhc1Zpc2libGVBbmltYXRlZEltYWdlID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignLnJlc3VsdHMtcm93W2RhdGEtZXhwYW5kZWQ9InRydWUiXSAuYW5pbWF0ZWRJ
bWFnZScpOwogICAgICAgIGlmICghaGFzVmlzaWJsZUFuaW1hdGVkSW1hZ2UpIHsKICAgICAgICAg
ICAgY2xlYXJJbnRlcnZhbCh0aGlzLl90b2dnbGluZ0ltYWdlSW50ZXJ2YWwpOwogICAgICAgICAg
ICB0aGlzLl90b2dnbGluZ0ltYWdlSW50ZXJ2YWwgPSBudWxsOwogICAgICAgICAgICByZXR1cm47
CiAgICAgICAgfQoKICAgICAgICBpZiAoIXRoaXMuX3RvZ2dsaW5nSW1hZ2VJbnRlcnZhbCkgewog
ICAgICAgICAgICBUZXN0UmVzdWx0c0NvbnRyb2xsZXIuX3RvZ2dsZUltYWdlcygpOwogICAgICAg
ICAgICB0aGlzLl90b2dnbGluZ0ltYWdlSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChUZXN0UmVzdWx0
c0NvbnRyb2xsZXIuX3RvZ2dsZUltYWdlcywgMjAwMCk7CiAgICAgICAgfQogICAgfQogICAgCiAg
ICBzdGF0aWMgX2dldFJlc3VsdENvbnRhaW5lcihub2RlKQogICAgewogICAgICAgIHJldHVybiAo
bm9kZS50YWdOYW1lID09ICdJTUcnKSA/IFV0aWxzLnBhcmVudE9mVHlwZShub2RlLCAnLnJlc3Vs
dC1jb250YWluZXInKSA6IG5vZGU7CiAgICB9CgogICAgc3RhdGljIF9jb252ZXJ0VG9Ub2dnbGlu
Z0hhbmRsZXIodG9nZ2xpbmdJbWFnZUZ1bmN0aW9uKQogICAgewogICAgICAgIHJldHVybiBmdW5j
dGlvbihub2RlKSB7CiAgICAgICAgICAgIGxldCB1cmwgPSAobm9kZS50YWdOYW1lID09ICdJTUcn
KSA/IG5vZGUuc3JjIDogbm9kZS5ocmVmOwogICAgICAgICAgICBpZiAodXJsLm1hdGNoKCctZXhw
ZWN0ZWQucG5nJCcpKQogICAgICAgICAgICAgICAgVGVzdFJlc3VsdHNDb250cm9sbGVyLl9nZXRS
ZXN1bHRDb250YWluZXIobm9kZSkucmVtb3ZlKCk7CiAgICAgICAgICAgIGVsc2UgaWYgKHVybC5t
YXRjaCgnLWFjdHVhbC5wbmckJykpIHsKICAgICAgICAgICAgICAgIGxldCBuYW1lID0gVXRpbHMu
cGFyZW50T2ZUeXBlKG5vZGUsICd0Ym9keScpLnF1ZXJ5U2VsZWN0b3IoJy50ZXN0LWxpbmsnKS50
ZXh0Q29udGVudDsKICAgICAgICAgICAgICAgIFRlc3RSZXN1bHRzQ29udHJvbGxlci5fZ2V0UmVz
dWx0Q29udGFpbmVyKG5vZGUpLm91dGVySFRNTCA9IHRvZ2dsaW5nSW1hZ2VGdW5jdGlvbihVdGls
cy50ZXN0UHJlZml4KG5hbWUpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAog
ICAgc3RhdGljIF9jb252ZXJ0VG9Ob25Ub2dnbGluZ0hhbmRsZXIocmVzdWx0RnVuY3Rpb24pCiAg
ICB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHsKICAgICAgICAgICAgbGV0IHByZWZp
eCA9IG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXByZWZpeCcpOwogICAgICAgICAgICBUZXN0UmVz
dWx0c0NvbnRyb2xsZXIuX2dldFJlc3VsdENvbnRhaW5lcihub2RlKS5vdXRlckhUTUwgPSByZXN1
bHRGdW5jdGlvbihwcmVmaXgsICctZXhwZWN0ZWQucG5nJywgJ2V4cGVjdGVkJykgKyByZXN1bHRG
dW5jdGlvbihwcmVmaXgsICctYWN0dWFsLnBuZycsICdhY3R1YWwnKTsKICAgICAgICB9CiAgICB9
Cn07CgpjbGFzcyBTZWN0aW9uQnVpbGRlciB7CiAgICAKICAgIGNvbnN0cnVjdG9yKHRlc3RzLCB0
YWJsZUlELCByZXN1bHRzQ29udHJvbGxlcikKICAgIHsKICAgICAgICB0aGlzLl90ZXN0cyA9IHRl
c3RzOwogICAgICAgIHRoaXMuX3RhYmxlID0gbnVsbDsKICAgICAgICB0aGlzLl9yZXN1bHRzQ29u
dHJvbGxlciA9IHJlc3VsdHNDb250cm9sbGVyOwogICAgICAgIHRoaXMuX3RhYmxlSUQgPSB0YWJs
ZUlEOwogICAgfQoKICAgIGJ1aWxkKCkKICAgIHsKICAgICAgICBUZXN0UmVzdWx0cy5zb3J0QnlO
YW1lKHRoaXMuX3Rlc3RzKTsKICAgICAgICAKICAgICAgICBsZXQgc2VjdGlvbiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NlY3Rpb24nKTsKICAgICAgICBzZWN0aW9uLmFwcGVuZENoaWxkKFRl
c3RSZXN1bHRzQ29udHJvbGxlci5fdGVzdExpc3RIZWFkZXIodGhpcy5zZWN0aW9uVGl0bGUoKSkp
OwogICAgICAgIGlmICh0aGlzLmhpZGVXaGVuU2hvd2luZ1VuZXhwZWN0ZWRSZXN1bHRzT25seSgp
KQogICAgICAgICAgICBzZWN0aW9uLmNsYXNzTGlzdC5hZGQoJ2V4cGVjdGVkJyk7CgogICAgICAg
IHRoaXMuX3RhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTsKICAgICAgICB0
aGlzLl90YWJsZS5pZCA9IHRoaXMudGFibGVJRCgpOwogICAgICAgIHRoaXMuYWRkVGFibGVIZWFk
ZXIoKTsKCiAgICAgICAgbGV0IHZpc2libGVSZXN1bHRzQ291bnQgPSAwOwogICAgICAgIGZvciAo
bGV0IHRlc3RSZXN1bHQgb2YgdGhpcy5fdGVzdHMpIHsKICAgICAgICAgICAgbGV0IHRib2R5ID0g
dGhpcy5jcmVhdGVUYWJsZVJvdyh0ZXN0UmVzdWx0KTsKICAgICAgICAgICAgdGhpcy5fdGFibGUu
YXBwZW5kQ2hpbGQodGJvZHkpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCF0aGlzLl9y
ZXN1bHRzQ29udHJvbGxlci5vbmx5U2hvd1VuZXhwZWN0ZWRGYWlsdXJlcygpIHx8IHRlc3RSZXN1
bHQuaXNFeHBlY3RlZCkKICAgICAgICAgICAgICAgICsrdmlzaWJsZVJlc3VsdHNDb3VudDsKICAg
ICAgICB9CiAgICAgICAgCiAgICAgICAgc2VjdGlvbi5xdWVyeVNlbGVjdG9yKCcudGVzdC1saXN0
LWNvdW50JykudGV4dENvbnRlbnQgPSB2aXNpYmxlUmVzdWx0c0NvdW50OwogICAgICAgIHNlY3Rp
b24uYXBwZW5kQ2hpbGQodGhpcy5fdGFibGUpOwogICAgICAgIHJldHVybiBzZWN0aW9uOwogICAg
fQoKICAgIGNyZWF0ZVRhYmxlUm93KHRlc3RSZXN1bHQpCiAgICB7CiAgICAgICAgbGV0IHRib2R5
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGJvZHknKTsKICAgICAgICBpZiAodGVzdFJlc3Vs
dC5pc0V4cGVjdGVkKQogICAgICAgICAgICB0Ym9keS5jbGFzc0xpc3QuYWRkKCdleHBlY3RlZCcp
OwogICAgICAgIAogICAgICAgIGxldCByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicp
OwogICAgICAgIHJvdy5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGVzdC1uYW1lJywgdGVzdFJlc3VsdC5u
YW1lKTsKICAgICAgICB0Ym9keS5hcHBlbmRDaGlsZChyb3cpOwoKICAgICAgICBsZXQgdGVzdE5h
bWVDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKICAgICAgICB0aGlzLmZpbGxU
ZXN0Q2VsbCh0ZXN0UmVzdWx0LCB0ZXN0TmFtZUNlbGwpOwogICAgICAgIHJvdy5hcHBlbmRDaGls
ZCh0ZXN0TmFtZUNlbGwpOwoKICAgICAgICBsZXQgcmVzdWx0Q2VsbCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3RkJyk7CiAgICAgICAgdGhpcy5maWxsVGVzdFJlc3VsdENlbGwodGVzdFJlc3Vs
dCwgcmVzdWx0Q2VsbCk7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKHJlc3VsdENlbGwpOwoKICAg
ICAgICBsZXQgaGlzdG9yeUNlbGwgPSB0aGlzLmNyZWF0ZUhpc3RvcnlDZWxsKHRlc3RSZXN1bHQp
OwogICAgICAgIGlmIChoaXN0b3J5Q2VsbCkKICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKGhp
c3RvcnlDZWxsKTsKCiAgICAgICAgcmV0dXJuIHRib2R5OwogICAgfQogICAgCiAgICBoaWRlV2hl
blNob3dpbmdVbmV4cGVjdGVkUmVzdWx0c09ubHkoKQogICAgewogICAgICAgIHJldHVybiAhVGVz
dFJlc3VsdHMuaGFzVW5leHBlY3RlZFJlc3VsdCh0aGlzLl90ZXN0cyk7CiAgICB9CiAgICAKICAg
IGFkZFRhYmxlSGVhZGVyKCkKICAgIHsKICAgIH0KICAgIAogICAgZmlsbFRlc3RDZWxsKHRlc3RS
ZXN1bHQsIGNlbGwpCiAgICB7CiAgICAgICAgbGV0IHRlc3RMaW5rID0gdGhpcy5saW5raWZ5VGVz
dE5hbWUoKSA/IHRoaXMuX3Jlc3VsdHNDb250cm9sbGVyLnRlc3RMaW5rKHRlc3RSZXN1bHQpIDog
dGVzdFJlc3VsdC5uYW1lOwogICAgICAgIGlmICh0aGlzLnJvd3NBcmVFeHBhbmRhYmxlKCkpIHsK
ICAgICAgICAgICAgY2VsbC5pbm5lckhUTUwgPSB0aGlzLl9yZXN1bHRzQ29udHJvbGxlci5leHBh
bmRCdXR0b25TcGFuKCkgKyB0ZXN0TGluazsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0K
CiAgICAgICAgY2VsbC5pbm5lckhUTUwgPSB0ZXN0TGluazsKICAgIH0KCiAgICBmaWxsVGVzdFJl
c3VsdENlbGwodGVzdFJlc3VsdCwgY2VsbCkKICAgIHsKICAgIH0KICAgIAogICAgY3JlYXRlSGlz
dG9yeUNlbGwodGVzdFJlc3VsdCkKICAgIHsKICAgICAgICBsZXQgaGlzdG9yeUNlbGwgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwogICAgICAgIGhpc3RvcnlDZWxsLmlubmVySFRNTCA9
ICc8YSBocmVmPSInICsgdGhpcy5fcmVzdWx0c0NvbnRyb2xsZXIuZmxha2luZXNzRGFzaGJvYXJk
VVJMRm9yVGVzdHMoW3Rlc3RSZXN1bHRdKSArICciPmhpc3Rvcnk8L2E+JwogICAgICAgIHJldHVy
biBoaXN0b3J5Q2VsbDsKICAgIH0KICAgIAogICAgdGFibGVJRCgpCiAgICB7CiAgICAgICAgcmV0
dXJuIHRoaXMuX3RhYmxlSUQ7CiAgICB9CiAgICAKICAgIHJvd3NBcmVFeHBhbmRhYmxlKCkKICAg
IHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIAogICAgbGlua2lmeVRlc3ROYW1lKCkK
ICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBzZWN0aW9uVGl0bGUoKSB7IHJl
dHVybiAnJzsgfQp9OwoKY2xhc3MgRmFpbHVyZXNTZWN0aW9uQnVpbGRlciBleHRlbmRzIFNlY3Rp
b25CdWlsZGVyIHsKICAgIAogICAgYWRkVGFibGVIZWFkZXIoKQogICAgewogICAgICAgIGxldCBo
ZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0aGVhZCcpOwogICAgICAgIGxldCBodG1s
ID0gJzx0aD50ZXN0PC90aD48dGggaWQ9InRleHQtcmVzdWx0cy1oZWFkZXIiPnJlc3VsdHM8L3Ro
Pjx0aCBpZD0iaW1hZ2UtcmVzdWx0cy1oZWFkZXIiPmltYWdlIHJlc3VsdHM8L3RoPic7CgogICAg
ICAgIGlmICh0aGlzLl9yZXN1bHRzQ29udHJvbGxlci50ZXN0UmVzdWx0cy51c2VzRXhwZWN0YXRp
b25zRmlsZSgpKQogICAgICAgICAgICBodG1sICs9ICc8dGg+YWN0dWFsIGZhaWx1cmU8L3RoPjx0
aD5leHBlY3RlZCBmYWlsdXJlPC90aD4nOwoKICAgICAgICBodG1sICs9ICc8dGg+aGlzdG9yeTwv
dGg+JzsKCiAgICAgICAgaWYgKHRoaXMudGFibGVJRCgpID09ICdmbGFreS10ZXN0cy10YWJsZScp
IC8vIEZJWE1FOiB1c2UgdGhlIGNsYXNzZXMsIEx1a2UhCiAgICAgICAgICAgIGh0bWwgKz0gJzx0
aD5mYWlsdXJlczwvdGg+JzsKCiAgICAgICAgaGVhZGVyLmlubmVySFRNTCA9IGh0bWw7CiAgICAg
ICAgdGhpcy5fdGFibGUuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKICAgIH0KICAgIAogICAgY3JlYXRl
VGFibGVSb3codGVzdFJlc3VsdCkKICAgIHsKICAgICAgICBsZXQgdGJvZHkgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCd0Ym9keScpOwogICAgICAgIGlmICh0ZXN0UmVzdWx0LmlzRXhwZWN0ZWQp
CiAgICAgICAgICAgIHRib2R5LmNsYXNzTGlzdC5hZGQoJ2V4cGVjdGVkJyk7CiAgICAgICAgCiAg
ICAgICAgaWYgKHRlc3RSZXN1bHQuaXNNaXNtYXRjaFJlZlRlc3QoKSkKICAgICAgICAgICAgdGJv
ZHkuc2V0QXR0cmlidXRlKCdtaXNtYXRjaHJlZnRlc3QnLCAndHJ1ZScpOwoKICAgICAgICBsZXQg
cm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKICAgICAgICByb3cuc2V0QXR0cmli
dXRlKCdkYXRhLXRlc3QtbmFtZScsIHRlc3RSZXN1bHQubmFtZSk7CiAgICAgICAgdGJvZHkuYXBw
ZW5kQ2hpbGQocm93KTsKICAgICAgICAKICAgICAgICBsZXQgdGVzdE5hbWVDZWxsID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgndGQnKTsKICAgICAgICB0aGlzLmZpbGxUZXN0Q2VsbCh0ZXN0UmVz
dWx0LCB0ZXN0TmFtZUNlbGwpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0ZXN0TmFtZUNlbGwp
OwoKICAgICAgICBsZXQgcmVzdWx0Q2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7
CiAgICAgICAgdGhpcy5maWxsVGVzdFJlc3VsdENlbGwodGVzdFJlc3VsdCwgcmVzdWx0Q2VsbCk7
CiAgICAgICAgcm93LmFwcGVuZENoaWxkKHJlc3VsdENlbGwpOwoKICAgICAgICBpZiAodGVzdFJl
c3VsdC5pc1RleHRGYWlsdXJlKCkpCiAgICAgICAgICAgIHRoaXMuYXBwZW5kVGV4dEZhaWx1cmVM
aW5rcyh0ZXN0UmVzdWx0LCByZXN1bHRDZWxsKTsKCiAgICAgICAgaWYgKHRlc3RSZXN1bHQuaXNB
dWRpb0ZhaWx1cmUoKSkKICAgICAgICAgICAgdGhpcy5hcHBlbmRBdWRpb0ZhaWx1cmVMaW5rcyh0
ZXN0UmVzdWx0LCByZXN1bHRDZWxsKTsKICAgICAgICAgICAgCiAgICAgICAgaWYgKHRlc3RSZXN1
bHQuaGFzTWlzc2luZ1Jlc3VsdCgpKQogICAgICAgICAgICB0aGlzLmFwcGVuZEFjdHVhbE9ubHlM
aW5rcyh0ZXN0UmVzdWx0LCByZXN1bHRDZWxsKTsKCiAgICAgICAgbGV0IGFjdHVhbFRva2VucyA9
IHRlc3RSZXN1bHQuaW5mby5hY3R1YWwuc3BsaXQoL1xzKy8pOwoKICAgICAgICBsZXQgdGVzdFBy
ZWZpeCA9IFV0aWxzLnRlc3RQcmVmaXgodGVzdFJlc3VsdC5uYW1lKTsKICAgICAgICBsZXQgaW1h
Z2VSZXN1bHRzID0gdGhpcy5pbWFnZVJlc3VsdExpbmtzKHRlc3RSZXN1bHQsIHRlc3RQcmVmaXgs
IGFjdHVhbFRva2Vuc1swXSk7CiAgICAgICAgaWYgKCFpbWFnZVJlc3VsdHMgJiYgYWN0dWFsVG9r
ZW5zLmxlbmd0aCA+IDEpCiAgICAgICAgICAgIGltYWdlUmVzdWx0cyA9IHRoaXMuaW1hZ2VSZXN1
bHRMaW5rcyh0ZXN0UmVzdWx0LCAncmV0cmllcy8nICsgdGVzdFByZWZpeCwgYWN0dWFsVG9rZW5z
WzFdKTsKCiAgICAgICAgbGV0IGltYWdlUmVzdWx0c0NlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCd0ZCcpOwogICAgICAgIGltYWdlUmVzdWx0c0NlbGwuaW5uZXJIVE1MID0gaW1hZ2VSZXN1
bHRzOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChpbWFnZVJlc3VsdHNDZWxsKTsKCiAgICAgICAg
aWYgKHRoaXMuX3Jlc3VsdHNDb250cm9sbGVyLnRlc3RSZXN1bHRzLnVzZXNFeHBlY3RhdGlvbnNG
aWxlKCkgfHwgYWN0dWFsVG9rZW5zLmxlbmd0aCkgewogICAgICAgICAgICBsZXQgYWN0dWFsQ2Vs
bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CiAgICAgICAgICAgIGFjdHVhbENlbGwu
dGV4dENvbnRlbnQgPSB0ZXN0UmVzdWx0LmluZm8uYWN0dWFsOwogICAgICAgICAgICByb3cuYXBw
ZW5kQ2hpbGQoYWN0dWFsQ2VsbCk7CiAgICAgICAgfQoKICAgICAgICBpZiAodGhpcy5fcmVzdWx0
c0NvbnRyb2xsZXIudGVzdFJlc3VsdHMudXNlc0V4cGVjdGF0aW9uc0ZpbGUoKSkgewogICAgICAg
ICAgICBsZXQgZXhwZWN0ZWRDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKICAg
ICAgICAgICAgZXhwZWN0ZWRDZWxsLnRleHRDb250ZW50ID0gdGVzdFJlc3VsdC5oYXNNaXNzaW5n
UmVzdWx0KCkgPyAnJyA6IHRlc3RSZXN1bHQuaW5mby5leHBlY3RlZDsKICAgICAgICAgICAgcm93
LmFwcGVuZENoaWxkKGV4cGVjdGVkQ2VsbCk7CiAgICAgICAgfQoKICAgICAgICBsZXQgaGlzdG9y
eUNlbGwgPSB0aGlzLmNyZWF0ZUhpc3RvcnlDZWxsKHRlc3RSZXN1bHQpOwogICAgICAgIGlmICho
aXN0b3J5Q2VsbCkKICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKGhpc3RvcnlDZWxsKTsKCiAg
ICAgICAgcmV0dXJuIHRib2R5OwogICAgfQoKICAgIGFwcGVuZFRleHRGYWlsdXJlTGlua3ModGVz
dFJlc3VsdCwgY2VsbCkKICAgIHsKICAgICAgICBjZWxsLmlubmVySFRNTCArPSB0aGlzLl9yZXN1
bHRzQ29udHJvbGxlci50ZXh0UmVzdWx0TGlua3MoVXRpbHMudGVzdFByZWZpeCh0ZXN0UmVzdWx0
Lm5hbWUpKTsKICAgIH0KICAgIAogICAgYXBwZW5kQXVkaW9GYWlsdXJlTGlua3ModGVzdFJlc3Vs
dCwgY2VsbCkKICAgIHsKICAgICAgICBsZXQgcHJlZml4ID0gVXRpbHMudGVzdFByZWZpeCh0ZXN0
UmVzdWx0Lm5hbWUpOwogICAgICAgIGNlbGwuaW5uZXJIVE1MICs9IFRlc3RSZXN1bHRzQ29udHJv
bGxlci5yZXN1bHRMaW5rKHByZWZpeCwgJy1leHBlY3RlZC53YXYnLCAnZXhwZWN0ZWQgYXVkaW8n
KQogICAgICAgICAgICArIFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHByZWZpeCwg
Jy1hY3R1YWwud2F2JywgJ2FjdHVhbCBhdWRpbycpCiAgICAgICAgICAgICsgVGVzdFJlc3VsdHND
b250cm9sbGVyLnJlc3VsdExpbmsocHJlZml4LCAnLWRpZmYudHh0JywgJ3RleHR1YWwgZGlmZicp
OwogICAgfQogICAgCiAgICBhcHBlbmRBY3R1YWxPbmx5TGlua3ModGVzdFJlc3VsdCwgY2VsbCkK
ICAgIHsKICAgICAgICBsZXQgcHJlZml4ID0gVXRpbHMudGVzdFByZWZpeCh0ZXN0UmVzdWx0Lm5h
bWUpOwogICAgICAgIGlmICh0ZXN0UmVzdWx0LmlzTWlzc2luZ0F1ZGlvKCkpCiAgICAgICAgICAg
IGNlbGwuaW5uZXJIVE1MICs9IFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHByZWZp
eCwgJy1hY3R1YWwud2F2JywgJ2F1ZGlvIHJlc3VsdCcpOwoKICAgICAgICBpZiAodGVzdFJlc3Vs
dC5pc01pc3NpbmdUZXh0KCkpCiAgICAgICAgICAgIGNlbGwuaW5uZXJIVE1MICs9IFRlc3RSZXN1
bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHByZWZpeCwgJy1hY3R1YWwudHh0JywgJ3Jlc3VsdCcp
OwogICAgfQoKICAgIGltYWdlUmVzdWx0TGlua3ModGVzdFJlc3VsdCwgdGVzdFByZWZpeCwgcmVz
dWx0VG9rZW4pCiAgICB7CiAgICAgICAgbGV0IHJlc3VsdCA9ICcnOwogICAgICAgIGlmIChyZXN1
bHRUb2tlbi5pbmRleE9mKCdJTUFHRScpICE9IC0xKSB7CiAgICAgICAgICAgIGxldCB0ZXN0RXh0
ZW5zaW9uID0gVXRpbHMuc3BsaXRFeHRlbnNpb24odGVzdFJlc3VsdC5uYW1lKVsxXTsKCiAgICAg
ICAgICAgIGlmICh0ZXN0UmVzdWx0LmlzTWlzbWF0Y2hSZWZUZXN0KCkpIHsKICAgICAgICAgICAg
ICAgIHJlc3VsdCArPSBUZXN0UmVzdWx0c0NvbnRyb2xsZXIucmVzdWx0TGluayh0aGlzLl9yZXN1
bHRzQ29udHJvbGxlci5sYXlvdXRUZXN0c0Jhc2VQYXRoKCkgKyB0ZXN0UHJlZml4LCAnLWV4cGVj
dGVkLW1pc21hdGNoJyArIHRlc3RFeHRlbnNpb24sICdyZWYgbWlzbWF0Y2gnKTsKICAgICAgICAg
ICAgICAgIHJlc3VsdCArPSBUZXN0UmVzdWx0c0NvbnRyb2xsZXIucmVzdWx0TGluayh0ZXN0UHJl
Zml4LCAnLWFjdHVhbC5wbmcnLCAnYWN0dWFsJyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICBpZiAodGVzdFJlc3VsdC5pc01hdGNoUmVmVGVzdCgpKQogICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCArPSBUZXN0UmVzdWx0c0NvbnRyb2xsZXIucmVzdWx0TGluayh0aGlzLl9y
ZXN1bHRzQ29udHJvbGxlci5sYXlvdXRUZXN0c0Jhc2VQYXRoKCkgKyB0ZXN0UHJlZml4LCAnLWV4
cGVjdGVkJyArIHRlc3RFeHRlbnNpb24sICdyZWZlcmVuY2UnKTsKCiAgICAgICAgICAgICAgICBp
ZiAodGhpcy5fcmVzdWx0c0NvbnRyb2xsZXIuc2hvdWxkVG9nZ2xlSW1hZ2VzKQogICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCArPSBUZXN0UmVzdWx0c0NvbnRyb2xsZXIucmVzdWx0TGluayh0ZXN0
UHJlZml4LCAnLWRpZmZzLmh0bWwnLCAnaW1hZ2VzJyk7CiAgICAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gVGVzdFJlc3VsdHNDb250cm9sbGVyLnJlc3Vs
dExpbmsodGVzdFByZWZpeCwgJy1leHBlY3RlZC5wbmcnLCAnZXhwZWN0ZWQnKTsKICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgKz0gVGVzdFJlc3VsdHNDb250cm9sbGVyLnJlc3VsdExpbmsodGVz
dFByZWZpeCwgJy1hY3R1YWwucG5nJywgJ2FjdHVhbCcpOwogICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBNYXRoLm1heCh0ZXN0UmVzdWx0LmluZm8uaW1hZ2Vf
ZGlmZl9wZXJjZW50LCAwLjAxKS50b0ZpeGVkKDIpOwogICAgICAgICAgICAgICAgcmVzdWx0ICs9
IFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHRlc3RQcmVmaXgsICctZGlmZi5wbmcn
LCBgZGlmZiAoJHtkaWZmfSUpYCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAg
ICAgICAgaWYgKHRlc3RSZXN1bHQuaGFzTWlzc2luZ1Jlc3VsdCgpICYmIHRlc3RSZXN1bHQuaXNN
aXNzaW5nSW1hZ2UoKSkKICAgICAgICAgICAgcmVzdWx0ICs9IFRlc3RSZXN1bHRzQ29udHJvbGxl
ci5yZXN1bHRMaW5rKHRlc3RQcmVmaXgsICctYWN0dWFsLnBuZycsICdwbmcgcmVzdWx0Jyk7CiAg
ICAgICAgCiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KfTsKCmNsYXNzIEZhaWxpbmdUZXN0
c1NlY3Rpb25CdWlsZGVyIGV4dGVuZHMgRmFpbHVyZXNTZWN0aW9uQnVpbGRlciB7CiAgICBzZWN0
aW9uVGl0bGUoKSB7IHJldHVybiAnVGVzdHMgdGhhdCBmYWlsZWQgdGV4dC9waXhlbC9hdWRpbyBk
aWZmJzsgfQp9OwoKY2xhc3MgVGVzdHNXaXRoTWlzc2luZ1Jlc3VsdHNTZWN0aW9uQnVpbGRlciBl
eHRlbmRzIEZhaWx1cmVzU2VjdGlvbkJ1aWxkZXIgewogICAgc2VjdGlvblRpdGxlKCkgeyByZXR1
cm4gJ1Rlc3RzIHRoYXQgaGFkIG5vIGV4cGVjdGVkIHJlc3VsdHMgKHByb2JhYmx5IG5ldyknOyB9
CgogICAgcm93c0FyZUV4cGFuZGFibGUoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAg
IH0KfTsKCmNsYXNzIEZsYWt5UGFzc1Rlc3RzU2VjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBGYWlsdXJl
c1NlY3Rpb25CdWlsZGVyIHsKICAgIHNlY3Rpb25UaXRsZSgpIHsgcmV0dXJuICdGbGFreSB0ZXN0
cyAoZmFpbGVkIHRoZSBmaXJzdCBydW4gYW5kIHBhc3NlZCBvbiByZXRyeSknOyB9Cn07CgpjbGFz
cyBVbmV4cGVjdGVkUGFzc1Rlc3RzU2VjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBTZWN0aW9uQnVpbGRl
ciB7CiAgICBzZWN0aW9uVGl0bGUoKSB7IHJldHVybiAnVGVzdHMgZXhwZWN0ZWQgdG8gZmFpbCBi
dXQgcGFzc2VkJzsgfQoKICAgIGFkZFRhYmxlSGVhZGVyKCkKICAgIHsKICAgICAgICBsZXQgaGVh
ZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGhlYWQnKTsKICAgICAgICBoZWFkZXIuaW5u
ZXJIVE1MID0gJzx0aD50ZXN0PC90aD48dGg+ZXhwZWN0ZWQgZmFpbHVyZTwvdGg+PHRoPmhpc3Rv
cnk8L3RoPic7CiAgICAgICAgdGhpcy5fdGFibGUuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKICAgIH0K
ICAgIAogICAgZmlsbFRlc3RSZXN1bHRDZWxsKHRlc3RSZXN1bHQsIGNlbGwpCiAgICB7CiAgICAg
ICAgY2VsbC5pbm5lckhUTUwgPSB0ZXN0UmVzdWx0LmluZm8uZXhwZWN0ZWQ7CiAgICB9CgogICAg
cm93c0FyZUV4cGFuZGFibGUoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfTsK
CmNsYXNzIFRlc3RzV2l0aFN0ZEVyclNlY3Rpb25CdWlsZGVyIGV4dGVuZHMgU2VjdGlvbkJ1aWxk
ZXIgewogICAgc2VjdGlvblRpdGxlKCkgeyByZXR1cm4gJ1Rlc3RzIHRoYXQgaGFkIHN0ZGVyciBv
dXRwdXQnOyB9CiAgICBoaWRlV2hlblNob3dpbmdVbmV4cGVjdGVkUmVzdWx0c09ubHkoKSB7IHJl
dHVybiBmYWxzZTsgfQoKICAgIGZpbGxUZXN0UmVzdWx0Q2VsbCh0ZXN0UmVzdWx0LCBjZWxsKQog
ICAgewogICAgICAgIGNlbGwuaW5uZXJIVE1MID0gVGVzdFJlc3VsdHNDb250cm9sbGVyLnJlc3Vs
dExpbmsoVXRpbHMudGVzdFByZWZpeCh0ZXN0UmVzdWx0Lm5hbWUpLCAnLXN0ZGVyci50eHQnLCAn
c3RkZXJyJyk7CiAgICB9Cn07CgpjbGFzcyBUaW1lZE91dFRlc3RzU2VjdGlvbkJ1aWxkZXIgZXh0
ZW5kcyBTZWN0aW9uQnVpbGRlciB7CiAgICBzZWN0aW9uVGl0bGUoKSB7IHJldHVybiAnVGVzdHMg
dGhhdCB0aW1lZCBvdXQnOyB9CgogICAgZmlsbFRlc3RSZXN1bHRDZWxsKHRlc3RSZXN1bHQsIGNl
bGwpCiAgICB7CiAgICAgICAgLy8gRklYTUU6IG9ubHkgaW5jbHVkZSB0aW1lb3V0IGFjdHVhbC9k
aWZmIHJlc3VsdHMgaGVyZSBpZiB3ZSBhY3R1YWxseSBzcGl0IG91dCByZXN1bHRzIGZvciB0aW1l
b3V0IHRlc3RzLgogICAgICAgIGNlbGwuaW5uZXJIVE1MID0gdGhpcy5fcmVzdWx0c0NvbnRyb2xs
ZXIudGV4dFJlc3VsdExpbmtzKFV0aWxzLnRlc3RQcmVmaXgodGVzdFJlc3VsdC5uYW1lKSk7CiAg
ICB9Cn07CgpjbGFzcyBDcmFzaGluZ1Rlc3RzU2VjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBTZWN0aW9u
QnVpbGRlciB7CiAgICBzZWN0aW9uVGl0bGUoKSB7IHJldHVybiAnVGVzdHMgdGhhdCBjcmFzaGVk
JzsgfQoKICAgIGZpbGxUZXN0UmVzdWx0Q2VsbCh0ZXN0UmVzdWx0LCBjZWxsKQogICAgewogICAg
ICAgIGNlbGwuaW5uZXJIVE1MID0gVGVzdFJlc3VsdHNDb250cm9sbGVyLnJlc3VsdExpbmsoVXRp
bHMudGVzdFByZWZpeCh0ZXN0UmVzdWx0Lm5hbWUpLCAnLWNyYXNoLWxvZy50eHQnLCAnY3Jhc2gg
bG9nJykKICAgICAgICAgICAgICAgICAgICAgICArIFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1
bHRMaW5rKFV0aWxzLnRlc3RQcmVmaXgodGVzdFJlc3VsdC5uYW1lKSwgJy1zYW1wbGUudHh0Jywg
J3NhbXBsZScpOwogICAgfQp9OwoKY2xhc3MgT3RoZXJDcmFzaGVzU2VjdGlvbkJ1aWxkZXIgZXh0
ZW5kcyBTZWN0aW9uQnVpbGRlciB7CiAgICBzZWN0aW9uVGl0bGUoKSB7IHJldHVybiAnT3RoZXIg
Y3Jhc2hlcyc7IH0KICAgIGZpbGxUZXN0UmVzdWx0Q2VsbCh0ZXN0UmVzdWx0LCBjZWxsKQogICAg
ewogICAgICAgIGNlbGwuaW5uZXJIVE1MID0gVGVzdFJlc3VsdHNDb250cm9sbGVyLnJlc3VsdExp
bmsoVXRpbHMudGVzdFByZWZpeCh0ZXN0UmVzdWx0Lm5hbWUpLCAnLWNyYXNoLWxvZy50eHQnLCAn
Y3Jhc2ggbG9nJyk7CiAgICB9CgogICAgY3JlYXRlSGlzdG9yeUNlbGwodGVzdFJlc3VsdCkKICAg
IHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBsaW5raWZ5VGVzdE5hbWUoKQogICAg
ewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfTsKCmNsYXNzIFBpeGVsWm9vbWVyIHsKICAg
IGNvbnN0cnVjdG9yKCkKICAgIHsKICAgICAgICB0aGlzLnNob3dPbkRlbGF5ID0gdHJ1ZTsKICAg
ICAgICB0aGlzLl96b29tRmFjdG9yID0gNjsKCiAgICAgICAgdGhpcy5fcmVzdWx0V2lkdGggPSA4
MDA7CiAgICAgICAgdGhpcy5fcmVzdWx0SGVpZ2h0ID0gNjAwOwogICAgICAgIAogICAgICAgIHRo
aXMuX3BlcmNlbnRYID0gMDsKICAgICAgICB0aGlzLl9wZXJjZW50WSA9IDA7CgogICAgICAgIGRv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMsIGZhbHNlKTsKICAgICAg
ICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIHRoaXMsIGZhbHNlKTsKICAg
IH0KCiAgICBfem9vbWVkUmVzdWx0V2lkdGgoKQogICAgewogICAgICAgIHJldHVybiB0aGlzLl9y
ZXN1bHRXaWR0aCAqIHRoaXMuX3pvb21GYWN0b3I7CiAgICB9CiAgICAKICAgIF96b29tZWRSZXN1
bHRIZWlnaHQoKQogICAgewogICAgICAgIHJldHVybiB0aGlzLl9yZXN1bHRIZWlnaHQgKiB0aGlz
Ll96b29tRmFjdG9yOwogICAgfQogICAgCiAgICBfem9vbUltYWdlQ29udGFpbmVyKHVybCkKICAg
IHsKICAgICAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CiAgICAgICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICd6b29tLWltYWdlLWNvbnRhaW5lcic7Cgog
ICAgICAgIGxldCB0aXRsZSA9IHVybC5tYXRjaCgvXC0oW15cLV0qKVwucG5nLylbMV07CiAgICAK
ICAgICAgICBsZXQgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAg
ICBsYWJlbC5jbGFzc05hbWUgPSAnbGFiZWwnOwogICAgICAgIGxhYmVsLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHRpdGxlKSk7CiAgICAgICAgY29udGFpbmVyLmFwcGVuZENo
aWxkKGxhYmVsKTsKICAgIAogICAgICAgIGxldCBpbWFnZUNvbnRhaW5lciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGltYWdlQ29udGFpbmVyLmNsYXNzTmFtZSA9ICdz
Y2FsZWQtaW1hZ2UtY29udGFpbmVyJzsKICAgIAogICAgICAgIGxldCBpbWFnZSA9IG5ldyBJbWFn
ZSgpOwogICAgICAgIGltYWdlLnNyYyA9IHVybDsKICAgICAgICBpbWFnZS5zdHlsZS53aWR0aCA9
IHRoaXMuX3pvb21lZFJlc3VsdFdpZHRoKCkgKyAncHgnOwogICAgICAgIGltYWdlLnN0eWxlLmhl
aWdodCA9IHRoaXMuX3pvb21lZFJlc3VsdEhlaWdodCgpICsgJ3B4JzsKICAgICAgICBpbWFnZS5z
dHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkIGJsYWNrJzsKICAgICAgICBpbWFnZUNvbnRhaW5lci5h
cHBlbmRDaGlsZChpbWFnZSk7CiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGltYWdlQ29u
dGFpbmVyKTsKICAgIAogICAgICAgIHJldHVybiBjb250YWluZXI7CiAgICB9CgogICAgX2NyZWF0
ZUNvbnRhaW5lcihlKQogICAgewogICAgICAgIGxldCB0Ym9keSA9IFV0aWxzLnBhcmVudE9mVHlw
ZShlLnRhcmdldCwgJ3Rib2R5Jyk7CiAgICAgICAgbGV0IHJvdyA9IHRib2R5LnF1ZXJ5U2VsZWN0
b3IoJ3RyJyk7CiAgICAgICAgbGV0IGltYWdlRGlmZkxpbmtzID0gcm93LnF1ZXJ5U2VsZWN0b3JB
bGwoJ2FbaHJlZiQ9Ii5wbmciXScpOwogICAgCiAgICAgICAgbGV0IGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUgPSAn
cGl4ZWwtem9vbS1jb250YWluZXInOwogICAgCiAgICAgICAgbGV0IGh0bWwgPSAnJzsKICAgIAog
ICAgICAgIGxldCB0b2dnbGluZ0ltYWdlTGluayA9IHJvdy5xdWVyeVNlbGVjdG9yKCdhW2hyZWYk
PSItZGlmZnMuaHRtbCJdJyk7CiAgICAgICAgaWYgKHRvZ2dsaW5nSW1hZ2VMaW5rKSB7CiAgICAg
ICAgICAgIGxldCBwcmVmaXggPSB0b2dnbGluZ0ltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ2RhdGEt
cHJlZml4Jyk7CiAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl96b29tSW1h
Z2VDb250YWluZXIocHJlZml4ICsgJy1leHBlY3RlZC5wbmcnKSk7CiAgICAgICAgICAgIGNvbnRh
aW5lci5hcHBlbmRDaGlsZCh0aGlzLl96b29tSW1hZ2VDb250YWluZXIocHJlZml4ICsgJy1hY3R1
YWwucG5nJykpOwogICAgICAgIH0KICAgIAogICAgICAgIGZvciAobGV0IGxpbmsgb2YgaW1hZ2VE
aWZmTGlua3MpCiAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl96b29tSW1h
Z2VDb250YWluZXIobGluay5ocmVmKSk7CgogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoY29udGFpbmVyKTsKICAgICAgICB0aGlzLl9kcmF3QWxsKCk7CiAgICB9CgogICAgX2RyYXco
aW1hZ2VDb250YWluZXIpCiAgICB7CiAgICAgICAgbGV0IGltYWdlID0gaW1hZ2VDb250YWluZXIu
cXVlcnlTZWxlY3RvcignaW1nJyk7CiAgICAgICAgbGV0IGNvbnRhaW5lckJvdW5kcyA9IGltYWdl
Q29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgIGltYWdlLnN0eWxlLmxl
ZnQgPSAoY29udGFpbmVyQm91bmRzLndpZHRoIC8gMiAtIHRoaXMuX3BlcmNlbnRYICogdGhpcy5f
em9vbWVkUmVzdWx0V2lkdGgoKSkgKyAncHgnOwogICAgICAgIGltYWdlLnN0eWxlLnRvcCA9IChj
b250YWluZXJCb3VuZHMuaGVpZ2h0IC8gMiAtIHRoaXMuX3BlcmNlbnRZICogdGhpcy5fem9vbWVk
UmVzdWx0SGVpZ2h0KCkpICsgJ3B4JzsKICAgIH0KCiAgICBfZHJhd0FsbCgpCiAgICB7CiAgICAg
ICAgVXRpbHMuZm9yRWFjaChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGl4ZWwtem9vbS1j
b250YWluZXIgLnNjYWxlZC1pbWFnZS1jb250YWluZXInKSwgZWxlbWVudCA9PiB7IHRoaXMuX2Ry
YXcoZWxlbWVudCkgfSk7CiAgICB9CiAgICAKICAgIGhhbmRsZUV2ZW50KGV2ZW50KQogICAgewog
ICAgICAgIGlmIChldmVudC50eXBlID09ICdtb3VzZW1vdmUnKSB7CiAgICAgICAgICAgIHRoaXMu
X2hhbmRsZU1vdXNlTW92ZShldmVudCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9Cgog
ICAgICAgIGlmIChldmVudC50eXBlID09ICdtb3VzZW91dCcpIHsKICAgICAgICAgICAgdGhpcy5f
aGFuZGxlTW91c2VPdXQoZXZlbnQpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAg
fQoKICAgIF9oYW5kbGVNb3VzZU91dChldmVudCkKICAgIHsKICAgICAgICBpZiAoZXZlbnQucmVs
YXRlZFRhcmdldCAmJiBldmVudC5yZWxhdGVkVGFyZ2V0LnRhZ05hbWUgIT0gJ0lGUkFNRScpCiAg
ICAgICAgICAgIHJldHVybjsKCiAgICAgICAgLy8gSWYgZS5yZWxhdGVkVGFyZ2V0IGlzIG51bGws
IHdlJ3ZlIG1vdXNlZCBvdXQgb2YgdGhlIGRvY3VtZW50LgogICAgICAgIGxldCBjb250YWluZXIg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGl4ZWwtem9vbS1jb250YWluZXInKTsKICAgICAg
ICBpZiAoY29udGFpbmVyKQogICAgICAgICAgICBjb250YWluZXIucmVtb3ZlKCk7CiAgICB9Cgog
ICAgX2hhbmRsZU1vdXNlTW92ZShldmVudCkKICAgIHsKICAgICAgICBpZiAodGhpcy5fbW91c2VN
b3ZlVGltZW91dCkgewogICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbW91c2VNb3ZlVGlt
ZW91dCk7CiAgICAgICAgICAgIHRoaXMuX21vdXNlTW92ZVRpbWVvdXQgPSAwOwogICAgICAgIH0K
CiAgICAgICAgaWYgKFV0aWxzLnBhcmVudE9mVHlwZShldmVudC50YXJnZXQsICcucGl4ZWwtem9v
bS1jb250YWluZXInKSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBsZXQgY29udGFpbmVy
ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBpeGVsLXpvb20tY29udGFpbmVyJyk7CiAgICAK
ICAgICAgICBsZXQgcmVzdWx0Q29udGFpbmVyID0gKGV2ZW50LnRhcmdldC5jbGFzc05hbWUgPT0g
J3Jlc3VsdC1jb250YWluZXInKSA/IGV2ZW50LnRhcmdldCA6IFV0aWxzLnBhcmVudE9mVHlwZShl
dmVudC50YXJnZXQsICcucmVzdWx0LWNvbnRhaW5lcicpOwogICAgICAgIGlmICghcmVzdWx0Q29u
dGFpbmVyIHx8ICFyZXN1bHRDb250YWluZXIucXVlcnlTZWxlY3RvcignaW1nJykpIHsKICAgICAg
ICAgICAgaWYgKGNvbnRhaW5lcikKICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmUoKTsK
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbGV0IHRhcmdldExvY2F0aW9u
ID0gZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgIHRoaXMuX3Bl
cmNlbnRYID0gKGV2ZW50LmNsaWVudFggLSB0YXJnZXRMb2NhdGlvbi5sZWZ0KSAvIHRhcmdldExv
Y2F0aW9uLndpZHRoOwogICAgICAgIHRoaXMuX3BlcmNlbnRZID0gKGV2ZW50LmNsaWVudFkgLSB0
YXJnZXRMb2NhdGlvbi50b3ApIC8gdGFyZ2V0TG9jYXRpb24uaGVpZ2h0OwoKICAgICAgICBpZiAo
IWNvbnRhaW5lcikgewogICAgICAgICAgICBpZiAodGhpcy5zaG93T25EZWxheSkgewogICAgICAg
ICAgICAgICAgdGhpcy5fbW91c2VNb3ZlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gewogICAg
ICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbnRhaW5lcihldmVudCk7CiAgICAgICAgICAg
ICAgICB9LCA0MDApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAg
ICAgICAgICB0aGlzLl9jcmVhdGVDb250YWluZXIoZXZlbnQpOwogICAgICAgICAgICByZXR1cm47
CiAgICAgICAgfQogICAgCiAgICAgICAgdGhpcy5fZHJhd0FsbCgpOwogICAgfQp9OwoKY2xhc3Mg
VGFibGVTb3J0ZXIKewogICAgc3RhdGljIF9mb3J3YXJkQXJyb3coKQogICAgewogICAgICAgIHJl
dHVybiAnPHN2ZyBzdHlsZT0id2lkdGg6MTBweDtoZWlnaHQ6MTBweCI+PHBvbHlnb24gcG9pbnRz
PSIwLDAgMTAsMCA1LDEwIiBzdHlsZT0iZmlsbDojY2NjIj48L3N2Zz4nOwogICAgfQoKICAgIHN0
YXRpYyBfYmFja3dhcmRBcnJvdygpCiAgICB7CiAgICAgICAgcmV0dXJuICc8c3ZnIHN0eWxlPSJ3
aWR0aDoxMHB4O2hlaWdodDoxMHB4Ij48cG9seWdvbiBwb2ludHM9IjAsMTAgMTAsMTAgNSwwIiBz
dHlsZT0iZmlsbDojY2NjIj48L3N2Zz4nOwogICAgfQoKICAgIHN0YXRpYyBfc29ydGVkQ29udGVu
dHMoaGVhZGVyLCBhcnJvdykKICAgIHsKICAgICAgICByZXR1cm4gYXJyb3cgKyAnICcgKyBVdGls
cy50cmltKGhlYWRlci50ZXh0Q29udGVudCkgKyAnICcgKyBhcnJvdzsKICAgIH0KCiAgICBzdGF0
aWMgX3VwZGF0ZUhlYWRlckNsYXNzTmFtZXMobmV3SGVhZGVyKQogICAgewogICAgICAgIGxldCBz
b3J0SGVhZGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNvcnRIZWFkZXInKTsKICAgICAg
ICBpZiAoc29ydEhlYWRlcikgewogICAgICAgICAgICBpZiAoc29ydEhlYWRlciA9PSBuZXdIZWFk
ZXIpIHsKICAgICAgICAgICAgICAgIGxldCBpc0FscmVhZHlSZXZlcnNlZCA9IHNvcnRIZWFkZXIu
Y2xhc3NMaXN0LmNvbnRhaW5zKCdyZXZlcnNlZCcpOwogICAgICAgICAgICAgICAgaWYgKGlzQWxy
ZWFkeVJldmVyc2VkKQogICAgICAgICAgICAgICAgICAgIHNvcnRIZWFkZXIuY2xhc3NMaXN0LnJl
bW92ZSgncmV2ZXJzZWQnKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICBzb3J0SGVhZGVyLmNsYXNzTGlzdC5hZGQoJ3JldmVyc2VkJyk7CiAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICBzb3J0SGVhZGVyLnRleHRDb250ZW50ID0gc29ydEhlYWRlci50
ZXh0Q29udGVudDsKICAgICAgICAgICAgICAgIHNvcnRIZWFkZXIuY2xhc3NMaXN0LnJlbW92ZSgn
c29ydEhlYWRlcicpOwogICAgICAgICAgICAgICAgc29ydEhlYWRlci5jbGFzc0xpc3QucmVtb3Zl
KCdyZXZlcnNlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBuZXdIZWFkZXIu
Y2xhc3NMaXN0LmFkZCgnc29ydEhlYWRlcicpOwogICAgfQoKICAgIHN0YXRpYyBfdGV4dENvbnRl
bnQodGJvZHlSb3csIGNvbHVtbikKICAgIHsKICAgICAgICByZXR1cm4gdGJvZHlSb3cucXVlcnlT
ZWxlY3RvckFsbCgndGQnKVtjb2x1bW5dLnRleHRDb250ZW50OwogICAgfQoKICAgIHN0YXRpYyBf
c29ydFJvd3MobmV3SGVhZGVyLCByZXZlcnNlZCkKICAgIHsKICAgICAgICBsZXQgdGVzdHNUYWJs
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzLXRhYmxlJyk7CiAgICAgICAgbGV0
IGhlYWRlcnMgPSBVdGlscy50b0FycmF5KHRlc3RzVGFibGUucXVlcnlTZWxlY3RvckFsbCgndGgn
KSk7CiAgICAgICAgbGV0IHNvcnRDb2x1bW4gPSBoZWFkZXJzLmluZGV4T2YobmV3SGVhZGVyKTsK
CiAgICAgICAgbGV0IHJvd3MgPSBVdGlscy50b0FycmF5KHRlc3RzVGFibGUucXVlcnlTZWxlY3Rv
ckFsbCgndGJvZHknKSk7CgogICAgICAgIGNvbnN0IExUID0gcmV2ZXJzZWQgPyAxIDogLTE7CiAg
ICAgICAgY29uc3QgR1QgPSByZXZlcnNlZCA/IC0xIDogMTsKCiAgICAgICAgcm93cy5zb3J0KGZ1
bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgLy8gT25seSBuZWVkIHRvIHN1cHBvcnQgbGV4aWNv
Z3JhcGhpYyBzb3J0IGZvciBub3cuCiAgICAgICAgICAgIGxldCBhVGV4dCA9IFRhYmxlU29ydGVy
Ll90ZXh0Q29udGVudChhLCBzb3J0Q29sdW1uKTsKICAgICAgICAgICAgbGV0IGJUZXh0ID0gVGFi
bGVTb3J0ZXIuX3RleHRDb250ZW50KGIsIHNvcnRDb2x1bW4pOwogICAgICAgIAogICAgICAgICAg
ICAvLyBGaXJzdCwgc29ydCBudW1lcmljYWxseSBieSBwZXJjZW50YWdlIChmb3IgdGhlICJpbWFn
ZSByZXN1bHRzIiBjb2x1bW4pLgogICAgICAgICAgICBsZXQgYVBlcmNlbnRhZ2UgPSAoLyhbMC05
Ll0rKSUvLmV4ZWMoYVRleHQpIHx8IFssIDBdKVsxXTsKICAgICAgICAgICAgbGV0IGJQZXJjZW50
YWdlID0gKC8oWzAtOS5dKyklLy5leGVjKGJUZXh0KSB8fCBbLCAwXSlbMV07CiAgICAgICAgICAg
IGlmIChhUGVyY2VudGFnZSAhPSBiUGVyY2VudGFnZSkKICAgICAgICAgICAgICAgIHJldHVybiAr
YVBlcmNlbnRhZ2UgPCArYlBlcmNlbnRhZ2UgPyBMVCA6IEdUOwoKICAgICAgICAgICAgLy8gU2Vj
b25kLCBzb3J0IGJ5IHRoZSBjb2x1bW4gdGV4dC4KICAgICAgICAgICAgaWYgKGFUZXh0ICE9IGJU
ZXh0KQogICAgICAgICAgICAgICAgcmV0dXJuIGFUZXh0IDwgYlRleHQgPyBMVCA6IEdUOwoKICAg
ICAgICAgICAgLy8gRmluYWxseSwgZm9yd2FyZCBzb3J0IGJ5IHRoZSB0ZXN0IG5hbWUuCiAgICAg
ICAgICAgIGxldCBhVGVzdE5hbWUgPSBUYWJsZVNvcnRlci5fdGV4dENvbnRlbnQoYSwgMCk7CiAg
ICAgICAgICAgIGxldCBiVGVzdE5hbWUgPSBUYWJsZVNvcnRlci5fdGV4dENvbnRlbnQoYiwgMCk7
CiAgICAgICAgICAgIGlmIChhVGVzdE5hbWUgIT0gYlRlc3ROYW1lKQogICAgICAgICAgICAgICAg
cmV0dXJuIGFUZXN0TmFtZSA8IGJUZXN0TmFtZSA/IC0xIDogMTsKICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgfSk7CgogICAgICAgIGZvciAobGV0IHJvdyBvZiByb3dzKQogICAgICAgICAg
ICB0ZXN0c1RhYmxlLmFwcGVuZENoaWxkKHJvdyk7CiAgICB9CgogICAgc3RhdGljIHNvcnRDb2x1
bW4oY29sdW1uTnVtYmVyKQogICAgewogICAgICAgIGxldCBuZXdIZWFkZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0cy10YWJsZScpLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoJylbY29s
dW1uTnVtYmVyXTsKICAgICAgICBUYWJsZVNvcnRlci5fc29ydChuZXdIZWFkZXIpOwogICAgfQoK
ICAgIHN0YXRpYyBoYW5kbGVDbGljayhlKQogICAgewogICAgICAgIGxldCBuZXdIZWFkZXIgPSBl
LnRhcmdldDsKICAgICAgICBpZiAobmV3SGVhZGVyLmxvY2FsTmFtZSAhPSAndGgnKQogICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgVGFibGVTb3J0ZXIuX3NvcnQobmV3SGVhZGVyKTsKICAgIH0K
CiAgICBzdGF0aWMgX3NvcnQobmV3SGVhZGVyKQogICAgewogICAgICAgIFRhYmxlU29ydGVyLl91
cGRhdGVIZWFkZXJDbGFzc05hbWVzKG5ld0hlYWRlcik7CiAgICAKICAgICAgICBsZXQgcmV2ZXJz
ZWQgPSBuZXdIZWFkZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZXZlcnNlZCcpOwogICAgICAgIGxl
dCBzb3J0QXJyb3cgPSByZXZlcnNlZCA/IFRhYmxlU29ydGVyLl9iYWNrd2FyZEFycm93KCkgOiBU
YWJsZVNvcnRlci5fZm9yd2FyZEFycm93KCk7CiAgICAgICAgbmV3SGVhZGVyLmlubmVySFRNTCA9
IFRhYmxlU29ydGVyLl9zb3J0ZWRDb250ZW50cyhuZXdIZWFkZXIsIHNvcnRBcnJvdyk7CiAgICAK
ICAgICAgICBUYWJsZVNvcnRlci5fc29ydFJvd3MobmV3SGVhZGVyLCByZXZlcnNlZCk7CiAgICB9
ICAgIAp9OwoKY2xhc3MgT3B0aW9uV3JpdGVyIHsKICAgIHN0YXRpYyBzYXZlKCkKICAgIHsKICAg
ICAgICBsZXQgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xhYmVsIGlucHV0
Jyk7CiAgICAgICAgbGV0IGRhdGEgPSB7fTsKICAgICAgICBmb3IgKGxldCBvcHRpb24gb2Ygb3B0
aW9ucykKICAgICAgICAgICAgZGF0YVtvcHRpb24uaWRdID0gb3B0aW9uLmNoZWNrZWQ7CgogICAg
ICAgIHRyeSB7CiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKE9wdGlvbldyaXRlci5f
a2V5LCBKU09OLnN0cmluZ2lmeShkYXRhKSk7CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAg
ICAgICAgIGlmIChlcnIubmFtZSAhPSAiU2VjdXJpdHlFcnJvciIpCiAgICAgICAgICAgICAgICB0
aHJvdyBlcnI7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyBhcHBseSgpCiAgICB7CiAgICAg
ICAgbGV0IGpzb247CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAganNvbiA9IGxvY2FsU3RvcmFn
ZS5nZXRJdGVtKE9wdGlvbldyaXRlci5fa2V5KTsKICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAg
ICAgICAgICBpZiAoZXJyLm5hbWUgIT0gIlNlY3VyaXR5RXJyb3IiKQogICAgICAgICAgICAgIHRo
cm93IGVycjsKICAgICAgICB9CgogICAgICAgIGlmICghanNvbikgewogICAgICAgICAgICBjb250
cm9sbGVyLnVwZGF0ZUFsbE9wdGlvbnMoKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0K
CiAgICAgICAgbGV0IGRhdGEgPSBKU09OLnBhcnNlKGpzb24pOwogICAgICAgIGZvciAobGV0IGlk
IGluIGRhdGEpIHsKICAgICAgICAgICAgbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoaWQpOwogICAgICAgICAgICBpZiAoaW5wdXQpCiAgICAgICAgICAgICAgICBpbnB1dC5jaGVj
a2VkID0gZGF0YVtpZF07CiAgICAgICAgfQogICAgICAgIGNvbnRyb2xsZXIudXBkYXRlQWxsT3B0
aW9ucygpOwogICAgfQoKICAgIHN0YXRpYyBnZXQgX2tleSgpCiAgICB7CiAgICAgICAgcmV0dXJu
ICdydW4td2Via2l0LXRlc3RzLW9wdGlvbnMnOwogICAgfQp9OwoKbGV0IHRlc3RSZXN1bHRzOwpm
dW5jdGlvbiBBRERfUkVTVUxUUyhpbnB1dCkKewogICAgdGVzdFJlc3VsdHMgPSBuZXcgVGVzdFJl
c3VsdHMoaW5wdXQpOwp9Cjwvc2NyaXB0PgoKPHNjcmlwdCBzcmM9ImZ1bGxfcmVzdWx0cy5qc29u
Ij48L3NjcmlwdD4KCjxzY3JpcHQ+CgpjbGFzcyBUZXN0TmF2aWdhdG9yCnsKICAgIGNvbnN0cnVj
dG9yKCkgewogICAgICAgIHRoaXMuY3VycmVudFRlc3RJbmRleCA9IC0xOwogICAgICAgIHRoaXMu
ZmxhZ2dlZFRlc3RzID0ge307CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5
cHJlc3MnLCB0aGlzLCBmYWxzZSk7CiAgICB9CiAgICAKICAgIGhhbmRsZUV2ZW50KGV2ZW50KQog
ICAgewogICAgICAgIGlmIChldmVudC50eXBlID09ICdrZXlwcmVzcycpIHsKICAgICAgICAgICAg
dGhpcy5oYW5kbGVLZXlFdmVudChldmVudCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9
CiAgICB9CgogICAgaGFuZGxlS2V5RXZlbnQoZXZlbnQpCiAgICB7CiAgICAgICAgaWYgKGV2ZW50
Lm1ldGFLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQuY3RybEtleSkKICAgICAgICAgICAg
cmV0dXJuOwoKICAgICAgICBzd2l0Y2ggKFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQuY2hhckNv
ZGUpKSB7CiAgICAgICAgICAgIGNhc2UgJ2knOgogICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xs
VG9GaXJzdFRlc3QoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdq
JzoKICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvTmV4dFRlc3QoKTsKICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdrJzoKICAgICAgICAgICAgICAgIHRoaXMuX3Nj
cm9sbFRvUHJldmlvdXNUZXN0KCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
Y2FzZSAnbCc6CiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0xhc3RUZXN0KCk7CiAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICAgICB0
aGlzLl9leHBhbmRDdXJyZW50VGVzdCgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgIGNhc2UgJ2MnOgogICAgICAgICAgICAgICAgdGhpcy5fY29sbGFwc2VDdXJyZW50VGVzdCgp
OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3QnOgogICAgICAgICAg
ICAgICAgdGhpcy5fdG9nZ2xlQ3VycmVudFRlc3QoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICBjYXNlICdmJzoKICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZUN1cnJlbnRU
ZXN0RmxhZ2dlZCgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAg
IF9zY3JvbGxUb0ZpcnN0VGVzdCgpCiAgICB7CiAgICAgICAgaWYgKHRoaXMuX3NldEN1cnJlbnRU
ZXN0KDApKQogICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRUZXN0KCk7CiAgICB9Cgog
ICAgX3Njcm9sbFRvTGFzdFRlc3QoKQogICAgewogICAgICAgIGxldCBsaW5rcyA9IGNvbnRyb2xs
ZXIudmlzaWJsZVRlc3RzKCk7CiAgICAgICAgaWYgKHRoaXMuX3NldEN1cnJlbnRUZXN0KGxpbmtz
Lmxlbmd0aCAtIDEpKQogICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRUZXN0KCk7CiAg
ICB9CgogICAgX3Njcm9sbFRvTmV4dFRlc3QoKQogICAgewogICAgICAgIGlmICh0aGlzLmN1cnJl
bnRUZXN0SW5kZXggPT0gLTEpCiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvRmlyc3RUZXN0KCk7
CiAgICAgICAgZWxzZSBpZiAodGhpcy5fc2V0Q3VycmVudFRlc3QodGhpcy5jdXJyZW50VGVzdElu
ZGV4ICsgMSkpCiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvQ3VycmVudFRlc3QoKTsKICAgIH0K
CiAgICBfc2Nyb2xsVG9QcmV2aW91c1Rlc3QoKQogICAgewogICAgICAgIGlmICh0aGlzLmN1cnJl
bnRUZXN0SW5kZXggPT0gLTEpCiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvTGFzdFRlc3QoKTsK
ICAgICAgICBlbHNlIGlmICh0aGlzLl9zZXRDdXJyZW50VGVzdCh0aGlzLmN1cnJlbnRUZXN0SW5k
ZXggLSAxKSkKICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9DdXJyZW50VGVzdCgpOwogICAgfQoK
ICAgIF9jdXJyZW50VGVzdExpbmsoKQogICAgewogICAgICAgIGxldCBsaW5rcyA9IGNvbnRyb2xs
ZXIudmlzaWJsZVRlc3RzKCk7CiAgICAgICAgcmV0dXJuIGxpbmtzW3RoaXMuY3VycmVudFRlc3RJ
bmRleF07CiAgICB9CgogICAgX2N1cnJlbnRUZXN0RXhwYW5kTGluaygpCiAgICB7CiAgICAgICAg
cmV0dXJuIHRoaXMuX2N1cnJlbnRUZXN0TGluaygpLnF1ZXJ5U2VsZWN0b3IoJy5leHBhbmQtYnV0
dG9uLXRleHQnKTsKICAgIH0KCiAgICBfZXhwYW5kQ3VycmVudFRlc3QoKQogICAgewogICAgICAg
IGNvbnRyb2xsZXIuZXhwYW5kRXhwZWN0YXRpb25zKHRoaXMuX2N1cnJlbnRUZXN0RXhwYW5kTGlu
aygpKTsKICAgIH0KCiAgICBfY29sbGFwc2VDdXJyZW50VGVzdCgpCiAgICB7CiAgICAgICAgY29u
dHJvbGxlci5jb2xsYXBzZUV4cGVjdGF0aW9ucyh0aGlzLl9jdXJyZW50VGVzdEV4cGFuZExpbmso
KSk7CiAgICB9CgogICAgX3RvZ2dsZUN1cnJlbnRUZXN0KCkKICAgIHsKICAgICAgICBjb250cm9s
bGVyLnRvZ2dsZUV4cGVjdGF0aW9ucyh0aGlzLl9jdXJyZW50VGVzdEV4cGFuZExpbmsoKSk7CiAg
ICB9CgogICAgX3RvZ2dsZUN1cnJlbnRUZXN0RmxhZ2dlZCgpCiAgICB7CiAgICAgICAgbGV0IHRl
c3RMaW5rID0gdGhpcy5fY3VycmVudFRlc3RMaW5rKCk7CiAgICAgICAgdGhpcy5mbGFnVGVzdCh0
ZXN0TGluaywgIXRlc3RMaW5rLmNsYXNzTGlzdC5jb250YWlucygnZmxhZ2dlZCcpKTsKICAgIH0K
CiAgICAvLyBGSVhNRTogVGVzdCBuYXZpZ2F0b3Igc2hvdWxkbid0IGtub3cgYW55dGhpbmcgYWJv
dXQgZmxhZ2dpbmcuIEl0IHNob3VsZCBwcm9iYWJseSBjYWxsIG91dCB0byBUZXN0RmxhZ2dlciBv
ciBzb21ldGhpbmcuCiAgICAvLyBGSVhNRTogQmF0Y2ggZmxhZ2dpbmcgKGF2b2lkIHVwZGF0ZUZs
YWdnZWRUZXN0cyBvbiBlYWNoIHRlc3QpLgogICAgZmxhZ1Rlc3QodGVzdFRib2R5LCBzaG91bGRG
bGFnKQogICAgewogICAgICAgIGxldCB0ZXN0TmFtZSA9IHRlc3RUYm9keS5xdWVyeVNlbGVjdG9y
KCcudGVzdC1saW5rJykuaW5uZXJUZXh0OwogICAgCiAgICAgICAgaWYgKHNob3VsZEZsYWcpIHsK
ICAgICAgICAgICAgdGVzdFRib2R5LmNsYXNzTGlzdC5hZGQoJ2ZsYWdnZWQnKTsKICAgICAgICAg
ICAgdGhpcy5mbGFnZ2VkVGVzdHNbdGVzdE5hbWVdID0gMTsKICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICB0ZXN0VGJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnZmxhZ2dlZCcpOwogICAgICAgICAg
ICBkZWxldGUgdGhpcy5mbGFnZ2VkVGVzdHNbdGVzdE5hbWVdOwogICAgICAgIH0KCiAgICAgICAg
dGhpcy51cGRhdGVGbGFnZ2VkVGVzdHMoKTsKICAgIH0KCiAgICB1cGRhdGVGbGFnZ2VkVGVzdHMo
KQogICAgewogICAgICAgIGxldCBmbGFnZ2VkVGVzdFRleHRib3ggPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZmxhZ2dlZC10ZXN0cycpOwogICAgICAgIGlmICghZmxhZ2dlZFRlc3RUZXh0Ym94
KSB7CiAgICAgICAgICAgIGxldCBmbGFnZ2VkVGVzdENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICBmbGFnZ2VkVGVzdENvbnRhaW5lci5pZCA9ICdm
bGFnZ2VkLXRlc3QtY29udGFpbmVyJzsKICAgICAgICAgICAgZmxhZ2dlZFRlc3RDb250YWluZXIu
Y2xhc3NOYW1lID0gJ2Zsb2F0aW5nLXBhbmVsJzsKICAgICAgICAgICAgZmxhZ2dlZFRlc3RDb250
YWluZXIuaW5uZXJIVE1MID0gJzxoMj5GbGFnZ2VkIFRlc3RzPC9oMj48cHJlIGlkPSJmbGFnZ2Vk
LXRlc3RzIiBjb250ZW50RWRpdGFibGU+PC9wcmU+JzsKICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChmbGFnZ2VkVGVzdENvbnRhaW5lcik7CgogICAgICAgICAgICBmbGFnZ2Vk
VGVzdFRleHRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmxhZ2dlZC10ZXN0cycpOwog
ICAgICAgIH0KCiAgICAgICAgbGV0IGZsYWdnZWRUZXN0cyA9IE9iamVjdC5rZXlzKHRoaXMuZmxh
Z2dlZFRlc3RzKTsKICAgICAgICBmbGFnZ2VkVGVzdHMuc29ydCgpOwogICAgICAgIGxldCBzZXBh
cmF0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXNlLW5ld2xpbmVzJykuY2hlY2tlZCA/
ICdcbicgOiAnICc7CiAgICAgICAgZmxhZ2dlZFRlc3RUZXh0Ym94LmlubmVySFRNTCA9IGZsYWdn
ZWRUZXN0cy5qb2luKHNlcGFyYXRvcik7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2ZsYWdnZWQtdGVzdC1jb250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gZmxhZ2dlZFRlc3RzLmxl
bmd0aCA/ICcnIDogJ25vbmUnOwogICAgfQoKICAgIF9zZXRDdXJyZW50VGVzdCh0ZXN0SW5kZXgp
CiAgICB7CiAgICAgICAgbGV0IGxpbmtzID0gY29udHJvbGxlci52aXNpYmxlVGVzdHMoKTsKICAg
ICAgICBpZiAodGVzdEluZGV4IDwgMCB8fCB0ZXN0SW5kZXggPj0gbGlua3MubGVuZ3RoKQogICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgIGxldCBjdXJyZW50VGVzdCA9IGxpbmtzW3Ro
aXMuY3VycmVudFRlc3RJbmRleF07CiAgICAgICAgaWYgKGN1cnJlbnRUZXN0KQogICAgICAgICAg
ICBjdXJyZW50VGVzdC5jbGFzc0xpc3QucmVtb3ZlKCdjdXJyZW50Jyk7CgogICAgICAgIHRoaXMu
Y3VycmVudFRlc3RJbmRleCA9IHRlc3RJbmRleDsKCiAgICAgICAgY3VycmVudFRlc3QgPSBsaW5r
c1t0aGlzLmN1cnJlbnRUZXN0SW5kZXhdOwogICAgICAgIGN1cnJlbnRUZXN0LmNsYXNzTGlzdC5h
ZGQoJ2N1cnJlbnQnKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgX3Njcm9sbFRv
Q3VycmVudFRlc3QoKQogICAgewogICAgICAgIGxldCB0YXJnZXRMaW5rID0gdGhpcy5fY3VycmVu
dFRlc3RMaW5rKCk7CiAgICAgICAgaWYgKCF0YXJnZXRMaW5rKQogICAgICAgICAgICByZXR1cm47
CgogICAgICAgIGxldCByb3dSZWN0ID0gdGFyZ2V0TGluay5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KTsKICAgICAgICAvLyByb3dSZWN0IGlzIGluIGNsaWVudCBjb29yZHMgKGkuZS4gcmVsYXRpdmUg
dG8gdmlld3BvcnQpLCBzbyB3ZSBqdXN0IHdhbnQgdG8gYWRkIGl0cyB0b3AgdG8gdGhlIGN1cnJl
bnQgc2Nyb2xsIHBvc2l0aW9uLgogICAgICAgIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Ny
b2xsVG9wICs9IHJvd1JlY3QudG9wOwogICAgfQoKICAgIG9ubHlTaG93VW5leHBlY3RlZEZhaWx1
cmVzQ2hhbmdlZCgpCiAgICB7CiAgICAgICAgbGV0IGN1cnJlbnRUZXN0ID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignLmN1cnJlbnQnKTsKICAgICAgICBpZiAoIWN1cnJlbnRUZXN0KQogICAgICAg
ICAgICByZXR1cm47CgogICAgICAgIC8vIElmIG91ciBjdXJyZW50VGVzdCBiZWNhbWUgaGlkZGVu
LCByZXNldCB0aGUgY3VycmVudFRlc3RJbmRleC4KICAgICAgICBpZiAoY29udHJvbGxlci5vbmx5
U2hvd1VuZXhwZWN0ZWRGYWlsdXJlcygpICYmIGN1cnJlbnRUZXN0LmNsYXNzTGlzdC5jb250YWlu
cygnZXhwZWN0ZWQnKSkKICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9GaXJzdFRlc3QoKTsKICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgLy8gUmVjb21wdXRlIHRoaXMuY3VycmVudFRlc3RJbmRl
eAogICAgICAgICAgICBsZXQgbGlua3MgPSBjb250cm9sbGVyLnZpc2libGVUZXN0cygpOwogICAg
ICAgICAgICB0aGlzLmN1cnJlbnRUZXN0SW5kZXggPSBsaW5rcy5pbmRleE9mKGN1cnJlbnRUZXN0
KTsKICAgICAgICB9CiAgICB9Cn07CgpmdW5jdGlvbiBoYW5kbGVNb3VzZURvd24oZSkKewogICAg
aWYgKCFVdGlscy5wYXJlbnRPZlR5cGUoZS50YXJnZXQsICcjb3B0aW9ucy1tZW51JykgJiYgZS50
YXJnZXQuaWQgIT0gJ29wdGlvbnMtbGluaycpCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ29wdGlvbnMtbWVudScpLmNsYXNzTmFtZSA9ICdoaWRkZW4tbWVudSc7Cn0KCmRvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZU1vdXNlRG93biwgZmFsc2UpOwoK
bGV0IGNvbnRyb2xsZXI7CmxldCBwaXhlbFpvb21lcjsKbGV0IHRlc3ROYXZpZ2F0b3I7CgpmdW5j
dGlvbiBnZW5lcmF0ZVBhZ2UoKQp7CiAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ21haW4tY29udGVudCcpOwoKICAgIGNvbnRyb2xsZXIgPSBuZXcgVGVzdFJlc3Vs
dHNDb250cm9sbGVyKGNvbnRhaW5lciwgdGVzdFJlc3VsdHMpOwogICAgcGl4ZWxab29tZXIgPSBu
ZXcgUGl4ZWxab29tZXIoKTsKICAgIHRlc3ROYXZpZ2F0b3IgPSBuZXcgVGVzdE5hdmlnYXRvcigp
OwoKICAgIE9wdGlvbldyaXRlci5hcHBseSgpOwp9Cgp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcign
bG9hZCcsIGdlbmVyYXRlUGFnZSwgZmFsc2UpOwoKPC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+CiAg
ICAKICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQtY29udGFpbmVyIj4KICAgICAgICA8ZGl2IGlkPSJ0
b29sYmFyIiBjbGFzcz0iZmxvYXRpbmctcGFuZWwiPgogICAgICAgIDxkaXYgY2xhc3M9Im5vdGUi
PlVzZSB0aGUgaSwgaiwgayBhbmQgbCBrZXlzIHRvIG5hdmlnYXRlLCBlLCBjIHRvIGV4cGFuZCBh
bmQgY29sbGFwc2UsIGFuZCBmIHRvIGZsYWc8L2Rpdj4KICAgICAgICA8YSBjbGFzcz0iY2xpY2th
YmxlIiBvbmNsaWNrPSJjb250cm9sbGVyLmV4cGFuZEFsbEV4cGVjdGF0aW9ucygpIj5leHBhbmQg
YWxsPC9hPgogICAgICAgIDxhIGNsYXNzPSJjbGlja2FibGUiIG9uY2xpY2s9ImNvbnRyb2xsZXIu
Y29sbGFwc2VBbGxFeHBlY3RhdGlvbnMoKSI+Y29sbGFwc2UgYWxsPC9hPgogICAgICAgIDxhIGNs
YXNzPSJjbGlja2FibGUiIGlkPW9wdGlvbnMtbGluayBvbmNsaWNrPSJjb250cm9sbGVyLnRvZ2ds
ZU9wdGlvbnNNZW51KCkiPm9wdGlvbnM8L2E+CiAgICAgICAgPGRpdiBpZD0ib3B0aW9ucy1tZW51
IiBjbGFzcz0iaGlkZGVuLW1lbnUiPgogICAgICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJ1bmV4
cGVjdGVkLXJlc3VsdHMiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkIG9uY2hhbmdlPSJjb250cm9s
bGVyLmhhbmRsZVVuZXhwZWN0ZWRSZXN1bHRzQ2hhbmdlKCkiPk9ubHkgdW5leHBlY3RlZCByZXN1
bHRzPC9sYWJlbD4KICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0idG9nZ2xlLWltYWdlcyIg
dHlwZT0iY2hlY2tib3giIGNoZWNrZWQgb25jaGFuZ2U9ImNvbnRyb2xsZXIuaGFuZGxlVG9nZ2xl
SW1hZ2VzQ2hhbmdlKCkiPlRvZ2dsZSBpbWFnZXM8L2xhYmVsPgogICAgICAgICAgICA8bGFiZWwg
dGl0bGU9IlVzZSBuZXdsaW5lcyBpbnN0ZWFkIG9mIHNwYWNlcyB0byBzZXBhcmF0ZSBmbGFnZ2Vk
IHRlc3RzIj48aW5wdXQgaWQ9InVzZS1uZXdsaW5lcyIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQg
b25jaGFuZ2U9ImNvbnRyb2xsZXIuaGFuZGxlVG9nZ2xlVXNlTmV3bGluZXMoKSI+VXNlIG5ld2xp
bmVzIGluIGZsYWdnZWQgbGlzdDwvbGFiZWw+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCjxk
aXYgaWQ9Im1haW4tY29udGVudCI+PC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>