<?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>46755</bug_id>
          
          <creation_ts>2010-09-28 14:15:51 -0700</creation_ts>
          <short_desc>Viewport data change notification</short_desc>
          <delta_ts>2010-10-05 05:19:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>45443</blocked>
    
    <blocked>46772</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Luiz Agostini">luiz</reporter>
          <assigned_to name="Luiz Agostini">luiz</assigned_to>
          <cc>ademar</cc>
    
    <cc>christian.webkit</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>hyatt</cc>
    
    <cc>joone</cc>
    
    <cc>kenneth</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>286523</commentid>
    <comment_count>0</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-09-28 14:15:51 -0700</bug_when>
    <thetext>Regarding viewport meta tags, what matters for browser developers is to know when the viewport data has changed and its current value.
Viewport data belongs to the document, but it is useful to keep the current viewport data in Page as a reference, to be able to send notifications only when the current viewport has changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286526</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-28 14:18:51 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Regarding viewport meta tags, what matters for browser developers is to know when the viewport data has changed and its current value.
&gt; Viewport data belongs to the document, but it is useful to keep the current viewport data in Page as a reference, to be able to send notifications only when the current viewport has changed.

Which can happen for instance when the document is taken out of the session history.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286529</commentid>
    <comment_count>2</comment_count>
      <attachid>69104</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-09-28 14:24:37 -0700</bug_when>
    <thetext>Created attachment 69104
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286531</commentid>
    <comment_count>3</comment_count>
      <attachid>69105</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-09-28 14:26:26 -0700</bug_when>
    <thetext>Created attachment 69105
Script used for testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286535</commentid>
    <comment_count>4</comment_count>
      <attachid>69104</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-28 14:31:21 -0700</bug_when>
    <thetext>Comment on attachment 69104
patch

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

&gt; WebCore/dom/Document.cpp:2599
&gt; +    frame-&gt;page()-&gt;updateViewportArguments();

I think we should rename this to updateViewportData in a future patch, ie rename ViewportArguments to ViewportData all over.

&gt; WebCore/html/HTMLBodyElement.cpp:47
&gt;      ASSERT(hasTagName(bodyTag));
&gt; +    if (document &amp;&amp; document-&gt;page())
&gt; +        document-&gt;page()-&gt;updateViewportArguments();

I do not know if this is considered a layering violation, but it was suggested by Hyatt. Maybe there is a better way to do it? Darin?

&gt; WebKit/qt/WebCoreSupport/ChromeClientQt.cpp:647
&gt;      emit m_webPage-&gt;viewportChangeRequested();

Looks good. We need to document this in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286543</commentid>
    <comment_count>5</comment_count>
      <attachid>69108</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-09-28 14:42:45 -0700</bug_when>
    <thetext>Created attachment 69108
Script used for testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286551</commentid>
    <comment_count>6</comment_count>
      <attachid>69111</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-09-28 14:54:58 -0700</bug_when>
    <thetext>Created attachment 69111
patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286702</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-28 19:20:28 -0700</bug_when>
    <thetext>Darin,

Could you have a look at this one? Especially the HTMLBodyElement.cpp part?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286706</commentid>
    <comment_count>8</comment_count>
      <attachid>69111</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-28 19:25:21 -0700</bug_when>
    <thetext>Comment on attachment 69111
patch

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

&gt; WebCore/ChangeLog:5
&gt; +        Viewport change notifications

viewport *data* change notification

&gt; WebCore/page/Chrome.cpp:429
&gt; +void Chrome::viewportDataChanged() const

dispatchViewportDataDidChange is probably a better name and more in line with the other function names in Chrome/ChromeClient.

&gt; WebKit/qt/Api/qwebpage.cpp:2388
&gt; +    WebCore::ViewportConfiguration conf = WebCore::findConfigurationForViewportData(d-&gt;viewportArguments(), desktopWidth, deviceWidth, deviceHeight, deviceDPI, availableSize);

in the near future, I think we should rename this one to computeConfigurationForViewportData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286974</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-29 10:44:46 -0700</bug_when>
    <thetext>Darin, Hyatt, ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287881</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-30 15:21:08 -0700</bug_when>
    <thetext>Comments from IRC:

[7:17pm] dhyatt: kenneth: that patch looks fine to me
[7:18pm] kenneth: great, I wasn&apos;t sure if it was a layering violation calling out from the constructor
[7:18pm] dhyatt: kenneth: only weird part about that is that you can have multiple bodies
[7:18pm] dhyatt: or someone could just make one via createElement
[7:18pm] dhyatt: so it might not even be relevant
[7:18pm] dhyatt: so in that sense it&apos;s kind of wasteful
[7:19pm] kenneth: yes, but at least it will verify if the viewport data changed
[7:19pm] dhyatt: insertedIntoDocumnt would be a better place for that code
[7:19pm] dhyatt: than the constructor
[7:19pm] dhyatt: that way you&apos;ll only run it when a real body goes into the document</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287882</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-30 15:23:26 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comments from IRC:
&gt; 
&gt; [7:17pm] dhyatt: kenneth: that patch looks fine to me
&gt; [7:18pm] kenneth: great, I wasn&apos;t sure if it was a layering violation calling out from the constructor
&gt; [7:18pm] dhyatt: kenneth: only weird part about that is that you can have multiple bodies
&gt; [7:18pm] dhyatt: or someone could just make one via createElement
&gt; [7:18pm] dhyatt: so it might not even be relevant
&gt; [7:18pm] dhyatt: so in that sense it&apos;s kind of wasteful
&gt; [7:19pm] kenneth: yes, but at least it will verify if the viewport data changed
&gt; [7:19pm] dhyatt: insertedIntoDocumnt would be a better place for that code
&gt; [7:19pm] dhyatt: than the constructor
&gt; [7:19pm] dhyatt: that way you&apos;ll only run it when a real body goes into the document

That is HTMLBodyElement::insertedIntoDocument()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287890</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-30 15:38:51 -0700</bug_when>
    <thetext>Generally looks good, but r- due to the below:

1. Change the Changelog to reflect the right name of the bug report &quot;viewport *data* change notification&quot;
2. Change viewportDataChanged to something like dispatchViewportDataDidChange
3. Call into the document from HTMLBodyElement::insertedIntoDocument() instead of the constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288731</commentid>
    <comment_count>13</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-10-02 17:54:30 -0700</bug_when>
    <thetext>maybe we should not have another m_viewportArguments in Page? why not refer document()-&gt;viewportArguments instead?

Just trying to not duplicate it now, and someone in the future make a way they can get out of sync. Btw, we could have an ASSERT somewhere to guarantee that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288824</commentid>
    <comment_count>14</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-10-04 00:39:55 -0700</bug_when>
    <thetext>I am trying to adjust the changes of this patch to efl port. It seems to me that existed &quot;didReceiveViewportArguments()&quot; is changed to the &quot;viewportDataChanged()&quot;. And, we can get viewport data by viewportArguments() of the Document class.

However, there is a problem for efl port. In order to get viewport arguments, ChromeClientEfl needs to have the frame instance. But, the ChromeClientEfl class doesn&apos;t maintain frame instance. So, to adjust this patch to efl port, we need to get &quot;frame&quot; as parameter as below,

 &gt;&gt;  virtual void viewportDataChanged(Frame* frame) const { } 

If this is difficult to modify the function, I need to find alternative way. But,in my opinion, to add parameter is easy.

Is it possible to modify the function ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288825</commentid>
    <comment_count>15</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-10-04 00:52:31 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; maybe we should not have another m_viewportArguments in Page? why not refer document()-&gt;viewportArguments instead?
&gt; 
&gt; Just trying to not duplicate it now, and someone in the future make a way they can get out of sync. Btw, we could have an ASSERT somewhere to guarantee that.

The idea is to only send notifications when the current viewport arguments has changed. Page keeps the current viewport so that we can compare the previous and the new ones and avoid notifying a viewport change if the new document has the same viewport as the previous one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288826</commentid>
    <comment_count>16</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-10-04 01:13:57 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I am trying to adjust the changes of this patch to efl port. It seems to me that existed &quot;didReceiveViewportArguments()&quot; is changed to the &quot;viewportDataChanged()&quot;. And, we can get viewport data by viewportArguments() of the Document class.
&gt; 
&gt; However, there is a problem for efl port. In order to get viewport arguments, ChromeClientEfl needs to have the frame instance. But, the ChromeClientEfl class doesn&apos;t maintain frame instance. So, to adjust this patch to efl port, we need to get &quot;frame&quot; as parameter as below,
&gt; 
&gt;  &gt;&gt;  virtual void viewportDataChanged(Frame* frame) const { } 
&gt; 
&gt; If this is difficult to modify the function, I need to find alternative way. But,in my opinion, to add parameter is easy.
&gt; 
&gt; Is it possible to modify the function ?

What if we had the viewport data as parameter. It would be:

virtual void viewportDataChanged(const ViewportArgument&amp;) const { }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288830</commentid>
    <comment_count>17</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-10-04 01:30:47 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #14)
&gt; &gt; I am trying to adjust the changes of this patch to efl port. It seems to me that existed &quot;didReceiveViewportArguments()&quot; is changed to the &quot;viewportDataChanged()&quot;. And, we can get viewport data by viewportArguments() of the Document class.
&gt; &gt; 
&gt; &gt; However, there is a problem for efl port. In order to get viewport arguments, ChromeClientEfl needs to have the frame instance. But, the ChromeClientEfl class doesn&apos;t maintain frame instance. So, to adjust this patch to efl port, we need to get &quot;frame&quot; as parameter as below,
&gt; &gt; 
&gt; &gt;  &gt;&gt;  virtual void viewportDataChanged(Frame* frame) const { } 
&gt; &gt; 
&gt; &gt; If this is difficult to modify the function, I need to find alternative way. But,in my opinion, to add parameter is easy.
&gt; &gt; 
&gt; &gt; Is it possible to modify the function ?
&gt; 
&gt; What if we had the viewport data as parameter. It would be:
&gt; 
&gt; virtual void viewportDataChanged(const ViewportArgument&amp;) const { }

Yes, if viewport argument is passed by pamameter, it is good. However, existed viewport implementation of efl port also have used the Frame to invoke a function of FrameLoaderClientEfl.

    FrameLoaderClientEfl* client = static_cast&lt;FrameLoaderClientEfl*&gt;(frame-&gt;loader()-&gt;client());
    if (client-&gt;getInitLayoutCompleted())
        return;

So, if Frame parameter can be added to pamameter as well, it is good for me.

    virtual void viewportDataChanged(Frame*, const ViewportArgument&amp;) const { }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288855</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-04 02:49:43 -0700</bug_when>
    <thetext>
&gt; Yes, if viewport argument is passed by pamameter, it is good. However, existed viewport implementation of efl port also have used the Frame to invoke a function of FrameLoaderClientEfl.
&gt; 
&gt;     FrameLoaderClientEfl* client = static_cast&lt;FrameLoaderClientEfl*&gt;(frame-&gt;loader()-&gt;client());
&gt;     if (client-&gt;getInitLayoutCompleted())
&gt;         return;

You will have to modify the above code anyway, as that should not be needed anymore. Your client side code should be a lot more simple after this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288856</commentid>
    <comment_count>19</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2010-10-04 02:52:26 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt;     FrameLoaderClientEfl* client = static_cast&lt;FrameLoaderClientEfl*&gt;(frame-&gt;loader()-&gt;client());
&gt; &gt;     if (client-&gt;getInitLayoutCompleted())
&gt; &gt;         return;
&gt; 
&gt; You will have to modify the above code anyway, as that should not be needed anymore. Your client side code should be a lot more simple after this change.

Ok, I will look into further how to change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288885</commentid>
    <comment_count>20</comment_count>
      <attachid>69620</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-10-04 05:37:53 -0700</bug_when>
    <thetext>Created attachment 69620
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288889</commentid>
    <comment_count>21</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-10-04 05:44:26 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; maybe we should not have another m_viewportArguments in Page? why not refer document()-&gt;viewportArguments instead?
&gt; &gt; 
&gt; &gt; Just trying to not duplicate it now, and someone in the future make a way they can get out of sync. Btw, we could have an ASSERT somewhere to guarantee that.
&gt; 
&gt; The idea is to only send notifications when the current viewport arguments has changed. Page keeps the current viewport so that we can compare the previous and the new ones and avoid notifying a viewport change if the new document has the same viewport as the previous one.

I see now, ok. I would had named it in Page more descriptive to self-explain its propose. Maybe something like: m_lastDispatchedViewportArguments , or something like that.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288891</commentid>
    <comment_count>22</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-04 05:53:15 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; maybe we should not have another m_viewportArguments in Page? why not refer document()-&gt;viewportArguments instead?
&gt; &gt; &gt; 
&gt; &gt; &gt; Just trying to not duplicate it now, and someone in the future make a way they can get out of sync. Btw, we could have an ASSERT somewhere to guarantee that.
&gt; &gt; 
&gt; &gt; The idea is to only send notifications when the current viewport arguments has changed. Page keeps the current viewport so that we can compare the previous and the new ones and avoid notifying a viewport change if the new document has the same viewport as the previous one.
&gt; 
&gt; I see now, ok. I would had named it in Page more descriptive to self-explain its propose. Maybe something like: m_lastDispatchedViewportArguments , or something like that.
&gt; 
&gt; What do you think?

