<?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>236124</bug_id>
          
          <creation_ts>2022-02-03 21:05:03 -0800</creation_ts>
          <short_desc>cache the result of JSString::toIdentifier</short_desc>
          <delta_ts>2022-02-06 12:39:13 -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>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="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</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>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1837244</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-03 21:05:03 -0800</bug_when>
    <thetext>JSString::toIdentifier does not store the result of atomizing its string value, except when it is a rope.  We can often end up atomizing the same JSString a number of times.

Forthcoming patch caches the last atomized string produced from JSString::toIdentifier in a given VM.  From local testing, this is a 0.5% Speedometer2 improvement on an M1 MacBook Air, although surprisingly is neutral on a recent Intel MacBook Pro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837246</commentid>
    <comment_count>1</comment_count>
      <attachid>450862</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-03 21:09:37 -0800</bug_when>
    <thetext>Created attachment 450862
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837247</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-03 21:10:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/88472619&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837251</commentid>
    <comment_count>3</comment_count>
      <attachid>450862</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-03 21:37:42 -0800</bug_when>
    <thetext>Comment on attachment 450862
patch

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

Nice, I have some questions.

&gt; Source/JavaScriptCore/runtime/JSString.h:785
&gt; +    if (vm.lastAtomizedString.ptr() != valueInternal().impl()) {
&gt; +        vm.lastAtomizedString = *valueInternal().impl();
&gt; +        vm.lastAtomizedStringAtom = AtomStringImpl::add(valueInternal().impl()).releaseNonNull();
&gt; +    }

Is there any reasons why we do not perform it in toAtomString?
If we should do this cache only in `toIdentifier` call and we should do that only when converting existing non-atom-string to atom-string, then can we change  lastAtomizedString / lastAtomizedStringAtom names to more specific ones?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837253</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-03 21:39:00 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; Is there any reasons why we do not perform it in toAtomString?

No, I think I can move it down to toAtomString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837261</commentid>
    <comment_count>5</comment_count>
      <attachid>450862</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-02-03 21:59:21 -0800</bug_when>
    <thetext>Comment on attachment 450862
patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        JSString::toIdentifier does not store the result of atomizing its string

I wonder if this is worth doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837262</commentid>
    <comment_count>6</comment_count>
      <attachid>450862</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-03 22:10:39 -0800</bug_when>
    <thetext>Comment on attachment 450862
patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        JSString::toIdentifier does not store the result of atomizing its string
&gt; 
&gt; I wonder if this is worth doing.

This is because string is concurrently accessed from GC thread and concurrent compilers.
If we replace it without stopping them, then these threads will touch the old String =&gt; UAF.
If we would like to do that, we need some protocol to allow this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837839</commentid>
    <comment_count>7</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-05 19:42:58 -0800</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #4)
&gt; No, I think I can move it down to toAtomString.

