<?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>70477</bug_id>
          
          <creation_ts>2011-10-19 23:38:09 -0700</creation_ts>
          <short_desc>[chromium] Improve fullscreen API</short_desc>
          <delta_ts>2011-11-18 15:39:12 -0800</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 API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Fisher (:fishd, Google)">fishd</reporter>
          <assigned_to name="Darin Fisher (:fishd, Google)">fishd</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jeremya</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>487358</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-19 23:38:09 -0700</bug_when>
    <thetext>[chromium] Improve fullscreen API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488232</commentid>
    <comment_count>1</comment_count>
      <attachid>111916</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-21 00:07:37 -0700</bug_when>
    <thetext>Created attachment 111916
v1 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488234</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-21 00:09:22 -0700</bug_when>
    <thetext>Attachment 111916 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Sourc...&quot; exit_code: 1

Source/WebKit/chromium/public/WebWidget.h:72:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/WebWidgetClient.h:87:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/WebWidgetClient.h:89:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 3 in 7 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>488236</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-21 00:09:37 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488237</commentid>
    <comment_count>4</comment_count>
      <attachid>111918</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-21 00:11:59 -0700</bug_when>
    <thetext>Created attachment 111918
v1.1 patch

Revised ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488238</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-21 00:15:18 -0700</bug_when>
    <thetext>Attachment 111918 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Sourc...&quot; exit_code: 1

Source/WebKit/chromium/public/WebWidget.h:72:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/WebWidgetClient.h:87:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/WebWidgetClient.h:89:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 3 in 7 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>488271</commentid>
    <comment_count>6</comment_count>
      <attachid>111918</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-21 01:56:23 -0700</bug_when>
    <thetext>Comment on attachment 111918
v1.1 patch

Attachment 111918 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10178774

New failing tests:
fullscreen/full-screen-placeholder.html
fullscreen/full-screen-remove-ancestor-after.html
fullscreen/full-screen-remove-sibling.html
fullscreen/full-screen-keyboard-disabled.html
fullscreen/full-screen-cancel.html
fullscreen/full-screen-render-inline.html
fast/dom/onload-open.html
fullscreen/full-screen-iframe-legacy.html
fullscreen/full-screen-keyboard-enabled.html
fullscreen/full-screen-iframe-allowed.html
fast/loader/document-with-fragment-url-1.html
fullscreen/full-screen-remove-children.html
fullscreen/full-screen-remove.html
fullscreen/full-screen-remove-ancestor.html
fullscreen/full-screen-iframe-zIndex.html
fullscreen/full-screen-css.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489078</commentid>
    <comment_count>7</comment_count>
    <who name="Jeremy Apthorp">jeremya</who>
    <bug_when>2011-10-23 16:31:28 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=111918&amp;action=review

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1222
&gt; +        return;

What if element != m_fullScreenElement?

i.e, if someone calls requestFullScreen on one element, then calls requestFullScreen on a second element without fullscreen being cancelled. I think with the current implementation, the second element will become document.webkitCurrentFullScreenElement, but no transition will occur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489202</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-23 23:29:37 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111918&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1222
&gt; &gt; +        return;
&gt; 
&gt; What if element != m_fullScreenElement?
&gt; 
&gt; i.e, if someone calls requestFullScreen on one element, then calls requestFullScreen on a second element without fullscreen being cancelled. I think with the current implementation, the second element will become document.webkitCurrentFullScreenElement, but no transition will occur.

This case is being discussed / argued on the whatwg list.  Given that our current implementation exits fullscreen when you do this, I&apos;m leaning toward not allowing the fullscreen element to be switched.  Do you know if we have any use cases that require being able to switch the fullscreen element without first exiting fullscreen mode and re-entering it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489359</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-24 09:18:30 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; This case is being discussed / argued on the whatwg list.  Given that our current implementation exits fullscreen when you do this, I&apos;m leaning toward not allowing the fullscreen element to be switched.  Do you know if we have any use cases that require being able to switch the fullscreen element without first exiting fullscreen mode and re-entering it?

It looks like Safari 5.1 ignores requestFullScreen calls made when the page is already fullscreen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489364</commentid>
    <comment_count>10</comment_count>
      <attachid>112197</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-24 09:28:37 -0700</bug_when>
    <thetext>Created attachment 112197
v1.2 patch (fix style-bot nits)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489367</commentid>
    <comment_count>11</comment_count>
      <attachid>112197</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-24 09:31:12 -0700</bug_when>
    <thetext>Comment on attachment 112197
v1.2 patch (fix style-bot nits)

Actually, I cannot commit this until http://codereview.chromium.org/8366032/ lands</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489369</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-24 09:31:41 -0700</bug_when>
    <thetext>Attachment 112197 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Sourc...&quot; exit_code: 1

Source/WebKit/chromium/public/WebWidgetClient.h:87:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/WebWidgetClient.h:89:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 2 in 7 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>489423</commentid>
    <comment_count>13</comment_count>
      <attachid>112209</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-24 10:35:50 -0700</bug_when>
    <thetext>Created attachment 112209
