<?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>85142</bug_id>
          
          <creation_ts>2012-04-28 12:18:24 -0700</creation_ts>
          <short_desc>Clarified JSGlobalData (JavaScript VM) lifetime</short_desc>
          <delta_ts>2012-05-11 15:16:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>612311</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-04-28 12:18:24 -0700</bug_when>
    <thetext>Clarified JSGlobalData (JavaScript VM) lifetime</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612318</commentid>
    <comment_count>1</comment_count>
      <attachid>139371</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-04-28 13:15:37 -0700</bug_when>
    <thetext>Created attachment 139371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612319</commentid>
    <comment_count>2</comment_count>
      <attachid>139371</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-04-28 13:26:20 -0700</bug_when>
    <thetext>Comment on attachment 139371
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:37
&gt; +        notwithstaning, C++ does in fact know how to execute destructors in 

Speling error, notwithstaning.

&gt; Source/JavaScriptCore/runtime/JSGlobalData.h:155
&gt; +        Heap heap;

Could you add a comment here about the destruction order so nobody will accidentally move this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612321</commentid>
    <comment_count>3</comment_count>
      <attachid>139371</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-28 13:27:17 -0700</bug_when>
    <thetext>Comment on attachment 139371
Patch

Attachment 139371 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12552666</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612323</commentid>
    <comment_count>4</comment_count>
      <attachid>139371</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-28 13:32:06 -0700</bug_when>
    <thetext>Comment on attachment 139371
Patch

Attachment 139371 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12553679</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612324</commentid>
    <comment_count>5</comment_count>
      <attachid>139371</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-28 13:36:42 -0700</bug_when>
    <thetext>Comment on attachment 139371
Patch

Attachment 139371 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12558684</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612326</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-04-28 13:50:33 -0700</bug_when>
    <thetext>Committed r115579: &lt;http://trac.webkit.org/changeset/115579&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612772</commentid>
    <comment_count>7</comment_count>
      <attachid>139371</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-04-30 11:11:50 -0700</bug_when>
    <thetext>Comment on attachment 139371
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:42
&gt; +        (JSGlobalContextCreate): Removed compatibility shim for older 
&gt; +        operating systems because it&apos;s no longer used.

This was not a shim for older operating systems, this was for applications linked against older versions of WebKit. I think that this removal is a mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619048</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-08 18:21:06 -0700</bug_when>
    <thetext>Reopening, because Alexey is right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619054</commentid>
    <comment_count>9</comment_count>
      <attachid>140839</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-08 18:28:24 -0700</bug_when>
    <thetext>Created attachment 140839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619153</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-08 21:42:10 -0700</bug_when>
    <thetext>Geoff, please file a Radar for the follow-up fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622006</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-11 15:13:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/11437914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622010</commentid>
    <comment_count>12</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-11 15:16:05 -0700</bug_when>
    <thetext>Committed r116809: &lt;http://trac.webkit.org/changeset/116809&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139371</attachid>
            <date>2012-04-28 13:15:37 -0700</date>
            <delta_ts>2012-05-08 18:28:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85142-20120428131535.patch</filename>
            <type>text/plain</type>
            <size>34420</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE1NTc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBA
QAorMjAxMi0wNC0yOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIENsYXJpZmllZCBKU0dsb2JhbERhdGEgKEphdmFTY3JpcHQgVk0pIGxpZmV0aW1lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE0MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2FzIHNvIGNv
bmZ1c2luZyB0aGF0IEkgZGlkbid0IGZlZWwgbGlrZSBJIGNvdWxkIHJlYXNvbiBhYm91dCAKKyAg
ICAgICAgbWVtb3J5IGxpZmV0aW1lIGluIHRoZSBoZWFwIHdpdGhvdXQgZml4aW5nIGl0LgorCisg
ICAgICAgIFRoZSBydWxlcyBhcmU6CisKKyAgICAgICAgKDEpIEpTR2xvYmFsRGF0YSBvd25zIHRo
ZSB2aXJ0dWFsIG1hY2hpbmUgYW5kIGFsbCBtZW1vcnkgaW4gaXQuCisKKyAgICAgICAgKDIpIERl
bGV0aW5nIGEgSlNHbG9iYWxEYXRhIGZyZWVzIHRoZSB2aXJ0dWFsIG1hY2hpbmUgYW5kIGFsbCBt
ZW1vcnkgCisgICAgICAgIGluIGl0LgorCisgICAgICAgIChDYXZlYXQgZW1wdG9yOiBpZiB5b3Ug
ZGVsZXRlIHRoZSB2aXJ0dWFsIG1hY2hpbmUgd2hpbGUgeW91J3JlIHJ1bm5pbmcgCisgICAgICAg
IEpJVCBjb2RlIG9yIGFjY2Vzc2luZyBHQyBvYmplY3RzLCB5b3UncmUgZ29ubmEgaGF2ZSBhIGJh
ZCB0aW1lLikKKworICAgICAgICAoSSBvcHRlZCBub3QgdG8gbWFrZSBhcmJpdHJhcnkgc3ViLW9i
amVjdHMga2VlcCB0aGUgdmlydHVhbCBtYWNoaW5lIAorICAgICAgICBhbGl2ZSBhdXRvbWF0aWNh
bGx5IGJlY2F1c2U6CisKKyAgICAgICAgICAgICAgICAoYSkgZG9pbmcgdGhhdCByaWdodCB3b3Vs
ZCBiZSBjb21wbGV4IGFuZCBzbG93OworCisgICAgICAgICAgICAgICAgKGIpIGluIHRoZSBjYXNl
IG9mIGFuIGV4aXRpbmcgdGhyZWFkIG9yIHByb2Nlc3MsIHRoZXJlJ3Mgbm8gCisgICAgICAgICAg
ICAgICAgY2xlYXIgd2F5IHRvIGdpdmUgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGEgY2hhbmNlIHRv
IHRyeSBhZ2FpbiAKKyAgICAgICAgICAgICAgICBsYXRlcjsgCisKKyAgICAgICAgICAgICAgICAo
YykgY29udGludWluZyB0byBydW4gdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGFmdGVyIHdlJ3ZlIGJl
ZW4gCisgICAgICAgICAgICAgICAgYXNrZWQgdG8gc2h1dCBkb3duIHRoZSB2aXJ0dWFsIG1hY2hp
bmUgc2VlbXMgcnVkZTsKKworICAgICAgICAgICAgICAgIChkKSB3ZSd2ZSBuZXZlciByZWFsbHkg
c3VwcG9ydGVkIHRoYXQgZmVhdHVyZSwgYW55d2F5LikKKworICAgICAgICAoMykgTm9ybWFsIHJl
Zi1jb3VudGluZyB3aWxsIGRvLiBObyBuZWVkIHRvIGNhbGwgYSBiYXR0ZXJ5IG9mIAorICAgICAg
ICBzcGVjaWFsdHkgZnVuY3Rpb25zIHRvIHRlYXIgZG93biBhIEpTR2xvYmFsRGF0YS4gSXRzIGZv
aWJsZXMgCisgICAgICAgIG5vdHdpdGhzdGFuaW5nLCBDKysgZG9lcyBpbiBmYWN0IGtub3cgaG93
IHRvIGV4ZWN1dGUgZGVzdHJ1Y3RvcnMgaW4gCisgICAgICAgIG9yZGVyLgorCisgICAgICAgICog
QVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRDcmVhdGUpOiBS
ZW1vdmVkIGNvbXBhdGliaWxpdHkgc2hpbSBmb3Igb2xkZXIgCisgICAgICAgIG9wZXJhdGluZyBz
eXN0ZW1zIGJlY2F1c2UgaXQncyBubyBsb25nZXIgdXNlZC4KKworICAgICAgICAoSlNHbG9iYWxD
b250ZXh0UmVsZWFzZSk6IE5vdyB0aGF0IHdlIGNhbiByZWx5IG9uIEpTR2xvYmFsRGF0YSB0byAi
ZG8gCisgICAgICAgIHRoZSByaWdodCB0aGluZyIsIHRoaXMgY29kZSBpcyBtdWNoIHNpbXBsZXIu
IFdlIHN0aWxsIGhhdmUgb25lIHNwZWNpYWwgCisgICAgICAgIGNhc2UgdG8gbm90aWZ5IHRoZSBn
YXJiYWdlIGNvbGxlY3RvciBpZiB3ZSdyZSByZW1vdmluZyB0aGUgbGFzdCAKKyAgICAgICAgcmVm
ZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LCBzaW5jZSB0aGlzIGNhbiBpbXByb3ZlIG1lbW9y
eSBiZWhhdmlvci4KKworICAgICAgICAqIGhlYXAvQ29waWVkU3BhY2UuY3BwOgorICAgICAgICAo
SlNDOjpDb3BpZWRTcGFjZTo6ZnJlZUFsbEJsb2Nrcyk6CisgICAgICAgICogaGVhcC9Db3BpZWRT
cGFjZS5oOgorICAgICAgICAoQ29waWVkU3BhY2UpOiBSZW5hbWVkICJkZXN0cm95IiA9PiAiZnJl
ZUFsbEJsb2NrcyIgYmVjYXVzZSB0cnVlIAorICAgICAgICBkZXN0cnVjdGlvbi10aW1lIGJlaGF2
aW9ycyBzaG91bGQgYmUgbGltaXRlZCB0byBvdXIgQysrIGRlc3RydWN0b3IuCisKKyAgICAgICAg
KiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjp+SGVhcCk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNDOjpIZWFwOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAg
ICogaGVhcC9IZWFwLmg6CisgICAgICAgIChIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6aGVh
cCk6IFJlbmFtZWQgImRlc3Ryb3kiID0+ICJsYXN0Q2hhbmNlVG9GaW5hbGl6ZSIgYmVjYXVzZSAK
KyAgICAgICAgdHJ1ZSBkZXN0cnVjdGlvbi10aW1lIGJlaGF2aW9ycyBzaG91bGQgYmUgbGltaXRl
ZCB0byBvdXIgQysrIAorICAgICAgICBkZXN0cnVjdG9yLgorCisgICAgICAgIFJlb3JnYW5pemVk
IHRoZSBjb2RlLCBwdXR0aW5nIGNvZGUgdGhhdCBtdXN0IHJ1biBiZWZvcmUgYW55IG9iamVjdHMg
CisgICAgICAgIGdldCB0b3JuIGRvd24gaW50byBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSwgYW5kIGNv
ZGUgdGhhdCBqdXN0IHRlYXJzIGRvd24gCisgICAgICAgIG9iamVjdHMgaW50byBvdXIgZGVzdHJ1
Y3Rvci4KKworICAgICAgICAqIGhlYXAvTG9jYWwuaDoKKyAgICAgICAgKEpTQzo6TG9jYWxTdGFj
azo6TG9jYWxTdGFjayk6CisgICAgICAgIChKU0M6OkxvY2FsU3RhY2s6OnB1c2gpOgorICAgICAg
ICAoTG9jYWxTdGFjayk6IFNlZSBydWxlICgyKS4KKworICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChmdW5jdGlvblF1aXQpOgorICAgICAgICAobWFpbik6CisgICAgICAgIChwcmludFVzYWdl
U3RhdGVtZW50KToKKyAgICAgICAgKHBhcnNlQXJndW1lbnRzKToKKyAgICAgICAgKGpzY21haW4p
OgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgIChw
cmludFVzYWdlU3RhdGVtZW50KToKKyAgICAgICAgKHBhcnNlQXJndW1lbnRzKToKKyAgICAgICAg
KHJlYWxNYWluKTogU2VlIHJ1bGUgKDMpLgorCisgICAgICAgIEkgcmVtb3ZlZCB0aGUgZmVhdHVy
ZSBvZiBlbnN1cmluZyBvcmRlcmx5IHRlYXItZG93biB3aGVuIGNhbGxpbmcgcXVpdCgpCisgICAg
ICAgIG9yIHJ1bm5pbmcgaW4gLS1oZWxwIG1vZGUgYmVjYXVzZSBpdCBkaWRuJ3Qgc2VlbSB2ZXJ5
IHVzZWZ1bCBhbmQgCisgICAgICAgIG1ha2luZyBpdCB3b3JrIHdpdGggV2luZG93cyBzdHJ1Y3R1
cmVkIGV4Y2VwdGlvbiBoYW5kbGluZyBhbmQgCisgICAgICAgIE5PX1JFVFVSTiBkaWRuJ3Qgc2Vl
bSBsaWtlIGEgZnVuIHdheSB0byBzcGVuZCBhIFNhdHVyZGF5LgorCisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKTogTW92ZWQgaGVhcCB0byBi
ZSB0aGUgZmlyc3QgZGF0YSAKKyAgICAgICAgbWVtYmVyIGluIEpTR2xvYmFsRGF0YSB0byBlbnN1
cmUgdGhhdCBpdCdzIGRlc3RydWN0ZWQgbGFzdCwgc28gb3RoZXIgCisgICAgICAgIG9iamVjdHMg
dGhhdCByZWZlcmVuY2UgaXQgZGVzdHJ1Y3Qgd2l0aG91dCBjcmFzaGluZy4gVGhpcyBhbGxvd2Vk
IG1lIAorICAgICAgICB0byByZW1vdmUgY2xlYXJCdWlsdGluU3RydWN0dXJlcygpIGFsdG9nZXRo
ZXIsIGFuZCBoZWxwZWQgZ3VhcmFudGVlIAorICAgICAgICBydWxlICgzKS4KKworICAgICAgICAo
SlNDOjpKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEpOiBFeHBsaWNpdGx5IGNhbGwgCisgICAg
ICAgIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCkgYXQgdGhlIGhlYWQgb2Ygb3VyIGRlc3RydWN0b3Ig
dG8gZW5zdXJlIHRoYXQgCisgICAgICAgIGFsbCBwZW5kaW5nIGZpbmFsaXplcnMgcnVuIHdoaWxl
IHRoZSB2aXJ0dWFsIG1hY2hpbmUgaXMgc3RpbGwgaW4gYSAKKyAgICAgICAgdmFsaWQgc3RhdGUu
IFRyeWluZyB0byByZXN1cnJlY3QgKHJlLXJlZikgdGhlIHZpcnR1YWwgbWFjaGluZSBhdCB0aGlz
IAorICAgICAgICBwb2ludCBpcyBub3QgdmFsaWQsIGJ1dCBhbGwgb3RoZXIgb3BlcmF0aW9ucyBh
cmUuCisKKyAgICAgICAgQ2hhbmdlZCBhIG51bGwgdG8gYSAweGJiYWRiZWVmIHRvIGNsYXJpZnkg
anVzdCBob3cgYmFkIHRoaXMgYmVlZiBpcy4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSk6IFNlZSBydWxlICgzKS4K
KwogMjAxMi0wNC0yNyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFRyeSB0byBmaXggdGhlIFdpbmRvd3MgYnVpbGQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAkocmV2aXNpb24gMTE1NTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDYgQEAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2lu
ZyBuYW1lc3BhY2UgV1RGOwogCi1zdGF0aWMgdm9pZCBjbGVhbnVwR2xvYmFsRGF0YShKU0dsb2Jh
bERhdGEqKTsKIHN0YXRpYyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoY29uc3Qg
VVN0cmluZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKTsKIAogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqKTsKQEAgLTQx
NywxNCArNDE2LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByZQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoY3VycmVudFRpbWUoKSkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUXVpdChFeGVjU3RhdGUqIGV4
ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUXVpdChFeGVjU3RhdGUq
KQogewotICAgIC8vIFRlY2huaWNhbGx5LCBkZXN0cm95aW5nIHRoZSBoZWFwIGluIHRoZSBtaWRk
bGUgb2YgSlMgZXhlY3V0aW9uIGlzIGEgbm8tbm8sCi0gICAgLy8gYnV0IHdlIHdhbnQgdG8gbWFp
bnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBNb3ppbGxhIHRlc3Qgc3VpdGUsIHNvCi0gICAg
Ly8gd2UgcHJldGVuZCB0aGF0IGV4ZWN1dGlvbiBoYXMgdGVybWluYXRlZCB0byBhdm9pZCBBU1NF
UlRzLCB0aGVuIHRlYXIgZG93biB0aGUgaGVhcC4KLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuZHlu
YW1pY0dsb2JhbE9iamVjdCA9IDA7Ci0KLSAgICBjbGVhbnVwR2xvYmFsRGF0YSgmZXhlYy0+Z2xv
YmFsRGF0YSgpKTsKICAgICBleGl0KEVYSVRfU1VDQ0VTUyk7CiAKICNpZiBDT01QSUxFUihNU1ZD
KSAmJiBPUyhXSU5DRSkKQEAgLTQ0Niw3ICs0MzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uUXVpCiAjZGVmaW5lIEVYQ0VQVCh4KQogI2VuZGlmCiAKLWludCBqc2Nt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndiwgSlNHbG9iYWxEYXRhKik7CitpbnQganNjbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpOwogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
CiB7CkBAIC00OTEsMjMgKzQ4NCwxMiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
CiAgICAgLy8gV2UgY2FuJ3QgdXNlIGRlc3RydWN0b3JzIGluIHRoZSBmb2xsb3dpbmcgY29kZSBi
ZWNhdXNlIGl0IHVzZXMgV2luZG93cwogICAgIC8vIFN0cnVjdHVyZWQgRXhjZXB0aW9uIEhhbmRs
aW5nCiAgICAgaW50IHJlcyA9IDA7Ci0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gSlNH
bG9iYWxEYXRhOjpjcmVhdGUoVGhyZWFkU3RhY2tUeXBlTGFyZ2UsIExhcmdlSGVhcCkubGVha1Jl
ZigpOwogICAgIFRSWQotICAgICAgICByZXMgPSBqc2NtYWluKGFyZ2MsIGFyZ3YsIGdsb2JhbERh
dGEpOworICAgICAgICByZXMgPSBqc2NtYWluKGFyZ2MsIGFyZ3YpOwogICAgIEVYQ0VQVChyZXMg
PSAzKQotCi0gICAgY2xlYW51cEdsb2JhbERhdGEoZ2xvYmFsRGF0YSk7CiAgICAgcmV0dXJuIHJl
czsKIH0KIAotc3RhdGljIHZvaWQgY2xlYW51cEdsb2JhbERhdGEoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQotewotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAg
Z2xvYmFsRGF0YS0+Y2xlYXJCdWlsdGluU3RydWN0dXJlcygpOwotICAgIGdsb2JhbERhdGEtPmhl
YXAuZGVzdHJveSgpOwotICAgIGdsb2JhbERhdGEtPmRlcmVmKCk7Ci19Ci0KIHN0YXRpYyBib29s
IHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8
U2NyaXB0PiYgc2NyaXB0cywgYm9vbCBkdW1wKQogewogICAgIGNvbnN0IGNoYXIqIHNjcmlwdDsK
QEAgLTYxMyw3ICs1OTUsNyBAQCBzdGF0aWMgdm9pZCBydW5JbnRlcmFjdGl2ZShHbG9iYWxPYmpl
Y3QqCiAgICAgcHJpbnRmKCJcbiIpOwogfQogCi1zdGF0aWMgTk9fUkVUVVJOIHZvaWQgcHJpbnRV
c2FnZVN0YXRlbWVudChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGJvb2wgaGVscCA9IGZhbHNl
KQorc3RhdGljIE5PX1JFVFVSTiB2b2lkIHByaW50VXNhZ2VTdGF0ZW1lbnQoYm9vbCBoZWxwID0g
ZmFsc2UpCiB7CiAgICAgZnByaW50ZihzdGRlcnIsICJVc2FnZToganNjIFtvcHRpb25zXSBbZmls
ZXNdIFstLSBhcmd1bWVudHNdXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLWQgICAgICAg
ICBEdW1wcyBieXRlY29kZSAoZGVidWcgYnVpbGRzIG9ubHkpXG4iKTsKQEAgLTYyNSwyNCArNjA3
LDIzIEBAIHN0YXRpYyBOT19SRVRVUk4gdm9pZCBwcmludFVzYWdlU3RhdGVtZW4KICAgICBmcHJp
bnRmKHN0ZGVyciwgIiAgLXMgICAgICAgICBJbnN0YWxscyBzaWduYWwgaGFuZGxlcnMgdGhhdCBl
eGl0IG9uIGEgY3Jhc2ggKFVuaXggcGxhdGZvcm1zIG9ubHkpXG4iKTsKICNlbmRpZgogCi0gICAg
Y2xlYW51cEdsb2JhbERhdGEoZ2xvYmFsRGF0YSk7CiAgICAgZXhpdChoZWxwID8gRVhJVF9TVUND
RVNTIDogRVhJVF9GQUlMVVJFKTsKIH0KIAotc3RhdGljIHZvaWQgcGFyc2VBcmd1bWVudHMoaW50
IGFyZ2MsIGNoYXIqKiBhcmd2LCBDb21tYW5kTGluZSYgb3B0aW9ucywgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQorc3RhdGljIHZvaWQgcGFyc2VBcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBh
cmd2LCBDb21tYW5kTGluZSYgb3B0aW9ucykKIHsKICAgICBpbnQgaSA9IDE7CiAgICAgZm9yICg7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKICAg
ICAgICAgaWYgKCFzdHJjbXAoYXJnLCAiLWYiKSkgewogICAgICAgICAgICAgaWYgKCsraSA9PSBh
cmdjKQotICAgICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoZ2xvYmFsRGF0YSk7Cisg
ICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudCgpOwogICAgICAgICAgICAgb3B0aW9u
cy5zY3JpcHRzLmFwcGVuZChTY3JpcHQodHJ1ZSwgYXJndltpXSkpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAoYXJnLCAiLWUiKSkgewogICAg
ICAgICAgICAgaWYgKCsraSA9PSBhcmdjKQotICAgICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0
ZW1lbnQoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudCgp
OwogICAgICAgICAgICAgb3B0aW9ucy5zY3JpcHRzLmFwcGVuZChTY3JpcHQoZmFsc2UsIGFyZ3Zb
aV0pKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC02NjgsNyArNjQ5LDcg
QEAgc3RhdGljIHZvaWQgcGFyc2VBcmd1bWVudHMoaW50IGFyZ2MsIGNoYQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAoYXJnLCAiLWgiKSB8fCAhc3Ry
Y21wKGFyZywgIi0taGVscCIpKQotICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChnbG9i
YWxEYXRhLCB0cnVlKTsKKyAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQodHJ1ZSk7CiAg
ICAgICAgIG9wdGlvbnMuc2NyaXB0cy5hcHBlbmQoU2NyaXB0KHRydWUsIGFyZ3ZbaV0pKTsKICAg
ICB9CiAKQEAgLTY3OSwxMiArNjYwLDE0IEBAIHN0YXRpYyB2b2lkIHBhcnNlQXJndW1lbnRzKGlu
dCBhcmdjLCBjaGEKICAgICAgICAgb3B0aW9ucy5hcmd1bWVudHMuYXBwZW5kKGFyZ3ZbaV0pOwog
fQogCi1pbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YsIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKK2ludCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKICAgICBKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCisgICAgUmVmUHRyPEpTR2xvYmFsRGF0
YT4gZ2xvYmFsRGF0YSA9IEpTR2xvYmFsRGF0YTo6Y3JlYXRlKFRocmVhZFN0YWNrVHlwZUxhcmdl
LCBMYXJnZUhlYXApOworCiAgICAgQ29tbWFuZExpbmUgb3B0aW9uczsKLSAgICBwYXJzZUFyZ3Vt
ZW50cyhhcmdjLCBhcmd2LCBvcHRpb25zLCBnbG9iYWxEYXRhKTsKKyAgICBwYXJzZUFyZ3VtZW50
cyhhcmdjLCBhcmd2LCBvcHRpb25zKTsKIAogICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUoKmdsb2JhbERhdGEsIEdsb2JhbE9iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKCpnbG9iYWxEYXRhLCBqc051bGwoKSksIG9wdGlvbnMuYXJndW1lbnRzKTsKICAg
ICBib29sIHN1Y2Nlc3MgPSBydW5XaXRoU2NyaXB0cyhnbG9iYWxPYmplY3QsIG9wdGlvbnMuc2Ny
aXB0cywgb3B0aW9ucy5kdW1wKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVn
RXhwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5j
cHAJKHJldmlzaW9uIDExNTU0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsNiBAQCBjb25zdCBpbnQgTWF4TGluZUxl
bmd0aCA9IDEwMCAqIDEwMjQ7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNl
IFdURjsKIAotc3RhdGljIHZvaWQgY2xlYW51cEdsb2JhbERhdGEoSlNHbG9iYWxEYXRhKik7Ci0K
IHN0cnVjdCBDb21tYW5kTGluZSB7CiAgICAgQ29tbWFuZExpbmUoKQogICAgICAgICA6IGludGVy
YWN0aXZlKGZhbHNlKQpAQCAtMTU5LDcgKzE1Nyw3IEBAIEdsb2JhbE9iamVjdDo6R2xvYmFsT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYKICNkZWZpbmUgRVhDRVBUKHgpCiAjZW5kaWYKIAotaW50IHJlYWxN
YWluKGludCBhcmdjLCBjaGFyKiogYXJndiwgSlNHbG9iYWxEYXRhKik7CitpbnQgcmVhbE1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KQogewpAQCAtMTkzLDIzICsxOTEsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KQogICAgIC8vIFdlIGNhbid0IHVzZSBkZXN0cnVjdG9ycyBpbiB0aGUgZm9sbG93aW5nIGNvZGUg
YmVjYXVzZSBpdCB1c2VzIFdpbmRvd3MKICAgICAvLyBTdHJ1Y3R1cmVkIEV4Y2VwdGlvbiBIYW5k
bGluZwogICAgIGludCByZXMgPSAwOwotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IEpT
R2xvYmFsRGF0YTo6Y3JlYXRlKFRocmVhZFN0YWNrVHlwZUxhcmdlLCBMYXJnZUhlYXApLmxlYWtS
ZWYoKTsKICAgICBUUlkKLSAgICAgICAgcmVzID0gcmVhbE1haW4oYXJnYywgYXJndiwgZ2xvYmFs
RGF0YSk7CisgICAgICAgIHJlcyA9IHJlYWxNYWluKGFyZ2MsIGFyZ3YpOwogICAgIEVYQ0VQVChy
ZXMgPSAzKQotCi0gICAgY2xlYW51cEdsb2JhbERhdGEoZ2xvYmFsRGF0YSk7CiAgICAgcmV0dXJu
IHJlczsKIH0KIAotc3RhdGljIHZvaWQgY2xlYW51cEdsb2JhbERhdGEoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQotewotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0g
ICAgZ2xvYmFsRGF0YS0+Y2xlYXJCdWlsdGluU3RydWN0dXJlcygpOwotICAgIGdsb2JhbERhdGEt
PmhlYXAuZGVzdHJveSgpOwotICAgIGdsb2JhbERhdGEtPmRlcmVmKCk7Ci19Ci0KIHN0YXRpYyBi
b29sIHRlc3RPbmVSZWdFeHAoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBSZWdFeHAqIHJlZ2V4
cCwgUmVnRXhwVGVzdCogcmVnRXhwVGVzdCwgYm9vbCB2ZXJib3NlLCB1bnNpZ25lZCBpbnQgbGlu
ZU51bWJlcikKIHsKICAgICBib29sIHJlc3VsdCA9IHRydWU7CkBAIC00ODAsMjMgKzQ2NywyMiBA
QCBzdGF0aWMgYm9vbCBydW5Gcm9tRmlsZXMoR2xvYmFsT2JqZWN0KiBnCiAKICNkZWZpbmUgUlVO
TklOR19GUk9NX1hDT0RFIDAKIAotc3RhdGljIE5PX1JFVFVSTiB2b2lkIHByaW50VXNhZ2VTdGF0
ZW1lbnQoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBib29sIGhlbHAgPSBmYWxzZSkKK3N0YXRp
YyBOT19SRVRVUk4gdm9pZCBwcmludFVzYWdlU3RhdGVtZW50KGJvb2wgaGVscCA9IGZhbHNlKQog
ewogICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IHJlZ2V4cF90ZXN0IFtvcHRpb25zXSBmaWxl
XG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLWh8LS1oZWxwICBQcmludHMgdGhpcyBoZWxw
IG1lc3NhZ2VcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAtdnwtLXZlcmJvc2UgIFZlcmJv
c2Ugb3V0cHV0XG4iKTsKIAotICAgIGNsZWFudXBHbG9iYWxEYXRhKGdsb2JhbERhdGEpOwogICAg
IGV4aXQoaGVscCA/IEVYSVRfU1VDQ0VTUyA6IEVYSVRfRkFJTFVSRSk7CiB9CiAKLXN0YXRpYyB2
b2lkIHBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndiwgQ29tbWFuZExpbmUmIG9w
dGlvbnMsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3N0YXRpYyB2b2lkIHBhcnNlQXJndW1l
bnRzKGludCBhcmdjLCBjaGFyKiogYXJndiwgQ29tbWFuZExpbmUmIG9wdGlvbnMpCiB7CiAgICAg
aW50IGkgPSAxOwogICAgIGZvciAoOyBpIDwgYXJnYzsgKytpKSB7CiAgICAgICAgIGNvbnN0IGNo
YXIqIGFyZyA9IGFyZ3ZbaV07CiAgICAgICAgIGlmICghc3RyY21wKGFyZywgIi1oIikgfHwgIXN0
cmNtcChhcmcsICItLWhlbHAiKSkKLSAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoZ2xv
YmFsRGF0YSwgdHJ1ZSk7CisgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KHRydWUpOwog
ICAgICAgICBpZiAoIXN0cmNtcChhcmcsICItdiIpIHx8ICFzdHJjbXAoYXJnLCAiLS12ZXJib3Nl
IikpCiAgICAgICAgICAgICBvcHRpb25zLnZlcmJvc2UgPSB0cnVlOwogICAgICAgICBlbHNlCkBA
IC01MDcsMTIgKzQ5MywxNCBAQCBzdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywg
Y2hhCiAgICAgICAgIG9wdGlvbnMuYXJndW1lbnRzLmFwcGVuZChhcmd2W2ldKTsKIH0KIAotaW50
IHJlYWxNYWluKGludCBhcmdjLCBjaGFyKiogYXJndiwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
KQoraW50IHJlYWxNYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKICAgICBKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCisgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4gZ2xv
YmFsRGF0YSA9IEpTR2xvYmFsRGF0YTo6Y3JlYXRlKFRocmVhZFN0YWNrVHlwZUxhcmdlLCBMYXJn
ZUhlYXApOworCiAgICAgQ29tbWFuZExpbmUgb3B0aW9uczsKLSAgICBwYXJzZUFyZ3VtZW50cyhh
cmdjLCBhcmd2LCBvcHRpb25zLCBnbG9iYWxEYXRhKTsKKyAgICBwYXJzZUFyZ3VtZW50cyhhcmdj
LCBhcmd2LCBvcHRpb25zKTsKIAogICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xv
YmFsT2JqZWN0OjpjcmVhdGUoKmdsb2JhbERhdGEsIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKCpnbG9iYWxEYXRhLCBqc051bGwoKSksIG9wdGlvbnMuYXJndW1lbnRzKTsKICAgICBib29s
IHN1Y2Nlc3MgPSBydW5Gcm9tRmlsZXMoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLmZpbGVzLCBvcHRp
b25zLnZlcmJvc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0
UmVmLmNwcAkocmV2aXNpb24gMTE1NTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNSArMzgsMTMgQEAKICNpbmNs
dWRlICJVU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IAotCi0jaWYgT1MoREFSV0lOKQotI2luY2x1ZGUgPG1hY2gtby9keWxkLmg+Ci0KLXN0YXRpYyBj
b25zdCBpbnQzMl90IHdlYmtpdEZpcnN0VmVyc2lvbldpdGhDb25jdXJyZW50R2xvYmFsQ29udGV4
dHMgPSAweDIxMDA1MDA7IC8vIDUyOC41LjAKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgSlND
OwogCisvLyBGcm9tIHRoZSBBUEkncyBwZXJzcGVjdGl2ZSwgYSBjb250ZXh0IGdyb3VwIHJlbWFp
bnMgYWxpdmUgaWZmCisvLyAgICAgKGEpIGl0IGhhcyBiZWVuIEpTQ29udGV4dEdyb3VwUmV0YWlu
ZWQKKy8vICAgICBPUgorLy8gICAgIChiKSBvbmUgb2YgaXRzIGNvbnRleHRzIGhhcyBiZWVuIEpT
Q29udGV4dFJldGFpbmVkCisKIEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwQ3JlYXRl
KCkKIHsKICAgICBpbml0aWFsaXplVGhyZWFkaW5nKCk7CkBAIC02NCwyMiArNjIsMTEgQEAgdm9p
ZCBKU0NvbnRleHRHcm91cFJlbGVhc2UoSlNDb250ZXh0R3JvdQogICAgIHRvSlMoZ3JvdXApLT5k
ZXJlZigpOwogfQogCisvLyBGcm9tIHRoZSBBUEkncyBwZXJzcGVjdGl2ZSwgYSBnbG9iYWwgY29u
dGV4dCByZW1haW5zIGFsaXZlIGlmZiBpdCBoYXMgYmVlbiBKU0dsb2JhbENvbnRleHRSZXRhaW5l
ZC4KKwogSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZShKU0NsYXNzUmVm
IGdsb2JhbE9iamVjdENsYXNzKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSNpZiBP
UyhEQVJXSU4pCi0gICAgLy8gV2hlbiBydW5uaW5nIG9uIFRpZ2VyIG9yIExlb3BhcmQsIG9yIGlm
IHRoZSBhcHBsaWNhdGlvbiB3YXMgbGlua2VkIGJlZm9yZSBKU0dsb2JhbENvbnRleHRDcmVhdGUg
d2FzIGNoYW5nZWQKLSAgICAvLyB0byB1c2UgYSB1bmlxdWUgSlNHbG9iYWxEYXRhLCB3ZSB1c2Ug
YSBzaGFyZWQgb25lIGZvciBjb21wYXRpYmlsaXR5LgotI2lmbmRlZiBCVUlMRElOR19PTl9MRU9Q
QVJECi0gICAgaWYgKE5TVmVyc2lvbk9mTGlua1RpbWVMaWJyYXJ5KCJKYXZhU2NyaXB0Q29yZSIp
IDw9IHdlYmtpdEZpcnN0VmVyc2lvbldpdGhDb25jdXJyZW50R2xvYmFsQ29udGV4dHMpIHsKLSNl
bHNlCi0gICAgewotI2VuZGlmCi0gICAgICAgIEpTTG9jayBsb2NrKExvY2tGb3JSZWFsKTsKLSAg
ICAgICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAodG9SZWYoJkpTR2xvYmFs
RGF0YTo6c2hhcmVkSW5zdGFuY2UoKSksIGdsb2JhbE9iamVjdENsYXNzKTsKLSAgICB9Ci0jZW5k
aWYgLy8gT1MoREFSV0lOKQotCiAgICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3Jv
dXAoMCwgZ2xvYmFsT2JqZWN0Q2xhc3MpOwogfQogCkBAIC0xMjUsMzMgKzExMiwxMyBAQCB2b2lk
IEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoSlNHbG9iYWxDb250CiAgICAgSlNMb2NrIGxvY2soZXhl
Yyk7CiAKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGRnbyA9IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsK
ICAgICBJZGVudGlmaWVyVGFibGUqIHNhdmVkSWRlbnRpZmllclRhYmxlID0gd3RmVGhyZWFkRGF0
YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZ2xvYmFsRGF0YS5pZGVudGlmaWVyVGFibGUp
OwogCi0gICAgLy8gT25lIHJlZmVyZW5jZSBpcyBoZWxkIGJ5IEpTR2xvYmFsT2JqZWN0LCBhbm90
aGVyIGFkZGVkIGJ5IEpTR2xvYmFsQ29udGV4dFJldGFpbigpLgotICAgIGJvb2wgcmVsZWFzaW5n
Q29udGV4dEdyb3VwID0gZ2xvYmFsRGF0YS5yZWZDb3VudCgpID09IDI7Ci0gICAgYm9vbCByZWxl
YXNpbmdHbG9iYWxPYmplY3QgPSBIZWFwOjpoZWFwKGRnbyktPnVucHJvdGVjdChkZ28pOwotICAg
IC8vIElmIHRoaXMgaXMgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIGEgZ2xvYmFsIGRhdGEsIGl0IHNo
b3VsZCBhbHNvCi0gICAgLy8gYmUgdGhlIG9ubHkgcmVtYWluaW5nIHJlZmVyZW5jZSB0byB0aGUg
Z2xvYmFsIG9iamVjdCB0b28hCi0gICAgQVNTRVJUKCFyZWxlYXNpbmdDb250ZXh0R3JvdXAgfHwg
cmVsZWFzaW5nR2xvYmFsT2JqZWN0KTsKLQotICAgIC8vIEFuIEFQSSAnSlNHbG9iYWxDb250ZXh0
UmVmJyByZXRhaW5zIHR3byB0aGluZ3MgLSBhIGdsb2JhbCBvYmplY3QgYW5kIGEKLSAgICAvLyBn
bG9iYWwgZGF0YSAob3IgY29udGV4dCBncm91cCwgaW4gQVBJIHRlcm1pbm9sb2d5KS4KLSAgICAv
LyAqIElmIHRoaXMgaXMgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIGFueSBjb250ZXh0cyBpbiB0aGUg
Z2l2ZW4gY29udGV4dCBncm91cCwKLSAgICAvLyAgIGNhbGwgZGVzdHJveSBvbiB0aGUgaGVhcCAo
dGhlIGdsb2JhbCBkYXRhIGlzIGJlaW5nICBmcmVlZCkuCi0gICAgLy8gKiBJZiB0aGlzIHdhcyB0
aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QsIHRoZW4gdW5wcm90ZWN0aW5n
Ci0gICAgLy8gICBpdCBtYXkgcmVsZWFzZSBhIGxvdCBvZiBHQyBtZW1vcnkgLSB0aWNrbGUgdGhl
IGFjdGl2aXR5IGNhbGxiYWNrIHRvCi0gICAgLy8gICBnYXJiYWdlIGNvbGxlY3Qgc29vbi4KLSAg
ICAvLyAqIElmIHRoZXJlIGFyZSBtb3JlIHJlZmVyZW5jZXMgcmVtYWluaW5nIHRoZSB0aGUgZ2xv
YmFsIG9iamVjdCwgdGhlbiBkbyBub3RoaW5nCi0gICAgLy8gICAoc3BlY2lmaWNhbGx5IHRoYXQg
aXMgbW9yZSBwcm90ZWN0cywgd2hpY2ggd2UgYXNzdW1lIGNvbWUgZnJvbSBvdGhlciBKU0dsb2Jh
bENvbnRleHRSZWZzKS4KLSAgICBpZiAocmVsZWFzaW5nQ29udGV4dEdyb3VwKSB7Ci0gICAgICAg
IGdsb2JhbERhdGEuY2xlYXJCdWlsdGluU3RydWN0dXJlcygpOwotICAgICAgICBnbG9iYWxEYXRh
LmhlYXAuZGVzdHJveSgpOwotICAgIH0gZWxzZSBpZiAocmVsZWFzaW5nR2xvYmFsT2JqZWN0KSB7
CisgICAgYm9vbCBwcm90ZWN0Q291bnRJc1plcm8gPSBIZWFwOjpoZWFwKGV4ZWMtPmR5bmFtaWNH
bG9iYWxPYmplY3QoKSktPnVucHJvdGVjdChleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpOwor
ICAgIGlmIChwcm90ZWN0Q291bnRJc1plcm8pIHsKICAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLmFj
dGl2aXR5Q2FsbGJhY2soKS0+c3luY2hyb25pemUoKTsKICAgICAgICAgZ2xvYmFsRGF0YS5oZWFw
LnJlcG9ydEFiYW5kb25lZE9iamVjdEdyYXBoKCk7CiAgICAgfQotCiAgICAgZ2xvYmFsRGF0YS5k
ZXJlZigpOwogCiAgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUo
c2F2ZWRJZGVudGlmaWVyVGFibGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29waWVkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvcGllZFNwYWNlLmNwcAkocmV2aXNpb24gMTE1NTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29waWVkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5LDcg
QEAgQ2hlY2tlZEJvb2xlYW4gQ29waWVkU3BhY2U6OmdldEZyZXNoQmxvYwogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIENvcGllZFNwYWNlOjpkZXN0cm95KCkKK3ZvaWQgQ29waWVkU3BhY2U6
OmZyZWVBbGxCbG9ja3MoKQogewogICAgIHdoaWxlICghbV90b1NwYWNlLT5pc0VtcHR5KCkpIHsK
ICAgICAgICAgQ29waWVkQmxvY2sqIGJsb2NrID0gc3RhdGljX2Nhc3Q8Q29waWVkQmxvY2sqPiht
X3RvU3BhY2UtPnJlbW92ZUhlYWQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db3BpZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvcGllZFNwYWNlLmgJKHJldmlzaW9uIDExNTU0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvcGllZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVi
bGljOgogICAgIHNpemVfdCBzaXplKCk7CiAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CiAKLSAgICB2
b2lkIGRlc3Ryb3koKTsKKyAgICB2b2lkIGZyZWVBbGxCbG9ja3MoKTsKIAogICAgIHN0YXRpYyBD
b3BpZWRCbG9jayogYmxvY2tGb3Iodm9pZCopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAkocmV2aXNpb24gMTE1NTQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0MSw3ICszNDEsMTEgQEAgSGVhcDo6SGVh
cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEhlYQogCiBIZWFwOjp+SGVhcCgpCiB7Ci0gICAg
Ly8gRGVzdHJveSBvdXIgYmxvY2sgZnJlZWluZyB0aHJlYWQuCisgICAgZGVsZXRlIG1fbWFya0xp
c3RTZXQ7CisKKyAgICBtX29iamVjdFNwYWNlLnNocmluaygpOworICAgIG1fc3RvcmFnZVNwYWNl
LmZyZWVBbGxCbG9ja3MoKTsKKyAgICByZWxlYXNlRnJlZUJsb2NrcygpOwogICAgIHsKICAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZnJlZUJsb2NrTG9jayk7CiAgICAgICAgIG1fYmxvY2tG
cmVlaW5nVGhyZWFkU2hvdWxkUXVpdCA9IHRydWU7CkBAIC0zNDksNDggKzM1MywzMSBAQCBIZWFw
Ojp+SGVhcCgpCiAgICAgfQogICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fYmxvY2tGcmVl
aW5nVGhyZWFkKTsKIAotICAgIC8vIFRoZSBkZXN0cm95IGZ1bmN0aW9uIG11c3QgYWxyZWFkeSBo
YXZlIGJlZW4gY2FsbGVkLCBzbyBhc3NlcnQgdGhpcy4KLSAgICBBU1NFUlQoIW1fZ2xvYmFsRGF0
YSk7CisgICAgQVNTRVJUKCFzaXplKCkpOworICAgIEFTU0VSVCghY2FwYWNpdHkoKSk7CiB9CiAK
LXZvaWQgSGVhcDo6ZGVzdHJveSgpCisvLyBUaGUgSlNHbG9iYWxEYXRhIGlzIGJlaW5nIGRlc3Ry
b3llZCBhbmQgdGhlIGNvbGxlY3RvciB3aWxsIG5ldmVyIHJ1biBhZ2Fpbi4KKy8vIFJ1biBhbGwg
cGVuZGluZyBmaW5hbGl6ZXJzIG5vdyBiZWNhdXNlIHdlIHdvbid0IGdldCBhbm90aGVyIGNoYW5j
ZS4KK3ZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewotICAgIEpTTG9jayBsb2Nr
KFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0KLSAgICBpZiAoIW1fZ2xvYmFsRGF0YSkKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgQVNTRVJUKCFtX2dsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmpl
Y3QpOwogICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOwot
ICAgIAotICAgIC8vIFRoZSBnbG9iYWwgb2JqZWN0IGlzIG5vdCBHQyBwcm90ZWN0ZWQgYXQgdGhp
cyBwb2ludCwgc28gc3dlZXBpbmcgbWF5IGRlbGV0ZSBpdAotICAgIC8vIChhbmQgdGh1cyB0aGUg
Z2xvYmFsIGRhdGEpIGJlZm9yZSBvdGhlciBvYmplY3RzIHRoYXQgbWF5IHVzZSB0aGUgZ2xvYmFs
IGRhdGEuCi0gICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4gcHJvdGVjdChtX2dsb2JhbERhdGEpOwot
Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICBtX2dsb2JhbERhdGEtPmppdFN0dWJzLT5jbGVhckhvc3RG
dW5jdGlvblN0dWJzKCk7Ci0jZW5kaWYKIAotICAgIGRlbGV0ZSBtX21hcmtMaXN0U2V0OwotICAg
IG1fbWFya0xpc3RTZXQgPSAwOworICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgYSByZWxlYXNlLW1v
ZGUgY3Jhc2ggb25jZSB3ZSdyZSBzdXJlIG5vIG9uZSdzIGRvaW5nIHRoaXMuCisgICAgaWYgKHNp
emVfdCBzaXplID0gbV9wcm90ZWN0ZWRWYWx1ZXMuc2l6ZSgpKQorICAgICAgICBMT0dfRVJST1Io
IkphdmFTY3JpcHRDb3JlIGhlYXAgZGVhbGxvY2F0ZWQgd2hpbGUgJWxkIHZhbHVlcyB3ZXJlIHN0
aWxsIHByb3RlY3RlZCIsIHNpemUpOwogCisgICAgbV93ZWFrU2V0LmZpbmFsaXplQWxsKCk7CiAg
ICAgY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOwogICAgIGNsZWFyTWFya3MoKTsKLQot
ICAgIG1fd2Vha1NldC5maW5hbGl6ZUFsbCgpOworICAgIHN3ZWVwKCk7CiAgICAgbV9nbG9iYWxE
YXRhLT5zbWFsbFN0cmluZ3MuZmluYWxpemVTbWFsbFN0cmluZ3MoKTsKLSAgICBtX29iamVjdFNw
YWNlLnNocmluaygpOwotICAgIG1fc3RvcmFnZVNwYWNlLmRlc3Ryb3koKTsKLSAgICBBU1NFUlQo
IXNpemUoKSk7CiAKICNpZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQogICAgIG1fc2xv
dFZpc2l0b3IubV92aXNpdGVkVHlwZUNvdW50cy5kdW1wKFdURjo6ZGF0YUZpbGUoKSwgIlZpc2l0
ZWQgVHlwZSBDb3VudHMiKTsKICAgICBtX2Rlc3Ryb3llZFR5cGVDb3VudHMuZHVtcChXVEY6OmRh
dGFGaWxlKCksICJEZXN0cm95ZWQgVHlwZSBDb3VudHMiKTsKICNlbmRpZgotICAgIAotICAgIHJl
bGVhc2VGcmVlQmxvY2tzKCk7Ci0KLSAgICBtX2dsb2JhbERhdGEgPSAwOwogfQogCiB2b2lkIEhl
YXA6OndhaXRGb3JSZWxhdGl2ZVRpbWVXaGlsZUhvbGRpbmdMb2NrKGRvdWJsZSByZWxhdGl2ZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDExNTU0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCAr
NzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOwot
ICAgICAgICBzdGF0aWMgSGVhcCogaGVhcChKU1ZhbHVlKTsgLy8gMCBmb3IgaW1tZWRpYXRlIHZh
bHVlcwotICAgICAgICBzdGF0aWMgSGVhcCogaGVhcChKU0NlbGwqKTsKKyAgICAgICAgc3RhdGlj
IEhlYXAqIGhlYXAoY29uc3QgSlNWYWx1ZSk7IC8vIDAgZm9yIGltbWVkaWF0ZSB2YWx1ZXMKKyAg
ICAgICAgc3RhdGljIEhlYXAqIGhlYXAoY29uc3QgSlNDZWxsKik7CiAKICAgICAgICAgc3RhdGlj
IGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICBzdGF0aWMgYm9vbCB0ZXN0QW5k
U2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKQEAgLTg3LDcgKzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgSGVhcChKU0dsb2JhbERhdGEqLCBIZWFwU2l6ZSk7CiAgICAgICAgIH5IZWFw
KCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzdHJveSgpOyAvLyBKU0dsb2Jh
bERhdGEgbXVzdCBjYWxsIGRlc3Ryb3koKSBiZWZvcmUgfkhlYXAoKS4KKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogCiAgICAgICAgIEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQogICAg
ICAgICBNYXJrZWRTcGFjZSYgb2JqZWN0U3BhY2UoKSB7IHJldHVybiBtX29iamVjdFNwYWNlOyB9
CkBAIC0yNjYsMTIgKzI2NiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbjsKICAgICB9CiAKLSAgICBpbmxpbmUg
SGVhcCogSGVhcDo6aGVhcChKU0NlbGwqIGNlbGwpCisgICAgaW5saW5lIEhlYXAqIEhlYXA6Omhl
YXAoY29uc3QgSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hcmtlZEJsb2Nr
OjpibG9ja0ZvcihjZWxsKS0+aGVhcCgpOwogICAgIH0KIAotICAgIGlubGluZSBIZWFwKiBIZWFw
OjpoZWFwKEpTVmFsdWUgdikKKyAgICBpbmxpbmUgSGVhcCogSGVhcDo6aGVhcChjb25zdCBKU1Zh
bHVlIHYpCiAgICAgewogICAgICAgICBpZiAoIXYuaXNDZWxsKCkpCiAgICAgICAgICAgICByZXR1
cm4gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWwuaAkocmV2aXNpb24gMTE1NTQ0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWwuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAyLDcgKzEwMiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB1bnNpZ25lZCBpbmxpbmVD
YXAKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhbmRsZTxUPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFs
VHlwZTsKIHB1YmxpYzoKICAgICBMb2NhbFN0YWNrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
LSAgICAgICAgOiBtX2dsb2JhbERhdGEoJmdsb2JhbERhdGEpCisgICAgICAgIDogbV9nbG9iYWxE
YXRhKGdsb2JhbERhdGEpCiAgICAgICAgICwgbV9jb3VudCgwKQogICAgIHsKICAgICB9CkBAIC0x
MjIsNyArMTIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcHVzaChFeHRlcm5hbFR5cGUgdmFsdWUp
CiAgICAgewogICAgICAgICBpZiAobV9jb3VudCA9PSBtX3N0YWNrLnNpemUoKSkKLSAgICAgICAg
ICAgIG1fc3RhY2suYXBwZW5kKExvY2FsPFQ+KCptX2dsb2JhbERhdGEsIHZhbHVlKSk7CisgICAg
ICAgICAgICBtX3N0YWNrLmFwcGVuZChMb2NhbDxUPihtX2dsb2JhbERhdGEsIHZhbHVlKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fc3RhY2tbbV9jb3VudF0gPSB2YWx1ZTsKICAgICAg
ICAgbV9jb3VudCsrOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxK
U0dsb2JhbERhdGE+IG1fZ2xvYmFsRGF0YTsKKyAgICBKU0dsb2JhbERhdGEmIG1fZ2xvYmFsRGF0
YTsKICAgICBWZWN0b3I8TG9jYWw8VD4sIGlubGluZUNhcGFjaXR5PiBtX3N0YWNrOwogICAgIHVu
c2lnbmVkIG1fY291bnQ7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMTU1NDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3
ICs4OSw4IEBAIGV4dGVybiBjb25zdCBIYXNoVGFibGUgc3RyaW5nVGFibGU7CiBleHRlcm4gY29u
c3QgSGFzaFRhYmxlIHN0cmluZ0NvbnN0cnVjdG9yVGFibGU7CiAKIEpTR2xvYmFsRGF0YTo6SlNH
bG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUg
dGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSBoZWFwU2l6ZSkKLSAgICA6IGdsb2JhbERhdGFUeXBl
KGdsb2JhbERhdGFUeXBlKQorICAgIDogaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGdsb2Jh
bERhdGFUeXBlKGdsb2JhbERhdGFUeXBlKQogICAgICwgY2xpZW50RGF0YSgwKQogICAgICwgdG9w
Q2FsbEZyYW1lKENhbGxGcmFtZTo6bm9DYWxsZXIoKSkKICAgICAsIGFycmF5Q29uc3RydWN0b3JU
YWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjphcnJheUNvbnN0cnVjdG9yVGFibGUpKQpAQCAt
MTE5LDcgKzEyMCw2IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAK
ICAgICAsIHBhcnNlckFyZW5hKGFkb3B0UHRyKG5ldyBQYXJzZXJBcmVuYSkpCiAgICAgLCBrZXl3
b3JkcyhhZG9wdFB0cihuZXcgS2V5d29yZHModGhpcykpKQogICAgICwgaW50ZXJwcmV0ZXIoMCkK
LSAgICAsIGhlYXAodGhpcywgaGVhcFNpemUpCiAgICAgLCBqc0FycmF5Q2xhc3NJbmZvKCZKU0Fy
cmF5OjpzX2luZm8pCiAgICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0ZpbmFsT2JqZWN0
OjpzX2luZm8pCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0yMTAsMzggKzIxMCwxMyBAQCBKU0ds
b2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgbGxpbnREYXRhLnBlcmZv
cm1Bc3NlcnRpb25zKCp0aGlzKTsKIH0KIAotdm9pZCBKU0dsb2JhbERhdGE6OmNsZWFyQnVpbHRp
blN0cnVjdHVyZXMoKQotewotICAgIHN0cnVjdHVyZVN0cnVjdHVyZS5jbGVhcigpOwotICAgIGRl
YnVnZ2VyQWN0aXZhdGlvblN0cnVjdHVyZS5jbGVhcigpOwotICAgIGFjdGl2YXRpb25TdHJ1Y3R1
cmUuY2xlYXIoKTsKLSAgICBpbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlLmNsZWFy
KCk7Ci0gICAgdGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlLmNsZWFyKCk7Ci0gICAg
c3RhdGljU2NvcGVTdHJ1Y3R1cmUuY2xlYXIoKTsKLSAgICBzdHJpY3RFdmFsQWN0aXZhdGlvblN0
cnVjdHVyZS5jbGVhcigpOwotICAgIHN0cmluZ1N0cnVjdHVyZS5jbGVhcigpOwotICAgIG5vdEFu
T2JqZWN0U3RydWN0dXJlLmNsZWFyKCk7Ci0gICAgcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1
cmUuY2xlYXIoKTsKLSAgICBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUuY2xlYXIoKTsKLSAgICBhcGlX
cmFwcGVyU3RydWN0dXJlLmNsZWFyKCk7Ci0gICAgc2NvcGVDaGFpbk5vZGVTdHJ1Y3R1cmUuY2xl
YXIoKTsKLSAgICBleGVjdXRhYmxlU3RydWN0dXJlLmNsZWFyKCk7Ci0gICAgbmF0aXZlRXhlY3V0
YWJsZVN0cnVjdHVyZS5jbGVhcigpOwotICAgIGV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLmNsZWFy
KCk7Ci0gICAgcHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuY2xlYXIoKTsKLSAgICBmdW5jdGlv
bkV4ZWN1dGFibGVTdHJ1Y3R1cmUuY2xlYXIoKTsKLSAgICByZWdFeHBTdHJ1Y3R1cmUuY2xlYXIo
KTsKLSAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5jbGVhcigpOwotfQotCiBKU0dsb2JhbERh
dGE6On5KU0dsb2JhbERhdGEoKQogewotICAgIC8vIEJ5IHRoZSB0aW1lIHRoaXMgaXMgZGVzdHJv
eWVkLCBoZWFwLmRlc3Ryb3koKSBtdXN0IGFscmVhZHkgaGF2ZSBiZWVuIGNhbGxlZC4KKyAgICBo
ZWFwLmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CiAKICAgICBkZWxldGUgaW50ZXJwcmV0ZXI7CiAj
aWZuZGVmIE5ERUJVRwotICAgIC8vIFplcm9pbmcgb3V0IHRvIG1ha2UgdGhlIGJlaGF2aW9yIG1v
cmUgcHJlZGljdGFibGUgd2hlbiBzb21lb25lIGF0dGVtcHRzIHRvIHVzZSBhIGRlbGV0ZWQgaW5z
dGFuY2UuCi0gICAgaW50ZXJwcmV0ZXIgPSAwOworICAgIGludGVycHJldGVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxJbnRlcnByZXRlcio+KDB4YmJhZGJlZWYpOwogI2VuZGlmCiAKICAgICBhcnJheVBy
b3RvdHlwZVRhYmxlLT5kZWxldGVUYWJsZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDExNTU0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTIsNiArMTUyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBtYWtlVXNhYmxl
RnJvbU11bHRpcGxlVGhyZWFkcygpIHsgaGVhcC5tYWNoaW5lVGhyZWFkcygpLm1ha2VVc2FibGVG
cm9tTXVsdGlwbGVUaHJlYWRzKCk7IH0KIAorICAgICAgICBIZWFwIGhlYXA7CisKICAgICAgICAg
R2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGU7CiAgICAgICAgIENsaWVudERhdGEqIGNsaWVu
dERhdGE7CiAgICAgICAgIENhbGxGcmFtZSogdG9wQ2FsbEZyYW1lOwpAQCAtMjUyLDcgKzI1NCw2
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFRpbWVvdXRDaGVja2VyIHRpbWVvdXRDaGVj
a2VyOwogICAgICAgICBUZXJtaW5hdG9yIHRlcm1pbmF0b3I7Ci0gICAgICAgIEhlYXAgaGVhcDsK
IAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKIApAQCAtMzI5LDcgKzMzMCw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGFkZFJlZ0V4cFRvVHJhY2UoUGFzc1JlZlB0cjxSZWdF
eHA+IHJlZ0V4cCk7CiAjZW5kaWYKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1w
UmVnRXhwVHJhY2UoKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjbGVhckJ1aWx0
aW5TdHJ1Y3R1cmVzKCk7CiAKICAgICAgICAgYm9vbCBpc0NvbGxlY3RvckJ1c3koKSB7IHJldHVy
biBoZWFwLmlzQnVzeSgpOyB9CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFz
ZUV4ZWN1dGFibGVNZW1vcnkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDExNTU0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMzLDggKzEzMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoSlNPYmplY3QqIHRo
aXMKICAgICAKICAgICBzdHJ1Y3R1cmUoKS0+ZGlzYWJsZVNwZWNpZmljRnVuY3Rpb25UcmFja2lu
ZygpOwogCi0gICAgbV9nbG9iYWxEYXRhID0gSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgp
OwotICAgIG1fZ2xvYmFsU2NvcGVDaGFpbi5zZXQoKm1fZ2xvYmFsRGF0YSwgdGhpcywgU2NvcGVD
aGFpbk5vZGU6OmNyZWF0ZSgwLCB0aGlzLCBtX2dsb2JhbERhdGEuZ2V0KCksIHRoaXMsIHRoaXNW
YWx1ZSkpOworICAgIG1fZ2xvYmFsU2NvcGVDaGFpbi5zZXQoZ2xvYmFsRGF0YSgpLCB0aGlzLCBT
Y29wZUNoYWluTm9kZTo6Y3JlYXRlKDAsIHRoaXMsICZnbG9iYWxEYXRhKCksIHRoaXMsIHRoaXNW
YWx1ZSkpOwogCiAgICAgSlNHbG9iYWxPYmplY3Q6Omdsb2JhbEV4ZWMoKS0+aW5pdCgwLCAwLCBt
X2dsb2JhbFNjb3BlQ2hhaW4uZ2V0KCksIENhbGxGcmFtZTo6bm9DYWxsZXIoKSwgMCwgMCk7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAkocmV2aXNpb24gMTE1NTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtODYsOCArODYsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIHByb3RlY3RlZDoKIAotICAgICAgICBSZWZQdHI8SlNHbG9iYWxEYXRhPiBt
X2dsb2JhbERhdGE7Ci0KICAgICAgICAgc2l6ZV90IG1fcmVnaXN0ZXJBcnJheVNpemU7CiAgICAg
ICAgIFJlZ2lzdGVyIG1fZ2xvYmFsQ2FsbEZyYW1lW1JlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZV07CiAKQEAgLTMwMiw3ICszMDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICB2b2lkIHJlc2V0UHJvdG90eXBlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlKTsK
IAotICAgICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEoKSBjb25zdCB7IHJldHVybiAqbV9n
bG9iYWxEYXRhLmdldCgpOyB9CisgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSgpIGNv
bnN0IHsgcmV0dXJuICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCk7IH0KIAogICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMTE1NTc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTItMDQtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KKworICAgICAgICBDbGFyaWZpZWQgSlNHbG9iYWxEYXRhIChKYXZhU2NyaXB0IFZNKSBs
aWZldGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODUxNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xsZXIpOiBTbGln
aHRseSAKKyAgICAgICAgc2ltcGxlciB0aGFuIGJlZm9yZS4gV2UgY2FuJ3QganVzdCByZWx5IG9u
IG91ciBkZWZhdWx0IGRlc3RydWN0b3IgCisgICAgICAgIGJlY2F1c2Ugd2UgbmVlZCB0byBob2xk
IHRoZSBKU0xvY2sgd2hlbiB3ZSB0ZWFyIGRvd24gdGhlIFZNLgorCisgICAgICAgICogYnJpZGdl
L05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKF9OUE5fSW52b2tlRGVmYXVsdCk6CisgICAgICAg
IChfTlBOX0ludm9rZSk6CisgICAgICAgIChfTlBOX0V2YWx1YXRlKToKKyAgICAgICAgKF9OUE5f
Q29uc3RydWN0KTogRG9uJ3QgUmVmUHRyPD4gdGhlIEpTR2xvYmFsRGF0YSBiZWNhdXNlIGl0IG1h
a2VzIGl0IAorICAgICAgICBzZWVtIGxpa2UgeW91IGtub3cgc29tZXRoaW5nIHRoZSByZXN0IG9m
IG91ciBjb2RlIGRvZXNuJ3Qga25vdy4gVGhlIAorICAgICAgICBwbHVnaW4gSlNHbG9iYWxEYXRh
IGlzIGltbW9ydGFsLCBhbnl3YXkuCisKKyAgICAgICAgSSBhbHNvIHJlbW92ZWQgc29tZSB0aW1l
b3V0IGNoZWNrZXIgcmVsYXRlZCBjb2RlIGJlY2F1c2UgdGhhdCBmZWF0dXJlIAorICAgICAgICBk
b2Vzbid0IHdvcmsgYW55bW9yZSwgc28gaXQgd2FzIGVmZmVjdGl2ZWx5IGRlYWQgY29kZS4KKwog
MjAxMi0wNC0yOCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmFwcGVuZCBoYXMgdG8g
YmUgaW1wbGVtZW50ZWQgZm9yIHNhdmluZyBoZWFwIHNuYXBzaG90cy4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAxMTU1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsOSArNjQsOSBAQCBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250CiAKIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6On5Xb3JrZXJTY3JpcHRDb250cm9sbGVyKCkKIHsKLSAgICBtX3dvcmtlckNvbnRleHRX
cmFwcGVyLmNsZWFyKCk7IC8vIFVucHJvdGVjdCB0aGUgZ2xvYmFsIG9iamVjdC4KLSAgICBtX2ds
b2JhbERhdGEtPmNsZWFyQnVpbHRpblN0cnVjdHVyZXMoKTsKLSAgICBtX2dsb2JhbERhdGEtPmhl
YXAuZGVzdHJveSgpOworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Cisg
ICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5jbGVhcigpOworICAgIG1fZ2xvYmFsRGF0YS5jbGVh
cigpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCShyZXZpc2lvbiAxMTU1NDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODksMTAgKzE4OSw3IEBAIGJvb2wgX05QTl9JbnZva2VEZWZhdWx0KE5QUCwgTlBPYmplY3Qq
IG8KICAgICAgICAgCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAg
ICAgIGdldExpc3RGcm9tVmFyaWFudEFyZ3MoZXhlYywgYXJncywgYXJnQ291bnQsIHJvb3RPYmpl
Y3QsIGFyZ0xpc3QpOwotICAgICAgICBSZWZQdHI8SlNHbG9iYWxEYXRhPiBnbG9iYWxEYXRhKCZl
eGVjLT5nbG9iYWxEYXRhKCkpOwotICAgICAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5z
dGFydCgpOwogICAgICAgICBKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rp
b24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZnVuY3Rpb24sIGFyZ0xpc3QpOwotICAgICAgICBnbG9i
YWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICAgICAgLy8gQ29udmVydCBhbmQg
cmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCiAgICAgICAgIGNvbnZlcnRW
YWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJlc3VsdFYsIHJlc3VsdCk7CkBAIC0yMzksMTAgKzIzNiw3
IEBAIGJvb2wgX05QTl9JbnZva2UoTlBQIG5wcCwgTlBPYmplY3QqIG8sIE4KICAgICAgICAgLy8g
Q2FsbCB0aGUgZnVuY3Rpb24gb2JqZWN0LgogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdMaXN0OwogICAgICAgICBnZXRMaXN0RnJvbVZhcmlhbnRBcmdzKGV4ZWMsIGFyZ3MsIGFyZ0Nv
dW50LCByb290T2JqZWN0LCBhcmdMaXN0KTsKLSAgICAgICAgUmVmUHRyPEpTR2xvYmFsRGF0YT4g
Z2xvYmFsRGF0YSgmZXhlYy0+Z2xvYmFsRGF0YSgpKTsKLSAgICAgICAgZ2xvYmFsRGF0YS0+dGlt
ZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHRWID0gSlNDOjpjYWxs
KGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iai0+aW1wLT5tZXRob2RUYWJs
ZSgpLT50b1RoaXNPYmplY3Qob2JqLT5pbXAsIGV4ZWMpLCBhcmdMaXN0KTsKLSAgICAgICAgZ2xv
YmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgICAgIC8vIENvbnZlcnQgYW5k
IHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgogICAgICAgICBjb252ZXJ0
VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRWLCByZXN1bHQpOwpAQCAtMjczLDExICsyNjcs
OCBAQCBib29sIF9OUE5fRXZhbHVhdGUoTlBQIGluc3RhbmNlLCBOUE9iamVjCiAgICAgICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7
CiAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgICAgIFN0
cmluZyBzY3JpcHRTdHJpbmcgPSBjb252ZXJ0TlBTdHJpbmdUb1VURjE2KHMpOwotICAgICAgICBS
ZWZQdHI8SlNHbG9iYWxEYXRhPiBnbG9iYWxEYXRhKCZleGVjLT5nbG9iYWxEYXRhKCkpOwogICAg
ICAgICAKLSAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICAg
ICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpTQzo6ZXZhbHVhdGUocm9vdE9iamVjdC0+Z2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2Jh
bFNjb3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShzY3JpcHRTdHJpbmcpLCBKU0M6OkpTVmFsdWUoKSk7
Ci0gICAgICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKIAogICAgICAgICBj
b252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCByZXR1cm5WYWx1ZSwgdmFyaWFudCk7CiAgICAg
ICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CkBAIC01MDUsMTAgKzQ5Niw3IEBAIGJvb2wgX05Q
Tl9Db25zdHJ1Y3QoTlBQLCBOUE9iamVjdCogbywgY28KICAgICAgICAgCiAgICAgICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgICAgIGdldExpc3RGcm9tVmFyaWFudEFyZ3Mo
ZXhlYywgYXJncywgYXJnQ291bnQsIHJvb3RPYmplY3QsIGFyZ0xpc3QpOwotICAgICAgICBSZWZQ
dHI8SlNHbG9iYWxEYXRhPiBnbG9iYWxEYXRhKCZleGVjLT5nbG9iYWxEYXRhKCkpOwotICAgICAg
ICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgICAgICBKU1ZhbHVlIHJl
c3VsdFYgPSBKU0M6OmNvbnN0cnVjdChleGVjLCBjb25zdHJ1Y3RvciwgY29uc3RydWN0VHlwZSwg
Y29uc3RydWN0RGF0YSwgYXJnTGlzdCk7Ci0gICAgICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVj
a2VyLnN0b3AoKTsKICAgICAgICAgCiAgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUg
cmVzdWx0LgogICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRWLCBy
ZXN1bHQpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTE1NTc3KQorKysgU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTItMDQtMjggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBD
bGFyaWZpZWQgSlNHbG9iYWxEYXRhIChKYXZhU2NyaXB0IFZNKSBsaWZldGltZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUxNDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2UpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6Omludm9rZURlZmF1bHQpOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmNvbnN0cnVjdCk6CisKIDIwMTItMDQtMjcgIEdhdmlu
IFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIG5ldyBFTkFCTEVf
TElOS19QUkVSRU5ERVIgZGVmaW5lIHRvIGNvbnRyb2wgdGhlIFByZXJlbmRlcmluZyBBUEkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0JKHJldmlzaW9uIDExNTU0NCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTE0LDEwICs5MTQsNyBAQCBib29sIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlz
dDsKICAgICBkZW1hcnNoYWxWYWx1ZXMoZXhlYywgYXJndW1lbnRzRGF0YSwgYXJndW1lbnRzTGVu
Z3RoLCBhcmdMaXN0KTsKIAotICAgIFJlZlB0cjxKU0dsb2JhbERhdGE+IGdsb2JhbERhdGEgPSBw
bHVnaW5Xb3JsZCgpLT5nbG9iYWxEYXRhKCk7Ci0gICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNr
ZXIuc3RhcnQoKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbChleGVjLCBmdW5jdGlvbiwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnRvVGhpc09iamVjdChvYmpl
Y3QsIGV4ZWMpLCBhcmdMaXN0KTsKLSAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9w
KCk7CiAgICAgICAgIAogICAgIG1hcnNoYWxWYWx1ZShleGVjLCB2YWx1ZSwgcmVzdWx0RGF0YSwg
cmVzdWx0TGVuZ3RoKTsKICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwpAQCAtOTQ5LDEwICs5
NDYsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlCiAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICBkZW1hcnNoYWxWYWx1ZXMoZXhlYywgYXJn
dW1lbnRzRGF0YSwgYXJndW1lbnRzTGVuZ3RoLCBhcmdMaXN0KTsKIAotICAgIFJlZlB0cjxKU0ds
b2JhbERhdGE+IGdsb2JhbERhdGEgPSBwbHVnaW5Xb3JsZCgpLT5nbG9iYWxEYXRhKCk7Ci0gICAg
Z2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICBKU1ZhbHVlIHZhbHVlID0g
Y2FsbChleGVjLCBvYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT50b1RoaXNPYmplY3Qob2JqZWN0LCBleGVjKSwgYXJnTGlzdCk7Ci0gICAgZ2xvYmFsRGF0
YS0+dGltZW91dENoZWNrZXIuc3RvcCgpOwogICAgIAogICAgIG1hcnNoYWxWYWx1ZShleGVjLCB2
YWx1ZSwgcmVzdWx0RGF0YSwgcmVzdWx0TGVuZ3RoKTsKICAgICBleGVjLT5jbGVhckV4Y2VwdGlv
bigpOwpAQCAtOTg1LDEwICs5NzksNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eTo6Y29uc3RyCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICBkZW1hcnNo
YWxWYWx1ZXMoZXhlYywgYXJndW1lbnRzRGF0YSwgYXJndW1lbnRzTGVuZ3RoLCBhcmdMaXN0KTsK
IAotICAgIFJlZlB0cjxKU0dsb2JhbERhdGE+IGdsb2JhbERhdGEgPSBwbHVnaW5Xb3JsZCgpLT5n
bG9iYWxEYXRhKCk7Ci0gICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNDOjpjb25zdHJ1Y3QoZXhlYywgb2JqZWN0LCBjb25zdHJ1Y3RU
eXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdMaXN0KTsKLSAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hl
Y2tlci5zdG9wKCk7CiAgICAgCiAgICAgbWFyc2hhbFZhbHVlKGV4ZWMsIHZhbHVlLCByZXN1bHRE
YXRhLCByZXN1bHRMZW5ndGgpOwogICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140839</attachid>
            <date>2012-05-08 18:28:24 -0700</date>
            <delta_ts>2012-05-08 21:41:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85142-20120508182823.patch</filename>
            <type>text/plain</type>
            <size>2106</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NDc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTA1LTA4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ2xhcmlmaWVkIEpTR2xvYmFsRGF0YSAoSmF2YVNjcmlwdCBWTSkgbGlmZXRpbWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MTQyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKEZvbGxvdy11cCBmaXgu
KQorCisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0dsb2JhbENv
bnRleHRDcmVhdGUpOiBSZXN0b3JlZCBzb21lIGNvZGUgSSByZW1vdmVkIGJlY2F1c2UgSSBtaXNy
ZWFkIGFuICNpZmRlZi4KKyAgICAgICAgKFdlIGRvbid0IG5lZWQgdG8gdGVzdCBCVUlMRElOR19P
Tl9MRU9QQVJELCBidXQgd2Ugc3RpbGwgbmVlZCB0aGUgbGlua2VkLW9uCisgICAgICAgIHRlc3Qs
IGJlY2F1c2UgYXBwcyBtaWdodCBoYXZlIGJlZW4gbGlua2VkIG9uIG9sZGVyIE9TJ3MuKQorCiAy
MDEyLTA1LTA4ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTSUdGUEUgb24gZGl2aWRlIGluIGNsYXNzaWMgaW50ZXJwcmV0ZXIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHJldmlzaW9uIDExNjQ3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsMTIgQEAKICNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAorI2lmIE9TKERBUldJTikKKyNpbmNs
dWRlIDxtYWNoLW8vZHlsZC5oPgorCitzdGF0aWMgY29uc3QgaW50MzJfdCB3ZWJraXRGaXJzdFZl
cnNpb25XaXRoQ29uY3VycmVudEdsb2JhbENvbnRleHRzID0gMHgyMTAwNTAwOyAvLyA1MjguNS4w
CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnJvbSB0aGUgQVBJJ3MgcGVy
c3BlY3RpdmUsIGEgY29udGV4dCBncm91cCByZW1haW5zIGFsaXZlIGlmZgpAQCAtNjcsNiArNzMs
MTYgQEAgdm9pZCBKU0NvbnRleHRHcm91cFJlbGVhc2UoSlNDb250ZXh0R3JvdQogSlNHbG9iYWxD
b250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZShKU0NsYXNzUmVmIGdsb2JhbE9iamVjdENs
YXNzKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKKworI2lmIE9TKERBUldJTikKKyAg
ICAvLyBJZiB0aGUgYXBwbGljYXRpb24gd2FzIGxpbmtlZCBiZWZvcmUgSlNHbG9iYWxDb250ZXh0
Q3JlYXRlIHdhcyBjaGFuZ2VkIHRvIHVzZSBhIHVuaXF1ZSBKU0dsb2JhbERhdGEsCisgICAgLy8g
d2UgdXNlIGEgc2hhcmVkIG9uZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisgICAgaWYg
KE5TVmVyc2lvbk9mTGlua1RpbWVMaWJyYXJ5KCJKYXZhU2NyaXB0Q29yZSIpIDw9IHdlYmtpdEZp
cnN0VmVyc2lvbldpdGhDb25jdXJyZW50R2xvYmFsQ29udGV4dHMpIHsKKyAgICAgICAgSlNMb2Nr
IGxvY2soTG9ja0ZvclJlYWwpOworICAgICAgICByZXR1cm4gSlNHbG9iYWxDb250ZXh0Q3JlYXRl
SW5Hcm91cCh0b1JlZigmSlNHbG9iYWxEYXRhOjpzaGFyZWRJbnN0YW5jZSgpKSwgZ2xvYmFsT2Jq
ZWN0Q2xhc3MpOworICAgIH0KKyNlbmRpZiAvLyBPUyhEQVJXSU4pCisKICAgICByZXR1cm4gSlNH
bG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cCgwLCBnbG9iYWxPYmplY3RDbGFzcyk7CiB9CiAK
</data>
<flag name="review"
          id="146828"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>