It is not really the last. It is just the viewport arguemtns for the current document in the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288903</commentid>
    <comment_count>23</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-10-04 06:24:41 -0700</bug_when>
    <thetext>Committed r69009: &lt;http://trac.webkit.org/changeset/69009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289539</commentid>
    <comment_count>24</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-10-05 05:19:41 -0700</bug_when>
    <thetext>Revision r69009 cherry-picked into qtwebkit-2.1 with commit e6e21be &lt;http://gitorious.org/webkit/qtwebkit/commit/e6e21be&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69104</attachid>
            <date>2010-09-28 14:24:37 -0700</date>
            <delta_ts>2010-09-28 14:54:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Viewport-change-notifications.patch</filename>
            <type>text/plain</type>
            <size>15601</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAxZGYzNzA5ZDJjZGI3YjczZjA1NDZiZTg5Y2Y2ZjRiN2NhY2Y1ZGY3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFR1ZSwgMjggU2VwIDIwMTAgMTg6MjA6NTAgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBWaWV3cG9ydCBjaGFuZ2Ugbm90aWZpY2F0aW9ucwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ2NzU1CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClJl
Z2FyZGluZyB2aWV3cG9ydCBtZXRhIHRhZ3MsIHdoYXQgbWF0dGVycyBmb3IgYnJvd3NlciBkZXZl
bG9wZXJzIGlzIHRvIGtub3cgd2hlbiB0aGUgdmlld3BvcnQgZGF0YSBoYXMKY2hhbmdlZCBhbmQg
aXRzIGN1cnJlbnQgdmFsdWUuIFZpZXdwb3J0IGRhdGEgYmVsb25ncyB0byB0aGUgZG9jdW1lbnQs
IGJ1dCBpdCBpcyB1c2VmdWwgdG8ga2VlcCB0aGUgY3VycmVudAp2aWV3cG9ydCBkYXRhIGluIFBh
Z2UgYXMgYSByZWZlcmVuY2UsIHRvIGJlIGFibGUgdG8gc2VuZCBub3RpZmljYXRpb25zIG9ubHkg
d2hlbiB0aGUgY3VycmVudCB2aWV3cG9ydApoYXMgY2hhbmdlZC4KCldlYkNvcmU6CgoqIGRvbS9E
b2N1bWVudC5jcHA6CihXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KToKKFdlYkNv
cmU6OkRvY3VtZW50OjpzZXRJblBhZ2VDYWNoZSk6CiogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6
CihXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6b3BlcmF0b3I9PSk6CiogaHRtbC9IVE1MQm9k
eUVsZW1lbnQuY3BwOgooV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50OjpIVE1MQm9keUVsZW1lbnQp
OgoqIHBhZ2UvQ2hyb21lLmNwcDoKKFdlYkNvcmU6OkNocm9tZTo6dmlld3BvcnREYXRhQ2hhbmdl
ZCk6CiogcGFnZS9DaHJvbWUuaDoKKiBwYWdlL0Nocm9tZUNsaWVudC5oOgooV2ViQ29yZTo6Q2hy
b21lQ2xpZW50Ojp2aWV3cG9ydERhdGFDaGFuZ2VkKToKKiBwYWdlL1BhZ2UuY3BwOgooV2ViQ29y
ZTo6UGFnZTo6dXBkYXRlVmlld3BvcnRBcmd1bWVudHMpOgoqIHBhZ2UvUGFnZS5oOgooV2ViQ29y
ZTo6UGFnZTo6dmlld3BvcnRBcmd1bWVudHMpOgoKV2ViS2l0L3F0OgoKKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKiBBcGkvcXdlYmZyYW1lX3AuaDoKKiBBcGkvcXdlYnBhZ2UuY3BwOgooUVdlYlBhZ2VQ
cml2YXRlOjp2aWV3cG9ydEFyZ3VtZW50cyk6CihRV2ViUGFnZTo6dmlld3BvcnRDb25maWd1cmF0
aW9uRm9yU2l6ZSk6CiogQXBpL3F3ZWJwYWdlX3AuaDoKKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5jcHA6CihXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6dmlld3BvcnREYXRhQ2hhbmdl
ZCk6CiogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6dmll
d3BvcnRBc1RleHQpOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAyOSArKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL2Rv
bS9WaWV3cG9ydEFyZ3VtZW50cy5oICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKysrKystCiBX
ZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgICB8ICAgIDIg
KwogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
ICA1ICsrKwogV2ViQ29yZS9wYWdlL0Nocm9tZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAyICsKIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9wYWdlL1BhZ2UuY3BwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICA5ICsrKysrKwogV2ViQ29yZS9wYWdlL1BhZ2UuaCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsrKysKIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1l
LmNwcCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCAtLS0tLQogV2ViS2l0L3F0L0FwaS9x
d2ViZnJhbWVfcC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyIC0KIFdlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuY3BwICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyArKysrLQogV2Vi
S2l0L3F0L0FwaS9xd2VicGFnZV9wLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICsr
KwogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDI0ICsrKysrKysrKysrKysrKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHAgICAgICAgIHwgICAgMiArLQogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmggICAgICAgICAgfCAgICAyICstCiAuLi4vcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwICB8ICAgIDIgKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDEw
MiBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc1ODEwYzAuLjk0NDQxMjQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMTAtMDktMjggIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5i
b3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVmlld3BvcnQgY2hhbmdlIG5vdGlmaWNhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NzU1CisKKyAgICAgICAgUmVnYXJkaW5nIHZpZXdw
b3J0IG1ldGEgdGFncywgd2hhdCBtYXR0ZXJzIGZvciBicm93c2VyIGRldmVsb3BlcnMgaXMgdG8g
a25vdyB3aGVuIHRoZSB2aWV3cG9ydCBkYXRhIGhhcworICAgICAgICBjaGFuZ2VkIGFuZCBpdHMg
Y3VycmVudCB2YWx1ZS4gVmlld3BvcnQgZGF0YSBiZWxvbmdzIHRvIHRoZSBkb2N1bWVudCwgYnV0
IGl0IGlzIHVzZWZ1bCB0byBrZWVwIHRoZSBjdXJyZW50CisgICAgICAgIHZpZXdwb3J0IGRhdGEg
aW4gUGFnZSBhcyBhIHJlZmVyZW5jZSwgdG8gYmUgYWJsZSB0byBzZW5kIG5vdGlmaWNhdGlvbnMg
b25seSB3aGVuIHRoZSBjdXJyZW50IHZpZXdwb3J0CisgICAgICAgIGhhcyBjaGFuZ2VkLgorCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpw
cm9jZXNzVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEluUGFnZUNh
Y2hlKToKKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBodG1sL0hUTUxC
b2R5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OkhUTUxC
b2R5RWxlbWVudCk6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lOjp2aWV3cG9ydERhdGFDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5o
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnQ6OnZpZXdwb3J0RGF0YUNoYW5nZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cyk6CisgICAg
ICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp2aWV3cG9ydEFyZ3Vt
ZW50cyk6CisKIDIwMTAtMDktMjcgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDI3
YzVlZjkuLjNhOTIxNzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI1OTYsNyArMjU5Niw3IEBAIHZvaWQgRG9j
dW1lbnQ6OnByb2Nlc3NWaWV3cG9ydChjb25zdCBTdHJpbmcmIGZlYXR1cmVzKQogICAgIGlmICgh
ZnJhbWUgfHwgIWZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5w
YWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKGZy
YW1lLCBtX3ZpZXdwb3J0QXJndW1lbnRzKTsKKyAgICBmcmFtZS0+cGFnZSgpLT51cGRhdGVWaWV3
cG9ydEFyZ3VtZW50cygpOwogfQogCiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIERvY3Vt
ZW50OjpwcmVwYXJlTW91c2VFdmVudChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgSW50UG9pbnQmIGRvY3VtZW50UG9pbnQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZl
bnQpCkBAIC0zODE0LDcgKzM4MTQsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRJblBhZ2VDYWNoZShi
b29sIGZsYWcpCiAgICAgICAgIG1fc2F2ZWRSZW5kZXJlciA9IDA7CiAKICAgICAgICAgaWYgKGZy
YW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpKQotICAgICAgICAgICAgZnJhbWUoKS0+cGFnZSgpLT5j
aHJvbWUoKS0+Y2xpZW50KCktPmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhmcmFtZSgpLCBt
X3ZpZXdwb3J0QXJndW1lbnRzKTsKKyAgICAgICAgICAgIGZyYW1lKCktPnBhZ2UoKS0+dXBkYXRl
Vmlld3BvcnRBcmd1bWVudHMoKTsKIAogICAgICAgICBpZiAoY2hpbGROZWVkc1N0eWxlUmVjYWxj
KCkpCiAgICAgICAgICAgICBzY2hlZHVsZVN0eWxlUmVjYWxjKCk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oIGIvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVu
dHMuaAppbmRleCA1NzMxODQyLi4zMmM5NDU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9WaWV3
cG9ydEFyZ3VtZW50cy5oCisrKyBiL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKQEAg
LTg1LDkgKzg1LDE1IEBAIHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50cyB7CiAKICAgICBmbG9hdCB1
c2VyU2NhbGFibGU7CiAKLSAgICBib29sIGhhc0N1c3RvbUFyZ3VtZW50KCkgY29uc3QKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIG90aGVyKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIGluaXRpYWxTY2FsZSAhPSBWYWx1ZUF1dG8gfHwgbWluaW11bVNj
YWxlICE9IFZhbHVlQXV0byB8fCBtYXhpbXVtU2NhbGUgIT0gVmFsdWVBdXRvIHx8IHdpZHRoICE9
IFZhbHVlQXV0byB8fCBoZWlnaHQgIT0gVmFsdWVBdXRvIHx8IHVzZXJTY2FsYWJsZSAhPSBWYWx1
ZUF1dG8gfHwgdGFyZ2V0RGVuc2l0eURwaSAhPSBWYWx1ZUF1dG87CisgICAgICAgIHJldHVybiBp
bml0aWFsU2NhbGUgPT0gb3RoZXIuaW5pdGlhbFNjYWxlCisgICAgICAgICAgICAmJiBtaW5pbXVt
U2NhbGUgPT0gb3RoZXIubWluaW11bVNjYWxlCisgICAgICAgICAgICAmJiBtYXhpbXVtU2NhbGUg
PT0gb3RoZXIubWF4aW11bVNjYWxlCisgICAgICAgICAgICAmJiB3aWR0aCA9PSBvdGhlci53aWR0
aAorICAgICAgICAgICAgJiYgaGVpZ2h0ID09IG90aGVyLmhlaWdodAorICAgICAgICAgICAgJiYg
dGFyZ2V0RGVuc2l0eURwaSA9PSBvdGhlci50YXJnZXREZW5zaXR5RHBpCisgICAgICAgICAgICAm
JiB1c2VyU2NhbGFibGUgPT0gb3RoZXIudXNlclNjYWxhYmxlOwogICAgIH0KIH07CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxCb2R5RWxlbWVudC5jcHAKaW5kZXggOTYxMzJmMy4uMWJmNGUyYyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxCb2R5
RWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDggQEAgSFRNTEJvZHlFbGVtZW50OjpIVE1MQm9keUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW4KICAg
ICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKGJvZHlUYWcpKTsKKyAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnBhZ2UoKSkKKyAg
ICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+dXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKTsKIH0KIAog
UGFzc1JlZlB0cjxIVE1MQm9keUVsZW1lbnQ+IEhUTUxCb2R5RWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggOGZlZWRjZS4uMjU5NDAzMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAg
LTQyNiw2ICs0MjYsMTEgQEAgdm9pZCBDaHJvbWU6OmNob29zZUljb25Gb3JGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBGaWxlQ2hvb3NlciogZmkKICAgICBtX2NsaWVudC0+
Y2hvb3NlSWNvbkZvckZpbGVzKGZpbGVuYW1lcywgZmlsZUNob29zZXIpOwogfQogCit2b2lkIENo
cm9tZTo6dmlld3BvcnREYXRhQ2hhbmdlZCgpIGNvbnN0Cit7CisgICAgbV9jbGllbnQtPnZpZXdw
b3J0RGF0YUNoYW5nZWQoKTsKK30KKwogdm9pZCBDaHJvbWU6OnNldEN1cnNvcihjb25zdCBDdXJz
b3ImIGN1cnNvcikKIHsKICAgICBtX2NsaWVudC0+c2V0Q3Vyc29yKGN1cnNvcik7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXgg
NWVlODg5Ny4uN2VjM2EzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBi
L1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMTM5LDYgKzEzOSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVD
aG9vc2VyPik7CiAgICAgICAgIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgRmlsZUNob29zZXIqKTsKIAorICAgICAgICB2b2lkIHZpZXdwb3J0RGF0YUNoYW5n
ZWQoKSBjb25zdDsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgdm9pZCBmb2N1c05TVmll
dyhOU1ZpZXcqKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oIGIvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDc1NDI2MTUuLmM3NzA0N2Ug
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgKQEAgLTE0Niw2ICsxNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJikgPSAwOwogICAg
ICAgICAvLyBFbmQgbWV0aG9kcyB1c2VkIGJ5IEhvc3RXaW5kb3cuCiAKKyAgICAgICAgdmlydHVh
bCB2b2lkIHZpZXdwb3J0RGF0YUNoYW5nZWQoKSBjb25zdCB7IH0KKwogICAgICAgICB2aXJ0dWFs
IHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNpemUmKSBjb25zdCA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXcoY29uc3QgSW50UmVj
dCYsIGNvbnN0IFNjcm9sbFZpZXcqKSBjb25zdCA9IDA7IC8vIEN1cnJlbnRseSBvbmx5IE1hYyBo
YXMgYSBub24gZW1wdHkgaW1wbGVtZW50YXRpb24uCiAgICAgICAgCkBAIC0xNTUsOCArMTU3LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUb29sVGlw
KGNvbnN0IFN0cmluZyYsIFRleHREaXJlY3Rpb24pID0gMDsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKEZyYW1lKiwgY29uc3QgVmlld3BvcnRBcmd1
bWVudHMmKSBjb25zdCB7IH0KLQogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJpbnQoRnJhbWUqKSA9
IDA7CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgYi9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOTI5NTVjYy4uMjhkZjlhYWQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTQxNiw2ICs0MTYsMTUgQEAgdm9pZCBQYWdlOjpzY2hlZHVsZUZvcmNlZFN0eWxlUmVj
YWxjRm9yQWxsUGFnZXMoKQogICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnNjaGVkdWxl
Rm9yY2VkU3R5bGVSZWNhbGMoKTsKIH0KIAordm9pZCBQYWdlOjp1cGRhdGVWaWV3cG9ydEFyZ3Vt
ZW50cygpCit7CisgICAgaWYgKCFtYWluRnJhbWUoKSB8fCAhbWFpbkZyYW1lKCktPmRvY3VtZW50
KCkgfHwgbWFpbkZyYW1lKCktPmRvY3VtZW50KCktPnZpZXdwb3J0QXJndW1lbnRzKCkgPT0gbV92
aWV3cG9ydEFyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV92aWV3cG9ydEFyZ3Vt
ZW50cyA9IG1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT52aWV3cG9ydEFyZ3VtZW50cygpOworICAg
IGNocm9tZSgpLT52aWV3cG9ydERhdGFDaGFuZ2VkKCk7Cit9CisKIHZvaWQgUGFnZTo6cmVmcmVz
aFBsdWdpbnMoYm9vbCByZWxvYWQpCiB7CiAgICAgaWYgKCFhbGxQYWdlcykKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDhmMDFmYWEu
LjQ2MGE2OTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvV2ViQ29yZS9w
YWdlL1BhZ2UuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBl
cy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1
bWVudHMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC0xMjcsNiArMTI4LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFJlbmRlclRoZW1lKiB0aGVtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGhlbWUuZ2V0KCk7IH07CiAKKyAgICAgICAgVmlld3BvcnRBcmd1bWVudHMgdmll
d3BvcnRBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0QXJndW1lbnRzOyB9Cisg
ICAgICAgIHZvaWQgdXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKTsKKwogICAgICAgICBzdGF0aWMg
dm9pZCByZWZyZXNoUGx1Z2lucyhib29sIHJlbG9hZCk7CiAgICAgICAgIFBsdWdpbkRhdGEqIHBs
dWdpbkRhdGEoKSBjb25zdDsKIApAQCAtMzgzLDYgKzM4Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICNlbmRpZgogCiAgICAgICAgIFZpZXdNb2RlIG1fdmlld01vZGU7CisKKyAgICAgICAgVmll
d3BvcnRBcmd1bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50czsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgYi9X
ZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggNzI5NWI4Mi4uNDY1ODBiYiAxMDA2NDQK
LS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdl
YmZyYW1lLmNwcApAQCAtMjMwLDE0ICsyMzAsNiBAQCB2b2lkIFFXZWJGcmFtZVByaXZhdGU6Omlu
aXQoUVdlYkZyYW1lICpxZnJhbWUsIFFXZWJGcmFtZURhdGEgKmZyYW1lRGF0YSkKICAgICBmcmFt
ZS0+aW5pdCgpOwogfQogCi1XZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyBRV2ViRnJhbWVQcml2
YXRlOjp2aWV3cG9ydEFyZ3VtZW50cygpCi17Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmRv
Y3VtZW50KCkpCi0gICAgICAgIHJldHVybiBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cygpOwot
Ci0gICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT52aWV3cG9ydEFyZ3VtZW50cygpOwotfQot
CiB2b2lkIFFXZWJGcmFtZVByaXZhdGU6OnNldFBhZ2UoUVdlYlBhZ2UqIG5ld1BhZ2UpCiB7CiAg
ICAgaWYgKHBhZ2UgPT0gbmV3UGFnZSkKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZy
YW1lX3AuaCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lX3AuaAppbmRleCA1YmEzZjUyLi43OTE4
N2FiIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmgKKysrIGIvV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWVfcC5oCkBAIC05MCw4ICs5MCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlbmRlckZyb21UaWxlZEJhY2tpbmdTdG9yZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBRUmVnaW9uJiBjbGlwKTsKICNlbmRpZgogCi0gICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1
bWVudHMgdmlld3BvcnRBcmd1bWVudHMoKTsKLQogICAgIFFXZWJGcmFtZSAqcTsKICAgICBRdDo6
U2Nyb2xsQmFyUG9saWN5IGhvcml6b250YWxTY3JvbGxCYXJQb2xpY3k7CiAgICAgUXQ6OlNjcm9s
bEJhclBvbGljeSB2ZXJ0aWNhbFNjcm9sbEJhclBvbGljeTsKZGlmZiAtLWdpdCBhL1dlYktpdC9x
dC9BcGkvcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggNTcz
NTAwZS4uZDA3OTk3YSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysr
IGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTMyOCw2ICszMjgsMTEgQEAgUVdlYlBh
Z2VQcml2YXRlOjp+UVdlYlBhZ2VQcml2YXRlKCkKICNlbmRpZgogfQogCitXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50cyBRV2ViUGFnZVByaXZhdGU6OnZpZXdwb3J0QXJndW1lbnRzKCkKK3sKKyAg
ICByZXR1cm4gcGFnZSA/IHBhZ2UtPnZpZXdwb3J0QXJndW1lbnRzKCkgOiBXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50cygpOworfQorCiBXZWJDb3JlOjpQYWdlKiBRV2ViUGFnZVByaXZhdGU6OmNv
cmUoY29uc3QgUVdlYlBhZ2UqIHBhZ2UpCiB7CiAgICAgcmV0dXJuIHBhZ2UtPmQtPnBhZ2U7CkBA
IC0yMzQ4LDcgKzIzNTMsNyBAQCBRV2ViUGFnZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uIFFXZWJQ
YWdlOjp2aWV3cG9ydENvbmZpZ3VyYXRpb25Gb3JTaXplKFFTaXplIGF2YQogICAgIGludCBkZXZp
Y2VXaWR0aCA9IHJlY3Qud2lkdGgoKTsKICAgICBpbnQgZGV2aWNlSGVpZ2h0ID0gcmVjdC5oZWln
aHQoKTsKIAotICAgIFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbiBjb25mID0gV2ViQ29y
ZTo6ZmluZENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydERhdGEobWFpbkZyYW1lKCktPmQtPnZpZXdw
b3J0QXJndW1lbnRzKCksIGRlc2t0b3BXaWR0aCwgZGV2aWNlV2lkdGgsIGRldmljZUhlaWdodCwg
ZGV2aWNlRFBJLCBhdmFpbGFibGVTaXplKTsKKyAgICBXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3Vy
YXRpb24gY29uZiA9IFdlYkNvcmU6OmZpbmRDb25maWd1cmF0aW9uRm9yVmlld3BvcnREYXRhKGQt
PnZpZXdwb3J0QXJndW1lbnRzKCksIGRlc2t0b3BXaWR0aCwgZGV2aWNlV2lkdGgsIGRldmljZUhl
aWdodCwgZGV2aWNlRFBJLCBhdmFpbGFibGVTaXplKTsKIAogICAgIFZpZXdwb3J0Q29uZmlndXJh
dGlvbiByZXN1bHQ7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oIGIv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKaW5kZXggNzRlN2NhMS4uOGJkYmEzYyAxMDA2NDQK
LS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZV9wLmgKQEAgLTM2LDYgKzM2LDggQEAKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAor
I2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBDaHJvbWVDbGllbnRRdDsKICAgICBjbGFzcyBDb250ZXh0TWVudUNsaWVudFF0OwpA
QCAtMTQxLDYgKzE0Myw4IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKCk7CiAgICAgcXVpbnQxNiBpbnNwZWN0b3JTZXJ2ZXJQ
b3J0KCk7CiAKKyAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50
cygpOworCiAjaWZuZGVmIFFUX05PX1NIT1JUQ1VUCiAgICAgc3RhdGljIFFXZWJQYWdlOjpXZWJB
Y3Rpb24gZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoUUtleUV2ZW50KiBldmVudCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmlu
ZGV4IDFiMmM3ODEuLjYyZTk4YWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEwLTA5LTI4ICBMdWl6
IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZpZXdwb3J0IGNoYW5nZSBub3RpZmlj
YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
Njc1NQorCisgICAgICAgIFJlZ2FyZGluZyB2aWV3cG9ydCBtZXRhIHRhZ3MsIHdoYXQgbWF0dGVy
cyBmb3IgYnJvd3NlciBkZXZlbG9wZXJzIGlzIHRvIGtub3cgd2hlbiB0aGUgdmlld3BvcnQgZGF0
YSBoYXMKKyAgICAgICAgY2hhbmdlZCBhbmQgaXRzIGN1cnJlbnQgdmFsdWUuIFZpZXdwb3J0IGRh
dGEgYmVsb25ncyB0byB0aGUgZG9jdW1lbnQsIGJ1dCBpdCBpcyB1c2VmdWwgdG8ga2VlcCB0aGUg
Y3VycmVudAorICAgICAgICB2aWV3cG9ydCBkYXRhIGluIFBhZ2UgYXMgYSByZWZlcmVuY2UsIHRv
IGJlIGFibGUgdG8gc2VuZCBub3RpZmljYXRpb25zIG9ubHkgd2hlbiB0aGUgY3VycmVudCB2aWV3
cG9ydAorICAgICAgICBoYXMgY2hhbmdlZC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3Bw
OgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnZpZXdwb3J0QXJndW1lbnRzKToKKyAgICAg
ICAgKFFXZWJQYWdlOjp2aWV3cG9ydENvbmZpZ3VyYXRpb25Gb3JTaXplKToKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp2aWV3cG9ydERhdGFDaGFu
Z2VkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp2aWV3cG9ydEFzVGV4dCk6CisKIDIwMTAtMDktMjcg
IEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5jcHAKaW5kZXggOWZiYzVlNS4uNzY5OWI1OSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC02NDIsNyArNjQyLDcgQEAgUVdl
YlNlbGVjdE1ldGhvZCogQ2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlbGVjdFBvcHVwKCkgY29uc3QK
ICNlbmRpZgogfQogCi12b2lkIENocm9tZUNsaWVudFF0OjpkaWRSZWNlaXZlVmlld3BvcnRBcmd1
bWVudHMoRnJhbWUqIGZyYW1lLCBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKSBj
b25zdAordm9pZCBDaHJvbWVDbGllbnRRdDo6dmlld3BvcnREYXRhQ2hhbmdlZCgpIGNvbnN0CiB7
CiAgICAgZW1pdCBtX3dlYlBhZ2UtPnZpZXdwb3J0Q2hhbmdlUmVxdWVzdGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaCBiL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCmluZGV4IDU2ODAxYWEuLjBlODM5
NDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5o
CisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCkBAIC0xNzcs
NyArMTc3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFFXZWJTZWxlY3RNZXRo
b2QqIGNyZWF0ZVNlbGVjdFBvcHVwKCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhGcmFtZSosIGNvbnN0IFZpZXdwb3J0QXJndW1lbnRz
JikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aWV3cG9ydERhdGFDaGFuZ2VkKCkgY29u
c3Q7CiAKICAgICAgICAgUVdlYlBhZ2UqIG1fd2ViUGFnZTsKICAgICAgICAgV2ViQ29yZTo6S1VS
TCBsYXN0SG92ZXJVUkw7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCA4MzZkZjQ5Li5iNGFhMTMyIDEwMDY0NAotLS0g
YS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisr
KyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAK
QEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wTm90
aWZpY2F0aW9uKGJvb2wgYikKIAogUVN0cmluZyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6dmll
d3BvcnRBc1RleHQoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTaXplJiBhdmFpbGFibGVTaXplKQog
ewotICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIGFyZ3MgPSBwYWdlLT5tYWluRnJhbWUo
KS0+ZC0+dmlld3BvcnRBcmd1bWVudHMoKTsKKyAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
cyBhcmdzID0gcGFnZS0+ZC0+dmlld3BvcnRBcmd1bWVudHMoKTsKICAgICBXZWJDb3JlOjpWaWV3
cG9ydENvbmZpZ3VyYXRpb24gY29uZiA9IFdlYkNvcmU6OmZpbmRDb25maWd1cmF0aW9uRm9yVmll
d3BvcnREYXRhKGFyZ3MsCiAgICAgICAgIC8qIGRlc2t0b3Atd2lkdGggKi8gOTgwLAogICAgICAg
ICAvKiBkZXZpY2Utd2lkdGggICovIDMyMCwKLS0gCjEuNy4yLjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>69105</attachid>
            <date>2010-09-28 14:26:26 -0700</date>
            <delta_ts>2010-09-28 14:42:45 -0700</delta_ts>
            <desc>Script used for testing</desc>
            <filename>viewport_tests.html</filename>
            <type>text/html</type>
            <size>3053</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0PgoKICAgIHZhciB1cmxQYXJhbSA9IGZ1bmN0aW9uIChuYW1l
