<?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>108660</bug_id>
          
          <creation_ts>2013-02-01 10:49:13 -0800</creation_ts>
          <short_desc>Merged the global function cache into the source code cache</short_desc>
          <delta_ts>2013-02-15 11:55:39 -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>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>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>kling</cc>
    
    <cc>oliver</cc>
    
    <cc>yongjun.zhang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>822954</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-01 10:49:13 -0800</bug_when>
    <thetext>Merged the global function cache into the source code cache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823029</commentid>
    <comment_count>1</comment_count>
      <attachid>186085</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-01 11:30:06 -0800</bug_when>
    <thetext>Created attachment 186085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823034</commentid>
    <comment_count>2</comment_count>
      <attachid>186086</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-01 11:31:21 -0800</bug_when>
    <thetext>Created attachment 186086
benchmark results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823050</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-02-01 11:38:37 -0800</bug_when>
    <thetext>Could you test on http://jsbench.cs.purdue.edu as well? and the plt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823104</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-01 12:08:33 -0800</bug_when>
    <thetext>&gt; Could you test on http://jsbench.cs.purdue.edu as well?

I did. Same result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833703</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-14 22:39:01 -0800</bug_when>
    <thetext>&gt; and the plt?

Had to bump the limit to 1280 to make the plt happy. Seems to confirm the need for an adaptive size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833705</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-14 22:40:03 -0800</bug_when>
    <thetext>&gt; &gt; and the plt?

