<?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>225277</bug_id>
          
          <creation_ts>2021-05-01 22:53:31 -0700</creation_ts>
          <short_desc>REGRESSION (r271119): Object methods defined with shorthand notation cannot access “caller” in non-strict mode</short_desc>
          <delta_ts>2021-05-18 09:10:23 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=220216</see_also>
          <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="Jonathan Grimes">jsg2021</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1756027</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Grimes">jsg2021</who>
    <bug_when>2021-05-01 22:53:31 -0700</bug_when>
    <thetext>In a script that is not in strict mode defining a object property that has a function as a value using shorthand notation will not be able to access its caller property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756028</commentid>
    <comment_count>1</comment_count>
    <who name="Jonathan Grimes">jsg2021</who>
    <bug_when>2021-05-01 22:55:32 -0700</bug_when>
    <thetext>Here is an example:
https://jsfiddle.net/jsg2021/4voxyca2/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756029</commentid>
    <comment_count>2</comment_count>
    <who name="Jonathan Grimes">jsg2021</who>
    <bug_when>2021-05-01 22:56:06 -0700</bug_when>
    <thetext>If I change object-shorthand notation to old-skewl object notation it works...
ie:
{ constructor: function() {
      this.callParent(arguments);
}}

vs

{ constructor() {
      this.callParent(arguments);
}}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757748</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-06 17:43:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/77633889&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760156</commentid>
    <comment_count>4</comment_count>
      <attachid>428644</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-14 11:41:38 -0700</bug_when>
    <thetext>Created attachment 428644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760158</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-14 11:43:12 -0700</bug_when>
    <thetext>(In reply to Jonathan Grimes from comment #1)
&gt; Here is an example:
&gt; https://jsfiddle.net/jsg2021/4voxyca2/

Hey Jonathan, thank you for nice repro and sorry for the breakage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760160</commentid>
    <comment_count>6</comment_count>
    <who name="Jonathan Grimes">jsg2021</who>
    <bug_when>2021-05-14 11:46:38 -0700</bug_when>
    <thetext>thank you :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760488</commentid>
    <comment_count>7</comment_count>
      <attachid>428644</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-15 15:55:14 -0700</bug_when>
    <thetext>Comment on attachment 428644
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=428644&amp;action=review

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:413
&gt; +    SourceParseMode parseMode = function-&gt;jsExecutable()-&gt;parseMode();

Dueling coding styles: This would be better with auto. We don’t want to name the type, risking that if we named the wrong one we could cause type conversion, just to get the function result and pass it along to predicate functions like isGeneratorParseMode.

But you have told me that auto is less in fashion in JavaScriptCore, as coding style and project culture subtly drifts apart.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760904</commentid>
    <comment_count>8</comment_count>
      <attachid>428644</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-17 14:43:48 -0700</bug_when>
    <thetext>Comment on attachment 428644
Patch

(In reply to Darin Adler from comment #7)

Thank you for review!

&gt; &gt; Source/JavaScriptCore/runtime/JSFunction.cpp:413
&gt; &gt; +    SourceParseMode parseMode = function-&gt;jsExecutable()-&gt;parseMode();
&gt; 
&gt; Dueling coding styles: This would be better with auto. We don’t want to name
&gt; the type, risking that if we named the wrong one we could cause type
&gt; conversion, just to get the function result and pass it along to predicate
&gt; functions like isGeneratorParseMode.

Coming from JS background, I would personally prefer `auto` since in most modern IDEs, type inference is available on :hover.
However, across the JSC codebase, result of parseMode() is explicitly typed.

Darin, is there a protocol to get this patch cherry-picked into Safari 14.5.X?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760934</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-17 16:20:25 -0700</bug_when>
    <thetext>Committed r277613 (237828@main): &lt;https://commits.webkit.org/237828@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428644.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761055</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-17 23:30:47 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #8)
&gt; Darin, is there a protocol to get this patch cherry-picked into Safari
&gt; 14.5.X?

Need to bring this to the attention of the people inside Apple who pull bugs into release branches. I’m not sure it fits the mission of those kinds of releases. Helpful comment about the impact of the bug could make difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761176</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-18 09:10:23 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Need to bring this to the attention of the people inside Apple who pull bugs
&gt; into release branches. I’m not sure it fits the mission of those kinds of
&gt; releases. Helpful comment about the impact of the bug could make difference.

With best intentions, r271119 made `function.caller` return `null` for callers that are getters / setters, arrow functions, and ES6 methods. The old code using `function.caller` is not aware it&apos;s being called from modern JavaScript. ExtJS 4.x (maybe even later versions) class implementation relies on `function.caller` to perform super(), and is currently broken for userland code that uses new methods syntax. Given that this bug was reported days after 14.5 release, it appears that r271119 has high chances of breaking the web.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428644</attachid>
            <date>2021-05-14 11:41:38 -0700</date>
            <delta_ts>2021-05-17 16:20:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225277-20210514214137.patch</filename>
            <type>text/plain</type>
            <size>11817</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzc0ODgpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTE0ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjcxMTE5KTogT2JqZWN0IG1ldGhv
ZHMgZGVmaW5lZCB3aXRoIHNob3J0aGFuZCBub3RhdGlvbiBjYW5ub3QgYWNjZXNzICJjYWxsZXIi
IGluIG5vbi1zdHJpY3QgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1Mjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzdHJlc3MvY2FsbGVyLWFuZC1hcmd1bWVudHMtcHJvcGVydGllcy1mb3It
ZnVuY3Rpb25zLXRoYXQtZG9udC1oYXZlLXRoZW0uanM6IE5vdyBjb3ZlcnMgIzE1NzQ2MSBhbmQg
IzE1Nzg2My4gCisgICAgICAgICogc3RyZXNzL2Z1bmN0aW9uLWNhbGxlci1jcm9zcy1yZWFsbS12
aWEtY2FsbC1hcHBseS5qczogQWRkZWQsIGNvdmVyYWdlIGZvciAjMzQ1NTMuCisgICAgICAgICog
c3RyZXNzL2Z1bmN0aW9uLWhpZGRlbi1hcy1jYWxsZXIuanM6IEFsc28gYWRkcyB0ZXN0IGNhc2Ug
Zm9yICMxMDIyNzYuCisKIDIwMjEtMDUtMDcgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5n
QHNvbnkuY29tPgogCiAgICAgICAgIFtKU0NdIEVycm9yI2NhdXNlIG11c3QgcmVjb2duaXplIGV4
cGxpY2l0IHVuZGVmaW5lZApJbmRleDogSlNUZXN0cy9zdHJlc3MvY2FsbGVyLWFuZC1hcmd1bWVu
dHMtcHJvcGVydGllcy1mb3ItZnVuY3Rpb25zLXRoYXQtZG9udC1oYXZlLXRoZW0uanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvY2FsbGVyLWFuZC1hcmd1bWVudHMtcHJvcGVydGllcy1m
b3ItZnVuY3Rpb25zLXRoYXQtZG9udC1oYXZlLXRoZW0uanMJKHJldmlzaW9uIDI3NzQ4OCkKKysr
IEpTVGVzdHMvc3RyZXNzL2NhbGxlci1hbmQtYXJndW1lbnRzLXByb3BlcnRpZXMtZm9yLWZ1bmN0
aW9ucy10aGF0LWRvbnQtaGF2ZS10aGVtLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zLDE1ICszLDIy
IEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgICAgIHRocm93IG5ldyBFcnJvcjsKIH0KIAor
Y29uc3QgR2VuZXJhdG9yRnVuY3Rpb24gPSAoZnVuY3Rpb24qICgpIHt9KS5jb25zdHJ1Y3RvcjsK
KwogZnVuY3Rpb24gdGVzdDEoZikgewogICAgIGYuX19wcm90b19fID0ge307CisgICAgYXNzZXJ0
KCFmLmhhc093blByb3BlcnR5KCJjYWxsZXIiKSk7CiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KGYsICJjYWxsZXIiLCB7dmFsdWU6NDJ9KTsKICAgICBhc3NlcnQoZi5jYWxsZXIgPT09IDQyKTsK
KyAgICBhc3NlcnQoIWYuaGFzT3duUHJvcGVydHkoImFyZ3VtZW50cyIpKTsKICAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZiwgImFyZ3VtZW50cyIsIHt2YWx1ZTozMn0pOwogICAgIGFzc2VydChm
LmFyZ3VtZW50cyA9PT0gMzIpOwogfQogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsK
KyAgICB0ZXN0MShmdW5jdGlvbiAoKSB7fS5iaW5kKCkpOwogICAgIHRlc3QxKGZ1bmN0aW9uICgp
IHsgInVzZSBzdHJpY3QiOyB9KTsKKyAgICB0ZXN0MShuZXcgRnVuY3Rpb24oYCJ1c2Ugc3RyaWN0
IjtgKSk7CisgICAgdGVzdDEobmV3IEdlbmVyYXRvckZ1bmN0aW9uKTsKICAgICB0ZXN0MShjbGFz
cyBDIHsgfSk7CiAgICAgdGVzdDEoKCkgPT4gdW5kZWZpbmVkKTsKICAgICB0ZXN0MShhc3luYyBm
dW5jdGlvbiBmb28oKXt9KTsKQEAgLTIwLDggKzI3LDEwIEBAIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDsgKytpKSB7CiAKIGZ1bmN0aW9uIHRlc3QyKGYsIHAgPSB7fSkgewogICAgIGYuX19wcm90
b19fID0gcDsKKyAgICBhc3NlcnQoIWYuaGFzT3duUHJvcGVydHkoImNhbGxlciIpKTsKICAgICBm
LmNhbGxlciA9IDQyOwogICAgIGFzc2VydChmLmNhbGxlciA9PT0gNDIpOworICAgIGFzc2VydCgh
Zi5oYXNPd25Qcm9wZXJ0eSgiYXJndW1lbnRzIikpOwogICAgIGYuYXJndW1lbnRzID0gNDQ7CiAg
ICAgYXNzZXJ0KGYuYXJndW1lbnRzID09PSA0NCk7CiB9CkBAIC0zMyw3ICs0MiwxMCBAQCBmdW5j
dGlvbiB0ZXN0MihmLCBwID0ge30pIHsKICAgICAgICAgfQogICAgIH0pOwogICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIHRlc3QyKGZ1bmN0aW9uICgpIHt9LmJp
bmQoKSwgcHJveHkpOwogICAgICAgICB0ZXN0MihmdW5jdGlvbiAoKSB7ICJ1c2Ugc3RyaWN0Ijsg
fSwgcHJveHkpOworICAgICAgICB0ZXN0MihuZXcgRnVuY3Rpb24oYCJ1c2Ugc3RyaWN0IjtgKSwg
cHJveHkpOworICAgICAgICB0ZXN0MihuZXcgR2VuZXJhdG9yRnVuY3Rpb24sIHByb3h5KTsKICAg
ICAgICAgdGVzdDIoY2xhc3MgQyB7IH0sIHByb3h5KTsKICAgICAgICAgdGVzdDIoKCkgPT4gdW5k
ZWZpbmVkLCBwcm94eSk7CiAgICAgICAgIHRlc3QyKGFzeW5jIGZ1bmN0aW9uIGZvbygpe30sIHBy
b3h5KTsKQEAgLTQyLDcgKzU0LDEwIEBAIGZ1bmN0aW9uIHRlc3QyKGYsIHAgPSB7fSkgewogfQog
CiBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIHRlc3QyKGZ1bmN0aW9uKCkg
e30uYmluZCgpKTsKICAgICB0ZXN0MihmdW5jdGlvbiAoKSB7ICJ1c2Ugc3RyaWN0IjsgfSk7Cisg
ICAgdGVzdDIobmV3IEZ1bmN0aW9uKGAidXNlIHN0cmljdCI7YCkpOworICAgIHRlc3QyKG5ldyBH
ZW5lcmF0b3JGdW5jdGlvbik7CiAgICAgdGVzdDIoY2xhc3MgQyB7IH0pOwogICAgIHRlc3QyKCgp
ID0+IHVuZGVmaW5lZCk7CiAgICAgdGVzdDIoYXN5bmMgZnVuY3Rpb24gZm9vKCl7fSk7CkBAIC01
MSw2ICs2Niw4IEBAIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CiAKIGZ1bmN0aW9u
IHRlc3QzKGYpIHsKICAgICBmLl9fcHJvdG9fXyA9IHt9OworCisgICAgYXNzZXJ0KCFmLmhhc093
blByb3BlcnR5KCJjYWxsZXIiKSk7CiAgICAgZi5jYWxsZXIgPSA0MjsKICAgICBhc3NlcnQoZi5j
YWxsZXIgPT09IDQyKTsKICAgICBhc3NlcnQoZi5oYXNPd25Qcm9wZXJ0eSgiY2FsbGVyIikpOwpA
QCAtNTgsNiArNzUsNyBAQCBmdW5jdGlvbiB0ZXN0MyhmKSB7CiAgICAgYXNzZXJ0KGYuY2FsbGVy
ID09PSB1bmRlZmluZWQpOwogICAgIGFzc2VydCghZi5oYXNPd25Qcm9wZXJ0eSgiY2FsbGVyIikp
OwogCisgICAgYXNzZXJ0KCFmLmhhc093blByb3BlcnR5KCJhcmd1bWVudHMiKSk7CiAgICAgZi5h
cmd1bWVudHMgPSA0NDsKICAgICBhc3NlcnQoZi5hcmd1bWVudHMgPT09IDQ0KTsKICAgICBhc3Nl
cnQoZi5oYXNPd25Qcm9wZXJ0eSgiYXJndW1lbnRzIikpOwpAQCAtNjYsOSArODQsMjYgQEAgZnVu
Y3Rpb24gdGVzdDMoZikgewogICAgIGFzc2VydCghZi5oYXNPd25Qcm9wZXJ0eSgiYXJndW1lbnRz
IikpOwogfQogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICB0ZXN0MyhmdW5j
dGlvbiAoKSB7fS5iaW5kKCkpOwogICAgIHRlc3QzKGZ1bmN0aW9uICgpIHsgInVzZSBzdHJpY3Qi
OyB9KTsKKyAgICB0ZXN0MyhuZXcgRnVuY3Rpb24oYCJ1c2Ugc3RyaWN0IjtgKSk7CisgICAgdGVz
dDMobmV3IEdlbmVyYXRvckZ1bmN0aW9uKTsKICAgICB0ZXN0MyhjbGFzcyBDIHsgfSk7CiAgICAg
dGVzdDMoKCkgPT4gdW5kZWZpbmVkKTsKICAgICB0ZXN0Myhhc3luYyBmdW5jdGlvbiBmb28oKXt9
KTsKICAgICB0ZXN0MyhmdW5jdGlvbiogZm9vKCkgeyB9KTsKIH0KKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyArK2kpIHsKKyAgICBjbGFzcyBDMSB7IHN0YXRpYyBjYWxsZXIoKSB7fSB9Cisg
ICAgQzEuY2FsbGVyID0gMTsKKyAgICBhc3NlcnQoQzEuY2FsbGVyID09PSAxKTsKKworICAgIGNs
YXNzIEMyIHsgc3RhdGljIGFyZ3VtZW50cygpIHt9IH0KKyAgICBDMi5hcmd1bWVudHMgPSAyOwor
ICAgIGFzc2VydChDMi5hcmd1bWVudHMgPT09IDIpOworfQorCit0ZXN0MShTdHJpbmcucHJvdG90
eXBlLml0YWxpY3MpOwordGVzdDIoUmVmbGVjdC5kZWxldGVQcm9wZXJ0eSk7Cit0ZXN0MyhNYXRo
LmxvZzFwKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWNhbGxlci1jcm9zcy1yZWFs
bS12aWEtY2FsbC1hcHBseS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9mdW5jdGlv
bi1jYWxsZXItY3Jvc3MtcmVhbG0tdmlhLWNhbGwtYXBwbHkuanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24tY2FsbGVyLWNyb3NzLXJlYWxtLXZpYS1jYWxsLWFwcGx5
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIGFzc2VydENhbGxl
ck5hbWUoZXhwZWN0ZWROYW1lKSB7CisgICAgY29uc3QgeyBjYWxsZXIgfSA9IGFzc2VydENhbGxl
ck5hbWU7CisgICAgaWYgKHR5cGVvZiBjYWxsZXIgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiY2FsbGVyIHNob3VsZCBiZSBhIGZ1bmN0aW9uISIpOworICAgIGlmIChj
YWxsZXIubmFtZSAhPT0gZXhwZWN0ZWROYW1lKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNh
bGxlci5uYW1lIHNob3VsZCBiZSAiJHtleHBlY3RlZE5hbWV9IiEgR290ICIke2NhbGxlci5uYW1l
fSIgaW5zdGVhZC5gKTsKK30KKworKGZ1bmN0aW9uIHNhbWVSZWFsbSgpIHsgYXNzZXJ0Q2FsbGVy
TmFtZSgic2FtZVJlYWxtIik7IH0pKCk7ICAKKyhmdW5jdGlvbiBzYW1lUmVhbG1WaWFDYWxsKCkg
eyBhc3NlcnRDYWxsZXJOYW1lLmNhbGwobnVsbCwgInNhbWVSZWFsbVZpYUNhbGwiKTsgfSkoKTsg
IAorKGZ1bmN0aW9uIHNhbWVSZWFsbVZpYUFwcGx5KCkgeyBhc3NlcnRDYWxsZXJOYW1lLmFwcGx5
KG51bGwsIFsic2FtZVJlYWxtVmlhQXBwbHkiXSk7IH0pKCk7ICAKKworY29uc3Qgb3RoZXIgPSAk
dm0uY3JlYXRlR2xvYmFsT2JqZWN0KCk7CitvdGhlci50b3AgPSBnbG9iYWxUaGlzOworb3RoZXIu
ZXZhbChgCisgICAgKGZ1bmN0aW9uIGNyb3NzUmVhbG0oKSB7IHRvcC5hc3NlcnRDYWxsZXJOYW1l
KCJjcm9zc1JlYWxtIik7IH0pKCk7CisgICAgKGZ1bmN0aW9uIGNyb3NzUmVhbG1WaWFDYWxsKCkg
eyB0b3AuYXNzZXJ0Q2FsbGVyTmFtZS5jYWxsKG51bGwsICJjcm9zc1JlYWxtVmlhQ2FsbCIpOyB9
KSgpOworICAgIChmdW5jdGlvbiBjcm9zc1JlYWxtVmlhQXBwbHkoKSB7IHRvcC5hc3NlcnRDYWxs
ZXJOYW1lLmFwcGx5KG51bGwsIFsiY3Jvc3NSZWFsbVZpYUFwcGx5Il0pOyB9KSgpOworYCk7Cklu
ZGV4OiBKU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1oaWRkZW4tYXMtY2FsbGVyLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWhpZGRlbi1hcy1jYWxsZXIuanMJKHJldmlz
aW9uIDI3NzQ4OCkKKysrIEpTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWhpZGRlbi1hcy1jYWxsZXIu
anMJKHdvcmtpbmcgY29weSkKQEAgLTMsMTIgKzMsMTUgQEAgZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCwgdGVzdAogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhZCB2YWx1ZTog
JHthY3R1YWx9ICgke3Rlc3RJbmZvfSlgKTsKIH0KIAotbGV0IGNhbGxlciA9IG51bGw7CitsZXQg
Y2FsbGVyVmlhR2V0OworbGV0IGNhbGxlclZpYUdldE93blByb3BlcnR5OwogZnVuY3Rpb24gdXBk
YXRlQ2FsbGVyKCkgewotICAgIGNhbGxlciA9IHVwZGF0ZUNhbGxlci5jYWxsZXI7CisgICAgY2Fs
bGVyVmlhR2V0ID0gdXBkYXRlQ2FsbGVyLmNhbGxlcjsKKyAgICBjYWxsZXJWaWFHZXRPd25Qcm9w
ZXJ0eSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodXBkYXRlQ2FsbGVyLCAiY2Fs
bGVyIikudmFsdWU7CiB9CiBub0lubGluZSh1cGRhdGVDYWxsZXIpOwogCitmdW5jdGlvbiBub3Jt
YWxTbG9wcHlGdW5jdGlvbigpIHsgdXBkYXRlQ2FsbGVyKCk7IH0KIGZ1bmN0aW9uIG5vcm1hbFN0
cmljdEZ1bmN0aW9uKCkgeyAidXNlIHN0cmljdCI7IHVwZGF0ZUNhbGxlcigpOyB9CiAKIGNvbnN0
IHsgZ2V0LCBzZXQgfSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoewpAQCAtMTcs
MjIgKzIwLDQyIEBAIGNvbnN0IHsgZ2V0LCBzZXQgfSA9IE9iamVjdC5nZXRPd25Qcm9wZXIKIH0s
ICJhY2Nlc3NvciIpOwogCiBjb25zdCBhcnJvd0Z1bmN0aW9uID0gKCkgPT4geyB1cGRhdGVDYWxs
ZXIoKTsgfTsKLWNvbnN0IGFzeW5jQXJyb3dGdW5jdGlvbiA9IGFzeW5jICgpID0+IHsgdXBkYXRl
Q2FsbGVyKCk7IH07Citjb25zdCBhc3luY0Fycm93RnVuY3Rpb25XcmFwcGVyID0gYXN5bmMgKHgg
PSB1cGRhdGVDYWxsZXIoKSkgPT4ge307Citjb25zdCBhc3luY0Fycm93RnVuY3Rpb25Cb2R5ID0g
YXN5bmMgKCkgPT4geyB1cGRhdGVDYWxsZXIoKSB9OwogCi1jb25zdCBmdW5jdGlvbnNIaWRkZW5B
c0NhbGxlcnMgPSBbCi0gICAgbm9ybWFsU3RyaWN0RnVuY3Rpb24sCi0gICAgbm9ybWFsU3RyaWN0
RnVuY3Rpb24uYmluZCgpLAorY29uc3QgZnVuY3Rpb25zVmlzaWJsZUFzQ2FsbGVycyA9IFsKKyAg
ICBub3JtYWxTbG9wcHlGdW5jdGlvbiwKICAgICBnZXQsCiAgICAgc2V0LAogICAgIGFycm93RnVu
Y3Rpb24sCi0gICAgYXN5bmNBcnJvd0Z1bmN0aW9uLAotICAgIGZ1bmN0aW9uKiBzeW5jR2VuZXJh
dG9yKCkgeyB1cGRhdGVDYWxsZXIoKTsgfSwKLSAgICB7ICogc3luY0dlbmVyYXRvck1ldGhvZCgp
IHsgdXBkYXRlQ2FsbGVyKCk7IH0gfS5zeW5jR2VuZXJhdG9yTWV0aG9kLAogICAgIHsgbWV0aG9k
KCkgeyB1cGRhdGVDYWxsZXIoKTsgfSB9Lm1ldGhvZCwKLSAgICBhc3luYyBmdW5jdGlvbiBhc3lu
Y0Z1bmN0aW9uKCkgeyB1cGRhdGVDYWxsZXIoKTsgfSwKLSAgICB7IGFzeW5jIGFzeW5jTWV0aG9k
KCkgeyB1cGRhdGVDYWxsZXIoKTsgfSB9LmFzeW5jTWV0aG9kLAotICAgIGFzeW5jIGZ1bmN0aW9u
KiBhc3luY0dlbmVyYXRvcigpIHsgdXBkYXRlQ2FsbGVyKCk7IH0sCi0gICAgeyBhc3luYyAqIGFz
eW5jR2VuZXJhdG9yTWV0aG9kKCkgeyB1cGRhdGVDYWxsZXIoKTsgfSB9LmFzeW5jR2VuZXJhdG9y
TWV0aG9kLAorXTsKKworKGZ1bmN0aW9uIHZpc2libGVBc0NhbGxlcnMoKSB7CisgICAgZm9yIChj
b25zdCBmbiBvZiBmdW5jdGlvbnNWaXNpYmxlQXNDYWxsZXJzKSB7CisgICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgICAgIGNhbGxlclZpYUdldCA9IHVuZGVm
aW5lZDsKKyAgICAgICAgICAgIGNhbGxlclZpYUdldE93blByb3BlcnR5ID0gdW5kZWZpbmVkOwor
CisgICAgICAgICAgICBmbigpOworCisgICAgICAgICAgICBzaG91bGRCZShjYWxsZXJWaWFHZXQs
IGZuLCBmbi5uYW1lKTsKKyAgICAgICAgICAgIHNob3VsZEJlKGNhbGxlclZpYUdldE93blByb3Bl
cnR5LCBmbiwgZm4ubmFtZSk7CisgICAgICAgIH0KKyAgICB9Cit9KSgpOworCitjb25zdCBmdW5j
dGlvbnNIaWRkZW5Bc0NhbGxlcnMgPSBbCisgICAgbm9ybWFsU3RyaWN0RnVuY3Rpb24sCisgICAg
bm9ybWFsU3RyaWN0RnVuY3Rpb24uYmluZCgpLAorICAgIGFzeW5jQXJyb3dGdW5jdGlvbldyYXBw
ZXIsCisgICAgYXN5bmNBcnJvd0Z1bmN0aW9uQm9keSwKKyAgICBmdW5jdGlvbiAqIHN5bmNHZW5l
cmF0b3JXcmFwcGVyKHggPSB1cGRhdGVDYWxsZXIoKSkge30sCisgICAgeyAqIHN5bmNHZW5lcmF0
b3JNZXRob2RXcmFwcGVyKHggPSB1cGRhdGVDYWxsZXIoKSkge30gfS5zeW5jR2VuZXJhdG9yTWV0
aG9kV3JhcHBlciwKKyAgICBhc3luYyBmdW5jdGlvbiBhc3luY0Z1bmN0aW9uV3JhcHBlcih4ID0g
dXBkYXRlQ2FsbGVyKCkpIHt9LAorICAgIHsgYXN5bmMgYXN5bmNNZXRob2RXcmFwcGVyKHggPSB1
cGRhdGVDYWxsZXIoKSkge30gfS5hc3luY01ldGhvZFdyYXBwZXIsCisgICAgYXN5bmMgZnVuY3Rp
b24gKiBhc3luY0dlbmVyYXRvcldyYXBwZXIoeCA9IHVwZGF0ZUNhbGxlcigpKSB7fSwKKyAgICB7
IGFzeW5jICogYXN5bmNHZW5lcmF0b3JNZXRob2RXcmFwcGVyKHggPSB1cGRhdGVDYWxsZXIoKSkg
e30gfS5hc3luY0dlbmVyYXRvck1ldGhvZFdyYXBwZXIsCiBdOwogCiBjb25zdCBjb25zdHJ1Y3Rv
cnNIaWRkZW5Bc0NhbGxlcnMgPSBbCkBAIC00NywxNyArNzAsMjUgQEAgY29uc3QgY29uc3RydWN0
b3JzSGlkZGVuQXNDYWxsZXJzID0gWwogKGZ1bmN0aW9uIGhpZGRlbkFzQ2FsbGVycygpIHsKICAg
ICBmb3IgKGNvbnN0IGZuIG9mIGZ1bmN0aW9uc0hpZGRlbkFzQ2FsbGVycykgewogICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Ci0gICAgICAgICAgICBjYWxsZXIgPSBudWxs
OworICAgICAgICAgICAgY2FsbGVyVmlhR2V0ID0gdW5kZWZpbmVkOworICAgICAgICAgICAgY2Fs
bGVyVmlhR2V0T3duUHJvcGVydHkgPSB1bmRlZmluZWQ7CisKICAgICAgICAgICAgIGZuKCk7Ci0g
ICAgICAgICAgICBzaG91bGRCZShjYWxsZXIsIG51bGwsIGZuLm5hbWUpOworCisgICAgICAgICAg
ICBzaG91bGRCZShjYWxsZXJWaWFHZXQsIG51bGwsIGZuLm5hbWUpOworICAgICAgICAgICAgc2hv
dWxkQmUoY2FsbGVyVmlhR2V0T3duUHJvcGVydHksIG51bGwsIGZuLm5hbWUpOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgZm9yIChjb25zdCBDIG9mIGNvbnN0cnVjdG9yc0hpZGRlbkFzQ2FsbGVy
cykgewogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Ci0gICAgICAgICAg
ICBjYWxsZXIgPSBudWxsOworICAgICAgICAgICAgY2FsbGVyVmlhR2V0ID0gdW5kZWZpbmVkOwor
ICAgICAgICAgICAgY2FsbGVyVmlhR2V0T3duUHJvcGVydHkgPSB1bmRlZmluZWQ7CisKICAgICAg
ICAgICAgIG5ldyBDKCk7Ci0gICAgICAgICAgICBzaG91bGRCZShjYWxsZXIsIG51bGwsIEMubmFt
ZSk7CisKKyAgICAgICAgICAgIHNob3VsZEJlKGNhbGxlclZpYUdldCwgbnVsbCwgQy5uYW1lKTsK
KyAgICAgICAgICAgIHNob3VsZEJlKGNhbGxlclZpYUdldE93blByb3BlcnR5LCBudWxsLCBDLm5h
bWUpOwogICAgICAgICB9CiAgICAgfQogfSkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjc3NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTE0ICBBbGV4ZXkgU2h2YXlr
YSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjcxMTE5
KTogT2JqZWN0IG1ldGhvZHMgZGVmaW5lZCB3aXRoIHNob3J0aGFuZCBub3RhdGlvbiBjYW5ub3Qg
YWNjZXNzICJjYWxsZXIiIGluIG5vbi1zdHJpY3QgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1Mjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBsb29zZW5zIGBmdW5jdGlvbi5j
YWxsZXJgIHRvIGFsbG93IG5vbi1zdHJpY3QgZ2V0dGVycywgc2V0dGVycywgYXJyb3cgZnVuY3Rp
b25zLAorICAgICAgICBhbmQgRVM2IG1ldGhvZHMgdG8gYmUgcmV0dXJuZWQgYXMgY2FsbGVycywg
Zml4aW5nIHdlYiBjb21wYXRpYmlsaXR5LgorCisgICAgICAgIFRoZSBpbnRlbnQgb2YgcjIzMDY2
MiBpcyBwcmVzZXJ2ZWQ6IGdlbmVyYXRvciAvIGFzeW5jIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgZXhw
b3NlZC4gVGhlcmUgaXMKKyAgICAgICAgbm8gZ29vZCB3YXkgdG8gYWNxdWlyZSB3cmFwcGVyIGZ1
bmN0aW9uIGZyb20gdGhlIGludGVybmFsIGJvZHkgb25lLCBub3IgZnJvbSBpdHMgYXJndW1lbnRz
LgorICAgICAgICBBbHNvLCB0aGlzIGJlaGF2aW9yIGlzIG9uIHN0YW5kYXJkcyB0cmFjayBbMV0g
KHNlZW1zIHRvIGJlIGNvbnNpZGVyZWQgZGVzaXJhYmxlKS4KKworICAgICAgICBbMV06IGh0dHBz
Oi8vZ2l0aHViLmNvbS9jbGF1ZGVwYWNoZS9lcy1sZWdhY3ktZnVuY3Rpb24tcmVmbGVjdGlvbi9i
bG9iL21hc3Rlci9zcGVjLm1kI2dldC1mdW5jdGlvbnByb3RvdHlwZWNhbGxlciAoc3RlcCAxNCkK
KworICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUik6CisKIDIwMjEtMDUtMTMgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvdy11cCBmaXggZm9yOiBSZW1vdmUgU3RyaW5nQnVp
bGRlcjo6YXBwZW5kTnVtYmVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjc3NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw3ICs0MDMs
MTUgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGNhbGxlckdldHRlciwgKAogICAgIGlmIChm
dW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bGwoKSk7CiAKLSAgICBpZiAoIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUo
KS0+aGFzQ2FsbGVyQW5kQXJndW1lbnRzUHJvcGVydGllcygpKQorICAgIGlmIChmdW5jdGlvbi0+
anNFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdWxsKCkpOworCisgICAgLy8gUHJldmVudCBib2RpZXMgKHByaXZhdGUg
aW1wbGVtZW50YXRpb25zKSBvZiBnZW5lcmF0b3IgLyBhc3luYyBmdW5jdGlvbnMgZnJvbSBiZWlu
ZyBleHBvc2VkLgorICAgIC8vIFRoZXkgYXJlIGNhbGxlZCBieSBAZ2VuZXJhdG9yUmVzdW1lKCkg
JiBmcmllbmRzLCBleHBlY3RpbmcgY2VydGFpbiBhcmd1bWVudHMsIGFuZCBjcmFzaCBvdGhlcndp
c2UuCisgICAgLy8gQWxzbywgaGlkZSBnZW5lcmF0b3IgLyBhc3luYyBmdW5jdGlvbiB3cmFwcGVy
cyBmb3IgY29uc2lzdGVuY3kgYW5kIGJlY2F1c2UgaXQncyBvbiBzdGFuZGFyZHMgdHJhY2s6Cisg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2NsYXVkZXBhY2hlL2VzLWxlZ2FjeS1mdW5jdGlvbi1y
ZWZsZWN0aW9uL2Jsb2IvbWFzdGVyL3NwZWMubWQjZ2V0LWZ1bmN0aW9ucHJvdG90eXBlY2FsbGVy
IChzdGVwIDE0KQorICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBmdW5jdGlvbi0+anNF
eGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpOworICAgIGlmIChpc0dlbmVyYXRvclBhcnNlTW9kZShw
YXJzZU1vZGUpIHx8IGlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FsbGVyKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>