<?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>126009</bug_id>
          
          <creation_ts>2013-12-19 12:27:47 -0800</creation_ts>
          <short_desc>CStack: Update the VMEntryScope&apos;s stack limit when the VM enters/exits ErrorMode</short_desc>
          <delta_ts>2013-12-29 08:26:10 -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>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>
          
          <blocked>125928</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>961502</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-19 12:27:47 -0800</bug_when>
    <thetext>See JSStack::enableErrorStackReserve() and JSStack::disableErrorStackReserve().  Just like this is needed for handling StackOverflowErrors when using the separate JSStack, we need to implement the equivalent for the C stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961557</commentid>
    <comment_count>1</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-19 15:02:02 -0800</bug_when>
    <thetext>Can we just rely on handling errors inside the host zone? Do we need another concept?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961558</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-19 15:04:59 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Can we just rely on handling errors inside the host zone? Do we need another concept?

We need a distinction because we need to allow the VM to use some additional stack space in order to do the work of throwing a StackOverflowError after we have reached the stack limit for normal execution.  Otherwise, we’ll encounter a stack overflow while trying to throw the StackOverflowError.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961567</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-19 15:12:58 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; Can we just rely on handling errors inside the host zone? Do we need another concept?
&gt; 
&gt; We need a distinction because we need to allow the VM to use some additional stack space in order to do the work of throwing a StackOverflowError after we have reached the stack limit for normal execution.  Otherwise, we’ll encounter a stack overflow while trying to throw the StackOverflowError.

