<?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>64645</bug_id>
          
          <creation_ts>2011-07-15 18:52:47 -0700</creation_ts>
          <short_desc>[NRWT] New image results have the wrong links in the summary page</short_desc>
          <delta_ts>2012-06-18 17:31:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>88680</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>438104</commentid>
    <comment_count>0</comment_count>
      <attachid>101083</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-07-15 18:52:47 -0700</bug_when>
    <thetext>Created attachment 101083
Generated result showing the problem

I witnessed this behavior a couple of times: if you have new image pixel tests, the |images| link in the final generated report do not work properly and link to the *-diff.html instead of the *-expected.png.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482733</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-12 14:37:20 -0700</bug_when>
    <thetext>Sounds bad. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651905</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-18 17:31:51 -0700</bug_when>
    <thetext>this appears to be working now. It&apos;s likely this got fixed some time in the past 11 months, but I have no idea when :). Please reopen or file a new bug if you still see an issue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>101083</attachid>
            <date>2011-07-15 18:52:47 -0700</date>
            <delta_ts>2011-07-15 18:52:47 -0700</delta_ts>
            <desc>Generated result showing the problem</desc>
            <filename>results.html</filename>
            <type>text/html</type>
            <size>32018</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">PCFEb2NUeXBlIGh0bWw+CjxzdHlsZT4KYm9keSB7CiAgICBtYXJnaW46IDRweDsKfQoKYm9keSA+