KQogICAgewogICAgICAgIHZhciByZWdleCA9IG5ldyBSZWdFeHAoIltcXD8mXSIgKyBuYW1lLnJl
cGxhY2UoL1tcW10vLCJcXFxbIikucmVwbGFjZSgvW1xdXS8sIlxcXF0iKSArICI9KFteJiNdKiki
KTsKICAgICAgICB2YXIgcmVzdWx0cyA9IHJlZ2V4LmV4ZWMobG9jYXRpb24uaHJlZik7CiAgICAg
ICAgcmV0dXJuIHJlc3VsdHMgPyByZXN1bHRzWzFdIDogJyc7CiAgICB9OwoKICAgIChmdW5jdGlv
biAoKSB7CgogICAgICAgIHZhciBwYXJhbXMgPSBbImluaXRpYWwtc2NhbGUiLCAibWluaW11bS1z
Y2FsZSIsICJtYXhpbXVtLXNjYWxlIiwgIndpZHRoIiwgImhlaWdodCIsICJ0YXJnZXQtZGVuc2l0
eS1kcGkiXTsKCiAgICAgICAgdmFyIGk7CiAgICAgICAgdmFyIHJlc3VsdCA9ICcnOwogICAgICAg
IGZvciAoaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgdmFyIHBh
cmFtID0gdXJsUGFyYW0ocGFyYW1zW2ldKTsKICAgICAgICAgICAgaWYgKHBhcmFtICE9ICIiKSB7
CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9ICcnKQogICAgICAgICAgICAgICAgICAgIHJl
c3VsdCArPScsICc7CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gcGFyYW1zW2ldICsgJz0nICsg
cGFyYW07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKHJlc3VsdCAhPSAnJykg
ewogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgnPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9IicgKyByZXN1bHQgKyciPicpOwogICAgICAgIH0KICAgIH0pKCk7CgogICAgdmFyIHN1Ym1p
dCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgdmFyIHVzZU1ldGFUYWcgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidXNlTWV0YVRhZyIpOwoKICAgICAgICB2YXIgaXRlbXMgPSBbCiAgICAgICAg
ICAgIHtuYW1lOiAiaW5pdGlhbC1zY2FsZSIsIGl0ZW06IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJpbml0aWFsU2NhbGUiKX0sCiAgICAgICAgICAgIHtuYW1lOiAibWluaW11bS1zY2FsZSIsIGl0
ZW06IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtaW5pbXVtU2NhbGUiKX0sCiAgICAgICAgICAg
IHtuYW1lOiAibWF4aW11bS1zY2FsZSIsIGl0ZW06IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJt
YXhpbXVtU2NhbGUiKX0sCiAgICAgICAgICAgIHtuYW1lOiAid2lkdGgiLCBpdGVtOiBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgid2lkdGgiKX0sCiAgICAgICAgICAgIHtuYW1lOiAiaGVpZ2h0Iiwg
aXRlbTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhlaWdodCIpfSwKICAgICAgICAgICAge25h
bWU6ICJ0YXJnZXQtZGVuc2l0eS1kcGkiLCBpdGVtOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGFyZ2V0RGVuc2l0eURwaSIpfQogICAgICAgIF07CgogICAgICAgIHZhciBwYXJhbXMgPSBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICB2YXIgcmVzdWx0ID0gJyc7
CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkgewogICAgICAg
ICAgICAgICAgaWYgKGl0ZW1zW2ldLml0ZW0udmFsdWUgIT0gJycpIHsKICAgICAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0ICE9ICcnKQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0g
JyYnOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBpdGVtc1tpXS5uYW1lICsgJz0nICsg
aXRlbXNbaV0uaXRlbS52YWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgIH0oKTsKCiAgICAgICAgdmFyIHVybCA9ICd2
aWV3cG9ydF90ZXN0cy5odG1sJzsKICAgICAgICBpZiAocGFyYW1zICE9ICcnKQogICAgICAgICAg
ICB1cmwgKz0gJz8nICsgcGFyYW1zOwoKICAgICAgICBzZXRUaW1lb3V0KCd3aW5kb3cubG9jYXRp
b24gPSAiJyArIHVybCArJyI7JywgMCk7CiAgICB9OwoKPC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+
CiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDoxMDAlIiBpZD0ibWV0YVRhZyI+PC9kaXY+PGJyPjxicj48
YnI+CiAgICA8dGFibGU+CiAgICA8dHI+PHRkPmluaXRpYWxTY2FsZTwvdGQ+PHRkPjxpbnB1dCB0
eXBlPSJ0ZXh0IiBpZD0iaW5pdGlhbFNjYWxlIj48L3RkPjwvdHI+CiAgICA8dHI+PHRkPm1pbmlt
dW1TY2FsZTwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibWluaW11bVNjYWxlIj48L3Rk
PjwvdHI+CiAgICA8dHI+PHRkPm1heGltdW1TY2FsZTwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0
IiBpZD0ibWF4aW11bVNjYWxlIj48L3RkPjwvdHI+CiAgICA8dHI+PHRkPndpZHRoPC90ZD48dGQ+
PGlucHV0IHR5cGU9InRleHQiIGlkPSJ3aWR0aCI+PC90ZD48L3RyPgogICAgPHRyPjx0ZD5oZWln
aHQ8L3RkPjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImhlaWdodCI+PC90ZD48L3RyPgogICAg
PHRyPjx0ZD50YXJnZXREZW5zaXR5RHBpPC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJ0
YXJnZXREZW5zaXR5RHBpIj48L3RkPjwvdHI+CiAgICA8dHI+PHRkIGNvbHNwYW49IjIiIGFsaWdu
PSJyaWdodCI+PGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9InN1Ym1pdCIgdmFsdWU9Ik9LIiBvbmNs
aWNrPSJzdWJtaXQoKSI+PC90ZD48L3RyPgogICAgPC90YWJsZT4KCjxzY3JpcHQ+CgogICAgKGZ1
bmN0aW9uICgpIHsKICAgICAgICB2YXIgdGFncyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJtZXRhIik7CiAgICAgICAgdmFyIGk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRhZ3Mu
bGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgaWYgKHRhZ3NbaV0ubmFtZSA9PT0gInZpZXdwb3J0
IikgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1ldGFUYWciKS5p
bm5lckhUTUwgPSB0YWdzW2ldLmNvbnRlbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9
KSgpOwoKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>69108</attachid>
            <date>2010-09-28 14:42:45 -0700</date>
            <delta_ts>2010-09-28 14:42:45 -0700</delta_ts>
            <desc>Script used for testing</desc>
            <filename>viewport_tests.html</filename>
            <type>text/html</type>
            <size>3081</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0PgoKICAgIHZhciB1cmxQYXJhbSA9IGZ1bmN0aW9uIChuYW1l