Yes, that explains what we&apos;re trying to do. I have a suggestion for how: What you&apos;re calling &quot;JSStack:: enableErrorStackReserve()&quot; should just adjust the stack limit by half the size of the host zone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961568</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-19 15:16:18 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (In reply to comment #1)
&gt; &gt; &gt; Can we just rely on handling errors inside the host zone? Do we need another concept?
&gt; &gt; 
&gt; &gt; We need a distinction because we need to allow the VM to use some additional stack space in order to do the work of throwing a StackOverflowError after we have reached the stack limit for normal execution.  Otherwise, we’ll encounter a stack overflow while trying to throw the StackOverflowError.
&gt; 
&gt; Yes, that explains what we&apos;re trying to do. I have a suggestion for how: What you&apos;re calling &quot;JSStack:: enableErrorStackReserve()&quot; should just adjust the stack limit by half the size of the host zone.

Yes, that is pretty much what I had in mind.  I hadn’t thought of how much to adjust it by yet, but half the host zone sounds reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962216</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-20 23:58:03 -0800</bug_when>
    <thetext>The C stack limit tracking mechanism in the VMEntryScope class already has allowance for a smaller host zone when the Interpreter is in an ErrorMode.  We just need to update the VMEntryScope&apos;s stack limit whenever the Interpreter enters and exits its ErrorMode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962233</commentid>
    <comment_count>6</comment_count>
      <attachid>219845</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-21 03:29:56 -0800</bug_when>
    <thetext>Created attachment 219845
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962234</commentid>
    <comment_count>7</comment_count>
      <attachid>219845</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-21 03:31:11 -0800</bug_when>
    <thetext>Comment on attachment 219845
the patch.

Wrong patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962235</commentid>
    <comment_count>8</comment_count>
      <attachid>219846</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-21 03:32:20 -0800</bug_when>
    <thetext>Created attachment 219846
the real patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962236</commentid>
    <comment_count>9</comment_count>
      <attachid>219846</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-21 03:45:01 -0800</bug_when>
    <thetext>Comment on attachment 219846
the real patch.

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

&gt; Source/JavaScriptCore/interpreter/JSStack.cpp:189
&gt; +#else
&gt; +    if (m_vm.entryScope)
&gt; +        m_vm.entryScope-&gt;updateStackLimit();
&gt; +#endif

After thinking about this some more, the C stack update should be unconditional independent of whether the JS stack is on the C stack or its own separate stack.  We may have detected a stack overflow due to the C stack reaching it&apos;s limit.  Hence, the VM may need more C stack space to process the error even if the JS stack is on its own separate stack.  I will upload an updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962237</commentid>
    <comment_count>10</comment_count>
      <attachid>219847</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-21 03:46:59 -0800</bug_when>
    <thetext>Created attachment 219847
patch 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962261</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-21 11:22:31 -0800</bug_when>
    <thetext>Landed in r160967 on the jsCStack branch: &lt;http://trac.webkit.org/r160967&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963210</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-29 08:26:10 -0800</bug_when>
    <thetext>Thanks for the review.  Review status updated in r161117: &lt;http://trac.webkit.org/r161117&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219845</attachid>
            <date>2013-12-21 03:29:56 -0800</date>
            <delta_ts>2013-12-21 03:31:11 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-126109.patch</filename>
            <type>text/plain</type>
            <size>12554</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwOTU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDEzLTEyLTIwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
U3RhY2s6IEludHJvZHVjZSBKU1N0YWNrOjplbnN1cmVDYXBhY2l0eUZvcigpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MTA5LgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsaWVudCBjb2RlIHNob3Vs
ZCB1c2UgSlNTdGFjazo6ZW5zdXJlQ2FwYWNpdHlGb3IoKSB3aGVuIGNoZWNraW5nIGZvcgorICAg
ICAgICBhdmFpbGFibGUgc3RhY2sgc3BhY2UgZm9yIHB1c2hpbmcgSlMgZnJhbWVzIG9yIG1ha2lu
ZyBhcml0eSBhZGp1c3RtZW50cy4KKyAgICAgICAgSlNTdGFjazo6ZW5zdXJlQ2FwYWNpdHlGb3Io
KSB3b3JrcyBmb3IgYm90aCBjYXNlcyBvZiB0aGUgSlMgc3RhY2sgb24gdGhlCisgICAgICAgIEMg
c3RhY2sgb3IgYXMgYSBzcGVyYXRlIHN0YWNrLgorCisgICAgICAgIEpTU3RhY2s6Omdyb3coKSBp
cyBub3cgcHJpdmF0ZSwgYW5kIGlzIG9ubHkgdXNlZCBieSB0aGUgQyBMb29wIExMSU5ULgorCisg
ICAgICAgIEFsc28gbWFkZSBzb21lIG90aGVyIEpTU3RhY2sgbWV0aG9kcyBwcml2YXRlIGFzIHRo
ZXkgYXJlIG5vdCBuZWVkZWQKKyAgICAgICAgb3V0c2lkZSBvZiB0aGUgSlNTVGFjayBjbGFzcy4K
KworICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cHJl
cGFyZU9TUkVudHJ5KToKKyAgICAgICAgKiBmdGwvRlRMT1NSRW50cnkuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpzaXplRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9KU1N0YWNrLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSlNTdGFja0lu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6ZW5zdXJlQ2FwYWNpdHlGb3IpOgorICAg
ICAgICAoSlNDOjpKU1N0YWNrOjp0b3BPZlN0YWNrRm9yQ2FwYWNpdHlDaGVjayk6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6Cisg
ICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcik6CisKIDIwMTMtMTIt
MjAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBBcml0eSBjaGVj
ayBzdGFjayByZXN0b3JhdGlvbiBzaG91bGQgcHJlc2VydmUgdGhlIEFyZ3VtZW50Q291bnQgaW4g
Y2FzZSB0aGVyZSBpcyBhIHJlZ2lzdGVyIHJlc3RvcmF0aW9uIHRodW5rIGJlbG93IGl0CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2aXNpb24gMTYw
OTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0
YXRlKiBleGVjLCBDCiAgICAgLy8gICAgd291bGQgaGF2ZSBvdGhlcndpc2UganVzdCBrZXB0IHJ1
bm5pbmcgYWxiZWl0IGxlc3MgcXVpY2tseS4KICAgICAKICAgICB1bnNpZ25lZCBmcmFtZVNpemUg
PSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhp
dCgpOwotICAgIGlmICghdm0tPmludGVycHJldGVyLT5zdGFjaygpLmdyb3coJmV4ZWMtPnJlZ2lz
dGVycygpW3ZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGZyYW1lU2l6ZSkub2Zmc2V0KCldKSkgewor
ICAgIGlmICghdm0tPmludGVycHJldGVyLT5zdGFjaygpLmVuc3VyZUNhcGFjaXR5Rm9yKCZleGVj
LT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChmcmFtZVNpemUgLSAxKS5vZmZz
ZXQoKV0pKSB7CiAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAg
ICBkYXRhTG9nRigiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSBzdGFjayBncm93dGggZmFpbGVkLlxu
Iik7CiAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDE2MDk0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHZv
aWQqIHByZXBhcmVPU1JFbnRyeSgKICAgICAgICAgc2NyYXRjaFtsb2NhbF0gPSBKU1ZhbHVlOjpl
bmNvZGUodmFsdWVzLmxvY2FsKGxvY2FsKSk7CiAgICAgCiAgICAgaW50IHN0YWNrRnJhbWVTaXpl
ID0gZW50cnlDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5k
RXhpdCgpOwotICAgIGlmICghdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCkuZ3JvdygmZXhlYy0+cmVn
aXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhY2tGcmFtZVNpemUpLm9mZnNldCgp
XSkpIHsKKyAgICBpZiAoIXZtLmludGVycHJldGVyLT5zdGFjaygpLmVuc3VyZUNhcGFjaXR5Rm9y
KCZleGVjLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzdGFja0ZyYW1lU2l6
ZSAtIDEpLm9mZnNldCgpXSkpIHsKICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkK
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBPU1IgZmFpbGVkIGJlY2F1c2Ugc3RhY2sgZ3Jvd3Ro
IGZhaWxlZC5cbiIpOwogICAgICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTYwOTQ5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIENhbGxGcmFtZSogc2l6ZUZyYW1lRm9y
VmFyYXJncyhDYWxsRnJhbWUKICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAgICAg
IHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIC1maXJzdEZyZWVSZWdpc3RlciArIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSArIDEp
OwogICAgICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNh
bGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCk7Ci0gICAgICAg
IGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+IEFyZ3VtZW50czo6TWF4QXJndW1lbnRz
ICsgMSB8fCAhc3RhY2stPmdyb3cobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpIHsKKyAgICAg
ICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID4gQXJndW1lbnRzOjpNYXhBcmd1bWVu
dHMgKyAxIHx8ICFzdGFjay0+ZW5zdXJlQ2FwYWNpdHlGb3IobmV3Q2FsbEZyYW1lLT5yZWdpc3Rl
cnMoKSkpIHsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICB9CkBAIC0xNzEsNyArMTcxLDcgQEAgQ2FsbEZyYW1lKiBzaXpl
RnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZQogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA9IDE7CiAgICAgICAgIHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zm
c2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCks
ICAtZmlyc3RGcmVlUmVnaXN0ZXIgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyAxKTsKICAgICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxs
RnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVk
Q2FsbGVlRnJhbWVPZmZzZXQpOwotICAgICAgICBpZiAoIXN0YWNrLT5ncm93KG5ld0NhbGxGcmFt
ZS0+cmVnaXN0ZXJzKCkpKSB7CisgICAgICAgIGlmICghc3RhY2stPmVuc3VyZUNhcGFjaXR5Rm9y
KG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7CiAgICAgICAgICAgICBjYWxsRnJhbWUtPnZt
KCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMTg4LDcgKzE4
OCw3IEBAIENhbGxGcmFtZSogc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUKICAgICAgICAg
dW5zaWduZWQgYXJnQ291bnQgPSBhcmdzT2JqZWN0LT5sZW5ndGgoY2FsbEZyYW1lKTsKICAgICAg
ICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgLWZpcnN0RnJlZVJlZ2lzdGVyICsgQ2Fs
bEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7CiAgICAgICAgIENhbGxGcmFtZSogbmV3
Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBh
ZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKLSAgICAgICAgaWYgKGFyZ0NvdW50ID4gQXJndW1lbnRz
OjpNYXhBcmd1bWVudHMgfHwgIXN0YWNrLT5ncm93KG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkp
KSB7CisgICAgICAgIGlmIChhcmdDb3VudCA+IEFyZ3VtZW50czo6TWF4QXJndW1lbnRzIHx8ICFz
dGFjay0+ZW5zdXJlQ2FwYWNpdHlGb3IobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpIHsKICAg
ICAgICAgICAgIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICB9CkBAIC0yMDAsNyArMjAwLDcgQEAgQ2FsbEZyYW1lKiBzaXplRnJhbWVGb3JWYXJh
cmdzKENhbGxGcmFtZQogICAgICAgICB1bnNpZ25lZCBhcmdDb3VudCA9IGFycmF5LT5sZW5ndGgo
KTsKICAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5k
VXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgLWZpcnN0RnJlZVJlZ2lz
dGVyICsgQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7CiAgICAgICAgIENhbGxG
cmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3Rl
cnMoKSAtIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKLSAgICAgICAgaWYgKGFyZ0NvdW50ID4g
QXJndW1lbnRzOjpNYXhBcmd1bWVudHMgfHwgIXN0YWNrLT5ncm93KG5ld0NhbGxGcmFtZS0+cmVn
aXN0ZXJzKCkpKSB7CisgICAgICAgIGlmIChhcmdDb3VudCA+IEFyZ3VtZW50czo6TWF4QXJndW1l
bnRzIHx8ICFzdGFjay0+ZW5zdXJlQ2FwYWNpdHlGb3IobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMo
KSkpIHsKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJh
bWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICB9CkBAIC0yMTEsNyArMjExLDcgQEAgQ2FsbEZyYW1lKiBzaXplRnJh
bWVGb3JWYXJhcmdzKENhbGxGcmFtZQogICAgIHVuc2lnbmVkIGFyZ0NvdW50ID0gYXJnT2JqZWN0
LT5nZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpLnRvVUlu
dDMyKGNhbGxGcmFtZSk7CiAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgLWZpcnN0
RnJlZVJlZ2lzdGVyICsgQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7CiAgICAg
Q2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJl
Z2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwotICAgIGlmIChhcmdDb3VudCA+
IEFyZ3VtZW50czo6TWF4QXJndW1lbnRzIHx8ICFzdGFjay0+Z3JvdyhuZXdDYWxsRnJhbWUtPnJl
Z2lzdGVycygpKSkgeworICAgIGlmIChhcmdDb3VudCA+IEFyZ3VtZW50czo6TWF4QXJndW1lbnRz
IHx8ICFzdGFjay0+ZW5zdXJlQ2FwYWNpdHlGb3IobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkp
IHsKICAgICAgICAgY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5o
CShyZXZpc2lvbiAxNjA5NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SlNTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBKU1N0YWNrKFZNJiwgc2l6ZV90IGNhcGFjaXR5ID0gZGVmYXVsdENhcGFjaXR5
KTsKICAgICAgICAgfkpTU3RhY2soKTsKICAgICAgICAgCisgICAgICAgIGJvb2wgZW5zdXJlQ2Fw
YWNpdHlGb3IoUmVnaXN0ZXIqIG5ld1RvcE9mU3RhY2spOworCiAgICAgICAgIHZvaWQgZ2F0aGVy
Q29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKICAgICAgICAgdm9pZCBnYXRo
ZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYsIEpJVFN0dWJSb3V0aW5lU2V0
JiwgQ29kZUJsb2NrU2V0Jik7CiAgICAgICAgIHZvaWQgc2FuaXRpemVTdGFjaygpOwpAQCAtOTIs
MTQgKzk0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gaGlnaEFkZHJlc3MoKSAtIGxvd0FkZHJlc3MoKTsgfQogCi0gICAgICAgIGJv
b2wgZ3JvdyhSZWdpc3RlciogdG9wT2ZTdGFjayk7Ci0gICAgICAgIAogICAgICAgICBzdGF0aWMg
c2l6ZV90IGNvbW1pdHRlZEJ5dGVDb3VudCgpOwogICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFs
aXplVGhyZWFkaW5nKCk7CiAKLSAgICAgICAgUmVnaXN0ZXIqIHRvcE9mRnJhbWVGb3IoQ2FsbEZy
YW1lKik7CiAgICAgICAgIFJlZ2lzdGVyKiBzdGFydE9mRnJhbWVGb3IoQ2FsbEZyYW1lKik7Ci0g
ICAgICAgIFJlZ2lzdGVyKiB0b3BPZlN0YWNrKCk7CiAKICAgICAgICAgQ2FsbEZyYW1lKiBwdXNo
RnJhbWUoY2xhc3MgQ29kZUJsb2NrKiwgSlNTY29wZSosIGludCBhcmdzQ291bnQsIEpTT2JqZWN0
KiBjYWxsZWUpOwogCkBAIC0xMjAsNiArMTE4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlm
IC8vICFFTkFCTEUoREVCVUdfSlNTVEFDSykKIAogICAgIHByaXZhdGU6CisKKyAgICAgICAgaW5s
aW5lIFJlZ2lzdGVyKiB0b3BPZkZyYW1lRm9yKENhbGxGcmFtZSopOworICAgICAgICBpbmxpbmUg
UmVnaXN0ZXIqIHRvcE9mU3RhY2soKTsKKyAgICAgICAgaW5saW5lIFJlZ2lzdGVyKiB0b3BPZlN0
YWNrRm9yQ2FwYWNpdHlDaGVjaygpOworCiAgICAgICAgIFJlZ2lzdGVyKiBsb3dBZGRyZXNzKCkg
Y29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1fZW5kOwpAQCAtMTQzLDYgKzE0
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGluc3RhbGxUcmFwc0FmdGVyRnJh
bWUoQ2FsbEZyYW1lKikgeyB9CiAjZW5kaWYKIAorICAgICAgICBib29sIGdyb3coUmVnaXN0ZXIq
IHRvcE9mU3RhY2spOwogICAgICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdpc3RlciopOwogICAg
ICAgICB2b2lkIHNocmluayhSZWdpc3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3ND
YXBhY2l0eSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3Rh
Y2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0pTU3RhY2tJbmxpbmVzLmgJKHJldmlzaW9uIDE2MDk0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMywzNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAoraW5saW5lIGJvb2wgSlNTdGFjazo6
ZW5zdXJlQ2FwYWNpdHlGb3IoUmVnaXN0ZXIqIG5ld1RvcE9mU3RhY2spCit7CisjaWYgRU5BQkxF
KExMSU5UX0NfTE9PUCkKKyAgICByZXR1cm4gZ3JvdyhuZXdUb3BPZlN0YWNrKTsKKyNlbHNlCisg
ICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwor
ICAgIFJlZ2lzdGVyKiB0b3BPZlN0YWNrID0gdG9wT2ZTdGFja0ZvckNhcGFjaXR5Q2hlY2soKTsK
KyAgICBpZiAobmV3VG9wT2ZTdGFjayA+IHRvcE9mU3RhY2spCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIHNpemVfdCBuZWVkZWRDYXBhY2l0eSA9ICh0b3BPZlN0YWNrIC0gbmV3VG9wT2ZTdGFj
aykgKiBzaXplb2YoUmVnaXN0ZXIpOworICAgIHJldHVybiBtX3ZtLmlzU2FmZVRvUmVjdXJzZShu
ZWVkZWRDYXBhY2l0eSk7CisjZW5kaWYKK30KKworaW5saW5lIFJlZ2lzdGVyKiBKU1N0YWNrOjp0
b3BPZlN0YWNrRm9yQ2FwYWNpdHlDaGVjaygpCit7CisjaWYgIUVOQUJMRShMTElOVF9DX0xPT1Ap
CisgICAgLy8gV2UncmUgdHJ5aW5nIHRvIGdldCBhbiBlc3RpbWF0ZSBvZiB0aGUgdG9wIG9mIHRo
ZSBzdGFjayBmb3IgdGhlIHB1cnBvc2UKKyAgICAvLyBvZiBhIGNhcGFjaXR5IGNoZWNrLiBJZiBt
X3RvcENhbGxGcmFtZSBpcyAwLCB0aGVuIHdlIGNhbid0IGNhbGN1bGF0ZSBhbgorICAgIC8vIGFj
Y3VyYXRlIHRvcCBvZiBzdGFjayB2YWx1ZS4gSnVzdCB1c2UgdGhlIGN1cnJlbnQgc3RhY2sgcG9z
aXRpb24gYXMgYW4KKyAgICAvLyBlc3RpbWF0ZSBmb3IgdGhlIHRvcCBvZiB0aGUgc3RhY2sgZnJv
bSB3aGVyZSBKUyBjb2RlIHdpbGwgc3RhcnQgZXhlY3V0aW5nLgorICAgIC8vIFRoaXMgaXMgY29u
c2VydmF0aXZlLCBidXQgaXQgd2lsbCBiZSBzYWZlLgorICAgIGlmICghbV90b3BDYWxsRnJhbWUp
IHsKKyAgICAgICAgUmVnaXN0ZXIqIHAgPSByZWludGVycHJldF9jYXN0PFJlZ2lzdGVyKj4oJnAp
OworICAgICAgICByZXR1cm4gcDsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gdG9wT2ZTdGFj
aygpICsgMTsKK30KKwogaW5saW5lIFJlZ2lzdGVyKiBKU1N0YWNrOjp0b3BPZkZyYW1lRm9yKENh
bGxGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCFmcmFtZSkpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9u
IDE2MDk0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0MSw4ICs0NDEsMTUgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0woc3RhY2tfY2hlY2spCiAgICAgZGF0YUxvZ0YoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5j
b2RlQmxvY2soKS0+bV9udW1WYXJzKTsKICAgICBkYXRhTG9nRigiQ3VycmVudCBlbmQgaXMgYXQg
JXAuXG4iLCBleGVjLT52bSgpLmludGVycHJldGVyLT5zdGFjaygpLmVuZCgpKTsKICNlbmRpZgot
ICAgIEFTU0VSVCghZXhlYy0+dm0oKS5pbnRlcnByZXRlci0+c3RhY2soKS5jb250YWluc0FkZHJl
c3MoJmV4ZWMtPnJlZ2lzdGVycygpW3ZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGV4ZWMtPmNvZGVC
bG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycykub2Zmc2V0KCldKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCF2bS5pbnRlcnByZXRlci0+c3RhY2soKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVt2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3Rl
cnMpLm9mZnNldCgpXSkpKSB7CisKKyAgICAvLyBGb3IgSklUIGVuYWJsZWQgYnVpbGRzIHdoaWNo
IHVzZXMgdGhlIEMgc3RhY2ssIHRoZSBzdGFjayBpcyBub3QgZ3Jvd2FibGUuCisgICAgLy8gSGVu
Y2UsIGlmIHdlIGdldCBoZXJlLCB0aGVuIHdlIGtub3cgYSBzdGFjayBvdmVyZmxvdyBpcyBpbW1p
bmVudC4gU28sIGp1c3QKKyAgICAvLyB0aHJvdyB0aGUgU3RhY2tPdmVyZmxvd0Vycm9yIHVuY29u
ZGl0aW9uYWxseS4KKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIEFTU0VSVCghZXhlYy0+
dm0oKS5pbnRlcnByZXRlci0+c3RhY2soKS5jb250YWluc0FkZHJlc3MoZXhlYy0+dG9wT2ZGcmFt
ZSgpKSk7CisgICAgaWYgKFVOTElLRUxZKCF2bS5pbnRlcnByZXRlci0+c3RhY2soKS5lbnN1cmVD
YXBhY2l0eUZvcihleGVjLT50b3BPZkZyYW1lKCkpKSkKKyNlbmRpZgorICAgIHsKICAgICAgICAg
ZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6aW50
ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVj
KSk7CiAgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihleGVjKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCShyZXZpc2lvbiAxNjA5NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTUgKzY3LDggQEAgQUxXQVlT
X0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihFeGVjU3RhdAogICAgIGludCBuZWVkZWRTdGFja1Nw
YWNlID0gbWlzc2luZ0FyZ3VtZW50Q291bnQgKyAxOyAvLyBBbGxvdyBzcGFjZSB0byBzYXZlIHRo
ZSBvcmlnaW5hbCByZXR1cm4gUEMuCiAgICAgaW50IHBhZGRlZFN0YWNrU3BhY2UgPSBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbmVlZGVkU3RhY2tT
cGFjZSk7CiAKLSNpZiBFTkFCTEUoTExJTlRfQ0xPT1ApCi0gICAgaWYgKCFzdGFjay0+Z3Jvdyhl
eGVjLT5yZWdpc3RlcnMoKSAtIHBhc3NlZFN0YWNrU3BhY2UpKQorICAgIGlmICghc3RhY2stPmVu
c3VyZUNhcGFjaXR5Rm9yKGV4ZWMtPnJlZ2lzdGVycygpIC0gcGFkZGVkU3RhY2tTcGFjZSkpCiAg
ICAgICAgIHJldHVybiAtMTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHN0YWNrKTsKLSAgICBp
ZiAoIWV4ZWMtPnZtKCkuaXNTYWZlVG9SZWN1cnNlKHBhZGRlZFN0YWNrU3BhY2UgKiBzaXplb2Yo
UmVnaXN0ZXIpKSkKLSAgICAgICAgcmV0dXJuIC0xOwotI2VuZGlmIC8vIEVOQUJMRShMTElOVF9D
TE9PUCkKLQogICAgIHJldHVybiBwYWRkZWRTdGFja1NwYWNlIC8gc3RhY2tBbGlnbm1lbnRSZWdp
c3RlcnMoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219846</attachid>
            <date>2013-12-21 03:32:20 -0800</date>
            <delta_ts>2013-12-21 03:46:59 -0800</delta_ts>
            <desc>the real patch.</desc>
            <filename>bug-126009.patch</filename>
            <type>text/plain</type>
            <size>19437</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwOTYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDEzLTEyLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
U3RhY2s6IFVwZGF0ZSB0aGUgVk1FbnRyeVNjb3BlJ3Mgc3RhY2sgbGltaXQgd2hlbiB0aGUgVk0g
ZW50ZXJzL2V4aXRzIEVycm9yTW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNjAwOS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAxLiBSZW5hbWVkIEpTU3RhY2s6OnVwZGF0ZVN0YWNrTGltaXQoKSB0
byBzZXRTdGFja0xpbWl0KCkgYmVjYXVzZSB0aGF0CisgICAgICAgICAgIGlzIHdoYXQgaXQgYWN0
dWFsbHkgZG9lcy4gV2UncmUgZ29pbmcgdG8gcmVwdXJwb3NlIHRoZSB1cGRhdGVTdGFja0xpbWl0
CisgICAgICAgICAgIG5hbWUgZm9yIGFub3RoZXIgZnVuY3Rpb24uCisKKyAgICAgICAgMi4gSW50
cm9kdWNlIHRoZSBuZXcgSlNTdGFjazo6dXBkYXRlU3RhY2tMaW1pdCgpIHdoaWNoIGlzIHJlc3Bv
bnNpYmxlIGZvcgorICAgICAgICAgICByZS1zZXR0aW5nIHRoZSBjdXJyZW50IHN0YWNrIGxpbWl0
LiB1cGRhdGVTdGFja0xpbWl0KCkgd2lsbCBoYW5kbGUgYm90aAorICAgICAgICAgICBjYXNlcyBv
ZiB0aGUgSlMgc3RhY2sgYmVpbmcgb24gdGhlIEMgc3RhY2sgb3IgYSBzZXBhcmF0ZSBzdGFjay4K
KworICAgICAgICAgICBGb3IgdGhlIEMgc3RhY2sgY2FzZSwgSlN0YWNrOjp1cGRhdGVTdGFja0xp
bWl0KCkgd2lsbCBjaGVjayBpZiBhCisgICAgICAgICAgIFZNRW50cnlTY29wZSBoYXMgYmVlbiBp
bnN0YWxsZWQgaW4gdGhlIFZNLiBJZiBzbywgaXQgd2lsbCB0ZWxsIHRoZQorICAgICAgICAgICBW
TUVudHJ5U2NvcGUgdG8gZG8gdGhlIHJlYWwgd29yayBvZiB1cGRhdGluZyB0aGUgc3RhY2sgbGlt
aXQuIFRoZQorICAgICAgICAgICBWTUVudHJ5U2NvcGUgd2lsbCB0YWtlIGludG8gYWNjb3VudCB3
aGV0aGVyIHRoZSBWTSdzIEludGVycHJldGVyIGlzCisgICAgICAgICAgIGluIGFuIGVycm9yIGhh
bmRsaW5nIG1vZGUgb3Igbm90IHdoZW4gZGV0ZXJtaW5pbmcgdGhlIGFtb3VudCBvZiBob3N0Cisg
ICAgICAgICAgIHpvbmUgc3BhY2UgdG8gcmVzZXJ2ZSBvbiB0aGUgc3RhY2sgZm9yIGNvbXB1dGlu
ZyB0aGUgc3RhY2sgbGltaXQgdmFsdWUuCisKKyAgICAgICAgMy4gSW50ZXJwcmV0ZXI6OkVycm9y
SGFuZGxpbmdNb2RlIG5vdyBjYWxscyBKU1N0YWNrOjp1cGRhdGVTdGFja0xpbWl0CisgICAgICAg
ICAgIHdoZW5ldmVyIGl0IGVudGVycyAvIGV4aXQgZXJyb3IgaGFuZGxpbmcgbW9kZS4gVGhpcyBh
bGxvd3MgdGhlIHN0YWNrCisgICAgICAgICAgIGxpbWl0IHRvIGNoYW5nZSB3aXRoIHRoZSBlcnJv
ciBtb2RlIGNoYW5nZS4KKworICAgICAgICA0LiBBIGxvdCBvZiBwbGFjZXMgaW4gdGhlIGNvZGUg
d2VyZSB0aHJvd2luZyBTdGFja092ZXJmbG93RXJyb3JzIGJ5CisgICAgICAgICAgIGNyZWF0aW5n
IGFuZCB0aHJvd2luZyB0aGUgZXJyb3IgdGhlbXNlbHZlcyBpbnN0ZWFkIG9mIHVzaW5nIHRoZQor
ICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcigpIGhlbHBlciBmdW5jdGlvbi4gQXMg
YSByZXN1bHQsIHRoZSBWTSBuZXZlcgorICAgICAgICAgICBnb3QgdGhlIGNoYW5jZSB0byBlbnRl
ciBlcnJvciBtb2RlLiBUaGlzIGlzIGEgYnVnIGFuZCBpcyBub3cgZml4ZWQgYnkKKyAgICAgICAg
ICAgbWFraW5nIGFsbCB0aGVzZSBzaXRlcyB1c2UgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoKSBp
bnN0ZWFkLgorCisgICAgICAgICAgIEZvciBzaXRlcyB0aGF0IGNhbid0IHVzZSB0aHJvd1N0YWNr
T3ZlcmZsb3dFcnJvcigpLCBJIHVwZGF0ZWQgdGhlbSB0bworICAgICAgICAgICBpbnN0YW50aWF0
ZSBJbnRlcnByZXRlcjo6RXJyb3JIYW5kbGluZ01vZGUgdG8gc2V0IHRoZSBlcnJvciBtb2RlCisg
ICAgICAgICAgIGFwcHJvcHJpYXRlbHkuCisKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZTo6
RXJyb3JIYW5kbGluZ01vZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6RXJyb3JIYW5k
bGluZ01vZGU6On5FcnJvckhhbmRsaW5nTW9kZSk6CisgICAgICAgIChKU0M6OnNpemVGcmFtZUZv
clZhcmFyZ3MpOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3RhY2suY3BwOgorICAgICAgICAo
SlNDOjpKU1N0YWNrOjpKU1N0YWNrKToKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6Z3Jvd1Nsb3dD
YXNlKToKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6dXBkYXRlU3RhY2tMaW1pdCk6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvSlNTdGFjay5oOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3RhY2tJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OnNocmluayk6CisgICAgICAgIChKU0M6
OkpTU3RhY2s6OnNldFN0YWNrTGltaXQpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckVycm9y
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckVycm9yOjp0b0Vycm9yT2JqZWN0KToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpX
YWxrZXI6OndhbGspOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5j
cHA6CisgICAgICAgIChKU0M6OlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OnRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yKToKKyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29wZS5jcHA6CisgICAgICAg
IChKU0M6OlZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKToKKyAgICAgICAgKEpTQzo6Vk1FbnRy
eVNjb3BlOjp1cGRhdGVTdGFja0xpbWl0KToKKyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29w
ZS5oOgorCiAyMDEzLTEyLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVnaXN0ZXIgcmVzdG9yYXRpb24gdGh1bmsgc2hvdWxkIHJlc3RvcmUgdGhlIEFyZ3Vt
ZW50Q291bnQgYWZ0ZXIgaXQgcmVzdG9yZXMgcmVnaXN0ZXJzCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDE2
MDk2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDkgKzk0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiBJbnRl
cnByZXRlcjo6RXJyb3JIYW5kbGluZ01vZGU6OkVycm9ySGFuZGxpbmdNb2RlKEV4ZWNTdGF0ZSAq
ZXhlYykKICAgICA6IG1faW50ZXJwcmV0ZXIoKmV4ZWMtPmludGVycHJldGVyKCkpCiB7Ci0gICAg
aWYgKCFtX2ludGVycHJldGVyLm1fZXJyb3JIYW5kbGluZ01vZGVSZWVudHJ5KQotICAgICAgICBt
X2ludGVycHJldGVyLnN0YWNrKCkuZW5hYmxlRXJyb3JTdGFja1Jlc2VydmUoKTsKICAgICBtX2lu
dGVycHJldGVyLm1fZXJyb3JIYW5kbGluZ01vZGVSZWVudHJ5Kys7CisgICAgbV9pbnRlcnByZXRl
ci5zdGFjaygpLnVwZGF0ZVN0YWNrTGltaXQoKTsKIH0KIAogSW50ZXJwcmV0ZXI6OkVycm9ySGFu
ZGxpbmdNb2RlOjp+RXJyb3JIYW5kbGluZ01vZGUoKQpAQCAtMTA0LDcgKzEwMyw3IEBAIEludGVy
cHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZTo6fkVycm9ySGEKICAgICBtX2ludGVycHJldGVyLm1f
ZXJyb3JIYW5kbGluZ01vZGVSZWVudHJ5LS07CiAgICAgQVNTRVJUKG1faW50ZXJwcmV0ZXIubV9l
cnJvckhhbmRsaW5nTW9kZVJlZW50cnkgPj0gMCk7CiAgICAgaWYgKCFtX2ludGVycHJldGVyLm1f
ZXJyb3JIYW5kbGluZ01vZGVSZWVudHJ5KQotICAgICAgICBtX2ludGVycHJldGVyLnN0YWNrKCku
ZGlzYWJsZUVycm9yU3RhY2tSZXNlcnZlKCk7CisgICAgICAgIG1faW50ZXJwcmV0ZXIuc3RhY2so
KS51cGRhdGVTdGFja0xpbWl0KCk7CiB9CiAKIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKQEAgLTE2MSw3ICsxNjAsNyBAQCBDYWxsRnJhbWUqIHNpemVGcmFtZUZvclZhcmFyZ3Mo
Q2FsbEZyYW1lCiAgICAgICAgIHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIC1maXJzdEZy
ZWVSZWdpc3RlciArIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyU2l6ZSArIDEpOwogICAgICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENh
bGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRDYWxsZWVGcmFt
ZU9mZnNldCk7CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+IEFyZ3Vt
ZW50czo6TWF4QXJndW1lbnRzICsgMSB8fCAhc3RhY2stPmVuc3VyZUNhcGFjaXR5Rm9yKG5ld0Nh
bGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7Ci0gICAgICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1l
KSk7CisgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG5ld0NhbGxGcmFt
ZTsKQEAgLTE3Miw3ICsxNzEsNyBAQCBDYWxsRnJhbWUqIHNpemVGcmFtZUZvclZhcmFyZ3MoQ2Fs
bEZyYW1lCiAgICAgICAgIHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksICAtZmlyc3RGcmVl
UmVnaXN0ZXIgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIEpTU3RhY2s6OkNhbGxGcmFt
ZUhlYWRlclNpemUgKyAxKTsKICAgICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxs
RnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVP
ZmZzZXQpOwogICAgICAgICBpZiAoIXN0YWNrLT5lbnN1cmVDYXBhY2l0eUZvcihuZXdDYWxsRnJh
bWUtPnJlZ2lzdGVycygpKSkgewotICAgICAgICAgICAgY2FsbEZyYW1lLT52bSgpLnRocm93RXhj
ZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwor
ICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBuZXdDYWxsRnJhbWU7CkBA
IC0xODksNyArMTg4LDcgQEAgQ2FsbEZyYW1lKiBzaXplRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFt
ZQogICAgICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCA9IFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCAtZmlyc3RGcmVlUmVnaXN0
ZXIgKyBDYWxsRnJhbWU6Om9mZnNldEZvcihhcmdDb3VudCArIDEpKTsKICAgICAgICAgQ2FsbEZy
YW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwogICAgICAgICBpZiAoYXJnQ291bnQgPiBB
cmd1bWVudHM6Ok1heEFyZ3VtZW50cyB8fCAhc3RhY2stPmVuc3VyZUNhcGFjaXR5Rm9yKG5ld0Nh
bGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7Ci0gICAgICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1l
KSk7CisgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG5ld0NhbGxGcmFt
ZTsKQEAgLTIwMSw3ICsyMDAsNyBAQCBDYWxsRnJhbWUqIHNpemVGcmFtZUZvclZhcmFyZ3MoQ2Fs
bEZyYW1lCiAgICAgICAgIHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIC1maXJzdEZyZWVS
ZWdpc3RlciArIENhbGxGcmFtZTo6b2Zmc2V0Rm9yKGFyZ0NvdW50ICsgMSkpOwogICAgICAgICBD
YWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVn
aXN0ZXJzKCkgLSBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCk7CiAgICAgICAgIGlmIChhcmdDb3Vu
dCA+IEFyZ3VtZW50czo6TWF4QXJndW1lbnRzIHx8ICFzdGFjay0+ZW5zdXJlQ2FwYWNpdHlGb3Io
bmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpIHsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+dm0o
KS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxs
RnJhbWUpKTsKKyAgICAgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV3Q2Fs
bEZyYW1lOwpAQCAtMjEyLDcgKzIxMSw3IEBAIENhbGxGcmFtZSogc2l6ZUZyYW1lRm9yVmFyYXJn
cyhDYWxsRnJhbWUKICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCA9IFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCAtZmlyc3RGcmVl
UmVnaXN0ZXIgKyBDYWxsRnJhbWU6Om9mZnNldEZvcihhcmdDb3VudCArIDEpKTsKICAgICBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0
ZXJzKCkgLSBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCk7CiAgICAgaWYgKGFyZ0NvdW50ID4gQXJn
dW1lbnRzOjpNYXhBcmd1bWVudHMgfHwgIXN0YWNrLT5lbnN1cmVDYXBhY2l0eUZvcihuZXdDYWxs
RnJhbWUtPnJlZ2lzdGVycygpKSkgewotICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCAgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwor
ICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAJKHJldmlzaW9uIDE2MDk2MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNTAsNyArNTEsNyBAQCBKU1N0YWNrOjpKU1N0YWNrKFZN
JiB2bSwgc2l6ZV90IGNhcGFjaXR5CiAgICAgQVNTRVJUKGNhcGFjaXR5ICYmIGlzUGFnZUFsaWdu
ZWQoY2FwYWNpdHkpKTsKIAogICAgIG1fcmVzZXJ2YXRpb24gPSBQYWdlUmVzZXJ2YXRpb246OnJl
c2VydmUocm91bmRVcEFsbG9jYXRpb25TaXplKGNhcGFjaXR5ICogc2l6ZW9mKFJlZ2lzdGVyKSwg
Y29tbWl0U2l6ZSksIE9TQWxsb2NhdG9yOjpKU1ZNU3RhY2tQYWdlcyk7Ci0gICAgdXBkYXRlU3Rh
Y2tMaW1pdChoaWdoQWRkcmVzcygpKTsKKyAgICBzZXRTdGFja0xpbWl0KGhpZ2hBZGRyZXNzKCkp
OwogICAgIG1fY29tbWl0RW5kID0gaGlnaEFkZHJlc3MoKTsKICAgICAKICAgICBtX2xhc3RTdGFj
a1RvcCA9IGJhc2VPZlN0YWNrKCk7CkBAIC03Myw3ICs3NCw3IEBAIGJvb2wgSlNTdGFjazo6Z3Jv
d1Nsb3dDYXNlKFJlZ2lzdGVyKiBuZXcKICAgICAvLyBJZiB3ZSBoYXZlIGFscmVhZHkgY29tbWl0
dGVkIGVub3VnaCBtZW1vcnkgdG8gc2F0aXNmeSB0aGlzIHJlcXVlc3QsCiAgICAgLy8ganVzdCB1
cGRhdGUgdGhlIGVuZCBwb2ludGVyIGFuZCByZXR1cm4uCiAgICAgaWYgKG5ld0VuZCA+PSBtX2Nv
bW1pdEVuZCkgewotICAgICAgICB1cGRhdGVTdGFja0xpbWl0KG5ld0VuZCk7CisgICAgICAgIHNl
dFN0YWNrTGltaXQobmV3RW5kKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC04
OSw3ICs5MCw3IEBAIGJvb2wgSlNTdGFjazo6Z3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKiBuZXcKICAg
ICBtX3Jlc2VydmF0aW9uLmNvbW1pdChyZWludGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdEVu
ZCkgLSBkZWx0YSwgZGVsdGEpOwogICAgIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGRlbHRhKTsK
ICAgICBtX2NvbW1pdEVuZCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFJlZ2lzdGVyKj4ocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4obV9jb21taXRFbmQpIC0gZGVsdGEpOwotICAgIHVwZGF0ZVN0YWNr
TGltaXQobmV3RW5kKTsKKyAgICBzZXRTdGFja0xpbWl0KG5ld0VuZCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTE3NSw0ICsxNzYsMTcgQEAgdm9pZCBKU1N0YWNrOjpkaXNhYmxlRXJyb3JT
dGFja1Jlc2VydmUoKQogICAgIH0KIH0KIAordm9pZCBKU1N0YWNrOjp1cGRhdGVTdGFja0xpbWl0
KCkKK3sKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIGlmIChtX3ZtLmludGVycHJldGVy
LT5pc0luRXJyb3JIYW5kbGluZ01vZGUoKSkKKyAgICAgICAgZW5hYmxlRXJyb3JTdGFja1Jlc2Vy
dmUoKTsKKyAgICBlbHNlCisgICAgICAgIGRpc2FibGVFcnJvclN0YWNrUmVzZXJ2ZSgpOworI2Vs
c2UKKyAgICBpZiAobV92bS5lbnRyeVNjb3BlKQorICAgICAgICBtX3ZtLmVudHJ5U2NvcGUtPnVw
ZGF0ZVN0YWNrTGltaXQoKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAkocmV2aXNpb24g
MTYwOTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAko
d29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAgICAgICAgIGJvb2wgZW5zdXJlQ2FwYWNpdHlGb3IoUmVnaXN0ZXIqIG5ld1RvcE9mU3RhY2sp
OwogCisgICAgICAgIHZvaWQgdXBkYXRlU3RhY2tMaW1pdCgpOworCiAgICAgICAgIHZvaWQgZ2F0
aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKICAgICAgICAgdm9pZCBn
YXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYsIEpJVFN0dWJSb3V0aW5l
U2V0JiwgQ29kZUJsb2NrU2V0Jik7CiAgICAgICAgIHZvaWQgc2FuaXRpemVTdGFjaygpOwpAQCAt
MTA1LDkgKzEwNyw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgY29udGFpbnNB
ZGRyZXNzKFJlZ2lzdGVyKiBhZGRyZXNzKSB7IHJldHVybiAobG93QWRkcmVzcygpIDw9IGFkZHJl
c3MgJiYgYWRkcmVzcyA8PSBoaWdoQWRkcmVzcygpKTsgfQogCi0gICAgICAgIHZvaWQgZW5hYmxl
RXJyb3JTdGFja1Jlc2VydmUoKTsKLSAgICAgICAgdm9pZCBkaXNhYmxlRXJyb3JTdGFja1Jlc2Vy
dmUoKTsKLQogI2lmIEVOQUJMRShERUJVR19KU1NUQUNLKQogICAgICAgICB2b2lkIGluc3RhbGxG
ZW5jZShDYWxsRnJhbWUqLCBjb25zdCBjaGFyICpmdW5jdGlvbiA9ICIiLCBpbnQgbGluZU5vID0g
MCk7CiAgICAgICAgIHZvaWQgdmFsaWRhdGVGZW5jZShDYWxsRnJhbWUqLCBjb25zdCBjaGFyICpm
dW5jdGlvbiA9ICIiLCBpbnQgbGluZU5vID0gMCk7CkBAIC0xNTIsNyArMTUxLDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAgICAg
ICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwogCi0gICAgICAgIHZvaWQgdXBk
YXRlU3RhY2tMaW1pdChSZWdpc3RlciogbmV3RW5kKTsKKyAgICAgICAgdm9pZCBzZXRTdGFja0xp
bWl0KFJlZ2lzdGVyKiBuZXdFbmQpOworCisgICAgICAgIHZvaWQgZW5hYmxlRXJyb3JTdGFja1Jl
c2VydmUoKTsKKyAgICAgICAgdm9pZCBkaXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKTsKIAogICAg
ICAgICBWTSYgbV92bTsKICAgICAgICAgUmVnaXN0ZXIqIG1fZW5kOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2tJbmxpbmVzLmgJKHJldmlz
aW9uIDE2MDk2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNr
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgaW5saW5lIHZvaWQg
SlNTdGFjazo6c2hyaW5rKFJlZ2lzdGVyKiBuZQogewogICAgIGlmIChuZXdFbmQgPj0gbV9lbmQp
CiAgICAgICAgIHJldHVybjsKLSAgICB1cGRhdGVTdGFja0xpbWl0KG5ld0VuZCk7CisgICAgc2V0
U3RhY2tMaW1pdChuZXdFbmQpOwogICAgIGlmIChtX2VuZCA9PSBiYXNlT2ZTdGFjaygpICYmICht
X2NvbW1pdEVuZCAtIGJhc2VPZlN0YWNrKCkpID49IG1heEV4Y2Vzc0NhcGFjaXR5KQogICAgICAg
ICByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKIH0KQEAgLTE4MiwxMSArMTgyLDExIEBAIGlubGlu
ZSBib29sIEpTU3RhY2s6Omdyb3coUmVnaXN0ZXIqIHRvcE8KICAgICByZXR1cm4gZ3Jvd1Nsb3dD
YXNlKG5ld0VuZCk7CiB9CiAKLWlubGluZSB2b2lkIEpTU3RhY2s6OnVwZGF0ZVN0YWNrTGltaXQo
UmVnaXN0ZXIqIG5ld0VuZCkKK2lubGluZSB2b2lkIEpTU3RhY2s6OnNldFN0YWNrTGltaXQoUmVn
aXN0ZXIqIG5ld0VuZCkKIHsKICAgICBtX2VuZCA9IG5ld0VuZDsKICNpZiBFTkFCTEUoTExJTlRf
Q19MT09QKQotICAgIG1fdm0uc2V0SlNTdGFja0xpbWl0KG5ld0VuZCk7CisgICAgbV92bS5zZXRK
U1N0YWNrTGltaXQobmV3RW5kICsgMSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNjA5NjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03OSw2ICs3OSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNr
T3YKICAgICAgICAgY2FsbGVyRnJhbWUgPSBleGVjOwogCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbGVyRnJhbWUpOworICAgIEludGVycHJldGVyOjpFcnJvckhhbmRs
aW5nTW9kZSBtb2RlKGNhbGxlckZyYW1lKTsKICAgICB2bS0+dGhyb3dFeGNlcHRpb24oY2FsbGVy
RnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSkpOwogfQogCkBAIC05
Miw3ICs5Myw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHkKIAog
ICAgIGludDMyX3QgbWlzc2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNr
Rm9yKGV4ZWMsICZzdGFjaywgQ29kZUZvckNhbGwpOwogICAgIGlmIChtaXNzaW5nQXJnQ291bnQg
PCAwKQotICAgICAgICB2bS0+dGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSkpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihjYWxsZXJGcmFtZSk7CiAKICAgICByZXR1cm4gbWlzc2luZ0FyZ0NvdW50OwogfQpAQCAt
MTA3LDcgKzEwOCw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3QK
IAogICAgIGludDMyX3QgbWlzc2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNo
ZWNrRm9yKGV4ZWMsICZzdGFjaywgQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgaWYgKG1pc3NpbmdB
cmdDb3VudCA8IDApCi0gICAgICAgIHZtLT50aHJvd0V4Y2VwdGlvbihjYWxsZXJGcmFtZSwgY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKSk7CisgICAgICAgIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKTsKIAogICAgIHJldHVybiBtaXNzaW5nQXJnQ291bnQ7
CiB9CkBAIC03MDMsNyArNzA0LDcgQEAgaW5saW5lIGNoYXIqIGxpbmtGb3IoCiAgICAgICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbihleGVjQ2FsbGVlLCBjYWxsZWUt
PnNjb3BlKCksIGtpbmQpOwogICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIHZtLT50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOworICAg
ICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CiAgICAgICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25G
cm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAg
ICAgICAgIH0KICAgICAgICAgY29kZUJsb2NrID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb2RlQmxv
Y2tGb3Ioa2luZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE2MDk2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSw2ICs0NTEs
NyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzdGFja19jaGVjaykKICNlbmRpZgogICAgIHsKICAg
ICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIEludGVycHJldGVyOjpF
cnJvckhhbmRsaW5nTW9kZSBtb2RlKGV4ZWMpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6Omlu
dGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
YykpOwogICAgICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oZXhlYyk7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3Iu
aAkocmV2aXNpb24gMTYwOTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw4ICs5NCwxMCBAQCBzdHJ1Y3QgUGFyc2Vy
RXJyb3IgewogICAgICAgICAgICAgcmV0dXJuIGFkZEVycm9ySW5mbyhnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCBtX21lc3NhZ2UpLCBt
X2xpbmUsIHNvdXJjZSk7CiAgICAgICAgIGNhc2UgRXZhbEVycm9yOgogICAgICAgICAgICAgcmV0
dXJuIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgbV9tZXNzYWdlKTsKLSAgICAgICAg
Y2FzZSBTdGFja092ZXJmbG93OgorICAgICAgICBjYXNlIFN0YWNrT3ZlcmZsb3c6IHsKKyAgICAg
ICAgICAgIEludGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZSBtb2RlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpKTsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgfQogICAgICAgICBjYXNlIE91dE9mTWVtb3J5Ogog
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNjA5NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAs
NiArMTkwLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjawogICAg
IGludCBzbG90c1RvQWRkID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZ2
bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNhbGwpOwogICAgIGlmIChzbG90c1RvQWRk
IDwgMCkgewogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgSW50
ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlIG1vZGUoZXhlYyk7CiAgICAgICAgIENvbW1vblNs
b3dQYXRoczo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZs
b3dFcnJvcihleGVjKSk7CiAgICAgICAgIFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CiAgICAgfQpAQCAtMjAyLDYgKzIwMyw3
IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHkKICAgICBpbnQgc2xv
dHNUb0FkZCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmdm0uaW50ZXJw
cmV0ZXItPnN0YWNrKCksIENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGlmIChzbG90c1RvQWRkIDwg
MCkgewogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgSW50ZXJw
cmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlIG1vZGUoZXhlYyk7CiAgICAgICAgIENvbW1vblNsb3dQ
YXRoczo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dF
cnJvcihleGVjKSk7CiAgICAgICAgIFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDE2MDk2MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NTQsNyArNjU0LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxr
KEpTVmFsdQogICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChpc0pTQXJyYXkoYXNPYmplY3QoaW5WYWx1ZSkpIHx8IGFzT2Jq
ZWN0KGluVmFsdWUpLT5pbmhlcml0cyhKU0FycmF5OjppbmZvKCkpKTsKICAgICAgICAgICAgICAg
ICBpZiAob2JqZWN0U3RhY2suc2l6ZSgpICsgYXJyYXlTdGFjay5zaXplKCkgPiBtYXhpbXVtRmls
dGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9leGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKG1fZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9leGVj
KTsKIAogICAgICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShpblZhbHVlKTsK
ICAgICAgICAgICAgICAgICBhcnJheVN0YWNrLnB1c2goYXJyYXkpOwpAQCAtNzA1LDcgKzcwNSw3
IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAg
ICAgICBBU1NFUlQoaW5WYWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
IWlzSlNBcnJheShhc09iamVjdChpblZhbHVlKSkgJiYgIWFzT2JqZWN0KGluVmFsdWUpLT5pbmhl
cml0cyhKU0FycmF5OjppbmZvKCkpKTsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0U3RhY2su
c2l6ZSgpICsgYXJyYXlTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbV9leGVjLT52bSgpLnRocm93RXhjZXB0aW9uKG1fZXhl
YywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjKTsKIAogICAgICAgICAgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChpblZhbHVlKTsKICAgICAgICAgICAgICAg
ICBvYmplY3RTdGFjay5wdXNoKG9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcAkocmV2aXNp
b24gMTYwOTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVjdXJz
aW9uQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIEpTVmFsdWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6dGhyb3dTdGFja092ZXJm
bG93RXJyb3IoKQogewotICAgIHJldHVybiBtX2V4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24obV9l
eGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IobV9leGVjKSk7CisgICAgcmV0dXJuIEpTQzo6
dGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjKTsKIH0KIAogSlNWYWx1ZSBTdHJpbmdSZWN1
cnNpb25DaGVja2VyOjplbXB0eVN0cmluZygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHJldmlzaW9uIDE2MDk2MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDggKzUzLDcgQEAgVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0mIHZtLCBKU0ds
bwogICAgIC8vIENsZWFyIHRoZSBleGNlcHRpb24gc3RhY2sgYmV0d2VlbiBlbnRyaWVzCiAgICAg
dm0uY2xlYXJFeGNlcHRpb25TdGFjaygpOwogCi0gICAgdm9pZCogbGltaXQgPSBtX3N0YWNrLnJl
Y3Vyc2lvbkxpbWl0KHJlcXVpcmVkQ2FwYWNpdHkoKSk7Ci0gICAgdm0uc2V0U3RhY2tMaW1pdChs
aW1pdCk7CisgICAgdXBkYXRlU3RhY2tMaW1pdCgpOwogICAgIHZtLnNldExhc3RTdGFja1RvcCht
X3N0YWNrLm9yaWdpbigpKTsKIH0KIApAQCAtNjUsNiArNjQsMTIgQEAgVk1FbnRyeVNjb3BlOjp+
Vk1FbnRyeVNjb3BlKCkKICAgICBtX3ZtLnNldExhc3RTdGFja1RvcChtX3ByZXZMYXN0U3RhY2tU
b3ApOwogfQogCit2b2lkIFZNRW50cnlTY29wZTo6dXBkYXRlU3RhY2tMaW1pdCgpCit7CisgICAg
dm9pZCogbGltaXQgPSBtX3N0YWNrLnJlY3Vyc2lvbkxpbWl0KHJlcXVpcmVkQ2FwYWNpdHkoKSk7
CisgICAgbV92bS5zZXRTdGFja0xpbWl0KGxpbWl0KTsKK30KKwogc2l6ZV90IFZNRW50cnlTY29w
ZTo6cmVxdWlyZWRDYXBhY2l0eSgpIGNvbnN0CiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyID0gbV92bS5pbnRlcnByZXRlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNRW50cnlTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNRW50cnlTY29wZS5oCShyZXZpc2lvbiAxNjA5NjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVk1FbnRyeVNjb3BlKFZNJiwg
SlNHbG9iYWxPYmplY3QqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+Vk1FbnRyeVNjb3BlKCk7
CiAKKyAgICB2b2lkIHVwZGF0ZVN0YWNrTGltaXQoKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219847</attachid>
            <date>2013-12-21 03:46:59 -0800</date>
            <delta_ts>2013-12-29 08:21:25 -0800</delta_ts>
            <desc>patch 2.</desc>
            <filename>bug-126009.patch</filename>
            <type>text/plain</type>
            <size>19896</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwOTYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBA
CisyMDEzLTEyLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
U3RhY2s6IFVwZGF0ZSB0aGUgVk1FbnRyeVNjb3BlJ3Mgc3RhY2sgbGltaXQgd2hlbiB0aGUgVk0g
ZW50ZXJzL2V4aXRzIEVycm9yTW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNjAwOS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAxLiBSZW5hbWVkIEpTU3RhY2s6OnVwZGF0ZVN0YWNrTGltaXQoKSB0
byBzZXRTdGFja0xpbWl0KCkgYmVjYXVzZSB0aGF0CisgICAgICAgICAgIGlzIHdoYXQgaXQgYWN0
dWFsbHkgZG9lcy4gV2UncmUgZ29pbmcgdG8gcmVwdXJwb3NlIHRoZSB1cGRhdGVTdGFja0xpbWl0
CisgICAgICAgICAgIG5hbWUgZm9yIGFub3RoZXIgZnVuY3Rpb24uCisKKyAgICAgICAgMi4gRml4
ZWQgYSBidWcgaW4gc2V0U3RhY2tMaW1pdCgpIHdoZXJlIHNldEpTU3RhY2tMaW1pdCgpIHdhcyBj
YWxsZWQgd2l0aAorICAgICAgICAgICB0aGUgdmFsdWUgb2YgbmV3RW5kIHdoaWNoIHBvaW50cyBw
YXN0IHRoZSBlbmQgb2YgdGhlIHN0YWNrLiBUaGUgZml4IGlzCisgICAgICAgICAgIHRvIGFkZCAx
IHRvIHBvaW50IGF0IHRoZSBsYXN0IHNsb3QgYXQgdG9wIG9mIHRoZSBzdGFjay4gVGhpcyBpcyB3
aGF0IGlzCisgICAgICAgICAgIHRoZSB1c2VycyBvZiB0aGUganNTdGFja0xpbWl0IHZhbHVlIGV4
cGVjdHMuCisKKyAgICAgICAgMy4gSW50cm9kdWNlIHRoZSBuZXcgSlNTdGFjazo6dXBkYXRlU3Rh
Y2tMaW1pdCgpIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvcgorICAgICAgICAgICByZS1zZXR0aW5n
IHRoZSBjdXJyZW50IHN0YWNrIGxpbWl0LiB1cGRhdGVTdGFja0xpbWl0KCkgd2lsbCBoYW5kbGUg
Ym90aAorICAgICAgICAgICBjYXNlcyBvZiB0aGUgSlMgc3RhY2sgYmVpbmcgb24gdGhlIEMgc3Rh
Y2sgb3IgYSBzZXBhcmF0ZSBzdGFjay4KKworICAgICAgICAgICBGb3IgdGhlIEMgc3RhY2sgY2Fz
ZSwgSlN0YWNrOjp1cGRhdGVTdGFja0xpbWl0KCkgd2lsbCBjaGVjayBpZiBhCisgICAgICAgICAg
IFZNRW50cnlTY29wZSBoYXMgYmVlbiBpbnN0YWxsZWQgaW4gdGhlIFZNLiBJZiBzbywgaXQgd2ls
bCB0ZWxsIHRoZQorICAgICAgICAgICBWTUVudHJ5U2NvcGUgdG8gZG8gdGhlIHJlYWwgd29yayBv
ZiB1cGRhdGluZyB0aGUgc3RhY2sgbGltaXQuIFRoZQorICAgICAgICAgICBWTUVudHJ5U2NvcGUg
d2lsbCB0YWtlIGludG8gYWNjb3VudCB3aGV0aGVyIHRoZSBWTSdzIEludGVycHJldGVyIGlzCisg
ICAgICAgICAgIGluIGFuIGVycm9yIGhhbmRsaW5nIG1vZGUgb3Igbm90IHdoZW4gZGV0ZXJtaW5p
bmcgdGhlIGFtb3VudCBvZiBob3N0CisgICAgICAgICAgIHpvbmUgc3BhY2UgdG8gcmVzZXJ2ZSBv
biB0aGUgc3RhY2sgZm9yIGNvbXB1dGluZyB0aGUgc3RhY2sgbGltaXQgdmFsdWUuCisKKyAgICAg
ICAgNC4gSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlIG5vdyBjYWxscyBKU1N0YWNrOjp1
cGRhdGVTdGFja0xpbWl0CisgICAgICAgICAgIHdoZW5ldmVyIGl0IGVudGVycyAvIGV4aXQgZXJy
b3IgaGFuZGxpbmcgbW9kZS4gVGhpcyBhbGxvd3MgdGhlIHN0YWNrCisgICAgICAgICAgIGxpbWl0
IHRvIGNoYW5nZSB3aXRoIHRoZSBlcnJvciBtb2RlIGNoYW5nZS4KKworICAgICAgICA1LiBBIGxv
dCBvZiBwbGFjZXMgaW4gdGhlIGNvZGUgd2VyZSB0aHJvd2luZyBTdGFja092ZXJmbG93RXJyb3Jz
IGJ5CisgICAgICAgICAgIGNyZWF0aW5nIGFuZCB0aHJvd2luZyB0aGUgZXJyb3IgdGhlbXNlbHZl
cyBpbnN0ZWFkIG9mIHVzaW5nIHRoZQorICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cigpIGhlbHBlciBmdW5jdGlvbi4gQXMgYSByZXN1bHQsIHRoZSBWTSBuZXZlcgorICAgICAgICAg
ICBnb3QgdGhlIGNoYW5jZSB0byBlbnRlciBlcnJvciBtb2RlLiBUaGlzIGlzIGEgYnVnIGFuZCBp
cyBub3cgZml4ZWQgYnkKKyAgICAgICAgICAgbWFraW5nIGFsbCB0aGVzZSBzaXRlcyB1c2UgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoKSBpbnN0ZWFkLgorCisgICAgICAgICAgIEZvciBzaXRlcyB0
aGF0IGNhbid0IHVzZSB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcigpLCBJIHVwZGF0ZWQgdGhlbSB0
bworICAgICAgICAgICBpbnN0YW50aWF0ZSBJbnRlcnByZXRlcjo6RXJyb3JIYW5kbGluZ01vZGUg
dG8gc2V0IHRoZSBlcnJvciBtb2RlCisgICAgICAgICAgIGFwcHJvcHJpYXRlbHkuCisKKyAgICAg
ICAgNi4gTWFkZSBKU1N0YWNrOjplbmFibGVFcnJvclN0YWNrUmVzZXJ2ZSgpIGFuZCBkaXNhYmxl
RXJyb3JTdGFja1Jlc2VydmUoKQorICAgICAgICAgICBwcml2YXRlLiBUaGV5IGFyZSBubyBsb25n
ZXIgY2FsbGVkIGZyb20gb3V0c2lkZSBvZiBKU1N0YWNrLgorCisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6RXJyb3JIYW5k
bGluZ01vZGU6OkVycm9ySGFuZGxpbmdNb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OkVycm9ySGFuZGxpbmdNb2RlOjp+RXJyb3JIYW5kbGluZ01vZGUpOgorICAgICAgICAoSlNDOjpz
aXplRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0YWNrLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNTdGFjazo6SlNTdGFjayk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6
Omdyb3dTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OnVwZGF0ZVN0YWNrTGltaXQp
OgorICAgICAgICAqIGludGVycHJldGVyL0pTU3RhY2suaDoKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9KU1N0YWNrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1N0YWNrOjpzaHJpbmspOgorICAg
ICAgICAoSlNDOjpKU1N0YWNrOjpzZXRTdGFja0xpbWl0KToKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAg
ICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXJFcnJvci5oOgorICAgICAgICAoSlNDOjpQYXJzZXJFcnJvcjo6dG9FcnJvck9iamVjdCk6
CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpT
TE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1JlY3Vyc2lv
bkNoZWNrZXIuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdSZWN1cnNpb25DaGVja2VyOjp0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICogcnVudGltZS9WTUVudHJ5U2NvcGUuY3Bw
OgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZSk6CisgICAgICAgIChK
U0M6OlZNRW50cnlTY29wZTo6dXBkYXRlU3RhY2tMaW1pdCk6CisgICAgICAgICogcnVudGltZS9W
TUVudHJ5U2NvcGUuaDoKKwogMjAxMy0xMi0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZ2lzdGVyIHJlc3RvcmF0aW9uIHRodW5rIHNob3VsZCByZXN0b3Jl
IHRoZSBBcmd1bWVudENvdW50IGFmdGVyIGl0IHJlc3RvcmVzIHJlZ2lzdGVycwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAxNjA5NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw5ICs5NCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlOjpFcnJvckhhbmRsaW5nTW9kZShF
eGVjU3RhdGUgKmV4ZWMpCiAgICAgOiBtX2ludGVycHJldGVyKCpleGVjLT5pbnRlcnByZXRlcigp
KQogewotICAgIGlmICghbV9pbnRlcnByZXRlci5tX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRyeSkK
LSAgICAgICAgbV9pbnRlcnByZXRlci5zdGFjaygpLmVuYWJsZUVycm9yU3RhY2tSZXNlcnZlKCk7
CiAgICAgbV9pbnRlcnByZXRlci5tX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRyeSsrOworICAgIG1f
aW50ZXJwcmV0ZXIuc3RhY2soKS51cGRhdGVTdGFja0xpbWl0KCk7CiB9CiAKIEludGVycHJldGVy
OjpFcnJvckhhbmRsaW5nTW9kZTo6fkVycm9ySGFuZGxpbmdNb2RlKCkKQEAgLTEwNCw3ICsxMDMs
NyBAQCBJbnRlcnByZXRlcjo6RXJyb3JIYW5kbGluZ01vZGU6On5FcnJvckhhCiAgICAgbV9pbnRl
cnByZXRlci5tX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRyeS0tOwogICAgIEFTU0VSVChtX2ludGVy
cHJldGVyLm1fZXJyb3JIYW5kbGluZ01vZGVSZWVudHJ5ID49IDApOwogICAgIGlmICghbV9pbnRl
cnByZXRlci5tX2Vycm9ySGFuZGxpbmdNb2RlUmVlbnRyeSkKLSAgICAgICAgbV9pbnRlcnByZXRl
ci5zdGFjaygpLmRpc2FibGVFcnJvclN0YWNrUmVzZXJ2ZSgpOworICAgICAgICBtX2ludGVycHJl
dGVyLnN0YWNrKCkudXBkYXRlU3RhY2tMaW1pdCgpOwogfQogCiBKU1ZhbHVlIGV2YWwoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCkBAIC0xNjEsNyArMTYwLDcgQEAgQ2FsbEZyYW1lKiBzaXplRnJhbWVG
b3JWYXJhcmdzKENhbGxGcmFtZQogICAgICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9m
ZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygp
LCAtZmlyc3RGcmVlUmVnaXN0ZXIgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlclNpemUgKyAxKTsKICAgICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxs
RnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVk
Q2FsbGVlRnJhbWVPZmZzZXQpOwogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyArIDEgfHwgIXN0YWNrLT5lbnN1cmVDYXBhY2l0
eUZvcihuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkgewotICAgICAgICAgICAgY2FsbEZyYW1l
LT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxGcmFtZSkpOworICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZy
YW1lKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBu
ZXdDYWxsRnJhbWU7CkBAIC0xNzIsNyArMTcxLDcgQEAgQ2FsbEZyYW1lKiBzaXplRnJhbWVGb3JW
YXJhcmdzKENhbGxGcmFtZQogICAgICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNl
dCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCAg
LWZpcnN0RnJlZVJlZ2lzdGVyICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNr
OjpDYWxsRnJhbWVIZWFkZXJTaXplICsgMSk7CiAgICAgICAgIENhbGxGcmFtZSogbmV3Q2FsbEZy
YW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBhZGRlZENh
bGxlZUZyYW1lT2Zmc2V0KTsKICAgICAgICAgaWYgKCFzdGFjay0+ZW5zdXJlQ2FwYWNpdHlGb3Io
bmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpIHsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+dm0o
KS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxs
RnJhbWUpKTsKKyAgICAgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV3Q2Fs
bEZyYW1lOwpAQCAtMTg5LDcgKzE4OCw3IEBAIENhbGxGcmFtZSogc2l6ZUZyYW1lRm9yVmFyYXJn
cyhDYWxsRnJhbWUKICAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgLWZpcnN0
RnJlZVJlZ2lzdGVyICsgQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7CiAgICAg
ICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1l
LT5yZWdpc3RlcnMoKSAtIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKICAgICAgICAgaWYgKGFy
Z0NvdW50ID4gQXJndW1lbnRzOjpNYXhBcmd1bWVudHMgfHwgIXN0YWNrLT5lbnN1cmVDYXBhY2l0
eUZvcihuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkgewotICAgICAgICAgICAgY2FsbEZyYW1l
LT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxGcmFtZSkpOworICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZy
YW1lKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBu
ZXdDYWxsRnJhbWU7CkBAIC0yMDEsNyArMjAwLDcgQEAgQ2FsbEZyYW1lKiBzaXplRnJhbWVGb3JW
YXJhcmdzKENhbGxGcmFtZQogICAgICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNl
dCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCAt
Zmlyc3RGcmVlUmVnaXN0ZXIgKyBDYWxsRnJhbWU6Om9mZnNldEZvcihhcmdDb3VudCArIDEpKTsK
ICAgICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxs
RnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwogICAgICAgICBp
ZiAoYXJnQ291bnQgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyB8fCAhc3RhY2stPmVuc3VyZUNh
cGFjaXR5Rm9yKG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7Ci0gICAgICAgICAgICBjYWxs
RnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihj
YWxsRnJhbWUpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIG5ld0NhbGxGcmFtZTsKQEAgLTIxMiw3ICsyMTEsNyBAQCBDYWxsRnJhbWUqIHNpemVGcmFt
ZUZvclZhcmFyZ3MoQ2FsbEZyYW1lCiAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZz
ZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwg
LWZpcnN0RnJlZVJlZ2lzdGVyICsgQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7
CiAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJh
bWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwogICAgIGlmIChhcmdD
b3VudCA+IEFyZ3VtZW50czo6TWF4QXJndW1lbnRzIHx8ICFzdGFjay0+ZW5zdXJlQ2FwYWNpdHlG
b3IobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpIHsKLSAgICAgICAgY2FsbEZyYW1lLT52bSgp
LnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxs
RnJhbWUpKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVybiBuZXdDYWxsRnJhbWU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCShyZXZpc2lv
biAxNjA5NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNvbnNlcnZh
dGl2ZVJvb3RzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJWTUVudHJ5
U2NvcGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUwLDcgKzUxLDcgQEAgSlNTdGFjazo6
SlNTdGFjayhWTSYgdm0sIHNpemVfdCBjYXBhY2l0eQogICAgIEFTU0VSVChjYXBhY2l0eSAmJiBp
c1BhZ2VBbGlnbmVkKGNhcGFjaXR5KSk7CiAKICAgICBtX3Jlc2VydmF0aW9uID0gUGFnZVJlc2Vy
dmF0aW9uOjpyZXNlcnZlKHJvdW5kVXBBbGxvY2F0aW9uU2l6ZShjYXBhY2l0eSAqIHNpemVvZihS
ZWdpc3RlciksIGNvbW1pdFNpemUpLCBPU0FsbG9jYXRvcjo6SlNWTVN0YWNrUGFnZXMpOwotICAg
IHVwZGF0ZVN0YWNrTGltaXQoaGlnaEFkZHJlc3MoKSk7CisgICAgc2V0U3RhY2tMaW1pdChoaWdo
QWRkcmVzcygpKTsKICAgICBtX2NvbW1pdEVuZCA9IGhpZ2hBZGRyZXNzKCk7CiAgICAgCiAgICAg
bV9sYXN0U3RhY2tUb3AgPSBiYXNlT2ZTdGFjaygpOwpAQCAtNzMsNyArNzQsNyBAQCBib29sIEpT
U3RhY2s6Omdyb3dTbG93Q2FzZShSZWdpc3RlciogbmV3CiAgICAgLy8gSWYgd2UgaGF2ZSBhbHJl
YWR5IGNvbW1pdHRlZCBlbm91Z2ggbWVtb3J5IHRvIHNhdGlzZnkgdGhpcyByZXF1ZXN0LAogICAg
IC8vIGp1c3QgdXBkYXRlIHRoZSBlbmQgcG9pbnRlciBhbmQgcmV0dXJuLgogICAgIGlmIChuZXdF
bmQgPj0gbV9jb21taXRFbmQpIHsKLSAgICAgICAgdXBkYXRlU3RhY2tMaW1pdChuZXdFbmQpOwor
ICAgICAgICBzZXRTdGFja0xpbWl0KG5ld0VuZCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIApAQCAtODksNyArOTAsNyBAQCBib29sIEpTU3RhY2s6Omdyb3dTbG93Q2FzZShSZWdpc3Rl
ciogbmV3CiAgICAgbV9yZXNlcnZhdGlvbi5jb21taXQocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
bV9jb21taXRFbmQpIC0gZGVsdGEsIGRlbHRhKTsKICAgICBhZGRUb0NvbW1pdHRlZEJ5dGVDb3Vu
dChkZWx0YSk7CiAgICAgbV9jb21taXRFbmQgPSByZWludGVycHJldF9jYXN0X3B0cjxSZWdpc3Rl
cio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fY29tbWl0RW5kKSAtIGRlbHRhKTsKLSAgICB1
cGRhdGVTdGFja0xpbWl0KG5ld0VuZCk7CisgICAgc2V0U3RhY2tMaW1pdChuZXdFbmQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xNzUsNCArMTc2LDE2IEBAIHZvaWQgSlNTdGFjazo6ZGlz
YWJsZUVycm9yU3RhY2tSZXNlcnZlKCkKICAgICB9CiB9CiAKK3ZvaWQgSlNTdGFjazo6dXBkYXRl
U3RhY2tMaW1pdCgpCit7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICBpZiAobV92bS5p
bnRlcnByZXRlci0+aXNJbkVycm9ySGFuZGxpbmdNb2RlKCkpCisgICAgICAgIGVuYWJsZUVycm9y
U3RhY2tSZXNlcnZlKCk7CisgICAgZWxzZQorICAgICAgICBkaXNhYmxlRXJyb3JTdGFja1Jlc2Vy
dmUoKTsKKyNlbmRpZgorICAgIGlmIChtX3ZtLmVudHJ5U2NvcGUpCisgICAgICAgIG1fdm0uZW50
cnlTY29wZS0+dXBkYXRlU3RhY2tMaW1pdCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAkocmV2aXNp
b24gMTYwOTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2su
aAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgCiAgICAgICAgIGJvb2wgZW5zdXJlQ2FwYWNpdHlGb3IoUmVnaXN0ZXIqIG5ld1RvcE9mU3Rh
Y2spOwogCisgICAgICAgIHZvaWQgdXBkYXRlU3RhY2tMaW1pdCgpOworCiAgICAgICAgIHZvaWQg
Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKICAgICAgICAgdm9p
ZCBnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYsIEpJVFN0dWJSb3V0
aW5lU2V0JiwgQ29kZUJsb2NrU2V0Jik7CiAgICAgICAgIHZvaWQgc2FuaXRpemVTdGFjaygpOwpA
QCAtMTA1LDkgKzEwNyw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgY29udGFp
bnNBZGRyZXNzKFJlZ2lzdGVyKiBhZGRyZXNzKSB7IHJldHVybiAobG93QWRkcmVzcygpIDw9IGFk
ZHJlc3MgJiYgYWRkcmVzcyA8PSBoaWdoQWRkcmVzcygpKTsgfQogCi0gICAgICAgIHZvaWQgZW5h
YmxlRXJyb3JTdGFja1Jlc2VydmUoKTsKLSAgICAgICAgdm9pZCBkaXNhYmxlRXJyb3JTdGFja1Jl
c2VydmUoKTsKLQogI2lmIEVOQUJMRShERUJVR19KU1NUQUNLKQogICAgICAgICB2b2lkIGluc3Rh
bGxGZW5jZShDYWxsRnJhbWUqLCBjb25zdCBjaGFyICpmdW5jdGlvbiA9ICIiLCBpbnQgbGluZU5v
ID0gMCk7CiAgICAgICAgIHZvaWQgdmFsaWRhdGVGZW5jZShDYWxsRnJhbWUqLCBjb25zdCBjaGFy
ICpmdW5jdGlvbiA9ICIiLCBpbnQgbGluZU5vID0gMCk7CkBAIC0xNTIsNyArMTUxLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAg
ICAgICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwogCi0gICAgICAgIHZvaWQg
dXBkYXRlU3RhY2tMaW1pdChSZWdpc3RlciogbmV3RW5kKTsKKyAgICAgICAgdm9pZCBzZXRTdGFj
a0xpbWl0KFJlZ2lzdGVyKiBuZXdFbmQpOworCisgICAgICAgIHZvaWQgZW5hYmxlRXJyb3JTdGFj
a1Jlc2VydmUoKTsKKyAgICAgICAgdm9pZCBkaXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKTsKIAog
ICAgICAgICBWTSYgbV92bTsKICAgICAgICAgUmVnaXN0ZXIqIG1fZW5kOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2tJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2tJbmxpbmVzLmgJKHJl
dmlzaW9uIDE2MDk2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0
YWNrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgaW5saW5lIHZv
aWQgSlNTdGFjazo6c2hyaW5rKFJlZ2lzdGVyKiBuZQogewogICAgIGlmIChuZXdFbmQgPj0gbV9l
bmQpCiAgICAgICAgIHJldHVybjsKLSAgICB1cGRhdGVTdGFja0xpbWl0KG5ld0VuZCk7CisgICAg
c2V0U3RhY2tMaW1pdChuZXdFbmQpOwogICAgIGlmIChtX2VuZCA9PSBiYXNlT2ZTdGFjaygpICYm
IChtX2NvbW1pdEVuZCAtIGJhc2VPZlN0YWNrKCkpID49IG1heEV4Y2Vzc0NhcGFjaXR5KQogICAg
ICAgICByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKIH0KQEAgLTE4MiwxMSArMTgyLDExIEBAIGlu
bGluZSBib29sIEpTU3RhY2s6Omdyb3coUmVnaXN0ZXIqIHRvcE8KICAgICByZXR1cm4gZ3Jvd1Ns
b3dDYXNlKG5ld0VuZCk7CiB9CiAKLWlubGluZSB2b2lkIEpTU3RhY2s6OnVwZGF0ZVN0YWNrTGlt
aXQoUmVnaXN0ZXIqIG5ld0VuZCkKK2lubGluZSB2b2lkIEpTU3RhY2s6OnNldFN0YWNrTGltaXQo
UmVnaXN0ZXIqIG5ld0VuZCkKIHsKICAgICBtX2VuZCA9IG5ld0VuZDsKICNpZiBFTkFCTEUoTExJ
TlRfQ19MT09QKQotICAgIG1fdm0uc2V0SlNTdGFja0xpbWl0KG5ld0VuZCk7CisgICAgbV92bS5z
ZXRKU1N0YWNrTGltaXQobmV3RW5kICsgMSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNjA5NjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03OSw2ICs3OSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0
YWNrT3YKICAgICAgICAgY2FsbGVyRnJhbWUgPSBleGVjOwogCiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbGVyRnJhbWUpOworICAgIEludGVycHJldGVyOjpFcnJvckhh
bmRsaW5nTW9kZSBtb2RlKGNhbGxlckZyYW1lKTsKICAgICB2bS0+dGhyb3dFeGNlcHRpb24oY2Fs
bGVyRnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSkpOwogfQogCkBA
IC05Miw3ICs5Myw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHkK
IAogICAgIGludDMyX3QgbWlzc2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNo
ZWNrRm9yKGV4ZWMsICZzdGFjaywgQ29kZUZvckNhbGwpOwogICAgIGlmIChtaXNzaW5nQXJnQ291
bnQgPCAwKQotICAgICAgICB2bS0+dGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0ZVN0
YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSkpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihjYWxsZXJGcmFtZSk7CiAKICAgICByZXR1cm4gbWlzc2luZ0FyZ0NvdW50OwogfQpA
QCAtMTA3LDcgKzEwOCw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1
Y3QKIAogICAgIGludDMyX3QgbWlzc2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0
eUNoZWNrRm9yKGV4ZWMsICZzdGFjaywgQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgaWYgKG1pc3Np
bmdBcmdDb3VudCA8IDApCi0gICAgICAgIHZtLT50aHJvd0V4Y2VwdGlvbihjYWxsZXJGcmFtZSwg
Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKSk7CisgICAgICAgIHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKTsKIAogICAgIHJldHVybiBtaXNzaW5nQXJnQ291
bnQ7CiB9CkBAIC03MDMsNyArNzA0LDcgQEAgaW5saW5lIGNoYXIqIGxpbmtGb3IoCiAgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9
IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbihleGVjQ2FsbGVlLCBjYWxs
ZWUtPnNjb3BlKCksIGtpbmQpOwogICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIHZt
LT50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwor
ICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CiAgICAgICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRp
b25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7
CiAgICAgICAgIH0KICAgICAgICAgY29kZUJsb2NrID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb2Rl
QmxvY2tGb3Ioa2luZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE2MDk2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSw2ICs0
NTEsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzdGFja19jaGVjaykKICNlbmRpZgogICAgIHsK
ICAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIEludGVycHJldGVy
OjpFcnJvckhhbmRsaW5nTW9kZSBtb2RlKGV4ZWMpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6
OmludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
ZXhlYykpOwogICAgICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oZXhl
Yyk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJFcnJv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJy
b3IuaAkocmV2aXNpb24gMTYwOTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw4ICs5NCwxMCBAQCBzdHJ1Y3QgUGFy
c2VyRXJyb3IgewogICAgICAgICAgICAgcmV0dXJuIGFkZEVycm9ySW5mbyhnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCBtX21lc3NhZ2Up
LCBtX2xpbmUsIHNvdXJjZSk7CiAgICAgICAgIGNhc2UgRXZhbEVycm9yOgogICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgbV9tZXNzYWdlKTsKLSAgICAg
ICAgY2FzZSBTdGFja092ZXJmbG93OgorICAgICAgICBjYXNlIFN0YWNrT3ZlcmZsb3c6IHsKKyAg
ICAgICAgICAgIEludGVycHJldGVyOjpFcnJvckhhbmRsaW5nTW9kZSBtb2RlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpKTsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgfQogICAgICAgICBjYXNlIE91dE9mTWVtb3J5
OgogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0
KTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNjA5NjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTAsNiArMTkwLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjawog
ICAgIGludCBzbG90c1RvQWRkID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMs
ICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwgQ29kZUZvckNhbGwpOwogICAgIGlmIChzbG90c1Rv
QWRkIDwgMCkgewogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAg
SW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlIG1vZGUoZXhlYyk7CiAgICAgICAgIENvbW1v
blNsb3dQYXRoczo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIGNyZWF0ZVN0YWNrT3Zl
cmZsb3dFcnJvcihleGVjKSk7CiAgICAgICAgIFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CiAgICAgfQpAQCAtMjAyLDYgKzIw
Myw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHkKICAgICBpbnQg
c2xvdHNUb0FkZCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmdm0uaW50
ZXJwcmV0ZXItPnN0YWNrKCksIENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGlmIChzbG90c1RvQWRk
IDwgMCkgewogICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgSW50
ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlIG1vZGUoZXhlYyk7CiAgICAgICAgIENvbW1vblNs
b3dQYXRoczo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZs
b3dFcnJvcihleGVjKSk7CiAgICAgICAgIFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDE2MDk2MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NTQsNyArNjU0LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3
YWxrKEpTVmFsdQogICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkpOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChpc0pTQXJyYXkoYXNPYmplY3QoaW5WYWx1ZSkpIHx8IGFz
T2JqZWN0KGluVmFsdWUpLT5pbmhlcml0cyhKU0FycmF5OjppbmZvKCkpKTsKICAgICAgICAgICAg
ICAgICBpZiAob2JqZWN0U3RhY2suc2l6ZSgpICsgYXJyYXlTdGFjay5zaXplKCkgPiBtYXhpbXVt
RmlsdGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9leGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKG1fZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9l
eGVjKTsKIAogICAgICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShpblZhbHVl
KTsKICAgICAgICAgICAgICAgICBhcnJheVN0YWNrLnB1c2goYXJyYXkpOwpAQCAtNzA1LDcgKzcw
NSw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAg
ICAgICAgICBBU1NFUlQoaW5WYWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQoIWlzSlNBcnJheShhc09iamVjdChpblZhbHVlKSkgJiYgIWFzT2JqZWN0KGluVmFsdWUpLT5p
bmhlcml0cyhKU0FycmF5OjppbmZvKCkpKTsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0U3Rh
Y2suc2l6ZSgpICsgYXJyYXlTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9leGVjLT52bSgpLnRocm93RXhjZXB0aW9uKG1f
ZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjKTsKIAogICAgICAgICAg
ICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChpblZhbHVlKTsKICAgICAgICAgICAg
ICAgICBvYmplY3RTdGFjay5wdXNoKG9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcAkocmV2
aXNpb24gMTYwOTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVj
dXJzaW9uQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIEpTVmFsdWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6dGhyb3dTdGFja092
ZXJmbG93RXJyb3IoKQogewotICAgIHJldHVybiBtX2V4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
bV9leGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IobV9leGVjKSk7CisgICAgcmV0dXJuIEpT
Qzo6dGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjKTsKIH0KIAogSlNWYWx1ZSBTdHJpbmdS
ZWN1cnNpb25DaGVja2VyOjplbXB0eVN0cmluZygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHJldmlzaW9uIDE2MDk2MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDggKzUzLDcgQEAgVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0mIHZtLCBK
U0dsbwogICAgIC8vIENsZWFyIHRoZSBleGNlcHRpb24gc3RhY2sgYmV0d2VlbiBlbnRyaWVzCiAg
ICAgdm0uY2xlYXJFeGNlcHRpb25TdGFjaygpOwogCi0gICAgdm9pZCogbGltaXQgPSBtX3N0YWNr
LnJlY3Vyc2lvbkxpbWl0KHJlcXVpcmVkQ2FwYWNpdHkoKSk7Ci0gICAgdm0uc2V0U3RhY2tMaW1p
dChsaW1pdCk7CisgICAgdXBkYXRlU3RhY2tMaW1pdCgpOwogICAgIHZtLnNldExhc3RTdGFja1Rv
cChtX3N0YWNrLm9yaWdpbigpKTsKIH0KIApAQCAtNjUsNiArNjQsMTIgQEAgVk1FbnRyeVNjb3Bl
Ojp+Vk1FbnRyeVNjb3BlKCkKICAgICBtX3ZtLnNldExhc3RTdGFja1RvcChtX3ByZXZMYXN0U3Rh
Y2tUb3ApOwogfQogCit2b2lkIFZNRW50cnlTY29wZTo6dXBkYXRlU3RhY2tMaW1pdCgpCit7Cisg
ICAgdm9pZCogbGltaXQgPSBtX3N0YWNrLnJlY3Vyc2lvbkxpbWl0KHJlcXVpcmVkQ2FwYWNpdHko
KSk7CisgICAgbV92bS5zZXRTdGFja0xpbWl0KGxpbWl0KTsKK30KKwogc2l6ZV90IFZNRW50cnlT
Y29wZTo6cmVxdWlyZWRDYXBhY2l0eSgpIGNvbnN0CiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVy
cHJldGVyID0gbV92bS5pbnRlcnByZXRlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNRW50cnlTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCShyZXZpc2lvbiAxNjA5NjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NiArNDAsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVk1FbnRyeVNjb3BlKFZN
JiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+Vk1FbnRyeVNjb3Bl
KCk7CiAKKyAgICB2b2lkIHVwZGF0ZVN0YWNrTGltaXQoKTsKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KIAogcHJpdmF0
ZToK
</data>
<flag name="review"
          id="243515"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>