<?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>238777</bug_id>
          
          <creation_ts>2022-04-04 16:27:02 -0700</creation_ts>
          <short_desc>[JSC] Reduce sizeof(BaselineCallLinkInfo) to make bug 238535 good</short_desc>
          <delta_ts>2022-04-04 21:19:17 -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>New Bugs</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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1858142</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-04 16:27:02 -0700</bug_when>
    <thetext>[JSC] Reduce sizeof(BaselineCallLinkInfo) to make bug 238535 good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858144</commentid>
    <comment_count>1</comment_count>
      <attachid>456647</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-04 16:28:08 -0700</bug_when>
    <thetext>Created attachment 456647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858145</commentid>
    <comment_count>2</comment_count>
      <attachid>456648</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-04 16:29:35 -0700</bug_when>
    <thetext>Created attachment 456648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858157</commentid>
    <comment_count>3</comment_count>
      <attachid>456648</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-04-04 17:03:50 -0700</bug_when>
    <thetext>Comment on attachment 456648
Patch

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

&gt; Source/JavaScriptCore/bytecode/Repatch.cpp:1735
&gt; +            CallFrameShuffleData shuffleData = CallFrameShuffleData::createForBaselineOrLLIntTailCall(bytecode, callerCodeBlock-&gt;numParameters());

According to my local dump-class-layout of CallFrameShuffleData, it is 616 bytes in size (not including the backing store for the Vector in it).  Here, we&apos;re returning by value, which may not be as big an issue due to forwarding.  However, see below ...

&gt; Source/JavaScriptCore/bytecode/Repatch.cpp:1744
&gt; +            frameShuffler.emplace(stubJit, *optimizingCallLinkInfo.frameShuffleData());

Here, we&apos;re copying the CallFrameShuffleData, right?  Can we change the idiom such that we use:

    CallFrameShuffler localFrameShuffler;
    std::optional&lt;CallFrameShuffler*&gt; frameShuffler;

... and in the baseline case, pass the &amp;localFrameShuffler to an init function (factored out of createForBaselineOrLLIntTailCall()) instead of calling createForBaselineOrLLIntTailCall() directly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858159</commentid>
    <comment_count>4</comment_count>
      <attachid>456648</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-04 17:18:06 -0700</bug_when>
    <thetext>Comment on attachment 456648
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/Repatch.cpp:1744
&gt;&gt; +            frameShuffler.emplace(stubJit, *optimizingCallLinkInfo.frameShuffleData());
&gt; 
&gt; Here, we&apos;re copying the CallFrameShuffleData, right?  Can we change the idiom such that we use:
&gt; 
&gt;     CallFrameShuffler localFrameShuffler;
&gt;     std::optional&lt;CallFrameShuffler*&gt; frameShuffler;
&gt; 
&gt; ... and in the baseline case, pass the &amp;localFrameShuffler to an init function (factored out of createForBaselineOrLLIntTailCall()) instead of calling createForBaselineOrLLIntTailCall() directly?

Ah, no. CallFrameShuffler just constructs itself via `const CallFrameShuffleData&amp;`, and does not copy it. So it is just referencing the value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858165</commentid>
    <comment_count>5</comment_count>
      <attachid>456648</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-04-04 17:44:34 -0700</bug_when>
    <thetext>Comment on attachment 456648
Patch

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

r=me

&gt;&gt;&gt; Source/JavaScriptCore/bytecode/Repatch.cpp:1744
&gt;&gt;&gt; +            frameShuffler.emplace(stubJit, *optimizingCallLinkInfo.frameShuffleData());
&gt;&gt; 
&gt;&gt; Here, we&apos;re copying the CallFrameShuffleData, right?  Can we change the idiom such that we use:
&gt;&gt; 
&gt;&gt;     CallFrameShuffler localFrameShuffler;
&gt;&gt;     std::optional&lt;CallFrameShuffler*&gt; frameShuffler;
&gt;&gt; 
&gt;&gt; ... and in the baseline case, pass the &amp;localFrameShuffler to an init function (factored out of createForBaselineOrLLIntTailCall()) instead of calling createForBaselineOrLLIntTailCall() directly?
&gt; 
&gt; Ah, no. CallFrameShuffler just constructs itself via `const CallFrameShuffleData&amp;`, and does not copy it. So it is just referencing the value.