(Merging the caches and keeping the net limit of 2048 is a 4% PLT speedup.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833707</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-14 22:42:40 -0800</bug_when>
    <thetext>Committed r142966: &lt;http://trac.webkit.org/changeset/142966&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834094</commentid>
    <comment_count>8</comment_count>
      <attachid>186085</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-15 09:20:51 -0800</bug_when>
    <thetext>Comment on attachment 186085
Patch

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

&gt; Source/JavaScriptCore/runtime/CodeCache.h:102
&gt; +        , m_name(WTF::HashTableDeletedValue)

I think this not helpful. Instead m_name should be allowed to initialize itself to the null string. m_sourceString is the field that holds the deleted state and m_name need not do anything special. In fact, if there was an easy way to do so, I would suggest leaving this in an uninitialized state.

&gt; Source/JavaScriptCore/runtime/CodeCache.h:103
&gt; +        , m_flags(0)

Why not omit this? Why generate the extra code to zero out the m_flags field?

&gt; Source/JavaScriptCore/runtime/CodeCache.h:132
&gt; +struct SourceCodeKeyHashTraits : WTF::SimpleClassHashTraits&lt;SourceCodeKey&gt; {

Surprised you have to use the WTF:: prefix here. Should we fix that in WTF by putting adding using lines to the HashTraits.h header?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834232</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-15 11:55:16 -0800</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/runtime/CodeCache.h:102
&gt; &gt; +        , m_name(WTF::HashTableDeletedValue)
&gt; 
&gt; I think this not helpful. Instead m_name should be allowed to initialize itself to the null string. m_sourceString is the field that holds the deleted state and m_name need not do anything special. In fact, if there was an easy way to do so, I would suggest leaving this in an uninitialized state.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/CodeCache.h:103
&gt; &gt; +        , m_flags(0)
&gt; 
&gt; Why not omit this? Why generate the extra code to zero out the m_flags field?

Agreed on both counts. Will fix.

&gt; &gt; Source/JavaScriptCore/runtime/CodeCache.h:132
&gt; &gt; +struct SourceCodeKeyHashTraits : WTF::SimpleClassHashTraits&lt;SourceCodeKey&gt; {
&gt; 
&gt; Surprised you have to use the WTF:: prefix here. Should we fix that in WTF by putting adding using lines to the HashTraits.h header?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834234</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-15 11:55:39 -0800</bug_when>
    <thetext>Committed r143027: &lt;http://trac.webkit.org/changeset/143027&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186085</attachid>
            <date>2013-02-01 11:30:06 -0800</date>
            <delta_ts>2013-02-15 09:20:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108660-20130201112649.patch</filename>
            <type>text/plain</type>
            <size>16333</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQxNjE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOSBA
QAorMjAxMy0wMi0wMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIE1lcmdlZCB0aGUgZ2xvYmFsIGZ1bmN0aW9uIGNhY2hlIGludG8gdGhlIHNvdXJjZSBjb2Rl
IGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDg2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGhhcyBhIGZldyBiZW5lZml0czoKKworICAgICAgICAgICAgKCopIFNhdmVzIGEgZmV3IGtC
IGJ5IHJlbW92aW5nIGEgc2Vjb25kIGNhY2hlIGRhdGEgc3RydWN0dXJlLgorCisgICAgICAgICAg
ICAoKikgUmVkdWNlcyB0aGUgd29yc3QgY2FzZSBtZW1vcnkgdXNhZ2Ugb2YgdGhlIGNhY2hlIGJ5
IDJYLiAoSGVhdnkKKyAgICAgICAgICAgIHVzZSBvZiAnbmV3IEZ1bmN0aW9uJyBhbmQgb3RoZXIg
dGVjaG5pcXVlcyBjb3VsZCBjYXVzZSB1cyB0byBmaWxsCisgICAgICAgICAgICBib3RoIHJvb3Qg
Y2FjaGVzLCBhbmQgdGhleSBkaWRuJ3QgdHJhZGUgb2ZmIGFnYWluc3QgZWFjaCBvdGhlci4pCisK
KyAgICAgICAgICAgICgqKSBQYXZlcyB0aGUgd2F5IGZvciBmdXR1cmUgaW1wcm92ZW1lbnRzIGJh
c2VkIG9uIGEgbm9uLXRyaXZpYWwKKyAgICAgICAgICAgIGNhY2hlIGtleSAoZm9yIGV4YW1wbGUs
IHNocmlua2FibGUgcG9pbnRlciB0byB0aGUga2V5IHN0cmluZywgYW5kCisgICAgICAgICAgICBt
b3JlIHByZWNpc2UgY2FjaGUgc2l6ZSBhY2NvdW50aW5nKS4KKworICAgICAgICBBbHNvIGNsZWFu
ZWQgdXAgdGhlIGNhY2hlIGltcGxlbWVudGF0aW9uIGFuZCBzaW1wbGlmaWVkIGl0IGEgYml0Lgor
CisgICAgICAgICogaGVhcC9IYW5kbGUuaDoKKyAgICAgICAgKEhhbmRsZUJhc2UpOgorICAgICAg
ICAqIGhlYXAvU3Ryb25nLmg6CisgICAgICAgIChTdHJvbmcpOiBCdWlsZCEKKworICAgICAgICAq
IHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNv
ZGVDYWNoZTo6Z2V0Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZW5lcmF0
ZUZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlv
bkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6dXNl
ZEZ1bmN0aW9uQ29kZSk6IFVwZGF0ZWQgZm9yIHRocmVlIGludGVyZmFjZSBjaGFuZ2VzOgorCisg
ICAgICAgICAgICAoKikgU291cmNlQ29kZUtleSBpcyBhIGNsYXNzLCBub3QgYSBwYWlyLgorCisg
ICAgICAgICAgICAoKikgVGFibGUgdmFsdWVzIGFyZSBhYnN0cmFjdCBwb2ludGVycywgc2luY2Ug
dGhleSBjYW4gYmUgZXhlY3V0YWJsZXMKKyAgICAgICAgICAgIG9yIGNvZGUgYmxvY2tzLiAoSW4g
YSBmdXR1cmUgcGF0Y2gsIEknZCBsaWtlIHRvIGNoYW5nZSB0aGlzIHNvIHdlCisgICAgICAgICAg
ICBhbHdheXMgc3RvcmUgb25seSBjb2RlIGJsb2Nrcy4gQnV0IHRoYXQncyB0b28gbXVjaCBmb3Ig
b25lIHBhdGNoLikKKworICAgICAgICAgICAgKCopIFRoZSBjYWNoZSBmdW5jdGlvbiBpcyBuYW1l
ZCAic2V0IiBiZWNhdXNlIGl0IGFsd2F5cyBvdmVyd3JpdGVzCisgICAgICAgICAgICB1bmNvbmRp
dGlvbmFsbHkuCisKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5oOgorICAgICAgICAoQ2Fj
aGVNYXApOgorICAgICAgICAoSlNDOjpDYWNoZU1hcDo6ZmluZCk6CisgICAgICAgIChKU0M6OkNh
Y2hlTWFwOjpzZXQpOgorICAgICAgICAoSlNDOjpDYWNoZU1hcDo6Y2xlYXIpOiBBZGRlZCBzdXBw
b3J0IGZvciBzcGVjaWZ5aW5nIGhhc2ggdHJhaXRzLCBzbyB3ZQorICAgICAgICBjYW4gdXNlIGEg
U291cmNlQ29kZUtleS4KKworICAgICAgICBSZW1vdmVkIHNpZGUgdGFibGUgYW5kIHJhbmRvbSBu
dW1iZXIgZ2VuZXJhdG9yIHRvIHNhdmUgc3BhY2UgYW5kIHJlZHVjZQorICAgICAgICBjb21wbGV4
aXR5LiBIYXNoIHRhYmxlcyBhcmUgYWxyZWFkeSByYW5kb20sIHNvIHdlIGRvbid0IG5lZWQgYW5v
dGhlciBzb3VyY2UKKyAgICAgICAgb2YgcmFuZG9tbmVzcy4KKworICAgICAgICAoU291cmNlQ29k
ZUtleSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OlNvdXJjZUNvZGVLZXkpOgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAg
ICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Omhhc2gpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2Rl
S2V5Ojppc051bGwpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpT
b3VyY2VDb2RlS2V5SGFzaDo6ZXF1YWwpOgorICAgICAgICAoU291cmNlQ29kZUtleUhhc2gpOgor
ICAgICAgICAoU291cmNlQ29kZUtleUhhc2hUcmFpdHMpOgorICAgICAgICAoSlNDOjpTb3VyY2VD
b2RlS2V5SGFzaFRyYWl0czo6aXNFbXB0eVZhbHVlKTogQSBTb3VyY2VDb2RlS2V5IGlzIGp1c3Qg
YQorICAgICAgICBmYW5jeSB0cmlwbGV0OiBzb3VyY2UgY29kZSBzdHJpbmc7IGZ1bmN0aW9uIG5h
bWUgKG9yIG51bGwsIGZvciBub24tZnVuY3Rpb25zKTsKKyAgICAgICAgYW5kIGZsYWdzLiBGbGFn
cyBhbmQgZnVuY3Rpb24gbmFtZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIGZ1bmN0aW9ucyBhbmQgcHJv
Z3JhbXMKKyAgICAgICAgd2l0aCBpZGVudGljYWwgY29kZSwgc28gdGhleSBjYW4gbGl2ZSBpbiB0
aGUgc2FtZSBjYWNoZS4KKworICAgICAgICBJIGNob3NlIHRvIHVzZSB0aGUgc291cmNlIGNvZGUg
c3RyaW5nIGFzIHRoZSBwcmltYXJ5IGhhc2hpbmcgcmVmZXJlbmNlCisgICAgICAgIGJlY2F1c2Ug
aXQncyBsaWtlbHkgdG8gYmUgdW5pcXVlLiBXZSBjYW4gdXNlIHByb2ZpbGluZyB0byBjaG9vc2Ug
YW5vdGhlcgorICAgICAgICB0ZWNobmlxdWUgaW4gZnV0dXJlLCBpZiBjb2xsaXNpb25zIGJldHdl
ZW4gZnVuY3Rpb25zIGFuZCBwcm9ncmFtcyBwcm92ZQorICAgICAgICB0byBiZSBob3QuIEkgc3Vz
cGVjdCB0aGV5IHdvbid0LgorCisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Y2xlYXIpOgorICAg
ICAgICAoQ29kZUNhY2hlKTogUmVtb3ZlZCB0aGUgc2Vjb25kIGNhY2hlLgorCisgICAgICAgICog
aGVhcC9IYW5kbGUuaDoKKyAgICAgICAgKEhhbmRsZUJhc2UpOgorICAgICAgICAqIGhlYXAvU3Ry
b25nLmg6CisgICAgICAgIChTdHJvbmcpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNw
cDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0Q29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFs
Q29kZSk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6dXNlZEZ1bmN0aW9uQ29kZSk6CisgICAg
ICAgICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChDYWNo
ZU1hcCk6CisgICAgICAgIChKU0M6OkNhY2hlTWFwOjpmaW5kKToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVNYXA6OnNldCk6CisgICAgICAgIChKU0M6OkNhY2hlTWFwOjpjbGVhcik6CisgICAgICAgIChT
b3VyY2VDb2RlS2V5KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6U291cmNlQ29kZUtl
eSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6aGFzaCk6CisgICAgICAgIChKU0M6OlNv
dXJjZUNvZGVLZXk6OmlzTnVsbCk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlS2V5SGFzaDo6aGFzaCk6CisgICAgICAg
IChKU0M6OlNvdXJjZUNvZGVLZXlIYXNoOjplcXVhbCk6CisgICAgICAgIChTb3VyY2VDb2RlS2V5
SGFzaCk6CisgICAgICAgIChTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cyk6CisgICAgICAgIChKU0M6
OlNvdXJjZUNvZGVLZXlIYXNoVHJhaXRzOjppc0VtcHR5VmFsdWUpOgorICAgICAgICAoSlNDOjpD
b2RlQ2FjaGU6OmNsZWFyKToKKyAgICAgICAgKENvZGVDYWNoZSk6CisKIDIwMTMtMDItMDEgIEdl
b2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmVkIGFuIHVu
dXNlZCBmdW5jdGlvbjogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUZ1bmN0aW9uRXhlY3V0YWJsZUZy
b21HbG9iYWxDb2RlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAkocmV2aXNp
b24gMTQxNjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgdGVtcGxhdGUgPD4gY2xhc3MgSGFuZGxlPEpTVmFs
dWU+OwogCiBjbGFzcyBIYW5kbGVCYXNlIHsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gZnJp
ZW5kIGNsYXNzIFdlYWs7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGZyaWVuZCBjbGFzcyBT
dHJvbmc7CiAgICAgZnJpZW5kIGNsYXNzIEhhbmRsZVNldDsKICAgICBmcmllbmQgc3RydWN0IEpT
Q2FsbGJhY2tPYmplY3REYXRhOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
dHJvbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcu
aAkocmV2aXNpb24gMTQxNjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25n
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgSlNHbG9iYWxEYXRhOwog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFN0cm9uZyA6IHB1YmxpYyBIYW5kbGU8VD4gewog
ICAgIHVzaW5nIEhhbmRsZTxUPjo6c2xvdDsKICAgICB1c2luZyBIYW5kbGU8VD46OnNldFNsb3Q7
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGZyaWVuZCBjbGFzcyBTdHJvbmc7CiAKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhbmRsZTxUPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFs
VHlwZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cAkocmV2aXNpb24gMTQxNjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMzAgKzQ0LDI1IEBAIENvZGVDYWNoZTo6
fkNvZGVDYWNoZSgpCiB7CiB9CiAKLUNvZGVDYWNoZTo6U291cmNlQ29kZUtleSBDb2RlQ2FjaGU6
Om1ha2VTb3VyY2VDb2RlS2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUNhY2hlOjpD
b2RlVHlwZSB0eXBlLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcykKLXsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3BhaXIoc291cmNlLnRvU3RyaW5nKCksICh0eXBlIDw8IDEpIHwgc3RyaWN0
bmVzcyk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ2FjaGVUeXBlcyB7IH07
CiAKIHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
az4gewogICAgIHR5cGVkZWYgSlNDOjpQcm9ncmFtTm9kZSBSb290Tm9kZTsKLSAgICBzdGF0aWMg
Y29uc3QgQ29kZUNhY2hlOjpDb2RlVHlwZSBjb2RlVHlwZSA9IENvZGVDYWNoZTo6UHJvZ3JhbVR5
cGU7CisgICAgc3RhdGljIGNvbnN0IFNvdXJjZUNvZGVLZXk6OkNvZGVUeXBlIGNvZGVUeXBlID0g
U291cmNlQ29kZUtleTo6UHJvZ3JhbVR5cGU7CiB9OwogCiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2Fj
aGVUeXBlczxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+IHsKICAgICB0eXBlZGVmIEpTQzo6RXZhbE5v
ZGUgUm9vdE5vZGU7Ci0gICAgc3RhdGljIGNvbnN0IENvZGVDYWNoZTo6Q29kZVR5cGUgY29kZVR5
cGUgPSBDb2RlQ2FjaGU6OkV2YWxUeXBlOworICAgIHN0YXRpYyBjb25zdCBTb3VyY2VDb2RlS2V5
OjpDb2RlVHlwZSBjb2RlVHlwZSA9IFNvdXJjZUNvZGVLZXk6OkV2YWxUeXBlOwogfTsKIAogdGVt
cGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3MgRXhlY3V0YWJsZVR5cGU+
CiBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0Q29kZUJsb2NrKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgRXhlY3V0YWJsZVR5cGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MsIERlYnVnZ2VyTW9k
ZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBl
cnJvcikKIHsKLSAgICBTb3VyY2VDb2RlS2V5IGtleSA9IG1ha2VTb3VyY2VDb2RlS2V5KHNvdXJj
ZSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+Ojpjb2RlVHlwZSwgc3RyaWN0bmVz
cyk7CisgICAgU291cmNlQ29kZUtleSBrZXkgPSBTb3VyY2VDb2RlS2V5KHNvdXJjZSwgU3RyaW5n
KCksIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Y29kZVR5cGUsIHN0cmljdG5l
c3MpOwogICAgIGJvb2wgc3RvcmVJbkNhY2hlID0gZmFsc2U7CiAgICAgaWYgKGRlYnVnZ2VyTW9k
ZSA9PSBEZWJ1Z2dlck9mZiAmJiBwcm9maWxlck1vZGUgPT0gUHJvZmlsZXJPZmYpIHsKLSAgICAg
ICAgY29uc3QgU3Ryb25nPFVubGlua2VkQ29kZUJsb2NrPiogcmVzdWx0ID0gbV9zb3VyY2VDb2Rl
LmZpbmQoa2V5KTsKKyAgICAgICAgY29uc3QgU3Ryb25nPEpTQ2VsbD4qIHJlc3VsdCA9IG1fc291
cmNlQ29kZS5maW5kKGtleSk7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgICAgIFVu
bGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlID0ganNDYXN0PFVubGlua2VkQ29kZUJs
b2NrVHlwZSo+KHJlc3VsdC0+Z2V0KCkpOwogICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RMaW5l
ID0gc291cmNlLmZpcnN0TGluZSgpICsgdW5saW5rZWRDb2RlLT5maXJzdExpbmUoKTsKQEAgLTky
LDcgKzg3LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldENvZAogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIGlmIChzdG9yZUluQ2FjaGUpCi0gICAgICAgIG1fc291cmNl
Q29kZS5hZGQoa2V5LCBTdHJvbmc8VW5saW5rZWRDb2RlQmxvY2s+KGdsb2JhbERhdGEsIHVubGlu
a2VkQ29kZSkpOworICAgICAgICBtX3NvdXJjZUNvZGUuc2V0KGtleSwgU3Ryb25nPFVubGlua2Vk
Q29kZUJsb2NrPihnbG9iYWxEYXRhLCB1bmxpbmtlZENvZGUpKTsKIAogICAgIHJldHVybiB1bmxp
bmtlZENvZGU7CiB9CkBAIC0xMjcsNyArMTIyLDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogQ29kZUNhY2hlOjpnZQogICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CiAgICAgaWYgKGVycm9y
Lm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICBtX3JlY2VudGx5VXNlZEZ1bmN0aW9ucy5hZGQocmVzdWx0LCBTdHJvbmc8VW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaz4oZ2xvYmFsRGF0YSwgcmVzdWx0KSk7CisgICAgbV9yZWNlbnRseVVzZWRG
dW5jdGlvbnMuc2V0KHJlc3VsdCwgU3Ryb25nPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+KGds
b2JhbERhdGEsIHJlc3VsdCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEzNiwxNyAr
MTMxLDEyIEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIENvZGVDYWNoZTo6Z2UKICAgICBy
ZXR1cm4gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhnbG9iYWxEYXRhLCBleGVjdXRhYmxlLCBz
b3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CiB9CiAKLUNv
ZGVDYWNoZTo6RnVuY3Rpb25LZXkgQ29kZUNhY2hlOjptYWtlRnVuY3Rpb25LZXkoY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgcmV0dXJuIEZ1bmN0
aW9uS2V5KHNvdXJjZS50b1N0cmluZygpLCBuYW1lKTsKLX0KLQogVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKLSAgICBGdW5jdGlvbktl
eSBrZXkgPSBtYWtlRnVuY3Rpb25LZXkoc291cmNlLCBuYW1lLnN0cmluZygpKTsKLSAgICBjb25z
dCBTdHJvbmc8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KiByZXN1bHQgPSBtX2dsb2JhbEZ1
bmN0aW9ucy5maW5kKGtleSk7CisgICAgU291cmNlQ29kZUtleSBrZXkgPSBTb3VyY2VDb2RlS2V5
KHNvdXJjZSwgbmFtZS5zdHJpbmcoKSwgU291cmNlQ29kZUtleTo6RnVuY3Rpb25DYWxsVHlwZSwg
SlNQYXJzZU5vcm1hbCk7CisgICAgY29uc3QgU3Ryb25nPEpTQ2VsbD4qIHJlc3VsdCA9IG1fc291
cmNlQ29kZS5maW5kKGtleSk7CiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dC0+Z2V0KCk7CisgICAgICAgIHJldHVybiBqc0Nhc3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqPihyZXN1bHQtPmdldCgpKTsKIAogICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9
IHBhcnNlPFByb2dyYW1Ob2RlPigmZ2xvYmFsRGF0YSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCks
IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IpOwogICAgIGlmICghcHJv
Z3JhbSkgewpAQCAtMTY4LDEzICsxNTgsMTMgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IENvZGVDYWNoZTo6ZwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZnbG9iYWxEYXRh
LCBzb3VyY2UsIGJvZHkpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0
KGdsb2JhbERhdGEsIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJmdsb2JhbERhdGEsIG5h
bWUuc3RyaW5nKCkpKTsKIAotICAgIG1fZ2xvYmFsRnVuY3Rpb25zLmFkZChrZXksIFN0cm9uZzxV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YSwgZnVuY3Rpb25FeGVjdXRhYmxl
KSk7CisgICAgbV9zb3VyY2VDb2RlLnNldChrZXksIFN0cm9uZzxVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZT4oZ2xvYmFsRGF0YSwgZnVuY3Rpb25FeGVjdXRhYmxlKSk7CiAgICAgcmV0dXJuIGZ1
bmN0aW9uRXhlY3V0YWJsZTsKIH0KIAogdm9pZCBDb2RlQ2FjaGU6OnVzZWRGdW5jdGlvbkNvZGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiB7Ci0gICAgbV9yZWNlbnRseVVzZWRGdW5jdGlvbnMuYWRkKGNvZGVCbG9jaywgU3Ry
b25nPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+KGdsb2JhbERhdGEsIGNvZGVCbG9jaykpOwor
ICAgIG1fcmVjZW50bHlVc2VkRnVuY3Rpb25zLnNldChjb2RlQmxvY2ssIFN0cm9uZzxVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrPihnbG9iYWxEYXRhLCBjb2RlQmxvY2spKTsKIH0KIAogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgJKHJldmlzaW9uIDE0
MTYwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgiCiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2Rl
LmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgotCiAjaW5j
bHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC01Myw1MCArNTMsODUgQEAgc3RydWN0IFBhcnNlckVy
cm9yOwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgRW50cnlUeXBlLCBpbnQgQ2FjaGVTaXplPiBj
bGFzcyBDYWNoZU1hcCB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwPEtleVR5cGUsIHVu
c2lnbmVkPjo6aXRlcmF0b3IgaXRlcmF0b3I7Cit0ZW1wbGF0ZSA8aW50IENhY2hlU2l6ZSwgdHlw
ZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgRW50cnlUeXBlLCB0eXBlbmFtZSBIYXNoQXJnID0gdHlw
ZW5hbWUgRGVmYXVsdEhhc2g8S2V5VHlwZT46Okhhc2gsIHR5cGVuYW1lIEtleVRyYWl0c0FyZyA9
IEhhc2hUcmFpdHM8S2V5VHlwZT4gPgorY2xhc3MgQ2FjaGVNYXAgeworICAgIHR5cGVkZWYgSGFz
aE1hcDxLZXlUeXBlLCBFbnRyeVR5cGUsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz4gTWFwVHlwZTsK
KyAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9yIGl0ZXJhdG9yOworCiBwdWJs
aWM6Ci0gICAgQ2FjaGVNYXAoKQotICAgICAgICA6IG1fcmFuZG9tR2VuZXJhdG9yKChzdGF0aWNf
Y2FzdDx1aW50MzJfdD4ocmFuZG9tTnVtYmVyKCkgKiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWF4KCkpKSkKLSAgICB7Ci0gICAgfQogICAgIGNvbnN0IEVudHJ5VHlwZSogZmluZChj
b25zdCBLZXlUeXBlJiBrZXkpCiAgICAgewogICAgICAgICBpdGVyYXRvciByZXN1bHQgPSBtX21h
cC5maW5kKGtleSk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gbV9tYXAuZW5kKCkpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuICZtX2RhdGFbcmVzdWx0LT52YWx1ZV0uc2Vj
b25kOworICAgICAgICByZXR1cm4gJnJlc3VsdC0+dmFsdWU7CiAgICAgfQotICAgIHZvaWQgYWRk
KGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3QgRW50cnlUeXBlJiB2YWx1ZSkKKworICAgIHZvaWQg
c2V0KGNvbnN0IEtleVR5cGUmIGtleSwgY29uc3QgRW50cnlUeXBlJiB2YWx1ZSkKICAgICB7Ci0g
ICAgICAgIGl0ZXJhdG9yIHJlc3VsdCA9IG1fbWFwLmZpbmQoa2V5KTsKLSAgICAgICAgaWYgKHJl
c3VsdCAhPSBtX21hcC5lbmQoKSkgewotICAgICAgICAgICAgbV9kYXRhW3Jlc3VsdC0+dmFsdWVd
LnNlY29uZCA9IHZhbHVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IHNpemVfdCBuZXdJbmRleCA9IG1fcmFuZG9tR2VuZXJhdG9yLmdldFVpbnQzMigpICUgQ2FjaGVT
aXplOwotICAgICAgICBpZiAobV9kYXRhW25ld0luZGV4XS5zZWNvbmQpCi0gICAgICAgICAgICBt
X21hcC5yZW1vdmUobV9kYXRhW25ld0luZGV4XS5maXJzdCk7Ci0gICAgICAgIG1fbWFwLmFkZChr
ZXksIG5ld0luZGV4KTsKLSAgICAgICAgbV9kYXRhW25ld0luZGV4XS5maXJzdCA9IGtleTsKLSAg
ICAgICAgbV9kYXRhW25ld0luZGV4XS5zZWNvbmQgPSB2YWx1ZTsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9tYXAuc2l6ZSgpIDw9IENhY2hlU2l6ZSk7CisgICAgICAgIGlmIChtX21hcC5zaXpl
KCkgPj0gQ2FjaGVTaXplKQorICAgICAgICAgICAgbV9tYXAucmVtb3ZlKG1fbWFwLmJlZ2luKCkp
OworCisgICAgICAgIG1fbWFwLnNldChrZXksIHZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lkIGNs
ZWFyKCkKKyAgICB2b2lkIGNsZWFyKCkgeyBtX21hcC5jbGVhcigpOyB9CisKK3ByaXZhdGU6Cisg
ICAgTWFwVHlwZSBtX21hcDsKK307CisKK2NsYXNzIFNvdXJjZUNvZGVLZXkgeworcHVibGljOgor
ICAgIGVudW0gQ29kZVR5cGUgeyBFdmFsVHlwZSwgUHJvZ3JhbVR5cGUsIEZ1bmN0aW9uQ2FsbFR5
cGUsIEZ1bmN0aW9uQ29uc3RydWN0VHlwZSB9OworCisgICAgU291cmNlQ29kZUtleSgpCisgICAg
ICAgIDogbV9mbGFncygwKQorICAgIHsKKyAgICB9CisKKyAgICBTb3VyY2VDb2RlS2V5KGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29kZVR5cGUgY29k
ZVR5cGUsIEpTUGFyc2VyU3RyaWN0bmVzcyBqc1BhcnNlclN0cmljdG5lc3MpCisgICAgICAgIDog
bV9zb3VyY2VTdHJpbmcoc291cmNlQ29kZS50b1N0cmluZygpKQorICAgICAgICAsIG1fbmFtZShu
YW1lKQorICAgICAgICAsIG1fZmxhZ3MoKGNvZGVUeXBlIDw8IDEpIHwganNQYXJzZXJTdHJpY3Ru
ZXNzKQorICAgIHsKKyAgICB9CisKKyAgICBTb3VyY2VDb2RlS2V5KFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBtX3NvdXJjZVN0cmluZyhXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSkKKyAgICAgICAgLCBtX25hbWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
CisgICAgICAgICwgbV9mbGFncygwKQogICAgIHsKLSAgICAgICAgbV9tYXAuY2xlYXIoKTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBDYWNoZVNpemU7IGkrKykgewotICAgICAgICAg
ICAgbV9kYXRhW2ldLmZpcnN0ID0gS2V5VHlwZSgpOwotICAgICAgICAgICAgbV9kYXRhW2ldLnNl
Y29uZCA9IEVudHJ5VHlwZSgpOwotICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU3RyaW5nLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZVN0cmluZy5pbXBsKCktPmhhc2goKTsgfQorCisgICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZVN0cmluZy5pc051bGwoKTsgfQorCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNvdXJjZUNvZGVLZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fc291cmNlU3RyaW5nID09IG90aGVyLm1fc291cmNlU3RyaW5nCisgICAgICAgICAg
ICAmJiBtX25hbWUgPT0gb3RoZXIubV9uYW1lCisgICAgICAgICAgICAmJiBtX2ZsYWdzID09IG90
aGVyLm1fZmxhZ3M7CisgICAgfQogCiBwcml2YXRlOgotICAgIEhhc2hNYXA8S2V5VHlwZSwgdW5z
aWduZWQ+IG1fbWFwOwotICAgIEZpeGVkQXJyYXk8c3RkOjpwYWlyPEtleVR5cGUsIEVudHJ5VHlw
ZT4sIENhY2hlU2l6ZT4gbV9kYXRhOwotICAgIFdlYWtSYW5kb20gbV9yYW5kb21HZW5lcmF0b3I7
CisgICAgU3RyaW5nIG1fc291cmNlU3RyaW5nOworICAgIFN0cmluZyBtX25hbWU7CisgICAgdW5z
aWduZWQgbV9mbGFnczsKK307CisKK3N0cnVjdCBTb3VyY2VDb2RlS2V5SGFzaCB7CisgICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgU291cmNlQ29kZUtleSYga2V5KSB7IHJldHVybiBrZXku
aGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU291cmNlQ29kZUtleSYgYSwg
Y29uc3QgU291cmNlQ29kZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNv
bnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3N0
cnVjdCBTb3VyY2VDb2RlS2V5SGFzaFRyYWl0cyA6IFdURjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRz
PFNvdXJjZUNvZGVLZXk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJc0VtcHR5VmFsdWVG
dW5jdGlvbiA9IHRydWU7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFNvdXJj
ZUNvZGVLZXkmIHNvdXJjZUNvZGVLZXkpIHsgcmV0dXJuIHNvdXJjZUNvZGVLZXkuaXNOdWxsKCk7
IH0KIH07CiAKIGNsYXNzIENvZGVDYWNoZSB7CkBAIC0xMTMsMzMgKzE0OCwyNSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjbGVhcigpCiAgICAgewogICAgICAgICBtX3NvdXJjZUNvZGUuY2xlYXIoKTsK
LSAgICAgICAgbV9nbG9iYWxGdW5jdGlvbnMuY2xlYXIoKTsKICAgICAgICAgbV9yZWNlbnRseVVz
ZWRGdW5jdGlvbnMuY2xlYXIoKTsKICAgICB9CiAKLSAgICBlbnVtIENvZGVUeXBlIHsgRXZhbFR5
cGUsIFByb2dyYW1UeXBlLCBGdW5jdGlvbkNhbGxUeXBlLCBGdW5jdGlvbkNvbnN0cnVjdFR5cGUg
fTsKLSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxTdHJpbmcsIHVuc2lnbmVkPiBTb3VyY2VDb2RlS2V5
OwotICAgIHR5cGVkZWYgc3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPiBGdW5jdGlvbktleTsKLQog
cHJpdmF0ZToKICAgICBDb2RlQ2FjaGUoKTsKIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiwgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJik7CiAKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2tUeXBlLCBjbGFzcyBFeGVjdXRhYmxlVHlwZT4g
aW5saW5lIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2V0Q29kZUJsb2NrKEpTR2xvYmFsRGF0YSYs
IEV4ZWN1dGFibGVUeXBlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyU3RyaWN0bmVzcywg
RGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIFBhcnNlckVycm9yJik7Ci0gICAgU291cmNlQ29k
ZUtleSBtYWtlU291cmNlQ29kZUtleShjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVR5cGUsIEpTUGFy
c2VyU3RyaWN0bmVzcyk7Ci0gICAgRnVuY3Rpb25LZXkgbWFrZUZ1bmN0aW9uS2V5KGNvbnN0IFNv
dXJjZUNvZGUmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIGVudW0gewogICAgICAgICBNYXhSb290
RW50cmllcyA9IDEwMjQsIC8vIFRvcC1sZXZlbCBjb2RlIHN1Y2ggYXMgPHNjcmlwdD4sIGV2YWwo
KSwgSlNFdmFsdWF0ZVNjcmlwdCgpLCBldGMuCiAgICAgICAgIE1heENoaWxkRnVuY3Rpb25FbnRy
aWVzID0gTWF4Um9vdEVudHJpZXMgKiA4IC8vIFNhbXBsaW5nIHNob3dzIHRoYXQgZWFjaCByb290
IGhvbGRzIGFib3V0IDYgZnVuY3Rpb25zLiA4IGlzIGVub3VnaCB0byB1c3VhbGx5IGNhY2hlIGFs
bCB0aGUgY2hpbGQgZnVuY3Rpb25zIGZvciBlYWNoIHRvcC1sZXZlbCBlbnRyeS4KICAgICB9Owog
Ci0gICAgQ2FjaGVNYXA8U291cmNlQ29kZUtleSwgU3Ryb25nPFVubGlua2VkQ29kZUJsb2NrPiwg
TWF4Um9vdEVudHJpZXM+IG1fc291cmNlQ29kZTsKLSAgICBDYWNoZU1hcDxGdW5jdGlvbktleSwg
U3Ryb25nPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiwgTWF4Um9vdEVudHJpZXM+IG1fZ2xv
YmFsRnVuY3Rpb25zOwotICAgIENhY2hlTWFwPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqLCBT
dHJvbmc8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4sIE1heENoaWxkRnVuY3Rpb25FbnRyaWVz
PiBtX3JlY2VudGx5VXNlZEZ1bmN0aW9uczsKKyAgICBDYWNoZU1hcDxNYXhSb290RW50cmllcywg
U291cmNlQ29kZUtleSwgU3Ryb25nPEpTQ2VsbD4sIFNvdXJjZUNvZGVLZXlIYXNoLCBTb3VyY2VD
b2RlS2V5SGFzaFRyYWl0cz4gbV9zb3VyY2VDb2RlOworICAgIENhY2hlTWFwPE1heENoaWxkRnVu
Y3Rpb25FbnRyaWVzLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiwgU3Ryb25nPFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2s+ID4gbV9yZWNlbnRseVVzZWRGdW5jdGlvbnM7CiB9OwogCiB9CiAK
LSNlbmRpZgorI2VuZGlmIC8vIENvZGVDYWNoZV9oCg==
</data>
<flag name="review"
          id="205396"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>186086</attachid>
            <date>2013-02-01 11:31:21 -0800</date>
            <delta_ts>2013-02-01 11:31:21 -0800</delta_ts>
            <desc>benchmark results</desc>
            <filename>BASE_PATCH_JSBench_garen_20130201_1111_report.txt</filename>
            <type>text/plain</type>
            <size>1431</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgSlNCZW5jaCBvbiBnYXJlbiAoTWFjUHJvNSwxKS4KClZNcyB0
ZXN0ZWQ6CiJCQVNFIiBhdCAvVm9sdW1lcy9CaWcvZ2dhcmVuL2Jhc2VsaW5lLXdlYmtpdC9XZWJL
aXRCdWlsZC9SZWxlYXNlL0R1bXBSZW5kZXJUcmVlIChyMTQxMTkxKQoiUEFUQ0giIGF0IC9Wb2x1
bWVzL0JpZy9nZ2FyZW4vd2Via2l0L1dlYktpdEJ1aWxkL1JlbGVhc2UvRHVtcFJlbmRlclRyZWUg
KHIxNDE2MDMpCgpDb2xsZWN0ZWQgMTIgc2FtcGxlcyBwZXIgYmVuY2htYXJrL1ZNLCB3aXRoIDQg
Vk0gaW52b2NhdGlvbnMgcGVyIGJlbmNobWFyay4gRW1pdHRlZCBhIGNhbGwgdG8KZ2MoKSBiZXR3
ZWVuIHNhbXBsZSBtZWFzdXJlbWVudHMuIFVzZWQgMSBiZW5jaG1hcmsgaXRlcmF0aW9uIHBlciBW
TSBpbnZvY2F0aW9uIGZvciB3YXJtLXVwLiBVc2VkCnRoZSBqc2Mtc3BlY2lmaWMgcHJlY2lzZVRp
bWUoKSBmdW5jdGlvbiB0byBnZXQgbWljcm9zZWNvbmQtbGV2ZWwgdGltaW5nLiBSZXBvcnRpbmcg
YmVuY2htYXJrCmV4ZWN1dGlvbiB0aW1lcyB3aXRoIDk1JSBjb25maWRlbmNlIGludGVydmFscyBp
biBtaWxsaXNlY29uZHMuCgogICAgICAgICAgICAgICAgICAgICAgICAgICBCQVNFICAgICAgICAg
ICAgICAgICAgICAgUEFUQ0ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
CmFtYXpvbiAgICAgICAgICAgICAgIDEwLjgzMzMrLTAuOTMyMCAgICAgICAgICAgMTAuNTgzMyst
MC4zMjcyICAgICAgICAgIG1pZ2h0IGJlIDEuMDIzNnggZmFzdGVyCmZhY2Vib29rICAgICAgICAg
ICAgIDM4LjkxNjcrLTIuMjU3OSAgICAgPyAgICAgMzkuMTY2NystMi4wNDI0ICAgICAgICA/Cmdv
b2dsZSAgICAgICAgICAgICAgIDgyLjY2NjcrLTIuMzA0MiAgICAgPyAgICAgODMuNTAwMCstMi4w
MTgzICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwMXggc2xvd2VyCnR3aXR0ZXIgICAgICAgICAgICAg
IDEwLjA4MzMrLTAuMzI3MiAgICAgPyAgICAgMTAuMjUwMCstMC4yODc0ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE2NXggc2xvd2VyCnlhaG9vICAgICAgICAgICAgICAgICAzLjc1MDArLTAuNzIzMiAg
ICAgPyAgICAgIDMuODMzMystMC4zNjY4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyMnggc2xvd2Vy
Cgo8YXJpdGhtZXRpYz4gKiAgICAgICAyOS4yNTAwKy0wLjk0NjUgICAgID8gICAgIDI5LjQ2Njcr
LTAuODExNiAgICAgICAgPyBtaWdodCBiZSAxLjAwNzR4IHNsb3dlcgo8Z2VvbWV0cmljPiAgICAg
ICAgICAxNi42MzM4Ky0wLjc1MDggICAgID8gICAgIDE2LjgxMDYrLTAuNDIxMSAgICAgICAgPyBt
aWdodCBiZSAxLjAxMDZ4IHNsb3dlcgo8aGFybW9uaWM+ICAgICAgICAgICAgOS44NzQ1Ky0wLjgz
NDAgICAgID8gICAgIDEwLjEyNjUrLTAuNTE3MCAgICAgICAgPyBtaWdodCBiZSAxLjAyNTV4IHNs
b3dlcgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>