<?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>120695</bug_id>
          
          <creation_ts>2013-09-04 12:59:05 -0700</creation_ts>
          <short_desc>Refining the StackIterator callback interface</short_desc>
          <delta_ts>2013-09-04 15:38:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>eflews.bot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>924566</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-09-04 12:59:05 -0700</bug_when>
    <thetext>Addressing Geoff&apos;s feedback in https://bugs.webkit.org/show_bug.cgi?id=120564#c17.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924570</commentid>
    <comment_count>1</comment_count>
      <attachid>210487</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-09-04 13:16:59 -0700</bug_when>
    <thetext>Created attachment 210487
the patch.

This patch has run the javascriptcore and layout tests with no regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924579</commentid>
    <comment_count>2</comment_count>
      <attachid>210487</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-09-04 13:42:49 -0700</bug_when>
    <thetext>Comment on attachment 210487
the patch.

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

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:292
&gt; +            StackIterator iter(this);
&gt; +            iter.iterate&lt;Functor&gt;(functor);

Why do we still need to instantiate this object here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924599</commentid>
    <comment_count>3</comment_count>
      <attachid>210487</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-04 14:04:42 -0700</bug_when>
    <thetext>Comment on attachment 210487
the patch.

Attachment 210487 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1693729</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924620</commentid>
    <comment_count>4</comment_count>
      <attachid>210487</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-09-04 14:53:22 -0700</bug_when>
    <thetext>Comment on attachment 210487
the patch.

After an in-person conversation:

This patch is an improvement, so I&apos;m going to mark it r+.

Please follow up with a rename from StackIterator to StackVisitor, to avoid confusion with the C++ term &quot;iterator&quot;.

I don&apos;t think we&apos;ve achieved the callback style of implementation that we originally discussed, but I&apos;m not sure it&apos;s super important to get there at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924646</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-09-04 15:33:56 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 210487 [details])
&gt; Attachment 210487 [details] did not pass efl-wk2-ews (efl-wk2):
&gt; Output: http://webkit-queues.appspot.com/results/1693729

The EFL WK2 build failure does not look like it&apos;s related to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924647</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-09-04 15:35:11 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r155075: &lt;http://trac.webkit.org/r155075&gt;.

Follow up patch to rename StackIterator to StackVisitor to come shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924648</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-04 15:38:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 210487 [details])
&gt; After an in-person conversation:
&gt; 
&gt; This patch is an improvement, so I&apos;m going to mark it r+.
&gt; 
&gt; Please follow up with a rename from StackIterator to StackVisitor, to avoid confusion with the C++ term &quot;iterator&quot;.
&gt; 
&gt; I don&apos;t think we&apos;ve achieved the callback style of implementation that we originally discussed, but I&apos;m not sure it&apos;s super important to get there at this point.

I like what we have now.  It achieves the goal of allowing the iterator implementation to change more flexibly without having to make changes to its clients.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210487</attachid>
            <date>2013-09-04 13:16:59 -0700</date>
            <delta_ts>2013-09-04 14:53:22 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-120695.patch</filename>
            <type>text/plain</type>
            <size>18714</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1MDU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDEzLTA5LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZpbmluZyB0aGUgU3RhY2tJdGVyYXRvciBjYWxsYmFjayBpbnRlcmZhY2UuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA2OTUuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIENhbGxGcmFt
ZTo6aXRlcmF0ZSgpIHdoaWNoIGluc3RhbnRpYXRlcyBhIFN0YWNrSXRlcmF0b3IgYW5kCisgICAg
ICAgIGludm9rZSBpdHMgaXRlcmF0ZSgpIG1ldGhvZCB3aXRoIHRoZSBwYXNzZWQgaW4gZnVuY3Rv
ci4gVGhlIG9ubHkgcGxhY2UKKyAgICAgICAgd2hlcmUgdGhlIGNsaWVudCBjb2RlIGdldHMgYWNj
ZXNzIHRvIHRoZSBTdGFja0l0ZXJhdG9yIG5vdyBpcyBhcyBhbgorICAgICAgICBhcmd1bWVudCB0
byB0aGUgY2xpZW50J3MgZnVuY3Rvci4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3Bw
OgorICAgICAgICAoSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Oml0ZXJhdGUpOgorICAgICAgICAqIGludGVycHJldGVy
L0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3Rl
cnMpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZSk6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp1bndpbmQpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNr
SXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpTdGFja0l0ZXJhdG9yOjpTdGFja0l0ZXJhdG9y
KToKKyAgICAgICAgKERlYnVnUHJpbnRGcmFtZUZ1bmN0b3I6OkRlYnVnUHJpbnRGcmFtZUZ1bmN0
b3IpOgorICAgICAgICAoRGVidWdQcmludEZyYW1lRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAg
ICAgIChkZWJ1Z1ByaW50Q2FsbEZyYW1lKToKKyAgICAgICAgKGRlYnVnUHJpbnRTdGFjayk6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpTdGFj
a0l0ZXJhdG9yOjppdGVyYXRlKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rp
b25KU0NTdGFjayk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OmFkZFBhcmVudEZvckNvbnNvbGVTdGFydCk6
CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6cmV0cmll
dmVBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUNhbGxlckZ1bmN0aW9uRnVuY3Rv
cjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OnJldHJpZXZlQ2FsbGVyRnVuY3Rpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpnbG9iYWxGdW5jUHJvdG9HZXR0ZXIpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJv
dG9TZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKToKKwogMjAxMy0wOS0w
NCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFT
U0VSVCBpbiBNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UgaXMgd3JvbmcKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxNTUwNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ5LDggKzM0OSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25KU0MKICAgICB0cmFjZS5hcHBlbmRMaXRlcmFs
KCItLT4gU3RhY2sgdHJhY2U6XG4iKTsKIAogICAgIEZ1bmN0aW9uSlNDU3RhY2tGdW5jdG9yIGZ1
bmN0b3IodHJhY2UpOwotICAgIFN0YWNrSXRlcmF0b3IgaXRlciA9IGV4ZWMtPmJlZ2luKCk7Ci0g
ICAgaXRlci5pdGVyYXRlKGZ1bmN0b3IpOworICAgIGV4ZWMtPml0ZXJhdGUoZnVuY3Rvcik7CiAg
ICAgZnByaW50ZihzdGRlcnIsICIlcyIsIHRyYWNlLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHJldmlzaW9uIDE1NTA1
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjc0LDggKzI3NCw3IEBAIEpTU3RyaW5nUmVmIEpTQ29udGV4dENyZWF0ZUJh
Y2t0cmFjZShKU0MKIAogICAgIEFTU0VSVChtYXhTdGFja1NpemUpOwogICAgIEJhY2t0cmFjZUZ1
bmN0b3IgZnVuY3RvcihidWlsZGVyLCBtYXhTdGFja1NpemUpOwotICAgIFN0YWNrSXRlcmF0b3Ig
aXRlciA9IGZyYW1lLT5iZWdpbigpOwotICAgIGl0ZXIuaXRlcmF0ZShmdW5jdG9yKTsKKyAgICBm
cmFtZS0+aXRlcmF0ZShmdW5jdG9yKTsKIAogICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3Jl
YXRlKGJ1aWxkZXIudG9TdHJpbmcoKSkubGVha1JlZigpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDE1NTA1
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NywxMCArOTcsNCBAQCBSZWdpc3RlciogQ2FsbEZyYW1lOjpmcmFt
ZUV4dGVudEludGVybmFsCiAgICAgcmV0dXJuIHJlZ2lzdGVycygpICsgY29kZUJsb2NrLT5tX251
bUNhbGxlZVJlZ2lzdGVyczsKIH0KIAotU3RhY2tJdGVyYXRvciBDYWxsRnJhbWU6OmJlZ2luKFN0
YWNrSXRlcmF0b3I6OkZyYW1lRmlsdGVyIGZpbHRlcikKLXsKLSAgICBBU1NFUlQodGhpcyk7Ci0g
ICAgcmV0dXJuIFN0YWNrSXRlcmF0b3IodGhpcywgZmlsdGVyKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZS5oCShyZXZpc2lvbiAxNTUwNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Myw3ICsyODMsMTQgQEAgbmFt
ZXNwYWNlIEpTQyAgewogI2VuZGlmCiAgICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWVOb0Zs
YWdzKCkgeyByZXR1cm4gY2FsbGVyRnJhbWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKTsg
fQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0YWNrSXRlcmF0b3IgYmVnaW4oU3RhY2tJ
dGVyYXRvcjo6RnJhbWVGaWx0ZXIgPSAwKTsKKyAgICAgICAgLy8gQ2FsbEZyYW1lOjppdGVyYXRl
KCkgZXhwZWN0cyBhIEZ1bmN0b3IgdGhhdCBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgbWV0aG9k
OgorICAgICAgICAvLyAgICAgU3RhY2tJdGVyYXRvcjo6U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tJ
dGVyYXRvciYpOworCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0
ZXJhdGUoRnVuY3RvciYgZnVuY3RvcikKKyAgICAgICAgeworICAgICAgICAgICAgU3RhY2tJdGVy
YXRvciBpdGVyKHRoaXMpOworICAgICAgICAgICAgaXRlci5pdGVyYXRlPEZ1bmN0b3I+KGZ1bmN0
b3IpOworICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgY29uc3QgaW50
cHRyX3QgSG9zdENhbGxGcmFtZUZsYWcgPSAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxNTUwNTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzksOCArMzM5LDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lz
dGVycyhDYWxsRnJhbQogI2VuZGlmCiAKICAgICBEdW1wUmVnaXN0ZXJGdW5jdG9yIGZ1bmN0b3Io
aXQpOwotICAgIFN0YWNrSXRlcmF0b3IgaXRlciA9IGNhbGxGcmFtZS0+YmVnaW4oKTsKLSAgICBp
dGVyLml0ZXJhdGUoZnVuY3Rvcik7CisgICAgY2FsbEZyYW1lLT5pdGVyYXRlKGZ1bmN0b3IpOwog
CiAgICAgZGF0YUxvZ0YoIltDb2RlQmxvY2tdICAgICAgICAgICAgICAgIHwgJTEwcCB8ICVwIFxu
IiwgaXQsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpOwogICAgICsraXQ7CkBAIC01NTIsOCArNTUx
LDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZShWZWN0b3I8UwogICAgICAgICBy
ZXR1cm47CiAKICAgICBHZXRTdGFja1RyYWNlRnVuY3RvciBmdW5jdG9yKHZtLCByZXN1bHRzLCBt
YXhTdGFja1NpemUpOwotICAgIFN0YWNrSXRlcmF0b3IgaXRlciA9IGNhbGxGcmFtZS0+YmVnaW4o
KTsKLSAgICBpdGVyLml0ZXJhdGUoZnVuY3Rvcik7CisgICAgY2FsbEZyYW1lLT5pdGVyYXRlKGZ1
bmN0b3IpOwogfQogCiBKU1N0cmluZyogSW50ZXJwcmV0ZXI6OnN0YWNrVHJhY2VBc1N0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIFZlY3RvcjxTdGFja0ZyYW1lPiBzdGFja1RyYWNlKQpAQCAtNjQwLDgg
KzYzOCw3IEBAIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnUKICAgICBW
TSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CiAgICAgQVNTRVJUKGNhbGxGcmFtZSA9PSB2bS50b3BD
YWxsRnJhbWUpOwogICAgIFVud2luZEZ1bmN0b3IgZnVuY3RvcihjYWxsRnJhbWUsIGV4Y2VwdGlv
blZhbHVlLCBpc1Rlcm1pbmF0aW9uLCBjb2RlQmxvY2ssIGhhbmRsZXIpOwotICAgIFN0YWNrSXRl
cmF0b3IgaXRlciA9IGNhbGxGcmFtZS0+YmVnaW4oKTsKLSAgICBpdGVyLml0ZXJhdGUoZnVuY3Rv
cik7CisgICAgY2FsbEZyYW1lLT5pdGVyYXRlKGZ1bmN0b3IpOwogICAgIGlmICghaGFuZGxlcikK
ICAgICAgICAgcmV0dXJuIDA7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja0l0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU3RhY2tJdGVyYXRvci5jcHAJKHJldmlzaW9uIDE1NTA1NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja0l0ZXJhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMzMgKzM1LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1TdGFja0l0
ZXJhdG9yOjpTdGFja0l0ZXJhdG9yKENhbGxGcmFtZSogc3RhcnRGcmFtZSwgU3RhY2tJdGVyYXRv
cjo6RnJhbWVGaWx0ZXIgZmlsdGVyKQorU3RhY2tJdGVyYXRvcjo6U3RhY2tJdGVyYXRvcihDYWxs
RnJhbWUqIHN0YXJ0RnJhbWUpCiAgICAgOiBtX3N0YXJ0RnJhbWUoc3RhcnRGcmFtZSkKLSAgICAs
IG1fZmlsdGVyKGZpbHRlcikKIHsKICAgICByZXNldEl0ZXJhdG9yKCk7CiB9CiAKLXNpemVfdCBT
dGFja0l0ZXJhdG9yOjpudW1iZXJPZkZyYW1lcygpCi17Ci0gICAgaW50IHNhdmVkRnJhbWVJbmRl
eCA9IG1fZnJhbWUuaW5kZXgoKTsKLSAgICByZXNldEl0ZXJhdG9yKCk7Ci0gICAgd2hpbGUgKG1f
ZnJhbWUuY2FsbEZyYW1lKCkpCi0gICAgICAgIGdvdG9OZXh0RnJhbWVXaXRoRmlsdGVyKCk7Ci0g
ICAgc2l6ZV90IG51bWJlck9mRnJhbWVzID0gbV9mcmFtZS5pbmRleCgpOwotCi0gICAgcmVzZXRJ
dGVyYXRvcigpOwotICAgIGdvdG9GcmFtZUF0SW5kZXgoc2F2ZWRGcmFtZUluZGV4KTsKLQotICAg
IHJldHVybiBudW1iZXJPZkZyYW1lczsKLX0KLQotdm9pZCBTdGFja0l0ZXJhdG9yOjpnb3RvRnJh
bWVBdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAgICB3aGlsZSAobV9mcmFtZS5jYWxsRnJhbWUo
KSAmJiAobV9mcmFtZS5pbmRleCgpICE9IGluZGV4KSkKLSAgICAgICAgZ290b05leHRGcmFtZVdp
dGhGaWx0ZXIoKTsKLX0KLQogdm9pZCBTdGFja0l0ZXJhdG9yOjpnb3RvTmV4dEZyYW1lKCkKIHsK
ICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTc1LDE3ICs1NCw2IEBAIHZvaWQgU3RhY2tJdGVyYXRv
cjo6Z290b05leHRGcmFtZSgpCiAgICAgICAgIHJlYWRGcmFtZShtX2ZyYW1lLmNhbGxlckZyYW1l
KCkpOwogfQogCi12b2lkIFN0YWNrSXRlcmF0b3I6OmdvdG9OZXh0RnJhbWVXaXRoRmlsdGVyKCkK
LXsKLSAgICBBU1NFUlQobV9mcmFtZS5jYWxsRnJhbWUoKSk7Ci0gICAgd2hpbGUgKG1fZnJhbWUu
Y2FsbEZyYW1lKCkpIHsKLSAgICAgICAgZ290b05leHRGcmFtZSgpOwotICAgICAgICBpZiAoIW1f
ZnJhbWUuY2FsbEZyYW1lKCkgfHwgIW1fZmlsdGVyIHx8ICFtX2ZpbHRlcigmbV9mcmFtZSkpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgbV9mcmFtZS5tX2luZGV4Kys7Ci19Ci0KIHZv
aWQgU3RhY2tJdGVyYXRvcjo6cmVzZXRJdGVyYXRvcigpCiB7CiAgICAgbV9mcmFtZS5tX2luZGV4
ID0gMDsKQEAgLTQ1NSwyOSArNDIzLDQyIEBAIHVzaW5nIEpTQzo6U3RhY2tJdGVyYXRvcjsKIHZv
aWQgZGVidWdQcmludENhbGxGcmFtZShKU0M6OkNhbGxGcmFtZSopOwogdm9pZCBkZWJ1Z1ByaW50
U3RhY2soSlNDOjpDYWxsRnJhbWUqIHRvcENhbGxGcmFtZSk7CiAKLXZvaWQgZGVidWdQcmludENh
bGxGcmFtZShKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lKQotewotICAgIGlmICghY2FsbEZyYW1l
KQotICAgICAgICByZXR1cm47Ci0gICAgU3RhY2tJdGVyYXRvciBpdGVyID0gY2FsbEZyYW1lLT5i
ZWdpbigpOwotICAgIGl0ZXItPnByaW50KDIpOwotfQotCi1jbGFzcyBEZWJ1Z1ByaW50U3RhY2tG
dW5jdG9yIHsKK2NsYXNzIERlYnVnUHJpbnRGcmFtZUZ1bmN0b3IgewogcHVibGljOgorICAgIGVu
dW0gQWN0aW9uIHsKKyAgICAgICAgUHJpbnRPbmUsCisgICAgICAgIFByaW50QWxsCisgICAgfTsK
KworICAgIERlYnVnUHJpbnRGcmFtZUZ1bmN0b3IoQWN0aW9uIGFjdGlvbikKKyAgICAgICAgOiBt
X2FjdGlvbihhY3Rpb24pCisgICAgeworICAgIH0KKwogICAgIFN0YWNrSXRlcmF0b3I6OlN0YXR1
cyBvcGVyYXRvcigpKFN0YWNrSXRlcmF0b3ImIGl0ZXIpCiAgICAgewogICAgICAgICBpdGVyLT5w
cmludCgyKTsKLSAgICAgICAgcmV0dXJuIFN0YWNrSXRlcmF0b3I6OkNvbnRpbnVlOworICAgICAg
ICByZXR1cm4gbV9hY3Rpb24gPT0gUHJpbnRBbGwgPyBTdGFja0l0ZXJhdG9yOjpDb250aW51ZSA6
IFN0YWNrSXRlcmF0b3I6OkRvbmU7CiAgICAgfQorCitwcml2YXRlOgorICAgIEFjdGlvbiBtX2Fj
dGlvbjsKIH07CiAKK3ZvaWQgZGVidWdQcmludENhbGxGcmFtZShKU0M6OkNhbGxGcmFtZSogY2Fs
bEZyYW1lKQoreworICAgIGlmICghY2FsbEZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgRGVi
dWdQcmludEZyYW1lRnVuY3RvciBmdW5jdG9yKERlYnVnUHJpbnRGcmFtZUZ1bmN0b3I6OlByaW50
T25lKTsKKyAgICBjYWxsRnJhbWUtPml0ZXJhdGUoZnVuY3Rvcik7Cit9CisKIHZvaWQgZGVidWdQ
cmludFN0YWNrKEpTQzo6Q2FsbEZyYW1lKiB0b3BDYWxsRnJhbWUpCiB7CiAgICAgaWYgKCF0b3BD
YWxsRnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBEZWJ1Z1ByaW50U3RhY2tGdW5jdG9yIGZ1
bmN0b3I7Ci0gICAgU3RhY2tJdGVyYXRvciBpdGVyID0gdG9wQ2FsbEZyYW1lLT5iZWdpbigpOwot
ICAgIGl0ZXIuaXRlcmF0ZShmdW5jdG9yKTsKKyAgICBEZWJ1Z1ByaW50RnJhbWVGdW5jdG9yIGZ1
bmN0b3IoRGVidWdQcmludEZyYW1lRnVuY3Rvcjo6UHJpbnRBbGwpOworICAgIHRvcENhbGxGcmFt
ZS0+aXRlcmF0ZShmdW5jdG9yKTsKIH0KKwogI2VuZGlmIC8vICFOREVCVUcKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja0l0ZXJhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrSXRlcmF0b3IuaAkocmV2
aXNpb24gMTU1MDU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNr
SXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDE0ICsxMDAsMTEgQEAgcHVibGljOgog
I2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIG1faW5saW5lQ2Fs
bEZyYW1lOwogI2VuZGlmCi0KICAgICAgICAgQ2FsbEZyYW1lKiBtX2NhbGxGcmFtZTsKIAogICAg
ICAgICBmcmllbmQgY2xhc3MgU3RhY2tJdGVyYXRvcjsKICAgICB9OwogCi0gICAgdHlwZWRlZiBi
b29sICgqRnJhbWVGaWx0ZXIpKEZyYW1lKik7Ci0KICAgICBlbnVtIFN0YXR1cyB7CiAgICAgICAg
IENvbnRpbnVlID0gMCwKICAgICAgICAgRG9uZSA9IDEKQEAgLTEyMiwyMSArMTE5LDE3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIFN0YXR1cyBzdGF0dXMgPSBmdW5jdG9yKCp0aGlzKTsKICAgICAg
ICAgICAgIGlmIChzdGF0dXMgIT0gQ29udGludWUpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBnb3RvTmV4dEZyYW1lV2l0aEZpbHRlcigpOworICAgICAgICAgICAgZ290b05l
eHRGcmFtZSgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IG51bWJlck9mRnJhbWVzKCk7Ci0KICAgICBGcmFtZSYgb3BlcmF0b3IqKCkgeyByZXR1cm4g
bV9mcmFtZTsgfQogICAgIEFMV0FZU19JTkxJTkUgRnJhbWUqIG9wZXJhdG9yLT4oKSB7IHJldHVy
biAmbV9mcmFtZTsgfQogCiBwcml2YXRlOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0YWNrSXRl
cmF0b3IoQ2FsbEZyYW1lKiBzdGFydEZyYW1lLCBGcmFtZUZpbHRlciA9IDApOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIFN0YWNrSXRlcmF0b3IoQ2FsbEZyYW1lKiBzdGFydEZyYW1lKTsKIAotICAg
IHZvaWQgZ290b0ZyYW1lQXRJbmRleChzaXplX3QgZnJhbWVJbmRleCk7Ci0gICAgdm9pZCBnb3Rv
TmV4dEZyYW1lKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBnb3RvTmV4dEZyYW1lV2l0
aEZpbHRlcigpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZ290b05leHRGcmFtZSgpOwog
ICAgIHZvaWQgcmVzZXRJdGVyYXRvcigpOwogCiAgICAgdm9pZCByZWFkRnJhbWUoQ2FsbEZyYW1l
Kik7CkBAIC0xNDYsNyArMTM5LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ2FsbEZyYW1l
KiBtX3N0YXJ0RnJhbWU7Ci0gICAgRnJhbWVGaWx0ZXIgbV9maWx0ZXI7CiAgICAgRnJhbWUgbV9m
cmFtZTsKIAogICAgIGZyaWVuZCBjbGFzcyBFeGVjU3RhdGU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwCShyZXZpc2lv
biAxNTUwNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDggKzk4LDcgQEAgcHJpdmF0ZToKIHZvaWQg
UHJvZmlsZUdlbmVyYXRvcjo6YWRkUGFyZW50Rm9yQ29uc29sZVN0YXJ0KEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBBZGRQYXJlbnRGb3JDb25zb2xlU3RhcnRGdW5jdG9yIGZ1bmN0b3IoZXhlYywg
bV9oZWFkLCBtX2N1cnJlbnROb2RlKTsKLSAgICBTdGFja0l0ZXJhdG9yIGl0ZXIgPSBleGVjLT5i
ZWdpbigpOwotICAgIGl0ZXIuaXRlcmF0ZShmdW5jdG9yKTsKKyAgICBleGVjLT5pdGVyYXRlKGZ1
bmN0b3IpOwogCiAgICAgaWYgKCFmdW5jdG9yLmZvdW5kUGFyZW50KCkpIHsKICAgICAgICAgbV9j
dXJyZW50Tm9kZSA9IFByb2ZpbGVOb2RlOjpjcmVhdGUoZXhlYywgTGVnYWN5UHJvZmlsZXI6OmNy
ZWF0ZUNhbGxJZGVudGlmaWVyKGV4ZWMsIEpTVmFsdWUoKSwgU3RyaW5nKCksIDApLCBtX2hlYWQu
Z2V0KCksIG1faGVhZC5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMTU1MDU3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw4ICsy
MTAsNyBAQCBwcml2YXRlOgogc3RhdGljIEpTVmFsdWUgcmV0cmlldmVBcmd1bWVudHMoRXhlY1N0
YXRlKiBleGVjLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbk9iaikKIHsKICAgICBSZXRyaWV2ZUFyZ3Vt
ZW50c0Z1bmN0b3IgZnVuY3RvcihmdW5jdGlvbk9iaik7Ci0gICAgU3RhY2tJdGVyYXRvciBpdGVy
ID0gZXhlYy0+YmVnaW4oKTsKLSAgICBpdGVyLml0ZXJhdGUoZnVuY3Rvcik7CisgICAgZXhlYy0+
aXRlcmF0ZShmdW5jdG9yKTsKICAgICByZXR1cm4gZnVuY3Rvci5yZXN1bHQoKTsKIH0KIApAQCAt
MjIzLDEzICsyMjIsNiBAQCBKU1ZhbHVlIEpTRnVuY3Rpb246OmFyZ3VtZW50c0dldHRlcihFeGVj
CiAgICAgcmV0dXJuIHJldHJpZXZlQXJndW1lbnRzKGV4ZWMsIHRoaXNPYmopOwogfQogCi1zdGF0
aWMgYm9vbCBza2lwT3ZlckJvdW5kRnVuY3Rpb25zKFN0YWNrSXRlcmF0b3I6OkZyYW1lKiBmcmFt
ZSkKLXsKLSAgICBKU09iamVjdCogY2FsbGVlID0gZnJhbWUtPmNhbGxlZSgpOwotICAgIGJvb2wg
c2hvdWxkU2tpcCA9IGNhbGxlZSA/IGNhbGxlZS0+aW5oZXJpdHMoSlNCb3VuZEZ1bmN0aW9uOjpp
bmZvKCkpIDogZmFsc2U7Ci0gICAgcmV0dXJuIHNob3VsZFNraXA7Ci19Ci0KIGNsYXNzIFJldHJp
ZXZlQ2FsbGVyRnVuY3Rpb25GdW5jdG9yIHsKIHB1YmxpYzoKICAgICBSZXRyaWV2ZUNhbGxlckZ1
bmN0aW9uRnVuY3RvcihKU0Z1bmN0aW9uKiBmdW5jdGlvbk9iaikKQEAgLTI0NSw2ICsyMzcsMTAg
QEAgcHVibGljOgogICAgIFN0YWNrSXRlcmF0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNrSXRl
cmF0b3ImIGl0ZXIpCiAgICAgewogICAgICAgICBKU09iamVjdCogY2FsbGVlID0gaXRlci0+Y2Fs
bGVlKCk7CisKKyAgICAgICAgaWYgKGNhbGxlZSAmJiBjYWxsZWUtPmluaGVyaXRzKEpTQm91bmRG
dW5jdGlvbjo6aW5mbygpKSkKKyAgICAgICAgICAgIHJldHVybiBTdGFja0l0ZXJhdG9yOjpDb250
aW51ZTsKKwogICAgICAgICBpZiAoIW1faGFzRm91bmRGcmFtZSAmJiAoY2FsbGVlICE9IG1fdGFy
Z2V0Q2FsbGVlKSkKICAgICAgICAgICAgIHJldHVybiBTdGFja0l0ZXJhdG9yOjpDb250aW51ZTsK
IApAQCAtMjY5LDggKzI2NSw3IEBAIHByaXZhdGU6CiBzdGF0aWMgSlNWYWx1ZSByZXRyaWV2ZUNh
bGxlckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiogZnVuY3Rpb25PYmopCiB7
CiAgICAgUmV0cmlldmVDYWxsZXJGdW5jdGlvbkZ1bmN0b3IgZnVuY3RvcihmdW5jdGlvbk9iaik7
Ci0gICAgU3RhY2tJdGVyYXRvciBpdGVyID0gZXhlYy0+YmVnaW4oc2tpcE92ZXJCb3VuZEZ1bmN0
aW9ucyk7Ci0gICAgaXRlci5pdGVyYXRlKGZ1bmN0b3IpOworICAgIGV4ZWMtPml0ZXJhdGUoZnVu
Y3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0b3IucmVzdWx0KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAJKHJldmlzaW9uIDE1NTA1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQ0LDgg
Kzc0NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1AKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT50aGlzVmFsdWUoKS5zeW50aGVzaXplUHJv
dG90eXBlKGV4ZWMpKTsKIAogICAgIEdsb2JhbEZ1bmNQcm90b0dldHRlckZ1bmN0b3IgZnVuY3Rv
cih0aGlzT2JqZWN0KTsKLSAgICBTdGFja0l0ZXJhdG9yIGl0ZXIgPSBleGVjLT5iZWdpbigpOwot
ICAgIGl0ZXIuaXRlcmF0ZShmdW5jdG9yKTsKKyAgICBleGVjLT5pdGVyYXRlKGZ1bmN0b3IpOwog
ICAgIHJldHVybiBmdW5jdG9yLnJlc3VsdCgpOwogfQogCkBAIC03ODgsOCArNzg3LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUAogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgR2xvYmFsRnVuY1Byb3RvU2V0dGVy
RnVuY3RvciBmdW5jdG9yKHRoaXNPYmplY3QpOwotICAgIFN0YWNrSXRlcmF0b3IgaXRlciA9IGV4
ZWMtPmJlZ2luKCk7Ci0gICAgaXRlci5pdGVyYXRlKGZ1bmN0b3IpOworICAgIGV4ZWMtPml0ZXJh
dGUoZnVuY3Rvcik7CiAgICAgaWYgKCFmdW5jdG9yLmFsbG93c0FjY2VzcygpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAxNTUwNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw4ICsxNjYsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIHBy
b3RvdHlwZSBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOwogICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgT2JqZWN0Q29u
c3RydWN0b3JHZXRQcm90b3R5cGVPZkZ1bmN0b3IgZnVuY3RvcihvYmplY3QpOwotICAgIFN0YWNr
SXRlcmF0b3IgaXRlciA9IGV4ZWMtPmJlZ2luKCk7Ci0gICAgaXRlci5pdGVyYXRlKGZ1bmN0b3Ip
OworICAgIGV4ZWMtPml0ZXJhdGUoZnVuY3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0b3IucmVzdWx0
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTA1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA5LTA0
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZpbmluZyB0aGUg
U3RhY2tJdGVyYXRvciBjYWxsYmFjayBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA2OTUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZW5kRnVuY3Rvcjo6U2VuZEZ1bmN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2VuZEZ1bmN0b3I6
OmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VuZEZ1bmN0b3I6OnVybCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpKU1hN
TEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayk6
CisKIDIwMTMtMDktMDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBWDogYXJpYS12YWx1ZXRleHQgcHJvcGVydHkgbm90IGV4cG9zaW5nIEFYVmFsdWVE
ZXNjcmlwdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVx
dWVzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDE1NTA1NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTYsMjYgKzExNiwzMiBAQCBjbGFzcyBTZW5kRnVuY3RvciB7CiBwdWJsaWM6CiAg
ICAgU2VuZEZ1bmN0b3IoKQogICAgICAgICA6IG1faGFzU2tpcHBlZEZpcnN0RnJhbWUoZmFsc2Up
Ci0gICAgICAgICwgbV9oYXNWaWFibGVGcmFtZShmYWxzZSkKKyAgICAgICAgLCBtX2xpbmUoMCkK
ICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBoYXNWaWFibGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzVmlhYmxlRnJhbWU7IH0KKyAgICB1bnNpZ25lZCBsaW5lKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lOyB9CisgICAgU3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAKLSAg
ICBTdGFja0l0ZXJhdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja0l0ZXJhdG9yJikKKyAgICBT
dGFja0l0ZXJhdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja0l0ZXJhdG9yJiBpdGVyKQogICAg
IHsKICAgICAgICAgaWYgKCFtX2hhc1NraXBwZWRGaXJzdEZyYW1lKSB7CiAgICAgICAgICAgICBt
X2hhc1NraXBwZWRGaXJzdEZyYW1lID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybiBTdGFja0l0
ZXJhdG9yOjpDb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIG1faGFzVmlhYmxlRnJhbWUg
PSB0cnVlOworICAgICAgICB1bnNpZ25lZCBsaW5lID0gMDsKKyAgICAgICAgdW5zaWduZWQgdW51
c2VkQ29sdW1uID0gMDsKKyAgICAgICAgaXRlci0+Y29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwg
dW51c2VkQ29sdW1uKTsKKyAgICAgICAgbV9saW5lID0gbGluZTsKKyAgICAgICAgbV91cmwgPSBp
dGVyLT5zb3VyY2VVUkwoKTsKICAgICAgICAgcmV0dXJuIFN0YWNrSXRlcmF0b3I6OkRvbmU7CiAg
ICAgfQogCiBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNTa2lwcGVkRmlyc3RGcmFtZTsKLSAgICBi
b29sIG1faGFzVmlhYmxlRnJhbWU7CisgICAgdW5zaWduZWQgbV9saW5lOworICAgIFN0cmluZyBt
X3VybDsKIH07CiAKIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUqIGV4
ZWMpCkBAIC0xNjUsMTggKzE3MSw5IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6c2VuZChF
eGVjU3RhdGUKICAgICB9CiAKICAgICBTZW5kRnVuY3RvciBmdW5jdG9yOwotICAgIFN0YWNrSXRl
cmF0b3IgaXRlciA9IGV4ZWMtPmJlZ2luKCk7Ci0gICAgaXRlci5pdGVyYXRlKGZ1bmN0b3IpOwot
ICAgIGlmIChmdW5jdG9yLmhhc1ZpYWJsZUZyYW1lKCkpIHsKLSAgICAgICAgdW5zaWduZWQgbGlu
ZSA9IDA7Ci0gICAgICAgIHVuc2lnbmVkIHVudXN1ZWRDb2x1bW4gPSAwOwotICAgICAgICBpdGVy
LT5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCB1bnVzdWVkQ29sdW1uKTsKLSAgICAgICAgaW1w
bCgpLT5zZXRMYXN0U2VuZExpbmVOdW1iZXIobGluZSk7Ci0gICAgICAgIGltcGwoKS0+c2V0TGFz
dFNlbmRVUkwoaXRlci0+c291cmNlVVJMKCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGltcGwo
KS0+c2V0TGFzdFNlbmRMaW5lTnVtYmVyKDApOwotICAgICAgICBpbXBsKCktPnNldExhc3RTZW5k
VVJMKFN0cmluZygpKTsKLSAgICB9CisgICAgZXhlYy0+aXRlcmF0ZShmdW5jdG9yKTsKKyAgICBp
bXBsKCktPnNldExhc3RTZW5kTGluZU51bWJlcihmdW5jdG9yLmxpbmUoKSk7CisgICAgaW1wbCgp
LT5zZXRMYXN0U2VuZFVSTChmdW5jdG9yLnVybCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAJKHJl
dmlzaW9uIDE1NTA1NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxT
dGFja0ZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw4ICs4Nyw3IEBAIFBhc3NSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHQKICAgICBpZiAoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpKSB7CiAgICAgICAg
IENhbGxGcmFtZSogZnJhbWUgPSBleGVjLT52bSgpLnRvcENhbGxGcmFtZTsKICAgICAgICAgQ3Jl
YXRlU2NyaXB0Q2FsbFN0YWNrRnVuY3RvciBmdW5jdG9yKGZyYW1lcywgbWF4U3RhY2tTaXplKTsK
LSAgICAgICAgU3RhY2tJdGVyYXRvciBpdGVyID0gZnJhbWUtPmJlZ2luKCk7Ci0gICAgICAgIGl0
ZXIuaXRlcmF0ZShmdW5jdG9yKTsKKyAgICAgICAgZnJhbWUtPml0ZXJhdGUoZnVuY3Rvcik7CiAg
ICAgfQogICAgIGlmIChmcmFtZXMuaXNFbXB0eSgpICYmICFlbXB0eUlzQWxsb3dlZCkgewogICAg
ICAgICAvLyBObyBmcmFtZXMgZm91bmQuIEl0IG1heSBoYXBwZW4gaW4gdGhlIGNhc2Ugd2hlcmUK
QEAgLTE0NCwxMCArMTQzLDEyIEBAIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVT
Y3JpcHQKICAgICBWZWN0b3I8U2NyaXB0Q2FsbEZyYW1lPiBmcmFtZXM7CiAgICAgQVNTRVJUKGV4
ZWMpOwogICAgIENhbGxGcmFtZSogZnJhbWUgPSBleGVjLT52bSgpLnRvcENhbGxGcmFtZTsKLSAg
ICBTdGFja0l0ZXJhdG9yIGl0ZXIgPSBmcmFtZS0+YmVnaW4oKTsKLSAgICBzaXplX3QgbnVtYmVy
T2ZGcmFtZXMgPSBpdGVyLm51bWJlck9mRnJhbWVzKCk7Ci0gICAgQ3JlYXRlU2NyaXB0Q2FsbFN0
YWNrRm9yQ29uc29sZUZ1bmN0b3IgZnVuY3RvcihudW1iZXJPZkZyYW1lcyA+IDEsIG1heFN0YWNr
U2l6ZSwgZnJhbWVzKTsKLSAgICBpdGVyLml0ZXJhdGUoZnVuY3Rvcik7CisgICAgQ3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrRm9yQ29uc29sZUZ1bmN0b3IgZnVuY3Rvcih0cnVlLCBtYXhTdGFja1NpemUs
IGZyYW1lcyk7CisgICAgZnJhbWUtPml0ZXJhdGUoZnVuY3Rvcik7CisgICAgaWYgKGZyYW1lcy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgQ3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZUZ1bmN0
b3IgZnVuY3RvcihmYWxzZSwgbWF4U3RhY2tTaXplLCBmcmFtZXMpOworICAgICAgICBmcmFtZS0+
aXRlcmF0ZShmdW5jdG9yKTsKKyAgICB9CiAgICAgcmV0dXJuIFNjcmlwdENhbGxTdGFjazo6Y3Jl
YXRlKGZyYW1lcyk7CiB9CiAK
</data>
<flag name="review"
          id="232608"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="232614"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>