Sorry.  I conflated CallFrameShuffleData with CallFrameShuffler.  You are correct that there&apos;s no unnecessary copying here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858225</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-04 21:18:26 -0700</bug_when>
    <thetext>Committed r292373 (249238@trunk): &lt;https://commits.webkit.org/249238@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858226</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-04 21:19:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/91276232&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456647</attachid>
            <date>2022-04-04 16:28:08 -0700</date>
            <delta_ts>2022-04-04 16:29:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238777-20220404162807.patch</filename>
            <type>text/plain</type>
            <size>8390</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NmU3ZWYwZDk4MDg5MDlmMzliYzNjMTZhMGNlYjZkNDFmYTY4NGFiLi5iMDU1ZjNkYTU0ZDVlMzM0
MTY3MzhjZjdjNjRlM2YzYTRiYzQ0ZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMi0wNC0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlZHVjZSBzaXplb2YoQmFzZWxpbmVDYWxsTGlua0luZm8pIHRv
IG1ha2UgYnVnIDIzODUzNSBnb29kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzg3NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
NTM1IGFkZHMgb25lIHBvaW50ZXIgdG8gQ2FsbExpbmtJbmZvLgorICAgICAgICBUbyBtYWtlIEJh
c2VsaW5lQ2FsbExpbmtJbmZvIHNtYWxsLCB0aGlzIHBhdGNoIHJlbW92ZXMgc3RkOjp1bmlxdWVf
cHRyPENhbGxGcmFtZVNodWZmbGVEYXRhPgorICAgICAgICBpbiBCYXNlbGluZUNhbGxMaW5rSW5m
byBzaW5jZSBpdCBjYW4gYmUgY29tcHV0ZWQgaW4gcmVwYXRjaGluZyBjb2RlLgorCisgICAgICAg
ICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6QmFzZWxpbmVDYWxs
TGlua0luZm86OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpPcHRpbWl6aW5nQ2FsbExpbmtJ
bmZvOjpzZXRGcmFtZVNodWZmbGVEYXRhKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpz
ZXRGcmFtZVNodWZmbGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlu
a0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpmcmFtZVNodWZmbGVEYXRhKTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNo
LmNwcDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisKIDIwMjItMDQtMDQg
IEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBPbmx5IGNoZWNr
IGlzUGFnZWRPdXQoKSB1bmRlciBtZW1vcnkgcHJlc3N1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggMzcxNmYyYWY4NTllZGE0MTFj
ODUxNDE5NmZkY2ZjOGZhYzE0ZWFjNy4uZjlmYjViNDg4MDRlYThkNWYzNzFlNjRlYjJhYjljNzNh
NjI0ZWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKQEAgLTMwOSwyMSArMzA5LDE0IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpyZXZlcnRD
YWxsVG9TdHViKCkKICAgICB9CiB9CiAKLXZvaWQgQmFzZWxpbmVDYWxsTGlua0luZm86OmluaXRp
YWxpemUoVk0mIHZtLCBDYWxsVHlwZSBjYWxsVHlwZSwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4LCBDYWxsRnJhbWVTaHVmZmxlRGF0YSogZnJhbWVTaHVmZmxlRGF0YSkKK3ZvaWQgQmFzZWxp
bmVDYWxsTGlua0luZm86OmluaXRpYWxpemUoVk0mIHZtLCBDYWxsVHlwZSBjYWxsVHlwZSwgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewotICAgIFVOVVNFRF9QQVJBTShmcmFtZVNodWZm
bGVEYXRhKTsKICAgICBtX3R5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVHlwZTo6QmFzZWxp
bmUpOwogICAgIEFTU0VSVChUeXBlOjpCYXNlbGluZSA9PSB0eXBlKCkpOwogICAgIG1fdXNlRGF0
YUlDID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVzZURhdGFJQzo6WWVzKTsKICAgICBBU1NFUlQo
VXNlRGF0YUlDOjpZZXMgPT0gdXNlRGF0YUlDKCkpOwogICAgIG1fY29kZU9yaWdpbiA9IENvZGVP
cmlnaW4oYnl0ZWNvZGVJbmRleCk7CiAgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBlOwotI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKGZyYW1lU2h1ZmZsZURhdGEpIHsKLSAgICAgICAgLy8gRklYTUU6
IEl0J2QgYmUgbmljZSBpZiB0aGlzIHdlcmUgYSByZWZjb3VudGVkIGRhdGEgc3RydWN0dXJlLgot
ICAgICAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVE
YXRhPigqZnJhbWVTaHVmZmxlRGF0YSk7Ci0gICAgfQotI2VuZGlmCiAgICAgc2V0U2xvd1BhdGhD
YWxsRGVzdGluYXRpb24odm0uZ2V0Q1RJTGlua0NhbGwoKS5jb2RlKCkpOwogICAgIC8vIElmIEpJ
VCBpcyBkaXNhYmxlZCwgd2Ugc2hvdWxkIG5vdCBzdXBwb3J0IGR5bmFtaWNhbGx5IGdlbmVyYXRl
ZCBjYWxsIElDLgogICAgIGlmICghT3B0aW9uczo6dXNlSklUKCkpCkBAIC0zMzIsNyArMzI1LDcg
QEAgdm9pZCBCYXNlbGluZUNhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZShWTSYgdm0sIENhbGxUeXBl
IGNhbGxUeXBlLCBCeXRlY29kZUluZGV4IGIKIAogI2lmIEVOQUJMRShKSVQpCiAKLXZvaWQgQ2Fs
bExpbmtJbmZvOjpzZXRGcmFtZVNodWZmbGVEYXRhKGNvbnN0IENhbGxGcmFtZVNodWZmbGVEYXRh
JiBzaHVmZmxlRGF0YSkKK3ZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVm
ZmxlRGF0YShjb25zdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSYgc2h1ZmZsZURhdGEpCiB7CiAgICAg
bV9mcmFtZVNodWZmbGVEYXRhID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1
ZmZsZURhdGEpOwogICAgIG1fZnJhbWVTaHVmZmxlRGF0YS0+c2hyaW5rVG9GaXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAppbmRleCBmYjIwZTQ3
ODE0NzkzNTIxNzUwNDM0NDViMjk3NzMxYjk3MTI5ODY3Li5jYTM1NThjZjM3MTE4MDJhYzYxNjFk
MDg0ODg5Mjg1M2JmM2RhYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5oCkBAIC0zNjQsMTUgKzM2NCw2IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6
IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAKICAgICB2b2lk
IHZpc2l0V2VhayhWTSYpOwogCi0jaWYgRU5BQkxFKEpJVCkKLSAgICB2b2lkIHNldEZyYW1lU2h1
ZmZsZURhdGEoY29uc3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGEmKTsKLQotICAgIGNvbnN0IENhbGxG
cmFtZVNodWZmbGVEYXRhKiBmcmFtZVNodWZmbGVEYXRhKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2ZyYW1lU2h1ZmZsZURhdGEuZ2V0KCk7Ci0gICAgfQotI2VuZGlmCi0KICAgICBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CiAKIHByb3Rl
Y3RlZDoKQEAgLTQxNyw3ICs0MDgsNiBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFj
a2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAgIFdyaXRlQmFycmllcjxKU0Nl
bGw+IG1fbGFzdFNlZW5DYWxsZWVPckV4ZWN1dGFibGU7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBS
ZWZQdHI8UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU+IG1fc3R1YjsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+IG1fZnJhbWVTaHVmZmxlRGF0YTsKICNlbmRpZgog
ICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIGJvb2wgbV9oYXNTZWVuU2hvdWxkUmVw
YXRjaCA6IDE7CkBAIC00NDMsNyArNDMzLDcgQEAgY2xhc3MgQmFzZWxpbmVDYWxsTGlua0luZm8g
ZmluYWwgOiBwdWJsaWMgQ2FsbExpbmtJbmZvIHsKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBp
bml0aWFsaXplKFZNJiwgQ2FsbFR5cGUsIEJ5dGVjb2RlSW5kZXgsIENhbGxGcmFtZVNodWZmbGVE
YXRhKik7CisgICAgdm9pZCBpbml0aWFsaXplKFZNJiwgQ2FsbFR5cGUsIEJ5dGVjb2RlSW5kZXgp
OwogCiAgICAgdm9pZCBzZXRDb2RlTG9jYXRpb25zKENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJu
YWxQdHJUYWc+IGRvbmVMb2NhdGlvbikKICAgICB7CkBAIC01MDksMTAgKzQ5OSwyMCBAQCBjbGFz
cyBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvIGZpbmFsIDogcHVibGljIENhbGxMaW5rSW5mbyB7CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVtaXRGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBH
UFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKSBXQVJOX1VOVVNFRF9SRVRV
Uk47CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVtaXRUYWlsQ2FsbEZhc3RQYXRoKEND
YWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxsTGlua0luZm9HUFIsIFNj
b3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxsKSBXQVJOX1VOVVNFRF9SRVRV
Uk47CiAKKyNpZiBFTkFCTEUoSklUKQorICAgIHZvaWQgc2V0RnJhbWVTaHVmZmxlRGF0YShjb25z
dCBDYWxsRnJhbWVTaHVmZmxlRGF0YSYpOworCisgICAgY29uc3QgQ2FsbEZyYW1lU2h1ZmZsZURh
dGEqIGZyYW1lU2h1ZmZsZURhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVTaHVm
ZmxlRGF0YS5nZXQoKTsKKyAgICB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBDb2RlTG9jYXRp
b25OZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBtX2NhbGxMb2NhdGlvbjsKICAgICBDb2RlTG9j
YXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX3Nsb3dQYXRoU3RhcnQ7CiAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9mYXN0UGF0aFN0YXJ0OworICAgIHN0ZDo6
dW5pcXVlX3B0cjxDYWxsRnJhbWVTaHVmZmxlRGF0YT4gbV9mcmFtZVNodWZmbGVEYXRhOwogfTsK
IAogaW5saW5lIEdQUlJlZyBDYWxsTGlua0luZm86OmNhbGxlZUdQUigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDZiMDI5MTUwYjUx
MmJjMzk1YTMxOTAyOGUyZWM1YTdkOGVmOGE4ODcuLjlhMjFiNzBiYTI3MTI0NWI2YTI3MGE3YjJk
ODMwOTU1YzZkZTgxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC00NDIsMTQgKzQ0Miw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAg
ICAgfTsKIAogICAgIGF1dG8gbGlua19jYWxsTGlua0luZm8gPSBbJl0oY29uc3QgYXV0byYgaW5z
dHJ1Y3Rpb24sIGF1dG8gYnl0ZWNvZGUsIGF1dG8mIG1ldGFkYXRhKSB7Ci0jaWYgRU5BQkxFKEpJ
VCkKLSAgICAgICAgaWYgY29uc3RleHByIChkZWNsdHlwZShieXRlY29kZSk6Om9wY29kZUlEID09
IG9wX3RhaWxfY2FsbCkgewotICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZURhdGEgc2h1ZmZs
ZURhdGEgPSBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6Y3JlYXRlRm9yQmFzZWxpbmVPckxMSW50VGFp
bENhbGwoYnl0ZWNvZGUsIG51bVBhcmFtZXRlcnMoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5t
X2NhbGxMaW5rSW5mby5pbml0aWFsaXplKHZtLCBDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKGRl
Y2x0eXBlKGJ5dGVjb2RlKTo6b3Bjb2RlSUQpLCBpbnN0cnVjdGlvbi5pbmRleCgpLCAmc2h1ZmZs
ZURhdGEpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAg
bWV0YWRhdGEubV9jYWxsTGlua0luZm8uaW5pdGlhbGl6ZSh2bSwgQ2FsbExpbmtJbmZvOjpjYWxs
VHlwZUZvcihkZWNsdHlwZShieXRlY29kZSk6Om9wY29kZUlEKSwgaW5zdHJ1Y3Rpb24uaW5kZXgo
KSwgbnVsbHB0cik7CisgICAgICAgIG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLmluaXRpYWxpemUo
dm0sIENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IoZGVjbHR5cGUoYnl0ZWNvZGUpOjpvcGNvZGVJ
RCksIGluc3RydWN0aW9uLmluZGV4KCkpOwogICAgIH07CiAKICNkZWZpbmUgTElOS19GSUVMRChf
X2ZpZWxkKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVw
YXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKaW5k
ZXggZTk3NjBjY2M4ZWU0MDUyNjZjZmY0YTBhMzA0ZDI5YTE1OGFjODQxNi4uNmQwOTVlZWZlNDNk
ZjhjN2U2NTJhNWFmMmE1YzE4ZmExZDYxOGY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZXBhdGNoLmNwcApAQCAtMTcyNiwxMCArMTcyNiwyOCBAQCB2b2lkIGxpbmtQb2x5
bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIENhbAogICAgIGJvb2wgaXNEYXRhSUMgPSBjYWxsTGlua0luZm8uaXNEYXRhSUMoKTsK
ICAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdChjYWxsZXJDb2RlQmxvY2spOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPENhbGxGcmFtZVNodWZmbGVyPiBmcmFtZVNodWZmbGVyOwotICAgIGlmIChjYWxs
TGlua0luZm8uZnJhbWVTaHVmZmxlRGF0YSgpKSB7Ci0gICAgICAgIEFTU0VSVChjYWxsTGlua0lu
Zm8uaXNUYWlsQ2FsbCgpKTsKLSAgICAgICAgZnJhbWVTaHVmZmxlciA9IG1ha2VVbmlxdWU8Q2Fs
bEZyYW1lU2h1ZmZsZXI+KHN0dWJKaXQsICpjYWxsTGlua0luZm8uZnJhbWVTaHVmZmxlRGF0YSgp
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPENhbGxGcmFtZVNodWZmbGVyPiBmcmFtZVNodWZmbGVyOwor
ICAgIHN3aXRjaCAoY2FsbExpbmtJbmZvLnR5cGUoKSkgeworICAgIGNhc2UgQ2FsbExpbmtJbmZv
OjpUeXBlOjpCYXNlbGluZTogeworICAgICAgICBhdXRvKiBpbnN0cnVjdGlvbiA9IGNhbGxlckNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25BdChjYWxsTGlua0luZm8uY29kZU9yaWdpbigpLmJ5dGVjb2Rl
SW5kZXgoKSk7CisgICAgICAgIGlmIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSA9PSBvcF90YWls
X2NhbGwpIHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BU
YWlsQ2FsbD4oKTsKKyAgICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVEYXRhIHNodWZmbGVEYXRh
ID0gQ2FsbEZyYW1lU2h1ZmZsZURhdGE6OmNyZWF0ZUZvckJhc2VsaW5lT3JMTEludFRhaWxDYWxs
KGJ5dGVjb2RlLCBjYWxsZXJDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisgICAgICAgICAg
ICBmcmFtZVNodWZmbGVyLmVtcGxhY2Uoc3R1YkppdCwgc2h1ZmZsZURhdGEpOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENhbGxMaW5rSW5mbzo6VHlwZTo6T3B0
aW1pemluZzogeworICAgICAgICBhdXRvJiBvcHRpbWl6aW5nQ2FsbExpbmtJbmZvID0gc3RhdGlj
X2Nhc3Q8T3B0aW1pemluZ0NhbGxMaW5rSW5mbyY+KGNhbGxMaW5rSW5mbyk7CisgICAgICAgIGlm
IChvcHRpbWl6aW5nQ2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSkgeworICAgICAgICAg
ICAgQVNTRVJUKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpOworICAgICAgICAgICAgZnJhbWVT
aHVmZmxlci5lbXBsYWNlKHN0dWJKaXQsICpvcHRpbWl6aW5nQ2FsbExpbmtJbmZvLmZyYW1lU2h1
ZmZsZURhdGEoKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKwor
ICAgIGlmIChmcmFtZVNodWZmbGVyKSB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAg
Ly8gV2Ugd291bGQgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUgY2FsbGVlIGlzIGEgY2Vs
bCwgYW5kIHdlIGNhbgogICAgICAgICAvLyB1c2UgdGhlIGFkZGl0aW9uYWwgcmVnaXN0ZXIgdGhp
cyBidXlzIHVzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456648</attachid>
            <date>2022-04-04 16:29:35 -0700</date>
            <delta_ts>2022-04-04 17:44:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238777-20220404162935.patch</filename>
            <type>text/plain</type>
            <size>8365</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NmU3ZWYwZDk4MDg5MDlmMzliYzNjMTZhMGNlYjZkNDFmYTY4NGFiLi5iMDU1ZjNkYTU0ZDVlMzM0
