<?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>118891</bug_id>
          
          <creation_ts>2013-07-18 22:06:36 -0700</creation_ts>
          <short_desc>Make PerformanceTests/Layout/line-layout.html 2.6-2.9% faster</short_desc>
          <delta_ts>2013-07-25 17:34:30 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>118322</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BlinkMergeCandidate, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>ggaren</cc>
    
    <cc>hyatt</cc>
    
    <cc>koivisto</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>910005</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-07-18 22:06:36 -0700</bug_when>
    <thetext>Merge https://chromium.googlesource.com/chromium/blink/+/5d93a708887e75f0157ed95ecdea9dfd1b2b4a09

I was looking at this performance test in pprof or an unrelated reason and
noticed that we were spending 2% of our time clearing a Vector. Rather than
clearing the Vector, we can just set its size to 0 and avoid calling malloc and
free for each iteration of the loop. The Vector is held in a local variable, so
we&apos;ll reclaim its storage when the function returns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910006</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-07-18 22:07:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/14489987&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910032</commentid>
    <comment_count>2</comment_count>
      <attachid>207062</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-07-19 00:50:33 -0700</bug_when>
    <thetext>Created attachment 207062
Perf difference (2.65-2.96%)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910035</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-07-19 00:51:29 -0700</bug_when>
    <thetext>This is crazy because m_boxes is always empty (!!!), meaning that our implementation of Vector::clear() performs significantly worse than Vector::reset(0).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910047</commentid>
    <comment_count>4</comment_count>
      <attachid>207067</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-07-19 01:39:52 -0700</bug_when>
    <thetext>Created attachment 207067
More diff

Increasing the inline capacity to 64 didn&apos;t have any effect as expected.

Apparently this code is insanely hot. Just adding the code in clear() reduces the perf. win to 1.86%:

inline void TrailingObjects::clear()
{
    m_whitespace = 0;
    m_boxes.resize(0);
    if (m_boxes.size() &gt; 200000)
        m_boxes.clear();
}

This is shockingly terrifying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910051</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-07-19 01:53:53 -0700</bug_when>
    <thetext>I&apos;ve confirmed that the perf. gain comes from optimizing the text node path. This is frightening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910054</commentid>
    <comment_count>6</comment_count>
      <attachid>207071</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-07-19 01:57:07 -0700</bug_when>
    <thetext>Created attachment 207071
Adding more clear() calls

Adding 3 more (hopefully) no-op clear() calls to the text node path worsens the result by roughly 5%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910242</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-07-19 10:54:17 -0700</bug_when>
    <thetext>I believe this is covered by https://bugs.webkit.org/show_bug.cgi?id=118322.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911823</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-07-25 17:34:30 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 118322 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>207062</attachid>
            <date>2013-07-19 00:50:33 -0700</date>
            <delta_ts>2013-07-19 00:50:33 -0700</delta_ts>
            <desc>Perf difference (2.65-2.96%)</desc>
            <filename>line-layout.html</filename>
            <type>text/html</type>
            <size>26059</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gJ1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9yZXNvdXJjZXMv
