<?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>25585</bug_id>
          
          <creation_ts>2009-05-06 01:27:02 -0700</creation_ts>
          <short_desc>[Qt] Webkit in Qt does not have window.showModalDialog</short_desc>
          <delta_ts>2011-10-31 19:14:54 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>31552</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Giacomo">euthymos</reporter>
          <assigned_to name="QtWebKit Unassigned">webkit-qt-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>hausmann</cc>
    
    <cc>kbalazs</cc>
    
    <cc>kent.hansen</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>ossy</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>120081</commentid>
    <comment_count>0</comment_count>
    <who name="Giacomo">euthymos</who>
    <bug_when>2009-05-06 01:27:02 -0700</bug_when>
    <thetext>Webkit in Qt _does not have_ window.showModalDialog pseudo-JS function. To confirm this, window.alert(window.showModalDialog) pop ups &quot;undefined&quot;.

But in the docs, see http://doc.trolltech.com/4.5/qwebpage.html#WebWindowType-enum, it seems modal browser dialogs can be generated. How, without window.showModalDialog?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120083</commentid>
    <comment_count>1</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2009-05-06 01:40:19 -0700</bug_when>
    <thetext>This is not implemented in the Qt chrome client right now.

bool ChromeClientQt::canRunModal()
{
    notImplemented();
    return false;
}

Will investigate, thanks.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188300</commentid>
    <comment_count>2</comment_count>
      <attachid>48260</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-02-05 14:16:54 -0800</bug_when>
    <thetext>Created attachment 48260
Patch v1

WebKit already supports window.showModalDialog as defined in http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dialogs-implemented-using-separate-documents.
This patch adds the necessary bits for QtWebKit to support that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188429</commentid>
    <comment_count>3</comment_count>
      <attachid>48260</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-06 07:05:10 -0800</bug_when>
    <thetext>Comment on attachment 48260
Patch v1


&gt; +    bool canRun = false;
&gt; +    QMetaObject::invokeMethod(m_webPage, &quot;canRunModal&quot;, Qt::DirectConnection, Q_RETURN_ARG(bool, canRun));
&gt; +    return canRun;
&gt;  }

Is the invokeMethod supposed to modify the canRun? I suppose the Q_RETURN_ARG is a macro modifying it, but if that is the case, please add a comment. 
 
&gt;  void ChromeClientQt::runModal()
&gt;  {
&gt; -    notImplemented();
&gt; +    QMetaObject::invokeMethod(m_webPage, &quot;runModal&quot;, Qt::DirectConnection);
&gt;  }
&gt;  

&gt; @@ -72,7 +72,8 @@
&gt;      Q_PROPERTY(LinkDelegationPolicy linkDelegationPolicy READ linkDelegationPolicy WRITE setLinkDelegationPolicy)
&gt;      Q_PROPERTY(QPalette palette READ palette WRITE setPalette)
&gt;      Q_PROPERTY(bool contentEditable READ isContentEditable WRITE setContentEditable)
&gt; -    Q_ENUMS(LinkDelegationPolicy NavigationType WebAction)
&gt; +    Q_PROPERTY(WebWindowType windowType READ webWindowType)
&gt; +    Q_ENUMS(LinkDelegationPolicy NavigationType WebAction WebWindowType)

This patch introduces new API, please add it to the API tracker bug.

&gt;  public:
&gt;      enum NavigationType {
&gt;          NavigationTypeLinkClicked,
&gt; @@ -247,6 +248,8 @@
&gt;      void setContentEditable(bool editable);
&gt;      bool isContentEditable() const;
&gt;  
&gt; +    WebWindowType webWindowType() const;
&gt; +
&gt;  #ifndef QT_NO_CONTEXTMENU
&gt;      bool swallowContextMenuEvent(QContextMenuEvent *event);
&gt;  #endif
&gt; @@ -301,6 +304,8 @@
&gt;  
&gt;  public Q_SLOTS:
&gt;      bool shouldInterruptJavaScript();
&gt; +    void runModal();
&gt; +    bool canRunModal();


Are these supposed to be virtual?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188432</commentid>
    <comment_count>4</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-02-06 10:11:31 -0800</bug_when>
    <thetext>Kenneth, When I introduced QWebPage::shouldInterruptJavaScript() I was told that we cannot add new virtual methods because that would break BC.
I am using here the same (ugly) technique to add a new &quot;semi-virtual&quot; method without breaking BC. 
I will add a comment about Q_RETURN_ARG modifying canRun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188623</commentid>
    <comment_count>5</comment_count>
      <attachid>48332</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-02-08 06:17:49 -0800</bug_when>
    <thetext>Created attachment 48332
Patch v2

Added comment to ChromeClientQt as per comment #c3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189000</commentid>
    <comment_count>6</comment_count>
      <attachid>48412</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-02-09 07:34:35 -0800</bug_when>
    <thetext>Created attachment 48412
Patch v3

Make runModalDialog work almost &quot;out of the box&quot;, with the exception that the application must set the modality flag on the correct window. WebKit does not know which window is the correct one for setting the modality flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189007</commentid>
    <comment_count>7</comment_count>
      <attachid>48412</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-09 07:42:35 -0800</bug_when>
    <thetext>Comment on attachment 48412
Patch v3

should we change &quot;should&quot; to &quot;must&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189019</commentid>
    <comment_count>8</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-02-09 07:57:05 -0800</bug_when>
    <thetext>Landed as:  http://trac.webkit.org/changeset/54550</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189020</commentid>
    <comment_count>9</comment_count>
      <attachid>48412</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-02-09 07:58:05 -0800</bug_when>
    <thetext>Comment on attachment 48412
Patch v3

&gt; Index: WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
&gt; ===================================================================
&gt; --- WebKit/qt/WebCoreSupport/ChromeClientQt.cpp	(revision 54545)
&gt; +++ WebKit/qt/WebCoreSupport/ChromeClientQt.cpp	(working copy)
&gt; @@ -44,6 +44,7 @@
&gt;  #include &quot;SecurityOrigin.h&quot;
&gt;  
&gt;  #include &lt;qdebug.h&gt;
&gt; +#include &lt;qeventloop.h&gt;
&gt;  #include &lt;qtextdocument.h&gt;
&gt;  #include &lt;qtooltip.h&gt;
&gt;  
&gt; @@ -62,13 +63,15 @@
&gt;  
&gt;  ChromeClientQt::ChromeClientQt(QWebPage* webPage)
&gt;      : m_webPage(webPage)
&gt; +    , m_eventLoop(0)
&gt;  {
&gt;      toolBarsVisible = statusBarVisible = menuBarVisible = true;
&gt;  }
&gt;  
&gt;  ChromeClientQt::~ChromeClientQt()
&gt;  {
&gt; -
&gt; +    if (m_eventLoop)
&gt; +        m_eventLoop-&gt;exit();
&gt;  }
&gt;  
&gt;  void ChromeClientQt::setWindowRect(const FloatRect&amp; rect)
&gt; @@ -173,14 +176,16 @@
&gt;  
&gt;  bool ChromeClientQt::canRunModal()
&gt;  {
&gt; -    notImplemented();
&gt; -    return false;
&gt; +    return true;
&gt;  }
&gt;  
&gt;  
&gt;  void ChromeClientQt::runModal()
&gt;  {
&gt; -    notImplemented();
&gt; +    m_eventLoop = new QEventLoop();
&gt; +    QEventLoop* eventLoop = m_eventLoop;
&gt; +    m_eventLoop-&gt;exec();
&gt; +    delete eventLoop;
&gt;  }
&gt;  
&gt;  
&gt; Index: WebKit/qt/WebCoreSupport/ChromeClientQt.h
&gt; ===================================================================
&gt; --- WebKit/qt/WebCoreSupport/ChromeClientQt.h	(revision 54545)
&gt; +++ WebKit/qt/WebCoreSupport/ChromeClientQt.h	(working copy)
&gt; @@ -34,6 +34,7 @@
&gt;  #include &quot;KURL.h&quot;
&gt;  #include &quot;PlatformString.h&quot;
&gt;  
&gt; +class QEventLoop;
&gt;  class QWebPage;
&gt;  
&gt;  namespace WebCore {
&gt; @@ -158,6 +159,7 @@
&gt;          bool toolBarsVisible;
&gt;          bool statusBarVisible;
&gt;          bool menuBarVisible;
&gt; +        QEventLoop* m_eventLoop;
&gt;      };
&gt;  }
&gt;  
&gt; Index: WebKit/qt/ChangeLog
&gt; ===================================================================
&gt; --- WebKit/qt/ChangeLog	(revision 54547)
&gt; +++ WebKit/qt/ChangeLog	(working copy)
&gt; @@ -1,3 +1,22 @@
&gt; +2010-02-09  Yael Aharon  &lt;yael.aharon@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        [Qt] Webkit in Qt does not have window.showModalDialog
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=25585
&gt; +
&gt; +        Create a new eventloop when runModal() is called.
&gt; +        Added comemnt in QWebPage::createWindow that the application is responsible
&gt; +        for setting the modality of the appropriate window.
&gt; +
&gt; +        * Api/qwebpage.cpp:
&gt; +        * WebCoreSupport/ChromeClientQt.cpp:
&gt; +        (WebCore::ChromeClientQt::ChromeClientQt):
&gt; +        (WebCore::ChromeClientQt::~ChromeClientQt):
&gt; +        (WebCore::ChromeClientQt::canRunModal):
&gt; +        (WebCore::ChromeClientQt::runModal):
&gt; +        * WebCoreSupport/ChromeClientQt.h:
&gt; +
&gt;  2010-01-19  Kenneth Rohde Christiansen  &lt;kenneth@webkit.org&gt;
&gt;  
&gt;          Reviewed by Dave Hyatt.
&gt; Index: WebKit/qt/Api/qwebpage.cpp
&gt; ===================================================================
&gt; --- WebKit/qt/Api/qwebpage.cpp	(revision 54545)
&gt; +++ WebKit/qt/Api/qwebpage.cpp	(working copy)
&gt; @@ -1955,6 +1955,8 @@
&gt;      If the view associated with the web page is a QWebView object, then the default implementation forwards
&gt;      the request to QWebView&apos;s createWindow() function; otherwise it returns a null pointer.
&gt;  
&gt; +    If \a type is WebModalDialog, the application should call setWindowModality(Qt::ApplicationModal) on the new window.
&gt; +
&gt;      \sa acceptNavigationRequest()
&gt;  */
&gt;  QWebPage *QWebPage::createWindow(WebWindowType type)
&gt; Index: WebKitTools/ChangeLog
&gt; ===================================================================
&gt; --- WebKitTools/ChangeLog	(revision 54547)
&gt; +++ WebKitTools/ChangeLog	(working copy)
&gt; @@ -1,3 +1,15 @@
&gt; +2010-02-09  Yael Aharon  &lt;yael.aharon@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        [Qt] Webkit in Qt does not have window.showModalDialog
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=25585
&gt; +
&gt; +        Set the modality flag when createWindow is called with window type WebWindowDialog.
&gt; +
&gt; +        * QtLauncher/main.cpp:
&gt; +        (WebPage::createWindow):
&gt; +
&gt;  2010-02-09  Chang Shu  &lt;Chang.Shu@nokia.com&gt;
&gt;  
&gt;          Reviewed by Laszlo Gombos.
&gt; Index: WebKitTools/QtLauncher/main.cpp
&gt; ===================================================================
&gt; --- WebKitTools/QtLauncher/main.cpp	(revision 54545)
&gt; +++ WebKitTools/QtLauncher/main.cpp	(working copy)
&gt; @@ -520,9 +520,11 @@
&gt;  #endif
&gt;  }
&gt;  
&gt; -QWebPage* WebPage::createWindow(QWebPage::WebWindowType)
&gt; +QWebPage* WebPage::createWindow(QWebPage::WebWindowType type)
&gt;  {
&gt;      LauncherWindow* mw = new LauncherWindow;
&gt; +    if (type == WebModalDialog)
&gt; +        mw-&gt;setWindowModality(Qt::ApplicationModal);
&gt;      mw-&gt;show();
&gt;      return mw-&gt;page();
&gt;  }
Clearing flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189162</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-02-09 15:19:15 -0800</bug_when>
    <thetext>Qt expected files updated by http://trac.webkit.org/changeset/54568

