<?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>63041</bug_id>
          
          <creation_ts>2011-06-20 20:18:08 -0700</creation_ts>
          <short_desc>[Chromium][V8] Make DOMDataStore per-isolate</short_desc>
          <delta_ts>2011-07-13 11:59:00 -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>WebCore JavaScript</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>61016</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Lomov">dslomov</reporter>
          <assigned_to name="Dmitry Lomov">dslomov</assigned_to>
          <cc>abarth</cc>
    
    <cc>antonm</cc>
    
    <cc>dimich</cc>
    
    <cc>dslomov</cc>
    
    <cc>vitalyr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>424216</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-20 20:18:08 -0700</bug_when>
    <thetext>Another prerequisite to making WebWorkers per-isolate: make sure that DOMDataStore is accessible from multiple threads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424221</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-20 20:26:41 -0700</bug_when>
    <thetext>The hot spot for this work is getting current DOMDataStore.
I have been experimenting with various implementation, and the following strategy recovers all perf on Dromaeo/?dom on Linux:


Index: WebCore/bindings/v8/DOMData.cpp
===================================================================
--- WebCore/bindings/v8/DOMData.cpp     (revision 89232)
+++ WebCore/bindings/v8/DOMData.cpp     (working copy)
@@ -53,12 +54,12 @@
 
 DOMDataStore&amp; DOMData::getMainThreadStore()
 {
    // This is broken out as a separate non-virtual method from getStore()
    // so that it can be inlined by getCurrentMainThreadStore, which is
    // a hot spot in Dromaeo DOM tests.
-    V8IsolatedContext* context = V8IsolatedContext::getEntered();
-    if (UNLIKELY(context != 0))
-        return *context-&gt;world()-&gt;domDataStore();
+    DOMDataStore* currentDOMDataStore = V8BindingPerIsolateData::current()-&gt;getDOMDataStore();
+    if (UNLIKELY(currentDOMDataStore != 0))
+        return *currentDOMDataStore;
     return m_defaultStore;
 }

I spare you all the gory details, but the idea is that:
1) current active DOMDataStore is saved in V8BindingPerIsolateData unless we are in main world
2) required changes include updating current DOMDataStore in per-isolate data on entering and exiting isolated worlds.
3) I keep m_defaultStore so that I do not have to reason about initialization order, but with the appearance of single V8 intitialization point in WebScriptController::inititialize, I might as well remove it too, and the whole function will then be  
      return *V8BindingPerIsolateData::current()-&gt;getDOMDataStore();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424226</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-20 20:29:48 -0700</bug_when>
    <thetext>Here is some prelim data on Linux (before/after):
http://dromaeo.com/?id=142768,142775
there is even some minor speed-up (although dromaeo is crazy volatile, so don&apos;t believe it much)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424388</commentid>
    <comment_count>3</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-06-21 05:11:12 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Here is some prelim data on Linux (before/after):
&gt; http://dromaeo.com/?id=142768,142775
&gt; there is even some minor speed-up (although dromaeo is crazy volatile, so don&apos;t believe it much)

Nice!

Just FYI: this path should be hottest on DOM Query (we return the same element in the tight loop).  So that definitely suppors your point that there is no perf regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435937</commentid>
    <comment_count>4</comment_count>
      <attachid>100559</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-07-12 14:08:52 -0700</bug_when>
    <thetext>Created attachment 100559
The fix

The patch:
- makes DOMData a static utility class
- adds per-isolate DOMDataStore to V8BindingPerIsolateData 

dromaeo.com/?dom is not affected on Linux (Linux is a slow-TLS platform for V8):
http://dromaeo.com/?id=144456,144540</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435938</commentid>
    <comment_count>5</comment_count>
      <attachid>100559</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-07-12 14:09:50 -0700</bug_when>
    <thetext>Comment on attachment 100559
The fix

(no cq yet - waiting for chromium trybots)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435998</commentid>
    <comment_count>6</comment_count>
      <attachid>100559</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-07-12 15:02:10 -0700</bug_when>
    <thetext>Comment on attachment 100559
The fix

Errors on trybots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436053</commentid>
    <comment_count>7</comment_count>
      <attachid>100582</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-07-12 16:19:54 -0700</bug_when>
    <thetext>Created attachment 100582
Added field initialization to V8BindingPerIsolateData constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436177</commentid>
    <comment_count>8</comment_count>
      <attachid>100582</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-07-12 19:40:10 -0700</bug_when>
    <thetext>Comment on attachment 100582
Added field initialization to V8BindingPerIsolateData constructor

Chromium trybots are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436180</commentid>
    <comment_count>9</comment_count>
      <attachid>100582</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-12 19:45:02 -0700</bug_when>
    <thetext>Comment on attachment 100582
Added field initialization to V8BindingPerIsolateData constructor

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

&gt; Source/WebCore/bindings/v8/DOMData.h:56
&gt; +        static DOMDataStore&amp; getCurrentStore();

Sorry to pick nits, but we usually skip the &quot;get&quot; prefix on these function names.

&gt; Source/WebCore/bindings/v8/V8Binding.h:114
&gt; +        DOMDataStore* getDOMDataStore() { return m_DOMDataStore; }
&gt; +        void setDOMDataStore(DOMDataStore* store) { m_DOMDataStore = store; }

We keep the &quot;set&quot; prefix though.

I don&apos;t see where setDOMDataStore is ever called.  How does m_DOMDataStore become non-null ?

&gt; Source/WebCore/bindings/v8/V8Binding.h:127
&gt; +        DOMDataStore* m_DOMDataStore;

It&apos;s unclear to me what the ownership model for this pointer is, probably because I can&apos;t find anyone calling the setter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436195</commentid>
    <comment_count>10</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-07-12 20:21:53 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 100582 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=100582&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/DOMData.h:56
&gt; &gt; +        static DOMDataStore&amp; getCurrentStore();
&gt; 
&gt; Sorry to pick nits, but we usually skip the &quot;get&quot; prefix on these function names.

Sure, will fix.