MTY3MzhjZjdjNjRlM2YzYTRiYzQ0ZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMi0wNC0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlZHVjZSBzaXplb2YoQmFzZWxpbmVDYWxsTGlua0luZm8pIHRv
IG1ha2UgYnVnIDIzODUzNSBnb29kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzg3NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
NTM1IGFkZHMgb25lIHBvaW50ZXIgdG8gQ2FsbExpbmtJbmZvLgorICAgICAgICBUbyBtYWtlIEJh
c2VsaW5lQ2FsbExpbmtJbmZvIHNtYWxsLCB0aGlzIHBhdGNoIHJlbW92ZXMgc3RkOjp1bmlxdWVf
cHRyPENhbGxGcmFtZVNodWZmbGVEYXRhPgorICAgICAgICBpbiBCYXNlbGluZUNhbGxMaW5rSW5m
byBzaW5jZSBpdCBjYW4gYmUgY29tcHV0ZWQgaW4gcmVwYXRjaGluZyBjb2RlLgorCisgICAgICAg
ICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6QmFzZWxpbmVDYWxs
TGlua0luZm86OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpPcHRpbWl6aW5nQ2FsbExpbmtJ
bmZvOjpzZXRGcmFtZVNodWZmbGVEYXRhKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpz
ZXRGcmFtZVNodWZmbGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlu
a0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpmcmFtZVNodWZmbGVEYXRhKTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9SZXBhdGNo
LmNwcDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisKIDIwMjItMDQtMDQg
IEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBPbmx5IGNoZWNr
IGlzUGFnZWRPdXQoKSB1bmRlciBtZW1vcnkgcHJlc3N1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggMzcxNmYyYWY4NTllZGE0MTFj
ODUxNDE5NmZkY2ZjOGZhYzE0ZWFjNy4uZjlmYjViNDg4MDRlYThkNWYzNzFlNjRlYjJhYjljNzNh
NjI0ZWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKQEAgLTMwOSwyMSArMzA5LDE0IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpyZXZlcnRD
YWxsVG9TdHViKCkKICAgICB9CiB9CiAKLXZvaWQgQmFzZWxpbmVDYWxsTGlua0luZm86OmluaXRp
YWxpemUoVk0mIHZtLCBDYWxsVHlwZSBjYWxsVHlwZSwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4LCBDYWxsRnJhbWVTaHVmZmxlRGF0YSogZnJhbWVTaHVmZmxlRGF0YSkKK3ZvaWQgQmFzZWxp
bmVDYWxsTGlua0luZm86OmluaXRpYWxpemUoVk0mIHZtLCBDYWxsVHlwZSBjYWxsVHlwZSwgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewotICAgIFVOVVNFRF9QQVJBTShmcmFtZVNodWZm
bGVEYXRhKTsKICAgICBtX3R5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVHlwZTo6QmFzZWxp
bmUpOwogICAgIEFTU0VSVChUeXBlOjpCYXNlbGluZSA9PSB0eXBlKCkpOwogICAgIG1fdXNlRGF0
YUlDID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVzZURhdGFJQzo6WWVzKTsKICAgICBBU1NFUlQo
VXNlRGF0YUlDOjpZZXMgPT0gdXNlRGF0YUlDKCkpOwogICAgIG1fY29kZU9yaWdpbiA9IENvZGVP
cmlnaW4oYnl0ZWNvZGVJbmRleCk7CiAgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBlOwotI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKGZyYW1lU2h1ZmZsZURhdGEpIHsKLSAgICAgICAgLy8gRklYTUU6
IEl0J2QgYmUgbmljZSBpZiB0aGlzIHdlcmUgYSByZWZjb3VudGVkIGRhdGEgc3RydWN0dXJlLgot
ICAgICAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVE
YXRhPigqZnJhbWVTaHVmZmxlRGF0YSk7Ci0gICAgfQotI2VuZGlmCiAgICAgc2V0U2xvd1BhdGhD
YWxsRGVzdGluYXRpb24odm0uZ2V0Q1RJTGlua0NhbGwoKS5jb2RlKCkpOwogICAgIC8vIElmIEpJ
VCBpcyBkaXNhYmxlZCwgd2Ugc2hvdWxkIG5vdCBzdXBwb3J0IGR5bmFtaWNhbGx5IGdlbmVyYXRl
ZCBjYWxsIElDLgogICAgIGlmICghT3B0aW9uczo6dXNlSklUKCkpCkBAIC0zMzIsNyArMzI1LDcg
QEAgdm9pZCBCYXNlbGluZUNhbGxMaW5rSW5mbzo6aW5pdGlhbGl6ZShWTSYgdm0sIENhbGxUeXBl
IGNhbGxUeXBlLCBCeXRlY29kZUluZGV4IGIKIAogI2lmIEVOQUJMRShKSVQpCiAKLXZvaWQgQ2Fs
bExpbmtJbmZvOjpzZXRGcmFtZVNodWZmbGVEYXRhKGNvbnN0IENhbGxGcmFtZVNodWZmbGVEYXRh
JiBzaHVmZmxlRGF0YSkKK3ZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVm
ZmxlRGF0YShjb25zdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSYgc2h1ZmZsZURhdGEpCiB7CiAgICAg
bV9mcmFtZVNodWZmbGVEYXRhID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1
ZmZsZURhdGEpOwogICAgIG1fZnJhbWVTaHVmZmxlRGF0YS0+c2hyaW5rVG9GaXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAppbmRleCBmYjIwZTQ3
ODE0NzkzNTIxNzUwNDM0NDViMjk3NzMxYjk3MTI5ODY3Li5mYTJiMGY5YzA0MWYzMTllNzk2ODNm
MGMxMWNjZGRhMjRlOTUxZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5oCkBAIC0zNjQsMTUgKzM2NCw2IEBAIGNsYXNzIENhbGxMaW5rSW5mbyA6
IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CiAKICAgICB2b2lk
IHZpc2l0V2VhayhWTSYpOwogCi0jaWYgRU5BQkxFKEpJVCkKLSAgICB2b2lkIHNldEZyYW1lU2h1
ZmZsZURhdGEoY29uc3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGEmKTsKLQotICAgIGNvbnN0IENhbGxG
cmFtZVNodWZmbGVEYXRhKiBmcmFtZVNodWZmbGVEYXRhKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2ZyYW1lU2h1ZmZsZURhdGEuZ2V0KCk7Ci0gICAgfQotI2VuZGlmCi0KICAgICBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CiAKIHByb3Rl
Y3RlZDoKQEAgLTQxNyw3ICs0MDgsNiBAQCBjbGFzcyBDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFj
a2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAgIFdyaXRlQmFycmllcjxKU0Nl
bGw+IG1fbGFzdFNlZW5DYWxsZWVPckV4ZWN1dGFibGU7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBS
ZWZQdHI8UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU+IG1fc3R1YjsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+IG1fZnJhbWVTaHVmZmxlRGF0YTsKICNlbmRpZgog
ICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luOwogICAgIGJvb2wgbV9oYXNTZWVuU2hvdWxkUmVw
YXRjaCA6IDE7CkBAIC00NDMsNyArNDMzLDcgQEAgY2xhc3MgQmFzZWxpbmVDYWxsTGlua0luZm8g
ZmluYWwgOiBwdWJsaWMgQ2FsbExpbmtJbmZvIHsKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBp
bml0aWFsaXplKFZNJiwgQ2FsbFR5cGUsIEJ5dGVjb2RlSW5kZXgsIENhbGxGcmFtZVNodWZmbGVE
YXRhKik7CisgICAgdm9pZCBpbml0aWFsaXplKFZNJiwgQ2FsbFR5cGUsIEJ5dGVjb2RlSW5kZXgp
OwogCiAgICAgdm9pZCBzZXRDb2RlTG9jYXRpb25zKENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJu
YWxQdHJUYWc+IGRvbmVMb2NhdGlvbikKICAgICB7CkBAIC01MDksMTAgKzQ5OSwxOCBAQCBjbGFz
cyBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvIGZpbmFsIDogcHVibGljIENhbGxMaW5rSW5mbyB7CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVtaXRGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBH
UFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKSBXQVJOX1VOVVNFRF9SRVRV
Uk47CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVtaXRUYWlsQ2FsbEZhc3RQYXRoKEND
YWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxsTGlua0luZm9HUFIsIFNj
b3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxsKSBXQVJOX1VOVVNFRF9SRVRV
Uk47CiAKKyAgICB2b2lkIHNldEZyYW1lU2h1ZmZsZURhdGEoY29uc3QgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEmKTsKKworICAgIGNvbnN0IENhbGxGcmFtZVNodWZmbGVEYXRhKiBmcmFtZVNodWZmbGVE
YXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ZyYW1lU2h1ZmZsZURhdGEuZ2V0KCk7Cisg
ICAgfQorCiBwcml2YXRlOgogICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJU
YWc+IG1fY2FsbExvY2F0aW9uOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJU
YWc+IG1fc2xvd1BhdGhTdGFydDsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRy
VGFnPiBtX2Zhc3RQYXRoU3RhcnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxGcmFtZVNodWZm
bGVEYXRhPiBtX2ZyYW1lU2h1ZmZsZURhdGE7CiB9OwogCiBpbmxpbmUgR1BSUmVnIENhbGxMaW5r
SW5mbzo6Y2FsbGVlR1BSKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggNmIwMjkxNTBiNTEyYmMzOTVhMzE5MDI4ZTJlYzVhN2Q4ZWY4
YTg4Ny4uOWEyMWI3MGJhMjcxMjQ1YjZhMjcwYTdiMmQ4MzA5NTVjNmRlODE5NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ0MiwxNCArNDQy
LDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICB9OwogCiAgICAgYXV0byBsaW5rX2Nh
bGxMaW5rSW5mbyA9IFsmXShjb25zdCBhdXRvJiBpbnN0cnVjdGlvbiwgYXV0byBieXRlY29kZSwg
YXV0byYgbWV0YWRhdGEpIHsKLSNpZiBFTkFCTEUoSklUKQotICAgICAgICBpZiBjb25zdGV4cHIg
KGRlY2x0eXBlKGJ5dGVjb2RlKTo6b3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsKSB7Ci0gICAgICAg
ICAgICBDYWxsRnJhbWVTaHVmZmxlRGF0YSBzaHVmZmxlRGF0YSA9IENhbGxGcmFtZVNodWZmbGVE
YXRhOjpjcmVhdGVGb3JCYXNlbGluZU9yTExJbnRUYWlsQ2FsbChieXRlY29kZSwgbnVtUGFyYW1l
dGVycygpKTsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLmluaXRpYWxpemUo
dm0sIENhbGxMaW5rSW5mbzo6Y2FsbFR5cGVGb3IoZGVjbHR5cGUoYnl0ZWNvZGUpOjpvcGNvZGVJ
RCksIGluc3RydWN0aW9uLmluZGV4KCksICZzaHVmZmxlRGF0YSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5p
bml0aWFsaXplKHZtLCBDYWxsTGlua0luZm86OmNhbGxUeXBlRm9yKGRlY2x0eXBlKGJ5dGVjb2Rl
KTo6b3Bjb2RlSUQpLCBpbnN0cnVjdGlvbi5pbmRleCgpLCBudWxscHRyKTsKKyAgICAgICAgbWV0
YWRhdGEubV9jYWxsTGlua0luZm8uaW5pdGlhbGl6ZSh2bSwgQ2FsbExpbmtJbmZvOjpjYWxsVHlw
ZUZvcihkZWNsdHlwZShieXRlY29kZSk6Om9wY29kZUlEKSwgaW5zdHJ1Y3Rpb24uaW5kZXgoKSk7
CiAgICAgfTsKIAogI2RlZmluZSBMSU5LX0ZJRUxEKF9fZmllbGQpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAppbmRleCBlOTc2MGNjYzhlZTQwNTI2NmNmZjRh
MGEzMDRkMjlhMTU4YWM4NDE2Li42ZDA5NWVlZmU0M2RmOGM3ZTY1MmE1YWYyYTVjMThmYTFkNjE4
ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guY3BwCkBAIC0x
NzI2LDEwICsxNzI2LDI4IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsCiAgICAgYm9vbCBpc0Rh
dGFJQyA9IGNhbGxMaW5rSW5mby5pc0RhdGFJQygpOwogICAgIENDYWxsSGVscGVycyBzdHViSml0
KGNhbGxlckNvZGVCbG9jayk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEZyYW1lU2h1ZmZs
ZXI+IGZyYW1lU2h1ZmZsZXI7Ci0gICAgaWYgKGNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRh
KCkpIHsKLSAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpOwotICAgICAg
ICBmcmFtZVNodWZmbGVyID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlcj4oc3R1YkppdCwg
KmNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOworICAgIHN0ZDo6b3B0aW9uYWw8Q2Fs
bEZyYW1lU2h1ZmZsZXI+IGZyYW1lU2h1ZmZsZXI7CisgICAgc3dpdGNoIChjYWxsTGlua0luZm8u
dHlwZSgpKSB7CisgICAgY2FzZSBDYWxsTGlua0luZm86OlR5cGU6OkJhc2VsaW5lOiB7CisgICAg
ICAgIGF1dG8qIGluc3RydWN0aW9uID0gY2FsbGVyQ29kZUJsb2NrLT5pbnN0cnVjdGlvbkF0KGNh
bGxMaW5rSW5mby5jb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCgpKTsKKyAgICAgICAgaWYgKGlu
c3RydWN0aW9uLT5vcGNvZGVJRCgpID09IG9wX3RhaWxfY2FsbCkgeworICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcFRhaWxDYWxsPigpOworICAgICAgICAgICAg
Q2FsbEZyYW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGEgPSBDYWxsRnJhbWVTaHVmZmxlRGF0YTo6
Y3JlYXRlRm9yQmFzZWxpbmVPckxMSW50VGFpbENhbGwoYnl0ZWNvZGUsIGNhbGxlckNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKTsKKyAgICAgICAgICAgIGZyYW1lU2h1ZmZsZXIuZW1wbGFjZShz
dHViSml0LCBzaHVmZmxlRGF0YSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgQ2FsbExpbmtJbmZvOjpUeXBlOjpPcHRpbWl6aW5nOiB7CisgICAgICAgIGF1dG8m
IG9wdGltaXppbmdDYWxsTGlua0luZm8gPSBzdGF0aWNfY2FzdDxPcHRpbWl6aW5nQ2FsbExpbmtJ
bmZvJj4oY2FsbExpbmtJbmZvKTsKKyAgICAgICAgaWYgKG9wdGltaXppbmdDYWxsTGlua0luZm8u
ZnJhbWVTaHVmZmxlRGF0YSgpKSB7CisgICAgICAgICAgICBBU1NFUlQoY2FsbExpbmtJbmZvLmlz
VGFpbENhbGwoKSk7CisgICAgICAgICAgICBmcmFtZVNodWZmbGVyLmVtcGxhY2Uoc3R1YkppdCwg
Km9wdGltaXppbmdDYWxsTGlua0luZm8uZnJhbWVTaHVmZmxlRGF0YSgpKTsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorCisgICAgaWYgKGZyYW1lU2h1ZmZsZXIpIHsK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICAvLyBXZSB3b3VsZCBoYXZlIGFscmVhZHkg
Y2hlY2tlZCB0aGF0IHRoZSBjYWxsZWUgaXMgYSBjZWxsLCBhbmQgd2UgY2FuCiAgICAgICAgIC8v
IHVzZSB0aGUgYWRkaXRpb25hbCByZWdpc3RlciB0aGlzIGJ1eXMgdXMuCg==
</data>
<flag name="review"
          id="485009"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>