KQogICAgewogICAgICAgIHZhciByZWdleCA9IG5ldyBSZWdFeHAoIltcXD8mXSIgKyBuYW1lLnJl
cGxhY2UoL1tcW10vLCJcXFxbIikucmVwbGFjZSgvW1xdXS8sIlxcXF0iKSArICI9KFteJiNdKiki
KTsKICAgICAgICB2YXIgcmVzdWx0cyA9IHJlZ2V4LmV4ZWMobG9jYXRpb24uaHJlZik7CiAgICAg
ICAgcmV0dXJuIHJlc3VsdHMgPyByZXN1bHRzWzFdIDogJyc7CiAgICB9OwoKICAgIChmdW5jdGlv
biAoKSB7CgogICAgICAgIHZhciBwYXJhbXMgPSBbImluaXRpYWwtc2NhbGUiLCAibWluaW11bS1z
Y2FsZSIsICJtYXhpbXVtLXNjYWxlIiwgIndpZHRoIiwgImhlaWdodCIsICJ0YXJnZXQtZGVuc2l0
eS1kcGkiXTsKCiAgICAgICAgdmFyIGk7CiAgICAgICAgdmFyIHJlc3VsdCA9ICcnOwogICAgICAg
IGZvciAoaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgdmFyIHBh
cmFtID0gdXJsUGFyYW0ocGFyYW1zW2ldKTsKICAgICAgICAgICAgaWYgKHBhcmFtICE9ICIiKSB7
CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9ICcnKQogICAgICAgICAgICAgICAgICAgIHJl
c3VsdCArPScsICc7CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gcGFyYW1zW2ldICsgJz0nICsg
cGFyYW07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKHJlc3VsdCAhPSAnJykg
ewogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgnPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9IicgKyByZXN1bHQgKyciPicpOwogICAgICAgIH0KICAgIH0pKCk7CgogICAgdmFyIHN1Ym1p
dCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgdmFyIHVzZU1ldGFUYWcgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidXNlTWV0YVRhZyIpOwoKICAgICAgICB2YXIgaXRlbXMgPSBbCiAgICAgICAg
ICAgIHtuYW1lOiAiaW5pdGlhbC1zY2FsZSIsIGl0ZW06IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJpbml0aWFsU2NhbGUiKX0sCiAgICAgICAgICAgIHtuYW1lOiAibWluaW11bS1zY2FsZSIsIGl0
ZW06IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtaW5pbXVtU2NhbGUiKX0sCiAgICAgICAgICAg
IHtuYW1lOiAibWF4aW11bS1zY2FsZSIsIGl0ZW06IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJt
YXhpbXVtU2NhbGUiKX0sCiAgICAgICAgICAgIHtuYW1lOiAid2lkdGgiLCBpdGVtOiBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgid2lkdGgiKX0sCiAgICAgICAgICAgIHtuYW1lOiAiaGVpZ2h0Iiwg
aXRlbTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhlaWdodCIpfSwKICAgICAgICAgICAge25h
bWU6ICJ0YXJnZXQtZGVuc2l0eS1kcGkiLCBpdGVtOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGFyZ2V0RGVuc2l0eURwaSIpfQogICAgICAgIF07CgogICAgICAgIHZhciBwYXJhbXMgPSBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICB2YXIgcmVzdWx0ID0gJyc7
CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkgewogICAgICAg
ICAgICAgICAgaWYgKGl0ZW1zW2ldLml0ZW0udmFsdWUgIT0gJycpIHsKICAgICAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0ICE9ICcnKQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0g
JyYnOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBpdGVtc1tpXS5uYW1lICsgJz0nICsg
aXRlbXNbaV0uaXRlbS52YWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgIH0oKTsKCiAgICAgICAgdmFyIHVybCA9IHdp
bmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CiAgICAgICAg
aWYgKHBhcmFtcyAhPSAnJykKICAgICAgICAgICAgdXJsICs9ICc/JyArIHBhcmFtczsKCiAgICAg
ICAgc2V0VGltZW91dCgnd2luZG93LmxvY2F0aW9uID0gIicgKyB1cmwgKyciOycsIDApOwogICAg
fTsKCjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5PgogICAgPGRpdiBzdHlsZT0id2lkdGg6MTAwJSIg
aWQ9Im1ldGFUYWciPjwvZGl2Pjxicj48YnI+PGJyPgogICAgPHRhYmxlPgogICAgPHRyPjx0ZD5p
bml0aWFsU2NhbGU8L3RkPjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImluaXRpYWxTY2FsZSI+
PC90ZD48L3RyPgogICAgPHRyPjx0ZD5taW5pbXVtU2NhbGU8L3RkPjx0ZD48aW5wdXQgdHlwZT0i
dGV4dCIgaWQ9Im1pbmltdW1TY2FsZSI+PC90ZD48L3RyPgogICAgPHRyPjx0ZD5tYXhpbXVtU2Nh
bGU8L3RkPjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im1heGltdW1TY2FsZSI+PC90ZD48L3Ry
PgogICAgPHRyPjx0ZD53aWR0aDwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0id2lkdGgi
PjwvdGQ+PC90cj4KICAgIDx0cj48dGQ+aGVpZ2h0PC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQi
IGlkPSJoZWlnaHQiPjwvdGQ+PC90cj4KICAgIDx0cj48dGQ+dGFyZ2V0RGVuc2l0eURwaTwvdGQ+
PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGFyZ2V0RGVuc2l0eURwaSI+PC90ZD48L3RyPgog
ICAgPHRyPjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0icmlnaHQiPjxpbnB1dCB0eXBlPSJidXR0b24i
IGlkPSJzdWJtaXQiIHZhbHVlPSJPSyIgb25jbGljaz0ic3VibWl0KCkiPjwvdGQ+PC90cj4KICAg
IDwvdGFibGU+Cgo8c2NyaXB0PgoKICAgIChmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIHRhZ3Mg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibWV0YSIpOwogICAgICAgIHZhciBpOwog
ICAgICAgIGZvciAoaSA9IDA7IGkgPCB0YWdzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgIGlm
ICh0YWdzW2ldLm5hbWUgPT09ICJ2aWV3cG9ydCIpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJtZXRhVGFnIikuaW5uZXJIVE1MID0gdGFnc1tpXS5jb250ZW50Owog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSkoKTsKCjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69111</attachid>
            <date>2010-09-28 14:54:58 -0700</date>
            <delta_ts>2010-10-04 05:37:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Viewport-change-notifications.patch</filename>
            <type>text/plain</type>
            <size>15616</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBlMWQ4ZGY2NGI2NzJjZmI0MjcxNzFhY2VlZTljNGUyOTRlZDRiNmJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFR1ZSwgMjggU2VwIDIwMTAgMTg6MjA6NTAgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBWaWV3cG9ydCBjaGFuZ2Ugbm90aWZpY2F0aW9ucwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ2NzU1CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClJl
Z2FyZGluZyB2aWV3cG9ydCBtZXRhIHRhZ3MsIHdoYXQgbWF0dGVycyBmb3IgYnJvd3NlciBkZXZl
bG9wZXJzIGlzIHRvIGtub3cgd2hlbiB0aGUgdmlld3BvcnQgZGF0YSBoYXMKY2hhbmdlZCBhbmQg
aXRzIGN1cnJlbnQgdmFsdWUuIFZpZXdwb3J0IGRhdGEgYmVsb25ncyB0byB0aGUgZG9jdW1lbnQs
IGJ1dCBpdCBpcyB1c2VmdWwgdG8ga2VlcCB0aGUgY3VycmVudAp2aWV3cG9ydCBkYXRhIGluIFBh
Z2UgYXMgYSByZWZlcmVuY2UsIHRvIGJlIGFibGUgdG8gc2VuZCBub3RpZmljYXRpb25zIG9ubHkg
d2hlbiB0aGUgY3VycmVudCB2aWV3cG9ydApoYXMgY2hhbmdlZC4KCldlYkNvcmU6CgoqIGRvbS9E
b2N1bWVudC5jcHA6CihXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KToKKFdlYkNv
cmU6OkRvY3VtZW50OjpzZXRJblBhZ2VDYWNoZSk6CiogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6
CihXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6b3BlcmF0b3I9PSk6CiogaHRtbC9IVE1MQm9k
eUVsZW1lbnQuY3BwOgooV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50OjpIVE1MQm9keUVsZW1lbnQp
OgoqIHBhZ2UvQ2hyb21lLmNwcDoKKFdlYkNvcmU6OkNocm9tZTo6dmlld3BvcnREYXRhQ2hhbmdl
ZCk6CiogcGFnZS9DaHJvbWUuaDoKKiBwYWdlL0Nocm9tZUNsaWVudC5oOgooV2ViQ29yZTo6Q2hy
b21lQ2xpZW50Ojp2aWV3cG9ydERhdGFDaGFuZ2VkKToKKiBwYWdlL1BhZ2UuY3BwOgooV2ViQ29y
ZTo6UGFnZTo6dXBkYXRlVmlld3BvcnRBcmd1bWVudHMpOgoqIHBhZ2UvUGFnZS5oOgooV2ViQ29y
ZTo6UGFnZTo6dmlld3BvcnRBcmd1bWVudHMpOgoKV2ViS2l0L3F0OgoKKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKiBBcGkvcXdlYmZyYW1lX3AuaDoKKiBBcGkvcXdlYnBhZ2UuY3BwOgooUVdlYlBhZ2VQ
cml2YXRlOjp2aWV3cG9ydEFyZ3VtZW50cyk6CihRV2ViUGFnZTo6dmlld3BvcnRDb25maWd1cmF0
aW9uRm9yU2l6ZSk6CiogQXBpL3F3ZWJwYWdlX3AuaDoKKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5jcHA6CihXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6dmlld3BvcnREYXRhQ2hhbmdl
ZCk6CiogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6dmll
d3BvcnRBc1RleHQpOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAyOSArKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL2Rv
bS9WaWV3cG9ydEFyZ3VtZW50cy5oICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKysrKystCiBX
ZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgICB8ICAgIDIg
KwogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
ICA1ICsrKwogV2ViQ29yZS9wYWdlL0Nocm9tZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAyICsKIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9wYWdlL1BhZ2UuY3BwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICA5ICsrKysrKwogV2ViQ29yZS9wYWdlL1BhZ2UuaCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsrKysKIFdlYktpdC9xdC9BcGkvcXdlYmZyYW1l
LmNwcCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCAtLS0tLQogV2ViS2l0L3F0L0FwaS9x
d2ViZnJhbWVfcC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyIC0KIFdlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuY3BwICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCArKysrLQogV2Vi
S2l0L3F0L0FwaS9xd2VicGFnZV9wLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICsr
KwogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDI0ICsrKysrKysrKysrKysrKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHAgICAgICAgIHwgICAgMiArLQogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmggICAgICAgICAgfCAgICAyICstCiAuLi4vcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwICB8ICAgIDIgKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDEw
MiBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZjZjE2ODEuLjlhNTVlM2EgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMTAtMDktMjggIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5i
b3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVmlld3BvcnQgY2hhbmdlIG5vdGlmaWNhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NzU1CisKKyAgICAgICAgUmVnYXJkaW5nIHZpZXdw
b3J0IG1ldGEgdGFncywgd2hhdCBtYXR0ZXJzIGZvciBicm93c2VyIGRldmVsb3BlcnMgaXMgdG8g
a25vdyB3aGVuIHRoZSB2aWV3cG9ydCBkYXRhIGhhcworICAgICAgICBjaGFuZ2VkIGFuZCBpdHMg
Y3VycmVudCB2YWx1ZS4gVmlld3BvcnQgZGF0YSBiZWxvbmdzIHRvIHRoZSBkb2N1bWVudCwgYnV0
IGl0IGlzIHVzZWZ1bCB0byBrZWVwIHRoZSBjdXJyZW50CisgICAgICAgIHZpZXdwb3J0IGRhdGEg
aW4gUGFnZSBhcyBhIHJlZmVyZW5jZSwgdG8gYmUgYWJsZSB0byBzZW5kIG5vdGlmaWNhdGlvbnMg
b25seSB3aGVuIHRoZSBjdXJyZW50IHZpZXdwb3J0CisgICAgICAgIGhhcyBjaGFuZ2VkLgorCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpw
cm9jZXNzVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEluUGFnZUNh
Y2hlKToKKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBodG1sL0hUTUxC
b2R5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OkhUTUxC
b2R5RWxlbWVudCk6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lOjp2aWV3cG9ydERhdGFDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5o
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnQ6OnZpZXdwb3J0RGF0YUNoYW5nZWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cyk6CisgICAg
ICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp2aWV3cG9ydEFyZ3Vt
ZW50cyk6CisKIDIwMTAtMDktMjggIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOWE5MjNmNC4uYmQx
Y2E2ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMjYwNyw3ICsyNjA3LDcgQEAgdm9pZCBEb2N1bWVudDo6cHJv
Y2Vzc1ZpZXdwb3J0KGNvbnN0IFN0cmluZyYgZmVhdHVyZXMpCiAgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJhbWUtPnBhZ2UoKS0+Y2hy
b21lKCktPmNsaWVudCgpLT5kaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMoZnJhbWUsIG1fdmll
d3BvcnRBcmd1bWVudHMpOworICAgIGZyYW1lLT5wYWdlKCktPnVwZGF0ZVZpZXdwb3J0QXJndW1l
bnRzKCk7CiB9CiAKIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgRG9jdW1lbnQ6OnByZXBh
cmVNb3VzZUV2ZW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJbnRQb2lu
dCYgZG9jdW1lbnRQb2ludCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKQEAgLTM4
MjUsNyArMzgyNSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEluUGFnZUNhY2hlKGJvb2wgZmxhZykK
ICAgICAgICAgbV9zYXZlZFJlbmRlcmVyID0gMDsKIAogICAgICAgICBpZiAoZnJhbWUoKSAmJiBm
cmFtZSgpLT5wYWdlKCkpCi0gICAgICAgICAgICBmcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKGZyYW1lKCksIG1fdmlld3BvcnRB
cmd1bWVudHMpOworICAgICAgICAgICAgZnJhbWUoKS0+cGFnZSgpLT51cGRhdGVWaWV3cG9ydEFy
Z3VtZW50cygpOwogCiAgICAgICAgIGlmIChjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSkKICAgICAg
ICAgICAgIHNjaGVkdWxlU3R5bGVSZWNhbGMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Zp
ZXdwb3J0QXJndW1lbnRzLmggYi9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCmluZGV4
IDU3MzE4NDIuLjMyYzk0NTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1l
bnRzLmgKKysrIGIvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaApAQCAtODUsOSArODUs
MTUgQEAgc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzIHsKIAogICAgIGZsb2F0IHVzZXJTY2FsYWJs
ZTsKIAotICAgIGJvb2wgaGFzQ3VzdG9tQXJndW1lbnQoKSBjb25zdAorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAg
ICByZXR1cm4gaW5pdGlhbFNjYWxlICE9IFZhbHVlQXV0byB8fCBtaW5pbXVtU2NhbGUgIT0gVmFs
dWVBdXRvIHx8IG1heGltdW1TY2FsZSAhPSBWYWx1ZUF1dG8gfHwgd2lkdGggIT0gVmFsdWVBdXRv
IHx8IGhlaWdodCAhPSBWYWx1ZUF1dG8gfHwgdXNlclNjYWxhYmxlICE9IFZhbHVlQXV0byB8fCB0
YXJnZXREZW5zaXR5RHBpICE9IFZhbHVlQXV0bzsKKyAgICAgICAgcmV0dXJuIGluaXRpYWxTY2Fs
ZSA9PSBvdGhlci5pbml0aWFsU2NhbGUKKyAgICAgICAgICAgICYmIG1pbmltdW1TY2FsZSA9PSBv
dGhlci5taW5pbXVtU2NhbGUKKyAgICAgICAgICAgICYmIG1heGltdW1TY2FsZSA9PSBvdGhlci5t
YXhpbXVtU2NhbGUKKyAgICAgICAgICAgICYmIHdpZHRoID09IG90aGVyLndpZHRoCisgICAgICAg
ICAgICAmJiBoZWlnaHQgPT0gb3RoZXIuaGVpZ2h0CisgICAgICAgICAgICAmJiB0YXJnZXREZW5z
aXR5RHBpID09IG90aGVyLnRhcmdldERlbnNpdHlEcGkKKyAgICAgICAgICAgICYmIHVzZXJTY2Fs
YWJsZSA9PSBvdGhlci51c2VyU2NhbGFibGU7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVt
ZW50LmNwcAppbmRleCA5NjEzMmYzLi4xYmY0ZTJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTEJvZHlFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNw
cApAQCAtNDMsNiArNDMsOCBAQCBIVE1MQm9keUVsZW1lbnQ6OkhUTUxCb2R5RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbgogICAgIDogSFRNTEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoYm9keVRh
ZykpOworICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+cGFnZSgpKQorICAgICAgICBkb2N1
bWVudC0+cGFnZSgpLT51cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpOwogfQogCiBQYXNzUmVmUHRy
PEhUTUxCb2R5RWxlbWVudD4gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmNwcAppbmRleCA4ZmVlZGNlLi4yNTk0MDMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNDI2LDYgKzQy
NiwxMSBAQCB2b2lkIENocm9tZTo6Y2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBmaWxlbmFtZXMsIEZpbGVDaG9vc2VyKiBmaQogICAgIG1fY2xpZW50LT5jaG9vc2VJY29u
Rm9yRmlsZXMoZmlsZW5hbWVzLCBmaWxlQ2hvb3Nlcik7CiB9CiAKK3ZvaWQgQ2hyb21lOjp2aWV3
cG9ydERhdGFDaGFuZ2VkKCkgY29uc3QKK3sKKyAgICBtX2NsaWVudC0+dmlld3BvcnREYXRhQ2hh
bmdlZCgpOworfQorCiB2b2lkIENocm9tZTo6c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29y
KQogewogICAgIG1fY2xpZW50LT5zZXRDdXJzb3IoY3Vyc29yKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9DaHJvbWUuaCBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCA1ZWU4ODk3Li43
ZWMzYTM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCkBAIC0xMzksNiArMTM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsK
ICAgICAgICAgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBG
aWxlQ2hvb3NlciopOwogCisgICAgICAgIHZvaWQgdmlld3BvcnREYXRhQ2hhbmdlZCgpIGNvbnN0
OworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICB2b2lkIGZvY3VzTlNWaWV3KE5TVmlldyop
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggNzU0MjYxNS4uYzc3MDQ3ZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaApAQCAtMTQ2LDYgKzE0Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSA9IDA7CiAgICAgICAgIC8vIEVu
ZCBtZXRob2RzIHVzZWQgYnkgSG9zdFdpbmRvdy4KIAorICAgICAgICB2aXJ0dWFsIHZvaWQgdmll
d3BvcnREYXRhQ2hhbmdlZCgpIGNvbnN0IHsgfQorCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb250
ZW50c1NpemVDaGFuZ2VkKEZyYW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0ID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldyhjb25zdCBJbnRSZWN0JiwgY29uc3Qg
U2Nyb2xsVmlldyopIGNvbnN0ID0gMDsgLy8gQ3VycmVudGx5IG9ubHkgTWFjIGhhcyBhIG5vbiBl
bXB0eSBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAKQEAgLTE1NSw4ICsxNTcsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFRvb2xUaXAoY29uc3QgU3Ry
aW5nJiwgVGV4dERpcmVjdGlvbikgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlVmlld3BvcnRBcmd1bWVudHMoRnJhbWUqLCBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYpIGNv
bnN0IHsgfQotCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmludChGcmFtZSopID0gMDsKIAogI2lm
IEVOQUJMRShEQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA5Mjk1NWNjLi4yOGRmOWFhZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNDE2
LDYgKzQxNiwxNSBAQCB2b2lkIFBhZ2U6OnNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGNGb3JBbGxQ
YWdlcygpCiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2NoZWR1bGVGb3JjZWRTdHls
ZVJlY2FsYygpOwogfQogCit2b2lkIFBhZ2U6OnVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKCkKK3sK
KyAgICBpZiAoIW1haW5GcmFtZSgpIHx8ICFtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSB8fCBtYWlu
RnJhbWUoKS0+ZG9jdW1lbnQoKS0+dmlld3BvcnRBcmd1bWVudHMoKSA9PSBtX3ZpZXdwb3J0QXJn
dW1lbnRzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ZpZXdwb3J0QXJndW1lbnRzID0gbWFp
bkZyYW1lKCktPmRvY3VtZW50KCktPnZpZXdwb3J0QXJndW1lbnRzKCk7CisgICAgY2hyb21lKCkt
PnZpZXdwb3J0RGF0YUNoYW5nZWQoKTsKK30KKwogdm9pZCBQYWdlOjpyZWZyZXNoUGx1Z2lucyhi
b29sIHJlbG9hZCkKIHsKICAgICBpZiAoIWFsbFBhZ2VzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL1BhZ2UuaCBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggOGYwMWZhYS4uNDYwYTY5OCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5o
CkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTEyNyw2ICsxMjgsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgUmVuZGVyVGhlbWUqIHRoZW1lKCkgY29uc3QgeyByZXR1cm4gbV90
aGVtZS5nZXQoKTsgfTsKIAorICAgICAgICBWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3Vt
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRBcmd1bWVudHM7IH0KKyAgICAgICAgdm9p
ZCB1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpOworCiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZnJl
c2hQbHVnaW5zKGJvb2wgcmVsb2FkKTsKICAgICAgICAgUGx1Z2luRGF0YSogcGx1Z2luRGF0YSgp
IGNvbnN0OwogCkBAIC0zODMsNiArMzg3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlm
CiAKICAgICAgICAgVmlld01vZGUgbV92aWV3TW9kZTsKKworICAgICAgICBWaWV3cG9ydEFyZ3Vt
ZW50cyBtX3ZpZXdwb3J0QXJndW1lbnRzOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9B
cGkvcXdlYmZyYW1lLmNwcAppbmRleCAxNzkxMDk2Li41NWVjNDY0IDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3Bw
CkBAIC0yMzAsMTQgKzIzMCw2IEBAIHZvaWQgUVdlYkZyYW1lUHJpdmF0ZTo6aW5pdChRV2ViRnJh
bWUgKnFmcmFtZSwgUVdlYkZyYW1lRGF0YSAqZnJhbWVEYXRhKQogICAgIGZyYW1lLT5pbml0KCk7
CiB9CiAKLVdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIFFXZWJGcmFtZVByaXZhdGU6OnZpZXdw
b3J0QXJndW1lbnRzKCkKLXsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzKCk7Ci0KLSAgICByZXR1
cm4gZnJhbWUtPmRvY3VtZW50KCktPnZpZXdwb3J0QXJndW1lbnRzKCk7Ci19Ci0KIHZvaWQgUVdl
YkZyYW1lUHJpdmF0ZTo6c2V0UGFnZShRV2ViUGFnZSogbmV3UGFnZSkKIHsKICAgICBpZiAocGFn
ZSA9PSBuZXdQYWdlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oIGIv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oCmluZGV4IDViYTNmNTIuLjc5MTg3YWIgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lX3AuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3
ZWJmcmFtZV9wLmgKQEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVuZGVyRnJv
bVRpbGVkQmFja2luZ1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFFSZWdp
b24mIGNsaXApOwogI2VuZGlmCiAKLSAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3
cG9ydEFyZ3VtZW50cygpOwotCiAgICAgUVdlYkZyYW1lICpxOwogICAgIFF0OjpTY3JvbGxCYXJQ
b2xpY3kgaG9yaXpvbnRhbFNjcm9sbEJhclBvbGljeTsKICAgICBRdDo6U2Nyb2xsQmFyUG9saWN5
IHZlcnRpY2FsU2Nyb2xsQmFyUG9saWN5OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCA5MzIxMDNkLi5mMjcy
OTFhIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMzI4LDYgKzMyOCwxMSBAQCBRV2ViUGFnZVByaXZhdGU6
On5RV2ViUGFnZVByaXZhdGUoKQogI2VuZGlmCiB9CiAKK1dlYkNvcmU6OlZpZXdwb3J0QXJndW1l
bnRzIFFXZWJQYWdlUHJpdmF0ZTo6dmlld3BvcnRBcmd1bWVudHMoKQoreworICAgIHJldHVybiBw
YWdlID8gcGFnZS0+dmlld3BvcnRBcmd1bWVudHMoKSA6IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1l
bnRzKCk7Cit9CisKIFdlYkNvcmU6OlBhZ2UqIFFXZWJQYWdlUHJpdmF0ZTo6Y29yZShjb25zdCBR
V2ViUGFnZSogcGFnZSkKIHsKICAgICByZXR1cm4gcGFnZS0+ZC0+cGFnZTsKQEAgLTIzODAsOCAr
MjM4NSw3IEBAIFFXZWJQYWdlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb24gUVdlYlBhZ2U6OnZpZXdw
b3J0Q29uZmlndXJhdGlvbkZvclNpemUoY29uc3QgUVNpCiAgICAgICAgIGRldmljZUhlaWdodCA9
IHNpemUuaGVpZ2h0KCk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0
aW9uIGNvbmYgPSBXZWJDb3JlOjpmaW5kQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0RGF0YShtYWlu
RnJhbWUoKS0+ZC0+dmlld3BvcnRBcmd1bWVudHMoKSwKLSAgICAgICAgICAgIGRlc2t0b3BXaWR0
aCwgZGV2aWNlV2lkdGgsIGRldmljZUhlaWdodCwgZGV2aWNlRFBJLCBhdmFpbGFibGVTaXplKTsK
KyAgICBXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb24gY29uZiA9IFdlYkNvcmU6OmZpbmRD
b25maWd1cmF0aW9uRm9yVmlld3BvcnREYXRhKGQtPnZpZXdwb3J0QXJndW1lbnRzKCksIGRlc2t0
b3BXaWR0aCwgZGV2aWNlV2lkdGgsIGRldmljZUhlaWdodCwgZGV2aWNlRFBJLCBhdmFpbGFibGVT
aXplKTsKIAogICAgIHJlc3VsdC5tX2lzVmFsaWQgPSB0cnVlOwogICAgIHJlc3VsdC5tX3NpemUg
PSBjb25mLmxheW91dFZpZXdwb3J0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAppbmRleCAxMjcxNmY5Li4xZThkYTNl
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAorKysgYi9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlX3AuaApAQCAtMzYsNiArMzYsOCBAQAogCiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIENocm9tZUNsaWVudFF0OwogICAgIGNsYXNzIENvbnRleHRNZW51Q2xp
ZW50UXQ7CkBAIC0xMzksNiArMTQxLDggQEAgcHVibGljOgogICAgIFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKTsKICAgICBxdWludDE2IGluc3BlY3Rv
clNlcnZlclBvcnQoKTsKIAorICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0
QXJndW1lbnRzKCk7CisKICNpZm5kZWYgUVRfTk9fU0hPUlRDVVQKICAgICBzdGF0aWMgUVdlYlBh
Z2U6OldlYkFjdGlvbiBlZGl0b3JBY3Rpb25Gb3JLZXlFdmVudChRS2V5RXZlbnQqIGV2ZW50KTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFu
Z2VMb2cKaW5kZXggMWJkNzVlMi4uZTkzMmQ2MiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDkt
MjggIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmlld3BvcnQgY2hhbmdl
IG5vdGlmaWNhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ2NzU1CisKKyAgICAgICAgUmVnYXJkaW5nIHZpZXdwb3J0IG1ldGEgdGFncywgd2hh
dCBtYXR0ZXJzIGZvciBicm93c2VyIGRldmVsb3BlcnMgaXMgdG8ga25vdyB3aGVuIHRoZSB2aWV3
cG9ydCBkYXRhIGhhcworICAgICAgICBjaGFuZ2VkIGFuZCBpdHMgY3VycmVudCB2YWx1ZS4gVmll
d3BvcnQgZGF0YSBiZWxvbmdzIHRvIHRoZSBkb2N1bWVudCwgYnV0IGl0IGlzIHVzZWZ1bCB0byBr
ZWVwIHRoZSBjdXJyZW50CisgICAgICAgIHZpZXdwb3J0IGRhdGEgaW4gUGFnZSBhcyBhIHJlZmVy
ZW5jZSwgdG8gYmUgYWJsZSB0byBzZW5kIG5vdGlmaWNhdGlvbnMgb25seSB3aGVuIHRoZSBjdXJy
ZW50IHZpZXdwb3J0CisgICAgICAgIGhhcyBjaGFuZ2VkLgorCisgICAgICAgICogQXBpL3F3ZWJm
cmFtZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6dmlld3BvcnRBcmd1bWVudHMp
OgorICAgICAgICAoUVdlYlBhZ2U6OnZpZXdwb3J0Q29uZmlndXJhdGlvbkZvclNpemUpOgorICAg
ICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnZpZXdwb3J0
RGF0YUNoYW5nZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgor
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnZpZXdwb3J0QXNUZXh0KToKKwogMjAx
MC0wOS0yOCAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKaW5kZXggOWZiYzVlNS4uNzY5OWI1OSAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAor
KysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC02NDIs
NyArNjQyLDcgQEAgUVdlYlNlbGVjdE1ldGhvZCogQ2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlbGVj
dFBvcHVwKCkgY29uc3QKICNlbmRpZgogfQogCi12b2lkIENocm9tZUNsaWVudFF0OjpkaWRSZWNl
aXZlVmlld3BvcnRBcmd1bWVudHMoRnJhbWUqIGZyYW1lLCBjb25zdCBWaWV3cG9ydEFyZ3VtZW50
cyYgYXJndW1lbnRzKSBjb25zdAordm9pZCBDaHJvbWVDbGllbnRRdDo6dmlld3BvcnREYXRhQ2hh
bmdlZCgpIGNvbnN0CiB7CiAgICAgZW1pdCBtX3dlYlBhZ2UtPnZpZXdwb3J0Q2hhbmdlUmVxdWVz
dGVkKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCmluZGV4
IDU2ODAxYWEuLjBlODM5NDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5oCkBAIC0xNzcsNyArMTc3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IFFXZWJTZWxlY3RNZXRob2QqIGNyZWF0ZVNlbGVjdFBvcHVwKCkgY29uc3Q7CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhGcmFtZSosIGNvbnN0IFZp
ZXdwb3J0QXJndW1lbnRzJikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aWV3cG9ydERh
dGFDaGFuZ2VkKCkgY29uc3Q7CiAKICAgICAgICAgUVdlYlBhZ2UqIG1fd2ViUGFnZTsKICAgICAg
ICAgV2ViQ29yZTo6S1VSTCBsYXN0SG92ZXJVUkw7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCA4MzZkZjQ5Li5iNGFh
MTMyIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHAKQEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpkdW1wTm90aWZpY2F0aW9uKGJvb2wgYikKIAogUVN0cmluZyBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6dmlld3BvcnRBc1RleHQoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTaXplJiBh
dmFpbGFibGVTaXplKQogewotICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIGFyZ3MgPSBw
YWdlLT5tYWluRnJhbWUoKS0+ZC0+dmlld3BvcnRBcmd1bWVudHMoKTsKKyAgICBXZWJDb3JlOjpW
aWV3cG9ydEFyZ3VtZW50cyBhcmdzID0gcGFnZS0+ZC0+dmlld3BvcnRBcmd1bWVudHMoKTsKICAg
ICBXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb24gY29uZiA9IFdlYkNvcmU6OmZpbmRDb25m
aWd1cmF0aW9uRm9yVmlld3BvcnREYXRhKGFyZ3MsCiAgICAgICAgIC8qIGRlc2t0b3Atd2lkdGgg
Ki8gOTgwLAogICAgICAgICAvKiBkZXZpY2Utd2lkdGggICovIDMyMCwKLS0gCjEuNy4yLjIKCg==
</data>
<flag name="review"
          id="58740"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69620</attachid>
            <date>2010-10-04 05:37:53 -0700</date>
            <delta_ts>2010-10-04 05:44:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Viewport-data-change-notifications.patch</filename>
            <type>text/plain</type>
            <size>16591</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBiY2ZmMTEyMWQ4MjQyYWJmZGJmZGVmN2Q0ZTgwYzhmYTQ1NmExOGMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IE1vbiwgNCBPY3QgMjAxMCAwODo1MDoxOCAtMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFZpZXdwb3J0IGRhdGEgY2hhbmdlIG5vdGlmaWNhdGlvbnMKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njc1NQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CgpSZWdhcmRpbmcgdmlld3BvcnQgbWV0YSB0YWdzLCB3aGF0IG1hdHRlcnMgZm9yIGJyb3dzZXIg
