<?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>70258</bug_id>
          
          <creation_ts>2011-10-17 13:01:59 -0700</creation_ts>
          <short_desc>Simplified GC marking logic</short_desc>
          <delta_ts>2011-10-17 13:42:41 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>485417</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-17 13:01:59 -0700</bug_when>
    <thetext>Simplified GC marking logic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485440</commentid>
    <comment_count>1</comment_count>
      <attachid>111308</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-17 13:18:52 -0700</bug_when>
    <thetext>Created attachment 111308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485444</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 13:21:22 -0700</bug_when>
    <thetext>Attachment 111308 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;]&quot; exit_code: 2

Updating OpenSource
Current branch master is up to date.
Updating chromium port dependencies using gclient...
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Error: &apos;depot_tools/gclient sync&apos; failed 3 tries and returned 256 at Tools/Scripts/update-webkit-chromium line 107.
Re-trying &apos;depot_tools/gclient sync&apos;
No such file or directory at Tools/Scripts/update-webkit line 104.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485451</commentid>
    <comment_count>3</comment_count>
      <attachid>111308</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-17 13:25:30 -0700</bug_when>
    <thetext>Comment on attachment 111308
Patch

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

&gt; Source/JavaScriptCore/heap/MarkStack.cpp:42
&gt; +    , m_capacity(m_allocated / sizeof(JSCell*))

This uses an uninitialized m_allocated data member.

&gt; Source/JavaScriptCore/heap/MarkStack.cpp:72
&gt; +#if OS(WINDOWS)
&gt; +    // We cannot release a part of a region with VirtualFree. To get around this,
&gt; +    // we&apos;ll release the entire region and reallocate the size that we want.

Can we add a tiny bit of abstraction here so the #if OS (WINDOWS) isn’t right inline in the code? This knowledge of what MarkStack::releaseStack can and can’t do is now in a different class from the releaseStack function.

&gt; Source/JavaScriptCore/heap/MarkStack.cpp:118
&gt; +    cell-&gt;methodTable()-&gt;visitChildren(const_cast&lt;JSCell*&gt;(cell), visitor);

Looks like you removed m_isCheckingForDefaultMarkViolation here. Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485459</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-17 13:32:14 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/heap/MarkStack.cpp:42
&gt; &gt; +    , m_capacity(m_allocated / sizeof(JSCell*))
&gt; 
&gt; This uses an uninitialized m_allocated data member.

Oops!

&gt; &gt; Source/JavaScriptCore/heap/MarkStack.cpp:72
&gt; &gt; +#if OS(WINDOWS)
&gt; &gt; +    // We cannot release a part of a region with VirtualFree. To get around this,
&gt; &gt; +    // we&apos;ll release the entire region and reallocate the size that we want.
&gt; 
&gt; Can we add a tiny bit of abstraction here so the #if OS (WINDOWS) isn’t right inline in the code? This knowledge of what MarkStack::releaseStack can and can’t do is now in a different class from the releaseStack function.

Yes. I think this can move into OSAllocator.

&gt; &gt; Source/JavaScriptCore/heap/MarkStack.cpp:118
&gt; &gt; +    cell-&gt;methodTable()-&gt;visitChildren(const_cast&lt;JSCell*&gt;(cell), visitor);
&gt; 
&gt; Looks like you removed m_isCheckingForDefaultMarkViolation here. Why?

There&apos;s no such thing as a &quot;default mark violation&quot; anymore. I&apos;m going to remove the rest of it, include the structure flag, in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485464</commentid>
    <comment_count>5</comment_count>
      <attachid>111308</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-10-17 13:40:18 -0700</bug_when>
    <thetext>Comment on attachment 111308
Patch

Attachment 111308 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10106150</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485466</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-10-17 13:42:41 -0700</bug_when>
    <thetext>Committed r97642: &lt;http://trac.webkit.org/changeset/97642&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111308</attachid>
            <date>2011-10-17 13:18:52 -0700</date>
            <delta_ts>2011-10-17 13:40:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70258-20111017131852.patch</filename>
            <type>text/plain</type>
            <size>28951</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTc2MzgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjggQEAK
KzIwMTEtMTAtMTcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBTaW1wbGlmaWVkIEdDIG1hcmtpbmcgbG9naWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMjU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBObyBwZXJmLiBjaGFuZ2UuCisgICAgICAgIAor
ICAgICAgICBUaGlzIGlzIGEgZmlyc3Qgc3RlcCB0b3dhcmQgR0MgYWxsb2NhdGluZyBzdHJpbmcg
YmFja2luZyBzdG9yZXMsIHN0YXJ0aW5nCisgICAgICAgIHdpdGggcm9wZXMuIEl0IGFsc28gZW5h
YmxlcyBmdXR1cmUgc2ltcGxpZmljYXRpb25zIGFuZCBvcHRpbWl6YXRpb25zLgorICAgICAgICAK
KyAgICAgICAgLSBSZXBsYWNlZCBzb21lIGNvbXBsZXggbWFyayBzdGFjayBsb2dpYyB3aXRoIGEg
c2ltcGxlIGxpbmVhciBzdGFjayBvZgorICAgICAgICBKU0NlbGwgcG9pbnRlcnMuCisgICAgICAg
IAorICAgICAgICAtIFJlcGxhY2VkIGxvZ2ljIGZvciBzaG9ydC1jaXJjdWl0aW5nIG1hcmtpbmcg
YmFzZWQgb24gSlNUeXBlIGFuZC9vcgorICAgICAgICBTdHJ1Y3R1cmUgZmxhZ3Mgd2l0aCBzcGVj
aWFsIGNhc2VzIGZvciBvYmplY3QsIGFycmF5LCBhbmQgc3RyaW5nLgorICAgICAgICAKKyAgICAg
ICAgLSBGaWRkbGVkIHdpdGggaW5saW5pbmcgZm9yIGJldHRlciBjb2RlZ2VuLgorCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIGhlYXAvSGFuZGxlU3RhY2suY3BwOiBC
dWlsZCEKKworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6Okhl
YXApOiBQcm92aWRlIG1vcmUgdnB0cnMgdG8gU2xvdFZpc2l0b3IsIGZvciB1c2UgaW4gbWFya2lu
Zy4KKworICAgICAgICAqIGhlYXAvSGVhcFJvb3RWaXNpdG9yLmg6IFJlbW92ZWQgdW51c2VkIGZ1
bmN0aW9ucyB0aGF0IG5vIGxvbmdlciBidWlsZC4KKworICAgICAgICAqIGhlYXAvTWFya1N0YWNr
LmNwcDoKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6Ok1hcmtTdGFja0FycmF5KToKKyAg
ICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6On5NYXJrU3RhY2tBcnJheSk6CisgICAgICAgIChK
U0M6Ok1hcmtTdGFja0FycmF5OjpleHBhbmQpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tBcnJh
eTo6c2hyaW5rQWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6cmVzZXQpOgor
ICAgICAgICAoSlNDOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6
OmRyYWluKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5oOgorICAgICAgICAoSlNDOjpNYXJr
U3RhY2s6Ok1hcmtTdGFjayk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6fk1hcmtTdGFjayk6
CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5OjphcHBlbmQpOgorICAgICAgICAoSlNDOjpN
YXJrU3RhY2tBcnJheTo6cmVtb3ZlTGFzdCk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5
Ojppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjphcHBlbmQpOgorICAgICAgICAo
SlNDOjpNYXJrU3RhY2s6OmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcik6CisgICAgICAgIChKU0M6
Ok1hcmtTdGFjazo6aW50ZXJuYWxBcHBlbmQpOiBSZXBsYWNlZCBjb21wbGV4IG1hcmsgc2V0IGxv
Z2ljIHdpdGgKKyAgICAgICAgc2ltcGxlIGxpbmVhciBzdGFjay4KKworICAgICAgICAqIGhlYXAv
U2xvdFZpc2l0b3IuaDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OlNsb3RWaXNpdG9yKTog
VXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKworICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5j
cHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOiBEb24ndCBpbmxpbmUgdmlzaXRDaGlsZHJlbjsgaXQncyB0b28gYmlnLgorCisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjppbnRl
cm5hbEFwcGVuZCk6IE5peGVkIHRoZSBzaG9ydC1jaXJjdWl0IGZvciBDb21wb3VuZFR5cGUKKyAg
ICAgICAgYmVjYXVzZSBpdCBwcmV2ZW50ZWQgc3RyaW5ncyBmcm9tIG93bmluZyBHQyBwb2ludGVy
cy4KKworICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6CisgICAgICAgIChKU0M6Ok1h
cmtTdGFjazo6YXBwZW5kVmFsdWVzKTogTm8gbmVlZCB0byB2YWxpZGF0ZTsgaW50ZXJuYWxBcHBl
bmQgd2lsbAorICAgICAgICBkbyB0aGF0IGZvciB1cy4KKwogMjAxMS0xMC0xNyAgQWRhbSBSb2Jl
biAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93cyBidWlsZCBmaXggYWZ0ZXIg
cjk3NTM2LCBwYXJ0IDMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cAkocmV2aXNpb24gOTc1ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDcgQEAgX19aTjNKU0MxNEpT
R2xvYmFsT2JqZWN0NGluaXRFUE5TXzhKU09iagogX19aTjNKU0MxNEpTR2xvYmFsT2JqZWN0NnNf
aW5mb0UKIF9fWk4zSlNDMTRKU0dsb2JhbE9iamVjdEQyRXYKIF9fWk4zSlNDMTRNYWNoaW5lVGhy
ZWFkczE2YWRkQ3VycmVudFRocmVhZEV2CitfX1pOM0pTQzE0TWFya1N0YWNrQXJyYXk2ZXhwYW5k
RXYKIF9fWk4zSlNDMTRTYW1wbGluZ1RocmVhZDRzdG9wRXYKIF9fWk4zSlNDMTRTYW1wbGluZ1Ro
cmVhZDVzdGFydEVqCiBfX1pOM0pTQzE0U2NvcGVDaGFpbk5vZGU2c19pbmZvRQpAQCAtMjYwLDkg
KzI2MSw5IEBAIF9fWk4zSlNDNkpTQ2VsbDEwcHV0VmlydHVhbEVQTlNfOUV4ZWNTdGEKIF9fWk4z
SlNDNkpTQ2VsbDExZ2V0Q2FsbERhdGFFUFMwX1JOU184Q2FsbERhdGFFCiBfX1pOM0pTQzZKU0Nl
bGwyMWRlbGV0ZVByb3BlcnR5VmlydHVhbEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmll
ckUKIF9fWk4zSlNDNkpTQ2VsbDIxZGVsZXRlUHJvcGVydHlWaXJ0dWFsRVBOU185RXhlY1N0YXRl
RWoKK19fWk4zSlNDNkpTQ2VsbDIzZ2V0Q29uc3RydWN0RGF0YVZpcnR1YWxFUk5TXzEzQ29uc3Ry
dWN0RGF0YUUKIF9fWk4zSlNDNkpTQ2VsbDI1Z2V0T3duUHJvcGVydHlTbG90VmlydHVhbEVQTlNf
OUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pT
QzZKU0NlbGwyNWdldE93blByb3BlcnR5U2xvdFZpcnR1YWxFUE5TXzlFeGVjU3RhdGVFalJOU18x
MlByb3BlcnR5U2xvdEUKLV9fWk4zSlNDNkpTQ2VsbDIzZ2V0Q29uc3RydWN0RGF0YVZpcnR1YWxF
Uk5TXzEzQ29uc3RydWN0RGF0YUUKIF9fWk4zSlNDNkpTQ2VsbDlnZXRPYmplY3RFdgogX19aTjNK
U0M2SlNMb2NrMTJEcm9wQWxsTG9ja3NDMUVOU18xNEpTTG9ja0JlaGF2aW9yRQogX19aTjNKU0M2
SlNMb2NrMTJEcm9wQWxsTG9ja3NDMUVQTlNfOUV4ZWNTdGF0ZUUKQEAgLTM0MCw3ICszNDEsNiBA
QCBfX1pOM0pTQzhQcm9maWxlcjhwcm9maWxlckV2CiBfX1pOM0pTQzhldmFsdWF0ZUVQTlNfOUV4
ZWNTdGF0ZUVQTlNfMTRTY29wZUNoYWluTm9kZUVSS05TXzEwU291cmNlQ29kZUVOU183SlNWYWx1
ZUVQUzdfCiBfX1pOM0pTQzlDb2RlQmxvY2tEMUV2CiBfX1pOM0pTQzlDb2RlQmxvY2tEMkV2Ci1f
X1pOM0pTQzlNYXJrU3RhY2sxM3ZhbGlkYXRlVmFsdWVFTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzlT
dHJ1Y3R1cmUyMWFkZFByb3BlcnR5VHJhbnNpdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUFMwX1JL
TlNfMTBJZGVudGlmaWVyRWpQTlNfNkpTQ2VsbEVSbQogX19aTjNKU0M5U3RydWN0dXJlMjJtYXRl
cmlhbGl6ZVByb3BlcnR5TWFwRVJOU18xMkpTR2xvYmFsRGF0YUUKIF9fWk4zSlNDOVN0cnVjdHVy
ZTI1Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUFMwX05TXzdK
U1ZhbHVlRQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmNw
cAkocmV2aXNpb24gOTc1ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVT
dGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJIYW5k
bGVTdGFjay5oIgogCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiSlNW
YWx1ZUlubGluZU1ldGhvZHMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiA5
NzU4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTUsNyArMzE1LDcgQEAgSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEhlYQogICAgICwgbV9tYXJrTGlzdFNldCgwKQogICAgICwgbV9hY3Rpdml0eUNhbGxiYWNr
KERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fbWFjaGlu
ZVRocmVhZHModGhpcykKLSAgICAsIG1fc2xvdFZpc2l0b3IoZ2xvYmFsRGF0YS0+anNBcnJheVZQ
dHIpCisgICAgLCBtX3Nsb3RWaXNpdG9yKGdsb2JhbERhdGEtPmpzQXJyYXlWUHRyLCBnbG9iYWxE
YXRhLT5qc0ZpbmFsT2JqZWN0VlB0ciwgZ2xvYmFsRGF0YS0+anNTdHJpbmdWUHRyKQogICAgICwg
bV9oYW5kbGVIZWFwKGdsb2JhbERhdGEpCiAgICAgLCBtX2lzU2FmZVRvQ29sbGVjdChmYWxzZSkK
ICAgICAsIG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcFJvb3RWaXNpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFJvb3RWaXNpdG9yLmgJKHJldmlzaW9uIDk3NTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFJvb3RWaXNpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDcgKzQzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgdmlzaXQoSlNWYWx1
ZSosIHNpemVfdCk7CiAgICAgICAgIHZvaWQgdmlzaXQoSlNTdHJpbmcqKik7CiAgICAgICAgIHZv
aWQgdmlzaXQoSlNDZWxsKiopOwotICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKik7
CiAKICAgICAgICAgU2xvdFZpc2l0b3ImIHZpc2l0b3IoKTsKIApAQCAtNzYsMTEgKzc1LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1fdmlzaXRvci5hcHBlbmQoc2xvdCk7CiAgICAgfQog
Ci0gICAgaW5saW5lIHZvaWQgSGVhcFJvb3RWaXNpdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCkKLSAgICB7Ci0gICAgICAgIG1fdmlzaXRvci52aXNpdENoaWxkcmVuKGNlbGwpOwotICAg
IH0KLQogICAgIGlubGluZSBTbG90VmlzaXRvciYgSGVhcFJvb3RWaXNpdG9yOjp2aXNpdG9yKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX3Zpc2l0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDk3NTgyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTQgKzMz
LDU2IEBACiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCitNYXJrU3RhY2tBcnJheTo6TWFya1N0YWNrQXJyYXkoKQorICAgIDogbV90
b3AoMCkKKyAgICAsIG1fY2FwYWNpdHkobV9hbGxvY2F0ZWQgLyBzaXplb2YoSlNDZWxsKikpCisg
ICAgLCBtX2FsbG9jYXRlZChwYWdlU2l6ZSgpKQoreworICAgIG1fZGF0YSA9IHN0YXRpY19jYXN0
PGNvbnN0IEpTQ2VsbCoqPihNYXJrU3RhY2s6OmFsbG9jYXRlU3RhY2sobV9hbGxvY2F0ZWQpKTsK
K30KKworTWFya1N0YWNrQXJyYXk6On5NYXJrU3RhY2tBcnJheSgpCit7CisgICAgTWFya1N0YWNr
OjpyZWxlYXNlU3RhY2sobV9kYXRhLCBtX2FsbG9jYXRlZCk7Cit9CisKK3ZvaWQgTWFya1N0YWNr
QXJyYXk6OmV4cGFuZCgpCit7CisgICAgc2l6ZV90IG9sZEFsbG9jYXRpb24gPSBtX2FsbG9jYXRl
ZDsKKyAgICBtX2FsbG9jYXRlZCAqPSAyOworICAgIG1fY2FwYWNpdHkgPSBtX2FsbG9jYXRlZCAv
IHNpemVvZihKU0NlbGwqKTsKKyAgICB2b2lkKiBuZXdEYXRhID0gTWFya1N0YWNrOjphbGxvY2F0
ZVN0YWNrKG1fYWxsb2NhdGVkKTsKKyAgICBtZW1jcHkobmV3RGF0YSwgbV9kYXRhLCBvbGRBbGxv
Y2F0aW9uKTsKKyAgICBNYXJrU3RhY2s6OnJlbGVhc2VTdGFjayhtX2RhdGEsIG9sZEFsbG9jYXRp
b24pOworICAgIG1fZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IEpTQ2VsbCoqPihuZXdEYXRhKTsK
K30KKwordm9pZCBNYXJrU3RhY2tBcnJheTo6c2hyaW5rQWxsb2NhdGlvbihzaXplX3Qgc2l6ZSkK
K3sKKyAgICBBU1NFUlQoc2l6ZSA8PSBtX2FsbG9jYXRlZCk7CisgICAgQVNTRVJUKGlzUGFnZUFs
aWduZWQoc2l6ZSkpOworICAgIGlmIChzaXplID09IG1fYWxsb2NhdGVkKQorICAgICAgICByZXR1
cm47CisjaWYgT1MoV0lORE9XUykKKyAgICAvLyBXZSBjYW5ub3QgcmVsZWFzZSBhIHBhcnQgb2Yg
YSByZWdpb24gd2l0aCBWaXJ0dWFsRnJlZS4gVG8gZ2V0IGFyb3VuZCB0aGlzLAorICAgIC8vIHdl
J2xsIHJlbGVhc2UgdGhlIGVudGlyZSByZWdpb24gYW5kIHJlYWxsb2NhdGUgdGhlIHNpemUgdGhh
dCB3ZSB3YW50LgorICAgIE1hcmtTdGFjazo6cmVsZWFzZVN0YWNrKG1fZGF0YSwgbV9hbGxvY2F0
ZWQpOworICAgIG1fZGF0YSA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KE1hcmtTdGFjazo6YWxsb2Nh
dGVTdGFjayhzaXplKSk7CisjZWxzZQorICAgIE1hcmtTdGFjazo6cmVsZWFzZVN0YWNrKHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fZGF0YSkgKyBzaXplLCBtX2FsbG9jYXRlZCAtIHNpemUpOwor
I2VuZGlmCisgICAgbV9hbGxvY2F0ZWQgPSBzaXplOworICAgIG1fY2FwYWNpdHkgPSBtX2FsbG9j
YXRlZCAvIHNpemVvZihKU0NlbGwqKTsKK30KKwogdm9pZCBNYXJrU3RhY2s6OnJlc2V0KCkKIHsK
ICAgICBtX3Zpc2l0Q291bnQgPSAwOwotICAgIG1fdmFsdWVzLnNocmlua0FsbG9jYXRpb24ocGFn
ZVNpemUoKSk7Ci0gICAgbV9tYXJrU2V0cy5zaHJpbmtBbGxvY2F0aW9uKHBhZ2VTaXplKCkpOwor
ICAgIG1fc3RhY2suc2hyaW5rQWxsb2NhdGlvbihwYWdlU2l6ZSgpKTsKICAgICBtX29wYXF1ZVJv
b3RzLmNsZWFyKCk7CiB9CiAKQEAgLTUyLDg5ICs5NCwzOCBAQCB2b2lkIE1hcmtTdGFjazo6YXBw
ZW5kKENvbnNlcnZhdGl2ZVJvb3RzCiAgICAgICAgIGludGVybmFsQXBwZW5kKHJvb3RzW2ldKTsK
IH0KIAotdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwpCitBTFdB
WVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Is
IGNvbnN0IEpTQ2VsbCogY2VsbCwgdm9pZCoganNGaW5hbE9iamVjdFZQdHIsIHZvaWQqIGpzQXJy
YXlWUHRyLCB2b2lkKiBqc1N0cmluZ1ZQdHIpCiB7CiAjaWYgRU5BQkxFKFNJTVBMRV9IRUFQX1BS
T0ZJTElORykKICAgICBtX3Zpc2l0ZWRUeXBlQ291bnRzLmNvdW50KGNlbGwpOwogI2VuZGlmCiAK
ICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwotICAgIGlmIChjZWxsLT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5cGUpIHsKLSAgICAgICAgSlNDZWxs
Ojp2aXNpdENoaWxkcmVuKGNlbGwsICp0aGlzKTsKKworICAgIGlmIChjZWxsLT52cHRyKCkgPT0g
anNTdHJpbmdWUHRyKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgaWYgKCFjZWxsLT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpIHsKLSAgICAg
ICAgQVNTRVJUKGNlbGwtPmlzT2JqZWN0KCkpOwotI2lmZGVmIE5ERUJVRwotICAgICAgICBhc09i
amVjdChjZWxsKS0+dmlzaXRDaGlsZHJlbkRpcmVjdCgqdGhpcyk7Ci0jZWxzZQotICAgICAgICBB
U1NFUlQoIW1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKTsKLSAgICAgICAgbV9p
c0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSB0cnVlOwotICAgICAgICBjZWxsLT5t
ZXRob2RUYWJsZSgpLT52aXNpdENoaWxkcmVuKGNlbGwsICp0aGlzKTsKLSAgICAgICAgQVNTRVJU
KG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKTsKLSAgICAgICAgbV9pc0NoZWNr
aW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKLSNlbmRpZgorICAgIGlmIChjZWxs
LT52cHRyKCkgPT0ganNGaW5hbE9iamVjdFZQdHIpIHsKKyAgICAgICAgSlNPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgaWYgKGNlbGwtPnZwdHIoKSA9PSBtX2pzQXJyYXlWUHRyKSB7Ci0g
ICAgICAgIGFzQXJyYXkoY2VsbCktPnZpc2l0Q2hpbGRyZW5EaXJlY3QoKnRoaXMpOworCisgICAg
aWYgKGNlbGwtPnZwdHIoKSA9PSBqc0FycmF5VlB0cikgeworICAgICAgICBKU0FycmF5Ojp2aXNp
dENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGNlbGwtPm1ldGhvZFRhYmxlKCktPnZpc2l0Q2hpbGRyZW4oY2Vs
bCwgKnRoaXMpOworCisgICAgY2VsbC0+bWV0aG9kVGFibGUoKS0+dmlzaXRDaGlsZHJlbihjb25z
dF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKIH0KIAogdm9pZCBTbG90VmlzaXRvcjo6
ZHJhaW4oKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBBU1NFUlQoIW1faXNEcmFpbmlu
Zyk7Ci0gICAgbV9pc0RyYWluaW5nID0gdHJ1ZTsKLSNlbmRpZgotICAgIHdoaWxlICghbV9tYXJr
U2V0cy5pc0VtcHR5KCkgfHwgIW1fdmFsdWVzLmlzRW1wdHkoKSkgewotICAgICAgICB3aGlsZSAo
IW1fbWFya1NldHMuaXNFbXB0eSgpICYmIG1fdmFsdWVzLnNpemUoKSA8IDUwKSB7Ci0gICAgICAg
ICAgICBBU1NFUlQoIW1fbWFya1NldHMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIE1hcmtTZXQm
IGN1cnJlbnQgPSBtX21hcmtTZXRzLmxhc3QoKTsKLSAgICAgICAgICAgIEFTU0VSVChjdXJyZW50
Lm1fdmFsdWVzKTsKLSAgICAgICAgICAgIEpTVmFsdWUqIGVuZCA9IGN1cnJlbnQubV9lbmQ7Ci0g
ICAgICAgICAgICBBU1NFUlQoY3VycmVudC5tX3ZhbHVlcyk7Ci0gICAgICAgICAgICBBU1NFUlQo
Y3VycmVudC5tX3ZhbHVlcyAhPSBlbmQpOwotICAgICAgICBmaW5kTmV4dFVubWFya2VkTnVsbFZh
bHVlOgotICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnQubV92YWx1ZXMgIT0gZW5kKTsKLSAgICAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSAqY3VycmVudC5tX3ZhbHVlczsKLSAgICAgICAgICAgIGN1
cnJlbnQubV92YWx1ZXMrKzsKLQotICAgICAgICAgICAgSlNDZWxsKiBjZWxsOwotICAgICAgICAg
ICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkgfHwgSGVhcDo6dGVzdEFuZFNldE1hcmtl
ZChjZWxsID0gdmFsdWUuYXNDZWxsKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQu
bV92YWx1ZXMgPT0gZW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fbWFya1NldHMucmVtb3Zl
TGFzdCgpOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgZ290byBmaW5kTmV4dFVubWFya2VkTnVsbFZhbHVlOwotICAgICAg
ICAgICAgfQorICAgIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyID0gbV9qc0ZpbmFsT2JqZWN0VlB0
cjsKKyAgICB2b2lkKiBqc0FycmF5VlB0ciA9IG1fanNBcnJheVZQdHI7CisgICAgdm9pZCoganNT
dHJpbmdWUHRyID0gbV9qc1N0cmluZ1ZQdHI7CiAKLSAgICAgICAgICAgIGlmIChjZWxsLT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPCBDb21wb3VuZFR5cGUpIHsKLSNpZiBFTkFCTEUo
U0lNUExFX0hFQVBfUFJPRklMSU5HKQotICAgICAgICAgICAgICAgIG1fdmlzaXRlZFR5cGVDb3Vu
dHMuY291bnQoY2VsbCk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBKU0NlbGw6OnZpc2l0Q2hp
bGRyZW4oY2VsbCwgKnRoaXMpOwotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Lm1fdmFsdWVz
ID09IGVuZCkgewotICAgICAgICAgICAgICAgICAgICBtX21hcmtTZXRzLnJlbW92ZUxhc3QoKTsK
LSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGdvdG8gZmluZE5leHRVbm1hcmtlZE51bGxWYWx1ZTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgaWYgKGN1cnJlbnQubV92YWx1ZXMgPT0gZW5kKQotICAgICAgICAgICAg
ICAgIG1fbWFya1NldHMucmVtb3ZlTGFzdCgpOwotCi0gICAgICAgICAgICB2aXNpdENoaWxkcmVu
KGNlbGwpOwotICAgICAgICB9Ci0gICAgICAgIHdoaWxlICghbV92YWx1ZXMuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgdmlzaXRDaGlsZHJlbihtX3ZhbHVlcy5yZW1vdmVMYXN0KCkpOwotICAgIH0K
LSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgbV9pc0RyYWluaW5nID0gZmFsc2U7Ci0jZW5kaWYK
KyAgICB3aGlsZSAoIW1fc3RhY2suaXNFbXB0eSgpKQorICAgICAgICB2aXNpdENoaWxkcmVuKCp0
aGlzLCBtX3N0YWNrLnJlbW92ZUxhc3QoKSwganNGaW5hbE9iamVjdFZQdHIsIGpzQXJyYXlWUHRy
LCBqc1N0cmluZ1ZQdHIpOwogfQogCiB2b2lkIFNsb3RWaXNpdG9yOjpoYXJ2ZXN0V2Vha1JlZmVy
ZW5jZXMoKQpAQCAtMTQ5LDIxICsxNDAsOCBAQCB2b2lkIFNsb3RWaXNpdG9yOjpoYXJ2ZXN0V2Vh
a1JlZmVyZW5jZXMoCiB9CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKLXZvaWQgTWFya1N0
YWNrOjp2YWxpZGF0ZVNldChKU1ZhbHVlKiB2YWx1ZXMsIHNpemVfdCBjb3VudCkKLXsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgaWYgKHZhbHVlc1tp
XSkKLSAgICAgICAgICAgIHZhbGlkYXRlVmFsdWUodmFsdWVzW2ldKTsKLSAgICB9Ci19Ci0KLXZv
aWQgTWFya1N0YWNrOjp2YWxpZGF0ZVZhbHVlKEpTVmFsdWUgdmFsdWUpCit2b2lkIE1hcmtTdGFj
azo6dmFsaWRhdGUoSlNDZWxsKiBjZWxsKQogewotICAgIGlmICghdmFsdWUpCi0gICAgICAgIENS
QVNIKCk7Ci0gICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEpT
Q2VsbCogY2VsbCA9IHZhbHVlLmFzQ2VsbCgpOwogICAgIGlmICghY2VsbCkKICAgICAgICAgQ1JB
U0goKTsKIApAQCAtMTc2LDkgKzE1NCw5IEBAIHZvaWQgTWFya1N0YWNrOjp2YWxpZGF0ZVZhbHVl
KEpTVmFsdWUgdmEKICAgICAgICAgQ1JBU0goKTsKIH0KICNlbHNlCi12b2lkIE1hcmtTdGFjazo6
dmFsaWRhdGVWYWx1ZShKU1ZhbHVlKQordm9pZCBNYXJrU3RhY2s6OnZhbGlkYXRlKEpTQ2VsbCop
CiB7Ci19IAorfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgJKHJldmlzaW9uIDk3NTgyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDM0ICs0
NywyNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBX
cml0ZUJhcnJpZXJCYXNlOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEpJVFdyaXRl
QmFycmllcjsKICAgICAKLSAgICBzdHJ1Y3QgTWFya1NldCB7Ci0gICAgICAgIE1hcmtTZXQoSlNW
YWx1ZSogdmFsdWVzLCBKU1ZhbHVlKiBlbmQpOwotCi0gICAgICAgIEpTVmFsdWUqIG1fdmFsdWVz
OwotICAgICAgICBKU1ZhbHVlKiBtX2VuZDsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY2xhc3MgTWFya1N0YWNrQXJyYXkgeworICAgIGNsYXNzIE1hcmtTdGFja0FycmF5IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIE1hcmtTdGFja0FycmF5KCk7CiAgICAgICAgIH5NYXJrU3Rh
Y2tBcnJheSgpOwogCiAgICAgICAgIHZvaWQgZXhwYW5kKCk7Ci0gICAgICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFQmKTsKKyAgICAgICAgdm9pZCBhcHBlbmQoY29uc3QgSlNDZWxsKik7CiAKLSAgICAg
ICAgVCByZW1vdmVMYXN0KCk7Ci0gICAgICAgIFQmIGxhc3QoKTsKKyAgICAgICAgY29uc3QgSlND
ZWxsKiByZW1vdmVMYXN0KCk7CiAKICAgICAgICAgYm9vbCBpc0VtcHR5KCk7Ci0gICAgICAgIHNp
emVfdCBzaXplKCk7CiAKICAgICAgICAgdm9pZCBzaHJpbmtBbGxvY2F0aW9uKHNpemVfdCk7CiAK
ICAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBKU0NlbGwqKiBtX2RhdGE7CiAgICAgICAgIHNp
emVfdCBtX3RvcDsKLSAgICAgICAgc2l6ZV90IG1fYWxsb2NhdGVkOwogICAgICAgICBzaXplX3Qg
bV9jYXBhY2l0eTsKLSAgICAgICAgVCogbV9kYXRhOworICAgICAgICBzaXplX3QgbV9hbGxvY2F0
ZWQ7CiAgICAgfTsKIAogICAgIGNsYXNzIE1hcmtTdGFjayB7CkBAIC04NSwxNyArNzYsMTcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkKiBhbGxvY2F0ZVN0YWNrKHNpemVf
dCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VTdGFjayh2b2lkKiwgc2l6ZV90KTsKIAot
ICAgICAgICBNYXJrU3RhY2sodm9pZCoganNBcnJheVZQdHIpOworICAgICAgICBNYXJrU3RhY2so
dm9pZCoganNBcnJheVZQdHIsIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyLCB2b2lkKiBqc1N0cmlu
Z1ZQdHIpOwogICAgICAgICB+TWFya1N0YWNrKCk7CiAKICAgICAgICAgdm9pZCBhcHBlbmQoQ29u
c2VydmF0aXZlUm9vdHMmKTsKICAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSB2b2lkIGFwcGVuZChKSVRXcml0ZUJhcnJpZXI8VD4qKTsKLSAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgYXBwZW5kKFdyaXRlQmFycmllckJhc2U8VD4qKTsK
LSAgICAgICAgaW5saW5lIHZvaWQgYXBwZW5kVmFsdWVzKFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qLCBzaXplX3QgY291bnQpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFw
cGVuZChKSVRXcml0ZUJhcnJpZXI8VD4qKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCBhcHBlbmQoV3JpdGVCYXJyaWVyQmFzZTxUPiopOworICAgICAgICB2b2lkIGFwcGVuZFZh
bHVlcyhXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kiwgc2l6ZV90IGNvdW50KTsKICAgICAgICAg
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFwcGVu
ZFVuYmFycmllcmVkUG9pbnRlcihUKiopOworICAgICAgICB2b2lkIGFwcGVuZFVuYmFycmllcmVk
UG9pbnRlcihUKiopOwogICAgICAgICAKICAgICAgICAgYm9vbCBhZGRPcGFxdWVSb290KHZvaWQq
KTsKICAgICAgICAgYm9vbCBjb250YWluc09wYXF1ZVJvb3Qodm9pZCopOwpAQCAtMTE4LDEwICsx
MDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotI2lm
IEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAgICAgICBzdGF0aWMgdm9pZCB2YWxpZGF0ZVNldChK
U1ZhbHVlKiwgc2l6ZV90KTsKLSNlbmRpZgotICAgICAgICBzdGF0aWMgdm9pZCB2YWxpZGF0ZVZh
bHVlKEpTVmFsdWUpOworICAgICAgICBzdGF0aWMgdm9pZCB2YWxpZGF0ZShKU0NlbGwqKTsKIAog
ICAgICAgICB2b2lkIGFwcGVuZChKU1ZhbHVlKik7CiAgICAgICAgIHZvaWQgYXBwZW5kKEpTVmFs
dWUqLCBzaXplX3QgY291bnQpOwpAQCAtMTMwLDkgKzExOCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBpbnRlcm5hbEFwcGVuZChKU0NlbGwqKTsKICAgICAgICAgdm9pZCBpbnRl
cm5hbEFwcGVuZChKU1ZhbHVlKTsKIAorICAgICAgICBNYXJrU3RhY2tBcnJheSBtX3N0YWNrOwog
ICAgICAgICB2b2lkKiBtX2pzQXJyYXlWUHRyOwotICAgICAgICBNYXJrU3RhY2tBcnJheTxNYXJr
U2V0PiBtX21hcmtTZXRzOwotICAgICAgICBNYXJrU3RhY2tBcnJheTxKU0NlbGwqPiBtX3ZhbHVl
czsKKyAgICAgICAgdm9pZCogbV9qc0ZpbmFsT2JqZWN0VlB0cjsKKyAgICAgICAgdm9pZCogbV9q
c1N0cmluZ1ZQdHI7CiAgICAgICAgIEhhc2hTZXQ8dm9pZCo+IG1fb3BhcXVlUm9vdHM7IC8vIEhh
bmRsZS1vd25pbmcgZGF0YSBzdHJ1Y3R1cmVzIG5vdCB2aXNpYmxlIHRvIHRoZSBnYXJiYWdlIGNv
bGxlY3Rvci4KICAgICAgICAgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciogbV9maXJzdFdlYWtSZWZl
cmVuY2VIYXJ2ZXN0ZXI7CiAgICAgICAgIApAQCAtMTQ1LDggKzEzNCwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc2l6ZV90IG1fdmlzaXRDb3VudDsKICAgICB9OwogCi0gICAgaW5saW5l
IE1hcmtTdGFjazo6TWFya1N0YWNrKHZvaWQqIGpzQXJyYXlWUHRyKQorICAgIGlubGluZSBNYXJr
U3RhY2s6Ok1hcmtTdGFjayh2b2lkKiBqc0FycmF5VlB0ciwgdm9pZCoganNGaW5hbE9iamVjdFZQ
dHIsIHZvaWQqIGpzU3RyaW5nVlB0cikKICAgICAgICAgOiBtX2pzQXJyYXlWUHRyKGpzQXJyYXlW
UHRyKQorICAgICAgICAsIG1fanNGaW5hbE9iamVjdFZQdHIoanNGaW5hbE9iamVjdFZQdHIpCisg
ICAgICAgICwgbV9qc1N0cmluZ1ZQdHIoanNTdHJpbmdWUHRyKQogICAgICAgICAsIG1fZmlyc3RX
ZWFrUmVmZXJlbmNlSGFydmVzdGVyKDApCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAs
IG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKGZhbHNlKQpAQCAtMTU4LDggKzE0
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgaW5saW5lIE1hcmtTdGFjazo6fk1hcmtTdGFj
aygpCiAgICAgewotICAgICAgICBBU1NFUlQobV9tYXJrU2V0cy5pc0VtcHR5KCkpOwotICAgICAg
ICBBU1NFUlQobV92YWx1ZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKG1fc3RhY2suaXNF
bXB0eSgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgYm9vbCBNYXJrU3RhY2s6OmFkZE9wYXF1ZVJv
b3Qodm9pZCogcm9vdCkKQEAgLTE3NywxMyArMTY3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHJldHVybiBtX29wYXF1ZVJvb3RzLnNpemUoKTsKICAgICB9CiAKLSAgICBpbmxpbmUgTWFy
a1NldDo6TWFya1NldChKU1ZhbHVlKiB2YWx1ZXMsIEpTVmFsdWUqIGVuZCkKLSAgICAgICAgICAg
IDogbV92YWx1ZXModmFsdWVzKQotICAgICAgICAgICAgLCBtX2VuZChlbmQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVCh2YWx1ZXMpOwotICAgICAgICB9Ci0KICAgICBpbmxpbmUgdm9p
ZCogTWFya1N0YWNrOjphbGxvY2F0ZVN0YWNrKHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAg
cmV0dXJuIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemUpOwpAQCAtMTk0LDExNyAr
MTc3LDYxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXRB
bmRSZWxlYXNlKGFkZHIsIHNpemUpOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBpbmxpbmUgTWFya1N0YWNrQXJyYXk8VD46Ok1hcmtTdGFja0FycmF5KCkKLSAgICAgICAgOiBt
X3RvcCgwKQotICAgICAgICAsIG1fYWxsb2NhdGVkKHBhZ2VTaXplKCkpCi0gICAgICAgICwgbV9j
YXBhY2l0eShtX2FsbG9jYXRlZCAvIHNpemVvZihUKSkKLSAgICB7Ci0gICAgICAgIG1fZGF0YSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KE1hcmtTdGFjazo6YWxsb2NhdGVTdGFjayhtX2FsbG9jYXRl
ZCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgTWFya1N0YWNr
QXJyYXk8VD46On5NYXJrU3RhY2tBcnJheSgpCi0gICAgewotICAgICAgICBNYXJrU3RhY2s6OnJl
bGVhc2VTdGFjayhtX2RhdGEsIG1fYWxsb2NhdGVkKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgTWFya1N0YWNrQXJyYXk8VD46OmV4cGFuZCgpCi0gICAg
ewotICAgICAgICBzaXplX3Qgb2xkQWxsb2NhdGlvbiA9IG1fYWxsb2NhdGVkOwotICAgICAgICBt
X2FsbG9jYXRlZCAqPSAyOwotICAgICAgICBtX2NhcGFjaXR5ID0gbV9hbGxvY2F0ZWQgLyBzaXpl
b2YoVCk7Ci0gICAgICAgIHZvaWQqIG5ld0RhdGEgPSBNYXJrU3RhY2s6OmFsbG9jYXRlU3RhY2so
bV9hbGxvY2F0ZWQpOwotICAgICAgICBtZW1jcHkobmV3RGF0YSwgbV9kYXRhLCBvbGRBbGxvY2F0
aW9uKTsKLSAgICAgICAgTWFya1N0YWNrOjpyZWxlYXNlU3RhY2sobV9kYXRhLCBvbGRBbGxvY2F0
aW9uKTsKLSAgICAgICAgbV9kYXRhID0gcmVpbnRlcnByZXRfY2FzdDxUKj4obmV3RGF0YSk7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIE1hcmtTdGFja0Fy
cmF5PFQ+OjphcHBlbmQoY29uc3QgVCYgdikKKyAgICBpbmxpbmUgdm9pZCBNYXJrU3RhY2tBcnJh
eTo6YXBwZW5kKGNvbnN0IEpTQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIGlmIChtX3RvcCA9
PSBtX2NhcGFjaXR5KQogICAgICAgICAgICAgZXhwYW5kKCk7Ci0gICAgICAgIG1fZGF0YVttX3Rv
cCsrXSA9IHY7CisgICAgICAgIG1fZGF0YVttX3RvcCsrXSA9IGNlbGw7CiAgICAgfQogCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUIE1hcmtTdGFja0FycmF5PFQ+OjpyZW1vdmVM
YXN0KCkKKyAgICBpbmxpbmUgY29uc3QgSlNDZWxsKiBNYXJrU3RhY2tBcnJheTo6cmVtb3ZlTGFz
dCgpCiAgICAgewogICAgICAgICBBU1NFUlQobV90b3ApOwogICAgICAgICByZXR1cm4gbV9kYXRh
Wy0tbV90b3BdOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IFQmIE1hcmtTdGFja0FycmF5PFQ+OjpsYXN0KCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrU3RhY2tB
cnJheTo6aXNFbXB0eSgpCiAgICAgewotICAgICAgICBBU1NFUlQobV90b3ApOwotICAgICAgICBy
ZXR1cm4gbV9kYXRhW21fdG9wIC0gMV07CisgICAgICAgIHJldHVybiAhbV90b3A7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIE1hcmtTdGFja0FycmF5PFQ+
Ojppc0VtcHR5KCkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoSlNW
YWx1ZSogc2xvdCwgc2l6ZV90IGNvdW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdG9wID09
IDA7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBzaXplX3QgTWFy
a1N0YWNrQXJyYXk8VD46OnNpemUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdG9wOwotICAg
IH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBNYXJrU3RhY2tBcnJh
eTxUPjo6c2hyaW5rQWxsb2NhdGlvbihzaXplX3Qgc2l6ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChzaXplIDw9IG1fYWxsb2NhdGVkKTsKLSAgICAgICAgQVNTRVJUKGlzUGFnZUFsaWduZWQoc2l6
ZSkpOwotICAgICAgICBpZiAoc2l6ZSA9PSBtX2FsbG9jYXRlZCkKLSAgICAgICAgICAgIHJldHVy
bjsKLSNpZiBPUyhXSU5ET1dTKQotICAgICAgICAvLyBXZSBjYW5ub3QgcmVsZWFzZSBhIHBhcnQg
b2YgYSByZWdpb24gd2l0aCBWaXJ0dWFsRnJlZS4gIFRvIGdldCBhcm91bmQgdGhpcywKLSAgICAg
ICAgLy8gd2UnbGwgcmVsZWFzZSB0aGUgZW50aXJlIHJlZ2lvbiBhbmQgcmVhbGxvY2F0ZSB0aGUg
c2l6ZSB0aGF0IHdlIHdhbnQuCi0gICAgICAgIE1hcmtTdGFjazo6cmVsZWFzZVN0YWNrKG1fZGF0
YSwgbV9hbGxvY2F0ZWQpOwotICAgICAgICBtX2RhdGEgPSByZWludGVycHJldF9jYXN0PFQqPihN
YXJrU3RhY2s6OmFsbG9jYXRlU3RhY2soc2l6ZSkpOwotI2Vsc2UKLSAgICAgICAgTWFya1N0YWNr
OjpyZWxlYXNlU3RhY2socmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9kYXRhKSArIHNpemUsIG1f
YWxsb2NhdGVkIC0gc2l6ZSk7Ci0jZW5kaWYKLSAgICAgICAgbV9hbGxvY2F0ZWQgPSBzaXplOwot
ICAgICAgICBtX2NhcGFjaXR5ID0gbV9hbGxvY2F0ZWQgLyBzaXplb2YoVCk7Ci0gICAgfQotCi0g
ICAgaW5saW5lIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoSlNWYWx1ZSogc2xvdCwgc2l6ZV90IGNv
dW50KQotICAgIHsKLSAgICAgICAgaWYgKCFjb3VudCkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgbV92aXNpdENvdW50ICs9IGNvdW50OwotI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQot
ICAgICAgICB2YWxpZGF0ZVNldChzbG90LCBjb3VudCk7Ci0jZW5kaWYKLSAgICAgICAgbV9tYXJr
U2V0cy5hcHBlbmQoTWFya1NldChzbG90LCBzbG90ICsgY291bnQpKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVlJiB2YWx1
ZSA9IHNsb3RbaV07CisgICAgICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgaW50ZXJuYWxBcHBlbmQodmFsdWUpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBpbmxpbmUgdm9pZCBNYXJrU3Rh
Y2s6OmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcihUKiogc2xvdCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChzbG90KTsKLSAgICAgICAgSlNDZWxsKiB2YWx1ZSA9ICpzbG90OwotICAgICAgICBpZiAo
dmFsdWUpCi0gICAgICAgICAgICBpbnRlcm5hbEFwcGVuZCh2YWx1ZSk7CisgICAgICAgIEpTQ2Vs
bCogY2VsbCA9ICpzbG90OworICAgICAgICBpZiAoY2VsbCkKKyAgICAgICAgICAgIGludGVybmFs
QXBwZW5kKGNlbGwpOwogICAgIH0KICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0
YWNrOjphcHBlbmQoSlNWYWx1ZSogdmFsdWUpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIE1hcmtT
dGFjazo6YXBwZW5kKEpTVmFsdWUqIHNsb3QpCiAgICAgewotICAgICAgICBBU1NFUlQodmFsdWUp
OwotICAgICAgICBpbnRlcm5hbEFwcGVuZCgqdmFsdWUpOworICAgICAgICBBU1NFUlQoc2xvdCk7
CisgICAgICAgIGludGVybmFsQXBwZW5kKCpzbG90KTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoSlNDZWxsKiogdmFsdWUpCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKEpTQ2VsbCoqIHNsb3QpCiAgICAgewotICAgICAg
ICBBU1NFUlQodmFsdWUpOwotICAgICAgICBpbnRlcm5hbEFwcGVuZCgqdmFsdWUpOworICAgICAg
ICBBU1NFUlQoc2xvdCk7CisgICAgICAgIGludGVybmFsQXBwZW5kKCpzbG90KTsKICAgICB9CiAK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjppbnRlcm5hbEFwcGVuZChKU1ZhbHVl
IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHZhbHVlKTsKLSNpZiBFTkFCTEUoR0NfVkFM
SURBVElPTikKLSAgICAgICAgdmFsaWRhdGVWYWx1ZSh2YWx1ZSk7Ci0jZW5kaWYKLSAgICAgICAg
aWYgKHZhbHVlLmlzQ2VsbCgpKQotICAgICAgICAgICAgaW50ZXJuYWxBcHBlbmQodmFsdWUuYXND
ZWxsKCkpOworICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpbnRlcm5hbEFwcGVuZCh2YWx1ZS5hc0NlbGwoKSk7CiAgICAgfQogCiAgICAg
Y2xhc3MgU2xvdFZpc2l0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90
VmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RW
aXNpdG9yLmgJKHJldmlzaW9uIDk3NTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U2xvdFZpc2l0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTcgKzMzLDE0IEBAIG5hbWVzcGFj
ZSBKU0MgewogY2xhc3MgU2xvdFZpc2l0b3IgOiBwdWJsaWMgTWFya1N0YWNrIHsKICAgICBmcmll
bmQgY2xhc3MgSGVhcFJvb3RWaXNpdG9yOwogcHVibGljOgotICAgIFNsb3RWaXNpdG9yKHZvaWQq
IGpzQXJyYXlWUHRyKTsKKyAgICBTbG90VmlzaXRvcih2b2lkKiBqc0FycmF5VlB0ciwgdm9pZCog
anNGaW5hbE9iamVjdFZQdHIsIHZvaWQqIGpzU3RyaW5nVlB0cik7CiAKICAgICB2b2lkIGRyYWlu
KCk7CiAgICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKLSAgICAKLXByaXZhdGU6Ci0g
ICAgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCopOwogfTsKIAotaW5saW5lIFNsb3RWaXNpdG9y
OjpTbG90VmlzaXRvcih2b2lkKiBqc0FycmF5VlB0cikKLSAgICA6IE1hcmtTdGFjayhqc0FycmF5
VlB0cikKK2lubGluZSBTbG90VmlzaXRvcjo6U2xvdFZpc2l0b3Iodm9pZCoganNBcnJheVZQdHIs
IHZvaWQqIGpzRmluYWxPYmplY3RWUHRyLCB2b2lkKiBqc1N0cmluZ1ZQdHIpCisgICAgOiBNYXJr
U3RhY2soanNBcnJheVZQdHIsIGpzRmluYWxPYmplY3RWUHRyLCBqc1N0cmluZ1ZQdHIpCiB7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZp
c2lvbiA5NzU4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MTMsNyArOTEzLDE5IEBAIHZvaWQgSlNBcnJheTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsICZzX2luZm8pOwogICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5n
RmxhZyk7CiAgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgdGhpc09iamVjdC0+dmlzaXRDaGlsZHJlbkRp
cmVjdCh2aXNpdG9yKTsKKworICAgIEpTTm9uRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CisgICAgCisgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gdGhp
c09iamVjdC0+bV9zdG9yYWdlOworCisgICAgdW5zaWduZWQgdXNlZFZlY3Rvckxlbmd0aCA9IHN0
ZDo6bWluKHN0b3JhZ2UtPm1fbGVuZ3RoLCB0aGlzT2JqZWN0LT5tX3ZlY3Rvckxlbmd0aCk7Cisg
ICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMoc3RvcmFnZS0+bV92ZWN0b3IsIHVzZWRWZWN0b3JMZW5n
dGgpOworCisgICAgaWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IHN0b3JhZ2UtPm1fc3Bh
cnNlVmFsdWVNYXApIHsKKyAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IgZW5k
ID0gbWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRv
ciBpdCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJml0LT5zZWNvbmQpOworICAgIH0KIH0KIAogc3RhdGljIGludCBjb21wYXJlTnVt
YmVyc0ZvclFTb3J0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiA5NzU4MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3
LDggKzE1Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBpbmxpbmUgdm9pZCB2aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RWaXNpdG9yJik7
Ci0KICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBzdG9yYWdlT2Zmc2V0KCkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0FycmF5LCBtX3N0b3JhZ2UpOwpA
QCAtMTY5LDYgKzE2Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihKU0FycmF5LCBtX3ZlY3Rvckxlbmd0aCk7CiAgICAgICAgIH0KIAorICAg
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdz
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0VmlydHVhbChFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpAQCAtMTc5
LDcgKzE3OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
UHJvcGVydHlWaXJ0dWFsKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAgICAg
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRPd25Qcm9wZXJ0eU5h
bWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUg
PSBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKLSAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgICAgIHZvaWQqIHN1YmNsYXNz
RGF0YSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFN1YmNsYXNzRGF0YSh2b2lkKik7CkBAIC0y
MTgsMjIgKzIxNyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSBib29sIGlzSlNBcnJh
eShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTQ2VsbCogY2VsbCkgeyByZXR1cm4gY2VsbC0+
dnB0cigpID09IGdsb2JhbERhdGEtPmpzQXJyYXlWUHRyOyB9CiAgICAgaW5saW5lIGJvb2wgaXNK
U0FycmF5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNWYWx1ZSB2KSB7IHJldHVybiB2Lmlz
Q2VsbCgpICYmIGlzSlNBcnJheShnbG9iYWxEYXRhLCB2LmFzQ2VsbCgpKTsgfQogCi0gICAgaW5s
aW5lIHZvaWQgSlNBcnJheTo6dmlzaXRDaGlsZHJlbkRpcmVjdChTbG90VmlzaXRvciYgdmlzaXRv
cikKLSAgICB7Ci0gICAgICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuRGlyZWN0KHZpc2l0b3Ip
OwotICAgICAgICAKLSAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gbV9zdG9yYWdlOwot
Ci0gICAgICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSBzdGQ6Om1pbihzdG9yYWdlLT5t
X2xlbmd0aCwgbV92ZWN0b3JMZW5ndGgpOwotICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhz
dG9yYWdlLT5tX3ZlY3RvciwgdXNlZFZlY3Rvckxlbmd0aCk7Ci0KLSAgICAgICAgaWYgKFNwYXJz
ZUFycmF5VmFsdWVNYXAqIG1hcCA9IHN0b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXApIHsKLSAgICAg
ICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC0+ZW5kKCk7Ci0g
ICAgICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQo
Jml0LT5zZWNvbmQpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gUnVsZSBmcm9tIEVDTUEg
MTUuMiBhYm91dCB3aGF0IGFuIGFycmF5IGluZGV4IGlzLgogICAgIC8vIE11c3QgZXhhY3RseSBt
YXRjaCBzdHJpbmcgZm9ybSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyLCBhbmQgYmUgbGVzcyB0aGFu
IDJeMzIgLSAxLgogICAgIGlubGluZSB1bnNpZ25lZCBJZGVudGlmaWVyOjp0b0FycmF5SW5kZXgo
Ym9vbCYgb2spIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCShyZXZpc2lvbiA5NzU4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksMTMgQEAgdm9pZCBK
U09iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbAogICAgIHZpc2l0b3IubV9pc0NoZWNr
aW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSBmYWxzZTsKICNlbmRpZgogCi0gICAgdGhpc09i
amVjdC0+dmlzaXRDaGlsZHJlbkRpcmVjdCh2aXNpdG9yKTsKKyAgICBKU0NlbGw6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFn
ZSA9IHRoaXNPYmplY3QtPnByb3BlcnR5U3RvcmFnZSgpOworICAgIHNpemVfdCBzdG9yYWdlU2l6
ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CisgICAg
dmlzaXRvci5hcHBlbmRWYWx1ZXMoc3RvcmFnZSwgc3RvcmFnZVNpemUpOworICAgIGlmICh0aGlz
T2JqZWN0LT5tX2luaGVyaXRvcklEKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9pbmhlcml0b3JJRCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdmlzaXRvci5tX2lzQ2hl
Y2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHdhc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtW
aW9sYXRpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJ
KHJldmlzaW9uIDk3NTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKLSAgICAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHZpc2l0Q2hpbGRyZW5EaXJlY3QoU2xvdFZpc2l0b3ImKTsKICAgICAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAg
ICAgIHZpcnR1YWwgVVN0cmluZyBjbGFzc05hbWUoKSBjb25zdDsKQEAgLTgzNCwxNyArODMzLDYg
QEAgaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYwogICAgIGFzQ2VsbCgp
LT5wdXRWaXJ0dWFsKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogfQogCi1BTFdBWVNfSU5M
SU5FIHZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW5EaXJlY3QoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCi17Ci0gICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXMsIHZpc2l0b3IpOwotCi0gICAg
UHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsKLSAgICBzaXplX3Qg
c3RvcmFnZVNpemUgPSBzdHJ1Y3R1cmUoKS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwotICAgIHZp
c2l0b3IuYXBwZW5kVmFsdWVzKHN0b3JhZ2UsIHN0b3JhZ2VTaXplKTsKLSAgICBpZiAobV9pbmhl
cml0b3JJRCkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1faW5oZXJpdG9ySUQpOwotfQotCiAv
LyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQUxX
QVlTX0lOTElORSBKU09iamVjdCogUmVnaXN0ZXI6OmZ1bmN0aW9uKCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiA5NzU4MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNTUsMTIgKzM1NSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgTWFya1N0YWNrOjppbnRlcm5hbEFwcGVuZChKU0NlbGwqIGNlbGwpCiAgICAgewog
ICAgICAgICBBU1NFUlQoIW1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKTsKLSAg
ICAgICAgQVNTRVJUKGNlbGwpOworI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQorICAgICAgICB2
YWxpZGF0ZShjZWxsKTsKKyNlbmRpZgogICAgICAgICBtX3Zpc2l0Q291bnQrKzsKICAgICAgICAg
aWYgKEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQoY2VsbCkpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKSAmJiBjZWxsLT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS50eXBlKCkgPj0gQ29tcG91bmRUeXBlKQotICAgICAgICAgICAgbV92YWx1ZXMuYXBwZW5k
KGNlbGwpOworICAgICAgICBtX3N0YWNrLmFwcGVuZChjZWxsKTsKICAgICB9CiAKICAgICBpbmxp
bmUgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpIYXNoOjpLZXkgU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlOjprZXlGb3JXZWFrR0NNYXBGaW5hbGl6ZXIodm9pZCosIFN0cnVjdHVyZSogc3RydWN0
dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVy
LmgJKHJldmlzaW9uIDk3NTgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3Jp
dGVCYXJyaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMSwxNCArMjIxLDkgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgTWFya1N0YQogICAgIGludGVybmFsQXBwZW5kKCpzbG90
LT5zbG90KCkpOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrU3RhY2s6OmFwcGVuZFZhbHVlcyhXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+KiBiYXJyaWVycywgc2l6ZV90IGNvdW50KQorQUxXQVlTX0lO
TElORSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kVmFsdWVzKFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qIGJhcnJpZXJzLCBzaXplX3QgY291bnQpCiB7Ci0gICAgSlNWYWx1ZSogdmFsdWVzID0gYmFy
cmllcnMtPnNsb3QoKTsKLSNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKLSAgICB2YWxpZGF0ZVNl
dCh2YWx1ZXMsIGNvdW50KTsKLSNlbmRpZgotICAgIGlmIChjb3VudCkKLSAgICAgICAgbV9tYXJr
U2V0cy5hcHBlbmQoTWFya1NldCh2YWx1ZXMsIHZhbHVlcyArIGNvdW50KSk7CisgICAgYXBwZW5k
KGJhcnJpZXJzLT5zbG90KCksIGNvdW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>
<flag name="review"
          id="109107"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="109114"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>