But I&apos;m not sure if platform/qt/http/tests/security/cross-frame-access-call-expected.txt is correct:
-PASS: window.showModalDialog.call(targetWindow); should be &apos;TypeError: Result of expression &apos;window.showModalDialog&apos; [undefined] is not an object.&apos; and is.
+*** FAIL: window.showModalDialog.call(targetWindow); should be &apos;TypeError: Result of expression &apos;window.showModalDialog&apos; [undefined] is not an object.&apos; but instead is undefined.

What do you think about it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189370</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-02-10 07:52:08 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Qt expected files updated by http://trac.webkit.org/changeset/54568
&gt; 
&gt; But I&apos;m not sure if
&gt; platform/qt/http/tests/security/cross-frame-access-call-expected.txt is
&gt; correct:
&gt; -PASS: window.showModalDialog.call(targetWindow); should be &apos;TypeError: Result
&gt; of expression &apos;window.showModalDialog&apos; [undefined] is not an object.&apos; and is.
&gt; +*** FAIL: window.showModalDialog.call(targetWindow); should be &apos;TypeError:
&gt; Result of expression &apos;window.showModalDialog&apos; [undefined] is not an object.&apos;
&gt; but instead is undefined.
&gt; 
&gt; What do you think about it?

That&apos;s most likely caused due to the lack of modal window support in the Qt DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189550</commentid>
    <comment_count>12</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-02-10 17:55:34 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Qt expected files updated by http://trac.webkit.org/changeset/54568
&gt; 
&gt; But I&apos;m not sure if
&gt; platform/qt/http/tests/security/cross-frame-access-call-expected.txt is
&gt; correct:
&gt; -PASS: window.showModalDialog.call(targetWindow); should be &apos;TypeError: Result
&gt; of expression &apos;window.showModalDialog&apos; [undefined] is not an object.&apos; and is.
&gt; +*** FAIL: window.showModalDialog.call(targetWindow); should be &apos;TypeError:
&gt; Result of expression &apos;window.showModalDialog&apos; [undefined] is not an object.&apos;
&gt; but instead is undefined.
&gt; 
&gt; What do you think about it?

I actually think that this is the expected result. Mac port does not support canRunModal in DRT, and their expected results reflect that. Since we do support it, we have different results.
It all comes down to the fact that the implementation of canRunModal in WebChromeClient.mm returns false when running in DRT, and ChromeClientQt.cpp returns true. 
(this is being called from JSDOMWindow::getOwnPropertySlot() before we check cross frames access rights)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202549</commentid>
    <comment_count>13</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-03-22 09:38:43 -0700</bug_when>
    <thetext>As far as I can tell this is fixed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219177</commentid>
    <comment_count>14</comment_count>
    <who name="Giacomo">euthymos</who>
    <bug_when>2010-04-29 14:19:37 -0700</bug_when>
    <thetext>Is this fixed in Qt 4.6.2?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493085</commentid>
    <comment_count>15</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-10-30 15:06:09 -0700</bug_when>
    <thetext>I have just looked around in ChromeClientQt.cpp and I think there is a bug in this code: 

void ChromeClientQt::runModal()
{
    m_eventLoop = new QEventLoop();
    QEventLoop* eventLoop = m_eventLoop;
    m_eventLoop-&gt;exec();
    delete eventLoop;
}

It deletes the new object. I guess it should delete the old one. BTW I think we should not have a non-null loop here anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493714</commentid>
    <comment_count>16</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-10-31 19:14:54 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; I have just looked around in ChromeClientQt.cpp and I think there is a bug in this code: 