ZHJvbWFlby93ZWIvbGliL2pxdWVyeS0xLjYuNC5qcyc7CiAgICB2YXIgcGx1Z2lucyA9IFsnUGVy
Zm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LmZsb3QubWluLmpzJywgJ1BlcmZvcm1hbmNl
VGVzdHMvcmVzb3VyY2VzL2pxdWVyeS50YWJsZXNvcnRlci5taW4uanMnLAogICAgICAgICdQZXJm
b3JtYW5jZVRlc3RzL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzJ107CiAgICB2YXIgbG9jYWxQYXRo
ID0gJy9Wb2x1bWVzL0RhdGEvc2FmYXJpL09wZW5Tb3VyY2UnOwogICAgdmFyIHJlbW90ZVBhdGgg
PSAnaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuayc7CiAgICB2
YXIgbnVtYmVyT2ZGYWlsdXJlcyA9IDA7CiAgICB2YXIgc3RhcnRlZExvYWRpbmdQbHVnaW5zID0g
ZmFsc2U7CiAgICB2YXIgbnVtYmVyT2ZMb2FkZWRQbHVnaW5zID0gMDsKCiAgICBmdW5jdGlvbiBs
b2FkU2NyaXB0KHNyYywgbG9hZGVkLCBmYWlsZWQpIHsKICAgICAgICB2YXIgc2NyaXB0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1
ZTsKICAgICAgICBzY3JpcHQuc3JjID0gc3JjOwogICAgICAgIHNjcmlwdC5vbmxvYWQgPSBsb2Fk
ZWQ7CiAgICAgICAgaWYgKGZhaWxlZCkKICAgICAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSBmYWls
ZWQ7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwogICAgfQoKICAg
IGZ1bmN0aW9uIGxvYWRQbHVnaW5zKHRydW5rUGF0aCkgewogICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcGx1Z2lucy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgbG9hZFNjcmlwdCh0cnVua1Bh
dGggKyAnLycgKyBwbHVnaW5zW2ldLCBsb2FkZWRQbHVnaW4sIGNyZWF0ZUZhaWxlZFRvTG9hZFBs
dWdpbihwbHVnaW5zW2ldKSk7CiAgICB9CgogICAgZnVuY3Rpb24gbG9hZGVkUGx1Z2luKCkgewog
ICAgICAgIG51bWJlck9mTG9hZGVkUGx1Z2lucysrOwogICAgICAgIGlmIChudW1iZXJPZkxvYWRl
ZFBsdWdpbnMgPT0gcGx1Z2lucy5sZW5ndGgpCiAgICAgICAgICAgIHNldFRpbWVvdXQoaW5pdCwg
MCk7ICAgICAgICAgICAgCiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlRmFpbGVkVG9Mb2FkUGx1
Z2luKHBsdWdpbikgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGFsZXJ0KCJGYWlsZWQg
dG8gbG9hZCAiICsgcGx1Z2luKTsgfQogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZUxvYWRlZEpR
dWVyeSh0cnVua1BhdGgpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBsb2FkUGx1Z2lu
cyh0cnVua1BhdGgpOyB9CiAgICB9CgogICAgbG9hZFNjcmlwdChsb2NhbFBhdGggKyAnLycgKyBq
UXVlcnksCiAgICAgICAgY3JlYXRlTG9hZGVkSlF1ZXJ5KGxvY2FsUGF0aCksCiAgICAgICAgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICBsb2FkU2NyaXB0KHJlbW90ZVBhdGggKyAnLycgKyBqUXVl
cnksCiAgICAgICAgICAgICAgICBjcmVhdGVMb2FkZWRKUXVlcnkocmVtb3RlUGF0aCksCiAgICAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7IGFsZXJ0KCJGYWlsZWQgdG8gbG9hZCBqUXVlcnkuIik7
IH0pOwogICAgICAgIH0pOwp9KSgpOwoKZnVuY3Rpb24gVGVzdFJlc3VsdChtZXRyaWMsIHZhbHVl
cywgYXNzb2NpYXRlZFJ1bikgewogICAgaWYgKHZhbHVlc1swXSBpbnN0YW5jZW9mIEFycmF5KSB7
CiAgICAgICAgdmFyIGZsYXR0ZW5lZFZhbHVlcyA9IFtdOwogICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKQogICAgICAgICAgICBmbGF0dGVuZWRWYWx1ZXMgPSBm
bGF0dGVuZWRWYWx1ZXMuY29uY2F0KHZhbHVlc1tpXSk7CiAgICAgICAgdmFsdWVzID0gZmxhdHRl
bmVkVmFsdWVzOwogICAgfQoKICAgIHRoaXMudGVzdCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1l
dHJpYzsgfQogICAgdGhpcy52YWx1ZXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB2YWx1ZXMubWFw
KGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gbWV0cmljLnNjYWxpbmdGYWN0b3IoKSAqIHZhbHVl
OyB9KTsgfQogICAgdGhpcy51bnNjYWxlZE1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBTdGF0
aXN0aWNzLnN1bSh2YWx1ZXMpIC8gdmFsdWVzLmxlbmd0aDsgfQogICAgdGhpcy5tZWFuID0gZnVu
Y3Rpb24gKCkgeyByZXR1cm4gbWV0cmljLnNjYWxpbmdGYWN0b3IoKSAqIHRoaXMudW5zY2FsZWRN
ZWFuKCk7IH0KICAgIHRoaXMubWluID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbWV0cmljLnNjYWxp
bmdGYWN0b3IoKSAqIFN0YXRpc3RpY3MubWluKHZhbHVlcyk7IH0KICAgIHRoaXMubWF4ID0gZnVu
Y3Rpb24gKCkgeyByZXR1cm4gbWV0cmljLnNjYWxpbmdGYWN0b3IoKSAqIFN0YXRpc3RpY3MubWF4
KHZhbHVlcyk7IH0KICAgIHRoaXMuY29uZmlkZW5jZUludGVydmFsRGVsdGEgPSBmdW5jdGlvbiAo
KSB7CiAgICAgICAgcmV0dXJuIG1ldHJpYy5zY2FsaW5nRmFjdG9yKCkgKiBTdGF0aXN0aWNzLmNv
bmZpZGVuY2VJbnRlcnZhbERlbHRhKDAuOTUsIHZhbHVlcy5sZW5ndGgsCiAgICAgICAgICAgIFN0
YXRpc3RpY3Muc3VtKHZhbHVlcyksIFN0YXRpc3RpY3Muc3F1YXJlU3VtKHZhbHVlcykpOwogICAg
fQogICAgdGhpcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YVJhdGlvID0gZnVuY3Rpb24gKCkgeyBy
ZXR1cm4gdGhpcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSgpIC8gdGhpcy5tZWFuKCk7IH0KICAg
IHRoaXMucGVyY2VudERpZmZlcmVuY2UgPSBmdW5jdGlvbihvdGhlcikgeyByZXR1cm4gKG90aGVy
LnVuc2NhbGVkTWVhbigpIC0gdGhpcy51bnNjYWxlZE1lYW4oKSkgLyB0aGlzLnVuc2NhbGVkTWVh
bigpOyB9CiAgICB0aGlzLmlzU3RhdGlzdGljYWxseVNpZ25pZmljYW50ID0gZnVuY3Rpb24gKG90
aGVyKSB7CiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhvdGhlci5tZWFuKCkgLSB0aGlzLm1l
YW4oKSk7CiAgICAgICAgcmV0dXJuIGRpZmYgPiB0aGlzLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRh
KCkgJiYgZGlmZiA+IG90aGVyLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKCk7CiAgICB9CiAgICB0
aGlzLnJ1biA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRSdW47IH0KfQoKZnVuY3Rp
b24gVGVzdFJ1bihlbnRyeSkgewogICAgdGhpcy5kZXNjcmlwdGlvbiA9IGZ1bmN0aW9uICgpIHsg
cmV0dXJuIGVudHJ5WydkZXNjcmlwdGlvbiddOyB9CiAgICB0aGlzLndlYmtpdFJldmlzaW9uID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ3JldmlzaW9ucyddWydXZWJLaXQnXVsncmV2aXNp
b24nXTsgfQogICAgdGhpcy5sYWJlbCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgbGFiZWwg
PSAncicgKyB0aGlzLndlYmtpdFJldmlzaW9uKCk7CiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRp
b24oKSkKICAgICAgICAgICAgbGFiZWwgKz0gJyAmZGFzaDsgJyArIHRoaXMuZGVzY3JpcHRpb24o
KTsKICAgICAgICByZXR1cm4gbGFiZWw7CiAgICB9Cn0KCmZ1bmN0aW9uIFBlcmZUZXN0TWV0cmlj
KG5hbWUsIG1ldHJpYykgewogICAgdmFyIHRlc3RSZXN1bHRzID0gW107CiAgICB2YXIgY2FjaGVk
VW5pdCA9IG51bGw7CiAgICB2YXIgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IG51bGw7CiAgICB2YXIg
dW5pdCA9IHsnRnJhbWVSYXRlJzogJ2ZwcycsICdSdW5zJzogJ3J1bnMvcycsICdUaW1lJzogJ21z
JywgJ01hbGxvYyc6ICdieXRlcycsICdKU0hlYXAnOiAnYnl0ZXMnfVttZXRyaWNdOwoKICAgIC8v
IFdlIGNhbid0IGRvIHRoaXMgaW4gVGVzdFJlc3VsdCBiZWNhdXNlIGFsbCByZXN1bHRzIGZvciBl
YWNoIHRlc3QgbmVlZCB0byBzaGFyZSB0aGUgc2FtZSB1bml0IGFuZCB0aGUgc2FtZSBzY2FsaW5n
IGZhY3Rvci4KICAgIGZ1bmN0aW9uIGNvbXB1dGVTY2FsaW5nRmFjdG9ySWZOZWVkZWQoKSB7CiAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBhZGp1c3RpbmcgdW5pdHMgb24gZXZlcnkg
dGVzdCByZXN1bHQuCiAgICAgICAgLy8gV2UgY2FuIG9ubHkgZG8gdGhpcyBvbiB0aGUgZmlyc3Qg
dGVzdC4KICAgICAgICBpZiAoIXRlc3RSZXN1bHRzLmxlbmd0aCB8fCBjYWNoZWRVbml0KQogICAg
ICAgICAgICByZXR1cm47CgogICAgICAgIHZhciBtZWFuID0gdGVzdFJlc3VsdHNbMF0udW5zY2Fs
ZWRNZWFuKCk7IC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayBhdCBhbGwgdmFsdWVzLgogICAgICAg
IHZhciBraWxvID0gdW5pdCA9PSAnYnl0ZXMnID8gMTAyNCA6IDEwMDA7CiAgICAgICAgaWYgKG1l
YW4gPiAxMCAqIGtpbG8gKiBraWxvICYmIHVuaXQgIT0gJ21zJykgewogICAgICAgICAgICBjYWNo
ZWRTY2FsaW5nRmFjdG9yID0gMSAvIGtpbG8gLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0
ID0gJ00gJyArIHVuaXQ7CiAgICAgICAgfSBlbHNlIGlmIChtZWFuID4gMTAgKiBraWxvKSB7CiAg
ICAgICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSAxIC8ga2lsbzsKICAgICAgICAgICAgY2Fj
aGVkVW5pdCA9IHVuaXQgPT0gJ21zJyA/ICdzJyA6ICgnSyAnICsgdW5pdCk7CiAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IDE7CiAgICAgICAgICAgIGNh
Y2hlZFVuaXQgPSB1bml0OwogICAgICAgIH0KICAgIH0KCiAgICB0aGlzLm5hbWUgPSBmdW5jdGlv
biAoKSB7IHJldHVybiBuYW1lICsgJzonICsgbWV0cmljOyB9CiAgICB0aGlzLmlzTWVtb3J5VGVz
dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1ldHJpYyA9PSAnSlNIZWFwJyB8fCBtZXRyaWMgPT0g
J01hbGxvYyc7IH0KICAgIHRoaXMuYWRkUmVzdWx0ID0gZnVuY3Rpb24gKG5ld1Jlc3VsdCkgewog
ICAgICAgIHRlc3RSZXN1bHRzLnB1c2gobmV3UmVzdWx0KTsKICAgICAgICBjYWNoZWRVbml0ID0g
bnVsbDsKICAgICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKICAgIH0KICAgIHRoaXMu
cmVzdWx0cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRlc3RSZXN1bHRzOyB9CiAgICB0aGlzLnNj
YWxpbmdGYWN0b3IgPSBmdW5jdGlvbigpIHsKICAgICAgICBjb21wdXRlU2NhbGluZ0ZhY3Rvcklm
TmVlZGVkKCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFNjYWxpbmdGYWN0b3I7CiAgICB9CiAgICB0
aGlzLnVuaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgY29tcHV0ZVNjYWxpbmdGYWN0b3JJZk5l
ZWRlZCgpOwogICAgICAgIHJldHVybiBjYWNoZWRVbml0OwogICAgfQogICAgdGhpcy5zbWFsbGVy
SXNCZXR0ZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB1bml0ID09ICdtcycgfHwgdW5pdCA9PSAn
Ynl0ZXMnOyB9Cn0KCnZhciBwbG90Q29sb3IgPSAncmdiKDIzMCw1MCw1MCknOwp2YXIgc3VicG9p
bnRzUGxvdE9wdGlvbnMgPSB7CiAgICBsaW5lczoge3Nob3c6dHJ1ZSwgbGluZVdpZHRoOiAwfSwK
ICAgIGNvbG9yOiBwbG90Q29sb3IsCiAgICBwb2ludHM6IHtzaG93OiB0cnVlLCByYWRpdXM6IDF9
LAogICAgYmFyczoge3Nob3c6IGZhbHNlfX07Cgp2YXIgbWFpblBsb3RPcHRpb25zID0gewogICAg
eGF4aXM6IHsKICAgICAgICBtaW46IC0wLjUsCiAgICAgICAgdGlja1NpemU6IDEsCiAgICB9LAog
ICAgY3Jvc3NoYWlyOiB7IG1vZGU6ICd5JyB9LAogICAgc2VyaWVzOiB7IHNoYWRvd1NpemU6IDAg
fSwKICAgIGJhcnM6IHtzaG93OiB0cnVlLCBhbGlnbjogJ2NlbnRlcicsIGJhcldpZHRoOiAwLjV9
LAogICAgbGluZXM6IHsgc2hvdzogZmFsc2UgfSwKICAgIHBvaW50czogeyBzaG93OiB0cnVlIH0s
CiAgICBncmlkOiB7CiAgICAgICAgYm9yZGVyV2lkdGg6IDEsCiAgICAgICAgYm9yZGVyQ29sb3I6
ICcjY2NjJywKICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJywKICAgICAgICBob3ZlcmFi
bGU6IHRydWUsCiAgICAgICAgYXV0b0hpZ2hsaWdodDogZmFsc2UsCiAgICB9Cn07Cgp2YXIgdGlt
ZVBsb3RPcHRpb25zID0gewogICAgeWF4aXM6IHsgc2hvdzogZmFsc2UgfSwKICAgIHhheGlzOiB7
IHNob3c6IGZhbHNlIH0sCiAgICBsaW5lczogeyBzaG93OiB0cnVlIH0sCiAgICBncmlkOiB7IGJv
cmRlcldpZHRoOiAxLCBib3JkZXJDb2xvcjogJyNjY2MnIH0sCiAgICBjb2xvcnM6IFsgcGxvdENv
bG9yIF0KfTsKCmZ1bmN0aW9uIGNyZWF0ZVBsb3QoY29udGFpbmVyLCB0ZXN0KSB7CiAgICB2YXIg
c2VjdGlvbiA9ICQoJzxzZWN0aW9uPjxkaXYgY2xhc3M9InBsb3QiPjwvZGl2PjxkaXYgY2xhc3M9
InRpbWUtcGxvdHMiPjwvZGl2PicKICAgICAgICArICc8c3BhbiBjbGFzcz0idG9vbHRpcCI+PC9z
cGFuPjwvc2VjdGlvbj4nKTsKICAgIHNlY3Rpb24uY2hpbGRyZW4oJy5wbG90JykuY3NzKHsnd2lk
dGgnOiAoMTAwICogdGVzdC5yZXN1bHRzKCkubGVuZ3RoICsgMjUpICsgJ3B4JywgJ2hlaWdodCc6
ICczMDBweCd9KTsKICAgICQoY29udGFpbmVyKS5hcHBlbmQoc2VjdGlvbik7CgogICAgdmFyIHBs
b3RDb250YWluZXIgPSBzZWN0aW9uLmNoaWxkcmVuKCcucGxvdCcpOwogICAgdmFyIG1pbklzWmVy
byA9IHRydWU7CiAgICBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklzWmVybyk7
CgogICAgYXR0YWNoVGltZVBsb3RzKHRlc3QsIHNlY3Rpb24uY2hpbGRyZW4oJy50aW1lLXBsb3Rz
JykpOwoKICAgIHZhciB0b29sdGlwID0gc2VjdGlvbi5jaGlsZHJlbignLnRvb2x0aXAnKTsKICAg
IHBsb3RDb250YWluZXIuYmluZCgncGxvdGhvdmVyJywgZnVuY3Rpb24gKGV2ZW50LCBwb3NpdGlv
biwgaXRlbSkgewogICAgICAgIGlmIChpdGVtKSB7CiAgICAgICAgICAgIHZhciBwb3N0Zml4ID0g
aXRlbS5zZXJpZXMuaWQgPyAnICgnICsgaXRlbS5zZXJpZXMuaWQgKyAnKScgOiAnJzsKICAgICAg
ICAgICAgdG9vbHRpcC5odG1sKGl0ZW0uZGF0YXBvaW50WzFdLnRvUHJlY2lzaW9uKDQpICsgcG9z
dGZpeCk7CiAgICAgICAgICAgIHZhciBzZWN0aW9uT2Zmc2V0ID0gJChzZWN0aW9uKS5vZmZzZXQo
KTsKICAgICAgICAgICAgdG9vbHRpcC5jc3Moe2xlZnQ6IGl0ZW0ucGFnZVggLSBzZWN0aW9uT2Zm
c2V0LmxlZnQgLSB0b29sdGlwLm91dGVyV2lkdGgoKSAvIDIsIHRvcDogaXRlbS5wYWdlWSAtIHNl
Y3Rpb25PZmZzZXQudG9wICsgMTB9KTsKICAgICAgICAgICAgdG9vbHRpcC5mYWRlSW4oMjAwKTsK
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgdG9vbHRpcC5oaWRlKCk7CiAgICB9KTsKICAgIHBs
b3RDb250YWluZXIubW91c2VvdXQoZnVuY3Rpb24gKCkgewogICAgICAgIHRvb2x0aXAuaGlkZSgp
OwogICAgfSk7CiAgICBwbG90Q29udGFpbmVyLmNsaWNrKGZ1bmN0aW9uIChldmVudCkgewogICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgbWluSXNaZXJvID0gIW1pbklzWmVy
bzsKICAgICAgICBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklzWmVybyk7CiAg
ICB9KTsKCiAgICByZXR1cm4gc2VjdGlvbjsKfQoKZnVuY3Rpb24gYXR0YWNoVGltZVBsb3RzKHRl
c3QsIGNvbnRhaW5lcikgewogICAgdmFyIHJlc3VsdHMgPSB0ZXN0LnJlc3VsdHMoKTsKICAgIHZh
ciBhdHRhY2hlZFBsb3QgPSBmYWxzZTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5s
ZW5ndGg7IGkrKykgewogICAgICAgIGNvbnRhaW5lci5hcHBlbmQoJzxkaXY+PC9kaXY+Jyk7CiAg
ICAgICAgdmFyIHZhbHVlcyA9IHJlc3VsdHNbaV0udmFsdWVzKCk7CiAgICAgICAgaWYgKCF2YWx1
ZXMpCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGF0dGFjaGVkUGxvdCA9IHRydWU7Cgog
ICAgICAgICQucGxvdChjb250YWluZXIuY2hpbGRyZW4oKS5sYXN0KCksIFt2YWx1ZXMubWFwKGZ1
bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHsgcmV0dXJuIFtpbmRleCwgdmFsdWVdOyB9KV0sCiAgICAg
ICAgICAgICQuZXh0ZW5kKHRydWUsIHt9LCB0aW1lUGxvdE9wdGlvbnMsIHt5YXhpczoge21pbjog
TWF0aC5taW4uYXBwbHkoTWF0aCwgdmFsdWVzKSAqIDAuOSwgbWF4OiBNYXRoLm1heC5hcHBseShN
YXRoLCB2YWx1ZXMpICogMS4xfSwKICAgICAgICAgICAgICAgIHhheGlzOiB7bWluOiAtMC41LCBt
YXg6IHZhbHVlcy5sZW5ndGggLSAwLjV9fSkpOwogICAgfQogICAgaWYgKCFhdHRhY2hlZFBsb3Qp
CiAgICAgICAgY29udGFpbmVyLmNoaWxkcmVuKCkucmVtb3ZlKCk7Cn0KCmZ1bmN0aW9uIGF0dGFj
aFBsb3QodGVzdCwgcGxvdENvbnRhaW5lciwgbWluSXNaZXJvKSB7CiAgICB2YXIgcmVzdWx0cyA9
IHRlc3QucmVzdWx0cygpOwoKICAgIHZhciB2YWx1ZXMgPSByZXN1bHRzLnJlZHVjZShmdW5jdGlv
biAodmFsdWVzLCByZXN1bHQsIGluZGV4KSB7CiAgICAgICAgdmFyIG5ld1ZhbHVlcyA9IHJlc3Vs
dC52YWx1ZXMoKTsKICAgICAgICByZXR1cm4gbmV3VmFsdWVzID8gdmFsdWVzLmNvbmNhdChuZXdW
YWx1ZXMubWFwKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gW2luZGV4LCB2YWx1ZV07IH0pKSA6
IHZhbHVlczsKICAgIH0sIFtdKTsKCiAgICB2YXIgcGxvdERhdGEgPSBbJC5leHRlbmQodHJ1ZSwg
e30sIHN1YnBvaW50c1Bsb3RPcHRpb25zLCB7ZGF0YTogdmFsdWVzfSldOwogICAgcGxvdERhdGEu
cHVzaCh7aWQ6ICcmbXU7JywgZGF0YTogcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5k
ZXgpIHsgcmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1lYW4oKV07IH0pLCBjb2xvcjogcGxvdENvbG9y
fSk7CgogICAgdmFyIG92ZXJhbGxNYXggPSBTdGF0aXN0aWNzLm1heChyZXN1bHRzLm1hcChmdW5j
dGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gcmVzdWx0Lm1heCgpOyB9KSk7CiAgICB2YXIg
b3ZlcmFsbE1pbiA9IFN0YXRpc3RpY3MubWluKHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQs
IGluZGV4KSB7IHJldHVybiByZXN1bHQubWluKCk7IH0pKTsKICAgIHZhciBtYXJnaW4gPSAob3Zl
cmFsbE1heCAtIG92ZXJhbGxNaW4pICogMC4xOwogICAgdmFyIGN1cnJlbnRQbG90T3B0aW9ucyA9
ICQuZXh0ZW5kKHRydWUsIHt9LCBtYWluUGxvdE9wdGlvbnMsIHt5YXhpczogewogICAgICAgIG1p
bjogbWluSXNaZXJvID8gMCA6IG92ZXJhbGxNaW4gLSBtYXJnaW4sCiAgICAgICAgbWF4OiBtaW5J
c1plcm8gPyBvdmVyYWxsTWF4ICogMS4xIDogb3ZlcmFsbE1heCArIG1hcmdpbn19KTsKCiAgICBj
dXJyZW50UGxvdE9wdGlvbnMueGF4aXMubWF4ID0gcmVzdWx0cy5sZW5ndGggLSAwLjU7CiAgICBj
dXJyZW50UGxvdE9wdGlvbnMueGF4aXMudGlja3MgPSByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVz
dWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQucnVuKCkubGFiZWwoKV07IH0pOwoK
ICAgICQucGxvdChwbG90Q29udGFpbmVyLCBwbG90RGF0YSwgY3VycmVudFBsb3RPcHRpb25zKTsK
fQoKZnVuY3Rpb24gdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHZhbHVlKSB7CiAgICB2YXIgZGVjaW1h
bCA9IHZhbHVlLnRvRml4ZWQoMik7CiAgICByZXR1cm4gZGVjaW1hbDsKfQoKZnVuY3Rpb24gZm9y
bWF0UGVyY2VudGFnZShmcmFjdGlvbikgewogICAgdmFyIHBlcmNlbnRhZ2UgPSBmcmFjdGlvbiAq
IDEwMDsKICAgIHJldHVybiAoZnJhY3Rpb24gKiAxMDApLnRvRml4ZWQoMikgKyAnJSc7Cn0KCmZ1
bmN0aW9uIGNyZWF0ZVRhYmxlKHRlc3RzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVy
ZW5jZUluZGV4KSB7CiAgICAkKCcjY29udGFpbmVyJykuaHRtbCgnPHRoZWFkPjx0cj48dGg+VGVz
dDwvdGg+PHRoPlVuaXQ8L3RoPicgKyBydW5zLm1hcChmdW5jdGlvbiAocnVuLCBpbmRleCkgewog
ICAgICAgIHJldHVybiAnPHRoIGNvbHNwYW49IicgKyAoaW5kZXggPT0gcmVmZXJlbmNlSW5kZXgg
PyAyIDogMykgKyAnIiBjbGFzcz0ie3NvcnRlcjogXCdjb21wYXJpc29uXCd9Ij4nICsgcnVuLmxh
YmVsKCkgKyAnPC90aD4nOwogICAgfSkucmVkdWNlKGZ1bmN0aW9uIChtYXJrdXAsIGNlbGwpIHsg
cmV0dXJuIG1hcmt1cCArIGNlbGw7IH0sICcnKSArICc8L3RyPjwvaGVhZD48dGJvZHk+PC90Ym9k
eT4nKTsKCiAgICB2YXIgdGVzdE5hbWVzID0gW107CiAgICBmb3IgKHRlc3ROYW1lIGluIHRlc3Rz
KQogICAgICAgIHRlc3ROYW1lcy5wdXNoKHRlc3ROYW1lKTsKCiAgICB0ZXN0TmFtZXMuc29ydCgp
Lm1hcChmdW5jdGlvbiAodGVzdE5hbWUpIHsKICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW3Rlc3RO
YW1lXTsKICAgICAgICBpZiAodGVzdC5pc01lbW9yeVRlc3QoKSAhPSBzaG91bGRJZ25vcmVNZW1v
cnkpCiAgICAgICAgICAgIGNyZWF0ZVRhYmxlUm93KHJ1bnMsIHRlc3QsIHJlZmVyZW5jZUluZGV4
KTsKICAgIH0pOwoKICAgICQoJyNjb250YWluZXInKS50YWJsZXNvcnRlcih7d2lkZ2V0czogWyd6
ZWJyYSddfSk7Cn0KCmZ1bmN0aW9uIGxpbmVhclJlZ3Jlc3Npb24ocG9pbnRzKSB7CiAgICAvLyBJ
bXBsZW1lbnQgaHR0cDovL3d3dy5lYXN5Y2FsY3VsYXRpb24uY29tL3N0YXRpc3RpY3MvbGVhcm4t
Y29ycmVsYXRpb24ucGhwLgogICAgLy8geCA9IG1hZ25pdHVkZQogICAgLy8geSA9IGl0ZXJhdGlv
bnMKICAgIHZhciBzdW1YID0gMDsKICAgIHZhciBzdW1ZID0gMDsKICAgIHZhciBzdW1YU3F1YXJl
ZCA9IDA7CiAgICB2YXIgc3VtWVNxdWFyZWQgPSAwOwogICAgdmFyIHN1bVhUaW1lc1kgPSAwOwoK
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFy
IHggPSBpOwogICAgICAgIHZhciB5ID0gcG9pbnRzW2ldOwogICAgICAgIHN1bVggKz0geDsKICAg
ICAgICBzdW1ZICs9IHk7CiAgICAgICAgc3VtWFNxdWFyZWQgKz0geCAqIHg7CiAgICAgICAgc3Vt
WVNxdWFyZWQgKz0geSAqIHk7CiAgICAgICAgc3VtWFRpbWVzWSArPSB4ICogeTsKICAgIH0KCiAg
ICB2YXIgciA9IChwb2ludHMubGVuZ3RoICogc3VtWFRpbWVzWSAtIHN1bVggKiBzdW1ZKSAvCiAg
ICAgICAgTWF0aC5zcXJ0KChwb2ludHMubGVuZ3RoICogc3VtWFNxdWFyZWQgLSBzdW1YICogc3Vt
WCkgKgogICAgICAgICAgICAgICAgICAocG9pbnRzLmxlbmd0aCAqIHN1bVlTcXVhcmVkIC0gc3Vt
WSAqIHN1bVkpKTsKCiAgICBpZiAoaXNOYU4ocikgfHwgciA9PSBNYXRoLkluZmluaXR5KQogICAg
ICAgIHIgPSAwOwoKICAgIHZhciBzbG9wZSA9IChwb2ludHMubGVuZ3RoICogc3VtWFRpbWVzWSAt
IHN1bVggKiBzdW1ZKSAvIChwb2ludHMubGVuZ3RoICogc3VtWFNxdWFyZWQgLSBzdW1YICogc3Vt
WCk7CiAgICB2YXIgaW50ZXJjZXB0ID0gc3VtWSAvIHBvaW50cy5sZW5ndGggLSBzbG9wZSAqIHN1
bVggLyBwb2ludHMubGVuZ3RoOwogICAgcmV0dXJuIHtzbG9wZTogc2xvcGUsIGludGVyY2VwdDog
aW50ZXJjZXB0LCByU3F1YXJlZDogciAqIHJ9Owp9Cgp2YXIgd2FybmluZ1NpZ24gPSAnPHN2ZyB2
aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9IndpZHRoOiAxOHB4OyBoZWlnaHQ6IDE4cHg7IHZl
cnRpY2FsLWFsaWduOiBib3R0b207IiB2ZXJzaW9uPSIxLjEiPicKICAgICsgJzxwb2x5Z29uIGZp
bGw9InJlZCIgcG9pbnRzPSI1MCwxMCA5MCw4MCAxMCw4MCA1MCwxMCIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+JwogICAgKyAnPHBvbHln
b24gZmlsbD0id2hpdGUiIHBvaW50cz0iNDcsMzAgNDgsMjksIDUwLCAyOC43LCA1MiwyOSA1Mywz
MCA1MCw2MCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2lu
PSJyb3VuZCIgLz4nCiAgICArICc8Y2lyY2xlIGN4PSI1MCIgY3k9IjczIiByPSI2IiBmaWxsPSJ3
aGl0ZSIgLz4nCiAgICArICc8L3N2Zz4nOwoKZnVuY3Rpb24gY3JlYXRlVGFibGVSb3cocnVucywg
dGVzdCwgcmVmZXJlbmNlSW5kZXgpIHsKICAgIHZhciB0YWJsZVJvdyA9ICQoJzx0cj48dGQgY2xh
c3M9InRlc3QiPicgKyB0ZXN0Lm5hbWUoKSArICc8L3RkPjx0ZCBjbGFzcz0idW5pdCI+JyArIHRl
c3QudW5pdCgpICsgJzwvdGQ+PC90cj4nKTsKCiAgICBmdW5jdGlvbiBtYXJrdXBGb3JSdW4ocmVz
dWx0LCByZWZlcmVuY2VSZXN1bHQpIHsKICAgICAgICB2YXIgY29tcGFyaXNvbkNlbGwgPSAnJzsK
ICAgICAgICB2YXIgaGlkZGVuVmFsdWUgPSAnJzsKICAgICAgICB2YXIgc2hvdWxkQ29tcGFyZSA9
IHJlc3VsdCAhPT0gcmVmZXJlbmNlUmVzdWx0OwogICAgICAgIGlmIChzaG91bGRDb21wYXJlICYm
IHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgICAgICB2YXIgcGVyY2VudERpZmZlcmVuY2UgPSBy
ZWZlcmVuY2VSZXN1bHQucGVyY2VudERpZmZlcmVuY2UocmVzdWx0KTsKICAgICAgICAgICAgdmFy
IGJldHRlciA9IHRlc3Quc21hbGxlcklzQmV0dGVyKCkgPyBwZXJjZW50RGlmZmVyZW5jZSA8IDAg
OiBwZXJjZW50RGlmZmVyZW5jZSA+IDA7CiAgICAgICAgICAgIHZhciBjb21wYXJpc29uID0gJyc7
CiAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSAnY29tcGFyaXNvbic7CiAgICAgICAgICAgIGlm
IChyZWZlcmVuY2VSZXN1bHQuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQocmVzdWx0KSkgewog
ICAgICAgICAgICAgICAgY29tcGFyaXNvbiA9IGZvcm1hdFBlcmNlbnRhZ2UoTWF0aC5hYnMocGVy
Y2VudERpZmZlcmVuY2UpKSArIChiZXR0ZXIgPyAnIEJldHRlcicgOiAnIFdvcnNlJm5ic3A7Jyk7
CiAgICAgICAgICAgICAgICBjbGFzc05hbWUgKz0gYmV0dGVyID8gJyBiZXR0ZXInIDogJyB3b3Jz
ZSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGlkZGVuVmFsdWUgPSAnPHNwYW4gc3R5bGU9
ImRpc3BsYXk6IG5vbmUiPnwnICsgY29tcGFyaXNvbiArICc8L3NwYW4+JzsKICAgICAgICAgICAg
Y29tcGFyaXNvbkNlbGwgPSAnPHRkIGNsYXNzPSInICsgY2xhc3NOYW1lICsgJyI+JyArIGNvbXBh
cmlzb24gKyAnPC90ZD4nOwogICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkQ29tcGFyZSkKICAgICAg
ICAgICAgY29tcGFyaXNvbkNlbGwgPSAnPHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPic7Cgog
ICAgICAgIHZhciB2YWx1ZXMgPSByZXN1bHQudmFsdWVzKCk7CiAgICAgICAgdmFyIHdhcm5pbmcg
PSAnJzsKICAgICAgICB2YXIgcmVncmVzc2lvbkFuYWx5c2lzID0gJyc7CiAgICAgICAgaWYgKHZh
bHVlcyAmJiB2YWx1ZXMubGVuZ3RoID4gMykgewogICAgICAgICAgICByZWdyZXNzaW9uUmVzdWx0
ID0gbGluZWFyUmVncmVzc2lvbih2YWx1ZXMpOwogICAgICAgICAgICByZWdyZXNzaW9uQW5hbHlz
aXMgPSAnc2xvcGU9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZWdyZXNzaW9uUmVzdWx0LnNs
b3BlKQogICAgICAgICAgICAgICAgKyAnLCBSXjI9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihy
ZWdyZXNzaW9uUmVzdWx0LnJTcXVhcmVkKTsKICAgICAgICAgICAgaWYgKHJlZ3Jlc3Npb25SZXN1
bHQuclNxdWFyZWQgPiAwLjYgJiYgTWF0aC5hYnMocmVncmVzc2lvblJlc3VsdC5zbG9wZSkgPiAw
LjAxKSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nID0gJyA8c3BhbiBjbGFzcz0icmVncmVzc2lv
bi13YXJuaW5nIiB0aXRsZT0iRGV0ZWN0ZWQgYSB0aW1lIGRlcGVuZGVuY3kgd2l0aCAnICsgcmVn
cmVzc2lvbkFuYWx5c2lzICsgJyI+JyArIHdhcm5pbmdTaWduICsgJyA8L3NwYW4+JzsKICAgICAg
ICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIHN0YXRpc3RpY3MgPSAnJnNpZ21hOz0nICsg
dG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSgpKSAr
ICcsIG1pbj0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5taW4oKSkKICAgICAgICAg
ICAgKyAnLCBtYXg9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWF4KCkpICsgJ1xu
JyArIHJlZ3Jlc3Npb25BbmFseXNpczsKCiAgICAgICAgLy8gVGFibGVzb3J0ZXIgZG9lc24ndCBr
bm93IGFib3V0IHRoZSBzZWNvbmQgY2VsbCBzbyBwdXQgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGlu
dmlzaWJsZSBlbGVtZW50LgogICAgICAgIHJldHVybiAnPHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxl
PSInICsgc3RhdGlzdGljcyArICciPicgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1l
YW4oKSkgKyBoaWRkZW5WYWx1ZQogICAgICAgICAgICArICc8L3RkPjx0ZCBjbGFzcz0iY29uZmlk
ZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSInICsgc3RhdGlzdGljcyArICciPiZwbHVzbW47ICcK
ICAgICAgICAgICAgKyBmb3JtYXRQZXJjZW50YWdlKHJlc3VsdC5jb25maWRlbmNlSW50ZXJ2YWxE
ZWx0YVJhdGlvKCkpICsgd2FybmluZyArICc8L3RkPicgKyBjb21wYXJpc29uQ2VsbDsKICAgIH0K
CiAgICBmdW5jdGlvbiBtYXJrdXBGb3JNaXNzaW5nUnVuKGlzUmVmZXJlbmNlKSB7CiAgICAgICAg
cmV0dXJuICc8dGQgY29sc3Bhbj0iJyArIChpc1JlZmVyZW5jZSA/IDIgOiAzKSArICciIGNsYXNz
PSJtaXNzaW5nIj5NaXNzaW5nPC90ZD4nOwogICAgfQoKICAgIHZhciBydW5JbmRleCA9IDA7CiAg
ICB2YXIgcmVzdWx0cyA9IHRlc3QucmVzdWx0cygpOwogICAgdmFyIHJlZmVyZW5jZVJlc3VsdCA9
IHVuZGVmaW5lZDsKICAgIHZhciByZXN1bHRJbmRleE1hcCA9IHt9OwogICAgZm9yICh2YXIgaSA9
IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgd2hpbGUgKHJ1bnNbcnVuSW5k
ZXhdICE9PSByZXN1bHRzW2ldLnJ1bigpKQogICAgICAgICAgICBydW5JbmRleCsrOwogICAgICAg
IGlmIChydW5JbmRleCA9PSByZWZlcmVuY2VJbmRleCkKICAgICAgICAgICAgcmVmZXJlbmNlUmVz
dWx0ID0gcmVzdWx0c1tpXTsKICAgICAgICByZXN1bHRJbmRleE1hcFtydW5JbmRleF0gPSBpOwog
ICAgfQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydW5zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAg
dmFyIHJlc3VsdEluZGV4ID0gcmVzdWx0SW5kZXhNYXBbaV07CiAgICAgICAgaWYgKHJlc3VsdElu
ZGV4ID09IHVuZGVmaW5lZCkKICAgICAgICAgICAgdGFibGVSb3cuYXBwZW5kKG1hcmt1cEZvck1p
c3NpbmdSdW4oaSA9PSByZWZlcmVuY2VJbmRleCkpOwogICAgICAgIGVsc2UKICAgICAgICAgICAg
dGFibGVSb3cuYXBwZW5kKG1hcmt1cEZvclJ1bihyZXN1bHRzW3Jlc3VsdEluZGV4XSwgcmVmZXJl
bmNlUmVzdWx0KSk7CiAgICB9CgogICAgJCgnI2NvbnRhaW5lcicpLmNoaWxkcmVuKCd0Ym9keScp
Lmxhc3QoKS5hcHBlbmQodGFibGVSb3cpOwoKICAgIHRhYmxlUm93LmNsaWNrKGZ1bmN0aW9uIChl
dmVudCkgewogICAgICAgIGlmIChldmVudC50YXJnZXQgIT0gdGFibGVSb3dbMF0gJiYgZXZlbnQu
dGFyZ2V0LnBhcmVudE5vZGUgIT0gdGFibGVSb3dbMF0pCiAgICAgICAgICAgIHJldHVybjsKCiAg
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKCiAgICAgICAgdmFyIGZpcnN0Q2VsbCA9IHRh
YmxlUm93LmNoaWxkcmVuKCd0ZCcpLmZpcnN0KCk7CiAgICAgICAgaWYgKGZpcnN0Q2VsbC5jaGls
ZHJlbignc2VjdGlvbicpLmxlbmd0aCkgewogICAgICAgICAgICBmaXJzdENlbGwuY2hpbGRyZW4o
J3NlY3Rpb24nKS5yZW1vdmUoKTsKICAgICAgICAgICAgdGFibGVSb3cuY2hpbGRyZW4oJ3RkJyku
Y3NzKHsncGFkZGluZy1ib3R0b20nOiAnJ30pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
IHZhciBwbG90ID0gY3JlYXRlUGxvdChmaXJzdENlbGwsIHRlc3QpOwogICAgICAgICAgICBwbG90
LmNzcyh7J3Bvc2l0aW9uJzogJ2Fic29sdXRlJywgJ3otaW5kZXgnOiAyfSk7CiAgICAgICAgICAg
IHZhciBvZmZzZXQgPSB0YWJsZVJvdy5vZmZzZXQoKTsKICAgICAgICAgICAgb2Zmc2V0LmxlZnQg
Kz0gMTsKICAgICAgICAgICAgb2Zmc2V0LnRvcCArPSB0YWJsZVJvdy5vdXRlckhlaWdodCgpOwog
ICAgICAgICAgICBwbG90Lm9mZnNldChvZmZzZXQpOwogICAgICAgICAgICB0YWJsZVJvdy5jaGls
ZHJlbigndGQnKS5jc3MoeydwYWRkaW5nLWJvdHRvbSc6IHBsb3Qub3V0ZXJIZWlnaHQoKSArIDV9
KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwp9CgpmdW5jdGlvbiBp
bml0KCkgewogICAgJC50YWJsZXNvcnRlci5hZGRQYXJzZXIoewogICAgICAgIGlkOiAnY29tcGFy
aXNvbicsCiAgICAgICAgaXM6IGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMuaW5k
ZXhPZignfCcpID49IDA7CiAgICAgICAgfSwKICAgICAgICBmb3JtYXQ6IGZ1bmN0aW9uKHMpIHsK
ICAgICAgICAgICAgdmFyIHBhcnNlZCA9IHBhcnNlRmxvYXQocy5zdWJzdHJpbmcocy5pbmRleE9m
KCd8JykgKyAxKSk7CiAgICAgICAgICAgIHJldHVybiBpc05hTihwYXJzZWQpID8gMCA6IHBhcnNl
ZDsKICAgICAgICB9LAogICAgICAgIHR5cGU6ICdudW1lcmljJywKICAgIH0pOwoKICAgIHZhciBy
dW5zID0gW107CiAgICB2YXIgbWV0cmljcyA9IHt9OwogICAgJC5lYWNoKEpTT04ucGFyc2UoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pzb24nKS50ZXh0Q29udGVudCksIGZ1bmN0aW9uIChpbmRl
eCwgZW50cnkpIHsKICAgICAgICB2YXIgcnVuID0gbmV3IFRlc3RSdW4oZW50cnkpOwogICAgICAg
IHJ1bnMucHVzaChydW4pOwoKICAgICAgICBmdW5jdGlvbiBhZGRUZXN0cyh0ZXN0cywgcGFyZW50
RnVsbE5hbWUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gdGVzdHMpIHsKICAg
ICAgICAgICAgICAgIHZhciBmdWxsVGVzdE5hbWUgPSBwYXJlbnRGdWxsTmFtZSArICcvJyArIHRl
c3ROYW1lOwogICAgICAgICAgICAgICAgdmFyIHJhd01ldHJpY3MgPSB0ZXN0c1t0ZXN0TmFtZV0u
bWV0cmljczsKCiAgICAgICAgICAgICAgICBmb3IgKHZhciBtZXRyaWNOYW1lIGluIHJhd01ldHJp
Y3MpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZnVsbE1ldHJpY05hbWUgPSBmdWxsVGVzdE5h
bWUgKyAnOicgKyBtZXRyaWNOYW1lOwogICAgICAgICAgICAgICAgICAgIHZhciBtZXRyaWMgPSBt
ZXRyaWNzW2Z1bGxNZXRyaWNOYW1lXTsKICAgICAgICAgICAgICAgICAgICBpZiAoIW1ldHJpYykg
ewogICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWMgPSBuZXcgUGVyZlRlc3RNZXRyaWMoZnVs
bFRlc3ROYW1lLCBtZXRyaWNOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgbWV0cmljc1tm
dWxsTWV0cmljTmFtZV0gPSBtZXRyaWM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgIG1ldHJpYy5hZGRSZXN1bHQobmV3IFRlc3RSZXN1bHQobWV0cmljLCByYXdNZXRy
aWNzW21ldHJpY05hbWVdLmN1cnJlbnQsIHJ1bikpOwogICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgIGlmICh0ZXN0c1t0ZXN0TmFtZV0udGVzdHMpCiAgICAgICAgICAgICAgICAgICAg
YWRkVGVzdHModGVzdHNbdGVzdE5hbWVdLnRlc3RzLCBmdWxsVGVzdE5hbWUpOwogICAgICAgICAg
ICB9CiAgICAgICAgfQoKICAgICAgICBhZGRUZXN0cyhlbnRyeS50ZXN0cywgJycpOwogICAgfSk7
CgogICAgdmFyIHNob3VsZElnbm9yZU1lbW9yeT0gdHJ1ZTsKICAgIHZhciByZWZlcmVuY2VJbmRl
eCA9IDA7CgogICAgY3JlYXRlVGFibGUobWV0cmljcywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5
LCByZWZlcmVuY2VJbmRleCk7CgogICAgJCgnI3RpbWUtbWVtb3J5JykuYmluZCgnY2hhbmdlJywg
ZnVuY3Rpb24gKGV2ZW50LCBjaGVja2VkRWxlbWVudCkgewogICAgICAgIHNob3VsZElnbm9yZU1l
bW9yeSA9IGNoZWNrZWRFbGVtZW50LnRleHRDb250ZW50ID09ICdUaW1lJzsKICAgICAgICBjcmVh
dGVUYWJsZShtZXRyaWNzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5jZUluZGV4
KTsKICAgIH0pOwoKICAgIHJ1bnMubWFwKGZ1bmN0aW9uIChydW4sIGluZGV4KSB7CiAgICAgICAg
JCgnI3JlZmVyZW5jZScpLmFwcGVuZCgnPHNwYW4gdmFsdWU9IicgKyBpbmRleCArICciJyArIChp
bmRleCA9PSByZWZlcmVuY2VJbmRleCA/ICcgY2xhc3M9ImNoZWNrZWQiJyA6ICcnKSArICc+JyAr
IHJ1bi5sYWJlbCgpICsgJzwvc3Bhbj4nKTsKICAgIH0pCgogICAgJCgnI3JlZmVyZW5jZScpLmJp
bmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChldmVudCwgY2hlY2tlZEVsZW1lbnQpIHsKICAgICAgICBy
ZWZlcmVuY2VJbmRleCA9IHBhcnNlSW50KGNoZWNrZWRFbGVtZW50LmdldEF0dHJpYnV0ZSgndmFs
dWUnKSk7CiAgICAgICAgY3JlYXRlVGFibGUobWV0cmljcywgcnVucywgc2hvdWxkSWdub3JlTWVt
b3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsKCiAgICAkKCcuY2hlY2tib3gnKS5lYWNoKGZ1
bmN0aW9uIChpbmRleCwgY2hlY2tib3gpIHsKICAgICAgICAkKGNoZWNrYm94KS5jaGlsZHJlbign
c3BhbicpLmNsaWNrKGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICAgICBpZiAoJCh0aGlzKS5o
YXNDbGFzcygnY2hlY2tlZCcpKQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAk
KGNoZWNrYm94KS5jaGlsZHJlbignc3BhbicpLnJlbW92ZUNsYXNzKCdjaGVja2VkJyk7CiAgICAg
ICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJChjaGVja2Jv
eCkudHJpZ2dlcignY2hhbmdlJywgJCh0aGlzKSk7CiAgICAgICAgfSk7CiAgICB9KTsKfQoKPC9z
Y3JpcHQ+CjxzY3JpcHQgaWQ9Impzb24iIHR5cGU9ImFwcGxpY2F0aW9uL2pzb24iPlt7InRlc3Rz
IjogeyJMYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1
bmsvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQiLCAidGVzdHMiOiB7ImxpbmUtbGF5b3V0IjogeyJ1
cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVz
dHMvTGF5b3V0L2xpbmUtbGF5b3V0Lmh0bWwiLCAibWV0cmljcyI6IHsiTWFsbG9jIjogeyJjdXJy
ZW50IjogW1sxNjQwMDA4LjAsIDE2MjYxODQuMCwgMTYyMjE0NC4wLCAxNjQ1NjMyLjAsIDE2NDQ1
MzYuMF0sIFsxNjQwMDE2LjAsIDE2MjIwOTYuMCwgMTYyMTI4OC4wLCAxNjQ0NzIwLjAsIDE2Mzk0
NzIuMF0sIFsxNjQwMDAwLjAsIDE2MjYxNzYuMCwgMTYyNjIzMi4wLCAxNjQ5NjU2LjAsIDE2NDQ1
MjguMF0sIFsxNjQwMDE2LjAsIDE2MjYxMzYuMCwgMTYyNjE5Mi4wLCAxNjQ1NTg0LjAsIDE2NDQ0
MzIuMF1dfSwgIlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzExNS44MzAxMTU4MzAxMTU4MywgMTEyLjc4
MTk1NDg4NzIxODA1LCAxMTIuNjQwODAxMDAxMjUxNTYsIDExMi4zNTk1NTA1NjE3OTc3NSwgMTEy
LjA3OTcwMTEyMDc5NzAxXSwgWzEwOC4xNzMwNzY5MjMwNzY5MiwgMTE0LjY0OTY4MTUyODY2MjQz
LCAxMTUuMzg0NjE1Mzg0NjE1MzksIDExNS4zODQ2MTUzODQ2MTUzOSwgMTE0LjY0OTY4MTUyODY2
MjQzXSwgWzExMi41LCAxMTUuNjgxMjMzOTMzMTYxOTUsIDExNy4wMzUxMTA1MzMxNTk5NSwgMTE2
LjI3OTA2OTc2NzQ0MTg1LCAxMTUuOTc5MzgxNDQzMjk4OTZdLCBbMTE2LjEyOTAzMjI1ODA2NDUx
LCAxMTYuMTI5MDMyMjU4MDY0NTEsIDExNi40Mjk0OTU0NzIxODYyOSwgMTE1LjUzMjczNDI3NDcx
MTE3LCAxMTUuNTMyNzM0Mjc0NzExMTddXX0sICJKU0hlYXAiOiB7ImN1cnJlbnQiOiBbWzU2MTY4
LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgwMzIu
MCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgzMzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4w
LCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAs
IDU4MzM2LjBdXX19fX19fSwgImJ1aWxkVGltZSI6ICIyMDEzLTA3LTE5VDA2OjAxOjE4LjE4MDA2
NiIsICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDctMThUMDA6
MzU6MzAuNDI1OTEwWiIsICJyZXZpc2lvbiI6ICIxNTI4MjMifX19LCB7InRlc3RzIjogeyJMYXlv
dXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9y
bWFuY2VUZXN0cy9MYXlvdXQiLCAidGVzdHMiOiB7ImxpbmUtbGF5b3V0IjogeyJ1cmwiOiAiaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0
L2xpbmUtbGF5b3V0Lmh0bWwiLCAibWV0cmljcyI6IHsiTWFsbG9jIjogeyJjdXJyZW50IjogW1sx
NjM1OTIwLjAsIDE2MjIwOTYuMCwgMTYyMjE1Mi4wLCAxNjQxNTQ0LjAsIDE2NDAzOTIuMF0sIFsx
NjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYyNjE5Mi4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODguMF0sIFsx
NjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYyNjI0OC4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODguMF0sIFsx
NjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYyNjI0OC4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODguMF1dfSwg
IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzExNy45NTU0MzkwNTYzNTY0OCwgMTEyLjkyMzQ2Mjk4NjE5
ODI1LCAxMTguNDIxMDUyNjMxNTc4OTUsIDExOC4yNjU0NDAyMTAyNDk2NiwgMTE4LjI2NTQ0MDIx
MDI0OTY2XSwgWzExOC40MjEwNTI2MzE1Nzg5NSwgMTE3LjgwMTA0NzEyMDQxODg0LCAxMTguNDIx
MDUyNjMxNTc4OTUsIDExOC4yNjU0NDAyMTAyNDk2NiwgMTE4LjExMDIzNjIyMDQ3MjQ0XSwgWzEx
OC4yNjU0NDAyMTAyNDk2NiwgMTE4LjczMzUwOTIzNDgyODUsIDExNy45NTU0MzkwNTYzNTY0OCwg
MTE3Ljk1NTQzOTA1NjM1NjQ4LCAxMTguNTc3MDc1MDk4ODE0MjNdLCBbMTE4LjU3NzA3NTA5ODgx
NDIzLCAxMTcuOTU1NDM5MDU2MzU2NDgsIDExOC40MjEwNTI2MzE1Nzg5NSwgMTE3Ljk1NTQzOTA1
NjM1NjQ4LCAxMTcuODAxMDQ3MTIwNDE4ODRdXX0sICJKU0hlYXAiOiB7ImN1cnJlbnQiOiBbWzU2
MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgw
MzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgzMzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEw
NC4wLCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0
LjAsIDU4MzM2LjBdXX19fX19fSwgImRlc2NyaXB0aW9uIjogInBhdGNoZWQiLCAiYnVpbGRUaW1l
IjogIjIwMTMtMDctMTlUMDc6NDQ6NTEuMjE4MzY2IiwgInJldmlzaW9ucyI6IHsiV2ViS2l0Ijog
eyJ0aW1lc3RhbXAiOiAiMjAxMy0wNy0xOFQwMDozNTozMC40MjU5MTBaIiwgInJldmlzaW9uIjog
IjE1MjgyMyJ9fX0sIHsidGVzdHMiOiB7IkxheW91dCI6IHsidXJsIjogImh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0xheW91dCIsICJ0ZXN0cyI6
IHsibGluZS1sYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIv
dHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvbGluZS1sYXlvdXQuaHRtbCIsICJtZXRyaWNz
IjogeyJNYWxsb2MiOiB7ImN1cnJlbnQiOiBbWzE2NDAwMTYuMCwgMTYyMjA5Ni4wLCAxNjIyMTUy
LjAsIDE2NDU2NDAuMCwgMTY0NDU0NC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5Mi4wLCAxNjI2MjQ4
LjAsIDE2NDU2NDAuMCwgMTY0NDU0NC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5Mi4wLCAxNjI2MjQ4
LjAsIDE2NDU1ODQuMCwgMTY0NDQ4OC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5Mi4wLCAxNjI2MjQ4
LjAsIDE2NDU2NDAuMCwgMTY0NDQ4OC4wXV19LCAiUnVucyI6IHsiY3VycmVudCI6IFtbMTE1LjIz
Njg3NTgwMDI1NjA5LCAxMTMuOTI0MDUwNjMyOTExMzksIDExNS42ODEyMzM5MzMxNjE5NSwgMTE0
LjY0OTY4MTUyODY2MjQzLCAxMTQuNzk1OTE4MzY3MzQ2OTRdLCBbMTE2LjI3OTA2OTc2NzQ0MTg1
LCAxMTQuNzk1OTE4MzY3MzQ2OTQsIDExNS45NzkzODE0NDMyOTg5NiwgMTEzLjc4MDAyNTI4NDQ1
MDA2LCAxMTUuNTMyNzM0Mjc0NzExMTddLCBbMTE1LjgzMDExNTgzMDExNTgzLCAxMTUuNTMyNzM0
Mjc0NzExMTcsIDExNS42ODEyMzM5MzMxNjE5NSwgMTE1LjY4MTIzMzkzMzE2MTk1LCAxMTMuNjM2
MzYzNjM2MzYzNjRdLCBbMTE2LjEyOTAzMjI1ODA2NDUxLCAxMTcuMDM1MTEwNTMzMTU5OTUsIDEx
Ni41ODAzMTA4ODA4MjkwMiwgMTE2Ljg4MzExNjg4MzExNjg4LCAxMTYuNTgwMzEwODgwODI5MDJd
XX0sICJKU0hlYXAiOiB7ImN1cnJlbnQiOiBbWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4
MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgz
MzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2
MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdXX19fX19fSwgImJ1aWxk
VGltZSI6ICIyMDEzLTA3LTE5VDA3OjQ3OjIyLjk3MTk3OSIsICJyZXZpc2lvbnMiOiB7IldlYktp
dCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDctMThUMDA6MzU6MzAuNDI1OTEwWiIsICJyZXZpc2lv
biI6ICIxNTI4MjMifX19LCB7InRlc3RzIjogeyJMYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQiLCAidGVz
dHMiOiB7ImxpbmUtbGF5b3V0IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93
c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L2xpbmUtbGF5b3V0Lmh0bWwiLCAibWV0
cmljcyI6IHsiTWFsbG9jIjogeyJjdXJyZW50IjogW1sxNjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYy
NjI0OC4wLCAxNjQ1NjQwLjAsIDE2NDQ1NDQuMF0sIFsxNjM1OTIwLjAsIDE2MjIwOTYuMCwgMTYy
MjE1Mi4wLCAxNjQxNTQ0LjAsIDE2NDA0NDguMF0sIFsxNjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYy
NjI0OC4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODguMF0sIFsxNjM1OTIwLjAsIDE2MjIwOTYuMCwgMTYy
MjE1Mi4wLCAxNjQxNTQ0LjAsIDE2NDA0NDguMF1dfSwgIlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzEx
OC43MzM1MDkyMzQ4Mjg1LCAxMTYuNTgwMzEwODgwODI5MDIsIDExOC44OTAzNTY2NzEwNzAwMSwg
MTE4LjExMDIzNjIyMDQ3MjQ0LCAxMTkuMDQ3NjE5MDQ3NjE5MDVdLCBbMTE4LjczMzUwOTIzNDgy
ODUsIDExOC40MjEwNTI2MzE1Nzg5NSwgMTE4Ljg5MDM1NjY3MTA3MDAxLCAxMTcuODAxMDQ3MTIw
NDE4ODQsIDExOC4xMTAyMzYyMjA0NzI0NF0sIFsxMTkuMzYzMzk1MjI1NDY0MTksIDExOC4xMTAy
MzYyMjA0NzI0NCwgMTE4LjU3NzA3NTA5ODgxNDIzLCAxMTguNTc3MDc1MDk4ODE0MjMsIDExOC43
MzM1MDkyMzQ4Mjg1XSwgWzExNy42NDcwNTg4MjM1Mjk0LCAxMTUuODMwMTE1ODMwMTE1ODMsIDEx
Ni4yNzkwNjk3Njc0NDE4NSwgMTE0LjY0OTY4MTUyODY2MjQzLCAxMTAuNzAxMTA3MDExMDcwMV1d
fSwgIkpTSGVhcCI6IHsiY3VycmVudCI6IFtbNTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgy
NjQuMCwgNTgzMzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1ODMz
Ni4wXSwgWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdLCBbNTYx
NjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgzMzYuMF1dfX19fX19LCAiYnVpbGRU
aW1lIjogIjIwMTMtMDctMTlUMDc6NDg6NDEuODMwNTQ1IiwgImRlc2NyaXB0aW9uIjogInBhdGNo
ZWQiLCAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6ICIyMDEzLTA3LTE4VDAw
OjM1OjMwLjQyNTkxMFoiLCAicmV2aXNpb24iOiAiMTUyODIzIn19fV08L3NjcmlwdD4KPC9ib2R5
Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>207067</attachid>
            <date>2013-07-19 01:39:52 -0700</date>
            <delta_ts>2013-07-19 01:39:52 -0700</delta_ts>
            <desc>More diff</desc>
            <filename>line-layout.html</filename>
            <type>text/html</type>
            <size>28629</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gJ1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9yZXNvdXJjZXMv