&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Binding.h:114
&gt; &gt; +        DOMDataStore* getDOMDataStore() { return m_DOMDataStore; }
&gt; &gt; +        void setDOMDataStore(DOMDataStore* store) { m_DOMDataStore = store; }
&gt; 
&gt; We keep the &quot;set&quot; prefix though.
&gt; 
&gt; I don&apos;t see where setDOMDataStore is ever called.  How does m_DOMDataStore become non-null ?

This is the next patch :) The intent is that workers will do this.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Binding.h:127
&gt; &gt; +        DOMDataStore* m_DOMDataStore;
&gt; 
&gt; It&apos;s unclear to me what the ownership model for this pointer is, probably because I can&apos;t find anyone calling the setter.

This pointer is owned by someone outside V8BindingPerIsolateData. DOMDataStore is not a refcounted object, so RefPtr and such do not apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436199</commentid>
    <comment_count>11</comment_count>
      <attachid>100582</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-12 20:26:45 -0700</bug_when>
    <thetext>Comment on attachment 100582
Added field initialization to V8BindingPerIsolateData constructor

Ok.  Looks like this pointer is going to have a complicated ownership model.  Maybe we should add a comment explaining the ownership model?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436585</commentid>
    <comment_count>12</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-07-13 11:59:00 -0700</bug_when>
    <thetext>Commited in http://trac.webkit.org/changeset/90931.
Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100559</attachid>
            <date>2011-07-12 14:08:52 -0700</date>
            <delta_ts>2011-07-12 16:19:54 -0700</delta_ts>
            <desc>The fix</desc>
            <filename>63041.patch</filename>
            <type>text/plain</type>
            <size>11045</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMjE1OGU5Li4wZDA3Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTEtMDctMTIgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMwNDEKKyAgICAg
