<?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>125944</bug_id>
          
          <creation_ts>2013-12-18 13:47:36 -0800</creation_ts>
          <short_desc>REGRESSION(r156214): 11-13% regressions on Dromaeo/jslib-traverse-jquery</short_desc>
          <delta_ts>2013-12-20 18:37:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>121717</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>961084</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-12-18 13:47:36 -0800</bug_when>
    <thetext>See https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mountainlion%22%2C%22Dromaeo%2Fjslib-traverse-jquery%3ARuns%22%5D%2C%5B%22mac-mountainlion%22%2C%22Dromaeo%2Fjslib-traverse-prototype%3ARuns%22%5D%2C%5B%22mac-lion%22%2C%22Dromaeo%2Fjslib-traverse-jquery%3ARuns%22%5D%5D&amp;days=218&amp;zoom=%5B1379161460728.1538%2C1380252801171.3845%5D

http://trac.webkit.org/log/?rev=156215&amp;stop_rev=156206&amp;verbose=on</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961976</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-12-20 11:57:46 -0800</bug_when>
    <thetext>&lt;rdar://problem/15710364&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962129</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-12-20 17:33:04 -0800</bug_when>
    <thetext>I&apos;ve bisected locally.  This regression is caused by http://trac.webkit.org/changeset/156214.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962131</commentid>
    <comment_count>3</comment_count>
      <attachid>219817</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-12-20 17:38:06 -0800</bug_when>
    <thetext>Created attachment 219817
A/B test result</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962135</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-12-20 17:40:39 -0800</bug_when>
    <thetext>*** Bug 125953 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962139</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-12-20 17:55:47 -0800</bug_when>
    <thetext>The original bug was that we would be in the middle of copying, see and hole and we realize we should have done something else, and then we start copying all over again.

The fix was a simple one: first check if there&apos;s a hole, then do the copy. So you&apos;re always doing two passes over the array.

If we want to fix this regression then we need a way to start copying and then gracefully fail when we see a hole without forgetting that we had already started copying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962142</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-12-20 18:01:07 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; The original bug was that we would be in the middle of copying, see and hole and we realize we should have done something else, and then we start copying all over again.
&gt; 
..see a hole, realize we should...

Jeez.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962161</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-12-20 18:37:23 -0800</bug_when>
    <thetext>I think we need to come up with some strategy to improve the performance of jslib-traverse-jquery because we&apos;ve regressed this particular test thrice:

https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mountainlion%22%2C%22Dromaeo%2Fjslib-traverse-jquery%3ARuns%22%5D%5D&amp;days=200