ZHJvbWFlby93ZWIvbGliL2pxdWVyeS0xLjYuNC5qcyc7CiAgICB2YXIgcGx1Z2lucyA9IFsnUGVy
Zm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LmZsb3QubWluLmpzJywgJ1BlcmZvcm1hbmNl
VGVzdHMvcmVzb3VyY2VzL2pxdWVyeS50YWJsZXNvcnRlci5taW4uanMnLAogICAgICAgICdQZXJm
b3JtYW5jZVRlc3RzL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzJ107CiAgICB2YXIgbG9jYWxQYXRo
ID0gJy9Wb2x1bWVzL0RhdGEvc2FmYXJpL09wZW5Tb3VyY2UnOwogICAgdmFyIHJlbW90ZVBhdGgg
PSAnaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuayc7CiAgICB2
YXIgbnVtYmVyT2ZGYWlsdXJlcyA9IDA7CiAgICB2YXIgc3RhcnRlZExvYWRpbmdQbHVnaW5zID0g
ZmFsc2U7CiAgICB2YXIgbnVtYmVyT2ZMb2FkZWRQbHVnaW5zID0gMDsKCiAgICBmdW5jdGlvbiBs
b2FkU2NyaXB0KHNyYywgbG9hZGVkLCBmYWlsZWQpIHsKICAgICAgICB2YXIgc2NyaXB0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1
ZTsKICAgICAgICBzY3JpcHQuc3JjID0gc3JjOwogICAgICAgIHNjcmlwdC5vbmxvYWQgPSBsb2Fk
ZWQ7CiAgICAgICAgaWYgKGZhaWxlZCkKICAgICAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSBmYWls
ZWQ7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwogICAgfQoKICAg
IGZ1bmN0aW9uIGxvYWRQbHVnaW5zKHRydW5rUGF0aCkgewogICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcGx1Z2lucy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgbG9hZFNjcmlwdCh0cnVua1Bh
dGggKyAnLycgKyBwbHVnaW5zW2ldLCBsb2FkZWRQbHVnaW4sIGNyZWF0ZUZhaWxlZFRvTG9hZFBs
dWdpbihwbHVnaW5zW2ldKSk7CiAgICB9CgogICAgZnVuY3Rpb24gbG9hZGVkUGx1Z2luKCkgewog
ICAgICAgIG51bWJlck9mTG9hZGVkUGx1Z2lucysrOwogICAgICAgIGlmIChudW1iZXJPZkxvYWRl
ZFBsdWdpbnMgPT0gcGx1Z2lucy5sZW5ndGgpCiAgICAgICAgICAgIHNldFRpbWVvdXQoaW5pdCwg
MCk7ICAgICAgICAgICAgCiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlRmFpbGVkVG9Mb2FkUGx1
Z2luKHBsdWdpbikgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGFsZXJ0KCJGYWlsZWQg
dG8gbG9hZCAiICsgcGx1Z2luKTsgfQogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZUxvYWRlZEpR
dWVyeSh0cnVua1BhdGgpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBsb2FkUGx1Z2lu
cyh0cnVua1BhdGgpOyB9CiAgICB9CgogICAgbG9hZFNjcmlwdChsb2NhbFBhdGggKyAnLycgKyBq
UXVlcnksCiAgICAgICAgY3JlYXRlTG9hZGVkSlF1ZXJ5KGxvY2FsUGF0aCksCiAgICAgICAgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICBsb2FkU2NyaXB0KHJlbW90ZVBhdGggKyAnLycgKyBqUXVl
cnksCiAgICAgICAgICAgICAgICBjcmVhdGVMb2FkZWRKUXVlcnkocmVtb3RlUGF0aCksCiAgICAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7IGFsZXJ0KCJGYWlsZWQgdG8gbG9hZCBqUXVlcnkuIik7
IH0pOwogICAgICAgIH0pOwp9KSgpOwoKZnVuY3Rpb24gVGVzdFJlc3VsdChtZXRyaWMsIHZhbHVl
cywgYXNzb2NpYXRlZFJ1bikgewogICAgaWYgKHZhbHVlc1swXSBpbnN0YW5jZW9mIEFycmF5KSB7
CiAgICAgICAgdmFyIGZsYXR0ZW5lZFZhbHVlcyA9IFtdOwogICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKQogICAgICAgICAgICBmbGF0dGVuZWRWYWx1ZXMgPSBm
bGF0dGVuZWRWYWx1ZXMuY29uY2F0KHZhbHVlc1tpXSk7CiAgICAgICAgdmFsdWVzID0gZmxhdHRl
bmVkVmFsdWVzOwogICAgfQoKICAgIHRoaXMudGVzdCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1l
dHJpYzsgfQogICAgdGhpcy52YWx1ZXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB2YWx1ZXMubWFw
KGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gbWV0cmljLnNjYWxpbmdGYWN0b3IoKSAqIHZhbHVl
OyB9KTsgfQogICAgdGhpcy51bnNjYWxlZE1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBTdGF0
aXN0aWNzLnN1bSh2YWx1ZXMpIC8gdmFsdWVzLmxlbmd0aDsgfQogICAgdGhpcy5tZWFuID0gZnVu
Y3Rpb24gKCkgeyByZXR1cm4gbWV0cmljLnNjYWxpbmdGYWN0b3IoKSAqIHRoaXMudW5zY2FsZWRN
ZWFuKCk7IH0KICAgIHRoaXMubWluID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbWV0cmljLnNjYWxp
bmdGYWN0b3IoKSAqIFN0YXRpc3RpY3MubWluKHZhbHVlcyk7IH0KICAgIHRoaXMubWF4ID0gZnVu
Y3Rpb24gKCkgeyByZXR1cm4gbWV0cmljLnNjYWxpbmdGYWN0b3IoKSAqIFN0YXRpc3RpY3MubWF4
KHZhbHVlcyk7IH0KICAgIHRoaXMuY29uZmlkZW5jZUludGVydmFsRGVsdGEgPSBmdW5jdGlvbiAo
KSB7CiAgICAgICAgcmV0dXJuIG1ldHJpYy5zY2FsaW5nRmFjdG9yKCkgKiBTdGF0aXN0aWNzLmNv
bmZpZGVuY2VJbnRlcnZhbERlbHRhKDAuOTUsIHZhbHVlcy5sZW5ndGgsCiAgICAgICAgICAgIFN0
YXRpc3RpY3Muc3VtKHZhbHVlcyksIFN0YXRpc3RpY3Muc3F1YXJlU3VtKHZhbHVlcykpOwogICAg
fQogICAgdGhpcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YVJhdGlvID0gZnVuY3Rpb24gKCkgeyBy
ZXR1cm4gdGhpcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSgpIC8gdGhpcy5tZWFuKCk7IH0KICAg
IHRoaXMucGVyY2VudERpZmZlcmVuY2UgPSBmdW5jdGlvbihvdGhlcikgeyByZXR1cm4gKG90aGVy
LnVuc2NhbGVkTWVhbigpIC0gdGhpcy51bnNjYWxlZE1lYW4oKSkgLyB0aGlzLnVuc2NhbGVkTWVh
bigpOyB9CiAgICB0aGlzLmlzU3RhdGlzdGljYWxseVNpZ25pZmljYW50ID0gZnVuY3Rpb24gKG90
aGVyKSB7CiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhvdGhlci5tZWFuKCkgLSB0aGlzLm1l
YW4oKSk7CiAgICAgICAgcmV0dXJuIGRpZmYgPiB0aGlzLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRh
KCkgJiYgZGlmZiA+IG90aGVyLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKCk7CiAgICB9CiAgICB0
aGlzLnJ1biA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRSdW47IH0KfQoKZnVuY3Rp
b24gVGVzdFJ1bihlbnRyeSkgewogICAgdGhpcy5kZXNjcmlwdGlvbiA9IGZ1bmN0aW9uICgpIHsg
cmV0dXJuIGVudHJ5WydkZXNjcmlwdGlvbiddOyB9CiAgICB0aGlzLndlYmtpdFJldmlzaW9uID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ3JldmlzaW9ucyddWydXZWJLaXQnXVsncmV2aXNp
b24nXTsgfQogICAgdGhpcy5sYWJlbCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgbGFiZWwg
PSAncicgKyB0aGlzLndlYmtpdFJldmlzaW9uKCk7CiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRp
b24oKSkKICAgICAgICAgICAgbGFiZWwgKz0gJyAmZGFzaDsgJyArIHRoaXMuZGVzY3JpcHRpb24o
KTsKICAgICAgICByZXR1cm4gbGFiZWw7CiAgICB9Cn0KCmZ1bmN0aW9uIFBlcmZUZXN0TWV0cmlj
KG5hbWUsIG1ldHJpYykgewogICAgdmFyIHRlc3RSZXN1bHRzID0gW107CiAgICB2YXIgY2FjaGVk
VW5pdCA9IG51bGw7CiAgICB2YXIgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IG51bGw7CiAgICB2YXIg
dW5pdCA9IHsnRnJhbWVSYXRlJzogJ2ZwcycsICdSdW5zJzogJ3J1bnMvcycsICdUaW1lJzogJ21z
JywgJ01hbGxvYyc6ICdieXRlcycsICdKU0hlYXAnOiAnYnl0ZXMnfVttZXRyaWNdOwoKICAgIC8v
IFdlIGNhbid0IGRvIHRoaXMgaW4gVGVzdFJlc3VsdCBiZWNhdXNlIGFsbCByZXN1bHRzIGZvciBl
YWNoIHRlc3QgbmVlZCB0byBzaGFyZSB0aGUgc2FtZSB1bml0IGFuZCB0aGUgc2FtZSBzY2FsaW5n
IGZhY3Rvci4KICAgIGZ1bmN0aW9uIGNvbXB1dGVTY2FsaW5nRmFjdG9ySWZOZWVkZWQoKSB7CiAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBhZGp1c3RpbmcgdW5pdHMgb24gZXZlcnkg
dGVzdCByZXN1bHQuCiAgICAgICAgLy8gV2UgY2FuIG9ubHkgZG8gdGhpcyBvbiB0aGUgZmlyc3Qg
dGVzdC4KICAgICAgICBpZiAoIXRlc3RSZXN1bHRzLmxlbmd0aCB8fCBjYWNoZWRVbml0KQogICAg
ICAgICAgICByZXR1cm47CgogICAgICAgIHZhciBtZWFuID0gdGVzdFJlc3VsdHNbMF0udW5zY2Fs
ZWRNZWFuKCk7IC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayBhdCBhbGwgdmFsdWVzLgogICAgICAg
IHZhciBraWxvID0gdW5pdCA9PSAnYnl0ZXMnID8gMTAyNCA6IDEwMDA7CiAgICAgICAgaWYgKG1l
YW4gPiAxMCAqIGtpbG8gKiBraWxvICYmIHVuaXQgIT0gJ21zJykgewogICAgICAgICAgICBjYWNo
ZWRTY2FsaW5nRmFjdG9yID0gMSAvIGtpbG8gLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0
ID0gJ00gJyArIHVuaXQ7CiAgICAgICAgfSBlbHNlIGlmIChtZWFuID4gMTAgKiBraWxvKSB7CiAg
ICAgICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSAxIC8ga2lsbzsKICAgICAgICAgICAgY2Fj
aGVkVW5pdCA9IHVuaXQgPT0gJ21zJyA/ICdzJyA6ICgnSyAnICsgdW5pdCk7CiAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IDE7CiAgICAgICAgICAgIGNh
Y2hlZFVuaXQgPSB1bml0OwogICAgICAgIH0KICAgIH0KCiAgICB0aGlzLm5hbWUgPSBmdW5jdGlv
biAoKSB7IHJldHVybiBuYW1lICsgJzonICsgbWV0cmljOyB9CiAgICB0aGlzLmlzTWVtb3J5VGVz
dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1ldHJpYyA9PSAnSlNIZWFwJyB8fCBtZXRyaWMgPT0g
J01hbGxvYyc7IH0KICAgIHRoaXMuYWRkUmVzdWx0ID0gZnVuY3Rpb24gKG5ld1Jlc3VsdCkgewog
ICAgICAgIHRlc3RSZXN1bHRzLnB1c2gobmV3UmVzdWx0KTsKICAgICAgICBjYWNoZWRVbml0ID0g
bnVsbDsKICAgICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKICAgIH0KICAgIHRoaXMu
cmVzdWx0cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRlc3RSZXN1bHRzOyB9CiAgICB0aGlzLnNj
YWxpbmdGYWN0b3IgPSBmdW5jdGlvbigpIHsKICAgICAgICBjb21wdXRlU2NhbGluZ0ZhY3Rvcklm
TmVlZGVkKCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFNjYWxpbmdGYWN0b3I7CiAgICB9CiAgICB0
aGlzLnVuaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgY29tcHV0ZVNjYWxpbmdGYWN0b3JJZk5l
ZWRlZCgpOwogICAgICAgIHJldHVybiBjYWNoZWRVbml0OwogICAgfQogICAgdGhpcy5zbWFsbGVy
SXNCZXR0ZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB1bml0ID09ICdtcycgfHwgdW5pdCA9PSAn
Ynl0ZXMnOyB9Cn0KCnZhciBwbG90Q29sb3IgPSAncmdiKDIzMCw1MCw1MCknOwp2YXIgc3VicG9p
bnRzUGxvdE9wdGlvbnMgPSB7CiAgICBsaW5lczoge3Nob3c6dHJ1ZSwgbGluZVdpZHRoOiAwfSwK
ICAgIGNvbG9yOiBwbG90Q29sb3IsCiAgICBwb2ludHM6IHtzaG93OiB0cnVlLCByYWRpdXM6IDF9
LAogICAgYmFyczoge3Nob3c6IGZhbHNlfX07Cgp2YXIgbWFpblBsb3RPcHRpb25zID0gewogICAg
eGF4aXM6IHsKICAgICAgICBtaW46IC0wLjUsCiAgICAgICAgdGlja1NpemU6IDEsCiAgICB9LAog
ICAgY3Jvc3NoYWlyOiB7IG1vZGU6ICd5JyB9LAogICAgc2VyaWVzOiB7IHNoYWRvd1NpemU6IDAg
fSwKICAgIGJhcnM6IHtzaG93OiB0cnVlLCBhbGlnbjogJ2NlbnRlcicsIGJhcldpZHRoOiAwLjV9
LAogICAgbGluZXM6IHsgc2hvdzogZmFsc2UgfSwKICAgIHBvaW50czogeyBzaG93OiB0cnVlIH0s
CiAgICBncmlkOiB7CiAgICAgICAgYm9yZGVyV2lkdGg6IDEsCiAgICAgICAgYm9yZGVyQ29sb3I6
ICcjY2NjJywKICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJywKICAgICAgICBob3ZlcmFi
bGU6IHRydWUsCiAgICAgICAgYXV0b0hpZ2hsaWdodDogZmFsc2UsCiAgICB9Cn07Cgp2YXIgdGlt
ZVBsb3RPcHRpb25zID0gewogICAgeWF4aXM6IHsgc2hvdzogZmFsc2UgfSwKICAgIHhheGlzOiB7
IHNob3c6IGZhbHNlIH0sCiAgICBsaW5lczogeyBzaG93OiB0cnVlIH0sCiAgICBncmlkOiB7IGJv
cmRlcldpZHRoOiAxLCBib3JkZXJDb2xvcjogJyNjY2MnIH0sCiAgICBjb2xvcnM6IFsgcGxvdENv
bG9yIF0KfTsKCmZ1bmN0aW9uIGNyZWF0ZVBsb3QoY29udGFpbmVyLCB0ZXN0KSB7CiAgICB2YXIg
c2VjdGlvbiA9ICQoJzxzZWN0aW9uPjxkaXYgY2xhc3M9InBsb3QiPjwvZGl2PjxkaXYgY2xhc3M9
InRpbWUtcGxvdHMiPjwvZGl2PicKICAgICAgICArICc8c3BhbiBjbGFzcz0idG9vbHRpcCI+PC9z
cGFuPjwvc2VjdGlvbj4nKTsKICAgIHNlY3Rpb24uY2hpbGRyZW4oJy5wbG90JykuY3NzKHsnd2lk
dGgnOiAoMTAwICogdGVzdC5yZXN1bHRzKCkubGVuZ3RoICsgMjUpICsgJ3B4JywgJ2hlaWdodCc6
ICczMDBweCd9KTsKICAgICQoY29udGFpbmVyKS5hcHBlbmQoc2VjdGlvbik7CgogICAgdmFyIHBs
b3RDb250YWluZXIgPSBzZWN0aW9uLmNoaWxkcmVuKCcucGxvdCcpOwogICAgdmFyIG1pbklzWmVy
byA9IHRydWU7CiAgICBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklzWmVybyk7
CgogICAgYXR0YWNoVGltZVBsb3RzKHRlc3QsIHNlY3Rpb24uY2hpbGRyZW4oJy50aW1lLXBsb3Rz
JykpOwoKICAgIHZhciB0b29sdGlwID0gc2VjdGlvbi5jaGlsZHJlbignLnRvb2x0aXAnKTsKICAg
IHBsb3RDb250YWluZXIuYmluZCgncGxvdGhvdmVyJywgZnVuY3Rpb24gKGV2ZW50LCBwb3NpdGlv
biwgaXRlbSkgewogICAgICAgIGlmIChpdGVtKSB7CiAgICAgICAgICAgIHZhciBwb3N0Zml4ID0g
aXRlbS5zZXJpZXMuaWQgPyAnICgnICsgaXRlbS5zZXJpZXMuaWQgKyAnKScgOiAnJzsKICAgICAg
ICAgICAgdG9vbHRpcC5odG1sKGl0ZW0uZGF0YXBvaW50WzFdLnRvUHJlY2lzaW9uKDQpICsgcG9z
dGZpeCk7CiAgICAgICAgICAgIHZhciBzZWN0aW9uT2Zmc2V0ID0gJChzZWN0aW9uKS5vZmZzZXQo
KTsKICAgICAgICAgICAgdG9vbHRpcC5jc3Moe2xlZnQ6IGl0ZW0ucGFnZVggLSBzZWN0aW9uT2Zm
c2V0LmxlZnQgLSB0b29sdGlwLm91dGVyV2lkdGgoKSAvIDIsIHRvcDogaXRlbS5wYWdlWSAtIHNl
Y3Rpb25PZmZzZXQudG9wICsgMTB9KTsKICAgICAgICAgICAgdG9vbHRpcC5mYWRlSW4oMjAwKTsK
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgdG9vbHRpcC5oaWRlKCk7CiAgICB9KTsKICAgIHBs
b3RDb250YWluZXIubW91c2VvdXQoZnVuY3Rpb24gKCkgewogICAgICAgIHRvb2x0aXAuaGlkZSgp
OwogICAgfSk7CiAgICBwbG90Q29udGFpbmVyLmNsaWNrKGZ1bmN0aW9uIChldmVudCkgewogICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgbWluSXNaZXJvID0gIW1pbklzWmVy
bzsKICAgICAgICBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklzWmVybyk7CiAg
ICB9KTsKCiAgICByZXR1cm4gc2VjdGlvbjsKfQoKZnVuY3Rpb24gYXR0YWNoVGltZVBsb3RzKHRl
c3QsIGNvbnRhaW5lcikgewogICAgdmFyIHJlc3VsdHMgPSB0ZXN0LnJlc3VsdHMoKTsKICAgIHZh
ciBhdHRhY2hlZFBsb3QgPSBmYWxzZTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5s
ZW5ndGg7IGkrKykgewogICAgICAgIGNvbnRhaW5lci5hcHBlbmQoJzxkaXY+PC9kaXY+Jyk7CiAg
ICAgICAgdmFyIHZhbHVlcyA9IHJlc3VsdHNbaV0udmFsdWVzKCk7CiAgICAgICAgaWYgKCF2YWx1
ZXMpCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGF0dGFjaGVkUGxvdCA9IHRydWU7Cgog
ICAgICAgICQucGxvdChjb250YWluZXIuY2hpbGRyZW4oKS5sYXN0KCksIFt2YWx1ZXMubWFwKGZ1
bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHsgcmV0dXJuIFtpbmRleCwgdmFsdWVdOyB9KV0sCiAgICAg
ICAgICAgICQuZXh0ZW5kKHRydWUsIHt9LCB0aW1lUGxvdE9wdGlvbnMsIHt5YXhpczoge21pbjog
TWF0aC5taW4uYXBwbHkoTWF0aCwgdmFsdWVzKSAqIDAuOSwgbWF4OiBNYXRoLm1heC5hcHBseShN
YXRoLCB2YWx1ZXMpICogMS4xfSwKICAgICAgICAgICAgICAgIHhheGlzOiB7bWluOiAtMC41LCBt
YXg6IHZhbHVlcy5sZW5ndGggLSAwLjV9fSkpOwogICAgfQogICAgaWYgKCFhdHRhY2hlZFBsb3Qp
CiAgICAgICAgY29udGFpbmVyLmNoaWxkcmVuKCkucmVtb3ZlKCk7Cn0KCmZ1bmN0aW9uIGF0dGFj
aFBsb3QodGVzdCwgcGxvdENvbnRhaW5lciwgbWluSXNaZXJvKSB7CiAgICB2YXIgcmVzdWx0cyA9
IHRlc3QucmVzdWx0cygpOwoKICAgIHZhciB2YWx1ZXMgPSByZXN1bHRzLnJlZHVjZShmdW5jdGlv
biAodmFsdWVzLCByZXN1bHQsIGluZGV4KSB7CiAgICAgICAgdmFyIG5ld1ZhbHVlcyA9IHJlc3Vs
dC52YWx1ZXMoKTsKICAgICAgICByZXR1cm4gbmV3VmFsdWVzID8gdmFsdWVzLmNvbmNhdChuZXdW
YWx1ZXMubWFwKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gW2luZGV4LCB2YWx1ZV07IH0pKSA6
IHZhbHVlczsKICAgIH0sIFtdKTsKCiAgICB2YXIgcGxvdERhdGEgPSBbJC5leHRlbmQodHJ1ZSwg
e30sIHN1YnBvaW50c1Bsb3RPcHRpb25zLCB7ZGF0YTogdmFsdWVzfSldOwogICAgcGxvdERhdGEu
cHVzaCh7aWQ6ICcmbXU7JywgZGF0YTogcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5k
ZXgpIHsgcmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1lYW4oKV07IH0pLCBjb2xvcjogcGxvdENvbG9y
fSk7CgogICAgdmFyIG92ZXJhbGxNYXggPSBTdGF0aXN0aWNzLm1heChyZXN1bHRzLm1hcChmdW5j
dGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gcmVzdWx0Lm1heCgpOyB9KSk7CiAgICB2YXIg
b3ZlcmFsbE1pbiA9IFN0YXRpc3RpY3MubWluKHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQs
IGluZGV4KSB7IHJldHVybiByZXN1bHQubWluKCk7IH0pKTsKICAgIHZhciBtYXJnaW4gPSAob3Zl
cmFsbE1heCAtIG92ZXJhbGxNaW4pICogMC4xOwogICAgdmFyIGN1cnJlbnRQbG90T3B0aW9ucyA9
ICQuZXh0ZW5kKHRydWUsIHt9LCBtYWluUGxvdE9wdGlvbnMsIHt5YXhpczogewogICAgICAgIG1p
bjogbWluSXNaZXJvID8gMCA6IG92ZXJhbGxNaW4gLSBtYXJnaW4sCiAgICAgICAgbWF4OiBtaW5J
c1plcm8gPyBvdmVyYWxsTWF4ICogMS4xIDogb3ZlcmFsbE1heCArIG1hcmdpbn19KTsKCiAgICBj
dXJyZW50UGxvdE9wdGlvbnMueGF4aXMubWF4ID0gcmVzdWx0cy5sZW5ndGggLSAwLjU7CiAgICBj
dXJyZW50UGxvdE9wdGlvbnMueGF4aXMudGlja3MgPSByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVz
dWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQucnVuKCkubGFiZWwoKV07IH0pOwoK
ICAgICQucGxvdChwbG90Q29udGFpbmVyLCBwbG90RGF0YSwgY3VycmVudFBsb3RPcHRpb25zKTsK
fQoKZnVuY3Rpb24gdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHZhbHVlKSB7CiAgICB2YXIgZGVjaW1h
bCA9IHZhbHVlLnRvRml4ZWQoMik7CiAgICByZXR1cm4gZGVjaW1hbDsKfQoKZnVuY3Rpb24gZm9y
bWF0UGVyY2VudGFnZShmcmFjdGlvbikgewogICAgdmFyIHBlcmNlbnRhZ2UgPSBmcmFjdGlvbiAq
IDEwMDsKICAgIHJldHVybiAoZnJhY3Rpb24gKiAxMDApLnRvRml4ZWQoMikgKyAnJSc7Cn0KCmZ1
bmN0aW9uIGNyZWF0ZVRhYmxlKHRlc3RzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVy
ZW5jZUluZGV4KSB7CiAgICAkKCcjY29udGFpbmVyJykuaHRtbCgnPHRoZWFkPjx0cj48dGg+VGVz
dDwvdGg+PHRoPlVuaXQ8L3RoPicgKyBydW5zLm1hcChmdW5jdGlvbiAocnVuLCBpbmRleCkgewog
ICAgICAgIHJldHVybiAnPHRoIGNvbHNwYW49IicgKyAoaW5kZXggPT0gcmVmZXJlbmNlSW5kZXgg
PyAyIDogMykgKyAnIiBjbGFzcz0ie3NvcnRlcjogXCdjb21wYXJpc29uXCd9Ij4nICsgcnVuLmxh
YmVsKCkgKyAnPC90aD4nOwogICAgfSkucmVkdWNlKGZ1bmN0aW9uIChtYXJrdXAsIGNlbGwpIHsg
cmV0dXJuIG1hcmt1cCArIGNlbGw7IH0sICcnKSArICc8L3RyPjwvaGVhZD48dGJvZHk+PC90Ym9k
eT4nKTsKCiAgICB2YXIgdGVzdE5hbWVzID0gW107CiAgICBmb3IgKHRlc3ROYW1lIGluIHRlc3Rz
KQogICAgICAgIHRlc3ROYW1lcy5wdXNoKHRlc3ROYW1lKTsKCiAgICB0ZXN0TmFtZXMuc29ydCgp
Lm1hcChmdW5jdGlvbiAodGVzdE5hbWUpIHsKICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW3Rlc3RO
YW1lXTsKICAgICAgICBpZiAodGVzdC5pc01lbW9yeVRlc3QoKSAhPSBzaG91bGRJZ25vcmVNZW1v
cnkpCiAgICAgICAgICAgIGNyZWF0ZVRhYmxlUm93KHJ1bnMsIHRlc3QsIHJlZmVyZW5jZUluZGV4
KTsKICAgIH0pOwoKICAgICQoJyNjb250YWluZXInKS50YWJsZXNvcnRlcih7d2lkZ2V0czogWyd6
ZWJyYSddfSk7Cn0KCmZ1bmN0aW9uIGxpbmVhclJlZ3Jlc3Npb24ocG9pbnRzKSB7CiAgICAvLyBJ
bXBsZW1lbnQgaHR0cDovL3d3dy5lYXN5Y2FsY3VsYXRpb24uY29tL3N0YXRpc3RpY3MvbGVhcm4t
Y29ycmVsYXRpb24ucGhwLgogICAgLy8geCA9IG1hZ25pdHVkZQogICAgLy8geSA9IGl0ZXJhdGlv
bnMKICAgIHZhciBzdW1YID0gMDsKICAgIHZhciBzdW1ZID0gMDsKICAgIHZhciBzdW1YU3F1YXJl
ZCA9IDA7CiAgICB2YXIgc3VtWVNxdWFyZWQgPSAwOwogICAgdmFyIHN1bVhUaW1lc1kgPSAwOwoK
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFy
IHggPSBpOwogICAgICAgIHZhciB5ID0gcG9pbnRzW2ldOwogICAgICAgIHN1bVggKz0geDsKICAg
ICAgICBzdW1ZICs9IHk7CiAgICAgICAgc3VtWFNxdWFyZWQgKz0geCAqIHg7CiAgICAgICAgc3Vt
WVNxdWFyZWQgKz0geSAqIHk7CiAgICAgICAgc3VtWFRpbWVzWSArPSB4ICogeTsKICAgIH0KCiAg
ICB2YXIgciA9IChwb2ludHMubGVuZ3RoICogc3VtWFRpbWVzWSAtIHN1bVggKiBzdW1ZKSAvCiAg
ICAgICAgTWF0aC5zcXJ0KChwb2ludHMubGVuZ3RoICogc3VtWFNxdWFyZWQgLSBzdW1YICogc3Vt
WCkgKgogICAgICAgICAgICAgICAgICAocG9pbnRzLmxlbmd0aCAqIHN1bVlTcXVhcmVkIC0gc3Vt
WSAqIHN1bVkpKTsKCiAgICBpZiAoaXNOYU4ocikgfHwgciA9PSBNYXRoLkluZmluaXR5KQogICAg
ICAgIHIgPSAwOwoKICAgIHZhciBzbG9wZSA9IChwb2ludHMubGVuZ3RoICogc3VtWFRpbWVzWSAt
IHN1bVggKiBzdW1ZKSAvIChwb2ludHMubGVuZ3RoICogc3VtWFNxdWFyZWQgLSBzdW1YICogc3Vt
WCk7CiAgICB2YXIgaW50ZXJjZXB0ID0gc3VtWSAvIHBvaW50cy5sZW5ndGggLSBzbG9wZSAqIHN1
bVggLyBwb2ludHMubGVuZ3RoOwogICAgcmV0dXJuIHtzbG9wZTogc2xvcGUsIGludGVyY2VwdDog
aW50ZXJjZXB0LCByU3F1YXJlZDogciAqIHJ9Owp9Cgp2YXIgd2FybmluZ1NpZ24gPSAnPHN2ZyB2
aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9IndpZHRoOiAxOHB4OyBoZWlnaHQ6IDE4cHg7IHZl
cnRpY2FsLWFsaWduOiBib3R0b207IiB2ZXJzaW9uPSIxLjEiPicKICAgICsgJzxwb2x5Z29uIGZp
bGw9InJlZCIgcG9pbnRzPSI1MCwxMCA5MCw4MCAxMCw4MCA1MCwxMCIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+JwogICAgKyAnPHBvbHln
b24gZmlsbD0id2hpdGUiIHBvaW50cz0iNDcsMzAgNDgsMjksIDUwLCAyOC43LCA1MiwyOSA1Mywz
MCA1MCw2MCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2lu
PSJyb3VuZCIgLz4nCiAgICArICc8Y2lyY2xlIGN4PSI1MCIgY3k9IjczIiByPSI2IiBmaWxsPSJ3
aGl0ZSIgLz4nCiAgICArICc8L3N2Zz4nOwoKZnVuY3Rpb24gY3JlYXRlVGFibGVSb3cocnVucywg
dGVzdCwgcmVmZXJlbmNlSW5kZXgpIHsKICAgIHZhciB0YWJsZVJvdyA9ICQoJzx0cj48dGQgY2xh
c3M9InRlc3QiPicgKyB0ZXN0Lm5hbWUoKSArICc8L3RkPjx0ZCBjbGFzcz0idW5pdCI+JyArIHRl
c3QudW5pdCgpICsgJzwvdGQ+PC90cj4nKTsKCiAgICBmdW5jdGlvbiBtYXJrdXBGb3JSdW4ocmVz
dWx0LCByZWZlcmVuY2VSZXN1bHQpIHsKICAgICAgICB2YXIgY29tcGFyaXNvbkNlbGwgPSAnJzsK
ICAgICAgICB2YXIgaGlkZGVuVmFsdWUgPSAnJzsKICAgICAgICB2YXIgc2hvdWxkQ29tcGFyZSA9
IHJlc3VsdCAhPT0gcmVmZXJlbmNlUmVzdWx0OwogICAgICAgIGlmIChzaG91bGRDb21wYXJlICYm
IHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgICAgICB2YXIgcGVyY2VudERpZmZlcmVuY2UgPSBy
ZWZlcmVuY2VSZXN1bHQucGVyY2VudERpZmZlcmVuY2UocmVzdWx0KTsKICAgICAgICAgICAgdmFy
IGJldHRlciA9IHRlc3Quc21hbGxlcklzQmV0dGVyKCkgPyBwZXJjZW50RGlmZmVyZW5jZSA8IDAg
OiBwZXJjZW50RGlmZmVyZW5jZSA+IDA7CiAgICAgICAgICAgIHZhciBjb21wYXJpc29uID0gJyc7
CiAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSAnY29tcGFyaXNvbic7CiAgICAgICAgICAgIGlm
IChyZWZlcmVuY2VSZXN1bHQuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQocmVzdWx0KSkgewog
ICAgICAgICAgICAgICAgY29tcGFyaXNvbiA9IGZvcm1hdFBlcmNlbnRhZ2UoTWF0aC5hYnMocGVy
Y2VudERpZmZlcmVuY2UpKSArIChiZXR0ZXIgPyAnIEJldHRlcicgOiAnIFdvcnNlJm5ic3A7Jyk7
CiAgICAgICAgICAgICAgICBjbGFzc05hbWUgKz0gYmV0dGVyID8gJyBiZXR0ZXInIDogJyB3b3Jz
ZSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGlkZGVuVmFsdWUgPSAnPHNwYW4gc3R5bGU9
ImRpc3BsYXk6IG5vbmUiPnwnICsgY29tcGFyaXNvbiArICc8L3NwYW4+JzsKICAgICAgICAgICAg
Y29tcGFyaXNvbkNlbGwgPSAnPHRkIGNsYXNzPSInICsgY2xhc3NOYW1lICsgJyI+JyArIGNvbXBh
cmlzb24gKyAnPC90ZD4nOwogICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkQ29tcGFyZSkKICAgICAg
ICAgICAgY29tcGFyaXNvbkNlbGwgPSAnPHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPic7Cgog
ICAgICAgIHZhciB2YWx1ZXMgPSByZXN1bHQudmFsdWVzKCk7CiAgICAgICAgdmFyIHdhcm5pbmcg
PSAnJzsKICAgICAgICB2YXIgcmVncmVzc2lvbkFuYWx5c2lzID0gJyc7CiAgICAgICAgaWYgKHZh
bHVlcyAmJiB2YWx1ZXMubGVuZ3RoID4gMykgewogICAgICAgICAgICByZWdyZXNzaW9uUmVzdWx0
ID0gbGluZWFyUmVncmVzc2lvbih2YWx1ZXMpOwogICAgICAgICAgICByZWdyZXNzaW9uQW5hbHlz
aXMgPSAnc2xvcGU9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZWdyZXNzaW9uUmVzdWx0LnNs
b3BlKQogICAgICAgICAgICAgICAgKyAnLCBSXjI9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihy
ZWdyZXNzaW9uUmVzdWx0LnJTcXVhcmVkKTsKICAgICAgICAgICAgaWYgKHJlZ3Jlc3Npb25SZXN1
bHQuclNxdWFyZWQgPiAwLjYgJiYgTWF0aC5hYnMocmVncmVzc2lvblJlc3VsdC5zbG9wZSkgPiAw
LjAxKSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nID0gJyA8c3BhbiBjbGFzcz0icmVncmVzc2lv
bi13YXJuaW5nIiB0aXRsZT0iRGV0ZWN0ZWQgYSB0aW1lIGRlcGVuZGVuY3kgd2l0aCAnICsgcmVn
cmVzc2lvbkFuYWx5c2lzICsgJyI+JyArIHdhcm5pbmdTaWduICsgJyA8L3NwYW4+JzsKICAgICAg
ICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIHN0YXRpc3RpY3MgPSAnJnNpZ21hOz0nICsg
dG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSgpKSAr
ICcsIG1pbj0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5taW4oKSkKICAgICAgICAg
ICAgKyAnLCBtYXg9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWF4KCkpICsgJ1xu
JyArIHJlZ3Jlc3Npb25BbmFseXNpczsKCiAgICAgICAgLy8gVGFibGVzb3J0ZXIgZG9lc24ndCBr
bm93IGFib3V0IHRoZSBzZWNvbmQgY2VsbCBzbyBwdXQgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGlu
dmlzaWJsZSBlbGVtZW50LgogICAgICAgIHJldHVybiAnPHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxl
PSInICsgc3RhdGlzdGljcyArICciPicgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1l
YW4oKSkgKyBoaWRkZW5WYWx1ZQogICAgICAgICAgICArICc8L3RkPjx0ZCBjbGFzcz0iY29uZmlk
ZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSInICsgc3RhdGlzdGljcyArICciPiZwbHVzbW47ICcK
ICAgICAgICAgICAgKyBmb3JtYXRQZXJjZW50YWdlKHJlc3VsdC5jb25maWRlbmNlSW50ZXJ2YWxE
ZWx0YVJhdGlvKCkpICsgd2FybmluZyArICc8L3RkPicgKyBjb21wYXJpc29uQ2VsbDsKICAgIH0K
CiAgICBmdW5jdGlvbiBtYXJrdXBGb3JNaXNzaW5nUnVuKGlzUmVmZXJlbmNlKSB7CiAgICAgICAg
cmV0dXJuICc8dGQgY29sc3Bhbj0iJyArIChpc1JlZmVyZW5jZSA/IDIgOiAzKSArICciIGNsYXNz
PSJtaXNzaW5nIj5NaXNzaW5nPC90ZD4nOwogICAgfQoKICAgIHZhciBydW5JbmRleCA9IDA7CiAg
ICB2YXIgcmVzdWx0cyA9IHRlc3QucmVzdWx0cygpOwogICAgdmFyIHJlZmVyZW5jZVJlc3VsdCA9
IHVuZGVmaW5lZDsKICAgIHZhciByZXN1bHRJbmRleE1hcCA9IHt9OwogICAgZm9yICh2YXIgaSA9
IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgd2hpbGUgKHJ1bnNbcnVuSW5k
ZXhdICE9PSByZXN1bHRzW2ldLnJ1bigpKQogICAgICAgICAgICBydW5JbmRleCsrOwogICAgICAg
IGlmIChydW5JbmRleCA9PSByZWZlcmVuY2VJbmRleCkKICAgICAgICAgICAgcmVmZXJlbmNlUmVz
dWx0ID0gcmVzdWx0c1tpXTsKICAgICAgICByZXN1bHRJbmRleE1hcFtydW5JbmRleF0gPSBpOwog
ICAgfQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydW5zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAg
dmFyIHJlc3VsdEluZGV4ID0gcmVzdWx0SW5kZXhNYXBbaV07CiAgICAgICAgaWYgKHJlc3VsdElu
ZGV4ID09IHVuZGVmaW5lZCkKICAgICAgICAgICAgdGFibGVSb3cuYXBwZW5kKG1hcmt1cEZvck1p
c3NpbmdSdW4oaSA9PSByZWZlcmVuY2VJbmRleCkpOwogICAgICAgIGVsc2UKICAgICAgICAgICAg
dGFibGVSb3cuYXBwZW5kKG1hcmt1cEZvclJ1bihyZXN1bHRzW3Jlc3VsdEluZGV4XSwgcmVmZXJl
bmNlUmVzdWx0KSk7CiAgICB9CgogICAgJCgnI2NvbnRhaW5lcicpLmNoaWxkcmVuKCd0Ym9keScp
Lmxhc3QoKS5hcHBlbmQodGFibGVSb3cpOwoKICAgIHRhYmxlUm93LmNsaWNrKGZ1bmN0aW9uIChl
dmVudCkgewogICAgICAgIGlmIChldmVudC50YXJnZXQgIT0gdGFibGVSb3dbMF0gJiYgZXZlbnQu
dGFyZ2V0LnBhcmVudE5vZGUgIT0gdGFibGVSb3dbMF0pCiAgICAgICAgICAgIHJldHVybjsKCiAg
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKCiAgICAgICAgdmFyIGZpcnN0Q2VsbCA9IHRh
YmxlUm93LmNoaWxkcmVuKCd0ZCcpLmZpcnN0KCk7CiAgICAgICAgaWYgKGZpcnN0Q2VsbC5jaGls
ZHJlbignc2VjdGlvbicpLmxlbmd0aCkgewogICAgICAgICAgICBmaXJzdENlbGwuY2hpbGRyZW4o
J3NlY3Rpb24nKS5yZW1vdmUoKTsKICAgICAgICAgICAgdGFibGVSb3cuY2hpbGRyZW4oJ3RkJyku
Y3NzKHsncGFkZGluZy1ib3R0b20nOiAnJ30pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
IHZhciBwbG90ID0gY3JlYXRlUGxvdChmaXJzdENlbGwsIHRlc3QpOwogICAgICAgICAgICBwbG90
LmNzcyh7J3Bvc2l0aW9uJzogJ2Fic29sdXRlJywgJ3otaW5kZXgnOiAyfSk7CiAgICAgICAgICAg
IHZhciBvZmZzZXQgPSB0YWJsZVJvdy5vZmZzZXQoKTsKICAgICAgICAgICAgb2Zmc2V0LmxlZnQg
Kz0gMTsKICAgICAgICAgICAgb2Zmc2V0LnRvcCArPSB0YWJsZVJvdy5vdXRlckhlaWdodCgpOwog
ICAgICAgICAgICBwbG90Lm9mZnNldChvZmZzZXQpOwogICAgICAgICAgICB0YWJsZVJvdy5jaGls
ZHJlbigndGQnKS5jc3MoeydwYWRkaW5nLWJvdHRvbSc6IHBsb3Qub3V0ZXJIZWlnaHQoKSArIDV9
KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwp9CgpmdW5jdGlvbiBp
bml0KCkgewogICAgJC50YWJsZXNvcnRlci5hZGRQYXJzZXIoewogICAgICAgIGlkOiAnY29tcGFy
aXNvbicsCiAgICAgICAgaXM6IGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMuaW5k
ZXhPZignfCcpID49IDA7CiAgICAgICAgfSwKICAgICAgICBmb3JtYXQ6IGZ1bmN0aW9uKHMpIHsK
ICAgICAgICAgICAgdmFyIHBhcnNlZCA9IHBhcnNlRmxvYXQocy5zdWJzdHJpbmcocy5pbmRleE9m
KCd8JykgKyAxKSk7CiAgICAgICAgICAgIHJldHVybiBpc05hTihwYXJzZWQpID8gMCA6IHBhcnNl
ZDsKICAgICAgICB9LAogICAgICAgIHR5cGU6ICdudW1lcmljJywKICAgIH0pOwoKICAgIHZhciBy
dW5zID0gW107CiAgICB2YXIgbWV0cmljcyA9IHt9OwogICAgJC5lYWNoKEpTT04ucGFyc2UoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pzb24nKS50ZXh0Q29udGVudCksIGZ1bmN0aW9uIChpbmRl
eCwgZW50cnkpIHsKICAgICAgICB2YXIgcnVuID0gbmV3IFRlc3RSdW4oZW50cnkpOwogICAgICAg
IHJ1bnMucHVzaChydW4pOwoKICAgICAgICBmdW5jdGlvbiBhZGRUZXN0cyh0ZXN0cywgcGFyZW50
RnVsbE5hbWUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gdGVzdHMpIHsKICAg
ICAgICAgICAgICAgIHZhciBmdWxsVGVzdE5hbWUgPSBwYXJlbnRGdWxsTmFtZSArICcvJyArIHRl
c3ROYW1lOwogICAgICAgICAgICAgICAgdmFyIHJhd01ldHJpY3MgPSB0ZXN0c1t0ZXN0TmFtZV0u
bWV0cmljczsKCiAgICAgICAgICAgICAgICBmb3IgKHZhciBtZXRyaWNOYW1lIGluIHJhd01ldHJp
Y3MpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZnVsbE1ldHJpY05hbWUgPSBmdWxsVGVzdE5h
bWUgKyAnOicgKyBtZXRyaWNOYW1lOwogICAgICAgICAgICAgICAgICAgIHZhciBtZXRyaWMgPSBt
ZXRyaWNzW2Z1bGxNZXRyaWNOYW1lXTsKICAgICAgICAgICAgICAgICAgICBpZiAoIW1ldHJpYykg
ewogICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWMgPSBuZXcgUGVyZlRlc3RNZXRyaWMoZnVs
bFRlc3ROYW1lLCBtZXRyaWNOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgbWV0cmljc1tm
dWxsTWV0cmljTmFtZV0gPSBtZXRyaWM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgIG1ldHJpYy5hZGRSZXN1bHQobmV3IFRlc3RSZXN1bHQobWV0cmljLCByYXdNZXRy
aWNzW21ldHJpY05hbWVdLmN1cnJlbnQsIHJ1bikpOwogICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgIGlmICh0ZXN0c1t0ZXN0TmFtZV0udGVzdHMpCiAgICAgICAgICAgICAgICAgICAg
YWRkVGVzdHModGVzdHNbdGVzdE5hbWVdLnRlc3RzLCBmdWxsVGVzdE5hbWUpOwogICAgICAgICAg
ICB9CiAgICAgICAgfQoKICAgICAgICBhZGRUZXN0cyhlbnRyeS50ZXN0cywgJycpOwogICAgfSk7
CgogICAgdmFyIHNob3VsZElnbm9yZU1lbW9yeT0gdHJ1ZTsKICAgIHZhciByZWZlcmVuY2VJbmRl
eCA9IDA7CgogICAgY3JlYXRlVGFibGUobWV0cmljcywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5
LCByZWZlcmVuY2VJbmRleCk7CgogICAgJCgnI3RpbWUtbWVtb3J5JykuYmluZCgnY2hhbmdlJywg
ZnVuY3Rpb24gKGV2ZW50LCBjaGVja2VkRWxlbWVudCkgewogICAgICAgIHNob3VsZElnbm9yZU1l
bW9yeSA9IGNoZWNrZWRFbGVtZW50LnRleHRDb250ZW50ID09ICdUaW1lJzsKICAgICAgICBjcmVh
dGVUYWJsZShtZXRyaWNzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5jZUluZGV4
KTsKICAgIH0pOwoKICAgIHJ1bnMubWFwKGZ1bmN0aW9uIChydW4sIGluZGV4KSB7CiAgICAgICAg
JCgnI3JlZmVyZW5jZScpLmFwcGVuZCgnPHNwYW4gdmFsdWU9IicgKyBpbmRleCArICciJyArIChp
bmRleCA9PSByZWZlcmVuY2VJbmRleCA/ICcgY2xhc3M9ImNoZWNrZWQiJyA6ICcnKSArICc+JyAr
IHJ1bi5sYWJlbCgpICsgJzwvc3Bhbj4nKTsKICAgIH0pCgogICAgJCgnI3JlZmVyZW5jZScpLmJp
bmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChldmVudCwgY2hlY2tlZEVsZW1lbnQpIHsKICAgICAgICBy
ZWZlcmVuY2VJbmRleCA9IHBhcnNlSW50KGNoZWNrZWRFbGVtZW50LmdldEF0dHJpYnV0ZSgndmFs
dWUnKSk7CiAgICAgICAgY3JlYXRlVGFibGUobWV0cmljcywgcnVucywgc2hvdWxkSWdub3JlTWVt
b3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsKCiAgICAkKCcuY2hlY2tib3gnKS5lYWNoKGZ1
bmN0aW9uIChpbmRleCwgY2hlY2tib3gpIHsKICAgICAgICAkKGNoZWNrYm94KS5jaGlsZHJlbign
c3BhbicpLmNsaWNrKGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICAgICBpZiAoJCh0aGlzKS5o
YXNDbGFzcygnY2hlY2tlZCcpKQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAk
KGNoZWNrYm94KS5jaGlsZHJlbignc3BhbicpLnJlbW92ZUNsYXNzKCdjaGVja2VkJyk7CiAgICAg
ICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJChjaGVja2Jv
eCkudHJpZ2dlcignY2hhbmdlJywgJCh0aGlzKSk7CiAgICAgICAgfSk7CiAgICB9KTsKfQoKPC9z
Y3JpcHQ+CjxzY3JpcHQgaWQ9Impzb24iIHR5cGU9ImFwcGxpY2F0aW9uL2pzb24iPlt7InRlc3Rz
IjogeyJMYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1
bmsvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQiLCAidGVzdHMiOiB7ImxpbmUtbGF5b3V0IjogeyJ1
cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVz
dHMvTGF5b3V0L2xpbmUtbGF5b3V0Lmh0bWwiLCAibWV0cmljcyI6IHsiTWFsbG9jIjogeyJjdXJy
ZW50IjogW1sxNjQwMDA4LjAsIDE2MjYxODQuMCwgMTYyMjE0NC4wLCAxNjQ1NjMyLjAsIDE2NDQ1
MzYuMF0sIFsxNjQwMDE2LjAsIDE2MjIwOTYuMCwgMTYyMTI4OC4wLCAxNjQ0NzIwLjAsIDE2Mzk0
NzIuMF0sIFsxNjQwMDAwLjAsIDE2MjYxNzYuMCwgMTYyNjIzMi4wLCAxNjQ5NjU2LjAsIDE2NDQ1
MjguMF0sIFsxNjQwMDE2LjAsIDE2MjYxMzYuMCwgMTYyNjE5Mi4wLCAxNjQ1NTg0LjAsIDE2NDQ0
MzIuMF1dfSwgIlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzExNS44MzAxMTU4MzAxMTU4MywgMTEyLjc4
MTk1NDg4NzIxODA1LCAxMTIuNjQwODAxMDAxMjUxNTYsIDExMi4zNTk1NTA1NjE3OTc3NSwgMTEy
LjA3OTcwMTEyMDc5NzAxXSwgWzEwOC4xNzMwNzY5MjMwNzY5MiwgMTE0LjY0OTY4MTUyODY2MjQz
LCAxMTUuMzg0NjE1Mzg0NjE1MzksIDExNS4zODQ2MTUzODQ2MTUzOSwgMTE0LjY0OTY4MTUyODY2
MjQzXSwgWzExMi41LCAxMTUuNjgxMjMzOTMzMTYxOTUsIDExNy4wMzUxMTA1MzMxNTk5NSwgMTE2
LjI3OTA2OTc2NzQ0MTg1LCAxMTUuOTc5MzgxNDQzMjk4OTZdLCBbMTE2LjEyOTAzMjI1ODA2NDUx
LCAxMTYuMTI5MDMyMjU4MDY0NTEsIDExNi40Mjk0OTU0NzIxODYyOSwgMTE1LjUzMjczNDI3NDcx
MTE3LCAxMTUuNTMyNzM0Mjc0NzExMTddXX0sICJKU0hlYXAiOiB7ImN1cnJlbnQiOiBbWzU2MTY4
LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgwMzIu
MCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgzMzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4w
LCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAs
IDU4MzM2LjBdXX19fX19fSwgImJ1aWxkVGltZSI6ICIyMDEzLTA3LTE5VDA2OjAxOjE4LjE4MDA2
NiIsICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDctMThUMDA6
MzU6MzAuNDI1OTEwWiIsICJyZXZpc2lvbiI6ICIxNTI4MjMifX19LCB7InRlc3RzIjogeyJMYXlv
dXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9y
bWFuY2VUZXN0cy9MYXlvdXQiLCAidGVzdHMiOiB7ImxpbmUtbGF5b3V0IjogeyJ1cmwiOiAiaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0
L2xpbmUtbGF5b3V0Lmh0bWwiLCAibWV0cmljcyI6IHsiTWFsbG9jIjogeyJjdXJyZW50IjogW1sx
NjM1OTIwLjAsIDE2MjIwOTYuMCwgMTYyMjE1Mi4wLCAxNjQxNTQ0LjAsIDE2NDAzOTIuMF0sIFsx
NjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYyNjE5Mi4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODguMF0sIFsx
NjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYyNjI0OC4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODguMF0sIFsx
NjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYyNjI0OC4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODguMF1dfSwg
IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzExNy45NTU0MzkwNTYzNTY0OCwgMTEyLjkyMzQ2Mjk4NjE5
ODI1LCAxMTguNDIxMDUyNjMxNTc4OTUsIDExOC4yNjU0NDAyMTAyNDk2NiwgMTE4LjI2NTQ0MDIx
MDI0OTY2XSwgWzExOC40MjEwNTI2MzE1Nzg5NSwgMTE3LjgwMTA0NzEyMDQxODg0LCAxMTguNDIx
MDUyNjMxNTc4OTUsIDExOC4yNjU0NDAyMTAyNDk2NiwgMTE4LjExMDIzNjIyMDQ3MjQ0XSwgWzEx
OC4yNjU0NDAyMTAyNDk2NiwgMTE4LjczMzUwOTIzNDgyODUsIDExNy45NTU0MzkwNTYzNTY0OCwg
MTE3Ljk1NTQzOTA1NjM1NjQ4LCAxMTguNTc3MDc1MDk4ODE0MjNdLCBbMTE4LjU3NzA3NTA5ODgx
NDIzLCAxMTcuOTU1NDM5MDU2MzU2NDgsIDExOC40MjEwNTI2MzE1Nzg5NSwgMTE3Ljk1NTQzOTA1
NjM1NjQ4LCAxMTcuODAxMDQ3MTIwNDE4ODRdXX0sICJKU0hlYXAiOiB7ImN1cnJlbnQiOiBbWzU2
MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgw
MzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgzMzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEw
NC4wLCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0
LjAsIDU4MzM2LjBdXX19fX19fSwgInJldmlzaW9ucyI6IHsiV2ViS2l0IjogeyJ0aW1lc3RhbXAi
OiAiMjAxMy0wNy0xOFQwMDozNTozMC40MjU5MTBaIiwgInJldmlzaW9uIjogIjE1MjgyMyJ9fSwg
ImJ1aWxkVGltZSI6ICIyMDEzLTA3LTE5VDA3OjQ0OjUxLjIxODM2NiIsICJkZXNjcmlwdGlvbiI6
ICJwYXRjaGVkIn0sIHsidGVzdHMiOiB7IkxheW91dCI6IHsidXJsIjogImh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0xheW91dCIsICJ0ZXN0cyI6
IHsibGluZS1sYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIv
dHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvbGluZS1sYXlvdXQuaHRtbCIsICJtZXRyaWNz
IjogeyJNYWxsb2MiOiB7ImN1cnJlbnQiOiBbWzE2NDAwMTYuMCwgMTYyMjA5Ni4wLCAxNjIyMTUy
LjAsIDE2NDU2NDAuMCwgMTY0NDU0NC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5Mi4wLCAxNjI2MjQ4
LjAsIDE2NDU2NDAuMCwgMTY0NDU0NC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5Mi4wLCAxNjI2MjQ4
LjAsIDE2NDU1ODQuMCwgMTY0NDQ4OC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5Mi4wLCAxNjI2MjQ4
LjAsIDE2NDU2NDAuMCwgMTY0NDQ4OC4wXV19LCAiUnVucyI6IHsiY3VycmVudCI6IFtbMTE1LjIz
Njg3NTgwMDI1NjA5LCAxMTMuOTI0MDUwNjMyOTExMzksIDExNS42ODEyMzM5MzMxNjE5NSwgMTE0
LjY0OTY4MTUyODY2MjQzLCAxMTQuNzk1OTE4MzY3MzQ2OTRdLCBbMTE2LjI3OTA2OTc2NzQ0MTg1
LCAxMTQuNzk1OTE4MzY3MzQ2OTQsIDExNS45NzkzODE0NDMyOTg5NiwgMTEzLjc4MDAyNTI4NDQ1
MDA2LCAxMTUuNTMyNzM0Mjc0NzExMTddLCBbMTE1LjgzMDExNTgzMDExNTgzLCAxMTUuNTMyNzM0
Mjc0NzExMTcsIDExNS42ODEyMzM5MzMxNjE5NSwgMTE1LjY4MTIzMzkzMzE2MTk1LCAxMTMuNjM2
MzYzNjM2MzYzNjRdLCBbMTE2LjEyOTAzMjI1ODA2NDUxLCAxMTcuMDM1MTEwNTMzMTU5OTUsIDEx
Ni41ODAzMTA4ODA4MjkwMiwgMTE2Ljg4MzExNjg4MzExNjg4LCAxMTYuNTgwMzEwODgwODI5MDJd
XX0sICJKU0hlYXAiOiB7ImN1cnJlbnQiOiBbWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4
MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgz
MzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2
MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdXX19fX19fSwgImJ1aWxk
VGltZSI6ICIyMDEzLTA3LTE5VDA3OjQ3OjIyLjk3MTk3OSIsICJyZXZpc2lvbnMiOiB7IldlYktp
dCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDctMThUMDA6MzU6MzAuNDI1OTEwWiIsICJyZXZpc2lv
biI6ICIxNTI4MjMifX19LCB7InRlc3RzIjogeyJMYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQiLCAidGVz
dHMiOiB7ImxpbmUtbGF5b3V0IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93
c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L2xpbmUtbGF5b3V0Lmh0bWwiLCAibWV0
cmljcyI6IHsiTWFsbG9jIjogeyJjdXJyZW50IjogW1sxNjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYy
NjI0OC4wLCAxNjQ1NjQwLjAsIDE2NDQ1NDQuMF0sIFsxNjM1OTIwLjAsIDE2MjIwOTYuMCwgMTYy
MjE1Mi4wLCAxNjQxNTQ0LjAsIDE2NDA0NDguMF0sIFsxNjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYy
NjI0OC4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODguMF0sIFsxNjM1OTIwLjAsIDE2MjIwOTYuMCwgMTYy
MjE1Mi4wLCAxNjQxNTQ0LjAsIDE2NDA0NDguMF1dfSwgIlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzEx
OC43MzM1MDkyMzQ4Mjg1LCAxMTYuNTgwMzEwODgwODI5MDIsIDExOC44OTAzNTY2NzEwNzAwMSwg
MTE4LjExMDIzNjIyMDQ3MjQ0LCAxMTkuMDQ3NjE5MDQ3NjE5MDVdLCBbMTE4LjczMzUwOTIzNDgy
ODUsIDExOC40MjEwNTI2MzE1Nzg5NSwgMTE4Ljg5MDM1NjY3MTA3MDAxLCAxMTcuODAxMDQ3MTIw
NDE4ODQsIDExOC4xMTAyMzYyMjA0NzI0NF0sIFsxMTkuMzYzMzk1MjI1NDY0MTksIDExOC4xMTAy
MzYyMjA0NzI0NCwgMTE4LjU3NzA3NTA5ODgxNDIzLCAxMTguNTc3MDc1MDk4ODE0MjMsIDExOC43
MzM1MDkyMzQ4Mjg1XSwgWzExNy42NDcwNTg4MjM1Mjk0LCAxMTUuODMwMTE1ODMwMTE1ODMsIDEx
Ni4yNzkwNjk3Njc0NDE4NSwgMTE0LjY0OTY4MTUyODY2MjQzLCAxMTAuNzAxMTA3MDExMDcwMV1d
fSwgIkpTSGVhcCI6IHsiY3VycmVudCI6IFtbNTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgy
NjQuMCwgNTgzMzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1ODMz
Ni4wXSwgWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdLCBbNTYx
NjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgzMzYuMF1dfX19fX19LCAiZGVzY3Jp
cHRpb24iOiAicGF0Y2hlZCIsICJidWlsZFRpbWUiOiAiMjAxMy0wNy0xOVQwNzo0ODo0MS44MzA1
NDUiLCAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6ICIyMDEzLTA3LTE4VDAw
OjM1OjMwLjQyNTkxMFoiLCAicmV2aXNpb24iOiAiMTUyODIzIn19fSwgeyJ0ZXN0cyI6IHsiTGF5
b3V0IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZv
cm1hbmNlVGVzdHMvTGF5b3V0IiwgInRlc3RzIjogeyJsaW5lLWxheW91dCI6IHsidXJsIjogImh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0xheW91
dC9saW5lLWxheW91dC5odG1sIiwgIm1ldHJpY3MiOiB7Ik1hbGxvYyI6IHsiY3VycmVudCI6IFtb
MTY0MDAxNi4wLCAxNjI2MTkyLjAsIDE2MjIxNTIuMCwgMTY0NTY0MC4wLCAxNjQ0NTQ0LjBdLCBb
MTY0MDAxNi4wLCAxNjI2MTkyLjAsIDE2MjYyNDguMCwgMTY0NTU4NC4wLCAxNjQ0NDMyLjBdLCBb
MTY0MDAxNi4wLCAxNjI2MTkyLjAsIDE2MjYyNDguMCwgMTY0NTY0MC4wLCAxNjQ0NTQ0LjBdLCBb
MTY0MDAxNi4wLCAxNjI2MTkyLjAsIDE2MjYxOTIuMCwgMTY0NTU4NC4wLCAxNjQ0NDMyLjBdXX0s
ICJSdW5zIjogeyJjdXJyZW50IjogW1sxMTUuODMwMTE1ODMwMTE1ODMsIDExMi43ODE5NTQ4ODcy
MTgwNSwgMTE1LjM4NDYxNTM4NDYxNTM5LCAxMTQuNzk1OTE4MzY3MzQ2OTQsIDExNS4wODk1MTQw
NjY0OTYxNl0sIFsxMTUuODMwMTE1ODMwMTE1ODMsIDExNS4yMzY4NzU4MDAyNTYwOSwgMTE1LjUz
MjczNDI3NDcxMTE3LCAxMTUuODMwMTE1ODMwMTE1ODMsIDExNS4yMzY4NzU4MDAyNTYwOV0sIFsx
MTUuNTMyNzM0Mjc0NzExMTcsIDExNC42NDk2ODE1Mjg2NjI0MywgMTE1LjY4MTIzMzkzMzE2MTk1
LCAxMTUuOTc5MzgxNDQzMjk4OTYsIDExNS4wODk1MTQwNjY0OTYxNl0sIFsxMTUuODMwMTE1ODMw
MTE1ODMsIDExNS41MzI3MzQyNzQ3MTExNywgMTE1LjgzMDExNTgzMDExNTgzLCAxMTQuOTQyNTI4
NzM1NjMyMTgsIDExNS41MzI3MzQyNzQ3MTExN11dfSwgIkpTSGVhcCI6IHsiY3VycmVudCI6IFtb
NTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgzMzYuMF0sIFs1NjE2OC4wLCA1
ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2MTY4LjAsIDU4MDMyLjAsIDU4
MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgy
NjQuMCwgNTgzMzYuMF1dfX19fX19LCAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFt
cCI6ICIyMDEzLTA3LTE4VDAwOjM1OjMwLjQyNTkxMFoiLCAicmV2aXNpb24iOiAiMTUyODIzIn19
LCAiYnVpbGRUaW1lIjogIjIwMTMtMDctMTlUMDg6MTU6NTEuNDIwNDMxIiwgImRlc2NyaXB0aW9u
IjogImlubGluZUNhcGFjaXR5PTY0In0sIHsidGVzdHMiOiB7IkxheW91dCI6IHsidXJsIjogImh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0xheW91
dCIsICJ0ZXN0cyI6IHsibGluZS1sYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvbGluZS1sYXlvdXQuaHRt
bCIsICJtZXRyaWNzIjogeyJNYWxsb2MiOiB7ImN1cnJlbnQiOiBbWzE2NDAwMTYuMCwgMTYyNjE5
Mi4wLCAxNjI2MjQ4LjAsIDE2NDk3MzYuMCwgMTY0NDU0NC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE3
Ni4wLCAxNjI2MjMyLjAsIDE2NDU2MjQuMCwgMTY0NDUyOC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5
Mi4wLCAxNjI2MjQ4LjAsIDE2NDU2NDAuMCwgMTY0NDQ4OC4wXSwgWzE2NDAwMTYuMCwgMTYyMjA5
Ni4wLCAxNjIyMTUyLjAsIDE2NDU1ODQuMCwgMTY0NDQ4OC4wXV19LCAiUnVucyI6IHsiY3VycmVu
dCI6IFtbMTE3LjM0MDI4NjgzMTgxMjI1LCAxMTUuNTMyNzM0Mjc0NzExMTcsIDExNi44ODMxMTY4
ODMxMTY4OCwgMTE3LjY0NzA1ODgyMzUyOTQsIDExNy40OTM0NzI1ODQ4NTYzOV0sIFsxMTYuODgz
MTE2ODgzMTE2ODgsIDExNy4xODc1LCAxMTYuNzMxNTE3NTA5NzI3NjIsIDExNS42ODEyMzM5MzMx
NjE5NSwgMTE1LjIzNjg3NTgwMDI1NjA5XSwgWzExNy40OTM0NzI1ODQ4NTYzOSwgMTE2LjczMTUx
NzUwOTcyNzYyLCAxMTYuNDI5NDk1NDcyMTg2MjksIDExNy42NDcwNTg4MjM1Mjk0LCAxMTYuNzMx
NTE3NTA5NzI3NjJdLCBbMTE2LjEyOTAzMjI1ODA2NDUxLCAxMTYuNTgwMzEwODgwODI5MDIsIDEx
Ni40Mjk0OTU0NzIxODYyOSwgMTE2LjEyOTAzMjI1ODA2NDUxLCAxMTYuODgzMTE2ODgzMTE2ODhd
XX0sICJKU0hlYXAiOiB7ImN1cnJlbnQiOiBbWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4
MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgz
MzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2
MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdXX19fX19fSwgImJ1aWxk
VGltZSI6ICIyMDEzLTA3LTE5VDA4OjM0OjIzLjcxNDAyNyIsICJkZXNjcmlwdGlvbiI6ICJmYWtl
IGJyYW5jaCIsICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDct
MThUMDA6MzU6MzAuNDI1OTEwWiIsICJyZXZpc2lvbiI6ICIxNTI4MjMifX19XTwvc2NyaXB0Pgo8
L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>207071</attachid>
            <date>2013-07-19 01:57:07 -0700</date>
            <delta_ts>2013-07-19 01:57:07 -0700</delta_ts>
            <desc>Adding more clear() calls</desc>
            <filename>line-layout.html</filename>
            <type>text/html</type>
            <size>32458</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gJ1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9yZXNvdXJjZXMv