ICAgW0Nocm9taXVtXVtWOF0gTWFrZSBET01EYXRhU3RvcmUgcGVyLWlzb2xhdGUKKyAgICAgICAg
VGhpcyBwYXRjaDoKKyAgICAgICAgIC0gbWFrZXMgRE9NRGF0YSBjbGFzcyBhbiB1dGlsaXR5IGNs
YXNzIHdpdGggc3RhdGljIG1lbWJlcnMgb25seQorICAgICAgICAgLSBhZGRzIGFuIGlzb2xhdGUt
c3BlY2lmaWMgRE9NRGF0YVN0b3JlIGluIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhLgorICAgICAg
ICBEcm9tYWVvIGJlbmNobWFya3MgYXJlIG5vdCBhZmZlY3RlZC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0RGVmYXVsdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTURhdGE6OmdldEN1cnJlbnRTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0
YS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpE
T01EYXRhU3RvcmU6OmFsbFN0b3Jlcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0
b3JlLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjb3BlZERPTURhdGFTdG9yZTo6U2NvcGVkRE9NRGF0YVN0b3JlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TdGF0aWNET01EYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Rh
dGljRE9NRGF0YVN0b3JlOjpTdGF0aWNET01EYXRhU3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1N0YXRpY0RPTURhdGFTdG9yZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5oOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmFsbFN0b3Jl
cyk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Z2V0RE9NRGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpzZXRE
T01EYXRhU3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZUhhbmRsZTo6RE9NRGF0YVN0b3JlSGFuZGxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldERPTURhdGFTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjplbmFi
bGVGYXN0ZXJET01TdG9yZUFjY2Vzcyk6CisKIDIwMTEtMDctMTIgIEphbWVzIFJvYmluc29uICA8
amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3Nl
bGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCmluZGV4IDc5MjAyMGYuLmQ5
NzQ0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCkBAIC0zMCwzNiAr
MzAsMjggQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTURhdGEuaCIKKyNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJXZWJHTFVuaWZvcm1M
b2NhdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURPTURhdGE6OkRPTURhdGEoKQot
ICAgIDogbV9kZWZhdWx0U3RvcmUodGhpcykKK3N0YXRpYyBTdGF0aWNET01EYXRhU3RvcmUmIGdl
dERlZmF1bHRTdG9yZSgpIAogeworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RhdGljRE9NRGF0
YVN0b3JlLCBkZWZhdWx0U3RvcmUsICgpKTsKKyAgICByZXR1cm4gZGVmYXVsdFN0b3JlOwogfQog
Ci1ET01EYXRhOjp+RE9NRGF0YSgpCitET01EYXRhU3RvcmUmIERPTURhdGE6OmdldEN1cnJlbnRT
dG9yZSgpCiB7Ci19Ci0KLURPTURhdGEqIERPTURhdGE6OmdldEN1cnJlbnQoKQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoRE9NRGF0YSwgbWFpblRocmVhZERPTURhdGEsICgpKTsKLSAgICBy
ZXR1cm4gJm1haW5UaHJlYWRET01EYXRhOwotfQotCi1ET01EYXRhU3RvcmUmIERPTURhdGE6Omdl
dE1haW5UaHJlYWRTdG9yZSgpCi17Ci0gICAgLy8gVGhpcyBpcyBicm9rZW4gb3V0IGFzIGEgc2Vw
YXJhdGUgbm9uLXZpcnR1YWwgbWV0aG9kIGZyb20gZ2V0U3RvcmUoKQotICAgIC8vIHNvIHRoYXQg
aXQgY2FuIGJlIGlubGluZWQgYnkgZ2V0Q3VycmVudE1haW5UaHJlYWRTdG9yZSwgd2hpY2ggaXMK
LSAgICAvLyBhIGhvdCBzcG90IGluIERyb21hZW8gRE9NIHRlc3RzLgorICAgIFY4QmluZGluZ1Bl
cklzb2xhdGVEYXRhKiBkYXRhID0gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsK
KyAgICBpZiAoVU5MSUtFTFkoZGF0YS0+Z2V0RE9NRGF0YVN0b3JlKCkgIT0gMCkpCisgICAgICAg
IHJldHVybiAqZGF0YS0+Z2V0RE9NRGF0YVN0b3JlKCk7CiAgICAgVjhJc29sYXRlZENvbnRleHQq
IGNvbnRleHQgPSBWOElzb2xhdGVkQ29udGV4dDo6Z2V0RW50ZXJlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShjb250ZXh0ICE9IDApKQogICAgICAgICByZXR1cm4gKmNvbnRleHQtPndvcmxkKCktPmRv
bURhdGFTdG9yZSgpOwotICAgIHJldHVybiBtX2RlZmF1bHRTdG9yZTsKKyAgICByZXR1cm4gZ2V0
RGVmYXVsdFN0b3JlKCk7CiB9CiAKIHZvaWQgRE9NRGF0YTo6ZGVyZWZPYmplY3QoV3JhcHBlclR5
cGVJbmZvKiB0eXBlLCB2b2lkKiBkb21PYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9ET01EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01E
YXRhLmgKaW5kZXggNjg4Y2I5ZC4uNzFlN2U1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TURhdGEuaApAQCAtNDUsMjMgKzQ1LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyB1
c2UgZGlmZmVyZW50IHN1YmNsYXNzZXMuCiAgICAgLy8KICAgICBjbGFzcyBET01EYXRhIHsKLSAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRE9NRGF0YSk7CiAgICAgcHVibGljOgotICAgICAg
ICBET01EYXRhKCk7Ci0gICAgICAgIHZpcnR1YWwgfkRPTURhdGEoKTsKLQotICAgICAgICBzdGF0
aWMgRE9NRGF0YSogZ2V0Q3VycmVudCgpOwotICAgICAgICBET01EYXRhU3RvcmUmIGdldFN0b3Jl
KCkgeyByZXR1cm4gZ2V0TWFpblRocmVhZFN0b3JlKCk7IH0KLQogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgICAgICBzdGF0aWMgdm9pZCBoYW5kbGVXZWFrT2JqZWN0KERPTURhdGFT
dG9yZTo6RE9NV3JhcHBlck1hcFR5cGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+LCBUKiBk
b21PYmplY3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgICAgIHN0YXRp
YyB2b2lkIHJlbW92ZU9iamVjdHNGcm9tV3JhcHBlck1hcChET01EYXRhU3RvcmUqIHN0b3JlLCBB
YnN0cmFjdFdlYWtSZWZlcmVuY2VNYXA8VCwgdjg6Ok9iamVjdD4mIGRvbU1hcCk7CiAKLSAgICAg
ICAgc3RhdGljIERPTURhdGFTdG9yZSYgZ2V0Q3VycmVudE1haW5UaHJlYWRTdG9yZSgpIHsgcmV0
dXJuIGdldEN1cnJlbnQoKS0+Z2V0TWFpblRocmVhZFN0b3JlKCk7IH0KIAorICAgICAgICBzdGF0
aWMgRE9NRGF0YVN0b3JlJiBnZXRDdXJyZW50U3RvcmUoKTsKICAgICBwcml2YXRlOgorICAgICAg
ICBET01EYXRhKCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlcmVmT2JqZWN0KFdyYXBwZXJUeXBl
SW5mbyogdHlwZSwgdm9pZCogZG9tT2JqZWN0KTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgpAQCAtNzQsOSArNjgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAg
ICAgdjhPYmplY3QuRGlzcG9zZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotCi0gICAg
ICAgIERPTURhdGFTdG9yZSYgZ2V0TWFpblRocmVhZFN0b3JlKCk7Ci0gICAgICAgIFN0YXRpY0RP
TURhdGFTdG9yZSBtX2RlZmF1bHRTdG9yZTsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCmluZGV4
IDAzZTZlNjguLjI2NDI4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRPTURhdGFTdG9yZS5oIgog
CiAjaW5jbHVkZSAiRE9NRGF0YS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTgyLDE0ICs4MywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAv
LyAgICB0aGVtLgogCiAKLURPTURhdGFTdG9yZTo6RE9NRGF0YVN0b3JlKERPTURhdGEqIGRvbURh
dGEpCitET01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZSgpCiAgICAgOiBtX2RvbU5vZGVNYXAoMCkK
ICAgICAsIG1fZG9tT2JqZWN0TWFwKDApCiAgICAgLCBtX2FjdGl2ZURvbU9iamVjdE1hcCgwKQog
I2lmIEVOQUJMRShTVkcpCiAgICAgLCBtX2RvbVN2Z0VsZW1lbnRJbnN0YW5jZU1hcCgwKQogI2Vu
ZGlmCi0gICAgLCBtX2RvbURhdGEoZG9tRGF0YSkKIHsKICAgICBET01EYXRhU3RvcmU6OmFsbFN0
b3JlcygpLmFwcGVuZCh0aGlzKTsKIH0KQEAgLTEwMSw4ICsxMDEsNyBAQCBET01EYXRhU3RvcmU6
On5ET01EYXRhU3RvcmUoKQogCiBET01EYXRhTGlzdCYgRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMo
KQogewotICBERUZJTkVfU1RBVElDX0xPQ0FMKERPTURhdGFMaXN0LCBzdGF0aWNET01EYXRhTGlz
dCwgKCkpOwotICByZXR1cm4gc3RhdGljRE9NRGF0YUxpc3Q7CisgICAgcmV0dXJuIFY4QmluZGlu
Z1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmFsbFN0b3JlcygpOwogfQogCiB2b2lkKiBET01E
YXRhU3RvcmU6OmdldERPTVdyYXBwZXJNYXAoRE9NV3JhcHBlck1hcFR5cGUgdHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggMzczZDg1ZS4uZWJjYzMw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKQEAgLTcyLDE0
ICs3MiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgfTsKIAotICAg
ICAgICBET01EYXRhU3RvcmUoRE9NRGF0YSopOworICAgICAgICBET01EYXRhU3RvcmUoKTsKICAg
ICAgICAgdmlydHVhbCB+RE9NRGF0YVN0b3JlKCk7CiAKICAgICAgICAgLy8gQSBsaXN0IG9mIGFs
bCBET01EYXRhU3RvcmUgb2JqZWN0cyBpbiB0aGUgY3VycmVudCBWOCBpbnN0YW5jZSAodGhyZWFk
KS4gTm9ybWFsbHksIGVhY2ggV29ybGQgaGFzIGEgRE9NRGF0YVN0b3JlLgogICAgICAgICBzdGF0
aWMgRE9NRGF0YUxpc3QmIGFsbFN0b3JlcygpOwogCi0gICAgICAgIERPTURhdGEqIGRvbURhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RvbURhdGE7IH0KLQogICAgICAgICB2b2lkKiBnZXRET01XcmFw
cGVyTWFwKERPTVdyYXBwZXJNYXBUeXBlKTsKIAogICAgICAgICBET01Ob2RlTWFwcGluZyYgZG9t
Tm9kZU1hcCgpIHsgcmV0dXJuICptX2RvbU5vZGVNYXA7IH0KQEAgLTEwNSwxMCArMTAzLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIERPTVdyYXBwZXJN
YXA8U1ZHRWxlbWVudEluc3RhbmNlPiogbV9kb21TdmdFbGVtZW50SW5zdGFuY2VNYXA7CiAjZW5k
aWYKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIEEgYmFjay1wb2ludGVyIHRvIHRoZSBET01E
YXRhIHRvIHdoaWNoIHdlIGJlbG9uZy4KLSAgICAgICAgRE9NRGF0YSogbV9kb21EYXRhOwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuY3BwCmluZGV4IDYwYTZjNjcuLmRiMjNlZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNw
cApAQCAtMzMsOCArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjb3BlZERPTURh
dGFTdG9yZTo6U2NvcGVkRE9NRGF0YVN0b3JlKERPTURhdGEqIGRvbURhdGEpCi0gICAgOiBET01E
YXRhU3RvcmUoZG9tRGF0YSkKK1Njb3BlZERPTURhdGFTdG9yZTo6U2NvcGVkRE9NRGF0YVN0b3Jl
KCkKKyAgICA6IERPTURhdGFTdG9yZSgpCiB7CiAgICAgbV9kb21Ob2RlTWFwID0gbmV3IERPTVdy
YXBwZXJNYXA8Tm9kZT4oJkRPTURhdGFTdG9yZTo6d2Vha05vZGVDYWxsYmFjayk7CiAgICAgbV9k
b21PYmplY3RNYXAgPSBuZXcgRE9NV3JhcHBlck1hcDx2b2lkPigmRE9NRGF0YVN0b3JlOjp3ZWFr
RE9NT2JqZWN0Q2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NvcGVkRE9NRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29w
ZWRET01EYXRhU3RvcmUuaAppbmRleCBjNjNiYWIwLi43YjFlOGM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaApAQCAtNDQsNyArNDQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8KICAgICBjbGFzcyBTY29wZWRET01EYXRhU3Rv
cmUgOiBwdWJsaWMgRE9NRGF0YVN0b3JlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNjb3BlZERP
TURhdGFTdG9yZShET01EYXRhKik7CisgICAgICAgIFNjb3BlZERPTURhdGFTdG9yZSgpOwogCiAg
ICAgICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxlZCB3aGVuIFdURiB0aHJlYWQgaXMgdGVhcmluZyBk
b3duLgogICAgICAgICAvLyBXZSBhc3N1bWUgdGhhdCBhbGwgY2hpbGQgdGhyZWFkcyBydW5uaW5n
IFY4IGluc3RhbmNlcyBhcmUgY3JlYXRlZCBieSBXVEYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TdGF0aWNET01EYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU3RhdGljRE9NRGF0YVN0b3JlLmNwcAppbmRleCBiNGMzNmI5Li5kNmRjYmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TdGF0aWNET01EYXRhU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1N0YXRpY0RPTURhdGFTdG9y
ZS5jcHAKQEAgLTMzLDggKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdGF0aWNE
T01EYXRhU3RvcmU6OlN0YXRpY0RPTURhdGFTdG9yZShET01EYXRhKiBkb21EYXRhKQotICAgIDog
RE9NRGF0YVN0b3JlKGRvbURhdGEpCitTdGF0aWNET01EYXRhU3RvcmU6OlN0YXRpY0RPTURhdGFT
dG9yZSgpCisgICAgOiBET01EYXRhU3RvcmUoKQogICAgICwgbV9zdGF0aWNEb21Ob2RlTWFwKCZE
T01EYXRhU3RvcmU6OndlYWtOb2RlQ2FsbGJhY2spCiAgICAgLCBtX3N0YXRpY0RvbU9iamVjdE1h
cCgmRE9NRGF0YVN0b3JlOjp3ZWFrRE9NT2JqZWN0Q2FsbGJhY2spCiAgICAgLCBtX3N0YXRpY0Fj
dGl2ZURvbU9iamVjdE1hcCgmRE9NRGF0YVN0b3JlOjp3ZWFrQWN0aXZlRE9NT2JqZWN0Q2FsbGJh
Y2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TdGF0aWNET01EYXRh
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1N0YXRpY0RPTURhdGFTdG9yZS5o
CmluZGV4IDk0MDY0NmUuLjY4MjE0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1N0YXRpY0RPTURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1N0YXRpY0RPTURhdGFTdG9yZS5oCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIC8vCiBjbGFzcyBTdGF0aWNET01EYXRhU3RvcmUgOiBwdWJsaWMgRE9NRGF0YVN0b3Jl
IHsKIHB1YmxpYzoKLSAgICBTdGF0aWNET01EYXRhU3RvcmUoRE9NRGF0YSopOworICAgIFN0YXRp
Y0RPTURhdGFTdG9yZSgpOwogCiBwcml2YXRlOgogICAgIEludHJ1c2l2ZURPTVdyYXBwZXJNYXAg
bV9zdGF0aWNEb21Ob2RlTWFwOwpAQCAtNjAsNCArNjAsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU3RhdGljRE9NRGF0YVN0b3JlX2gKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCBlMWUzZGUwLi5kMzliMjI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMzIsNiArMzIsNyBAQAogI2Rl
ZmluZSBWOEJpbmRpbmdfaAogCiAjaW5jbHVkZSAiQmluZGluZ1NlY3VyaXR5LmgiCisjaW5jbHVk
ZSAiRE9NRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiTWF0aEV4dHJhcy5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCkBAIC0xMDcsNiArMTA4
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlN0
cmluZz4mIHRvU3RyaW5nTmFtZSgpIHsgcmV0dXJuIG1fdG9TdHJpbmdOYW1lOyB9CiAgICAgICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiYgdG9TdHJpbmdUZW1wbGF0ZSgp
IHsgcmV0dXJuIG1fdG9TdHJpbmdUZW1wbGF0ZTsgfQogICAgICAgICBTdHJpbmdDYWNoZSogc3Ry
aW5nQ2FjaGUoKSB7IHJldHVybiAmbV9zdHJpbmdDYWNoZTsgfQorICAgICAgICAKKyAgICAgICAg
RE9NRGF0YUxpc3QmIGFsbFN0b3JlcygpIHsgcmV0dXJuIG1fRE9NRGF0YUxpc3Q7IH0KKyAgICAg
ICAgRE9NRGF0YVN0b3JlKiBnZXRET01EYXRhU3RvcmUoKSB7IHJldHVybiBtX0RPTURhdGFTdG9y
ZTsgfQorICAgICAgICB2b2lkIHNldERPTURhdGFTdG9yZShET01EYXRhU3RvcmUqIHN0b3JlKSB7
IG1fRE9NRGF0YVN0b3JlID0gc3RvcmU7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxp
Y2l0IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKik7CkBAIC0xMTcsNiArMTIy
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3Ry
aW5nPiBtX3RvU3RyaW5nTmFtZTsKICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IG1fdG9TdHJpbmdUZW1wbGF0ZTsKICAgICAgICAgU3RyaW5nQ2FjaGUgbV9zdHJp
bmdDYWNoZTsKKworICAgICAgICBET01EYXRhTGlzdCBtX0RPTURhdGFMaXN0OworICAgICAgICBE
T01EYXRhU3RvcmUqIG1fRE9NRGF0YVN0b3JlOwogICAgIH07CiAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01NYXAuY3BwCmluZGV4IDg0NzQwODguLjYyMzQ4NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogRE9NRGF0YVN0b3JlSGFuZGxlOjpET01EYXRhU3RvcmVIYW5kbGUoKQot
ICAgIDogbV9zdG9yZShhZG9wdFB0cihuZXcgU2NvcGVkRE9NRGF0YVN0b3JlKERPTURhdGE6Omdl
dEN1cnJlbnQoKSkpKQorICAgIDogbV9zdG9yZShhZG9wdFB0cihuZXcgU2NvcGVkRE9NRGF0YVN0
b3JlKCkpKQogewogfQogCkBAIC00NiwxNiArNDYsMTMgQEAgRE9NRGF0YVN0b3JlSGFuZGxlOjp+
RE9NRGF0YVN0b3JlSGFuZGxlKCkKIHsKIH0KIAotc3RhdGljIGJvb2wgZmFzdGVyRE9NU3RvcmVB
Y2Nlc3MgPSBmYWxzZTsKLQogc3RhdGljIGlubGluZSBET01EYXRhU3RvcmUmIGdldERPTURhdGFT
dG9yZSgpCiB7Ci0gICAgcmV0dXJuIERPTURhdGE6OmdldEN1cnJlbnRNYWluVGhyZWFkU3RvcmUo
KTsKKyAgICByZXR1cm4gRE9NRGF0YTo6Z2V0Q3VycmVudFN0b3JlKCk7CiB9CiAKIHZvaWQgZW5h
YmxlRmFzdGVyRE9NU3RvcmVBY2Nlc3MoKQogewotICAgIGZhc3RlckRPTVN0b3JlQWNjZXNzID0g
dHJ1ZTsKIH0KIAogRE9NTm9kZU1hcHBpbmcmIGdldERPTU5vZGVNYXAoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100582</attachid>
            <date>2011-07-12 16:19:54 -0700</date>
            <delta_ts>2011-07-12 20:26:45 -0700</delta_ts>
            <desc>Added field initialization to V8BindingPerIsolateData constructor</desc>
            <filename>63041.patch</filename>
            <type>text/plain</type>
            <size>11521</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMjE1OGU5Li5kNjZlYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTEtMDctMTIgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMwNDEKKyAgICAg
ICAgW0Nocm9taXVtXVtWOF0gTWFrZSBET01EYXRhU3RvcmUgcGVyLWlzb2xhdGUKKyAgICAgICAg
VGhpcyBwYXRjaDoKKyAgICAgICAgIC0gbWFrZXMgRE9NRGF0YSBjbGFzcyBhbiB1dGlsaXR5IGNs
YXNzIHdpdGggc3RhdGljIG1lbWJlcnMgb25seQorICAgICAgICAgLSBhZGRzIGFuIGlzb2xhdGUt
c3BlY2lmaWMgRE9NRGF0YVN0b3JlIGluIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhLgorICAgICAg
ICBEcm9tYWVvIGJlbmNobWFya3MgYXJlIG5vdCBhZmZlY3RlZC4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0RGVmYXVsdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTURhdGE6OmdldEN1cnJlbnRTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0
YS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpE
T01EYXRhU3RvcmU6OmFsbFN0b3Jlcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0
b3JlLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjb3BlZERPTURhdGFTdG9yZTo6U2NvcGVkRE9NRGF0YVN0b3JlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TdGF0aWNET01EYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Rh
dGljRE9NRGF0YVN0b3JlOjpTdGF0aWNET01EYXRhU3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1N0YXRpY0RPTURhdGFTdG9yZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5oOgorICAgICAgICAoV2ViQ29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmFsbFN0b3Jl
cyk6CisgICAgICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Z2V0RE9NRGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpzZXRE
T01EYXRhU3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6VjhCaW5kaW5nUGVySXNvbGF0
ZURhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTURhdGFTdG9yZUhhbmRsZTo6RE9NRGF0YVN0b3JlSGFuZGxlKToKKyAgICAgICAg
KFdlYkNvcmU6OmdldERPTURhdGFTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjplbmFibGVGYXN0
ZXJET01TdG9yZUFjY2Vzcyk6CisKIDIwMTEtMDctMTIgIEphbWVzIFJvYmluc29uICA8amFtZXNy
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCmluZGV4IDc5MjAyMGYuLmQ5NzQ0ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCkBAIC0zMCwzNiArMzAsMjgg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTURhdGEuaCIKKyNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgogI2luY2x1ZGUg
IldlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlv
bi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURPTURhdGE6OkRPTURhdGEoKQotICAgIDog
bV9kZWZhdWx0U3RvcmUodGhpcykKK3N0YXRpYyBTdGF0aWNET01EYXRhU3RvcmUmIGdldERlZmF1
bHRTdG9yZSgpIAogeworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RhdGljRE9NRGF0YVN0b3Jl
LCBkZWZhdWx0U3RvcmUsICgpKTsKKyAgICByZXR1cm4gZGVmYXVsdFN0b3JlOwogfQogCi1ET01E
YXRhOjp+RE9NRGF0YSgpCitET01EYXRhU3RvcmUmIERPTURhdGE6OmdldEN1cnJlbnRTdG9yZSgp
CiB7Ci19Ci0KLURPTURhdGEqIERPTURhdGE6OmdldEN1cnJlbnQoKQotewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoRE9NRGF0YSwgbWFpblRocmVhZERPTURhdGEsICgpKTsKLSAgICByZXR1cm4g
Jm1haW5UaHJlYWRET01EYXRhOwotfQotCi1ET01EYXRhU3RvcmUmIERPTURhdGE6OmdldE1haW5U
aHJlYWRTdG9yZSgpCi17Ci0gICAgLy8gVGhpcyBpcyBicm9rZW4gb3V0IGFzIGEgc2VwYXJhdGUg
bm9uLXZpcnR1YWwgbWV0aG9kIGZyb20gZ2V0U3RvcmUoKQotICAgIC8vIHNvIHRoYXQgaXQgY2Fu
IGJlIGlubGluZWQgYnkgZ2V0Q3VycmVudE1haW5UaHJlYWRTdG9yZSwgd2hpY2ggaXMKLSAgICAv
LyBhIGhvdCBzcG90IGluIERyb21hZW8gRE9NIHRlc3RzLgorICAgIFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBp
ZiAoVU5MSUtFTFkoZGF0YS0+Z2V0RE9NRGF0YVN0b3JlKCkgIT0gMCkpCisgICAgICAgIHJldHVy
biAqZGF0YS0+Z2V0RE9NRGF0YVN0b3JlKCk7CiAgICAgVjhJc29sYXRlZENvbnRleHQqIGNvbnRl
eHQgPSBWOElzb2xhdGVkQ29udGV4dDo6Z2V0RW50ZXJlZCgpOwogICAgIGlmIChVTkxJS0VMWShj
b250ZXh0ICE9IDApKQogICAgICAgICByZXR1cm4gKmNvbnRleHQtPndvcmxkKCktPmRvbURhdGFT
dG9yZSgpOwotICAgIHJldHVybiBtX2RlZmF1bHRTdG9yZTsKKyAgICByZXR1cm4gZ2V0RGVmYXVs
dFN0b3JlKCk7CiB9CiAKIHZvaWQgRE9NRGF0YTo6ZGVyZWZPYmplY3QoV3JhcHBlclR5cGVJbmZv
KiB0eXBlLCB2b2lkKiBkb21PYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9ET01EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgK
aW5kZXggNjg4Y2I5ZC4uNzFlN2U1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEu
aApAQCAtNDUsMjMgKzQ1LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyB1c2UgZGlm
ZmVyZW50IHN1YmNsYXNzZXMuCiAgICAgLy8KICAgICBjbGFzcyBET01EYXRhIHsKLSAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRE9NRGF0YSk7CiAgICAgcHVibGljOgotICAgICAgICBET01E
YXRhKCk7Ci0gICAgICAgIHZpcnR1YWwgfkRPTURhdGEoKTsKLQotICAgICAgICBzdGF0aWMgRE9N
RGF0YSogZ2V0Q3VycmVudCgpOwotICAgICAgICBET01EYXRhU3RvcmUmIGdldFN0b3JlKCkgeyBy
ZXR1cm4gZ2V0TWFpblRocmVhZFN0b3JlKCk7IH0KLQogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogICAgICAgICBzdGF0aWMgdm9pZCBoYW5kbGVXZWFrT2JqZWN0KERPTURhdGFTdG9yZTo6
RE9NV3JhcHBlck1hcFR5cGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+LCBUKiBkb21PYmpl
Y3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgICAgIHN0YXRpYyB2b2lk
IHJlbW92ZU9iamVjdHNGcm9tV3JhcHBlck1hcChET01EYXRhU3RvcmUqIHN0b3JlLCBBYnN0cmFj
dFdlYWtSZWZlcmVuY2VNYXA8VCwgdjg6Ok9iamVjdD4mIGRvbU1hcCk7CiAKLSAgICAgICAgc3Rh
dGljIERPTURhdGFTdG9yZSYgZ2V0Q3VycmVudE1haW5UaHJlYWRTdG9yZSgpIHsgcmV0dXJuIGdl
dEN1cnJlbnQoKS0+Z2V0TWFpblRocmVhZFN0b3JlKCk7IH0KIAorICAgICAgICBzdGF0aWMgRE9N
RGF0YVN0b3JlJiBnZXRDdXJyZW50U3RvcmUoKTsKICAgICBwcml2YXRlOgorICAgICAgICBET01E
YXRhKCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlcmVmT2JqZWN0KFdyYXBwZXJUeXBlSW5mbyog
dHlwZSwgdm9pZCogZG9tT2JqZWN0KTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpA
QCAtNzQsOSArNjgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgdjhP
YmplY3QuRGlzcG9zZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotCi0gICAgICAgIERP
TURhdGFTdG9yZSYgZ2V0TWFpblRocmVhZFN0b3JlKCk7Ci0gICAgICAgIFN0YXRpY0RPTURhdGFT
dG9yZSBtX2RlZmF1bHRTdG9yZTsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCmluZGV4IDAzZTZl
NjguLjI2NDI4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3Jl
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRPTURhdGFTdG9yZS5oIgogCiAjaW5j
bHVkZSAiRE9NRGF0YS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTgyLDE0ICs4MywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyAgICB0
aGVtLgogCiAKLURPTURhdGFTdG9yZTo6RE9NRGF0YVN0b3JlKERPTURhdGEqIGRvbURhdGEpCitE
T01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZSgpCiAgICAgOiBtX2RvbU5vZGVNYXAoMCkKICAgICAs
IG1fZG9tT2JqZWN0TWFwKDApCiAgICAgLCBtX2FjdGl2ZURvbU9iamVjdE1hcCgwKQogI2lmIEVO
QUJMRShTVkcpCiAgICAgLCBtX2RvbVN2Z0VsZW1lbnRJbnN0YW5jZU1hcCgwKQogI2VuZGlmCi0g
ICAgLCBtX2RvbURhdGEoZG9tRGF0YSkKIHsKICAgICBET01EYXRhU3RvcmU6OmFsbFN0b3Jlcygp
LmFwcGVuZCh0aGlzKTsKIH0KQEAgLTEwMSw4ICsxMDEsNyBAQCBET01EYXRhU3RvcmU6On5ET01E
YXRhU3RvcmUoKQogCiBET01EYXRhTGlzdCYgRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKQogewot
ICBERUZJTkVfU1RBVElDX0xPQ0FMKERPTURhdGFMaXN0LCBzdGF0aWNET01EYXRhTGlzdCwgKCkp
OwotICByZXR1cm4gc3RhdGljRE9NRGF0YUxpc3Q7CisgICAgcmV0dXJuIFY4QmluZGluZ1Blcklz
b2xhdGVEYXRhOjpjdXJyZW50KCktPmFsbFN0b3JlcygpOwogfQogCiB2b2lkKiBET01EYXRhU3Rv
cmU6OmdldERPTVdyYXBwZXJNYXAoRE9NV3JhcHBlck1hcFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggMzczZDg1ZS4uZWJjYzMwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKQEAgLTcyLDE0ICs3Miwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgfTsKIAotICAgICAgICBE
T01EYXRhU3RvcmUoRE9NRGF0YSopOworICAgICAgICBET01EYXRhU3RvcmUoKTsKICAgICAgICAg
dmlydHVhbCB+RE9NRGF0YVN0b3JlKCk7CiAKICAgICAgICAgLy8gQSBsaXN0IG9mIGFsbCBET01E
YXRhU3RvcmUgb2JqZWN0cyBpbiB0aGUgY3VycmVudCBWOCBpbnN0YW5jZSAodGhyZWFkKS4gTm9y
bWFsbHksIGVhY2ggV29ybGQgaGFzIGEgRE9NRGF0YVN0b3JlLgogICAgICAgICBzdGF0aWMgRE9N
RGF0YUxpc3QmIGFsbFN0b3JlcygpOwogCi0gICAgICAgIERPTURhdGEqIGRvbURhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RvbURhdGE7IH0KLQogICAgICAgICB2b2lkKiBnZXRET01XcmFwcGVyTWFw
KERPTVdyYXBwZXJNYXBUeXBlKTsKIAogICAgICAgICBET01Ob2RlTWFwcGluZyYgZG9tTm9kZU1h
cCgpIHsgcmV0dXJuICptX2RvbU5vZGVNYXA7IH0KQEAgLTEwNSwxMCArMTAzLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIERPTVdyYXBwZXJNYXA8U1ZH
RWxlbWVudEluc3RhbmNlPiogbV9kb21TdmdFbGVtZW50SW5zdGFuY2VNYXA7CiAjZW5kaWYKLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIEEgYmFjay1wb2ludGVyIHRvIHRoZSBET01EYXRhIHRv
IHdoaWNoIHdlIGJlbG9uZy4KLSAgICAgICAgRE9NRGF0YSogbV9kb21EYXRhOwogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY29wZWRET01EYXRhU3RvcmUuY3BwCmluZGV4IDYwYTZjNjcuLmRiMjNlZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcApAQCAt
MzMsOCArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjb3BlZERPTURhdGFTdG9y
ZTo6U2NvcGVkRE9NRGF0YVN0b3JlKERPTURhdGEqIGRvbURhdGEpCi0gICAgOiBET01EYXRhU3Rv
cmUoZG9tRGF0YSkKK1Njb3BlZERPTURhdGFTdG9yZTo6U2NvcGVkRE9NRGF0YVN0b3JlKCkKKyAg
ICA6IERPTURhdGFTdG9yZSgpCiB7CiAgICAgbV9kb21Ob2RlTWFwID0gbmV3IERPTVdyYXBwZXJN
YXA8Tm9kZT4oJkRPTURhdGFTdG9yZTo6d2Vha05vZGVDYWxsYmFjayk7CiAgICAgbV9kb21PYmpl
Y3RNYXAgPSBuZXcgRE9NV3JhcHBlck1hcDx2b2lkPigmRE9NRGF0YVN0b3JlOjp3ZWFrRE9NT2Jq
ZWN0Q2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Nv
cGVkRE9NRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRET01E
YXRhU3RvcmUuaAppbmRleCBjNjNiYWIwLi43YjFlOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgLy8KICAgICBjbGFzcyBTY29wZWRET01EYXRhU3RvcmUgOiBw
dWJsaWMgRE9NRGF0YVN0b3JlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNjb3BlZERPTURhdGFT
dG9yZShET01EYXRhKik7CisgICAgICAgIFNjb3BlZERPTURhdGFTdG9yZSgpOwogCiAgICAgICAg
IC8vIFRoaXMgY2FuIGJlIGNhbGxlZCB3aGVuIFdURiB0aHJlYWQgaXMgdGVhcmluZyBkb3duLgog
ICAgICAgICAvLyBXZSBhc3N1bWUgdGhhdCBhbGwgY2hpbGQgdGhyZWFkcyBydW5uaW5nIFY4IGlu
c3RhbmNlcyBhcmUgY3JlYXRlZCBieSBXVEYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TdGF0aWNET01EYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU3RhdGljRE9NRGF0YVN0b3JlLmNwcAppbmRleCBiNGMzNmI5Li5kNmRjYmUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TdGF0aWNET01EYXRhU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1N0YXRpY0RPTURhdGFTdG9yZS5jcHAK
QEAgLTMzLDggKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdGF0aWNET01EYXRh
U3RvcmU6OlN0YXRpY0RPTURhdGFTdG9yZShET01EYXRhKiBkb21EYXRhKQotICAgIDogRE9NRGF0
YVN0b3JlKGRvbURhdGEpCitTdGF0aWNET01EYXRhU3RvcmU6OlN0YXRpY0RPTURhdGFTdG9yZSgp
CisgICAgOiBET01EYXRhU3RvcmUoKQogICAgICwgbV9zdGF0aWNEb21Ob2RlTWFwKCZET01EYXRh
U3RvcmU6OndlYWtOb2RlQ2FsbGJhY2spCiAgICAgLCBtX3N0YXRpY0RvbU9iamVjdE1hcCgmRE9N
RGF0YVN0b3JlOjp3ZWFrRE9NT2JqZWN0Q2FsbGJhY2spCiAgICAgLCBtX3N0YXRpY0FjdGl2ZURv
bU9iamVjdE1hcCgmRE9NRGF0YVN0b3JlOjp3ZWFrQWN0aXZlRE9NT2JqZWN0Q2FsbGJhY2spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TdGF0aWNET01EYXRhU3RvcmUu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1N0YXRpY0RPTURhdGFTdG9yZS5oCmluZGV4
IDk0MDY0NmUuLjY4MjE0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1N0YXRpY0RPTURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1N0
YXRpY0RPTURhdGFTdG9yZS5oCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vCiBjbGFzcyBTdGF0aWNET01EYXRhU3RvcmUgOiBwdWJsaWMgRE9NRGF0YVN0b3JlIHsKIHB1
YmxpYzoKLSAgICBTdGF0aWNET01EYXRhU3RvcmUoRE9NRGF0YSopOworICAgIFN0YXRpY0RPTURh
dGFTdG9yZSgpOwogCiBwcml2YXRlOgogICAgIEludHJ1c2l2ZURPTVdyYXBwZXJNYXAgbV9zdGF0
aWNEb21Ob2RlTWFwOwpAQCAtNjAsNCArNjAsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gU3RhdGljRE9NRGF0YVN0b3JlX2gKLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggODI2MGZmZC4uMWJlOGFmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCkBAIC00OSw2ICs0OSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogCiBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6VjhCaW5kaW5n
UGVySXNvbGF0ZURhdGEodjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgOiBtX0RPTURhdGFTdG9y
ZSgwKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJp
bmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IGUx
ZTNkZTAuLmQzOWIyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBA
IC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFY4QmluZGluZ19oCiAKICNpbmNsdWRlICJCaW5kaW5n
U2VjdXJpdHkuaCIKKyNpbmNsdWRlICJET01EYXRhU3RvcmUuaCIKICNpbmNsdWRlICJNYXRoRXh0
cmFzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJWOERPTVdyYXBw
ZXIuaCIKQEAgLTEwNyw2ICsxMDgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiYgdG9TdHJpbmdOYW1lKCkgeyByZXR1cm4gbV90b1N0
cmluZ05hbWU7IH0KICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
JiB0b1N0cmluZ1RlbXBsYXRlKCkgeyByZXR1cm4gbV90b1N0cmluZ1RlbXBsYXRlOyB9CiAgICAg
ICAgIFN0cmluZ0NhY2hlKiBzdHJpbmdDYWNoZSgpIHsgcmV0dXJuICZtX3N0cmluZ0NhY2hlOyB9
CisgICAgICAgIAorICAgICAgICBET01EYXRhTGlzdCYgYWxsU3RvcmVzKCkgeyByZXR1cm4gbV9E
T01EYXRhTGlzdDsgfQorICAgICAgICBET01EYXRhU3RvcmUqIGdldERPTURhdGFTdG9yZSgpIHsg
cmV0dXJuIG1fRE9NRGF0YVN0b3JlOyB9CisgICAgICAgIHZvaWQgc2V0RE9NRGF0YVN0b3JlKERP
TURhdGFTdG9yZSogc3RvcmUpIHsgbV9ET01EYXRhU3RvcmUgPSBzdG9yZTsgfQogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgZXhwbGljaXQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEodjg6Oklzb2xh
dGUqKTsKQEAgLTExNyw2ICsxMjIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IG1fdG9TdHJpbmdOYW1lOwogICAgICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV90b1N0cmluZ1RlbXBsYXRlOwogICAgICAg
ICBTdHJpbmdDYWNoZSBtX3N0cmluZ0NhY2hlOworCisgICAgICAgIERPTURhdGFMaXN0IG1fRE9N
RGF0YUxpc3Q7CisgICAgICAgIERPTURhdGFTdG9yZSogbV9ET01EYXRhU3RvcmU7CiAgICAgfTsK
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAKaW5kZXggODQ3NDA4OC4u
NjIzNDg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcApAQCAtMzgs
NyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBET01EYXRhU3RvcmVIYW5kbGU6OkRP
TURhdGFTdG9yZUhhbmRsZSgpCi0gICAgOiBtX3N0b3JlKGFkb3B0UHRyKG5ldyBTY29wZWRET01E
YXRhU3RvcmUoRE9NRGF0YTo6Z2V0Q3VycmVudCgpKSkpCisgICAgOiBtX3N0b3JlKGFkb3B0UHRy
KG5ldyBTY29wZWRET01EYXRhU3RvcmUoKSkpCiB7CiB9CiAKQEAgLTQ2LDE2ICs0NiwxMyBAQCBE
T01EYXRhU3RvcmVIYW5kbGU6On5ET01EYXRhU3RvcmVIYW5kbGUoKQogewogfQogCi1zdGF0aWMg
Ym9vbCBmYXN0ZXJET01TdG9yZUFjY2VzcyA9IGZhbHNlOwotCiBzdGF0aWMgaW5saW5lIERPTURh
dGFTdG9yZSYgZ2V0RE9NRGF0YVN0b3JlKCkKIHsKLSAgICByZXR1cm4gRE9NRGF0YTo6Z2V0Q3Vy
cmVudE1haW5UaHJlYWRTdG9yZSgpOworICAgIHJldHVybiBET01EYXRhOjpnZXRDdXJyZW50U3Rv
cmUoKTsKIH0KIAogdm9pZCBlbmFibGVGYXN0ZXJET01TdG9yZUFjY2VzcygpCiB7Ci0gICAgZmFz
dGVyRE9NU3RvcmVBY2Nlc3MgPSB0cnVlOwogfQogCiBET01Ob2RlTWFwcGluZyYgZ2V0RE9NTm9k
ZU1hcCgpCg==
</data>
<flag name="review"
          id="95253"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>