&gt; 
&gt; void ChromeClientQt::runModal()
&gt; {
&gt;     m_eventLoop = new QEventLoop();
&gt;     QEventLoop* eventLoop = m_eventLoop;
&gt;     m_eventLoop-&gt;exec();
&gt;     delete eventLoop;
&gt; }
&gt; 
&gt; It deletes the new object. I guess it should delete the old one. BTW I think we should not have a non-null loop here anyway.

The point is that the line after &quot;m_eventLoop-&gt;exec()&quot; is executed AFTER the dialog is closed. There is no &quot;old&quot; or &quot;new&quot;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48260</attachid>
            <date>2010-02-05 14:16:54 -0800</date>
            <delta_ts>2010-02-08 06:17:49 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>25585.patch</filename>
            <type>text/plain</type>
            <size>8750</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkocmV2
aXNpb24gNTQ0NDApCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsMTQgKzE3MywxNSBAQAogCiBib29sIENocm9tZUNs
aWVudFF0OjpjYW5SdW5Nb2RhbCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gZmFsc2U7CisgICAgYm9vbCBjYW5SdW4gPSBmYWxzZTsKKyAgICBRTWV0YU9iamVjdDo6aW52
b2tlTWV0aG9kKG1fd2ViUGFnZSwgImNhblJ1bk1vZGFsIiwgUXQ6OkRpcmVjdENvbm5lY3Rpb24s
IFFfUkVUVVJOX0FSRyhib29sLCBjYW5SdW4pKTsKKyAgICByZXR1cm4gY2FuUnVuOwogfQogCiAK
IHZvaWQgQ2hyb21lQ2xpZW50UXQ6OnJ1bk1vZGFsKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QobV93ZWJQYWdlLCAicnVuTW9kYWwiLCBR
dDo6RGlyZWN0Q29ubmVjdGlvbik7CiB9CiAKIApJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDQ0NCkKKysrIFdl
YktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0w
Mi0wNSAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Via2l0IGluIFF0IF9kb2VzIG5v
dCBoYXZlXyB3aW5kb3cuc2hvd01vZGFsRGlhbG9nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTU4NQorCisgICAgICAgIEFkZGVkIHRoZSBjYWxsYmFj
a3MgbmVjZXNzYXJ5IGZvciBhcHBsaWNhdGlvbnMgdXNpbmcgUXRXZWJLaXQgdG8gYWRkCisgICAg
ICAgIHN1cHBvcnQgZm9yIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cuCisKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnJ1bk1vZGFsKToKKyAgICAgICAgKFFX
ZWJQYWdlOjpjYW5SdW5Nb2RhbCk6CisgICAgICAgIChRV2ViUGFnZTo6d2ViV2luZG93VHlwZSk6
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y2FuUnVuTW9kYWwpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50UXQ6OnJ1bk1vZGFsKToKKwogMjAxMC0wMS0xOSAgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGF2ZSBIeWF0dC4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgJKHJldmlzaW9uIDU0NDQwKQorKysgV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw4IEBACiAgICAgUV9Q
Uk9QRVJUWShMaW5rRGVsZWdhdGlvblBvbGljeSBsaW5rRGVsZWdhdGlvblBvbGljeSBSRUFEIGxp
bmtEZWxlZ2F0aW9uUG9saWN5IFdSSVRFIHNldExpbmtEZWxlZ2F0aW9uUG9saWN5KQogICAgIFFf
UFJPUEVSVFkoUVBhbGV0dGUgcGFsZXR0ZSBSRUFEIHBhbGV0dGUgV1JJVEUgc2V0UGFsZXR0ZSkK
ICAgICBRX1BST1BFUlRZKGJvb2wgY29udGVudEVkaXRhYmxlIFJFQUQgaXNDb250ZW50RWRpdGFi
bGUgV1JJVEUgc2V0Q29udGVudEVkaXRhYmxlKQotICAgIFFfRU5VTVMoTGlua0RlbGVnYXRpb25Q
b2xpY3kgTmF2aWdhdGlvblR5cGUgV2ViQWN0aW9uKQorICAgIFFfUFJPUEVSVFkoV2ViV2luZG93
VHlwZSB3aW5kb3dUeXBlIFJFQUQgd2ViV2luZG93VHlwZSkKKyAgICBRX0VOVU1TKExpbmtEZWxl
Z2F0aW9uUG9saWN5IE5hdmlnYXRpb25UeXBlIFdlYkFjdGlvbiBXZWJXaW5kb3dUeXBlKQogcHVi
bGljOgogICAgIGVudW0gTmF2aWdhdGlvblR5cGUgewogICAgICAgICBOYXZpZ2F0aW9uVHlwZUxp
bmtDbGlja2VkLApAQCAtMjQ3LDYgKzI0OCw4IEBACiAgICAgdm9pZCBzZXRDb250ZW50RWRpdGFi
bGUoYm9vbCBlZGl0YWJsZSk7CiAgICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0Owog
CisgICAgV2ViV2luZG93VHlwZSB3ZWJXaW5kb3dUeXBlKCkgY29uc3Q7CisKICNpZm5kZWYgUVRf
Tk9fQ09OVEVYVE1FTlUKICAgICBib29sIHN3YWxsb3dDb250ZXh0TWVudUV2ZW50KFFDb250ZXh0
TWVudUV2ZW50ICpldmVudCk7CiAjZW5kaWYKQEAgLTMwMSw2ICszMDQsOCBAQAogCiBwdWJsaWMg
UV9TTE9UUzoKICAgICBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsKKyAgICB2b2lk
IHJ1bk1vZGFsKCk7CisgICAgYm9vbCBjYW5SdW5Nb2RhbCgpOwogCiBRX1NJR05BTFM6CiAgICAg
dm9pZCBsb2FkU3RhcnRlZCgpOwpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDU0NDQwKQor
KysgV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NDcsNiAr
MTk0NywzMiBAQAogfQogCiAvKiEKKyAgICBcZm4gYm9vbCBRV2ViUGFnZTo6cnVuTW9kYWwoKQor
ICAgIFxzaW5jZSA0LjcKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZlciBXZWJL
aXQgd2FudHMgdG8gcnVuIHRoaXMgd2luZG93IGFzIGEgbW9kYWwgZGlhbG9nLgorICAgIFRoaXMg
UVdlYlBhZ2UgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCB3aXRoIHRoZSB0eXBlIFFXZWJQYWdlOjpX
ZWJNb2RhbERpYWxvZy4KKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGlmIGNhblJ1
bk1vZGFsIHJldHVybnMgdHJ1ZS4KKworICAgIFxzYSBjcmVhdGVXaW5kb3coKSwgY2FuUnVuTW9k
YWwoKQorKi8KK3ZvaWQgUVdlYlBhZ2U6OnJ1bk1vZGFsKCkKK3sKK30KKworLyohCisgICAgXGZu
IGJvb2wgUVdlYlBhZ2U6OmNhblJ1bk1vZGFsKCkKKyAgICBcc2luY2UgNC43CisgICAgVGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2ZXIgV2ViS2l0IHdhbnRzIHRvIGNyZWF0ZSBhIG5ldyBR
V2ViUGFnZSBhcyBhIG1vZGFsIGRpYWxvZy4KKyAgICBJbXBsZW1lbnRhdGlvbnMgdGhhdCBzdXBw
b3J0IHRoYXQgbXVzdCBvdmVyd3JpdGUgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gdHJ1ZS4KKwor
ICAgIFxzYSBjcmVhdGVXaW5kb3coKSwgcnVuTW9kYWwoKQorKi8KK2Jvb2wgUVdlYlBhZ2U6OmNh
blJ1bk1vZGFsKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIQogICAgIFRoaXMgZnVu
Y3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIFdlYktpdCB3YW50cyB0byBjcmVhdGUgYSBuZXcgd2lu
ZG93IG9mIHRoZSBnaXZlbiBcYSB0eXBlLCBmb3IKICAgICBleGFtcGxlIHdoZW4gYSBKYXZhU2Ny
aXB0IHByb2dyYW0gcmVxdWVzdHMgdG8gb3BlbiBhIGRvY3VtZW50IGluIGEgbmV3IHdpbmRvdy4K
IApAQCAtMjY4OSw2ICsyNzE1LDE5IEBACiB9CiAKIC8qIQorICAgIFxwcm9wZXJ0eSBRV2ViUGFn
ZTo6d2ViV2luZG93VHlwZQorICAgIFxicmllZiBUaGlzIHByb3BlcnR5IGhvbGRzIHdoZXRoZXIg
dGhlIHBhZ2UgaXMgY3JlYXRlZCBhcyBhIG1vZGFsIGRpYWxvZyBvciBhcyBhIG5vcm1hbCBwYWdl
LgorICAgIFxzaW5jZSA0LjcKKworICAgIFRoaXMgcHJvcGVydHkgaG9sZHMgd2hldGhlciBRV2Vi
UGFnZSB3YXMgY3JlYXRlZCBhcyBhIG1vZGFsIGRpYWxvZyBvciBhIG5vcm1hbCBwYWdlLgorICAg
IFFXZWJQYWdlIGNhbiBiZSBjcmVhdGVkIGFzIGEgbW9kYWwgZGlhbG9nIG9ubHkgdmlhIHRoZSBK
YXZhU2NyaXB0IEFQSS4KKyovCitRV2ViUGFnZTo6V2ViV2luZG93VHlwZSBRV2ViUGFnZTo6d2Vi
V2luZG93VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPndlYldpbmRvd1R5cGU7Cit9CisK
Ky8qIQogICAgIFxwcm9wZXJ0eSBRV2ViUGFnZTo6Zm9yd2FyZFVuc3VwcG9ydGVkQ29udGVudAog
ICAgIFxicmllZiB3aGV0aGVyIFFXZWJQYWdlIHNob3VsZCBmb3J3YXJkIHVuc3VwcG9ydGVkIGNv
bnRlbnQKIApJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgJKHJldmlzaW9uIDU0NDQwKQorKysgV2ViS2l0L3F0
L0FwaS9xd2VicGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsNyBAQAogICAg
IFFXZWJTZXR0aW5ncyAqc2V0dGluZ3M7CiAgICAgUVBhbGV0dGUgcGFsZXR0ZTsKICAgICBib29s
IGVkaXRhYmxlOworICAgIFFXZWJQYWdlOjpXZWJXaW5kb3dUeXBlIHdlYldpbmRvd1R5cGU7CiAg
ICAgYm9vbCB1c2VGaXhlZExheW91dDsKIAogICAgIFFBY3Rpb24gKmFjdGlvbnNbUVdlYlBhZ2U6
OldlYkFjdGlvbkNvdW50XTsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU0NDQ0KQorKysgV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDItMDUg
IFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYmtpdCBpbiBRdCBfZG9lcyBub3QgaGF2
ZV8gd2luZG93LnNob3dNb2RhbERpYWxvZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjU1ODUKKworICAgICAgICBBZGRlZCB0byBRdExhdW5jaGVyIHRo
ZSBhYmlsaXR5IHRvIHN1cHBvcnQgd2luZG93LnNob3dNb2RhbERpYWxvZy4KKworICAgICAgICAq
IFF0TGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChMYXVuY2hlcldpbmRvdzo6TGF1bmNoZXJX
aW5kb3cpOgorICAgICAgICAoTGF1bmNoZXJXaW5kb3c6On5MYXVuY2hlcldpbmRvdyk6CisgICAg
ICAgIChMYXVuY2hlcldpbmRvdzo6cnVuTW9kYWwpOgorICAgICAgICAoTGF1bmNoZXJXaW5kb3c6
OmV4aXRNb2RhbCk6CisgICAgICAgIChXZWJQYWdlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAq
IFF0TGF1bmNoZXIvd2VicGFnZS5jcHA6CisgICAgICAgIChXZWJQYWdlOjpydW5Nb2RhbCk6Cisg
ICAgICAgIChXZWJQYWdlOjpjYW5SdW5Nb2RhbCk6CisgICAgICAgICogUXRMYXVuY2hlci93ZWJw
YWdlLmg6CisKIDIwMTAtMDEtMTkgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0
aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCkluZGV4OiBX
ZWJLaXRUb29scy9RdExhdW5jaGVyL3dlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1F0TGF1bmNoZXIvd2VicGFnZS5jcHAJKHJldmlzaW9uIDU0NDQwKQorKysgV2ViS2l0VG9v
bHMvUXRMYXVuY2hlci93ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDQgKzEwMywx
MyBAQAogICAgICAgICBRRGVza3RvcFNlcnZpY2VzOjpvcGVuVXJsKHVybCk7CiB9CiAKK3ZvaWQg
V2ViUGFnZTo6cnVuTW9kYWwoKQoreworICAgIGVtaXQgcnVuTW9kYWxOb3coKTsKK30KIAorYm9v
bCBXZWJQYWdlOjpjYW5SdW5Nb2RhbCgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKSW5kZXg6
IFdlYktpdFRvb2xzL1F0TGF1bmNoZXIvd2VicGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1F0TGF1bmNoZXIvd2VicGFnZS5oCShyZXZpc2lvbiA1NDQ0MCkKKysrIFdlYktpdFRvb2xz
L1F0TGF1bmNoZXIvd2VicGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMiBAQAog
cHVibGljIHNsb3RzOgogICAgIHZvaWQgb3BlblVybEluRGVmYXVsdEJyb3dzZXIoY29uc3QgUVVy
bCYgdXJsID0gUVVybCgpKTsKIAorcHVibGljIFFfU0xPVFM6CisgICAgdm9pZCBydW5Nb2RhbCgp
OworICAgIGJvb2wgY2FuUnVuTW9kYWwoKTsKKworc2lnbmFsczoKKyAgICB2b2lkIHJ1bk1vZGFs
Tm93KCk7CiBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlQcm94eSgpOwogfTsKSW5kZXg6IFdlYktp
dFRvb2xzL1F0TGF1bmNoZXIvbWFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvUXRM
YXVuY2hlci9tYWluLmNwcAkocmV2aXNpb24gNTQ0NDApCisrKyBXZWJLaXRUb29scy9RdExhdW5j
aGVyL21haW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSA8
Y3N0ZGlvPgogI2luY2x1ZGUgIm1haW53aW5kb3cuaCIKICNpbmNsdWRlIDxxZXZlbnQuaD4KKyNp
bmNsdWRlIDxxZXZlbnRsb29wLmg+CiAjaW5jbHVkZSA8cXdlYmVsZW1lbnQuaD4KICNpbmNsdWRl
IDxxd2ViZnJhbWUuaD4KICNpbmNsdWRlIDxxd2ViaW5zcGVjdG9yLmg+CkBAIC0xMTgsOSArMTE5
LDEyIEBACiBwdWJsaWMgc2xvdHM6CiAgICAgdm9pZCBuZXdXaW5kb3coY29uc3QgUVN0cmluZyYg
dXJsID0gUVN0cmluZygpKTsKIAorICAgIHZvaWQgcnVuTW9kYWwoKTsKKwogcHJpdmF0ZToKICAg
ICAvLyBjcmVhdGUgdGhlIHN0YXR1cyBiYXIsIHRvb2wgYmFyICYgbWVudQogICAgIHZvaWQgc2V0
dXBVSSgpOworICAgIHZvaWQgZXhpdE1vZGFsKCk7CiAKIHByaXZhdGU6CiAgICAgUVZlY3Rvcjxp
bnQ+IHpvb21MZXZlbHM7CkBAIC0xMzUsNiArMTM5LDcgQEAKICAgICBRTGlzdDxRVG91Y2hFdmVu
dDo6VG91Y2hQb2ludD4gdG91Y2hQb2ludHM7CiAgICAgYm9vbCB0b3VjaE1vY2tpbmc7CiAjZW5k
aWYKKyAgICBRRXZlbnRMb29wKiBtX2V2ZW50TG9vcDsKIH07CiAKIApAQCAtMTY5LDYgKzE3NCw3
IEBACiAgICAgY29ubmVjdChwYWdlKCksIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLCB0aGlz
LCBTTE9UKGxvYWRGaW5pc2hlZCgpKSk7CiAgICAgY29ubmVjdChwYWdlKCksIFNJR05BTChsaW5r
SG92ZXJlZChjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcmKSks
CiAgICAgICAgICAgICB0aGlzLCBTTE9UKHNob3dMaW5rSG92ZXIoY29uc3QgUVN0cmluZyYsIGNv
bnN0IFFTdHJpbmcmKSkpOworICAgIGNvbm5lY3QocGFnZSgpLCBTSUdOQUwocnVuTW9kYWxOb3co
KSksIHRoaXMsIFNMT1QocnVuTW9kYWwoKSkpOwogCiAgICAgaW5zcGVjdG9yID0gbmV3IFdlYklu
c3BlY3RvcihzcGxpdHRlcik7CiAgICAgaW5zcGVjdG9yLT5zZXRQYWdlKHBhZ2UoKSk7CkBAIC0x
OTAsNiArMTk2LDcgQEAKIExhdW5jaGVyV2luZG93Ojp+TGF1bmNoZXJXaW5kb3coKQogewogICAg
IGdyYWJab29tS2V5cyhmYWxzZSk7CisgICAgZXhpdE1vZGFsKCk7CiB9CiAKIHZvaWQgTGF1bmNo
ZXJXaW5kb3c6OmtleVByZXNzRXZlbnQoUUtleUV2ZW50KiBldmVudCkKQEAgLTQ1Miw2ICs0NTks
MjAgQEAKICAgICBtdy0+c2hvdygpOwogfQogCit2b2lkIExhdW5jaGVyV2luZG93OjpydW5Nb2Rh
bCgpCit7CisgICAgbV9ldmVudExvb3AgPSBuZXcgUUV2ZW50TG9vcCgpOworICAgIFFFdmVudExv
b3AqIGV2ZW50SW9vcCA9IG1fZXZlbnRMb29wOworICAgIG1fZXZlbnRMb29wLT5leGVjKCk7Cisg
ICAgZGVsZXRlIGV2ZW50SW9vcDsKK30KKwordm9pZCBMYXVuY2hlcldpbmRvdzo6ZXhpdE1vZGFs
KCkKK3sKKyAgICBpZiAobV9ldmVudExvb3ApCisgICAgICAgIG1fZXZlbnRMb29wLT5leGl0KCk7
Cit9CisKIHZvaWQgTGF1bmNoZXJXaW5kb3c6OnNldHVwVUkoKQogewogICAgIFFNZW51KiBmaWxl
TWVudSA9IG1lbnVCYXIoKS0+YWRkTWVudSgiJkZpbGUiKTsKQEAgLTUxNyw5ICs1MzgsMTEgQEAK
ICNlbmRpZgogfQogCi1RV2ViUGFnZSogV2ViUGFnZTo6Y3JlYXRlV2luZG93KFFXZWJQYWdlOjpX
ZWJXaW5kb3dUeXBlKQorUVdlYlBhZ2UqIFdlYlBhZ2U6OmNyZWF0ZVdpbmRvdyhRV2ViUGFnZTo6
V2ViV2luZG93VHlwZSB0eXBlKQogewogICAgIExhdW5jaGVyV2luZG93KiBtdyA9IG5ldyBMYXVu
Y2hlcldpbmRvdzsKKyAgICBpZiAodHlwZSA9PSBXZWJNb2RhbERpYWxvZykKKyAgICAgICAgbXct
PnNldFdpbmRvd01vZGFsaXR5KFF0OjpBcHBsaWNhdGlvbk1vZGFsKTsKICAgICBtdy0+c2hvdygp
OwogICAgIHJldHVybiBtdy0+cGFnZSgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48332</attachid>
            <date>2010-02-08 06:17:49 -0800</date>
            <delta_ts>2010-02-09 07:34:35 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>25585.patch</filename>
            <type>text/plain</type>
            <size>8953</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkocmV2