We used to get 22 runs/s but now we&apos;re getting 17 runs/s, a hopping 30% regression in the total :(

Perhaps we can improve elsewhere to compensate?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>219817</attachid>
            <date>2013-12-20 17:38:06 -0800</date>
            <delta_ts>2013-12-20 17:38:06 -0800</delta_ts>
            <desc>A/B test result</desc>
            <filename>jslib-traverse-jquery.html</filename>
            <type>text/html</type>
            <size>24218</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
ID0gJy9Wb2x1bWVzL0RhdGEvd2Via2l0Myc7CiAgICB2YXIgcmVtb3RlUGF0aCA9ICdodHRwczov
L3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rJzsKICAgIHZhciBudW1iZXJP
ZkZhaWx1cmVzID0gMDsKICAgIHZhciBzdGFydGVkTG9hZGluZ1BsdWdpbnMgPSBmYWxzZTsKICAg
IHZhciBudW1iZXJPZkxvYWRlZFBsdWdpbnMgPSAwOwoKICAgIGZ1bmN0aW9uIGxvYWRTY3JpcHQo
c3JjLCBsb2FkZWQsIGZhaWxlZCkgewogICAgICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlOwogICAgICAg
IHNjcmlwdC5zcmMgPSBzcmM7CiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGxvYWRlZDsKICAgICAg
ICBpZiAoZmFpbGVkKQogICAgICAgICAgICBzY3JpcHQub25lcnJvciA9IGZhaWxlZDsKICAgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7CiAgICB9CgogICAgZnVuY3Rpb24g
bG9hZFBsdWdpbnModHJ1bmtQYXRoKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbHVn
aW5zLmxlbmd0aDsgaSsrKQogICAgICAgICAgICBsb2FkU2NyaXB0KHRydW5rUGF0aCArICcvJyAr
IHBsdWdpbnNbaV0sIGxvYWRlZFBsdWdpbiwgY3JlYXRlRmFpbGVkVG9Mb2FkUGx1Z2luKHBsdWdp
bnNbaV0pKTsKICAgIH0KCiAgICBmdW5jdGlvbiBsb2FkZWRQbHVnaW4oKSB7CiAgICAgICAgbnVt
YmVyT2ZMb2FkZWRQbHVnaW5zKys7CiAgICAgICAgaWYgKG51bWJlck9mTG9hZGVkUGx1Z2lucyA9
PSBwbHVnaW5zLmxlbmd0aCkKICAgICAgICAgICAgc2V0VGltZW91dChpbml0LCAwKTsgICAgICAg
ICAgICAKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVGYWlsZWRUb0xvYWRQbHVnaW4ocGx1Z2lu
KSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgYWxlcnQoIkZhaWxlZCB0byBsb2FkICIg
KyBwbHVnaW4pOyB9CiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlTG9hZGVkSlF1ZXJ5KHRydW5r
UGF0aCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGxvYWRQbHVnaW5zKHRydW5rUGF0
aCk7IH0KICAgIH0KCiAgICBsb2FkU2NyaXB0KGxvY2FsUGF0aCArICcvJyArIGpRdWVyeSwKICAg
ICAgICBjcmVhdGVMb2FkZWRKUXVlcnkobG9jYWxQYXRoKSwKICAgICAgICBmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgIGxvYWRTY3JpcHQocmVtb3RlUGF0aCArICcvJyArIGpRdWVyeSwKICAgICAg
ICAgICAgICAgIGNyZWF0ZUxvYWRlZEpRdWVyeShyZW1vdGVQYXRoKSwKICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsgYWxlcnQoIkZhaWxlZCB0byBsb2FkIGpRdWVyeS4iKTsgfSk7CiAgICAg
ICAgfSk7Cn0pKCk7CgpmdW5jdGlvbiBUZXN0UmVzdWx0KG1ldHJpYywgdmFsdWVzLCBhc3NvY2lh
dGVkUnVuKSB7CiAgICBpZiAodmFsdWVzWzBdIGluc3RhbmNlb2YgQXJyYXkpIHsKICAgICAgICB2
YXIgZmxhdHRlbmVkVmFsdWVzID0gW107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1
ZXMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgIGZsYXR0ZW5lZFZhbHVlcyA9IGZsYXR0ZW5lZFZh
bHVlcy5jb25jYXQodmFsdWVzW2ldKTsKICAgICAgICB2YWx1ZXMgPSBmbGF0dGVuZWRWYWx1ZXM7
CiAgICB9CgogICAgdGhpcy50ZXN0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbWV0cmljOyB9CiAg
ICB0aGlzLnZhbHVlcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHZhbHVlcy5tYXAoZnVuY3Rpb24g
KHZhbHVlKSB7IHJldHVybiBtZXRyaWMuc2NhbGluZ0ZhY3RvcigpICogdmFsdWU7IH0pOyB9CiAg
ICB0aGlzLnVuc2NhbGVkTWVhbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFN0YXRpc3RpY3Muc3Vt
KHZhbHVlcykgLyB2YWx1ZXMubGVuZ3RoOyB9CiAgICB0aGlzLm1lYW4gPSBmdW5jdGlvbiAoKSB7
IHJldHVybiBtZXRyaWMuc2NhbGluZ0ZhY3RvcigpICogdGhpcy51bnNjYWxlZE1lYW4oKTsgfQog
ICAgdGhpcy5taW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBtZXRyaWMuc2NhbGluZ0ZhY3Rvcigp
ICogU3RhdGlzdGljcy5taW4odmFsdWVzKTsgfQogICAgdGhpcy5tYXggPSBmdW5jdGlvbiAoKSB7
IHJldHVybiBtZXRyaWMuc2NhbGluZ0ZhY3RvcigpICogU3RhdGlzdGljcy5tYXgodmFsdWVzKTsg
fQogICAgdGhpcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSA9IGZ1bmN0aW9uICgpIHsKICAgICAg
ICByZXR1cm4gbWV0cmljLnNjYWxpbmdGYWN0b3IoKSAqIFN0YXRpc3RpY3MuY29uZmlkZW5jZUlu
dGVydmFsRGVsdGEoMC45NSwgdmFsdWVzLmxlbmd0aCwKICAgICAgICAgICAgU3RhdGlzdGljcy5z
dW0odmFsdWVzKSwgU3RhdGlzdGljcy5zcXVhcmVTdW0odmFsdWVzKSk7CiAgICB9CiAgICB0aGlz
LmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhUmF0aW8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlz
LmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKCkgLyB0aGlzLm1lYW4oKTsgfQogICAgdGhpcy5wZXJj
ZW50RGlmZmVyZW5jZSA9IGZ1bmN0aW9uKG90aGVyKSB7IHJldHVybiAob3RoZXIudW5zY2FsZWRN
ZWFuKCkgLSB0aGlzLnVuc2NhbGVkTWVhbigpKSAvIHRoaXMudW5zY2FsZWRNZWFuKCk7IH0KICAg
IHRoaXMuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQgPSBmdW5jdGlvbiAob3RoZXIpIHsKICAg
ICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKG90aGVyLm1lYW4oKSAtIHRoaXMubWVhbigpKTsKICAg
ICAgICByZXR1cm4gZGlmZiA+IHRoaXMuY29uZmlkZW5jZUludGVydmFsRGVsdGEoKSAmJiBkaWZm
ID4gb3RoZXIuY29uZmlkZW5jZUludGVydmFsRGVsdGEoKTsKICAgIH0KICAgIHRoaXMucnVuID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNzb2NpYXRlZFJ1bjsgfQp9CgpmdW5jdGlvbiBUZXN0UnVu
KGVudHJ5KSB7CiAgICB0aGlzLmRlc2NyaXB0aW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50
cnlbJ2Rlc2NyaXB0aW9uJ107IH0KICAgIHRoaXMud2Via2l0UmV2aXNpb24gPSBmdW5jdGlvbiAo
KSB7IHJldHVybiBlbnRyeVsncmV2aXNpb25zJ11bJ1dlYktpdCddWydyZXZpc2lvbiddOyB9CiAg
ICB0aGlzLmxhYmVsID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsYWJlbCA9ICdyJyArIHRo
aXMud2Via2l0UmV2aXNpb24oKTsKICAgICAgICBpZiAodGhpcy5kZXNjcmlwdGlvbigpKQogICAg
ICAgICAgICBsYWJlbCArPSAnICZkYXNoOyAnICsgdGhpcy5kZXNjcmlwdGlvbigpOwogICAgICAg
IHJldHVybiBsYWJlbDsKICAgIH0KfQoKZnVuY3Rpb24gUGVyZlRlc3RNZXRyaWMobmFtZSwgbWV0
cmljKSB7CiAgICB2YXIgdGVzdFJlc3VsdHMgPSBbXTsKICAgIHZhciBjYWNoZWRVbml0ID0gbnVs
bDsKICAgIHZhciBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKICAgIHZhciB1bml0ID0geydG
cmFtZVJhdGUnOiAnZnBzJywgJ1J1bnMnOiAncnVucy9zJywgJ1RpbWUnOiAnbXMnLCAnTWFsbG9j
JzogJ2J5dGVzJywgJ0pTSGVhcCc6ICdieXRlcyd9W21ldHJpY107CgogICAgLy8gV2UgY2FuJ3Qg
ZG8gdGhpcyBpbiBUZXN0UmVzdWx0IGJlY2F1c2UgYWxsIHJlc3VsdHMgZm9yIGVhY2ggdGVzdCBu
ZWVkIHRvIHNoYXJlIHRoZSBzYW1lIHVuaXQgYW5kIHRoZSBzYW1lIHNjYWxpbmcgZmFjdG9yLgog
ICAgZnVuY3Rpb24gY29tcHV0ZVNjYWxpbmdGYWN0b3JJZk5lZWRlZCgpIHsKICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkbid0IGJlIGFkanVzdGluZyB1bml0cyBvbiBldmVyeSB0ZXN0IHJlc3Vs
dC4KICAgICAgICAvLyBXZSBjYW4gb25seSBkbyB0aGlzIG9uIHRoZSBmaXJzdCB0ZXN0LgogICAg
ICAgIGlmICghdGVzdFJlc3VsdHMubGVuZ3RoIHx8IGNhY2hlZFVuaXQpCiAgICAgICAgICAgIHJl
dHVybjsKCiAgICAgICAgdmFyIG1lYW4gPSB0ZXN0UmVzdWx0c1swXS51bnNjYWxlZE1lYW4oKTsg
Ly8gRklYTUU6IFdlIHNob3VsZCBsb29rIGF0IGFsbCB2YWx1ZXMuCiAgICAgICAgdmFyIGtpbG8g
PSB1bml0ID09ICdieXRlcycgPyAxMDI0IDogMTAwMDsKICAgICAgICBpZiAobWVhbiA+IDEwICog
a2lsbyAqIGtpbG8gJiYgdW5pdCAhPSAnbXMnKSB7CiAgICAgICAgICAgIGNhY2hlZFNjYWxpbmdG
YWN0b3IgPSAxIC8ga2lsbyAvIGtpbG87CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSAnTSAnICsg
dW5pdDsKICAgICAgICB9IGVsc2UgaWYgKG1lYW4gPiAxMCAqIGtpbG8pIHsKICAgICAgICAgICAg
Y2FjaGVkU2NhbGluZ0ZhY3RvciA9IDEgLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0ID0g
dW5pdCA9PSAnbXMnID8gJ3MnIDogKCdLICcgKyB1bml0KTsKICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gMTsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9
IHVuaXQ7CiAgICAgICAgfQogICAgfQoKICAgIHRoaXMubmFtZSA9IGZ1bmN0aW9uICgpIHsgcmV0
dXJuIG5hbWUgKyAnOicgKyBtZXRyaWM7IH0KICAgIHRoaXMuaXNNZW1vcnlUZXN0ID0gZnVuY3Rp
b24gKCkgeyByZXR1cm4gbWV0cmljID09ICdKU0hlYXAnIHx8IG1ldHJpYyA9PSAnTWFsbG9jJzsg
fQogICAgdGhpcy5hZGRSZXN1bHQgPSBmdW5jdGlvbiAobmV3UmVzdWx0KSB7CiAgICAgICAgdGVz
dFJlc3VsdHMucHVzaChuZXdSZXN1bHQpOwogICAgICAgIGNhY2hlZFVuaXQgPSBudWxsOwogICAg
ICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSBudWxsOwogICAgfQogICAgdGhpcy5yZXN1bHRzID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGVzdFJlc3VsdHM7IH0KICAgIHRoaXMuc2NhbGluZ0ZhY3Rv
ciA9IGZ1bmN0aW9uKCkgewogICAgICAgIGNvbXB1dGVTY2FsaW5nRmFjdG9ySWZOZWVkZWQoKTsK
ICAgICAgICByZXR1cm4gY2FjaGVkU2NhbGluZ0ZhY3RvcjsKICAgIH0KICAgIHRoaXMudW5pdCA9
IGZ1bmN0aW9uICgpIHsKICAgICAgICBjb21wdXRlU2NhbGluZ0ZhY3RvcklmTmVlZGVkKCk7CiAg
ICAgICAgcmV0dXJuIGNhY2hlZFVuaXQ7CiAgICB9CiAgICB0aGlzLnNtYWxsZXJJc0JldHRlciA9
IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuaXQgPT0gJ21zJyB8fCB1bml0ID09ICdieXRlcyc7IH0K
fQoKdmFyIHBsb3RDb2xvciA9ICdyZ2IoMjMwLDUwLDUwKSc7CnZhciBzdWJwb2ludHNQbG90T3B0
aW9ucyA9IHsKICAgIGxpbmVzOiB7c2hvdzp0cnVlLCBsaW5lV2lkdGg6IDB9LAogICAgY29sb3I6
IHBsb3RDb2xvciwKICAgIHBvaW50czoge3Nob3c6IHRydWUsIHJhZGl1czogMX0sCiAgICBiYXJz
OiB7c2hvdzogZmFsc2V9fTsKCnZhciBtYWluUGxvdE9wdGlvbnMgPSB7CiAgICB4YXhpczogewog
ICAgICAgIG1pbjogLTAuNSwKICAgICAgICB0aWNrU2l6ZTogMSwKICAgIH0sCiAgICBjcm9zc2hh
aXI6IHsgbW9kZTogJ3knIH0sCiAgICBzZXJpZXM6IHsgc2hhZG93U2l6ZTogMCB9LAogICAgYmFy
czoge3Nob3c6IHRydWUsIGFsaWduOiAnY2VudGVyJywgYmFyV2lkdGg6IDAuNX0sCiAgICBsaW5l
czogeyBzaG93OiBmYWxzZSB9LAogICAgcG9pbnRzOiB7IHNob3c6IHRydWUgfSwKICAgIGdyaWQ6
IHsKICAgICAgICBib3JkZXJXaWR0aDogMSwKICAgICAgICBib3JkZXJDb2xvcjogJyNjY2MnLAog
ICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLAogICAgICAgIGhvdmVyYWJsZTogdHJ1ZSwK
ICAgICAgICBhdXRvSGlnaGxpZ2h0OiBmYWxzZSwKICAgIH0KfTsKCnZhciB0aW1lUGxvdE9wdGlv
bnMgPSB7CiAgICB5YXhpczogeyBzaG93OiBmYWxzZSB9LAogICAgeGF4aXM6IHsgc2hvdzogZmFs
c2UgfSwKICAgIGxpbmVzOiB7IHNob3c6IHRydWUgfSwKICAgIGdyaWQ6IHsgYm9yZGVyV2lkdGg6
IDEsIGJvcmRlckNvbG9yOiAnI2NjYycgfSwKICAgIGNvbG9yczogWyBwbG90Q29sb3IgXQp9OwoK
ZnVuY3Rpb24gY3JlYXRlUGxvdChjb250YWluZXIsIHRlc3QpIHsKICAgIHZhciBzZWN0aW9uID0g
JCgnPHNlY3Rpb24+PGRpdiBjbGFzcz0icGxvdCI+PC9kaXY+PGRpdiBjbGFzcz0idGltZS1wbG90
cyI+PC9kaXY+JwogICAgICAgICsgJzxzcGFuIGNsYXNzPSJ0b29sdGlwIj48L3NwYW4+PC9zZWN0
aW9uPicpOwogICAgc2VjdGlvbi5jaGlsZHJlbignLnBsb3QnKS5jc3Moeyd3aWR0aCc6ICgxMDAg
KiB0ZXN0LnJlc3VsdHMoKS5sZW5ndGggKyAyNSkgKyAncHgnLCAnaGVpZ2h0JzogJzMwMHB4J30p
OwogICAgJChjb250YWluZXIpLmFwcGVuZChzZWN0aW9uKTsKCiAgICB2YXIgcGxvdENvbnRhaW5l
ciA9IHNlY3Rpb24uY2hpbGRyZW4oJy5wbG90Jyk7CiAgICB2YXIgbWluSXNaZXJvID0gdHJ1ZTsK
ICAgIGF0dGFjaFBsb3QodGVzdCwgcGxvdENvbnRhaW5lciwgbWluSXNaZXJvKTsKCiAgICBhdHRh
Y2hUaW1lUGxvdHModGVzdCwgc2VjdGlvbi5jaGlsZHJlbignLnRpbWUtcGxvdHMnKSk7CgogICAg
dmFyIHRvb2x0aXAgPSBzZWN0aW9uLmNoaWxkcmVuKCcudG9vbHRpcCcpOwogICAgcGxvdENvbnRh
aW5lci5iaW5kKCdwbG90aG92ZXInLCBmdW5jdGlvbiAoZXZlbnQsIHBvc2l0aW9uLCBpdGVtKSB7
CiAgICAgICAgaWYgKGl0ZW0pIHsKICAgICAgICAgICAgdmFyIHBvc3RmaXggPSBpdGVtLnNlcmll
cy5pZCA/ICcgKCcgKyBpdGVtLnNlcmllcy5pZCArICcpJyA6ICcnOwogICAgICAgICAgICB0b29s
dGlwLmh0bWwoaXRlbS5kYXRhcG9pbnRbMV0udG9QcmVjaXNpb24oNCkgKyBwb3N0Zml4KTsKICAg
ICAgICAgICAgdmFyIHNlY3Rpb25PZmZzZXQgPSAkKHNlY3Rpb24pLm9mZnNldCgpOwogICAgICAg
ICAgICB0b29sdGlwLmNzcyh7bGVmdDogaXRlbS5wYWdlWCAtIHNlY3Rpb25PZmZzZXQubGVmdCAt
IHRvb2x0aXAub3V0ZXJXaWR0aCgpIC8gMiwgdG9wOiBpdGVtLnBhZ2VZIC0gc2VjdGlvbk9mZnNl
dC50b3AgKyAxMH0pOwogICAgICAgICAgICB0b29sdGlwLmZhZGVJbigyMDApOwogICAgICAgIH0g
ZWxzZQogICAgICAgICAgICB0b29sdGlwLmhpZGUoKTsKICAgIH0pOwogICAgcGxvdENvbnRhaW5l
ci5tb3VzZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgdG9vbHRpcC5oaWRlKCk7CiAgICB9KTsK
ICAgIHBsb3RDb250YWluZXIuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKICAgICAgICBtaW5Jc1plcm8gPSAhbWluSXNaZXJvOwogICAgICAg
IGF0dGFjaFBsb3QodGVzdCwgcGxvdENvbnRhaW5lciwgbWluSXNaZXJvKTsKICAgIH0pOwoKICAg
IHJldHVybiBzZWN0aW9uOwp9CgpmdW5jdGlvbiBhdHRhY2hUaW1lUGxvdHModGVzdCwgY29udGFp
bmVyKSB7CiAgICB2YXIgcmVzdWx0cyA9IHRlc3QucmVzdWx0cygpOwogICAgdmFyIGF0dGFjaGVk
UGxvdCA9IGZhbHNlOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsr
KSB7CiAgICAgICAgY29udGFpbmVyLmFwcGVuZCgnPGRpdj48L2Rpdj4nKTsKICAgICAgICB2YXIg
dmFsdWVzID0gcmVzdWx0c1tpXS52YWx1ZXMoKTsKICAgICAgICBpZiAoIXZhbHVlcykKICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgYXR0YWNoZWRQbG90ID0gdHJ1ZTsKCiAgICAgICAgJC5w
bG90KGNvbnRhaW5lci5jaGlsZHJlbigpLmxhc3QoKSwgW3ZhbHVlcy5tYXAoZnVuY3Rpb24gKHZh
bHVlLCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCB2YWx1ZV07IH0pXSwKICAgICAgICAgICAgJC5l
eHRlbmQodHJ1ZSwge30sIHRpbWVQbG90T3B0aW9ucywge3lheGlzOiB7bWluOiBNYXRoLm1pbi5h
cHBseShNYXRoLCB2YWx1ZXMpICogMC45LCBtYXg6IE1hdGgubWF4LmFwcGx5KE1hdGgsIHZhbHVl
cykgKiAxLjF9LAogICAgICAgICAgICAgICAgeGF4aXM6IHttaW46IC0wLjUsIG1heDogdmFsdWVz
Lmxlbmd0aCAtIDAuNX19KSk7CiAgICB9CiAgICBpZiAoIWF0dGFjaGVkUGxvdCkKICAgICAgICBj
b250YWluZXIuY2hpbGRyZW4oKS5yZW1vdmUoKTsKfQoKZnVuY3Rpb24gYXR0YWNoUGxvdCh0ZXN0
LCBwbG90Q29udGFpbmVyLCBtaW5Jc1plcm8pIHsKICAgIHZhciByZXN1bHRzID0gdGVzdC5yZXN1
bHRzKCk7CgogICAgdmFyIHZhbHVlcyA9IHJlc3VsdHMucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZXMs
IHJlc3VsdCwgaW5kZXgpIHsKICAgICAgICB2YXIgbmV3VmFsdWVzID0gcmVzdWx0LnZhbHVlcygp
OwogICAgICAgIHJldHVybiBuZXdWYWx1ZXMgPyB2YWx1ZXMuY29uY2F0KG5ld1ZhbHVlcy5tYXAo
ZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBbaW5kZXgsIHZhbHVlXTsgfSkpIDogdmFsdWVzOwog
ICAgfSwgW10pOwoKICAgIHZhciBwbG90RGF0YSA9IFskLmV4dGVuZCh0cnVlLCB7fSwgc3VicG9p
bnRzUGxvdE9wdGlvbnMsIHtkYXRhOiB2YWx1ZXN9KV07CiAgICBwbG90RGF0YS5wdXNoKHtpZDog
JyZtdTsnLCBkYXRhOiByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1
cm4gW2luZGV4LCByZXN1bHQubWVhbigpXTsgfSksIGNvbG9yOiBwbG90Q29sb3J9KTsKCiAgICB2
YXIgb3ZlcmFsbE1heCA9IFN0YXRpc3RpY3MubWF4KHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1
bHQsIGluZGV4KSB7IHJldHVybiByZXN1bHQubWF4KCk7IH0pKTsKICAgIHZhciBvdmVyYWxsTWlu
ID0gU3RhdGlzdGljcy5taW4ocmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsg
cmV0dXJuIHJlc3VsdC5taW4oKTsgfSkpOwogICAgdmFyIG1hcmdpbiA9IChvdmVyYWxsTWF4IC0g
b3ZlcmFsbE1pbikgKiAwLjE7CiAgICB2YXIgY3VycmVudFBsb3RPcHRpb25zID0gJC5leHRlbmQo
dHJ1ZSwge30sIG1haW5QbG90T3B0aW9ucywge3lheGlzOiB7CiAgICAgICAgbWluOiBtaW5Jc1pl
cm8gPyAwIDogb3ZlcmFsbE1pbiAtIG1hcmdpbiwKICAgICAgICBtYXg6IG1pbklzWmVybyA/IG92
ZXJhbGxNYXggKiAxLjEgOiBvdmVyYWxsTWF4ICsgbWFyZ2lufX0pOwoKICAgIGN1cnJlbnRQbG90
T3B0aW9ucy54YXhpcy5tYXggPSByZXN1bHRzLmxlbmd0aCAtIDAuNTsKICAgIGN1cnJlbnRQbG90
T3B0aW9ucy54YXhpcy50aWNrcyA9IHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4
KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5ydW4oKS5sYWJlbCgpXTsgfSk7CgogICAgJC5wbG90
KHBsb3RDb250YWluZXIsIHBsb3REYXRhLCBjdXJyZW50UGxvdE9wdGlvbnMpOwp9CgpmdW5jdGlv
biB0b0ZpeGVkV2lkdGhQcmVjaXNpb24odmFsdWUpIHsKICAgIHZhciBkZWNpbWFsID0gdmFsdWUu
dG9GaXhlZCgyKTsKICAgIHJldHVybiBkZWNpbWFsOwp9CgpmdW5jdGlvbiBmb3JtYXRQZXJjZW50
YWdlKGZyYWN0aW9uKSB7CiAgICB2YXIgcGVyY2VudGFnZSA9IGZyYWN0aW9uICogMTAwOwogICAg
cmV0dXJuIChmcmFjdGlvbiAqIDEwMCkudG9GaXhlZCgyKSArICclJzsKfQoKZnVuY3Rpb24gY3Jl
YXRlVGFibGUodGVzdHMsIHJ1bnMsIHNob3VsZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNlSW5kZXgp
IHsKICAgICQoJyNjb250YWluZXInKS5odG1sKCc8dGhlYWQ+PHRyPjx0aD5UZXN0PC90aD48dGg+
VW5pdDwvdGg+JyArIHJ1bnMubWFwKGZ1bmN0aW9uIChydW4sIGluZGV4KSB7CiAgICAgICAgcmV0
dXJuICc8dGggY29sc3Bhbj0iJyArIChpbmRleCA9PSByZWZlcmVuY2VJbmRleCA/IDIgOiAzKSAr
ICciIGNsYXNzPSJ7c29ydGVyOiBcJ2NvbXBhcmlzb25cJ30iPicgKyBydW4ubGFiZWwoKSArICc8
L3RoPic7CiAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKG1hcmt1cCwgY2VsbCkgeyByZXR1cm4gbWFy
a3VwICsgY2VsbDsgfSwgJycpICsgJzwvdHI+PC9oZWFkPjx0Ym9keT48L3Rib2R5PicpOwoKICAg
IHZhciB0ZXN0TmFtZXMgPSBbXTsKICAgIGZvciAodGVzdE5hbWUgaW4gdGVzdHMpCiAgICAgICAg
dGVzdE5hbWVzLnB1c2godGVzdE5hbWUpOwoKICAgIHRlc3ROYW1lcy5zb3J0KCkubWFwKGZ1bmN0
aW9uICh0ZXN0TmFtZSkgewogICAgICAgIHZhciB0ZXN0ID0gdGVzdHNbdGVzdE5hbWVdOwogICAg
ICAgIGlmICh0ZXN0LmlzTWVtb3J5VGVzdCgpICE9IHNob3VsZElnbm9yZU1lbW9yeSkKICAgICAg
ICAgICAgY3JlYXRlVGFibGVSb3cocnVucywgdGVzdCwgcmVmZXJlbmNlSW5kZXgpOwogICAgfSk7
CgogICAgJCgnI2NvbnRhaW5lcicpLnRhYmxlc29ydGVyKHt3aWRnZXRzOiBbJ3plYnJhJ119KTsK
fQoKZnVuY3Rpb24gbGluZWFyUmVncmVzc2lvbihwb2ludHMpIHsKICAgIC8vIEltcGxlbWVudCBo
dHRwOi8vd3d3LmVhc3ljYWxjdWxhdGlvbi5jb20vc3RhdGlzdGljcy9sZWFybi1jb3JyZWxhdGlv
bi5waHAuCiAgICAvLyB4ID0gbWFnbml0dWRlCiAgICAvLyB5ID0gaXRlcmF0aW9ucwogICAgdmFy
IHN1bVggPSAwOwogICAgdmFyIHN1bVkgPSAwOwogICAgdmFyIHN1bVhTcXVhcmVkID0gMDsKICAg
IHZhciBzdW1ZU3F1YXJlZCA9IDA7CiAgICB2YXIgc3VtWFRpbWVzWSA9IDA7CgogICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgeCA9IGk7CiAg
ICAgICAgdmFyIHkgPSBwb2ludHNbaV07CiAgICAgICAgc3VtWCArPSB4OwogICAgICAgIHN1bVkg
Kz0geTsKICAgICAgICBzdW1YU3F1YXJlZCArPSB4ICogeDsKICAgICAgICBzdW1ZU3F1YXJlZCAr
PSB5ICogeTsKICAgICAgICBzdW1YVGltZXNZICs9IHggKiB5OwogICAgfQoKICAgIHZhciByID0g
KHBvaW50cy5sZW5ndGggKiBzdW1YVGltZXNZIC0gc3VtWCAqIHN1bVkpIC8KICAgICAgICBNYXRo
LnNxcnQoKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAtIHN1bVggKiBzdW1YKSAqCiAgICAg
ICAgICAgICAgICAgIChwb2ludHMubGVuZ3RoICogc3VtWVNxdWFyZWQgLSBzdW1ZICogc3VtWSkp
OwoKICAgIGlmIChpc05hTihyKSB8fCByID09IE1hdGguSW5maW5pdHkpCiAgICAgICAgciA9IDA7
CgogICAgdmFyIHNsb3BlID0gKHBvaW50cy5sZW5ndGggKiBzdW1YVGltZXNZIC0gc3VtWCAqIHN1
bVkpIC8gKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAtIHN1bVggKiBzdW1YKTsKICAgIHZh
ciBpbnRlcmNlcHQgPSBzdW1ZIC8gcG9pbnRzLmxlbmd0aCAtIHNsb3BlICogc3VtWCAvIHBvaW50
cy5sZW5ndGg7CiAgICByZXR1cm4ge3Nsb3BlOiBzbG9wZSwgaW50ZXJjZXB0OiBpbnRlcmNlcHQs
IHJTcXVhcmVkOiByICogcn07Cn0KCnZhciB3YXJuaW5nU2lnbiA9ICc8c3ZnIHZpZXdCb3g9IjAg
MCAxMDAgMTAwIiBzdHlsZT0id2lkdGg6IDE4cHg7IGhlaWdodDogMThweDsgdmVydGljYWwtYWxp
Z246IGJvdHRvbTsiIHZlcnNpb249IjEuMSI+JwogICAgKyAnPHBvbHlnb24gZmlsbD0icmVkIiBw
b2ludHM9IjUwLDEwIDkwLDgwIDEwLDgwIDUwLDEwIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRo
PSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4nCiAgICArICc8cG9seWdvbiBmaWxsPSJ3
aGl0ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwgNTAsIDI4LjcsIDUyLDI5IDUzLDMwIDUwLDYwIiBz
dHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAv
PicKICAgICsgJzxjaXJjbGUgY3g9IjUwIiBjeT0iNzMiIHI9IjYiIGZpbGw9IndoaXRlIiAvPicK
ICAgICsgJzwvc3ZnPic7CgpmdW5jdGlvbiBjcmVhdGVUYWJsZVJvdyhydW5zLCB0ZXN0LCByZWZl
cmVuY2VJbmRleCkgewogICAgdmFyIHRhYmxlUm93ID0gJCgnPHRyPjx0ZCBjbGFzcz0idGVzdCI+
JyArIHRlc3QubmFtZSgpICsgJzwvdGQ+PHRkIGNsYXNzPSJ1bml0Ij4nICsgdGVzdC51bml0KCkg
KyAnPC90ZD48L3RyPicpOwoKICAgIGZ1bmN0aW9uIG1hcmt1cEZvclJ1bihyZXN1bHQsIHJlZmVy
ZW5jZVJlc3VsdCkgewogICAgICAgIHZhciBjb21wYXJpc29uQ2VsbCA9ICcnOwogICAgICAgIHZh
ciBoaWRkZW5WYWx1ZSA9ICcnOwogICAgICAgIHZhciBzaG91bGRDb21wYXJlID0gcmVzdWx0ICE9
PSByZWZlcmVuY2VSZXN1bHQ7CiAgICAgICAgaWYgKHNob3VsZENvbXBhcmUgJiYgcmVmZXJlbmNl
UmVzdWx0KSB7CiAgICAgICAgICAgIHZhciBwZXJjZW50RGlmZmVyZW5jZSA9IHJlZmVyZW5jZVJl
c3VsdC5wZXJjZW50RGlmZmVyZW5jZShyZXN1bHQpOwogICAgICAgICAgICB2YXIgYmV0dGVyID0g
dGVzdC5zbWFsbGVySXNCZXR0ZXIoKSA/IHBlcmNlbnREaWZmZXJlbmNlIDwgMCA6IHBlcmNlbnRE
aWZmZXJlbmNlID4gMDsKICAgICAgICAgICAgdmFyIGNvbXBhcmlzb24gPSAnJzsKICAgICAgICAg
ICAgdmFyIGNsYXNzTmFtZSA9ICdjb21wYXJpc29uJzsKICAgICAgICAgICAgaWYgKHJlZmVyZW5j
ZVJlc3VsdC5pc1N0YXRpc3RpY2FsbHlTaWduaWZpY2FudChyZXN1bHQpKSB7CiAgICAgICAgICAg
ICAgICBjb21wYXJpc29uID0gZm9ybWF0UGVyY2VudGFnZShNYXRoLmFicyhwZXJjZW50RGlmZmVy
ZW5jZSkpICsgKGJldHRlciA/ICcgQmV0dGVyJyA6ICcgV29yc2UmbmJzcDsnKTsKICAgICAgICAg
ICAgICAgIGNsYXNzTmFtZSArPSBiZXR0ZXIgPyAnIGJldHRlcicgOiAnIHdvcnNlJzsKICAgICAg
ICAgICAgfQogICAgICAgICAgICBoaWRkZW5WYWx1ZSA9ICc8c3BhbiBzdHlsZT0iZGlzcGxheTog
bm9uZSI+fCcgKyBjb21wYXJpc29uICsgJzwvc3Bhbj4nOwogICAgICAgICAgICBjb21wYXJpc29u
Q2VsbCA9ICc8dGQgY2xhc3M9IicgKyBjbGFzc05hbWUgKyAnIj4nICsgY29tcGFyaXNvbiArICc8
L3RkPic7CiAgICAgICAgfSBlbHNlIGlmIChzaG91bGRDb21wYXJlKQogICAgICAgICAgICBjb21w
YXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+JzsKCiAgICAgICAgdmFy
IHZhbHVlcyA9IHJlc3VsdC52YWx1ZXMoKTsKICAgICAgICB2YXIgd2FybmluZyA9ICcnOwogICAg
ICAgIHZhciByZWdyZXNzaW9uQW5hbHlzaXMgPSAnJzsKICAgICAgICBpZiAodmFsdWVzICYmIHZh
bHVlcy5sZW5ndGggPiAzKSB7CiAgICAgICAgICAgIHJlZ3Jlc3Npb25SZXN1bHQgPSBsaW5lYXJS
ZWdyZXNzaW9uKHZhbHVlcyk7CiAgICAgICAgICAgIHJlZ3Jlc3Npb25BbmFseXNpcyA9ICdzbG9w
ZT0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlZ3Jlc3Npb25SZXN1bHQuc2xvcGUpCiAgICAg
ICAgICAgICAgICArICcsIFJeMj0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlZ3Jlc3Npb25S
ZXN1bHQuclNxdWFyZWQpOwogICAgICAgICAgICBpZiAocmVncmVzc2lvblJlc3VsdC5yU3F1YXJl
ZCA+IDAuNiAmJiBNYXRoLmFicyhyZWdyZXNzaW9uUmVzdWx0LnNsb3BlKSA+IDAuMDEpIHsKICAg
ICAgICAgICAgICAgIHdhcm5pbmcgPSAnIDxzcGFuIGNsYXNzPSJyZWdyZXNzaW9uLXdhcm5pbmci
IHRpdGxlPSJEZXRlY3RlZCBhIHRpbWUgZGVwZW5kZW5jeSB3aXRoICcgKyByZWdyZXNzaW9uQW5h
bHlzaXMgKyAnIj4nICsgd2FybmluZ1NpZ24gKyAnIDwvc3Bhbj4nOwogICAgICAgICAgICB9CiAg
ICAgICAgfQoKICAgICAgICB2YXIgc3RhdGlzdGljcyA9ICcmc2lnbWE7PScgKyB0b0ZpeGVkV2lk
dGhQcmVjaXNpb24ocmVzdWx0LmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKCkpICsgJywgbWluPScg
KyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1pbigpKQogICAgICAgICAgICArICcsIG1h
eD0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5tYXgoKSkgKyAnXG4nICsgcmVncmVz
c2lvbkFuYWx5c2lzOwoKICAgICAgICAvLyBUYWJsZXNvcnRlciBkb2Vzbid0IGtub3cgYWJvdXQg
dGhlIHNlY29uZCBjZWxsIHNvIHB1dCB0aGUgY29tcGFyaXNvbiBpbiB0aGUgaW52aXNpYmxlIGVs
ZW1lbnQuCiAgICAgICAgcmV0dXJuICc8dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9IicgKyBzdGF0
aXN0aWNzICsgJyI+JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWVhbigpKSArIGhp
ZGRlblZhbHVlCiAgICAgICAgICAgICsgJzwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2
YWxEZWx0YSIgdGl0bGU9IicgKyBzdGF0aXN0aWNzICsgJyI+JnBsdXNtbjsgJwogICAgICAgICAg
ICArIGZvcm1hdFBlcmNlbnRhZ2UocmVzdWx0LmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhUmF0aW8o
KSkgKyB3YXJuaW5nICsgJzwvdGQ+JyArIGNvbXBhcmlzb25DZWxsOwogICAgfQoKICAgIGZ1bmN0
aW9uIG1hcmt1cEZvck1pc3NpbmdSdW4oaXNSZWZlcmVuY2UpIHsKICAgICAgICByZXR1cm4gJzx0
ZCBjb2xzcGFuPSInICsgKGlzUmVmZXJlbmNlID8gMiA6IDMpICsgJyIgY2xhc3M9Im1pc3Npbmci
Pk1pc3Npbmc8L3RkPic7CiAgICB9CgogICAgdmFyIHJ1bkluZGV4ID0gMDsKICAgIHZhciByZXN1
bHRzID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgcmVmZXJlbmNlUmVzdWx0ID0gdW5kZWZpbmVk
OwogICAgdmFyIHJlc3VsdEluZGV4TWFwID0ge307CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJl
c3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB3aGlsZSAocnVuc1tydW5JbmRleF0gIT09IHJl
c3VsdHNbaV0ucnVuKCkpCiAgICAgICAgICAgIHJ1bkluZGV4Kys7CiAgICAgICAgaWYgKHJ1bklu
ZGV4ID09IHJlZmVyZW5jZUluZGV4KQogICAgICAgICAgICByZWZlcmVuY2VSZXN1bHQgPSByZXN1
bHRzW2ldOwogICAgICAgIHJlc3VsdEluZGV4TWFwW3J1bkluZGV4XSA9IGk7CiAgICB9CiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHJ1bnMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgcmVzdWx0
SW5kZXggPSByZXN1bHRJbmRleE1hcFtpXTsKICAgICAgICBpZiAocmVzdWx0SW5kZXggPT0gdW5k
ZWZpbmVkKQogICAgICAgICAgICB0YWJsZVJvdy5hcHBlbmQobWFya3VwRm9yTWlzc2luZ1J1bihp
ID09IHJlZmVyZW5jZUluZGV4KSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICB0YWJsZVJvdy5h
cHBlbmQobWFya3VwRm9yUnVuKHJlc3VsdHNbcmVzdWx0SW5kZXhdLCByZWZlcmVuY2VSZXN1bHQp
KTsKICAgIH0KCiAgICAkKCcjY29udGFpbmVyJykuY2hpbGRyZW4oJ3Rib2R5JykubGFzdCgpLmFw
cGVuZCh0YWJsZVJvdyk7CgogICAgdGFibGVSb3cuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7CiAg
ICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPSB0YWJsZVJvd1swXSAmJiBldmVudC50YXJnZXQucGFy
ZW50Tm9kZSAhPSB0YWJsZVJvd1swXSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICB2YXIgZmlyc3RDZWxsID0gdGFibGVSb3cuY2hp
bGRyZW4oJ3RkJykuZmlyc3QoKTsKICAgICAgICBpZiAoZmlyc3RDZWxsLmNoaWxkcmVuKCdzZWN0
aW9uJykubGVuZ3RoKSB7CiAgICAgICAgICAgIGZpcnN0Q2VsbC5jaGlsZHJlbignc2VjdGlvbicp
LnJlbW92ZSgpOwogICAgICAgICAgICB0YWJsZVJvdy5jaGlsZHJlbigndGQnKS5jc3MoeydwYWRk
aW5nLWJvdHRvbSc6ICcnfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIHBsb3Qg
PSBjcmVhdGVQbG90KGZpcnN0Q2VsbCwgdGVzdCk7CiAgICAgICAgICAgIHBsb3QuY3NzKHsncG9z
aXRpb24nOiAnYWJzb2x1dGUnLCAnei1pbmRleCc6IDJ9KTsKICAgICAgICAgICAgdmFyIG9mZnNl
dCA9IHRhYmxlUm93Lm9mZnNldCgpOwogICAgICAgICAgICBvZmZzZXQubGVmdCArPSAxOwogICAg
ICAgICAgICBvZmZzZXQudG9wICs9IHRhYmxlUm93Lm91dGVySGVpZ2h0KCk7CiAgICAgICAgICAg
IHBsb3Qub2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAgIHRhYmxlUm93LmNoaWxkcmVuKCd0ZCcp
LmNzcyh7J3BhZGRpbmctYm90dG9tJzogcGxvdC5vdXRlckhlaWdodCgpICsgNX0pOwogICAgICAg
IH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Cn0KCmZ1bmN0aW9uIGluaXQoKSB7CiAg
ICAkLnRhYmxlc29ydGVyLmFkZFBhcnNlcih7CiAgICAgICAgaWQ6ICdjb21wYXJpc29uJywKICAg
ICAgICBpczogZnVuY3Rpb24ocykgewogICAgICAgICAgICByZXR1cm4gcy5pbmRleE9mKCd8Jykg
Pj0gMDsKICAgICAgICB9LAogICAgICAgIGZvcm1hdDogZnVuY3Rpb24ocykgewogICAgICAgICAg
ICB2YXIgcGFyc2VkID0gcGFyc2VGbG9hdChzLnN1YnN0cmluZyhzLmluZGV4T2YoJ3wnKSArIDEp
KTsKICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNlZCkgPyAwIDogcGFyc2VkOwogICAgICAg
IH0sCiAgICAgICAgdHlwZTogJ251bWVyaWMnLAogICAgfSk7CgogICAgdmFyIHJ1bnMgPSBbXTsK
ICAgIHZhciBtZXRyaWNzID0ge307CiAgICAkLmVhY2goSlNPTi5wYXJzZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnanNvbicpLnRleHRDb250ZW50KSwgZnVuY3Rpb24gKGluZGV4LCBlbnRyeSkg
ewogICAgICAgIHZhciBydW4gPSBuZXcgVGVzdFJ1bihlbnRyeSk7CiAgICAgICAgcnVucy5wdXNo
KHJ1bik7CgogICAgICAgIGZ1bmN0aW9uIGFkZFRlc3RzKHRlc3RzLCBwYXJlbnRGdWxsTmFtZSkg
ewogICAgICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiB0ZXN0cykgewogICAgICAgICAgICAg
ICAgdmFyIGZ1bGxUZXN0TmFtZSA9IHBhcmVudEZ1bGxOYW1lICsgJy8nICsgdGVzdE5hbWU7CiAg
ICAgICAgICAgICAgICB2YXIgcmF3TWV0cmljcyA9IHRlc3RzW3Rlc3ROYW1lXS5tZXRyaWNzOwoK
ICAgICAgICAgICAgICAgIGZvciAodmFyIG1ldHJpY05hbWUgaW4gcmF3TWV0cmljcykgewogICAg
ICAgICAgICAgICAgICAgIHZhciBmdWxsTWV0cmljTmFtZSA9IGZ1bGxUZXN0TmFtZSArICc6JyAr
IG1ldHJpY05hbWU7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1ldHJpYyA9IG1ldHJpY3NbZnVs
bE1ldHJpY05hbWVdOwogICAgICAgICAgICAgICAgICAgIGlmICghbWV0cmljKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIG1ldHJpYyA9IG5ldyBQZXJmVGVzdE1ldHJpYyhmdWxsVGVzdE5hbWUs
IG1ldHJpY05hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzW2Z1bGxNZXRyaWNO
YW1lXSA9IG1ldHJpYzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
bWV0cmljLmFkZFJlc3VsdChuZXcgVGVzdFJlc3VsdChtZXRyaWMsIHJhd01ldHJpY3NbbWV0cmlj
TmFtZV0uY3VycmVudCwgcnVuKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
aWYgKHRlc3RzW3Rlc3ROYW1lXS50ZXN0cykKICAgICAgICAgICAgICAgICAgICBhZGRUZXN0cyh0
ZXN0c1t0ZXN0TmFtZV0udGVzdHMsIGZ1bGxUZXN0TmFtZSk7CiAgICAgICAgICAgIH0KICAgICAg
ICB9CgogICAgICAgIGFkZFRlc3RzKGVudHJ5LnRlc3RzLCAnJyk7CiAgICB9KTsKCiAgICB2YXIg
c2hvdWxkSWdub3JlTWVtb3J5PSB0cnVlOwogICAgdmFyIHJlZmVyZW5jZUluZGV4ID0gMDsKCiAg
ICBjcmVhdGVUYWJsZShtZXRyaWNzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5j
ZUluZGV4KTsKCiAgICAkKCcjdGltZS1tZW1vcnknKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAo
ZXZlbnQsIGNoZWNrZWRFbGVtZW50KSB7CiAgICAgICAgc2hvdWxkSWdub3JlTWVtb3J5ID0gY2hl
Y2tlZEVsZW1lbnQudGV4dENvbnRlbnQgPT0gJ1RpbWUnOwogICAgICAgIGNyZWF0ZVRhYmxlKG1l
dHJpY3MsIHJ1bnMsIHNob3VsZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNlSW5kZXgpOwogICAgfSk7
CgogICAgcnVucy5tYXAoZnVuY3Rpb24gKHJ1biwgaW5kZXgpIHsKICAgICAgICAkKCcjcmVmZXJl
bmNlJykuYXBwZW5kKCc8c3BhbiB2YWx1ZT0iJyArIGluZGV4ICsgJyInICsgKGluZGV4ID09IHJl
ZmVyZW5jZUluZGV4ID8gJyBjbGFzcz0iY2hlY2tlZCInIDogJycpICsgJz4nICsgcnVuLmxhYmVs
KCkgKyAnPC9zcGFuPicpOwogICAgfSkKCiAgICAkKCcjcmVmZXJlbmNlJykuYmluZCgnY2hhbmdl
JywgZnVuY3Rpb24gKGV2ZW50LCBjaGVja2VkRWxlbWVudCkgewogICAgICAgIHJlZmVyZW5jZUlu
ZGV4ID0gcGFyc2VJbnQoY2hlY2tlZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpKTsKICAg
ICAgICBjcmVhdGVUYWJsZShtZXRyaWNzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVy
ZW5jZUluZGV4KTsKICAgIH0pOwoKICAgICQoJy5jaGVja2JveCcpLmVhY2goZnVuY3Rpb24gKGlu
ZGV4LCBjaGVja2JveCkgewogICAgICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFuJykuY2xp
Y2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0NsYXNzKCdj
aGVja2VkJykpCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICQoY2hlY2tib3gp
LmNoaWxkcmVuKCdzcGFuJykucmVtb3ZlQ2xhc3MoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJCh0
aGlzKS5hZGRDbGFzcygnY2hlY2tlZCcpOwogICAgICAgICAgICAkKGNoZWNrYm94KS50cmlnZ2Vy
KCdjaGFuZ2UnLCAkKHRoaXMpKTsKICAgICAgICB9KTsKICAgIH0pOwp9Cgo8L3NjcmlwdD4KPHNj
cmlwdCBpZD0ianNvbiIgdHlwZT0iYXBwbGljYXRpb24vanNvbiI+W3sidGVzdHMiOiB7IkRyb21h
ZW8iOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9y
bWFuY2VUZXN0cy9Ecm9tYWVvIiwgInRlc3RzIjogeyJqc2xpYi10cmF2ZXJzZS1qcXVlcnkiOiB7
InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VU
ZXN0cy9Ecm9tYWVvL2pzbGliLXRyYXZlcnNlLWpxdWVyeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1
bnMiOiB7ImN1cnJlbnQiOiBbWzE2LjEwMTI0MDczMjI2ODg0LCAxNi4xNTMwMDUyMjMwMzE5MzYs
IDE2LjE2NTIzNjU5NzY0MjAxOCwgMTYuMTc5NjE4MDM1MDA0NywgMTYuMTgzNTEwMTkzMzc1NThd
LCBbMTYuMDcxMzA3OTE1OTM3MDk4LCAxNi4xMDMyNjk3MDc4MTY2NTgsIDE2LjEyMzA5NDU0NzMz
MTQ3NiwgMTYuMTM0MDExMjU4OTM0Mjk3LCAxNi4xNDMxMjk3NDM2OTMzMDhdLCBbMTYuMDU5MzM4
NzYzNDcxMjUzLCAxNi4xMTMzMTU5MzE3NjQ2NzQsIDE2LjEyMTY3NjMwNDU5MTI3MiwgMTYuMTM2
MTcwNTg2MDc2OTMzLCAxNi4xNjIwNTI5Nzc1Nzg2ODJdLCBbMTUuOTg1NjEwNjY1MzIzMzczLCAx
Ni4wNjYyNTA5OTgzMzk4MywgMTYuMDg1NDM4MTM1MjEyMDk3LCAxNi4xMzYzOTIxNjIyNzg0OSwg
MTYuMTY0NTQ1MDc0NTYwMDVdXX19fX19fSwgImJ1aWxkVGltZSI6ICIyMDEzLTEyLTIxVDAwOjU4
OjA0Ljk2NTQ0OCIsICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjogIjIwMTMt
MDktMjFUMDA6MjQ6MDguNjk1MzM0WiIsICJyZXZpc2lvbiI6ICIxNTYyMTQifX19LCB7InRlc3Rz
IjogeyJEcm9tYWVvIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3Ry
dW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlbyIsICJ0ZXN0cyI6IHsianNsaWItdHJhdmVyc2Ut
anF1ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1Bl
cmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi10cmF2ZXJzZS1qcXVlcnkuaHRtbCIsICJtZXRy
aWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1sxOC41MDMyMTM5MjI5MjcxODQsIDE4LjU2Mzg4
OTI3NDM5OTE1LCAxOC41OTM4NjQ4MzU4OTM3NiwgMTguNjA4MDc3NjQ2Mzc1MDYsIDE4LjYxNTM2
ODc2NjI3Nzk0Nl0sIFsxOC4yNjQ5MTg1MTYzOTM0OSwgMTguMzIyOTE2MTY3Njg4MDg1LCAxOC4z
NTc3MTQxNjQ0MDAzNCwgMTguMzcxOTExMDk3NzI3NjE1LCAxOC4zODM3NTE2NTIyNjM3OTNdLCBb
MTguNTE0MjI5Nzc2ODczODgzLCAxOC41NDMyMzU4OTEyNjQyNzgsIDE4LjU3ODYyNzg0NTc1NjA5
NSwgMTguNjAyMzIzNTA3NTM2NDksIDE4LjYyODQxNjEwMjUzNjkxNF0sIFsxOC41MTEzNDQ0ODc4
MTc0OTIsIDE4LjU1Mjg5NTA5NDY1MzI2MiwgMTguNTcxNTA0MDM4MTUyOTYsIDE4LjU4MzQwMjk3
NjI2MjU1NSwgMTguNTkwNjQ1NjM1NDAxMjc3XV19fX19fX0sICJidWlsZFRpbWUiOiAiMjAxMy0x
Mi0yMVQwMTowODo0MC45MDE2NDYiLCAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFt
cCI6ICIyMDEzLTA5LTIxVDAwOjA3OjMyLjQ2NjI1OVoiLCAicmV2aXNpb24iOiAiMTU2MjEzIn19
fSwgeyJ0ZXN0cyI6IHsiRHJvbWFlbyI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
YnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8iLCAidGVzdHMiOiB7ImpzbGli
LXRyYXZlcnNlLWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nl
ci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItdHJhdmVyc2UtanF1ZXJ5Lmh0
bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTUuODU5NTU0NjQzMjYwMywg
MTYuMDA1ODQ1ODY4NTg2OSwgMTYuMDQzMzUzNTk5NjE4MTU0LCAxNi4wNjE3OTcxMDY3NTg1NzYs
IDE2LjExMTkwOTkwMzE4NTQwNl0sIFsxNS41MzU2MzYyNTg0MjExMDMsIDE1LjYzMjg1MDI2MzI0
OTA5NywgMTUuNjc1ODc4NjczNjEwNzc3LCAxNS43MTQzMTA4NDc3NTcyMSwgMTUuNzU3MzY0MjIz
NzAxMjg2XSwgWzE1Ljk2ODk3NzE0ODYzMTYwOSwgMTYuMDE4ODA2MDM2MDY1OTQzLCAxNi4wNDAy
OTg3MzMwMTYxMDgsIDE2LjA1Mjk5ODY4ODEyODgxMywgMTYuMDU4MjM0NzcyMTgyMjAzXSwgWzE1
LjU4OTI1MzAxNDIyMDA4NiwgMTUuNjE3OTk0NjYxNjM5MDM2LCAxNS42NjIwNDE1MjIyNzY2OCwg
MTUuNjg3OTg5ODMyMDY4NTMsIDE1Ljc0OTE3Mzk1NTU1NjA5N11dfX19fX19LCAicmV2aXNpb25z
IjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6ICIyMDEzLTA5LTIxVDAwOjI0OjA4LjY5NTMzNFoi
LCAicmV2aXNpb24iOiAiMTU2MjE0In19LCAiYnVpbGRUaW1lIjogIjIwMTMtMTItMjFUMDE6MTk6
MzYuMjM4MTIxIn0sIHsidGVzdHMiOiB7IkRyb21hZW8iOiB7InVybCI6ICJodHRwOi8vdHJhYy53
ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvIiwgInRlc3Rz
IjogeyJqc2xpYi10cmF2ZXJzZS1qcXVlcnkiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2pzbGliLXRyYXZlcnNl
LWpxdWVyeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzE4LjI2Mzk0
NzEyMDAwNTM2NiwgMTguMjkzOTMzNDAzOTMzNzMyLCAxOC4zMTgxNjYyMDIxNjIzNSwgMTguMzMz
MjU0MTg2MzYxMzI3LCAxOC4zNjIxNDcyNTg3MjY2NDRdLCBbMTguNDQ0MDkzMzUyODg4NTksIDE4
LjU3ODQwMzI4NjUwNDcxNywgMTguNTkxMTI3NDE3ODA0MTI0LCAxOC42MTIyODQ1NDgxMTQwOCwg
MTguNjIzOTE1NjUzNDk2MDQ1XSwgWzE4LjIzMTg2NzM4MzI4NjQ3NCwgMTguMjg2NzgwMTg5NTU5
OTczLCAxOC4zMTI5ODA3NDg4MzA4OSwgMTguMzIzMTM2MTc5MTEwMDk0LCAxOC4zNDY2MTk5NjY2
NTMyMzNdLCBbMTguMzg1ODAwNTUyMDczMTUsIDE4LjQ0MDk0ODgxOTUwMzA3OCwgMTguNDcxMTg5
ODU3ODExMjc1LCAxOC40OTEwOTA0NzY3NTIxODgsIDE4LjUwMDYwMTIyOTk2Njk5Nl1dfX19fX19
LCAiYnVpbGRUaW1lIjogIjIwMTMtMTItMjFUMDE6MjM6NDQuMjk4Mzk0IiwgInJldmlzaW9ucyI6
IHsiV2ViS2l0IjogeyJ0aW1lc3RhbXAiOiAiMjAxMy0wOS0yMVQwMDoyNDowOC42OTUzMzRaIiwg
InJldmlzaW9uIjogIjE1NjIxNCJ9fX1dPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>