<?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>292147</bug_id>
          
          <creation_ts>2025-04-28 01:32:53 -0700</creation_ts>
          <short_desc>REGRESSION (291398@main): Slower String.prototype.split with result length &lt; 100</short_desc>
          <delta_ts>2025-05-08 17:02:14 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dylan Conway">dylan.conway567</reporter>
          <assigned_to name="Vassili Bykov">v_bykov</assigned_to>
          <cc>ben</cc>
    
    <cc>keith_miller</cc>
    
    <cc>leeoniya</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yijia_huang</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2113425</commentid>
    <comment_count>0</comment_count>
      <attachid>475061</attachid>
    <who name="Dylan Conway">dylan.conway567</who>
    <bug_when>2025-04-28 01:32:53 -0700</bug_when>
    <thetext>Created attachment 475061
out.js

The recent `Array.prototype.indexOf` (e1b9447) optimization seems to cause a performance regression in `String.prototype.split`. This only applies to result lengths less than 100 because the extra work involved for the optimization (WeakGCMap.ensureValue) happens when it is less than 100.

out.js is a bundled script that uses the `convert-csv-to-json` package to read a csv (37 cols, 130453 rows) into json. Comparing main and a build with `atomStringsArrayLimit` set to 20 to avoid the optimization, the results are:

```
&gt; hyperfine -n &quot;main&quot; &quot;../webkit-main/Tools/Scripts/run-jsc out.js&quot; -n &quot;atomStringArrayLimit=20&quot; &quot;./Tools/Scripts/run-jsc out.js&quot; --warmup 5
Benchmark 1: main
  Time (mean ± σ):     571.2 ms ±   4.7 ms    [User: 511.0 ms, System: 78.2 ms]
  Range (min … max):   561.9 ms … 576.7 ms    10 runs

Benchmark 2: atomStringArrayLimit=20
  Time (mean ± σ):     258.7 ms ±   2.8 ms    [User: 219.7 ms, System: 57.2 ms]
  Range (min … max):   255.3 ms … 263.4 ms    11 runs

Summary
  atomStringArrayLimit=20 ran
    2.21 ± 0.03 times faster than main
```

another example, splitting the csv by line then comma:

```
// split-csv-37-cols.js
const csv = readFile(&quot;input-37-cols.csv&quot;);

csv.split(&quot;\n&quot;).forEach(line =&gt; {
    line.split(&quot;,&quot;);
});
```

results:

```
&gt; hyperfine -n &quot;main&quot; &quot;../webkit-main/Tools/Scripts/run-jsc split-csv-37-cols.js&quot; -n &quot;atomStringArrayLimit=20&quot; &quot;./Tools/Scripts/run-jsc split-csv-37-cols.js&quot; --warmup 5
Benchmark 1: main
  Time (mean ± σ):     458.1 ms ±   5.8 ms    [User: 380.8 ms, System: 68.9 ms]
  Range (min … max):   451.5 ms … 468.0 ms    10 runs

Benchmark 2: atomStringArrayLimit=20
  Time (mean ± σ):     168.3 ms ±   2.2 ms    [User: 107.3 ms, System: 47.4 ms]
  Range (min … max):   166.7 ms … 176.2 ms    17 runs

Summary
  atomStringArrayLimit=20 ran
    2.72 ± 0.05 times faster than main
```

input csv: https://github.com/Schlumberger/hackathon/blob/master/backend/dataset/data-large.csv

Originally reported here https://github.com/oven-sh/bun/issues/17373</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2115036</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-05-05 01:33:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/150668072&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2115668</commentid>
    <comment_count>2</comment_count>
    <who name="Vassili Bykov">v_bykov</who>
    <bug_when>2025-05-07 10:31:17 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/45069</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2115992</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2025-05-08 17:02:11 -0700</bug_when>
    <thetext>Committed 294689@main (d84f22e0d2e4): &lt;https://commits.webkit.org/294689@main&gt;

Reviewed commits have been landed. Closing PR #45069 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>475061</attachid>
            <date>2025-04-28 01:32:53 -0700</date>
            <delta_ts>2025-04-28 01:32:53 -0700</delta_ts>
            <desc>out.js</desc>
            <filename>out.js</filename>
            <type>text/javascript</type>
            <size>12106</size>
            <attacher name="Dylan Conway">dylan.conway567</attacher>
            
              <data encoding="base64">dmFyIF9fY3JlYXRlID0gT2JqZWN0LmNyZWF0ZTsKdmFyIF9fZ2V0UHJvdG9PZiA9IE9iamVjdC5n