v1.3 patch (more style fixes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489632</commentid>
    <comment_count>14</comment_count>
      <attachid>112209</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-24 14:13:22 -0700</bug_when>
    <thetext>Comment on attachment 112209
v1.3 patch (more style fixes)

Attachment 112209 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10198995

New failing tests:
fullscreen/full-screen-placeholder.html
fullscreen/full-screen-remove-ancestor-after.html
fullscreen/full-screen-remove-sibling.html
fullscreen/full-screen-keyboard-disabled.html
fullscreen/full-screen-cancel.html
fast/dom/onload-open.html
fullscreen/full-screen-iframe-legacy.html
media/media-blocked-by-willsendrequest.html
fullscreen/full-screen-keyboard-enabled.html
fullscreen/full-screen-iframe-allowed.html
fast/loader/document-with-fragment-url-1.html
fullscreen/full-screen-remove-children.html
fullscreen/full-screen-remove.html
fullscreen/full-screen-remove-ancestor.html
fullscreen/full-screen-iframe-zIndex.html
fullscreen/full-screen-css.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492028</commentid>
    <comment_count>15</comment_count>
      <attachid>112770</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-27 15:39:52 -0700</bug_when>
    <thetext>Created attachment 112770
v1.4 patch (now with DRT fixes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492045</commentid>
    <comment_count>16</comment_count>
      <attachid>112770</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-27 15:53:40 -0700</bug_when>
    <thetext>Comment on attachment 112770
v1.4 patch (now with DRT fixes)

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

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:895
&gt;  {

supportsFullscreenForNode, enterFullscreenForNode, and exitFullscreenForNode
are the old way of doing fullscreen just for video elements.  since we implement
the generic fullscreen mode for all elements, these old methods are never reached.

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:912
&gt; +    return true;

WebCore already checks the same setting for us.

&gt; Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:299
&gt; +    m_webFrame-&gt;viewImpl()-&gt;willDetachDocument(m_webFrame);

willDetachDocument gives us a way to ensure that we exit fullscreen mode
when the document containing the fullscreen element is detached (i.e.,
navigated or removed).

(in a separate bug, i want to expose this function to chromium to replace
uses of WebFrameClient::frameDetached and WebFrameClient::willClose.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492058</commentid>
    <comment_count>17</comment_count>
      <attachid>112770</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-27 16:09:40 -0700</bug_when>
    <thetext>Comment on attachment 112770
v1.4 patch (now with DRT fixes)

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

&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:896
&gt;      return false;

Do we want to add ASSERT_NOT_REACHED here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492073</commentid>
    <comment_count>18</comment_count>
      <attachid>112770</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 16:22:19 -0700</bug_when>
    <thetext>Comment on attachment 112770
v1.4 patch (now with DRT fixes)

Attachment 112770 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10229683

New failing tests:
fullscreen/full-screen-placeholder.html
fullscreen/full-screen-keyboard-disabled.html
fast/dom/onload-open.html
fullscreen/full-screen-twice.html
fast/loader/document-with-fragment-url-1.html
fullscreen/parent-flow-inline-with-block-child.html
fullscreen/full-screen-remove.html
fullscreen/full-screen-css.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492251</commentid>
    <comment_count>19</comment_count>
      <attachid>112770</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-27 22:59:04 -0700</bug_when>
    <thetext>Comment on attachment 112770
v1.4 patch (now with DRT fixes)

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

&gt;&gt; Source/WebKit/chromium/src/ChromeClientImpl.cpp:896
&gt;&gt;      return false;
&gt; 
&gt; Do we want to add ASSERT_NOT_REACHED here?

Yes, good catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499433</commentid>
    <comment_count>20</comment_count>
      <attachid>114382</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-09 16:02:39 -0800</bug_when>
    <thetext>Created attachment 114382
v1.5 patch

This version is a bit of a different take.  I&apos;ve stepped back from trying to cancel fullscreen mode when the document is navigated.  I want to do that, but I think it needs to be done in WebCore, and so I will do that in a separate patch.  Likewise, because a layout test requires it, this patch supports changing the fullscreen element while in fullscreen mode.  Modifying that behavior should also be done in WebCore if it is to be done.

Instead, this patch focuses on getting the fullscreenchange event plumbed properly, and it fixes some layout tests to work properly when fullscreen changes happen asynchronously (as they do in the browser).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500501</commentid>
    <comment_count>21</comment_count>
      <attachid>114382</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-10 21:18:15 -0800</bug_when>
    <thetext>Comment on attachment 114382
v1.5 patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1060
&gt; +    if (m_provisionalFullScreenElement) {

This code switches from retaining the fullscreen element to only retaining
the fullscreen frame to make the subsequence code in didEnterFullScreen,
willExitFullScreen and didExitFullScreen more obvious.  In those functions,
given only a frame, it is necessary to get the document, and check if it
has a fullscreen element before asking the document to operate on its 
fullscreen element.

I think there is some work to be done here to move more of this logic into
WebCore, perhaps in the form of a FullScreenController hung off of Page.
With the exception of webkitWillEnterFullScreenForElement, the other methods
completely ignore their parameter, so I just pass null below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504343</commentid>
    <comment_count>22</comment_count>
      <attachid>114382</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-16 15:55:17 -0800</bug_when>
    <thetext>Comment on attachment 114382
v1.5 patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1068
&gt; +    }

Prefer early return.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1271
&gt; +void WebViewImpl::enterFullScreenForElement(WebCore::Element* element)
&gt; +{
&gt; +    if (m_provisionalFullScreenElement) {
&gt; +        m_provisionalFullScreenElement = element;
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    if (m_fullScreenFrame) {
&gt; +        m_provisionalFullScreenElement = element;
&gt; +        willEnterFullScreen();
&gt; +        didEnterFullScreen();
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    if (m_client &amp;&amp; m_client-&gt;enterFullScreen())
&gt; +        m_provisionalFullScreenElement = element;
&gt; +}

It might be helpful to add some comments to this function to explain what&apos;s different about these three cases.  Presumably, the first case is when this function is called multiple times while we&apos;re in the process of becoming full screen, the second case is when we&apos;re already in fullscreen, but we&apos;re changing the element (do we need to do something different if the new element&apos;s frame is different from m_fullScreenFrame?  do we have a test for that case?), and the third is the normal case of not yet behing fullscreen.

If the above isn&apos;t right, then more explanation would definitely be helpful.  :)

&gt; Source/WebKit/chromium/src/WebViewImpl.h:585
&gt; +    // If set, the WebView is being displayed fullscreen for this element.
&gt; +    RefPtr&lt;WebCore::Element&gt; m_provisionalFullScreenElement;

This comment makes it seem like m_provisionalFullScreenElement will be non-null while we&apos;re in fullscreen for this element, but then the word &quot;provisional&quot; in the name of the member makes me think that it&apos;s only non-null while we&apos;re in the process of entering fullscreen.

&gt; Source/WebKit/chromium/src/WebViewImpl.h:586
&gt; +    RefPtr&lt;WebCore::Frame&gt; m_fullScreenFrame;

Do we need a notification when the Frame is detached from the Page to exit fullscreen?  (Maybe that already happens in WebCore?  Do we have a test for that case?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504482</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-16 18:15:02 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; +void WebViewImpl::enterFullScreenForElement(WebCore::Element* element)
&gt; &gt; +{
&gt; &gt; +    if (m_provisionalFullScreenElement) {
&gt; &gt; +        m_provisionalFullScreenElement = element;
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    if (m_fullScreenFrame) {
&gt; &gt; +        m_provisionalFullScreenElement = element;
&gt; &gt; +        willEnterFullScreen();
&gt; &gt; +        didEnterFullScreen();
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    if (m_client &amp;&amp; m_client-&gt;enterFullScreen())
&gt; &gt; +        m_provisionalFullScreenElement = element;
&gt; &gt; +}
&gt; 
&gt; It might be helpful to add some comments to this function to explain what&apos;s different about these three cases.  Presumably, the first case is when this function is called multiple times while we&apos;re in the process of becoming full screen, the second case is when we&apos;re already in fullscreen, but we&apos;re changing the element (do we need to do something different if the new element&apos;s frame is different from m_fullScreenFrame?  do we have a test for that case?), and the third is the normal case of not yet behing fullscreen.

Yes, good call.  This needs comments.  For the second case, willEnterFullScreen will update m_fullScreenFrame.

I don&apos;t know if we have a good testcase for switching elements.  There was debate about removing that capability on whatwg.  Earlier in this patch, I was trying to remove that functionality, but I&apos;ve gone back from that to focus instead on the bigger problems (and on fewer problems).

There&apos;s a definite problem with insufficient test cases for fullscreen.  Moreover, all of the testcases assume that fullscreen transitions happen synchronously, which does not match reality (except for Chromium&apos;s DRT post this patch).  My plan is to go back and revise all DRTs to transition asynchronously, and then complement that with tests.


&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.h:585
&gt; &gt; +    // If set, the WebView is being displayed fullscreen for this element.
&gt; &gt; +    RefPtr&lt;WebCore::Element&gt; m_provisionalFullScreenElement;
&gt; 
&gt; This comment makes it seem like m_provisionalFullScreenElement will be non-null while we&apos;re in fullscreen for this element, but then the word &quot;provisional&quot; in the name of the member makes me think that it&apos;s only non-null 
while we&apos;re in the process of entering fullscreen.

Good catch.  Your understanding of the code is correct.  (I went back and forth on the issue of whether I should be storing the element or the frame containing the element, once we are in fullscreen mode, and this comment is residual.)


&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.h:586
&gt; &gt; +    RefPtr&lt;WebCore::Frame&gt; m_fullScreenFrame;
&gt; 
&gt; Do we need a notification when the Frame is detached from the Page to exit fullscreen?  (Maybe that already happens in WebCore?  Do we have a test for that case?)

Yes, this is a big problem.  I attempted to fix this in the earlier version of the patch by noticing when the document gets detached.  That caused layout test failures, and the WebKit2 equivalent of this code also suffers potentially from the same memory leak.  At any rate, I feel like this issue is best deferred to another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506147</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-18 15:39:12 -0800</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/100821</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111916</attachid>
            <date>2011-10-21 00:07:37 -0700</date>
            <delta_ts>2011-10-21 00:11:59 -0700</delta_ts>
            <desc>v1 patch</desc>
            <filename>wk_1.txt</filename>
            <type>text/plain</type>
            <size>14396</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODAwNikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTEtMTAtMjAgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEltcHJvdmUgZnVsbHNjcmVlbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNDc3CisKKyAgICAgICAgTW92ZSBmdWxs
c2NyZWVuIGVudHJ5IHBvaW50cyBmcm9tIFdlYlZpZXcgdG8gV2ViV2lkZ2V0IHNpbmNlIHRoZXkg
YXJlCisgICAgICAgIGp1c3QgYWJvdXQgd2lkZ2V0IGdlb21ldHJ5LgorCisgICAgICAgIEV4aXQg
ZnVsbHNjcmVlbiBtb2RlIGlmIHRoZSBkb2N1bWVudCBjb250YWluaW5nIHRoZSBmdWxsc2NyZWVu
IGVsZW1lbnQKKyAgICAgICAgZGlzYXBwZWFycy4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3
Lmg6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKiBwdWJsaWMv
V2ViV2lkZ2V0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6d2lsbEVudGVyRnVsbFNj
cmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6ZGlkRW50ZXJGdWxsU2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojp3aWxsRXhpdEZ1bGxTY3JlZW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXaWRnZXQ6OmRpZEV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViV2lkZ2V0Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldENsaWVudDo6
ZW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50OjpleGl0
RnVsbFNjcmVlbik6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKToK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9k
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuRm9y
Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnN1cHBvcnRzRnVsbFNj
cmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjplbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1w
bDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
ZXRhY2hlZEZyb21QYXJlbnQzKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lsbEVudGVyRnVs
bFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRFbnRlckZ1bGxTY3Jl
ZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lsbEV4aXRGdWxsU2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZEV4aXRGdWxsU2NyZWVuKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndpbGxEZXN0cm95RG9jdW1lbnRGb3JGcmFtZSk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMTAtMjAgIEhhbyBaaGVuZyAg
PHpoZW5naGFvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlZHVjZSBkZXBl
bmRlbmNpZXMgb2YgSW1hZ2VEaWZmIHRvIGNvbXBpbGUgaXQgZm9yIEFuZHJvaWQuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCShyZXZpc2lvbiA5Nzk0MykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtMzkwLDEwICszOTAsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzSW5pdGlhbFN0YXRlKSB7IH0KIAogCi0gICAgLy8gRnVsbHNjcmVlbiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi0gICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKCkgPSAwOwotCiAgICAgLy8gVGVz
dGluZyBmdW5jdGlvbmFsaXR5IGZvciBMYXlvdXRUZXN0Q29udHJvbGxlciAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiAgICAgLy8gU2ltdWxhdGVzIGEgY29tcG9zaXRvciBsb3N0IGNvbnRleHQu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CShyZXZpc2lvbiA5Nzk0MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZp
ZXdDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDExICsyMTIsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIHJ1bk1vZGFsQmVmb3JlVW5sb2FkRGlhbG9nKAogICAgICAgICBXZWJG
cmFtZSosIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
dmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgV2ViTm9kZSYpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoY29uc3QgV2ViTm9kZSYpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZXhpdEZ1bGxzY3JlZW4oKSB7IH0KIAogICAgIC8vIFVJIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAkocmV2aXNpb24gOTc5NDMp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgIldlYlRleHRJbnB1dFR5cGUuaCIKICNp
bmNsdWRlICJXZWJUZXh0RGlyZWN0aW9uLmgiCiAKKyNkZWZpbmUgV0VCS0lUX0hBU19ORVdfRlVM
TFNDUkVFTl9BUEkgMQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSW5wdXRFdmVu
dDsKQEAgLTY3LDYgKzY5LDE0IEBAIHB1YmxpYzoKICAgICAvLyB3aWxsU3RhcnRMaXZlUmVzaXpl
LgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIHsgfQogCisgICAgLy8gQ2Fs
bGVkIHRvIG5vdGlmeSB0aGUgV2ViV2lkZ2V0IG9mIGVudGVyaW5nL2V4aXRpbmcgZnVsbHNjcmVl
biBtb2RlLiAgVGhlCisgICAgLy8gcmVzaXplIG1ldGhvZCBtYXkgYmUgY2FsbGVkIGJldHdlZW4g
d2lsbHtFbnRlcixFeGl0fUZ1bGxTY3JlZW4gYW5kCisgICAgLy8gZGlke0VudGVyLEV4aXR9RnVs
bFNjcmVlbi4KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEVudGVyRnVsbFNjcmVlbigpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxTY3JlZW4oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbEV4aXRGdWxsU2NyZWVuKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEV4aXRGdWxsU2Ny
ZWVuKCkgeyB9CisKICAgICAvLyBDYWxsZWQgdG8gdXBkYXRlIGltcGVyYXRpdmUgYW5pbWF0aW9u
IHN0YXRlLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlCiAgICAgLy8gcGFpbnQsIGFsdGhv
dWdoIHRoZSBjbGllbnQgY2FuIHJhdGUtbGltaXQgdGhlc2UgY2FsbHMuIFdoZW4KICAgICAvLyBm
cmFtZUJlZ2luVGltZSBpcyAwLjAsIHRoZSBXZWJXaWRnZXQgd2lsbCBkZXRlcm1pbmUgdGhlIGZy
YW1lIGJlZ2luIHRpbWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldp
ZGdldENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYldpZGdldENsaWVudC5oCShyZXZpc2lvbiA5Nzk0MykKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4
NCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gY2xvc2VkLgogICAgIHZpcnR1YWwgdm9pZCBydW5Nb2Rh
bCgpIHsgfQogCisgICAgLy8gQ2FsbGVkIHRvIGVudGVyL2V4aXQgZnVsbHNjcmVlbiBtb2RlLiAg
SWYgZW50ZXJGdWxsU2NyZWVuIHJldHVybnMgdHJ1ZSwKKyAgICAvLyB0aGVuIFdlYldpZGdldDo6
e3dpbGwsRGlkfUVudGVyRnVsbFNjcmVlbiBzaG91bGQgYm91bmQgcmVzaXppbmcgdGhlCisgICAg
Ly8gV2ViV2lkZ2V0IGludG8gZnVsbHNjcmVlbiBtb2RlLiAgU2ltaWxhcmx5LCB3aGVuIGV4aXRG
dWxsU2NyZWVuIGlzCisgICAgLy8gY2FsbGVkLCBXZWJXaWRnZXQ6Ont3aWxsLERpZH1FeGl0RnVs
bFNjcmVlbiBzaG91bGQgYm91bmQgcmVzaXppbmcgdGhlCisgICAgLy8gV2ViV2lkZ2V0IG91dCBv
ZiBmdWxsc2NyZWVuIG1vZGUuCisgICAgdmlydHVhbCBib29sIGVudGVyRnVsbFNjcmVlbigpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuKCkgeyB9CisK
ICAgICAvLyBDYWxsZWQgdG8gZ2V0L3NldCB0aGUgcG9zaXRpb24gb2YgdGhlIHdpZGdldCBpbiBz
Y3JlZW4gY29vcmRpbmF0ZXMuCiAgICAgdmlydHVhbCBXZWJSZWN0IHdpbmRvd1JlY3QoKSB7IHJl
dHVybiBXZWJSZWN0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0V2luZG93UmVjdChjb25zdCBX
ZWJSZWN0JikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gOTc5NDMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODkxLDQ4ICs4
OTEsMzUgQEAgQ2hyb21lQ2xpZW50OjpDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBDaAogfQogI2Vu
ZGlmCiAKLWJvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShj
b25zdCBXZWJDb3JlOjpOb2RlKiBub2RlKQorYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzdXBwb3J0
c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG1fd2ViVmll
dy0+Y2xpZW50KCkgJiYgbm9kZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OnZpZGVv
VGFnKSkKLSAgICAgICAgcmV0dXJuIG1fd2ViVmlldy0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNj
cmVlbigpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpl
bnRlckZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqIG5vZGUpCit2b2lkIENocm9tZUNs
aWVudEltcGw6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAo
bV93ZWJWaWV3LT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+ZW50ZXJG
dWxsc2NyZWVuRm9yTm9kZShXZWJOb2RlKG5vZGUpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpleGl0RnVsbHNjcmVlbkZvck5vZGUoV2Vi
Q29yZTo6Tm9kZSogbm9kZSkKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZXhpdEZ1bGxzY3JlZW5G
b3JOb2RlKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG1fd2ViVmlldy0+Y2xpZW50KCkpCi0gICAg
ICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmV4aXRGdWxsc2NyZWVuRm9yTm9kZShXZWJOb2RlKG5v
ZGUpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKLWJvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxl
bWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50LCBib29sIHdpdGhLZXlib2FyZCkK
K2Jvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChjb25z
dCBFbGVtZW50KiBlbGVtZW50LCBib29sIHdpdGhLZXlib2FyZCkKIHsKLSAgICByZXR1cm4gbV93
ZWJWaWV3LT5wYWdlKCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQordm9pZCBDaHJvbWVDbGllbnRJbXBs
OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgLy8g
RklYTUU6IE1ha2UgdGhpcyBjb2RlIHN1cHBvcnQgYXN5bmNocm9ub3VzIGVtYmVkZGVyIGltcGxl
bWVudGF0aW9ucyBvZgotICAgIC8vIGVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQoKSBieSByZXN0
cnVjdHVyaW5nIHRoaXMgY29kZSB0byB3YWl0IGZvciBhbgotICAgIC8vIEFDSy4KLSAgICAvLyBG
SVhNRTogV2UgbWF5IG5lZWQgdG8gY2FsbCB0aGVzZSBzb21lcGxhY2UgZWxzZSB3aGVuIHdpbmRv
dyByZXNpemVzLgotICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdFdpbGxFbnRlckZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwotICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmVudGVy
RnVsbHNjcmVlbigpOwotICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERpZEVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgbV93ZWJWaWV3LT5lbnRlckZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwogfQogCi12b2lkIENocm9tZUNsaWVudEltcGw6OmV4aXRG
dWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQordm9pZCBDaHJv
bWVDbGllbnRJbXBsOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkK
IHsKLSAgICAvLyBGSVhNRTogV2UgbWF5IG5lZWQgdG8gY2FsbCB0aGVzZSBzb21lcGxhY2UgZWxz
ZSB3aGVuIHdpbmRvdyByZXNpemVzLgotICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdFdp
bGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgbV93ZWJWaWV3LT5jbGll
bnQoKS0+ZXhpdEZ1bGxzY3JlZW4oKTsKLSAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRE
aWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgbV93ZWJWaWV3LT5leGl0
RnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50SW1w
bDo6ZnVsbFNjcmVlblJlbmRlcmVyQ2hhbmdlZChSZW5kZXJCb3gqKQpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShy
ZXZpc2lvbiA5Nzk0MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Niw2ICsyOTYsOCBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGV0YWNoZWRGcm9tCiAgICAgLy8gb3IgY3Jhc2hlcy4KICAg
ICBtX3dlYkZyYW1lLT5mcmFtZSgpLT5zY3JpcHQoKS0+cHJveHkoKS0+Y2xlYXJGb3JDbG9zZSgp
OwogCisgICAgbV93ZWJGcmFtZS0+dmlld0ltcGwoKS0+d2lsbERldGFjaERvY3VtZW50KG1fd2Vi
RnJhbWUpOworCiAgICAgLy8gQWxlcnQgdGhlIGNsaWVudCB0aGF0IHRoZSBmcmFtZSBpcyBiZWlu
ZyBkZXRhY2hlZC4gVGhpcyBpcyB0aGUgbGFzdAogICAgIC8vIGNoYW5jZSB3ZSBoYXZlIHRvIGNv
bW11bmljYXRlIHdpdGggdGhlIGNsaWVudC4KICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkp
CkBAIC0xMzgzLDYgKzEzODUsOCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6dHJhbnNp
dGlvblRvCiAvLyB3aWxsIG9jY3VyLgogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OnRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogeworICAgIG1fd2ViRnJhbWUtPnZpZXdJbXBs
KCktPndpbGxEZXRhY2hEb2N1bWVudChtX3dlYkZyYW1lKTsKKwogICAgIG1ha2VEb2N1bWVudFZp
ZXcoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAkocmV2aXNpb24gOTc5NDMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDAsNiArMTA0MCw0MCBAQCB2b2lkIFdl
YlZpZXdJbXBsOjp3aWxsRW5kTGl2ZVJlc2l6ZSgpCiAgICAgICAgIHBsdWdpbkNvbnRhaW5lci0+
d2lsbEVuZExpdmVSZXNpemUoKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6d2lsbEVudGVyRnVs
bFNjcmVlbigpCit7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGlmIChtX2Z1bGxT
Y3JlZW5FbGVtZW50KQorICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53
ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50Lmdl
dCgpKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlZpZXdJbXBsOjpkaWRFbnRlckZ1bGxTY3JlZW4o
KQoreworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBpZiAobV9mdWxsU2NyZWVuRWxl
bWVudCkKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlk
RW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKKyNl
bmRpZgorfQorCit2b2lkIFdlYlZpZXdJbXBsOjp3aWxsRXhpdEZ1bGxTY3JlZW4oKQoreworI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBpZiAobV9mdWxsU2NyZWVuRWxlbWVudCkKKyAg
ICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEV4aXRGdWxs
U2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKKyNlbmRpZgorfQor
Cit2b2lkIFdlYlZpZXdJbXBsOjpkaWRFeGl0RnVsbFNjcmVlbigpCit7CisjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQorICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50KSB7CisgICAgICAgIG1f
ZnVsbFNjcmVlbkVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKKyAgICAgICAgbV9mdWxsU2NyZWVu
RWxlbWVudC5jbGVhcigpOworICAgIH0KKyNlbmRpZgorfQorCiB2b2lkIFdlYlZpZXdJbXBsOjph
bmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKIHsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUpCkBAIC0xMTgyLDYgKzEyMTYsMjMgQEAgdm9pZCBXZWJWaWV3SW1wbDo6bG9z
ZUNvbXBvc2l0b3JDb250ZXh0KAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmVudGVy
RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBp
ZiAobV9mdWxsU2NyZWVuRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY2xp
ZW50ICYmIG1fY2xpZW50LT5lbnRlckZ1bGxTY3JlZW4oKSkKKyAgICAgICAgbV9mdWxsU2NyZWVu
RWxlbWVudCA9IGVsZW1lbnQ7Cit9CisKK3ZvaWQgV2ViVmlld0ltcGw6OmV4aXRGdWxsU2NyZWVu
Rm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVt
ZW50ID09IG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworCisgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudC0+ZXhpdEZ1bGxTY3JlZW4oKTsKK30KKwogY29uc3QgV2ViSW5wdXRF
dmVudCogV2ViVmlld0ltcGw6Om1fY3VycmVudElucHV0RXZlbnQgPSAwOwogCiBib29sIFdlYlZp
ZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQp
CkBAIC0yMzgzLDYgKzI0MzQsMTcgQEAgdm9pZCBXZWJWaWV3OjpyZW1vdmVBbGxVc2VyQ29udGVu
dCgpCiAgICAgcGFnZUdyb3VwLT5yZW1vdmVBbGxVc2VyQ29udGVudCgpOwogfQogCit2b2lkIFdl
YlZpZXdJbXBsOjp3aWxsRGV0YWNoRG9jdW1lbnQoV2ViRnJhbWVJbXBsKiBmcmFtZUltcGwpCit7
CisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQgJiYgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZG9j
dW1lbnQoKSA9PSBmcmFtZUltcGwtPmZyYW1lKCktPmRvY3VtZW50KCkpIHsKKyAgICAgICAgLy8g
Q2xlYXIgZWxlbWVudCBoZXJlLCBzbyB0aGF0IHdlIGRvbid0IGF0dGVtcHQgZnVydGhlciBjb21t
dW5pY2F0aW9uCisgICAgICAgIC8vIHdpdGggaXQgd2hlbiB3ZSByZWNlaXZlcyBjYWxscyB0byB7
d2lsbCxkaWR9RXhpdEZ1bGxTY3JlZW4uCisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQuY2xl
YXIoKTsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPmV4aXRG
dWxsU2NyZWVuKCk7CisgICAgfQorfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDb21taXRMb2Fk
KGJvb2wqIGlzTmV3TmF2aWdhdGlvbikKIHsKICAgICBpZiAoaXNOZXdOYXZpZ2F0aW9uKQpAQCAt
MjgyMiwxNiArMjg4NCw0IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlc2V0R2VzdHVyZVJlY29nbml6
ZXIKIH0KICNlbmRpZgogCi12b2lkIFdlYlZpZXdJbXBsOjpleGl0RnVsbHNjcmVlbigpCi17Ci0j
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCk7Ci0gICAgRWxlbWVudCogZnVsbHNjcmVlbkVsZW1l
bnQgPSBkb2N1bWVudC0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCk7Ci0gICAgaWYg
KCFmdWxsc2NyZWVuRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIGRvY3VtZW50LT53ZWJr
aXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGZ1bGxzY3JlZW5FbGVtZW50KTsKLSAgICBk
b2N1bWVudC0+d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGZ1bGxzY3JlZW5FbGVt
ZW50KTsKLSNlbmRpZgotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gOTc5NDMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsNiArMTAyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0TGl2ZVJl
c2l6ZSgpOwogICAgIHZpcnR1YWwgdm9pZCByZXNpemUoY29uc3QgV2ViU2l6ZSYpOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRW50
ZXJGdWxsU2NyZWVuKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEVudGVyRnVsbFNjcmVlbigpOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhpdEZ1bGxTY3JlZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRXhpdEZ1bGxTY3JlZW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUgZnJh
bWVCZWdpblRpbWUpOwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYpOwpAQCAtMjIxLDcgKzIyNSw2IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
YWN0aXZlQmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3IpOwogICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9uKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdENsaWVu
dAogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZSk7CkBAIC0zMDksNiArMzEyLDggQEAgcHVibGljOgogICAgIC8vIEtleWJvYXJkIGV2ZW50IHRv
IHRoZSBSaWdodCBNb3VzZSBidXR0b24gZG93biBldmVudC4KICAgICBib29sIHNlbmRDb250ZXh0
TWVudUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKIAorICAgIHZvaWQgd2lsbERldGFj
aERvY3VtZW50KFdlYkZyYW1lSW1wbCopOworCiAgICAgLy8gTm90aWZpZXMgdGhlIFdlYlZpZXcg
dGhhdCBhIGxvYWQgaGFzIGJlZW4gY29tbWl0dGVkLiBpc05ld05hdmlnYXRpb24KICAgICAvLyB3
aWxsIGJlIHRydWUgaWYgYSBuZXcgc2Vzc2lvbiBoaXN0b3J5IGl0ZW0gc2hvdWxkIGJlIGNyZWF0
ZWQgZm9yIHRoYXQKICAgICAvLyBsb2FkLgpAQCAtNDE2LDYgKzQyMSw5IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcyk7CiAKKyAgICB2b2lk
IGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopOworICAgIHZvaWQg
ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqKTsKKwogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgV2ViVmlldzsgIC8vIFNvIFdlYlZpZXc6OkNyZWF0ZSBjYW4gY2Fs
bCBvdXIgY29uc3RydWN0b3IKICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdlYlZp
ZXdJbXBsPjsKQEAgLTU3NSw2ICs1ODMsOSBAQCBwcml2YXRlOgogICAgIC8vIElmIHNldCwgdGhl
IChwbHVnaW4pIG5vZGUgd2hpY2ggaGFzIG1vdXNlIGNhcHR1cmUuCiAgICAgUmVmUHRyPFdlYkNv
cmU6Ok5vZGU+IG1fbW91c2VDYXB0dXJlTm9kZTsKIAorICAgIC8vIElmIHNldCwgdGhlIFdlYlZp
ZXcgaXMgYmVpbmcgZGlzcGxheWVkIGZ1bGxzY3JlZW4gZm9yIHRoaXMgZWxlbWVudC4KKyAgICBS
ZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gbV9mdWxsU2NyZWVuRWxlbWVudDsKKwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fcm9vdExheWVy
U2Nyb2xsRGFtYWdlOwogICAgIE93blB0cjxXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhv
c3Q+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111918</attachid>
            <date>2011-10-21 00:11:59 -0700</date>
            <delta_ts>2011-10-24 09:28:37 -0700</delta_ts>
            <desc>v1.1 patch</desc>
            <filename>wk_1.txt</filename>
            <type>text/plain</type>
            <size>14795</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODAwNikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTEtMTAtMjAgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEltcHJvdmUgZnVsbHNjcmVlbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNDc3CisKKyAgICAgICAgTW92ZSBmdWxs
c2NyZWVuIGVudHJ5IHBvaW50cyBmcm9tIFdlYlZpZXcgdG8gV2ViV2lkZ2V0IHNpbmNlIHRoZXkg
YXJlCisgICAgICAgIGp1c3QgYWJvdXQgd2lkZ2V0IGdlb21ldHJ5LgorCisgICAgICAgIEV4aXQg
ZnVsbHNjcmVlbiBtb2RlIGlmIHRoZSBkb2N1bWVudCBjb250YWluaW5nIHRoZSBmdWxsc2NyZWVu
IGVsZW1lbnQKKyAgICAgICAgZGlzYXBwZWFycy4KKworICAgICAgICBEZWxheSB3ZWJraXRmdWxs
c2NyZWVuY2hhbmdlIGV2ZW50IHVudGlsIHdlIGtub3cgdGhhdCB3ZSBoYXZlIGVudGVyZWQKKyAg
ICAgICAgZnVsbHNjcmVlbiBtb2RlLiAgVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgZXhwYW5kaW5n
IHRoZSBXZWJLaXQgQVBJcyB0bworICAgICAgICBkaWZmZXJlbnRpYXRlIHdpbGx7RW50ZXIsRXhp
dH0gZnJvbSBkaWR7RW50ZXIsRXhpdH0gc3RhdGUgY2hhbmdlcy4KKworICAgICAgICBXZWJWaWV3
SW1wbCBpcyBmb3JjZWQgdG8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcmVxdWVzdGVkIGZ1bGxz
Y3JlZW4KKyAgICAgICAgZWxlbWVudCB3aGlsZSB3ZSBhcmUgaW4gZnVsbHNjcmVlbiBtb2RlIGFu
ZCBlbnRlcmluZy9leGl0aW5nIHRoYXQgbW9kZS4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3
Lmg6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKiBwdWJsaWMv
V2ViV2lkZ2V0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6d2lsbEVudGVyRnVsbFNj
cmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6ZGlkRW50ZXJGdWxsU2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojp3aWxsRXhpdEZ1bGxTY3JlZW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXaWRnZXQ6OmRpZEV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViV2lkZ2V0Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldENsaWVudDo6
ZW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50OjpleGl0
RnVsbFNjcmVlbik6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKToK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9k
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuRm9y
Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnN1cHBvcnRzRnVsbFNj
cmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjplbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1w
bDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
ZXRhY2hlZEZyb21QYXJlbnQzKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lsbEVudGVyRnVs
bFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRFbnRlckZ1bGxTY3Jl
ZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lsbEV4aXRGdWxsU2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZEV4aXRGdWxsU2NyZWVuKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndpbGxEZXN0cm95RG9jdW1lbnRGb3JGcmFtZSk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMTAtMjAgIEhhbyBaaGVuZyAg
PHpoZW5naGFvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlZHVjZSBkZXBl
bmRlbmNpZXMgb2YgSW1hZ2VEaWZmIHRvIGNvbXBpbGUgaXQgZm9yIEFuZHJvaWQuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCShyZXZpc2lvbiA5Nzk0MykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtMzkwLDEwICszOTAsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzSW5pdGlhbFN0YXRlKSB7IH0KIAogCi0gICAgLy8gRnVsbHNjcmVlbiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi0gICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuKCkgPSAwOwotCiAgICAgLy8gVGVz
dGluZyBmdW5jdGlvbmFsaXR5IGZvciBMYXlvdXRUZXN0Q29udHJvbGxlciAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiAgICAgLy8gU2ltdWxhdGVzIGEgY29tcG9zaXRvciBsb3N0IGNvbnRleHQu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CShyZXZpc2lvbiA5Nzk0MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZp
ZXdDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDExICsyMTIsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIHJ1bk1vZGFsQmVmb3JlVW5sb2FkRGlhbG9nKAogICAgICAgICBXZWJG
cmFtZSosIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
dmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgV2ViTm9kZSYpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoY29uc3QgV2ViTm9kZSYpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZXhpdEZ1bGxzY3JlZW4oKSB7IH0KIAogICAgIC8vIFVJIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAkocmV2aXNpb24gOTc5NDMp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgIldlYlRleHRJbnB1dFR5cGUuaCIKICNp
bmNsdWRlICJXZWJUZXh0RGlyZWN0aW9uLmgiCiAKKyNkZWZpbmUgV0VCS0lUX0hBU19ORVdfRlVM
TFNDUkVFTl9BUEkgMQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSW5wdXRFdmVu
dDsKQEAgLTY3LDYgKzY5LDE0IEBAIHB1YmxpYzoKICAgICAvLyB3aWxsU3RhcnRMaXZlUmVzaXpl
LgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIHsgfQogCisgICAgLy8gQ2Fs
bGVkIHRvIG5vdGlmeSB0aGUgV2ViV2lkZ2V0IG9mIGVudGVyaW5nL2V4aXRpbmcgZnVsbHNjcmVl
biBtb2RlLiAgVGhlCisgICAgLy8gcmVzaXplIG1ldGhvZCBtYXkgYmUgY2FsbGVkIGJldHdlZW4g
d2lsbHtFbnRlcixFeGl0fUZ1bGxTY3JlZW4gYW5kCisgICAgLy8gZGlke0VudGVyLEV4aXR9RnVs
bFNjcmVlbi4KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEVudGVyRnVsbFNjcmVlbigpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxTY3JlZW4oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbEV4aXRGdWxsU2NyZWVuKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEV4aXRGdWxsU2Ny
ZWVuKCkgeyB9CisKICAgICAvLyBDYWxsZWQgdG8gdXBkYXRlIGltcGVyYXRpdmUgYW5pbWF0aW9u
IHN0YXRlLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlCiAgICAgLy8gcGFpbnQsIGFsdGhv
dWdoIHRoZSBjbGllbnQgY2FuIHJhdGUtbGltaXQgdGhlc2UgY2FsbHMuIFdoZW4KICAgICAvLyBm
cmFtZUJlZ2luVGltZSBpcyAwLjAsIHRoZSBXZWJXaWRnZXQgd2lsbCBkZXRlcm1pbmUgdGhlIGZy
YW1lIGJlZ2luIHRpbWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldp
ZGdldENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYldpZGdldENsaWVudC5oCShyZXZpc2lvbiA5Nzk0MykKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4
NCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gY2xvc2VkLgogICAgIHZpcnR1YWwgdm9pZCBydW5Nb2Rh
bCgpIHsgfQogCisgICAgLy8gQ2FsbGVkIHRvIGVudGVyL2V4aXQgZnVsbHNjcmVlbiBtb2RlLiAg
SWYgZW50ZXJGdWxsU2NyZWVuIHJldHVybnMgdHJ1ZSwKKyAgICAvLyB0aGVuIFdlYldpZGdldDo6
e3dpbGwsRGlkfUVudGVyRnVsbFNjcmVlbiBzaG91bGQgYm91bmQgcmVzaXppbmcgdGhlCisgICAg
Ly8gV2ViV2lkZ2V0IGludG8gZnVsbHNjcmVlbiBtb2RlLiAgU2ltaWxhcmx5LCB3aGVuIGV4aXRG
dWxsU2NyZWVuIGlzCisgICAgLy8gY2FsbGVkLCBXZWJXaWRnZXQ6Ont3aWxsLERpZH1FeGl0RnVs
bFNjcmVlbiBzaG91bGQgYm91bmQgcmVzaXppbmcgdGhlCisgICAgLy8gV2ViV2lkZ2V0IG91dCBv
ZiBmdWxsc2NyZWVuIG1vZGUuCisgICAgdmlydHVhbCBib29sIGVudGVyRnVsbFNjcmVlbigpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuKCkgeyB9CisK
ICAgICAvLyBDYWxsZWQgdG8gZ2V0L3NldCB0aGUgcG9zaXRpb24gb2YgdGhlIHdpZGdldCBpbiBz
Y3JlZW4gY29vcmRpbmF0ZXMuCiAgICAgdmlydHVhbCBXZWJSZWN0IHdpbmRvd1JlY3QoKSB7IHJl
dHVybiBXZWJSZWN0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0V2luZG93UmVjdChjb25zdCBX
ZWJSZWN0JikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gOTc5NDMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODkxLDQ4ICs4
OTEsMzUgQEAgQ2hyb21lQ2xpZW50OjpDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBDaAogfQogI2Vu
ZGlmCiAKLWJvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShj
b25zdCBXZWJDb3JlOjpOb2RlKiBub2RlKQorYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzdXBwb3J0
c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG1fd2ViVmll
dy0+Y2xpZW50KCkgJiYgbm9kZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6OnZpZGVv
VGFnKSkKLSAgICAgICAgcmV0dXJuIG1fd2ViVmlldy0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNj
cmVlbigpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpl
bnRlckZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqIG5vZGUpCit2b2lkIENocm9tZUNs
aWVudEltcGw6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAo
bV93ZWJWaWV3LT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+ZW50ZXJG
dWxsc2NyZWVuRm9yTm9kZShXZWJOb2RlKG5vZGUpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpleGl0RnVsbHNjcmVlbkZvck5vZGUoV2Vi
Q29yZTo6Tm9kZSogbm9kZSkKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZXhpdEZ1bGxzY3JlZW5G
b3JOb2RlKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG1fd2ViVmlldy0+Y2xpZW50KCkpCi0gICAg
ICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmV4aXRGdWxsc2NyZWVuRm9yTm9kZShXZWJOb2RlKG5v
ZGUpKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKLWJvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxl
bWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50LCBib29sIHdpdGhLZXlib2FyZCkK
K2Jvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChjb25z
dCBFbGVtZW50KiBlbGVtZW50LCBib29sIHdpdGhLZXlib2FyZCkKIHsKLSAgICByZXR1cm4gbV93
ZWJWaWV3LT5wYWdlKCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQordm9pZCBDaHJvbWVDbGllbnRJbXBs
OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgLy8g
RklYTUU6IE1ha2UgdGhpcyBjb2RlIHN1cHBvcnQgYXN5bmNocm9ub3VzIGVtYmVkZGVyIGltcGxl
bWVudGF0aW9ucyBvZgotICAgIC8vIGVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQoKSBieSByZXN0
cnVjdHVyaW5nIHRoaXMgY29kZSB0byB3YWl0IGZvciBhbgotICAgIC8vIEFDSy4KLSAgICAvLyBG
SVhNRTogV2UgbWF5IG5lZWQgdG8gY2FsbCB0aGVzZSBzb21lcGxhY2UgZWxzZSB3aGVuIHdpbmRv
dyByZXNpemVzLgotICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdFdpbGxFbnRlckZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwotICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmVudGVy
RnVsbHNjcmVlbigpOwotICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERpZEVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgbV93ZWJWaWV3LT5lbnRlckZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwogfQogCi12b2lkIENocm9tZUNsaWVudEltcGw6OmV4aXRG
dWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQordm9pZCBDaHJv
bWVDbGllbnRJbXBsOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkK
IHsKLSAgICAvLyBGSVhNRTogV2UgbWF5IG5lZWQgdG8gY2FsbCB0aGVzZSBzb21lcGxhY2UgZWxz
ZSB3aGVuIHdpbmRvdyByZXNpemVzLgotICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdFdp
bGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgbV93ZWJWaWV3LT5jbGll
bnQoKS0+ZXhpdEZ1bGxzY3JlZW4oKTsKLSAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRE
aWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgbV93ZWJWaWV3LT5leGl0
RnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50SW1w
bDo6ZnVsbFNjcmVlblJlbmRlcmVyQ2hhbmdlZChSZW5kZXJCb3gqKQpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShy
ZXZpc2lvbiA5Nzk0MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Niw2ICsyOTYsOCBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGV0YWNoZWRGcm9tCiAgICAgLy8gb3IgY3Jhc2hlcy4KICAg
ICBtX3dlYkZyYW1lLT5mcmFtZSgpLT5zY3JpcHQoKS0+cHJveHkoKS0+Y2xlYXJGb3JDbG9zZSgp
OwogCisgICAgbV93ZWJGcmFtZS0+dmlld0ltcGwoKS0+d2lsbERldGFjaERvY3VtZW50KG1fd2Vi
RnJhbWUpOworCiAgICAgLy8gQWxlcnQgdGhlIGNsaWVudCB0aGF0IHRoZSBmcmFtZSBpcyBiZWlu
ZyBkZXRhY2hlZC4gVGhpcyBpcyB0aGUgbGFzdAogICAgIC8vIGNoYW5jZSB3ZSBoYXZlIHRvIGNv
bW11bmljYXRlIHdpdGggdGhlIGNsaWVudC4KICAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkp
CkBAIC0xMzgzLDYgKzEzODUsOCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6dHJhbnNp
dGlvblRvCiAvLyB3aWxsIG9jY3VyLgogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OnRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogeworICAgIG1fd2ViRnJhbWUtPnZpZXdJbXBs
KCktPndpbGxEZXRhY2hEb2N1bWVudChtX3dlYkZyYW1lKTsKKwogICAgIG1ha2VEb2N1bWVudFZp
ZXcoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAkocmV2aXNpb24gOTc5NDMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDAsNiArMTA0MCw0MCBAQCB2b2lkIFdl
YlZpZXdJbXBsOjp3aWxsRW5kTGl2ZVJlc2l6ZSgpCiAgICAgICAgIHBsdWdpbkNvbnRhaW5lci0+
d2lsbEVuZExpdmVSZXNpemUoKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6d2lsbEVudGVyRnVs
bFNjcmVlbigpCit7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGlmIChtX2Z1bGxT
Y3JlZW5FbGVtZW50KQorICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53
ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50Lmdl
dCgpKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlZpZXdJbXBsOjpkaWRFbnRlckZ1bGxTY3JlZW4o
KQoreworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBpZiAobV9mdWxsU2NyZWVuRWxl
bWVudCkKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlk
RW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKKyNl
bmRpZgorfQorCit2b2lkIFdlYlZpZXdJbXBsOjp3aWxsRXhpdEZ1bGxTY3JlZW4oKQoreworI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBpZiAobV9mdWxsU2NyZWVuRWxlbWVudCkKKyAg
ICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEV4aXRGdWxs
U2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKKyNlbmRpZgorfQor
Cit2b2lkIFdlYlZpZXdJbXBsOjpkaWRFeGl0RnVsbFNjcmVlbigpCit7CisjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQorICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50KSB7CisgICAgICAgIG1f
ZnVsbFNjcmVlbkVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKKyAgICAgICAgbV9mdWxsU2NyZWVu
RWxlbWVudC5jbGVhcigpOworICAgIH0KKyNlbmRpZgorfQorCiB2b2lkIFdlYlZpZXdJbXBsOjph
bmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKIHsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUpCkBAIC0xMTgyLDYgKzEyMTYsMjMgQEAgdm9pZCBXZWJWaWV3SW1wbDo6bG9z
ZUNvbXBvc2l0b3JDb250ZXh0KAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmVudGVy
RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBp
ZiAobV9mdWxsU2NyZWVuRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY2xp
ZW50ICYmIG1fY2xpZW50LT5lbnRlckZ1bGxTY3JlZW4oKSkKKyAgICAgICAgbV9mdWxsU2NyZWVu
RWxlbWVudCA9IGVsZW1lbnQ7Cit9CisKK3ZvaWQgV2ViVmlld0ltcGw6OmV4aXRGdWxsU2NyZWVu
Rm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChlbGVt
ZW50ID09IG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworCisgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudC0+ZXhpdEZ1bGxTY3JlZW4oKTsKK30KKwogY29uc3QgV2ViSW5wdXRF
dmVudCogV2ViVmlld0ltcGw6Om1fY3VycmVudElucHV0RXZlbnQgPSAwOwogCiBib29sIFdlYlZp
ZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQp
CkBAIC0yMzgzLDYgKzI0MzQsMTcgQEAgdm9pZCBXZWJWaWV3OjpyZW1vdmVBbGxVc2VyQ29udGVu
dCgpCiAgICAgcGFnZUdyb3VwLT5yZW1vdmVBbGxVc2VyQ29udGVudCgpOwogfQogCit2b2lkIFdl
YlZpZXdJbXBsOjp3aWxsRGV0YWNoRG9jdW1lbnQoV2ViRnJhbWVJbXBsKiBmcmFtZUltcGwpCit7
CisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQgJiYgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZG9j
dW1lbnQoKSA9PSBmcmFtZUltcGwtPmZyYW1lKCktPmRvY3VtZW50KCkpIHsKKyAgICAgICAgLy8g
Q2xlYXIgZWxlbWVudCBoZXJlLCBzbyB0aGF0IHdlIGRvbid0IGF0dGVtcHQgZnVydGhlciBjb21t
dW5pY2F0aW9uCisgICAgICAgIC8vIHdpdGggaXQgd2hlbiB3ZSByZWNlaXZlcyBjYWxscyB0byB7
d2lsbCxkaWR9RXhpdEZ1bGxTY3JlZW4uCisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQuY2xl
YXIoKTsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPmV4aXRG
dWxsU2NyZWVuKCk7CisgICAgfQorfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDb21taXRMb2Fk
KGJvb2wqIGlzTmV3TmF2aWdhdGlvbikKIHsKICAgICBpZiAoaXNOZXdOYXZpZ2F0aW9uKQpAQCAt
MjgyMiwxNiArMjg4NCw0IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlc2V0R2VzdHVyZVJlY29nbml6
ZXIKIH0KICNlbmRpZgogCi12b2lkIFdlYlZpZXdJbXBsOjpleGl0RnVsbHNjcmVlbigpCi17Ci0j
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCk7Ci0gICAgRWxlbWVudCogZnVsbHNjcmVlbkVsZW1l
bnQgPSBkb2N1bWVudC0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCk7Ci0gICAgaWYg
KCFmdWxsc2NyZWVuRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIGRvY3VtZW50LT53ZWJr
aXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGZ1bGxzY3JlZW5FbGVtZW50KTsKLSAgICBk
b2N1bWVudC0+d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KGZ1bGxzY3JlZW5FbGVt
ZW50KTsKLSNlbmRpZgotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gOTc5NDMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsNiArMTAyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0TGl2ZVJl
c2l6ZSgpOwogICAgIHZpcnR1YWwgdm9pZCByZXNpemUoY29uc3QgV2ViU2l6ZSYpOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRW50
ZXJGdWxsU2NyZWVuKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEVudGVyRnVsbFNjcmVlbigpOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhpdEZ1bGxTY3JlZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRXhpdEZ1bGxTY3JlZW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUgZnJh
bWVCZWdpblRpbWUpOwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYpOwpAQCAtMjIxLDcgKzIyNSw2IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
YWN0aXZlQmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3IpOwogICAgIHZpcnR1YWwgdm9pZCBw
ZXJmb3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9uKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdENsaWVu
dAogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZSk7CkBAIC0zMDksNiArMzEyLDggQEAgcHVibGljOgogICAgIC8vIEtleWJvYXJkIGV2ZW50IHRv
IHRoZSBSaWdodCBNb3VzZSBidXR0b24gZG93biBldmVudC4KICAgICBib29sIHNlbmRDb250ZXh0
TWVudUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKIAorICAgIHZvaWQgd2lsbERldGFj
aERvY3VtZW50KFdlYkZyYW1lSW1wbCopOworCiAgICAgLy8gTm90aWZpZXMgdGhlIFdlYlZpZXcg
dGhhdCBhIGxvYWQgaGFzIGJlZW4gY29tbWl0dGVkLiBpc05ld05hdmlnYXRpb24KICAgICAvLyB3
aWxsIGJlIHRydWUgaWYgYSBuZXcgc2Vzc2lvbiBoaXN0b3J5IGl0ZW0gc2hvdWxkIGJlIGNyZWF0
ZWQgZm9yIHRoYXQKICAgICAvLyBsb2FkLgpAQCAtNDE2LDYgKzQyMSw5IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgbG9zZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcyk7CiAKKyAgICB2b2lk
IGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopOworICAgIHZvaWQg
ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqKTsKKwogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgV2ViVmlldzsgIC8vIFNvIFdlYlZpZXc6OkNyZWF0ZSBjYW4gY2Fs
bCBvdXIgY29uc3RydWN0b3IKICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdlYlZp
ZXdJbXBsPjsKQEAgLTU3NSw2ICs1ODMsOSBAQCBwcml2YXRlOgogICAgIC8vIElmIHNldCwgdGhl
IChwbHVnaW4pIG5vZGUgd2hpY2ggaGFzIG1vdXNlIGNhcHR1cmUuCiAgICAgUmVmUHRyPFdlYkNv
cmU6Ok5vZGU+IG1fbW91c2VDYXB0dXJlTm9kZTsKIAorICAgIC8vIElmIHNldCwgdGhlIFdlYlZp
ZXcgaXMgYmVpbmcgZGlzcGxheWVkIGZ1bGxzY3JlZW4gZm9yIHRoaXMgZWxlbWVudC4KKyAgICBS
ZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gbV9mdWxsU2NyZWVuRWxlbWVudDsKKwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fcm9vdExheWVy
U2Nyb2xsRGFtYWdlOwogICAgIE93blB0cjxXZWJDb3JlOjpOb25Db21wb3NpdGVkQ29udGVudEhv
c3Q+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Owo=
</data>
<flag name="commit-queue"
          id="109864"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112197</attachid>
            <date>2011-10-24 09:28:37 -0700</date>
            <delta_ts>2011-10-24 10:35:50 -0700</delta_ts>
            <desc>v1.2 patch (fix style-bot nits)</desc>
            <filename>wk_2.txt</filename>
            <type>text/plain</type>
            <size>16608</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODI0NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTEtMTAtMjQgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEltcHJvdmUgZnVsbHNjcmVlbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNDc3CisKKyAgICAgICAgTW92ZSBmdWxs
c2NyZWVuIGVudHJ5IHBvaW50cyBmcm9tIFdlYlZpZXcgdG8gV2ViV2lkZ2V0IHNpbmNlIHRoZXkg
YXJlCisgICAgICAgIGp1c3QgYWJvdXQgd2lkZ2V0IGdlb21ldHJ5LgorCisgICAgICAgIEV4aXQg
ZnVsbHNjcmVlbiBtb2RlIGlmIHRoZSBkb2N1bWVudCBjb250YWluaW5nIHRoZSBmdWxsc2NyZWVu
IGVsZW1lbnQKKyAgICAgICAgZGlzYXBwZWFycy4KKworICAgICAgICBEZWxheSB3ZWJraXRmdWxs
c2NyZWVuY2hhbmdlIGV2ZW50IHVudGlsIHdlIGtub3cgdGhhdCB3ZSBoYXZlIGVudGVyZWQKKyAg
ICAgICAgZnVsbHNjcmVlbiBtb2RlLiAgVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgZXhwYW5kaW5n
IHRoZSBXZWJLaXQgQVBJcyB0bworICAgICAgICBkaWZmZXJlbnRpYXRlIHdpbGx7RW50ZXIsRXhp
dH0gZnJvbSBkaWR7RW50ZXIsRXhpdH0gc3RhdGUgY2hhbmdlcy4KKworICAgICAgICBXZWJWaWV3
SW1wbCBpcyBmb3JjZWQgdG8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcmVxdWVzdGVkIGZ1bGxz
Y3JlZW4KKyAgICAgICAgZWxlbWVudCB3aGlsZSB3ZSBhcmUgaW4gZnVsbHNjcmVlbiBtb2RlIGFu
ZCBlbnRlcmluZy9leGl0aW5nIHRoYXQgbW9kZS4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3
Lmg6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKiBwdWJsaWMv
V2ViV2lkZ2V0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6d2lsbEVudGVyRnVsbFNj
cmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6ZGlkRW50ZXJGdWxsU2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojp3aWxsRXhpdEZ1bGxTY3JlZW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXaWRnZXQ6OmRpZEV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViV2lkZ2V0Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldENsaWVudDo6
ZW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50OjpleGl0
RnVsbFNjcmVlbik6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKToK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9k
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuRm9y
Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnN1cHBvcnRzRnVsbFNj
cmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjplbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1w
bDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
ZXRhY2hlZEZyb21QYXJlbnQzKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lsbEVudGVyRnVs
bFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRFbnRlckZ1bGxTY3Jl
ZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lsbEV4aXRGdWxsU2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZEV4aXRGdWxsU2NyZWVuKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndpbGxEZXN0cm95RG9jdW1lbnRGb3JGcmFtZSk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMTAtMjQgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWxs
b3cgZGVidWdnaW5nIGRlZGljYXRlZCB3b3JrZXIgaW5pdGlhbGl6YXRpb24KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgJKHJldmlzaW9uIDk4MjQ3KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTAsMTAgKzM5MCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNJbml0aWFsU3RhdGUpIHsgfQogCiAKLSAgICAvLyBGdWxsc2NyZWVuIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LSAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKSA9IDA7Ci0KICAgICAvLyBUZXN0aW5n
IGZ1bmN0aW9uYWxpdHkgZm9yIExheW91dFRlc3RDb250cm9sbGVyIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKICAgICAvLyBTaW11bGF0ZXMgYSBjb21wb3NpdG9yIGxvc3QgY29udGV4dC4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgJKHJl
dmlzaW9uIDk4MjQ3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0Ns
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsMTEgKzIxMiw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgcnVuTW9kYWxCZWZvcmVVbmxvYWREaWFsb2coCiAgICAgICAgIFdlYkZyYW1l
KiwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBXZWJOb2RlJikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBXZWJOb2RlJikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBl
eGl0RnVsbHNjcmVlbigpIHsgfQogCiAgICAgLy8gVUkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCShyZXZpc2lvbiA5ODI0NykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSAiV2ViVGV4dElucHV0VHlwZS5oIgogI2luY2x1
ZGUgIldlYlRleHREaXJlY3Rpb24uaCIKIAorI2RlZmluZSBXRUJLSVRfSEFTX05FV19GVUxMU0NS
RUVOX0FQSSAxCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJbnB1dEV2ZW50OwpA
QCAtNjcsMTkgKzY5LDI3IEBAIHB1YmxpYzoKICAgICAvLyB3aWxsU3RhcnRMaXZlUmVzaXplLgog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIHsgfQogCisgICAgLy8gQ2FsbGVk
IHRvIG5vdGlmeSB0aGUgV2ViV2lkZ2V0IG9mIGVudGVyaW5nL2V4aXRpbmcgZnVsbHNjcmVlbiBt
b2RlLiBUaGUKKyAgICAvLyByZXNpemUgbWV0aG9kIG1heSBiZSBjYWxsZWQgYmV0d2VlbiB3aWxs
e0VudGVyLEV4aXR9RnVsbFNjcmVlbiBhbmQKKyAgICAvLyBkaWR7RW50ZXIsRXhpdH1GdWxsU2Ny
ZWVuLgorICAgIHZpcnR1YWwgdm9pZCB3aWxsRW50ZXJGdWxsU2NyZWVuKCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZEVudGVyRnVsbFNjcmVlbigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxs
RXhpdEZ1bGxTY3JlZW4oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRXhpdEZ1bGxTY3JlZW4o
KSB7IH0KKwogICAgIC8vIENhbGxlZCB0byB1cGRhdGUgaW1wZXJhdGl2ZSBhbmltYXRpb24gc3Rh
dGUuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUKICAgICAvLyBwYWludCwgYWx0aG91Z2gg
dGhlIGNsaWVudCBjYW4gcmF0ZS1saW1pdCB0aGVzZSBjYWxscy4gV2hlbgogICAgIC8vIGZyYW1l
QmVnaW5UaW1lIGlzIDAuMCwgdGhlIFdlYldpZGdldCB3aWxsIGRldGVybWluZSB0aGUgZnJhbWUg
YmVnaW4gdGltZQogICAgIC8vIGl0c2VsZi4KICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3Vi
bGUgZnJhbWVCZWdpblRpbWUpIHsgfQogCi0gICAgLy8gQ2FsbGVkIHRvIGxheW91dCB0aGUgV2Vi
V2lkZ2V0LiAgVGhpcyBNVVNUIGJlIGNhbGxlZCBiZWZvcmUgUGFpbnQsCisgICAgLy8gQ2FsbGVk
IHRvIGxheW91dCB0aGUgV2ViV2lkZ2V0LiBUaGlzIE1VU1QgYmUgY2FsbGVkIGJlZm9yZSBQYWlu
dCwKICAgICAvLyBhbmQgaXQgbWF5IHJlc3VsdCBpbiBjYWxscyB0byBXZWJXaWRnZXRDbGllbnQ6
OmRpZEludmFsaWRhdGVSZWN0LgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSB7IH0KIAogICAg
IC8vIENhbGxlZCB0byBwYWludCB0aGUgcmVjdGFuZ3VsYXIgcmVnaW9uIHdpdGhpbiB0aGUgV2Vi
V2lkZ2V0CiAgICAgLy8gb250byB0aGUgc3BlY2lmaWVkIGNhbnZhcyBhdCAodmlld1BvcnQueCx2
aWV3UG9ydC55KS4gWW91IE1VU1QgY2FsbAotICAgIC8vIExheW91dCBiZWZvcmUgY2FsbGluZyB0
aGlzIG1ldGhvZC4gIEl0IGlzIG9rYXkgdG8gY2FsbCBwYWludAorICAgIC8vIExheW91dCBiZWZv
cmUgY2FsbGluZyB0aGlzIG1ldGhvZC4gSXQgaXMgb2theSB0byBjYWxsIHBhaW50CiAgICAgLy8g
bXVsdGlwbGUgdGltZXMgb25jZSBsYXlvdXQgaGFzIGJlZW4gY2FsbGVkLCBhc3N1bWluZyBubyBv
dGhlcgogICAgIC8vIGNoYW5nZXMgYXJlIG1hZGUgdG8gdGhlIFdlYldpZGdldCAoZS5nLiwgb25j
ZSBldmVudHMgYXJlCiAgICAgLy8gcHJvY2Vzc2VkLCBpdCBzaG91bGQgYmUgYXNzdW1lZCB0aGF0
IGFub3RoZXIgY2FsbCB0byBsYXlvdXQgaXMKQEAgLTg3LDggKzk3LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0JiB2aWV3UG9ydCkg
eyB9CiAKICAgICAvLyBJbiBub24tdGhyZWFkZWQgY29tcG9zaXRpbmcgbW9kZSwgdHJpZ2dlcnMg
Y29tcG9zaXRpbmcgb2YgdGhlIGN1cnJlbnQKLSAgICAvLyBsYXllcnMgb250byB0aGUgc2NyZWVu
LiBZb3UgTVVTVCBjYWxsIExheW91dCBiZWZvcmUgY2FsbGluZyB0aGlzIG1ldGhvZCwgZm9yIHRo
ZSBzYW1lCi0gICAgLy8gcmVhc29ucyBkZXNjcmliZWQgaW4gdGhlIHBhaW50IG1ldGhvZCBhYm92
ZQorICAgIC8vIGxheWVycyBvbnRvIHRoZSBzY3JlZW4uIFlvdSBNVVNUIGNhbGwgTGF5b3V0IGJl
Zm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLAorICAgIC8vIGZvciB0aGUgc2FtZSByZWFzb25zIGRl
c2NyaWJlZCBpbiB0aGUgcGFpbnQgbWV0aG9kIGFib3ZlCiAgICAgLy8KICAgICAvLyBJbiB0aHJl
YWRlZCBjb21wb3NpdGluZyBtb2RlLCBpbmRpY2F0ZXMgdGhhdCB0aGUgd2lkZ2V0IHNob3VsZCB1
cGRhdGUKICAgICAvLyBpdHNlbGYsIGZvciBleGFtcGxlIGR1ZSB0byB3aW5kb3cgZGFtYWdlLiBU
aGUgcmVkcmF3IHdpbGwgYmVnaW4KQEAgLTEwMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgLy8g
b24gcmVjZWl2aW5nIHRoaXMgbWVzc2FnZQogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQo
KSB7IH0KIAotICAgIC8vIENhbGxlZCB0byBpbmZvcm0gdGhlIFdlYldpZGdldCBvZiBhbiBpbnB1
dCBldmVudC4gIFJldHVybnMgdHJ1ZSBpZgorICAgIC8vIENhbGxlZCB0byBpbmZvcm0gdGhlIFdl
YldpZGdldCBvZiBhbiBpbnB1dCBldmVudC4gUmV0dXJucyB0cnVlIGlmCiAgICAgLy8gdGhlIGV2
ZW50IGhhcyBiZWVuIHByb2Nlc3NlZCwgZmFsc2Ugb3RoZXJ3aXNlLgogICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmKSB7IHJldHVybiBmYWxzZTsg
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRD
bGllbnQuaAkocmV2aXNpb24gOTgyNDcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXaWRnZXRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTQgQEAgcHVi
bGljOgogICAgIC8vIGNsb3NlZC4KICAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWwoKSB7IH0KIAor
ICAgIC8vIENhbGxlZCB0byBlbnRlci9leGl0IGZ1bGxzY3JlZW4gbW9kZS4gIElmIGVudGVyRnVs
bFNjcmVlbiByZXR1cm5zIHRydWUsCisgICAgLy8gdGhlbiBXZWJXaWRnZXQ6Ont3aWxsLERpZH1F
bnRlckZ1bGxTY3JlZW4gc2hvdWxkIGJvdW5kIHJlc2l6aW5nIHRoZQorICAgIC8vIFdlYldpZGdl
dCBpbnRvIGZ1bGxzY3JlZW4gbW9kZS4gIFNpbWlsYXJseSwgd2hlbiBleGl0RnVsbFNjcmVlbiBp
cworICAgIC8vIGNhbGxlZCwgV2ViV2lkZ2V0Ojp7d2lsbCxEaWR9RXhpdEZ1bGxTY3JlZW4gc2hv
dWxkIGJvdW5kIHJlc2l6aW5nIHRoZQorICAgIC8vIFdlYldpZGdldCBvdXQgb2YgZnVsbHNjcmVl
biBtb2RlLgorICAgIHZpcnR1YWwgYm9vbCBlbnRlckZ1bGxTY3JlZW4oKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbigpIHsgfQorCiAgICAgLy8gQ2Fs
bGVkIHRvIGdldC9zZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB3aWRnZXQgaW4gc2NyZWVuIGNvb3Jk
aW5hdGVzLgogICAgIHZpcnR1YWwgV2ViUmVjdCB3aW5kb3dSZWN0KCkgeyByZXR1cm4gV2ViUmVj
dCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgV2ViUmVjdCYpIHsg
fQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAJKHJldmlzaW9uIDk4MjQ3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5MSw0OCArODkxLDM1IEBAIENo
cm9tZUNsaWVudDo6Q29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgQ2gKIH0KICNlbmRpZgogCi1ib29s
IENocm9tZUNsaWVudEltcGw6OnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgV2ViQ29y
ZTo6Tm9kZSogbm9kZSkKK2Jvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c3VwcG9ydHNGdWxsc2NyZWVu
Rm9yTm9kZShjb25zdCBOb2RlKiBub2RlKQogewotICAgIGlmIChtX3dlYlZpZXctPmNsaWVudCgp
ICYmIG5vZGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp2aWRlb1RhZykpCi0gICAg
ICAgIHJldHVybiBtX3dlYlZpZXctPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW4oKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZW50ZXJGdWxsc2Ny
ZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKiBub2RlKQordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpl
bnRlckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG1fd2ViVmlldy0+
Y2xpZW50KCkpCi0gICAgICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZv
ck5vZGUoV2ViTm9kZShub2RlKSk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZv
aWQgQ2hyb21lQ2xpZW50SW1wbDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUq
IG5vZGUpCit2b2lkIENocm9tZUNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2Rl
KiBub2RlKQogewotICAgIGlmIChtX3dlYlZpZXctPmNsaWVudCgpKQotICAgICAgICBtX3dlYlZp
ZXctPmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZvck5vZGUoV2ViTm9kZShub2RlKSk7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi1i
b29sIENocm9tZUNsaWVudEltcGw6OnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQoY29uc3Qg
V2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCwgYm9vbCB3aXRoS2V5Ym9hcmQpCitib29sIENocm9t
ZUNsaWVudEltcGw6OnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQoY29uc3QgRWxlbWVudCog
ZWxlbWVudCwgYm9vbCB3aXRoS2V5Ym9hcmQpCiB7Ci0gICAgcmV0dXJuIG1fd2ViVmlldy0+cGFn
ZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpOworICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIENocm9tZUNsaWVudEltcGw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2Vi
Q29yZTo6RWxlbWVudCogZWxlbWVudCkKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZW50ZXJGdWxs
U2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewotICAgIC8vIEZJWE1FOiBNYWtl
IHRoaXMgY29kZSBzdXBwb3J0IGFzeW5jaHJvbm91cyBlbWJlZGRlciBpbXBsZW1lbnRhdGlvbnMg
b2YKLSAgICAvLyBlbnRlckZ1bGxzY3JlZW5Gb3JFbGVtZW50KCkgYnkgcmVzdHJ1Y3R1cmluZyB0
aGlzIGNvZGUgdG8gd2FpdCBmb3IgYW4KLSAgICAvLyBBQ0suCi0gICAgLy8gRklYTUU6IFdlIG1h
eSBuZWVkIHRvIGNhbGwgdGhlc2Ugc29tZXBsYWNlIGVsc2Ugd2hlbiB3aW5kb3cgcmVzaXplcy4K
LSAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudChlbGVtZW50KTsKLSAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5lbnRlckZ1bGxzY3JlZW4o
KTsKLSAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JF
bGVtZW50KGVsZW1lbnQpOworICAgIG1fd2ViVmlldy0+ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChlbGVtZW50KTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpleGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKK3ZvaWQgQ2hyb21lQ2xpZW50SW1w
bDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgLy8g
RklYTUU6IFdlIG1heSBuZWVkIHRvIGNhbGwgdGhlc2Ugc29tZXBsYWNlIGVsc2Ugd2hlbiB3aW5k
b3cgcmVzaXplcy4KLSAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxsRXhpdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwotICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmV4aXRG
dWxsc2NyZWVuKCk7Ci0gICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlkRXhpdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworICAgIG1fd2ViVmlldy0+ZXhpdEZ1bGxTY3JlZW5G
b3JFbGVtZW50KGVsZW1lbnQpOwogfQogCiB2b2lkIENocm9tZUNsaWVudEltcGw6OmZ1bGxTY3Jl
ZW5SZW5kZXJlckNoYW5nZWQoUmVuZGVyQm94KikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gOTgy
NDcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYsNiArMjk2LDggQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudEltcGw6OmRldGFjaGVkRnJvbQogICAgIC8vIG9yIGNyYXNoZXMuCiAgICAgbV93ZWJGcmFt
ZS0+ZnJhbWUoKS0+c2NyaXB0KCktPnByb3h5KCktPmNsZWFyRm9yQ2xvc2UoKTsKIAorICAgIG1f
d2ViRnJhbWUtPnZpZXdJbXBsKCktPndpbGxEZXRhY2hEb2N1bWVudChtX3dlYkZyYW1lKTsKKwog
ICAgIC8vIEFsZXJ0IHRoZSBjbGllbnQgdGhhdCB0aGUgZnJhbWUgaXMgYmVpbmcgZGV0YWNoZWQu
IFRoaXMgaXMgdGhlIGxhc3QKICAgICAvLyBjaGFuY2Ugd2UgaGF2ZSB0byBjb21tdW5pY2F0ZSB3
aXRoIHRoZSBjbGllbnQuCiAgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQpAQCAtMTM4Myw2
ICsxMzg1LDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OnRyYW5zaXRpb25UbwogLy8g
d2lsbCBvY2N1ci4KIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjp0cmFuc2l0aW9uVG9Db21t
aXR0ZWRGb3JOZXdQYWdlKCkKIHsKKyAgICBtX3dlYkZyYW1lLT52aWV3SW1wbCgpLT53aWxsRGV0
YWNoRG9jdW1lbnQobV93ZWJGcmFtZSk7CisKICAgICBtYWtlRG9jdW1lbnRWaWV3KCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlz
aW9uIDk4MjQ3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQwLDYgKzEwNDAsNDAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
d2lsbEVuZExpdmVSZXNpemUoKQogICAgICAgICBwbHVnaW5Db250YWluZXItPndpbGxFbmRMaXZl
UmVzaXplKCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OndpbGxFbnRlckZ1bGxTY3JlZW4oKQor
eworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBpZiAobV9mdWxsU2NyZWVuRWxlbWVu
dCkKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEVu
dGVyRnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7CisjZW5k
aWYKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6ZGlkRW50ZXJGdWxsU2NyZWVuKCkKK3sKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQpCisgICAg
ICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERpZEVudGVyRnVsbFNj
cmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7CisjZW5kaWYKK30KKwor
dm9pZCBXZWJWaWV3SW1wbDo6d2lsbEV4aXRGdWxsU2NyZWVuKCkKK3sKKyNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQpCisgICAgICAgIG1fZnVs
bFNjcmVlbkVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVs
ZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJW
aWV3SW1wbDo6ZGlkRXhpdEZ1bGxTY3JlZW4oKQoreworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKKyAgICBpZiAobV9mdWxsU2NyZWVuRWxlbWVudCkgeworICAgICAgICBtX2Z1bGxTY3JlZW5F
bGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9m
dWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQuY2xl
YXIoKTsKKyAgICB9CisjZW5kaWYKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6YW5pbWF0ZShkb3Vi
bGUgZnJhbWVCZWdpblRpbWUpCiB7CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KQpAQCAtMTE4Miw2ICsxMjE2LDIzIEBAIHZvaWQgV2ViVmlld0ltcGw6Omxvc2VDb21wb3NpdG9y
Q29udGV4dCgKICNlbmRpZgogfQogCit2b2lkIFdlYlZpZXdJbXBsOjplbnRlckZ1bGxTY3JlZW5G
b3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKG1fZnVsbFNj
cmVlbkVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NsaWVudCAmJiBtX2Ns
aWVudC0+ZW50ZXJGdWxsU2NyZWVuKCkpCisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBl
bGVtZW50OworfQorCit2b2lkIFdlYlZpZXdJbXBsOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQo
V2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudCA9PSBtX2Z1
bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPmV4aXRGdWxsU2NyZWVuKCk7Cit9CisKIGNvbnN0IFdlYklucHV0RXZlbnQqIFdlYlZp
ZXdJbXBsOjptX2N1cnJlbnRJbnB1dEV2ZW50ID0gMDsKIAogYm9vbCBXZWJWaWV3SW1wbDo6aGFu
ZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBpbnB1dEV2ZW50KQpAQCAtMjM4Myw2
ICsyNDM0LDE3IEBAIHZvaWQgV2ViVmlldzo6cmVtb3ZlQWxsVXNlckNvbnRlbnQoKQogICAgIHBh
Z2VHcm91cC0+cmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6
d2lsbERldGFjaERvY3VtZW50KFdlYkZyYW1lSW1wbCogZnJhbWVJbXBsKQoreworICAgIGlmICht
X2Z1bGxTY3JlZW5FbGVtZW50ICYmIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRvY3VtZW50KCkgPT0g
ZnJhbWVJbXBsLT5mcmFtZSgpLT5kb2N1bWVudCgpKSB7CisgICAgICAgIC8vIENsZWFyIGVsZW1l
bnQgaGVyZSwgc28gdGhhdCB3ZSBkb24ndCBhdHRlbXB0IGZ1cnRoZXIgY29tbXVuaWNhdGlvbgor
ICAgICAgICAvLyB3aXRoIGl0IHdoZW4gd2UgcmVjZWl2ZXMgY2FsbHMgdG8ge3dpbGwsZGlkfUV4
aXRGdWxsU2NyZWVuLgorICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LmNsZWFyKCk7CisgICAg
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAgIG1fY2xpZW50LT5leGl0RnVsbFNjcmVlbigp
OworICAgIH0KK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6ZGlkQ29tbWl0TG9hZChib29sKiBpc05l
d05hdmlnYXRpb24pCiB7CiAgICAgaWYgKGlzTmV3TmF2aWdhdGlvbikKQEAgLTI4MjIsMTYgKzI4
ODQsNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXNldEdlc3R1cmVSZWNvZ25pemVyCiB9CiAjZW5k
aWYKIAotdm9pZCBXZWJWaWV3SW1wbDo6ZXhpdEZ1bGxzY3JlZW4oKQotewotI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBwYWdlKCktPm1haW5GcmFt
ZSgpLT5kb2N1bWVudCgpOwotICAgIEVsZW1lbnQqIGZ1bGxzY3JlZW5FbGVtZW50ID0gZG9jdW1l
bnQtPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpOwotICAgIGlmICghZnVsbHNjcmVl
bkVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBkb2N1bWVudC0+d2Via2l0V2lsbEV4aXRG
dWxsU2NyZWVuRm9yRWxlbWVudChmdWxsc2NyZWVuRWxlbWVudCk7Ci0gICAgZG9jdW1lbnQtPndl
YmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChmdWxsc2NyZWVuRWxlbWVudCk7Ci0jZW5k
aWYKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDk4MjQ3KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdGFydExpdmVSZXNpemUoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzaXplKGNvbnN0IFdlYlNpemUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbEVuZExpdmVSZXNpemUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEVudGVyRnVsbFNjcmVl
bigpOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxTY3JlZW4oKTsKKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbEV4aXRGdWxsU2NyZWVuKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEV4aXRGdWxs
U2NyZWVuKCk7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlIGZyYW1lQmVnaW5UaW1l
KTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdl
YkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKTsKQEAgLTIyMSw3ICsyMjUsNiBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUJhY2tn
cm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGluYWN0aXZlRm9yZWdyb3VuZENvbG9yKTsKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybUN1c3Rv
bUNvbnRleHRNZW51QWN0aW9uKHVuc2lnbmVkIGFjdGlvbik7Ci0gICAgdmlydHVhbCB2b2lkIGV4
aXRGdWxsc2NyZWVuKCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RDbGllbnQKICAgICB2aXJ0
dWFsIHZvaWQgYW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpOwpAQCAtMzA5
LDYgKzMxMiw4IEBAIHB1YmxpYzoKICAgICAvLyBLZXlib2FyZCBldmVudCB0byB0aGUgUmlnaHQg
TW91c2UgYnV0dG9uIGRvd24gZXZlbnQuCiAgICAgYm9vbCBzZW5kQ29udGV4dE1lbnVFdmVudChj
b25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAKKyAgICB2b2lkIHdpbGxEZXRhY2hEb2N1bWVudChX
ZWJGcmFtZUltcGwqKTsKKwogICAgIC8vIE5vdGlmaWVzIHRoZSBXZWJWaWV3IHRoYXQgYSBsb2Fk
IGhhcyBiZWVuIGNvbW1pdHRlZC4gaXNOZXdOYXZpZ2F0aW9uCiAgICAgLy8gd2lsbCBiZSB0cnVl
IGlmIGEgbmV3IHNlc3Npb24gaGlzdG9yeSBpdGVtIHNob3VsZCBiZSBjcmVhdGVkIGZvciB0aGF0
CiAgICAgLy8gbG9hZC4KQEAgLTQxNiw2ICs0MjEsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxv
c2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpOwogCisgICAgdm9pZCBlbnRlckZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqKTsKKyAgICB2b2lkIGV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kik7CisKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIFdlYlZpZXc7ICAvLyBTbyBXZWJWaWV3OjpDcmVhdGUgY2FuIGNhbGwgb3VyIGNvbnN0
cnVjdG9yCiAgICAgZnJpZW5kIGNsYXNzIFdURjo6UmVmQ291bnRlZDxXZWJWaWV3SW1wbD47CkBA
IC01NzUsNiArNTgzLDkgQEAgcHJpdmF0ZToKICAgICAvLyBJZiBzZXQsIHRoZSAocGx1Z2luKSBu
b2RlIHdoaWNoIGhhcyBtb3VzZSBjYXB0dXJlLgogICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlPiBt
X21vdXNlQ2FwdHVyZU5vZGU7CiAKKyAgICAvLyBJZiBzZXQsIHRoZSBXZWJWaWV3IGlzIGJlaW5n
IGRpc3BsYXllZCBmdWxsc2NyZWVuIGZvciB0aGlzIGVsZW1lbnQuCisgICAgUmVmUHRyPFdlYkNv
cmU6OkVsZW1lbnQ+IG1fZnVsbFNjcmVlbkVsZW1lbnQ7CisKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3Jvb3RMYXllclNjcm9sbERhbWFn
ZTsKICAgICBPd25QdHI8V2ViQ29yZTo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0PiBtX25vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdDsK
</data>
<flag name="commit-queue"
          id="110219"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112209</attachid>
            <date>2011-10-24 10:35:50 -0700</date>
            <delta_ts>2011-10-27 15:39:52 -0700</delta_ts>
            <desc>v1.3 patch (more style fixes)</desc>
            <filename>wk_3.txt</filename>
            <type>text/plain</type>
            <size>16606</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODI0NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTEtMTAtMjQgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEltcHJvdmUgZnVsbHNjcmVlbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNDc3CisKKyAgICAgICAgTW92ZSBmdWxs
c2NyZWVuIGVudHJ5IHBvaW50cyBmcm9tIFdlYlZpZXcgdG8gV2ViV2lkZ2V0IHNpbmNlIHRoZXkg
YXJlCisgICAgICAgIGp1c3QgYWJvdXQgd2lkZ2V0IGdlb21ldHJ5LgorCisgICAgICAgIEV4aXQg
ZnVsbHNjcmVlbiBtb2RlIGlmIHRoZSBkb2N1bWVudCBjb250YWluaW5nIHRoZSBmdWxsc2NyZWVu
IGVsZW1lbnQKKyAgICAgICAgZGlzYXBwZWFycy4KKworICAgICAgICBEZWxheSB3ZWJraXRmdWxs
c2NyZWVuY2hhbmdlIGV2ZW50IHVudGlsIHdlIGtub3cgdGhhdCB3ZSBoYXZlIGVudGVyZWQKKyAg
ICAgICAgZnVsbHNjcmVlbiBtb2RlLiAgVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgZXhwYW5kaW5n
IHRoZSBXZWJLaXQgQVBJcyB0bworICAgICAgICBkaWZmZXJlbnRpYXRlIHdpbGx7RW50ZXIsRXhp
dH0gZnJvbSBkaWR7RW50ZXIsRXhpdH0gc3RhdGUgY2hhbmdlcy4KKworICAgICAgICBXZWJWaWV3
SW1wbCBpcyBmb3JjZWQgdG8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcmVxdWVzdGVkIGZ1bGxz
Y3JlZW4KKyAgICAgICAgZWxlbWVudCB3aGlsZSB3ZSBhcmUgaW4gZnVsbHNjcmVlbiBtb2RlIGFu
ZCBlbnRlcmluZy9leGl0aW5nIHRoYXQgbW9kZS4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3
Lmg6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKiBwdWJsaWMv
V2ViV2lkZ2V0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6d2lsbEVudGVyRnVsbFNj
cmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6ZGlkRW50ZXJGdWxsU2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojp3aWxsRXhpdEZ1bGxTY3JlZW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXaWRnZXQ6OmRpZEV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViV2lkZ2V0Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldENsaWVudDo6
ZW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50OjpleGl0
RnVsbFNjcmVlbik6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKToK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9k
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuRm9y
Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnN1cHBvcnRzRnVsbFNj
cmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjplbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1w
bDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
ZXRhY2hlZEZyb21QYXJlbnQzKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lsbEVudGVyRnVs
bFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRFbnRlckZ1bGxTY3Jl
ZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lsbEV4aXRGdWxsU2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZEV4aXRGdWxsU2NyZWVuKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndpbGxEZXN0cm95RG9jdW1lbnRGb3JGcmFtZSk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMTAtMjQgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWxs
b3cgZGVidWdnaW5nIGRlZGljYXRlZCB3b3JrZXIgaW5pdGlhbGl6YXRpb24KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgJKHJldmlzaW9uIDk4MjQ3KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTAsMTAgKzM5MCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNJbml0aWFsU3RhdGUpIHsgfQogCiAKLSAgICAvLyBGdWxsc2NyZWVuIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LSAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKSA9IDA7Ci0KICAgICAvLyBUZXN0aW5n
IGZ1bmN0aW9uYWxpdHkgZm9yIExheW91dFRlc3RDb250cm9sbGVyIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKICAgICAvLyBTaW11bGF0ZXMgYSBjb21wb3NpdG9yIGxvc3QgY29udGV4dC4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgJKHJl
dmlzaW9uIDk4MjQ3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0Ns
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsMTEgKzIxMiw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgcnVuTW9kYWxCZWZvcmVVbmxvYWREaWFsb2coCiAgICAgICAgIFdlYkZyYW1l
KiwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBXZWJOb2RlJikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBXZWJOb2RlJikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBl
eGl0RnVsbHNjcmVlbigpIHsgfQogCiAgICAgLy8gVUkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCShyZXZpc2lvbiA5ODI0NykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSAiV2ViVGV4dElucHV0VHlwZS5oIgogI2luY2x1
ZGUgIldlYlRleHREaXJlY3Rpb24uaCIKIAorI2RlZmluZSBXRUJLSVRfSEFTX05FV19GVUxMU0NS
RUVOX0FQSSAxCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJbnB1dEV2ZW50OwpA
QCAtNjcsMTkgKzY5LDI3IEBAIHB1YmxpYzoKICAgICAvLyB3aWxsU3RhcnRMaXZlUmVzaXplLgog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIHsgfQogCisgICAgLy8gQ2FsbGVk
IHRvIG5vdGlmeSB0aGUgV2ViV2lkZ2V0IG9mIGVudGVyaW5nL2V4aXRpbmcgZnVsbHNjcmVlbiBt
b2RlLiBUaGUKKyAgICAvLyByZXNpemUgbWV0aG9kIG1heSBiZSBjYWxsZWQgYmV0d2VlbiB3aWxs
e0VudGVyLEV4aXR9RnVsbFNjcmVlbiBhbmQKKyAgICAvLyBkaWR7RW50ZXIsRXhpdH1GdWxsU2Ny
ZWVuLgorICAgIHZpcnR1YWwgdm9pZCB3aWxsRW50ZXJGdWxsU2NyZWVuKCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZEVudGVyRnVsbFNjcmVlbigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxs
RXhpdEZ1bGxTY3JlZW4oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRXhpdEZ1bGxTY3JlZW4o
KSB7IH0KKwogICAgIC8vIENhbGxlZCB0byB1cGRhdGUgaW1wZXJhdGl2ZSBhbmltYXRpb24gc3Rh
dGUuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUKICAgICAvLyBwYWludCwgYWx0aG91Z2gg
dGhlIGNsaWVudCBjYW4gcmF0ZS1saW1pdCB0aGVzZSBjYWxscy4gV2hlbgogICAgIC8vIGZyYW1l
QmVnaW5UaW1lIGlzIDAuMCwgdGhlIFdlYldpZGdldCB3aWxsIGRldGVybWluZSB0aGUgZnJhbWUg
YmVnaW4gdGltZQogICAgIC8vIGl0c2VsZi4KICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3Vi
bGUgZnJhbWVCZWdpblRpbWUpIHsgfQogCi0gICAgLy8gQ2FsbGVkIHRvIGxheW91dCB0aGUgV2Vi
V2lkZ2V0LiAgVGhpcyBNVVNUIGJlIGNhbGxlZCBiZWZvcmUgUGFpbnQsCisgICAgLy8gQ2FsbGVk
IHRvIGxheW91dCB0aGUgV2ViV2lkZ2V0LiBUaGlzIE1VU1QgYmUgY2FsbGVkIGJlZm9yZSBQYWlu
dCwKICAgICAvLyBhbmQgaXQgbWF5IHJlc3VsdCBpbiBjYWxscyB0byBXZWJXaWRnZXRDbGllbnQ6
OmRpZEludmFsaWRhdGVSZWN0LgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSB7IH0KIAogICAg
IC8vIENhbGxlZCB0byBwYWludCB0aGUgcmVjdGFuZ3VsYXIgcmVnaW9uIHdpdGhpbiB0aGUgV2Vi
V2lkZ2V0CiAgICAgLy8gb250byB0aGUgc3BlY2lmaWVkIGNhbnZhcyBhdCAodmlld1BvcnQueCx2
aWV3UG9ydC55KS4gWW91IE1VU1QgY2FsbAotICAgIC8vIExheW91dCBiZWZvcmUgY2FsbGluZyB0
aGlzIG1ldGhvZC4gIEl0IGlzIG9rYXkgdG8gY2FsbCBwYWludAorICAgIC8vIExheW91dCBiZWZv
cmUgY2FsbGluZyB0aGlzIG1ldGhvZC4gSXQgaXMgb2theSB0byBjYWxsIHBhaW50CiAgICAgLy8g
bXVsdGlwbGUgdGltZXMgb25jZSBsYXlvdXQgaGFzIGJlZW4gY2FsbGVkLCBhc3N1bWluZyBubyBv
dGhlcgogICAgIC8vIGNoYW5nZXMgYXJlIG1hZGUgdG8gdGhlIFdlYldpZGdldCAoZS5nLiwgb25j
ZSBldmVudHMgYXJlCiAgICAgLy8gcHJvY2Vzc2VkLCBpdCBzaG91bGQgYmUgYXNzdW1lZCB0aGF0
IGFub3RoZXIgY2FsbCB0byBsYXlvdXQgaXMKQEAgLTg3LDggKzk3LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0JiB2aWV3UG9ydCkg
eyB9CiAKICAgICAvLyBJbiBub24tdGhyZWFkZWQgY29tcG9zaXRpbmcgbW9kZSwgdHJpZ2dlcnMg
Y29tcG9zaXRpbmcgb2YgdGhlIGN1cnJlbnQKLSAgICAvLyBsYXllcnMgb250byB0aGUgc2NyZWVu
LiBZb3UgTVVTVCBjYWxsIExheW91dCBiZWZvcmUgY2FsbGluZyB0aGlzIG1ldGhvZCwgZm9yIHRo
ZSBzYW1lCi0gICAgLy8gcmVhc29ucyBkZXNjcmliZWQgaW4gdGhlIHBhaW50IG1ldGhvZCBhYm92
ZQorICAgIC8vIGxheWVycyBvbnRvIHRoZSBzY3JlZW4uIFlvdSBNVVNUIGNhbGwgTGF5b3V0IGJl
Zm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLAorICAgIC8vIGZvciB0aGUgc2FtZSByZWFzb25zIGRl
c2NyaWJlZCBpbiB0aGUgcGFpbnQgbWV0aG9kIGFib3ZlCiAgICAgLy8KICAgICAvLyBJbiB0aHJl
YWRlZCBjb21wb3NpdGluZyBtb2RlLCBpbmRpY2F0ZXMgdGhhdCB0aGUgd2lkZ2V0IHNob3VsZCB1
cGRhdGUKICAgICAvLyBpdHNlbGYsIGZvciBleGFtcGxlIGR1ZSB0byB3aW5kb3cgZGFtYWdlLiBU
aGUgcmVkcmF3IHdpbGwgYmVnaW4KQEAgLTEwMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgLy8g
b24gcmVjZWl2aW5nIHRoaXMgbWVzc2FnZQogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQo
KSB7IH0KIAotICAgIC8vIENhbGxlZCB0byBpbmZvcm0gdGhlIFdlYldpZGdldCBvZiBhbiBpbnB1
dCBldmVudC4gIFJldHVybnMgdHJ1ZSBpZgorICAgIC8vIENhbGxlZCB0byBpbmZvcm0gdGhlIFdl
YldpZGdldCBvZiBhbiBpbnB1dCBldmVudC4gUmV0dXJucyB0cnVlIGlmCiAgICAgLy8gdGhlIGV2
ZW50IGhhcyBiZWVuIHByb2Nlc3NlZCwgZmFsc2Ugb3RoZXJ3aXNlLgogICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmKSB7IHJldHVybiBmYWxzZTsg
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRD
bGllbnQuaAkocmV2aXNpb24gOTgyNDcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXaWRnZXRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTQgQEAgcHVi
bGljOgogICAgIC8vIGNsb3NlZC4KICAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWwoKSB7IH0KIAor
ICAgIC8vIENhbGxlZCB0byBlbnRlci9leGl0IGZ1bGxzY3JlZW4gbW9kZS4gSWYgZW50ZXJGdWxs
U2NyZWVuIHJldHVybnMgdHJ1ZSwKKyAgICAvLyB0aGVuIFdlYldpZGdldDo6e3dpbGwsRGlkfUVu
dGVyRnVsbFNjcmVlbiBzaG91bGQgYm91bmQgcmVzaXppbmcgdGhlCisgICAgLy8gV2ViV2lkZ2V0
IGludG8gZnVsbHNjcmVlbiBtb2RlLiBTaW1pbGFybHksIHdoZW4gZXhpdEZ1bGxTY3JlZW4gaXMK
KyAgICAvLyBjYWxsZWQsIFdlYldpZGdldDo6e3dpbGwsRGlkfUV4aXRGdWxsU2NyZWVuIHNob3Vs
ZCBib3VuZCByZXNpemluZyB0aGUKKyAgICAvLyBXZWJXaWRnZXQgb3V0IG9mIGZ1bGxzY3JlZW4g
bW9kZS4KKyAgICB2aXJ0dWFsIGJvb2wgZW50ZXJGdWxsU2NyZWVuKCkgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW4oKSB7IH0KKwogICAgIC8vIENhbGxl
ZCB0byBnZXQvc2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgd2lkZ2V0IGluIHNjcmVlbiBjb29yZGlu
YXRlcy4KICAgICB2aXJ0dWFsIFdlYlJlY3Qgd2luZG93UmVjdCgpIHsgcmV0dXJuIFdlYlJlY3Qo
KTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRXaW5kb3dSZWN0KGNvbnN0IFdlYlJlY3QmKSB7IH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwCShyZXZpc2lvbiA5ODI0NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTEsNDggKzg5MSwzNSBAQCBDaHJv
bWVDbGllbnQ6OkNvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIENoCiB9CiAjZW5kaWYKIAotYm9vbCBD
aHJvbWVDbGllbnRJbXBsOjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IFdlYkNvcmU6
Ok5vZGUqIG5vZGUpCitib29sIENocm9tZUNsaWVudEltcGw6OnN1cHBvcnRzRnVsbHNjcmVlbkZv
ck5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobV93ZWJWaWV3LT5jbGllbnQoKSAm
JiBub2RlLT5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6dmlkZW9UYWcpKQotICAgICAg
ICByZXR1cm4gbV93ZWJWaWV3LT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsc2NyZWVuKCk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENocm9tZUNsaWVudEltcGw6OmVudGVyRnVsbHNjcmVl
bkZvck5vZGUoV2ViQ29yZTo6Tm9kZSogbm9kZSkKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZW50
ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQogewotICAgIGlmIChtX3dlYlZpZXctPmNs
aWVudCgpKQotICAgICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5lbnRlckZ1bGxzY3JlZW5Gb3JO
b2RlKFdlYk5vZGUobm9kZSkpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lk
IENocm9tZUNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKiBu
b2RlKQordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSog
bm9kZSkKIHsKLSAgICBpZiAobV93ZWJWaWV3LT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJWaWV3
LT5jbGllbnQoKS0+ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKFdlYk5vZGUobm9kZSkpOworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotYm9v
bCBDaHJvbWVDbGllbnRJbXBsOjpzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGNvbnN0IFdl
YkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgd2l0aEtleWJvYXJkKQorYm9vbCBDaHJvbWVD
bGllbnRJbXBsOjpzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVs
ZW1lbnQsIGJvb2wgd2l0aEtleWJvYXJkKQogewotICAgIHJldHVybiBtX3dlYlZpZXctPnBhZ2Uo
KS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBDaHJvbWVDbGllbnRJbXBsOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNv
cmU6OkVsZW1lbnQqIGVsZW1lbnQpCit2b2lkIENocm9tZUNsaWVudEltcGw6OmVudGVyRnVsbFNj
cmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICAvLyBGSVhNRTogTWFrZSB0
aGlzIGNvZGUgc3VwcG9ydCBhc3luY2hyb25vdXMgZW1iZWRkZXIgaW1wbGVtZW50YXRpb25zIG9m
Ci0gICAgLy8gZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudCgpIGJ5IHJlc3RydWN0dXJpbmcgdGhp
cyBjb2RlIHRvIHdhaXQgZm9yIGFuCi0gICAgLy8gQUNLLgotICAgIC8vIEZJWE1FOiBXZSBtYXkg
bmVlZCB0byBjYWxsIHRoZXNlIHNvbWVwbGFjZSBlbHNlIHdoZW4gd2luZG93IHJlc2l6ZXMuCi0g
ICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnQoZWxlbWVudCk7Ci0gICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7
Ci0gICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudChlbGVtZW50KTsKKyAgICBtX3dlYlZpZXctPmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQo
ZWxlbWVudCk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JF
bGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCit2b2lkIENocm9tZUNsaWVudEltcGw6
OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewotICAgIC8vIEZJ
WE1FOiBXZSBtYXkgbmVlZCB0byBjYWxsIHRoZXNlIHNvbWVwbGFjZSBlbHNlIHdoZW4gd2luZG93
IHJlc2l6ZXMuCi0gICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChlbGVtZW50KTsKLSAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5leGl0RnVs
bHNjcmVlbigpOwotICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERpZEV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICBtX3dlYlZpZXctPmV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudChlbGVtZW50KTsKIH0KIAogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpmdWxsU2NyZWVu
UmVuZGVyZXJDaGFuZ2VkKFJlbmRlckJveCopCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDk4MjQ3
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjk2LDYgKzI5Niw4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRJbXBsOjpkZXRhY2hlZEZyb20KICAgICAvLyBvciBjcmFzaGVzLgogICAgIG1fd2ViRnJhbWUt
PmZyYW1lKCktPnNjcmlwdCgpLT5wcm94eSgpLT5jbGVhckZvckNsb3NlKCk7CiAKKyAgICBtX3dl
YkZyYW1lLT52aWV3SW1wbCgpLT53aWxsRGV0YWNoRG9jdW1lbnQobV93ZWJGcmFtZSk7CisKICAg
ICAvLyBBbGVydCB0aGUgY2xpZW50IHRoYXQgdGhlIGZyYW1lIGlzIGJlaW5nIGRldGFjaGVkLiBU
aGlzIGlzIHRoZSBsYXN0CiAgICAgLy8gY2hhbmNlIHdlIGhhdmUgdG8gY29tbXVuaWNhdGUgd2l0
aCB0aGUgY2xpZW50LgogICAgIGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKQEAgLTEzODMsNiAr
MTM4NSw4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjp0cmFuc2l0aW9uVG8KIC8vIHdp
bGwgb2NjdXIuCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6dHJhbnNpdGlvblRvQ29tbWl0
dGVkRm9yTmV3UGFnZSgpCiB7CisgICAgbV93ZWJGcmFtZS0+dmlld0ltcGwoKS0+d2lsbERldGFj
aERvY3VtZW50KG1fd2ViRnJhbWUpOworCiAgICAgbWFrZURvY3VtZW50VmlldygpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lv
biA5ODI0NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA0MCw2ICsxMDQwLDQwIEBAIHZvaWQgV2ViVmlld0ltcGw6Ondp
bGxFbmRMaXZlUmVzaXplKCkKICAgICAgICAgcGx1Z2luQ29udGFpbmVyLT53aWxsRW5kTGl2ZVJl
c2l6ZSgpOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjp3aWxsRW50ZXJGdWxsU2NyZWVuKCkKK3sK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQp
CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdFdpbGxFbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworI2VuZGlm
Cit9CisKK3ZvaWQgV2ViVmlld0ltcGw6OmRpZEVudGVyRnVsbFNjcmVlbigpCit7CisjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAgICAg
ICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFbnRlckZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworI2VuZGlmCit9CisKK3Zv
aWQgV2ViVmlld0ltcGw6OndpbGxFeGl0RnVsbFNjcmVlbigpCit7CisjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQorICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAgICAgICBtX2Z1bGxT
Y3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViVmll
d0ltcGw6OmRpZEV4aXRGdWxsU2NyZWVuKCkKK3sKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQpIHsKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxl
bWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVs
bFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LmNsZWFy
KCk7CisgICAgfQorI2VuZGlmCit9CisKIHZvaWQgV2ViVmlld0ltcGw6OmFuaW1hdGUoZG91Ymxl
IGZyYW1lQmVnaW5UaW1lKQogewogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkK
QEAgLTExODIsNiArMTIxNiwyMyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpsb3NlQ29tcG9zaXRvckNv
bnRleHQoCiAjZW5kaWYKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6ZW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlmIChtX2Z1bGxTY3Jl
ZW5FbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jbGllbnQgJiYgbV9jbGll
bnQtPmVudGVyRnVsbFNjcmVlbigpKQorICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gZWxl
bWVudDsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdl
YkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQgPT0gbV9mdWxs
U2NyZWVuRWxlbWVudC5nZXQoKSk7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5leGl0RnVsbFNjcmVlbigpOworfQorCiBjb25zdCBXZWJJbnB1dEV2ZW50KiBXZWJWaWV3
SW1wbDo6bV9jdXJyZW50SW5wdXRFdmVudCA9IDA7CiAKIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRs
ZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgaW5wdXRFdmVudCkKQEAgLTIzODMsNiAr
MjQzNCwxNyBAQCB2b2lkIFdlYlZpZXc6OnJlbW92ZUFsbFVzZXJDb250ZW50KCkKICAgICBwYWdl
R3JvdXAtPnJlbW92ZUFsbFVzZXJDb250ZW50KCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6Ondp
bGxEZXRhY2hEb2N1bWVudChXZWJGcmFtZUltcGwqIGZyYW1lSW1wbCkKK3sKKyAgICBpZiAobV9m
dWxsU2NyZWVuRWxlbWVudCAmJiBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpID09IGZy
YW1lSW1wbC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSkgeworICAgICAgICAvLyBDbGVhciBlbGVtZW50
IGhlcmUsIHNvIHRoYXQgd2UgZG9uJ3QgYXR0ZW1wdCBmdXJ0aGVyIGNvbW11bmljYXRpb24KKyAg
ICAgICAgLy8gd2l0aCBpdCB3aGVuIHdlIHJlY2VpdmVzIGNhbGxzIHRvIHt3aWxsLGRpZH1FeGl0
RnVsbFNjcmVlbi4KKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC5jbGVhcigpOworICAgICAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+ZXhpdEZ1bGxTY3JlZW4oKTsK
KyAgICB9Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OmRpZENvbW1pdExvYWQoYm9vbCogaXNOZXdO
YXZpZ2F0aW9uKQogewogICAgIGlmIChpc05ld05hdmlnYXRpb24pCkBAIC0yODIyLDE2ICsyODg0
LDQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVzZXRHZXN0dXJlUmVjb2duaXplcgogfQogI2VuZGlm
CiAKLXZvaWQgV2ViVmlld0ltcGw6OmV4aXRGdWxsc2NyZWVuKCkKLXsKLSNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcGFnZSgpLT5tYWluRnJhbWUo
KS0+ZG9jdW1lbnQoKTsKLSAgICBFbGVtZW50KiBmdWxsc2NyZWVuRWxlbWVudCA9IGRvY3VtZW50
LT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKTsKLSAgICBpZiAoIWZ1bGxzY3JlZW5F
bGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgZG9jdW1lbnQtPndlYmtpdFdpbGxFeGl0RnVs
bFNjcmVlbkZvckVsZW1lbnQoZnVsbHNjcmVlbkVsZW1lbnQpOwotICAgIGRvY3VtZW50LT53ZWJr
aXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoZnVsbHNjcmVlbkVsZW1lbnQpOwotI2VuZGlm
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiA5ODI0NykKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRMaXZlUmVzaXplKCk7CiAgICAg
dmlydHVhbCB2b2lkIHJlc2l6ZShjb25zdCBXZWJTaXplJik7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxFbmRMaXZlUmVzaXplKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxFbnRlckZ1bGxTY3JlZW4o
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJGdWxsU2NyZWVuKCk7CisgICAgdmlydHVhbCB2
b2lkIHdpbGxFeGl0RnVsbFNjcmVlbigpOworICAgIHZpcnR1YWwgdm9pZCBkaWRFeGl0RnVsbFNj
cmVlbigpOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7
CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJD
YW52YXMqLCBjb25zdCBXZWJSZWN0Jik7CkBAIC0yMjEsNyArMjI1LDYgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5hY3RpdmVCYWNrZ3Jv
dW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bmFjdGl2ZUZvcmVncm91bmRDb2xvcik7CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1DdXN0b21D
b250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rpb24pOwotICAgIHZpcnR1YWwgdm9pZCBleGl0
RnVsbHNjcmVlbigpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0Q2xpZW50CiAgICAgdmlydHVh
bCB2b2lkIGFuaW1hdGVBbmRMYXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKQEAgLTMwOSw2
ICszMTIsOCBAQCBwdWJsaWM6CiAgICAgLy8gS2V5Ym9hcmQgZXZlbnQgdG8gdGhlIFJpZ2h0IE1v
dXNlIGJ1dHRvbiBkb3duIGV2ZW50LgogICAgIGJvb2wgc2VuZENvbnRleHRNZW51RXZlbnQoY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogCisgICAgdm9pZCB3aWxsRGV0YWNoRG9jdW1lbnQoV2Vi
RnJhbWVJbXBsKik7CisKICAgICAvLyBOb3RpZmllcyB0aGUgV2ViVmlldyB0aGF0IGEgbG9hZCBo
YXMgYmVlbiBjb21taXR0ZWQuIGlzTmV3TmF2aWdhdGlvbgogICAgIC8vIHdpbGwgYmUgdHJ1ZSBp
ZiBhIG5ldyBzZXNzaW9uIGhpc3RvcnkgaXRlbSBzaG91bGQgYmUgY3JlYXRlZCBmb3IgdGhhdAog
ICAgIC8vIGxvYWQuCkBAIC00MTYsNiArNDIxLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb3Nl
Q29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKTsKIAorICAgIHZvaWQgZW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kik7CisgICAgdm9pZCBleGl0RnVsbFNjcmVl
bkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBXZWJWaWV3OyAgLy8gU28gV2ViVmlldzo6Q3JlYXRlIGNhbiBjYWxsIG91ciBjb25zdHJ1
Y3RvcgogICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8V2ViVmlld0ltcGw+OwpAQCAt
NTc1LDYgKzU4Myw5IEBAIHByaXZhdGU6CiAgICAgLy8gSWYgc2V0LCB0aGUgKHBsdWdpbikgbm9k
ZSB3aGljaCBoYXMgbW91c2UgY2FwdHVyZS4KICAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbV9t
b3VzZUNhcHR1cmVOb2RlOwogCisgICAgLy8gSWYgc2V0LCB0aGUgV2ViVmlldyBpcyBiZWluZyBk
aXNwbGF5ZWQgZnVsbHNjcmVlbiBmb3IgdGhpcyBlbGVtZW50LgorICAgIFJlZlB0cjxXZWJDb3Jl
OjpFbGVtZW50PiBtX2Z1bGxTY3JlZW5FbGVtZW50OworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogICAgIFdlYkNvcmU6OkludFJlY3QgbV9yb290TGF5ZXJTY3JvbGxEYW1hZ2U7
CiAgICAgT3duUHRyPFdlYkNvcmU6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdD4gbV9ub25Db21w
b3NpdGVkQ29udGVudEhvc3Q7Cg==
</data>
<flag name="commit-queue"
          id="110238"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112770</attachid>
            <date>2011-10-27 15:39:52 -0700</date>
            <delta_ts>2011-11-09 16:02:39 -0800</delta_ts>
            <desc>v1.4 patch (now with DRT fixes)</desc>
            <filename>wk_4.txt</filename>
            <type>text/plain</type>
            <size>19837</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODI2MikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTEtMTAtMjQgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEltcHJvdmUgZnVsbHNjcmVlbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNDc3CisKKyAgICAgICAgTW92ZSBmdWxs
c2NyZWVuIGVudHJ5IHBvaW50cyBmcm9tIFdlYlZpZXcgdG8gV2ViV2lkZ2V0IHNpbmNlIHRoZXkg
YXJlCisgICAgICAgIGp1c3QgYWJvdXQgd2lkZ2V0IGdlb21ldHJ5LgorCisgICAgICAgIEV4aXQg
ZnVsbHNjcmVlbiBtb2RlIGlmIHRoZSBkb2N1bWVudCBjb250YWluaW5nIHRoZSBmdWxsc2NyZWVu
IGVsZW1lbnQKKyAgICAgICAgZGlzYXBwZWFycy4KKworICAgICAgICBEZWxheSB3ZWJraXRmdWxs
c2NyZWVuY2hhbmdlIGV2ZW50IHVudGlsIHdlIGtub3cgdGhhdCB3ZSBoYXZlIGVudGVyZWQKKyAg
ICAgICAgZnVsbHNjcmVlbiBtb2RlLiAgVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgZXhwYW5kaW5n
IHRoZSBXZWJLaXQgQVBJcyB0bworICAgICAgICBkaWZmZXJlbnRpYXRlIHdpbGx7RW50ZXIsRXhp
dH0gZnJvbSBkaWR7RW50ZXIsRXhpdH0gc3RhdGUgY2hhbmdlcy4KKworICAgICAgICBXZWJWaWV3
SW1wbCBpcyBmb3JjZWQgdG8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcmVxdWVzdGVkIGZ1bGxz
Y3JlZW4KKyAgICAgICAgZWxlbWVudCB3aGlsZSB3ZSBhcmUgaW4gZnVsbHNjcmVlbiBtb2RlIGFu
ZCBlbnRlcmluZy9leGl0aW5nIHRoYXQgbW9kZS4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3
Lmg6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKiBwdWJsaWMv
V2ViV2lkZ2V0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6d2lsbEVudGVyRnVsbFNj
cmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6ZGlkRW50ZXJGdWxsU2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojp3aWxsRXhpdEZ1bGxTY3JlZW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXaWRnZXQ6OmRpZEV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViV2lkZ2V0Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldENsaWVudDo6
ZW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50OjpleGl0
RnVsbFNjcmVlbik6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKToK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9k
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuRm9y
Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnN1cHBvcnRzRnVsbFNj
cmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjplbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1w
bDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
ZXRhY2hlZEZyb21QYXJlbnQzKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lsbEVudGVyRnVs
bFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRFbnRlckZ1bGxTY3Jl
ZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lsbEV4aXRGdWxsU2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZEV4aXRGdWxsU2NyZWVuKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndpbGxEZXN0cm95RG9jdW1lbnRGb3JGcmFtZSk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMTAtMjQgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWxs
b3cgZGVidWdnaW5nIGRlZGljYXRlZCB3b3JrZXIgaW5pdGlhbGl6YXRpb24KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgJKHJldmlzaW9uIDk4MjYyKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTAsMTAgKzM5MCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNJbml0aWFsU3RhdGUpIHsgfQogCiAKLSAgICAvLyBGdWxsc2NyZWVuIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LSAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKSA9IDA7Ci0KICAgICAvLyBUZXN0aW5n
IGZ1bmN0aW9uYWxpdHkgZm9yIExheW91dFRlc3RDb250cm9sbGVyIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKICAgICAvLyBTaW11bGF0ZXMgYSBjb21wb3NpdG9yIGxvc3QgY29udGV4dC4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgJKHJl
dmlzaW9uIDk4MjYyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0Ns
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsMTEgKzIxMiw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgcnVuTW9kYWxCZWZvcmVVbmxvYWREaWFsb2coCiAgICAgICAgIFdlYkZyYW1l
KiwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBXZWJOb2RlJikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBXZWJOb2RlJikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBl
eGl0RnVsbHNjcmVlbigpIHsgfQogCiAgICAgLy8gVUkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCShyZXZpc2lvbiA5ODI2MikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSAiV2ViVGV4dElucHV0VHlwZS5oIgogI2luY2x1
ZGUgIldlYlRleHREaXJlY3Rpb24uaCIKIAorI2RlZmluZSBXRUJLSVRfSEFTX05FV19GVUxMU0NS
RUVOX0FQSSAxCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJbnB1dEV2ZW50OwpA
QCAtNjcsMTkgKzY5LDI3IEBAIHB1YmxpYzoKICAgICAvLyB3aWxsU3RhcnRMaXZlUmVzaXplLgog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIHsgfQogCisgICAgLy8gQ2FsbGVk
IHRvIG5vdGlmeSB0aGUgV2ViV2lkZ2V0IG9mIGVudGVyaW5nL2V4aXRpbmcgZnVsbHNjcmVlbiBt
b2RlLiBUaGUKKyAgICAvLyByZXNpemUgbWV0aG9kIG1heSBiZSBjYWxsZWQgYmV0d2VlbiB3aWxs
e0VudGVyLEV4aXR9RnVsbFNjcmVlbiBhbmQKKyAgICAvLyBkaWR7RW50ZXIsRXhpdH1GdWxsU2Ny
ZWVuLgorICAgIHZpcnR1YWwgdm9pZCB3aWxsRW50ZXJGdWxsU2NyZWVuKCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZEVudGVyRnVsbFNjcmVlbigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxs
RXhpdEZ1bGxTY3JlZW4oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRXhpdEZ1bGxTY3JlZW4o
KSB7IH0KKwogICAgIC8vIENhbGxlZCB0byB1cGRhdGUgaW1wZXJhdGl2ZSBhbmltYXRpb24gc3Rh
dGUuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUKICAgICAvLyBwYWludCwgYWx0aG91Z2gg
dGhlIGNsaWVudCBjYW4gcmF0ZS1saW1pdCB0aGVzZSBjYWxscy4gV2hlbgogICAgIC8vIGZyYW1l
QmVnaW5UaW1lIGlzIDAuMCwgdGhlIFdlYldpZGdldCB3aWxsIGRldGVybWluZSB0aGUgZnJhbWUg
YmVnaW4gdGltZQogICAgIC8vIGl0c2VsZi4KICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3Vi
bGUgZnJhbWVCZWdpblRpbWUpIHsgfQogCi0gICAgLy8gQ2FsbGVkIHRvIGxheW91dCB0aGUgV2Vi
V2lkZ2V0LiAgVGhpcyBNVVNUIGJlIGNhbGxlZCBiZWZvcmUgUGFpbnQsCisgICAgLy8gQ2FsbGVk
IHRvIGxheW91dCB0aGUgV2ViV2lkZ2V0LiBUaGlzIE1VU1QgYmUgY2FsbGVkIGJlZm9yZSBQYWlu
dCwKICAgICAvLyBhbmQgaXQgbWF5IHJlc3VsdCBpbiBjYWxscyB0byBXZWJXaWRnZXRDbGllbnQ6
OmRpZEludmFsaWRhdGVSZWN0LgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSB7IH0KIAogICAg
IC8vIENhbGxlZCB0byBwYWludCB0aGUgcmVjdGFuZ3VsYXIgcmVnaW9uIHdpdGhpbiB0aGUgV2Vi
V2lkZ2V0CiAgICAgLy8gb250byB0aGUgc3BlY2lmaWVkIGNhbnZhcyBhdCAodmlld1BvcnQueCx2
aWV3UG9ydC55KS4gWW91IE1VU1QgY2FsbAotICAgIC8vIExheW91dCBiZWZvcmUgY2FsbGluZyB0
aGlzIG1ldGhvZC4gIEl0IGlzIG9rYXkgdG8gY2FsbCBwYWludAorICAgIC8vIExheW91dCBiZWZv
cmUgY2FsbGluZyB0aGlzIG1ldGhvZC4gSXQgaXMgb2theSB0byBjYWxsIHBhaW50CiAgICAgLy8g
bXVsdGlwbGUgdGltZXMgb25jZSBsYXlvdXQgaGFzIGJlZW4gY2FsbGVkLCBhc3N1bWluZyBubyBv
dGhlcgogICAgIC8vIGNoYW5nZXMgYXJlIG1hZGUgdG8gdGhlIFdlYldpZGdldCAoZS5nLiwgb25j
ZSBldmVudHMgYXJlCiAgICAgLy8gcHJvY2Vzc2VkLCBpdCBzaG91bGQgYmUgYXNzdW1lZCB0aGF0
IGFub3RoZXIgY2FsbCB0byBsYXlvdXQgaXMKQEAgLTg3LDggKzk3LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0JiB2aWV3UG9ydCkg
eyB9CiAKICAgICAvLyBJbiBub24tdGhyZWFkZWQgY29tcG9zaXRpbmcgbW9kZSwgdHJpZ2dlcnMg
Y29tcG9zaXRpbmcgb2YgdGhlIGN1cnJlbnQKLSAgICAvLyBsYXllcnMgb250byB0aGUgc2NyZWVu
LiBZb3UgTVVTVCBjYWxsIExheW91dCBiZWZvcmUgY2FsbGluZyB0aGlzIG1ldGhvZCwgZm9yIHRo
ZSBzYW1lCi0gICAgLy8gcmVhc29ucyBkZXNjcmliZWQgaW4gdGhlIHBhaW50IG1ldGhvZCBhYm92
ZQorICAgIC8vIGxheWVycyBvbnRvIHRoZSBzY3JlZW4uIFlvdSBNVVNUIGNhbGwgTGF5b3V0IGJl
Zm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLAorICAgIC8vIGZvciB0aGUgc2FtZSByZWFzb25zIGRl
c2NyaWJlZCBpbiB0aGUgcGFpbnQgbWV0aG9kIGFib3ZlCiAgICAgLy8KICAgICAvLyBJbiB0aHJl
YWRlZCBjb21wb3NpdGluZyBtb2RlLCBpbmRpY2F0ZXMgdGhhdCB0aGUgd2lkZ2V0IHNob3VsZCB1
cGRhdGUKICAgICAvLyBpdHNlbGYsIGZvciBleGFtcGxlIGR1ZSB0byB3aW5kb3cgZGFtYWdlLiBU
aGUgcmVkcmF3IHdpbGwgYmVnaW4KQEAgLTEwMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgLy8g
b24gcmVjZWl2aW5nIHRoaXMgbWVzc2FnZQogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQo
KSB7IH0KIAotICAgIC8vIENhbGxlZCB0byBpbmZvcm0gdGhlIFdlYldpZGdldCBvZiBhbiBpbnB1
dCBldmVudC4gIFJldHVybnMgdHJ1ZSBpZgorICAgIC8vIENhbGxlZCB0byBpbmZvcm0gdGhlIFdl
YldpZGdldCBvZiBhbiBpbnB1dCBldmVudC4gUmV0dXJucyB0cnVlIGlmCiAgICAgLy8gdGhlIGV2
ZW50IGhhcyBiZWVuIHByb2Nlc3NlZCwgZmFsc2Ugb3RoZXJ3aXNlLgogICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmKSB7IHJldHVybiBmYWxzZTsg
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRD
bGllbnQuaAkocmV2aXNpb24gOTgyNjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXaWRnZXRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTQgQEAgcHVi
bGljOgogICAgIC8vIGNsb3NlZC4KICAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWwoKSB7IH0KIAor
ICAgIC8vIENhbGxlZCB0byBlbnRlci9leGl0IGZ1bGxzY3JlZW4gbW9kZS4gSWYgZW50ZXJGdWxs
U2NyZWVuIHJldHVybnMgdHJ1ZSwKKyAgICAvLyB0aGVuIFdlYldpZGdldDo6e3dpbGwsRGlkfUVu
dGVyRnVsbFNjcmVlbiBzaG91bGQgYm91bmQgcmVzaXppbmcgdGhlCisgICAgLy8gV2ViV2lkZ2V0
IGludG8gZnVsbHNjcmVlbiBtb2RlLiBTaW1pbGFybHksIHdoZW4gZXhpdEZ1bGxTY3JlZW4gaXMK
KyAgICAvLyBjYWxsZWQsIFdlYldpZGdldDo6e3dpbGwsRGlkfUV4aXRGdWxsU2NyZWVuIHNob3Vs
ZCBib3VuZCByZXNpemluZyB0aGUKKyAgICAvLyBXZWJXaWRnZXQgb3V0IG9mIGZ1bGxzY3JlZW4g
bW9kZS4KKyAgICB2aXJ0dWFsIGJvb2wgZW50ZXJGdWxsU2NyZWVuKCkgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW4oKSB7IH0KKwogICAgIC8vIENhbGxl
ZCB0byBnZXQvc2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgd2lkZ2V0IGluIHNjcmVlbiBjb29yZGlu
YXRlcy4KICAgICB2aXJ0dWFsIFdlYlJlY3Qgd2luZG93UmVjdCgpIHsgcmV0dXJuIFdlYlJlY3Qo
KTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRXaW5kb3dSZWN0KGNvbnN0IFdlYlJlY3QmKSB7IH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwCShyZXZpc2lvbiA5ODI2MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTEsNDggKzg5MSwzNSBAQCBDaHJv
bWVDbGllbnQ6OkNvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIENoCiB9CiAjZW5kaWYKIAotYm9vbCBD
aHJvbWVDbGllbnRJbXBsOjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IFdlYkNvcmU6
Ok5vZGUqIG5vZGUpCitib29sIENocm9tZUNsaWVudEltcGw6OnN1cHBvcnRzRnVsbHNjcmVlbkZv
ck5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobV93ZWJWaWV3LT5jbGllbnQoKSAm
JiBub2RlLT5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6dmlkZW9UYWcpKQotICAgICAg
ICByZXR1cm4gbV93ZWJWaWV3LT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsc2NyZWVuKCk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENocm9tZUNsaWVudEltcGw6OmVudGVyRnVsbHNjcmVl
bkZvck5vZGUoV2ViQ29yZTo6Tm9kZSogbm9kZSkKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZW50
ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQogewotICAgIGlmIChtX3dlYlZpZXctPmNs
aWVudCgpKQotICAgICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5lbnRlckZ1bGxzY3JlZW5Gb3JO
b2RlKFdlYk5vZGUobm9kZSkpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lk
IENocm9tZUNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKiBu
b2RlKQordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSog
bm9kZSkKIHsKLSAgICBpZiAobV93ZWJWaWV3LT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJWaWV3
LT5jbGllbnQoKS0+ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKFdlYk5vZGUobm9kZSkpOworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotYm9v
bCBDaHJvbWVDbGllbnRJbXBsOjpzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGNvbnN0IFdl
YkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgd2l0aEtleWJvYXJkKQorYm9vbCBDaHJvbWVD
bGllbnRJbXBsOjpzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVs
ZW1lbnQsIGJvb2wgd2l0aEtleWJvYXJkKQogewotICAgIHJldHVybiBtX3dlYlZpZXctPnBhZ2Uo
KS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBDaHJvbWVDbGllbnRJbXBsOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNv
cmU6OkVsZW1lbnQqIGVsZW1lbnQpCit2b2lkIENocm9tZUNsaWVudEltcGw6OmVudGVyRnVsbFNj
cmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICAvLyBGSVhNRTogTWFrZSB0
aGlzIGNvZGUgc3VwcG9ydCBhc3luY2hyb25vdXMgZW1iZWRkZXIgaW1wbGVtZW50YXRpb25zIG9m
Ci0gICAgLy8gZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudCgpIGJ5IHJlc3RydWN0dXJpbmcgdGhp
cyBjb2RlIHRvIHdhaXQgZm9yIGFuCi0gICAgLy8gQUNLLgotICAgIC8vIEZJWE1FOiBXZSBtYXkg
bmVlZCB0byBjYWxsIHRoZXNlIHNvbWVwbGFjZSBlbHNlIHdoZW4gd2luZG93IHJlc2l6ZXMuCi0g
ICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnQoZWxlbWVudCk7Ci0gICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7
Ci0gICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudChlbGVtZW50KTsKKyAgICBtX3dlYlZpZXctPmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQo
ZWxlbWVudCk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JF
bGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCit2b2lkIENocm9tZUNsaWVudEltcGw6
OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewotICAgIC8vIEZJ
WE1FOiBXZSBtYXkgbmVlZCB0byBjYWxsIHRoZXNlIHNvbWVwbGFjZSBlbHNlIHdoZW4gd2luZG93
IHJlc2l6ZXMuCi0gICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChlbGVtZW50KTsKLSAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5leGl0RnVs
bHNjcmVlbigpOwotICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERpZEV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICBtX3dlYlZpZXctPmV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudChlbGVtZW50KTsKIH0KIAogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpmdWxsU2NyZWVu
UmVuZGVyZXJDaGFuZ2VkKFJlbmRlckJveCopCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDk4MjYy
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjk2LDYgKzI5Niw4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRJbXBsOjpkZXRhY2hlZEZyb20KICAgICAvLyBvciBjcmFzaGVzLgogICAgIG1fd2ViRnJhbWUt
PmZyYW1lKCktPnNjcmlwdCgpLT5wcm94eSgpLT5jbGVhckZvckNsb3NlKCk7CiAKKyAgICBtX3dl
YkZyYW1lLT52aWV3SW1wbCgpLT53aWxsRGV0YWNoRG9jdW1lbnQobV93ZWJGcmFtZSk7CisKICAg
ICAvLyBBbGVydCB0aGUgY2xpZW50IHRoYXQgdGhlIGZyYW1lIGlzIGJlaW5nIGRldGFjaGVkLiBU
aGlzIGlzIHRoZSBsYXN0CiAgICAgLy8gY2hhbmNlIHdlIGhhdmUgdG8gY29tbXVuaWNhdGUgd2l0
aCB0aGUgY2xpZW50LgogICAgIGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkKQEAgLTEzODMsNiAr
MTM4NSw4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjp0cmFuc2l0aW9uVG8KIC8vIHdp
bGwgb2NjdXIuCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6dHJhbnNpdGlvblRvQ29tbWl0
dGVkRm9yTmV3UGFnZSgpCiB7CisgICAgbV93ZWJGcmFtZS0+dmlld0ltcGwoKS0+d2lsbERldGFj
aERvY3VtZW50KG1fd2ViRnJhbWUpOworCiAgICAgbWFrZURvY3VtZW50VmlldygpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lv
biA5ODI2MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA0MCw2ICsxMDQwLDQwIEBAIHZvaWQgV2ViVmlld0ltcGw6Ondp
bGxFbmRMaXZlUmVzaXplKCkKICAgICAgICAgcGx1Z2luQ29udGFpbmVyLT53aWxsRW5kTGl2ZVJl
c2l6ZSgpOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjp3aWxsRW50ZXJGdWxsU2NyZWVuKCkKK3sK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQp
CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdFdpbGxFbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworI2VuZGlm
Cit9CisKK3ZvaWQgV2ViVmlld0ltcGw6OmRpZEVudGVyRnVsbFNjcmVlbigpCit7CisjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAgICAg
ICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFbnRlckZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworI2VuZGlmCit9CisKK3Zv
aWQgV2ViVmlld0ltcGw6OndpbGxFeGl0RnVsbFNjcmVlbigpCit7CisjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQorICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAgICAgICBtX2Z1bGxT
Y3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViVmll
d0ltcGw6OmRpZEV4aXRGdWxsU2NyZWVuKCkKK3sKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQpIHsKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxl
bWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVs
bFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LmNsZWFy
KCk7CisgICAgfQorI2VuZGlmCit9CisKIHZvaWQgV2ViVmlld0ltcGw6OmFuaW1hdGUoZG91Ymxl
IGZyYW1lQmVnaW5UaW1lKQogewogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkK
QEAgLTExODIsNiArMTIxNiwyMyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpsb3NlQ29tcG9zaXRvckNv
bnRleHQoCiAjZW5kaWYKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6ZW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlmIChtX2Z1bGxTY3Jl
ZW5FbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jbGllbnQgJiYgbV9jbGll
bnQtPmVudGVyRnVsbFNjcmVlbigpKQorICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gZWxl
bWVudDsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdl
YkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQgPT0gbV9mdWxs
U2NyZWVuRWxlbWVudC5nZXQoKSk7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5leGl0RnVsbFNjcmVlbigpOworfQorCiBjb25zdCBXZWJJbnB1dEV2ZW50KiBXZWJWaWV3
SW1wbDo6bV9jdXJyZW50SW5wdXRFdmVudCA9IDA7CiAKIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRs
ZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgaW5wdXRFdmVudCkKQEAgLTIzODMsNiAr
MjQzNCwxNyBAQCB2b2lkIFdlYlZpZXc6OnJlbW92ZUFsbFVzZXJDb250ZW50KCkKICAgICBwYWdl
R3JvdXAtPnJlbW92ZUFsbFVzZXJDb250ZW50KCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6Ondp
bGxEZXRhY2hEb2N1bWVudChXZWJGcmFtZUltcGwqIGZyYW1lSW1wbCkKK3sKKyAgICBpZiAobV9m
dWxsU2NyZWVuRWxlbWVudCAmJiBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpID09IGZy
YW1lSW1wbC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSkgeworICAgICAgICAvLyBDbGVhciBlbGVtZW50
IGhlcmUsIHNvIHRoYXQgd2UgZG9uJ3QgYXR0ZW1wdCBmdXJ0aGVyIGNvbW11bmljYXRpb24KKyAg
ICAgICAgLy8gd2l0aCBpdCB3aGVuIHdlIHJlY2VpdmVzIGNhbGxzIHRvIHt3aWxsLGRpZH1FeGl0
RnVsbFNjcmVlbi4KKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC5jbGVhcigpOworICAgICAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudC0+ZXhpdEZ1bGxTY3JlZW4oKTsK
KyAgICB9Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OmRpZENvbW1pdExvYWQoYm9vbCogaXNOZXdO
YXZpZ2F0aW9uKQogewogICAgIGlmIChpc05ld05hdmlnYXRpb24pCkBAIC0yODIyLDE2ICsyODg0
LDQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVzZXRHZXN0dXJlUmVjb2duaXplcgogfQogI2VuZGlm
CiAKLXZvaWQgV2ViVmlld0ltcGw6OmV4aXRGdWxsc2NyZWVuKCkKLXsKLSNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcGFnZSgpLT5tYWluRnJhbWUo
KS0+ZG9jdW1lbnQoKTsKLSAgICBFbGVtZW50KiBmdWxsc2NyZWVuRWxlbWVudCA9IGRvY3VtZW50
LT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKTsKLSAgICBpZiAoIWZ1bGxzY3JlZW5F
bGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgZG9jdW1lbnQtPndlYmtpdFdpbGxFeGl0RnVs
bFNjcmVlbkZvckVsZW1lbnQoZnVsbHNjcmVlbkVsZW1lbnQpOwotICAgIGRvY3VtZW50LT53ZWJr
aXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoZnVsbHNjcmVlbkVsZW1lbnQpOwotI2VuZGlm
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiA5ODI2MikKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRMaXZlUmVzaXplKCk7CiAgICAg
dmlydHVhbCB2b2lkIHJlc2l6ZShjb25zdCBXZWJTaXplJik7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxFbmRMaXZlUmVzaXplKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxFbnRlckZ1bGxTY3JlZW4o
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJGdWxsU2NyZWVuKCk7CisgICAgdmlydHVhbCB2
b2lkIHdpbGxFeGl0RnVsbFNjcmVlbigpOworICAgIHZpcnR1YWwgdm9pZCBkaWRFeGl0RnVsbFNj
cmVlbigpOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7
CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJD
YW52YXMqLCBjb25zdCBXZWJSZWN0Jik7CkBAIC0yMjEsNyArMjI1LDYgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5hY3RpdmVCYWNrZ3Jv
dW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bmFjdGl2ZUZvcmVncm91bmRDb2xvcik7CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1DdXN0b21D
b250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rpb24pOwotICAgIHZpcnR1YWwgdm9pZCBleGl0
RnVsbHNjcmVlbigpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0Q2xpZW50CiAgICAgdmlydHVh
bCB2b2lkIGFuaW1hdGVBbmRMYXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKQEAgLTMwOSw2
ICszMTIsOCBAQCBwdWJsaWM6CiAgICAgLy8gS2V5Ym9hcmQgZXZlbnQgdG8gdGhlIFJpZ2h0IE1v
dXNlIGJ1dHRvbiBkb3duIGV2ZW50LgogICAgIGJvb2wgc2VuZENvbnRleHRNZW51RXZlbnQoY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogCisgICAgdm9pZCB3aWxsRGV0YWNoRG9jdW1lbnQoV2Vi
RnJhbWVJbXBsKik7CisKICAgICAvLyBOb3RpZmllcyB0aGUgV2ViVmlldyB0aGF0IGEgbG9hZCBo
YXMgYmVlbiBjb21taXR0ZWQuIGlzTmV3TmF2aWdhdGlvbgogICAgIC8vIHdpbGwgYmUgdHJ1ZSBp
ZiBhIG5ldyBzZXNzaW9uIGhpc3RvcnkgaXRlbSBzaG91bGQgYmUgY3JlYXRlZCBmb3IgdGhhdAog
ICAgIC8vIGxvYWQuCkBAIC00MTYsNiArNDIxLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb3Nl
Q29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKTsKIAorICAgIHZvaWQgZW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kik7CisgICAgdm9pZCBleGl0RnVsbFNjcmVl
bkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBXZWJWaWV3OyAgLy8gU28gV2ViVmlldzo6Q3JlYXRlIGNhbiBjYWxsIG91ciBjb25zdHJ1
Y3RvcgogICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8V2ViVmlld0ltcGw+OwpAQCAt
NTc1LDYgKzU4Myw5IEBAIHByaXZhdGU6CiAgICAgLy8gSWYgc2V0LCB0aGUgKHBsdWdpbikgbm9k
ZSB3aGljaCBoYXMgbW91c2UgY2FwdHVyZS4KICAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbV9t
b3VzZUNhcHR1cmVOb2RlOwogCisgICAgLy8gSWYgc2V0LCB0aGUgV2ViVmlldyBpcyBiZWluZyBk
aXNwbGF5ZWQgZnVsbHNjcmVlbiBmb3IgdGhpcyBlbGVtZW50LgorICAgIFJlZlB0cjxXZWJDb3Jl
OjpFbGVtZW50PiBtX2Z1bGxTY3JlZW5FbGVtZW50OworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogICAgIFdlYkNvcmU6OkludFJlY3QgbV9yb290TGF5ZXJTY3JvbGxEYW1hZ2U7
CiAgICAgT3duUHRyPFdlYkNvcmU6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdD4gbV9ub25Db21w
b3NpdGVkQ29udGVudEhvc3Q7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODYxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDExLTEwLTI3ICBEYXJpbiBGaXNoZXIgIDxk
YXJpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBJbXByb3ZlIGZ1bGxzY3Jl
ZW4gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MDQ3NworCisgICAgICAgIEltcGxlbWVudCBlbnRlci9leGl0RnVsbFNjcmVlbi4gIFRoZSBpbXBs
ZW1lbnRhdGlvbiBpcyBhc3luY2hyb25vdXMsCisgICAgICAgIHZpYSBwb3N0RGVsYXllZFRhc2ss
IHRvIHNpbXVsYXRlIGhvdyB0aGUgYnJvd3NlciBhY3R1YWxseSBiZWhhdmVzLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2Vi
Vmlld0hvc3Q6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJWaWV3SG9zdDo6ZXhpdEZ1
bGxTY3JlZW4pOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnNldEFkZHJlc3NCYXJVUkwpOgorICAg
ICAgICAoV2ViVmlld0hvc3Q6OmVudGVyRnVsbFNjcmVlbk5vdyk6CisgICAgICAgIChXZWJWaWV3
SG9zdDo6ZXhpdEZ1bGxTY3JlZW5Ob3cpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0Lmg6CisKIDIwMTEtMTAtMjcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFRlc3QgV0tCdW5kbGVQYWdlR2V0QmFja2luZ1NjYWxlRmFjdG9y
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3Bw
CShyZXZpc2lvbiA5ODI2MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg2LDYgKzc4NiwxNyBAQCB2b2lkIFdlYlZp
ZXdIb3N0OjpydW5Nb2RhbCgpCiAgICAgd2Via2l0X3N1cHBvcnQ6Ok1lc3NhZ2VMb29wU2V0TmVz
dGFibGVUYXNrc0FsbG93ZWQob2xkU3RhdGUpOwogfQogCitib29sIFdlYlZpZXdIb3N0OjplbnRl
ckZ1bGxTY3JlZW4oKQoreworICAgIHBvc3REZWxheWVkVGFzayhuZXcgSG9zdE1ldGhvZFRhc2so
dGhpcywgJldlYlZpZXdIb3N0OjplbnRlckZ1bGxTY3JlZW5Ob3cpLCAwKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6ZXhpdEZ1bGxTY3JlZW4oKQoreworICAgIHBv
c3REZWxheWVkVGFzayhuZXcgSG9zdE1ldGhvZFRhc2sodGhpcywgJldlYlZpZXdIb3N0OjpleGl0
RnVsbFNjcmVlbk5vdyksIDApOworfQorCiAvLyBXZWJGcmFtZUNsaWVudCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViUGx1
Z2luKiBXZWJWaWV3SG9zdDo6Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2Vi
UGx1Z2luUGFyYW1zJiBwYXJhbXMpCkBAIC0xNTA3LDYgKzE1MTgsMTggQEAgdm9pZCBXZWJWaWV3
SG9zdDo6c2V0QWRkcmVzc0JhclVSTChjb25zdAogICAgIC8vIE5vdGhpbmcgdG8gZG8gaW4gbGF5
b3V0IHRlc3QuCiB9CiAKK3ZvaWQgV2ViVmlld0hvc3Q6OmVudGVyRnVsbFNjcmVlbk5vdygpCit7
CisgICAgd2ViVmlldygpLT53aWxsRW50ZXJGdWxsU2NyZWVuKCk7CisgICAgd2ViVmlldygpLT5k
aWRFbnRlckZ1bGxTY3JlZW4oKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6ZXhpdEZ1bGxTY3Jl
ZW5Ob3coKQoreworICAgIHdlYlZpZXcoKS0+d2lsbEV4aXRGdWxsU2NyZWVuKCk7CisgICAgd2Vi
VmlldygpLT5kaWRFeGl0RnVsbFNjcmVlbigpOworfQorCiAvLyBQYWludGluZyBmdW5jdGlvbnMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIHZvaWQgV2ViVmlld0hvc3Q6OnVwZGF0ZVBhaW50UmVjdChjb25zdCBXZWJSZWN0JiByZWN0
KQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCShy
ZXZpc2lvbiA5ODI2MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsOCBAQCBjbGFzcyBXZWJWaWV3SG9z
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwCiAgICAgdmlydHVhbCB2b2lkIGNsb3NlV2lkZ2V0U29v
bigpOwogICAgIHZpcnR1YWwgdm9pZCBzaG93KFdlYktpdDo6V2ViTmF2aWdhdGlvblBvbGljeSk7
CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsKCk7CisgICAgdmlydHVhbCBib29sIGVudGVyRnVs
bFNjcmVlbigpOworICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbigpOwogICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJSZWN0IHdpbmRvd1JlY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0V2lu
ZG93UmVjdChjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2Vi
UmVjdCByb290V2luZG93UmVjdCgpOwpAQCAtMjUzLDYgKzI1NSw5IEBAIHByaXZhdGU6CiAgICAg
Ly8gU2hvdWxkIGJlIHVzZWQgdG8gdXBkYXRlIHRoZSB0ZXh0IG9mIHRoZSBVUkwgYmFyLgogICAg
IHZvaWQgc2V0QWRkcmVzc0JhclVSTChjb25zdCBXZWJLaXQ6OldlYlVSTCYpOwogCisgICAgdm9p
ZCBlbnRlckZ1bGxTY3JlZW5Ob3coKTsKKyAgICB2b2lkIGV4aXRGdWxsU2NyZWVuTm93KCk7CisK
ICAgICAvLyBJbiB0aGUgTWFjIGNvZGUsIHRoaXMgaXMgY2FsbGVkIHRvIHRyaWdnZXIgdGhlIGVu
ZCBvZiBhIHRlc3QgYWZ0ZXIgdGhlCiAgICAgLy8gcGFnZSBoYXMgZmluaXNoZWQgbG9hZGluZy4g
RnJvbSBoZXJlLCB3ZSBjYW4gZ2VuZXJhdGUgdGhlIGR1bXAgZm9yIHRoZQogICAgIC8vIHRlc3Qu
Cg==
</data>
<flag name="review"
          id="110923"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="110924"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114382</attachid>
            <date>2011-11-09 16:02:39 -0800</date>
            <delta_ts>2011-11-16 15:55:16 -0800</delta_ts>
            <desc>v1.5 patch</desc>
            <filename>fullscreen_5.txt</filename>
            <type>text/plain</type>
            <size>22211</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTE0OCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTEtMTAtMjQgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEltcHJvdmUgZnVsbHNjcmVlbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNDc3CisKKyAgICAgICAgTW92ZSBmdWxs
c2NyZWVuIGVudHJ5IHBvaW50cyBmcm9tIFdlYlZpZXcgdG8gV2ViV2lkZ2V0IHNpbmNlIHRoZXkg
YXJlCisgICAgICAgIGp1c3QgYWJvdXQgd2lkZ2V0IGdlb21ldHJ5LgorCisgICAgICAgIERlbGF5
IHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UgZXZlbnQgdW50aWwgd2Uga25vdyB0aGF0IHdlIGhhdmUg
ZW50ZXJlZAorICAgICAgICBmdWxsc2NyZWVuIG1vZGUuICBUaGlzIGlzIGFjY29tcGxpc2hlZCBi
eSBleHBhbmRpbmcgdGhlIFdlYktpdCBBUElzIHRvCisgICAgICAgIGRpZmZlcmVudGlhdGUgd2ls
bHtFbnRlcixFeGl0fSBmcm9tIGRpZHtFbnRlcixFeGl0fSBzdGF0ZSBjaGFuZ2VzLgorCisgICAg
ICAgIFdlYlZpZXdJbXBsIGlzIGZvcmNlZCB0byBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSByZXF1
ZXN0ZWQgZnVsbHNjcmVlbgorICAgICAgICBlbGVtZW50IHdoaWxlIHdlIGFyZSByZXF1ZXN0aW5n
IHRvIGVudGVyIGZ1bGxzY3JlZW4gbW9kZS4gIE9uY2UgaW4KKyAgICAgICAgZnVsbHNjcmVlbiBt
b2RlLCB3ZSBzd2l0Y2ggdG8ga2VlcGluZyBvbmx5IGEgcmVmZXJlbmNlIHRvIHRoZSBGcmFtZQor
ICAgICAgICBjb250YWluaW5nIHRoZSBmdWxsc2NyZWVuIGVsZW1lbnQsIHdoaWNoIHdlIGRyb3Ag
dXBvbiBleGl0aW5nCisgICAgICAgIGZ1bGxzY3JlZW4gbW9kZS4KKworICAgICAgICAqIHB1Ymxp
Yy9XZWJWaWV3Lmg6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAg
KiBwdWJsaWMvV2ViV2lkZ2V0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6d2lsbEVu
dGVyRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6ZGlkRW50ZXJGdWxs
U2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojp3aWxsRXhpdEZ1bGxTY3JlZW4p
OgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXQ6OmRpZEV4aXRGdWxsU2NyZWVuKToKKyAgICAg
ICAgKiBwdWJsaWMvV2ViV2lkZ2V0Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdl
dENsaWVudDo6ZW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Q2xp
ZW50OjpleGl0RnVsbFNjcmVlbik6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzdXBwb3J0c0Z1bGxzY3JlZW5G
b3JOb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6ZW50ZXJGdWxsc2Ny
ZWVuRm9yTm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmV4aXRGdWxs
c2NyZWVuRm9yTm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnN1cHBv
cnRzRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJ
bXBsOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21l
Q2xpZW50SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lsbEVudGVyRnVs
bFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRFbnRlckZ1bGxTY3Jl
ZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2lsbEV4aXRGdWxsU2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZEV4aXRGdWxsU2NyZWVuKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMS0xMS0wMiAgSm9uIExlZSAgPGpvbmxl
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgRXhwYW5kIERyYWdDb250cm9sbGVyIHRvIHByb3ZpZGUg
bW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJhZ2dpbmcgc2Vzc2lvbgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAkocmV2aXNpb24gOTk2MTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
OSwxMCArMzk5LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0luaXRpYWxTdGF0ZSkgeyB9CiAKIAotICAgIC8vIEZ1bGxzY3JlZW4gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
ICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbigpID0gMDsKLQogICAgIC8vIFRlc3Rpbmcg
ZnVuY3Rpb25hbGl0eSBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogICAgIC8vIFNpbXVsYXRlcyBhIGNvbXBvc2l0b3IgbG9zdCBjb250ZXh0LgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkocmV2
aXNpb24gOTk2MTkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMiwxMSArMjEyLDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBydW5Nb2RhbEJlZm9yZVVubG9hZERpYWxvZygKICAgICAgICAgV2ViRnJhbWUq
LCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IFdlYk5vZGUmKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IFdlYk5vZGUmKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGV4
aXRGdWxsc2NyZWVuKCkgeyB9CiAKICAgICAvLyBVSSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgJKHJldmlzaW9uIDk5NjE5KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJXZWJUZXh0SW5wdXRUeXBlLmgiCiAjaW5jbHVk
ZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogCisjZGVmaW5lIFdFQktJVF9IQVNfTkVXX0ZVTExTQ1JF
RU5fQVBJIDEKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYklucHV0RXZlbnQ7CkBA
IC02NywxOSArNjksMjcgQEAgcHVibGljOgogICAgIC8vIHdpbGxTdGFydExpdmVSZXNpemUuCiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCkgeyB9CiAKKyAgICAvLyBDYWxsZWQg
dG8gbm90aWZ5IHRoZSBXZWJXaWRnZXQgb2YgZW50ZXJpbmcvZXhpdGluZyBmdWxsc2NyZWVuIG1v
ZGUuIFRoZQorICAgIC8vIHJlc2l6ZSBtZXRob2QgbWF5IGJlIGNhbGxlZCBiZXR3ZWVuIHdpbGx7
RW50ZXIsRXhpdH1GdWxsU2NyZWVuIGFuZAorICAgIC8vIGRpZHtFbnRlcixFeGl0fUZ1bGxTY3Jl
ZW4uCisgICAgdmlydHVhbCB2b2lkIHdpbGxFbnRlckZ1bGxTY3JlZW4oKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkRW50ZXJGdWxsU2NyZWVuKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxF
eGl0RnVsbFNjcmVlbigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRFeGl0RnVsbFNjcmVlbigp
IHsgfQorCiAgICAgLy8gQ2FsbGVkIHRvIHVwZGF0ZSBpbXBlcmF0aXZlIGFuaW1hdGlvbiBzdGF0
ZS4gVGhpcyBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZQogICAgIC8vIHBhaW50LCBhbHRob3VnaCB0
aGUgY2xpZW50IGNhbiByYXRlLWxpbWl0IHRoZXNlIGNhbGxzLiBXaGVuCiAgICAgLy8gZnJhbWVC
ZWdpblRpbWUgaXMgMC4wLCB0aGUgV2ViV2lkZ2V0IHdpbGwgZGV0ZXJtaW5lIHRoZSBmcmFtZSBi
ZWdpbiB0aW1lCiAgICAgLy8gaXRzZWxmLgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJs
ZSBmcmFtZUJlZ2luVGltZSkgeyB9CiAKLSAgICAvLyBDYWxsZWQgdG8gbGF5b3V0IHRoZSBXZWJX
aWRnZXQuICBUaGlzIE1VU1QgYmUgY2FsbGVkIGJlZm9yZSBQYWludCwKKyAgICAvLyBDYWxsZWQg
dG8gbGF5b3V0IHRoZSBXZWJXaWRnZXQuIFRoaXMgTVVTVCBiZSBjYWxsZWQgYmVmb3JlIFBhaW50
LAogICAgIC8vIGFuZCBpdCBtYXkgcmVzdWx0IGluIGNhbGxzIHRvIFdlYldpZGdldENsaWVudDo6
ZGlkSW52YWxpZGF0ZVJlY3QuCiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIHsgfQogCiAgICAg
Ly8gQ2FsbGVkIHRvIHBhaW50IHRoZSByZWN0YW5ndWxhciByZWdpb24gd2l0aGluIHRoZSBXZWJX
aWRnZXQKICAgICAvLyBvbnRvIHRoZSBzcGVjaWZpZWQgY2FudmFzIGF0ICh2aWV3UG9ydC54LHZp
ZXdQb3J0LnkpLiBZb3UgTVVTVCBjYWxsCi0gICAgLy8gTGF5b3V0IGJlZm9yZSBjYWxsaW5nIHRo
aXMgbWV0aG9kLiAgSXQgaXMgb2theSB0byBjYWxsIHBhaW50CisgICAgLy8gTGF5b3V0IGJlZm9y
ZSBjYWxsaW5nIHRoaXMgbWV0aG9kLiBJdCBpcyBva2F5IHRvIGNhbGwgcGFpbnQKICAgICAvLyBt
dWx0aXBsZSB0aW1lcyBvbmNlIGxheW91dCBoYXMgYmVlbiBjYWxsZWQsIGFzc3VtaW5nIG5vIG90
aGVyCiAgICAgLy8gY2hhbmdlcyBhcmUgbWFkZSB0byB0aGUgV2ViV2lkZ2V0IChlLmcuLCBvbmNl
IGV2ZW50cyBhcmUKICAgICAvLyBwcm9jZXNzZWQsIGl0IHNob3VsZCBiZSBhc3N1bWVkIHRoYXQg
YW5vdGhlciBjYWxsIHRvIGxheW91dCBpcwpAQCAtODcsOCArOTcsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmIHZpZXdQb3J0KSB7
IH0KIAogICAgIC8vIEluIG5vbi10aHJlYWRlZCBjb21wb3NpdGluZyBtb2RlLCB0cmlnZ2VycyBj
b21wb3NpdGluZyBvZiB0aGUgY3VycmVudAotICAgIC8vIGxheWVycyBvbnRvIHRoZSBzY3JlZW4u
IFlvdSBNVVNUIGNhbGwgTGF5b3V0IGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLCBmb3IgdGhl
IHNhbWUKLSAgICAvLyByZWFzb25zIGRlc2NyaWJlZCBpbiB0aGUgcGFpbnQgbWV0aG9kIGFib3Zl
CisgICAgLy8gbGF5ZXJzIG9udG8gdGhlIHNjcmVlbi4gWW91IE1VU1QgY2FsbCBMYXlvdXQgYmVm
b3JlIGNhbGxpbmcgdGhpcyBtZXRob2QsCisgICAgLy8gZm9yIHRoZSBzYW1lIHJlYXNvbnMgZGVz
Y3JpYmVkIGluIHRoZSBwYWludCBtZXRob2QgYWJvdmUKICAgICAvLwogICAgIC8vIEluIHRocmVh
ZGVkIGNvbXBvc2l0aW5nIG1vZGUsIGluZGljYXRlcyB0aGF0IHRoZSB3aWRnZXQgc2hvdWxkIHVw
ZGF0ZQogICAgIC8vIGl0c2VsZiwgZm9yIGV4YW1wbGUgZHVlIHRvIHdpbmRvdyBkYW1hZ2UuIFRo
ZSByZWRyYXcgd2lsbCBiZWdpbgpAQCAtMTAxLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICAvLyBv
biByZWNlaXZpbmcgdGhpcyBtZXNzYWdlCiAgICAgdmlydHVhbCB2b2lkIHRoZW1lQ2hhbmdlZCgp
IHsgfQogCi0gICAgLy8gQ2FsbGVkIHRvIGluZm9ybSB0aGUgV2ViV2lkZ2V0IG9mIGFuIGlucHV0
IGV2ZW50LiAgUmV0dXJucyB0cnVlIGlmCisgICAgLy8gQ2FsbGVkIHRvIGluZm9ybSB0aGUgV2Vi
V2lkZ2V0IG9mIGFuIGlucHV0IGV2ZW50LiBSZXR1cm5zIHRydWUgaWYKICAgICAvLyB0aGUgZXZl
bnQgaGFzIGJlZW4gcHJvY2Vzc2VkLCBmYWxzZSBvdGhlcndpc2UuCiAgICAgdmlydHVhbCBib29s
IGhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENs
aWVudC5oCShyZXZpc2lvbiA5OTYxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYldpZGdldENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwxNCBAQCBwdWJs
aWM6CiAgICAgLy8gY2xvc2VkLgogICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbCgpIHsgfQogCisg
ICAgLy8gQ2FsbGVkIHRvIGVudGVyL2V4aXQgZnVsbHNjcmVlbiBtb2RlLiBJZiBlbnRlckZ1bGxT
Y3JlZW4gcmV0dXJucyB0cnVlLAorICAgIC8vIHRoZW4gV2ViV2lkZ2V0Ojp7d2lsbCxEaWR9RW50
ZXJGdWxsU2NyZWVuIHNob3VsZCBib3VuZCByZXNpemluZyB0aGUKKyAgICAvLyBXZWJXaWRnZXQg
aW50byBmdWxsc2NyZWVuIG1vZGUuIFNpbWlsYXJseSwgd2hlbiBleGl0RnVsbFNjcmVlbiBpcwor
ICAgIC8vIGNhbGxlZCwgV2ViV2lkZ2V0Ojp7d2lsbCxEaWR9RXhpdEZ1bGxTY3JlZW4gc2hvdWxk
IGJvdW5kIHJlc2l6aW5nIHRoZQorICAgIC8vIFdlYldpZGdldCBvdXQgb2YgZnVsbHNjcmVlbiBt
b2RlLgorICAgIHZpcnR1YWwgYm9vbCBlbnRlckZ1bGxTY3JlZW4oKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbigpIHsgfQorCiAgICAgLy8gQ2FsbGVk
IHRvIGdldC9zZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB3aWRnZXQgaW4gc2NyZWVuIGNvb3JkaW5h
dGVzLgogICAgIHZpcnR1YWwgV2ViUmVjdCB3aW5kb3dSZWN0KCkgeyByZXR1cm4gV2ViUmVjdCgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgV2ViUmVjdCYpIHsgfQpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHAJKHJldmlzaW9uIDk5NjE5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5MSw0OCArODkxLDM1IEBAIENocm9t
ZUNsaWVudDo6Q29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgQ2gKIH0KICNlbmRpZgogCi1ib29sIENo
cm9tZUNsaWVudEltcGw6OnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgV2ViQ29yZTo6
Tm9kZSogbm9kZSkKK2Jvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9y
Tm9kZShjb25zdCBOb2RlKiBub2RlKQogewotICAgIGlmIChtX3dlYlZpZXctPmNsaWVudCgpICYm
IG5vZGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjp2aWRlb1RhZykpCi0gICAgICAg
IHJldHVybiBtX3dlYlZpZXctPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW4oKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZW50ZXJGdWxsc2NyZWVu
Rm9yTm9kZShXZWJDb3JlOjpOb2RlKiBub2RlKQordm9pZCBDaHJvbWVDbGllbnRJbXBsOjplbnRl
ckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG1fd2ViVmlldy0+Y2xp
ZW50KCkpCi0gICAgICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZvck5v
ZGUoV2ViTm9kZShub2RlKSk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQg
Q2hyb21lQ2xpZW50SW1wbDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqIG5v
ZGUpCit2b2lkIENocm9tZUNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBu
b2RlKQogewotICAgIGlmIChtX3dlYlZpZXctPmNsaWVudCgpKQotICAgICAgICBtX3dlYlZpZXct
PmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZvck5vZGUoV2ViTm9kZShub2RlKSk7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi1ib29s
IENocm9tZUNsaWVudEltcGw6OnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQoY29uc3QgV2Vi
Q29yZTo6RWxlbWVudCogZWxlbWVudCwgYm9vbCB3aXRoS2V5Ym9hcmQpCitib29sIENocm9tZUNs
aWVudEltcGw6OnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxl
bWVudCwgYm9vbCB3aXRoS2V5Ym9hcmQpCiB7Ci0gICAgcmV0dXJuIG1fd2ViVmlldy0+cGFnZSgp
LT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpOworICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIENocm9tZUNsaWVudEltcGw6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29y
ZTo6RWxlbWVudCogZWxlbWVudCkKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewotICAgIC8vIEZJWE1FOiBNYWtlIHRo
aXMgY29kZSBzdXBwb3J0IGFzeW5jaHJvbm91cyBlbWJlZGRlciBpbXBsZW1lbnRhdGlvbnMgb2YK
LSAgICAvLyBlbnRlckZ1bGxzY3JlZW5Gb3JFbGVtZW50KCkgYnkgcmVzdHJ1Y3R1cmluZyB0aGlz
IGNvZGUgdG8gd2FpdCBmb3IgYW4KLSAgICAvLyBBQ0suCi0gICAgLy8gRklYTUU6IFdlIG1heSBu
ZWVkIHRvIGNhbGwgdGhlc2Ugc29tZXBsYWNlIGVsc2Ugd2hlbiB3aW5kb3cgcmVzaXplcy4KLSAg
ICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChlbGVtZW50KTsKLSAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5lbnRlckZ1bGxzY3JlZW4oKTsK
LSAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KGVsZW1lbnQpOworICAgIG1fd2ViVmlldy0+ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChl
bGVtZW50KTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpleGl0RnVsbFNjcmVlbkZvckVs
ZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6
ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgLy8gRklY
TUU6IFdlIG1heSBuZWVkIHRvIGNhbGwgdGhlc2Ugc29tZXBsYWNlIGVsc2Ugd2hlbiB3aW5kb3cg
cmVzaXplcy4KLSAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxsRXhpdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwotICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmV4aXRGdWxs
c2NyZWVuKCk7Ci0gICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlkRXhpdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworICAgIG1fd2ViVmlldy0+ZXhpdEZ1bGxTY3JlZW5Gb3JF
bGVtZW50KGVsZW1lbnQpOwogfQogCiB2b2lkIENocm9tZUNsaWVudEltcGw6OmZ1bGxTY3JlZW5S
ZW5kZXJlckNoYW5nZWQoUmVuZGVyQm94KikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDk5NjE5KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU0LDYgKzEw
NTQsNjIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6d2lsbEVuZExpdmVSZXNpemUoKQogICAgICAgICBw
bHVnaW5Db250YWluZXItPndpbGxFbmRMaXZlUmVzaXplKCk7CiB9CiAKK3ZvaWQgV2ViVmlld0lt
cGw6OndpbGxFbnRlckZ1bGxTY3JlZW4oKQoreworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
KyAgICBpZiAobV9wcm92aXNpb25hbEZ1bGxTY3JlZW5FbGVtZW50KSB7CisgICAgICAgIC8vIEVu
c3VyZSB0aGF0IHRoaXMgZWxlbWVudCdzIGRvY3VtZW50IGlzIHN0aWxsIGF0dGFjaGVkLgorICAg
ICAgICBEb2N1bWVudCogZG9jID0gbV9wcm92aXNpb25hbEZ1bGxTY3JlZW5FbGVtZW50LT5kb2N1
bWVudCgpOworICAgICAgICBpZiAoZG9jLT5mcmFtZSgpKSB7CisgICAgICAgICAgICBkb2MtPndl
YmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fcHJvdmlzaW9uYWxGdWxsU2NyZWVu
RWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5GcmFtZSA9IGRvYy0+ZnJh
bWUoKTsKKyAgICAgICAgfQorICAgICAgICBtX3Byb3Zpc2lvbmFsRnVsbFNjcmVlbkVsZW1lbnQu
Y2xlYXIoKTsKKyAgICB9CisjZW5kaWYKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6ZGlkRW50ZXJG
dWxsU2NyZWVuKCkKK3sKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgaWYgKCFtX2Z1
bGxTY3JlZW5GcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKERvY3VtZW50KiBkb2Mg
PSBtX2Z1bGxTY3JlZW5GcmFtZS0+ZG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoZG9jLT53ZWJr
aXRJc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgICAgIGRvYy0+d2Via2l0RGlkRW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudCgwKTsKKyAgICB9CisjZW5kaWYKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6
d2lsbEV4aXRGdWxsU2NyZWVuKCkKK3sKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAg
aWYgKCFtX2Z1bGxTY3JlZW5GcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKERvY3Vt
ZW50KiBkb2MgPSBtX2Z1bGxTY3JlZW5GcmFtZS0+ZG9jdW1lbnQoKSkgeworICAgICAgICBpZiAo
ZG9jLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgICAgIGRvYy0+d2Via2l0V2lsbEV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudCgwKTsKKyAgICB9CisjZW5kaWYKK30KKwordm9pZCBXZWJW
aWV3SW1wbDo6ZGlkRXhpdEZ1bGxTY3JlZW4oKQoreworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKKyAgICBpZiAoIW1fZnVsbFNjcmVlbkZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoRG9jdW1lbnQqIGRvYyA9IG1fZnVsbFNjcmVlbkZyYW1lLT5kb2N1bWVudCgpKSB7CisgICAg
ICAgIGlmIChkb2MtPndlYmtpdElzRnVsbFNjcmVlbigpKQorICAgICAgICAgICAgZG9jLT53ZWJr
aXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoMCk7CisgICAgfQorCisgICAgbV9mdWxsU2Ny
ZWVuRnJhbWUuY2xlYXIoKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlZpZXdJbXBsOjphbmltYXRl
KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKIHsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUUpCkBAIC0xMTk2LDYgKzEyNTIsMzAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6bG9zZUNvbXBv
c2l0b3JDb250ZXh0KAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmVudGVyRnVsbFNj
cmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAobV9w
cm92aXNpb25hbEZ1bGxTY3JlZW5FbGVtZW50KSB7CisgICAgICAgIG1fcHJvdmlzaW9uYWxGdWxs
U2NyZWVuRWxlbWVudCA9IGVsZW1lbnQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAobV9mdWxsU2NyZWVuRnJhbWUpIHsKKyAgICAgICAgbV9wcm92aXNpb25hbEZ1bGxTY3JlZW5F
bGVtZW50ID0gZWxlbWVudDsKKyAgICAgICAgd2lsbEVudGVyRnVsbFNjcmVlbigpOworICAgICAg
ICBkaWRFbnRlckZ1bGxTY3JlZW4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChtX2NsaWVudCAmJiBtX2NsaWVudC0+ZW50ZXJGdWxsU2NyZWVuKCkpCisgICAgICAgIG1fcHJv
dmlzaW9uYWxGdWxsU2NyZWVuRWxlbWVudCA9IGVsZW1lbnQ7Cit9CisKK3ZvaWQgV2ViVmlld0lt
cGw6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQor
eworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmV4aXRGdWxsU2NyZWVuKCk7
Cit9CisKIGNvbnN0IFdlYklucHV0RXZlbnQqIFdlYlZpZXdJbXBsOjptX2N1cnJlbnRJbnB1dEV2
ZW50ID0gMDsKIAogYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJ
bnB1dEV2ZW50JiBpbnB1dEV2ZW50KQpAQCAtMjgxMiwxNiArMjg5Miw0IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnJlc2V0R2VzdHVyZVJlY29nbml6ZXIKIH0KICNlbmRpZgogCi12b2lkIFdlYlZpZXdJ
bXBsOjpleGl0RnVsbHNjcmVlbigpCi17Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCk7Ci0g
ICAgRWxlbWVudCogZnVsbHNjcmVlbkVsZW1lbnQgPSBkb2N1bWVudC0+d2Via2l0Q3VycmVudEZ1
bGxTY3JlZW5FbGVtZW50KCk7Ci0gICAgaWYgKCFmdWxsc2NyZWVuRWxlbWVudCkKLSAgICAgICAg
cmV0dXJuOwotICAgIGRvY3VtZW50LT53ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KGZ1bGxzY3JlZW5FbGVtZW50KTsKLSAgICBkb2N1bWVudC0+d2Via2l0RGlkRXhpdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KGZ1bGxzY3JlZW5FbGVtZW50KTsKLSNlbmRpZgotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAkocmV2aXNpb24gOTk2MTkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDEwIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogICAgIHZpcnR1YWwgdm9pZCByZXNp
emUoY29uc3QgV2ViU2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgp
OworICAgIHZpcnR1YWwgdm9pZCB3aWxsRW50ZXJGdWxsU2NyZWVuKCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZEVudGVyRnVsbFNjcmVlbigpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhpdEZ1bGxT
Y3JlZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRXhpdEZ1bGxTY3JlZW4oKTsKICAgICB2aXJ0
dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUgZnJhbWVCZWdpblRpbWUpOwogICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgY29uc3QgV2Vi
UmVjdCYpOwpAQCAtMjE3LDcgKzIyMSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluYWN0aXZlQmFja2dyb3VuZENvbG9yLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5hY3RpdmVGb3JlZ3JvdW5k
Q29sb3IpOwogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24o
dW5zaWduZWQgYWN0aW9uKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKIAog
ICAgIC8vIENDTGF5ZXJUcmVlSG9zdENsaWVudAogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5k
TGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7CkBAIC00MTYsNiArNDE5LDkgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRpbWVzKTsKIAorICAg
IHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kik7CisgICAg
dm9pZCBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopOworCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJWaWV3OyAgLy8gU28gV2ViVmlldzo6Q3JlYXRlIGNh
biBjYWxsIG91ciBjb25zdHJ1Y3RvcgogICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8
V2ViVmlld0ltcGw+OwpAQCAtNTc1LDYgKzU4MSwxMCBAQCBwcml2YXRlOgogICAgIC8vIElmIHNl
dCwgdGhlIChwbHVnaW4pIG5vZGUgd2hpY2ggaGFzIG1vdXNlIGNhcHR1cmUuCiAgICAgUmVmUHRy
PFdlYkNvcmU6Ok5vZGU+IG1fbW91c2VDYXB0dXJlTm9kZTsKIAorICAgIC8vIElmIHNldCwgdGhl
IFdlYlZpZXcgaXMgYmVpbmcgZGlzcGxheWVkIGZ1bGxzY3JlZW4gZm9yIHRoaXMgZWxlbWVudC4K
KyAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gbV9wcm92aXNpb25hbEZ1bGxTY3JlZW5FbGVt
ZW50OworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gbV9mdWxsU2NyZWVuRnJhbWU7CisKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3Jv
b3RMYXllclNjcm9sbERhbWFnZTsKICAgICBPd25QdHI8V2ViQ29yZTo6Tm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0PiBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDsKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MTQ4KQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMTAt
MjcgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEltcHJvdmUgZnVsbHNjcmVlbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcwNDc3CisKKyAgICAgICAgSW1wbGVtZW50IGVudGVyL2V4aXRG
dWxsU2NyZWVuLiAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGFzeW5jaHJvbm91cywKKyAgICAgICAg
dmlhIHBvc3REZWxheWVkVGFzaywgdG8gc2ltdWxhdGUgaG93IHRoZSBicm93c2VyIGFjdHVhbGx5
IGJlaGF2ZXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6ZW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAg
KFdlYlZpZXdIb3N0OjpleGl0RnVsbFNjcmVlbik6CisgICAgICAgIChXZWJWaWV3SG9zdDo6c2V0
QWRkcmVzc0JhclVSTCk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6ZW50ZXJGdWxsU2NyZWVuTm93
KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpleGl0RnVsbFNjcmVlbk5vdyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKwogMjAxMS0xMS0wMiAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gW0RS
VF0gdHRmLWxpYmVyYXRpb24gZm9udHMgbW92ZWQgdG8gYSBuZXcgbG9jYXRpb24gKGluIERlYmlh
bikKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5j
cHAJKHJldmlzaW9uIDk5NjE5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODYsNiArNzg2LDE3IEBAIHZvaWQgV2Vi
Vmlld0hvc3Q6OnJ1bk1vZGFsKCkKICAgICB3ZWJraXRfc3VwcG9ydDo6TWVzc2FnZUxvb3BTZXRO
ZXN0YWJsZVRhc2tzQWxsb3dlZChvbGRTdGF0ZSk7CiB9CiAKK2Jvb2wgV2ViVmlld0hvc3Q6OmVu
dGVyRnVsbFNjcmVlbigpCit7CisgICAgcG9zdERlbGF5ZWRUYXNrKG5ldyBIb3N0TWV0aG9kVGFz
ayh0aGlzLCAmV2ViVmlld0hvc3Q6OmVudGVyRnVsbFNjcmVlbk5vdyksIDApOworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpleGl0RnVsbFNjcmVlbigpCit7CisgICAg
cG9zdERlbGF5ZWRUYXNrKG5ldyBIb3N0TWV0aG9kVGFzayh0aGlzLCAmV2ViVmlld0hvc3Q6OmV4
aXRGdWxsU2NyZWVuTm93KSwgMCk7Cit9CisKIC8vIFdlYkZyYW1lQ2xpZW50IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJQ
bHVnaW4qIFdlYlZpZXdIb3N0OjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBX
ZWJQbHVnaW5QYXJhbXMmIHBhcmFtcykKQEAgLTE1MTMsNiArMTUyNCwxOCBAQCB2b2lkIFdlYlZp
ZXdIb3N0OjpzZXRBZGRyZXNzQmFyVVJMKGNvbnN0CiAgICAgLy8gTm90aGluZyB0byBkbyBpbiBs
YXlvdXQgdGVzdC4KIH0KIAordm9pZCBXZWJWaWV3SG9zdDo6ZW50ZXJGdWxsU2NyZWVuTm93KCkK
K3sKKyAgICB3ZWJWaWV3KCktPndpbGxFbnRlckZ1bGxTY3JlZW4oKTsKKyAgICB3ZWJWaWV3KCkt
PmRpZEVudGVyRnVsbFNjcmVlbigpOworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpleGl0RnVsbFNj
cmVlbk5vdygpCit7CisgICAgd2ViVmlldygpLT53aWxsRXhpdEZ1bGxTY3JlZW4oKTsKKyAgICB3
ZWJWaWV3KCktPmRpZEV4aXRGdWxsU2NyZWVuKCk7Cit9CisKIC8vIFBhaW50aW5nIGZ1bmN0aW9u
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogdm9pZCBXZWJWaWV3SG9zdDo6dXBkYXRlUGFpbnRSZWN0KGNvbnN0IFdlYlJlY3QmIHJl
Y3QpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgJ
KHJldmlzaW9uIDk5NjE5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2Myw4IEBAIGNsYXNzIFdlYlZpZXdI
b3N0IDogcHVibGljIFdlYktpdDo6V2ViU3AKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaWRnZXRT
b29uKCk7CiAgICAgdmlydHVhbCB2b2lkIHNob3coV2ViS2l0OjpXZWJOYXZpZ2F0aW9uUG9saWN5
KTsKICAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWwoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZW50ZXJG
dWxsU2NyZWVuKCk7CisgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuKCk7CiAgICAgdmly
dHVhbCBXZWJLaXQ6OldlYlJlY3Qgd2luZG93UmVjdCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRX
aW5kb3dSZWN0KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwogICAgIHZpcnR1YWwgV2ViS2l0OjpX
ZWJSZWN0IHJvb3RXaW5kb3dSZWN0KCk7CkBAIC0yNTUsNiArMjU3LDkgQEAgcHJpdmF0ZToKICAg
ICAvLyBTaG91bGQgYmUgdXNlZCB0byB1cGRhdGUgdGhlIHRleHQgb2YgdGhlIFVSTCBiYXIuCiAg
ICAgdm9pZCBzZXRBZGRyZXNzQmFyVVJMKGNvbnN0IFdlYktpdDo6V2ViVVJMJik7CiAKKyAgICB2
b2lkIGVudGVyRnVsbFNjcmVlbk5vdygpOworICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW5Ob3coKTsK
KwogICAgIC8vIEluIHRoZSBNYWMgY29kZSwgdGhpcyBpcyBjYWxsZWQgdG8gdHJpZ2dlciB0aGUg
ZW5kIG9mIGEgdGVzdCBhZnRlciB0aGUKICAgICAvLyBwYWdlIGhhcyBmaW5pc2hlZCBsb2FkaW5n
LiBGcm9tIGhlcmUsIHdlIGNhbiBnZW5lcmF0ZSB0aGUgZHVtcCBmb3IgdGhlCiAgICAgLy8gdGVz
dC4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5Nzc0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEtMDkgIERhcmluIEZpc2hlciAg
PGRhcmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIGl0IE9LIHRvIHN3aXRjaCBpbiBh
bmQgb3V0IG9mIGZ1bGxzY3JlZW4gbW9kZSBhc3luY2hyb25vdXNseS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNDc3CisKKyAgICAgICAgKiBmdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanM6CisgICAgICAgIChydW5XaXRoS2V5RG93bik6IENh
bGwgcmVtb3ZlRXZlbnRMaXN0ZW5lciBzbyB0aGF0IHdlIG11bHRpcGxlIGNhbGxzCisgICAgICAg
IHRvIHJ1bldpdGhLZXlEb3duKGZuKSBkb24ndCByZXN1bHQgaW4gZHVwbGljYXRlIGZ1bmN0aW9u
IGNhbGxzLgorCisgICAgICAgICogZnVsbHNjcmVlbi9wYXJlbnQtZmxvdy1pbmxpbmUtd2l0aC1i
bG9jay1jaGlsZC5odG1sOiBJdCBzaG91bGQgYmUgT0sKKyAgICAgICAgaWYgY2FuY2VsbGluZyBm
dWxsc2NyZWVuIG1vZGUgY29tcGxldGVzIGFzeW5jaHJvbm91c2x5LgorCiAyMDExLTExLTA5ICBL
ZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVc2UgZHVtcEFz
VGV4dCgpIHRvIGF2b2lkIGFuIGltYWdlIHJlc3VsdCBiZWluZyBnZW5lcmF0ZWQKSW5kZXg6IExh
eW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMJKHJldmlzaW9uIDk5NjE5
KQorKysgTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xMyw4ICsxMywxNCBAQCBmdW5jdGlvbiBydW5XaXRoS2V5RG93bihmbikKIHsK
ICAgICAvLyBGSVhNRTogV0tUUiBkb2VzIG5vdCB5ZXQgc3VwcG9ydCB0aGUga2V5RG93bigpIG1l
c3NhZ2UuICBEbyBhIG1vdXNlRG93biBoZXJlCiAgICAgLy8gaW5zdGVhZCB1bnRpbCBrZXlEb3du
IHN1cHBvcnQgaXMgYWRkZWQuCi0JdmFyIGV2ZW50TmFtZSA9ICF3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIgfHwgZXZlbnRTZW5kZXIua2V5RG93biA/ICdrZXlwcmVzcycgOiAnbW91c2Vkb3du
JwotICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jdGlvbigpIHsg
Zm4oKTsgfSwgZmFsc2UpOworICAgIHZhciBldmVudE5hbWUgPSAhd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyIHx8IGV2ZW50U2VuZGVyLmtleURvd24gPyAna2V5cHJlc3MnIDogJ21vdXNlZG93
bicKKworICAgIGZ1bmN0aW9uIHRodW5rKCkgeworICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZSwgdGh1bmssIGZhbHNlKTsKKyAgICAgICAgZm4oKTsKKyAgICB9
CisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRodW5rLCBmYWxzZSk7
CisKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAgIGlmIChl
dmVudFNlbmRlci5rZXlEb3duKQogICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiICIs
IFtdKTsKQEAgLTE0OCw0ICsxNTQsNCBAQCBmdW5jdGlvbiBjb25zb2xlV3JpdGUodGV4dCkKICAg
ICBpZiAodGVzdEVuZGVkKQogICAgICAgICByZXR1cm47CiAgICAgbG9nQ29uc29sZSgpLmlubmVy
SFRNTCArPSB0ZXh0ICsgIjxicj4iOwotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30K
SW5kZXg6IExheW91dFRlc3RzL2Z1bGxzY3JlZW4vcGFyZW50LWZsb3ctaW5saW5lLXdpdGgtYmxv
Y2stY2hpbGQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL3BhcmVu
dC1mbG93LWlubGluZS13aXRoLWJsb2NrLWNoaWxkLmh0bWwJKHJldmlzaW9uIDk5NjE5KQorKysg
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9wYXJlbnQtZmxvdy1pbmxpbmUtd2l0aC1ibG9jay1jaGls
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw2ICsxNCwxNSBAQCBib2R5IHsKICAgICBpZiAo
IndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuIiBpbiBFbGVtZW50LnByb3RvdHlwZSkgewogICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSAKICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICB2YXIgY2FsbGJhY2s7Cisg
ICAgICAgIHZhciBmdWxsc2NyZWVuQ2hhbmdlZCA9IGZ1bmN0aW9uKGV2ZW50KQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICAgICAgY2FsbGJhY2soZXZl
bnQpCisgICAgICAgIH07CisgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtp
dGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdWxsc2NyZWVuQ2hhbmdlZCk7CisKICAgICAgICAgZG9jdW1l
bnQuYm9keS5vZmZzZXRUb3A7CiAgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2MyJyk7CiAgICAgICAgIHZhciBkaXYgPSBzcGFuLnBhcmVudE5vZGU7CkBAIC0yMSwx
MyArMzAsMTUgQEAgYm9keSB7CiAgICAgICAgIHZhciBzcGFuRW50ZXJlZEZ1bGxTY3JlZW4gPSBm
dW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAg
ICAgICAgICAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNjcmVl
bigpOwotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAg
ICAgICAgICAgIH0sIDApOwogICAgICAgICB9OwogCi0gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBzcGFuRW50ZXJlZEZ1bGxTY3JlZW4p
OworICAgICAgICBjYWxsYmFjayA9IHNwYW5FbnRlcmVkRnVsbFNjcmVlbjsKIAogICAgICAgICBk
b2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgc3Bhbi53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOwo=
</data>
<flag name="review"
          id="113322"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="114389"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>