ZGV2ZWxvcGVycyBpcyB0byBrbm93IHdoZW4gdGhlIHZpZXdwb3J0IGRhdGEgaGFzCmNoYW5nZWQg
YW5kIGl0cyBjdXJyZW50IHZhbHVlLiBWaWV3cG9ydCBkYXRhIGJlbG9uZ3MgdG8gdGhlIGRvY3Vt
ZW50LCBidXQgaXQgaXMgdXNlZnVsIHRvIGtlZXAgdGhlIGN1cnJlbnQKdmlld3BvcnQgZGF0YSBp
biBQYWdlIGFzIGEgcmVmZXJlbmNlLCB0byBiZSBhYmxlIHRvIHNlbmQgbm90aWZpY2F0aW9ucyBv
bmx5IHdoZW4gdGhlIGN1cnJlbnQgdmlld3BvcnQKaGFzIGNoYW5nZWQuCgpXZWJDb3JlOgoKKiBk
b20vRG9jdW1lbnQuY3BwOgooV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NWaWV3cG9ydCk6CihX
ZWJDb3JlOjpEb2N1bWVudDo6c2V0SW5QYWdlQ2FjaGUpOgoqIGRvbS9WaWV3cG9ydEFyZ3VtZW50
cy5oOgooV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6Om9wZXJhdG9yPT0pOgoqIGh0bWwvSFRN
TEJvZHlFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6SFRNTEJvZHlFbGVt
ZW50KToKKiBwYWdlL0Nocm9tZS5jcHA6CihXZWJDb3JlOjpDaHJvbWU6OnZpZXdwb3J0RGF0YUNo
YW5nZWQpOgoqIHBhZ2UvQ2hyb21lLmg6CiogcGFnZS9DaHJvbWVDbGllbnQuaDoKKFdlYkNvcmU6
OkNocm9tZUNsaWVudDo6dmlld3BvcnREYXRhQ2hhbmdlZCk6CiogcGFnZS9QYWdlLmNwcDoKKFdl
YkNvcmU6OlBhZ2U6OnVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKToKKiBwYWdlL1BhZ2UuaDoKKFdl
YkNvcmU6OlBhZ2U6OnZpZXdwb3J0QXJndW1lbnRzKToKCldlYktpdC9xdDoKCiogQXBpL3F3ZWJm
cmFtZS5jcHA6CiogQXBpL3F3ZWJmcmFtZV9wLmg6CiogQXBpL3F3ZWJwYWdlLmNwcDoKKFFXZWJQ
YWdlUHJpdmF0ZTo6dmlld3BvcnRBcmd1bWVudHMpOgooUVdlYlBhZ2U6OnZpZXdwb3J0Q29uZmln
dXJhdGlvbkZvclNpemUpOgoqIEFwaS9xd2VicGFnZV9wLmg6CiogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwOgooV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnZpZXdwb3J0RGF0YUNo
YW5nZWQpOgoqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CiogV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgooRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnZpZXdwb3J0QXNUZXh0KToKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMjkgKysrKysrKysrKysrKysrKysrKysKIFdlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29y
ZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaCAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsrKysr
LQogV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAgICAgICAgICAgICAgICAgICAgfCAg
ICAzICsrCiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDUgKysrCiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDMgKysKIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICAzICsrCiBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKysrKysrCiBXZWJDb3JlL3BhZ2UvUGFnZS5o
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKysrKwogV2ViS2l0L3F0L0Fw
aS9xd2ViZnJhbWUuY3BwICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA4IC0tLS0tCiBXZWJL
aXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgLQog
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA4
ICsrKystCiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaCAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDQgKysrCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMjQgKysrKysrKysrKysrKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0LmNwcCAgICAgICAgfCAgICAyICstCiBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuaCAgICAgICAgICB8ICAgIDIgKy0KIC4uLi9xdC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAgIHwgICAgMiArLQogMTggZmlsZXMg
Y2hhbmdlZCwgMTA3IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJjZTI3NS4uMjc3
ZWJmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0wOS0yOCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdv
c3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBWaWV3cG9ydCBkYXRhIGNoYW5nZSBub3RpZmljYXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njc1NQorCisgICAgICAg
IFJlZ2FyZGluZyB2aWV3cG9ydCBtZXRhIHRhZ3MsIHdoYXQgbWF0dGVycyBmb3IgYnJvd3NlciBk
ZXZlbG9wZXJzIGlzIHRvIGtub3cgd2hlbiB0aGUgdmlld3BvcnQgZGF0YSBoYXMKKyAgICAgICAg
Y2hhbmdlZCBhbmQgaXRzIGN1cnJlbnQgdmFsdWUuIFZpZXdwb3J0IGRhdGEgYmVsb25ncyB0byB0
aGUgZG9jdW1lbnQsIGJ1dCBpdCBpcyB1c2VmdWwgdG8ga2VlcCB0aGUgY3VycmVudAorICAgICAg
ICB2aWV3cG9ydCBkYXRhIGluIFBhZ2UgYXMgYSByZWZlcmVuY2UsIHRvIGJlIGFibGUgdG8gc2Vu
ZCBub3RpZmljYXRpb25zIG9ubHkgd2hlbiB0aGUgY3VycmVudCB2aWV3cG9ydAorICAgICAgICBo
YXMgY2hhbmdlZC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpzZXRJblBhZ2VDYWNoZSk6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6
CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6b3BlcmF0b3I9PSk6CisgICAg
ICAgICogaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJv
ZHlFbGVtZW50OjpIVE1MQm9keUVsZW1lbnQpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6dmlld3BvcnREYXRhQ2hhbmdlZCk6CisgICAgICAg
ICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50Ojp2aWV3cG9ydERhdGFDaGFuZ2VkKToKKyAgICAgICAg
KiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlVmlld3BvcnRB
cmd1bWVudHMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6dmlld3BvcnRBcmd1bWVudHMpOgorCiAyMDEwLTA5LTMwICBDaHJpcyBNYXJyaW4gIDxjbWFy
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggOWE5MjNmNC4uYmQxY2E2ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjYwNyw3ICsyNjA3LDcg
QEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KGNvbnN0IFN0cmluZyYgZmVhdHVyZXMp
CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5kaWRSZWNlaXZlVmlld3BvcnRB
cmd1bWVudHMoZnJhbWUsIG1fdmlld3BvcnRBcmd1bWVudHMpOworICAgIGZyYW1lLT5wYWdlKCkt
PnVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKCk7CiB9CiAKIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMgRG9jdW1lbnQ6OnByZXBhcmVNb3VzZUV2ZW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBJbnRQb2ludCYgZG9jdW1lbnRQb2ludCwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkKQEAgLTM4MjUsNyArMzgyNSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldElu
UGFnZUNhY2hlKGJvb2wgZmxhZykKICAgICAgICAgbV9zYXZlZFJlbmRlcmVyID0gMDsKIAogICAg
ICAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkpCi0gICAgICAgICAgICBmcmFtZSgp
LT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRz
KGZyYW1lKCksIG1fdmlld3BvcnRBcmd1bWVudHMpOworICAgICAgICAgICAgZnJhbWUoKS0+cGFn
ZSgpLT51cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpOwogCiAgICAgICAgIGlmIChjaGlsZE5lZWRz
U3R5bGVSZWNhbGMoKSkKICAgICAgICAgICAgIHNjaGVkdWxlU3R5bGVSZWNhbGMoKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggYi9XZWJDb3JlL2RvbS9WaWV3
cG9ydEFyZ3VtZW50cy5oCmluZGV4IDU3MzE4NDIuLjMyYzk0NTQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKKysrIGIvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1
bWVudHMuaApAQCAtODUsOSArODUsMTUgQEAgc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzIHsKIAog
ICAgIGZsb2F0IHVzZXJTY2FsYWJsZTsKIAotICAgIGJvb2wgaGFzQ3VzdG9tQXJndW1lbnQoKSBj
b25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgb3RoZXIp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gaW5pdGlhbFNjYWxlICE9IFZhbHVlQXV0byB8
fCBtaW5pbXVtU2NhbGUgIT0gVmFsdWVBdXRvIHx8IG1heGltdW1TY2FsZSAhPSBWYWx1ZUF1dG8g
fHwgd2lkdGggIT0gVmFsdWVBdXRvIHx8IGhlaWdodCAhPSBWYWx1ZUF1dG8gfHwgdXNlclNjYWxh
YmxlICE9IFZhbHVlQXV0byB8fCB0YXJnZXREZW5zaXR5RHBpICE9IFZhbHVlQXV0bzsKKyAgICAg
ICAgcmV0dXJuIGluaXRpYWxTY2FsZSA9PSBvdGhlci5pbml0aWFsU2NhbGUKKyAgICAgICAgICAg
ICYmIG1pbmltdW1TY2FsZSA9PSBvdGhlci5taW5pbXVtU2NhbGUKKyAgICAgICAgICAgICYmIG1h
eGltdW1TY2FsZSA9PSBvdGhlci5tYXhpbXVtU2NhbGUKKyAgICAgICAgICAgICYmIHdpZHRoID09
IG90aGVyLndpZHRoCisgICAgICAgICAgICAmJiBoZWlnaHQgPT0gb3RoZXIuaGVpZ2h0CisgICAg
ICAgICAgICAmJiB0YXJnZXREZW5zaXR5RHBpID09IG90aGVyLnRhcmdldERlbnNpdHlEcGkKKyAg
ICAgICAgICAgICYmIHVzZXJTY2FsYWJsZSA9PSBvdGhlci51c2VyU2NhbGFibGU7CiAgICAgfQog
fTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAgYi9XZWJD
b3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAppbmRleCA5NjEzMmYzLi4xMjc1M2M2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTEJvZHlFbGVtZW50LmNwcApAQCAtMTk1LDYgKzE5NSw5IEBAIHZvaWQgSFRNTEJvZHlF
bGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiAgICAgLy8gQnV0IHdpdGhvdXQgaXQgd2Ug
aGFuZyBkdXJpbmcgV2ViS2l0IHRlc3RzOyBuZWVkIHRvIGZpeCB0aGF0IGFuZCByZW1vdmUgdGhp
cy4KICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gZG9jdW1lbnQoKS0+dmlldygpKQogICAgICAg
ICB2aWV3LT5zY2hlZHVsZVJlbGF5b3V0KCk7CisKKyAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1
bWVudCgpLT5wYWdlKCkpCisgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+dXBkYXRlVmlld3Bv
cnRBcmd1bWVudHMoKTsKIH0KIAogYm9vbCBIVE1MQm9keUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRl
KEF0dHJpYnV0ZSAqYXR0cikgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggOGZlZWRjZS4uOTQ0ZjMyZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAKQEAgLTQyNiw2ICs0MjYsMTEgQEAgdm9pZCBDaHJvbWU6OmNob29zZUljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBGaWxlQ2hvb3NlciogZmkKICAgICBt
X2NsaWVudC0+Y2hvb3NlSWNvbkZvckZpbGVzKGZpbGVuYW1lcywgZmlsZUNob29zZXIpOwogfQog
Cit2b2lkIENocm9tZTo6ZGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2UoY29uc3QgVmlld3Bv
cnRBcmd1bWVudHMmIGFyZ3VtZW50cykgY29uc3QKK3sKKyAgICBtX2NsaWVudC0+ZGlzcGF0Y2hW
aWV3cG9ydERhdGFEaWRDaGFuZ2UoYXJndW1lbnRzKTsKK30KKwogdm9pZCBDaHJvbWU6OnNldEN1
cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKIHsKICAgICBtX2NsaWVudC0+c2V0Q3Vyc29yKGN1
cnNvcik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgKaW5kZXggNWVlODg5Ny4uNWI0YzYwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0Nocm9tZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtNTEsNiArNTEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgY2xhc3Mg
Tm90aWZpY2F0aW9uUHJlc2VudGVyOwogI2VuZGlmCisgICAgY2xhc3MgVmlld3BvcnRBcmd1bWVu
dHM7CiAKICAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKICAgICBzdHJ1Y3QgV2luZG93RmVh
dHVyZXM7CkBAIC0xMzksNiArMTQwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICAg
ICAgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlQ2hv
b3NlciopOwogCisgICAgICAgIHZvaWQgZGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2UoY29u
c3QgVmlld3BvcnRBcmd1bWVudHMmKSBjb25zdDsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAg
ICAgdm9pZCBmb2N1c05TVmlldyhOU1ZpZXcqKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4
IDc1NDI2MTUuLjQ3OTFmNTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTE0Niw2ICsxNDYsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3Qg
Q3Vyc29yJikgPSAwOwogICAgICAgICAvLyBFbmQgbWV0aG9kcyB1c2VkIGJ5IEhvc3RXaW5kb3cu
CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlKGNv
bnN0IFZpZXdwb3J0QXJndW1lbnRzJikgY29uc3QgeyB9CisKICAgICAgICAgdmlydHVhbCB2b2lk
IGNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUqLCBjb25zdCBJbnRTaXplJikgY29uc3QgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0IEludFJlY3QmLCBj
b25zdCBTY3JvbGxWaWV3KikgY29uc3QgPSAwOyAvLyBDdXJyZW50bHkgb25seSBNYWMgaGFzIGEg
bm9uIGVtcHR5IGltcGxlbWVudGF0aW9uLgogICAgICAgIApAQCAtMTU1LDggKzE1Nyw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9vbFRpcChjb25z
dCBTdHJpbmcmLCBUZXh0RGlyZWN0aW9uKSA9IDA7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhGcmFtZSosIGNvbnN0IFZpZXdwb3J0QXJndW1lbnRz
JikgY29uc3QgeyB9Ci0KICAgICAgICAgdmlydHVhbCB2b2lkIHByaW50KEZyYW1lKikgPSAwOwog
CiAjaWYgRU5BQkxFKERBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjhjZmQwNy4uMmNjY2Q5MiAxMDA3NTUK
LS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CkBAIC0yODgsNiArMjg4LDkgQEAgdm9pZCBGcmFtZTo6c2V0RG9jdW1lbnQoUGFzc1JlZlB0cjxE
b2N1bWVudD4gbmV3RG9jKQogCiAgICAgLy8gVXBkYXRlIHRoZSBjYWNoZWQgJ2RvY3VtZW50JyBw
cm9wZXJ0eSwgd2hpY2ggaXMgbm93IHN0YWxlLgogICAgIG1fc2NyaXB0LnVwZGF0ZURvY3VtZW50
KCk7CisKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3BhZ2UtPnVwZGF0ZVZpZXdwb3J0QXJn
dW1lbnRzKCk7CiB9CiAKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDky
OTU1Y2MuLjU1MTlkYWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTQxNiw2ICs0MTYsMTUgQEAgdm9pZCBQYWdlOjpzY2hl
ZHVsZUZvcmNlZFN0eWxlUmVjYWxjRm9yQWxsUGFnZXMoKQogICAgICAgICAgICAgZnJhbWUtPmRv
Y3VtZW50KCktPnNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGMoKTsKIH0KIAordm9pZCBQYWdlOjp1
cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpCit7CisgICAgaWYgKCFtYWluRnJhbWUoKSB8fCAhbWFp
bkZyYW1lKCktPmRvY3VtZW50KCkgfHwgbWFpbkZyYW1lKCktPmRvY3VtZW50KCktPnZpZXdwb3J0
QXJndW1lbnRzKCkgPT0gbV92aWV3cG9ydEFyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV92aWV3cG9ydEFyZ3VtZW50cyA9IG1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT52aWV3cG9y
dEFyZ3VtZW50cygpOworICAgIGNocm9tZSgpLT5kaXNwYXRjaFZpZXdwb3J0RGF0YURpZENoYW5n
ZShtX3ZpZXdwb3J0QXJndW1lbnRzKTsKK30KKwogdm9pZCBQYWdlOjpyZWZyZXNoUGx1Z2lucyhi
b29sIHJlbG9hZCkKIHsKICAgICBpZiAoIWFsbFBhZ2VzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL1BhZ2UuaCBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggOGYwMWZhYS4uNDYwYTY5OCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5o
CkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTEyNyw2ICsxMjgsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgUmVuZGVyVGhlbWUqIHRoZW1lKCkgY29uc3QgeyByZXR1cm4gbV90
aGVtZS5nZXQoKTsgfTsKIAorICAgICAgICBWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3Vt
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRBcmd1bWVudHM7IH0KKyAgICAgICAgdm9p
ZCB1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpOworCiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZnJl
c2hQbHVnaW5zKGJvb2wgcmVsb2FkKTsKICAgICAgICAgUGx1Z2luRGF0YSogcGx1Z2luRGF0YSgp
IGNvbnN0OwogCkBAIC0zODMsNiArMzg3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlm
CiAKICAgICAgICAgVmlld01vZGUgbV92aWV3TW9kZTsKKworICAgICAgICBWaWV3cG9ydEFyZ3Vt
ZW50cyBtX3ZpZXdwb3J0QXJndW1lbnRzOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9B
cGkvcXdlYmZyYW1lLmNwcAppbmRleCAxNzkxMDk2Li41NWVjNDY0IDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3Bw
CkBAIC0yMzAsMTQgKzIzMCw2IEBAIHZvaWQgUVdlYkZyYW1lUHJpdmF0ZTo6aW5pdChRV2ViRnJh
bWUgKnFmcmFtZSwgUVdlYkZyYW1lRGF0YSAqZnJhbWVEYXRhKQogICAgIGZyYW1lLT5pbml0KCk7
CiB9CiAKLVdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIFFXZWJGcmFtZVByaXZhdGU6OnZpZXdw
b3J0QXJndW1lbnRzKCkKLXsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzKCk7Ci0KLSAgICByZXR1
cm4gZnJhbWUtPmRvY3VtZW50KCktPnZpZXdwb3J0QXJndW1lbnRzKCk7Ci19Ci0KIHZvaWQgUVdl
YkZyYW1lUHJpdmF0ZTo6c2V0UGFnZShRV2ViUGFnZSogbmV3UGFnZSkKIHsKICAgICBpZiAocGFn
ZSA9PSBuZXdQYWdlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oIGIv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oCmluZGV4IDViYTNmNTIuLjc5MTg3YWIgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lX3AuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3
ZWJmcmFtZV9wLmgKQEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVuZGVyRnJv
bVRpbGVkQmFja2luZ1N0b3JlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFFSZWdp
b24mIGNsaXApOwogI2VuZGlmCiAKLSAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3
cG9ydEFyZ3VtZW50cygpOwotCiAgICAgUVdlYkZyYW1lICpxOwogICAgIFF0OjpTY3JvbGxCYXJQ
b2xpY3kgaG9yaXpvbnRhbFNjcm9sbEJhclBvbGljeTsKICAgICBRdDo6U2Nyb2xsQmFyUG9saWN5
IHZlcnRpY2FsU2Nyb2xsQmFyUG9saWN5OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCA5MzIxMDNkLi5mMjcy
OTFhIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMzI4LDYgKzMyOCwxMSBAQCBRV2ViUGFnZVByaXZhdGU6
On5RV2ViUGFnZVByaXZhdGUoKQogI2VuZGlmCiB9CiAKK1dlYkNvcmU6OlZpZXdwb3J0QXJndW1l
bnRzIFFXZWJQYWdlUHJpdmF0ZTo6dmlld3BvcnRBcmd1bWVudHMoKQoreworICAgIHJldHVybiBw
YWdlID8gcGFnZS0+dmlld3BvcnRBcmd1bWVudHMoKSA6IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1l
bnRzKCk7Cit9CisKIFdlYkNvcmU6OlBhZ2UqIFFXZWJQYWdlUHJpdmF0ZTo6Y29yZShjb25zdCBR
V2ViUGFnZSogcGFnZSkKIHsKICAgICByZXR1cm4gcGFnZS0+ZC0+cGFnZTsKQEAgLTIzODAsOCAr
MjM4NSw3IEBAIFFXZWJQYWdlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb24gUVdlYlBhZ2U6OnZpZXdw
b3J0Q29uZmlndXJhdGlvbkZvclNpemUoY29uc3QgUVNpCiAgICAgICAgIGRldmljZUhlaWdodCA9
IHNpemUuaGVpZ2h0KCk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0
aW9uIGNvbmYgPSBXZWJDb3JlOjpmaW5kQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0RGF0YShtYWlu
RnJhbWUoKS0+ZC0+dmlld3BvcnRBcmd1bWVudHMoKSwKLSAgICAgICAgICAgIGRlc2t0b3BXaWR0
aCwgZGV2aWNlV2lkdGgsIGRldmljZUhlaWdodCwgZGV2aWNlRFBJLCBhdmFpbGFibGVTaXplKTsK
KyAgICBXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb24gY29uZiA9IFdlYkNvcmU6OmZpbmRD
b25maWd1cmF0aW9uRm9yVmlld3BvcnREYXRhKGQtPnZpZXdwb3J0QXJndW1lbnRzKCksIGRlc2t0
b3BXaWR0aCwgZGV2aWNlV2lkdGgsIGRldmljZUhlaWdodCwgZGV2aWNlRFBJLCBhdmFpbGFibGVT
aXplKTsKIAogICAgIHJlc3VsdC5tX2lzVmFsaWQgPSB0cnVlOwogICAgIHJlc3VsdC5tX3NpemUg
PSBjb25mLmxheW91dFZpZXdwb3J0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAppbmRleCAxMjcxNmY5Li4xZThkYTNl
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAorKysgYi9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlX3AuaApAQCAtMzYsNiArMzYsOCBAQAogCiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIENocm9tZUNsaWVudFF0OwogICAgIGNsYXNzIENvbnRleHRNZW51Q2xp
ZW50UXQ7CkBAIC0xMzksNiArMTQxLDggQEAgcHVibGljOgogICAgIFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKTsKICAgICBxdWludDE2IGluc3BlY3Rv
clNlcnZlclBvcnQoKTsKIAorICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0
QXJndW1lbnRzKCk7CisKICNpZm5kZWYgUVRfTk9fU0hPUlRDVVQKICAgICBzdGF0aWMgUVdlYlBh
Z2U6OldlYkFjdGlvbiBlZGl0b3JBY3Rpb25Gb3JLZXlFdmVudChRS2V5RXZlbnQqIGV2ZW50KTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFu
Z2VMb2cKaW5kZXggMjhkNzBhOS4uOWJlN2NkOCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDkt
MjggIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmlld3BvcnQgZGF0YSBj
aGFuZ2Ugbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDY3NTUKKworICAgICAgICBSZWdhcmRpbmcgdmlld3BvcnQgbWV0YSB0YWdz
LCB3aGF0IG1hdHRlcnMgZm9yIGJyb3dzZXIgZGV2ZWxvcGVycyBpcyB0byBrbm93IHdoZW4gdGhl
IHZpZXdwb3J0IGRhdGEgaGFzCisgICAgICAgIGNoYW5nZWQgYW5kIGl0cyBjdXJyZW50IHZhbHVl
LiBWaWV3cG9ydCBkYXRhIGJlbG9uZ3MgdG8gdGhlIGRvY3VtZW50LCBidXQgaXQgaXMgdXNlZnVs
IHRvIGtlZXAgdGhlIGN1cnJlbnQKKyAgICAgICAgdmlld3BvcnQgZGF0YSBpbiBQYWdlIGFzIGEg
cmVmZXJlbmNlLCB0byBiZSBhYmxlIHRvIHNlbmQgbm90aWZpY2F0aW9ucyBvbmx5IHdoZW4gdGhl
IGN1cnJlbnQgdmlld3BvcnQKKyAgICAgICAgaGFzIGNoYW5nZWQuCisKKyAgICAgICAgKiBBcGkv
cXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp2aWV3cG9ydEFyZ3Vt
ZW50cyk6CisgICAgICAgIChRV2ViUGFnZTo6dmlld3BvcnRDb25maWd1cmF0aW9uRm9yU2l6ZSk6
CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6dmll
d3BvcnREYXRhQ2hhbmdlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5j
cHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6dmlld3BvcnRBc1RleHQpOgor
CiAyMDEwLTA5LTMwICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCmluZGV4IDlmYmM1ZTUuLmIzOGNlMDkgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKKysrIGIv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcApAQCAtNjQyLDcgKzY0
Miw3IEBAIFFXZWJTZWxlY3RNZXRob2QqIENocm9tZUNsaWVudFF0OjpjcmVhdGVTZWxlY3RQb3B1
cCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRRdDo6ZGlkUmVjZWl2ZVZp
ZXdwb3J0QXJndW1lbnRzKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIGFy
Z3VtZW50cykgY29uc3QKK3ZvaWQgQ2hyb21lQ2xpZW50UXQ6OmRpc3BhdGNoVmlld3BvcnREYXRh
RGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJikgY29uc3QKIHsKICAgICBlbWl0IG1f
d2ViUGFnZS0+dmlld3BvcnRDaGFuZ2VSZXF1ZXN0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKaW5kZXggNTY4MDFhYS4uMGE0NDlmNiAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKKysrIGIvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKQEAgLTE3Nyw3ICsxNzcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgUVdlYlNlbGVjdE1ldGhvZCogY3JlYXRlU2Vs
ZWN0UG9wdXAoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVZpZXdw
b3J0QXJndW1lbnRzKEZyYW1lKiwgY29uc3QgVmlld3BvcnRBcmd1bWVudHMmKSBjb25zdDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlKGNvbnN0IFZp
ZXdwb3J0QXJndW1lbnRzJikgY29uc3Q7CiAKICAgICAgICAgUVdlYlBhZ2UqIG1fd2ViUGFnZTsK
ICAgICAgICAgV2ViQ29yZTo6S1VSTCBsYXN0SG92ZXJVUkw7CmRpZmYgLS1naXQgYS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwIGIvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCA4MzZkZjQ5
Li5iNGFhMTMyIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAgLTYzMSw3ICs2MzEsNyBAQCB2b2lkIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjpkdW1wTm90aWZpY2F0aW9uKGJvb2wgYikKIAogUVN0cmluZyBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6dmlld3BvcnRBc1RleHQoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFT
aXplJiBhdmFpbGFibGVTaXplKQogewotICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIGFy
Z3MgPSBwYWdlLT5tYWluRnJhbWUoKS0+ZC0+dmlld3BvcnRBcmd1bWVudHMoKTsKKyAgICBXZWJD
b3JlOjpWaWV3cG9ydEFyZ3VtZW50cyBhcmdzID0gcGFnZS0+ZC0+dmlld3BvcnRBcmd1bWVudHMo
KTsKICAgICBXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb24gY29uZiA9IFdlYkNvcmU6OmZp
bmRDb25maWd1cmF0aW9uRm9yVmlld3BvcnREYXRhKGFyZ3MsCiAgICAgICAgIC8qIGRlc2t0b3At
d2lkdGggKi8gOTgwLAogICAgICAgICAvKiBkZXZpY2Utd2lkdGggICovIDMyMCwKLS0gCjEuNy4y
LjIKCg==
</data>
<flag name="review"
          id="59333"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>