ZXRQcm90b3R5cGVPZjsKdmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTsKdmFy
IF9fZ2V0T3duUHJvcE5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7CnZhciBfX2hh
c093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5Owp2YXIgX190b0VTTSA9
IChtb2QsIGlzTm9kZU1vZGUsIHRhcmdldCkgPT4gewogIHRhcmdldCA9IG1vZCAhPSBudWxsID8g
X19jcmVhdGUoX19nZXRQcm90b09mKG1vZCkpIDoge307CiAgY29uc3QgdG8gPQogICAgaXNOb2Rl
TW9kZSB8fCAhbW9kIHx8ICFtb2QuX19lc01vZHVsZSA/IF9fZGVmUHJvcCh0YXJnZXQsICJkZWZh
dWx0IiwgeyB2YWx1ZTogbW9kLCBlbnVtZXJhYmxlOiB0cnVlIH0pIDogdGFyZ2V0OwogIGZvciAo
bGV0IGtleSBvZiBfX2dldE93blByb3BOYW1lcyhtb2QpKQogICAgaWYgKCFfX2hhc093blByb3Au
Y2FsbCh0bywga2V5KSkKICAgICAgX19kZWZQcm9wKHRvLCBrZXksIHsKICAgICAgICBnZXQ6ICgp
ID0+IG1vZFtrZXldLAogICAgICAgIGVudW1lcmFibGU6IHRydWUsCiAgICAgIH0pOwogIHJldHVy
biB0bzsKfTsKdmFyIF9fY29tbW9uSlMgPSAoY2IsIG1vZCkgPT4gKCkgPT4gKG1vZCB8fCBjYigo
bW9kID0geyBleHBvcnRzOiB7fSB9KS5leHBvcnRzLCBtb2QpLCBtb2QuZXhwb3J0cyk7CnZhciBf
X3JlcXVpcmUgPSAvKiBAX19QVVJFX18gKi8gKHggPT4KICB0eXBlb2YgcmVxdWlyZSAhPT0gInVu
ZGVmaW5lZCIKICAgID8gcmVxdWlyZQogICAgOiB0eXBlb2YgUHJveHkgIT09ICJ1bmRlZmluZWQi
CiAgICAgID8gbmV3IFByb3h5KHgsIHsKICAgICAgICAgIGdldDogKGEsIGIpID0+ICh0eXBlb2Yg
cmVxdWlyZSAhPT0gInVuZGVmaW5lZCIgPyByZXF1aXJlIDogYSlbYl0sCiAgICAgICAgfSkKICAg
ICAgOiB4KShmdW5jdGlvbiAoeCkgewogIGlmICh0eXBlb2YgcmVxdWlyZSAhPT0gInVuZGVmaW5l
ZCIpIHJldHVybiByZXF1aXJlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgdGhyb3cgRXJyb3Io
J0R5bmFtaWMgcmVxdWlyZSBvZiAiJyArIHggKyAnIiBpcyBub3Qgc3VwcG9ydGVkJyk7Cn0pOwoK
Ly8gbm9kZV9tb2R1bGVzL2NvbnZlcnQtY3N2LXRvLWpzb24vc3JjL3V0aWwvZmlsZVV0aWxzLmpz
CnZhciByZXF1aXJlX2ZpbGVVdGlscyA9IF9fY29tbW9uSlMoKGV4cG9ydHMsIG1vZHVsZSkgPT4g
ewogIHZhciBmcyA9ICgpID0+ICh7fSk7CgogIGNsYXNzIEZpbGVVdGlscyB7CiAgICByZWFkRmls
ZShmaWxlSW5wdXROYW1lLCBlbmNvZGluZykgewogICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5j
KGZpbGVJbnB1dE5hbWUsIGVuY29kaW5nKS50b1N0cmluZygpOwogICAgfQogICAgd3JpdGVGaWxl
KGpzb24sIGZpbGVPdXRwdXROYW1lKSB7CiAgICAgIGZzLndyaXRlRmlsZShmaWxlT3V0cHV0TmFt
ZSwganNvbiwgZnVuY3Rpb24gKGVycikgewogICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgIHRo
cm93IGVycjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc29sZS5sb2coIkZpbGUgc2F2
ZWQ6ICIgKyBmaWxlT3V0cHV0TmFtZSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0KICB9CiAg
bW9kdWxlLmV4cG9ydHMgPSBuZXcgRmlsZVV0aWxzKCk7Cn0pOwoKLy8gbm9kZV9tb2R1bGVzL2Nv
bnZlcnQtY3N2LXRvLWpzb24vc3JjL3V0aWwvc3RyaW5nVXRpbHMuanMKdmFyIHJlcXVpcmVfc3Ry
aW5nVXRpbHMgPSBfX2NvbW1vbkpTKChleHBvcnRzLCBtb2R1bGUpID0+IHsKICBjbGFzcyBTdHJp
bmdVdGlscyB7CiAgICB0cmltUHJvcGVydHlOYW1lKHZhbHVlKSB7CiAgICAgIHJldHVybiB2YWx1
ZS5yZXBsYWNlKC9ccy9nLCAiIik7CiAgICB9CiAgICBnZXRWYWx1ZUZvcm1hdEJ5VHlwZSh2YWx1
ZSkgewogICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gIiIpIHsKICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgIH0KICAgICAgbGV0IGlzTnVtYmVyID0gIWlzTmFO
KHZhbHVlKTsKICAgICAgaWYgKGlzTnVtYmVyKSB7CiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1
ZSk7CiAgICAgIH0KICAgICAgaWYgKHZhbHVlID09PSAidHJ1ZSIgfHwgdmFsdWUgPT09ICJmYWxz
ZSIpIHsKICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZS50b0xvd2VyQ2FzZSgpKTsKICAg
ICAgfQogICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTsKICAgIH0KICAgIGhhc0NvbnRlbnQodmFs
dWVzKSB7CiAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMCkgewogICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBpZiAodmFsdWVzW2ldKSB7
CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQog
ICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQogIG1vZHVsZS5leHBvcnRzID0gbmV3IFN0cmlu
Z1V0aWxzKCk7Cn0pOwoKLy8gbm9kZV9tb2R1bGVzL2NvbnZlcnQtY3N2LXRvLWpzb24vc3JjL3V0
aWwvanNvblV0aWxzLmpzCnZhciByZXF1aXJlX2pzb25VdGlscyA9IF9fY29tbW9uSlMoKGV4cG9y
dHMsIG1vZHVsZSkgPT4gewogIGNsYXNzIEpzb25VdGlsIHsKICAgIHZhbGlkYXRlSnNvbihqc29u
KSB7CiAgICAgIHRyeSB7CiAgICAgICAgSlNPTi5wYXJzZShqc29uKTsKICAgICAgfSBjYXRjaCAo
ZXJyKSB7CiAgICAgICAgdGhyb3cgRXJyb3IoCiAgICAgICAgICBgUGFyc2VkIGNzdiBoYXMgZ2Vu
ZXJhdGVkIGFuIGludmFsaWQganNvbiEhIQpgICsgZXJyLAogICAgICAgICk7CiAgICAgIH0KICAg
IH0KICB9CiAgbW9kdWxlLmV4cG9ydHMgPSBuZXcgSnNvblV0aWwoKTsKfSk7CgovLyBub2RlX21v
ZHVsZXMvY29udmVydC1jc3YtdG8tanNvbi9zcmMvY3N2VG9Kc29uLmpzCnZhciByZXF1aXJlX2Nz
dlRvSnNvbiA9IF9fY29tbW9uSlMoKGV4cG9ydHMsIG1vZHVsZSkgPT4gewogIHZhciBmaWxlVXRp
bHMgPSByZXF1aXJlX2ZpbGVVdGlscygpOwogIHZhciBzdHJpbmdVdGlscyA9IHJlcXVpcmVfc3Ry
aW5nVXRpbHMoKTsKICB2YXIganNvblV0aWxzID0gcmVxdWlyZV9qc29uVXRpbHMoKTsKICB2YXIg
bmV3TGluZSA9IC9ccj9cbi87CiAgdmFyIGRlZmF1bHRGaWVsZERlbGltaXRlciA9ICI7IjsKCiAg
Y2xhc3MgQ3N2VG9Kc29uIHsKICAgIGZvcm1hdFZhbHVlQnlUeXBlKGFjdGl2ZSkgewogICAgICB0
aGlzLnByaW50VmFsdWVGb3JtYXRCeVR5cGUgPSBhY3RpdmU7CiAgICAgIHJldHVybiB0aGlzOwog
ICAgfQogICAgc3VwcG9ydFF1b3RlZEZpZWxkKGFjdGl2ZSkgewogICAgICB0aGlzLmlzU3VwcG9y
dFF1b3RlZEZpZWxkID0gYWN0aXZlOwogICAgICByZXR1cm4gdGhpczsKICAgIH0KICAgIGZpZWxk
RGVsaW1pdGVyKGRlbGltaXRlcikgewogICAgICB0aGlzLmRlbGltaXRlciA9IGRlbGltaXRlcjsK
ICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CiAgICBpbmRleEhlYWRlcihpbmRleEhlYWRlcikgewog
ICAgICBpZiAoaXNOYU4oaW5kZXhIZWFkZXIpKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJU
aGUgaW5kZXggSGVhZGVyIG11c3QgYmUgYSBOdW1iZXIhIik7CiAgICAgIH0KICAgICAgdGhpcy5p
bmRleEhlYWRlciA9IGluZGV4SGVhZGVyOwogICAgICByZXR1cm4gdGhpczsKICAgIH0KICAgIHBh
cnNlU3ViQXJyYXkoZGVsaW1pdGVyID0gIioiLCBzZXBhcmF0b3IgPSAiLCIpIHsKICAgICAgdGhp
cy5wYXJzZVN1YkFycmF5RGVsaW1pdGVyID0gZGVsaW1pdGVyOwogICAgICB0aGlzLnBhcnNlU3Vi
QXJyYXlTZXBhcmF0b3IgPSBzZXBhcmF0b3I7CiAgICB9CiAgICBlbmNvZGluZyhlbmNvZGluZykg
ewogICAgICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7CiAgICAgIHJldHVybiB0aGlzOwogICAg
fQogICAgZ2VuZXJhdGVKc29uRmlsZUZyb21Dc3YoZmlsZUlucHV0TmFtZSwgZmlsZU91dHB1dE5h
bWUpIHsKICAgICAgbGV0IGpzb25TdHJpbmdpZmllZCA9IHRoaXMuZ2V0SnNvbkZyb21Dc3ZTdHJp
bmdpZmllZChmaWxlSW5wdXROYW1lKTsKICAgICAgZmlsZVV0aWxzLndyaXRlRmlsZShqc29uU3Ry
aW5naWZpZWQsIGZpbGVPdXRwdXROYW1lKTsKICAgIH0KICAgIGdldEpzb25Gcm9tQ3N2U3RyaW5n
aWZpZWQoZmlsZUlucHV0TmFtZSkgewogICAgICBsZXQganNvbiA9IHRoaXMuZ2V0SnNvbkZyb21D
c3YoZmlsZUlucHV0TmFtZSk7CiAgICAgIGxldCBqc29uU3RyaW5naWZpZWQgPSBKU09OLnN0cmlu
Z2lmeShqc29uLCB1bmRlZmluZWQsIDEpOwogICAgICBqc29uVXRpbHMudmFsaWRhdGVKc29uKGpz
b25TdHJpbmdpZmllZCk7CiAgICAgIHJldHVybiBqc29uU3RyaW5naWZpZWQ7CiAgICB9CiAgICBn
ZXRKc29uRnJvbUNzdihmaWxlSW5wdXROYW1lKSB7CiAgICAgIGxldCBwYXJzZWRDc3YgPSBmaWxl
VXRpbHMucmVhZEZpbGUoZmlsZUlucHV0TmFtZSwgdGhpcy5lbmNvZGluZyk7CiAgICAgIHJldHVy
biB0aGlzLmNzdlRvSnNvbihwYXJzZWRDc3YpOwogICAgfQogICAgY3N2U3RyaW5nVG9Kc29uKGNz
dlN0cmluZykgewogICAgICByZXR1cm4gdGhpcy5jc3ZUb0pzb24oY3N2U3RyaW5nKTsKICAgIH0K
ICAgIGNzdlRvSnNvbihwYXJzZWRDc3YpIHsKICAgICAgdGhpcy52YWxpZGF0ZUlucHV0Q29uZmln
KCk7CiAgICAgIGxldCBsaW5lcyA9IHBhcnNlZENzdi5zcGxpdChuZXdMaW5lKTsKICAgICAgbGV0
IGZpZWxkRGVsaW1pdGVyID0gdGhpcy5nZXRGaWVsZERlbGltaXRlcigpOwogICAgICBsZXQgaW5k
ZXggPSB0aGlzLmdldEluZGV4SGVhZGVyKCk7CiAgICAgIGxldCBoZWFkZXJzOwogICAgICBpZiAo
dGhpcy5pc1N1cHBvcnRRdW90ZWRGaWVsZCkgewogICAgICAgIGhlYWRlcnMgPSB0aGlzLnNwbGl0
KGxpbmVzW2luZGV4XSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaGVhZGVycyA9IGxpbmVzW2lu
ZGV4XS5zcGxpdChmaWVsZERlbGltaXRlcik7CiAgICAgIH0KICAgICAgd2hpbGUgKCFzdHJpbmdV
dGlscy5oYXNDb250ZW50KGhlYWRlcnMpICYmIGluZGV4IDw9IGxpbmVzLmxlbmd0aCkgewogICAg
ICAgIGluZGV4ID0gaW5kZXggKyAxOwogICAgICAgIGhlYWRlcnMgPSBsaW5lc1tpbmRleF0uc3Bs
aXQoZmllbGREZWxpbWl0ZXIpOwogICAgICB9CiAgICAgIGxldCBqc29uUmVzdWx0ID0gW107CiAg
ICAgIGZvciAobGV0IGkgPSBpbmRleCArIDE7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykgewogICAg
ICAgIGxldCBjdXJyZW50TGluZTsKICAgICAgICBpZiAodGhpcy5pc1N1cHBvcnRRdW90ZWRGaWVs
ZCkgewogICAgICAgICAgY3VycmVudExpbmUgPSB0aGlzLnNwbGl0KGxpbmVzW2ldKTsKICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgY3VycmVudExpbmUgPSBsaW5lc1tpXS5zcGxpdChmaWVsZERl
bGltaXRlcik7CiAgICAgICAgfQogICAgICAgIGlmIChzdHJpbmdVdGlscy5oYXNDb250ZW50KGN1
cnJlbnRMaW5lKSkgewogICAgICAgICAganNvblJlc3VsdC5wdXNoKHRoaXMuYnVpbGRKc29uUmVz
dWx0KGhlYWRlcnMsIGN1cnJlbnRMaW5lKSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVy
biBqc29uUmVzdWx0OwogICAgfQogICAgZ2V0RmllbGREZWxpbWl0ZXIoKSB7CiAgICAgIGlmICh0
aGlzLmRlbGltaXRlcikgewogICAgICAgIHJldHVybiB0aGlzLmRlbGltaXRlcjsKICAgICAgfQog
ICAgICByZXR1cm4gZGVmYXVsdEZpZWxkRGVsaW1pdGVyOwogICAgfQogICAgZ2V0SW5kZXhIZWFk
ZXIoKSB7CiAgICAgIGlmICh0aGlzLmluZGV4SGVhZGVyICE9PSBudWxsICYmICFpc05hTih0aGlz
LmluZGV4SGVhZGVyKSkgewogICAgICAgIHJldHVybiB0aGlzLmluZGV4SGVhZGVyOwogICAgICB9
CiAgICAgIHJldHVybiAwOwogICAgfQogICAgYnVpbGRKc29uUmVzdWx0KGhlYWRlcnMsIGN1cnJl
bnRMaW5lKSB7CiAgICAgIGxldCBqc29uT2JqZWN0ID0ge307CiAgICAgIGZvciAobGV0IGogPSAw
OyBqIDwgaGVhZGVycy5sZW5ndGg7IGorKykgewogICAgICAgIGxldCBwcm9wZXJ0eU5hbWUgPSBz
dHJpbmdVdGlscy50cmltUHJvcGVydHlOYW1lKGhlYWRlcnNbal0pOwogICAgICAgIGxldCB2YWx1
ZSA9IGN1cnJlbnRMaW5lW2pdOwogICAgICAgIGlmICh0aGlzLmlzUGFyc2VTdWJBcnJheSh2YWx1
ZSkpIHsKICAgICAgICAgIHZhbHVlID0gdGhpcy5idWlsZEpzb25TdWJBcnJheSh2YWx1ZSk7CiAg
ICAgICAgfQogICAgICAgIGlmICh0aGlzLnByaW50VmFsdWVGb3JtYXRCeVR5cGUgJiYgIUFycmF5
LmlzQXJyYXkodmFsdWUpKSB7CiAgICAgICAgICB2YWx1ZSA9IHN0cmluZ1V0aWxzLmdldFZhbHVl
Rm9ybWF0QnlUeXBlKGN1cnJlbnRMaW5lW2pdKTsKICAgICAgICB9CiAgICAgICAganNvbk9iamVj
dFtwcm9wZXJ0eU5hbWVdID0gdmFsdWU7CiAgICAgIH0KICAgICAgcmV0dXJuIGpzb25PYmplY3Q7
CiAgICB9CiAgICBidWlsZEpzb25TdWJBcnJheSh2YWx1ZSkgewogICAgICBsZXQgZXh0cmFjdGVk
VmFsdWVzID0gdmFsdWUuc3Vic3RyaW5nKAogICAgICAgIHZhbHVlLmluZGV4T2YodGhpcy5wYXJz
ZVN1YkFycmF5RGVsaW1pdGVyKSArIDEsCiAgICAgICAgdmFsdWUubGFzdEluZGV4T2YodGhpcy5w
YXJzZVN1YkFycmF5RGVsaW1pdGVyKSwKICAgICAgKTsKICAgICAgZXh0cmFjdGVkVmFsdWVzLnRy
aW0oKTsKICAgICAgdmFsdWUgPSBleHRyYWN0ZWRWYWx1ZXMuc3BsaXQodGhpcy5wYXJzZVN1YkFy
cmF5U2VwYXJhdG9yKTsKICAgICAgaWYgKHRoaXMucHJpbnRWYWx1ZUZvcm1hdEJ5VHlwZSkgewog
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKICAgICAgICAg
IHZhbHVlW2ldID0gc3RyaW5nVXRpbHMuZ2V0VmFsdWVGb3JtYXRCeVR5cGUodmFsdWVbaV0pOwog
ICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdmFsdWU7CiAgICB9CiAgICBpc1BhcnNlU3Vi
QXJyYXkodmFsdWUpIHsKICAgICAgaWYgKHRoaXMucGFyc2VTdWJBcnJheURlbGltaXRlcikgewog
ICAgICAgIGlmICgKICAgICAgICAgIHZhbHVlICYmCiAgICAgICAgICB2YWx1ZS5pbmRleE9mKHRo
aXMucGFyc2VTdWJBcnJheURlbGltaXRlcikgPT09IDAgJiYKICAgICAgICAgIHZhbHVlLmxhc3RJ
bmRleE9mKHRoaXMucGFyc2VTdWJBcnJheURlbGltaXRlcikgPT09IHZhbHVlLmxlbmd0aCAtIDEK
ICAgICAgICApIHsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgfQogICAg
ICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICB2YWxpZGF0ZUlucHV0Q29uZmlnKCkgewogICAgICBp
ZiAodGhpcy5pc1N1cHBvcnRRdW90ZWRGaWVsZCkgewogICAgICAgIGlmICh0aGlzLmdldEZpZWxk
RGVsaW1pdGVyKCkgPT09ICciJykgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXaGVuIFN1
cHBvcnRRdW90ZWRGaWVsZHMgaXMgZW5hYmxlZCB5b3UgY2Fubm90IGRlZmluZWQgdGhlIGZpZWxk
IGRlbGltaXRlciBhcyBxdW90ZSAtPiBbIl0nKTsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMu
cGFyc2VTdWJBcnJheVNlcGFyYXRvciA9PT0gJyInKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoCiAgICAgICAgICAgICdXaGVuIFN1cHBvcnRRdW90ZWRGaWVsZHMgaXMgZW5hYmxlZCB5b3Ug
Y2Fubm90IGRlZmluZWQgdGhlIGZpZWxkIHBhcnNlU3ViQXJyYXlTZXBhcmF0b3IgYXMgcXVvdGUg
LT4gWyJdJywKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLnBhcnNlU3Vi
QXJyYXlEZWxpbWl0ZXIgPT09ICciJykgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKAogICAg
ICAgICAgICAnV2hlbiBTdXBwb3J0UXVvdGVkRmllbGRzIGlzIGVuYWJsZWQgeW91IGNhbm5vdCBk
ZWZpbmVkIHRoZSBmaWVsZCBwYXJzZVN1YkFycmF5RGVsaW1pdGVyIGFzIHF1b3RlIC0+IFsiXScs
CiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgaGFzUXVvdGVzKGxpbmUp
IHsKICAgICAgcmV0dXJuIGxpbmUuaW5jbHVkZXMoJyInKTsKICAgIH0KICAgIHNwbGl0KGxpbmUp
IHsKICAgICAgaWYgKGxpbmUubGVuZ3RoID09IDApIHsKICAgICAgICByZXR1cm4gW107CiAgICAg
IH0KICAgICAgbGV0IGRlbGltID0gdGhpcy5nZXRGaWVsZERlbGltaXRlcigpOwogICAgICBsZXQg
c3ViU3BsaXRzID0gWyIiXTsKICAgICAgaWYgKHRoaXMuaGFzUXVvdGVzKGxpbmUpKSB7CiAgICAg
ICAgbGV0IGNoYXJzID0gbGluZS5zcGxpdCgiIik7CiAgICAgICAgbGV0IHN1YkluZGV4ID0gMDsK
ICAgICAgICBsZXQgc3RhcnRRdW90ZSA9IGZhbHNlOwogICAgICAgIGxldCBpc0RvdWJsZSA9IGZh
bHNlOwogICAgICAgIGNoYXJzLmZvckVhY2goKGMsIGksIGFycikgPT4gewogICAgICAgICAgaWYg
KGlzRG91YmxlKSB7CiAgICAgICAgICAgIHN1YlNwbGl0c1tzdWJJbmRleF0gKz0gYzsKICAgICAg
ICAgICAgaXNEb3VibGUgPSBmYWxzZTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQog
ICAgICAgICAgaWYgKGMgIT0gJyInICYmIGMgIT0gZGVsaW0pIHsKICAgICAgICAgICAgc3ViU3Bs
aXRzW3N1YkluZGV4XSArPSBjOwogICAgICAgICAgfSBlbHNlIGlmIChjID09IGRlbGltICYmIHN0
YXJ0UXVvdGUpIHsKICAgICAgICAgICAgc3ViU3BsaXRzW3N1YkluZGV4XSArPSBjOwogICAgICAg
ICAgfSBlbHNlIGlmIChjID09IGRlbGltKSB7CiAgICAgICAgICAgIHN1YkluZGV4Kys7CiAgICAg
ICAgICAgIHN1YlNwbGl0c1tzdWJJbmRleF0gPSAiIjsKICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGFycltpICsgMV0gPT09ICciJykgewogICAg
ICAgICAgICAgIGlzRG91YmxlID0gdHJ1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICBpZiAoIXN0YXJ0UXVvdGUpIHsKICAgICAgICAgICAgICAgIHN0YXJ0UXVvdGUgPSB0cnVl
OwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBzdGFydFF1b3RlID0gZmFs
c2U7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSk7
CiAgICAgICAgaWYgKHN0YXJ0UXVvdGUpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiUm93
IGNvbnRhaW5zIG1pc21hdGNoZWQgcXVvdGVzISIpOwogICAgICAgIH0KICAgICAgICByZXR1cm4g
c3ViU3BsaXRzOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBsaW5lLnNwbGl0KGRlbGlt
KTsKICAgICAgfQogICAgfQogIH0KICBtb2R1bGUuZXhwb3J0cyA9IG5ldyBDc3ZUb0pzb24oKTsK
fSk7CgovLyBub2RlX21vZHVsZXMvY29udmVydC1jc3YtdG8tanNvbi9pbmRleC5qcwp2YXIgcmVx
dWlyZV9jb252ZXJ0X2Nzdl90b19qc29uID0gX19jb21tb25KUyhleHBvcnRzID0+IHsKICB2YXIg
Y3N2VG9Kc29uID0gcmVxdWlyZV9jc3ZUb0pzb24oKTsKICB2YXIgZW5jb2RpbmdPcHMgPSB7CiAg
ICB1dGY4OiAidXRmOCIsCiAgICB1Y3MyOiAidWNzMiIsCiAgICB1dGYxNmxlOiAidXRmMTZsZSIs
CiAgICBsYXRpbjE6ICJsYXRpbjEiLAogICAgYXNjaWk6ICJhc2NpaSIsCiAgICBiYXNlNjQ6ICJi
YXNlNjQiLAogICAgaGV4OiAiaGV4IiwKICB9OwogIGV4cG9ydHMuZm9ybWF0VmFsdWVCeVR5cGUg
PSBmdW5jdGlvbiAoYWN0aXZlID0gdHJ1ZSkgewogICAgY3N2VG9Kc29uLmZvcm1hdFZhbHVlQnlU
eXBlKGFjdGl2ZSk7CiAgICByZXR1cm4gdGhpczsKICB9OwogIGV4cG9ydHMuc3VwcG9ydFF1b3Rl
ZEZpZWxkID0gZnVuY3Rpb24gKGFjdGl2ZSA9IGZhbHNlKSB7CiAgICBjc3ZUb0pzb24uc3VwcG9y
dFF1b3RlZEZpZWxkKGFjdGl2ZSk7CiAgICByZXR1cm4gdGhpczsKICB9OwogIGV4cG9ydHMuZmll
bGREZWxpbWl0ZXIgPSBmdW5jdGlvbiAoZGVsaW1pdGVyKSB7CiAgICBjc3ZUb0pzb24uZmllbGRE
ZWxpbWl0ZXIoZGVsaW1pdGVyKTsKICAgIHJldHVybiB0aGlzOwogIH07CiAgZXhwb3J0cy5pbmRl
eEhlYWRlciA9IGZ1bmN0aW9uIChpbmRleCkgewogICAgY3N2VG9Kc29uLmluZGV4SGVhZGVyKGlu
ZGV4KTsKICAgIHJldHVybiB0aGlzOwogIH07CiAgZXhwb3J0cy5wYXJzZVN1YkFycmF5ID0gZnVu
Y3Rpb24gKGRlbGltaXRlciwgc2VwYXJhdG9yKSB7CiAgICBjc3ZUb0pzb24ucGFyc2VTdWJBcnJh
eShkZWxpbWl0ZXIsIHNlcGFyYXRvcik7CiAgICByZXR1cm4gdGhpczsKICB9OwogIGV4cG9ydHMu
Y3VzdG9tRW5jb2RpbmcgPSBmdW5jdGlvbiAoZW5jb2RpbmcpIHsKICAgIGNzdlRvSnNvbi5lbmNv
ZGluZyA9IGVuY29kaW5nOwogICAgcmV0dXJuIHRoaXM7CiAgfTsKICBleHBvcnRzLnV0ZjhFbmNv
ZGluZyA9IGZ1bmN0aW9uIHV0ZjhFbmNvZGluZygpIHsKICAgIGNzdlRvSnNvbi5lbmNvZGluZyA9
IGVuY29kaW5nT3BzLnV0Zjg7CiAgICByZXR1cm4gdGhpczsKICB9OwogIGV4cG9ydHMudWNzMkVu
Y29kaW5nID0gZnVuY3Rpb24gKCkgewogICAgY3N2VG9Kc29uLmVuY29kaW5nID0gZW5jb2RpbmdP
cHMudWNzMjsKICAgIHJldHVybiB0aGlzOwogIH07CiAgZXhwb3J0cy51dGYxNmxlRW5jb2Rpbmcg
PSBmdW5jdGlvbiAoKSB7CiAgICBjc3ZUb0pzb24uZW5jb2RpbmcgPSBlbmNvZGluZ09wcy51dGYx
NmxlOwogICAgcmV0dXJuIHRoaXM7CiAgfTsKICBleHBvcnRzLmxhdGluMUVuY29kaW5nID0gZnVu
Y3Rpb24gKCkgewogICAgY3N2VG9Kc29uLmVuY29kaW5nID0gZW5jb2RpbmdPcHMubGF0aW4xOwog
ICAgcmV0dXJuIHRoaXM7CiAgfTsKICBleHBvcnRzLmFzY2lpRW5jb2RpbmcgPSBmdW5jdGlvbiAo
KSB7CiAgICBjc3ZUb0pzb24uZW5jb2RpbmcgPSBlbmNvZGluZ09wcy5hc2NpaTsKICAgIHJldHVy
biB0aGlzOwogIH07CiAgZXhwb3J0cy5iYXNlNjRFbmNvZGluZyA9IGZ1bmN0aW9uICgpIHsKICAg
IHRoaXMuY3N2VG9Kc29uID0gZW5jb2RpbmdPcHMuYmFzZTY0OwogICAgcmV0dXJuIHRoaXM7CiAg
fTsKICBleHBvcnRzLmhleEVuY29kaW5nID0gZnVuY3Rpb24gKCkgewogICAgdGhpcy5jc3ZUb0pz
b24gPSBlbmNvZGluZ09wcy5oZXg7CiAgICByZXR1cm4gdGhpczsKICB9OwogIGV4cG9ydHMuZ2Vu
ZXJhdGVKc29uRmlsZUZyb21Dc3YgPSBmdW5jdGlvbiAoaW5wdXRGaWxlTmFtZSwgb3V0cHV0Rmls
ZU5hbWUpIHsKICAgIGlmICghaW5wdXRGaWxlTmFtZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3Io
ImlucHV0RmlsZU5hbWUgaXMgbm90IGRlZmluZWQhISEiKTsKICAgIH0KICAgIGlmICghb3V0cHV0
RmlsZU5hbWUpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJvdXRwdXRGaWxlTmFtZSBpcyBub3Qg
ZGVmaW5lZCEhISIpOwogICAgfQogICAgY3N2VG9Kc29uLmdlbmVyYXRlSnNvbkZpbGVGcm9tQ3N2
KGlucHV0RmlsZU5hbWUsIG91dHB1dEZpbGVOYW1lKTsKICB9OwogIGV4cG9ydHMuZ2V0SnNvbkZy
b21Dc3YgPSBmdW5jdGlvbiAoaW5wdXRGaWxlTmFtZSkgewogICAgaWYgKCFpbnB1dEZpbGVOYW1l
KSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiaW5wdXRGaWxlTmFtZSBpcyBub3QgZGVmaW5lZCEh
ISIpOwogICAgfQogICAgcmV0dXJuIGNzdlRvSnNvbi5nZXRKc29uRnJvbUNzdihpbnB1dEZpbGVO
YW1lKTsKICB9OwogIGV4cG9ydHMuY3N2U3RyaW5nVG9Kc29uID0gZnVuY3Rpb24gKGNzdlN0cmlu
ZykgewogICAgcmV0dXJuIGNzdlRvSnNvbi5jc3ZTdHJpbmdUb0pzb24oY3N2U3RyaW5nKTsKICB9
OwogIGV4cG9ydHMuanNvblRvQ3N2ID0gZnVuY3Rpb24gKGlucHV0RmlsZU5hbWUsIG91dHB1dEZp
bGVOYW1lKSB7CiAgICBjc3ZUb0pzb24uZ2VuZXJhdGVKc29uRmlsZUZyb21Dc3YoaW5wdXRGaWxl
TmFtZSwgb3V0cHV0RmlsZU5hbWUpOwogIH07Cn0pOwoKLy8gY3N2LXByb2ZpbGUuanMKdmFyIGlt
cG9ydF9jb252ZXJ0X2Nzdl90b19qc29uID0gX190b0VTTShyZXF1aXJlX2NvbnZlcnRfY3N2X3Rv
X2pzb24oKSwgMSk7CnZhciBjc3ZTdHIgPSByZWFkRmlsZSgiaW5wdXQtMzctY29scy5jc3YiKTsK
dmFyIGpzb24gPSBpbXBvcnRfY29udmVydF9jc3ZfdG9fanNvbi5kZWZhdWx0LmZpZWxkRGVsaW1p
dGVyKCIsIikuc3VwcG9ydFF1b3RlZEZpZWxkKHRydWUpLmNzdlN0cmluZ1RvSnNvbihjc3ZTdHIp
OwpwcmludChqc29uLmxlbmd0aCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>