<?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>45145</bug_id>
          
          <creation_ts>2010-09-02 16:03:01 -0700</creation_ts>
          <short_desc>[Qt] V8 port for QT platform: v8 binding changes</short_desc>
          <delta_ts>2010-09-20 02:48:45 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>45136</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Vlad">vladbph</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>antonm</cc>
    
    <cc>christian.webkit</cc>
    
    <cc>hausmann</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>273644</commentid>
    <comment_count>0</comment_count>
    <who name="Vlad">vladbph</who>
    <bug_when>2010-09-02 16:03:01 -0700</bug_when>
    <thetext>V8 binding changes for QT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273689</commentid>
    <comment_count>1</comment_count>
      <attachid>66437</attachid>
    <who name="Vlad">vladbph</who>
    <bug_when>2010-09-02 17:25:47 -0700</bug_when>
    <thetext>Created attachment 66437
v8 binding changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273690</commentid>
    <comment_count>2</comment_count>
      <attachid>66438</attachid>
    <who name="Vlad">vladbph</who>
    <bug_when>2010-09-02 17:29:53 -0700</bug_when>
    <thetext>Created attachment 66438
v8 binding changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273805</commentid>
    <comment_count>3</comment_count>
      <attachid>66438</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-09-02 23:38:32 -0700</bug_when>
    <thetext>Comment on attachment 66438
v8 binding changes

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

&gt; WebCore/bindings/v8/npruntime_internal.h:30
&gt; -#include &quot;npapi.h&quot;
&gt; +#if PLATFORM(QT)
&gt; +#include &lt;bridge/npapi.h&gt;
&gt; +#endif
Why is this PLATFORM(QT) guard added here? (the ChangeLog doesn&apos;t explain)

Won&apos;t the missing inclusion break the Chromium build?

&gt; WebCore/bindings/v8/NPV8Object.cpp:254
&gt; +#if PLATFORM(QT)
&gt; +    bool popupsAllowed = false;
&gt; +#else
It looks like this is at least missing a FIXME.

Then again, maybe it&apos;s not too difficult to fix. What about this?

PluginView* view = pluginViewForInstance(npp);
bool popupsAllowed = view ? view-&gt;arePopupsAllowed() : false;

&gt; WebCore/bindings/v8/ScriptCachedFrameData.h:54
&gt; +#elif PLATFORM(ANDROID) || PLATFORM(QT)
Any explanation why this is needed for the Qt port but not for Chromium for example? (I&apos;m just curious :)

