<?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>109422</bug_id>
          
          <creation_ts>2013-02-11 06:05:17 -0800</creation_ts>
          <short_desc>[Qt] Add Page Visibility API support</short_desc>
          <delta_ts>2013-08-13 04:05:53 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HTML5, Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Benjamin Dupont">bedupont</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>ararunprasad</cc>
    
    <cc>arurajku</cc>
    
    <cc>bedupont</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>jbriance</cc>
    
    <cc>jesus</cc>
    
    <cc>jturcotte</cc>
    
    <cc>nowrep</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>829614</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-11 06:05:17 -0800</bug_when>
    <thetext>Add Page Visibility API support to WebKit1 implementation for Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829616</commentid>
    <comment_count>1</comment_count>
      <attachid>187556</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-11 06:10:40 -0800</bug_when>
    <thetext>Created attachment 187556
[WK1] Add Page Visibility API support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829617</commentid>
    <comment_count>2</comment_count>
      <attachid>187556</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-11 06:16:12 -0800</bug_when>
    <thetext>Comment on attachment 187556
[WK1] Add Page Visibility API support.

Attachment 187556 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16497178</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829618</commentid>
    <comment_count>3</comment_count>
      <attachid>187556</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-11 06:17:39 -0800</bug_when>
    <thetext>Comment on attachment 187556
[WK1] Add Page Visibility API support.

Attachment 187556 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16492238</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829744</commentid>
    <comment_count>4</comment_count>
      <attachid>187556</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-11 08:52:08 -0800</bug_when>
    <thetext>Comment on attachment 187556
[WK1] Add Page Visibility API support.

Page no more available in QWebPagePrivate class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829745</commentid>
    <comment_count>5</comment_count>
      <attachid>187588</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-11 08:52:57 -0800</bug_when>
    <thetext>Created attachment 187588
 [WK1] Add Page Visibility API support. (2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829758</commentid>
    <comment_count>6</comment_count>
      <attachid>187593</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-11 09:00:31 -0800</bug_when>
    <thetext>Created attachment 187593
[WK1] Add Page Visibility API support. (3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832890</commentid>
    <comment_count>7</comment_count>
      <attachid>187593</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-14 02:32:03 -0800</bug_when>
    <thetext>Comment on attachment 187593
[WK1] Add Page Visibility API support. (3)

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

Needs documentation and API test.

&gt; Source/WebKit/qt/WidgetApi/qwebpage.cpp:921
&gt;  
&gt; +void QWebPage::setVisibilityState(int visibilityState, bool isInitialState)

Documentation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834096</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-15 09:25:34 -0800</bug_when>
    <thetext>Regarding the QWebView implementation I&apos;ll attach a patch with documentation and auto test soon.

Regarding the QGraphicsWebView, after a lot of tests it seems that QGraphicsScene and QGraphicsView was totally decorrelated from QGraphicsWebView.
After adding QGraphicsWebView on a scene, QGraphicsWebView receives a show event even if the bound QGraphicsView isn’t visible.
After a show on QGraphicsView, QGraphicsWebView receive only a WindowActivate event.
Furthermore when a QGraphicsWebView was created, it’s visible by default even if it isn&apos;t rendered.
I can implement visibility API in override setVisible and by using WindowActivate/WindowDeactivate/show/hide.

What do you think about this proposal?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834703</commentid>
    <comment_count>9</comment_count>
    <who name="David Rosca">nowrep</who>
    <bug_when>2013-02-16 05:27:28 -0800</bug_when>
    <thetext>Shouldn&apos;t be QWebView::setVisible public instead of private? As in other QWidget subclasses?

Also, I think that page visibility should be changed according to Show, Hide, WindowActivate and WindowDeactivate events. Otherwise applications using QtWebKit has to show/hide QWebView manually.

I have modified this patch for QtWebKit 2.3, here is the patch: https://gist.github.com/nowrep/4966923
Please take a look at QWebView::event</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834704</commentid>
    <comment_count>10</comment_count>
    <who name="David Rosca">nowrep</who>
    <bug_when>2013-02-16 05:28:45 -0800</bug_when>
    <thetext>Oops, just noticed that you already wrote about those events. Sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835668</commentid>
    <comment_count>11</comment_count>
      <attachid>188927</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-18 11:59:28 -0800</bug_when>
    <thetext>Created attachment 188927
HTML test page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836207</commentid>
    <comment_count>12</comment_count>
      <attachid>189047</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-19 04:00:00 -0800</bug_when>
    <thetext>Created attachment 189047
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836211</commentid>
    <comment_count>13</comment_count>
      <attachid>189047</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-19 04:07:08 -0800</bug_when>
    <thetext>Comment on attachment 189047
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests

Attachment 189047 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16611736</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836213</commentid>
    <comment_count>14</comment_count>
      <attachid>189047</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-19 04:07:59 -0800</bug_when>
    <thetext>Comment on attachment 189047
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests

Attachment 189047 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16613658</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836224</commentid>
    <comment_count>15</comment_count>
      <attachid>189052</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-19 04:25:43 -0800</bug_when>
    <thetext>Created attachment 189052
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836229</commentid>
    <comment_count>16</comment_count>
      <attachid>189052</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-19 04:31:22 -0800</bug_when>
    <thetext>Comment on attachment 189052
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (2)

Attachment 189052 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16627493</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836230</commentid>
    <comment_count>17</comment_count>
      <attachid>189052</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-19 04:32:09 -0800</bug_when>
    <thetext>Comment on attachment 189052
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (2)

Attachment 189052 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16627494</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836243</commentid>
    <comment_count>18</comment_count>
      <attachid>189060</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-19 04:46:23 -0800</bug_when>
    <thetext>Created attachment 189060
 [Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836288</commentid>
    <comment_count>19</comment_count>
      <attachid>189060</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2013-02-19 05:48:04 -0800</bug_when>
    <thetext>Comment on attachment 189060
 [Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (3) 

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

Almost there I think. The only thing I&apos;d like cleaned up still is the introduction of a QWebPage::PageVisibility enum, which should address most of my remaining comments, but I think it&apos;s mostly my fault for not making that super clear when I mentioned it before on IRC.

&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:1490
&gt; +  \sa Page::setVisibilityState(PageVisibilityState visibilityState, bool isInitialState)

QWebPageAdapter and friends aren&apos;t public API, no documentation needed here.

&gt; Source/WebKit/qt/WidgetApi/qwebpage.cpp:930
&gt; +  \sa QWebPageAdapter::setVisibilityState(int visibilityState, bool isInitialState)

Not public API, so no need for a &quot;See Also&quot; entry here. But there could be mention that QWebView and QGraphicsWebView already do &quot;the right thing&quot;™ and that exposing this as public API in QWebPage is more geared towards &quot;headless&quot; use cases.

&gt; Source/WebKit/qt/WidgetApi/qwebpage.cpp:932
&gt; +void QWebPage::setVisibilityState(int visibilityState, bool isInitialState)

here, the integer parameter is disturbing because it&apos;s a public API and this is not a very Qt-ish thing to do. I think a QWebPage::PageVisibility enum needs to be introduced and documented.
For the sake of simplicity, it can follow the values of the corresponding WebCore enum and cast back in forth to and from int through the QtWebKit layer, but in that case it&apos;s probably best to add a comment before the enum in QWebPage mentioning it has to be kept in sync with the WebCore one. (not something that&apos;s likely to change much on either side I believe).

&gt; Source/WebKit/qt/WidgetApi/qwebview.cpp:733
&gt; +            d-&gt;page-&gt;setVisibilityState(WebCore::PageVisibilityStateVisible, false);

Small layering violation here: we can&apos;t use WebCore types or enums in libQtWebKitWidgets. But the QWebPage version can be used once it&apos;s introduced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836290</commentid>
    <comment_count>20</comment_count>
      <attachid>189060</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2013-02-19 05:53:04 -0800</bug_when>
    <thetext>Comment on attachment 189060
 [Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (3) 

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

&gt; Source/WebKit/qt/WidgetApi/qgraphicswebview.cpp:412
&gt; +            if (scene()-&gt;isActive())

Mhh, this feels a bit flimsy.
Don&apos;t we risk missing our opportunity to set the proper page visibility later on if the scene is activated ?

&gt; Source/WebKit/qt/WidgetApi/qgraphicswebview.cpp:413
&gt; +                d-&gt;page-&gt;setVisibilityState(WebCore::PageVisibilityStateVisible, false);

and WebCore enum use here...

&gt; Source/WebKit/qt/WidgetApi/qgraphicswebview.cpp:415
&gt; +            d-&gt;page-&gt;setVisibilityState(WebCore::PageVisibilityStateHidden, false);

and here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836291</commentid>
    <comment_count>21</comment_count>
      <attachid>189060</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-19 05:53:15 -0800</bug_when>
    <thetext>Comment on attachment 189060
 [Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (3) 

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

&gt; Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp:153
&gt; +    view.show();
&gt; +    QTest::qWait(5);

I think this is likely to fail with different windowing systems. I think it would be better to use functionality like qWaitForWindowExposed. Now I suppose we&apos;d need a similar function in QTestLib for waitForWindowObscured or Hidden?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836308</commentid>
    <comment_count>22</comment_count>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-19 06:17:56 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 189060 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189060&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp:153
&gt; &gt; +    view.show();
&gt; &gt; +    QTest::qWait(5);
&gt; 
&gt; I think this is likely to fail with different windowing systems. I think it would be better to use functionality like qWaitForWindowExposed. Now I suppose we&apos;d need a similar function in QTestLib for waitForWindowObscured or Hidden?

Yes but qWaitForWindowExposed it&apos;s just for the scene is &quot;rendered&quot;, correct? What about the QGraphicsWebView show event? Is there any way to know when an event is received? qWait(5) is an empirical way to be sure that QGraphicsWebView has received the show/hide/etc. events, if there is another way to do it I&apos;m very interested about it :)

I&apos;ll look for adding waitForWindowObscured function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836315</commentid>
    <comment_count>23</comment_count>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-19 06:23:35 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 189060 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189060&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/qt/WidgetApi/qgraphicswebview.cpp:412
&gt; &gt; +            if (scene()-&gt;isActive())
&gt; 
&gt; Mhh, this feels a bit flimsy.
&gt; Don&apos;t we risk missing our opportunity to set the proper page visibility later on if the scene is activated ?
I must check what&apos;s happenning if a scene is activated and we add a QGraphicsWebView hidden.

&gt; 
&gt; &gt; Source/WebKit/qt/WidgetApi/qgraphicswebview.cpp:413
&gt; &gt; +                d-&gt;page-&gt;setVisibilityState(WebCore::PageVisibilityStateVisible, false);
&gt; 
&gt; and WebCore enum use here...
&gt; 
&gt; &gt; Source/WebKit/qt/WidgetApi/qgraphicswebview.cpp:415
&gt; &gt; +            d-&gt;page-&gt;setVisibilityState(WebCore::PageVisibilityStateHidden, false);
&gt; 
&gt; and here.
Why can&apos;t I use WebCore::PageVisibilityState enum here? Is it better to use a &apos;int&apos; value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836320</commentid>
    <comment_count>24</comment_count>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-19 06:28:22 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 189060 [details] [details])
(WebCore::PageVisibilityStateHidden, false);
&gt; &gt; 
&gt; &gt; and here.
&gt; Why can&apos;t I use WebCore::PageVisibilityState enum here? Is it better to use a &apos;int&apos; value?
Oups sorry, I just read your previous comment: &quot;Small layering violation here: we can&apos;t use WebCore types or enums in libQtWebKitWidgets. But the QWebPage version can be used once it&apos;s introduced.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837493</commentid>
    <comment_count>25</comment_count>
      <attachid>189327</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-20 08:38:27 -0800</bug_when>
    <thetext>Created attachment 189327
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837494</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-20 08:40:44 -0800</bug_when>
    <thetext>Attachment 189327 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/qt/ChangeLog&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h&apos;, u&apos;Source/WebKit/qt/WidgetApi/qgraphicswebview.cpp&apos;, u&apos;Source/WebKit/qt/WidgetApi/qgraphicswebview.h&apos;, u&apos;Source/WebKit/qt/WidgetApi/qwebpage.cpp&apos;, u&apos;Source/WebKit/qt/WidgetApi/qwebview.cpp&apos;, u&apos;Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp&apos;, u&apos;Source/WebKit/qt/tests/qwebview/tst_qwebview.cpp&apos;]&quot; exit_code: 1
Source/WebKit/qt/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837508</commentid>
    <comment_count>27</comment_count>
      <attachid>189331</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-02-20 09:07:44 -0800</bug_when>
    <thetext>Created attachment 189331
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (5)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838346</commentid>
    <comment_count>28</comment_count>
      <attachid>189331</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-21 05:01:12 -0800</bug_when>
    <thetext>Comment on attachment 189331
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (5) 

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

&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:164
&gt; +void QWebPageAdapter::setVisibilityState(QWebPageAdapter::PageVisibilityState visibilityState, bool isInitialState)

I suggest to get rid of the bool isInitialState parameter. It looks very confusing on the caller side, it is always false except for _one_ case inside initialWebCorePage. In there I think we should simply call
    page-&gt;setVisibilityState(WebCore::PageVisibilityStateHidden, true);

&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h:136
&gt; +    enum PageVisibilityState {
&gt; +        PageVisibilityStateVisible,
&gt; +        PageVisibilityStateHidden
&gt; +    };

Given that this is a binary state, why not simply use a boolean instead? It makes the translation to/from WebCore types easier I think. Just call it say setPageVisible(bool visible) or so - I think then you can get rid of some glue code.

&gt; Source/WebKit/qt/WidgetApi/qwebview.cpp:736
&gt; +#if ENABLE(PAGE_VISIBILITY_API)
&gt; +        else if ((e-&gt;type() == QEvent::Show) || (e-&gt;type() == QEvent::WindowActivate))
&gt; +            d-&gt;page-&gt;d-&gt;setVisibilityState(QWebPagePrivate::PageVisibilityStateVisible, false);
&gt; +        else if ((e-&gt;type() == QEvent::Hide) || (e-&gt;type() == QEvent::WindowDeactivate))
&gt; +            d-&gt;page-&gt;d-&gt;setVisibilityState(QWebPagePrivate::PageVisibilityStateHidden, false);
&gt; +#endif

Imagine a tabbed browser. Would this still be accurate, i.e. if the QWebView is in a tab that is _not_ visible (because it&apos;s not current/active) but the window gets activated. Should the page visibility state change to visible?

I suggest to re-implement showEvent() and hideEvent(), pass on the event to d-&gt;page-&gt;event and call the base implementation. That gives advanced users the power to control the state if they need to (re-implement and call QWebView::showEvent or not if they like), and it still allows us to centralize the implementation inside QWebPageAdapter.

The same applies to QGraphicsWebView.

&gt; Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp:140
&gt; +    int waitForEvent = 5;

I can almost guarantee you that this is going to fail on the bots. Randomly failing tests on the bot are a PITA.

I suggest to replace this unit test with implementing page visibility support in the Qt DRT. Then we can enable the layout tests for it as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846341</commentid>
    <comment_count>29</comment_count>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-03-04 04:59:22 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 189331 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189331&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:164
&gt; &gt; +void QWebPageAdapter::setVisibilityState(QWebPageAdapter::PageVisibilityState visibilityState, bool isInitialState)
&gt; 
&gt; I suggest to get rid of the bool isInitialState parameter. It looks very confusing on the caller side, it is always false except for _one_ case inside initialWebCorePage. In there I think we should simply call
&gt;     page-&gt;setVisibilityState(WebCore::PageVisibilityStateHidden, true);

Ok.

&gt; 
&gt; &gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h:136
&gt; &gt; +    enum PageVisibilityState {
&gt; &gt; +        PageVisibilityStateVisible,
&gt; &gt; +        PageVisibilityStateHidden
&gt; &gt; +    };
&gt; 
&gt; Given that this is a binary state, why not simply use a boolean instead? It makes the translation to/from WebCore types easier I think. Just call it say setPageVisible(bool visible) or so - I think then you can get rid of some glue code.

Ok.

&gt; 
&gt; &gt; Source/WebKit/qt/WidgetApi/qwebview.cpp:736
&gt; &gt; +#if ENABLE(PAGE_VISIBILITY_API)
&gt; &gt; +        else if ((e-&gt;type() == QEvent::Show) || (e-&gt;type() == QEvent::WindowActivate))
&gt; &gt; +            d-&gt;page-&gt;d-&gt;setVisibilityState(QWebPagePrivate::PageVisibilityStateVisible, false);
&gt; &gt; +        else if ((e-&gt;type() == QEvent::Hide) || (e-&gt;type() == QEvent::WindowDeactivate))
&gt; &gt; +            d-&gt;page-&gt;d-&gt;setVisibilityState(QWebPagePrivate::PageVisibilityStateHidden, false);
&gt; &gt; +#endif
&gt; 
&gt; Imagine a tabbed browser. Would this still be accurate, i.e. if the QWebView is in a tab that is _not_ visible (because it&apos;s not current/active) but the window gets activated. Should the page visibility state change to visible?

No, it shouldn&apos;t... We should also manage:
a) if the QWebView is in active tab and the window gets deactivated -&gt; change state from visible to hidden
b) if the QWebView is in active tab and the window gets activated -&gt; change state from hidden to visible

When the window is activated/deactivated a showEvent/hideEvent is fired to the current QWebView? If yes, I&apos;ll remove WindowDeactivate and WindowActivate case.

&gt; 
&gt; I suggest to re-implement showEvent() and hideEvent(), pass on the event to d-&gt;page-&gt;event and call the base implementation. That gives advanced users the power to control the state if they need to (re-implement and call QWebView::showEvent or not if they like), and it still allows us to centralize the implementation inside QWebPageAdapter.
&gt; 

It&apos;s an HTML5 requirement, why should we want to give to advanced users the power to control the state and thus change the expected behaviour defined by W3C?

&gt; The same applies to QGraphicsWebView.
&gt; 

I&apos;m not sure, as I mentioned previously:
&quot;After adding QGraphicsWebView on a scene, QGraphicsWebView receives a show event even if the bound QGraphicsView isn’t visible.
After a show on QGraphicsView, QGraphicsWebView receive only a WindowActivate event.
Furthermore when a QGraphicsWebView was created, it’s visible by default even if it isn&apos;t rendered.&quot;
If I only re-implement showEvent() and hideEvent(), when you hide the scene the visibility state won&apos;t be changed (because hideEvent isn&apos;t called)... 

&gt; &gt; Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp:140
&gt; &gt; +    int waitForEvent = 5;
&gt; 
&gt; I can almost guarantee you that this is going to fail on the bots. Randomly failing tests on the bot are a PITA.
&gt; 
&gt; I suggest to replace this unit test with implementing page visibility support in the Qt DRT. Then we can enable the layout tests for it as well.

Yes I agree with you but I don&apos;t know how to do it differently...
What is the Qt DRT? Where can I find an example?

Thank you for your feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846353</commentid>
    <comment_count>30</comment_count>
    <who name="David Rosca">nowrep</who>
    <bug_when>2013-03-04 05:24:40 -0800</bug_when>
    <thetext>&gt; When the window is activated/deactivated a showEvent/hideEvent is fired to the current QWebView? If yes, I&apos;ll remove WindowDeactivate and WindowActivate case.

It works ok with tabbed browser in current implementation. Only current tab will change its state to visible on WindowActivate event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852176</commentid>
    <comment_count>31</comment_count>
      <attachid>192436</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-03-11 04:04:17 -0700</bug_when>
    <thetext>Created attachment 192436
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView

New patch regarding comments from #28 to #30.
No more tests API because there is no more new public API.
Layout tests regarding visibility API are already available:
LayoutTests/fast/events/page-visibility-transition-test.html
LayoutTests/fast/events/page-visibility-iframe-delete-test.html
LayoutTests/fast/events/page-visibility-iframe-delete-test.html
LayoutTests/fast/events/page-visibility-iframe-propagation-test.html
LayoutTests/fast/events/page-visibility-iframe-propagation-test.html
LayoutTests/fast/events/page-visibility-iframe-move-test.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852238</commentid>
    <comment_count>32</comment_count>
      <attachid>192436</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-11 06:37:25 -0700</bug_when>
    <thetext>Comment on attachment 192436
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView

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

&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:160
&gt; +void QWebPageAdapter::setPageVisible(bool visible)

Since this function doesn&apos;t actually make the page visible or not (in the graphical sense of it) but just changes the state, I suggest to call it just like the WebCore::Page function: setVisibilityState

&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h:247
&gt; +    void setPageVisible(bool);

This looks much neater :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852239</commentid>
    <comment_count>33</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-11 06:39:30 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Created an attachment (id=192436) [details]
&gt; [Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView
&gt; 
&gt; New patch regarding comments from #28 to #30.
&gt; No more tests API because there is no more new public API.
&gt; Layout tests regarding visibility API are already available:
&gt; LayoutTests/fast/events/page-visibility-transition-test.html
&gt; LayoutTests/fast/events/page-visibility-iframe-delete-test.html
&gt; LayoutTests/fast/events/page-visibility-iframe-delete-test.html
&gt; LayoutTests/fast/events/page-visibility-iframe-propagation-test.html
&gt; LayoutTests/fast/events/page-visibility-iframe-propagation-test.html
&gt; LayoutTests/fast/events/page-visibility-iframe-move-test.html

They are available, but skipped. From LayoutTests/platform/qt/TestExpectations:

&quot;
# This platform does not support the Page Visibility API.
fast/events/page-visibility-iframe-delete-test.html
fast/events/page-visibility-iframe-move-test.html
fast/events/page-visibility-iframe-propagation-test.html
fast/events/page-visibility-null-view.html
fast/events/page-visibility-transition-test.html
fast/frames/page-visibility-crash.html
&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852241</commentid>
    <comment_count>34</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-11 06:46:59 -0700</bug_when>
    <thetext>(In reply to comment #29)
[...]
&gt; &gt; I suggest to re-implement showEvent() and hideEvent(), pass on the event to d-&gt;page-&gt;event and call the base implementation. That gives advanced users the power to control the state if they need to (re-implement and call QWebView::showEvent or not if they like), and it still allows us to centralize the implementation inside QWebPageAdapter.
&gt; &gt; 
&gt; 
&gt; It&apos;s an HTML5 requirement, why should we want to give to advanced users the power to control the state and thus change the expected behaviour defined by W3C?

I don&apos;t see that requirement. Can you elaborate?

I do see quite the opposite. Take the examples of the &quot;hidden&quot; attribute for example: &quot;The User Agent is not minimized, but the page is on a background tab.&quot;

We can _not_ provide a fully comprehensive implementation of this attribute that works out of the box in all cases. We do _need_ to give advanced users control over providing the visibility information to the web application.
 
&gt; &gt; &gt; Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp:140
&gt; &gt; &gt; +    int waitForEvent = 5;
&gt; &gt; 
&gt; &gt; I can almost guarantee you that this is going to fail on the bots. Randomly failing tests on the bot are a PITA.
&gt; &gt; 
&gt; &gt; I suggest to replace this unit test with implementing page visibility support in the Qt DRT. Then we can enable the layout tests for it as well.
&gt; 
&gt; Yes I agree with you but I don&apos;t know how to do it differently...
&gt; What is the Qt DRT? Where can I find an example?

It&apos;s the shell that is used to run the layout tests. You can find it in Tools/DumpRenderTree with the qt specific bits in Tools/DumpRenderTree/qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852298</commentid>
    <comment_count>35</comment_count>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-03-11 07:39:05 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (From update of attachment 192436 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192436&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:160
&gt; &gt; +void QWebPageAdapter::setPageVisible(bool visible)
&gt; 
&gt; Since this function doesn&apos;t actually make the page visible or not (in the graphical sense of it) but just changes the state, I suggest to call it just like the WebCore::Page function: setVisibilityState
&gt; 
&gt; &gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h:247
&gt; &gt; +    void setPageVisible(bool);
&gt; 
&gt; This looks much neater :)

Thus, please confirm what do you prefer because previously you said me:
&gt;Just call it say setPageVisible(bool visible) or so - I think then you can get rid of some glue code.
Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:160
void QWebPageAdapter::setVisibilityState(bool visible)
Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h:247
void setVisibilityState(bool);? :)


(In reply to comment #33)
&gt; (In reply to comment #31)
&gt; &gt; Created an attachment (id=192436) [details] [details]
&gt; &gt; [Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView
&gt; &gt; 
&gt; &gt; New patch regarding comments from #28 to #30.
&gt; &gt; No more tests API because there is no more new public API.
&gt; &gt; Layout tests regarding visibility API are already available:
&gt; &gt; LayoutTests/fast/events/page-visibility-transition-test.html
&gt; &gt; LayoutTests/fast/events/page-visibility-iframe-delete-test.html
&gt; &gt; LayoutTests/fast/events/page-visibility-iframe-delete-test.html
&gt; &gt; LayoutTests/fast/events/page-visibility-iframe-propagation-test.html
&gt; &gt; LayoutTests/fast/events/page-visibility-iframe-propagation-test.html
&gt; &gt; LayoutTests/fast/events/page-visibility-iframe-move-test.html
&gt; 
&gt; They are available, but skipped. From LayoutTests/platform/qt/TestExpectations:
&gt; 
&gt; &quot;
&gt; # This platform does not support the Page Visibility API.
&gt; fast/events/page-visibility-iframe-delete-test.html
&gt; fast/events/page-visibility-iframe-move-test.html
&gt; fast/events/page-visibility-iframe-propagation-test.html
&gt; fast/events/page-visibility-null-view.html
&gt; fast/events/page-visibility-transition-test.html
&gt; fast/frames/page-visibility-crash.html
&gt; &quot;
Ok, can I just enable it like that:
webkit.org/b/109422 fast/events/page-visibility-iframe-delete-test.html
webkit.org/b/109422 fast/events/page-visibility-iframe-move-test.html
...?


(In reply to comment #34)
&gt; (In reply to comment #29)
&gt; [...]
&gt; &gt; &gt; I suggest to re-implement showEvent() and hideEvent(), pass on the event to d-&gt;page-&gt;event and call the base implementation. That gives advanced users the power to control the state if they need to (re-implement and call QWebView::showEvent or not if they like), and it still allows us to centralize the implementation inside QWebPageAdapter.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; It&apos;s an HTML5 requirement, why should we want to give to advanced users the power to control the state and thus change the expected behaviour defined by W3C?
&gt; 
&gt; I don&apos;t see that requirement. Can you elaborate?
&gt; 
http://www.w3.org/TR/page-visibility

&gt; I do see quite the opposite. Take the examples of the &quot;hidden&quot; attribute for example: &quot;The User Agent is not minimized, but the page is on a background tab.&quot;
I think if a page is on a background tab then it should receive a WindowDeactivate event and then visibility state should be state to &quot;hidden&quot; as David Rosca said:
(In reply to comment #30)
&gt; &gt; When the window is activated/deactivated a showEvent/hideEvent is fired to the current QWebView? If yes, I&apos;ll remove WindowDeactivate and WindowActivate case.
&gt; 
&gt; It works ok with tabbed browser in current implementation. Only current tab will change its state to visible on WindowActivate event.

&gt; 
&gt; We can _not_ provide a fully comprehensive implementation of this attribute that works out of the box in all cases. We do _need_ to give advanced users control over providing the visibility information to the web application.
If they reimplement &quot;virtual bool event(QEvent*)&quot; they can make this kind of stuff?

&gt; 
&gt; &gt; &gt; &gt; Source/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp:140
&gt; &gt; &gt; &gt; +    int waitForEvent = 5;
&gt; &gt; &gt; 
&gt; &gt; &gt; I can almost guarantee you that this is going to fail on the bots. Randomly failing tests on the bot are a PITA.
&gt; &gt; &gt; 
&gt; &gt; &gt; I suggest to replace this unit test with implementing page visibility support in the Qt DRT. Then we can enable the layout tests for it as well.
&gt; &gt; 
&gt; &gt; Yes I agree with you but I don&apos;t know how to do it differently...
&gt; &gt; What is the Qt DRT? Where can I find an example?
&gt; 
&gt; It&apos;s the shell that is used to run the layout tests. You can find it in Tools/DumpRenderTree with the qt specific bits in Tools/DumpRenderTree/qt.
Yes, I discussed about that with carewolf.

Thank you for your feedback :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852307</commentid>
    <comment_count>36</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-11 07:58:01 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #32)
&gt; &gt; (From update of attachment 192436 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192436&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:160
&gt; &gt; &gt; +void QWebPageAdapter::setPageVisible(bool visible)
&gt; &gt; 
&gt; &gt; Since this function doesn&apos;t actually make the page visible or not (in the graphical sense of it) but just changes the state, I suggest to call it just like the WebCore::Page function: setVisibilityState
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h:247
&gt; &gt; &gt; +    void setPageVisible(bool);
&gt; &gt; 
&gt; &gt; This looks much neater :)
&gt; 
&gt; Thus, please confirm what do you prefer because previously you said me:
&gt; &gt;Just call it say setPageVisible(bool visible) or so - I think then you can get rid of some glue code.
&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:160
&gt; void QWebPageAdapter::setVisibilityState(bool visible)
&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h:247
&gt; void setVisibilityState(bool);? :)

I&apos;m going to pull the &quot;... or so&quot; card here ;-)

But yeah, what I wanted to express is that I like this change. I think this API is simpler and leaner. (the one you have in your patch now)

After seeing the surrounding code I personally like setVisibilityState(bool visible) as _name_.

&gt; (In reply to comment #33)
&gt; &gt; (In reply to comment #31)
&gt; &gt; &gt; Created an attachment (id=192436) [details] [details] [details]
&gt; &gt; &gt; [Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView
&gt; &gt; &gt; 
&gt; &gt; &gt; New patch regarding comments from #28 to #30.
&gt; &gt; &gt; No more tests API because there is no more new public API.
&gt; &gt; &gt; Layout tests regarding visibility API are already available:
&gt; &gt; &gt; LayoutTests/fast/events/page-visibility-transition-test.html
&gt; &gt; &gt; LayoutTests/fast/events/page-visibility-iframe-delete-test.html
&gt; &gt; &gt; LayoutTests/fast/events/page-visibility-iframe-delete-test.html
&gt; &gt; &gt; LayoutTests/fast/events/page-visibility-iframe-propagation-test.html
&gt; &gt; &gt; LayoutTests/fast/events/page-visibility-iframe-propagation-test.html
&gt; &gt; &gt; LayoutTests/fast/events/page-visibility-iframe-move-test.html
&gt; &gt; 
&gt; &gt; They are available, but skipped. From LayoutTests/platform/qt/TestExpectations:
&gt; &gt; 
&gt; &gt; &quot;
&gt; &gt; # This platform does not support the Page Visibility API.
&gt; &gt; fast/events/page-visibility-iframe-delete-test.html
&gt; &gt; fast/events/page-visibility-iframe-move-test.html
&gt; &gt; fast/events/page-visibility-iframe-propagation-test.html
&gt; &gt; fast/events/page-visibility-null-view.html
&gt; &gt; fast/events/page-visibility-transition-test.html
&gt; &gt; fast/frames/page-visibility-crash.html
&gt; &gt; &quot;
&gt; Ok, can I just enable it like that:
&gt; webkit.org/b/109422 fast/events/page-visibility-iframe-delete-test.html
&gt; webkit.org/b/109422 fast/events/page-visibility-iframe-move-test.html
&gt; ...?

No, that would just continue to skip the test. Instead the necessary hooks need to be implemented in the Qt build of DumpRenderTree and then those lines need to be removed, so that they are not skipped anymore. Tests referred to in this file are skipped from the test runs or are marked here as known to fail - in this case we want them to pass when this patch lands.

&gt; (In reply to comment #34)
&gt; &gt; (In reply to comment #29)
&gt; &gt; [...]
&gt; &gt; &gt; &gt; I suggest to re-implement showEvent() and hideEvent(), pass on the event to d-&gt;page-&gt;event and call the base implementation. That gives advanced users the power to control the state if they need to (re-implement and call QWebView::showEvent or not if they like), and it still allows us to centralize the implementation inside QWebPageAdapter.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; It&apos;s an HTML5 requirement, why should we want to give to advanced users the power to control the state and thus change the expected behaviour defined by W3C?
&gt; &gt; 
&gt; &gt; I don&apos;t see that requirement. Can you elaborate?
&gt; &gt; 
&gt; http://www.w3.org/TR/page-visibility

That&apos;s the link to the spec, yes. But I don&apos;t see how the spec requires us to act on Qt&apos;s event specifically.
 
&gt; &gt; I do see quite the opposite. Take the examples of the &quot;hidden&quot; attribute for example: &quot;The User Agent is not minimized, but the page is on a background tab.&quot;
&gt; I think if a page is on a background tab then it should receive a WindowDeactivate event and then visibility state should be state to &quot;hidden&quot; as David Rosca said:
&gt; (In reply to comment #30)
&gt; &gt; &gt; When the window is activated/deactivated a showEvent/hideEvent is fired to the current QWebView? If yes, I&apos;ll remove WindowDeactivate and WindowActivate case.
&gt; &gt; 
&gt; &gt; It works ok with tabbed browser in current implementation. Only current tab will change its state to visible on WindowActivate event.

With what tabbed browser? We don&apos;t want to mandate how exactly to design the tabs, i.e. require the use of say QTabWidget.

Think of custom UIs in QGraphicsView for example.

&gt; &gt; We can _not_ provide a fully comprehensive implementation of this attribute that works out of the box in all cases. We do _need_ to give advanced users control over providing the visibility information to the web application.
&gt; If they reimplement &quot;virtual bool event(QEvent*)&quot; they can make this kind of stuff?

Yes, they can. And I want to make it even easier, because ::event() is a catch-all that is tricky to get rid (call the base implementation first? only for some events?).

I think it is a better practice to use specific virtual event functions where we can, and in this case they would combine nicely with our initial page visibility implementation based on Qt&apos;s show and hide events. They are basic and well defined.

If we can&apos;t figure out a sensible basic implementation then perhaps we should just leave it at a public function in QWebPage and document how application developers can support web applications that use this web-facing visibility API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852364</commentid>
    <comment_count>37</comment_count>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-03-11 08:47:45 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; After seeing the surrounding code I personally like setVisibilityState(bool visible) as _name_.
Ok. :) 


&gt; No, that would just continue to skip the test. Instead the necessary hooks need to be implemented in the Qt build of DumpRenderTree and then those lines need to be removed, so that they are not skipped anymore. Tests referred to in this file are skipped from the test runs or are marked here as known to fail - in this case we want them to pass when this patch lands.
Ok, thank you for these explanations. I&apos;ll try to implement the necessary hooks.


&gt; That&apos;s the link to the spec, yes. But I don&apos;t see how the spec requires us to act on Qt&apos;s event specifically.

&gt; With what tabbed browser? We don&apos;t want to mandate how exactly to design the tabs, i.e. require the use of say QTabWidget.
&gt; 
&gt; Think of custom UIs in QGraphicsView for example.
&gt; 
&gt; &gt; If they reimplement &quot;virtual bool event(QEvent*)&quot; they can make this kind of stuff?
&gt; 
&gt; Yes, they can. And I want to make it even easier, because ::event() is a catch-all that is tricky to get rid (call the base implementation first? only for some events?).
&gt; 
&gt; I think it is a better practice to use specific virtual event functions where we can, and in this case they would combine nicely with our initial page visibility implementation based on Qt&apos;s show and hide events. They are basic and well defined.
&gt; 
&gt; If we can&apos;t figure out a sensible basic implementation then perhaps we should just leave it at a public function in QWebPage and document how application developers can support web applications that use this web-facing visibility API.
Now I better understand what you mean. 

My first implementation contained this kind of public API:
https://bugs.webkit.org/attachment.cgi?id=189060&amp;action=prettypatch
In this case we just provided a way to implement visibility functionalities as described in W3C, but we don&apos;t implement it for &quot;basic&quot; use cases. I don&apos;t know what is the best... In our side we implemented it directly in QWebView (as proposed in my last patch) because we have different projects and this way it seemed to be more relevant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852407</commentid>
    <comment_count>38</comment_count>
      <attachid>192436</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-11 09:39:38 -0700</bug_when>
    <thetext>Comment on attachment 192436
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView

Attachment 192436 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17113617

New failing tests:
editing/selection/selection-modify-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855326</commentid>
    <comment_count>39</comment_count>
      <attachid>193151</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-03-14 10:59:29 -0700</bug_when>
    <thetext>Created attachment 193151
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView (new API + new Layout test)

Existing visibility layout tests are implementation dependant and they test optional states as mandatory states.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855329</commentid>
    <comment_count>40</comment_count>
      <attachid>193151</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-14 11:05:08 -0700</bug_when>
    <thetext>Comment on attachment 193151
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView (new API + new Layout test)

Attachment 193151 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17191093</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855334</commentid>
    <comment_count>41</comment_count>
      <attachid>193154</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-03-14 11:09:48 -0700</bug_when>
    <thetext>Created attachment 193154
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView (new API + new Layout test) (2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855340</commentid>
    <comment_count>42</comment_count>
      <attachid>193154</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-14 11:16:44 -0700</bug_when>
    <thetext>Comment on attachment 193154
[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView (new API + new Layout test) (2)

Attachment 193154 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17132158</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856195</commentid>
    <comment_count>43</comment_count>
    <who name="Arunprasad">ararunprasad</who>
    <bug_when>2013-03-15 12:30:16 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=193154&amp;action=review

https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API says,

&quot;Developers have historically used imperfect proxies to detect this. For example, registering an onblur/onfocus handler on the window helps you know when your page is not the active page, but it does not tell you that your page is hidden to the user. The Page Visibility API addresses this. (When compared with registering onblur/onfocus handlers on the window, __a key difference is that a page does not become hidden when another window is made active and the browser window loses focus.  A page only becomes hidden when the user switches to a different tab or minimizes the browser window__.)&quot;

&gt; Source/WebKit/qt/WidgetApi/qwebview.cpp:712
&gt; +    if ((e-&gt;type() == QEvent::Show) || (e-&gt;type() == QEvent::WindowActivate))
&gt; +        d-&gt;page-&gt;d-&gt;setVisibilityState(true);
&gt; +    else if ((e-&gt;type() == QEvent::Hide) || (e-&gt;type() == QEvent::WindowDeactivate))
&gt; +        d-&gt;page-&gt;d-&gt;setVisibilityState(false);

WindowActive/WindowDeactivate will be called when the window lost/gains focus. But the main aim of the page __visibilitychange__ is to notify when the window becomes really hidden from user(either tab switching or minimizing). But if we do it implicitly in WindowActivate/WindowDeactivate events then there will be no difference between onfocus/onblur(DOM window events).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858134</commentid>
    <comment_count>44</comment_count>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-03-19 03:57:44 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193154&amp;action=review
&gt; 
&gt; https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API says,
&gt; 
&gt; &quot;Developers have historically used imperfect proxies to detect this. For example, registering an onblur/onfocus handler on the window helps you know when your page is not the active page, but it does not tell you that your page is hidden to the user. The Page Visibility API addresses this. (When compared with registering onblur/onfocus handlers on the window, __a key difference is that a page does not become hidden when another window is made active and the browser window loses focus.  A page only becomes hidden when the user switches to a different tab or minimizes the browser window__.)&quot;
&gt; 
&gt; &gt; Source/WebKit/qt/WidgetApi/qwebview.cpp:712
&gt; &gt; +    if ((e-&gt;type() == QEvent::Show) || (e-&gt;type() == QEvent::WindowActivate))
&gt; &gt; +        d-&gt;page-&gt;d-&gt;setVisibilityState(true);
&gt; &gt; +    else if ((e-&gt;type() == QEvent::Hide) || (e-&gt;type() == QEvent::WindowDeactivate))
&gt; &gt; +        d-&gt;page-&gt;d-&gt;setVisibilityState(false);
&gt; 
&gt; WindowActive/WindowDeactivate will be called when the window lost/gains focus. But the main aim of the page __visibilitychange__ is to notify when the window becomes really hidden from user(either tab switching or minimizing). But if we do it implicitly in WindowActivate/WindowDeactivate events then there will be no difference between onfocus/onblur(DOM window events).
In my understanding, onfocus/onblur are called on QEvent::FocusIn/QEvent::FocusOut received by the QWebPage.
When a QWebView loses the focus, do we receive a focus out event and a WindoDeactivate event?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858465</commentid>
    <comment_count>45</comment_count>
    <who name="Arunprasad">ararunprasad</who>
    <bug_when>2013-03-19 10:52:33 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; When a QWebView loses the focus, do we receive a focus out event and a WindoDeactivate event?

FocusIn &amp; FocusOut is intended for widgets, WindowActivate &amp; WindowDeactivate is intended for Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907599</commentid>
    <comment_count>46</comment_count>
      <attachid>206447</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-07-11 05:03:20 -0700</bug_when>
    <thetext>Created attachment 206447
New QWebPage API (with test): void QWebPage::setVisibilityState(bool visible)

New patch regarding all previous comments.
The best solution to this issue seems to provide a QWebPage public API that could be called by advanced user (e.g in show/hide/visible functions/events of QGraphicsWebView/QWebView).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907600</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-11 05:04:56 -0700</bug_when>
    <thetext>Attachment 206447 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/qt/ChangeLog&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h&apos;, u&apos;Source/WebKit/qt/WidgetApi/qwebpage.cpp&apos;, u&apos;Source/WebKit/qt/WidgetApi/qwebpage.h&apos;, u&apos;Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp&apos;]&quot; exit_code: 1
Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:3151:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:3161:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:3171:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 3 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907602</commentid>
    <comment_count>48</comment_count>
      <attachid>206449</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-07-11 05:13:09 -0700</bug_when>
    <thetext>Created attachment 206449
New QWebPage API (with test): void QWebPage::setVisibilityState(bool visible) (2)

New patch regarding all previous comments.
The best solution to this issue seems to provide a QWebPage public API that could be called by advanced user (e.g in show/hide/visible functions/events of QGraphicsWebView/QWebView).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913361</commentid>
    <comment_count>49</comment_count>
      <attachid>206449</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-07-31 07:37:33 -0700</bug_when>
    <thetext>Comment on attachment 206449
New QWebPage API (with test): void QWebPage::setVisibilityState(bool visible) (2)

After IRC discussion with carewolf, jturcotte and tronical, I&apos;ll provide a new patch with:
- enum with different states (also optionals)
- Q_PROPERTY
- QWebPage::setVisibilityState
- QWebPage::visibilityState
- more comments regarding:
--- the initial state,
--- the propagation until the JS
--- how/where/when to call it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913737</commentid>
    <comment_count>50</comment_count>
      <attachid>207923</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-08-01 07:41:07 -0700</bug_when>
    <thetext>Created attachment 207923
 New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913742</commentid>
    <comment_count>51</comment_count>
      <attachid>207923</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-08-01 08:03:48 -0700</bug_when>
    <thetext>Comment on attachment 207923
 New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) 

I must remove webkit suffix (eg. webkitHidden -&gt; hidden) from the test...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913744</commentid>
    <comment_count>52</comment_count>
      <attachid>207926</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-08-01 08:09:46 -0700</bug_when>
    <thetext>Created attachment 207926
 New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914529</commentid>
    <comment_count>53</comment_count>
      <attachid>207926</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-08-05 02:47:33 -0700</bug_when>
    <thetext>Comment on attachment 207926
 New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (2)

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

&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h:136
&gt; +    // Must match with values of PageVisibilityState enum from PageVisibilityState.h.

I think we should do a switch-case matching in QWebPageAdapter::setVisibilityState to make sure that the enum values are independent from WebCore. It&apos;s usually not a good idea to have the public header follow internal enums directly.

&gt; Source/WebKit/qt/WidgetApi/qwebpage.cpp:3161
&gt; +    \note The initial state is set to PageVisibilityStateHidden if the page visibility API is enabled,
&gt; +    otherwise is set to PageVisibilityApiUnavailable.

What about all applications out there not knowing about this new API, isn&apos;t it a bad default to have page told that they are hidden even though they are shown?

&gt; Source/WebKit/qt/WidgetApi/qwebpage.h:220
&gt; +    // Must match with values of PageVisibilityState enum from QWebPageAdapter.h.

Please leave this information in QWebPageAdapter.h not to pollute the public header.

&gt; Source/WebKit/qt/WidgetApi/qwebpage.h:226
&gt; +        PageVisibilityApiUnavailable

We should simply enable the compile-time flag all the time if we&apos;re exposing the API. A feature is usually not enabled only if it isn&apos;t implemented or ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914539</commentid>
    <comment_count>54</comment_count>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-08-05 03:50:40 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; (From update of attachment 207926 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=207926&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h:136
&gt; &gt; +    // Must match with values of PageVisibilityState enum from PageVisibilityState.h.
&gt; 
&gt; I think we should do a switch-case matching in QWebPageAdapter::setVisibilityState to make sure that the enum values are independent from WebCore. It&apos;s usually not a good idea to have the public header follow internal enums directly.
Initially I made a switch-case and then I delete it... :) For the default value, should I return the hidden value?

&gt; 
&gt; &gt; Source/WebKit/qt/WidgetApi/qwebpage.cpp:3161
&gt; &gt; +    \note The initial state is set to PageVisibilityStateHidden if the page visibility API is enabled,
&gt; &gt; +    otherwise is set to PageVisibilityApiUnavailable.
&gt; 
&gt; What about all applications out there not knowing about this new API, isn&apos;t it a bad default to have page told that they are hidden even though they are shown?
I agree, in the current implementation if the visibility API isn&apos;t enable the visibility attributes are available even so and set to hidden. That&apos;s why I used this default value. 

&gt; 
&gt; &gt; Source/WebKit/qt/WidgetApi/qwebpage.h:220
&gt; &gt; +    // Must match with values of PageVisibilityState enum from QWebPageAdapter.h.
&gt; 
&gt; Please leave this information in QWebPageAdapter.h not to pollute the public header.
Ok.

&gt; 
&gt; &gt; Source/WebKit/qt/WidgetApi/qwebpage.h:226
&gt; &gt; +        PageVisibilityApiUnavailable
&gt; 
&gt; We should simply enable the compile-time flag all the time if we&apos;re exposing the API. A feature is usually not enabled only if it isn&apos;t implemented or ready.
In this case should I remove all PAGE_VISIBILITY_API references:
Source/WTF/wtf/FeatureDefines.h
Source/WebCore/dom/Document.cpp
Source/WebCore/dom/Document.h
Source/WebCore/page/Frame.cpp
Source/WebCore/page/Frame.h
Source/WebCore/page/Page.cpp
Source/WebCore/page/Page.h
Source/WebCore/page/PageVisibilityState.cpp
Source/WebCore/page/PageVisibilityState.h
Source/WebCore/page/Settings.cpp
Source/WebCore/page/Settings.h
Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp
Tools/Scripts/webkitperl/FeatureList.pm
Tools/qmake/mkspecs/features/features.pri
And WebKit2 files? 

Or just doing the assumption that this feature is always enabled in QWebPageAdapter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914541</commentid>
    <comment_count>55</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-08-05 03:58:49 -0700</bug_when>
    <thetext>(In reply to comment #54)
&gt; &gt; &gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h:136
&gt; &gt; &gt; +    // Must match with values of PageVisibilityState enum from PageVisibilityState.h.
&gt; Initially I made a switch-case and then I delete it... :) For the default value, should I return the hidden value?
The default shouldn&apos;t happen as we should still try to maintain the match between the enums. So just put an ASSERT(FALSE) and return any reasonable default value.

&gt; I agree, in the current implementation if the visibility API isn&apos;t enable the visibility attributes are available even so and set to hidden. That&apos;s why I used this default value. 
From my understanding, if the visibility API isn&apos;t enabled, document.visibilityState and document.hidden both return &apos;undefined&apos;. When enabled I think that default value should be &apos;visible&apos;.

&gt; &gt; We should simply enable the compile-time flag all the time if we&apos;re exposing the API. A feature is usually not enabled only if it isn&apos;t implemented or ready.
&gt; In this case should I remove all PAGE_VISIBILITY_API references:
&gt; Source/WTF/wtf/FeatureDefines.h
&gt; Source/WebCore/dom/Document.cpp
&gt; Source/WebCore/dom/Document.h
&gt; Source/WebCore/page/Frame.cpp
&gt; Source/WebCore/page/Frame.h
&gt; Source/WebCore/page/Page.cpp
&gt; Source/WebCore/page/Page.h
&gt; Source/WebCore/page/PageVisibilityState.cpp
&gt; Source/WebCore/page/PageVisibilityState.h
&gt; Source/WebCore/page/Settings.cpp
&gt; Source/WebCore/page/Settings.h
&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp
&gt; Tools/Scripts/webkitperl/FeatureList.pm
&gt; Tools/qmake/mkspecs/features/features.pri
&gt; And WebKit2 files? 
&gt; 
&gt; Or just doing the assumption that this feature is always enabled in QWebPageAdapter?

We should just make the feature enabled by default in our build system and assume that the feature is enabled in Qt-specific sources. We shouldn&apos;t change cross-port code as other port might want or not to enable this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914577</commentid>
    <comment_count>56</comment_count>
      <attachid>208125</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-08-05 08:14:17 -0700</bug_when>
    <thetext>Created attachment 208125
New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914581</commentid>
    <comment_count>57</comment_count>
      <attachid>208125</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-05 08:20:19 -0700</bug_when>
    <thetext>Comment on attachment 208125
New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (3)

Attachment 208125 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1369197</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914582</commentid>
    <comment_count>58</comment_count>
      <attachid>208125</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-05 08:21:02 -0700</bug_when>
    <thetext>Comment on attachment 208125
New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (3)

Attachment 208125 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1375130</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914590</commentid>
    <comment_count>59</comment_count>
      <attachid>208125</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-08-05 08:36:33 -0700</bug_when>
    <thetext>Comment on attachment 208125
New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (3)

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

&gt; Source/WebKit/qt/ChangeLog:3
&gt; +        [Qt] Add Page Visibility API support

Ideally this patch should also enable PAGE_VISIBILITY_API by default in the build, but this can also be done in a separate patch as long as you do it soon.

&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:159
&gt; +        result = WebCore::PageVisibilityStatePrerender;
&gt; +        break;

you can replace the temporary result variable by &quot;return WebCore::PageVisibilityStatePrerender;&quot; directly and also remove the breaks and the final return.

&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:247
&gt; +    page-&gt;setVisibilityState(webPageVisibilityStateToWebCoreVisibilityState(m_visibilityState), true);

Page::m_visibilityState is already initialized to PageVisibilityStateVisible, I&apos;m not sure I see a use for this.

&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:339
&gt; +    if (!page)
&gt; +        return;

By looking at the rest of the code I&apos;d say that you can expect page to be non-null here, am I right?

&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:349
&gt; +    return m_visibilityState;

Why not use WebCore::Page::visibilityState() directly instead?

&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h:136
&gt; +    // Must match with values of PageVisibilityState enum from PageVisibilityState.h.

It&apos;s not true anymore, it must however match QWebPage::PageVisibilityState.

&gt; Source/WebKit/qt/WidgetApi/qwebpage.cpp:3142
&gt; +    Returns the current page visibility state of the current page.

&quot;of the current page&quot; is unneeded extra information. I think it&apos;s obvious.

&gt; Source/WebKit/qt/WidgetApi/qwebpage.cpp:3152
&gt; +    This method is used to change the page visibility state of the current page.

ditto

&gt; Source/WebKit/qt/WidgetApi/qwebpage.cpp:3153
&gt; +    It should be called by Qt applications who want to notify Javascript application

grammar: &quot;JavaScript applications&quot; or &quot;the JavaScript application&quot;

&gt; Source/WebKit/qt/WidgetApi/qwebpage.cpp:3154
&gt; +    that the visibility state has changed (eg. by reimplementing setVisible function of QWidget).

- eg. --&gt; e.g.
- &quot;the setVisible function&quot; or simply &quot;QWidget::setVisible&quot; (the later should also add a link automatically in the doc)

The rest of the method documentaion is pretty good and descriptive :)

&gt; Source/WebKit/qt/WidgetApi/qwebpage.h:220
&gt; +    enum PageVisibilityState {

VisibilityState would be fine and match with the property name. &quot;Page&quot; isn&apos;t helpful here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914592</commentid>
    <comment_count>60</comment_count>
      <attachid>208128</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-08-05 08:38:26 -0700</bug_when>
    <thetext>Created attachment 208128
New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914604</commentid>
    <comment_count>61</comment_count>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-08-05 09:28:58 -0700</bug_when>
    <thetext>(In reply to comment #59)
&gt; (From update of attachment 208125 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=208125&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/qt/ChangeLog:3
&gt; &gt; +        [Qt] Add Page Visibility API support
&gt; 
&gt; Ideally this patch should also enable PAGE_VISIBILITY_API by default in the build, but this can also be done in a separate patch as long as you do it soon.
I think PAGE_VISIBILITY_API is already activate by default (in Tools/qmake/mkspecs/features/features.pri ENABLE_PAGE_VISIBILITY_API=1). Is there any other places to enable it?

&gt; 
&gt; &gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:159
&gt; &gt; +        result = WebCore::PageVisibilityStatePrerender;
&gt; &gt; +        break;
&gt; 
&gt; you can replace the temporary result variable by &quot;return WebCore::PageVisibilityStatePrerender;&quot; directly and also remove the breaks and the final return.
I totally agree with you, I wanted to be inspired by dragOpToDropAction function but it seems it was a bad idea :)

&gt; 
&gt; &gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:247
&gt; &gt; +    page-&gt;setVisibilityState(webPageVisibilityStateToWebCoreVisibilityState(m_visibilityState), true);
&gt; 
&gt; Page::m_visibilityState is already initialized to PageVisibilityStateVisible, I&apos;m not sure I see a use for this.
Yes with the visible default value is no more needed.
 
&gt; 
&gt; &gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:339
&gt; &gt; +    if (!page)
&gt; &gt; +        return;
&gt; 
&gt; By looking at the rest of the code I&apos;d say that you can expect page to be non-null here, am I right?
Yes, but as I saw &quot;return page ? page-&gt;viewportArguments() : WebCore::ViewportArguments();&quot;, I&apos;d preferred to add this check.

&gt; 
&gt; &gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:349
&gt; &gt; +    return m_visibilityState;
&gt; 
&gt; Why not use WebCore::Page::visibilityState() directly instead?
Yes I agree. (getter/setter habit mistake...)
I&apos;ll remove the m_visibilityState attribute because it&apos;s never used...

&gt; 
&gt; &gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h:136
&gt; &gt; +    // Must match with values of PageVisibilityState enum from PageVisibilityState.h.
&gt; 
&gt; It&apos;s not true anymore, it must however match QWebPage::PageVisibilityState.
&gt; 
Erf I didn&apos;t update this comment. Yes, if there is a difference between these values and the ones defined in WebCore it&apos;ll generate a compile error into the switch (like for this patch).

&gt; &gt; Source/WebKit/qt/WidgetApi/qwebpage.cpp:3153
&gt; &gt; +    It should be called by Qt applications who want to notify Javascript application
&gt; 
&gt; grammar: &quot;JavaScript applications&quot; or &quot;the JavaScript application&quot;
&gt; 
Oops, thanks.


&gt; &gt; Source/WebKit/qt/WidgetApi/qwebpage.h:220
&gt; &gt; +    enum PageVisibilityState {
&gt; 
&gt; VisibilityState would be fine and match with the property name. &quot;Page&quot; isn&apos;t helpful here.
Ok, is the same for QWebPageAdapter.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914605</commentid>
    <comment_count>62</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-08-05 09:37:13 -0700</bug_when>
    <thetext>(In reply to comment #61)
&gt; I think PAGE_VISIBILITY_API is already activate by default (in Tools/qmake/mkspecs/features/features.pri ENABLE_PAGE_VISIBILITY_API=1). Is there any other places to enable it?
Ah yes you&apos;re right!

&gt; &gt; VisibilityState would be fine and match with the property name. &quot;Page&quot; isn&apos;t helpful here.
&gt; Ok, is the same for QWebPageAdapter.h?
Since it should match QWebPage more than WebCore I&apos;d say that we should remove Page from this one as well, but I don&apos;t have a strong preference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914612</commentid>
    <comment_count>63</comment_count>
      <attachid>208132</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-08-05 10:12:54 -0700</bug_when>
    <thetext>Created attachment 208132
 New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (5)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914619</commentid>
    <comment_count>64</comment_count>
      <attachid>208132</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-08-05 10:22:58 -0700</bug_when>
    <thetext>Comment on attachment 208132
 New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (5)

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

Found a few more minor issues on the last comb pass.

&gt; Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h:259
&gt; +    VisibilityState visibilityState();

const missing here

&gt; Source/WebKit/qt/WidgetApi/qwebpage.h:82
&gt; +    Q_PROPERTY(QWebPage::VisibilityState visibilityState READ visibilityState WRITE setVisibilityState)
&gt;      Q_ENUMS(LinkDelegationPolicy NavigationType WebAction)

I think you need to add VisibilityState to the Q_ENUMS line here for the property to work. Also I&apos;m not sure if the &quot;QWebPage::&quot; part is necessary.

&gt; Source/WebKit/qt/WidgetApi/qwebpage.h:286
&gt; +    VisibilityState visibilityState();

const missing here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914798</commentid>
    <comment_count>65</comment_count>
      <attachid>208173</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-08-06 00:53:14 -0700</bug_when>
    <thetext>Created attachment 208173
New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (6)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914817</commentid>
    <comment_count>66</comment_count>
      <attachid>208173</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-08-06 03:06:55 -0700</bug_when>
    <thetext>Comment on attachment 208173
New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (6)

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

Looks great! Three small finishing-touches type of nitpicks. But otherwise I love it. Small, compact but straight to the point.

&gt; Source/WebKit/qt/WidgetApi/qwebpage.cpp:3152
&gt; +/*!
&gt; +    This method is used to change the page visibility state.

You can combine the docs for the setter and the getter into one snippet of documentation for the entire property. See the use of the \property tag in other places in the same file.

&gt; Source/WebKit/qt/WidgetApi/qwebpage.cpp:3164
&gt; +void QWebPage::setVisibilityState(QWebPage::VisibilityState state)

I think that you can remove the QWebPage:: prefix for the parameter

&gt; Source/WebKit/qt/WidgetApi/qwebpage.h:220
&gt; +    enum VisibilityState {

This new enum needs documentation that explains what the values mean :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914837</commentid>
    <comment_count>67</comment_count>
      <attachid>208183</attachid>
    <who name="Benjamin Dupont">bedupont</who>
    <bug_when>2013-08-06 05:37:22 -0700</bug_when>
    <thetext>Created attachment 208183
New QWebPage API (with test): void QWebPage::setVisibilityState(VisibilityState state) (7)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914841</commentid>
    <comment_count>68</comment_count>
      <attachid>208183</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-08-06 06:20:19 -0700</bug_when>
    <thetext>Comment on attachment 208183
New QWebPage API (with test): void QWebPage::setVisibilityState(VisibilityState state) (7)

Attachment 208183 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1347177</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914843</commentid>
    <comment_count>69</comment_count>
      <attachid>208183</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-08-06 06:33:57 -0700</bug_when>
    <thetext>Comment on attachment 208183
New QWebPage API (with test): void QWebPage::setVisibilityState(VisibilityState state) (7)

&gt; c++: internal compiler error: Killed (program cc1plus)
Seems like the EFL bot is sick, re-cq+ing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914853</commentid>
    <comment_count>70</comment_count>
      <attachid>208183</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-06 06:57:30 -0700</bug_when>
    <thetext>Comment on attachment 208183
New QWebPage API (with test): void QWebPage::setVisibilityState(VisibilityState state) (7)

Clearing flags on attachment: 208183

Committed r153751: &lt;http://trac.webkit.org/changeset/153751&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914854</commentid>
    <comment_count>71</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-06 06:57:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915094</commentid>
    <comment_count>72</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-08-07 04:29:46 -0700</bug_when>
    <thetext>Note, the landed patch broke the minimal build. Seem it requires a minor build fix:
/ramdisk/qt-linux-release-minimal/build/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp: In member function &apos;QWebPageAdapter::VisibilityState QWebPageAdapter::visibilityState() const&apos;:
/ramdisk/qt-linux-release-minimal/build/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:330:65: error: &apos;class WebCore::Page&apos; has no member named &apos;visibilityState&apos;
/ramdisk/qt-linux-release-minimal/build/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp:331:1: error: control reaches end of non-void function [-Werror=return-type]
cc1plus: all warnings being treated as errors</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187556</attachid>
            <date>2013-02-11 06:10:40 -0800</date>
            <delta_ts>2013-02-11 08:52:08 -0800</delta_ts>
            <desc>[WK1] Add Page Visibility API support.</desc>
            <filename>patch_109422.patch</filename>
            <type>text/plain</type>
            <size>3733</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDI0NTcpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAyLTExICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtXSzFdIEFkZCBQ
YWdlIFZpc2liaWxpdHkgQVBJIHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdpZGdldEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChR
V2ViUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKFFXZWJQYWdlOjpRV2ViUGFn
ZSk6CisgICAgICAgICogV2lkZ2V0QXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2lkZ2V0QXBp
L3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpzZXRWaXNpYmxlKToKKyAgICAgICAg
KiBXaWRnZXRBcGkvcXdlYnZpZXcuaDoKKwogMjAxMy0wMi0wOCAgQmVuamFtaW4gUG91bGFpbiAg
PGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIHdvcmtlclRocmVhZENvdW50IGZy
b20gVGVzdFJ1bm5lciB0byBXZWJDb3JlIEludGVybmFscwpJbmRleDogU291cmNlL1dlYktpdC9x
dC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
V2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gMTQyNDU3KQorKysgU291cmNlL1dlYktp
dC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MTgsNiArOTE4
LDE4IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjpsZWF2ZUV2ZW50KFFFdmVudCoKICAgICBtb3Vz
ZU1vdmVFdmVudCgmZmFrZUV2ZW50KTsKIH0KIAordm9pZCBRV2ViUGFnZTo6c2V0VmlzaWJpbGl0
eVN0YXRlKGludCB2aXNpYmlsaXR5U3RhdGUsIGJvb2wgaXNJbml0aWFsU3RhdGUpCit7CisjaWYg
RU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgaWYgKCFkLT5wYWdlKQorICAgICAgICBy
ZXR1cm47CisgICAgZC0+cGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKHN0YXRpY19jYXN0PFdlYkNv
cmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGU+KHZpc2liaWxpdHlTdGF0ZSksIGlzSW5pdGlhbFN0YXRl
KTsKKyNlbHNlCisgICAgUV9VTlVTRUQodmlzaWJpbGl0eVN0YXRlKTsKKyAgICBRX1VOVVNFRChp
c0luaXRpYWxTdGF0ZSk7CisjZW5kaWYKK30KKwogLyohCiAgICAgXHByb3BlcnR5IFFXZWJQYWdl
OjpwYWxldHRlCiAgICAgXGJyaWVmIHRoZSBwYWdlJ3MgcGFsZXR0ZQpAQCAtMTM1Myw3ICsxMzY1
LDkgQEAgUVdlYlBhZ2U6OlFXZWJQYWdlKFFPYmplY3QgKnBhcmVudCkKICAgICAsIGQobmV3IFFX
ZWJQYWdlUHJpdmF0ZSh0aGlzKSkKIHsKICAgICBzZXRWaWV3KHFvYmplY3RfY2FzdDxRV2lkZ2V0
Kj4ocGFyZW50KSk7Ci0KKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBzZXRW
aXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbiwgdHJ1ZSk7CisjZW5kaWYK
ICAgICBjb25uZWN0KHRoaXMsIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSksIHRoaXMsIFNMT1Qo
X3Ffb25Mb2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCkpKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgY29u
bmVjdChRQ29yZUFwcGxpY2F0aW9uOjppbnN0YW5jZSgpLCBTSUdOQUwoYWJvdXRUb1F1aXQoKSks
IHRoaXMsIFNMT1QoX3FfY2xlYW51cExlYWtNZXNzYWdlcygpKSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgJKHJldmlzaW9uIDE0MjQ1NykKKysrIFNvdXJjZS9XZWJL
aXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw2ICszMDgs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50RWRpdGFibGUoYm9vbCBlZGl0YWJsZSk7
CiAgICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRWaXNp
YmlsaXR5U3RhdGUoaW50IHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSk7CisK
ICNpZm5kZWYgUVRfTk9fQ09OVEVYVE1FTlUKICAgICBib29sIHN3YWxsb3dDb250ZXh0TWVudUV2
ZW50KFFDb250ZXh0TWVudUV2ZW50ICpldmVudCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L1dpZGdldEFwaS9xd2Vidmlldy5jcHAJKHJldmlzaW9uIDE0MjQ1NykKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzOSw2
ICsxMDM5LDE3IEBAIHZvaWQgUVdlYlZpZXc6OmNoYW5nZUV2ZW50KFFFdmVudCAqZSkKICAgICBR
V2lkZ2V0OjpjaGFuZ2VFdmVudChlKTsKIH0KIAorLyohXHJlaW1wCisqLwordm9pZCBRV2ViVmll
dzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCit7CisgICAgUVdpZGdldDo6c2V0VmlzaWJsZSh2
aXNpYmxlKTsKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAoZC0+cGFn
ZSkKKyAgICAgICAgZC0+cGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKHZpc2libGUgPyBXZWJDb3Jl
OjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSA6IFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3Rh
dGVIaWRkZW4sIGZhbHNlKTsKKyNlbmRpZgorfQorCiAvKiEKICAgICBcZm4gdm9pZCBRV2ViVmll
dzo6dGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJnRpdGxlKQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3F0L1dpZGdldEFwaS9xd2Vidmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmgJKHJldmlzaW9uIDE0MjQ1NykKKysrIFNvdXJjZS9XZWJL
aXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw2ICsxMzQs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBRV2ViVmlldyAqY3JlYXRlV2luZG93KFFXZWJQ
YWdlOjpXZWJXaW5kb3dUeXBlIHR5cGUpOwogCiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZUV2ZW50
KFFFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBtb3VzZU1vdmVFdmVudChRTW91c2VFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBt
b3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgbW91c2VEb3Vi
bGVDbGlja0V2ZW50KFFNb3VzZUV2ZW50Kik7Cg==
</data>
<flag name="commit-queue"
          id="207412"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187588</attachid>
            <date>2013-02-11 08:52:57 -0800</date>
            <delta_ts>2013-02-11 08:59:12 -0800</delta_ts>
            <desc> [WK1] Add Page Visibility API support. (2)</desc>
            <filename>patch_109422-2.patch</filename>
            <type>text/plain</type>
            <size>5101</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDI0NTcpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAyLTExICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtXSzFdIEFkZCBQ
YWdlIFZpc2liaWxpdHkgQVBJIHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHA6
CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OnNldFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmg6CisgICAgICAgICogV2lkZ2V0QXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgor
ICAgICAgICAoUVdlYlBhZ2U6OlFXZWJQYWdlKToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBh
Z2UuaDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZp
ZXc6OnNldFZpc2libGUpOgorICAgICAgICAqIFdpZGdldEFwaS9xd2Vidmlldy5oOgorCiAyMDEz
LTAyLTA4ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IE1vdmUgd29ya2VyVGhyZWFkQ291bnQgZnJvbSBUZXN0UnVubmVyIHRvIFdlYkNvcmUgSW50ZXJu
YWxzCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2Vi
UGFnZUFkYXB0ZXIuY3BwCShyZXZpc2lvbiAxNDI0NTcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nzcs
MyArMTQ3NywxNiBAQCBib29sIFFXZWJQYWdlQWRhcHRlcjo6c3dhbGxvd0NvbnRleHRNZW51CiAK
ICAgICByZXR1cm4gIW1lbnU7CiB9CisKK3ZvaWQgUVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmls
aXR5U3RhdGUoaW50IHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkKK3sKKyNp
ZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJl
dHVybjsKKyAgICBwYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
UGFnZVZpc2liaWxpdHlTdGF0ZT4odmlzaWJpbGl0eVN0YXRlKSwgaXNJbml0aWFsU3RhdGUpOwor
I2Vsc2UKKyAgICBRX1VOVVNFRCh2aXNpYmlsaXR5U3RhdGUpOworICAgIFFfVU5VU0VEKGlzSW5p
dGlhbFN0YXRlKTsKKyNlbmRpZgorfQorCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHJldmlzaW9uIDE0MjQ1NykKKysrIFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwMSw2ICszMDEsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB3aGV0aGVy
IHRoZSBkZWZhdWx0IGFjdGlvbiB3YXMgY2FuY2VsbGVkIGluIHRoZSBKUyBldmVudCBoYW5kbGVy
CiAgICAgYm9vbCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CiAgICAgYm9vbCBzd2FsbG93Q29u
dGV4dE1lbnVFdmVudChRQ29udGV4dE1lbnVFdmVudCAqLCBRV2ViRnJhbWVBZGFwdGVyKik7Cisg
ICAgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGUoaW50LCBib29sKTsKIAogICAgIFFXZWJIaXRUZXN0
UmVzdWx0UHJpdmF0ZSogdXBkYXRlUG9zaXRpb25EZXBlbmRlbnRNZW51QWN0aW9ucyhjb25zdCBR
UG9pbnQmLCBRQml0QXJyYXkqKTsKICAgICB2b2lkIHVwZGF0ZUFjdGlvbkludGVybmFsKE1lbnVB
Y3Rpb24sIGNvbnN0IGNoYXIqIGNvbW1hbmROYW1lLCBib29sKiBlbmFibGVkLCBib29sKiBjaGVj
a2VkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5jcHAJKHJldmlz
aW9uIDE0MjQ1NykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTE4LDYgKzkxOCwxMSBAQCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6
bGVhdmVFdmVudChRRXZlbnQqCiAgICAgbW91c2VNb3ZlRXZlbnQoJmZha2VFdmVudCk7CiB9CiAK
K3ZvaWQgUVdlYlBhZ2U6OnNldFZpc2liaWxpdHlTdGF0ZShpbnQgdmlzaWJpbGl0eVN0YXRlLCBi
b29sIGlzSW5pdGlhbFN0YXRlKQoreworCWQtPnNldFZpc2liaWxpdHlTdGF0ZSh2aXNpYmlsaXR5
U3RhdGUsIGlzSW5pdGlhbFN0YXRlKTsKK30KKwogLyohCiAgICAgXHByb3BlcnR5IFFXZWJQYWdl
OjpwYWxldHRlCiAgICAgXGJyaWVmIHRoZSBwYWdlJ3MgcGFsZXR0ZQpAQCAtMTM1Myw3ICsxMzU4
LDkgQEAgUVdlYlBhZ2U6OlFXZWJQYWdlKFFPYmplY3QgKnBhcmVudCkKICAgICAsIGQobmV3IFFX
ZWJQYWdlUHJpdmF0ZSh0aGlzKSkKIHsKICAgICBzZXRWaWV3KHFvYmplY3RfY2FzdDxRV2lkZ2V0
Kj4ocGFyZW50KSk7Ci0KKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBzZXRW
aXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbiwgdHJ1ZSk7CisjZW5kaWYK
ICAgICBjb25uZWN0KHRoaXMsIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSksIHRoaXMsIFNMT1Qo
X3Ffb25Mb2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCkpKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgY29u
bmVjdChRQ29yZUFwcGxpY2F0aW9uOjppbnN0YW5jZSgpLCBTSUdOQUwoYWJvdXRUb1F1aXQoKSks
IHRoaXMsIFNMT1QoX3FfY2xlYW51cExlYWtNZXNzYWdlcygpKSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgJKHJldmlzaW9uIDE0MjQ1NykKKysrIFNvdXJjZS9XZWJL
aXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw2ICszMDgs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50RWRpdGFibGUoYm9vbCBlZGl0YWJsZSk7
CiAgICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRWaXNp
YmlsaXR5U3RhdGUoaW50IHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSk7CisK
ICNpZm5kZWYgUVRfTk9fQ09OVEVYVE1FTlUKICAgICBib29sIHN3YWxsb3dDb250ZXh0TWVudUV2
ZW50KFFDb250ZXh0TWVudUV2ZW50ICpldmVudCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L1dpZGdldEFwaS9xd2Vidmlldy5jcHAJKHJldmlzaW9uIDE0MjQ1NykKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzOSw2
ICsxMDM5LDE3IEBAIHZvaWQgUVdlYlZpZXc6OmNoYW5nZUV2ZW50KFFFdmVudCAqZSkKICAgICBR
V2lkZ2V0OjpjaGFuZ2VFdmVudChlKTsKIH0KIAorLyohXHJlaW1wCisqLwordm9pZCBRV2ViVmll
dzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCit7CisgICAgUVdpZGdldDo6c2V0VmlzaWJsZSh2
aXNpYmxlKTsKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAoZC0+cGFn
ZSkKKyAgICAgICAgZC0+cGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKHZpc2libGUgPyBXZWJDb3Jl
OjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSA6IFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3Rh
dGVIaWRkZW4sIGZhbHNlKTsKKyNlbmRpZgorfQorCiAvKiEKICAgICBcZm4gdm9pZCBRV2ViVmll
dzo6dGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJnRpdGxlKQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3F0L1dpZGdldEFwaS9xd2Vidmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmgJKHJldmlzaW9uIDE0MjQ1NykKKysrIFNvdXJjZS9XZWJL
aXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw2ICsxMzQs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBRV2ViVmlldyAqY3JlYXRlV2luZG93KFFXZWJQ
YWdlOjpXZWJXaW5kb3dUeXBlIHR5cGUpOwogCiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZUV2ZW50
KFFFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBtb3VzZU1vdmVFdmVudChRTW91c2VFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBt
b3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgbW91c2VEb3Vi
bGVDbGlja0V2ZW50KFFNb3VzZUV2ZW50Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187593</attachid>
            <date>2013-02-11 09:00:31 -0800</date>
            <delta_ts>2013-02-19 04:00:00 -0800</delta_ts>
            <desc>[WK1] Add Page Visibility API support. (3)</desc>
            <filename>patch_109422-3.patch</filename>
            <type>text/plain</type>
            <size>5104</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDI0NTcpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAyLTExICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtXSzFdIEFkZCBQ
YWdlIFZpc2liaWxpdHkgQVBJIHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHA6
CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OnNldFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmg6CisgICAgICAgICogV2lkZ2V0QXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgor
ICAgICAgICAoUVdlYlBhZ2U6OlFXZWJQYWdlKToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBh
Z2UuaDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZp
ZXc6OnNldFZpc2libGUpOgorICAgICAgICAqIFdpZGdldEFwaS9xd2Vidmlldy5oOgorCiAyMDEz
LTAyLTA4ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IE1vdmUgd29ya2VyVGhyZWFkQ291bnQgZnJvbSBUZXN0UnVubmVyIHRvIFdlYkNvcmUgSW50ZXJu
YWxzCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2Vi
UGFnZUFkYXB0ZXIuY3BwCShyZXZpc2lvbiAxNDI0NTcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nzcs
MyArMTQ3NywxNiBAQCBib29sIFFXZWJQYWdlQWRhcHRlcjo6c3dhbGxvd0NvbnRleHRNZW51CiAK
ICAgICByZXR1cm4gIW1lbnU7CiB9CisKK3ZvaWQgUVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmls
aXR5U3RhdGUoaW50IHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkKK3sKKyNp
ZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJl
dHVybjsKKyAgICBwYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
UGFnZVZpc2liaWxpdHlTdGF0ZT4odmlzaWJpbGl0eVN0YXRlKSwgaXNJbml0aWFsU3RhdGUpOwor
I2Vsc2UKKyAgICBRX1VOVVNFRCh2aXNpYmlsaXR5U3RhdGUpOworICAgIFFfVU5VU0VEKGlzSW5p
dGlhbFN0YXRlKTsKKyNlbmRpZgorfQorCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHJldmlzaW9uIDE0MjQ1NykKKysrIFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwMSw2ICszMDEsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB3aGV0aGVy
IHRoZSBkZWZhdWx0IGFjdGlvbiB3YXMgY2FuY2VsbGVkIGluIHRoZSBKUyBldmVudCBoYW5kbGVy
CiAgICAgYm9vbCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CiAgICAgYm9vbCBzd2FsbG93Q29u
dGV4dE1lbnVFdmVudChRQ29udGV4dE1lbnVFdmVudCAqLCBRV2ViRnJhbWVBZGFwdGVyKik7Cisg
ICAgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGUoaW50LCBib29sKTsKIAogICAgIFFXZWJIaXRUZXN0
UmVzdWx0UHJpdmF0ZSogdXBkYXRlUG9zaXRpb25EZXBlbmRlbnRNZW51QWN0aW9ucyhjb25zdCBR
UG9pbnQmLCBRQml0QXJyYXkqKTsKICAgICB2b2lkIHVwZGF0ZUFjdGlvbkludGVybmFsKE1lbnVB
Y3Rpb24sIGNvbnN0IGNoYXIqIGNvbW1hbmROYW1lLCBib29sKiBlbmFibGVkLCBib29sKiBjaGVj
a2VkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5jcHAJKHJldmlz
aW9uIDE0MjQ1NykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTE4LDYgKzkxOCwxMSBAQCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6
bGVhdmVFdmVudChRRXZlbnQqCiAgICAgbW91c2VNb3ZlRXZlbnQoJmZha2VFdmVudCk7CiB9CiAK
K3ZvaWQgUVdlYlBhZ2U6OnNldFZpc2liaWxpdHlTdGF0ZShpbnQgdmlzaWJpbGl0eVN0YXRlLCBi
b29sIGlzSW5pdGlhbFN0YXRlKQoreworICAgIGQtPnNldFZpc2liaWxpdHlTdGF0ZSh2aXNpYmls
aXR5U3RhdGUsIGlzSW5pdGlhbFN0YXRlKTsKK30KKwogLyohCiAgICAgXHByb3BlcnR5IFFXZWJQ
YWdlOjpwYWxldHRlCiAgICAgXGJyaWVmIHRoZSBwYWdlJ3MgcGFsZXR0ZQpAQCAtMTM1Myw3ICsx
MzU4LDkgQEAgUVdlYlBhZ2U6OlFXZWJQYWdlKFFPYmplY3QgKnBhcmVudCkKICAgICAsIGQobmV3
IFFXZWJQYWdlUHJpdmF0ZSh0aGlzKSkKIHsKICAgICBzZXRWaWV3KHFvYmplY3RfY2FzdDxRV2lk
Z2V0Kj4ocGFyZW50KSk7Ci0KKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBz
ZXRWaXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbiwgdHJ1ZSk7CisjZW5k
aWYKICAgICBjb25uZWN0KHRoaXMsIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSksIHRoaXMsIFNM
T1QoX3Ffb25Mb2FkUHJvZ3Jlc3NDaGFuZ2VkKGludCkpKTsKICNpZm5kZWYgTkRFQlVHCiAgICAg
Y29ubmVjdChRQ29yZUFwcGxpY2F0aW9uOjppbnN0YW5jZSgpLCBTSUdOQUwoYWJvdXRUb1F1aXQo
KSksIHRoaXMsIFNMT1QoX3FfY2xlYW51cExlYWtNZXNzYWdlcygpKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgJKHJldmlzaW9uIDE0MjQ1NykKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw2ICsz
MDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50RWRpdGFibGUoYm9vbCBlZGl0YWJs
ZSk7CiAgICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRW
aXNpYmlsaXR5U3RhdGUoaW50IHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSk7
CisKICNpZm5kZWYgUVRfTk9fQ09OVEVYVE1FTlUKICAgICBib29sIHN3YWxsb3dDb250ZXh0TWVu
dUV2ZW50KFFDb250ZXh0TWVudUV2ZW50ICpldmVudCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3F0L1dpZGdldEFwaS9xd2Vidmlldy5jcHAJKHJldmlzaW9uIDE0MjQ1NykKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAz
OSw2ICsxMDM5LDE3IEBAIHZvaWQgUVdlYlZpZXc6OmNoYW5nZUV2ZW50KFFFdmVudCAqZSkKICAg
ICBRV2lkZ2V0OjpjaGFuZ2VFdmVudChlKTsKIH0KIAorLyohXHJlaW1wCisqLwordm9pZCBRV2Vi
Vmlldzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCit7CisgICAgUVdpZGdldDo6c2V0VmlzaWJs
ZSh2aXNpYmxlKTsKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAoZC0+
cGFnZSkKKyAgICAgICAgZC0+cGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKHZpc2libGUgPyBXZWJD
b3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSA6IFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5
U3RhdGVIaWRkZW4sIGZhbHNlKTsKKyNlbmRpZgorfQorCiAvKiEKICAgICBcZm4gdm9pZCBRV2Vi
Vmlldzo6dGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJnRpdGxlKQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vidmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmgJKHJldmlzaW9uIDE0MjQ1NykKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw2ICsx
MzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBRV2ViVmlldyAqY3JlYXRlV2luZG93KFFX
ZWJQYWdlOjpXZWJXaW5kb3dUeXBlIHR5cGUpOwogCiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZUV2
ZW50KFFFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZp
cnR1YWwgdm9pZCBtb3VzZU1vdmVFdmVudChRTW91c2VFdmVudCopOwogICAgIHZpcnR1YWwgdm9p
ZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgbW91c2VE
b3VibGVDbGlja0V2ZW50KFFNb3VzZUV2ZW50Kik7Cg==
</data>
<flag name="review"
          id="207457"
          type_id="1"
          status="-"
          setter="allan.jensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>188927</attachid>
            <date>2013-02-18 11:59:28 -0800</date>
            <delta_ts>2013-02-18 11:59:28 -0800</delta_ts>
            <desc>HTML test page</desc>
            <filename>visiApiH5.html</filename>
            <type>text/html</type>
            <size>4709</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiINCiJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPg0KPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KICAgIDxoZWFkPg0KICAgICAgICA8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCIgLz4NCiAgICAgICAgPHRpdGxlPlRlc3QgVmlzaWJpbGl0eSBBUEkgaW5pdDwvdGl0
bGU+DQogICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQogICAgICAgICAgICBib2R5IHsN
CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjBjNGRlOw0KICAgICAgICAgICAg
fQ0KDQogICAgICAgICAgICAjY29uc29sZSB7DQogICAgICAgICAgICAgICAgbWFyZ2luOiA1MHB4
Ow0KICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAwcHg7DQogICAgICAgICAgICAgICAgbWluLWhl
aWdodDogMjBweDsNCiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkOw0KICAg
ICAgICAgICAgICAgIGJvcmRlcjogNHB4IHNvbGlkIHJlZDsNCiAgICAgICAgICAgIH0NCg0KICAg
ICAgICAgICAgLnRhYl8xIHsNCiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7DQog
ICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgICAgICAgICAgbWFyZ2lu
LWxlZnQ6IDQwcHg7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC5yZXMgew0KICAgICAg
ICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsNCiAgICAgICAgICAgICAgICBjb2xvcjogZ3Jl
ZW47DQogICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgICAgICB9DQog
ICAgICAgIDwvc3R5bGU+DQogICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4N
CiAgICAgICAgICAgIC8qanNsaW50IHNsb3BweTogdHJ1ZSAqLw0KICAgICAgICAgICAgLypnbG9i
YWwgZG9jdW1lbnQgY29uc29sZSovDQogICAgICAgICAgICB2YXIgQXBwVGVzdCA9IChmdW5jdGlv
biAoKSB7DQogICAgICAgICAgICAgICAgdmFyIHQwID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSwg
dGhhdCA9IHt9LCBkZWJ1Zywgc3VwcG9ydGVkLCBkYmdEaXYsIHZpc2liaWxpdHlDYWxsQmFjaywg
dXNlQ29uc29sZSA9IGZhbHNlLCB2aXNpUHJvcEhpZGRlbiA9IG51bGwsIHZpc2lQcm9wU3RhdGUg
PSBudWxsLCB2aXNpRXZlbnQgPSBudWxsOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAg
dmlzaWJpbGl0eUNhbGxCYWNrID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICBk
ZWJ1ZygidmlzaWJpbGl0eWNoYW5nZSBldmVudCByZWNlaXZlZDogPGJyIC8+ICIgDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKyAiPHNwYW4gY2xhc3M9J3RhYl8xJz5kb2N1bWVudC4iICsg
dmlzaVByb3BIaWRkZW4gKyAiID0+IDxzcGFuIGNsYXNzPSdyZXMnPiIgKyBkb2N1bWVudFt2aXNp
UHJvcEhpZGRlbl0gKyAiPC9zcGFuPjxiciAvPjwvc3Bhbj4iIA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICsgIjxzcGFuIGNsYXNzPSd0YWJfMSc+ZG9jdW1lbnQuIiArIHZpc2lQcm9wU3Rh
dGUgKyAiID0+IDxzcGFuIGNsYXNzPSdyZXMnPiIgKyBkb2N1bWVudFt2aXNpUHJvcFN0YXRlXSAr
ICI8L3NwYW4+PC9zcGFuPiIpOw0KICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC50aXRsZSA9
ICJUZXN0IFZpc2liaWxpdHkgQVBJICIgKyBkb2N1bWVudFt2aXNpUHJvcFN0YXRlXTsNCiAgICAg
ICAgICAgICAgICB9Ow0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgZGVidWcgPSBmdW5j
dGlvbiAobXNnKSB7DQoJCQkJCXZhciB0MSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7DQogICAg
ICAgICAgICAgICAgICAgIGRiZ0Rpdi5pbm5lckhUTUwgKz0gIlsiICsgKHQxIC0gdDApIC8gMTAw
MCArICJzXSIgKyBtc2cgKyAiPGJyIC8+IjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHVzZUNv
bnNvbGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG1zZyk7DQogICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICAgc3VwcG9ydGVkID0gKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAg
ICAgdmFyIHByZWZpeGVzID0gWyJ3ZWJraXQiLCAibW96IiwgIm1zIiwgIm8iXSwgcmVzID0gIiIs
IGk7DQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgaWYgKCJoaWRkZW4iIGluIGRv
Y3VtZW50KSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gImhpZGRlbiAiOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgdmlzaVByb3BIaWRkZW4gPSAiaGlkZGVuIjsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIHZpc2lFdmVudCA9ICJ2aXNpYmlsaXR5Y2hhbmdlIjsNCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIGlmICgidmlz
aWJpbGl0eVN0YXRlIiBpbiBkb2N1bWVudCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVz
ICs9ICJ2aXNpYmlsaXR5U3RhdGUgIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2lQcm9w
U3RhdGUgPSAidmlzaWJpbGl0eVN0YXRlIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcmVmaXhlcy5sZW5n
dGg7IGkgKz0gMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcmVmaXhlc1tpXSAr
ICJIaWRkZW4iKSBpbiBkb2N1bWVudCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cyArPSBwcmVmaXhlc1tpXSArICJIaWRkZW4gIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodmlzaVByb3BIaWRkZW4gPT09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmlzaVByb3BIaWRkZW4gPSBwcmVmaXhlc1tpXSArICJIaWRkZW4iOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpRXZlbnQgPSBwcmVmaXhlc1tpXSArICJ2aXNp
YmlsaXR5Y2hhbmdlIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgocHJlZml4ZXNbaV0gKyAiVmlzaWJpbGl0eVN0YXRlIikgaW4gZG9jdW1lbnQpIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gcHJlZml4ZXNbaV0gKyAiVmlzaWJpbGl0eVN0
YXRlICI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaVByb3BTdGF0ZSA9IHByZWZp
eGVzW2ldICsgIlZpc2liaWxpdHlTdGF0ZSI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsNCiAg
ICAgICAgICAgICAgICB9KCkpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgdGhhdC5p
bml0ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICBkYmdEaXYgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOw0KICAgICAgICAgICAgICAgICAgICBkZWJ1Zygi
U3RhcnQgdGVzdC4uLiIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAodmlzaVByb3BIaWRkZW4g
IT09IG51bGwgJiYgdmlzaVByb3BTdGF0ZSAhPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgZGVidWcoIlN1cHBvcnRlZCBhdHRyaWJ1dGVzOjxiciAvPjxzcGFuIGNsYXNzPSd0YWJf
MSc+PHNwYW4gY2xhc3M9J3Jlcyc+IiArIHN1cHBvcnRlZCArICI8L3NwYW4+PC9zcGFuPiIpOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih2aXNpRXZl
bnQsIHZpc2liaWxpdHlDYWxsQmFjaywgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAg
ZGVidWcoIldhaXRpbmcgdmlzaWJpbGl0eWNoYW5nZSBldmVudC4uLiIpOw0KICAgICAgICAgICAg
ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoIlZpc2liaWxp
dHkgQVBJIG5vdCBzdXBwb3J0ZWQgKGhpZGRlbiBhdHRyaWJ1dGU6IiArIHZpc2lQcm9wSGlkZGVu
ICsgIiAmIHZpc2liaWxpdHlTdGF0ZSBhdHRyaWJ1dGU6IiArIHZpc2lQcm9wU3RhdGUgKyAiKS4i
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCJHYW1lIG92ZXIhIik7DQogICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICAgcmV0dXJuIHRoYXQ7DQogICAgICAgICAgICB9KCkpOw0KICAgICAgICAgICAgDQog
ICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgQXBwVGVzdC5pbml0
LCB0cnVlKTsNCiAgICAgICAgPC9zY3JpcHQ+DQogICAgPC9oZWFkPg0KICAgIDxib2R5Pg0KICAg
ICAgICA8aDE+VGVzdCB2aXNpYmlsaXR5IEFQSSAoaHR0cDovL3d3dy53My5vcmcvVFIvcGFnZS12
aXNpYmlsaXR5Lyk8L2gxPg0KICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj5Mb2FkaW5nLi4uPGJy
IC8+DQoJCTwvZGl2Pg0KICAgIDwvYm9keT4NCjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189047</attachid>
            <date>2013-02-19 04:00:00 -0800</date>
            <delta_ts>2013-02-19 04:21:41 -0800</delta_ts>
            <desc>[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests</desc>
            <filename>patch_109422-4.patch</filename>
            <type>text/plain</type>
            <size>25340</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTE5ICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oOgorICAgICAgICAqIFdpZGdldEFwaS9x
Z3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OmV2ZW50KToK
KyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnNl
dFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgIChRV2ViUGFnZTo6UVdlYlBhZ2UpOgorICAgICAg
ICAqIFdpZGdldEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdpZGdldEFwaS9xd2Vidmlldy5j
cHA6CisgICAgICAgIChRV2ViVmlldzo6ZXZlbnQpOgorICAgICAgICAqIHRlc3RzL3FncmFwaGlj
c3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FHcmFwaGlj
c1dlYlZpZXcpOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXc6OnZpc2liaWxpdHlBcGlP
blZpc2libGVTY2VuZSk6CisgICAgICAgICh0c3RfUUdyYXBoaWNzV2ViVmlldzo6dmlzaWJpbGl0
eUFwaU9uSGlkZGVuU2NlbmUpOgorICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmll
dy5jcHA6CisgICAgICAgICh0c3RfUVdlYlZpZXcpOgorICAgICAgICAodHN0X1FXZWJWaWV3Ojp2
aXNpYmlsaXR5QXBpKToKKwogMjAxMy0wMi0xNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxs
YW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQ
b2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCShyZXZpc2lvbiAxNDMzMDMp
CisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NzcsMyArMTQ3NywyNyBAQCBib29sIFFXZWJQYWdlQWRhcHRl
cjo6c3dhbGxvd0NvbnRleHRNZW51CiAKICAgICByZXR1cm4gIW1lbnU7CiB9CisKKy8qIQorICBU
aGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgd2ViIHBhZ2UgdmlzaWJpbGl0eSBzdGF0
ZS4gSWYgdGhlIHZpc2liaWxpdHkgCisgIHN0YXRlIGlzIHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91
cyBzZXQsIG5vdGhpbmcgaXMgYmVpbmcgZG9uZS4KKyAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0
aGlzIEhUTUw1IEFQSSBjYW4gYmUgZm91bmQgYXQgXGx7aHR0cDovL3d3dy53My5vcmcvVFIvcGFn
ZS12aXNpYmlsaXR5L317VzNDIENhbmRpZGF0ZSBSZWNvbW1lbmRhdGlvbjogUGFnZSBWaXNpYmls
aXR5fS4KKworICBcYSB2aXNpYmlsaXR5U3RhdGUgc3BlY2lmaWVzIHZpc2liaWxpdHkgc3RhdGUg
KFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLAorICBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVu
LCBQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyIG9yIFBhZ2VWaXNpYmlsaXR5U3RhdGVQcmV2
aWV3KQorICBcYSBpc0luaXRpYWxTdGF0ZSB0cnVlIHRvIHNldCB0aGUgaW5pdGlhbCB2aXNpYmls
aXR5IHN0YXRlICAKKworICBcc2EgUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmls
aXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLCBib29sIGlzSW5pdGlhbFN0YXRlKQorKi8KK3ZvaWQg
UVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUoV2ViQ29yZTo6UGFnZVZpc2liaWxp
dHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUsIGJvb2wgaXNJbml0aWFsU3RhdGUpCit7CisjaWYgRU5B
QkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47
CisgICAgcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKHZpc2liaWxpdHlTdGF0ZSwgaXNJbml0aWFs
U3RhdGUpOworI2Vsc2UKKyAgICBRX1VOVVNFRCh2aXNpYmlsaXR5U3RhdGUpOworICAgIFFfVU5V
U0VEKGlzSW5pdGlhbFN0YXRlKTsKKyNlbmRpZgorfQorCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHJldmlzaW9uIDE0MzMw
MykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwMSw2ICszMDEsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJu
cyB3aGV0aGVyIHRoZSBkZWZhdWx0IGFjdGlvbiB3YXMgY2FuY2VsbGVkIGluIHRoZSBKUyBldmVu
dCBoYW5kbGVyCiAgICAgYm9vbCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CiAgICAgYm9vbCBz
d2FsbG93Q29udGV4dE1lbnVFdmVudChRQ29udGV4dE1lbnVFdmVudCAqLCBRV2ViRnJhbWVBZGFw
dGVyKik7CisgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGUoV2ViQ29yZTo6UGFnZVZpc2liaWxp
dHlTdGF0ZSwgYm9vbCk7CiAKICAgICBRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUqIHVwZGF0ZVBv
c2l0aW9uRGVwZW5kZW50TWVudUFjdGlvbnMoY29uc3QgUVBvaW50JiwgUUJpdEFycmF5Kik7CiAg
ICAgdm9pZCB1cGRhdGVBY3Rpb25JbnRlcm5hbChNZW51QWN0aW9uLCBjb25zdCBjaGFyKiBjb21t
YW5kTmFtZSwgYm9vbCogZW5hYmxlZCwgYm9vbCogY2hlY2tlZCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcAkocmV2aXNpb24gMTQz
MzAzKQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0MDYsMTQgQEAgYm9vbCBRR3JhcGhpY3NXZWJWaWV3
OjpldmVudChRRXZlbnQqIGV2ZQogICAgIC8vIFJlLWltcGxlbWVudGVkIGluIG9yZGVyIHRvIGFs
bG93cyBmaXhpbmcgZXZlbnQtcmVsYXRlZCBidWdzIGluIHBhdGNoIHJlbGVhc2VzLgogCiAgICAg
aWYgKGQtPnBhZ2UpIHsKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpTaG93IHx8IGV2ZW50LT50eXBlKCkgPT0gUUV2
ZW50OjpXaW5kb3dBY3RpdmF0ZSkKKyAgICAgICAgICAgIC8qIGNoYW5nZSBvbmx5IGlmIHRoZSBz
Y2VuZSBpcyB2aXNpYmxlICovCisgICAgICAgICAgICBpZiAoc2NlbmUoKS0+aXNBY3RpdmUoKSkK
KyAgICAgICAgICAgICAgICBkLT5wYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUoV2ViQ29yZTo6UGFn
ZVZpc2liaWxpdHlTdGF0ZVZpc2libGUsIGZhbHNlKTsKKyAgICAgICAgZWxzZSBpZiAoZXZlbnQt
PnR5cGUoKSA9PSBRRXZlbnQ6OkhpZGUgfHwgZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OldpbmRv
d0RlYWN0aXZhdGUpICAgICAKKyAgICAgICAgICAgIGQtPnBhZ2UtPnNldFZpc2liaWxpdHlTdGF0
ZShXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuLCBmYWxzZSk7CisjZW5kaWYKICAg
ICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpQYWxldHRlQ2hhbmdlKQogICAgICAg
ICAgICAgZC0+cGFnZS0+c2V0UGFsZXR0ZShwYWxldHRlKCkpOwogI2lmbmRlZiBRVF9OT19DT05U
RVhUTUVOVQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcAkocmV2
aXNpb24gMTQzMzAzKQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MTksNiArOTE5LDIyIEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRl
OjpsZWF2ZUV2ZW50KFFFdmVudCoKIH0KIAogLyohCisgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8g
Y2hhbmdlIHRoZSB3ZWIgcGFnZSB2aXNpYmlsaXR5IHN0YXRlLiBJZiB0aGUgdmlzaWJpbGl0eSAK
KyAgc3RhdGUgaXMgdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIHNldCwgbm90aGluZyBpcyBiZWlu
ZyBkb25lLgorICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgSFRNTDUgQVBJIGNhbiBiZSBm
b3VuZCBhdCBcbHtodHRwOi8vd3d3LnczLm9yZy9UUi9wYWdlLXZpc2liaWxpdHkvfXtXM0MgQ2Fu
ZGlkYXRlIFJlY29tbWVuZGF0aW9uOiBQYWdlIFZpc2liaWxpdHl9LgorCisgIFxhIHZpc2liaWxp
dHlTdGF0ZSBzcGVjaWZpZXMgdmlzaWJpbGl0eSBzdGF0ZSAoUGFnZVZpc2liaWxpdHlTdGF0ZVZp
c2libGUsCisgIFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4sIFBhZ2VWaXNpYmlsaXR5U3RhdGVQ
cmVyZW5kZXIgb3IgUGFnZVZpc2liaWxpdHlTdGF0ZVByZXZpZXcpCisgIFxhIGlzSW5pdGlhbFN0
YXRlIHRydWUgdG8gc2V0IHRoZSBpbml0aWFsIHZpc2liaWxpdHkgc3RhdGUgIAorCisgIFxzYSBR
V2ViUGFnZUFkYXB0ZXI6OnNldFZpc2liaWxpdHlTdGF0ZShXZWJDb3JlOjpQYWdlVmlzaWJpbGl0
eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkKKyovCit2b2lkIFFX
ZWJQYWdlOjpzZXRWaXNpYmlsaXR5U3RhdGUoV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSB2
aXNpYmlsaXR5U3RhdGUsIGJvb2wgaXNJbml0aWFsU3RhdGUpCit7CisgICAgZC0+c2V0VmlzaWJp
bGl0eVN0YXRlKHZpc2liaWxpdHlTdGF0ZSwgaXNJbml0aWFsU3RhdGUpOworfQorCisvKiEKICAg
ICBccHJvcGVydHkgUVdlYlBhZ2U6OnBhbGV0dGUKICAgICBcYnJpZWYgdGhlIHBhZ2UncyBwYWxl
dHRlCiAKQEAgLTEzNTMsNyArMTM2OSw5IEBAIFFXZWJQYWdlOjpRV2ViUGFnZShRT2JqZWN0ICpw
YXJlbnQpCiAgICAgLCBkKG5ldyBRV2ViUGFnZVByaXZhdGUodGhpcykpCiB7CiAgICAgc2V0Vmll
dyhxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KHBhcmVudCkpOwotCisjaWYgRU5BQkxFKFBBR0VfVklT
SUJJTElUWV9BUEkpCisgICAgc2V0VmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGVI
aWRkZW4sIHRydWUpOworI2VuZGlmCiAgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwobG9hZFByb2dy
ZXNzKGludCkpLCB0aGlzLCBTTE9UKF9xX29uTG9hZFByb2dyZXNzQ2hhbmdlZChpbnQpKSk7CiAj
aWZuZGVmIE5ERUJVRwogICAgIGNvbm5lY3QoUUNvcmVBcHBsaWNhdGlvbjo6aW5zdGFuY2UoKSwg
U0lHTkFMKGFib3V0VG9RdWl0KCkpLCB0aGlzLCBTTE9UKF9xX2NsZWFudXBMZWFrTWVzc2FnZXMo
KSkpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oCShyZXZpc2lvbiAx
NDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDgsNiArMzA4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudEVk
aXRhYmxlKGJvb2wgZWRpdGFibGUpOwogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25z
dDsKIAorICAgIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlKFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5
U3RhdGUsIGJvb2wpOworCiAjaWZuZGVmIFFUX05PX0NPTlRFWFRNRU5VCiAgICAgYm9vbCBzd2Fs
bG93Q29udGV4dE1lbnVFdmVudChRQ29udGV4dE1lbnVFdmVudCAqZXZlbnQpOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vidmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnZpZXcuY3BwCShyZXZpc2lvbiAxNDMz
MDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vidmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcyOCw2ICs3MjgsMTIgQEAgYm9vbCBRV2ViVmlldzo6ZXZlbnQoUUV2ZW50ICpl
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoZS0+dHlwZSgp
ID09IFFFdmVudDo6TGVhdmUpCiAgICAgICAgICAgICBkLT5wYWdlLT5ldmVudChlKTsKKyNpZiBF
TkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICAgICAgZWxzZSBpZiAoZS0+dHlwZSgpID09
IFFFdmVudDo6U2hvdyB8fCBlLT50eXBlKCkgPT0gUUV2ZW50OjpXaW5kb3dBY3RpdmF0ZSkKKyAg
ICAgICAgICAgIGQtPnBhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShXZWJDb3JlOjpQYWdlVmlzaWJp
bGl0eVN0YXRlVmlzaWJsZSwgZmFsc2UpOworICAgICAgICBlbHNlIGlmIChlLT50eXBlKCkgPT0g
UUV2ZW50OjpIaWRlIHx8IGUtPnR5cGUoKSA9PSBRRXZlbnQ6OldpbmRvd0RlYWN0aXZhdGUpCisg
ICAgICAgICAgICBkLT5wYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUoV2ViQ29yZTo6UGFnZVZpc2li
aWxpdHlTdGF0ZUhpZGRlbiwgZmFsc2UpOworI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIFFX
aWRnZXQ6OmV2ZW50KGUpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3
ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3BwCShy
ZXZpc2lvbiAxNDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZp
ZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw4
IEBAIHByaXZhdGUgUV9TTE9UUzoKICAgICB2b2lkIHdpZGdldHNSZW5kZXJpbmdUaHJvdWdoQ2Fj
aGUoKTsKICAgICB2b2lkIHdpbmRvd1Jlc2l6ZUV2ZW50KCk7CiAgICAgdm9pZCBob3Jpem9udGFs
U2Nyb2xsYmFyVGVzdCgpOwotCisgICAgdm9pZCB2aXNpYmlsaXR5QXBpT25WaXNpYmxlU2NlbmUo
KTsKKyAgICB2b2lkIHZpc2liaWxpdHlBcGlPbkhpZGRlblNjZW5lKCk7CiAjaWYgIShkZWZpbmVk
KFdURl9VU0VfUVRfTU9CSUxFX1RIRU1FKSAmJiBXVEZfVVNFX1FUX01PQklMRV9USEVNRSkKICAg
ICB2b2lkIHNldFBhbGV0dGVfZGF0YSgpOwogICAgIHZvaWQgc2V0UGFsZXR0ZSgpOwpAQCAtMTI2
LDYgKzEyNywyNzAgQEAgcHVibGljOgogICAgIH0KIH07CiAKK3ZvaWQgdHN0X1FHcmFwaGljc1dl
YlZpZXc6OnZpc2liaWxpdHlBcGlPblZpc2libGVTY2VuZSgpCit7CisgICAgUUdyYXBoaWNzU2Nl
bmUgc2NlbmU7CisgICAgUUdyYXBoaWNzVmlldyB2aWV3OworICAgIHZpZXcuc2V0U2NlbmUoJnNj
ZW5lKTsKKyAgICBRR3JhcGhpY3NXZWJWaWV3KiB3ZWJWaWV3ID0gbmV3IFFHcmFwaGljc1dlYlZp
ZXc7CisgICAgUVdlYlBhZ2UqIHBhZ2UgPSBuZXcgUVdlYlBhZ2U7CisgICAgUVZhcmlhbnQgc3Rh
dGVCb29sLCBzdGF0ZVN0cmluZywgY3B0OworCisgICAgd2ViVmlldy0+c2V0UGFnZShwYWdlKTsK
KyAgICB3ZWJWaWV3LT5sb2FkKFFVcmwoImRhdGE6dGV4dC9odG1sLDxodG1sPjxoZWFkPjwvaGVh
ZD48Ym9keT48L2JvZHk+PC9odG1sPiIpKTsKKworICAgIFFWRVJJRlkod2FpdEZvclNpZ25hbCh3
ZWJWaWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOworCisgICAgd2ViVmlldy0+cGFn
ZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ2YXIgc3RhdGVCb29sID0gdW5k
ZWZpbmVkLCBzdGF0ZVN0cmluZyA9IHVuZGVmaW5lZCwgY3B0ID0gMDsgdmFyIHZpc2liaWxpdHlD
YWxsQmFjayA9IGZ1bmN0aW9uICgpIHtzdGF0ZUJvb2wgPSBkb2N1bWVudFsnd2Via2l0SGlkZGVu
J107IHN0YXRlU3RyaW5nID0gZG9jdW1lbnRbJ3dlYmtpdFZpc2liaWxpdHlTdGF0ZSddOyBjcHQr
Kzt9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdHZpc2liaWxpdHljaGFuZ2UnLCB2
aXNpYmlsaXR5Q2FsbEJhY2ssIGZhbHNlKTsiKTsKKworICAgIC8qIHNob3VsZCBiZSBpbml0aWFs
aXNlZCB0byBoaWRkZW4gKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdEhpZGRlbiIpOworICAg
IFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wu
dG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUiKTsK
KyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0
YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworCisgICAgdmlldy5z
aG93KCk7CisgICAgUVRlc3Q6OnFXYWl0KDUpOworCisgICAgLyogc2hvdWxkIHN0YXkgdG8gaGlk
ZGVuIGJlY2F1c2Ugd2ViVmlldyBpc24ndCBhZGRlZCB0byB0aGUgc2NlbmUgKi8KKyAgICBzdGF0
ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
ImRvY3VtZW50LndlYmtpdEhpZGRlbiIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9
PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5n
ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1
bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUiKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5
cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0
cmluZygiaGlkZGVuIikpOworCisgICAgc2NlbmUuYWRkSXRlbSh3ZWJWaWV3KTsKKyAgICBRVGVz
dDo6cVdhaXQoNSk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVk
IGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5ICov
CisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0g
UVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRl
U3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0
cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInZpc2libGUiKSk7Cisg
ICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBj
cHQudG9Eb3VibGUoKSA9PSAxKTsKKworICAgIHZpZXcuaGlkZSgpOworICAgIFFUZXN0OjpxV2Fp
dCg1KTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZp
c2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBz
dGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFu
dDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmll
dy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIp
OworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYg
c3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0g
d2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsK
KyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3Vi
bGUoKSA9PSAyKTsKKworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQoNSk7
CisKKyAgICAvKiBubyBldmVudCBzZW50IChzY2VuZSBpcyBhbHJlYWR5IGhpZGRlbikgLT4gY3B0
IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZF
UklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jv
b2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmlu
Zy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09
IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9
PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIpOworCisgICAgd2ViVmll
dy0+c2hvdygpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8qIG5vIGV2ZW50IHNlbnQg
IChzY2VuZSBpcyBoaWRkZW4pIC0+IGNwdCBzaG91bGQgYmUgZXF1YWxzIHRvIDIgKi8KKyAgICBz
dGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFu
dDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmll
dy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIp
OworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYg
c3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0g
d2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsK
KyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3Vi
bGUoKSA9PSAyKTsKKworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQoNSk7
CisKKyAgICAvKiBubyBldmVudCBzZW50IChzY2VuZSBpcyBoaWRkZW4pIC0+IGNwdCBzaG91bGQg
YmUgZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3Rh
dGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOwor
ICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgp
ID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5n
KCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAgIHZpZXcuc2hvdygpOwor
ICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8qIG5vIGV2ZW50IHNlbnQgKHdlYlZpZXcgaXMg
aGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFscyB0byAyICovCisgICAgc3RhdGVCb29sID0g
d2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJv
b2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYg
c3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+
bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVS
SUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5n
LnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklG
WShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7
CisKKyAgICB3ZWJWaWV3LT5zaG93KCk7CisgICAgUVRlc3Q6OnFXYWl0KDUpOworCisgICAgLyog
Y2hlY2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBwcm9wZXJ0
aWVzIGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZp
ZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7
CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmICFzdGF0
ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlko
c3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9T
dHJpbmcoKSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShj
cHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMyk7CisK
KyAgICB3ZWJWaWV3LT5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0KDUpOworCisgICAgLyogY2hl
Y2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBwcm9wZXJ0aWVz
IGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXct
PnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7Cisg
ICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9v
bC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0
ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmlu
ZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1h
aW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5
cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDQpOworCisgICAg
dmlldy5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0KDUpOworCisgICAgLyogbm8gZXZlbnQgc2Vu
dCAod2ViVmlldyBpcyBoaWRkZW4pIC0+IGNwdCBzaG91bGQgYmUgZXF1YWxzIHRvIDQgKi8KKyAg
ICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFy
aWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2Vi
Vmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmlu
ZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcg
JiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0
ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQi
KTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9E
b3VibGUoKSA9PSA0KTsKK30KKwordm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6dmlzaWJpbGl0
eUFwaU9uSGlkZGVuU2NlbmUoKQoreworICAgIFFHcmFwaGljc1NjZW5lIHNjZW5lOworICAgIFFH
cmFwaGljc1ZpZXcgdmlldzsKKyAgICB2aWV3LnNldFNjZW5lKCZzY2VuZSk7CisgICAgUUdyYXBo
aWNzV2ViVmlldyogd2ViVmlldyA9IG5ldyBRR3JhcGhpY3NXZWJWaWV3OworICAgIFFXZWJQYWdl
KiBwYWdlID0gbmV3IFFXZWJQYWdlOworICAgIFFWYXJpYW50IHN0YXRlQm9vbCwgc3RhdGVTdHJp
bmcsIGNwdDsKKworICAgIHdlYlZpZXctPnNldFBhZ2UocGFnZSk7CisgICAgd2ViVmlldy0+bG9h
ZChRVXJsKCJkYXRhOnRleHQvaHRtbCw8aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+PC9ib2R5Pjwv
aHRtbD4iKSk7CisKKyAgICBRVkVSSUZZKHdhaXRGb3JTaWduYWwod2ViVmlldywgU0lHTkFMKGxv
YWRGaW5pc2hlZChib29sKSkpKTsKKworICAgIHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCkt
PmV2YWx1YXRlSmF2YVNjcmlwdCgidmFyIHN0YXRlQm9vbCA9IHVuZGVmaW5lZCwgc3RhdGVTdHJp
bmcgPSB1bmRlZmluZWQsIGNwdCA9IDA7IHZhciB2aXNpYmlsaXR5Q2FsbEJhY2sgPSBmdW5jdGlv
biAoKSB7c3RhdGVCb29sID0gZG9jdW1lbnRbJ3dlYmtpdEhpZGRlbiddOyBzdGF0ZVN0cmluZyA9
IGRvY3VtZW50Wyd3ZWJraXRWaXNpYmlsaXR5U3RhdGUnXTsgY3B0Kys7fTtkb2N1bWVudC5hZGRF
dmVudExpc3RlbmVyKCd3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlJywgdmlzaWJpbGl0eUNhbGxCYWNr
LCBmYWxzZSk7Iik7CisKKyAgICAvKiBzaG91bGQgYmUgaW5pdGlhbGlzZWQgdG8gaGlkZGVuICov
CisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRIaWRkZW4iKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9v
bC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBz
dGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgiZG9jdW1lbnQud2Via2l0VmlzaWJpbGl0eVN0YXRlIik7CisgICAgUVZFUklGWShzdGF0
ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmlu
ZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKworICAgIHNjZW5lLmFkZEl0ZW0od2ViVmlldyk7
CisgICAgUVRlc3Q6OnFXYWl0KDUpOworCisgICAgLyogc2hvdWxkIHN0YXkgdG8gaGlkZGVuIGFu
ZCBubyBldmVudCBzZW50IGJlY2F1c2Ugc2NlbmUgaXMgaGlkZGVuICovCisgICAgc3RhdGVCb29s
ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1
bWVudC53ZWJraXRIaWRkZW4iKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZh
cmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdl
YlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQu
d2Via2l0VmlzaWJpbGl0eVN0YXRlIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkg
PT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmco
ImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFu
dDo6RG91YmxlICYmICFjcHQudG9Eb3VibGUoKSk7CisKKyAgICB2aWV3LnNob3coKTsKKyAgICBR
VGVzdDo6cVdhaXQoNSk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBiZWVuIGZp
cmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5
ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkg
PT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJp
bmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0
YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6
OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInZpc2libGUiKSk7
CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2Ny
aXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAm
JiBjcHQudG9Eb3VibGUoKSA9PSAxKTsKKworICAgIHZpZXcuaGlkZSgpOworICAgIFFUZXN0Ojpx
V2FpdCg1KTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5k
IHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAg
ICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFy
aWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2Vi
Vmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmlu
ZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcg
JiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0
ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQi
KTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9E
b3VibGUoKSA9PSAyKTsKKworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQo
NSk7CisKKyAgICAvKiBubyBldmVudCBzZW50IChzY2VuZSBpcyBhbHJlYWR5IGhpZGRlbikgLT4g
Y3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAg
UVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50
b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgp
LT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0
cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygp
ID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUo
KSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIpOworCisgICAgd2Vi
Vmlldy0+c2hvdygpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8qIG5vIGV2ZW50IHNl
bnQgIChzY2VuZSBpcyBoaWRkZW4pIC0+IGNwdCBzaG91bGQgYmUgZXF1YWxzIHRvIDIgKi8KKyAg
ICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFy
aWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2Vi
Vmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmlu
ZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcg
JiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0
ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQi
KTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9E
b3VibGUoKSA9PSAyKTsKKworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQo
NSk7CisKKyAgICAvKiBubyBldmVudCBzZW50IChzY2VuZSBpcyBoaWRkZW4pIC0+IGNwdCBzaG91
bGQgYmUgZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1h
aW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlko
c3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkp
OworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlw
ZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3Ry
aW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZh
cmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAgIHZpZXcuc2hvdygp
OworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8qIG5vIGV2ZW50IHNlbnQgKHdlYlZpZXcg
aXMgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFscyB0byAyICovCisgICAgc3RhdGVCb29s
ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0
ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wg
JiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBR
VkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3Ry
aW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXct
PnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZF
UklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0g
Mik7CisKKyAgICB3ZWJWaWV3LT5zaG93KCk7CisgICAgUVRlc3Q6OnFXYWl0KDUpOworCisgICAg
LyogY2hlY2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBwcm9w
ZXJ0aWVzIGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9IHdl
YlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29s
Iik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0
YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1h
aW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklG
WShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50
b1N0cmluZygpID09IFFTdHJpbmcoInZpc2libGUiKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFn
ZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZ
KGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAzKTsK
KworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQoNSk7CisKKyAgICAvKiBj
aGVjayBpZiBhIEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRp
ZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5ICovCisgICAgc3RhdGVCb29sID0gd2ViVmll
dy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsK
KyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVC
b29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0
YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3Ry
aW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+
bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQu
dHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gNCk7CisKKyAg
ICB2aWV3LmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQoNSk7CisKKyAgICAvKiBubyBldmVudCBz
ZW50ICh3ZWJWaWV3IGlzIGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gNCAqLwor
ICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFW
YXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3
ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3Ry
aW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmlu
ZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBj
cHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNw
dCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50
b0RvdWJsZSgpID09IDQpOworfQorCiB2b2lkIHRzdF9RR3JhcGhpY3NXZWJWaWV3OjpjcmFzaE9u
Vmlld2xlc3NXZWJQYWdlcygpCiB7CiAgICAgUUdyYXBoaWNzU2NlbmUgc2NlbmU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3BwCShy
ZXZpc2lvbiAxNDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9x
d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDggQEAgcHJpdmF0ZSBRX1NM
T1RTOgogICAgIHZvaWQgc2V0UGFsZXR0ZV9kYXRhKCk7CiAgICAgdm9pZCBzZXRQYWxldHRlKCk7
CiAjZW5kaWYKKworICAgIHZvaWQgdmlzaWJpbGl0eUFwaSgpOwogfTsKIAogLy8gVGhpcyB3aWxs
IGJlIGNhbGxlZCBiZWZvcmUgdGhlIGZpcnN0IHRlc3QgZnVuY3Rpb24gaXMgZXhlY3V0ZWQuCkBA
IC01MTgsNiArNTIwLDQyIEBAIHZvaWQgdHN0X1FXZWJWaWV3OjpyZW5kZXJpbmdBZnRlck1heEFu
ZEIKICAgICBRQ09NUEFSRShpbWFnZTMsIHJlZmVyZW5jZTMpOwogfQogCit2b2lkIHRzdF9RV2Vi
Vmlldzo6dmlzaWJpbGl0eUFwaSgpCit7CisgICAgUVVybCB1cmwgPSBRVXJsKCJkYXRhOnRleHQv
aHRtbCw8aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iKTsKKworICAgIFFX
ZWJWaWV3IHZpZXc7CisgICAgUVZhcmlhbnQgc3RhdGVCb29sLCBzdGF0ZVN0cmluZywgY3B0Owor
ICAgIHZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZCh1cmwpOworICAgIFFWRVJJRlkod2Fp
dEZvclNpZ25hbCgmdmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpKTsKKyAgICB2aWV3
LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidmFyIHN0YXRlQm9vbCA9
IHVuZGVmaW5lZCwgc3RhdGVTdHJpbmcgPSB1bmRlZmluZWQsIGNwdCA9IDA7IHZhciB2aXNpYmls
aXR5Q2FsbEJhY2sgPSBmdW5jdGlvbiAoKSB7c3RhdGVCb29sID0gZG9jdW1lbnRbJ3dlYmtpdEhp
ZGRlbiddOyBzdGF0ZVN0cmluZyA9IGRvY3VtZW50Wyd3ZWJraXRWaXNpYmlsaXR5U3RhdGUnXTsg
Y3B0Kys7fTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXR2aXNpYmlsaXR5Y2hhbmdl
JywgdmlzaWJpbGl0eUNhbGxCYWNrLCBmYWxzZSk7Iik7CisKKyAgICAvKiBzaG91bGQgYmUgaW5p
dGlhbGlzZWQgdG8gaGlkZGVuICovCisgICAgc3RhdGVCb29sID0gdmlldy5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdEhpZGRlbiIpOworICAg
IFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wu
dG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gdmlldy5wYWdlKCktPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSIpOworICAg
IFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVT
dHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisKKyAgICB2aWV3LnNob3co
KTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2li
aWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0
ZUJvb2wgPSB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3Rh
dGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29s
ICYmICFzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gdmlldy5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZF
UklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmlu
Zy50b1N0cmluZygpID09IFFTdHJpbmcoInZpc2libGUiKSk7CisgICAgY3B0ID0gdmlldy5wYWdl
KCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlko
Y3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDEpOwor
CisgICAgdmlldy5oaWRlKCk7CisKKyAgICBzdGF0ZUJvb2wgPSB2aWV3LnBhZ2UoKS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0
ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7Cisg
ICAgc3RhdGVTdHJpbmcgPSB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBR
VmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlk
ZGVuIikpOworICAgIGNwdCA9IHZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJs
ZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKK30KKwogUVRFU1RfTUFJTih0c3RfUVdlYlZpZXcp
CiAjaW5jbHVkZSAidHN0X3F3ZWJ2aWV3Lm1vYyIKIAo=
</data>
<flag name="commit-queue"
          id="209330"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189052</attachid>
            <date>2013-02-19 04:25:43 -0800</date>
            <delta_ts>2013-02-19 04:46:23 -0800</delta_ts>
            <desc>[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (2)</desc>
            <filename>patch_109422-5.patch</filename>
            <type>text/plain</type>
            <size>25258</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTE5ICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oOgorICAgICAgICAqIFdpZGdldEFwaS9x
Z3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OmV2ZW50KToK
KyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnNl
dFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgIChRV2ViUGFnZTo6UVdlYlBhZ2UpOgorICAgICAg
ICAqIFdpZGdldEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdpZGdldEFwaS9xd2Vidmlldy5j
cHA6CisgICAgICAgIChRV2ViVmlldzo6ZXZlbnQpOgorICAgICAgICAqIHRlc3RzL3FncmFwaGlj
c3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FHcmFwaGlj
c1dlYlZpZXcpOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXc6OnZpc2liaWxpdHlBcGlP
blZpc2libGVTY2VuZSk6CisgICAgICAgICh0c3RfUUdyYXBoaWNzV2ViVmlldzo6dmlzaWJpbGl0
eUFwaU9uSGlkZGVuU2NlbmUpOgorICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmll
dy5jcHA6CisgICAgICAgICh0c3RfUVdlYlZpZXcpOgorICAgICAgICAodHN0X1FXZWJWaWV3Ojp2
aXNpYmlsaXR5QXBpKToKKwogMjAxMy0wMi0xNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxs
YW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQ
b2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCShyZXZpc2lvbiAxNDMzMDMp
CisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NzcsMyArMTQ3NywyNyBAQCBib29sIFFXZWJQYWdlQWRhcHRl
cjo6c3dhbGxvd0NvbnRleHRNZW51CiAKICAgICByZXR1cm4gIW1lbnU7CiB9CisKKy8qIQorICBU
aGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgd2ViIHBhZ2UgdmlzaWJpbGl0eSBzdGF0
ZS4gSWYgdGhlIHZpc2liaWxpdHkgCisgIHN0YXRlIGlzIHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91
cyBzZXQsIG5vdGhpbmcgaXMgYmVpbmcgZG9uZS4KKyAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0
aGlzIEhUTUw1IEFQSSBjYW4gYmUgZm91bmQgYXQgXGx7aHR0cDovL3d3dy53My5vcmcvVFIvcGFn
ZS12aXNpYmlsaXR5L317VzNDIENhbmRpZGF0ZSBSZWNvbW1lbmRhdGlvbjogUGFnZSBWaXNpYmls
aXR5fS4KKworICBcYSB2aXNpYmlsaXR5U3RhdGUgc3BlY2lmaWVzIHZpc2liaWxpdHkgc3RhdGUg
KFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLAorICBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVu
LCBQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyIG9yIFBhZ2VWaXNpYmlsaXR5U3RhdGVQcmV2
aWV3KQorICBcYSBpc0luaXRpYWxTdGF0ZSB0cnVlIHRvIHNldCB0aGUgaW5pdGlhbCB2aXNpYmls
aXR5IHN0YXRlICAKKworICBcc2EgUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmls
aXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLCBib29sIGlzSW5pdGlhbFN0YXRlKQorKi8KK3ZvaWQg
UVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUoaW50IHZpc2liaWxpdHlTdGF0ZSwg
Ym9vbCBpc0luaXRpYWxTdGF0ZSkKK3sKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkK
KyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5zZXRWaXNpYmlsaXR5
U3RhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZT4odmlzaWJpbGl0
eVN0YXRlKSwgaXNJbml0aWFsU3RhdGUpOworI2Vsc2UKKyAgICBRX1VOVVNFRCh2aXNpYmlsaXR5
U3RhdGUpOworICAgIFFfVU5VU0VEKGlzSW5pdGlhbFN0YXRlKTsKKyNlbmRpZgorfQorCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVy
LmgJKHJldmlzaW9uIDE0MzMwMykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UVdlYlBhZ2VBZGFwdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMSw2ICszMDEsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBkZWZhdWx0IGFjdGlvbiB3YXMgY2FuY2Vs
bGVkIGluIHRoZSBKUyBldmVudCBoYW5kbGVyCiAgICAgYm9vbCB0b3VjaEV2ZW50KFFUb3VjaEV2
ZW50Kik7CiAgICAgYm9vbCBzd2FsbG93Q29udGV4dE1lbnVFdmVudChRQ29udGV4dE1lbnVFdmVu
dCAqLCBRV2ViRnJhbWVBZGFwdGVyKik7CisgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGUoaW50
LCBib29sKTsKIAogICAgIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSogdXBkYXRlUG9zaXRpb25E
ZXBlbmRlbnRNZW51QWN0aW9ucyhjb25zdCBRUG9pbnQmLCBRQml0QXJyYXkqKTsKICAgICB2b2lk
IHVwZGF0ZUFjdGlvbkludGVybmFsKE1lbnVBY3Rpb24sIGNvbnN0IGNoYXIqIGNvbW1hbmROYW1l
LCBib29sKiBlbmFibGVkLCBib29sKiBjaGVja2VkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQv
V2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvcXQvV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuY3BwCShyZXZpc2lvbiAxNDMzMDMpCisr
KyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDA2LDYgKzQwNiwxNCBAQCBib29sIFFHcmFwaGljc1dlYlZpZXc6OmV2ZW50
KFFFdmVudCogZXZlCiAgICAgLy8gUmUtaW1wbGVtZW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dzIGZp
eGluZyBldmVudC1yZWxhdGVkIGJ1Z3MgaW4gcGF0Y2ggcmVsZWFzZXMuCiAKICAgICBpZiAoZC0+
cGFnZSkgeworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgICAgICBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBRRXZlbnQ6OlNob3cgfHwgZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6Oldp
bmRvd0FjdGl2YXRlKQorICAgICAgICAgICAgLyogY2hhbmdlIG9ubHkgaWYgdGhlIHNjZW5lIGlz
IHZpc2libGUgKi8KKyAgICAgICAgICAgIGlmIChzY2VuZSgpLT5pc0FjdGl2ZSgpKQorICAgICAg
ICAgICAgICAgIGQtPnBhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShXZWJDb3JlOjpQYWdlVmlzaWJp
bGl0eVN0YXRlVmlzaWJsZSwgZmFsc2UpOworICAgICAgICBlbHNlIGlmIChldmVudC0+dHlwZSgp
ID09IFFFdmVudDo6SGlkZSB8fCBldmVudC0+dHlwZSgpID09IFFFdmVudDo6V2luZG93RGVhY3Rp
dmF0ZSkgICAgIAorICAgICAgICAgICAgZC0+cGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKFdlYkNv
cmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4sIGZhbHNlKTsKKyNlbmRpZgogICAgICAgICBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OlBhbGV0dGVDaGFuZ2UpCiAgICAgICAgICAgICBk
LT5wYWdlLT5zZXRQYWxldHRlKHBhbGV0dGUoKSk7CiAjaWZuZGVmIFFUX05PX0NPTlRFWFRNRU5V
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiAx
NDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkxOSw2ICs5MTksMjIgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmxlYXZl
RXZlbnQoUUV2ZW50KgogfQogCiAvKiEKKyAgVGhpcyBtZXRob2QgaXMgdXNlZCB0byBjaGFuZ2Ug
dGhlIHdlYiBwYWdlIHZpc2liaWxpdHkgc3RhdGUuIElmIHRoZSB2aXNpYmlsaXR5IAorICBzdGF0
ZSBpcyB0aGUgc2FtZSBhcyB0aGUgcHJldmlvdXMgc2V0LCBub3RoaW5nIGlzIGJlaW5nIGRvbmUu
CisgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBIVE1MNSBBUEkgY2FuIGJlIGZvdW5kIGF0
IFxse2h0dHA6Ly93d3cudzMub3JnL1RSL3BhZ2UtdmlzaWJpbGl0eS99e1czQyBDYW5kaWRhdGUg
UmVjb21tZW5kYXRpb246IFBhZ2UgVmlzaWJpbGl0eX0uCisKKyAgXGEgdmlzaWJpbGl0eVN0YXRl
IHNwZWNpZmllcyB2aXNpYmlsaXR5IHN0YXRlIChQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSwK
KyAgUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbiwgUGFnZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRl
ciBvciBQYWdlVmlzaWJpbGl0eVN0YXRlUHJldmlldykKKyAgXGEgaXNJbml0aWFsU3RhdGUgdHJ1
ZSB0byBzZXQgdGhlIGluaXRpYWwgdmlzaWJpbGl0eSBzdGF0ZSAgCisKKyAgXHNhIFFXZWJQYWdl
QWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKGludCB2aXNpYmlsaXR5U3RhdGUsIGJvb2wgaXNJ
bml0aWFsU3RhdGUpCisqLwordm9pZCBRV2ViUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKGludCB2
aXNpYmlsaXR5U3RhdGUsIGJvb2wgaXNJbml0aWFsU3RhdGUpCit7CisgICAgZC0+c2V0VmlzaWJp
bGl0eVN0YXRlKHZpc2liaWxpdHlTdGF0ZSwgaXNJbml0aWFsU3RhdGUpOworfQorCisvKiEKICAg
ICBccHJvcGVydHkgUVdlYlBhZ2U6OnBhbGV0dGUKICAgICBcYnJpZWYgdGhlIHBhZ2UncyBwYWxl
dHRlCiAKQEAgLTEzNTMsNyArMTM2OSw5IEBAIFFXZWJQYWdlOjpRV2ViUGFnZShRT2JqZWN0ICpw
YXJlbnQpCiAgICAgLCBkKG5ldyBRV2ViUGFnZVByaXZhdGUodGhpcykpCiB7CiAgICAgc2V0Vmll
dyhxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KHBhcmVudCkpOwotCisjaWYgRU5BQkxFKFBBR0VfVklT
SUJJTElUWV9BUEkpCisgICAgc2V0VmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGVI
aWRkZW4sIHRydWUpOworI2VuZGlmCiAgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwobG9hZFByb2dy
ZXNzKGludCkpLCB0aGlzLCBTTE9UKF9xX29uTG9hZFByb2dyZXNzQ2hhbmdlZChpbnQpKSk7CiAj
aWZuZGVmIE5ERUJVRwogICAgIGNvbm5lY3QoUUNvcmVBcHBsaWNhdGlvbjo6aW5zdGFuY2UoKSwg
U0lHTkFMKGFib3V0VG9RdWl0KCkpLCB0aGlzLCBTTE9UKF9xX2NsZWFudXBMZWFrTWVzc2FnZXMo
KSkpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oCShyZXZpc2lvbiAx
NDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDgsNiArMzA4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudEVk
aXRhYmxlKGJvb2wgZWRpdGFibGUpOwogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25z
dDsKIAorICAgIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlKGludCwgYm9vbCk7CisKICNpZm5kZWYg
UVRfTk9fQ09OVEVYVE1FTlUKICAgICBib29sIHN3YWxsb3dDb250ZXh0TWVudUV2ZW50KFFDb250
ZXh0TWVudUV2ZW50ICpldmVudCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2lk
Z2V0QXBpL3F3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dpZGdl
dEFwaS9xd2Vidmlldy5jcHAJKHJldmlzaW9uIDE0MzMwMykKKysrIFNvdXJjZS9XZWJLaXQvcXQv
V2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI4LDYgKzcyOCwxMiBA
QCBib29sIFFXZWJWaWV3OjpldmVudChRRXZlbnQgKmUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfSBlbHNlIGlmIChlLT50eXBlKCkgPT0gUUV2ZW50OjpMZWF2ZSkKICAgICAg
ICAgICAgIGQtPnBhZ2UtPmV2ZW50KGUpOworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJ
KQorICAgICAgICBlbHNlIGlmIChlLT50eXBlKCkgPT0gUUV2ZW50OjpTaG93IHx8IGUtPnR5cGUo
KSA9PSBRRXZlbnQ6OldpbmRvd0FjdGl2YXRlKQorICAgICAgICAgICAgZC0+cGFnZS0+c2V0Vmlz
aWJpbGl0eVN0YXRlKFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLCBmYWxzZSk7
CisgICAgICAgIGVsc2UgaWYgKGUtPnR5cGUoKSA9PSBRRXZlbnQ6OkhpZGUgfHwgZS0+dHlwZSgp
ID09IFFFdmVudDo6V2luZG93RGVhY3RpdmF0ZSkKKyAgICAgICAgICAgIGQtPnBhZ2UtPnNldFZp
c2liaWxpdHlTdGF0ZShXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuLCBmYWxzZSk7
CisjZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gUVdpZGdldDo6ZXZlbnQoZSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vi
dmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5jcHAJKHJldmlzaW9uIDE0MzMwMykKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDggQEAgcHJpdmF0ZSBRX1NMT1RTOgogICAg
IHZvaWQgd2lkZ2V0c1JlbmRlcmluZ1Rocm91Z2hDYWNoZSgpOwogICAgIHZvaWQgd2luZG93UmVz
aXplRXZlbnQoKTsKICAgICB2b2lkIGhvcml6b250YWxTY3JvbGxiYXJUZXN0KCk7Ci0KKyAgICB2
b2lkIHZpc2liaWxpdHlBcGlPblZpc2libGVTY2VuZSgpOworICAgIHZvaWQgdmlzaWJpbGl0eUFw
aU9uSGlkZGVuU2NlbmUoKTsKICNpZiAhKGRlZmluZWQoV1RGX1VTRV9RVF9NT0JJTEVfVEhFTUUp
ICYmIFdURl9VU0VfUVRfTU9CSUxFX1RIRU1FKQogICAgIHZvaWQgc2V0UGFsZXR0ZV9kYXRhKCk7
CiAgICAgdm9pZCBzZXRQYWxldHRlKCk7CkBAIC0xMjYsNiArMTI3LDI3MCBAQCBwdWJsaWM6CiAg
ICAgfQogfTsKIAordm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6dmlzaWJpbGl0eUFwaU9uVmlz
aWJsZVNjZW5lKCkKK3sKKyAgICBRR3JhcGhpY3NTY2VuZSBzY2VuZTsKKyAgICBRR3JhcGhpY3NW
aWV3IHZpZXc7CisgICAgdmlldy5zZXRTY2VuZSgmc2NlbmUpOworICAgIFFHcmFwaGljc1dlYlZp
ZXcqIHdlYlZpZXcgPSBuZXcgUUdyYXBoaWNzV2ViVmlldzsKKyAgICBRV2ViUGFnZSogcGFnZSA9
IG5ldyBRV2ViUGFnZTsKKyAgICBRVmFyaWFudCBzdGF0ZUJvb2wsIHN0YXRlU3RyaW5nLCBjcHQ7
CisKKyAgICB3ZWJWaWV3LT5zZXRQYWdlKHBhZ2UpOworICAgIHdlYlZpZXctPmxvYWQoUVVybCgi
ZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+Iikp
OworCisgICAgUVZFUklGWSh3YWl0Rm9yU2lnbmFsKHdlYlZpZXcsIFNJR05BTChsb2FkRmluaXNo
ZWQoYm9vbCkpKSk7CisKKyAgICB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0
ZUphdmFTY3JpcHQoInZhciBzdGF0ZUJvb2wgPSB1bmRlZmluZWQsIHN0YXRlU3RyaW5nID0gdW5k
ZWZpbmVkLCBjcHQgPSAwOyB2YXIgdmlzaWJpbGl0eUNhbGxCYWNrID0gZnVuY3Rpb24gKCkge3N0
YXRlQm9vbCA9IGRvY3VtZW50Wyd3ZWJraXRIaWRkZW4nXTsgc3RhdGVTdHJpbmcgPSBkb2N1bWVu
dFsnd2Via2l0VmlzaWJpbGl0eVN0YXRlJ107IGNwdCsrO307ZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcignd2Via2l0dmlzaWJpbGl0eWNoYW5nZScsIHZpc2liaWxpdHlDYWxsQmFjaywgZmFsc2Up
OyIpOworCisgICAgLyogc2hvdWxkIGJlIGluaXRpYWxpc2VkIHRvIGhpZGRlbiAqLworICAgIHN0
YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgiZG9jdW1lbnQud2Via2l0SGlkZGVuIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgp
ID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJp
bmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRv
Y3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcu
dHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBR
U3RyaW5nKCJoaWRkZW4iKSk7CisKKyAgICB2aWV3LnNob3coKTsKKyAgICBRVGVzdDo6cVdhaXQo
NSk7CisKKyAgICAvKiBzaG91bGQgc3RheSB0byBoaWRkZW4gYmVjYXVzZSB3ZWJWaWV3IGlzbid0
IGFkZGVkIHRvIHRoZSBzY2VuZSAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+
bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0SGlkZGVuIik7
CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRl
Qm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0
ZSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcg
JiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisKKyAgICBz
Y2VuZS5hZGRJdGVtKHdlYlZpZXcpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8qIGNo
ZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGll
cyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOwor
ICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiAhc3RhdGVC
b29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0
YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3Ry
aW5nKCkgPT0gUVN0cmluZygidmlzaWJsZSIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0
LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDEpOworCisg
ICAgdmlldy5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0KDUpOworCisgICAgLyogY2hlY2sgaWYg
YSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBwcm9wZXJ0aWVzIGhhdmUg
YmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZF
UklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jv
b2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmlu
Zy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09
IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9
PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIpOworCisgICAgd2ViVmll
dy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8qIG5vIGV2ZW50IHNlbnQg
KHNjZW5lIGlzIGFscmVhZHkgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFscyB0byAyICov
CisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0g
UVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9
IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVT
dHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3Ry
aW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAg
IGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgi
Y3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0
LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5zaG93KCk7CisgICAgUVRlc3Q6OnFX
YWl0KDUpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAgKHNjZW5lIGlzIGhpZGRlbikgLT4gY3B0
IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZF
UklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jv
b2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmlu
Zy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09
IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9
PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIpOworCisgICAgd2ViVmll
dy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8qIG5vIGV2ZW50IHNlbnQg
KHNjZW5lIGlzIGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAgIHN0
YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50
OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7
CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBz
dGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3
ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOwor
ICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJs
ZSgpID09IDIpOworCisgICAgdmlldy5zaG93KCk7CisgICAgUVRlc3Q6OnFXYWl0KDUpOworCisg
ICAgLyogbm8gZXZlbnQgc2VudCAod2ViVmlldyBpcyBoaWRkZW4pIC0+IGNwdCBzaG91bGQgYmUg
ZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVC
b29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAg
IHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09
IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJo
aWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6
OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAgIHdlYlZpZXctPnNob3coKTsK
KyAgICBRVGVzdDo6cVdhaXQoNSk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBi
ZWVuIGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29y
cmVjdGx5ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50
eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3Rh
dGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZh
cmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInZpc2li
bGUiKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRv
dWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAzKTsKKworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAg
ICBRVGVzdDo6cVdhaXQoNSk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBiZWVu
IGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVj
dGx5ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBl
KCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0
cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgi
c3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFu
dDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikp
OworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUg
JiYgY3B0LnRvRG91YmxlKCkgPT0gNCk7CisKKyAgICB2aWV3LmhpZGUoKTsKKyAgICBRVGVzdDo6
cVdhaXQoNSk7CisKKyAgICAvKiBubyBldmVudCBzZW50ICh3ZWJWaWV3IGlzIGhpZGRlbikgLT4g
Y3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gNCAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAg
UVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50
b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgp
LT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0
cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygp
ID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUo
KSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDQpOworfQorCit2b2lk
IHRzdF9RR3JhcGhpY3NXZWJWaWV3Ojp2aXNpYmlsaXR5QXBpT25IaWRkZW5TY2VuZSgpCit7Cisg
ICAgUUdyYXBoaWNzU2NlbmUgc2NlbmU7CisgICAgUUdyYXBoaWNzVmlldyB2aWV3OworICAgIHZp
ZXcuc2V0U2NlbmUoJnNjZW5lKTsKKyAgICBRR3JhcGhpY3NXZWJWaWV3KiB3ZWJWaWV3ID0gbmV3
IFFHcmFwaGljc1dlYlZpZXc7CisgICAgUVdlYlBhZ2UqIHBhZ2UgPSBuZXcgUVdlYlBhZ2U7Cisg
ICAgUVZhcmlhbnQgc3RhdGVCb29sLCBzdGF0ZVN0cmluZywgY3B0OworCisgICAgd2ViVmlldy0+
c2V0UGFnZShwYWdlKTsKKyAgICB3ZWJWaWV3LT5sb2FkKFFVcmwoImRhdGE6dGV4dC9odG1sLDxo
dG1sPjxoZWFkPjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiIpKTsKKworICAgIFFWRVJJRlko
d2FpdEZvclNpZ25hbCh3ZWJWaWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOworCisg
ICAgd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ2YXIg
c3RhdGVCb29sID0gdW5kZWZpbmVkLCBzdGF0ZVN0cmluZyA9IHVuZGVmaW5lZCwgY3B0ID0gMDsg
dmFyIHZpc2liaWxpdHlDYWxsQmFjayA9IGZ1bmN0aW9uICgpIHtzdGF0ZUJvb2wgPSBkb2N1bWVu
dFsnd2Via2l0SGlkZGVuJ107IHN0YXRlU3RyaW5nID0gZG9jdW1lbnRbJ3dlYmtpdFZpc2liaWxp
dHlTdGF0ZSddOyBjcHQrKzt9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdHZpc2li
aWxpdHljaGFuZ2UnLCB2aXNpYmlsaXR5Q2FsbEJhY2ssIGZhbHNlKTsiKTsKKworICAgIC8qIHNo
b3VsZCBiZSBpbml0aWFsaXNlZCB0byBoaWRkZW4gKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtp
dEhpZGRlbiIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9v
bCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFn
ZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRWaXNp
YmlsaXR5U3RhdGUiKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFu
dDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikp
OworCisgICAgc2NlbmUuYWRkSXRlbSh3ZWJWaWV3KTsKKyAgICBRVGVzdDo6cVdhaXQoNSk7CisK
KyAgICAvKiBzaG91bGQgc3RheSB0byBoaWRkZW4gYW5kIG5vIGV2ZW50IHNlbnQgYmVjYXVzZSBz
Y2VuZSBpcyBoaWRkZW4gKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdEhpZGRlbiIpOworICAg
IFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wu
dG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUiKTsK
KyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0
YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdl
YlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7Cisg
ICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgIWNwdC50b0RvdWJs
ZSgpKTsKKworICAgIHZpZXcuc2hvdygpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8q
IGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVy
dGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJW
aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIp
OworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiAhc3Rh
dGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZ
KHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRv
U3RyaW5nKCkgPT0gUVN0cmluZygidmlzaWJsZSIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdl
KCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlko
Y3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDEpOwor
CisgICAgdmlldy5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0KDUpOworCisgICAgLyogY2hlY2sg
aWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBwcm9wZXJ0aWVzIGhh
dmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAg
UVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50
b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgp
LT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0
cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygp
ID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUo
KSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIpOworCisgICAgd2Vi
Vmlldy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8qIG5vIGV2ZW50IHNl
bnQgKHNjZW5lIGlzIGFscmVhZHkgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFscyB0byAy
ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkg
PT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmlu
ZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3Rh
dGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6
U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOwor
ICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYg
Y3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5zaG93KCk7CisgICAgUVRlc3Q6
OnFXYWl0KDUpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAgKHNjZW5lIGlzIGhpZGRlbikgLT4g
Y3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAg
UVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50
b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgp
LT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0
cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygp
ID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUo
KSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIpOworCisgICAgd2Vi
Vmlldy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8qIG5vIGV2ZW50IHNl
bnQgKHNjZW5lIGlzIGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAg
IHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJp
YW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJW
aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5n
Iik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAm
JiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIp
OworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0Rv
dWJsZSgpID09IDIpOworCisgICAgdmlldy5zaG93KCk7CisgICAgUVRlc3Q6OnFXYWl0KDUpOwor
CisgICAgLyogbm8gZXZlbnQgc2VudCAod2ViVmlldyBpcyBoaWRkZW4pIC0+IGNwdCBzaG91bGQg
YmUgZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3Rh
dGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOwor
ICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgp
ID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5n
KCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAgIHdlYlZpZXctPnNob3co
KTsKKyAgICBRVGVzdDo6cVdhaXQoNSk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2ZW50IGhh
cyBiZWVuIGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQg
Y29ycmVjdGx5ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9v
bC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBz
dGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBR
VmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygidmlz
aWJsZSIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0
ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6
RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDMpOworCisgICAgd2ViVmlldy0+aGlkZSgpOwor
ICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJl
ZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3Jy
ZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5
cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRl
U3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJp
YW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4i
KSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJs
ZSAmJiBjcHQudG9Eb3VibGUoKSA9PSA0KTsKKworICAgIHZpZXcuaGlkZSgpOworICAgIFFUZXN0
OjpxV2FpdCg1KTsKKworICAgIC8qIG5vIGV2ZW50IHNlbnQgKHdlYlZpZXcgaXMgaGlkZGVuKSAt
PiBjcHQgc2hvdWxkIGJlIGVxdWFscyB0byA0ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+
cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAg
ICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29s
LnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1l
KCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRl
U3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5n
KCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlw
ZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gNCk7Cit9CisKIHZv
aWQgdHN0X1FHcmFwaGljc1dlYlZpZXc6OmNyYXNoT25WaWV3bGVzc1dlYlBhZ2VzKCkKIHsKICAg
ICBRR3JhcGhpY3NTY2VuZSBzY2VuZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdl
YnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHAJKHJldmlzaW9uIDE0MzMwMykKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTksNiArNTksOCBAQCBwcml2YXRlIFFfU0xPVFM6CiAgICAgdm9pZCBzZXRQYWxldHRl
X2RhdGEoKTsKICAgICB2b2lkIHNldFBhbGV0dGUoKTsKICNlbmRpZgorCisgICAgdm9pZCB2aXNp
YmlsaXR5QXBpKCk7CiB9OwogCiAvLyBUaGlzIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgZmly
c3QgdGVzdCBmdW5jdGlvbiBpcyBleGVjdXRlZC4KQEAgLTUxOCw2ICs1MjAsNDIgQEAgdm9pZCB0
c3RfUVdlYlZpZXc6OnJlbmRlcmluZ0FmdGVyTWF4QW5kQgogICAgIFFDT01QQVJFKGltYWdlMywg
cmVmZXJlbmNlMyk7CiB9CiAKK3ZvaWQgdHN0X1FXZWJWaWV3Ojp2aXNpYmlsaXR5QXBpKCkKK3sK
KyAgICBRVXJsIHVybCA9IFFVcmwoImRhdGE6dGV4dC9odG1sLDxodG1sPjxoZWFkPjwvaGVhZD48
Ym9keT48L2JvZHk+PC9odG1sPiIpOworCisgICAgUVdlYlZpZXcgdmlldzsKKyAgICBRVmFyaWFu
dCBzdGF0ZUJvb2wsIHN0YXRlU3RyaW5nLCBjcHQ7CisgICAgdmlldy5wYWdlKCktPm1haW5GcmFt
ZSgpLT5sb2FkKHVybCk7CisgICAgUVZFUklGWSh3YWl0Rm9yU2lnbmFsKCZ2aWV3LCBTSUdOQUwo
bG9hZEZpbmlzaGVkKGJvb2wpKSkpOworICAgIHZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJ2YXIgc3RhdGVCb29sID0gdW5kZWZpbmVkLCBzdGF0ZVN0cmluZyA9
IHVuZGVmaW5lZCwgY3B0ID0gMDsgdmFyIHZpc2liaWxpdHlDYWxsQmFjayA9IGZ1bmN0aW9uICgp
IHtzdGF0ZUJvb2wgPSBkb2N1bWVudFsnd2Via2l0SGlkZGVuJ107IHN0YXRlU3RyaW5nID0gZG9j
dW1lbnRbJ3dlYmtpdFZpc2liaWxpdHlTdGF0ZSddOyBjcHQrKzt9O2RvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoJ3dlYmtpdHZpc2liaWxpdHljaGFuZ2UnLCB2aXNpYmlsaXR5Q2FsbEJhY2ssIGZh
bHNlKTsiKTsKKworICAgIC8qIHNob3VsZCBiZSBpbml0aWFsaXNlZCB0byBoaWRkZW4gKi8KKyAg
ICBzdGF0ZUJvb2wgPSB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgiZG9jdW1lbnQud2Via2l0SGlkZGVuIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgp
ID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJp
bmcgPSB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1l
bnQud2Via2l0VmlzaWJpbGl0eVN0YXRlIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBl
KCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJp
bmcoImhpZGRlbiIpKTsKKworICAgIHZpZXcuc2hvdygpOworCisgICAgLyogY2hlY2sgaWYgYSBK
UyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBwcm9wZXJ0aWVzIGhhdmUgYmVl
biB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9IHZpZXcucGFnZSgpLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0
YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7
CisgICAgc3RhdGVTdHJpbmcgPSB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9
PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygi
dmlzaWJsZSIpKTsKKyAgICBjcHQgPSB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRl
SmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpE
b3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMSk7CisKKyAgICB2aWV3LmhpZGUoKTsKKworICAg
IHN0YXRlQm9vbCA9IHZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6
OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHZpZXcucGFn
ZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAg
IFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVT
dHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gdmlldy5w
YWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJ
RlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIp
OworfQorCiBRVEVTVF9NQUlOKHRzdF9RV2ViVmlldykKICNpbmNsdWRlICJ0c3RfcXdlYnZpZXcu
bW9jIgogCg==
</data>
<flag name="commit-queue"
          id="209340"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189060</attachid>
            <date>2013-02-19 04:46:23 -0800</date>
            <delta_ts>2013-02-20 08:38:27 -0800</delta_ts>
            <desc> [Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (3) </desc>
            <filename>patch_109422-6.patch</filename>
            <type>text/plain</type>
            <size>25273</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTE5ICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oOgorICAgICAgICAqIFdpZGdldEFwaS9x
Z3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OmV2ZW50KToK
KyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnNl
dFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgIChRV2ViUGFnZTo6UVdlYlBhZ2UpOgorICAgICAg
ICAqIFdpZGdldEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdpZGdldEFwaS9xd2Vidmlldy5j
cHA6CisgICAgICAgIChRV2ViVmlldzo6ZXZlbnQpOgorICAgICAgICAqIHRlc3RzL3FncmFwaGlj
c3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FHcmFwaGlj
c1dlYlZpZXcpOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXc6OnZpc2liaWxpdHlBcGlP
blZpc2libGVTY2VuZSk6CisgICAgICAgICh0c3RfUUdyYXBoaWNzV2ViVmlldzo6dmlzaWJpbGl0
eUFwaU9uSGlkZGVuU2NlbmUpOgorICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmll
dy5jcHA6CisgICAgICAgICh0c3RfUVdlYlZpZXcpOgorICAgICAgICAodHN0X1FXZWJWaWV3Ojp2
aXNpYmlsaXR5QXBpKToKKwogMjAxMy0wMi0xNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxs
YW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQ
b2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCShyZXZpc2lvbiAxNDMzMDMp
CisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NzcsMyArMTQ3NywyNyBAQCBib29sIFFXZWJQYWdlQWRhcHRl
cjo6c3dhbGxvd0NvbnRleHRNZW51CiAKICAgICByZXR1cm4gIW1lbnU7CiB9CisKKy8qIQorICBU
aGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgd2ViIHBhZ2UgdmlzaWJpbGl0eSBzdGF0
ZS4gSWYgdGhlIHZpc2liaWxpdHkgCisgIHN0YXRlIGlzIHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91
cyBzZXQsIG5vdGhpbmcgaXMgYmVpbmcgZG9uZS4KKyAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0
aGlzIEhUTUw1IEFQSSBjYW4gYmUgZm91bmQgYXQgXGx7aHR0cDovL3d3dy53My5vcmcvVFIvcGFn
ZS12aXNpYmlsaXR5L317VzNDIENhbmRpZGF0ZSBSZWNvbW1lbmRhdGlvbjogUGFnZSBWaXNpYmls
aXR5fS4KKworICBcYSB2aXNpYmlsaXR5U3RhdGUgc3BlY2lmaWVzIHZpc2liaWxpdHkgc3RhdGUg
KFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLAorICBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVu
LCBQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyIG9yIFBhZ2VWaXNpYmlsaXR5U3RhdGVQcmV2
aWV3KQorICBcYSBpc0luaXRpYWxTdGF0ZSB0cnVlIHRvIHNldCB0aGUgaW5pdGlhbCB2aXNpYmls
aXR5IHN0YXRlICAKKworICBcc2EgUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmls
aXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLCBib29sIGlzSW5pdGlhbFN0YXRlKQorKi8KK3ZvaWQg
UVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUoaW50IHZpc2liaWxpdHlTdGF0ZSwg
Ym9vbCBpc0luaXRpYWxTdGF0ZSkKK3sKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkK
KyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5zZXRWaXNpYmlsaXR5
U3RhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZT4odmlzaWJpbGl0
eVN0YXRlKSwgaXNJbml0aWFsU3RhdGUpOworI2Vsc2UKKyAgICBRX1VOVVNFRCh2aXNpYmlsaXR5
U3RhdGUpOworICAgIFFfVU5VU0VEKGlzSW5pdGlhbFN0YXRlKTsKKyNlbmRpZgorfQorCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVy
LmgJKHJldmlzaW9uIDE0MzMwMykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UVdlYlBhZ2VBZGFwdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMSw2ICszMDEsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBkZWZhdWx0IGFjdGlvbiB3YXMgY2FuY2Vs
bGVkIGluIHRoZSBKUyBldmVudCBoYW5kbGVyCiAgICAgYm9vbCB0b3VjaEV2ZW50KFFUb3VjaEV2
ZW50Kik7CiAgICAgYm9vbCBzd2FsbG93Q29udGV4dE1lbnVFdmVudChRQ29udGV4dE1lbnVFdmVu
dCAqLCBRV2ViRnJhbWVBZGFwdGVyKik7CisgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGUoaW50
LCBib29sKTsKIAogICAgIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSogdXBkYXRlUG9zaXRpb25E
ZXBlbmRlbnRNZW51QWN0aW9ucyhjb25zdCBRUG9pbnQmLCBRQml0QXJyYXkqKTsKICAgICB2b2lk
IHVwZGF0ZUFjdGlvbkludGVybmFsKE1lbnVBY3Rpb24sIGNvbnN0IGNoYXIqIGNvbW1hbmROYW1l
LCBib29sKiBlbmFibGVkLCBib29sKiBjaGVja2VkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQv
V2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvcXQvV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuY3BwCShyZXZpc2lvbiAxNDMzMDMpCisr
KyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDA2LDYgKzQwNiwxNCBAQCBib29sIFFHcmFwaGljc1dlYlZpZXc6OmV2ZW50
KFFFdmVudCogZXZlCiAgICAgLy8gUmUtaW1wbGVtZW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dzIGZp
eGluZyBldmVudC1yZWxhdGVkIGJ1Z3MgaW4gcGF0Y2ggcmVsZWFzZXMuCiAKICAgICBpZiAoZC0+
cGFnZSkgeworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgICAgICBpZiAoKGV2
ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpTaG93KSB8fCAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6
OldpbmRvd0FjdGl2YXRlKSkgeworICAgICAgICAgICAgLyogY2hhbmdlIG9ubHkgaWYgdGhlIHNj
ZW5lIGlzIHZpc2libGUgKi8KKyAgICAgICAgICAgIGlmIChzY2VuZSgpLT5pc0FjdGl2ZSgpKQor
ICAgICAgICAgICAgICAgIGQtPnBhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShXZWJDb3JlOjpQYWdl
VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSwgZmFsc2UpOworICAgICAgICB9IGVsc2UgaWYgKChldmVu
dC0+dHlwZSgpID09IFFFdmVudDo6SGlkZSkgfHwgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpX
aW5kb3dEZWFjdGl2YXRlKSkKKyAgICAgICAgICAgIGQtPnBhZ2UtPnNldFZpc2liaWxpdHlTdGF0
ZShXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuLCBmYWxzZSk7CisjZW5kaWYKICAg
ICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpQYWxldHRlQ2hhbmdlKQogICAgICAg
ICAgICAgZC0+cGFnZS0+c2V0UGFsZXR0ZShwYWxldHRlKCkpOwogI2lmbmRlZiBRVF9OT19DT05U
RVhUTUVOVQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcAkocmV2
aXNpb24gMTQzMzAzKQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MTksNiArOTE5LDIyIEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRl
OjpsZWF2ZUV2ZW50KFFFdmVudCoKIH0KIAogLyohCisgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8g
Y2hhbmdlIHRoZSB3ZWIgcGFnZSB2aXNpYmlsaXR5IHN0YXRlLiBJZiB0aGUgdmlzaWJpbGl0eSAK
KyAgc3RhdGUgaXMgdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIHNldCwgbm90aGluZyBpcyBiZWlu
ZyBkb25lLgorICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgSFRNTDUgQVBJIGNhbiBiZSBm
b3VuZCBhdCBcbHtodHRwOi8vd3d3LnczLm9yZy9UUi9wYWdlLXZpc2liaWxpdHkvfXtXM0MgQ2Fu
ZGlkYXRlIFJlY29tbWVuZGF0aW9uOiBQYWdlIFZpc2liaWxpdHl9LgorCisgIFxhIHZpc2liaWxp
dHlTdGF0ZSBzcGVjaWZpZXMgdmlzaWJpbGl0eSBzdGF0ZSAoUGFnZVZpc2liaWxpdHlTdGF0ZVZp
c2libGUsCisgIFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4sIFBhZ2VWaXNpYmlsaXR5U3RhdGVQ
cmVyZW5kZXIgb3IgUGFnZVZpc2liaWxpdHlTdGF0ZVByZXZpZXcpCisgIFxhIGlzSW5pdGlhbFN0
YXRlIHRydWUgdG8gc2V0IHRoZSBpbml0aWFsIHZpc2liaWxpdHkgc3RhdGUgIAorCisgIFxzYSBR
V2ViUGFnZUFkYXB0ZXI6OnNldFZpc2liaWxpdHlTdGF0ZShpbnQgdmlzaWJpbGl0eVN0YXRlLCBi
b29sIGlzSW5pdGlhbFN0YXRlKQorKi8KK3ZvaWQgUVdlYlBhZ2U6OnNldFZpc2liaWxpdHlTdGF0
ZShpbnQgdmlzaWJpbGl0eVN0YXRlLCBib29sIGlzSW5pdGlhbFN0YXRlKQoreworICAgIGQtPnNl
dFZpc2liaWxpdHlTdGF0ZSh2aXNpYmlsaXR5U3RhdGUsIGlzSW5pdGlhbFN0YXRlKTsKK30KKwor
LyohCiAgICAgXHByb3BlcnR5IFFXZWJQYWdlOjpwYWxldHRlCiAgICAgXGJyaWVmIHRoZSBwYWdl
J3MgcGFsZXR0ZQogCkBAIC0xMzUzLDcgKzEzNjksOSBAQCBRV2ViUGFnZTo6UVdlYlBhZ2UoUU9i
amVjdCAqcGFyZW50KQogICAgICwgZChuZXcgUVdlYlBhZ2VQcml2YXRlKHRoaXMpKQogewogICAg
IHNldFZpZXcocW9iamVjdF9jYXN0PFFXaWRnZXQqPihwYXJlbnQpKTsKLQorI2lmIEVOQUJMRShQ
QUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIHNldFZpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0
eVN0YXRlSGlkZGVuLCB0cnVlKTsKKyNlbmRpZgogICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKGxv
YWRQcm9ncmVzcyhpbnQpKSwgdGhpcywgU0xPVChfcV9vbkxvYWRQcm9ncmVzc0NoYW5nZWQoaW50
KSkpOwogI2lmbmRlZiBOREVCVUcKICAgICBjb25uZWN0KFFDb3JlQXBwbGljYXRpb246Omluc3Rh
bmNlKCksIFNJR05BTChhYm91dFRvUXVpdCgpKSwgdGhpcywgU0xPVChfcV9jbGVhbnVwTGVha01l
c3NhZ2VzKCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuaAkocmV2
aXNpb24gMTQzMzAzKQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMzA4LDYgKzMwOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENv
bnRlbnRFZGl0YWJsZShib29sIGVkaXRhYmxlKTsKICAgICBib29sIGlzQ29udGVudEVkaXRhYmxl
KCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZShpbnQsIGJvb2wpOworCiAj
aWZuZGVmIFFUX05PX0NPTlRFWFRNRU5VCiAgICAgYm9vbCBzd2FsbG93Q29udGV4dE1lbnVFdmVu
dChRQ29udGV4dE1lbnVFdmVudCAqZXZlbnQpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3F0L1dpZGdldEFwaS9xd2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9x
dC9XaWRnZXRBcGkvcXdlYnZpZXcuY3BwCShyZXZpc2lvbiAxNDMzMDMpCisrKyBTb3VyY2UvV2Vi
S2l0L3F0L1dpZGdldEFwaS9xd2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyOCw2ICs3
MjgsMTIgQEAgYm9vbCBRV2ViVmlldzo6ZXZlbnQoUUV2ZW50ICplKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoZS0+dHlwZSgpID09IFFFdmVudDo6TGVhdmUp
CiAgICAgICAgICAgICBkLT5wYWdlLT5ldmVudChlKTsKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklM
SVRZX0FQSSkKKyAgICAgICAgZWxzZSBpZiAoKGUtPnR5cGUoKSA9PSBRRXZlbnQ6OlNob3cpIHx8
IChlLT50eXBlKCkgPT0gUUV2ZW50OjpXaW5kb3dBY3RpdmF0ZSkpCisgICAgICAgICAgICBkLT5w
YWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUoV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2li
bGUsIGZhbHNlKTsKKyAgICAgICAgZWxzZSBpZiAoKGUtPnR5cGUoKSA9PSBRRXZlbnQ6OkhpZGUp
IHx8IChlLT50eXBlKCkgPT0gUUV2ZW50OjpXaW5kb3dEZWFjdGl2YXRlKSkKKyAgICAgICAgICAg
IGQtPnBhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRl
SGlkZGVuLCBmYWxzZSk7CisjZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gUVdpZGdldDo6ZXZl
bnQoZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0
X3FncmFwaGljc3dlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvdGVz
dHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5jcHAJKHJldmlzaW9uIDE0
MzMwMykKKysrIFNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdy
YXBoaWNzd2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDggQEAgcHJpdmF0
ZSBRX1NMT1RTOgogICAgIHZvaWQgd2lkZ2V0c1JlbmRlcmluZ1Rocm91Z2hDYWNoZSgpOwogICAg
IHZvaWQgd2luZG93UmVzaXplRXZlbnQoKTsKICAgICB2b2lkIGhvcml6b250YWxTY3JvbGxiYXJU
ZXN0KCk7Ci0KKyAgICB2b2lkIHZpc2liaWxpdHlBcGlPblZpc2libGVTY2VuZSgpOworICAgIHZv
aWQgdmlzaWJpbGl0eUFwaU9uSGlkZGVuU2NlbmUoKTsKICNpZiAhKGRlZmluZWQoV1RGX1VTRV9R
VF9NT0JJTEVfVEhFTUUpICYmIFdURl9VU0VfUVRfTU9CSUxFX1RIRU1FKQogICAgIHZvaWQgc2V0
UGFsZXR0ZV9kYXRhKCk7CiAgICAgdm9pZCBzZXRQYWxldHRlKCk7CkBAIC0xMjYsNiArMTI3LDI3
MCBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAordm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6dmlz
aWJpbGl0eUFwaU9uVmlzaWJsZVNjZW5lKCkKK3sKKyAgICBRR3JhcGhpY3NTY2VuZSBzY2VuZTsK
KyAgICBRR3JhcGhpY3NWaWV3IHZpZXc7CisgICAgdmlldy5zZXRTY2VuZSgmc2NlbmUpOworICAg
IFFHcmFwaGljc1dlYlZpZXcqIHdlYlZpZXcgPSBuZXcgUUdyYXBoaWNzV2ViVmlldzsKKyAgICBR
V2ViUGFnZSogcGFnZSA9IG5ldyBRV2ViUGFnZTsKKyAgICBRVmFyaWFudCBzdGF0ZUJvb2wsIHN0
YXRlU3RyaW5nLCBjcHQ7CisKKyAgICB3ZWJWaWV3LT5zZXRQYWdlKHBhZ2UpOworICAgIHdlYlZp
ZXctPmxvYWQoUVVybCgiZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5Pjwv
Ym9keT48L2h0bWw+IikpOworCisgICAgUVZFUklGWSh3YWl0Rm9yU2lnbmFsKHdlYlZpZXcsIFNJ
R05BTChsb2FkRmluaXNoZWQoYm9vbCkpKSk7CisKKyAgICB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBzdGF0ZUJvb2wgPSB1bmRlZmluZWQsIHN0
YXRlU3RyaW5nID0gdW5kZWZpbmVkLCBjcHQgPSAwOyB2YXIgdmlzaWJpbGl0eUNhbGxCYWNrID0g
ZnVuY3Rpb24gKCkge3N0YXRlQm9vbCA9IGRvY3VtZW50Wyd3ZWJraXRIaWRkZW4nXTsgc3RhdGVT
dHJpbmcgPSBkb2N1bWVudFsnd2Via2l0VmlzaWJpbGl0eVN0YXRlJ107IGNwdCsrO307ZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0dmlzaWJpbGl0eWNoYW5nZScsIHZpc2liaWxpdHlD
YWxsQmFjaywgZmFsc2UpOyIpOworCisgICAgLyogc2hvdWxkIGJlIGluaXRpYWxpc2VkIHRvIGhp
ZGRlbiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0SGlkZGVuIik7CisgICAgUVZFUklGWShz
dGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7
CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0
ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSIpOworICAgIFFWRVJJ
Rlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcu
dG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisKKyAgICB2aWV3LnNob3coKTsKKyAg
ICBRVGVzdDo6cVdhaXQoNSk7CisKKyAgICAvKiBzaG91bGQgc3RheSB0byBoaWRkZW4gYmVjYXVz
ZSB3ZWJWaWV3IGlzbid0IGFkZGVkIHRvIHRoZSBzY2VuZSAqLworICAgIHN0YXRlQm9vbCA9IHdl
YlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQu
d2Via2l0SGlkZGVuIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50
OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtp
dFZpc2liaWxpdHlTdGF0ZSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFW
YXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRk
ZW4iKSk7CisKKyAgICBzY2VuZS5hZGRJdGVtKHdlYlZpZXcpOworICAgIFFUZXN0OjpxV2FpdCg1
KTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2li
aWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0
ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
InN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6
Qm9vbCAmJiAhc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXct
PnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsK
KyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0
YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygidmlzaWJsZSIpKTsKKyAgICBjcHQgPSB3
ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOwor
ICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJs
ZSgpID09IDEpOworCisgICAgdmlldy5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0KDUpOworCisg
ICAgLyogY2hlY2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBw
cm9wZXJ0aWVzIGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9
IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVC
b29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYm
IHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZF
UklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmlu
Zy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5w
YWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJ
RlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIp
OworCisgICAgd2ViVmlldy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8q
IG5vIGV2ZW50IHNlbnQgKHNjZW5lIGlzIGFscmVhZHkgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJl
IGVxdWFscyB0byAyICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRl
Qm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAg
ICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9
PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygi
aGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1
YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50
OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5zaG93KCk7
CisgICAgUVRlc3Q6OnFXYWl0KDUpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAgKHNjZW5lIGlz
IGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAgIHN0YXRlQm9vbCA9
IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVC
b29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYm
IHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZF
UklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmlu
Zy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5w
YWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJ
RlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIp
OworCisgICAgd2ViVmlldy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8q
IG5vIGV2ZW50IHNlbnQgKHNjZW5lIGlzIGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMg
dG8gMiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlw
ZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVT
dHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
InN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlh
bnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIp
KTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91Ymxl
ICYmIGNwdC50b0RvdWJsZSgpID09IDIpOworCisgICAgdmlldy5zaG93KCk7CisgICAgUVRlc3Q6
OnFXYWl0KDUpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAod2ViVmlldyBpcyBoaWRkZW4pIC0+
IGNwdCBzaG91bGQgYmUgZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5w
YWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAg
IFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wu
dG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVT
dHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmco
KSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBl
KCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAgIHdl
YlZpZXctPnNob3coKTsKKyAgICBRVGVzdDo6cVdhaXQoNSk7CisKKyAgICAvKiBjaGVjayBpZiBh
IEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBi
ZWVuIHVwZGF0ZWQgY29ycmVjdGx5ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgp
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVS
SUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jv
b2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmlu
Zy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09
IFFTdHJpbmcoInZpc2libGUiKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkg
PT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAzKTsKKworICAgIHdlYlZp
ZXctPmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQoNSk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpT
IGV2ZW50IGhhcyBiZWVuIGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVu
IHVwZGF0ZWQgY29ycmVjdGx5ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZ
KHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgp
KTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1
YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5
cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0
cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCkt
PmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFW
YXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gNCk7CisKKyAgICB2aWV3LmhpZGUo
KTsKKyAgICBRVGVzdDo6cVdhaXQoNSk7CisKKyAgICAvKiBubyBldmVudCBzZW50ICh3ZWJWaWV3
IGlzIGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gNCAqLworICAgIHN0YXRlQm9v
bCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3Rh
dGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29s
ICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdl
KCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAg
UVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0
cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFW
RVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09
IDQpOworfQorCit2b2lkIHRzdF9RR3JhcGhpY3NXZWJWaWV3Ojp2aXNpYmlsaXR5QXBpT25IaWRk
ZW5TY2VuZSgpCit7CisgICAgUUdyYXBoaWNzU2NlbmUgc2NlbmU7CisgICAgUUdyYXBoaWNzVmll
dyB2aWV3OworICAgIHZpZXcuc2V0U2NlbmUoJnNjZW5lKTsKKyAgICBRR3JhcGhpY3NXZWJWaWV3
KiB3ZWJWaWV3ID0gbmV3IFFHcmFwaGljc1dlYlZpZXc7CisgICAgUVdlYlBhZ2UqIHBhZ2UgPSBu
ZXcgUVdlYlBhZ2U7CisgICAgUVZhcmlhbnQgc3RhdGVCb29sLCBzdGF0ZVN0cmluZywgY3B0Owor
CisgICAgd2ViVmlldy0+c2V0UGFnZShwYWdlKTsKKyAgICB3ZWJWaWV3LT5sb2FkKFFVcmwoImRh
dGE6dGV4dC9odG1sLDxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiIpKTsK
KworICAgIFFWRVJJRlkod2FpdEZvclNpZ25hbCh3ZWJWaWV3LCBTSUdOQUwobG9hZEZpbmlzaGVk
KGJvb2wpKSkpOworCisgICAgd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJ2YXIgc3RhdGVCb29sID0gdW5kZWZpbmVkLCBzdGF0ZVN0cmluZyA9IHVuZGVm
aW5lZCwgY3B0ID0gMDsgdmFyIHZpc2liaWxpdHlDYWxsQmFjayA9IGZ1bmN0aW9uICgpIHtzdGF0
ZUJvb2wgPSBkb2N1bWVudFsnd2Via2l0SGlkZGVuJ107IHN0YXRlU3RyaW5nID0gZG9jdW1lbnRb
J3dlYmtpdFZpc2liaWxpdHlTdGF0ZSddOyBjcHQrKzt9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoJ3dlYmtpdHZpc2liaWxpdHljaGFuZ2UnLCB2aXNpYmlsaXR5Q2FsbEJhY2ssIGZhbHNlKTsi
KTsKKworICAgIC8qIHNob3VsZCBiZSBpbml0aWFsaXNlZCB0byBoaWRkZW4gKi8KKyAgICBzdGF0
ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
ImRvY3VtZW50LndlYmtpdEhpZGRlbiIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9
PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5n
ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1
bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUiKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5
cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0
cmluZygiaGlkZGVuIikpOworCisgICAgc2NlbmUuYWRkSXRlbSh3ZWJWaWV3KTsKKyAgICBRVGVz
dDo6cVdhaXQoNSk7CisKKyAgICAvKiBzaG91bGQgc3RheSB0byBoaWRkZW4gYW5kIG5vIGV2ZW50
IHNlbnQgYmVjYXVzZSBzY2VuZSBpcyBoaWRkZW4gKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtp
dEhpZGRlbiIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9v
bCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFn
ZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRWaXNp
YmlsaXR5U3RhdGUiKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFu
dDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikp
OworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUg
JiYgIWNwdC50b0RvdWJsZSgpKTsKKworICAgIHZpZXcuc2hvdygpOworICAgIFFUZXN0OjpxV2Fp
dCg1KTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZp
c2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBz
dGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFu
dDo6Qm9vbCAmJiAhc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZp
ZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmci
KTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYm
IHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygidmlzaWJsZSIpKTsKKyAgICBjcHQg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIp
OworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0Rv
dWJsZSgpID09IDEpOworCisgICAgdmlldy5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0KDUpOwor
CisgICAgLyogY2hlY2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0
eSBwcm9wZXJ0aWVzIGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9v
bCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3Rh
dGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29s
ICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdl
KCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAg
UVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0
cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFW
RVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09
IDIpOworCisgICAgd2ViVmlldy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAg
IC8qIG5vIGV2ZW50IHNlbnQgKHNjZW5lIGlzIGFscmVhZHkgaGlkZGVuKSAtPiBjcHQgc2hvdWxk
IGJlIGVxdWFscyB0byAyICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0
YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsK
KyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRl
SmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUo
KSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmlu
ZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJp
YW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5zaG93
KCk7CisgICAgUVRlc3Q6OnFXYWl0KDUpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAgKHNjZW5l
IGlzIGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAgIHN0YXRlQm9v
bCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3Rh
dGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29s
ICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdl
KCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAg
UVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0
cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFW
RVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09
IDIpOworCisgICAgd2ViVmlldy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAg
IC8qIG5vIGV2ZW50IHNlbnQgKHNjZW5lIGlzIGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVh
bHMgdG8gMiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCkt
PmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wu
dHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3Rh
dGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZh
cmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRl
biIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUph
dmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91
YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIpOworCisgICAgdmlldy5zaG93KCk7CisgICAgUVRl
c3Q6OnFXYWl0KDUpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAod2ViVmlldyBpcyBoaWRkZW4p
IC0+IGNwdCBzaG91bGQgYmUgZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOwor
ICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJv
b2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3Rh
dGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJp
bmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50
eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAg
IHdlYlZpZXctPnNob3coKTsKKyAgICBRVGVzdDo6cVdhaXQoNSk7CisKKyAgICAvKiBjaGVjayBp
ZiBhIEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2
ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFn
ZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBR
VkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRv
Qm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCkt
PmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3Ry
aW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkg
PT0gUVN0cmluZygidmlzaWJsZSIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUo
KSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDMpOworCisgICAgd2Vi
Vmlldy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8qIGNoZWNrIGlmIGEg
SlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJl
ZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJ
Rlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29s
KCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcu
dHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBR
U3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0g
UVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSA0KTsKKworICAgIHZpZXcuaGlk
ZSgpOworICAgIFFUZXN0OjpxV2FpdCg1KTsKKworICAgIC8qIG5vIGV2ZW50IHNlbnQgKHdlYlZp
ZXcgaXMgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFscyB0byA0ICovCisgICAgc3RhdGVC
b29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJz
dGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJv
b2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAg
ICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRl
U3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZp
ZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAg
UVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkg
PT0gNCk7Cit9CisKIHZvaWQgdHN0X1FHcmFwaGljc1dlYlZpZXc6OmNyYXNoT25WaWV3bGVzc1dl
YlBhZ2VzKCkKIHsKICAgICBRR3JhcGhpY3NTY2VuZSBzY2VuZTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHAJKHJldmlzaW9uIDE0
MzMwMykKKysrIFNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBwcml2YXRlIFFfU0xPVFM6CiAgICAg
dm9pZCBzZXRQYWxldHRlX2RhdGEoKTsKICAgICB2b2lkIHNldFBhbGV0dGUoKTsKICNlbmRpZgor
CisgICAgdm9pZCB2aXNpYmlsaXR5QXBpKCk7CiB9OwogCiAvLyBUaGlzIHdpbGwgYmUgY2FsbGVk
IGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBmdW5jdGlvbiBpcyBleGVjdXRlZC4KQEAgLTUxOCw2ICs1
MjAsNDIgQEAgdm9pZCB0c3RfUVdlYlZpZXc6OnJlbmRlcmluZ0FmdGVyTWF4QW5kQgogICAgIFFD
T01QQVJFKGltYWdlMywgcmVmZXJlbmNlMyk7CiB9CiAKK3ZvaWQgdHN0X1FXZWJWaWV3Ojp2aXNp
YmlsaXR5QXBpKCkKK3sKKyAgICBRVXJsIHVybCA9IFFVcmwoImRhdGE6dGV4dC9odG1sLDxodG1s
PjxoZWFkPjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiIpOworCisgICAgUVdlYlZpZXcgdmll
dzsKKyAgICBRVmFyaWFudCBzdGF0ZUJvb2wsIHN0YXRlU3RyaW5nLCBjcHQ7CisgICAgdmlldy5w
YWdlKCktPm1haW5GcmFtZSgpLT5sb2FkKHVybCk7CisgICAgUVZFUklGWSh3YWl0Rm9yU2lnbmFs
KCZ2aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOworICAgIHZpZXcucGFnZSgpLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ2YXIgc3RhdGVCb29sID0gdW5kZWZpbmVk
LCBzdGF0ZVN0cmluZyA9IHVuZGVmaW5lZCwgY3B0ID0gMDsgdmFyIHZpc2liaWxpdHlDYWxsQmFj
ayA9IGZ1bmN0aW9uICgpIHtzdGF0ZUJvb2wgPSBkb2N1bWVudFsnd2Via2l0SGlkZGVuJ107IHN0
YXRlU3RyaW5nID0gZG9jdW1lbnRbJ3dlYmtpdFZpc2liaWxpdHlTdGF0ZSddOyBjcHQrKzt9O2Rv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdHZpc2liaWxpdHljaGFuZ2UnLCB2aXNpYmls
aXR5Q2FsbEJhY2ssIGZhbHNlKTsiKTsKKworICAgIC8qIHNob3VsZCBiZSBpbml0aWFsaXNlZCB0
byBoaWRkZW4gKi8KKyAgICBzdGF0ZUJvb2wgPSB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0SGlkZGVuIik7CisgICAgUVZFUklGWShz
dGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7
CisgICAgc3RhdGVTdHJpbmcgPSB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0VmlzaWJpbGl0eVN0YXRlIik7CisgICAgUVZFUklGWShz
dGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0
cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKworICAgIHZpZXcuc2hvdygpOworCisgICAg
LyogY2hlY2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBwcm9w
ZXJ0aWVzIGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9IHZp
ZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsK
KyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRl
Qm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1l
KCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRl
U3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5n
KCkgPT0gUVN0cmluZygidmlzaWJsZSIpKTsKKyAgICBjcHQgPSB2aWV3LnBhZ2UoKS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgp
ID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMSk7CisKKyAgICB2aWV3
LmhpZGUoKTsKKworICAgIHN0YXRlQm9vbCA9IHZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBl
KCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0
cmluZyA9IHZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0
ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpT
dHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7Cisg
ICAgY3B0ID0gdmlldy5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNw
dCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50
b0RvdWJsZSgpID09IDIpOworfQorCiBRVEVTVF9NQUlOKHRzdF9RV2ViVmlldykKICNpbmNsdWRl
ICJ0c3RfcXdlYnZpZXcubW9jIgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189327</attachid>
            <date>2013-02-20 08:38:27 -0800</date>
            <delta_ts>2013-02-20 09:07:44 -0800</delta_ts>
            <desc>[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (4) </desc>
            <filename>patch_109422-10.patch</filename>
            <type>text/plain</type>
            <size>45356</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAyLTIwICBC
ZW5qYW1pbiBEVVBPTlQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIE5lZWQgYSBzaG9y
dCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BTISku
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVy
Ojppbml0aWFsaXplV2ViQ29yZVBhZ2UpOgorICAgICAgICAocHJpdmF0ZVN0YXRlVG9Db3JlU3Rh
dGUpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oOgorICAgICAgICAqIFdpZGdl
dEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OmV2
ZW50KToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBh
Z2U6OlFXZWJQYWdlKToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnZpZXcuY3BwOgorICAgICAg
ICAoUVdlYlZpZXc6OmV2ZW50KToKKyAgICAgICAgKiB0ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Rz
dF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RR3JhcGhpY3NXZWJWaWV3KToK
KyAgICAgICAgKHRzdF9RR3JhcGhpY3NXZWJWaWV3Ojp2aXNpYmlsaXR5QXBpT25WaXNpYmxlU2Nl
bmUpOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXc6OnZpc2liaWxpdHlBcGlPbkhpZGRl
blNjZW5lKToKKyAgICAgICAgKHRzdF9RR3JhcGhpY3NXZWJWaWV3Ojp2aXNpYmlsaXR5QXBpT25W
aXNpYmxlU2NlbmVXaXRoSGlkZGVuVmlldyk6CisgICAgICAgICh0c3RfUUdyYXBoaWNzV2ViVmll
dzo6dmlzaWJpbGl0eUFwaU9uSGlkZGVuU2NlbmVXaXRoSGlkZGVuVmlldyk6CisgICAgICAgICog
dGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViVmlldyk6
CisgICAgICAgICh0c3RfUVdlYlZpZXc6OnZpc2liaWxpdHlBcGkpOgorCiAyMDEzLTAyLTE1ICBB
bGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAg
IFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRh
cHRlci5jcHAJKHJldmlzaW9uIDE0MzMwMykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1Niwy
NSBAQCBzdGF0aWMgdm9pZCBvcGVuTmV3V2luZG93KGNvbnN0IFFVcmwmIHVyCiAgICAgfQogfQog
CitzdGF0aWMgaW5saW5lIFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGUgcHJpdmF0ZVN0YXRl
VG9Db3JlU3RhdGUoUVdlYlBhZ2VBZGFwdGVyOjpQYWdlVmlzaWJpbGl0eVN0YXRlIHN0YXRlKQor
eworICAgIHJldHVybiAoc3RhdGUgPT0gUVdlYlBhZ2VBZGFwdGVyOjpQYWdlVmlzaWJpbGl0eVN0
YXRlVmlzaWJsZSkgPyBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSA6IFdlYkNv
cmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW47Cit9CisKK3ZvaWQgUVdlYlBhZ2VBZGFwdGVy
OjpzZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2VBZGFwdGVyOjpQYWdlVmlzaWJpbGl0eVN0YXRl
IHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0ZSkKK3sKKyAgICAvKiBhdXRvbWF0
aWMgY2FsbGVkIGJ5IFFXZWJWaWV3IGFuZCBRR3JhcGhpY3NXZWJWaWV3ICovCisgICAgLyogb24g
aGlkZS9zaG93L3dpbmRvd0FjdGl2YXRlL3dpbmRvd0RlYWN0aXZhdGUgZXZlbnRzICovCisjaWYg
RU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1
cm47CisgICAgcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKHByaXZhdGVTdGF0ZVRvQ29yZVN0YXRl
KHZpc2liaWxpdHlTdGF0ZSksIGlzSW5pdGlhbFN0YXRlKTsKKyNlbHNlCisgICAgUV9VTlVTRUQo
dmlzaWJpbGl0eVN0YXRlKTsKKyAgICBRX1VOVVNFRChpc0luaXRpYWxTdGF0ZSk7CisjZW5kaWYK
K30KKwogUVdlYlBhZ2VBZGFwdGVyOjpRV2ViUGFnZUFkYXB0ZXIoKQogICAgIDogc2V0dGluZ3Mo
MCkKICAgICAsIHBhZ2UoMCkKQEAgLTE4Miw2ICsyMDEsOSBAQCB2b2lkIFFXZWJQYWdlQWRhcHRl
cjo6aW5pdGlhbGl6ZVdlYkNvcmVQCiAgICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9IG5ldyBE
cmFnQ2xpZW50UXQocGFnZUNsaWVudHMuY2hyb21lQ2xpZW50KTsKICAgICBwYWdlQ2xpZW50cy5p
bnNwZWN0b3JDbGllbnQgPSBuZXcgSW5zcGVjdG9yQ2xpZW50UXQodGhpcyk7CiAgICAgcGFnZSA9
IG5ldyBQYWdlKHBhZ2VDbGllbnRzKTsKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkK
KyAgICBzZXRWaXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbiwgdHJ1ZSk7
CisjZW5kaWYKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgaWYgKHVzZU1vY2spIHsKICAg
ICAgICAgLy8gSW4gY2FzZSBydW5uaW5nIGluIER1bXBSZW5kZXJUcmVlIG1vZGUgc2V0IHRoZSBj
b250cm9sbGVyIHRvIG1vY2sgcHJvdmlkZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHJldmlzaW9uIDE0MzMwMykKKysr
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEzMCw2ICsxMzAsMTEgQEAgcHVibGljOgogICAgICAgICBTY3JvbGxCeURv
Y3VtZW50CiAgICAgfTsKIAorICAgIGVudW0gUGFnZVZpc2liaWxpdHlTdGF0ZSB7CisgICAgICAg
IFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLAorICAgICAgICBQYWdlVmlzaWJpbGl0eVN0YXRl
SGlkZGVuCisgICAgfTsKKwogICAgIFFXZWJQYWdlQWRhcHRlcigpOwogICAgIHZpcnR1YWwgflFX
ZWJQYWdlQWRhcHRlcigpOwogCkBAIC0yNDQsNiArMjQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVBbmRTZXRDdXJyZW50Q29udGV4dE1lbnUoY29uc3QgUUxpc3Q8TWVudUl0
ZW1EZXNjcmlwdGlvbj4mLCBRQml0QXJyYXkqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhbmRs
ZVNjcm9sbGJhckNvbnRleHRNZW51RXZlbnQoUUNvbnRleHRNZW51RXZlbnQqLCBib29sLCBTY3Jv
bGxEaXJlY3Rpb24qLCBTY3JvbGxHcmFudWxhcml0eSopID0gMDsKIAorICAgIHZvaWQgc2V0Vmlz
aWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGUsIGJvb2wpOworCiAgICAgc3RhdGljIFFX
ZWJQYWdlQWRhcHRlcioga2l0KFdlYkNvcmU6OlBhZ2UqKTsKICAgICBXZWJDb3JlOjpWaWV3cG9y
dEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50cygpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJV
bmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KTsKQEAgLTMwMSw2ICsz
MDgsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBkZWZhdWx0IGFjdGlv
biB3YXMgY2FuY2VsbGVkIGluIHRoZSBKUyBldmVudCBoYW5kbGVyCiAgICAgYm9vbCB0b3VjaEV2
ZW50KFFUb3VjaEV2ZW50Kik7CiAgICAgYm9vbCBzd2FsbG93Q29udGV4dE1lbnVFdmVudChRQ29u
dGV4dE1lbnVFdmVudCAqLCBRV2ViRnJhbWVBZGFwdGVyKik7CisgICAgdm9pZCBzZXRWaXNpYmls
aXR5U3RhdGUoaW50LCBib29sKTsKIAogICAgIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSogdXBk
YXRlUG9zaXRpb25EZXBlbmRlbnRNZW51QWN0aW9ucyhjb25zdCBRUG9pbnQmLCBRQml0QXJyYXkq
KTsKICAgICB2b2lkIHVwZGF0ZUFjdGlvbkludGVybmFsKE1lbnVBY3Rpb24sIGNvbnN0IGNoYXIq
IGNvbW1hbmROYW1lLCBib29sKiBlbmFibGVkLCBib29sKiBjaGVja2VkKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuY3BwCShyZXZpc2lv
biAxNDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA2LDYgKzQwNiwxNyBAQCBib29sIFFHcmFwaGljc1dl
YlZpZXc6OmV2ZW50KFFFdmVudCogZXZlCiAgICAgLy8gUmUtaW1wbGVtZW50ZWQgaW4gb3JkZXIg
dG8gYWxsb3dzIGZpeGluZyBldmVudC1yZWxhdGVkIGJ1Z3MgaW4gcGF0Y2ggcmVsZWFzZXMuCiAK
ICAgICBpZiAoZC0+cGFnZSkgeworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAg
ICAgICBpZiAoKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpTaG93KSB8fCAoZXZlbnQtPnR5cGUo
KSA9PSBRRXZlbnQ6OldpbmRvd0FjdGl2YXRlKSkgeworICAgICAgICAgICAgLyogY2hhbmdlIG9u
bHkgaWYgdGhlIHNjZW5lIGV4aXN0IGFuZCBpdCdzIHZpc2libGUgKi8KKyAgICAgICAgICAgIGlm
IChzY2VuZSgpICYmIHNjZW5lKCktPmlzQWN0aXZlKCkpCisgICAgICAgICAgICAgICAgZC0+cGFn
ZS0+ZC0+c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlUHJpdmF0ZTo6UGFnZVZpc2liaWxpdHlT
dGF0ZVZpc2libGUsIGZhbHNlKTsKKyAgICAgICAgfSBlbHNlIGlmICgoZXZlbnQtPnR5cGUoKSA9
PSBRRXZlbnQ6OkhpZGUpIHx8IChldmVudC0+dHlwZSgpID09IFFFdmVudDo6V2luZG93RGVhY3Rp
dmF0ZSkpIHsKKyAgICAgICAgICAgIC8qIGNoYW5nZSBvbmx5IGlmIHRoZSBzY2VuZSBleGlzdCAq
LworICAgICAgICAgICAgaWYgKHNjZW5lKCkpCisgICAgICAgICAgICAgICAgZC0+cGFnZS0+ZC0+
c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlUHJpdmF0ZTo6UGFnZVZpc2liaWxpdHlTdGF0ZUhp
ZGRlbiwgZmFsc2UpOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgaWYgKGV2ZW50LT50eXBl
KCkgPT0gUUV2ZW50OjpQYWxldHRlQ2hhbmdlKQogICAgICAgICAgICAgZC0+cGFnZS0+c2V0UGFs
ZXR0ZShwYWxldHRlKCkpOwogI2lmbmRlZiBRVF9OT19DT05URVhUTUVOVQpJbmRleDogU291cmNl
L1dlYktpdC9xdC9XaWRnZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuaAkocmV2aXNpb24gMTQz
MzAzKQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCwxMyArMjAsMTMgQEAKICNpZm5kZWYgUUdyYXBoaWNzV2ViVmll
d19oCiAjZGVmaW5lIFFHcmFwaGljc1dlYlZpZXdfaAogCi0jaW5jbHVkZSA8UXRXZWJLaXQvcXdl
YmtpdGdsb2JhbC5oPgotI2luY2x1ZGUgPFF0V2ViS2l0V2lkZ2V0cy9xd2VicGFnZS5oPgogI2lu
Y2x1ZGUgPFF0Q29yZS9xdXJsLmg+CiAjaW5jbHVkZSA8UXRHdWkvcWV2ZW50Lmg+CiAjaW5jbHVk
ZSA8UXRHdWkvcWljb24uaD4KICNpbmNsdWRlIDxRdEd1aS9xcGFpbnRlci5oPgogI2luY2x1ZGUg
PFF0TmV0d29yay9xbmV0d29ya2FjY2Vzc21hbmFnZXIuaD4KKyNpbmNsdWRlIDxRdFdlYktpdC9x
d2Via2l0Z2xvYmFsLmg+CisjaW5jbHVkZSA8UXRXZWJLaXRXaWRnZXRzL3F3ZWJwYWdlLmg+CiAj
aW5jbHVkZSA8UXRXaWRnZXRzL3FncmFwaGljc3dpZGdldC5oPgogCiAjaWYgIWRlZmluZWQoUVRf
Tk9fR1JBUEhJQ1NWSUVXKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdl
LmNwcAkocmV2aXNpb24gMTQzMzAzKQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdl
YnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUzLDcgKzEzNTMsNiBAQCBRV2ViUGFnZTo6
UVdlYlBhZ2UoUU9iamVjdCAqcGFyZW50KQogICAgICwgZChuZXcgUVdlYlBhZ2VQcml2YXRlKHRo
aXMpKQogewogICAgIHNldFZpZXcocW9iamVjdF9jYXN0PFFXaWRnZXQqPihwYXJlbnQpKTsKLQog
ICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKGxvYWRQcm9ncmVzcyhpbnQpKSwgdGhpcywgU0xPVChf
cV9vbkxvYWRQcm9ncmVzc0NoYW5nZWQoaW50KSkpOwogI2lmbmRlZiBOREVCVUcKICAgICBjb25u
ZWN0KFFDb3JlQXBwbGljYXRpb246Omluc3RhbmNlKCksIFNJR05BTChhYm91dFRvUXVpdCgpKSwg
dGhpcywgU0xPVChfcV9jbGVhbnVwTGVha01lc3NhZ2VzKCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L1dpZGdldEFwaS9xd2Vidmlldy5jcHAJKHJldmlzaW9uIDE0MzMwMykKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI4LDYg
KzcyOCwxMiBAQCBib29sIFFXZWJWaWV3OjpldmVudChRRXZlbnQgKmUpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmIChlLT50eXBlKCkgPT0gUUV2ZW50OjpMZWF2
ZSkKICAgICAgICAgICAgIGQtPnBhZ2UtPmV2ZW50KGUpOworI2lmIEVOQUJMRShQQUdFX1ZJU0lC
SUxJVFlfQVBJKQorICAgICAgICBlbHNlIGlmICgoZS0+dHlwZSgpID09IFFFdmVudDo6U2hvdykg
fHwgKGUtPnR5cGUoKSA9PSBRRXZlbnQ6OldpbmRvd0FjdGl2YXRlKSkKKyAgICAgICAgICAgIGQt
PnBhZ2UtPmQtPnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZVByaXZhdGU6OlBhZ2VWaXNpYmls
aXR5U3RhdGVWaXNpYmxlLCBmYWxzZSk7CisgICAgICAgIGVsc2UgaWYgKChlLT50eXBlKCkgPT0g
UUV2ZW50OjpIaWRlKSB8fCAoZS0+dHlwZSgpID09IFFFdmVudDo6V2luZG93RGVhY3RpdmF0ZSkp
CisgICAgICAgICAgICBkLT5wYWdlLT5kLT5zZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2VQcml2
YXRlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuLCBmYWxzZSk7CisjZW5kaWYKICAgICB9CiAK
ICAgICByZXR1cm4gUVdpZGdldDo6ZXZlbnQoZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L3Rl
c3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNz
d2Vidmlldy5jcHAJKHJldmlzaW9uIDE0MzMwMykKKysrIFNvdXJjZS9XZWJLaXQvcXQvdGVzdHMv
cWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDEwIEBAIHByaXZhdGUgUV9TTE9UUzoKICAgICB2b2lkIHdpZGdldHNSZW5k
ZXJpbmdUaHJvdWdoQ2FjaGUoKTsKICAgICB2b2lkIHdpbmRvd1Jlc2l6ZUV2ZW50KCk7CiAgICAg
dm9pZCBob3Jpem9udGFsU2Nyb2xsYmFyVGVzdCgpOwotCisgICAgdm9pZCB2aXNpYmlsaXR5QXBp
T25WaXNpYmxlU2NlbmUoKTsKKyAgICB2b2lkIHZpc2liaWxpdHlBcGlPbkhpZGRlblNjZW5lKCk7
CisgICAgdm9pZCB2aXNpYmlsaXR5QXBpT25IaWRkZW5TY2VuZVdpdGhIaWRkZW5WaWV3KCk7Cisg
ICAgdm9pZCB2aXNpYmlsaXR5QXBpT25WaXNpYmxlU2NlbmVXaXRoSGlkZGVuVmlldygpOwogI2lm
ICEoZGVmaW5lZChXVEZfVVNFX1FUX01PQklMRV9USEVNRSkgJiYgV1RGX1VTRV9RVF9NT0JJTEVf
VEhFTUUpCiAgICAgdm9pZCBzZXRQYWxldHRlX2RhdGEoKTsKICAgICB2b2lkIHNldFBhbGV0dGUo
KTsKQEAgLTEyNiw2ICsxMjksNjE3IEBAIHB1YmxpYzoKICAgICB9CiB9OwogCit2b2lkIHRzdF9R
R3JhcGhpY3NXZWJWaWV3Ojp2aXNpYmlsaXR5QXBpT25WaXNpYmxlU2NlbmUoKQoreworICAgIFFH
cmFwaGljc1NjZW5lIHNjZW5lOworICAgIFFHcmFwaGljc1ZpZXcgdmlldzsKKyAgICB2aWV3LnNl
dFNjZW5lKCZzY2VuZSk7CisgICAgUUdyYXBoaWNzV2ViVmlldyogd2ViVmlldyA9IG5ldyBRR3Jh
cGhpY3NXZWJWaWV3OworICAgIFFXZWJQYWdlKiBwYWdlID0gbmV3IFFXZWJQYWdlOworICAgIFFW
YXJpYW50IHN0YXRlQm9vbCwgc3RhdGVTdHJpbmcsIGNwdDsKKyAgICBpbnQgd2FpdEZvckV2ZW50
ID0gNTsKKworICAgIHdlYlZpZXctPnNldFBhZ2UocGFnZSk7CisgICAgd2ViVmlldy0+bG9hZChR
VXJsKCJkYXRhOnRleHQvaHRtbCw8aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRt
bD4iKSk7CisKKyAgICBRVkVSSUZZKHdhaXRGb3JTaWduYWwod2ViVmlldywgU0lHTkFMKGxvYWRG
aW5pc2hlZChib29sKSkpKTsKKworICAgIHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgidmFyIHN0YXRlQm9vbCA9IHVuZGVmaW5lZCwgc3RhdGVTdHJpbmcg
PSB1bmRlZmluZWQsIGNwdCA9IDA7IHZhciB2aXNpYmlsaXR5Q2FsbEJhY2sgPSBmdW5jdGlvbiAo
KSB7c3RhdGVCb29sID0gZG9jdW1lbnRbJ3dlYmtpdEhpZGRlbiddOyBzdGF0ZVN0cmluZyA9IGRv
Y3VtZW50Wyd3ZWJraXRWaXNpYmlsaXR5U3RhdGUnXTsgY3B0Kys7fTtkb2N1bWVudC5hZGRFdmVu
dExpc3RlbmVyKCd3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlJywgdmlzaWJpbGl0eUNhbGxCYWNrLCBm
YWxzZSk7Iik7CisKKyAgICAvKiBzaG91bGQgYmUgaW5pdGlhbGlzZWQgdG8gaGlkZGVuICovCisg
ICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJkb2N1bWVudC53ZWJraXRIaWRkZW4iKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50
eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0
ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgiZG9jdW1lbnQud2Via2l0VmlzaWJpbGl0eVN0YXRlIik7CisgICAgUVZFUklGWShzdGF0ZVN0
cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygp
ID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAgICB3ZWJW
aWV3LT5zaG93KCk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBz
aG91bGQgc3RheSB0byBoaWRkZW4gYW5kIG5vIGV2ZW50IHNlbnQgYmVjYXVzZSBubyBzY2VuZSBi
b3VuZCAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0SGlkZGVuIik7CisgICAgUVZFUklGWShz
dGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7
CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0
ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSIpOworICAgIFFWRVJJ
Rlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcu
dG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFn
ZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZ
KGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiAhY3B0LnRvRG91YmxlKCkpOworCisg
ICAgdmlldy5zaG93KCk7CisgICAgUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmdmlldyk7
CisKKyAgICAvKiBzaG91bGQgc3RheSB0byBoaWRkZW4gYmVjYXVzZSB3ZWJWaWV3IGlzbid0IGFk
ZGVkIHRvIHRoZSBzY2VuZSBhbmQgbm8gZXZlbnQgc2VudCAqLworICAgIHN0YXRlQm9vbCA9IHdl
YlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQu
d2Via2l0SGlkZGVuIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50
OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtp
dFZpc2liaWxpdHlTdGF0ZSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFW
YXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRk
ZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRv
dWJsZSAmJiAhY3B0LnRvRG91YmxlKCkpOworCisgICAgc2NlbmUuYWRkSXRlbSh3ZWJWaWV3KTsK
KyAgICBRVGVzdDo6cVdhaXQod2FpdEZvckV2ZW50KTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMg
ZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4g
dXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1h
aW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlko
c3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiAhc3RhdGVCb29sLnRvQm9vbCgp
KTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1
YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5
cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0
cmluZygidmlzaWJsZSIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgp
LT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBR
VmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDEpOworCisgICAgdmlldy5oaWRl
KCk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBjaGVjayBpZiBh
IEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBi
ZWVuIHVwZGF0ZWQgY29ycmVjdGx5ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgp
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVS
SUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9v
bCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5n
LnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0g
UVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1l
KCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09
IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3
LT5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBubyBl
dmVudCBzZW50IChzY2VuZSBpcyBhbHJlYWR5IGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVh
bHMgdG8gMiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCkt
PmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wu
dHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3Rh
dGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZh
cmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRl
biIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUph
dmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91
YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIpOworCisgICAgd2ViVmlldy0+c2hvdygpOworICAg
IFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAgKHNj
ZW5lIGlzIGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAgIHN0YXRl
Qm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgi
c3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpC
b29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5w
YWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7Cisg
ICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0
ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJW
aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAg
IFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgp
ID09IDIpOworCisgICAgd2ViVmlldy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9y
RXZlbnQpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAoc2NlbmUgaXMgaGlkZGVuKSAtPiBjcHQg
c2hvdWxkIGJlIGVxdWFscyB0byAyICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgp
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVS
SUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9v
bCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5n
LnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0g
UVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1l
KCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09
IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB2aWV3LnNo
b3coKTsKKyAgICBRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3KTsKKworICAgIC8q
IG5vIGV2ZW50IHNlbnQgKHdlYlZpZXcgaXMgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFs
cyB0byAyICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50
eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0
ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFy
aWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVu
IikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3Vi
bGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5zaG93KCk7CisgICAg
UVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2ZW50
IGhhcyBiZWVuIGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0
ZWQgY29ycmVjdGx5ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRl
Qm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7Cisg
ICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUph
dmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkg
PT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmco
InZpc2libGUiKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAzKTsKKworICAgIHdlYlZpZXctPmhpZGUo
KTsKKyAgICBRVGVzdDo6cVdhaXQod2FpdEZvckV2ZW50KTsKKworICAgIC8qIGNoZWNrIGlmIGEg
SlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJl
ZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJ
Rlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29s
KCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcu
dHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBR
U3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0g
UVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSA0KTsKKworICAgIHZpZXcuaGlk
ZSgpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogbm8gZXZlbnQg
c2VudCAod2ViVmlldyBpcyBoaWRkZW4pIC0+IGNwdCBzaG91bGQgYmUgZXF1YWxzIHRvIDQgKi8K
KyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUph
dmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBR
VmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0g
d2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0
cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJp
bmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAg
Y3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJj
cHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQu
dG9Eb3VibGUoKSA9PSA0KTsKK30KKwordm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6dmlzaWJp
bGl0eUFwaU9uSGlkZGVuU2NlbmUoKQoreworICAgIFFHcmFwaGljc1NjZW5lIHNjZW5lOworICAg
IFFHcmFwaGljc1ZpZXcgdmlldzsKKyAgICB2aWV3LnNldFNjZW5lKCZzY2VuZSk7CisgICAgUUdy
YXBoaWNzV2ViVmlldyogd2ViVmlldyA9IG5ldyBRR3JhcGhpY3NXZWJWaWV3OworICAgIFFXZWJQ
YWdlKiBwYWdlID0gbmV3IFFXZWJQYWdlOworICAgIFFWYXJpYW50IHN0YXRlQm9vbCwgc3RhdGVT
dHJpbmcsIGNwdDsKKyAgICBpbnQgd2FpdEZvckV2ZW50ID0gNTsKKworICAgIHdlYlZpZXctPnNl
dFBhZ2UocGFnZSk7CisgICAgd2ViVmlldy0+bG9hZChRVXJsKCJkYXRhOnRleHQvaHRtbCw8aHRt
bD48aGVhZD48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iKSk7CisKKyAgICBRVkVSSUZZKHdh
aXRGb3JTaWduYWwod2ViVmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpKTsKKworICAg
IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidmFyIHN0
YXRlQm9vbCA9IHVuZGVmaW5lZCwgc3RhdGVTdHJpbmcgPSB1bmRlZmluZWQsIGNwdCA9IDA7IHZh
ciB2aXNpYmlsaXR5Q2FsbEJhY2sgPSBmdW5jdGlvbiAoKSB7c3RhdGVCb29sID0gZG9jdW1lbnRb
J3dlYmtpdEhpZGRlbiddOyBzdGF0ZVN0cmluZyA9IGRvY3VtZW50Wyd3ZWJraXRWaXNpYmlsaXR5
U3RhdGUnXTsgY3B0Kys7fTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXR2aXNpYmls
aXR5Y2hhbmdlJywgdmlzaWJpbGl0eUNhbGxCYWNrLCBmYWxzZSk7Iik7CisKKyAgICAvKiBzaG91
bGQgYmUgaW5pdGlhbGlzZWQgdG8gaGlkZGVuICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+
cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRI
aWRkZW4iKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wg
JiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0VmlzaWJp
bGl0eVN0YXRlIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6
OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsK
KworICAgIHNjZW5lLmFkZEl0ZW0od2ViVmlldyk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JF
dmVudCk7CisKKyAgICAvKiBzaG91bGQgc3RheSB0byBoaWRkZW4gYW5kIG5vIGV2ZW50IHNlbnQg
YmVjYXVzZSBzY2VuZSBpcyBoaWRkZW4gKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdl
KCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdEhpZGRl
biIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBz
dGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRWaXNpYmlsaXR5
U3RhdGUiKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3Ry
aW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAg
IGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgi
Y3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgIWNw
dC50b0RvdWJsZSgpKTsKKworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAgICB3ZWJWaWV3LT5zaG93
KCk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBzaG91bGQgc3Rh
eSB0byBoaWRkZW4gYW5kIG5vIGV2ZW50IHNlbnQgYmVjYXVzZSBzY2VuZSBpcyBoaWRkZW4gKi8K
KyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUph
dmFTY3JpcHQoImRvY3VtZW50LndlYmtpdEhpZGRlbiIpOworICAgIFFWRVJJRlkoc3RhdGVCb29s
LnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0
YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2Ny
aXB0KCJkb2N1bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUiKTsKKyAgICBRVkVSSUZZKHN0YXRl
U3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5n
KCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlw
ZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgIWNwdC50b0RvdWJsZSgpKTsKKworICAgIHZpZXcu
c2hvdygpOworICAgIFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcpOworCisgICAg
LyogY2hlY2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBwcm9w
ZXJ0aWVzIGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9IHdl
YlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29s
Iik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmICFz
dGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJ
Rlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcu
dG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklG
WShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMSk7
CisKKyAgICB2aWV3LmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQod2FpdEZvckV2ZW50KTsKKwor
ICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkg
cHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRl
Qm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAm
JiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgp
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFW
RVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJp
bmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+
cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVS
SUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAy
KTsKKworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQod2FpdEZvckV2ZW50
KTsKKworICAgIC8qIG5vIGV2ZW50IHNlbnQgKHNjZW5lIGlzIGFscmVhZHkgaGlkZGVuKSAtPiBj
cHQgc2hvdWxkIGJlIGVxdWFscyB0byAyICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFn
ZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBR
VkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRv
Qm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCkt
PmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3Ry
aW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkg
PT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgp
ID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJW
aWV3LT5zaG93KCk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBu
byBldmVudCBzZW50ICAoc2NlbmUgaXMgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFscyB0
byAyICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBl
KCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0
cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgi
c3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFu
dDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikp
OworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUg
JiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5oaWRlKCk7CisgICAgUVRl
c3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBubyBldmVudCBzZW50IChzY2VuZSBp
cyBoaWRkZW4pIC0+IGNwdCBzaG91bGQgYmUgZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJvb2wg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRl
Qm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAm
JiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgp
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFW
RVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJp
bmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+
cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVS
SUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAy
KTsKKworICAgIHZpZXcuc2hvdygpOworICAgIFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQo
JnZpZXcpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAod2ViVmlldyBpcyBoaWRkZW4pIC0+IGNw
dCBzaG91bGQgYmUgZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdl
KCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFW
RVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9C
b29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJp
bmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9
PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkg
PT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAgIHdlYlZp
ZXctPnNob3coKTsKKyAgICBRVGVzdDo6cVdhaXQod2FpdEZvckV2ZW50KTsKKworICAgIC8qIGNo
ZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGll
cyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOwor
ICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiAhc3RhdGVC
b29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0
YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3Ry
aW5nKCkgPT0gUVN0cmluZygidmlzaWJsZSIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0
LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDMpOworCisg
ICAgd2ViVmlldy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisg
ICAgLyogY2hlY2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBw
cm9wZXJ0aWVzIGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9
IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVC
b29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYm
IHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZF
UklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmlu
Zy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5w
YWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJ
RlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDQp
OworCisgICAgdmlldy5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisK
KyAgICAvKiBubyBldmVudCBzZW50ICh3ZWJWaWV3IGlzIGhpZGRlbikgLT4gY3B0IHNob3VsZCBi
ZSBlcXVhbHMgdG8gNCAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0
ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7Cisg
ICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUph
dmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkg
PT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmco
ImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFu
dDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDQpOworfQorCit2b2lkIHRzdF9RR3JhcGhp
Y3NXZWJWaWV3Ojp2aXNpYmlsaXR5QXBpT25WaXNpYmxlU2NlbmVXaXRoSGlkZGVuVmlldygpCit7
CisgICAgUUdyYXBoaWNzU2NlbmUgc2NlbmU7CisgICAgUUdyYXBoaWNzVmlldyB2aWV3OworICAg
IHZpZXcuc2V0U2NlbmUoJnNjZW5lKTsKKyAgICBRR3JhcGhpY3NXZWJWaWV3KiB3ZWJWaWV3ID0g
bmV3IFFHcmFwaGljc1dlYlZpZXc7CisgICAgUVdlYlBhZ2UqIHBhZ2UgPSBuZXcgUVdlYlBhZ2U7
CisgICAgUVZhcmlhbnQgc3RhdGVCb29sLCBzdGF0ZVN0cmluZywgY3B0OworICAgIGludCB3YWl0
Rm9yRXZlbnQgPSA1OworCisgICAgd2ViVmlldy0+c2V0UGFnZShwYWdlKTsKKyAgICB3ZWJWaWV3
LT5sb2FkKFFVcmwoImRhdGE6dGV4dC9odG1sLDxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT48L2Jv
ZHk+PC9odG1sPiIpKTsKKworICAgIFFWRVJJRlkod2FpdEZvclNpZ25hbCh3ZWJWaWV3LCBTSUdO
QUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOworCisgICAgd2ViVmlldy0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ2YXIgc3RhdGVCb29sID0gdW5kZWZpbmVkLCBzdGF0
ZVN0cmluZyA9IHVuZGVmaW5lZCwgY3B0ID0gMDsgdmFyIHZpc2liaWxpdHlDYWxsQmFjayA9IGZ1
bmN0aW9uICgpIHtzdGF0ZUJvb2wgPSBkb2N1bWVudFsnd2Via2l0SGlkZGVuJ107IHN0YXRlU3Ry
aW5nID0gZG9jdW1lbnRbJ3dlYmtpdFZpc2liaWxpdHlTdGF0ZSddOyBjcHQrKzt9O2RvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdHZpc2liaWxpdHljaGFuZ2UnLCB2aXNpYmlsaXR5Q2Fs
bEJhY2ssIGZhbHNlKTsiKTsKKworICAgIC8qIHNob3VsZCBiZSBpbml0aWFsaXNlZCB0byBoaWRk
ZW4gKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdEhpZGRlbiIpOworICAgIFFWRVJJRlkoc3Rh
dGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOwor
ICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUiKTsKKyAgICBRVkVSSUZZ
KHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRv
U3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworCisgICAgLyogYnkgZGVmYXVsdCB3ZWJW
aWV3IGlzIHZpc2libGUgKi8KKyAgICB3ZWJWaWV3LT5oaWRlKCk7CisgICAgd2ViVmlldy0+c2hv
dygpOworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQod2FpdEZvckV2ZW50
KTsKKworICAgIC8qIHNob3VsZCBzdGF5IHRvIGhpZGRlbiBhbmQgbm8gZXZlbnQgc2VudCBiZWNh
dXNlIG5vIHNjZW5lIGJvdW5kICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRIaWRkZW4iKTsK
KyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVC
b29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0VmlzaWJpbGl0eVN0YXRl
Iik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAm
JiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIp
OworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmICFjcHQudG9E
b3VibGUoKSk7CisKKyAgICB2aWV3LnNob3coKTsKKyAgICBRVGVzdDo6cVdhaXRGb3JXaW5kb3dF
eHBvc2VkKCZ2aWV3KTsKKworICAgIC8qIHNob3VsZCBzdGF5IHRvIGhpZGRlbiBhbmQgbm8gZXZl
bnQgc2VudCBiZWNhdXNlIG5vIHNjZW5lIGJvdW5kICovCisgICAgc3RhdGVCb29sID0gd2ViVmll
dy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJr
aXRIaWRkZW4iKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJv
b2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0Vmlz
aWJpbGl0eVN0YXRlIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlh
bnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIp
KTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91Ymxl
ICYmICFjcHQudG9Eb3VibGUoKSk7CisKKworICAgIHNjZW5lLmFkZEl0ZW0od2ViVmlldyk7Cisg
ICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBzaG91bGQgc3RheSB0byBo
aWRkZW4gYW5kIG5vIGV2ZW50IHNlbnQgYmVjYXVzZSB3ZWJWaWV3IGlzIGhpZGRlbiAqLworICAg
IHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgiZG9jdW1lbnQud2Via2l0SGlkZGVuIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlw
ZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVT
dHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
ImRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJp
bmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9
PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkg
PT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiAhY3B0LnRvRG91YmxlKCkpOworCisgICAgd2ViVmlldy0+
c2hvdygpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogY2hlY2sg
aWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBwcm9wZXJ0aWVzIGhh
dmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAg
UVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmICFzdGF0ZUJvb2wu
dG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVT
dHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmco
KSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlw
ZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMSk7CisKKyAgICB2
aWV3LmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQod2FpdEZvckV2ZW50KTsKKworICAgIC8qIGNo
ZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGll
cyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOwor
ICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJv
b2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3Rh
dGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJp
bmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50
eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAg
IHdlYlZpZXctPmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQod2FpdEZvckV2ZW50KTsKKworICAg
IC8qIG5vIGV2ZW50IHNlbnQgKHNjZW5lIGlzIGFscmVhZHkgaGlkZGVuKSAtPiBjcHQgc2hvdWxk
IGJlIGVxdWFscyB0byAyICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0
YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsK
KyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRl
SmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUo
KSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmlu
ZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJp
YW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5zaG93
KCk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBubyBldmVudCBz
ZW50ICAoc2NlbmUgaXMgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFscyB0byAyICovCisg
ICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZh
cmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdl
YlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJp
bmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5n
ICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNw
dCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0
Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRv
RG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0
KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBubyBldmVudCBzZW50IChzY2VuZSBpcyBoaWRkZW4p
IC0+IGNwdCBzaG91bGQgYmUgZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOwor
ICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJv
b2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3Rh
dGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJp
bmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50
eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAg
IHZpZXcuc2hvdygpOworICAgIFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcpOwor
CisgICAgLyogbm8gZXZlbnQgc2VudCAod2ViVmlldyBpcyBoaWRkZW4pIC0+IGNwdCBzaG91bGQg
YmUgZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3Rh
dGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOwor
ICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgp
ID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5n
KCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAgIHdlYlZpZXctPnNob3co
KTsKKyAgICBRVGVzdDo6cVdhaXQod2FpdEZvckV2ZW50KTsKKworICAgIC8qIGNoZWNrIGlmIGEg
SlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJl
ZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJ
Rlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiAhc3RhdGVCb29sLnRvQm9v
bCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5n
LnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0g
UVN0cmluZygidmlzaWJsZSIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9
PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDMpOworCisgICAgd2ViVmll
dy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogY2hl
Y2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBwcm9wZXJ0aWVz
IGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXct
PnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7Cisg
ICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9v
bC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0
ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmlu
ZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1h
aW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5
cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDQpOworCisgICAg
dmlldy5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBu
byBldmVudCBzZW50ICh3ZWJWaWV3IGlzIGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMg
dG8gNCAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlw
ZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVT
dHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
InN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlh
bnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIp
KTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91Ymxl
ICYmIGNwdC50b0RvdWJsZSgpID09IDQpOworfQorCit2b2lkIHRzdF9RR3JhcGhpY3NXZWJWaWV3
Ojp2aXNpYmlsaXR5QXBpT25IaWRkZW5TY2VuZVdpdGhIaWRkZW5WaWV3KCkKK3sKKyAgICBRR3Jh
cGhpY3NTY2VuZSBzY2VuZTsKKyAgICBRR3JhcGhpY3NWaWV3IHZpZXc7CisgICAgdmlldy5zZXRT
Y2VuZSgmc2NlbmUpOworICAgIFFHcmFwaGljc1dlYlZpZXcqIHdlYlZpZXcgPSBuZXcgUUdyYXBo
aWNzV2ViVmlldzsKKyAgICBRV2ViUGFnZSogcGFnZSA9IG5ldyBRV2ViUGFnZTsKKyAgICBRVmFy
aWFudCBzdGF0ZUJvb2wsIHN0YXRlU3RyaW5nLCBjcHQ7CisgICAgaW50IHdhaXRGb3JFdmVudCA9
IDU7CisKKyAgICB3ZWJWaWV3LT5zZXRQYWdlKHBhZ2UpOworICAgIHdlYlZpZXctPmxvYWQoUVVy
bCgiZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+
IikpOworCisgICAgUVZFUklGWSh3YWl0Rm9yU2lnbmFsKHdlYlZpZXcsIFNJR05BTChsb2FkRmlu
aXNoZWQoYm9vbCkpKSk7CisKKyAgICB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoInZhciBzdGF0ZUJvb2wgPSB1bmRlZmluZWQsIHN0YXRlU3RyaW5nID0g
dW5kZWZpbmVkLCBjcHQgPSAwOyB2YXIgdmlzaWJpbGl0eUNhbGxCYWNrID0gZnVuY3Rpb24gKCkg
e3N0YXRlQm9vbCA9IGRvY3VtZW50Wyd3ZWJraXRIaWRkZW4nXTsgc3RhdGVTdHJpbmcgPSBkb2N1
bWVudFsnd2Via2l0VmlzaWJpbGl0eVN0YXRlJ107IGNwdCsrO307ZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcignd2Via2l0dmlzaWJpbGl0eWNoYW5nZScsIHZpc2liaWxpdHlDYWxsQmFjaywgZmFs
c2UpOyIpOworCisgICAgLyogc2hvdWxkIGJlIGluaXRpYWxpc2VkIHRvIGhpZGRlbiAqLworICAg
IHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgiZG9jdW1lbnQud2Via2l0SGlkZGVuIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlw
ZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVT
dHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
ImRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJp
bmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9
PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisKKyAgICAvKiBieSBkZWZhdWx0IHdlYlZpZXcgaXMgdmlz
aWJsZSAqLworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAgICB3ZWJWaWV3LT5zaG93KCk7CisgICAg
d2ViVmlldy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAg
Lyogc2hvdWxkIHN0YXkgdG8gaGlkZGVuIGFuZCBubyBldmVudCBzZW50IGJlY2F1c2Ugbm8gc2Nl
bmUgYm91bmQgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgp
LT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdEhpZGRlbiIpOworICAgIFFWRVJJ
Rlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29s
KCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUiKTsKKyAgICBR
VkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3Ry
aW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXct
PnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZF
UklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgIWNwdC50b0RvdWJsZSgpKTsK
KworICAgIHNjZW5lLmFkZEl0ZW0od2ViVmlldyk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JF
dmVudCk7CisKKyAgICAvKiBzaG91bGQgc3RheSB0byBoaWRkZW4gYW5kIG5vIGV2ZW50IHNlbnQg
YmVjYXVzZSB3ZWJWaWV3IGlzIGhpZGRlbiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0SGlk
ZGVuIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYm
IHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdFZpc2liaWxp
dHlTdGF0ZSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpT
dHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7Cisg
ICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiAh
Y3B0LnRvRG91YmxlKCkpOworCisgICAgdmlldy5zaG93KCk7CisgICAgUVRlc3Q6OnFXYWl0Rm9y
V2luZG93RXhwb3NlZCgmdmlldyk7CisKKyAgICAvKiBzaG91bGQgc3RheSB0byBoaWRkZW4gYW5k
IG5vIGV2ZW50IHNlbnQgYmVjYXVzZSB3ZWJWaWV3IGlzIGhpZGRlbiAqLworICAgIHN0YXRlQm9v
bCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9j
dW1lbnQud2Via2l0SGlkZGVuIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFW
YXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3
ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50
LndlYmtpdFZpc2liaWxpdHlTdGF0ZSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgp
ID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5n
KCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkRvdWJsZSAmJiAhY3B0LnRvRG91YmxlKCkpOworCisgICAgd2ViVmlldy0+c2hvdygpOwor
ICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogY2hlY2sgaWYgYSBKUyBl
dmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBwcm9wZXJ0aWVzIGhhdmUgYmVlbiB1
cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShz
dGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmICFzdGF0ZUJvb2wudG9Cb29sKCkp
OworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlw
ZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3Ry
aW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCkt
PmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFW
YXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMSk7CisKKyAgICB2aWV3LmhpZGUo
KTsKKyAgICBRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3KTsKKworICAgIC8qIGNo
ZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGll
cyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOwor
ICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJv
b2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3Rh
dGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJp
bmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50
eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAg
IHdlYlZpZXctPmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQod2FpdEZvckV2ZW50KTsKKworICAg
IC8qIG5vIGV2ZW50IHNlbnQgKHNjZW5lIGlzIGFscmVhZHkgaGlkZGVuKSAtPiBjcHQgc2hvdWxk
IGJlIGVxdWFscyB0byAyICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0
YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsK
KyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRl
SmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUo
KSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmlu
ZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJp
YW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5zaG93
KCk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBubyBldmVudCBz
ZW50ICAoc2NlbmUgaXMgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFscyB0byAyICovCisg
ICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZh
cmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdl
YlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJp
bmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5n
ICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNw
dCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0
Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRv
RG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0
KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBubyBldmVudCBzZW50IChzY2VuZSBpcyBoaWRkZW4p
IC0+IGNwdCBzaG91bGQgYmUgZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOwor
ICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJv
b2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3Rh
dGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJp
bmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50
eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAg
IHZpZXcuc2hvdygpOworICAgIFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcpOwor
CisgICAgLyogbm8gZXZlbnQgc2VudCAod2ViVmlldyBpcyBoaWRkZW4pIC0+IGNwdCBzaG91bGQg
YmUgZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3Rh
dGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOwor
ICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgp
ID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5n
KCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAgIHdlYlZpZXctPnNob3co
KTsKKyAgICBRVGVzdDo6cVdhaXQod2FpdEZvckV2ZW50KTsKKworICAgIC8qIGNoZWNrIGlmIGEg
SlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJl
ZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJ
Rlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiAhc3RhdGVCb29sLnRvQm9v
bCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5n
LnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0g
UVN0cmluZygidmlzaWJsZSIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9
PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDMpOworCisgICAgd2ViVmll
dy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogY2hl
Y2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlzaWJpbGl0eSBwcm9wZXJ0aWVz
IGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXct
PnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7Cisg
ICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9v
bC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0
ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmlu
ZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1h
aW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5
cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDQpOworCisgICAg
dmlldy5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBu
byBldmVudCBzZW50ICh3ZWJWaWV3IGlzIGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMg
dG8gNCAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlw
ZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVT
dHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
InN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlh
bnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIp
KTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91Ymxl
ICYmIGNwdC50b0RvdWJsZSgpID09IDQpOworfQorCiB2b2lkIHRzdF9RR3JhcGhpY3NXZWJWaWV3
OjpjcmFzaE9uVmlld2xlc3NXZWJQYWdlcygpCiB7CiAgICAgUUdyYXBoaWNzU2NlbmUgc2NlbmU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZp
ZXcuY3BwCShyZXZpc2lvbiAxNDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2
aWV3L3RzdF9xd2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDggQEAgcHJp
dmF0ZSBRX1NMT1RTOgogICAgIHZvaWQgc2V0UGFsZXR0ZV9kYXRhKCk7CiAgICAgdm9pZCBzZXRQ
YWxldHRlKCk7CiAjZW5kaWYKKworICAgIHZvaWQgdmlzaWJpbGl0eUFwaSgpOwogfTsKIAogLy8g
VGhpcyB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGZpcnN0IHRlc3QgZnVuY3Rpb24gaXMgZXhl
Y3V0ZWQuCkBAIC01MTgsNiArNTIwLDQyIEBAIHZvaWQgdHN0X1FXZWJWaWV3OjpyZW5kZXJpbmdB
ZnRlck1heEFuZEIKICAgICBRQ09NUEFSRShpbWFnZTMsIHJlZmVyZW5jZTMpOwogfQogCit2b2lk
IHRzdF9RV2ViVmlldzo6dmlzaWJpbGl0eUFwaSgpCit7CisgICAgUVVybCB1cmwgPSBRVXJsKCJk
YXRhOnRleHQvaHRtbCw8aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iKTsK
KworICAgIFFXZWJWaWV3IHZpZXc7CisgICAgUVZhcmlhbnQgc3RhdGVCb29sLCBzdGF0ZVN0cmlu
ZywgY3B0OworICAgIHZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZCh1cmwpOworICAgIFFW
RVJJRlkod2FpdEZvclNpZ25hbCgmdmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpKTsK
KyAgICB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidmFyIHN0
YXRlQm9vbCA9IHVuZGVmaW5lZCwgc3RhdGVTdHJpbmcgPSB1bmRlZmluZWQsIGNwdCA9IDA7IHZh
ciB2aXNpYmlsaXR5Q2FsbEJhY2sgPSBmdW5jdGlvbiAoKSB7c3RhdGVCb29sID0gZG9jdW1lbnRb
J3dlYmtpdEhpZGRlbiddOyBzdGF0ZVN0cmluZyA9IGRvY3VtZW50Wyd3ZWJraXRWaXNpYmlsaXR5
U3RhdGUnXTsgY3B0Kys7fTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXR2aXNpYmls
aXR5Y2hhbmdlJywgdmlzaWJpbGl0eUNhbGxCYWNrLCBmYWxzZSk7Iik7CisKKyAgICAvKiBzaG91
bGQgYmUgaW5pdGlhbGlzZWQgdG8gaGlkZGVuICovCisgICAgc3RhdGVCb29sID0gdmlldy5wYWdl
KCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdEhpZGRl
biIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBz
dGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gdmlldy5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0
ZSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcg
JiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisKKyAgICB2
aWV3LnNob3coKTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQg
YW5kIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8K
KyAgICBzdGF0ZUJvb2wgPSB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJp
YW50OjpCb29sICYmICFzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gdmll
dy5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7
CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBz
dGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInZpc2libGUiKSk7CisgICAgY3B0ID0g
dmlldy5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAg
IFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgp
ID09IDEpOworCisgICAgdmlldy5oaWRlKCk7CisKKyAgICBzdGF0ZUJvb2wgPSB2aWV3LnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZF
UklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jv
b2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1
YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5
cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0
cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKK30KKwogUVRFU1RfTUFJTih0c3Rf
UVdlYlZpZXcpCiAjaW5jbHVkZSAidHN0X3F3ZWJ2aWV3Lm1vYyIKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189331</attachid>
            <date>2013-02-20 09:07:44 -0800</date>
            <delta_ts>2013-03-11 04:04:17 -0700</delta_ts>
            <desc>[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView + tests (5) </desc>
            <filename>patch_109422-11.patch</filename>
            <type>text/plain</type>
            <size>44763</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAyLTIwICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAocHJpdmF0ZVN0YXRlVG9Db3JlU3RhdGUpOgorICAgICAgICAoUVdlYlBhZ2VBZGFw
dGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjppbml0
aWFsaXplV2ViQ29yZVBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRh
cHRlci5oOgorICAgICAgICAqIFdpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAg
ICAgKFFHcmFwaGljc1dlYlZpZXc6OmV2ZW50KToKKyAgICAgICAgKiBXaWRnZXRBcGkvcWdyYXBo
aWNzd2Vidmlldy5oOgorICAgICAgICAqIFdpZGdldEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAg
IChRV2ViVmlldzo6ZXZlbnQpOgorICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0
X3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXcpOgor
ICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXc6OnZpc2liaWxpdHlBcGlPblZpc2libGVTY2Vu
ZSk6CisgICAgICAgICh0c3RfUUdyYXBoaWNzV2ViVmlldzo6dmlzaWJpbGl0eUFwaU9uSGlkZGVu
U2NlbmUpOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXc6OnZpc2liaWxpdHlBcGlPblZp
c2libGVTY2VuZVdpdGhIaWRkZW5WaWV3KToKKyAgICAgICAgKHRzdF9RR3JhcGhpY3NXZWJWaWV3
Ojp2aXNpYmlsaXR5QXBpT25IaWRkZW5TY2VuZVdpdGhIaWRkZW5WaWV3KToKKyAgICAgICAgKiB0
ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FXZWJWaWV3KToK
KyAgICAgICAgKHRzdF9RV2ViVmlldzo6dmlzaWJpbGl0eUFwaSk6CisKIDIwMTMtMDItMTUgIEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAg
U2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcwpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFw
dGVyLmNwcAkocmV2aXNpb24gMTQzMzAzKQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDI1
IEBAIHN0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgUVVybCYgdXIKICAgICB9CiB9CiAK
K3N0YXRpYyBpbmxpbmUgV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSBwcml2YXRlU3RhdGVU
b0NvcmVTdGF0ZShRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNpYmlsaXR5U3RhdGUgc3RhdGUpCit7
CisgICAgcmV0dXJuIChzdGF0ZSA9PSBRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNpYmlsaXR5U3Rh
dGVWaXNpYmxlKSA/IFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlIDogV2ViQ29y
ZTo6UGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbjsKK30KKwordm9pZCBRV2ViUGFnZUFkYXB0ZXI6
OnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNpYmlsaXR5U3RhdGUg
dmlzaWJpbGl0eVN0YXRlLCBib29sIGlzSW5pdGlhbFN0YXRlKQoreworICAgIC8qIGF1dG9tYXRp
YyBjYWxsZWQgYnkgUVdlYlZpZXcgYW5kIFFHcmFwaGljc1dlYlZpZXcgKi8KKyAgICAvKiBvbiBo
aWRlL3Nob3cvd2luZG93QWN0aXZhdGUvd2luZG93RGVhY3RpdmF0ZSBldmVudHMgKi8KKyNpZiBF
TkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVy
bjsKKyAgICBwYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUocHJpdmF0ZVN0YXRlVG9Db3JlU3RhdGUo
dmlzaWJpbGl0eVN0YXRlKSwgaXNJbml0aWFsU3RhdGUpOworI2Vsc2UKKyAgICBRX1VOVVNFRCh2
aXNpYmlsaXR5U3RhdGUpOworICAgIFFfVU5VU0VEKGlzSW5pdGlhbFN0YXRlKTsKKyNlbmRpZgor
fQorCiBRV2ViUGFnZUFkYXB0ZXI6OlFXZWJQYWdlQWRhcHRlcigpCiAgICAgOiBzZXR0aW5ncygw
KQogICAgICwgcGFnZSgwKQpAQCAtMTgyLDYgKzIwMSw5IEBAIHZvaWQgUVdlYlBhZ2VBZGFwdGVy
Ojppbml0aWFsaXplV2ViQ29yZVAKICAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3IERy
YWdDbGllbnRRdChwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQpOwogICAgIHBhZ2VDbGllbnRzLmlu
c3BlY3RvckNsaWVudCA9IG5ldyBJbnNwZWN0b3JDbGllbnRRdCh0aGlzKTsKICAgICBwYWdlID0g
bmV3IFBhZ2UocGFnZUNsaWVudHMpOworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQor
ICAgIHNldFZpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuLCB0cnVlKTsK
KyNlbmRpZgogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICBpZiAodXNlTW9jaykgewogICAg
ICAgICAvLyBJbiBjYXNlIHJ1bm5pbmcgaW4gRHVtcFJlbmRlclRyZWUgbW9kZSBzZXQgdGhlIGNv
bnRyb2xsZXIgdG8gbW9jayBwcm92aWRlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaAkocmV2aXNpb24gMTQzMzAzKQorKysg
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFNjcm9sbEJ5RG9j
dW1lbnQKICAgICB9OwogCisgICAgZW51bSBQYWdlVmlzaWJpbGl0eVN0YXRlIHsKKyAgICAgICAg
UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUsCisgICAgICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGVI
aWRkZW4KKyAgICB9OworCiAgICAgUVdlYlBhZ2VBZGFwdGVyKCk7CiAgICAgdmlydHVhbCB+UVdl
YlBhZ2VBZGFwdGVyKCk7CiAKQEAgLTI0NCw2ICsyNDksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZUFuZFNldEN1cnJlbnRDb250ZXh0TWVudShjb25zdCBRTGlzdDxNZW51SXRl
bURlc2NyaXB0aW9uPiYsIFFCaXRBcnJheSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxl
U2Nyb2xsYmFyQ29udGV4dE1lbnVFdmVudChRQ29udGV4dE1lbnVFdmVudCosIGJvb2wsIFNjcm9s
bERpcmVjdGlvbiosIFNjcm9sbEdyYW51bGFyaXR5KikgPSAwOwogCisgICAgdm9pZCBzZXRWaXNp
YmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0ZSwgYm9vbCk7CisKICAgICBzdGF0aWMgUVdl
YlBhZ2VBZGFwdGVyKiBraXQoV2ViQ29yZTo6UGFnZSopOwogICAgIFdlYkNvcmU6OlZpZXdwb3J0
QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3Q7CiAgICAgdm9pZCByZWdpc3RlclVu
ZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pOwpAQCAtMzAxLDYgKzMw
OCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGRlZmF1bHQgYWN0aW9u
IHdhcyBjYW5jZWxsZWQgaW4gdGhlIEpTIGV2ZW50IGhhbmRsZXIKICAgICBib29sIHRvdWNoRXZl
bnQoUVRvdWNoRXZlbnQqKTsKICAgICBib29sIHN3YWxsb3dDb250ZXh0TWVudUV2ZW50KFFDb250
ZXh0TWVudUV2ZW50ICosIFFXZWJGcmFtZUFkYXB0ZXIqKTsKKyAgICB2b2lkIHNldFZpc2liaWxp
dHlTdGF0ZShpbnQsIGJvb2wpOwogCiAgICAgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKiB1cGRh
dGVQb3NpdGlvbkRlcGVuZGVudE1lbnVBY3Rpb25zKGNvbnN0IFFQb2ludCYsIFFCaXRBcnJheSop
OwogICAgIHZvaWQgdXBkYXRlQWN0aW9uSW50ZXJuYWwoTWVudUFjdGlvbiwgY29uc3QgY2hhciog
Y29tbWFuZE5hbWUsIGJvb2wqIGVuYWJsZWQsIGJvb2wqIGNoZWNrZWQpOwpJbmRleDogU291cmNl
L1dlYktpdC9xdC9XaWRnZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHAJKHJldmlzaW9u
IDE0MzMwMykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDYsNiArNDA2LDE3IEBAIGJvb2wgUUdyYXBoaWNzV2Vi
Vmlldzo6ZXZlbnQoUUV2ZW50KiBldmUKICAgICAvLyBSZS1pbXBsZW1lbnRlZCBpbiBvcmRlciB0
byBhbGxvd3MgZml4aW5nIGV2ZW50LXJlbGF0ZWQgYnVncyBpbiBwYXRjaCByZWxlYXNlcy4KIAog
ICAgIGlmIChkLT5wYWdlKSB7CisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAg
ICAgIGlmICgoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OlNob3cpIHx8IChldmVudC0+dHlwZSgp
ID09IFFFdmVudDo6V2luZG93QWN0aXZhdGUpKSB7CisgICAgICAgICAgICAvKiBjaGFuZ2Ugb25s
eSBpZiB0aGUgc2NlbmUgZXhpc3QgYW5kIGl0J3MgdmlzaWJsZSAqLworICAgICAgICAgICAgaWYg
KHNjZW5lKCkgJiYgc2NlbmUoKS0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAgICAgICBkLT5wYWdl
LT5kLT5zZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2VQcml2YXRlOjpQYWdlVmlzaWJpbGl0eVN0
YXRlVmlzaWJsZSwgZmFsc2UpOworICAgICAgICB9IGVsc2UgaWYgKChldmVudC0+dHlwZSgpID09
IFFFdmVudDo6SGlkZSkgfHwgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpXaW5kb3dEZWFjdGl2
YXRlKSkgeworICAgICAgICAgICAgLyogY2hhbmdlIG9ubHkgaWYgdGhlIHNjZW5lIGV4aXN0ICov
CisgICAgICAgICAgICBpZiAoc2NlbmUoKSkKKyAgICAgICAgICAgICAgICBkLT5wYWdlLT5kLT5z
ZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2VQcml2YXRlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlk
ZGVuLCBmYWxzZSk7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBRRXZlbnQ6OlBhbGV0dGVDaGFuZ2UpCiAgICAgICAgICAgICBkLT5wYWdlLT5zZXRQYWxl
dHRlKHBhbGV0dGUoKSk7CiAjaWZuZGVmIFFUX05PX0NPTlRFWFRNRU5VCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5oCShyZXZpc2lvbiAxNDMz
MDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwLDEzICsyMCwxMyBAQAogI2lmbmRlZiBRR3JhcGhpY3NXZWJWaWV3
X2gKICNkZWZpbmUgUUdyYXBoaWNzV2ViVmlld19oCiAKLSNpbmNsdWRlIDxRdFdlYktpdC9xd2Vi
a2l0Z2xvYmFsLmg+Ci0jaW5jbHVkZSA8UXRXZWJLaXRXaWRnZXRzL3F3ZWJwYWdlLmg+CiAjaW5j
bHVkZSA8UXRDb3JlL3F1cmwuaD4KICNpbmNsdWRlIDxRdEd1aS9xZXZlbnQuaD4KICNpbmNsdWRl
IDxRdEd1aS9xaWNvbi5oPgogI2luY2x1ZGUgPFF0R3VpL3FwYWludGVyLmg+CiAjaW5jbHVkZSA8
UXROZXR3b3JrL3FuZXR3b3JrYWNjZXNzbWFuYWdlci5oPgorI2luY2x1ZGUgPFF0V2ViS2l0L3F3
ZWJraXRnbG9iYWwuaD4KKyNpbmNsdWRlIDxRdFdlYktpdFdpZGdldHMvcXdlYnBhZ2UuaD4KICNp
bmNsdWRlIDxRdFdpZGdldHMvcWdyYXBoaWNzd2lkZ2V0Lmg+CiAKICNpZiAhZGVmaW5lZChRVF9O
T19HUkFQSElDU1ZJRVcpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vidmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnZpZXcu
Y3BwCShyZXZpc2lvbiAxNDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vi
dmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyOCw2ICs3MjgsMTIgQEAgYm9vbCBRV2ViVmll
dzo6ZXZlbnQoUUV2ZW50ICplKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0g
ZWxzZSBpZiAoZS0+dHlwZSgpID09IFFFdmVudDo6TGVhdmUpCiAgICAgICAgICAgICBkLT5wYWdl
LT5ldmVudChlKTsKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICAgICAgZWxz
ZSBpZiAoKGUtPnR5cGUoKSA9PSBRRXZlbnQ6OlNob3cpIHx8IChlLT50eXBlKCkgPT0gUUV2ZW50
OjpXaW5kb3dBY3RpdmF0ZSkpCisgICAgICAgICAgICBkLT5wYWdlLT5kLT5zZXRWaXNpYmlsaXR5
U3RhdGUoUVdlYlBhZ2VQcml2YXRlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSwgZmFsc2Up
OworICAgICAgICBlbHNlIGlmICgoZS0+dHlwZSgpID09IFFFdmVudDo6SGlkZSkgfHwgKGUtPnR5
cGUoKSA9PSBRRXZlbnQ6OldpbmRvd0RlYWN0aXZhdGUpKQorICAgICAgICAgICAgZC0+cGFnZS0+
ZC0+c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlUHJpdmF0ZTo6UGFnZVZpc2liaWxpdHlTdGF0
ZUhpZGRlbiwgZmFsc2UpOworI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIFFXaWRnZXQ6OmV2
ZW50KGUpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Rz
dF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L3Rl
c3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3BwCShyZXZpc2lvbiAx
NDMzMDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3Fn
cmFwaGljc3dlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0MywxMCBAQCBwcml2
YXRlIFFfU0xPVFM6CiAgICAgdm9pZCB3aWRnZXRzUmVuZGVyaW5nVGhyb3VnaENhY2hlKCk7CiAg
ICAgdm9pZCB3aW5kb3dSZXNpemVFdmVudCgpOwogICAgIHZvaWQgaG9yaXpvbnRhbFNjcm9sbGJh
clRlc3QoKTsKLQorICAgIHZvaWQgdmlzaWJpbGl0eUFwaU9uVmlzaWJsZVNjZW5lKCk7CisgICAg
dm9pZCB2aXNpYmlsaXR5QXBpT25IaWRkZW5TY2VuZSgpOworICAgIHZvaWQgdmlzaWJpbGl0eUFw
aU9uSGlkZGVuU2NlbmVXaXRoSGlkZGVuVmlldygpOworICAgIHZvaWQgdmlzaWJpbGl0eUFwaU9u
VmlzaWJsZVNjZW5lV2l0aEhpZGRlblZpZXcoKTsKICNpZiAhKGRlZmluZWQoV1RGX1VTRV9RVF9N
T0JJTEVfVEhFTUUpICYmIFdURl9VU0VfUVRfTU9CSUxFX1RIRU1FKQogICAgIHZvaWQgc2V0UGFs
ZXR0ZV9kYXRhKCk7CiAgICAgdm9pZCBzZXRQYWxldHRlKCk7CkBAIC0xMjYsNiArMTI5LDYxNyBA
QCBwdWJsaWM6CiAgICAgfQogfTsKIAordm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6dmlzaWJp
bGl0eUFwaU9uVmlzaWJsZVNjZW5lKCkKK3sKKyAgICBRR3JhcGhpY3NTY2VuZSBzY2VuZTsKKyAg
ICBRR3JhcGhpY3NWaWV3IHZpZXc7CisgICAgdmlldy5zZXRTY2VuZSgmc2NlbmUpOworICAgIFFH
cmFwaGljc1dlYlZpZXcqIHdlYlZpZXcgPSBuZXcgUUdyYXBoaWNzV2ViVmlldzsKKyAgICBRV2Vi
UGFnZSogcGFnZSA9IG5ldyBRV2ViUGFnZTsKKyAgICBRVmFyaWFudCBzdGF0ZUJvb2wsIHN0YXRl
U3RyaW5nLCBjcHQ7CisgICAgaW50IHdhaXRGb3JFdmVudCA9IDU7CisKKyAgICB3ZWJWaWV3LT5z
ZXRQYWdlKHBhZ2UpOworICAgIHdlYlZpZXctPmxvYWQoUVVybCgiZGF0YTp0ZXh0L2h0bWwsPGh0
bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+IikpOworCisgICAgUVZFUklGWSh3
YWl0Rm9yU2lnbmFsKHdlYlZpZXcsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKSk7CisKKyAg
ICB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBz
dGF0ZUJvb2wgPSB1bmRlZmluZWQsIHN0YXRlU3RyaW5nID0gdW5kZWZpbmVkLCBjcHQgPSAwOyB2
YXIgdmlzaWJpbGl0eUNhbGxCYWNrID0gZnVuY3Rpb24gKCkge3N0YXRlQm9vbCA9IGRvY3VtZW50
Wyd3ZWJraXRIaWRkZW4nXTsgc3RhdGVTdHJpbmcgPSBkb2N1bWVudFsnd2Via2l0VmlzaWJpbGl0
eVN0YXRlJ107IGNwdCsrO307ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0dmlzaWJp
bGl0eWNoYW5nZScsIHZpc2liaWxpdHlDYWxsQmFjaywgZmFsc2UpOyIpOworCisgICAgLyogc2hv
dWxkIGJlIGluaXRpYWxpc2VkIHRvIGhpZGRlbiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXct
PnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0
SGlkZGVuIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29s
ICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdl
KCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdFZpc2li
aWxpdHlTdGF0ZSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50
OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7
CisKKyAgICB3ZWJWaWV3LT5oaWRlKCk7CisgICAgd2ViVmlldy0+c2hvdygpOworICAgIFFUZXN0
OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogc2hvdWxkIHN0YXkgdG8gaGlkZGVuIGFu
ZCBubyBldmVudCBzZW50IGJlY2F1c2Ugbm8gc2NlbmUgYm91bmQgKi8KKyAgICBzdGF0ZUJvb2wg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3Vt
ZW50LndlYmtpdEhpZGRlbiIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFy
aWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2Vi
Vmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53
ZWJraXRWaXNpYmlsaXR5U3RhdGUiKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9
PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygi
aGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1
YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50
OjpEb3VibGUgJiYgIWNwdC50b0RvdWJsZSgpKTsKKworICAgIHZpZXcuc2hvdygpOworICAgIFFU
ZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcpOworCisgICAgLyogc2hvdWxkIHN0YXkg
dG8gaGlkZGVuIGJlY2F1c2Ugd2ViVmlldyBpc24ndCBhZGRlZCB0byB0aGUgc2NlbmUgYW5kIG5v
IGV2ZW50IHNlbnQgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdEhpZGRlbiIpOworICAgIFFW
RVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9C
b29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUiKTsKKyAg
ICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRl
U3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZp
ZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAg
UVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgIWNwdC50b0RvdWJsZSgp
KTsKKworICAgIHNjZW5lLmFkZEl0ZW0od2ViVmlldyk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRG
b3JFdmVudCk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVkIGFu
ZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5ICovCisg
ICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZh
cmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3
ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3Ry
aW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmlu
ZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInZpc2libGUiKSk7CisgICAg
Y3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJj
cHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQu
dG9Eb3VibGUoKSA9PSAxKTsKKworICAgIHZpZXcuaGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCh3
YWl0Rm9yRXZlbnQpOworCisgICAgLyogY2hlY2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJl
ZCBhbmQgdmlzaWJpbGl0eSBwcm9wZXJ0aWVzIGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAq
LworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRl
SmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09
IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRl
U3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0
cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAg
ICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
ImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNw
dC50b0RvdWJsZSgpID09IDIpOworCisgICAgd2ViVmlldy0+aGlkZSgpOworICAgIFFUZXN0Ojpx
V2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAoc2NlbmUgaXMgYWxy
ZWFkeSBoaWRkZW4pIC0+IGNwdCBzaG91bGQgYmUgZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJv
b2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0
YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9v
bCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFn
ZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAg
IFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVT
dHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmll
dy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBR
VkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9
PSAyKTsKKworICAgIHdlYlZpZXctPnNob3coKTsKKyAgICBRVGVzdDo6cVdhaXQod2FpdEZvckV2
ZW50KTsKKworICAgIC8qIG5vIGV2ZW50IHNlbnQgIChzY2VuZSBpcyBoaWRkZW4pIC0+IGNwdCBz
aG91bGQgYmUgZXF1YWxzIHRvIDIgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJ
Rlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29s
KCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcu
dHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBR
U3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0g
UVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAgIHdlYlZpZXct
PmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQod2FpdEZvckV2ZW50KTsKKworICAgIC8qIG5vIGV2
ZW50IHNlbnQgKHNjZW5lIGlzIGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAq
LworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRl
SmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09
IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRl
U3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0
cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAg
ICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
ImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNw
dC50b0RvdWJsZSgpID09IDIpOworCisgICAgdmlldy5zaG93KCk7CisgICAgUVRlc3Q6OnFXYWl0
Rm9yV2luZG93RXhwb3NlZCgmdmlldyk7CisKKyAgICAvKiBubyBldmVudCBzZW50ICh3ZWJWaWV3
IGlzIGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAgIHN0YXRlQm9v
bCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3Rh
dGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29s
ICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdl
KCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAg
UVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0
cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFW
RVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09
IDIpOworCisgICAgd2ViVmlldy0+c2hvdygpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZl
bnQpOworCisgICAgLyogY2hlY2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgdmlz
aWJpbGl0eSBwcm9wZXJ0aWVzIGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseSAqLworICAgIHN0
YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50
OjpCb29sICYmICFzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmll
dy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIp
OworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYg
c3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9
IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7
CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91
YmxlKCkgPT0gMyk7CisKKyAgICB3ZWJWaWV3LT5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0KHdh
aXRGb3JFdmVudCk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVk
IGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5ICov
CisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0g
UVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9
IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVT
dHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3Ry
aW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAg
IGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgi
Y3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0
LnRvRG91YmxlKCkgPT0gNCk7CisKKyAgICB2aWV3LmhpZGUoKTsKKyAgICBRVGVzdDo6cVdhaXQo
d2FpdEZvckV2ZW50KTsKKworICAgIC8qIG5vIGV2ZW50IHNlbnQgKHdlYlZpZXcgaXMgaGlkZGVu
KSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFscyB0byA0ICovCisgICAgc3RhdGVCb29sID0gd2ViVmll
dy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsK
KyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVC
b29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0
YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3Ry
aW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+
bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQu
dHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gNCk7Cit9CisK
K3ZvaWQgdHN0X1FHcmFwaGljc1dlYlZpZXc6OnZpc2liaWxpdHlBcGlPbkhpZGRlblNjZW5lKCkK
K3sKKyAgICBRR3JhcGhpY3NTY2VuZSBzY2VuZTsKKyAgICBRR3JhcGhpY3NWaWV3IHZpZXc7Cisg
ICAgdmlldy5zZXRTY2VuZSgmc2NlbmUpOworICAgIFFHcmFwaGljc1dlYlZpZXcqIHdlYlZpZXcg
PSBuZXcgUUdyYXBoaWNzV2ViVmlldzsKKyAgICBRV2ViUGFnZSogcGFnZSA9IG5ldyBRV2ViUGFn
ZTsKKyAgICBRVmFyaWFudCBzdGF0ZUJvb2wsIHN0YXRlU3RyaW5nLCBjcHQ7CisgICAgaW50IHdh
aXRGb3JFdmVudCA9IDU7CisKKyAgICB3ZWJWaWV3LT5zZXRQYWdlKHBhZ2UpOworICAgIHdlYlZp
ZXctPmxvYWQoUVVybCgiZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5Pjwv
Ym9keT48L2h0bWw+IikpOworCisgICAgUVZFUklGWSh3YWl0Rm9yU2lnbmFsKHdlYlZpZXcsIFNJ
R05BTChsb2FkRmluaXNoZWQoYm9vbCkpKSk7CisKKyAgICB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBzdGF0ZUJvb2wgPSB1bmRlZmluZWQsIHN0
YXRlU3RyaW5nID0gdW5kZWZpbmVkLCBjcHQgPSAwOyB2YXIgdmlzaWJpbGl0eUNhbGxCYWNrID0g
ZnVuY3Rpb24gKCkge3N0YXRlQm9vbCA9IGRvY3VtZW50Wyd3ZWJraXRIaWRkZW4nXTsgc3RhdGVT
dHJpbmcgPSBkb2N1bWVudFsnd2Via2l0VmlzaWJpbGl0eVN0YXRlJ107IGNwdCsrO307ZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0dmlzaWJpbGl0eWNoYW5nZScsIHZpc2liaWxpdHlD
YWxsQmFjaywgZmFsc2UpOyIpOworCisgICAgLyogc2hvdWxkIGJlIGluaXRpYWxpc2VkIHRvIGhp
ZGRlbiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0SGlkZGVuIik7CisgICAgUVZFUklGWShz
dGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7
CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0
ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSIpOworICAgIFFWRVJJ
Rlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcu
dG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisKKyAgICBzY2VuZS5hZGRJdGVtKHdl
YlZpZXcpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogc2hvdWxk
IHN0YXkgdG8gaGlkZGVuIGFuZCBubyBldmVudCBzZW50IGJlY2F1c2Ugc2NlbmUgaXMgaGlkZGVu
ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRIaWRkZW4iKTsKKyAgICBRVkVSSUZZKHN0YXRl
Qm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAg
ICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0VmlzaWJpbGl0eVN0YXRlIik7CisgICAgUVZFUklGWShz
dGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0
cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0
LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmICFjcHQudG9Eb3VibGUoKSk7CisKKyAgICB3
ZWJWaWV3LT5oaWRlKCk7CisgICAgd2ViVmlldy0+c2hvdygpOworICAgIFFUZXN0OjpxV2FpdCh3
YWl0Rm9yRXZlbnQpOworCisgICAgLyogc2hvdWxkIHN0YXkgdG8gaGlkZGVuIGFuZCBubyBldmVu
dCBzZW50IGJlY2F1c2Ugc2NlbmUgaXMgaGlkZGVuICovCisgICAgc3RhdGVCb29sID0gd2ViVmll
dy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJr
aXRIaWRkZW4iKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJv
b2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0Vmlz
aWJpbGl0eVN0YXRlIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlh
bnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIp
KTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91Ymxl
ICYmICFjcHQudG9Eb3VibGUoKSk7CisKKyAgICB2aWV3LnNob3coKTsKKyAgICBRVGVzdDo6cVdh
aXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3KTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZlbnQg
aGFzIGJlZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRl
ZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVC
b29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiAhc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAg
ICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9
PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygi
dmlzaWJsZSIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFu
dDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDEpOworCisgICAgdmlldy5oaWRlKCk7Cisg
ICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2
ZW50IGhhcyBiZWVuIGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVw
ZGF0ZWQgY29ycmVjdGx5ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0
YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsK
KyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRl
SmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUo
KSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmlu
ZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJp
YW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5oaWRl
KCk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBubyBldmVudCBz
ZW50IChzY2VuZSBpcyBhbHJlYWR5IGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8g
MiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1
YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgp
ID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJp
bmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0
YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6
OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsK
KyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYm
IGNwdC50b0RvdWJsZSgpID09IDIpOworCisgICAgd2ViVmlldy0+c2hvdygpOworICAgIFFUZXN0
OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAgKHNjZW5lIGlz
IGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAgIHN0YXRlQm9vbCA9
IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVC
b29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYm
IHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZF
UklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmlu
Zy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5w
YWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJ
RlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIp
OworCisgICAgd2ViVmlldy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQp
OworCisgICAgLyogbm8gZXZlbnQgc2VudCAoc2NlbmUgaXMgaGlkZGVuKSAtPiBjcHQgc2hvdWxk
IGJlIGVxdWFscyB0byAyICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0
YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsK
KyAgICBzdGF0ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRl
SmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUo
KSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmlu
ZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJp
YW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB2aWV3LnNob3coKTsK
KyAgICBRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3KTsKKworICAgIC8qIG5vIGV2
ZW50IHNlbnQgKHdlYlZpZXcgaXMgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFscyB0byAy
ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkg
PT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmlu
ZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3Rh
dGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6
U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOwor
ICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYg
Y3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5zaG93KCk7CisgICAgUVRlc3Q6
OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBi
ZWVuIGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29y
cmVjdGx5ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50
eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3Rh
dGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZh
cmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInZpc2li
bGUiKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRv
dWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAzKTsKKworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAg
ICBRVGVzdDo6cVdhaXQod2FpdEZvckV2ZW50KTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZl
bnQgaGFzIGJlZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBk
YXRlZCBjb3JyZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3Rh
dGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOwor
ICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgp
ID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5n
KCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSA0KTsKKworICAgIHZpZXcuaGlkZSgpOwor
ICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAo
d2ViVmlldyBpcyBoaWRkZW4pIC0+IGNwdCBzaG91bGQgYmUgZXF1YWxzIHRvIDQgKi8KKyAgICBz
dGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFu
dDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmll
dy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIp
OworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYg
c3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0g
d2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsK
KyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3Vi
bGUoKSA9PSA0KTsKK30KKwordm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6dmlzaWJpbGl0eUFw
aU9uVmlzaWJsZVNjZW5lV2l0aEhpZGRlblZpZXcoKQoreworICAgIFFHcmFwaGljc1NjZW5lIHNj
ZW5lOworICAgIFFHcmFwaGljc1ZpZXcgdmlldzsKKyAgICB2aWV3LnNldFNjZW5lKCZzY2VuZSk7
CisgICAgUUdyYXBoaWNzV2ViVmlldyogd2ViVmlldyA9IG5ldyBRR3JhcGhpY3NXZWJWaWV3Owor
ICAgIFFXZWJQYWdlKiBwYWdlID0gbmV3IFFXZWJQYWdlOworICAgIFFWYXJpYW50IHN0YXRlQm9v
bCwgc3RhdGVTdHJpbmcsIGNwdDsKKyAgICBpbnQgd2FpdEZvckV2ZW50ID0gNTsKKworICAgIHdl
YlZpZXctPnNldFBhZ2UocGFnZSk7CisgICAgd2ViVmlldy0+bG9hZChRVXJsKCJkYXRhOnRleHQv
aHRtbCw8aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iKSk7CisKKyAgICBR
VkVSSUZZKHdhaXRGb3JTaWduYWwod2ViVmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkp
KTsKKworICAgIHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgidmFyIHN0YXRlQm9vbCA9IHVuZGVmaW5lZCwgc3RhdGVTdHJpbmcgPSB1bmRlZmluZWQsIGNw
dCA9IDA7IHZhciB2aXNpYmlsaXR5Q2FsbEJhY2sgPSBmdW5jdGlvbiAoKSB7c3RhdGVCb29sID0g
ZG9jdW1lbnRbJ3dlYmtpdEhpZGRlbiddOyBzdGF0ZVN0cmluZyA9IGRvY3VtZW50Wyd3ZWJraXRW
aXNpYmlsaXR5U3RhdGUnXTsgY3B0Kys7fTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd3ZWJr
aXR2aXNpYmlsaXR5Y2hhbmdlJywgdmlzaWJpbGl0eUNhbGxCYWNrLCBmYWxzZSk7Iik7CisKKyAg
ICAvKiBzaG91bGQgYmUgaW5pdGlhbGlzZWQgdG8gaGlkZGVuICovCisgICAgc3RhdGVCb29sID0g
d2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVu
dC53ZWJraXRIaWRkZW4iKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZp
ZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQud2Vi
a2l0VmlzaWJpbGl0eVN0YXRlIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0g
UVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhp
ZGRlbiIpKTsKKworICAgIC8qIGJ5IGRlZmF1bHQgd2ViVmlldyBpcyB2aXNpYmxlICovCisgICAg
d2ViVmlldy0+aGlkZSgpOworICAgIHdlYlZpZXctPnNob3coKTsKKyAgICB3ZWJWaWV3LT5oaWRl
KCk7CisgICAgUVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBzaG91bGQgc3Rh
eSB0byBoaWRkZW4gYW5kIG5vIGV2ZW50IHNlbnQgYmVjYXVzZSBubyBzY2VuZSBib3VuZCAqLwor
ICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0SGlkZGVuIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wu
dHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3Rh
dGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoImRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSIpOworICAgIFFWRVJJRlkoc3RhdGVT
dHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmco
KSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBl
KCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiAhY3B0LnRvRG91YmxlKCkpOworCisgICAgdmlldy5z
aG93KCk7CisgICAgUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmdmlldyk7CisKKyAgICAv
KiBzaG91bGQgc3RheSB0byBoaWRkZW4gYW5kIG5vIGV2ZW50IHNlbnQgYmVjYXVzZSBubyBzY2Vu
ZSBib3VuZCAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCkt
PmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQud2Via2l0SGlkZGVuIik7CisgICAgUVZFUklG
WShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2wo
KSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSIpOworICAgIFFW
RVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJp
bmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+
cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVS
SUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiAhY3B0LnRvRG91YmxlKCkpOwor
CisKKyAgICBzY2VuZS5hZGRJdGVtKHdlYlZpZXcpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9y
RXZlbnQpOworCisgICAgLyogc2hvdWxkIHN0YXkgdG8gaGlkZGVuIGFuZCBubyBldmVudCBzZW50
IGJlY2F1c2Ugd2ViVmlldyBpcyBoaWRkZW4gKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5w
YWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdEhp
ZGRlbiIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAm
JiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgp
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRWaXNpYmls
aXR5U3RhdGUiKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6
U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOwor
ICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYg
IWNwdC50b0RvdWJsZSgpKTsKKworICAgIHdlYlZpZXctPnNob3coKTsKKyAgICBRVGVzdDo6cVdh
aXQod2FpdEZvckV2ZW50KTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4g
ZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0
bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUo
KSA9PSBRVmFyaWFudDo6Qm9vbCAmJiAhc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0
cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgi
c3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFu
dDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygidmlzaWJsZSIp
KTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91Ymxl
ICYmIGNwdC50b0RvdWJsZSgpID09IDEpOworCisgICAgdmlldy5oaWRlKCk7CisgICAgUVRlc3Q6
OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBi
ZWVuIGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29y
cmVjdGx5ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50
eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0
ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFy
aWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVu
IikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3Vi
bGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5oaWRlKCk7CisgICAg
UVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBubyBldmVudCBzZW50IChzY2Vu
ZSBpcyBhbHJlYWR5IGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAg
IHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJp
YW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJW
aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5n
Iik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAm
JiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIp
OworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0Rv
dWJsZSgpID09IDIpOworCisgICAgd2ViVmlldy0+c2hvdygpOworICAgIFFUZXN0OjpxV2FpdCh3
YWl0Rm9yRXZlbnQpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAgKHNjZW5lIGlzIGhpZGRlbikg
LT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXct
PnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7Cisg
ICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9v
bC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0
ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmlu
ZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1h
aW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5
cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIpOworCisgICAg
d2ViVmlldy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAg
Lyogbm8gZXZlbnQgc2VudCAoc2NlbmUgaXMgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFs
cyB0byAyICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50
eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0
ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFy
aWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVu
IikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3Vi
bGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB2aWV3LnNob3coKTsKKyAgICBRVGVz
dDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3KTsKKworICAgIC8qIG5vIGV2ZW50IHNlbnQg
KHdlYlZpZXcgaXMgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFscyB0byAyICovCisgICAg
c3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2Ny
aXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZp
ZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmci
KTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYm
IHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9
IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7
CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91
YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5zaG93KCk7CisgICAgUVRlc3Q6OnFXYWl0KHdh
aXRGb3JFdmVudCk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVk
IGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5ICov
CisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0g
UVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRl
U3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0
cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInZpc2libGUiKSk7Cisg
ICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBj
cHQudG9Eb3VibGUoKSA9PSAzKTsKKworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAgICBRVGVzdDo6
cVdhaXQod2FpdEZvckV2ZW50KTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJl
ZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3Jy
ZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5
cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRl
U3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJp
YW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4i
KSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJs
ZSAmJiBjcHQudG9Eb3VibGUoKSA9PSA0KTsKKworICAgIHZpZXcuaGlkZSgpOworICAgIFFUZXN0
OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAod2ViVmlldyBp
cyBoaWRkZW4pIC0+IGNwdCBzaG91bGQgYmUgZXF1YWxzIHRvIDQgKi8KKyAgICBzdGF0ZUJvb2wg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRl
Qm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAm
JiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgp
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFW
RVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJp
bmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+
cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVS
SUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSA0
KTsKK30KKwordm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6dmlzaWJpbGl0eUFwaU9uSGlkZGVu
U2NlbmVXaXRoSGlkZGVuVmlldygpCit7CisgICAgUUdyYXBoaWNzU2NlbmUgc2NlbmU7CisgICAg
UUdyYXBoaWNzVmlldyB2aWV3OworICAgIHZpZXcuc2V0U2NlbmUoJnNjZW5lKTsKKyAgICBRR3Jh
cGhpY3NXZWJWaWV3KiB3ZWJWaWV3ID0gbmV3IFFHcmFwaGljc1dlYlZpZXc7CisgICAgUVdlYlBh
Z2UqIHBhZ2UgPSBuZXcgUVdlYlBhZ2U7CisgICAgUVZhcmlhbnQgc3RhdGVCb29sLCBzdGF0ZVN0
cmluZywgY3B0OworICAgIGludCB3YWl0Rm9yRXZlbnQgPSA1OworCisgICAgd2ViVmlldy0+c2V0
UGFnZShwYWdlKTsKKyAgICB3ZWJWaWV3LT5sb2FkKFFVcmwoImRhdGE6dGV4dC9odG1sLDxodG1s
PjxoZWFkPjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiIpKTsKKworICAgIFFWRVJJRlkod2Fp
dEZvclNpZ25hbCh3ZWJWaWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOworCisgICAg
d2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ2YXIgc3Rh
dGVCb29sID0gdW5kZWZpbmVkLCBzdGF0ZVN0cmluZyA9IHVuZGVmaW5lZCwgY3B0ID0gMDsgdmFy
IHZpc2liaWxpdHlDYWxsQmFjayA9IGZ1bmN0aW9uICgpIHtzdGF0ZUJvb2wgPSBkb2N1bWVudFsn
d2Via2l0SGlkZGVuJ107IHN0YXRlU3RyaW5nID0gZG9jdW1lbnRbJ3dlYmtpdFZpc2liaWxpdHlT
dGF0ZSddOyBjcHQrKzt9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdHZpc2liaWxp
dHljaGFuZ2UnLCB2aXNpYmlsaXR5Q2FsbEJhY2ssIGZhbHNlKTsiKTsKKworICAgIC8qIHNob3Vs
ZCBiZSBpbml0aWFsaXNlZCB0byBoaWRkZW4gKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5w
YWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdEhp
ZGRlbiIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAm
JiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgp
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRWaXNpYmls
aXR5U3RhdGUiKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6
U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOwor
CisgICAgLyogYnkgZGVmYXVsdCB3ZWJWaWV3IGlzIHZpc2libGUgKi8KKyAgICB3ZWJWaWV3LT5o
aWRlKCk7CisgICAgd2ViVmlldy0+c2hvdygpOworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAgICBR
VGVzdDo6cVdhaXQod2FpdEZvckV2ZW50KTsKKworICAgIC8qIHNob3VsZCBzdGF5IHRvIGhpZGRl
biBhbmQgbm8gZXZlbnQgc2VudCBiZWNhdXNlIG5vIHNjZW5lIGJvdW5kICovCisgICAgc3RhdGVC
b29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJk
b2N1bWVudC53ZWJraXRIaWRkZW4iKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0g
UVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9
IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1l
bnQud2Via2l0VmlzaWJpbGl0eVN0YXRlIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBl
KCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJp
bmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFy
aWFudDo6RG91YmxlICYmICFjcHQudG9Eb3VibGUoKSk7CisKKyAgICBzY2VuZS5hZGRJdGVtKHdl
YlZpZXcpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogc2hvdWxk
IHN0YXkgdG8gaGlkZGVuIGFuZCBubyBldmVudCBzZW50IGJlY2F1c2Ugd2ViVmlldyBpcyBoaWRk
ZW4gKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdEhpZGRlbiIpOworICAgIFFWRVJJRlkoc3Rh
dGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOwor
ICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUiKTsKKyAgICBRVkVSSUZZ
KHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRv
U3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShj
cHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgIWNwdC50b0RvdWJsZSgpKTsKKworICAg
IHZpZXcuc2hvdygpOworICAgIFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcpOwor
CisgICAgLyogc2hvdWxkIHN0YXkgdG8gaGlkZGVuIGFuZCBubyBldmVudCBzZW50IGJlY2F1c2Ug
d2ViVmlldyBpcyBoaWRkZW4gKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1h
aW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LndlYmtpdEhpZGRlbiIpOwor
ICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJv
b2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUi
KTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYm
IHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9
IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7
CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgIWNwdC50b0Rv
dWJsZSgpKTsKKworICAgIHdlYlZpZXctPnNob3coKTsKKyAgICBRVGVzdDo6cVdhaXQod2FpdEZv
ckV2ZW50KTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYW5k
IHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkgKi8KKyAg
ICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFy
aWFudDo6Qm9vbCAmJiAhc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdl
YlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJp
bmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5n
ICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygidmlzaWJsZSIpKTsKKyAgICBj
cHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNw
dCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50
b0RvdWJsZSgpID09IDEpOworCisgICAgdmlldy5oaWRlKCk7CisgICAgUVRlc3Q6OnFXYWl0Rm9y
V2luZG93RXhwb3NlZCgmdmlldyk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBi
ZWVuIGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29y
cmVjdGx5ICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50
eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0
ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFy
aWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVu
IikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3Vi
bGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5oaWRlKCk7CisgICAg
UVRlc3Q6OnFXYWl0KHdhaXRGb3JFdmVudCk7CisKKyAgICAvKiBubyBldmVudCBzZW50IChzY2Vu
ZSBpcyBhbHJlYWR5IGhpZGRlbikgLT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAg
IHN0YXRlQm9vbCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJp
YW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJW
aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5n
Iik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAm
JiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIp
OworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0Rv
dWJsZSgpID09IDIpOworCisgICAgd2ViVmlldy0+c2hvdygpOworICAgIFFUZXN0OjpxV2FpdCh3
YWl0Rm9yRXZlbnQpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAgKHNjZW5lIGlzIGhpZGRlbikg
LT4gY3B0IHNob3VsZCBiZSBlcXVhbHMgdG8gMiAqLworICAgIHN0YXRlQm9vbCA9IHdlYlZpZXct
PnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7Cisg
ICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9v
bC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0
ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmlu
ZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSB3ZWJWaWV3LT5wYWdlKCktPm1h
aW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5
cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIpOworCisgICAg
d2ViVmlldy0+aGlkZSgpOworICAgIFFUZXN0OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAg
Lyogbm8gZXZlbnQgc2VudCAoc2NlbmUgaXMgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFs
cyB0byAyICovCisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50
eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0
ZVN0cmluZyA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFy
aWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVu
IikpOworICAgIGNwdCA9IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3Vi
bGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICB2aWV3LnNob3coKTsKKyAgICBRVGVz
dDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3KTsKKworICAgIC8qIG5vIGV2ZW50IHNlbnQg
KHdlYlZpZXcgaXMgaGlkZGVuKSAtPiBjcHQgc2hvdWxkIGJlIGVxdWFscyB0byAyICovCisgICAg
c3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2Ny
aXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHdlYlZp
ZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmci
KTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYm
IHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9
IHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7
CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91
YmxlKCkgPT0gMik7CisKKyAgICB3ZWJWaWV3LT5zaG93KCk7CisgICAgUVRlc3Q6OnFXYWl0KHdh
aXRGb3JFdmVudCk7CisKKyAgICAvKiBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVk
IGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5ICov
CisgICAgc3RhdGVCb29sID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0g
UVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRl
U3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0
cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInZpc2libGUiKSk7Cisg
ICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBj
cHQudG9Eb3VibGUoKSA9PSAzKTsKKworICAgIHdlYlZpZXctPmhpZGUoKTsKKyAgICBRVGVzdDo6
cVdhaXQod2FpdEZvckV2ZW50KTsKKworICAgIC8qIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJl
ZW4gZmlyZWQgYW5kIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3Jy
ZWN0bHkgKi8KKyAgICBzdGF0ZUJvb2wgPSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5
cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRl
U3RyaW5nID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJp
YW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4i
KSk7CisgICAgY3B0ID0gd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJs
ZSAmJiBjcHQudG9Eb3VibGUoKSA9PSA0KTsKKworICAgIHZpZXcuaGlkZSgpOworICAgIFFUZXN0
OjpxV2FpdCh3YWl0Rm9yRXZlbnQpOworCisgICAgLyogbm8gZXZlbnQgc2VudCAod2ViVmlldyBp
cyBoaWRkZW4pIC0+IGNwdCBzaG91bGQgYmUgZXF1YWxzIHRvIDQgKi8KKyAgICBzdGF0ZUJvb2wg
PSB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRl
Qm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAm
JiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gd2ViVmlldy0+cGFnZSgp
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFW
RVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJp
bmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gd2ViVmlldy0+
cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVS
SUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSA0
KTsKK30KKwogdm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6Y3Jhc2hPblZpZXdsZXNzV2ViUGFn
ZXMoKQogewogICAgIFFHcmFwaGljc1NjZW5lIHNjZW5lOwpJbmRleDogU291cmNlL1dlYktpdC9x
dC90ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcAkocmV2aXNpb24gMTQzMzAz
KQorKysgU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw4IEBAIHByaXZhdGUgUV9TTE9UUzoKICAgICB2b2lk
IHNldFBhbGV0dGVfZGF0YSgpOwogICAgIHZvaWQgc2V0UGFsZXR0ZSgpOwogI2VuZGlmCisKKyAg
ICB2b2lkIHZpc2liaWxpdHlBcGkoKTsKIH07CiAKIC8vIFRoaXMgd2lsbCBiZSBjYWxsZWQgYmVm
b3JlIHRoZSBmaXJzdCB0ZXN0IGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLgpAQCAtNTE4LDYgKzUyMCw0
MiBAQCB2b2lkIHRzdF9RV2ViVmlldzo6cmVuZGVyaW5nQWZ0ZXJNYXhBbmRCCiAgICAgUUNPTVBB
UkUoaW1hZ2UzLCByZWZlcmVuY2UzKTsKIH0KIAordm9pZCB0c3RfUVdlYlZpZXc6OnZpc2liaWxp
dHlBcGkoKQoreworICAgIFFVcmwgdXJsID0gUVVybCgiZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGhl
YWQ+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+Iik7CisKKyAgICBRV2ViVmlldyB2aWV3Owor
ICAgIFFWYXJpYW50IHN0YXRlQm9vbCwgc3RhdGVTdHJpbmcsIGNwdDsKKyAgICB2aWV3LnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmxvYWQodXJsKTsKKyAgICBRVkVSSUZZKHdhaXRGb3JTaWduYWwoJnZp
ZXcsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKSk7CisgICAgdmlldy5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBzdGF0ZUJvb2wgPSB1bmRlZmluZWQsIHN0
YXRlU3RyaW5nID0gdW5kZWZpbmVkLCBjcHQgPSAwOyB2YXIgdmlzaWJpbGl0eUNhbGxCYWNrID0g
ZnVuY3Rpb24gKCkge3N0YXRlQm9vbCA9IGRvY3VtZW50Wyd3ZWJraXRIaWRkZW4nXTsgc3RhdGVT
dHJpbmcgPSBkb2N1bWVudFsnd2Via2l0VmlzaWJpbGl0eVN0YXRlJ107IGNwdCsrO307ZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0dmlzaWJpbGl0eWNoYW5nZScsIHZpc2liaWxpdHlD
YWxsQmFjaywgZmFsc2UpOyIpOworCisgICAgLyogc2hvdWxkIGJlIGluaXRpYWxpc2VkIHRvIGhp
ZGRlbiAqLworICAgIHN0YXRlQm9vbCA9IHZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRIaWRkZW4iKTsKKyAgICBRVkVSSUZZKHN0YXRl
Qm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAg
ICBzdGF0ZVN0cmluZyA9IHZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2Ny
aXB0KCJkb2N1bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUiKTsKKyAgICBRVkVSSUZZKHN0YXRl
U3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5n
KCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworCisgICAgdmlldy5zaG93KCk7CisKKyAgICAvKiBj
aGVjayBpZiBhIEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVkIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRp
ZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5ICovCisgICAgc3RhdGVCb29sID0gdmlldy5w
YWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAg
IFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiAhc3RhdGVCb29s
LnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IHZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJp
bmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9
PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IHZpZXcucGFnZSgpLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0g
UVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAxKTsKKworICAgIHZpZXcuaGlk
ZSgpOworCisgICAgc3RhdGVCb29sID0gdmlldy5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0
ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9
PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5n
ID0gdmlldy5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3Ry
aW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmlu
ZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBj
cHQgPSB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7
CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91
YmxlKCkgPT0gMik7Cit9CisKIFFURVNUX01BSU4odHN0X1FXZWJWaWV3KQogI2luY2x1ZGUgInRz
dF9xd2Vidmlldy5tb2MiCiAK
</data>
<flag name="review"
          id="209698"
          type_id="1"
          status="-"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="209699"
          type_id="3"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192436</attachid>
            <date>2013-03-11 04:04:17 -0700</date>
            <delta_ts>2013-03-14 10:59:29 -0700</delta_ts>
            <desc>[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView</desc>
            <filename>patch_109422-12.patch</filename>
            <type>text/plain</type>
            <size>4805</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDUzNTIpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAzLTExICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpzZXRQYWdlVmlzaWJsZSk6CisgICAgICAgIChRV2Vi
UGFnZUFkYXB0ZXI6OmluaXRpYWxpemVXZWJDb3JlUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmg6CisgICAgICAgICogV2lkZ2V0QXBpL3FncmFwaGljc3dl
YnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6ZXZlbnQpOgorICAgICAgICAq
IFdpZGdldEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6ZXZlbnQpOgorCiAy
MDEzLTAzLTA4ICBBcnVucHJhc2FkIFJhamt1bWFyICA8YXJ1bnByYXNhZHJAbmRzLmNvbT4KIAog
ICAgICAgICBbUXRdIFFXZWJTZXR0aW5nczo6Y2xlYXJNZW1vcnlDYWNoZXMgc2hvdWxkIHJlbGVh
c2UgRmFzdE1hbGxvYydzIGZyZWUgcGFnZXMgdG8gT1MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAJKHJldmlzaW9uIDE0
NTM1MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1NywyMCBAQCBzdGF0aWMgdm9pZCBvcGVu
TmV3V2luZG93KGNvbnN0IFFVcmwmIHVyCiAgICAgfQogfQogCit2b2lkIFFXZWJQYWdlQWRhcHRl
cjo6c2V0UGFnZVZpc2libGUoYm9vbCB2aXNpYmxlKQoreworICAgIC8qIGF1dG9tYXRpYyBjYWxs
ZWQgYnkgUVdlYlZpZXcgYW5kIFFHcmFwaGljc1dlYlZpZXcgKi8KKyAgICAvKiBvbiBoaWRlL3No
b3cvd2luZG93QWN0aXZhdGUvd2luZG93RGVhY3RpdmF0ZSBldmVudHMgKi8KKyNpZiBFTkFCTEUo
UEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAg
ICBwYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUodmlzaWJsZSA/IFdlYkNvcmU6OlBhZ2VWaXNpYmls
aXR5U3RhdGVWaXNpYmxlIDogV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbiwgZmFs
c2UpOworI2Vsc2UKKyAgICBRX1VOVVNFRCh2aXNpYmlsaXR5U3RhdGUpOworICAgIFFfVU5VU0VE
KGlzSW5pdGlhbFN0YXRlKTsKKyNlbmRpZgorfQorCiBRV2ViUGFnZUFkYXB0ZXI6OlFXZWJQYWdl
QWRhcHRlcigpCiAgICAgOiBzZXR0aW5ncygwKQogICAgICwgcGFnZSgwKQpAQCAtMTgzLDYgKzE5
Nyw5IEBAIHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjppbml0aWFsaXplV2ViQ29yZVAKICAgICBwYWdl
Q2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3IERyYWdDbGllbnRRdChwYWdlQ2xpZW50cy5jaHJvbWVD
bGllbnQpOwogICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBJbnNwZWN0b3JD
bGllbnRRdCh0aGlzKTsKICAgICBwYWdlID0gbmV3IFBhZ2UocGFnZUNsaWVudHMpOworI2lmIEVO
QUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIHBhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShX
ZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuLCB0cnVlKTsKKyNlbmRpZgogI2lmIEVO
QUJMRShHRU9MT0NBVElPTikKICAgICBpZiAodXNlTW9jaykgewogICAgICAgICAvLyBJbiBjYXNl
IHJ1bm5pbmcgaW4gRHVtcFJlbmRlclRyZWUgbW9kZSBzZXQgdGhlIGNvbnRyb2xsZXIgdG8gbW9j
ayBwcm92aWRlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBh
Z2VBZGFwdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RV2ViUGFnZUFkYXB0ZXIuaAkocmV2aXNpb24gMTQ1MzUxKQorKysgU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ0
LDYgKzI0NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5kU2V0Q3VycmVu
dENvbnRleHRNZW51KGNvbnN0IFFMaXN0PE1lbnVJdGVtRGVzY3JpcHRpb24+JiwgUUJpdEFycmF5
KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGxiYXJDb250ZXh0TWVudUV2ZW50
KFFDb250ZXh0TWVudUV2ZW50KiwgYm9vbCwgU2Nyb2xsRGlyZWN0aW9uKiwgU2Nyb2xsR3JhbnVs
YXJpdHkqKSA9IDA7CiAKKyAgICB2b2lkIHNldFBhZ2VWaXNpYmxlKGJvb2wpOworCiAgICAgc3Rh
dGljIFFXZWJQYWdlQWRhcHRlcioga2l0KFdlYkNvcmU6OlBhZ2UqKTsKICAgICBXZWJDb3JlOjpW
aWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50cygpIGNvbnN0OwogICAgIHZvaWQgcmVn
aXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuY3BwCShy
ZXZpc2lvbiAxNDUzNTEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3
ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA2LDYgKzQwNiwxNyBAQCBib29sIFFHcmFw
aGljc1dlYlZpZXc6OmV2ZW50KFFFdmVudCogZXZlCiAgICAgLy8gUmUtaW1wbGVtZW50ZWQgaW4g
b3JkZXIgdG8gYWxsb3dzIGZpeGluZyBldmVudC1yZWxhdGVkIGJ1Z3MgaW4gcGF0Y2ggcmVsZWFz
ZXMuCiAKICAgICBpZiAoZC0+cGFnZSkgeworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJ
KQorICAgICAgICBpZiAoKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpTaG93KSB8fCAoZXZlbnQt
PnR5cGUoKSA9PSBRRXZlbnQ6OldpbmRvd0FjdGl2YXRlKSkgeworICAgICAgICAgICAgLyogY2hh
bmdlIG9ubHkgaWYgdGhlIHNjZW5lIGV4aXN0IGFuZCBpdCdzIHZpc2libGUgKi8KKyAgICAgICAg
ICAgIGlmIChzY2VuZSgpICYmIHNjZW5lKCktPmlzQWN0aXZlKCkpCisgICAgICAgICAgICAgICAg
ZC0+cGFnZS0+ZC0+c2V0UGFnZVZpc2libGUodHJ1ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoKGV2
ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpIaWRlKSB8fCAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6
OldpbmRvd0RlYWN0aXZhdGUpKSB7CisgICAgICAgICAgICAvKiBjaGFuZ2Ugb25seSBpZiB0aGUg
c2NlbmUgZXhpc3QgKi8KKyAgICAgICAgICAgIGlmIChzY2VuZSgpKQorICAgICAgICAgICAgICAg
IGQtPnBhZ2UtPmQtPnNldFBhZ2VWaXNpYmxlKGZhbHNlKTsKKyAgICAgICAgfQorI2VuZGlmCiAg
ICAgICAgIGlmIChldmVudC0+dHlwZSgpID09IFFFdmVudDo6UGFsZXR0ZUNoYW5nZSkKICAgICAg
ICAgICAgIGQtPnBhZ2UtPnNldFBhbGV0dGUocGFsZXR0ZSgpKTsKICNpZm5kZWYgUVRfTk9fQ09O
VEVYVE1FTlUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vidmlldy5jcHAJKHJl
dmlzaW9uIDE0NTM1MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzI4LDYgKzcyOCwxMiBAQCBib29sIFFXZWJWaWV3OjpldmVu
dChRRXZlbnQgKmUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlm
IChlLT50eXBlKCkgPT0gUUV2ZW50OjpMZWF2ZSkKICAgICAgICAgICAgIGQtPnBhZ2UtPmV2ZW50
KGUpOworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgICAgICBlbHNlIGlmICgo
ZS0+dHlwZSgpID09IFFFdmVudDo6U2hvdykgfHwgKGUtPnR5cGUoKSA9PSBRRXZlbnQ6OldpbmRv
d0FjdGl2YXRlKSkKKyAgICAgICAgICAgIGQtPnBhZ2UtPmQtPnNldFBhZ2VWaXNpYmxlKHRydWUp
OworICAgICAgICBlbHNlIGlmICgoZS0+dHlwZSgpID09IFFFdmVudDo6SGlkZSkgfHwgKGUtPnR5
cGUoKSA9PSBRRXZlbnQ6OldpbmRvd0RlYWN0aXZhdGUpKQorICAgICAgICAgICAgZC0+cGFnZS0+
ZC0+c2V0UGFnZVZpc2libGUoZmFsc2UpOworI2VuZGlmCiAgICAgfQogCiAgICAgcmV0dXJuIFFX
aWRnZXQ6OmV2ZW50KGUpOwo=
</data>
<flag name="commit-queue"
          id="213674"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193151</attachid>
            <date>2013-03-14 10:59:29 -0700</date>
            <delta_ts>2013-03-14 11:09:48 -0700</delta_ts>
            <desc>[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView (new API + new Layout test)</desc>
            <filename>patch_109422-14.patch</filename>
            <type>text/plain</type>
            <size>18820</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDU4MjgpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEzLTAzLTE0ICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAo
UVdlYlBhZ2VBZGFwdGVyOjppbml0aWFsaXplV2ViQ29yZVBhZ2UpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oOgorICAgICAgICAqIFdpZGdldEFwaS9xZ3JhcGhp
Y3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnZpc2liaWxpdHlDaGFu
Z2VFdmVudCk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpldmVudCk6CisgICAgICAgICog
V2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuaDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnZp
ZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OnZpc2liaWxpdHlDaGFuZ2VFdmVudCk6CisgICAg
ICAgIChRV2ViVmlldzo6ZXZlbnQpOgorICAgICAgICAqIFdpZGdldEFwaS9xd2Vidmlldy5oOgor
CiAyMDEzLTAzLTE0ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmVwbGFjZSBzdGF0aWNfY2FzdHMgd2l0aCB0byogaGVscGVyIGZ1bmN0aW9ucy4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRh
cHRlci5jcHAJKHJldmlzaW9uIDE0NTgyNikKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCwx
OSBAQCBzdGF0aWMgdm9pZCBvcGVuTmV3V2luZG93KGNvbnN0IFFVcmwmIHVyCiAgICAgfQogfQog
Cit2b2lkIFFXZWJQYWdlQWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKGJvb2wgdmlzaWJsZSkK
K3sKKyAgICAvKiBhdXRvbWF0aWMgY2FsbGVkIGJ5IFFXZWJWaWV3IGFuZCBRR3JhcGhpY3NXZWJW
aWV3ICovCisgICAgLyogb24gaGlkZS9zaG93L3dpbmRvd0FjdGl2YXRlL3dpbmRvd0RlYWN0aXZh
dGUgZXZlbnRzICovCisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgaWYgKCFw
YWdlKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKHZpc2li
bGUgPyBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSA6IFdlYkNvcmU6OlBhZ2VW
aXNpYmlsaXR5U3RhdGVIaWRkZW4sIGZhbHNlKTsKKyNlbHNlCisgICAgUV9VTlVTRUQodmlzaWJs
ZSk7CisjZW5kaWYKK30KKwogUVdlYlBhZ2VBZGFwdGVyOjpRV2ViUGFnZUFkYXB0ZXIoKQogICAg
IDogc2V0dGluZ3MoMCkKICAgICAsIHBhZ2UoMCkKQEAgLTE5MCw3ICsyMDMsOSBAQCB2b2lkIFFX
ZWJQYWdlQWRhcHRlcjo6aW5pdGlhbGl6ZVdlYkNvcmVQCiAgICAgcGFnZUNsaWVudHMuZHJhZ0Ns
aWVudCA9IG5ldyBEcmFnQ2xpZW50UXQocGFnZUNsaWVudHMuY2hyb21lQ2xpZW50KTsKICAgICBw
YWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgSW5zcGVjdG9yQ2xpZW50UXQodGhpcyk7
CiAgICAgcGFnZSA9IG5ldyBQYWdlKHBhZ2VDbGllbnRzKTsKLQorI2lmIEVOQUJMRShQQUdFX1ZJ
U0lCSUxJVFlfQVBJKQorICAgIHBhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShXZWJDb3JlOjpQYWdl
VmlzaWJpbGl0eVN0YXRlSGlkZGVuLCB0cnVlKTsKKyNlbmRpZgogI2lmIEVOQUJMRShHRU9MT0NB
VElPTikKICAgICBpZiAodXNlTW9jaykgewogICAgICAgICAvLyBJbiBjYXNlIHJ1bm5pbmcgaW4g
RHVtcFJlbmRlclRyZWUgbW9kZSBzZXQgdGhlIGNvbnRyb2xsZXIgdG8gbW9jayBwcm92aWRlci4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFk
YXB0ZXIuaAkocmV2aXNpb24gMTQ1ODI2KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RV2ViUGFnZUFkYXB0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5kU2V0Q3VycmVudENvbnRleHRNZW51
KGNvbnN0IFFMaXN0PE1lbnVJdGVtRGVzY3JpcHRpb24+JiwgUUJpdEFycmF5KikgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGxiYXJDb250ZXh0TWVudUV2ZW50KFFDb250ZXh0TWVu
dUV2ZW50KiwgYm9vbCwgU2Nyb2xsRGlyZWN0aW9uKiwgU2Nyb2xsR3JhbnVsYXJpdHkqKSA9IDA7
CiAKKyAgICB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZShib29sKTsKKwogICAgIHN0YXRpYyBRV2Vi
UGFnZUFkYXB0ZXIqIGtpdChXZWJDb3JlOjpQYWdlKik7CiAgICAgV2ViQ29yZTo6Vmlld3BvcnRB
cmd1bWVudHMgdmlld3BvcnRBcmd1bWVudHMoKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVW5k
b1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcAkocmV2aXNpb24g
MTQ1ODI2KQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5OSw2ICszOTksMzggQEAgdm9pZCBRR3JhcGhpY3NXZWJW
aWV3OjpzZXRSZW5kZXJIaW50KFFQYQogICAgICAgICB1cGRhdGUoKTsKIH0KIAorLyohCisgICAg
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgZXZlbnQoUUV2ZW50KiBldmVudCkgbWV0
aG9kIG9ubHkgaWYgYSBRV2ViUGFnZSBpcyBhc3NvY2lhdGVkCisgICAgYW5kIG9ubHkgb24gZXZl
bnQgb2YgdHlwZSBIaWRlLCBTaG93LCBXaW5kb3dBY3RpdmF0ZSBvciBXaW5kb3dEZWFjdGl2YXRl
LgorICAgIElmIHRoZSBnaXZlbiBcYSBldmVudCB0eXBlIGlzIGVxdWFscyB0byBTaG93IG9yIFdp
bmRvd0FjdGl2YXRlIGFuZCB0aGVyZSBpcyBhbiBhY3RpdmUgc2NlbmUKKyAgICBiaW5kIHRvIHRo
aXMgUUdyYXBoaWNzV2ViVmlldyB0aGVuIHRoZSBwYWdlIHZpc2liaWxpdHkgc3RhdGUgd2lsbCBi
ZSBjaGFuZ2UgdG8gdmlzaWJsZS4KKyAgICBPdGhlcndpc2UgaWYgdGhlIGdpdmVuIFxhIGV2ZW50
IHR5cGUgaXMgZXF1YWxzIHRvIEhpZGUgb3IgV2luZG93RGVhY3RpdmF0ZSBhbmQgdGhlcmUgaXMg
YSBzY2VuZQorICAgIGJpbmQgdG8gdGhpcyBRR3JhcGhpY3NXZWJWaWV3IHRoZW4gdGhlIHBhZ2Ug
dmlzaWJpbGl0eSBzdGF0ZSB3aWxsIGJlIGNoYW5nZSB0byBoaWRkZW4uCisgICAgTW9yZSBpbmZv
cm1hdGlvbiBhYm91dCB0aGlzIEhUTUw1IEFQSSBjYW4gYmUgZm91bmQgYXQgXGx7aHR0cDovL3d3
dy53My5vcmcvVFIvcGFnZS12aXNpYmlsaXR5L317VzNDIENhbmRpZGF0ZSBSZWNvbW1lbmRhdGlv
bjogUGFnZSBWaXNpYmlsaXR5fS4KKworICAgIFxub3RlIElmIHRoZSBldmVudCgpIG1ldGhvZCBp
cyByZWltcGxlbWVudGVkLCB0aGlzIG1ldGhvZCBpcyBub3QgY2FsbGVkLCB1bmxlc3MgZXhwbGlj
aXRseSBkb25lCisgICAgc28gaW4gdGhlIHJlaW1wbGVtZW50YXRpb24uCisKKyAgICBcbm90ZSBJ
ZiB0aGUgY3VycmVudCBwYWdlIHZpc2liaWxpdHkgc3RhdGUgYmVoYXZpb3VyIGRvZXNuJ3QgbWF0
Y2ggd2l0aCB3aGF0IHlvdSBleHBlY3QsCisgICAgeW91IHNob3VsZCByZWltcGxlbWVudCB0aGlz
IG1ldGhvZC4KKyovCit2b2lkIFFHcmFwaGljc1dlYlZpZXc6OnZpc2liaWxpdHlDaGFuZ2VFdmVu
dChRRXZlbnQqIGV2ZW50KQoreworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAg
ICAgICBpZiAoKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpTaG93KSB8fCAoZXZlbnQtPnR5cGUo
KSA9PSBRRXZlbnQ6OldpbmRvd0FjdGl2YXRlKSkgeworICAgICAgICAgICAgLyogY2hhbmdlIG9u
bHkgaWYgdGhlIHNjZW5lIGV4aXN0IGFuZCBpdCdzIHZpc2libGUgKi8KKyAgICAgICAgICAgIGlm
IChzY2VuZSgpICYmIHNjZW5lKCktPmlzQWN0aXZlKCkpCisgICAgICAgICAgICAgICAgZC0+cGFn
ZS0+ZC0+c2V0VmlzaWJpbGl0eVN0YXRlKHRydWUpOworICAgICAgICB9IGVsc2UgaWYgKChldmVu
dC0+dHlwZSgpID09IFFFdmVudDo6SGlkZSkgfHwgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpX
aW5kb3dEZWFjdGl2YXRlKSkgeworICAgICAgICAgICAgLyogY2hhbmdlIG9ubHkgaWYgdGhlIHNj
ZW5lIGV4aXN0ICovCisgICAgICAgICAgICBpZiAoc2NlbmUoKSkKKyAgICAgICAgICAgICAgICBk
LT5wYWdlLT5kLT5zZXRWaXNpYmlsaXR5U3RhdGUoZmFsc2UpOworICAgICAgICB9CisjZWxzZQor
ICAgIFFfVU5VU0VEKGV2ZW50KTsKKyNlbmRpZgorfQorCiAvKiEgXHJlaW1wCiAqLwogYm9vbCBR
R3JhcGhpY3NXZWJWaWV3OjpldmVudChRRXZlbnQqIGV2ZW50KQpAQCAtNDA2LDYgKzQzOCw4IEBA
IGJvb2wgUUdyYXBoaWNzV2ViVmlldzo6ZXZlbnQoUUV2ZW50KiBldmUKICAgICAvLyBSZS1pbXBs
ZW1lbnRlZCBpbiBvcmRlciB0byBhbGxvd3MgZml4aW5nIGV2ZW50LXJlbGF0ZWQgYnVncyBpbiBw
YXRjaCByZWxlYXNlcy4KIAogICAgIGlmIChkLT5wYWdlKSB7CisgICAgICAgIGlmICgoZS0+dHlw
ZSgpID09IFFFdmVudDo6U2hvdykgfHwgKGUtPnR5cGUoKSA9PSBRRXZlbnQ6OldpbmRvd0FjdGl2
YXRlKSB8fCAoZS0+dHlwZSgpID09IFFFdmVudDo6SGlkZSkgfHwgKGUtPnR5cGUoKSA9PSBRRXZl
bnQ6OldpbmRvd0RlYWN0aXZhdGUpKQorICAgICAgICAgICAgdmlzaWJpbGl0eUNoYW5nZUV2ZW50
KGV2ZW50KTsKICAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpQYWxldHRlQ2hh
bmdlKQogICAgICAgICAgICAgZC0+cGFnZS0+c2V0UGFsZXR0ZShwYWxldHRlKCkpOwogI2lmbmRl
ZiBRVF9OT19DT05URVhUTUVOVQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcWdy
YXBoaWNzd2Vidmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBp
L3FncmFwaGljc3dlYnZpZXcuaAkocmV2aXNpb24gMTQ1ODI2KQorKysgU291cmNlL1dlYktpdC9x
dC9XaWRnZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5
Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVGlsZWRCYWNraW5nU3RvcmVGcm96ZW4oKSBjb25z
dDsKICAgICB2b2lkIHNldFRpbGVkQmFja2luZ1N0b3JlRnJvemVuKGJvb2wgZnJvemVuKTsKIAor
ICAgIHZpcnR1YWwgdm9pZCB2aXNpYmlsaXR5Q2hhbmdlRXZlbnQoUUV2ZW50Kik7CiAgICAgdmly
dHVhbCB2b2lkIHNldEdlb21ldHJ5KGNvbnN0IFFSZWN0RiYgcmVjdCk7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUdlb21ldHJ5KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFFQYWludGVyKiwg
Y29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiBvcHRpb25zLCBRV2lkZ2V0KiB3aWRnZXQg
PSAwKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vidmlldy5jcHAJKHJldmlz
aW9uIDE0NTgyNikKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjg2LDExICs2ODYsNDIgQEAgYm9vbCBRV2ViVmlldzo6ZmluZFRl
eHQoY29uc3QgUVN0cmluZyAmcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorLyohCisgICAgVGhp
cyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgZXZlbnQoUUV2ZW50KiBldmVudCkgbWV0aG9k
IG9ubHkgaWYgYSBRV2ViUGFnZSBpcyBhc3NvY2lhdGVkCisgICAgYW5kIG9ubHkgb24gZXZlbnQg
b2YgdHlwZSBIaWRlLCBTaG93LCBXaW5kb3dBY3RpdmF0ZSBvciBXaW5kb3dEZWFjdGl2YXRlLgor
ICAgIElmIHRoZSBnaXZlbiBcYSBldmVudCB0eXBlIGlzIGVxdWFscyB0byBTaG93IG9yIFdpbmRv
d0FjdGl2YXRlIHRoZW4gdGhlIHBhZ2UgdmlzaWJpbGl0eSBzdGF0ZQorICAgIHdpbGwgYmUgY2hh
bmdlIHRvIHZpc2libGUuCisgICAgT3RoZXJ3aXNlIGlmIHRoZSBnaXZlbiBcYSBldmVudCB0eXBl
IGlzIGVxdWFscyB0byBIaWRlIG9yIFdpbmRvd0RlYWN0aXZhdGUgdGhlbiB0aGUgcGFnZQorICAg
IHZpc2liaWxpdHkgc3RhdGUgd2lsbCBiZSBjaGFuZ2UgdG8gaGlkZGVuLgorICAgIE1vcmUgaW5m
b3JtYXRpb24gYWJvdXQgdGhpcyBIVE1MNSBBUEkgY2FuIGJlIGZvdW5kIGF0IFxse2h0dHA6Ly93
d3cudzMub3JnL1RSL3BhZ2UtdmlzaWJpbGl0eS99e1czQyBDYW5kaWRhdGUgUmVjb21tZW5kYXRp
b246IFBhZ2UgVmlzaWJpbGl0eX0uCisKKyAgICBcbm90ZSBUaGUgaW5pdGlhbCB2aXNpYmlsaXR5
IHN0YXRlIGlzIHNldCB0byBoaWRkZW4uCisKKyAgICBcbm90ZSBJZiB0aGUgZXZlbnQoKSBtZXRo
b2QgaXMgcmVpbXBsZW1lbnRlZCwgdGhpcyBtZXRob2QgaXMgbm90IGNhbGxlZCwgdW5sZXNzIGV4
cGxpY2l0bHkgZG9uZQorICAgIHNvIGluIHRoZSByZWltcGxlbWVudGF0aW9uLgorCisgICAgXG5v
dGUgSWYgdGhlIGN1cnJlbnQgcGFnZSB2aXNpYmlsaXR5IHN0YXRlIGJlaGF2aW91ciBkb2Vzbid0
IG1hdGNoIHdpdGggd2hhdCB5b3UgZXhwZWN0LAorICAgIHlvdSBzaG91bGQgcmVpbXBsZW1lbnQg
dGhpcyBtZXRob2QuCisqLwordm9pZCBRV2ViVmlldzo6dmlzaWJpbGl0eUNoYW5nZUV2ZW50KFFF
dmVudCogZSkKK3sKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAoKGUt
PnR5cGUoKSA9PSBRRXZlbnQ6OlNob3cpIHx8IChlLT50eXBlKCkgPT0gUUV2ZW50OjpXaW5kb3dB
Y3RpdmF0ZSkpCisgICAgICAgIGQtPnBhZ2UtPmQtPnNldFZpc2liaWxpdHlTdGF0ZSh0cnVlKTsK
KyAgICBlbHNlIGlmICgoZS0+dHlwZSgpID09IFFFdmVudDo6SGlkZSkgfHwgKGUtPnR5cGUoKSA9
PSBRRXZlbnQ6OldpbmRvd0RlYWN0aXZhdGUpKQorICAgICAgICBkLT5wYWdlLT5kLT5zZXRWaXNp
YmlsaXR5U3RhdGUoZmFsc2UpOworI2Vsc2UKKyAgICBRX1VOVVNFRChldmVudCk7CisjZW5kaWYK
K30KKwogLyohIFxyZWltcAogKi8KIGJvb2wgUVdlYlZpZXc6OmV2ZW50KFFFdmVudCAqZSkKIHsK
ICAgICBpZiAoZC0+cGFnZSkgeworICAgICAgICBpZiAoKGUtPnR5cGUoKSA9PSBRRXZlbnQ6OlNo
b3cpIHx8IChlLT50eXBlKCkgPT0gUUV2ZW50OjpXaW5kb3dBY3RpdmF0ZSkgfHwgKGUtPnR5cGUo
KSA9PSBRRXZlbnQ6OkhpZGUpIHx8IChlLT50eXBlKCkgPT0gUUV2ZW50OjpXaW5kb3dEZWFjdGl2
YXRlKSkKKyAgICAgICAgICAgIHZpc2liaWxpdHlDaGFuZ2VFdmVudChlKTsKICNpZm5kZWYgUVRf
Tk9fQ09OVEVYVE1FTlUKICAgICAgICAgaWYgKGUtPnR5cGUoKSA9PSBRRXZlbnQ6OkNvbnRleHRN
ZW51KSB7CiAgICAgICAgICAgICBpZiAoIWlzRW5hYmxlZCgpKQpJbmRleDogU291cmNlL1dlYktp
dC9xdC9XaWRnZXRBcGkvcXdlYnZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L1dpZGdldEFwaS9xd2Vidmlldy5oCShyZXZpc2lvbiAxNDU4MjYpCisrKyBTb3VyY2UvV2ViS2l0
L3F0L1dpZGdldEFwaS9xd2Vidmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDcg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcmVzaXplRXZlbnQoUVJlc2l6ZUV2ZW50Kik7CiAgICAg
dm9pZCBwYWludEV2ZW50KFFQYWludEV2ZW50Kik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaWJp
bGl0eUNoYW5nZUV2ZW50KFFFdmVudCopOwogICAgIHZpcnR1YWwgUVdlYlZpZXcgKmNyZWF0ZVdp
bmRvdyhRV2ViUGFnZTo6V2ViV2luZG93VHlwZSB0eXBlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBj
aGFuZ2VFdmVudChRRXZlbnQqKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTgyOCkKKysrIFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAzLTE0ICBCZW5qYW1pbiBEdXBv
bnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBhZ2UgVmlzaWJpbGl0
eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwOgorICAgICAgICAoVGVz
dFJ1bm5lclF0OjpyZXNldFBhZ2VWaXNpYmlsaXR5KToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6
c2V0UGFnZVZpc2liaWxpdHkpOgorCiAyMDEzLTAzLTE0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9u
LmhhdXNtYW5uQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIERpc2FibGUgRFJUIG9uIFdpbmRv
d3MKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcAkocmV2aXNp
b24gMTQ1ODI2KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODk5LDEyICs4OTksMTUgQEAgdm9pZCBUZXN0UnVubmVyUXQ6OnN5
bmNMb2NhbFN0b3JhZ2UoKQogCiB2b2lkIFRlc3RSdW5uZXJRdDo6cmVzZXRQYWdlVmlzaWJpbGl0
eSgpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIG1fZHJ0LT5wYWdlQWRh
cHRlcigpLT5zZXRWaXNpYmlsaXR5U3RhdGUoZmFsc2UpOwogfQogCi12b2lkIFRlc3RSdW5uZXJR
dDo6c2V0UGFnZVZpc2liaWxpdHkoY29uc3QgY2hhciopCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0
UGFnZVZpc2liaWxpdHkoY29uc3QgY2hhciogc3RhdGUpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzLgorICAgIGlmIChzdGF0ZSA9PSAidmlzaWJsZSIpCisgICAgICAgIG1fZHJ0LT5w
YWdlQWRhcHRlcigpLT5zZXRWaXNpYmlsaXR5U3RhdGUodHJ1ZSk7CisgICAgZWxzZSBpZiAoc3Rh
dGUgPT0gImhpZGRlbiIpCisgICAgICAgIG1fZHJ0LT5wYWdlQWRhcHRlcigpLT5zZXRWaXNpYmls
aXR5U3RhdGUoZmFsc2UpOwogfQogCiB2b2lkIFRlc3RSdW5uZXJRdDo6c2V0QXV0b21hdGljTGlu
a0RldGVjdGlvbkVuYWJsZWQoYm9vbCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTgyOCkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEz
LTAzLTE0ICBCZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtR
dF0gQWRkIFBhZ2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9wYWdl
LXZpc2liaWxpdHktdHJhbnNpdGlvbi10ZXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vcXQvZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVz
dC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIERGRyBieXRlY29kZSBwYXJzZXIgaXMgdG9vIGFnZ3Jlc3NpdmUgYWJv
dXQgZ2V0dGluZyByaWQgb2YgR2V0TG9jYWxzIG9uIGNhcHR1cmVkIHZhcmlhYmxlcwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5z
aXRpb24tdGVzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVzdC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2V2ZW50
cy9wYWdlLXZpc2liaWxpdHktdHJhbnNpdGlvbi10ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxOSBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IFBhZ2UgVmlzaWJpbGl0
eSBzdGF0ZSB2YWx1ZXMgYXJlIGNvcnJlY3QgYW5kIHRoZSBldmVudCBjaGFuZ2VzIGFyZSBmaXJl
ZCBjb3JyZWN0bHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3Vt
ZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSBpcyAidmlzaWJsZSIKK1BBU1MgZG9jdW1lbnQud2Vi
a2l0SGlkZGVuIGlzIGZhbHNlCitQQVNTIGRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSBp
cyAidmlzaWJsZSIKK1BBU1MgZG9jdW1lbnQud2Via2l0SGlkZGVuIGlzIGZhbHNlCitQQVNTIGRv
Y3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSBpcyAiaGlkZGVuIgorUEFTUyBkb2N1bWVudC53
ZWJraXRIaWRkZW4gaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUg
aXMgImhpZGRlbiIKK1BBU1MgZG9jdW1lbnQud2Via2l0SGlkZGVuIGlzIHRydWUKK1BBU1MgZG9j
dW1lbnQud2Via2l0VmlzaWJpbGl0eVN0YXRlIGlzICJ2aXNpYmxlIgorUEFTUyBkb2N1bWVudC53
ZWJraXRIaWRkZW4gaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2V2ZW50
cy9wYWdlLXZpc2liaWxpdHktdHJhbnNpdGlvbi10ZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5zaXRp
b24tdGVzdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFz
dC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVzdC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEzNiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBI
VE1MIDQuMDEvL0VOIgorImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPgor
Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgbGFuZz0iZW4iPgor
ICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KKyAgICAgICAgPHRpdGxlPlZpc2liaWxp
dHkgQVBJIHRlc3Q8L3RpdGxlPgorICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9
ImJkdXBvbnQiIC8+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBjaGVja3MgdGhhdCBQYWdlIFZpc2liaWxpdHkgc3RhdGUgdmFsdWVzIGFyZSBjb3Jy
ZWN0IGFuZCB0aGUgZXZlbnQgY2hhbmdlcyBhcmUgZmlyZWQgY29ycmVjdGx5LiIpOworCisgICAg
ICAgICAgICB2YXIgVGVzdCA9IChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHZh
ciB0aGF0ID0ge30sIHN0YXRlQm9vbCwgc3RhdGVTdHJpbmcsIGNwdCA9IDAsIHZpc2liaWxpdHlD
YWxsQmFjaywgbWFrZVBhZ2VWaXNpYmxlLCBtYWtlUGFnZUhpZGRlbiwgZmluaXNoVGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgY2hlY2tJc1BhZ2VWaXNpYmxlLCBjaGVja0xhc3RFdmVudFZhbHVl
SXNWaXNpYmxlLCBjaGVja0lzUGFnZUhpZGRlbiwgY2hlY2tMYXN0RXZlbnRWYWx1ZUlzSGlkZGVu
LAorICAgICAgICAgICAgICAgICAgICBjaGVja05iRXZlbnRSZWNlaXZlZCwgdGVzdEluaXQsIHRl
c3RIaWRkZW5Ub1Zpc2libGUsIHRlc3RWaXNpYmxlVG9IaWRkZW4sIHRlc3RIaWRkZW5Ub0hpZGRl
biwgdGVzdFZpc2libGVUb1Zpc2libGU7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICBlcnJvciA9IGZ1bmN0aW9uIChtc2cpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQobXNnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIGZpbmlzaFRlc3QgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlDYWxsQmFjayA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQm9vbCA9IGRvY3VtZW50
LndlYmtpdEhpZGRlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlU3RyaW5nID0gZG9j
dW1lbnQud2Via2l0VmlzaWJpbGl0eVN0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgY3B0
Kys7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICBtYWtlUGFnZVZpc2libGUgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFBhZ2VWaXNpYmlsaXR5KCJ2aXNpYmxlIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAg
ICAgICAgICAgICAgbWFrZVBhZ2VIaWRkZW4gPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFBhZ2VWaXNpYmlsaXR5KCJoaWRkZW4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNoZWNrTmJFdmVudFJlY2VpdmVkID0gZnVuY3Rp
b24gKG5iKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihjcHQgIT09IG5iKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIkludmFsaWQgbnVtYmVyIG9mIGV2ZW50IHJl
Y2VpdmVkICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIocmVjZWl2ZWQ6IiArIGNw
dCArICJldmVudChzKSBleHBlY3RlZDoiICsgbmIgKyAiZXZlbnQocykpIikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIGNoZWNrSXNQYWdlVmlzaWJsZSA9IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1l
bnQud2Via2l0VmlzaWJpbGl0eVN0YXRlIiwgInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNob3VsZEJlRmFsc2UoImRvY3VtZW50LndlYmtpdEhpZGRlbiIpOyAgICAgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMYXN0RXZlbnRWYWx1ZUlzVmlzaWJsZSA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXRlU3RyaW5nICE9PSAi
dmlzaWJsZSIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiSW52YWxpZCB3
ZWJraXRWaXNpYmlsaXR5U3RhdGUgd2hlbiB5b3UgcmVjZWl2ZWQgdGhlIGxhc3Qgd2Via2l0dmlz
aWJpbGl0eWNoYW5nZSBldmVudCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKHJl
Y2VpdmVkOiIgKyBzdGF0ZVN0cmluZyArICIgZXhwZWN0ZWQ6dmlzaWJsZSkiKQorICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RhdGVCb29sICE9
PSBmYWxzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJJbnZhbGlkIHdl
YmtpdEhpZGRlbiB3aGVuIHlvdSByZWNlaXZlZCB0aGUgbGFzdCB3ZWJraXR2aXNpYmlsaXR5Y2hh
bmdlIGV2ZW50ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIocmVjZWl2ZWQ6IiAr
IHN0YXRlQm9vbCArICIgZXhwZWN0ZWQ6ZmFsc2UpIikKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgICAgICBjaGVja0lz
UGFnZUhpZGRlbiA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQud2Via2l0VmlzaWJpbGl0eVN0YXRlIiwgImhpZGRl
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJkb2N1bWVudC53ZWJr
aXRIaWRkZW4iKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTGFzdEV2ZW50VmFsdWVJc0hpZGRlbiA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXRlU3RyaW5nICE9PSAiaGlk
ZGVuIikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJJbnZhbGlkIHdlYmtp
dFZpc2liaWxpdHlTdGF0ZSB3aGVuIHlvdSByZWNlaXZlZCB0aGUgbGFzdCB3ZWJraXR2aXNpYmls
aXR5Y2hhbmdlIGV2ZW50ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIocmVjZWl2
ZWQ6IiArIHN0YXRlU3RyaW5nICsgIiBleHBlY3RlZDpoaWRkZW4pIikKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0YXRlQm9vbCAhPT0gdHJ1
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJJbnZhbGlkIHdlYmtpdEhp
ZGRlbiB3aGVuIHlvdSByZWNlaXZlZCB0aGUgbGFzdCB3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlIGV2
ZW50ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIocmVjZWl2ZWQ6IiArIHN0YXRl
Qm9vbCArICIgZXhwZWN0ZWQ6dHJ1ZSkiKQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEluaXQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
aGVja0lzUGFnZVZpc2libGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrTmJFdmVu
dFJlY2VpdmVkKDApOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgdGVzdFZpc2libGVUb1Zpc2libGUgPSBmdW5jdGlvbiAo
ZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VQYWdlVmlzaWJsZSgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJc1BhZ2VWaXNpYmxlKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjaGVja05iRXZlbnRSZWNlaXZlZChleHBlY3RlZCk7CisgICAgICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB0
ZXN0SGlkZGVuVG9IaWRkZW4gPSBmdW5jdGlvbiAoZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1ha2VQYWdlSGlkZGVuKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVj
a0lzUGFnZUhpZGRlbigpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tOYkV2ZW50UmVj
ZWl2ZWQoZXhwZWN0ZWQpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgdGVzdFZpc2libGVUb0hpZGRlbiA9IGZ1bmN0aW9u
IChleHBlY3RlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbWFrZVBhZ2VIaWRkZW4oKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSXNQYWdlSGlkZGVuKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjaGVja0xhc3RFdmVudFZhbHVlSXNIaWRkZW4oKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNoZWNrTmJFdmVudFJlY2VpdmVkKGV4cGVjdGVkKTsKKyAgICAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRl
c3RIaWRkZW5Ub1Zpc2libGUgPSBmdW5jdGlvbiAoZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1ha2VQYWdlVmlzaWJsZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hl
Y2tJc1BhZ2VWaXNpYmxlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xhc3RFdmVu
dFZhbHVlSXNWaXNpYmxlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja05iRXZlbnRS
ZWNlaXZlZChleHBlY3RlZCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICB0aGF0LnN0YXJ0VGVzdCA9IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dl
YmtpdHZpc2liaWxpdHljaGFuZ2UnLCB2aXNpYmlsaXR5Q2FsbEJhY2ssIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RJbml0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAv
KiBObyBldmVudCBzaG91bGQgYmUgcmVjZWl2ZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RWaXNpYmxlVG9WaXNpYmxlKDApOworICAgICAgICAgICAgICAgICAgICAgICAgLyogMSBt
b3JlIGV2ZW50IHNob3VsZCBiZSByZWNlaXZlZCAqLworICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdFZpc2libGVUb0hpZGRlbigxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vIGV2
ZW50IHNob3VsZCBiZSByZWNlaXZlZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEhp
ZGRlblRvSGlkZGVuKDEpOworICAgICAgICAgICAgICAgICAgICAgICAgLyogMSBtb3JlIGV2ZW50
IHNob3VsZCBiZSByZWNlaXZlZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEhpZGRl
blRvVmlzaWJsZSgyKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGF0OworICAgICAgICAgICAgICAgIH0o
KSk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBU
ZXN0LnN0YXJ0VGVzdCgpKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="214591"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193154</attachid>
            <date>2013-03-14 11:09:48 -0700</date>
            <delta_ts>2013-03-14 11:17:48 -0700</delta_ts>
            <desc>[Qt][Wk1] Add page visibility API support in QWebView and QGraphicsWebView (new API + new Layout test) (2)</desc>
            <filename>patch_109422-15.patch</filename>
            <type>text/plain</type>
            <size>18836</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDU4MjgpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEzLTAzLTE0ICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAo
UVdlYlBhZ2VBZGFwdGVyOjppbml0aWFsaXplV2ViQ29yZVBhZ2UpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oOgorICAgICAgICAqIFdpZGdldEFwaS9xZ3JhcGhp
Y3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnZpc2liaWxpdHlDaGFu
Z2VFdmVudCk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpldmVudCk6CisgICAgICAgICog
V2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuaDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnZp
ZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OnZpc2liaWxpdHlDaGFuZ2VFdmVudCk6CisgICAg
ICAgIChRV2ViVmlldzo6ZXZlbnQpOgorICAgICAgICAqIFdpZGdldEFwaS9xd2Vidmlldy5oOgor
CiAyMDEzLTAzLTE0ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmVwbGFjZSBzdGF0aWNfY2FzdHMgd2l0aCB0byogaGVscGVyIGZ1bmN0aW9ucy4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRh
cHRlci5jcHAJKHJldmlzaW9uIDE0NTgyNikKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCwx
OSBAQCBzdGF0aWMgdm9pZCBvcGVuTmV3V2luZG93KGNvbnN0IFFVcmwmIHVyCiAgICAgfQogfQog
Cit2b2lkIFFXZWJQYWdlQWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKGJvb2wgdmlzaWJsZSkK
K3sKKyAgICAvKiBhdXRvbWF0aWMgY2FsbGVkIGJ5IFFXZWJWaWV3IGFuZCBRR3JhcGhpY3NXZWJW
aWV3ICovCisgICAgLyogb24gaGlkZS9zaG93L3dpbmRvd0FjdGl2YXRlL3dpbmRvd0RlYWN0aXZh
dGUgZXZlbnRzICovCisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgaWYgKCFw
YWdlKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKHZpc2li
bGUgPyBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSA6IFdlYkNvcmU6OlBhZ2VW
aXNpYmlsaXR5U3RhdGVIaWRkZW4sIGZhbHNlKTsKKyNlbHNlCisgICAgUV9VTlVTRUQodmlzaWJs
ZSk7CisjZW5kaWYKK30KKwogUVdlYlBhZ2VBZGFwdGVyOjpRV2ViUGFnZUFkYXB0ZXIoKQogICAg
IDogc2V0dGluZ3MoMCkKICAgICAsIHBhZ2UoMCkKQEAgLTE5MCw3ICsyMDMsOSBAQCB2b2lkIFFX
ZWJQYWdlQWRhcHRlcjo6aW5pdGlhbGl6ZVdlYkNvcmVQCiAgICAgcGFnZUNsaWVudHMuZHJhZ0Ns
aWVudCA9IG5ldyBEcmFnQ2xpZW50UXQocGFnZUNsaWVudHMuY2hyb21lQ2xpZW50KTsKICAgICBw
YWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgSW5zcGVjdG9yQ2xpZW50UXQodGhpcyk7
CiAgICAgcGFnZSA9IG5ldyBQYWdlKHBhZ2VDbGllbnRzKTsKLQorI2lmIEVOQUJMRShQQUdFX1ZJ
U0lCSUxJVFlfQVBJKQorICAgIHBhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShXZWJDb3JlOjpQYWdl
VmlzaWJpbGl0eVN0YXRlSGlkZGVuLCB0cnVlKTsKKyNlbmRpZgogI2lmIEVOQUJMRShHRU9MT0NB
VElPTikKICAgICBpZiAodXNlTW9jaykgewogICAgICAgICAvLyBJbiBjYXNlIHJ1bm5pbmcgaW4g
RHVtcFJlbmRlclRyZWUgbW9kZSBzZXQgdGhlIGNvbnRyb2xsZXIgdG8gbW9jayBwcm92aWRlci4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFk
YXB0ZXIuaAkocmV2aXNpb24gMTQ1ODI2KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RV2ViUGFnZUFkYXB0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5kU2V0Q3VycmVudENvbnRleHRNZW51
KGNvbnN0IFFMaXN0PE1lbnVJdGVtRGVzY3JpcHRpb24+JiwgUUJpdEFycmF5KikgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGxiYXJDb250ZXh0TWVudUV2ZW50KFFDb250ZXh0TWVu
dUV2ZW50KiwgYm9vbCwgU2Nyb2xsRGlyZWN0aW9uKiwgU2Nyb2xsR3JhbnVsYXJpdHkqKSA9IDA7
CiAKKyAgICB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZShib29sKTsKKwogICAgIHN0YXRpYyBRV2Vi
UGFnZUFkYXB0ZXIqIGtpdChXZWJDb3JlOjpQYWdlKik7CiAgICAgV2ViQ29yZTo6Vmlld3BvcnRB
cmd1bWVudHMgdmlld3BvcnRBcmd1bWVudHMoKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVW5k
b1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcAkocmV2aXNpb24g
MTQ1ODI2KQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5OSw2ICszOTksMzggQEAgdm9pZCBRR3JhcGhpY3NXZWJW
aWV3OjpzZXRSZW5kZXJIaW50KFFQYQogICAgICAgICB1cGRhdGUoKTsKIH0KIAorLyohCisgICAg
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgZXZlbnQoUUV2ZW50KiBldmVudCkgbWV0
aG9kIG9ubHkgaWYgYSBRV2ViUGFnZSBpcyBhc3NvY2lhdGVkCisgICAgYW5kIG9ubHkgb24gZXZl
bnQgb2YgdHlwZSBIaWRlLCBTaG93LCBXaW5kb3dBY3RpdmF0ZSBvciBXaW5kb3dEZWFjdGl2YXRl
LgorICAgIElmIHRoZSBnaXZlbiBcYSBldmVudCB0eXBlIGlzIGVxdWFscyB0byBTaG93IG9yIFdp
bmRvd0FjdGl2YXRlIGFuZCB0aGVyZSBpcyBhbiBhY3RpdmUgc2NlbmUKKyAgICBiaW5kIHRvIHRo
aXMgUUdyYXBoaWNzV2ViVmlldyB0aGVuIHRoZSBwYWdlIHZpc2liaWxpdHkgc3RhdGUgd2lsbCBi
ZSBjaGFuZ2UgdG8gdmlzaWJsZS4KKyAgICBPdGhlcndpc2UgaWYgdGhlIGdpdmVuIFxhIGV2ZW50
IHR5cGUgaXMgZXF1YWxzIHRvIEhpZGUgb3IgV2luZG93RGVhY3RpdmF0ZSBhbmQgdGhlcmUgaXMg
YSBzY2VuZQorICAgIGJpbmQgdG8gdGhpcyBRR3JhcGhpY3NXZWJWaWV3IHRoZW4gdGhlIHBhZ2Ug
dmlzaWJpbGl0eSBzdGF0ZSB3aWxsIGJlIGNoYW5nZSB0byBoaWRkZW4uCisgICAgTW9yZSBpbmZv
cm1hdGlvbiBhYm91dCB0aGlzIEhUTUw1IEFQSSBjYW4gYmUgZm91bmQgYXQgXGx7aHR0cDovL3d3
dy53My5vcmcvVFIvcGFnZS12aXNpYmlsaXR5L317VzNDIENhbmRpZGF0ZSBSZWNvbW1lbmRhdGlv
bjogUGFnZSBWaXNpYmlsaXR5fS4KKworICAgIFxub3RlIElmIHRoZSBldmVudCgpIG1ldGhvZCBp
cyByZWltcGxlbWVudGVkLCB0aGlzIG1ldGhvZCBpcyBub3QgY2FsbGVkLCB1bmxlc3MgZXhwbGlj
aXRseSBkb25lCisgICAgc28gaW4gdGhlIHJlaW1wbGVtZW50YXRpb24uCisKKyAgICBcbm90ZSBJ
ZiB0aGUgY3VycmVudCBwYWdlIHZpc2liaWxpdHkgc3RhdGUgYmVoYXZpb3VyIGRvZXNuJ3QgbWF0
Y2ggd2l0aCB3aGF0IHlvdSBleHBlY3QsCisgICAgeW91IHNob3VsZCByZWltcGxlbWVudCB0aGlz
IG1ldGhvZC4KKyovCit2b2lkIFFHcmFwaGljc1dlYlZpZXc6OnZpc2liaWxpdHlDaGFuZ2VFdmVu
dChRRXZlbnQqIGV2ZW50KQoreworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAg
ICAgICBpZiAoKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpTaG93KSB8fCAoZXZlbnQtPnR5cGUo
KSA9PSBRRXZlbnQ6OldpbmRvd0FjdGl2YXRlKSkgeworICAgICAgICAgICAgLyogY2hhbmdlIG9u
bHkgaWYgdGhlIHNjZW5lIGV4aXN0IGFuZCBpdCdzIHZpc2libGUgKi8KKyAgICAgICAgICAgIGlm
IChzY2VuZSgpICYmIHNjZW5lKCktPmlzQWN0aXZlKCkpCisgICAgICAgICAgICAgICAgZC0+cGFn
ZS0+ZC0+c2V0VmlzaWJpbGl0eVN0YXRlKHRydWUpOworICAgICAgICB9IGVsc2UgaWYgKChldmVu
dC0+dHlwZSgpID09IFFFdmVudDo6SGlkZSkgfHwgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpX
aW5kb3dEZWFjdGl2YXRlKSkgeworICAgICAgICAgICAgLyogY2hhbmdlIG9ubHkgaWYgdGhlIHNj
ZW5lIGV4aXN0ICovCisgICAgICAgICAgICBpZiAoc2NlbmUoKSkKKyAgICAgICAgICAgICAgICBk
LT5wYWdlLT5kLT5zZXRWaXNpYmlsaXR5U3RhdGUoZmFsc2UpOworICAgICAgICB9CisjZWxzZQor
ICAgIFFfVU5VU0VEKGV2ZW50KTsKKyNlbmRpZgorfQorCiAvKiEgXHJlaW1wCiAqLwogYm9vbCBR
R3JhcGhpY3NXZWJWaWV3OjpldmVudChRRXZlbnQqIGV2ZW50KQpAQCAtNDA2LDYgKzQzOCw4IEBA
IGJvb2wgUUdyYXBoaWNzV2ViVmlldzo6ZXZlbnQoUUV2ZW50KiBldmUKICAgICAvLyBSZS1pbXBs
ZW1lbnRlZCBpbiBvcmRlciB0byBhbGxvd3MgZml4aW5nIGV2ZW50LXJlbGF0ZWQgYnVncyBpbiBw
YXRjaCByZWxlYXNlcy4KIAogICAgIGlmIChkLT5wYWdlKSB7CisgICAgICAgIGlmICgoZXZlbnQt
PnR5cGUoKSA9PSBRRXZlbnQ6OlNob3cpIHx8IChldmVudC0+dHlwZSgpID09IFFFdmVudDo6V2lu
ZG93QWN0aXZhdGUpIHx8IChldmVudC0+dHlwZSgpID09IFFFdmVudDo6SGlkZSkgfHwgKGV2ZW50
LT50eXBlKCkgPT0gUUV2ZW50OjpXaW5kb3dEZWFjdGl2YXRlKSkKKyAgICAgICAgICAgIHZpc2li
aWxpdHlDaGFuZ2VFdmVudChldmVudCk7CiAgICAgICAgIGlmIChldmVudC0+dHlwZSgpID09IFFF
dmVudDo6UGFsZXR0ZUNoYW5nZSkKICAgICAgICAgICAgIGQtPnBhZ2UtPnNldFBhbGV0dGUocGFs
ZXR0ZSgpKTsKICNpZm5kZWYgUVRfTk9fQ09OVEVYVE1FTlUKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
cXQvV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmgJKHJldmlzaW9uIDE0NTgyNikKKysr
IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuaAkod29ya2luZyBj
b3B5KQpAQCAtOTIsNiArOTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1RpbGVkQmFja2luZ1N0
b3JlRnJvemVuKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUaWxlZEJhY2tpbmdTdG9yZUZyb3plbihi
b29sIGZyb3plbik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaWJpbGl0eUNoYW5nZUV2ZW50KFFF
dmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRHZW9tZXRyeShjb25zdCBRUmVjdEYmIHJlY3Qp
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHZW9tZXRyeSgpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludChRUGFpbnRlciosIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSogb3B0aW9ucywg
UVdpZGdldCogd2lkZ2V0ID0gMCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9x
d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdl
YnZpZXcuY3BwCShyZXZpc2lvbiAxNDU4MjYpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFw
aS9xd2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4NiwxMSArNjg2LDQyIEBAIGJvb2wg
UVdlYlZpZXc6OmZpbmRUZXh0KGNvbnN0IFFTdHJpbmcgJnMKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKKy8qIQorICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIGV2ZW50KFFFdmVu
dCogZXZlbnQpIG1ldGhvZCBvbmx5IGlmIGEgUVdlYlBhZ2UgaXMgYXNzb2NpYXRlZAorICAgIGFu
ZCBvbmx5IG9uIGV2ZW50IG9mIHR5cGUgSGlkZSwgU2hvdywgV2luZG93QWN0aXZhdGUgb3IgV2lu
ZG93RGVhY3RpdmF0ZS4KKyAgICBJZiB0aGUgZ2l2ZW4gXGEgZXZlbnQgdHlwZSBpcyBlcXVhbHMg
dG8gU2hvdyBvciBXaW5kb3dBY3RpdmF0ZSB0aGVuIHRoZSBwYWdlIHZpc2liaWxpdHkgc3RhdGUK
KyAgICB3aWxsIGJlIGNoYW5nZSB0byB2aXNpYmxlLgorICAgIE90aGVyd2lzZSBpZiB0aGUgZ2l2
ZW4gXGEgZXZlbnQgdHlwZSBpcyBlcXVhbHMgdG8gSGlkZSBvciBXaW5kb3dEZWFjdGl2YXRlIHRo
ZW4gdGhlIHBhZ2UKKyAgICB2aXNpYmlsaXR5IHN0YXRlIHdpbGwgYmUgY2hhbmdlIHRvIGhpZGRl
bi4KKyAgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgSFRNTDUgQVBJIGNhbiBiZSBmb3Vu
ZCBhdCBcbHtodHRwOi8vd3d3LnczLm9yZy9UUi9wYWdlLXZpc2liaWxpdHkvfXtXM0MgQ2FuZGlk
YXRlIFJlY29tbWVuZGF0aW9uOiBQYWdlIFZpc2liaWxpdHl9LgorCisgICAgXG5vdGUgVGhlIGlu
aXRpYWwgdmlzaWJpbGl0eSBzdGF0ZSBpcyBzZXQgdG8gaGlkZGVuLgorCisgICAgXG5vdGUgSWYg
dGhlIGV2ZW50KCkgbWV0aG9kIGlzIHJlaW1wbGVtZW50ZWQsIHRoaXMgbWV0aG9kIGlzIG5vdCBj
YWxsZWQsIHVubGVzcyBleHBsaWNpdGx5IGRvbmUKKyAgICBzbyBpbiB0aGUgcmVpbXBsZW1lbnRh
dGlvbi4KKworICAgIFxub3RlIElmIHRoZSBjdXJyZW50IHBhZ2UgdmlzaWJpbGl0eSBzdGF0ZSBi
ZWhhdmlvdXIgZG9lc24ndCBtYXRjaCB3aXRoIHdoYXQgeW91IGV4cGVjdCwKKyAgICB5b3Ugc2hv
dWxkIHJlaW1wbGVtZW50IHRoaXMgbWV0aG9kLgorKi8KK3ZvaWQgUVdlYlZpZXc6OnZpc2liaWxp
dHlDaGFuZ2VFdmVudChRRXZlbnQqIGUpCit7CisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9B
UEkpCisgICAgaWYgKChlLT50eXBlKCkgPT0gUUV2ZW50OjpTaG93KSB8fCAoZS0+dHlwZSgpID09
IFFFdmVudDo6V2luZG93QWN0aXZhdGUpKQorICAgICAgICBkLT5wYWdlLT5kLT5zZXRWaXNpYmls
aXR5U3RhdGUodHJ1ZSk7CisgICAgZWxzZSBpZiAoKGUtPnR5cGUoKSA9PSBRRXZlbnQ6OkhpZGUp
IHx8IChlLT50eXBlKCkgPT0gUUV2ZW50OjpXaW5kb3dEZWFjdGl2YXRlKSkKKyAgICAgICAgZC0+
cGFnZS0+ZC0+c2V0VmlzaWJpbGl0eVN0YXRlKGZhbHNlKTsKKyNlbHNlCisgICAgUV9VTlVTRUQo
ZXZlbnQpOworI2VuZGlmCit9CisKIC8qISBccmVpbXAKICovCiBib29sIFFXZWJWaWV3OjpldmVu
dChRRXZlbnQgKmUpCiB7CiAgICAgaWYgKGQtPnBhZ2UpIHsKKyAgICAgICAgaWYgKChlLT50eXBl
KCkgPT0gUUV2ZW50OjpTaG93KSB8fCAoZS0+dHlwZSgpID09IFFFdmVudDo6V2luZG93QWN0aXZh
dGUpIHx8IChlLT50eXBlKCkgPT0gUUV2ZW50OjpIaWRlKSB8fCAoZS0+dHlwZSgpID09IFFFdmVu
dDo6V2luZG93RGVhY3RpdmF0ZSkpCisgICAgICAgICAgICB2aXNpYmlsaXR5Q2hhbmdlRXZlbnQo
ZSk7CiAjaWZuZGVmIFFUX05PX0NPTlRFWFRNRU5VCiAgICAgICAgIGlmIChlLT50eXBlKCkgPT0g
UUV2ZW50OjpDb250ZXh0TWVudSkgewogICAgICAgICAgICAgaWYgKCFpc0VuYWJsZWQoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnZpZXcuaAkocmV2aXNpb24gMTQ1ODI2KQor
KysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtMTMxLDYgKzEzMSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJlc2l6ZUV2ZW50KFFSZXNp
emVFdmVudCopOwogICAgIHZvaWQgcGFpbnRFdmVudChRUGFpbnRFdmVudCopOwogCisgICAgdmly
dHVhbCB2b2lkIHZpc2liaWxpdHlDaGFuZ2VFdmVudChRRXZlbnQqKTsKICAgICB2aXJ0dWFsIFFX
ZWJWaWV3ICpjcmVhdGVXaW5kb3coUVdlYlBhZ2U6OldlYldpbmRvd1R5cGUgdHlwZSk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgY2hhbmdlRXZlbnQoUUV2ZW50Kik7CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDU4MjgpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMy0x
NCAgQmVuamFtaW4gRHVwb250ICAgPGJkdXBvbnRAbmRzLmNvbT4KKworICAgICAgICBbUXRdIEFk
ZCBQYWdlIFZpc2liaWxpdHkgQVBJIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNw
cDoKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6cmVzZXRQYWdlVmlzaWJpbGl0eSk6CisgICAgICAg
IChUZXN0UnVubmVyUXQ6OnNldFBhZ2VWaXNpYmlsaXR5KToKKwogMjAxMy0wMy0xNCAgU2ltb24g
SGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBEaXNh
YmxlIERSVCBvbiBXaW5kb3dzCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVu
bmVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5u
ZXJRdC5jcHAJKHJldmlzaW9uIDE0NTgyNikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rl
c3RSdW5uZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5OSwxMiArODk5LDE1IEBAIHZvaWQg
VGVzdFJ1bm5lclF0OjpzeW5jTG9jYWxTdG9yYWdlKCkKIAogdm9pZCBUZXN0UnVubmVyUXQ6OnJl
c2V0UGFnZVZpc2liaWxpdHkoKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAg
ICBtX2RydC0+cGFnZUFkYXB0ZXIoKS0+c2V0VmlzaWJpbGl0eVN0YXRlKGZhbHNlKTsKIH0KIAot
dm9pZCBUZXN0UnVubmVyUXQ6OnNldFBhZ2VWaXNpYmlsaXR5KGNvbnN0IGNoYXIqKQordm9pZCBU
ZXN0UnVubmVyUXQ6OnNldFBhZ2VWaXNpYmlsaXR5KGNvbnN0IGNoYXIqIHN0YXRlKQogewotICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICBpZiAoc3RhdGUgPT0gInZpc2libGUiKQor
ICAgICAgICBtX2RydC0+cGFnZUFkYXB0ZXIoKS0+c2V0VmlzaWJpbGl0eVN0YXRlKHRydWUpOwor
ICAgIGVsc2UgaWYgKHN0YXRlID09ICJoaWRkZW4iKQorICAgICAgICBtX2RydC0+cGFnZUFkYXB0
ZXIoKS0+c2V0VmlzaWJpbGl0eVN0YXRlKGZhbHNlKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyUXQ6
OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKGJvb2wpCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNDU4MjgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMy0wMy0xNCAgQmVuamFtaW4gRHVwb250ICAgPGJkdXBvbnRAbmRzLmNv
bT4KKworICAgICAgICBbUXRdIEFkZCBQYWdlIFZpc2liaWxpdHkgQVBJIHN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTQyMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vcXQv
ZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVzdC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL3BhZ2UtdmlzaWJpbGl0
eS10cmFuc2l0aW9uLXRlc3QuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMTMgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgYnl0ZWNvZGUgcGFyc2VyIGlzIHRv
byBhZ2dyZXNzaXZlIGFib3V0IGdldHRpbmcgcmlkIG9mIEdldExvY2FscyBvbiBjYXB0dXJlZCB2
YXJpYWJsZXMKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL3BhZ2Ut
dmlzaWJpbGl0eS10cmFuc2l0aW9uLXRlc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL3BhZ2UtdmlzaWJpbGl0eS10cmFuc2l0
aW9uLXRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVzdC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhh
dCBQYWdlIFZpc2liaWxpdHkgc3RhdGUgdmFsdWVzIGFyZSBjb3JyZWN0IGFuZCB0aGUgZXZlbnQg
Y2hhbmdlcyBhcmUgZmlyZWQgY29ycmVjdGx5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBkb2N1bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUgaXMgInZpc2libGUiCitQ
QVNTIGRvY3VtZW50LndlYmtpdEhpZGRlbiBpcyBmYWxzZQorUEFTUyBkb2N1bWVudC53ZWJraXRW
aXNpYmlsaXR5U3RhdGUgaXMgInZpc2libGUiCitQQVNTIGRvY3VtZW50LndlYmtpdEhpZGRlbiBp
cyBmYWxzZQorUEFTUyBkb2N1bWVudC53ZWJraXRWaXNpYmlsaXR5U3RhdGUgaXMgImhpZGRlbiIK
K1BBU1MgZG9jdW1lbnQud2Via2l0SGlkZGVuIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQud2Via2l0
VmlzaWJpbGl0eVN0YXRlIGlzICJoaWRkZW4iCitQQVNTIGRvY3VtZW50LndlYmtpdEhpZGRlbiBp
cyB0cnVlCitQQVNTIGRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSBpcyAidmlzaWJsZSIK
K1BBU1MgZG9jdW1lbnQud2Via2l0SGlkZGVuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LXRyYW5zaXRpb24tdGVzdC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL3BhZ2Utdmlz
aWJpbGl0eS10cmFuc2l0aW9uLXRlc3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL3BhZ2UtdmlzaWJpbGl0eS10cmFuc2l0aW9uLXRlc3Qu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJ
QyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1s
NC9zdHJpY3QuZHRkIj4KKworPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwiIGxhbmc9ImVuIj4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisgICAgICAg
IDx0aXRsZT5WaXNpYmlsaXR5IEFQSSB0ZXN0PC90aXRsZT4KKyAgICAgICAgPG1ldGEgbmFtZT0i
YXV0aG9yIiBjb250ZW50PSJiZHVwb250IiAvPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgICAg
IGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoYXQgUGFnZSBWaXNpYmlsaXR5IHN0YXRl
IHZhbHVlcyBhcmUgY29ycmVjdCBhbmQgdGhlIGV2ZW50IGNoYW5nZXMgYXJlIGZpcmVkIGNvcnJl
Y3RseS4iKTsKKworICAgICAgICAgICAgdmFyIFRlc3QgPSAoZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICB2YXIgdGhhdCA9IHt9LCBzdGF0ZUJvb2wsIHN0YXRlU3RyaW5nLCBjcHQg
PSAwLCB2aXNpYmlsaXR5Q2FsbEJhY2ssIG1ha2VQYWdlVmlzaWJsZSwgbWFrZVBhZ2VIaWRkZW4s
IGZpbmlzaFRlc3QsCisgICAgICAgICAgICAgICAgICAgIGNoZWNrSXNQYWdlVmlzaWJsZSwgY2hl
Y2tMYXN0RXZlbnRWYWx1ZUlzVmlzaWJsZSwgY2hlY2tJc1BhZ2VIaWRkZW4sIGNoZWNrTGFzdEV2
ZW50VmFsdWVJc0hpZGRlbiwKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tOYkV2ZW50UmVjZWl2
ZWQsIHRlc3RJbml0LCB0ZXN0SGlkZGVuVG9WaXNpYmxlLCB0ZXN0VmlzaWJsZVRvSGlkZGVuLCB0
ZXN0SGlkZGVuVG9IaWRkZW4sIHRlc3RWaXNpYmxlVG9WaXNpYmxlOworICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBmdW5jdGlvbiAobXNnKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0ID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB2aXNpYmls
aXR5Q2FsbEJhY2sgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZUJvb2wgPSBkb2N1bWVudC53ZWJraXRIaWRkZW47CisgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0ZVN0cmluZyA9IGRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNwdCsrOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbWFrZVBhZ2VWaXNpYmxlID0gZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRQYWdlVmlzaWJpbGl0eSgi
dmlzaWJsZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICAgICAgICAgIG1ha2VQYWdlSGlkZGVuID0gZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRQYWdlVmlzaWJpbGl0eSgiaGlk
ZGVuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBjaGVja05iRXZlbnRS
ZWNlaXZlZCA9IGZ1bmN0aW9uIChuYikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYoY3B0
ICE9PSBuYikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJJbnZhbGlkIG51
bWJlciBvZiBldmVudCByZWNlaXZlZCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
KHJlY2VpdmVkOiIgKyBjcHQgKyAiZXZlbnQocykgZXhwZWN0ZWQ6IiArIG5iICsgImV2ZW50KHMp
KSIpCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBjaGVja0lzUGFnZVZpc2li
bGUgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImRvY3VtZW50LndlYmtpdFZpc2liaWxpdHlTdGF0ZSIsICJ2aXNpYmxlIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCJkb2N1bWVudC53ZWJraXRIaWRk
ZW4iKTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNoZWNrTGFzdEV2ZW50VmFs
dWVJc1Zpc2libGUgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihz
dGF0ZVN0cmluZyAhPT0gInZpc2libGUiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3IoIkludmFsaWQgd2Via2l0VmlzaWJpbGl0eVN0YXRlIHdoZW4geW91IHJlY2VpdmVkIHRo
ZSBsYXN0IHdlYmtpdHZpc2liaWxpdHljaGFuZ2UgZXZlbnQgIiArCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIihyZWNlaXZlZDoiICsgc3RhdGVTdHJpbmcgKyAiIGV4cGVjdGVkOnZpc2li
bGUpIikKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmKHN0YXRlQm9vbCAhPT0gZmFsc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
cnJvcigiSW52YWxpZCB3ZWJraXRIaWRkZW4gd2hlbiB5b3UgcmVjZWl2ZWQgdGhlIGxhc3Qgd2Vi
a2l0dmlzaWJpbGl0eWNoYW5nZSBldmVudCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiKHJlY2VpdmVkOiIgKyBzdGF0ZUJvb2wgKyAiIGV4cGVjdGVkOmZhbHNlKSIpCisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAg
ICAgICAgICAgY2hlY2tJc1BhZ2VIaWRkZW4gPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LndlYmtpdFZpc2liaWxp
dHlTdGF0ZSIsICJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZG9jdW1lbnQud2Via2l0SGlkZGVuIik7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBjaGVja0xhc3RFdmVudFZhbHVl
SXNIaWRkZW4gPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihzdGF0
ZVN0cmluZyAhPT0gImhpZGRlbiIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
cigiSW52YWxpZCB3ZWJraXRWaXNpYmlsaXR5U3RhdGUgd2hlbiB5b3UgcmVjZWl2ZWQgdGhlIGxh
c3Qgd2Via2l0dmlzaWJpbGl0eWNoYW5nZSBldmVudCAiICsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiKHJlY2VpdmVkOiIgKyBzdGF0ZVN0cmluZyArICIgZXhwZWN0ZWQ6aGlkZGVuKSIp
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZihz
dGF0ZUJvb2wgIT09IHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigi
SW52YWxpZCB3ZWJraXRIaWRkZW4gd2hlbiB5b3UgcmVjZWl2ZWQgdGhlIGxhc3Qgd2Via2l0dmlz
aWJpbGl0eWNoYW5nZSBldmVudCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKHJl
Y2VpdmVkOiIgKyBzdGF0ZUJvb2wgKyAiIGV4cGVjdGVkOnRydWUpIikKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgIHRlc3RJbml0ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY2hlY2tJc1BhZ2VWaXNpYmxlKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjaGVja05iRXZlbnRSZWNlaXZlZCgwKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRlc3RWaXNpYmxlVG9WaXNp
YmxlID0gZnVuY3Rpb24gKGV4cGVjdGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYWtl
UGFnZVZpc2libGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSXNQYWdlVmlzaWJs
ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tOYkV2ZW50UmVjZWl2ZWQoZXhwZWN0
ZWQpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdEhpZGRlblRvSGlkZGVuID0gZnVuY3Rpb24gKGV4cGVjdGVkKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlUGFnZUhpZGRlbigpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY2hlY2tJc1BhZ2VIaWRkZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNoZWNrTmJFdmVudFJlY2VpdmVkKGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRlc3RWaXNpYmxlVG9I
aWRkZW4gPSBmdW5jdGlvbiAoZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1h
a2VQYWdlSGlkZGVuKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lzUGFnZUhpZGRl
bigpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tMYXN0RXZlbnRWYWx1ZUlzSGlkZGVu
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja05iRXZlbnRSZWNlaXZlZChleHBlY3Rl
ZCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICB0ZXN0SGlkZGVuVG9WaXNpYmxlID0gZnVuY3Rpb24gKGV4cGVjdGVkKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlUGFnZVZpc2libGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNoZWNrSXNQYWdlVmlzaWJsZSgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgY2hlY2tMYXN0RXZlbnRWYWx1ZUlzVmlzaWJsZSgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgY2hlY2tOYkV2ZW50UmVjZWl2ZWQoZXhwZWN0ZWQpOworICAgICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdGhhdC5zdGFydFRl
c3QgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRF
dmVudExpc3RlbmVyKCd3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlJywgdmlzaWJpbGl0eUNhbGxCYWNr
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0SW5pdCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgLyogTm8gZXZlbnQgc2hvdWxkIGJlIHJlY2VpdmVkICovCisgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0VmlzaWJsZVRvVmlzaWJsZSgwKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIDEgbW9yZSBldmVudCBzaG91bGQgYmUgcmVjZWl2ZWQgKi8KKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RWaXNpYmxlVG9IaWRkZW4oMSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBObyBldmVudCBzaG91bGQgYmUgcmVjZWl2ZWQgKi8KKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RIaWRkZW5Ub0hpZGRlbigxKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8qIDEgbW9yZSBldmVudCBzaG91bGQgYmUgcmVjZWl2ZWQgKi8KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RIaWRkZW5Ub1Zpc2libGUoMik7CisgICAgICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhhdDsKKyAg
ICAgICAgICAgICAgICB9KCkpOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgVGVzdC5zdGFydFRlc3QoKSk7CisgICAgICAgIDwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="214595"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206447</attachid>
            <date>2013-07-11 05:03:20 -0700</date>
            <delta_ts>2013-07-11 05:13:09 -0700</delta_ts>
            <desc>New QWebPage API (with test): void QWebPage::setVisibilityState(bool visible)</desc>
            <filename>patch_109422_16.patch</filename>
            <type>text/plain</type>
            <size>7528</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTI1NjYpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA3LTExICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAo
UVdlYlBhZ2VBZGFwdGVyOjppbml0aWFsaXplV2ViQ29yZVBhZ2UpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oOgorICAgICAgICAqIFdpZGdldEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAg
KiBXaWRnZXRBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdl
YnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpjaGFuZ2VWaXNpYmlsaXR5U3RhdGUp
OgorCiAyMDEzLTA3LTAxICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBjb25zdW1hYmxlIHVzZXIgZ2VzdHVyZXMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRh
cHRlci5jcHAJKHJldmlzaW9uIDE1MjU2NSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCwx
NyBAQCBzdGF0aWMgdm9pZCBvcGVuTmV3V2luZG93KGNvbnN0IFFVcmwmIHVyCiAgICAgfQogfQog
Cit2b2lkIFFXZWJQYWdlQWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKGJvb2wgdmlzaWJsZSkK
K3sKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAoIXBhZ2UpCisgICAg
ICAgIHJldHVybjsKKyAgICBwYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUodmlzaWJsZSA/IFdlYkNv
cmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlIDogV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlT
dGF0ZUhpZGRlbiwgZmFsc2UpOworI2Vsc2UKKyAgICBRX1VOVVNFRCh2aXNpYmxlKTsKKyNlbmRp
ZgorfQorCiBRV2ViUGFnZUFkYXB0ZXI6OlFXZWJQYWdlQWRhcHRlcigpCiAgICAgOiBzZXR0aW5n
cygwKQogICAgICwgcGFnZSgwKQpAQCAtMTk0LDYgKzIwNSw5IEBAIHZvaWQgUVdlYlBhZ2VBZGFw
dGVyOjppbml0aWFsaXplV2ViQ29yZVAKICAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3
IERyYWdDbGllbnRRdChwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQpOwogICAgIHBhZ2VDbGllbnRz
Lmluc3BlY3RvckNsaWVudCA9IG5ldyBJbnNwZWN0b3JDbGllbnRRdCh0aGlzKTsKICAgICBwYWdl
ID0gbmV3IFBhZ2UocGFnZUNsaWVudHMpOworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJ
KQorICAgIHBhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0
YXRlSGlkZGVuLCB0cnVlKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAg
IGlmICh1c2VNb2NrKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FX
ZWJQYWdlQWRhcHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHJldmlzaW9uIDE1MjU2NSkKKysrIFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0Nyw2ICsyNDcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUFuZFNldEN1
cnJlbnRDb250ZXh0TWVudShjb25zdCBRTGlzdDxNZW51SXRlbURlc2NyaXB0aW9uPiYsIFFCaXRB
cnJheSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlU2Nyb2xsYmFyQ29udGV4dE1lbnVF
dmVudChRQ29udGV4dE1lbnVFdmVudCosIGJvb2wsIFNjcm9sbERpcmVjdGlvbiosIFNjcm9sbEdy
YW51bGFyaXR5KikgPSAwOwogCisgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGUoYm9vbCk7CisK
ICAgICBzdGF0aWMgUVdlYlBhZ2VBZGFwdGVyKiBraXQoV2ViQ29yZTo6UGFnZSopOwogICAgIFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3Q7CiAgICAg
dm9pZCByZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4p
OwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24g
MTUyNTY1KQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMTM4LDYgKzMxMzgsMjAgQEAgcXVpbnQ2NCBRV2ViUGFnZTo6Ynl0ZXNS
ZWNlaXZlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGQtPm1fYnl0ZXNSZWNlaXZlZDsKIH0KIAorCisv
KiEKKyAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgd2ViIHBhZ2UgdmlzaWJp
bGl0eSBzdGF0ZS4gSWYgdGhlIHZpc2liaWxpdHkKKyAgICBzdGF0ZSBpcyB0aGUgc2FtZSBhcyB0
aGUgcHJldmlvdXMgc2V0LCBub3RoaW5nIGlzIGJlaW5nIGRvbmUuCisgICAgTW9yZSBpbmZvcm1h
dGlvbiBhYm91dCB0aGlzIEhUTUw1IEFQSSBjYW4gYmUgZm91bmQgYXQgXGx7aHR0cDovL3d3dy53
My5vcmcvVFIvcGFnZS12aXNpYmlsaXR5L317VzNDIENhbmRpZGF0ZSBSZWNvbW1lbmRhdGlvbjog
UGFnZSBWaXNpYmlsaXR5fS4KKworICAgIFxhIHZpc2libGUgc3BlY2lmaWVzIGlmIHRoZSBwYWdl
IGFyZSB2aXNpYmxlIG9yIG5vdC4KKyovCit2b2lkIFFXZWJQYWdlOjpzZXRWaXNpYmlsaXR5U3Rh
dGUoYm9vbCB2aXNpYmxlKQoreworICAgIGQtPnNldFZpc2liaWxpdHlTdGF0ZSh2aXNpYmxlKTsK
K30KKworCiAvKiEKICAgICBcc2luY2UgNC44CiAgICAgXGZuIHZvaWQgUVdlYlBhZ2U6OnZpZXdw
b3J0Q2hhbmdlUmVxdWVzdGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3
ZWJwYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBh
Z2UuaAkocmV2aXNpb24gMTUyNTY1KQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdl
YnBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSw4IEBAIHB1YmxpYzoKICAgICBx
dWludDY0IHRvdGFsQnl0ZXMoKSBjb25zdDsKICAgICBxdWludDY0IGJ5dGVzUmVjZWl2ZWQoKSBj
b25zdDsKIAorICAgIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlKGJvb2wgdmlzaWJsZSk7CisKICAg
ICBib29sIGhhc1NlbGVjdGlvbigpIGNvbnN0OwogICAgIFFTdHJpbmcgc2VsZWN0ZWRUZXh0KCkg
Y29uc3Q7CiAgICAgUVN0cmluZyBzZWxlY3RlZEh0bWwoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHJldmlzaW9u
IDE1MjU2NSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCwxMCBAQCBwcml2YXRlIFFfU0xPVFM6
CiAgICAgdm9pZCBzY3JlZW5zaG90X2RhdGEoKTsKICAgICB2b2lkIHNjcmVlbnNob3QoKTsKIAor
I2lmIEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJCisgICAgdm9pZCBjaGFuZ2VWaXNpYmlsaXR5
U3RhdGUoKTsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9X
RUJHTAogICAgIHZvaWQgYWNjZWxlcmF0ZWRXZWJHTFNjcmVlbnNob3RXaXRob3V0VmlldygpOwog
ICAgIHZvaWQgdW5hY2NlbGVyYXRlZFdlYkdMU2NyZWVuc2hvdFdpdGhvdXRWaWV3KCk7CkBAIC0z
MTI4LDYgKzMxMzIsNTIgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6Om1hY0NvcHlVbmljb2RlVG9DbGlw
YgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSQordm9pZCB0c3Rf
UVdlYlBhZ2U6OmNoYW5nZVZpc2liaWxpdHlTdGF0ZSgpCit7CisgICAgUVZhcmlhbnQgc3RhdGVC
b29sLCBzdGF0ZVN0cmluZywgY3B0OworCisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2V0SHRt
bCgiPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgp
LT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBzdGF0ZUJvb2wgPSB1bmRlZmluZWQsIHN0YXRlU3Ry
aW5nID0gdW5kZWZpbmVkLCBjcHQgPSAwOyB2YXIgdmlzaWJpbGl0eUNhbGxCYWNrID0gZnVuY3Rp
b24gKCkge3N0YXRlQm9vbCA9IGRvY3VtZW50Wyd3ZWJraXRIaWRkZW4nXTsgc3RhdGVTdHJpbmcg
PSBkb2N1bWVudFsnd2Via2l0VmlzaWJpbGl0eVN0YXRlJ107IGNwdCsrO307ZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcignd2Via2l0dmlzaWJpbGl0eWNoYW5nZScsIHZpc2liaWxpdHlDYWxsQmFj
aywgZmFsc2UpOyIpOworCisgICAgLy8gVGhlIHZpYmlsaXR5IHN0YXRlIHNob3VsZCBiZSBpbml0
aWFsaXNlZCB0byBoaWRkZW4uCisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRIaWRkZW4iKTsKKyAgICBRVkVSSUZZ
KHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgp
KTsKKyAgICBzdGF0ZVN0cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgiZG9jdW1lbnQud2Via2l0VmlzaWJpbGl0eVN0YXRlIik7CisgICAgUVZFUklGWShzdGF0
ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmlu
ZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKworICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0
YXRlKHRydWUpOworICAgIC8vIFdlIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQg
YW5kCisJLy8gdmlzaWJpbGl0eSBwcm9wZXJ0aWVzIGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3Rs
eQorICAgIHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50
OjpCb29sICYmICFzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9wYWdl
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFW
RVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJp
bmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IG1fcGFnZS0+
bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQu
dHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMSk7CisKKyAg
ICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShmYWxzZSk7CisgICAgLy8gV2UgY2hlY2sgaWYg
YSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQKKwkvLyB2aXNpYmlsaXR5IHByb3BlcnRpZXMg
aGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5CisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0
YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsK
KyAgICBzdGF0ZVN0cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFy
aWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVu
IikpOworICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgi
Y3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0
LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZSh0cnVl
KTsKKyAgICAvLyBXZSBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVkIGFuZAorCS8v
IHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkKKyAgICBz
dGF0ZUJvb2wgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRl
Qm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAm
JiAhc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IG1fcGFnZS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0
YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3Ry
aW5nKCkgPT0gUVN0cmluZygidmlzaWJsZSIpKTsKKyAgICBjcHQgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9
PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDMpOworfQorI2VuZGlmCisK
IHZvaWQgdHN0X1FXZWJQYWdlOjpjb250ZXh0TWVudUNvcHkoKQogewogICAgIFFXZWJWaWV3IHZp
ZXc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206449</attachid>
            <date>2013-07-11 05:13:09 -0700</date>
            <delta_ts>2013-07-31 07:40:34 -0700</delta_ts>
            <desc>New QWebPage API (with test): void QWebPage::setVisibilityState(bool visible) (2)</desc>
            <filename>patch_109422_17.patch</filename>
            <type>text/plain</type>
            <size>7537</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTI1NjYpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA3LTExICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAo
UVdlYlBhZ2VBZGFwdGVyOjppbml0aWFsaXplV2ViQ29yZVBhZ2UpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oOgorICAgICAgICAqIFdpZGdldEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAg
KiBXaWRnZXRBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdl
YnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpjaGFuZ2VWaXNpYmlsaXR5U3RhdGUp
OgorCiAyMDEzLTA3LTAxICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBjb25zdW1hYmxlIHVzZXIgZ2VzdHVyZXMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRh
cHRlci5jcHAJKHJldmlzaW9uIDE1MjU2NSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCwx
NyBAQCBzdGF0aWMgdm9pZCBvcGVuTmV3V2luZG93KGNvbnN0IFFVcmwmIHVyCiAgICAgfQogfQog
Cit2b2lkIFFXZWJQYWdlQWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKGJvb2wgdmlzaWJsZSkK
K3sKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAoIXBhZ2UpCisgICAg
ICAgIHJldHVybjsKKyAgICBwYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUodmlzaWJsZSA/IFdlYkNv
cmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlIDogV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlT
dGF0ZUhpZGRlbiwgZmFsc2UpOworI2Vsc2UKKyAgICBRX1VOVVNFRCh2aXNpYmxlKTsKKyNlbmRp
ZgorfQorCiBRV2ViUGFnZUFkYXB0ZXI6OlFXZWJQYWdlQWRhcHRlcigpCiAgICAgOiBzZXR0aW5n
cygwKQogICAgICwgcGFnZSgwKQpAQCAtMTk0LDYgKzIwNSw5IEBAIHZvaWQgUVdlYlBhZ2VBZGFw
dGVyOjppbml0aWFsaXplV2ViQ29yZVAKICAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3
IERyYWdDbGllbnRRdChwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQpOwogICAgIHBhZ2VDbGllbnRz
Lmluc3BlY3RvckNsaWVudCA9IG5ldyBJbnNwZWN0b3JDbGllbnRRdCh0aGlzKTsKICAgICBwYWdl
ID0gbmV3IFBhZ2UocGFnZUNsaWVudHMpOworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJ
KQorICAgIHBhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0
YXRlSGlkZGVuLCB0cnVlKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAg
IGlmICh1c2VNb2NrKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FX
ZWJQYWdlQWRhcHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHJldmlzaW9uIDE1MjU2NSkKKysrIFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0Nyw2ICsyNDcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUFuZFNldEN1
cnJlbnRDb250ZXh0TWVudShjb25zdCBRTGlzdDxNZW51SXRlbURlc2NyaXB0aW9uPiYsIFFCaXRB
cnJheSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlU2Nyb2xsYmFyQ29udGV4dE1lbnVF
dmVudChRQ29udGV4dE1lbnVFdmVudCosIGJvb2wsIFNjcm9sbERpcmVjdGlvbiosIFNjcm9sbEdy
YW51bGFyaXR5KikgPSAwOwogCisgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGUoYm9vbCk7CisK
ICAgICBzdGF0aWMgUVdlYlBhZ2VBZGFwdGVyKiBraXQoV2ViQ29yZTo6UGFnZSopOwogICAgIFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3Q7CiAgICAg
dm9pZCByZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4p
OwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24g
MTUyNTY1KQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMTM4LDYgKzMxMzgsMjAgQEAgcXVpbnQ2NCBRV2ViUGFnZTo6Ynl0ZXNS
ZWNlaXZlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGQtPm1fYnl0ZXNSZWNlaXZlZDsKIH0KIAorCisv
KiEKKyAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgd2ViIHBhZ2UgdmlzaWJp
bGl0eSBzdGF0ZS4gSWYgdGhlIHZpc2liaWxpdHkKKyAgICBzdGF0ZSBpcyB0aGUgc2FtZSBhcyB0
aGUgcHJldmlvdXMgc2V0LCBub3RoaW5nIGlzIGJlaW5nIGRvbmUuCisgICAgTW9yZSBpbmZvcm1h
dGlvbiBhYm91dCB0aGlzIEhUTUw1IEFQSSBjYW4gYmUgZm91bmQgYXQgXGx7aHR0cDovL3d3dy53
My5vcmcvVFIvcGFnZS12aXNpYmlsaXR5L317VzNDIENhbmRpZGF0ZSBSZWNvbW1lbmRhdGlvbjog
UGFnZSBWaXNpYmlsaXR5fS4KKworICAgIFxhIHZpc2libGUgc3BlY2lmaWVzIGlmIHRoZSBwYWdl
IGFyZSB2aXNpYmxlIG9yIG5vdC4KKyovCit2b2lkIFFXZWJQYWdlOjpzZXRWaXNpYmlsaXR5U3Rh
dGUoYm9vbCB2aXNpYmxlKQoreworICAgIGQtPnNldFZpc2liaWxpdHlTdGF0ZSh2aXNpYmxlKTsK
K30KKworCiAvKiEKICAgICBcc2luY2UgNC44CiAgICAgXGZuIHZvaWQgUVdlYlBhZ2U6OnZpZXdw
b3J0Q2hhbmdlUmVxdWVzdGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3
ZWJwYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBh
Z2UuaAkocmV2aXNpb24gMTUyNTY1KQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdl
YnBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSw4IEBAIHB1YmxpYzoKICAgICBx
dWludDY0IHRvdGFsQnl0ZXMoKSBjb25zdDsKICAgICBxdWludDY0IGJ5dGVzUmVjZWl2ZWQoKSBj
b25zdDsKIAorICAgIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlKGJvb2wgdmlzaWJsZSk7CisKICAg
ICBib29sIGhhc1NlbGVjdGlvbigpIGNvbnN0OwogICAgIFFTdHJpbmcgc2VsZWN0ZWRUZXh0KCkg
Y29uc3Q7CiAgICAgUVN0cmluZyBzZWxlY3RlZEh0bWwoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHJldmlzaW9u
IDE1MjU2NSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCwxMCBAQCBwcml2YXRlIFFfU0xPVFM6
CiAgICAgdm9pZCBzY3JlZW5zaG90X2RhdGEoKTsKICAgICB2b2lkIHNjcmVlbnNob3QoKTsKIAor
I2lmIEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJCisgICAgdm9pZCBjaGFuZ2VWaXNpYmlsaXR5
U3RhdGUoKTsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9X
RUJHTAogICAgIHZvaWQgYWNjZWxlcmF0ZWRXZWJHTFNjcmVlbnNob3RXaXRob3V0VmlldygpOwog
ICAgIHZvaWQgdW5hY2NlbGVyYXRlZFdlYkdMU2NyZWVuc2hvdFdpdGhvdXRWaWV3KCk7CkBAIC0z
MTI4LDYgKzMxMzIsNTIgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6Om1hY0NvcHlVbmljb2RlVG9DbGlw
YgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSQordm9pZCB0c3Rf
UVdlYlBhZ2U6OmNoYW5nZVZpc2liaWxpdHlTdGF0ZSgpCit7CisgICAgUVZhcmlhbnQgc3RhdGVC
b29sLCBzdGF0ZVN0cmluZywgY3B0OworCisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2V0SHRt
bCgiPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgp
LT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBzdGF0ZUJvb2wgPSB1bmRlZmluZWQsIHN0YXRlU3Ry
aW5nID0gdW5kZWZpbmVkLCBjcHQgPSAwOyB2YXIgdmlzaWJpbGl0eUNhbGxCYWNrID0gZnVuY3Rp
b24gKCkge3N0YXRlQm9vbCA9IGRvY3VtZW50Wyd3ZWJraXRIaWRkZW4nXTsgc3RhdGVTdHJpbmcg
PSBkb2N1bWVudFsnd2Via2l0VmlzaWJpbGl0eVN0YXRlJ107IGNwdCsrO307ZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcignd2Via2l0dmlzaWJpbGl0eWNoYW5nZScsIHZpc2liaWxpdHlDYWxsQmFj
aywgZmFsc2UpOyIpOworCisgICAgLy8gVGhlIHZpYmlsaXR5IHN0YXRlIHNob3VsZCBiZSBpbml0
aWFsaXNlZCB0byBoaWRkZW4uCisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRIaWRkZW4iKTsKKyAgICBRVkVSSUZZ
KHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgp
KTsKKyAgICBzdGF0ZVN0cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgiZG9jdW1lbnQud2Via2l0VmlzaWJpbGl0eVN0YXRlIik7CisgICAgUVZFUklGWShzdGF0
ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmlu
ZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKworICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0
YXRlKHRydWUpOworICAgIC8vIFdlIGNoZWNrIGlmIGEgSlMgZXZlbnQgaGFzIGJlZW4gZmlyZWQg
YW5kCisgICAgLy8gdmlzaWJpbGl0eSBwcm9wZXJ0aWVzIGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJl
Y3RseQorICAgIHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJp
YW50OjpCb29sICYmICFzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9w
YWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAg
IFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVT
dHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShj
cHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMSk7CisK
KyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShmYWxzZSk7CisgICAgLy8gV2UgY2hlY2sg
aWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQKKyAgICAvLyB2aXNpYmlsaXR5IHByb3Bl
cnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5CisgICAgc3RhdGVCb29sID0gbV9wYWdl
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVS
SUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9v
bCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9
PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygi
aGlkZGVuIikpOworICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUg
JiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0
ZSh0cnVlKTsKKyAgICAvLyBXZSBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVkIGFu
ZAorICAgIC8vIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0
bHkKKyAgICBzdGF0ZUJvb2wgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFu
dDo6Qm9vbCAmJiAhc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBR
VkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3Ry
aW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygidmlzaWJsZSIpKTsKKyAgICBjcHQgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0
LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDMpOworfQor
I2VuZGlmCisKIHZvaWQgdHN0X1FXZWJQYWdlOjpjb250ZXh0TWVudUNvcHkoKQogewogICAgIFFX
ZWJWaWV3IHZpZXc7Cg==
</data>
<flag name="review"
          id="228126"
          type_id="1"
          status="-"
          setter="bedupont"
    />
    <flag name="commit-queue"
          id="228127"
          type_id="3"
          status="-"
          setter="bedupont"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207923</attachid>
            <date>2013-08-01 07:41:07 -0700</date>
            <delta_ts>2013-08-01 08:03:48 -0700</delta_ts>
            <desc> New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) </desc>
            <filename>patch_109422_18.patch</filename>
            <type>text/plain</type>
            <size>14392</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTM1ODMpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA4LTAxICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwOTQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoK
KyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6UVdlYlBhZ2VBZGFwdGVyKToKKyAgICAgICAgKFFX
ZWJQYWdlQWRhcHRlcjo6aW5pdGlhbGl6ZVdlYkNvcmVQYWdlKToKKyAgICAgICAgKFFXZWJQYWdl
QWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6
dmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0
ZXIuaDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBh
Z2U6OnZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0VmlzaWJpbGl0eVN0
YXRlKToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiB0ZXN0cy9x
d2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpjaGFuZ2VW
aXNpYmlsaXR5U3RhdGUpOgorCiAyMDEzLTA3LTMxICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29t
cGFueTEwMC5uZXQ+CiAKICAgICAgICAgVXNlIGVtcHR5U3RyaW5nIGluc3RlYWQgb2YgU3RyaW5n
KCIiKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdl
YlBhZ2VBZGFwdGVyLmNwcAkocmV2aXNpb24gMTUzNTgzKQorKysgU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgs
NiArMTc4LDExIEBAIFFXZWJQYWdlQWRhcHRlcjo6UVdlYlBhZ2VBZGFwdGVyKCkKICAgICAsIG1f
dG90YWxCeXRlcygwKQogICAgICwgbV9ieXRlc1JlY2VpdmVkKCkKICAgICAsIG5ldHdvcmtNYW5h
Z2VyKDApCisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgLCBtX3Zpc2liaWxp
dHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKQorI2Vsc2UKKyAgICAsIG1fdmlzaWJp
bGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5QXBpVW5hdmFpbGFibGUpCisjZW5kaWYKIHsKICAgICBX
ZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiB9CkBAIC0xOTQsNiArMTk5LDkgQEAgdm9p
ZCBRV2ViUGFnZUFkYXB0ZXI6OmluaXRpYWxpemVXZWJDb3JlUAogICAgIHBhZ2VDbGllbnRzLmRy
YWdDbGllbnQgPSBuZXcgRHJhZ0NsaWVudFF0KHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCk7CiAg
ICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gbmV3IEluc3BlY3RvckNsaWVudFF0KHRo
aXMpOwogICAgIHBhZ2UgPSBuZXcgUGFnZShwYWdlQ2xpZW50cyk7CisjaWYgRU5BQkxFKFBBR0Vf
VklTSUJJTElUWV9BUEkpCisgICAgcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKHN0YXRpY19jYXN0
PFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGU+KG1fdmlzaWJpbGl0eVN0YXRlKSwgdHJ1ZSk7
CisjZW5kaWYKIAogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICBpZiAodXNlTW9jaykgewpA
QCAtMjgwLDYgKzI4OCwyMyBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6cmVnaXN0ZXJVbmRvU3Rl
cChXCiAgICAgY3JlYXRlVW5kb1N0ZXAoUVNoYXJlZFBvaW50ZXI8VW5kb1N0ZXBRdD4obmV3IFVu
ZG9TdGVwUXQoc3RlcCkpKTsKIH0KIAordm9pZCBRV2ViUGFnZUFkYXB0ZXI6OnNldFZpc2liaWxp
dHlTdGF0ZShRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNpYmlsaXR5U3RhdGUgc3RhdGUpCit7Cisj
aWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgaWYgKCFwYWdlIHx8IHN0YXRlID09
IFBhZ2VWaXNpYmlsaXR5QXBpVW5hdmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdl
LT5zZXRWaXNpYmlsaXR5U3RhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGFnZVZpc2liaWxpdHlT
dGF0ZT4oc3RhdGUpLCBmYWxzZSk7CisgICAgbV92aXNpYmlsaXR5U3RhdGUgPSBzdGF0aWNfY2Fz
dDxRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNpYmlsaXR5U3RhdGU+KHBhZ2UtPnZpc2liaWxpdHlT
dGF0ZSgpKTsKKyNlbHNlCisgICAgUV9VTlVTRUQoc3RhdGUpOworI2VuZGlmCit9CisKK1FXZWJQ
YWdlQWRhcHRlcjo6UGFnZVZpc2liaWxpdHlTdGF0ZSBRV2ViUGFnZUFkYXB0ZXI6OnZpc2liaWxp
dHlTdGF0ZSgpCit7CisgICAgcmV0dXJuIG1fdmlzaWJpbGl0eVN0YXRlOworfQorCiB2b2lkIFFX
ZWJQYWdlQWRhcHRlcjo6c2V0TmV0d29ya0FjY2Vzc01hbmFnZXIoUU5ldHdvcmtBY2Nlc3NNYW5h
Z2VyICptYW5hZ2VyKQogewogICAgIGlmIChtYW5hZ2VyID09IG5ldHdvcmtNYW5hZ2VyKQpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRl
ci5oCShyZXZpc2lvbiAxNTM1ODMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1FXZWJQYWdlQWRhcHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDE1IEBAIHB1
YmxpYzoKICAgICAgICAgU2Nyb2xsQnlEb2N1bWVudAogICAgIH07CiAKKyAgICAvLyBNdXN0IG1h
dGNoIHdpdGggdmFsdWVzIG9mIFBhZ2VWaXNpYmlsaXR5U3RhdGUgZW51bSBmcm9tIFBhZ2VWaXNp
YmlsaXR5U3RhdGUuaC4KKyAgICBlbnVtIFBhZ2VWaXNpYmlsaXR5U3RhdGUgeworICAgICAgICBQ
YWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSwKKyAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0ZUhp
ZGRlbiwKKyAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRlciwKKyAgICAgICAgUGFn
ZVZpc2liaWxpdHlTdGF0ZVByZXZpZXcsCisgICAgICAgIFBhZ2VWaXNpYmlsaXR5QXBpVW5hdmFp
bGFibGUKKyAgICB9OworCiAgICAgUVdlYlBhZ2VBZGFwdGVyKCk7CiAgICAgdmlydHVhbCB+UVdl
YlBhZ2VBZGFwdGVyKCk7CiAKQEAgLTI0Nyw2ICsyNTYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZUFuZFNldEN1cnJlbnRDb250ZXh0TWVudShjb25zdCBRTGlzdDxNZW51SXRl
bURlc2NyaXB0aW9uPiYsIFFCaXRBcnJheSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxl
U2Nyb2xsYmFyQ29udGV4dE1lbnVFdmVudChRQ29udGV4dE1lbnVFdmVudCosIGJvb2wsIFNjcm9s
bERpcmVjdGlvbiosIFNjcm9sbEdyYW51bGFyaXR5KikgPSAwOwogCisgICAgdm9pZCBzZXRWaXNp
YmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0ZSk7CisgICAgUGFnZVZpc2liaWxpdHlTdGF0
ZSB2aXNpYmlsaXR5U3RhdGUoKTsKKwogICAgIHN0YXRpYyBRV2ViUGFnZUFkYXB0ZXIqIGtpdChX
ZWJDb3JlOjpQYWdlKik7CiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRB
cmd1bWVudHMoKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OlVuZG9TdGVwPik7CkBAIC0zNTQsNiArMzY2LDggQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIFFOZXR3b3JrQWNjZXNzTWFuYWdlciAqbmV0d29ya01hbmFnZXI7CisgICAg
UGFnZVZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKKwogCiBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgZHJ0UnVuOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdl
YnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJw
YWdlLmNwcAkocmV2aXNpb24gMTUzNTgzKQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkv
cXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTM5LDYgKzMxMzksMzYgQEAgcXVpbnQ2
NCBRV2ViUGFnZTo6Ynl0ZXNSZWNlaXZlZCgpIGNvbnN0CiB9CiAKIC8qIQorICAgIFJldHVybnMg
dGhlIGN1cnJlbnQgcGFnZSB2aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSBjdXJyZW50IHBhZ2UuCisK
KyAgICBcc2Egc2V0VmlzaWJpbGl0eVN0YXRlKCkKKyovCitRV2ViUGFnZTo6UGFnZVZpc2liaWxp
dHlTdGF0ZSBRV2ViUGFnZTo6dmlzaWJpbGl0eVN0YXRlKCkKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8UVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGU+KGQtPnZpc2liaWxpdHlTdGF0ZSgp
KTsKK30KKworLyohCisgICAgVGhpcyBtZXRob2QgaXMgdXNlZCB0byBjaGFuZ2UgdGhlIHBhZ2Ug
dmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgY3VycmVudCBwYWdlLgorICAgIEl0IHNob3VsZCBiZSBj
YWxsZWQgYnkgUXQgYXBwbGljYXRpb25zIHdobyB3YW50IHRvIG5vdGlmeSBKYXZhc2NyaXB0IGFw
cGxpY2F0aW9uCisgICAgdGhhdCB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBoYXMgY2hhbmdlZCAoZWcu
IGJ5IHJlaW1wbGVtZW50aW5nIHNldFZpc2libGUgZnVuY3Rpb24gb2YgUVdpZGdldCkuCisgICAg
VGhlIHZpc2liaWxpdHkgc3RhdGUgd2lsbCBiZSB1cGRhdGVkIHdpdGggdGhlIFxhIHN0YXRlIHBh
cmFtZXRlciB2YWx1ZSBvbmx5IGlmIGl0J3MgZGlmZmVyZW50IGZyb20gdGhlIHByZXZpb3VzIHNl
dAorICAgIGFuZCBmcm9tIFBhZ2VWaXNpYmlsaXR5QXBpVW5hdmFpbGFibGUgdmFsdWUuIFRoZW4s
IEhUTUwgRE9NIERvY3VtZW50IE9iamVjdCBhdHRyaWJ1dGVzICdoaWRkZW4nIGFuZCAndmlzaWJp
bGl0eVN0YXRlJworICAgIHdpbGwgYmUgdXBkYXRlZCB0byB0aGUgY29ycmVjdCB2YWx1ZSBhbmQg
YSAndmlzaWJsaXR5Y2hhbmdlJyBldmVudCB3aWxsIGJlIGZpcmVkLgorICAgIE1vcmUgaW5mb3Jt
YXRpb24gYWJvdXQgdGhpcyBIVE1MNSBBUEkgY2FuIGJlIGZvdW5kIGF0IFxse2h0dHA6Ly93d3cu
dzMub3JnL1RSL3BhZ2UtdmlzaWJpbGl0eS99e1czQyBSZWNvbW1lbmRhdGlvbjogUGFnZSBWaXNp
YmlsaXR5fS4KKworICAgIFxub3RlIFRoZSBpbml0aWFsIHN0YXRlIGlzIHNldCB0byBQYWdlVmlz
aWJpbGl0eVN0YXRlSGlkZGVuIGlmIHRoZSBwYWdlIHZpc2liaWxpdHkgQVBJIGlzIGVuYWJsZWQs
CisgICAgb3RoZXJ3aXNlIGlzIHNldCB0byBQYWdlVmlzaWJpbGl0eUFwaVVuYXZhaWxhYmxlLgor
CisgICAgXHNhIHZpc2liaWxpdHlTdGF0ZSgpCisqLwordm9pZCBRV2ViUGFnZTo6c2V0VmlzaWJp
bGl0eVN0YXRlKFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlIHN0YXRlKQoreworICAgIGQt
PnNldFZpc2liaWxpdHlTdGF0ZShzdGF0aWNfY2FzdDxRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNp
YmlsaXR5U3RhdGU+KHN0YXRlKSk7Cit9CisKKworLyohCiAgICAgXHNpbmNlIDQuOAogICAgIFxm
biB2b2lkIFFXZWJQYWdlOjp2aWV3cG9ydENoYW5nZVJlcXVlc3RlZCgpCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuaAkocmV2aXNpb24gMTUzNTgzKQorKysgU291cmNl
L1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiAr
NzgsNyBAQCBjbGFzcyBRV0VCS0lUV0lER0VUU19FWFBPUlQgUVdlYlBhZ2UgOiBwCiAgICAgUV9Q
Uk9QRVJUWShMaW5rRGVsZWdhdGlvblBvbGljeSBsaW5rRGVsZWdhdGlvblBvbGljeSBSRUFEIGxp
bmtEZWxlZ2F0aW9uUG9saWN5IFdSSVRFIHNldExpbmtEZWxlZ2F0aW9uUG9saWN5KQogICAgIFFf
UFJPUEVSVFkoUVBhbGV0dGUgcGFsZXR0ZSBSRUFEIHBhbGV0dGUgV1JJVEUgc2V0UGFsZXR0ZSkK
ICAgICBRX1BST1BFUlRZKGJvb2wgY29udGVudEVkaXRhYmxlIFJFQUQgaXNDb250ZW50RWRpdGFi
bGUgV1JJVEUgc2V0Q29udGVudEVkaXRhYmxlKQorICAgIFFfUFJPUEVSVFkoUVdlYlBhZ2U6OlBh
Z2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlIFJFQUQgdmlzaWJpbGl0eVN0YXRlIFdS
SVRFIHNldFZpc2liaWxpdHlTdGF0ZSkKICAgICBRX0VOVU1TKExpbmtEZWxlZ2F0aW9uUG9saWN5
IE5hdmlnYXRpb25UeXBlIFdlYkFjdGlvbikKIHB1YmxpYzoKICAgICBlbnVtIE5hdmlnYXRpb25U
eXBlIHsKQEAgLTIxNiw2ICsyMTcsMTUgQEAgcHVibGljOgogICAgICAgICBHZW9sb2NhdGlvbgog
ICAgIH07CiAKKyAgICAvLyBNdXN0IG1hdGNoIHdpdGggdmFsdWVzIG9mIFBhZ2VWaXNpYmlsaXR5
U3RhdGUgZW51bSBmcm9tIFFXZWJQYWdlQWRhcHRlci5oLgorICAgIGVudW0gUGFnZVZpc2liaWxp
dHlTdGF0ZSB7CisgICAgICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLAorICAgICAgICBQ
YWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuLAorICAgICAgICBQYWdlVmlzaWJpbGl0eVN0YXRlUHJl
cmVuZGVyLAorICAgICAgICBQYWdlVmlzaWJpbGl0eVN0YXRlUHJldmlldywKKyAgICAgICAgUGFn
ZVZpc2liaWxpdHlBcGlVbmF2YWlsYWJsZQorICAgIH07CisKICAgICBjbGFzcyBRV0VCS0lUV0lE
R0VUU19FWFBPUlQgVmlld3BvcnRBdHRyaWJ1dGVzIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFZp
ZXdwb3J0QXR0cmlidXRlcygpOwpAQCAtMjc1LDYgKzI4NSw5IEBAIHB1YmxpYzoKICAgICBxdWlu
dDY0IHRvdGFsQnl0ZXMoKSBjb25zdDsKICAgICBxdWludDY0IGJ5dGVzUmVjZWl2ZWQoKSBjb25z
dDsKIAorICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCk7CisgICAgdm9p
ZCBzZXRWaXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0ZSk7CisKICAgICBib29sIGhh
c1NlbGVjdGlvbigpIGNvbnN0OwogICAgIFFTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Q7CiAg
ICAgUVN0cmluZyBzZWxlY3RlZEh0bWwoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQv
dGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDE1MzU4MykK
KysrIFNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw4IEBAIHByaXZhdGUgUV9TTE9UUzoKICAgICB2b2lk
IHNjcmVlbnNob3RfZGF0YSgpOwogICAgIHZvaWQgc2NyZWVuc2hvdCgpOwogCisgICAgdm9pZCBj
aGFuZ2VWaXNpYmlsaXR5U3RhdGUoKTsKKwogI2lmIGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBF
TkFCTEVfV0VCR0wKICAgICB2b2lkIGFjY2VsZXJhdGVkV2ViR0xTY3JlZW5zaG90V2l0aG91dFZp
ZXcoKTsKICAgICB2b2lkIHVuYWNjZWxlcmF0ZWRXZWJHTFNjcmVlbnNob3RXaXRob3V0Vmlldygp
OwpAQCAtMzEzMiw2ICszMTM0LDEwMSBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6bWFjQ29weVVuaWNv
ZGVUb0NsaXBiCiB9CiAjZW5kaWYKIAordm9pZCB0c3RfUVdlYlBhZ2U6OmNoYW5nZVZpc2liaWxp
dHlTdGF0ZSgpCit7CisjaWYgRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkKKyAgICBRVmFyaWFu
dCBzdGF0ZUJvb2wsIHN0YXRlU3RyaW5nLCBjcHQ7CisKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgp
LT5zZXRIdG1sKCI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiIpOworICAgIG1fcGFnZS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidmFyIHN0YXRlQm9vbCA9IHVuZGVmaW5lZCwg
c3RhdGVTdHJpbmcgPSB1bmRlZmluZWQsIGNwdCA9IDA7IHZhciB2aXNpYmlsaXR5Q2FsbEJhY2sg
PSBmdW5jdGlvbiAoKSB7c3RhdGVCb29sID0gZG9jdW1lbnRbJ3dlYmtpdEhpZGRlbiddOyBzdGF0
ZVN0cmluZyA9IGRvY3VtZW50Wyd3ZWJraXRWaXNpYmlsaXR5U3RhdGUnXTsgY3B0Kys7fTtkb2N1
bWVudC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlJywgdmlzaWJpbGl0
eUNhbGxCYWNrLCBmYWxzZSk7Iik7CisKKyAgICAvLyBUaGUgdmlzaWJpbGl0eSBzdGF0ZSBzaG91
bGQgYmUgaW5pdGlhbGlzZWQgdG8gaGlkZGVuLgorICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJp
bGl0eVN0YXRlKCksIFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKTsKKyAgICBz
dGF0ZUJvb2wgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3Vt
ZW50LndlYmtpdEhpZGRlbiIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFy
aWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9w
YWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC53ZWJraXRWaXNp
YmlsaXR5U3RhdGUiKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFu
dDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikp
OworCisgICAgLy8gVHJ5IHRvIGNoYW5nZSB3aXRoIHRoZSBzYW1lIHZhbHVlLgorICAgIG1fcGFn
ZS0+c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVu
KTsKKyAgICBRVkVSSUZZKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRlKCkgPT0gUVdlYlBhZ2U6OlBh
Z2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4pOworICAgIC8vIFdlIGNoZWNrIHRoYXQgdGhlcmUgaXNu
J3QgYW55IEpTIGV2ZW50IHRoYXQgaGFzIGJlZW4gZmlyZWQgYW5kCisgICAgLy8gdmlzaWJpbGl0
eSBwcm9wZXJ0aWVzIGFyZSBzdGlsbCBlcXVhbHMgdG8gaGlkZGVuLgorICAgIHN0YXRlQm9vbCA9
IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnRbJ3dlYmtp
dEhpZGRlbiddIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpC
b29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50Wyd3ZWJraXRWaXNpYmlsaXR5
U3RhdGUnXSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpT
dHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7Cisg
ICAgY3B0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsK
KyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiAhY3B0LnRvRG91
YmxlKCkpOworCisgICAgLy8gVHJ5IHRvIGNoYW5nZSB3aXRoIGEgYmFkIHZhbHVlLgorICAgIG1f
cGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eUFwaVVuYXZh
aWxhYmxlKTsKKyAgICBRQ09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFn
ZTo6UGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbik7CisgICAgLy8gV2UgY2hlY2sgdGhhdCB0aGVy
ZSBpc24ndCBhbnkgSlMgZXZlbnQgdGhhdCBoYXMgYmVlbiBmaXJlZCBhbmQKKyAgICAvLyB2aXNp
YmlsaXR5IHByb3BlcnRpZXMgYXJlIHN0aWxsIGVxdWFscyB0byBoaWRkZW4uCisgICAgc3RhdGVC
b29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudFsn
d2Via2l0SGlkZGVuJ10iKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnRbJ3dlYmtpdFZpc2li
aWxpdHlTdGF0ZSddIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlh
bnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIp
KTsKKyAgICBjcHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNw
dCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmICFjcHQu
dG9Eb3VibGUoKSk7CisKKyAgICAvLyBUcnkgdG8gY2hhbmdlIHRvIHdpdGggY29ycmVjdCB2YWx1
ZXMgdGhlbiBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVkCisgICAgLy8gYW5kIHZp
c2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkuCisgICAgbV9w
YWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGVQcmVy
ZW5kZXIpOworICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRlKCksIFFXZWJQYWdl
OjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyKTsKKyAgICBzdGF0ZUJvb2wgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJ
Rlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29s
KCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09
IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJw
cmVyZW5kZXIiKSk7CisgICAgY3B0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJs
ZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAxKTsKKworICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0
YXRlKFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJldmlldyk7CisgICAgUUNPTVBBUkUo
bV9wYWdlLT52aXNpYmlsaXR5U3RhdGUoKSwgUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGVQ
cmV2aWV3KTsKKyAgICBzdGF0ZUJvb2wgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUph
dmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBR
VmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0g
bV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOwor
ICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3Rh
dGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJwcmV2aWV3IikpOworICAgIGNwdCA9IG1f
cGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklG
WShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7
CisKKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6UGFnZVZpc2liaWxp
dHlTdGF0ZVZpc2libGUpOworICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRlKCks
IFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CisgICAgc3RhdGVCb29sID0g
bV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAg
ICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9v
bC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50
eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFT
dHJpbmcoInZpc2libGUiKSk7CisgICAgY3B0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6
OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAzKTsKKworICAgIG1fcGFnZS0+c2V0VmlzaWJp
bGl0eVN0YXRlKFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKTsKKyAgICBRQ09N
UEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6UGFnZVZpc2liaWxpdHlT
dGF0ZUhpZGRlbik7CisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkg
PT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmlu
ZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmci
KTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYm
IHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNwdCA9
IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZF
UklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0g
NCk7CisKKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6UGFnZVZpc2li
aWxpdHlTdGF0ZVZpc2libGUpOworICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRl
KCksIFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CisgICAgc3RhdGVCb29s
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsK
KyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRl
Qm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmlu
Zy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09
IFFTdHJpbmcoInZpc2libGUiKSk7CisgICAgY3B0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSA1KTsKKyNlbHNlCisgICAgLy8gVGhlIHZp
c2liaWxpdHkgc3RhdGUgc2hvdWxkIGJlIGluaXRpYWxpc2VkIHRvIFBhZ2VWaXNpYmlsaXR5QXBp
VW5hdmFpbGFibGUuCisgICAgUUNPTVBBUkUobV9wYWdlLT52aXNpYmlsaXR5U3RhdGUoKSwgUVdl
YlBhZ2U6OlBhZ2VWaXNpYmlsaXR5QXBpVW5hdmFpbGFibGUpOworICAgIC8vIElmIHdlIHRyeSB0
byBjaGFuZ2UgdGhlIHZpc2liaWxpdHkgc3RhdGUgaXQgbXVzdCBzdGlsbCBlcXVhbHMgdG8gUGFn
ZVZpc2liaWxpdHlBcGlVbmF2YWlsYWJsZS4KKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0
ZShRV2ViUGFnZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUpOworICAgIFFDT01QQVJFKG1f
cGFnZS0+dmlzaWJpbGl0eVN0YXRlKCksIFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eUFwaVVuYXZh
aWxhYmxlKTsKKyNlbmRpZgorfQorCisKIHZvaWQgdHN0X1FXZWJQYWdlOjpjb250ZXh0TWVudUNv
cHkoKQogewogICAgIFFXZWJWaWV3IHZpZXc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207926</attachid>
            <date>2013-08-01 08:09:46 -0700</date>
            <delta_ts>2013-08-05 08:14:17 -0700</delta_ts>
            <desc> New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (2)</desc>
            <filename>patch_109422_19.patch</filename>
            <type>text/plain</type>
            <size>14338</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTM1ODQpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA4LTAxICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwOTQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoK
KyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6UVdlYlBhZ2VBZGFwdGVyKToKKyAgICAgICAgKFFX
ZWJQYWdlQWRhcHRlcjo6aW5pdGlhbGl6ZVdlYkNvcmVQYWdlKToKKyAgICAgICAgKFFXZWJQYWdl
QWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6
dmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0
ZXIuaDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBh
Z2U6OnZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0VmlzaWJpbGl0eVN0
YXRlKToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiB0ZXN0cy9x
d2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpjaGFuZ2VW
aXNpYmlsaXR5U3RhdGUpOgorCiAyMDEzLTA3LTMxICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29t
cGFueTEwMC5uZXQ+CiAKICAgICAgICAgVXNlIGVtcHR5U3RyaW5nIGluc3RlYWQgb2YgU3RyaW5n
KCIiKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdl
YlBhZ2VBZGFwdGVyLmNwcAkocmV2aXNpb24gMTUzNTgzKQorKysgU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgs
NiArMTc4LDExIEBAIFFXZWJQYWdlQWRhcHRlcjo6UVdlYlBhZ2VBZGFwdGVyKCkKICAgICAsIG1f
dG90YWxCeXRlcygwKQogICAgICwgbV9ieXRlc1JlY2VpdmVkKCkKICAgICAsIG5ldHdvcmtNYW5h
Z2VyKDApCisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgLCBtX3Zpc2liaWxp
dHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKQorI2Vsc2UKKyAgICAsIG1fdmlzaWJp
bGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5QXBpVW5hdmFpbGFibGUpCisjZW5kaWYKIHsKICAgICBX
ZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiB9CkBAIC0xOTQsNiArMTk5LDkgQEAgdm9p
ZCBRV2ViUGFnZUFkYXB0ZXI6OmluaXRpYWxpemVXZWJDb3JlUAogICAgIHBhZ2VDbGllbnRzLmRy
YWdDbGllbnQgPSBuZXcgRHJhZ0NsaWVudFF0KHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCk7CiAg
ICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gbmV3IEluc3BlY3RvckNsaWVudFF0KHRo
aXMpOwogICAgIHBhZ2UgPSBuZXcgUGFnZShwYWdlQ2xpZW50cyk7CisjaWYgRU5BQkxFKFBBR0Vf
VklTSUJJTElUWV9BUEkpCisgICAgcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKHN0YXRpY19jYXN0
PFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGU+KG1fdmlzaWJpbGl0eVN0YXRlKSwgdHJ1ZSk7
CisjZW5kaWYKIAogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICBpZiAodXNlTW9jaykgewpA
QCAtMjgwLDYgKzI4OCwyMyBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6cmVnaXN0ZXJVbmRvU3Rl
cChXCiAgICAgY3JlYXRlVW5kb1N0ZXAoUVNoYXJlZFBvaW50ZXI8VW5kb1N0ZXBRdD4obmV3IFVu
ZG9TdGVwUXQoc3RlcCkpKTsKIH0KIAordm9pZCBRV2ViUGFnZUFkYXB0ZXI6OnNldFZpc2liaWxp
dHlTdGF0ZShRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNpYmlsaXR5U3RhdGUgc3RhdGUpCit7Cisj
aWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgaWYgKCFwYWdlIHx8IHN0YXRlID09
IFBhZ2VWaXNpYmlsaXR5QXBpVW5hdmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdl
LT5zZXRWaXNpYmlsaXR5U3RhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGFnZVZpc2liaWxpdHlT
dGF0ZT4oc3RhdGUpLCBmYWxzZSk7CisgICAgbV92aXNpYmlsaXR5U3RhdGUgPSBzdGF0aWNfY2Fz
dDxRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNpYmlsaXR5U3RhdGU+KHBhZ2UtPnZpc2liaWxpdHlT
dGF0ZSgpKTsKKyNlbHNlCisgICAgUV9VTlVTRUQoc3RhdGUpOworI2VuZGlmCit9CisKK1FXZWJQ
YWdlQWRhcHRlcjo6UGFnZVZpc2liaWxpdHlTdGF0ZSBRV2ViUGFnZUFkYXB0ZXI6OnZpc2liaWxp
dHlTdGF0ZSgpCit7CisgICAgcmV0dXJuIG1fdmlzaWJpbGl0eVN0YXRlOworfQorCiB2b2lkIFFX
ZWJQYWdlQWRhcHRlcjo6c2V0TmV0d29ya0FjY2Vzc01hbmFnZXIoUU5ldHdvcmtBY2Nlc3NNYW5h
Z2VyICptYW5hZ2VyKQogewogICAgIGlmIChtYW5hZ2VyID09IG5ldHdvcmtNYW5hZ2VyKQpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRl
ci5oCShyZXZpc2lvbiAxNTM1ODMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1FXZWJQYWdlQWRhcHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDE1IEBAIHB1
YmxpYzoKICAgICAgICAgU2Nyb2xsQnlEb2N1bWVudAogICAgIH07CiAKKyAgICAvLyBNdXN0IG1h
dGNoIHdpdGggdmFsdWVzIG9mIFBhZ2VWaXNpYmlsaXR5U3RhdGUgZW51bSBmcm9tIFBhZ2VWaXNp
YmlsaXR5U3RhdGUuaC4KKyAgICBlbnVtIFBhZ2VWaXNpYmlsaXR5U3RhdGUgeworICAgICAgICBQ
YWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSwKKyAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0ZUhp
ZGRlbiwKKyAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRlciwKKyAgICAgICAgUGFn
ZVZpc2liaWxpdHlTdGF0ZVByZXZpZXcsCisgICAgICAgIFBhZ2VWaXNpYmlsaXR5QXBpVW5hdmFp
bGFibGUKKyAgICB9OworCiAgICAgUVdlYlBhZ2VBZGFwdGVyKCk7CiAgICAgdmlydHVhbCB+UVdl
YlBhZ2VBZGFwdGVyKCk7CiAKQEAgLTI0Nyw2ICsyNTYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZUFuZFNldEN1cnJlbnRDb250ZXh0TWVudShjb25zdCBRTGlzdDxNZW51SXRl
bURlc2NyaXB0aW9uPiYsIFFCaXRBcnJheSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxl
U2Nyb2xsYmFyQ29udGV4dE1lbnVFdmVudChRQ29udGV4dE1lbnVFdmVudCosIGJvb2wsIFNjcm9s
bERpcmVjdGlvbiosIFNjcm9sbEdyYW51bGFyaXR5KikgPSAwOwogCisgICAgdm9pZCBzZXRWaXNp
YmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0ZSk7CisgICAgUGFnZVZpc2liaWxpdHlTdGF0
ZSB2aXNpYmlsaXR5U3RhdGUoKTsKKwogICAgIHN0YXRpYyBRV2ViUGFnZUFkYXB0ZXIqIGtpdChX
ZWJDb3JlOjpQYWdlKik7CiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRB
cmd1bWVudHMoKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OlVuZG9TdGVwPik7CkBAIC0zNTQsNiArMzY2LDggQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIFFOZXR3b3JrQWNjZXNzTWFuYWdlciAqbmV0d29ya01hbmFnZXI7CisgICAg
UGFnZVZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKKwogCiBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgZHJ0UnVuOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdl
YnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJw
YWdlLmNwcAkocmV2aXNpb24gMTUzNTgzKQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkv
cXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTM5LDYgKzMxMzksMzYgQEAgcXVpbnQ2
NCBRV2ViUGFnZTo6Ynl0ZXNSZWNlaXZlZCgpIGNvbnN0CiB9CiAKIC8qIQorICAgIFJldHVybnMg
dGhlIGN1cnJlbnQgcGFnZSB2aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSBjdXJyZW50IHBhZ2UuCisK
KyAgICBcc2Egc2V0VmlzaWJpbGl0eVN0YXRlKCkKKyovCitRV2ViUGFnZTo6UGFnZVZpc2liaWxp
dHlTdGF0ZSBRV2ViUGFnZTo6dmlzaWJpbGl0eVN0YXRlKCkKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8UVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGU+KGQtPnZpc2liaWxpdHlTdGF0ZSgp
KTsKK30KKworLyohCisgICAgVGhpcyBtZXRob2QgaXMgdXNlZCB0byBjaGFuZ2UgdGhlIHBhZ2Ug
dmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgY3VycmVudCBwYWdlLgorICAgIEl0IHNob3VsZCBiZSBj
YWxsZWQgYnkgUXQgYXBwbGljYXRpb25zIHdobyB3YW50IHRvIG5vdGlmeSBKYXZhc2NyaXB0IGFw
cGxpY2F0aW9uCisgICAgdGhhdCB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBoYXMgY2hhbmdlZCAoZWcu
IGJ5IHJlaW1wbGVtZW50aW5nIHNldFZpc2libGUgZnVuY3Rpb24gb2YgUVdpZGdldCkuCisgICAg
VGhlIHZpc2liaWxpdHkgc3RhdGUgd2lsbCBiZSB1cGRhdGVkIHdpdGggdGhlIFxhIHN0YXRlIHBh
cmFtZXRlciB2YWx1ZSBvbmx5IGlmIGl0J3MgZGlmZmVyZW50IGZyb20gdGhlIHByZXZpb3VzIHNl
dAorICAgIGFuZCBmcm9tIFBhZ2VWaXNpYmlsaXR5QXBpVW5hdmFpbGFibGUgdmFsdWUuIFRoZW4s
IEhUTUwgRE9NIERvY3VtZW50IE9iamVjdCBhdHRyaWJ1dGVzICdoaWRkZW4nIGFuZCAndmlzaWJp
bGl0eVN0YXRlJworICAgIHdpbGwgYmUgdXBkYXRlZCB0byB0aGUgY29ycmVjdCB2YWx1ZSBhbmQg
YSAndmlzaWJsaXR5Y2hhbmdlJyBldmVudCB3aWxsIGJlIGZpcmVkLgorICAgIE1vcmUgaW5mb3Jt
YXRpb24gYWJvdXQgdGhpcyBIVE1MNSBBUEkgY2FuIGJlIGZvdW5kIGF0IFxse2h0dHA6Ly93d3cu
dzMub3JnL1RSL3BhZ2UtdmlzaWJpbGl0eS99e1czQyBSZWNvbW1lbmRhdGlvbjogUGFnZSBWaXNp
YmlsaXR5fS4KKworICAgIFxub3RlIFRoZSBpbml0aWFsIHN0YXRlIGlzIHNldCB0byBQYWdlVmlz
aWJpbGl0eVN0YXRlSGlkZGVuIGlmIHRoZSBwYWdlIHZpc2liaWxpdHkgQVBJIGlzIGVuYWJsZWQs
CisgICAgb3RoZXJ3aXNlIGlzIHNldCB0byBQYWdlVmlzaWJpbGl0eUFwaVVuYXZhaWxhYmxlLgor
CisgICAgXHNhIHZpc2liaWxpdHlTdGF0ZSgpCisqLwordm9pZCBRV2ViUGFnZTo6c2V0VmlzaWJp
bGl0eVN0YXRlKFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlIHN0YXRlKQoreworICAgIGQt
PnNldFZpc2liaWxpdHlTdGF0ZShzdGF0aWNfY2FzdDxRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNp
YmlsaXR5U3RhdGU+KHN0YXRlKSk7Cit9CisKKworLyohCiAgICAgXHNpbmNlIDQuOAogICAgIFxm
biB2b2lkIFFXZWJQYWdlOjp2aWV3cG9ydENoYW5nZVJlcXVlc3RlZCgpCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuaAkocmV2aXNpb24gMTUzNTgzKQorKysgU291cmNl
L1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiAr
NzgsNyBAQCBjbGFzcyBRV0VCS0lUV0lER0VUU19FWFBPUlQgUVdlYlBhZ2UgOiBwCiAgICAgUV9Q
Uk9QRVJUWShMaW5rRGVsZWdhdGlvblBvbGljeSBsaW5rRGVsZWdhdGlvblBvbGljeSBSRUFEIGxp
bmtEZWxlZ2F0aW9uUG9saWN5IFdSSVRFIHNldExpbmtEZWxlZ2F0aW9uUG9saWN5KQogICAgIFFf
UFJPUEVSVFkoUVBhbGV0dGUgcGFsZXR0ZSBSRUFEIHBhbGV0dGUgV1JJVEUgc2V0UGFsZXR0ZSkK
ICAgICBRX1BST1BFUlRZKGJvb2wgY29udGVudEVkaXRhYmxlIFJFQUQgaXNDb250ZW50RWRpdGFi
bGUgV1JJVEUgc2V0Q29udGVudEVkaXRhYmxlKQorICAgIFFfUFJPUEVSVFkoUVdlYlBhZ2U6OlBh
Z2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlIFJFQUQgdmlzaWJpbGl0eVN0YXRlIFdS
SVRFIHNldFZpc2liaWxpdHlTdGF0ZSkKICAgICBRX0VOVU1TKExpbmtEZWxlZ2F0aW9uUG9saWN5
IE5hdmlnYXRpb25UeXBlIFdlYkFjdGlvbikKIHB1YmxpYzoKICAgICBlbnVtIE5hdmlnYXRpb25U
eXBlIHsKQEAgLTIxNiw2ICsyMTcsMTUgQEAgcHVibGljOgogICAgICAgICBHZW9sb2NhdGlvbgog
ICAgIH07CiAKKyAgICAvLyBNdXN0IG1hdGNoIHdpdGggdmFsdWVzIG9mIFBhZ2VWaXNpYmlsaXR5
U3RhdGUgZW51bSBmcm9tIFFXZWJQYWdlQWRhcHRlci5oLgorICAgIGVudW0gUGFnZVZpc2liaWxp
dHlTdGF0ZSB7CisgICAgICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLAorICAgICAgICBQ
YWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuLAorICAgICAgICBQYWdlVmlzaWJpbGl0eVN0YXRlUHJl
cmVuZGVyLAorICAgICAgICBQYWdlVmlzaWJpbGl0eVN0YXRlUHJldmlldywKKyAgICAgICAgUGFn
ZVZpc2liaWxpdHlBcGlVbmF2YWlsYWJsZQorICAgIH07CisKICAgICBjbGFzcyBRV0VCS0lUV0lE
R0VUU19FWFBPUlQgVmlld3BvcnRBdHRyaWJ1dGVzIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFZp
ZXdwb3J0QXR0cmlidXRlcygpOwpAQCAtMjc1LDYgKzI4NSw5IEBAIHB1YmxpYzoKICAgICBxdWlu
dDY0IHRvdGFsQnl0ZXMoKSBjb25zdDsKICAgICBxdWludDY0IGJ5dGVzUmVjZWl2ZWQoKSBjb25z
dDsKIAorICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCk7CisgICAgdm9p
ZCBzZXRWaXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0ZSk7CisKICAgICBib29sIGhh
c1NlbGVjdGlvbigpIGNvbnN0OwogICAgIFFTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Q7CiAg
ICAgUVN0cmluZyBzZWxlY3RlZEh0bWwoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQv
dGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDE1MzU4MykK
KysrIFNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw4IEBAIHByaXZhdGUgUV9TTE9UUzoKICAgICB2b2lk
IHNjcmVlbnNob3RfZGF0YSgpOwogICAgIHZvaWQgc2NyZWVuc2hvdCgpOwogCisgICAgdm9pZCBj
aGFuZ2VWaXNpYmlsaXR5U3RhdGUoKTsKKwogI2lmIGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBF
TkFCTEVfV0VCR0wKICAgICB2b2lkIGFjY2VsZXJhdGVkV2ViR0xTY3JlZW5zaG90V2l0aG91dFZp
ZXcoKTsKICAgICB2b2lkIHVuYWNjZWxlcmF0ZWRXZWJHTFNjcmVlbnNob3RXaXRob3V0Vmlldygp
OwpAQCAtMzEzMiw2ICszMTM0LDEwMSBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6bWFjQ29weVVuaWNv
ZGVUb0NsaXBiCiB9CiAjZW5kaWYKIAordm9pZCB0c3RfUVdlYlBhZ2U6OmNoYW5nZVZpc2liaWxp
dHlTdGF0ZSgpCit7CisjaWYgRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkKKyAgICBRVmFyaWFu
dCBzdGF0ZUJvb2wsIHN0YXRlU3RyaW5nLCBjcHQ7CisKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgp
LT5zZXRIdG1sKCI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiIpOworICAgIG1fcGFnZS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidmFyIHN0YXRlQm9vbCA9IHVuZGVmaW5lZCwg
c3RhdGVTdHJpbmcgPSB1bmRlZmluZWQsIGNwdCA9IDA7IHZhciB2aXNpYmlsaXR5Q2FsbEJhY2sg
PSBmdW5jdGlvbiAoKSB7c3RhdGVCb29sID0gZG9jdW1lbnRbJ2hpZGRlbiddOyBzdGF0ZVN0cmlu
ZyA9IGRvY3VtZW50Wyd2aXNpYmlsaXR5U3RhdGUnXTsgY3B0Kys7fTtkb2N1bWVudC5hZGRFdmVu
dExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgdmlzaWJpbGl0eUNhbGxCYWNrLCBmYWxzZSk7
Iik7CisKKyAgICAvLyBUaGUgdmlzaWJpbGl0eSBzdGF0ZSBzaG91bGQgYmUgaW5pdGlhbGlzZWQg
dG8gaGlkZGVuLgorICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRlKCksIFFXZWJQ
YWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKTsKKyAgICBzdGF0ZUJvb2wgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LmhpZGRlbiIpOworICAg
IFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wu
dG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUiKTsKKyAgICBRVkVSSUZZKHN0
YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3Ry
aW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworCisgICAgLy8gVHJ5IHRvIGNoYW5nZSB3aXRo
IHRoZSBzYW1lIHZhbHVlLgorICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdl
OjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKTsKKyAgICBRVkVSSUZZKG1fcGFnZS0+dmlzaWJp
bGl0eVN0YXRlKCkgPT0gUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4pOworICAg
IC8vIFdlIGNoZWNrIHRoYXQgdGhlcmUgaXNuJ3QgYW55IEpTIGV2ZW50IHRoYXQgaGFzIGJlZW4g
ZmlyZWQgYW5kCisgICAgLy8gdmlzaWJpbGl0eSBwcm9wZXJ0aWVzIGFyZSBzdGlsbCBlcXVhbHMg
dG8gaGlkZGVuLgorICAgIHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRl
SmF2YVNjcmlwdCgiZG9jdW1lbnRbJ2hpZGRlbiddIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wu
dHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3Rh
dGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3Vt
ZW50Wyd2aXNpYmlsaXR5U3RhdGUnXSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgp
ID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5n
KCJoaWRkZW4iKSk7CisgICAgY3B0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJs
ZSAmJiAhY3B0LnRvRG91YmxlKCkpOworCisgICAgLy8gVHJ5IHRvIGNoYW5nZSB3aXRoIGEgYmFk
IHZhbHVlLgorICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlOjpQYWdlVmlz
aWJpbGl0eUFwaVVuYXZhaWxhYmxlKTsKKyAgICBRQ09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlT
dGF0ZSgpLCBRV2ViUGFnZTo6UGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbik7CisgICAgLy8gV2Ug
Y2hlY2sgdGhhdCB0aGVyZSBpc24ndCBhbnkgSlMgZXZlbnQgdGhhdCBoYXMgYmVlbiBmaXJlZCBh
bmQKKyAgICAvLyB2aXNpYmlsaXR5IHByb3BlcnRpZXMgYXJlIHN0aWxsIGVxdWFscyB0byBoaWRk
ZW4uCisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2Ny
aXB0KCJkb2N1bWVudFsnaGlkZGVuJ10iKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkg
PT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmlu
ZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnRbJ3Zp
c2liaWxpdHlTdGF0ZSddIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZh
cmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRl
biIpKTsKKyAgICBjcHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
ImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmICFj
cHQudG9Eb3VibGUoKSk7CisKKyAgICAvLyBUcnkgdG8gY2hhbmdlIHRvIHdpdGggY29ycmVjdCB2
YWx1ZXMgdGhlbiBjaGVjayBpZiBhIEpTIGV2ZW50IGhhcyBiZWVuIGZpcmVkCisgICAgLy8gYW5k
IHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkuCisgICAg
bV9wYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGVQ
cmVyZW5kZXIpOworICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRlKCksIFFXZWJQ
YWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyKTsKKyAgICBzdGF0ZUJvb2wgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFW
RVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9C
b29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgp
ID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5n
KCJwcmVyZW5kZXIiKSk7CisgICAgY3B0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRv
dWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAxKTsKKworICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0
eVN0YXRlKFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJldmlldyk7CisgICAgUUNPTVBB
UkUobV9wYWdlLT52aXNpYmlsaXR5U3RhdGUoKSwgUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3Rh
dGVQcmV2aWV3KTsKKyAgICBzdGF0ZUJvb2wgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0
ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9
PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5n
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIp
OworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYg
c3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJwcmV2aWV3IikpOworICAgIGNwdCA9
IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZF
UklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0g
Mik7CisKKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6UGFnZVZpc2li
aWxpdHlTdGF0ZVZpc2libGUpOworICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRl
KCksIFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CisgICAgc3RhdGVCb29s
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsK
KyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRl
Qm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmlu
Zy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09
IFFTdHJpbmcoInZpc2libGUiKSk7CisgICAgY3B0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlh
bnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAzKTsKKworICAgIG1fcGFnZS0+c2V0Vmlz
aWJpbGl0eVN0YXRlKFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKTsKKyAgICBR
Q09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6UGFnZVZpc2liaWxp
dHlTdGF0ZUhpZGRlbik7CisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBl
KCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0
cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJp
bmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5n
ICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygiaGlkZGVuIikpOworICAgIGNw
dCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAg
UVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkg
PT0gNCk7CisKKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6UGFnZVZp
c2liaWxpdHlTdGF0ZVZpc2libGUpOworICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJpbGl0eVN0
YXRlKCksIFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CisgICAgc3RhdGVC
b29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wi
KTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0
YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgp
LT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0
cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygp
ID09IFFTdHJpbmcoInZpc2libGUiKSk7CisgICAgY3B0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZh
cmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSA1KTsKKyNlbHNlCisgICAgLy8gVGhl
IHZpc2liaWxpdHkgc3RhdGUgc2hvdWxkIGJlIGluaXRpYWxpc2VkIHRvIFBhZ2VWaXNpYmlsaXR5
QXBpVW5hdmFpbGFibGUuCisgICAgUUNPTVBBUkUobV9wYWdlLT52aXNpYmlsaXR5U3RhdGUoKSwg
UVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5QXBpVW5hdmFpbGFibGUpOworICAgIC8vIElmIHdlIHRy
eSB0byBjaGFuZ2UgdGhlIHZpc2liaWxpdHkgc3RhdGUgaXQgbXVzdCBzdGlsbCBlcXVhbHMgdG8g
UGFnZVZpc2liaWxpdHlBcGlVbmF2YWlsYWJsZS4KKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlT
dGF0ZShRV2ViUGFnZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUpOworICAgIFFDT01QQVJF
KG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRlKCksIFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eUFwaVVu
YXZhaWxhYmxlKTsKKyNlbmRpZgorfQorCisKIHZvaWQgdHN0X1FXZWJQYWdlOjpjb250ZXh0TWVu
dUNvcHkoKQogewogICAgIFFXZWJWaWV3IHZpZXc7Cg==
</data>
<flag name="review"
          id="229771"
          type_id="1"
          status="-"
          setter="jturcotte"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208125</attachid>
            <date>2013-08-05 08:14:17 -0700</date>
            <delta_ts>2013-08-05 08:38:26 -0700</delta_ts>
            <desc>New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (3)</desc>
            <filename>patch_109422_20.patch</filename>
            <type>text/plain</type>
            <size>14793</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTM3MDQpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEzLTA4LTA1ICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAod2ViUGFnZVZpc2liaWxpdHlTdGF0ZVRvV2ViQ29yZVZpc2liaWxpdHlTdGF0ZSk6
CisgICAgICAgICh3ZWJDb3JlVmlzaWJpbGl0eVN0YXRlVG9XZWJQYWdlVmlzaWJpbGl0eVN0YXRl
KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6UVdlYlBhZ2VBZGFwdGVyKToKKyAgICAgICAg
KFFXZWJQYWdlQWRhcHRlcjo6aW5pdGlhbGl6ZVdlYkNvcmVQYWdlKToKKyAgICAgICAgKFFXZWJQ
YWdlQWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRl
cjo6dmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFk
YXB0ZXIuaDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdl
YlBhZ2U6OnZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0VmlzaWJpbGl0
eVN0YXRlKToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiB0ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpjaGFu
Z2VWaXNpYmlsaXR5U3RhdGUpOgorCiAyMDEzLTA3LTMxICBLd2FuZyBZdWwgU2VvICA8c2t5dWxA
Y29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgVXNlIGVtcHR5U3RyaW5nIGluc3RlYWQgb2YgU3Ry
aW5nKCIiKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFk
YXB0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UVdlYlBhZ2VBZGFwdGVyLmNwcAkocmV2aXNpb24gMTUzNzA0KQorKysgU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDksNiArMTQ5LDU0IEBAIHN0YXRpYyBpbmxpbmUgUXQ6OkRyb3BBY3Rpb24gZHJhZ09wVG9Ecm8K
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgaW5saW5lIFdlYkNvcmU6OlBhZ2VWaXNp
YmlsaXR5U3RhdGUgd2ViUGFnZVZpc2liaWxpdHlTdGF0ZVRvV2ViQ29yZVZpc2liaWxpdHlTdGF0
ZShRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNpYmlsaXR5U3RhdGUgc3RhdGUpCit7CisgICAgV2Vi
Q29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSByZXN1bHQgPSBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0
eVN0YXRlSGlkZGVuOworCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgUVdlYlBhZ2VB
ZGFwdGVyOjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyOgorICAgICAgICByZXN1bHQgPSBX
ZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFFXZWJQYWdlQWRhcHRlcjo6UGFnZVZpc2liaWxpdHlTdGF0ZVByZXZpZXc6CisgICAg
ICAgIHJlc3VsdCA9IFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVQcmV2aWV3OworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFFXZWJQYWdlQWRhcHRlcjo6UGFnZVZpc2liaWxpdHlTdGF0ZVZp
c2libGU6CisgICAgICAgIHJlc3VsdCA9IFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNp
YmxlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFXZWJQYWdlQWRhcHRlcjo6UGFnZVZpc2li
aWxpdHlTdGF0ZUhpZGRlbjoKKyAgICAgICAgcmVzdWx0ID0gV2ViQ29yZTo6UGFnZVZpc2liaWxp
dHlTdGF0ZUhpZGRlbjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUKGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK3N0YXRpYyBpbmxpbmUgUVdlYlBhZ2VBZGFwdGVyOjpQYWdlVmlzaWJpbGl0eVN0YXRlIHdl
YkNvcmVWaXNpYmlsaXR5U3RhdGVUb1dlYlBhZ2VWaXNpYmlsaXR5U3RhdGUoV2ViQ29yZTo6UGFn
ZVZpc2liaWxpdHlTdGF0ZSBzdGF0ZSkKK3sKKyAgICBRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNp
YmlsaXR5U3RhdGUgcmVzdWx0ID0gIFFXZWJQYWdlQWRhcHRlcjo6UGFnZVZpc2liaWxpdHlTdGF0
ZUhpZGRlbjsKKworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBhZ2VW
aXNpYmlsaXR5U3RhdGVQcmVyZW5kZXI6CisgICAgICAgIHJlc3VsdCA9IFFXZWJQYWdlQWRhcHRl
cjo6UGFnZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJldmlldzoKKyAgICAgICAgcmVzdWx0ID0g
UVdlYlBhZ2VBZGFwdGVyOjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJldmlldzsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZToKKyAgICAg
ICAgcmVzdWx0ID0gUVdlYlBhZ2VBZGFwdGVyOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlk
ZGVuOgorICAgICAgICByZXN1bHQgPSBRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNpYmlsaXR5U3Rh
dGVIaWRkZW47CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVChm
YWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBz
dGF0aWMgV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KGNvbnN0IFFV
cmwgJnVybCwgV2ViQ29yZTo6RnJhbWUgKmZyYW1lKQogewogICAgIHJldHVybiBXZWJDb3JlOjpG
cmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLApAQCAt
MTc4LDYgKzIyNiw3IEBAIFFXZWJQYWdlQWRhcHRlcjo6UVdlYlBhZ2VBZGFwdGVyKCkKICAgICAs
IG1fdG90YWxCeXRlcygwKQogICAgICwgbV9ieXRlc1JlY2VpdmVkKCkKICAgICAsIG5ldHdvcmtN
YW5hZ2VyKDApCisgICAgLCBtX3Zpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlVmlz
aWJsZSkKIHsKICAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiB9CkBAIC0xOTQs
NiArMjQzLDkgQEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OmluaXRpYWxpemVXZWJDb3JlUAogICAg
IHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgRHJhZ0NsaWVudFF0KHBhZ2VDbGllbnRzLmNo
cm9tZUNsaWVudCk7CiAgICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gbmV3IEluc3Bl
Y3RvckNsaWVudFF0KHRoaXMpOwogICAgIHBhZ2UgPSBuZXcgUGFnZShwYWdlQ2xpZW50cyk7Cisj
aWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgcGFnZS0+c2V0VmlzaWJpbGl0eVN0
YXRlKHdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVUb1dlYkNvcmVWaXNpYmlsaXR5U3RhdGUobV92aXNp
YmlsaXR5U3RhdGUpLCB0cnVlKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQog
ICAgIGlmICh1c2VNb2NrKSB7CkBAIC0yODAsNiArMzMyLDIzIEBAIHZvaWQgUVdlYlBhZ2VBZGFw
dGVyOjpyZWdpc3RlclVuZG9TdGVwKFcKICAgICBjcmVhdGVVbmRvU3RlcChRU2hhcmVkUG9pbnRl
cjxVbmRvU3RlcFF0PihuZXcgVW5kb1N0ZXBRdChzdGVwKSkpOwogfQogCit2b2lkIFFXZWJQYWdl
QWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlQWRhcHRlcjo6UGFnZVZpc2liaWxp
dHlTdGF0ZSBzdGF0ZSkKK3sKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUo
d2ViUGFnZVZpc2liaWxpdHlTdGF0ZVRvV2ViQ29yZVZpc2liaWxpdHlTdGF0ZShzdGF0ZSksIGZh
bHNlKTsKKyAgICBtX3Zpc2liaWxpdHlTdGF0ZSA9IHdlYkNvcmVWaXNpYmlsaXR5U3RhdGVUb1dl
YlBhZ2VWaXNpYmlsaXR5U3RhdGUocGFnZS0+dmlzaWJpbGl0eVN0YXRlKCkpOworI2Vsc2UKKyAg
ICBRX1VOVVNFRChzdGF0ZSk7CisjZW5kaWYKK30KKworUVdlYlBhZ2VBZGFwdGVyOjpQYWdlVmlz
aWJpbGl0eVN0YXRlIFFXZWJQYWdlQWRhcHRlcjo6dmlzaWJpbGl0eVN0YXRlKCkKK3sKKyAgICBy
ZXR1cm4gbV92aXNpYmlsaXR5U3RhdGU7Cit9CisKIHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjpzZXRO
ZXR3b3JrQWNjZXNzTWFuYWdlcihRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm1hbmFnZXIpCiB7CiAg
ICAgaWYgKG1hbmFnZXIgPT0gbmV0d29ya01hbmFnZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHJldmlzaW9uIDE1Mzcw
NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsMTQgQEAgcHVibGljOgogICAgICAgICBTY3Jv
bGxCeURvY3VtZW50CiAgICAgfTsKIAorICAgIC8vIE11c3QgbWF0Y2ggd2l0aCB2YWx1ZXMgb2Yg
UGFnZVZpc2liaWxpdHlTdGF0ZSBlbnVtIGZyb20gUGFnZVZpc2liaWxpdHlTdGF0ZS5oLgorICAg
IGVudW0gUGFnZVZpc2liaWxpdHlTdGF0ZSB7CisgICAgICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGVW
aXNpYmxlLAorICAgICAgICBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuLAorICAgICAgICBQYWdl
VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyLAorICAgICAgICBQYWdlVmlzaWJpbGl0eVN0YXRlUHJl
dmlldworICAgIH07CisKICAgICBRV2ViUGFnZUFkYXB0ZXIoKTsKICAgICB2aXJ0dWFsIH5RV2Vi
UGFnZUFkYXB0ZXIoKTsKIApAQCAtMjQ3LDYgKzI1NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlQW5kU2V0Q3VycmVudENvbnRleHRNZW51KGNvbnN0IFFMaXN0PE1lbnVJdGVt
RGVzY3JpcHRpb24+JiwgUUJpdEFycmF5KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVT
Y3JvbGxiYXJDb250ZXh0TWVudUV2ZW50KFFDb250ZXh0TWVudUV2ZW50KiwgYm9vbCwgU2Nyb2xs
RGlyZWN0aW9uKiwgU2Nyb2xsR3JhbnVsYXJpdHkqKSA9IDA7CiAKKyAgICB2b2lkIHNldFZpc2li
aWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlKTsKKyAgICBQYWdlVmlzaWJpbGl0eVN0YXRl
IHZpc2liaWxpdHlTdGF0ZSgpOworCiAgICAgc3RhdGljIFFXZWJQYWdlQWRhcHRlcioga2l0KFdl
YkNvcmU6OlBhZ2UqKTsKICAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFy
Z3VtZW50cygpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6VW5kb1N0ZXA+KTsKQEAgLTM1NCw2ICszNjUsOCBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyICpuZXR3b3JrTWFuYWdlcjsKKyAgICBQ
YWdlVmlzaWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOworCiAKIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBkcnRSdW47CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vi
cGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBh
Z2UuY3BwCShyZXZpc2lvbiAxNTM3MDQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9x
d2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMzksNiArMzEzOSwzNSBAQCBxdWludDY0
IFFXZWJQYWdlOjpieXRlc1JlY2VpdmVkKCkgY29uc3QKIH0KIAogLyohCisgICAgUmV0dXJucyB0
aGUgY3VycmVudCBwYWdlIHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIGN1cnJlbnQgcGFnZS4KKwor
ICAgIFxzYSBzZXRWaXNpYmlsaXR5U3RhdGUoKQorKi8KK1FXZWJQYWdlOjpQYWdlVmlzaWJpbGl0
eVN0YXRlIFFXZWJQYWdlOjp2aXNpYmlsaXR5U3RhdGUoKQoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxRV2ViUGFnZTo6UGFnZVZpc2liaWxpdHlTdGF0ZT4oZC0+dmlzaWJpbGl0eVN0YXRlKCkp
OworfQorCisvKiEKKyAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgcGFnZSB2
aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSBjdXJyZW50IHBhZ2UuCisgICAgSXQgc2hvdWxkIGJlIGNh
bGxlZCBieSBRdCBhcHBsaWNhdGlvbnMgd2hvIHdhbnQgdG8gbm90aWZ5IEphdmFzY3JpcHQgYXBw
bGljYXRpb24KKyAgICB0aGF0IHRoZSB2aXNpYmlsaXR5IHN0YXRlIGhhcyBjaGFuZ2VkIChlZy4g
YnkgcmVpbXBsZW1lbnRpbmcgc2V0VmlzaWJsZSBmdW5jdGlvbiBvZiBRV2lkZ2V0KS4KKyAgICBU
aGUgdmlzaWJpbGl0eSBzdGF0ZSB3aWxsIGJlIHVwZGF0ZWQgd2l0aCB0aGUgXGEgc3RhdGUgcGFy
YW1ldGVyIHZhbHVlIG9ubHkgaWYgaXQncyBkaWZmZXJlbnQgZnJvbSB0aGUgcHJldmlvdXMgc2V0
LgorICAgIFRoZW4sIEhUTUwgRE9NIERvY3VtZW50IE9iamVjdCBhdHRyaWJ1dGVzICdoaWRkZW4n
IGFuZCAndmlzaWJpbGl0eVN0YXRlJworICAgIHdpbGwgYmUgdXBkYXRlZCB0byB0aGUgY29ycmVj
dCB2YWx1ZSBhbmQgYSAndmlzaWJsaXR5Y2hhbmdlJyBldmVudCB3aWxsIGJlIGZpcmVkLgorICAg
IE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBIVE1MNSBBUEkgY2FuIGJlIGZvdW5kIGF0IFxs
e2h0dHA6Ly93d3cudzMub3JnL1RSL3BhZ2UtdmlzaWJpbGl0eS99e1czQyBSZWNvbW1lbmRhdGlv
bjogUGFnZSBWaXNpYmlsaXR5fS4KKworICAgIFxub3RlIFRoZSBpbml0aWFsIHN0YXRlIGlzIHNl
dCB0byBQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZS4KKworICAgIFxzYSB2aXNpYmlsaXR5U3Rh
dGUoKQorKi8KK3ZvaWQgUVdlYlBhZ2U6OnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6UGFn
ZVZpc2liaWxpdHlTdGF0ZSBzdGF0ZSkKK3sKKyAgICBkLT5zZXRWaXNpYmlsaXR5U3RhdGUoc3Rh
dGljX2Nhc3Q8UVdlYlBhZ2VBZGFwdGVyOjpQYWdlVmlzaWJpbGl0eVN0YXRlPihzdGF0ZSkpOwor
fQorCisKKy8qIQogICAgIFxzaW5jZSA0LjgKICAgICBcZm4gdm9pZCBRV2ViUGFnZTo6dmlld3Bv
cnRDaGFuZ2VSZXF1ZXN0ZWQoKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9x
d2VicGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJw
YWdlLmgJKHJldmlzaW9uIDE1MzcwNCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3
ZWJwYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDcgQEAgY2xhc3MgUVdFQktJVFdJ
REdFVFNfRVhQT1JUIFFXZWJQYWdlIDogcAogICAgIFFfUFJPUEVSVFkoTGlua0RlbGVnYXRpb25Q
b2xpY3kgbGlua0RlbGVnYXRpb25Qb2xpY3kgUkVBRCBsaW5rRGVsZWdhdGlvblBvbGljeSBXUklU
RSBzZXRMaW5rRGVsZWdhdGlvblBvbGljeSkKICAgICBRX1BST1BFUlRZKFFQYWxldHRlIHBhbGV0
dGUgUkVBRCBwYWxldHRlIFdSSVRFIHNldFBhbGV0dGUpCiAgICAgUV9QUk9QRVJUWShib29sIGNv
bnRlbnRFZGl0YWJsZSBSRUFEIGlzQ29udGVudEVkaXRhYmxlIFdSSVRFIHNldENvbnRlbnRFZGl0
YWJsZSkKKyAgICBRX1BST1BFUlRZKFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2li
aWxpdHlTdGF0ZSBSRUFEIHZpc2liaWxpdHlTdGF0ZSBXUklURSBzZXRWaXNpYmlsaXR5U3RhdGUp
CiAgICAgUV9FTlVNUyhMaW5rRGVsZWdhdGlvblBvbGljeSBOYXZpZ2F0aW9uVHlwZSBXZWJBY3Rp
b24pCiBwdWJsaWM6CiAgICAgZW51bSBOYXZpZ2F0aW9uVHlwZSB7CkBAIC0yMTYsNiArMjE3LDE0
IEBAIHB1YmxpYzoKICAgICAgICAgR2VvbG9jYXRpb24KICAgICB9OwogCisgICAgZW51bSBQYWdl
VmlzaWJpbGl0eVN0YXRlIHsKKyAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUsCisg
ICAgICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4sCisgICAgICAgIFBhZ2VWaXNpYmlsaXR5
U3RhdGVQcmVyZW5kZXIsCisgICAgICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGVQcmV2aWV3LAorICAg
ICAgICBQYWdlVmlzaWJpbGl0eUFwaVVuYXZhaWxhYmxlCisgICAgfTsKKwogICAgIGNsYXNzIFFX
RUJLSVRXSURHRVRTX0VYUE9SVCBWaWV3cG9ydEF0dHJpYnV0ZXMgewogICAgIHB1YmxpYzoKICAg
ICAgICAgVmlld3BvcnRBdHRyaWJ1dGVzKCk7CkBAIC0yNzUsNiArMjg0LDkgQEAgcHVibGljOgog
ICAgIHF1aW50NjQgdG90YWxCeXRlcygpIGNvbnN0OwogICAgIHF1aW50NjQgYnl0ZXNSZWNlaXZl
ZCgpIGNvbnN0OwogCisgICAgUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUoKTsK
KyAgICB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlKTsKKwogICAg
IGJvb2wgaGFzU2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgUVN0cmluZyBzZWxlY3RlZFRleHQoKSBj
b25zdDsKICAgICBRU3RyaW5nIHNlbGVjdGVkSHRtbCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAkocmV2aXNpb24g
MTUzNzA0KQorKysgU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDggQEAgcHJpdmF0ZSBRX1NMT1RTOgog
ICAgIHZvaWQgc2NyZWVuc2hvdF9kYXRhKCk7CiAgICAgdm9pZCBzY3JlZW5zaG90KCk7CiAKKyAg
ICB2b2lkIGNoYW5nZVZpc2liaWxpdHlTdGF0ZSgpOworCiAjaWYgZGVmaW5lZChFTkFCTEVfV0VC
R0wpICYmIEVOQUJMRV9XRUJHTAogICAgIHZvaWQgYWNjZWxlcmF0ZWRXZWJHTFNjcmVlbnNob3RX
aXRob3V0VmlldygpOwogICAgIHZvaWQgdW5hY2NlbGVyYXRlZFdlYkdMU2NyZWVuc2hvdFdpdGhv
dXRWaWV3KCk7CkBAIC0zMTMyLDYgKzMxMzQsODIgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6Om1hY0Nv
cHlVbmljb2RlVG9DbGlwYgogfQogI2VuZGlmCiAKK3ZvaWQgdHN0X1FXZWJQYWdlOjpjaGFuZ2VW
aXNpYmlsaXR5U3RhdGUoKQoreworI2lmIEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJCisgICAg
UVZhcmlhbnQgc3RhdGVCb29sLCBzdGF0ZVN0cmluZywgY3B0OworCisgICAgbV9wYWdlLT5tYWlu
RnJhbWUoKS0+c2V0SHRtbCgiPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iKTsKKyAgICBtX3Bh
Z2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBzdGF0ZUJvb2wgPSB1bmRl
ZmluZWQsIHN0YXRlU3RyaW5nID0gdW5kZWZpbmVkLCBjcHQgPSAwOyB2YXIgdmlzaWJpbGl0eUNh
bGxCYWNrID0gZnVuY3Rpb24gKCkge3N0YXRlQm9vbCA9IGRvY3VtZW50WydoaWRkZW4nXTsgc3Rh
dGVTdHJpbmcgPSBkb2N1bWVudFsndmlzaWJpbGl0eVN0YXRlJ107IGNwdCsrO307ZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIHZpc2liaWxpdHlDYWxsQmFjaywg
ZmFsc2UpOyIpOworCisgICAgLy8gVGhlIHZpc2liaWxpdHkgc3RhdGUgc2hvdWxkIGJlIGluaXRp
YWxpc2VkIHRvIHZpc2libGUuCisgICAgUUNPTVBBUkUobV9wYWdlLT52aXNpYmlsaXR5U3RhdGUo
KSwgUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAgICBzdGF0ZUJvb2wg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50WydoaWRk
ZW4nXSIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAm
JiAhc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IG1fcGFnZS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnRbJ3Zpc2liaWxpdHlTdGF0ZSddIik7
CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBz
dGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInZpc2libGUiKSk7CisKKyAgICAvLyBU
cnkgdG8gY2hhbmdlIHdpdGggdGhlIHNhbWUgdmFsdWUuCisgICAgbV9wYWdlLT5zZXRWaXNpYmls
aXR5U3RhdGUoUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAgICBRVkVS
SUZZKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRlKCkgPT0gUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5
U3RhdGVWaXNpYmxlKTsKKyAgICAvLyBXZSBjaGVjayB0aGF0IHRoZXJlIGlzbid0IGFueSBKUyBl
dmVudCB0aGF0IGhhcyBiZWVuIGZpcmVkIGFuZAorICAgIC8vIHZpc2liaWxpdHkgcHJvcGVydGll
cyBhcmUgc3RpbGwgZXF1YWxzIHRvIHZpc2libGUuCisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudFsnaGlkZGVuJ10iKTsKKyAg
ICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9v
bC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoImRvY3VtZW50Wyd2aXNpYmlsaXR5U3RhdGUnXSIpOworICAgIFFWRVJJ
Rlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcu
dG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IG1fcGFnZS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlw
ZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgIWNwdC50b0RvdWJsZSgpKTsKKworICAgIC8vIFRy
eSB0byBjaGFuZ2UgdG8gd2l0aCBkaWZmZXJlbnQgdmFsdWVzIHRoZW4gY2hlY2sgaWYgYSBKUyBl
dmVudCBoYXMgYmVlbiBmaXJlZAorICAgIC8vIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2
ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5LgorICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRl
KFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyKTsKKyAgICBRQ09NUEFSRSht
X3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVBy
ZXJlbmRlcik7CisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0g
UVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9
IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsK
KyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0
YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygicHJlcmVuZGVyIikpOworICAgIGNwdCA9
IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZF
UklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0g
MSk7CisKKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6UGFnZVZpc2li
aWxpdHlTdGF0ZVByZXZpZXcpOworICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRl
KCksIFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJldmlldyk7CisgICAgc3RhdGVCb29s
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsK
KyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVC
b29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5n
LnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0g
UVN0cmluZygicHJldmlldyIpKTsKKyAgICBjcHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFu
dDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDIpOworCisgICAgbV9wYWdlLT5zZXRWaXNp
YmlsaXR5U3RhdGUoUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAgICBR
Q09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6UGFnZVZpc2liaWxp
dHlTdGF0ZVZpc2libGUpOworICAgIHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlw
ZSgpID09IFFWYXJpYW50OjpCb29sICYmICFzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRl
U3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0
cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJp
bmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAg
IGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7Cisg
ICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91Ymxl
KCkgPT0gMyk7CisKKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6UGFn
ZVZpc2liaWxpdHlTdGF0ZUhpZGRlbik7CisgICAgUUNPTVBBUkUobV9wYWdlLT52aXNpYmlsaXR5
U3RhdGUoKSwgUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4pOworICAgIHN0YXRl
Qm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29s
Iik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0
YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgp
LT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0
cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygp
ID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBjcHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFy
aWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDQpOworCisgICAgbV9wYWdlLT5zZXRW
aXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAg
ICBRQ09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6UGFnZVZpc2li
aWxpdHlTdGF0ZVZpc2libGUpOworICAgIHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkt
PmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wu
dHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmICFzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0
YXRlU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0
ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpT
dHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOwor
ICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7
CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91
YmxlKCkgPT0gNSk7CisjZW5kaWYKK30KKwogdm9pZCB0c3RfUVdlYlBhZ2U6OmNvbnRleHRNZW51
Q29weSgpCiB7CiAgICAgUVdlYlZpZXcgdmlldzsK
</data>
<flag name="review"
          id="229996"
          type_id="1"
          status="-"
          setter="jturcotte"
    />
    <flag name="commit-queue"
          id="229997"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208128</attachid>
            <date>2013-08-05 08:38:26 -0700</date>
            <delta_ts>2013-08-05 08:40:05 -0700</delta_ts>
            <desc>New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (4)</desc>
            <filename>patch_109422_21.patch</filename>
            <type>text/plain</type>
            <size>14763</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTM3MDYpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEzLTA4LTA1ICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAod2ViUGFnZVZpc2liaWxpdHlTdGF0ZVRvV2ViQ29yZVZpc2liaWxpdHlTdGF0ZSk6
CisgICAgICAgICh3ZWJDb3JlVmlzaWJpbGl0eVN0YXRlVG9XZWJQYWdlVmlzaWJpbGl0eVN0YXRl
KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6UVdlYlBhZ2VBZGFwdGVyKToKKyAgICAgICAg
KFFXZWJQYWdlQWRhcHRlcjo6aW5pdGlhbGl6ZVdlYkNvcmVQYWdlKToKKyAgICAgICAgKFFXZWJQ
YWdlQWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRl
cjo6dmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFk
YXB0ZXIuaDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdl
YlBhZ2U6OnZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0VmlzaWJpbGl0
eVN0YXRlKToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiB0ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpjaGFu
Z2VWaXNpYmlsaXR5U3RhdGUpOgorCiAyMDEzLTA3LTMxICBLd2FuZyBZdWwgU2VvICA8c2t5dWxA
Y29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgVXNlIGVtcHR5U3RyaW5nIGluc3RlYWQgb2YgU3Ry
aW5nKCIiKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFk
YXB0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UVdlYlBhZ2VBZGFwdGVyLmNwcAkocmV2aXNpb24gMTUzNzA0KQorKysgU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDksNiArMTQ5LDU0IEBAIHN0YXRpYyBpbmxpbmUgUXQ6OkRyb3BBY3Rpb24gZHJhZ09wVG9Ecm8K
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgaW5saW5lIFdlYkNvcmU6OlBhZ2VWaXNp
YmlsaXR5U3RhdGUgd2ViUGFnZVZpc2liaWxpdHlTdGF0ZVRvV2ViQ29yZVZpc2liaWxpdHlTdGF0
ZShRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNpYmlsaXR5U3RhdGUgc3RhdGUpCit7CisgICAgV2Vi
Q29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSByZXN1bHQgPSBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0
eVN0YXRlSGlkZGVuOworCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgUVdlYlBhZ2VB
ZGFwdGVyOjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyOgorICAgICAgICByZXN1bHQgPSBX
ZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFFXZWJQYWdlQWRhcHRlcjo6UGFnZVZpc2liaWxpdHlTdGF0ZVVubG9hZGVkOgorICAg
ICAgICByZXN1bHQgPSBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVW5sb2FkZWQ7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpQYWdlVmlzaWJpbGl0eVN0YXRl
VmlzaWJsZToKKyAgICAgICAgcmVzdWx0ID0gV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVZp
c2libGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpQYWdlVmlz
aWJpbGl0eVN0YXRlSGlkZGVuOgorICAgICAgICByZXN1bHQgPSBXZWJDb3JlOjpQYWdlVmlzaWJp
bGl0eVN0YXRlSGlkZGVuOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlQoZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworc3RhdGljIGlubGluZSBRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNpYmlsaXR5U3RhdGUg
d2ViQ29yZVZpc2liaWxpdHlTdGF0ZVRvV2ViUGFnZVZpc2liaWxpdHlTdGF0ZShXZWJDb3JlOjpQ
YWdlVmlzaWJpbGl0eVN0YXRlIHN0YXRlKQoreworICAgIFFXZWJQYWdlQWRhcHRlcjo6UGFnZVZp
c2liaWxpdHlTdGF0ZSByZXN1bHQgPSAgUVdlYlBhZ2VBZGFwdGVyOjpQYWdlVmlzaWJpbGl0eVN0
YXRlSGlkZGVuOworCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgV2ViQ29yZTo6UGFn
ZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcjoKKyAgICAgICAgcmVzdWx0ID0gUVdlYlBhZ2VBZGFw
dGVyOjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVVbmxvYWRlZDoKKyAgICAgICAgcmVzdWx0
ID0gUVdlYlBhZ2VBZGFwdGVyOjpQYWdlVmlzaWJpbGl0eVN0YXRlVW5sb2FkZWQ7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGU6Cisg
ICAgICAgIHJlc3VsdCA9IFFXZWJQYWdlQWRhcHRlcjo6UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2li
bGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0
ZUhpZGRlbjoKKyAgICAgICAgcmVzdWx0ID0gUVdlYlBhZ2VBZGFwdGVyOjpQYWdlVmlzaWJpbGl0
eVN0YXRlSGlkZGVuOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlQoZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwogc3RhdGljIFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdChjb25z
dCBRVXJsICZ1cmwsIFdlYkNvcmU6OkZyYW1lICpmcmFtZSkKIHsKICAgICByZXR1cm4gV2ViQ29y
ZTo6RnJhbWVMb2FkUmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwK
QEAgLTE3OCw2ICsyMjYsNyBAQCBRV2ViUGFnZUFkYXB0ZXI6OlFXZWJQYWdlQWRhcHRlcigpCiAg
ICAgLCBtX3RvdGFsQnl0ZXMoMCkKICAgICAsIG1fYnl0ZXNSZWNlaXZlZCgpCiAgICAgLCBuZXR3
b3JrTWFuYWdlcigwKQorICAgICwgbV92aXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0
ZVZpc2libGUpCiB7CiAgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOwogfQpAQCAt
MTk0LDYgKzI0Myw5IEBAIHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjppbml0aWFsaXplV2ViQ29yZVAK
ICAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0gbmV3IERyYWdDbGllbnRRdChwYWdlQ2xpZW50
cy5jaHJvbWVDbGllbnQpOwogICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBJ
bnNwZWN0b3JDbGllbnRRdCh0aGlzKTsKICAgICBwYWdlID0gbmV3IFBhZ2UocGFnZUNsaWVudHMp
OworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIHBhZ2UtPnNldFZpc2liaWxp
dHlTdGF0ZSh3ZWJQYWdlVmlzaWJpbGl0eVN0YXRlVG9XZWJDb3JlVmlzaWJpbGl0eVN0YXRlKG1f
dmlzaWJpbGl0eVN0YXRlKSwgdHJ1ZSk7CisjZW5kaWYKIAogI2lmIEVOQUJMRShHRU9MT0NBVElP
TikKICAgICBpZiAodXNlTW9jaykgewpAQCAtMjgwLDYgKzMzMiwyMyBAQCB2b2lkIFFXZWJQYWdl
QWRhcHRlcjo6cmVnaXN0ZXJVbmRvU3RlcChXCiAgICAgY3JlYXRlVW5kb1N0ZXAoUVNoYXJlZFBv
aW50ZXI8VW5kb1N0ZXBRdD4obmV3IFVuZG9TdGVwUXQoc3RlcCkpKTsKIH0KIAordm9pZCBRV2Vi
UGFnZUFkYXB0ZXI6OnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNp
YmlsaXR5U3RhdGUgc3RhdGUpCit7CisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisg
ICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+c2V0VmlzaWJpbGl0eVN0
YXRlKHdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVUb1dlYkNvcmVWaXNpYmlsaXR5U3RhdGUoc3RhdGUp
LCBmYWxzZSk7CisgICAgbV92aXNpYmlsaXR5U3RhdGUgPSB3ZWJDb3JlVmlzaWJpbGl0eVN0YXRl
VG9XZWJQYWdlVmlzaWJpbGl0eVN0YXRlKHBhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpKTsKKyNlbHNl
CisgICAgUV9VTlVTRUQoc3RhdGUpOworI2VuZGlmCit9CisKK1FXZWJQYWdlQWRhcHRlcjo6UGFn
ZVZpc2liaWxpdHlTdGF0ZSBRV2ViUGFnZUFkYXB0ZXI6OnZpc2liaWxpdHlTdGF0ZSgpCit7Cisg
ICAgcmV0dXJuIG1fdmlzaWJpbGl0eVN0YXRlOworfQorCiB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6
c2V0TmV0d29ya0FjY2Vzc01hbmFnZXIoUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyICptYW5hZ2VyKQog
ewogICAgIGlmIChtYW5hZ2VyID09IG5ldHdvcmtNYW5hZ2VyKQpJbmRleDogU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oCShyZXZpc2lvbiAx
NTM3MDQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDE0IEBAIHB1YmxpYzoKICAgICAgICAg
U2Nyb2xsQnlEb2N1bWVudAogICAgIH07CiAKKyAgICAvLyBNdXN0IG1hdGNoIHdpdGggdmFsdWVz
IG9mIFBhZ2VWaXNpYmlsaXR5U3RhdGUgZW51bSBmcm9tIFBhZ2VWaXNpYmlsaXR5U3RhdGUuaC4K
KyAgICBlbnVtIFBhZ2VWaXNpYmlsaXR5U3RhdGUgeworICAgICAgICBQYWdlVmlzaWJpbGl0eVN0
YXRlVmlzaWJsZSwKKyAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbiwKKyAgICAgICAg
UGFnZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRlciwKKyAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0
ZVVubG9hZGVkCisgICAgfTsKKwogICAgIFFXZWJQYWdlQWRhcHRlcigpOwogICAgIHZpcnR1YWwg
flFXZWJQYWdlQWRhcHRlcigpOwogCkBAIC0yNDcsNiArMjU1LDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVBbmRTZXRDdXJyZW50Q29udGV4dE1lbnUoY29uc3QgUUxpc3Q8TWVu
dUl0ZW1EZXNjcmlwdGlvbj4mLCBRQml0QXJyYXkqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGhh
bmRsZVNjcm9sbGJhckNvbnRleHRNZW51RXZlbnQoUUNvbnRleHRNZW51RXZlbnQqLCBib29sLCBT
Y3JvbGxEaXJlY3Rpb24qLCBTY3JvbGxHcmFudWxhcml0eSopID0gMDsKIAorICAgIHZvaWQgc2V0
VmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGUpOworICAgIFBhZ2VWaXNpYmlsaXR5
U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCk7CisKICAgICBzdGF0aWMgUVdlYlBhZ2VBZGFwdGVyKiBr
aXQoV2ViQ29yZTo6UGFnZSopOwogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdw
b3J0QXJndW1lbnRzKCkgY29uc3Q7CiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pOwpAQCAtMzU0LDYgKzM2NSw4IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm5ldHdvcmtNYW5hZ2VyOwor
ICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGUgbV92aXNpYmlsaXR5U3RhdGU7CisKIAogcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGRydFJ1bjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBp
L3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9x
d2VicGFnZS5jcHAJKHJldmlzaW9uIDE1MzcwNCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0
QXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEzOSw2ICszMTM5LDM1IEBAIHF1
aW50NjQgUVdlYlBhZ2U6OmJ5dGVzUmVjZWl2ZWQoKSBjb25zdAogfQogCiAvKiEKKyAgICBSZXR1
cm5zIHRoZSBjdXJyZW50IHBhZ2UgdmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgY3VycmVudCBwYWdl
LgorCisgICAgXHNhIHNldFZpc2liaWxpdHlTdGF0ZSgpCisqLworUVdlYlBhZ2U6OlBhZ2VWaXNp
YmlsaXR5U3RhdGUgUVdlYlBhZ2U6OnZpc2liaWxpdHlTdGF0ZSgpCit7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlPihkLT52aXNpYmlsaXR5U3Rh
dGUoKSk7Cit9CisKKy8qIQorICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gY2hhbmdlIHRoZSBw
YWdlIHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIGN1cnJlbnQgcGFnZS4KKyAgICBJdCBzaG91bGQg
YmUgY2FsbGVkIGJ5IFF0IGFwcGxpY2F0aW9ucyB3aG8gd2FudCB0byBub3RpZnkgSmF2YXNjcmlw
dCBhcHBsaWNhdGlvbgorICAgIHRoYXQgdGhlIHZpc2liaWxpdHkgc3RhdGUgaGFzIGNoYW5nZWQg
KGVnLiBieSByZWltcGxlbWVudGluZyBzZXRWaXNpYmxlIGZ1bmN0aW9uIG9mIFFXaWRnZXQpLgor
ICAgIFRoZSB2aXNpYmlsaXR5IHN0YXRlIHdpbGwgYmUgdXBkYXRlZCB3aXRoIHRoZSBcYSBzdGF0
ZSBwYXJhbWV0ZXIgdmFsdWUgb25seSBpZiBpdCdzIGRpZmZlcmVudCBmcm9tIHRoZSBwcmV2aW91
cyBzZXQuCisgICAgVGhlbiwgSFRNTCBET00gRG9jdW1lbnQgT2JqZWN0IGF0dHJpYnV0ZXMgJ2hp
ZGRlbicgYW5kICd2aXNpYmlsaXR5U3RhdGUnCisgICAgd2lsbCBiZSB1cGRhdGVkIHRvIHRoZSBj
b3JyZWN0IHZhbHVlIGFuZCBhICd2aXNpYmxpdHljaGFuZ2UnIGV2ZW50IHdpbGwgYmUgZmlyZWQu
CisgICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIEhUTUw1IEFQSSBjYW4gYmUgZm91bmQg
YXQgXGx7aHR0cDovL3d3dy53My5vcmcvVFIvcGFnZS12aXNpYmlsaXR5L317VzNDIFJlY29tbWVu
ZGF0aW9uOiBQYWdlIFZpc2liaWxpdHl9LgorCisgICAgXG5vdGUgVGhlIGluaXRpYWwgc3RhdGUg
aXMgc2V0IHRvIFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLgorCisgICAgXHNhIHZpc2liaWxp
dHlTdGF0ZSgpCisqLwordm9pZCBRV2ViUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdl
OjpQYWdlVmlzaWJpbGl0eVN0YXRlIHN0YXRlKQoreworICAgIGQtPnNldFZpc2liaWxpdHlTdGF0
ZShzdGF0aWNfY2FzdDxRV2ViUGFnZUFkYXB0ZXI6OlBhZ2VWaXNpYmlsaXR5U3RhdGU+KHN0YXRl
KSk7Cit9CisKKworLyohCiAgICAgXHNpbmNlIDQuOAogICAgIFxmbiB2b2lkIFFXZWJQYWdlOjp2
aWV3cG9ydENoYW5nZVJlcXVlc3RlZCgpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0
QXBpL3F3ZWJwYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkv
cXdlYnBhZ2UuaAkocmV2aXNpb24gMTUzNzA0KQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRB
cGkvcXdlYnBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBRV0VC
S0lUV0lER0VUU19FWFBPUlQgUVdlYlBhZ2UgOiBwCiAgICAgUV9QUk9QRVJUWShMaW5rRGVsZWdh
dGlvblBvbGljeSBsaW5rRGVsZWdhdGlvblBvbGljeSBSRUFEIGxpbmtEZWxlZ2F0aW9uUG9saWN5
IFdSSVRFIHNldExpbmtEZWxlZ2F0aW9uUG9saWN5KQogICAgIFFfUFJPUEVSVFkoUVBhbGV0dGUg
cGFsZXR0ZSBSRUFEIHBhbGV0dGUgV1JJVEUgc2V0UGFsZXR0ZSkKICAgICBRX1BST1BFUlRZKGJv
b2wgY29udGVudEVkaXRhYmxlIFJFQUQgaXNDb250ZW50RWRpdGFibGUgV1JJVEUgc2V0Q29udGVu
dEVkaXRhYmxlKQorICAgIFFfUFJPUEVSVFkoUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGUg
dmlzaWJpbGl0eVN0YXRlIFJFQUQgdmlzaWJpbGl0eVN0YXRlIFdSSVRFIHNldFZpc2liaWxpdHlT
dGF0ZSkKICAgICBRX0VOVU1TKExpbmtEZWxlZ2F0aW9uUG9saWN5IE5hdmlnYXRpb25UeXBlIFdl
YkFjdGlvbikKIHB1YmxpYzoKICAgICBlbnVtIE5hdmlnYXRpb25UeXBlIHsKQEAgLTIxNiw2ICsy
MTcsMTMgQEAgcHVibGljOgogICAgICAgICBHZW9sb2NhdGlvbgogICAgIH07CiAKKyAgICBlbnVt
IFBhZ2VWaXNpYmlsaXR5U3RhdGUgeworICAgICAgICBQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJs
ZSwKKyAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbiwKKyAgICAgICAgUGFnZVZpc2li
aWxpdHlTdGF0ZVByZXJlbmRlciwKKyAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0ZVVubG9hZGVk
CisgICAgfTsKKwogICAgIGNsYXNzIFFXRUJLSVRXSURHRVRTX0VYUE9SVCBWaWV3cG9ydEF0dHJp
YnV0ZXMgewogICAgIHB1YmxpYzoKICAgICAgICAgVmlld3BvcnRBdHRyaWJ1dGVzKCk7CkBAIC0y
NzUsNiArMjgzLDkgQEAgcHVibGljOgogICAgIHF1aW50NjQgdG90YWxCeXRlcygpIGNvbnN0Owog
ICAgIHF1aW50NjQgYnl0ZXNSZWNlaXZlZCgpIGNvbnN0OwogCisgICAgUGFnZVZpc2liaWxpdHlT
dGF0ZSB2aXNpYmlsaXR5U3RhdGUoKTsKKyAgICB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZShQYWdl
VmlzaWJpbGl0eVN0YXRlKTsKKwogICAgIGJvb2wgaGFzU2VsZWN0aW9uKCkgY29uc3Q7CiAgICAg
UVN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdDsKICAgICBRU3RyaW5nIHNlbGVjdGVkSHRtbCgp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0
X3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gMTUzNzA0KQorKysgU291cmNlL1dlYktpdC9xdC90ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4
LDggQEAgcHJpdmF0ZSBRX1NMT1RTOgogICAgIHZvaWQgc2NyZWVuc2hvdF9kYXRhKCk7CiAgICAg
dm9pZCBzY3JlZW5zaG90KCk7CiAKKyAgICB2b2lkIGNoYW5nZVZpc2liaWxpdHlTdGF0ZSgpOwor
CiAjaWYgZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTAogICAgIHZvaWQgYWNj
ZWxlcmF0ZWRXZWJHTFNjcmVlbnNob3RXaXRob3V0VmlldygpOwogICAgIHZvaWQgdW5hY2NlbGVy
YXRlZFdlYkdMU2NyZWVuc2hvdFdpdGhvdXRWaWV3KCk7CkBAIC0zMTMyLDYgKzMxMzQsODIgQEAg
dm9pZCB0c3RfUVdlYlBhZ2U6Om1hY0NvcHlVbmljb2RlVG9DbGlwYgogfQogI2VuZGlmCiAKK3Zv
aWQgdHN0X1FXZWJQYWdlOjpjaGFuZ2VWaXNpYmlsaXR5U3RhdGUoKQoreworI2lmIEVOQUJMRV9Q
QUdFX1ZJU0lCSUxJVFlfQVBJCisgICAgUVZhcmlhbnQgc3RhdGVCb29sLCBzdGF0ZVN0cmluZywg
Y3B0OworCisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2V0SHRtbCgiPGh0bWw+PGJvZHk+PC9i
b2R5PjwvaHRtbD4iKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoInZhciBzdGF0ZUJvb2wgPSB1bmRlZmluZWQsIHN0YXRlU3RyaW5nID0gdW5kZWZpbmVkLCBj
cHQgPSAwOyB2YXIgdmlzaWJpbGl0eUNhbGxCYWNrID0gZnVuY3Rpb24gKCkge3N0YXRlQm9vbCA9
IGRvY3VtZW50WydoaWRkZW4nXTsgc3RhdGVTdHJpbmcgPSBkb2N1bWVudFsndmlzaWJpbGl0eVN0
YXRlJ107IGNwdCsrO307ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5n
ZScsIHZpc2liaWxpdHlDYWxsQmFjaywgZmFsc2UpOyIpOworCisgICAgLy8gVGhlIHZpc2liaWxp
dHkgc3RhdGUgc2hvdWxkIGJlIGluaXRpYWxpc2VkIHRvIHZpc2libGUuCisgICAgUUNPTVBBUkUo
bV9wYWdlLT52aXNpYmlsaXR5U3RhdGUoKSwgUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGVW
aXNpYmxlKTsKKyAgICBzdGF0ZUJvb2wgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUph
dmFTY3JpcHQoImRvY3VtZW50WydoaWRkZW4nXSIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5
cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiAhc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0
ZVN0cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1l
bnRbJ3Zpc2liaWxpdHlTdGF0ZSddIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkg
PT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmco
InZpc2libGUiKSk7CisKKyAgICAvLyBUcnkgdG8gY2hhbmdlIHdpdGggdGhlIHNhbWUgdmFsdWUu
CisgICAgbV9wYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5
U3RhdGVWaXNpYmxlKTsKKyAgICBRVkVSSUZZKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRlKCkgPT0g
UVdlYlBhZ2U6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAgICAvLyBXZSBjaGVjayB0
aGF0IHRoZXJlIGlzbid0IGFueSBKUyBldmVudCB0aGF0IGhhcyBiZWVuIGZpcmVkIGFuZAorICAg
IC8vIHZpc2liaWxpdHkgcHJvcGVydGllcyBhcmUgc3RpbGwgZXF1YWxzIHRvIHZpc2libGUuCisg
ICAgc3RhdGVCb29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJk
b2N1bWVudFsnaGlkZGVuJ10iKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZh
cmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBt
X3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50Wyd2aXNpYmls
aXR5U3RhdGUnXSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50
OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikp
OworICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0
Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgIWNwdC50
b0RvdWJsZSgpKTsKKworICAgIC8vIFRyeSB0byBjaGFuZ2UgdG8gd2l0aCBkaWZmZXJlbnQgdmFs
dWVzIHRoZW4gY2hlY2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZAorICAgIC8vIGFuZCB2
aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5LgorICAgIG1f
cGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlOjpQYWdlVmlzaWJpbGl0eVN0YXRlUHJl
cmVuZGVyKTsKKyAgICBRQ09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFn
ZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcik7CisgICAgc3RhdGVCb29sID0gbV9wYWdl
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVS
SUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9v
bCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9
PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygi
cHJlcmVuZGVyIikpOworICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2
YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3Vi
bGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMSk7CisKKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlT
dGF0ZShRV2ViUGFnZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVVubG9hZGVkKTsKKyAgICBRQ09NUEFS
RShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6UGFnZVZpc2liaWxpdHlTdGF0
ZVVubG9hZGVkKTsKKyAgICBzdGF0ZUJvb2wgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0
ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9
PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5n
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIp
OworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYg
c3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJ1bmxvYWRlZCIpKTsKKyAgICBjcHQg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFW
RVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09
IDIpOworCisgICAgbV9wYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2U6OlBhZ2VWaXNp
YmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAgICBRQ09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0
ZSgpLCBRV2ViUGFnZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUpOworICAgIHN0YXRlQm9v
bCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7
CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmICFzdGF0
ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJp
bmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9
PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJp
YW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMyk7CisKKyAgICBtX3BhZ2UtPnNldFZp
c2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6UGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbik7CisgICAg
UUNPTVBBUkUobV9wYWdlLT52aXNpYmlsaXR5U3RhdGUoKSwgUVdlYlBhZ2U6OlBhZ2VWaXNpYmls
aXR5U3RhdGVIaWRkZW4pOworICAgIHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlw
ZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVT
dHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3Ry
aW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmlu
ZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBj
cHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAg
IFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgp
ID09IDQpOworCisgICAgbV9wYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2U6OlBhZ2VW
aXNpYmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAgICBRQ09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlT
dGF0ZSgpLCBRV2ViUGFnZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUpOworICAgIHN0YXRl
Qm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29s
Iik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmICFz
dGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVT
dHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmco
KSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkt
PmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFW
YXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gNSk7CisjZW5kaWYKK30KKwogdm9p
ZCB0c3RfUVdlYlBhZ2U6OmNvbnRleHRNZW51Q29weSgpCiB7CiAgICAgUVdlYlZpZXcgdmlldzsK
</data>
<flag name="review"
          id="230000"
          type_id="1"
          status="-"
          setter="bedupont"
    />
    <flag name="commit-queue"
          id="230001"
          type_id="3"
          status="-"
          setter="bedupont"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208132</attachid>
            <date>2013-08-05 10:12:54 -0700</date>
            <delta_ts>2013-08-06 00:53:14 -0700</delta_ts>
            <desc> New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (5)</desc>
            <filename>patch_109422_22.patch</filename>
            <type>text/plain</type>
            <size>13273</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTM3MDcpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA4LTA1ICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAod2ViUGFnZVZpc2liaWxpdHlTdGF0ZVRvV2ViQ29yZVZpc2liaWxpdHlTdGF0ZSk6
CisgICAgICAgICh3ZWJDb3JlVmlzaWJpbGl0eVN0YXRlVG9XZWJQYWdlVmlzaWJpbGl0eVN0YXRl
KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAg
ICAgKFFXZWJQYWdlQWRhcHRlcjo6dmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgIChRV2Vi
UGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2Uu
aDoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAo
dHN0X1FXZWJQYWdlOjpjaGFuZ2VWaXNpYmlsaXR5U3RhdGUpOgorCiAyMDEzLTA3LTMxICBLd2Fu
ZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgVXNlIGVtcHR5U3Ry
aW5nIGluc3RlYWQgb2YgU3RyaW5nKCIiKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAkocmV2aXNpb24gMTUzNzA0KQor
KysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDksNiArMTQ5LDQwIEBAIHN0YXRpYyBpbmxpbmUgUXQ6OkRyb3BB
Y3Rpb24gZHJhZ09wVG9Ecm8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgaW5saW5l
IFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGUgd2ViUGFnZVZpc2liaWxpdHlTdGF0ZVRvV2Vi
Q29yZVZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZUFkYXB0ZXI6OlZpc2liaWxpdHlTdGF0ZSBzdGF0
ZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBRV2ViUGFnZUFkYXB0ZXI6OlZp
c2liaWxpdHlTdGF0ZVByZXJlbmRlcjoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlBhZ2VWaXNp
YmlsaXR5U3RhdGVQcmVyZW5kZXI7CisgICAgY2FzZSBRV2ViUGFnZUFkYXB0ZXI6OlZpc2liaWxp
dHlTdGF0ZVVubG9hZGVkOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlT
dGF0ZVVubG9hZGVkOworICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGVW
aXNpYmxlOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2li
bGU7CisgICAgY2FzZSBRV2ViUGFnZUFkYXB0ZXI6OlZpc2liaWxpdHlTdGF0ZUhpZGRlbjoKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW47CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlBh
Z2VWaXNpYmlsaXR5U3RhdGVIaWRkZW47CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIFFXZWJQ
YWdlQWRhcHRlcjo6VmlzaWJpbGl0eVN0YXRlIHdlYkNvcmVWaXNpYmlsaXR5U3RhdGVUb1dlYlBh
Z2VWaXNpYmlsaXR5U3RhdGUoV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSBzdGF0ZSkKK3sK
KyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0
YXRlUHJlcmVuZGVyOgorICAgICAgICByZXR1cm4gUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5
U3RhdGVQcmVyZW5kZXI7CisgICAgY2FzZSBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVW5s
b2FkZWQ6CisgICAgICAgIHJldHVybiBRV2ViUGFnZUFkYXB0ZXI6OlZpc2liaWxpdHlTdGF0ZVVu
bG9hZGVkOworICAgIGNhc2UgV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGU6Cisg
ICAgICAgIHJldHVybiBRV2ViUGFnZUFkYXB0ZXI6OlZpc2liaWxpdHlTdGF0ZVZpc2libGU7Cisg
ICAgY2FzZSBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuOgorICAgICAgICByZXR1
cm4gUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGVIaWRkZW47CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIFFXZWJQYWdlQWRhcHRlcjo6
VmlzaWJpbGl0eVN0YXRlSGlkZGVuOworICAgIH0KK30KKwogc3RhdGljIFdlYkNvcmU6OkZyYW1l
TG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdChjb25zdCBRVXJsICZ1cmwsIFdlYkNvcmU6OkZy
YW1lICpmcmFtZSkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdChmcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwKQEAgLTI4MCw2ICszMTQsMjIgQEAgdm9p
ZCBRV2ViUGFnZUFkYXB0ZXI6OnJlZ2lzdGVyVW5kb1N0ZXAoVwogICAgIGNyZWF0ZVVuZG9TdGVw
KFFTaGFyZWRQb2ludGVyPFVuZG9TdGVwUXQ+KG5ldyBVbmRvU3RlcFF0KHN0ZXApKSk7CiB9CiAK
K3ZvaWQgUVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2VBZGFwdGVy
OjpWaXNpYmlsaXR5U3RhdGUgc3RhdGUpCit7CisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9B
UEkpCisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+c2V0VmlzaWJp
bGl0eVN0YXRlKHdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVUb1dlYkNvcmVWaXNpYmlsaXR5U3RhdGUo
c3RhdGUpLCBmYWxzZSk7CisjZWxzZQorICAgIFFfVU5VU0VEKHN0YXRlKTsKKyNlbmRpZgorfQor
CitRV2ViUGFnZUFkYXB0ZXI6OlZpc2liaWxpdHlTdGF0ZSBRV2ViUGFnZUFkYXB0ZXI6OnZpc2li
aWxpdHlTdGF0ZSgpCit7CisgICAgcmV0dXJuIHdlYkNvcmVWaXNpYmlsaXR5U3RhdGVUb1dlYlBh
Z2VWaXNpYmlsaXR5U3RhdGUocGFnZS0+dmlzaWJpbGl0eVN0YXRlKCkpOworfQorCiB2b2lkIFFX
ZWJQYWdlQWRhcHRlcjo6c2V0TmV0d29ya0FjY2Vzc01hbmFnZXIoUU5ldHdvcmtBY2Nlc3NNYW5h
Z2VyICptYW5hZ2VyKQogewogICAgIGlmIChtYW5hZ2VyID09IG5ldHdvcmtNYW5hZ2VyKQpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRl
ci5oCShyZXZpc2lvbiAxNTM3MDQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1FXZWJQYWdlQWRhcHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDE0IEBAIHB1
YmxpYzoKICAgICAgICAgU2Nyb2xsQnlEb2N1bWVudAogICAgIH07CiAKKyAgICAvLyBNdXN0IG1h
dGNoIHdpdGggdmFsdWVzIG9mIFFXZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGUgZW51bS4KKyAgICBl
bnVtIFZpc2liaWxpdHlTdGF0ZSB7CisgICAgICAgIFZpc2liaWxpdHlTdGF0ZVZpc2libGUsCisg
ICAgICAgIFZpc2liaWxpdHlTdGF0ZUhpZGRlbiwKKyAgICAgICAgVmlzaWJpbGl0eVN0YXRlUHJl
cmVuZGVyLAorICAgICAgICBWaXNpYmlsaXR5U3RhdGVVbmxvYWRlZAorICAgIH07CisKICAgICBR
V2ViUGFnZUFkYXB0ZXIoKTsKICAgICB2aXJ0dWFsIH5RV2ViUGFnZUFkYXB0ZXIoKTsKIApAQCAt
MjQ3LDYgKzI1NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5kU2V0Q3Vy
cmVudENvbnRleHRNZW51KGNvbnN0IFFMaXN0PE1lbnVJdGVtRGVzY3JpcHRpb24+JiwgUUJpdEFy
cmF5KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGxiYXJDb250ZXh0TWVudUV2
ZW50KFFDb250ZXh0TWVudUV2ZW50KiwgYm9vbCwgU2Nyb2xsRGlyZWN0aW9uKiwgU2Nyb2xsR3Jh
bnVsYXJpdHkqKSA9IDA7CiAKKyAgICB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZShWaXNpYmlsaXR5
U3RhdGUpOworICAgIFZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUoKTsKKwogICAgIHN0
YXRpYyBRV2ViUGFnZUFkYXB0ZXIqIGtpdChXZWJDb3JlOjpQYWdlKik7CiAgICAgV2ViQ29yZTo6
Vmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRBcmd1bWVudHMoKSBjb25zdDsKICAgICB2b2lkIHJl
Z2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiAxNTM3MDQp
CisrKyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxMzksNiArMzEzOSwzNSBAQCBxdWludDY0IFFXZWJQYWdlOjpieXRlc1JlY2VpdmVk
KCkgY29uc3QKIH0KIAogLyohCisgICAgUmV0dXJucyB0aGUgY3VycmVudCBwYWdlIHZpc2liaWxp
dHkgc3RhdGUuCisKKyAgICBcc2Egc2V0VmlzaWJpbGl0eVN0YXRlKCkKKyovCitRV2ViUGFnZTo6
VmlzaWJpbGl0eVN0YXRlIFFXZWJQYWdlOjp2aXNpYmlsaXR5U3RhdGUoKQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlPihkLT52aXNpYmlsaXR5U3Rh
dGUoKSk7Cit9CisKKy8qIQorICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gY2hhbmdlIHRoZSBw
YWdlIHZpc2liaWxpdHkgc3RhdGUuCisgICAgSXQgc2hvdWxkIGJlIGNhbGxlZCBieSBRdCBhcHBs
aWNhdGlvbnMgd2hvIHdhbnQgdG8gbm90aWZ5IHRoZSBKYXZhU2NyaXB0IGFwcGxpY2F0aW9uCisg
ICAgdGhhdCB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBoYXMgY2hhbmdlZCAoZS5nLiBieSByZWltcGxl
bWVudGluZyBRV2lkZ2V0OjpzZXRWaXNpYmxlKS4KKyAgICBUaGUgdmlzaWJpbGl0eSBzdGF0ZSB3
aWxsIGJlIHVwZGF0ZWQgd2l0aCB0aGUgXGEgc3RhdGUgcGFyYW1ldGVyIHZhbHVlIG9ubHkgaWYg
aXQncyBkaWZmZXJlbnQgZnJvbSB0aGUgcHJldmlvdXMgc2V0LgorICAgIFRoZW4sIEhUTUwgRE9N
IERvY3VtZW50IE9iamVjdCBhdHRyaWJ1dGVzICdoaWRkZW4nIGFuZCAndmlzaWJpbGl0eVN0YXRl
JworICAgIHdpbGwgYmUgdXBkYXRlZCB0byB0aGUgY29ycmVjdCB2YWx1ZSBhbmQgYSAndmlzaWJs
aXR5Y2hhbmdlJyBldmVudCB3aWxsIGJlIGZpcmVkLgorICAgIE1vcmUgaW5mb3JtYXRpb24gYWJv
dXQgdGhpcyBIVE1MNSBBUEkgY2FuIGJlIGZvdW5kIGF0IFxse2h0dHA6Ly93d3cudzMub3JnL1RS
L3BhZ2UtdmlzaWJpbGl0eS99e1czQyBSZWNvbW1lbmRhdGlvbjogUGFnZSBWaXNpYmlsaXR5fS4K
KworICAgIFxub3RlIFRoZSBpbml0aWFsIHN0YXRlIGlzIHNldCB0byBWaXNpYmlsaXR5U3RhdGVW
aXNpYmxlLgorCisgICAgXHNhIHZpc2liaWxpdHlTdGF0ZSgpCisqLwordm9pZCBRV2ViUGFnZTo6
c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGUgc3RhdGUpCit7Cisg
ICAgZC0+c2V0VmlzaWJpbGl0eVN0YXRlKHN0YXRpY19jYXN0PFFXZWJQYWdlQWRhcHRlcjo6Vmlz
aWJpbGl0eVN0YXRlPihzdGF0ZSkpOworfQorCisKKy8qIQogICAgIFxzaW5jZSA0LjgKICAgICBc
Zm4gdm9pZCBRV2ViUGFnZTo6dmlld3BvcnRDaGFuZ2VSZXF1ZXN0ZWQoKQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgJKHJldmlzaW9uIDE1MzcwNCkKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYg
Kzc4LDcgQEAgY2xhc3MgUVdFQktJVFdJREdFVFNfRVhQT1JUIFFXZWJQYWdlIDogcAogICAgIFFf
UFJPUEVSVFkoTGlua0RlbGVnYXRpb25Qb2xpY3kgbGlua0RlbGVnYXRpb25Qb2xpY3kgUkVBRCBs
aW5rRGVsZWdhdGlvblBvbGljeSBXUklURSBzZXRMaW5rRGVsZWdhdGlvblBvbGljeSkKICAgICBR
X1BST1BFUlRZKFFQYWxldHRlIHBhbGV0dGUgUkVBRCBwYWxldHRlIFdSSVRFIHNldFBhbGV0dGUp
CiAgICAgUV9QUk9QRVJUWShib29sIGNvbnRlbnRFZGl0YWJsZSBSRUFEIGlzQ29udGVudEVkaXRh
YmxlIFdSSVRFIHNldENvbnRlbnRFZGl0YWJsZSkKKyAgICBRX1BST1BFUlRZKFFXZWJQYWdlOjpW
aXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlIFJFQUQgdmlzaWJpbGl0eVN0YXRlIFdSSVRF
IHNldFZpc2liaWxpdHlTdGF0ZSkKICAgICBRX0VOVU1TKExpbmtEZWxlZ2F0aW9uUG9saWN5IE5h
dmlnYXRpb25UeXBlIFdlYkFjdGlvbikKIHB1YmxpYzoKICAgICBlbnVtIE5hdmlnYXRpb25UeXBl
IHsKQEAgLTIxNiw2ICsyMTcsMTMgQEAgcHVibGljOgogICAgICAgICBHZW9sb2NhdGlvbgogICAg
IH07CiAKKyAgICBlbnVtIFZpc2liaWxpdHlTdGF0ZSB7CisgICAgICAgIFZpc2liaWxpdHlTdGF0
ZVZpc2libGUsCisgICAgICAgIFZpc2liaWxpdHlTdGF0ZUhpZGRlbiwKKyAgICAgICAgVmlzaWJp
bGl0eVN0YXRlUHJlcmVuZGVyLAorICAgICAgICBWaXNpYmlsaXR5U3RhdGVVbmxvYWRlZAorICAg
IH07CisKICAgICBjbGFzcyBRV0VCS0lUV0lER0VUU19FWFBPUlQgVmlld3BvcnRBdHRyaWJ1dGVz
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFZpZXdwb3J0QXR0cmlidXRlcygpOwpAQCAtMjc1LDYg
KzI4Myw5IEBAIHB1YmxpYzoKICAgICBxdWludDY0IHRvdGFsQnl0ZXMoKSBjb25zdDsKICAgICBx
dWludDY0IGJ5dGVzUmVjZWl2ZWQoKSBjb25zdDsKIAorICAgIFZpc2liaWxpdHlTdGF0ZSB2aXNp
YmlsaXR5U3RhdGUoKTsKKyAgICB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZShWaXNpYmlsaXR5U3Rh
dGUpOworCiAgICAgYm9vbCBoYXNTZWxlY3Rpb24oKSBjb25zdDsKICAgICBRU3RyaW5nIHNlbGVj
dGVkVGV4dCgpIGNvbnN0OwogICAgIFFTdHJpbmcgc2VsZWN0ZWRIdG1sKCkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3Bw
CShyZXZpc2lvbiAxNTM3MDQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3Rz
dF9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw2ICsxNjgsOCBAQCBwcml2YXRl
IFFfU0xPVFM6CiAgICAgdm9pZCBzY3JlZW5zaG90X2RhdGEoKTsKICAgICB2b2lkIHNjcmVlbnNo
b3QoKTsKIAorICAgIHZvaWQgY2hhbmdlVmlzaWJpbGl0eVN0YXRlKCk7CisKICNpZiBkZWZpbmVk
KEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMCiAgICAgdm9pZCBhY2NlbGVyYXRlZFdlYkdM
U2NyZWVuc2hvdFdpdGhvdXRWaWV3KCk7CiAgICAgdm9pZCB1bmFjY2VsZXJhdGVkV2ViR0xTY3Jl
ZW5zaG90V2l0aG91dFZpZXcoKTsKQEAgLTMxMzIsNiArMzEzNCw4MiBAQCB2b2lkIHRzdF9RV2Vi
UGFnZTo6bWFjQ29weVVuaWNvZGVUb0NsaXBiCiB9CiAjZW5kaWYKIAordm9pZCB0c3RfUVdlYlBh
Z2U6OmNoYW5nZVZpc2liaWxpdHlTdGF0ZSgpCit7CisjaWYgRU5BQkxFX1BBR0VfVklTSUJJTElU
WV9BUEkKKyAgICBRVmFyaWFudCBzdGF0ZUJvb2wsIHN0YXRlU3RyaW5nLCBjcHQ7CisKKyAgICBt
X3BhZ2UtPm1haW5GcmFtZSgpLT5zZXRIdG1sKCI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiIp
OworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidmFyIHN0YXRl
Qm9vbCA9IHVuZGVmaW5lZCwgc3RhdGVTdHJpbmcgPSB1bmRlZmluZWQsIGNwdCA9IDA7IHZhciB2
aXNpYmlsaXR5Q2FsbEJhY2sgPSBmdW5jdGlvbiAoKSB7c3RhdGVCb29sID0gZG9jdW1lbnRbJ2hp
ZGRlbiddOyBzdGF0ZVN0cmluZyA9IGRvY3VtZW50Wyd2aXNpYmlsaXR5U3RhdGUnXTsgY3B0Kys7
fTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgdmlzaWJpbGl0
eUNhbGxCYWNrLCBmYWxzZSk7Iik7CisKKyAgICAvLyBUaGUgdmlzaWJpbGl0eSBzdGF0ZSBzaG91
bGQgYmUgaW5pdGlhbGlzZWQgdG8gdmlzaWJsZS4KKyAgICBRQ09NUEFSRShtX3BhZ2UtPnZpc2li
aWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CisgICAgc3Rh
dGVCb29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVu
dFsnaGlkZGVuJ10iKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6
OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50Wyd2aXNpYmlsaXR5U3Rh
dGUnXSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJp
bmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworCisg
ICAgLy8gVHJ5IHRvIGNoYW5nZSB3aXRoIHRoZSBzYW1lIHZhbHVlLgorICAgIG1fcGFnZS0+c2V0
VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAgICBR
VkVSSUZZKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRlKCkgPT0gUVdlYlBhZ2U6OlZpc2liaWxpdHlT
dGF0ZVZpc2libGUpOworICAgIC8vIFdlIGNoZWNrIHRoYXQgdGhlcmUgaXNuJ3QgYW55IEpTIGV2
ZW50IHRoYXQgaGFzIGJlZW4gZmlyZWQgYW5kCisgICAgLy8gdmlzaWJpbGl0eSBwcm9wZXJ0aWVz
IGFyZSBzdGlsbCBlcXVhbHMgdG8gdmlzaWJsZS4KKyAgICBzdGF0ZUJvb2wgPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50WydoaWRkZW4nXSIpOworICAg
IFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiAhc3RhdGVCb29s
LnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1
YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnRbJ3Zpc2liaWxpdHlTdGF0ZSddIik7CisgICAgUVZFUklG
WShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50
b1N0cmluZygpID09IFFTdHJpbmcoInZpc2libGUiKSk7CisgICAgY3B0ID0gbV9wYWdlLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBl
KCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiAhY3B0LnRvRG91YmxlKCkpOworCisgICAgLy8gVHJ5
IHRvIGNoYW5nZSB0byB3aXRoIGRpZmZlcmVudCB2YWx1ZXMgdGhlbiBjaGVjayBpZiBhIEpTIGV2
ZW50IGhhcyBiZWVuIGZpcmVkCisgICAgLy8gYW5kIHZpc2liaWxpdHkgcHJvcGVydGllcyBoYXZl
IGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkuCisgICAgbV9wYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUo
UVdlYlBhZ2U6OlZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcik7CisgICAgUUNPTVBBUkUobV9wYWdl
LT52aXNpYmlsaXR5U3RhdGUoKSwgUVdlYlBhZ2U6OlZpc2liaWxpdHlTdGF0ZVByZXJlbmRlcik7
CisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6
OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IG1fcGFnZS0+
bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVS
SUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5n
LnRvU3RyaW5nKCkgPT0gUVN0cmluZygicHJlcmVuZGVyIikpOworICAgIGNwdCA9IG1fcGFnZS0+
bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQu
dHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMSk7CisKKyAg
ICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlVW5s
b2FkZWQpOworICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRlKCksIFFXZWJQYWdl
OjpWaXNpYmlsaXR5U3RhdGVVbmxvYWRlZCk7CisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0
YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgc3RhdGVCb29sLnRvQm9vbCgpKTsK
KyAgICBzdGF0ZVN0cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFy
aWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygidW5sb2Fk
ZWQiKSk7CisgICAgY3B0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBj
cHQudG9Eb3VibGUoKSA9PSAyKTsKKworICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKFFX
ZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAgICBRQ09NUEFSRShtX3BhZ2UtPnZp
c2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CisgICAg
c3RhdGVCb29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0
ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wg
JiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShz
dGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0
cmluZygpID09IFFTdHJpbmcoInZpc2libGUiKSk7CisgICAgY3B0ID0gbV9wYWdlLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkg
PT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSAzKTsKKworICAgIG1fcGFn
ZS0+c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGVIaWRkZW4pOwor
ICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRlKCksIFFXZWJQYWdlOjpWaXNpYmls
aXR5U3RhdGVIaWRkZW4pOworICAgIHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlw
ZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVT
dHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3Ry
aW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmlu
ZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoImhpZGRlbiIpKTsKKyAgICBj
cHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAg
IFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgp
ID09IDQpOworCisgICAgbV9wYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2U6OlZpc2li
aWxpdHlTdGF0ZVZpc2libGUpOworICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRl
KCksIFFXZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAgICBzdGF0ZUJvb2wgPSBt
X3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAg
IFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiAhc3RhdGVCb29s
LnRvQm9vbCgpKTsKKyAgICBzdGF0ZVN0cmluZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1
YXRlSmF2YVNjcmlwdCgic3RhdGVTdHJpbmciKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5
cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0
cmluZygidmlzaWJsZSIpKTsKKyAgICBjcHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0
ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6
RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDUpOworI2VuZGlmCit9CisKIHZvaWQgdHN0X1FX
ZWJQYWdlOjpjb250ZXh0TWVudUNvcHkoKQogewogICAgIFFXZWJWaWV3IHZpZXc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208173</attachid>
            <date>2013-08-06 00:53:14 -0700</date>
            <delta_ts>2013-08-06 05:37:22 -0700</delta_ts>
            <desc>New QWebPage API (with test): void QWebPage::setVisibilityState(QWebPage::PageVisibilityState state) (6)</desc>
            <filename>patch_109422_23.patch</filename>
            <type>text/plain</type>
            <size>13445</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTM3NDIpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA4LTA2ICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAod2ViUGFnZVZpc2liaWxpdHlTdGF0ZVRvV2ViQ29yZVZpc2liaWxpdHlTdGF0ZSk6
CisgICAgICAgICh3ZWJDb3JlVmlzaWJpbGl0eVN0YXRlVG9XZWJQYWdlVmlzaWJpbGl0eVN0YXRl
KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAg
ICAgKFFXZWJQYWdlQWRhcHRlcjo6dmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgIChRV2Vi
UGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2Uu
aDoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAo
dHN0X1FXZWJQYWdlOjpjaGFuZ2VWaXNpYmlsaXR5U3RhdGUpOgorCiAyMDEzLTA3LTI3ICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgTG9nZ2luZyBzaG91bGQgYmUgY29u
ZmlndXJhYmxlIHVzaW5nIGh1bWFuLXJlYWRhYmxlIGNoYW5uZWwgbmFtZXMgcmF0aGVyIHRoYW4g
Y3JhenkgYml0bWFza3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdl
YlBhZ2VBZGFwdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAJKHJldmlzaW9uIDE1MzcwNCkKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ5LDYgKzE0OSw0MCBAQCBzdGF0aWMgaW5saW5lIFF0OjpEcm9wQWN0aW9uIGRyYWdP
cFRvRHJvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGlubGluZSBXZWJDb3JlOjpQ
YWdlVmlzaWJpbGl0eVN0YXRlIHdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVUb1dlYkNvcmVWaXNpYmls
aXR5U3RhdGUoUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGUgc3RhdGUpCit7CisgICAg
c3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3Rh
dGVQcmVyZW5kZXI6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRl
UHJlcmVuZGVyOworICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGVVbmxv
YWRlZDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVVbmxvYWRl
ZDsKKyAgICBjYXNlIFFXZWJQYWdlQWRhcHRlcjo6VmlzaWJpbGl0eVN0YXRlVmlzaWJsZToKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOworICAgIGNh
c2UgUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGVIaWRkZW46CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVChmYWxzZSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0
eVN0YXRlSGlkZGVuOworICAgIH0KK30KKworc3RhdGljIGlubGluZSBRV2ViUGFnZUFkYXB0ZXI6
OlZpc2liaWxpdHlTdGF0ZSB3ZWJDb3JlVmlzaWJpbGl0eVN0YXRlVG9XZWJQYWdlVmlzaWJpbGl0
eVN0YXRlKFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNo
IChzdGF0ZSkgeworICAgIGNhc2UgV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRl
cjoKKyAgICAgICAgcmV0dXJuIFFXZWJQYWdlQWRhcHRlcjo6VmlzaWJpbGl0eVN0YXRlUHJlcmVu
ZGVyOworICAgIGNhc2UgV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVVubG9hZGVkOgorICAg
ICAgICByZXR1cm4gUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGVVbmxvYWRlZDsKKyAg
ICBjYXNlIFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOgorICAgICAgICByZXR1
cm4gUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOworICAgIGNhc2UgV2Vi
Q29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbjoKKyAgICAgICAgcmV0dXJuIFFXZWJQYWdl
QWRhcHRlcjo6VmlzaWJpbGl0eVN0YXRlSGlkZGVuOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVChmYWxzZSk7CisgICAgICAgIHJldHVybiBRV2ViUGFnZUFkYXB0ZXI6OlZpc2liaWxpdHlT
dGF0ZUhpZGRlbjsKKyAgICB9Cit9CisKIHN0YXRpYyBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0
IGZyYW1lTG9hZFJlcXVlc3QoY29uc3QgUVVybCAmdXJsLCBXZWJDb3JlOjpGcmFtZSAqZnJhbWUp
CiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksCkBAIC0yODAsNiArMzE0LDIyIEBAIHZvaWQgUVdlYlBhZ2VB
ZGFwdGVyOjpyZWdpc3RlclVuZG9TdGVwKFcKICAgICBjcmVhdGVVbmRvU3RlcChRU2hhcmVkUG9p
bnRlcjxVbmRvU3RlcFF0PihuZXcgVW5kb1N0ZXBRdChzdGVwKSkpOwogfQogCit2b2lkIFFXZWJQ
YWdlQWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlQWRhcHRlcjo6VmlzaWJpbGl0
eVN0YXRlIHN0YXRlKQoreworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIGlm
ICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZSh3
ZWJQYWdlVmlzaWJpbGl0eVN0YXRlVG9XZWJDb3JlVmlzaWJpbGl0eVN0YXRlKHN0YXRlKSwgZmFs
c2UpOworI2Vsc2UKKyAgICBRX1VOVVNFRChzdGF0ZSk7CisjZW5kaWYKK30KKworUVdlYlBhZ2VB
ZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGUgUVdlYlBhZ2VBZGFwdGVyOjp2aXNpYmlsaXR5U3RhdGUo
KSBjb25zdAoreworICAgIHJldHVybiB3ZWJDb3JlVmlzaWJpbGl0eVN0YXRlVG9XZWJQYWdlVmlz
aWJpbGl0eVN0YXRlKHBhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpKTsKK30KKwogdm9pZCBRV2ViUGFn
ZUFkYXB0ZXI6OnNldE5ldHdvcmtBY2Nlc3NNYW5hZ2VyKFFOZXR3b3JrQWNjZXNzTWFuYWdlciAq
bWFuYWdlcikKIHsKICAgICBpZiAobWFuYWdlciA9PSBuZXR3b3JrTWFuYWdlcikKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaAko
cmV2aXNpb24gMTUzNzA0KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2Vi
UGFnZUFkYXB0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMywxNCBAQCBwdWJsaWM6
CiAgICAgICAgIFNjcm9sbEJ5RG9jdW1lbnQKICAgICB9OwogCisgICAgLy8gTXVzdCBtYXRjaCB3
aXRoIHZhbHVlcyBvZiBRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlIGVudW0uCisgICAgZW51bSBW
aXNpYmlsaXR5U3RhdGUgeworICAgICAgICBWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLAorICAgICAg
ICBWaXNpYmlsaXR5U3RhdGVIaWRkZW4sCisgICAgICAgIFZpc2liaWxpdHlTdGF0ZVByZXJlbmRl
ciwKKyAgICAgICAgVmlzaWJpbGl0eVN0YXRlVW5sb2FkZWQKKyAgICB9OworCiAgICAgUVdlYlBh
Z2VBZGFwdGVyKCk7CiAgICAgdmlydHVhbCB+UVdlYlBhZ2VBZGFwdGVyKCk7CiAKQEAgLTI0Nyw2
ICsyNTUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUFuZFNldEN1cnJlbnRD
b250ZXh0TWVudShjb25zdCBRTGlzdDxNZW51SXRlbURlc2NyaXB0aW9uPiYsIFFCaXRBcnJheSop
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlU2Nyb2xsYmFyQ29udGV4dE1lbnVFdmVudChR
Q29udGV4dE1lbnVFdmVudCosIGJvb2wsIFNjcm9sbERpcmVjdGlvbiosIFNjcm9sbEdyYW51bGFy
aXR5KikgPSAwOwogCisgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGUoVmlzaWJpbGl0eVN0YXRl
KTsKKyAgICBWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7CisKICAgICBz
dGF0aWMgUVdlYlBhZ2VBZGFwdGVyKiBraXQoV2ViQ29yZTo6UGFnZSopOwogICAgIFdlYkNvcmU6
OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3Q7CiAgICAgdm9pZCBy
ZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pOwpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gMTUzNzA0
KQorKysgU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTM5LDYgKzMxMzksMzUgQEAgcXVpbnQ2NCBRV2ViUGFnZTo6Ynl0ZXNSZWNlaXZl
ZCgpIGNvbnN0CiB9CiAKIC8qIQorICAgIFJldHVybnMgdGhlIGN1cnJlbnQgcGFnZSB2aXNpYmls
aXR5IHN0YXRlLgorCisgICAgXHNhIHNldFZpc2liaWxpdHlTdGF0ZSgpCisqLworUVdlYlBhZ2U6
OlZpc2liaWxpdHlTdGF0ZSBRV2ViUGFnZTo6dmlzaWJpbGl0eVN0YXRlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8UVdlYlBhZ2U6OlZpc2liaWxpdHlTdGF0ZT4oZC0+dmlzaWJp
bGl0eVN0YXRlKCkpOworfQorCisvKiEKKyAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNoYW5n
ZSB0aGUgcGFnZSB2aXNpYmlsaXR5IHN0YXRlLgorICAgIEl0IHNob3VsZCBiZSBjYWxsZWQgYnkg
UXQgYXBwbGljYXRpb25zIHdobyB3YW50IHRvIG5vdGlmeSB0aGUgSmF2YVNjcmlwdCBhcHBsaWNh
dGlvbgorICAgIHRoYXQgdGhlIHZpc2liaWxpdHkgc3RhdGUgaGFzIGNoYW5nZWQgKGUuZy4gYnkg
cmVpbXBsZW1lbnRpbmcgUVdpZGdldDo6c2V0VmlzaWJsZSkuCisgICAgVGhlIHZpc2liaWxpdHkg
c3RhdGUgd2lsbCBiZSB1cGRhdGVkIHdpdGggdGhlIFxhIHN0YXRlIHBhcmFtZXRlciB2YWx1ZSBv
bmx5IGlmIGl0J3MgZGlmZmVyZW50IGZyb20gdGhlIHByZXZpb3VzIHNldC4KKyAgICBUaGVuLCBI
VE1MIERPTSBEb2N1bWVudCBPYmplY3QgYXR0cmlidXRlcyAnaGlkZGVuJyBhbmQgJ3Zpc2liaWxp
dHlTdGF0ZScKKyAgICB3aWxsIGJlIHVwZGF0ZWQgdG8gdGhlIGNvcnJlY3QgdmFsdWUgYW5kIGEg
J3Zpc2libGl0eWNoYW5nZScgZXZlbnQgd2lsbCBiZSBmaXJlZC4KKyAgICBNb3JlIGluZm9ybWF0
aW9uIGFib3V0IHRoaXMgSFRNTDUgQVBJIGNhbiBiZSBmb3VuZCBhdCBcbHtodHRwOi8vd3d3Lncz
Lm9yZy9UUi9wYWdlLXZpc2liaWxpdHkvfXtXM0MgUmVjb21tZW5kYXRpb246IFBhZ2UgVmlzaWJp
bGl0eX0uCisKKyAgICBcbm90ZSBUaGUgaW5pdGlhbCBzdGF0ZSBpcyBzZXQgdG8gVmlzaWJpbGl0
eVN0YXRlVmlzaWJsZS4KKworICAgIFxzYSB2aXNpYmlsaXR5U3RhdGUoKQorKi8KK3ZvaWQgUVdl
YlBhZ2U6OnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlIHN0YXRl
KQoreworICAgIGQtPnNldFZpc2liaWxpdHlTdGF0ZShzdGF0aWNfY2FzdDxRV2ViUGFnZUFkYXB0
ZXI6OlZpc2liaWxpdHlTdGF0ZT4oc3RhdGUpKTsKK30KKworCisvKiEKICAgICBcc2luY2UgNC44
CiAgICAgXGZuIHZvaWQgUVdlYlBhZ2U6OnZpZXdwb3J0Q2hhbmdlUmVxdWVzdGVkKCkKIApJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oCShyZXZpc2lvbiAxNTM3MDQpCisr
KyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw3ICs3OCw4IEBAIGNsYXNzIFFXRUJLSVRXSURHRVRTX0VYUE9SVCBRV2ViUGFnZSA6IHAK
ICAgICBRX1BST1BFUlRZKExpbmtEZWxlZ2F0aW9uUG9saWN5IGxpbmtEZWxlZ2F0aW9uUG9saWN5
IFJFQUQgbGlua0RlbGVnYXRpb25Qb2xpY3kgV1JJVEUgc2V0TGlua0RlbGVnYXRpb25Qb2xpY3kp
CiAgICAgUV9QUk9QRVJUWShRUGFsZXR0ZSBwYWxldHRlIFJFQUQgcGFsZXR0ZSBXUklURSBzZXRQ
YWxldHRlKQogICAgIFFfUFJPUEVSVFkoYm9vbCBjb250ZW50RWRpdGFibGUgUkVBRCBpc0NvbnRl
bnRFZGl0YWJsZSBXUklURSBzZXRDb250ZW50RWRpdGFibGUpCi0gICAgUV9FTlVNUyhMaW5rRGVs
ZWdhdGlvblBvbGljeSBOYXZpZ2F0aW9uVHlwZSBXZWJBY3Rpb24pCisgICAgUV9QUk9QRVJUWShW
aXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlIFJFQUQgdmlzaWJpbGl0eVN0YXRlIFdSSVRF
IHNldFZpc2liaWxpdHlTdGF0ZSkKKyAgICBRX0VOVU1TKExpbmtEZWxlZ2F0aW9uUG9saWN5IE5h
dmlnYXRpb25UeXBlIFZpc2liaWxpdHlTdGF0ZSBXZWJBY3Rpb24pCiBwdWJsaWM6CiAgICAgZW51
bSBOYXZpZ2F0aW9uVHlwZSB7CiAgICAgICAgIE5hdmlnYXRpb25UeXBlTGlua0NsaWNrZWQsCkBA
IC0yMTYsNiArMjE3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgR2VvbG9jYXRpb24KICAgICB9Owog
CisgICAgZW51bSBWaXNpYmlsaXR5U3RhdGUgeworICAgICAgICBWaXNpYmlsaXR5U3RhdGVWaXNp
YmxlLAorICAgICAgICBWaXNpYmlsaXR5U3RhdGVIaWRkZW4sCisgICAgICAgIFZpc2liaWxpdHlT
dGF0ZVByZXJlbmRlciwKKyAgICAgICAgVmlzaWJpbGl0eVN0YXRlVW5sb2FkZWQKKyAgICB9Owor
CiAgICAgY2xhc3MgUVdFQktJVFdJREdFVFNfRVhQT1JUIFZpZXdwb3J0QXR0cmlidXRlcyB7CiAg
ICAgcHVibGljOgogICAgICAgICBWaWV3cG9ydEF0dHJpYnV0ZXMoKTsKQEAgLTI3NSw2ICsyODMs
OSBAQCBwdWJsaWM6CiAgICAgcXVpbnQ2NCB0b3RhbEJ5dGVzKCkgY29uc3Q7CiAgICAgcXVpbnQ2
NCBieXRlc1JlY2VpdmVkKCkgY29uc3Q7CiAKKyAgICBWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0
eVN0YXRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3RhdGUoVmlzaWJpbGl0eVN0
YXRlKTsKKwogICAgIGJvb2wgaGFzU2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgUVN0cmluZyBzZWxl
Y3RlZFRleHQoKSBjb25zdDsKICAgICBRU3RyaW5nIHNlbGVjdGVkSHRtbCgpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNw
cAkocmV2aXNpb24gMTUzNzA0KQorKysgU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90
c3RfcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDggQEAgcHJpdmF0
ZSBRX1NMT1RTOgogICAgIHZvaWQgc2NyZWVuc2hvdF9kYXRhKCk7CiAgICAgdm9pZCBzY3JlZW5z
aG90KCk7CiAKKyAgICB2b2lkIGNoYW5nZVZpc2liaWxpdHlTdGF0ZSgpOworCiAjaWYgZGVmaW5l
ZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTAogICAgIHZvaWQgYWNjZWxlcmF0ZWRXZWJH
TFNjcmVlbnNob3RXaXRob3V0VmlldygpOwogICAgIHZvaWQgdW5hY2NlbGVyYXRlZFdlYkdMU2Ny
ZWVuc2hvdFdpdGhvdXRWaWV3KCk7CkBAIC0zMTMyLDYgKzMxMzQsODIgQEAgdm9pZCB0c3RfUVdl
YlBhZ2U6Om1hY0NvcHlVbmljb2RlVG9DbGlwYgogfQogI2VuZGlmCiAKK3ZvaWQgdHN0X1FXZWJQ
YWdlOjpjaGFuZ2VWaXNpYmlsaXR5U3RhdGUoKQoreworI2lmIEVOQUJMRV9QQUdFX1ZJU0lCSUxJ
VFlfQVBJCisgICAgUVZhcmlhbnQgc3RhdGVCb29sLCBzdGF0ZVN0cmluZywgY3B0OworCisgICAg
bV9wYWdlLT5tYWluRnJhbWUoKS0+c2V0SHRtbCgiPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4i
KTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBzdGF0
ZUJvb2wgPSB1bmRlZmluZWQsIHN0YXRlU3RyaW5nID0gdW5kZWZpbmVkLCBjcHQgPSAwOyB2YXIg
dmlzaWJpbGl0eUNhbGxCYWNrID0gZnVuY3Rpb24gKCkge3N0YXRlQm9vbCA9IGRvY3VtZW50Wydo
aWRkZW4nXTsgc3RhdGVTdHJpbmcgPSBkb2N1bWVudFsndmlzaWJpbGl0eVN0YXRlJ107IGNwdCsr
O307ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIHZpc2liaWxp
dHlDYWxsQmFjaywgZmFsc2UpOyIpOworCisgICAgLy8gVGhlIHZpc2liaWxpdHkgc3RhdGUgc2hv
dWxkIGJlIGluaXRpYWxpc2VkIHRvIHZpc2libGUuCisgICAgUUNPTVBBUkUobV9wYWdlLT52aXNp
YmlsaXR5U3RhdGUoKSwgUVdlYlBhZ2U6OlZpc2liaWxpdHlTdGF0ZVZpc2libGUpOworICAgIHN0
YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1l
bnRbJ2hpZGRlbiddIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50
OjpCb29sICYmICFzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9wYWdl
LT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudFsndmlzaWJpbGl0eVN0
YXRlJ10iKTsKKyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3Ry
aW5nICYmIHN0YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygidmlzaWJsZSIpKTsKKwor
ICAgIC8vIFRyeSB0byBjaGFuZ2Ugd2l0aCB0aGUgc2FtZSB2YWx1ZS4KKyAgICBtX3BhZ2UtPnNl
dFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CisgICAg
UVZFUklGWShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpID09IFFXZWJQYWdlOjpWaXNpYmlsaXR5
U3RhdGVWaXNpYmxlKTsKKyAgICAvLyBXZSBjaGVjayB0aGF0IHRoZXJlIGlzbid0IGFueSBKUyBl
dmVudCB0aGF0IGhhcyBiZWVuIGZpcmVkIGFuZAorICAgIC8vIHZpc2liaWxpdHkgcHJvcGVydGll
cyBhcmUgc3RpbGwgZXF1YWxzIHRvIHZpc2libGUuCisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudFsnaGlkZGVuJ10iKTsKKyAg
ICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9v
bC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoImRvY3VtZW50Wyd2aXNpYmlsaXR5U3RhdGUnXSIpOworICAgIFFWRVJJ
Rlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcu
dG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IG1fcGFnZS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlw
ZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgIWNwdC50b0RvdWJsZSgpKTsKKworICAgIC8vIFRy
eSB0byBjaGFuZ2UgdG8gd2l0aCBkaWZmZXJlbnQgdmFsdWVzIHRoZW4gY2hlY2sgaWYgYSBKUyBl
dmVudCBoYXMgYmVlbiBmaXJlZAorICAgIC8vIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2
ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5LgorICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRl
KFFXZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIpOworICAgIFFDT01QQVJFKG1fcGFn
ZS0+dmlzaWJpbGl0eVN0YXRlKCksIFFXZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIp
OworICAgIHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50
OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZF
UklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmlu
Zy50b1N0cmluZygpID09IFFTdHJpbmcoInByZXJlbmRlciIpKTsKKyAgICBjcHQgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0
LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDEpOworCisg
ICAgbV9wYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2U6OlZpc2liaWxpdHlTdGF0ZVVu
bG9hZGVkKTsKKyAgICBRQ09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFn
ZTo6VmlzaWJpbGl0eVN0YXRlVW5sb2FkZWQpOworICAgIHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShz
dGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7
CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZh
cmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInVubG9h
ZGVkIikpOworICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYg
Y3B0LnRvRG91YmxlKCkgPT0gMik7CisKKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShR
V2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CisgICAgUUNPTVBBUkUobV9wYWdlLT52
aXNpYmlsaXR5U3RhdGUoKSwgUVdlYlBhZ2U6OlZpc2liaWxpdHlTdGF0ZVZpc2libGUpOworICAg
IHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3Rh
dGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29s
ICYmICFzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9wYWdlLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlko
c3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9T
dHJpbmcoKSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgp
ID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMyk7CisKKyAgICBtX3Bh
Z2UtPnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlSGlkZGVuKTsK
KyAgICBRQ09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6VmlzaWJp
bGl0eVN0YXRlSGlkZGVuKTsKKyAgICBzdGF0ZUJvb2wgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5
cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRl
U3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0
cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJp
bmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAg
Y3B0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAg
ICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUo
KSA9PSA0KTsKKworICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlOjpWaXNp
YmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAgICBRQ09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0
ZSgpLCBRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CisgICAgc3RhdGVCb29sID0g
bV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAg
ICBRVkVSSUZZKHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9v
bC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50
eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFT
dHJpbmcoInZpc2libGUiKSk7CisgICAgY3B0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6
OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSA1KTsKKyNlbmRpZgorfQorCiB2b2lkIHRzdF9R
V2ViUGFnZTo6Y29udGV4dE1lbnVDb3B5KCkKIHsKICAgICBRV2ViVmlldyB2aWV3Owo=
</data>
<flag name="review"
          id="230055"
          type_id="1"
          status="-"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="230056"
          type_id="3"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208183</attachid>
            <date>2013-08-06 05:37:22 -0700</date>
            <delta_ts>2013-08-06 06:57:29 -0700</delta_ts>
            <desc>New QWebPage API (with test): void QWebPage::setVisibilityState(VisibilityState state) (7)</desc>
            <filename>patch_109422_24.patch</filename>
            <type>text/plain</type>
            <size>14276</size>
            <attacher name="Benjamin Dupont">bedupont</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTM3NDgpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA4LTA2ICBC
ZW5qYW1pbiBEdXBvbnQgICA8YmR1cG9udEBuZHMuY29tPgorCisgICAgICAgIFtRdF0gQWRkIFBh
Z2UgVmlzaWJpbGl0eSBBUEkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAod2ViUGFnZVZpc2liaWxpdHlTdGF0ZVRvV2ViQ29yZVZpc2liaWxpdHlTdGF0ZSk6
CisgICAgICAgICh3ZWJDb3JlVmlzaWJpbGl0eVN0YXRlVG9XZWJQYWdlVmlzaWJpbGl0eVN0YXRl
KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAg
ICAgKFFXZWJQYWdlQWRhcHRlcjo6dmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnNldFZpc2liaWxpdHlTdGF0ZSk6CisgICAgICAgIChR
V2ViUGFnZTo6dmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2Uu
aDoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAo
dHN0X1FXZWJQYWdlOjpjaGFuZ2VWaXNpYmlsaXR5U3RhdGUpOgorCiAyMDEzLTA3LTI3ICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgTG9nZ2luZyBzaG91bGQgYmUgY29u
ZmlndXJhYmxlIHVzaW5nIGh1bWFuLXJlYWRhYmxlIGNoYW5uZWwgbmFtZXMgcmF0aGVyIHRoYW4g
Y3JhenkgYml0bWFza3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdl
YlBhZ2VBZGFwdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAJKHJldmlzaW9uIDE1Mzc0OCkKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ5LDYgKzE0OSw0MCBAQCBzdGF0aWMgaW5saW5lIFF0OjpEcm9wQWN0aW9uIGRyYWdP
cFRvRHJvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGlubGluZSBXZWJDb3JlOjpQ
YWdlVmlzaWJpbGl0eVN0YXRlIHdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVUb1dlYkNvcmVWaXNpYmls
aXR5U3RhdGUoUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGUgc3RhdGUpCit7CisgICAg
c3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3Rh
dGVQcmVyZW5kZXI6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRl
UHJlcmVuZGVyOworICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGVVbmxv
YWRlZDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVVbmxvYWRl
ZDsKKyAgICBjYXNlIFFXZWJQYWdlQWRhcHRlcjo6VmlzaWJpbGl0eVN0YXRlVmlzaWJsZToKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOworICAgIGNh
c2UgUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGVIaWRkZW46CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVChmYWxzZSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0
eVN0YXRlSGlkZGVuOworICAgIH0KK30KKworc3RhdGljIGlubGluZSBRV2ViUGFnZUFkYXB0ZXI6
OlZpc2liaWxpdHlTdGF0ZSB3ZWJDb3JlVmlzaWJpbGl0eVN0YXRlVG9XZWJQYWdlVmlzaWJpbGl0
eVN0YXRlKFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNo
IChzdGF0ZSkgeworICAgIGNhc2UgV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVByZXJlbmRl
cjoKKyAgICAgICAgcmV0dXJuIFFXZWJQYWdlQWRhcHRlcjo6VmlzaWJpbGl0eVN0YXRlUHJlcmVu
ZGVyOworICAgIGNhc2UgV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZVVubG9hZGVkOgorICAg
ICAgICByZXR1cm4gUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGVVbmxvYWRlZDsKKyAg
ICBjYXNlIFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOgorICAgICAgICByZXR1
cm4gUVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGVWaXNpYmxlOworICAgIGNhc2UgV2Vi
Q29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbjoKKyAgICAgICAgcmV0dXJuIFFXZWJQYWdl
QWRhcHRlcjo6VmlzaWJpbGl0eVN0YXRlSGlkZGVuOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVChmYWxzZSk7CisgICAgICAgIHJldHVybiBRV2ViUGFnZUFkYXB0ZXI6OlZpc2liaWxpdHlT
dGF0ZUhpZGRlbjsKKyAgICB9Cit9CisKIHN0YXRpYyBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0
IGZyYW1lTG9hZFJlcXVlc3QoY29uc3QgUVVybCAmdXJsLCBXZWJDb3JlOjpGcmFtZSAqZnJhbWUp
CiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksCkBAIC0yODAsNiArMzE0LDIyIEBAIHZvaWQgUVdlYlBhZ2VB
ZGFwdGVyOjpyZWdpc3RlclVuZG9TdGVwKFcKICAgICBjcmVhdGVVbmRvU3RlcChRU2hhcmVkUG9p
bnRlcjxVbmRvU3RlcFF0PihuZXcgVW5kb1N0ZXBRdChzdGVwKSkpOwogfQogCit2b2lkIFFXZWJQ
YWdlQWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKFZpc2liaWxpdHlTdGF0ZSBzdGF0ZSkKK3sK
KyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAoIXBhZ2UpCisgICAgICAg
IHJldHVybjsKKyAgICBwYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUod2ViUGFnZVZpc2liaWxpdHlT
dGF0ZVRvV2ViQ29yZVZpc2liaWxpdHlTdGF0ZShzdGF0ZSksIGZhbHNlKTsKKyNlbHNlCisgICAg
UV9VTlVTRUQoc3RhdGUpOworI2VuZGlmCit9CisKK1FXZWJQYWdlQWRhcHRlcjo6VmlzaWJpbGl0
eVN0YXRlIFFXZWJQYWdlQWRhcHRlcjo6dmlzaWJpbGl0eVN0YXRlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gd2ViQ29yZVZpc2liaWxpdHlTdGF0ZVRvV2ViUGFnZVZpc2liaWxpdHlTdGF0ZShwYWdl
LT52aXNpYmlsaXR5U3RhdGUoKSk7Cit9CisKIHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjpzZXROZXR3
b3JrQWNjZXNzTWFuYWdlcihRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm1hbmFnZXIpCiB7CiAgICAg
aWYgKG1hbmFnZXIgPT0gbmV0d29ya01hbmFnZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHJldmlzaW9uIDE1Mzc0OCkK
KysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsMTQgQEAgcHVibGljOgogICAgICAgICBTY3JvbGxC
eURvY3VtZW50CiAgICAgfTsKIAorICAgIC8vIE11c3QgbWF0Y2ggd2l0aCB2YWx1ZXMgb2YgUVdl
YlBhZ2U6OlZpc2liaWxpdHlTdGF0ZSBlbnVtLgorICAgIGVudW0gVmlzaWJpbGl0eVN0YXRlIHsK
KyAgICAgICAgVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSwKKyAgICAgICAgVmlzaWJpbGl0eVN0YXRl
SGlkZGVuLAorICAgICAgICBWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIsCisgICAgICAgIFZpc2li
aWxpdHlTdGF0ZVVubG9hZGVkCisgICAgfTsKKwogICAgIFFXZWJQYWdlQWRhcHRlcigpOwogICAg
IHZpcnR1YWwgflFXZWJQYWdlQWRhcHRlcigpOwogCkBAIC0yNDcsNiArMjU1LDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVBbmRTZXRDdXJyZW50Q29udGV4dE1lbnUoY29uc3Qg
UUxpc3Q8TWVudUl0ZW1EZXNjcmlwdGlvbj4mLCBRQml0QXJyYXkqKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIGhhbmRsZVNjcm9sbGJhckNvbnRleHRNZW51RXZlbnQoUUNvbnRleHRNZW51RXZlbnQq
LCBib29sLCBTY3JvbGxEaXJlY3Rpb24qLCBTY3JvbGxHcmFudWxhcml0eSopID0gMDsKIAorICAg
IHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlKFZpc2liaWxpdHlTdGF0ZSk7CisgICAgVmlzaWJpbGl0
eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSgpIGNvbnN0OworCiAgICAgc3RhdGljIFFXZWJQYWdlQWRh
cHRlcioga2l0KFdlYkNvcmU6OlBhZ2UqKTsKICAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
cyB2aWV3cG9ydEFyZ3VtZW50cygpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
cXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L1dpZGdldEFwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDE1Mzc0OCkKKysrIFNvdXJjZS9XZWJL
aXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1Niw2ICsx
MDU2LDIwIEBAIFFXZWJJbnNwZWN0b3IqIFFXZWJQYWdlUHJpdmF0ZTo6Z2V0T3JDcmUKICovCiAK
IC8qIQorICAgIFxlbnVtIFFXZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGUKKworICAgIFRoaXMgZW51
bSBkZWZpbmVzIHZpc2liaWxpdHkgc3RhdGVzIHRoYXQgYSB3ZWJwYWdlIGNhbiB0YWtlLgorCisg
ICAgXHZhbHVlIFZpc2liaWxpdHlTdGF0ZVZpc2libGUgVGhlIHdlYnBhZ2UgaXMgYXQgbGVhc3Qg
cGFydGlhbGx5IHZpc2libGUgYXQgb24gYXQgbGVhc3Qgb25lIHNjcmVlbi4KKyAgICBcdmFsdWUg
VmlzaWJpbGl0eVN0YXRlSGlkZGVuIFRoZSB3ZWJwYWdlIGlzIG5vdCB2aXNpYmxlIGF0IGFsbCBv
biBhbnkgc2NyZWVuLgorICAgIFx2YWx1ZSBWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIgVGhlIHdl
YnBhZ2UgaXMgbG9hZGVkIG9mZi1zY3JlZW4gYW5kIGlzIG5vdCB2aXNpYmxlLgorICAgIFx2YWx1
ZSBWaXNpYmlsaXR5U3RhdGVVbmxvYWRlZCBUaGUgd2VicGFnZSBpcyB1bmxvYWRpbmcgaXRzIGNv
bnRlbnQuCisgICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIHZhbHVlcyBjYW4gYmUgZm91
bmQgYXQgXGx7IGh0dHA6Ly93d3cudzMub3JnL1RSL3BhZ2UtdmlzaWJpbGl0eS8jZG9tLWRvY3Vt
ZW50LXZpc2liaWxpdHlzdGF0ZX17VzNDIFJlY29tbWVuZGF0aW9uOiBQYWdlIFZpc2liaWxpdHk6
IHZpc2liaWxpdHlTdGF0ZSBhdHRyaWJ1dGV9LgorCisgICAgXHNhIFFXZWJQYWdlOjp2aXNpYmls
aXR5U3RhdGUKKyovCisKKy8qIQogICAgIFxlbnVtIFFXZWJQYWdlOjpMaW5rRGVsZWdhdGlvblBv
bGljeQogCiAgICAgVGhpcyBlbnVtIGRlZmluZXMgdGhlIGRlbGVnYXRpb24gcG9saWNpZXMgYSB3
ZWJwYWdlIGNhbiBoYXZlIHdoZW4gYWN0aXZhdGluZyBsaW5rcyBhbmQgZW1pdHRpbmcKQEAgLTMx
MzgsNiArMzE1MiwzMSBAQCBxdWludDY0IFFXZWJQYWdlOjpieXRlc1JlY2VpdmVkKCkgY29uc3QK
ICAgICByZXR1cm4gZC0+bV9ieXRlc1JlY2VpdmVkOwogfQogCisKKy8qIQorICAgIFxwcm9wZXJ0
eSBRV2ViUGFnZTo6dmlzaWJpbGl0eVN0YXRlCisgICAgXGJyaWVmIHRoZSBwYWdlJ3MgdmlzaWJp
bGl0eSBzdGF0ZQorCisgICAgVGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgY2hhbmdlZCBieSBRdCBh
cHBsaWNhdGlvbnMgd2hvIHdhbnQgdG8gbm90aWZ5IHRoZSBKYXZhU2NyaXB0IGFwcGxpY2F0aW9u
CisgICAgdGhhdCB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBoYXMgY2hhbmdlZCAoZS5nLiBieSByZWlt
cGxlbWVudGluZyBRV2lkZ2V0OjpzZXRWaXNpYmxlKS4KKyAgICBUaGUgdmlzaWJpbGl0eSBzdGF0
ZSB3aWxsIGJlIHVwZGF0ZWQgd2l0aCB0aGUgXGEgc3RhdGUgcGFyYW1ldGVyIHZhbHVlIG9ubHkg
aWYgaXQncyBkaWZmZXJlbnQgZnJvbSB0aGUgcHJldmlvdXMgc2V0LgorICAgIFRoZW4sIEhUTUwg
RE9NIERvY3VtZW50IE9iamVjdCBhdHRyaWJ1dGVzICdoaWRkZW4nIGFuZCAndmlzaWJpbGl0eVN0
YXRlJworICAgIHdpbGwgYmUgdXBkYXRlZCB0byB0aGUgY29ycmVjdCB2YWx1ZSBhbmQgYSAndmlz
aWJsaXR5Y2hhbmdlJyBldmVudCB3aWxsIGJlIGZpcmVkLgorICAgIE1vcmUgaW5mb3JtYXRpb24g
YWJvdXQgdGhpcyBIVE1MNSBBUEkgY2FuIGJlIGZvdW5kIGF0IFxse2h0dHA6Ly93d3cudzMub3Jn
L1RSL3BhZ2UtdmlzaWJpbGl0eS99e1czQyBSZWNvbW1lbmRhdGlvbjogUGFnZSBWaXNpYmlsaXR5
fS4KKworICAgIEJ5IGRlZmF1bHQsIHRoaXMgcHJvcGVydHkgaXMgc2V0IHRvIFZpc2liaWxpdHlT
dGF0ZVZpc2libGUuCisqLwordm9pZCBRV2ViUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKFZpc2li
aWxpdHlTdGF0ZSBzdGF0ZSkKK3sKKyAgICBkLT5zZXRWaXNpYmlsaXR5U3RhdGUoc3RhdGljX2Nh
c3Q8UVdlYlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGU+KHN0YXRlKSk7Cit9CisKK1FXZWJQ
YWdlOjpWaXNpYmlsaXR5U3RhdGUgUVdlYlBhZ2U6OnZpc2liaWxpdHlTdGF0ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFZpc2liaWxpdHlTdGF0ZT4oZC0+dmlzaWJpbGl0eVN0
YXRlKCkpOworfQorCisKIC8qIQogICAgIFxzaW5jZSA0LjgKICAgICBcZm4gdm9pZCBRV2ViUGFn
ZTo6dmlld3BvcnRDaGFuZ2VSZXF1ZXN0ZWQoKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XaWRn
ZXRBcGkvcXdlYnBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFw
aS9xd2VicGFnZS5oCShyZXZpc2lvbiAxNTM3NDgpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dpZGdl
dEFwaS9xd2VicGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw4IEBAIGNsYXNzIFFX
RUJLSVRXSURHRVRTX0VYUE9SVCBRV2ViUGFnZSA6IHAKICAgICBRX1BST1BFUlRZKExpbmtEZWxl
Z2F0aW9uUG9saWN5IGxpbmtEZWxlZ2F0aW9uUG9saWN5IFJFQUQgbGlua0RlbGVnYXRpb25Qb2xp
Y3kgV1JJVEUgc2V0TGlua0RlbGVnYXRpb25Qb2xpY3kpCiAgICAgUV9QUk9QRVJUWShRUGFsZXR0
ZSBwYWxldHRlIFJFQUQgcGFsZXR0ZSBXUklURSBzZXRQYWxldHRlKQogICAgIFFfUFJPUEVSVFko
Ym9vbCBjb250ZW50RWRpdGFibGUgUkVBRCBpc0NvbnRlbnRFZGl0YWJsZSBXUklURSBzZXRDb250
ZW50RWRpdGFibGUpCi0gICAgUV9FTlVNUyhMaW5rRGVsZWdhdGlvblBvbGljeSBOYXZpZ2F0aW9u
VHlwZSBXZWJBY3Rpb24pCisgICAgUV9QUk9QRVJUWShWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0
eVN0YXRlIFJFQUQgdmlzaWJpbGl0eVN0YXRlIFdSSVRFIHNldFZpc2liaWxpdHlTdGF0ZSkKKyAg
ICBRX0VOVU1TKExpbmtEZWxlZ2F0aW9uUG9saWN5IE5hdmlnYXRpb25UeXBlIFZpc2liaWxpdHlT
dGF0ZSBXZWJBY3Rpb24pCiBwdWJsaWM6CiAgICAgZW51bSBOYXZpZ2F0aW9uVHlwZSB7CiAgICAg
ICAgIE5hdmlnYXRpb25UeXBlTGlua0NsaWNrZWQsCkBAIC0yMTYsNiArMjE3LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgR2VvbG9jYXRpb24KICAgICB9OwogCisgICAgZW51bSBWaXNpYmlsaXR5U3Rh
dGUgeworICAgICAgICBWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLAorICAgICAgICBWaXNpYmlsaXR5
U3RhdGVIaWRkZW4sCisgICAgICAgIFZpc2liaWxpdHlTdGF0ZVByZXJlbmRlciwKKyAgICAgICAg
VmlzaWJpbGl0eVN0YXRlVW5sb2FkZWQKKyAgICB9OworCiAgICAgY2xhc3MgUVdFQktJVFdJREdF
VFNfRVhQT1JUIFZpZXdwb3J0QXR0cmlidXRlcyB7CiAgICAgcHVibGljOgogICAgICAgICBWaWV3
cG9ydEF0dHJpYnV0ZXMoKTsKQEAgLTI3NSw2ICsyODMsOSBAQCBwdWJsaWM6CiAgICAgcXVpbnQ2
NCB0b3RhbEJ5dGVzKCkgY29uc3Q7CiAgICAgcXVpbnQ2NCBieXRlc1JlY2VpdmVkKCkgY29uc3Q7
CiAKKyAgICBWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRWaXNpYmlsaXR5U3RhdGUoVmlzaWJpbGl0eVN0YXRlKTsKKwogICAgIGJvb2wgaGFzU2Vs
ZWN0aW9uKCkgY29uc3Q7CiAgICAgUVN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdDsKICAgICBR
U3RyaW5nIHNlbGVjdGVkSHRtbCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9xdC90ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gMTUzNzQ4KQorKysg
U291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjgsNiArMTY4LDggQEAgcHJpdmF0ZSBRX1NMT1RTOgogICAgIHZvaWQgc2Ny
ZWVuc2hvdF9kYXRhKCk7CiAgICAgdm9pZCBzY3JlZW5zaG90KCk7CiAKKyAgICB2b2lkIGNoYW5n
ZVZpc2liaWxpdHlTdGF0ZSgpOworCiAjaWYgZGVmaW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJM
RV9XRUJHTAogICAgIHZvaWQgYWNjZWxlcmF0ZWRXZWJHTFNjcmVlbnNob3RXaXRob3V0Vmlldygp
OwogICAgIHZvaWQgdW5hY2NlbGVyYXRlZFdlYkdMU2NyZWVuc2hvdFdpdGhvdXRWaWV3KCk7CkBA
IC0zMTMyLDYgKzMxMzQsODIgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6Om1hY0NvcHlVbmljb2RlVG9D
bGlwYgogfQogI2VuZGlmCiAKK3ZvaWQgdHN0X1FXZWJQYWdlOjpjaGFuZ2VWaXNpYmlsaXR5U3Rh
dGUoKQoreworI2lmIEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJCisgICAgUVZhcmlhbnQgc3Rh
dGVCb29sLCBzdGF0ZVN0cmluZywgY3B0OworCisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2V0
SHRtbCgiPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBzdGF0ZUJvb2wgPSB1bmRlZmluZWQsIHN0YXRl
U3RyaW5nID0gdW5kZWZpbmVkLCBjcHQgPSAwOyB2YXIgdmlzaWJpbGl0eUNhbGxCYWNrID0gZnVu
Y3Rpb24gKCkge3N0YXRlQm9vbCA9IGRvY3VtZW50WydoaWRkZW4nXTsgc3RhdGVTdHJpbmcgPSBk
b2N1bWVudFsndmlzaWJpbGl0eVN0YXRlJ107IGNwdCsrO307ZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIHZpc2liaWxpdHlDYWxsQmFjaywgZmFsc2UpOyIpOwor
CisgICAgLy8gVGhlIHZpc2liaWxpdHkgc3RhdGUgc2hvdWxkIGJlIGluaXRpYWxpc2VkIHRvIHZp
c2libGUuCisgICAgUUNPTVBBUkUobV9wYWdlLT52aXNpYmlsaXR5U3RhdGUoKSwgUVdlYlBhZ2U6
OlZpc2liaWxpdHlTdGF0ZVZpc2libGUpOworICAgIHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnRbJ2hpZGRlbiddIik7CisgICAgUVZF
UklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmICFzdGF0ZUJvb2wudG9C
b29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVK
YXZhU2NyaXB0KCJkb2N1bWVudFsndmlzaWJpbGl0eVN0YXRlJ10iKTsKKyAgICBRVkVSSUZZKHN0
YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0YXRlU3RyaW5nLnRvU3Ry
aW5nKCkgPT0gUVN0cmluZygidmlzaWJsZSIpKTsKKworICAgIC8vIFRyeSB0byBjaGFuZ2Ugd2l0
aCB0aGUgc2FtZSB2YWx1ZS4KKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFn
ZTo6VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CisgICAgUVZFUklGWShtX3BhZ2UtPnZpc2liaWxp
dHlTdGF0ZSgpID09IFFXZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAgICAvLyBX
ZSBjaGVjayB0aGF0IHRoZXJlIGlzbid0IGFueSBKUyBldmVudCB0aGF0IGhhcyBiZWVuIGZpcmVk
IGFuZAorICAgIC8vIHZpc2liaWxpdHkgcHJvcGVydGllcyBhcmUgc3RpbGwgZXF1YWxzIHRvIHZp
c2libGUuCisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJkb2N1bWVudFsnaGlkZGVuJ10iKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBl
KCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVT
dHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50
Wyd2aXNpYmlsaXR5U3RhdGUnXSIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09
IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJ2
aXNpYmxlIikpOworICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUg
JiYgIWNwdC50b0RvdWJsZSgpKTsKKworICAgIC8vIFRyeSB0byBjaGFuZ2UgdG8gd2l0aCBkaWZm
ZXJlbnQgdmFsdWVzIHRoZW4gY2hlY2sgaWYgYSBKUyBldmVudCBoYXMgYmVlbiBmaXJlZAorICAg
IC8vIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5
LgorICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlOjpWaXNpYmlsaXR5U3Rh
dGVQcmVyZW5kZXIpOworICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJpbGl0eVN0YXRlKCksIFFX
ZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIpOworICAgIHN0YXRlQm9vbCA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZF
UklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jv
b2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUph
dmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkg
PT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmco
InByZXJlbmRlciIpKTsKKyAgICBjcHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUph
dmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9PSBRVmFyaWFudDo6RG91
YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDEpOworCisgICAgbV9wYWdlLT5zZXRWaXNpYmlsaXR5
U3RhdGUoUVdlYlBhZ2U6OlZpc2liaWxpdHlTdGF0ZVVubG9hZGVkKTsKKyAgICBRQ09NUEFSRSht
X3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlVW5sb2Fk
ZWQpOworICAgIHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJp
YW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAg
UVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0
cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInVubG9hZGVkIikpOworICAgIGNwdCA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShj
cHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMik7CisK
KyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRl
VmlzaWJsZSk7CisgICAgUUNPTVBBUkUobV9wYWdlLT52aXNpYmlsaXR5U3RhdGUoKSwgUVdlYlBh
Z2U6OlZpc2liaWxpdHlTdGF0ZVZpc2libGUpOworICAgIHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShz
dGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmICFzdGF0ZUJvb2wudG9Cb29sKCkp
OworICAgIHN0YXRlU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2Ny
aXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFW
YXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJ2aXNp
YmxlIikpOworICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYg
Y3B0LnRvRG91YmxlKCkgPT0gMyk7CisKKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShR
V2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlSGlkZGVuKTsKKyAgICBRQ09NUEFSRShtX3BhZ2UtPnZp
c2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlSGlkZGVuKTsKKyAgICBz
dGF0ZUJvb2wgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRl
Qm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAm
JiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9wYWdlLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3Rh
dGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJp
bmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gbV9wYWdlLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0g
UVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSA0KTsKKworICAgIG1fcGFnZS0+
c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKTsKKyAg
ICBRQ09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6VmlzaWJpbGl0
eVN0YXRlVmlzaWJsZSk7CisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZKHN0YXRlQm9vbC50eXBl
KCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVT
dHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3Ry
aW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmlu
ZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInZpc2libGUiKSk7CisgICAg
Y3B0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAg
ICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUo
KSA9PSA1KTsKKyNlbmRpZgorfQorCiB2b2lkIHRzdF9RV2ViUGFnZTo6Y29udGV4dE1lbnVDb3B5
KCkKIHsKICAgICBRV2ViVmlldyB2aWV3Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>