I forgot that&apos;s actually what I tried first, but didn&apos;t get good results.  I will rename the variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837840</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-05 20:13:40 -0800</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #7)
&gt; (In reply to Cameron McCormack (:heycam) from comment #4)
&gt; &gt; No, I think I can move it down to toAtomString.
&gt; 
&gt; I forgot that&apos;s actually what I tried first, but didn&apos;t get good results.  I
&gt; will rename the variables.

Sounds good to me!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837845</commentid>
    <comment_count>9</comment_count>
      <attachid>451022</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-05 20:22:16 -0800</bug_when>
    <thetext>Created attachment 451022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837847</commentid>
    <comment_count>10</comment_count>
      <attachid>451023</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-05 20:51:28 -0800</bug_when>
    <thetext>Created attachment 451023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837935</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-06 12:39:10 -0800</bug_when>
    <thetext>Committed r289177 (246871@main): &lt;https://commits.webkit.org/246871@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451023.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450862</attachid>
            <date>2022-02-03 21:09:37 -0800</date>
            <delta_ts>2022-02-05 20:22:11 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-jsstring-identifier.patch</filename>
            <type>text/plain</type>
            <size>5947</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">RnJvbSAyYjI1NzQwODBiYjcwN2VkYjhmNzNjMWJhZTZkMTNjNjI3YmQwZmI1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDYW1lcm9uIE1jQ29ybWFjayA8aGV5Y2FtQGFwcGxlLmNvbT4K
RGF0ZTogRnJpLCA0IEZlYiAyMDIyIDE2OjA4OjMxICsxMTAwClN1YmplY3Q6IGpzc3RyaW5nIGlk
ZW50aWZpZXIKCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggM2E2ZWZiYzI1MWQxLi42Y2U1
ODYzN2Y3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSw4ICsxLDI5IEBACisyMDIy
LTAyLTAzICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
Q2FjaGUgdGhlIG1vc3QgcmVjZW50IEF0b21TdHJpbmcgcHJvZHVjZWQgYnkgSlNTdHJpbmc6OnRv
SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM2MTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSlNTdHJpbmc6OnRvSWRlbnRpZmllciBkb2VzIG5vdCBzdG9yZSB0aGUgcmVzdWx0IG9mIGF0
b21pemluZyBpdHMgc3RyaW5nCisgICAgICAgIHZhbHVlLCBleGNlcHQgd2hlbiBpdCBpcyBhIHJv
cGUuIFdlIGNhbiBvZnRlbiBlbmQgdXAgYXRvbWl6aW5nIHRoZSBzYW1lCisgICAgICAgIEpTU3Ry
aW5nIGEgbnVtYmVyIG9mIHRpbWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2FjaGVzIHRoZSBs
YXN0IGF0b21pemVkIHN0cmluZyBwcm9kdWNlZCBmcm9tCisgICAgICAgIEpTU3RyaW5nOjp0b0lk
ZW50aWZpZXIgaW4gYSBnaXZlbiBWTS4gRnJvbSBsb2NhbCB0ZXN0aW5nLCB0aGlzIGlzIGEgMC41
JQorICAgICAgICBTcGVlZG9tZXRlcjIgaW1wcm92ZW1lbnQgb24gYW4gTTEgTWFjQm9vayBBaXIs
IGFsdGhvdWdoIHN1cnByaXNpbmdseSBpcworICAgICAgICBuZXV0cmFsIG9uIGEgcmVjZW50IElu
dGVsIE1hY0Jvb2sgUHJvLgorCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAg
ICAoSlNDOjpKU1JvcGVTdHJpbmc6OnRvSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTU3RyaW5nOjp0b0lkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KwogMjAyMi0wMi0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJlbW92ZSBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Om9mZnNldEluTWV0
YWRhdGFUYWJsZSBzaW5jZSBpdCBpcyBubyBsb25nZXIgdXNlZAogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDYzCiAKICAgICAgICAgRm9sbG93LXVw
IGFmdGVyIFNhYW0ncyBjb21tZW50LgogCiAgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRNZXRh
ZGF0YVRhYmxlLmg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRl
eCA0ZjI4M2E3NzI3YmYuLjc0ZjhmMWFlYTY5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCkBAIC01OTcsMTYgKzU5NywxNyBAQCBwcml2YXRlOgogICAgIC8vIElm
IG51bGxPckV4ZWNGb3JPT00gaXMgbnVsbCwgcmVzb2x2ZVJvcGUoKSB3aWxsIGJlIGRvIG5vdGhp
bmcgaW4gdGhlIGV2ZW50IG9mIGFuIE9PTSBlcnJvci4KICAgICAvLyBUaGUgcm9wZSB2YWx1ZSB3
aWxsIHJlbWFpbiBhIG51bGwgc3RyaW5nIGluIHRoYXQgY2FzZS4KICAgICBKU19FWFBPUlRfUFJJ
VkFURSBjb25zdCBTdHJpbmcmIHJlc29sdmVSb3BlKEpTR2xvYmFsT2JqZWN0KiBudWxsT3JHbG9i
YWxPYmplY3RGb3JPT00pIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPiBj
b25zdCBTdHJpbmcmIHJlc29sdmVSb3BlV2l0aEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBudWxs
T3JHbG9iYWxPYmplY3RGb3JPT00sIEZ1bmN0aW9uJiYpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEF0b21TdHJpbmcgcmVzb2x2ZVJvcGVUb0F0b21TdHJpbmcoSlNHbG9iYWxPYmplY3Qq
KSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IHJl
c29sdmVSb3BlVG9FeGlzdGluZ0F0b21TdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBORVZFUl9JTkxJTkUgdm9pZCByZXNv
bHZlUm9wZVNsb3dDYXNlKENoYXJhY3RlclR5cGUqKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHJlc29sdmVSb3BlSW50ZXJuYWxOb1N1YnN0cmluZyhD
aGFyYWN0ZXJUeXBlKikgY29uc3Q7CisgICAgSWRlbnRpZmllciB0b0lkZW50aWZpZXIoSlNHbG9i
YWxPYmplY3QqKSBjb25zdDsKICAgICB2b2lkIG91dE9mTWVtb3J5KEpTR2xvYmFsT2JqZWN0KiBu
dWxsT3JHbG9iYWxPYmplY3RGb3JPT00pIGNvbnN0OwogICAgIHZvaWQgcmVzb2x2ZVJvcGVJbnRl
cm5hbDgoTENoYXIqKSBjb25zdDsKICAgICB2b2lkIHJlc29sdmVSb3BlSW50ZXJuYWwxNihVQ2hh
ciopIGNvbnN0OwogICAgIFN0cmluZ1ZpZXcgdW5zYWZlVmlldyhKU0dsb2JhbE9iamVjdCopIGNv
bnN0OwogICAgIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyB2aWV3V2l0aFVuZGVybHlp
bmdTdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAogICAgIEpTU3RyaW5nKiBmaWJlcjAo
KSBjb25zdAogICAgIHsKQEAgLTc1NCwyNSArNzU1LDQyIEBAIGlubGluZSBKU1N0cmluZyoganNO
b250cml2aWFsU3RyaW5nKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzKQogfQogCiBpbmxpbmUgSlNT
dHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhWTSYgdm0sIFN0cmluZyYmIHMpCiB7CiAgICAgQVNT
RVJUKHMubGVuZ3RoKCkgPiAxKTsKICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwgcy5y
ZWxlYXNlSW1wbCgpLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIElkZW50
aWZpZXIgSlNTdHJpbmc6OnRvSWRlbnRpZmllcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KSBjb25zdAorQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIEpTUm9wZVN0cmluZzo6dG9JZGVudGlm
aWVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgVk0mIHZtID0g
Z2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nID0gdG9BdG9tU3RyaW5nKGdsb2JhbE9i
amVjdCk7CisgICAgYXV0byBhdG9tU3RyaW5nID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3Ry
aW5nKj4odGhpcyktPnJlc29sdmVSb3BlVG9BdG9tU3RyaW5nKGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBBU1NFUlQoYXRvbVN0cmluZyk7
CiAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGF0b21TdHJpbmcpOwogfQog
CitBTFdBWVNfSU5MSU5FIElkZW50aWZpZXIgSlNTdHJpbmc6OnRvSWRlbnRpZmllcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAoreworICAgIGlmIGNvbnN0ZXhwciAodmFsaWRh
dGVERkdEb2VzR0MpCisgICAgICAgIHZtKCkudmVyaWZ5Q2FuR0MoKTsKKyAgICBpZiAoaXNSb3Bl
KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlz
KS0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFs
T2JqZWN0KTsKKyAgICBpZiAodmFsdWVJbnRlcm5hbCgpLmltcGwoKS0+aXNBdG9tKCkpCisgICAg
ICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBSZWYgeyAqc3RhdGljX2Nhc3Q8
QXRvbVN0cmluZ0ltcGwqPih2YWx1ZUludGVybmFsKCkuaW1wbCgpKSB9KTsKKyAgICBpZiAodm0u
bGFzdEF0b21pemVkU3RyaW5nLnB0cigpICE9IHZhbHVlSW50ZXJuYWwoKS5pbXBsKCkpIHsKKyAg
ICAgICAgdm0ubGFzdEF0b21pemVkU3RyaW5nID0gKnZhbHVlSW50ZXJuYWwoKS5pbXBsKCk7Cisg
ICAgICAgIHZtLmxhc3RBdG9taXplZFN0cmluZ0F0b20gPSBBdG9tU3RyaW5nSW1wbDo6YWRkKHZh
bHVlSW50ZXJuYWwoKS5pbXBsKCkpLnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorICAgIHJldHVy
biBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBSZWYgeyB2bS5sYXN0QXRvbWl6ZWRTdHJpbmdB
dG9tIH0pOworfQorCiBBTFdBWVNfSU5MSU5FIEF0b21TdHJpbmcgSlNTdHJpbmc6OnRvQXRvbVN0
cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmIGNvbnN0
ZXhwciAodmFsaWRhdGVERkdEb2VzR0MpCiAgICAgICAgIHZtKCkudmVyaWZ5Q2FuR0MoKTsKICAg
ICBpZiAoaXNSb3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVT
dHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGVUb0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAg
ICByZXR1cm4gQXRvbVN0cmluZyh2YWx1ZUludGVybmFsKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKaW5kZXggMzJiYTUxZmVjMjE4Li41NTU0MjNlZGMwZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNTgxLDE2ICs1ODEsMTggQEAgcHVibGljOgogICAgIFdU
Rjo6U3ltYm9sUmVnaXN0cnkgbV9zeW1ib2xSZWdpc3RyeTsKICAgICBXVEY6OlN5bWJvbFJlZ2lz
dHJ5IG1fcHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5OwogICAgIENvbW1vbklkZW50aWZpZXJzKiBwcm9w
ZXJ0eU5hbWVzOwogICAgIGNvbnN0IEFyZ0xpc3QqIGVtcHR5TGlzdDsKICAgICBTbWFsbFN0cmlu
Z3Mgc21hbGxTdHJpbmdzOwogICAgIE51bWVyaWNTdHJpbmdzIG51bWVyaWNTdHJpbmdzOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTaW1wbGVTdGF0cz4gbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2Rl
V29yZEZvckJhc2VsaW5lSklUOwogICAgIFN0cm9uZzxKU1N0cmluZz4gbGFzdENhY2hlZFN0cmlu
ZzsKKyAgICBSZWY8U3RyaW5nSW1wbD4gbGFzdEF0b21pemVkU3RyaW5nIHsgKlN0cmluZ0ltcGw6
OmVtcHR5KCkgfTsKKyAgICBSZWY8QXRvbVN0cmluZ0ltcGw+IGxhc3RBdG9taXplZFN0cmluZ0F0
b20geyAqc3RhdGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgpKSB9
OwogICAgIEpTT05BdG9tU3RyaW5nQ2FjaGUganNvbkF0b21TdHJpbmdDYWNoZTsKIAogICAgIEF0
b21TdHJpbmdUYWJsZSogYXRvbVN0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hdG9tU3Ry
aW5nVGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdpc3RyeSgpIHsg
cmV0dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5JiBwcml2
YXRlU3ltYm9sUmVnaXN0cnkoKSB7IHJldHVybiBtX3ByaXZhdGVTeW1ib2xSZWdpc3RyeTsgfQog
CiAgICAgU3Ryb25nPEpTQmlnSW50PiBoZWFwQmlnSW50Q29uc3RhbnRPbmU7CiAKLS0gCjIuMzIu
MCAoQXBwbGUgR2l0LTEzMikKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451022</attachid>
            <date>2022-02-05 20:22:16 -0800</date>
            <delta_ts>2022-02-05 21:08:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236124-20220206152214.patch</filename>
            <type>text/plain</type>
            <size>4528</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YTZlZmJjMjUxZDFiNGNlMmM5MTA1NjU1OWJmMDU3MTFhNDliYTFlLi40OWM1NmQyNDEwZTlkMjJj
OWYxMTJhZWU0OTlmZTg1NGI5NDAyOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAyMi0wMi0wMyAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIENhY2hlIHRoZSBtb3N0IHJlY2VudCBBdG9tU3RyaW5nIHByb2R1Y2Vk
IGJ5IEpTU3RyaW5nOjp0b0lkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNjEyNAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBT
dXp1a2kuCisKKyAgICAgICAgSlNTdHJpbmc6OnRvSWRlbnRpZmllciBkb2VzIG5vdCBzdG9yZSB0
aGUgcmVzdWx0IG9mIGF0b21pemluZyBpdHMgc3RyaW5nCisgICAgICAgIHZhbHVlLCBleGNlcHQg
d2hlbiBpdCBpcyBhIHJvcGUuIFdlIGNhbiBvZnRlbiBlbmQgdXAgYXRvbWl6aW5nIHRoZSBzYW1l
CisgICAgICAgIEpTU3RyaW5nIGEgbnVtYmVyIG9mIHRpbWVzLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggY2FjaGVzIHRoZSBsYXN0IGF0b21pemVkIHN0cmluZyBwcm9kdWNlZCBmcm9tCisgICAgICAg
IEpTU3RyaW5nOjp0b0lkZW50aWZpZXIgaW4gYSBnaXZlbiBWTS4gRnJvbSBsb2NhbCB0ZXN0aW5n
LCB0aGlzIGlzIGEgMC41JQorICAgICAgICBTcGVlZG9tZXRlcjIgaW1wcm92ZW1lbnQgb24gYW4g
TTEgTWFjQm9vayBBaXIsIGFsdGhvdWdoIHN1cnByaXNpbmdseSBpcworICAgICAgICBuZXV0cmFs
IG9uIGEgcmVjZW50IEludGVsIE1hY0Jvb2sgUHJvLgorCisgICAgICAgICogcnVudGltZS9KU1N0
cmluZy5oOgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmc6OnRvSWRlbnRpZmllciBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b0lkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAyMi0wMi0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJlbW92ZSBVbmxpbmtlZE1ldGFkYXRhVGFi
bGU6Om9mZnNldEluTWV0YWRhdGFUYWJsZSBzaW5jZSBpdCBpcyBubyBsb25nZXIgdXNlZApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggNGYyODNhNzcyN2JmZTNk
OWIwMDIyZDMyYmYyNzFkOTRhNDkwNTRhYy4uNGRlYjc1NjZmMjg5ZGM2MzcwZDU2MGJiMzUyYzg5
NTQyYWYwZDliZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBA
IC02MDIsNiArNjAyLDcgQEAgcHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8
QXRvbVN0cmluZ0ltcGw+IHJlc29sdmVSb3BlVG9FeGlzdGluZ0F0b21TdHJpbmcoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBORVZF
Ul9JTkxJTkUgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKENoYXJhY3RlclR5cGUqKSBjb25zdDsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHJlc29sdmVSb3BlSW50
ZXJuYWxOb1N1YnN0cmluZyhDaGFyYWN0ZXJUeXBlKikgY29uc3Q7CisgICAgSWRlbnRpZmllciB0
b0lkZW50aWZpZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB2b2lkIG91dE9mTWVtb3J5
KEpTR2xvYmFsT2JqZWN0KiBudWxsT3JHbG9iYWxPYmplY3RGb3JPT00pIGNvbnN0OwogICAgIHZv
aWQgcmVzb2x2ZVJvcGVJbnRlcm5hbDgoTENoYXIqKSBjb25zdDsKICAgICB2b2lkIHJlc29sdmVS
b3BlSW50ZXJuYWwxNihVQ2hhciopIGNvbnN0OwpAQCAtNzU5LDE1ICs3NjAsMzIgQEAgaW5saW5l
IEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoVk0mIHZtLCBTdHJpbmcmJiBzKQogICAgIHJl
dHVybiBKU1N0cmluZzo6Y3JlYXRlKHZtLCBzLnJlbGVhc2VJbXBsKCkucmVsZWFzZU5vbk51bGwo
KSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBKU1N0cmluZzo6dG9JZGVudGlmaWVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CitBTFdBWVNfSU5MSU5FIElkZW50
aWZpZXIgSlNSb3BlU3RyaW5nOjp0b0lkZW50aWZpZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBBdG9tU3RyaW5nIGF0b21T
dHJpbmcgPSB0b0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIGF0b21TdHJpbmcg
PSBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGVUb0F0
b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworICAgIEFTU0VSVChhdG9tU3RyaW5nKTsKICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgYXRvbVN0cmluZyk7CiB9CiAKK0FMV0FZU19JTkxJTkUgSWRlbnRpZmllciBK
U1N0cmluZzo6dG9JZGVudGlmaWVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
Cit7CisgICAgaWYgY29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNHQykKKyAgICAgICAgdm0oKS52
ZXJpZnlDYW5HQygpOworICAgIGlmIChpc1JvcGUoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0
KTsKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGlmICh2YWx1ZUludGVy
bmFsKCkuaW1wbCgpLT5pc0F0b20oKSkKKyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIFJlZiB7ICpzdGF0aWNfY2FzdDxBdG9tU3RyaW5nSW1wbCo+KHZhbHVlSW50ZXJu
YWwoKS5pbXBsKCkpIH0pOworICAgIGlmICh2bS5sYXN0QXRvbWl6ZWRJZGVudGlmaWVyU3RyaW5n
SW1wbC5wdHIoKSAhPSB2YWx1ZUludGVybmFsKCkuaW1wbCgpKSB7CisgICAgICAgIHZtLmxhc3RB
dG9taXplZElkZW50aWZpZXJTdHJpbmdJbXBsID0gKnZhbHVlSW50ZXJuYWwoKS5pbXBsKCk7Cisg
ICAgICAgIHZtLmxhc3RBdG9taXplZElkZW50aWZpZXJBdG9tU3RyaW5nSW1wbCA9IEF0b21TdHJp
bmdJbXBsOjphZGQodmFsdWVJbnRlcm5hbCgpLmltcGwoKSkucmVsZWFzZU5vbk51bGwoKTsKKyAg
ICB9CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFJlZiB7IHZtLmxhc3RB
dG9taXplZElkZW50aWZpZXJBdG9tU3RyaW5nSW1wbCB9KTsKK30KKwogQUxXQVlTX0lOTElORSBB
dG9tU3RyaW5nIEpTU3RyaW5nOjp0b0F0b21TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKIHsKICAgICBpZiBjb25zdGV4cHIgKHZhbGlkYXRlREZHRG9lc0dDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMzJiYTUxZmVjMjE4YmZlNGJhM2Q0MzVkNjQ5
OGE3YmIxZmIyOGJkNi4uMTZlMzBmZmI5NDgxMGRkZDEyZGE4Y2NjNzE0NjE5MDYyZDAyZDQwNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC01ODYsNiArNTg2LDggQEAgcHVibGlj
OgogICAgIE51bWVyaWNTdHJpbmdzIG51bWVyaWNTdHJpbmdzOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTaW1wbGVTdGF0cz4gbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5l
SklUOwogICAgIFN0cm9uZzxKU1N0cmluZz4gbGFzdENhY2hlZFN0cmluZzsKKyAgICBSZWY8U3Ry
aW5nSW1wbD4gbGFzdEF0b21pemVkSWRlbnRpZmllclN0cmluZ0ltcGwgeyAqU3RyaW5nSW1wbDo6
ZW1wdHkoKSB9OworICAgIFJlZjxBdG9tU3RyaW5nSW1wbD4gbGFzdEF0b21pemVkSWRlbnRpZmll
ckF0b21TdHJpbmdJbXBsIHsgKnN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsKj4oU3RyaW5nSW1w
bDo6ZW1wdHkoKSkgfTsKICAgICBKU09OQXRvbVN0cmluZ0NhY2hlIGpzb25BdG9tU3RyaW5nQ2Fj
aGU7CiAKICAgICBBdG9tU3RyaW5nVGFibGUqIGF0b21TdHJpbmdUYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYXRvbVN0cmluZ1RhYmxlOyB9Cg==
</data>
<flag name="commit-queue"
          id="477610"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451023</attachid>
            <date>2022-02-05 20:51:28 -0800</date>
            <delta_ts>2022-02-06 12:39:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236124-20220206155127.patch</filename>
            <type>text/plain</type>
            <size>4503</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YTZlZmJjMjUxZDFiNGNlMmM5MTA1NjU1OWJmMDU3MTFhNDliYTFlLi40OWM1NmQyNDEwZTlkMjJj
OWYxMTJhZWU0OTlmZTg1NGI5NDAyOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAyMi0wMi0wMyAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIENhY2hlIHRoZSBtb3N0IHJlY2VudCBBdG9tU3RyaW5nIHByb2R1Y2Vk
IGJ5IEpTU3RyaW5nOjp0b0lkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNjEyNAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBT
dXp1a2kuCisKKyAgICAgICAgSlNTdHJpbmc6OnRvSWRlbnRpZmllciBkb2VzIG5vdCBzdG9yZSB0
aGUgcmVzdWx0IG9mIGF0b21pemluZyBpdHMgc3RyaW5nCisgICAgICAgIHZhbHVlLCBleGNlcHQg
d2hlbiBpdCBpcyBhIHJvcGUuIFdlIGNhbiBvZnRlbiBlbmQgdXAgYXRvbWl6aW5nIHRoZSBzYW1l
CisgICAgICAgIEpTU3RyaW5nIGEgbnVtYmVyIG9mIHRpbWVzLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggY2FjaGVzIHRoZSBsYXN0IGF0b21pemVkIHN0cmluZyBwcm9kdWNlZCBmcm9tCisgICAgICAg
IEpTU3RyaW5nOjp0b0lkZW50aWZpZXIgaW4gYSBnaXZlbiBWTS4gRnJvbSBsb2NhbCB0ZXN0aW5n
LCB0aGlzIGlzIGEgMC41JQorICAgICAgICBTcGVlZG9tZXRlcjIgaW1wcm92ZW1lbnQgb24gYW4g
TTEgTWFjQm9vayBBaXIsIGFsdGhvdWdoIHN1cnByaXNpbmdseSBpcworICAgICAgICBuZXV0cmFs
IG9uIGEgcmVjZW50IEludGVsIE1hY0Jvb2sgUHJvLgorCisgICAgICAgICogcnVudGltZS9KU1N0
cmluZy5oOgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmc6OnRvSWRlbnRpZmllciBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b0lkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAyMi0wMi0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJlbW92ZSBVbmxpbmtlZE1ldGFkYXRhVGFi
bGU6Om9mZnNldEluTWV0YWRhdGFUYWJsZSBzaW5jZSBpdCBpcyBubyBsb25nZXIgdXNlZApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggNGYyODNhNzcyN2JmZTNk
OWIwMDIyZDMyYmYyNzFkOTRhNDkwNTRhYy4uMTJjMWE3NmQ5Mjk4NTRkMDk1MmI4YTQ1MmVjOWM5
Yzg4YzIxNTY4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBA
IC02MDIsNiArNjAyLDcgQEAgcHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8
QXRvbVN0cmluZ0ltcGw+IHJlc29sdmVSb3BlVG9FeGlzdGluZ0F0b21TdHJpbmcoSlNHbG9iYWxP
YmplY3QqKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBORVZF
Ul9JTkxJTkUgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKENoYXJhY3RlclR5cGUqKSBjb25zdDsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHJlc29sdmVSb3BlSW50
ZXJuYWxOb1N1YnN0cmluZyhDaGFyYWN0ZXJUeXBlKikgY29uc3Q7CisgICAgSWRlbnRpZmllciB0
b0lkZW50aWZpZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICB2b2lkIG91dE9mTWVtb3J5
KEpTR2xvYmFsT2JqZWN0KiBudWxsT3JHbG9iYWxPYmplY3RGb3JPT00pIGNvbnN0OwogICAgIHZv
aWQgcmVzb2x2ZVJvcGVJbnRlcm5hbDgoTENoYXIqKSBjb25zdDsKICAgICB2b2lkIHJlc29sdmVS
b3BlSW50ZXJuYWwxNihVQ2hhciopIGNvbnN0OwpAQCAtNzU5LDE1ICs3NjAsMzEgQEAgaW5saW5l
IEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoVk0mIHZtLCBTdHJpbmcmJiBzKQogICAgIHJl
dHVybiBKU1N0cmluZzo6Y3JlYXRlKHZtLCBzLnJlbGVhc2VJbXBsKCkucmVsZWFzZU5vbk51bGwo
KSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBKU1N0cmluZzo6dG9JZGVudGlmaWVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CitBTFdBWVNfSU5MSU5FIElkZW50
aWZpZXIgSlNSb3BlU3RyaW5nOjp0b0lkZW50aWZpZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBBdG9tU3RyaW5nIGF0b21T
dHJpbmcgPSB0b0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIGF0b21TdHJpbmcg
PSBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGVUb0F0
b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBhdG9tU3RyaW5nKTsK
IH0KIAorQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIEpTU3RyaW5nOjp0b0lkZW50aWZpZXIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKK3sKKyAgICBpZiBjb25zdGV4cHIgKHZh
bGlkYXRlREZHRG9lc0dDKQorICAgICAgICB2bSgpLnZlcmlmeUNhbkdDKCk7CisgICAgaWYgKGlz
Um9wZSgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4o
dGhpcyktPnRvSWRlbnRpZmllcihnbG9iYWxPYmplY3QpOworICAgIFZNJiB2bSA9IGdldFZNKGds
b2JhbE9iamVjdCk7CisgICAgaWYgKHZhbHVlSW50ZXJuYWwoKS5pbXBsKCktPmlzQXRvbSgpKQor
ICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgUmVmIHsgKnN0YXRpY19j
YXN0PEF0b21TdHJpbmdJbXBsKj4odmFsdWVJbnRlcm5hbCgpLmltcGwoKSkgfSk7CisgICAgaWYg
KHZtLmxhc3RBdG9taXplZElkZW50aWZpZXJTdHJpbmdJbXBsLnB0cigpICE9IHZhbHVlSW50ZXJu
YWwoKS5pbXBsKCkpIHsKKyAgICAgICAgdm0ubGFzdEF0b21pemVkSWRlbnRpZmllclN0cmluZ0lt
cGwgPSAqdmFsdWVJbnRlcm5hbCgpLmltcGwoKTsKKyAgICAgICAgdm0ubGFzdEF0b21pemVkSWRl
bnRpZmllckF0b21TdHJpbmdJbXBsID0gQXRvbVN0cmluZ0ltcGw6OmFkZCh2YWx1ZUludGVybmFs
KCkuaW1wbCgpKS5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKyAgICByZXR1cm4gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgUmVmIHsgdm0ubGFzdEF0b21pemVkSWRlbnRpZmllckF0b21TdHJp
bmdJbXBsIH0pOworfQorCiBBTFdBWVNfSU5MSU5FIEF0b21TdHJpbmcgSlNTdHJpbmc6OnRvQXRv
bVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmIGNv
bnN0ZXhwciAodmFsaWRhdGVERkdEb2VzR0MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCAzMmJhNTFmZWMyMThiZmU0YmEzZDQzNWQ2NDk4YTdiYjFmYjI4YmQ2Li4xNmUzMGZmYjk0
ODEwZGRkMTJkYThjY2M3MTQ2MTkwNjJkMDJkNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTU4Niw2ICs1ODYsOCBAQCBwdWJsaWM6CiAgICAgTnVtZXJpY1N0cmluZ3MgbnVt
ZXJpY1N0cmluZ3M7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNpbXBsZVN0YXRzPiBtYWNoaW5lQ29k
ZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQ7CiAgICAgU3Ryb25nPEpTU3RyaW5n
PiBsYXN0Q2FjaGVkU3RyaW5nOworICAgIFJlZjxTdHJpbmdJbXBsPiBsYXN0QXRvbWl6ZWRJZGVu
dGlmaWVyU3RyaW5nSW1wbCB7ICpTdHJpbmdJbXBsOjplbXB0eSgpIH07CisgICAgUmVmPEF0b21T
dHJpbmdJbXBsPiBsYXN0QXRvbWl6ZWRJZGVudGlmaWVyQXRvbVN0cmluZ0ltcGwgeyAqc3RhdGlj
X2Nhc3Q8QXRvbVN0cmluZ0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgpKSB9OwogICAgIEpTT05B
dG9tU3RyaW5nQ2FjaGUganNvbkF0b21TdHJpbmdDYWNoZTsKIAogICAgIEF0b21TdHJpbmdUYWJs
ZSogYXRvbVN0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hdG9tU3RyaW5nVGFibGU7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>