&gt; WebCore/bindings/v8/V8Binding.cpp:75
&gt; +#if !PLATFORM(QT)
&gt;          : m_plainString(string)
&gt;          , m_atomicString(string)
&gt; +#endif
&gt;      {
&gt;  #ifndef NDEBUG
&gt;          m_threadId = WTF::currentThread();
&gt;  #endif
&gt; +#if PLATFORM(QT)
&gt; +        m_plainString = string;
&gt; +        m_atomicString = string;
&gt; +#endif
Why is the initialization done different for the Qt port?

Or is this not actually Qt specific but specific to rvct?

&gt; WebCore/config.h:190
&gt; +#if PLATFORM(QT)
&gt; +#include &lt;bridge/npruntime_internal.h&gt;
&gt; +#endif
What compile errors did you encounter?

I&apos;m going to say r- because I think some of the #ifdefs are not correct (such as the string init one) and there&apos;s a little bit of context missing for some of the changes.

In general it looks good though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274068</commentid>
    <comment_count>4</comment_count>
    <who name="Vlad">vladbph</who>
    <bug_when>2010-09-03 11:39:13 -0700</bug_when>
    <thetext>
(In reply to comment #3)
&gt; (From update of attachment 66438 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=66438&amp;action=prettypatch
This should be fixed by changing inclusion order. At the time of the port it was a problem.
&gt; 
&gt; &gt; WebCore/bindings/v8/npruntime_internal.h:30
&gt; &gt; -#include &quot;npapi.h&quot;
&gt; &gt; +#if PLATFORM(QT)
&gt; &gt; +#include &lt;bridge/npapi.h&gt;
&gt; &gt; +#endif
&gt; Why is this PLATFORM(QT) guard added here? (the ChangeLog doesn&apos;t explain)
&gt; 
OK
&gt; Won&apos;t the missing inclusion break the Chromium build?
&gt; 
&gt; &gt; WebCore/bindings/v8/NPV8Object.cpp:254
&gt; &gt; +#if PLATFORM(QT)
&gt; &gt; +    bool popupsAllowed = false;
&gt; &gt; +#else
&gt; It looks like this is at least missing a FIXME.
&gt; 
&gt; Then again, maybe it&apos;s not too difficult to fix. What about this?
&gt; 
&gt; PluginView* view = pluginViewForInstance(npp);
&gt; bool popupsAllowed = view ? view-&gt;arePopupsAllowed() : false;

Comment from Chromium says: // We don&apos;t use WebKit&apos;s page caching, so this implementation is just a stub.
I chose to use caching :)
&gt; 
&gt; &gt; WebCore/bindings/v8/ScriptCachedFrameData.h:54
&gt; &gt; +#elif PLATFORM(ANDROID) || PLATFORM(QT)
&gt; Any explanation why this is needed for the Qt port but not for Chromium for example? (I&apos;m just curious :)

Original code crashes at runtime. Most likely wrong constructor is called. This is again may be related to CString.h inclusion. Will check it if #ifdef can be removed now.
&gt; 
&gt; &gt; WebCore/bindings/v8/V8Binding.cpp:75
&gt; &gt; +#if !PLATFORM(QT)
&gt; &gt;          : m_plainString(string)
&gt; &gt;          , m_atomicString(string)
&gt; &gt; +#endif
&gt; &gt;      {
&gt; &gt;  #ifndef NDEBUG
&gt; &gt;          m_threadId = WTF::currentThread();
&gt; &gt;  #endif
&gt; &gt; +#if PLATFORM(QT)
&gt; &gt; +        m_plainString = string;
&gt; &gt; +        m_atomicString = string;
&gt; &gt; +#endif
&gt; Why is the initialization done different for the Qt port?
&gt; 
&gt; Or is this not actually Qt specific but specific to rvct?

Compilation errors appear on maemo. Will double check this.
&gt; 
&gt; &gt; WebCore/config.h:190
&gt; &gt; +#if PLATFORM(QT)
&gt; &gt; +#include &lt;bridge/npruntime_internal.h&gt;
&gt; &gt; +#endif
&gt; What compile errors did you encounter?
&gt; 
&gt; I&apos;m going to say r- because I think some of the #ifdefs are not correct (such as the string init one) and there&apos;s a little bit of context missing for some of the changes.
&gt; 
&gt; In general it looks good though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274116</commentid>
    <comment_count>5</comment_count>
    <who name="Vlad">vladbph</who>
    <bug_when>2010-09-03 12:20:53 -0700</bug_when>
    <thetext>Just checked removing #if !PLATFORM(QT). It has to be 
    explicit WebCoreStringResource(const AtomicString&amp; string)
        : m_plainString(reinterpret_cast&lt;const WTF::String &amp;&gt;(string))
        , m_atomicString(reinterpret_cast&lt;const WTF::String &amp;&gt;(string))
to specify which to use
&quot;WTF::String::String(const QString &amp;) or
&quot;WTF::String::String(const WTF::String &amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274244</commentid>
    <comment_count>6</comment_count>
      <attachid>66438</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-09-03 16:11:14 -0700</bug_when>
    <thetext>Comment on attachment 66438
v8 binding changes


&gt; +#if PLATFORM(QT)
&gt; +    if (widget-&gt;isPluginView()) {
&gt; +        PluginView* pluginView = static_cast&lt;PluginView*&gt;(widget);
&gt; +        // Create script inscance (v8 object)
&gt; +        PassScriptInstance instance = pluginView-&gt;bindingInstance();
&gt; +        if (!instance)
&gt; +            return 0;
&gt; +        // Get npobject
&gt; +        NPObject* npObject = static_cast&lt;NPObject*&gt;(instance-&gt;instance()-&gt;GetPointerFromInternalField(v8DOMWrapperObjectIndex));

I&apos;m confused by this. It looks like you&apos;re accessing an NPObject that is stored on a PassScriptInstance and creating a new PassScriptInstance for it? Why wouldn&apos;t we just want the original PassScriptInstance?

I think I&apos;m probably missing some subtlety :)

&gt; +        // Track the plugin object. We&apos;ve been given a reference to the object.
&gt; +        m_pluginObjects.set(widget, npObject);
&gt; +        return instance;
&gt; +    }
&gt;  
&gt; +    QWidget* platformWidget = widget-&gt;platformWidget();
&gt; +    if (!platformWidget)
&gt; +        return 0;
&gt; +
&gt; +    Frame* activeFrame = V8Proxy::retrieveFrameForEnteredContext();
&gt; +    if (!activeFrame)
&gt; +        return 0;
&gt; +
&gt; +    V8Proxy* activeProxy = activeFrame-&gt;script()-&gt;proxy();
&gt; +    v8::HandleScope handleScope;
&gt; +    v8::Handle&lt;v8::Context&gt; v8Context = V8Proxy::mainWorldContext(activeFrame);
&gt; +    if (v8Context.IsEmpty())
&gt; +        return 0;
&gt; +
&gt; +    v8::Context::Scope scope(v8Context);
&gt; +    v8::Handle&lt;v8::Object&gt; result = 
&gt; +        V8::Bindings::QtInstance::getQtInstance(platformWidget, v8Context, &quot;&quot;, QScriptEngine::QtOwnership)-&gt;getV8Object();
&gt; +    return V8ScriptInstance::create(result);
&gt; +

Would it be possible to put the QT-specific code in a WebCore/platform/qt/PlatformBridge.h and make use of the PlatformBridge::pluginScriptableObject() call that Android and Chromium use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274253</commentid>
    <comment_count>7</comment_count>
    <who name="Vlad">vladbph</who>
    <bug_when>2010-09-03 16:30:52 -0700</bug_when>
    <thetext>I&apos;m trying as we speak :) Complication is that QT has QT plugins.
if (widget-&gt;isPluginView())() is for qt plugins and pluginView-&gt;bindingInstance() returns v8 object already and then returns:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274255</commentid>
    <comment_count>8</comment_count>
    <who name="Vlad">vladbph</who>
    <bug_when>2010-09-03 16:40:11 -0700</bug_when>
    <thetext>I&apos;m trying to make it look like this

PassScriptInstance ScriptController::createScriptInstanceForWidget(Widget* widget)
{
...
#if PLATFORM(QT)
    // Create v8 object for QT plugins first
    PassScriptInstance instance = PlatformBridge::pluginScriptableObjectInstance(widget);
    if (instance)
        return instance;
#endif
    if (widget-&gt;isFrameView())
        return 0;
    NPObject* npObject = PlatformBridge::pluginScriptableObject(widget);
    if (!npObject)
        return 0;
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274270</commentid>
    <comment_count>9</comment_count>
    <who name="Vlad">vladbph</who>
    <bug_when>2010-09-03 17:03:40 -0700</bug_when>
    <thetext>Confusing part for me is that JSC implementation does:
_NPN_ReleaseObject() in PassScriptInstance PluginView::bindingInstance() after npobject retrieved from PluginView. 
V8 implementation in 
PassScriptInstance ScriptController::createScriptInstanceForWidget() 
doesnt do that... Does this mean that Chromium PlatformBridge::pluginScriptableObject(widget) already has ref counter decreased for this npobject?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274284</commentid>
    <comment_count>10</comment_count>
      <attachid>66571</attachid>
    <who name="Vlad">vladbph</who>
    <bug_when>2010-09-03 17:27:05 -0700</bug_when>
    <thetext>Created attachment 66571
Moved most of scriptcontroller changes to PlatformBridge: pluginScriptableObject(), pluginScriptableObjectInstance(), popupsAllowed()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274285</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-03 17:29:07 -0700</bug_when>
    <thetext>Attachment 66571 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/qt/platformBridge.cpp:23:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebCore/platform/qt/platformBridge.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/qt/PlatformBridge.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/qt/PlatformBridge.h:77:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/platform/qt/PlatformBridge.h:78:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274302</commentid>
    <comment_count>12</comment_count>
      <attachid>66574</attachid>
    <who name="Vlad">vladbph</who>
    <bug_when>2010-09-03 18:01:50 -0700</bug_when>
    <thetext>Created attachment 66574
Included plugins changes b/c of dependency</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274500</commentid>
    <comment_count>13</comment_count>
      <attachid>66574</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-05 23:28:49 -0700</bug_when>
    <thetext>Comment on attachment 66574
Included plugins changes b/c of dependency 

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

&gt; WebCore/bindings/v8/ScriptController.cpp:74
&gt; +#if PLATFORM(QT)
&gt; +PassRefPtr&lt;DOMWrapperWorld&gt; ScriptController::createWorld()
&gt; +{
&gt; +    return DOMWrapperWorld::create();
&gt; +}
&gt; +#endif
This can&apos;t be right.  It&apos;s not Qt-specific.  We need to integrate V8 with DOMWrapperWorld in genera.

&gt; WebCore/bindings/v8/V8Binding.cpp:54
&gt; -        : m_plainString(string)
&gt; +        : m_plainString(reinterpret_cast&lt;const WTF::String &amp;&gt;(string))
I don&apos;t understand this code.  Does Qt use different string types than other ports?  reinterpret_cast is almost always wrong.

&gt; WebCore/plugins/win/PluginViewWin.cpp:661
&gt; +#if USE(JSC)
&gt;      JSC::JSLock::DropAllLocks dropAllLocks(JSC::SilenceAssertionsOnly);
&gt; +#endif
This ifdefs point to a missing abstraction.  Perhaps a ScriptLock object?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275060</commentid>
    <comment_count>14</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-09-07 08:50:45 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Confusing part for me is that JSC implementation does:
&gt; _NPN_ReleaseObject() in PassScriptInstance PluginView::bindingInstance() after npobject retrieved from PluginView. 
&gt; V8 implementation in 
&gt; PassScriptInstance ScriptController::createScriptInstanceForWidget() 
&gt; doesnt do that... Does this mean that Chromium PlatformBridge::pluginScriptableObject(widget) already has ref counter decreased for this npobject?

I cannot say for JSC, but V8 bindings introduce a weak reference to a wrapper which owns the NPObject and would deref NPObject when it gets unreachable via V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275061</commentid>
    <comment_count>15</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-09-07 08:51:01 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #9)
&gt; &gt; Confusing part for me is that JSC implementation does:
&gt; &gt; _NPN_ReleaseObject() in PassScriptInstance PluginView::bindingInstance() after npobject retrieved from PluginView. 
&gt; &gt; V8 implementation in 
&gt; &gt; PassScriptInstance ScriptController::createScriptInstanceForWidget() 
&gt; &gt; doesnt do that... Does this mean that Chromium PlatformBridge::pluginScriptableObject(widget) already has ref counter decreased for this npobject?
&gt; 
&gt; I cannot say for JSC, but V8 bindings introduce a weak reference to a wrapper which owns the NPObject and would deref NPObject when it gets unreachable via V8.

Forgotten URL: http://www.google.com/codesearch/p?hl=en#OAMlx_jo-ck/src/third_party/WebKit/WebCore/bindings/v8/V8NPObject.cpp&amp;q=createV8ObjectForNPObject&amp;sa=N&amp;cd=1&amp;ct=rc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275063</commentid>
    <comment_count>16</comment_count>
      <attachid>66574</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-09-07 08:54:58 -0700</bug_when>
    <thetext>Comment on attachment 66574
Included plugins changes b/c of dependency 

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

&gt; WebCore/platform/qt/PlatformBridge.cpp:67
&gt; +        V8::Bindings::QtInstance::getQtInstance(platformWidget, v8Context, &quot;&quot;, QScriptEngine::QtOwnership)-&gt;getV8Object();
can returned result by empty (on some failure path?)  Or V8ScriptInstance will take care of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280807</commentid>
    <comment_count>17</comment_count>
    <who name="Vlad">vladbph</who>
    <bug_when>2010-09-17 12:43:51 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 66574 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=66574&amp;action=prettypatch
&gt; 
&gt; &gt; WebCore/bindings/v8/ScriptController.cpp:74
&gt; &gt; +#if PLATFORM(QT)
&gt; &gt; +PassRefPtr&lt;DOMWrapperWorld&gt; ScriptController::createWorld()
&gt; &gt; +{
&gt; &gt; +    return DOMWrapperWorld::create();
&gt; &gt; +}
&gt; &gt; +#endif
&gt; This can&apos;t be right.  It&apos;s not Qt-specific.  We need to integrate V8 with DOMWrapperWorld in genera.
It is not Qt specific code and ifdef should be removed. I was trying to isolate Qt+v8 related changes.

&gt; 
&gt; &gt; WebCore/bindings/v8/V8Binding.cpp:54
&gt; &gt; -        : m_plainString(string)
&gt; &gt; +        : m_plainString(reinterpret_cast&lt;const WTF::String &amp;&gt;(string))
&gt; I don&apos;t understand this code.  Does Qt use different string types than other ports?  reinterpret_cast is almost always wrong.

As I said earlier without explicit cast compiler gives an error b/c of confusion b/n
&quot;WTF::String::String(const QString &amp;) or
&quot;WTF::String::String(const WTF::String &amp;)

&gt; 
&gt; &gt; WebCore/plugins/win/PluginViewWin.cpp:661
&gt; &gt; +#if USE(JSC)
&gt; &gt;      JSC::JSLock::DropAllLocks dropAllLocks(JSC::SilenceAssertionsOnly);
&gt; &gt; +#endif
&gt; This ifdefs point to a missing abstraction.  Perhaps a ScriptLock object?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281473</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-09-20 02:48:10 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; &gt; WebCore/bindings/v8/V8Binding.cpp:54
&gt; &gt; &gt; -        : m_plainString(string)
&gt; &gt; &gt; +        : m_plainString(reinterpret_cast&lt;const WTF::String &amp;&gt;(string))
&gt; &gt; I don&apos;t understand this code.  Does Qt use different string types than other ports?  reinterpret_cast is almost always wrong.
&gt; 
&gt; As I said earlier without explicit cast compiler gives an error b/c of confusion b/n
&gt; &quot;WTF::String::String(const QString &amp;) or
&gt; &quot;WTF::String::String(const WTF::String &amp;)

We have solved this one differently now:

http://trac.webkit.org/changeset/67326</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281474</commentid>
    <comment_count>19</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-09-20 02:48:45 -0700</bug_when>
    <thetext>These changes are not needed anymore, after Andreas and I separated them in the trunk.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66437</attachid>
            <date>2010-09-02 17:25:47 -0700</date>
            <delta_ts>2010-09-03 13:50:23 -0700</delta_ts>
            <desc>v8 binding changes</desc>
            <filename>v8_bindings.patch</filename>
            <type>text/plain</type>
            <size>7040</size>
            <attacher name="Vlad">vladbph</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvbnBydW50aW1lX2ludGVybmFsLmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L25wcnVudGltZV9pbnRlcm5hbC5oCShyZXZpc2lv
biA2NjY5MikNCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L25wcnVudGltZV9pbnRlcm5hbC5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjUsNyArMjUsOSBAQA0KICAqIGluY2x1ZGUgdGhpcyBmaWxlIGlu
c3RlYWQgb2YgdGhlIGFjdHVhbCBucGFwaS5oIG9yIG5wcnVudGltZS5oCiAgKi8KIAotI2luY2x1
ZGUgIm5wYXBpLmgiCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8YnJpZGdlL25wYXBpLmg+
CisjZW5kaWYKICNpbmNsdWRlICJucHJ1bnRpbWUuaCIKICNpbmNsdWRlICJucGZ1bmN0aW9ucy5o
IgogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAkocmV2aXNpb24gNjY2OTIp
DQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTI1LDEzICsyNSwxMiBAQA0KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNs
dWRlICJOUFY4T2JqZWN0LmgiCiAKLSNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiT3duQXJyYXlQ
dHIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlY4R0NDb250
cm9sbGVyLmgiCkBAIC0yNTAsNyArMjQ5LDExIEBADQogCiBib29sIF9OUE5fRXZhbHVhdGUoTlBQ
IG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUFN0cmluZyogbnBTY3JpcHQsIE5QVmFyaWFudCog
cmVzdWx0KQogeworI2lmIFBMQVRGT1JNKFFUKQorICAgIGJvb2wgcG9wdXBzQWxsb3dlZCA9IGZh
bHNlOworI2Vsc2UKICAgICBib29sIHBvcHVwc0FsbG93ZWQgPSBQbGF0Zm9ybUJyaWRnZTo6cG9w
dXBzQWxsb3dlZChucHApOworI2VuZGlmCiAgICAgcmV0dXJuIF9OUE5fRXZhbHVhdGVIZWxwZXIo
bnBwLCBwb3B1cHNBbGxvd2VkLCBucE9iamVjdCwgbnBTY3JpcHQsIHJlc3VsdCk7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oCShyZXZp
c2lvbiA2NjY5MikNCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0
YS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNTEsNyArNTEsNyBAQA0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZWxpZiBQTEFURk9STShBTkRST0lEKQorI2VsaWYgUExBVEZPUk0oQU5EUk9J
RCkgfHwgUExBVEZPUk0oUVQpCiAvLyBGSVhNRTogdGhlIHJpZ2h0IGd1YXJkIHNob3VsZCBiZSBF
TkFCTEUoUEFHRV9DQUNIRSkuIFJlcGxhY2Ugd2l0aCB0aGUgcmlnaHQgZ3VhcmQsIG9uY2UKIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTA2MSBpcyBmaXhlZC4K
IC8vCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gNjY2OTIpDQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQ0KQEAgLTYzLDkgKzYzLDIwIEBADQogI2luY2x1ZGUgIlhTU0F1ZGl0
b3IuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKKyNp
bmNsdWRlICJxdF9pbnN0YW5jZXY4LmgiCisjaW5jbHVkZSA8UVdpZGdldD4KKyNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBTY3JpcHRD
b250cm9sbGVyOjpjcmVhdGVXb3JsZCgpCit7CisgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6
Y3JlYXRlKCk7Cit9CisKKwogdm9pZCBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFk
aW5nKCkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZFRocmVhZGluZyA9IGZhbHNlOwpA
QCAtMzI2LDcgKzMzNyw0MSBAQA0KIFBhc3NTY3JpcHRJbnN0YW5jZSBTY3JpcHRDb250cm9sbGVy
OjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldChXaWRnZXQqIHdpZGdldCkKIHsKICAgICBB
U1NFUlQod2lkZ2V0KTsKKyNpZiBQTEFURk9STShRVCkKKyAgICBpZiAod2lkZ2V0LT5pc1BsdWdp
blZpZXcoKSkgeworICAgICAgICBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gc3RhdGljX2Nhc3Q8
UGx1Z2luVmlldyo+KHdpZGdldCk7CisgICAgICAgIC8vIENyZWF0ZSBzY3JpcHQgaW5zY2FuY2Ug
KHY4IG9iamVjdCkKKyAgICAgICAgUGFzc1NjcmlwdEluc3RhbmNlIGluc3RhbmNlID0gcGx1Z2lu
Vmlldy0+YmluZGluZ0luc3RhbmNlKCk7CisgICAgICAgIGlmICghaW5zdGFuY2UpCisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgLy8gR2V0IG5wb2JqZWN0CisgICAgICAgIE5QT2JqZWN0
KiBucE9iamVjdCA9IHN0YXRpY19jYXN0PE5QT2JqZWN0Kj4oaW5zdGFuY2UtPmluc3RhbmNlKCkt
PkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOwor
ICAgICAgICAvLyBUcmFjayB0aGUgcGx1Z2luIG9iamVjdC4gV2UndmUgYmVlbiBnaXZlbiBhIHJl
ZmVyZW5jZSB0byB0aGUgb2JqZWN0LgorICAgICAgICBtX3BsdWdpbk9iamVjdHMuc2V0KHdpZGdl
dCwgbnBPYmplY3QpOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQogCisgICAgUVdp
ZGdldCogcGxhdGZvcm1XaWRnZXQgPSB3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCk7CisgICAgaWYg
KCFwbGF0Zm9ybVdpZGdldCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGcmFtZSogYWN0aXZl
RnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKKyAgICBp
ZiAoIWFjdGl2ZUZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFY4UHJveHkqIGFjdGl2
ZVByb3h5ID0gYWN0aXZlRnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpOworICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQg
PSBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KGFjdGl2ZUZyYW1lKTsKKyAgICBpZiAodjhDb250
ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB2ODo6Q29udGV4dDo6U2Nv
cGUgc2NvcGUodjhDb250ZXh0KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJlc3VsdCA9
IAorICAgICAgICBWODo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OmdldFF0SW5zdGFuY2UocGxhdGZv
cm1XaWRnZXQsIHY4Q29udGV4dCwgIiIsIFFTY3JpcHRFbmdpbmU6OlF0T3duZXJzaGlwKS0+Z2V0
VjhPYmplY3QoKTsKKyAgICByZXR1cm4gVjhTY3JpcHRJbnN0YW5jZTo6Y3JlYXRlKHJlc3VsdCk7
CisKKyNlbHNlCisKICAgICBpZiAod2lkZ2V0LT5pc0ZyYW1lVmlldygpKQogICAgICAgICByZXR1
cm4gMDsKIApAQCAtMzY1LDYgKzQxMCw3IEBADQogICAgIG1fcGx1Z2luT2JqZWN0cy5zZXQod2lk
Z2V0LCBucE9iamVjdCk7CiAKICAgICByZXR1cm4gVjhTY3JpcHRJbnN0YW5jZTo6Y3JlYXRlKHdy
YXBwZXIpOworI2VuZGlmCiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYW51cFNjcmlw
dE9iamVjdHNGb3JQbHVnaW4oV2lkZ2V0KiBuYXRpdmVIYW5kbGUpCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiA2NjY5MikNCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTYxLDYg
KzYxLDggQEANCiAgICAgU2NyaXB0Q29udHJvbGxlcihGcmFtZSopOwogICAgIH5TY3JpcHRDb250
cm9sbGVyKCk7CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IGNyZWF0
ZVdvcmxkKCk7CisKICAgICAvLyBGSVhNRTogVjhQcm94eSBzaG91bGQgZWl0aGVyIGJlIGZvbGRl
ZCBpbnRvIFNjcmlwdENvbnRyb2xsZXIKICAgICAvLyBvciB0aGlzIGFjY2Vzc29yIHNob3VsZCBi
ZSBtYWRlIEpTUHJveHkqCiAgICAgVjhQcm94eSogcHJveHkoKSB7IHJldHVybiBtX3Byb3h5Lmdl
dCgpOyB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAJKHJldmlzaW9uIDY2Njky
KQ0KKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTYxLDEyICs2MSwxOCBAQA0KICAgICB9CiAKICAgICBleHBsaWNpdCBXZWJDb3JlU3RyaW5n
UmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCisjaWYgIVBMQVRGT1JNKFFUKQog
ICAgICAgICA6IG1fcGxhaW5TdHJpbmcoc3RyaW5nKQogICAgICAgICAsIG1fYXRvbWljU3RyaW5n
KHN0cmluZykKKyNlbmRpZgogICAgIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1fdGhyZWFk
SWQgPSBXVEY6OmN1cnJlbnRUaHJlYWQoKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAg
ICAgICBtX3BsYWluU3RyaW5nID0gc3RyaW5nOworICAgICAgICBtX2F0b21pY1N0cmluZyA9IHN0
cmluZzsKKyNlbmRpZgogICAgICAgICBBU1NFUlQoIXN0cmluZy5pc051bGwoKSk7CiAgICAgICAg
IHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSgyICogc3RyaW5n
Lmxlbmd0aCgpKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCShyZXZpc2lvbiA2
NjY5MikNCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAkod29ya2luZyBjb3B5KQ0K
QEAgLTM2LDYgKzM2LDcgQEANCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIgLy8gZm9yIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luCiAjaW5jbHVkZSAiU2hhcmVkUGVyc2lzdGVudC5oIgogI2lu
Y2x1ZGUgIlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFj
cm9zLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgIlY4RE9NV3Jh
cHBlci5oIgogI2luY2x1ZGUgIlY4R0NDb250cm9sbGVyLmgiCkluZGV4OiBXZWJDb3JlL0NoYW5n
ZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NjY5MikN
CisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQ0KQEAgLTEsMyArMSwyNiBAQA0K
KzIwMTAtMDktMDIgIFZsYWQgQnVybGlrICA8dm9sb2RpbWlyLmJ1cmxpa0Bub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBWOCBw
b3J0IGZvciBRVCBwbGF0Zm9ybTogdjggYmluZGluZyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTE0NQorCisgICAgICAgIFY4IGJpbmRp
bmcgY2hhbmdlcyBmb3IgUVQKKworICAgICAgICAqIGNvbmZpZy5oOiBBZGRlZCBicmlkZ2UvbnBy
dW50aW1lX2ludGVybmFsLmggdG8gcHJldmVudCBjb21waWxlIGVycm9ycyBvZiAKKyAgICAgICAg
djggYmluZGluZ3MKKyAgICAgICAgKiBiaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcDoKKyAgICAg
ICAgKF9OUE5fRXZhbHVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZy
YW1lRGF0YS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRn
ZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJv
eHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZTo6V2ViQ29yZVN0
cmluZ1Jlc291cmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ucHJ1bnRpbWVfaW50ZXJuYWwu
aDoKKwogMjAxMC0wOS0wMiAgQWRhbSBMYW5nbGV5ICA8YWdsQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66438</attachid>
            <date>2010-09-02 17:29:53 -0700</date>
            <delta_ts>2010-09-03 17:27:05 -0700</delta_ts>
            <desc>v8 binding changes</desc>
            <filename>v8_bindings.patch</filename>
            <type>text/plain</type>
            <size>7420</size>
            <attacher name="Vlad">vladbph</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvbnBydW50aW1lX2ludGVybmFsLmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L25wcnVudGltZV9pbnRlcm5hbC5oCShyZXZpc2lv
biA2NjY5MikNCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L25wcnVudGltZV9pbnRlcm5hbC5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjUsNyArMjUsOSBAQA0KICAqIGluY2x1ZGUgdGhpcyBmaWxlIGlu
c3RlYWQgb2YgdGhlIGFjdHVhbCBucGFwaS5oIG9yIG5wcnVudGltZS5oCiAgKi8KIAotI2luY2x1
ZGUgIm5wYXBpLmgiCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8YnJpZGdlL25wYXBpLmg+
CisjZW5kaWYKICNpbmNsdWRlICJucHJ1bnRpbWUuaCIKICNpbmNsdWRlICJucGZ1bmN0aW9ucy5o
IgogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAkocmV2aXNpb24gNjY2OTIp
DQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTI1LDEzICsyNSwxMiBAQA0KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNs
dWRlICJOUFY4T2JqZWN0LmgiCiAKLSNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiT3duQXJyYXlQ
dHIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlY4R0NDb250
cm9sbGVyLmgiCkBAIC0yNTAsNyArMjQ5LDExIEBADQogCiBib29sIF9OUE5fRXZhbHVhdGUoTlBQ
IG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUFN0cmluZyogbnBTY3JpcHQsIE5QVmFyaWFudCog
cmVzdWx0KQogeworI2lmIFBMQVRGT1JNKFFUKQorICAgIGJvb2wgcG9wdXBzQWxsb3dlZCA9IGZh
bHNlOworI2Vsc2UKICAgICBib29sIHBvcHVwc0FsbG93ZWQgPSBQbGF0Zm9ybUJyaWRnZTo6cG9w
dXBzQWxsb3dlZChucHApOworI2VuZGlmCiAgICAgcmV0dXJuIF9OUE5fRXZhbHVhdGVIZWxwZXIo
bnBwLCBwb3B1cHNBbGxvd2VkLCBucE9iamVjdCwgbnBTY3JpcHQsIHJlc3VsdCk7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oCShyZXZp
c2lvbiA2NjY5MikNCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0
YS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNTEsNyArNTEsNyBAQA0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZWxpZiBQTEFURk9STShBTkRST0lEKQorI2VsaWYgUExBVEZPUk0oQU5EUk9J
RCkgfHwgUExBVEZPUk0oUVQpCiAvLyBGSVhNRTogdGhlIHJpZ2h0IGd1YXJkIHNob3VsZCBiZSBF
TkFCTEUoUEFHRV9DQUNIRSkuIFJlcGxhY2Ugd2l0aCB0aGUgcmlnaHQgZ3VhcmQsIG9uY2UKIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTA2MSBpcyBmaXhlZC4K
IC8vCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gNjY2OTIpDQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQ0KQEAgLTYzLDkgKzYzLDIwIEBADQogI2luY2x1ZGUgIlhTU0F1ZGl0
b3IuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKKyNp
bmNsdWRlICJxdF9pbnN0YW5jZXY4LmgiCisjaW5jbHVkZSA8UVdpZGdldD4KKyNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBTY3JpcHRD
b250cm9sbGVyOjpjcmVhdGVXb3JsZCgpCit7CisgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6
Y3JlYXRlKCk7Cit9CisKKwogdm9pZCBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFk
aW5nKCkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZFRocmVhZGluZyA9IGZhbHNlOwpA
QCAtMzI2LDcgKzMzNyw0MSBAQA0KIFBhc3NTY3JpcHRJbnN0YW5jZSBTY3JpcHRDb250cm9sbGVy
OjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldChXaWRnZXQqIHdpZGdldCkKIHsKICAgICBB
U1NFUlQod2lkZ2V0KTsKKyNpZiBQTEFURk9STShRVCkKKyAgICBpZiAod2lkZ2V0LT5pc1BsdWdp
blZpZXcoKSkgeworICAgICAgICBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gc3RhdGljX2Nhc3Q8
UGx1Z2luVmlldyo+KHdpZGdldCk7CisgICAgICAgIC8vIENyZWF0ZSBzY3JpcHQgaW5zY2FuY2Ug
KHY4IG9iamVjdCkKKyAgICAgICAgUGFzc1NjcmlwdEluc3RhbmNlIGluc3RhbmNlID0gcGx1Z2lu
Vmlldy0+YmluZGluZ0luc3RhbmNlKCk7CisgICAgICAgIGlmICghaW5zdGFuY2UpCisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgLy8gR2V0IG5wb2JqZWN0CisgICAgICAgIE5QT2JqZWN0
KiBucE9iamVjdCA9IHN0YXRpY19jYXN0PE5QT2JqZWN0Kj4oaW5zdGFuY2UtPmluc3RhbmNlKCkt
PkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOwor
ICAgICAgICAvLyBUcmFjayB0aGUgcGx1Z2luIG9iamVjdC4gV2UndmUgYmVlbiBnaXZlbiBhIHJl
ZmVyZW5jZSB0byB0aGUgb2JqZWN0LgorICAgICAgICBtX3BsdWdpbk9iamVjdHMuc2V0KHdpZGdl
dCwgbnBPYmplY3QpOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQogCisgICAgUVdp
ZGdldCogcGxhdGZvcm1XaWRnZXQgPSB3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCk7CisgICAgaWYg
KCFwbGF0Zm9ybVdpZGdldCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGcmFtZSogYWN0aXZl
RnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKKyAgICBp
ZiAoIWFjdGl2ZUZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFY4UHJveHkqIGFjdGl2
ZVByb3h5ID0gYWN0aXZlRnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpOworICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQg
PSBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KGFjdGl2ZUZyYW1lKTsKKyAgICBpZiAodjhDb250
ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB2ODo6Q29udGV4dDo6U2Nv
cGUgc2NvcGUodjhDb250ZXh0KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJlc3VsdCA9
IAorICAgICAgICBWODo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OmdldFF0SW5zdGFuY2UocGxhdGZv
cm1XaWRnZXQsIHY4Q29udGV4dCwgIiIsIFFTY3JpcHRFbmdpbmU6OlF0T3duZXJzaGlwKS0+Z2V0
VjhPYmplY3QoKTsKKyAgICByZXR1cm4gVjhTY3JpcHRJbnN0YW5jZTo6Y3JlYXRlKHJlc3VsdCk7
CisKKyNlbHNlCisKICAgICBpZiAod2lkZ2V0LT5pc0ZyYW1lVmlldygpKQogICAgICAgICByZXR1
cm4gMDsKIApAQCAtMzY1LDYgKzQxMCw3IEBADQogICAgIG1fcGx1Z2luT2JqZWN0cy5zZXQod2lk
Z2V0LCBucE9iamVjdCk7CiAKICAgICByZXR1cm4gVjhTY3JpcHRJbnN0YW5jZTo6Y3JlYXRlKHdy
YXBwZXIpOworI2VuZGlmCiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYW51cFNjcmlw
dE9iamVjdHNGb3JQbHVnaW4oV2lkZ2V0KiBuYXRpdmVIYW5kbGUpCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiA2NjY5MikNCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTYxLDYg
KzYxLDggQEANCiAgICAgU2NyaXB0Q29udHJvbGxlcihGcmFtZSopOwogICAgIH5TY3JpcHRDb250
cm9sbGVyKCk7CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IGNyZWF0
ZVdvcmxkKCk7CisKICAgICAvLyBGSVhNRTogVjhQcm94eSBzaG91bGQgZWl0aGVyIGJlIGZvbGRl
ZCBpbnRvIFNjcmlwdENvbnRyb2xsZXIKICAgICAvLyBvciB0aGlzIGFjY2Vzc29yIHNob3VsZCBi
ZSBtYWRlIEpTUHJveHkqCiAgICAgVjhQcm94eSogcHJveHkoKSB7IHJldHVybiBtX3Byb3h5Lmdl
dCgpOyB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAJKHJldmlzaW9uIDY2Njky
KQ0KKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTYxLDEyICs2MSwxOCBAQA0KICAgICB9CiAKICAgICBleHBsaWNpdCBXZWJDb3JlU3RyaW5n
UmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCisjaWYgIVBMQVRGT1JNKFFUKQog
ICAgICAgICA6IG1fcGxhaW5TdHJpbmcoc3RyaW5nKQogICAgICAgICAsIG1fYXRvbWljU3RyaW5n
KHN0cmluZykKKyNlbmRpZgogICAgIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1fdGhyZWFk
SWQgPSBXVEY6OmN1cnJlbnRUaHJlYWQoKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAg
ICAgICBtX3BsYWluU3RyaW5nID0gc3RyaW5nOworICAgICAgICBtX2F0b21pY1N0cmluZyA9IHN0
cmluZzsKKyNlbmRpZgogICAgICAgICBBU1NFUlQoIXN0cmluZy5pc051bGwoKSk7CiAgICAgICAg
IHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9jYXRlZE1lbW9yeSgyICogc3RyaW5n
Lmxlbmd0aCgpKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCShyZXZpc2lvbiA2
NjY5MikNCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAkod29ya2luZyBjb3B5KQ0K
QEAgLTM2LDYgKzM2LDcgQEANCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIgLy8gZm9yIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luCiAjaW5jbHVkZSAiU2hhcmVkUGVyc2lzdGVudC5oIgogI2lu
Y2x1ZGUgIlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFj
cm9zLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgIlY4RE9NV3Jh
cHBlci5oIgogI2luY2x1ZGUgIlY4R0NDb250cm9sbGVyLmgiCkluZGV4OiBXZWJDb3JlL0NoYW5n
ZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NjY5MikN
CisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQ0KQEAgLTEsMyArMSwyNiBAQA0K
KzIwMTAtMDktMDIgIFZsYWQgQnVybGlrICA8dm9sb2RpbWlyLmJ1cmxpa0Bub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBWOCBw
b3J0IGZvciBRVCBwbGF0Zm9ybTogdjggYmluZGluZyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTE0NQorCisgICAgICAgIFY4IGJpbmRp
bmcgY2hhbmdlcyBmb3IgUVQKKworICAgICAgICAqIGNvbmZpZy5oOiBBZGRlZCBicmlkZ2UvbnBy
dW50aW1lX2ludGVybmFsLmggdG8gcHJldmVudCBjb21waWxlIGVycm9ycyBvZiAKKyAgICAgICAg
djggYmluZGluZ3MKKyAgICAgICAgKiBiaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcDoKKyAgICAg
ICAgKF9OUE5fRXZhbHVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZy
YW1lRGF0YS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRn
ZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJv
eHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNvdXJjZTo6V2ViQ29yZVN0
cmluZ1Jlc291cmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ucHJ1bnRpbWVfaW50ZXJuYWwu
aDoKKwogMjAxMC0wOS0wMiAgQWRhbSBMYW5nbGV5ICA8YWdsQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViQ29yZS9jb25maWcuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9uIDY2NjkyKQ0KKysrIFdlYkNv
cmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xODUsNiArMTg1LDEwIEBADQogCiAjZW5k
aWYgLyogUExBVEZPUk0oQ0hST01JVU0pICovCiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRl
IDxicmlkZ2UvbnBydW50aW1lX2ludGVybmFsLmg+CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKFdU
Rl9VU0VfVjgpCiAjZGVmaW5lIFdURl9VU0VfVjggMAogI2VuZGlmIC8qICFkZWZpbmVkKFdURl9V
U0VfVjgpICovCg==
</data>
<flag name="review"
          id="55463"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66571</attachid>
            <date>2010-09-03 17:27:05 -0700</date>
            <delta_ts>2010-09-03 18:01:50 -0700</delta_ts>
            <desc>Moved most of scriptcontroller changes to PlatformBridge: pluginScriptableObject(), pluginScriptableObjectInstance(), popupsAllowed()</desc>
            <filename>v8_bindings.patch</filename>
            <type>text/plain</type>
            <size>13160</size>
            <attacher name="Vlad">vladbph</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHANCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCShyZXZpc2lvbiA2NjczNSkNCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjUsMTMgKzI1LDEyIEBADQogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUg
Ik5QVjhPYmplY3QuaCIKIAotI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgiCiAjaW5jbHVkZSAi
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJPd25BcnJheVB0ci5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVjhHQ0NvbnRyb2xs
ZXIuaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0
YS5oCShyZXZpc2lvbiA2NjczNSkNCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhY2hl
ZEZyYW1lRGF0YS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNTEsNyArNTEsNyBAQA0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZWxpZiBQTEFURk9STShBTkRST0lEKQorI2VsaWYgUExBVEZP
Uk0oQU5EUk9JRCkgfHwgUExBVEZPUk0oUVQpCiAvLyBGSVhNRTogdGhlIHJpZ2h0IGd1YXJkIHNo
b3VsZCBiZSBFTkFCTEUoUEFHRV9DQUNIRSkuIFJlcGxhY2Ugd2l0aCB0aGUgcmlnaHQgZ3VhcmQs
IG9uY2UKIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTA2MSBp
cyBmaXhlZC4KIC8vCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIu
Y3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gNjY3MzUpDQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTY2LDYgKzY2LDEzIEBADQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKKyNpZiBQTEFURk9STShRVCkKK1Bhc3NSZWZQdHI8RE9NV3JhcHBlcldv
cmxkPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgpCit7CisgICAgcmV0dXJuIERPTVdy
YXBwZXJXb3JsZDo6Y3JlYXRlKCk7Cit9CisjZW5kaWYKKwogdm9pZCBTY3JpcHRDb250cm9sbGVy
Ojppbml0aWFsaXplVGhyZWFkaW5nKCkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZFRo
cmVhZGluZyA9IGZhbHNlOwpAQCAtMzI3LDYgKzMzNCwxMiBAQA0KIHsKICAgICBBU1NFUlQod2lk
Z2V0KTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIFBhc3NTY3JpcHRJbnN0YW5jZSBpbnN0YW5j
ZSA9IFBsYXRmb3JtQnJpZGdlOjpwbHVnaW5TY3JpcHRhYmxlT2JqZWN0SW5zdGFuY2Uod2lkZ2V0
KTsKKyAgICBpZiAoaW5zdGFuY2UpCisgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyNlbmRpZgor
CiAgICAgaWYgKHdpZGdldC0+aXNGcmFtZVZpZXcoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDY2NzM1
KQ0KKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtNjEsNiArNjEsOSBAQA0KICAgICBTY3JpcHRDb250cm9sbGVyKEZyYW1lKik7CiAg
ICAgflNjcmlwdENvbnRyb2xsZXIoKTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gY3JlYXRlV29ybGQoKTsKKyNlbmRpZgogICAgIC8v
IEZJWE1FOiBWOFByb3h5IHNob3VsZCBlaXRoZXIgYmUgZm9sZGVkIGludG8gU2NyaXB0Q29udHJv
bGxlcgogICAgIC8vIG9yIHRoaXMgYWNjZXNzb3Igc2hvdWxkIGJlIG1hZGUgSlNQcm94eSoKICAg
ICBWOFByb3h5KiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHkuZ2V0KCk7IH0KSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAkocmV2aXNpb24gNjY3MzUpDQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNTEsNyArNTEsNyBAQA0K
IGNsYXNzIFdlYkNvcmVTdHJpbmdSZXNvdXJjZSA6IHB1YmxpYyB2ODo6U3RyaW5nOjpFeHRlcm5h
bFN0cmluZ1Jlc291cmNlIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVz
b3VyY2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi0gICAgICAgIDogbV9wbGFpblN0cmluZyhzdHJp
bmcpCisgICAgICAgIDogbV9wbGFpblN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFdURjo6
U3RyaW5nICY+KHN0cmluZykpCiAgICAgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV90aHJl
YWRJZCA9IFdURjo6Y3VycmVudFRocmVhZCgpOwpAQCAtNjEsOCArNjEsOCBAQA0KICAgICB9CiAK
ICAgICBleHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBz
dHJpbmcpCi0gICAgICAgIDogbV9wbGFpblN0cmluZyhzdHJpbmcpCi0gICAgICAgICwgbV9hdG9t
aWNTdHJpbmcoc3RyaW5nKQorICAgICAgICA6IG1fcGxhaW5TdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBXVEY6OlN0cmluZyAmPihzdHJpbmcpKQorICAgICAgICAsIG1fYXRvbWljU3RyaW5n
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV1RGOjpTdHJpbmcgJj4oc3RyaW5nKSkKICAgICB7CiAj
aWZuZGVmIE5ERUJVRwogICAgICAgICBtX3RocmVhZElkID0gV1RGOjpjdXJyZW50VGhyZWFkKCk7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCShyZXZpc2lvbiA2NjczNSkNCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAkod29ya2luZyBjb3B5KQ0KQEAgLTM2LDYgKzM2LDcgQEAN
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIgLy8gZm9yIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luCiAjaW5jbHVkZSAiU2hhcmVkUGVyc2lzdGVudC5oIgogI2luY2x1ZGUgIlY4QWJzdHJhY3RF
dmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAi
VjhET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUg
IlY4R0NDb250cm9sbGVyLmgiCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NjczNSkNCisrKyBXZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQ0KQEAgLTEsMyArMSwyOCBAQA0KKzIwMTAtMDktMDMgIFZsYWQg
QnVybGlrICA8dm9sb2RpbWlyLmJ1cmxpa0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBWOCBwb3J0IGZvciBRVCBwbGF0Zm9y
bTogdjggYmluZGluZyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NTE0NQorCisgICAgICAgIFY4IGJpbmRpbmcgY2hhbmdlcyBmb3IgUVQu
CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaDogVXNlIFdlYktpdCdzIHBhZ2UgY2FjaGlu
ZyBmb3IgUVQKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDogRWxpbWluYXRlIGNvbmZsaWN0IGJldHdlZW4gUVN0
cmluZyBhbmQgV1RGOjpTdHJpbmcKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTdHJpbmdSZXNv
dXJjZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNlKToKKyAgICAgICAgKiBjb25maWcuaDpBZGRlZCBi
cmlkZ2UvbnBydW50aW1lX2ludGVybmFsLmggdG8gcHJldmVudCBjb21waWxlIGVycm9ycyBvZiAK
KyAgICAgICAgdjggYmluZGluZ3Mgb24gTWFlbW8gcGxhdGZvcm0KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOFByb3h5Lmg6IEFkZGRlZCBWOEJpbmRpbmdNYWNyb3MuaCB0byBtYWtlIGl0IGNvbXBp
bGUuCisgICAgICAgICogcGxhdGZvcm0vcXQvUGxhdGZvcm1CcmlkZ2UuaDogCisgICAgICAgICog
cGxhdGZvcm0vcXQvUGxhdGZvcm1CcmlkZ2UuY3BwOiBJbXBsZW1lbnQgcGx1Z2luU2NyaXB0YWJs
ZU9iamVjdCgpLCBwbHVnaW5TY3JpcHRhYmxlT2JqZWN0SW5zdGFuY2UoKQorICAgICAgICBhbmQg
cG9wdXBzQWxsb3dlZCgpCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3RyaW5nUmVzb3VyY2U6
OldlYkNvcmVTdHJpbmdSZXNvdXJjZSk6CisKIDIwMTAtMDktMDMgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWto
YXRza3kuCkluZGV4OiBXZWJDb3JlL2NvbmZpZy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9j
b25maWcuaAkocmV2aXNpb24gNjY3MzUpDQorKysgV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBj
b3B5KQ0KQEAgLTE4NSw2ICsxODUsMTAgQEANCiAKICNlbmRpZiAvKiBQTEFURk9STShDSFJPTUlV
TSkgKi8KIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPGJyaWRnZS9ucHJ1bnRpbWVfaW50
ZXJuYWwuaD4KKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoV1RGX1VTRV9WOCkKICNkZWZpbmUgV1RG
X1VTRV9WOCAwCiAjZW5kaWYgLyogIWRlZmluZWQoV1RGX1VTRV9WOCkgKi8KSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vcXQvcGxhdGZvcm1CcmlkZ2UuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9wbGF0Zm9ybUJyaWRnZS5jcHAJKHJldmlzaW9uIDApDQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9wbGF0Zm9ybUJyaWRnZS5jcHAJKHJldmlzaW9uIDApDQpAQCAtMCwwICsx
LDgyIEBADQorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVjdC4K
KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
QnJpZGdlLmgiCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIK
KyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVkZSAicXRf
aW5zdGFuY2V2OC5oIgorI2luY2x1ZGUgPFFXaWRnZXQ+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K05QT2JqZWN0KiBQbGF0Zm9ybUJyaWRnZTo6cGx1Z2luU2NyaXB0YWJsZU9iamVjdChXaWRnZXQq
IHdpZGdldCkKK3sKKyAgICBpZiAoIXdpZGdldCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBp
ZiAoIXdpZGdldC0+aXNQbHVnaW5WaWV3KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFBsdWdp
blZpZXcqIHBsdWdpblZpZXcgPSBzdGF0aWNfY2FzdDxQbHVnaW5WaWV3Kj4od2lkZ2V0KTsKKyAg
ICByZXR1cm4gcGx1Z2luVmlldy0+bnBPYmplY3QoKTsKK30KKworUGFzc1NjcmlwdEluc3RhbmNl
IFBsYXRmb3JtQnJpZGdlOjpwbHVnaW5TY3JpcHRhYmxlT2JqZWN0SW5zdGFuY2UoV2lkZ2V0KiB3
aWRnZXQpCit7CisgICAgaWYgKHdpZGdldC0+aXNQbHVnaW5WaWV3KCkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgLy8gUHJvY2VzcyBRVCBzcGVjaWZpYyBwbHVnaW5zCisgICAgUVdpZGdldCog
cGxhdGZvcm1XaWRnZXQgPSB3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCk7CisgICAgaWYgKCFwbGF0
Zm9ybVdpZGdldCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGcmFtZSogYWN0aXZlRnJhbWUg
PSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKKyAgICBpZiAoIWFj
dGl2ZUZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFY4UHJveHkqIGFjdGl2ZVByb3h5
ID0gYWN0aXZlRnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpOworICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSBWOFBy
b3h5OjptYWluV29ybGRDb250ZXh0KGFjdGl2ZUZyYW1lKTsKKyAgICBpZiAodjhDb250ZXh0Lklz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2Nv
cGUodjhDb250ZXh0KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJlc3VsdCA9IAorICAg
ICAgICBWODo6QmluZGluZ3M6OlF0SW5zdGFuY2U6OmdldFF0SW5zdGFuY2UocGxhdGZvcm1XaWRn
ZXQsIHY4Q29udGV4dCwgIiIsIFFTY3JpcHRFbmdpbmU6OlF0T3duZXJzaGlwKS0+Z2V0VjhPYmpl
Y3QoKTsKKyAgICByZXR1cm4gVjhTY3JpcHRJbnN0YW5jZTo6Y3JlYXRlKHJlc3VsdCk7Cit9CisK
KworYm9vbCBQbGF0Zm9ybUJyaWRnZTo6cG9wdXBzQWxsb3dlZChOUFAgbnBwKQoreworICAgIFBs
dWdpblZpZXcqIHZpZXc7CisgICAgaWYgKG5wcCAmJiBucHAtPm5kYXRhKQorICAgICAgICB2aWV3
ID0gc3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+KG5wcC0+bmRhdGEpOworICAgIGVsc2UKKyAgICAg
ICAgdmlldyA9IFBsdWdpblZpZXc6OmN1cnJlbnRQbHVnaW5WaWV3KCk7CisgICAgcmV0dXJuIHZp
ZXcgPyB2aWV3LT5hcmVQb3B1cHNBbGxvd2VkKCkgOiBmYWxzZTsKK30KKworfQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybUJyaWRnZS5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybUJyaWRnZS5oCShyZXZpc2lvbiAwKQ0KKysrIFdlYkNvcmUv
cGxhdGZvcm0vcXQvUGxhdGZvcm1CcmlkZ2UuaAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsMTA2
IEBADQorLyoKKyAqIENvcHlyaWdodCAyMDA5LCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJj
ZSBQcm9qZWN0CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUJyaWRnZV9oCisjZGVmaW5lIFBsYXRm
b3JtQnJpZGdlX2gKKworI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJucHJ1bnRpbWVfaW50
ZXJuYWwuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdElu
c3RhbmNlLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKy8vIFY4IGJpbmRpbmdzIHVz
ZSB0aGUgQVJSQVlTSVpFX1VOU0FGRSBtYWNyby4gVGhpcyBtYWNybyB3YXMgY29waWVkCisvLyBm
cm9tIGh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9jaHJvbWUvdHJ1bmsvc3JjL2Jhc2Uv
YmFzaWN0eXBlcy5oCisvLworLy8gQVJSQVlTSVpFX1VOU0FGRSBwZXJmb3JtcyBlc3NlbnRpYWxs
eSB0aGUgc2FtZSBjYWxjdWxhdGlvbiBhcyBhcnJheXNpemUsCisvLyBidXQgY2FuIGJlIHVzZWQg
b24gYW5vbnltb3VzIHR5cGVzIG9yIHR5cGVzIGRlZmluZWQgaW5zaWRlCisvLyBmdW5jdGlvbnMu
IEl0J3MgbGVzcyBzYWZlIHRoYW4gYXJyYXlzaXplIGFzIGl0IGFjY2VwdHMgc29tZQorLy8gKGFs
dGhvdWdoIG5vdCBhbGwpIHBvaW50ZXJzLiBUaGVyZWZvcmUsIHlvdSBzaG91bGQgdXNlIGFycmF5
c2l6ZQorLy8gd2hlbmV2ZXIgcG9zc2libGUuCisvLworLy8gVGhlIGV4cHJlc3Npb24gQVJSQVlT
SVpFX1VOU0FGRShhKSBpcyBhIGNvbXBpbGUtdGltZSBjb25zdGFudCBvZiB0eXBlCisvLyBzaXpl
X3QuCisvLworLy8gQVJSQVlTSVpFX1VOU0FGRSBjYXRjaGVzIGEgZmV3IHR5cGUgZXJyb3JzLiBJ
ZiB5b3Ugc2VlIGEgY29tcGlsZXIgZXJyb3IKKy8vCisvLyAgICJ3YXJuaW5nOiBkaXZpc2lvbiBi
eSB6ZXJvIGluIC4uLiIKKy8vCisvLyB3aGVuIHVzaW5nIEFSUkFZU0laRV9VTlNBRkUsIHlvdSBh
cmUgKHdyb25nZnVsbHkpIGdpdmluZyBpdCBhIHBvaW50ZXIuCisvLyBZb3Ugc2hvdWxkIG9ubHkg
dXNlIEFSUkFZU0laRV9VTlNBRkUgb24gc3RhdGljYWxseSBhbGxvY2F0ZWQgYXJyYXlzLgorLy8K
Ky8vIFRoZSBmb2xsb3dpbmcgY29tbWVudHMgYXJlIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRh
aWxzLCBhbmQgY2FuCisvLyBiZSBpZ25vcmVkIGJ5IHRoZSB1c2Vycy4KKy8vCisvLyBBUlJBWVNJ
WkVfVU5TQUZFKGFycikgd29ya3MgYnkgaW5zcGVjdGluZyBzaXplb2YoYXJyKSAodGhlICMgb2Yg
Ynl0ZXMgaW4KKy8vIHRoZSBhcnJheSkgYW5kIHNpemVvZigqKGFycikpICh0aGUgIyBvZiBieXRl
cyBpbiBvbmUgYXJyYXkKKy8vIGVsZW1lbnQpLiBJZiB0aGUgZm9ybWVyIGlzIGRpdmlzaWJsZSBi
eSB0aGUgbGF0dGVyLCBwZXJoYXBzIGFyciBpcworLy8gaW5kZWVkIGFuIGFycmF5LCBpbiB3aGlj
aCBjYXNlIHRoZSBkaXZpc2lvbiByZXN1bHQgaXMgdGhlICMgb2YKKy8vIGVsZW1lbnRzIGluIHRo
ZSBhcnJheS4gT3RoZXJ3aXNlLCBhcnIgY2Fubm90IHBvc3NpYmx5IGJlIGFuIGFycmF5LAorLy8g
YW5kIHdlIGdlbmVyYXRlIGEgY29tcGlsZXIgZXJyb3IgdG8gcHJldmVudCB0aGUgY29kZSBmcm9t
CisvLyBjb21waWxpbmcuCisvLworLy8gU2luY2UgdGhlIHNpemUgb2YgYm9vbCBpcyBpbXBsZW1l
bnRhdGlvbi1kZWZpbmVkLCB3ZSBuZWVkIHRvIGNhc3QKKy8vICEoc2l6ZW9mKGEpICYgc2l6ZW9m
KCooYSkpKSB0byBzaXplX3QgaW4gb3JkZXIgdG8gZW5zdXJlIHRoZSBmaW5hbAorLy8gcmVzdWx0
IGhhcyB0eXBlIHNpemVfdC4KKy8vCisvLyBUaGlzIG1hY3JvIGlzIG5vdCBwZXJmZWN0IGFzIGl0
IHdyb25nZnVsbHkgYWNjZXB0cyBjZXJ0YWluCisvLyBwb2ludGVycywgbmFtZWx5IHdoZXJlIHRo
ZSBwb2ludGVyIHNpemUgaXMgZGl2aXNpYmxlIGJ5IHRoZSBwb2ludGVlCisvLyBzaXplLiBTaW5j
ZSBhbGwgb3VyIGNvZGUgaGFzIHRvIGdvIHRocm91Z2ggYSAzMi1iaXQgY29tcGlsZXIsCisvLyB3
aGVyZSBhIHBvaW50ZXIgaXMgNCBieXRlcywgdGhpcyBtZWFucyBhbGwgcG9pbnRlcnMgdG8gYSB0
eXBlIHdob3NlCisvLyBzaXplIGlzIDMgb3IgZ3JlYXRlciB0aGFuIDQgd2lsbCBiZSAocmlnaHRl
b3VzbHkpIHJlamVjdGVkLgorCisjZGVmaW5lIEFSUkFZU0laRV9VTlNBRkUoYSkgXAorICAoKHNp
emVvZihhKSAvIHNpemVvZigqKGEpKSkgLyBcCisgICBzdGF0aWNfY2FzdDxzaXplX3Q+KCEoc2l6
ZW9mKGEpICUgc2l6ZW9mKCooYSkpKSkpCisKKworc3RydWN0IE5QT2JqZWN0OworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFdpZGdldDsKKworLy8gQW4gaW50ZXJmYWNlIHRvIHRoZSBl
bWJlZGRpbmcgbGF5ZXIsIHdoaWNoIGhhcyB0aGUgYWJpbGl0eSB0byBhbnN3ZXIKKy8vIHF1ZXN0
aW9ucyBhYm91dCB0aGUgc3lzdGVtIGFuZCBzbyBvbi4uLgorLy8gVGhpcyBpcyB2ZXJ5IHNpbWls
YXIgdG8gQ2hyb21pdW1CcmlkZ2UgYW5kIHRoZSB0d28gYXJlIGxpa2VseSB0byBjb252ZXJnZQor
Ly8gaW4gdGhlIGZ1dHVyZS4KKy8vCisvLyBUaGUgbWV0aG9kcyBpbiB0aGlzIGNsYXNzIGFsbCBu
ZWVkIHRvIHJlYWNoIGFjcm9zcyBhIEpOSSBsYXllciB0byB0aGUgSmF2YSBWTQorLy8gd2hlcmUg
dGhlIGVtYmVkZGVyIHJ1bnMuIFRoZSBKTkkgbWFjaGluZXJ5IGlzIGN1cnJlbnRseSBhbGwgaW4g
V2ViS2l0L2FuZHJvaWQKKy8vIGJ1dCB0aGUgbG9uZyB0ZXJtIHBsYW4gaXMgdG8gbW92ZSB0byB0
aGUgV2ViS2l0IEFQSSBhbmQgc2hhcmUgdGhlIGJyaWRnZSBhbmQgaXRzCisvLyBpbXBsZW1lbnRh
dGlvbiB3aXRoIENocm9taXVtLiBUaGUgSk5JIG1hY2hpbmVyeSB3aWxsIHRoZW4gbW92ZSBvdXRz
aWRlIG9mIFdlYktpdCwKKy8vIHNpbWlsYXJseSB0byBob3cgQ2hyb21pdW0ncyBJUEMgbGF5ZXIg
bGl2ZXMgb3V0c2lkZSBvZiBXZWJLaXQuCitjbGFzcyBQbGF0Zm9ybUJyaWRnZSB7CitwdWJsaWM6
CisgICAgLy8gUGx1Z2luCisgICAgc3RhdGljIE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRhYmxlT2Jq
ZWN0KFdpZGdldCopOworICAgIHN0YXRpYyBQYXNzU2NyaXB0SW5zdGFuY2UgcGx1Z2luU2NyaXB0
YWJsZU9iamVjdEluc3RhbmNlKFdpZGdldCopOworICAgIHN0YXRpYyBib29sIHBvcHVwc0FsbG93
ZWQoTlBQIG5wcCk7Cit9OworCit9CisjZW5kaWYgLy8gUGxhdGZvcm1CcmlkZ2VfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66574</attachid>
            <date>2010-09-03 18:01:50 -0700</date>
            <delta_ts>2010-09-07 08:54:58 -0700</delta_ts>
            <desc>Included plugins changes b/c of dependency </desc>
            <filename>v8_bindings_plugins.patch</filename>
            <type>text/plain</type>
            <size>22695</size>
            <attacher name="Vlad">vladbph</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHANCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCShyZXZpc2lvbiA2NjczNSkNCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjUsMTMgKzI1LDEyIEBADQogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUg
Ik5QVjhPYmplY3QuaCIKIAotI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgiCiAjaW5jbHVkZSAi
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJPd25BcnJheVB0ci5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVjhHQ0NvbnRyb2xs
ZXIuaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0
YS5oCShyZXZpc2lvbiA2NjczNSkNCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhY2hl
ZEZyYW1lRGF0YS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNTEsNyArNTEsNyBAQA0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZWxpZiBQTEFURk9STShBTkRST0lEKQorI2VsaWYgUExBVEZP
Uk0oQU5EUk9JRCkgfHwgUExBVEZPUk0oUVQpCiAvLyBGSVhNRTogdGhlIHJpZ2h0IGd1YXJkIHNo
b3VsZCBiZSBFTkFCTEUoUEFHRV9DQUNIRSkuIFJlcGxhY2Ugd2l0aCB0aGUgcmlnaHQgZ3VhcmQs
IG9uY2UKIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTA2MSBp
cyBmaXhlZC4KIC8vCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIu
Y3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gNjY3MzUpDQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTY2LDYgKzY2LDEzIEBADQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKKyNpZiBQTEFURk9STShRVCkKK1Bhc3NSZWZQdHI8RE9NV3JhcHBlcldv
cmxkPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgpCit7CisgICAgcmV0dXJuIERPTVdy
YXBwZXJXb3JsZDo6Y3JlYXRlKCk7Cit9CisjZW5kaWYKKwogdm9pZCBTY3JpcHRDb250cm9sbGVy
Ojppbml0aWFsaXplVGhyZWFkaW5nKCkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZFRo
cmVhZGluZyA9IGZhbHNlOwpAQCAtMzI3LDYgKzMzNCwxMiBAQA0KIHsKICAgICBBU1NFUlQod2lk
Z2V0KTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIFBhc3NTY3JpcHRJbnN0YW5jZSBpbnN0YW5j
ZSA9IFBsYXRmb3JtQnJpZGdlOjpwbHVnaW5TY3JpcHRhYmxlT2JqZWN0SW5zdGFuY2Uod2lkZ2V0
KTsKKyAgICBpZiAoaW5zdGFuY2UpCisgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyNlbmRpZgor
CiAgICAgaWYgKHdpZGdldC0+aXNGcmFtZVZpZXcoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDY2NzM1
KQ0KKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtNjEsNiArNjEsOSBAQA0KICAgICBTY3JpcHRDb250cm9sbGVyKEZyYW1lKik7CiAg
ICAgflNjcmlwdENvbnRyb2xsZXIoKTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gY3JlYXRlV29ybGQoKTsKKyNlbmRpZgogICAgIC8v
IEZJWE1FOiBWOFByb3h5IHNob3VsZCBlaXRoZXIgYmUgZm9sZGVkIGludG8gU2NyaXB0Q29udHJv
bGxlcgogICAgIC8vIG9yIHRoaXMgYWNjZXNzb3Igc2hvdWxkIGJlIG1hZGUgSlNQcm94eSoKICAg
ICBWOFByb3h5KiBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHkuZ2V0KCk7IH0KSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAkocmV2aXNpb24gNjY3MzUpDQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNTEsNyArNTEsNyBAQA0K
IGNsYXNzIFdlYkNvcmVTdHJpbmdSZXNvdXJjZSA6IHB1YmxpYyB2ODo6U3RyaW5nOjpFeHRlcm5h
bFN0cmluZ1Jlc291cmNlIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVz
b3VyY2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi0gICAgICAgIDogbV9wbGFpblN0cmluZyhzdHJp
bmcpCisgICAgICAgIDogbV9wbGFpblN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFdURjo6
U3RyaW5nICY+KHN0cmluZykpCiAgICAgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV90aHJl
YWRJZCA9IFdURjo6Y3VycmVudFRocmVhZCgpOwpAQCAtNjEsOCArNjEsOCBAQA0KICAgICB9CiAK
ICAgICBleHBsaWNpdCBXZWJDb3JlU3RyaW5nUmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBz
dHJpbmcpCi0gICAgICAgIDogbV9wbGFpblN0cmluZyhzdHJpbmcpCi0gICAgICAgICwgbV9hdG9t
aWNTdHJpbmcoc3RyaW5nKQorICAgICAgICA6IG1fcGxhaW5TdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBXVEY6OlN0cmluZyAmPihzdHJpbmcpKQorICAgICAgICAsIG1fYXRvbWljU3RyaW5n
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV1RGOjpTdHJpbmcgJj4oc3RyaW5nKSkKICAgICB7CiAj
aWZuZGVmIE5ERUJVRwogICAgICAgICBtX3RocmVhZElkID0gV1RGOjpjdXJyZW50VGhyZWFkKCk7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCShyZXZpc2lvbiA2NjczNSkNCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAkod29ya2luZyBjb3B5KQ0KQEAgLTM2LDYgKzM2LDcgQEAN
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIgLy8gZm9yIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luCiAjaW5jbHVkZSAiU2hhcmVkUGVyc2lzdGVudC5oIgogI2luY2x1ZGUgIlY4QWJzdHJhY3RF
dmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAi
VjhET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUg
IlY4R0NDb250cm9sbGVyLmgiCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NjczNSkNCisrKyBXZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQ0KQEAgLTEsMyArMSw0NiBAQA0KKzIwMTAtMDktMDMgIFZsYWQg
QnVybGlrICA8dm9sb2RpbWlyLmJ1cmxpa0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBWOCBwb3J0IGZvciBRVCBwbGF0Zm9y
bTogdjggYmluZGluZyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NTE0NQorCisgICAgICAgIFtRdF0gVjggcG9ydCBmb3IgUVQgcGxhdGZv
cm06IHY4IGJpbmRpbmcgYW5kIHBsdWdpbnMgY2hhbmdlcworCisgICAgICAgICogYmluZGluZ3Mv
djgvTlBWOE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVkRnJh
bWVEYXRhLmg6IFVzZSBXZWJLaXQncyBwYWdlIGNhY2hpbmcgZm9yIFFUCisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
b250cm9sbGVyOjpjcmVhdGVXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHA6IEVsaW1pbmF0ZSBjb25mbGljdCBiZXR3ZWVuIFFTdHJpbmcgYW5kIFdURjo6U3RyaW5nCisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3RyaW5nUmVzb3VyY2U6OldlYkNvcmVTdHJpbmdSZXNv
dXJjZSk6CisgICAgICAgICogY29uZmlnLmg6QWRkZWQgYnJpZGdlL25wcnVudGltZV9pbnRlcm5h
bC5oIHRvIHByZXZlbnQgY29tcGlsZSBlcnJvcnMgb2YgCisgICAgICAgIHY4IGJpbmRpbmdzIG9u
IE1hZW1vIHBsYXRmb3JtCisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5oOiBBZGRkZWQg
VjhCaW5kaW5nTWFjcm9zLmggdG8gbWFrZSBpdCBjb21waWxlLgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L1BsYXRmb3JtQnJpZGdlLmg6IAorICAgICAgICAqIHBsYXRmb3JtL3F0L1BsYXRmb3JtQnJp
ZGdlLmNwcDogSW1wbGVtZW50IHBsdWdpblNjcmlwdGFibGVPYmplY3QoKSwgcGx1Z2luU2NyaXB0
YWJsZU9iamVjdEluc3RhbmNlKCkKKyAgICAgICAgYW5kIHBvcHVwc0FsbG93ZWQoKQorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNlOjpXZWJDb3JlU3RyaW5nUmVzb3VyY2Up
OgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5WaWV3OjpucE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpiaW5k
aW5nSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cHJpdmF0ZUJyb3dz
aW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAg
ICAgKiBwbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpkaXNwYXRjaE5Q
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybVN0YXJ0KToKKyAgICAg
ICAgKiBwbHVnaW5zL3N5bWJpYW4vUGx1Z2luVmlld1N5bWJpYW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luVmlldzo6ZGlzcGF0Y2hOUEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpblZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQpOgorICAgICAgICAqIHBsdWdpbnMvd2luL1Bs
dWdpblZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6ZGlzcGF0Y2hO
UEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlTW91c2VFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzZXROUFdpbmRvd1JlY3QpOgorCiAyMDEwLTA5
LTAzICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpJbmRleDogV2ViQ29yZS9jb25maWcuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9uIDY2NzM1KQ0KKysrIFdlYkNv
cmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xODUsNiArMTg1LDEwIEBADQogCiAjZW5k
aWYgLyogUExBVEZPUk0oQ0hST01JVU0pICovCiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRl
IDxicmlkZ2UvbnBydW50aW1lX2ludGVybmFsLmg+CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKFdU
Rl9VU0VfVjgpCiAjZGVmaW5lIFdURl9VU0VfVjggMAogI2VuZGlmIC8qICFkZWZpbmVkKFdURl9V
U0VfVjgpICovCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtQnJpZGdlLmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1CcmlkZ2UuY3BwCShy
ZXZpc2lvbiAwKQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1CcmlkZ2UuY3BwCShy
ZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw4MiBAQA0KKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IHByb2plY3QuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNp
bmNsdWRlICJQbHVnaW5WaWV3LmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIldp
ZGdldC5oIgorI2luY2x1ZGUgInF0X2luc3RhbmNldjguaCIKKyNpbmNsdWRlIDxRV2lkZ2V0Pgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitOUE9iamVjdCogUGxhdGZvcm1CcmlkZ2U6OnBsdWdpblNj
cmlwdGFibGVPYmplY3QoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgaWYgKCF3aWRnZXQpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgaWYgKCF3aWRnZXQtPmlzUGx1Z2luVmlldygpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gc3RhdGljX2Nhc3Q8UGx1
Z2luVmlldyo+KHdpZGdldCk7CisgICAgcmV0dXJuIHBsdWdpblZpZXctPm5wT2JqZWN0KCk7Cit9
CisKK1Bhc3NTY3JpcHRJbnN0YW5jZSBQbGF0Zm9ybUJyaWRnZTo6cGx1Z2luU2NyaXB0YWJsZU9i
amVjdEluc3RhbmNlKFdpZGdldCogd2lkZ2V0KQoreworICAgIGlmICh3aWRnZXQtPmlzUGx1Z2lu
VmlldygpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFByb2Nlc3MgUVQgc3BlY2lmaWMg
cGx1Z2lucworICAgIFFXaWRnZXQqIHBsYXRmb3JtV2lkZ2V0ID0gd2lkZ2V0LT5wbGF0Zm9ybVdp
ZGdldCgpOworICAgIGlmICghcGxhdGZvcm1XaWRnZXQpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRD
b250ZXh0KCk7CisgICAgaWYgKCFhY3RpdmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBWOFByb3h5KiBhY3RpdmVQcm94eSA9IGFjdGl2ZUZyYW1lLT5zY3JpcHQoKS0+cHJveHkoKTsK
KyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChhY3RpdmVGcmFtZSk7
CisgICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
djg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiByZXN1bHQgPSAKKyAgICAgICAgVjg6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpnZXRR
dEluc3RhbmNlKHBsYXRmb3JtV2lkZ2V0LCB2OENvbnRleHQsICIiLCBRU2NyaXB0RW5naW5lOjpR
dE93bmVyc2hpcCktPmdldFY4T2JqZWN0KCk7CisgICAgcmV0dXJuIFY4U2NyaXB0SW5zdGFuY2U6
OmNyZWF0ZShyZXN1bHQpOworfQorCisKK2Jvb2wgUGxhdGZvcm1CcmlkZ2U6OnBvcHVwc0FsbG93
ZWQoTlBQIG5wcCkKK3sKKyAgICBQbHVnaW5WaWV3KiB2aWV3OworICAgIGlmIChucHAgJiYgbnBw
LT5uZGF0YSkKKyAgICAgICAgdmlldyA9IHN0YXRpY19jYXN0PFBsdWdpblZpZXcqPihucHAtPm5k
YXRhKTsKKyAgICBlbHNlCisgICAgICAgIHZpZXcgPSBQbHVnaW5WaWV3OjpjdXJyZW50UGx1Z2lu
VmlldygpOworICAgIHJldHVybiB2aWV3ID8gdmlldy0+YXJlUG9wdXBzQWxsb3dlZCgpIDogZmFs
c2U7Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1CcmlkZ2UuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1CcmlkZ2UuaAkocmV2
aXNpb24gMCkNCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtQnJpZGdlLmgJKHJldmlz
aW9uIDApDQpAQCAtMCwwICsxLDEwNiBAQA0KKy8qCisgKiBDb3B5cmlnaHQgMjAwOSwgMjAxMCwg
VGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1C
cmlkZ2VfaAorI2RlZmluZSBQbGF0Zm9ybUJyaWRnZV9oCisKKyNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRJbnN0YW5jZS5oIgor
I2luY2x1ZGUgIm5wcnVudGltZV9pbnRlcm5hbC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCisvLyBWOCBiaW5kaW5ncyB1c2UgdGhlIEFSUkFZU0laRV9VTlNBRkUgbWFjcm8uIFRoaXMg
bWFjcm8gd2FzIGNvcGllZAorLy8gZnJvbSBodHRwOi8vc3JjLmNocm9taXVtLm9yZy92aWV3dmMv
Y2hyb21lL3RydW5rL3NyYy9iYXNlL2Jhc2ljdHlwZXMuaAorLy8KKy8vIEFSUkFZU0laRV9VTlNB
RkUgcGVyZm9ybXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgY2FsY3VsYXRpb24gYXMgYXJyYXlzaXpl
LAorLy8gYnV0IGNhbiBiZSB1c2VkIG9uIGFub255bW91cyB0eXBlcyBvciB0eXBlcyBkZWZpbmVk
IGluc2lkZQorLy8gZnVuY3Rpb25zLiBJdCdzIGxlc3Mgc2FmZSB0aGFuIGFycmF5c2l6ZSBhcyBp
dCBhY2NlcHRzIHNvbWUKKy8vIChhbHRob3VnaCBub3QgYWxsKSBwb2ludGVycy4gVGhlcmVmb3Jl
LCB5b3Ugc2hvdWxkIHVzZSBhcnJheXNpemUKKy8vIHdoZW5ldmVyIHBvc3NpYmxlLgorLy8KKy8v
IFRoZSBleHByZXNzaW9uIEFSUkFZU0laRV9VTlNBRkUoYSkgaXMgYSBjb21waWxlLXRpbWUgY29u
c3RhbnQgb2YgdHlwZQorLy8gc2l6ZV90LgorLy8KKy8vIEFSUkFZU0laRV9VTlNBRkUgY2F0Y2hl
cyBhIGZldyB0eXBlIGVycm9ycy4gSWYgeW91IHNlZSBhIGNvbXBpbGVyIGVycm9yCisvLworLy8g
ICAid2FybmluZzogZGl2aXNpb24gYnkgemVybyBpbiAuLi4iCisvLworLy8gd2hlbiB1c2luZyBB
UlJBWVNJWkVfVU5TQUZFLCB5b3UgYXJlICh3cm9uZ2Z1bGx5KSBnaXZpbmcgaXQgYSBwb2ludGVy
LgorLy8gWW91IHNob3VsZCBvbmx5IHVzZSBBUlJBWVNJWkVfVU5TQUZFIG9uIHN0YXRpY2FsbHkg
YWxsb2NhdGVkIGFycmF5cy4KKy8vCisvLyBUaGUgZm9sbG93aW5nIGNvbW1lbnRzIGFyZSBvbiB0
aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgYW5kIGNhbgorLy8gYmUgaWdub3JlZCBieSB0aGUg
dXNlcnMuCisvLworLy8gQVJSQVlTSVpFX1VOU0FGRShhcnIpIHdvcmtzIGJ5IGluc3BlY3Rpbmcg
c2l6ZW9mKGFycikgKHRoZSAjIG9mIGJ5dGVzIGluCisvLyB0aGUgYXJyYXkpIGFuZCBzaXplb2Yo
KihhcnIpKSAodGhlICMgb2YgYnl0ZXMgaW4gb25lIGFycmF5CisvLyBlbGVtZW50KS4gSWYgdGhl
IGZvcm1lciBpcyBkaXZpc2libGUgYnkgdGhlIGxhdHRlciwgcGVyaGFwcyBhcnIgaXMKKy8vIGlu
ZGVlZCBhbiBhcnJheSwgaW4gd2hpY2ggY2FzZSB0aGUgZGl2aXNpb24gcmVzdWx0IGlzIHRoZSAj
IG9mCisvLyBlbGVtZW50cyBpbiB0aGUgYXJyYXkuIE90aGVyd2lzZSwgYXJyIGNhbm5vdCBwb3Nz
aWJseSBiZSBhbiBhcnJheSwKKy8vIGFuZCB3ZSBnZW5lcmF0ZSBhIGNvbXBpbGVyIGVycm9yIHRv
IHByZXZlbnQgdGhlIGNvZGUgZnJvbQorLy8gY29tcGlsaW5nLgorLy8KKy8vIFNpbmNlIHRoZSBz
aXplIG9mIGJvb2wgaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZCwgd2UgbmVlZCB0byBjYXN0Cisv
LyAhKHNpemVvZihhKSAmIHNpemVvZigqKGEpKSkgdG8gc2l6ZV90IGluIG9yZGVyIHRvIGVuc3Vy
ZSB0aGUgZmluYWwKKy8vIHJlc3VsdCBoYXMgdHlwZSBzaXplX3QuCisvLworLy8gVGhpcyBtYWNy
byBpcyBub3QgcGVyZmVjdCBhcyBpdCB3cm9uZ2Z1bGx5IGFjY2VwdHMgY2VydGFpbgorLy8gcG9p
bnRlcnMsIG5hbWVseSB3aGVyZSB0aGUgcG9pbnRlciBzaXplIGlzIGRpdmlzaWJsZSBieSB0aGUg
cG9pbnRlZQorLy8gc2l6ZS4gU2luY2UgYWxsIG91ciBjb2RlIGhhcyB0byBnbyB0aHJvdWdoIGEg
MzItYml0IGNvbXBpbGVyLAorLy8gd2hlcmUgYSBwb2ludGVyIGlzIDQgYnl0ZXMsIHRoaXMgbWVh
bnMgYWxsIHBvaW50ZXJzIHRvIGEgdHlwZSB3aG9zZQorLy8gc2l6ZSBpcyAzIG9yIGdyZWF0ZXIg
dGhhbiA0IHdpbGwgYmUgKHJpZ2h0ZW91c2x5KSByZWplY3RlZC4KKworI2RlZmluZSBBUlJBWVNJ
WkVfVU5TQUZFKGEpIFwKKyAgICAoKHNpemVvZihhKSAvIHNpemVvZigqKGEpKSkgLyBcCisgICAg
c3RhdGljX2Nhc3Q8c2l6ZV90PighKHNpemVvZihhKSAlIHNpemVvZigqKGEpKSkpKQorCisKK3N0
cnVjdCBOUE9iamVjdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXaWRnZXQ7CisK
Ky8vIEFuIGludGVyZmFjZSB0byB0aGUgZW1iZWRkaW5nIGxheWVyLCB3aGljaCBoYXMgdGhlIGFi
aWxpdHkgdG8gYW5zd2VyCisvLyBxdWVzdGlvbnMgYWJvdXQgdGhlIHN5c3RlbSBhbmQgc28gb24u
Li4KKy8vIFRoaXMgaXMgdmVyeSBzaW1pbGFyIHRvIENocm9taXVtQnJpZGdlIGFuZCB0aGUgdHdv
IGFyZSBsaWtlbHkgdG8gY29udmVyZ2UKKy8vIGluIHRoZSBmdXR1cmUuCisvLworLy8gVGhlIG1l
dGhvZHMgaW4gdGhpcyBjbGFzcyBhbGwgbmVlZCB0byByZWFjaCBhY3Jvc3MgYSBKTkkgbGF5ZXIg
dG8gdGhlIEphdmEgVk0KKy8vIHdoZXJlIHRoZSBlbWJlZGRlciBydW5zLiBUaGUgSk5JIG1hY2hp
bmVyeSBpcyBjdXJyZW50bHkgYWxsIGluIFdlYktpdC9hbmRyb2lkCisvLyBidXQgdGhlIGxvbmcg
dGVybSBwbGFuIGlzIHRvIG1vdmUgdG8gdGhlIFdlYktpdCBBUEkgYW5kIHNoYXJlIHRoZSBicmlk
Z2UgYW5kIGl0cworLy8gaW1wbGVtZW50YXRpb24gd2l0aCBDaHJvbWl1bS4gVGhlIEpOSSBtYWNo
aW5lcnkgd2lsbCB0aGVuIG1vdmUgb3V0c2lkZSBvZiBXZWJLaXQsCisvLyBzaW1pbGFybHkgdG8g
aG93IENocm9taXVtJ3MgSVBDIGxheWVyIGxpdmVzIG91dHNpZGUgb2YgV2ViS2l0LgorY2xhc3Mg
UGxhdGZvcm1CcmlkZ2UgeworcHVibGljOgorICAgIC8vIFBsdWdpbgorICAgIHN0YXRpYyBOUE9i
amVjdCogcGx1Z2luU2NyaXB0YWJsZU9iamVjdChXaWRnZXQqKTsKKyAgICBzdGF0aWMgUGFzc1Nj
cmlwdEluc3RhbmNlIHBsdWdpblNjcmlwdGFibGVPYmplY3RJbnN0YW5jZShXaWRnZXQqKTsKKyAg
ICBzdGF0aWMgYm9vbCBwb3B1cHNBbGxvd2VkKE5QUCBucHApOworfTsKKworfQorI2VuZGlmIC8v
IFBsYXRmb3JtQnJpZGdlX2gKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24g
NjY3MzUpDQorKysgV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
DQpAQCAtNzI4LDI0ICs3MjgsMjEgQEANCiAgICAgICAgIG1fcmVxdWVzdFRpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKIH0KIAotI2lmIFVTRShKU0MpCi1QYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6Oklu
c3RhbmNlPiBQbHVnaW5WaWV3OjpiaW5kaW5nSW5zdGFuY2UoKQorCitOUE9iamVjdCogUGx1Z2lu
Vmlldzo6bnBPYmplY3QoKQogewotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAg
IE5QT2JqZWN0KiBvYmplY3QgPSAwOwotCi0gICAgaWYgKCFtX2lzU3RhcnRlZCB8fCAhbV9wbHVn
aW4gfHwgIW1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KICAgICAvLyBPbiBXaW5kb3dzLCBjYWxsaW5nIEphdmEncyBOUE5fR2V0VmFsdWUgY2Fu
IGFsbG93IHRoZSBtZXNzYWdlIGxvb3AgdG8KICAgICAvLyBydW4sIGFsbG93aW5nIGxvYWRpbmcg
dG8gdGFrZSBwbGFjZSBvciBKYXZhU2NyaXB0IHRvIHJ1bi4gUHJvdGVjdCB0aGUKICAgICAvLyBQ
bHVnaW5WaWV3IGZyb20gZGVzdHJ1Y3Rpb24uIDxyZGFyOi8vcHJvYmxlbS82OTc4ODA0PgogICAg
IFJlZlB0cjxQbHVnaW5WaWV3PiBwcm90ZWN0KHRoaXMpOworICAgIE5QT2JqZWN0KiBvYmplY3Qg
PSAwOwogCiAgICAgTlBFcnJvciBucEVycjsKICAgICB7CiAgICAgICAgIFBsdWdpblZpZXc6OnNl
dEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOworI2lmIFVTRShKU0MpCiAgICAgICAgIEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKKyNlbmRpZgogICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAgICAgICBucEVy
ciA9IG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZShtX2luc3RhbmNlLCBOUFBWcGx1
Z2luU2NyaXB0YWJsZU5QT2JqZWN0LCAmb2JqZWN0KTsKICAgICAgICAgc2V0Q2FsbGluZ1BsdWdp
bihmYWxzZSk7CkBAIC03NjEsMTQgKzc1OCwyNiBAQA0KIAogICAgIGlmIChucEVyciAhPSBOUEVS
Ul9OT19FUlJPUiB8fCAhb2JqZWN0KQogICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gb2Jq
ZWN0OworfQogCisjaWYgVVNFKEpTQykKK1Bhc3NTY3JpcHRJbnN0YW5jZSBQbHVnaW5WaWV3Ojpi
aW5kaW5nSW5zdGFuY2UoKSAKK3sKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAg
ICBpZiAoIW1faXNTdGFydGVkIHx8ICFtX3BsdWdpbiB8fCAhbV9wbHVnaW4tPnBsdWdpbkZ1bmNz
KCktPmdldHZhbHVlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIE5QT2JqZWN0KiBvYmplY3Qg
PSBucE9iamVjdCgpOworCiAgICAgUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IHJv
b3QgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS0+Y3JlYXRlUm9vdE9iamVjdCh0aGlzKTsKICAg
ICBSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IGluc3RhbmNlID0gSlNDOjpCaW5kaW5n
czo6Q0luc3RhbmNlOjpjcmVhdGUob2JqZWN0LCByb290LnJlbGVhc2UoKSk7CiAKICAgICBfTlBO
X1JlbGVhc2VPYmplY3Qob2JqZWN0KTsKIAogICAgIHJldHVybiBpbnN0YW5jZS5yZWxlYXNlKCk7
Ci0jZWxzZQorCisjZWxzZSAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICByZXR1
cm4gMDsKICNlbmRpZgogfQpAQCAtMTM4Niw3ICsxMzk1LDkgQEANCiAgICAgICAgIHJldHVybjsK
IAogICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOworI2lmIFVTRShK
U0MpCiAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNDOjpTaWxl
bmNlQXNzZXJ0aW9uc09ubHkpOworI2VuZGlmCiAgICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsK
ICAgICBOUEJvb2wgdmFsdWUgPSBwcml2YXRlQnJvd3NpbmdFbmFibGVkOwogICAgIHNldFZhbHVl
KG1faW5zdGFuY2UsIE5QTlZwcml2YXRlTW9kZUJvb2wsICZ2YWx1ZSk7CkluZGV4OiBXZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luVmlldy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXcuaAkocmV2aXNpb24gNjY3MzUpDQorKysgV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZp
ZXcuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMzLDYgKzMzLDcgQEANCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlNjcmlwdEluc3RhbmNlLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
MTM5LDggKzE0MCw5IEBADQogICAgICAgICB2b2lkIHNldE5QV2luZG93UmVjdChjb25zdCBJbnRS
ZWN0Jik7CiAgICAgICAgIHN0YXRpYyBQbHVnaW5WaWV3KiBjdXJyZW50UGx1Z2luVmlldygpOwog
CisgICAgICAgIE5QT2JqZWN0KiBucE9iamVjdCgpOwogI2lmIFVTRShKU0MpCi0gICAgICAgIFBh
c3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IGJpbmRpbmdJbnN0YW5jZSgpOworICAg
ICAgICBQYXNzU2NyaXB0SW5zdGFuY2UgYmluZGluZ0luc3RhbmNlKCk7CiAjZW5kaWYKIAogICAg
ICAgICBQbHVnaW5TdGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KSW5k
ZXg6IFdlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAJKHJldmlzaW9uIDY2NzM1KQ0KKysr
IFdlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAt
NDQsNyArNDQsOSBAQA0KICNpbmNsdWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgogI2luY2x1ZGUg
Ikhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2lmIFVTRShKU0MpCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCisjZW5kaWYKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAj
aW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC03
NSw2ICs3Nyw3IEBADQogI2RlZmluZSBTdGF0dXMgaW50CiAjaW5jbHVkZSA8WDExL2V4dGVuc2lv
bnMvWHJlbmRlci5oPgogI2VuZGlmCisjaWYgVVNFKEpTQykKICNpbmNsdWRlIDxydW50aW1lL0pT
TG9jay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogCkBAIC04Myw2ICs4Niw3IEBA
DQogdXNpbmcgSlNDOjpKU0xvY2s7CiB1c2luZyBKU0M6OkpTT2JqZWN0OwogdXNpbmcgSlNDOjpV
U3RyaW5nOworI2VuZGlmCiAKIHVzaW5nIHN0ZDo6bWluOwogCkBAIC0zMjksNyArMzMzLDcgQEAN
CiAgICAgZGlzcGF0Y2hOUEV2ZW50KHhldmVudCk7CiAKICAgICBpZiAoc3luY1gpCi0gICAgICAg
IFhTeW5jKG1fcGx1Z2luRGlzcGxheSwgRmFsc2UpOyAvLyBzeW5jIGNoYW5nZXMgYnkgcGx1Z2lu
CisgICAgICAgIFhTeW5jKG1fcGx1Z2luRGlzcGxheSwgZmFsc2UpOyAvLyBzeW5jIGNoYW5nZXMg
YnkgcGx1Z2luCiAKICAgICBwYWludGVyLT5kcmF3UGl4bWFwKFFQb2ludChmcmFtZVJlY3QoKS54
KCkgKyBleHBvc2VkUmVjdC54KCksIGZyYW1lUmVjdCgpLnkoKSArIGV4cG9zZWRSZWN0LnkoKSks
IHF0RHJhd2FibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBleHBvc2VkUmVjdCk7CkBAIC0z
NDIsNyArMzQ2LDkgQEANCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFBsdWdpblZpZXc6
OnNldEN1cnJlbnRQbHVnaW5WaWV3KHRoaXMpOworI2lmIFVTRShKU0MpCiAgICAgSlNDOjpKU0xv
Y2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkp
OworI2VuZGlmCiAgICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsKICAgICBib29sIGFjY2VwdGVk
ID0gbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmV2ZW50KG1faW5zdGFuY2UsICZldmVudCk7CiAg
ICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxzZSk7CkBAIC02MjksNyArNjM1LDkgQEANCiAgICAgfQog
CiAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7CisjaWYgVVNFKEpT
QykKICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0M6OlNpbGVu
Y2VBc3NlcnRpb25zT25seSk7CisjZW5kaWYKICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwog
ICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5zZXR3aW5kb3cobV9pbnN0YW5jZSwgJm1fbnBX
aW5kb3cpOwogICAgIHNldENhbGxpbmdQbHVnaW4oZmFsc2UpOwpAQCAtODQ1LDcgKzg1Myw5IEBA
DQogCiAgICAgaWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZSkgewogICAgICAg
ICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKKyNpZiBVU0UoSlNDKQog
ICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0M6OlNpbGVu
Y2VBc3NlcnRpb25zT25seSk7CisjZW5kaWYKICAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVl
KTsKICAgICAgICAgbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmdldHZhbHVlKG1faW5zdGFuY2Us
IE5QUFZwbHVnaW5OZWVkc1hFbWJlZCwgJm1fbmVlZHNYRW1iZWQpOwogICAgICAgICBzZXRDYWxs
aW5nUGx1Z2luKGZhbHNlKTsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9zeW1iaWFuL1BsdWdpblZp
ZXdTeW1iaWFuLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGx1Z2lucy9zeW1iaWFuL1Bs
dWdpblZpZXdTeW1iaWFuLmNwcAkocmV2aXNpb24gNjY3MzUpDQorKysgV2ViQ29yZS9wbHVnaW5z
L3N5bWJpYW4vUGx1Z2luVmlld1N5bWJpYW4uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzQsNyAr
MzQsOSBAQA0KICNpbmNsdWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgogI2luY2x1ZGUgIkhvc3RX
aW5kb3cuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2lmIFVTRShKU0MpCiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCisjZW5kaWYKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVk
ZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC02MCw2ICs2
Miw3IEBADQogI2luY2x1ZGUgPFFSZWdpb24+CiAjaW5jbHVkZSA8UVZlY3Rvcj4KICNpbmNsdWRl
IDxRV2lkZ2V0PgorI2lmIFVTRShKU0MpCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KIApAQCAtNjgsNiArNzEsNyBAQA0KIHVzaW5nIEpT
Qzo6SlNMb2NrOwogdXNpbmcgSlNDOjpKU09iamVjdDsKIHVzaW5nIEpTQzo6VVN0cmluZzsKKyNl
bmRpZgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0xNjUsNyArMTY5LDkgQEANCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3
KHRoaXMpOworI2lmIFVTRShKU0MpCiAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9w
QWxsTG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworI2VuZGlmCiAKICAgICBzZXRD
YWxsaW5nUGx1Z2luKHRydWUpOwogICAgIGJvb2wgYWNjZXB0ZWQgPSBtX3BsdWdpbi0+cGx1Z2lu
RnVuY3MoKS0+ZXZlbnQobV9pbnN0YW5jZSwgJmV2ZW50KTsKQEAgLTI5MSw3ICsyOTcsOSBAQA0K
ICAgICBtX25wV2luZG93LmhlaWdodCA9IG1fd2luZG93UmVjdC5oZWlnaHQoKTsKICAgICAKICAg
ICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKKyNpZiBVU0UoSlNDKQog
ICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFz
c2VydGlvbnNPbmx5KTsKKyNlbmRpZgogICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAg
bV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPnNldHdpbmRvdyhtX2luc3RhbmNlLCAmbV9ucFdpbmRv
dyk7CiAgICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxzZSk7CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMv
d2luL1BsdWdpblZpZXdXaW4uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbHVnaW5zL3dp
bi9QbHVnaW5WaWV3V2luLmNwcAkocmV2aXNpb24gNjY3MzUpDQorKysgV2ViQ29yZS9wbHVnaW5z
L3dpbi9QbHVnaW5WaWV3V2luLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTQ3LDggKzQ3LDYgQEAN
CiAjaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93Lmgi
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRl
ICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgpAQCAtNjMsMTEgKzYx
LDE3IEBADQogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIldlYkNvcmVJbnN0YW5jZUhhbmRsZS5oIgorI2lmIFVTRShKU0MpCisj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNs
dWRlICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRl
ICJydW50aW1lX3Jvb3QuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNWYWx1ZS5oPgorI2VsaWYgVVNFKFY4KQorI2luY2x1ZGUgIlY4TlBPYmplY3Qu
aCIKKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKICNpZiAhUExBVEZPUk0o
V1gpCkBAIC0xMTEsMTIgKzExNSwxMiBAQA0KICAgICByZXR1cm4gY2xpZW50OwogI2VuZGlmCiB9
Ci0KKyNpZiBVU0UoSlNDKQogdXNpbmcgSlNDOjpFeGVjU3RhdGU7CiB1c2luZyBKU0M6OkpTTG9j
azsKIHVzaW5nIEpTQzo6SlNPYmplY3Q7CiB1c2luZyBKU0M6OlVTdHJpbmc7Ci0KKyNlbmRpZgog
dXNpbmcgc3RkOjptaW47CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBAIC01MDQsOCArNTA4LDkg
QEANCiAgICAgICAgIHB1c2hQb3B1cHNFbmFibGVkU3RhdGUodHJ1ZSk7CiAgICAgICAgIHNob3Vs
ZFBvcCA9IHRydWU7CiAgICAgfQotCisjaWYgVVNFKEpTQykKICAgICBKU0M6OkpTTG9jazo6RHJv
cEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CisjZW5k
aWYKICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwogICAgIGJvb2wgcmVzdWx0ID0gbV9wbHVn
aW4tPnBsdWdpbkZ1bmNzKCktPmV2ZW50KG1faW5zdGFuY2UsICZucEV2ZW50KTsKICAgICBzZXRD
YWxsaW5nUGx1Z2luKGZhbHNlKTsKQEAgLTY1MSw4ICs2NTYsOSBAQA0KICAgICAgICAgbnBFdmVu
dC5ldmVudCA9IFdNX0tFWVVQOwogICAgICAgICBucEV2ZW50LmxQYXJhbSA9IDB4ODAwMDsKICAg
ICB9Ci0KKyNpZiBVU0UoSlNDKQogICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFs
bExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKyNlbmRpZgogICAgIGlmICghZGlz
cGF0Y2hOUEV2ZW50KG5wRXZlbnQpKQogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKIH0KQEAgLTcxOSw4ICs3MjUsOSBAQA0KICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAg
ICByZXR1cm47Ci0KKyNpZiBVU0UoSlNDKQogICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3Mg
ZHJvcEFsbExvY2tzKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKyNlbmRpZgogICAgIGlm
ICghZGlzcGF0Y2hOUEV2ZW50KG5wRXZlbnQpKQogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKIApAQCAtODA3LDcgKzgxNCw5IEBADQogICAgIG1fbnBXaW5kb3cuY2xpcFJlY3Qu
dG9wID0gMDsKIAogICAgIGlmIChtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+c2V0d2luZG93KSB7
CisjaWYgVVNFKEpTQykKICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxs
TG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworI2VuZGlmCiAgICAgICAgIHNldENh
bGxpbmdQbHVnaW4odHJ1ZSk7CiAgICAgICAgIG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5zZXR3
aW5kb3cobV9pbnN0YW5jZSwgJm1fbnBXaW5kb3cpOwogICAgICAgICBzZXRDYWxsaW5nUGx1Z2lu
KGZhbHNlKTsK
</data>
<flag name="review"
          id="55623"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>