ZHJvbWFlby93ZWIvbGliL2pxdWVyeS0xLjYuNC5qcyc7CiAgICB2YXIgcGx1Z2lucyA9IFsnUGVy
Zm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LmZsb3QubWluLmpzJywgJ1BlcmZvcm1hbmNl
VGVzdHMvcmVzb3VyY2VzL2pxdWVyeS50YWJsZXNvcnRlci5taW4uanMnLAogICAgICAgICdQZXJm
b3JtYW5jZVRlc3RzL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzJ107CiAgICB2YXIgbG9jYWxQYXRo
ID0gJy9Wb2x1bWVzL0RhdGEvc2FmYXJpL09wZW5Tb3VyY2UnOwogICAgdmFyIHJlbW90ZVBhdGgg
PSAnaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuayc7CiAgICB2
YXIgbnVtYmVyT2ZGYWlsdXJlcyA9IDA7CiAgICB2YXIgc3RhcnRlZExvYWRpbmdQbHVnaW5zID0g
ZmFsc2U7CiAgICB2YXIgbnVtYmVyT2ZMb2FkZWRQbHVnaW5zID0gMDsKCiAgICBmdW5jdGlvbiBs
b2FkU2NyaXB0KHNyYywgbG9hZGVkLCBmYWlsZWQpIHsKICAgICAgICB2YXIgc2NyaXB0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1
ZTsKICAgICAgICBzY3JpcHQuc3JjID0gc3JjOwogICAgICAgIHNjcmlwdC5vbmxvYWQgPSBsb2Fk
ZWQ7CiAgICAgICAgaWYgKGZhaWxlZCkKICAgICAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSBmYWls
ZWQ7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwogICAgfQoKICAg
IGZ1bmN0aW9uIGxvYWRQbHVnaW5zKHRydW5rUGF0aCkgewogICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcGx1Z2lucy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgbG9hZFNjcmlwdCh0cnVua1Bh
dGggKyAnLycgKyBwbHVnaW5zW2ldLCBsb2FkZWRQbHVnaW4sIGNyZWF0ZUZhaWxlZFRvTG9hZFBs
dWdpbihwbHVnaW5zW2ldKSk7CiAgICB9CgogICAgZnVuY3Rpb24gbG9hZGVkUGx1Z2luKCkgewog
ICAgICAgIG51bWJlck9mTG9hZGVkUGx1Z2lucysrOwogICAgICAgIGlmIChudW1iZXJPZkxvYWRl
ZFBsdWdpbnMgPT0gcGx1Z2lucy5sZW5ndGgpCiAgICAgICAgICAgIHNldFRpbWVvdXQoaW5pdCwg
MCk7ICAgICAgICAgICAgCiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlRmFpbGVkVG9Mb2FkUGx1
Z2luKHBsdWdpbikgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGFsZXJ0KCJGYWlsZWQg
dG8gbG9hZCAiICsgcGx1Z2luKTsgfQogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZUxvYWRlZEpR
dWVyeSh0cnVua1BhdGgpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBsb2FkUGx1Z2lu
cyh0cnVua1BhdGgpOyB9CiAgICB9CgogICAgbG9hZFNjcmlwdChsb2NhbFBhdGggKyAnLycgKyBq
UXVlcnksCiAgICAgICAgY3JlYXRlTG9hZGVkSlF1ZXJ5KGxvY2FsUGF0aCksCiAgICAgICAgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICBsb2FkU2NyaXB0KHJlbW90ZVBhdGggKyAnLycgKyBqUXVl
cnksCiAgICAgICAgICAgICAgICBjcmVhdGVMb2FkZWRKUXVlcnkocmVtb3RlUGF0aCksCiAgICAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7IGFsZXJ0KCJGYWlsZWQgdG8gbG9hZCBqUXVlcnkuIik7
IH0pOwogICAgICAgIH0pOwp9KSgpOwoKZnVuY3Rpb24gVGVzdFJlc3VsdChtZXRyaWMsIHZhbHVl
cywgYXNzb2NpYXRlZFJ1bikgewogICAgaWYgKHZhbHVlc1swXSBpbnN0YW5jZW9mIEFycmF5KSB7
CiAgICAgICAgdmFyIGZsYXR0ZW5lZFZhbHVlcyA9IFtdOwogICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKQogICAgICAgICAgICBmbGF0dGVuZWRWYWx1ZXMgPSBm
bGF0dGVuZWRWYWx1ZXMuY29uY2F0KHZhbHVlc1tpXSk7CiAgICAgICAgdmFsdWVzID0gZmxhdHRl
bmVkVmFsdWVzOwogICAgfQoKICAgIHRoaXMudGVzdCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1l
dHJpYzsgfQogICAgdGhpcy52YWx1ZXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB2YWx1ZXMubWFw
KGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gbWV0cmljLnNjYWxpbmdGYWN0b3IoKSAqIHZhbHVl
OyB9KTsgfQogICAgdGhpcy51bnNjYWxlZE1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBTdGF0
aXN0aWNzLnN1bSh2YWx1ZXMpIC8gdmFsdWVzLmxlbmd0aDsgfQogICAgdGhpcy5tZWFuID0gZnVu
Y3Rpb24gKCkgeyByZXR1cm4gbWV0cmljLnNjYWxpbmdGYWN0b3IoKSAqIHRoaXMudW5zY2FsZWRN
ZWFuKCk7IH0KICAgIHRoaXMubWluID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbWV0cmljLnNjYWxp
bmdGYWN0b3IoKSAqIFN0YXRpc3RpY3MubWluKHZhbHVlcyk7IH0KICAgIHRoaXMubWF4ID0gZnVu
Y3Rpb24gKCkgeyByZXR1cm4gbWV0cmljLnNjYWxpbmdGYWN0b3IoKSAqIFN0YXRpc3RpY3MubWF4
KHZhbHVlcyk7IH0KICAgIHRoaXMuY29uZmlkZW5jZUludGVydmFsRGVsdGEgPSBmdW5jdGlvbiAo
KSB7CiAgICAgICAgcmV0dXJuIG1ldHJpYy5zY2FsaW5nRmFjdG9yKCkgKiBTdGF0aXN0aWNzLmNv
bmZpZGVuY2VJbnRlcnZhbERlbHRhKDAuOTUsIHZhbHVlcy5sZW5ndGgsCiAgICAgICAgICAgIFN0
YXRpc3RpY3Muc3VtKHZhbHVlcyksIFN0YXRpc3RpY3Muc3F1YXJlU3VtKHZhbHVlcykpOwogICAg
fQogICAgdGhpcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YVJhdGlvID0gZnVuY3Rpb24gKCkgeyBy
ZXR1cm4gdGhpcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSgpIC8gdGhpcy5tZWFuKCk7IH0KICAg
IHRoaXMucGVyY2VudERpZmZlcmVuY2UgPSBmdW5jdGlvbihvdGhlcikgeyByZXR1cm4gKG90aGVy
LnVuc2NhbGVkTWVhbigpIC0gdGhpcy51bnNjYWxlZE1lYW4oKSkgLyB0aGlzLnVuc2NhbGVkTWVh
bigpOyB9CiAgICB0aGlzLmlzU3RhdGlzdGljYWxseVNpZ25pZmljYW50ID0gZnVuY3Rpb24gKG90
aGVyKSB7CiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhvdGhlci5tZWFuKCkgLSB0aGlzLm1l
YW4oKSk7CiAgICAgICAgcmV0dXJuIGRpZmYgPiB0aGlzLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRh
KCkgJiYgZGlmZiA+IG90aGVyLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKCk7CiAgICB9CiAgICB0
aGlzLnJ1biA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRSdW47IH0KfQoKZnVuY3Rp
b24gVGVzdFJ1bihlbnRyeSkgewogICAgdGhpcy5kZXNjcmlwdGlvbiA9IGZ1bmN0aW9uICgpIHsg
cmV0dXJuIGVudHJ5WydkZXNjcmlwdGlvbiddOyB9CiAgICB0aGlzLndlYmtpdFJldmlzaW9uID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ3JldmlzaW9ucyddWydXZWJLaXQnXVsncmV2aXNp
b24nXTsgfQogICAgdGhpcy5sYWJlbCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgbGFiZWwg
PSAncicgKyB0aGlzLndlYmtpdFJldmlzaW9uKCk7CiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRp
b24oKSkKICAgICAgICAgICAgbGFiZWwgKz0gJyAmZGFzaDsgJyArIHRoaXMuZGVzY3JpcHRpb24o
KTsKICAgICAgICByZXR1cm4gbGFiZWw7CiAgICB9Cn0KCmZ1bmN0aW9uIFBlcmZUZXN0TWV0cmlj
KG5hbWUsIG1ldHJpYykgewogICAgdmFyIHRlc3RSZXN1bHRzID0gW107CiAgICB2YXIgY2FjaGVk
VW5pdCA9IG51bGw7CiAgICB2YXIgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IG51bGw7CiAgICB2YXIg
dW5pdCA9IHsnRnJhbWVSYXRlJzogJ2ZwcycsICdSdW5zJzogJ3J1bnMvcycsICdUaW1lJzogJ21z
JywgJ01hbGxvYyc6ICdieXRlcycsICdKU0hlYXAnOiAnYnl0ZXMnfVttZXRyaWNdOwoKICAgIC8v
IFdlIGNhbid0IGRvIHRoaXMgaW4gVGVzdFJlc3VsdCBiZWNhdXNlIGFsbCByZXN1bHRzIGZvciBl
YWNoIHRlc3QgbmVlZCB0byBzaGFyZSB0aGUgc2FtZSB1bml0IGFuZCB0aGUgc2FtZSBzY2FsaW5n
IGZhY3Rvci4KICAgIGZ1bmN0aW9uIGNvbXB1dGVTY2FsaW5nRmFjdG9ySWZOZWVkZWQoKSB7CiAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBhZGp1c3RpbmcgdW5pdHMgb24gZXZlcnkg
dGVzdCByZXN1bHQuCiAgICAgICAgLy8gV2UgY2FuIG9ubHkgZG8gdGhpcyBvbiB0aGUgZmlyc3Qg
dGVzdC4KICAgICAgICBpZiAoIXRlc3RSZXN1bHRzLmxlbmd0aCB8fCBjYWNoZWRVbml0KQogICAg
ICAgICAgICByZXR1cm47CgogICAgICAgIHZhciBtZWFuID0gdGVzdFJlc3VsdHNbMF0udW5zY2Fs
ZWRNZWFuKCk7IC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayBhdCBhbGwgdmFsdWVzLgogICAgICAg
IHZhciBraWxvID0gdW5pdCA9PSAnYnl0ZXMnID8gMTAyNCA6IDEwMDA7CiAgICAgICAgaWYgKG1l
YW4gPiAxMCAqIGtpbG8gKiBraWxvICYmIHVuaXQgIT0gJ21zJykgewogICAgICAgICAgICBjYWNo
ZWRTY2FsaW5nRmFjdG9yID0gMSAvIGtpbG8gLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0
ID0gJ00gJyArIHVuaXQ7CiAgICAgICAgfSBlbHNlIGlmIChtZWFuID4gMTAgKiBraWxvKSB7CiAg
ICAgICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSAxIC8ga2lsbzsKICAgICAgICAgICAgY2Fj
aGVkVW5pdCA9IHVuaXQgPT0gJ21zJyA/ICdzJyA6ICgnSyAnICsgdW5pdCk7CiAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IDE7CiAgICAgICAgICAgIGNh
Y2hlZFVuaXQgPSB1bml0OwogICAgICAgIH0KICAgIH0KCiAgICB0aGlzLm5hbWUgPSBmdW5jdGlv
biAoKSB7IHJldHVybiBuYW1lICsgJzonICsgbWV0cmljOyB9CiAgICB0aGlzLmlzTWVtb3J5VGVz
dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1ldHJpYyA9PSAnSlNIZWFwJyB8fCBtZXRyaWMgPT0g
J01hbGxvYyc7IH0KICAgIHRoaXMuYWRkUmVzdWx0ID0gZnVuY3Rpb24gKG5ld1Jlc3VsdCkgewog
ICAgICAgIHRlc3RSZXN1bHRzLnB1c2gobmV3UmVzdWx0KTsKICAgICAgICBjYWNoZWRVbml0ID0g
bnVsbDsKICAgICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKICAgIH0KICAgIHRoaXMu
cmVzdWx0cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRlc3RSZXN1bHRzOyB9CiAgICB0aGlzLnNj
YWxpbmdGYWN0b3IgPSBmdW5jdGlvbigpIHsKICAgICAgICBjb21wdXRlU2NhbGluZ0ZhY3Rvcklm
TmVlZGVkKCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFNjYWxpbmdGYWN0b3I7CiAgICB9CiAgICB0
aGlzLnVuaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgY29tcHV0ZVNjYWxpbmdGYWN0b3JJZk5l
ZWRlZCgpOwogICAgICAgIHJldHVybiBjYWNoZWRVbml0OwogICAgfQogICAgdGhpcy5zbWFsbGVy
SXNCZXR0ZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB1bml0ID09ICdtcycgfHwgdW5pdCA9PSAn
Ynl0ZXMnOyB9Cn0KCnZhciBwbG90Q29sb3IgPSAncmdiKDIzMCw1MCw1MCknOwp2YXIgc3VicG9p
bnRzUGxvdE9wdGlvbnMgPSB7CiAgICBsaW5lczoge3Nob3c6dHJ1ZSwgbGluZVdpZHRoOiAwfSwK
ICAgIGNvbG9yOiBwbG90Q29sb3IsCiAgICBwb2ludHM6IHtzaG93OiB0cnVlLCByYWRpdXM6IDF9
LAogICAgYmFyczoge3Nob3c6IGZhbHNlfX07Cgp2YXIgbWFpblBsb3RPcHRpb25zID0gewogICAg
eGF4aXM6IHsKICAgICAgICBtaW46IC0wLjUsCiAgICAgICAgdGlja1NpemU6IDEsCiAgICB9LAog
ICAgY3Jvc3NoYWlyOiB7IG1vZGU6ICd5JyB9LAogICAgc2VyaWVzOiB7IHNoYWRvd1NpemU6IDAg
fSwKICAgIGJhcnM6IHtzaG93OiB0cnVlLCBhbGlnbjogJ2NlbnRlcicsIGJhcldpZHRoOiAwLjV9
LAogICAgbGluZXM6IHsgc2hvdzogZmFsc2UgfSwKICAgIHBvaW50czogeyBzaG93OiB0cnVlIH0s
CiAgICBncmlkOiB7CiAgICAgICAgYm9yZGVyV2lkdGg6IDEsCiAgICAgICAgYm9yZGVyQ29sb3I6
ICcjY2NjJywKICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJywKICAgICAgICBob3ZlcmFi
bGU6IHRydWUsCiAgICAgICAgYXV0b0hpZ2hsaWdodDogZmFsc2UsCiAgICB9Cn07Cgp2YXIgdGlt
ZVBsb3RPcHRpb25zID0gewogICAgeWF4aXM6IHsgc2hvdzogZmFsc2UgfSwKICAgIHhheGlzOiB7
IHNob3c6IGZhbHNlIH0sCiAgICBsaW5lczogeyBzaG93OiB0cnVlIH0sCiAgICBncmlkOiB7IGJv
cmRlcldpZHRoOiAxLCBib3JkZXJDb2xvcjogJyNjY2MnIH0sCiAgICBjb2xvcnM6IFsgcGxvdENv
bG9yIF0KfTsKCmZ1bmN0aW9uIGNyZWF0ZVBsb3QoY29udGFpbmVyLCB0ZXN0KSB7CiAgICB2YXIg
c2VjdGlvbiA9ICQoJzxzZWN0aW9uPjxkaXYgY2xhc3M9InBsb3QiPjwvZGl2PjxkaXYgY2xhc3M9
InRpbWUtcGxvdHMiPjwvZGl2PicKICAgICAgICArICc8c3BhbiBjbGFzcz0idG9vbHRpcCI+PC9z
cGFuPjwvc2VjdGlvbj4nKTsKICAgIHNlY3Rpb24uY2hpbGRyZW4oJy5wbG90JykuY3NzKHsnd2lk
dGgnOiAoMTAwICogdGVzdC5yZXN1bHRzKCkubGVuZ3RoICsgMjUpICsgJ3B4JywgJ2hlaWdodCc6
ICczMDBweCd9KTsKICAgICQoY29udGFpbmVyKS5hcHBlbmQoc2VjdGlvbik7CgogICAgdmFyIHBs
b3RDb250YWluZXIgPSBzZWN0aW9uLmNoaWxkcmVuKCcucGxvdCcpOwogICAgdmFyIG1pbklzWmVy
byA9IHRydWU7CiAgICBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklzWmVybyk7
CgogICAgYXR0YWNoVGltZVBsb3RzKHRlc3QsIHNlY3Rpb24uY2hpbGRyZW4oJy50aW1lLXBsb3Rz
JykpOwoKICAgIHZhciB0b29sdGlwID0gc2VjdGlvbi5jaGlsZHJlbignLnRvb2x0aXAnKTsKICAg
IHBsb3RDb250YWluZXIuYmluZCgncGxvdGhvdmVyJywgZnVuY3Rpb24gKGV2ZW50LCBwb3NpdGlv
biwgaXRlbSkgewogICAgICAgIGlmIChpdGVtKSB7CiAgICAgICAgICAgIHZhciBwb3N0Zml4ID0g
aXRlbS5zZXJpZXMuaWQgPyAnICgnICsgaXRlbS5zZXJpZXMuaWQgKyAnKScgOiAnJzsKICAgICAg
ICAgICAgdG9vbHRpcC5odG1sKGl0ZW0uZGF0YXBvaW50WzFdLnRvUHJlY2lzaW9uKDQpICsgcG9z
dGZpeCk7CiAgICAgICAgICAgIHZhciBzZWN0aW9uT2Zmc2V0ID0gJChzZWN0aW9uKS5vZmZzZXQo
KTsKICAgICAgICAgICAgdG9vbHRpcC5jc3Moe2xlZnQ6IGl0ZW0ucGFnZVggLSBzZWN0aW9uT2Zm
c2V0LmxlZnQgLSB0b29sdGlwLm91dGVyV2lkdGgoKSAvIDIsIHRvcDogaXRlbS5wYWdlWSAtIHNl
Y3Rpb25PZmZzZXQudG9wICsgMTB9KTsKICAgICAgICAgICAgdG9vbHRpcC5mYWRlSW4oMjAwKTsK
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgdG9vbHRpcC5oaWRlKCk7CiAgICB9KTsKICAgIHBs
b3RDb250YWluZXIubW91c2VvdXQoZnVuY3Rpb24gKCkgewogICAgICAgIHRvb2x0aXAuaGlkZSgp
OwogICAgfSk7CiAgICBwbG90Q29udGFpbmVyLmNsaWNrKGZ1bmN0aW9uIChldmVudCkgewogICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgbWluSXNaZXJvID0gIW1pbklzWmVy
bzsKICAgICAgICBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklzWmVybyk7CiAg
ICB9KTsKCiAgICByZXR1cm4gc2VjdGlvbjsKfQoKZnVuY3Rpb24gYXR0YWNoVGltZVBsb3RzKHRl
c3QsIGNvbnRhaW5lcikgewogICAgdmFyIHJlc3VsdHMgPSB0ZXN0LnJlc3VsdHMoKTsKICAgIHZh
ciBhdHRhY2hlZFBsb3QgPSBmYWxzZTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5s
ZW5ndGg7IGkrKykgewogICAgICAgIGNvbnRhaW5lci5hcHBlbmQoJzxkaXY+PC9kaXY+Jyk7CiAg
ICAgICAgdmFyIHZhbHVlcyA9IHJlc3VsdHNbaV0udmFsdWVzKCk7CiAgICAgICAgaWYgKCF2YWx1
ZXMpCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGF0dGFjaGVkUGxvdCA9IHRydWU7Cgog
ICAgICAgICQucGxvdChjb250YWluZXIuY2hpbGRyZW4oKS5sYXN0KCksIFt2YWx1ZXMubWFwKGZ1
bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHsgcmV0dXJuIFtpbmRleCwgdmFsdWVdOyB9KV0sCiAgICAg
ICAgICAgICQuZXh0ZW5kKHRydWUsIHt9LCB0aW1lUGxvdE9wdGlvbnMsIHt5YXhpczoge21pbjog
TWF0aC5taW4uYXBwbHkoTWF0aCwgdmFsdWVzKSAqIDAuOSwgbWF4OiBNYXRoLm1heC5hcHBseShN
YXRoLCB2YWx1ZXMpICogMS4xfSwKICAgICAgICAgICAgICAgIHhheGlzOiB7bWluOiAtMC41LCBt
YXg6IHZhbHVlcy5sZW5ndGggLSAwLjV9fSkpOwogICAgfQogICAgaWYgKCFhdHRhY2hlZFBsb3Qp
CiAgICAgICAgY29udGFpbmVyLmNoaWxkcmVuKCkucmVtb3ZlKCk7Cn0KCmZ1bmN0aW9uIGF0dGFj
aFBsb3QodGVzdCwgcGxvdENvbnRhaW5lciwgbWluSXNaZXJvKSB7CiAgICB2YXIgcmVzdWx0cyA9
IHRlc3QucmVzdWx0cygpOwoKICAgIHZhciB2YWx1ZXMgPSByZXN1bHRzLnJlZHVjZShmdW5jdGlv
biAodmFsdWVzLCByZXN1bHQsIGluZGV4KSB7CiAgICAgICAgdmFyIG5ld1ZhbHVlcyA9IHJlc3Vs
dC52YWx1ZXMoKTsKICAgICAgICByZXR1cm4gbmV3VmFsdWVzID8gdmFsdWVzLmNvbmNhdChuZXdW
YWx1ZXMubWFwKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gW2luZGV4LCB2YWx1ZV07IH0pKSA6
IHZhbHVlczsKICAgIH0sIFtdKTsKCiAgICB2YXIgcGxvdERhdGEgPSBbJC5leHRlbmQodHJ1ZSwg
e30sIHN1YnBvaW50c1Bsb3RPcHRpb25zLCB7ZGF0YTogdmFsdWVzfSldOwogICAgcGxvdERhdGEu
cHVzaCh7aWQ6ICcmbXU7JywgZGF0YTogcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5k
ZXgpIHsgcmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1lYW4oKV07IH0pLCBjb2xvcjogcGxvdENvbG9y
fSk7CgogICAgdmFyIG92ZXJhbGxNYXggPSBTdGF0aXN0aWNzLm1heChyZXN1bHRzLm1hcChmdW5j
dGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gcmVzdWx0Lm1heCgpOyB9KSk7CiAgICB2YXIg
b3ZlcmFsbE1pbiA9IFN0YXRpc3RpY3MubWluKHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQs
IGluZGV4KSB7IHJldHVybiByZXN1bHQubWluKCk7IH0pKTsKICAgIHZhciBtYXJnaW4gPSAob3Zl
cmFsbE1heCAtIG92ZXJhbGxNaW4pICogMC4xOwogICAgdmFyIGN1cnJlbnRQbG90T3B0aW9ucyA9
ICQuZXh0ZW5kKHRydWUsIHt9LCBtYWluUGxvdE9wdGlvbnMsIHt5YXhpczogewogICAgICAgIG1p
bjogbWluSXNaZXJvID8gMCA6IG92ZXJhbGxNaW4gLSBtYXJnaW4sCiAgICAgICAgbWF4OiBtaW5J
c1plcm8gPyBvdmVyYWxsTWF4ICogMS4xIDogb3ZlcmFsbE1heCArIG1hcmdpbn19KTsKCiAgICBj
dXJyZW50UGxvdE9wdGlvbnMueGF4aXMubWF4ID0gcmVzdWx0cy5sZW5ndGggLSAwLjU7CiAgICBj
dXJyZW50UGxvdE9wdGlvbnMueGF4aXMudGlja3MgPSByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVz
dWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQucnVuKCkubGFiZWwoKV07IH0pOwoK
ICAgICQucGxvdChwbG90Q29udGFpbmVyLCBwbG90RGF0YSwgY3VycmVudFBsb3RPcHRpb25zKTsK
fQoKZnVuY3Rpb24gdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHZhbHVlKSB7CiAgICB2YXIgZGVjaW1h
bCA9IHZhbHVlLnRvRml4ZWQoMik7CiAgICByZXR1cm4gZGVjaW1hbDsKfQoKZnVuY3Rpb24gZm9y
bWF0UGVyY2VudGFnZShmcmFjdGlvbikgewogICAgdmFyIHBlcmNlbnRhZ2UgPSBmcmFjdGlvbiAq
IDEwMDsKICAgIHJldHVybiAoZnJhY3Rpb24gKiAxMDApLnRvRml4ZWQoMikgKyAnJSc7Cn0KCmZ1
bmN0aW9uIGNyZWF0ZVRhYmxlKHRlc3RzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVy
ZW5jZUluZGV4KSB7CiAgICAkKCcjY29udGFpbmVyJykuaHRtbCgnPHRoZWFkPjx0cj48dGg+VGVz
dDwvdGg+PHRoPlVuaXQ8L3RoPicgKyBydW5zLm1hcChmdW5jdGlvbiAocnVuLCBpbmRleCkgewog
ICAgICAgIHJldHVybiAnPHRoIGNvbHNwYW49IicgKyAoaW5kZXggPT0gcmVmZXJlbmNlSW5kZXgg
PyAyIDogMykgKyAnIiBjbGFzcz0ie3NvcnRlcjogXCdjb21wYXJpc29uXCd9Ij4nICsgcnVuLmxh
YmVsKCkgKyAnPC90aD4nOwogICAgfSkucmVkdWNlKGZ1bmN0aW9uIChtYXJrdXAsIGNlbGwpIHsg
cmV0dXJuIG1hcmt1cCArIGNlbGw7IH0sICcnKSArICc8L3RyPjwvaGVhZD48dGJvZHk+PC90Ym9k
eT4nKTsKCiAgICB2YXIgdGVzdE5hbWVzID0gW107CiAgICBmb3IgKHRlc3ROYW1lIGluIHRlc3Rz
KQogICAgICAgIHRlc3ROYW1lcy5wdXNoKHRlc3ROYW1lKTsKCiAgICB0ZXN0TmFtZXMuc29ydCgp
Lm1hcChmdW5jdGlvbiAodGVzdE5hbWUpIHsKICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW3Rlc3RO
YW1lXTsKICAgICAgICBpZiAodGVzdC5pc01lbW9yeVRlc3QoKSAhPSBzaG91bGRJZ25vcmVNZW1v
cnkpCiAgICAgICAgICAgIGNyZWF0ZVRhYmxlUm93KHJ1bnMsIHRlc3QsIHJlZmVyZW5jZUluZGV4
KTsKICAgIH0pOwoKICAgICQoJyNjb250YWluZXInKS50YWJsZXNvcnRlcih7d2lkZ2V0czogWyd6
ZWJyYSddfSk7Cn0KCmZ1bmN0aW9uIGxpbmVhclJlZ3Jlc3Npb24ocG9pbnRzKSB7CiAgICAvLyBJ
bXBsZW1lbnQgaHR0cDovL3d3dy5lYXN5Y2FsY3VsYXRpb24uY29tL3N0YXRpc3RpY3MvbGVhcm4t
Y29ycmVsYXRpb24ucGhwLgogICAgLy8geCA9IG1hZ25pdHVkZQogICAgLy8geSA9IGl0ZXJhdGlv
bnMKICAgIHZhciBzdW1YID0gMDsKICAgIHZhciBzdW1ZID0gMDsKICAgIHZhciBzdW1YU3F1YXJl
ZCA9IDA7CiAgICB2YXIgc3VtWVNxdWFyZWQgPSAwOwogICAgdmFyIHN1bVhUaW1lc1kgPSAwOwoK
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFy
IHggPSBpOwogICAgICAgIHZhciB5ID0gcG9pbnRzW2ldOwogICAgICAgIHN1bVggKz0geDsKICAg
ICAgICBzdW1ZICs9IHk7CiAgICAgICAgc3VtWFNxdWFyZWQgKz0geCAqIHg7CiAgICAgICAgc3Vt
WVNxdWFyZWQgKz0geSAqIHk7CiAgICAgICAgc3VtWFRpbWVzWSArPSB4ICogeTsKICAgIH0KCiAg
ICB2YXIgciA9IChwb2ludHMubGVuZ3RoICogc3VtWFRpbWVzWSAtIHN1bVggKiBzdW1ZKSAvCiAg
ICAgICAgTWF0aC5zcXJ0KChwb2ludHMubGVuZ3RoICogc3VtWFNxdWFyZWQgLSBzdW1YICogc3Vt
WCkgKgogICAgICAgICAgICAgICAgICAocG9pbnRzLmxlbmd0aCAqIHN1bVlTcXVhcmVkIC0gc3Vt
WSAqIHN1bVkpKTsKCiAgICBpZiAoaXNOYU4ocikgfHwgciA9PSBNYXRoLkluZmluaXR5KQogICAg
ICAgIHIgPSAwOwoKICAgIHZhciBzbG9wZSA9IChwb2ludHMubGVuZ3RoICogc3VtWFRpbWVzWSAt
IHN1bVggKiBzdW1ZKSAvIChwb2ludHMubGVuZ3RoICogc3VtWFNxdWFyZWQgLSBzdW1YICogc3Vt
WCk7CiAgICB2YXIgaW50ZXJjZXB0ID0gc3VtWSAvIHBvaW50cy5sZW5ndGggLSBzbG9wZSAqIHN1
bVggLyBwb2ludHMubGVuZ3RoOwogICAgcmV0dXJuIHtzbG9wZTogc2xvcGUsIGludGVyY2VwdDog
aW50ZXJjZXB0LCByU3F1YXJlZDogciAqIHJ9Owp9Cgp2YXIgd2FybmluZ1NpZ24gPSAnPHN2ZyB2
aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9IndpZHRoOiAxOHB4OyBoZWlnaHQ6IDE4cHg7IHZl
cnRpY2FsLWFsaWduOiBib3R0b207IiB2ZXJzaW9uPSIxLjEiPicKICAgICsgJzxwb2x5Z29uIGZp
bGw9InJlZCIgcG9pbnRzPSI1MCwxMCA5MCw4MCAxMCw4MCA1MCwxMCIgc3Ryb2tlPSJyZWQiIHN0
cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+JwogICAgKyAnPHBvbHln
b24gZmlsbD0id2hpdGUiIHBvaW50cz0iNDcsMzAgNDgsMjksIDUwLCAyOC43LCA1MiwyOSA1Mywz
MCA1MCw2MCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2lu
PSJyb3VuZCIgLz4nCiAgICArICc8Y2lyY2xlIGN4PSI1MCIgY3k9IjczIiByPSI2IiBmaWxsPSJ3
aGl0ZSIgLz4nCiAgICArICc8L3N2Zz4nOwoKZnVuY3Rpb24gY3JlYXRlVGFibGVSb3cocnVucywg
dGVzdCwgcmVmZXJlbmNlSW5kZXgpIHsKICAgIHZhciB0YWJsZVJvdyA9ICQoJzx0cj48dGQgY2xh
c3M9InRlc3QiPicgKyB0ZXN0Lm5hbWUoKSArICc8L3RkPjx0ZCBjbGFzcz0idW5pdCI+JyArIHRl
c3QudW5pdCgpICsgJzwvdGQ+PC90cj4nKTsKCiAgICBmdW5jdGlvbiBtYXJrdXBGb3JSdW4ocmVz
dWx0LCByZWZlcmVuY2VSZXN1bHQpIHsKICAgICAgICB2YXIgY29tcGFyaXNvbkNlbGwgPSAnJzsK
ICAgICAgICB2YXIgaGlkZGVuVmFsdWUgPSAnJzsKICAgICAgICB2YXIgc2hvdWxkQ29tcGFyZSA9
IHJlc3VsdCAhPT0gcmVmZXJlbmNlUmVzdWx0OwogICAgICAgIGlmIChzaG91bGRDb21wYXJlICYm
IHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgICAgICB2YXIgcGVyY2VudERpZmZlcmVuY2UgPSBy
ZWZlcmVuY2VSZXN1bHQucGVyY2VudERpZmZlcmVuY2UocmVzdWx0KTsKICAgICAgICAgICAgdmFy
IGJldHRlciA9IHRlc3Quc21hbGxlcklzQmV0dGVyKCkgPyBwZXJjZW50RGlmZmVyZW5jZSA8IDAg
OiBwZXJjZW50RGlmZmVyZW5jZSA+IDA7CiAgICAgICAgICAgIHZhciBjb21wYXJpc29uID0gJyc7
CiAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSAnY29tcGFyaXNvbic7CiAgICAgICAgICAgIGlm
IChyZWZlcmVuY2VSZXN1bHQuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQocmVzdWx0KSkgewog
ICAgICAgICAgICAgICAgY29tcGFyaXNvbiA9IGZvcm1hdFBlcmNlbnRhZ2UoTWF0aC5hYnMocGVy
Y2VudERpZmZlcmVuY2UpKSArIChiZXR0ZXIgPyAnIEJldHRlcicgOiAnIFdvcnNlJm5ic3A7Jyk7
CiAgICAgICAgICAgICAgICBjbGFzc05hbWUgKz0gYmV0dGVyID8gJyBiZXR0ZXInIDogJyB3b3Jz
ZSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGlkZGVuVmFsdWUgPSAnPHNwYW4gc3R5bGU9
ImRpc3BsYXk6IG5vbmUiPnwnICsgY29tcGFyaXNvbiArICc8L3NwYW4+JzsKICAgICAgICAgICAg
Y29tcGFyaXNvbkNlbGwgPSAnPHRkIGNsYXNzPSInICsgY2xhc3NOYW1lICsgJyI+JyArIGNvbXBh
cmlzb24gKyAnPC90ZD4nOwogICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkQ29tcGFyZSkKICAgICAg
ICAgICAgY29tcGFyaXNvbkNlbGwgPSAnPHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPic7Cgog
ICAgICAgIHZhciB2YWx1ZXMgPSByZXN1bHQudmFsdWVzKCk7CiAgICAgICAgdmFyIHdhcm5pbmcg
PSAnJzsKICAgICAgICB2YXIgcmVncmVzc2lvbkFuYWx5c2lzID0gJyc7CiAgICAgICAgaWYgKHZh
bHVlcyAmJiB2YWx1ZXMubGVuZ3RoID4gMykgewogICAgICAgICAgICByZWdyZXNzaW9uUmVzdWx0
ID0gbGluZWFyUmVncmVzc2lvbih2YWx1ZXMpOwogICAgICAgICAgICByZWdyZXNzaW9uQW5hbHlz
aXMgPSAnc2xvcGU9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZWdyZXNzaW9uUmVzdWx0LnNs
b3BlKQogICAgICAgICAgICAgICAgKyAnLCBSXjI9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihy
ZWdyZXNzaW9uUmVzdWx0LnJTcXVhcmVkKTsKICAgICAgICAgICAgaWYgKHJlZ3Jlc3Npb25SZXN1
bHQuclNxdWFyZWQgPiAwLjYgJiYgTWF0aC5hYnMocmVncmVzc2lvblJlc3VsdC5zbG9wZSkgPiAw
LjAxKSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nID0gJyA8c3BhbiBjbGFzcz0icmVncmVzc2lv
bi13YXJuaW5nIiB0aXRsZT0iRGV0ZWN0ZWQgYSB0aW1lIGRlcGVuZGVuY3kgd2l0aCAnICsgcmVn
cmVzc2lvbkFuYWx5c2lzICsgJyI+JyArIHdhcm5pbmdTaWduICsgJyA8L3NwYW4+JzsKICAgICAg
ICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIHN0YXRpc3RpY3MgPSAnJnNpZ21hOz0nICsg
dG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSgpKSAr
ICcsIG1pbj0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5taW4oKSkKICAgICAgICAg
ICAgKyAnLCBtYXg9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWF4KCkpICsgJ1xu
JyArIHJlZ3Jlc3Npb25BbmFseXNpczsKCiAgICAgICAgLy8gVGFibGVzb3J0ZXIgZG9lc24ndCBr
bm93IGFib3V0IHRoZSBzZWNvbmQgY2VsbCBzbyBwdXQgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGlu
dmlzaWJsZSBlbGVtZW50LgogICAgICAgIHJldHVybiAnPHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxl
PSInICsgc3RhdGlzdGljcyArICciPicgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1l
YW4oKSkgKyBoaWRkZW5WYWx1ZQogICAgICAgICAgICArICc8L3RkPjx0ZCBjbGFzcz0iY29uZmlk
ZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSInICsgc3RhdGlzdGljcyArICciPiZwbHVzbW47ICcK
ICAgICAgICAgICAgKyBmb3JtYXRQZXJjZW50YWdlKHJlc3VsdC5jb25maWRlbmNlSW50ZXJ2YWxE
ZWx0YVJhdGlvKCkpICsgd2FybmluZyArICc8L3RkPicgKyBjb21wYXJpc29uQ2VsbDsKICAgIH0K
CiAgICBmdW5jdGlvbiBtYXJrdXBGb3JNaXNzaW5nUnVuKGlzUmVmZXJlbmNlKSB7CiAgICAgICAg
cmV0dXJuICc8dGQgY29sc3Bhbj0iJyArIChpc1JlZmVyZW5jZSA/IDIgOiAzKSArICciIGNsYXNz
PSJtaXNzaW5nIj5NaXNzaW5nPC90ZD4nOwogICAgfQoKICAgIHZhciBydW5JbmRleCA9IDA7CiAg
ICB2YXIgcmVzdWx0cyA9IHRlc3QucmVzdWx0cygpOwogICAgdmFyIHJlZmVyZW5jZVJlc3VsdCA9
IHVuZGVmaW5lZDsKICAgIHZhciByZXN1bHRJbmRleE1hcCA9IHt9OwogICAgZm9yICh2YXIgaSA9
IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgd2hpbGUgKHJ1bnNbcnVuSW5k
ZXhdICE9PSByZXN1bHRzW2ldLnJ1bigpKQogICAgICAgICAgICBydW5JbmRleCsrOwogICAgICAg
IGlmIChydW5JbmRleCA9PSByZWZlcmVuY2VJbmRleCkKICAgICAgICAgICAgcmVmZXJlbmNlUmVz
dWx0ID0gcmVzdWx0c1tpXTsKICAgICAgICByZXN1bHRJbmRleE1hcFtydW5JbmRleF0gPSBpOwog
ICAgfQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydW5zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAg
dmFyIHJlc3VsdEluZGV4ID0gcmVzdWx0SW5kZXhNYXBbaV07CiAgICAgICAgaWYgKHJlc3VsdElu
ZGV4ID09IHVuZGVmaW5lZCkKICAgICAgICAgICAgdGFibGVSb3cuYXBwZW5kKG1hcmt1cEZvck1p
c3NpbmdSdW4oaSA9PSByZWZlcmVuY2VJbmRleCkpOwogICAgICAgIGVsc2UKICAgICAgICAgICAg
dGFibGVSb3cuYXBwZW5kKG1hcmt1cEZvclJ1bihyZXN1bHRzW3Jlc3VsdEluZGV4XSwgcmVmZXJl
bmNlUmVzdWx0KSk7CiAgICB9CgogICAgJCgnI2NvbnRhaW5lcicpLmNoaWxkcmVuKCd0Ym9keScp
Lmxhc3QoKS5hcHBlbmQodGFibGVSb3cpOwoKICAgIHRhYmxlUm93LmNsaWNrKGZ1bmN0aW9uIChl
dmVudCkgewogICAgICAgIGlmIChldmVudC50YXJnZXQgIT0gdGFibGVSb3dbMF0gJiYgZXZlbnQu
dGFyZ2V0LnBhcmVudE5vZGUgIT0gdGFibGVSb3dbMF0pCiAgICAgICAgICAgIHJldHVybjsKCiAg
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKCiAgICAgICAgdmFyIGZpcnN0Q2VsbCA9IHRh
YmxlUm93LmNoaWxkcmVuKCd0ZCcpLmZpcnN0KCk7CiAgICAgICAgaWYgKGZpcnN0Q2VsbC5jaGls
ZHJlbignc2VjdGlvbicpLmxlbmd0aCkgewogICAgICAgICAgICBmaXJzdENlbGwuY2hpbGRyZW4o
J3NlY3Rpb24nKS5yZW1vdmUoKTsKICAgICAgICAgICAgdGFibGVSb3cuY2hpbGRyZW4oJ3RkJyku
Y3NzKHsncGFkZGluZy1ib3R0b20nOiAnJ30pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
IHZhciBwbG90ID0gY3JlYXRlUGxvdChmaXJzdENlbGwsIHRlc3QpOwogICAgICAgICAgICBwbG90
LmNzcyh7J3Bvc2l0aW9uJzogJ2Fic29sdXRlJywgJ3otaW5kZXgnOiAyfSk7CiAgICAgICAgICAg
IHZhciBvZmZzZXQgPSB0YWJsZVJvdy5vZmZzZXQoKTsKICAgICAgICAgICAgb2Zmc2V0LmxlZnQg
Kz0gMTsKICAgICAgICAgICAgb2Zmc2V0LnRvcCArPSB0YWJsZVJvdy5vdXRlckhlaWdodCgpOwog
ICAgICAgICAgICBwbG90Lm9mZnNldChvZmZzZXQpOwogICAgICAgICAgICB0YWJsZVJvdy5jaGls
ZHJlbigndGQnKS5jc3MoeydwYWRkaW5nLWJvdHRvbSc6IHBsb3Qub3V0ZXJIZWlnaHQoKSArIDV9
KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwp9CgpmdW5jdGlvbiBp
bml0KCkgewogICAgJC50YWJsZXNvcnRlci5hZGRQYXJzZXIoewogICAgICAgIGlkOiAnY29tcGFy
aXNvbicsCiAgICAgICAgaXM6IGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMuaW5k
ZXhPZignfCcpID49IDA7CiAgICAgICAgfSwKICAgICAgICBmb3JtYXQ6IGZ1bmN0aW9uKHMpIHsK
ICAgICAgICAgICAgdmFyIHBhcnNlZCA9IHBhcnNlRmxvYXQocy5zdWJzdHJpbmcocy5pbmRleE9m
KCd8JykgKyAxKSk7CiAgICAgICAgICAgIHJldHVybiBpc05hTihwYXJzZWQpID8gMCA6IHBhcnNl
ZDsKICAgICAgICB9LAogICAgICAgIHR5cGU6ICdudW1lcmljJywKICAgIH0pOwoKICAgIHZhciBy
dW5zID0gW107CiAgICB2YXIgbWV0cmljcyA9IHt9OwogICAgJC5lYWNoKEpTT04ucGFyc2UoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pzb24nKS50ZXh0Q29udGVudCksIGZ1bmN0aW9uIChpbmRl
eCwgZW50cnkpIHsKICAgICAgICB2YXIgcnVuID0gbmV3IFRlc3RSdW4oZW50cnkpOwogICAgICAg
IHJ1bnMucHVzaChydW4pOwoKICAgICAgICBmdW5jdGlvbiBhZGRUZXN0cyh0ZXN0cywgcGFyZW50
RnVsbE5hbWUpIHsKICAgICAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gdGVzdHMpIHsKICAg
ICAgICAgICAgICAgIHZhciBmdWxsVGVzdE5hbWUgPSBwYXJlbnRGdWxsTmFtZSArICcvJyArIHRl
c3ROYW1lOwogICAgICAgICAgICAgICAgdmFyIHJhd01ldHJpY3MgPSB0ZXN0c1t0ZXN0TmFtZV0u
bWV0cmljczsKCiAgICAgICAgICAgICAgICBmb3IgKHZhciBtZXRyaWNOYW1lIGluIHJhd01ldHJp
Y3MpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZnVsbE1ldHJpY05hbWUgPSBmdWxsVGVzdE5h
bWUgKyAnOicgKyBtZXRyaWNOYW1lOwogICAgICAgICAgICAgICAgICAgIHZhciBtZXRyaWMgPSBt
ZXRyaWNzW2Z1bGxNZXRyaWNOYW1lXTsKICAgICAgICAgICAgICAgICAgICBpZiAoIW1ldHJpYykg
ewogICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWMgPSBuZXcgUGVyZlRlc3RNZXRyaWMoZnVs
bFRlc3ROYW1lLCBtZXRyaWNOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgbWV0cmljc1tm
dWxsTWV0cmljTmFtZV0gPSBtZXRyaWM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgIG1ldHJpYy5hZGRSZXN1bHQobmV3IFRlc3RSZXN1bHQobWV0cmljLCByYXdNZXRy
aWNzW21ldHJpY05hbWVdLmN1cnJlbnQsIHJ1bikpOwogICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgIGlmICh0ZXN0c1t0ZXN0TmFtZV0udGVzdHMpCiAgICAgICAgICAgICAgICAgICAg
YWRkVGVzdHModGVzdHNbdGVzdE5hbWVdLnRlc3RzLCBmdWxsVGVzdE5hbWUpOwogICAgICAgICAg
ICB9CiAgICAgICAgfQoKICAgICAgICBhZGRUZXN0cyhlbnRyeS50ZXN0cywgJycpOwogICAgfSk7
CgogICAgdmFyIHNob3VsZElnbm9yZU1lbW9yeT0gdHJ1ZTsKICAgIHZhciByZWZlcmVuY2VJbmRl
eCA9IDA7CgogICAgY3JlYXRlVGFibGUobWV0cmljcywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5
LCByZWZlcmVuY2VJbmRleCk7CgogICAgJCgnI3RpbWUtbWVtb3J5JykuYmluZCgnY2hhbmdlJywg
ZnVuY3Rpb24gKGV2ZW50LCBjaGVja2VkRWxlbWVudCkgewogICAgICAgIHNob3VsZElnbm9yZU1l
bW9yeSA9IGNoZWNrZWRFbGVtZW50LnRleHRDb250ZW50ID09ICdUaW1lJzsKICAgICAgICBjcmVh
dGVUYWJsZShtZXRyaWNzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5jZUluZGV4
KTsKICAgIH0pOwoKICAgIHJ1bnMubWFwKGZ1bmN0aW9uIChydW4sIGluZGV4KSB7CiAgICAgICAg
JCgnI3JlZmVyZW5jZScpLmFwcGVuZCgnPHNwYW4gdmFsdWU9IicgKyBpbmRleCArICciJyArIChp
bmRleCA9PSByZWZlcmVuY2VJbmRleCA/ICcgY2xhc3M9ImNoZWNrZWQiJyA6ICcnKSArICc+JyAr
IHJ1bi5sYWJlbCgpICsgJzwvc3Bhbj4nKTsKICAgIH0pCgogICAgJCgnI3JlZmVyZW5jZScpLmJp
bmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChldmVudCwgY2hlY2tlZEVsZW1lbnQpIHsKICAgICAgICBy
ZWZlcmVuY2VJbmRleCA9IHBhcnNlSW50KGNoZWNrZWRFbGVtZW50LmdldEF0dHJpYnV0ZSgndmFs
dWUnKSk7CiAgICAgICAgY3JlYXRlVGFibGUobWV0cmljcywgcnVucywgc2hvdWxkSWdub3JlTWVt
b3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsKCiAgICAkKCcuY2hlY2tib3gnKS5lYWNoKGZ1
bmN0aW9uIChpbmRleCwgY2hlY2tib3gpIHsKICAgICAgICAkKGNoZWNrYm94KS5jaGlsZHJlbign
c3BhbicpLmNsaWNrKGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICAgICBpZiAoJCh0aGlzKS5o
YXNDbGFzcygnY2hlY2tlZCcpKQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAk
KGNoZWNrYm94KS5jaGlsZHJlbignc3BhbicpLnJlbW92ZUNsYXNzKCdjaGVja2VkJyk7CiAgICAg
ICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJChjaGVja2Jv
eCkudHJpZ2dlcignY2hhbmdlJywgJCh0aGlzKSk7CiAgICAgICAgfSk7CiAgICB9KTsKfQoKPC9z
Y3JpcHQ+CjxzY3JpcHQgaWQ9Impzb24iIHR5cGU9ImFwcGxpY2F0aW9uL2pzb24iPlt7InRlc3Rz
IjogeyJMYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1
bmsvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQiLCAidGVzdHMiOiB7ImxpbmUtbGF5b3V0IjogeyJ1
cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVz
dHMvTGF5b3V0L2xpbmUtbGF5b3V0Lmh0bWwiLCAibWV0cmljcyI6IHsiTWFsbG9jIjogeyJjdXJy
ZW50IjogW1sxNjQwMDA4LjAsIDE2MjYxODQuMCwgMTYyMjE0NC4wLCAxNjQ1NjMyLjAsIDE2NDQ1
MzYuMF0sIFsxNjQwMDE2LjAsIDE2MjIwOTYuMCwgMTYyMTI4OC4wLCAxNjQ0NzIwLjAsIDE2Mzk0
NzIuMF0sIFsxNjQwMDAwLjAsIDE2MjYxNzYuMCwgMTYyNjIzMi4wLCAxNjQ5NjU2LjAsIDE2NDQ1
MjguMF0sIFsxNjQwMDE2LjAsIDE2MjYxMzYuMCwgMTYyNjE5Mi4wLCAxNjQ1NTg0LjAsIDE2NDQ0
MzIuMF1dfSwgIlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzExNS44MzAxMTU4MzAxMTU4MywgMTEyLjc4
MTk1NDg4NzIxODA1LCAxMTIuNjQwODAxMDAxMjUxNTYsIDExMi4zNTk1NTA1NjE3OTc3NSwgMTEy
LjA3OTcwMTEyMDc5NzAxXSwgWzEwOC4xNzMwNzY5MjMwNzY5MiwgMTE0LjY0OTY4MTUyODY2MjQz
LCAxMTUuMzg0NjE1Mzg0NjE1MzksIDExNS4zODQ2MTUzODQ2MTUzOSwgMTE0LjY0OTY4MTUyODY2
MjQzXSwgWzExMi41LCAxMTUuNjgxMjMzOTMzMTYxOTUsIDExNy4wMzUxMTA1MzMxNTk5NSwgMTE2
LjI3OTA2OTc2NzQ0MTg1LCAxMTUuOTc5MzgxNDQzMjk4OTZdLCBbMTE2LjEyOTAzMjI1ODA2NDUx
LCAxMTYuMTI5MDMyMjU4MDY0NTEsIDExNi40Mjk0OTU0NzIxODYyOSwgMTE1LjUzMjczNDI3NDcx
MTE3LCAxMTUuNTMyNzM0Mjc0NzExMTddXX0sICJKU0hlYXAiOiB7ImN1cnJlbnQiOiBbWzU2MTY4
LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgwMzIu
MCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgzMzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4w
LCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAs
IDU4MzM2LjBdXX19fX19fSwgImJ1aWxkVGltZSI6ICIyMDEzLTA3LTE5VDA2OjAxOjE4LjE4MDA2
NiIsICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDctMThUMDA6
MzU6MzAuNDI1OTEwWiIsICJyZXZpc2lvbiI6ICIxNTI4MjMifX19LCB7InRlc3RzIjogeyJMYXlv
dXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9y
bWFuY2VUZXN0cy9MYXlvdXQiLCAidGVzdHMiOiB7ImxpbmUtbGF5b3V0IjogeyJ1cmwiOiAiaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0
L2xpbmUtbGF5b3V0Lmh0bWwiLCAibWV0cmljcyI6IHsiTWFsbG9jIjogeyJjdXJyZW50IjogW1sx
NjM1OTIwLjAsIDE2MjIwOTYuMCwgMTYyMjE1Mi4wLCAxNjQxNTQ0LjAsIDE2NDAzOTIuMF0sIFsx
NjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYyNjE5Mi4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODguMF0sIFsx
NjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYyNjI0OC4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODguMF0sIFsx
NjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYyNjI0OC4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODguMF1dfSwg
IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzExNy45NTU0MzkwNTYzNTY0OCwgMTEyLjkyMzQ2Mjk4NjE5
ODI1LCAxMTguNDIxMDUyNjMxNTc4OTUsIDExOC4yNjU0NDAyMTAyNDk2NiwgMTE4LjI2NTQ0MDIx
MDI0OTY2XSwgWzExOC40MjEwNTI2MzE1Nzg5NSwgMTE3LjgwMTA0NzEyMDQxODg0LCAxMTguNDIx
MDUyNjMxNTc4OTUsIDExOC4yNjU0NDAyMTAyNDk2NiwgMTE4LjExMDIzNjIyMDQ3MjQ0XSwgWzEx
OC4yNjU0NDAyMTAyNDk2NiwgMTE4LjczMzUwOTIzNDgyODUsIDExNy45NTU0MzkwNTYzNTY0OCwg
MTE3Ljk1NTQzOTA1NjM1NjQ4LCAxMTguNTc3MDc1MDk4ODE0MjNdLCBbMTE4LjU3NzA3NTA5ODgx
NDIzLCAxMTcuOTU1NDM5MDU2MzU2NDgsIDExOC40MjEwNTI2MzE1Nzg5NSwgMTE3Ljk1NTQzOTA1
NjM1NjQ4LCAxMTcuODAxMDQ3MTIwNDE4ODRdXX0sICJKU0hlYXAiOiB7ImN1cnJlbnQiOiBbWzU2
MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgw
MzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgzMzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEw
NC4wLCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0
LjAsIDU4MzM2LjBdXX19fX19fSwgInJldmlzaW9ucyI6IHsiV2ViS2l0IjogeyJ0aW1lc3RhbXAi
OiAiMjAxMy0wNy0xOFQwMDozNTozMC40MjU5MTBaIiwgInJldmlzaW9uIjogIjE1MjgyMyJ9fSwg
ImJ1aWxkVGltZSI6ICIyMDEzLTA3LTE5VDA3OjQ0OjUxLjIxODM2NiIsICJkZXNjcmlwdGlvbiI6
ICJwYXRjaGVkIn0sIHsidGVzdHMiOiB7IkxheW91dCI6IHsidXJsIjogImh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0xheW91dCIsICJ0ZXN0cyI6
IHsibGluZS1sYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIv
dHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvbGluZS1sYXlvdXQuaHRtbCIsICJtZXRyaWNz
IjogeyJNYWxsb2MiOiB7ImN1cnJlbnQiOiBbWzE2NDAwMTYuMCwgMTYyMjA5Ni4wLCAxNjIyMTUy
LjAsIDE2NDU2NDAuMCwgMTY0NDU0NC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5Mi4wLCAxNjI2MjQ4
LjAsIDE2NDU2NDAuMCwgMTY0NDU0NC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5Mi4wLCAxNjI2MjQ4
LjAsIDE2NDU1ODQuMCwgMTY0NDQ4OC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5Mi4wLCAxNjI2MjQ4
LjAsIDE2NDU2NDAuMCwgMTY0NDQ4OC4wXV19LCAiUnVucyI6IHsiY3VycmVudCI6IFtbMTE1LjIz
Njg3NTgwMDI1NjA5LCAxMTMuOTI0MDUwNjMyOTExMzksIDExNS42ODEyMzM5MzMxNjE5NSwgMTE0
LjY0OTY4MTUyODY2MjQzLCAxMTQuNzk1OTE4MzY3MzQ2OTRdLCBbMTE2LjI3OTA2OTc2NzQ0MTg1
LCAxMTQuNzk1OTE4MzY3MzQ2OTQsIDExNS45NzkzODE0NDMyOTg5NiwgMTEzLjc4MDAyNTI4NDQ1
MDA2LCAxMTUuNTMyNzM0Mjc0NzExMTddLCBbMTE1LjgzMDExNTgzMDExNTgzLCAxMTUuNTMyNzM0
Mjc0NzExMTcsIDExNS42ODEyMzM5MzMxNjE5NSwgMTE1LjY4MTIzMzkzMzE2MTk1LCAxMTMuNjM2
MzYzNjM2MzYzNjRdLCBbMTE2LjEyOTAzMjI1ODA2NDUxLCAxMTcuMDM1MTEwNTMzMTU5OTUsIDEx
Ni41ODAzMTA4ODA4MjkwMiwgMTE2Ljg4MzExNjg4MzExNjg4LCAxMTYuNTgwMzEwODgwODI5MDJd
XX0sICJKU0hlYXAiOiB7ImN1cnJlbnQiOiBbWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4
MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgz
MzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2
MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdXX19fX19fSwgImJ1aWxk
VGltZSI6ICIyMDEzLTA3LTE5VDA3OjQ3OjIyLjk3MTk3OSIsICJyZXZpc2lvbnMiOiB7IldlYktp
dCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDctMThUMDA6MzU6MzAuNDI1OTEwWiIsICJyZXZpc2lv
biI6ICIxNTI4MjMifX19LCB7InRlc3RzIjogeyJMYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQiLCAidGVz
dHMiOiB7ImxpbmUtbGF5b3V0IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93
c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L2xpbmUtbGF5b3V0Lmh0bWwiLCAibWV0
cmljcyI6IHsiTWFsbG9jIjogeyJjdXJyZW50IjogW1sxNjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYy
NjI0OC4wLCAxNjQ1NjQwLjAsIDE2NDQ1NDQuMF0sIFsxNjM1OTIwLjAsIDE2MjIwOTYuMCwgMTYy
MjE1Mi4wLCAxNjQxNTQ0LjAsIDE2NDA0NDguMF0sIFsxNjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYy
NjI0OC4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODguMF0sIFsxNjM1OTIwLjAsIDE2MjIwOTYuMCwgMTYy
MjE1Mi4wLCAxNjQxNTQ0LjAsIDE2NDA0NDguMF1dfSwgIlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzEx
OC43MzM1MDkyMzQ4Mjg1LCAxMTYuNTgwMzEwODgwODI5MDIsIDExOC44OTAzNTY2NzEwNzAwMSwg
MTE4LjExMDIzNjIyMDQ3MjQ0LCAxMTkuMDQ3NjE5MDQ3NjE5MDVdLCBbMTE4LjczMzUwOTIzNDgy
ODUsIDExOC40MjEwNTI2MzE1Nzg5NSwgMTE4Ljg5MDM1NjY3MTA3MDAxLCAxMTcuODAxMDQ3MTIw
NDE4ODQsIDExOC4xMTAyMzYyMjA0NzI0NF0sIFsxMTkuMzYzMzk1MjI1NDY0MTksIDExOC4xMTAy
MzYyMjA0NzI0NCwgMTE4LjU3NzA3NTA5ODgxNDIzLCAxMTguNTc3MDc1MDk4ODE0MjMsIDExOC43
MzM1MDkyMzQ4Mjg1XSwgWzExNy42NDcwNTg4MjM1Mjk0LCAxMTUuODMwMTE1ODMwMTE1ODMsIDEx
Ni4yNzkwNjk3Njc0NDE4NSwgMTE0LjY0OTY4MTUyODY2MjQzLCAxMTAuNzAxMTA3MDExMDcwMV1d
fSwgIkpTSGVhcCI6IHsiY3VycmVudCI6IFtbNTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgy
NjQuMCwgNTgzMzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1ODMz
Ni4wXSwgWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdLCBbNTYx
NjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgzMzYuMF1dfX19fX19LCAiZGVzY3Jp
cHRpb24iOiAicGF0Y2hlZCIsICJidWlsZFRpbWUiOiAiMjAxMy0wNy0xOVQwNzo0ODo0MS44MzA1
NDUiLCAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6ICIyMDEzLTA3LTE4VDAw
OjM1OjMwLjQyNTkxMFoiLCAicmV2aXNpb24iOiAiMTUyODIzIn19fSwgeyJ0ZXN0cyI6IHsiTGF5
b3V0IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZv
cm1hbmNlVGVzdHMvTGF5b3V0IiwgInRlc3RzIjogeyJsaW5lLWxheW91dCI6IHsidXJsIjogImh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0xheW91
dC9saW5lLWxheW91dC5odG1sIiwgIm1ldHJpY3MiOiB7Ik1hbGxvYyI6IHsiY3VycmVudCI6IFtb
MTY0MDAxNi4wLCAxNjI2MTkyLjAsIDE2MjIxNTIuMCwgMTY0NTY0MC4wLCAxNjQ0NTQ0LjBdLCBb
MTY0MDAxNi4wLCAxNjI2MTkyLjAsIDE2MjYyNDguMCwgMTY0NTU4NC4wLCAxNjQ0NDMyLjBdLCBb
MTY0MDAxNi4wLCAxNjI2MTkyLjAsIDE2MjYyNDguMCwgMTY0NTY0MC4wLCAxNjQ0NTQ0LjBdLCBb
MTY0MDAxNi4wLCAxNjI2MTkyLjAsIDE2MjYxOTIuMCwgMTY0NTU4NC4wLCAxNjQ0NDMyLjBdXX0s
ICJSdW5zIjogeyJjdXJyZW50IjogW1sxMTUuODMwMTE1ODMwMTE1ODMsIDExMi43ODE5NTQ4ODcy
MTgwNSwgMTE1LjM4NDYxNTM4NDYxNTM5LCAxMTQuNzk1OTE4MzY3MzQ2OTQsIDExNS4wODk1MTQw
NjY0OTYxNl0sIFsxMTUuODMwMTE1ODMwMTE1ODMsIDExNS4yMzY4NzU4MDAyNTYwOSwgMTE1LjUz
MjczNDI3NDcxMTE3LCAxMTUuODMwMTE1ODMwMTE1ODMsIDExNS4yMzY4NzU4MDAyNTYwOV0sIFsx
MTUuNTMyNzM0Mjc0NzExMTcsIDExNC42NDk2ODE1Mjg2NjI0MywgMTE1LjY4MTIzMzkzMzE2MTk1
LCAxMTUuOTc5MzgxNDQzMjk4OTYsIDExNS4wODk1MTQwNjY0OTYxNl0sIFsxMTUuODMwMTE1ODMw
MTE1ODMsIDExNS41MzI3MzQyNzQ3MTExNywgMTE1LjgzMDExNTgzMDExNTgzLCAxMTQuOTQyNTI4
NzM1NjMyMTgsIDExNS41MzI3MzQyNzQ3MTExN11dfSwgIkpTSGVhcCI6IHsiY3VycmVudCI6IFtb
NTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgzMzYuMF0sIFs1NjE2OC4wLCA1
ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2MTY4LjAsIDU4MDMyLjAsIDU4
MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgy
NjQuMCwgNTgzMzYuMF1dfX19fX19LCAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFt
cCI6ICIyMDEzLTA3LTE4VDAwOjM1OjMwLjQyNTkxMFoiLCAicmV2aXNpb24iOiAiMTUyODIzIn19
LCAiYnVpbGRUaW1lIjogIjIwMTMtMDctMTlUMDg6MTU6NTEuNDIwNDMxIiwgImRlc2NyaXB0aW9u
IjogImlubGluZUNhcGFjaXR5PTY0In0sIHsidGVzdHMiOiB7IkxheW91dCI6IHsidXJsIjogImh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0xheW91
dCIsICJ0ZXN0cyI6IHsibGluZS1sYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvbGluZS1sYXlvdXQuaHRt
bCIsICJtZXRyaWNzIjogeyJNYWxsb2MiOiB7ImN1cnJlbnQiOiBbWzE2NDAwMTYuMCwgMTYyNjE5
Mi4wLCAxNjI2MjQ4LjAsIDE2NDk3MzYuMCwgMTY0NDU0NC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE3
Ni4wLCAxNjI2MjMyLjAsIDE2NDU2MjQuMCwgMTY0NDUyOC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5
Mi4wLCAxNjI2MjQ4LjAsIDE2NDU2NDAuMCwgMTY0NDQ4OC4wXSwgWzE2NDAwMTYuMCwgMTYyMjA5
Ni4wLCAxNjIyMTUyLjAsIDE2NDU1ODQuMCwgMTY0NDQ4OC4wXV19LCAiUnVucyI6IHsiY3VycmVu
dCI6IFtbMTE3LjM0MDI4NjgzMTgxMjI1LCAxMTUuNTMyNzM0Mjc0NzExMTcsIDExNi44ODMxMTY4
ODMxMTY4OCwgMTE3LjY0NzA1ODgyMzUyOTQsIDExNy40OTM0NzI1ODQ4NTYzOV0sIFsxMTYuODgz
MTE2ODgzMTE2ODgsIDExNy4xODc1LCAxMTYuNzMxNTE3NTA5NzI3NjIsIDExNS42ODEyMzM5MzMx
NjE5NSwgMTE1LjIzNjg3NTgwMDI1NjA5XSwgWzExNy40OTM0NzI1ODQ4NTYzOSwgMTE2LjczMTUx
NzUwOTcyNzYyLCAxMTYuNDI5NDk1NDcyMTg2MjksIDExNy42NDcwNTg4MjM1Mjk0LCAxMTYuNzMx
NTE3NTA5NzI3NjJdLCBbMTE2LjEyOTAzMjI1ODA2NDUxLCAxMTYuNTgwMzEwODgwODI5MDIsIDEx
Ni40Mjk0OTU0NzIxODYyOSwgMTE2LjEyOTAzMjI1ODA2NDUxLCAxMTYuODgzMTE2ODgzMTE2ODhd
XX0sICJKU0hlYXAiOiB7ImN1cnJlbnQiOiBbWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4
MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgz
MzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2
MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdXX19fX19fSwgImJ1aWxk
VGltZSI6ICIyMDEzLTA3LTE5VDA4OjM0OjIzLjcxNDAyNyIsICJkZXNjcmlwdGlvbiI6ICJmYWtl
IGJyYW5jaCIsICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDct
MThUMDA6MzU6MzAuNDI1OTEwWiIsICJyZXZpc2lvbiI6ICIxNTI4MjMifX19LCB7InRlc3RzIjog
eyJMYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsv
UGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQiLCAidGVzdHMiOiB7ImxpbmUtbGF5b3V0IjogeyJ1cmwi
OiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMv
TGF5b3V0L2xpbmUtbGF5b3V0Lmh0bWwiLCAibWV0cmljcyI6IHsiTWFsbG9jIjogeyJjdXJyZW50
IjogW1sxNjM1OTIwLjAsIDE2MjIwOTYuMCwgMTYyMjE1Mi4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODgu
MF0sIFsxNjM1OTIwLjAsIDE2MjIwOTYuMCwgMTYyMjE1Mi4wLCAxNjQxNTQ0LjAsIDE2NDA0MzIu
MF0sIFsxNjQwMDE2LjAsIDE2MjIwOTYuMCwgMTYyMjA5Ni4wLCAxNjQ1NTg0LjAsIDE2NDQ0ODgu
MF0sIFsxNjQwMDE2LjAsIDE2MjYxOTIuMCwgMTYyMjE1Mi4wLCAxNjQ1NjQwLjAsIDE2NDA0NDgu
MF1dfSwgIlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzExOC41NzcwNzUwOTg4MTQyMywgMTE3LjM0MDI4
NjgzMTgxMjI1LCAxMTguODkwMzU2NjcxMDcwMDEsIDExOC44OTAzNTY2NzEwNzAwMSwgMTE4Ljcz
MzUwOTIzNDgyODVdLCBbMTE2Ljg4MzExNjg4MzExNjg4LCAxMTcuMzQwMjg2ODMxODEyMjUsIDEx
OC40MjEwNTI2MzE1Nzg5NSwgMTE3LjgwMTA0NzEyMDQxODg0LCAxMTcuMTg3NV0sIFsxMTcuMzQw
Mjg2ODMxODEyMjUsIDExOC40MjEwNTI2MzE1Nzg5NSwgMTE4LjQyMTA1MjYzMTU3ODk1LCAxMTgu
MTEwMjM2MjIwNDcyNDQsIDExOS4wNDc2MTkwNDc2MTkwNV0sIFsxMTkuMzYzMzk1MjI1NDY0MTks
IDExOS4wNDc2MTkwNDc2MTkwNSwgMTE4LjU3NzA3NTA5ODgxNDIzLCAxMTguODkwMzU2NjcxMDcw
MDEsIDExOS41MjE5MTIzNTA1OTc2XV19LCAiSlNIZWFwIjogeyJjdXJyZW50IjogW1s1NjE2OC4w
LCA1ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2MTY4LjAsIDU4MDMyLjAs
IDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwg
NTgyNjQuMCwgNTgzMzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1
ODMzNi4wXV19fX19fX0sICJkZXNjcmlwdGlvbiI6ICJyZXNpemUgZm9yIHRleHQiLCAiYnVpbGRU
aW1lIjogIjIwMTMtMDctMTlUMDg6NDY6NDcuNjE2MjM3IiwgInJldmlzaW9ucyI6IHsiV2ViS2l0
IjogeyJ0aW1lc3RhbXAiOiAiMjAxMy0wNy0xOFQwMDozNTozMC40MjU5MTBaIiwgInJldmlzaW9u
IjogIjE1MjgyMyJ9fX0sIHsidGVzdHMiOiB7IkxheW91dCI6IHsidXJsIjogImh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0xheW91dCIsICJ0ZXN0
cyI6IHsibGluZS1sYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dz
ZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvbGluZS1sYXlvdXQuaHRtbCIsICJtZXRy
aWNzIjogeyJNYWxsb2MiOiB7ImN1cnJlbnQiOiBbWzE2NDAwMTYuMCwgMTYyNjE5Mi4wLCAxNjI2
MjQ4LjAsIDE2NDU2NDAuMCwgMTY0NDU0NC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5Mi4wLCAxNjI2
MjQ4LjAsIDE2NDU2NDAuMCwgMTY0NDQ4OC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5Mi4wLCAxNjI2
MjMyLjAsIDE2NDU1NjguMCwgMTY0NDQxNi4wXSwgWzE2NDAwMTYuMCwgMTYyNjEzNi4wLCAxNjI2
MTkyLjAsIDE2NDU1ODQuMCwgMTY0NDQ4OC4wXV19LCAiUnVucyI6IHsiY3VycmVudCI6IFtbMTE2
LjQyOTQ5NTQ3MjE4NjI5LCAxMTQuNzk1OTE4MzY3MzQ2OTQsIDExNi43MzE1MTc1MDk3Mjc2Miwg
MTE2LjEyOTAzMjI1ODA2NDUxLCAxMTcuMDM1MTEwNTMzMTU5OTVdLCBbMTEzLjA2NTMyNjYzMzE2
NTgyLCAxMTUuNjgxMjMzOTMzMTYxOTUsIDExNi40Mjk0OTU0NzIxODYyOSwgMTE1LjgzMDExNTgz
MDExNTgzLCAxMTYuNDI5NDk1NDcyMTg2MjldLCBbMTE2LjU4MDMxMDg4MDgyOTAyLCAxMTYuMjc5
MDY5NzY3NDQxODUsIDExNy4xODc1LCAxMTYuNTgwMzEwODgwODI5MDIsIDExNi41ODAzMTA4ODA4
MjkwMl0sIFsxMTYuMTI5MDMyMjU4MDY0NTEsIDExNi4xMjkwMzIyNTgwNjQ1MSwgMTE2LjI3OTA2
OTc2NzQ0MTg1LCAxMTUuODMwMTE1ODMwMTE1ODMsIDExNS4zODQ2MTUzODQ2MTUzOV1dfSwgIkpT
SGVhcCI6IHsiY3VycmVudCI6IFtbNTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwg
NTgzMzYuMF0sIFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1ODMzNi4wXSwg
WzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdLCBbNTYxNjguMCwg
NTgwMzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgzMzYuMF1dfX19fX19LCAiYnVpbGRUaW1lIjog
IjIwMTMtMDctMTlUMDg6NDg6NTIuODQwNzcxIiwgInJldmlzaW9ucyI6IHsiV2ViS2l0IjogeyJ0
aW1lc3RhbXAiOiAiMjAxMy0wNy0xOFQwMDozNTozMC40MjU5MTBaIiwgInJldmlzaW9uIjogIjE1
MjgyMyJ9fX0sIHsidGVzdHMiOiB7IkxheW91dCI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0xheW91dCIsICJ0ZXN0cyI6IHsi
bGluZS1sYXlvdXQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1
bmsvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvbGluZS1sYXlvdXQuaHRtbCIsICJtZXRyaWNzIjog
eyJNYWxsb2MiOiB7ImN1cnJlbnQiOiBbWzE2NDAwMTYuMCwgMTYyMjA5Ni4wLCAxNjIyMTUyLjAs
IDE2NDE0ODAuMCwgMTY0MDQ0OC4wXSwgWzE2NDAwMTYuMCwgMTYyNjE5Mi4wLCAxNjI2MjQ4LjAs
IDE2NDk2NzIuMCwgMTY0NDQ4OC4wXSwgWzE2NDAwMTYuMCwgMTYyMjA5Ni4wLCAxNjIyMDk2LjAs
IDE2NDU1MjAuMCwgMTY0NDQ4OC4wXSwgWzE2NDAwMTYuMCwgMTYyMjA5Ni4wLCAxNjIyMTUyLjAs
IDE2NDU1NzYuMCwgMTY0NDU0NC4wXV19LCAiUnVucyI6IHsiY3VycmVudCI6IFtbMTA4Ljk1ODgz
Nzc3MjM5NzA5LCAxMDcuNzg0NDMxMTM3NzI0NTUsIDEwOC44MjcwODU4NTI0Nzg4NSwgMTA5LjYy
MjQxMTY5MzA1NzI0LCAxMTAuMjk0MTE3NjQ3MDU4ODNdLCBbMTEwLjcwMTEwNzAxMTA3MDEsIDEx
MC41NjUxMTA1NjUxMTA1NiwgMTEwLjk3NDEwNjA0MTkyMzU1LCAxMTAuNDI5NDQ3ODUyNzYwNzMs
IDExMC45NzQxMDYwNDE5MjM1NV0sIFsxMTAuMDI0NDQ5ODc3NzUwNjEsIDEwOS42MjI0MTE2OTMw
NTcyNCwgMTEwLjAyNDQ0OTg3Nzc1MDYxLCAxMDkuMDkwOTA5MDkwOTA5MSwgMTA5Ljc1NjA5NzU2
MDk3NTZdLCBbMTEwLjE1OTExODcyNzA1MDE4LCAxMTAuNTY1MTEwNTY1MTEwNTYsIDExMC45NzQx
MDYwNDE5MjM1NSwgMTEwLjI5NDExNzY0NzA1ODgzLCAxMTAuMDI0NDQ5ODc3NzUwNjFdXX0sICJK
U0hlYXAiOiB7ImN1cnJlbnQiOiBbWzU2MTY4LjAsIDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAs
IDU4MzM2LjBdLCBbNTYxNjguMCwgNTgwMzIuMCwgNTgxMDQuMCwgNTgyNjQuMCwgNTgzMzYuMF0s
IFs1NjE2OC4wLCA1ODAzMi4wLCA1ODEwNC4wLCA1ODI2NC4wLCA1ODMzNi4wXSwgWzU2MTY4LjAs
IDU4MDMyLjAsIDU4MTA0LjAsIDU4MjY0LjAsIDU4MzM2LjBdXX19fX19fSwgImJ1aWxkVGltZSI6
ICIyMDEzLTA3LTE5VDA4OjU1OjMzLjU5MjM1OSIsICJkZXNjcmlwdGlvbiI6ICJtdWx0aXBsZSBj
bGVhciBpbiB0ZXh0IHBhdGgiLCAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6
ICIyMDEzLTA3LTE4VDAwOjM1OjMwLjQyNTkxMFoiLCAicmV2aXNpb24iOiAiMTUyODIzIn19fV08
L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>