<?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>19392</bug_id>
          
          <creation_ts>2008-06-04 07:22:20 -0700</creation_ts>
          <short_desc>[Gtk] Enable WebInspector in the Gtk port</short_desc>
          <delta_ts>2008-10-29 15:42:50 -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>PC</rep_platform>
          <op_sys>Linux</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>19603</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jan Alonzo">jmalonzo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>a.renevier</cc>
    
    <cc>christian</cc>
    
    <cc>gustavo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>82293</commentid>
    <comment_count>0</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-06-04 07:22:20 -0700</bug_when>
    <thetext>The Gtk port is currently missing a WebInspector. It&apos;d be nice if it has one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85513</commentid>
    <comment_count>1</comment_count>
      <attachid>22170</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-09 05:04:52 -0700</bug_when>
    <thetext>Created attachment 22170
initial implementation of enabling the inspector

I did not include a changelog entry yet, since this is still a bit initial, though I believe some review would be important anyway. From my initial tests, it seems like enabling the inspector will help us uncover a bunch of javascript-related bugs in webkit/gtk+ - I had a number of segfaults while toying around with it in GtkLauncher and Midori.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85514</commentid>
    <comment_count>2</comment_count>
      <attachid>22171</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-09 05:06:21 -0700</bug_when>
    <thetext>Created attachment 22171
simple test code for the web inspector in GtkLauncher

If you want to play with the inspector, here&apos;s a patch to GtkLauncher.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85823</commentid>
    <comment_count>3</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-07-11 16:12:32 -0700</bug_when>
    <thetext>Hi gustavo, just a few suggestions

* Please don&apos;t include the GIO file crasher patch 
* Kindly fix your ChangeLog.
* create-inspector-web-view doesn&apos;t seem right. How about inspect-web-view because isn&apos;t that what we&apos;re doing here?

Apart from that looks good. (Not sure if we should have a WebKitWebInspector class though. Mac and win ports have it so maybe we should mimic one as well) </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85885</commentid>
    <comment_count>4</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2008-07-14 05:17:23 -0700</bug_when>
    <thetext>I tried your patch, and it&apos;s nice to have inspector with gtk :)

 But there is a problem with m_webView. When inspector window is closed, it&apos;s inner Page object is deleted, but m_webView is not reset. That causes multiple problems:

 go to a web page, open inspector, close inspector, open inspector, inspector won&apos;t open.

 That&apos;s because in InspectorClient::createPage
 +    if (m_webView)
 +      return core(m_webView);
 will return a reference to a deleted page.

Also, launching GtkLauncher, opening inspector, and closing GtkLauncher will result in a crash in InspectorClient::closeWindow at line 

+ g_signal_emit_by_name(GTK_WIDGET(m_webView), &quot;delete-event&quot;);

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85888</commentid>
    <comment_count>5</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-14 06:11:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I tried your patch, and it&apos;s nice to have inspector with gtk :)

hey! thanks, and thanks for the comments! that was a first go, and I&apos;m currently refactoring the patch to add a WebKitWebInspector class, and I&apos;ll try to address the problems you point; expect it attached here tonight or tomorrow =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85889</commentid>
    <comment_count>6</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2008-07-14 06:57:04 -0700</bug_when>
    <thetext>Another small thing:
If I understand correctly, shouldn&apos;t 

 core(m_webView)-&gt;inspectorController()-&gt;setWindowVisible(true); 

be

 core(m_inspectedWebView)-&gt;inspectorController()-&gt;setWindowVisible(true); 

? If I make that change, I get for example focus on selected node (which I don&apos;t otherwise)


&gt; hey! thanks, and thanks for the comments! that was a first go, and I&apos;m
&gt; currently refactoring the patch to add a WebKitWebInspector class

Great, I&apos;ll test your next patch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85891</commentid>
    <comment_count>7</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-14 08:23:37 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Another small thing:
&gt; If I understand correctly, shouldn&apos;t 
&gt; 
&gt;  core(m_webView)-&gt;inspectorController()-&gt;setWindowVisible(true); 
&gt; 
&gt; be
&gt; 
&gt;  core(m_inspectedWebView)-&gt;inspectorController()-&gt;setWindowVisible(true); 

OMGWTF! yeah, you&apos;re quite right! thanks =)

&gt; ? If I make that change, I get for example focus on selected node (which I
&gt; don&apos;t otherwise)
&gt; 
&gt; 
&gt; &gt; hey! thanks, and thanks for the comments! that was a first go, and I&apos;m
&gt; &gt; currently refactoring the patch to add a WebKitWebInspector class
&gt; 
&gt; Great, I&apos;ll test your next patch :)
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85909</commentid>
    <comment_count>8</comment_count>
      <attachid>22170</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-07-14 14:27:15 -0700</bug_when>
    <thetext>Comment on attachment 22170
initial implementation of enabling the inspector

(Clearing review flag, the patch is being revised anyway.)

&gt;+    webkit_web_view_open(m_webView, &quot;file://&quot;DATA_DIR&quot;/webkit-1.0/webinspector/inspector.html&quot;);
&gt;+
&gt;+    return core(m_webView);

Please use g_get_user_data_dir and g_get_system_data_dirs to find the right location of the data files. And I don&apos;t think the folder should be versioned.

&gt; void InspectorClient::attachWindow()
&gt; {
&gt;-    notImplemented();
&gt;+    /* I don&apos;t think we should let a widget inside the inspector deal
&gt;+       with this for WebKit/GTK+ */
&gt; }

I wonder if the comment should actually say what &quot;this&quot; means.

&gt;+    /**
&gt;+    * WebKitWebSettings:enable-developer-extras:
&gt;+    *
&gt;+    * Whether developer extensions should be enabled.
&gt;+    *
&gt;+    * Since: 1.0.2
&gt;+    */
&gt;+    g_object_class_install_property(gobject_class,
&gt;+                                    PROP_ENABLE_DEVELOPER_EXTRAS,
&gt;+                                    g_param_spec_boolean(
&gt;+                                    &quot;enable-developer-extras&quot;,
&gt;+                                    &quot;Enable Developer Extras&quot;,
&gt;+                                    &quot;Enables special extensions that help developers&quot;,
&gt;+                                    FALSE,
&gt;+                                    flags));

That property name feels a little awkward. Would enable-debug do it as well?

&gt;+    /**
&gt;+     * WebKitWebView::create-inspector-web-view:
&gt;+     * @web_view: the object on which the signal is emitted
&gt;+     * @return: a newly allocated #WebKitWebView or %NULL
&gt;+     *
&gt;+     * Emitted when the creation of a new window for the Web Inspector
&gt;+     * is requested.  If this signal is handled the signal handler
&gt;+     * should return the newly created #WebKitWebView.
&gt;+     *
&gt;+     * The signal handlers should not try to deal with the reference
&gt;+     * count for the new #WebKitWebView. The widget to which the
&gt;+     * widget is added will handle that.
&gt;+     */

&gt; * create-inspector-web-view doesn&apos;t seem right. How about inspect-web-view
&gt; because isn&apos;t that what we&apos;re doing here?

I tend to disagree. There is a web view being created, and the name should reflect that. &apos;inspect-web-view&apos; looks like something that operates on an existing inspector. However I wonder if the name can be a little shorter, for instance would create-inspector be a good name? On the other hand, it might be less clear, not sure about that.

&gt; Apart from that looks good. (Not sure if we should have a WebKitWebInspector
&gt; class though. Mac and win ports have it so maybe we should mimic one as well) 

What is the purpose of a WebKitWebInspector class here? Right now you can load the inspector into an arbitrary web view, including a sub class. But that won&apos;t work if the inspector is a different class.
I&apos;d like to see an explanation of why we need another class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85936</commentid>
    <comment_count>9</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-07-15 04:29:06 -0700</bug_when>
    <thetext>Hi Christian,

(In reply to comment #8)
&gt; &gt;+    /**
&gt; &gt;+    * WebKitWebSettings:enable-developer-extras:
&gt; &gt;+    *
&gt; &gt;+    * Whether developer extensions should be enabled.
&gt; &gt;+    *
&gt; &gt;+    * Since: 1.0.2
&gt; &gt;+    */
&gt; &gt;+    g_object_class_install_property(gobject_class,
&gt; &gt;+                                    PROP_ENABLE_DEVELOPER_EXTRAS,
&gt; &gt;+                                    g_param_spec_boolean(
&gt; &gt;+                                    &quot;enable-developer-extras&quot;,
&gt; &gt;+                                    &quot;Enable Developer Extras&quot;,
&gt; &gt;+                                    &quot;Enables special extensions that help developers&quot;,
&gt; &gt;+                                    FALSE,
&gt; &gt;+                                    flags));
&gt; 
&gt; That property name feels a little awkward. Would enable-debug do it as well?

Mac and Win call this &quot;developer extras&quot;. Calling this enable-debug or diverging for that matter would be confusing especially if we are going to use the Mac and Win ports as our reference implementation.

&gt; &gt;+    /**
&gt; &gt;+     * WebKitWebView::create-inspector-web-view:
&gt; &gt;+     * @web_view: the object on which the signal is emitted
&gt; &gt;+     * @return: a newly allocated #WebKitWebView or %NULL
&gt; &gt;+     *
&gt; &gt;+     * Emitted when the creation of a new window for the Web Inspector
&gt; &gt;+     * is requested.  If this signal is handled the signal handler
&gt; &gt;+     * should return the newly created #WebKitWebView.
&gt; &gt;+     *
&gt; &gt;+     * The signal handlers should not try to deal with the reference
&gt; &gt;+     * count for the new #WebKitWebView. The widget to which the
&gt; &gt;+     * widget is added will handle that.
&gt; &gt;+     */
&gt; 
&gt; &gt; * create-inspector-web-view doesn&apos;t seem right. How about inspect-web-view
&gt; &gt; because isn&apos;t that what we&apos;re doing here?
&gt; 
&gt; I tend to disagree. There is a web view being created, and the name should
&gt; reflect that. &apos;inspect-web-view&apos; looks like something that operates on an
&gt; existing inspector. However I wonder if the name can be a little shorter, for
&gt; instance would create-inspector be a good name? On the other hand, it might be
&gt; less clear, not sure about that.

To me &quot;inspect-web-view&quot; means we are inspecting a/the web-view. I agree that there is a web view being created, but that web view is &quot;special&quot; because rather than displaying normal content like most web views, it displays information about a web view&apos;s content. 

Gtk events, for example, means something happened (a widget was clicked, toggled, about to be destroyed, etc..). We should do the same thing here (e.g. a web view is about to be inspected, whatever). Creating an inspector is less clear as by itself, an inspector is really not stand-alone but is associated with/inspecting a web view.

Conceptually, there should be difference between a WebView and a WebInspector (which is a web view + other things that developers care about).

&gt; &gt; Apart from that looks good. (Not sure if we should have a WebKitWebInspector
&gt; &gt; class though. Mac and win ports have it so maybe we should mimic one as well) 
&gt; 
&gt; What is the purpose of a WebKitWebInspector class here? Right now you can load
&gt; the inspector into an arbitrary web view, including a sub class. But that won&apos;t
&gt; work if the inspector is a different class.
&gt; I&apos;d like to see an explanation of why we need another class.
&gt; 

I&apos;m not sure about this either but one thing that comes to mind is testability of the inspector. Perhaps when there&apos;s a use case we can add it or when we have actual tests.

Cheers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85949</commentid>
    <comment_count>10</comment_count>
      <attachid>22282</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-15 11:40:10 -0700</bug_when>
    <thetext>Created attachment 22282
My refactored patch

Here&apos;s the code. I have seen the latest comments, but I&apos;d like to know which of them still stand by looking at the new approach, if you guys have the time =).

I&apos;ll take a look at using g_get_system_data_dirs. The directory must be versioned, IMO, so that we can have multiple versions of WebKit installed at once, to ease transitions when we decide upon API/ABI breakage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85950</commentid>
    <comment_count>11</comment_count>
      <attachid>22283</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-15 11:41:09 -0700</bug_when>
    <thetext>Created attachment 22283
updated patch for GtkLauncher, just for testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86007</commentid>
    <comment_count>12</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-07-15 23:12:23 -0700</bug_when>
    <thetext>Please take a look at the coding style. Do not use NULL in C++, have early exits, place the curly braces according to the rules. Otherwise it mostly looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86027</commentid>
    <comment_count>13</comment_count>
      <attachid>22282</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-07-16 03:23:17 -0700</bug_when>
    <thetext>Comment on attachment 22282
My refactored patch

&gt;+     * WebKitWebInspector::inspect-web-view:
&gt;+     * @web_inspector: the object on which the signal is emitted
&gt;+     * @web_view: the #WebKitWeb which will be inspected
&gt;+     * @return: a newly allocated #WebKitWebView or %NULL
&gt;+     *
&gt;+     * Emitted when the user activates the &apos;inspect&apos; context menu item
&gt;+     * to inspect a web view. The application which is interested in
&gt;+     * the inspector should create a window, or otherwise add the
&gt;+     * #WebKitWebView it creates to an existing window.
&gt;+     *
&gt;+     * The #WebKitWebView must never be destroyed; that means that you
&gt;+     * probably want to handle the delete-event and destory signals of
&gt;+     * windows containing the inspector #WebKitWebView, so that you
&gt;+     * can hide them when they are closed, and show them again when
&gt;+     * ::show-window is emitted.

This is slightly wrong, when &quot;destroy&quot; is emitted it&apos;s already too late for saving the window, the only remaining option is to reparent the widget.

Would it be too complicated to work around the issue of a destroyed web view on the WebKit side? It should be possible, to unset the view via gtk_widget_destroyed and request a new web view as needed, shouldn&apos;t it?

&gt;+     * WebKitWebInspector::attach-window:
&gt;+     * @web_inspector: the object on which the signal is emitted
&gt;+     * @return: %TRUE if the signal has been handled
&gt;+     *
&gt;+     * Emitted when the inspector window should be attached to the
&gt;+     * window in which the #WebKitWebView it is inspecting is located.
&gt;+     */
&gt;+    webkit_web_inspector_signals[ATTACH_WINDOW] = g_signal_new(&quot;attach-window&quot;,
&gt;+            G_TYPE_FROM_CLASS(klass),
&gt;+            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
&gt;+            G_STRUCT_OFFSET (WebKitWebInspectorClass, attach_window),
&gt;+            g_signal_accumulator_true_handled,
&gt;+            NULL,
&gt;+            webkit_marshal_BOOLEAN__VOID,
&gt;+            G_TYPE_BOOLEAN , 0);

Could the documentation be a little clearer? To me &quot;attaching to a window&quot; doesn&apos;t intuitively make much sense.

&gt;+     * WebKitWebInspector::uri-changed:
&gt;+     * @web_inspector: the object on which the signal is emitted
&gt;+     * @return: %TRUE if the signal has been handled
&gt;+     *
&gt;+     * Emitted when the URI being inspected changes.
&gt;+     */
&gt;+    webkit_web_inspector_signals[URI_CHANGED] = g_signal_new(&quot;uri-changed&quot;,
&gt;+            G_TYPE_FROM_CLASS(klass),
&gt;+            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
&gt;+            G_STRUCT_OFFSET (WebKitWebInspectorClass, uri_changed),
&gt;+            g_signal_accumulator_true_handled,
&gt;+            NULL,
&gt;+            webkit_marshal_BOOLEAN__STRING,
&gt;+            G_TYPE_BOOLEAN , 1,
&gt;+            G_TYPE_STRING);

I suggest an URI property instead of a signal. The current patch doesn&apos;t seem to do anything with the boolean return value anyway.

&gt;+    /**
&gt;+     * WebKitWebInspector::inspector-destroyed:
&gt;+     * @web_inspector: the object on which the signal is emitted
&gt;+     * @return: %TRUE if the signal has been handled
&gt;+     *
&gt;+     * Emitted when the inspector is destroyed.
&gt;+     */
&gt;+    webkit_web_inspector_signals[INSPECTOR_DESTROYED] = g_signal_new(&quot;inspector-destroyed&quot;,
&gt;+            G_TYPE_FROM_CLASS(klass),
&gt;+            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
&gt;+            G_STRUCT_OFFSET (WebKitWebInspectorClass, inspector_destroyed),
&gt;+            g_signal_accumulator_true_handled,
&gt;+            NULL,
&gt;+            webkit_marshal_BOOLEAN__VOID,
&gt;+            G_TYPE_BOOLEAN , 0);

The boolean return value isn&apos;t used at all. Would it make sense to use GtkObject, gtk_object_destroy and &quot;destroy&quot; here? If not, what about s/inspector-destroyed/destroy, which is obvious enough as I see it.

&gt;+    /*
&gt;+     * properties
&gt;+     */
&gt;+    g_object_class_install_property(gobject_class, PROP_INSPECTOR_WEB_VIEW,
&gt;+                                    g_param_spec_object(&quot;inspector-web-view&quot;,
&gt;+                                                        &quot;Inspector Web View&quot;,
&gt;+                                                        &quot;The Web View that renders the Web Inspector itself&quot;,
&gt;+                                                        WEBKIT_TYPE_WEB_VIEW,
&gt;+                                                        WEBKIT_PARAM_READWRITE));

What about s/inspector-web-view/web-view, since it&apos;s probably obvious enough.

&gt;+     */
&gt;+    klass-&gt;inspect_web_view = webkit_web_inspector_real_inspect_web_view;
&gt;+    klass-&gt;show_window = webkit_web_inspector_real_show_window;
&gt;+    klass-&gt;attach_window = webkit_web_inspector_real_attach_window;
&gt;+    klass-&gt;dettach_window = webkit_web_inspector_real_dettach_window;
&gt;+    klass-&gt;close_window = webkit_web_inspector_real_close_window;
&gt;+    klass-&gt;uri_changed = webkit_web_inspector_real_uri_changed;
&gt;+    klass-&gt;inspector_destroyed = webkit_web_inspector_real_inspector_destroyed;

Do we need all those defaults, most of which are empty placeholders?

&gt;@@ -1206,6 +1212,13 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
&gt;                                                         WEBKIT_TYPE_WEB_SETTINGS,
&gt;                                                         WEBKIT_PARAM_READWRITE));
&gt; 
&gt;+    g_object_class_install_property(objectClass, PROP_INSPECTOR,
&gt;+                                    g_param_spec_object(&quot;inspector&quot;,
&gt;+                                                        &quot;Inspector&quot;,
&gt;+                                                        &quot;The associated WebKitWebInspector instance&quot;,
&gt;+                                                        WEBKIT_TYPE_WEB_INSPECTOR,
&gt;+                                                        WEBKIT_PARAM_READABLE));
&gt;+

The property ought to be &quot;web-inspector&quot;, right?

Looking at the code I see the use case of the WebInspector class and I think it&apos;s actually a good idea. I imagine you can keep one application wide instance around like you can with the WebSettings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86032</commentid>
    <comment_count>14</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-16 04:19:06 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 22282 [edit])
&gt; This is slightly wrong, when &quot;destroy&quot; is emitted it&apos;s already too late for
&gt; saving the window, the only remaining option is to reparent the widget.
&gt; 
&gt; Would it be too complicated to work around the issue of a destroyed web view on
&gt; the WebKit side? It should be possible, to unset the view via
&gt; gtk_widget_destroyed and request a new web view as needed, shouldn&apos;t it?

I thought about doing it that way, but I can&apos;t remember why I decided going with the already existing WebKit &apos;workflow&apos; would be better. I can implement that; I believe it would feel more natural indeed.

&gt; Could the documentation be a little clearer? To me &quot;attaching to a window&quot;
&gt; doesn&apos;t intuitively make much sense.

I decided to actually implement this signal because the &apos;attach&apos; and &apos;dettach&apos; commands are in the Inspector&apos;s HTML, and I&apos;m not sure we will want to deviate from that UI.

I&apos;m not sure how to improve that documentation, though. Perhaps something like &apos;Emitted when the inspector should appear at the same window as the #WebKitWebView being inspected.&apos;?
 
&gt; I suggest an URI property instead of a signal. The current patch doesn&apos;t seem
&gt; to do anything with the boolean return value anyway.

That works for me. I added the boolean return values on everything to let the user create a number of signals, and decide on one of them to be the last.

&gt; The boolean return value isn&apos;t used at all. Would it make sense to use
&gt; GtkObject, gtk_object_destroy and &quot;destroy&quot; here? If not, what about
&gt; s/inspector-destroyed/destroy, which is obvious enough as I see it.

I think the name change is in order, but I&apos;m not sure about how I&apos;d use GtkObject.
 
&gt; What about s/inspector-web-view/web-view, since it&apos;s probably obvious enough.

oki!
 
&gt; Do we need all those defaults, most of which are empty placeholders?

I am mostly mimicing WebKitWebView, which does have such empty placeholders, but I was on the brink of removing them. I was just worried that then we&apos;de not have the members in the class structure, and may have problems if we want to add them later. I&apos;m all for removing, though.
 
&gt; The property ought to be &quot;web-inspector&quot;, right?

Yeah, my bad.
 
&gt; Looking at the code I see the use case of the WebInspector class and I think
&gt; it&apos;s actually a good idea. I imagine you can keep one application wide instance
&gt; around like you can with the WebSettings.

Right now you can&apos;t, since I intentionaly bound the creation and relation of the WebInspector instance to the creation of WebView, and provide no setter, only a getter, but that does look like a good thing to have. Coupled with the first modification (handling the Inspector WebView destroying) this would make the WebInspector very natural to use. I&apos;ll be quite busy at work and other real life issues today, but I&apos;ll try to have a new patch with most comments addressed by tomorrow night.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86033</commentid>
    <comment_count>15</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-16 04:21:24 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Please take a look at the coding style. Do not use NULL in C++, have early
&gt; exits, place the curly braces according to the rules. Otherwise it mostly looks
&gt; fine.

Hey! Shame on me for not having checked that. I&apos;ll have those changes in while addressing the comments from Christian! Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86054</commentid>
    <comment_count>16</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-16 05:47:48 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; the WebKit side? It should be possible, to unset the view via
&gt; &gt; gtk_widget_destroyed and request a new web view as needed, shouldn&apos;t it?
&gt; 
&gt; I thought about doing it that way, but I can&apos;t remember why I decided going
&gt; with the already existing WebKit &apos;workflow&apos; would be better. I can implement
&gt; that; I believe it would feel more natural indeed.

While preparing to come to work today I was thinking about how to make this work, and remembered what I found to be the problem earlier: the InspectorController which interacts with the InspectorClient didn&apos;t seem to have an (at least obvious) way of redefining the page. I took a quick look at the code again right now, and think I may have found the Right Way of doing this.

I&apos;m not sure WebCore will enjoy having multiple InspectorControllers pointing to the same inspector page, though, which will be needed to enable sharing WebKitWebInspector instances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86331</commentid>
    <comment_count>17</comment_count>
      <attachid>22362</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-18 07:41:20 -0700</bug_when>
    <thetext>Created attachment 22362
proposed patch

This patch addresses most issues, I hope. It also depends on the fix for #19370, for the handling of the webview destruction to work (you will get a segfault otherwise). I am not sure still how to allow for the use of a single webinspector instance, so I haven&apos;t hacked that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86332</commentid>
    <comment_count>18</comment_count>
      <attachid>22363</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-18 07:42:13 -0700</bug_when>
    <thetext>Created attachment 22363
updated GtkLauncher test patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86337</commentid>
    <comment_count>19</comment_count>
      <attachid>22364</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-18 08:38:26 -0700</bug_when>
    <thetext>Created attachment 22364
proposed patch (forgot a commit on the other)

(copied from the old entry)

This patch addresses most issues, I hope. It also depends on the fix for
#19370, for the handling of the webview destruction to work (you will get a
segfault otherwise). I am not sure still how to allow for the use of a single
webinspector instance, so I haven&apos;t hacked that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86338</commentid>
    <comment_count>20</comment_count>
      <attachid>22365</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-07-18 08:38:55 -0700</bug_when>
    <thetext>Created attachment 22365
correct launcher patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87008</commentid>
    <comment_count>21</comment_count>
      <attachid>22364</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-07-26 16:21:43 -0700</bug_when>
    <thetext>Comment on attachment 22364
proposed patch (forgot a commit on the other)

&gt;+    /**
&gt;+     * WebKitWebInspector::destroy:
&gt;+     * @web_inspector: the object on which the signal is emitted
&gt;+     *
&gt;+     * Emitted when the inspector is destroyed.
&gt;+     */
&gt;+    webkit_web_inspector_signals[DESTROY] = g_signal_new(&quot;destroy&quot;,
&gt;+            G_TYPE_FROM_CLASS(klass),
&gt;+            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
&gt;+            0,
&gt;+            NULL,
&gt;+            NULL,
&gt;+            g_cclosure_marshal_VOID__VOID,
&gt;+            G_TYPE_NONE , 0);

GtkObject, and therefore every GtkWidget, has a &quot;destroy&quot; signal with that same signature, that means &quot;the object is disposed, with no way to stop that&quot;. But this signal merely means &quot;finished&quot; and it&apos;s still possible to keep a reference of the instance.
I suggest the signal should have a different name to avoid confusion about how this signal works.

&gt;+static void webkit_web_inspector_finalize(GObject* object)
&gt;+{
&gt;+    WebKitWebInspector* web_inspector = WEBKIT_WEB_INSPECTOR(object);
&gt;+    WebKitWebInspectorPrivate* priv = web_inspector-&gt;priv;
&gt;+
&gt;+    if (priv-&gt;inspector_view)
&gt;+        g_object_unref(priv-&gt;inspector_view);
&gt;+
&gt;+    if (priv-&gt;inspected_uri)
&gt;+        g_free(priv-&gt;inspected_uri);

No need to check whether a string array is non-NULL, g_free does that implicitly.

&gt;+void webkit_web_inspector_set_web_view(WebKitWebInspector *web_inspector, WebKitWebView *web_view)
&gt;+{
&gt;+    g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(web_inspector));
&gt;+    g_return_if_fail(WEBKIT_IS_WEB_VIEW(web_view));
&gt;+
&gt;+    WebKitWebInspectorPrivate* priv = web_inspector-&gt;priv;
&gt;+
&gt;+    if (priv-&gt;inspector_view)
&gt;+        g_object_unref(priv-&gt;inspector_view);
&gt;+    
&gt;+    g_object_ref(web_view);
&gt;+    priv-&gt;inspector_view = web_view;
&gt;+}

No documentation at all here... Please add that.

And, would it be a good idea to allow _set_web_view with a NULL web_view to unset the web view?

&gt;+void webkit_web_inspector_set_inspected_uri(WebKitWebInspector* web_inspector, const gchar* inspected_uri)
&gt;+{
&gt;+    g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(web_inspector));
&gt;+
&gt;+    WebKitWebInspectorPrivate* priv = web_inspector-&gt;priv;
&gt;+
&gt;+    if (priv-&gt;inspected_uri)
&gt;+        g_free(priv-&gt;inspected_uri);
&gt;+    
&gt;+    priv-&gt;inspected_uri = g_strdup(inspected_uri);
&gt;+}

Again, no need for the if (priv-&gt;inspected_uri).

&gt;+    /**
&gt;+    * WebKitWebSettings:enable-developer-extras:
&gt;+    *
&gt;+    * Whether developer extensions should be enabled.
&gt;+    *
&gt;+    * Since: 1.0.2
&gt;+    */

I suggest you should mention the Web Inspector expressly here. Otherwise &quot;special extensions&quot; is rather meaningless to newcomers.

&gt;@@ -1206,6 +1212,13 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
&gt;                                                         WEBKIT_TYPE_WEB_SETTINGS,
&gt;                                                         WEBKIT_PARAM_READWRITE));
&gt; 
&gt;+    g_object_class_install_property(objectClass, PROP_WEB_INSPECTOR,
&gt;+                                    g_param_spec_object(&quot;web-inspector&quot;,
&gt;+                                                        &quot;Web Inspector&quot;,
&gt;+                                                        &quot;The associated WebKitWebInspector instance&quot;,
&gt;+                                                        WEBKIT_TYPE_WEB_INSPECTOR,
&gt;+                                                        WEBKIT_PARAM_READABLE));

This needs documentation, particularly a Since tag.

&gt;+WebKitWebInspector* webkit_web_view_get_inspector(WebKitWebView* webView)
&gt;+{
&gt;+    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
&gt;+
&gt;+    WebKitWebViewPrivate* priv = webView-&gt;priv;
&gt;+    return priv-&gt;webInspector;
&gt;+}

Documentation missing. Particularly it should be documented if this can be NULL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89445</commentid>
    <comment_count>22</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-08-26 19:30:05 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; GtkObject, and therefore every GtkWidget, has a &quot;destroy&quot; signal with that same
&gt; signature, that means &quot;the object is disposed, with no way to stop that&quot;. But
&gt; this signal merely means &quot;finished&quot; and it&apos;s still possible to keep a reference
&gt; of the instance.
&gt; I suggest the signal should have a different name to avoid confusion about how
&gt; this signal works.

I renamed it &quot;finished&quot;. I hope this works better =).

&gt; No documentation at all here... Please add that.

I added documentation, with Since tags.
 
&gt; And, would it be a good idea to allow _set_web_view with a NULL web_view to
&gt; unset the web view?

Not really. The web view creation process is related to the InspectorClient::createPage delegate, which is translated to the inspect-web-view signal; The view can only be sanely set there, as far as I know.

Just finishing up the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89446</commentid>
    <comment_count>23</comment_count>
      <attachid>23014</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-08-26 19:41:34 -0700</bug_when>
    <thetext>Created attachment 23014
proposed patch

I believe all the latest comments have been addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89551</commentid>
    <comment_count>24</comment_count>
      <attachid>23014</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-27 16:12:53 -0700</bug_when>
    <thetext>Comment on attachment 23014
proposed patch

Assigning to Alp for review or re-assignment to some other Gtk reviewer.  Pretty much all of the rest of us know nothing about gtk, so silly for this to sit in the general review queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93765</commentid>
    <comment_count>25</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-10-02 12:20:45 -0700</bug_when>
    <thetext>Is it possible to remove the dist_webinspector_DATA and dist_webinspectorimages_DATA lists in the build file? We add new images and files a lot and it would be nice to not have to modify the GTK files each time. The Mac project just recursive copies the whole inspector folder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97045</commentid>
    <comment_count>26</comment_count>
      <attachid>23014</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-10-29 15:04:09 -0700</bug_when>
    <thetext>Comment on attachment 23014
proposed patch

Pretty good. Some minor comments for the future:

Please use WebKitTools/Scripts/prepare-ChangeLog to generate the ChangeLog.

Your commenting style was really mixed, sadly we favor c++ comments (//), please try to be consistent.

In InspectorClient::inspectorDestroyed, it might be wise to initialize m_webInspector and then check for if (m_webInspector)..

And I also get this from the gobject runtime: (GtkLauncher:12425): GLib-GObject-WARNING **: /build/buildd/glib2.0-2.18.2/gobject/gsignal.c:2267: signal `destroy&apos; is invalid for instance `0x8842b60&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97048</commentid>
    <comment_count>27</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-10-29 15:05:55 -0700</bug_when>
    <thetext>(In reply to comment #26)

&gt; And I also get this from the gobject runtime: (GtkLauncher:12425):
&gt; GLib-GObject-WARNING **: /build/buildd/glib2.0-2.18.2/gobject/gsignal.c:2267:
&gt; signal `destroy&apos; is invalid for instance `0x8842b60&apos;

Okay, this is likely to come from the GtkLauncher patch to connect to the non exisiting destroy signal.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97053</commentid>
    <comment_count>28</comment_count>
      <attachid>24756</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-10-29 15:08:28 -0700</bug_when>
    <thetext>Created attachment 24756
Rediffed patch, style changes, Makefile changes

I would be happy to land this patch. It contains some style changes, one variable initialisation and a GNUmakefile change to get every file from the inspector directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97059</commentid>
    <comment_count>29</comment_count>
      <attachid>23014</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-10-29 15:40:31 -0700</bug_when>
    <thetext>Comment on attachment 23014
proposed patch

Okay</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97060</commentid>
    <comment_count>30</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-10-29 15:42:50 -0700</bug_when>
    <thetext>Mark was so kind to review my additional changes so I could land this patch in r37982. Thanks a lot.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22170</attachid>
            <date>2008-07-09 05:04:52 -0700</date>
            <delta_ts>2008-07-15 11:40:10 -0700</delta_ts>
            <desc>initial implementation of enabling the inspector</desc>
            <filename>inspector.diff</filename>
            <type>text/plain</type>
            <size>23736</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDY2ZjMyNi4uZjlkNzRiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAwOC0wNi0xNyAgTWFyY28gQmFyaXNp
b25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk2MDMKKyAgICAgICAgW1NPVVBdIHNlZ2ZhdWx0IHdoZW4gY2xvc2lu
ZyBhIGZpbGUgdXNpbmcgZ2lvCisKKyAgICAgICAgQ2FsbCBjbGllbnQtPmRpZEZpbmlzaExvYWRp
bmcoKSBvbmx5IGFmdGVyIHJlbGVhc2luZyBhbGwgdGhlIGdpbworICAgICAgICByZXNvdXJjZXMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNsb3NlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZENhbGxiYWNrKToKKwogMjAwOC0wNy0wNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IENhbWVyb24gWndhcmljaC4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4
IDE3NDA5MzAuLjQ2Yzg3YmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysr
IGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjI1MCw2ICsyMjUwLDE1MCBAQCBEZXJpdmVk
U291cmNlcy9KUyUuaDogRGVyaXZlZFNvdXJjZXMvSlMlLmNwcDsKIERlcml2ZWRTb3VyY2VzL0pT
JS5jcHA6ICUuaWRsICQoU0NSSVBUU19CSU5ESU5HUykgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQogCSQoUEVSTCkgLUkkKFdlYkNvcmUpL2JpbmRpbmdzL3Nj
cmlwdHMgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIC0t
aW5jbHVkZSAkKFdlYkNvcmUpL2RvbSAtLWluY2x1ZGUgJChXZWJDb3JlKS9odG1sIC0taW5jbHVk
ZSAkKFdlYkNvcmUpL2NzcyAtLWluY2x1ZGUgJChXZWJDb3JlKS9wYWdlIC0taW5jbHVkZSAkKFdl
YkNvcmUpL3htbCAtLWluY2x1ZGUgJChXZWJDb3JlKS9zdmcgLS1vdXRwdXRkaXIgJChHRU5TT1VS
Q0VTKSAtLWRlZmluZXMgIiQoRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQpIiAtLWdlbmVyYXRv
ciBKUyAkPAogCisjIEluc3RhbGxpbmcgd2ViIGluc3BlY3RvciBmaWxlcword2ViY29yZV9jcHBm
bGFncyArPSAtRERBVEFfRElSPVwiJHtkYXRhZGlyfVwiCisKK3dlYmluc3BlY3RvcmRpciA9ICR7
ZGF0YWRpcn0vd2Via2l0LTEuMC93ZWJpbnNwZWN0b3IKK2Rpc3Rfd2ViaW5zcGVjdG9yX0RBVEEg
PSBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvQnJlYWtwb2ludC5qcyBcCisg
ICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5q
cyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvQ2FsbFN0YWNrU2lkZWJhclBh
bmUuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0NvbnNvbGUuanMgXAor
ICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0RhdGFiYXNlLmpzIFwKKyAgICAgICAg
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9EYXRhYmFzZVF1ZXJ5Vmlldy5qcyBcCisgICAgICAg
ICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvRGF0YWJhc2VzUGFuZWwuanMgXAorICAgICAgICAk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0RhdGFiYXNlVGFibGVWaWV3LmpzIFwKKyAgICAgICAg
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9EYXRhR3JpZC5qcyBcCisgICAgICAgICQoV2ViQ29y
ZSkvcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNQYW5lbC5qcyBcCisgICAgICAgICQoV2ViQ29yZSkv
cGFnZS9pbnNwZWN0b3IvRm9udFZpZXcuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5z
cGVjdG9yL0ltYWdlVmlldy5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3Iv
aW5zcGVjdG9yLmNzcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvaW5zcGVj
dG9yLmh0bWwgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5q
cyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvTWV0cmljc1NpZGViYXJQYW5l
LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9PYmplY3QuanMgXAorICAg
ICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL09iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpz
IFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9QYW5lbC5qcyBcCisgICAgICAg
ICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvUGxhY2FyZC5qcyBcCisgICAgICAgICQoV2ViQ29y
ZSkvcGFnZS9pbnNwZWN0b3IvUHJvZmlsZXNQYW5lbC5qcyBcCisgICAgICAgICQoV2ViQ29yZSkv
cGFnZS9pbnNwZWN0b3IvUHJvZmlsZVZpZXcuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2Uv
aW5zcGVjdG9yL1Byb3BlcnRpZXNTZWN0aW9uLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanMgXAorICAgICAgICAkKFdlYkNvcmUp
L3BhZ2UvaW5zcGVjdG9yL1Jlc291cmNlQ2F0ZWdvcnkuanMgXAorICAgICAgICAkKFdlYkNvcmUp
L3BhZ2UvaW5zcGVjdG9yL1Jlc291cmNlLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2lu
c3BlY3Rvci9SZXNvdXJjZXNQYW5lbC5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNw
ZWN0b3IvUmVzb3VyY2VWaWV3LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rv
ci9TY29wZUNoYWluU2lkZWJhclBhbmUuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5z
cGVjdG9yL1NjcmlwdC5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvU2Ny
aXB0c1BhbmVsLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9TY3JpcHRW
aWV3LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9TaWRlYmFyUGFuZS5q
cyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvU2lkZWJhclRyZWVFbGVtZW50
LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9Tb3VyY2VGcmFtZS5qcyBc
CisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvU291cmNlVmlldy5qcyBcCisgICAg
ICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvU3R5bGVzU2lkZWJhclBhbmUuanMgXAorICAg
ICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1RleHRQcm9tcHQuanMgXAorICAgICAgICAk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL3RyZWVvdXRsaW5lLmpzIFwKKyAgICAgICAgJChXZWJD
b3JlKS9wYWdlL2luc3BlY3Rvci91dGlsaXRpZXMuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL1ZpZXcuanMKKword2ViaW5zcGVjdG9yaW1hZ2VzZGlyID0gJHtkYXRhZGly
fS93ZWJraXQtMS4wL3dlYmluc3BlY3Rvci9JbWFnZXMKK2Rpc3Rfd2ViaW5zcGVjdG9yaW1hZ2Vz
X0RBVEEgPSBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvYmFjay5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2NoZWNrZXIucG5nIFwKKwkkKFdlYkNv
cmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9jbGVhckNvbnNvbGVCdXR0b25zLnBuZyBcCisJJChX
ZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvY29uc29sZUJ1dHRvbnMucG5nIFwKKwkkKFdl
YkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kYXRhYmFzZS5wbmcgXAorCSQoV2ViQ29yZSkv
cGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2RhdGFiYXNlc0ljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9kYXRhYmFzZVRhYmxlLnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvZGVidWdnZXJDb250aW51ZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFn
ZS9pbnNwZWN0b3IvSW1hZ2VzL2RlYnVnZ2VyUGF1c2UucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2Uv
aW5zcGVjdG9yL0ltYWdlcy9kZWJ1Z2dlclN0ZXBJbnRvLnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvZGVidWdnZXJTdGVwT3V0LnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvZGVidWdnZXJTdGVwT3Zlci5wbmcgXAorCSQoV2ViQ29yZSkvcGFn
ZS9pbnNwZWN0b3IvSW1hZ2VzL2RlYnVnZ2luZ0J1dHRvbnMucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9kaXNjbG9zdXJlVHJpYW5nbGVTbWFsbERvd25CbGFjay5wbmcg
XAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2Rpc2Nsb3N1cmVUcmlhbmdsZVNt
YWxsRG93bi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2Rpc2Nsb3N1
cmVUcmlhbmdsZVNtYWxsRG93bldoaXRlLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rv
ci9JbWFnZXMvZGlzY2xvc3VyZVRyaWFuZ2xlU21hbGxSaWdodEJsYWNrLnBuZyBcCisJJChXZWJD
b3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGlzY2xvc3VyZVRyaWFuZ2xlU21hbGxSaWdodERv
d25CbGFjay5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2Rpc2Nsb3N1
cmVUcmlhbmdsZVNtYWxsUmlnaHREb3duLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rv
ci9JbWFnZXMvZGlzY2xvc3VyZVRyaWFuZ2xlU21hbGxSaWdodERvd25XaGl0ZS5wbmcgXAorCSQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2Rpc2Nsb3N1cmVUcmlhbmdsZVNtYWxsUmln
aHQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kaXNjbG9zdXJlVHJp
YW5nbGVTbWFsbFJpZ2h0V2hpdGUucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0lt
YWdlcy9kb2NrQnV0dG9ucy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2Vz
L2VsZW1lbnRzSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2Vy
cm9ySWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2Vycm9yTWVk
aXVtSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2V4Y2x1ZGVC
dXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZm9jdXNCdXR0
b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZm9yd2FyZC5wbmcg
XAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2dsb3NzeUhlYWRlci5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2dsb3NzeUhlYWRlclByZXNzZWQucG5n
IFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9nbG9zc3lIZWFkZXJTZWxlY3Rl
ZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2dsb3NzeUhlYWRlclNl
bGVjdGVkUHJlc3NlZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2dv
QXJyb3cucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9sYXJnZXJSZXNv
dXJjZXNCdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcGFu
ZUJvdHRvbUdyb3dBY3RpdmUucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdl
cy9wYW5lQm90dG9tR3Jvdy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2Vz
L3BhbmVHcm93SGFuZGxlTGluZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1h
Z2VzL3BhdXNlT25FeGNlcHRpb25CdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3Bl
Y3Rvci9JbWFnZXMvcGVyY2VudEJ1dHRvbnMucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVj
dG9yL0ltYWdlcy9wcm9maWxlR3JvdXBJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3Bl
Y3Rvci9JbWFnZXMvcHJvZmlsZUljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9y
L0ltYWdlcy9wcm9maWxlc0ljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0lt
YWdlcy9wcm9maWxlU21hbGxJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvcmVjb3JkQnV0dG9ucy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1h
Z2VzL3JlbG9hZEJ1dHRvbnMucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdl
cy9yZXNvdXJjZUNTU0ljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdl
cy9yZXNvdXJjZURvY3VtZW50SWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3Iv
SW1hZ2VzL3Jlc291cmNlRG9jdW1lbnRJY29uU21hbGwucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2Uv
aW5zcGVjdG9yL0ltYWdlcy9yZXNvdXJjZUpTSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL3Jlc291cmNlUGxhaW5JY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvcmVzb3VyY2VQbGFpbkljb25TbWFsbC5wbmcgXAorCSQoV2ViQ29y
ZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Jlc291cmNlc0ljb24ucG5nIFwKKwkkKFdlYkNvcmUp
L3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9yZXNvdXJjZXNTaXplR3JhcGhJY29uLnBuZyBcCisJJChX
ZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcmVzb3VyY2VzVGltZUdyYXBoSWNvbi5wbmcg
XAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NjcmlwdHNJY29uLnBuZyBcCisJ
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc2VnbWVudEVuZC5wbmcgXAorCSQoV2Vi
Q29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NlZ21lbnRIb3ZlckVuZC5wbmcgXAorCSQoV2Vi
Q29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NlZ21lbnRIb3Zlci5wbmcgXAorCSQoV2ViQ29y
ZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NlZ21lbnQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2Uv
aW5zcGVjdG9yL0ltYWdlcy9zZWdtZW50U2VsZWN0ZWRFbmQucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9zZWdtZW50U2VsZWN0ZWQucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9zcGxpdHZpZXdEaW1wbGUucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9zcGxpdHZpZXdEaXZpZGVyQmFja2dyb3VuZC5wbmcgXAorCSQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3N0YXR1c2JhckJhY2tncm91bmQucG5nIFwK
KwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9zdGF0dXNiYXJCb3R0b21CYWNrZ3Jv
dW5kLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc3RhdHVzYmFyQnV0
dG9ucy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3N0YXR1c2Jhck1l
bnVCdXR0b24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9zdGF0dXNi
YXJNZW51QnV0dG9uU2VsZWN0ZWQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0lt
YWdlcy9zdGF0dXNiYXJSZXNpemVySG9yaXpvbnRhbC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL3N0YXR1c2JhclJlc2l6ZXJWZXJ0aWNhbC5wbmcgXAorCSQoV2ViQ29y
ZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpbWVsaW5lUGlsbEJsdWUucG5nIFwKKwkkKFdlYkNv
cmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aW1lbGluZVBpbGxHcmF5LnBuZyBcCisJJChXZWJD
b3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvdGltZWxpbmVQaWxsR3JlZW4ucG5nIFwKKwkkKFdl
YkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aW1lbGluZVBpbGxPcmFuZ2UucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aW1lbGluZVBpbGxQdXJwbGUucG5nIFwK
KwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aW1lbGluZVBpbGxSZWQucG5nIFwK
KwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aW1lbGluZVBpbGxZZWxsb3cucG5n
IFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aXBCYWxsb29uQm90dG9tLnBu
ZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvdGlwQmFsbG9vbi5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpcEljb24ucG5nIFwKKwkkKFdlYkNv
cmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aXBJY29uUHJlc3NlZC5wbmcgXAorCSQoV2ViQ29y
ZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Rvb2xiYXJJdGVtU2VsZWN0ZWQucG5nIFwKKwkkKFdl
YkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90cmVlRG93blRyaWFuZ2xlQmxhY2sucG5nIFwK
KwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90cmVlRG93blRyaWFuZ2xlV2hpdGUu
cG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90cmVlUmlnaHRUcmlhbmds
ZUJsYWNrLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvdHJlZVJpZ2h0
VHJpYW5nbGVXaGl0ZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Ry
ZWVVcFRyaWFuZ2xlQmxhY2sucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdl
cy90cmVlVXBUcmlhbmdsZVdoaXRlLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvdXNlcklucHV0SWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1h
Z2VzL3VzZXJJbnB1dFByZXZpb3VzSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0
b3IvSW1hZ2VzL3dhcm5pbmdJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvd2FybmluZ01lZGl1bUljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9y
L0ltYWdlcy93YXJuaW5nc0Vycm9ycy5wbmcKKwogIyBDbGVhbiBydWxlcyBmb3IgV2ViQ29yZQog
CiBDTEVBTkZJTEVTICs9IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IDY5ZTA4MjkuLjAyNWUwYzkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNw
cApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRva2VyIDxh
bHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBYYW4gTG9wZXogPHhhbkBnbm9t
ZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtNDEyLDkgKzQxMywxMSBAQCBzdGF0aWMgdm9pZCBjbG9zZUNhbGxiYWNrKEdP
YmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXMsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAg
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZGF0
YSk7CiAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwo
KTsKKyAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gaGFuZGxlLT5jbGllbnQoKTsK
IAogICAgIGdfaW5wdXRfc3RyZWFtX2Nsb3NlX2ZpbmlzaChkLT5tX2lucHV0X3N0cmVhbSwgcmVz
LCBOVUxMKTsKICAgICBjbGVhbnVwR2lvT3BlcmF0aW9uKGhhbmRsZSk7CisgICAgY2xpZW50LT5k
aWRGaW5pc2hMb2FkaW5nKGhhbmRsZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhH
T2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzLCBncG9pbnRlciBkYXRhKQpAQCAtNDM4
LDcgKzQ0MSw2IEBAIHN0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdB
c3luY1Jlc3VsdCogcmVzLCBncG9pbnRlciBkYXRhKQogICAgICAgICBjbGllbnQtPmRpZEZpbmlz
aExvYWRpbmcoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAoIW5yZWFk
KSB7Ci0gICAgICAgIGNsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhoYW5kbGUpOwogICAgICAgICBn
X2lucHV0X3N0cmVhbV9jbG9zZV9hc3luYyhkLT5tX2lucHV0X3N0cmVhbSwgR19QUklPUklUWV9E
RUZBVUxULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBjbG9zZUNh
bGxiYWNrLCBoYW5kbGUpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKaW5kZXggYTU0YjZhMC4uYWZiZmUwNyAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsu
Y3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNw
cApAQCAtMSw0ICsxLDYgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3Jv
bmhhIFNpbHZhCisgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCkBAIC0xNyw2ICsxOSw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50R3RrLmgiCiAK
KyNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKQEAgLTI0LDYgKzI5LDEyIEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorSW5zcGVjdG9y
Q2xpZW50OjpJbnNwZWN0b3JDbGllbnQoV2ViS2l0V2ViVmlldyAqd2ViVmlldykKKyAgICA6IG1f
d2ViVmlldyhOVUxMKQorICAgICwgbV9pbnNwZWN0ZWRXZWJWaWV3KHdlYlZpZXcpCisgICAgLCBt
X2F0dGFjaGVkKGZhbHNlKQore30KKwogdm9pZCBJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRl
c3Ryb3llZCgpCiB7CiAgICAgZGVsZXRlIHRoaXM7CkBAIC0zMSw4ICs0MiwxNyBAQCB2b2lkIElu
c3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIAogUGFnZSogSW5zcGVjdG9yQ2xp
ZW50OjpjcmVhdGVQYWdlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAw
OworICAgIGlmIChtX3dlYlZpZXcpCisgICAgICByZXR1cm4gY29yZShtX3dlYlZpZXcpOworCisg
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1faW5zcGVjdGVkV2ViVmlldywgImNyZWF0ZS1pbnNw
ZWN0b3Itd2ViLXZpZXciLCAmbV93ZWJWaWV3KTsKKworICAgIGlmICghbV93ZWJWaWV3KQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIHdlYmtpdF93ZWJfdmlld19vcGVuKG1fd2ViVmlldywgImZp
bGU6Ly8iREFUQV9ESVIiL3dlYmtpdC0xLjAvd2ViaW5zcGVjdG9yL2luc3BlY3Rvci5odG1sIik7
CisKKyAgICByZXR1cm4gY29yZShtX3dlYlZpZXcpOwogfQogCiBTdHJpbmcgSW5zcGVjdG9yQ2xp
ZW50Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKQEAgLTQzLDIyICs2MywzMSBAQCBTdHJpbmcgSW5z
cGVjdG9yQ2xpZW50Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKIAogdm9pZCBJbnNwZWN0b3JDbGll
bnQ6OnNob3dXaW5kb3coKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dl
YlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VU
KG1fd2ViVmlldykpOworICAgIGNvcmUobV93ZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LT5zZXRXaW5kb3dWaXNpYmxlKHRydWUpOwogfQogCiB2b2lkIEluc3BlY3RvckNsaWVudDo6Y2xv
c2VXaW5kb3coKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcp
CisgICAgICAgIHJldHVybjsKKworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcs
ICJkZWxldGUtZXZlbnQiKTsKKyAgICBjb3JlKG1fd2ViVmlldyktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+c2V0V2luZG93VmlzaWJsZShmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50
OjphdHRhY2hXaW5kb3coKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgLyogSSBkb24n
dCB0aGluayB3ZSBzaG91bGQgbGV0IGEgd2lkZ2V0IGluc2lkZSB0aGUgaW5zcGVjdG9yIGRlYWwK
KyAgICAgICB3aXRoIHRoaXMgZm9yIFdlYktpdC9HVEsrICovCiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q2xpZW50OjpkZXRhY2hXaW5kb3coKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgLyog
U2VlIGNvbW1lbnQgYWJvdmUgKi8KIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdo
dChOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50R3RrLmgKaW5kZXggOWFmZDQyYi4uMDY0MzA2NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5l
IEluc3BlY3RvckNsaWVudEd0a19oCiAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKKyNp
bmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBOb2RlOwpAQCAtNDEsNiArNDIsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgIGNsYXNz
IEluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQgewogICAg
IHB1YmxpYzoKKyAgICAgICAgSW5zcGVjdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcgKndlYlZpZXcp
OworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKIAogICAgICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVBhZ2UoKTsKQEAgLTU2LDYgKzU5LDExIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KFdlYkNv
cmU6Ok5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiBuZXdVUkwpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJW
aWV3OworICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX2luc3BlY3RlZFdlYlZpZXc7CisgICAgICAg
IGJvb2wgbV9hdHRhY2hlZDsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXQtbWFyc2hhbC5saXN0IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LW1hcnNo
YWwubGlzdAppbmRleCBhOGYyNDUzLi4zZWY4NGJjIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXQtbWFyc2hhbC5saXN0CisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC1t
YXJzaGFsLmxpc3QKQEAgLTEwLDMgKzEwLDQgQEAgQk9PTEVBTjpPQkpFQ1QsU1RSSU5HCiBCT09M
RUFOOk9CSkVDVCxTVFJJTkcsQk9PTEVBTgogQk9PTEVBTjpPQkpFQ1QsU1RSSU5HLFNUUklORyxT
VFJJTkcKIElOVDpPQkpFQ1QsT0JKRUNUCitPQkpFQ1Q6Vk9JRApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vic2V0dGluZ3MuY3BwCmluZGV4IDA4ZTQwOWQuLmExYWY1ZDggMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IF9XZWJL
aXRXZWJTZXR0aW5nc1ByaXZhdGUgewogICAgIGdib29sZWFuIHJlc2l6YWJsZV90ZXh0X2FyZWFz
OwogICAgIGdjaGFyKiB1c2VyX3N0eWxlc2hlZXRfdXJpOwogICAgIGdmbG9hdCB6b29tX3N0ZXA7
CisgICAgZ2Jvb2xlYW4gZW5hYmxlX2RldmVsb3Blcl9leHRyYXM7CiB9OwogCiAjZGVmaW5lIFdF
QktJVF9XRUJfU0VUVElOR1NfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9Q
UklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdz
UHJpdmF0ZSkpCkBAIC03Myw3ICs3NCw4IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX1BMVUdJ
TlMsCiAgICAgUFJPUF9SRVNJWkFCTEVfVEVYVF9BUkVBUywKICAgICBQUk9QX1VTRVJfU1RZTEVT
SEVFVF9VUkksCi0gICAgUFJPUF9aT09NX1NURVAKKyAgICBQUk9QX1pPT01fU1RFUCwKKyAgICBQ
Uk9QX0VOQUJMRV9ERVZFTE9QRVJfRVhUUkFTCiB9OwogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3NldHRpbmdzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CkBAIC0yNjgsNiArMjcwLDIyIEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRXZWJTZXR0
aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
MGYsIEdfTUFYRkxPQVQsIDAuMWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncykpOwogCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtZGV2
ZWxvcGVyLWV4dHJhczoKKyAgICAqCisgICAgKiBXaGV0aGVyIGRldmVsb3BlciBleHRlbnNpb25z
IHNob3VsZCBiZSBlbmFibGVkLgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisg
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfREVWRUxPUEVSX0VYVFJB
UywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29s
ZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuYWJsZS1kZXZlbG9w
ZXItZXh0cmFzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbmFibGUg
RGV2ZWxvcGVyIEV4dHJhcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RW5hYmxlcyBzcGVjaWFsIGV4dGVuc2lvbnMgdGhhdCBoZWxwIGRldmVsb3BlcnMiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRl
KGtsYXNzLCBzaXplb2YoV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKSk7CiB9CiAKQEAgLTM2NCw2
ICszODIsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0eShH
T2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgogICAgIGNhc2UgUFJPUF9aT09NX1NU
RVA6CiAgICAgICAgIHByaXYtPnpvb21fc3RlcCA9IGdfdmFsdWVfZ2V0X2Zsb2F0KHZhbHVlKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9ERVZFTE9QRVJfRVhUUkFTOgor
ICAgICAgICBwcml2LT5lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyA9IGdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtNDMzLDYgKzQ1NCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhCiAg
ICAgY2FzZSBQUk9QX1pPT01fU1RFUDoKICAgICAgICAgZ192YWx1ZV9zZXRfZmxvYXQodmFsdWUs
IHByaXYtPnpvb21fc3RlcCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVf
REVWRUxPUEVSX0VYVFJBUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJp
di0+ZW5hYmxlX2RldmVsb3Blcl9leHRyYXMpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
X2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDgzLDYgKzUwNyw3IEBAIFdlYktpdFdl
YlNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkoV2ViS2l0V2ViU2V0dGluZ3MqIHdl
Yl9zZXR0aW5ncykKICAgICAgICAgICAgICAgICAgInJlc2l6YWJsZS10ZXh0LWFyZWFzIiwgcHJp
di0+cmVzaXphYmxlX3RleHRfYXJlYXMsCiAgICAgICAgICAgICAgICAgICJ1c2VyLXN0eWxlc2hl
ZXQtdXJpIiwgcHJpdi0+dXNlcl9zdHlsZXNoZWV0X3VyaSwKICAgICAgICAgICAgICAgICAgInpv
b20tc3RlcCIsIHByaXYtPnpvb21fc3RlcCwKKyAgICAgICAgICAgICAgICAgImVuYWJsZS1kZXZl
bG9wZXItZXh0cmFzIiwgcHJpdi0+ZW5hYmxlX2RldmVsb3Blcl9leHRyYXMsCiAgICAgICAgICAg
ICAgICAgIE5VTEwpKTsKIAogICAgIHJldHVybiBjb3B5OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcAppbmRleCA2YTdlYTFmLi5jMmI3MTdlIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcApAQCAtNzAsNiArNzAsNyBAQCBleHRlcm4gIkMiIHsKIGVudW0gewogICAgIC8qIG5v
cm1hbCBzaWduYWxzICovCiAgICAgTkFWSUdBVElPTl9SRVFVRVNURUQsCisgICAgQ1JFQVRFX0lO
U1BFQ1RPUl9XRUJfVklFVywKICAgICBXSU5ET1dfT0JKRUNUX0NMRUFSRUQsCiAgICAgTE9BRF9T
VEFSVEVELAogICAgIExPQURfQ09NTUlUVEVELApAQCAtNTY0LDYgKzU2NSwxMSBAQCBzdGF0aWMg
V2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3X3JlYWxfY3JlYXRlX3dlYl92aWV3KFdlYktp
dFdlYlZpZXcqKQogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgV2ViS2l0V2ViVmlldyogd2Vi
a2l0X3dlYl92aWV3X3JlYWxfY3JlYXRlX2luc3BlY3Rvcl93ZWJfdmlldyhXZWJLaXRXZWJWaWV3
KikKK3sKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIFdlYktpdE5hdmlnYXRpb25SZXNwb25z
ZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZpZ2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3
KiwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXROZXR3b3JrUmVxdWVzdCopCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKQEAgLTczMCw2ICs3MzYsMTggQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAgICBHX09CSkVDVF9DTEFTUyh3
ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIAorc3Rh
dGljIGdib29sZWFuIHdlYmtpdF9jcmVhdGVfaW5zcGVjdG9yX3dlYl92aWV3X3JlcXVlc3RfaGFu
ZGxlZChHU2lnbmFsSW52b2NhdGlvbkhpbnQqIGloaW50LCBHVmFsdWUqIHJldHVybkFjY3UsIGNv
bnN0IEdWYWx1ZSogaGFuZGxlclJldHVybiwgZ3BvaW50ZXIgZHVtbXkpCit7CisgIGdib29sZWFu
IGNvbnRpbnVlRW1pc3Npb24gPSBUUlVFOworICBncG9pbnRlciBuZXdXZWJWaWV3ID0gZ192YWx1
ZV9nZXRfb2JqZWN0KGhhbmRsZXJSZXR1cm4pOworICBnX3ZhbHVlX3NldF9vYmplY3QocmV0dXJu
QWNjdSwgbmV3V2ViVmlldyk7CisKKyAgaWYgKG5ld1dlYlZpZXcpCisgICAgICBjb250aW51ZUVt
aXNzaW9uID0gRkFMU0U7CisKKyAgcmV0dXJuIGNvbnRpbnVlRW1pc3Npb247Cit9CisKIHN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRfbmF2aWdhdGlvbl9yZXF1ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9j
YXRpb25IaW50KiBpaGludCwgR1ZhbHVlKiByZXR1cm5BY2N1LCBjb25zdCBHVmFsdWUqIGhhbmRs
ZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15KQogewogICBnYm9vbGVhbiBjb250aW51ZUVtaXNzaW9u
ID0gVFJVRTsKQEAgLTc3Miw2ICs3OTAsMjggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICogU2ln
bmFscwogICAgICAqLwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6Y3JlYXRlLWlu
c3BlY3Rvci13ZWItdmlldzoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2gg
dGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHJldHVybjogYSBuZXdseSBhbGxvY2F0ZWQg
I1dlYktpdFdlYlZpZXcgb3IgJU5VTEwKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUg
Y3JlYXRpb24gb2YgYSBuZXcgd2luZG93IGZvciB0aGUgV2ViIEluc3BlY3RvcgorICAgICAqIGlz
IHJlcXVlc3RlZC4gIElmIHRoaXMgc2lnbmFsIGlzIGhhbmRsZWQgdGhlIHNpZ25hbCBoYW5kbGVy
CisgICAgICogc2hvdWxkIHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldy4K
KyAgICAgKgorICAgICAqIFRoZSBzaWduYWwgaGFuZGxlcnMgc2hvdWxkIG5vdCB0cnkgdG8gZGVh
bCB3aXRoIHRoZSByZWZlcmVuY2UKKyAgICAgKiBjb3VudCBmb3IgdGhlIG5ldyAjV2ViS2l0V2Vi
Vmlldy4gVGhlIHdpZGdldCB0byB3aGljaCB0aGUKKyAgICAgKiB3aWRnZXQgaXMgYWRkZWQgd2ls
bCBoYW5kbGUgdGhhdC4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tDUkVB
VEVfSU5TUEVDVE9SX1dFQl9WSUVXXSA9IGdfc2lnbmFsX25ldygiY3JlYXRlLWluc3BlY3Rvci13
ZWItdmlldyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAor
ICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9B
Q1RJT04pLAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChXZWJLaXRXZWJWaWV3Q2xhc3Ms
IGNyZWF0ZV9pbnNwZWN0b3Jfd2ViX3ZpZXcpLAorICAgICAgICAgICAgd2Via2l0X2NyZWF0ZV9p
bnNwZWN0b3Jfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAg
ICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX09CSkVDVF9fVk9JRCwKKyAgICAgICAgICAgIFdFQktJ
VF9UWVBFX1dFQl9WSUVXICwgMCk7CisKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tOQVZJ
R0FUSU9OX1JFUVVFU1RFRF0gPSBnX3NpZ25hbF9uZXcoIm5hdmlnYXRpb24tcmVxdWVzdGVkIiwK
ICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCiAgICAgICAgICAg
ICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCkBA
IC0xMTA3LDYgKzExNDcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgKiBpbXBsZW1lbnRhdGlv
bnMgb2YgdmlydHVhbCBtZXRob2RzCiAgICAgICovCiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGVf
d2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVfd2ViX3ZpZXc7CisgICAgd2Vi
Vmlld0NsYXNzLT5jcmVhdGVfaW5zcGVjdG9yX3dlYl92aWV3ID0gd2Via2l0X3dlYl92aWV3X3Jl
YWxfY3JlYXRlX2luc3BlY3Rvcl93ZWJfdmlldzsKICAgICB3ZWJWaWV3Q2xhc3MtPm5hdmlnYXRp
b25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQ7
CiAgICAgd2ViVmlld0NsYXNzLT53aW5kb3dfb2JqZWN0X2NsZWFyZWQgPSB3ZWJraXRfd2ViX3Zp
ZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQ7CiAgICAgd2ViVmlld0NsYXNzLT5jaG9vc2Vf
ZmlsZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2Nob29zZV9maWxlOwpAQCAtMTI5Miw3ICsxMzMz
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGNvcmUod2ViVmlldykt
PnNldHRpbmdzKCk7CiAKICAgICBnY2hhciogZGVmYXVsdEVuY29kaW5nLCAqY3Vyc2l2ZUZvbnRG
YW1pbHksICpkZWZhdWx0Rm9udEZhbWlseSwgKmZhbnRhc3lGb250RmFtaWx5LCAqbW9ub3NwYWNl
Rm9udEZhbWlseSwgKnNhbnNTZXJpZkZvbnRGYW1pbHksICpzZXJpZkZvbnRGYW1pbHksICp1c2Vy
U3R5bGVzaGVldFVyaTsKLSAgICBnYm9vbGVhbiBhdXRvTG9hZEltYWdlcywgYXV0b1Nocmlua0lt
YWdlcywgcHJpbnRCYWNrZ3JvdW5kcywgZW5hYmxlU2NyaXB0cywgZW5hYmxlUGx1Z2lucywgcmVz
aXphYmxlVGV4dEFyZWFzOworICAgIGdib29sZWFuIGF1dG9Mb2FkSW1hZ2VzLCBhdXRvU2hyaW5r
SW1hZ2VzLCBwcmludEJhY2tncm91bmRzLCBlbmFibGVTY3JpcHRzLCBlbmFibGVQbHVnaW5zLCBl
bmFibGVEZXZlbG9wZXJFeHRyYXMsIHJlc2l6YWJsZVRleHRBcmVhczsKIAogICAgIGdfb2JqZWN0
X2dldChHX09CSkVDVCh3ZWJTZXR0aW5ncyksCiAgICAgICAgICAgICAgICAgICJkZWZhdWx0LWVu
Y29kaW5nIiwgJmRlZmF1bHRFbmNvZGluZywKQEAgLTEzMDksNiArMTM1MCw3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmll
dykKICAgICAgICAgICAgICAgICAgImVuYWJsZS1wbHVnaW5zIiwgJmVuYWJsZVBsdWdpbnMsCiAg
ICAgICAgICAgICAgICAgICJyZXNpemFibGUtdGV4dC1hcmVhcyIsICZyZXNpemFibGVUZXh0QXJl
YXMsCiAgICAgICAgICAgICAgICAgICJ1c2VyLXN0eWxlc2hlZXQtdXJpIiwgJnVzZXJTdHlsZXNo
ZWV0VXJpLAorICAgICAgICAgICAgICAgICAiZW5hYmxlLWRldmVsb3Blci1leHRyYXMiLCAmZW5h
YmxlRGV2ZWxvcGVyRXh0cmFzLAogICAgICAgICAgICAgICAgICBOVUxMKTsKIAogICAgIHNldHRp
bmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShkZWZhdWx0RW5jb2RpbmcpOwpAQCAtMTMy
NSw2ICsxMzY3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5n
cyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHNldHRpbmdzLT5zZXRQbHVnaW5zRW5hYmxl
ZChlbmFibGVQbHVnaW5zKTsKICAgICBzZXR0aW5ncy0+c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxl
KHJlc2l6YWJsZVRleHRBcmVhcyk7CiAgICAgc2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24oS1VSTCh1c2VyU3R5bGVzaGVldFVyaSkpOworICAgIHNldHRpbmdzLT5zZXREZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKGVuYWJsZURldmVsb3BlckV4dHJhcyk7CiAKICAgICBnX2ZyZWUoZGVm
YXVsdEVuY29kaW5nKTsKICAgICBnX2ZyZWUoY3Vyc2l2ZUZvbnRGYW1pbHkpOwpAQCAtMTM5NCw3
ICsxNDM3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKICAgICB3ZWJWaWV3LT5wcml2ID0gcHJpdjsKIAogICAgIHByaXYtPmltQ29u
dGV4dCA9IGd0a19pbV9tdWx0aWNvbnRleHRfbmV3KCk7Ci0gICAgcHJpdi0+Y29yZVBhZ2UgPSBu
ZXcgUGFnZShuZXcgV2ViS2l0OjpDaHJvbWVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkNv
bnRleHRNZW51Q2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpFZGl0b3JDbGllbnQod2ViVmll
dyksIG5ldyBXZWJLaXQ6OkRyYWdDbGllbnQsIG5ldyBXZWJLaXQ6Okluc3BlY3RvckNsaWVudCk7
CisgICAgcHJpdi0+Y29yZVBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViS2l0OjpDaHJvbWVDbGllbnQo
d2ViVmlldyksIG5ldyBXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50KHdlYlZpZXcpLCBuZXcgV2Vi
S2l0OjpFZGl0b3JDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkRyYWdDbGllbnQsIG5ldyBX
ZWJLaXQ6Okluc3BlY3RvckNsaWVudCh3ZWJWaWV3KSk7CiAKICAgICBwcml2LT5ob3Jpem9udGFs
QWRqdXN0bWVudCA9IEdUS19BREpVU1RNRU5UKGd0a19hZGp1c3RtZW50X25ldygwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wKSk7CiAgICAgcHJpdi0+dmVydGljYWxBZGp1c3RtZW50ID0gR1RL
X0FESlVTVE1FTlQoZ3RrX2FkanVzdG1lbnRfbmV3KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjApKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCBiL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCBlYmQxYWExLi5kM2U5ZjY3IDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKKysrIGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC02OSw2ICs2OSw4IEBAIHN0cnVjdCBfV2Vi
S2l0V2ViVmlld0NsYXNzIHsKICAgICAgKi8KICAgICBXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
KiAoKiBjcmVhdGVfd2ViX3ZpZXcpICAgICAgICAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOwog
CisgICAgV2ViS2l0V2ViVmlldyAgICAgICAgICAgICogKCogY3JlYXRlX2luc3BlY3Rvcl93ZWJf
dmlldykgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKwogICAgIC8qCiAgICAgICogVE9ETzog
RklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlrZSBXZWJQb2xpY3lEZWNpc2lvbkxpc3RlbmVyX1By
b3RvY29sIGluc3RlYWQKICAgICAgKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22171</attachid>
            <date>2008-07-09 05:06:21 -0700</date>
            <delta_ts>2008-07-15 11:41:09 -0700</delta_ts>
            <desc>simple test code for the web inspector in GtkLauncher</desc>
            <filename>launcher-inspector.diff</filename>
            <type>text/plain</type>
            <size>2498</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYyBiL1dlYktpdFRvb2xz
L0d0a0xhdW5jaGVyL21haW4uYwppbmRleCA4ZWQyNjkwLi41YTY1ZjYwIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMKKysrIGIvV2ViS2l0VG9vbHMvR3RrTGF1bmNo
ZXIvbWFpbi5jCkBAIC04OCw2ICs4OCwzMCBAQCBsb2FkX2NvbW1pdF9jYiAoV2ViS2l0V2ViVmll
dyogcGFnZSwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBncG9pbnRlciBkYXRhKQogICAgICAgICBn
dGtfZW50cnlfc2V0X3RleHQgKEdUS19FTlRSWSAodXJpX2VudHJ5KSwgdXJpKTsKIH0KIAorc3Rh
dGljIFdlYktpdFdlYlZpZXcqCitjcmVhdGVfaW5zcGVjdG9yX2NiIChXZWJLaXRXZWJWaWV3KiBw
YWdlLCBncG9pbnRlciBkYXRhKQoreworICAgIEd0a1dpZGdldCAqd2luZG93OworICAgIEd0a1dp
ZGdldCAqc2Nyb2xsZWRfd2luZG93OworICAgIEd0a1dpZGdldCAqbmV3X3dlYl92aWV3OworCisg
ICAgd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisgICAgZ3Rr
X3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyh3aW5kb3cpLCAiSW5zcGVjdG9yIik7CisgICAg
Z3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgNDAwLCAzMDAp
OworICAgIGd0a193aWRnZXRfc2hvdyh3aW5kb3cpOworCisgICAgc2Nyb2xsZWRfd2luZG93ID0g
Z3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7CisgICAgZ3RrX3Njcm9sbGVkX3dp
bmRvd19zZXRfcG9saWN5KEdUS19TQ1JPTExFRF9XSU5ET1coc2Nyb2xsZWRfd2luZG93KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1BPTElDWV9BVVRPTUFUSUMsIEdU
S19QT0xJQ1lfQVVUT01BVElDKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVS
KHdpbmRvdyksIHNjcm9sbGVkX3dpbmRvdyk7CisgICAgZ3RrX3dpZGdldF9zaG93KHNjcm9sbGVk
X3dpbmRvdyk7CisKKyAgICBuZXdfd2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3KCk7Cisg
ICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihzY3JvbGxlZF93aW5kb3cpLCBuZXdf
d2ViX3ZpZXcpOworCisgICAgcmV0dXJuIFdFQktJVF9XRUJfVklFVyhuZXdfd2ViX3ZpZXcpOwor
fQorCiBzdGF0aWMgdm9pZAogZGVzdHJveV9jYiAoR3RrV2lkZ2V0KiB3aWRnZXQsIGdwb2ludGVy
IGRhdGEpCiB7CkBAIC0xMDksMTYgKzEzMywyMiBAQCBnb19mb3J3YXJkX2NiIChHdGtXaWRnZXQq
IHdpZGdldCwgZ3BvaW50ZXIgZGF0YSkKIHN0YXRpYyBHdGtXaWRnZXQqCiBjcmVhdGVfYnJvd3Nl
ciAoKQogeworICAgIFdlYktpdFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0
dGluZ3NfbmV3KCk7CisKICAgICBHdGtXaWRnZXQqIHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3Jv
bGxlZF93aW5kb3dfbmV3IChOVUxMLCBOVUxMKTsKICAgICBndGtfc2Nyb2xsZWRfd2luZG93X3Nl
dF9wb2xpY3kgKEdUS19TQ1JPTExFRF9XSU5ET1cgKHNjcm9sbGVkX3dpbmRvdyksIEdUS19QT0xJ
Q1lfQVVUT01BVElDLCBHVEtfUE9MSUNZX0FVVE9NQVRJQyk7CiAKICAgICB3ZWJfdmlldyA9IFdF
QktJVF9XRUJfVklFVyAod2Via2l0X3dlYl92aWV3X25ldyAoKSk7CiAgICAgZ3RrX2NvbnRhaW5l
cl9hZGQgKEdUS19DT05UQUlORVIgKHNjcm9sbGVkX3dpbmRvdyksIEdUS19XSURHRVQgKHdlYl92
aWV3KSk7CiAKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWRl
dmVsb3Blci1leHRyYXMiLCBUUlVFLCBOVUxMKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3Nl
dHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJfdmlldyksIHNldHRpbmdzKTsKKwogICAgIGdfc2ln
bmFsX2Nvbm5lY3QgKEdfT0JKRUNUICh3ZWJfdmlldyksICJ0aXRsZS1jaGFuZ2VkIiwgR19DQUxM
QkFDSyAodGl0bGVfY2hhbmdlX2NiKSwgd2ViX3ZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qg
KEdfT0JKRUNUICh3ZWJfdmlldyksICJsb2FkLXByb2dyZXNzLWNoYW5nZWQiLCBHX0NBTExCQUNL
IChwcm9ncmVzc19jaGFuZ2VfY2IpLCB3ZWJfdmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCAo
R19PQkpFQ1QgKHdlYl92aWV3KSwgImxvYWQtY29tbWl0dGVkIiwgR19DQUxMQkFDSyAobG9hZF9j
b21taXRfY2IpLCB3ZWJfdmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKHdl
Yl92aWV3KSwgImhvdmVyaW5nLW92ZXItbGluayIsIEdfQ0FMTEJBQ0sgKGxpbmtfaG92ZXJfY2Ip
LCB3ZWJfdmlldyk7CisgICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKHdlYl92aWV3KSwg
ImNyZWF0ZS1pbnNwZWN0b3Itd2ViLXZpZXciLCBHX0NBTExCQUNLIChjcmVhdGVfaW5zcGVjdG9y
X2NiKSwgTlVMTCk7CiAKICAgICByZXR1cm4gc2Nyb2xsZWRfd2luZG93OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22282</attachid>
            <date>2008-07-15 11:40:10 -0700</date>
            <delta_ts>2008-07-18 07:41:20 -0700</delta_ts>
            <desc>My refactored patch</desc>
            <filename>inspector.diff</filename>
            <type>text/plain</type>
            <size>45863</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5NDA4ZGViLi44YmI4OWUx
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMDgtMDctMTUgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGtvdkBrb3YuZXRpLmJyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGFsbCB0
aGUgZmlsZXMgdGhhdCBuZWVkIHRvIGJlIGluc3RhbGxlZCBmb3IgdGhlIEluc3BlY3RvciB0bwor
ICAgICAgICB3b3JrLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisKIDIwMDgtMDYtMTgg
IE1hcmNvIEJhcmlzaW9uZSAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxwIFRva2VyLgpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0g
Yi9HTlVtYWtlZmlsZS5hbQppbmRleCBhNmFlMjk5Li5jMTgwNjcwIDEwMDY0NAotLS0gYS9HTlVt
YWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtMzE2LDYgKzMxNiw3IEBAIHdlYmtp
dGd0a19oX2FwaSArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRs
aXN0LmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmggXAogCVdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmggXAorCVdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYmluc3BlY3Rvci5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5n
cy5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKIApAQCAtMzQyLDYgKzM0
Myw3IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJiYWNrZm9yd2FyZGxpc3QuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFt
ZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcCBcCisJ
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcCBcCiAJV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCmluZGV4IGYwMDFkYTcuLmMxNWY4YTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjI1Niw2ICsyMjU2
LDE1MCBAQCBEZXJpdmVkU291cmNlcy9KUyUuaDogRGVyaXZlZFNvdXJjZXMvSlMlLmNwcDsKIERl
cml2ZWRTb3VyY2VzL0pTJS5jcHA6ICUuaWRsICQoU0NSSVBUU19CSU5ESU5HUykgJChXZWJDb3Jl
KS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQogCSQoUEVSTCkgLUkkKFdlYkNv
cmUpL2JpbmRpbmdzL3NjcmlwdHMgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRl
LWJpbmRpbmdzLnBsIC0taW5jbHVkZSAkKFdlYkNvcmUpL2RvbSAtLWluY2x1ZGUgJChXZWJDb3Jl
KS9odG1sIC0taW5jbHVkZSAkKFdlYkNvcmUpL2NzcyAtLWluY2x1ZGUgJChXZWJDb3JlKS9wYWdl
IC0taW5jbHVkZSAkKFdlYkNvcmUpL3htbCAtLWluY2x1ZGUgJChXZWJDb3JlKS9zdmcgLS1vdXRw
dXRkaXIgJChHRU5TT1VSQ0VTKSAtLWRlZmluZXMgIiQoRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJ
UFQpIiAtLWdlbmVyYXRvciBKUyAkPAogCisjIEluc3RhbGxpbmcgd2ViIGluc3BlY3RvciBmaWxl
cword2ViY29yZV9jcHBmbGFncyArPSAtRERBVEFfRElSPVwiJHtkYXRhZGlyfVwiCisKK3dlYmlu
c3BlY3RvcmRpciA9ICR7ZGF0YWRpcn0vd2Via2l0LTEuMC93ZWJpbnNwZWN0b3IKK2Rpc3Rfd2Vi
aW5zcGVjdG9yX0RBVEEgPSBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvQnJl
YWtwb2ludC5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvQnJlYWtwb2lu
dHNTaWRlYmFyUGFuZS5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvQ2Fs
bFN0YWNrU2lkZWJhclBhbmUuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9y
L0NvbnNvbGUuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0RhdGFiYXNl
LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9EYXRhYmFzZVF1ZXJ5Vmll
dy5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvRGF0YWJhc2VzUGFuZWwu
anMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0RhdGFiYXNlVGFibGVWaWV3
LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9EYXRhR3JpZC5qcyBcCisg
ICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNQYW5lbC5qcyBcCisgICAg
ICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvRm9udFZpZXcuanMgXAorICAgICAgICAkKFdl
YkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlVmlldy5qcyBcCisgICAgICAgICQoV2ViQ29yZSkv
cGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9yLmNzcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvaW5zcGVjdG9yLmh0bWwgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVj
dG9yL2luc3BlY3Rvci5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvTWV0
cmljc1NpZGViYXJQYW5lLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9P
YmplY3QuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL09iamVjdFByb3Bl
cnRpZXNTZWN0aW9uLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9QYW5l
bC5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvUGxhY2FyZC5qcyBcCisg
ICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvUHJvZmlsZXNQYW5lbC5qcyBcCisgICAg
ICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvUHJvZmlsZVZpZXcuanMgXAorICAgICAgICAk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1Byb3BlcnRpZXNTZWN0aW9uLmpzIFwKKyAgICAgICAg
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanMgXAorICAg
ICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1Jlc291cmNlQ2F0ZWdvcnkuanMgXAorICAg
ICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1Jlc291cmNlLmpzIFwKKyAgICAgICAgJChX
ZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9SZXNvdXJjZXNQYW5lbC5qcyBcCisgICAgICAgICQoV2Vi
Q29yZSkvcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2VWaWV3LmpzIFwKKyAgICAgICAgJChXZWJDb3Jl
KS9wYWdlL2luc3BlY3Rvci9TY29wZUNoYWluU2lkZWJhclBhbmUuanMgXAorICAgICAgICAkKFdl
YkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1NjcmlwdC5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFn
ZS9pbnNwZWN0b3IvU2NyaXB0c1BhbmVsLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2lu
c3BlY3Rvci9TY3JpcHRWaWV3LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rv
ci9TaWRlYmFyUGFuZS5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvU2lk
ZWJhclRyZWVFbGVtZW50LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9T
b3VyY2VGcmFtZS5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvU291cmNl
Vmlldy5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvU3R5bGVzU2lkZWJh
clBhbmUuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1RleHRQcm9tcHQu
anMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL3RyZWVvdXRsaW5lLmpzIFwK
KyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci91dGlsaXRpZXMuanMgXAorICAgICAg
ICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1ZpZXcuanMKKword2ViaW5zcGVjdG9yaW1hZ2Vz
ZGlyID0gJHtkYXRhZGlyfS93ZWJraXQtMS4wL3dlYmluc3BlY3Rvci9JbWFnZXMKK2Rpc3Rfd2Vi
aW5zcGVjdG9yaW1hZ2VzX0RBVEEgPSBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFn
ZXMvYmFjay5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2NoZWNrZXIu
cG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9jbGVhckNvbnNvbGVCdXR0
b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvY29uc29sZUJ1dHRv
bnMucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kYXRhYmFzZS5wbmcg
XAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2RhdGFiYXNlc0ljb24ucG5nIFwK
KwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kYXRhYmFzZVRhYmxlLnBuZyBcCisJ
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGVidWdnZXJDb250aW51ZS5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2RlYnVnZ2VyUGF1c2UucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kZWJ1Z2dlclN0ZXBJbnRvLnBuZyBcCisJ
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGVidWdnZXJTdGVwT3V0LnBuZyBcCisJ
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGVidWdnZXJTdGVwT3Zlci5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2RlYnVnZ2luZ0J1dHRvbnMucG5nIFwK
KwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kaXNjbG9zdXJlVHJpYW5nbGVTbWFs
bERvd25CbGFjay5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2Rpc2Ns
b3N1cmVUcmlhbmdsZVNtYWxsRG93bi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3Iv
SW1hZ2VzL2Rpc2Nsb3N1cmVUcmlhbmdsZVNtYWxsRG93bldoaXRlLnBuZyBcCisJJChXZWJDb3Jl
KS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGlzY2xvc3VyZVRyaWFuZ2xlU21hbGxSaWdodEJsYWNr
LnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGlzY2xvc3VyZVRyaWFu
Z2xlU21hbGxSaWdodERvd25CbGFjay5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3Iv
SW1hZ2VzL2Rpc2Nsb3N1cmVUcmlhbmdsZVNtYWxsUmlnaHREb3duLnBuZyBcCisJJChXZWJDb3Jl
KS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGlzY2xvc3VyZVRyaWFuZ2xlU21hbGxSaWdodERvd25X
aGl0ZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2Rpc2Nsb3N1cmVU
cmlhbmdsZVNtYWxsUmlnaHQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdl
cy9kaXNjbG9zdXJlVHJpYW5nbGVTbWFsbFJpZ2h0V2hpdGUucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9kb2NrQnV0dG9ucy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL2VsZW1lbnRzSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNw
ZWN0b3IvSW1hZ2VzL2Vycm9ySWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3Iv
SW1hZ2VzL2Vycm9yTWVkaXVtSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3Iv
SW1hZ2VzL2V4Y2x1ZGVCdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvZm9jdXNCdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFn
ZXMvZm9yd2FyZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2dsb3Nz
eUhlYWRlci5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2dsb3NzeUhl
YWRlclByZXNzZWQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9nbG9z
c3lIZWFkZXJTZWxlY3RlZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2Vz
L2dsb3NzeUhlYWRlclNlbGVjdGVkUHJlc3NlZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNw
ZWN0b3IvSW1hZ2VzL2dvQXJyb3cucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0lt
YWdlcy9sYXJnZXJSZXNvdXJjZXNCdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3Bl
Y3Rvci9JbWFnZXMvcGFuZUJvdHRvbUdyb3dBY3RpdmUucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2Uv
aW5zcGVjdG9yL0ltYWdlcy9wYW5lQm90dG9tR3Jvdy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL3BhbmVHcm93SGFuZGxlTGluZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFn
ZS9pbnNwZWN0b3IvSW1hZ2VzL3BhdXNlT25FeGNlcHRpb25CdXR0b25zLnBuZyBcCisJJChXZWJD
b3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcGVyY2VudEJ1dHRvbnMucG5nIFwKKwkkKFdlYkNv
cmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9wcm9maWxlR3JvdXBJY29uLnBuZyBcCisJJChXZWJD
b3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcHJvZmlsZUljb24ucG5nIFwKKwkkKFdlYkNvcmUp
L3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9wcm9maWxlc0ljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9wcm9maWxlU21hbGxJY29uLnBuZyBcCisJJChXZWJDb3JlKS9w
YWdlL2luc3BlY3Rvci9JbWFnZXMvcmVjb3JkQnV0dG9ucy5wbmcgXAorCSQoV2ViQ29yZSkvcGFn
ZS9pbnNwZWN0b3IvSW1hZ2VzL3JlbG9hZEJ1dHRvbnMucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2Uv
aW5zcGVjdG9yL0ltYWdlcy9yZXNvdXJjZUNTU0ljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2Uv
aW5zcGVjdG9yL0ltYWdlcy9yZXNvdXJjZURvY3VtZW50SWNvbi5wbmcgXAorCSQoV2ViQ29yZSkv
cGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Jlc291cmNlRG9jdW1lbnRJY29uU21hbGwucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9yZXNvdXJjZUpTSWNvbi5wbmcgXAorCSQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Jlc291cmNlUGxhaW5JY29uLnBuZyBcCisJ
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcmVzb3VyY2VQbGFpbkljb25TbWFsbC5w
bmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Jlc291cmNlc0ljb24ucG5n
IFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9yZXNvdXJjZXNTaXplR3JhcGhJ
Y29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcmVzb3VyY2VzVGlt
ZUdyYXBoSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Njcmlw
dHNJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc2VnbWVudEVu
ZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NlZ21lbnRIb3ZlckVu
ZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NlZ21lbnRIb3Zlci5w
bmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NlZ21lbnQucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9zZWdtZW50U2VsZWN0ZWRFbmQucG5nIFwK
KwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9zZWdtZW50U2VsZWN0ZWQucG5nIFwK
KwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9zcGxpdHZpZXdEaW1wbGUucG5nIFwK
KwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9zcGxpdHZpZXdEaXZpZGVyQmFja2dy
b3VuZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3N0YXR1c2JhckJh
Y2tncm91bmQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9zdGF0dXNi
YXJCb3R0b21CYWNrZ3JvdW5kLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFn
ZXMvc3RhdHVzYmFyQnV0dG9ucy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1h
Z2VzL3N0YXR1c2Jhck1lbnVCdXR0b24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9y
L0ltYWdlcy9zdGF0dXNiYXJNZW51QnV0dG9uU2VsZWN0ZWQucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9zdGF0dXNiYXJSZXNpemVySG9yaXpvbnRhbC5wbmcgXAorCSQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3N0YXR1c2JhclJlc2l6ZXJWZXJ0aWNhbC5w
bmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpbWVsaW5lUGlsbEJsdWUu
cG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aW1lbGluZVBpbGxHcmF5
LnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvdGltZWxpbmVQaWxsR3Jl
ZW4ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aW1lbGluZVBpbGxP
cmFuZ2UucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aW1lbGluZVBp
bGxQdXJwbGUucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aW1lbGlu
ZVBpbGxSZWQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aW1lbGlu
ZVBpbGxZZWxsb3cucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aXBC
YWxsb29uQm90dG9tLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvdGlw
QmFsbG9vbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpcEljb24u
cG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aXBJY29uUHJlc3NlZC5w
bmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Rvb2xiYXJJdGVtU2VsZWN0
ZWQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90cmVlRG93blRyaWFu
Z2xlQmxhY2sucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90cmVlRG93
blRyaWFuZ2xlV2hpdGUucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90
cmVlUmlnaHRUcmlhbmdsZUJsYWNrLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvdHJlZVJpZ2h0VHJpYW5nbGVXaGl0ZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNw
ZWN0b3IvSW1hZ2VzL3RyZWVVcFRyaWFuZ2xlQmxhY2sucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2Uv
aW5zcGVjdG9yL0ltYWdlcy90cmVlVXBUcmlhbmdsZVdoaXRlLnBuZyBcCisJJChXZWJDb3JlKS9w
YWdlL2luc3BlY3Rvci9JbWFnZXMvdXNlcklucHV0SWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFn
ZS9pbnNwZWN0b3IvSW1hZ2VzL3VzZXJJbnB1dFByZXZpb3VzSWNvbi5wbmcgXAorCSQoV2ViQ29y
ZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3dhcm5pbmdJY29uLnBuZyBcCisJJChXZWJDb3JlKS9w
YWdlL2luc3BlY3Rvci9JbWFnZXMvd2FybmluZ01lZGl1bUljb24ucG5nIFwKKwkkKFdlYkNvcmUp
L3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy93YXJuaW5nc0Vycm9ycy5wbmcKKwogIyBDbGVhbiBydWxl
cyBmb3IgV2ViQ29yZQogCiBDTEVBTkZJTEVTICs9IFwKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
Q2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggODQxNDMxMS4uM2VkNTRkNCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0OSBAQAorMjAwOC0wNy0xNSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8
a292QGtvdi5ldGkuYnI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KwlJbXBsZW1lbnRlZCBhIG5ldyBXZWJLaXRXZWJJbnNwZWN0b3IgY2xhc3MgdG8gcHJvdmlkZSBh
IEdPYmplY3QKKwlBUEkgZm9yIHRoZSBXZWIgSW5zcGVjdG9yLiBBbHNvIGltcGxlbWVudGVkIElu
c3BlY3RvckNsaWVudC4KKwkKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6Okluc3BlY3RvckNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJv
eWVkKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVQYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjpzaG93V2luZG93KToKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yQ2xpZW50OjpjbG9zZVdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6Oklu
c3BlY3RvckNsaWVudDo6YXR0YWNoV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
Q2xpZW50OjpkZXRhY2hXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6
Omluc3BlY3RlZFVSTENoYW5nZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXQuaDoKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0LW1hcnNoYWwubGlzdDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0ZGVmaW5lcy5o
OgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAgICAgICogd2Via2l0L3dl
YmtpdHdlYmluc3BlY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdFdlYkluc3BlY3Rv
clByaXZhdGU6OndlYmtpdF93ZWJfaW5zcGVjdG9yX3JlYWxfaW5zcGVjdF93ZWJfdmlldyk6Cisg
ICAgICAgIChfV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZTo6d2Via2l0X3dlYl9pbnNwZWN0b3Jf
cmVhbF9zaG93X3dpbmRvdyk6CisgICAgICAgIChfV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZTo6
d2Via2l0X3dlYl9pbnNwZWN0b3JfcmVhbF9hdHRhY2hfd2luZG93KToKKyAgICAgICAgKF9XZWJL
aXRXZWJJbnNwZWN0b3JQcml2YXRlOjp3ZWJraXRfd2ViX2luc3BlY3Rvcl9yZWFsX2RldHRhY2hf
d2luZG93KToKKyAgICAgICAgKF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlOjp3ZWJraXRfd2Vi
X2luc3BlY3Rvcl9yZWFsX2Nsb3NlX3dpbmRvdyk6CisgICAgICAgIChfV2ViS2l0V2ViSW5zcGVj
dG9yUHJpdmF0ZTo6d2Via2l0X3dlYl9pbnNwZWN0b3JfcmVhbF91cmlfY2hhbmdlZCk6CisgICAg
ICAgIChfV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZTo6d2Via2l0X3dlYl9pbnNwZWN0b3JfcmVh
bF9pbnNwZWN0b3JfZGVzdHJveWVkKToKKyAgICAgICAgKF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2
YXRlOjp3ZWJraXRfaW5zcGVjdF93ZWJfdmlld19yZXF1ZXN0X2hhbmRsZWQpOgorICAgICAgICAo
X1dlYktpdFdlYkluc3BlY3RvclByaXZhdGU6OndlYmtpdF93ZWJfaW5zcGVjdG9yX2NsYXNzX2lu
aXQpOgorICAgICAgICAoX1dlYktpdFdlYkluc3BlY3RvclByaXZhdGU6OndlYmtpdF93ZWJfaW5z
cGVjdG9yX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYkluc3BlY3RvclByaXZhdGU6OndlYmtp
dF93ZWJfaW5zcGVjdG9yX2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJLaXRXZWJJbnNwZWN0b3JQ
cml2YXRlOjp3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dl
YktpdFdlYkluc3BlY3RvclByaXZhdGU6OndlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9wcm9wZXJ0
eSk6CisgICAgICAgIChfV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZTo6d2Via2l0X3dlYl9pbnNw
ZWN0b3Jfc2V0X3dlYl92aWV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9y
Lmg6IEFkZGVkLgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHA6CisgICAg
ICAgIChfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOjopOgorICAgICAgICAoX1dlYktpdFdlYlNl
dHRpbmdzUHJpdmF0ZTo6d2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KToKKyAgICAgICAg
KF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6OndlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3Bl
cnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6OndlYmtpdF93ZWJfc2V0
dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6
OndlYmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg6CisKIDIwMDgtMDctMDgg
IEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQ2hyaXN0aWFuIER5d2FuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCmluZGV4IGE1NGI2YTAuLjdiZjBhNjQgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAorKysg
Yi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKQEAgLTEs
NCArMSw2IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2
YQorICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwogICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgpAQCAtMTcsNiArMTksMTEgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRHdGsuaCIKIAorI2luY2x1
ZGUgIndlYmtpdHdlYnZpZXcuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0b3IuaCIKKyNp
bmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKQEAgLTI0LDE1ICszMSw1MyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK0luc3BlY3RvckNsaWVudDo6
SW5zcGVjdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcgKndlYlZpZXcpCisgICAgOiBtX3dlYlZpZXco
TlVMTCkKKyAgICAsIG1faW5zcGVjdGVkV2ViVmlldyh3ZWJWaWV3KQore30KKwogdm9pZCBJbnNw
ZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiB7CisgICAgaWYgKG1fd2ViVmlldykK
KyAgICAgICAgeworICAgICAgICAgICAgZ2Jvb2xlYW4gaGFuZGxlZCA9IEZBTFNFOworICAgICAg
ICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViSW5zcGVjdG9yLCAiaW5zcGVjdG9yLWRl
c3Ryb3llZCIsICZoYW5kbGVkKTsKKworICAgICAgICAgICAgLyogd2UgY2FuIG5vdyBkaXNwb3Nl
IG91ciBvd24gcmVmZXJlbmNlICovCisgICAgICAgICAgICBnX29iamVjdF91bnJlZihtX3dlYklu
c3BlY3Rvcik7CisgICAgICAgIH0KKwogICAgIGRlbGV0ZSB0aGlzOwogfQogCiBQYWdlKiBJbnNw
ZWN0b3JDbGllbnQ6OmNyZWF0ZVBhZ2UoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgaWYgKG1fd2ViVmlldykKKyAgICAgIHJldHVybiBjb3JlKG1fd2ViVmll
dyk7CisKKyAgICAvKiBUaGlzIGdfb2JqZWN0X2dldCB3aWxsIHJlZiB0aGUgaW5zcGVjdG9yLiBX
ZSdyZSBub3QgZG9pbmcgYW4KKyAgICAgICB1bnJlZiBpZiB0aGlzIG1ldGhvZCBzdWNjZWVkcyBi
ZWNhdXNlIHRoZSBpbnNwZWN0b3Igb2JqZWN0IG11c3QKKyAgICAgICBiZSBhbGl2ZSBldmVuIGFm
dGVyIHRoZSBpbnNwZWN0ZWQgV2ViVmlldyBpcyBkZXN0cm95ZWQgLSB0aGUKKyAgICAgICBjbG9z
ZS13aW5kb3cgYW5kIGluc3BlY3Rvci1kZXN0cm95ZWQgc2lnbmFscyBzdGlsbCBuZWVkIHRvIGJl
CisgICAgICAgZW1pdHRlZC4gKi8KKyAgICBXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3Rv
cjsKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1QobV9pbnNwZWN0ZWRXZWJWaWV3KSwgImluc3Bl
Y3RvciIsICZ3ZWJJbnNwZWN0b3IsIE5VTEwpOworICAgIG1fd2ViSW5zcGVjdG9yID0gd2ViSW5z
cGVjdG9yOworCisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViSW5zcGVjdG9yLCAiaW5z
cGVjdC13ZWItdmlldyIsIG1faW5zcGVjdGVkV2ViVmlldywgJm1fd2ViVmlldyk7CisKKyAgICBp
ZiAoIW1fd2ViVmlldykKKyAgICAgICAgeworICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYobV93
ZWJJbnNwZWN0b3IpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgIHdl
YmtpdF93ZWJfaW5zcGVjdG9yX3NldF93ZWJfdmlldyhtX3dlYkluc3BlY3RvciwgbV93ZWJWaWV3
KTsKKworICAgIHdlYmtpdF93ZWJfdmlld19vcGVuKG1fd2ViVmlldywgImZpbGU6Ly8iREFUQV9E
SVIiL3dlYmtpdC0xLjAvd2ViaW5zcGVjdG9yL2luc3BlY3Rvci5odG1sIik7CisgICAgZ3RrX3dp
ZGdldF9zaG93KEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisKKyAgICByZXR1cm4gY29yZShtX3dl
YlZpZXcpOwogfQogCiBTdHJpbmcgSW5zcGVjdG9yQ2xpZW50Ojpsb2NhbGl6ZWRTdHJpbmdzVVJM
KCkKQEAgLTQzLDIyICs4OCw0MiBAQCBTdHJpbmcgSW5zcGVjdG9yQ2xpZW50Ojpsb2NhbGl6ZWRT
dHJpbmdzVVJMKCkKIAogdm9pZCBJbnNwZWN0b3JDbGllbnQ6OnNob3dXaW5kb3coKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsK
KworICAgIGdib29sZWFuIGhhbmRsZWQgPSBGQUxTRTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25h
bWUobV93ZWJJbnNwZWN0b3IsICJzaG93LXdpbmRvdyIsICZoYW5kbGVkKTsKKworICAgIGNvcmUo
bV9pbnNwZWN0ZWRXZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRXaW5kb3dWaXNp
YmxlKHRydWUpOwogfQogCiB2b2lkIEluc3BlY3RvckNsaWVudDo6Y2xvc2VXaW5kb3coKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVy
bjsKKworICAgIGdib29sZWFuIGhhbmRsZWQgPSBGQUxTRTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5
X25hbWUobV93ZWJJbnNwZWN0b3IsICJjbG9zZS13aW5kb3ciLCAmaGFuZGxlZCk7CisgICAgCisg
ICAgY29yZShtX2luc3BlY3RlZFdlYlZpZXcpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldFdp
bmRvd1Zpc2libGUoZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvckNsaWVudDo6YXR0YWNoV2lu
ZG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAg
ICAgICByZXR1cm47CisKKyAgICBnYm9vbGVhbiBoYW5kbGVkID0gRkFMU0U7CisgICAgZ19zaWdu
YWxfZW1pdF9ieV9uYW1lKG1fd2ViSW5zcGVjdG9yLCAiYXR0YWNoLXdpbmRvdyIsICZoYW5kbGVk
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnQ6OmRldGFjaFdpbmRvdygpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZ2Jvb2xlYW4gaGFuZGxlZCA9IEZBTFNFOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSht
X3dlYkluc3BlY3RvciwgImRldHRhY2gtd2luZG93IiwgJmhhbmRsZWQpOwogfQogCiB2b2lkIElu
c3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0KE5vZGUqIG5vZGUpCkBAIC03MSw5ICsxMzYsMTMgQEAg
dm9pZCBJbnNwZWN0b3JDbGllbnQ6OmhpZGVIaWdobGlnaHQoKQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0
IFN0cmluZyYpCit2b2lkIEluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25z
dCBTdHJpbmcmIG5ld1VSTCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93
ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBnYm9vbGVhbiBoYW5kbGVkID0gRkFMU0U7
CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViSW5zcGVjdG9yLCAidXJpLWNoYW5nZWQi
LCBuZXdVUkwudXRmOCgpLmRhdGEoKSwgJmhhbmRsZWQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaAppbmRleCA5YWZkNDJiLi5mZjE4
MGU3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3Rr
LmgKQEAgLTMwLDYgKzMwLDggQEAKICNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50R3RrX2gKIAogI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKKyNp
bmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIE5vZGU7CkBAIC00MSw2ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAgICAg
Y2xhc3MgSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCB7
CiAgICAgcHVibGljOgorICAgICAgICBJbnNwZWN0b3JDbGllbnQoV2ViS2l0V2ViVmlldyAqd2Vi
Vmlldyk7CisKICAgICAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwogCiAg
ICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlUGFnZSgpOwpAQCAtNTYsNiArNjAs
MTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQo
V2ViQ29yZTo6Tm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIG5ld1VSTCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBXZWJLaXRXZWJWaWV3KiBt
X3dlYlZpZXc7CisgICAgICAgIFdlYktpdFdlYlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKKyAg
ICAgICAgV2ViS2l0V2ViSW5zcGVjdG9yKiBtX3dlYkluc3BlY3RvcjsKICAgICB9OwogfQogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQtbWFyc2hhbC5saXN0IGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0LW1hcnNoYWwubGlzdAppbmRleCBhOGYyNDUzLi42YjNiNzZjIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQtbWFyc2hhbC5saXN0CisrKyBiL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3QKQEAgLTYsNyArNiwxMCBAQCBWT0lE
Ok9CSkVDVCxTVFJJTkcKIFZPSUQ6T0JKRUNULE9CSkVDVAogVk9JRDpPQkpFQ1QsUE9JTlRFUixQ
T0lOVEVSCiBCT09MRUFOOlNUUklORyxJTlQsU1RSSU5HCitCT09MRUFOOlZPSUQKK0JPT0xFQU46
U1RSSU5HCiBCT09MRUFOOk9CSkVDVCxTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNUUklORyxCT09M
RUFOCiBCT09MRUFOOk9CSkVDVCxTVFJJTkcsU1RSSU5HLFNUUklORwogSU5UOk9CSkVDVCxPQkpF
Q1QKK09CSkVDVDpPQkpFQ1QKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5o
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKaW5kZXggMTBjMjE0Zi4uZTE5Y2JjNyAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0bmV0
d29ya3JlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViZnJhbWUuaD4KICNpbmNs
dWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0
d2ViaW5zcGVjdG9yLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcuaD4KICNpbmNs
dWRlIDx3ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmg+CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRkZWZpbmVzLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKaW5kZXgg
Mzg2YzNlMS4uMGMwODBmNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVm
aW5lcy5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaApAQCAtNTUsNiAr
NTUsOSBAQCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViRnJhbWVDbGFzcyBXZWJLaXRXZWJGcmFt
ZUNsYXNzOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzIFdlYktpdFdlYlNldHRp
bmdzOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzQ2xhc3MgV2ViS2l0V2ViU2V0
dGluZ3NDbGFzczsKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkluc3BlY3RvciBXZWJLaXRX
ZWJJbnNwZWN0b3I7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViSW5zcGVjdG9yQ2xhc3MgV2Vi
S2l0V2ViSW5zcGVjdG9yQ2xhc3M7CisKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdl
YktpdFdlYlZpZXc7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIFdlYktpdFdl
YlZpZXdDbGFzczsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IGVkODFhMWMuLmYx
ZDk1Y2UgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysg
Yi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEd0ay5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
Q2xpZW50LmgiCiAKICNpbmNsdWRlIDxnbGliLmg+CkBAIC02Nyw2ICs2OCw3IEBAIGV4dGVybiAi
QyIgewogICAgIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgICAgICBXZWJDb3Jl
OjpQYWdlKiBjb3JlUGFnZTsKICAgICAgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdz
OworICAgICAgICBXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvcjsKIAogICAgICAgICBX
ZWJLaXRXZWJGcmFtZSogbWFpbkZyYW1lOwogICAgICAgICBXZWJDb3JlOjpTdHJpbmcgYXBwbGlj
YXRpb25OYW1lRm9yVXNlckFnZW50OwpAQCAtMTEwLDYgKzExMiw5IEBAIGV4dGVybiAiQyIgewog
ICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKgogICAgIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25l
d193aXRoX2NvcmVfaXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOwogCisgICAgdm9pZAorICAg
IHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNwZWN0b3JfY2xpZW50KFdlYktpdFdlYkluc3Bl
Y3RvciosIFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50Kik7CisKICAgICAvLyBGSVhNRTogTW92ZSB0
aGVzZSB0byB3ZWJraXR3ZWJmcmFtZS5oIG9uY2UgdGhlaXIgQVBJIGhhcyBiZWVuIGRpc2N1c3Nl
ZC4KIAogICAgIFdFQktJVF9BUEkgR1NMaXN0KgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmlu
c3BlY3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA2ZmJkNwot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5j
cHAKQEAgLTAsMCArMSwzNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBO
b3JvbmhhIFNpbHZhCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIndlYmtpdHdlYmlu
c3BlY3Rvci5oIgorI2luY2x1ZGUgIndlYmtpdC1tYXJzaGFsLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yQ2xpZW50R3RrLmgiCisjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OworCitleHRlcm4gIkMiIHsKKworZW51bSB7CisgICAgSU5TUEVDVF9XRUJf
VklFVywKKyAgICBTSE9XX1dJTkRPVywKKyAgICBBVFRBQ0hfV0lORE9XLAorICAgIERFVFRBQ0hf
V0lORE9XLAorICAgIENMT1NFX1dJTkRPVywKKyAgICBVUklfQ0hBTkdFRCwKKyAgICBJTlNQRUNU
T1JfREVTVFJPWUVELAorICAgIExBU1RfU0lHTkFMCit9OworCitzdGF0aWMgZ3VpbnQgd2Via2l0
X3dlYl9pbnNwZWN0b3Jfc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CisKK2VudW0gewor
ICAgIFBST1BfMCwKKworICAgIFBST1BfSU5TUEVDVE9SX1dFQl9WSUVXLAorfTsKKworR19ERUZJ
TkVfVFlQRShXZWJLaXRXZWJJbnNwZWN0b3IsIHdlYmtpdF93ZWJfaW5zcGVjdG9yLCBHX1RZUEVf
T0JKRUNUKQorCitzdHJ1Y3QgX1dlYktpdFdlYkluc3BlY3RvclByaXZhdGUgeworICAgIEluc3Bl
Y3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50OworICAgIFdlYktpdFdlYlZpZXcqIGluc3BlY3Rv
cl92aWV3OworfTsKKworI2RlZmluZSBXRUJLSVRfV0VCX0lOU1BFQ1RPUl9HRVRfUFJJVkFURShv
YmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9J
TlNQRUNUT1IsIFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUpKQorCitzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX2luc3BlY3Rvcl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpOworCitzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7CisKK3N0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKKwor
c3RhdGljIFdlYktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3JlYWxfaW5zcGVjdF93
ZWJfdmlldyAoV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJfaW5zcGVjdG9yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0V2ViVmlldyogd2ViX3ZpZXcpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfd2ViX2luc3BlY3Rvcl9yZWFsX3Nob3dfd2luZG93IChXZWJLaXRXZWJJbnNw
ZWN0b3IqKQoreworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtp
dF93ZWJfaW5zcGVjdG9yX3JlYWxfYXR0YWNoX3dpbmRvdyAoV2ViS2l0V2ViSW5zcGVjdG9yKikK
K3sKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX2lu
c3BlY3Rvcl9yZWFsX2RldHRhY2hfd2luZG93IChXZWJLaXRXZWJJbnNwZWN0b3IqKQoreworICAg
IHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfaW5zcGVjdG9y
X3JlYWxfY2xvc2Vfd2luZG93IChXZWJLaXRXZWJJbnNwZWN0b3IqKQoreworICAgIHJldHVybiBG
QUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3JlYWxfdXJp
X2NoYW5nZWQgKFdlYktpdFdlYkluc3BlY3RvciosIGNvbnN0IGdjaGFyICpuZXdfdXJpKQorewor
ICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfaW5zcGVj
dG9yX3JlYWxfaW5zcGVjdG9yX2Rlc3Ryb3llZCAoV2ViS2l0V2ViSW5zcGVjdG9yKikKK3sKKyAg
ICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfaW5zcGVjdF93ZWJf
dmlld19yZXF1ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwgR1ZhbHVl
KiByZXR1cm5BY2N1LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15
KQoreworICAgIGdib29sZWFuIGNvbnRpbnVlRW1pc3Npb24gPSBUUlVFOworICAgIGdwb2ludGVy
IG5ld1dlYlZpZXcgPSBnX3ZhbHVlX2dldF9vYmplY3QoaGFuZGxlclJldHVybik7CisgICAgZ192
YWx1ZV9zZXRfb2JqZWN0KHJldHVybkFjY3UsIG5ld1dlYlZpZXcpOworCisgICAgaWYgKG5ld1dl
YlZpZXcpCisgICAgICAgIGNvbnRpbnVlRW1pc3Npb24gPSBGQUxTRTsKKworICAgIHJldHVybiBj
b250aW51ZUVtaXNzaW9uOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9j
bGFzc19pbml0KFdlYktpdFdlYkluc3BlY3RvckNsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0
Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ29iamVj
dF9jbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9maW5hbGl6ZTsKKyAgICBn
b2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfcHJv
cGVydHk7CisgICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9pbnNw
ZWN0b3JfZ2V0X3Byb3BlcnR5OworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViSW5zcGVjdG9y
OjppbnNwZWN0LXdlYi12aWV3OgorICAgICAqIEB3ZWJfaW5zcGVjdG9yOiB0aGUgb2JqZWN0IG9u
IHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJL
aXRXZWIgd2hpY2ggd2lsbCBiZSBpbnNwZWN0ZWQKKyAgICAgKiBAcmV0dXJuOiBhIG5ld2x5IGFs
bG9jYXRlZCAjV2ViS2l0V2ViVmlldyBvciAlTlVMTAorICAgICAqCisgICAgICogRW1pdHRlZCB3
aGVuIHRoZSB1c2VyIGFjdGl2YXRlcyB0aGUgJ2luc3BlY3QnIGNvbnRleHQgbWVudSBpdGVtCisg
ICAgICogdG8gaW5zcGVjdCBhIHdlYiB2aWV3LiBUaGUgYXBwbGljYXRpb24gd2hpY2ggaXMgaW50
ZXJlc3RlZCBpbgorICAgICAqIHRoZSBpbnNwZWN0b3Igc2hvdWxkIGNyZWF0ZSBhIHdpbmRvdywg
b3Igb3RoZXJ3aXNlIGFkZCB0aGUKKyAgICAgKiAjV2ViS2l0V2ViVmlldyBpdCBjcmVhdGVzIHRv
IGFuIGV4aXN0aW5nIHdpbmRvdy4KKyAgICAgKgorICAgICAqIFRoZSAjV2ViS2l0V2ViVmlldyBt
dXN0IG5ldmVyIGJlIGRlc3Ryb3llZDsgdGhhdCBtZWFucyB0aGF0IHlvdQorICAgICAqIHByb2Jh
Ymx5IHdhbnQgdG8gaGFuZGxlIHRoZSBkZWxldGUtZXZlbnQgYW5kIGRlc3Rvcnkgc2lnbmFscyBv
ZgorICAgICAqIHdpbmRvd3MgY29udGFpbmluZyB0aGUgaW5zcGVjdG9yICNXZWJLaXRXZWJWaWV3
LCBzbyB0aGF0IHlvdQorICAgICAqIGNhbiBoaWRlIHRoZW0gd2hlbiB0aGV5IGFyZSBjbG9zZWQs
IGFuZCBzaG93IHRoZW0gYWdhaW4gd2hlbgorICAgICAqIDo6c2hvdy13aW5kb3cgaXMgZW1pdHRl
ZC4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zaWduYWxzW0lOU1BFQ1RfV0VC
X1ZJRVddID0gZ19zaWduYWxfbmV3KCJpbnNwZWN0LXdlYi12aWV3IiwKKyAgICAgICAgICAgIEdf
VFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lH
TkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIEdfU1RSVUNUX09G
RlNFVCAoV2ViS2l0V2ViSW5zcGVjdG9yQ2xhc3MsIGluc3BlY3Rfd2ViX3ZpZXcpLAorICAgICAg
ICAgICAgd2Via2l0X2luc3BlY3Rfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkLAorICAgICAgICAg
ICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX09CSkVDVF9fT0JKRUNULAorICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcgLCAxLAorICAgICAgICAgICAgV0VCS0lUX1RZ
UEVfV0VCX1ZJRVcpOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOjpzaG93
LXdpbmRvdzoKKyAgICAgKiBAd2ViX2luc3BlY3RvcjogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUg
c2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAcmV0dXJuOiAlVFJVRSBpZiB0aGUgc2lnbmFsIGhh
cyBiZWVuIGhhbmRsZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5zcGVjdG9y
IHdpbmRvdyBzaG91bGQgYmUgZGlzcGxheWVkLiBOb3RpY2UKKyAgICAgKiB0aGF0IHRoZSB3aW5k
b3cgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBhbHJlYWR5IGJ5IGhhbmRsaW5nCisgICAgICogOjpp
bnNwZWN0LXdlYi12aWV3LgorICAgICAqLworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NpZ25h
bHNbU0hPV19XSU5ET1ddID0gZ19zaWduYWxfbmV3KCJzaG93LXdpbmRvdyIsCisgICAgICAgICAg
ICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShH
X1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICBHX1NUUlVD
VF9PRkZTRVQgKFdlYktpdFdlYkluc3BlY3RvckNsYXNzLCBzaG93X3dpbmRvdyksCisgICAgICAg
ICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxM
LAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAg
IEdfVFlQRV9CT09MRUFOICwgMCk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJJbnNwZWN0
b3I6OmF0dGFjaC13aW5kb3c6CisgICAgICogQHdlYl9pbnNwZWN0b3I6IHRoZSBvYmplY3Qgb24g
d2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHJldHVybjogJVRSVUUgaWYgdGhl
IHNpZ25hbCBoYXMgYmVlbiBoYW5kbGVkCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhl
IGluc3BlY3RvciB3aW5kb3cgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIHRoZQorICAgICAqIHdpbmRv
dyBpbiB3aGljaCB0aGUgI1dlYktpdFdlYlZpZXcgaXQgaXMgaW5zcGVjdGluZyBpcyBsb2NhdGVk
LgorICAgICAqLworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NpZ25hbHNbQVRUQUNIX1dJTkRP
V10gPSBnX3NpZ25hbF9uZXcoImF0dGFjaC13aW5kb3ciLAorICAgICAgICAgICAgR19UWVBFX0ZS
T01fQ0xBU1Moa2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVO
X0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChX
ZWJLaXRXZWJJbnNwZWN0b3JDbGFzcywgYXR0YWNoX3dpbmRvdyksCisgICAgICAgICAgICBnX3Np
Z25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAg
ICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgIEdfVFlQRV9C
T09MRUFOICwgMCk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJJbnNwZWN0b3I6OmRldHRh
Y2gtd2luZG93OgorICAgICAqIEB3ZWJfaW5zcGVjdG9yOiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRo
ZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEByZXR1cm46ICVUUlVFIGlmIHRoZSBzaWduYWwg
aGFzIGJlZW4gaGFuZGxlZAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnNwZWN0
b3Igd2luZG93IHNob3VsZCBiZSBkZXR0YWNoZWQgdG8gdGhlCisgICAgICogd2luZG93IGluIHdo
aWNoIHRoZSAjV2ViS2l0V2ViVmlldyBpdCBpcyBpbnNwZWN0aW5nIGlzIGxvY2F0ZWQuCisgICAg
ICovCisgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2lnbmFsc1tERVRUQUNIX1dJTkRPV10gPSBn
X3NpZ25hbF9uZXcoImRldHRhY2gtd2luZG93IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NM
QVNTKGtsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNU
IHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVCAoV2ViS2l0
V2ViSW5zcGVjdG9yQ2xhc3MsIGRldHRhY2hfd2luZG93KSwKKyAgICAgICAgICAgIGdfc2lnbmFs
X2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAg
ICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAorICAgICAgICAgICAgR19UWVBFX0JPT0xF
QU4gLCAwKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYkluc3BlY3Rvcjo6Y2xvc2Utd2lu
ZG93OgorICAgICAqIEB3ZWJfaW5zcGVjdG9yOiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWdu
YWwgaXMgZW1pdHRlZAorICAgICAqIEByZXR1cm46ICVUUlVFIGlmIHRoZSBzaWduYWwgaGFzIGJl
ZW4gaGFuZGxlZAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnNwZWN0b3Igd2lu
ZG93IHNob3VsZCBiZSBjbG9zZWQuIFRoZSB3aW5kb3cKKyAgICAgKiBzaG91bGQgYmUgaGlkZGVu
LCBzbyB0aGF0IGl0IGNhbiBiZSBkaXNwbGF5ZWQgYWdhaW4gYnkgaGFuZGxpbmcKKyAgICAgKiA6
OnNob3ctd2luZG93IGxhdGVyIG9uLiBOb3RpY2UgdGhhdCB0aGUgaW5zcGVjdGVkCisgICAgICog
I1dlYktpdFdlYlZpZXcgbWF5IG5vIGxvbmdlciBleGlzdCB3aGVuIHRoaXMgc2lnbmFsIGlzIGVt
aXR0ZWQuCisgICAgICovCisgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2lnbmFsc1tDTE9TRV9X
SU5ET1ddID0gZ19zaWduYWxfbmV3KCJjbG9zZS13aW5kb3ciLAorICAgICAgICAgICAgR19UWVBF
X0ZST01fQ0xBU1Moa2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxf
UlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VU
IChXZWJLaXRXZWJJbnNwZWN0b3JDbGFzcywgY2xvc2Vfd2luZG93KSwKKyAgICAgICAgICAgIGdf
c2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwKKyAgICAgICAgICAgIE5VTEwsCisgICAg
ICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAorICAgICAgICAgICAgR19UWVBF
X0JPT0xFQU4gLCAwKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYkluc3BlY3Rvcjo6dXJp
LWNoYW5nZWQ6CisgICAgICogQHdlYl9pbnNwZWN0b3I6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhl
IHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHJldHVybjogJVRSVUUgaWYgdGhlIHNpZ25hbCBo
YXMgYmVlbiBoYW5kbGVkCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIFVSSSBiZWlu
ZyBpbnNwZWN0ZWQgY2hhbmdlcy4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX2luc3BlY3Rvcl9z
aWduYWxzW1VSSV9DSEFOR0VEXSA9IGdfc2lnbmFsX25ldygidXJpLWNoYW5nZWQiLAorICAgICAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1Moa2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFn
cykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgR19T
VFJVQ1RfT0ZGU0VUIChXZWJLaXRXZWJJbnNwZWN0b3JDbGFzcywgdXJpX2NoYW5nZWQpLAorICAg
ICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAgICAgICAg
TlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX1NUUklORywKKyAgICAg
ICAgICAgIEdfVFlQRV9CT09MRUFOICwgMSwKKyAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcpOwor
CisgICAgLyoqCisgICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOjppbnNwZWN0b3ItZGVzdHJveWVk
OgorICAgICAqIEB3ZWJfaW5zcGVjdG9yOiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwg
aXMgZW1pdHRlZAorICAgICAqIEByZXR1cm46ICVUUlVFIGlmIHRoZSBzaWduYWwgaGFzIGJlZW4g
aGFuZGxlZAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnNwZWN0b3IgaXMgZGVz
dHJveWVkLgorICAgICAqLworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NpZ25hbHNbSU5TUEVD
VE9SX0RFU1RST1lFRF0gPSBnX3NpZ25hbF9uZXcoImluc3BlY3Rvci1kZXN0cm95ZWQiLAorICAg
ICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Moa2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxG
bGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAg
R19TVFJVQ1RfT0ZGU0VUIChXZWJLaXRXZWJJbnNwZWN0b3JDbGFzcywgaW5zcGVjdG9yX2Rlc3Ry
b3llZCksCisgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisg
ICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9J
RCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOICwgMCk7CisKKyAgICAvKgorICAgICAqIHBy
b3BlcnRpZXMKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdv
YmplY3RfY2xhc3MsIFBST1BfSU5TUEVDVE9SX1dFQl9WSUVXLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgiaW5zcGVjdG9yLXdlYi12aWV3
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkluc3BlY3RvciBXZWIgVmlldyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgV2ViIFZpZXcgdGhhdCByZW5kZXJzIHRoZSBX
ZWIgSW5zcGVjdG9yIGl0c2VsZiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1f
UkVBRFdSSVRFKSk7CisKKyAgICAvKgorICAgICAqIGltcGxlbWVudGF0aW9ucyBvZiB2aXJ0dWFs
IG1ldGhvZHMKKyAgICAgKi8KKyAgICBrbGFzcy0+aW5zcGVjdF93ZWJfdmlldyA9IHdlYmtpdF93
ZWJfaW5zcGVjdG9yX3JlYWxfaW5zcGVjdF93ZWJfdmlldzsKKyAgICBrbGFzcy0+c2hvd193aW5k
b3cgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9yZWFsX3Nob3dfd2luZG93OworICAgIGtsYXNzLT5h
dHRhY2hfd2luZG93ID0gd2Via2l0X3dlYl9pbnNwZWN0b3JfcmVhbF9hdHRhY2hfd2luZG93Owor
ICAgIGtsYXNzLT5kZXR0YWNoX3dpbmRvdyA9IHdlYmtpdF93ZWJfaW5zcGVjdG9yX3JlYWxfZGV0
dGFjaF93aW5kb3c7CisgICAga2xhc3MtPmNsb3NlX3dpbmRvdyA9IHdlYmtpdF93ZWJfaW5zcGVj
dG9yX3JlYWxfY2xvc2Vfd2luZG93OworICAgIGtsYXNzLT51cmlfY2hhbmdlZCA9IHdlYmtpdF93
ZWJfaW5zcGVjdG9yX3JlYWxfdXJpX2NoYW5nZWQ7CisgICAga2xhc3MtPmluc3BlY3Rvcl9kZXN0
cm95ZWQgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9yZWFsX2luc3BlY3Rvcl9kZXN0cm95ZWQ7CisK
KyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJJbnNw
ZWN0b3JQcml2YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2lu
aXQoV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJfaW5zcGVjdG9yKQoreworICAgIHdlYl9pbnNwZWN0
b3ItPnByaXYgPSBXRUJLSVRfV0VCX0lOU1BFQ1RPUl9HRVRfUFJJVkFURSh3ZWJfaW5zcGVjdG9y
KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfZmluYWxpemUoR09iamVj
dCogb2JqZWN0KQoreworICAgIFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3RvciA9IFdF
QktJVF9XRUJfSU5TUEVDVE9SKG9iamVjdCk7CisgICAgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0
ZSogcHJpdiA9IHdlYl9pbnNwZWN0b3ItPnByaXY7CisKKyAgICBpZiAocHJpdi0+aW5zcGVjdG9y
X3ZpZXcpCisgICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmluc3BlY3Rvcl92aWV3KTsKKwor
ICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfaW5zcGVjdG9yX3BhcmVudF9jbGFzcyktPmZp
bmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3Nl
dF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYkluc3BlY3Rvciogd2Vi
X2luc3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9SKG9iamVjdCk7CisKKyAgICBzd2l0Y2go
cHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9JTlNQRUNUT1JfV0VCX1ZJRVc6CisgICAgICAgIHdl
YmtpdF93ZWJfaW5zcGVjdG9yX3NldF93ZWJfdmlldyh3ZWJfaW5zcGVjdG9yLCBXRUJLSVRfV0VC
X1ZJRVcoZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKSkpOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZv
aWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcF9pZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2Vi
S2l0V2ViSW5zcGVjdG9yKiB3ZWJfaW5zcGVjdG9yID0gV0VCS0lUX1dFQl9JTlNQRUNUT1Iob2Jq
ZWN0KTsKKyAgICBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2ViX2luc3BlY3Rv
ci0+cHJpdjsKKworICAgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9JTlNQRUNU
T1JfV0VCX1ZJRVc6CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgcHJpdi0+aW5z
cGVjdG9yX3ZpZXcpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09C
SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRf
d2ViX3ZpZXcoV2ViS2l0V2ViSW5zcGVjdG9yICp3ZWJfaW5zcGVjdG9yLCBXZWJLaXRXZWJWaWV3
ICp3ZWJfdmlldykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfSU5TUEVD
VE9SKHdlYl9pbnNwZWN0b3IpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJfdmlldykpOworCisgICAgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSogcHJpdiA9
IHdlYl9pbnNwZWN0b3ItPnByaXY7CisKKyAgICBpZiAocHJpdi0+aW5zcGVjdG9yX3ZpZXcpCisg
ICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmluc3BlY3Rvcl92aWV3KTsKKyAgICAKKyAgICBn
X29iamVjdF9yZWYod2ViX3ZpZXcpOworICAgIHByaXYtPmluc3BlY3Rvcl92aWV3ID0gd2ViX3Zp
ZXc7Cit9CisKK1dlYktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF93ZWJfdmll
dyhXZWJLaXRXZWJJbnNwZWN0b3IgKndlYl9pbnNwZWN0b3IpCit7CisgICAgV2ViS2l0V2ViSW5z
cGVjdG9yUHJpdmF0ZSogcHJpdiA9IHdlYl9pbnNwZWN0b3ItPnByaXY7CisKKyAgICByZXR1cm4g
cHJpdi0+aW5zcGVjdG9yX3ZpZXc7Cit9CisKK3ZvaWQKK3dlYmtpdF93ZWJfaW5zcGVjdG9yX3Nl
dF9pbnNwZWN0b3JfY2xpZW50KFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3RvciwgV2Vi
S2l0OjpJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKK3sKKyAgICBXZWJLaXRXZWJJ
bnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2ViX2luc3BlY3Rvci0+cHJpdjsKKworICAgIHByaXYt
Pmluc3BlY3RvckNsaWVudCA9IGluc3BlY3RvckNsaWVudDsKK30KKworfQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmggYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJpbnNwZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kYzk4YmYzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
aW5zcGVjdG9yLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBH
dXN0YXZvIE5vcm9uaGEgU2lsdmEKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX1dFQktJVF9XRUJfSU5TUEVDVE9SX0hfXwor
I2RlZmluZSBfX1dFQktJVF9XRUJfSU5TUEVDVE9SX0hfXworCisjaW5jbHVkZSA8Z2xpYi1vYmpl
Y3QuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5fREVD
TFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SICAgICAgICAgICAgKHdlYmtp
dF93ZWJfaW5zcGVjdG9yX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfSU5TUEVDVE9S
KG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJ
VF9UWVBFX1dFQl9JTlNQRUNUT1IsIFdlYktpdFdlYkluc3BlY3RvcikpCisjZGVmaW5lIFdFQktJ
VF9XRUJfSU5TUEVDVE9SX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1Qo
KGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsIFdlYktpdFdlYkluc3BlY3RvckNs
YXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9JTlNQRUNUT1Iob2JqKSAgICAgICAgIChHX1RZ
UEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RPUikp
CisjZGVmaW5lIFdFQktJVF9JU19XRUJfSU5TUEVDVE9SX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NI
RUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IpKQorI2Rl
ZmluZSBXRUJLSVRfV0VCX0lOU1BFQ1RPUl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5D
RV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLCBXZWJLaXRXZWJJ
bnNwZWN0b3JDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2
YXRlIFdlYktpdFdlYkluc3BlY3RvclByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViSW5zcGVj
dG9yIHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKworICAgIFdlYktpdFdlYkluc3Bl
Y3RvclByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYkluc3BlY3RvckNsYXNz
IHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICogKCogaW5zcGVjdF93ZWJfdmlldykgICAgICAgIChXZWJLaXRXZWJJbnNwZWN0
b3IqIHdlYl9pbnNwZWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CisKKyAgICBn
Ym9vbGVhbiAgICAgICAgICAgICAgICAgICAoKiBzaG93X3dpbmRvdykgICAgICAgICAgICAgKFdl
YktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3Rvcik7CisKKyAgICBnYm9vbGVhbiAgICAgICAg
ICAgICAgICAgICAoKiBhdHRhY2hfd2luZG93KSAgICAgICAgICAgKFdlYktpdFdlYkluc3BlY3Rv
ciogd2ViX2luc3BlY3Rvcik7CisKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAoKiBk
ZXR0YWNoX3dpbmRvdykgICAgICAgICAgKFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3Rv
cik7CisKKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAoKiBjbG9zZV93aW5kb3cpICAg
ICAgICAgICAgKFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3Rvcik7CisKKyAgICBnYm9v
bGVhbiAgICAgICAgICAgICAgICAgICAoKiB1cmlfY2hhbmdlZCkgICAgICAgICAgICAgKFdlYktp
dFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBuZXdfdXJpKTsK
KworICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICgqIGluc3BlY3Rvcl9kZXN0cm95ZWQp
ICAgICAoV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJfaW5zcGVjdG9yKTsKKworICAgIC8qIFBhZGRp
bmcgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEp
ICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDQpICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfaW5zcGVjdG9y
X2dldF90eXBlICh2b2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX2luc3BlY3Rv
cl9zZXRfd2ViX3ZpZXcoV2ViS2l0V2ViSW5zcGVjdG9yICp3ZWJfaW5zcGVjdG9yLCBXZWJLaXRX
ZWJWaWV3ICp3ZWJfdmlldyk7CisKK1dFQktJVF9BUEkgV2ViS2l0V2ViVmlldyoKK3dlYmtpdF93
ZWJfaW5zcGVjdG9yX2dldF93ZWJfdmlldyhXZWJLaXRXZWJJbnNwZWN0b3IgKndlYl9pbnNwZWN0
b3IpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19XRUJLSVRfV0VCX0lOU1BFQ1RPUl9I
X18gKi8KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNw
cCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCAwOGU0MDlk
Li5hMWFmNWQ4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5n
cy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCkBAIC00
OCw2ICs0OCw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIHsKICAgICBnYm9v
bGVhbiByZXNpemFibGVfdGV4dF9hcmVhczsKICAgICBnY2hhciogdXNlcl9zdHlsZXNoZWV0X3Vy
aTsKICAgICBnZmxvYXQgem9vbV9zdGVwOworICAgIGdib29sZWFuIGVuYWJsZV9kZXZlbG9wZXJf
ZXh0cmFzOwogfTsKIAogI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTX0dFVF9QUklWQVRFKG9i
aikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1NF
VFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKQpAQCAtNzMsNyArNzQsOCBAQCBlbnVt
IHsKICAgICBQUk9QX0VOQUJMRV9QTFVHSU5TLAogICAgIFBST1BfUkVTSVpBQkxFX1RFWFRfQVJF
QVMsCiAgICAgUFJPUF9VU0VSX1NUWUxFU0hFRVRfVVJJLAotICAgIFBST1BfWk9PTV9TVEVQCisg
ICAgUFJPUF9aT09NX1NURVAsCisgICAgUFJPUF9FTkFCTEVfREVWRUxPUEVSX0VYVFJBUwogfTsK
IAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19maW5hbGl6ZShHT2JqZWN0KiBvYmpl
Y3QpOwpAQCAtMjY4LDYgKzI3MCwyMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdz
X2NsYXNzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjBmLCBHX01BWEZMT0FULCAwLjFmLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKIAorICAgIC8qKgorICAgICogV2Vi
S2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWRldmVsb3Blci1leHRyYXM6CisgICAgKgorICAgICogV2hl
dGhlciBkZXZlbG9wZXIgZXh0ZW5zaW9ucyBzaG91bGQgYmUgZW5hYmxlZC4KKyAgICAqCisgICAg
KiBTaW5jZTogMS4wLjIKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfRU5BQkxFX0RFVkVMT1BFUl9FWFRSQVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJlbmFibGUtZGV2ZWxvcGVyLWV4dHJhcyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRW5hYmxlIERldmVsb3BlciBFeHRyYXMiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkVuYWJsZXMgc3BlY2lhbCBleHRlbnNpb25zIHRoYXQg
aGVscCBkZXZlbG9wZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZB
TFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKwogICAg
IGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYlNldHRpbmdz
UHJpdmF0ZSkpOwogfQogCkBAIC0zNjQsNiArMzgyLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl9zZXR0aW5nc19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBj
b24KICAgICBjYXNlIFBST1BfWk9PTV9TVEVQOgogICAgICAgICBwcml2LT56b29tX3N0ZXAgPSBn
X3ZhbHVlX2dldF9mbG9hdCh2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9F
TkFCTEVfREVWRUxPUEVSX0VYVFJBUzoKKyAgICAgICAgcHJpdi0+ZW5hYmxlX2RldmVsb3Blcl9l
eHRyYXMgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVj
dCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTQzMyw2ICs0NTQsOSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BfaWQsIEdWYQogICAgIGNhc2UgUFJPUF9aT09NX1NURVA6CiAgICAgICAg
IGdfdmFsdWVfc2V0X2Zsb2F0KHZhbHVlLCBwcml2LT56b29tX3N0ZXApOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0RFVkVMT1BFUl9FWFRSQVM6CisgICAgICAgIGdfdmFs
dWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmVuYWJsZV9kZXZlbG9wZXJfZXh0cmFzKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAg
LTQ4Myw2ICs1MDcsNyBAQCBXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dlYl9zZXR0aW5nc19j
b3B5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJfc2V0dGluZ3MpCiAgICAgICAgICAgICAgICAgICJy
ZXNpemFibGUtdGV4dC1hcmVhcyIsIHByaXYtPnJlc2l6YWJsZV90ZXh0X2FyZWFzLAogICAgICAg
ICAgICAgICAgICAidXNlci1zdHlsZXNoZWV0LXVyaSIsIHByaXYtPnVzZXJfc3R5bGVzaGVldF91
cmksCiAgICAgICAgICAgICAgICAgICJ6b29tLXN0ZXAiLCBwcml2LT56b29tX3N0ZXAsCisgICAg
ICAgICAgICAgICAgICJlbmFibGUtZGV2ZWxvcGVyLWV4dHJhcyIsIHByaXYtPmVuYWJsZV9kZXZl
bG9wZXJfZXh0cmFzLAogICAgICAgICAgICAgICAgICBOVUxMKSk7CiAKICAgICByZXR1cm4gY29w
eTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggNmE3ZWExZi4uMTVjYjJkOCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAid2Via2l0LW1hcnNoYWwuaCIKICNpbmNs
dWRlICJ3ZWJraXRwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCiAj
aW5jbHVkZSAid2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmgiCiAjaW5jbHVkZSAid2Via2l0d2Vi
aGlzdG9yeWl0ZW0uaCIKIApAQCAtOTksNiArMTAwLDcgQEAgZW51bSB7CiAgICAgUFJPUF9QQVNU
RV9UQVJHRVRfTElTVCwKICAgICBQUk9QX0VESVRBQkxFLAogICAgIFBST1BfU0VUVElOR1MsCisg
ICAgUFJPUF9JTlNQRUNUT1IsCiAgICAgUFJPUF9UUkFOU1BBUkVOVCwKICAgICBQUk9QX1pPT01f
TEVWRUwsCiAgICAgUFJPUF9GVUxMX0NPTlRFTlRfWk9PTQpAQCAtMjM0LDYgKzIzNiw5IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wX2lkLCBHVmFsdWUqCiAgICAgY2FzZSBQUk9QX1NFVFRJTkdTOgogICAgICAgICBn
X3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2Vi
VmlldykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSU5TUEVDVE9SOgorICAgICAg
ICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVjdG9y
KHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RSQU5TUEFSRU5UOgog
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Ry
YW5zcGFyZW50KHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CkBAIC03MjEsNiArNzI2LDcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAg
ICAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+dmVydGljYWxBZGp1c3RtZW50KTsKICAgICBnX29i
amVjdF91bnJlZihwcml2LT5iYWNrRm9yd2FyZExpc3QpOwogICAgIGdfb2JqZWN0X3VucmVmKHBy
aXYtPndlYlNldHRpbmdzKTsKKyAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJJbnNwZWN0b3Ip
OwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPm1haW5GcmFtZSk7CiAgICAgZ19vYmplY3RfdW5y
ZWYocHJpdi0+aW1Db250ZXh0KTsKICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+Y29w
eV90YXJnZXRfbGlzdCk7CkBAIC0xMjA2LDYgKzEyMTIsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdF
QktJVF9UWVBFX1dFQl9TRVRUSU5HUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwogCisgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9JTlNQRUNU
T1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2Jq
ZWN0KCJpbnNwZWN0b3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiSW5zcGVjdG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBhc3NvY2lhdGVkIFdlYktpdFdlYklu
c3BlY3RvciBpbnN0YW5jZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEQUJMRSkpOworCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmpl
Y3RDbGFzcywgUFJPUF9FRElUQUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlZGl0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWRpdGFibGUiLApAQCAtMTI5
Miw3ICsxMzA1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5n
cyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGNvcmUo
d2ViVmlldyktPnNldHRpbmdzKCk7CiAKICAgICBnY2hhciogZGVmYXVsdEVuY29kaW5nLCAqY3Vy
c2l2ZUZvbnRGYW1pbHksICpkZWZhdWx0Rm9udEZhbWlseSwgKmZhbnRhc3lGb250RmFtaWx5LCAq
bW9ub3NwYWNlRm9udEZhbWlseSwgKnNhbnNTZXJpZkZvbnRGYW1pbHksICpzZXJpZkZvbnRGYW1p
bHksICp1c2VyU3R5bGVzaGVldFVyaTsKLSAgICBnYm9vbGVhbiBhdXRvTG9hZEltYWdlcywgYXV0
b1Nocmlua0ltYWdlcywgcHJpbnRCYWNrZ3JvdW5kcywgZW5hYmxlU2NyaXB0cywgZW5hYmxlUGx1
Z2lucywgcmVzaXphYmxlVGV4dEFyZWFzOworICAgIGdib29sZWFuIGF1dG9Mb2FkSW1hZ2VzLCBh
dXRvU2hyaW5rSW1hZ2VzLCBwcmludEJhY2tncm91bmRzLCBlbmFibGVTY3JpcHRzLCBlbmFibGVQ
bHVnaW5zLCBlbmFibGVEZXZlbG9wZXJFeHRyYXMsIHJlc2l6YWJsZVRleHRBcmVhczsKIAogICAg
IGdfb2JqZWN0X2dldChHX09CSkVDVCh3ZWJTZXR0aW5ncyksCiAgICAgICAgICAgICAgICAgICJk
ZWZhdWx0LWVuY29kaW5nIiwgJmRlZmF1bHRFbmNvZGluZywKQEAgLTEzMDksNiArMTMyMiw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKICAgICAgICAgICAgICAgICAgImVuYWJsZS1wbHVnaW5zIiwgJmVuYWJsZVBs
dWdpbnMsCiAgICAgICAgICAgICAgICAgICJyZXNpemFibGUtdGV4dC1hcmVhcyIsICZyZXNpemFi
bGVUZXh0QXJlYXMsCiAgICAgICAgICAgICAgICAgICJ1c2VyLXN0eWxlc2hlZXQtdXJpIiwgJnVz
ZXJTdHlsZXNoZWV0VXJpLAorICAgICAgICAgICAgICAgICAiZW5hYmxlLWRldmVsb3Blci1leHRy
YXMiLCAmZW5hYmxlRGV2ZWxvcGVyRXh0cmFzLAogICAgICAgICAgICAgICAgICBOVUxMKTsKIAog
ICAgIHNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShkZWZhdWx0RW5jb2Rpbmcp
OwpAQCAtMTMyNSw2ICsxMzM5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0
ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHNldHRpbmdzLT5zZXRQbHVn
aW5zRW5hYmxlZChlbmFibGVQbHVnaW5zKTsKICAgICBzZXR0aW5ncy0+c2V0VGV4dEFyZWFzQXJl
UmVzaXphYmxlKHJlc2l6YWJsZVRleHRBcmVhcyk7CiAgICAgc2V0dGluZ3MtPnNldFVzZXJTdHls
ZVNoZWV0TG9jYXRpb24oS1VSTCh1c2VyU3R5bGVzaGVldFVyaSkpOworICAgIHNldHRpbmdzLT5z
ZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGVuYWJsZURldmVsb3BlckV4dHJhcyk7CiAKICAgICBn
X2ZyZWUoZGVmYXVsdEVuY29kaW5nKTsKICAgICBnX2ZyZWUoY3Vyc2l2ZUZvbnRGYW1pbHkpOwpA
QCAtMTM5NCw3ICsxNDA5LDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgd2ViVmlldy0+cHJpdiA9IHByaXY7CiAKICAgICBw
cml2LT5pbUNvbnRleHQgPSBndGtfaW1fbXVsdGljb250ZXh0X25ldygpOwotICAgIHByaXYtPmNv
cmVQYWdlID0gbmV3IFBhZ2UobmV3IFdlYktpdDo6Q2hyb21lQ2xpZW50KHdlYlZpZXcpLCBuZXcg
V2ViS2l0OjpDb250ZXh0TWVudUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RWRpdG9yQ2xp
ZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpEcmFnQ2xpZW50LCBuZXcgV2ViS2l0OjpJbnNwZWN0
b3JDbGllbnQpOworICAgIAorICAgIFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JD
bGllbnQgPSBuZXcgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQod2ViVmlldyk7CisgICAgcHJpdi0+
Y29yZVBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViS2l0OjpDaHJvbWVDbGllbnQod2ViVmlldyksIG5l
dyBXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpFZGl0b3JD
bGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkRyYWdDbGllbnQsIGluc3BlY3RvckNsaWVudCk7
CisKKyAgICAvKiB3ZSBhbHNvIGFkZCBhIHNpbXBsZSB3cmFwcGVyIGNsYXNzIHRvIHByb3ZpZGUg
dGhlIHB1YmxpYworICAgICAgIGludGVyZmFjZSBmb3IgdGhlIFdlYiBJbnNwZWN0b3IgKi8KKyAg
ICBwcml2LT53ZWJJbnNwZWN0b3IgPSBXRUJLSVRfV0VCX0lOU1BFQ1RPUihnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RPUiwgTlVMTCkpOworICAgIHdlYmtpdF93ZWJfaW5zcGVj
dG9yX3NldF9pbnNwZWN0b3JfY2xpZW50KHByaXYtPndlYkluc3BlY3RvciwgaW5zcGVjdG9yQ2xp
ZW50KTsKIAogICAgIHByaXYtPmhvcml6b250YWxBZGp1c3RtZW50ID0gR1RLX0FESlVTVE1FTlQo
Z3RrX2FkanVzdG1lbnRfbmV3KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApKTsKICAgICBw
cml2LT52ZXJ0aWNhbEFkanVzdG1lbnQgPSBHVEtfQURKVVNUTUVOVChndGtfYWRqdXN0bWVudF9u
ZXcoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkpOwpAQCAtMTQ2OSw2ICsxNDkxLDE0IEBA
IFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCiAgICAgcmV0dXJuIHByaXYtPndlYlNldHRpbmdzOwogfQogCitXZWJL
aXRXZWJJbnNwZWN0b3IqIHdlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVjdG9yKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpLCBOVUxMKTsKKworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0g
d2ViVmlldy0+cHJpdjsKKyAgICByZXR1cm4gcHJpdi0+d2ViSW5zcGVjdG9yOworfQorCiAvKioK
ICAqIHdlYmtpdF93ZWJfdmlld19zZXRfbWFpbnRhaW5zX2JhY2tfZm9yd2FyZF9saXN0OgogICog
QHdlYlZpZXc6IGEgI1dlYktpdFdlYlZpZXcKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRl
eCBlYmQxYWExLi43MzcxOTU5IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC0yNDcs
NiArMjQ3LDkgQEAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyAgICAgICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKIFdFQktJVF9BUEkgV2ViS2l0V2Vi
U2V0dGluZ3MgKgogd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyAgICAgICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgV2ViS2l0
V2ViSW5zcGVjdG9yICoKK3dlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVjdG9yICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOworCiBXRUJLSVRfQVBJIGdi
b29sZWFuCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RyYW5zcGFyZW50ICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22283</attachid>
            <date>2008-07-15 11:41:09 -0700</date>
            <delta_ts>2008-07-18 07:42:13 -0700</delta_ts>
            <desc>updated patch for GtkLauncher, just for testing</desc>
            <filename>launcher-inspector.diff</filename>
            <type>text/plain</type>
            <size>4659</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYyBiL1dlYktpdFRvb2xz
L0d0a0xhdW5jaGVyL21haW4uYwppbmRleCA4ZWQyNjkwLi5mODcyNWM1IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMKKysrIGIvV2ViS2l0VG9vbHMvR3RrTGF1bmNo
ZXIvbWFpbi5jCkBAIC0zNCw2ICszNCw3IEBAIHN0YXRpYyBXZWJLaXRXZWJWaWV3KiB3ZWJfdmll
dzsKIHN0YXRpYyBnY2hhciogbWFpbl90aXRsZTsKIHN0YXRpYyBnaW50IGxvYWRfcHJvZ3Jlc3M7
CiBzdGF0aWMgZ3VpbnQgc3RhdHVzX2NvbnRleHRfaWQ7CitzdGF0aWMgR3RrV2lkZ2V0KiBpbnNw
ZWN0b3Jfd2luZG93OwogCiBzdGF0aWMgdm9pZAogYWN0aXZhdGVfdXJpX2VudHJ5X2NiIChHdGtX
aWRnZXQqIGVudHJ5LCBncG9pbnRlciBkYXRhKQpAQCAtODksNiArOTAsODEgQEAgbG9hZF9jb21t
aXRfY2IgKFdlYktpdFdlYlZpZXcqIHBhZ2UsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgZ3BvaW50
ZXIgZGF0YSkKIH0KIAogc3RhdGljIHZvaWQKK2hpZGVfd2luZG93X2NiKEd0a1dpZGdldCAqd2lk
Z2V0LCBncG9pbnRlciBkYXRhKQoreworICAgIGd0a193aWRnZXRfaGlkZSh3aWRnZXQpOworfQor
CitzdGF0aWMgV2ViS2l0V2ViVmlldyoKK2NyZWF0ZV9pbnNwZWN0b3JfY2IgKFdlYktpdFdlYklu
c3BlY3Rvciogd2ViX2luc3BlY3RvciwgV2ViS2l0V2ViVmlldyogcGFnZSwgZ3BvaW50ZXIgZGF0
YSkKK3sKKyAgICBHdGtXaWRnZXQqIHNjcm9sbGVkX3dpbmRvdzsKKyAgICBHdGtXaWRnZXQqIG5l
d193ZWJfdmlldzsKKworICAgIGluc3BlY3Rvcl93aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtf
V0lORE9XX1RPUExFVkVMKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKGluc3BlY3Rv
cl93aW5kb3cpLCAiZGVsZXRlLWV2ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJB
Q0soaGlkZV93aW5kb3dfY2IpLCBOVUxMKTsKKworICAgIGd0a193aW5kb3dfc2V0X3RpdGxlKEdU
S19XSU5ET1coaW5zcGVjdG9yX3dpbmRvdyksICJJbnNwZWN0b3IiKTsKKyAgICBndGtfd2luZG93
X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyhpbnNwZWN0b3Jfd2luZG93KSwgNDAwLCAzMDAp
OworICAgIGd0a193aWRnZXRfc2hvdyhpbnNwZWN0b3Jfd2luZG93KTsKKworICAgIHNjcm9sbGVk
X3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpOworICAgIGd0a19z
Y3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dp
bmRvdyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19QT0xJQ1lfQVVU
T01BVElDLCBHVEtfUE9MSUNZX0FVVE9NQVRJQyk7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RL
X0NPTlRBSU5FUihpbnNwZWN0b3Jfd2luZG93KSwgc2Nyb2xsZWRfd2luZG93KTsKKyAgICBndGtf
d2lkZ2V0X3Nob3coc2Nyb2xsZWRfd2luZG93KTsKKworICAgIG5ld193ZWJfdmlldyA9IHdlYmtp
dF93ZWJfdmlld19uZXcoKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHNj
cm9sbGVkX3dpbmRvdyksIG5ld193ZWJfdmlldyk7CisKKyAgICByZXR1cm4gV0VCS0lUX1dFQl9W
SUVXKG5ld193ZWJfdmlldyk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgoraW5zcGVjdG9yX3Nob3df
d2luZG93X2NiIChXZWJLaXRXZWJJbnNwZWN0b3IqIGluc3BlY3RvcikKK3sKKyAgICBndGtfd2lk
Z2V0X3Nob3coaW5zcGVjdG9yX3dpbmRvdyk7CisgICAgZ19tZXNzYWdlKCJzaG93X3dpbmRvdzog
JXAiLCBpbnNwZWN0b3IpOworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4K
K2luc3BlY3Rvcl9jbG9zZV93aW5kb3dfY2IgKFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9y
KQoreworICAgIGdfbWVzc2FnZSgiY2xvc2Vfd2luZG93Iik7CisgICAgcmV0dXJuIFRSVUU7Cit9
CisKK3N0YXRpYyBnYm9vbGVhbgoraW5zcGVjdG9yX2F0dGFjaF93aW5kb3dfY2IgKFdlYktpdFdl
Ykluc3BlY3RvciogaW5zcGVjdG9yKQoreworICAgIGdfbWVzc2FnZSgiYXR0YWNoX3dpbmRvdyIp
OworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuCitpbnNwZWN0b3JfZGV0
dGFjaF93aW5kb3dfY2IgKFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9yKQoreworICAgIGdf
bWVzc2FnZSgiZGV0dGFjaF93aW5kb3ciKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRp
YyBnYm9vbGVhbgoraW5zcGVjdG9yX3VyaV9jaGFuZ2VkX2NiIChXZWJLaXRXZWJJbnNwZWN0b3Iq
IGluc3BlY3RvciwgZ2NoYXIgKm5ld191cmkpCit7CisgICAgZ19tZXNzYWdlKCJ1cmlfY2hhbmdl
ZDogJXMiLCBuZXdfdXJpKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVh
bgoraW5zcGVjdG9yX2luc3BlY3Rvcl9kZXN0cm95ZWRfY2IgKFdlYktpdFdlYkluc3BlY3Rvciog
aW5zcGVjdG9yKQoreworICAgIGdfbWVzc2FnZSgiaW5zcGVjdG9yX2Rlc3Ryb3llZCIpOworICAg
IHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQKIGRlc3Ryb3lfY2IgKEd0a1dpZGdldCog
d2lkZ2V0LCBncG9pbnRlciBkYXRhKQogewogICAgIGd0a19tYWluX3F1aXQgKCk7CkBAIC0xMDks
MTcgKzE4NSwzMiBAQCBnb19mb3J3YXJkX2NiIChHdGtXaWRnZXQqIHdpZGdldCwgZ3BvaW50ZXIg
ZGF0YSkKIHN0YXRpYyBHdGtXaWRnZXQqCiBjcmVhdGVfYnJvd3NlciAoKQogeworICAgIFdlYktp
dFdlYlNldHRpbmdzICpzZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3KCk7CisgICAg
V2ViS2l0V2ViSW5zcGVjdG9yICppbnNwZWN0b3I7CisKICAgICBHdGtXaWRnZXQqIHNjcm9sbGVk
X3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3IChOVUxMLCBOVUxMKTsKICAgICBndGtf
c2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3kgKEdUS19TQ1JPTExFRF9XSU5ET1cgKHNjcm9sbGVk
X3dpbmRvdyksIEdUS19QT0xJQ1lfQVVUT01BVElDLCBHVEtfUE9MSUNZX0FVVE9NQVRJQyk7CiAK
ICAgICB3ZWJfdmlldyA9IFdFQktJVF9XRUJfVklFVyAod2Via2l0X3dlYl92aWV3X25ldyAoKSk7
CiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIgKHNjcm9sbGVkX3dpbmRvdyks
IEdUS19XSURHRVQgKHdlYl92aWV3KSk7CiAKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0
dGluZ3MpLCAiZW5hYmxlLWRldmVsb3Blci1leHRyYXMiLCBUUlVFLCBOVUxMKTsKKyAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJfdmlldyksIHNldHRp
bmdzKTsKKwogICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUICh3ZWJfdmlldyksICJ0aXRs
ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyAodGl0bGVfY2hhbmdlX2NiKSwgd2ViX3ZpZXcpOwogICAg
IGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUICh3ZWJfdmlldyksICJsb2FkLXByb2dyZXNzLWNo
YW5nZWQiLCBHX0NBTExCQUNLIChwcm9ncmVzc19jaGFuZ2VfY2IpLCB3ZWJfdmlldyk7CiAgICAg
Z19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKHdlYl92aWV3KSwgImxvYWQtY29tbWl0dGVkIiwg
R19DQUxMQkFDSyAobG9hZF9jb21taXRfY2IpLCB3ZWJfdmlldyk7CiAgICAgZ19zaWduYWxfY29u
bmVjdCAoR19PQkpFQ1QgKHdlYl92aWV3KSwgImhvdmVyaW5nLW92ZXItbGluayIsIEdfQ0FMTEJB
Q0sgKGxpbmtfaG92ZXJfY2IpLCB3ZWJfdmlldyk7CiAKKyAgICBpbnNwZWN0b3IgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2luc3BlY3Rvcih3ZWJfdmlldyk7CisgICAgZ19zaWduYWxfY29ubmVjdCAo
R19PQkpFQ1QgKGluc3BlY3RvciksICJpbnNwZWN0LXdlYi12aWV3IiwgR19DQUxMQkFDSyAoY3Jl
YXRlX2luc3BlY3Rvcl9jYiksIE5VTEwpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNU
IChpbnNwZWN0b3IpLCAic2hvd193aW5kb3ciLCBHX0NBTExCQUNLIChpbnNwZWN0b3Jfc2hvd193
aW5kb3dfY2IpLCBOVUxMKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoaW5zcGVj
dG9yKSwgImNsb3NlX3dpbmRvdyIsIEdfQ0FMTEJBQ0sgKGluc3BlY3Rvcl9jbG9zZV93aW5kb3df
Y2IpLCBOVUxMKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoaW5zcGVjdG9yKSwg
ImF0dGFjaF93aW5kb3ciLCBHX0NBTExCQUNLIChpbnNwZWN0b3JfYXR0YWNoX3dpbmRvd19jYiks
IE5VTEwpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChpbnNwZWN0b3IpLCAiZGV0
dGFjaF93aW5kb3ciLCBHX0NBTExCQUNLIChpbnNwZWN0b3JfZGV0dGFjaF93aW5kb3dfY2IpLCBO
VUxMKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoaW5zcGVjdG9yKSwgInVyaV9j
aGFuZ2VkIiwgR19DQUxMQkFDSyAoaW5zcGVjdG9yX3VyaV9jaGFuZ2VkX2NiKSwgTlVMTCk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGluc3BlY3RvciksICJpbnNwZWN0b3JfZGVz
dHJveWVkIiwgR19DQUxMQkFDSyAoaW5zcGVjdG9yX2luc3BlY3Rvcl9kZXN0cm95ZWRfY2IpLCBO
VUxMKTsKKwogICAgIHJldHVybiBzY3JvbGxlZF93aW5kb3c7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22362</attachid>
            <date>2008-07-18 07:41:20 -0700</date>
            <delta_ts>2008-07-18 08:38:26 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>inspector.diff</filename>
            <type>text/plain</type>
            <size>44157</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5NDA4ZGViLi4zYWU4NDQ2
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMDgtMDctMTUgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYWxsIHRo
ZSBmaWxlcyB0aGF0IG5lZWQgdG8gYmUgaW5zdGFsbGVkIGZvciB0aGUgSW5zcGVjdG9yIHRvCisg
ICAgICAgIHdvcmsuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAwOC0wNi0xOCAg
TWFyY28gQmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbHAgVG9rZXIuCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBi
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGE2YWUyOTkuLmMxODA2NzAgMTAwNjQ0Ci0tLSBhL0dOVW1h
a2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0zMTYsNiArMzE2LDcgQEAgd2Via2l0
Z3RrX2hfYXBpICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxp
c3QuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaCBcCiAJV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2ViaW5zcGVjdG9yLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdz
LmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAogCkBAIC0zNDIsNiArMzQz
LDcgQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YmJhY2tmb3J3YXJkbGlzdC5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1l
LmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwIFwKKwlX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwIFwKIAlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KaW5kZXggZjAwMWRhNy4uYzE1ZjhhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yMjU2LDYgKzIyNTYs
MTUwIEBAIERlcml2ZWRTb3VyY2VzL0pTJS5oOiBEZXJpdmVkU291cmNlcy9KUyUuY3BwOwogRGVy
aXZlZFNvdXJjZXMvSlMlLmNwcDogJS5pZGwgJChTQ1JJUFRTX0JJTkRJTkdTKSAkKFdlYkNvcmUp
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCiAJJChQRVJMKSAtSSQoV2ViQ29y
ZSkvYmluZGluZ3Mvc2NyaXB0cyAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUt
YmluZGluZ3MucGwgLS1pbmNsdWRlICQoV2ViQ29yZSkvZG9tIC0taW5jbHVkZSAkKFdlYkNvcmUp
L2h0bWwgLS1pbmNsdWRlICQoV2ViQ29yZSkvY3NzIC0taW5jbHVkZSAkKFdlYkNvcmUpL3BhZ2Ug
LS1pbmNsdWRlICQoV2ViQ29yZSkveG1sIC0taW5jbHVkZSAkKFdlYkNvcmUpL3N2ZyAtLW91dHB1
dGRpciAkKEdFTlNPVVJDRVMpIC0tZGVmaW5lcyAiJChGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQ
VCkiIC0tZ2VuZXJhdG9yIEpTICQ8CiAKKyMgSW5zdGFsbGluZyB3ZWIgaW5zcGVjdG9yIGZpbGVz
Cit3ZWJjb3JlX2NwcGZsYWdzICs9IC1EREFUQV9ESVI9XCIke2RhdGFkaXJ9XCIKKword2ViaW5z
cGVjdG9yZGlyID0gJHtkYXRhZGlyfS93ZWJraXQtMS4wL3dlYmluc3BlY3RvcgorZGlzdF93ZWJp
bnNwZWN0b3JfREFUQSA9IFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9CcmVh
a3BvaW50LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9CcmVha3BvaW50
c1NpZGViYXJQYW5lLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9DYWxs
U3RhY2tTaWRlYmFyUGFuZS5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3Iv
Q29uc29sZS5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvRGF0YWJhc2Uu
anMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0RhdGFiYXNlUXVlcnlWaWV3
LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9EYXRhYmFzZXNQYW5lbC5q
cyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvRGF0YWJhc2VUYWJsZVZpZXcu
anMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0RhdGFHcmlkLmpzIFwKKyAg
ICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9FbGVtZW50c1BhbmVsLmpzIFwKKyAgICAg
ICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9Gb250Vmlldy5qcyBcCisgICAgICAgICQoV2Vi
Q29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VWaWV3LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9w
YWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuY3NzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2lu
c3BlY3Rvci9pbnNwZWN0b3IuaHRtbCBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0
b3IvaW5zcGVjdG9yLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9NZXRy
aWNzU2lkZWJhclBhbmUuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL09i
amVjdC5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvT2JqZWN0UHJvcGVy
dGllc1NlY3Rpb24uanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1BhbmVs
LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9QbGFjYXJkLmpzIFwKKyAg
ICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9Qcm9maWxlc1BhbmVsLmpzIFwKKyAgICAg
ICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9Qcm9maWxlVmlldy5qcyBcCisgICAgICAgICQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvUHJvcGVydGllc1NlY3Rpb24uanMgXAorICAgICAgICAk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1Byb3BlcnRpZXNTaWRlYmFyUGFuZS5qcyBcCisgICAg
ICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2VDYXRlZ29yeS5qcyBcCisgICAg
ICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2UuanMgXAorICAgICAgICAkKFdl
YkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1Jlc291cmNlc1BhbmVsLmpzIFwKKyAgICAgICAgJChXZWJD
b3JlKS9wYWdlL2luc3BlY3Rvci9SZXNvdXJjZVZpZXcuanMgXAorICAgICAgICAkKFdlYkNvcmUp
L3BhZ2UvaW5zcGVjdG9yL1Njb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcyBcCisgICAgICAgICQoV2Vi
Q29yZSkvcGFnZS9pbnNwZWN0b3IvU2NyaXB0LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9TY3JpcHRzUGFuZWwuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5z
cGVjdG9yL1NjcmlwdFZpZXcuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9y
L1NpZGViYXJQYW5lLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9TaWRl
YmFyVHJlZUVsZW1lbnQuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1Nv
dXJjZUZyYW1lLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9Tb3VyY2VW
aWV3LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9TdHlsZXNTaWRlYmFy
UGFuZS5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvVGV4dFByb21wdC5q
cyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvdHJlZW91dGxpbmUuanMgXAor
ICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL3V0aWxpdGllcy5qcyBcCisgICAgICAg
ICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvVmlldy5qcworCit3ZWJpbnNwZWN0b3JpbWFnZXNk
aXIgPSAke2RhdGFkaXJ9L3dlYmtpdC0xLjAvd2ViaW5zcGVjdG9yL0ltYWdlcworZGlzdF93ZWJp
bnNwZWN0b3JpbWFnZXNfREFUQSA9IFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdl
cy9iYWNrLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvY2hlY2tlci5w
bmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2NsZWFyQ29uc29sZUJ1dHRv
bnMucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9jb25zb2xlQnV0dG9u
cy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2RhdGFiYXNlLnBuZyBc
CisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGF0YWJhc2VzSWNvbi5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2RhdGFiYXNlVGFibGUucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kZWJ1Z2dlckNvbnRpbnVlLnBuZyBcCisJ
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGVidWdnZXJQYXVzZS5wbmcgXAorCSQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2RlYnVnZ2VyU3RlcEludG8ucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kZWJ1Z2dlclN0ZXBPdXQucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kZWJ1Z2dlclN0ZXBPdmVyLnBuZyBcCisJ
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGVidWdnaW5nQnV0dG9ucy5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2Rpc2Nsb3N1cmVUcmlhbmdsZVNtYWxs
RG93bkJsYWNrLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGlzY2xv
c3VyZVRyaWFuZ2xlU21hbGxEb3duLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvZGlzY2xvc3VyZVRyaWFuZ2xlU21hbGxEb3duV2hpdGUucG5nIFwKKwkkKFdlYkNvcmUp
L3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kaXNjbG9zdXJlVHJpYW5nbGVTbWFsbFJpZ2h0QmxhY2su
cG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kaXNjbG9zdXJlVHJpYW5n
bGVTbWFsbFJpZ2h0RG93bkJsYWNrLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvZGlzY2xvc3VyZVRyaWFuZ2xlU21hbGxSaWdodERvd24ucG5nIFwKKwkkKFdlYkNvcmUp
L3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kaXNjbG9zdXJlVHJpYW5nbGVTbWFsbFJpZ2h0RG93bldo
aXRlLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGlzY2xvc3VyZVRy
aWFuZ2xlU21hbGxSaWdodC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2Vz
L2Rpc2Nsb3N1cmVUcmlhbmdsZVNtYWxsUmlnaHRXaGl0ZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFn
ZS9pbnNwZWN0b3IvSW1hZ2VzL2RvY2tCdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2lu
c3BlY3Rvci9JbWFnZXMvZWxlbWVudHNJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3Bl
Y3Rvci9JbWFnZXMvZXJyb3JJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvZXJyb3JNZWRpdW1JY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvZXhjbHVkZUJ1dHRvbnMucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0lt
YWdlcy9mb2N1c0J1dHRvbnMucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdl
cy9mb3J3YXJkLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZ2xvc3N5
SGVhZGVyLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZ2xvc3N5SGVh
ZGVyUHJlc3NlZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2dsb3Nz
eUhlYWRlclNlbGVjdGVkLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMv
Z2xvc3N5SGVhZGVyU2VsZWN0ZWRQcmVzc2VkLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3Bl
Y3Rvci9JbWFnZXMvZ29BcnJvdy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1h
Z2VzL2xhcmdlclJlc291cmNlc0J1dHRvbnMucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVj
dG9yL0ltYWdlcy9wYW5lQm90dG9tR3Jvd0FjdGl2ZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL3BhbmVCb3R0b21Hcm93LnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2lu
c3BlY3Rvci9JbWFnZXMvcGFuZUdyb3dIYW5kbGVMaW5lLnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvcGF1c2VPbkV4Y2VwdGlvbkJ1dHRvbnMucG5nIFwKKwkkKFdlYkNv
cmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9wZXJjZW50QnV0dG9ucy5wbmcgXAorCSQoV2ViQ29y
ZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Byb2ZpbGVHcm91cEljb24ucG5nIFwKKwkkKFdlYkNv
cmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9wcm9maWxlSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkv
cGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Byb2ZpbGVzSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFn
ZS9pbnNwZWN0b3IvSW1hZ2VzL3Byb2ZpbGVTbWFsbEljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9yZWNvcmRCdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvcmVsb2FkQnV0dG9ucy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL3Jlc291cmNlQ1NTSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL3Jlc291cmNlRG9jdW1lbnRJY29uLnBuZyBcCisJJChXZWJDb3JlKS9w
YWdlL2luc3BlY3Rvci9JbWFnZXMvcmVzb3VyY2VEb2N1bWVudEljb25TbWFsbC5wbmcgXAorCSQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Jlc291cmNlSlNJY29uLnBuZyBcCisJJChX
ZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcmVzb3VyY2VQbGFpbkljb24ucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9yZXNvdXJjZVBsYWluSWNvblNtYWxsLnBu
ZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcmVzb3VyY2VzSWNvbi5wbmcg
XAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Jlc291cmNlc1NpemVHcmFwaElj
b24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9yZXNvdXJjZXNUaW1l
R3JhcGhJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc2NyaXB0
c0ljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9zZWdtZW50RW5k
LnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc2VnbWVudEhvdmVyRW5k
LnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc2VnbWVudEhvdmVyLnBu
ZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc2VnbWVudC5wbmcgXAorCSQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NlZ21lbnRTZWxlY3RlZEVuZC5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NlZ21lbnRTZWxlY3RlZC5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NwbGl0dmlld0RpbXBsZS5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NwbGl0dmlld0RpdmlkZXJCYWNrZ3Jv
dW5kLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc3RhdHVzYmFyQmFj
a2dyb3VuZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3N0YXR1c2Jh
ckJvdHRvbUJhY2tncm91bmQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdl
cy9zdGF0dXNiYXJCdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFn
ZXMvc3RhdHVzYmFyTWVudUJ1dHRvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3Iv
SW1hZ2VzL3N0YXR1c2Jhck1lbnVCdXR0b25TZWxlY3RlZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFn
ZS9pbnNwZWN0b3IvSW1hZ2VzL3N0YXR1c2JhclJlc2l6ZXJIb3Jpem9udGFsLnBuZyBcCisJJChX
ZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc3RhdHVzYmFyUmVzaXplclZlcnRpY2FsLnBu
ZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvdGltZWxpbmVQaWxsQmx1ZS5w
bmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpbWVsaW5lUGlsbEdyYXku
cG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aW1lbGluZVBpbGxHcmVl
bi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpbWVsaW5lUGlsbE9y
YW5nZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpbWVsaW5lUGls
bFB1cnBsZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpbWVsaW5l
UGlsbFJlZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpbWVsaW5l
UGlsbFllbGxvdy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpcEJh
bGxvb25Cb3R0b20ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aXBC
YWxsb29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvdGlwSWNvbi5w
bmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpcEljb25QcmVzc2VkLnBu
ZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvdG9vbGJhckl0ZW1TZWxlY3Rl
ZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RyZWVEb3duVHJpYW5n
bGVCbGFjay5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RyZWVEb3du
VHJpYW5nbGVXaGl0ZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Ry
ZWVSaWdodFRyaWFuZ2xlQmxhY2sucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0lt
YWdlcy90cmVlUmlnaHRUcmlhbmdsZVdoaXRlLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3Bl
Y3Rvci9JbWFnZXMvdHJlZVVwVHJpYW5nbGVCbGFjay5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL3RyZWVVcFRyaWFuZ2xlV2hpdGUucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy91c2VySW5wdXRJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvdXNlcklucHV0UHJldmlvdXNJY29uLnBuZyBcCisJJChXZWJDb3Jl
KS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvd2FybmluZ0ljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy93YXJuaW5nTWVkaXVtSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkv
cGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3dhcm5pbmdzRXJyb3JzLnBuZworCiAjIENsZWFuIHJ1bGVz
IGZvciBXZWJDb3JlCiAKIENMRUFORklMRVMgKz0gXApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA4NDE0MzExLi4wNTQ3ODJhIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ0IEBACisyMDA4LTA3LTE1ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxn
bnNAZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJ
SW1wbGVtZW50ZWQgYSBuZXcgV2ViS2l0V2ViSW5zcGVjdG9yIGNsYXNzIHRvIHByb3ZpZGUgYSBH
T2JqZWN0CisJQVBJIGZvciB0aGUgV2ViIEluc3BlY3Rvci4gQWxzbyBpbXBsZW1lbnRlZCBJbnNw
ZWN0b3JDbGllbnQuCisJCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bm90aWZ5V2ViVmlld0Rlc3Ryb3llZCk6CisgICAg
ICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6SW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQpOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OndlYlZpZXdEZXN0cm95ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpJbnNw
ZWN0b3JDbGllbnQ6OnNob3dXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGll
bnQ6OmNsb3NlV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjphdHRh
Y2hXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OmRldGFjaFdpbmRv
dyk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkVVJMQ2hhbmdl
ZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdC5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXQtbWFyc2hhbC5s
aXN0OgorICAgICAgICAqIHdlYmtpdC93ZWJraXRkZWZpbmVzLmg6CisgICAgICAgICogd2Via2l0
L3dlYmtpdHByaXZhdGUuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNw
cDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZTo6d2Via2l0X2lu
c3BlY3Rfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkKToKKyAgICAgICAgKF9XZWJLaXRXZWJJbnNw
ZWN0b3JQcml2YXRlOjp3ZWJraXRfd2ViX2luc3BlY3Rvcl9jbGFzc19pbml0KToKKyAgICAgICAg
KF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlOjp3ZWJraXRfd2ViX2luc3BlY3Rvcl9pbml0KToK
KyAgICAgICAgKF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlOjp3ZWJraXRfd2ViX2luc3BlY3Rv
cl9maW5hbGl6ZSk6CisgICAgICAgIChfV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZTo6d2Via2l0
X3dlYl9pbnNwZWN0b3Jfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJJbnNwZWN0
b3JQcml2YXRlOjp3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfcHJvcGVydHkpOgorICAgICAgICAo
X1dlYktpdFdlYkluc3BlY3RvclByaXZhdGU6OndlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF93ZWJf
dmlldyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoX1dlYktpdFdl
YlNldHRpbmdzUHJpdmF0ZTo6KToKKyAgICAgICAgKF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6
OndlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlOjp3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0eSk6CisgICAgICAg
IChfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOjp3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9w
ZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOjp3ZWJraXRfd2ViX3Nl
dHRpbmdzX2NvcHkpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorCiAyMDA4LTA3LTA4ICBKYW4gTWljaGFlbCBB
bG9uem8gIDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlz
dGlhbiBEeXdhbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50R3RrLmNwcAppbmRleCBhNTRiNmEwLi5jNjE4ZWM0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCkBAIC0xLDQgKzEsNiBAQAogLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEKKyAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKICAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKQEAgLTE3LDYgKzE5LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50R3RrLmgiCiAKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ2
aWV3LmgiCisjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCisjaW5jbHVkZSAid2Via2l0
cHJpdmF0ZS5oIgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogCkBAIC0yNCwxNSArMzEsNzAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgdm9pZCBub3RpZnlXZWJWaWV3RGVzdHJv
eWVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xp
ZW50KQoreworICAgIGluc3BlY3RvckNsaWVudC0+d2ViVmlld0Rlc3Ryb3llZCgpOworfQorCitJ
bnNwZWN0b3JDbGllbnQ6Okluc3BlY3RvckNsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQor
ICAgIDogbV93ZWJWaWV3KDApCisgICAgLCBtX2luc3BlY3RlZFdlYlZpZXcod2ViVmlldykKK3t9
CisKIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogeworICAgIGlm
IChtX3dlYlZpZXcpIHsKKyAgICAgICAgZ2Jvb2xlYW4gaGFuZGxlZCA9IEZBTFNFOworICAgICAg
ICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJJbnNwZWN0b3IsICJpbnNwZWN0b3ItZGVzdHJv
eWVkIiwgJmhhbmRsZWQpOworCisgICAgICAgIC8qIHdlIGNhbiBub3cgZGlzcG9zZSBvdXIgb3du
IHJlZmVyZW5jZSAqLworICAgICAgICBnX29iamVjdF91bnJlZihtX3dlYkluc3BlY3Rvcik7Cisg
ICAgfQorCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50Ojp3ZWJW
aWV3RGVzdHJveWVkKCkKK3sKKyAgICBtX3dlYlZpZXcgPSAwOworICAgIGNvcmUobV9pbnNwZWN0
ZWRXZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5wYWdlRGVzdHJveWVkKCk7CisKKyAg
ICAvKiBjcmVhdGVQYWdlIHdpbGwgYmUgY2FsbGVkIGFnYWluLCBpZiB0aGUgdXNlciBjaG9vc2Vz
IHRvIGluc3BlY3QKKyAgICAgKiBzb21ldGhpbmcgZWxzZSwgYW5kIHRoZSBpbnNwZWN0b3Igd2ls
bCBiZSByZWZlcmVuY2VkIGFnYWluLAorICAgICAqIHRoZXJlICovCisgICAgZ19vYmplY3RfdW5y
ZWYobV93ZWJJbnNwZWN0b3IpOworfQorCiBQYWdlKiBJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZVBh
Z2UoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKG1f
d2ViVmlldykKKyAgICAgIHJldHVybiBjb3JlKG1fd2ViVmlldyk7CisKKyAgICAvKiBUaGlzIGdf
b2JqZWN0X2dldCB3aWxsIHJlZiB0aGUgaW5zcGVjdG9yLiBXZSdyZSBub3QgZG9pbmcgYW4KKyAg
ICAgICB1bnJlZiBpZiB0aGlzIG1ldGhvZCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBpbnNwZWN0b3Ig
b2JqZWN0IG11c3QKKyAgICAgICBiZSBhbGl2ZSBldmVuIGFmdGVyIHRoZSBpbnNwZWN0ZWQgV2Vi
VmlldyBpcyBkZXN0cm95ZWQgLSB0aGUKKyAgICAgICBjbG9zZS13aW5kb3cgYW5kIGluc3BlY3Rv
ci1kZXN0cm95ZWQgc2lnbmFscyBzdGlsbCBuZWVkIHRvIGJlCisgICAgICAgZW1pdHRlZC4gKi8K
KyAgICBXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvcjsKKyAgICBnX29iamVjdF9nZXQo
R19PQkpFQ1QobV9pbnNwZWN0ZWRXZWJWaWV3KSwgIndlYi1pbnNwZWN0b3IiLCAmd2ViSW5zcGVj
dG9yLCBOVUxMKTsKKyAgICBtX3dlYkluc3BlY3RvciA9IHdlYkluc3BlY3RvcjsKKworICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYkluc3BlY3RvciwgImluc3BlY3Qtd2ViLXZpZXciLCBt
X2luc3BlY3RlZFdlYlZpZXcsICZtX3dlYlZpZXcpOworCisgICAgaWYgKCFtX3dlYlZpZXcpIHsK
KyAgICAgICAgZ19vYmplY3RfdW5yZWYobV93ZWJJbnNwZWN0b3IpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKKyAgICB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfd2ViX3ZpZXcobV93ZWJJ
bnNwZWN0b3IsIG1fd2ViVmlldyk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKG1f
d2ViVmlldyksICJkZXN0cm95IiwKKyAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sobm90
aWZ5V2ViVmlld0Rlc3Ryb3llZCksIChncG9pbnRlcil0aGlzKTsKKworICAgIHdlYmtpdF93ZWJf
dmlld19vcGVuKG1fd2ViVmlldywgImZpbGU6Ly8iREFUQV9ESVIiL3dlYmtpdC0xLjAvd2ViaW5z
cGVjdG9yL2luc3BlY3Rvci5odG1sIik7CisgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQo
bV93ZWJWaWV3KSk7CisKKyAgICByZXR1cm4gY29yZShtX3dlYlZpZXcpOwogfQogCiBTdHJpbmcg
SW5zcGVjdG9yQ2xpZW50Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKQEAgLTQzLDIyICsxMDUsNDIg
QEAgU3RyaW5nIEluc3BlY3RvckNsaWVudDo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCiAKIHZvaWQg
SW5zcGVjdG9yQ2xpZW50OjpzaG93V2luZG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBnYm9vbGVhbiBoYW5k
bGVkID0gRkFMU0U7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViSW5zcGVjdG9yLCAi
c2hvdy13aW5kb3ciLCAmaGFuZGxlZCk7CisKKyAgICBjb3JlKG1faW5zcGVjdGVkV2ViVmlldykt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0V2luZG93VmlzaWJsZSh0cnVlKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JDbGllbnQ6OmNsb3NlV2luZG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGlmICghbV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBnYm9vbGVhbiBo
YW5kbGVkID0gRkFMU0U7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViSW5zcGVjdG9y
LCAiY2xvc2Utd2luZG93IiwgJmhhbmRsZWQpOworICAgIAorICAgIGNvcmUobV9pbnNwZWN0ZWRX
ZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRXaW5kb3dWaXNpYmxlKGZhbHNlKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnQ6OmF0dGFjaFdpbmRvdygpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAg
Z2Jvb2xlYW4gaGFuZGxlZCA9IEZBTFNFOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dl
Ykluc3BlY3RvciwgImF0dGFjaC13aW5kb3ciLCAmaGFuZGxlZCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yQ2xpZW50OjpkZXRhY2hXaW5kb3coKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
aWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGdib29sZWFuIGhhbmRsZWQg
PSBGQUxTRTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJJbnNwZWN0b3IsICJkZXR0
YWNoLXdpbmRvdyIsICZoYW5kbGVkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnQ6OmhpZ2hs
aWdodChOb2RlKiBub2RlKQpAQCAtNzEsOSArMTUzLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50
OjpoaWRlSGlnaGxpZ2h0KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEluc3Bl
Y3RvckNsaWVudDo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKQordm9pZCBJbnNw
ZWN0b3JDbGllbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiBuZXdVUkwpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0
dXJuOworCisgICAgZ19vYmplY3Rfc2V0KG1fd2ViSW5zcGVjdG9yLCAiaW5zcGVjdGVkLXVyaSIs
IG5ld1VSTC51dGY4KCkuZGF0YSgpLCBOVUxMKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKaW5kZXggOWFmZDQyYi4uZDVjYWNmNyAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsu
aAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCkBA
IC0zMCw2ICszMCw4IEBACiAjZGVmaW5lIEluc3BlY3RvckNsaWVudEd0a19oCiAKICNpbmNsdWRl
ICJJbnNwZWN0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVk
ZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBOb2RlOwpAQCAtNDEsNyArNDMsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKICAgICBjbGFz
cyBJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50IHsKICAg
ICBwdWJsaWM6CisgICAgICAgIEluc3BlY3RvckNsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KTsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CisgICAgICAg
IHZvaWQgd2ViVmlld0Rlc3Ryb3llZCgpOwogCiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFn
ZSogY3JlYXRlUGFnZSgpOwogCkBAIC01Niw2ICs2MSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChXZWJDb3JlOjpOb2RlKik7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNw
ZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbmV3VVJMKTsKKworICAgIHBy
aXZhdGU6CisgICAgICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKKyAgICAgICAgV2ViS2l0
V2ViVmlldyogbV9pbnNwZWN0ZWRXZWJWaWV3OworICAgICAgICBXZWJLaXRXZWJJbnNwZWN0b3Iq
IG1fd2ViSW5zcGVjdG9yOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdC1tYXJzaGFsLmxpc3QgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQtbWFyc2hh
bC5saXN0CmluZGV4IGE4ZjI0NTMuLjZiM2I3NmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdC1tYXJzaGFsLmxpc3QKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LW1h
cnNoYWwubGlzdApAQCAtNiw3ICs2LDEwIEBAIFZPSUQ6T0JKRUNULFNUUklORwogVk9JRDpPQkpF
Q1QsT0JKRUNUCiBWT0lEOk9CSkVDVCxQT0lOVEVSLFBPSU5URVIKIEJPT0xFQU46U1RSSU5HLElO
VCxTVFJJTkcKK0JPT0xFQU46Vk9JRAorQk9PTEVBTjpTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNU
UklORwogQk9PTEVBTjpPQkpFQ1QsU1RSSU5HLEJPT0xFQU4KIEJPT0xFQU46T0JKRUNULFNUUklO
RyxTVFJJTkcsU1RSSU5HCiBJTlQ6T0JKRUNULE9CSkVDVAorT0JKRUNUOk9CSkVDVApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXQuaAppbmRleCAxMGMyMTRmLi5lMTljYmM3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXQuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaApAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oPgogI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0
aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuaD4KICNpbmNsdWRl
IDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNr
Zm9yd2FyZGxpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaD4K
ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaCBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAppbmRleCAzODZjM2UxLi4wYzA4MGY0IDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKKysrIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0ZGVmaW5lcy5oCkBAIC01NSw2ICs1NSw5IEBAIHR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJGcmFtZUNsYXNzIFdlYktpdFdlYkZyYW1lQ2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViU2V0dGluZ3MgV2ViS2l0V2ViU2V0dGluZ3M7CiB0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2ViU2V0dGluZ3NDbGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwogCit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0V2ViSW5zcGVjdG9yIFdlYktpdFdlYkluc3BlY3RvcjsKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJJbnNwZWN0b3JDbGFzcyBXZWJLaXRXZWJJbnNwZWN0b3JDbGFzczsKKwog
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKIHR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgV2ViS2l0V2ViVmlld0NsYXNzOwogCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRwcml2YXRlLmgKaW5kZXggZWQ4MWExYy4uODAyY2RiMCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2xp
ZW50R3RrLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKIAogI2luY2x1ZGUgPGds
aWIuaD4KQEAgLTY3LDYgKzY4LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgc3RydWN0IF9XZWJLaXRX
ZWJWaWV3UHJpdmF0ZSB7CiAgICAgICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlOwogICAgICAg
ICBXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3M7CisgICAgICAgIFdlYktpdFdlYkluc3Bl
Y3Rvciogd2ViSW5zcGVjdG9yOwogCiAgICAgICAgIFdlYktpdFdlYkZyYW1lKiBtYWluRnJhbWU7
CiAgICAgICAgIFdlYkNvcmU6OlN0cmluZyBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ7CkBA
IC0xMTAsNiArMTEyLDE1IEBAIGV4dGVybiAiQyIgewogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVt
KgogICAgIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2NvcmVfaXRlbShXZWJDb3Jl
OjpIaXN0b3J5SXRlbSopOwogCisgICAgdm9pZAorICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3Nl
dF9pbnNwZWN0b3JfY2xpZW50KFdlYktpdFdlYkluc3BlY3RvciosIFdlYktpdDo6SW5zcGVjdG9y
Q2xpZW50Kik7CisKKyAgICB2b2lkCisgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3dlYl92
aWV3KFdlYktpdFdlYkluc3BlY3RvciAqd2ViX2luc3BlY3RvciwgV2ViS2l0V2ViVmlldyAqd2Vi
X3ZpZXcpOworCisgICAgdm9pZAorICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNwZWN0
ZWRfdXJpKFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3RvciwgY29uc3QgZ2NoYXIqIGlu
c3BlY3RlZF91cmkpOworCiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gd2Via2l0d2ViZnJh
bWUuaCBvbmNlIHRoZWlyIEFQSSBoYXMgYmVlbiBkaXNjdXNzZWQuCiAKICAgICBXRUJLSVRfQVBJ
IEdTTGlzdCoKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rv
ci5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YzRmOTkKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwCkBAIC0wLDAgKzEsMzIzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YQorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0b3IuaCIKKyNpbmNsdWRl
ICJ3ZWJraXQtbWFyc2hhbC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEd0ay5oIgorI2lu
Y2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworZXh0
ZXJuICJDIiB7CisKK2VudW0geworICAgIElOU1BFQ1RfV0VCX1ZJRVcsCisgICAgU0hPV19XSU5E
T1csCisgICAgQVRUQUNIX1dJTkRPVywKKyAgICBERVRUQUNIX1dJTkRPVywKKyAgICBDTE9TRV9X
SU5ET1csCisgICAgSU5TUEVDVE9SX0RFU1RST1lFRCwKKyAgICBMQVNUX1NJR05BTAorfTsKKwor
c3RhdGljIGd1aW50IHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NpZ25hbHNbTEFTVF9TSUdOQUxdID0g
eyAwLCB9OworCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX1dFQl9WSUVXLAorICAg
IFBST1BfSU5TUEVDVEVEX1VSSSwKK307CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViSW5zcGVj
dG9yLCB3ZWJraXRfd2ViX2luc3BlY3RvciwgR19UWVBFX09CSkVDVCkKKworc3RydWN0IF9XZWJL
aXRXZWJJbnNwZWN0b3JQcml2YXRlIHsKKyAgICBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNs
aWVudDsKKyAgICBXZWJLaXRXZWJWaWV3KiBpbnNwZWN0b3JfdmlldzsKKyAgICBnY2hhciogaW5z
cGVjdGVkX3VyaTsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9JTlNQRUNUT1JfR0VUX1BSSVZB
VEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9X
RUJfSU5TUEVDVE9SLCBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKSkKKworc3RhdGljIHZvaWQg
d2Via2l0X3dlYl9pbnNwZWN0b3JfZmluYWxpemUoR09iamVjdCogb2JqZWN0KTsKKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOwor
CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfcHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7
CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfaW5zcGVjdF93ZWJfdmlld19yZXF1ZXN0X2hhbmRs
ZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwgR1ZhbHVlKiByZXR1cm5BY2N1LCBjb25z
dCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1bW15KQoreworICAgIGdib29sZWFu
IGNvbnRpbnVlRW1pc3Npb24gPSBUUlVFOworICAgIGdwb2ludGVyIG5ld1dlYlZpZXcgPSBnX3Zh
bHVlX2dldF9vYmplY3QoaGFuZGxlclJldHVybik7CisgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHJl
dHVybkFjY3UsIG5ld1dlYlZpZXcpOworCisgICAgaWYgKG5ld1dlYlZpZXcpCisgICAgICAgIGNv
bnRpbnVlRW1pc3Npb24gPSBGQUxTRTsKKworICAgIHJldHVybiBjb250aW51ZUVtaXNzaW9uOwor
fQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9jbGFzc19pbml0KFdlYktpdFdl
Ykluc3BlY3RvckNsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RfY2xh
c3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUg
PSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9maW5hbGl6ZTsKKyAgICBnb2JqZWN0X2NsYXNzLT5zZXRf
cHJvcGVydHkgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfcHJvcGVydHk7CisgICAgZ29iamVj
dF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3Byb3BlcnR5
OworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOjppbnNwZWN0LXdlYi12aWV3
OgorICAgICAqIEB3ZWJfaW5zcGVjdG9yOiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwg
aXMgZW1pdHRlZAorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWIgd2hpY2ggd2lsbCBi
ZSBpbnNwZWN0ZWQKKyAgICAgKiBAcmV0dXJuOiBhIG5ld2x5IGFsbG9jYXRlZCAjV2ViS2l0V2Vi
VmlldyBvciAlTlVMTAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGFjdGl2
YXRlcyB0aGUgJ2luc3BlY3QnIGNvbnRleHQgbWVudSBpdGVtCisgICAgICogdG8gaW5zcGVjdCBh
IHdlYiB2aWV3LiBUaGUgYXBwbGljYXRpb24gd2hpY2ggaXMgaW50ZXJlc3RlZCBpbgorICAgICAq
IHRoZSBpbnNwZWN0b3Igc2hvdWxkIGNyZWF0ZSBhIHdpbmRvdywgb3Igb3RoZXJ3aXNlIGFkZCB0
aGUKKyAgICAgKiAjV2ViS2l0V2ViVmlldyBpdCBjcmVhdGVzIHRvIGFuIGV4aXN0aW5nIHdpbmRv
dy4KKyAgICAgKgorICAgICAqIFRoZSAjV2ViS2l0V2ViVmlldyBtdXN0IG5ldmVyIGJlIGRlc3Ry
b3llZDsgdGhhdCBtZWFucyB0aGF0IHlvdQorICAgICAqIHByb2JhYmx5IHdhbnQgdG8gaGFuZGxl
IHRoZSBkZWxldGUtZXZlbnQgc2lnbmFsIG9mIHdpbmRvd3MKKyAgICAgKiBjb250YWluaW5nIHRo
ZSBpbnNwZWN0b3IgI1dlYktpdFdlYlZpZXcsIGZvciBpbnN0YW5jZSwgc28gdGhhdAorICAgICAq
IHlvdSBjYW4gaGlkZSB0aGVtIHdoZW4gdGhleSBhcmUgY2xvc2VkLCBhbmQgc2hvdyB0aGVtIGFn
YWluCisgICAgICogd2hlbiA6OnNob3ctd2luZG93IGlzIGVtaXR0ZWQuCisgICAgICovCisgICAg
d2Via2l0X3dlYl9pbnNwZWN0b3Jfc2lnbmFsc1tJTlNQRUNUX1dFQl9WSUVXXSA9IGdfc2lnbmFs
X25ldygiaW5zcGVjdC13ZWItdmlldyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhr
bGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdf
U0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgd2Via2l0X2luc3Bl
Y3Rfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAg
ICAgIHdlYmtpdF9tYXJzaGFsX09CSkVDVF9fT0JKRUNULAorICAgICAgICAgICAgV0VCS0lUX1RZ
UEVfV0VCX1ZJRVcgLCAxLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcpOworCisg
ICAgLyoqCisgICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOjpzaG93LXdpbmRvdzoKKyAgICAgKiBA
d2ViX2luc3BlY3RvcjogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQK
KyAgICAgKiBAcmV0dXJuOiAlVFJVRSBpZiB0aGUgc2lnbmFsIGhhcyBiZWVuIGhhbmRsZWQKKyAg
ICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5zcGVjdG9yIHdpbmRvdyBzaG91bGQgYmUg
ZGlzcGxheWVkLiBOb3RpY2UKKyAgICAgKiB0aGF0IHRoZSB3aW5kb3cgbXVzdCBoYXZlIGJlZW4g
Y3JlYXRlZCBhbHJlYWR5IGJ5IGhhbmRsaW5nCisgICAgICogOjppbnNwZWN0LXdlYi12aWV3Lgor
ICAgICAqLworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NpZ25hbHNbU0hPV19XSU5ET1ddID0g
Z19zaWduYWxfbmV3KCJzaG93LXdpbmRvdyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFT
UyhrbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8
IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgZ19zaWduYWxf
YWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAg
IHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVB
TiAsIDApOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOjphdHRhY2gtd2lu
ZG93OgorICAgICAqIEB3ZWJfaW5zcGVjdG9yOiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWdu
YWwgaXMgZW1pdHRlZAorICAgICAqIEByZXR1cm46ICVUUlVFIGlmIHRoZSBzaWduYWwgaGFzIGJl
ZW4gaGFuZGxlZAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnNwZWN0b3Igc2hv
dWxkIGFwcGVhciBhdCB0aGUgc2FtZSB3aW5kb3cgYXMKKyAgICAgKiB0aGUgI1dlYktpdFdlYlZp
ZXcgYmVpbmcgaW5zcGVjdGVkLgorICAgICAqLworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3Np
Z25hbHNbQVRUQUNIX1dJTkRPV10gPSBnX3NpZ25hbF9uZXcoImF0dGFjaC13aW5kb3ciLAorICAg
ICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Moa2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxG
bGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAg
MCwKKyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwKKyAgICAg
ICAgICAgIE5VTEwsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAor
ICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4gLCAwKTsKKworICAgIC8qKgorICAgICAqIFdlYktp
dFdlYkluc3BlY3Rvcjo6ZGV0dGFjaC13aW5kb3c6CisgICAgICogQHdlYl9pbnNwZWN0b3I6IHRo
ZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHJldHVybjog
JVRSVUUgaWYgdGhlIHNpZ25hbCBoYXMgYmVlbiBoYW5kbGVkCisgICAgICoKKyAgICAgKiBFbWl0
dGVkIHdoZW4gdGhlIGluc3BlY3RvciBzaG91bGQgYXBwZWFyIGluIGEgc2VwYXJhdGUgd2luZG93
LgorICAgICAqLworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NpZ25hbHNbREVUVEFDSF9XSU5E
T1ddID0gZ19zaWduYWxfbmV3KCJkZXR0YWNoLXdpbmRvdyIsCisgICAgICAgICAgICBHX1RZUEVf
RlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9S
VU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICAwLAorICAgICAgICAgICAg
Z19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAg
ICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICBHX1RZ
UEVfQk9PTEVBTiAsIDApOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOjpj
bG9zZS13aW5kb3c6CisgICAgICogQHdlYl9pbnNwZWN0b3I6IHRoZSBvYmplY3Qgb24gd2hpY2gg
dGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHJldHVybjogJVRSVUUgaWYgdGhlIHNpZ25h
bCBoYXMgYmVlbiBoYW5kbGVkCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGluc3Bl
Y3RvciB3aW5kb3cgc2hvdWxkIGJlIGNsb3NlZC4gVGhlIHdpbmRvdworICAgICAqIHNob3VsZCBi
ZSBoaWRkZW4sIHNvIHRoYXQgaXQgY2FuIGJlIGRpc3BsYXllZCBhZ2FpbiBieSBoYW5kbGluZwor
ICAgICAqIDo6c2hvdy13aW5kb3cgbGF0ZXIgb24uCisgICAgICoKKyAgICAgKiBOb3RpY2UgdGhh
dCB0aGUgaW5zcGVjdGVkICNXZWJLaXRXZWJWaWV3IG1heSBubyBsb25nZXIgZXhpc3QKKyAgICAg
KiB3aGVuIHRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQuCisgICAgICovCisgICAgd2Via2l0X3dlYl9p
bnNwZWN0b3Jfc2lnbmFsc1tDTE9TRV9XSU5ET1ddID0gZ19zaWduYWxfbmV3KCJjbG9zZS13aW5k
b3ciLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Moa2xhc3MpLAorICAgICAgICAgICAg
KEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAg
ICAgICAgICAgMCwKKyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxl
ZCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFO
X19WT0lELAorICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4gLCAwKTsKKworICAgIC8qKgorICAg
ICAqIFdlYktpdFdlYkluc3BlY3Rvcjo6aW5zcGVjdG9yLWRlc3Ryb3llZDoKKyAgICAgKiBAd2Vi
X2luc3BlY3RvcjogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAg
ICAgKiBAcmV0dXJuOiAlVFJVRSBpZiB0aGUgc2lnbmFsIGhhcyBiZWVuIGhhbmRsZWQKKyAgICAg
KgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5zcGVjdG9yIGlzIGRlc3Ryb3llZC4KKyAgICAg
Ki8KKyAgICB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zaWduYWxzW0lOU1BFQ1RPUl9ERVNUUk9ZRURd
ID0gZ19zaWduYWxfbmV3KCJpbnNwZWN0b3ItZGVzdHJveWVkIiwKKyAgICAgICAgICAgIEdfVFlQ
RV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFM
X1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAg
ICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAor
ICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgIEdf
VFlQRV9CT09MRUFOICwgMCk7CisKKyAgICAvKgorICAgICAqIHByb3BlcnRpZXMKKyAgICAgKi8K
KyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsIFBST1Bf
V0VCX1ZJRVcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3Nw
ZWNfb2JqZWN0KCJ3ZWItdmlldyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJXZWIgVmlldyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgV2ViIFZpZXcgdGhhdCByZW5k
ZXJzIHRoZSBXZWIgSW5zcGVjdG9yIGl0c2VsZiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBRFdSSVRFKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdvYmplY3RfY2xhc3MsIFBST1BfSU5TUEVDVEVEX1VSSSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoImluc3BlY3RlZC11cmkiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
SW5zcGVjdGVkIFVSSSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJUaGUgVVJJIHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIGluc3BlY3Rl
ZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKworICAgIGdfdHlwZV9jbGFzc19h
ZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUpKTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfaW5pdChXZWJLaXRXZWJJbnNwZWN0
b3IqIHdlYl9pbnNwZWN0b3IpCit7CisgICAgd2ViX2luc3BlY3Rvci0+cHJpdiA9IFdFQktJVF9X
RUJfSU5TUEVDVE9SX0dFVF9QUklWQVRFKHdlYl9pbnNwZWN0b3IpOworfQorCitzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAg
V2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJfaW5zcGVjdG9yID0gV0VCS0lUX1dFQl9JTlNQRUNUT1Io
b2JqZWN0KTsKKyAgICBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2ViX2luc3Bl
Y3Rvci0+cHJpdjsKKworICAgIGlmIChwcml2LT5pbnNwZWN0b3JfdmlldykKKyAgICAgICAgZ19v
YmplY3RfdW5yZWYocHJpdi0+aW5zcGVjdG9yX3ZpZXcpOworCisgICAgaWYgKHByaXYtPmluc3Bl
Y3RlZF91cmkpCisgICAgICAgIGdfZnJlZShwcml2LT5pbnNwZWN0ZWRfdXJpKTsKKworICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfaW5zcGVjdG9yX3BhcmVudF9jbGFzcyktPmZpbmFsaXpl
KG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUs
IEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3Bl
Y3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9SKG9iamVjdCk7CisgICAgV2ViS2l0V2ViSW5zcGVj
dG9yUHJpdmF0ZSogcHJpdiA9IHdlYl9pbnNwZWN0b3ItPnByaXY7CisKKyAgICBzd2l0Y2gocHJv
cF9pZCkgeworICAgIGNhc2UgUFJPUF9XRUJfVklFVzoKKyAgICAgICAgd2Via2l0X3dlYl9pbnNw
ZWN0b3Jfc2V0X3dlYl92aWV3KHdlYl9pbnNwZWN0b3IsIFdFQktJVF9XRUJfVklFVyhnX3ZhbHVl
X2dldF9vYmplY3QodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JTlNQ
RUNURURfVVJJOgorICAgICAgICBwcml2LT5pbnNwZWN0ZWRfdXJpID0gZ192YWx1ZV9kdXBfc3Ry
aW5nKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9y
X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFs
dWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2lu
c3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9SKG9iamVjdCk7CisgICAgV2ViS2l0V2ViSW5z
cGVjdG9yUHJpdmF0ZSogcHJpdiA9IHdlYl9pbnNwZWN0b3ItPnByaXY7CisKKyAgICBzd2l0Y2gg
KHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfV0VCX1ZJRVc6CisgICAgICAgIGdfdmFsdWVfc2V0
X29iamVjdCh2YWx1ZSwgcHJpdi0+aW5zcGVjdG9yX3ZpZXcpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfSU5TUEVDVEVEX1VSSToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZh
bHVlLCBwcml2LT5pbnNwZWN0ZWRfdXJpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9p
ZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgd2Via2l0X3dlYl9p
bnNwZWN0b3Jfc2V0X3dlYl92aWV3KFdlYktpdFdlYkluc3BlY3RvciAqd2ViX2luc3BlY3Rvciwg
V2ViS2l0V2ViVmlldyAqd2ViX3ZpZXcpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX0lOU1BFQ1RPUih3ZWJfaW5zcGVjdG9yKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcod2ViX3ZpZXcpKTsKKworICAgIFdlYktpdFdlYkluc3BlY3RvclBy
aXZhdGUqIHByaXYgPSB3ZWJfaW5zcGVjdG9yLT5wcml2OworCisgICAgaWYgKHByaXYtPmluc3Bl
Y3Rvcl92aWV3KQorICAgICAgICBnX29iamVjdF91bnJlZihwcml2LT5pbnNwZWN0b3Jfdmlldyk7
CisgICAgCisgICAgZ19vYmplY3RfcmVmKHdlYl92aWV3KTsKKyAgICBwcml2LT5pbnNwZWN0b3Jf
dmlldyA9IHdlYl92aWV3OworfQorCitXZWJLaXRXZWJWaWV3KiB3ZWJraXRfd2ViX2luc3BlY3Rv
cl9nZXRfd2ViX3ZpZXcoV2ViS2l0V2ViSW5zcGVjdG9yICp3ZWJfaW5zcGVjdG9yKQoreworICAg
IFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUqIHByaXYgPSB3ZWJfaW5zcGVjdG9yLT5wcml2Owor
CisgICAgcmV0dXJuIHByaXYtPmluc3BlY3Rvcl92aWV3OworfQorCit2b2lkIHdlYmtpdF93ZWJf
aW5zcGVjdG9yX3NldF9pbnNwZWN0ZWRfdXJpKFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3Bl
Y3RvciwgY29uc3QgZ2NoYXIqIGluc3BlY3RlZF91cmkpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX0lOU1BFQ1RPUih3ZWJfaW5zcGVjdG9yKSk7CisKKyAgICBXZWJLaXRX
ZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2ViX2luc3BlY3Rvci0+cHJpdjsKKworICAgIGlm
IChwcml2LT5pbnNwZWN0ZWRfdXJpKQorICAgICAgICBnX2ZyZWUocHJpdi0+aW5zcGVjdGVkX3Vy
aSk7CisgICAgCisgICAgcHJpdi0+aW5zcGVjdGVkX3VyaSA9IGdfc3RyZHVwKGluc3BlY3RlZF91
cmkpOworfQorCitjb25zdCBnY2hhciogd2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X2luc3BlY3Rl
ZF91cmkoV2ViS2l0V2ViSW5zcGVjdG9yICp3ZWJfaW5zcGVjdG9yKQoreworICAgIFdlYktpdFdl
Ykluc3BlY3RvclByaXZhdGUqIHByaXYgPSB3ZWJfaW5zcGVjdG9yLT5wcml2OworCisgICAgcmV0
dXJuIHByaXYtPmluc3BlY3RlZF91cmk7Cit9CisKK3ZvaWQKK3dlYmtpdF93ZWJfaW5zcGVjdG9y
X3NldF9pbnNwZWN0b3JfY2xpZW50KFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3Rvciwg
V2ViS2l0OjpJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKK3sKKyAgICBXZWJLaXRX
ZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2ViX2luc3BlY3Rvci0+cHJpdjsKKworICAgIHBy
aXYtPmluc3BlY3RvckNsaWVudCA9IGluc3BlY3RvckNsaWVudDsKK30KKworfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmggYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40MWNjZjkyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2ViaW5zcGVjdG9yLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX1dFQktJVF9XRUJfSU5TUEVDVE9SX0hf
XworI2RlZmluZSBfX1dFQktJVF9XRUJfSU5TUEVDVE9SX0hfXworCisjaW5jbHVkZSA8Z2xpYi1v
YmplY3QuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5f
REVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SICAgICAgICAgICAgKHdl
YmtpdF93ZWJfaW5zcGVjdG9yX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfSU5TUEVD
VE9SKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdF
QktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsIFdlYktpdFdlYkluc3BlY3RvcikpCisjZGVmaW5lIFdF
QktJVF9XRUJfSU5TUEVDVE9SX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NB
U1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsIFdlYktpdFdlYkluc3BlY3Rv
ckNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9JTlNQRUNUT1Iob2JqKSAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RP
UikpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfSU5TUEVDVE9SX0NMQVNTKGtsYXNzKSAoR19UWVBF
X0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IpKQor
I2RlZmluZSBXRUJLSVRfV0VCX0lOU1BFQ1RPUl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNU
QU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLCBXZWJLaXRX
ZWJJbnNwZWN0b3JDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJJbnNwZWN0b3JQ
cml2YXRlIFdlYktpdFdlYkluc3BlY3RvclByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViSW5z
cGVjdG9yIHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKworICAgIFdlYktpdFdlYklu
c3BlY3RvclByaXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYkluc3BlY3RvckNs
YXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgLyogUGFkZGluZyBm
b3IgZnV0dXJlIGV4cGFuc2lvbiAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZv
aWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpf
d2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNCkg
KHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0
X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYlZpZXcqCit3ZWJraXRfd2ViX2lu
c3BlY3Rvcl9nZXRfd2ViX3ZpZXcoV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJfaW5zcGVjdG9yKTsK
KworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9pbnNw
ZWN0ZWRfdXJpKFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3Rvcik7CisKK0dfRU5EX0RF
Q0xTCisKKyNlbmRpZiAvKiBfX1dFQktJVF9XRUJfSU5TUEVDVE9SX0hfXyAqLwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCmluZGV4IDA4ZTQwOWQuLmExYWY1ZDggMTAwNjQ0
Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAorKysgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgewogICAgIGdib29sZWFuIHJlc2l6YWJsZV90
ZXh0X2FyZWFzOwogICAgIGdjaGFyKiB1c2VyX3N0eWxlc2hlZXRfdXJpOwogICAgIGdmbG9hdCB6
b29tX3N0ZXA7CisgICAgZ2Jvb2xlYW4gZW5hYmxlX2RldmVsb3Blcl9leHRyYXM7CiB9OwogCiAj
ZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1NfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RB
TkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdl
YlNldHRpbmdzUHJpdmF0ZSkpCkBAIC03Myw3ICs3NCw4IEBAIGVudW0gewogICAgIFBST1BfRU5B
QkxFX1BMVUdJTlMsCiAgICAgUFJPUF9SRVNJWkFCTEVfVEVYVF9BUkVBUywKICAgICBQUk9QX1VT
RVJfU1RZTEVTSEVFVF9VUkksCi0gICAgUFJPUF9aT09NX1NURVAKKyAgICBQUk9QX1pPT01fU1RF
UCwKKyAgICBQUk9QX0VOQUJMRV9ERVZFTE9QRVJfRVhUUkFTCiB9OwogCiBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CkBAIC0yNjgsNiAr
MjcwLDIyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJL
aXRXZWJTZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMGYsIEdfTUFYRkxPQVQsIDAuMWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbGFncykpOwogCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpl
bmFibGUtZGV2ZWxvcGVyLWV4dHJhczoKKyAgICAqCisgICAgKiBXaGV0aGVyIGRldmVsb3BlciBl
eHRlbnNpb25zIHNob3VsZCBiZSBlbmFibGVkLgorICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgor
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfREVWRUxP
UEVSX0VYVFJBUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1f
c3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuYWJs
ZS1kZXZlbG9wZXItZXh0cmFzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJFbmFibGUgRGV2ZWxvcGVyIEV4dHJhcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiRW5hYmxlcyBzcGVjaWFsIGV4dGVuc2lvbnMgdGhhdCBoZWxwIGRldmVsb3BlcnMi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCiAgICAgZ190eXBlX2NsYXNzX2Fk
ZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKSk7CiB9CiAK
QEAgLTM2NCw2ICszODIsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9w
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgogICAgIGNhc2UgUFJP
UF9aT09NX1NURVA6CiAgICAgICAgIHByaXYtPnpvb21fc3RlcCA9IGdfdmFsdWVfZ2V0X2Zsb2F0
KHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9ERVZFTE9QRVJf
RVhUUkFTOgorICAgICAgICBwcml2LT5lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyA9IGdfdmFsdWVf
Z2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAg
ICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3Bl
Yyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDMzLDYgKzQ1NCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9p
ZCwgR1ZhCiAgICAgY2FzZSBQUk9QX1pPT01fU1RFUDoKICAgICAgICAgZ192YWx1ZV9zZXRfZmxv
YXQodmFsdWUsIHByaXYtPnpvb21fc3RlcCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9FTkFCTEVfREVWRUxPUEVSX0VYVFJBUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2
YWx1ZSwgcHJpdi0+ZW5hYmxlX2RldmVsb3Blcl9leHRyYXMpOworICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2Jq
ZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDgzLDYgKzUwNyw3IEBA
IFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkoV2ViS2l0V2ViU2V0
dGluZ3MqIHdlYl9zZXR0aW5ncykKICAgICAgICAgICAgICAgICAgInJlc2l6YWJsZS10ZXh0LWFy
ZWFzIiwgcHJpdi0+cmVzaXphYmxlX3RleHRfYXJlYXMsCiAgICAgICAgICAgICAgICAgICJ1c2Vy
LXN0eWxlc2hlZXQtdXJpIiwgcHJpdi0+dXNlcl9zdHlsZXNoZWV0X3VyaSwKICAgICAgICAgICAg
ICAgICAgInpvb20tc3RlcCIsIHByaXYtPnpvb21fc3RlcCwKKyAgICAgICAgICAgICAgICAgImVu
YWJsZS1kZXZlbG9wZXItZXh0cmFzIiwgcHJpdi0+ZW5hYmxlX2RldmVsb3Blcl9leHRyYXMsCiAg
ICAgICAgICAgICAgICAgIE5VTEwpKTsKIAogICAgIHJldHVybiBjb3B5OwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA2YTdlYTFmLi5kMTU3NzlmIDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIndlYmtpdHdlYnZp
ZXcuaCIKICNpbmNsdWRlICJ3ZWJraXQtbWFyc2hhbC5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZh
dGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0b3IuaCIKICNpbmNsdWRlICJ3ZWJraXR3
ZWJiYWNrZm9yd2FyZGxpc3QuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIgog
CkBAIC05OSw2ICsxMDAsNyBAQCBlbnVtIHsKICAgICBQUk9QX1BBU1RFX1RBUkdFVF9MSVNULAog
ICAgIFBST1BfRURJVEFCTEUsCiAgICAgUFJPUF9TRVRUSU5HUywKKyAgICBQUk9QX1dFQl9JTlNQ
RUNUT1IsCiAgICAgUFJPUF9UUkFOU1BBUkVOVCwKICAgICBQUk9QX1pPT01fTEVWRUwsCiAgICAg
UFJPUF9GVUxMX0NPTlRFTlRfWk9PTQpAQCAtMjM0LDYgKzIzNiw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lk
LCBHVmFsdWUqCiAgICAgY2FzZSBQUk9QX1NFVFRJTkdTOgogICAgICAgICBnX3ZhbHVlX3NldF9v
YmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldykpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0VCX0lOU1BFQ1RPUjoKKyAgICAgICAgZ192YWx1
ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2luc3BlY3Rvcih3ZWJWaWV3
KSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAg
Z192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVu
dCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzIxLDYgKzcyNiw3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIGdf
b2JqZWN0X3VucmVmKHByaXYtPnZlcnRpY2FsQWRqdXN0bWVudCk7CiAgICAgZ19vYmplY3RfdW5y
ZWYocHJpdi0+YmFja0ZvcndhcmRMaXN0KTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJT
ZXR0aW5ncyk7CisgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+d2ViSW5zcGVjdG9yKTsKICAgICBn
X29iamVjdF91bnJlZihwcml2LT5tYWluRnJhbWUpOwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYt
PmltQ29udGV4dCk7CiAgICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKHByaXYtPmNvcHlfdGFyZ2V0
X2xpc3QpOwpAQCAtMTIwNiw2ICsxMjEyLDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQ
RV9XRUJfU0VUVElOR1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKIAorICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfV0VCX0lOU1BFQ1RPUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3Qo
IndlYi1pbnNwZWN0b3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiV2ViIEluc3BlY3RvciIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgYXNzb2NpYXRlZCBXZWJLaXRX
ZWJJbnNwZWN0b3IgaW5zdGFuY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRf
UEFSQU1fUkVBREFCTEUpKTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
b2JqZWN0Q2xhc3MsIFBST1BfRURJVEFCTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZWRpdGFibGUiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVkaXRhYmxlIiwKQEAg
LTEyOTIsNyArMTMwNSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0
dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBj
b3JlKHdlYlZpZXcpLT5zZXR0aW5ncygpOwogCiAgICAgZ2NoYXIqIGRlZmF1bHRFbmNvZGluZywg
KmN1cnNpdmVGb250RmFtaWx5LCAqZGVmYXVsdEZvbnRGYW1pbHksICpmYW50YXN5Rm9udEZhbWls
eSwgKm1vbm9zcGFjZUZvbnRGYW1pbHksICpzYW5zU2VyaWZGb250RmFtaWx5LCAqc2VyaWZGb250
RmFtaWx5LCAqdXNlclN0eWxlc2hlZXRVcmk7Ci0gICAgZ2Jvb2xlYW4gYXV0b0xvYWRJbWFnZXMs
IGF1dG9TaHJpbmtJbWFnZXMsIHByaW50QmFja2dyb3VuZHMsIGVuYWJsZVNjcmlwdHMsIGVuYWJs
ZVBsdWdpbnMsIHJlc2l6YWJsZVRleHRBcmVhczsKKyAgICBnYm9vbGVhbiBhdXRvTG9hZEltYWdl
cywgYXV0b1Nocmlua0ltYWdlcywgcHJpbnRCYWNrZ3JvdW5kcywgZW5hYmxlU2NyaXB0cywgZW5h
YmxlUGx1Z2lucywgZW5hYmxlRGV2ZWxvcGVyRXh0cmFzLCByZXNpemFibGVUZXh0QXJlYXM7CiAK
ICAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2ViU2V0dGluZ3MpLAogICAgICAgICAgICAgICAg
ICAiZGVmYXVsdC1lbmNvZGluZyIsICZkZWZhdWx0RW5jb2RpbmcsCkBAIC0xMzA5LDYgKzEzMjIs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCiAgICAgICAgICAgICAgICAgICJlbmFibGUtcGx1Z2lucyIsICZlbmFi
bGVQbHVnaW5zLAogICAgICAgICAgICAgICAgICAicmVzaXphYmxlLXRleHQtYXJlYXMiLCAmcmVz
aXphYmxlVGV4dEFyZWFzLAogICAgICAgICAgICAgICAgICAidXNlci1zdHlsZXNoZWV0LXVyaSIs
ICZ1c2VyU3R5bGVzaGVldFVyaSwKKyAgICAgICAgICAgICAgICAgImVuYWJsZS1kZXZlbG9wZXIt
ZXh0cmFzIiwgJmVuYWJsZURldmVsb3BlckV4dHJhcywKICAgICAgICAgICAgICAgICAgTlVMTCk7
CiAKICAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoZGVmYXVsdEVuY29k
aW5nKTsKQEAgLTEzMjUsNiArMTMzOSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191
cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBzZXR0aW5ncy0+c2V0
UGx1Z2luc0VuYWJsZWQoZW5hYmxlUGx1Z2lucyk7CiAgICAgc2V0dGluZ3MtPnNldFRleHRBcmVh
c0FyZVJlc2l6YWJsZShyZXNpemFibGVUZXh0QXJlYXMpOwogICAgIHNldHRpbmdzLT5zZXRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uKEtVUkwodXNlclN0eWxlc2hlZXRVcmkpKTsKKyAgICBzZXR0aW5n
cy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChlbmFibGVEZXZlbG9wZXJFeHRyYXMpOwogCiAg
ICAgZ19mcmVlKGRlZmF1bHRFbmNvZGluZyk7CiAgICAgZ19mcmVlKGN1cnNpdmVGb250RmFtaWx5
KTsKQEAgLTEzOTQsNyArMTQwOSwxNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5p
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHdlYlZpZXctPnByaXYgPSBwcml2OwogCiAg
ICAgcHJpdi0+aW1Db250ZXh0ID0gZ3RrX2ltX211bHRpY29udGV4dF9uZXcoKTsKLSAgICBwcml2
LT5jb3JlUGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJLaXQ6OkNocm9tZUNsaWVudCh3ZWJWaWV3KSwg
bmV3IFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkVkaXRv
ckNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RHJhZ0NsaWVudCwgbmV3IFdlYktpdDo6SW5z
cGVjdG9yQ2xpZW50KTsKKyAgICAKKyAgICBXZWJLaXQ6Okluc3BlY3RvckNsaWVudCogaW5zcGVj
dG9yQ2xpZW50ID0gbmV3IFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50KHdlYlZpZXcpOworICAgIHBy
aXYtPmNvcmVQYWdlID0gbmV3IFBhZ2UobmV3IFdlYktpdDo6Q2hyb21lQ2xpZW50KHdlYlZpZXcp
LCBuZXcgV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RWRp
dG9yQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpEcmFnQ2xpZW50LCBpbnNwZWN0b3JDbGll
bnQpOworCisgICAgLyogd2UgYWxzbyBhZGQgYSBzaW1wbGUgd3JhcHBlciBjbGFzcyB0byBwcm92
aWRlIHRoZSBwdWJsaWMKKyAgICAgICBpbnRlcmZhY2UgZm9yIHRoZSBXZWIgSW5zcGVjdG9yICov
CisgICAgcHJpdi0+d2ViSW5zcGVjdG9yID0gV0VCS0lUX1dFQl9JTlNQRUNUT1IoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsIE5VTEwpKTsKKyAgICB3ZWJraXRfd2ViX2lu
c3BlY3Rvcl9zZXRfaW5zcGVjdG9yX2NsaWVudChwcml2LT53ZWJJbnNwZWN0b3IsIGluc3BlY3Rv
ckNsaWVudCk7CiAKICAgICBwcml2LT5ob3Jpem9udGFsQWRqdXN0bWVudCA9IEdUS19BREpVU1RN
RU5UKGd0a19hZGp1c3RtZW50X25ldygwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wKSk7CiAg
ICAgcHJpdi0+dmVydGljYWxBZGp1c3RtZW50ID0gR1RLX0FESlVTVE1FTlQoZ3RrX2FkanVzdG1l
bnRfbmV3KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApKTsKQEAgLTE0NjksNiArMTQ5MSwx
NCBAQCBXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHJldHVybiBwcml2LT53ZWJTZXR0aW5nczsKIH0KIAor
V2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2luc3BlY3RvcihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19X
RUJfVklFVyh3ZWJWaWV3KSwgTlVMTCk7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJp
diA9IHdlYlZpZXctPnByaXY7CisgICAgcmV0dXJuIHByaXYtPndlYkluc3BlY3RvcjsKK30KKwog
LyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X21haW50YWluc19iYWNrX2ZvcndhcmRfbGlzdDoK
ICAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgK
aW5kZXggZWJkMWFhMS4uNzM3MTk1OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAt
MjQ3LDYgKzI0Nyw5IEBAIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcsCiBXRUJLSVRfQVBJIFdlYktp
dFdlYlNldHRpbmdzICoKIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJIFdl
YktpdFdlYkluc3BlY3RvciAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2luc3BlY3RvciAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3KTsKKwogV0VCS0lUX0FQ
SSBnYm9vbGVhbgogd2Via2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVudCAgICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22363</attachid>
            <date>2008-07-18 07:42:13 -0700</date>
            <delta_ts>2008-07-18 08:38:55 -0700</delta_ts>
            <desc>updated GtkLauncher test patch</desc>
            <filename>launcher-inspector.diff</filename>
            <type>text/plain</type>
            <size>4697</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYyBiL1dlYktpdFRvb2xz
L0d0a0xhdW5jaGVyL21haW4uYwppbmRleCA4ZWQyNjkwLi5mZjY5M2QyIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMKKysrIGIvV2ViS2l0VG9vbHMvR3RrTGF1bmNo
ZXIvbWFpbi5jCkBAIC0zNCw2ICszNCw3IEBAIHN0YXRpYyBXZWJLaXRXZWJWaWV3KiB3ZWJfdmll
dzsKIHN0YXRpYyBnY2hhciogbWFpbl90aXRsZTsKIHN0YXRpYyBnaW50IGxvYWRfcHJvZ3Jlc3M7
CiBzdGF0aWMgZ3VpbnQgc3RhdHVzX2NvbnRleHRfaWQ7CitzdGF0aWMgR3RrV2lkZ2V0KiBpbnNw
ZWN0b3Jfd2luZG93OwogCiBzdGF0aWMgdm9pZAogYWN0aXZhdGVfdXJpX2VudHJ5X2NiIChHdGtX
aWRnZXQqIGVudHJ5LCBncG9pbnRlciBkYXRhKQpAQCAtODksNiArOTAsODEgQEAgbG9hZF9jb21t
aXRfY2IgKFdlYktpdFdlYlZpZXcqIHBhZ2UsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgZ3BvaW50
ZXIgZGF0YSkKIH0KIAogc3RhdGljIHZvaWQKK2hpZGVfd2luZG93X2NiKEd0a1dpZGdldCAqd2lk
Z2V0LCBncG9pbnRlciBkYXRhKQoreworICAgIGd0a193aWRnZXRfaGlkZSh3aWRnZXQpOworfQor
CitzdGF0aWMgV2ViS2l0V2ViVmlldyoKK2NyZWF0ZV9pbnNwZWN0b3JfY2IgKFdlYktpdFdlYklu
c3BlY3Rvciogd2ViX2luc3BlY3RvciwgV2ViS2l0V2ViVmlldyogcGFnZSwgZ3BvaW50ZXIgZGF0
YSkKK3sKKyAgICBHdGtXaWRnZXQqIHNjcm9sbGVkX3dpbmRvdzsKKyAgICBHdGtXaWRnZXQqIG5l
d193ZWJfdmlldzsKKworICAgIGluc3BlY3Rvcl93aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtf
V0lORE9XX1RPUExFVkVMKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKGluc3BlY3Rv
cl93aW5kb3cpLCAiZGVsZXRlLWV2ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJB
Q0soaGlkZV93aW5kb3dfY2IpLCBOVUxMKTsKKworICAgIGd0a193aW5kb3dfc2V0X3RpdGxlKEdU
S19XSU5ET1coaW5zcGVjdG9yX3dpbmRvdyksICJJbnNwZWN0b3IiKTsKKyAgICBndGtfd2luZG93
X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyhpbnNwZWN0b3Jfd2luZG93KSwgNDAwLCAzMDAp
OworICAgIGd0a193aWRnZXRfc2hvdyhpbnNwZWN0b3Jfd2luZG93KTsKKworICAgIHNjcm9sbGVk
X3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpOworICAgIGd0a19z
Y3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dp
bmRvdyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19QT0xJQ1lfQVVU
T01BVElDLCBHVEtfUE9MSUNZX0FVVE9NQVRJQyk7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RL
X0NPTlRBSU5FUihpbnNwZWN0b3Jfd2luZG93KSwgc2Nyb2xsZWRfd2luZG93KTsKKyAgICBndGtf
d2lkZ2V0X3Nob3coc2Nyb2xsZWRfd2luZG93KTsKKworICAgIG5ld193ZWJfdmlldyA9IHdlYmtp
dF93ZWJfdmlld19uZXcoKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHNj
cm9sbGVkX3dpbmRvdyksIG5ld193ZWJfdmlldyk7CisKKyAgICByZXR1cm4gV0VCS0lUX1dFQl9W
SUVXKG5ld193ZWJfdmlldyk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgoraW5zcGVjdG9yX3Nob3df
d2luZG93X2NiIChXZWJLaXRXZWJJbnNwZWN0b3IqIGluc3BlY3RvcikKK3sKKyAgICBndGtfd2lk
Z2V0X3Nob3coaW5zcGVjdG9yX3dpbmRvdyk7CisgICAgZ19tZXNzYWdlKCJzaG93X3dpbmRvdzog
JXAiLCBpbnNwZWN0b3IpOworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4K
K2luc3BlY3Rvcl9jbG9zZV93aW5kb3dfY2IgKFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9y
KQoreworICAgIGdfbWVzc2FnZSgiY2xvc2Vfd2luZG93Iik7CisgICAgcmV0dXJuIFRSVUU7Cit9
CisKK3N0YXRpYyBnYm9vbGVhbgoraW5zcGVjdG9yX2F0dGFjaF93aW5kb3dfY2IgKFdlYktpdFdl
Ykluc3BlY3RvciogaW5zcGVjdG9yKQoreworICAgIGdfbWVzc2FnZSgiYXR0YWNoX3dpbmRvdyIp
OworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuCitpbnNwZWN0b3JfZGV0
dGFjaF93aW5kb3dfY2IgKFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9yKQoreworICAgIGdf
bWVzc2FnZSgiZGV0dGFjaF93aW5kb3ciKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRp
YyBnYm9vbGVhbgoraW5zcGVjdG9yX3VyaV9jaGFuZ2VkX2NiIChXZWJLaXRXZWJJbnNwZWN0b3Iq
IGluc3BlY3RvcikKK3sKKyAgICBnX21lc3NhZ2UoInVyaV9jaGFuZ2VkOiAlcyIsIHdlYmtpdF93
ZWJfaW5zcGVjdG9yX2dldF9pbnNwZWN0ZWRfdXJpKGluc3BlY3RvcikpOworICAgIHJldHVybiBG
QUxTRTsKK30KKworc3RhdGljIGdib29sZWFuCitpbnNwZWN0b3JfaW5zcGVjdG9yX2Rlc3Ryb3ll
ZF9jYiAoV2ViS2l0V2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IpCit7CisgICAgZ19tZXNzYWdlKCJp
bnNwZWN0b3JfZGVzdHJveWVkIik7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9p
ZAogZGVzdHJveV9jYiAoR3RrV2lkZ2V0KiB3aWRnZXQsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAg
Z3RrX21haW5fcXVpdCAoKTsKQEAgLTEwOSwxNyArMTg1LDMzIEBAIGdvX2ZvcndhcmRfY2IgKEd0
a1dpZGdldCogd2lkZ2V0LCBncG9pbnRlciBkYXRhKQogc3RhdGljIEd0a1dpZGdldCoKIGNyZWF0
ZV9icm93c2VyICgpCiB7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0
X3dlYl9zZXR0aW5nc19uZXcoKTsKKyAgICBXZWJLaXRXZWJJbnNwZWN0b3IgKmluc3BlY3RvcjsK
KwogICAgIEd0a1dpZGdldCogc2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19u
ZXcgKE5VTEwsIE5VTEwpOwogICAgIGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeSAoR1RL
X1NDUk9MTEVEX1dJTkRPVyAoc2Nyb2xsZWRfd2luZG93KSwgR1RLX1BPTElDWV9BVVRPTUFUSUMs
IEdUS19QT0xJQ1lfQVVUT01BVElDKTsKIAogICAgIHdlYl92aWV3ID0gV0VCS0lUX1dFQl9WSUVX
ICh3ZWJraXRfd2ViX3ZpZXdfbmV3ICgpKTsKICAgICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NP
TlRBSU5FUiAoc2Nyb2xsZWRfd2luZG93KSwgR1RLX1dJREdFVCAod2ViX3ZpZXcpKTsKIAorICAg
IGdfb2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtZGV2ZWxvcGVyLWV4dHJh
cyIsIFRSVUUsIE5VTEwpOworICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV0VCS0lU
X1dFQl9WSUVXKHdlYl92aWV3KSwgc2V0dGluZ3MpOworCiAgICAgZ19zaWduYWxfY29ubmVjdCAo
R19PQkpFQ1QgKHdlYl92aWV3KSwgInRpdGxlLWNoYW5nZWQiLCBHX0NBTExCQUNLICh0aXRsZV9j
aGFuZ2VfY2IpLCB3ZWJfdmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKHdl
Yl92aWV3KSwgImxvYWQtcHJvZ3Jlc3MtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sgKHByb2dyZXNzX2No
YW5nZV9jYiksIHdlYl92aWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAod2Vi
X3ZpZXcpLCAibG9hZC1jb21taXR0ZWQiLCBHX0NBTExCQUNLIChsb2FkX2NvbW1pdF9jYiksIHdl
Yl92aWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAod2ViX3ZpZXcpLCAiaG92
ZXJpbmctb3Zlci1saW5rIiwgR19DQUxMQkFDSyAobGlua19ob3Zlcl9jYiksIHdlYl92aWV3KTsK
IAorICAgIGluc3BlY3RvciA9IHdlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVjdG9yKHdlYl92aWV3
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoaW5zcGVjdG9yKSwgImluc3BlY3Qt
d2ViLXZpZXciLCBHX0NBTExCQUNLIChjcmVhdGVfaW5zcGVjdG9yX2NiKSwgTlVMTCk7CisgICAg
Z19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGluc3BlY3RvciksICJzaG93LXdpbmRvdyIsIEdf
Q0FMTEJBQ0sgKGluc3BlY3Rvcl9zaG93X3dpbmRvd19jYiksIE5VTEwpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3QgKEdfT0JKRUNUIChpbnNwZWN0b3IpLCAiY2xvc2Utd2luZG93IiwgR19DQUxMQkFD
SyAoaW5zcGVjdG9yX2Nsb3NlX3dpbmRvd19jYiksIE5VTEwpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3QgKEdfT0JKRUNUIChpbnNwZWN0b3IpLCAiYXR0YWNoLXdpbmRvdyIsIEdfQ0FMTEJBQ0sgKGlu
c3BlY3Rvcl9hdHRhY2hfd2luZG93X2NiKSwgTlVMTCk7CisgICAgZ19zaWduYWxfY29ubmVjdCAo
R19PQkpFQ1QgKGluc3BlY3RvciksICJkZXR0YWNoLXdpbmRvdyIsIEdfQ0FMTEJBQ0sgKGluc3Bl
Y3Rvcl9kZXR0YWNoX3dpbmRvd19jYiksIE5VTEwpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdf
T0JKRUNUIChpbnNwZWN0b3IpLCAiaW5zcGVjdG9yLWRlc3Ryb3llZCIsIEdfQ0FMTEJBQ0sgKGlu
c3BlY3Rvcl9pbnNwZWN0b3JfZGVzdHJveWVkX2NiKSwgTlVMTCk7CisKKyAgICBnX3NpZ25hbF9j
b25uZWN0IChHX09CSkVDVCAoaW5zcGVjdG9yKSwgIm5vdGlmeTo6aW5zcGVjdGVkLXVyaSIsIEdf
Q0FMTEJBQ0sgKGluc3BlY3Rvcl91cmlfY2hhbmdlZF9jYiksIE5VTEwpOworCiAgICAgcmV0dXJu
IHNjcm9sbGVkX3dpbmRvdzsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22364</attachid>
            <date>2008-07-18 08:38:26 -0700</date>
            <delta_ts>2008-08-26 19:41:34 -0700</delta_ts>
            <desc>proposed patch (forgot a commit on the other)</desc>
            <filename>inspector.diff</filename>
            <type>text/plain</type>
            <size>44013</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5NDA4ZGViLi4zYWU4NDQ2
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMDgtMDctMTUgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYWxsIHRo
ZSBmaWxlcyB0aGF0IG5lZWQgdG8gYmUgaW5zdGFsbGVkIGZvciB0aGUgSW5zcGVjdG9yIHRvCisg
ICAgICAgIHdvcmsuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAwOC0wNi0xOCAg
TWFyY28gQmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbHAgVG9rZXIuCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBi
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGE2YWUyOTkuLmMxODA2NzAgMTAwNjQ0Ci0tLSBhL0dOVW1h
a2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0zMTYsNiArMzE2LDcgQEAgd2Via2l0
Z3RrX2hfYXBpICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxp
c3QuaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaCBcCiAJV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2ViaW5zcGVjdG9yLmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdz
LmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAogCkBAIC0zNDIsNiArMzQz
LDcgQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YmJhY2tmb3J3YXJkbGlzdC5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1l
LmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwIFwKKwlX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwIFwKIAlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KaW5kZXggZjAwMWRhNy4uYzE1ZjhhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yMjU2LDYgKzIyNTYs
MTUwIEBAIERlcml2ZWRTb3VyY2VzL0pTJS5oOiBEZXJpdmVkU291cmNlcy9KUyUuY3BwOwogRGVy
aXZlZFNvdXJjZXMvSlMlLmNwcDogJS5pZGwgJChTQ1JJUFRTX0JJTkRJTkdTKSAkKFdlYkNvcmUp
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCiAJJChQRVJMKSAtSSQoV2ViQ29y
ZSkvYmluZGluZ3Mvc2NyaXB0cyAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUt
YmluZGluZ3MucGwgLS1pbmNsdWRlICQoV2ViQ29yZSkvZG9tIC0taW5jbHVkZSAkKFdlYkNvcmUp
L2h0bWwgLS1pbmNsdWRlICQoV2ViQ29yZSkvY3NzIC0taW5jbHVkZSAkKFdlYkNvcmUpL3BhZ2Ug
LS1pbmNsdWRlICQoV2ViQ29yZSkveG1sIC0taW5jbHVkZSAkKFdlYkNvcmUpL3N2ZyAtLW91dHB1
dGRpciAkKEdFTlNPVVJDRVMpIC0tZGVmaW5lcyAiJChGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQ
VCkiIC0tZ2VuZXJhdG9yIEpTICQ8CiAKKyMgSW5zdGFsbGluZyB3ZWIgaW5zcGVjdG9yIGZpbGVz
Cit3ZWJjb3JlX2NwcGZsYWdzICs9IC1EREFUQV9ESVI9XCIke2RhdGFkaXJ9XCIKKword2ViaW5z
cGVjdG9yZGlyID0gJHtkYXRhZGlyfS93ZWJraXQtMS4wL3dlYmluc3BlY3RvcgorZGlzdF93ZWJp
bnNwZWN0b3JfREFUQSA9IFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9CcmVh
a3BvaW50LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9CcmVha3BvaW50
c1NpZGViYXJQYW5lLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9DYWxs
U3RhY2tTaWRlYmFyUGFuZS5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3Iv
Q29uc29sZS5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvRGF0YWJhc2Uu
anMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0RhdGFiYXNlUXVlcnlWaWV3
LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9EYXRhYmFzZXNQYW5lbC5q
cyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvRGF0YWJhc2VUYWJsZVZpZXcu
anMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0RhdGFHcmlkLmpzIFwKKyAg
ICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9FbGVtZW50c1BhbmVsLmpzIFwKKyAgICAg
ICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9Gb250Vmlldy5qcyBcCisgICAgICAgICQoV2Vi
Q29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VWaWV3LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9w
YWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuY3NzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2lu
c3BlY3Rvci9pbnNwZWN0b3IuaHRtbCBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0
b3IvaW5zcGVjdG9yLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9NZXRy
aWNzU2lkZWJhclBhbmUuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL09i
amVjdC5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvT2JqZWN0UHJvcGVy
dGllc1NlY3Rpb24uanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1BhbmVs
LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9QbGFjYXJkLmpzIFwKKyAg
ICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9Qcm9maWxlc1BhbmVsLmpzIFwKKyAgICAg
ICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9Qcm9maWxlVmlldy5qcyBcCisgICAgICAgICQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvUHJvcGVydGllc1NlY3Rpb24uanMgXAorICAgICAgICAk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1Byb3BlcnRpZXNTaWRlYmFyUGFuZS5qcyBcCisgICAg
ICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2VDYXRlZ29yeS5qcyBcCisgICAg
ICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2UuanMgXAorICAgICAgICAkKFdl
YkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1Jlc291cmNlc1BhbmVsLmpzIFwKKyAgICAgICAgJChXZWJD
b3JlKS9wYWdlL2luc3BlY3Rvci9SZXNvdXJjZVZpZXcuanMgXAorICAgICAgICAkKFdlYkNvcmUp
L3BhZ2UvaW5zcGVjdG9yL1Njb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcyBcCisgICAgICAgICQoV2Vi
Q29yZSkvcGFnZS9pbnNwZWN0b3IvU2NyaXB0LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9TY3JpcHRzUGFuZWwuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5z
cGVjdG9yL1NjcmlwdFZpZXcuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9y
L1NpZGViYXJQYW5lLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9TaWRl
YmFyVHJlZUVsZW1lbnQuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1Nv
dXJjZUZyYW1lLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9Tb3VyY2VW
aWV3LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9TdHlsZXNTaWRlYmFy
UGFuZS5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvVGV4dFByb21wdC5q
cyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvdHJlZW91dGxpbmUuanMgXAor
ICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL3V0aWxpdGllcy5qcyBcCisgICAgICAg
ICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvVmlldy5qcworCit3ZWJpbnNwZWN0b3JpbWFnZXNk
aXIgPSAke2RhdGFkaXJ9L3dlYmtpdC0xLjAvd2ViaW5zcGVjdG9yL0ltYWdlcworZGlzdF93ZWJp
bnNwZWN0b3JpbWFnZXNfREFUQSA9IFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdl
cy9iYWNrLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvY2hlY2tlci5w
bmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2NsZWFyQ29uc29sZUJ1dHRv
bnMucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9jb25zb2xlQnV0dG9u
cy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2RhdGFiYXNlLnBuZyBc
CisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGF0YWJhc2VzSWNvbi5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2RhdGFiYXNlVGFibGUucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kZWJ1Z2dlckNvbnRpbnVlLnBuZyBcCisJ
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGVidWdnZXJQYXVzZS5wbmcgXAorCSQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2RlYnVnZ2VyU3RlcEludG8ucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kZWJ1Z2dlclN0ZXBPdXQucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kZWJ1Z2dlclN0ZXBPdmVyLnBuZyBcCisJ
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGVidWdnaW5nQnV0dG9ucy5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2Rpc2Nsb3N1cmVUcmlhbmdsZVNtYWxs
RG93bkJsYWNrLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGlzY2xv
c3VyZVRyaWFuZ2xlU21hbGxEb3duLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvZGlzY2xvc3VyZVRyaWFuZ2xlU21hbGxEb3duV2hpdGUucG5nIFwKKwkkKFdlYkNvcmUp
L3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kaXNjbG9zdXJlVHJpYW5nbGVTbWFsbFJpZ2h0QmxhY2su
cG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kaXNjbG9zdXJlVHJpYW5n
bGVTbWFsbFJpZ2h0RG93bkJsYWNrLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvZGlzY2xvc3VyZVRyaWFuZ2xlU21hbGxSaWdodERvd24ucG5nIFwKKwkkKFdlYkNvcmUp
L3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kaXNjbG9zdXJlVHJpYW5nbGVTbWFsbFJpZ2h0RG93bldo
aXRlLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGlzY2xvc3VyZVRy
aWFuZ2xlU21hbGxSaWdodC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2Vz
L2Rpc2Nsb3N1cmVUcmlhbmdsZVNtYWxsUmlnaHRXaGl0ZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFn
ZS9pbnNwZWN0b3IvSW1hZ2VzL2RvY2tCdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2lu
c3BlY3Rvci9JbWFnZXMvZWxlbWVudHNJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3Bl
Y3Rvci9JbWFnZXMvZXJyb3JJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvZXJyb3JNZWRpdW1JY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvZXhjbHVkZUJ1dHRvbnMucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0lt
YWdlcy9mb2N1c0J1dHRvbnMucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdl
cy9mb3J3YXJkLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZ2xvc3N5
SGVhZGVyLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZ2xvc3N5SGVh
ZGVyUHJlc3NlZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2dsb3Nz
eUhlYWRlclNlbGVjdGVkLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMv
Z2xvc3N5SGVhZGVyU2VsZWN0ZWRQcmVzc2VkLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3Bl
Y3Rvci9JbWFnZXMvZ29BcnJvdy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1h
Z2VzL2xhcmdlclJlc291cmNlc0J1dHRvbnMucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVj
dG9yL0ltYWdlcy9wYW5lQm90dG9tR3Jvd0FjdGl2ZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL3BhbmVCb3R0b21Hcm93LnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2lu
c3BlY3Rvci9JbWFnZXMvcGFuZUdyb3dIYW5kbGVMaW5lLnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvcGF1c2VPbkV4Y2VwdGlvbkJ1dHRvbnMucG5nIFwKKwkkKFdlYkNv
cmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9wZXJjZW50QnV0dG9ucy5wbmcgXAorCSQoV2ViQ29y
ZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Byb2ZpbGVHcm91cEljb24ucG5nIFwKKwkkKFdlYkNv
cmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9wcm9maWxlSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkv
cGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Byb2ZpbGVzSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFn
ZS9pbnNwZWN0b3IvSW1hZ2VzL3Byb2ZpbGVTbWFsbEljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9yZWNvcmRCdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvcmVsb2FkQnV0dG9ucy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL3Jlc291cmNlQ1NTSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL3Jlc291cmNlRG9jdW1lbnRJY29uLnBuZyBcCisJJChXZWJDb3JlKS9w
YWdlL2luc3BlY3Rvci9JbWFnZXMvcmVzb3VyY2VEb2N1bWVudEljb25TbWFsbC5wbmcgXAorCSQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Jlc291cmNlSlNJY29uLnBuZyBcCisJJChX
ZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcmVzb3VyY2VQbGFpbkljb24ucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9yZXNvdXJjZVBsYWluSWNvblNtYWxsLnBu
ZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcmVzb3VyY2VzSWNvbi5wbmcg
XAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Jlc291cmNlc1NpemVHcmFwaElj
b24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9yZXNvdXJjZXNUaW1l
R3JhcGhJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc2NyaXB0
c0ljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9zZWdtZW50RW5k
LnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc2VnbWVudEhvdmVyRW5k
LnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc2VnbWVudEhvdmVyLnBu
ZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc2VnbWVudC5wbmcgXAorCSQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NlZ21lbnRTZWxlY3RlZEVuZC5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NlZ21lbnRTZWxlY3RlZC5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NwbGl0dmlld0RpbXBsZS5wbmcgXAor
CSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3NwbGl0dmlld0RpdmlkZXJCYWNrZ3Jv
dW5kLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc3RhdHVzYmFyQmFj
a2dyb3VuZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3N0YXR1c2Jh
ckJvdHRvbUJhY2tncm91bmQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdl
cy9zdGF0dXNiYXJCdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFn
ZXMvc3RhdHVzYmFyTWVudUJ1dHRvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3Iv
SW1hZ2VzL3N0YXR1c2Jhck1lbnVCdXR0b25TZWxlY3RlZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFn
ZS9pbnNwZWN0b3IvSW1hZ2VzL3N0YXR1c2JhclJlc2l6ZXJIb3Jpem9udGFsLnBuZyBcCisJJChX
ZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc3RhdHVzYmFyUmVzaXplclZlcnRpY2FsLnBu
ZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvdGltZWxpbmVQaWxsQmx1ZS5w
bmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpbWVsaW5lUGlsbEdyYXku
cG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aW1lbGluZVBpbGxHcmVl
bi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpbWVsaW5lUGlsbE9y
YW5nZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpbWVsaW5lUGls
bFB1cnBsZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpbWVsaW5l
UGlsbFJlZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpbWVsaW5l
UGlsbFllbGxvdy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpcEJh
bGxvb25Cb3R0b20ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90aXBC
YWxsb29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvdGlwSWNvbi5w
bmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpcEljb25QcmVzc2VkLnBu
ZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvdG9vbGJhckl0ZW1TZWxlY3Rl
ZC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RyZWVEb3duVHJpYW5n
bGVCbGFjay5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RyZWVEb3du
VHJpYW5nbGVXaGl0ZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Ry
ZWVSaWdodFRyaWFuZ2xlQmxhY2sucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0lt
YWdlcy90cmVlUmlnaHRUcmlhbmdsZVdoaXRlLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3Bl
Y3Rvci9JbWFnZXMvdHJlZVVwVHJpYW5nbGVCbGFjay5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL3RyZWVVcFRyaWFuZ2xlV2hpdGUucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy91c2VySW5wdXRJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvdXNlcklucHV0UHJldmlvdXNJY29uLnBuZyBcCisJJChXZWJDb3Jl
KS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvd2FybmluZ0ljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy93YXJuaW5nTWVkaXVtSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkv
cGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3dhcm5pbmdzRXJyb3JzLnBuZworCiAjIENsZWFuIHJ1bGVz
IGZvciBXZWJDb3JlCiAKIENMRUFORklMRVMgKz0gXApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA4NDE0MzExLi4wNTQ3ODJhIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ0IEBACisyMDA4LTA3LTE1ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxn
bnNAZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJ
SW1wbGVtZW50ZWQgYSBuZXcgV2ViS2l0V2ViSW5zcGVjdG9yIGNsYXNzIHRvIHByb3ZpZGUgYSBH
T2JqZWN0CisJQVBJIGZvciB0aGUgV2ViIEluc3BlY3Rvci4gQWxzbyBpbXBsZW1lbnRlZCBJbnNw
ZWN0b3JDbGllbnQuCisJCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bm90aWZ5V2ViVmlld0Rlc3Ryb3llZCk6CisgICAg
ICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6SW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQpOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OndlYlZpZXdEZXN0cm95ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpJbnNw
ZWN0b3JDbGllbnQ6OnNob3dXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGll
bnQ6OmNsb3NlV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjphdHRh
Y2hXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OmRldGFjaFdpbmRv
dyk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkVVJMQ2hhbmdl
ZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdC5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXQtbWFyc2hhbC5s
aXN0OgorICAgICAgICAqIHdlYmtpdC93ZWJraXRkZWZpbmVzLmg6CisgICAgICAgICogd2Via2l0
L3dlYmtpdHByaXZhdGUuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNw
cDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZTo6d2Via2l0X2lu
c3BlY3Rfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkKToKKyAgICAgICAgKF9XZWJLaXRXZWJJbnNw
ZWN0b3JQcml2YXRlOjp3ZWJraXRfd2ViX2luc3BlY3Rvcl9jbGFzc19pbml0KToKKyAgICAgICAg
KF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlOjp3ZWJraXRfd2ViX2luc3BlY3Rvcl9pbml0KToK
KyAgICAgICAgKF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlOjp3ZWJraXRfd2ViX2luc3BlY3Rv
cl9maW5hbGl6ZSk6CisgICAgICAgIChfV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZTo6d2Via2l0
X3dlYl9pbnNwZWN0b3Jfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJJbnNwZWN0
b3JQcml2YXRlOjp3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfcHJvcGVydHkpOgorICAgICAgICAo
X1dlYktpdFdlYkluc3BlY3RvclByaXZhdGU6OndlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF93ZWJf
dmlldyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoX1dlYktpdFdl
YlNldHRpbmdzUHJpdmF0ZTo6KToKKyAgICAgICAgKF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6
OndlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlOjp3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0eSk6CisgICAgICAg
IChfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOjp3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9w
ZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOjp3ZWJraXRfd2ViX3Nl
dHRpbmdzX2NvcHkpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorCiAyMDA4LTA3LTA4ICBKYW4gTWljaGFlbCBB
bG9uem8gIDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlz
dGlhbiBEeXdhbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50R3RrLmNwcAppbmRleCBhNTRiNmEwLi45NzdkN2Y3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCkBAIC0xLDQgKzEsNiBAQAogLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEKKyAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKICAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKQEAgLTE3LDYgKzE5LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50R3RrLmgiCiAKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ2
aWV3LmgiCisjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCisjaW5jbHVkZSAid2Via2l0
cHJpdmF0ZS5oIgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogCkBAIC0yNCwxNSArMzEsNzAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgdm9pZCBub3RpZnlXZWJWaWV3RGVzdHJv
eWVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xp
ZW50KQoreworICAgIGluc3BlY3RvckNsaWVudC0+d2ViVmlld0Rlc3Ryb3llZCgpOworfQorCitJ
bnNwZWN0b3JDbGllbnQ6Okluc3BlY3RvckNsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQor
ICAgIDogbV93ZWJWaWV3KDApCisgICAgLCBtX2luc3BlY3RlZFdlYlZpZXcod2ViVmlldykKK3t9
CisKIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogeworICAgIGlm
IChtX3dlYlZpZXcpIHsKKyAgICAgICAgZ2Jvb2xlYW4gaGFuZGxlZCA9IEZBTFNFOworICAgICAg
ICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJJbnNwZWN0b3IsICJkZXN0cm95IiwgJmhhbmRs
ZWQpOworCisgICAgICAgIC8qIHdlIGNhbiBub3cgZGlzcG9zZSBvdXIgb3duIHJlZmVyZW5jZSAq
LworICAgICAgICBnX29iamVjdF91bnJlZihtX3dlYkluc3BlY3Rvcik7CisgICAgfQorCiAgICAg
ZGVsZXRlIHRoaXM7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50Ojp3ZWJWaWV3RGVzdHJveWVk
KCkKK3sKKyAgICBtX3dlYlZpZXcgPSAwOworICAgIGNvcmUobV9pbnNwZWN0ZWRXZWJWaWV3KS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5wYWdlRGVzdHJveWVkKCk7CisKKyAgICAvKiBjcmVhdGVQ
YWdlIHdpbGwgYmUgY2FsbGVkIGFnYWluLCBpZiB0aGUgdXNlciBjaG9vc2VzIHRvIGluc3BlY3QK
KyAgICAgKiBzb21ldGhpbmcgZWxzZSwgYW5kIHRoZSBpbnNwZWN0b3Igd2lsbCBiZSByZWZlcmVu
Y2VkIGFnYWluLAorICAgICAqIHRoZXJlICovCisgICAgZ19vYmplY3RfdW5yZWYobV93ZWJJbnNw
ZWN0b3IpOworfQorCiBQYWdlKiBJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZVBhZ2UoKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKG1fd2ViVmlldykKKyAg
ICAgIHJldHVybiBjb3JlKG1fd2ViVmlldyk7CisKKyAgICAvKiBUaGlzIGdfb2JqZWN0X2dldCB3
aWxsIHJlZiB0aGUgaW5zcGVjdG9yLiBXZSdyZSBub3QgZG9pbmcgYW4KKyAgICAgICB1bnJlZiBp
ZiB0aGlzIG1ldGhvZCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBpbnNwZWN0b3Igb2JqZWN0IG11c3QK
KyAgICAgICBiZSBhbGl2ZSBldmVuIGFmdGVyIHRoZSBpbnNwZWN0ZWQgV2ViVmlldyBpcyBkZXN0
cm95ZWQgLSB0aGUKKyAgICAgICBjbG9zZS13aW5kb3cgYW5kIGRlc3Ryb3kgc2lnbmFscyBzdGls
bCBuZWVkIHRvIGJlCisgICAgICAgZW1pdHRlZC4gKi8KKyAgICBXZWJLaXRXZWJJbnNwZWN0b3Iq
IHdlYkluc3BlY3RvcjsKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1QobV9pbnNwZWN0ZWRXZWJW
aWV3KSwgIndlYi1pbnNwZWN0b3IiLCAmd2ViSW5zcGVjdG9yLCBOVUxMKTsKKyAgICBtX3dlYklu
c3BlY3RvciA9IHdlYkluc3BlY3RvcjsKKworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dl
Ykluc3BlY3RvciwgImluc3BlY3Qtd2ViLXZpZXciLCBtX2luc3BlY3RlZFdlYlZpZXcsICZtX3dl
YlZpZXcpOworCisgICAgaWYgKCFtX3dlYlZpZXcpIHsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYo
bV93ZWJJbnNwZWN0b3IpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB3ZWJraXRf
d2ViX2luc3BlY3Rvcl9zZXRfd2ViX3ZpZXcobV93ZWJJbnNwZWN0b3IsIG1fd2ViVmlldyk7CisK
KyAgICBnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKG1fd2ViVmlldyksICJkZXN0cm95IiwKKyAg
ICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sobm90aWZ5V2ViVmlld0Rlc3Ryb3llZCksIChn
cG9pbnRlcil0aGlzKTsKKworICAgIHdlYmtpdF93ZWJfdmlld19vcGVuKG1fd2ViVmlldywgImZp
bGU6Ly8iREFUQV9ESVIiL3dlYmtpdC0xLjAvd2ViaW5zcGVjdG9yL2luc3BlY3Rvci5odG1sIik7
CisgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisKKyAgICByZXR1
cm4gY29yZShtX3dlYlZpZXcpOwogfQogCiBTdHJpbmcgSW5zcGVjdG9yQ2xpZW50Ojpsb2NhbGl6
ZWRTdHJpbmdzVVJMKCkKQEAgLTQzLDIyICsxMDUsNDIgQEAgU3RyaW5nIEluc3BlY3RvckNsaWVu
dDo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjpzaG93V2lu
ZG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQorICAg
ICAgICByZXR1cm47CisKKyAgICBnYm9vbGVhbiBoYW5kbGVkID0gRkFMU0U7CisgICAgZ19zaWdu
YWxfZW1pdF9ieV9uYW1lKG1fd2ViSW5zcGVjdG9yLCAic2hvdy13aW5kb3ciLCAmaGFuZGxlZCk7
CisKKyAgICBjb3JlKG1faW5zcGVjdGVkV2ViVmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
c2V0V2luZG93VmlzaWJsZSh0cnVlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnQ6OmNsb3Nl
V2luZG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJWaWV3KQor
ICAgICAgICByZXR1cm47CisKKyAgICBnYm9vbGVhbiBoYW5kbGVkID0gRkFMU0U7CisgICAgZ19z
aWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViSW5zcGVjdG9yLCAiY2xvc2Utd2luZG93IiwgJmhhbmRs
ZWQpOworICAgIAorICAgIGNvcmUobV9pbnNwZWN0ZWRXZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5zZXRXaW5kb3dWaXNpYmxlKGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGll
bnQ6OmF0dGFjaFdpbmRvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1f
d2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2Jvb2xlYW4gaGFuZGxlZCA9IEZBTFNF
OworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYkluc3BlY3RvciwgImF0dGFjaC13aW5k
b3ciLCAmaGFuZGxlZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjpkZXRhY2hXaW5kb3co
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAg
IHJldHVybjsKKworICAgIGdib29sZWFuIGhhbmRsZWQgPSBGQUxTRTsKKyAgICBnX3NpZ25hbF9l
bWl0X2J5X25hbWUobV93ZWJJbnNwZWN0b3IsICJkZXR0YWNoLXdpbmRvdyIsICZoYW5kbGVkKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodChOb2RlKiBub2RlKQpAQCAtNzEs
OSArMTUzLDEyIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjpoaWRlSGlnaGxpZ2h0KCkKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNsaWVudDo6aW5zcGVjdGVkVVJM
Q2hhbmdlZChjb25zdCBTdHJpbmcmKQordm9pZCBJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RlZFVS
TENoYW5nZWQoY29uc3QgU3RyaW5nJiBuZXdVUkwpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19vYmplY3Rfc2V0
KG1fd2ViSW5zcGVjdG9yLCAiaW5zcGVjdGVkLXVyaSIsIG5ld1VSTC51dGY4KCkuZGF0YSgpLCBO
VUxMKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50R3RrLmgKaW5kZXggOWFmZDQyYi4uZDVjYWNmNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCkBAIC0zMCw2ICszMCw4IEBACiAjZGVmaW5l
IEluc3BlY3RvckNsaWVudEd0a19oCiAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKKyNp
bmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlOwpAQCAtNDEsNyArNDMsMTAg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKICAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnQgOiBwdWJs
aWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50IHsKICAgICBwdWJsaWM6CisgICAgICAgIEluc3Bl
Y3RvckNsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KTsKKwogICAgICAgICB2aXJ0dWFsIHZv
aWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CisgICAgICAgIHZvaWQgd2ViVmlld0Rlc3Ryb3llZCgp
OwogCiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlUGFnZSgpOwogCkBAIC01
Niw2ICs2MSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGhp
Z2hsaWdodChXZWJDb3JlOjpOb2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxp
Z2h0KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYgbmV3VVJMKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYktpdFdl
YlZpZXcqIG1fd2ViVmlldzsKKyAgICAgICAgV2ViS2l0V2ViVmlldyogbV9pbnNwZWN0ZWRXZWJW
aWV3OworICAgICAgICBXZWJLaXRXZWJJbnNwZWN0b3IqIG1fd2ViSW5zcGVjdG9yOwogICAgIH07
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3Qg
Yi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQtbWFyc2hhbC5saXN0CmluZGV4IGE4ZjI0NTMuLjZi
M2I3NmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3QK
KysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LW1hcnNoYWwubGlzdApAQCAtNiw3ICs2LDEw
IEBAIFZPSUQ6T0JKRUNULFNUUklORwogVk9JRDpPQkpFQ1QsT0JKRUNUCiBWT0lEOk9CSkVDVCxQ
T0lOVEVSLFBPSU5URVIKIEJPT0xFQU46U1RSSU5HLElOVCxTVFJJTkcKK0JPT0xFQU46Vk9JRAor
Qk9PTEVBTjpTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNUUklORwogQk9PTEVBTjpPQkpFQ1QsU1RS
SU5HLEJPT0xFQU4KIEJPT0xFQU46T0JKRUNULFNUUklORyxTVFJJTkcsU1RSSU5HCiBJTlQ6T0JK
RUNULE9CSkVDVAorT0JKRUNUOk9CSkVDVApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAppbmRleCAxMGMyMTRmLi5lMTlj
YmM3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAorKysgYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXQuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXRuZXR3b3JrcmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5o
PgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXR3ZWJpbnNwZWN0b3IuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5o
PgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaD4KICNpbmNsdWRl
IDx3ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaD4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGRlZmluZXMuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMu
aAppbmRleCAzODZjM2UxLi4wYzA4MGY0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRkZWZpbmVzLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oCkBA
IC01NSw2ICs1NSw5IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJGcmFtZUNsYXNzIFdlYktp
dFdlYkZyYW1lQ2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3MgV2ViS2l0
V2ViU2V0dGluZ3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyBXZWJL
aXRXZWJTZXR0aW5nc0NsYXNzOwogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViSW5zcGVjdG9y
IFdlYktpdFdlYkluc3BlY3RvcjsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJJbnNwZWN0b3JD
bGFzcyBXZWJLaXRXZWJJbnNwZWN0b3JDbGFzczsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YlZpZXcgV2ViS2l0V2ViVmlldzsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3Mg
V2ViS2l0V2ViVmlld0NsYXNzOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5kZXggZWQ4
MWExYy4uODAyY2RiMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50R3RrLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXJDbGllbnQuaCIKIAogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTY3LDYgKzY4LDcgQEAg
ZXh0ZXJuICJDIiB7CiAgICAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgICAg
IFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlOwogICAgICAgICBXZWJLaXRXZWJTZXR0aW5ncyogd2Vi
U2V0dGluZ3M7CisgICAgICAgIFdlYktpdFdlYkluc3BlY3Rvciogd2ViSW5zcGVjdG9yOwogCiAg
ICAgICAgIFdlYktpdFdlYkZyYW1lKiBtYWluRnJhbWU7CiAgICAgICAgIFdlYkNvcmU6OlN0cmlu
ZyBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ7CkBAIC0xMTAsNiArMTEyLDE1IEBAIGV4dGVy
biAiQyIgewogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKgogICAgIHdlYmtpdF93ZWJfaGlzdG9y
eV9pdGVtX25ld193aXRoX2NvcmVfaXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOwogCisgICAg
dm9pZAorICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNwZWN0b3JfY2xpZW50KFdlYktp
dFdlYkluc3BlY3RvciosIFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50Kik7CisKKyAgICB2b2lkCisg
ICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3dlYl92aWV3KFdlYktpdFdlYkluc3BlY3RvciAq
d2ViX2luc3BlY3RvciwgV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXcpOworCisgICAgdm9pZAorICAg
IHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNwZWN0ZWRfdXJpKFdlYktpdFdlYkluc3BlY3Rv
ciogd2ViX2luc3BlY3RvciwgY29uc3QgZ2NoYXIqIGluc3BlY3RlZF91cmkpOworCiAgICAgLy8g
RklYTUU6IE1vdmUgdGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQSSBoYXMg
YmVlbiBkaXNjdXNzZWQuCiAKICAgICBXRUJLSVRfQVBJIEdTTGlzdCoKZGlmZiAtLWdpdCBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjBjZTNmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJpbnNwZWN0b3IuY3BwCkBAIC0wLDAgKzEsMzI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJ3ZWJraXR3ZWJpbnNwZWN0b3IuaCIKKyNpbmNsdWRlICJ3ZWJraXQtbWFyc2hhbC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudEd0ay5oIgorI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIK
KwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworZXh0ZXJuICJDIiB7CisKK2VudW0geworICAg
IElOU1BFQ1RfV0VCX1ZJRVcsCisgICAgU0hPV19XSU5ET1csCisgICAgQVRUQUNIX1dJTkRPVywK
KyAgICBERVRUQUNIX1dJTkRPVywKKyAgICBDTE9TRV9XSU5ET1csCisgICAgREVTVFJPWSwKKyAg
ICBMQVNUX1NJR05BTAorfTsKKworc3RhdGljIGd1aW50IHdlYmtpdF93ZWJfaW5zcGVjdG9yX3Np
Z25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OworCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAg
ICBQUk9QX1dFQl9WSUVXLAorICAgIFBST1BfSU5TUEVDVEVEX1VSSSwKK307CisKK0dfREVGSU5F
X1RZUEUoV2ViS2l0V2ViSW5zcGVjdG9yLCB3ZWJraXRfd2ViX2luc3BlY3RvciwgR19UWVBFX09C
SkVDVCkKKworc3RydWN0IF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlIHsKKyAgICBJbnNwZWN0
b3JDbGllbnQqIGluc3BlY3RvckNsaWVudDsKKyAgICBXZWJLaXRXZWJWaWV3KiBpbnNwZWN0b3Jf
dmlldzsKKyAgICBnY2hhciogaW5zcGVjdGVkX3VyaTsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dF
Ql9JTlNQRUNUT1JfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRF
KChvYmopLCBXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLCBXZWJLaXRXZWJJbnNwZWN0b3JQcml2
YXRlKSkKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfZmluYWxpemUoR09iamVj
dCogb2JqZWN0KTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3Byb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwg
R1BhcmFtU3BlYyogcHNwZWMpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9n
ZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwc3BlYyk7CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfaW5zcGVjdF93
ZWJfdmlld19yZXF1ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBpaGludCwgR1Zh
bHVlKiByZXR1cm5BY2N1LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGR1
bW15KQoreworICAgIGdib29sZWFuIGNvbnRpbnVlRW1pc3Npb24gPSBUUlVFOworICAgIGdwb2lu
dGVyIG5ld1dlYlZpZXcgPSBnX3ZhbHVlX2dldF9vYmplY3QoaGFuZGxlclJldHVybik7CisgICAg
Z192YWx1ZV9zZXRfb2JqZWN0KHJldHVybkFjY3UsIG5ld1dlYlZpZXcpOworCisgICAgaWYgKG5l
d1dlYlZpZXcpCisgICAgICAgIGNvbnRpbnVlRW1pc3Npb24gPSBGQUxTRTsKKworICAgIHJldHVy
biBjb250aW51ZUVtaXNzaW9uOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rv
cl9jbGFzc19pbml0KFdlYktpdFdlYkluc3BlY3RvckNsYXNzKiBrbGFzcykKK3sKKyAgICBHT2Jq
ZWN0Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ29i
amVjdF9jbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9maW5hbGl6ZTsKKyAg
ICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRf
cHJvcGVydHk7CisgICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl9p
bnNwZWN0b3JfZ2V0X3Byb3BlcnR5OworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViSW5zcGVj
dG9yOjppbnNwZWN0LXdlYi12aWV3OgorICAgICAqIEB3ZWJfaW5zcGVjdG9yOiB0aGUgb2JqZWN0
IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEB3ZWJfdmlldzogdGhlICNX
ZWJLaXRXZWIgd2hpY2ggd2lsbCBiZSBpbnNwZWN0ZWQKKyAgICAgKiBAcmV0dXJuOiBhIG5ld2x5
IGFsbG9jYXRlZCAjV2ViS2l0V2ViVmlldyBvciAlTlVMTAorICAgICAqCisgICAgICogRW1pdHRl
ZCB3aGVuIHRoZSB1c2VyIGFjdGl2YXRlcyB0aGUgJ2luc3BlY3QnIGNvbnRleHQgbWVudSBpdGVt
CisgICAgICogdG8gaW5zcGVjdCBhIHdlYiB2aWV3LiBUaGUgYXBwbGljYXRpb24gd2hpY2ggaXMg
aW50ZXJlc3RlZCBpbgorICAgICAqIHRoZSBpbnNwZWN0b3Igc2hvdWxkIGNyZWF0ZSBhIHdpbmRv
dywgb3Igb3RoZXJ3aXNlIGFkZCB0aGUKKyAgICAgKiAjV2ViS2l0V2ViVmlldyBpdCBjcmVhdGVz
IHRvIGFuIGV4aXN0aW5nIHdpbmRvdy4KKyAgICAgKgorICAgICAqIFlvdSBkb24ndCBuZWVkIHRv
IGhhbmRsZSB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZQorICAgICAqICNXZWJLaXRXZWJWaWV3
IGluc3RhbmNlIHlvdSBjcmVhdGU7IHRoZSB3aWRnZXQgdG8gd2hpY2ggeW91IGFkZAorICAgICAq
IGl0IHdpbGwgZG8gdGhhdC4KKyAgICAgKi8KKyAgICB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zaWdu
YWxzW0lOU1BFQ1RfV0VCX1ZJRVddID0gZ19zaWduYWxfbmV3KCJpbnNwZWN0LXdlYi12aWV3IiwK
KyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAgICAgICAgIChHU2ln
bmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAg
ICAgIDAsCisgICAgICAgICAgICB3ZWJraXRfaW5zcGVjdF93ZWJfdmlld19yZXF1ZXN0X2hhbmRs
ZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfT0JKRUNU
X19PQkpFQ1QsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVyAsIDEsCisgICAgICAg
ICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVyk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJJ
bnNwZWN0b3I6OnNob3ctd2luZG93OgorICAgICAqIEB3ZWJfaW5zcGVjdG9yOiB0aGUgb2JqZWN0
IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEByZXR1cm46ICVUUlVFIGlm
IHRoZSBzaWduYWwgaGFzIGJlZW4gaGFuZGxlZAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVu
IHRoZSBpbnNwZWN0b3Igd2luZG93IHNob3VsZCBiZSBkaXNwbGF5ZWQuIE5vdGljZQorICAgICAq
IHRoYXQgdGhlIHdpbmRvdyBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIGFscmVhZHkgYnkgaGFuZGxp
bmcKKyAgICAgKiA6Omluc3BlY3Qtd2ViLXZpZXcuCisgICAgICovCisgICAgd2Via2l0X3dlYl9p
bnNwZWN0b3Jfc2lnbmFsc1tTSE9XX1dJTkRPV10gPSBnX3NpZ25hbF9uZXcoInNob3ctd2luZG93
IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAgICAgICAgIChH
U2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAg
ICAgICAgIDAsCisgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQs
CisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9f
Vk9JRCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOICwgMCk7CisKKyAgICAvKioKKyAgICAg
KiBXZWJLaXRXZWJJbnNwZWN0b3I6OmF0dGFjaC13aW5kb3c6CisgICAgICogQHdlYl9pbnNwZWN0
b3I6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHJl
dHVybjogJVRSVUUgaWYgdGhlIHNpZ25hbCBoYXMgYmVlbiBoYW5kbGVkCisgICAgICoKKyAgICAg
KiBFbWl0dGVkIHdoZW4gdGhlIGluc3BlY3RvciBzaG91bGQgYXBwZWFyIGF0IHRoZSBzYW1lIHdp
bmRvdyBhcworICAgICAqIHRoZSAjV2ViS2l0V2ViVmlldyBiZWluZyBpbnNwZWN0ZWQuCisgICAg
ICovCisgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2lnbmFsc1tBVFRBQ0hfV0lORE9XXSA9IGdf
c2lnbmFsX25ldygiYXR0YWNoLXdpbmRvdyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFT
UyhrbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8
IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgZ19zaWduYWxf
YWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAg
IHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVB
TiAsIDApOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOjpkZXR0YWNoLXdp
bmRvdzoKKyAgICAgKiBAd2ViX2luc3BlY3RvcjogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2ln
bmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAcmV0dXJuOiAlVFJVRSBpZiB0aGUgc2lnbmFsIGhhcyBi
ZWVuIGhhbmRsZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5zcGVjdG9yIHNo
b3VsZCBhcHBlYXIgaW4gYSBzZXBhcmF0ZSB3aW5kb3cuCisgICAgICovCisgICAgd2Via2l0X3dl
Yl9pbnNwZWN0b3Jfc2lnbmFsc1tERVRUQUNIX1dJTkRPV10gPSBnX3NpZ25hbF9uZXcoImRldHRh
Y2gtd2luZG93IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAg
ICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9O
KSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVl
X2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxf
Qk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOICwgMCk7CisKKyAgICAv
KioKKyAgICAgKiBXZWJLaXRXZWJJbnNwZWN0b3I6OmNsb3NlLXdpbmRvdzoKKyAgICAgKiBAd2Vi
X2luc3BlY3RvcjogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAg
ICAgKiBAcmV0dXJuOiAlVFJVRSBpZiB0aGUgc2lnbmFsIGhhcyBiZWVuIGhhbmRsZWQKKyAgICAg
KgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5zcGVjdG9yIHdpbmRvdyBzaG91bGQgYmUgY2xv
c2VkLiBZb3UgY2FuCisgICAgICogZGVzdHJveSB0aGUgd2luZG93IG9yIGhpZGUgaXQgc28gdGhh
dCBpdCBjYW4gYmUgZGlzcGxheWVkIGFnYWluCisgICAgICogYnkgaGFuZGxpbmcgOjpzaG93LXdp
bmRvdyBsYXRlciBvbi4KKyAgICAgKgorICAgICAqIE5vdGljZSB0aGF0IHRoZSBpbnNwZWN0ZWQg
I1dlYktpdFdlYlZpZXcgbWF5IG5vIGxvbmdlciBleGlzdAorICAgICAqIHdoZW4gdGhpcyBzaWdu
YWwgaXMgZW1pdHRlZC4KKyAgICAgKgorICAgICAqIE5vdGljZSwgdG9vLCB0aGF0IGlmIHlvdSBk
ZWNpZGUgdG8gZGVzdHJveSB0aGUgd2luZG93LAorICAgICAqIDo6aW5zcGVjdC13ZWItdmlldyB3
aWxsIGJlIGVtbWl0ZWQgYWdhaW4sIHdoZW4gdGhlIHVzZXIKKyAgICAgKiBpbnNwZWN0cyBhbiBl
bGVtZW50LgorICAgICAqLworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NpZ25hbHNbQ0xPU0Vf
V0lORE9XXSA9IGdfc2lnbmFsX25ldygiY2xvc2Utd2luZG93IiwKKyAgICAgICAgICAgIEdfVFlQ
RV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFM
X1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAg
ICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAor
ICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgIEdf
VFlQRV9CT09MRUFOICwgMCk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJJbnNwZWN0b3I6
OmRlc3Ryb3k6CisgICAgICogQHdlYl9pbnNwZWN0b3I6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhl
IHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGluc3Bl
Y3RvciBpcyBkZXN0cm95ZWQuCisgICAgICovCisgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2ln
bmFsc1tERVNUUk9ZXSA9IGdfc2lnbmFsX25ldygiZGVzdHJveSIsCisgICAgICAgICAgICBHX1RZ
UEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05B
TF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICAwLAorICAgICAgICAg
ICAgTlVMTCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNo
YWxfVk9JRF9fVk9JRCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FICwgMCk7CisKKyAgICAvKgor
ICAgICAqIHByb3BlcnRpZXMKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KGdvYmplY3RfY2xhc3MsIFBST1BfV0VCX1ZJRVcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJ3ZWItdmlldyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZWIgVmll
dyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJUaGUgV2ViIFZpZXcgdGhhdCByZW5kZXJzIHRoZSBXZWIgSW5zcGVjdG9yIGl0c2VsZiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisKKyAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsIFBST1BfSU5TUEVD
VEVEX1VSSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3Bl
Y19zdHJpbmcoImluc3BlY3RlZC11cmkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zcGVjdGVkIFVSSSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgVVJJIHRoYXQg
aXMgY3VycmVudGx5IGJlaW5nIGluc3BlY3RlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUpKTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktp
dFdlYkluc3BlY3RvclByaXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNw
ZWN0b3JfaW5pdChXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYl9pbnNwZWN0b3IpCit7CisgICAgd2Vi
X2luc3BlY3Rvci0+cHJpdiA9IFdFQktJVF9XRUJfSU5TUEVDVE9SX0dFVF9QUklWQVRFKHdlYl9p
bnNwZWN0b3IpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9maW5hbGl6
ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJfaW5zcGVj
dG9yID0gV0VCS0lUX1dFQl9JTlNQRUNUT1Iob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJJbnNwZWN0
b3JQcml2YXRlKiBwcml2ID0gd2ViX2luc3BlY3Rvci0+cHJpdjsKKworICAgIGlmIChwcml2LT5p
bnNwZWN0b3JfdmlldykKKyAgICAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+aW5zcGVjdG9yX3Zp
ZXcpOworCisgICAgaWYgKHByaXYtPmluc3BlY3RlZF91cmkpCisgICAgICAgIGdfZnJlZShwcml2
LT5pbnNwZWN0ZWRfdXJpKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfaW5zcGVj
dG9yX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfaW5zcGVjdG9yX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdl
YktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9SKG9i
amVjdCk7CisgICAgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSogcHJpdiA9IHdlYl9pbnNwZWN0
b3ItPnByaXY7CisKKyAgICBzd2l0Y2gocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9XRUJfVklF
VzoKKyAgICAgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3dlYl92aWV3KHdlYl9pbnNwZWN0
b3IsIFdFQktJVF9XRUJfVklFVyhnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9JTlNQRUNURURfVVJJOgorICAgICAgICBwcml2LT5pbnNw
ZWN0ZWRfdXJpID0gZ192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3Qs
IGd1aW50IHByb3BfaWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAg
IFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9S
KG9iamVjdCk7CisgICAgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSogcHJpdiA9IHdlYl9pbnNw
ZWN0b3ItPnByaXY7CisKKyAgICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfV0VC
X1ZJRVc6CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgcHJpdi0+aW5zcGVjdG9y
X3ZpZXcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSU5TUEVDVEVEX1VSSToKKyAg
ICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBwcml2LT5pbnNwZWN0ZWRfdXJpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK3ZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3dlYl92aWV3KFdlYktpdFdl
Ykluc3BlY3RvciAqd2ViX2luc3BlY3RvciwgV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXcpCit7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0lOU1BFQ1RPUih3ZWJfaW5zcGVjdG9y
KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViX3ZpZXcpKTsK
KworICAgIFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUqIHByaXYgPSB3ZWJfaW5zcGVjdG9yLT5w
cml2OworCisgICAgaWYgKHByaXYtPmluc3BlY3Rvcl92aWV3KQorICAgICAgICBnX29iamVjdF91
bnJlZihwcml2LT5pbnNwZWN0b3Jfdmlldyk7CisgICAgCisgICAgZ19vYmplY3RfcmVmKHdlYl92
aWV3KTsKKyAgICBwcml2LT5pbnNwZWN0b3JfdmlldyA9IHdlYl92aWV3OworfQorCitXZWJLaXRX
ZWJWaWV3KiB3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfd2ViX3ZpZXcoV2ViS2l0V2ViSW5zcGVj
dG9yICp3ZWJfaW5zcGVjdG9yKQoreworICAgIFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUqIHBy
aXYgPSB3ZWJfaW5zcGVjdG9yLT5wcml2OworCisgICAgcmV0dXJuIHByaXYtPmluc3BlY3Rvcl92
aWV3OworfQorCit2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNwZWN0ZWRfdXJpKFdl
YktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3RvciwgY29uc3QgZ2NoYXIqIGluc3BlY3RlZF91
cmkpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0lOU1BFQ1RPUih3ZWJf
aW5zcGVjdG9yKSk7CisKKyAgICBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2Vi
X2luc3BlY3Rvci0+cHJpdjsKKworICAgIGlmIChwcml2LT5pbnNwZWN0ZWRfdXJpKQorICAgICAg
ICBnX2ZyZWUocHJpdi0+aW5zcGVjdGVkX3VyaSk7CisgICAgCisgICAgcHJpdi0+aW5zcGVjdGVk
X3VyaSA9IGdfc3RyZHVwKGluc3BlY3RlZF91cmkpOworfQorCitjb25zdCBnY2hhciogd2Via2l0
X3dlYl9pbnNwZWN0b3JfZ2V0X2luc3BlY3RlZF91cmkoV2ViS2l0V2ViSW5zcGVjdG9yICp3ZWJf
aW5zcGVjdG9yKQoreworICAgIFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUqIHByaXYgPSB3ZWJf
aW5zcGVjdG9yLT5wcml2OworCisgICAgcmV0dXJuIHByaXYtPmluc3BlY3RlZF91cmk7Cit9CisK
K3ZvaWQKK3dlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNwZWN0b3JfY2xpZW50KFdlYktpdFdl
Ykluc3BlY3Rvciogd2ViX2luc3BlY3RvciwgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQqIGluc3Bl
Y3RvckNsaWVudCkKK3sKKyAgICBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2Vi
X2luc3BlY3Rvci0+cHJpdjsKKworICAgIHByaXYtPmluc3BlY3RvckNsaWVudCA9IGluc3BlY3Rv
ckNsaWVudDsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
aW5zcGVjdG9yLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWNjZjkyCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmgKQEAgLTAsMCArMSw2NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBfX1dFQktJVF9XRUJfSU5TUEVDVE9SX0hfXworI2RlZmluZSBfX1dFQktJVF9XRUJfSU5TUEVD
VE9SX0hfXworCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9X
RUJfSU5TUEVDVE9SICAgICAgICAgICAgKHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF90eXBlKCkp
CisjZGVmaW5lIFdFQktJVF9XRUJfSU5TUEVDVE9SKG9iaikgICAgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsIFdlYktp
dFdlYkluc3BlY3RvcikpCisjZGVmaW5lIFdFQktJVF9XRUJfSU5TUEVDVE9SX0NMQVNTKGtsYXNz
KSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9J
TlNQRUNUT1IsIFdlYktpdFdlYkluc3BlY3RvckNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dF
Ql9JTlNQRUNUT1Iob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2Jq
KSwgV0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RPUikpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfSU5T
UEVDVE9SX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdF
QktJVF9UWVBFX1dFQl9JTlNQRUNUT1IpKQorI2RlZmluZSBXRUJLSVRfV0VCX0lOU1BFQ1RPUl9H
RVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRf
VFlQRV9XRUJfSU5TUEVDVE9SLCBXZWJLaXRXZWJJbnNwZWN0b3JDbGFzcykpCisKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlIFdlYktpdFdlYkluc3BlY3RvclByaXZh
dGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViSW5zcGVjdG9yIHsKKyAgICBHT2JqZWN0IHBhcmVudF9p
bnN0YW5jZTsKKworICAgIFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUqIHByaXY7Cit9OworCitz
dHJ1Y3QgX1dlYktpdFdlYkluc3BlY3RvckNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50
X2NsYXNzOworCisgICAgLyogUGFkZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOworICAg
IHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNCkgKHZvaWQpOworfTsKKworV0VCS0lUX0FQSSBHVHlw
ZQord2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdl
YktpdFdlYlZpZXcqCit3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfd2ViX3ZpZXcoV2ViS2l0V2Vi
SW5zcGVjdG9yKiB3ZWJfaW5zcGVjdG9yKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dl
YmtpdF93ZWJfaW5zcGVjdG9yX2dldF9pbnNwZWN0ZWRfdXJpKFdlYktpdFdlYkluc3BlY3Rvciog
d2ViX2luc3BlY3Rvcik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX1dFQktJVF9XRUJf
SU5TUEVDVE9SX0hfXyAqLwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
c2V0dGluZ3MuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCmlu
ZGV4IDA4ZTQwOWQuLmExYWY1ZDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnNldHRpbmdzLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5n
cy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUg
ewogICAgIGdib29sZWFuIHJlc2l6YWJsZV90ZXh0X2FyZWFzOwogICAgIGdjaGFyKiB1c2VyX3N0
eWxlc2hlZXRfdXJpOwogICAgIGdmbG9hdCB6b29tX3N0ZXA7CisgICAgZ2Jvb2xlYW4gZW5hYmxl
X2RldmVsb3Blcl9leHRyYXM7CiB9OwogCiAjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1NfR0VU
X1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRf
VFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpCkBAIC03Myw3ICs3
NCw4IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX1BMVUdJTlMsCiAgICAgUFJPUF9SRVNJWkFC
TEVfVEVYVF9BUkVBUywKICAgICBQUk9QX1VTRVJfU1RZTEVTSEVFVF9VUkksCi0gICAgUFJPUF9a
T09NX1NURVAKKyAgICBQUk9QX1pPT01fU1RFUCwKKyAgICBQUk9QX0VOQUJMRV9ERVZFTE9QRVJf
RVhUUkFTCiB9OwogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCk7CkBAIC0yNjgsNiArMjcwLDIyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKiBrbGFzcykKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsIEdfTUFYRkxPQVQsIDAuMWYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwogCisgICAgLyoq
CisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtZGV2ZWxvcGVyLWV4dHJhczoKKyAgICAq
CisgICAgKiBXaGV0aGVyIGRldmVsb3BlciBleHRlbnNpb25zIHNob3VsZCBiZSBlbmFibGVkLgor
ICAgICoKKyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9FTkFCTEVfREVWRUxPUEVSX0VYVFJBUywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImVuYWJsZS1kZXZlbG9wZXItZXh0cmFzIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbmFibGUgRGV2ZWxvcGVyIEV4dHJhcyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW5hYmxlcyBzcGVjaWFsIGV4dGVu
c2lvbnMgdGhhdCBoZWxwIGRldmVsb3BlcnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cykpOworCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0
V2ViU2V0dGluZ3NQcml2YXRlKSk7CiB9CiAKQEAgLTM2NCw2ICszODIsOSBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BfaWQsIGNvbgogICAgIGNhc2UgUFJPUF9aT09NX1NURVA6CiAgICAgICAgIHByaXYtPnpv
b21fc3RlcCA9IGdfdmFsdWVfZ2V0X2Zsb2F0KHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0VOQUJMRV9ERVZFTE9QRVJfRVhUUkFTOgorICAgICAgICBwcml2LT5lbmFibGVf
ZGV2ZWxvcGVyX2V4dHJhcyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDMzLDYg
KzQ1NCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhCiAgICAgY2FzZSBQUk9QX1pPT01fU1RF
UDoKICAgICAgICAgZ192YWx1ZV9zZXRfZmxvYXQodmFsdWUsIHByaXYtPnpvb21fc3RlcCk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfREVWRUxPUEVSX0VYVFJBUzoKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxlX2RldmVsb3Blcl9l
eHRyYXMpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAg
IGJyZWFrOwpAQCAtNDgzLDYgKzUwNyw3IEBAIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2Vi
X3NldHRpbmdzX2NvcHkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYl9zZXR0aW5ncykKICAgICAgICAg
ICAgICAgICAgInJlc2l6YWJsZS10ZXh0LWFyZWFzIiwgcHJpdi0+cmVzaXphYmxlX3RleHRfYXJl
YXMsCiAgICAgICAgICAgICAgICAgICJ1c2VyLXN0eWxlc2hlZXQtdXJpIiwgcHJpdi0+dXNlcl9z
dHlsZXNoZWV0X3VyaSwKICAgICAgICAgICAgICAgICAgInpvb20tc3RlcCIsIHByaXYtPnpvb21f
c3RlcCwKKyAgICAgICAgICAgICAgICAgImVuYWJsZS1kZXZlbG9wZXItZXh0cmFzIiwgcHJpdi0+
ZW5hYmxlX2RldmVsb3Blcl9leHRyYXMsCiAgICAgICAgICAgICAgICAgIE5VTEwpKTsKIAogICAg
IHJldHVybiBjb3B5OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA2YTdlYTFm
Li5kMTU3NzlmIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXQtbWFyc2hh
bC5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNw
ZWN0b3IuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaCIKICNpbmNsdWRl
ICJ3ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIgogCkBAIC05OSw2ICsxMDAsNyBAQCBlbnVtIHsKICAg
ICBQUk9QX1BBU1RFX1RBUkdFVF9MSVNULAogICAgIFBST1BfRURJVEFCTEUsCiAgICAgUFJPUF9T
RVRUSU5HUywKKyAgICBQUk9QX1dFQl9JTlNQRUNUT1IsCiAgICAgUFJPUF9UUkFOU1BBUkVOVCwK
ICAgICBQUk9QX1pPT01fTEVWRUwsCiAgICAgUFJPUF9GVUxMX0NPTlRFTlRfWk9PTQpAQCAtMjM0
LDYgKzIzNiw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfcHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqCiAgICAgY2FzZSBQUk9QX1NFVFRJ
TkdTOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19n
ZXRfc2V0dGluZ3Mod2ViVmlldykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0VC
X0lOU1BFQ1RPUjoKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2luc3BlY3Rvcih3ZWJWaWV3KSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UFJPUF9UUkFOU1BBUkVOVDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Vi
a2l0X3dlYl92aWV3X2dldF90cmFuc3BhcmVudCh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtNzIxLDYgKzcyNiw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZShH
T2JqZWN0KiBvYmplY3QpCiAgICAgICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPnZlcnRpY2FsQWRq
dXN0bWVudCk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+YmFja0ZvcndhcmRMaXN0KTsKICAg
ICBnX29iamVjdF91bnJlZihwcml2LT53ZWJTZXR0aW5ncyk7CisgICAgZ19vYmplY3RfdW5yZWYo
cHJpdi0+d2ViSW5zcGVjdG9yKTsKICAgICBnX29iamVjdF91bnJlZihwcml2LT5tYWluRnJhbWUp
OwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPmltQ29udGV4dCk7CiAgICAgZ3RrX3RhcmdldF9s
aXN0X3VucmVmKHByaXYtPmNvcHlfdGFyZ2V0X2xpc3QpOwpAQCAtMTIwNiw2ICsxMjEyLDEzIEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFz
cyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEV1JJVEUpKTsKIAorICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0
Q2xhc3MsIFBST1BfV0VCX0lOU1BFQ1RPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoIndlYi1pbnNwZWN0b3IiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2ViIEluc3BlY3Rv
ciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJUaGUgYXNzb2NpYXRlZCBXZWJLaXRXZWJJbnNwZWN0b3IgaW5zdGFuY2UiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRf
VFlQRV9XRUJfSU5TUEVDVE9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKwogICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfRURJVEFCTEUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigi
ZWRpdGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkVkaXRhYmxlIiwKQEAgLTEyOTIsNyArMTMwNSw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBjb3JlKHdlYlZpZXcpLT5zZXR0aW5ncygpOwogCiAg
ICAgZ2NoYXIqIGRlZmF1bHRFbmNvZGluZywgKmN1cnNpdmVGb250RmFtaWx5LCAqZGVmYXVsdEZv
bnRGYW1pbHksICpmYW50YXN5Rm9udEZhbWlseSwgKm1vbm9zcGFjZUZvbnRGYW1pbHksICpzYW5z
U2VyaWZGb250RmFtaWx5LCAqc2VyaWZGb250RmFtaWx5LCAqdXNlclN0eWxlc2hlZXRVcmk7Ci0g
ICAgZ2Jvb2xlYW4gYXV0b0xvYWRJbWFnZXMsIGF1dG9TaHJpbmtJbWFnZXMsIHByaW50QmFja2dy
b3VuZHMsIGVuYWJsZVNjcmlwdHMsIGVuYWJsZVBsdWdpbnMsIHJlc2l6YWJsZVRleHRBcmVhczsK
KyAgICBnYm9vbGVhbiBhdXRvTG9hZEltYWdlcywgYXV0b1Nocmlua0ltYWdlcywgcHJpbnRCYWNr
Z3JvdW5kcywgZW5hYmxlU2NyaXB0cywgZW5hYmxlUGx1Z2lucywgZW5hYmxlRGV2ZWxvcGVyRXh0
cmFzLCByZXNpemFibGVUZXh0QXJlYXM7CiAKICAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2Vi
U2V0dGluZ3MpLAogICAgICAgICAgICAgICAgICAiZGVmYXVsdC1lbmNvZGluZyIsICZkZWZhdWx0
RW5jb2RpbmcsCkBAIC0xMzA5LDYgKzEzMjIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfdXBkYXRlX3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgICAgICAg
ICAgICJlbmFibGUtcGx1Z2lucyIsICZlbmFibGVQbHVnaW5zLAogICAgICAgICAgICAgICAgICAi
cmVzaXphYmxlLXRleHQtYXJlYXMiLCAmcmVzaXphYmxlVGV4dEFyZWFzLAogICAgICAgICAgICAg
ICAgICAidXNlci1zdHlsZXNoZWV0LXVyaSIsICZ1c2VyU3R5bGVzaGVldFVyaSwKKyAgICAgICAg
ICAgICAgICAgImVuYWJsZS1kZXZlbG9wZXItZXh0cmFzIiwgJmVuYWJsZURldmVsb3BlckV4dHJh
cywKICAgICAgICAgICAgICAgICAgTlVMTCk7CiAKICAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdFRl
eHRFbmNvZGluZ05hbWUoZGVmYXVsdEVuY29kaW5nKTsKQEAgLTEzMjUsNiArMTMzOSw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKICAgICBzZXR0aW5ncy0+c2V0UGx1Z2luc0VuYWJsZWQoZW5hYmxlUGx1Z2lucyk7
CiAgICAgc2V0dGluZ3MtPnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZShyZXNpemFibGVUZXh0QXJl
YXMpOwogICAgIHNldHRpbmdzLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEtVUkwodXNlclN0
eWxlc2hlZXRVcmkpKTsKKyAgICBzZXR0aW5ncy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChl
bmFibGVEZXZlbG9wZXJFeHRyYXMpOwogCiAgICAgZ19mcmVlKGRlZmF1bHRFbmNvZGluZyk7CiAg
ICAgZ19mcmVlKGN1cnNpdmVGb250RmFtaWx5KTsKQEAgLTEzOTQsNyArMTQwOSwxNCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAg
IHdlYlZpZXctPnByaXYgPSBwcml2OwogCiAgICAgcHJpdi0+aW1Db250ZXh0ID0gZ3RrX2ltX211
bHRpY29udGV4dF9uZXcoKTsKLSAgICBwcml2LT5jb3JlUGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJL
aXQ6OkNocm9tZUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnQo
d2ViVmlldyksIG5ldyBXZWJLaXQ6OkVkaXRvckNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6
RHJhZ0NsaWVudCwgbmV3IFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50KTsKKyAgICAKKyAgICBXZWJL
aXQ6Okluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYktpdDo6SW5zcGVj
dG9yQ2xpZW50KHdlYlZpZXcpOworICAgIHByaXYtPmNvcmVQYWdlID0gbmV3IFBhZ2UobmV3IFdl
YktpdDo6Q2hyb21lQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpDb250ZXh0TWVudUNsaWVu
dCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RWRpdG9yQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0
OjpEcmFnQ2xpZW50LCBpbnNwZWN0b3JDbGllbnQpOworCisgICAgLyogd2UgYWxzbyBhZGQgYSBz
aW1wbGUgd3JhcHBlciBjbGFzcyB0byBwcm92aWRlIHRoZSBwdWJsaWMKKyAgICAgICBpbnRlcmZh
Y2UgZm9yIHRoZSBXZWIgSW5zcGVjdG9yICovCisgICAgcHJpdi0+d2ViSW5zcGVjdG9yID0gV0VC
S0lUX1dFQl9JTlNQRUNUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1Is
IE5VTEwpKTsKKyAgICB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfaW5zcGVjdG9yX2NsaWVudChw
cml2LT53ZWJJbnNwZWN0b3IsIGluc3BlY3RvckNsaWVudCk7CiAKICAgICBwcml2LT5ob3Jpem9u
dGFsQWRqdXN0bWVudCA9IEdUS19BREpVU1RNRU5UKGd0a19hZGp1c3RtZW50X25ldygwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wKSk7CiAgICAgcHJpdi0+dmVydGljYWxBZGp1c3RtZW50ID0g
R1RLX0FESlVTVE1FTlQoZ3RrX2FkanVzdG1lbnRfbmV3KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjApKTsKQEAgLTE0NjksNiArMTQ5MSwxNCBAQCBXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0
X3dlYl92aWV3X2dldF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHJldHVy
biBwcml2LT53ZWJTZXR0aW5nczsKIH0KIAorV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2luc3BlY3RvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVMTCk7CisKKyAg
ICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAgcmV0dXJu
IHByaXYtPndlYkluc3BlY3RvcjsKK30KKwogLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X21h
aW50YWluc19iYWNrX2ZvcndhcmRfbGlzdDoKICAqIEB3ZWJWaWV3OiBhICNXZWJLaXRXZWJWaWV3
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmggYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggZWJkMWFhMS4uNzM3MTk1OSAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAtMjQ3LDYgKzI0Nyw5IEBAIHdlYmtpdF93ZWJfdmll
d19zZXRfc2V0dGluZ3MgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAq
d2ViX3ZpZXcsCiBXRUJLSVRfQVBJIFdlYktpdFdlYlNldHRpbmdzICoKIHdlYmtpdF93ZWJfdmll
d19nZXRfc2V0dGluZ3MgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAq
d2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJIFdlYktpdFdlYkluc3BlY3RvciAqCit3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2luc3BlY3RvciAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgKndlYl92aWV3KTsKKwogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dlYl92aWV3X2dl
dF90cmFuc3BhcmVudCAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJf
dmlldyk7CiAK
</data>
<flag name="review"
          id="9861"
          type_id="1"
          status="-"
          setter="christian"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22365</attachid>
            <date>2008-07-18 08:38:55 -0700</date>
            <delta_ts>2008-07-18 08:38:55 -0700</delta_ts>
            <desc>correct launcher patch</desc>
            <filename>launcher-inspector.diff</filename>
            <type>text/plain</type>
            <size>4673</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYyBiL1dlYktpdFRvb2xz
L0d0a0xhdW5jaGVyL21haW4uYwppbmRleCA4ZWQyNjkwLi5jNTAzZjUyIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMKKysrIGIvV2ViS2l0VG9vbHMvR3RrTGF1bmNo
ZXIvbWFpbi5jCkBAIC0zNCw2ICszNCw3IEBAIHN0YXRpYyBXZWJLaXRXZWJWaWV3KiB3ZWJfdmll
dzsKIHN0YXRpYyBnY2hhciogbWFpbl90aXRsZTsKIHN0YXRpYyBnaW50IGxvYWRfcHJvZ3Jlc3M7
CiBzdGF0aWMgZ3VpbnQgc3RhdHVzX2NvbnRleHRfaWQ7CitzdGF0aWMgR3RrV2lkZ2V0KiBpbnNw
ZWN0b3Jfd2luZG93OwogCiBzdGF0aWMgdm9pZAogYWN0aXZhdGVfdXJpX2VudHJ5X2NiIChHdGtX
aWRnZXQqIGVudHJ5LCBncG9pbnRlciBkYXRhKQpAQCAtODksNiArOTAsODEgQEAgbG9hZF9jb21t
aXRfY2IgKFdlYktpdFdlYlZpZXcqIHBhZ2UsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgZ3BvaW50
ZXIgZGF0YSkKIH0KIAogc3RhdGljIHZvaWQKK2hpZGVfd2luZG93X2NiKEd0a1dpZGdldCAqd2lk
Z2V0LCBncG9pbnRlciBkYXRhKQoreworICAgIGd0a193aWRnZXRfaGlkZSh3aWRnZXQpOworfQor
CitzdGF0aWMgV2ViS2l0V2ViVmlldyoKK2NyZWF0ZV9pbnNwZWN0b3JfY2IgKFdlYktpdFdlYklu
c3BlY3Rvciogd2ViX2luc3BlY3RvciwgV2ViS2l0V2ViVmlldyogcGFnZSwgZ3BvaW50ZXIgZGF0
YSkKK3sKKyAgICBHdGtXaWRnZXQqIHNjcm9sbGVkX3dpbmRvdzsKKyAgICBHdGtXaWRnZXQqIG5l
d193ZWJfdmlldzsKKworICAgIGluc3BlY3Rvcl93aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtf
V0lORE9XX1RPUExFVkVMKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKGluc3BlY3Rv
cl93aW5kb3cpLCAiZGVsZXRlLWV2ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJB
Q0soaGlkZV93aW5kb3dfY2IpLCBOVUxMKTsKKworICAgIGd0a193aW5kb3dfc2V0X3RpdGxlKEdU
S19XSU5ET1coaW5zcGVjdG9yX3dpbmRvdyksICJJbnNwZWN0b3IiKTsKKyAgICBndGtfd2luZG93
X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyhpbnNwZWN0b3Jfd2luZG93KSwgNDAwLCAzMDAp
OworICAgIGd0a193aWRnZXRfc2hvdyhpbnNwZWN0b3Jfd2luZG93KTsKKworICAgIHNjcm9sbGVk
X3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpOworICAgIGd0a19z
Y3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dp
bmRvdyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19QT0xJQ1lfQVVU
T01BVElDLCBHVEtfUE9MSUNZX0FVVE9NQVRJQyk7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RL
X0NPTlRBSU5FUihpbnNwZWN0b3Jfd2luZG93KSwgc2Nyb2xsZWRfd2luZG93KTsKKyAgICBndGtf
d2lkZ2V0X3Nob3coc2Nyb2xsZWRfd2luZG93KTsKKworICAgIG5ld193ZWJfdmlldyA9IHdlYmtp
dF93ZWJfdmlld19uZXcoKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHNj
cm9sbGVkX3dpbmRvdyksIG5ld193ZWJfdmlldyk7CisKKyAgICByZXR1cm4gV0VCS0lUX1dFQl9W
SUVXKG5ld193ZWJfdmlldyk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgoraW5zcGVjdG9yX3Nob3df
d2luZG93X2NiIChXZWJLaXRXZWJJbnNwZWN0b3IqIGluc3BlY3RvcikKK3sKKyAgICBndGtfd2lk
Z2V0X3Nob3coaW5zcGVjdG9yX3dpbmRvdyk7CisgICAgZ19tZXNzYWdlKCJzaG93X3dpbmRvdzog
JXAiLCBpbnNwZWN0b3IpOworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4K
K2luc3BlY3Rvcl9jbG9zZV93aW5kb3dfY2IgKFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9y
KQoreworICAgIGdfbWVzc2FnZSgiY2xvc2Vfd2luZG93Iik7CisgICAgcmV0dXJuIFRSVUU7Cit9
CisKK3N0YXRpYyBnYm9vbGVhbgoraW5zcGVjdG9yX2F0dGFjaF93aW5kb3dfY2IgKFdlYktpdFdl
Ykluc3BlY3RvciogaW5zcGVjdG9yKQoreworICAgIGdfbWVzc2FnZSgiYXR0YWNoX3dpbmRvdyIp
OworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuCitpbnNwZWN0b3JfZGV0
dGFjaF93aW5kb3dfY2IgKFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9yKQoreworICAgIGdf
bWVzc2FnZSgiZGV0dGFjaF93aW5kb3ciKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRp
YyBnYm9vbGVhbgoraW5zcGVjdG9yX3VyaV9jaGFuZ2VkX2NiIChXZWJLaXRXZWJJbnNwZWN0b3Iq
IGluc3BlY3RvcikKK3sKKyAgICBnX21lc3NhZ2UoInVyaV9jaGFuZ2VkOiAlcyIsIHdlYmtpdF93
ZWJfaW5zcGVjdG9yX2dldF9pbnNwZWN0ZWRfdXJpKGluc3BlY3RvcikpOworICAgIHJldHVybiBG
QUxTRTsKK30KKworc3RhdGljIGdib29sZWFuCitpbnNwZWN0b3JfaW5zcGVjdG9yX2Rlc3Ryb3ll
ZF9jYiAoV2ViS2l0V2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IpCit7CisgICAgZ19tZXNzYWdlKCJk
ZXN0cm95Iik7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZAogZGVzdHJveV9j
YiAoR3RrV2lkZ2V0KiB3aWRnZXQsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAgZ3RrX21haW5fcXVp
dCAoKTsKQEAgLTEwOSwxNyArMTg1LDMzIEBAIGdvX2ZvcndhcmRfY2IgKEd0a1dpZGdldCogd2lk
Z2V0LCBncG9pbnRlciBkYXRhKQogc3RhdGljIEd0a1dpZGdldCoKIGNyZWF0ZV9icm93c2VyICgp
CiB7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MgKnNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5n
c19uZXcoKTsKKyAgICBXZWJLaXRXZWJJbnNwZWN0b3IgKmluc3BlY3RvcjsKKwogICAgIEd0a1dp
ZGdldCogc2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcgKE5VTEwsIE5V
TEwpOwogICAgIGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeSAoR1RLX1NDUk9MTEVEX1dJ
TkRPVyAoc2Nyb2xsZWRfd2luZG93KSwgR1RLX1BPTElDWV9BVVRPTUFUSUMsIEdUS19QT0xJQ1lf
QVVUT01BVElDKTsKIAogICAgIHdlYl92aWV3ID0gV0VCS0lUX1dFQl9WSUVXICh3ZWJraXRfd2Vi
X3ZpZXdfbmV3ICgpKTsKICAgICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAoc2Ny
b2xsZWRfd2luZG93KSwgR1RLX1dJREdFVCAod2ViX3ZpZXcpKTsKIAorICAgIGdfb2JqZWN0X3Nl
dChHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtZGV2ZWxvcGVyLWV4dHJhcyIsIFRSVUUsIE5V
TEwpOworICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV0VCS0lUX1dFQl9WSUVXKHdl
Yl92aWV3KSwgc2V0dGluZ3MpOworCiAgICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKHdl
Yl92aWV3KSwgInRpdGxlLWNoYW5nZWQiLCBHX0NBTExCQUNLICh0aXRsZV9jaGFuZ2VfY2IpLCB3
ZWJfdmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKHdlYl92aWV3KSwgImxv
YWQtcHJvZ3Jlc3MtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sgKHByb2dyZXNzX2NoYW5nZV9jYiksIHdl
Yl92aWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAod2ViX3ZpZXcpLCAibG9h
ZC1jb21taXR0ZWQiLCBHX0NBTExCQUNLIChsb2FkX2NvbW1pdF9jYiksIHdlYl92aWV3KTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAod2ViX3ZpZXcpLCAiaG92ZXJpbmctb3Zlci1s
aW5rIiwgR19DQUxMQkFDSyAobGlua19ob3Zlcl9jYiksIHdlYl92aWV3KTsKIAorICAgIGluc3Bl
Y3RvciA9IHdlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVjdG9yKHdlYl92aWV3KTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0IChHX09CSkVDVCAoaW5zcGVjdG9yKSwgImluc3BlY3Qtd2ViLXZpZXciLCBH
X0NBTExCQUNLIChjcmVhdGVfaW5zcGVjdG9yX2NiKSwgTlVMTCk7CisgICAgZ19zaWduYWxfY29u
bmVjdCAoR19PQkpFQ1QgKGluc3BlY3RvciksICJzaG93LXdpbmRvdyIsIEdfQ0FMTEJBQ0sgKGlu
c3BlY3Rvcl9zaG93X3dpbmRvd19jYiksIE5VTEwpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdf
T0JKRUNUIChpbnNwZWN0b3IpLCAiY2xvc2Utd2luZG93IiwgR19DQUxMQkFDSyAoaW5zcGVjdG9y
X2Nsb3NlX3dpbmRvd19jYiksIE5VTEwpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNU
IChpbnNwZWN0b3IpLCAiYXR0YWNoLXdpbmRvdyIsIEdfQ0FMTEJBQ0sgKGluc3BlY3Rvcl9hdHRh
Y2hfd2luZG93X2NiKSwgTlVMTCk7CisgICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGlu
c3BlY3RvciksICJkZXR0YWNoLXdpbmRvdyIsIEdfQ0FMTEJBQ0sgKGluc3BlY3Rvcl9kZXR0YWNo
X3dpbmRvd19jYiksIE5VTEwpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChpbnNw
ZWN0b3IpLCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0sgKGluc3BlY3Rvcl9pbnNwZWN0b3JfZGVzdHJv
eWVkX2NiKSwgTlVMTCk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoaW5zcGVj
dG9yKSwgIm5vdGlmeTo6aW5zcGVjdGVkLXVyaSIsIEdfQ0FMTEJBQ0sgKGluc3BlY3Rvcl91cmlf
Y2hhbmdlZF9jYiksIE5VTEwpOworCiAgICAgcmV0dXJuIHNjcm9sbGVkX3dpbmRvdzsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23014</attachid>
            <date>2008-08-26 19:41:34 -0700</date>
            <delta_ts>2008-10-29 15:40:31 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>inspector.diff</filename>
            <type>text/plain</type>
            <size>45113</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkZGYyZDA1Li4zZGJlMmY5
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAK
KzIwMDgtMDgtMjYgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYWxsIHRo
ZSBmaWxlcyB0aGF0IG5lZWQgdG8gYmUgaW5zdGFsbGVkIGZvciB0aGUgSW5zcGVjdG9yIHRvCisg
ICAgICAgIHdvcmsuCisKIDIwMDgtMDgtMjQgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1
d2F0ZXJsb28uY2E+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyLgpkaWZmIC0tZ2l0IGEv
R05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCBkNzAxM2FmLi40ZmNjNWU5IDEw
MDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtMzEyLDYg
KzMxMiw3IEBAIHdlYmtpdGd0a19oX2FwaSArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2ViYmFja2ZvcndhcmRsaXN0LmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1l
LmggXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmggXAorCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJzZXR0aW5ncy5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgK
IApAQCAtMzQzLDYgKzM0NCw3IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJmcmFtZS5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3Rv
cnlpdGVtLmNwcCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcCBc
CiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIFwKIAlXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAxMzc2MGFlLi5kNWEzNTZlIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTM0NDAsNiArMzQ0MCwxNTAgQEAgd2ViY29yZV9kaXN0ICs9IFwKIAlXZWJDb3Jl
L3htbC94bWxhdHRycy5pbiBcCiAJV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkKIAorIyBJbnN0
YWxsaW5nIHdlYiBpbnNwZWN0b3IgZmlsZXMKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gLUREQVRBX0RJ
Uj1cIiR7ZGF0YWRpcn1cIgorCit3ZWJpbnNwZWN0b3JkaXIgPSAke2RhdGFkaXJ9L3dlYmtpdC0x
LjAvd2ViaW5zcGVjdG9yCitkaXN0X3dlYmluc3BlY3Rvcl9EQVRBID0gXAorICAgICAgICAkKFdl
YkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0JyZWFrcG9pbnQuanMgXAorICAgICAgICAkKFdlYkNvcmUp
L3BhZ2UvaW5zcGVjdG9yL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMgXAorICAgICAgICAkKFdl
YkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzIFwKKyAgICAgICAg
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9Db25zb2xlLmpzIFwKKyAgICAgICAgJChXZWJDb3Jl
KS9wYWdlL2luc3BlY3Rvci9EYXRhYmFzZS5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvRGF0YWJhc2VRdWVyeVZpZXcuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2Uv
aW5zcGVjdG9yL0RhdGFiYXNlc1BhbmVsLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2lu
c3BlY3Rvci9EYXRhYmFzZVRhYmxlVmlldy5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvRGF0YUdyaWQuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9y
L0VsZW1lbnRzUGFuZWwuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0Zv
bnRWaWV3LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZVZpZXcu
anMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5jc3MgXAor
ICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5odG1sIFwKKyAgICAg
ICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuanMgXAorICAgICAgICAkKFdl
YkNvcmUpL3BhZ2UvaW5zcGVjdG9yL01ldHJpY3NTaWRlYmFyUGFuZS5qcyBcCisgICAgICAgICQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvT2JqZWN0LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9w
YWdlL2luc3BlY3Rvci9PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qcyBcCisgICAgICAgICQoV2Vi
Q29yZSkvcGFnZS9pbnNwZWN0b3IvUGFuZWwuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2Uv
aW5zcGVjdG9yL1BsYWNhcmQuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9y
L1Byb2ZpbGVzUGFuZWwuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1By
b2ZpbGVWaWV3LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9Qcm9wZXJ0
aWVzU2VjdGlvbi5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvUHJvcGVy
dGllc1NpZGViYXJQYW5lLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9S
ZXNvdXJjZUNhdGVnb3J5LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9S
ZXNvdXJjZS5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2Vz
UGFuZWwuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1Jlc291cmNlVmll
dy5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvU2NvcGVDaGFpblNpZGVi
YXJQYW5lLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9TY3JpcHQuanMg
XAorICAgICAgICAkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1NjcmlwdHNQYW5lbC5qcyBcCisg
ICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvU2NyaXB0Vmlldy5qcyBcCisgICAgICAg
ICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvU2lkZWJhclBhbmUuanMgXAorICAgICAgICAkKFdl
YkNvcmUpL3BhZ2UvaW5zcGVjdG9yL1NpZGViYXJUcmVlRWxlbWVudC5qcyBcCisgICAgICAgICQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvU291cmNlRnJhbWUuanMgXAorICAgICAgICAkKFdlYkNv
cmUpL3BhZ2UvaW5zcGVjdG9yL1NvdXJjZVZpZXcuanMgXAorICAgICAgICAkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL1N0eWxlc1NpZGViYXJQYW5lLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9w
YWdlL2luc3BlY3Rvci9UZXh0UHJvbXB0LmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2lu
c3BlY3Rvci90cmVlb3V0bGluZS5qcyBcCisgICAgICAgICQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0
b3IvdXRpbGl0aWVzLmpzIFwKKyAgICAgICAgJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9WaWV3
LmpzCisKK3dlYmluc3BlY3RvcmltYWdlc2RpciA9ICR7ZGF0YWRpcn0vd2Via2l0LTEuMC93ZWJp
bnNwZWN0b3IvSW1hZ2VzCitkaXN0X3dlYmluc3BlY3RvcmltYWdlc19EQVRBID0gXAorCSQoV2Vi
Q29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2JhY2sucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2Uv
aW5zcGVjdG9yL0ltYWdlcy9jaGVja2VyLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rv
ci9JbWFnZXMvY2xlYXJDb25zb2xlQnV0dG9ucy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNw
ZWN0b3IvSW1hZ2VzL2NvbnNvbGVCdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3Bl
Y3Rvci9JbWFnZXMvZGF0YWJhc2UucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0lt
YWdlcy9kYXRhYmFzZXNJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFn
ZXMvZGF0YWJhc2VUYWJsZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2Vz
L2RlYnVnZ2VyQ29udGludWUucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdl
cy9kZWJ1Z2dlclBhdXNlLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMv
ZGVidWdnZXJTdGVwSW50by5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2Vz
L2RlYnVnZ2VyU3RlcE91dC5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2Vz
L2RlYnVnZ2VyU3RlcE92ZXIucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdl
cy9kZWJ1Z2dpbmdCdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFn
ZXMvZGlzY2xvc3VyZVRyaWFuZ2xlU21hbGxEb3duQmxhY2sucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9kaXNjbG9zdXJlVHJpYW5nbGVTbWFsbERvd24ucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kaXNjbG9zdXJlVHJpYW5nbGVTbWFsbERv
d25XaGl0ZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2Rpc2Nsb3N1
cmVUcmlhbmdsZVNtYWxsUmlnaHRCbGFjay5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0
b3IvSW1hZ2VzL2Rpc2Nsb3N1cmVUcmlhbmdsZVNtYWxsUmlnaHREb3duQmxhY2sucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9kaXNjbG9zdXJlVHJpYW5nbGVTbWFsbFJp
Z2h0RG93bi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2Rpc2Nsb3N1
cmVUcmlhbmdsZVNtYWxsUmlnaHREb3duV2hpdGUucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5z
cGVjdG9yL0ltYWdlcy9kaXNjbG9zdXJlVHJpYW5nbGVTbWFsbFJpZ2h0LnBuZyBcCisJJChXZWJD
b3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZGlzY2xvc3VyZVRyaWFuZ2xlU21hbGxSaWdodFdo
aXRlLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvZG9ja0J1dHRvbnMu
cG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9lbGVtZW50c0ljb24ucG5n
IFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9lcnJvckljb24ucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9lcnJvck1lZGl1bUljb24ucG5nIFwKKwkk
KFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9leGNsdWRlQnV0dG9ucy5wbmcgXAorCSQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2ZvY3VzQnV0dG9ucy5wbmcgXAorCSQoV2Vi
Q29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL2ZvcndhcmQucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9nbG9zc3lIZWFkZXIucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2Uv
aW5zcGVjdG9yL0ltYWdlcy9nbG9zc3lIZWFkZXJQcmVzc2VkLnBuZyBcCisJJChXZWJDb3JlKS9w
YWdlL2luc3BlY3Rvci9JbWFnZXMvZ2xvc3N5SGVhZGVyU2VsZWN0ZWQucG5nIFwKKwkkKFdlYkNv
cmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9nbG9zc3lIZWFkZXJTZWxlY3RlZFByZXNzZWQucG5n
IFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9nb0Fycm93LnBuZyBcCisJJChX
ZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvbGFyZ2VyUmVzb3VyY2VzQnV0dG9ucy5wbmcg
XAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3BhbmVCb3R0b21Hcm93QWN0aXZl
LnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcGFuZUJvdHRvbUdyb3cu
cG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9wYW5lR3Jvd0hhbmRsZUxp
bmUucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9wYXVzZU9uRXhjZXB0
aW9uQnV0dG9ucy5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3BlcmNl
bnRCdXR0b25zLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcHJvZmls
ZUdyb3VwSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3Byb2Zp
bGVJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcHJvZmlsZXNJ
Y29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcHJvZmlsZVNtYWxs
SWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3JlY29yZEJ1dHRv
bnMucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9yZWxvYWRCdXR0b25z
LnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcmVzb3VyY2VDU1NJY29u
LnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvcmVzb3VyY2VEb2N1bWVu
dEljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9yZXNvdXJjZURv
Y3VtZW50SWNvblNtYWxsLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMv
cmVzb3VyY2VKU0ljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9y
ZXNvdXJjZVBsYWluSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2Vz
L3Jlc291cmNlUGxhaW5JY29uU21hbGwucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9y
L0ltYWdlcy9yZXNvdXJjZXNJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9J
bWFnZXMvcmVzb3VyY2VzU2l6ZUdyYXBoSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNw
ZWN0b3IvSW1hZ2VzL3Jlc291cmNlc1RpbWVHcmFwaEljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3Bh
Z2UvaW5zcGVjdG9yL0ltYWdlcy9zY3JpcHRzSWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9p
bnNwZWN0b3IvSW1hZ2VzL3NlZ21lbnRFbmQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVj
dG9yL0ltYWdlcy9zZWdtZW50SG92ZXJFbmQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVj
dG9yL0ltYWdlcy9zZWdtZW50SG92ZXIucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9y
L0ltYWdlcy9zZWdtZW50LnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMv
c2VnbWVudFNlbGVjdGVkRW5kLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFn
ZXMvc2VnbWVudFNlbGVjdGVkLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFn
ZXMvc3BsaXR2aWV3RGltcGxlLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFn
ZXMvc3BsaXR2aWV3RGl2aWRlckJhY2tncm91bmQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5z
cGVjdG9yL0ltYWdlcy9zdGF0dXNiYXJCYWNrZ3JvdW5kLnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvc3RhdHVzYmFyQm90dG9tQmFja2dyb3VuZC5wbmcgXAorCSQoV2Vi
Q29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3N0YXR1c2JhckJ1dHRvbnMucG5nIFwKKwkkKFdl
YkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9zdGF0dXNiYXJNZW51QnV0dG9uLnBuZyBcCisJ
JChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc3RhdHVzYmFyTWVudUJ1dHRvblNlbGVj
dGVkLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvc3RhdHVzYmFyUmVz
aXplckhvcml6b250YWwucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy9z
dGF0dXNiYXJSZXNpemVyVmVydGljYWwucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9y
L0ltYWdlcy90aW1lbGluZVBpbGxCbHVlLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rv
ci9JbWFnZXMvdGltZWxpbmVQaWxsR3JheS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0
b3IvSW1hZ2VzL3RpbWVsaW5lUGlsbEdyZWVuLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3Bl
Y3Rvci9JbWFnZXMvdGltZWxpbmVQaWxsT3JhbmdlLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2lu
c3BlY3Rvci9JbWFnZXMvdGltZWxpbmVQaWxsUHVycGxlLnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvdGltZWxpbmVQaWxsUmVkLnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvdGltZWxpbmVQaWxsWWVsbG93LnBuZyBcCisJJChXZWJDb3JlKS9w
YWdlL2luc3BlY3Rvci9JbWFnZXMvdGlwQmFsbG9vbkJvdHRvbS5wbmcgXAorCSQoV2ViQ29yZSkv
cGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RpcEJhbGxvb24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2Uv
aW5zcGVjdG9yL0ltYWdlcy90aXBJY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rv
ci9JbWFnZXMvdGlwSWNvblByZXNzZWQucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9y
L0ltYWdlcy90b29sYmFySXRlbVNlbGVjdGVkLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3Bl
Y3Rvci9JbWFnZXMvdHJlZURvd25UcmlhbmdsZUJsYWNrLnBuZyBcCisJJChXZWJDb3JlKS9wYWdl
L2luc3BlY3Rvci9JbWFnZXMvdHJlZURvd25UcmlhbmdsZVdoaXRlLnBuZyBcCisJJChXZWJDb3Jl
KS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvdHJlZVJpZ2h0VHJpYW5nbGVCbGFjay5wbmcgXAorCSQo
V2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3RyZWVSaWdodFRyaWFuZ2xlV2hpdGUucG5n
IFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy90cmVlVXBUcmlhbmdsZUJsYWNr
LnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvdHJlZVVwVHJpYW5nbGVX
aGl0ZS5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3VzZXJJbnB1dElj
b24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy91c2VySW5wdXRQcmV2
aW91c0ljb24ucG5nIFwKKwkkKFdlYkNvcmUpL3BhZ2UvaW5zcGVjdG9yL0ltYWdlcy93YXJuaW5n
SWNvbi5wbmcgXAorCSQoV2ViQ29yZSkvcGFnZS9pbnNwZWN0b3IvSW1hZ2VzL3dhcm5pbmdNZWRp
dW1JY29uLnBuZyBcCisJJChXZWJDb3JlKS9wYWdlL2luc3BlY3Rvci9JbWFnZXMvd2FybmluZ3NF
cnJvcnMucG5nCisKICMgQ2xlYW4gcnVsZXMgZm9yIFdlYkNvcmUKIAogQ0xFQU5GSUxFUyArPSBc
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CmluZGV4IDkzNDMyZmUuLjUyNmU5Y2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMDgtMDgtMjYg
IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlJbXBsZW1lbnRlZCBhIG5ldyBXZWJLaXRXZWJJbnNw
ZWN0b3IgY2xhc3MgdG8gcHJvdmlkZSBhIEdPYmplY3QKKwlBUEkgZm9yIHRoZSBXZWIgSW5zcGVj
dG9yLiBBbHNvIGltcGxlbWVudGVkIEluc3BlY3RvckNsaWVudC4KKwkKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0Ojpub3Rp
ZnlXZWJWaWV3RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjpJ
bnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6Omluc3Bl
Y3RvckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6d2ViVmll
d0Rlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6Y3JlYXRlUGFn
ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6c2hvd1dpbmRvdyk6CisgICAg
ICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2Vi
S2l0OjpJbnNwZWN0b3JDbGllbnQ6OmF0dGFjaFdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6Oklu
c3BlY3RvckNsaWVudDo6ZGV0YWNoV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
Q2xpZW50OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRHdGsuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0Lmg6CisgICAgICAg
ICogd2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3Q6CisgICAgICAgICogd2Via2l0L3dlYmtpdGRl
ZmluZXMuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJJ
bnNwZWN0b3JQcml2YXRlOjp3ZWJraXRfaW5zcGVjdF93ZWJfdmlld19yZXF1ZXN0X2hhbmRsZWQp
OgorICAgICAgICAoX1dlYktpdFdlYkluc3BlY3RvclByaXZhdGU6OndlYmtpdF93ZWJfaW5zcGVj
dG9yX2NsYXNzX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYkluc3BlY3RvclByaXZhdGU6Ondl
YmtpdF93ZWJfaW5zcGVjdG9yX2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYkluc3BlY3RvclBy
aXZhdGU6OndlYmtpdF93ZWJfaW5zcGVjdG9yX2ZpbmFsaXplKToKKyAgICAgICAgKF9XZWJLaXRX
ZWJJbnNwZWN0b3JQcml2YXRlOjp3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfcHJvcGVydHkpOgor
ICAgICAgICAoX1dlYktpdFdlYkluc3BlY3RvclByaXZhdGU6OndlYmtpdF93ZWJfaW5zcGVjdG9y
X2dldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZTo6d2Vi
a2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3dlYl92aWV3KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2ViaW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5n
cy5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOjopOgorICAgICAgICAo
X1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZTo6d2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0
KToKKyAgICAgICAgKF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6OndlYmtpdF93ZWJfc2V0dGlu
Z3Nfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6Ondl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJTZXR0
aW5nc1ByaXZhdGU6OndlYmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICogd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg6CisK
IDIwMDgtMDgtMTggIEFscCBUb2tlciAgPGFscEBudWFudGkuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50R3RrLmNwcAppbmRleCAxYTcyMjYxLi5jODMwZGJkIDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKKysrIGIv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCkBAIC0xLDQg
KzEsNiBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEK
KyAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKQEAgLTE3LDYgKzE5LDExIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50R3RrLmgiCiAKKyNpbmNsdWRl
ICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCisjaW5j
bHVkZSAid2Via2l0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCkBAIC0yNCwxNSArMzEsNzAgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgdm9pZCBub3RpZnlX
ZWJWaWV3RGVzdHJveWVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEluc3BlY3RvckNsaWVudCog
aW5zcGVjdG9yQ2xpZW50KQoreworICAgIGluc3BlY3RvckNsaWVudC0+d2ViVmlld0Rlc3Ryb3ll
ZCgpOworfQorCitJbnNwZWN0b3JDbGllbnQ6Okluc3BlY3RvckNsaWVudChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KDApCisgICAgLCBtX2luc3BlY3RlZFdlYlZpZXco
d2ViVmlldykKK3t9CisKIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQo
KQogeworICAgIGlmIChtX3dlYlZpZXcpIHsKKyAgICAgICAgZ2Jvb2xlYW4gaGFuZGxlZCA9IEZB
TFNFOworICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJJbnNwZWN0b3IsICJkZXN0
cm95IiwgJmhhbmRsZWQpOworCisgICAgICAgIC8qIHdlIGNhbiBub3cgZGlzcG9zZSBvdXIgb3du
IHJlZmVyZW5jZSAqLworICAgICAgICBnX29iamVjdF91bnJlZihtX3dlYkluc3BlY3Rvcik7Cisg
ICAgfQorCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50Ojp3ZWJW
aWV3RGVzdHJveWVkKCkKK3sKKyAgICBtX3dlYlZpZXcgPSAwOworICAgIGNvcmUobV9pbnNwZWN0
ZWRXZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5wYWdlRGVzdHJveWVkKCk7CisKKyAg
ICAvKiBjcmVhdGVQYWdlIHdpbGwgYmUgY2FsbGVkIGFnYWluLCBpZiB0aGUgdXNlciBjaG9vc2Vz
IHRvIGluc3BlY3QKKyAgICAgKiBzb21ldGhpbmcgZWxzZSwgYW5kIHRoZSBpbnNwZWN0b3Igd2ls
bCBiZSByZWZlcmVuY2VkIGFnYWluLAorICAgICAqIHRoZXJlICovCisgICAgZ19vYmplY3RfdW5y
ZWYobV93ZWJJbnNwZWN0b3IpOworfQorCiBQYWdlKiBJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZVBh
Z2UoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKG1f
d2ViVmlldykKKyAgICAgIHJldHVybiBjb3JlKG1fd2ViVmlldyk7CisKKyAgICAvKiBUaGlzIGdf
b2JqZWN0X2dldCB3aWxsIHJlZiB0aGUgaW5zcGVjdG9yLiBXZSdyZSBub3QgZG9pbmcgYW4KKyAg
ICAgICB1bnJlZiBpZiB0aGlzIG1ldGhvZCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBpbnNwZWN0b3Ig
b2JqZWN0IG11c3QKKyAgICAgICBiZSBhbGl2ZSBldmVuIGFmdGVyIHRoZSBpbnNwZWN0ZWQgV2Vi
VmlldyBpcyBkZXN0cm95ZWQgLSB0aGUKKyAgICAgICBjbG9zZS13aW5kb3cgYW5kIGRlc3Ryb3kg
c2lnbmFscyBzdGlsbCBuZWVkIHRvIGJlCisgICAgICAgZW1pdHRlZC4gKi8KKyAgICBXZWJLaXRX
ZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvcjsKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1QobV9p
bnNwZWN0ZWRXZWJWaWV3KSwgIndlYi1pbnNwZWN0b3IiLCAmd2ViSW5zcGVjdG9yLCBOVUxMKTsK
KyAgICBtX3dlYkluc3BlY3RvciA9IHdlYkluc3BlY3RvcjsKKworICAgIGdfc2lnbmFsX2VtaXRf
YnlfbmFtZShtX3dlYkluc3BlY3RvciwgImluc3BlY3Qtd2ViLXZpZXciLCBtX2luc3BlY3RlZFdl
YlZpZXcsICZtX3dlYlZpZXcpOworCisgICAgaWYgKCFtX3dlYlZpZXcpIHsKKyAgICAgICAgZ19v
YmplY3RfdW5yZWYobV93ZWJJbnNwZWN0b3IpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisK
KyAgICB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfd2ViX3ZpZXcobV93ZWJJbnNwZWN0b3IsIG1f
d2ViVmlldyk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKG1fd2ViVmlldyksICJk
ZXN0cm95IiwKKyAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sobm90aWZ5V2ViVmlld0Rl
c3Ryb3llZCksIChncG9pbnRlcil0aGlzKTsKKworICAgIHdlYmtpdF93ZWJfdmlld19vcGVuKG1f
d2ViVmlldywgImZpbGU6Ly8iREFUQV9ESVIiL3dlYmtpdC0xLjAvd2ViaW5zcGVjdG9yL2luc3Bl
Y3Rvci5odG1sIik7CisgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQobV93ZWJWaWV3KSk7
CisKKyAgICByZXR1cm4gY29yZShtX3dlYlZpZXcpOwogfQogCiBTdHJpbmcgSW5zcGVjdG9yQ2xp
ZW50Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKQEAgLTQzLDIyICsxMDUsNDIgQEAgU3RyaW5nIElu
c3BlY3RvckNsaWVudDo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCiAKIHZvaWQgSW5zcGVjdG9yQ2xp
ZW50OjpzaG93V2luZG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93
ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBnYm9vbGVhbiBoYW5kbGVkID0gRkFMU0U7
CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViSW5zcGVjdG9yLCAic2hvdy13aW5kb3ci
LCAmaGFuZGxlZCk7CisKKyAgICBjb3JlKG1faW5zcGVjdGVkV2ViVmlldyktPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+c2V0V2luZG93VmlzaWJsZSh0cnVlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JD
bGllbnQ6OmNsb3NlV2luZG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICgh
bV93ZWJWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBnYm9vbGVhbiBoYW5kbGVkID0gRkFM
U0U7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fd2ViSW5zcGVjdG9yLCAiY2xvc2Utd2lu
ZG93IiwgJmhhbmRsZWQpOworICAgIAorICAgIGNvcmUobV9pbnNwZWN0ZWRXZWJWaWV3KS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5zZXRXaW5kb3dWaXNpYmxlKGZhbHNlKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JDbGllbnQ6OmF0dGFjaFdpbmRvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2Jvb2xlYW4gaGFu
ZGxlZCA9IEZBTFNFOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYkluc3BlY3Rvciwg
ImF0dGFjaC13aW5kb3ciLCAmaGFuZGxlZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50Ojpk
ZXRhY2hXaW5kb3coKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZp
ZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGdib29sZWFuIGhhbmRsZWQgPSBGQUxTRTsKKyAg
ICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJJbnNwZWN0b3IsICJkZXR0YWNoLXdpbmRvdyIs
ICZoYW5kbGVkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93
SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKQEAgLTc2LDkgKzE1OCwxMiBAQCB2b2lkIEluc3BlY3Rv
ckNsaWVudDo6aGlkZUhpZ2hsaWdodCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikKK3Zv
aWQgSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgbmV3
VVJMKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAg
ICAgIHJldHVybjsKKworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNwZWN0ZWRfdXJp
KG1fd2ViSW5zcGVjdG9yLCBuZXdVUkwudXRmOCgpLmRhdGEoKSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmggYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCmluZGV4IGZmNjBmYWIu
LmIxMWMxNWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRHdGsuaApAQCAtMzAsNiArMzAsOCBAQAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRHdGtfaAog
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAid2Via2l0d2Vidmlldy5o
IgorI2luY2x1ZGUgIndlYmtpdHdlYmluc3BlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgTm9kZTsKQEAgLTQxLDcgKzQzLDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiAgICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudCB7CiAgICAgcHVibGljOgorICAgICAgICBJbnNwZWN0b3JDbGllbnQoV2ViS2l0V2ViVmll
dyogd2ViVmlldyk7CisKICAgICAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgp
OworICAgICAgICB2b2lkIHdlYlZpZXdEZXN0cm95ZWQoKTsKIAogICAgICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlBhZ2UqIGNyZWF0ZVBhZ2UoKTsKIApAQCAtNTgsNiArNjMsMTEgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoV2ViQ29yZTo6Tm9kZSop
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG5ld1VSTCk7
CisKKyAgICBwcml2YXRlOgorICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CisgICAg
ICAgIFdlYktpdFdlYlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKKyAgICAgICAgV2ViS2l0V2Vi
SW5zcGVjdG9yKiBtX3dlYkluc3BlY3RvcjsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXQuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCmluZGV4
IDEwYzIxNGYuLmUxOWNiYzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5o
CisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5j
bHVkZSA8d2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dl
YmtpdHdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmg+Cisj
aW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5oPgogI2luY2x1ZGUgPHdlYmtpdC93
ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlz
dC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5oPgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVmaW5lcy5oIGIvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0ZGVmaW5lcy5oCmluZGV4IDM4NmMzZTEuLjBjMDgwZjQgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRkZWZpbmVzLmgKQEAgLTU1LDYgKzU1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkZy
YW1lQ2xhc3MgV2ViS2l0V2ViRnJhbWVDbGFzczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJT
ZXR0aW5ncyBXZWJLaXRXZWJTZXR0aW5nczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJTZXR0
aW5nc0NsYXNzIFdlYktpdFdlYlNldHRpbmdzQ2xhc3M7CiAKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJJbnNwZWN0b3IgV2ViS2l0V2ViSW5zcGVjdG9yOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFdlYkluc3BlY3RvckNsYXNzIFdlYktpdFdlYkluc3BlY3RvckNsYXNzOworCiB0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3OwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFdlYlZpZXdDbGFzcyBXZWJLaXRXZWJWaWV3Q2xhc3M7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZh
dGUuaAppbmRleCAzZWZhMDJhLi4zMDQ3YWY0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5o
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRHdGsuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogCiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAt
NjcsNiArNjgsNyBAQCBleHRlcm4gIkMiIHsKICAgICBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2
YXRlIHsKICAgICAgICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2U7CiAgICAgICAgIFdlYktpdFdl
YlNldHRpbmdzKiB3ZWJTZXR0aW5nczsKKyAgICAgICAgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJJ
bnNwZWN0b3I7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1haW5GcmFtZTsKICAgICAgICAg
V2ViQ29yZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKQEAgLTExMCw2ICsx
MTIsMTUgQEAgZXh0ZXJuICJDIiB7CiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qCiAgICAgd2Vi
a2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9pdGVtKFdlYkNvcmU6Okhpc3RvcnlJ
dGVtKik7CiAKKyAgICB2b2lkCisgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X2luc3BlY3Rv
cl9jbGllbnQoV2ViS2l0V2ViSW5zcGVjdG9yKiwgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQqKTsK
KworICAgIHZvaWQKKyAgICB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfd2ViX3ZpZXcoV2ViS2l0
V2ViSW5zcGVjdG9yICp3ZWJfaW5zcGVjdG9yLCBXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldyk7CisK
KyAgICB2b2lkCisgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X2luc3BlY3RlZF91cmkoV2Vi
S2l0V2ViSW5zcGVjdG9yKiB3ZWJfaW5zcGVjdG9yLCBjb25zdCBnY2hhciogaW5zcGVjdGVkX3Vy
aSk7CisKICAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB3ZWJraXR3ZWJmcmFtZS5oIG9uY2Ug
dGhlaXIgQVBJIGhhcyBiZWVuIGRpc2N1c3NlZC4KIAogICAgIFdFQktJVF9BUEkgR1NMaXN0Kgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcCBiL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZjFmY2U3OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5jcHAKQEAgLTAsMCArMSwzNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3JvbmhhIFNpbHZhCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIndlYmtpdHdlYmluc3BlY3Rvci5oIgorI2luY2x1ZGUgIndlYmtpdG1h
cnNoYWwuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRHdGsuaCIKKyNpbmNsdWRlICJ3ZWJr
aXRwcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2V4dGVybiAiQyIgewor
CitlbnVtIHsKKyAgICBJTlNQRUNUX1dFQl9WSUVXLAorICAgIFNIT1dfV0lORE9XLAorICAgIEFU
VEFDSF9XSU5ET1csCisgICAgREVUVEFDSF9XSU5ET1csCisgICAgQ0xPU0VfV0lORE9XLAorICAg
IEZJTklTSEVELAorICAgIExBU1RfU0lHTkFMCit9OworCitzdGF0aWMgZ3VpbnQgd2Via2l0X3dl
Yl9pbnNwZWN0b3Jfc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CisKK2VudW0geworICAg
IFBST1BfMCwKKworICAgIFBST1BfV0VCX1ZJRVcsCisgICAgUFJPUF9JTlNQRUNURURfVVJJLAor
fTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRXZWJJbnNwZWN0b3IsIHdlYmtpdF93ZWJfaW5zcGVj
dG9yLCBHX1RZUEVfT0JKRUNUKQorCitzdHJ1Y3QgX1dlYktpdFdlYkluc3BlY3RvclByaXZhdGUg
eworICAgIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50OworICAgIFdlYktpdFdlYlZp
ZXcqIGluc3BlY3Rvcl92aWV3OworICAgIGdjaGFyKiBpbnNwZWN0ZWRfdXJpOworfTsKKworI2Rl
ZmluZSBXRUJLSVRfV0VCX0lOU1BFQ1RPUl9HRVRfUFJJVkFURShvYmopIChHX1RZUEVfSU5TVEFO
Q0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsIFdlYktpdFdl
Ykluc3BlY3RvclByaXZhdGUpKQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9m
aW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2luc3Bl
Y3Rvcl9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfaW5zcGVjdG9yX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQs
IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKTsKKworc3RhdGljIGdib29sZWFuIHdl
YmtpdF9pbnNwZWN0X3dlYl92aWV3X3JlcXVlc3RfaGFuZGxlZChHU2lnbmFsSW52b2NhdGlvbkhp
bnQqIGloaW50LCBHVmFsdWUqIHJldHVybkFjY3UsIGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVy
biwgZ3BvaW50ZXIgZHVtbXkpCit7CisgICAgZ2Jvb2xlYW4gY29udGludWVFbWlzc2lvbiA9IFRS
VUU7CisgICAgZ3BvaW50ZXIgbmV3V2ViVmlldyA9IGdfdmFsdWVfZ2V0X29iamVjdChoYW5kbGVy
UmV0dXJuKTsKKyAgICBnX3ZhbHVlX3NldF9vYmplY3QocmV0dXJuQWNjdSwgbmV3V2ViVmlldyk7
CisKKyAgICBpZiAobmV3V2ViVmlldykKKyAgICAgICAgY29udGludWVFbWlzc2lvbiA9IEZBTFNF
OworCisgICAgcmV0dXJuIGNvbnRpbnVlRW1pc3Npb247Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfaW5zcGVjdG9yX2NsYXNzX2luaXQoV2ViS2l0V2ViSW5zcGVjdG9yQ2xhc3MqIGtsYXNz
KQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGts
YXNzKTsKKyAgICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF93ZWJfaW5zcGVjdG9y
X2ZpbmFsaXplOworICAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF93ZWJf
aW5zcGVjdG9yX3NldF9wcm9wZXJ0eTsKKyAgICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkg
PSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfcHJvcGVydHk7CisKKyAgICAvKioKKyAgICAgKiBX
ZWJLaXRXZWJJbnNwZWN0b3I6Omluc3BlY3Qtd2ViLXZpZXc6CisgICAgICogQHdlYl9pbnNwZWN0
b3I6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQHdl
Yl92aWV3OiB0aGUgI1dlYktpdFdlYiB3aGljaCB3aWxsIGJlIGluc3BlY3RlZAorICAgICAqIEBy
ZXR1cm46IGEgbmV3bHkgYWxsb2NhdGVkICNXZWJLaXRXZWJWaWV3IG9yICVOVUxMCisgICAgICoK
KyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgYWN0aXZhdGVzIHRoZSAnaW5zcGVjdCcgY29u
dGV4dCBtZW51IGl0ZW0KKyAgICAgKiB0byBpbnNwZWN0IGEgd2ViIHZpZXcuIFRoZSBhcHBsaWNh
dGlvbiB3aGljaCBpcyBpbnRlcmVzdGVkIGluCisgICAgICogdGhlIGluc3BlY3RvciBzaG91bGQg
Y3JlYXRlIGEgd2luZG93LCBvciBvdGhlcndpc2UgYWRkIHRoZQorICAgICAqICNXZWJLaXRXZWJW
aWV3IGl0IGNyZWF0ZXMgdG8gYW4gZXhpc3Rpbmcgd2luZG93LgorICAgICAqCisgICAgICogWW91
IGRvbid0IG5lZWQgdG8gaGFuZGxlIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlCisgICAgICog
I1dlYktpdFdlYlZpZXcgaW5zdGFuY2UgeW91IGNyZWF0ZTsgdGhlIHdpZGdldCB0byB3aGljaCB5
b3UgYWRkCisgICAgICogaXQgd2lsbCBkbyB0aGF0LgorICAgICAqCisgICAgICogU2luY2U6IDEu
MC4yCisgICAgICovCisgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2lnbmFsc1tJTlNQRUNUX1dF
Ql9WSUVXXSA9IGdfc2lnbmFsX25ldygiaW5zcGVjdC13ZWItdmlldyIsCisgICAgICAgICAgICBH
X1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJ
R05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICAwLAorICAgICAg
ICAgICAgd2Via2l0X2luc3BlY3Rfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkLAorICAgICAgICAg
ICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX09CSkVDVF9fT0JKRUNULAorICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcgLCAxLAorICAgICAgICAgICAgV0VCS0lUX1RZ
UEVfV0VCX1ZJRVcpOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOjpzaG93
LXdpbmRvdzoKKyAgICAgKiBAd2ViX2luc3BlY3RvcjogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUg
c2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAcmV0dXJuOiAlVFJVRSBpZiB0aGUgc2lnbmFsIGhh
cyBiZWVuIGhhbmRsZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5zcGVjdG9y
IHdpbmRvdyBzaG91bGQgYmUgZGlzcGxheWVkLiBOb3RpY2UKKyAgICAgKiB0aGF0IHRoZSB3aW5k
b3cgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBhbHJlYWR5IGJ5IGhhbmRsaW5nCisgICAgICogOjpp
bnNwZWN0LXdlYi12aWV3LgorICAgICAqCisgICAgICogU2luY2U6IDEuMC4yCisgICAgICovCisg
ICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2lnbmFsc1tTSE9XX1dJTkRPV10gPSBnX3NpZ25hbF9u
ZXcoInNob3ctd2luZG93IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwK
KyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxf
QUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRv
cl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21h
cnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOICwgMCk7CisK
KyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJJbnNwZWN0b3I6OmF0dGFjaC13aW5kb3c6CisgICAg
ICogQHdlYl9pbnNwZWN0b3I6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0
dGVkCisgICAgICogQHJldHVybjogJVRSVUUgaWYgdGhlIHNpZ25hbCBoYXMgYmVlbiBoYW5kbGVk
CisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGluc3BlY3RvciBzaG91bGQgYXBwZWFy
IGF0IHRoZSBzYW1lIHdpbmRvdyBhcworICAgICAqIHRoZSAjV2ViS2l0V2ViVmlldyBiZWluZyBp
bnNwZWN0ZWQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMS4wLjIKKyAgICAgKi8KKyAgICB3ZWJr
aXRfd2ViX2luc3BlY3Rvcl9zaWduYWxzW0FUVEFDSF9XSU5ET1ddID0gZ19zaWduYWxfbmV3KCJh
dHRhY2gtd2luZG93IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAg
ICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNU
SU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90
cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgd2Via2l0X21hcnNo
YWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOICwgMCk7CisKKyAg
ICAvKioKKyAgICAgKiBXZWJLaXRXZWJJbnNwZWN0b3I6OmRldHRhY2gtd2luZG93OgorICAgICAq
IEB3ZWJfaW5zcGVjdG9yOiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRl
ZAorICAgICAqIEByZXR1cm46ICVUUlVFIGlmIHRoZSBzaWduYWwgaGFzIGJlZW4gaGFuZGxlZAor
ICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnNwZWN0b3Igc2hvdWxkIGFwcGVhciBp
biBhIHNlcGFyYXRlIHdpbmRvdy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjAuMgorICAgICAq
LworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NpZ25hbHNbREVUVEFDSF9XSU5ET1ddID0gZ19z
aWduYWxfbmV3KCJkZXR0YWNoLXdpbmRvdyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFT
UyhrbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8
IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgZ19zaWduYWxf
YWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAg
IHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVB
TiAsIDApOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOjpjbG9zZS13aW5k
b3c6CisgICAgICogQHdlYl9pbnNwZWN0b3I6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25h
bCBpcyBlbWl0dGVkCisgICAgICogQHJldHVybjogJVRSVUUgaWYgdGhlIHNpZ25hbCBoYXMgYmVl
biBoYW5kbGVkCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGluc3BlY3RvciB3aW5k
b3cgc2hvdWxkIGJlIGNsb3NlZC4gWW91IGNhbgorICAgICAqIGRlc3Ryb3kgdGhlIHdpbmRvdyBv
ciBoaWRlIGl0IHNvIHRoYXQgaXQgY2FuIGJlIGRpc3BsYXllZCBhZ2FpbgorICAgICAqIGJ5IGhh
bmRsaW5nIDo6c2hvdy13aW5kb3cgbGF0ZXIgb24uCisgICAgICoKKyAgICAgKiBOb3RpY2UgdGhh
dCB0aGUgaW5zcGVjdGVkICNXZWJLaXRXZWJWaWV3IG1heSBubyBsb25nZXIgZXhpc3QKKyAgICAg
KiB3aGVuIHRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQuCisgICAgICoKKyAgICAgKiBOb3RpY2UsIHRv
bywgdGhhdCBpZiB5b3UgZGVjaWRlIHRvIGRlc3Ryb3kgdGhlIHdpbmRvdywKKyAgICAgKiA6Omlu
c3BlY3Qtd2ViLXZpZXcgd2lsbCBiZSBlbW1pdGVkIGFnYWluLCB3aGVuIHRoZSB1c2VyCisgICAg
ICogaW5zcGVjdHMgYW4gZWxlbWVudC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjAuMgorICAg
ICAqLworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NpZ25hbHNbQ0xPU0VfV0lORE9XXSA9IGdf
c2lnbmFsX25ldygiY2xvc2Utd2luZG93IiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNT
KGtsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwg
R19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBnX3NpZ25hbF9h
Y2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsCisgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAg
d2Via2l0X21hcnNoYWxfQk9PTEVBTl9fVk9JRCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFO
ICwgMCk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJJbnNwZWN0b3I6OmZpbmlzaGVkOgor
ICAgICAqIEB3ZWJfaW5zcGVjdG9yOiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMg
ZW1pdHRlZAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnNwZWN0aW9uIGlzIGRv
bmUuIFlvdSBzaG91bGQgcmVsZWFzZSB5b3VyCisgICAgICogcmVmZXJlbmNlcyBvbiB0aGUgaW5z
cGVjdG9yIGF0IHRoaXMgdGltZS4gVGhlIGluc3BlY3RlZAorICAgICAqICNXZWJLaXRXZWJWaWV3
IG1heSBubyBsb25nZXIgZXhpc3Qgd2hlbiB0aGlzIHNpZ25hbCBpcyBlbWl0dGVkLgorICAgICAq
CisgICAgICogU2luY2U6IDEuMC4yCisgICAgICovCisgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jf
c2lnbmFsc1tGSU5JU0hFRF0gPSBnX3NpZ25hbF9uZXcoImZpbmlzaGVkIiwKKyAgICAgICAgICAg
IEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdf
U0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAg
ICAgICAgICBOVUxMLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIGdfY2Nsb3N1cmVf
bWFyc2hhbF9WT0lEX19WT0lELAorICAgICAgICAgICAgR19UWVBFX05PTkUgLCAwKTsKKworICAg
IC8qCisgICAgICogcHJvcGVydGllcworICAgICAqLworCisgICAgLyoqCisgICAgKiBXZWJLaXRX
ZWJJbnNwZWN0b3I6d2ViLXZpZXc6CisgICAgKgorICAgICogVGhlIFdlYiBWaWV3IHRoYXQgcmVu
ZGVycyB0aGUgV2ViIEluc3BlY3RvciBpdHNlbGYuCisgICAgKgorICAgICogU2luY2U6IDEuMC4y
CisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xh
c3MsIFBST1BfV0VCX1ZJRVcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfb2JqZWN0KCJ3ZWItdmlldyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZWIgVmlldyIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgV2ViIFZpZXcg
dGhhdCByZW5kZXJzIHRoZSBXZWIgSW5zcGVjdG9yIGl0c2VsZiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9W
SUVXLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2Vi
SW5zcGVjdG9yOmluc3BlY3RlZC11cmk6CisgICAgKgorICAgICogVGhlIFVSSSB0aGF0IGlzIGN1
cnJlbnRseSBiZWluZyBpbnNwZWN0ZWQuCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsIFBS
T1BfSU5TUEVDVEVEX1VSSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19zdHJpbmcoImluc3BlY3RlZC11cmkiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zcGVjdGVkIFVSSSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUg
VVJJIHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIGluc3BlY3RlZCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEQUJMRSkpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXpl
b2YoV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX2luc3BlY3Rvcl9pbml0KFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3RvcikKK3sK
KyAgICB3ZWJfaW5zcGVjdG9yLT5wcml2ID0gV0VCS0lUX1dFQl9JTlNQRUNUT1JfR0VUX1BSSVZB
VEUod2ViX2luc3BlY3Rvcik7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9y
X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRXZWJJbnNwZWN0b3IqIHdl
Yl9pbnNwZWN0b3IgPSBXRUJLSVRfV0VCX0lOU1BFQ1RPUihvYmplY3QpOworICAgIFdlYktpdFdl
Ykluc3BlY3RvclByaXZhdGUqIHByaXYgPSB3ZWJfaW5zcGVjdG9yLT5wcml2OworCisgICAgaWYg
KHByaXYtPmluc3BlY3Rvcl92aWV3KQorICAgICAgICBnX29iamVjdF91bnJlZihwcml2LT5pbnNw
ZWN0b3Jfdmlldyk7CisKKyAgICBpZiAocHJpdi0+aW5zcGVjdGVkX3VyaSkKKyAgICAgICAgZ19m
cmVlKHByaXYtPmluc3BlY3RlZF91cmkpOworCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dl
Yl9pbnNwZWN0b3JfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7
CisgICAgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJfaW5zcGVjdG9yID0gV0VCS0lUX1dFQl9JTlNQ
RUNUT1Iob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2Vi
X2luc3BlY3Rvci0+cHJpdjsKKworICAgIHN3aXRjaChwcm9wX2lkKSB7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9p
ZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfaW5zcGVjdG9yX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3Bf
aWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYklu
c3BlY3Rvciogd2ViX2luc3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9SKG9iamVjdCk7Cisg
ICAgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSogcHJpdiA9IHdlYl9pbnNwZWN0b3ItPnByaXY7
CisKKyAgICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfV0VCX1ZJRVc6CisgICAg
ICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgcHJpdi0+aW5zcGVjdG9yX3ZpZXcpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSU5TUEVDVEVEX1VSSToKKyAgICAgICAgZ192YWx1
ZV9zZXRfc3RyaW5nKHZhbHVlLCBwcml2LT5pbnNwZWN0ZWRfdXJpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lE
KG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKy8v
IGludGVybmFsIHVzZSBvbmx5Cit2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF93ZWJfdmll
dyhXZWJLaXRXZWJJbnNwZWN0b3IgKndlYl9pbnNwZWN0b3IsIFdlYktpdFdlYlZpZXcgKndlYl92
aWV3KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9JTlNQRUNUT1Iod2Vi
X2luc3BlY3RvcikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdl
Yl92aWV3KSk7CisKKyAgICBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2ViX2lu
c3BlY3Rvci0+cHJpdjsKKworICAgIGlmIChwcml2LT5pbnNwZWN0b3JfdmlldykKKyAgICAgICAg
Z19vYmplY3RfdW5yZWYocHJpdi0+aW5zcGVjdG9yX3ZpZXcpOworICAgIAorICAgIGdfb2JqZWN0
X3JlZih3ZWJfdmlldyk7CisgICAgcHJpdi0+aW5zcGVjdG9yX3ZpZXcgPSB3ZWJfdmlldzsKK30K
KworLyoqCisgKiB3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfd2ViX3ZpZXc6CisgKgorICogT2J0
YWlucyB0aGUgI1dlYktpdFdlYlZpZXcgdGhhdCBpcyB1c2VkIHRvIHJlbmRlciB0aGUKKyAqIGlu
c3BlY3Rvci4gVGhlICNXZWJLaXRXZWJWaWV3IGluc3RhbmNlIGlzIGNyZWF0ZWQgYnkgdGhlCisg
KiBhcHBsaWNhdGlvbiwgYnkgaGFuZGxpbmcgdGhlIDo6aW5zcGVjdC13ZWItdmlldyBzaWduYWwu
IFRoaXMgbWVhbnMKKyAqIHRoYXQgdGhpcyBtZXRob2QgbWF5IHJldHVybiAlTlVMTCBpZiB0aGUg
dXNlciBoYXNuJ3QgaW5zcGVjdGVkCisgKiBhbnl0aGluZy4KKyAqCisgKiBSZXR1cm5zOiB0aGUg
I1dlYktpdFdlYlZpZXcgaW5zdGFuY2UgdGhhdCBpcyB1c2VkIHRvIHJlbmRlciB0aGUKKyAqIGlu
c3BlY3RvciBvciAlTlVMTCBpZiBpdCBpcyBub3QgeWV0IGNyZWF0ZWQuCisgKgorICogU2luY2U6
IDEuMC4yCisgKiovCitXZWJLaXRXZWJWaWV3KiB3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfd2Vi
X3ZpZXcoV2ViS2l0V2ViSW5zcGVjdG9yICp3ZWJfaW5zcGVjdG9yKQoreworICAgIFdlYktpdFdl
Ykluc3BlY3RvclByaXZhdGUqIHByaXYgPSB3ZWJfaW5zcGVjdG9yLT5wcml2OworCisgICAgcmV0
dXJuIHByaXYtPmluc3BlY3Rvcl92aWV3OworfQorCisvLyBpbnRlcm5hbCB1c2Ugb25seQordm9p
ZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfaW5zcGVjdGVkX3VyaShXZWJLaXRXZWJJbnNwZWN0
b3IqIHdlYl9pbnNwZWN0b3IsIGNvbnN0IGdjaGFyKiBpbnNwZWN0ZWRfdXJpKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9JTlNQRUNUT1Iod2ViX2luc3BlY3RvcikpOwor
CisgICAgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZSogcHJpdiA9IHdlYl9pbnNwZWN0b3ItPnBy
aXY7CisKKyAgICBnX2ZyZWUocHJpdi0+aW5zcGVjdGVkX3VyaSk7CisgICAgcHJpdi0+aW5zcGVj
dGVkX3VyaSA9IGdfc3RyZHVwKGluc3BlY3RlZF91cmkpOworfQorCisvKioKKyAqIHdlYmtpdF93
ZWJfaW5zcGVjdG9yX2dldF9pbnNwZWN0ZWRfdXJpOgorICoKKyAqIE9idGFpbnMgdGhlIFVSSSB0
aGF0IGlzIGN1cnJlbnRseSBiZWluZyBpbnNwZWN0ZWQuCisgKgorICogUmV0dXJuczogYSBwb2lu
dGVyIHRvIHRoZSBVUkkgYXMgYW4gaW50ZXJuYWxseSBhbGxvY2F0ZWQgc3RyaW5nOyBpdAorICog
c2hvdWxkIG5vdCBiZSBmcmVlZCwgbW9kaWZpZWQgb3Igc3RvcmVkLgorICoKKyAqIFNpbmNlOiAx
LjAuMgorICoqLworY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9pbnNwZWN0
ZWRfdXJpKFdlYktpdFdlYkluc3BlY3RvciAqd2ViX2luc3BlY3RvcikKK3sKKyAgICBXZWJLaXRX
ZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2ViX2luc3BlY3Rvci0+cHJpdjsKKworICAgIHJl
dHVybiBwcml2LT5pbnNwZWN0ZWRfdXJpOworfQorCit2b2lkCit3ZWJraXRfd2ViX2luc3BlY3Rv
cl9zZXRfaW5zcGVjdG9yX2NsaWVudChXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYl9pbnNwZWN0b3Is
IFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCit7CisgICAgV2ViS2l0
V2ViSW5zcGVjdG9yUHJpdmF0ZSogcHJpdiA9IHdlYl9pbnNwZWN0b3ItPnByaXY7CisKKyAgICBw
cml2LT5pbnNwZWN0b3JDbGllbnQgPSBpbnNwZWN0b3JDbGllbnQ7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5oIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNDFjY2Y5MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmluc3BlY3Rvci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggR3VzdGF2byBOb3JvbmhhIFNpbHZhCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19XRUJLSVRfV0VCX0lOU1BFQ1RPUl9I
X18KKyNkZWZpbmUgX19XRUJLSVRfV0VCX0lOU1BFQ1RPUl9IX18KKworI2luY2x1ZGUgPGdsaWIt
b2JqZWN0Lmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5oPgorCitHX0JFR0lO
X0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RPUiAgICAgICAgICAgICh3
ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfV0VCX0lOU1BF
Q1RPUihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBX
RUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLCBXZWJLaXRXZWJJbnNwZWN0b3IpKQorI2RlZmluZSBX
RUJLSVRfV0VCX0lOU1BFQ1RPUl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19D
QVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLCBXZWJLaXRXZWJJbnNwZWN0
b3JDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19XRUJfSU5TUEVDVE9SKG9iaikgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9JTlNQRUNU
T1IpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX0lOU1BFQ1RPUl9DTEFTUyhrbGFzcykgKEdfVFlQ
RV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SKSkK
KyNkZWZpbmUgV0VCS0lUX1dFQl9JTlNQRUNUT1JfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5T
VEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RPUiwgV2ViS2l0
V2ViSW5zcGVjdG9yQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViSW5zcGVjdG9y
UHJpdmF0ZSBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYklu
c3BlY3RvciB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRXZWJJ
bnNwZWN0b3JQcml2YXRlKiBwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRXZWJJbnNwZWN0b3JD
bGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIC8qIFBhZGRpbmcg
Zm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2
b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAgICB2b2lkICgq
X3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQp
ICh2b2lkKTsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF93ZWJfaW5zcGVjdG9yX2dl
dF90eXBlICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJWaWV3Kgord2Via2l0X3dlYl9p
bnNwZWN0b3JfZ2V0X3dlYl92aWV3KFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3Rvcik7
CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfaW5z
cGVjdGVkX3VyaShXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYl9pbnNwZWN0b3IpOworCitHX0VORF9E
RUNMUworCisjZW5kaWYgLyogX19XRUJLSVRfV0VCX0lOU1BFQ1RPUl9IX18gKi8KZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCAwOGU0MDlkLi5iZDk5YTY2IDEwMDY0
NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysrIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCkBAIC00OCw2ICs0OCw3IEBAIHN0
cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIHsKICAgICBnYm9vbGVhbiByZXNpemFibGVf
dGV4dF9hcmVhczsKICAgICBnY2hhciogdXNlcl9zdHlsZXNoZWV0X3VyaTsKICAgICBnZmxvYXQg
em9vbV9zdGVwOworICAgIGdib29sZWFuIGVuYWJsZV9kZXZlbG9wZXJfZXh0cmFzOwogfTsKIAog
I2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNU
QU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBXZWJLaXRX
ZWJTZXR0aW5nc1ByaXZhdGUpKQpAQCAtNzMsNyArNzQsOCBAQCBlbnVtIHsKICAgICBQUk9QX0VO
QUJMRV9QTFVHSU5TLAogICAgIFBST1BfUkVTSVpBQkxFX1RFWFRfQVJFQVMsCiAgICAgUFJPUF9V
U0VSX1NUWUxFU0hFRVRfVVJJLAotICAgIFBST1BfWk9PTV9TVEVQCisgICAgUFJPUF9aT09NX1NU
RVAsCisgICAgUFJPUF9FTkFCTEVfREVWRUxPUEVSX0VYVFJBUwogfTsKIAogc3RhdGljIHZvaWQg
d2Via2l0X3dlYl9zZXR0aW5nc19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpOwpAQCAtMjY4LDYg
KzI3MCwyNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2NsYXNzX2luaXQoV2Vi
S2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjBmLCBHX01BWEZMT0FULCAwLjFmLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MpKTsKIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6
ZW5hYmxlLWRldmVsb3Blci1leHRyYXM6CisgICAgKgorICAgICogV2hldGhlciBkZXZlbG9wZXIg
ZXh0ZW5zaW9ucyBzaG91bGQgYmUgZW5hYmxlZC4gVGhpcyBlbmFibGVzLAorICAgICogZm9yIG5v
dywgdGhlIFdlYiBJbnNwZWN0b3IsIHdoaWNoIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIHRoZQor
ICAgICogI1dlYktpdFdlYkluc3BlY3RvciBpbnN0YW5jZSBoZWxkIGJ5IHRoZSAjV2ViS2l0V2Vi
VmlldyB0aGlzCisgICAgKiBzZXR0aW5nIGlzIGVuYWJsZWQgZm9yLgorICAgICoKKyAgICAqIFNp
bmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShn
b2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9F
TkFCTEVfREVWRUxPUEVSX0VYVFJBUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImVuYWJsZS1kZXZlbG9wZXItZXh0cmFzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJFbmFibGUgRGV2ZWxvcGVyIEV4dHJhcyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRW5hYmxlcyBzcGVjaWFsIGV4dGVuc2lvbnMgdGhhdCBoZWxw
IGRldmVsb3BlcnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOworCiAgICAgZ190
eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0V2ViU2V0dGluZ3NQcml2
YXRlKSk7CiB9CiAKQEAgLTM2NCw2ICszODUsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Nl
dHRpbmdzX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgog
ICAgIGNhc2UgUFJPUF9aT09NX1NURVA6CiAgICAgICAgIHByaXYtPnpvb21fc3RlcCA9IGdfdmFs
dWVfZ2V0X2Zsb2F0KHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJM
RV9ERVZFTE9QRVJfRVhUUkFTOgorICAgICAgICBwcml2LT5lbmFibGVfZGV2ZWxvcGVyX2V4dHJh
cyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDMzLDYgKzQ1Nyw5IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcF9pZCwgR1ZhCiAgICAgY2FzZSBQUk9QX1pPT01fU1RFUDoKICAgICAgICAgZ192
YWx1ZV9zZXRfZmxvYXQodmFsdWUsIHByaXYtPnpvb21fc3RlcCk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9FTkFCTEVfREVWRUxPUEVSX0VYVFJBUzoKKyAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxlX2RldmVsb3Blcl9leHRyYXMpOworICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDgz
LDYgKzUxMCw3IEBAIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHko
V2ViS2l0V2ViU2V0dGluZ3MqIHdlYl9zZXR0aW5ncykKICAgICAgICAgICAgICAgICAgInJlc2l6
YWJsZS10ZXh0LWFyZWFzIiwgcHJpdi0+cmVzaXphYmxlX3RleHRfYXJlYXMsCiAgICAgICAgICAg
ICAgICAgICJ1c2VyLXN0eWxlc2hlZXQtdXJpIiwgcHJpdi0+dXNlcl9zdHlsZXNoZWV0X3VyaSwK
ICAgICAgICAgICAgICAgICAgInpvb20tc3RlcCIsIHByaXYtPnpvb21fc3RlcCwKKyAgICAgICAg
ICAgICAgICAgImVuYWJsZS1kZXZlbG9wZXItZXh0cmFzIiwgcHJpdi0+ZW5hYmxlX2RldmVsb3Bl
cl9leHRyYXMsCiAgICAgICAgICAgICAgICAgIE5VTEwpKTsKIAogICAgIHJldHVybiBjb3B5Owpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBlMDZkY2JmLi42NTgyOWM0IDEwMDY0
NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
IndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXRtYXJzaGFsLmgiCiAjaW5jbHVkZSAi
d2Via2l0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHdlYmluc3BlY3Rvci5oIgogI2luY2x1
ZGUgIndlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oIgogI2luY2x1ZGUgIndlYmtpdHdlYmhpc3Rv
cnlpdGVtLmgiCiAKQEAgLTk5LDYgKzEwMCw3IEBAIGVudW0gewogICAgIFBST1BfUEFTVEVfVEFS
R0VUX0xJU1QsCiAgICAgUFJPUF9FRElUQUJMRSwKICAgICBQUk9QX1NFVFRJTkdTLAorICAgIFBS
T1BfV0VCX0lOU1BFQ1RPUiwKICAgICBQUk9QX1RSQU5TUEFSRU5ULAogICAgIFBST1BfWk9PTV9M
RVZFTCwKICAgICBQUk9QX0ZVTExfQ09OVEVOVF9aT09NCkBAIC0yMzYsNiArMjM4LDkgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BfaWQsIEdWYWx1ZSoKICAgICBjYXNlIFBST1BfU0VUVElOR1M6CiAgICAgICAgIGdf
dmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJW
aWV3KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9XRUJfSU5TUEVDVE9SOgorICAg
ICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVj
dG9yKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RSQU5TUEFSRU5U
OgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3RyYW5zcGFyZW50KHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CkBAIC03MjQsNiArNzI5LDcg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkK
ICAgICBnX29iamVjdF91bnJlZihwcml2LT5iYWNrRm9yd2FyZExpc3QpOwogICAgIGdfc2lnbmFs
X2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwcml2LT53ZWJTZXR0aW5ncywgKGdwb2ludGVy
KXdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnksIHdlYlZpZXcpOwogICAgIGdfb2JqZWN0
X3VucmVmKHByaXYtPndlYlNldHRpbmdzKTsKKyAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJJ
bnNwZWN0b3IpOwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPm1haW5GcmFtZSk7CiAgICAgZ19v
YmplY3RfdW5yZWYocHJpdi0+aW1Db250ZXh0KTsKICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYo
cHJpdi0+Y29weV90YXJnZXRfbGlzdCk7CkBAIC0xMjA5LDYgKzEyMTUsMjAgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3
Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkp
OwogCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJWaWV3OndlYi1pbnNwZWN0b3I6CisgICAgKgor
ICAgICogVGhlIGFzc29jaWF0ZWQgV2ViS2l0V2ViSW5zcGVjdG9yIGluc3RhbmNlLgorICAgICoK
KyAgICAqIFNpbmNlOiAxLjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9XRUJfSU5TUEVDVE9SLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgid2ViLWluc3BlY3RvciIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJXZWIgSW5zcGVjdG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlRoZSBhc3NvY2lhdGVkIFdlYktpdFdlYkluc3BlY3RvciBpbnN0
YW5jZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkp
OworCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJP
UF9FRElUQUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1f
c3BlY19ib29sZWFuKCJlZGl0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiRWRpdGFibGUiLApAQCAtMTI5NSw3ICsxMzE1LDcg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGNvcmUod2ViVmlldyktPnNl
dHRpbmdzKCk7CiAKICAgICBnY2hhciogZGVmYXVsdEVuY29kaW5nLCAqY3Vyc2l2ZUZvbnRGYW1p
bHksICpkZWZhdWx0Rm9udEZhbWlseSwgKmZhbnRhc3lGb250RmFtaWx5LCAqbW9ub3NwYWNlRm9u
dEZhbWlseSwgKnNhbnNTZXJpZkZvbnRGYW1pbHksICpzZXJpZkZvbnRGYW1pbHksICp1c2VyU3R5
bGVzaGVldFVyaTsKLSAgICBnYm9vbGVhbiBhdXRvTG9hZEltYWdlcywgYXV0b1Nocmlua0ltYWdl
cywgcHJpbnRCYWNrZ3JvdW5kcywgZW5hYmxlU2NyaXB0cywgZW5hYmxlUGx1Z2lucywgcmVzaXph
YmxlVGV4dEFyZWFzOworICAgIGdib29sZWFuIGF1dG9Mb2FkSW1hZ2VzLCBhdXRvU2hyaW5rSW1h
Z2VzLCBwcmludEJhY2tncm91bmRzLCBlbmFibGVTY3JpcHRzLCBlbmFibGVQbHVnaW5zLCBlbmFi
bGVEZXZlbG9wZXJFeHRyYXMsIHJlc2l6YWJsZVRleHRBcmVhczsKIAogICAgIGdfb2JqZWN0X2dl
dChHX09CSkVDVCh3ZWJTZXR0aW5ncyksCiAgICAgICAgICAgICAgICAgICJkZWZhdWx0LWVuY29k
aW5nIiwgJmRlZmF1bHRFbmNvZGluZywKQEAgLTEzMTIsNiArMTMzMiw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICAgICAgICAgICAgICAgICAgImVuYWJsZS1wbHVnaW5zIiwgJmVuYWJsZVBsdWdpbnMsCiAgICAg
ICAgICAgICAgICAgICJyZXNpemFibGUtdGV4dC1hcmVhcyIsICZyZXNpemFibGVUZXh0QXJlYXMs
CiAgICAgICAgICAgICAgICAgICJ1c2VyLXN0eWxlc2hlZXQtdXJpIiwgJnVzZXJTdHlsZXNoZWV0
VXJpLAorICAgICAgICAgICAgICAgICAiZW5hYmxlLWRldmVsb3Blci1leHRyYXMiLCAmZW5hYmxl
RGV2ZWxvcGVyRXh0cmFzLAogICAgICAgICAgICAgICAgICBOVUxMKTsKIAogICAgIHNldHRpbmdz
LT5zZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShkZWZhdWx0RW5jb2RpbmcpOwpAQCAtMTMyOCw2
ICsxMzQ5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHNldHRpbmdzLT5zZXRQbHVnaW5zRW5hYmxlZChl
bmFibGVQbHVnaW5zKTsKICAgICBzZXR0aW5ncy0+c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKHJl
c2l6YWJsZVRleHRBcmVhcyk7CiAgICAgc2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRp
b24oS1VSTCh1c2VyU3R5bGVzaGVldFVyaSkpOworICAgIHNldHRpbmdzLT5zZXREZXZlbG9wZXJF
eHRyYXNFbmFibGVkKGVuYWJsZURldmVsb3BlckV4dHJhcyk7CiAKICAgICBnX2ZyZWUoZGVmYXVs
dEVuY29kaW5nKTsKICAgICBnX2ZyZWUoY3Vyc2l2ZUZvbnRGYW1pbHkpOwpAQCAtMTM5Nyw3ICsx
NDE5LDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAgICAgd2ViVmlldy0+cHJpdiA9IHByaXY7CiAKICAgICBwcml2LT5pbUNvbnRl
eHQgPSBndGtfaW1fbXVsdGljb250ZXh0X25ldygpOwotICAgIHByaXYtPmNvcmVQYWdlID0gbmV3
IFBhZ2UobmV3IFdlYktpdDo6Q2hyb21lQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpDb250
ZXh0TWVudUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RWRpdG9yQ2xpZW50KHdlYlZpZXcp
LCBuZXcgV2ViS2l0OjpEcmFnQ2xpZW50LCBuZXcgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQpOwor
ICAgIAorICAgIFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQgPSBuZXcg
V2ViS2l0OjpJbnNwZWN0b3JDbGllbnQod2ViVmlldyk7CisgICAgcHJpdi0+Y29yZVBhZ2UgPSBu
ZXcgUGFnZShuZXcgV2ViS2l0OjpDaHJvbWVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkNv
bnRleHRNZW51Q2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpFZGl0b3JDbGllbnQod2ViVmll
dyksIG5ldyBXZWJLaXQ6OkRyYWdDbGllbnQsIGluc3BlY3RvckNsaWVudCk7CisKKyAgICAvKiB3
ZSBhbHNvIGFkZCBhIHNpbXBsZSB3cmFwcGVyIGNsYXNzIHRvIHByb3ZpZGUgdGhlIHB1YmxpYwor
ICAgICAgIGludGVyZmFjZSBmb3IgdGhlIFdlYiBJbnNwZWN0b3IgKi8KKyAgICBwcml2LT53ZWJJ
bnNwZWN0b3IgPSBXRUJLSVRfV0VCX0lOU1BFQ1RPUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX0lOU1BFQ1RPUiwgTlVMTCkpOworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNw
ZWN0b3JfY2xpZW50KHByaXYtPndlYkluc3BlY3RvciwgaW5zcGVjdG9yQ2xpZW50KTsKIAogICAg
IHByaXYtPmhvcml6b250YWxBZGp1c3RtZW50ID0gR1RLX0FESlVTVE1FTlQoZ3RrX2FkanVzdG1l
bnRfbmV3KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjApKTsKICAgICBwcml2LT52ZXJ0aWNh
bEFkanVzdG1lbnQgPSBHVEtfQURKVVNUTUVOVChndGtfYWRqdXN0bWVudF9uZXcoMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCkpOwpAQCAtMTQ3Myw2ICsxNTAyLDMwIEBAIFdlYktpdFdlYlNl
dHRpbmdzKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiB9CiAKIC8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3I6CisgKiBAd2Vi
VmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIE9idGFpbnMgdGhlICNXZWJLaXRXZWJJbnNw
ZWN0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZQorICogI1dlYktpdFdlYlZpZXcuIEV2ZXJ5ICNXZWJL
aXRXZWJWaWV3IG9iamVjdCBoYXMgYQorICogI1dlYktpdFdlYkluc3BlY3RvciBvYmplY3QgYXR0
YWNoZWQgdG8gaXQgYXMgc29vbiBhcyBpdCBpcyBjcmVhdGVkLAorICogc28gdGhpcyBmdW5jdGlv
biB3aWxsIG9ubHkgcmV0dXJuIE5VTEwgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCBhCisgKiB2YWxp
ZCAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBSZXR1cm5zOiB0aGUgI1dlYktpdFdlYkluc3BlY3Rv
ciBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlCisgKiAjV2ViS2l0V2ViVmlldzsgJU5VTEwg
aXMgb25seSByZXR1cm5lZCBpZiB0aGUgYXJndW1lbnQgaXMgbm90IGEKKyAqIHZhbGlkICNXZWJL
aXRXZWJWaWV3LgorICoKKyAqIFNpbmNlOiAxLjAuMgorICovCitXZWJLaXRXZWJJbnNwZWN0b3Iq
IHdlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVjdG9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBO
VUxMKTsKKworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsK
KyAgICByZXR1cm4gcHJpdi0+d2ViSW5zcGVjdG9yOworfQorCisvKioKICAqIHdlYmtpdF93ZWJf
dmlld19zZXRfbWFpbnRhaW5zX2JhY2tfZm9yd2FyZF9saXN0OgogICogQHdlYlZpZXc6IGEgI1dl
YktpdFdlYlZpZXcKICAqIEBmbGFnOiB0byB0ZWxsIHRoZSB2aWV3IHRvIG1haW50YWluIGEgYmFj
ayBvciBmb3J3YXJkIGxpc3QKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCBlYmQxYWEx
Li43MzcxOTU5IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgK
KysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC0yNDcsNiArMjQ3LDkg
QEAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyAgICAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICp3ZWJfdmlldywKIFdFQktJVF9BUEkgV2ViS2l0V2ViU2V0dGluZ3Mg
Kgogd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyAgICAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgV2ViS2l0V2ViSW5zcGVj
dG9yICoKK3dlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVjdG9yICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOworCiBXRUJLSVRfQVBJIGdib29sZWFuCiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3RyYW5zcGFyZW50ICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgKndlYl92aWV3KTsKIAo=
</data>
<flag name="review"
          id="10247"
          type_id="1"
          status="+"
          setter="zecke"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24756</attachid>
            <date>2008-10-29 15:08:28 -0700</date>
            <delta_ts>2008-10-29 15:08:28 -0700</delta_ts>
            <desc>Rediffed patch, style changes, Makefile changes</desc>
            <filename>0001-2008-10-29-Gustavo-Noronha-Silva-gns-gnome.org.patch</filename>
            <type>text/plain</type>
            <size>41742</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">RnJvbSA3ZTM5OTQ5MDQ0MmRiZjJkNGYyYThiN2Q4NTcxMWI4ZDgxNzM0NmI0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2Vs
ZmlzaC5vcmc+CkRhdGU6IFdlZCwgMjkgT2N0IDIwMDggMjE6NTc6NTkgKzAxMDAKU3ViamVjdDog
W1BBVENIXSAyMDA4LTEwLTI5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3Jn
PgoKICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCgogICAgICAgIEFkZGVkIGFs
bCB0aGUgZmlsZXMgdGhhdCBuZWVkIHRvIGJlIGluc3RhbGxlZCBmb3IgdGhlIEluc3BlY3RvciB0
bwogICAgICAgIHdvcmsuCgpXZWJDb3JlL0NoYW5nZUxvZzoKMjAwOC0xMC0yOSAgR3VzdGF2byBO
b3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KCiAgICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2Vy
IEZyZXl0aGVyLgoKICAgICAgICBBZGRlZCBhbGwgdGhlIGZpbGVzIHRoYXQgbmVlZCB0byBiZSBp
bnN0YWxsZWQgZm9yIHRoZSBJbnNwZWN0b3IgdG8KICAgICAgICB3b3JrLgoKICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgoKV2ViS2l0L2d0azoKMjAwOC0xMC0yOSAgR3VzdGF2byBOb3JvbmhhIFNp
bHZhICA8Z25zQGdub21lLm9yZz4KCiAgICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2VyIEZyZXl0aGVy
LgoKCUltcGxlbWVudGVkIGEgbmV3IFdlYktpdFdlYkluc3BlY3RvciBjbGFzcyB0byBwcm92aWRl
IGEgR09iamVjdAoJQVBJIGZvciB0aGUgV2ViIEluc3BlY3Rvci4gQWxzbyBpbXBsZW1lbnRlZCBJ
bnNwZWN0b3JDbGllbnQuCgogICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
R3RrLmNwcDoKICAgICAgICAoV2ViS2l0Ojpub3RpZnlXZWJWaWV3RGVzdHJveWVkKToKICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6Okluc3BlY3RvckNsaWVudCk6CiAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQpOgogICAgICAgIChXZWJL
aXQ6Okluc3BlY3RvckNsaWVudDo6d2ViVmlld0Rlc3Ryb3llZCk6CiAgICAgICAgKFdlYktpdDo6
SW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVQYWdlKToKICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JD
bGllbnQ6OnNob3dXaW5kb3cpOgogICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6Y2xv
c2VXaW5kb3cpOgogICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6YXR0YWNoV2luZG93
KToKICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OmRldGFjaFdpbmRvdyk6CiAgICAg
ICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKToKICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oOgogICAgICAgICogd2Via2l0
L3dlYmtpdC5oOgogICAgICAgICogd2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3Q6CiAgICAgICAg
KiB3ZWJraXQvd2Via2l0ZGVmaW5lcy5oOgogICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUu
aDoKICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwOiBBZGRlZC4KICAgICAg
ICAoX1dlYktpdFdlYkluc3BlY3RvclByaXZhdGU6OndlYmtpdF9pbnNwZWN0X3dlYl92aWV3X3Jl
cXVlc3RfaGFuZGxlZCk6CiAgICAgICAgKF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlOjp3ZWJr
aXRfd2ViX2luc3BlY3Rvcl9jbGFzc19pbml0KToKICAgICAgICAoX1dlYktpdFdlYkluc3BlY3Rv
clByaXZhdGU6OndlYmtpdF93ZWJfaW5zcGVjdG9yX2luaXQpOgogICAgICAgIChfV2ViS2l0V2Vi
SW5zcGVjdG9yUHJpdmF0ZTo6d2Via2l0X3dlYl9pbnNwZWN0b3JfZmluYWxpemUpOgogICAgICAg
IChfV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0ZTo6d2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3By
b3BlcnR5KToKICAgICAgICAoX1dlYktpdFdlYkluc3BlY3RvclByaXZhdGU6OndlYmtpdF93ZWJf
aW5zcGVjdG9yX2dldF9wcm9wZXJ0eSk6CiAgICAgICAgKF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2
YXRlOjp3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfd2ViX3ZpZXcpOgogICAgICAgICogd2Via2l0
L3dlYmtpdHdlYmluc3BlY3Rvci5oOiBBZGRlZC4KICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5ncy5jcHA6CiAgICAgICAgKF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6Oik6CiAgICAg
ICAgKF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6OndlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3Nf
aW5pdCk6CiAgICAgICAgKF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6OndlYmtpdF93ZWJfc2V0
dGluZ3Nfc2V0X3Byb3BlcnR5KToKICAgICAgICAoX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZTo6
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfcHJvcGVydHkpOgogICAgICAgIChfV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlOjp3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkpOgogICAgICAgICogd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwOgogICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuaDoKLS0t
CiBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3
ICsKIEdOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDIgKwogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgOSArCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDExICsKIFdlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgNDEgKysrCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0
ay5jcHAgfCAgMTAyICsrKysrKy0KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50R3RrLmggICB8ICAgMTAgKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmggICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkZWZpbmVz
LmggICAgICAgICAgICAgICAgfCAgICAzICsKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZh
dGUuaCAgICAgICAgICAgICAgICB8ICAgMTEgKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
aW5zcGVjdG9yLmNwcCAgICAgICAgIHwgIDM2OCArKysrKysrKysrKysrKysrKysrKysrCiBXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuaCAgICAgICAgICAgfCAgIDY1ICsrKysK
IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCAgICAgICAgICB8ICAgMzAg
KystCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgICAgICAgICAgfCAg
IDU3ICsrKystCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmggICAgICAgICAgICAg
ICAgfCAgICAzICsKIDE1IGZpbGVzIGNoYW5nZWQsIDcwOSBpbnNlcnRpb25zKCspLCAxMSBkZWxl
dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJp
bnNwZWN0b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2ViaW5zcGVjdG9yLmgKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
MTQ0Y2MwZS4uOTMxOGJjYSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEwIEBACisyMDA4LTEwLTI5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNA
Z25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KKworICAg
ICAgICBBZGRlZCBhbGwgdGhlIGZpbGVzIHRoYXQgbmVlZCB0byBiZSBpbnN0YWxsZWQgZm9yIHRo
ZSBJbnNwZWN0b3IgdG8KKyAgICAgICAgd29yay4KKwogMjAwOC0xMC0yOSAgTWlrZSBIb21tZXkg
IDxnbGFuZGl1bUBkZWJpYW4ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5
dGhlci4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXgg
MDM3MDA2Yi4uMmQ2Mzk5MyAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFr
ZWZpbGUuYW0KQEAgLTMwOSw2ICszMDksNyBAQCB3ZWJraXRndGtfaF9hcGkgKz0gXAogCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oIFwKIAlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJmcmFtZS5oIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0
b3J5aXRlbS5oIFwKKwlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuaCBcCiAJ
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBcCiAJV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oCiAKQEAgLTM0MCw2ICszNDEsNyBAQCB3ZWJraXRndGtfc291cmNl
cyArPSBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNwcCBc
CiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIFwKIAlXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAgXAorCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmluc3BlY3Rvci5jcHAgXAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdz
LmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NDlhOTBjLi4y
YTg0ODgxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDA4LTEwLTI5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEg
IDxnbnNAZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4K
KworICAgICAgICBBZGRlZCBhbGwgdGhlIGZpbGVzIHRoYXQgbmVlZCB0byBiZSBpbnN0YWxsZWQg
Zm9yIHRoZSBJbnNwZWN0b3IgdG8KKyAgICAgICAgd29yay4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorCiAyMDA4LTEwLTI5ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmll
cnMuY29tPgogCiAgICAgICAgIHd4IGJ1aWxkIGZpeGVzIGFmdGVyIGFkZGl0aW9uIG9mIHJ1bnRp
bWUgYW5kIEltYWdlQnVmZmVyIGNoYW5nZXMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA1ODU4YzVmLi5jMDE0YWM2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTI5NTQsNiArMjk1NCwxNyBAQCB3ZWJjb3JlX2Rpc3QgKz0gXAogCVdlYkNvcmUv
eG1sL3htbGF0dHJzLmluIFwKIAlXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueQogCisjIEluc3Rh
bGxpbmcgd2ViIGluc3BlY3RvciBmaWxlcword2ViY29yZV9jcHBmbGFncyArPSAtRERBVEFfRElS
PVwiJHtkYXRhZGlyfVwiCisKK3dlYmluc3BlY3RvcmRpciA9ICR7ZGF0YWRpcn0vd2Via2l0LTEu
MC93ZWJpbnNwZWN0b3IKK2Rpc3Rfd2ViaW5zcGVjdG9yX0RBVEEgPSBcCisJJChzaGVsbCBscyAk
KFdlYkNvcmUpL2luc3BlY3Rvci9mcm9udC1lbmQvKi57anMsaHRtbCxjc3N9KQorCit3ZWJpbnNw
ZWN0b3JpbWFnZXNkaXIgPSAke2RhdGFkaXJ9L3dlYmtpdC0xLjAvd2ViaW5zcGVjdG9yL0ltYWdl
cworZGlzdF93ZWJpbnNwZWN0b3JpbWFnZXNfREFUQSA9IFwKKwkkKHNoZWxsIGxzICQoV2ViQ29y
ZSkvaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvKi5wbmcpCisKICMgQ2xlYW4gcnVsZXMgZm9y
IFdlYkNvcmUKIAogQ0xFQU5GSUxFUyArPSBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDc3MzY3MjguLmEyYzVkOTAgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDgtMTAtMjkgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bn
bm9tZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2VyIEZyZXl0aGVyLgorCisJSW1w
bGVtZW50ZWQgYSBuZXcgV2ViS2l0V2ViSW5zcGVjdG9yIGNsYXNzIHRvIHByb3ZpZGUgYSBHT2Jq
ZWN0CisJQVBJIGZvciB0aGUgV2ViIEluc3BlY3Rvci4gQWxzbyBpbXBsZW1lbnRlZCBJbnNwZWN0
b3JDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0Ojpub3RpZnlXZWJWaWV3RGVzdHJveWVkKToKKyAgICAgICAg
KFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjpJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJL
aXQ6Okluc3BlY3RvckNsaWVudDo6d2ViVmlld0Rlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6
Okluc3BlY3RvckNsaWVudDo6Y3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3Rv
ckNsaWVudDo6c2hvd1dpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6
Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OmF0dGFjaFdp
bmRvdyk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6ZGV0YWNoV2luZG93KToK
KyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaDoKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3Q6
CisgICAgICAgICogd2Via2l0L3dlYmtpdGRlZmluZXMuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlOjp3ZWJraXRfaW5zcGVj
dF93ZWJfdmlld19yZXF1ZXN0X2hhbmRsZWQpOgorICAgICAgICAoX1dlYktpdFdlYkluc3BlY3Rv
clByaXZhdGU6OndlYmtpdF93ZWJfaW5zcGVjdG9yX2NsYXNzX2luaXQpOgorICAgICAgICAoX1dl
YktpdFdlYkluc3BlY3RvclByaXZhdGU6OndlYmtpdF93ZWJfaW5zcGVjdG9yX2luaXQpOgorICAg
ICAgICAoX1dlYktpdFdlYkluc3BlY3RvclByaXZhdGU6OndlYmtpdF93ZWJfaW5zcGVjdG9yX2Zp
bmFsaXplKToKKyAgICAgICAgKF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlOjp3ZWJraXRfd2Vi
X2luc3BlY3Rvcl9zZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dlYktpdFdlYkluc3BlY3RvclBy
aXZhdGU6OndlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9wcm9wZXJ0eSk6CisgICAgICAgIChfV2Vi
S2l0V2ViSW5zcGVjdG9yUHJpdmF0ZTo6d2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3dlYl92aWV3
KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlOjopOgorICAgICAgICAoX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZTo6d2Vi
a2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KToKKyAgICAgICAgKF9XZWJLaXRXZWJTZXR0aW5n
c1ByaXZhdGU6OndlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9X
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6OndlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5
KToKKyAgICAgICAgKF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6OndlYmtpdF93ZWJfc2V0dGlu
Z3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg6CisKIDIwMDgtMTAtMjcgIE1pY2hhZWwgVHJvc3MgIDxt
aWNoYWVsQHRyb3NzLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbHAgVG9rZXIuIExhbmRl
ZCBieSBKYW4gQWxvbnpvLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRHdGsuY3BwCmluZGV4IDZkMmI2MzMuLjk0MDY0NDggMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKQEAgLTEsNCArMSw2IEBA
CiAvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YQorICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwogICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgpAQCAtMTcsNiArMTksMTEgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRHdGsuaCIKIAorI2luY2x1ZGUgIndlYmtp
dHdlYnZpZXcuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0b3IuaCIKKyNpbmNsdWRlICJ3
ZWJraXRwcml2YXRlLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAKQEAgLTI0LDE1ICszMSw3MSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyB2b2lkIG5vdGlmeVdlYlZpZXdE
ZXN0cm95ZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0
b3JDbGllbnQpCit7CisgICAgaW5zcGVjdG9yQ2xpZW50LT53ZWJWaWV3RGVzdHJveWVkKCk7Cit9
CisKK0luc3BlY3RvckNsaWVudDo6SW5zcGVjdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCisgICAgOiBtX3dlYlZpZXcoMCkKKyAgICAsIG1faW5zcGVjdGVkV2ViVmlldyh3ZWJWaWV3
KQorICAgICwgbV93ZWJJbnNwZWN0b3IoMCkKK3t9CisKIHZvaWQgSW5zcGVjdG9yQ2xpZW50Ojpp
bnNwZWN0b3JEZXN0cm95ZWQoKQogeworICAgIGlmIChtX3dlYlZpZXcpIHsKKyAgICAgICAgZ2Jv
b2xlYW4gaGFuZGxlZCA9IEZBTFNFOworICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93
ZWJJbnNwZWN0b3IsICJkZXN0cm95IiwgJmhhbmRsZWQpOworCisgICAgICAgIC8qIHdlIGNhbiBu
b3cgZGlzcG9zZSBvdXIgb3duIHJlZmVyZW5jZSAqLworICAgICAgICBnX29iamVjdF91bnJlZiht
X3dlYkluc3BlY3Rvcik7CisgICAgfQorCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKK3ZvaWQgSW5z
cGVjdG9yQ2xpZW50Ojp3ZWJWaWV3RGVzdHJveWVkKCkKK3sKKyAgICBtX3dlYlZpZXcgPSAwOwor
ICAgIGNvcmUobV9pbnNwZWN0ZWRXZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5wYWdl
RGVzdHJveWVkKCk7CisKKyAgICAvLyBjcmVhdGVQYWdlIHdpbGwgYmUgY2FsbGVkIGFnYWluLCBp
ZiB0aGUgdXNlciBjaG9vc2VzIHRvIGluc3BlY3QKKyAgICAvLyBzb21ldGhpbmcgZWxzZSwgYW5k
IHRoZSBpbnNwZWN0b3Igd2lsbCBiZSByZWZlcmVuY2VkIGFnYWluLAorICAgIC8vIHRoZXJlLgor
ICAgIGdfb2JqZWN0X3VucmVmKG1fd2ViSW5zcGVjdG9yKTsKK30KKwogUGFnZSogSW5zcGVjdG9y
Q2xpZW50OjpjcmVhdGVQYWdlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biAwOworICAgIGlmIChtX3dlYlZpZXcpCisgICAgICByZXR1cm4gY29yZShtX3dlYlZpZXcpOwor
CisgICAgLy8gVGhpcyBnX29iamVjdF9nZXQgd2lsbCByZWYgdGhlIGluc3BlY3Rvci4gV2UncmUg
bm90IGRvaW5nIGFuCisgICAgLy8gdW5yZWYgaWYgdGhpcyBtZXRob2Qgc3VjY2VlZHMgYmVjYXVz
ZSB0aGUgaW5zcGVjdG9yIG9iamVjdCBtdXN0CisgICAgLy8gYmUgYWxpdmUgZXZlbiBhZnRlciB0
aGUgaW5zcGVjdGVkIFdlYlZpZXcgaXMgZGVzdHJveWVkIC0gdGhlCisgICAgLy8gY2xvc2Utd2lu
ZG93IGFuZCBkZXN0cm95IHNpZ25hbHMgc3RpbGwgbmVlZCB0byBiZQorICAgIC8vIGVtaXR0ZWQu
CisgICAgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3I7CisgICAgZ19vYmplY3RfZ2V0
KEdfT0JKRUNUKG1faW5zcGVjdGVkV2ViVmlldyksICJ3ZWItaW5zcGVjdG9yIiwgJndlYkluc3Bl
Y3RvciwgTlVMTCk7CisgICAgbV93ZWJJbnNwZWN0b3IgPSB3ZWJJbnNwZWN0b3I7CisKKyAgICBn
X3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJJbnNwZWN0b3IsICJpbnNwZWN0LXdlYi12aWV3Iiwg
bV9pbnNwZWN0ZWRXZWJWaWV3LCAmbV93ZWJWaWV3KTsKKworICAgIGlmICghbV93ZWJWaWV3KSB7
CisgICAgICAgIGdfb2JqZWN0X3VucmVmKG1fd2ViSW5zcGVjdG9yKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3dlYl92aWV3KG1fd2Vi
SW5zcGVjdG9yLCBtX3dlYlZpZXcpOworCisgICAgZ19zaWduYWxfY29ubmVjdChHX09CSkVDVCht
X3dlYlZpZXcpLCAiZGVzdHJveSIsCisgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKG5v
dGlmeVdlYlZpZXdEZXN0cm95ZWQpLCAoZ3BvaW50ZXIpdGhpcyk7CisKKyAgICB3ZWJraXRfd2Vi
X3ZpZXdfb3BlbihtX3dlYlZpZXcsICJmaWxlOi8vIkRBVEFfRElSIi93ZWJraXQtMS4wL3dlYmlu
c3BlY3Rvci9pbnNwZWN0b3IuaHRtbCIpOworICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VU
KG1fd2ViVmlldykpOworCisgICAgcmV0dXJuIGNvcmUobV93ZWJWaWV3KTsKIH0KIAogU3RyaW5n
IEluc3BlY3RvckNsaWVudDo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCkBAIC00MywyMiArMTA2LDQy
IEBAIFN0cmluZyBJbnNwZWN0b3JDbGllbnQ6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQogCiB2b2lk
IEluc3BlY3RvckNsaWVudDo6c2hvd1dpbmRvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2Jvb2xlYW4gaGFu
ZGxlZCA9IEZBTFNFOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYkluc3BlY3Rvciwg
InNob3ctd2luZG93IiwgJmhhbmRsZWQpOworCisgICAgY29yZShtX2luc3BlY3RlZFdlYlZpZXcp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldFdpbmRvd1Zpc2libGUodHJ1ZSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yQ2xpZW50OjpjbG9zZVdpbmRvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2Jvb2xlYW4g
aGFuZGxlZCA9IEZBTFNFOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYkluc3BlY3Rv
ciwgImNsb3NlLXdpbmRvdyIsICZoYW5kbGVkKTsKKworICAgIGNvcmUobV9pbnNwZWN0ZWRXZWJW
aWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRXaW5kb3dWaXNpYmxlKGZhbHNlKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JDbGllbnQ6OmF0dGFjaFdpbmRvdygpCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2Jv
b2xlYW4gaGFuZGxlZCA9IEZBTFNFOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYklu
c3BlY3RvciwgImF0dGFjaC13aW5kb3ciLCAmaGFuZGxlZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q2xpZW50OjpkZXRhY2hXaW5kb3coKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYg
KCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGdib29sZWFuIGhhbmRsZWQgPSBG
QUxTRTsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJJbnNwZWN0b3IsICJkZXR0YWNo
LXdpbmRvdyIsICZoYW5kbGVkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnQ6OnNldEF0dGFj
aGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKQEAgLTc2LDkgKzE1OSwxMiBAQCB2b2lk
IEluc3BlY3RvckNsaWVudDo6aGlkZUhpZ2hsaWdodCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3Ry
aW5nJikKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0
cmluZyYgbmV3VVJMKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX3dlYlZp
ZXcpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNw
ZWN0ZWRfdXJpKG1fd2ViSW5zcGVjdG9yLCBuZXdVUkwudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yQ2xpZW50Ojpwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIElu
c3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmIHNldHRpbmcpCmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaAppbmRleCBlMWE1NzNhLi40ZmJhNTVkIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5o
CisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKQEAg
LTMwLDYgKzMwLDggQEAKICNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50R3RrX2gKIAogI2luY2x1ZGUg
Ikluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKKyNpbmNsdWRl
ICJ3ZWJraXR3ZWJpbnNwZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IE5vZGU7CkBAIC00MSw3ICs0MywxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgIGNsYXNz
IEluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQgewogICAg
IHB1YmxpYzoKKyAgICAgICAgSW5zcGVjdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
OworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKKyAgICAgICAg
dm9pZCB3ZWJWaWV3RGVzdHJveWVkKCk7CiAKICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpQYWdl
KiBjcmVhdGVQYWdlKCk7CiAKQEAgLTYyLDYgKzY3LDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYga2V5LCBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJik7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIGNv
bnN0IFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXkpOworCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OworICAgICAgICBX
ZWJLaXRXZWJWaWV3KiBtX2luc3BlY3RlZFdlYlZpZXc7CisgICAgICAgIFdlYktpdFdlYkluc3Bl
Y3RvciogbV93ZWJJbnNwZWN0b3I7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAppbmRleCAxMGMy
MTRmLi5lMTljYmM3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAorKysg
Yi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
PHdlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3
ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oPgorI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0
d2Vidmlldy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaD4K
ICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaD4KZGlmZiAtLWdpdCBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdGRlZmluZXMuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dGRlZmluZXMuaAppbmRleCAzODZjM2UxLi4wYzA4MGY0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRkZWZpbmVzLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZGVm
aW5lcy5oCkBAIC01NSw2ICs1NSw5IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJGcmFtZUNs
YXNzIFdlYktpdFdlYkZyYW1lQ2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGlu
Z3MgV2ViS2l0V2ViU2V0dGluZ3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3ND
bGFzcyBXZWJLaXRXZWJTZXR0aW5nc0NsYXNzOwogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vi
SW5zcGVjdG9yIFdlYktpdFdlYkluc3BlY3RvcjsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJJ
bnNwZWN0b3JDbGFzcyBXZWJLaXRXZWJJbnNwZWN0b3JDbGFzczsKKwogdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJW
aWV3Q2xhc3MgV2ViS2l0V2ViVmlld0NsYXNzOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgK
aW5kZXggM2VmYTAyYS4uMzA0N2FmNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50R3RrLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKIAogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTY3LDYg
KzY4LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7
CiAgICAgICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlOwogICAgICAgICBXZWJLaXRXZWJTZXR0
aW5ncyogd2ViU2V0dGluZ3M7CisgICAgICAgIFdlYktpdFdlYkluc3BlY3Rvciogd2ViSW5zcGVj
dG9yOwogCiAgICAgICAgIFdlYktpdFdlYkZyYW1lKiBtYWluRnJhbWU7CiAgICAgICAgIFdlYkNv
cmU6OlN0cmluZyBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ7CkBAIC0xMTAsNiArMTEyLDE1
IEBAIGV4dGVybiAiQyIgewogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKgogICAgIHdlYmtpdF93
ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2NvcmVfaXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSop
OwogCisgICAgdm9pZAorICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNwZWN0b3JfY2xp
ZW50KFdlYktpdFdlYkluc3BlY3RvciosIFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50Kik7CisKKyAg
ICB2b2lkCisgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3dlYl92aWV3KFdlYktpdFdlYklu
c3BlY3RvciAqd2ViX2luc3BlY3RvciwgV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXcpOworCisgICAg
dm9pZAorICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNwZWN0ZWRfdXJpKFdlYktpdFdl
Ykluc3BlY3Rvciogd2ViX2luc3BlY3RvciwgY29uc3QgZ2NoYXIqIGluc3BlY3RlZF91cmkpOwor
CiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWly
IEFQSSBoYXMgYmVlbiBkaXNjdXNzZWQuCiAKICAgICBXRUJLSVRfQVBJIEdTTGlzdCoKZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5jcHAgYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmM3NDY4ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwCkBAIC0wLDAgKzEsMzY4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YQorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0b3IuaCIKKyNpbmNsdWRlICJ3ZWJraXRtYXJzaGFs
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50R3RrLmgiCisjaW5jbHVkZSAid2Via2l0cHJp
dmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitleHRlcm4gIkMiIHsKKworZW51
bSB7CisgICAgSU5TUEVDVF9XRUJfVklFVywKKyAgICBTSE9XX1dJTkRPVywKKyAgICBBVFRBQ0hf
V0lORE9XLAorICAgIERFVFRBQ0hfV0lORE9XLAorICAgIENMT1NFX1dJTkRPVywKKyAgICBGSU5J
U0hFRCwKKyAgICBMQVNUX1NJR05BTAorfTsKKworc3RhdGljIGd1aW50IHdlYmtpdF93ZWJfaW5z
cGVjdG9yX3NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OworCitlbnVtIHsKKyAgICBQUk9Q
XzAsCisKKyAgICBQUk9QX1dFQl9WSUVXLAorICAgIFBST1BfSU5TUEVDVEVEX1VSSSwKK307CisK
K0dfREVGSU5FX1RZUEUoV2ViS2l0V2ViSW5zcGVjdG9yLCB3ZWJraXRfd2ViX2luc3BlY3Rvciwg
R19UWVBFX09CSkVDVCkKKworc3RydWN0IF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlIHsKKyAg
ICBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudDsKKyAgICBXZWJLaXRXZWJWaWV3KiBp
bnNwZWN0b3JfdmlldzsKKyAgICBnY2hhciogaW5zcGVjdGVkX3VyaTsKK307CisKKyNkZWZpbmUg
V0VCS0lUX1dFQl9JTlNQRUNUT1JfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dF
VF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLCBXZWJLaXRXZWJJbnNw
ZWN0b3JQcml2YXRlKSkKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfZmluYWxp
emUoR09iamVjdCogb2JqZWN0KTsKKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3Jf
c2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVl
KiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOworCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2lu
c3BlY3Rvcl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRf
aW5zcGVjdF93ZWJfdmlld19yZXF1ZXN0X2hhbmRsZWQoR1NpZ25hbEludm9jYXRpb25IaW50KiBp
aGludCwgR1ZhbHVlKiByZXR1cm5BY2N1LCBjb25zdCBHVmFsdWUqIGhhbmRsZXJSZXR1cm4sIGdw
b2ludGVyIGR1bW15KQoreworICAgIGdib29sZWFuIGNvbnRpbnVlRW1pc3Npb24gPSBUUlVFOwor
ICAgIGdwb2ludGVyIG5ld1dlYlZpZXcgPSBnX3ZhbHVlX2dldF9vYmplY3QoaGFuZGxlclJldHVy
bik7CisgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHJldHVybkFjY3UsIG5ld1dlYlZpZXcpOworCisg
ICAgaWYgKG5ld1dlYlZpZXcpCisgICAgICAgIGNvbnRpbnVlRW1pc3Npb24gPSBGQUxTRTsKKwor
ICAgIHJldHVybiBjb250aW51ZUVtaXNzaW9uOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X2luc3BlY3Rvcl9jbGFzc19pbml0KFdlYktpdFdlYkluc3BlY3RvckNsYXNzKiBrbGFzcykKK3sK
KyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7
CisgICAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9maW5h
bGl6ZTsKKyAgICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfd2ViX2luc3Bl
Y3Rvcl9zZXRfcHJvcGVydHk7CisgICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Vi
a2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3Byb3BlcnR5OworCisgICAgLyoqCisgICAgICogV2ViS2l0
V2ViSW5zcGVjdG9yOjppbnNwZWN0LXdlYi12aWV3OgorICAgICAqIEB3ZWJfaW5zcGVjdG9yOiB0
aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEB3ZWJfdmll
dzogdGhlICNXZWJLaXRXZWIgd2hpY2ggd2lsbCBiZSBpbnNwZWN0ZWQKKyAgICAgKiBAcmV0dXJu
OiBhIG5ld2x5IGFsbG9jYXRlZCAjV2ViS2l0V2ViVmlldyBvciAlTlVMTAorICAgICAqCisgICAg
ICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGFjdGl2YXRlcyB0aGUgJ2luc3BlY3QnIGNvbnRleHQg
bWVudSBpdGVtCisgICAgICogdG8gaW5zcGVjdCBhIHdlYiB2aWV3LiBUaGUgYXBwbGljYXRpb24g
d2hpY2ggaXMgaW50ZXJlc3RlZCBpbgorICAgICAqIHRoZSBpbnNwZWN0b3Igc2hvdWxkIGNyZWF0
ZSBhIHdpbmRvdywgb3Igb3RoZXJ3aXNlIGFkZCB0aGUKKyAgICAgKiAjV2ViS2l0V2ViVmlldyBp
dCBjcmVhdGVzIHRvIGFuIGV4aXN0aW5nIHdpbmRvdy4KKyAgICAgKgorICAgICAqIFlvdSBkb24n
dCBuZWVkIHRvIGhhbmRsZSB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZQorICAgICAqICNXZWJL
aXRXZWJWaWV3IGluc3RhbmNlIHlvdSBjcmVhdGU7IHRoZSB3aWRnZXQgdG8gd2hpY2ggeW91IGFk
ZAorICAgICAqIGl0IHdpbGwgZG8gdGhhdC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjAuMgor
ICAgICAqLworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NpZ25hbHNbSU5TUEVDVF9XRUJfVklF
V10gPSBnX3NpZ25hbF9uZXcoImluc3BlY3Qtd2ViLXZpZXciLAorICAgICAgICAgICAgR19UWVBF
X0ZST01fQ0xBU1Moa2xhc3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxf
UlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAg
IHdlYmtpdF9pbnNwZWN0X3dlYl92aWV3X3JlcXVlc3RfaGFuZGxlZCwKKyAgICAgICAgICAgIE5V
TEwsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9PQkpFQ1RfX09CSkVDVCwKKyAgICAgICAg
ICAgIFdFQktJVF9UWVBFX1dFQl9WSUVXICwgMSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1dF
Ql9WSUVXKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYkluc3BlY3Rvcjo6c2hvdy13aW5k
b3c6CisgICAgICogQHdlYl9pbnNwZWN0b3I6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25h
bCBpcyBlbWl0dGVkCisgICAgICogQHJldHVybjogJVRSVUUgaWYgdGhlIHNpZ25hbCBoYXMgYmVl
biBoYW5kbGVkCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGluc3BlY3RvciB3aW5k
b3cgc2hvdWxkIGJlIGRpc3BsYXllZC4gTm90aWNlCisgICAgICogdGhhdCB0aGUgd2luZG93IG11
c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYWxyZWFkeSBieSBoYW5kbGluZworICAgICAqIDo6aW5zcGVj
dC13ZWItdmlldy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjAuMgorICAgICAqLworICAgIHdl
YmtpdF93ZWJfaW5zcGVjdG9yX3NpZ25hbHNbU0hPV19XSU5ET1ddID0gZ19zaWduYWxfbmV3KCJz
aG93LXdpbmRvdyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAg
ICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElP
TiksCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1
ZV9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFs
X0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiAsIDApOworCisgICAg
LyoqCisgICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOjphdHRhY2gtd2luZG93OgorICAgICAqIEB3
ZWJfaW5zcGVjdG9yOiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAor
ICAgICAqIEByZXR1cm46ICVUUlVFIGlmIHRoZSBzaWduYWwgaGFzIGJlZW4gaGFuZGxlZAorICAg
ICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnNwZWN0b3Igc2hvdWxkIGFwcGVhciBhdCB0
aGUgc2FtZSB3aW5kb3cgYXMKKyAgICAgKiB0aGUgI1dlYktpdFdlYlZpZXcgYmVpbmcgaW5zcGVj
dGVkLgorICAgICAqCisgICAgICogU2luY2U6IDEuMC4yCisgICAgICovCisgICAgd2Via2l0X3dl
Yl9pbnNwZWN0b3Jfc2lnbmFsc1tBVFRBQ0hfV0lORE9XXSA9IGdfc2lnbmFsX25ldygiYXR0YWNo
LXdpbmRvdyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAg
ICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiks
CisgICAgICAgICAgICAwLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9o
YW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JP
T0xFQU5fX1ZPSUQsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiAsIDApOworCisgICAgLyoq
CisgICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOjpkZXR0YWNoLXdpbmRvdzoKKyAgICAgKiBAd2Vi
X2luc3BlY3RvcjogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAg
ICAgKiBAcmV0dXJuOiAlVFJVRSBpZiB0aGUgc2lnbmFsIGhhcyBiZWVuIGhhbmRsZWQKKyAgICAg
KgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5zcGVjdG9yIHNob3VsZCBhcHBlYXIgaW4gYSBz
ZXBhcmF0ZSB3aW5kb3cuCisgICAgICoKKyAgICAgKiBTaW5jZTogMS4wLjIKKyAgICAgKi8KKyAg
ICB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zaWduYWxzW0RFVFRBQ0hfV0lORE9XXSA9IGdfc2lnbmFs
X25ldygiZGV0dGFjaC13aW5kb3ciLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Moa2xh
c3MpLAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJ
R05BTF9BQ1RJT04pLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3Vt
dWxhdG9yX3RydWVfaGFuZGxlZCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICB3ZWJr
aXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAorICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4gLCAw
KTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYkluc3BlY3Rvcjo6Y2xvc2Utd2luZG93Ogor
ICAgICAqIEB3ZWJfaW5zcGVjdG9yOiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMg
ZW1pdHRlZAorICAgICAqIEByZXR1cm46ICVUUlVFIGlmIHRoZSBzaWduYWwgaGFzIGJlZW4gaGFu
ZGxlZAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnNwZWN0b3Igd2luZG93IHNo
b3VsZCBiZSBjbG9zZWQuIFlvdSBjYW4KKyAgICAgKiBkZXN0cm95IHRoZSB3aW5kb3cgb3IgaGlk
ZSBpdCBzbyB0aGF0IGl0IGNhbiBiZSBkaXNwbGF5ZWQgYWdhaW4KKyAgICAgKiBieSBoYW5kbGlu
ZyA6OnNob3ctd2luZG93IGxhdGVyIG9uLgorICAgICAqCisgICAgICogTm90aWNlIHRoYXQgdGhl
IGluc3BlY3RlZCAjV2ViS2l0V2ViVmlldyBtYXkgbm8gbG9uZ2VyIGV4aXN0CisgICAgICogd2hl
biB0aGlzIHNpZ25hbCBpcyBlbWl0dGVkLgorICAgICAqCisgICAgICogTm90aWNlLCB0b28sIHRo
YXQgaWYgeW91IGRlY2lkZSB0byBkZXN0cm95IHRoZSB3aW5kb3csCisgICAgICogOjppbnNwZWN0
LXdlYi12aWV3IHdpbGwgYmUgZW1taXRlZCBhZ2Fpbiwgd2hlbiB0aGUgdXNlcgorICAgICAqIGlu
c3BlY3RzIGFuIGVsZW1lbnQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMS4wLjIKKyAgICAgKi8K
KyAgICB3ZWJraXRfd2ViX2luc3BlY3Rvcl9zaWduYWxzW0NMT1NFX1dJTkRPV10gPSBnX3NpZ25h
bF9uZXcoImNsb3NlLXdpbmRvdyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhrbGFz
cyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lH
TkFMX0FDVElPTiksCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11
bGF0b3JfdHJ1ZV9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgIHdlYmtp
dF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiAsIDAp
OworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOjpmaW5pc2hlZDoKKyAgICAg
KiBAd2ViX2luc3BlY3RvcjogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0
ZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5zcGVjdGlvbiBpcyBkb25lLiBZ
b3Ugc2hvdWxkIHJlbGVhc2UgeW91cgorICAgICAqIHJlZmVyZW5jZXMgb24gdGhlIGluc3BlY3Rv
ciBhdCB0aGlzIHRpbWUuIFRoZSBpbnNwZWN0ZWQKKyAgICAgKiAjV2ViS2l0V2ViVmlldyBtYXkg
bm8gbG9uZ2VyIGV4aXN0IHdoZW4gdGhpcyBzaWduYWwgaXMgZW1pdHRlZC4KKyAgICAgKgorICAg
ICAqIFNpbmNlOiAxLjAuMgorICAgICAqLworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NpZ25h
bHNbRklOSVNIRURdID0gZ19zaWduYWxfbmV3KCJmaW5pc2hlZCIsCisgICAgICAgICAgICBHX1RZ
UEVfRlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05B
TF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCisgICAgICAgICAgICAwLAorICAgICAgICAg
ICAgTlVMTCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNo
YWxfVk9JRF9fVk9JRCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FICwgMCk7CisKKyAgICAvKgor
ICAgICAqIHByb3BlcnRpZXMKKyAgICAgKi8KKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYklu
c3BlY3Rvcjp3ZWItdmlldzoKKyAgICAgKgorICAgICAqIFRoZSBXZWIgVmlldyB0aGF0IHJlbmRl
cnMgdGhlIFdlYiBJbnNwZWN0b3IgaXRzZWxmLgorICAgICAqCisgICAgICogU2luY2U6IDEuMC4y
CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2Ns
YXNzLCBQUk9QX1dFQl9WSUVXLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX29iamVjdCgid2ViLXZpZXciLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2ViIFZpZXciLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIFdlYiBWaWV3
IHRoYXQgcmVuZGVycyB0aGUgV2ViIEluc3BlY3RvciBpdHNlbGYiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJf
VklFVywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRX
ZWJJbnNwZWN0b3I6aW5zcGVjdGVkLXVyaToKKyAgICAgKgorICAgICAqIFRoZSBVUkkgdGhhdCBp
cyBjdXJyZW50bHkgYmVpbmcgaW5zcGVjdGVkLgorICAgICAqCisgICAgICogU2luY2U6IDEuMC4y
CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2Ns
YXNzLCBQUk9QX0lOU1BFQ1RFRF9VUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJpbnNwZWN0ZWQtdXJpIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc3BlY3RlZCBVUkki
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiVGhlIFVSSSB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBpbnNwZWN0ZWQiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBREFCTEUpKTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFz
cywgc2l6ZW9mKFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUpKTsKK30KKworc3RhdGljIHZvaWQg
d2Via2l0X3dlYl9pbnNwZWN0b3JfaW5pdChXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYl9pbnNwZWN0
b3IpCit7CisgICAgd2ViX2luc3BlY3Rvci0+cHJpdiA9IFdFQktJVF9XRUJfSU5TUEVDVE9SX0dF
VF9QUklWQVRFKHdlYl9pbnNwZWN0b3IpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2lu
c3BlY3Rvcl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0V2ViSW5zcGVj
dG9yKiB3ZWJfaW5zcGVjdG9yID0gV0VCS0lUX1dFQl9JTlNQRUNUT1Iob2JqZWN0KTsKKyAgICBX
ZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2ViX2luc3BlY3Rvci0+cHJpdjsKKwor
ICAgIGlmIChwcml2LT5pbnNwZWN0b3JfdmlldykKKyAgICAgICAgZ19vYmplY3RfdW5yZWYocHJp
di0+aW5zcGVjdG9yX3ZpZXcpOworCisgICAgaWYgKHByaXYtPmluc3BlY3RlZF91cmkpCisgICAg
ICAgIGdfZnJlZShwcml2LT5pbnNwZWN0ZWRfdXJpKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF93ZWJfaW5zcGVjdG9yX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBz
cGVjKQoreworICAgIHN3aXRjaChwcm9wX2lkKSB7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVj
dG9yX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYkluc3BlY3Rvciogd2Vi
X2luc3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9SKG9iamVjdCk7CisgICAgV2ViS2l0V2Vi
SW5zcGVjdG9yUHJpdmF0ZSogcHJpdiA9IHdlYl9pbnNwZWN0b3ItPnByaXY7CisKKyAgICBzd2l0
Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfV0VCX1ZJRVc6CisgICAgICAgIGdfdmFsdWVf
c2V0X29iamVjdCh2YWx1ZSwgcHJpdi0+aW5zcGVjdG9yX3ZpZXcpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfSU5TUEVDVEVEX1VSSToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5n
KHZhbHVlLCBwcml2LT5pbnNwZWN0ZWRfdXJpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cF9pZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKy8vIGludGVybmFsIHVz
ZSBvbmx5Cit2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF93ZWJfdmlldyhXZWJLaXRXZWJJ
bnNwZWN0b3IgKndlYl9pbnNwZWN0b3IsIFdlYktpdFdlYlZpZXcgKndlYl92aWV3KQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9JTlNQRUNUT1Iod2ViX2luc3BlY3Rvcikp
OworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYl92aWV3KSk7CisK
KyAgICBXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2ViX2luc3BlY3Rvci0+cHJp
djsKKworICAgIGlmIChwcml2LT5pbnNwZWN0b3JfdmlldykKKyAgICAgICAgZ19vYmplY3RfdW5y
ZWYocHJpdi0+aW5zcGVjdG9yX3ZpZXcpOworCisgICAgZ19vYmplY3RfcmVmKHdlYl92aWV3KTsK
KyAgICBwcml2LT5pbnNwZWN0b3JfdmlldyA9IHdlYl92aWV3OworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfaW5zcGVjdG9yX2dldF93ZWJfdmlldzoKKyAqCisgKiBPYnRhaW5zIHRoZSAjV2ViS2l0
V2ViVmlldyB0aGF0IGlzIHVzZWQgdG8gcmVuZGVyIHRoZQorICogaW5zcGVjdG9yLiBUaGUgI1dl
YktpdFdlYlZpZXcgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSB0aGUKKyAqIGFwcGxpY2F0aW9uLCBi
eSBoYW5kbGluZyB0aGUgOjppbnNwZWN0LXdlYi12aWV3IHNpZ25hbC4gVGhpcyBtZWFucworICog
dGhhdCB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuICVOVUxMIGlmIHRoZSB1c2VyIGhhc24ndCBpbnNw
ZWN0ZWQKKyAqIGFueXRoaW5nLgorICoKKyAqIFJldHVybnM6IHRoZSAjV2ViS2l0V2ViVmlldyBp
bnN0YW5jZSB0aGF0IGlzIHVzZWQgdG8gcmVuZGVyIHRoZQorICogaW5zcGVjdG9yIG9yICVOVUxM
IGlmIGl0IGlzIG5vdCB5ZXQgY3JlYXRlZC4KKyAqCisgKiBTaW5jZTogMS4wLjIKKyAqKi8KK1dl
YktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF93ZWJfdmlldyhXZWJLaXRXZWJJ
bnNwZWN0b3IgKndlYl9pbnNwZWN0b3IpCit7CisgICAgV2ViS2l0V2ViSW5zcGVjdG9yUHJpdmF0
ZSogcHJpdiA9IHdlYl9pbnNwZWN0b3ItPnByaXY7CisKKyAgICByZXR1cm4gcHJpdi0+aW5zcGVj
dG9yX3ZpZXc7Cit9CisKKy8vIGludGVybmFsIHVzZSBvbmx5Cit2b2lkIHdlYmtpdF93ZWJfaW5z
cGVjdG9yX3NldF9pbnNwZWN0ZWRfdXJpKFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3Rv
ciwgY29uc3QgZ2NoYXIqIGluc3BlY3RlZF91cmkpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX0lOU1BFQ1RPUih3ZWJfaW5zcGVjdG9yKSk7CisKKyAgICBXZWJLaXRXZWJJ
bnNwZWN0b3JQcml2YXRlKiBwcml2ID0gd2ViX2luc3BlY3Rvci0+cHJpdjsKKworICAgIGdfZnJl
ZShwcml2LT5pbnNwZWN0ZWRfdXJpKTsKKyAgICBwcml2LT5pbnNwZWN0ZWRfdXJpID0gZ19zdHJk
dXAoaW5zcGVjdGVkX3VyaSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0
X2luc3BlY3RlZF91cmk6CisgKgorICogT2J0YWlucyB0aGUgVVJJIHRoYXQgaXMgY3VycmVudGx5
IGJlaW5nIGluc3BlY3RlZC4KKyAqCisgKiBSZXR1cm5zOiBhIHBvaW50ZXIgdG8gdGhlIFVSSSBh
cyBhbiBpbnRlcm5hbGx5IGFsbG9jYXRlZCBzdHJpbmc7IGl0CisgKiBzaG91bGQgbm90IGJlIGZy
ZWVkLCBtb2RpZmllZCBvciBzdG9yZWQuCisgKgorICogU2luY2U6IDEuMC4yCisgKiovCitjb25z
dCBnY2hhciogd2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X2luc3BlY3RlZF91cmkoV2ViS2l0V2Vi
SW5zcGVjdG9yICp3ZWJfaW5zcGVjdG9yKQoreworICAgIFdlYktpdFdlYkluc3BlY3RvclByaXZh
dGUqIHByaXYgPSB3ZWJfaW5zcGVjdG9yLT5wcml2OworCisgICAgcmV0dXJuIHByaXYtPmluc3Bl
Y3RlZF91cmk7Cit9CisKK3ZvaWQKK3dlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNwZWN0b3Jf
Y2xpZW50KFdlYktpdFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3RvciwgV2ViS2l0OjpJbnNwZWN0
b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKK3sKKyAgICBXZWJLaXRXZWJJbnNwZWN0b3JQcml2
YXRlKiBwcml2ID0gd2ViX2luc3BlY3Rvci0+cHJpdjsKKworICAgIHByaXYtPmluc3BlY3RvckNs
aWVudCA9IGluc3BlY3RvckNsaWVudDsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJp
bnNwZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWNjZjkyCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmgK
QEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2lmbmRlZiBfX1dFQktJVF9XRUJfSU5TUEVDVE9SX0hfXworI2RlZmluZSBfX1dF
QktJVF9XRUJfSU5TUEVDVE9SX0hfXworCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKworI2lu
Y2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SICAgICAgICAgICAgKHdlYmtpdF93ZWJfaW5zcGVj
dG9yX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9XRUJfSU5TUEVDVE9SKG9iaikgICAgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9J
TlNQRUNUT1IsIFdlYktpdFdlYkluc3BlY3RvcikpCisjZGVmaW5lIFdFQktJVF9XRUJfSU5TUEVD
VE9SX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdF
QktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsIFdlYktpdFdlYkluc3BlY3RvckNsYXNzKSkKKyNkZWZp
bmUgV0VCS0lUX0lTX1dFQl9JTlNQRUNUT1Iob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5T
VEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RPUikpCisjZGVmaW5lIFdF
QktJVF9JU19XRUJfSU5TUEVDVE9SX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZ
UEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IpKQorI2RlZmluZSBXRUJLSVRf
V0VCX0lOU1BFQ1RPUl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1Mo
KG9iaiksICBXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLCBXZWJLaXRXZWJJbnNwZWN0b3JDbGFz
cykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlIFdlYktpdFdl
Ykluc3BlY3RvclByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0V2ViSW5zcGVjdG9yIHsKKyAgICBH
T2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKworICAgIFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUq
IHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYkluc3BlY3RvckNsYXNzIHsKKyAgICBHT2Jq
ZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgLyogUGFkZGluZyBmb3IgZnV0dXJlIGV4cGFu
c2lvbiAqLworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOworICAgIHZvaWQg
KCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
MykgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkNCkgKHZvaWQpOworfTsKKwor
V0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3R5cGUgKHZvaWQpOwor
CitXRUJLSVRfQVBJIFdlYktpdFdlYlZpZXcqCit3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfd2Vi
X3ZpZXcoV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJfaW5zcGVjdG9yKTsKKworV0VCS0lUX0FQSSBj
b25zdCBnY2hhcioKK3dlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9pbnNwZWN0ZWRfdXJpKFdlYktp
dFdlYkluc3BlY3Rvciogd2ViX2luc3BlY3Rvcik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAv
KiBfX1dFQktJVF9XRUJfSU5TUEVDVE9SX0hfXyAqLwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
c2V0dGluZ3MuY3BwCmluZGV4IDA4ZTQwOWQuLmJkOTlhNjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJzZXR0aW5ncy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJT
ZXR0aW5nc1ByaXZhdGUgewogICAgIGdib29sZWFuIHJlc2l6YWJsZV90ZXh0X2FyZWFzOwogICAg
IGdjaGFyKiB1c2VyX3N0eWxlc2hlZXRfdXJpOwogICAgIGdmbG9hdCB6b29tX3N0ZXA7CisgICAg
Z2Jvb2xlYW4gZW5hYmxlX2RldmVsb3Blcl9leHRyYXM7CiB9OwogCiAjZGVmaW5lIFdFQktJVF9X
RUJfU0VUVElOR1NfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRF
KChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0
ZSkpCkBAIC03Myw3ICs3NCw4IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX1BMVUdJTlMsCiAg
ICAgUFJPUF9SRVNJWkFCTEVfVEVYVF9BUkVBUywKICAgICBQUk9QX1VTRVJfU1RZTEVTSEVFVF9V
UkksCi0gICAgUFJPUF9aT09NX1NURVAKKyAgICBQUk9QX1pPT01fU1RFUCwKKyAgICBQUk9QX0VO
QUJMRV9ERVZFTE9QRVJfRVhUUkFTCiB9OwogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRp
bmdzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CkBAIC0yNjgsNiArMjcwLDI1IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRXZWJTZXR0aW5nc0Ns
YXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsIEdf
TUFYRkxPQVQsIDAuMWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cykpOwogCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtZGV2ZWxvcGVy
LWV4dHJhczoKKyAgICAqCisgICAgKiBXaGV0aGVyIGRldmVsb3BlciBleHRlbnNpb25zIHNob3Vs
ZCBiZSBlbmFibGVkLiBUaGlzIGVuYWJsZXMsCisgICAgKiBmb3Igbm93LCB0aGUgV2ViIEluc3Bl
Y3Rvciwgd2hpY2ggY2FuIGJlIGNvbnRyb2xsZWQgdXNpbmcgdGhlCisgICAgKiAjV2ViS2l0V2Vi
SW5zcGVjdG9yIGluc3RhbmNlIGhlbGQgYnkgdGhlICNXZWJLaXRXZWJWaWV3IHRoaXMKKyAgICAq
IHNldHRpbmcgaXMgZW5hYmxlZCBmb3IuCisgICAgKgorICAgICogU2luY2U6IDEuMC4yCisgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9ERVZFTE9QRVJf
RVhUUkFTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVj
X2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5hYmxlLWRl
dmVsb3Blci1leHRyYXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVu
YWJsZSBEZXZlbG9wZXIgRXh0cmFzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJFbmFibGVzIHNwZWNpYWwgZXh0ZW5zaW9ucyB0aGF0IGhlbHAgZGV2ZWxvcGVycyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKICAgICBnX3R5cGVfY2xhc3NfYWRkX3By
aXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKTsKIH0KIApAQCAt
MzY0LDYgKzM4NSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uCiAgICAgY2FzZSBQUk9QX1pP
T01fU1RFUDoKICAgICAgICAgcHJpdi0+em9vbV9zdGVwID0gZ192YWx1ZV9nZXRfZmxvYXQodmFs
dWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0RFVkVMT1BFUl9FWFRS
QVM6CisgICAgICAgIHByaXYtPmVuYWJsZV9kZXZlbG9wZXJfZXh0cmFzID0gZ192YWx1ZV9nZXRf
Ym9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsK
ICAgICAgICAgYnJlYWs7CkBAIC00MzMsNiArNDU3LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl9zZXR0aW5nc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBH
VmEKICAgICBjYXNlIFBST1BfWk9PTV9TVEVQOgogICAgICAgICBnX3ZhbHVlX3NldF9mbG9hdCh2
YWx1ZSwgcHJpdi0+em9vbV9zdGVwKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VO
QUJMRV9ERVZFTE9QRVJfRVhUUkFTOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCBwcml2LT5lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyk7CisgICAgICAgIGJyZWFrOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BfaWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC00ODMsNiArNTEwLDcgQEAgV2Vi
S2l0V2ViU2V0dGluZ3MqIHdlYmtpdF93ZWJfc2V0dGluZ3NfY29weShXZWJLaXRXZWJTZXR0aW5n
cyogd2ViX3NldHRpbmdzKQogICAgICAgICAgICAgICAgICAicmVzaXphYmxlLXRleHQtYXJlYXMi
LCBwcml2LT5yZXNpemFibGVfdGV4dF9hcmVhcywKICAgICAgICAgICAgICAgICAgInVzZXItc3R5
bGVzaGVldC11cmkiLCBwcml2LT51c2VyX3N0eWxlc2hlZXRfdXJpLAogICAgICAgICAgICAgICAg
ICAiem9vbS1zdGVwIiwgcHJpdi0+em9vbV9zdGVwLAorICAgICAgICAgICAgICAgICAiZW5hYmxl
LWRldmVsb3Blci1leHRyYXMiLCBwcml2LT5lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcywKICAgICAg
ICAgICAgICAgICAgTlVMTCkpOwogCiAgICAgcmV0dXJuIGNvcHk7CmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCmluZGV4IDU5ZjEyZjguLjBmZmI4MjggMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5o
IgogI2luY2x1ZGUgIndlYmtpdG1hcnNoYWwuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgi
CisjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAid2Via2l0d2ViYmFj
a2ZvcndhcmRsaXN0LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViaGlzdG9yeWl0ZW0uaCIKIApAQCAt
MTAxLDYgKzEwMiw3IEBAIGVudW0gewogICAgIFBST1BfUEFTVEVfVEFSR0VUX0xJU1QsCiAgICAg
UFJPUF9FRElUQUJMRSwKICAgICBQUk9QX1NFVFRJTkdTLAorICAgIFBST1BfV0VCX0lOU1BFQ1RP
UiwKICAgICBQUk9QX1RSQU5TUEFSRU5ULAogICAgIFBST1BfWk9PTV9MRVZFTCwKICAgICBQUk9Q
X0ZVTExfQ09OVEVOVF9aT09NCkBAIC0yNDAsNiArMjQyLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdW
YWx1ZSoKICAgICBjYXNlIFBST1BfU0VUVElOR1M6CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVj
dCh2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9XRUJfSU5TUEVDVE9SOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVjdG9yKHdlYlZpZXcpKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RSQU5TUEFSRU5UOgogICAgICAgICBnX3Zh
bHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RyYW5zcGFyZW50KHdl
YlZpZXcpKTsKICAgICAgICAgYnJlYWs7CkBAIC03NjMsNiArNzY4LDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAgICBnX29iamVjdF91
bnJlZihwcml2LT5iYWNrRm9yd2FyZExpc3QpOwogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nv
bm5lY3RfYnlfZnVuYyhwcml2LT53ZWJTZXR0aW5ncywgKGdwb2ludGVyKXdlYmtpdF93ZWJfdmll
d19zZXR0aW5nc19ub3RpZnksIHdlYlZpZXcpOwogICAgIGdfb2JqZWN0X3VucmVmKHByaXYtPndl
YlNldHRpbmdzKTsKKyAgICBnX29iamVjdF91bnJlZihwcml2LT53ZWJJbnNwZWN0b3IpOwogICAg
IGdfb2JqZWN0X3VucmVmKHByaXYtPm1haW5GcmFtZSk7CiAgICAgZ19vYmplY3RfdW5yZWYocHJp
di0+aW1Db250ZXh0KTsKICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+Y29weV90YXJn
ZXRfbGlzdCk7CkBAIC0xMjY1LDYgKzEyNzEsMjAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9U
WVBFX1dFQl9TRVRUSU5HUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwogCisgICAgLyoqCisg
ICAgKiBXZWJLaXRXZWJWaWV3OndlYi1pbnNwZWN0b3I6CisgICAgKgorICAgICogVGhlIGFzc29j
aWF0ZWQgV2ViS2l0V2ViSW5zcGVjdG9yIGluc3RhbmNlLgorICAgICoKKyAgICAqIFNpbmNlOiAx
LjAuMgorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RD
bGFzcywgUFJPUF9XRUJfSU5TUEVDVE9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgid2ViLWluc3BlY3RvciIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZWIgSW5zcGVjdG9y
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlRoZSBhc3NvY2lhdGVkIFdlYktpdFdlYkluc3BlY3RvciBpbnN0YW5jZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9U
WVBFX1dFQl9JTlNQRUNUT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworCiAgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywgUFJPUF9FRElUQUJMRSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJl
ZGl0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRWRpdGFibGUiLApAQCAtMTM1MSw3ICsxMzcxLDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGNvcmUod2ViVmlldyktPnNldHRpbmdzKCk7CiAKICAg
ICBnY2hhciogZGVmYXVsdEVuY29kaW5nLCAqY3Vyc2l2ZUZvbnRGYW1pbHksICpkZWZhdWx0Rm9u
dEZhbWlseSwgKmZhbnRhc3lGb250RmFtaWx5LCAqbW9ub3NwYWNlRm9udEZhbWlseSwgKnNhbnNT
ZXJpZkZvbnRGYW1pbHksICpzZXJpZkZvbnRGYW1pbHksICp1c2VyU3R5bGVzaGVldFVyaTsKLSAg
ICBnYm9vbGVhbiBhdXRvTG9hZEltYWdlcywgYXV0b1Nocmlua0ltYWdlcywgcHJpbnRCYWNrZ3Jv
dW5kcywgZW5hYmxlU2NyaXB0cywgZW5hYmxlUGx1Z2lucywgcmVzaXphYmxlVGV4dEFyZWFzOwor
ICAgIGdib29sZWFuIGF1dG9Mb2FkSW1hZ2VzLCBhdXRvU2hyaW5rSW1hZ2VzLCBwcmludEJhY2tn
cm91bmRzLCBlbmFibGVTY3JpcHRzLCBlbmFibGVQbHVnaW5zLCBlbmFibGVEZXZlbG9wZXJFeHRy
YXMsIHJlc2l6YWJsZVRleHRBcmVhczsKIAogICAgIGdfb2JqZWN0X2dldChHX09CSkVDVCh3ZWJT
ZXR0aW5ncyksCiAgICAgICAgICAgICAgICAgICJkZWZhdWx0LWVuY29kaW5nIiwgJmRlZmF1bHRF
bmNvZGluZywKQEAgLTEzNjgsNiArMTM4OCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgICAgICAg
ICAgImVuYWJsZS1wbHVnaW5zIiwgJmVuYWJsZVBsdWdpbnMsCiAgICAgICAgICAgICAgICAgICJy
ZXNpemFibGUtdGV4dC1hcmVhcyIsICZyZXNpemFibGVUZXh0QXJlYXMsCiAgICAgICAgICAgICAg
ICAgICJ1c2VyLXN0eWxlc2hlZXQtdXJpIiwgJnVzZXJTdHlsZXNoZWV0VXJpLAorICAgICAgICAg
ICAgICAgICAiZW5hYmxlLWRldmVsb3Blci1leHRyYXMiLCAmZW5hYmxlRGV2ZWxvcGVyRXh0cmFz
LAogICAgICAgICAgICAgICAgICBOVUxMKTsKIAogICAgIHNldHRpbmdzLT5zZXREZWZhdWx0VGV4
dEVuY29kaW5nTmFtZShkZWZhdWx0RW5jb2RpbmcpOwpAQCAtMTM4NCw2ICsxNDA1LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogICAgIHNldHRpbmdzLT5zZXRQbHVnaW5zRW5hYmxlZChlbmFibGVQbHVnaW5zKTsK
ICAgICBzZXR0aW5ncy0+c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKHJlc2l6YWJsZVRleHRBcmVh
cyk7CiAgICAgc2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oS1VSTCh1c2VyU3R5
bGVzaGVldFVyaSkpOworICAgIHNldHRpbmdzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGVu
YWJsZURldmVsb3BlckV4dHJhcyk7CiAKICAgICBnX2ZyZWUoZGVmYXVsdEVuY29kaW5nKTsKICAg
ICBnX2ZyZWUoY3Vyc2l2ZUZvbnRGYW1pbHkpOwpAQCAtMTQ1Myw3ICsxNDc1LDE0IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAg
d2ViVmlldy0+cHJpdiA9IHByaXY7CiAKICAgICBwcml2LT5pbUNvbnRleHQgPSBndGtfaW1fbXVs
dGljb250ZXh0X25ldygpOwotICAgIHByaXYtPmNvcmVQYWdlID0gbmV3IFBhZ2UobmV3IFdlYktp
dDo6Q2hyb21lQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudCh3
ZWJWaWV3KSwgbmV3IFdlYktpdDo6RWRpdG9yQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpE
cmFnQ2xpZW50LCBuZXcgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQpOworCisgICAgV2ViS2l0OjpJ
bnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJLaXQ6Okluc3BlY3RvckNs
aWVudCh3ZWJWaWV3KTsKKyAgICBwcml2LT5jb3JlUGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJLaXQ6
OkNocm9tZUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnQod2Vi
VmlldyksIG5ldyBXZWJLaXQ6OkVkaXRvckNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RHJh
Z0NsaWVudCwgaW5zcGVjdG9yQ2xpZW50KTsKKworICAgIC8vIFdlIGFsc28gYWRkIGEgc2ltcGxl
IHdyYXBwZXIgY2xhc3MgdG8gcHJvdmlkZSB0aGUgcHVibGljCisgICAgLy8gaW50ZXJmYWNlIGZv
ciB0aGUgV2ViIEluc3BlY3Rvci4KKyAgICBwcml2LT53ZWJJbnNwZWN0b3IgPSBXRUJLSVRfV0VC
X0lOU1BFQ1RPUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RPUiwgTlVMTCkp
OworICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX3NldF9pbnNwZWN0b3JfY2xpZW50KHByaXYtPndl
Ykluc3BlY3RvciwgaW5zcGVjdG9yQ2xpZW50KTsKIAogICAgIHByaXYtPmhvcml6b250YWxBZGp1
c3RtZW50ID0gR1RLX0FESlVTVE1FTlQoZ3RrX2FkanVzdG1lbnRfbmV3KDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjApKTsKICAgICBwcml2LT52ZXJ0aWNhbEFkanVzdG1lbnQgPSBHVEtfQURK
VVNUTUVOVChndGtfYWRqdXN0bWVudF9uZXcoMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCkp
OwpAQCAtMTUyOSw2ICsxNTU4LDMwIEBAIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAKIC8qKgorICogd2Vi
a2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3I6CisgKiBAd2ViVmlldzogYSAjV2ViS2l0V2ViVmll
dworICoKKyAqIE9idGFpbnMgdGhlICNXZWJLaXRXZWJJbnNwZWN0b3IgYXNzb2NpYXRlZCB3aXRo
IHRoZQorICogI1dlYktpdFdlYlZpZXcuIEV2ZXJ5ICNXZWJLaXRXZWJWaWV3IG9iamVjdCBoYXMg
YQorICogI1dlYktpdFdlYkluc3BlY3RvciBvYmplY3QgYXR0YWNoZWQgdG8gaXQgYXMgc29vbiBh
cyBpdCBpcyBjcmVhdGVkLAorICogc28gdGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIE5V
TEwgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCBhCisgKiB2YWxpZCAjV2ViS2l0V2ViVmlldy4KKyAq
CisgKiBSZXR1cm5zOiB0aGUgI1dlYktpdFdlYkluc3BlY3RvciBpbnN0YW5jZSBhc3NvY2lhdGVk
IHdpdGggdGhlCisgKiAjV2ViS2l0V2ViVmlldzsgJU5VTEwgaXMgb25seSByZXR1cm5lZCBpZiB0
aGUgYXJndW1lbnQgaXMgbm90IGEKKyAqIHZhbGlkICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIFNp
bmNlOiAxLjAuMgorICovCitXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYmtpdF93ZWJfdmlld19nZXRf
aW5zcGVjdG9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKKworICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICByZXR1cm4gcHJpdi0+d2Vi
SW5zcGVjdG9yOworfQorCisvKioKICAqIHdlYmtpdF93ZWJfdmlld19zZXRfbWFpbnRhaW5zX2Jh
Y2tfZm9yd2FyZF9saXN0OgogICogQHdlYlZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqIEBmbGFn
OiB0byB0ZWxsIHRoZSB2aWV3IHRvIG1haW50YWluIGEgYmFjayBvciBmb3J3YXJkIGxpc3QKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCBlYmQxYWExLi43MzcxOTU5IDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oCkBAIC0yNDcsNiArMjQ3LDkgQEAgd2Via2l0X3dlYl92aWV3X3Nl
dF9zZXR0aW5ncyAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJf
dmlldywKIFdFQktJVF9BUEkgV2ViS2l0V2ViU2V0dGluZ3MgKgogd2Via2l0X3dlYl92aWV3X2dl
dF9zZXR0aW5ncyAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJf
dmlldyk7CiAKK1dFQktJVF9BUEkgV2ViS2l0V2ViSW5zcGVjdG9yICoKK3dlYmtpdF93ZWJfdmll
d19nZXRfaW5zcGVjdG9yICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAq
d2ViX3ZpZXcpOworCiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Ry
YW5zcGFyZW50ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYl92aWV3
KTsKIAotLSAKMS41LjYuMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>