IHA6Zmlyc3Qtb2YtdHlwZSB7CiAgICBtYXJnaW4tdG9wOiAwOwp9CgpwIHsKICAgIG1hcmdpbi1i
b3R0b206IDAuM2VtOwp9Cgp0cjpub3QoLnJlc3VsdHMtcm93KSB0ZCB7CiAgICB3aGl0ZS1zcGFj
ZTogbm93cmFwOwp9Cgp0cjpub3QoLnJlc3VsdHMtcm93KSB0ZDpmaXJzdC1vZi10eXBlIHsKICAg
IHdoaXRlLXNwYWNlOiBub3JtYWw7Cn0KCnRkOm5vdCg6Zmlyc3Qtb2YtdHlwZSkgewogICAgdGV4
dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsKfQoKdGQgewogICAgcGFkZGluZzogMCA0cHg7Cn0KCnRo
OmVtcHR5LCB0ZDplbXB0eSB7CiAgICBwYWRkaW5nOiAwOwp9Cgp0aCB7CiAgICAtd2Via2l0LXVz
ZXItc2VsZWN0OiBub25lOwogICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKfQoKLnJlc3VsdHMt
cm93IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9CgoucmVzdWx0cy1yb3cgaWZyYW1l
LCAucmVzdWx0cy1yb3cgaW1nIHsKICAgIHdpZHRoOiA4MDBweDsKICAgIGhlaWdodDogNjAwcHg7
Cn0KCi5yZXN1bHRzLXJvd1tkYXRhLWV4cGFuZGVkPSJmYWxzZSJdIHsKICAgIGRpc3BsYXk6IG5v
bmU7Cn0KCiN0b29sYmFyIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHBhZGRpbmc6IDRweDsK
ICAgIHRvcDogMDsKICAgIHJpZ2h0OiAwOwogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICBiYWNr
Z3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKLmV4cGFuZC1idXR0b24gewogICAgYmFja2dyb3VuZC1j
b2xvcjogd2hpdGU7CiAgICBjb2xvcjogYmx1ZTsKICAgIHdpZHRoOiAxMXB4OwogICAgaGVpZ2h0
OiAxMXB4OwogICAgYm9yZGVyOiAxcHggc29saWQgYmx1ZTsKICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKICAgIG1hcmdpbjogMCAzcHggMCAwOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9Cgou
ZXhwYW5kLWJ1dHRvbi10ZXh0IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTAu
M2VtOwogICAgbGVmdDogMXB4Owp9Cgouc3RvcHBlZC1ydW5uaW5nLWVhcmx5LW1lc3NhZ2Ugewog
ICAgYm9yZGVyOiAzcHggc29saWQgI2QwMDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogM3B4Owp9CgoucmVzdWx0LWNvbnRhaW5l
ciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBib3JkZXI6IDFweCBzb2xpZCBncmF5
Owp9CgoucmVzdWx0LWNvbnRhaW5lciBpZnJhbWUsIC5yZXN1bHQtY29udGFpbmVyIGltZyB7CiAg
ICBib3JkZXI6IDA7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9Cgojb3B0aW9ucyB7CiAgICBi
YWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKI29wdGlvbnMtbWVudSB7CiAgICBib3JkZXI6IDFw
eCBzb2xpZDsKICAgIG1hcmdpbi10b3A6IDFweDsKICAgIHBhZGRpbmc6IDJweCA0cHg7CiAgICBi
b3gtc2hhZG93OiAycHggMnB4IDJweCAjODg4OwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFj
aXR5IC4yczsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAg
ICByaWdodDogNHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Cn0KCiNvcHRpb25zLW1l
bnUgbGFiZWwgewogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5oaWRkZW4tbWVudSB7CiAgICBwb2lu
dGVyLWV2ZW50czogbm9uZTsKICAgIG9wYWNpdHk6IDA7Cn0KCi5sYWJlbCB7CiAgICBwYWRkaW5n
LWxlZnQ6IDNweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZm9udC1zaXplOiBzbWFsbDsK
ICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBsaWdodGdyYXk7Cn0KCi5waXhlbC16b29tLWNv
bnRhaW5lciB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwog
ICAgd2lkdGg6IDEwMCU7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1t
b3otYm94OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3
aGl0ZTsKfQoKLnBpeGVsLXpvb20tY29udGFpbmVyID4gKiB7CiAgICAtd2Via2l0LWJveC1mbGV4
OiAxOwogICAgLW1vei1ib3gtZmxleDogMTsKICAgIGJvcmRlcjogMnB4IGluc2V0IGxpZ2h0Z3Jh
eTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB3aWR0aDogMDsKfQoKLnBpeGVsLXpvb20tY29u
dGFpbmVyIGltZyB7CiAgICB3aWR0aDogODAwcHg7CiAgICBoZWlnaHQ6IDYwMHB4OwogICAgdmVy
dGljYWwtYWxpZ246IHRvcDsKfQo8L3N0eWxlPgo8c3R5bGUgaWQ9InVuZXhwZWN0ZWQtc3R5bGUi
Pjwvc3R5bGU+Cgo8c2NyaXB0Pgp2YXIgZ19zdGF0ZTsKZnVuY3Rpb24gZ2xvYmFsU3RhdGUoKQp7
CiAgICBpZiAoIWdfc3RhdGUpIHsKICAgICAgICBnX3N0YXRlID0gewogICAgICAgICAgICBjcmFz
aFRlc3RzOiBbXSwKICAgICAgICAgICAgZmxha3lUZXN0czogW10sCiAgICAgICAgICAgIGhhc0h0
dHBUZXN0czogZmFsc2UsCiAgICAgICAgICAgIGhhc0ltYWdlRmFpbHVyZXM6IGZhbHNlLAogICAg
ICAgICAgICBoYXNUZXh0RmFpbHVyZXM6IGZhbHNlLAogICAgICAgICAgICBuZXdUZXN0czogW10s
CiAgICAgICAgICAgIHJlc3VsdHM6IHt9LAogICAgICAgICAgICBzaG91bGRUb2dnbGVJbWFnZXM6
IHRydWUsCiAgICAgICAgICAgIG5vbkZsYWt5RmFpbGluZ1Rlc3RzOiBbXSwKICAgICAgICAgICAg
dGVzdHNXaXRoU3RkZXJyOiBbXSwKICAgICAgICAgICAgdGltZW91dFRlc3RzOiBbXSwKICAgICAg
ICAgICAgdW5leHBlY3RlZFBhc3NUZXN0czogW10KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4g
Z19zdGF0ZTsKfQoKZnVuY3Rpb24gQUREX1JFU1VMVFMoaW5wdXQpCnsKICAgIGdsb2JhbFN0YXRl
KCkucmVzdWx0cyA9IGlucHV0Owp9Cjwvc2NyaXB0PgoKPHNjcmlwdCBzcmM9ImZ1bGxfcmVzdWx0
cy5qc29uIj48L3NjcmlwdD4KCjxzY3JpcHQ+CmZ1bmN0aW9uIHN0cmlwRXh0ZW5zaW9uKHRlc3Qp
CnsKICAgIHZhciBpbmRleCA9IHRlc3QubGFzdEluZGV4T2YoJy4nKTsKICAgIHJldHVybiB0ZXN0
LnN1YnN0cmluZygwLCBpbmRleCk7Cn0KCmZ1bmN0aW9uIG1hdGNoZXNTZWxlY3Rvcihub2RlLCBz
ZWxlY3RvcikKewogICAgaWYgKG5vZGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yKQogICAgICAgIHJl
dHVybiBub2RlLndlYmtpdE1hdGNoZXNTZWxlY3RvcihzZWxlY3Rvcik7CgogICAgaWYgKG5vZGUu
bW96TWF0Y2hlc1NlbGVjdG9yKQogICAgICAgIHJldHVybiBub2RlLm1vek1hdGNoZXNTZWxlY3Rv
cihzZWxlY3Rvcik7Cn0KCmZ1bmN0aW9uIHBhcmVudE9mVHlwZShub2RlLCBzZWxlY3RvcikKewog
ICAgd2hpbGUgKG5vZGUgPSBub2RlLnBhcmVudE5vZGUpIHsKICAgICAgICBpZiAobWF0Y2hlc1Nl
bGVjdG9yKG5vZGUsIHNlbGVjdG9yKSkKICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICB9CiAg
ICByZXR1cm4gbnVsbDsKfQoKCgpmdW5jdGlvbiByZW1vdmUobm9kZSkKewogICAgbm9kZS5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKG5vZGUpOwp9CgpmdW5jdGlvbiBmb3JFYWNoKG5vZGVMaXN0LCBo
YW5kbGVyKQp7CiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG5vZGVMaXN0LCBoYW5k
bGVyKTsKfQoKZnVuY3Rpb24gcmVzdWx0SWZyYW1lKHNyYykKewogICAgLy8gRklYTUU6IHVzZSBh
dWRpbyB0YWdzIGZvciBBVURJTyB0ZXN0cz8KICAgIHZhciBsYXlvdXRUZXN0c0luZGV4ID0gc3Jj
LmluZGV4T2YoJ0xheW91dFRlc3RzJyk7CiAgICB2YXIgbmFtZTsKICAgIGlmIChsYXlvdXRUZXN0
c0luZGV4ICE9IC0xKSB7CiAgICAgICAgdmFyIGhhc1RyYWMgPSBzcmMuaW5kZXhPZigndHJhYy53
ZWJraXQub3JnJykgIT0gLTE7CiAgICAgICAgdmFyIHByZWZpeCA9IGhhc1RyYWMgPyAndHJhYy53
ZWJraXQub3JnLy4uLi8nIDogJyc7CiAgICAgICAgbmFtZSA9IHByZWZpeCArIHNyYy5zdWJzdHJp
bmcobGF5b3V0VGVzdHNJbmRleCArICdMYXlvdXRUZXN0cy8nLmxlbmd0aCk7CiAgICB9IGVsc2Ug
ewogICAgICAgIHZhciBsYXN0RGFzaEluZGV4ID0gc3JjLmxhc3RJbmRleE9mKCctcHJldHR5Jyk7
CiAgICAgICAgaWYgKGxhc3REYXNoSW5kZXggPT0gLTEpCiAgICAgICAgICAgIGxhc3REYXNoSW5k
ZXggPSBzcmMubGFzdEluZGV4T2YoJy0nKTsKICAgICAgICBuYW1lID0gc3JjLnN1YnN0cmluZyhs
YXN0RGFzaEluZGV4ICsgMSk7CiAgICB9CgogICAgdmFyIHRhZ05hbWUgPSAoc3JjLmxhc3RJbmRl
eE9mKCcucG5nJykgPT0gLTEpID8gJ2lmcmFtZScgOiAnaW1nJzsKCiAgICBpZiAodGFnTmFtZSAh
PSAnaW1nJykKICAgICAgICBzcmMgKz0gJz9mb3JtYXQ9dHh0JzsKICAgIHJldHVybiAnPGRpdiBj
bGFzcz1yZXN1bHQtY29udGFpbmVyPjxkaXYgY2xhc3M9bGFiZWw+JyArIG5hbWUgKyAnPC9kaXY+
PCcgKyB0YWdOYW1lICsgJyBzcmM9IicgKyBzcmMgKyAnIj48LycgKyB0YWdOYW1lICsgJz48L2Rp
dj4nOwp9CgpmdW5jdGlvbiB0b2dnbGluZ0ltYWdlKHByZWZpeCkKewogICAgcmV0dXJuICc8ZGl2
IGNsYXNzPXJlc3VsdC1jb250YWluZXI+PGRpdiBjbGFzcz0ibGFiZWwgaW1hZ2VUZXh0Ij48L2Rp
dj48aW1nIGNsYXNzPWFuaW1hdGVkSW1hZ2UgZGF0YS1wcmVmaXg9IicgKwogICAgICAgIHByZWZp
eCArICciPjwvaW1nPjwvZGl2Pic7Cn0KCmZ1bmN0aW9uIHRvZ2dsZUV4cGVjdGF0aW9ucyhlKQp7
CiAgICB2YXIgZXhwYW5kTGluayA9IGUudGFyZ2V0OwogICAgaWYgKGV4cGFuZExpbmsuY2xhc3NO
YW1lICE9ICdleHBhbmQtYnV0dG9uLXRleHQnKQogICAgICAgIGV4cGFuZExpbmsgPSBleHBhbmRM
aW5rLnF1ZXJ5U2VsZWN0b3IoJy5leHBhbmQtYnV0dG9uLXRleHQnKTsKCiAgICBpZiAoZXhwYW5k
TGluay50ZXh0Q29udGVudCA9PSAnKycpCiAgICAgICAgZXhwYW5kRXhwZWN0YXRpb25zKGV4cGFu
ZExpbmspOwogICAgZWxzZQogICAgICAgIGNvbGxhcHNlRXhwZWN0YXRpb25zKGV4cGFuZExpbmsp
Owp9CgpmdW5jdGlvbiBjb2xsYXBzZUV4cGVjdGF0aW9ucyhleHBhbmRMaW5rKQp7CiAgICBleHBh
bmRMaW5rLnRleHRDb250ZW50ID0gJysnOwogICAgdmFyIGV4aXN0aW5nUmVzdWx0c1JvdyA9IHBh
cmVudE9mVHlwZShleHBhbmRMaW5rLCAndGJvZHknKS5xdWVyeVNlbGVjdG9yKCcucmVzdWx0cy1y
b3cnKTsKICAgIGlmIChleGlzdGluZ1Jlc3VsdHNSb3cpCiAgICAgICAgdXBkYXRlRXhwYW5kZWRT
dGF0ZShleGlzdGluZ1Jlc3VsdHNSb3csIGZhbHNlKTsKfQoKZnVuY3Rpb24gdXBkYXRlRXhwYW5k
ZWRTdGF0ZShyb3csIGlzRXhwYW5kZWQpCnsKICAgIHJvdy5zZXRBdHRyaWJ1dGUoJ2RhdGEtZXhw
YW5kZWQnLCBpc0V4cGFuZGVkKTsKICAgIHVwZGF0ZUltYWdlVG9nZ2xpbmdUaW1lcigpOwp9Cgpm
dW5jdGlvbiBhcHBlbmRIVE1MKG5vZGUsIGh0bWwpCnsKICAgIGlmIChub2RlLmluc2VydEFkamFj
ZW50SFRNTCkKICAgICAgICBub2RlLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlRW5kJywgaHRt
bCk7CiAgICBlbHNlCiAgICAgICAgbm9kZS5pbm5lckhUTUwgKz0gaHRtbDsKfQoKZnVuY3Rpb24g
ZXhwYW5kRXhwZWN0YXRpb25zKGV4cGFuZExpbmspCnsKICAgIHZhciByb3cgPSBwYXJlbnRPZlR5
cGUoZXhwYW5kTGluaywgJ3RyJyk7CiAgICB2YXIgcGFyZW50VGJvZHkgPSByb3cucGFyZW50Tm9k
ZTsKICAgIHZhciBleGlzdGluZ1Jlc3VsdHNSb3cgPSBwYXJlbnRUYm9keS5xdWVyeVNlbGVjdG9y
KCcucmVzdWx0cy1yb3cnKTsKICAgIAogICAgdmFyIGVuRGFzaCA9ICdcdTIwMTMnOwogICAgZXhw
YW5kTGluay50ZXh0Q29udGVudCA9IGVuRGFzaDsKICAgIGlmIChleGlzdGluZ1Jlc3VsdHNSb3cp
IHsKICAgICAgICB1cGRhdGVFeHBhbmRlZFN0YXRlKGV4aXN0aW5nUmVzdWx0c1JvdywgdHJ1ZSk7
CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICB2YXIgbmV3Um93ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgndHInKTsKICAgIG5ld1Jvdy5jbGFzc05hbWUgPSAncmVzdWx0cy1yb3cnOwog
ICAgdmFyIG5ld0NlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwogICAgbmV3Q2Vs
bC5jb2xTcGFuID0gcm93LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJykubGVuZ3RoOwoKICAgIHZhciBy
ZXN1bHRMaW5rcyA9IHJvdy5xdWVyeVNlbGVjdG9yQWxsKCcucmVzdWx0LWxpbmsnKTsKICAgIHZh
ciBoYXNUb2dnbGluZ0ltYWdlcyA9IGZhbHNlOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1
bHRMaW5rcy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBsaW5rID0gcmVzdWx0TGlua3NbaV07
CiAgICAgICAgdmFyIHJlc3VsdDsKICAgICAgICBpZiAobGluay50ZXh0Q29udGVudCA9PSAnaW1h
Z2VzJykgewogICAgICAgICAgICBoYXNUb2dnbGluZ0ltYWdlcyA9IHRydWU7CiAgICAgICAgICAg
IHJlc3VsdCA9IHRvZ2dsaW5nSW1hZ2UobGluay5nZXRBdHRyaWJ1dGUoJ2RhdGEtcHJlZml4Jykp
OwogICAgICAgIH0gZWxzZQogICAgICAgICAgICByZXN1bHQgPSByZXN1bHRJZnJhbWUobGluay5o
cmVmKTsKCiAgICAgICAgYXBwZW5kSFRNTChuZXdDZWxsLCByZXN1bHQpOyAgICAKICAgIH0KCiAg
ICBuZXdSb3cuYXBwZW5kQ2hpbGQobmV3Q2VsbCk7CiAgICBwYXJlbnRUYm9keS5hcHBlbmRDaGls
ZChuZXdSb3cpOwoKICAgIHVwZGF0ZUV4cGFuZGVkU3RhdGUobmV3Um93LCB0cnVlKTsKCiAgICB1
cGRhdGVJbWFnZVRvZ2dsaW5nVGltZXIoKTsKfQoKZnVuY3Rpb24gdXBkYXRlSW1hZ2VUb2dnbGlu
Z1RpbWVyKCkKewogICAgdmFyIGhhc1Zpc2libGVBbmltYXRlZEltYWdlID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignLnJlc3VsdHMtcm93W2RhdGEtZXhwYW5kZWQ9InRydWUiXSAuYW5pbWF0ZWRJ
bWFnZScpOwogICAgaWYgKCFoYXNWaXNpYmxlQW5pbWF0ZWRJbWFnZSkgewogICAgICAgIGNsZWFy
SW50ZXJ2YWwoZ2xvYmFsU3RhdGUoKS50b2dnbGluZ0ltYWdlSW50ZXJ2YWwpOwogICAgICAgIGds
b2JhbFN0YXRlKCkudG9nZ2xpbmdJbWFnZUludGVydmFsID0gbnVsbDsKICAgICAgICByZXR1cm47
CiAgICB9CgogICAgaWYgKCFnbG9iYWxTdGF0ZSgpLnRvZ2dsaW5nSW1hZ2VJbnRlcnZhbCkgewog
ICAgICAgIHRvZ2dsZUltYWdlcygpOwogICAgICAgIGdsb2JhbFN0YXRlKCkudG9nZ2xpbmdJbWFn
ZUludGVydmFsID0gc2V0SW50ZXJ2YWwodG9nZ2xlSW1hZ2VzLCAyMDAwKTsKICAgIH0KfQoKZnVu
Y3Rpb24gYXN5bmMoZnVuYywgYXJncykKewogICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgZnVu
Yy5hcHBseShudWxsLCBhcmdzKTsgfSwgMTAwKTsKfQoKZnVuY3Rpb24gdmlzaWJsZUV4cGFuZExp
bmtzKCkKewogICAgaWYgKG9ubHlTaG93VW5leHBlY3RlZEZhaWx1cmVzKCkpCiAgICAgICAgcmV0
dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3Rib2R5Om5vdCguZXhwZWN0ZWQpIC5leHBh
bmQtYnV0dG9uLXRleHQnKTsKICAgIGVsc2UKICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgnLmV4cGFuZC1idXR0b24tdGV4dCcpOwp9CgpmdW5jdGlvbiBleHBhbmRBbGxF
eHBlY3RhdGlvbnMoKQp7CiAgICB2YXIgZXhwYW5kTGlua3MgPSB2aXNpYmxlRXhwYW5kTGlua3Mo
KTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBleHBhbmRMaW5rcy5sZW5ndGg7IGkgPCBsZW47
IGkrKykKICAgICAgICBhc3luYyhleHBhbmRFeHBlY3RhdGlvbnMsIFtleHBhbmRMaW5rc1tpXV0p
Owp9CgpmdW5jdGlvbiBjb2xsYXBzZUFsbEV4cGVjdGF0aW9ucygpCnsKICAgIHZhciBleHBhbmRM
aW5rcyA9IHZpc2libGVFeHBhbmRMaW5rcygpOwogICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGV4
cGFuZExpbmtzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKQogICAgICAgIGFzeW5jKGNvbGxhcHNlRXhw
ZWN0YXRpb25zLCBbZXhwYW5kTGlua3NbaV1dKTsKfQoKZnVuY3Rpb24gc2hvdWxkVXNlVHJhY0xp
bmtzKCkKewogICAgcmV0dXJuICFnbG9iYWxTdGF0ZSgpLnJlc3VsdHMubGF5b3V0X3Rlc3RzX2Rp
ciB8fCAhbG9jYXRpb24udG9TdHJpbmcoKS5pbmRleE9mKCdmaWxlOi8vJykgPT0gMDsKfQoKZnVu
Y3Rpb24gdGVzdExpbmsodGVzdCkKewogICAgdmFyIGJhc2VQYXRoOwogICAgaWYgKHNob3VsZFVz
ZVRyYWNMaW5rcygpKSB7CiAgICAgICAgdmFyIHJldmlzaW9uID0gZ2xvYmFsU3RhdGUoKS5yZXN1
bHRzLnJldmlzaW9uOwogICAgICAgIGJhc2VQYXRoID0gJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcn
OwogICAgICAgIGJhc2VQYXRoICs9IHJldmlzaW9uID8gKCcvZXhwb3J0LycgKyByZXZpc2lvbikg
OiAnL2Jyb3dzZXInOwogICAgICAgIGJhc2VQYXRoICs9ICcvdHJ1bmsvTGF5b3V0VGVzdHMvJzsK
ICAgIH0gZWxzZQogICAgICAgIGJhc2VQYXRoID0gZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLmxheW91
dF90ZXN0c19kaXIgKyAnLyc7CiAgICByZXR1cm4gJzxhIGNsYXNzPXRlc3QtbGluayBocmVmPSIn
ICsgYmFzZVBhdGggKyB0ZXN0ICsgJyI+JyArIHRlc3QgKyAnPC9hPic7Cn0KCmZ1bmN0aW9uIHRl
c3RMaW5rV2l0aEV4cGFuZEJ1dHRvbih0ZXN0KQp7CiAgICByZXR1cm4gJzxzcGFuIGNsYXNzPWV4
cGFuZC1idXR0b24gb25jbGljaz0idG9nZ2xlRXhwZWN0YXRpb25zKGV2ZW50KSI+PHNwYW4gY2xh
c3M9ZXhwYW5kLWJ1dHRvbi10ZXh0Pis8L3NwYW4+PC9zcGFuPicgKyB0ZXN0TGluayh0ZXN0KTsK
fQoKZnVuY3Rpb24gcmVzdWx0TGluayh0ZXN0UHJlZml4LCBzdWZmaXgsIGNvbnRlbnRzKQp7CiAg
ICByZXR1cm4gJzxhIGNsYXNzPXJlc3VsdC1saW5rIGhyZWY9IicgKyB0ZXN0UHJlZml4ICsgc3Vm
Zml4ICsgJyIgZGF0YS1wcmVmaXg9IicgKyB0ZXN0UHJlZml4ICsgJyI+JyArIGNvbnRlbnRzICsg
JzwvYT4gJzsKfQoKZnVuY3Rpb24gaXNGYWlsdXJlRXhwZWN0ZWQoZXhwZWN0ZWQsIGFjdHVhbCkK
ewogICAgdmFyIGlzRXhwZWN0ZWQgPSB0cnVlOwogICAgaWYgKGFjdHVhbCAhPSAnU0tJUCcpIHsK
ICAgICAgICB2YXIgZXhwZWN0ZWRBcnJheSA9IGV4cGVjdGVkLnNwbGl0KCcgJyk7CiAgICAgICAg
dmFyIGFjdHVhbEFycmF5ID0gYWN0dWFsLnNwbGl0KCcgJyk7CiAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBhY3R1YWxBcnJheS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgYWN0dWFs
VmFsdWUgPSBhY3R1YWxBcnJheVtpXTsKICAgICAgICAgICAgaWYgKGV4cGVjdGVkQXJyYXkuaW5k
ZXhPZihhY3R1YWxWYWx1ZSkgPT0gLTEgJiYKICAgICAgICAgICAgICAgIChleHBlY3RlZEFycmF5
LmluZGV4T2YoJ0ZBSUwnKSA9PSAtMSB8fAogICAgICAgICAgICAgICAgIChhY3R1YWxWYWx1ZSAh
PSAnSU1BR0UnICYmIGFjdHVhbFZhbHVlICE9ICdURVhUJyAmJiBhY3R1YWxWYWx1ZSAhPSAnSU1B
R0UrVEVYVCcpKSkKICAgICAgICAgICAgICAgIGlzRXhwZWN0ZWQgPSBmYWxzZTsKICAgICAgICB9
CiAgICB9CiAgICByZXR1cm4gaXNFeHBlY3RlZDsKfQoKZnVuY3Rpb24gcHJvY2Vzc0dsb2JhbFN0
YXRlRm9yKHRlc3RPYmplY3QpCnsKICAgIHZhciB0ZXN0ID0gdGVzdE9iamVjdC5uYW1lOwogICAg
aWYgKHRlc3RPYmplY3QuaGFzX3N0ZGVycikKICAgICAgICBnbG9iYWxTdGF0ZSgpLnRlc3RzV2l0
aFN0ZGVyci5wdXNoKHRlc3RPYmplY3QpOwoKICAgIGdsb2JhbFN0YXRlKCkuaGFzSHR0cFRlc3Rz
ID0gZ2xvYmFsU3RhdGUoKS5oYXNIdHRwVGVzdHMgfHwgdGVzdC5pbmRleE9mKCdodHRwLycpID09
IDA7CgogICAgdmFyIGFjdHVhbCA9IHRlc3RPYmplY3QuYWN0dWFsOyAgICAKICAgIGlmIChhY3R1
YWwgPT0gJ01JU1NJTkcnKSB7CiAgICAgICAgLy8gRklYTUU6IG1ha2Ugc3VyZSB0aGF0IG5ldy1y
dW4td2Via2l0LXRlc3RzIHNwaXRzIG91dCBhbiAtYWN0dWFsLnR4dCBmaWxlIGZvcgogICAgICAg
IC8vIHRlc3RzIHdpdGggTUlTU0lORyByZXN1bHRzLgogICAgICAgIGdsb2JhbFN0YXRlKCkubmV3
VGVzdHMucHVzaCh0ZXN0T2JqZWN0KTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIGV4
cGVjdGVkID0gdGVzdE9iamVjdC5leHBlY3RlZCB8fCAnUEFTUyc7CiAgICBpZiAoZ2xvYmFsU3Rh
dGUoKS5yZXN1bHRzLnVzZXNfZXhwZWN0YXRpb25zX2ZpbGUpCiAgICAgICAgdGVzdE9iamVjdC5p
c0V4cGVjdGVkID0gaXNGYWlsdXJlRXhwZWN0ZWQoZXhwZWN0ZWQsIGFjdHVhbCk7CgogICAgaWYg
KGFjdHVhbC5pbmRleE9mKCcgJykgIT0gLTEpIHsKICAgICAgICBnbG9iYWxTdGF0ZSgpLmZsYWt5
VGVzdHMucHVzaCh0ZXN0T2JqZWN0KTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKGFj
dHVhbCA9PSAnUEFTUycgJiYgZXhwZWN0ZWQgIT0gJ1BBU1MnKSB7CiAgICAgICAgZ2xvYmFsU3Rh
dGUoKS51bmV4cGVjdGVkUGFzc1Rlc3RzLnB1c2godGVzdE9iamVjdCk7CiAgICAgICAgcmV0dXJu
OwogICAgfQoKICAgIGlmIChhY3R1YWwgPT0gJ0NSQVNIJyAmJiBleHBlY3RlZCAhPSAnQ1JBU0gn
KSB7CiAgICAgICAgZ2xvYmFsU3RhdGUoKS5jcmFzaFRlc3RzLnB1c2godGVzdE9iamVjdCk7CiAg
ICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmIChhY3R1YWwgPT0gJ1RJTUVPVVQnICYmIGV4cGVj
dGVkICE9ICdUSU1FT1VUJykgewogICAgICAgIGdsb2JhbFN0YXRlKCkudGltZW91dFRlc3RzLnB1
c2godGVzdE9iamVjdCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICBnbG9iYWxTdGF0
ZSgpLm5vbkZsYWt5RmFpbGluZ1Rlc3RzLnB1c2godGVzdE9iamVjdCk7Cn0KCmZ1bmN0aW9uIHRv
Z2dsZUltYWdlcygpCnsKICAgIHZhciBpbWFnZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCcuYW5pbWF0ZWRJbWFnZScpOwogICAgdmFyIGltYWdlVGV4dHMgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCcuaW1hZ2VUZXh0Jyk7CiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gaW1hZ2Vz
Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgdmFyIGltYWdlID0gaW1hZ2VzW2ldOwog
ICAgICAgIHZhciB0ZXh0ID0gaW1hZ2VUZXh0c1tpXTsKICAgICAgICBpZiAodGV4dC50ZXh0Q29u
dGVudCA9PSAnRXhwZWN0ZWQgSW1hZ2UnKSB7CiAgICAgICAgICAgIHRleHQudGV4dENvbnRlbnQg
PSAnQWN0dWFsIEltYWdlJzsKICAgICAgICAgICAgaW1hZ2Uuc3JjID0gaW1hZ2UuZ2V0QXR0cmli
dXRlKCdkYXRhLXByZWZpeCcpICsgJy1hY3R1YWwucG5nJzsKICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICB0ZXh0LnRleHRDb250ZW50ID0gJ0V4cGVjdGVkIEltYWdlJzsKICAgICAgICAgICAg
aW1hZ2Uuc3JjID0gaW1hZ2UuZ2V0QXR0cmlidXRlKCdkYXRhLXByZWZpeCcpICsgJy1leHBlY3Rl
ZC5wbmcnOwogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rpb24gdGV4dFJlc3VsdExpbmtzKHByZWZp
eCkKewogICAgdmFyIGh0bWwgPSByZXN1bHRMaW5rKHByZWZpeCwgJy1leHBlY3RlZC50eHQnLCAn
ZXhwZWN0ZWQnKSArCiAgICAgICAgcmVzdWx0TGluayhwcmVmaXgsICctYWN0dWFsLnR4dCcsICdh
Y3R1YWwnKSArCiAgICAgICAgcmVzdWx0TGluayhwcmVmaXgsICctZGlmZi50eHQnLCAnZGlmZicp
OwoKICAgIGlmIChnbG9iYWxTdGF0ZSgpLnJlc3VsdHMuaGFzX3ByZXR0eV9wYXRjaCkKICAgICAg
ICBodG1sICs9IHJlc3VsdExpbmsocHJlZml4LCAnLXByZXR0eS1kaWZmLmh0bWwnLCAncHJldHR5
IGRpZmYnKTsKCiAgICBpZiAoZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLmhhc193ZGlmZikKICAgICAg
ICBodG1sICs9IHJlc3VsdExpbmsocHJlZml4LCAnLXdkaWZmLmh0bWwnLCAnd2RpZmYnKTsKCiAg
ICByZXR1cm4gaHRtbDsKfQoKZnVuY3Rpb24gdGFibGVSb3codGVzdE9iamVjdCkKeyAgICAKICAg
IHZhciByb3cgPSAnPHRib2R5JwogICAgaWYgKGdsb2JhbFN0YXRlKCkucmVzdWx0cy51c2VzX2V4
cGVjdGF0aW9uc19maWxlKQogICAgICAgIHJvdyArPSAnIGNsYXNzPSInICsgKHRlc3RPYmplY3Qu
aXNFeHBlY3RlZCA/ICdleHBlY3RlZCcgOiAnJykgKyAnIic7CiAgICBpZiAodGVzdE9iamVjdC5p
c19taXNtYXRjaF9yZWZ0ZXN0KQogICAgICAgIHJvdyArPSAnIG1pc21hdGNocmVmdGVzdD10cnVl
JzsKICAgIHJvdyArPSAnPjx0cj4nOwoKICAgIHJvdyArPSAnPHRkPicgKyB0ZXN0TGlua1dpdGhF
eHBhbmRCdXR0b24odGVzdE9iamVjdC5uYW1lKSArICc8L3RkPic7CgogICAgdmFyIHRlc3RfcHJl
Zml4ID0gc3RyaXBFeHRlbnNpb24odGVzdE9iamVjdC5uYW1lKTsKICAgIHJvdyArPSAnPHRkPic7
CiAgICAKICAgIHZhciBhY3R1YWwgPSB0ZXN0T2JqZWN0LmFjdHVhbDsKICAgIGlmIChhY3R1YWwu
aW5kZXhPZignVEVYVCcpICE9IC0xKSB7CiAgICAgICAgZ2xvYmFsU3RhdGUoKS5oYXNUZXh0RmFp
bHVyZXMgPSB0cnVlOwogICAgICAgIHJvdyArPSB0ZXh0UmVzdWx0TGlua3ModGVzdF9wcmVmaXgp
OwogICAgfQogICAgCiAgICBpZiAoYWN0dWFsLmluZGV4T2YoJ0FVRElPJykgIT0gLTEpIHsKICAg
ICAgICByb3cgKz0gcmVzdWx0TGluayh0ZXN0X3ByZWZpeCwgJy1leHBlY3RlZC53YXYnLCAnZXhw
ZWN0ZWQgYXVkaW8nKTsKICAgICAgICByb3cgKz0gcmVzdWx0TGluayh0ZXN0X3ByZWZpeCwgJy1h
Y3R1YWwud2F2JywgJ2FjdHVhbCBhdWRpbycpOwogICAgfQoKICAgIHJvdyArPSAnPC90ZD48dGQ+
JzsKCiAgICBpZiAoYWN0dWFsLmluZGV4T2YoJ0lNQUdFJykgIT0gLTEpIHsKICAgICAgICBnbG9i
YWxTdGF0ZSgpLmhhc0ltYWdlRmFpbHVyZXMgPSB0cnVlOwoKICAgICAgICBpZiAodGVzdE9iamVj
dC5pc19taXNtYXRjaF9yZWZ0ZXN0KSB7CiAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRl
c3RfcHJlZml4LCAnLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnLCAncmVmIG1pc21hdGNoIGh0bWwn
KSArCiAgICAgICAgICAgICAgICByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLWFjdHVhbC5wbmcn
LCAnYWN0dWFsJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKHRlc3RPYmplY3Qu
aXNfcmVmdGVzdCkKICAgICAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RfcHJlZml4
LCAnLWV4cGVjdGVkLmh0bWwnLCAncmVmIGh0bWwnKTsKICAgICAgICAgICAgCiAgICAgICAgICAg
IGlmIChnbG9iYWxTdGF0ZSgpLnNob3VsZFRvZ2dsZUltYWdlcykgewogICAgICAgICAgICAgICAg
cm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctZGlmZnMuaHRtbCcsICdpbWFnZXMnKTsK
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRl
c3RfcHJlZml4LCAnLWV4cGVjdGVkLnBuZycsICdleHBlY3RlZCcpOwogICAgICAgICAgICAgICAg
cm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctYWN0dWFsLnBuZycsICdhY3R1YWwnKTsK
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gRklYTUU6IG9sZC1ydW4td2Via2l0LXRlc3Rz
IHNob3dzIHRoZSBkaWZmIHBlcmNlbnRhZ2UgYXMgdGhlIHRleHQgY29udGVudHMgb2YgdGhlICJk
aWZmIiBsaW5rLgogICAgICAgICAgICByb3cgKz0gcmVzdWx0TGluayh0ZXN0X3ByZWZpeCwgJy1k
aWZmLnBuZycsICdkaWZmJyk7CiAgICAgICAgfQogICAgfQoKICAgIHJvdyArPSAnPC90ZD4nOwoK
ICAgIGlmIChnbG9iYWxTdGF0ZSgpLnJlc3VsdHMudXNlc19leHBlY3RhdGlvbnNfZmlsZSB8fCBh
Y3R1YWwuaW5kZXhPZignICcpICE9IC0xKQogICAgICAgIHJvdyArPSAnPHRkPicgKyBhY3R1YWwg
KyAnPC90ZD4nOwoKICAgIGlmIChnbG9iYWxTdGF0ZSgpLnJlc3VsdHMudXNlc19leHBlY3RhdGlv
bnNfZmlsZSkKICAgICAgICByb3cgKz0gJzx0ZD4nICsgdGVzdE9iamVjdC5leHBlY3RlZCArICc8
L3RkPic7CgogICAgcm93ICs9ICc8L3RyPjwvdGJvZHk+JzsKICAgIHJldHVybiByb3c7Cn0KCmZ1
bmN0aW9uIGZvckVhY2hUZXN0KGhhbmRsZXIsIG9wdF90cmVlLCBvcHRfcHJlZml4KQp7CiAgICB2
YXIgdHJlZSA9IG9wdF90cmVlIHx8IGdsb2JhbFN0YXRlKCkucmVzdWx0cy50ZXN0czsKICAgIHZh
ciBwcmVmaXggPSBvcHRfcHJlZml4IHx8ICcnOwoKICAgIGZvciAodmFyIGtleSBpbiB0cmVlKSB7
CiAgICAgICAgdmFyIG5ld1ByZWZpeCA9IHByZWZpeCA/IChwcmVmaXggKyAnLycgKyBrZXkpIDog
a2V5OwogICAgICAgIGlmICgnYWN0dWFsJyBpbiB0cmVlW2tleV0pIHsKICAgICAgICAgICAgdmFy
IHRlc3RPYmplY3QgPSB0cmVlW2tleV07CiAgICAgICAgICAgIHRlc3RPYmplY3QubmFtZSA9IG5l
d1ByZWZpeDsKICAgICAgICAgICAgaGFuZGxlcih0ZXN0T2JqZWN0KTsKICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgZm9yRWFjaFRlc3QoaGFuZGxlciwgdHJlZVtrZXldLCBuZXdQcmVmaXgpOwog
ICAgfQp9CgpmdW5jdGlvbiBoYXNVbmV4cGVjdGVkKHRlc3RzKQp7CiAgICByZXR1cm4gdGVzdHMu
c29tZShmdW5jdGlvbiAodGVzdCkgeyByZXR1cm4gIXRlc3QuaXNFeHBlY3RlZDsgfSk7Cn0KCmZ1
bmN0aW9uIHRlc3RMaXN0KHRlc3RzLCBoZWFkZXIsIHRhYmxlSWQpCnsKICAgIHRlc3RzLnNvcnQo
KTsKCiAgICB2YXIgaHRtbCA9ICc8cD4nICsgaGVhZGVyICsgJzo8L3A+PHRhYmxlIGlkPSInICsg
dGFibGVJZCArICciJzsKICAgIGlmICghaGFzVW5leHBlY3RlZCh0ZXN0cykpCiAgICAgICAgaHRt
bCArPSAnIGNsYXNzPWV4cGVjdGVkJzsKICAgIGh0bWwgKz0gJz4nOwoKICAgIC8vIEZJWE1FOiBh
ZGQgdGhlIGV4cGVjdGVkIGZhaWx1cmUgY29sdW1uIGZvciBhbGwgdGhlIHRlc3QgbGlzdHMgaWYg
Z2xvYmFsU3RhdGUoKS5yZXN1bHRzLnVzZXNfZXhwZWN0YXRpb25zX2ZpbGUKICAgIGlmICh0YWJs
ZUlkID09ICdwYXNzZXMtdGFibGUnKQogICAgICAgIGh0bWwgKz0gJzx0aGVhZD48dGg+dGVzdDwv
dGg+PHRoPmV4cGVjdGVkIGZhaWx1cmU8L3RoPjwvdGhlYWQ+JzsKCiAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIHRlc3RPYmplY3QgPSB0ZXN0
c1tpXTsKICAgICAgICB2YXIgdGVzdCA9IHRlc3RPYmplY3QubmFtZTsKICAgICAgICBodG1sICs9
ICc8dGJvZHknOwogICAgICAgIGlmIChnbG9iYWxTdGF0ZSgpLnJlc3VsdHMudXNlc19leHBlY3Rh
dGlvbnNfZmlsZSkKICAgICAgICAgICAgaHRtbCArPSAnIGNsYXNzPSInICsgKHRlc3RPYmplY3Qu
aXNFeHBlY3RlZCA/ICdleHBlY3RlZCcgOiAnJykgKyAnIic7CiAgICAgICAgaHRtbCArPSAnPjx0
cj48dGQ+JzsKICAgICAgICBodG1sICs9ICh0YWJsZUlkID09ICdwYXNzZXMtdGFibGUnKSA/IHRl
c3RMaW5rKHRlc3QpIDogdGVzdExpbmtXaXRoRXhwYW5kQnV0dG9uKHRlc3QpOwogICAgICAgIGh0
bWwgKz0gJzwvdGQ+PHRkPic7CgogICAgICAgIGlmICh0YWJsZUlkID09ICdzdGRlcnItdGFibGUn
KQogICAgICAgICAgICBodG1sICs9IHJlc3VsdExpbmsoc3RyaXBFeHRlbnNpb24odGVzdCksICct
c3RkZXJyLnR4dCcsICdzdGRlcnInKTsKICAgICAgICBlbHNlIGlmICh0YWJsZUlkID09ICdwYXNz
ZXMtdGFibGUnKQogICAgICAgICAgICBodG1sICs9IHRlc3RPYmplY3QuZXhwZWN0ZWQ7CiAgICAg
ICAgZWxzZSBpZiAodGFibGVJZCA9PSAnY3Jhc2gtdGVzdHMtdGFibGUnKQogICAgICAgICAgICBo
dG1sICs9IHJlc3VsdExpbmsoc3RyaXBFeHRlbnNpb24odGVzdCksICctY3Jhc2gtbG9nLnR4dCcs
ICdjcmFzaCBsb2cnKTsKICAgICAgICBlbHNlIGlmICh0YWJsZUlkID09ICd0aW1lb3V0LXRlc3Rz
LXRhYmxlJykgewogICAgICAgICAgICAvLyBGSVhNRTogb25seSBpbmNsdWRlIHRpbWVvdXQgYWN0
dWFsL2RpZmYgcmVzdWx0cyBoZXJlIGlmIHdlIGFjdHVhbGx5IHNwaXQgb3V0IHJlc3VsdHMgZm9y
IHRpbWVvdXQgdGVzdHMuCiAgICAgICAgICAgIGh0bWwgKz0gdGV4dFJlc3VsdExpbmtzKHN0cmlw
RXh0ZW5zaW9uKHRlc3QpKTsKICAgICAgICB9IGVsc2UgaWYgKHRhYmxlSWQgPT0gJ25ldy10ZXN0
cy10YWJsZScpIHsKICAgICAgICAgICAgaWYgKHRlc3RPYmplY3QuaXNfbWlzc2luZ19hdWRpbykK
ICAgICAgICAgICAgICAgIGh0bWwgKz0gcmVzdWx0TGluayhzdHJpcEV4dGVuc2lvbih0ZXN0KSwg
Jy1hY3R1YWwud2F2JywgJ2F1ZGlvIHJlc3VsdCcpOwogICAgICAgICAgICBpZiAodGVzdE9iamVj
dC5pc19taXNzaW5nX3RleHQpCiAgICAgICAgICAgICAgICBodG1sICs9IHJlc3VsdExpbmsoc3Ry
aXBFeHRlbnNpb24odGVzdCksICctYWN0dWFsLnR4dCcsICdyZXN1bHQnKTsKICAgICAgICAgICAg
aWYgKHRlc3RPYmplY3QuaXNfbWlzc2luZ19pbWFnZSkKICAgICAgICAgICAgICAgIGh0bWwgKz0g
cmVzdWx0TGluayhzdHJpcEV4dGVuc2lvbih0ZXN0KSwgJy1hY3R1YWwucG5nJywgJ3BuZyByZXN1
bHQnKTsKICAgICAgICB9IAogICAgICAgIAogICAgICAgIGh0bWwgKz0gJzwvdGQ+PC90cj48L3Ri
b2R5Pic7CiAgICB9CiAgICBodG1sICs9ICc8L3RhYmxlPic7CiAgICByZXR1cm4gaHRtbDsKfQoK
ZnVuY3Rpb24gdG9BcnJheShub2RlTGlzdCkKewogICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5z
bGljZS5jYWxsKG5vZGVMaXN0KTsKfQoKZnVuY3Rpb24gdHJpbShzdHJpbmcpCnsKICAgIHJldHVy
biBzdHJpbmcucmVwbGFjZSgvXltcc1x4YTBdK3xbXHNceGEwXSskL2csICcnKTsKfQoKLy8gSnVz
dCBhIG5hbWVzcGFjZSBmb3IgY29kZSBtYW5hZ2VtZW50Lgp2YXIgVGFibGVTb3J0ZXIgPSB7fTsK
ClRhYmxlU29ydGVyLl9mb3J3YXJkQXJyb3cgPSAnPHN2ZyBzdHlsZT0id2lkdGg6MTBweDtoZWln
aHQ6MTBweCI+PHBvbHlnb24gcG9pbnRzPSIwLDAgMTAsMCA1LDEwIiBzdHlsZT0iZmlsbDojY2Nj
Ij48L3N2Zz4nOwoKVGFibGVTb3J0ZXIuX2JhY2t3YXJkQXJyb3cgPSAnPHN2ZyBzdHlsZT0id2lk
dGg6MTBweDtoZWlnaHQ6MTBweCI+PHBvbHlnb24gcG9pbnRzPSIwLDEwIDEwLDEwIDUsMCIgc3R5
bGU9ImZpbGw6I2NjYyI+PC9zdmc+JzsKClRhYmxlU29ydGVyLl9zb3J0ZWRDb250ZW50cyA9IGZ1
bmN0aW9uKGhlYWRlciwgYXJyb3cpCnsKICAgIHJldHVybiBhcnJvdyArICcgJyArIHRyaW0oaGVh
ZGVyLnRleHRDb250ZW50KSArICcgJyArIGFycm93Owp9CgpUYWJsZVNvcnRlci5fdXBkYXRlSGVh
ZGVyQ2xhc3NOYW1lcyA9IGZ1bmN0aW9uKG5ld0hlYWRlcikKewogICAgdmFyIHNvcnRIZWFkZXIg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc29ydEhlYWRlcicpOwogICAgaWYgKHNvcnRIZWFk
ZXIpIHsKICAgICAgICBpZiAoc29ydEhlYWRlciA9PSBuZXdIZWFkZXIpIHsKICAgICAgICAgICAg
dmFyIGlzQWxyZWFkeVJldmVyc2VkID0gc29ydEhlYWRlci5jbGFzc0xpc3QuY29udGFpbnMoJ3Jl
dmVyc2VkJyk7CiAgICAgICAgICAgIGlmIChpc0FscmVhZHlSZXZlcnNlZCkKICAgICAgICAgICAg
ICAgIHNvcnRIZWFkZXIuY2xhc3NMaXN0LnJlbW92ZSgncmV2ZXJzZWQnKTsKICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgc29ydEhlYWRlci5jbGFzc0xpc3QuYWRkKCdyZXZlcnNlZCcp
OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNvcnRIZWFkZXIudGV4dENvbnRlbnQgPSBz
b3J0SGVhZGVyLnRleHRDb250ZW50OwogICAgICAgICAgICBzb3J0SGVhZGVyLmNsYXNzTGlzdC5y
ZW1vdmUoJ3NvcnRIZWFkZXInKTsKICAgICAgICAgICAgc29ydEhlYWRlci5jbGFzc0xpc3QucmVt
b3ZlKCdyZXZlcnNlZCcpOwogICAgICAgIH0KICAgIH0KCiAgICBuZXdIZWFkZXIuY2xhc3NMaXN0
LmFkZCgnc29ydEhlYWRlcicpOwp9CgpUYWJsZVNvcnRlci5fdGV4dENvbnRlbnQgPSBmdW5jdGlv
bih0Ym9keVJvdywgY29sdW1uKQp7CiAgICByZXR1cm4gdGJvZHlSb3cucXVlcnlTZWxlY3RvckFs
bCgndGQnKVtjb2x1bW5dLnRleHRDb250ZW50Owp9CgpUYWJsZVNvcnRlci5fc29ydFJvd3MgPSBm
dW5jdGlvbihuZXdIZWFkZXIsIHJldmVyc2VkKQp7CiAgICB2YXIgdGVzdHNUYWJsZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzLXRhYmxlJyk7CiAgICB2YXIgaGVhZGVycyA9IHRv
QXJyYXkodGVzdHNUYWJsZS5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpKTsKICAgIHZhciBzb3J0Q29s
dW1uID0gaGVhZGVycy5pbmRleE9mKG5ld0hlYWRlcik7CgogICAgdmFyIHJvd3MgPSB0b0FycmF5
KHRlc3RzVGFibGUucXVlcnlTZWxlY3RvckFsbCgndGJvZHknKSk7CgogICAgcm93cy5zb3J0KGZ1
bmN0aW9uKGEsIGIpIHsKICAgICAgICAvLyBPbmx5IG5lZWQgdG8gc3VwcG9ydCBsZXhpY29ncmFw
aGljIHNvcnQgZm9yIG5vdy4KICAgICAgICB2YXIgYVRleHQgPSBUYWJsZVNvcnRlci5fdGV4dENv
bnRlbnQoYSwgc29ydENvbHVtbik7CiAgICAgICAgdmFyIGJUZXh0ID0gVGFibGVTb3J0ZXIuX3Rl
eHRDb250ZW50KGIsIHNvcnRDb2x1bW4pOwogICAgICAgIAogICAgICAgIC8vIEZvcndhcmQgc29y
dCBlcXVhbCB2YWx1ZXMgYnkgdGVzdCBuYW1lLgogICAgICAgIGlmIChzb3J0Q29sdW1uICYmIGFU
ZXh0ID09IGJUZXh0KSB7CiAgICAgICAgICAgIHZhciBhVGVzdE5hbWUgPSBUYWJsZVNvcnRlci5f
dGV4dENvbnRlbnQoYSwgMCk7CiAgICAgICAgICAgIHZhciBiVGVzdE5hbWUgPSBUYWJsZVNvcnRl
ci5fdGV4dENvbnRlbnQoYiwgMCk7CiAgICAgICAgICAgIGlmIChhVGVzdE5hbWUgPT0gYlRlc3RO
YW1lKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIHJldHVybiBhVGVzdE5h
bWUgPCBiVGVzdE5hbWUgPyAtMSA6IDE7CiAgICAgICAgfQoKICAgICAgICBpZiAocmV2ZXJzZWQp
CiAgICAgICAgICAgIHJldHVybiBhVGV4dCA8IGJUZXh0ID8gMSA6IC0xOwogICAgICAgIGVsc2UK
ICAgICAgICAgICAgcmV0dXJuIGFUZXh0IDwgYlRleHQgPyAtMSA6IDE7CiAgICB9KTsKCiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspCiAgICAgICAgdGVzdHNUYWJsZS5h
cHBlbmRDaGlsZChyb3dzW2ldKTsKfQoKVGFibGVTb3J0ZXIuc29ydENvbHVtbiA9IGZ1bmN0aW9u
KGNvbHVtbk51bWJlcikKewogICAgdmFyIG5ld0hlYWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXN1bHRzLXRhYmxlJykucXVlcnlTZWxlY3RvckFsbCgndGgnKVtjb2x1bW5OdW1iZXJd
OwogICAgVGFibGVTb3J0ZXIuX3NvcnQobmV3SGVhZGVyKTsKfQoKVGFibGVTb3J0ZXIuaGFuZGxl
Q2xpY2sgPSBmdW5jdGlvbihlKQp7CiAgICB2YXIgbmV3SGVhZGVyID0gZS50YXJnZXQ7CiAgICBp
ZiAobmV3SGVhZGVyLmxvY2FsTmFtZSAhPSAndGgnKQogICAgICAgIHJldHVybjsKICAgIFRhYmxl
U29ydGVyLl9zb3J0KG5ld0hlYWRlcik7Cn0KClRhYmxlU29ydGVyLl9zb3J0ID0gZnVuY3Rpb24o
bmV3SGVhZGVyKQp7CiAgICBUYWJsZVNvcnRlci5fdXBkYXRlSGVhZGVyQ2xhc3NOYW1lcyhuZXdI
ZWFkZXIpOwogICAgCiAgICB2YXIgcmV2ZXJzZWQgPSBuZXdIZWFkZXIuY2xhc3NMaXN0LmNvbnRh
aW5zKCdyZXZlcnNlZCcpOwogICAgdmFyIHNvcnRBcnJvdyA9IHJldmVyc2VkID8gVGFibGVTb3J0
ZXIuX2JhY2t3YXJkQXJyb3cgOiBUYWJsZVNvcnRlci5fZm9yd2FyZEFycm93OwogICAgbmV3SGVh
ZGVyLmlubmVySFRNTCA9IFRhYmxlU29ydGVyLl9zb3J0ZWRDb250ZW50cyhuZXdIZWFkZXIsIHNv
cnRBcnJvdyk7CiAgICAKICAgIFRhYmxlU29ydGVyLl9zb3J0Um93cyhuZXdIZWFkZXIsIHJldmVy
c2VkKTsKfQoKdmFyIFBpeGVsWm9vbWVyID0ge307CgpQaXhlbFpvb21lci5zaG93T25EZWxheSA9
IHRydWU7CgpQaXhlbFpvb21lci5fem9vbUZhY3RvciA9IDY7CgpQaXhlbFpvb21lci5fem9vbUlt
YWdlQ29udGFpbmVyID0gZnVuY3Rpb24odXJsKQp7CiAgICB2YXIgY29udGFpbmVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBjb250YWluZXIuY2xhc3NOYW1lID0gJ3pvb20t
aW1hZ2UtY29udGFpbmVyJzsKCiAgICB2YXIgdGl0bGUgPSB1cmwubWF0Y2goL1wtKFteXC1dKilc
LnBuZy8pWzFdOwogICAgY29udGFpbmVyLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPWxhYmVsPicg
KyB0aXRsZSArICc8L2Rpdj48Y2FudmFzPjwvY2FudmFzPic7ICAgIAogICAgCiAgICB2YXIgY2Fu
dmFzID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpOyAgICAKICAgIGNhbnZhcy5i
YWNraW5nSW1hZ2UgPSBuZXcgSW1hZ2UoKTsKICAgIGNhbnZhcy5iYWNraW5nSW1hZ2Uub25sb2Fk
ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgY2FudmFzLmJhY2tpbmdJbWFnZUlzTG9hZGVkID0gdHJ1
ZTsKICAgICAgICBQaXhlbFpvb21lci5fZHJhd0FsbCgpOwogICAgfQogICAgY2FudmFzLmJhY2tp
bmdJbWFnZS5zcmMgPSB1cmw7CiAgICByZXR1cm4gY29udGFpbmVyOwp9CgpQaXhlbFpvb21lci5f
Y3JlYXRlQ29udGFpbmVyID0gZnVuY3Rpb24oZSkKewogICAgdmFyIHRib2R5ID0gcGFyZW50T2ZU
eXBlKGUudGFyZ2V0LCAndGJvZHknKTsKICAgIHZhciByb3cgPSB0Ym9keS5xdWVyeVNlbGVjdG9y
KCd0cicpOwogICAgdmFyIGltYWdlRGlmZkxpbmtzID0gcm93LnF1ZXJ5U2VsZWN0b3JBbGwoJ2Fb
aHJlZiQ9Ii5wbmciXScpOwogICAgCiAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CiAgICBjb250YWluZXIuY2xhc3NOYW1lID0gJ3BpeGVsLXpvb20tY29u
dGFpbmVyJzsKICAgIAogICAgdmFyIGh0bWwgPSAnJzsKICAgIAogICAgdmFyIHRvZ2dsaW5nSW1h
Z2VMaW5rID0gcm93LnF1ZXJ5U2VsZWN0b3IoJ2FbaHJlZiQ9Ii1kaWZmcy5odG1sIl0nKTsKICAg
IGlmICh0b2dnbGluZ0ltYWdlTGluaykgewogICAgICAgIHZhciBwcmVmaXggPSB0b2dnbGluZ0lt
YWdlTGluay5nZXRBdHRyaWJ1dGUoJ2RhdGEtcHJlZml4Jyk7CiAgICAgICAgY29udGFpbmVyLmFw
cGVuZENoaWxkKFBpeGVsWm9vbWVyLl96b29tSW1hZ2VDb250YWluZXIocHJlZml4ICsgJy1leHBl
Y3RlZC5wbmcnKSk7CiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKFBpeGVsWm9vbWVyLl96
b29tSW1hZ2VDb250YWluZXIocHJlZml4ICsgJy1hY3R1YWwucG5nJykpOwogICAgfQogICAgCiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGltYWdlRGlmZkxpbmtzLmxlbmd0aDsgaSsrKQogICAgICAg
IGNvbnRhaW5lci5hcHBlbmRDaGlsZChQaXhlbFpvb21lci5fem9vbUltYWdlQ29udGFpbmVyKGlt
YWdlRGlmZkxpbmtzW2ldLmhyZWYpKTsKCiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNv
bnRhaW5lcik7CiAgICBQaXhlbFpvb21lci5fZHJhd0FsbCgpOwp9CgpQaXhlbFpvb21lci5fZHJh
dyA9IGZ1bmN0aW9uKGNhbnZhcykKewogICAgaWYgKCFjYW52YXMuYmFja2luZ0ltYWdlSXNMb2Fk
ZWQpCiAgICAgICAgcmV0dXJuOwoKICAgIHZhciBkZXN0aW5hdGlvbldpZHRoID0gTWF0aC5mbG9v
cihkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoIC8gMykgKyAxMDA7CiAgICB2YXIgZGVzdGluYXRp
b25IZWlnaHQgPSAzMDA7CiAgICAKICAgIHZhciBzb3VyY2VXaWR0aCA9IE1hdGguY2VpbChkZXN0
aW5hdGlvbldpZHRoIC8gUGl4ZWxab29tZXIuX3pvb21GYWN0b3IpOwogICAgdmFyIHNvdXJjZUhl
aWdodCA9IE1hdGguY2VpbChkZXN0aW5hdGlvbkhlaWdodCAvIFBpeGVsWm9vbWVyLl96b29tRmFj
dG9yKTsKCiAgICBjYW52YXMud2lkdGggPSBkZXN0aW5hdGlvbldpZHRoOwogICAgY2FudmFzLmhl
aWdodCA9IGRlc3RpbmF0aW9uSGVpZ2h0OwogICAgCiAgICB2YXIgc3RhcnRYID0gTWF0aC5mbG9v
cihQaXhlbFpvb21lci5fY3VycmVudFggLSBzb3VyY2VXaWR0aCAvIDIpOwogICAgdmFyIHN0YXJ0
WSA9IE1hdGguZmxvb3IoUGl4ZWxab29tZXIuX2N1cnJlbnRZIC0gc291cmNlSGVpZ2h0IC8gMik7
CiAgICAgICAgCiAgICBzdGFydFggPSBNYXRoLm1heChzdGFydFgsIDApOwogICAgc3RhcnRYID0g
TWF0aC5taW4oc3RhcnRYLCA4MDAgLSBzb3VyY2VXaWR0aCk7CiAgICAKICAgIHN0YXJ0WSA9IE1h
dGgubWF4KHN0YXJ0WSwgMCk7CiAgICBzdGFydFkgPSBNYXRoLm1pbihzdGFydFksIDYwMCAtIHNv
dXJjZUhlaWdodCk7CgogICAgdmFyIHNvdXJjZU51bVBpeGVscyA9IDE7CiAgICB2YXIgZGVzdGlu
YXRpb25OdW1QaXhlbHMgPSBQaXhlbFpvb21lci5fem9vbUZhY3RvcjsKICAgIHZhciBjb250ZXh0
ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CiAgICBmb3IgKHZhciBzb3VyY2VYID0gc3RhcnRY
OyBzb3VyY2VYIDwgc3RhcnRYICsgc291cmNlV2lkdGg7IHNvdXJjZVgrKykgewogICAgICAgIGZv
ciAodmFyIHNvdXJjZVkgPSBzdGFydFk7IHNvdXJjZVkgPCBzdGFydFkgKyBzb3VyY2VIZWlnaHQ7
IHNvdXJjZVkrKykgewogICAgICAgICAgICB2YXIgZGVzdGluYXRpb25YID0gUGl4ZWxab29tZXIu
X3pvb21GYWN0b3IgKiAoc291cmNlWCAtIHN0YXJ0WCk7CiAgICAgICAgICAgIHZhciBkZXN0aW5h
dGlvblkgPSBQaXhlbFpvb21lci5fem9vbUZhY3RvciAqIChzb3VyY2VZIC0gc3RhcnRZKTsgICAg
ICAgICAgICAKICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoY2FudmFzLmJhY2tpbmdJbWFn
ZSwgc291cmNlWCwgc291cmNlWSwgc291cmNlTnVtUGl4ZWxzLCBzb3VyY2VOdW1QaXhlbHMsCiAg
ICAgICAgICAgICAgICBkZXN0aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgZGVzdGluYXRpb25OdW1Q
aXhlbHMsIGRlc3RpbmF0aW9uTnVtUGl4ZWxzKTsgICAgICAgICAgICAKICAgICAgICB9CiAgICB9
Cn0KClBpeGVsWm9vbWVyLl9kcmF3QWxsID0gZnVuY3Rpb24oKQp7CiAgICBmb3JFYWNoKGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5waXhlbC16b29tLWNvbnRhaW5lciBjYW52YXMnKSwgUGl4
ZWxab29tZXIuX2RyYXcpOwp9CgpQaXhlbFpvb21lci5oYW5kbGVNb3VzZU91dCA9IGZ1bmN0aW9u
KGUpCnsKICAgIGlmIChlLnJlbGF0ZWRUYXJnZXQgJiYgZS5yZWxhdGVkVGFyZ2V0LnRhZ05hbWUg
IT0gJ0lGUkFNRScpCiAgICAgICAgcmV0dXJuOwoKICAgIC8vIElmIGUucmVsYXRlZFRhcmdldCBp
cyBudWxsLCB3ZSd2ZSBtb3VzZWQgb3V0IG9mIHRoZSBkb2N1bWVudC4KICAgIHZhciBjb250YWlu
ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGl4ZWwtem9vbS1jb250YWluZXInKTsKICAg
IGlmIChjb250YWluZXIpCiAgICAgICAgcmVtb3ZlKGNvbnRhaW5lcik7Cn0KClBpeGVsWm9vbWVy
LmhhbmRsZU1vdXNlTW92ZSA9IGZ1bmN0aW9uKGUpIHsKICAgIGlmIChQaXhlbFpvb21lci5fbW91
c2VNb3ZlVGltZW91dCkKICAgICAgICBjbGVhclRpbWVvdXQoUGl4ZWxab29tZXIuX21vdXNlTW92
ZVRpbWVvdXQpOwoKICAgIGlmIChwYXJlbnRPZlR5cGUoZS50YXJnZXQsICcucGl4ZWwtem9vbS1j
b250YWluZXInKSkKICAgICAgICByZXR1cm47CgogICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJy5waXhlbC16b29tLWNvbnRhaW5lcicpOwogICAgCiAgICB2YXIgcmVz
dWx0Q29udGFpbmVyID0gKGUudGFyZ2V0LmNsYXNzTmFtZSA9PSAncmVzdWx0LWNvbnRhaW5lcicp
ID8KICAgICAgICBlLnRhcmdldCA6IHBhcmVudE9mVHlwZShlLnRhcmdldCwgJy5yZXN1bHQtY29u
dGFpbmVyJyk7CiAgICBpZiAoIXJlc3VsdENvbnRhaW5lciB8fCAhcmVzdWx0Q29udGFpbmVyLnF1
ZXJ5U2VsZWN0b3IoJ2ltZycpKSB7CiAgICAgICAgaWYgKGNvbnRhaW5lcikKICAgICAgICAgICAg
cmVtb3ZlKGNvbnRhaW5lcik7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICB2YXIgdGFy
Z2V0TG9jYXRpb24gPSBlLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIFBpeGVs
Wm9vbWVyLl9jdXJyZW50WCA9IGUuY2xpZW50WCAtIHRhcmdldExvY2F0aW9uLmxlZnQ7CiAgICBQ
aXhlbFpvb21lci5fY3VycmVudFkgPSBlLmNsaWVudFkgLSB0YXJnZXRMb2NhdGlvbi50b3A7Cgog
ICAgaWYgKCFjb250YWluZXIpIHsKICAgICAgICBpZiAoUGl4ZWxab29tZXIuc2hvd09uRGVsYXkp
IHsKICAgICAgICAgICAgUGl4ZWxab29tZXIuX21vdXNlTW92ZVRpbWVvdXQgPSBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgUGl4ZWxab29tZXIuX2NyZWF0ZUNvbnRhaW5l
cihlKTsKICAgICAgICAgICAgfSwgMjAwKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0K
CiAgICAgICAgUGl4ZWxab29tZXIuX2NyZWF0ZUNvbnRhaW5lcihlKTsKICAgICAgICByZXR1cm47
CiAgICB9CiAgICAKICAgIFBpeGVsWm9vbWVyLl9kcmF3QWxsKCk7Cn0KCmRvY3VtZW50LmFkZEV2
ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIFBpeGVsWm9vbWVyLmhhbmRsZU1vdXNlTW92ZSwgZmFs
c2UpOwpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIFBpeGVsWm9vbWVyLmhh
bmRsZU1vdXNlT3V0LCBmYWxzZSk7CgpmdW5jdGlvbiBvbmx5U2hvd1VuZXhwZWN0ZWRGYWlsdXJl
cygpCnsKICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndW5leHBlY3RlZC1yZXN1
bHRzJykuY2hlY2tlZDsKfQoKZnVuY3Rpb24gaGFuZGxlVW5leHBlY3RlZFJlc3VsdHNDaGFuZ2Uo
KQp7CiAgICBPcHRpb25Xcml0ZXIuc2F2ZSgpOwogICAgdXBkYXRlRXhwZWN0ZWRGYWlsdXJlcygp
Owp9CgpmdW5jdGlvbiB1cGRhdGVFeHBlY3RlZEZhaWx1cmVzKCkKewogICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3VuZXhwZWN0ZWQtc3R5bGUnKS5pbm5lclRleHQgPSBvbmx5U2hvd1VuZXhw
ZWN0ZWRGYWlsdXJlcygpID8KICAgICAgICAnLmV4cGVjdGVkIHsgZGlzcGxheTogbm9uZTsgfScg
OiAnJzsKfQoKdmFyIE9wdGlvbldyaXRlciA9IHt9OwoKT3B0aW9uV3JpdGVyLl9rZXkgPSAncnVu
LXdlYmtpdC10ZXN0cy1vcHRpb25zJzsKCk9wdGlvbldyaXRlci5zYXZlID0gZnVuY3Rpb24oKQp7
CiAgICB2YXIgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xhYmVsIGlucHV0
Jyk7CiAgICB2YXIgZGF0YSA9IHt9OwogICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG9wdGlvbnMu
bGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICB2YXIgb3B0aW9uID0gb3B0aW9uc1tpXTsK
ICAgICAgICBkYXRhW29wdGlvbi5pZF0gPSBvcHRpb24uY2hlY2tlZDsKICAgIH0KICAgIGxvY2Fs
U3RvcmFnZS5zZXRJdGVtKE9wdGlvbldyaXRlci5fa2V5LCBKU09OLnN0cmluZ2lmeShkYXRhKSk7
Cn0KCk9wdGlvbldyaXRlci5hcHBseSA9IGZ1bmN0aW9uKCkKewogICAgdmFyIGpzb24gPSBsb2Nh
bFN0b3JhZ2UuZ2V0SXRlbShPcHRpb25Xcml0ZXIuX2tleSk7CiAgICBpZiAoIWpzb24pIHsKICAg
ICAgICB1cGRhdGVBbGxPcHRpb25zKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBk
YXRhID0gSlNPTi5wYXJzZShqc29uKTsKICAgIGZvciAodmFyIGlkIGluIGRhdGEpIHsKICAgICAg
ICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgICAgaWYgKGlu
cHV0KQogICAgICAgICAgICBpbnB1dC5jaGVja2VkID0gZGF0YVtpZF07CiAgICB9CiAgICB1cGRh
dGVBbGxPcHRpb25zKCk7Cn0KCmZ1bmN0aW9uIHVwZGF0ZUFsbE9wdGlvbnMoKQp7CiAgICBmb3JF
YWNoKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNvcHRpb25zLW1lbnUgaW5wdXQnKSwgZnVu
Y3Rpb24oaW5wdXQpIHsgaW5wdXQub25jaGFuZ2UoKTsgfSk7Cn0KCmZ1bmN0aW9uIGhhbmRsZVRv
Z2dsZUltYWdlc0NoYW5nZSgpCnsKICAgIE9wdGlvbldyaXRlci5zYXZlKCk7CiAgICB1cGRhdGVU
b2dnbGluZ0ltYWdlcygpOwp9CgpmdW5jdGlvbiB1cGRhdGVUb2dnbGluZ0ltYWdlcygpCnsKICAg
IHZhciBzaG91bGRUb2dnbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9nZ2xlLWltYWdl
cycpLmNoZWNrZWQ7CiAgICBnbG9iYWxTdGF0ZSgpLnNob3VsZFRvZ2dsZUltYWdlcyA9IHNob3Vs
ZFRvZ2dsZTsKICAgIAogICAgaWYgKHNob3VsZFRvZ2dsZSkgewogICAgICAgIGZvckVhY2goZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGJvZHk6bm90KFttaXNtYXRjaHJlZnRlc3RdKSBhW2hy
ZWYkPSIucG5nIl0nKSwgY29udmVydFRvVG9nZ2xpbmdIYW5kbGVyKGZ1bmN0aW9uKHByZWZpeCkg
ewogICAgICAgICAgICByZXR1cm4gcmVzdWx0TGluayhwcmVmaXgsICctZGlmZnMuaHRtbCcsICdp
bWFnZXMnKTsKICAgICAgICB9KSk7CiAgICAgICAgZm9yRWFjaChkb2N1bWVudC5xdWVyeVNlbGVj
dG9yQWxsKCd0Ym9keTpub3QoW21pc21hdGNocmVmdGVzdF0pIGltZ1tzcmMkPSIucG5nIl0nKSwg
Y29udmVydFRvVG9nZ2xpbmdIYW5kbGVyKHRvZ2dsaW5nSW1hZ2UpKTsKICAgIH0gZWxzZSB7CiAg
ICAgICAgZm9yRWFjaChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWYkPSItZGlmZnMu
aHRtbCJdJyksIGNvbnZlcnRUb05vblRvZ2dsaW5nSGFuZGxlcihyZXN1bHRMaW5rKSk7CiAgICAg
ICAgZm9yRWFjaChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYW5pbWF0ZWRJbWFnZScpLCBj
b252ZXJ0VG9Ob25Ub2dnbGluZ0hhbmRsZXIoZnVuY3Rpb24gKGFic29sdXRlUHJlZml4LCBzdWZm
aXgpIHsKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdElmcmFtZShhYnNvbHV0ZVByZWZpeCArIHN1
ZmZpeCk7CiAgICAgICAgfSkpOwogICAgfQoKICAgIHVwZGF0ZUltYWdlVG9nZ2xpbmdUaW1lcigp
Owp9CgpmdW5jdGlvbiBnZXRSZXN1bHRDb250YWluZXIobm9kZSkKewogICAgcmV0dXJuIChub2Rl
LnRhZ05hbWUgPT0gJ0lNRycpID8gcGFyZW50T2ZUeXBlKG5vZGUsICcucmVzdWx0LWNvbnRhaW5l
cicpIDogbm9kZTsKfQoKZnVuY3Rpb24gY29udmVydFRvVG9nZ2xpbmdIYW5kbGVyKHRvZ2dsaW5n
SW1hZ2VGdW5jdGlvbikKewogICAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHsKICAgICAgICB2YXIg
dXJsID0gKG5vZGUudGFnTmFtZSA9PSAnSU1HJykgPyBub2RlLnNyYyA6IG5vZGUuaHJlZjsKICAg
ICAgICBpZiAodXJsLm1hdGNoKCctZXhwZWN0ZWQucG5nJCcpKQogICAgICAgICAgICByZW1vdmUo
Z2V0UmVzdWx0Q29udGFpbmVyKG5vZGUpKTsKICAgICAgICBlbHNlIGlmICh1cmwubWF0Y2goJy1h
Y3R1YWwucG5nJCcpKSB7CiAgICAgICAgICAgIHZhciBuYW1lID0gcGFyZW50T2ZUeXBlKG5vZGUs
ICd0Ym9keScpLnF1ZXJ5U2VsZWN0b3IoJy50ZXN0LWxpbmsnKS50ZXh0Q29udGVudDsKICAgICAg
ICAgICAgZ2V0UmVzdWx0Q29udGFpbmVyKG5vZGUpLm91dGVySFRNTCA9IHRvZ2dsaW5nSW1hZ2VG
dW5jdGlvbihzdHJpcEV4dGVuc2lvbihuYW1lKSk7CiAgICAgICAgfSAgIAogICAgfQp9CgpmdW5j
dGlvbiBjb252ZXJ0VG9Ob25Ub2dnbGluZ0hhbmRsZXIocmVzdWx0RnVuY3Rpb24pCnsKICAgIHJl
dHVybiBmdW5jdGlvbihub2RlKSB7CiAgICAgICAgdmFyIHByZWZpeCA9IG5vZGUuZ2V0QXR0cmli
dXRlKCdkYXRhLXByZWZpeCcpOwogICAgICAgIGdldFJlc3VsdENvbnRhaW5lcihub2RlKS5vdXRl
ckhUTUwgPSByZXN1bHRGdW5jdGlvbihwcmVmaXgsICctZXhwZWN0ZWQucG5nJywgJ2V4cGVjdGVk
JykgKyByZXN1bHRGdW5jdGlvbihwcmVmaXgsICctYWN0dWFsLnBuZycsICdhY3R1YWwnKTsKICAg
IH0KfQoKZnVuY3Rpb24gdG9nZ2xlT3B0aW9uc01lbnUoKQp7CiAgICB2YXIgbWVudSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdvcHRpb25zLW1lbnUnKTsKICAgIG1lbnUuY2xhc3NOYW1lID0g
KG1lbnUuY2xhc3NOYW1lID09ICdoaWRkZW4tbWVudScpID8gJycgOiAnaGlkZGVuLW1lbnUnOwp9
CgpmdW5jdGlvbiBoYW5kbGVNb3VzZURvd24oZSkKewogICAgaWYgKCFwYXJlbnRPZlR5cGUoZS50
YXJnZXQsICcjb3B0aW9ucy1tZW51JykgJiYgZS50YXJnZXQuaWQgIT0gJ29wdGlvbnMtbGluaycp
CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29wdGlvbnMtbWVudScpLmNsYXNzTmFt
ZSA9ICdoaWRkZW4tbWVudSc7Cn0KCmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93
bicsIGhhbmRsZU1vdXNlRG93biwgZmFsc2UpOwoKZnVuY3Rpb24gZmFpbGluZ1Rlc3RzVGFibGUo
dGVzdHMsIHRpdGxlLCBpZCkKewogICAgaWYgKCF0ZXN0cy5sZW5ndGgpCiAgICAgICAgcmV0dXJu
ICcnOwoKICAgIHZhciB0YWJsZVJvd0h0bWwgPSAnJzsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGVzdHMubGVuZ3RoOyBpKyspCiAgICAgICAgdGFibGVSb3dIdG1sICs9IHRhYmxlUm93KHRlc3Rz
W2ldKTsKCiAgICB2YXIgaGVhZGVyID0gJzxkaXYnOwogICAgaWYgKCFoYXNVbmV4cGVjdGVkKHRl
c3RzKSkKICAgICAgICBoZWFkZXIgKz0gJyBjbGFzcz1leHBlY3RlZCc7CgogICAgaGVhZGVyICs9
ICc+PHA+JyArIHRpdGxlICsgJzo8L3A+JyArCiAgICAgICAgJzx0YWJsZSBpZD0iJyArIGlkICsg
JyI+PHRoZWFkPjx0cj4nICsKICAgICAgICAnPHRoPnRlc3Q8L3RoPicgKwogICAgICAgICc8dGgg
aWQ9InRleHQtcmVzdWx0cy1oZWFkZXIiPnJlc3VsdHM8L3RoPicgKwogICAgICAgICc8dGggaWQ9
ImltYWdlLXJlc3VsdHMtaGVhZGVyIj5pbWFnZSByZXN1bHRzPC90aD4nOwoKICAgIGlmIChnbG9i
YWxTdGF0ZSgpLnJlc3VsdHMudXNlc19leHBlY3RhdGlvbnNfZmlsZSkKICAgICAgICBoZWFkZXIg
Kz0gJzx0aD5hY3R1YWwgZmFpbHVyZTwvdGg+PHRoPmV4cGVjdGVkIGZhaWx1cmU8L3RoPic7Cgog
ICAgaWYgKGlkID09ICdmbGFreS10ZXN0cy10YWJsZScpCiAgICAgICAgaGVhZGVyICs9ICc8dGg+
ZmFpbHVyZXM8L3RoPic7CgogICAgaGVhZGVyICs9ICc8L3RyPjwvdGhlYWQ+JzsKCgogICAgcmV0
dXJuIGhlYWRlciArIHRhYmxlUm93SHRtbCArICc8L3RhYmxlPjwvZGl2Pic7Cn0KCgpmdW5jdGlv
biBnZW5lcmF0ZVBhZ2UoKQp7CiAgICBmb3JFYWNoVGVzdChwcm9jZXNzR2xvYmFsU3RhdGVGb3Ip
OwoKICAgIHZhciBodG1sID0gJzxkaXYgaWQ9dG9vbGJhcj4nICsKICAgICAgICAnPGEgaHJlZj0i
amF2YXNjcmlwdDp2b2lkKCkiIG9uY2xpY2s9ImV4cGFuZEFsbEV4cGVjdGF0aW9ucygpIj5leHBh
bmQgYWxsPC9hPiAnICsKICAgICAgICAnPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKCkiIG9uY2xp
Y2s9ImNvbGxhcHNlQWxsRXhwZWN0YXRpb25zKCkiPmNvbGxhcHNlIGFsbDwvYT4gJyArCiAgICAg
ICAgJzxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgpIiBpZD1vcHRpb25zLWxpbmsgb25jbGljaz0i
dG9nZ2xlT3B0aW9uc01lbnUoKSI+b3B0aW9uczwvYT4nICsKICAgICAgICAnPGRpdiBpZD1vcHRp
b25zLW1lbnUgY2xhc3M9aGlkZGVuLW1lbnU+JyArCiAgICAgICAgICAgICc8bGFiZWw+PGlucHV0
IGlkPSJ1bmV4cGVjdGVkLXJlc3VsdHMiIHR5cGU9Y2hlY2tib3ggY2hlY2tlZCBvbmNoYW5nZT0i
aGFuZGxlVW5leHBlY3RlZFJlc3VsdHNDaGFuZ2UoKSI+T25seSB1bmV4cGVjdGVkIHJlc3VsdHM8
L2xhYmVsPicgKwogICAgICAgICAgICAnPGxhYmVsPjxpbnB1dCBpZD0idG9nZ2xlLWltYWdlcyIg
dHlwZT1jaGVja2JveCBjaGVja2VkIG9uY2hhbmdlPSJoYW5kbGVUb2dnbGVJbWFnZXNDaGFuZ2Uo
KSI+VG9nZ2xlIGltYWdlczwvbGFiZWw+JyArCiAgICAgICAgJzwvZGl2PjwvZGl2Pic7CgogICAg
aWYgKGdsb2JhbFN0YXRlKCkucmVzdWx0cy5pbnRlcnJ1cHRlZCkKICAgICAgICBodG1sICs9ICI8
cCBjbGFzcz0nc3RvcHBlZC1ydW5uaW5nLWVhcmx5LW1lc3NhZ2UnPlRlc3RpbmcgZXhpdGVkIGVh
cmx5LjwvcD4iCgogICAgaHRtbCArPSBmYWlsaW5nVGVzdHNUYWJsZShnbG9iYWxTdGF0ZSgpLm5v
bkZsYWt5RmFpbGluZ1Rlc3RzLAogICAgICAgICdUZXN0cyB3aGVyZSByZXN1bHRzIGRpZCBub3Qg
bWF0Y2ggZXhwZWN0ZWQgcmVzdWx0cycsICdyZXN1bHRzLXRhYmxlJyk7CgogICAgaHRtbCArPSBm
YWlsaW5nVGVzdHNUYWJsZShnbG9iYWxTdGF0ZSgpLmZsYWt5VGVzdHMsCiAgICAgICAgJ0ZsYWt5
IHRlc3RzIChmYWlsZWQgdGhlIGZpcnN0IHJ1biBhbmQgZ290IGEgZGlmZmVyZW50IHJlc3VsdCBv
biByZXRyeSknLCAnZmxha3ktdGVzdHMtdGFibGUnKTsKCiAgICBpZiAoZ2xvYmFsU3RhdGUoKS5j
cmFzaFRlc3RzLmxlbmd0aCkKICAgICAgICBodG1sICs9IHRlc3RMaXN0KGdsb2JhbFN0YXRlKCku
Y3Jhc2hUZXN0cywgJ1Rlc3RzIHRoYXQgY3Jhc2hlZCcsICdjcmFzaC10ZXN0cy10YWJsZScpOwoK
ICAgIGlmIChnbG9iYWxTdGF0ZSgpLnRpbWVvdXRUZXN0cy5sZW5ndGgpCiAgICAgICAgaHRtbCAr
PSB0ZXN0TGlzdChnbG9iYWxTdGF0ZSgpLnRpbWVvdXRUZXN0cywgJ1Rlc3RzIHRoYXQgdGltZWQg
b3V0JywgJ3RpbWVvdXQtdGVzdHMtdGFibGUnKTsKCiAgICBpZiAoZ2xvYmFsU3RhdGUoKS5uZXdU
ZXN0cy5sZW5ndGgpCiAgICAgICAgaHRtbCArPSB0ZXN0TGlzdChnbG9iYWxTdGF0ZSgpLm5ld1Rl
c3RzLCAnVGVzdHMgdGhhdCBoYWQgbm8gZXhwZWN0ZWQgcmVzdWx0cyAocHJvYmFibHkgbmV3KScs
ICduZXctdGVzdHMtdGFibGUnKTsKCiAgICBpZiAoZ2xvYmFsU3RhdGUoKS50ZXN0c1dpdGhTdGRl
cnIubGVuZ3RoKQogICAgICAgIGh0bWwgKz0gdGVzdExpc3QoZ2xvYmFsU3RhdGUoKS50ZXN0c1dp
dGhTdGRlcnIsICdUZXN0cyB0aGF0IGhhZCBzdGRlcnIgb3V0cHV0JywgJ3N0ZGVyci10YWJsZScp
OwoKICAgIGlmIChnbG9iYWxTdGF0ZSgpLnJlc3VsdHMudXNlc19leHBlY3RhdGlvbnNfZmlsZSAm
JiBnbG9iYWxTdGF0ZSgpLnVuZXhwZWN0ZWRQYXNzVGVzdHMubGVuZ3RoKQogICAgICAgIGh0bWwg
Kz0gdGVzdExpc3QoZ2xvYmFsU3RhdGUoKS51bmV4cGVjdGVkUGFzc1Rlc3RzLCAnVGVzdHMgZXhw
ZWN0ZWQgdG8gZmFpbCBidXQgcGFzc2VkJywgJ3Bhc3Nlcy10YWJsZScpOwoKICAgIGlmIChnbG9i
YWxTdGF0ZSgpLmhhc0h0dHBUZXN0cykgewogICAgICAgIGh0bWwgKz0gJzxwPmh0dHBkIGFjY2Vz
cyBsb2c6IDxhIGhyZWY9ImFjY2Vzc19sb2cudHh0Ij5hY2Nlc3NfbG9nLnR4dDwvYT48L3A+JyAr
CiAgICAgICAgICAgICc8cD5odHRwZCBlcnJvciBsb2c6IDxhIGhyZWY9ImVycm9yX2xvZy50eHQi
PmVycm9yX2xvZy50eHQ8L2E+PC9wPic7CiAgICB9CgogICAgZG9jdW1lbnQuYm9keS5pbm5lckhU
TUwgPSBodG1sOwoKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0cy10YWJs
ZScpKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHMtdGFibGUnKS5h
ZGRFdmVudExpc3RlbmVyKCdjbGljaycsIFRhYmxlU29ydGVyLmhhbmRsZUNsaWNrLCBmYWxzZSk7
CiAgICAgICAgVGFibGVTb3J0ZXIuc29ydENvbHVtbigwKTsKICAgICAgICBpZiAoIWdsb2JhbFN0
YXRlKCkucmVzdWx0cy51c2VzX2V4cGVjdGF0aW9uc19maWxlKQogICAgICAgICAgICBwYXJlbnRP
ZlR5cGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VuZXhwZWN0ZWQtcmVzdWx0cycpLCAnbGFi
ZWwnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIGlmICghZ2xvYmFsU3RhdGUoKS5o
YXNUZXh0RmFpbHVyZXMpCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0
LXJlc3VsdHMtaGVhZGVyJykudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICBpZiAoIWdsb2JhbFN0
YXRlKCkuaGFzSW1hZ2VGYWlsdXJlcykgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaW1hZ2UtcmVzdWx0cy1oZWFkZXInKS50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAg
ICBwYXJlbnRPZlR5cGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvZ2dsZS1pbWFnZXMnKSwg
J2xhYmVsJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICB9CiAgICB9CgogICAgT3B0
aW9uV3JpdGVyLmFwcGx5KCk7Cn0KPC9zY3JpcHQ+CjwhLS0gSEFDSzogd2hlbiBqc29uX3Jlc3Vs
dHNfdGVzdC5qcyBpcyBpbmNsdWRlZCwgbG9hZGluZyB0aGlzIHBhZ2UgcnVucyB0aGUgdGVzdHMu
Ckl0IGlzIG5vdCBjb3BpZWQgdG8gdGhlIGxheW91dC10ZXN0LXJlc3VsdHMgb3V0cHV0IGRpcmVj
dG9yeS4gLS0+CjxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVzdWx0cy10ZXN0LmpzIj48L3Njcmlw
dD4KPGJvZHkgb25sb2FkPSJnZW5lcmF0ZVBhZ2UoKSI+PC9ib2R5Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>