aXNpb24gNTQ0NDApCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsMTQgKzE3MywxNyBAQAogCiBib29sIENocm9tZUNs
aWVudFF0OjpjYW5SdW5Nb2RhbCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gZmFsc2U7CisgICAgYm9vbCBjYW5SdW4gPSBmYWxzZTsKKyAgICAvLyBEdWUgdG8gQkMgY29u
Y2VybnMsIHdlIGNhbm5vdCBhZGQgdmlydHVhbCBtZXRob2RzIHRvIFFXZWJQYWdlLiBJbnN0ZWFk
LCB3ZSBhZGQgYSBzbG90IGFuZCBjYWxsIGl0IHdpdGggaW52b2tlTWV0aG9kKCkuCisgICAgLy8g
Y2FuUnVuIHdpbGwgaG9sZCB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSB0aGUgY2FsbCB0byBjYW5S
dW5Nb2RhbCgpLgorICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QobV93ZWJQYWdlLCAiY2Fu
UnVuTW9kYWwiLCBRdDo6RGlyZWN0Q29ubmVjdGlvbiwgUV9SRVRVUk5fQVJHKGJvb2wsIGNhblJ1
bikpOworICAgIHJldHVybiBjYW5SdW47CiB9CiAKIAogdm9pZCBDaHJvbWVDbGllbnRRdDo6cnVu
TW9kYWwoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUU1ldGFPYmplY3Q6Omludm9r
ZU1ldGhvZChtX3dlYlBhZ2UsICJydW5Nb2RhbCIsIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsKIH0K
IAogCkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU0NDQ0KQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEwLTAyLTA1ICBZYWVsIEFoYXJvbiAgPHlhZWwu
YWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZWJraXQgaW4gUXQgX2RvZXMgbm90IGhhdmVfIHdpbmRvdy5zaG93TW9kYWxE
aWFsb2cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1
NTg1CisKKyAgICAgICAgQWRkZWQgdGhlIGNhbGxiYWNrcyBuZWNlc3NhcnkgZm9yIGFwcGxpY2F0
aW9ucyB1c2luZyBRdFdlYktpdCB0byBhZGQKKyAgICAgICAgc3VwcG9ydCBmb3Igd2luZG93LnNo
b3dNb2RhbERpYWxvZy4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChR
V2ViUGFnZTo6cnVuTW9kYWwpOgorICAgICAgICAoUVdlYlBhZ2U6OmNhblJ1bk1vZGFsKToKKyAg
ICAgICAgKFFXZWJQYWdlOjp3ZWJXaW5kb3dUeXBlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
aDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojpj
YW5SdW5Nb2RhbCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cnVuTW9kYWwp
OgorCiAyMDEwLTAxLTE5ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpJbmRleDogV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2Uu
aAkocmV2aXNpb24gNTQ0NDApCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcyLDcgKzcyLDggQEAKICAgICBRX1BST1BFUlRZKExpbmtEZWxlZ2F0aW9uUG9s
aWN5IGxpbmtEZWxlZ2F0aW9uUG9saWN5IFJFQUQgbGlua0RlbGVnYXRpb25Qb2xpY3kgV1JJVEUg
c2V0TGlua0RlbGVnYXRpb25Qb2xpY3kpCiAgICAgUV9QUk9QRVJUWShRUGFsZXR0ZSBwYWxldHRl
IFJFQUQgcGFsZXR0ZSBXUklURSBzZXRQYWxldHRlKQogICAgIFFfUFJPUEVSVFkoYm9vbCBjb250
ZW50RWRpdGFibGUgUkVBRCBpc0NvbnRlbnRFZGl0YWJsZSBXUklURSBzZXRDb250ZW50RWRpdGFi
bGUpCi0gICAgUV9FTlVNUyhMaW5rRGVsZWdhdGlvblBvbGljeSBOYXZpZ2F0aW9uVHlwZSBXZWJB
Y3Rpb24pCisgICAgUV9QUk9QRVJUWShXZWJXaW5kb3dUeXBlIHdpbmRvd1R5cGUgUkVBRCB3ZWJX
aW5kb3dUeXBlKQorICAgIFFfRU5VTVMoTGlua0RlbGVnYXRpb25Qb2xpY3kgTmF2aWdhdGlvblR5
cGUgV2ViQWN0aW9uIFdlYldpbmRvd1R5cGUpCiBwdWJsaWM6CiAgICAgZW51bSBOYXZpZ2F0aW9u
VHlwZSB7CiAgICAgICAgIE5hdmlnYXRpb25UeXBlTGlua0NsaWNrZWQsCkBAIC0yNDcsNiArMjQ4
LDggQEAKICAgICB2b2lkIHNldENvbnRlbnRFZGl0YWJsZShib29sIGVkaXRhYmxlKTsKICAgICBi
b29sIGlzQ29udGVudEVkaXRhYmxlKCkgY29uc3Q7CiAKKyAgICBXZWJXaW5kb3dUeXBlIHdlYldp
bmRvd1R5cGUoKSBjb25zdDsKKwogI2lmbmRlZiBRVF9OT19DT05URVhUTUVOVQogICAgIGJvb2wg
c3dhbGxvd0NvbnRleHRNZW51RXZlbnQoUUNvbnRleHRNZW51RXZlbnQgKmV2ZW50KTsKICNlbmRp
ZgpAQCAtMzAxLDYgKzMwNCw4IEBACiAKIHB1YmxpYyBRX1NMT1RTOgogICAgIGJvb2wgc2hvdWxk
SW50ZXJydXB0SmF2YVNjcmlwdCgpOworICAgIHZvaWQgcnVuTW9kYWwoKTsKKyAgICBib29sIGNh
blJ1bk1vZGFsKCk7CiAKIFFfU0lHTkFMUzoKICAgICB2b2lkIGxvYWRTdGFydGVkKCk7CkluZGV4
OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNTQ0NDApCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0Nyw2ICsxOTQ3LDMyIEBACiB9CiAKIC8qIQorICAg
IFxmbiBib29sIFFXZWJQYWdlOjpydW5Nb2RhbCgpCisgICAgXHNpbmNlIDQuNworICAgIFRoaXMg
ZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIFdlYktpdCB3YW50cyB0byBydW4gdGhpcyB3aW5k
b3cgYXMgYSBtb2RhbCBkaWFsb2cuCisgICAgVGhpcyBRV2ViUGFnZSBtdXN0IGhhdmUgYmVlbiBj
cmVhdGVkIHdpdGggdGhlIHR5cGUgUVdlYlBhZ2U6OldlYk1vZGFsRGlhbG9nLgorICAgIFRoaXMg
ZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgaWYgY2FuUnVuTW9kYWwgcmV0dXJucyB0cnVlLgorCisg
ICAgXHNhIGNyZWF0ZVdpbmRvdygpLCBjYW5SdW5Nb2RhbCgpCisqLwordm9pZCBRV2ViUGFnZTo6
cnVuTW9kYWwoKQoreworfQorCisvKiEKKyAgICBcZm4gYm9vbCBRV2ViUGFnZTo6Y2FuUnVuTW9k
YWwoKQorICAgIFxzaW5jZSA0LjcKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZl
ciBXZWJLaXQgd2FudHMgdG8gY3JlYXRlIGEgbmV3IFFXZWJQYWdlIGFzIGEgbW9kYWwgZGlhbG9n
LgorICAgIEltcGxlbWVudGF0aW9ucyB0aGF0IHN1cHBvcnQgdGhhdCBtdXN0IG92ZXJ3cml0ZSB0
aGlzIGZ1bmN0aW9uIHRvIHJldHVybiB0cnVlLgorCisgICAgXHNhIGNyZWF0ZVdpbmRvdygpLCBy
dW5Nb2RhbCgpCisqLworYm9vbCBRV2ViUGFnZTo6Y2FuUnVuTW9kYWwoKQoreworICAgIHJldHVy
biBmYWxzZTsKK30KKworLyohCiAgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2ZXIg
V2ViS2l0IHdhbnRzIHRvIGNyZWF0ZSBhIG5ldyB3aW5kb3cgb2YgdGhlIGdpdmVuIFxhIHR5cGUs
IGZvcgogICAgIGV4YW1wbGUgd2hlbiBhIEphdmFTY3JpcHQgcHJvZ3JhbSByZXF1ZXN0cyB0byBv
cGVuIGEgZG9jdW1lbnQgaW4gYSBuZXcgd2luZG93LgogCkBAIC0yNjg5LDYgKzI3MTUsMTkgQEAK
IH0KIAogLyohCisgICAgXHByb3BlcnR5IFFXZWJQYWdlOjp3ZWJXaW5kb3dUeXBlCisgICAgXGJy
aWVmIFRoaXMgcHJvcGVydHkgaG9sZHMgd2hldGhlciB0aGUgcGFnZSBpcyBjcmVhdGVkIGFzIGEg
bW9kYWwgZGlhbG9nIG9yIGFzIGEgbm9ybWFsIHBhZ2UuCisgICAgXHNpbmNlIDQuNworCisgICAg
VGhpcyBwcm9wZXJ0eSBob2xkcyB3aGV0aGVyIFFXZWJQYWdlIHdhcyBjcmVhdGVkIGFzIGEgbW9k
YWwgZGlhbG9nIG9yIGEgbm9ybWFsIHBhZ2UuCisgICAgUVdlYlBhZ2UgY2FuIGJlIGNyZWF0ZWQg
YXMgYSBtb2RhbCBkaWFsb2cgb25seSB2aWEgdGhlIEphdmFTY3JpcHQgQVBJLgorKi8KK1FXZWJQ
YWdlOjpXZWJXaW5kb3dUeXBlIFFXZWJQYWdlOjp3ZWJXaW5kb3dUeXBlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZC0+d2ViV2luZG93VHlwZTsKK30KKworLyohCiAgICAgXHByb3BlcnR5IFFXZWJQ
YWdlOjpmb3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50CiAgICAgXGJyaWVmIHdoZXRoZXIgUVdlYlBh
Z2Ugc2hvdWxkIGZvcndhcmQgdW5zdXBwb3J0ZWQgY29udGVudAogCkluZGV4OiBXZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlX3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3Au
aAkocmV2aXNpb24gNTQ0NDApCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCw3IEBACiAgICAgUVdlYlNldHRpbmdzICpzZXR0aW5nczsK
ICAgICBRUGFsZXR0ZSBwYWxldHRlOwogICAgIGJvb2wgZWRpdGFibGU7CisgICAgUVdlYlBhZ2U6
OldlYldpbmRvd1R5cGUgd2ViV2luZG93VHlwZTsKICAgICBib29sIHVzZUZpeGVkTGF5b3V0Owog
CiAgICAgUUFjdGlvbiAqYWN0aW9uc1tRV2ViUGFnZTo6V2ViQWN0aW9uQ291bnRdOwpJbmRleDog
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNTQ0NDQpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wMi0wNSAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJv
bkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2Via2l0IGluIFF0IF9kb2VzIG5vdCBoYXZlXyB3aW5kb3cuc2hvd01vZGFsRGlhbG9n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTU4NQor
CisgICAgICAgIEFkZGVkIHRvIFF0TGF1bmNoZXIgdGhlIGFiaWxpdHkgdG8gc3VwcG9ydCB3aW5k
b3cuc2hvd01vZGFsRGlhbG9nLgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAg
ICAgICAgKExhdW5jaGVyV2luZG93OjpMYXVuY2hlcldpbmRvdyk6CisgICAgICAgIChMYXVuY2hl
cldpbmRvdzo6fkxhdW5jaGVyV2luZG93KToKKyAgICAgICAgKExhdW5jaGVyV2luZG93OjpydW5N
b2RhbCk6CisgICAgICAgIChMYXVuY2hlcldpbmRvdzo6ZXhpdE1vZGFsKToKKyAgICAgICAgKFdl
YlBhZ2U6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogUXRMYXVuY2hlci93ZWJwYWdlLmNwcDoK
KyAgICAgICAgKFdlYlBhZ2U6OnJ1bk1vZGFsKToKKyAgICAgICAgKFdlYlBhZ2U6OmNhblJ1bk1v
ZGFsKToKKyAgICAgICAgKiBRdExhdW5jaGVyL3dlYnBhZ2UuaDoKKwogMjAxMC0wMS0xOSAgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KSW5kZXg6IFdlYktpdFRvb2xzL1F0TGF1bmNoZXIvd2Vi
cGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvUXRMYXVuY2hlci93ZWJwYWdlLmNw
cAkocmV2aXNpb24gNTQ0NDApCisrKyBXZWJLaXRUb29scy9RdExhdW5jaGVyL3dlYnBhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNCArMTAzLDEzIEBACiAgICAgICAgIFFEZXNrdG9wU2Vy
dmljZXM6Om9wZW5VcmwodXJsKTsKIH0KIAordm9pZCBXZWJQYWdlOjpydW5Nb2RhbCgpCit7Cisg
ICAgZW1pdCBydW5Nb2RhbE5vdygpOworfQogCitib29sIFdlYlBhZ2U6OmNhblJ1bk1vZGFsKCkK
K3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwpJbmRleDogV2ViS2l0VG9vbHMvUXRMYXVuY2hlci93
ZWJwYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvUXRMYXVuY2hlci93ZWJwYWdlLmgJ
KHJldmlzaW9uIDU0NDQwKQorKysgV2ViS2l0VG9vbHMvUXRMYXVuY2hlci93ZWJwYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEyIEBACiBwdWJsaWMgc2xvdHM6CiAgICAgdm9pZCBv
cGVuVXJsSW5EZWZhdWx0QnJvd3Nlcihjb25zdCBRVXJsJiB1cmwgPSBRVXJsKCkpOwogCitwdWJs
aWMgUV9TTE9UUzoKKyAgICB2b2lkIHJ1bk1vZGFsKCk7CisgICAgYm9vbCBjYW5SdW5Nb2RhbCgp
OworCitzaWduYWxzOgorICAgIHZvaWQgcnVuTW9kYWxOb3coKTsKIHByaXZhdGU6CiAgICAgdm9p
ZCBhcHBseVByb3h5KCk7CiB9OwpJbmRleDogV2ViS2l0VG9vbHMvUXRMYXVuY2hlci9tYWluLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9RdExhdW5jaGVyL21haW4uY3BwCShyZXZpc2lv
biA1NDQ0MCkKKysrIFdlYktpdFRvb2xzL1F0TGF1bmNoZXIvbWFpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSAibWFpbndp
bmRvdy5oIgogI2luY2x1ZGUgPHFldmVudC5oPgorI2luY2x1ZGUgPHFldmVudGxvb3AuaD4KICNp
bmNsdWRlIDxxd2ViZWxlbWVudC5oPgogI2luY2x1ZGUgPHF3ZWJmcmFtZS5oPgogI2luY2x1ZGUg
PHF3ZWJpbnNwZWN0b3IuaD4KQEAgLTExOCw5ICsxMTksMTIgQEAKIHB1YmxpYyBzbG90czoKICAg
ICB2b2lkIG5ld1dpbmRvdyhjb25zdCBRU3RyaW5nJiB1cmwgPSBRU3RyaW5nKCkpOwogCisgICAg
dm9pZCBydW5Nb2RhbCgpOworCiBwcml2YXRlOgogICAgIC8vIGNyZWF0ZSB0aGUgc3RhdHVzIGJh
ciwgdG9vbCBiYXIgJiBtZW51CiAgICAgdm9pZCBzZXR1cFVJKCk7CisgICAgdm9pZCBleGl0TW9k
YWwoKTsKIAogcHJpdmF0ZToKICAgICBRVmVjdG9yPGludD4gem9vbUxldmVsczsKQEAgLTEzNSw2
ICsxMzksNyBAQAogICAgIFFMaXN0PFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50PiB0b3VjaFBvaW50
czsKICAgICBib29sIHRvdWNoTW9ja2luZzsKICNlbmRpZgorICAgIFFFdmVudExvb3AqIG1fZXZl
bnRMb29wOwogfTsKIAogCkBAIC0xNjksNiArMTc0LDcgQEAKICAgICBjb25uZWN0KHBhZ2UoKSwg
U0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSksIHRoaXMsIFNMT1QobG9hZEZpbmlzaGVkKCkpKTsK
ICAgICBjb25uZWN0KHBhZ2UoKSwgU0lHTkFMKGxpbmtIb3ZlcmVkKGNvbnN0IFFTdHJpbmcmLCBj
b25zdCBRU3RyaW5nJiwgY29uc3QgUVN0cmluZyYpKSwKICAgICAgICAgICAgIHRoaXMsIFNMT1Qo
c2hvd0xpbmtIb3Zlcihjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0cmluZyYpKSk7CisgICAgY29u
bmVjdChwYWdlKCksIFNJR05BTChydW5Nb2RhbE5vdygpKSwgdGhpcywgU0xPVChydW5Nb2RhbCgp
KSk7CiAKICAgICBpbnNwZWN0b3IgPSBuZXcgV2ViSW5zcGVjdG9yKHNwbGl0dGVyKTsKICAgICBp
bnNwZWN0b3ItPnNldFBhZ2UocGFnZSgpKTsKQEAgLTE5MCw2ICsxOTYsNyBAQAogTGF1bmNoZXJX
aW5kb3c6On5MYXVuY2hlcldpbmRvdygpCiB7CiAgICAgZ3JhYlpvb21LZXlzKGZhbHNlKTsKKyAg
ICBleGl0TW9kYWwoKTsKIH0KIAogdm9pZCBMYXVuY2hlcldpbmRvdzo6a2V5UHJlc3NFdmVudChR
S2V5RXZlbnQqIGV2ZW50KQpAQCAtNDUyLDYgKzQ1OSwyMCBAQAogICAgIG13LT5zaG93KCk7CiB9
CiAKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OnJ1bk1vZGFsKCkKK3sKKyAgICBtX2V2ZW50TG9vcCA9
IG5ldyBRRXZlbnRMb29wKCk7CisgICAgUUV2ZW50TG9vcCogZXZlbnRJb29wID0gbV9ldmVudExv
b3A7CisgICAgbV9ldmVudExvb3AtPmV4ZWMoKTsKKyAgICBkZWxldGUgZXZlbnRJb29wOworfQor
Cit2b2lkIExhdW5jaGVyV2luZG93OjpleGl0TW9kYWwoKQoreworICAgIGlmIChtX2V2ZW50TG9v
cCkKKyAgICAgICAgbV9ldmVudExvb3AtPmV4aXQoKTsKK30KKwogdm9pZCBMYXVuY2hlcldpbmRv
dzo6c2V0dXBVSSgpCiB7CiAgICAgUU1lbnUqIGZpbGVNZW51ID0gbWVudUJhcigpLT5hZGRNZW51
KCImRmlsZSIpOwpAQCAtNTE3LDkgKzUzOCwxMSBAQAogI2VuZGlmCiB9CiAKLVFXZWJQYWdlKiBX
ZWJQYWdlOjpjcmVhdGVXaW5kb3coUVdlYlBhZ2U6OldlYldpbmRvd1R5cGUpCitRV2ViUGFnZSog
V2ViUGFnZTo6Y3JlYXRlV2luZG93KFFXZWJQYWdlOjpXZWJXaW5kb3dUeXBlIHR5cGUpCiB7CiAg
ICAgTGF1bmNoZXJXaW5kb3cqIG13ID0gbmV3IExhdW5jaGVyV2luZG93OworICAgIGlmICh0eXBl
ID09IFdlYk1vZGFsRGlhbG9nKQorICAgICAgICBtdy0+c2V0V2luZG93TW9kYWxpdHkoUXQ6OkFw
cGxpY2F0aW9uTW9kYWwpOwogICAgIG13LT5zaG93KCk7CiAgICAgcmV0dXJuIG13LT5wYWdlKCk7
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48412</attachid>
            <date>2010-02-09 07:34:35 -0800</date>
            <delta_ts>2010-02-09 07:58:04 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>25585.patch</filename>
            <type>text/plain</type>
            <size>4468</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkocmV2
