<?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>79500</bug_id>
          
          <creation_ts>2012-02-24 09:32:16 -0800</creation_ts>
          <short_desc>[GTK] Add support for window.showModalDialog in WebKit2GTK+</short_desc>
          <delta_ts>2012-06-21 01:08:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>79496</dependson>
    
    <dependson>79499</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Mario Sanchez Prada">mario</assigned_to>
          <cc>andersca</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>joone.hur</cc>
    
    <cc>mrobinson</cc>
    
    <cc>philn</cc>
    
    <cc>pnormand</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>564385</commentid>
    <comment_count>0</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-02-24 09:32:16 -0800</bug_when>
    <thetext>This would require implementing runModal feature in the WebKitUIClient, emitting a &apos;run-as-modal&apos; signal from the WebKitWebView object and creating a new mainloop there (if the signal is handled) to block user interaction in the original window (the opener) when the modal dialog is showing. See bug 53600 for a similar case in WebKit1.

I&apos;m setting this bug as depending on bug 79496 and bug 79499 because I&apos;m assuming that we have the following issues fixed for writing the patch (which I&apos;ll be attaching right after filing this bug):

  - Support for GMainLoop and GMainContext in GRefPtr
  - Support for nested event loops in RunLoop [*]

[*] We need this for the webprocess not to die after closing a modal dialog (see bug 79499 for more details), but this is different from the other nested loop that we would be adding with the patch for this bug, since this one will be in the UI process and will take care of using user interaction with the opener window mainly. So yes, it seems like we need both, one in the Web Process (bug 79499) and the other one in the UI process (this bug).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564391</commentid>
    <comment_count>1</comment_count>
      <attachid>128750</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-02-24 09:43:11 -0800</bug_when>
    <thetext>Created attachment 128750
Patch proposal + Unit test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564394</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2012-02-24 09:45:24 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565474</commentid>
    <comment_count>3</comment_count>
      <attachid>128750</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-27 01:45:50 -0800</bug_when>
    <thetext>Comment on attachment 128750
Patch proposal + Unit test

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:141
&gt; +    webkitWebViewRunAsModalPage(WEBKIT_WEB_VIEW(clientInfo));

Why &apos;Page&apos;? We usually use webkitWebViewNameOfTheSignal() so this would be webkitWebViewRunAsModal().

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:497
&gt; +     * Emitted when JavaScript code calls
&gt; +     * &lt;function&gt;window.showModalDialog&lt;/function&gt;. If this signal is
&gt; +     * handled (returns %TRUE), a new mainloop will be created and run
&gt; +     * until the current webview is finalized.
&gt; +     *
&gt; +     * Returns: %TRUE to stop other handlers from being invoked for the event.
&gt; +     *    %FALSE to propagate the event further.

We have a problem with this approach. The web process runs the nested loop unconditionally unless canRunModal is false. canRunModal is a page initialization parameter, so when this signal is emitted it&apos;s too late to decide, and the nested main loop is already running in the web process. Since this signal can only be emitted once per web view (the view runs as modal until it&apos;s destroyed) we could use a construct property to be able to enable/disable modal views on every web view. Avoiding a modal view is something that you typically want to do globally or at least per view, so it doesn&apos;t need to be decided when the signal is emitted. We can&apos;t use a WebKitSetting for this, because settings are supposed to be able to be used at any moment, but canRunModal can only be set when the page is initialized. So, we could add a construct-only property, so that when canRunModal is FALSE, this signal is not emitted at all. We would also need to add API to create a web view with initial properties. We could use something similar to webkit_settings_new_with_settings() or wrap WebPageCreationParameters and add webkit_web_view_new_with_creatiion_parameters() (or whatever name we choose).

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:486
&gt; +    UIClientTest::add(&quot;WebKitWebView&quot;, &quot;run-as-modal&quot;, testWebViewRunAsModal);

You might want to test the case where you return FALSE from the signal and the main loop is not run.

&gt; Tools/MiniBrowser/gtk/main.c:48
&gt; +    GtkWidget *mainWindow = browser_window_new(WEBKIT_WEB_VIEW(webView), 0);

You can use NULL in C code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565702</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-27 09:02:21 -0800</bug_when>
    <thetext>(In reply to comment #3)
 
&gt; We can&apos;t use a WebKitSetting for this, because settings are supposed to be able to be used at any moment, but canRunModal can only be set when the page is initialized. 

canRunModal is called on the child WebView right? So perhaps a WebSetting that would work would be one on the parent like, &quot;can-create-modal-child-webviews.&quot; canRunModal would simply check the property on the parent WebView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565709</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-27 09:07:02 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; 
&gt; &gt; We can&apos;t use a WebKitSetting for this, because settings are supposed to be able to be used at any moment, but canRunModal can only be set when the page is initialized. 
&gt; 
&gt; canRunModal is called on the child WebView right? So perhaps a WebSetting that would work would be one on the parent like, &quot;can-create-modal-child-webviews.&quot; canRunModal would simply check the property on the parent WebView.

That&apos;s a great idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566525</commentid>
    <comment_count>6</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-02-28 02:22:29 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; 
&gt; &gt; We can&apos;t use a WebKitSetting for this, because settings are supposed to be able to be used at any moment, but canRunModal can only be set when the page is initialized. 
&gt; 
&gt; canRunModal is called on the child WebView right? So perhaps a WebSetting that would work would be one on the parent like, &quot;can-create-modal-child-webviews.&quot; canRunModal would simply check the property on the parent WebView.

The decision of creating a new modal dialog and the action doing that (creating the frame, running the loop, notifying the UIClient...) happens in DOMWindow.cpp, in WebCore, so I&apos;m not sure how having a WebSetting in the UI process can influence this decision in any way.

Another way would be to make that WebSetting changing a new option in WebCore/page/Settings that we would check in DOMWindow.cpp (as we do with canShowModalDialog or allowPopups) to decide whether to go ahead or not, but that would be a little bit hackish since we already have the canRunModal property for the WebPage in there, and adding a new one would be too much like a workaround, I think.

Last, but not least, the new webView for the dialog is not create in WebKit but in the application (in the handler for the WebKitWebView::create signal) so we can&apos;t control how we do that at all, I think, and if we try to hook on the ::create signal it would be already too late since the WebPage would have been created already, and so the (creational) canRunModal parameter would have been already set.

Thus, I think that we have to think about other options here...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566535</commentid>
    <comment_count>7</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-02-28 02:40:40 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; [...]
&gt; Thus, I think that we have to think about other options here...

Talking to Carlos about this we realized of some other things that might be worth considering and that would probably affect the final solution:

  - The decision taken in the Web process to know whether WebKit can run modal dialogs or not,
    ultimately relies on WebUIClient::canRunModal(), which returns true if WebUIClient::runModal()
    is implemented for the specific port (in API/gtk/WebKitUIClient.cpp, in our case).

  - It seems to us that changing this property often does not make much sense after all. It is not like
     blocking popups (for what we already have a WebSetting), but something more at the level of how
     you would like windows to behave in your system (e.g. at the level of the Window Manager), since
     we&apos;re talking about having or not _modal_ dialogs, not about having dialogs at all. So, in this sense,
     it looks reasonable that it&apos;s a creational parameter for the WebPage.

  - Martin&apos;s suggestion doesn&apos;t seem to be feasible because new webviews are created in the application
    while handling the WebKitWebView::create signal, and so we don&apos;t have enough control to decide
    from there how to create the window.

So, all things considered, Carlos had what I think it was a really good idea: as this is a global feature and the decision is ultimately made based on having defined in the port the WebUIClieng::runModal() function, we could perhaps add a new setting to the WebKitWebContext that would be checked to decide whether to implement or not runModal in attachUIClientToView(), which is called whenever a WebView is constructed.

That would be global to all the webviews of course, but I think it&apos;s not a bad solution. I&apos;d work on that line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566761</commentid>
    <comment_count>8</comment_count>
      <attachid>129272</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-02-28 09:04:45 -0800</bug_when>
    <thetext>Created attachment 129272
Patch proposal + Unit tests

(In reply to comment #7)
&gt; [...]
&gt; So, all things considered, Carlos had what I think it was a really good idea: as this is a global feature and the 
&gt; decision is ultimately made based on having defined in the port the WebUIClieng::runModal() function, we 
&gt; could perhaps add a new setting to the WebKitWebContext that would be checked to decide whether to 
&gt; implement or not runModal in attachUIClientToView(), which is called whenever a WebView is constructed.

So, turned out that at the end I haven&apos;t follow that approach because I found something out I didn&apos;t know of before: it is actually possible to change the value of the canRunModal attribute in the WebPage from the UIProcess, as there&apos;s even a message already defined for that: SetCanRunCommand, which is already used in WebKit::WebPageProxy::initializeUIClient(). The only thing we&apos;d need would be to add some public functions in WebPageProxy so we can query and set the canRunModal attribute in the WebPage from the WebKitWebView, so I went ahead and wrote this new patch, which precisely address the issue doing that.

Also, I found out another important thing too: canRunModal is used in the web process to call runModal in the UI client, _but also to create the new page_ (the modal dialog), which means that if this attribute is set to false no dialog will be created (so it&apos;s not jsut a matter of the dialog being modal or not, as I thought in principle). So, I took this into account as well when writing the unit tests and now we have two of them: one to check that the &apos;create&apos;, &apos;ready-to-show&apos; and &apos;run-as-modal&apos; are emitted when allowing modal dialogs (new API added for this in WebKitWebView too) and another one to check that no signal is emitted if not allowed (as no dialog will be ever created).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566778</commentid>
    <comment_count>9</comment_count>
      <attachid>129276</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-02-28 09:18:25 -0800</bug_when>
    <thetext>Created attachment 129276
Patch proposal + Unit tests

Now attaching the right patch, as I messed things up with the last one (didn&apos;t build, didn&apos;t use the proper wait() function un the unit tests to exit the main loop).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566817</commentid>
    <comment_count>10</comment_count>
      <attachid>129276</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-28 10:01:15 -0800</bug_when>
    <thetext>Comment on attachment 129276
Patch proposal + Unit tests

Attachment 129276 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11669166</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567723</commentid>
    <comment_count>11</comment_count>
      <attachid>129276</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-29 10:42:33 -0800</bug_when>
    <thetext>Comment on attachment 129276
Patch proposal + Unit tests

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

I prefer to use a WebKitSetting for that. The view can connect to ::notify of the settings to call m_page-&gt;setCanRunModal()

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:494
&gt; +     * Emitted when JavaScript code calls
&gt; +     * &lt;function&gt;window.showModalDialog&lt;/function&gt;, right before
&gt; +     * creating and running a new mainloop to block user interaction
&gt; +     * in the parent webview until the current webview is finalized.

You should mention that this is called after ready signal in the newly created view and that the view will run in modal mode until it&apos;s closed. You should also mention that this signal is to allow the user to prepare the view to run in modal mode, typically setting the modal hint and transient for.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1409
&gt; + * Enable the current web view to create and run modal dialogs from
&gt; + * JavaScript through the &lt;function&gt;window.showModalDialog&lt;/function&gt;.

You should clarify here that if this is set to FALSE, when window.showModalDialog(), no dialog will be created at all, so ::create signal won&apos;t be emitted. In other words, this setting prevents create signal to be emitted when window.showModalDialog() is used.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:129
&gt; +    gboolean   (* run_as_modal)         (WebKitWebView             *web_view);

This is not boolean enymore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568756</commentid>
    <comment_count>12</comment_count>
      <attachid>129722</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-03-01 10:13:57 -0800</bug_when>
    <thetext>Created attachment 129722
Patch proposal + Unit tests

Attaching a new patch addressing the issues pointed out by Carlos, and rebased against latest changes in trunk.

Sorry I&apos;m not providing a ChangeLog entry properly filled yet because I have to literally run out of the office now, will do in the next patch.

(In reply to comment #11)
&gt; (From update of attachment 129276 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129276&amp;action=review
&gt; 
&gt; I prefer to use a WebKitSetting for that. The view can connect to ::notify of the settings to call m_page-&gt;setCanRunModal()

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:494
&gt; &gt; +     * Emitted when JavaScript code calls
&gt; &gt; +     * &lt;function&gt;window.showModalDialog&lt;/function&gt;, right before
&gt; &gt; +     * creating and running a new mainloop to block user interaction
&gt; &gt; +     * in the parent webview until the current webview is finalized.
&gt; 
&gt; You should mention that this is called after ready signal in the newly created view and that the view will run in modal mode until it&apos;s closed. You should also mention that this signal is to allow the user to prepare the view to run in modal mode, typically setting the modal hint and transient for.

Fixed

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1409
&gt; &gt; + * Enable the current web view to create and run modal dialogs from
&gt; &gt; + * JavaScript through the &lt;function&gt;window.showModalDialog&lt;/function&gt;.
&gt; 
&gt; You should clarify here that if this is set to FALSE, when window.showModalDialog(), no dialog will be created at all, so ::create signal won&apos;t be emitted. In other words, this setting prevents create signal to be emitted when window.showModalDialog() is used.

Fixed
 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:129
&gt; &gt; +    gboolean   (* run_as_modal)         (WebKitWebView             *web_view);
&gt; 
&gt; This is not boolean enymore

Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569658</commentid>
    <comment_count>13</comment_count>
      <attachid>129722</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-03-02 08:18:59 -0800</bug_when>
    <thetext>Comment on attachment 129722
Patch proposal + Unit tests

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:850
&gt; +                                                         TRUE,

I think this should be FALSE by default. Otherwise an app not handling ::run-as-modal would end up with a main loop blocking a non modal dialog

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:176
&gt; +static void allowModalDialogsChanged(GObject* object, GParamSpec*, WebKitWebView* webView)

You casted this in g_signal_connect, so you can use directly WebKitSettings *settings, so that you don&apos;t need neither a cast nor a local variable.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:538
&gt; +     * Emitted after #WebKitWebView::create and
&gt; +     * #WebKitWebView::ready-to-show on the newly created
&gt; +     * #WebKitWebView when JavaScript code calls

This is probably a bit confusing, it might look like create is called in the newly created view, I would leave only Emitted after #WebKitWebView::ready-to-show on the newly created #WebKitWebView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569735</commentid>
    <comment_count>14</comment_count>
      <attachid>129916</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-03-02 10:13:53 -0800</bug_when>
    <thetext>Created attachment 129916
Patch proposal + Unit tests

(In reply to comment #13)
&gt; (From update of attachment 129722 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129722&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp:850
&gt; &gt; +                                                         TRUE,

Agreed. Fixed.

&gt; I think this should be FALSE by default. Otherwise an app not handling ::run-as-modal would end up with a main loop blocking a non modal dialog
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:176
&gt; &gt; +static void allowModalDialogsChanged(GObject* object, GParamSpec*, WebKitWebView* webView)
&gt; 
&gt; You casted this in g_signal_connect, so you can use directly WebKitSettings *settings, so that you don&apos;t need neither a cast nor a local variable.

I&apos;m a moron. Fixed (the extra cast, not me being a moron. You can file a bug for that if you want, though)

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:538
&gt; &gt; +     * Emitted after #WebKitWebView::create and
&gt; &gt; +     * #WebKitWebView::ready-to-show on the newly created
&gt; &gt; +     * #WebKitWebView when JavaScript code calls
&gt; 
&gt; This is probably a bit confusing, it might look like create is called in the newly created view, I would leave only Emitted after #WebKitWebView::ready-to-show on the newly created #WebKitWebView.

It is definitely confusing. Fixed too.

Also, the new patch features a ChangeLog again. Reviewers won&apos;t have any excuse now! :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588867</commentid>
    <comment_count>15</comment_count>
      <attachid>134057</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-03-27 07:31:10 -0700</bug_when>
    <thetext>Created attachment 134057
Patch proposal + Unit tests

The previous patch got  a bit outdated, so now attaching a new one that applies cleanly against today&apos;s trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588983</commentid>
    <comment_count>16</comment_count>
      <attachid>134057</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-27 09:47:43 -0700</bug_when>
    <thetext>Comment on attachment 134057
Patch proposal + Unit tests

Attachment 134057 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12142589</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632620</commentid>
    <comment_count>17</comment_count>
      <attachid>143786</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-05-24 04:45:09 -0700</bug_when>
    <thetext>Created attachment 143786
Patch proposal + Unit test

The previous patch got  a bit outdated again, so now attaching a new one that applies cleanly against today&apos;s trunk.

I also made the most of this to re-implement the unit test in a different way, using a new subclass of UIClientTest (ModalDialogsTest) to avoid adding some &quot;ifs&quot; to check whether it was a &quot;modal dialogs&quot; test or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633655</commentid>
    <comment_count>18</comment_count>
      <attachid>143786</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-25 00:46:38 -0700</bug_when>
    <thetext>Comment on attachment 143786
Patch proposal + Unit test

Patch looks good to me in general, but I would like someone to take a look at the changes in WebPageProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635043</commentid>
    <comment_count>19</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-05-28 02:42:22 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 143786 [details])
&gt; Patch looks good to me in general, but I would like someone to take a look at the changes in WebPageProxy

Thanks for the review Carlos.

In order to give a bit more of context to the people reviewing those changes in WebPageProxy, let me c&amp;p here an excerpt from the ChangeLog file, as I have written it when making this patch:

 &quot;Allow setting and getting the value of WebPage&apos;s canRunModal
  attribute in the WebProcess from the UIProcess after the creation
  of a WebPage, to allow using it from WebKitWebView to allow the
  client application to decide whether to allow create modal
  dialogs, which would result in launching an additional nested
  event loop in the web process, after creating the dialog.&quot;

It has been a while since I wrote this patch so I probably don&apos;t recall the details with 100% accuracy, but the issue this tries to fix is that there is no way so far to enable or disable the ability of running modal dialogs from the UI Process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653271</commentid>
    <comment_count>20</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-06-20 00:45:11 -0700</bug_when>
    <thetext>Ping reviewers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653354</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-20 05:19:18 -0700</bug_when>
    <thetext>If there were not gtk api changes (or so much of a comment history on this bug), I&apos;d be happy to rubber-stamp this.  At this point seems you just need to pin down one of the gtk reviewers to finish the job.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653357</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-20 05:23:21 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; If there were not gtk api changes (or so much of a comment history on this bug), I&apos;d be happy to rubber-stamp this.  At this point seems you just need to pin down one of the gtk reviewers to finish the job.

The API changes look good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653362</commentid>
    <comment_count>23</comment_count>
      <attachid>143786</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-20 05:30:27 -0700</bug_when>
    <thetext>Comment on attachment 143786
Patch proposal + Unit test

I guess I should say that you also can&apos;t break the gtk-ews bubble. :)  Unless we believe it&apos;s lying to us?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653379</commentid>
    <comment_count>24</comment_count>
      <attachid>148545</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-06-20 06:04:25 -0700</bug_when>
    <thetext>Created attachment 148545
Patch proposal + Unit test

It seems I forgot to update webkit2gtk-sections.txt with the new accessors in WebKitSettings. This should fix the redness in GTK EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654306</commentid>
    <comment_count>25</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-06-21 01:08:13 -0700</bug_when>
    <thetext>Committed r120908: &lt;http://trac.webkit.org/changeset/120908&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128750</attachid>
            <date>2012-02-24 09:43:11 -0800</date>
            <delta_ts>2012-02-28 09:04:45 -0800</delta_ts>
            <desc>Patch proposal + Unit test</desc>
            <filename>0001-2012-02-24-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>19553</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA0MTU5MzU2ODg0MWU2OGVjNDhiZTllZDYwZjhkNzBiN2M4MWNjMWEzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBGcmksIDI0IEZlYiAyMDEyIDE3OjU2OjQyICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMi0wMi0yNCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGlu
IFdlYktpdDJHVEsrCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc5NTAwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBJ
bXBsZW1lbnQgcnVuTW9kYWwgaW4gV2ViS2l0VUlDbGllbnQgdG8gbWFrZSB0aGUgV2ViS2l0V2Vi
VmlldwogICAgICAgIGVtaXQgYSAncnVuLWFzLW1vZGFsJyBzaWduYWwgd2hlbiByZXF1ZXN0ZWQs
IGNyZWF0aW5nIGEgbmV3CiAgICAgICAgbWFpbmxvb3AgdGhlcmUgKGlmIGhhbmRsZWQpIHRvIGJs
b2NrIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUKICAgICAgICBvcmlnaW5hbCB3aW5kb3cgd2hl
biB0aGUgbW9kYWwgZGlhbG9nIGlzIHNob3dpbmcuCgogICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VUlDbGllbnQuY3BwOgogICAgICAgIChydW5Nb2RhbCk6IENhbGwgdG8gdGhlIG5l
dyB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbFBhZ2UgZnVuY3Rpb24uCiAgICAgICAgKGF0dGFjaFVJ
Q2xpZW50VG9WaWV3KTogQWRkIHJ1bk1vZGFsLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHA6CiAgICAgICAgKF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSk6IEFkZCBh
biBhdHJpYnV0ZSBmb3IgYSBuZXcgbWFpbiBsb29wLgogICAgICAgICh3ZWJraXRXZWJWaWV3Rmlu
YWxpemUpOiBNYWtlIHN1cmUgdGhlIG1haW4gbG9vcCBmb3IgbWFpbiBkaWFsb2dzLAogICAgICAg
IGlmIGFueSwgaXMgc3RvcHBlZCBpZiBpdCB3YXMgc3RpbGwgcnVubmluZy4KICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOiBEZWNsYXJlIG5ldyBzaWduYWwgJ3J1bi1hcy1tb2Rh
bCcuCiAgICAgICAgKHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsUGFnZSk6IEVtaXQgdGhlICdydW4t
YXMtbW9kYWwnIHNpZ25hbAogICAgICAgIGFuZCwgaWYgaGFuZGxlZCwgY3JlYXRlIGFuZCBydW4g
YSBuZXcgbWFpbiBsb29wLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5oOgogICAgICAgIChfV2ViS2l0V2ViVmlld0NsYXNzKTogTmV3IGhhbmRsZXIgZm9yIHRoZSAn
cnVuLWFzLW1vZGFsJyBzaWduYWwuCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oOiBBZGQgd2Via2l0V2ViVmlld1J1bkFzTW9kYWxQYWdlLgoKICAgICAg
ICBBZGQgbmV3IHVuaXQgdGVzdCB0byBjaGVjayB0aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFsIGlz
IGVtaXR0ZWQuCgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdl
YlZpZXcuY3BwOgogICAgICAgICh0ZXN0V2ViVmlld1J1bkFzTW9kYWwpOiBOZXcgdW5pdCB0ZXN0
LCBkZXJpdmVkIGZyb20gVUlDbGllbnRUZXN0LgogICAgICAgIChiZWZvcmVBbGwpOiBBZGQgdGhl
IG5ldyB1bml0IHRlc3QuCgoyMDEyLTAyLTI0ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNo
ZXpAaWdhbGlhLmNvbT4KCiAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIHdpbmRvdy5zaG93
TW9kYWxEaWFsb2cgaW4gV2ViS2l0MkdUSysKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzk1MDAKCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCgogICAgICAgIEFkZCBzdXBwb3J0IGZvciBtb2RhbCBkaWFsb2dzIGluIEdUSydzIE1pbmlC
cm93c2VyLgoKICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CiAgICAg
ICAgKHdlYlZpZXdSdW5Bc01vZGFsKToKICAgICAgICAod2ViVmlld0NyZWF0ZSk6CiAgICAgICAg
KHdlYlZpZXdEZWNpZGVQb2xpY3kpOgogICAgICAgIChicm93c2VyX3dpbmRvd19uZXcpOgogICAg
ICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuaDoKICAgICAgICAqIE1pbmlCcm93
c2VyL2d0ay9tYWluLmM6CiAgICAgICAgKGNyZWF0ZUJyb3dzZXJXaW5kb3cpOgotLS0KIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMiArKysr
KysrKysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5j
cHAgICB8ICAgIDcgKysrLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAgfCAgIDQ4ICsrKysrKysrKysrKysrKysrKystCiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggICB8ICAgIDEgKwogLi4uL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggICAgICAgfCAgICAxICsKIC4uLi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgIHwgICAzNiArKysrKysr
KysrKysrLS0KIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAxOCArKysrKysrCiBUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5j
ICAgICAgICAgICAgICB8ICAgMTQgKysrKystCiBUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nl
cldpbmRvdy5oICAgICAgICAgICAgICB8ICAgIDIgKy0KIFRvb2xzL01pbmlCcm93c2VyL2d0ay9t
YWluLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogMTAgZmlsZXMgY2hhbmdlZCwg
MTUwIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5MGZhZjY0
Li5jM2QzNTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzcgQEAKIDIwMTItMDItMjQgIE1hcmlv
IFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCisgICAgICAgIFtHVEtdIEFk
ZCBzdXBwb3J0IGZvciB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGluIFdlYktpdDJHVEsrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBydW5N
b2RhbCBpbiBXZWJLaXRVSUNsaWVudCB0byBtYWtlIHRoZSBXZWJLaXRXZWJWaWV3CisgICAgICAg
IGVtaXQgYSAncnVuLWFzLW1vZGFsJyBzaWduYWwgd2hlbiByZXF1ZXN0ZWQsIGNyZWF0aW5nIGEg
bmV3CisgICAgICAgIG1haW5sb29wIHRoZXJlIChpZiBoYW5kbGVkKSB0byBibG9jayB1c2VyIGlu
dGVyYWN0aW9uIHdpdGggdGhlCisgICAgICAgIG9yaWdpbmFsIHdpbmRvdyB3aGVuIHRoZSBtb2Rh
bCBkaWFsb2cgaXMgc2hvd2luZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKHJ1bk1vZGFsKTogQ2FsbCB0byB0aGUgbmV3IHdlYmtp
dFdlYlZpZXdSdW5Bc01vZGFsUGFnZSBmdW5jdGlvbi4KKyAgICAgICAgKGF0dGFjaFVJQ2xpZW50
VG9WaWV3KTogQWRkIHJ1bk1vZGFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdQcml2YXRlKTogQWRkIGFuIGF0
cmlidXRlIGZvciBhIG5ldyBtYWluIGxvb3AuCisgICAgICAgICh3ZWJraXRXZWJWaWV3RmluYWxp
emUpOiBNYWtlIHN1cmUgdGhlIG1haW4gbG9vcCBmb3IgbWFpbiBkaWFsb2dzLAorICAgICAgICBp
ZiBhbnksIGlzIHN0b3BwZWQgaWYgaXQgd2FzIHN0aWxsIHJ1bm5pbmcuCisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6IERlY2xhcmUgbmV3IHNpZ25hbCAncnVuLWFzLW1vZGFs
Jy4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsUGFnZSk6IEVtaXQgdGhlICdydW4t
YXMtbW9kYWwnIHNpZ25hbAorICAgICAgICBhbmQsIGlmIGhhbmRsZWQsIGNyZWF0ZSBhbmQgcnVu
IGEgbmV3IG1haW4gbG9vcC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3Lmg6CisgICAgICAgIChfV2ViS2l0V2ViVmlld0NsYXNzKTogTmV3IGhhbmRsZXIgZm9yIHRo
ZSAncnVuLWFzLW1vZGFsJyBzaWduYWwuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld1ByaXZhdGUuaDogQWRkIHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsUGFnZS4KKwor
ICAgICAgICBBZGQgbmV3IHVuaXQgdGVzdCB0byBjaGVjayB0aGUgJ3J1bi1hcy1tb2RhbCcgc2ln
bmFsIGlzIGVtaXR0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld1J1bkFzTW9kYWwpOiBOZXcg
dW5pdCB0ZXN0LCBkZXJpdmVkIGZyb20gVUlDbGllbnRUZXN0LgorICAgICAgICAoYmVmb3JlQWxs
KTogQWRkIHRoZSBuZXcgdW5pdCB0ZXN0LgorCisyMDEyLTAyLTI0ICBNYXJpbyBTYW5jaGV6IFBy
YWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBBZGQgR01haW5Mb29w
IGFuZCBHTWFpbkNvbnRleHQgdG8gYmUgaGFuZGxlZCBieSBHUmVmUHRyCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ5NgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggNmYw
ZTExYy4uZmQyMWMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMTM2LDYgKzEzNiwxMSBAQCBzdGF0aWMgdm9pZCBw
cmludEZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKikK
ICAgICB3ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2Up
LT52aWV3V2lkZ2V0KCkpLCBmcmFtZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJ1bk1vZGFsKFdLUGFn
ZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHdlYmtpdFdlYlZpZXdS
dW5Bc01vZGFsUGFnZShXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbykpOworfQorCiB2b2lkIGF0
dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgV0tQYWdl
VUlDbGllbnQgd2tVSUNsaWVudCA9IHsKQEAgLTE3Niw3ICsxODEsNyBAQCB2b2lkIGF0dGFjaFVJ
Q2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDAsIC8vIGRyYXdI
ZWFkZXIKICAgICAgICAgMCwgLy8gZHJhd0Zvb3RlcgogICAgICAgICBwcmludEZyYW1lLAotICAg
ICAgICAwLCAvLyBydW5Nb2RhbAorICAgICAgICBydW5Nb2RhbCwKICAgICAgICAgMCwgLy8gZGlk
Q29tcGxldGVSdWJiZXJCYW5kRm9yTWFpbkZyYW1lCiAgICAgICAgIDAsIC8vIHNhdmVEYXRhVG9G
aWxlSW5Eb3dubG9hZHNGb2xkZXIKICAgICAgICAgMCwgLy8gc2hvdWxkSW50ZXJydXB0SmF2YVNj
cmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmNwcAppbmRleCBiZTU5MGZmLi5kMmE1MTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNTMsNiArNTMsNyBAQCBl
bnVtIHsKIAogICAgIENSRUFURSwKICAgICBSRUFEWV9UT19TSE9XLAorICAgIFJVTl9BU19NT0RB
TCwKICAgICBDTE9TRSwKIAogICAgIFNDUklQVF9BTEVSVCwKQEAgLTkwLDYgKzkxLDggQEAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRTZXR0aW5ncz4g
c2V0dGluZ3M7CiAgICAgR1JlZlB0cjxXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzPiB3aW5kb3dQcm9w
ZXJ0aWVzOwogCisgICAgR1JlZlB0cjxHTWFpbkxvb3A+IG1vZGFsTG9vcDsKKwogICAgIEdSZWZQ
dHI8V2ViS2l0SGl0VGVzdFJlc3VsdD4gbW91c2VUYXJnZXRIaXRUZXN0UmVzdWx0OwogICAgIHVu
c2lnbmVkIG1vdXNlVGFyZ2V0TW9kaWZpZXJzOwogfTsKQEAgLTIyOSw3ICsyMzIsMTMgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcElkLCBHVmFsdWUqIHZhbHUKIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0ZpbmFsaXpl
KEdPYmplY3QqIG9iamVjdCkKIHsKLSAgICBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KS0+cHJpdi0+
fldlYktpdFdlYlZpZXdQcml2YXRlKCk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdF
QktJVF9XRUJfVklFVyhvYmplY3QpOworCisgICAgLy8gRm9yIG1vZGFsIGRpYWxvZ3MsIG1ha2Ug
c3VyZSB0aGUgbWFpbiBsb29wIGlzIHN0b3BwZWQgd2hlbiBmaW5hbGl6aW5nIHRoZSB3ZWJWaWV3
LgorICAgIGlmICh3ZWJWaWV3LT5wcml2LT5tb2RhbExvb3AgJiYgZ19tYWluX2xvb3BfaXNfcnVu
bmluZyh3ZWJWaWV3LT5wcml2LT5tb2RhbExvb3AuZ2V0KCkpKQorICAgICAgICBnX21haW5fbG9v
cF9xdWl0KHdlYlZpZXctPnByaXYtPm1vZGFsTG9vcC5nZXQoKSk7CisKKyAgICB3ZWJWaWV3LT5w
cml2LT5+V2ViS2l0V2ViVmlld1ByaXZhdGUoKTsKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRf
d2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIApAQCAtNDc2LDYg
KzQ4NSwyNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRX
ZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9O
T05FLCAwKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnJ1bi1hcy1tb2RhbDoK
KyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFs
IGlzIGVtaXR0ZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBKYXZhU2NyaXB0IGNvZGUg
Y2FsbHMKKyAgICAgKiA8ZnVuY3Rpb24+d2luZG93LnNob3dNb2RhbERpYWxvZzwvZnVuY3Rpb24+
LiBJZiB0aGlzIHNpZ25hbCBpcworICAgICAqIGhhbmRsZWQgKHJldHVybnMgJVRSVUUpLCBhIG5l
dyBtYWlubG9vcCB3aWxsIGJlIGNyZWF0ZWQgYW5kIHJ1bgorICAgICAqIHVudGlsIHRoZSBjdXJy
ZW50IHdlYnZpZXcgaXMgZmluYWxpemVkLgorICAgICAqCisgICAgICogUmV0dXJuczogJVRSVUUg
dG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4K
KyAgICAgKiAgICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgorICAgICAq
LworICAgIHNpZ25hbHNbUlVOX0FTX01PREFMXSA9CisgICAgICAgICAgICBnX3NpZ25hbF9uZXco
InJ1bi1hcy1tb2RhbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xB
U1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5f
TEFTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2Vi
Vmlld0NsYXNzLCBydW5fYXNfbW9kYWwpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdfc2ln
bmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAorICAgICAgICAgICAgICAgICAgICAgICAg
IEdfVFlQRV9CT09MRUFOLCAwKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6OmNs
b3NlOgogICAgICAqIEB3ZWJWaWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNp
Z25hbCBpcyBlbWl0dGVkCiAgICAgICoKQEAgLTc1Niw2ICs3ODYsMjIgQEAgdm9pZCB3ZWJraXRX
ZWJWaWV3UmVhZHlUb1Nob3dQYWdlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19zaWdu
YWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1JFQURZX1RPX1NIT1ddLCAwLCBOVUxMKTsKIH0KIAor
dm9pZCB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbFBhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
K3sKKyAgICBnYm9vbGVhbiBpc0hhbmRsZWQ7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBz
aWduYWxzW1JVTl9BU19NT0RBTF0sIDAsICZpc0hhbmRsZWQpOworICAgIGlmICghaXNIYW5kbGVk
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBSdW4gb3duIG1haW4gbG9vcCBoZXJlIHRvIHNl
cnZlIGFzIHRoZSBldmVudCBsb29wIGZvciB0aGUgd2ViCisgICAgLy8gdmlldyB0aGF0IGlzIHJ1
bm5pbmcgYXMgdGhlIG1vZGFsIGRpYWxvZy4gVGhpcyBibG9ja3MgdXNlcgorICAgIC8vIGlucHV0
IGV2ZW50cyBpbiB0aGUgd2ViIHZpZXcgZnJvbSB3aGljaCB0aGUgZGlhbG9nIG9yaWdpbmF0ZWQu
CisgICAgd2ViVmlldy0+cHJpdi0+bW9kYWxMb29wID0gYWRvcHRHUmVmKGdfbWFpbl9sb29wX25l
dygwLCBGQUxTRSkpOworICAgIEdES19USFJFQURTX0VOVEVSKCk7CisgICAgZ19tYWluX2xvb3Bf
cnVuKHdlYlZpZXctPnByaXYtPm1vZGFsTG9vcC5nZXQoKSk7CisgICAgR0RLX1RIUkVBRFNfTEVB
VkUoKTsKK30KKwogdm9pZCB3ZWJraXRXZWJWaWV3Q2xvc2VQYWdlKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCiB7CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0NMT1NFXSwgMCwg
TlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmgKaW5kZXggYTFiMjE0Mi4uYTFmM2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMTI2LDYgKzEyNiw3IEBAIHN0cnVj
dCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKIAogICAgIEd0a1dpZGdldCAqKCogY3JlYXRlKSAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAgICAgdm9p
ZCAgICAgICAoKiByZWFkeV90b19zaG93KSAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3KTsKKyAgICBnYm9vbGVhbiAgICgqIHJ1bl9hc19tb2RhbCkgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogICAgIHZvaWQgICAgICAgKCog
Y2xvc2UpICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmll
dyk7CiAKICAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9hbGVydCkgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCBhZDhhYjIwLi42
MWNlNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTM4LDYgKzM4LDcgQEAgdm9pZCB3ZWJraXRXZWJW
aWV3U2V0VGl0bGUoV2ViS2l0V2ViVmlldyosIGNvbnN0IENTdHJpbmcmKTsKIHZvaWQgd2Via2l0
V2ViVmlld1VwZGF0ZVVSSShXZWJLaXRXZWJWaWV3Kik7CiBXS1BhZ2VSZWYgd2Via2l0V2ViVmll
d0NyZWF0ZU5ld1BhZ2UoV2ViS2l0V2ViVmlldyosIFdLRGljdGlvbmFyeVJlZiB3a1dpbmRvd0Zl
YXR1cmVzKTsKIHZvaWQgd2Via2l0V2ViVmlld1JlYWR5VG9TaG93UGFnZShXZWJLaXRXZWJWaWV3
Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsUGFnZShXZWJLaXRXZWJWaWV3Kik7CiB2
b2lkIHdlYmtpdFdlYlZpZXdDbG9zZVBhZ2UoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRX
ZWJWaWV3UnVuSmF2YVNjcmlwdEFsZXJ0KFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlKTsKIGJvb2wgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDb25maXJtKFdlYktpdFdl
YlZpZXcqLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApp
bmRleCA0N2RhOThlLi5jNDhlYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0xMDMs
NiArMTAzLDcgQEAgcHVibGljOgogICAgIGVudW0gV2ViVmlld0V2ZW50cyB7CiAgICAgICAgIENy
ZWF0ZSwKICAgICAgICAgUmVhZHlUb1Nob3csCisgICAgICAgIFJ1bkFzTW9kYWwsCiAgICAgICAg
IENsb3NlCiAgICAgfTsKIApAQCAtMTg0LDYgKzE4NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHRl
c3QtPm1fd2luZG93UHJvcGVydGllc0NoYW5nZWQuYWRkKGdfcGFyYW1fc3BlY19nZXRfbmFtZShw
YXJhbVNwZWMpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gZGlhbG9nUnVuQXNNb2Rh
bChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBVSUNsaWVudFRlc3QqIHRlc3QpCisgICAgeworICAg
ICAgICBnX2Fzc2VydCh3ZWJWaWV3ICE9IHRlc3QtPm1fd2ViVmlldyk7CisgICAgICAgIHRlc3Qt
Pm1fd2ViVmlld0V2ZW50cy5hcHBlbmQoUnVuQXNNb2RhbCk7CisgICAgICAgIHJldHVybiBUUlVF
OworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIHZpZXdDbG9zZShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBVSUNsaWVudFRlc3QqIHRlc3QpCiAgICAgewogICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3
ICE9IHRlc3QtPm1fd2ViVmlldyk7CkBAIC0xOTgsMTAgKzIwNiwxMSBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ICE9IHRlc3QtPm1fd2ViVmlldyk7CiAKLSAgICAg
ICAgV2ViS2l0V2luZG93UHJvcGVydGllcyogd2luZG93UHJvcGVydGllcyA9IHdlYmtpdF93ZWJf
dmlld19nZXRfd2luZG93X3Byb3BlcnRpZXMod2ViVmlldyk7Ci0gICAgICAgIGdfYXNzZXJ0KHdp
bmRvd1Byb3BlcnRpZXMpOwotICAgICAgICBXaW5kb3dQcm9wZXJ0aWVzKHdpbmRvd1Byb3BlcnRp
ZXMpLmFzc2VydEVxdWFsKHRlc3QtPm1fd2luZG93UHJvcGVydGllcyk7Ci0KKyAgICAgICAgaWYg
KCF0ZXN0LT5tX2lzTW9kYWxEaWFsb2dUZXN0KSB7CisgICAgICAgICAgICBXZWJLaXRXaW5kb3dQ
cm9wZXJ0aWVzKiB3aW5kb3dQcm9wZXJ0aWVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3df
cHJvcGVydGllcyh3ZWJWaWV3KTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KHdpbmRvd1Byb3BlcnRp
ZXMpOworICAgICAgICAgICAgV2luZG93UHJvcGVydGllcyh3aW5kb3dQcm9wZXJ0aWVzKS5hc3Nl
cnRFcXVhbCh0ZXN0LT5tX3dpbmRvd1Byb3BlcnRpZXMpOworICAgICAgICB9CiAgICAgICAgIHRl
c3QtPm1fd2ViVmlld0V2ZW50cy5hcHBlbmQoUmVhZHlUb1Nob3cpOwogICAgIH0KIApAQCAtMjIx
LDYgKzIzMCw4IEBAIHB1YmxpYzoKICAgICAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3dQcm9w
ZXJ0aWVzLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3aW5kb3dQcm9wZXJ0aWVzTm90aWZ5Q2FsbGJh
Y2spLCB0ZXN0KTsKIAogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJyZWFk
eS10by1zaG93IiwgR19DQUxMQkFDSyh2aWV3UmVhZHlUb1Nob3cpLCB0ZXN0KTsKKyAgICAgICAg
aWYgKHRlc3QtPm1faXNNb2RhbERpYWxvZ1Rlc3QpCisgICAgICAgICAgICBnX3NpZ25hbF9jb25u
ZWN0KG5ld1dlYlZpZXcsICJydW4tYXMtbW9kYWwiLCBHX0NBTExCQUNLKGRpYWxvZ1J1bkFzTW9k
YWwpLCB0ZXN0KTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAiY2xvc2Ui
LCBHX0NBTExCQUNLKHZpZXdDbG9zZSksIHRlc3QpOwogCiAgICAgICAgIHJldHVybiBuZXdXZWJW
aWV3OwpAQCAtMjgwLDYgKzI5MSw3IEBAIHB1YmxpYzoKICAgICBVSUNsaWVudFRlc3QoKQogICAg
ICAgICA6IG1fc2NyaXB0VHlwZShBbGVydCkKICAgICAgICAgLCBtX3NjcmlwdERpYWxvZ0NvbmZp
cm1lZCh0cnVlKQorICAgICAgICAsIG1faXNNb2RhbERpYWxvZ1Rlc3QoZmFsc2UpCiAgICAgICAg
ICwgbV9tb3VzZVRhcmdldE1vZGlmaWVycygwKQogICAgIHsKICAgICAgICAgd2Via2l0X3NldHRp
bmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NldHRpbmdzKG1fd2ViVmlldyksIFRSVUUpOwpAQCAtMzE1LDYgKzMyNyw3
IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8V2ViVmlld0V2ZW50cz4gbV93ZWJWaWV3RXZlbnRzOwog
ICAgIFNjcmlwdFR5cGUgbV9zY3JpcHRUeXBlOwogICAgIGJvb2wgbV9zY3JpcHREaWFsb2dDb25m
aXJtZWQ7CisgICAgYm9vbCBtX2lzTW9kYWxEaWFsb2dUZXN0OwogICAgIFdpbmRvd1Byb3BlcnRp
ZXMgbV93aW5kb3dQcm9wZXJ0aWVzOwogICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+IG1fd2luZG93
UHJvcGVydGllc0NoYW5nZWQ7CiAgICAgR1JlZlB0cjxXZWJLaXRIaXRUZXN0UmVzdWx0PiBtX21v
dXNlVGFyZ2V0SGl0VGVzdFJlc3VsdDsKQEAgLTMzMyw2ICszNDYsMjAgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdDcmVhdGVSZWFkeUNsb3NlKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzJdLCA9PSwgVUlDbGllbnRUZXN0OjpD
bG9zZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UnVuQXNNb2RhbChVSUNsaWVudFRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+bV9pc01vZGFsRGlhbG9nVGVz
dCA9IHRydWU7CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5IG9ubG9hZD1cIndpbmRv
dy5zaG93TW9kYWxEaWFsb2coJ2RhdGE6dGV4dC9odG1sLDxodG1sPjxib2R5Lz48c2NyaXB0Pndp
bmRvdy5jbG9zZSgpOzwvc2NyaXB0PjwvaHRtbD4nKVwiPjwvYm9keT48L2h0bWw+IiwgMCk7Cisg
ICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBWZWN0b3I8VUlDbGllbnRU
ZXN0OjpXZWJWaWV3RXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+bV93ZWJWaWV3RXZlbnRzOworICAg
IGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgNCk7CisgICAgZ19hc3NlcnRfY21w
aW50KGV2ZW50c1swXSwgPT0sIFVJQ2xpZW50VGVzdDo6Q3JlYXRlKTsKKyAgICBnX2Fzc2VydF9j
bXBpbnQoZXZlbnRzWzFdLCA9PSwgVUlDbGllbnRUZXN0OjpSZWFkeVRvU2hvdyk7CisgICAgZ19h
c3NlcnRfY21waW50KGV2ZW50c1syXSwgPT0sIFVJQ2xpZW50VGVzdDo6UnVuQXNNb2RhbCk7Cisg
ICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1szXSwgPT0sIFVJQ2xpZW50VGVzdDo6Q2xvc2UpOwor
fQorCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0phdmFTY3JpcHREaWFsb2dzKFVJQ2xpZW50VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciogaHRtbE9u
TG9hZEZvcm1hdCA9ICI8aHRtbD48Ym9keSBvbkxvYWQ9XCIlc1wiPjwvYm9keT48L2h0bWw+IjsK
QEAgLTQ1Niw2ICs0ODMsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgV2ViVmlld1Rlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJzZXR0aW5ncyIsIHRlc3RXZWJWaWV3U2V0dGluZ3MpOwogICAg
IFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicmVwbGFjZS1jb250ZW50IiwgdGVz
dFdlYlZpZXdSZXBsYWNlQ29udGVudCk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAiY3JlYXRlLXJlYWR5LWNsb3NlIiwgdGVzdFdlYlZpZXdDcmVhdGVSZWFkeUNsb3Nl
KTsKKyAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJydW4tYXMtbW9kYWwi
LCB0ZXN0V2ViVmlld1J1bkFzTW9kYWwpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgImphdmFzY3JpcHQtZGlhbG9ncyIsIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxv
Z3MpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIndpbmRvdy1wcm9w
ZXJ0aWVzIiwgdGVzdFdlYlZpZXdXaW5kb3dQcm9wZXJ0aWVzKTsKICAgICBVSUNsaWVudFRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJtb3VzZS10YXJnZXQiLCB0ZXN0V2ViVmlld01vdXNlVGFy
Z2V0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA1N2VmMDJiLi45M2M5YTAzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDItMjQgIE1hcmlvIFNhbmNoZXog
UHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0
IGZvciB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGluIFdlYktpdDJHVEsrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBtb2RhbCBk
aWFsb2dzIGluIEdUSydzIE1pbmlCcm93c2VyLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAgKHdlYlZpZXdSdW5Bc01vZGFsKToKKyAgICAgICAg
KHdlYlZpZXdDcmVhdGUpOgorICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6CisgICAgICAg
IChicm93c2VyX3dpbmRvd19uZXcpOgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
V2luZG93Lmg6CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAgKGNy
ZWF0ZUJyb3dzZXJXaW5kb3cpOgorCiAyMDEyLTAyLTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTA3MzUxLgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cu
YyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggNzdkM2FhNy4u
M2I5ZWM2NSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cu
YworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC0xOTgsNiAr
MTk4LDEyIEBAIHN0YXRpYyB2b2lkIHdlYlZpZXdDbG9zZShXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3
LCBCcm93c2VyV2luZG93ICp3aW5kb3cpCiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURH
RVQod2luZG93KSk7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3UnVuQXNNb2RhbChXZWJL
aXRXZWJWaWV3ICp3ZWJWaWV3LCBCcm93c2VyV2luZG93ICp3aW5kb3cpCit7CisgICAgZ3RrX3dp
bmRvd19zZXRfbW9kYWwoR1RLX1dJTkRPVyh3aW5kb3cpLCBUUlVFKTsKKyAgICByZXR1cm4gVFJV
RTsKK30KKwogc3RhdGljIHZvaWQgd2ViVmlld1JlYWR5VG9TaG93KFdlYktpdFdlYlZpZXcgKndl
YlZpZXcsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBXZWJLaXRXaW5kb3dQcm9wZXJ0
aWVzICp3aW5kb3dQcm9wZXJ0aWVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfcHJvcGVy
dGllcyh3ZWJWaWV3KTsKQEAgLTIyNSw4ICsyMzEsOSBAQCBzdGF0aWMgR3RrV2lkZ2V0ICp3ZWJW
aWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykK
ICAgICBXZWJLaXRXZWJWaWV3ICpuZXdXZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93
ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJW
aWV3KSkpOwogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MobmV3V2ViVmlldywgd2Vi
a2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7CiAKLSAgICBHdGtXaWRnZXQgKm5l
d1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3KTsKKyAgICBHdGtXaWRnZXQg
Km5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3LCBHVEtfV0lORE9XKHdp
bmRvdykpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgInJlYWR5LXRvLXNob3ci
LCBHX0NBTExCQUNLKHdlYlZpZXdSZWFkeVRvU2hvdyksIG5ld1dpbmRvdyk7CisgICAgZ19zaWdu
YWxfY29ubmVjdChuZXdXZWJWaWV3LCAicnVuLWFzLW1vZGFsIiwgR19DQUxMQkFDSyh3ZWJWaWV3
UnVuQXNNb2RhbCksIG5ld1dpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3
LCAiY2xvc2UiLCBHX0NBTExCQUNLKHdlYlZpZXdDbG9zZSksIG5ld1dpbmRvdyk7CiAgICAgcmV0
dXJuIEdUS19XSURHRVQobmV3V2ViVmlldyk7CiB9CkBAIC0yNDksNyArMjU2LDcgQEAgc3RhdGlj
IGdib29sZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2Vi
S2l0UG9saWN5RGVjaXNpb24KIAogICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZpZXcgPSBXRUJL
SVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQod2Via2l0X3dlYl92
aWV3X2dldF9jb250ZXh0KHdlYlZpZXcpKSk7CiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0
aW5ncyhuZXdXZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsK
LSAgICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3
KTsKKyAgICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJW
aWV3LCBHVEtfV0lORE9XKHdpbmRvdykpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3JlcXVl
c3QobmV3V2ViVmlldywgd2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9yZXF1
ZXN0KG5hdmlnYXRpb25EZWNpc2lvbikpOwogICAgIGd0a193aWRnZXRfc2hvdyhuZXdXaW5kb3cp
OwogCkBAIC00NjAsMTEgKzQ2NywxMiBAQCBzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19jbGFz
c19pbml0KEJyb3dzZXJXaW5kb3dDbGFzcyAqa2xhc3MpCiB9CiAKIC8vIFB1YmxpYyBBUEkuCi1H
dGtXaWRnZXQgKmJyb3dzZXJfd2luZG93X25ldyhXZWJLaXRXZWJWaWV3ICp2aWV3KQorR3RrV2lk
Z2V0ICpicm93c2VyX3dpbmRvd19uZXcoV2ViS2l0V2ViVmlldyAqdmlldywgR3RrV2luZG93ICpw
YXJlbnQpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHZp
ZXcpLCAwKTsKIAogICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2JqZWN0X25ldyhCUk9XU0VSX1RZ
UEVfV0lORE9XLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNpZW50
LWZvciIsIHBhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUi
LCBHVEtfV0lORE9XX1RPUExFVkVMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAidmlldyIsIHZpZXcsIE5VTEwpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmggYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRv
dy5oCmluZGV4IDQ2YTA2YzIuLjk0OTVhOGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuaApAQCAtNDMsNyArNDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBfQnJvd3NlcldpbmRvd0Ns
YXNzICAgQnJvd3NlcldpbmRvd0NsYXNzOwogCiBHVHlwZSBicm93c2VyX3dpbmRvd19nZXRfdHlw
ZSh2b2lkKTsKIAotR3RrV2lkZ2V0KiBicm93c2VyX3dpbmRvd19uZXcoV2ViS2l0V2ViVmlldyop
OworR3RrV2lkZ2V0KiBicm93c2VyX3dpbmRvd19uZXcoV2ViS2l0V2ViVmlldyosIEd0a1dpbmRv
dyopOwogV2ViS2l0V2ViVmlldyogYnJvd3Nlcl93aW5kb3dfZ2V0X3ZpZXcoQnJvd3NlcldpbmRv
dyopOwogCiBHX0VORF9ERUNMUwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21h
aW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggOTY3NDhhNi4uZjU1NjY3
YSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBnY2hhciAqYXJn
dW1lbnRUb1VSTChjb25zdCBjaGFyICpmaWxlbmFtZSkKIHN0YXRpYyB2b2lkIGNyZWF0ZUJyb3dz
ZXJXaW5kb3coY29uc3QgZ2NoYXIgKnVyaSwgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdz
KQogewogICAgIEd0a1dpZGdldCAqd2ViVmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXcoKTsKLSAg
ICBHdGtXaWRnZXQgKm1haW5XaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoV0VCS0lUX1dFQl9W
SUVXKHdlYlZpZXcpKTsKKyAgICBHdGtXaWRnZXQgKm1haW5XaW5kb3cgPSBicm93c2VyX3dpbmRv
d19uZXcoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKICAgICBnY2hhciAqdXJsID0gYXJn
dW1lbnRUb1VSTCh1cmkpOwogCiAgICAgaWYgKHdlYmtpdFNldHRpbmdzKSB7Ci0tIAoxLjcuNy41
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129272</attachid>
            <date>2012-02-28 09:04:45 -0800</date>
            <delta_ts>2012-02-28 09:18:25 -0800</delta_ts>
            <desc>Patch proposal + Unit tests</desc>
            <filename>0001-2012-02-28-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>29335</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAwMmZmNjY1YWM2M2IxMzVkZDAxYjc3ODI0NjZjMTRkNjZkZjM2MDVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUdWUsIDI4IEZlYiAyMDEyIDE3OjI4OjA2ICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMi0wMi0yOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGlu
IFdlYktpdDJHVEsrCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc5NTAwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBJ
bXBsZW1lbnQgcnVuTW9kYWwgaW4gV2ViS2l0VUlDbGllbnQgdG8gbWFrZSB0aGUgV2ViS2l0V2Vi
VmlldwogICAgICAgIGVtaXQgYSAncnVuLWFzLW1vZGFsJyBzaWduYWwgd2hlbiByZXF1ZXN0ZWQs
IGNyZWF0aW5nIGEgbmV3CiAgICAgICAgbWFpbmxvb3AgdGhlcmUgdG8gYmxvY2sgdXNlciBpbnRl
cmFjdGlvbiB3aXRoIHRoZSBvcmlnaW5hbCB3aW5kb3cKICAgICAgICB3aGlsZSB0aGUgbW9kYWwg
ZGlhbG9nIGlzIHNob3dpbmcuCgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlD
bGllbnQuY3BwOgogICAgICAgIChydW5Nb2RhbCk6IENhbGwgdG8gdGhlIG5ldyB3ZWJraXRXZWJW
aWV3UnVuQXNNb2RhbFBhZ2UgZnVuY3Rpb24uCiAgICAgICAgKGF0dGFjaFVJQ2xpZW50VG9WaWV3
KTogQWRkIHJ1bk1vZGFsLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHA6CiAgICAgICAgKF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSk6IEFkZCBhbiBhdHJpYnV0ZSBm
b3IgYSBuZXcgbWFpbiBsb29wLgogICAgICAgICh3ZWJraXRXZWJWaWV3RmluYWxpemUpOiBNYWtl
IHN1cmUgdGhlIG1haW4gbG9vcCBmb3IgbWFpbiBkaWFsb2dzLAogICAgICAgIGlmIGFueSwgaXMg
c3RvcHBlZCBpZiBpdCB3YXMgc3RpbGwgcnVubmluZy4KICAgICAgICAod2Via2l0X3dlYl92aWV3
X2NsYXNzX2luaXQpOiBEZWNsYXJlIG5ldyBzaWduYWwgJ3J1bi1hcy1tb2RhbCcuCiAgICAgICAg
KHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsKTogRW1pdCB0aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFs
IGFuZCwgaWYKICAgICAgICBoYW5kbGVkLCBjcmVhdGUgYW5kIHJ1biBhIG5ldyBtYWluIGxvb3Au
CiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CiAgICAgICAgKF9X
ZWJLaXRXZWJWaWV3Q2xhc3MpOiBOZXcgaGFuZGxlciBmb3IgdGhlICdydW4tYXMtbW9kYWwnIHNp
Z25hbC4KICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6
IEFkZCB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbFBhZ2UuCgogICAgICAgIEFsbG93IHNldHRpbmcg
YW5kIGdldHRpbmcgdGhlIHZhbHVlIG9mIFdlYlBhZ2UncyBjYW5SdW5Nb2RhbAogICAgICAgIGF0
dHJpYnV0ZSBpbiB0aGUgV2ViUHJvY2VzcyBmcm9tIHRoZSBVSVByb2Nlc3MgYWZ0ZXIgdGhlIGNy
ZWF0aW9uCiAgICAgICAgb2YgYSBXZWJQYWdlLCBhbmQgdXNlIGl0IGluIEdUSydzIFdlYktpdFdl
YlZpZXcgdG8gYWxsb3cgdGhlCiAgICAgICAgY2xpZW50IGFwcGxpY2F0aW9uIHRvIGRlY2lkZSB3
aGV0aGVyIHRvIGFsbG93IGNyZWF0ZSBtb2RhbAogICAgICAgIGRpYWxvZ3MsIHdoaWNoIHdvdWxk
IHJlc3VsdCBpbiBsYXVuY2hpbmcgYW4gYWRkaXRpb25hbCBuZXN0ZWQKICAgICAgICBldmVudCBs
b29wIGluIHRoZSB3ZWIgcHJvY2VzcywgYWZ0ZXIgY3JlYXRpbmcgdGhlIGRpYWxvZy4KCiAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eSk6IEluaXRpYWxpemUgdGhlIG5ldwogICAgICAgIG1fY2FuUnVu
TW9kYWwgYXR0cmlidXRlLCB0byBjYWNoZSB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlCiAgICAg
ICAgV2ViUGFnZSBpbiB0aGUgV2ViUHJvY2Vzcy4KICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmluaXRpYWxpemVVSUNsaWVudCk6IENhbGwgdGhlIG5ldyBmdW5jdGlvbgogICAgICAgIHNl
dENhblJ1bk1vZGFsLCBpbnN0ZWFkIG9mIG1hbnVhbGx5IHNlbmRpbmcgdGhlIFNldENhblJ1bk1v
ZGFsIG1lc3NhZ2UuCiAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFt
ZXRlcnMpOiBVc2UgbV9jYW5SdW5Nb2RhbAogICAgICAgIGluc3RlYWQgb2YgbV91aUNsaWVudC5j
YW5SdW5Nb2RhbCB3aGVuIHByZXBhcmluZyB0aGUgcGFyYW1ldGVycy4KICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKTogTmV3IHB1YmxpYyBmdW5jdGlvbiwgaXQK
ICAgICAgICBzZXRzIHRoZSB2YWx1ZSBvZiBtX2NhblJ1bk1vZGFsIGFuZCBzZW5kcyBhIG1lc3Nh
Z2UgdG8gdGhlIFdlYgogICAgICAgIHByb2Nlc3MgZm9yIHVwZGF0aW5nIHRoZSBXZWJQYWdlLCB3
aGVuZXZlciBwb3NzaWJsZS4KICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhblJ1bk1v
ZGFsKTogTmV3IHB1YmxpYyBmdW5jdGlvbiwgcmV0dXJucwogICAgICAgIHRoZSB2YWx1ZSBvZiB0
aGUgbV9jYW5SdW5Nb2RhbCBhdHRyaWJ1dGUuCiAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CiAgICAgICAgKFdlYlBhZ2VQcm94eSk6IEFkZGVkIG5ldyBwdWJsaWMgZnVuY3Rpb25z
IGFuZCBwcml2YXRlIGF0dHJpYnV0ZS4KCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcDoKICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9hbGxvd19jcmVhdGVf
bW9kYWxfZGlhbG9ncyk6IE5ldyBwdWJsaWMKICAgICAgICBmdW5jdGlvbiwgYWxsb3dzIHNldHRp
bmcgdGhlIHZhbHVlIG9mIGNhblJ1bk1vZGFsIGluIHRoZSBXZWJQYWdlCiAgICAgICAgYWZ0ZXIg
aXQgYmVpbmcgY3JlYXRlZCB0aHJvdWdoIHRoZSBuZXcgZnVuY3Rpb25zIGluIFdlYlBhZ2VQcm94
eS4KICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9hbGxvd19jcmVhdGVfbW9kYWxfZGlhbG9n
cyk6IE5ldyBwdWJsaWMKICAgICAgICBmdW5jdGlvbiwgYWxsb3dzIGdldHRpbmcgdGhlIHZhbHVl
IG9mIGNhblJ1bk1vZGFsIGluIHRoZSBXZWJQYWdlLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oOgoKICAgICAgICBBZGQgbmV3IHVuaXQgdGVzdCB0byBjaGVjayB0
aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFsIGlzIGVtaXR0ZWQuCgogICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgogICAgICAgICh0ZXN0V2ViVmll
d0FsbG93TW9kYWxEaWFsb2dzKTogTmV3IHVuaXQgdGVzdCB0byBjaGVjayB0aGF0IG1vZGFsCiAg
ICAgICAgZGlhbG9ncyBhcmUgcHJvcGVybHkgY3JlYXRlZCBmcm9tIEphdmFTY3JpcHQgd2hlbiBh
bGxvd2VkLgogICAgICAgICh0ZXN0V2ViVmlld0Rpc2FsbG93TW9kYWxEaWFsb2dzKTogTmV3IHVu
aXQgdGVzdCB0byBjaGVjayB0aGF0CiAgICAgICAgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRl
IG1vZGFsIGRpYWxvZ3Mgd2hlbiBub3QgYWxsb3dlZC4KICAgICAgICAoYmVmb3JlQWxsKTogQWRk
IHRoZSBuZXcgdW5pdCB0ZXN0LgoKMjAxMi0wMi0yOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1z
YW5jaGV6QGlnYWxpYS5jb20+CgogICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciB3aW5kb3cu
c2hvd01vZGFsRGlhbG9nIGluIFdlYktpdDJHVEsrCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NTAwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgoKICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbW9kYWwgZGlhbG9ncyBpbiBHVEsncyBN
aW5pQnJvd3Nlci4KCiAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgog
ICAgICAgICh3ZWJWaWV3UnVuQXNNb2RhbCk6CiAgICAgICAgKHdlYlZpZXdDcmVhdGUpOgogICAg
ICAgICh3ZWJWaWV3RGVjaWRlUG9saWN5KToKICAgICAgICAoYnJvd3Nlcl93aW5kb3dfbmV3KToK
ICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93Lmg6CiAgICAgICAgKiBNaW5p
QnJvd3Nlci9ndGsvbWFpbi5jOgogICAgICAgIChjcmVhdGVCcm93c2VyV2luZG93KToKLS0tCiBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjYg
KysrKysrKysrKysrKysrKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VUlDbGllbnQuY3BwICAgfCAgICA3ICsrLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAgfCAgIDY5ICsrKysrKysrKysrKysrKysrKystCiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggICB8ICAgIDggKysKIC4u
Li9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oICAgICAgIHwgICAgMSAr
CiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwICB8ICAg
NDggKysrKysrKysrKysrKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwICAgICAgICAgIHwgICAyMiArKysrKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggICAgICAgICAgICB8ICAgIDYgKysKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysrKwogVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyAgICAgICAgICAgICAgfCAgIDEzICsrKy0KIFRvb2xzL01p
bmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggICAgICAgICAgICAgIHwgICAgMiArLQogVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICst
CiAxMiBmaWxlcyBjaGFuZ2VkLCAyNDkgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDY1YzkzMjcuLjU2MTUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBA
QAorMjAxMi0wMi0yOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cg
aW4gV2ViS2l0MkdUSysKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHJ1bk1vZGFsIGluIFdlYktpdFVJQ2xpZW50IHRvIG1ha2UgdGhlIFdl
YktpdFdlYlZpZXcKKyAgICAgICAgZW1pdCBhICdydW4tYXMtbW9kYWwnIHNpZ25hbCB3aGVuIHJl
cXVlc3RlZCwgY3JlYXRpbmcgYSBuZXcKKyAgICAgICAgbWFpbmxvb3AgdGhlcmUgdG8gYmxvY2sg
dXNlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBvcmlnaW5hbCB3aW5kb3cKKyAgICAgICAgd2hpbGUg
dGhlIG1vZGFsIGRpYWxvZyBpcyBzaG93aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAocnVuTW9kYWwpOiBDYWxsIHRvIHRoZSBu
ZXcgd2Via2l0V2ViVmlld1J1bkFzTW9kYWxQYWdlIGZ1bmN0aW9uLgorICAgICAgICAoYXR0YWNo
VUlDbGllbnRUb1ZpZXcpOiBBZGQgcnVuTW9kYWwuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1ByaXZhdGUpOiBB
ZGQgYW4gYXRyaWJ1dGUgZm9yIGEgbmV3IG1haW4gbG9vcC4KKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdGaW5hbGl6ZSk6IE1ha2Ugc3VyZSB0aGUgbWFpbiBsb29wIGZvciBtYWluIGRpYWxvZ3MsCisg
ICAgICAgIGlmIGFueSwgaXMgc3RvcHBlZCBpZiBpdCB3YXMgc3RpbGwgcnVubmluZy4KKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KTogRGVjbGFyZSBuZXcgc2lnbmFsICdydW4t
YXMtbW9kYWwnLgorICAgICAgICAod2Via2l0V2ViVmlld1J1bkFzTW9kYWwpOiBFbWl0IHRoZSAn
cnVuLWFzLW1vZGFsJyBzaWduYWwgYW5kLCBpZgorICAgICAgICBoYW5kbGVkLCBjcmVhdGUgYW5k
IHJ1biBhIG5ldyBtYWluIGxvb3AuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5oOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdDbGFzcyk6IE5ldyBoYW5kbGVyIGZv
ciB0aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdQcml2YXRlLmg6IEFkZCB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbFBhZ2Uu
CisKKyAgICAgICAgQWxsb3cgc2V0dGluZyBhbmQgZ2V0dGluZyB0aGUgdmFsdWUgb2YgV2ViUGFn
ZSdzIGNhblJ1bk1vZGFsCisgICAgICAgIGF0dHJpYnV0ZSBpbiB0aGUgV2ViUHJvY2VzcyBmcm9t
IHRoZSBVSVByb2Nlc3MgYWZ0ZXIgdGhlIGNyZWF0aW9uCisgICAgICAgIG9mIGEgV2ViUGFnZSwg
YW5kIHVzZSBpdCBpbiBHVEsncyBXZWJLaXRXZWJWaWV3IHRvIGFsbG93IHRoZQorICAgICAgICBj
bGllbnQgYXBwbGljYXRpb24gdG8gZGVjaWRlIHdoZXRoZXIgdG8gYWxsb3cgY3JlYXRlIG1vZGFs
CisgICAgICAgIGRpYWxvZ3MsIHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBsYXVuY2hpbmcgYW4gYWRk
aXRpb25hbCBuZXN0ZWQKKyAgICAgICAgZXZlbnQgbG9vcCBpbiB0aGUgd2ViIHByb2Nlc3MsIGFm
dGVyIGNyZWF0aW5nIHRoZSBkaWFsb2cuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOiBJ
bml0aWFsaXplIHRoZSBuZXcKKyAgICAgICAgbV9jYW5SdW5Nb2RhbCBhdHRyaWJ1dGUsIHRvIGNh
Y2hlIHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUKKyAgICAgICAgV2ViUGFnZSBpbiB0aGUgV2Vi
UHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplVUlDbGll
bnQpOiBDYWxsIHRoZSBuZXcgZnVuY3Rpb24KKyAgICAgICAgc2V0Q2FuUnVuTW9kYWwsIGluc3Rl
YWQgb2YgbWFudWFsbHkgc2VuZGluZyB0aGUgU2V0Q2FuUnVuTW9kYWwgbWVzc2FnZS4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBVc2UgbV9jYW5S
dW5Nb2RhbAorICAgICAgICBpbnN0ZWFkIG9mIG1fdWlDbGllbnQuY2FuUnVuTW9kYWwgd2hlbiBw
cmVwYXJpbmcgdGhlIHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0Q2FuUnVuTW9kYWwpOiBOZXcgcHVibGljIGZ1bmN0aW9uLCBpdAorICAgICAgICBzZXRzIHRo
ZSB2YWx1ZSBvZiBtX2NhblJ1bk1vZGFsIGFuZCBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIFdlYgor
ICAgICAgICBwcm9jZXNzIGZvciB1cGRhdGluZyB0aGUgV2ViUGFnZSwgd2hlbmV2ZXIgcG9zc2li
bGUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FuUnVuTW9kYWwpOiBOZXcgcHVi
bGljIGZ1bmN0aW9uLCByZXR1cm5zCisgICAgICAgIHRoZSB2YWx1ZSBvZiB0aGUgbV9jYW5SdW5N
b2RhbCBhdHRyaWJ1dGUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAoV2ViUGFnZVByb3h5KTogQWRkZWQgbmV3IHB1YmxpYyBmdW5jdGlvbnMgYW5kIHByaXZh
dGUgYXR0cmlidXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2FsbG93X2NyZWF0ZV9tb2RhbF9k
aWFsb2dzKTogTmV3IHB1YmxpYworICAgICAgICBmdW5jdGlvbiwgYWxsb3dzIHNldHRpbmcgdGhl
IHZhbHVlIG9mIGNhblJ1bk1vZGFsIGluIHRoZSBXZWJQYWdlCisgICAgICAgIGFmdGVyIGl0IGJl
aW5nIGNyZWF0ZWQgdGhyb3VnaCB0aGUgbmV3IGZ1bmN0aW9ucyBpbiBXZWJQYWdlUHJveHkuCisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2FsbG93X2NyZWF0ZV9tb2RhbF9kaWFsb2dzKTog
TmV3IHB1YmxpYworICAgICAgICBmdW5jdGlvbiwgYWxsb3dzIGdldHRpbmcgdGhlIHZhbHVlIG9m
IGNhblJ1bk1vZGFsIGluIHRoZSBXZWJQYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuaDoKKworICAgICAgICBBZGQgbmV3IHVuaXQgdGVzdCB0byBjaGVjayB0
aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFsIGlzIGVtaXR0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2Vi
Vmlld0FsbG93TW9kYWxEaWFsb2dzKTogTmV3IHVuaXQgdGVzdCB0byBjaGVjayB0aGF0IG1vZGFs
CisgICAgICAgIGRpYWxvZ3MgYXJlIHByb3Blcmx5IGNyZWF0ZWQgZnJvbSBKYXZhU2NyaXB0IHdo
ZW4gYWxsb3dlZC4KKyAgICAgICAgKHRlc3RXZWJWaWV3RGlzYWxsb3dNb2RhbERpYWxvZ3MpOiBO
ZXcgdW5pdCB0ZXN0IHRvIGNoZWNrIHRoYXQKKyAgICAgICAgaXQncyBub3QgcG9zc2libGUgdG8g
Y3JlYXRlIG1vZGFsIGRpYWxvZ3Mgd2hlbiBub3QgYWxsb3dlZC4KKyAgICAgICAgKGJlZm9yZUFs
bCk6IEFkZCB0aGUgbmV3IHVuaXQgdGVzdC4KKwogMjAxMi0wMi0yNyAgTWFyaW8gU2FuY2hleiBQ
cmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIEdNYWluTG9v
cCBhbmQgR01haW5Db250ZXh0IHRvIGJlIGhhbmRsZWQgYnkgR1JlZlB0cgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDZm
MGUxMWMuLmU3N2I3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTEzNiw2ICsxMzYsMTEgQEAgc3RhdGljIHZvaWQg
cHJpbnRGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCop
CiAgICAgd2Via2l0V2ViVmlld1ByaW50RnJhbWUoV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdl
KS0+dmlld1dpZGdldCgpKSwgZnJhbWUpOwogfQogCitzdGF0aWMgdm9pZCBydW5Nb2RhbChXS1Bh
Z2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB3ZWJraXRXZWJWaWV3
UnVuQXNNb2RhbChXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbykpOworfQorCiB2b2lkIGF0dGFj
aFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgV0tQYWdlVUlD
bGllbnQgd2tVSUNsaWVudCA9IHsKQEAgLTE3Niw3ICsxODEsNyBAQCB2b2lkIGF0dGFjaFVJQ2xp
ZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDAsIC8vIGRyYXdIZWFk
ZXIKICAgICAgICAgMCwgLy8gZHJhd0Zvb3RlcgogICAgICAgICBwcmludEZyYW1lLAotICAgICAg
ICAwLCAvLyBydW5Nb2RhbAorICAgICAgICBydW5Nb2RhbCwKICAgICAgICAgMCwgLy8gZGlkQ29t
cGxldGVSdWJiZXJCYW5kRm9yTWFpbkZyYW1lCiAgICAgICAgIDAsIC8vIHNhdmVEYXRhVG9GaWxl
SW5Eb3dubG9hZHNGb2xkZXIKICAgICAgICAgMCwgLy8gc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlw
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcAppbmRleCBiZTU5MGZmLi5mMGNkNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNTMsNiArNTMsNyBAQCBlbnVt
IHsKIAogICAgIENSRUFURSwKICAgICBSRUFEWV9UT19TSE9XLAorICAgIFJVTl9BU19NT0RBTCwK
ICAgICBDTE9TRSwKIAogICAgIFNDUklQVF9BTEVSVCwKQEAgLTkwLDYgKzkxLDggQEAgc3RydWN0
IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRTZXR0aW5ncz4gc2V0
dGluZ3M7CiAgICAgR1JlZlB0cjxXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzPiB3aW5kb3dQcm9wZXJ0
aWVzOwogCisgICAgR1JlZlB0cjxHTWFpbkxvb3A+IG1vZGFsTG9vcDsKKwogICAgIEdSZWZQdHI8
V2ViS2l0SGl0VGVzdFJlc3VsdD4gbW91c2VUYXJnZXRIaXRUZXN0UmVzdWx0OwogICAgIHVuc2ln
bmVkIG1vdXNlVGFyZ2V0TW9kaWZpZXJzOwogfTsKQEAgLTIyOSw3ICsyMzIsMTMgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBHVmFsdWUqIHZhbHUKIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0ZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCkKIHsKLSAgICBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KS0+cHJpdi0+fldl
YktpdFdlYlZpZXdQcml2YXRlKCk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJ
VF9XRUJfVklFVyhvYmplY3QpOworCisgICAgLy8gRm9yIG1vZGFsIGRpYWxvZ3MsIG1ha2Ugc3Vy
ZSB0aGUgbWFpbiBsb29wIGlzIHN0b3BwZWQgd2hlbiBmaW5hbGl6aW5nIHRoZSB3ZWJWaWV3Lgor
ICAgIGlmICh3ZWJWaWV3LT5wcml2LT5tb2RhbExvb3AgJiYgZ19tYWluX2xvb3BfaXNfcnVubmlu
Zyh3ZWJWaWV3LT5wcml2LT5tb2RhbExvb3AuZ2V0KCkpKQorICAgICAgICBnX21haW5fbG9vcF9x
dWl0KHdlYlZpZXctPnByaXYtPm1vZGFsTG9vcC5nZXQoKSk7CisKKyAgICB3ZWJWaWV3LT5wcml2
LT5+V2ViS2l0V2ViVmlld1ByaXZhdGUoKTsKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2Vi
X3ZpZXdfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIApAQCAtNDc2LDYgKzQ4
NSwyNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJW
aWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05F
LCAwKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnJ1bi1hcy1tb2RhbDoKKyAg
ICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlz
IGVtaXR0ZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBKYXZhU2NyaXB0IGNvZGUgY2Fs
bHMKKyAgICAgKiA8ZnVuY3Rpb24+d2luZG93LnNob3dNb2RhbERpYWxvZzwvZnVuY3Rpb24+LCBy
aWdodCBiZWZvcmUKKyAgICAgKiBjcmVhdGluZyBhbmQgcnVubmluZyBhIG5ldyBtYWlubG9vcCB0
byBibG9jayB1c2VyIGludGVyYWN0aW9uCisgICAgICogaW4gdGhlIHBhcmVudCB3ZWJ2aWV3IHVu
dGlsIHRoZSBjdXJyZW50IHdlYnZpZXcgaXMgZmluYWxpemVkLgorICAgICAqLworICAgIHNpZ25h
bHNbUlVOX0FTX01PREFMXSA9CisgICAgICAgICAgICBnX3NpZ25hbF9uZXcoInJ1bi1hcy1tb2Rh
bCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0Ns
YXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBy
dW5fYXNfbW9kYWwpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOworCisgICAgLyoqCiAgICAgICogV2ViS2l0
V2ViVmlldzo6Y2xvc2U6CiAgICAgICogQHdlYlZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3
aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAgKgpAQCAtNzU2LDYgKzc4MywxNiBAQCB2
b2lkIHdlYmtpdFdlYlZpZXdSZWFkeVRvU2hvd1BhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbUkVBRFlfVE9fU0hPV10sIDAsIE5V
TEwpOwogfQogCit2b2lkIHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCit7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1JVTl9BU19NT0RB
TF0sIDAsIE5VTEwpOworCisgICAgd2ViVmlldy0+cHJpdi0+bW9kYWxMb29wID0gYWRvcHRHUmVm
KGdfbWFpbl9sb29wX25ldygwLCBGQUxTRSkpOworICAgIEdES19USFJFQURTX0VOVEVSKCk7Cisg
ICAgZ19tYWluX2xvb3BfcnVuKHdlYlZpZXctPnByaXYtPm1vZGFsTG9vcC5nZXQoKSk7CisgICAg
R0RLX1RIUkVBRFNfTEVBVkUoKTsKK30KKwogdm9pZCB3ZWJraXRXZWJWaWV3Q2xvc2VQYWdlKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWdu
YWxzW0NMT1NFXSwgMCwgTlVMTCk7CkBAIC0xMzYzLDYgKzE0MDAsMzYgQEAgZ2RvdWJsZSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3pvb21fbGV2ZWwoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBy
ZXR1cm4gV0tQYWdlR2V0UGFnZVpvb21GYWN0b3Iod2tQYWdlKTsKIH0KIAorLyoqCisgKiB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X2FsbG93X2NyZWF0ZV9tb2RhbF9kaWFsb2dzOgorICogQHdlYl92aWV3
OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAYWxsb3dlZDogd2hldGhlciB0byBhbGxvdyBjcmVhdGlu
ZyBtb2RhbCBkaWFsb2dzCisgKgorICogRW5hYmxlIHRoZSBjdXJyZW50IHdlYiB2aWV3IHRvIGNy
ZWF0ZSBhbmQgcnVuIG1vZGFsIGRpYWxvZ3MgZnJvbQorICogSmF2YVNjcmlwdCB0aHJvdWdoIHRo
ZSA8ZnVuY3Rpb24+d2luZG93LnNob3dNb2RhbERpYWxvZzwvZnVuY3Rpb24+LgorICovCit2b2lk
IHdlYmtpdF93ZWJfdmlld19zZXRfYWxsb3dfY3JlYXRlX21vZGFsX2RpYWxvZ3MoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgZ2Jvb2xlYW4gYWxsb3dlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0g
d2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsK
KyAgICBwYWdlLT5zZXRDYW5SdW5Nb2RhbChlbmFibGUpOworfQorCisvKioKKyAqIHdlYmtpdF93
ZWJfdmlld19nZXRfYWxsb3dfY3JlYXRlX21vZGFsX2RpYWxvZ3M6CisgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKKyAqCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgQHdlYl92aWV3IGNhbiBj
cmVhdGUgYW5kIHJ1biBtb2RhbCBkaWFsb2dzIGZyb20KKyAqIEphdmFTY3JpcHQgdGhyb3VnaCB0
aGUgPGZ1bmN0aW9uPndpbmRvdy5zaG93TW9kYWxEaWFsb2c8L2Z1bmN0aW9uPi4KKyAqCisgKiBS
ZXR1cm5zOiAlVFJVRSBpZiBhYmxlIHRvIGNyZWF0ZSBhbmQgcnVuIG1vZGFsIGRpYWxvZ3Mgb3Ig
JUZBTFNFIG90aGVyd2lzZS4KKyAqLworZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2dldF9hbGxv
d19jcmVhdGVfbW9kYWxfZGlhbG9ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwor
ICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRf
V0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7CisgICAgcmV0dXJuIHBhZ2UtPmNhblJ1bk1vZGFsKCk7
Cit9CiAKIHN0YXRpYyB2b2lkIGRpZFZhbGlkYXRlQ29tbWFuZChXS1N0cmluZ1JlZiBjb21tYW5k
LCBib29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0ZSwgV0tFcnJvclJlZiwgdm9pZCogY29udGV4
dCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuaAppbmRleCBhMWIyMTQyLi42NGM1ZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0xMjYsNiArMTI2LDcgQEAgc3RydWN0
IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogCiAgICAgR3RrV2lkZ2V0ICooKiBjcmVhdGUpICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKICAgICB2b2lk
ICAgICAgICgqIHJlYWR5X3RvX3Nob3cpICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOworICAgIGdib29sZWFuICAgKCogcnVuX2FzX21vZGFsKSAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAgICAgdm9pZCAgICAgICAoKiBj
bG9zZSkgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3
KTsKIAogICAgIGdib29sZWFuICAgKCogc2NyaXB0X2FsZXJ0KSAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKQEAgLTI1Miw2ICsyNTMsMTMgQEAgV0VCS0lUX0FQ
SSBnZG91YmxlCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3pvb21fbGV2ZWwgICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCiBXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfYWxsb3dfY3JlYXRlX21vZGFsX2RpYWxvZ3MgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAg
ICAgICBhbGxvd2VkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3dlYl92aWV3X2dl
dF9hbGxvd19jcmVhdGVfbW9kYWxfZGlhbG9ncyAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3KTsKKworV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2V4
ZWN1dGVfZWRpdGluZ19jb21tYW5kICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAq
d2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAqY29tbWFuZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxiYWNr
ICAgICAgICBjYWxsYmFjaywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGFkOGFiMjAuLmE4NDYzM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld1ByaXZhdGUuaApAQCAtMzgsNiArMzgsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdTZXRUaXRs
ZShXZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0cmluZyYpOwogdm9pZCB3ZWJraXRXZWJWaWV3VXBk
YXRlVVJJKFdlYktpdFdlYlZpZXcqKTsKIFdLUGFnZVJlZiB3ZWJraXRXZWJWaWV3Q3JlYXRlTmV3
UGFnZShXZWJLaXRXZWJWaWV3KiwgV0tEaWN0aW9uYXJ5UmVmIHdrV2luZG93RmVhdHVyZXMpOwog
dm9pZCB3ZWJraXRXZWJWaWV3UmVhZHlUb1Nob3dQYWdlKFdlYktpdFdlYlZpZXcqKTsKK3ZvaWQg
d2Via2l0V2ViVmlld1J1bkFzTW9kYWwoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJW
aWV3Q2xvc2VQYWdlKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld1J1bkphdmFT
Y3JpcHRBbGVydChXZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZSk7CiBib29s
IHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q29uZmlybShXZWJLaXRXZWJWaWV3KiwgY29uc3Qg
Q1N0cmluZyYgbWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNDdkYTk4ZS4u
YzA2YzgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTAzLDYgKzEwMyw3IEBAIHB1
YmxpYzoKICAgICBlbnVtIFdlYlZpZXdFdmVudHMgewogICAgICAgICBDcmVhdGUsCiAgICAgICAg
IFJlYWR5VG9TaG93LAorICAgICAgICBSdW5Bc01vZGFsLAogICAgICAgICBDbG9zZQogICAgIH07
CiAKQEAgLTE4NCw2ICsxODUsMTIgQEAgcHVibGljOgogICAgICAgICB0ZXN0LT5tX3dpbmRvd1By
b3BlcnRpZXNDaGFuZ2VkLmFkZChnX3BhcmFtX3NwZWNfZ2V0X25hbWUocGFyYW1TcGVjKSk7CiAg
ICAgfQogCisgICAgc3RhdGljIHZvaWQgZGlhbG9nUnVuQXNNb2RhbChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBVSUNsaWVudFRlc3QqIHRlc3QpCisgICAgeworICAgICAgICBnX2Fzc2VydCh3ZWJW
aWV3ICE9IHRlc3QtPm1fd2ViVmlldyk7CisgICAgICAgIHRlc3QtPm1fd2ViVmlld0V2ZW50cy5h
cHBlbmQoUnVuQXNNb2RhbCk7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgdmlld0Nsb3NlKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIFVJQ2xpZW50VGVzdCogdGVzdCkKICAgICB7CiAgICAgICAg
IGdfYXNzZXJ0KHdlYlZpZXcgIT0gdGVzdC0+bV93ZWJWaWV3KTsKQEAgLTE5OCwxMCArMjA1LDEx
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGdfYXNzZXJ0KHdlYlZpZXcgIT0gdGVzdC0+bV93
ZWJWaWV3KTsKIAotICAgICAgICBXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzKiB3aW5kb3dQcm9wZXJ0
aWVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfcHJvcGVydGllcyh3ZWJWaWV3KTsKLSAg
ICAgICAgZ19hc3NlcnQod2luZG93UHJvcGVydGllcyk7Ci0gICAgICAgIFdpbmRvd1Byb3BlcnRp
ZXMod2luZG93UHJvcGVydGllcykuYXNzZXJ0RXF1YWwodGVzdC0+bV93aW5kb3dQcm9wZXJ0aWVz
KTsKLQorICAgICAgICBpZiAoIXRlc3QtPm1faXNNb2RhbERpYWxvZ1Rlc3QpIHsKKyAgICAgICAg
ICAgIFdlYktpdFdpbmRvd1Byb3BlcnRpZXMqIHdpbmRvd1Byb3BlcnRpZXMgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3dpbmRvd19wcm9wZXJ0aWVzKHdlYlZpZXcpOworICAgICAgICAgICAgZ19hc3Nl
cnQod2luZG93UHJvcGVydGllcyk7CisgICAgICAgICAgICBXaW5kb3dQcm9wZXJ0aWVzKHdpbmRv
d1Byb3BlcnRpZXMpLmFzc2VydEVxdWFsKHRlc3QtPm1fd2luZG93UHJvcGVydGllcyk7CisgICAg
ICAgIH0KICAgICAgICAgdGVzdC0+bV93ZWJWaWV3RXZlbnRzLmFwcGVuZChSZWFkeVRvU2hvdyk7
CiAgICAgfQogCkBAIC0yMjEsNiArMjI5LDggQEAgcHVibGljOgogICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KHdpbmRvd1Byb3BlcnRpZXMsICJub3RpZnkiLCBHX0NBTExCQUNLKHdpbmRvd1Byb3Bl
cnRpZXNOb3RpZnlDYWxsYmFjayksIHRlc3QpOwogCiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bmV3V2ViVmlldywgInJlYWR5LXRvLXNob3ciLCBHX0NBTExCQUNLKHZpZXdSZWFkeVRvU2hvdyks
IHRlc3QpOworICAgICAgICBpZiAodGVzdC0+bV9pc01vZGFsRGlhbG9nVGVzdCkKKyAgICAgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgInJ1bi1hcy1tb2RhbCIsIEdfQ0FMTEJB
Q0soZGlhbG9nUnVuQXNNb2RhbCksIHRlc3QpOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG5l
d1dlYlZpZXcsICJjbG9zZSIsIEdfQ0FMTEJBQ0sodmlld0Nsb3NlKSwgdGVzdCk7CiAKICAgICAg
ICAgcmV0dXJuIG5ld1dlYlZpZXc7CkBAIC0yODAsNiArMjkwLDcgQEAgcHVibGljOgogICAgIFVJ
Q2xpZW50VGVzdCgpCiAgICAgICAgIDogbV9zY3JpcHRUeXBlKEFsZXJ0KQogICAgICAgICAsIG1f
c2NyaXB0RGlhbG9nQ29uZmlybWVkKHRydWUpCisgICAgICAgICwgbV9pc01vZGFsRGlhbG9nVGVz
dChmYWxzZSkKICAgICAgICAgLCBtX21vdXNlVGFyZ2V0TW9kaWZpZXJzKDApCiAgICAgewogICAg
ICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRv
bWF0aWNhbGx5KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MobV93ZWJWaWV3KSwgVFJVRSk7
CkBAIC0zMTUsNiArMzI2LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxXZWJWaWV3RXZlbnRzPiBt
X3dlYlZpZXdFdmVudHM7CiAgICAgU2NyaXB0VHlwZSBtX3NjcmlwdFR5cGU7CiAgICAgYm9vbCBt
X3NjcmlwdERpYWxvZ0NvbmZpcm1lZDsKKyAgICBib29sIG1faXNNb2RhbERpYWxvZ1Rlc3Q7CiAg
ICAgV2luZG93UHJvcGVydGllcyBtX3dpbmRvd1Byb3BlcnRpZXM7CiAgICAgSGFzaFNldDxXVEY6
OlN0cmluZz4gbV93aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZDsKICAgICBHUmVmUHRyPFdlYktpdEhp
dFRlc3RSZXN1bHQ+IG1fbW91c2VUYXJnZXRIaXRUZXN0UmVzdWx0OwpAQCAtMzMzLDYgKzM0NSwz
MiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NyZWF0ZVJlYWR5Q2xvc2UoVUlDbGllbnRUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMl0sID09
LCBVSUNsaWVudFRlc3Q6OkNsb3NlKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBbGxv
d01vZGFsRGlhbG9ncyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAg
d2Via2l0X3dlYl92aWV3X3NldF9hbGxvd19jcmVhdGVfbW9kYWxfZGlhbG9ncyh0ZXN0LT5tX3dl
YlZpZXcsIFRSVUUpOworICAgIHRlc3QtPm1faXNNb2RhbERpYWxvZ1Rlc3QgPSB0cnVlOworICAg
IHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keSBvbmxvYWQ9XCJ3aW5kb3cuc2hvd01vZGFsRGlh
bG9nKCdkYXRhOnRleHQvaHRtbCw8aHRtbD48Ym9keS8+PHNjcmlwdD53aW5kb3cuY2xvc2UoKTs8
L3NjcmlwdD48L2h0bWw+JylcIj48L2JvZHk+PC9odG1sPiIsIDApOworICAgIHRlc3QtPndhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgVmVjdG9yPFVJQ2xpZW50VGVzdDo6V2ViVmlld0V2
ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fd2ViVmlld0V2ZW50czsKKyAgICBnX2Fzc2VydF9jbXBp
bnQoZXZlbnRzLnNpemUoKSwgPT0sIDQpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0s
ID09LCBVSUNsaWVudFRlc3Q6OkNyZWF0ZSk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1sx
XSwgPT0sIFVJQ2xpZW50VGVzdDo6UmVhZHlUb1Nob3cpOworICAgIGdfYXNzZXJ0X2NtcGludChl
dmVudHNbMl0sID09LCBVSUNsaWVudFRlc3Q6OlJ1bkFzTW9kYWwpOworICAgIGdfYXNzZXJ0X2Nt
cGludChldmVudHNbM10sID09LCBVSUNsaWVudFRlc3Q6OkNsb3NlKTsKK30KKworc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdEaXNhbGxvd01vZGFsRGlhbG9ncyhVSUNsaWVudFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCit7CisgICAgd2Via2l0X3dlYl92aWV3X3NldF9hbGxvd19jcmVhdGVfbW9k
YWxfZGlhbG9ncyh0ZXN0LT5tX3dlYlZpZXcsIEZBTFNFKTsKKyAgICB0ZXN0LT5tX2lzTW9kYWxE
aWFsb2dUZXN0ID0gdHJ1ZTsKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25sb2Fk
PVwid2luZG93LnNob3dNb2RhbERpYWxvZygnZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGJvZHkvPjxz
Y3JpcHQ+d2luZG93LmNsb3NlKCk7PC9zY3JpcHQ+PC9odG1sPicpXCI+PC9ib2R5PjwvaHRtbD4i
LCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIFZlY3RvcjxV
SUNsaWVudFRlc3Q6OldlYlZpZXdFdmVudHM+JiBldmVudHMgPSB0ZXN0LT5tX3dlYlZpZXdFdmVu
dHM7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCAwKTsKK30KKwogc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9ncyhVSUNsaWVudFRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGh0bWxPbkxvYWRGb3Jt
YXQgPSAiPGh0bWw+PGJvZHkgb25Mb2FkPVwiJXNcIj48L2JvZHk+PC9odG1sPiI7CkBAIC00NTYs
NiArNDk0LDggQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktp
dFdlYlZpZXciLCAic2V0dGluZ3MiLCB0ZXN0V2ViVmlld1NldHRpbmdzKTsKICAgICBXZWJWaWV3
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInJlcGxhY2UtY29udGVudCIsIHRlc3RXZWJWaWV3
UmVwbGFjZUNvbnRlbnQpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
ImNyZWF0ZS1yZWFkeS1jbG9zZSIsIHRlc3RXZWJWaWV3Q3JlYXRlUmVhZHlDbG9zZSk7CisgICAg
VUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiYWxsb3ctbW9kYWwtZGlhbG9ncyIs
IHRlc3RXZWJWaWV3QWxsb3dNb2RhbERpYWxvZ3MpOworICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgImRpc2FsbG93LW1vZGFsLWRpYWxvZ3MiLCB0ZXN0V2ViVmlld0Rpc2Fs
bG93TW9kYWxEaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJqYXZhc2NyaXB0LWRpYWxvZ3MiLCB0ZXN0V2ViVmlld0phdmFTY3JpcHREaWFsb2dzKTsKICAg
ICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ3aW5kb3ctcHJvcGVydGllcyIs
IHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAibW91c2UtdGFyZ2V0IiwgdGVzdFdlYlZpZXdNb3VzZVRhcmdldCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhlYTNmZTQuLjk3
Yjg0ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MTcxLDYgKzE3MSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqIHBh
Z2VDbGllbnQsIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwCiAgICAgLCBtX2dhcEJldHdl
ZW5QYWdlcygwKQogICAgICwgbV9pc1ZhbGlkKHRydWUpCiAgICAgLCBtX2lzQ2xvc2VkKGZhbHNl
KQorICAgICwgbV9jYW5SdW5Nb2RhbChmYWxzZSkKICAgICAsIG1faXNJblByaW50aW5nTW9kZShm
YWxzZSkKICAgICAsIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24oZmFsc2UpCiAgICAg
LCBtX2luRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoZmFsc2UpCkBAIC0yODQsNyArMjg1LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVVSUNsaWVudChjb25zdCBXS1BhZ2VVSUNsaWVu
dCogY2xpZW50KQogICAgIG1fdWlDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwogCiAgICAgcHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwobV91aUNsaWVudC5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSksIG1f
cGFnZUlEKTsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENhblJ1
bk1vZGFsKG1fdWlDbGllbnQuY2FuUnVuTW9kYWwoKSksIG1fcGFnZUlEKTsKKyAgICBzZXRDYW5S
dW5Nb2RhbChtX3VpQ2xpZW50LmNhblJ1bk1vZGFsKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6aW5pdGlhbGl6ZUZpbmRDbGllbnQoY29uc3QgV0tQYWdlRmluZENsaWVudCogY2xpZW50KQpA
QCAtMzMxMSw3ICszMzEyLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJv
eHk6OmNyZWF0aW9uUGFyYW1ldGVycygpIGNvbnN0CiAgICAgcGFyYW1ldGVycy5zZXNzaW9uU3Rh
dGUgPSBTZXNzaW9uU3RhdGUobV9iYWNrRm9yd2FyZExpc3QtPmVudHJpZXMoKSwgbV9iYWNrRm9y
d2FyZExpc3QtPmN1cnJlbnRJbmRleCgpKTsKICAgICBwYXJhbWV0ZXJzLmhpZ2hlc3RVc2VkQmFj
a0ZvcndhcmRJdGVtSUQgPSBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpoaWdoZWRVc2VkSXRlbUlE
KCk7CiAgICAgcGFyYW1ldGVycy5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgPSBtX3Vp
Q2xpZW50LmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpOwotICAgIHBhcmFtZXRlcnMu
Y2FuUnVuTW9kYWwgPSBtX3VpQ2xpZW50LmNhblJ1bk1vZGFsKCk7CisgICAgcGFyYW1ldGVycy5j
YW5SdW5Nb2RhbCA9IG1fY2FuUnVuTW9kYWw7CiAgICAgcGFyYW1ldGVycy5kZXZpY2VTY2FsZUZh
Y3RvciA9IG1faW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3I7CiAgICAgcGFyYW1ldGVycy5tZWRp
YVZvbHVtZSA9IG1fbWVkaWFWb2x1bWU7CiAKQEAgLTM0ODksNiArMzQ5MCwyMyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6YmFja0ZvcndhcmRSZW1vdmVkSXRlbSh1aW50NjRfdCBpdGVtSUQpCiAgICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9yd2FyZEl0
ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q2FuUnVu
TW9kYWwoYm9vbCBjYW5SdW5Nb2RhbCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gSXQncyBvbmx5IHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgc3RhdGUg
Zm9yIGEgV2ViUGFnZSB3aGljaAorICAgIC8vIGFscmVhZHkgcXVhbGlmaWVzIGZvciBydW5uaW5n
IG1vZGFsIGNoaWxkIHdlYiBwYWdlcywgb3RoZXJ3aXNlCisgICAgLy8gdGhlcmUncyBubyBvdGhl
ciBwb3NzaWJpbGl0eSB0aGFuIG5vdCBhbGxvd2luZyBpdC4KKyAgICBtX2NhblJ1bk1vZGFsID0g
bV91aUNsaWVudC5jYW5SdW5Nb2RhbCgpICYmIGNhblJ1bk1vZGFsOworICAgIHByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuTW9kYWwobV9jYW5SdW5Nb2RhbCksIG1f
cGFnZUlEKTsKK30KKworYm9vbCBXZWJQYWdlUHJveHk6OmNhblJ1bk1vZGFsKCkKK3sKKyAgICBy
ZXR1cm4gaXNWYWxpZCgpID8gbV9jYW5SdW5Nb2RhbCA6IGZhbHNlOworfQorCiB2b2lkIFdlYlBh
Z2VQcm94eTo6YmVnaW5QcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJ
bmZvJiBwcmludEluZm8pCiB7CiAgICAgaWYgKG1faXNJblByaW50aW5nTW9kZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhZjhkYTFiLi5iZjVlOGYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01ODMsNiArNTgzLDkgQEAg
cHVibGljOgogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5UGx1Z0lEKCkgY29uc3QgeyByZXR1cm4g
bV9hY2Nlc3NpYmlsaXR5UGx1Z0lEOyB9CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0Q2FuUnVuTW9k
YWwoYm9vbCk7CisgICAgYm9vbCBjYW5SdW5Nb2RhbCgpOworCiAgICAgdm9pZCBiZWdpblByaW50
aW5nKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mKTsKICAgICB2b2lkIGVuZFByaW50
aW5nKCk7CiAgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5Kiwg
Y29uc3QgUHJpbnRJbmZvJiwgUGFzc1JlZlB0cjxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+KTsKQEAg
LTk2MSw2ICs5NjQsOSBAQCBwcml2YXRlOgogICAgIC8vIFdoZXRoZXIgV2ViUGFnZVByb3h5Ojpj
bG9zZSgpIGhhcyBiZWVuIGNhbGxlZCBvbiB0aGlzIHBhZ2UuCiAgICAgYm9vbCBtX2lzQ2xvc2Vk
OwogCisgICAgLy8gV2hldGhlciBpdCBjYW4gcnVuIG1vZGFsIGNoaWxkIHdlYiBwYWdlcy4KKyAg
ICBib29sIG1fY2FuUnVuTW9kYWw7CisKICAgICBib29sIG1faXNJblByaW50aW5nTW9kZTsKICAg
ICBib29sIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb247CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MzA3YzMzLi42ZjNjY2ZlIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTItMDItMjggIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciB3aW5kb3cuc2hvd01vZGFs
RGlhbG9nIGluIFdlYktpdDJHVEsrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03OTUwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBtb2RhbCBkaWFsb2dzIGluIEdUSydzIE1pbmlC
cm93c2VyLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAg
ICAgICAgKHdlYlZpZXdSdW5Bc01vZGFsKToKKyAgICAgICAgKHdlYlZpZXdDcmVhdGUpOgorICAg
ICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6CisgICAgICAgIChicm93c2VyX3dpbmRvd19uZXcp
OgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93Lmg6CisgICAgICAgICog
TWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAgKGNyZWF0ZUJyb3dzZXJXaW5kb3cpOgor
CiAyMDEyLTAyLTI1ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgQ2hhbmdlIEJ1aWxkIGJvdCB3aXRoIEJ1aWxkQW5kVGVzdCBib3QgZm9yIEVGTCBw
b3J0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBi
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggNzQ1MTg0NC4uMzc4
NDlkMiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC0yMDMsNiArMjAz
LDExIEBAIHN0YXRpYyB2b2lkIHdlYlZpZXdDbG9zZShXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBC
cm93c2VyV2luZG93ICp3aW5kb3cpCiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQo
d2luZG93KSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYlZpZXdSdW5Bc01vZGFsKFdlYktpdFdlYlZp
ZXcgKndlYlZpZXcsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3sKKyAgICBndGtfd2luZG93X3Nl
dF9tb2RhbChHVEtfV0lORE9XKHdpbmRvdyksIFRSVUUpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJW
aWV3UmVhZHlUb1Nob3coV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2lu
ZG93KQogewogICAgIFdlYktpdFdpbmRvd1Byb3BlcnRpZXMgKndpbmRvd1Byb3BlcnRpZXMgPSB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19wcm9wZXJ0aWVzKHdlYlZpZXcpOwpAQCAtMjMwLDgg
KzIzNSw5IEBAIHN0YXRpYyBHdGtXaWRnZXQgKndlYlZpZXdDcmVhdGUoV2ViS2l0V2ViVmlldyAq
d2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIFdlYktpdFdlYlZpZXcgKm5ld1dl
YlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQo
d2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcpKSk7CiAgICAgd2Via2l0X3dlYl92
aWV3X3NldF9zZXR0aW5ncyhuZXdXZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdz
KHdlYlZpZXcpKTsKIAotICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3df
bmV3KG5ld1dlYlZpZXcpOworICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5k
b3dfbmV3KG5ld1dlYlZpZXcsIEdUS19XSU5ET1cod2luZG93KSk7CiAgICAgZ19zaWduYWxfY29u
bmVjdChuZXdXZWJWaWV3LCAicmVhZHktdG8tc2hvdyIsIEdfQ0FMTEJBQ0sod2ViVmlld1JlYWR5
VG9TaG93KSwgbmV3V2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJy
dW4tYXMtbW9kYWwiLCBHX0NBTExCQUNLKHdlYlZpZXdSdW5Bc01vZGFsKSwgbmV3V2luZG93KTsK
ICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJjbG9zZSIsIEdfQ0FMTEJBQ0sod2Vi
Vmlld0Nsb3NlKSwgbmV3V2luZG93KTsKICAgICByZXR1cm4gR1RLX1dJREdFVChuZXdXZWJWaWV3
KTsKIH0KQEAgLTI1NCw3ICsyNjAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0RlY2lkZVBv
bGljeShXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQb2xpY3lEZWNpc2lvbgogCiAgICAg
V2ViS2l0V2ViVmlldyAqbmV3V2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfY29udGV4dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldykp
KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKG5ld1dlYlZpZXcsIHdlYmtpdF93
ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldykpOwotICAgIEd0a1dpZGdldCAqbmV3V2luZG93
ID0gYnJvd3Nlcl93aW5kb3dfbmV3KG5ld1dlYlZpZXcpOworICAgIEd0a1dpZGdldCAqbmV3V2lu
ZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KG5ld1dlYlZpZXcsIEdUS19XSU5ET1cod2luZG93KSk7
CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZ2V0X3JlcXVlc3QobmF2aWdhdGlvbkRlY2lzaW9uKSk7
CiAgICAgZ3RrX3dpZGdldF9zaG93KG5ld1dpbmRvdyk7CiAKQEAgLTQ2NSwxMSArNDcxLDEyIEBA
IHN0YXRpYyB2b2lkIGJyb3dzZXJfd2luZG93X2NsYXNzX2luaXQoQnJvd3NlcldpbmRvd0NsYXNz
ICprbGFzcykKIH0KIAogLy8gUHVibGljIEFQSS4KLUd0a1dpZGdldCAqYnJvd3Nlcl93aW5kb3df
bmV3KFdlYktpdFdlYlZpZXcgKnZpZXcpCitHdGtXaWRnZXQgKmJyb3dzZXJfd2luZG93X25ldyhX
ZWJLaXRXZWJWaWV3ICp2aWV3LCBHdGtXaW5kb3cgKnBhcmVudCkKIHsKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcodmlldyksIDApOwogCiAgICAgcmV0dXJuIEdU
S19XSURHRVQoZ19vYmplY3RfbmV3KEJST1dTRVJfVFlQRV9XSU5ET1csCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc2llbnQtZm9yIiwgcGFyZW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIsIEdUS19XSU5ET1dfVE9QTEVWRUwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2aWV3IiwgdmlldywgTlVMTCkpOwog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuaCBiL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmgKaW5kZXggNDZhMDZjMi4uOTQ5NWE4
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuaAorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCkBAIC00Myw3ICs0Myw3IEBA
IHR5cGVkZWYgc3RydWN0IF9Ccm93c2VyV2luZG93Q2xhc3MgICBCcm93c2VyV2luZG93Q2xhc3M7
CiAKIEdUeXBlIGJyb3dzZXJfd2luZG93X2dldF90eXBlKHZvaWQpOwogCi1HdGtXaWRnZXQqIGJy
b3dzZXJfd2luZG93X25ldyhXZWJLaXRXZWJWaWV3Kik7CitHdGtXaWRnZXQqIGJyb3dzZXJfd2lu
ZG93X25ldyhXZWJLaXRXZWJWaWV3KiwgR3RrV2luZG93Kik7CiBXZWJLaXRXZWJWaWV3KiBicm93
c2VyX3dpbmRvd19nZXRfdmlldyhCcm93c2VyV2luZG93Kik7CiAKIEdfRU5EX0RFQ0xTCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL21haW4uYwppbmRleCA5Njc0OGE2Li42MzkzNjEyIDEwMDY0NAotLS0gYS9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAg
LTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGdjaGFyICphcmd1bWVudFRvVVJMKGNvbnN0IGNoYXIgKmZp
bGVuYW1lKQogc3RhdGljIHZvaWQgY3JlYXRlQnJvd3NlcldpbmRvdyhjb25zdCBnY2hhciAqdXJp
LCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MpCiB7CiAgICAgR3RrV2lkZ2V0ICp3ZWJW
aWV3ID0gd2Via2l0X3dlYl92aWV3X25ldygpOwotICAgIEd0a1dpZGdldCAqbWFpbldpbmRvdyA9
IGJyb3dzZXJfd2luZG93X25ldyhXRUJLSVRfV0VCX1ZJRVcod2ViVmlldykpOworICAgIEd0a1dp
ZGdldCAqbWFpbldpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhXRUJLSVRfV0VCX1ZJRVcod2Vi
VmlldyksIE5VTEwpOwogICAgIGdjaGFyICp1cmwgPSBhcmd1bWVudFRvVVJMKHVyaSk7CiAKICAg
ICBpZiAod2Via2l0U2V0dGluZ3MpIHsKLS0gCjEuNy43LjUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129276</attachid>
            <date>2012-02-28 09:18:25 -0800</date>
            <delta_ts>2012-03-01 10:13:57 -0800</delta_ts>
            <desc>Patch proposal + Unit tests</desc>
            <filename>0001-2012-02-28-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>29456</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBiMjNiOTY1NzFlNzcwZGRiMjllNTQ5MmY4ZTBmYWM0NGY4YjRjZWU5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUdWUsIDI4IEZlYiAyMDEyIDE3OjI4OjA2ICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMi0wMi0yOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGlu
IFdlYktpdDJHVEsrCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc5NTAwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBJ
bXBsZW1lbnQgcnVuTW9kYWwgaW4gV2ViS2l0VUlDbGllbnQgdG8gbWFrZSB0aGUgV2ViS2l0V2Vi
VmlldwogICAgICAgIGVtaXQgYSAncnVuLWFzLW1vZGFsJyBzaWduYWwgd2hlbiByZXF1ZXN0ZWQs
IGNyZWF0aW5nIGEgbmV3CiAgICAgICAgbWFpbmxvb3AgdGhlcmUgdG8gYmxvY2sgdXNlciBpbnRl
cmFjdGlvbiB3aXRoIHRoZSBvcmlnaW5hbCB3aW5kb3cKICAgICAgICB3aGlsZSB0aGUgbW9kYWwg
ZGlhbG9nIGlzIHNob3dpbmcuCgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlD
bGllbnQuY3BwOgogICAgICAgIChydW5Nb2RhbCk6IENhbGwgdG8gdGhlIG5ldyB3ZWJraXRXZWJW
aWV3UnVuQXNNb2RhbFBhZ2UgZnVuY3Rpb24uCiAgICAgICAgKGF0dGFjaFVJQ2xpZW50VG9WaWV3
KTogQWRkIHJ1bk1vZGFsLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHA6CiAgICAgICAgKF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSk6IEFkZCBhbiBhdHJpYnV0ZSBm
b3IgYSBuZXcgbWFpbiBsb29wLgogICAgICAgICh3ZWJraXRXZWJWaWV3RmluYWxpemUpOiBNYWtl
IHN1cmUgdGhlIG1haW4gbG9vcCBmb3IgbWFpbiBkaWFsb2dzLAogICAgICAgIGlmIGFueSwgaXMg
c3RvcHBlZCBpZiBpdCB3YXMgc3RpbGwgcnVubmluZy4KICAgICAgICAod2Via2l0X3dlYl92aWV3
X2NsYXNzX2luaXQpOiBEZWNsYXJlIG5ldyBzaWduYWwgJ3J1bi1hcy1tb2RhbCcuCiAgICAgICAg
KHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsKTogRW1pdCB0aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFs
IGFuZCwgaWYKICAgICAgICBoYW5kbGVkLCBjcmVhdGUgYW5kIHJ1biBhIG5ldyBtYWluIGxvb3Au
CiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CiAgICAgICAgKF9X
ZWJLaXRXZWJWaWV3Q2xhc3MpOiBOZXcgaGFuZGxlciBmb3IgdGhlICdydW4tYXMtbW9kYWwnIHNp
Z25hbC4KICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6
IEFkZCB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbFBhZ2UuCgogICAgICAgIEFsbG93IHNldHRpbmcg
YW5kIGdldHRpbmcgdGhlIHZhbHVlIG9mIFdlYlBhZ2UncyBjYW5SdW5Nb2RhbAogICAgICAgIGF0
dHJpYnV0ZSBpbiB0aGUgV2ViUHJvY2VzcyBmcm9tIHRoZSBVSVByb2Nlc3MgYWZ0ZXIgdGhlIGNy
ZWF0aW9uCiAgICAgICAgb2YgYSBXZWJQYWdlLCBhbmQgdXNlIGl0IGluIEdUSydzIFdlYktpdFdl
YlZpZXcgdG8gYWxsb3cgdGhlCiAgICAgICAgY2xpZW50IGFwcGxpY2F0aW9uIHRvIGRlY2lkZSB3
aGV0aGVyIHRvIGFsbG93IGNyZWF0ZSBtb2RhbAogICAgICAgIGRpYWxvZ3MsIHdoaWNoIHdvdWxk
IHJlc3VsdCBpbiBsYXVuY2hpbmcgYW4gYWRkaXRpb25hbCBuZXN0ZWQKICAgICAgICBldmVudCBs
b29wIGluIHRoZSB3ZWIgcHJvY2VzcywgYWZ0ZXIgY3JlYXRpbmcgdGhlIGRpYWxvZy4KCiAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eSk6IEluaXRpYWxpemUgdGhlIG5ldwogICAgICAgIG1fY2FuUnVu
TW9kYWwgYXR0cmlidXRlLCB0byBjYWNoZSB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlCiAgICAg
ICAgV2ViUGFnZSBpbiB0aGUgV2ViUHJvY2Vzcy4KICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmluaXRpYWxpemVVSUNsaWVudCk6IENhbGwgdGhlIG5ldyBmdW5jdGlvbgogICAgICAgIHNl
dENhblJ1bk1vZGFsLCBpbnN0ZWFkIG9mIG1hbnVhbGx5IHNlbmRpbmcgdGhlIFNldENhblJ1bk1v
ZGFsIG1lc3NhZ2UuCiAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFt
ZXRlcnMpOiBVc2UgbV9jYW5SdW5Nb2RhbAogICAgICAgIGluc3RlYWQgb2YgbV91aUNsaWVudC5j
YW5SdW5Nb2RhbCB3aGVuIHByZXBhcmluZyB0aGUgcGFyYW1ldGVycy4KICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKTogTmV3IHB1YmxpYyBmdW5jdGlvbiwgaXQK
ICAgICAgICBzZXRzIHRoZSB2YWx1ZSBvZiBtX2NhblJ1bk1vZGFsIGFuZCBzZW5kcyBhIG1lc3Nh
Z2UgdG8gdGhlIFdlYgogICAgICAgIHByb2Nlc3MgZm9yIHVwZGF0aW5nIHRoZSBXZWJQYWdlLCB3
aGVuZXZlciBwb3NzaWJsZS4KICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhblJ1bk1v
ZGFsKTogTmV3IHB1YmxpYyBmdW5jdGlvbiwgcmV0dXJucwogICAgICAgIHRoZSB2YWx1ZSBvZiB0
aGUgbV9jYW5SdW5Nb2RhbCBhdHRyaWJ1dGUuCiAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CiAgICAgICAgKFdlYlBhZ2VQcm94eSk6IEFkZGVkIG5ldyBwdWJsaWMgZnVuY3Rpb25z
IGFuZCBwcml2YXRlIGF0dHJpYnV0ZS4KCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcDoKICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9hbGxvd19jcmVhdGVf
bW9kYWxfZGlhbG9ncyk6IE5ldyBwdWJsaWMKICAgICAgICBmdW5jdGlvbiwgYWxsb3dzIHNldHRp
bmcgdGhlIHZhbHVlIG9mIGNhblJ1bk1vZGFsIGluIHRoZSBXZWJQYWdlCiAgICAgICAgYWZ0ZXIg
aXQgYmVpbmcgY3JlYXRlZCB0aHJvdWdoIHRoZSBuZXcgZnVuY3Rpb25zIGluIFdlYlBhZ2VQcm94
eS4KICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9hbGxvd19jcmVhdGVfbW9kYWxfZGlhbG9n
cyk6IE5ldyBwdWJsaWMKICAgICAgICBmdW5jdGlvbiwgYWxsb3dzIGdldHRpbmcgdGhlIHZhbHVl
IG9mIGNhblJ1bk1vZGFsIGluIHRoZSBXZWJQYWdlLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oOgoKICAgICAgICBBZGQgbmV3IHVuaXQgdGVzdCB0byBjaGVjayB0
aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFsIGlzIGVtaXR0ZWQuCgogICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgogICAgICAgICh0ZXN0V2ViVmll
d0FsbG93TW9kYWxEaWFsb2dzKTogTmV3IHVuaXQgdGVzdCB0byBjaGVjayB0aGF0IG1vZGFsCiAg
ICAgICAgZGlhbG9ncyBhcmUgcHJvcGVybHkgY3JlYXRlZCBmcm9tIEphdmFTY3JpcHQgd2hlbiBh
bGxvd2VkLgogICAgICAgICh0ZXN0V2ViVmlld0Rpc2FsbG93TW9kYWxEaWFsb2dzKTogTmV3IHVu
aXQgdGVzdCB0byBjaGVjayB0aGF0CiAgICAgICAgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRl
IG1vZGFsIGRpYWxvZ3Mgd2hlbiBub3QgYWxsb3dlZC4KICAgICAgICAoYmVmb3JlQWxsKTogQWRk
IHRoZSBuZXcgdW5pdCB0ZXN0LgoKMjAxMi0wMi0yOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1z
YW5jaGV6QGlnYWxpYS5jb20+CgogICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciB3aW5kb3cu
c2hvd01vZGFsRGlhbG9nIGluIFdlYktpdDJHVEsrCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NTAwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgoKICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbW9kYWwgZGlhbG9ncyBpbiBHVEsncyBN
aW5pQnJvd3Nlci4KCiAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgog
ICAgICAgICh3ZWJWaWV3UnVuQXNNb2RhbCk6CiAgICAgICAgKHdlYlZpZXdDcmVhdGUpOgogICAg
ICAgICh3ZWJWaWV3RGVjaWRlUG9saWN5KToKICAgICAgICAoYnJvd3Nlcl93aW5kb3dfbmV3KToK
ICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93Lmg6CiAgICAgICAgKiBNaW5p
QnJvd3Nlci9ndGsvbWFpbi5jOgogICAgICAgIChjcmVhdGVCcm93c2VyV2luZG93KToKLS0tCiBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjYg
KysrKysrKysrKysrKysrKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VUlDbGllbnQuY3BwICAgfCAgICA3ICsrLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAgfCAgIDY5ICsrKysrKysrKysrKysrKysrKystCiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggICB8ICAgIDggKysKIC4u
Li9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oICAgICAgIHwgICAgMSAr
CiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwICB8ICAg
NTAgKysrKysrKysrKysrKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwICAgICAgICAgIHwgICAyMiArKysrKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggICAgICAgICAgICB8ICAgIDYgKysKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysrKwogVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyAgICAgICAgICAgICAgfCAgIDEzICsrKy0KIFRvb2xzL01p
bmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggICAgICAgICAgICAgIHwgICAgMiArLQogVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICst
CiAxMiBmaWxlcyBjaGFuZ2VkLCAyNTEgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDY1YzkzMjcuLjU2MTUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBA
QAorMjAxMi0wMi0yOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cg
aW4gV2ViS2l0MkdUSysKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHJ1bk1vZGFsIGluIFdlYktpdFVJQ2xpZW50IHRvIG1ha2UgdGhlIFdl
YktpdFdlYlZpZXcKKyAgICAgICAgZW1pdCBhICdydW4tYXMtbW9kYWwnIHNpZ25hbCB3aGVuIHJl
cXVlc3RlZCwgY3JlYXRpbmcgYSBuZXcKKyAgICAgICAgbWFpbmxvb3AgdGhlcmUgdG8gYmxvY2sg
dXNlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBvcmlnaW5hbCB3aW5kb3cKKyAgICAgICAgd2hpbGUg
dGhlIG1vZGFsIGRpYWxvZyBpcyBzaG93aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAocnVuTW9kYWwpOiBDYWxsIHRvIHRoZSBu
ZXcgd2Via2l0V2ViVmlld1J1bkFzTW9kYWxQYWdlIGZ1bmN0aW9uLgorICAgICAgICAoYXR0YWNo
VUlDbGllbnRUb1ZpZXcpOiBBZGQgcnVuTW9kYWwuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1ByaXZhdGUpOiBB
ZGQgYW4gYXRyaWJ1dGUgZm9yIGEgbmV3IG1haW4gbG9vcC4KKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdGaW5hbGl6ZSk6IE1ha2Ugc3VyZSB0aGUgbWFpbiBsb29wIGZvciBtYWluIGRpYWxvZ3MsCisg
ICAgICAgIGlmIGFueSwgaXMgc3RvcHBlZCBpZiBpdCB3YXMgc3RpbGwgcnVubmluZy4KKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KTogRGVjbGFyZSBuZXcgc2lnbmFsICdydW4t
YXMtbW9kYWwnLgorICAgICAgICAod2Via2l0V2ViVmlld1J1bkFzTW9kYWwpOiBFbWl0IHRoZSAn
cnVuLWFzLW1vZGFsJyBzaWduYWwgYW5kLCBpZgorICAgICAgICBoYW5kbGVkLCBjcmVhdGUgYW5k
IHJ1biBhIG5ldyBtYWluIGxvb3AuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5oOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdDbGFzcyk6IE5ldyBoYW5kbGVyIGZv
ciB0aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdQcml2YXRlLmg6IEFkZCB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbFBhZ2Uu
CisKKyAgICAgICAgQWxsb3cgc2V0dGluZyBhbmQgZ2V0dGluZyB0aGUgdmFsdWUgb2YgV2ViUGFn
ZSdzIGNhblJ1bk1vZGFsCisgICAgICAgIGF0dHJpYnV0ZSBpbiB0aGUgV2ViUHJvY2VzcyBmcm9t
IHRoZSBVSVByb2Nlc3MgYWZ0ZXIgdGhlIGNyZWF0aW9uCisgICAgICAgIG9mIGEgV2ViUGFnZSwg
YW5kIHVzZSBpdCBpbiBHVEsncyBXZWJLaXRXZWJWaWV3IHRvIGFsbG93IHRoZQorICAgICAgICBj
bGllbnQgYXBwbGljYXRpb24gdG8gZGVjaWRlIHdoZXRoZXIgdG8gYWxsb3cgY3JlYXRlIG1vZGFs
CisgICAgICAgIGRpYWxvZ3MsIHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBsYXVuY2hpbmcgYW4gYWRk
aXRpb25hbCBuZXN0ZWQKKyAgICAgICAgZXZlbnQgbG9vcCBpbiB0aGUgd2ViIHByb2Nlc3MsIGFm
dGVyIGNyZWF0aW5nIHRoZSBkaWFsb2cuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOiBJ
bml0aWFsaXplIHRoZSBuZXcKKyAgICAgICAgbV9jYW5SdW5Nb2RhbCBhdHRyaWJ1dGUsIHRvIGNh
Y2hlIHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUKKyAgICAgICAgV2ViUGFnZSBpbiB0aGUgV2Vi
UHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplVUlDbGll
bnQpOiBDYWxsIHRoZSBuZXcgZnVuY3Rpb24KKyAgICAgICAgc2V0Q2FuUnVuTW9kYWwsIGluc3Rl
YWQgb2YgbWFudWFsbHkgc2VuZGluZyB0aGUgU2V0Q2FuUnVuTW9kYWwgbWVzc2FnZS4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBVc2UgbV9jYW5S
dW5Nb2RhbAorICAgICAgICBpbnN0ZWFkIG9mIG1fdWlDbGllbnQuY2FuUnVuTW9kYWwgd2hlbiBw
cmVwYXJpbmcgdGhlIHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0Q2FuUnVuTW9kYWwpOiBOZXcgcHVibGljIGZ1bmN0aW9uLCBpdAorICAgICAgICBzZXRzIHRo
ZSB2YWx1ZSBvZiBtX2NhblJ1bk1vZGFsIGFuZCBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIFdlYgor
ICAgICAgICBwcm9jZXNzIGZvciB1cGRhdGluZyB0aGUgV2ViUGFnZSwgd2hlbmV2ZXIgcG9zc2li
bGUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FuUnVuTW9kYWwpOiBOZXcgcHVi
bGljIGZ1bmN0aW9uLCByZXR1cm5zCisgICAgICAgIHRoZSB2YWx1ZSBvZiB0aGUgbV9jYW5SdW5N
b2RhbCBhdHRyaWJ1dGUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAoV2ViUGFnZVByb3h5KTogQWRkZWQgbmV3IHB1YmxpYyBmdW5jdGlvbnMgYW5kIHByaXZh
dGUgYXR0cmlidXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2FsbG93X2NyZWF0ZV9tb2RhbF9k
aWFsb2dzKTogTmV3IHB1YmxpYworICAgICAgICBmdW5jdGlvbiwgYWxsb3dzIHNldHRpbmcgdGhl
IHZhbHVlIG9mIGNhblJ1bk1vZGFsIGluIHRoZSBXZWJQYWdlCisgICAgICAgIGFmdGVyIGl0IGJl
aW5nIGNyZWF0ZWQgdGhyb3VnaCB0aGUgbmV3IGZ1bmN0aW9ucyBpbiBXZWJQYWdlUHJveHkuCisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2FsbG93X2NyZWF0ZV9tb2RhbF9kaWFsb2dzKTog
TmV3IHB1YmxpYworICAgICAgICBmdW5jdGlvbiwgYWxsb3dzIGdldHRpbmcgdGhlIHZhbHVlIG9m
IGNhblJ1bk1vZGFsIGluIHRoZSBXZWJQYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuaDoKKworICAgICAgICBBZGQgbmV3IHVuaXQgdGVzdCB0byBjaGVjayB0
aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFsIGlzIGVtaXR0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2Vi
Vmlld0FsbG93TW9kYWxEaWFsb2dzKTogTmV3IHVuaXQgdGVzdCB0byBjaGVjayB0aGF0IG1vZGFs
CisgICAgICAgIGRpYWxvZ3MgYXJlIHByb3Blcmx5IGNyZWF0ZWQgZnJvbSBKYXZhU2NyaXB0IHdo
ZW4gYWxsb3dlZC4KKyAgICAgICAgKHRlc3RXZWJWaWV3RGlzYWxsb3dNb2RhbERpYWxvZ3MpOiBO
ZXcgdW5pdCB0ZXN0IHRvIGNoZWNrIHRoYXQKKyAgICAgICAgaXQncyBub3QgcG9zc2libGUgdG8g
Y3JlYXRlIG1vZGFsIGRpYWxvZ3Mgd2hlbiBub3QgYWxsb3dlZC4KKyAgICAgICAgKGJlZm9yZUFs
bCk6IEFkZCB0aGUgbmV3IHVuaXQgdGVzdC4KKwogMjAxMi0wMi0yNyAgTWFyaW8gU2FuY2hleiBQ
cmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIEdNYWluTG9v
cCBhbmQgR01haW5Db250ZXh0IHRvIGJlIGhhbmRsZWQgYnkgR1JlZlB0cgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDZm
MGUxMWMuLmU3N2I3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTEzNiw2ICsxMzYsMTEgQEAgc3RhdGljIHZvaWQg
cHJpbnRGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCop
CiAgICAgd2Via2l0V2ViVmlld1ByaW50RnJhbWUoV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdl
KS0+dmlld1dpZGdldCgpKSwgZnJhbWUpOwogfQogCitzdGF0aWMgdm9pZCBydW5Nb2RhbChXS1Bh
Z2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB3ZWJraXRXZWJWaWV3
UnVuQXNNb2RhbChXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbykpOworfQorCiB2b2lkIGF0dGFj
aFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgV0tQYWdlVUlD
bGllbnQgd2tVSUNsaWVudCA9IHsKQEAgLTE3Niw3ICsxODEsNyBAQCB2b2lkIGF0dGFjaFVJQ2xp
ZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDAsIC8vIGRyYXdIZWFk
ZXIKICAgICAgICAgMCwgLy8gZHJhd0Zvb3RlcgogICAgICAgICBwcmludEZyYW1lLAotICAgICAg
ICAwLCAvLyBydW5Nb2RhbAorICAgICAgICBydW5Nb2RhbCwKICAgICAgICAgMCwgLy8gZGlkQ29t
cGxldGVSdWJiZXJCYW5kRm9yTWFpbkZyYW1lCiAgICAgICAgIDAsIC8vIHNhdmVEYXRhVG9GaWxl
SW5Eb3dubG9hZHNGb2xkZXIKICAgICAgICAgMCwgLy8gc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlw
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcAppbmRleCBiZTU5MGZmLi40N2ZiMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNTMsNiArNTMsNyBAQCBlbnVt
IHsKIAogICAgIENSRUFURSwKICAgICBSRUFEWV9UT19TSE9XLAorICAgIFJVTl9BU19NT0RBTCwK
ICAgICBDTE9TRSwKIAogICAgIFNDUklQVF9BTEVSVCwKQEAgLTkwLDYgKzkxLDggQEAgc3RydWN0
IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRTZXR0aW5ncz4gc2V0
dGluZ3M7CiAgICAgR1JlZlB0cjxXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzPiB3aW5kb3dQcm9wZXJ0
aWVzOwogCisgICAgR1JlZlB0cjxHTWFpbkxvb3A+IG1vZGFsTG9vcDsKKwogICAgIEdSZWZQdHI8
V2ViS2l0SGl0VGVzdFJlc3VsdD4gbW91c2VUYXJnZXRIaXRUZXN0UmVzdWx0OwogICAgIHVuc2ln
bmVkIG1vdXNlVGFyZ2V0TW9kaWZpZXJzOwogfTsKQEAgLTIyOSw3ICsyMzIsMTMgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBHVmFsdWUqIHZhbHUKIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0ZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCkKIHsKLSAgICBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KS0+cHJpdi0+fldl
YktpdFdlYlZpZXdQcml2YXRlKCk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJ
VF9XRUJfVklFVyhvYmplY3QpOworCisgICAgLy8gRm9yIG1vZGFsIGRpYWxvZ3MsIG1ha2Ugc3Vy
ZSB0aGUgbWFpbiBsb29wIGlzIHN0b3BwZWQgd2hlbiBmaW5hbGl6aW5nIHRoZSB3ZWJWaWV3Lgor
ICAgIGlmICh3ZWJWaWV3LT5wcml2LT5tb2RhbExvb3AgJiYgZ19tYWluX2xvb3BfaXNfcnVubmlu
Zyh3ZWJWaWV3LT5wcml2LT5tb2RhbExvb3AuZ2V0KCkpKQorICAgICAgICBnX21haW5fbG9vcF9x
dWl0KHdlYlZpZXctPnByaXYtPm1vZGFsTG9vcC5nZXQoKSk7CisKKyAgICB3ZWJWaWV3LT5wcml2
LT5+V2ViS2l0V2ViVmlld1ByaXZhdGUoKTsKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2Vi
X3ZpZXdfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIApAQCAtNDc2LDYgKzQ4
NSwyNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJW
aWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05F
LCAwKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnJ1bi1hcy1tb2RhbDoKKyAg
ICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlz
IGVtaXR0ZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBKYXZhU2NyaXB0IGNvZGUgY2Fs
bHMKKyAgICAgKiA8ZnVuY3Rpb24+d2luZG93LnNob3dNb2RhbERpYWxvZzwvZnVuY3Rpb24+LCBy
aWdodCBiZWZvcmUKKyAgICAgKiBjcmVhdGluZyBhbmQgcnVubmluZyBhIG5ldyBtYWlubG9vcCB0
byBibG9jayB1c2VyIGludGVyYWN0aW9uCisgICAgICogaW4gdGhlIHBhcmVudCB3ZWJ2aWV3IHVu
dGlsIHRoZSBjdXJyZW50IHdlYnZpZXcgaXMgZmluYWxpemVkLgorICAgICAqLworICAgIHNpZ25h
bHNbUlVOX0FTX01PREFMXSA9CisgICAgICAgICAgICBnX3NpZ25hbF9uZXcoInJ1bi1hcy1tb2Rh
bCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0Ns
YXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBy
dW5fYXNfbW9kYWwpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOworCisgICAgLyoqCiAgICAgICogV2ViS2l0
V2ViVmlldzo6Y2xvc2U6CiAgICAgICogQHdlYlZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3
aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAgKgpAQCAtNzU2LDYgKzc4MywxNiBAQCB2
b2lkIHdlYmtpdFdlYlZpZXdSZWFkeVRvU2hvd1BhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbUkVBRFlfVE9fU0hPV10sIDAsIE5V
TEwpOwogfQogCit2b2lkIHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCit7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1JVTl9BU19NT0RB
TF0sIDAsIE5VTEwpOworCisgICAgd2ViVmlldy0+cHJpdi0+bW9kYWxMb29wID0gYWRvcHRHUmVm
KGdfbWFpbl9sb29wX25ldygwLCBGQUxTRSkpOworICAgIEdES19USFJFQURTX0VOVEVSKCk7Cisg
ICAgZ19tYWluX2xvb3BfcnVuKHdlYlZpZXctPnByaXYtPm1vZGFsTG9vcC5nZXQoKSk7CisgICAg
R0RLX1RIUkVBRFNfTEVBVkUoKTsKK30KKwogdm9pZCB3ZWJraXRXZWJWaWV3Q2xvc2VQYWdlKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWdu
YWxzW0NMT1NFXSwgMCwgTlVMTCk7CkBAIC0xMzYzLDYgKzE0MDAsMzYgQEAgZ2RvdWJsZSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3pvb21fbGV2ZWwoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBy
ZXR1cm4gV0tQYWdlR2V0UGFnZVpvb21GYWN0b3Iod2tQYWdlKTsKIH0KIAorLyoqCisgKiB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X2FsbG93X2NyZWF0ZV9tb2RhbF9kaWFsb2dzOgorICogQHdlYl92aWV3
OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAYWxsb3dlZDogd2hldGhlciB0byBhbGxvdyBjcmVhdGlu
ZyBtb2RhbCBkaWFsb2dzCisgKgorICogRW5hYmxlIHRoZSBjdXJyZW50IHdlYiB2aWV3IHRvIGNy
ZWF0ZSBhbmQgcnVuIG1vZGFsIGRpYWxvZ3MgZnJvbQorICogSmF2YVNjcmlwdCB0aHJvdWdoIHRo
ZSA8ZnVuY3Rpb24+d2luZG93LnNob3dNb2RhbERpYWxvZzwvZnVuY3Rpb24+LgorICovCit2b2lk
IHdlYmtpdF93ZWJfdmlld19zZXRfYWxsb3dfY3JlYXRlX21vZGFsX2RpYWxvZ3MoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgZ2Jvb2xlYW4gYWxsb3dlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0g
d2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsK
KyAgICBwYWdlLT5zZXRDYW5SdW5Nb2RhbChhbGxvd2VkKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2FsbG93X2NyZWF0ZV9tb2RhbF9kaWFsb2dzOgorICogQHdlYl92aWV3OiBh
ICNXZWJLaXRXZWJWaWV3CisgKgorICogRGV0ZXJtaW5lcyB3aGV0aGVyIEB3ZWJfdmlldyBjYW4g
Y3JlYXRlIGFuZCBydW4gbW9kYWwgZGlhbG9ncyBmcm9tCisgKiBKYXZhU2NyaXB0IHRocm91Z2gg
dGhlIDxmdW5jdGlvbj53aW5kb3cuc2hvd01vZGFsRGlhbG9nPC9mdW5jdGlvbj4uCisgKgorICog
UmV0dXJuczogJVRSVUUgaWYgYWJsZSB0byBjcmVhdGUgYW5kIHJ1biBtb2RhbCBkaWFsb2dzIG9y
ICVGQUxTRSBvdGhlcndpc2UuCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJfdmlld19nZXRfYWxs
b3dfY3JlYXRlX21vZGFsX2RpYWxvZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsK
KyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lU
X1dFQl9WSUVXX0JBU0Uod2ViVmlldykpOworICAgIHJldHVybiBwYWdlLT5jYW5SdW5Nb2RhbCgp
OworfQogCiBzdGF0aWMgdm9pZCBkaWRWYWxpZGF0ZUNvbW1hbmQoV0tTdHJpbmdSZWYgY29tbWFu
ZCwgYm9vbCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdGUsIFdLRXJyb3JSZWYsIHZvaWQqIGNvbnRl
eHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmgKaW5kZXggYTFiMjE0Mi4uNjRjNWZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMTI2LDYgKzEyNiw3IEBAIHN0cnVj
dCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKIAogICAgIEd0a1dpZGdldCAqKCogY3JlYXRlKSAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAgICAgdm9p
ZCAgICAgICAoKiByZWFkeV90b19zaG93KSAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3KTsKKyAgICBnYm9vbGVhbiAgICgqIHJ1bl9hc19tb2RhbCkgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogICAgIHZvaWQgICAgICAgKCog
Y2xvc2UpICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmll
dyk7CiAKICAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9hbGVydCkgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCkBAIC0yNTIsNiArMjUzLDEzIEBAIFdFQktJVF9B
UEkgZ2RvdWJsZQogd2Via2l0X3dlYl92aWV3X2dldF96b29tX2xldmVsICAgICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAogV0VCS0lUX0FQ
SSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2FsbG93X2NyZWF0ZV9tb2RhbF9kaWFsb2dzICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAg
ICAgICAgYWxsb3dlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfdmlld19n
ZXRfYWxsb3dfY3JlYXRlX21vZGFsX2RpYWxvZ3MgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldyk7CisKK1dFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X2Nhbl9l
eGVjdXRlX2VkaXRpbmdfY29tbWFuZCAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgKmNvbW1hbmQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFj
ayAgICAgICAgY2FsbGJhY2ssCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCBhZDhhYjIwLi5hODQ2MzNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdQcml2YXRlLmgKQEAgLTM4LDYgKzM4LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3U2V0VGl0
bGUoV2ViS2l0V2ViVmlldyosIGNvbnN0IENTdHJpbmcmKTsKIHZvaWQgd2Via2l0V2ViVmlld1Vw
ZGF0ZVVSSShXZWJLaXRXZWJWaWV3Kik7CiBXS1BhZ2VSZWYgd2Via2l0V2ViVmlld0NyZWF0ZU5l
d1BhZ2UoV2ViS2l0V2ViVmlldyosIFdLRGljdGlvbmFyeVJlZiB3a1dpbmRvd0ZlYXR1cmVzKTsK
IHZvaWQgd2Via2l0V2ViVmlld1JlYWR5VG9TaG93UGFnZShXZWJLaXRXZWJWaWV3Kik7Cit2b2lk
IHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2Vi
Vmlld0Nsb3NlUGFnZShXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSdW5KYXZh
U2NyaXB0QWxlcnQoV2ViS2l0V2ViVmlldyosIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2UpOwogYm9v
bCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0V2ViVmlldyosIGNvbnN0
IENTdHJpbmcmIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDQ3ZGE5OGUu
LmE1YjU1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQCBw
dWJsaWM6CiAgICAgZW51bSBXZWJWaWV3RXZlbnRzIHsKICAgICAgICAgQ3JlYXRlLAogICAgICAg
ICBSZWFkeVRvU2hvdywKKyAgICAgICAgUnVuQXNNb2RhbCwKICAgICAgICAgQ2xvc2UKICAgICB9
OwogCkBAIC0xODQsNiArMTg1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgdGVzdC0+bV93aW5kb3dQ
cm9wZXJ0aWVzQ2hhbmdlZC5hZGQoZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBhcmFtU3BlYykpOwog
ICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIGRpYWxvZ1J1bkFzTW9kYWwoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgVUlDbGllbnRUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQod2Vi
VmlldyAhPSB0ZXN0LT5tX3dlYlZpZXcpOworICAgICAgICB0ZXN0LT5tX3dlYlZpZXdFdmVudHMu
YXBwZW5kKFJ1bkFzTW9kYWwpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIHZpZXdDbG9zZShX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBVSUNsaWVudFRlc3QqIHRlc3QpCiAgICAgewogICAgICAg
ICBnX2Fzc2VydCh3ZWJWaWV3ICE9IHRlc3QtPm1fd2ViVmlldyk7CkBAIC0xOTgsMTAgKzIwNSwx
MSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ICE9IHRlc3QtPm1f
d2ViVmlldyk7CiAKLSAgICAgICAgV2ViS2l0V2luZG93UHJvcGVydGllcyogd2luZG93UHJvcGVy
dGllcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X3Byb3BlcnRpZXMod2ViVmlldyk7Ci0g
ICAgICAgIGdfYXNzZXJ0KHdpbmRvd1Byb3BlcnRpZXMpOwotICAgICAgICBXaW5kb3dQcm9wZXJ0
aWVzKHdpbmRvd1Byb3BlcnRpZXMpLmFzc2VydEVxdWFsKHRlc3QtPm1fd2luZG93UHJvcGVydGll
cyk7Ci0KKyAgICAgICAgaWYgKCF0ZXN0LT5tX2lzTW9kYWxEaWFsb2dUZXN0KSB7CisgICAgICAg
ICAgICBXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzKiB3aW5kb3dQcm9wZXJ0aWVzID0gd2Via2l0X3dl
Yl92aWV3X2dldF93aW5kb3dfcHJvcGVydGllcyh3ZWJWaWV3KTsKKyAgICAgICAgICAgIGdfYXNz
ZXJ0KHdpbmRvd1Byb3BlcnRpZXMpOworICAgICAgICAgICAgV2luZG93UHJvcGVydGllcyh3aW5k
b3dQcm9wZXJ0aWVzKS5hc3NlcnRFcXVhbCh0ZXN0LT5tX3dpbmRvd1Byb3BlcnRpZXMpOworICAg
ICAgICB9CiAgICAgICAgIHRlc3QtPm1fd2ViVmlld0V2ZW50cy5hcHBlbmQoUmVhZHlUb1Nob3cp
OwogICAgIH0KIApAQCAtMjIxLDYgKzIyOSw4IEBAIHB1YmxpYzoKICAgICAgICAgZ19zaWduYWxf
Y29ubmVjdCh3aW5kb3dQcm9wZXJ0aWVzLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3aW5kb3dQcm9w
ZXJ0aWVzTm90aWZ5Q2FsbGJhY2spLCB0ZXN0KTsKIAogICAgICAgICBnX3NpZ25hbF9jb25uZWN0
KG5ld1dlYlZpZXcsICJyZWFkeS10by1zaG93IiwgR19DQUxMQkFDSyh2aWV3UmVhZHlUb1Nob3cp
LCB0ZXN0KTsKKyAgICAgICAgaWYgKHRlc3QtPm1faXNNb2RhbERpYWxvZ1Rlc3QpCisgICAgICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJydW4tYXMtbW9kYWwiLCBHX0NBTExC
QUNLKGRpYWxvZ1J1bkFzTW9kYWwpLCB0ZXN0KTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChu
ZXdXZWJWaWV3LCAiY2xvc2UiLCBHX0NBTExCQUNLKHZpZXdDbG9zZSksIHRlc3QpOwogCiAgICAg
ICAgIHJldHVybiBuZXdXZWJWaWV3OwpAQCAtMjgwLDYgKzI5MCw3IEBAIHB1YmxpYzoKICAgICBV
SUNsaWVudFRlc3QoKQogICAgICAgICA6IG1fc2NyaXB0VHlwZShBbGVydCkKICAgICAgICAgLCBt
X3NjcmlwdERpYWxvZ0NvbmZpcm1lZCh0cnVlKQorICAgICAgICAsIG1faXNNb2RhbERpYWxvZ1Rl
c3QoZmFsc2UpCiAgICAgICAgICwgbV9tb3VzZVRhcmdldE1vZGlmaWVycygwKQogICAgIHsKICAg
ICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0
b21hdGljYWxseSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKG1fd2ViVmlldyksIFRSVUUp
OwpAQCAtMzE1LDYgKzMyNiw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8V2ViVmlld0V2ZW50cz4g
bV93ZWJWaWV3RXZlbnRzOwogICAgIFNjcmlwdFR5cGUgbV9zY3JpcHRUeXBlOwogICAgIGJvb2wg
bV9zY3JpcHREaWFsb2dDb25maXJtZWQ7CisgICAgYm9vbCBtX2lzTW9kYWxEaWFsb2dUZXN0Owog
ICAgIFdpbmRvd1Byb3BlcnRpZXMgbV93aW5kb3dQcm9wZXJ0aWVzOwogICAgIEhhc2hTZXQ8V1RG
OjpTdHJpbmc+IG1fd2luZG93UHJvcGVydGllc0NoYW5nZWQ7CiAgICAgR1JlZlB0cjxXZWJLaXRI
aXRUZXN0UmVzdWx0PiBtX21vdXNlVGFyZ2V0SGl0VGVzdFJlc3VsdDsKQEAgLTMzMyw2ICszNDUs
MzQgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDcmVhdGVSZWFkeUNsb3NlKFVJQ2xpZW50VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzJdLCA9
PSwgVUlDbGllbnRUZXN0OjpDbG9zZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QWxs
b3dNb2RhbERpYWxvZ3MoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAg
IHdlYmtpdF93ZWJfdmlld19zZXRfYWxsb3dfY3JlYXRlX21vZGFsX2RpYWxvZ3ModGVzdC0+bV93
ZWJWaWV3LCBUUlVFKTsKKyAgICB0ZXN0LT5tX2lzTW9kYWxEaWFsb2dUZXN0ID0gdHJ1ZTsKKyAg
ICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25sb2FkPVwid2luZG93LnNob3dNb2RhbERp
YWxvZygnZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGJvZHkvPjxzY3JpcHQ+d2luZG93LmNsb3NlKCk7
PC9zY3JpcHQ+PC9odG1sPicpXCI+PC9ib2R5PjwvaHRtbD4iLCAwKTsKKyAgICB0ZXN0LT53YWl0
VW50aWxNYWluTG9vcEZpbmlzaGVzKCk7CisKKyAgICBWZWN0b3I8VUlDbGllbnRUZXN0OjpXZWJW
aWV3RXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+bV93ZWJWaWV3RXZlbnRzOworICAgIGdfYXNzZXJ0
X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgNCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50
c1swXSwgPT0sIFVJQ2xpZW50VGVzdDo6Q3JlYXRlKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZl
bnRzWzFdLCA9PSwgVUlDbGllbnRUZXN0OjpSZWFkeVRvU2hvdyk7CisgICAgZ19hc3NlcnRfY21w
aW50KGV2ZW50c1syXSwgPT0sIFVJQ2xpZW50VGVzdDo6UnVuQXNNb2RhbCk7CisgICAgZ19hc3Nl
cnRfY21waW50KGV2ZW50c1szXSwgPT0sIFVJQ2xpZW50VGVzdDo6Q2xvc2UpOworfQorCitzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld0Rpc2FsbG93TW9kYWxEaWFsb2dzKFVJQ2xpZW50VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2FsbG93X2NyZWF0
ZV9tb2RhbF9kaWFsb2dzKHRlc3QtPm1fd2ViVmlldywgRkFMU0UpOworICAgIHRlc3QtPm1faXNN
b2RhbERpYWxvZ1Rlc3QgPSB0cnVlOworICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keSBv
bmxvYWQ9XCJ3aW5kb3cuc2hvd01vZGFsRGlhbG9nKCdkYXRhOnRleHQvaHRtbCw8aHRtbD48Ym9k
eS8+PHNjcmlwdD53aW5kb3cuY2xvc2UoKTs8L3NjcmlwdD48L2h0bWw+JylcIj48L2JvZHk+PC9o
dG1sPiIsIDApOworICAgIC8vIFdlIG5lZWQgdG8gdXNlIGEgdGltZW91dCBoZXJlIGJlY2F1c2Ug
dGhlIHZpZXdDbG9zZSgpIGZ1bmN0aW9uCisgICAgLy8gd29uJ3QgZXZlciBiZSBjYWxsZWQgYXMg
dGhlIGRpYWxvZyB3b24ndCBiZSBjcmVhdGVkLgorICAgIHRlc3QtPndhaXQoMSk7CisKKyAgICBW
ZWN0b3I8VUlDbGllbnRUZXN0OjpXZWJWaWV3RXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+bV93ZWJW
aWV3RXZlbnRzOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgMCk7Cit9
CisKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MoVUlDbGllbnRUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBodG1sT25M
b2FkRm9ybWF0ID0gIjxodG1sPjxib2R5IG9uTG9hZD1cIiVzXCI+PC9ib2R5PjwvaHRtbD4iOwpA
QCAtNDU2LDYgKzQ5Niw4IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVzdDo6YWRk
KCJXZWJLaXRXZWJWaWV3IiwgInNldHRpbmdzIiwgdGVzdFdlYlZpZXdTZXR0aW5ncyk7CiAgICAg
V2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJyZXBsYWNlLWNvbnRlbnQiLCB0ZXN0
V2ViVmlld1JlcGxhY2VDb250ZW50KTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJjcmVhdGUtcmVhZHktY2xvc2UiLCB0ZXN0V2ViVmlld0NyZWF0ZVJlYWR5Q2xvc2Up
OworICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImFsbG93LW1vZGFsLWRp
YWxvZ3MiLCB0ZXN0V2ViVmlld0FsbG93TW9kYWxEaWFsb2dzKTsKKyAgICBVSUNsaWVudFRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkaXNhbGxvdy1tb2RhbC1kaWFsb2dzIiwgdGVzdFdlYlZp
ZXdEaXNhbGxvd01vZGFsRGlhbG9ncyk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAiamF2YXNjcmlwdC1kaWFsb2dzIiwgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9n
cyk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAid2luZG93LXByb3Bl
cnRpZXMiLCB0ZXN0V2ViVmlld1dpbmRvd1Byb3BlcnRpZXMpOwogICAgIFVJQ2xpZW50VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm1vdXNlLXRhcmdldCIsIHRlc3RXZWJWaWV3TW91c2VUYXJn
ZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4ZWEz
ZmU0Li45N2I4NGRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTE3MSw2ICsxNzEsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xp
ZW50KiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcAogICAgICwgbV9n
YXBCZXR3ZWVuUGFnZXMoMCkKICAgICAsIG1faXNWYWxpZCh0cnVlKQogICAgICwgbV9pc0Nsb3Nl
ZChmYWxzZSkKKyAgICAsIG1fY2FuUnVuTW9kYWwoZmFsc2UpCiAgICAgLCBtX2lzSW5QcmludGlu
Z01vZGUoZmFsc2UpCiAgICAgLCBtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKGZhbHNl
KQogICAgICwgbV9pbkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKGZhbHNlKQpAQCAtMjg0LDcgKzI4
NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplVUlDbGllbnQoY29uc3QgV0tQYWdl
VUlDbGllbnQqIGNsaWVudCkKICAgICBtX3VpQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKIAog
ICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKG1fdWlDbGllbnQuY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KCkpLCBtX3BhZ2VJRCk7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRDYW5SdW5Nb2RhbChtX3VpQ2xpZW50LmNhblJ1bk1vZGFsKCkpLCBtX3BhZ2VJRCk7CisgICAg
c2V0Q2FuUnVuTW9kYWwobV91aUNsaWVudC5jYW5SdW5Nb2RhbCgpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmluaXRpYWxpemVGaW5kQ2xpZW50KGNvbnN0IFdLUGFnZUZpbmRDbGllbnQqIGNs
aWVudCkKQEAgLTMzMTEsNyArMzMxMiw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2Vi
UGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoKSBjb25zdAogICAgIHBhcmFtZXRlcnMuc2Vz
c2lvblN0YXRlID0gU2Vzc2lvblN0YXRlKG1fYmFja0ZvcndhcmRMaXN0LT5lbnRyaWVzKCksIG1f
YmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SW5kZXgoKSk7CiAgICAgcGFyYW1ldGVycy5oaWdoZXN0
VXNlZEJhY2tGb3J3YXJkSXRlbUlEID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aGlnaGVkVXNl
ZEl0ZW1JRCgpOwogICAgIHBhcmFtZXRlcnMuY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
ID0gbV91aUNsaWVudC5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKTsKLSAgICBwYXJh
bWV0ZXJzLmNhblJ1bk1vZGFsID0gbV91aUNsaWVudC5jYW5SdW5Nb2RhbCgpOworICAgIHBhcmFt
ZXRlcnMuY2FuUnVuTW9kYWwgPSBtX2NhblJ1bk1vZGFsOwogICAgIHBhcmFtZXRlcnMuZGV2aWNl
U2NhbGVGYWN0b3IgPSBtX2ludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yOwogICAgIHBhcmFtZXRl
cnMubWVkaWFWb2x1bWUgPSBtX21lZGlhVm9sdW1lOwogCkBAIC0zNDg5LDYgKzM0OTAsMjMgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0odWludDY0X3QgaXRlbUlE
KQogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVtb3ZlQmFja0Zv
cndhcmRJdGVtKGl0ZW1JRCksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNl
dENhblJ1bk1vZGFsKGJvb2wgY2FuUnVuTW9kYWwpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIEl0J3Mgb25seSBwb3NzaWJsZSB0byBjaGFuZ2UgdGhl
IHN0YXRlIGZvciBhIFdlYlBhZ2Ugd2hpY2gKKyAgICAvLyBhbHJlYWR5IHF1YWxpZmllcyBmb3Ig
cnVubmluZyBtb2RhbCBjaGlsZCB3ZWIgcGFnZXMsIG90aGVyd2lzZQorICAgIC8vIHRoZXJlJ3Mg
bm8gb3RoZXIgcG9zc2liaWxpdHkgdGhhbiBub3QgYWxsb3dpbmcgaXQuCisgICAgbV9jYW5SdW5N
b2RhbCA9IG1fdWlDbGllbnQuY2FuUnVuTW9kYWwoKSAmJiBjYW5SdW5Nb2RhbDsKKyAgICBwcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENhblJ1bk1vZGFsKG1fY2FuUnVuTW9k
YWwpLCBtX3BhZ2VJRCk7Cit9CisKK2Jvb2wgV2ViUGFnZVByb3h5OjpjYW5SdW5Nb2RhbCgpCit7
CisgICAgcmV0dXJuIGlzVmFsaWQoKSA/IG1fY2FuUnVuTW9kYWwgOiBmYWxzZTsKK30KKwogdm9p
ZCBXZWJQYWdlUHJveHk6OmJlZ2luUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmZvKQogewogICAgIGlmIChtX2lzSW5QcmludGluZ01vZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYWY4ZGExYi4uYmY1ZThm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTgzLDYgKzU4
Myw5IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eVBsdWdJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fYWNjZXNzaWJpbGl0eVBsdWdJRDsgfQogI2VuZGlmCiAKKyAgICB2b2lkIHNldENh
blJ1bk1vZGFsKGJvb2wpOworICAgIGJvb2wgY2FuUnVuTW9kYWwoKTsKKwogICAgIHZvaWQgYmVn
aW5QcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJik7CiAgICAgdm9pZCBl
bmRQcmludGluZygpOwogICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQ
cm94eSosIGNvbnN0IFByaW50SW5mbyYsIFBhc3NSZWZQdHI8Q29tcHV0ZWRQYWdlc0NhbGxiYWNr
Pik7CkBAIC05NjEsNiArOTY0LDkgQEAgcHJpdmF0ZToKICAgICAvLyBXaGV0aGVyIFdlYlBhZ2VQ
cm94eTo6Y2xvc2UoKSBoYXMgYmVlbiBjYWxsZWQgb24gdGhpcyBwYWdlLgogICAgIGJvb2wgbV9p
c0Nsb3NlZDsKIAorICAgIC8vIFdoZXRoZXIgaXQgY2FuIHJ1biBtb2RhbCBjaGlsZCB3ZWIgcGFn
ZXMuCisgICAgYm9vbCBtX2NhblJ1bk1vZGFsOworCiAgICAgYm9vbCBtX2lzSW5QcmludGluZ01v
ZGU7CiAgICAgYm9vbCBtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTMwN2MzMy4uNmYz
Y2NmZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDEyLTAyLTI4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNo
ZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3Igd2luZG93LnNo
b3dNb2RhbERpYWxvZyBpbiBXZWJLaXQyR1RLKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbW9kYWwgZGlhbG9ncyBpbiBHVEsn
cyBNaW5pQnJvd3Nlci4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93
LmM6CisgICAgICAgICh3ZWJWaWV3UnVuQXNNb2RhbCk6CisgICAgICAgICh3ZWJWaWV3Q3JlYXRl
KToKKyAgICAgICAgKHdlYlZpZXdEZWNpZGVQb2xpY3kpOgorICAgICAgICAoYnJvd3Nlcl93aW5k
b3dfbmV3KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oOgorICAg
ICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93c2VyV2lu
ZG93KToKKwogMjAxMi0wMi0yNSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIENoYW5nZSBCdWlsZCBib3Qgd2l0aCBCdWlsZEFuZFRlc3QgYm90IGZv
ciBFRkwgcG9ydC4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2lu
ZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IDc0NTE4
NDQuLjM3ODQ5ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2lu
ZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwpAQCAtMjAz
LDYgKzIwMywxMSBAQCBzdGF0aWMgdm9pZCB3ZWJWaWV3Q2xvc2UoV2ViS2l0V2ViVmlldyAqd2Vi
VmlldywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtf
V0lER0VUKHdpbmRvdykpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJWaWV3UnVuQXNNb2RhbChXZWJL
aXRXZWJWaWV3ICp3ZWJWaWV3LCBCcm93c2VyV2luZG93ICp3aW5kb3cpCit7CisgICAgZ3RrX3dp
bmRvd19zZXRfbW9kYWwoR1RLX1dJTkRPVyh3aW5kb3cpLCBUUlVFKTsKK30KKwogc3RhdGljIHZv
aWQgd2ViVmlld1JlYWR5VG9TaG93KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dzZXJXaW5k
b3cgKndpbmRvdykKIHsKICAgICBXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzICp3aW5kb3dQcm9wZXJ0
aWVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfcHJvcGVydGllcyh3ZWJWaWV3KTsKQEAg
LTIzMCw4ICsyMzUsOSBAQCBzdGF0aWMgR3RrV2lkZ2V0ICp3ZWJWaWV3Q3JlYXRlKFdlYktpdFdl
YlZpZXcgKndlYlZpZXcsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICBXZWJLaXRXZWJWaWV3
ICpuZXdXZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9j
b250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3KSkpOwogICAgIHdlYmtp
dF93ZWJfdmlld19zZXRfc2V0dGluZ3MobmV3V2ViVmlldywgd2Via2l0X3dlYl92aWV3X2dldF9z
ZXR0aW5ncyh3ZWJWaWV3KSk7CiAKLSAgICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dzZXJf
d2luZG93X25ldyhuZXdXZWJWaWV3KTsKKyAgICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dz
ZXJfd2luZG93X25ldyhuZXdXZWJWaWV3LCBHVEtfV0lORE9XKHdpbmRvdykpOwogICAgIGdfc2ln
bmFsX2Nvbm5lY3QobmV3V2ViVmlldywgInJlYWR5LXRvLXNob3ciLCBHX0NBTExCQUNLKHdlYlZp
ZXdSZWFkeVRvU2hvdyksIG5ld1dpbmRvdyk7CisgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJW
aWV3LCAicnVuLWFzLW1vZGFsIiwgR19DQUxMQkFDSyh3ZWJWaWV3UnVuQXNNb2RhbCksIG5ld1dp
bmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAiY2xvc2UiLCBHX0NBTExC
QUNLKHdlYlZpZXdDbG9zZSksIG5ld1dpbmRvdyk7CiAgICAgcmV0dXJuIEdUS19XSURHRVQobmV3
V2ViVmlldyk7CiB9CkBAIC0yNTQsNyArMjYwLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYlZpZXdE
ZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UG9saWN5RGVjaXNpb24K
IAogICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0
X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdl
YlZpZXcpKSk7CiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyhuZXdXZWJWaWV3LCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsKLSAgICBHdGtXaWRnZXQgKm5l
d1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3KTsKKyAgICBHdGtXaWRnZXQg
Km5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3LCBHVEtfV0lORE9XKHdp
bmRvdykpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3JlcXVlc3QobmV3V2ViVmlldywgd2Vi
a2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9yZXF1ZXN0KG5hdmlnYXRpb25EZWNp
c2lvbikpOwogICAgIGd0a193aWRnZXRfc2hvdyhuZXdXaW5kb3cpOwogCkBAIC00NjUsMTEgKzQ3
MSwxMiBAQCBzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19jbGFzc19pbml0KEJyb3dzZXJXaW5k
b3dDbGFzcyAqa2xhc3MpCiB9CiAKIC8vIFB1YmxpYyBBUEkuCi1HdGtXaWRnZXQgKmJyb3dzZXJf
d2luZG93X25ldyhXZWJLaXRXZWJWaWV3ICp2aWV3KQorR3RrV2lkZ2V0ICpicm93c2VyX3dpbmRv
d19uZXcoV2ViS2l0V2ViVmlldyAqdmlldywgR3RrV2luZG93ICpwYXJlbnQpCiB7CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHZpZXcpLCAwKTsKIAogICAgIHJl
dHVybiBHVEtfV0lER0VUKGdfb2JqZWN0X25ldyhCUk9XU0VSX1RZUEVfV0lORE9XLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNpZW50LWZvciIsIHBhcmVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiLCBHVEtfV0lORE9XX1RPUExF
VkVMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmlldyIsIHZpZXcsIE5V
TEwpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93
LmggYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCmluZGV4IDQ2YTA2YzIu
Ljk0OTVhOGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93
LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuaApAQCAtNDMsNyAr
NDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBfQnJvd3NlcldpbmRvd0NsYXNzICAgQnJvd3NlcldpbmRv
d0NsYXNzOwogCiBHVHlwZSBicm93c2VyX3dpbmRvd19nZXRfdHlwZSh2b2lkKTsKIAotR3RrV2lk
Z2V0KiBicm93c2VyX3dpbmRvd19uZXcoV2ViS2l0V2ViVmlldyopOworR3RrV2lkZ2V0KiBicm93
c2VyX3dpbmRvd19uZXcoV2ViS2l0V2ViVmlldyosIEd0a1dpbmRvdyopOwogV2ViS2l0V2ViVmll
dyogYnJvd3Nlcl93aW5kb3dfZ2V0X3ZpZXcoQnJvd3NlcldpbmRvdyopOwogCiBHX0VORF9ERUNM
UwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9tYWluLmMKaW5kZXggOTY3NDhhNi4uNjM5MzYxMiAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFp
bi5jCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBnY2hhciAqYXJndW1lbnRUb1VSTChjb25zdCBj
aGFyICpmaWxlbmFtZSkKIHN0YXRpYyB2b2lkIGNyZWF0ZUJyb3dzZXJXaW5kb3coY29uc3QgZ2No
YXIgKnVyaSwgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzKQogewogICAgIEd0a1dpZGdl
dCAqd2ViVmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXcoKTsKLSAgICBHdGtXaWRnZXQgKm1haW5X
aW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAg
ICBHdGtXaWRnZXQgKm1haW5XaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoV0VCS0lUX1dFQl9W
SUVXKHdlYlZpZXcpLCBOVUxMKTsKICAgICBnY2hhciAqdXJsID0gYXJndW1lbnRUb1VSTCh1cmkp
OwogCiAgICAgaWYgKHdlYmtpdFNldHRpbmdzKSB7Ci0tIAoxLjcuNy41Cgo=
</data>
<flag name="commit-queue"
          id="131923"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129722</attachid>
            <date>2012-03-01 10:13:57 -0800</date>
            <delta_ts>2012-03-02 10:13:53 -0800</delta_ts>
            <desc>Patch proposal + Unit tests</desc>
            <filename>0001-2012-03-01-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>32948</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA5MmI0NjkzZDgyYThkZTc4M2FlY2FhNzdhYjU3N2M3N2I0NTFkZTYxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDEgTWFyIDIwMTIgMTI6MjI6NTggKzAxMDAKU3ViamVjdDogW1BBVENI
XSAyMDEyLTAzLTAxICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cgaW4g
V2ViS2l0MkdUSysKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Nzk1MDAKCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwOgogICAgICAgIChfV2ViS2l0U2V0
dGluZ3NQcml2YXRlKToKICAgICAgICAod2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0eSk6CiAgICAg
ICAgKHdlYktpdFNldHRpbmdzR2V0UHJvcGVydHkpOgogICAgICAgICh3ZWJraXRfc2V0dGluZ3Nf
Y2xhc3NfaW5pdCk6CiAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfYWxsb3dfbW9kYWxfZGlh
bG9ncyk6CiAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyk6
CiAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfem9vbV90ZXh0X29ubHkpOgogICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaDoKICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcDoKICAgICAgICAocnVuTW9kYWwpOgogICAgICAgIChh
dHRhY2hVSUNsaWVudFRvVmlldyk6CiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmNwcDoKICAgICAgICAoX1dlYktpdFdlYlZpZXdQcml2YXRlKToKICAgICAgICAoYWxs
b3dNb2RhbERpYWxvZ3NDaGFuZ2VkKToKICAgICAgICAod2Via2l0V2ViVmlld1NldFNldHRpbmdz
KToKICAgICAgICAod2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RTZXR0aW5nc1NpZ25hbEhhbmRsZXJz
KToKICAgICAgICAod2Via2l0V2ViVmlld0ZpbmFsaXplKToKICAgICAgICAod2Via2l0X3dlYl92
aWV3X2NsYXNzX2luaXQpOgogICAgICAgICh3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbCk6CiAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MpOgogICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oOgogICAgICAgIChfV2ViS2l0V2ViVmlld0NsYXNzKToKICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CiAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwOgogICAgICAg
ICh0ZXN0V2ViS2l0U2V0dGluZ3MpOgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFdlYlZpZXcuY3BwOgogICAgICAgICh0ZXN0V2ViVmlld0FsbG93TW9kYWxEaWFs
b2dzKToKICAgICAgICAodGVzdFdlYlZpZXdEaXNhbGxvd01vZGFsRGlhbG9ncyk6CiAgICAgICAg
KGJlZm9yZUFsbCk6CiAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CiAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojppbml0aWFsaXplVUlDbGllbnQpOgogICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldENhblJ1bk1vZGFsKToKICAgICAgICAoV2ViS2l0KToKICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNhblJ1bk1vZGFsKToKICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKICAgICAgICAoV2ViUGFnZVByb3h5KToKCjIwMTItMDMtMDEgIE1hcmlvIFNhbmNoZXog
UHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoKICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBm
b3Igd2luZG93LnNob3dNb2RhbERpYWxvZyBpbiBXZWJLaXQyR1RLKwogICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUwMAoKICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG1vZGFsIGRpYWxvZ3Mg
aW4gR1RLJ3MgTWluaUJyb3dzZXIuCgogICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuYzoKICAgICAgICAod2ViVmlld1J1bkFzTW9kYWwpOgogICAgICAgICh3ZWJWaWV3Q3Jl
YXRlKToKICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6CiAgICAgICAgKGJyb3dzZXJfd2lu
ZG93X25ldyk6CiAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oOgogICAg
ICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKICAgICAgICAoY3JlYXRlQnJvd3NlcldpbmRv
dyk6Ci0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDQ3ICsrKysrKysrKysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZXR0aW5ncy5jcHAgICB8ICAgNjAgKysrKysrKysrKysrKysrKystCiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oICB8ICAgIDcgKysKIC4uLi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcCAgIHwgICAgNyArKy0K
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIHwgICA2
NyArKysrKysrKysrKysrKysrKysrLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5oICAgfCAgICAxICsKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oICAgICAgIHwgICAgMSArCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvVGVzdFdlYktpdFNldHRpbmdzLmNwcCB8ICAgIDUgKysKIC4uLi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgIHwgICA1NCArKysrKysrKysrKysrKystCiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCAgICAgICAgICB8ICAgMjIg
KysrKysrLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oICAgICAgICAg
ICAgfCAgICA2ICsrCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMTggKysrKysKIFRvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93
LmMgICAgICAgICAgICAgIHwgICAxMyArKystCiBUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nl
cldpbmRvdy5oICAgICAgICAgICAgICB8ICAgIDIgKy0KIFRvb2xzL01pbmlCcm93c2VyL2d0ay9t
YWluLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogMTUgZmlsZXMgY2hhbmdlZCwg
Mjk2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkZGQwMDgx
Li4xMzFiZjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTItMDMtMDEgIE1hcmlv
IFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFk
ZCBzdXBwb3J0IGZvciB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGluIFdlYktpdDJHVEsrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwOgorICAgICAgICAoX1dlYktpdFNldHRpbmdzUHJpdmF0
ZSk6CisgICAgICAgICh3ZWJLaXRTZXR0aW5nc1NldFByb3BlcnR5KToKKyAgICAgICAgKHdlYktp
dFNldHRpbmdzR2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2NsYXNzX2lu
aXQpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9hbGxvd19tb2RhbF9kaWFsb2dzKToK
KyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyk6CisgICAg
ICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKHJ1bk1vZGFsKToKKyAgICAgICAgKGF0
dGFjaFVJQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChh
bGxvd01vZGFsRGlhbG9nc0NoYW5nZWQpOgorICAgICAgICAod2Via2l0V2ViVmlld1NldFNldHRp
bmdzKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0U2V0dGluZ3NTaWduYWxIYW5k
bGVycyk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3RmluYWxpemUpOgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViVmlld1J1bkFzTW9kYWwp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdD
bGFzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3Mu
Y3BwOgorICAgICAgICAodGVzdFdlYktpdFNldHRpbmdzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2ViVmll
d0FsbG93TW9kYWxEaWFsb2dzKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RGlzYWxsb3dNb2RhbERp
YWxvZ3MpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVVSUNsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDYW5SdW5Nb2RhbCk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhblJ1bk1vZGFsKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOgor
CiAyMDEyLTAyLTI5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBVc2UgdGV4dCBvciBwYWdlIHpvb20gZmFjdG9yIGluIFdlYktpdFdl
YlZpZXcgZGVwZW5kaW5nIG9uIHpvb20tdGV4dC1vbmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggYjRiMjY3ZC4uMmY4
NWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFNldHRpbmdzLmNwcApAQCAtNDYsNiArNDYsNyBAQCBzdHJ1Y3QgX1dlYktpdFNldHRpbmdzUHJp
dmF0ZSB7CiAgICAgQ1N0cmluZyBmYW50YXN5Rm9udEZhbWlseTsKICAgICBDU3RyaW5nIHBpY3Rv
Z3JhcGhGb250RmFtaWx5OwogICAgIENTdHJpbmcgZGVmYXVsdENoYXJzZXQ7CisgICAgYm9vbCBh
bGxvd01vZGFsRGlhbG9nczsKICAgICBib29sIHpvb21UZXh0T25seTsKIH07CiAKQEAgLTEwNSw2
ICsxMDYsNyBAQCBlbnVtIHsKICAgICBQUk9QX1BSSU5UX0JBQ0tHUk9VTkRTLAogICAgIFBST1Bf
RU5BQkxFX1dFQkFVRElPLAogICAgIFBST1BfRU5BQkxFX1dFQkdMLAorICAgIFBST1BfQUxMT1df
TU9EQUxfRElBTE9HUywKICAgICBQUk9QX1pPT01fVEVYVF9PTkxZCiB9OwogCkBAIC0yMTIsNiAr
MjE0LDkgQEAgc3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHUKICAgICBjYXNlIFBST1BfRU5BQkxFX1dF
QkdMOgogICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV93ZWJnbChzZXR0aW5ncywg
Z192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfQUxMT1dfTU9EQUxfRElBTE9HUzoKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9hbGxv
d19tb2RhbF9kaWFsb2dzKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9aT09NX1RFWFRfT05MWToKICAgICAgICAgd2Vi
a2l0X3NldHRpbmdzX3NldF96b29tX3RleHRfb25seShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9v
bGVhbih2YWx1ZSkpOwogICAgICAgICBicmVhazsKQEAgLTMyNSw2ICszMzAsOSBAQCBzdGF0aWMg
dm9pZCB3ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBHVmFsdWUqIHZhbAogICAgIGNhc2UgUFJPUF9FTkFCTEVfV0VCR0w6CiAgICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmds
KHNldHRpbmdzKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9BTExPV19NT0RBTF9E
SUFMT0dTOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3Moc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBQUk9QX1pPT01fVEVYVF9PTkxZOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFu
KHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KHNldHRpbmdzKSk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtODI1LDYgKzgzMywyNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0
dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRTZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNv
bnN0cnVjdFBhcmFtRmxhZ3MpKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdFNldHRpbmdzOmFs
bG93LW1vZGFsLWRpYWxvZ3M6CisgICAgICoKKyAgICAgKiBEZXRlcm1pbmUgd2hldGhlciBpdCdz
IGFsbG93ZWQgdG8gY3JlYXRlIGFuZCBydW4gbW9kYWwgZGlhbG9ncworICAgICAqIGZyb20gYSAj
V2ViS2l0V2ViVmlldyB0aHJvdWdoIEphdmFTY3JpcHQgd2l0aAorICAgICAqIDxmdW5jdGlvbj53
aW5kb3cuc2hvd01vZGFsRGlhbG9nPC9mdW5jdGlvbj4uIElmIGl0J3Mgc2V0IHRvCisgICAgICog
JUZBTFNFLCB0aGUgYXNzb2NpYXRlZCAjV2ViS2l0V2ViVmlldyB3b24ndCBiZSBhYmxlIHRvIGNy
ZWF0ZQorICAgICAqIG5ldyBtb2RhbCBkaWFsb2dzLCBzbyBub3QgZXZlbiB0aGUgI1dlYktpdFdl
YlZpZXc6OmNyZWF0ZQorICAgICAqIHNpZ25hbCB3aWxsIGJlIGVtaXR0ZWQuCisgICAgICovCisg
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0FMTE9XX01PREFMX0RJQUxPR1MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigi
YWxsb3ctbW9kYWwtZGlhbG9ncyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJBbGxvdyBtb2RhbCBkaWFsb2dzIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0
aGVyIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBtb2RhbCBkaWFsb2dzIiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVh
ZFdyaXRlQ29uc3RydWN0UGFyYW1GbGFncykpOworCisgICAgLyoqCiAgICAgICogV2ViS2l0U2V0
dGluZ3M6em9vbS10ZXh0LW9ubHk6CiAgICAgICoKICAgICAgKiBXaGV0aGVyICNXZWJLaXRXZWJW
aWV3Onpvb20tbGV2ZWwgYWZmZWN0cyBvbmx5IHRoZQpAQCAtMjA5OSw2ICsyMTI1LDM5IEBAIHZv
aWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfd2ViZ2woV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzLCBnYm9vbGVhbiBlbmFibGVkCiB9CiAKIC8qKgorICogd2Via2l0X3NldHRpbmdzX3NldF9h
bGxvd19tb2RhbF9kaWFsb2dzOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICog
QGFsbG93ZWQ6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdz
OmFsbG93LW1vZGFsLWRpYWxvZ3MgcHJvcGVydHkuCisgKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdz
X3NldF9hbGxvd19tb2RhbF9kaWFsb2dzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xl
YW4gYWxsb3dlZCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhz
ZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3Mt
PnByaXY7CisgICAgaWYgKHByaXYtPmFsbG93TW9kYWxEaWFsb2dzID09IGFsbG93ZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIHByaXYtPmFsbG93TW9kYWxEaWFsb2dzID0gYWxsb3dlZDsKKyAg
ICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiYWxsb3ctbW9kYWwtZGlhbG9n
cyIpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlhbG9n
czoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlICNXZWJL
aXRTZXR0aW5nczphbGxvdy1tb2RhbC1kaWFsb2dzIHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6
ICVUUlVFIGlmIGl0J3MgYWxsb3dlZCB0byBjcmVhdGUgYW5kIHJ1biBtb2RhbCBkaWFsb2dzIG9y
ICVGQUxTRSBvdGhlcndpc2UuCisgKi8KK2dib29sZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfYWxs
b3dfbW9kYWxfZGlhbG9ncyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOworICAg
IHJldHVybiBzZXR0aW5ncy0+cHJpdi0+YWxsb3dNb2RhbERpYWxvZ3M7Cit9CisKKy8qKgogICog
d2Via2l0X3NldHRpbmdzX3NldF96b29tX3RleHRfb25seToKICAqIEBzZXR0aW5nczogYSAjV2Vi
S2l0U2V0dGluZ3MKICAqIEB6b29tX3RleHRfb25seTogVmFsdWUgdG8gYmUgc2V0CkBAIC0yMTMy
LDQgKzIxOTEsMyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5
KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIAogICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+
em9vbVRleHRPbmx5OwogfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0U2V0dGluZ3MuaAppbmRleCAyNWE3OGFjLi5hYWM3ZGM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKQEAgLTMwOCw2
ICszMDgsMTMgQEAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfd2ViZ2wgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAg
ICAgZW5hYmxlZCk7CiAKIFdFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9hbGxv
d19tb2RhbF9kaWFsb2dzICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpz
ZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgYWxsb3dlZCk7CisKK1dFQktJVF9BUEkg
Z2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyAgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJ
IHZvaWQKIHdlYmtpdF9zZXR0aW5nc19zZXRfem9vbV90ZXh0X29ubHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4g
ICAgICAgIHpvb21fdGV4dF9vbmx5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDZmMGUxMWMuLmU3N2I3ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVu
dC5jcHAKQEAgLTEzNiw2ICsxMzYsMTEgQEAgc3RhdGljIHZvaWQgcHJpbnRGcmFtZShXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCopCiAgICAgd2Via2l0V2ViVmll
d1ByaW50RnJhbWUoV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKSwg
ZnJhbWUpOwogfQogCitzdGF0aWMgdm9pZCBydW5Nb2RhbChXS1BhZ2VSZWYgcGFnZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbChXRUJLSVRf
V0VCX1ZJRVcoY2xpZW50SW5mbykpOworfQorCiB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgV0tQYWdlVUlDbGllbnQgd2tVSUNsaWVudCA9
IHsKQEAgLTE3Niw3ICsxODEsNyBAQCB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDAsIC8vIGRyYXdIZWFkZXIKICAgICAgICAgMCwgLy8g
ZHJhd0Zvb3RlcgogICAgICAgICBwcmludEZyYW1lLAotICAgICAgICAwLCAvLyBydW5Nb2RhbAor
ICAgICAgICBydW5Nb2RhbCwKICAgICAgICAgMCwgLy8gZGlkQ29tcGxldGVSdWJiZXJCYW5kRm9y
TWFpbkZyYW1lCiAgICAgICAgIDAsIC8vIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIK
ICAgICAgICAgMCwgLy8gc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA2MjI1ZTM5
Li5iNTc4YjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcApAQCAtNTMsNiArNTMsNyBAQCBlbnVtIHsKIAogICAgIENSRUFURSwK
ICAgICBSRUFEWV9UT19TSE9XLAorICAgIFJVTl9BU19NT0RBTCwKICAgICBDTE9TRSwKIAogICAg
IFNDUklQVF9BTEVSVCwKQEAgLTk3LDYgKzk4LDggQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJp
dmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRTZXR0aW5ncz4gc2V0dGluZ3M7CiAgICAgR1JlZlB0
cjxXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzPiB3aW5kb3dQcm9wZXJ0aWVzOwogCisgICAgR1JlZlB0
cjxHTWFpbkxvb3A+IG1vZGFsTG9vcDsKKwogICAgIEdSZWZQdHI8V2ViS2l0SGl0VGVzdFJlc3Vs
dD4gbW91c2VUYXJnZXRIaXRUZXN0UmVzdWx0OwogICAgIHVuc2lnbmVkIG1vdXNlVGFyZ2V0TW9k
aWZpZXJzOwogfTsKQEAgLTE3MCw2ICsxNzMsMTYgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdl
YlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyosIFdlYktpdFBvbGljeURlY2lzaW9uKgog
ICAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgdm9pZCBhbGxvd01vZGFsRGlhbG9nc0NoYW5n
ZWQoR09iamVjdCogb2JqZWN0LCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmlldyogd2ViVmlldykK
K3sKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VC
S0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gV0VCS0lUX1NFVFRJTkdTKG9i
amVjdCk7CisgICAgcGFnZS0+c2V0Q2FuUnVuTW9kYWwod2Via2l0X3NldHRpbmdzX2dldF9hbGxv
d19tb2RhbF9kaWFsb2dzKHNldHRpbmdzKSk7Cit9CisKIHN0YXRpYyB2b2lkIHpvb21UZXh0T25s
eUNoYW5nZWQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBHUGFyYW1TcGVjKiwgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldykKIHsKICAgICBXS1BhZ2VSZWYgd2tQYWdlID0gdG9BUEkod2Via2l0V2Vi
Vmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKSk7CkBAIC0xODMs
OSArMTk2LDE4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdTZXRTZXR0aW5ncyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRTZXR0aW5ncyogc2V0CiB7CiAgICAgd2ViVmlldy0+cHJp
di0+c2V0dGluZ3MgPSBzZXR0aW5nczsKICAgICB3ZWJraXRTZXR0aW5nc0F0dGFjaFNldHRpbmdz
VG9QYWdlKHdlYlZpZXctPnByaXYtPnNldHRpbmdzLmdldCgpLCB3a1BhZ2UpOworICAgIGdfc2ln
bmFsX2Nvbm5lY3Qoc2V0dGluZ3MsICJub3RpZnk6OmFsbG93LW1vZGFsLWRpYWxvZ3MiLCBHX0NB
TExCQUNLKGFsbG93TW9kYWxEaWFsb2dzQ2hhbmdlZCksIHdlYlZpZXcpOwogICAgIGdfc2lnbmFs
X2Nvbm5lY3Qoc2V0dGluZ3MsICJub3RpZnk6Onpvb20tdGV4dC1vbmx5IiwgR19DQUxMQkFDSyh6
b29tVGV4dE9ubHlDaGFuZ2VkKSwgd2ViVmlldyk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdl
YlZpZXdEaXNjb25uZWN0U2V0dGluZ3NTaWduYWxIYW5kbGVycyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQoreworICAgIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYlZpZXctPnByaXYtPnNl
dHRpbmdzLmdldCgpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhz
ZXR0aW5ncywgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4oYWxsb3dNb2RhbERpYWxvZ3NDaGFu
Z2VkKSwgd2ViVmlldyk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5j
KHNldHRpbmdzLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih6b29tVGV4dE9ubHlDaGFuZ2Vk
KSwgd2ViVmlldyk7CisKK30KKwogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVk
KEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBpZiAoR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92
aWV3X3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKQpAQCAtMjUzLDcgKzI3NSwxNSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBw
cm9wSWQsIEdWYWx1ZSogdmFsdQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RmluYWxpemUo
R09iamVjdCogb2JqZWN0KQogewotICAgIFdFQktJVF9XRUJfVklFVyhvYmplY3QpLT5wcml2LT5+
V2ViS2l0V2ViVmlld1ByaXZhdGUoKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VC
S0lUX1dFQl9WSUVXKG9iamVjdCk7CisKKyAgICAvLyBGb3IgbW9kYWwgZGlhbG9ncywgbWFrZSBz
dXJlIHRoZSBtYWluIGxvb3AgaXMgc3RvcHBlZCB3aGVuIGZpbmFsaXppbmcgdGhlIHdlYlZpZXcu
CisgICAgaWYgKHdlYlZpZXctPnByaXYtPm1vZGFsTG9vcCAmJiBnX21haW5fbG9vcF9pc19ydW5u
aW5nKHdlYlZpZXctPnByaXYtPm1vZGFsTG9vcC5nZXQoKSkpCisgICAgICAgIGdfbWFpbl9sb29w
X3F1aXQod2ViVmlldy0+cHJpdi0+bW9kYWxMb29wLmdldCgpKTsKKworICAgIHdlYmtpdFdlYlZp
ZXdEaXNjb25uZWN0U2V0dGluZ3NTaWduYWxIYW5kbGVycyh3ZWJWaWV3KTsKKworICAgIHdlYlZp
ZXctPnByaXYtPn5XZWJLaXRXZWJWaWV3UHJpdmF0ZSgpOwogICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQogCkBAIC01
MDAsNiArNTMwLDI4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdl
YktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgR19U
WVBFX05PTkUsIDApOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6cnVuLWFzLW1v
ZGFsOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBz
aWduYWwgaXMgZW1pdHRlZAorICAgICAqCisgICAgICogRW1pdHRlZCBhZnRlciAjV2ViS2l0V2Vi
Vmlldzo6Y3JlYXRlIGFuZAorICAgICAqICNXZWJLaXRXZWJWaWV3OjpyZWFkeS10by1zaG93IG9u
IHRoZSBuZXdseSBjcmVhdGVkCisgICAgICogI1dlYktpdFdlYlZpZXcgd2hlbiBKYXZhU2NyaXB0
IGNvZGUgY2FsbHMKKyAgICAgKiA8ZnVuY3Rpb24+d2luZG93LnNob3dNb2RhbERpYWxvZzwvZnVu
Y3Rpb24+LiBUaGUgcHVycG9zZSBvZgorICAgICAqIHRoaXMgc2lnbmFsIGlzIHRvIGFsbG93IHRo
ZSBjbGllbnQgYXBwbGljYXRpb24gdG8gcHJlcGFyZSB0aGUKKyAgICAgKiBuZXcgdmlldyB0byBi
ZWhhdmUgYXMgbW9kYWwuIE9uY2UgdGhlIHNpZ25hbCBpcyBlbWl0dGVkIGEgbmV3CisgICAgICog
bWFpbmxvb3Agd2lsbCBiZSBydW4gdG8gYmxvY2sgdXNlciBpbnRlcmFjdGlvbiBpbiB0aGUgcGFy
ZW50CisgICAgICogI1dlYktpdFdlYlZpZXcgdW50aWwgdGhlIG5ldyBkaWFsb2cgaXMgY2xvc2Vk
LgorICAgICAqLworICAgIHNpZ25hbHNbUlVOX0FTX01PREFMXSA9CisgICAgICAgICAgICBnX3Np
Z25hbF9uZXcoInJ1bi1hcy1tb2RhbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBF
X0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NJ
R05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQo
V2ViS2l0V2ViVmlld0NsYXNzLCBydW5fYXNfbW9kYWwpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZP
SURfX1ZPSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOworCisg
ICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6Y2xvc2U6CiAgICAgICogQHdlYlZpZXc6IHRo
ZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAgKgpA
QCAtNzk2LDYgKzg0OCwxNiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdSZWFkeVRvU2hvd1BhZ2UoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNb
UkVBRFlfVE9fU0hPV10sIDAsIE5VTEwpOwogfQogCit2b2lkIHdlYmtpdFdlYlZpZXdSdW5Bc01v
ZGFsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3
LCBzaWduYWxzW1JVTl9BU19NT0RBTF0sIDAsIE5VTEwpOworCisgICAgd2ViVmlldy0+cHJpdi0+
bW9kYWxMb29wID0gYWRvcHRHUmVmKGdfbWFpbl9sb29wX25ldygwLCBGQUxTRSkpOworICAgIEdE
S19USFJFQURTX0VOVEVSKCk7CisgICAgZ19tYWluX2xvb3BfcnVuKHdlYlZpZXctPnByaXYtPm1v
ZGFsTG9vcC5nZXQoKSk7CisgICAgR0RLX1RIUkVBRFNfTEVBVkUoKTsKK30KKwogdm9pZCB3ZWJr
aXRXZWJWaWV3Q2xvc2VQYWdlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19zaWdu
YWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0NMT1NFXSwgMCwgTlVMTCk7CkBAIC0xMzE5LDcgKzEz
ODEsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViS2l0U2V0dGluZ3MqIHNldHRpbgogICAgIGlmICh3ZWJWaWV3LT5wcml2LT5z
ZXR0aW5ncyA9PSBzZXR0aW5ncykKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ19zaWduYWxfaGFu
ZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdlYlZpZXctPnByaXYtPnNldHRpbmdzLmdldCgpLCBy
ZWludGVycHJldF9jYXN0PGdwb2ludGVyPih6b29tVGV4dE9ubHlDaGFuZ2VkKSwgd2ViVmlldyk7
CisgICAgd2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RTZXR0aW5nc1NpZ25hbEhhbmRsZXJzKHdlYlZp
ZXcpOwogICAgIHdlYmtpdFdlYlZpZXdTZXRTZXR0aW5ncyh3ZWJWaWV3LCBzZXR0aW5ncywgdG9B
UEkod2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcp
KSkpOwogfQogCkBAIC0xNDA3LDcgKzE0NjksNiBAQCBnZG91YmxlIHdlYmtpdF93ZWJfdmlld19n
ZXRfem9vbV9sZXZlbChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHJldHVybiB6b29tVGV4
dE9ubHkgPyBXS1BhZ2VHZXRUZXh0Wm9vbUZhY3Rvcih3a1BhZ2UpIDogV0tQYWdlR2V0UGFnZVpv
b21GYWN0b3Iod2tQYWdlKTsKIH0KIAotCiBzdGF0aWMgdm9pZCBkaWRWYWxpZGF0ZUNvbW1hbmQo
V0tTdHJpbmdSZWYgY29tbWFuZCwgYm9vbCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdGUsIFdLRXJy
b3JSZWYsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgR1JlZlB0cjxHU2ltcGxlQXN5bmNSZXN1bHQ+
IHJlc3VsdCA9IGFkb3B0R1JlZihHX1NJTVBMRV9BU1lOQ19SRVNVTFQoY29udGV4dCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4
IGExYjIxNDIuLmY5YjY5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTEyNiw2ICsxMjYsNyBAQCBzdHJ1Y3QgX1dlYktpdFdl
YlZpZXdDbGFzcyB7CiAKICAgICBHdGtXaWRnZXQgKigqIGNyZWF0ZSkgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogICAgIHZvaWQgICAgICAgKCog
cmVhZHlfdG9fc2hvdykgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmll
dyk7CisgICAgdm9pZCAgICAgICAoKiBydW5fYXNfbW9kYWwpICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKICAgICB2b2lkICAgICAgICgqIGNsb3NlKSAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCiAgICAg
Z2Jvb2xlYW4gICAoKiBzY3JpcHRfYWxlcnQpICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgKndlYl92aWV3LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggYWQ4YWIyMC4uYTg0NjMzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3UHJpdmF0ZS5oCkBAIC0zOCw2ICszOCw3IEBAIHZvaWQgd2Via2l0V2ViVmlld1NldFRpdGxl
KFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdVcGRh
dGVVUkkoV2ViS2l0V2ViVmlldyopOwogV0tQYWdlUmVmIHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQ
YWdlKFdlYktpdFdlYlZpZXcqLCBXS0RpY3Rpb25hcnlSZWYgd2tXaW5kb3dGZWF0dXJlcyk7CiB2
b2lkIHdlYmtpdFdlYlZpZXdSZWFkeVRvU2hvd1BhZ2UoV2ViS2l0V2ViVmlldyopOwordm9pZCB3
ZWJraXRXZWJWaWV3UnVuQXNNb2RhbChXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdDbG9zZVBhZ2UoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNj
cmlwdEFsZXJ0KFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlKTsKIGJvb2wg
d2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDb25maXJtKFdlYktpdFdlYlZpZXcqLCBjb25zdCBD
U3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4IDAzYzVmMmYu
LmVjZDUxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNldHRpbmdzLmNwcApAQCAtMjA0LDYgKzIwNCwxMSBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0dGluZ3MoVGVzdCosIGdjb25zdHBvaW50ZXIpCiAg
ICAgd2Via2l0X3NldHRpbmdzX3NldF96b29tX3RleHRfb25seShzZXR0aW5ncywgVFJVRSk7CiAg
ICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF96b29tX3RleHRfb25seShzZXR0aW5ncykp
OwogCisgICAgLy8gQWxsb3cgTW9kYWwgRGlhbG9ncyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisg
ICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNldHRp
bmdzKSk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNldHRp
bmdzLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9k
YWxfZGlhbG9ncyhzZXR0aW5ncykpOworCiAgICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1Qoc2V0
dGluZ3MpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDI2OTkwOGIuLjk3NGQ2
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rl
c3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6
CiAgICAgZW51bSBXZWJWaWV3RXZlbnRzIHsKICAgICAgICAgQ3JlYXRlLAogICAgICAgICBSZWFk
eVRvU2hvdywKKyAgICAgICAgUnVuQXNNb2RhbCwKICAgICAgICAgQ2xvc2UKICAgICB9OwogCkBA
IC0xODIsNiArMTgzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgdGVzdC0+bV93aW5kb3dQcm9wZXJ0
aWVzQ2hhbmdlZC5hZGQoZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBhcmFtU3BlYykpOwogICAgIH0K
IAorICAgIHN0YXRpYyB2b2lkIGRpYWxvZ1J1bkFzTW9kYWwoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgVUlDbGllbnRUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQod2ViVmlldyAh
PSB0ZXN0LT5tX3dlYlZpZXcpOworICAgICAgICB0ZXN0LT5tX3dlYlZpZXdFdmVudHMuYXBwZW5k
KFJ1bkFzTW9kYWwpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIHZpZXdDbG9zZShXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBVSUNsaWVudFRlc3QqIHRlc3QpCiAgICAgewogICAgICAgICBnX2Fz
c2VydCh3ZWJWaWV3ICE9IHRlc3QtPm1fd2ViVmlldyk7CkBAIC0xOTYsMTAgKzIwMywxMSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ICE9IHRlc3QtPm1fd2ViVmll
dyk7CiAKLSAgICAgICAgV2ViS2l0V2luZG93UHJvcGVydGllcyogd2luZG93UHJvcGVydGllcyA9
IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X3Byb3BlcnRpZXMod2ViVmlldyk7Ci0gICAgICAg
IGdfYXNzZXJ0KHdpbmRvd1Byb3BlcnRpZXMpOwotICAgICAgICBXaW5kb3dQcm9wZXJ0aWVzKHdp
bmRvd1Byb3BlcnRpZXMpLmFzc2VydEVxdWFsKHRlc3QtPm1fd2luZG93UHJvcGVydGllcyk7Ci0K
KyAgICAgICAgaWYgKCF0ZXN0LT5tX2lzTW9kYWxEaWFsb2dUZXN0KSB7CisgICAgICAgICAgICBX
ZWJLaXRXaW5kb3dQcm9wZXJ0aWVzKiB3aW5kb3dQcm9wZXJ0aWVzID0gd2Via2l0X3dlYl92aWV3
X2dldF93aW5kb3dfcHJvcGVydGllcyh3ZWJWaWV3KTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KHdp
bmRvd1Byb3BlcnRpZXMpOworICAgICAgICAgICAgV2luZG93UHJvcGVydGllcyh3aW5kb3dQcm9w
ZXJ0aWVzKS5hc3NlcnRFcXVhbCh0ZXN0LT5tX3dpbmRvd1Byb3BlcnRpZXMpOworICAgICAgICB9
CiAgICAgICAgIHRlc3QtPm1fd2ViVmlld0V2ZW50cy5hcHBlbmQoUmVhZHlUb1Nob3cpOwogICAg
IH0KIApAQCAtMjE5LDYgKzIyNyw4IEBAIHB1YmxpYzoKICAgICAgICAgZ19zaWduYWxfY29ubmVj
dCh3aW5kb3dQcm9wZXJ0aWVzLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3aW5kb3dQcm9wZXJ0aWVz
Tm90aWZ5Q2FsbGJhY2spLCB0ZXN0KTsKIAogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dl
YlZpZXcsICJyZWFkeS10by1zaG93IiwgR19DQUxMQkFDSyh2aWV3UmVhZHlUb1Nob3cpLCB0ZXN0
KTsKKyAgICAgICAgaWYgKHRlc3QtPm1faXNNb2RhbERpYWxvZ1Rlc3QpCisgICAgICAgICAgICBn
X3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJydW4tYXMtbW9kYWwiLCBHX0NBTExCQUNLKGRp
YWxvZ1J1bkFzTW9kYWwpLCB0ZXN0KTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJW
aWV3LCAiY2xvc2UiLCBHX0NBTExCQUNLKHZpZXdDbG9zZSksIHRlc3QpOwogCiAgICAgICAgIHJl
dHVybiBuZXdXZWJWaWV3OwpAQCAtMjc4LDYgKzI4OCw3IEBAIHB1YmxpYzoKICAgICBVSUNsaWVu
dFRlc3QoKQogICAgICAgICA6IG1fc2NyaXB0VHlwZShBbGVydCkKICAgICAgICAgLCBtX3Njcmlw
dERpYWxvZ0NvbmZpcm1lZCh0cnVlKQorICAgICAgICAsIG1faXNNb2RhbERpYWxvZ1Rlc3QoZmFs
c2UpCiAgICAgICAgICwgbV9tb3VzZVRhcmdldE1vZGlmaWVycygwKQogICAgIHsKICAgICAgICAg
d2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGlj
YWxseSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKG1fd2ViVmlldyksIFRSVUUpOwpAQCAt
MzEzLDYgKzMyNCw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8V2ViVmlld0V2ZW50cz4gbV93ZWJW
aWV3RXZlbnRzOwogICAgIFNjcmlwdFR5cGUgbV9zY3JpcHRUeXBlOwogICAgIGJvb2wgbV9zY3Jp
cHREaWFsb2dDb25maXJtZWQ7CisgICAgYm9vbCBtX2lzTW9kYWxEaWFsb2dUZXN0OwogICAgIFdp
bmRvd1Byb3BlcnRpZXMgbV93aW5kb3dQcm9wZXJ0aWVzOwogICAgIEhhc2hTZXQ8V1RGOjpTdHJp
bmc+IG1fd2luZG93UHJvcGVydGllc0NoYW5nZWQ7CiAgICAgR1JlZlB0cjxXZWJLaXRIaXRUZXN0
UmVzdWx0PiBtX21vdXNlVGFyZ2V0SGl0VGVzdFJlc3VsdDsKQEAgLTMzMSw2ICszNDMsMzggQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDcmVhdGVSZWFkeUNsb3NlKFVJQ2xpZW50VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzJdLCA9PSwgVUlD
bGllbnRUZXN0OjpDbG9zZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QWxsb3dNb2Rh
bERpYWxvZ3MoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktp
dFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+
bV93ZWJWaWV3KTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3Mo
c2V0dGluZ3MsIFRSVUUpOworCisgICAgdGVzdC0+bV9pc01vZGFsRGlhbG9nVGVzdCA9IHRydWU7
CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5IG9ubG9hZD1cIndpbmRvdy5zaG93TW9k
YWxEaWFsb2coJ2RhdGE6dGV4dC9odG1sLDxodG1sPjxib2R5Lz48c2NyaXB0PndpbmRvdy5jbG9z
ZSgpOzwvc2NyaXB0PjwvaHRtbD4nKVwiPjwvYm9keT48L2h0bWw+IiwgMCk7CisgICAgdGVzdC0+
d2FpdFVudGlsTWFpbkxvb3BGaW5pc2hlcygpOworCisgICAgVmVjdG9yPFVJQ2xpZW50VGVzdDo6
V2ViVmlld0V2ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fd2ViVmlld0V2ZW50czsKKyAgICBnX2Fz
c2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDQpOworICAgIGdfYXNzZXJ0X2NtcGludChl
dmVudHNbMF0sID09LCBVSUNsaWVudFRlc3Q6OkNyZWF0ZSk7CisgICAgZ19hc3NlcnRfY21waW50
KGV2ZW50c1sxXSwgPT0sIFVJQ2xpZW50VGVzdDo6UmVhZHlUb1Nob3cpOworICAgIGdfYXNzZXJ0
X2NtcGludChldmVudHNbMl0sID09LCBVSUNsaWVudFRlc3Q6OlJ1bkFzTW9kYWwpOworICAgIGdf
YXNzZXJ0X2NtcGludChldmVudHNbM10sID09LCBVSUNsaWVudFRlc3Q6OkNsb3NlKTsKK30KKwor
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdEaXNhbGxvd01vZGFsRGlhbG9ncyhVSUNsaWVudFRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0g
d2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyhzZXR0aW5ncywgRkFMU0UpOworCisg
ICAgdGVzdC0+bV9pc01vZGFsRGlhbG9nVGVzdCA9IHRydWU7CisgICAgdGVzdC0+bG9hZEh0bWwo
IjxodG1sPjxib2R5IG9ubG9hZD1cIndpbmRvdy5zaG93TW9kYWxEaWFsb2coJ2RhdGE6dGV4dC9o
dG1sLDxodG1sPjxib2R5Lz48c2NyaXB0PndpbmRvdy5jbG9zZSgpOzwvc2NyaXB0PjwvaHRtbD4n
KVwiPjwvYm9keT48L2h0bWw+IiwgMCk7CisgICAgLy8gV2UgbmVlZCB0byB1c2UgYSB0aW1lb3V0
IGhlcmUgYmVjYXVzZSB0aGUgdmlld0Nsb3NlKCkgZnVuY3Rpb24KKyAgICAvLyB3b24ndCBldmVy
IGJlIGNhbGxlZCBhcyB0aGUgZGlhbG9nIHdvbid0IGJlIGNyZWF0ZWQuCisgICAgdGVzdC0+d2Fp
dCgxKTsKKworICAgIFZlY3RvcjxVSUNsaWVudFRlc3Q6OldlYlZpZXdFdmVudHM+JiBldmVudHMg
PSB0ZXN0LT5tX3dlYlZpZXdFdmVudHM7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXpl
KCksID09LCAwKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9n
cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGh0bWxPbkxvYWRGb3JtYXQgPSAiPGh0bWw+PGJvZHkgb25Mb2FkPVwiJXNcIj48L2Jv
ZHk+PC9odG1sPiI7CkBAIC00NTgsNiArNTAyLDggQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdl
YlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic2V0dGluZ3MiLCB0ZXN0V2ViVmlld1Nl
dHRpbmdzKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInJlcGxhY2Ut
Y29udGVudCIsIHRlc3RXZWJWaWV3UmVwbGFjZUNvbnRlbnQpOwogICAgIFVJQ2xpZW50VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgImNyZWF0ZS1yZWFkeS1jbG9zZSIsIHRlc3RXZWJWaWV3Q3Jl
YXRlUmVhZHlDbG9zZSk7CisgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
YWxsb3ctbW9kYWwtZGlhbG9ncyIsIHRlc3RXZWJWaWV3QWxsb3dNb2RhbERpYWxvZ3MpOworICAg
IFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImRpc2FsbG93LW1vZGFsLWRpYWxv
Z3MiLCB0ZXN0V2ViVmlld0Rpc2FsbG93TW9kYWxEaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJqYXZhc2NyaXB0LWRpYWxvZ3MiLCB0ZXN0V2ViVmlld0ph
dmFTY3JpcHREaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJ3aW5kb3ctcHJvcGVydGllcyIsIHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyk7CiAgICAg
VUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibW91c2UtdGFyZ2V0IiwgdGVzdFdl
YlZpZXdNb3VzZVRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDhlYTNmZTQuLjk3Yjg0ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMTcxLDYgKzE3MSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQsIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5
PiBwCiAgICAgLCBtX2dhcEJldHdlZW5QYWdlcygwKQogICAgICwgbV9pc1ZhbGlkKHRydWUpCiAg
ICAgLCBtX2lzQ2xvc2VkKGZhbHNlKQorICAgICwgbV9jYW5SdW5Nb2RhbChmYWxzZSkKICAgICAs
IG1faXNJblByaW50aW5nTW9kZShmYWxzZSkKICAgICAsIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRP
cGVyYXRpb24oZmFsc2UpCiAgICAgLCBtX2luRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoZmFsc2Up
CkBAIC0yODQsNyArMjg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVVSUNsaWVu
dChjb25zdCBXS1BhZ2VVSUNsaWVudCogY2xpZW50KQogICAgIG1fdWlDbGllbnQuaW5pdGlhbGl6
ZShjbGllbnQpOwogCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRD
YW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwobV91aUNsaWVudC5jYW5SdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwoKSksIG1fcGFnZUlEKTsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldENhblJ1bk1vZGFsKG1fdWlDbGllbnQuY2FuUnVuTW9kYWwoKSksIG1f
cGFnZUlEKTsKKyAgICBzZXRDYW5SdW5Nb2RhbChtX3VpQ2xpZW50LmNhblJ1bk1vZGFsKCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUZpbmRDbGllbnQoY29uc3QgV0tQYWdl
RmluZENsaWVudCogY2xpZW50KQpAQCAtMzMxMSw3ICszMzEyLDcgQEAgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycygpIGNvbnN0CiAgICAg
cGFyYW1ldGVycy5zZXNzaW9uU3RhdGUgPSBTZXNzaW9uU3RhdGUobV9iYWNrRm9yd2FyZExpc3Qt
PmVudHJpZXMoKSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJbmRleCgpKTsKICAgICBwYXJh
bWV0ZXJzLmhpZ2hlc3RVc2VkQmFja0ZvcndhcmRJdGVtSUQgPSBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtOjpoaWdoZWRVc2VkSXRlbUlEKCk7CiAgICAgcGFyYW1ldGVycy5jYW5SdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwgPSBtX3VpQ2xpZW50LmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCgpOwotICAgIHBhcmFtZXRlcnMuY2FuUnVuTW9kYWwgPSBtX3VpQ2xpZW50LmNhblJ1bk1vZGFs
KCk7CisgICAgcGFyYW1ldGVycy5jYW5SdW5Nb2RhbCA9IG1fY2FuUnVuTW9kYWw7CiAgICAgcGFy
YW1ldGVycy5kZXZpY2VTY2FsZUZhY3RvciA9IG1faW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3I7
CiAgICAgcGFyYW1ldGVycy5tZWRpYVZvbHVtZSA9IG1fbWVkaWFWb2x1bWU7CiAKQEAgLTM0ODks
NiArMzQ5MCwyMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRSZW1vdmVkSXRlbSh1
aW50NjRfdCBpdGVtSUQpCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0Q2FuUnVuTW9kYWwoYm9vbCBjYW5SdW5Nb2RhbCkKK3sKKyAgICBpZiAo
IWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSXQncyBvbmx5IHBvc3NpYmxl
IHRvIGNoYW5nZSB0aGUgc3RhdGUgZm9yIGEgV2ViUGFnZSB3aGljaAorICAgIC8vIGFscmVhZHkg
cXVhbGlmaWVzIGZvciBydW5uaW5nIG1vZGFsIGNoaWxkIHdlYiBwYWdlcywgb3RoZXJ3aXNlCisg
ICAgLy8gdGhlcmUncyBubyBvdGhlciBwb3NzaWJpbGl0eSB0aGFuIG5vdCBhbGxvd2luZyBpdC4K
KyAgICBtX2NhblJ1bk1vZGFsID0gbV91aUNsaWVudC5jYW5SdW5Nb2RhbCgpICYmIGNhblJ1bk1v
ZGFsOworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuTW9k
YWwobV9jYW5SdW5Nb2RhbCksIG1fcGFnZUlEKTsKK30KKworYm9vbCBXZWJQYWdlUHJveHk6OmNh
blJ1bk1vZGFsKCkKK3sKKyAgICByZXR1cm4gaXNWYWxpZCgpID8gbV9jYW5SdW5Nb2RhbCA6IGZh
bHNlOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5QcmludGluZyhXZWJGcmFtZVByb3h5
KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8pCiB7CiAgICAgaWYgKG1faXNJblBy
aW50aW5nTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBh
ZjhkYTFiLi5iZjVlOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC01ODMsNiArNTgzLDkgQEAgcHVibGljOgogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5UGx1
Z0lEKCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NpYmlsaXR5UGx1Z0lEOyB9CiAjZW5kaWYKIAor
ICAgIHZvaWQgc2V0Q2FuUnVuTW9kYWwoYm9vbCk7CisgICAgYm9vbCBjYW5SdW5Nb2RhbCgpOwor
CiAgICAgdm9pZCBiZWdpblByaW50aW5nKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8m
KTsKICAgICB2b2lkIGVuZFByaW50aW5nKCk7CiAgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmlu
dGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgUGFzc1JlZlB0cjxDb21wdXRl
ZFBhZ2VzQ2FsbGJhY2s+KTsKQEAgLTk2MSw2ICs5NjQsOSBAQCBwcml2YXRlOgogICAgIC8vIFdo
ZXRoZXIgV2ViUGFnZVByb3h5OjpjbG9zZSgpIGhhcyBiZWVuIGNhbGxlZCBvbiB0aGlzIHBhZ2Uu
CiAgICAgYm9vbCBtX2lzQ2xvc2VkOwogCisgICAgLy8gV2hldGhlciBpdCBjYW4gcnVuIG1vZGFs
IGNoaWxkIHdlYiBwYWdlcy4KKyAgICBib29sIG1fY2FuUnVuTW9kYWw7CisKICAgICBib29sIG1f
aXNJblByaW50aW5nTW9kZTsKICAgICBib29sIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRp
b247CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA0YTc0ZmYzLi5mZjhiYTIyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDMtMDEgIE1hcmlvIFNhbmNoZXog
UHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0
IGZvciB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGluIFdlYktpdDJHVEsrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBtb2RhbCBk
aWFsb2dzIGluIEdUSydzIE1pbmlCcm93c2VyLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAgKHdlYlZpZXdSdW5Bc01vZGFsKToKKyAgICAgICAg
KHdlYlZpZXdDcmVhdGUpOgorICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6CisgICAgICAg
IChicm93c2VyX3dpbmRvd19uZXcpOgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
V2luZG93Lmg6CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAgKGNy
ZWF0ZUJyb3dzZXJXaW5kb3cpOgorCiAyMDEyLTAyLTI4ICBNYWhlc2ggS3Vsa2FybmkgIDxtYWhl
c2gua3Vsa2FybmlAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gQWxsb3cgcmVhZC93cml0ZSB0
byB0aGUgV2ViVmlldy51cmwgcHJvcGVydHkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRv
dy5jCmluZGV4IDc0NTE4NDQuLjM3ODQ5ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuYwpAQCAtMjAzLDYgKzIwMywxMSBAQCBzdGF0aWMgdm9pZCB3ZWJWaWV3Q2xvc2UoV2Vi
S2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIGd0a193aWRn
ZXRfZGVzdHJveShHVEtfV0lER0VUKHdpbmRvdykpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJWaWV3
UnVuQXNNb2RhbChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBCcm93c2VyV2luZG93ICp3aW5kb3cp
Cit7CisgICAgZ3RrX3dpbmRvd19zZXRfbW9kYWwoR1RLX1dJTkRPVyh3aW5kb3cpLCBUUlVFKTsK
K30KKwogc3RhdGljIHZvaWQgd2ViVmlld1JlYWR5VG9TaG93KFdlYktpdFdlYlZpZXcgKndlYlZp
ZXcsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBXZWJLaXRXaW5kb3dQcm9wZXJ0aWVz
ICp3aW5kb3dQcm9wZXJ0aWVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfcHJvcGVydGll
cyh3ZWJWaWV3KTsKQEAgLTIzMCw4ICsyMzUsOSBAQCBzdGF0aWMgR3RrV2lkZ2V0ICp3ZWJWaWV3
Q3JlYXRlKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAg
ICBXZWJLaXRXZWJWaWV3ICpuZXdXZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF9jb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3
KSkpOwogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MobmV3V2ViVmlldywgd2Via2l0
X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7CiAKLSAgICBHdGtXaWRnZXQgKm5ld1dp
bmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3KTsKKyAgICBHdGtXaWRnZXQgKm5l
d1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3LCBHVEtfV0lORE9XKHdpbmRv
dykpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgInJlYWR5LXRvLXNob3ciLCBH
X0NBTExCQUNLKHdlYlZpZXdSZWFkeVRvU2hvdyksIG5ld1dpbmRvdyk7CisgICAgZ19zaWduYWxf
Y29ubmVjdChuZXdXZWJWaWV3LCAicnVuLWFzLW1vZGFsIiwgR19DQUxMQkFDSyh3ZWJWaWV3UnVu
QXNNb2RhbCksIG5ld1dpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAi
Y2xvc2UiLCBHX0NBTExCQUNLKHdlYlZpZXdDbG9zZSksIG5ld1dpbmRvdyk7CiAgICAgcmV0dXJu
IEdUS19XSURHRVQobmV3V2ViVmlldyk7CiB9CkBAIC0yNTQsNyArMjYwLDcgQEAgc3RhdGljIGdi
b29sZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0
UG9saWN5RGVjaXNpb24KIAogICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZpZXcgPSBXRUJLSVRf
V0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQod2Via2l0X3dlYl92aWV3
X2dldF9jb250ZXh0KHdlYlZpZXcpKSk7CiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5n
cyhuZXdXZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsKLSAg
ICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3KTsK
KyAgICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3
LCBHVEtfV0lORE9XKHdpbmRvdykpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3JlcXVlc3Qo
bmV3V2ViVmlldywgd2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9yZXF1ZXN0
KG5hdmlnYXRpb25EZWNpc2lvbikpOwogICAgIGd0a193aWRnZXRfc2hvdyhuZXdXaW5kb3cpOwog
CkBAIC00NjUsMTEgKzQ3MSwxMiBAQCBzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19jbGFzc19p
bml0KEJyb3dzZXJXaW5kb3dDbGFzcyAqa2xhc3MpCiB9CiAKIC8vIFB1YmxpYyBBUEkuCi1HdGtX
aWRnZXQgKmJyb3dzZXJfd2luZG93X25ldyhXZWJLaXRXZWJWaWV3ICp2aWV3KQorR3RrV2lkZ2V0
ICpicm93c2VyX3dpbmRvd19uZXcoV2ViS2l0V2ViVmlldyAqdmlldywgR3RrV2luZG93ICpwYXJl
bnQpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHZpZXcp
LCAwKTsKIAogICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2JqZWN0X25ldyhCUk9XU0VSX1RZUEVf
V0lORE9XLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNpZW50LWZv
ciIsIHBhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiLCBH
VEtfV0lORE9XX1RPUExFVkVMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
dmlldyIsIHZpZXcsIE5VTEwpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmggYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5o
CmluZGV4IDQ2YTA2YzIuLjk0OTVhOGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuaApAQCAtNDMsNyArNDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBfQnJvd3NlcldpbmRvd0NsYXNz
ICAgQnJvd3NlcldpbmRvd0NsYXNzOwogCiBHVHlwZSBicm93c2VyX3dpbmRvd19nZXRfdHlwZSh2
b2lkKTsKIAotR3RrV2lkZ2V0KiBicm93c2VyX3dpbmRvd19uZXcoV2ViS2l0V2ViVmlldyopOwor
R3RrV2lkZ2V0KiBicm93c2VyX3dpbmRvd19uZXcoV2ViS2l0V2ViVmlldyosIEd0a1dpbmRvdyop
OwogV2ViS2l0V2ViVmlldyogYnJvd3Nlcl93aW5kb3dfZ2V0X3ZpZXcoQnJvd3NlcldpbmRvdyop
OwogCiBHX0VORF9ERUNMUwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4u
YyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggOTY3NDhhNi4uNjM5MzYxMiAx
MDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBnY2hhciAqYXJndW1l
bnRUb1VSTChjb25zdCBjaGFyICpmaWxlbmFtZSkKIHN0YXRpYyB2b2lkIGNyZWF0ZUJyb3dzZXJX
aW5kb3coY29uc3QgZ2NoYXIgKnVyaSwgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzKQog
ewogICAgIEd0a1dpZGdldCAqd2ViVmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXcoKTsKLSAgICBH
dGtXaWRnZXQgKm1haW5XaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoV0VCS0lUX1dFQl9WSUVX
KHdlYlZpZXcpKTsKKyAgICBHdGtXaWRnZXQgKm1haW5XaW5kb3cgPSBicm93c2VyX3dpbmRvd19u
ZXcoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKICAgICBnY2hhciAqdXJsID0gYXJn
dW1lbnRUb1VSTCh1cmkpOwogCiAgICAgaWYgKHdlYmtpdFNldHRpbmdzKSB7Ci0tIAoxLjcuNy41
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129916</attachid>
            <date>2012-03-02 10:13:53 -0800</date>
            <delta_ts>2012-03-27 07:31:10 -0700</delta_ts>
            <desc>Patch proposal + Unit tests</desc>
            <filename>0001-2012-03-02-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>39503</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAyZDM1YTFiNGNhODI2ZTdmMjYzYTUzMjhlY2I4M2YzOWNhZDQ3ZGRmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDEgTWFyIDIwMTIgMTI6MjI6NTggKzAxMDAKU3ViamVjdDogW1BBVENI
XSAyMDEyLTAzLTAyICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cgaW4g
V2ViS2l0MkdUSysKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Nzk1MDAKCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIElt
cGxlbWVudCBydW5Nb2RhbCBpbiBXZWJLaXRVSUNsaWVudCB0byBtYWtlIHRoZSBXZWJLaXRXZWJW
aWV3CiAgICAgICAgZW1pdCBhICdydW4tYXMtbW9kYWwnIHNpZ25hbCB3aGVuIHJlcXVlc3RlZCwg
Y3JlYXRpbmcgYSBuZXcKICAgICAgICBtYWlubG9vcCB0aGVyZSB0byBibG9jayB1c2VyIGludGVy
YWN0aW9uIHdpdGggdGhlIG9yaWdpbmFsIHdpbmRvdwogICAgICAgIHdoaWxlIHRoZSBtb2RhbCBk
aWFsb2cgaXMgc2hvd2luZy4KCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNs
aWVudC5jcHA6CiAgICAgICAgKHJ1bk1vZGFsKTogQ2FsbCB0byB0aGUgbmV3IHdlYmtpdFdlYlZp
ZXdSdW5Bc01vZGFsUGFnZSBmdW5jdGlvbi4KICAgICAgICAoYXR0YWNoVUlDbGllbnRUb1ZpZXcp
OiBBZGQgcnVuTW9kYWwuCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcDoKICAgICAgICAoX1dlYktpdFdlYlZpZXdQcml2YXRlKTogQWRkIGFuIGF0cmlidXRlIGZv
ciBhIG5ldyBtYWluIGxvb3AuCiAgICAgICAgKHdlYmtpdFdlYlZpZXdGaW5hbGl6ZSk6IE1ha2Ug
c3VyZSB0aGUgbWFpbiBsb29wIGZvciBtYWluIGRpYWxvZ3MsCiAgICAgICAgaWYgYW55LCBpcyBz
dG9wcGVkIGlmIGl0IHdhcyBzdGlsbCBydW5uaW5nLgogICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
Y2xhc3NfaW5pdCk6IERlY2xhcmUgbmV3IHNpZ25hbCAncnVuLWFzLW1vZGFsJy4KICAgICAgICAo
d2Via2l0V2ViVmlld1J1bkFzTW9kYWwpOiBFbWl0IHRoZSAncnVuLWFzLW1vZGFsJyBzaWduYWwg
YW5kLCBpZgogICAgICAgIGhhbmRsZWQsIGNyZWF0ZSBhbmQgcnVuIGEgbmV3IG1haW4gbG9vcC4K
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKICAgICAgICAoX1dl
YktpdFdlYlZpZXdDbGFzcyk6IE5ldyBoYW5kbGVyIGZvciB0aGUgJ3J1bi1hcy1tb2RhbCcgc2ln
bmFsLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDog
QWRkIHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsUGFnZS4KCiAgICAgICAgQWxsb3cgc2V0dGluZyBh
bmQgZ2V0dGluZyB0aGUgdmFsdWUgb2YgV2ViUGFnZSdzIGNhblJ1bk1vZGFsCiAgICAgICAgYXR0
cmlidXRlIGluIHRoZSBXZWJQcm9jZXNzIGZyb20gdGhlIFVJUHJvY2VzcyBhZnRlciB0aGUgY3Jl
YXRpb24KICAgICAgICBvZiBhIFdlYlBhZ2UsIHRvIGFsbG93IHVzaW5nIGl0IGZyb20gV2ViS2l0
V2ViVmlldyB0byBhbGxvdyB0aGUKICAgICAgICBjbGllbnQgYXBwbGljYXRpb24gdG8gZGVjaWRl
IHdoZXRoZXIgdG8gYWxsb3cgY3JlYXRlIG1vZGFsCiAgICAgICAgZGlhbG9ncywgd2hpY2ggd291
bGQgcmVzdWx0IGluIGxhdW5jaGluZyBhbiBhZGRpdGlvbmFsIG5lc3RlZAogICAgICAgIGV2ZW50
IGxvb3AgaW4gdGhlIHdlYiBwcm9jZXNzLCBhZnRlciBjcmVhdGluZyB0aGUgZGlhbG9nLgoKICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgogICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6V2ViUGFnZVByb3h5KTogSW5pdGlhbGl6ZSB0aGUgbmV3CiAgICAgICAgbV9jYW5S
dW5Nb2RhbCBhdHRyaWJ1dGUsIHRvIGNhY2hlIHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUKICAg
ICAgICBXZWJQYWdlIGluIHRoZSBXZWJQcm9jZXNzLgogICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW5pdGlhbGl6ZVVJQ2xpZW50KTogQ2FsbCB0aGUgbmV3IGZ1bmN0aW9uCiAgICAgICAg
c2V0Q2FuUnVuTW9kYWwsIGluc3RlYWQgb2YgbWFudWFsbHkgc2VuZGluZyB0aGUgU2V0Q2FuUnVu
TW9kYWwgbWVzc2FnZS4KICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyk6IFVzZSBtX2NhblJ1bk1vZGFsCiAgICAgICAgaW5zdGVhZCBvZiBtX3VpQ2xpZW50
LmNhblJ1bk1vZGFsIHdoZW4gcHJlcGFyaW5nIHRoZSBwYXJhbWV0ZXJzLgogICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0Q2FuUnVuTW9kYWwpOiBOZXcgcHVibGljIGZ1bmN0aW9uLCBp
dAogICAgICAgIHNldHMgdGhlIHZhbHVlIG9mIG1fY2FuUnVuTW9kYWwgYW5kIHNlbmRzIGEgbWVz
c2FnZSB0byB0aGUgV2ViCiAgICAgICAgcHJvY2VzcyBmb3IgdXBkYXRpbmcgdGhlIFdlYlBhZ2Us
IHdoZW5ldmVyIHBvc3NpYmxlLgogICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FuUnVu
TW9kYWwpOiBOZXcgcHVibGljIGZ1bmN0aW9uLCByZXR1cm5zCiAgICAgICAgdGhlIHZhbHVlIG9m
IHRoZSBtX2NhblJ1bk1vZGFsIGF0dHJpYnV0ZS4KICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKICAgICAgICAoV2ViUGFnZVByb3h5KTogQWRkZWQgbmV3IHB1YmxpYyBmdW5jdGlv
bnMgYW5kIHByaXZhdGUgYXR0cmlidXRlLgoKICAgICAgICBOZXcgcHJvcGVydHkgaW4gV2ViS2l0
U2V0dGluZ3MgdG8gYmUgYWJsZSB0byBkZWNpZGUgd2hldGhlciBpdCBpcwogICAgICAgIGFsbG93
ZWQgdG8gY3JlYXRlIGFuZCBydW4gbmV3IGNoaWxkIHdlYnZpZXdzIGFzIG1vZGFsIGRpYWxvZ3Mu
CgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwOgogICAgICAg
IChfV2ViS2l0U2V0dGluZ3NQcml2YXRlKTogTmV3IGF0dHJpYnV0ZSBhbGxvd01vZGFsRGlhbG9n
cy4KICAgICAgICAod2ViS2l0U2V0dGluZ3NTZXRQcm9wZXJ0eSk6IEhhbmRsZSB0aGUgbmV3IHBy
b3BlcnR5LgogICAgICAgICh3ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5KTogRGl0dG8uCiAgICAg
ICAgKHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KTogSW5zdGFsbCB0aGUgbmV3IHByb3BlcnR5
LgogICAgICAgICh3ZWJraXRTZXR0aW5nc0F0dGFjaFNldHRpbmdzVG9QYWdlKTogTWFrZSBzdXJl
IHRoZSBXZWJQYWdlIGlzCiAgICAgICAgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgdmFsdWUgb2YgdGhl
IG5ldyBwcm9wZXJ0eS4KICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9hbGxvd19tb2RhbF9k
aWFsb2dzKTogTmV3IHNldHRlci4KICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19t
b2RhbF9kaWFsb2dzKTogTmV3IGdldHRlci4KICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFNldHRpbmdzLmg6CgogICAgICAgIENvbm5lY3QgdG8gdGhlICdub3RpZnk6OmFsbG93LW1v
ZGFsLWRpYWxvZ3MnIHNpZ25hbCBmcm9tCiAgICAgICAgV2ViS2l0U2V0dGluZ3MgdG8gZW5zdXJl
IHRoYXQgY2FuUnVuTW9kYWwgcHJvcGVydHkgb2YgdGhlIFdlYlBhZ2UKICAgICAgICBpcyBrZXB0
IHVwIHRvIGRhdGUuIEVuc3VyZSB0aGF0IHNpZ25hbCBoYW5kbGVycyBmb3IgbW9uaXRvcmluZwog
ICAgICAgIHNldHRpbmdzIGFyZSBkaXNjb25uZWN0ZWQgd2hlbiB0aGUgd2VidmlldyBpcyBmaW5h
bGl6ZWQuCgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CiAg
ICAgICAgKHdlYmtpdFdlYlZpZXdTZXRTZXR0aW5ncyk6IENvbm5lY3QgdG8gdGhlIG5ldyBzaWdu
YWwKICAgICAgICAnbm90aWZ5OjphbGxvdy1tb2RhbC1kaWFsb2dzJywgZnJvbSBXZWJLaXRTZXR0
aW5ncy4KICAgICAgICAoYWxsb3dNb2RhbERpYWxvZ3NDaGFuZ2VkKTogQ2FsbGJhY2sgdG8gdXBk
YXRlIFdlYlBhZ2UncwogICAgICAgIGNhblJ1bk1vZGFsIHByb3BlcnR5IHdoZW4gdXBkYXRlZCB0
aHJvdWdoIFdlYktpdFNldHRpbmdzLgogICAgICAgICh3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNl
dHRpbmdzU2lnbmFsSGFuZGxlcnMpOiBEaXNjb25uZWN0IHNpZ25hbAogICAgICAgIGhhbmRsZXJz
IGZvciBtb25pdG9yaW5nIFdlYktpdFNldHRpbmdzIHByb3BlcnRpZXMuCiAgICAgICAgKHdlYmtp
dFdlYlZpZXdGaW5hbGl6ZSk6IEVuc3VyZSBzaWduYWwgaGFuZGxlcnMgYXJlIGRpc2Nvbm5lY3Rl
ZC4KICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyk6IERpdHRvLgogICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgoKICAgICAgICBBZGQgbmV3IHVu
aXQgdGVzdHMgdG8gY2hlY2sgdGhlICdydW4tYXMtbW9kYWwnIHNpZ25hbCBpcyBlbWl0dGVkCiAg
ICAgICAgb25seSB3aGVuIHRoZSBuZXcgcHJvcGVydHkgaW4gV2ViS2l0U2V0dGluZ3MgaXMgc2V0
IHRvIFRSVUUuCgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdl
YlZpZXcuY3BwOgogICAgICAgICh0ZXN0V2ViVmlld0FsbG93TW9kYWxEaWFsb2dzKTogTmV3IHVu
aXQgdGVzdCB0byBjaGVjayB0aGF0IG1vZGFsCiAgICAgICAgZGlhbG9ncyBhcmUgcHJvcGVybHkg
Y3JlYXRlZCBmcm9tIEphdmFTY3JpcHQgd2hlbiBhbGxvd2VkLgogICAgICAgICh0ZXN0V2ViVmll
d0Rpc2FsbG93TW9kYWxEaWFsb2dzKTogTmV3IHVuaXQgdGVzdCB0byBjaGVjayB0aGF0CiAgICAg
ICAgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRlIG1vZGFsIGRpYWxvZ3Mgd2hlbiBub3QgYWxs
b3dlZC4KICAgICAgICAoYmVmb3JlQWxsKTogQWRkIHRoZSBuZXcgdW5pdCB0ZXN0LgoKMjAxMi0w
My0wMiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CgogICAgICAg
IFtHVEtdIEFkZCBzdXBwb3J0IGZvciB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGluIFdlYktpdDJH
VEsrCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NTAw
CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgbW9kYWwgZGlhbG9ncyBpbiBHVEsncyBNaW5pQnJvd3Nlci4KCiAgICAgICAgKiBNaW5p
QnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgogICAgICAgICh3ZWJWaWV3UnVuQXNNb2RhbCk6
CiAgICAgICAgKHdlYlZpZXdDcmVhdGUpOgogICAgICAgICh3ZWJWaWV3RGVjaWRlUG9saWN5KToK
ICAgICAgICAoYnJvd3Nlcl93aW5kb3dfbmV3KToKICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9C
cm93c2VyV2luZG93Lmg6CiAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgogICAgICAg
IChjcmVhdGVCcm93c2VyV2luZG93KToKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgODkgKysrKysrKysrKysrKysrKysrKysKIC4uLi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCAgIHwgICA2MiArKysr
KysrKysrKysrLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGlu
Z3MuaCAgfCAgICA3ICsrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNs
aWVudC5jcHAgICB8ICAgIDcgKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcCB8ICAgNjQgKysrKysrKysrKysrKy0KIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCAgIHwgICAgMSArCiAuLi4vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCAgICAgICB8ICAgIDEgKwogLi4uL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAgfCAgICA1ICsKIC4uLi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgIHwgICA1NCArKysr
KysrKysrKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwICAgICAg
ICAgIHwgICAyMiArKysrKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCAgICAgICAgICAgIHwgICAgNiArKwogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDE4ICsrKysKIFRvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyV2luZG93LmMgICAgICAgICAgICAgIHwgICAxMyArKy0KIFRvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmggICAgICAgICAgICAgIHwgICAgMiArLQogVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL21haW4uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiAxNSBmaWxlcyBj
aGFuZ2VkLCAzMzcgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGRkZDAwODEuLjU1ZGU2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MiBAQAorMjAxMi0wMy0w
MiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS10gQWRkIHN1cHBvcnQgZm9yIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cgaW4gV2ViS2l0MkdU
SysKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NTAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50IHJ1bk1vZGFsIGluIFdlYktpdFVJQ2xpZW50IHRvIG1ha2UgdGhlIFdlYktpdFdlYlZpZXcK
KyAgICAgICAgZW1pdCBhICdydW4tYXMtbW9kYWwnIHNpZ25hbCB3aGVuIHJlcXVlc3RlZCwgY3Jl
YXRpbmcgYSBuZXcKKyAgICAgICAgbWFpbmxvb3AgdGhlcmUgdG8gYmxvY2sgdXNlciBpbnRlcmFj
dGlvbiB3aXRoIHRoZSBvcmlnaW5hbCB3aW5kb3cKKyAgICAgICAgd2hpbGUgdGhlIG1vZGFsIGRp
YWxvZyBpcyBzaG93aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlD
bGllbnQuY3BwOgorICAgICAgICAocnVuTW9kYWwpOiBDYWxsIHRvIHRoZSBuZXcgd2Via2l0V2Vi
Vmlld1J1bkFzTW9kYWxQYWdlIGZ1bmN0aW9uLgorICAgICAgICAoYXR0YWNoVUlDbGllbnRUb1Zp
ZXcpOiBBZGQgcnVuTW9kYWwuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1ByaXZhdGUpOiBBZGQgYW4gYXRyaWJ1
dGUgZm9yIGEgbmV3IG1haW4gbG9vcC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdGaW5hbGl6ZSk6
IE1ha2Ugc3VyZSB0aGUgbWFpbiBsb29wIGZvciBtYWluIGRpYWxvZ3MsCisgICAgICAgIGlmIGFu
eSwgaXMgc3RvcHBlZCBpZiBpdCB3YXMgc3RpbGwgcnVubmluZy4KKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19jbGFzc19pbml0KTogRGVjbGFyZSBuZXcgc2lnbmFsICdydW4tYXMtbW9kYWwnLgor
ICAgICAgICAod2Via2l0V2ViVmlld1J1bkFzTW9kYWwpOiBFbWl0IHRoZSAncnVuLWFzLW1vZGFs
JyBzaWduYWwgYW5kLCBpZgorICAgICAgICBoYW5kbGVkLCBjcmVhdGUgYW5kIHJ1biBhIG5ldyBt
YWluIGxvb3AuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgor
ICAgICAgICAoX1dlYktpdFdlYlZpZXdDbGFzcyk6IE5ldyBoYW5kbGVyIGZvciB0aGUgJ3J1bi1h
cy1tb2RhbCcgc2lnbmFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdQcml2YXRlLmg6IEFkZCB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbFBhZ2UuCisKKyAgICAgICAg
QWxsb3cgc2V0dGluZyBhbmQgZ2V0dGluZyB0aGUgdmFsdWUgb2YgV2ViUGFnZSdzIGNhblJ1bk1v
ZGFsCisgICAgICAgIGF0dHJpYnV0ZSBpbiB0aGUgV2ViUHJvY2VzcyBmcm9tIHRoZSBVSVByb2Nl
c3MgYWZ0ZXIgdGhlIGNyZWF0aW9uCisgICAgICAgIG9mIGEgV2ViUGFnZSwgdG8gYWxsb3cgdXNp
bmcgaXQgZnJvbSBXZWJLaXRXZWJWaWV3IHRvIGFsbG93IHRoZQorICAgICAgICBjbGllbnQgYXBw
bGljYXRpb24gdG8gZGVjaWRlIHdoZXRoZXIgdG8gYWxsb3cgY3JlYXRlIG1vZGFsCisgICAgICAg
IGRpYWxvZ3MsIHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBsYXVuY2hpbmcgYW4gYWRkaXRpb25hbCBu
ZXN0ZWQKKyAgICAgICAgZXZlbnQgbG9vcCBpbiB0aGUgd2ViIHByb2Nlc3MsIGFmdGVyIGNyZWF0
aW5nIHRoZSBkaWFsb2cuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOiBJbml0aWFsaXpl
IHRoZSBuZXcKKyAgICAgICAgbV9jYW5SdW5Nb2RhbCBhdHRyaWJ1dGUsIHRvIGNhY2hlIHRoZSBj
dXJyZW50IHN0YXR1cyBvZiB0aGUKKyAgICAgICAgV2ViUGFnZSBpbiB0aGUgV2ViUHJvY2Vzcy4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplVUlDbGllbnQpOiBDYWxs
IHRoZSBuZXcgZnVuY3Rpb24KKyAgICAgICAgc2V0Q2FuUnVuTW9kYWwsIGluc3RlYWQgb2YgbWFu
dWFsbHkgc2VuZGluZyB0aGUgU2V0Q2FuUnVuTW9kYWwgbWVzc2FnZS4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBVc2UgbV9jYW5SdW5Nb2RhbAor
ICAgICAgICBpbnN0ZWFkIG9mIG1fdWlDbGllbnQuY2FuUnVuTW9kYWwgd2hlbiBwcmVwYXJpbmcg
dGhlIHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0Q2FuUnVu
TW9kYWwpOiBOZXcgcHVibGljIGZ1bmN0aW9uLCBpdAorICAgICAgICBzZXRzIHRoZSB2YWx1ZSBv
ZiBtX2NhblJ1bk1vZGFsIGFuZCBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIFdlYgorICAgICAgICBw
cm9jZXNzIGZvciB1cGRhdGluZyB0aGUgV2ViUGFnZSwgd2hlbmV2ZXIgcG9zc2libGUuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FuUnVuTW9kYWwpOiBOZXcgcHVibGljIGZ1bmN0
aW9uLCByZXR1cm5zCisgICAgICAgIHRoZSB2YWx1ZSBvZiB0aGUgbV9jYW5SdW5Nb2RhbCBhdHRy
aWJ1dGUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2Vi
UGFnZVByb3h5KTogQWRkZWQgbmV3IHB1YmxpYyBmdW5jdGlvbnMgYW5kIHByaXZhdGUgYXR0cmli
dXRlLgorCisgICAgICAgIE5ldyBwcm9wZXJ0eSBpbiBXZWJLaXRTZXR0aW5ncyB0byBiZSBhYmxl
IHRvIGRlY2lkZSB3aGV0aGVyIGl0IGlzCisgICAgICAgIGFsbG93ZWQgdG8gY3JlYXRlIGFuZCBy
dW4gbmV3IGNoaWxkIHdlYnZpZXdzIGFzIG1vZGFsIGRpYWxvZ3MuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAgIChfV2ViS2l0U2V0dGlu
Z3NQcml2YXRlKTogTmV3IGF0dHJpYnV0ZSBhbGxvd01vZGFsRGlhbG9ncy4KKyAgICAgICAgKHdl
YktpdFNldHRpbmdzU2V0UHJvcGVydHkpOiBIYW5kbGUgdGhlIG5ldyBwcm9wZXJ0eS4KKyAgICAg
ICAgKHdlYktpdFNldHRpbmdzR2V0UHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19jbGFzc19pbml0KTogSW5zdGFsbCB0aGUgbmV3IHByb3BlcnR5LgorICAgICAgICAo
d2Via2l0U2V0dGluZ3NBdHRhY2hTZXR0aW5nc1RvUGFnZSk6IE1ha2Ugc3VyZSB0aGUgV2ViUGFn
ZSBpcworICAgICAgICBpbml0aWFsaXplZCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgbmV3IHByb3Bl
cnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9hbGxvd19tb2RhbF9kaWFsb2dzKTog
TmV3IHNldHRlci4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlh
bG9ncyk6IE5ldyBnZXR0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0
dGluZ3MuaDoKKworICAgICAgICBDb25uZWN0IHRvIHRoZSAnbm90aWZ5OjphbGxvdy1tb2RhbC1k
aWFsb2dzJyBzaWduYWwgZnJvbQorICAgICAgICBXZWJLaXRTZXR0aW5ncyB0byBlbnN1cmUgdGhh
dCBjYW5SdW5Nb2RhbCBwcm9wZXJ0eSBvZiB0aGUgV2ViUGFnZQorICAgICAgICBpcyBrZXB0IHVw
IHRvIGRhdGUuIEVuc3VyZSB0aGF0IHNpZ25hbCBoYW5kbGVycyBmb3IgbW9uaXRvcmluZworICAg
ICAgICBzZXR0aW5ncyBhcmUgZGlzY29ubmVjdGVkIHdoZW4gdGhlIHdlYnZpZXcgaXMgZmluYWxp
emVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3U2V0U2V0dGluZ3MpOiBDb25uZWN0IHRvIHRoZSBuZXcgc2ln
bmFsCisgICAgICAgICdub3RpZnk6OmFsbG93LW1vZGFsLWRpYWxvZ3MnLCBmcm9tIFdlYktpdFNl
dHRpbmdzLgorICAgICAgICAoYWxsb3dNb2RhbERpYWxvZ3NDaGFuZ2VkKTogQ2FsbGJhY2sgdG8g
dXBkYXRlIFdlYlBhZ2UncworICAgICAgICBjYW5SdW5Nb2RhbCBwcm9wZXJ0eSB3aGVuIHVwZGF0
ZWQgdGhyb3VnaCBXZWJLaXRTZXR0aW5ncy4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdEaXNjb25u
ZWN0U2V0dGluZ3NTaWduYWxIYW5kbGVycyk6IERpc2Nvbm5lY3Qgc2lnbmFsCisgICAgICAgIGhh
bmRsZXJzIGZvciBtb25pdG9yaW5nIFdlYktpdFNldHRpbmdzIHByb3BlcnRpZXMuCisgICAgICAg
ICh3ZWJraXRXZWJWaWV3RmluYWxpemUpOiBFbnN1cmUgc2lnbmFsIGhhbmRsZXJzIGFyZSBkaXNj
b25uZWN0ZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKTogRGl0dG8u
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorCisgICAgICAg
IEFkZCBuZXcgdW5pdCB0ZXN0cyB0byBjaGVjayB0aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFsIGlz
IGVtaXR0ZWQKKyAgICAgICAgb25seSB3aGVuIHRoZSBuZXcgcHJvcGVydHkgaW4gV2ViS2l0U2V0
dGluZ3MgaXMgc2V0IHRvIFRSVUUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld0FsbG93TW9kYWxE
aWFsb2dzKTogTmV3IHVuaXQgdGVzdCB0byBjaGVjayB0aGF0IG1vZGFsCisgICAgICAgIGRpYWxv
Z3MgYXJlIHByb3Blcmx5IGNyZWF0ZWQgZnJvbSBKYXZhU2NyaXB0IHdoZW4gYWxsb3dlZC4KKyAg
ICAgICAgKHRlc3RXZWJWaWV3RGlzYWxsb3dNb2RhbERpYWxvZ3MpOiBOZXcgdW5pdCB0ZXN0IHRv
IGNoZWNrIHRoYXQKKyAgICAgICAgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRlIG1vZGFsIGRp
YWxvZ3Mgd2hlbiBub3QgYWxsb3dlZC4KKyAgICAgICAgKGJlZm9yZUFsbCk6IEFkZCB0aGUgbmV3
IHVuaXQgdGVzdC4KKwogMjAxMi0wMi0yOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVXNlIHRleHQgb3IgcGFnZSB6b29tIGZhY3Rv
ciBpbiBXZWJLaXRXZWJWaWV3IGRlcGVuZGluZyBvbiB6b29tLXRleHQtb25seQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4
IGI0YjI2N2QuLmQyMDEyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUg
IldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRTZXR0aW5nc1ByaXZhdGUuaCIKKyNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNDYsNiArNDcsNyBAQCBzdHJ1Y3QgX1dl
YktpdFNldHRpbmdzUHJpdmF0ZSB7CiAgICAgQ1N0cmluZyBmYW50YXN5Rm9udEZhbWlseTsKICAg
ICBDU3RyaW5nIHBpY3RvZ3JhcGhGb250RmFtaWx5OwogICAgIENTdHJpbmcgZGVmYXVsdENoYXJz
ZXQ7CisgICAgYm9vbCBhbGxvd01vZGFsRGlhbG9nczsKICAgICBib29sIHpvb21UZXh0T25seTsK
IH07CiAKQEAgLTEwNSw2ICsxMDcsNyBAQCBlbnVtIHsKICAgICBQUk9QX1BSSU5UX0JBQ0tHUk9V
TkRTLAogICAgIFBST1BfRU5BQkxFX1dFQkFVRElPLAogICAgIFBST1BfRU5BQkxFX1dFQkdMLAor
ICAgIFBST1BfQUxMT1dfTU9EQUxfRElBTE9HUywKICAgICBQUk9QX1pPT01fVEVYVF9PTkxZCiB9
OwogCkBAIC0yMTIsNiArMjE1LDkgQEAgc3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NTZXRQcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHUKICAgICBjYXNl
IFBST1BfRU5BQkxFX1dFQkdMOgogICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV93
ZWJnbChzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfQUxMT1dfTU9EQUxfRElBTE9HUzoKKyAgICAgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNldHRpbmdzLCBnX3ZhbHVlX2dldF9ib29s
ZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9aT09NX1RFWFRfT05M
WToKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF96b29tX3RleHRfb25seShzZXR0aW5ncywg
Z192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwogICAgICAgICBicmVhazsKQEAgLTMyNSw2ICsz
MzEsOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbAogICAgIGNhc2UgUFJPUF9FTkFCTEVfV0VC
R0w6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX3dlYmdsKHNldHRpbmdzKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9BTExPV19NT0RBTF9ESUFMT0dTOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3Moc2V0dGluZ3MpKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1pPT01fVEVYVF9PTkxZOgogICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5
KHNldHRpbmdzKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtODI1LDYgKzgzNCwyNCBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRTZXR0aW5nc0NsYXNzKiBrbGFz
cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKIAogICAgIC8qKgorICAgICAqIFdl
YktpdFNldHRpbmdzOmFsbG93LW1vZGFsLWRpYWxvZ3M6CisgICAgICoKKyAgICAgKiBEZXRlcm1p
bmUgd2hldGhlciBpdCdzIGFsbG93ZWQgdG8gY3JlYXRlIGFuZCBydW4gbW9kYWwgZGlhbG9ncwor
ICAgICAqIGZyb20gYSAjV2ViS2l0V2ViVmlldyB0aHJvdWdoIEphdmFTY3JpcHQgd2l0aAorICAg
ICAqIDxmdW5jdGlvbj53aW5kb3cuc2hvd01vZGFsRGlhbG9nPC9mdW5jdGlvbj4uIElmIGl0J3Mg
c2V0IHRvCisgICAgICogJUZBTFNFLCB0aGUgYXNzb2NpYXRlZCAjV2ViS2l0V2ViVmlldyB3b24n
dCBiZSBhYmxlIHRvIGNyZWF0ZQorICAgICAqIG5ldyBtb2RhbCBkaWFsb2dzLCBzbyBub3QgZXZl
biB0aGUgI1dlYktpdFdlYlZpZXc6OmNyZWF0ZQorICAgICAqIHNpZ25hbCB3aWxsIGJlIGVtaXR0
ZWQuCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0
Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0FMTE9XX01P
REFMX0RJQUxPR1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigiYWxsb3ctbW9kYWwtZGlhbG9ncyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJBbGxvdyBtb2RhbCBkaWFs
b2dzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJXaGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBtb2RhbCBkaWFsb2dz
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKworICAgIC8qKgog
ICAgICAqIFdlYktpdFNldHRpbmdzOnpvb20tdGV4dC1vbmx5OgogICAgICAqCiAgICAgICogV2hl
dGhlciAjV2ViS2l0V2ViVmlldzp6b29tLWxldmVsIGFmZmVjdHMgb25seSB0aGUKQEAgLTg3OSw2
ICs5MDYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfaW5pdChXZWJLaXRTZXR0aW5n
cyogc2V0dGluZ3MpCiB2b2lkIHdlYmtpdFNldHRpbmdzQXR0YWNoU2V0dGluZ3NUb1BhZ2UoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzLCBXS1BhZ2VSZWYgd2tQYWdlKQogewogICAgIFdLUGFnZUdy
b3VwU2V0UHJlZmVyZW5jZXMoV0tQYWdlR2V0UGFnZUdyb3VwKHdrUGFnZSksIHNldHRpbmdzLT5w
cml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwod2tQYWdlKS0+c2V0
Q2FuUnVuTW9kYWwoc2V0dGluZ3MtPnByaXYtPmFsbG93TW9kYWxEaWFsb2dzKTsKIH0KIAogLyoq
CkBAIC0yMDk5LDYgKzIxMjcsMzkgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV93
ZWJnbChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJsZWQKIH0KIAogLyoq
CisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3M6CisgKiBAc2V0dGlu
Z3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAYWxsb3dlZDogVmFsdWUgdG8gYmUgc2V0CisgKgor
ICogU2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6YWxsb3ctbW9kYWwtZGlhbG9ncyBwcm9wZXJ0eS4K
KyAqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3MoV2ViS2l0
U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBhbGxvd2VkKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5n
c1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBpZiAocHJpdi0+YWxsb3dNb2Rh
bERpYWxvZ3MgPT0gYWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+YWxsb3dN
b2RhbERpYWxvZ3MgPSBhbGxvd2VkOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0
aW5ncyksICJhbGxvdy1tb2RhbC1kaWFsb2dzIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRp
bmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzOgorICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0
aW5ncworICoKKyAqIEdldCB0aGUgI1dlYktpdFNldHRpbmdzOmFsbG93LW1vZGFsLWRpYWxvZ3Mg
cHJvcGVydHkuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgaXQncyBhbGxvd2VkIHRvIGNyZWF0
ZSBhbmQgcnVuIG1vZGFsIGRpYWxvZ3Mgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqLworZ2Jvb2xl
YW4gd2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzKFdlYktpdFNldHRpbmdz
KiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElO
R1Moc2V0dGluZ3MpLCBGQUxTRSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5hbGxvd01v
ZGFsRGlhbG9nczsKK30KKworLyoqCiAgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X3pvb21fdGV4dF9v
bmx5OgogICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncwogICogQHpvb21fdGV4dF9vbmx5
OiBWYWx1ZSB0byBiZSBzZXQKQEAgLTIxMzIsNCArMjE5MywzIEBAIGdib29sZWFuIHdlYmtpdF9z
ZXR0aW5nc19nZXRfem9vbV90ZXh0X29ubHkoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogCiAg
ICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT56b29tVGV4dE9ubHk7CiB9Ci0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oCmluZGV4IDI1YTc4
YWMuLmFhYzdkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0U2V0dGluZ3MuaApAQCAtMzA4LDYgKzMwOCwxMyBAQCB3ZWJraXRfc2V0dGluZ3Nfc2V0
X2VuYWJsZV93ZWJnbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGlu
Z3MgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdib29sZWFuICAgICAgICBlbmFibGVkKTsKIAogV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3MgICAgICAgICAgICAgICAg
ICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAg
ICBhbGxvd2VkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9h
bGxvd19tb2RhbF9kaWFsb2dzICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdz
ICpzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAogd2Via2l0X3NldHRpbmdzX3NldF96b29t
X3RleHRfb25seSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpz
ZXR0aW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgem9vbV90ZXh0X29ubHkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAK
aW5kZXggNmYwZTExYy4uZTc3YjdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMTM2LDYgKzEzNiwxMSBAQCBzdGF0
aWMgdm9pZCBwcmludEZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25z
dCB2b2lkKikKICAgICB3ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShXRUJLSVRfV0VCX1ZJRVcodG9J
bXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpLCBmcmFtZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJ1bk1v
ZGFsKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHdlYmtp
dFdlYlZpZXdSdW5Bc01vZGFsKFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSk7Cit9CisKIHZv
aWQgYXR0YWNoVUlDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBX
S1BhZ2VVSUNsaWVudCB3a1VJQ2xpZW50ID0gewpAQCAtMTc2LDcgKzE4MSw3IEBAIHZvaWQgYXR0
YWNoVUlDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgMCwgLy8g
ZHJhd0hlYWRlcgogICAgICAgICAwLCAvLyBkcmF3Rm9vdGVyCiAgICAgICAgIHByaW50RnJhbWUs
Ci0gICAgICAgIDAsIC8vIHJ1bk1vZGFsCisgICAgICAgIHJ1bk1vZGFsLAogICAgICAgICAwLCAv
LyBkaWRDb21wbGV0ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUKICAgICAgICAgMCwgLy8gc2F2ZURh
dGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcgogICAgICAgICAwLCAvLyBzaG91bGRJbnRlcnJ1cHRK
YXZhU2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwCmluZGV4IDYyMjVlMzkuLjgwMTZhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC01Myw2ICs1Myw3
IEBAIGVudW0gewogCiAgICAgQ1JFQVRFLAogICAgIFJFQURZX1RPX1NIT1csCisgICAgUlVOX0FT
X01PREFMLAogICAgIENMT1NFLAogCiAgICAgU0NSSVBUX0FMRVJULApAQCAtOTcsNiArOTgsOCBA
QCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICBHUmVmUHRyPFdlYktpdFNldHRp
bmdzPiBzZXR0aW5nczsKICAgICBHUmVmUHRyPFdlYktpdFdpbmRvd1Byb3BlcnRpZXM+IHdpbmRv
d1Byb3BlcnRpZXM7CiAKKyAgICBHUmVmUHRyPEdNYWluTG9vcD4gbW9kYWxMb29wOworCiAgICAg
R1JlZlB0cjxXZWJLaXRIaXRUZXN0UmVzdWx0PiBtb3VzZVRhcmdldEhpdFRlc3RSZXN1bHQ7CiAg
ICAgdW5zaWduZWQgbW91c2VUYXJnZXRNb2RpZmllcnM7CiB9OwpAQCAtMTcwLDYgKzE3MywxNCBA
QCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0RlY2lkZVBvbGljeShXZWJLaXRXZWJWaWV3
KiwgV2ViS2l0UG9saWN5RGVjaXNpb24qCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKK3N0YXRpYyB2
b2lkIGFsbG93TW9kYWxEaWFsb2dzQ2hhbmdlZChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIEdQ
YXJhbVNwZWMqLCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJW
aWV3KSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+c2V0Q2Fu
UnVuTW9kYWwod2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNldHRpbmdz
KSk7Cit9CisKIHN0YXRpYyB2b2lkIHpvb21UZXh0T25seUNoYW5nZWQoV2ViS2l0U2V0dGluZ3Mq
IHNldHRpbmdzLCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBX
S1BhZ2VSZWYgd2tQYWdlID0gdG9BUEkod2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9X
RUJfVklFV19CQVNFKHdlYlZpZXcpKSk7CkBAIC0xODMsOSArMTk0LDE4IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdTZXRTZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRT
ZXR0aW5ncyogc2V0CiB7CiAgICAgd2ViVmlldy0+cHJpdi0+c2V0dGluZ3MgPSBzZXR0aW5nczsK
ICAgICB3ZWJraXRTZXR0aW5nc0F0dGFjaFNldHRpbmdzVG9QYWdlKHdlYlZpZXctPnByaXYtPnNl
dHRpbmdzLmdldCgpLCB3a1BhZ2UpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2V0dGluZ3MsICJu
b3RpZnk6OmFsbG93LW1vZGFsLWRpYWxvZ3MiLCBHX0NBTExCQUNLKGFsbG93TW9kYWxEaWFsb2dz
Q2hhbmdlZCksIHdlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2V0dGluZ3MsICJub3Rp
Znk6Onpvb20tdGV4dC1vbmx5IiwgR19DQUxMQkFDSyh6b29tVGV4dE9ubHlDaGFuZ2VkKSwgd2Vi
Vmlldyk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0U2V0dGluZ3NT
aWduYWxIYW5kbGVycyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIFdlYktpdFNldHRp
bmdzKiBzZXR0aW5ncyA9IHdlYlZpZXctPnByaXYtPnNldHRpbmdzLmdldCgpOworICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXR0aW5ncywgcmVpbnRlcnByZXRfY2Fz
dDxncG9pbnRlcj4oYWxsb3dNb2RhbERpYWxvZ3NDaGFuZ2VkKSwgd2ViVmlldyk7CisgICAgZ19z
aWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHNldHRpbmdzLCByZWludGVycHJldF9j
YXN0PGdwb2ludGVyPih6b29tVGV4dE9ubHlDaGFuZ2VkKSwgd2ViVmlldyk7CisKK30KKwogc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIHsKICAg
ICBpZiAoR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPmNvbnN0
cnVjdGVkKQpAQCAtMjUzLDcgKzI3MywxNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0
UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogCiBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewotICAg
IFdFQktJVF9XRUJfVklFVyhvYmplY3QpLT5wcml2LT5+V2ViS2l0V2ViVmlld1ByaXZhdGUoKTsK
KyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKG9iamVjdCk7CisK
KyAgICAvLyBGb3IgbW9kYWwgZGlhbG9ncywgbWFrZSBzdXJlIHRoZSBtYWluIGxvb3AgaXMgc3Rv
cHBlZCB3aGVuIGZpbmFsaXppbmcgdGhlIHdlYlZpZXcuCisgICAgaWYgKHdlYlZpZXctPnByaXYt
Pm1vZGFsTG9vcCAmJiBnX21haW5fbG9vcF9pc19ydW5uaW5nKHdlYlZpZXctPnByaXYtPm1vZGFs
TG9vcC5nZXQoKSkpCisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQod2ViVmlldy0+cHJpdi0+bW9k
YWxMb29wLmdldCgpKTsKKworICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0U2V0dGluZ3NTaWdu
YWxIYW5kbGVycyh3ZWJWaWV3KTsKKworICAgIHdlYlZpZXctPnByaXYtPn5XZWJLaXRXZWJWaWV3
UHJpdmF0ZSgpOwogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQogCkBAIC01MDAsNiArNTI4LDI3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmll
d0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOwogCiAgICAgLyoq
CisgICAgICogV2ViS2l0V2ViVmlldzo6cnVuLWFzLW1vZGFsOgorICAgICAqIEB3ZWJfdmlldzog
dGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAq
CisgICAgICogRW1pdHRlZCBhZnRlciAjV2ViS2l0V2ViVmlldzo6cmVhZHktdG8tc2hvdyBvbiB0
aGUgbmV3bHkKKyAgICAgKiBjcmVhdGVkICNXZWJLaXRXZWJWaWV3IHdoZW4gSmF2YVNjcmlwdCBj
b2RlIGNhbGxzCisgICAgICogPGZ1bmN0aW9uPndpbmRvdy5zaG93TW9kYWxEaWFsb2c8L2Z1bmN0
aW9uPi4gVGhlIHB1cnBvc2Ugb2YKKyAgICAgKiB0aGlzIHNpZ25hbCBpcyB0byBhbGxvdyB0aGUg
Y2xpZW50IGFwcGxpY2F0aW9uIHRvIHByZXBhcmUgdGhlCisgICAgICogbmV3IHZpZXcgdG8gYmVo
YXZlIGFzIG1vZGFsLiBPbmNlIHRoZSBzaWduYWwgaXMgZW1pdHRlZCBhIG5ldworICAgICAqIG1h
aW5sb29wIHdpbGwgYmUgcnVuIHRvIGJsb2NrIHVzZXIgaW50ZXJhY3Rpb24gaW4gdGhlIHBhcmVu
dAorICAgICAqICNXZWJLaXRXZWJWaWV3IHVudGlsIHRoZSBuZXcgZGlhbG9nIGlzIGNsb3NlZC4K
KyAgICAgKi8KKyAgICBzaWduYWxzW1JVTl9BU19NT0RBTF0gPQorICAgICAgICAgICAgZ19zaWdu
YWxfbmV3KCJydW4tYXMtbW9kYWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9G
Uk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgR19TSUdO
QUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdl
YktpdFdlYlZpZXdDbGFzcywgcnVuX2FzX21vZGFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lE
X19WT0lELAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKworICAg
IC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6OmNsb3NlOgogICAgICAqIEB3ZWJWaWV3OiB0aGUg
I1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCiAgICAgICoKQEAg
LTc5Niw2ICs4NDUsMTYgQEAgdm9pZCB3ZWJraXRXZWJWaWV3UmVhZHlUb1Nob3dQYWdlKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1JF
QURZX1RPX1NIT1ddLCAwLCBOVUxMKTsKIH0KIAordm9pZCB3ZWJraXRXZWJWaWV3UnVuQXNNb2Rh
bChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywg
c2lnbmFsc1tSVU5fQVNfTU9EQUxdLCAwLCBOVUxMKTsKKworICAgIHdlYlZpZXctPnByaXYtPm1v
ZGFsTG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcoMCwgRkFMU0UpKTsKKyAgICBHREtf
VEhSRUFEU19FTlRFUigpOworICAgIGdfbWFpbl9sb29wX3J1bih3ZWJWaWV3LT5wcml2LT5tb2Rh
bExvb3AuZ2V0KCkpOworICAgIEdES19USFJFQURTX0xFQVZFKCk7Cit9CisKIHZvaWQgd2Via2l0
V2ViVmlld0Nsb3NlUGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfc2lnbmFs
X2VtaXQod2ViVmlldywgc2lnbmFsc1tDTE9TRV0sIDAsIE5VTEwpOwpAQCAtMTMxOSw3ICsxMzc4
LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdFNldHRpbmdzKiBzZXR0aW4KICAgICBpZiAod2ViVmlldy0+cHJpdi0+c2V0
dGluZ3MgPT0gc2V0dGluZ3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdfc2lnbmFsX2hhbmRs
ZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3ZWJWaWV3LT5wcml2LT5zZXR0aW5ncy5nZXQoKSwgcmVp
bnRlcnByZXRfY2FzdDxncG9pbnRlcj4oem9vbVRleHRPbmx5Q2hhbmdlZCksIHdlYlZpZXcpOwor
ICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0U2V0dGluZ3NTaWduYWxIYW5kbGVycyh3ZWJWaWV3
KTsKICAgICB3ZWJraXRXZWJWaWV3U2V0U2V0dGluZ3Mod2ViVmlldywgc2V0dGluZ3MsIHRvQVBJ
KHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSkp
KTsKIH0KIApAQCAtMTQwNyw3ICsxNDY2LDYgQEAgZ2RvdWJsZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3pvb21fbGV2ZWwoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICByZXR1cm4gem9vbVRleHRP
bmx5ID8gV0tQYWdlR2V0VGV4dFpvb21GYWN0b3Iod2tQYWdlKSA6IFdLUGFnZUdldFBhZ2Vab29t
RmFjdG9yKHdrUGFnZSk7CiB9CiAKLQogc3RhdGljIHZvaWQgZGlkVmFsaWRhdGVDb21tYW5kKFdL
U3RyaW5nUmVmIGNvbW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBXS0Vycm9y
UmVmLCB2b2lkKiBjb250ZXh0KQogewogICAgIEdSZWZQdHI8R1NpbXBsZUFzeW5jUmVzdWx0PiBy
ZXN1bHQgPSBhZG9wdEdSZWYoR19TSU1QTEVfQVNZTkNfUkVTVUxUKGNvbnRleHQpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCBh
MWIyMTQyLi5mOWI2OTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oCkBAIC0xMjYsNiArMTI2LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJW
aWV3Q2xhc3MgewogCiAgICAgR3RrV2lkZ2V0ICooKiBjcmVhdGUpICAgICAgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKICAgICB2b2lkICAgICAgICgqIHJl
YWR5X3RvX3Nob3cpICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OworICAgIHZvaWQgICAgICAgKCogcnVuX2FzX21vZGFsKSAgICAgICAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAgICAgdm9pZCAgICAgICAoKiBjbG9zZSkgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAogICAgIGdi
b29sZWFuICAgKCogc2NyaXB0X2FsZXJ0KSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGFkOGFiMjAuLmE4NDYzM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d1ByaXZhdGUuaApAQCAtMzgsNiArMzgsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdTZXRUaXRsZShX
ZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0cmluZyYpOwogdm9pZCB3ZWJraXRXZWJWaWV3VXBkYXRl
VVJJKFdlYktpdFdlYlZpZXcqKTsKIFdLUGFnZVJlZiB3ZWJraXRXZWJWaWV3Q3JlYXRlTmV3UGFn
ZShXZWJLaXRXZWJWaWV3KiwgV0tEaWN0aW9uYXJ5UmVmIHdrV2luZG93RmVhdHVyZXMpOwogdm9p
ZCB3ZWJraXRXZWJWaWV3UmVhZHlUb1Nob3dQYWdlKFdlYktpdFdlYlZpZXcqKTsKK3ZvaWQgd2Vi
a2l0V2ViVmlld1J1bkFzTW9kYWwoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3
Q2xvc2VQYWdlKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld1J1bkphdmFTY3Jp
cHRBbGVydChXZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZSk7CiBib29sIHdl
YmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q29uZmlybShXZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0
cmluZyYgbWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNldHRpbmdzLmNwcAppbmRleCAwM2M1ZjJmLi5j
ODYzMDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTE5OSw2ICsxOTksMTEgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYktpdFNldHRpbmdzKFRlc3QqLCBnY29uc3Rwb2ludGVyKQogICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3dlYmdsKHNldHRpbmdzLCBUUlVFKTsKICAgICBn
X2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV93ZWJnbChzZXR0aW5ncykpOwogCisg
ICAgLy8gQWxsb3cgTW9kYWwgRGlhbG9ncyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgIGdf
YXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3Moc2V0dGluZ3Mp
KTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3Moc2V0dGluZ3Ms
IFRSVUUpOworICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlh
bG9ncyhzZXR0aW5ncykpOworCiAgICAgLy8gWm9vbSB0ZXh0IG9ubHkgaXMgZGlzYWJsZWQgYnkg
ZGVmYXVsdC4KICAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF96b29tX3RleHRfb25s
eShzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfem9vbV90ZXh0X29ubHkoc2V0
dGluZ3MsIFRSVUUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDI2OTkwOGIuLjk3NGQ2
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rl
c3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6
CiAgICAgZW51bSBXZWJWaWV3RXZlbnRzIHsKICAgICAgICAgQ3JlYXRlLAogICAgICAgICBSZWFk
eVRvU2hvdywKKyAgICAgICAgUnVuQXNNb2RhbCwKICAgICAgICAgQ2xvc2UKICAgICB9OwogCkBA
IC0xODIsNiArMTgzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgdGVzdC0+bV93aW5kb3dQcm9wZXJ0
aWVzQ2hhbmdlZC5hZGQoZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBhcmFtU3BlYykpOwogICAgIH0K
IAorICAgIHN0YXRpYyB2b2lkIGRpYWxvZ1J1bkFzTW9kYWwoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgVUlDbGllbnRUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQod2ViVmlldyAh
PSB0ZXN0LT5tX3dlYlZpZXcpOworICAgICAgICB0ZXN0LT5tX3dlYlZpZXdFdmVudHMuYXBwZW5k
KFJ1bkFzTW9kYWwpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIHZpZXdDbG9zZShXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBVSUNsaWVudFRlc3QqIHRlc3QpCiAgICAgewogICAgICAgICBnX2Fz
c2VydCh3ZWJWaWV3ICE9IHRlc3QtPm1fd2ViVmlldyk7CkBAIC0xOTYsMTAgKzIwMywxMSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ICE9IHRlc3QtPm1fd2ViVmll
dyk7CiAKLSAgICAgICAgV2ViS2l0V2luZG93UHJvcGVydGllcyogd2luZG93UHJvcGVydGllcyA9
IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X3Byb3BlcnRpZXMod2ViVmlldyk7Ci0gICAgICAg
IGdfYXNzZXJ0KHdpbmRvd1Byb3BlcnRpZXMpOwotICAgICAgICBXaW5kb3dQcm9wZXJ0aWVzKHdp
bmRvd1Byb3BlcnRpZXMpLmFzc2VydEVxdWFsKHRlc3QtPm1fd2luZG93UHJvcGVydGllcyk7Ci0K
KyAgICAgICAgaWYgKCF0ZXN0LT5tX2lzTW9kYWxEaWFsb2dUZXN0KSB7CisgICAgICAgICAgICBX
ZWJLaXRXaW5kb3dQcm9wZXJ0aWVzKiB3aW5kb3dQcm9wZXJ0aWVzID0gd2Via2l0X3dlYl92aWV3
X2dldF93aW5kb3dfcHJvcGVydGllcyh3ZWJWaWV3KTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KHdp
bmRvd1Byb3BlcnRpZXMpOworICAgICAgICAgICAgV2luZG93UHJvcGVydGllcyh3aW5kb3dQcm9w
ZXJ0aWVzKS5hc3NlcnRFcXVhbCh0ZXN0LT5tX3dpbmRvd1Byb3BlcnRpZXMpOworICAgICAgICB9
CiAgICAgICAgIHRlc3QtPm1fd2ViVmlld0V2ZW50cy5hcHBlbmQoUmVhZHlUb1Nob3cpOwogICAg
IH0KIApAQCAtMjE5LDYgKzIyNyw4IEBAIHB1YmxpYzoKICAgICAgICAgZ19zaWduYWxfY29ubmVj
dCh3aW5kb3dQcm9wZXJ0aWVzLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3aW5kb3dQcm9wZXJ0aWVz
Tm90aWZ5Q2FsbGJhY2spLCB0ZXN0KTsKIAogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dl
YlZpZXcsICJyZWFkeS10by1zaG93IiwgR19DQUxMQkFDSyh2aWV3UmVhZHlUb1Nob3cpLCB0ZXN0
KTsKKyAgICAgICAgaWYgKHRlc3QtPm1faXNNb2RhbERpYWxvZ1Rlc3QpCisgICAgICAgICAgICBn
X3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJydW4tYXMtbW9kYWwiLCBHX0NBTExCQUNLKGRp
YWxvZ1J1bkFzTW9kYWwpLCB0ZXN0KTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJW
aWV3LCAiY2xvc2UiLCBHX0NBTExCQUNLKHZpZXdDbG9zZSksIHRlc3QpOwogCiAgICAgICAgIHJl
dHVybiBuZXdXZWJWaWV3OwpAQCAtMjc4LDYgKzI4OCw3IEBAIHB1YmxpYzoKICAgICBVSUNsaWVu
dFRlc3QoKQogICAgICAgICA6IG1fc2NyaXB0VHlwZShBbGVydCkKICAgICAgICAgLCBtX3Njcmlw
dERpYWxvZ0NvbmZpcm1lZCh0cnVlKQorICAgICAgICAsIG1faXNNb2RhbERpYWxvZ1Rlc3QoZmFs
c2UpCiAgICAgICAgICwgbV9tb3VzZVRhcmdldE1vZGlmaWVycygwKQogICAgIHsKICAgICAgICAg
d2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGlj
YWxseSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKG1fd2ViVmlldyksIFRSVUUpOwpAQCAt
MzEzLDYgKzMyNCw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8V2ViVmlld0V2ZW50cz4gbV93ZWJW
aWV3RXZlbnRzOwogICAgIFNjcmlwdFR5cGUgbV9zY3JpcHRUeXBlOwogICAgIGJvb2wgbV9zY3Jp
cHREaWFsb2dDb25maXJtZWQ7CisgICAgYm9vbCBtX2lzTW9kYWxEaWFsb2dUZXN0OwogICAgIFdp
bmRvd1Byb3BlcnRpZXMgbV93aW5kb3dQcm9wZXJ0aWVzOwogICAgIEhhc2hTZXQ8V1RGOjpTdHJp
bmc+IG1fd2luZG93UHJvcGVydGllc0NoYW5nZWQ7CiAgICAgR1JlZlB0cjxXZWJLaXRIaXRUZXN0
UmVzdWx0PiBtX21vdXNlVGFyZ2V0SGl0VGVzdFJlc3VsdDsKQEAgLTMzMSw2ICszNDMsMzggQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDcmVhdGVSZWFkeUNsb3NlKFVJQ2xpZW50VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzJdLCA9PSwgVUlD
bGllbnRUZXN0OjpDbG9zZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QWxsb3dNb2Rh
bERpYWxvZ3MoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktp
dFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+
bV93ZWJWaWV3KTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3Mo
c2V0dGluZ3MsIFRSVUUpOworCisgICAgdGVzdC0+bV9pc01vZGFsRGlhbG9nVGVzdCA9IHRydWU7
CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5IG9ubG9hZD1cIndpbmRvdy5zaG93TW9k
YWxEaWFsb2coJ2RhdGE6dGV4dC9odG1sLDxodG1sPjxib2R5Lz48c2NyaXB0PndpbmRvdy5jbG9z
ZSgpOzwvc2NyaXB0PjwvaHRtbD4nKVwiPjwvYm9keT48L2h0bWw+IiwgMCk7CisgICAgdGVzdC0+
d2FpdFVudGlsTWFpbkxvb3BGaW5pc2hlcygpOworCisgICAgVmVjdG9yPFVJQ2xpZW50VGVzdDo6
V2ViVmlld0V2ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fd2ViVmlld0V2ZW50czsKKyAgICBnX2Fz
c2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDQpOworICAgIGdfYXNzZXJ0X2NtcGludChl
dmVudHNbMF0sID09LCBVSUNsaWVudFRlc3Q6OkNyZWF0ZSk7CisgICAgZ19hc3NlcnRfY21waW50
KGV2ZW50c1sxXSwgPT0sIFVJQ2xpZW50VGVzdDo6UmVhZHlUb1Nob3cpOworICAgIGdfYXNzZXJ0
X2NtcGludChldmVudHNbMl0sID09LCBVSUNsaWVudFRlc3Q6OlJ1bkFzTW9kYWwpOworICAgIGdf
YXNzZXJ0X2NtcGludChldmVudHNbM10sID09LCBVSUNsaWVudFRlc3Q6OkNsb3NlKTsKK30KKwor
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdEaXNhbGxvd01vZGFsRGlhbG9ncyhVSUNsaWVudFRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0g
d2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyhzZXR0aW5ncywgRkFMU0UpOworCisg
ICAgdGVzdC0+bV9pc01vZGFsRGlhbG9nVGVzdCA9IHRydWU7CisgICAgdGVzdC0+bG9hZEh0bWwo
IjxodG1sPjxib2R5IG9ubG9hZD1cIndpbmRvdy5zaG93TW9kYWxEaWFsb2coJ2RhdGE6dGV4dC9o
dG1sLDxodG1sPjxib2R5Lz48c2NyaXB0PndpbmRvdy5jbG9zZSgpOzwvc2NyaXB0PjwvaHRtbD4n
KVwiPjwvYm9keT48L2h0bWw+IiwgMCk7CisgICAgLy8gV2UgbmVlZCB0byB1c2UgYSB0aW1lb3V0
IGhlcmUgYmVjYXVzZSB0aGUgdmlld0Nsb3NlKCkgZnVuY3Rpb24KKyAgICAvLyB3b24ndCBldmVy
IGJlIGNhbGxlZCBhcyB0aGUgZGlhbG9nIHdvbid0IGJlIGNyZWF0ZWQuCisgICAgdGVzdC0+d2Fp
dCgxKTsKKworICAgIFZlY3RvcjxVSUNsaWVudFRlc3Q6OldlYlZpZXdFdmVudHM+JiBldmVudHMg
PSB0ZXN0LT5tX3dlYlZpZXdFdmVudHM7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXpl
KCksID09LCAwKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9n
cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGh0bWxPbkxvYWRGb3JtYXQgPSAiPGh0bWw+PGJvZHkgb25Mb2FkPVwiJXNcIj48L2Jv
ZHk+PC9odG1sPiI7CkBAIC00NTgsNiArNTAyLDggQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdl
YlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic2V0dGluZ3MiLCB0ZXN0V2ViVmlld1Nl
dHRpbmdzKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInJlcGxhY2Ut
Y29udGVudCIsIHRlc3RXZWJWaWV3UmVwbGFjZUNvbnRlbnQpOwogICAgIFVJQ2xpZW50VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgImNyZWF0ZS1yZWFkeS1jbG9zZSIsIHRlc3RXZWJWaWV3Q3Jl
YXRlUmVhZHlDbG9zZSk7CisgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
YWxsb3ctbW9kYWwtZGlhbG9ncyIsIHRlc3RXZWJWaWV3QWxsb3dNb2RhbERpYWxvZ3MpOworICAg
IFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImRpc2FsbG93LW1vZGFsLWRpYWxv
Z3MiLCB0ZXN0V2ViVmlld0Rpc2FsbG93TW9kYWxEaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJqYXZhc2NyaXB0LWRpYWxvZ3MiLCB0ZXN0V2ViVmlld0ph
dmFTY3JpcHREaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJ3aW5kb3ctcHJvcGVydGllcyIsIHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyk7CiAgICAg
VUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibW91c2UtdGFyZ2V0IiwgdGVzdFdl
YlZpZXdNb3VzZVRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDhlYTNmZTQuLjk3Yjg0ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMTcxLDYgKzE3MSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQsIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5
PiBwCiAgICAgLCBtX2dhcEJldHdlZW5QYWdlcygwKQogICAgICwgbV9pc1ZhbGlkKHRydWUpCiAg
ICAgLCBtX2lzQ2xvc2VkKGZhbHNlKQorICAgICwgbV9jYW5SdW5Nb2RhbChmYWxzZSkKICAgICAs
IG1faXNJblByaW50aW5nTW9kZShmYWxzZSkKICAgICAsIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRP
cGVyYXRpb24oZmFsc2UpCiAgICAgLCBtX2luRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoZmFsc2Up
CkBAIC0yODQsNyArMjg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVVSUNsaWVu
dChjb25zdCBXS1BhZ2VVSUNsaWVudCogY2xpZW50KQogICAgIG1fdWlDbGllbnQuaW5pdGlhbGl6
ZShjbGllbnQpOwogCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRD
YW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwobV91aUNsaWVudC5jYW5SdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwoKSksIG1fcGFnZUlEKTsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldENhblJ1bk1vZGFsKG1fdWlDbGllbnQuY2FuUnVuTW9kYWwoKSksIG1f
cGFnZUlEKTsKKyAgICBzZXRDYW5SdW5Nb2RhbChtX3VpQ2xpZW50LmNhblJ1bk1vZGFsKCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUZpbmRDbGllbnQoY29uc3QgV0tQYWdl
RmluZENsaWVudCogY2xpZW50KQpAQCAtMzMxMSw3ICszMzEyLDcgQEAgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycygpIGNvbnN0CiAgICAg
cGFyYW1ldGVycy5zZXNzaW9uU3RhdGUgPSBTZXNzaW9uU3RhdGUobV9iYWNrRm9yd2FyZExpc3Qt
PmVudHJpZXMoKSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJbmRleCgpKTsKICAgICBwYXJh
bWV0ZXJzLmhpZ2hlc3RVc2VkQmFja0ZvcndhcmRJdGVtSUQgPSBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtOjpoaWdoZWRVc2VkSXRlbUlEKCk7CiAgICAgcGFyYW1ldGVycy5jYW5SdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwgPSBtX3VpQ2xpZW50LmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCgpOwotICAgIHBhcmFtZXRlcnMuY2FuUnVuTW9kYWwgPSBtX3VpQ2xpZW50LmNhblJ1bk1vZGFs
KCk7CisgICAgcGFyYW1ldGVycy5jYW5SdW5Nb2RhbCA9IG1fY2FuUnVuTW9kYWw7CiAgICAgcGFy
YW1ldGVycy5kZXZpY2VTY2FsZUZhY3RvciA9IG1faW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3I7
CiAgICAgcGFyYW1ldGVycy5tZWRpYVZvbHVtZSA9IG1fbWVkaWFWb2x1bWU7CiAKQEAgLTM0ODks
NiArMzQ5MCwyMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRSZW1vdmVkSXRlbSh1
aW50NjRfdCBpdGVtSUQpCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0Q2FuUnVuTW9kYWwoYm9vbCBjYW5SdW5Nb2RhbCkKK3sKKyAgICBpZiAo
IWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSXQncyBvbmx5IHBvc3NpYmxl
IHRvIGNoYW5nZSB0aGUgc3RhdGUgZm9yIGEgV2ViUGFnZSB3aGljaAorICAgIC8vIGFscmVhZHkg
cXVhbGlmaWVzIGZvciBydW5uaW5nIG1vZGFsIGNoaWxkIHdlYiBwYWdlcywgb3RoZXJ3aXNlCisg
ICAgLy8gdGhlcmUncyBubyBvdGhlciBwb3NzaWJpbGl0eSB0aGFuIG5vdCBhbGxvd2luZyBpdC4K
KyAgICBtX2NhblJ1bk1vZGFsID0gbV91aUNsaWVudC5jYW5SdW5Nb2RhbCgpICYmIGNhblJ1bk1v
ZGFsOworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuTW9k
YWwobV9jYW5SdW5Nb2RhbCksIG1fcGFnZUlEKTsKK30KKworYm9vbCBXZWJQYWdlUHJveHk6OmNh
blJ1bk1vZGFsKCkKK3sKKyAgICByZXR1cm4gaXNWYWxpZCgpID8gbV9jYW5SdW5Nb2RhbCA6IGZh
bHNlOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5QcmludGluZyhXZWJGcmFtZVByb3h5
KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8pCiB7CiAgICAgaWYgKG1faXNJblBy
aW50aW5nTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBh
ZjhkYTFiLi5iZjVlOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC01ODMsNiArNTgzLDkgQEAgcHVibGljOgogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5UGx1
Z0lEKCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NpYmlsaXR5UGx1Z0lEOyB9CiAjZW5kaWYKIAor
ICAgIHZvaWQgc2V0Q2FuUnVuTW9kYWwoYm9vbCk7CisgICAgYm9vbCBjYW5SdW5Nb2RhbCgpOwor
CiAgICAgdm9pZCBiZWdpblByaW50aW5nKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8m
KTsKICAgICB2b2lkIGVuZFByaW50aW5nKCk7CiAgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmlu
dGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgUGFzc1JlZlB0cjxDb21wdXRl
ZFBhZ2VzQ2FsbGJhY2s+KTsKQEAgLTk2MSw2ICs5NjQsOSBAQCBwcml2YXRlOgogICAgIC8vIFdo
ZXRoZXIgV2ViUGFnZVByb3h5OjpjbG9zZSgpIGhhcyBiZWVuIGNhbGxlZCBvbiB0aGlzIHBhZ2Uu
CiAgICAgYm9vbCBtX2lzQ2xvc2VkOwogCisgICAgLy8gV2hldGhlciBpdCBjYW4gcnVuIG1vZGFs
IGNoaWxkIHdlYiBwYWdlcy4KKyAgICBib29sIG1fY2FuUnVuTW9kYWw7CisKICAgICBib29sIG1f
aXNJblByaW50aW5nTW9kZTsKICAgICBib29sIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRp
b247CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA0YTc0ZmYzLi43MjllYzBkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDMtMDIgIE1hcmlvIFNhbmNoZXog
UHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0
IGZvciB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGluIFdlYktpdDJHVEsrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBtb2RhbCBk
aWFsb2dzIGluIEdUSydzIE1pbmlCcm93c2VyLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAgKHdlYlZpZXdSdW5Bc01vZGFsKToKKyAgICAgICAg
KHdlYlZpZXdDcmVhdGUpOgorICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6CisgICAgICAg
IChicm93c2VyX3dpbmRvd19uZXcpOgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
V2luZG93Lmg6CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAgKGNy
ZWF0ZUJyb3dzZXJXaW5kb3cpOgorCiAyMDEyLTAyLTI4ICBNYWhlc2ggS3Vsa2FybmkgIDxtYWhl
c2gua3Vsa2FybmlAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gQWxsb3cgcmVhZC93cml0ZSB0
byB0aGUgV2ViVmlldy51cmwgcHJvcGVydHkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRv
dy5jCmluZGV4IDc0NTE4NDQuLjM3ODQ5ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuYwpAQCAtMjAzLDYgKzIwMywxMSBAQCBzdGF0aWMgdm9pZCB3ZWJWaWV3Q2xvc2UoV2Vi
S2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIGd0a193aWRn
ZXRfZGVzdHJveShHVEtfV0lER0VUKHdpbmRvdykpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJWaWV3
UnVuQXNNb2RhbChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBCcm93c2VyV2luZG93ICp3aW5kb3cp
Cit7CisgICAgZ3RrX3dpbmRvd19zZXRfbW9kYWwoR1RLX1dJTkRPVyh3aW5kb3cpLCBUUlVFKTsK
K30KKwogc3RhdGljIHZvaWQgd2ViVmlld1JlYWR5VG9TaG93KFdlYktpdFdlYlZpZXcgKndlYlZp
ZXcsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBXZWJLaXRXaW5kb3dQcm9wZXJ0aWVz
ICp3aW5kb3dQcm9wZXJ0aWVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfcHJvcGVydGll
cyh3ZWJWaWV3KTsKQEAgLTIzMCw4ICsyMzUsOSBAQCBzdGF0aWMgR3RrV2lkZ2V0ICp3ZWJWaWV3
Q3JlYXRlKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAg
ICBXZWJLaXRXZWJWaWV3ICpuZXdXZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF9jb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3
KSkpOwogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MobmV3V2ViVmlldywgd2Via2l0
X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7CiAKLSAgICBHdGtXaWRnZXQgKm5ld1dp
bmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3KTsKKyAgICBHdGtXaWRnZXQgKm5l
d1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3LCBHVEtfV0lORE9XKHdpbmRv
dykpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgInJlYWR5LXRvLXNob3ciLCBH
X0NBTExCQUNLKHdlYlZpZXdSZWFkeVRvU2hvdyksIG5ld1dpbmRvdyk7CisgICAgZ19zaWduYWxf
Y29ubmVjdChuZXdXZWJWaWV3LCAicnVuLWFzLW1vZGFsIiwgR19DQUxMQkFDSyh3ZWJWaWV3UnVu
QXNNb2RhbCksIG5ld1dpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAi
Y2xvc2UiLCBHX0NBTExCQUNLKHdlYlZpZXdDbG9zZSksIG5ld1dpbmRvdyk7CiAgICAgcmV0dXJu
IEdUS19XSURHRVQobmV3V2ViVmlldyk7CiB9CkBAIC0yNTQsNyArMjYwLDcgQEAgc3RhdGljIGdi
b29sZWFuIHdlYlZpZXdEZWNpZGVQb2xpY3koV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0
UG9saWN5RGVjaXNpb24KIAogICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZpZXcgPSBXRUJLSVRf
V0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQod2Via2l0X3dlYl92aWV3
X2dldF9jb250ZXh0KHdlYlZpZXcpKSk7CiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5n
cyhuZXdXZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsKLSAg
ICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3KTsK
KyAgICBHdGtXaWRnZXQgKm5ld1dpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhuZXdXZWJWaWV3
LCBHVEtfV0lORE9XKHdpbmRvdykpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3JlcXVlc3Qo
bmV3V2ViVmlldywgd2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9yZXF1ZXN0
KG5hdmlnYXRpb25EZWNpc2lvbikpOwogICAgIGd0a193aWRnZXRfc2hvdyhuZXdXaW5kb3cpOwog
CkBAIC00NjUsMTEgKzQ3MSwxMiBAQCBzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19jbGFzc19p
bml0KEJyb3dzZXJXaW5kb3dDbGFzcyAqa2xhc3MpCiB9CiAKIC8vIFB1YmxpYyBBUEkuCi1HdGtX
aWRnZXQgKmJyb3dzZXJfd2luZG93X25ldyhXZWJLaXRXZWJWaWV3ICp2aWV3KQorR3RrV2lkZ2V0
ICpicm93c2VyX3dpbmRvd19uZXcoV2ViS2l0V2ViVmlldyAqdmlldywgR3RrV2luZG93ICpwYXJl
bnQpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHZpZXcp
LCAwKTsKIAogICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2JqZWN0X25ldyhCUk9XU0VSX1RZUEVf
V0lORE9XLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNpZW50LWZv
ciIsIHBhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiLCBH
VEtfV0lORE9XX1RPUExFVkVMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
dmlldyIsIHZpZXcsIE5VTEwpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmggYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5o
CmluZGV4IDQ2YTA2YzIuLjk0OTVhOGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuaApAQCAtNDMsNyArNDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBfQnJvd3NlcldpbmRvd0NsYXNz
ICAgQnJvd3NlcldpbmRvd0NsYXNzOwogCiBHVHlwZSBicm93c2VyX3dpbmRvd19nZXRfdHlwZSh2
b2lkKTsKIAotR3RrV2lkZ2V0KiBicm93c2VyX3dpbmRvd19uZXcoV2ViS2l0V2ViVmlldyopOwor
R3RrV2lkZ2V0KiBicm93c2VyX3dpbmRvd19uZXcoV2ViS2l0V2ViVmlldyosIEd0a1dpbmRvdyop
OwogV2ViS2l0V2ViVmlldyogYnJvd3Nlcl93aW5kb3dfZ2V0X3ZpZXcoQnJvd3NlcldpbmRvdyop
OwogCiBHX0VORF9ERUNMUwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4u
YyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggOTY3NDhhNi4uNjM5MzYxMiAx
MDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvbWFpbi5jCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBnY2hhciAqYXJndW1l
bnRUb1VSTChjb25zdCBjaGFyICpmaWxlbmFtZSkKIHN0YXRpYyB2b2lkIGNyZWF0ZUJyb3dzZXJX
aW5kb3coY29uc3QgZ2NoYXIgKnVyaSwgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzKQog
ewogICAgIEd0a1dpZGdldCAqd2ViVmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXcoKTsKLSAgICBH
dGtXaWRnZXQgKm1haW5XaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoV0VCS0lUX1dFQl9WSUVX
KHdlYlZpZXcpKTsKKyAgICBHdGtXaWRnZXQgKm1haW5XaW5kb3cgPSBicm93c2VyX3dpbmRvd19u
ZXcoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKICAgICBnY2hhciAqdXJsID0gYXJn
dW1lbnRUb1VSTCh1cmkpOwogCiAgICAgaWYgKHdlYmtpdFNldHRpbmdzKSB7Ci0tIAoxLjcuNy41
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134057</attachid>
            <date>2012-03-27 07:31:10 -0700</date>
            <delta_ts>2012-05-24 04:45:09 -0700</delta_ts>
            <desc>Patch proposal + Unit tests</desc>
            <filename>0001-2012-03-27-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>39274</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA1MGFmNDc0NWY5ZjZkZmMyZjE1MmVmNzdiNWMwZjdhN2RiNDk0ZGQ0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUdWUsIDI3IE1hciAyMDEyIDE2OjI4OjI3ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMi0wMy0yNyAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGlu
IFdlYktpdDJHVEsrCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc5NTAwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBJ
bXBsZW1lbnQgcnVuTW9kYWwgaW4gV2ViS2l0VUlDbGllbnQgdG8gbWFrZSB0aGUgV2ViS2l0V2Vi
VmlldwogICAgICAgIGVtaXQgYSAncnVuLWFzLW1vZGFsJyBzaWduYWwgd2hlbiByZXF1ZXN0ZWQs
IGNyZWF0aW5nIGEgbmV3CiAgICAgICAgbWFpbmxvb3AgdGhlcmUgdG8gYmxvY2sgdXNlciBpbnRl
cmFjdGlvbiB3aXRoIHRoZSBvcmlnaW5hbCB3aW5kb3cKICAgICAgICB3aGlsZSB0aGUgbW9kYWwg
ZGlhbG9nIGlzIHNob3dpbmcuCgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlD
bGllbnQuY3BwOgogICAgICAgIChydW5Nb2RhbCk6IENhbGwgdG8gdGhlIG5ldyB3ZWJraXRXZWJW
aWV3UnVuQXNNb2RhbFBhZ2UgZnVuY3Rpb24uCiAgICAgICAgKGF0dGFjaFVJQ2xpZW50VG9WaWV3
KTogQWRkIHJ1bk1vZGFsLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHA6CiAgICAgICAgKF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSk6IEFkZCBhbiBhdHJpYnV0ZSBm
b3IgYSBuZXcgbWFpbiBsb29wLgogICAgICAgICh3ZWJraXRXZWJWaWV3RmluYWxpemUpOiBNYWtl
IHN1cmUgdGhlIG1haW4gbG9vcCBmb3IgbWFpbiBkaWFsb2dzLAogICAgICAgIGlmIGFueSwgaXMg
c3RvcHBlZCBpZiBpdCB3YXMgc3RpbGwgcnVubmluZy4KICAgICAgICAod2Via2l0X3dlYl92aWV3
X2NsYXNzX2luaXQpOiBEZWNsYXJlIG5ldyBzaWduYWwgJ3J1bi1hcy1tb2RhbCcuCiAgICAgICAg
KHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsKTogRW1pdCB0aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFs
IGFuZCwgaWYKICAgICAgICBoYW5kbGVkLCBjcmVhdGUgYW5kIHJ1biBhIG5ldyBtYWluIGxvb3Au
CiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CiAgICAgICAgKF9X
ZWJLaXRXZWJWaWV3Q2xhc3MpOiBOZXcgaGFuZGxlciBmb3IgdGhlICdydW4tYXMtbW9kYWwnIHNp
Z25hbC4KICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6
IEFkZCB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbFBhZ2UuCgogICAgICAgIEFsbG93IHNldHRpbmcg
YW5kIGdldHRpbmcgdGhlIHZhbHVlIG9mIFdlYlBhZ2UncyBjYW5SdW5Nb2RhbAogICAgICAgIGF0
dHJpYnV0ZSBpbiB0aGUgV2ViUHJvY2VzcyBmcm9tIHRoZSBVSVByb2Nlc3MgYWZ0ZXIgdGhlIGNy
ZWF0aW9uCiAgICAgICAgb2YgYSBXZWJQYWdlLCB0byBhbGxvdyB1c2luZyBpdCBmcm9tIFdlYktp
dFdlYlZpZXcgdG8gYWxsb3cgdGhlCiAgICAgICAgY2xpZW50IGFwcGxpY2F0aW9uIHRvIGRlY2lk
ZSB3aGV0aGVyIHRvIGFsbG93IGNyZWF0ZSBtb2RhbAogICAgICAgIGRpYWxvZ3MsIHdoaWNoIHdv
dWxkIHJlc3VsdCBpbiBsYXVuY2hpbmcgYW4gYWRkaXRpb25hbCBuZXN0ZWQKICAgICAgICBldmVu
dCBsb29wIGluIHRoZSB3ZWIgcHJvY2VzcywgYWZ0ZXIgY3JlYXRpbmcgdGhlIGRpYWxvZy4KCiAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eSk6IEluaXRpYWxpemUgdGhlIG5ldwogICAgICAgIG1fY2Fu
UnVuTW9kYWwgYXR0cmlidXRlLCB0byBjYWNoZSB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlCiAg
ICAgICAgV2ViUGFnZSBpbiB0aGUgV2ViUHJvY2Vzcy4KICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmluaXRpYWxpemVVSUNsaWVudCk6IENhbGwgdGhlIG5ldyBmdW5jdGlvbgogICAgICAg
IHNldENhblJ1bk1vZGFsLCBpbnN0ZWFkIG9mIG1hbnVhbGx5IHNlbmRpbmcgdGhlIFNldENhblJ1
bk1vZGFsIG1lc3NhZ2UuCiAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBh
cmFtZXRlcnMpOiBVc2UgbV9jYW5SdW5Nb2RhbAogICAgICAgIGluc3RlYWQgb2YgbV91aUNsaWVu
dC5jYW5SdW5Nb2RhbCB3aGVuIHByZXBhcmluZyB0aGUgcGFyYW1ldGVycy4KICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKTogTmV3IHB1YmxpYyBmdW5jdGlvbiwg
aXQKICAgICAgICBzZXRzIHRoZSB2YWx1ZSBvZiBtX2NhblJ1bk1vZGFsIGFuZCBzZW5kcyBhIG1l
c3NhZ2UgdG8gdGhlIFdlYgogICAgICAgIHByb2Nlc3MgZm9yIHVwZGF0aW5nIHRoZSBXZWJQYWdl
LCB3aGVuZXZlciBwb3NzaWJsZS4KICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhblJ1
bk1vZGFsKTogTmV3IHB1YmxpYyBmdW5jdGlvbiwgcmV0dXJucwogICAgICAgIHRoZSB2YWx1ZSBv
ZiB0aGUgbV9jYW5SdW5Nb2RhbCBhdHRyaWJ1dGUuCiAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CiAgICAgICAgKFdlYlBhZ2VQcm94eSk6IEFkZGVkIG5ldyBwdWJsaWMgZnVuY3Rp
b25zIGFuZCBwcml2YXRlIGF0dHJpYnV0ZS4KCiAgICAgICAgTmV3IHByb3BlcnR5IGluIFdlYktp
dFNldHRpbmdzIHRvIGJlIGFibGUgdG8gZGVjaWRlIHdoZXRoZXIgaXQgaXMKICAgICAgICBhbGxv
d2VkIHRvIGNyZWF0ZSBhbmQgcnVuIG5ldyBjaGlsZCB3ZWJ2aWV3cyBhcyBtb2RhbCBkaWFsb2dz
LgoKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDoKICAgICAg
ICAoX1dlYktpdFNldHRpbmdzUHJpdmF0ZSk6IE5ldyBhdHRyaWJ1dGUgYWxsb3dNb2RhbERpYWxv
Z3MuCiAgICAgICAgKHdlYktpdFNldHRpbmdzU2V0UHJvcGVydHkpOiBIYW5kbGUgdGhlIG5ldyBw
cm9wZXJ0eS4KICAgICAgICAod2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eSk6IERpdHRvLgogICAg
ICAgICh3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6IEluc3RhbGwgdGhlIG5ldyBwcm9wZXJ0
eS4KICAgICAgICAod2Via2l0U2V0dGluZ3NBdHRhY2hTZXR0aW5nc1RvUGFnZSk6IE1ha2Ugc3Vy
ZSB0aGUgV2ViUGFnZSBpcwogICAgICAgIGluaXRpYWxpemVkIHdpdGggdGhlIHZhbHVlIG9mIHRo
ZSBuZXcgcHJvcGVydHkuCiAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfYWxsb3dfbW9kYWxf
ZGlhbG9ncyk6IE5ldyBzZXR0ZXIuCiAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3df
bW9kYWxfZGlhbG9ncyk6IE5ldyBnZXR0ZXIuCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZXR0aW5ncy5oOgoKICAgICAgICBDb25uZWN0IHRvIHRoZSAnbm90aWZ5OjphbGxvdy1t
b2RhbC1kaWFsb2dzJyBzaWduYWwgZnJvbQogICAgICAgIFdlYktpdFNldHRpbmdzIHRvIGVuc3Vy
ZSB0aGF0IGNhblJ1bk1vZGFsIHByb3BlcnR5IG9mIHRoZSBXZWJQYWdlCiAgICAgICAgaXMga2Vw
dCB1cCB0byBkYXRlLiBFbnN1cmUgdGhhdCBzaWduYWwgaGFuZGxlcnMgZm9yIG1vbml0b3JpbmcK
ICAgICAgICBzZXR0aW5ncyBhcmUgZGlzY29ubmVjdGVkIHdoZW4gdGhlIHdlYnZpZXcgaXMgZmlu
YWxpemVkLgoKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgog
ICAgICAgICh3ZWJraXRXZWJWaWV3U2V0U2V0dGluZ3MpOiBDb25uZWN0IHRvIHRoZSBuZXcgc2ln
bmFsCiAgICAgICAgJ25vdGlmeTo6YWxsb3ctbW9kYWwtZGlhbG9ncycsIGZyb20gV2ViS2l0U2V0
dGluZ3MuCiAgICAgICAgKGFsbG93TW9kYWxEaWFsb2dzQ2hhbmdlZCk6IENhbGxiYWNrIHRvIHVw
ZGF0ZSBXZWJQYWdlJ3MKICAgICAgICBjYW5SdW5Nb2RhbCBwcm9wZXJ0eSB3aGVuIHVwZGF0ZWQg
dGhyb3VnaCBXZWJLaXRTZXR0aW5ncy4KICAgICAgICAod2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RT
ZXR0aW5nc1NpZ25hbEhhbmRsZXJzKTogRGlzY29ubmVjdCBzaWduYWwKICAgICAgICBoYW5kbGVy
cyBmb3IgbW9uaXRvcmluZyBXZWJLaXRTZXR0aW5ncyBwcm9wZXJ0aWVzLgogICAgICAgICh3ZWJr
aXRXZWJWaWV3RmluYWxpemUpOiBFbnN1cmUgc2lnbmFsIGhhbmRsZXJzIGFyZSBkaXNjb25uZWN0
ZWQuCiAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MpOiBEaXR0by4KICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKCiAgICAgICAgQWRkIG5ldyB1
bml0IHRlc3RzIHRvIGNoZWNrIHRoZSAncnVuLWFzLW1vZGFsJyBzaWduYWwgaXMgZW1pdHRlZAog
ICAgICAgIG9ubHkgd2hlbiB0aGUgbmV3IHByb3BlcnR5IGluIFdlYktpdFNldHRpbmdzIGlzIHNl
dCB0byBUUlVFLgoKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcDoKICAgICAgICAodGVzdFdlYlZpZXdBbGxvd01vZGFsRGlhbG9ncyk6IE5ldyB1
bml0IHRlc3QgdG8gY2hlY2sgdGhhdCBtb2RhbAogICAgICAgIGRpYWxvZ3MgYXJlIHByb3Blcmx5
IGNyZWF0ZWQgZnJvbSBKYXZhU2NyaXB0IHdoZW4gYWxsb3dlZC4KICAgICAgICAodGVzdFdlYlZp
ZXdEaXNhbGxvd01vZGFsRGlhbG9ncyk6IE5ldyB1bml0IHRlc3QgdG8gY2hlY2sgdGhhdAogICAg
ICAgIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBtb2RhbCBkaWFsb2dzIHdoZW4gbm90IGFs
bG93ZWQuCiAgICAgICAgKGJlZm9yZUFsbCk6IEFkZCB0aGUgbmV3IHVuaXQgdGVzdC4KCjIwMTIt
MDMtMjcgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoKICAgICAg
ICBbR1RLXSBBZGQgc3VwcG9ydCBmb3Igd2luZG93LnNob3dNb2RhbERpYWxvZyBpbiBXZWJLaXQy
R1RLKwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUw
MAoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIG1vZGFsIGRpYWxvZ3MgaW4gR1RLJ3MgTWluaUJyb3dzZXIuCgogICAgICAgICogTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKICAgICAgICAod2ViVmlld1J1bkFzTW9kYWwp
OgogICAgICAgICh3ZWJWaWV3Q3JlYXRlKToKICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6
CiAgICAgICAgKGJyb3dzZXJfd2luZG93X25ldyk6CiAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsv
QnJvd3NlcldpbmRvdy5oOgogICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKICAgICAg
ICAoY3JlYXRlQnJvd3NlcldpbmRvdyk6Ci0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDg5ICsrKysrKysrKysrKysrKysrKysrCiAuLi4v
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgICB8ICAgNjEgKysr
KysrKysrKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGlu
Z3MuaCAgfCAgICA3ICsrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNs
aWVudC5jcHAgICB8ICAgIDcgKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcCB8ICAgNjEgKysrKysrKysrKysrKy0KIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCAgIHwgICAgMSArCiAuLi4vVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCAgICAgICB8ICAgIDEgKwogLi4uL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAgfCAgICA1ICsKIC4uLi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgIHwgICA1NCArKysr
KysrKysrKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwICAgICAg
ICAgIHwgICAyMiArKysrKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCAgICAgICAgICAgIHwgICAgNiArKwogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDE4ICsrKysKIFRvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyV2luZG93LmMgICAgICAgICAgICAgIHwgICAxMyArKy0KIFRvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmggICAgICAgICAgICAgIHwgICAgMiArLQogVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL21haW4uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiAxNSBmaWxlcyBj
aGFuZ2VkLCAzMzYgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDUwMzNmOTEuLmY5OTkwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MiBAQAorMjAxMi0wMy0y
NyAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS10gQWRkIHN1cHBvcnQgZm9yIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cgaW4gV2ViS2l0MkdU
SysKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NTAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50IHJ1bk1vZGFsIGluIFdlYktpdFVJQ2xpZW50IHRvIG1ha2UgdGhlIFdlYktpdFdlYlZpZXcK
KyAgICAgICAgZW1pdCBhICdydW4tYXMtbW9kYWwnIHNpZ25hbCB3aGVuIHJlcXVlc3RlZCwgY3Jl
YXRpbmcgYSBuZXcKKyAgICAgICAgbWFpbmxvb3AgdGhlcmUgdG8gYmxvY2sgdXNlciBpbnRlcmFj
dGlvbiB3aXRoIHRoZSBvcmlnaW5hbCB3aW5kb3cKKyAgICAgICAgd2hpbGUgdGhlIG1vZGFsIGRp
YWxvZyBpcyBzaG93aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlD
bGllbnQuY3BwOgorICAgICAgICAocnVuTW9kYWwpOiBDYWxsIHRvIHRoZSBuZXcgd2Via2l0V2Vi
Vmlld1J1bkFzTW9kYWxQYWdlIGZ1bmN0aW9uLgorICAgICAgICAoYXR0YWNoVUlDbGllbnRUb1Zp
ZXcpOiBBZGQgcnVuTW9kYWwuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1ByaXZhdGUpOiBBZGQgYW4gYXRyaWJ1
dGUgZm9yIGEgbmV3IG1haW4gbG9vcC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdGaW5hbGl6ZSk6
IE1ha2Ugc3VyZSB0aGUgbWFpbiBsb29wIGZvciBtYWluIGRpYWxvZ3MsCisgICAgICAgIGlmIGFu
eSwgaXMgc3RvcHBlZCBpZiBpdCB3YXMgc3RpbGwgcnVubmluZy4KKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19jbGFzc19pbml0KTogRGVjbGFyZSBuZXcgc2lnbmFsICdydW4tYXMtbW9kYWwnLgor
ICAgICAgICAod2Via2l0V2ViVmlld1J1bkFzTW9kYWwpOiBFbWl0IHRoZSAncnVuLWFzLW1vZGFs
JyBzaWduYWwgYW5kLCBpZgorICAgICAgICBoYW5kbGVkLCBjcmVhdGUgYW5kIHJ1biBhIG5ldyBt
YWluIGxvb3AuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgor
ICAgICAgICAoX1dlYktpdFdlYlZpZXdDbGFzcyk6IE5ldyBoYW5kbGVyIGZvciB0aGUgJ3J1bi1h
cy1tb2RhbCcgc2lnbmFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdQcml2YXRlLmg6IEFkZCB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbFBhZ2UuCisKKyAgICAgICAg
QWxsb3cgc2V0dGluZyBhbmQgZ2V0dGluZyB0aGUgdmFsdWUgb2YgV2ViUGFnZSdzIGNhblJ1bk1v
ZGFsCisgICAgICAgIGF0dHJpYnV0ZSBpbiB0aGUgV2ViUHJvY2VzcyBmcm9tIHRoZSBVSVByb2Nl
c3MgYWZ0ZXIgdGhlIGNyZWF0aW9uCisgICAgICAgIG9mIGEgV2ViUGFnZSwgdG8gYWxsb3cgdXNp
bmcgaXQgZnJvbSBXZWJLaXRXZWJWaWV3IHRvIGFsbG93IHRoZQorICAgICAgICBjbGllbnQgYXBw
bGljYXRpb24gdG8gZGVjaWRlIHdoZXRoZXIgdG8gYWxsb3cgY3JlYXRlIG1vZGFsCisgICAgICAg
IGRpYWxvZ3MsIHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBsYXVuY2hpbmcgYW4gYWRkaXRpb25hbCBu
ZXN0ZWQKKyAgICAgICAgZXZlbnQgbG9vcCBpbiB0aGUgd2ViIHByb2Nlc3MsIGFmdGVyIGNyZWF0
aW5nIHRoZSBkaWFsb2cuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOiBJbml0aWFsaXpl
IHRoZSBuZXcKKyAgICAgICAgbV9jYW5SdW5Nb2RhbCBhdHRyaWJ1dGUsIHRvIGNhY2hlIHRoZSBj
dXJyZW50IHN0YXR1cyBvZiB0aGUKKyAgICAgICAgV2ViUGFnZSBpbiB0aGUgV2ViUHJvY2Vzcy4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplVUlDbGllbnQpOiBDYWxs
IHRoZSBuZXcgZnVuY3Rpb24KKyAgICAgICAgc2V0Q2FuUnVuTW9kYWwsIGluc3RlYWQgb2YgbWFu
dWFsbHkgc2VuZGluZyB0aGUgU2V0Q2FuUnVuTW9kYWwgbWVzc2FnZS4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBVc2UgbV9jYW5SdW5Nb2RhbAor
ICAgICAgICBpbnN0ZWFkIG9mIG1fdWlDbGllbnQuY2FuUnVuTW9kYWwgd2hlbiBwcmVwYXJpbmcg
dGhlIHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0Q2FuUnVu
TW9kYWwpOiBOZXcgcHVibGljIGZ1bmN0aW9uLCBpdAorICAgICAgICBzZXRzIHRoZSB2YWx1ZSBv
ZiBtX2NhblJ1bk1vZGFsIGFuZCBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIFdlYgorICAgICAgICBw
cm9jZXNzIGZvciB1cGRhdGluZyB0aGUgV2ViUGFnZSwgd2hlbmV2ZXIgcG9zc2libGUuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FuUnVuTW9kYWwpOiBOZXcgcHVibGljIGZ1bmN0
aW9uLCByZXR1cm5zCisgICAgICAgIHRoZSB2YWx1ZSBvZiB0aGUgbV9jYW5SdW5Nb2RhbCBhdHRy
aWJ1dGUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2Vi
UGFnZVByb3h5KTogQWRkZWQgbmV3IHB1YmxpYyBmdW5jdGlvbnMgYW5kIHByaXZhdGUgYXR0cmli
dXRlLgorCisgICAgICAgIE5ldyBwcm9wZXJ0eSBpbiBXZWJLaXRTZXR0aW5ncyB0byBiZSBhYmxl
IHRvIGRlY2lkZSB3aGV0aGVyIGl0IGlzCisgICAgICAgIGFsbG93ZWQgdG8gY3JlYXRlIGFuZCBy
dW4gbmV3IGNoaWxkIHdlYnZpZXdzIGFzIG1vZGFsIGRpYWxvZ3MuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAgIChfV2ViS2l0U2V0dGlu
Z3NQcml2YXRlKTogTmV3IGF0dHJpYnV0ZSBhbGxvd01vZGFsRGlhbG9ncy4KKyAgICAgICAgKHdl
YktpdFNldHRpbmdzU2V0UHJvcGVydHkpOiBIYW5kbGUgdGhlIG5ldyBwcm9wZXJ0eS4KKyAgICAg
ICAgKHdlYktpdFNldHRpbmdzR2V0UHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9z
ZXR0aW5nc19jbGFzc19pbml0KTogSW5zdGFsbCB0aGUgbmV3IHByb3BlcnR5LgorICAgICAgICAo
d2Via2l0U2V0dGluZ3NBdHRhY2hTZXR0aW5nc1RvUGFnZSk6IE1ha2Ugc3VyZSB0aGUgV2ViUGFn
ZSBpcworICAgICAgICBpbml0aWFsaXplZCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgbmV3IHByb3Bl
cnR5LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9hbGxvd19tb2RhbF9kaWFsb2dzKTog
TmV3IHNldHRlci4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlh
bG9ncyk6IE5ldyBnZXR0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0
dGluZ3MuaDoKKworICAgICAgICBDb25uZWN0IHRvIHRoZSAnbm90aWZ5OjphbGxvdy1tb2RhbC1k
aWFsb2dzJyBzaWduYWwgZnJvbQorICAgICAgICBXZWJLaXRTZXR0aW5ncyB0byBlbnN1cmUgdGhh
dCBjYW5SdW5Nb2RhbCBwcm9wZXJ0eSBvZiB0aGUgV2ViUGFnZQorICAgICAgICBpcyBrZXB0IHVw
IHRvIGRhdGUuIEVuc3VyZSB0aGF0IHNpZ25hbCBoYW5kbGVycyBmb3IgbW9uaXRvcmluZworICAg
ICAgICBzZXR0aW5ncyBhcmUgZGlzY29ubmVjdGVkIHdoZW4gdGhlIHdlYnZpZXcgaXMgZmluYWxp
emVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3U2V0U2V0dGluZ3MpOiBDb25uZWN0IHRvIHRoZSBuZXcgc2ln
bmFsCisgICAgICAgICdub3RpZnk6OmFsbG93LW1vZGFsLWRpYWxvZ3MnLCBmcm9tIFdlYktpdFNl
dHRpbmdzLgorICAgICAgICAoYWxsb3dNb2RhbERpYWxvZ3NDaGFuZ2VkKTogQ2FsbGJhY2sgdG8g
dXBkYXRlIFdlYlBhZ2UncworICAgICAgICBjYW5SdW5Nb2RhbCBwcm9wZXJ0eSB3aGVuIHVwZGF0
ZWQgdGhyb3VnaCBXZWJLaXRTZXR0aW5ncy4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdEaXNjb25u
ZWN0U2V0dGluZ3NTaWduYWxIYW5kbGVycyk6IERpc2Nvbm5lY3Qgc2lnbmFsCisgICAgICAgIGhh
bmRsZXJzIGZvciBtb25pdG9yaW5nIFdlYktpdFNldHRpbmdzIHByb3BlcnRpZXMuCisgICAgICAg
ICh3ZWJraXRXZWJWaWV3RmluYWxpemUpOiBFbnN1cmUgc2lnbmFsIGhhbmRsZXJzIGFyZSBkaXNj
b25uZWN0ZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKTogRGl0dG8u
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorCisgICAgICAg
IEFkZCBuZXcgdW5pdCB0ZXN0cyB0byBjaGVjayB0aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFsIGlz
IGVtaXR0ZWQKKyAgICAgICAgb25seSB3aGVuIHRoZSBuZXcgcHJvcGVydHkgaW4gV2ViS2l0U2V0
dGluZ3MgaXMgc2V0IHRvIFRSVUUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld0FsbG93TW9kYWxE
aWFsb2dzKTogTmV3IHVuaXQgdGVzdCB0byBjaGVjayB0aGF0IG1vZGFsCisgICAgICAgIGRpYWxv
Z3MgYXJlIHByb3Blcmx5IGNyZWF0ZWQgZnJvbSBKYXZhU2NyaXB0IHdoZW4gYWxsb3dlZC4KKyAg
ICAgICAgKHRlc3RXZWJWaWV3RGlzYWxsb3dNb2RhbERpYWxvZ3MpOiBOZXcgdW5pdCB0ZXN0IHRv
IGNoZWNrIHRoYXQKKyAgICAgICAgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRlIG1vZGFsIGRp
YWxvZ3Mgd2hlbiBub3QgYWxsb3dlZC4KKyAgICAgICAgKGJlZm9yZUFsbCk6IEFkZCB0aGUgbmV3
IHVuaXQgdGVzdC4KKwogMjAxMi0wMy0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIHJlc291cmNlcyBBUEkgdG8gV2ViS2l0
MiBHVEsrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRT
ZXR0aW5ncy5jcHAKaW5kZXggOGJlYzcyMi4uNjgyYjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFNldHRp
bmdzUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPGdsaWIv
Z2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00Niw2ICs0
Nyw3IEBAIHN0cnVjdCBfV2ViS2l0U2V0dGluZ3NQcml2YXRlIHsKICAgICBDU3RyaW5nIGZhbnRh
c3lGb250RmFtaWx5OwogICAgIENTdHJpbmcgcGljdG9ncmFwaEZvbnRGYW1pbHk7CiAgICAgQ1N0
cmluZyBkZWZhdWx0Q2hhcnNldDsKKyAgICBib29sIGFsbG93TW9kYWxEaWFsb2dzOwogICAgIGJv
b2wgem9vbVRleHRPbmx5OwogfTsKIApAQCAtMTA1LDYgKzEwNyw3IEBAIGVudW0gewogICAgIFBS
T1BfUFJJTlRfQkFDS0dST1VORFMsCiAgICAgUFJPUF9FTkFCTEVfV0VCQVVESU8sCiAgICAgUFJP
UF9FTkFCTEVfV0VCR0wsCisgICAgUFJPUF9BTExPV19NT0RBTF9ESUFMT0dTLAogICAgIFBST1Bf
Wk9PTV9URVhUX09OTFksCiAgICAgUFJPUF9KQVZBU0NSSVBUX0NBTl9BQ0NFU1NfQ0xJUEJPQVJE
CiB9OwpAQCAtMjEzLDYgKzIxNiw5IEBAIHN0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdzU2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1CiAgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9XRUJHTDoKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVf
d2ViZ2woc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX0FMTE9XX01PREFMX0RJQUxPR1M6CisgICAgICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyhzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9v
bGVhbih2YWx1ZSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfWk9PTV9URVhUX09O
TFk6CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfem9vbV90ZXh0X29ubHkoc2V0dGluZ3Ms
IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMjksNiAr
MzM1LDkgQEAgc3RhdGljIHZvaWQgd2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWwKICAgICBjYXNlIFBST1BfRU5BQkxFX1dF
QkdMOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV93ZWJnbChzZXR0aW5ncykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfQUxMT1dfTU9EQUxfRElBTE9HUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgd2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNldHRpbmdzKSk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9aT09NX1RFWFRfT05MWToKICAgICAgICAgZ192
YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3NldHRpbmdzX2dldF96b29tX3RleHRfb25s
eShzZXR0aW5ncykpOwogICAgICAgICBicmVhazsKQEAgLTgzMiw2ICs4NDEsMjQgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0U2V0dGluZ3NDbGFzcyoga2xh
c3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CiAKICAgICAvKioKKyAgICAgKiBX
ZWJLaXRTZXR0aW5nczphbGxvdy1tb2RhbC1kaWFsb2dzOgorICAgICAqCisgICAgICogRGV0ZXJt
aW5lIHdoZXRoZXIgaXQncyBhbGxvd2VkIHRvIGNyZWF0ZSBhbmQgcnVuIG1vZGFsIGRpYWxvZ3MK
KyAgICAgKiBmcm9tIGEgI1dlYktpdFdlYlZpZXcgdGhyb3VnaCBKYXZhU2NyaXB0IHdpdGgKKyAg
ICAgKiA8ZnVuY3Rpb24+d2luZG93LnNob3dNb2RhbERpYWxvZzwvZnVuY3Rpb24+LiBJZiBpdCdz
IHNldCB0bworICAgICAqICVGQUxTRSwgdGhlIGFzc29jaWF0ZWQgI1dlYktpdFdlYlZpZXcgd29u
J3QgYmUgYWJsZSB0byBjcmVhdGUKKyAgICAgKiBuZXcgbW9kYWwgZGlhbG9ncywgc28gbm90IGV2
ZW4gdGhlICNXZWJLaXRXZWJWaWV3OjpjcmVhdGUKKyAgICAgKiBzaWduYWwgd2lsbCBiZSBlbWl0
dGVkLgorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVj
dENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9BTExPV19N
T0RBTF9ESUFMT0dTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJh
bV9zcGVjX2Jvb2xlYW4oImFsbG93LW1vZGFsLWRpYWxvZ3MiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiQWxsb3cgbW9kYWwgZGlh
bG9ncyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXygiV2hldGhlciBpdCBpcyBwb3NzaWJsZSB0byBjcmVhdGUgbW9kYWwgZGlhbG9n
cyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAvKioK
ICAgICAgKiBXZWJLaXRTZXR0aW5nczp6b29tLXRleHQtb25seToKICAgICAgKgogICAgICAqIFdo
ZXRoZXIgI1dlYktpdFdlYlZpZXc6em9vbS1sZXZlbCBhZmZlY3RzIG9ubHkgdGhlCkBAIC05MDEs
NiArOTI4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3NldHRpbmdzX2luaXQoV2ViS2l0U2V0dGlu
Z3MqIHNldHRpbmdzKQogdm9pZCB3ZWJraXRTZXR0aW5nc0F0dGFjaFNldHRpbmdzVG9QYWdlKFdl
YktpdFNldHRpbmdzKiBzZXR0aW5ncywgV0tQYWdlUmVmIHdrUGFnZSkKIHsKICAgICBXS1BhZ2VH
cm91cFNldFByZWZlcmVuY2VzKFdLUGFnZUdldFBhZ2VHcm91cCh3a1BhZ2UpLCBzZXR0aW5ncy0+
cHJpdi0+cHJlZmVyZW5jZXMuZ2V0KCkpOworICAgIFdlYktpdDo6dG9JbXBsKHdrUGFnZSktPnNl
dENhblJ1bk1vZGFsKHNldHRpbmdzLT5wcml2LT5hbGxvd01vZGFsRGlhbG9ncyk7CiB9CiAKIC8q
KgpAQCAtMjEyMSw2ICsyMTQ5LDM5IEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVf
d2ViZ2woV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBlbmFibGVkCiB9CiAKIC8q
KgorICogd2Via2l0X3NldHRpbmdzX3NldF9hbGxvd19tb2RhbF9kaWFsb2dzOgorICogQHNldHRp
bmdzOiBhICNXZWJLaXRTZXR0aW5ncworICogQGFsbG93ZWQ6IFZhbHVlIHRvIGJlIHNldAorICoK
KyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmFsbG93LW1vZGFsLWRpYWxvZ3MgcHJvcGVydHku
CisgKi8KK3ZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9hbGxvd19tb2RhbF9kaWFsb2dzKFdlYktp
dFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gYWxsb3dlZCkKK3sKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncykpOworCisgICAgV2ViS2l0U2V0dGlu
Z3NQcml2YXRlKiBwcml2ID0gc2V0dGluZ3MtPnByaXY7CisgICAgaWYgKHByaXYtPmFsbG93TW9k
YWxEaWFsb2dzID09IGFsbG93ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHByaXYtPmFsbG93
TW9kYWxEaWFsb2dzID0gYWxsb3dlZDsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0
dGluZ3MpLCAiYWxsb3ctbW9kYWwtZGlhbG9ncyIpOworfQorCisvKioKKyAqIHdlYmtpdF9zZXR0
aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlhbG9nczoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0
dGluZ3MKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRTZXR0aW5nczphbGxvdy1tb2RhbC1kaWFsb2dz
IHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIGl0J3MgYWxsb3dlZCB0byBjcmVh
dGUgYW5kIHJ1biBtb2RhbCBkaWFsb2dzIG9yICVGQUxTRSBvdGhlcndpc2UuCisgKi8KK2dib29s
ZWFuIHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyhXZWJLaXRTZXR0aW5n
cyogc2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJ
TkdTKHNldHRpbmdzKSwgRkFMU0UpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+YWxsb3dN
b2RhbERpYWxvZ3M7Cit9CisKKy8qKgogICogd2Via2l0X3NldHRpbmdzX3NldF96b29tX3RleHRf
b25seToKICAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKICAqIEB6b29tX3RleHRfb25s
eTogVmFsdWUgdG8gYmUgc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0U2V0dGluZ3MuaAppbmRleCA1N2JmM2YxLi5hNGIyOWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmgKQEAgLTMwOCw2
ICszMDgsMTMgQEAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfd2ViZ2wgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAg
ICAgZW5hYmxlZCk7CiAKIFdFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9hbGxv
d19tb2RhbF9kaWFsb2dzICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpz
ZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgYWxsb3dlZCk7CisKK1dFQktJVF9BUEkg
Z2Jvb2xlYW4KK3dlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyAgICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOworCitXRUJLSVRfQVBJ
IHZvaWQKIHdlYmtpdF9zZXR0aW5nc19zZXRfem9vbV90ZXh0X29ubHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4g
ICAgICAgIHpvb21fdGV4dF9vbmx5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDZmMGUxMWMuLmU3N2I3ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVu
dC5jcHAKQEAgLTEzNiw2ICsxMzYsMTEgQEAgc3RhdGljIHZvaWQgcHJpbnRGcmFtZShXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCopCiAgICAgd2Via2l0V2ViVmll
d1ByaW50RnJhbWUoV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKSwg
ZnJhbWUpOwogfQogCitzdGF0aWMgdm9pZCBydW5Nb2RhbChXS1BhZ2VSZWYgcGFnZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbChXRUJLSVRf
V0VCX1ZJRVcoY2xpZW50SW5mbykpOworfQorCiB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgV0tQYWdlVUlDbGllbnQgd2tVSUNsaWVudCA9
IHsKQEAgLTE3Niw3ICsxODEsNyBAQCB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDAsIC8vIGRyYXdIZWFkZXIKICAgICAgICAgMCwgLy8g
ZHJhd0Zvb3RlcgogICAgICAgICBwcmludEZyYW1lLAotICAgICAgICAwLCAvLyBydW5Nb2RhbAor
ICAgICAgICBydW5Nb2RhbCwKICAgICAgICAgMCwgLy8gZGlkQ29tcGxldGVSdWJiZXJCYW5kRm9y
TWFpbkZyYW1lCiAgICAgICAgIDAsIC8vIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIK
ICAgICAgICAgMCwgLy8gc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBiMzVkNzI5
Li40MTU2NjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcApAQCAtNTgsNiArNTgsNyBAQCBlbnVtIHsKIAogICAgIENSRUFURSwK
ICAgICBSRUFEWV9UT19TSE9XLAorICAgIFJVTl9BU19NT0RBTCwKICAgICBDTE9TRSwKIAogICAg
IFNDUklQVF9ESUFMT0csCkBAIC0xMDUsNiArMTA2LDggQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3
UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRTZXR0aW5ncz4gc2V0dGluZ3M7CiAgICAgR1Jl
ZlB0cjxXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzPiB3aW5kb3dQcm9wZXJ0aWVzOwogCisgICAgR1Jl
ZlB0cjxHTWFpbkxvb3A+IG1vZGFsTG9vcDsKKwogICAgIEdSZWZQdHI8V2ViS2l0SGl0VGVzdFJl
c3VsdD4gbW91c2VUYXJnZXRIaXRUZXN0UmVzdWx0OwogICAgIHVuc2lnbmVkIG1vdXNlVGFyZ2V0
TW9kaWZpZXJzOwogCkBAIC0xODYsNiArMTg5LDE0IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRX
ZWJWaWV3RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRQb2xpY3lEZWNpc2lvbioK
ICAgICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIHZvaWQgYWxsb3dNb2RhbERpYWxvZ3NDaGFu
Z2VkKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgR1BhcmFtU3BlYyosIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCit7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VH
ZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsKKyAgICBpZiAoIXBhZ2UpCisg
ICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5zZXRDYW5SdW5Nb2RhbCh3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2FsbG93X21vZGFsX2RpYWxvZ3Moc2V0dGluZ3MpKTsKK30KKwogc3RhdGljIHZvaWQgem9v
bVRleHRPbmx5Q2hhbmdlZChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIEdQYXJhbVNwZWMqLCBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIFdLUGFnZVJlZiB3a1BhZ2UgPSB0b0FQSSh3
ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykpKTsK
QEAgLTE5OSw5ICsyMTAsMTggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFNldHRpbmdz
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFNldHRpbmdzKiBzZXQKIHsKICAgICB3ZWJW
aWV3LT5wcml2LT5zZXR0aW5ncyA9IHNldHRpbmdzOwogICAgIHdlYmtpdFNldHRpbmdzQXR0YWNo
U2V0dGluZ3NUb1BhZ2Uod2ViVmlldy0+cHJpdi0+c2V0dGluZ3MuZ2V0KCksIHdrUGFnZSk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdChzZXR0aW5ncywgIm5vdGlmeTo6YWxsb3ctbW9kYWwtZGlhbG9n
cyIsIEdfQ0FMTEJBQ0soYWxsb3dNb2RhbERpYWxvZ3NDaGFuZ2VkKSwgd2ViVmlldyk7CiAgICAg
Z19zaWduYWxfY29ubmVjdChzZXR0aW5ncywgIm5vdGlmeTo6em9vbS10ZXh0LW9ubHkiLCBHX0NB
TExCQUNLKHpvb21UZXh0T25seUNoYW5nZWQpLCB3ZWJWaWV3KTsKIH0KIAorc3RhdGljIHZvaWQg
d2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RTZXR0aW5nc1NpZ25hbEhhbmRsZXJzKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCit7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2ViVmlldy0+
cHJpdi0+c2V0dGluZ3MuZ2V0KCk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9i
eV9mdW5jKHNldHRpbmdzLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihhbGxvd01vZGFsRGlh
bG9nc0NoYW5nZWQpLCB3ZWJWaWV3KTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0
X2J5X2Z1bmMoc2V0dGluZ3MsIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHpvb21UZXh0T25s
eUNoYW5nZWQpLCB3ZWJWaWV3KTsKKworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29u
c3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogewogICAgIGlmIChHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQpCkBAIC0yNzEsOCArMjkxLDE2
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3Qs
IGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Rmlu
YWxpemUoR09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2
ID0gV0VCS0lUX1dFQl9WSUVXKG9iamVjdCktPnByaXY7CisKICAgICBpZiAocHJpdi0+amF2YXNj
cmlwdEdsb2JhbENvbnRleHQpCiAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UocHJpdi0+
amF2YXNjcmlwdEdsb2JhbENvbnRleHQpOworCisgICAgLy8gRm9yIG1vZGFsIGRpYWxvZ3MsIG1h
a2Ugc3VyZSB0aGUgbWFpbiBsb29wIGlzIHN0b3BwZWQgd2hlbiBmaW5hbGl6aW5nIHRoZSB3ZWJW
aWV3LgorICAgIGlmIChwcml2LT5tb2RhbExvb3AgJiYgZ19tYWluX2xvb3BfaXNfcnVubmluZyhw
cml2LT5tb2RhbExvb3AuZ2V0KCkpKQorICAgICAgICBnX21haW5fbG9vcF9xdWl0KHByaXYtPm1v
ZGFsTG9vcC5nZXQoKSk7CisKKyAgICB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2ln
bmFsSGFuZGxlcnMoV0VCS0lUX1dFQl9WSUVXKG9iamVjdCkpOworCiAgICAgcHJpdi0+fldlYktp
dFdlYlZpZXdQcml2YXRlKCk7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3Bh
cmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CkBAIC01MTcsNiArNTQ1LDI3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyog
d2ViVmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZP
SURfX1ZPSUQsCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMCk7CiAKKyAgICAg
LyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6cnVuLWFzLW1vZGFsOgorICAgICAqIEB3ZWJfdmll
dzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAg
ICAqCisgICAgICogRW1pdHRlZCBhZnRlciAjV2ViS2l0V2ViVmlldzo6cmVhZHktdG8tc2hvdyBv
biB0aGUgbmV3bHkKKyAgICAgKiBjcmVhdGVkICNXZWJLaXRXZWJWaWV3IHdoZW4gSmF2YVNjcmlw
dCBjb2RlIGNhbGxzCisgICAgICogPGZ1bmN0aW9uPndpbmRvdy5zaG93TW9kYWxEaWFsb2c8L2Z1
bmN0aW9uPi4gVGhlIHB1cnBvc2Ugb2YKKyAgICAgKiB0aGlzIHNpZ25hbCBpcyB0byBhbGxvdyB0
aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRvIHByZXBhcmUgdGhlCisgICAgICogbmV3IHZpZXcgdG8g
YmVoYXZlIGFzIG1vZGFsLiBPbmNlIHRoZSBzaWduYWwgaXMgZW1pdHRlZCBhIG5ldworICAgICAq
IG1haW5sb29wIHdpbGwgYmUgcnVuIHRvIGJsb2NrIHVzZXIgaW50ZXJhY3Rpb24gaW4gdGhlIHBh
cmVudAorICAgICAqICNXZWJLaXRXZWJWaWV3IHVudGlsIHRoZSBuZXcgZGlhbG9nIGlzIGNsb3Nl
ZC4KKyAgICAgKi8KKyAgICBzaWduYWxzW1JVTl9BU19NT0RBTF0gPQorICAgICAgICAgICAgZ19z
aWduYWxfbmV3KCJydW4tYXMtbW9kYWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQ
RV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgR19T
SUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VU
KFdlYktpdFdlYlZpZXdDbGFzcywgcnVuX2FzX21vZGFsKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9W
T0lEX19WT0lELAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKwog
ICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6OmNsb3NlOgogICAgICAqIEB3ZWJWaWV3OiB0
aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCkBAIC04MDYs
NiArODU1LDE2IEBAIHZvaWQgd2Via2l0V2ViVmlld1JlYWR5VG9TaG93UGFnZShXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tSRUFEWV9U
T19TSE9XXSwgMCwgTlVMTCk7CiB9CiAKK3ZvaWQgd2Via2l0V2ViVmlld1J1bkFzTW9kYWwoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25h
bHNbUlVOX0FTX01PREFMXSwgMCwgTlVMTCk7CisKKyAgICB3ZWJWaWV3LT5wcml2LT5tb2RhbExv
b3AgPSBhZG9wdEdSZWYoZ19tYWluX2xvb3BfbmV3KDAsIEZBTFNFKSk7CisgICAgR0RLX1RIUkVB
RFNfRU5URVIoKTsKKyAgICBnX21haW5fbG9vcF9ydW4od2ViVmlldy0+cHJpdi0+bW9kYWxMb29w
LmdldCgpKTsKKyAgICBHREtfVEhSRUFEU19MRUFWRSgpOworfQorCiB2b2lkIHdlYmtpdFdlYlZp
ZXdDbG9zZVBhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3NpZ25hbF9lbWl0
KHdlYlZpZXcsIHNpZ25hbHNbQ0xPU0VdLCAwLCBOVUxMKTsKQEAgLTEzNjMsNyArMTQyMiw3IEBA
IHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJLaXRTZXR0aW5ncyogc2V0dGluCiAgICAgaWYgKHdlYlZpZXctPnByaXYtPnNldHRpbmdz
ID09IHNldHRpbmdzKQogICAgICAgICByZXR1cm47CiAKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19k
aXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldy0+cHJpdi0+c2V0dGluZ3MuZ2V0KCksIHJlaW50ZXJw
cmV0X2Nhc3Q8Z3BvaW50ZXI+KHpvb21UZXh0T25seUNoYW5nZWQpLCB3ZWJWaWV3KTsKKyAgICB3
ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2lnbmFsSGFuZGxlcnMod2ViVmlldyk7CiAg
ICAgd2Via2l0V2ViVmlld1NldFNldHRpbmdzKHdlYlZpZXcsIHNldHRpbmdzLCB0b0FQSSh3ZWJr
aXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykpKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aAppbmRleCA5OTJiMmM2Li5jNGU1NmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0xMzMsNiArMTMzLDcgQEAgc3RydWN0IF9X
ZWJLaXRXZWJWaWV3Q2xhc3MgewogCiAgICAgR3RrV2lkZ2V0ICooKiBjcmVhdGUpICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAgICAgdm9pZCAg
ICAgICAoKiByZWFkeV90b19zaG93KSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICp3ZWJfdmlldyk7CisgICAgdm9pZCAgICAgICAoKiBydW5fYXNfbW9kYWwpICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAgICAgdm9pZCAgICAgICAoKiBj
bG9zZSkgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmll
dyk7CiAKICAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9kaWFsb2cpICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggNzNjOTM1MS4u
Nzg0NTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zOCw2ICszOCw3IEBAIHZvaWQgd2Via2l0V2Vi
Vmlld1NldFRpdGxlKFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJik7CiB2b2lkIHdlYmtp
dFdlYlZpZXdVcGRhdGVVUkkoV2ViS2l0V2ViVmlldyopOwogV0tQYWdlUmVmIHdlYmtpdFdlYlZp
ZXdDcmVhdGVOZXdQYWdlKFdlYktpdFdlYlZpZXcqLCBXS0RpY3Rpb25hcnlSZWYgd2tXaW5kb3dG
ZWF0dXJlcyk7CiB2b2lkIHdlYmtpdFdlYlZpZXdSZWFkeVRvU2hvd1BhZ2UoV2ViS2l0V2ViVmll
dyopOwordm9pZCB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbChXZWJLaXRXZWJWaWV3Kik7CiB2b2lk
IHdlYmtpdFdlYlZpZXdDbG9zZVBhZ2UoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJW
aWV3UnVuSmF2YVNjcmlwdEFsZXJ0KFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJiBtZXNz
YWdlKTsKIGJvb2wgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDb25maXJtKFdlYktpdFdlYlZp
ZXcqLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCmlu
ZGV4IDE5NDkxYzIuLjQ2OTUwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNldHRpbmdzLmNwcApAQCAtMTk5
LDYgKzE5OSwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0dGluZ3MoVGVzdCosIGdjb25z
dHBvaW50ZXIpCiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfd2ViZ2woc2V0dGluZ3Ms
IFRSVUUpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmdsKHNl
dHRpbmdzKSk7CiAKKyAgICAvLyBBbGxvdyBNb2RhbCBEaWFsb2dzIGlzIGRpc2FibGVkIGJ5IGRl
ZmF1bHQuCisgICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlh
bG9ncyhzZXR0aW5ncykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYWxsb3dfbW9kYWxfZGlh
bG9ncyhzZXR0aW5ncywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9h
bGxvd19tb2RhbF9kaWFsb2dzKHNldHRpbmdzKSk7CisKICAgICAvLyBab29tIHRleHQgb25seSBp
cyBkaXNhYmxlZCBieSBkZWZhdWx0LgogICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0
X3pvb21fdGV4dF9vbmx5KHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF96b29t
X3RleHRfb25seShzZXR0aW5ncywgVFJVRSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXgg
Nzg3Nzk2Yy4uYjI5MWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTAxLDYgKzEw
MSw3IEBAIHB1YmxpYzoKICAgICBlbnVtIFdlYlZpZXdFdmVudHMgewogICAgICAgICBDcmVhdGUs
CiAgICAgICAgIFJlYWR5VG9TaG93LAorICAgICAgICBSdW5Bc01vZGFsLAogICAgICAgICBDbG9z
ZQogICAgIH07CiAKQEAgLTE3Niw2ICsxNzcsMTIgQEAgcHVibGljOgogICAgICAgICB0ZXN0LT5t
X3dpbmRvd1Byb3BlcnRpZXNDaGFuZ2VkLmFkZChnX3BhcmFtX3NwZWNfZ2V0X25hbWUocGFyYW1T
cGVjKSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgZGlhbG9nUnVuQXNNb2RhbChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBVSUNsaWVudFRlc3QqIHRlc3QpCisgICAgeworICAgICAgICBnX2Fz
c2VydCh3ZWJWaWV3ICE9IHRlc3QtPm1fd2ViVmlldyk7CisgICAgICAgIHRlc3QtPm1fd2ViVmll
d0V2ZW50cy5hcHBlbmQoUnVuQXNNb2RhbCk7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgdmll
d0Nsb3NlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFVJQ2xpZW50VGVzdCogdGVzdCkKICAgICB7
CiAgICAgICAgIGdfYXNzZXJ0KHdlYlZpZXcgIT0gdGVzdC0+bV93ZWJWaWV3KTsKQEAgLTE5MCw5
ICsxOTcsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgZ19hc3NlcnQod2ViVmlldyAhPSB0
ZXN0LT5tX3dlYlZpZXcpOwogCi0gICAgICAgIFdlYktpdFdpbmRvd1Byb3BlcnRpZXMqIHdpbmRv
d1Byb3BlcnRpZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19wcm9wZXJ0aWVzKHdlYlZp
ZXcpOwotICAgICAgICBnX2Fzc2VydCh3aW5kb3dQcm9wZXJ0aWVzKTsKLSAgICAgICAgV2luZG93
UHJvcGVydGllcyh3aW5kb3dQcm9wZXJ0aWVzKS5hc3NlcnRFcXVhbCh0ZXN0LT5tX3dpbmRvd1By
b3BlcnRpZXMpOworICAgICAgICBpZiAoIXRlc3QtPm1faXNNb2RhbERpYWxvZ1Rlc3QpIHsKKyAg
ICAgICAgICAgIFdlYktpdFdpbmRvd1Byb3BlcnRpZXMqIHdpbmRvd1Byb3BlcnRpZXMgPSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19wcm9wZXJ0aWVzKHdlYlZpZXcpOworICAgICAgICAgICAg
Z19hc3NlcnQod2luZG93UHJvcGVydGllcyk7CisgICAgICAgICAgICBXaW5kb3dQcm9wZXJ0aWVz
KHdpbmRvd1Byb3BlcnRpZXMpLmFzc2VydEVxdWFsKHRlc3QtPm1fd2luZG93UHJvcGVydGllcyk7
CisgICAgICAgIH0KIAogICAgICAgICB0ZXN0LT5tX3dlYlZpZXdFdmVudHMuYXBwZW5kKFJlYWR5
VG9TaG93KTsKICAgICB9CkBAIC0yMTEsOCArMjIwLDkgQEAgcHVibGljOgogICAgICAgICB0ZXN0
LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdpbmRvd1By
b3BlcnRpZXMpKTsKICAgICAgICAgdGVzdC0+bV93aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZC5jbGVh
cigpOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvd1Byb3BlcnRpZXMsICJub3RpZnki
LCBHX0NBTExCQUNLKHdpbmRvd1Byb3BlcnRpZXNOb3RpZnlDYWxsYmFjayksIHRlc3QpOwotCiAg
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgInJlYWR5LXRvLXNob3ciLCBHX0NB
TExCQUNLKHZpZXdSZWFkeVRvU2hvdyksIHRlc3QpOworICAgICAgICBpZiAodGVzdC0+bV9pc01v
ZGFsRGlhbG9nVGVzdCkKKyAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywg
InJ1bi1hcy1tb2RhbCIsIEdfQ0FMTEJBQ0soZGlhbG9nUnVuQXNNb2RhbCksIHRlc3QpOwogICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJjbG9zZSIsIEdfQ0FMTEJBQ0sodmll
d0Nsb3NlKSwgdGVzdCk7CiAKICAgICAgICAgcmV0dXJuIG5ld1dlYlZpZXc7CkBAIC0yODEsNiAr
MjkxLDcgQEAgcHVibGljOgogICAgIFVJQ2xpZW50VGVzdCgpCiAgICAgICAgIDogbV9zY3JpcHRE
aWFsb2dUeXBlKFdFQktJVF9TQ1JJUFRfRElBTE9HX0FMRVJUKQogICAgICAgICAsIG1fc2NyaXB0
RGlhbG9nQ29uZmlybWVkKHRydWUpCisgICAgICAgICwgbV9pc01vZGFsRGlhbG9nVGVzdChmYWxz
ZSkKICAgICAgICAgLCBtX21vdXNlVGFyZ2V0TW9kaWZpZXJzKDApCiAgICAgewogICAgICAgICB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNh
bGx5KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MobV93ZWJWaWV3KSwgVFJVRSk7CkBAIC0z
MTQsNiArMzI1LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxXZWJWaWV3RXZlbnRzPiBtX3dlYlZp
ZXdFdmVudHM7CiAgICAgV2ViS2l0U2NyaXB0RGlhbG9nVHlwZSBtX3NjcmlwdERpYWxvZ1R5cGU7
CiAgICAgYm9vbCBtX3NjcmlwdERpYWxvZ0NvbmZpcm1lZDsKKyAgICBib29sIG1faXNNb2RhbERp
YWxvZ1Rlc3Q7CiAgICAgV2luZG93UHJvcGVydGllcyBtX3dpbmRvd1Byb3BlcnRpZXM7CiAgICAg
SGFzaFNldDxXVEY6OlN0cmluZz4gbV93aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZDsKICAgICBHUmVm
UHRyPFdlYktpdEhpdFRlc3RSZXN1bHQ+IG1fbW91c2VUYXJnZXRIaXRUZXN0UmVzdWx0OwpAQCAt
MzMyLDYgKzM0NCwzOCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NyZWF0ZVJlYWR5Q2xvc2Uo
VUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcGludChl
dmVudHNbMl0sID09LCBVSUNsaWVudFRlc3Q6OkNsb3NlKTsKIH0KIAorc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdBbGxvd01vZGFsRGlhbG9ncyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCit7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dl
dF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYWxs
b3dfbW9kYWxfZGlhbG9ncyhzZXR0aW5ncywgVFJVRSk7CisKKyAgICB0ZXN0LT5tX2lzTW9kYWxE
aWFsb2dUZXN0ID0gdHJ1ZTsKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25sb2Fk
PVwid2luZG93LnNob3dNb2RhbERpYWxvZygnZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGJvZHkvPjxz
Y3JpcHQ+d2luZG93LmNsb3NlKCk7PC9zY3JpcHQ+PC9odG1sPicpXCI+PC9ib2R5PjwvaHRtbD4i
LCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxNYWluTG9vcEZpbmlzaGVzKCk7CisKKyAgICBWZWN0
b3I8VUlDbGllbnRUZXN0OjpXZWJWaWV3RXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+bV93ZWJWaWV3
RXZlbnRzOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgNCk7CisgICAg
Z19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIFVJQ2xpZW50VGVzdDo6Q3JlYXRlKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzFdLCA9PSwgVUlDbGllbnRUZXN0OjpSZWFkeVRvU2hv
dyk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1syXSwgPT0sIFVJQ2xpZW50VGVzdDo6UnVu
QXNNb2RhbCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1szXSwgPT0sIFVJQ2xpZW50VGVz
dDo6Q2xvc2UpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0Rpc2FsbG93TW9kYWxEaWFs
b2dzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBXZWJLaXRTZXR0
aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHRlc3QtPm1fd2Vi
Vmlldyk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNldHRp
bmdzLCBGQUxTRSk7CisKKyAgICB0ZXN0LT5tX2lzTW9kYWxEaWFsb2dUZXN0ID0gdHJ1ZTsKKyAg
ICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25sb2FkPVwid2luZG93LnNob3dNb2RhbERp
YWxvZygnZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGJvZHkvPjxzY3JpcHQ+d2luZG93LmNsb3NlKCk7
PC9zY3JpcHQ+PC9odG1sPicpXCI+PC9ib2R5PjwvaHRtbD4iLCAwKTsKKyAgICAvLyBXZSBuZWVk
IHRvIHVzZSBhIHRpbWVvdXQgaGVyZSBiZWNhdXNlIHRoZSB2aWV3Q2xvc2UoKSBmdW5jdGlvbgor
ICAgIC8vIHdvbid0IGV2ZXIgYmUgY2FsbGVkIGFzIHRoZSBkaWFsb2cgd29uJ3QgYmUgY3JlYXRl
ZC4KKyAgICB0ZXN0LT53YWl0KDEpOworCisgICAgVmVjdG9yPFVJQ2xpZW50VGVzdDo6V2ViVmll
d0V2ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fd2ViVmlld0V2ZW50czsKKyAgICBnX2Fzc2VydF9j
bXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDApOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d0phdmFTY3JpcHREaWFsb2dzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsK
ICAgICBzdGF0aWMgY29uc3QgY2hhciogaHRtbE9uTG9hZEZvcm1hdCA9ICI8aHRtbD48Ym9keSBv
bkxvYWQ9XCIlc1wiPjwvYm9keT48L2h0bWw+IjsKQEAgLTUxOSw2ICs1NjMsOCBAQCB2b2lkIGJl
Zm9yZUFsbCgpCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzZXR0aW5n
cyIsIHRlc3RXZWJWaWV3U2V0dGluZ3MpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAicmVwbGFjZS1jb250ZW50IiwgdGVzdFdlYlZpZXdSZXBsYWNlQ29udGVudCk7CiAg
ICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY3JlYXRlLXJlYWR5LWNsb3Nl
IiwgdGVzdFdlYlZpZXdDcmVhdGVSZWFkeUNsb3NlKTsKKyAgICBVSUNsaWVudFRlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJhbGxvdy1tb2RhbC1kaWFsb2dzIiwgdGVzdFdlYlZpZXdBbGxvd01v
ZGFsRGlhbG9ncyk7CisgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZGlz
YWxsb3ctbW9kYWwtZGlhbG9ncyIsIHRlc3RXZWJWaWV3RGlzYWxsb3dNb2RhbERpYWxvZ3MpOwog
ICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImphdmFzY3JpcHQtZGlhbG9n
cyIsIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRk
KCJXZWJLaXRXZWJWaWV3IiwgIndpbmRvdy1wcm9wZXJ0aWVzIiwgdGVzdFdlYlZpZXdXaW5kb3dQ
cm9wZXJ0aWVzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJtb3Vz
ZS10YXJnZXQiLCB0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjk2NmE3OC4uNGVhZjAyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE3Miw2ICsxNzIsNyBAQCBXZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50KiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRy
PFdlYlByb2Nlc3NQcm94eT4gcAogICAgICwgbV9nYXBCZXR3ZWVuUGFnZXMoMCkKICAgICAsIG1f
aXNWYWxpZCh0cnVlKQogICAgICwgbV9pc0Nsb3NlZChmYWxzZSkKKyAgICAsIG1fY2FuUnVuTW9k
YWwoZmFsc2UpCiAgICAgLCBtX2lzSW5QcmludGluZ01vZGUoZmFsc2UpCiAgICAgLCBtX2lzUGVy
Zm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKGZhbHNlKQogICAgICwgbV9pbkRlY2lkZVBvbGljeUZv
clJlc3BvbnNlKGZhbHNlKQpAQCAtMjg2LDcgKzI4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpp
bml0aWFsaXplVUlDbGllbnQoY29uc3QgV0tQYWdlVUlDbGllbnQqIGNsaWVudCkKICAgICBtX3Vp
Q2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKIAogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0Q2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1fdWlDbGllbnQu
Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkpLCBtX3BhZ2VJRCk7Ci0gICAgcHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5Nb2RhbChtX3VpQ2xpZW50LmNh
blJ1bk1vZGFsKCkpLCBtX3BhZ2VJRCk7CisgICAgc2V0Q2FuUnVuTW9kYWwobV91aUNsaWVudC5j
YW5SdW5Nb2RhbCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVGaW5kQ2xp
ZW50KGNvbnN0IFdLUGFnZUZpbmRDbGllbnQqIGNsaWVudCkKQEAgLTMzODksNyArMzM5MCw3IEBA
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRl
cnMoKSBjb25zdAogICAgIHBhcmFtZXRlcnMuc2Vzc2lvblN0YXRlID0gU2Vzc2lvblN0YXRlKG1f
YmFja0ZvcndhcmRMaXN0LT5lbnRyaWVzKCksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SW5k
ZXgoKSk7CiAgICAgcGFyYW1ldGVycy5oaWdoZXN0VXNlZEJhY2tGb3J3YXJkSXRlbUlEID0gV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbTo6aGlnaGVkVXNlZEl0ZW1JRCgpOwogICAgIHBhcmFtZXRlcnMu
Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsID0gbV91aUNsaWVudC5jYW5SdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoKTsKLSAgICBwYXJhbWV0ZXJzLmNhblJ1bk1vZGFsID0gbV91aUNs
aWVudC5jYW5SdW5Nb2RhbCgpOworICAgIHBhcmFtZXRlcnMuY2FuUnVuTW9kYWwgPSBtX2NhblJ1
bk1vZGFsOwogICAgIHBhcmFtZXRlcnMuZGV2aWNlU2NhbGVGYWN0b3IgPSBtX2ludHJpbnNpY0Rl
dmljZVNjYWxlRmFjdG9yOwogICAgIHBhcmFtZXRlcnMubWVkaWFWb2x1bWUgPSBtX21lZGlhVm9s
dW1lOwogCkBAIC0zNTcyLDYgKzM1NzMsMjMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3
YXJkUmVtb3ZlZEl0ZW0odWludDY0X3QgaXRlbUlEKQogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCksIG1fcGFnZUlE
KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKGJvb2wgY2FuUnVuTW9k
YWwpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEl0
J3Mgb25seSBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIHN0YXRlIGZvciBhIFdlYlBhZ2Ugd2hpY2gK
KyAgICAvLyBhbHJlYWR5IHF1YWxpZmllcyBmb3IgcnVubmluZyBtb2RhbCBjaGlsZCB3ZWIgcGFn
ZXMsIG90aGVyd2lzZQorICAgIC8vIHRoZXJlJ3Mgbm8gb3RoZXIgcG9zc2liaWxpdHkgdGhhbiBu
b3QgYWxsb3dpbmcgaXQuCisgICAgbV9jYW5SdW5Nb2RhbCA9IG1fdWlDbGllbnQuY2FuUnVuTW9k
YWwoKSAmJiBjYW5SdW5Nb2RhbDsKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldENhblJ1bk1vZGFsKG1fY2FuUnVuTW9kYWwpLCBtX3BhZ2VJRCk7Cit9CisKK2Jvb2wg
V2ViUGFnZVByb3h5OjpjYW5SdW5Nb2RhbCgpCit7CisgICAgcmV0dXJuIGlzVmFsaWQoKSA/IG1f
Y2FuUnVuTW9kYWwgOiBmYWxzZTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luUHJpbnRp
bmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvKQogewog
ICAgIGlmIChtX2lzSW5QcmludGluZ01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggMGNhZTJmNy4uMzY0ODFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtNTk3LDYgKzU5Nyw5IEBAIHB1YmxpYzoKICAgICBTdHJpbmcg
YWNjZXNzaWJpbGl0eVBsdWdJRCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzaWJpbGl0eVBsdWdJ
RDsgfQogI2VuZGlmCiAKKyAgICB2b2lkIHNldENhblJ1bk1vZGFsKGJvb2wpOworICAgIGJvb2wg
Y2FuUnVuTW9kYWwoKTsKKwogICAgIHZvaWQgYmVnaW5QcmludGluZyhXZWJGcmFtZVByb3h5Kiwg
Y29uc3QgUHJpbnRJbmZvJik7CiAgICAgdm9pZCBlbmRQcmludGluZygpOwogICAgIHZvaWQgY29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIFBh
c3NSZWZQdHI8Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPik7CkBAIC05ODMsNiArOTg2LDkgQEAgcHJp
dmF0ZToKICAgICAvLyBXaGV0aGVyIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKSBoYXMgYmVlbiBjYWxs
ZWQgb24gdGhpcyBwYWdlLgogICAgIGJvb2wgbV9pc0Nsb3NlZDsKIAorICAgIC8vIFdoZXRoZXIg
aXQgY2FuIHJ1biBtb2RhbCBjaGlsZCB3ZWIgcGFnZXMuCisgICAgYm9vbCBtX2NhblJ1bk1vZGFs
OworCiAgICAgYm9vbCBtX2lzSW5QcmludGluZ01vZGU7CiAgICAgYm9vbCBtX2lzUGVyZm9ybWlu
Z0RPTVByaW50T3BlcmF0aW9uOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZTg3YWEwMC4uNTMwYWYyYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAzLTI3
ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBb
R1RLXSBBZGQgc3VwcG9ydCBmb3Igd2luZG93LnNob3dNb2RhbERpYWxvZyBpbiBXZWJLaXQyR1RL
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk1MDAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgbW9kYWwgZGlhbG9ncyBpbiBHVEsncyBNaW5pQnJvd3Nlci4KKworICAgICAgICAq
IE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgICh3ZWJWaWV3UnVuQXNN
b2RhbCk6CisgICAgICAgICh3ZWJWaWV3Q3JlYXRlKToKKyAgICAgICAgKHdlYlZpZXdEZWNpZGVQ
b2xpY3kpOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3dfbmV3KToKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWlu
LmM6CisgICAgICAgIChjcmVhdGVCcm93c2VyV2luZG93KToKKwogMjAxMi0wMy0yNiAgU2NvdHQg
QnllciAgPHNjb3R0YnllckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRW5hYmxlIGxheW91dCB0
ZXN0aW5nIG9mIHRoZSBzY3JvbGwgYW5pbWF0b3IuCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuYwppbmRleCA1ZmU5ODRhLi4zNzgxNGVmIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyV2luZG93LmMKQEAgLTIwNCw2ICsyMDQsMTEgQEAgc3RhdGljIHZvaWQgd2ViVmlld0Nsb3Nl
KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICBndGtf
d2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVCh3aW5kb3cpKTsKIH0KIAorc3RhdGljIHZvaWQgd2Vi
Vmlld1J1bkFzTW9kYWwoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2lu
ZG93KQoreworICAgIGd0a193aW5kb3dfc2V0X21vZGFsKEdUS19XSU5ET1cod2luZG93KSwgVFJV
RSk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYlZpZXdSZWFkeVRvU2hvdyhXZWJLaXRXZWJWaWV3ICp3
ZWJWaWV3LCBCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7CiAgICAgV2ViS2l0V2luZG93UHJvcGVy
dGllcyAqd2luZG93UHJvcGVydGllcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X3Byb3Bl
cnRpZXMod2ViVmlldyk7CkBAIC0yMzEsOCArMjM2LDkgQEAgc3RhdGljIEd0a1dpZGdldCAqd2Vi
Vmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBCcm93c2VyV2luZG93ICp3aW5kb3cp
CiAgICAgV2ViS2l0V2ViVmlldyAqbmV3V2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRf
d2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2Vi
VmlldykpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKG5ld1dlYlZpZXcsIHdl
YmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldykpOwogCi0gICAgR3RrV2lkZ2V0ICpu
ZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcobmV3V2ViVmlldyk7CisgICAgR3RrV2lkZ2V0
ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcobmV3V2ViVmlldywgR1RLX1dJTkRPVyh3
aW5kb3cpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJyZWFkeS10by1zaG93
IiwgR19DQUxMQkFDSyh3ZWJWaWV3UmVhZHlUb1Nob3cpLCBuZXdXaW5kb3cpOworICAgIGdfc2ln
bmFsX2Nvbm5lY3QobmV3V2ViVmlldywgInJ1bi1hcy1tb2RhbCIsIEdfQ0FMTEJBQ0sod2ViVmll
d1J1bkFzTW9kYWwpLCBuZXdXaW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmll
dywgImNsb3NlIiwgR19DQUxMQkFDSyh3ZWJWaWV3Q2xvc2UpLCBuZXdXaW5kb3cpOwogICAgIHJl
dHVybiBHVEtfV0lER0VUKG5ld1dlYlZpZXcpOwogfQpAQCAtMjU1LDcgKzI2MSw3IEBAIHN0YXRp
YyBnYm9vbGVhbiB3ZWJWaWV3RGVjaWRlUG9saWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdl
YktpdFBvbGljeURlY2lzaW9uCiAKICAgICBXZWJLaXRXZWJWaWV3ICpuZXdXZWJWaWV3ID0gV0VC
S0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHdlYmtpdF93ZWJf
dmlld19nZXRfY29udGV4dCh3ZWJWaWV3KSkpOwogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0
dGluZ3MobmV3V2ViVmlldywgd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7
Ci0gICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcobmV3V2ViVmll
dyk7CisgICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcobmV3V2Vi
VmlldywgR1RLX1dJTkRPVyh3aW5kb3cpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1
ZXN0KG5ld1dlYlZpZXcsIHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9nZXRfcmVx
dWVzdChuYXZpZ2F0aW9uRGVjaXNpb24pKTsKICAgICBndGtfd2lkZ2V0X3Nob3cobmV3V2luZG93
KTsKIApAQCAtNDY2LDExICs0NzIsMTIgQEAgc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfY2xh
c3NfaW5pdChCcm93c2VyV2luZG93Q2xhc3MgKmtsYXNzKQogfQogCiAvLyBQdWJsaWMgQVBJLgot
R3RrV2lkZ2V0ICpicm93c2VyX3dpbmRvd19uZXcoV2ViS2l0V2ViVmlldyAqdmlldykKK0d0a1dp
ZGdldCAqYnJvd3Nlcl93aW5kb3dfbmV3KFdlYktpdFdlYlZpZXcgKnZpZXcsIEd0a1dpbmRvdyAq
cGFyZW50KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh2
aWV3KSwgMCk7CiAKICAgICByZXR1cm4gR1RLX1dJREdFVChnX29iamVjdF9uZXcoQlJPV1NFUl9U
WVBFX1dJTkRPVywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYW5zaWVu
dC1mb3IiLCBwYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBl
IiwgR1RLX1dJTkRPV19UT1BMRVZFTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInZpZXciLCB2aWV3LCBOVUxMKSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuaAppbmRleCAwNjM5N2E1Li42NjY3NTQ2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
V2luZG93LmgKQEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0Jyb3dzZXJXaW5kb3dD
bGFzcyAgIEJyb3dzZXJXaW5kb3dDbGFzczsKIAogR1R5cGUgYnJvd3Nlcl93aW5kb3dfZ2V0X3R5
cGUodm9pZCk7CiAKLUd0a1dpZGdldCogYnJvd3Nlcl93aW5kb3dfbmV3KFdlYktpdFdlYlZpZXcq
KTsKK0d0a1dpZGdldCogYnJvd3Nlcl93aW5kb3dfbmV3KFdlYktpdFdlYlZpZXcqLCBHdGtXaW5k
b3cqKTsKIFdlYktpdFdlYlZpZXcqIGJyb3dzZXJfd2luZG93X2dldF92aWV3KEJyb3dzZXJXaW5k
b3cqKTsKIHZvaWQgYnJvd3Nlcl93aW5kb3dfbG9hZF91cmkoQnJvd3NlcldpbmRvdyAqLCBjb25z
dCBjaGFyICp1cmkpOwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5j
IGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCBiMjY2Y2RjLi45ODhlMzk2IDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9tYWluLmMKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGdjaGFyICphcmd1bWVu
dFRvVVJMKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogc3RhdGljIHZvaWQgY3JlYXRlQnJvd3Nlcldp
bmRvdyhjb25zdCBnY2hhciAqdXJpLCBXZWJLaXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MpCiB7
CiAgICAgR3RrV2lkZ2V0ICp3ZWJWaWV3ID0gd2Via2l0X3dlYl92aWV3X25ldygpOwotICAgIEd0
a1dpZGdldCAqbWFpbldpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhXRUJLSVRfV0VCX1ZJRVco
d2ViVmlldykpOworICAgIEd0a1dpZGdldCAqbWFpbldpbmRvdyA9IGJyb3dzZXJfd2luZG93X25l
dyhXRUJLSVRfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOwogICAgIGdjaGFyICp1cmwgPSBhcmd1
bWVudFRvVVJMKHVyaSk7CiAKICAgICBpZiAod2Via2l0U2V0dGluZ3MpIHsKLS0gCjEuNy43LjYK
Cg==
</data>
<flag name="commit-queue"
          id="138251"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143786</attachid>
            <date>2012-05-24 04:45:09 -0700</date>
            <delta_ts>2012-06-20 06:04:17 -0700</delta_ts>
            <desc>Patch proposal + Unit test</desc>
            <filename>0001-2012-05-24-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>42155</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA2Yzk3YTJhZWRmNTIxODk1Y2Y5OWRiNmJiNGViOThiZjdiY2RkNGFmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDI0IE1heSAyMDEyIDExOjM1OjAwICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMi0wNS0yNCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGlu
IFdlYktpdDJHVEsrCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc5NTAwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBJ
bXBsZW1lbnQgcnVuTW9kYWwgaW4gV2ViS2l0VUlDbGllbnQgdG8gbWFrZSB0aGUgV2ViS2l0V2Vi
VmlldwogICAgICAgIGVtaXQgYSAncnVuLWFzLW1vZGFsJyBzaWduYWwgd2hlbiByZXF1ZXN0ZWQs
IGNyZWF0aW5nIGEgbmV3CiAgICAgICAgbWFpbmxvb3AgdGhlcmUgdG8gYmxvY2sgdXNlciBpbnRl
cmFjdGlvbiB3aXRoIHRoZSBvcmlnaW5hbCB3aW5kb3cKICAgICAgICB3aGlsZSB0aGUgbW9kYWwg
ZGlhbG9nIGlzIHNob3dpbmcuCgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlD
bGllbnQuY3BwOgogICAgICAgIChydW5Nb2RhbCk6IENhbGwgdG8gdGhlIG5ldyB3ZWJraXRXZWJW
aWV3UnVuQXNNb2RhbFBhZ2UgZnVuY3Rpb24uCiAgICAgICAgKGF0dGFjaFVJQ2xpZW50VG9WaWV3
KTogQWRkIHJ1bk1vZGFsLgogICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHA6CiAgICAgICAgKF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSk6IEFkZCBhbiBhdHJpYnV0ZSBm
b3IgYSBuZXcgbWFpbiBsb29wLgogICAgICAgICh3ZWJraXRXZWJWaWV3RmluYWxpemUpOiBNYWtl
IHN1cmUgdGhlIG1haW4gbG9vcCBmb3IgbWFpbiBkaWFsb2dzLAogICAgICAgIGlmIGFueSwgaXMg
c3RvcHBlZCBpZiBpdCB3YXMgc3RpbGwgcnVubmluZy4KICAgICAgICAod2Via2l0X3dlYl92aWV3
X2NsYXNzX2luaXQpOiBEZWNsYXJlIG5ldyBzaWduYWwgJ3J1bi1hcy1tb2RhbCcuCiAgICAgICAg
KHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsKTogRW1pdCB0aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFs
IGFuZCwgaWYKICAgICAgICBoYW5kbGVkLCBjcmVhdGUgYW5kIHJ1biBhIG5ldyBtYWluIGxvb3Au
CiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CiAgICAgICAgKF9X
ZWJLaXRXZWJWaWV3Q2xhc3MpOiBOZXcgaGFuZGxlciBmb3IgdGhlICdydW4tYXMtbW9kYWwnIHNp
Z25hbC4KICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6
IEFkZCB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbFBhZ2UuCgogICAgICAgIEFsbG93IHNldHRpbmcg
YW5kIGdldHRpbmcgdGhlIHZhbHVlIG9mIFdlYlBhZ2UncyBjYW5SdW5Nb2RhbAogICAgICAgIGF0
dHJpYnV0ZSBpbiB0aGUgV2ViUHJvY2VzcyBmcm9tIHRoZSBVSVByb2Nlc3MgYWZ0ZXIgdGhlIGNy
ZWF0aW9uCiAgICAgICAgb2YgYSBXZWJQYWdlLCB0byBhbGxvdyB1c2luZyBpdCBmcm9tIFdlYktp
dFdlYlZpZXcgdG8gYWxsb3cgdGhlCiAgICAgICAgY2xpZW50IGFwcGxpY2F0aW9uIHRvIGRlY2lk
ZSB3aGV0aGVyIHRvIGFsbG93IGNyZWF0ZSBtb2RhbAogICAgICAgIGRpYWxvZ3MsIHdoaWNoIHdv
dWxkIHJlc3VsdCBpbiBsYXVuY2hpbmcgYW4gYWRkaXRpb25hbCBuZXN0ZWQKICAgICAgICBldmVu
dCBsb29wIGluIHRoZSB3ZWIgcHJvY2VzcywgYWZ0ZXIgY3JlYXRpbmcgdGhlIGRpYWxvZy4KCiAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eSk6IEluaXRpYWxpemUgdGhlIG5ldwogICAgICAgIG1fY2Fu
UnVuTW9kYWwgYXR0cmlidXRlLCB0byBjYWNoZSB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlCiAg
ICAgICAgV2ViUGFnZSBpbiB0aGUgV2ViUHJvY2Vzcy4KICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmluaXRpYWxpemVVSUNsaWVudCk6IENhbGwgdGhlIG5ldyBmdW5jdGlvbgogICAgICAg
IHNldENhblJ1bk1vZGFsLCBpbnN0ZWFkIG9mIG1hbnVhbGx5IHNlbmRpbmcgdGhlIFNldENhblJ1
bk1vZGFsIG1lc3NhZ2UuCiAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBh
cmFtZXRlcnMpOiBVc2UgbV9jYW5SdW5Nb2RhbAogICAgICAgIGluc3RlYWQgb2YgbV91aUNsaWVu
dC5jYW5SdW5Nb2RhbCB3aGVuIHByZXBhcmluZyB0aGUgcGFyYW1ldGVycy4KICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKTogTmV3IHB1YmxpYyBmdW5jdGlvbiwg
aXQKICAgICAgICBzZXRzIHRoZSB2YWx1ZSBvZiBtX2NhblJ1bk1vZGFsIGFuZCBzZW5kcyBhIG1l
c3NhZ2UgdG8gdGhlIFdlYgogICAgICAgIHByb2Nlc3MgZm9yIHVwZGF0aW5nIHRoZSBXZWJQYWdl
LCB3aGVuZXZlciBwb3NzaWJsZS4KICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhblJ1
bk1vZGFsKTogTmV3IHB1YmxpYyBmdW5jdGlvbiwgcmV0dXJucwogICAgICAgIHRoZSB2YWx1ZSBv
ZiB0aGUgbV9jYW5SdW5Nb2RhbCBhdHRyaWJ1dGUuCiAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CiAgICAgICAgKFdlYlBhZ2VQcm94eSk6IEFkZGVkIG5ldyBwdWJsaWMgZnVuY3Rp
b25zIGFuZCBwcml2YXRlIGF0dHJpYnV0ZS4KCiAgICAgICAgTmV3IHByb3BlcnR5IGluIFdlYktp
dFNldHRpbmdzIHRvIGJlIGFibGUgdG8gZGVjaWRlIHdoZXRoZXIgaXQgaXMKICAgICAgICBhbGxv
d2VkIHRvIGNyZWF0ZSBhbmQgcnVuIG5ldyBjaGlsZCB3ZWJ2aWV3cyBhcyBtb2RhbCBkaWFsb2dz
LgoKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDoKICAgICAg
ICAoX1dlYktpdFNldHRpbmdzUHJpdmF0ZSk6IE5ldyBhdHRyaWJ1dGUgYWxsb3dNb2RhbERpYWxv
Z3MuCiAgICAgICAgKHdlYktpdFNldHRpbmdzU2V0UHJvcGVydHkpOiBIYW5kbGUgdGhlIG5ldyBw
cm9wZXJ0eS4KICAgICAgICAod2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eSk6IERpdHRvLgogICAg
ICAgICh3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6IEluc3RhbGwgdGhlIG5ldyBwcm9wZXJ0
eS4KICAgICAgICAod2Via2l0U2V0dGluZ3NBdHRhY2hTZXR0aW5nc1RvUGFnZSk6IE1ha2Ugc3Vy
ZSB0aGUgV2ViUGFnZSBpcwogICAgICAgIGluaXRpYWxpemVkIHdpdGggdGhlIHZhbHVlIG9mIHRo
ZSBuZXcgcHJvcGVydHkuCiAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfYWxsb3dfbW9kYWxf
ZGlhbG9ncyk6IE5ldyBzZXR0ZXIuCiAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3df
bW9kYWxfZGlhbG9ncyk6IE5ldyBnZXR0ZXIuCiAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZXR0aW5ncy5oOgoKICAgICAgICBDb25uZWN0IHRvIHRoZSAnbm90aWZ5OjphbGxvdy1t
b2RhbC1kaWFsb2dzJyBzaWduYWwgZnJvbQogICAgICAgIFdlYktpdFNldHRpbmdzIHRvIGVuc3Vy
ZSB0aGF0IGNhblJ1bk1vZGFsIHByb3BlcnR5IG9mIHRoZSBXZWJQYWdlCiAgICAgICAgaXMga2Vw
dCB1cCB0byBkYXRlLiBFbnN1cmUgdGhhdCBzaWduYWwgaGFuZGxlcnMgZm9yIG1vbml0b3JpbmcK
ICAgICAgICBzZXR0aW5ncyBhcmUgZGlzY29ubmVjdGVkIHdoZW4gdGhlIHdlYnZpZXcgaXMgZmlu
YWxpemVkLgoKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgog
ICAgICAgICh3ZWJraXRXZWJWaWV3U2V0U2V0dGluZ3MpOiBDb25uZWN0IHRvIHRoZSBuZXcgc2ln
bmFsCiAgICAgICAgJ25vdGlmeTo6YWxsb3ctbW9kYWwtZGlhbG9ncycsIGZyb20gV2ViS2l0U2V0
dGluZ3MuCiAgICAgICAgKGFsbG93TW9kYWxEaWFsb2dzQ2hhbmdlZCk6IENhbGxiYWNrIHRvIHVw
ZGF0ZSBXZWJQYWdlJ3MKICAgICAgICBjYW5SdW5Nb2RhbCBwcm9wZXJ0eSB3aGVuIHVwZGF0ZWQg
dGhyb3VnaCBXZWJLaXRTZXR0aW5ncy4KICAgICAgICAod2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RT
ZXR0aW5nc1NpZ25hbEhhbmRsZXJzKTogRGlzY29ubmVjdCBzaWduYWwKICAgICAgICBoYW5kbGVy
cyBmb3IgbW9uaXRvcmluZyBXZWJLaXRTZXR0aW5ncyBwcm9wZXJ0aWVzLgogICAgICAgICh3ZWJr
aXRXZWJWaWV3RmluYWxpemUpOiBFbnN1cmUgc2lnbmFsIGhhbmRsZXJzIGFyZSBkaXNjb25uZWN0
ZWQuCiAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MpOiBEaXR0by4KICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKCiAgICAgICAgQWRkIG5ldyB1
bml0IHRlc3RzIHRvIGNoZWNrIHRoZSAncnVuLWFzLW1vZGFsJyBzaWduYWwgaXMgZW1pdHRlZAog
ICAgICAgIG9ubHkgd2hlbiB0aGUgbmV3IHByb3BlcnR5IGluIFdlYktpdFNldHRpbmdzIGlzIHNl
dCB0byBUUlVFLgoKICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcDoKICAgICAgICAodGVzdFdlYlZpZXdBbGxvd01vZGFsRGlhbG9ncyk6IE5ldyB1
bml0IHRlc3QgdG8gY2hlY2sgdGhhdCBtb2RhbAogICAgICAgIGRpYWxvZ3MgYXJlIHByb3Blcmx5
IGNyZWF0ZWQgZnJvbSBKYXZhU2NyaXB0IHdoZW4gYWxsb3dlZC4KICAgICAgICAodGVzdFdlYlZp
ZXdEaXNhbGxvd01vZGFsRGlhbG9ncyk6IE5ldyB1bml0IHRlc3QgdG8gY2hlY2sgdGhhdAogICAg
ICAgIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBtb2RhbCBkaWFsb2dzIHdoZW4gbm90IGFs
bG93ZWQuCiAgICAgICAgKGJlZm9yZUFsbCk6IEFkZCB0aGUgbmV3IHVuaXQgdGVzdC4KCjIwMTIt
MDUtMjQgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoKICAgICAg
ICBbR1RLXSBBZGQgc3VwcG9ydCBmb3Igd2luZG93LnNob3dNb2RhbERpYWxvZyBpbiBXZWJLaXQy
R1RLKwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUw
MAoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIG1vZGFsIGRpYWxvZ3MgaW4gR1RLJ3MgTWluaUJyb3dzZXIuCgogICAgICAgICogTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKICAgICAgICAod2ViVmlld1J1bkFzTW9kYWwp
OgogICAgICAgICh3ZWJWaWV3Q3JlYXRlKToKICAgICAgICAod2ViVmlld0RlY2lkZVBvbGljeSk6
CiAgICAgICAgKGJyb3dzZXJfd2luZG93X25ldyk6CiAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsv
QnJvd3NlcldpbmRvdy5oOgogICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoKICAgICAg
ICAoY3JlYXRlQnJvd3NlcldpbmRvdyk6Ci0tLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDg5ICsrKysrKysrKysrKwogLi4uL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwICAgfCAgIDYxICsrKysrKysrKwog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuaCAgfCAgICA3
ICsKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcCAgIHwg
ICAgNyArLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAgfCAgIDYxICsrKysrKysrLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oICAgfCAgICAxICsKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3UHJpdmF0ZS5oICAgICAgIHwgICAgMSArCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFNldHRpbmdzLmNwcCB8ICAgIDUgKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCAgfCAgMTQyICsrKysrKysrKysrKysrKy0tLS0tCiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCAgICAgICAgICB8ICAgMjIg
KystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggICAgICAgICAgICB8
ICAgIDYgKwogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDE4ICsrKwogVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyAgICAg
ICAgICAgICAgfCAgIDEzICstCiBUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5o
ICAgICAgICAgICAgICB8ICAgIDIgKy0KIFRvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogMTUgZmlsZXMgY2hhbmdlZCwgMzk0IGluc2Vy
dGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1ZWVlM2U4Li42YzhjZDc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIwMTItMDUtMjQgIE1hcmlvIFNhbmNoZXog
UHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0
IGZvciB3aW5kb3cuc2hvd01vZGFsRGlhbG9nIGluIFdlYktpdDJHVEsrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTUwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBydW5Nb2RhbCBpbiBX
ZWJLaXRVSUNsaWVudCB0byBtYWtlIHRoZSBXZWJLaXRXZWJWaWV3CisgICAgICAgIGVtaXQgYSAn
cnVuLWFzLW1vZGFsJyBzaWduYWwgd2hlbiByZXF1ZXN0ZWQsIGNyZWF0aW5nIGEgbmV3CisgICAg
ICAgIG1haW5sb29wIHRoZXJlIHRvIGJsb2NrIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgb3Jp
Z2luYWwgd2luZG93CisgICAgICAgIHdoaWxlIHRoZSBtb2RhbCBkaWFsb2cgaXMgc2hvd2luZy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcDoKKyAgICAg
ICAgKHJ1bk1vZGFsKTogQ2FsbCB0byB0aGUgbmV3IHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsUGFn
ZSBmdW5jdGlvbi4KKyAgICAgICAgKGF0dGFjaFVJQ2xpZW50VG9WaWV3KTogQWRkIHJ1bk1vZGFs
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAg
ICAoX1dlYktpdFdlYlZpZXdQcml2YXRlKTogQWRkIGFuIGF0cmlidXRlIGZvciBhIG5ldyBtYWlu
IGxvb3AuCisgICAgICAgICh3ZWJraXRXZWJWaWV3RmluYWxpemUpOiBNYWtlIHN1cmUgdGhlIG1h
aW4gbG9vcCBmb3IgbWFpbiBkaWFsb2dzLAorICAgICAgICBpZiBhbnksIGlzIHN0b3BwZWQgaWYg
aXQgd2FzIHN0aWxsIHJ1bm5pbmcuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5p
dCk6IERlY2xhcmUgbmV3IHNpZ25hbCAncnVuLWFzLW1vZGFsJy4KKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdSdW5Bc01vZGFsKTogRW1pdCB0aGUgJ3J1bi1hcy1tb2RhbCcgc2lnbmFsIGFuZCwgaWYK
KyAgICAgICAgaGFuZGxlZCwgY3JlYXRlIGFuZCBydW4gYSBuZXcgbWFpbiBsb29wLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKF9XZWJLaXRX
ZWJWaWV3Q2xhc3MpOiBOZXcgaGFuZGxlciBmb3IgdGhlICdydW4tYXMtbW9kYWwnIHNpZ25hbC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOiBBZGQg
d2Via2l0V2ViVmlld1J1bkFzTW9kYWxQYWdlLgorCisgICAgICAgIEFsbG93IHNldHRpbmcgYW5k
IGdldHRpbmcgdGhlIHZhbHVlIG9mIFdlYlBhZ2UncyBjYW5SdW5Nb2RhbAorICAgICAgICBhdHRy
aWJ1dGUgaW4gdGhlIFdlYlByb2Nlc3MgZnJvbSB0aGUgVUlQcm9jZXNzIGFmdGVyIHRoZSBjcmVh
dGlvbgorICAgICAgICBvZiBhIFdlYlBhZ2UsIHRvIGFsbG93IHVzaW5nIGl0IGZyb20gV2ViS2l0
V2ViVmlldyB0byBhbGxvdyB0aGUKKyAgICAgICAgY2xpZW50IGFwcGxpY2F0aW9uIHRvIGRlY2lk
ZSB3aGV0aGVyIHRvIGFsbG93IGNyZWF0ZSBtb2RhbAorICAgICAgICBkaWFsb2dzLCB3aGljaCB3
b3VsZCByZXN1bHQgaW4gbGF1bmNoaW5nIGFuIGFkZGl0aW9uYWwgbmVzdGVkCisgICAgICAgIGV2
ZW50IGxvb3AgaW4gdGhlIHdlYiBwcm9jZXNzLCBhZnRlciBjcmVhdGluZyB0aGUgZGlhbG9nLgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KTogSW5pdGlhbGl6ZSB0aGUgbmV3CisgICAgICAg
IG1fY2FuUnVuTW9kYWwgYXR0cmlidXRlLCB0byBjYWNoZSB0aGUgY3VycmVudCBzdGF0dXMgb2Yg
dGhlCisgICAgICAgIFdlYlBhZ2UgaW4gdGhlIFdlYlByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVVJQ2xpZW50KTogQ2FsbCB0aGUgbmV3IGZ1bmN0aW9u
CisgICAgICAgIHNldENhblJ1bk1vZGFsLCBpbnN0ZWFkIG9mIG1hbnVhbGx5IHNlbmRpbmcgdGhl
IFNldENhblJ1bk1vZGFsIG1lc3NhZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKTogVXNlIG1fY2FuUnVuTW9kYWwKKyAgICAgICAgaW5zdGVhZCBv
ZiBtX3VpQ2xpZW50LmNhblJ1bk1vZGFsIHdoZW4gcHJlcGFyaW5nIHRoZSBwYXJhbWV0ZXJzLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKTogTmV3IHB1Ymxp
YyBmdW5jdGlvbiwgaXQKKyAgICAgICAgc2V0cyB0aGUgdmFsdWUgb2YgbV9jYW5SdW5Nb2RhbCBh
bmQgc2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBXZWIKKyAgICAgICAgcHJvY2VzcyBmb3IgdXBkYXRp
bmcgdGhlIFdlYlBhZ2UsIHdoZW5ldmVyIHBvc3NpYmxlLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNhblJ1bk1vZGFsKTogTmV3IHB1YmxpYyBmdW5jdGlvbiwgcmV0dXJucworICAg
ICAgICB0aGUgdmFsdWUgb2YgdGhlIG1fY2FuUnVuTW9kYWwgYXR0cmlidXRlLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6IEFkZGVk
IG5ldyBwdWJsaWMgZnVuY3Rpb25zIGFuZCBwcml2YXRlIGF0dHJpYnV0ZS4KKworICAgICAgICBO
ZXcgcHJvcGVydHkgaW4gV2ViS2l0U2V0dGluZ3MgdG8gYmUgYWJsZSB0byBkZWNpZGUgd2hldGhl
ciBpdCBpcworICAgICAgICBhbGxvd2VkIHRvIGNyZWF0ZSBhbmQgcnVuIG5ldyBjaGlsZCB3ZWJ2
aWV3cyBhcyBtb2RhbCBkaWFsb2dzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2V0dGluZ3MuY3BwOgorICAgICAgICAoX1dlYktpdFNldHRpbmdzUHJpdmF0ZSk6IE5ldyBh
dHRyaWJ1dGUgYWxsb3dNb2RhbERpYWxvZ3MuCisgICAgICAgICh3ZWJLaXRTZXR0aW5nc1NldFBy
b3BlcnR5KTogSGFuZGxlIHRoZSBuZXcgcHJvcGVydHkuCisgICAgICAgICh3ZWJLaXRTZXR0aW5n
c0dldFByb3BlcnR5KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5p
dCk6IEluc3RhbGwgdGhlIG5ldyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdFNldHRpbmdzQXR0
YWNoU2V0dGluZ3NUb1BhZ2UpOiBNYWtlIHN1cmUgdGhlIFdlYlBhZ2UgaXMKKyAgICAgICAgaW5p
dGlhbGl6ZWQgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIG5ldyBwcm9wZXJ0eS4KKyAgICAgICAgKHdl
YmtpdF9zZXR0aW5nc19zZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyk6IE5ldyBzZXR0ZXIuCisgICAg
ICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3MpOiBOZXcgZ2V0dGVy
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmg6CisKKyAgICAg
ICAgQ29ubmVjdCB0byB0aGUgJ25vdGlmeTo6YWxsb3ctbW9kYWwtZGlhbG9ncycgc2lnbmFsIGZy
b20KKyAgICAgICAgV2ViS2l0U2V0dGluZ3MgdG8gZW5zdXJlIHRoYXQgY2FuUnVuTW9kYWwgcHJv
cGVydHkgb2YgdGhlIFdlYlBhZ2UKKyAgICAgICAgaXMga2VwdCB1cCB0byBkYXRlLiBFbnN1cmUg
dGhhdCBzaWduYWwgaGFuZGxlcnMgZm9yIG1vbml0b3JpbmcKKyAgICAgICAgc2V0dGluZ3MgYXJl
IGRpc2Nvbm5lY3RlZCB3aGVuIHRoZSB3ZWJ2aWV3IGlzIGZpbmFsaXplZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2Vi
Vmlld1NldFNldHRpbmdzKTogQ29ubmVjdCB0byB0aGUgbmV3IHNpZ25hbAorICAgICAgICAnbm90
aWZ5OjphbGxvdy1tb2RhbC1kaWFsb2dzJywgZnJvbSBXZWJLaXRTZXR0aW5ncy4KKyAgICAgICAg
KGFsbG93TW9kYWxEaWFsb2dzQ2hhbmdlZCk6IENhbGxiYWNrIHRvIHVwZGF0ZSBXZWJQYWdlJ3MK
KyAgICAgICAgY2FuUnVuTW9kYWwgcHJvcGVydHkgd2hlbiB1cGRhdGVkIHRocm91Z2ggV2ViS2l0
U2V0dGluZ3MuCisgICAgICAgICh3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2lnbmFs
SGFuZGxlcnMpOiBEaXNjb25uZWN0IHNpZ25hbAorICAgICAgICBoYW5kbGVycyBmb3IgbW9uaXRv
cmluZyBXZWJLaXRTZXR0aW5ncyBwcm9wZXJ0aWVzLgorICAgICAgICAod2Via2l0V2ViVmlld0Zp
bmFsaXplKTogRW5zdXJlIHNpZ25hbCBoYW5kbGVycyBhcmUgZGlzY29ubmVjdGVkLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyk6IERpdHRvLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKworICAgICAgICBBZGQgbmV3IHVuaXQgdGVz
dHMgdG8gY2hlY2sgdGhlICdydW4tYXMtbW9kYWwnIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICAg
IG9ubHkgd2hlbiB0aGUgbmV3IHByb3BlcnR5IGluIFdlYktpdFNldHRpbmdzIGlzIHNldCB0byBU
UlVFLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdBbGxvd01vZGFsRGlhbG9ncyk6IE5ldyB1bml0
IHRlc3QgdG8gY2hlY2sgdGhhdCBtb2RhbAorICAgICAgICBkaWFsb2dzIGFyZSBwcm9wZXJseSBj
cmVhdGVkIGZyb20gSmF2YVNjcmlwdCB3aGVuIGFsbG93ZWQuCisgICAgICAgICh0ZXN0V2ViVmll
d0Rpc2FsbG93TW9kYWxEaWFsb2dzKTogTmV3IHVuaXQgdGVzdCB0byBjaGVjayB0aGF0CisgICAg
ICAgIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBtb2RhbCBkaWFsb2dzIHdoZW4gbm90IGFs
bG93ZWQuCisgICAgICAgIChiZWZvcmVBbGwpOiBBZGQgdGhlIG5ldyB1bml0IHRlc3QuCisKIDIw
MTItMDUtMjMgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBhZGQg
YmFjayB0aGUgYWJpbGl0eSB0byBkaXNhYmxlIGZsZXhib3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAppbmRleCAwMmU4MmIwLi45
ZTI0YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0U2V0dGluZ3MuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJXZWJLaXRQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgiCisjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ2LDYgKzQ3LDcgQEAgc3RydWN0IF9XZWJLaXRTZXR0aW5n
c1ByaXZhdGUgewogICAgIENTdHJpbmcgZmFudGFzeUZvbnRGYW1pbHk7CiAgICAgQ1N0cmluZyBw
aWN0b2dyYXBoRm9udEZhbWlseTsKICAgICBDU3RyaW5nIGRlZmF1bHRDaGFyc2V0OworICAgIGJv
b2wgYWxsb3dNb2RhbERpYWxvZ3M7CiAgICAgYm9vbCB6b29tVGV4dE9ubHk7CiB9OwogCkBAIC0x
MDUsNiArMTA3LDcgQEAgZW51bSB7CiAgICAgUFJPUF9QUklOVF9CQUNLR1JPVU5EUywKICAgICBQ
Uk9QX0VOQUJMRV9XRUJBVURJTywKICAgICBQUk9QX0VOQUJMRV9XRUJHTCwKKyAgICBQUk9QX0FM
TE9XX01PREFMX0RJQUxPR1MsCiAgICAgUFJPUF9aT09NX1RFWFRfT05MWSwKICAgICBQUk9QX0pB
VkFTQ1JJUFRfQ0FOX0FDQ0VTU19DTElQQk9BUkQsCiAgICAgUFJPUF9NRURJQV9QTEFZQkFDS19S
RVFVSVJFU19VU0VSX0dFU1RVUkUsCkBAIC0yMTYsNiArMjE5LDkgQEAgc3RhdGljIHZvaWQgd2Vi
S2l0U2V0dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHUKICAgICBjYXNlIFBST1BfRU5BQkxFX1dFQkdMOgogICAgICAgICB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV93ZWJnbChzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1
ZSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQUxMT1dfTU9EQUxfRElBTE9HUzoK
KyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNldHRpbmdz
LCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UFJPUF9aT09NX1RFWFRfT05MWToKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF96b29tX3Rl
eHRfb25seShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwogICAgICAgICBi
cmVhazsKQEAgLTM0MSw2ICszNDcsOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0dldFBy
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbAogICAgIGNh
c2UgUFJPUF9FTkFCTEVfV0VCR0w6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUs
IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmdsKHNldHRpbmdzKSk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9BTExPV19NT0RBTF9ESUFMT0dTOgorICAgICAgICBnX3ZhbHVl
X3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X21vZGFsX2RpYWxv
Z3Moc2V0dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1pPT01fVEVYVF9P
TkxZOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3Nf
Z2V0X3pvb21fdGV4dF9vbmx5KHNldHRpbmdzKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtODUzLDYg
Kzg2MiwyNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRT
ZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKIAog
ICAgIC8qKgorICAgICAqIFdlYktpdFNldHRpbmdzOmFsbG93LW1vZGFsLWRpYWxvZ3M6CisgICAg
ICoKKyAgICAgKiBEZXRlcm1pbmUgd2hldGhlciBpdCdzIGFsbG93ZWQgdG8gY3JlYXRlIGFuZCBy
dW4gbW9kYWwgZGlhbG9ncworICAgICAqIGZyb20gYSAjV2ViS2l0V2ViVmlldyB0aHJvdWdoIEph
dmFTY3JpcHQgd2l0aAorICAgICAqIDxmdW5jdGlvbj53aW5kb3cuc2hvd01vZGFsRGlhbG9nPC9m
dW5jdGlvbj4uIElmIGl0J3Mgc2V0IHRvCisgICAgICogJUZBTFNFLCB0aGUgYXNzb2NpYXRlZCAj
V2ViS2l0V2ViVmlldyB3b24ndCBiZSBhYmxlIHRvIGNyZWF0ZQorICAgICAqIG5ldyBtb2RhbCBk
aWFsb2dzLCBzbyBub3QgZXZlbiB0aGUgI1dlYktpdFdlYlZpZXc6OmNyZWF0ZQorICAgICAqIHNp
Z25hbCB3aWxsIGJlIGVtaXR0ZWQuCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX0FMTE9XX01PREFMX0RJQUxPR1MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiYWxsb3ctbW9kYWwtZGlhbG9ncyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
KCJBbGxvdyBtb2RhbCBkaWFsb2dzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIGNy
ZWF0ZSBtb2RhbCBkaWFsb2dzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxh
Z3MpKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFNldHRpbmdzOnpvb20tdGV4dC1vbmx5Ogog
ICAgICAqCiAgICAgICogV2hldGhlciAjV2ViS2l0V2ViVmlldzp6b29tLWxldmVsIGFmZmVjdHMg
b25seSB0aGUKQEAgLTk2OSw2ICs5OTYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3Nf
aW5pdChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB2b2lkIHdlYmtpdFNldHRpbmdzQXR0YWNo
U2V0dGluZ3NUb1BhZ2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBXS1BhZ2VSZWYgd2tQYWdl
KQogewogICAgIFdLUGFnZUdyb3VwU2V0UHJlZmVyZW5jZXMoV0tQYWdlR2V0UGFnZUdyb3VwKHdr
UGFnZSksIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgV2ViS2l0Ojp0
b0ltcGwod2tQYWdlKS0+c2V0Q2FuUnVuTW9kYWwoc2V0dGluZ3MtPnByaXYtPmFsbG93TW9kYWxE
aWFsb2dzKTsKIH0KIAogLyoqCkBAIC0yMTg5LDYgKzIyMTcsMzkgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV93ZWJnbChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFu
IGVuYWJsZWQKIH0KIAogLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2Rp
YWxvZ3M6CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAYWxsb3dlZDogVmFs
dWUgdG8gYmUgc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6YWxsb3ctbW9kYWwt
ZGlhbG9ncyBwcm9wZXJ0eS4KKyAqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21v
ZGFsX2RpYWxvZ3MoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBhbGxvd2VkKQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CisK
KyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBp
ZiAocHJpdi0+YWxsb3dNb2RhbERpYWxvZ3MgPT0gYWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcHJpdi0+YWxsb3dNb2RhbERpYWxvZ3MgPSBhbGxvd2VkOworICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJhbGxvdy1tb2RhbC1kaWFsb2dzIik7Cit9CisKKy8q
KgorICogd2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzOgorICogQHNldHRp
bmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgI1dlYktpdFNldHRpbmdzOmFs
bG93LW1vZGFsLWRpYWxvZ3MgcHJvcGVydHkuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgaXQn
cyBhbGxvd2VkIHRvIGNyZWF0ZSBhbmQgcnVuIG1vZGFsIGRpYWxvZ3Mgb3IgJUZBTFNFIG90aGVy
d2lzZS4KKyAqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFs
b2dzKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisgICAgcmV0dXJuIHNldHRp
bmdzLT5wcml2LT5hbGxvd01vZGFsRGlhbG9nczsKK30KKworLyoqCiAgKiB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X3pvb21fdGV4dF9vbmx5OgogICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncwog
ICogQHpvb21fdGV4dF9vbmx5OiBWYWx1ZSB0byBiZSBzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oCmluZGV4IDUzZWJkYTIuLmE4NmQ2
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNl
dHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0
dGluZ3MuaApAQCAtMzA4LDYgKzMwOCwxMyBAQCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV93
ZWJnbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdib29sZWFuICAgICAgICBlbmFibGVkKTsKIAogV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
c2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3MgICAgICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICBhbGxvd2Vk
KTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2Rh
bF9kaWFsb2dzICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5n
cyk7CisKK1dFQktJVF9BUEkgdm9pZAogd2Via2l0X3NldHRpbmdzX3NldF96b29tX3RleHRfb25s
eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnYm9vbGVhbiAgICAgICAgem9vbV90ZXh0X29ubHkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggOWY3
OGM5Yy4uOTk5MTBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMTQ0LDYgKzE0NCwxMSBAQCBzdGF0aWMgdm9pZCBy
dW5PcGVuUGFuZWwoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLT3BlblBhbmVs
UGFyYW1ldGVycwogICAgIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV0VCS0lU
X1dFQl9WSUVXKGNsaWVudEluZm8pLCByZXF1ZXN0LmdldCgpKTsKIH0KIAorc3RhdGljIHZvaWQg
cnVuTW9kYWwoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
d2Via2l0V2ViVmlld1J1bkFzTW9kYWwoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pKTsKK30K
Kwogdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewog
ICAgIFdLUGFnZVVJQ2xpZW50IHdrVUlDbGllbnQgPSB7CkBAIC0xODQsNyArMTg5LDcgQEAgdm9p
ZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICAw
LCAvLyBkcmF3SGVhZGVyCiAgICAgICAgIDAsIC8vIGRyYXdGb290ZXIKICAgICAgICAgcHJpbnRG
cmFtZSwKLSAgICAgICAgMCwgLy8gcnVuTW9kYWwKKyAgICAgICAgcnVuTW9kYWwsCiAgICAgICAg
IDAsIC8vIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQogICAgICAgICAwLCAvLyBz
YXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyCiAgICAgICAgIDAsIC8vIHNob3VsZEludGVy
cnVwdEphdmFTY3JpcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNjVkYWI2ZS4uNTkwZDA2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTYwLDYg
KzYwLDcgQEAgZW51bSB7CiAKICAgICBDUkVBVEUsCiAgICAgUkVBRFlfVE9fU0hPVywKKyAgICBS
VU5fQVNfTU9EQUwsCiAgICAgQ0xPU0UsCiAKICAgICBTQ1JJUFRfRElBTE9HLApAQCAtMTEyLDYg
KzExMyw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIEdSZWZQdHI8V2Vi
S2l0U2V0dGluZ3M+IHNldHRpbmdzOwogICAgIEdSZWZQdHI8V2ViS2l0V2luZG93UHJvcGVydGll
cz4gd2luZG93UHJvcGVydGllczsKIAorICAgIEdSZWZQdHI8R01haW5Mb29wPiBtb2RhbExvb3A7
CisKICAgICBHUmVmUHRyPFdlYktpdEhpdFRlc3RSZXN1bHQ+IG1vdXNlVGFyZ2V0SGl0VGVzdFJl
c3VsdDsKICAgICB1bnNpZ25lZCBtb3VzZVRhcmdldE1vZGlmaWVyczsKIApAQCAtMTk1LDYgKzE5
OCwxNCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0RlY2lkZVBvbGljeShXZWJLaXRX
ZWJWaWV3KiwgV2ViS2l0UG9saWN5RGVjaXNpb24qCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKK3N0
YXRpYyB2b2lkIGFsbG93TW9kYWxEaWFsb2dzQ2hhbmdlZChXZWJLaXRTZXR0aW5ncyogc2V0dGlu
Z3MsIEdQYXJhbVNwZWMqLCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIFdlYlBhZ2VQ
cm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFT
RSh3ZWJWaWV3KSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+
c2V0Q2FuUnVuTW9kYWwod2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNl
dHRpbmdzKSk7Cit9CisKIHN0YXRpYyB2b2lkIHpvb21UZXh0T25seUNoYW5nZWQoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzLCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsK
ICAgICBXS1BhZ2VSZWYgd2tQYWdlID0gdG9BUEkod2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdF
QktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKSk7CkBAIC0yMDgsOSArMjE5LDE4IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdFdlYlZpZXdTZXRTZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBX
ZWJLaXRTZXR0aW5ncyogc2V0CiB7CiAgICAgd2ViVmlldy0+cHJpdi0+c2V0dGluZ3MgPSBzZXR0
aW5nczsKICAgICB3ZWJraXRTZXR0aW5nc0F0dGFjaFNldHRpbmdzVG9QYWdlKHdlYlZpZXctPnBy
aXYtPnNldHRpbmdzLmdldCgpLCB3a1BhZ2UpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2V0dGlu
Z3MsICJub3RpZnk6OmFsbG93LW1vZGFsLWRpYWxvZ3MiLCBHX0NBTExCQUNLKGFsbG93TW9kYWxE
aWFsb2dzQ2hhbmdlZCksIHdlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2V0dGluZ3Ms
ICJub3RpZnk6Onpvb20tdGV4dC1vbmx5IiwgR19DQUxMQkFDSyh6b29tVGV4dE9ubHlDaGFuZ2Vk
KSwgd2ViVmlldyk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0U2V0
dGluZ3NTaWduYWxIYW5kbGVycyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIFdlYktp
dFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYlZpZXctPnByaXYtPnNldHRpbmdzLmdldCgpOworICAg
IGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXR0aW5ncywgcmVpbnRlcnBy
ZXRfY2FzdDxncG9pbnRlcj4oYWxsb3dNb2RhbERpYWxvZ3NDaGFuZ2VkKSwgd2ViVmlldyk7Cisg
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHNldHRpbmdzLCByZWludGVy
cHJldF9jYXN0PGdwb2ludGVyPih6b29tVGV4dE9ubHlDaGFuZ2VkKSwgd2ViVmlldyk7CisKK30K
Kwogc3RhdGljIHZvaWQgZmlsZUNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKEd0a0RpYWxv
ZyogZGlhbG9nLCBnaW50IHJlc3BvbnNlSUQsIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCogcmVx
dWVzdCkKIHsKICAgICBHUmVmUHRyPFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdD4gYWRvcHRlZFJl
cXVlc3QgPSBhZG9wdEdSZWYocmVxdWVzdCk7CkBAIC0zMjQsOCArMzQ0LDE2IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJ
ZCwgR1ZhbHVlKiB2YWx1CiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RmluYWxpemUoR09iamVj
dCogb2JqZWN0KQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dF
Ql9WSUVXKG9iamVjdCktPnByaXY7CisKICAgICBpZiAocHJpdi0+amF2YXNjcmlwdEdsb2JhbENv
bnRleHQpCiAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UocHJpdi0+amF2YXNjcmlwdEds
b2JhbENvbnRleHQpOworCisgICAgLy8gRm9yIG1vZGFsIGRpYWxvZ3MsIG1ha2Ugc3VyZSB0aGUg
bWFpbiBsb29wIGlzIHN0b3BwZWQgd2hlbiBmaW5hbGl6aW5nIHRoZSB3ZWJWaWV3LgorICAgIGlm
IChwcml2LT5tb2RhbExvb3AgJiYgZ19tYWluX2xvb3BfaXNfcnVubmluZyhwcml2LT5tb2RhbExv
b3AuZ2V0KCkpKQorICAgICAgICBnX21haW5fbG9vcF9xdWl0KHByaXYtPm1vZGFsTG9vcC5nZXQo
KSk7CisKKyAgICB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2lnbmFsSGFuZGxlcnMo
V0VCS0lUX1dFQl9WSUVXKG9iamVjdCkpOworCiAgICAgcHJpdi0+fldlYktpdFdlYlZpZXdQcml2
YXRlKCk7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcykt
PmZpbmFsaXplKG9iamVjdCk7CiB9CkBAIC01NzEsNiArNTk5LDI3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNz
KQogICAgICAgICAgICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUQsCiAg
ICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMCk7CiAKKyAgICAgLyoqCisgICAgICog
V2ViS2l0V2ViVmlldzo6cnVuLWFzLW1vZGFsOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJL
aXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqCisgICAgICog
RW1pdHRlZCBhZnRlciAjV2ViS2l0V2ViVmlldzo6cmVhZHktdG8tc2hvdyBvbiB0aGUgbmV3bHkK
KyAgICAgKiBjcmVhdGVkICNXZWJLaXRXZWJWaWV3IHdoZW4gSmF2YVNjcmlwdCBjb2RlIGNhbGxz
CisgICAgICogPGZ1bmN0aW9uPndpbmRvdy5zaG93TW9kYWxEaWFsb2c8L2Z1bmN0aW9uPi4gVGhl
IHB1cnBvc2Ugb2YKKyAgICAgKiB0aGlzIHNpZ25hbCBpcyB0byBhbGxvdyB0aGUgY2xpZW50IGFw
cGxpY2F0aW9uIHRvIHByZXBhcmUgdGhlCisgICAgICogbmV3IHZpZXcgdG8gYmVoYXZlIGFzIG1v
ZGFsLiBPbmNlIHRoZSBzaWduYWwgaXMgZW1pdHRlZCBhIG5ldworICAgICAqIG1haW5sb29wIHdp
bGwgYmUgcnVuIHRvIGJsb2NrIHVzZXIgaW50ZXJhY3Rpb24gaW4gdGhlIHBhcmVudAorICAgICAq
ICNXZWJLaXRXZWJWaWV3IHVudGlsIHRoZSBuZXcgZGlhbG9nIGlzIGNsb3NlZC4KKyAgICAgKi8K
KyAgICBzaWduYWxzW1JVTl9BU19NT0RBTF0gPQorICAgICAgICAgICAgZ19zaWduYWxfbmV3KCJy
dW4tYXMtbW9kYWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNT
KHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xB
U1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZp
ZXdDbGFzcywgcnVuX2FzX21vZGFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19WT0lELAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKwogICAgIC8qKgogICAg
ICAqIFdlYktpdFdlYlZpZXc6OmNsb3NlOgogICAgICAqIEB3ZWJWaWV3OiB0aGUgI1dlYktpdFdl
YlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCkBAIC05MzcsNiArOTg2LDE2IEBA
IHZvaWQgd2Via2l0V2ViVmlld1JlYWR5VG9TaG93UGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tSRUFEWV9UT19TSE9XXSwgMCwg
TlVMTCk7CiB9CiAKK3ZvaWQgd2Via2l0V2ViVmlld1J1bkFzTW9kYWwoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKK3sKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbUlVOX0FTX01P
REFMXSwgMCwgTlVMTCk7CisKKyAgICB3ZWJWaWV3LT5wcml2LT5tb2RhbExvb3AgPSBhZG9wdEdS
ZWYoZ19tYWluX2xvb3BfbmV3KDAsIEZBTFNFKSk7CisgICAgR0RLX1RIUkVBRFNfRU5URVIoKTsK
KyAgICBnX21haW5fbG9vcF9ydW4od2ViVmlldy0+cHJpdi0+bW9kYWxMb29wLmdldCgpKTsKKyAg
ICBHREtfVEhSRUFEU19MRUFWRSgpOworfQorCiB2b2lkIHdlYmtpdFdlYlZpZXdDbG9zZVBhZ2Uo
V2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNp
Z25hbHNbQ0xPU0VdLCAwLCBOVUxMKTsKQEAgLTE1MzMsNyArMTU5Miw3IEBAIHZvaWQgd2Via2l0
X3dlYl92aWV3X3NldF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRTZXR0
aW5ncyogc2V0dGluCiAgICAgaWYgKHdlYlZpZXctPnByaXYtPnNldHRpbmdzID09IHNldHRpbmdz
KQogICAgICAgICByZXR1cm47CiAKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2Z1bmMod2ViVmlldy0+cHJpdi0+c2V0dGluZ3MuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3Bv
aW50ZXI+KHpvb21UZXh0T25seUNoYW5nZWQpLCB3ZWJWaWV3KTsKKyAgICB3ZWJraXRXZWJWaWV3
RGlzY29ubmVjdFNldHRpbmdzU2lnbmFsSGFuZGxlcnMod2ViVmlldyk7CiAgICAgd2Via2l0V2Vi
Vmlld1NldFNldHRpbmdzKHdlYlZpZXcsIHNldHRpbmdzLCB0b0FQSSh3ZWJraXRXZWJWaWV3QmFz
ZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykpKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA0ZjVm
ZTE4Li41ZTRjYmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5oCkBAIC0xMzUsNiArMTM1LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3
Q2xhc3MgewogCiAgICAgR3RrV2lkZ2V0ICooKiBjcmVhdGUpICAgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAgICAgdm9pZCAgICAgICAoKiByZWFk
eV90b19zaG93KSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7
CisgICAgdm9pZCAgICAgICAoKiBydW5fYXNfbW9kYWwpICAgICAgICAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAgICAgdm9pZCAgICAgICAoKiBjbG9zZSkgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKICAgICBn
Ym9vbGVhbiAgICgqIHNjcmlwdF9kaWFsb2cpICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgKndlYl92aWV3LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggNzE3ZDJjMy4uMWYwM2EzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3UHJpdmF0ZS5oCkBAIC0zOCw2ICszOCw3IEBAIHZvaWQgd2Via2l0V2ViVmlld1NldFRpdGxl
KFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdVcGRh
dGVVUkkoV2ViS2l0V2ViVmlldyopOwogV0tQYWdlUmVmIHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQ
YWdlKFdlYktpdFdlYlZpZXcqLCBXS0RpY3Rpb25hcnlSZWYgd2tXaW5kb3dGZWF0dXJlcyk7CiB2
b2lkIHdlYmtpdFdlYlZpZXdSZWFkeVRvU2hvd1BhZ2UoV2ViS2l0V2ViVmlldyopOwordm9pZCB3
ZWJraXRXZWJWaWV3UnVuQXNNb2RhbChXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdDbG9zZVBhZ2UoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNj
cmlwdEFsZXJ0KFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlKTsKIGJvb2wg
d2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDb25maXJtKFdlYktpdFdlYlZpZXcqLCBjb25zdCBD
U3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4IDQ2MTZkMTAu
LjJjZWJkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFNldHRpbmdzLmNwcApAQCAtMTk5LDYgKzE5OSwxMSBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0dGluZ3MoVGVzdCosIGdjb25zdHBvaW50ZXIpCiAg
ICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfd2ViZ2woc2V0dGluZ3MsIFRSVUUpOwogICAg
IGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmdsKHNldHRpbmdzKSk7CiAK
KyAgICAvLyBBbGxvdyBNb2RhbCBEaWFsb2dzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAg
Z19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyhzZXR0aW5n
cykpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyhzZXR0aW5n
cywgVFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9k
aWFsb2dzKHNldHRpbmdzKSk7CisKICAgICAvLyBab29tIHRleHQgb25seSBpcyBkaXNhYmxlZCBi
eSBkZWZhdWx0LgogICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9v
bmx5KHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF96b29tX3RleHRfb25seShz
ZXR0aW5ncywgVFJVRSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZTRjNjBiZS4uZGI3
OWNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTAxLDYgKzEwMSw3IEBAIHB1Ymxp
YzoKICAgICBlbnVtIFdlYlZpZXdFdmVudHMgewogICAgICAgICBDcmVhdGUsCiAgICAgICAgIFJl
YWR5VG9TaG93LAorICAgICAgICBSdW5Bc01vZGFsLAogICAgICAgICBDbG9zZQogICAgIH07CiAK
QEAgLTE3Niw0NiArMTc3LDE5IEBAIHB1YmxpYzoKICAgICAgICAgdGVzdC0+bV93aW5kb3dQcm9w
ZXJ0aWVzQ2hhbmdlZC5hZGQoZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBhcmFtU3BlYykpOwogICAg
IH0KIAotICAgIHN0YXRpYyB2b2lkIHZpZXdDbG9zZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBV
SUNsaWVudFRlc3QqIHRlc3QpCisgICAgc3RhdGljIEd0a1dpZGdldCogdmlld0NyZWF0ZUNhbGxi
YWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFVJQ2xpZW50VGVzdCogdGVzdCkKICAgICB7Ci0g
ICAgICAgIGdfYXNzZXJ0KHdlYlZpZXcgIT0gdGVzdC0+bV93ZWJWaWV3KTsKLQotICAgICAgICB0
ZXN0LT5tX3dlYlZpZXdFdmVudHMuYXBwZW5kKENsb3NlKTsKLSAgICAgICAgZ19vYmplY3RfdW5y
ZWYod2ViVmlldyk7Ci0KLSAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29w
KTsKKyAgICAgICAgcmV0dXJuIHRlc3QtPnZpZXdDcmVhdGUod2ViVmlldyk7CiAgICAgfQogCi0g
ICAgc3RhdGljIHZvaWQgdmlld1JlYWR5VG9TaG93KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFVJ
Q2xpZW50VGVzdCogdGVzdCkKKyAgICBzdGF0aWMgdm9pZCB2aWV3UmVhZHlUb1Nob3dDYWxsYmFj
ayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBVSUNsaWVudFRlc3QqIHRlc3QpCiAgICAgewotICAg
ICAgICBnX2Fzc2VydCh3ZWJWaWV3ICE9IHRlc3QtPm1fd2ViVmlldyk7Ci0KLSAgICAgICAgV2Vi
S2l0V2luZG93UHJvcGVydGllcyogd2luZG93UHJvcGVydGllcyA9IHdlYmtpdF93ZWJfdmlld19n
ZXRfd2luZG93X3Byb3BlcnRpZXMod2ViVmlldyk7Ci0gICAgICAgIGdfYXNzZXJ0KHdpbmRvd1By
b3BlcnRpZXMpOwotICAgICAgICBXaW5kb3dQcm9wZXJ0aWVzKHdpbmRvd1Byb3BlcnRpZXMpLmFz
c2VydEVxdWFsKHRlc3QtPm1fd2luZG93UHJvcGVydGllcyk7Ci0KLSAgICAgICAgdGVzdC0+bV93
ZWJWaWV3RXZlbnRzLmFwcGVuZChSZWFkeVRvU2hvdyk7CisgICAgICAgIHRlc3QtPnZpZXdSZWFk
eVRvU2hvdyh3ZWJWaWV3KTsKICAgICB9CiAKLSAgICBzdGF0aWMgR3RrV2lkZ2V0KiB2aWV3Q3Jl
YXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFVJQ2xpZW50VGVzdCogdGVzdCkKKyAgICBzdGF0
aWMgdm9pZCB2aWV3Q2xvc2VDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBVSUNsaWVu
dFRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ID09IHRlc3QtPm1f
d2ViVmlldyk7Ci0KLSAgICAgICAgR3RrV2lkZ2V0KiBuZXdXZWJWaWV3ID0gd2Via2l0X3dlYl92
aWV3X25ld193aXRoX2NvbnRleHQod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcp
KTsKLSAgICAgICAgZ19vYmplY3RfcmVmX3NpbmsobmV3V2ViVmlldyk7Ci0KLSAgICAgICAgdGVz
dC0+bV93ZWJWaWV3RXZlbnRzLmFwcGVuZChDcmVhdGUpOwotCi0gICAgICAgIFdlYktpdFdpbmRv
d1Byb3BlcnRpZXMqIHdpbmRvd1Byb3BlcnRpZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRv
d19wcm9wZXJ0aWVzKFdFQktJVF9XRUJfVklFVyhuZXdXZWJWaWV3KSk7Ci0gICAgICAgIGdfYXNz
ZXJ0KHdpbmRvd1Byb3BlcnRpZXMpOwotICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0
ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdpbmRvd1Byb3BlcnRpZXMpKTsKLSAgICAgICAg
dGVzdC0+bV93aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZC5jbGVhcigpOwotICAgICAgICBnX3NpZ25h
bF9jb25uZWN0KHdpbmRvd1Byb3BlcnRpZXMsICJub3RpZnkiLCBHX0NBTExCQUNLKHdpbmRvd1By
b3BlcnRpZXNOb3RpZnlDYWxsYmFjayksIHRlc3QpOwotCi0gICAgICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobmV3V2ViVmlldywgInJlYWR5LXRvLXNob3ciLCBHX0NBTExCQUNLKHZpZXdSZWFkeVRvU2hv
dyksIHRlc3QpOwotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJjbG9zZSIs
IEdfQ0FMTEJBQ0sodmlld0Nsb3NlKSwgdGVzdCk7Ci0KLSAgICAgICAgcmV0dXJuIG5ld1dlYlZp
ZXc7CisgICAgICAgIHRlc3QtPnZpZXdDbG9zZSh3ZWJWaWV3KTsKICAgICB9CiAKICAgICB2b2lk
IHNjcmlwdEFsZXJ0KFdlYktpdFNjcmlwdERpYWxvZyogZGlhbG9nKQpAQCAtMjg0LDcgKzI1OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX21vdXNlVGFyZ2V0TW9kaWZpZXJzKDApCiAgICAgewog
ICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19h
dXRvbWF0aWNhbGx5KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MobV93ZWJWaWV3KSwgVFJV
RSk7Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiY3JlYXRlIiwgR19DQUxM
QkFDSyh2aWV3Q3JlYXRlKSwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJW
aWV3LCAiY3JlYXRlIiwgR19DQUxMQkFDSyh2aWV3Q3JlYXRlQ2FsbGJhY2spLCB0aGlzKTsKICAg
ICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJzY3JpcHQtZGlhbG9nIiwgR19DQUxM
QkFDSyhzY3JpcHREaWFsb2cpLCB0aGlzKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dl
YlZpZXcsICJtb3VzZS10YXJnZXQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sobW91c2VUYXJnZXRDaGFu
Z2VkKSwgdGhpcyk7CiAgICAgfQpAQCAtMzExLDYgKzI4NSw0OCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX21vdXNlVGFyZ2V0SGl0VGVzdFJlc3VsdC5nZXQoKTsKICAgICB9CiAKKyAgICB2
aXJ0dWFsIEd0a1dpZGdldCogdmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorICAg
IHsKKyAgICAgICAgZ19hc3NlcnQod2ViVmlldyA9PSBtX3dlYlZpZXcpOworCisgICAgICAgIEd0
a1dpZGdldCogbmV3V2ViVmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHdl
YmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3KSk7CisgICAgICAgIGdfb2JqZWN0X3Jl
Zl9zaW5rKG5ld1dlYlZpZXcpOworCisgICAgICAgIG1fd2ViVmlld0V2ZW50cy5hcHBlbmQoQ3Jl
YXRlKTsKKworICAgICAgICBXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzKiB3aW5kb3dQcm9wZXJ0aWVz
ID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfcHJvcGVydGllcyhXRUJLSVRfV0VCX1ZJRVco
bmV3V2ViVmlldykpOworICAgICAgICBnX2Fzc2VydCh3aW5kb3dQcm9wZXJ0aWVzKTsKKyAgICAg
ICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3aW5kb3dQ
cm9wZXJ0aWVzKSk7CisgICAgICAgIG1fd2luZG93UHJvcGVydGllc0NoYW5nZWQuY2xlYXIoKTsK
KworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvd1Byb3BlcnRpZXMsICJub3RpZnkiLCBH
X0NBTExCQUNLKHdpbmRvd1Byb3BlcnRpZXNOb3RpZnlDYWxsYmFjayksIHRoaXMpOworICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJyZWFkeS10by1zaG93IiwgR19DQUxMQkFD
Syh2aWV3UmVhZHlUb1Nob3dDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnX3NpZ25hbF9jb25u
ZWN0KG5ld1dlYlZpZXcsICJjbG9zZSIsIEdfQ0FMTEJBQ0sodmlld0Nsb3NlQ2FsbGJhY2spLCB0
aGlzKTsKKworICAgICAgICByZXR1cm4gbmV3V2ViVmlldzsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgdmlld1JlYWR5VG9TaG93KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCisgICAgeworICAg
ICAgICBnX2Fzc2VydCh3ZWJWaWV3ICE9IG1fd2ViVmlldyk7CisKKyAgICAgICAgV2ViS2l0V2lu
ZG93UHJvcGVydGllcyogd2luZG93UHJvcGVydGllcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2lu
ZG93X3Byb3BlcnRpZXMod2ViVmlldyk7CisgICAgICAgIGdfYXNzZXJ0KHdpbmRvd1Byb3BlcnRp
ZXMpOworICAgICAgICBXaW5kb3dQcm9wZXJ0aWVzKHdpbmRvd1Byb3BlcnRpZXMpLmFzc2VydEVx
dWFsKG1fd2luZG93UHJvcGVydGllcyk7CisKKyAgICAgICAgbV93ZWJWaWV3RXZlbnRzLmFwcGVu
ZChSZWFkeVRvU2hvdyk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpZXdDbG9zZShXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQod2ViVmlldyAhPSBt
X3dlYlZpZXcpOworCisgICAgICAgIG1fd2ViVmlld0V2ZW50cy5hcHBlbmQoQ2xvc2UpOworICAg
ICAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKKworICAgICAgICBnX21haW5fbG9vcF9xdWl0
KG1fbWFpbkxvb3ApOworICAgIH0KKwogICAgIFZlY3RvcjxXZWJWaWV3RXZlbnRzPiBtX3dlYlZp
ZXdFdmVudHM7CiAgICAgV2ViS2l0U2NyaXB0RGlhbG9nVHlwZSBtX3NjcmlwdERpYWxvZ1R5cGU7
CiAgICAgYm9vbCBtX3NjcmlwdERpYWxvZ0NvbmZpcm1lZDsKQEAgLTM0MCw2ICszNTYsNjIgQEAg
c3RhdGljIGdib29sZWFuIGNoZWNrTWltZVR5cGVGb3JGaWx0ZXIoR3RrRmlsZUZpbHRlciogZmls
dGVyLCBjb25zdCBnY2hhciogbWltZVQKICAgICByZXR1cm4gZ3RrX2ZpbGVfZmlsdGVyX2ZpbHRl
cihmaWx0ZXIsICZmaWx0ZXJJbmZvKTsKIH0KIAorY2xhc3MgTW9kYWxEaWFsb2dzVGVzdDogcHVi
bGljIFVJQ2xpZW50VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShN
b2RhbERpYWxvZ3NUZXN0KTsKKworICAgIHN0YXRpYyB2b2lkIGRpYWxvZ1J1bkFzTW9kYWxDYWxs
YmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBNb2RhbERpYWxvZ3NUZXN0KiB0ZXN0KQorICAg
IHsKKyAgICAgICAgZ19hc3NlcnQod2ViVmlldyAhPSB0ZXN0LT5tX3dlYlZpZXcpOworICAgICAg
ICB0ZXN0LT5tX3dlYlZpZXdFdmVudHMuYXBwZW5kKFJ1bkFzTW9kYWwpOworICAgIH0KKworICAg
IEd0a1dpZGdldCogdmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorICAgIHsKKyAg
ICAgICAgZ19hc3NlcnQod2ViVmlldyA9PSBtX3dlYlZpZXcpOworCisgICAgICAgIEd0a1dpZGdl
dCogbmV3V2ViVmlldyA9IFVJQ2xpZW50VGVzdDo6dmlld0NyZWF0ZSh3ZWJWaWV3KTsKKyAgICAg
ICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAicnVuLWFzLW1vZGFsIiwgR19DQUxMQkFD
SyhkaWFsb2dSdW5Bc01vZGFsQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuIG5ld1dl
YlZpZXc7CisgICAgfQorCisgICAgdm9pZCB2aWV3UmVhZHlUb1Nob3coV2ViS2l0V2ViVmlldyog
d2ViVmlldykKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0KHdlYlZpZXcgIT0gbV93ZWJWaWV3KTsK
KyAgICAgICAgbV93ZWJWaWV3RXZlbnRzLmFwcGVuZChSZWFkeVRvU2hvdyk7CisgICAgfQorfTsK
Kworc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBbGxvd01vZGFsRGlhbG9ncyhNb2RhbERpYWxvZ3NU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+bV93ZWJWaWV3KTsKKyAgICB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3Moc2V0dGluZ3MsIFRSVUUpOwor
CisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5IG9ubG9hZD1cIndpbmRvdy5zaG93TW9k
YWxEaWFsb2coJ2RhdGE6dGV4dC9odG1sLDxodG1sPjxib2R5Lz48c2NyaXB0PndpbmRvdy5jbG9z
ZSgpOzwvc2NyaXB0PjwvaHRtbD4nKVwiPjwvYm9keT48L2h0bWw+IiwgMCk7CisgICAgdGVzdC0+
d2FpdFVudGlsTWFpbkxvb3BGaW5pc2hlcygpOworCisgICAgVmVjdG9yPFVJQ2xpZW50VGVzdDo6
V2ViVmlld0V2ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fd2ViVmlld0V2ZW50czsKKyAgICBnX2Fz
c2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDQpOworICAgIGdfYXNzZXJ0X2NtcGludChl
dmVudHNbMF0sID09LCBVSUNsaWVudFRlc3Q6OkNyZWF0ZSk7CisgICAgZ19hc3NlcnRfY21waW50
KGV2ZW50c1sxXSwgPT0sIFVJQ2xpZW50VGVzdDo6UmVhZHlUb1Nob3cpOworICAgIGdfYXNzZXJ0
X2NtcGludChldmVudHNbMl0sID09LCBVSUNsaWVudFRlc3Q6OlJ1bkFzTW9kYWwpOworICAgIGdf
YXNzZXJ0X2NtcGludChldmVudHNbM10sID09LCBVSUNsaWVudFRlc3Q6OkNsb3NlKTsKK30KKwor
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdEaXNhbGxvd01vZGFsRGlhbG9ncyhNb2RhbERpYWxvZ3NU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+bV93ZWJWaWV3KTsKKyAgICB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3Moc2V0dGluZ3MsIEZBTFNFKTsK
KworICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keSBvbmxvYWQ9XCJ3aW5kb3cuc2hvd01v
ZGFsRGlhbG9nKCdkYXRhOnRleHQvaHRtbCw8aHRtbD48Ym9keS8+PHNjcmlwdD53aW5kb3cuY2xv
c2UoKTs8L3NjcmlwdD48L2h0bWw+JylcIj48L2JvZHk+PC9odG1sPiIsIDApOworICAgIC8vIFdl
IG5lZWQgdG8gdXNlIGEgdGltZW91dCBoZXJlIGJlY2F1c2UgdGhlIHZpZXdDbG9zZSgpIGZ1bmN0
aW9uCisgICAgLy8gd29uJ3QgZXZlciBiZSBjYWxsZWQgYXMgdGhlIGRpYWxvZyB3b24ndCBiZSBj
cmVhdGVkLgorICAgIHRlc3QtPndhaXQoMSk7CisKKyAgICBWZWN0b3I8VUlDbGllbnRUZXN0OjpX
ZWJWaWV3RXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+bV93ZWJWaWV3RXZlbnRzOworICAgIGdfYXNz
ZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgMCk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBodG1sT25Mb2FkRm9ybWF0ID0gIjxodG1sPjxi
b2R5IG9uTG9hZD1cIiVzXCI+PC9ib2R5PjwvaHRtbD4iOwpAQCAtNzEzLDYgKzc4NSw4IEBAIHZv
aWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNl
dHRpbmdzIiwgdGVzdFdlYlZpZXdTZXR0aW5ncyk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJyZXBsYWNlLWNvbnRlbnQiLCB0ZXN0V2ViVmlld1JlcGxhY2VDb250ZW50
KTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJjcmVhdGUtcmVhZHkt
Y2xvc2UiLCB0ZXN0V2ViVmlld0NyZWF0ZVJlYWR5Q2xvc2UpOworICAgIE1vZGFsRGlhbG9nc1Rl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhbGxvdy1tb2RhbC1kaWFsb2dzIiwgdGVzdFdlYlZp
ZXdBbGxvd01vZGFsRGlhbG9ncyk7CisgICAgTW9kYWxEaWFsb2dzVGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgImRpc2FsbG93LW1vZGFsLWRpYWxvZ3MiLCB0ZXN0V2ViVmlld0Rpc2FsbG93TW9k
YWxEaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJqYXZh
c2NyaXB0LWRpYWxvZ3MiLCB0ZXN0V2ViVmlld0phdmFTY3JpcHREaWFsb2dzKTsKICAgICBVSUNs
aWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ3aW5kb3ctcHJvcGVydGllcyIsIHRlc3RX
ZWJWaWV3V2luZG93UHJvcGVydGllcyk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAibW91c2UtdGFyZ2V0IiwgdGVzdFdlYlZpZXdNb3VzZVRhcmdldCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGZiN2Y0ZmIuLjgzNzI4NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNzUsNiAr
MTc1LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCogcGFnZUNsaWVu
dCwgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHAKICAgICAsIG1fZ2FwQmV0d2VlblBhZ2Vz
KDApCiAgICAgLCBtX2lzVmFsaWQodHJ1ZSkKICAgICAsIG1faXNDbG9zZWQoZmFsc2UpCisgICAg
LCBtX2NhblJ1bk1vZGFsKGZhbHNlKQogICAgICwgbV9pc0luUHJpbnRpbmdNb2RlKGZhbHNlKQog
ICAgICwgbV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbihmYWxzZSkKICAgICAsIG1faW5E
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZShmYWxzZSkKQEAgLTI5Miw3ICsyOTMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVVJQ2xpZW50KGNvbnN0IFdLUGFnZVVJQ2xpZW50KiBjbGll
bnQpCiAgICAgbV91aUNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CiAKICAgICBwcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bChtX3VpQ2xpZW50LmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpKSwgbV9wYWdlSUQp
OwotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuTW9kYWwo
bV91aUNsaWVudC5jYW5SdW5Nb2RhbCgpKSwgbV9wYWdlSUQpOworICAgIHNldENhblJ1bk1vZGFs
KG1fdWlDbGllbnQuY2FuUnVuTW9kYWwoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0
aWFsaXplRmluZENsaWVudChjb25zdCBXS1BhZ2VGaW5kQ2xpZW50KiBjbGllbnQpCkBAIC0zNDU3
LDcgKzM0NTgsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3Jl
YXRpb25QYXJhbWV0ZXJzKCkgY29uc3QKICAgICBwYXJhbWV0ZXJzLnNlc3Npb25TdGF0ZSA9IFNl
c3Npb25TdGF0ZShtX2JhY2tGb3J3YXJkTGlzdC0+ZW50cmllcygpLCBtX2JhY2tGb3J3YXJkTGlz
dC0+Y3VycmVudEluZGV4KCkpOwogICAgIHBhcmFtZXRlcnMuaGlnaGVzdFVzZWRCYWNrRm9yd2Fy
ZEl0ZW1JRCA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmhpZ2hlZFVzZWRJdGVtSUQoKTsKICAg
ICBwYXJhbWV0ZXJzLmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCA9IG1fdWlDbGllbnQu
Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCk7Ci0gICAgcGFyYW1ldGVycy5jYW5SdW5N
b2RhbCA9IG1fdWlDbGllbnQuY2FuUnVuTW9kYWwoKTsKKyAgICBwYXJhbWV0ZXJzLmNhblJ1bk1v
ZGFsID0gbV9jYW5SdW5Nb2RhbDsKICAgICBwYXJhbWV0ZXJzLmRldmljZVNjYWxlRmFjdG9yID0g
bV9pbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcjsKICAgICBwYXJhbWV0ZXJzLm1lZGlhVm9sdW1l
ID0gbV9tZWRpYVZvbHVtZTsKIApAQCAtMzY1Niw2ICszNjU3LDIzIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKICAgICBwcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShpdGVt
SUQpLCBtX3BhZ2VJRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRDYW5SdW5Nb2RhbChi
b29sIGNhblJ1bk1vZGFsKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBJdCdzIG9ubHkgcG9zc2libGUgdG8gY2hhbmdlIHRoZSBzdGF0ZSBmb3IgYSBX
ZWJQYWdlIHdoaWNoCisgICAgLy8gYWxyZWFkeSBxdWFsaWZpZXMgZm9yIHJ1bm5pbmcgbW9kYWwg
Y2hpbGQgd2ViIHBhZ2VzLCBvdGhlcndpc2UKKyAgICAvLyB0aGVyZSdzIG5vIG90aGVyIHBvc3Np
YmlsaXR5IHRoYW4gbm90IGFsbG93aW5nIGl0LgorICAgIG1fY2FuUnVuTW9kYWwgPSBtX3VpQ2xp
ZW50LmNhblJ1bk1vZGFsKCkgJiYgY2FuUnVuTW9kYWw7CisgICAgcHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5Nb2RhbChtX2NhblJ1bk1vZGFsKSwgbV9wYWdlSUQp
OworfQorCitib29sIFdlYlBhZ2VQcm94eTo6Y2FuUnVuTW9kYWwoKQoreworICAgIHJldHVybiBp
c1ZhbGlkKCkgPyBtX2NhblJ1bk1vZGFsIDogZmFsc2U7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5
OjpiZWdpblByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHBy
aW50SW5mbykKIHsKICAgICBpZiAobV9pc0luUHJpbnRpbmdNb2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDcyZDQ2OTUuLjc1NDEyOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTYxNiw2ICs2MTYsOSBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlQbHVnSUQoKSBjb25zdCB7IHJldHVybiBtX2FjY2Vz
c2liaWxpdHlQbHVnSUQ7IH0KICNlbmRpZgogCisgICAgdm9pZCBzZXRDYW5SdW5Nb2RhbChib29s
KTsKKyAgICBib29sIGNhblJ1bk1vZGFsKCk7CisKICAgICB2b2lkIGJlZ2luUHJpbnRpbmcoV2Vi
RnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYpOwogICAgIHZvaWQgZW5kUHJpbnRpbmcoKTsK
ICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQ
cmludEluZm8mLCBQYXNzUmVmUHRyPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4pOwpAQCAtMTAxOSw2
ICsxMDIyLDkgQEAgcHJpdmF0ZToKICAgICAvLyBXaGV0aGVyIFdlYlBhZ2VQcm94eTo6Y2xvc2Uo
KSBoYXMgYmVlbiBjYWxsZWQgb24gdGhpcyBwYWdlLgogICAgIGJvb2wgbV9pc0Nsb3NlZDsKIAor
ICAgIC8vIFdoZXRoZXIgaXQgY2FuIHJ1biBtb2RhbCBjaGlsZCB3ZWIgcGFnZXMuCisgICAgYm9v
bCBtX2NhblJ1bk1vZGFsOworCiAgICAgYm9vbCBtX2lzSW5QcmludGluZ01vZGU7CiAgICAgYm9v
bCBtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uOwogCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjNjNTc4ZS4uMTAxZGY5OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDEyLTA1LTI0ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3Igd2luZG93LnNob3dNb2RhbERpYWxv
ZyBpbiBXZWJLaXQyR1RLKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Nzk1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbW9kYWwgZGlhbG9ncyBpbiBHVEsncyBNaW5pQnJvd3Nl
ci4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAg
ICh3ZWJWaWV3UnVuQXNNb2RhbCk6CisgICAgICAgICh3ZWJWaWV3Q3JlYXRlKToKKyAgICAgICAg
KHdlYlZpZXdEZWNpZGVQb2xpY3kpOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3dfbmV3KToKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oOgorICAgICAgICAqIE1pbmlC
cm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93c2VyV2luZG93KToKKwogMjAx
Mi0wNS0yNCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFtRdF0gVW5yZXZpZXdlZCBmaXgsIGFkZCBFTkFCTEVfQ1NTM19GTEVYQk9YIGFmdGVyIHIxMTgz
MDQuCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jIGIv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwppbmRleCA2ODEwMTY2Li5hYzBm
ZWFjIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKQEAgLTIxOCw2ICsyMTgs
MTEgQEAgc3RhdGljIHZvaWQgd2ViVmlld0Nsb3NlKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJy
b3dzZXJXaW5kb3cgKndpbmRvdykKICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVCh3
aW5kb3cpKTsKIH0KIAorc3RhdGljIHZvaWQgd2ViVmlld1J1bkFzTW9kYWwoV2ViS2l0V2ViVmll
dyAqd2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2luZG93KQoreworICAgIGd0a193aW5kb3dfc2V0
X21vZGFsKEdUS19XSU5ET1cod2luZG93KSwgVFJVRSk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYlZp
ZXdSZWFkeVRvU2hvdyhXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBCcm93c2VyV2luZG93ICp3aW5k
b3cpCiB7CiAgICAgV2ViS2l0V2luZG93UHJvcGVydGllcyAqd2luZG93UHJvcGVydGllcyA9IHdl
YmtpdF93ZWJfdmlld19nZXRfd2luZG93X3Byb3BlcnRpZXMod2ViVmlldyk7CkBAIC0yNDUsOCAr
MjUwLDkgQEAgc3RhdGljIEd0a1dpZGdldCAqd2ViVmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3ICp3
ZWJWaWV3LCBCcm93c2VyV2luZG93ICp3aW5kb3cpCiAgICAgV2ViS2l0V2ViVmlldyAqbmV3V2Vi
VmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldykpKTsKICAgICB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X3NldHRpbmdzKG5ld1dlYlZpZXcsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mo
d2ViVmlldykpOwogCi0gICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19u
ZXcobmV3V2ViVmlldyk7CisgICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRv
d19uZXcobmV3V2ViVmlldywgR1RLX1dJTkRPVyh3aW5kb3cpKTsKICAgICBnX3NpZ25hbF9jb25u
ZWN0KG5ld1dlYlZpZXcsICJyZWFkeS10by1zaG93IiwgR19DQUxMQkFDSyh3ZWJWaWV3UmVhZHlU
b1Nob3cpLCBuZXdXaW5kb3cpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgInJ1
bi1hcy1tb2RhbCIsIEdfQ0FMTEJBQ0sod2ViVmlld1J1bkFzTW9kYWwpLCBuZXdXaW5kb3cpOwog
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgImNsb3NlIiwgR19DQUxMQkFDSyh3ZWJW
aWV3Q2xvc2UpLCBuZXdXaW5kb3cpOwogICAgIHJldHVybiBHVEtfV0lER0VUKG5ld1dlYlZpZXcp
OwogfQpAQCAtMjY5LDcgKzI3NSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RGVjaWRlUG9s
aWN5KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBvbGljeURlY2lzaW9uCiAKICAgICBX
ZWJLaXRXZWJWaWV3ICpuZXdXZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmll
d19uZXdfd2l0aF9jb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3KSkp
OwogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MobmV3V2ViVmlldywgd2Via2l0X3dl
Yl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7Ci0gICAgR3RrV2lkZ2V0ICpuZXdXaW5kb3cg
PSBicm93c2VyX3dpbmRvd19uZXcobmV3V2ViVmlldyk7CisgICAgR3RrV2lkZ2V0ICpuZXdXaW5k
b3cgPSBicm93c2VyX3dpbmRvd19uZXcobmV3V2ViVmlldywgR1RLX1dJTkRPVyh3aW5kb3cpKTsK
ICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0KG5ld1dlYlZpZXcsIHdlYmtpdF9uYXZp
Z2F0aW9uX3BvbGljeV9kZWNpc2lvbl9nZXRfcmVxdWVzdChuYXZpZ2F0aW9uRGVjaXNpb24pKTsK
ICAgICBndGtfd2lkZ2V0X3Nob3cobmV3V2luZG93KTsKIApAQCAtNDgyLDExICs0ODgsMTIgQEAg
c3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfY2xhc3NfaW5pdChCcm93c2VyV2luZG93Q2xhc3Mg
KmtsYXNzKQogfQogCiAvLyBQdWJsaWMgQVBJLgotR3RrV2lkZ2V0ICpicm93c2VyX3dpbmRvd19u
ZXcoV2ViS2l0V2ViVmlldyAqdmlldykKK0d0a1dpZGdldCAqYnJvd3Nlcl93aW5kb3dfbmV3KFdl
YktpdFdlYlZpZXcgKnZpZXcsIEd0a1dpbmRvdyAqcGFyZW50KQogewogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh2aWV3KSwgMCk7CiAKICAgICByZXR1cm4gR1RL
X1dJREdFVChnX29iamVjdF9uZXcoQlJPV1NFUl9UWVBFX1dJTkRPVywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRyYW5zaWVudC1mb3IiLCBwYXJlbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiwgR1RLX1dJTkRPV19UT1BMRVZFTCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZpZXciLCB2aWV3LCBOVUxMKSk7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oIGIvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuaAppbmRleCAwNjM5N2E1Li42NjY3NTQ2
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmgKQEAgLTQzLDcgKzQzLDcgQEAg
dHlwZWRlZiBzdHJ1Y3QgX0Jyb3dzZXJXaW5kb3dDbGFzcyAgIEJyb3dzZXJXaW5kb3dDbGFzczsK
IAogR1R5cGUgYnJvd3Nlcl93aW5kb3dfZ2V0X3R5cGUodm9pZCk7CiAKLUd0a1dpZGdldCogYnJv
d3Nlcl93aW5kb3dfbmV3KFdlYktpdFdlYlZpZXcqKTsKK0d0a1dpZGdldCogYnJvd3Nlcl93aW5k
b3dfbmV3KFdlYktpdFdlYlZpZXcqLCBHdGtXaW5kb3cqKTsKIFdlYktpdFdlYlZpZXcqIGJyb3dz
ZXJfd2luZG93X2dldF92aWV3KEJyb3dzZXJXaW5kb3cqKTsKIHZvaWQgYnJvd3Nlcl93aW5kb3df
bG9hZF91cmkoQnJvd3NlcldpbmRvdyAqLCBjb25zdCBjaGFyICp1cmkpOwogCmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21h
aW4uYwppbmRleCBiMjY2Y2RjLi45ODhlMzk2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTQ1LDcg
KzQ1LDcgQEAgc3RhdGljIGdjaGFyICphcmd1bWVudFRvVVJMKGNvbnN0IGNoYXIgKmZpbGVuYW1l
KQogc3RhdGljIHZvaWQgY3JlYXRlQnJvd3NlcldpbmRvdyhjb25zdCBnY2hhciAqdXJpLCBXZWJL
aXRTZXR0aW5ncyAqd2Via2l0U2V0dGluZ3MpCiB7CiAgICAgR3RrV2lkZ2V0ICp3ZWJWaWV3ID0g
d2Via2l0X3dlYl92aWV3X25ldygpOwotICAgIEd0a1dpZGdldCAqbWFpbldpbmRvdyA9IGJyb3dz
ZXJfd2luZG93X25ldyhXRUJLSVRfV0VCX1ZJRVcod2ViVmlldykpOworICAgIEd0a1dpZGdldCAq
bWFpbldpbmRvdyA9IGJyb3dzZXJfd2luZG93X25ldyhXRUJLSVRfV0VCX1ZJRVcod2ViVmlldyks
IE5VTEwpOwogICAgIGdjaGFyICp1cmwgPSBhcmd1bWVudFRvVVJMKHVyaSk7CiAKICAgICBpZiAo
d2Via2l0U2V0dGluZ3MpIHsKLS0gCjEuNy4xMC4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148545</attachid>
            <date>2012-06-20 06:04:25 -0700</date>
            <delta_ts>2012-06-20 10:38:56 -0700</delta_ts>
            <desc>Patch proposal + Unit test</desc>
            <filename>bug-79500-20120620150424.patch</filename>
            <type>text/plain</type>
            <size>37588</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWY3NmY4YTZmODI4Y2Zl
N2NlM2FmMmFmYTZiMDE0MDcxZmRmNDAxYy4uNzA2ZjIxZDIzZWFjYTM1NWQ4OGQ4ZDQzOWUwMDQ0
ZDE3MzFiNDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEyLTA2LTIwICBNYXJp
byBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBB
ZGQgc3VwcG9ydCBmb3Igd2luZG93LnNob3dNb2RhbERpYWxvZyBpbiBXZWJLaXQyR1RLKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk1MDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcnVu
TW9kYWwgaW4gV2ViS2l0VUlDbGllbnQgdG8gbWFrZSB0aGUgV2ViS2l0V2ViVmlldworICAgICAg
ICBlbWl0IGEgJ3J1bi1hcy1tb2RhbCcgc2lnbmFsIHdoZW4gcmVxdWVzdGVkLCBjcmVhdGluZyBh
IG5ldworICAgICAgICBtYWlubG9vcCB0aGVyZSB0byBibG9jayB1c2VyIGludGVyYWN0aW9uIHdp
dGggdGhlIG9yaWdpbmFsIHdpbmRvdworICAgICAgICB3aGlsZSB0aGUgbW9kYWwgZGlhbG9nIGlz
IHNob3dpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5j
cHA6CisgICAgICAgIChydW5Nb2RhbCk6IENhbGwgdG8gdGhlIG5ldyB3ZWJraXRXZWJWaWV3UnVu
QXNNb2RhbFBhZ2UgZnVuY3Rpb24uCisgICAgICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6IEFk
ZCBydW5Nb2RhbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSk6IEFkZCBhbiBhdHJpYnV0ZSBmb3Ig
YSBuZXcgbWFpbiBsb29wLgorICAgICAgICAod2Via2l0V2ViVmlld0ZpbmFsaXplKTogTWFrZSBz
dXJlIHRoZSBtYWluIGxvb3AgZm9yIG1haW4gZGlhbG9ncywKKyAgICAgICAgaWYgYW55LCBpcyBz
dG9wcGVkIGlmIGl0IHdhcyBzdGlsbCBydW5uaW5nLgorICAgICAgICAod2Via2l0X3dlYl92aWV3
X2NsYXNzX2luaXQpOiBEZWNsYXJlIG5ldyBzaWduYWwgJ3J1bi1hcy1tb2RhbCcuCisgICAgICAg
ICh3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbCk6IEVtaXQgdGhlICdydW4tYXMtbW9kYWwnIHNpZ25h
bCBhbmQsIGlmCisgICAgICAgIGhhbmRsZWQsIGNyZWF0ZSBhbmQgcnVuIGEgbmV3IG1haW4gbG9v
cC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAg
IChfV2ViS2l0V2ViVmlld0NsYXNzKTogTmV3IGhhbmRsZXIgZm9yIHRoZSAncnVuLWFzLW1vZGFs
JyBzaWduYWwuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaDogQWRkIHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsUGFnZS4KKworICAgICAgICBBbGxvdyBz
ZXR0aW5nIGFuZCBnZXR0aW5nIHRoZSB2YWx1ZSBvZiBXZWJQYWdlJ3MgY2FuUnVuTW9kYWwKKyAg
ICAgICAgYXR0cmlidXRlIGluIHRoZSBXZWJQcm9jZXNzIGZyb20gdGhlIFVJUHJvY2VzcyBhZnRl
ciB0aGUgY3JlYXRpb24KKyAgICAgICAgb2YgYSBXZWJQYWdlLCB0byBhbGxvdyB1c2luZyBpdCBm
cm9tIFdlYktpdFdlYlZpZXcgdG8gYWxsb3cgdGhlCisgICAgICAgIGNsaWVudCBhcHBsaWNhdGlv
biB0byBkZWNpZGUgd2hldGhlciB0byBhbGxvdyBjcmVhdGUgbW9kYWwKKyAgICAgICAgZGlhbG9n
cywgd2hpY2ggd291bGQgcmVzdWx0IGluIGxhdW5jaGluZyBhbiBhZGRpdGlvbmFsIG5lc3RlZAor
ICAgICAgICBldmVudCBsb29wIGluIHRoZSB3ZWIgcHJvY2VzcywgYWZ0ZXIgY3JlYXRpbmcgdGhl
IGRpYWxvZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6IEluaXRpYWxpemUgdGhlIG5l
dworICAgICAgICBtX2NhblJ1bk1vZGFsIGF0dHJpYnV0ZSwgdG8gY2FjaGUgdGhlIGN1cnJlbnQg
c3RhdHVzIG9mIHRoZQorICAgICAgICBXZWJQYWdlIGluIHRoZSBXZWJQcm9jZXNzLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVVSUNsaWVudCk6IENhbGwgdGhlIG5l
dyBmdW5jdGlvbgorICAgICAgICBzZXRDYW5SdW5Nb2RhbCwgaW5zdGVhZCBvZiBtYW51YWxseSBz
ZW5kaW5nIHRoZSBTZXRDYW5SdW5Nb2RhbCBtZXNzYWdlLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6IFVzZSBtX2NhblJ1bk1vZGFsCisgICAgICAg
IGluc3RlYWQgb2YgbV91aUNsaWVudC5jYW5SdW5Nb2RhbCB3aGVuIHByZXBhcmluZyB0aGUgcGFy
YW1ldGVycy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDYW5SdW5Nb2RhbCk6
IE5ldyBwdWJsaWMgZnVuY3Rpb24sIGl0CisgICAgICAgIHNldHMgdGhlIHZhbHVlIG9mIG1fY2Fu
UnVuTW9kYWwgYW5kIHNlbmRzIGEgbWVzc2FnZSB0byB0aGUgV2ViCisgICAgICAgIHByb2Nlc3Mg
Zm9yIHVwZGF0aW5nIHRoZSBXZWJQYWdlLCB3aGVuZXZlciBwb3NzaWJsZS4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpjYW5SdW5Nb2RhbCk6IE5ldyBwdWJsaWMgZnVuY3Rpb24sIHJl
dHVybnMKKyAgICAgICAgdGhlIHZhbHVlIG9mIHRoZSBtX2NhblJ1bk1vZGFsIGF0dHJpYnV0ZS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJv
eHkpOiBBZGRlZCBuZXcgcHVibGljIGZ1bmN0aW9ucyBhbmQgcHJpdmF0ZSBhdHRyaWJ1dGUuCisK
KyAgICAgICAgTmV3IHByb3BlcnR5IGluIFdlYktpdFNldHRpbmdzIHRvIGJlIGFibGUgdG8gZGVj
aWRlIHdoZXRoZXIgaXQgaXMKKyAgICAgICAgYWxsb3dlZCB0byBjcmVhdGUgYW5kIHJ1biBuZXcg
Y2hpbGQgd2Vidmlld3MgYXMgbW9kYWwgZGlhbG9ncy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKF9XZWJLaXRTZXR0aW5nc1ByaXZh
dGUpOiBOZXcgYXR0cmlidXRlIGFsbG93TW9kYWxEaWFsb2dzLgorICAgICAgICAod2ViS2l0U2V0
dGluZ3NTZXRQcm9wZXJ0eSk6IEhhbmRsZSB0aGUgbmV3IHByb3BlcnR5LgorICAgICAgICAod2Vi
S2l0U2V0dGluZ3NHZXRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAod2Via2l0X3NldHRpbmdz
X2NsYXNzX2luaXQpOiBJbnN0YWxsIHRoZSBuZXcgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRT
ZXR0aW5nc0F0dGFjaFNldHRpbmdzVG9QYWdlKTogTWFrZSBzdXJlIHRoZSBXZWJQYWdlIGlzCisg
ICAgICAgIGluaXRpYWxpemVkIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBuZXcgcHJvcGVydHkuCisg
ICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3MpOiBOZXcgc2V0
dGVyLgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzKTog
TmV3IGdldHRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQ6IEFkZGVkIG5ldyBhY2Nlc3NvcnMuCisKKyAgICAgICAgQ29ubmVjdCB0byB0aGUgJ25vdGlm
eTo6YWxsb3ctbW9kYWwtZGlhbG9ncycgc2lnbmFsIGZyb20KKyAgICAgICAgV2ViS2l0U2V0dGlu
Z3MgdG8gZW5zdXJlIHRoYXQgY2FuUnVuTW9kYWwgcHJvcGVydHkgb2YgdGhlIFdlYlBhZ2UKKyAg
ICAgICAgaXMga2VwdCB1cCB0byBkYXRlLiBFbnN1cmUgdGhhdCBzaWduYWwgaGFuZGxlcnMgZm9y
IG1vbml0b3JpbmcKKyAgICAgICAgc2V0dGluZ3MgYXJlIGRpc2Nvbm5lY3RlZCB3aGVuIHRoZSB3
ZWJ2aWV3IGlzIGZpbmFsaXplZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld1NldFNldHRpbmdzKTogQ29ubmVj
dCB0byB0aGUgbmV3IHNpZ25hbAorICAgICAgICAnbm90aWZ5OjphbGxvdy1tb2RhbC1kaWFsb2dz
JywgZnJvbSBXZWJLaXRTZXR0aW5ncy4KKyAgICAgICAgKGFsbG93TW9kYWxEaWFsb2dzQ2hhbmdl
ZCk6IENhbGxiYWNrIHRvIHVwZGF0ZSBXZWJQYWdlJ3MKKyAgICAgICAgY2FuUnVuTW9kYWwgcHJv
cGVydHkgd2hlbiB1cGRhdGVkIHRocm91Z2ggV2ViS2l0U2V0dGluZ3MuCisgICAgICAgICh3ZWJr
aXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2lnbmFsSGFuZGxlcnMpOiBEaXNjb25uZWN0IHNp
Z25hbAorICAgICAgICBoYW5kbGVycyBmb3IgbW9uaXRvcmluZyBXZWJLaXRTZXR0aW5ncyBwcm9w
ZXJ0aWVzLgorICAgICAgICAod2Via2l0V2ViVmlld0ZpbmFsaXplKTogRW5zdXJlIHNpZ25hbCBo
YW5kbGVycyBhcmUgZGlzY29ubmVjdGVkLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9z
ZXR0aW5ncyk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuaDoKKworICAgICAgICBBZGQgbmV3IHVuaXQgdGVzdHMgdG8gY2hlY2sgdGhlICdydW4tYXMt
bW9kYWwnIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICAgIG9ubHkgd2hlbiB0aGUgbmV3IHByb3Bl
cnR5IGluIFdlYktpdFNldHRpbmdzIGlzIHNldCB0byBUUlVFLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVzdFdl
YlZpZXdBbGxvd01vZGFsRGlhbG9ncyk6IE5ldyB1bml0IHRlc3QgdG8gY2hlY2sgdGhhdCBtb2Rh
bAorICAgICAgICBkaWFsb2dzIGFyZSBwcm9wZXJseSBjcmVhdGVkIGZyb20gSmF2YVNjcmlwdCB3
aGVuIGFsbG93ZWQuCisgICAgICAgICh0ZXN0V2ViVmlld0Rpc2FsbG93TW9kYWxEaWFsb2dzKTog
TmV3IHVuaXQgdGVzdCB0byBjaGVjayB0aGF0CisgICAgICAgIGl0J3Mgbm90IHBvc3NpYmxlIHRv
IGNyZWF0ZSBtb2RhbCBkaWFsb2dzIHdoZW4gbm90IGFsbG93ZWQuCisgICAgICAgIChiZWZvcmVB
bGwpOiBBZGQgdGhlIG5ldyB1bml0IHRlc3QuCisKIDIwMTItMDYtMTkgIFJ5dWFuIENob2kgIDxy
eXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1JlZ3Jlc3Npb25dIEJ1aWxk
IGJyZWFrIGFmdGVyIHIxMjA3ODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAppbmRleCAwMmU4MmIwMjA2MjJhMGY4NTM2ZThiMmU1
MmU2NDc4NDQ1YzRlYTEzLi45ZTI0YWFiYjEyM2I3MzVlODE3NWQxYzNjNDUwM2JkZjQ0ZDFhMjA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0
aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0
dGluZ3MuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKQEAgLTQ2LDYgKzQ3LDcgQEAgc3RydWN0IF9XZWJLaXRTZXR0aW5nc1ByaXZh
dGUgewogICAgIENTdHJpbmcgZmFudGFzeUZvbnRGYW1pbHk7CiAgICAgQ1N0cmluZyBwaWN0b2dy
YXBoRm9udEZhbWlseTsKICAgICBDU3RyaW5nIGRlZmF1bHRDaGFyc2V0OworICAgIGJvb2wgYWxs
b3dNb2RhbERpYWxvZ3M7CiAgICAgYm9vbCB6b29tVGV4dE9ubHk7CiB9OwogCkBAIC0xMDUsNiAr
MTA3LDcgQEAgZW51bSB7CiAgICAgUFJPUF9QUklOVF9CQUNLR1JPVU5EUywKICAgICBQUk9QX0VO
QUJMRV9XRUJBVURJTywKICAgICBQUk9QX0VOQUJMRV9XRUJHTCwKKyAgICBQUk9QX0FMTE9XX01P
REFMX0RJQUxPR1MsCiAgICAgUFJPUF9aT09NX1RFWFRfT05MWSwKICAgICBQUk9QX0pBVkFTQ1JJ
UFRfQ0FOX0FDQ0VTU19DTElQQk9BUkQsCiAgICAgUFJPUF9NRURJQV9QTEFZQkFDS19SRVFVSVJF
U19VU0VSX0dFU1RVUkUsCkBAIC0yMTYsNiArMjE5LDkgQEAgc3RhdGljIHZvaWQgd2ViS2l0U2V0
dGluZ3NTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1Zh
bHUKICAgICBjYXNlIFBST1BfRU5BQkxFX1dFQkdMOgogICAgICAgICB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2VuYWJsZV93ZWJnbChzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQUxMT1dfTU9EQUxfRElBTE9HUzoKKyAgICAg
ICAgd2Via2l0X3NldHRpbmdzX3NldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNldHRpbmdzLCBnX3Zh
bHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9a
T09NX1RFWFRfT05MWToKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF96b29tX3RleHRfb25s
eShzZXR0aW5ncywgZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpOwogICAgICAgICBicmVhazsK
QEAgLTM0MSw2ICszNDcsOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbAogICAgIGNhc2UgUFJP
UF9FTkFCTEVfV0VCR0w6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmdsKHNldHRpbmdzKSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9BTExPV19NT0RBTF9ESUFMT0dTOgorICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3Moc2V0
dGluZ3MpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1pPT01fVEVYVF9PTkxZOgog
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X3pv
b21fdGV4dF9vbmx5KHNldHRpbmdzKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtODUzLDYgKzg2Miwy
NCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRTZXR0aW5n
c0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKIAogICAgIC8q
KgorICAgICAqIFdlYktpdFNldHRpbmdzOmFsbG93LW1vZGFsLWRpYWxvZ3M6CisgICAgICoKKyAg
ICAgKiBEZXRlcm1pbmUgd2hldGhlciBpdCdzIGFsbG93ZWQgdG8gY3JlYXRlIGFuZCBydW4gbW9k
YWwgZGlhbG9ncworICAgICAqIGZyb20gYSAjV2ViS2l0V2ViVmlldyB0aHJvdWdoIEphdmFTY3Jp
cHQgd2l0aAorICAgICAqIDxmdW5jdGlvbj53aW5kb3cuc2hvd01vZGFsRGlhbG9nPC9mdW5jdGlv
bj4uIElmIGl0J3Mgc2V0IHRvCisgICAgICogJUZBTFNFLCB0aGUgYXNzb2NpYXRlZCAjV2ViS2l0
V2ViVmlldyB3b24ndCBiZSBhYmxlIHRvIGNyZWF0ZQorICAgICAqIG5ldyBtb2RhbCBkaWFsb2dz
LCBzbyBub3QgZXZlbiB0aGUgI1dlYktpdFdlYlZpZXc6OmNyZWF0ZQorICAgICAqIHNpZ25hbCB3
aWxsIGJlIGVtaXR0ZWQuCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShnT2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX0FMTE9XX01PREFMX0RJQUxPR1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiYWxsb3ctbW9kYWwtZGlhbG9ncyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJBbGxv
dyBtb2RhbCBkaWFsb2dzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBt
b2RhbCBkaWFsb2dzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsK
KworICAgIC8qKgogICAgICAqIFdlYktpdFNldHRpbmdzOnpvb20tdGV4dC1vbmx5OgogICAgICAq
CiAgICAgICogV2hldGhlciAjV2ViS2l0V2ViVmlldzp6b29tLWxldmVsIGFmZmVjdHMgb25seSB0
aGUKQEAgLTk2OSw2ICs5OTYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfc2V0dGluZ3NfaW5pdChX
ZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB2b2lkIHdlYmtpdFNldHRpbmdzQXR0YWNoU2V0dGlu
Z3NUb1BhZ2UoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBXS1BhZ2VSZWYgd2tQYWdlKQogewog
ICAgIFdLUGFnZUdyb3VwU2V0UHJlZmVyZW5jZXMoV0tQYWdlR2V0UGFnZUdyb3VwKHdrUGFnZSks
IHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy5nZXQoKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwo
d2tQYWdlKS0+c2V0Q2FuUnVuTW9kYWwoc2V0dGluZ3MtPnByaXYtPmFsbG93TW9kYWxEaWFsb2dz
KTsKIH0KIAogLyoqCkBAIC0yMTg5LDYgKzIyMTcsMzkgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2VuYWJsZV93ZWJnbChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sZWFuIGVuYWJs
ZWQKIH0KIAogLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3M6
CisgKiBAc2V0dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAYWxsb3dlZDogVmFsdWUgdG8g
YmUgc2V0CisgKgorICogU2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6YWxsb3ctbW9kYWwtZGlhbG9n
cyBwcm9wZXJ0eS4KKyAqLwordm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2Rp
YWxvZ3MoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbGVhbiBhbGxvd2VkKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBX
ZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBpZiAocHJp
di0+YWxsb3dNb2RhbERpYWxvZ3MgPT0gYWxsb3dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
cHJpdi0+YWxsb3dNb2RhbERpYWxvZ3MgPSBhbGxvd2VkOworICAgIGdfb2JqZWN0X25vdGlmeShH
X09CSkVDVChzZXR0aW5ncyksICJhbGxvdy1tb2RhbC1kaWFsb2dzIik7Cit9CisKKy8qKgorICog
d2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzOgorICogQHNldHRpbmdzOiBh
ICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgI1dlYktpdFNldHRpbmdzOmFsbG93LW1v
ZGFsLWRpYWxvZ3MgcHJvcGVydHkuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgaXQncyBhbGxv
d2VkIHRvIGNyZWF0ZSBhbmQgcnVuIG1vZGFsIGRpYWxvZ3Mgb3IgJUZBTFNFIG90aGVyd2lzZS4K
KyAqLworZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzKFdl
YktpdFNldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5w
cml2LT5hbGxvd01vZGFsRGlhbG9nczsKK30KKworLyoqCiAgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0
X3pvb21fdGV4dF9vbmx5OgogICogQHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncwogICogQHpv
b21fdGV4dF9vbmx5OiBWYWx1ZSB0byBiZSBzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5oCmluZGV4IDUzZWJkYTI5OTNmMTZmNjhmYWEz
MzhjZTJjYTBhOWVkN2Q4M2ZmYzQuLmE4NmQ2YmMxZWRlYmI4YWExMzhlZDE5MmZkNDAzM2IzNTlm
YjkxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
U2V0dGluZ3MuaApAQCAtMzA4LDYgKzMwOCwxMyBAQCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV93ZWJnbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0U2V0dGluZ3MgKgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdib29sZWFuICAgICAgICBlbmFibGVkKTsKIAogV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3MgICAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICBhbGxv
d2VkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19t
b2RhbF9kaWFsb2dzICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0
aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAogd2Via2l0X3NldHRpbmdzX3NldF96b29tX3RleHRf
b25seSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5n
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgem9vbV90ZXh0X29ubHkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXgg
N2Q0ZWVkZmI2YmFlYjdkYjNjZmIyMDY5YzQwZTJlNjJmNGJkZDgzZC4uMWQ5ODVkMzQyN2ViNjY1
MTA4ZmZkMzRhMjRhZjlkMTI4NzVhNWI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMTUxLDYgKzE1MSwxMSBAQCBz
dGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiwgVwogICAgIHdlYmtpdFdlYlZpZXdNYWtlUGVybWlzc2lvblJl
cXVlc3QoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCBXRUJLSVRfUEVSTUlTU0lPTl9SRVFV
RVNUKGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpKTsKIH0KIAorc3RhdGljIHZv
aWQgcnVuTW9kYWwoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7Cisg
ICAgd2Via2l0V2ViVmlld1J1bkFzTW9kYWwoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pKTsK
K30KKwogdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
ewogICAgIFdLUGFnZVVJQ2xpZW50IHdrVUlDbGllbnQgPSB7CkBAIC0xOTEsNyArMTk2LDcgQEAg
dm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAg
ICAwLCAvLyBkcmF3SGVhZGVyCiAgICAgICAgIDAsIC8vIGRyYXdGb290ZXIKICAgICAgICAgcHJp
bnRGcmFtZSwKLSAgICAgICAgMCwgLy8gcnVuTW9kYWwKKyAgICAgICAgcnVuTW9kYWwsCiAgICAg
ICAgIDAsIC8vIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQogICAgICAgICAwLCAv
LyBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyCiAgICAgICAgIDAsIC8vIHNob3VsZElu
dGVycnVwdEphdmFTY3JpcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggN2Y1NzY0ZTdkYjk0MmVhMmJmZWE0MDQ0MmQ2NzU4
ZjEyYTBkMmQyMC4uMWE1ZmMwMWQyYjI2MGVkODhjMTBjZDIzYjI3MzNiOGIxYzk4NzdhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKQEAgLTY1LDYgKzY1LDcgQEAgZW51bSB7CiAKICAgICBDUkVBVEUsCiAgICAgUkVBRFlfVE9f
U0hPVywKKyAgICBSVU5fQVNfTU9EQUwsCiAgICAgQ0xPU0UsCiAKICAgICBTQ1JJUFRfRElBTE9H
LApAQCAtMTE4LDYgKzExOSw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAg
IEdSZWZQdHI8V2ViS2l0U2V0dGluZ3M+IHNldHRpbmdzOwogICAgIEdSZWZQdHI8V2ViS2l0V2lu
ZG93UHJvcGVydGllcz4gd2luZG93UHJvcGVydGllczsKIAorICAgIEdSZWZQdHI8R01haW5Mb29w
PiBtb2RhbExvb3A7CisKICAgICBHUmVmUHRyPFdlYktpdEhpdFRlc3RSZXN1bHQ+IG1vdXNlVGFy
Z2V0SGl0VGVzdFJlc3VsdDsKICAgICB1bnNpZ25lZCBtb3VzZVRhcmdldE1vZGlmaWVyczsKIApA
QCAtMjIzLDYgKzIyNiwxNCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld1Blcm1pc3Np
b25SZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRQZXJtaXNzaW9uUgogICAgIHJldHVybiBU
UlVFOwogfQogCitzdGF0aWMgdm9pZCBhbGxvd01vZGFsRGlhbG9nc0NoYW5nZWQoV2ViS2l0U2V0
dGluZ3MqIHNldHRpbmdzLCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sK
KyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lU
X1dFQl9WSUVXX0JBU0Uod2ViVmlldykpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJu
OworICAgIHBhZ2UtPnNldENhblJ1bk1vZGFsKHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9k
YWxfZGlhbG9ncyhzZXR0aW5ncykpOworfQorCiBzdGF0aWMgdm9pZCB6b29tVGV4dE9ubHlDaGFu
Z2VkKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgR1BhcmFtU3BlYyosIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiB7CiAgICAgV0tQYWdlUmVmIHdrUGFnZSA9IHRvQVBJKHdlYmtpdFdlYlZpZXdC
YXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSkpOwpAQCAtMjM2LDkgKzI0
NywxOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0U2V0dGluZ3MoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgV2ViS2l0U2V0dGluZ3MqIHNldAogewogICAgIHdlYlZpZXctPnByaXYtPnNl
dHRpbmdzID0gc2V0dGluZ3M7CiAgICAgd2Via2l0U2V0dGluZ3NBdHRhY2hTZXR0aW5nc1RvUGFn
ZSh3ZWJWaWV3LT5wcml2LT5zZXR0aW5ncy5nZXQoKSwgd2tQYWdlKTsKKyAgICBnX3NpZ25hbF9j
b25uZWN0KHNldHRpbmdzLCAibm90aWZ5OjphbGxvdy1tb2RhbC1kaWFsb2dzIiwgR19DQUxMQkFD
SyhhbGxvd01vZGFsRGlhbG9nc0NoYW5nZWQpLCB3ZWJWaWV3KTsKICAgICBnX3NpZ25hbF9jb25u
ZWN0KHNldHRpbmdzLCAibm90aWZ5Ojp6b29tLXRleHQtb25seSIsIEdfQ0FMTEJBQ0soem9vbVRl
eHRPbmx5Q2hhbmdlZCksIHdlYlZpZXcpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
RGlzY29ubmVjdFNldHRpbmdzU2lnbmFsSGFuZGxlcnMoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
K3sKKyAgICBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJWaWV3LT5wcml2LT5zZXR0aW5n
cy5nZXQoKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoc2V0dGlu
Z3MsIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KGFsbG93TW9kYWxEaWFsb2dzQ2hhbmdlZCks
IHdlYlZpZXcpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXR0
aW5ncywgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRlcj4oem9vbVRleHRPbmx5Q2hhbmdlZCksIHdl
YlZpZXcpOworCit9CisKIHN0YXRpYyB2b2lkIGZpbGVDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxs
YmFjayhHdGtEaWFsb2cqIGRpYWxvZywgZ2ludCByZXNwb25zZUlELCBXZWJLaXRGaWxlQ2hvb3Nl
clJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgR1JlZlB0cjxXZWJLaXRGaWxlQ2hvb3NlclJlcXVl
c3Q+IGFkb3B0ZWRSZXF1ZXN0ID0gYWRvcHRHUmVmKHJlcXVlc3QpOwpAQCAtMzUzLDggKzM3Mywx
NiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Zp
bmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJp
diA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpLT5wcml2OworCiAgICAgaWYgKHByaXYtPmphdmFz
Y3JpcHRHbG9iYWxDb250ZXh0KQogICAgICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKHByaXYt
PmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KTsKKworICAgIC8vIEZvciBtb2RhbCBkaWFsb2dzLCBt
YWtlIHN1cmUgdGhlIG1haW4gbG9vcCBpcyBzdG9wcGVkIHdoZW4gZmluYWxpemluZyB0aGUgd2Vi
Vmlldy4KKyAgICBpZiAocHJpdi0+bW9kYWxMb29wICYmIGdfbWFpbl9sb29wX2lzX3J1bm5pbmco
cHJpdi0+bW9kYWxMb29wLmdldCgpKSkKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdChwcml2LT5t
b2RhbExvb3AuZ2V0KCkpOworCisgICAgd2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RTZXR0aW5nc1Np
Z25hbEhhbmRsZXJzKFdFQktJVF9XRUJfVklFVyhvYmplY3QpKTsKKwogICAgIHByaXYtPn5XZWJL
aXRXZWJWaWV3UHJpdmF0ZSgpOwogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19w
YXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQpAQCAtNjA0LDYgKzYzMiwyNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3Mq
IHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9W
T0lEX19WT0lELAogICAgICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOwogCisgICAg
IC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnJ1bi1hcy1tb2RhbDoKKyAgICAgKiBAd2ViX3Zp
ZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAg
ICAgKgorICAgICAqIEVtaXR0ZWQgYWZ0ZXIgI1dlYktpdFdlYlZpZXc6OnJlYWR5LXRvLXNob3cg
b24gdGhlIG5ld2x5CisgICAgICogY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aGVuIEphdmFTY3Jp
cHQgY29kZSBjYWxscworICAgICAqIDxmdW5jdGlvbj53aW5kb3cuc2hvd01vZGFsRGlhbG9nPC9m
dW5jdGlvbj4uIFRoZSBwdXJwb3NlIG9mCisgICAgICogdGhpcyBzaWduYWwgaXMgdG8gYWxsb3cg
dGhlIGNsaWVudCBhcHBsaWNhdGlvbiB0byBwcmVwYXJlIHRoZQorICAgICAqIG5ldyB2aWV3IHRv
IGJlaGF2ZSBhcyBtb2RhbC4gT25jZSB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQgYSBuZXcKKyAgICAg
KiBtYWlubG9vcCB3aWxsIGJlIHJ1biB0byBibG9jayB1c2VyIGludGVyYWN0aW9uIGluIHRoZSBw
YXJlbnQKKyAgICAgKiAjV2ViS2l0V2ViVmlldyB1bnRpbCB0aGUgbmV3IGRpYWxvZyBpcyBjbG9z
ZWQuCisgICAgICovCisgICAgc2lnbmFsc1tSVU5fQVNfTU9EQUxdID0KKyAgICAgICAgICAgIGdf
c2lnbmFsX25ldygicnVuLWFzLW1vZGFsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZ
UEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdf
U0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNF
VChXZWJLaXRXZWJWaWV3Q2xhc3MsIHJ1bl9hc19tb2RhbCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxf
Vk9JRF9fVk9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMCk7CisK
ICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3OjpjbG9zZToKICAgICAgKiBAd2ViVmlldzog
dGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZApAQCAtMTAz
NCw2ICsxMDgzLDE2IEBAIHZvaWQgd2Via2l0V2ViVmlld1JlYWR5VG9TaG93UGFnZShXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tSRUFE
WV9UT19TSE9XXSwgMCwgTlVMTCk7CiB9CiAKK3ZvaWQgd2Via2l0V2ViVmlld1J1bkFzTW9kYWwo
V2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNp
Z25hbHNbUlVOX0FTX01PREFMXSwgMCwgTlVMTCk7CisKKyAgICB3ZWJWaWV3LT5wcml2LT5tb2Rh
bExvb3AgPSBhZG9wdEdSZWYoZ19tYWluX2xvb3BfbmV3KDAsIEZBTFNFKSk7CisgICAgR0RLX1RI
UkVBRFNfRU5URVIoKTsKKyAgICBnX21haW5fbG9vcF9ydW4od2ViVmlldy0+cHJpdi0+bW9kYWxM
b29wLmdldCgpKTsKKyAgICBHREtfVEhSRUFEU19MRUFWRSgpOworfQorCiB2b2lkIHdlYmtpdFdl
YlZpZXdDbG9zZVBhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3NpZ25hbF9l
bWl0KHdlYlZpZXcsIHNpZ25hbHNbQ0xPU0VdLCAwLCBOVUxMKTsKQEAgLTE2ODQsNyArMTc0Myw3
IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRTZXR0aW5ncyogc2V0dGluCiAgICAgaWYgKHdlYlZpZXctPnByaXYtPnNldHRp
bmdzID09IHNldHRpbmdzKQogICAgICAgICByZXR1cm47CiAKLSAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldy0+cHJpdi0+c2V0dGluZ3MuZ2V0KCksIHJlaW50
ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHpvb21UZXh0T25seUNoYW5nZWQpLCB3ZWJWaWV3KTsKKyAg
ICB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2lnbmFsSGFuZGxlcnMod2ViVmlldyk7
CiAgICAgd2Via2l0V2ViVmlld1NldFNldHRpbmdzKHdlYlZpZXcsIHNldHRpbmdzLCB0b0FQSSh3
ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykpKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuaAppbmRleCA3MTZmYmJkMDgxYTAyZjNjZTliYWIzMmRhOWU4N2E3MGY5ZGYwNGIyLi5lOWFk
NWQ2MmQwMzhhZmExNWQzYmQ1MjZjZDliMWEzNmFiNWVmMGJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0xMzYsNiArMTM2LDcg
QEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogCiAgICAgR3RrV2lkZ2V0ICooKiBjcmVh
dGUpICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7
CiAgICAgdm9pZCAgICAgICAoKiByZWFkeV90b19zaG93KSAgICAgICAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisgICAgdm9pZCAgICAgICAoKiBydW5fYXNfbW9kYWwp
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAgICAgdm9p
ZCAgICAgICAoKiBjbG9zZSkgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldyk7CiAKICAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9kaWFsb2cpICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5k
ZXggYWVkY2RlZTZlNWU5ZjliZjEwZDlhOTcwZjM1M2Q3Njc3MTdmY2NhMC4uYjYwMmY0ZmUwZWQ2
NmM0OGE1ZjY4MTczYzUyNWIxMmMzMWI0ZjYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zOCw2ICsz
OCw3IEBAIHZvaWQgd2Via2l0V2ViVmlld1NldFRpdGxlKFdlYktpdFdlYlZpZXcqLCBjb25zdCBD
U3RyaW5nJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkoV2ViS2l0V2ViVmlldyopOwog
V0tQYWdlUmVmIHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKFdlYktpdFdlYlZpZXcqLCBXS0Rp
Y3Rpb25hcnlSZWYgd2tXaW5kb3dGZWF0dXJlcyk7CiB2b2lkIHdlYmtpdFdlYlZpZXdSZWFkeVRv
U2hvd1BhZ2UoV2ViS2l0V2ViVmlldyopOwordm9pZCB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbChX
ZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdDbG9zZVBhZ2UoV2ViS2l0V2ViVmll
dyopOwogdm9pZCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdEFsZXJ0KFdlYktpdFdlYlZpZXcq
LCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlKTsKIGJvb2wgd2Via2l0V2ViVmlld1J1bkphdmFTY3Jp
cHRDb25maXJtKFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0CmluZGV4IDFiOTdkZTg4ZjhkMWI5ZTQ2ZTEwZjY4NzU0MjA0NGM2
YmM1NmEyNWIuLjMyYzlkOWY1ODAzYmZhYTk0Mjc4YzFkZTE2MjBmZTc2NWNhNDYwMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtMjU2LDYgKzI1Niw4IEBAIHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX3dlYmF1ZGlvCiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV93ZWJhdWRp
bwogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfd2ViZ2wKIHdlYmtpdF9zZXR0aW5nc19zZXRf
ZW5hYmxlX3dlYmdsCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3MKK3dl
YmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlhbG9ncwogd2Via2l0X3NldHRpbmdzX2dl
dF96b29tX3RleHRfb25seQogd2Via2l0X3NldHRpbmdzX3NldF96b29tX3RleHRfb25seQogd2Vi
a2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9hY2Nlc3NfY2xpcGJvYXJkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdl
YktpdFNldHRpbmdzLmNwcAppbmRleCA0NjE2ZDEwNWY0OThiMTIzNjNkMjIzNjRhMTNiZWI1YWE3
ZmI0NmU1Li4yY2ViZGQ5OTVlYjE1NzQ0ZmVkYzg3MGIyZTVkNGUwNjViNDk2YTczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0U2V0
dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rl
c3RXZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTE5OSw2ICsxOTksMTEgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYktpdFNldHRpbmdzKFRlc3QqLCBnY29uc3Rwb2ludGVyKQogICAgIHdlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX3dlYmdsKHNldHRpbmdzLCBUUlVFKTsKICAgICBnX2Fzc2VydCh3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV93ZWJnbChzZXR0aW5ncykpOwogCisgICAgLy8gQWxsb3cgTW9k
YWwgRGlhbG9ncyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgIGdfYXNzZXJ0KCF3ZWJraXRf
c2V0dGluZ3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3Moc2V0dGluZ3MpKTsKKyAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2FsbG93X21vZGFsX2RpYWxvZ3Moc2V0dGluZ3MsIFRSVUUpOworICAgIGdf
YXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyhzZXR0aW5ncykp
OworCiAgICAgLy8gWm9vbSB0ZXh0IG9ubHkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KICAgICBn
X2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF96b29tX3RleHRfb25seShzZXR0aW5ncykpOwog
ICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfem9vbV90ZXh0X29ubHkoc2V0dGluZ3MsIFRSVUUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDY0Njc1Mjk3NGU4ZmYwZTNmNWQ5MTgxYjUxNjYz
ZmY5YTViMTAxNjAuLmM3NDBjMGQxMmY3ZGJkMDAwZTI1OGY3MTAwMGU5ZTYxYjE1OWMzZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAg
ZW51bSBXZWJWaWV3RXZlbnRzIHsKICAgICAgICAgQ3JlYXRlLAogICAgICAgICBSZWFkeVRvU2hv
dywKKyAgICAgICAgUnVuQXNNb2RhbCwKICAgICAgICAgQ2xvc2UKICAgICB9OwogCkBAIC0xNzgs
NDYgKzE3OSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIHRlc3QtPm1fd2luZG93UHJvcGVydGllc0No
YW5nZWQuYWRkKGdfcGFyYW1fc3BlY19nZXRfbmFtZShwYXJhbVNwZWMpKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgdm9pZCB2aWV3Q2xvc2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgVUlDbGllbnRU
ZXN0KiB0ZXN0KQorICAgIHN0YXRpYyBHdGtXaWRnZXQqIHZpZXdDcmVhdGVDYWxsYmFjayhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBVSUNsaWVudFRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBn
X2Fzc2VydCh3ZWJWaWV3ICE9IHRlc3QtPm1fd2ViVmlldyk7Ci0KLSAgICAgICAgdGVzdC0+bV93
ZWJWaWV3RXZlbnRzLmFwcGVuZChDbG9zZSk7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKHdlYlZp
ZXcpOwotCi0gICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CisgICAg
ICAgIHJldHVybiB0ZXN0LT52aWV3Q3JlYXRlKHdlYlZpZXcpOwogICAgIH0KIAotICAgIHN0YXRp
YyB2b2lkIHZpZXdSZWFkeVRvU2hvdyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBVSUNsaWVudFRl
c3QqIHRlc3QpCisgICAgc3RhdGljIHZvaWQgdmlld1JlYWR5VG9TaG93Q2FsbGJhY2soV2ViS2l0
V2ViVmlldyogd2ViVmlldywgVUlDbGllbnRUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19h
c3NlcnQod2ViVmlldyAhPSB0ZXN0LT5tX3dlYlZpZXcpOwotCi0gICAgICAgIFdlYktpdFdpbmRv
d1Byb3BlcnRpZXMqIHdpbmRvd1Byb3BlcnRpZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRv
d19wcm9wZXJ0aWVzKHdlYlZpZXcpOwotICAgICAgICBnX2Fzc2VydCh3aW5kb3dQcm9wZXJ0aWVz
KTsKLSAgICAgICAgV2luZG93UHJvcGVydGllcyh3aW5kb3dQcm9wZXJ0aWVzKS5hc3NlcnRFcXVh
bCh0ZXN0LT5tX3dpbmRvd1Byb3BlcnRpZXMpOwotCi0gICAgICAgIHRlc3QtPm1fd2ViVmlld0V2
ZW50cy5hcHBlbmQoUmVhZHlUb1Nob3cpOworICAgICAgICB0ZXN0LT52aWV3UmVhZHlUb1Nob3co
d2ViVmlldyk7CiAgICAgfQogCi0gICAgc3RhdGljIEd0a1dpZGdldCogdmlld0NyZWF0ZShXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBVSUNsaWVudFRlc3QqIHRlc3QpCisgICAgc3RhdGljIHZvaWQg
dmlld0Nsb3NlQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgVUlDbGllbnRUZXN0KiB0
ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQod2ViVmlldyA9PSB0ZXN0LT5tX3dlYlZpZXcp
OwotCi0gICAgICAgIEd0a1dpZGdldCogbmV3V2ViVmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXdf
d2l0aF9jb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3KSk7Ci0gICAg
ICAgIGdfb2JqZWN0X3JlZl9zaW5rKG5ld1dlYlZpZXcpOwotCi0gICAgICAgIHRlc3QtPm1fd2Vi
Vmlld0V2ZW50cy5hcHBlbmQoQ3JlYXRlKTsKLQotICAgICAgICBXZWJLaXRXaW5kb3dQcm9wZXJ0
aWVzKiB3aW5kb3dQcm9wZXJ0aWVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfcHJvcGVy
dGllcyhXRUJLSVRfV0VCX1ZJRVcobmV3V2ViVmlldykpOwotICAgICAgICBnX2Fzc2VydCh3aW5k
b3dQcm9wZXJ0aWVzKTsKLSAgICAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVCh3aW5kb3dQcm9wZXJ0aWVzKSk7Ci0gICAgICAgIHRlc3QtPm1f
d2luZG93UHJvcGVydGllc0NoYW5nZWQuY2xlYXIoKTsKLSAgICAgICAgZ19zaWduYWxfY29ubmVj
dCh3aW5kb3dQcm9wZXJ0aWVzLCAibm90aWZ5IiwgR19DQUxMQkFDSyh3aW5kb3dQcm9wZXJ0aWVz
Tm90aWZ5Q2FsbGJhY2spLCB0ZXN0KTsKLQotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dl
YlZpZXcsICJyZWFkeS10by1zaG93IiwgR19DQUxMQkFDSyh2aWV3UmVhZHlUb1Nob3cpLCB0ZXN0
KTsKLSAgICAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAiY2xvc2UiLCBHX0NBTExC
QUNLKHZpZXdDbG9zZSksIHRlc3QpOwotCi0gICAgICAgIHJldHVybiBuZXdXZWJWaWV3OworICAg
ICAgICB0ZXN0LT52aWV3Q2xvc2Uod2ViVmlldyk7CiAgICAgfQogCiAgICAgdm9pZCBzY3JpcHRB
bGVydChXZWJLaXRTY3JpcHREaWFsb2cqIGRpYWxvZykKQEAgLTMwMCw3ICsyNzQsNyBAQCBwdWJs
aWM6CiAgICAgICAgICwgbV9tb3VzZVRhcmdldE1vZGlmaWVycygwKQogICAgIHsKICAgICAgICAg
d2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGlj
YWxseSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKG1fd2ViVmlldyksIFRSVUUpOwotICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImNyZWF0ZSIsIEdfQ0FMTEJBQ0sodmll
d0NyZWF0ZSksIHRoaXMpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImNy
ZWF0ZSIsIEdfQ0FMTEJBQ0sodmlld0NyZWF0ZUNhbGxiYWNrKSwgdGhpcyk7CiAgICAgICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAic2NyaXB0LWRpYWxvZyIsIEdfQ0FMTEJBQ0soc2Ny
aXB0RGlhbG9nKSwgdGhpcyk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAi
bW91c2UtdGFyZ2V0LWNoYW5nZWQiLCBHX0NBTExCQUNLKG1vdXNlVGFyZ2V0Q2hhbmdlZCksIHRo
aXMpOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgInBlcm1pc3Npb24tcmVx
dWVzdCIsIEdfQ0FMTEJBQ0socGVybWlzc2lvblJlcXVlc3RlZCksIHRoaXMpOwpAQCAtMzI4LDYg
KzMwMiw0OCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX21vdXNlVGFyZ2V0SGl0VGVzdFJl
c3VsdC5nZXQoKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIEd0a1dpZGdldCogdmlld0NyZWF0ZShX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQod2ViVmlldyA9
PSBtX3dlYlZpZXcpOworCisgICAgICAgIEd0a1dpZGdldCogbmV3V2ViVmlldyA9IHdlYmtpdF93
ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJW
aWV3KSk7CisgICAgICAgIGdfb2JqZWN0X3JlZl9zaW5rKG5ld1dlYlZpZXcpOworCisgICAgICAg
IG1fd2ViVmlld0V2ZW50cy5hcHBlbmQoQ3JlYXRlKTsKKworICAgICAgICBXZWJLaXRXaW5kb3dQ
cm9wZXJ0aWVzKiB3aW5kb3dQcm9wZXJ0aWVzID0gd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3df
cHJvcGVydGllcyhXRUJLSVRfV0VCX1ZJRVcobmV3V2ViVmlldykpOworICAgICAgICBnX2Fzc2Vy
dCh3aW5kb3dQcm9wZXJ0aWVzKTsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVCh3aW5kb3dQcm9wZXJ0aWVzKSk7CisgICAgICAgIG1fd2luZG93
UHJvcGVydGllc0NoYW5nZWQuY2xlYXIoKTsKKworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHdp
bmRvd1Byb3BlcnRpZXMsICJub3RpZnkiLCBHX0NBTExCQUNLKHdpbmRvd1Byb3BlcnRpZXNOb3Rp
ZnlDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcs
ICJyZWFkeS10by1zaG93IiwgR19DQUxMQkFDSyh2aWV3UmVhZHlUb1Nob3dDYWxsYmFjayksIHRo
aXMpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJjbG9zZSIsIEdfQ0FM
TEJBQ0sodmlld0Nsb3NlQ2FsbGJhY2spLCB0aGlzKTsKKworICAgICAgICByZXR1cm4gbmV3V2Vi
VmlldzsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlYWR5VG9TaG93KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCisgICAgeworICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ICE9IG1fd2Vi
Vmlldyk7CisKKyAgICAgICAgV2ViS2l0V2luZG93UHJvcGVydGllcyogd2luZG93UHJvcGVydGll
cyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X3Byb3BlcnRpZXMod2ViVmlldyk7CisgICAg
ICAgIGdfYXNzZXJ0KHdpbmRvd1Byb3BlcnRpZXMpOworICAgICAgICBXaW5kb3dQcm9wZXJ0aWVz
KHdpbmRvd1Byb3BlcnRpZXMpLmFzc2VydEVxdWFsKG1fd2luZG93UHJvcGVydGllcyk7CisKKyAg
ICAgICAgbV93ZWJWaWV3RXZlbnRzLmFwcGVuZChSZWFkeVRvU2hvdyk7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIHZpZXdDbG9zZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorICAgIHsKKyAg
ICAgICAgZ19hc3NlcnQod2ViVmlldyAhPSBtX3dlYlZpZXcpOworCisgICAgICAgIG1fd2ViVmll
d0V2ZW50cy5hcHBlbmQoQ2xvc2UpOworICAgICAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsK
KworICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3ApOworICAgIH0KKwogICAgIFZl
Y3RvcjxXZWJWaWV3RXZlbnRzPiBtX3dlYlZpZXdFdmVudHM7CiAgICAgV2ViS2l0U2NyaXB0RGlh
bG9nVHlwZSBtX3NjcmlwdERpYWxvZ1R5cGU7CiAgICAgYm9vbCBtX3NjcmlwdERpYWxvZ0NvbmZp
cm1lZDsKQEAgLTM1OCw2ICszNzQsNjIgQEAgc3RhdGljIGdib29sZWFuIGNoZWNrTWltZVR5cGVG
b3JGaWx0ZXIoR3RrRmlsZUZpbHRlciogZmlsdGVyLCBjb25zdCBnY2hhciogbWltZVQKICAgICBy
ZXR1cm4gZ3RrX2ZpbGVfZmlsdGVyX2ZpbHRlcihmaWx0ZXIsICZmaWx0ZXJJbmZvKTsKIH0KIAor
Y2xhc3MgTW9kYWxEaWFsb2dzVGVzdDogcHVibGljIFVJQ2xpZW50VGVzdCB7CitwdWJsaWM6Cisg
ICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShNb2RhbERpYWxvZ3NUZXN0KTsKKworICAgIHN0YXRp
YyB2b2lkIGRpYWxvZ1J1bkFzTW9kYWxDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBN
b2RhbERpYWxvZ3NUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQod2ViVmlldyAh
PSB0ZXN0LT5tX3dlYlZpZXcpOworICAgICAgICB0ZXN0LT5tX3dlYlZpZXdFdmVudHMuYXBwZW5k
KFJ1bkFzTW9kYWwpOworICAgIH0KKworICAgIEd0a1dpZGdldCogdmlld0NyZWF0ZShXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQod2ViVmlldyA9PSBtX3dl
YlZpZXcpOworCisgICAgICAgIEd0a1dpZGdldCogbmV3V2ViVmlldyA9IFVJQ2xpZW50VGVzdDo6
dmlld0NyZWF0ZSh3ZWJWaWV3KTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3
LCAicnVuLWFzLW1vZGFsIiwgR19DQUxMQkFDSyhkaWFsb2dSdW5Bc01vZGFsQ2FsbGJhY2spLCB0
aGlzKTsKKyAgICAgICAgcmV0dXJuIG5ld1dlYlZpZXc7CisgICAgfQorCisgICAgdm9pZCB2aWV3
UmVhZHlUb1Nob3coV2ViS2l0V2ViVmlldyogd2ViVmlldykKKyAgICB7CisgICAgICAgIGdfYXNz
ZXJ0KHdlYlZpZXcgIT0gbV93ZWJWaWV3KTsKKyAgICAgICAgbV93ZWJWaWV3RXZlbnRzLmFwcGVu
ZChSZWFkeVRvU2hvdyk7CisgICAgfQorfTsKKworc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBbGxv
d01vZGFsRGlhbG9ncyhNb2RhbERpYWxvZ3NUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQorewor
ICAgIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGlu
Z3ModGVzdC0+bV93ZWJWaWV3KTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFs
X2RpYWxvZ3Moc2V0dGluZ3MsIFRSVUUpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxi
b2R5IG9ubG9hZD1cIndpbmRvdy5zaG93TW9kYWxEaWFsb2coJ2RhdGE6dGV4dC9odG1sLDxodG1s
Pjxib2R5Lz48c2NyaXB0PndpbmRvdy5jbG9zZSgpOzwvc2NyaXB0PjwvaHRtbD4nKVwiPjwvYm9k
eT48L2h0bWw+IiwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsTWFpbkxvb3BGaW5pc2hlcygpOwor
CisgICAgVmVjdG9yPFVJQ2xpZW50VGVzdDo6V2ViVmlld0V2ZW50cz4mIGV2ZW50cyA9IHRlc3Qt
Pm1fd2ViVmlld0V2ZW50czsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0s
IDQpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0sID09LCBVSUNsaWVudFRlc3Q6OkNy
ZWF0ZSk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1sxXSwgPT0sIFVJQ2xpZW50VGVzdDo6
UmVhZHlUb1Nob3cpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMl0sID09LCBVSUNsaWVu
dFRlc3Q6OlJ1bkFzTW9kYWwpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbM10sID09LCBV
SUNsaWVudFRlc3Q6OkNsb3NlKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdEaXNhbGxv
d01vZGFsRGlhbG9ncyhNb2RhbERpYWxvZ3NUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQorewor
ICAgIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGlu
Z3ModGVzdC0+bV93ZWJWaWV3KTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X21vZGFs
X2RpYWxvZ3Moc2V0dGluZ3MsIEZBTFNFKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48
Ym9keSBvbmxvYWQ9XCJ3aW5kb3cuc2hvd01vZGFsRGlhbG9nKCdkYXRhOnRleHQvaHRtbCw8aHRt
bD48Ym9keS8+PHNjcmlwdD53aW5kb3cuY2xvc2UoKTs8L3NjcmlwdD48L2h0bWw+JylcIj48L2Jv
ZHk+PC9odG1sPiIsIDApOworICAgIC8vIFdlIG5lZWQgdG8gdXNlIGEgdGltZW91dCBoZXJlIGJl
Y2F1c2UgdGhlIHZpZXdDbG9zZSgpIGZ1bmN0aW9uCisgICAgLy8gd29uJ3QgZXZlciBiZSBjYWxs
ZWQgYXMgdGhlIGRpYWxvZyB3b24ndCBiZSBjcmVhdGVkLgorICAgIHRlc3QtPndhaXQoMSk7CisK
KyAgICBWZWN0b3I8VUlDbGllbnRUZXN0OjpXZWJWaWV3RXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+
bV93ZWJWaWV3RXZlbnRzOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwg
MCk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MoVUlDbGll
bnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBo
dG1sT25Mb2FkRm9ybWF0ID0gIjxodG1sPjxib2R5IG9uTG9hZD1cIiVzXCI+PC9ib2R5PjwvaHRt
bD4iOwpAQCAtNzk1LDYgKzg2Nyw4IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNldHRpbmdzIiwgdGVzdFdlYlZpZXdTZXR0aW5ncyk7
CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJyZXBsYWNlLWNvbnRlbnQi
LCB0ZXN0V2ViVmlld1JlcGxhY2VDb250ZW50KTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJjcmVhdGUtcmVhZHktY2xvc2UiLCB0ZXN0V2ViVmlld0NyZWF0ZVJlYWR5
Q2xvc2UpOworICAgIE1vZGFsRGlhbG9nc1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhbGxv
dy1tb2RhbC1kaWFsb2dzIiwgdGVzdFdlYlZpZXdBbGxvd01vZGFsRGlhbG9ncyk7CisgICAgTW9k
YWxEaWFsb2dzVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImRpc2FsbG93LW1vZGFsLWRpYWxv
Z3MiLCB0ZXN0V2ViVmlld0Rpc2FsbG93TW9kYWxEaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJqYXZhc2NyaXB0LWRpYWxvZ3MiLCB0ZXN0V2ViVmlld0ph
dmFTY3JpcHREaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJ3aW5kb3ctcHJvcGVydGllcyIsIHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyk7CiAgICAg
VUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibW91c2UtdGFyZ2V0IiwgdGVzdFdl
YlZpZXdNb3VzZVRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDE2ZDRhOTgxZGY1YTNjMTg2ZWQzNTgyODU3NjU5MWNmZmFmYjJjZWQuLjMxNGQy
ZGI1YTU5ZjgzYzBiMDVkYWM3YTk2MzFkMTQ1MzQ3MmM4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xODYsNiArMTg2LDcgQEAgV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCogcGFnZUNsaWVudCwgUGFzc1JlZlB0cjxXZWJQcm9j
ZXNzUHJveHk+IHAKICAgICAsIG1fZ2FwQmV0d2VlblBhZ2VzKDApCiAgICAgLCBtX2lzVmFsaWQo
dHJ1ZSkKICAgICAsIG1faXNDbG9zZWQoZmFsc2UpCisgICAgLCBtX2NhblJ1bk1vZGFsKGZhbHNl
KQogICAgICwgbV9pc0luUHJpbnRpbmdNb2RlKGZhbHNlKQogICAgICwgbV9pc1BlcmZvcm1pbmdE
T01QcmludE9wZXJhdGlvbihmYWxzZSkKICAgICAsIG1faW5EZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShmYWxzZSkKQEAgLTMwNCw3ICszMDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6
ZVVJQ2xpZW50KGNvbnN0IFdLUGFnZVVJQ2xpZW50KiBjbGllbnQpCiAgICAgbV91aUNsaWVudC5p
bml0aWFsaXplKGNsaWVudCk7CiAKICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChtX3VpQ2xpZW50LmNhblJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbCgpKSwgbV9wYWdlSUQpOwotICAgIHByb2Nlc3MoKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuTW9kYWwobV91aUNsaWVudC5jYW5SdW5Nb2Rh
bCgpKSwgbV9wYWdlSUQpOworICAgIHNldENhblJ1bk1vZGFsKG1fdWlDbGllbnQuY2FuUnVuTW9k
YWwoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplRmluZENsaWVudChjb25z
dCBXS1BhZ2VGaW5kQ2xpZW50KiBjbGllbnQpCkBAIC0zNDkxLDcgKzM0OTIsNyBAQCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKCkgY29u
c3QKICAgICBwYXJhbWV0ZXJzLnNlc3Npb25TdGF0ZSA9IFNlc3Npb25TdGF0ZShtX2JhY2tGb3J3
YXJkTGlzdC0+ZW50cmllcygpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEluZGV4KCkpOwog
ICAgIHBhcmFtZXRlcnMuaGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRCA9IFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW06OmhpZ2hlZFVzZWRJdGVtSUQoKTsKICAgICBwYXJhbWV0ZXJzLmNhblJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbCA9IG1fdWlDbGllbnQuY2FuUnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKCk7Ci0gICAgcGFyYW1ldGVycy5jYW5SdW5Nb2RhbCA9IG1fdWlDbGllbnQuY2Fu
UnVuTW9kYWwoKTsKKyAgICBwYXJhbWV0ZXJzLmNhblJ1bk1vZGFsID0gbV9jYW5SdW5Nb2RhbDsK
ICAgICBwYXJhbWV0ZXJzLmRldmljZVNjYWxlRmFjdG9yID0gbV9pbnRyaW5zaWNEZXZpY2VTY2Fs
ZUZhY3RvcjsKICAgICBwYXJhbWV0ZXJzLm1lZGlhVm9sdW1lID0gbV9tZWRpYVZvbHVtZTsKIApA
QCAtMzY5Miw2ICszNjkzLDIzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZFJlbW92
ZWRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRDYW5SdW5Nb2RhbChib29sIGNhblJ1bk1vZGFsKQorewor
ICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJdCdzIG9ubHkg
cG9zc2libGUgdG8gY2hhbmdlIHRoZSBzdGF0ZSBmb3IgYSBXZWJQYWdlIHdoaWNoCisgICAgLy8g
YWxyZWFkeSBxdWFsaWZpZXMgZm9yIHJ1bm5pbmcgbW9kYWwgY2hpbGQgd2ViIHBhZ2VzLCBvdGhl
cndpc2UKKyAgICAvLyB0aGVyZSdzIG5vIG90aGVyIHBvc3NpYmlsaXR5IHRoYW4gbm90IGFsbG93
aW5nIGl0LgorICAgIG1fY2FuUnVuTW9kYWwgPSBtX3VpQ2xpZW50LmNhblJ1bk1vZGFsKCkgJiYg
Y2FuUnVuTW9kYWw7CisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRD
YW5SdW5Nb2RhbChtX2NhblJ1bk1vZGFsKSwgbV9wYWdlSUQpOworfQorCitib29sIFdlYlBhZ2VQ
cm94eTo6Y2FuUnVuTW9kYWwoKQoreworICAgIHJldHVybiBpc1ZhbGlkKCkgPyBtX2NhblJ1bk1v
ZGFsIDogZmFsc2U7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblByaW50aW5nKFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbykKIHsKICAgICBpZiAo
bV9pc0luUHJpbnRpbmdNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDU5OWJjYzQ3ZmM4ZDU2YjBjMTcwMTcxYWY2YzQxODA4OWJjNThiMGMuLjE2MjcyODBl
NTEyMzE4MTRiMjI3Y2Q4NTMyMmMxYTI1YTNhMWNlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTYzNyw2ICs2MzcsOSBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IGFjY2Vzc2liaWxpdHlQbHVnSUQoKSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc2liaWxpdHlQbHVn
SUQ7IH0KICNlbmRpZgogCisgICAgdm9pZCBzZXRDYW5SdW5Nb2RhbChib29sKTsKKyAgICBib29s
IGNhblJ1bk1vZGFsKCk7CisKICAgICB2b2lkIGJlZ2luUHJpbnRpbmcoV2ViRnJhbWVQcm94eSos
IGNvbnN0IFByaW50SW5mbyYpOwogICAgIHZvaWQgZW5kUHJpbnRpbmcoKTsKICAgICB2b2lkIGNv
bXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBQ
YXNzUmVmUHRyPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4pOwpAQCAtMTA2MSw2ICsxMDY0LDkgQEAg
cHJpdmF0ZToKICAgICAvLyBXaGV0aGVyIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKSBoYXMgYmVlbiBj
YWxsZWQgb24gdGhpcyBwYWdlLgogICAgIGJvb2wgbV9pc0Nsb3NlZDsKIAorICAgIC8vIFdoZXRo
ZXIgaXQgY2FuIHJ1biBtb2RhbCBjaGlsZCB3ZWIgcGFnZXMuCisgICAgYm9vbCBtX2NhblJ1bk1v
ZGFsOworCiAgICAgYm9vbCBtX2lzSW5QcmludGluZ01vZGU7CiAgICAgYm9vbCBtX2lzUGVyZm9y
bWluZ0RPTVByaW50T3BlcmF0aW9uOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNzZmMWMzNGUwYzg1ODliNzNkM2I4NjJkMzNkYWMyOGY1YTUy
NGFhYS4uMjYxYmU2MmJhMzVjZGE2ZDBlYTgwYzk5NDQyMTM0ZjkwYzBhM2VmNiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDEyLTA2LTIwICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3Igd2luZG93LnNob3dNb2RhbERpYWxvZyBp
biBXZWJLaXQyR1RLKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzk1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgbW9kYWwgZGlhbG9ncyBpbiBHVEsncyBNaW5pQnJvd3Nlci4K
KworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgICh3
ZWJWaWV3UnVuQXNNb2RhbCk6CisgICAgICAgICh3ZWJWaWV3Q3JlYXRlKToKKyAgICAgICAgKHdl
YlZpZXdEZWNpZGVQb2xpY3kpOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3dfbmV3KToKKyAgICAg
ICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oOgorICAgICAgICAqIE1pbmlCcm93
c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChjcmVhdGVCcm93c2VyV2luZG93KToKKwogMjAxMi0w
Ni0xOSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VG
TF1bUmVncmVzc2lvbl0gQnVpbGQgYnJlYWsgYWZ0ZXIgcjEyMDc4NgpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmMKaW5kZXggY2VmOWU3ZDQ2NjQxMTNlYmZmMGEzMDQ4YWE5NDdiYmE5
NzZjMDdhMS4uMGI5OTQ3N2M4MWJhMzVkZTlmYmYwMTNkMGExMzU0NDRmMWU1YTI0ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC0yMzMsNiArMjMzLDExIEBAIHN0YXRp
YyB2b2lkIHdlYlZpZXdDbG9zZShXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBCcm93c2VyV2luZG93
ICp3aW5kb3cpCiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQod2luZG93KSk7CiB9
CiAKK3N0YXRpYyB2b2lkIHdlYlZpZXdSdW5Bc01vZGFsKFdlYktpdFdlYlZpZXcgKndlYlZpZXcs
IEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3sKKyAgICBndGtfd2luZG93X3NldF9tb2RhbChHVEtf
V0lORE9XKHdpbmRvdyksIFRSVUUpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJWaWV3UmVhZHlUb1No
b3coV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogewogICAg
IFdlYktpdFdpbmRvd1Byb3BlcnRpZXMgKndpbmRvd1Byb3BlcnRpZXMgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3dpbmRvd19wcm9wZXJ0aWVzKHdlYlZpZXcpOwpAQCAtMjYwLDggKzI2NSw5IEBAIHN0
YXRpYyBHdGtXaWRnZXQgKndlYlZpZXdDcmVhdGUoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJv
d3NlcldpbmRvdyAqd2luZG93KQogICAgIFdlYktpdFdlYlZpZXcgKm5ld1dlYlZpZXcgPSBXRUJL
SVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQod2Via2l0X3dlYl92
aWV3X2dldF9jb250ZXh0KHdlYlZpZXcpKSk7CiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0
aW5ncyhuZXdXZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsK
IAotICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KG5ld1dlYlZp
ZXcpOworICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5kb3dfbmV3KG5ld1dl
YlZpZXcsIEdUS19XSU5ET1cod2luZG93KSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJW
aWV3LCAicmVhZHktdG8tc2hvdyIsIEdfQ0FMTEJBQ0sod2ViVmlld1JlYWR5VG9TaG93KSwgbmV3
V2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJydW4tYXMtbW9kYWwi
LCBHX0NBTExCQUNLKHdlYlZpZXdSdW5Bc01vZGFsKSwgbmV3V2luZG93KTsKICAgICBnX3NpZ25h
bF9jb25uZWN0KG5ld1dlYlZpZXcsICJjbG9zZSIsIEdfQ0FMTEJBQ0sod2ViVmlld0Nsb3NlKSwg
bmV3V2luZG93KTsKICAgICByZXR1cm4gR1RLX1dJREdFVChuZXdXZWJWaWV3KTsKIH0KQEAgLTI4
NCw3ICsyOTAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0RlY2lkZVBvbGljeShXZWJLaXRX
ZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQb2xpY3lEZWNpc2lvbgogCiAgICAgV2ViS2l0V2ViVmll
dyAqbmV3V2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhf
Y29udGV4dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldykpKTsKICAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKG5ld1dlYlZpZXcsIHdlYmtpdF93ZWJfdmlld19nZXRf
c2V0dGluZ3Mod2ViVmlldykpOwotICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93
aW5kb3dfbmV3KG5ld1dlYlZpZXcpOworICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nl
cl93aW5kb3dfbmV3KG5ld1dlYlZpZXcsIEdUS19XSU5ET1cod2luZG93KSk7CiAgICAgd2Via2l0
X3dlYl92aWV3X2xvYWRfcmVxdWVzdChuZXdXZWJWaWV3LCB3ZWJraXRfbmF2aWdhdGlvbl9wb2xp
Y3lfZGVjaXNpb25fZ2V0X3JlcXVlc3QobmF2aWdhdGlvbkRlY2lzaW9uKSk7CiAgICAgZ3RrX3dp
ZGdldF9zaG93KG5ld1dpbmRvdyk7CiAKQEAgLTUxNiwxMSArNTIyLDEyIEBAIHN0YXRpYyB2b2lk
IGJyb3dzZXJfd2luZG93X2NsYXNzX2luaXQoQnJvd3NlcldpbmRvd0NsYXNzICprbGFzcykKIH0K
IAogLy8gUHVibGljIEFQSS4KLUd0a1dpZGdldCAqYnJvd3Nlcl93aW5kb3dfbmV3KFdlYktpdFdl
YlZpZXcgKnZpZXcpCitHdGtXaWRnZXQgKmJyb3dzZXJfd2luZG93X25ldyhXZWJLaXRXZWJWaWV3
ICp2aWV3LCBHdGtXaW5kb3cgKnBhcmVudCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcodmlldyksIDApOwogCiAgICAgcmV0dXJuIEdUS19XSURHRVQoZ19v
YmplY3RfbmV3KEJST1dTRVJfVFlQRV9XSU5ET1csCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ0cmFuc2llbnQtZm9yIiwgcGFyZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAidHlwZSIsIEdUS19XSU5ET1dfVE9QTEVWRUwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ2aWV3IiwgdmlldywgTlVMTCkpOwogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuaCBiL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9Ccm93c2VyV2luZG93LmgKaW5kZXggMDYzOTdhNWNjMGFmOTEyMmJjNDNhM2NkNDVk
ODVmNDg5MjVlYTM4NS4uNjY2NzU0NjJmNTdhNTE4NGQxNTc4YjMwZWQzNWExMjI5NDAwMjdlZCAx
MDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuaAorKysgYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCkBAIC00Myw3ICs0Myw3IEBAIHR5
cGVkZWYgc3RydWN0IF9Ccm93c2VyV2luZG93Q2xhc3MgICBCcm93c2VyV2luZG93Q2xhc3M7CiAK
IEdUeXBlIGJyb3dzZXJfd2luZG93X2dldF90eXBlKHZvaWQpOwogCi1HdGtXaWRnZXQqIGJyb3dz
ZXJfd2luZG93X25ldyhXZWJLaXRXZWJWaWV3Kik7CitHdGtXaWRnZXQqIGJyb3dzZXJfd2luZG93
X25ldyhXZWJLaXRXZWJWaWV3KiwgR3RrV2luZG93Kik7CiBXZWJLaXRXZWJWaWV3KiBicm93c2Vy
X3dpbmRvd19nZXRfdmlldyhCcm93c2VyV2luZG93Kik7CiB2b2lkIGJyb3dzZXJfd2luZG93X2xv
YWRfdXJpKEJyb3dzZXJXaW5kb3cgKiwgY29uc3QgY2hhciAqdXJpKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWlu
LmMKaW5kZXggYjI2NmNkYzQyYTFhNGM3ODkyODA0MDlkNjgwYjIzM2M2MmFiZTZmMS4uOTg4ZTM5
Njk2NDZjZmMzNDA5ODc0NGFlMDE4MmI0M2MzYzNiMWQ2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBA
IC00NSw3ICs0NSw3IEBAIHN0YXRpYyBnY2hhciAqYXJndW1lbnRUb1VSTChjb25zdCBjaGFyICpm
aWxlbmFtZSkKIHN0YXRpYyB2b2lkIGNyZWF0ZUJyb3dzZXJXaW5kb3coY29uc3QgZ2NoYXIgKnVy
aSwgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzKQogewogICAgIEd0a1dpZGdldCAqd2Vi
VmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXcoKTsKLSAgICBHdGtXaWRnZXQgKm1haW5XaW5kb3cg
PSBicm93c2VyX3dpbmRvd19uZXcoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBHdGtX
aWRnZXQgKm1haW5XaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoV0VCS0lUX1dFQl9WSUVXKHdl
YlZpZXcpLCBOVUxMKTsKICAgICBnY2hhciAqdXJsID0gYXJndW1lbnRUb1VSTCh1cmkpOwogCiAg
ICAgaWYgKHdlYmtpdFNldHRpbmdzKSB7Cg==
</data>
<flag name="review"
          id="156310"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>