aXNpb24gNTQ1NDUpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKIAogI2luY2x1ZGUgPHFkZWJ1Zy5oPgorI2luY2x1ZGUgPHFldmVudGxvb3AuaD4K
ICNpbmNsdWRlIDxxdGV4dGRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8cXRvb2x0aXAuaD4KIApAQCAt
NjIsMTMgKzYzLDE1IEBACiAKIENocm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRRdChRV2ViUGFn
ZSogd2ViUGFnZSkKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQorICAgICwgbV9ldmVudExvb3Ao
MCkKIHsKICAgICB0b29sQmFyc1Zpc2libGUgPSBzdGF0dXNCYXJWaXNpYmxlID0gbWVudUJhclZp
c2libGUgPSB0cnVlOwogfQogCiBDaHJvbWVDbGllbnRRdDo6fkNocm9tZUNsaWVudFF0KCkKIHsK
LQorICAgIGlmIChtX2V2ZW50TG9vcCkKKyAgICAgICAgbV9ldmVudExvb3AtPmV4aXQoKTsKIH0K
IAogdm9pZCBDaHJvbWVDbGllbnRRdDo6c2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCkBAIC0xNzMsMTQgKzE3NiwxNiBAQAogCiBib29sIENocm9tZUNsaWVudFF0OjpjYW5SdW5N
b2RhbCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIAogdm9pZCBDaHJvbWVDbGllbnRRdDo6cnVuTW9kYWwoKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9ldmVudExvb3AgPSBuZXcgUUV2ZW50TG9vcCgp
OworICAgIFFFdmVudExvb3AqIGV2ZW50TG9vcCA9IG1fZXZlbnRMb29wOworICAgIG1fZXZlbnRM
b29wLT5leGVjKCk7CisgICAgZGVsZXRlIGV2ZW50TG9vcDsKIH0KIAogCkluZGV4OiBXZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkocmV2aXNpb24gNTQ1NDUpCisrKyBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogCitjbGFzcyBRRXZlbnRMb29wOwogY2xhc3MgUVdlYlBhZ2U7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTE1OCw2ICsxNTksNyBAQAogICAgICAgICBib29sIHRvb2xCYXJzVmlz
aWJsZTsKICAgICAgICAgYm9vbCBzdGF0dXNCYXJWaXNpYmxlOwogICAgICAgICBib29sIG1lbnVC
YXJWaXNpYmxlOworICAgICAgICBRRXZlbnRMb29wKiBtX2V2ZW50TG9vcDsKICAgICB9OwogfQog
CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU0NTQ3KQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEwLTAyLTA5ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhh
cm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIFdlYmtpdCBpbiBRdCBkb2VzIG5vdCBoYXZlIHdpbmRvdy5zaG93TW9kYWxE
aWFsb2cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1
NTg1CisKKyAgICAgICAgQ3JlYXRlIGEgbmV3IGV2ZW50bG9vcCB3aGVuIHJ1bk1vZGFsKCkgaXMg
Y2FsbGVkLgorICAgICAgICBBZGRlZCBjb21lbW50IGluIFFXZWJQYWdlOjpjcmVhdGVXaW5kb3cg
dGhhdCB0aGUgYXBwbGljYXRpb24gaXMgcmVzcG9uc2libGUKKyAgICAgICAgZm9yIHNldHRpbmcg
dGhlIG1vZGFsaXR5IG9mIHRoZSBhcHByb3ByaWF0ZSB3aW5kb3cuCisKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRRdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6fkNocm9tZUNsaWVudFF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjYW5SdW5Nb2RhbCk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRRdDo6cnVuTW9kYWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0Lmg6CisKIDIwMTAtMDEtMTkgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlh
dHQuCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNTQ1NDUpCisrKyBXZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1NSw2ICsxOTU1LDggQEAKICAgICBJ
ZiB0aGUgdmlldyBhc3NvY2lhdGVkIHdpdGggdGhlIHdlYiBwYWdlIGlzIGEgUVdlYlZpZXcgb2Jq
ZWN0LCB0aGVuIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvcndhcmRzCiAgICAgdGhlIHJl
cXVlc3QgdG8gUVdlYlZpZXcncyBjcmVhdGVXaW5kb3coKSBmdW5jdGlvbjsgb3RoZXJ3aXNlIGl0
IHJldHVybnMgYSBudWxsIHBvaW50ZXIuCiAKKyAgICBJZiBcYSB0eXBlIGlzIFdlYk1vZGFsRGlh
bG9nLCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGNhbGwgc2V0V2luZG93TW9kYWxpdHkoUXQ6OkFw
cGxpY2F0aW9uTW9kYWwpIG9uIHRoZSBuZXcgd2luZG93LgorCiAgICAgXHNhIGFjY2VwdE5hdmln
YXRpb25SZXF1ZXN0KCkKICovCiBRV2ViUGFnZSAqUVdlYlBhZ2U6OmNyZWF0ZVdpbmRvdyhXZWJX
aW5kb3dUeXBlIHR5cGUpCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDU0NykKKysrIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTAyLTA5ICBZ
YWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIFdlYmtpdCBpbiBRdCBkb2VzIG5vdCBo
YXZlIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI1NTg1CisKKyAgICAgICAgU2V0IHRoZSBtb2RhbGl0eSBmbGFn
IHdoZW4gY3JlYXRlV2luZG93IGlzIGNhbGxlZCB3aXRoIHdpbmRvdyB0eXBlIFdlYldpbmRvd0Rp
YWxvZy4KKworICAgICAgICAqIFF0TGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChXZWJQYWdl
OjpjcmVhdGVXaW5kb3cpOgorCiAyMDEwLTAyLTA5ICBDaGFuZyBTaHUgIDxDaGFuZy5TaHVAbm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCkluZGV4OiBXZWJL
aXRUb29scy9RdExhdW5jaGVyL21haW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1F0
TGF1bmNoZXIvbWFpbi5jcHAJKHJldmlzaW9uIDU0NTQ1KQorKysgV2ViS2l0VG9vbHMvUXRMYXVu
Y2hlci9tYWluLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIwLDkgKzUyMCwxMSBAQAogI2VuZGlm
CiB9CiAKLVFXZWJQYWdlKiBXZWJQYWdlOjpjcmVhdGVXaW5kb3coUVdlYlBhZ2U6OldlYldpbmRv
d1R5cGUpCitRV2ViUGFnZSogV2ViUGFnZTo6Y3JlYXRlV2luZG93KFFXZWJQYWdlOjpXZWJXaW5k
b3dUeXBlIHR5cGUpCiB7CiAgICAgTGF1bmNoZXJXaW5kb3cqIG13ID0gbmV3IExhdW5jaGVyV2lu
ZG93OworICAgIGlmICh0eXBlID09IFdlYk1vZGFsRGlhbG9nKQorICAgICAgICBtdy0+c2V0V2lu
ZG93TW9kYWxpdHkoUXQ6OkFwcGxpY2F0aW9uTW9kYWwpOwogICAgIG13LT5zaG93KCk7CiAgICAg
cmV0dXJuIG13LT5wYWdlKCk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>