<?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>178205</bug_id>
          
          <creation_ts>2017-10-12 02:50:53 -0700</creation_ts>
          <short_desc>[WPE] Remove GLib API functions which use Cairo</short_desc>
          <delta_ts>2017-11-15 12:13:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WPE WebKit</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=178157</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrian Perez">aperez</reporter>
          <assigned_to name="Adrian Perez">aperez</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1359560</commentid>
    <comment_count>0</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-10-12 02:50:53 -0700</bug_when>
    <thetext>We want to avoid using Cairo in the public WPE GLib API (see
related bug #178157) so for now let&apos;s just remove the few
functions that use it from the headers:

 - webkit_web_view_get_snapshot_finish
 - webkit_web_view_get_favicon
 - webkit_favicon_database_get_favicon_finish

This will make the API headers useable while avoiding usage of
the above functions until we re-add them later on once we figure
out what they will use instead of Cairo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359565</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-12 03:07:37 -0700</bug_when>
    <thetext>...of course you&apos;ll also remove webkit_web_view_get_snapshot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359566</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-12 03:09:14 -0700</bug_when>
    <thetext>Please actually guard the function implementations (including the doc comments) with #if PLATFORM(GTK).

I think this can all be done in one patch, so I&apos;m not sure why this is a separate bug from bug #178157.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359567</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-12 03:12:01 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #2)
&gt; Please actually guard the function implementations (including the doc
&gt; comments) with #if PLATFORM(GTK).

Or move them to WebKitWebViewGtk.cpp, but Carlos Garcia has been preferring #if PLATFORM(GTK) instead. Not sure why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359569</commentid>
    <comment_count>4</comment_count>
      <attachid>323518</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-10-12 03:32:05 -0700</bug_when>
    <thetext>Created attachment 323518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359570</commentid>
    <comment_count>5</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-10-12 03:35:34 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #2)
&gt; Please actually guard the function implementations (including the doc
&gt; comments) with #if PLATFORM(GTK).
&gt; 
&gt; I think this can all be done in one patch, so I&apos;m not sure why this is a
&gt; separate bug from bug #178157.

What I was thinking would be better is to guard the definitions with
“WEBKIT2_COMPILATION” inside the WPE headers, because some other parts
inside WebKit can use the function. For example: WebKitWebView uses the
webkit_favicon_database_get_favicon{,_finish} functions.

The reason why I have made this new bug is that #178157 is for *replacing*
Cairo in the WPE public API, and this one is only for *removing* Cairo,
which is a stopgap measure to avoid third-parties using the affected parts
of the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359573</commentid>
    <comment_count>6</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-10-12 04:36:18 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #5)
&gt; (In reply to Michael Catanzaro from comment #2)
&gt; &gt; Please actually guard the function implementations (including the doc
&gt; &gt; comments) with #if PLATFORM(GTK).
&gt; &gt; 
&gt; &gt; I think this can all be done in one patch, so I&apos;m not sure why this is a
&gt; &gt; separate bug from bug #178157.
&gt; 
&gt; What I was thinking would be better is to guard the definitions with
&gt; “WEBKIT2_COMPILATION” inside the WPE headers, because some other parts
&gt; inside WebKit can use the function. For example: WebKitWebView uses the
&gt; webkit_favicon_database_get_favicon{,_finish} functions.

Also, web page snapshots are used in the unit tests and that made the EWS
fail. Let&apos;s make the function definitions available for tests as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359574</commentid>
    <comment_count>7</comment_count>
      <attachid>323521</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-10-12 04:44:44 -0700</bug_when>
    <thetext>Created attachment 323521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359576</commentid>
    <comment_count>8</comment_count>
      <attachid>323521</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-12 05:00:41 -0700</bug_when>
    <thetext>Comment on attachment 323521
Patch

The unit tests should not be testing a function that&apos;s not in our API. And the symbol should not be exported by the installed library.

Code using these functions in WebKitWebView should be guarded by #if PLATFORM(GTK).

When entire API functions are guarded with PLATFORM(GTK), I would move them to WebKitWebViewGtk, but Carlos Garcia has not been doing that, so let&apos;s not start now. We can ask him why when he&apos;s available again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359577</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-12 05:01:46 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #8)
&gt; Comment on attachment 323521 [details]
&gt; Patch
&gt; 
&gt; The unit tests should not be testing a function that&apos;s not in our API.

I mean, the tests should be guarded with #if PLATFORM(GTK), just like we do for the rest of the GLib API that&apos;s not exposed to WPE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360763</commentid>
    <comment_count>10</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-10-16 08:44:29 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #9)
&gt; (In reply to Michael Catanzaro from comment #8)
&gt; &gt; Comment on attachment 323521 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; The unit tests should not be testing a function that&apos;s not in our API.
&gt; 
&gt; I mean, the tests should be guarded with #if PLATFORM(GTK), just like we do
&gt; for the rest of the GLib API that&apos;s not exposed to WPE.

If we do that, any test that uses “WebViewTest::getSnapshotAndWaitUntilReady()”
will *NOT* be built for WPE. The following tests would need to be disabled:

 - WebKitFindController/hide
 - WebKitWebView/snapshot
 - WebKitFaviconDatabase/favicon-database-test (some parts).

Of course it&apos;s okay to have the two last ones disabled, as we are “removing”
the associated API functions for WPE. I do not feel very comfortable by
disabling “WebKitFindController/hide” as well, that&apos;s why I thought it could
be a good idea to *build* the code but use #ifdefs in the headers.

If everybody is okay with removing the “WebKitFindController/hide” test, I&apos;ll
submit a patch that does as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360765</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-16 08:49:36 -0700</bug_when>
    <thetext>Yes, please disable all three tests for WPE. For the FindController test, you could add a TODO suggesting that the test should be enhanced to not depend on the snapshot API so that it can be enabled for WPE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360938</commentid>
    <comment_count>12</comment_count>
      <attachid>323937</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-10-16 13:36:32 -0700</bug_when>
    <thetext>Created attachment 323937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360984</commentid>
    <comment_count>13</comment_count>
      <attachid>323937</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-16 15:42:23 -0700</bug_when>
    <thetext>Comment on attachment 323937
Patch

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

This is way better than before, thanks. But still r- due to a couple remaining problems.

&gt; Source/WebKit/UIProcess/API/glib/WebKitFaviconDatabasePrivate.h:33
&gt; +#if PLATFORM(GTK)
&gt;  void webkitFaviconDatabaseGetLoadDecisionForIcon(WebKitFaviconDatabase*, const WebCore::LinkIcon&amp;, const String&amp;, Function&lt;void(bool)&gt;&amp;&amp;);
&gt;  void webkitFaviconDatabaseSetIconForPageURL(WebKitFaviconDatabase*, const WebCore::LinkIcon&amp;, API::Data&amp;, const String&amp;);
&gt; +#endif

Won&apos;t removing these break the webkit_favicon_database_get_favicon_uri() API? I think these probably need to stay in.

Also: you added guards here, but forgot to add them in WebKitFaviconDatabase.cpp, which is bad. So please ensure it&apos;s consistent.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:500
&gt;      webkitWebViewUpdateFaviconURI(webView, faviconURI);

Pretty sure this breaks webkit_favicon_database_get_favicon_uri(). Do we not have any API tests for that, or did you run them?

We need to be careful to remove only the portions of these functions that implement webkit_favicon_database_get_favicon() so that we keep webkit_favicon_database_get_favicon_uri() working.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1948
&gt; +#if PLATFORM(GTK)
&gt;      case WEBKIT_LOAD_COMMITTED: {
&gt;          WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(priv-&gt;context.get());
&gt;          GUniquePtr&lt;char&gt; faviconURI(webkit_favicon_database_get_favicon_uri(database, priv-&gt;activeURI.data()));
&gt;          webkitWebViewUpdateFaviconURI(webView, faviconURI.get());
&gt;          break;
&gt;      }
&gt; +#endif

This should stay too.

&gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:588
&gt;  void webkitWebPageDidReceiveMessage(WebKitWebPage* page, const String&amp; messageName, API::Dictionary&amp; message)
&gt;  {
&gt; +#if PLATFORM(GTK)

I don&apos;t think the guards are needed here, especially since you didn&apos;t remove the web process functionality that backs the GetSnapshot message, right?

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitFaviconDatabase.cpp:246
&gt;  static void testGetFaviconURI(FaviconDatabaseTest* test)
&gt;  {

Is this test really still passing?

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitFaviconDatabase.cpp:292
&gt; +#if PLATFORM(GTK)
&gt;      testGetFavicon(test);
&gt; +#endif
&gt; +
&gt;      testGetFaviconURI(test);
&gt; +
&gt; +#if PLATFORM(GTK)
&gt;      testWebViewFavicon(test);
&gt; +#endif

I bet they can be reordered so you only need one set of guards, right?

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitFindController.cpp:261
&gt; +// TODO: Rewrite this test to avoid using snapshots so it can be re-enabled
&gt; +//       for WPE or, alternatively, make snapshots work for WPE as well.

Don&apos;t indent the second line of the comment, that&apos;s not WebKit style for comments.

&gt; Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:373
&gt;  static void onSnapshotReady(WebKitWebView* web_view, GAsyncResult* res, WebViewTest* test)

Please move this and WebViewTest::getSnapshotAndWaitUntilReady into WebViewTestGtk.cpp.

(Also, now that Carlos Garcia is back, we can ask him why he has left so many functions in WebKitWebView.cpp that could be moved to WebKitWebViewGtk.cpp.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362642</commentid>
    <comment_count>14</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-10-20 03:51:23 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #13)
&gt; Comment on attachment 323937 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=323937&amp;action=review
&gt; 
&gt; This is way better than before, thanks. But still r- due to a couple
&gt; remaining problems.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitFaviconDatabasePrivate.h:33
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt;  void webkitFaviconDatabaseGetLoadDecisionForIcon(WebKitFaviconDatabase*, const WebCore::LinkIcon&amp;, const String&amp;, Function&lt;void(bool)&gt;&amp;&amp;);
&gt; &gt;  void webkitFaviconDatabaseSetIconForPageURL(WebKitFaviconDatabase*, const WebCore::LinkIcon&amp;, API::Data&amp;, const String&amp;);
&gt; &gt; +#endif
&gt; 
&gt; Won&apos;t removing these break the webkit_favicon_database_get_favicon_uri()
&gt; API? I think these probably need to stay in.

Theorically no: removing these only prevents favicon bitmap data from
being fetched, and the favicon URIs in the database will still be kept
updated.

(The “ensureFaviconDatabase()” function in “WebKitWebContext.cpp”
is the one that creates the “WebKitFaviconDatabase” instance, and
then when setting the database path, “webkitFaviconDatabaseOpen()”
will be called and that instantiates and attaches an instance of
“WebKitFaviconDatabaseClient” to listen for favicon URL changes.)

That being said, the “webkitFaviconDatabaseSetIconForPageURL()” does
also set the URI. I wonder whether there can be cases in which the URI
is only set using this, and not from the “WebKitFaviconDatabaseClient”.
I&apos;ll take a deeper into the code to figure out this.

&gt; Also: you added guards here, but forgot to add them in
&gt; WebKitFaviconDatabase.cpp, which is bad. So please ensure it&apos;s consistent.

Correct, let&apos;s make the guards consistent!

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:500
&gt; &gt;      webkitWebViewUpdateFaviconURI(webView, faviconURI);
&gt; 
&gt; Pretty sure this breaks webkit_favicon_database_get_favicon_uri(). Do we not
&gt; have any API tests for that, or did you run them?

Not necessarily, for the reasons outlined above. As said, I am not 100%
sure so I&apos;ll double check.

&gt; We need to be careful to remove only the portions of these functions that
&gt; implement webkit_favicon_database_get_favicon() so that we keep
&gt; webkit_favicon_database_get_favicon_uri() working.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1948
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt;      case WEBKIT_LOAD_COMMITTED: {
&gt; &gt;          WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(priv-&gt;context.get());
&gt; &gt;          GUniquePtr&lt;char&gt; faviconURI(webkit_favicon_database_get_favicon_uri(database, priv-&gt;activeURI.data()));
&gt; &gt;          webkitWebViewUpdateFaviconURI(webView, faviconURI.get());
&gt; &gt;          break;
&gt; &gt;      }
&gt; &gt; +#endif
&gt; 
&gt; This should stay too.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:588
&gt; &gt;  void webkitWebPageDidReceiveMessage(WebKitWebPage* page, const String&amp; messageName, API::Dictionary&amp; message)
&gt; &gt;  {
&gt; &gt; +#if PLATFORM(GTK)
&gt; 
&gt; I don&apos;t think the guards are needed here, especially since you didn&apos;t remove
&gt; the web process functionality that backs the GetSnapshot message, right?

The web process functionality is also guarded.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitFaviconDatabase.cpp:246
&gt; &gt;  static void testGetFaviconURI(FaviconDatabaseTest* test)
&gt; &gt;  {
&gt; 
&gt; Is this test really still passing?

I&apos;m having some trouble running tests, but I&apos;ll get to have them
run and passing before landing.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitFaviconDatabase.cpp:292
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt;      testGetFavicon(test);
&gt; &gt; +#endif
&gt; &gt; +
&gt; &gt;      testGetFaviconURI(test);
&gt; &gt; +
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt;      testWebViewFavicon(test);
&gt; &gt; +#endif
&gt; 
&gt; I bet they can be reordered so you only need one set of guards, right?

Most likely yes, I&apos;ll try.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitFindController.cpp:261
&gt; &gt; +// TODO: Rewrite this test to avoid using snapshots so it can be re-enabled
&gt; &gt; +//       for WPE or, alternatively, make snapshots work for WPE as well.
&gt; 
&gt; Don&apos;t indent the second line of the comment, that&apos;s not WebKit style for
&gt; comments.

Ok.

&gt; &gt; Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:373
&gt; &gt;  static void onSnapshotReady(WebKitWebView* web_view, GAsyncResult* res, WebViewTest* test)
&gt; 
&gt; Please move this and WebViewTest::getSnapshotAndWaitUntilReady into
&gt; WebViewTestGtk.cpp.

Ok.

&gt; (Also, now that Carlos Garcia is back, we can ask him why he has left so
&gt; many functions in WebKitWebView.cpp that could be moved to
&gt; WebKitWebViewGtk.cpp.)

Could it be just in case we would want to re-enable them later on? Keeping
them in the same file but guarded makes it somewhat easier to follow VCS
history and using functionality like “git blame”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362729</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-20 09:40:10 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #14)
&gt; The web process functionality is also guarded.

IMO it would be better to not guard it, since we&apos;ll eventually want to use it for WPE and the reason we don&apos;t expose it for WPE is entirely specific to the API layer, not the implementation.

But I&apos;m OK with this if you prefer it this way, since you&apos;re doing the work.
 
&gt; Could it be just in case we would want to re-enable them later on? Keeping
&gt; them in the same file but guarded makes it somewhat easier to follow VCS
&gt; history and using functionality like “git blame”.

Maybe. Carlos has been available for a week now, you can just ask him. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363598</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-10-23 23:51:35 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #13)
&gt; Comment on attachment 323937 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=323937&amp;action=review
&gt; 
&gt; This is way better than before, thanks. But still r- due to a couple
&gt; remaining problems.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitFaviconDatabasePrivate.h:33
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt;  void webkitFaviconDatabaseGetLoadDecisionForIcon(WebKitFaviconDatabase*, const WebCore::LinkIcon&amp;, const String&amp;, Function&lt;void(bool)&gt;&amp;&amp;);
&gt; &gt;  void webkitFaviconDatabaseSetIconForPageURL(WebKitFaviconDatabase*, const WebCore::LinkIcon&amp;, API::Data&amp;, const String&amp;);
&gt; &gt; +#endif
&gt; 
&gt; Won&apos;t removing these break the webkit_favicon_database_get_favicon_uri()
&gt; API? I think these probably need to stay in.
&gt; 
&gt; Also: you added guards here, but forgot to add them in
&gt; WebKitFaviconDatabase.cpp, which is bad. So please ensure it&apos;s consistent.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:500
&gt; &gt;      webkitWebViewUpdateFaviconURI(webView, faviconURI);
&gt; 
&gt; Pretty sure this breaks webkit_favicon_database_get_favicon_uri(). Do we not
&gt; have any API tests for that, or did you run them?
&gt; 
&gt; We need to be careful to remove only the portions of these functions that
&gt; implement webkit_favicon_database_get_favicon() so that we keep
&gt; webkit_favicon_database_get_favicon_uri() working.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1948
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt;      case WEBKIT_LOAD_COMMITTED: {
&gt; &gt;          WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(priv-&gt;context.get());
&gt; &gt;          GUniquePtr&lt;char&gt; faviconURI(webkit_favicon_database_get_favicon_uri(database, priv-&gt;activeURI.data()));
&gt; &gt;          webkitWebViewUpdateFaviconURI(webView, faviconURI.get());
&gt; &gt;          break;
&gt; &gt;      }
&gt; &gt; +#endif
&gt; 
&gt; This should stay too.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:588
&gt; &gt;  void webkitWebPageDidReceiveMessage(WebKitWebPage* page, const String&amp; messageName, API::Dictionary&amp; message)
&gt; &gt;  {
&gt; &gt; +#if PLATFORM(GTK)
&gt; 
&gt; I don&apos;t think the guards are needed here, especially since you didn&apos;t remove
&gt; the web process functionality that backs the GetSnapshot message, right?
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitFaviconDatabase.cpp:246
&gt; &gt;  static void testGetFaviconURI(FaviconDatabaseTest* test)
&gt; &gt;  {
&gt; 
&gt; Is this test really still passing?
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitFaviconDatabase.cpp:292
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt;      testGetFavicon(test);
&gt; &gt; +#endif
&gt; &gt; +
&gt; &gt;      testGetFaviconURI(test);
&gt; &gt; +
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt;      testWebViewFavicon(test);
&gt; &gt; +#endif
&gt; 
&gt; I bet they can be reordered so you only need one set of guards, right?
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitFindController.cpp:261
&gt; &gt; +// TODO: Rewrite this test to avoid using snapshots so it can be re-enabled
&gt; &gt; +//       for WPE or, alternatively, make snapshots work for WPE as well.
&gt; 
&gt; Don&apos;t indent the second line of the comment, that&apos;s not WebKit style for
&gt; comments.
&gt; 
&gt; &gt; Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:373
&gt; &gt;  static void onSnapshotReady(WebKitWebView* web_view, GAsyncResult* res, WebViewTest* test)
&gt; 
&gt; Please move this and WebViewTest::getSnapshotAndWaitUntilReady into
&gt; WebViewTestGtk.cpp.
&gt; 
&gt; (Also, now that Carlos Garcia is back, we can ask him why he has left so
&gt; many functions in WebKitWebView.cpp that could be moved to
&gt; WebKitWebViewGtk.cpp.)

What functions do you mean? there are only a few GTK ifdefs in WebKitWebView for several reasons:

 - Defining signal, properties or vfuncs, because all of them happen in class_init and I think it&apos;s better to have those together. We would need to make the prop and signal enums public (but private) somehow, and adding a platformClassInit or something like that. I don&apos;t think it&apos;s worth it.

 - Things that are not currently supported by WPE, but might be eventually, like the context menu API. I don&apos;t want to move that to Gtk to mov them back to the common file once WPE implements it.

 - Functions that emit signals. Again, I don&apos;t want to make the signals enum public or switch to use g_signal_emit_by_name.

 - Functions using private members. The priv struct is also private to the common cpp file, we could move it to the private header, but the web view private header is included by many other files that shouldn&apos;t have access to the struct directly. Maybe we could add another private header Internal.h or something like that. Again, I don&apos;t think it&apos;s worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363678</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-24 07:51:41 -0700</bug_when>
    <thetext>Thanks for the reply.

(In reply to Carlos Garcia Campos from comment #16)
&gt;  - Things that are not currently supported by WPE, but might be eventually,
&gt; like the context menu API. I don&apos;t want to move that to Gtk to mov them back
&gt; to the common file once WPE implements it.

Adrian, I think it&apos;s fine to stick with #ifdefs instead of moving the functions, like you wanted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363679</commentid>
    <comment_count>18</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-10-24 07:55:37 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #17)
&gt; Thanks for the reply.
&gt; 
&gt; (In reply to Carlos Garcia Campos from comment #16)
&gt; &gt;  - Things that are not currently supported by WPE, but might be eventually,
&gt; &gt; like the context menu API. I don&apos;t want to move that to Gtk to mov them back
&gt; &gt; to the common file once WPE implements it.
&gt; 
&gt; Adrian, I think it&apos;s fine to stick with #ifdefs instead of moving the
&gt; functions, like you wanted.

Okay. Also I have finally managed to run the API tests and the ones for
“WebKitFaviconDatabase” pass fine with all the guards added by the patch,
which mans the URIs for favicons are being updated correctly.

I&apos;m right now addressing the rest of review comments before re-uploading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363709</commentid>
    <comment_count>19</comment_count>
      <attachid>324680</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-10-24 09:58:01 -0700</bug_when>
    <thetext>Created attachment 324680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363713</commentid>
    <comment_count>20</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-10-24 09:59:54 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #19)
&gt; Created attachment 324680 [details]
&gt; Patch

Updated, with the missing guards added (which allowed to guard a couple
more of unused functions), and *not* moving the implementations to the
“*Gtk.cpp” files as agreed after having Carlos&apos; feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363838</commentid>
    <comment_count>21</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-24 13:11:15 -0700</bug_when>
    <thetext>I still think it&apos;s better to not add #if PLATFORM(GTK) guards except for our API layer, but this is OK. Thanks for your patience when I repeatedly requested more changes. And be sure to add it to the 2.18 backports list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364147</commentid>
    <comment_count>22</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2017-10-25 01:14:01 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #21)
&gt; I still think it&apos;s better to not add #if PLATFORM(GTK) guards except for our
&gt; API layer, but this is OK. Thanks for your patience when I repeatedly
&gt; requested more changes. And be sure to add it to the 2.18 backports list.

No prob, sometimes things just take time. Thanks for reviewing and
helping out with this ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364149</commentid>
    <comment_count>23</comment_count>
      <attachid>324680</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-25 01:34:17 -0700</bug_when>
    <thetext>Comment on attachment 324680
Patch

Clearing flags on attachment: 324680

Committed r223953: &lt;https://trac.webkit.org/changeset/223953&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364150</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-25 01:34:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323518</attachid>
            <date>2017-10-12 03:32:05 -0700</date>
            <delta_ts>2017-10-12 04:44:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178205-20171012133203.patch</filename>
            <type>text/plain</type>
            <size>4933</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM4ZDVlNDE4Y2IyYWFmZTVh
ZjQ3OTU5N2JmY2IyOGQyZGRhNzM5ZjEuLjQ4YTBmYjI2Y2YzMjM0MmFhOWRmN2YxNDVlMWU1OTlm
YzlhZGNlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTctMTAtMTIgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBSZW1v
dmUgR0xpYiBBUEkgZnVuY3Rpb25zIHdoaWNoIHVzZSBDYWlybworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjA1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBhY3R1YWxseSByZW1vdmlu
ZyB0aGUgZGVmaW5pdGlvbnMgZnJvbSB0aGUgaGVhZGVycywgdGhleSBnZXQgZ3VhcmRlZCB3aXRo
CisgICAgICAgIFdFQktJVDJfQ09NUElMQVRJT04uIFRoaXMgd2F5IHRoZSBhZmZlY3RlZCBBUEkg
aXMgbm90IGRpcmVjdGx5IHVzZWFibGUgd2hlbiBidWlsZGluZworICAgICAgICBwcm9ncmFtcyB0
aGF0IHVzZSBXUEUsIGFuZCB0aGUgV2ViS2l0IGNvZGUgd2hpY2ggdXNlcyB0aGVtIChsaWtlIFdl
YktpdFdlYlZpZXcgdXNpbmcKKyAgICAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKSB3aWxsIHN0
aWxsIGJ1aWxkIGNvcnJlY3RseS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dEZhdmljb25EYXRhYmFzZS5oOiBHdWFyZCB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2
aWNvbigpCisgICAgICAgIGFuZCB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbl9m
aW5pc2goKQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaDogR3Vh
cmQgd2Via2l0X3dlYl92aWV3X2dldF9mYXZpY29uKCksCisgICAgICAgIHdlYmtpdF93ZWJfdmll
d19nZXRfc25hcHNob3QoKSwgd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2goKSwK
KyAgICAgICAgV2ViS2l0U25hcHNob3RPcHRpb25zLCBhbmQgV2ViS2l0U25hcHNob3RSZWdpb24u
CisKIDIwMTctMTAtMTEgIEphZWh1biBMaW0gIDxsamFlaHVuLmxpbUBzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBGaXggZGVidWcgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdEZhdmljb25EYXRhYmFzZS5oCmluZGV4IGJlZDQwMTgxZDhiM2Zm
NWNkMzRmYTY5NzI4NjlmZWMxZTc2ZDI4NzIuLjVkNGNlYjIxNmZlMzJmZTFmZTRmZWU1NzEwNTA2
NWQ5ZDI5M2Y0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRGYXZpY29uRGF0YWJhc2UuaApAQCAtMjQsNyArMjQsMTAgQEAKICNpZm5kZWYg
V2ViS2l0RmF2aWNvbkRhdGFiYXNlX2gKICNkZWZpbmUgV2ViS2l0RmF2aWNvbkRhdGFiYXNlX2gK
IAorI2lmIGRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKICNpbmNsdWRlIDxjYWlyby5oPgor
I2VuZGlmCisKICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4K
ICNpbmNsdWRlIDx3cGUvV2ViS2l0RGVmaW5lcy5oPgpAQCAtNzgsNiArODEsNyBAQCB3ZWJraXRf
ZmF2aWNvbl9kYXRhYmFzZV9lcnJvcl9xdWFyayAgICAgICAgKHZvaWQpOwogV0VCS0lUX0FQSSBH
VHlwZQogd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X3R5cGUgICAgICAgICAgICh2b2lkKTsK
IAorI2lmIGRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKIFdFQktJVF9BUEkgdm9pZAogd2Vi
a2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb24gICAgICAgIChXZWJLaXRGYXZpY29uRGF0
YWJhc2UgKmRhdGFiYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnY2hhciAgICAgICAgICAgKnBhZ2VfdXJpLApAQCAtODgsNiArOTIsOCBAQCBX
RUJLSVRfQVBJIGNhaXJvX3N1cmZhY2VfdCAqCiB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRf
ZmF2aWNvbl9maW5pc2ggKFdlYktpdEZhdmljb25EYXRhYmFzZSAqZGF0YWJhc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAg
ICAqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
RXJyb3IgICAgICAgICAgICAgICAqKmVycm9yKTsKKyNlbmRpZgorCiBXRUJLSVRfQVBJIGdjaGFy
ICoKIHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX3VyaSAgICAoV2ViS2l0RmF2
aWNvbkRhdGFiYXNlICpkYXRhYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpwYWdlX3VyaSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IDQwM2FjMDBk
MjJjNjAyNmJmMTk0ZWE4MDhhMWMzZjAyMTM4NzMzYjIuLmZkMTA4MTJkNTdiY2ExMWFlYThkZmRm
MWMxNmI5OTAwY2U4ZGE4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2ViVmlldy5oCkBAIC0xNTIsNiArMTUyLDcgQEAgdHlwZWRlZiBlbnVtIHsKICAg
ICBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9ESVNQTEFZRUQKIH0gV2ViS2l0SW5zZWN1cmVDb250
ZW50RXZlbnQ7CiAKKyNpZiBkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCiAvKioKICAqIFdl
YktpdFNuYXBzaG90T3B0aW9uczoKICAqIEBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FOiBE
byBub3QgaW5jbHVkZSBhbnkgc3BlY2lhbCBvcHRpb25zLgpAQCAtMTgyLDYgKzE4Myw3IEBAIHR5
cGVkZWYgZW51bSB7CiAgIFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSA9IDAsCiAgIFdF
QktJVF9TTkFQU0hPVF9SRUdJT05fRlVMTF9ET0NVTUVOVCwKIH0gV2ViS2l0U25hcHNob3RSZWdp
b247CisjZW5kaWYKIAogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBHT2JqZWN0IHBhcmVu
dDsKQEAgLTM2MSw4ICszNjMsMTAgQEAgd2Via2l0X3dlYl92aWV3X2dvX3RvX2JhY2tfZm9yd2Fy
ZF9saXN0X2l0ZW0gICAgICAgICAoV2ViS2l0V2ViVmlldwogV0VCS0lUX0FQSSBjb25zdCBnY2hh
ciAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKKyNpZiBkZWZpbmVkKFdF
QktJVDJfQ09NUElMQVRJT04pCiBXRUJLSVRfQVBJIGNhaXJvX3N1cmZhY2VfdCAqCiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2Zhdmljb24gICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisjZW5kaWYKIAogV0VCS0lUX0FQSSBjb25zdCBn
Y2hhciAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2N1c3RvbV9jaGFyc2V0ICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CkBAIC00NzcsNiArNDgx
LDcgQEAgV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dlYl92aWV3X2dldF90bHNfaW5mbyAg
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3Zp
ZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVGxzQ2VydGlmaWNhdGUgICAgICAgICAgKipjZXJ0aWZpY2F0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0aWZpY2F0ZUZs
YWdzICAgICAgKmVycm9ycyk7CisjaWYgZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQogV0VC
S0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90ICAgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNuYXBz
aG90UmVnaW9uICAgICAgIHJlZ2lvbiwKQEAgLTQ4OSw2ICs0OTQsNyBAQCBXRUJLSVRfQVBJIGNh
aXJvX3N1cmZhY2VfdCAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jl
c3VsdCAgICAgICAgICAgICAgKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAqKmVycm9y
KTsKKyNlbmRpZgogCiBXRUJLSVRfQVBJIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqCiB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyICAgICAgICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323521</attachid>
            <date>2017-10-12 04:44:44 -0700</date>
            <delta_ts>2017-10-16 13:36:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178205-20171012144443.patch</filename>
            <type>text/plain</type>
            <size>5012</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM4ZDVlNDE4Y2IyYWFmZTVh
ZjQ3OTU5N2JmY2IyOGQyZGRhNzM5ZjEuLmVlZDQyNTA4NGQ4NmQ5YzE2NGFiNTBjNTI2ZDlhZDdl
NjIwMmZlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTctMTAtMTIgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBSZW1v
dmUgR0xpYiBBUEkgZnVuY3Rpb25zIHdoaWNoIHVzZSBDYWlybworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjA1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBhY3R1YWxseSByZW1vdmlu
ZyB0aGUgZGVmaW5pdGlvbnMgZnJvbSB0aGUgaGVhZGVycywgdGhleSBnZXQgZ3VhcmRlZCB3aXRo
CisgICAgICAgIEJVSUxESU5HX1dQRV9fLiBUaGlzIHdheSB0aGUgYWZmZWN0ZWQgQVBJIGlzIG5v
dCBkaXJlY3RseSB1c2VhYmxlIHdoZW4gYnVpbGRpbmcKKyAgICAgICAgcHJvZ3JhbXMgdGhhdCB1
c2UgV1BFLCBhbmQgdGhlIFdlYktpdCBjb2RlIHdoaWNoIHVzZXMgdGhlbSAobGlrZSBXZWJLaXRX
ZWJWaWV3IHVzaW5nCisgICAgICAgIFdlYktpdEZhdmljb25EYXRhYmFzZSwgb3IgdGhlIHVuaXQg
dGVzdHMpIHdpbGwgc3RpbGwgYnVpbGQgY29ycmVjdGx5LgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmg6IEd1YXJkIHdlYmtpdF9mYXZpY29uX2Rh
dGFiYXNlX2dldF9mYXZpY29uKCkKKyAgICAgICAgYW5kIHdlYmtpdF9mYXZpY29uX2RhdGFiYXNl
X2dldF9mYXZpY29uX2ZpbmlzaCgpCisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
V2ViVmlldy5oOiBHdWFyZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Zhdmljb24oKSwKKyAgICAgICAg
d2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdCgpLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBz
aG90X2ZpbmlzaCgpLAorICAgICAgICBXZWJLaXRTbmFwc2hvdE9wdGlvbnMsIGFuZCBXZWJLaXRT
bmFwc2hvdFJlZ2lvbi4KKwogMjAxNy0xMC0xMSAgSmFlaHVuIExpbSAgPGxqYWVodW4ubGltQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIEZpeCBkZWJ1ZyBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRGYXZpY29uRGF0YWJhc2UuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmgKaW5kZXgg
YmVkNDAxODFkOGIzZmY1Y2QzNGZhNjk3Mjg2OWZlYzFlNzZkMjg3Mi4uMDZkYWY3ZTQyODhiNWQ1
YmJhMzQxNjg4N2YzY2U1ZDc3N2YyMzMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRGYXZpY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEZhdmljb25EYXRhYmFzZS5oCkBAIC0yNCw3ICsyNCwx
MCBAQAogI2lmbmRlZiBXZWJLaXRGYXZpY29uRGF0YWJhc2VfaAogI2RlZmluZSBXZWJLaXRGYXZp
Y29uRGF0YWJhc2VfaAogCisjaWYgZGVmaW5lZChCVUlMRElOR19XUEVfXykgJiYgQlVJTERJTkdf
V1BFX18KICNpbmNsdWRlIDxjYWlyby5oPgorI2VuZGlmCisKICNpbmNsdWRlIDxnaW8vZ2lvLmg+
CiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0RGVmaW5lcy5o
PgpAQCAtNzgsNiArODEsNyBAQCB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9lcnJvcl9xdWFyayAg
ICAgICAgKHZvaWQpOwogV0VCS0lUX0FQSSBHVHlwZQogd2Via2l0X2Zhdmljb25fZGF0YWJhc2Vf
Z2V0X3R5cGUgICAgICAgICAgICh2b2lkKTsKIAorI2lmIGRlZmluZWQoQlVJTERJTkdfV1BFX18p
ICYmIEJVSUxESU5HX1dQRV9fCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9mYXZpY29uX2RhdGFi
YXNlX2dldF9mYXZpY29uICAgICAgICAoV2ViS2l0RmF2aWNvbkRhdGFiYXNlICpkYXRhYmFzZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIg
ICAgICAgICAgICpwYWdlX3VyaSwKQEAgLTg4LDYgKzkyLDggQEAgV0VCS0lUX0FQSSBjYWlyb19z
dXJmYWNlX3QgKgogd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb25fZmluaXNoIChX
ZWJLaXRGYXZpY29uRGF0YWJhc2UgKmRhdGFiYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgKnJlc3VsdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAg
ICAgKiplcnJvcik7CisjZW5kaWYKKwogV0VCS0lUX0FQSSBnY2hhciAqCiB3ZWJraXRfZmF2aWNv
bl9kYXRhYmFzZV9nZXRfZmF2aWNvbl91cmkgICAgKFdlYktpdEZhdmljb25EYXRhYmFzZSAqZGF0
YWJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyICAgICAgICAgICAqcGFnZV91cmkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAppbmRleCA0MDNhYzAwZDIyYzYwMjZiZjE5NGVhODA4
YTFjM2YwMjEzODczM2IyLi4zNWI1NjI0M2MzMTM3NzIwZDVlOWU2MDYyYzM3MmYwNzU4ZWIxNzc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcu
aApAQCAtMTUyLDYgKzE1Miw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX0lOU0VDVVJF
X0NPTlRFTlRfRElTUExBWUVECiB9IFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50OwogCisjaWYg
ZGVmaW5lZChCVUlMRElOR19XUEVfXykgJiYgQlVJTERJTkdfV1BFX18KIC8qKgogICogV2ViS2l0
U25hcHNob3RPcHRpb25zOgogICogQFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkU6IERvIG5v
dCBpbmNsdWRlIGFueSBzcGVjaWFsIG9wdGlvbnMuCkBAIC0xODIsNiArMTgzLDcgQEAgdHlwZWRl
ZiBlbnVtIHsKICAgV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFID0gMCwKICAgV0VCS0lU
X1NOQVBTSE9UX1JFR0lPTl9GVUxMX0RPQ1VNRU5ULAogfSBXZWJLaXRTbmFwc2hvdFJlZ2lvbjsK
KyNlbmRpZgogCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIEdPYmplY3QgcGFyZW50OwpA
QCAtMzYxLDggKzM2MywxMCBAQCB3ZWJraXRfd2ViX3ZpZXdfZ29fdG9fYmFja19mb3J3YXJkX2xp
c3RfaXRlbSAgICAgICAgIChXZWJLaXRXZWJWaWV3CiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoK
IHdlYmtpdF93ZWJfdmlld19nZXRfdXJpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAorI2lmIGRlZmluZWQoQlVJTERJ
TkdfV1BFX18pICYmIEJVSUxESU5HX1dQRV9fCiBXRUJLSVRfQVBJIGNhaXJvX3N1cmZhY2VfdCAq
CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Zhdmljb24gICAgICAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisjZW5kaWYKIAogV0VCS0lUX0FQ
SSBjb25zdCBnY2hhciAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2N1c3RvbV9jaGFyc2V0ICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CkBAIC00
NzcsNiArNDgxLDcgQEAgV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3dlYl92aWV3X2dldF90
bHNfaW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGUgICAgICAgICAgKipjZXJ0aWZpY2F0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0
aWZpY2F0ZUZsYWdzICAgICAgKmVycm9ycyk7CisjaWYgZGVmaW5lZChCVUlMRElOR19XUEVfXykg
JiYgQlVJTERJTkdfV1BFX18KIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X2dldF9z
bmFwc2hvdCAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRTbmFwc2hvdFJlZ2lvbiAgICAgICByZWdpb24sCkBAIC00ODksNiAr
NDk0LDcgQEAgV0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3QgKgogd2Via2l0X3dlYl92aWV3X2dl
dF9zbmFwc2hvdF9maW5pc2ggICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICpyZXN1bHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAg
ICAgICAgICAgICAgICAgKiplcnJvcik7CisjZW5kaWYKIAogV0VCS0lUX0FQSSBXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIgKgogd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdl
ciAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323937</attachid>
            <date>2017-10-16 13:36:32 -0700</date>
            <delta_ts>2017-10-24 09:57:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178205-20171016233631.patch</filename>
            <type>text/plain</type>
            <size>31766</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk0M2IzMDM3YjNkMGFhNGVj
NGExOGM1ZTkwODU5ZmRlNGRkOWRhMTQuLjgyOTc2ZjMzNGU0MDA4NjYyZDJlYjVjMWZkOTU0YmE1
NjNlMTgyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTctMTAtMTYgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBSZW1v
dmUgR0xpYiBBUEkgZnVuY3Rpb25zIHdoaWNoIHVzZSBDYWlybworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjA1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFBMQVRGT1JNKEdUSykgZ3VhcmRzIGZv
ciB0aGUgcGFydHMgb2Ygb2YgdGhlIEdMaWIgQVBJIHdoaWNoIHVzZSBjYWlyb19zdXJmYWNlX3Qg
KHdlYgorICAgICAgICBwYWdlIHNuYXBzaG90cyBhbmQgZmF2aWNvbnMpLCBhbmQgcmVtb3ZlIHRo
ZSBhZmZlY3RlZCBmdW5jdGlvbiBwcm90b3R5cGVzIGZyb20gcHVibGljIEFQSQorICAgICAgICBo
ZWFkZXJzLiBUaGlzIHdheSwgdGhlIFdQRSB2ZXJzaW9uIG9mIHRoZSBBUEkgaXMgbm90IHRpZWQg
dG8gQ2Fpcm8uCisKKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0NvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0
eSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEZhdmljb25EYXRhYmFzZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAo
d2Via2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKToKKwogMjAxNy0xMC0xMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGxpc3Rpbmcgb3Jp
Z2lucyBmb3Igd2hpY2ggQ2FjaGVTdG9yYWdlIGlzIHN0b3JpbmcgZGF0YQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
UEUuY21ha2UKaW5kZXggMzk3YTM1ZDFlZGU0ODAxZGY5MzJmN2MxOThmOTVlY2JkMmJhNTRhZS4u
ODZhNjA0NjQ1Mjk2NzQ2MDM3YjE3MzJhYTFlYzNlOWFmOWY5NDU4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
V1BFLmNtYWtlCkBAIC0xNjAsNyArMTYwLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMK
ICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0LmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNw
cAotICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCiAgICAg
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEphdmFzY3JpcHRS
ZXN1bHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCAwNWQ2M2ZkNGM0YmQzMzkyOGNlNWE0
YWNhMGI4OWJlNzAzZWI2NTFmLi4xMzQ3ZmY4MzkyNTI1NjcxYmY4YmRhZTc3YTJmMWIwOGNlNzEz
ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
YXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTcgSWdh
bGlhIFMuTC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zMzYsNiArMzM2LDcgQEAgR1F1YXJrIHdl
YmtpdF9mYXZpY29uX2RhdGFiYXNlX2Vycm9yX3F1YXJrKHZvaWQpCiAgICAgcmV0dXJuIGdfcXVh
cmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJXZWJLaXRGYXZpY29uRGF0YWJhc2VFcnJvciIpOwogfQog
CisjaWYgUExBVEZPUk0oR1RLKQogLyoqCiAgKiB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRf
ZmF2aWNvbjoKICAqIEBkYXRhYmFzZTogYSAjV2ViS2l0RmF2aWNvbkRhdGFiYXNlCkBAIC00NDIs
NiArNDQzLDcgQEAgY2Fpcm9fc3VyZmFjZV90KiB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRf
ZmF2aWNvbl9maW5pc2goV2ViS2l0RmF2aWNvbkRhdGFiYXMKICAgICBHZXRGYXZpY29uU3VyZmFj
ZUFzeW5jRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEdldEZhdmljb25TdXJmYWNlQXN5bmNEYXRh
Kj4oZ190YXNrX2dldF90YXNrX2RhdGEodGFzaykpOwogICAgIHJldHVybiBjYWlyb19zdXJmYWNl
X3JlZmVyZW5jZShkYXRhLT5pY29uLmdldCgpKTsKIH0KKyNlbmRpZgogCiAvKioKICAqIHdlYmtp
dF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX3VyaToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZVBy
aXZhdGUuaAppbmRleCAzZDhlYWMxNDFlMDI3Y2NkMGNmMDllYjI5N2I3NWQ5NzgyYzY5ODk2Li45
YWI0ZDViMjUxYmU0ODQ2ZWYzOWY2OThhYjdkYjVkNDYwMTk5M2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRh
dGFiYXNlUHJpdmF0ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE3IElnYWxpYSBTLkwuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI3LDUgKzI3LDcgQEAgV2ViS2l0RmF2aWNvbkRhdGFiYXNl
KiB3ZWJraXRGYXZpY29uRGF0YWJhc2VDcmVhdGUoKTsKIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFi
YXNlT3BlbihXZWJLaXRGYXZpY29uRGF0YWJhc2UqLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogYm9v
bCB3ZWJraXRGYXZpY29uRGF0YWJhc2VJc09wZW4oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKik7CiB2
b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZVNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViS2l0
RmF2aWNvbkRhdGFiYXNlKiwgYm9vbCk7CisjaWYgUExBVEZPUk0oR1RLKQogdm9pZCB3ZWJraXRG
YXZpY29uRGF0YWJhc2VHZXRMb2FkRGVjaXNpb25Gb3JJY29uKFdlYktpdEZhdmljb25EYXRhYmFz
ZSosIGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgY29uc3QgU3RyaW5nJiwgRnVuY3Rpb248dm9p
ZChib29sKT4mJik7CiB2b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZVNldEljb25Gb3JQYWdlVVJM
KFdlYktpdEZhdmljb25EYXRhYmFzZSosIGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgQVBJOjpE
YXRhJiwgY29uc3QgU3RyaW5nJik7CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNw
cAppbmRleCAyNDA2NTIwYTRjMTg4MTljNmZiZDMyZjMwNWUzZmQwNmU1M2JhZGE5Li41NWM0YjQw
YTM3YmJlMDRjMmQwYmRlNmUzYmM2NWFhNDc5ZTA2MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVD
bGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2Fs
aWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE3IElnYWxpYSBTLkwuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTEwNCwxMCArMTA0LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgd2Via2l0V2ViUmVzb3VyY2VGYWlsZWQocmVzb3VyY2UuZ2V0KCksIHJlc291cmNlRXJyb3Iu
Z2V0KCkpOwogCiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3UmVtb3ZlTG9hZGluZ1dlYlJlc291
cmNlKHdlYlZpZXcsIHJlc291cmNlSWRlbnRpZmllci0+dmFsdWUoKSk7CisjaWYgUExBVEZPUk0o
R1RLKQogICAgICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKG1lc3NhZ2VOYW1lLCAiRGlkR2V0
U25hcHNob3QiKSkgewogICAgICAgICAgICAgQVBJOjpVSW50NjQqIGNhbGxiYWNrSUQgPSBzdGF0
aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJDYWxsYmFja0lEIikpOwogICAgICAg
ICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdlLmdl
dCgiU25hcHNob3QiKSk7CiAgICAgICAgICAgICB3ZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNuYXBz
aG90KHdlYlZpZXcsIGNhbGxiYWNrSUQtPnZhbHVlKCksIGltYWdlKTsKKyNlbmRpZgogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5k
ZXggMGMxNzk4M2JlZDU5MjViYjc2ODg2OTkxNTUwNzMzZjVmN2U3YzQwZC4uMGI2YjRkZTI3ZWZl
ZWYzYTRjMDE3NWM0OWZkMDJkZWY5MmUyYjVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIsNiArMiw3IEBACiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg
MjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxNCBDb2xsYWJvcmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IEln
YWxpYSBTLkwuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE2Niw3ICsxNjcsMTEgQEAgZW51bSB7
CiAgICAgUFJPUF9VU0VSX0NPTlRFTlRfTUFOQUdFUiwKICAgICBQUk9QX1RJVExFLAogICAgIFBS
T1BfRVNUSU1BVEVEX0xPQURfUFJPR1JFU1MsCisKKyNpZiBQTEFURk9STShHVEspCiAgICAgUFJP
UF9GQVZJQ09OLAorI2VuZGlmCisKICAgICBQUk9QX1VSSSwKICAgICBQUk9QX1pPT01fTEVWRUws
CiAgICAgUFJPUF9JU19MT0FESU5HLApAQCAtMjI1LDE0ICsyMzAsMTYgQEAgc3RydWN0IF9XZWJL
aXRXZWJWaWV3UHJpdmF0ZSB7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgR1JlZlB0cjxXZWJL
aXRXZWJJbnNwZWN0b3I+IGluc3BlY3RvcjsKLSNlbmRpZgogCiAgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gZmF2aWNvbjsKICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gZmF2aWNvbkNhbmNl
bGxhYmxlOworCiAgICAgQ1N0cmluZyBmYXZpY29uVVJJOwogICAgIHVuc2lnbmVkIGxvbmcgZmF2
aWNvbkNoYW5nZWRIYW5kbGVySUQ7CiAKICAgICBTbmFwc2hvdFJlc3VsdHNNYXAgc25hcHNob3RS
ZXN1bHRzTWFwOworI2VuZGlmCisKICAgICBHUmVmUHRyPFdlYktpdEF1dGhlbnRpY2F0aW9uUmVx
dWVzdD4gYXV0aGVudGljYXRpb25SZXF1ZXN0OwogCiAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXI+IHdlYnNpdGVEYXRhTWFuYWdlcjsKQEAgLTQzNCw2ICs0NDEsNyBAQCBzdGF0
aWMgdm9pZCB1c2VyQWdlbnRDaGFuZ2VkKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgR1BhcmFt
U3BlYyosIFdlYktpdFdlYlZpZQogICAgIGdldFBhZ2Uod2ViVmlldykuc2V0Q3VzdG9tVXNlckFn
ZW50KFN0cmluZzo6ZnJvbVVURjgod2Via2l0X3NldHRpbmdzX2dldF91c2VyX2FnZW50KHNldHRp
bmdzKSkpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d1VwZGF0ZUZhdmljb24oV2ViS2l0V2ViVmlldyogd2ViVmlldywgY2Fpcm9fc3VyZmFjZV90KiBm
YXZpY29uKQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJp
djsKQEAgLTQ5MSw2ICs0OTksNyBAQCBzdGF0aWMgdm9pZCBmYXZpY29uQ2hhbmdlZENhbGxiYWNr
KFdlYktpdEZhdmljb25EYXRhYmFzZSosIGNvbnN0IGNoYXIqIHBhZ2VVUkksCiAKICAgICB3ZWJr
aXRXZWJWaWV3VXBkYXRlRmF2aWNvblVSSSh3ZWJWaWV3LCBmYXZpY29uVVJJKTsKIH0KKyNlbmRp
ZgogCiBzdGF0aWMgYm9vbCB3ZWJraXRXZWJWaWV3SXNDb25zdHJ1Y3RlZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogewpAQCAtNTMwLDYgKzUzOSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdEaXNjb25uZWN0U2V0dGluZ3NTaWduYWxIYW5kbGVycyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHNldHRpbmdzLCByZWlu
dGVycHJldF9jYXN0PGdwb2ludGVyPih1c2VyQWdlbnRDaGFuZ2VkKSwgd2ViVmlldyk7CiB9CiAK
KyNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3V2F0Y2hGb3JDaGFu
Z2VzSW5GYXZpY29uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgV2ViS2l0V2ViVmll
d1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwpAQCAtNTQ3LDYgKzU1Nyw3IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0RmF2aWNvbkRhdGFiYXNlU2lnbmFsSGFuZGxl
cnMoV2ViS2l0V2ViVmlldyoKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZShwcml2LT5jb250ZXh0LmdldCgp
KSwgcHJpdi0+ZmF2aWNvbkNoYW5nZWRIYW5kbGVySUQpOwogICAgIHByaXYtPmZhdmljb25DaGFu
Z2VkSGFuZGxlcklEID0gMDsKIH0KKyNlbmRpZgogCiAjaWYgVVNFKExJQk5PVElGWSkKIHN0YXRp
YyBjb25zdCBjaGFyKiBnTm90aWZ5Tm90aWZpY2F0aW9uSUQgPSAid2stbm90aWZ5LW5vdGlmaWNh
dGlvbiI7CkBAIC02NDEsNyArNjUyLDEwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25z
dHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgYXR0YWNoUG9saWN5Q2xpZW50VG9WaWV3KHdl
YlZpZXcpOwogICAgIGF0dGFjaENvbnRleHRNZW51Q2xpZW50VG9WaWV3KHdlYlZpZXcpOwogICAg
IGF0dGFjaEZvcm1DbGllbnRUb1ZpZXcod2ViVmlldyk7CisKKyNpZiBQTEFURk9STShHVEspCiAg
ICAgYXR0YWNoSWNvbkxvYWRpbmdDbGllbnRUb1ZpZXcod2ViVmlldyk7CisjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKFdQRSkKICAgICBwcml2LT52aWV3LT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxXZWJWaWV3Q2xpZW50Pih3ZWJWaWV3KSk7CkBAIC03MTcsOSArNzMxLDExIEBAIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJ
ZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0VTVElNQVRFRF9MT0FEX1BST0dSRVNTOgog
ICAgICAgICBnX3ZhbHVlX3NldF9kb3VibGUodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfZXN0
aW1hdGVkX2xvYWRfcHJvZ3Jlc3Mod2ViVmlldykpOwogICAgICAgICBicmVhazsKKyNpZiBQTEFU
Rk9STShHVEspCiAgICAgY2FzZSBQUk9QX0ZBVklDT046CiAgICAgICAgIGdfdmFsdWVfc2V0X3Bv
aW50ZXIodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfZmF2aWNvbih3ZWJWaWV3KSk7CiAgICAg
ICAgIGJyZWFrOworI2VuZGlmCiAgICAgY2FzZSBQUk9QX1VSSToKICAgICAgICAgZ192YWx1ZV9z
ZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtNzQ5LDkgKzc2NSwxMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQog
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogewogICAg
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KTsKKworI2lm
IFBMQVRGT1JNKEdUSykKICAgICB3ZWJraXRXZWJWaWV3Q2FuY2VsRmF2aWNvblJlcXVlc3Qod2Vi
Vmlldyk7Ci0gICAgd2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RTZXR0aW5nc1NpZ25hbEhhbmRsZXJz
KHdlYlZpZXcpOwogICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0RmF2aWNvbkRhdGFiYXNlU2ln
bmFsSGFuZGxlcnMod2ViVmlldyk7CisjZW5kaWYKKworICAgIHdlYmtpdFdlYlZpZXdEaXNjb25u
ZWN0U2V0dGluZ3NTaWduYWxIYW5kbGVycyh3ZWJWaWV3KTsKIAogICAgIGlmICh3ZWJWaWV3LT5w
cml2LT5sb2FkT2JzZXJ2ZXIpIHsKICAgICAgICAgZ2V0UGFnZSh3ZWJWaWV3KS5wYWdlTG9hZFN0
YXRlKCkucmVtb3ZlT2JzZXJ2ZXIoKndlYlZpZXctPnByaXYtPmxvYWRPYnNlcnZlcik7CkBAIC04
OTksNiArOTE5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkFuIGVzdGltYXRlIG9mIHRoZSBwZXJj
ZW50IGNvbXBsZXRpb24gZm9yIGEgZG9jdW1lbnQgbG9hZCIpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAsIDEuMCwgMC4wLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBREFCTEUpKTsKKyNpZiBQTEFURk9STShHVEspCiAgICAgLyoqCiAgICAgICog
V2ViS2l0V2ViVmlldzpmYXZpY29uOgogICAgICAqCkBAIC05MTEsNiArOTMyLDggQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJW
aWV3Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfKCJGYXZpY29uIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgZmF2aWNvbiBhc3NvY2lhdGVkIHRvIHRo
ZSB2aWV3LCBpZiBhbnkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworI2VuZGlmCisgICAg
CiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzp1cmk6CiAgICAgICoKQEAgLTE5MDcsMTgg
KzE5MzAsMjIgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCkKICAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAgICAgc3dpdGNoIChsb2FkRXZlbnQpIHsKICAg
ICBjYXNlIFdFQktJVF9MT0FEX1NUQVJURUQ6CisjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICB3
ZWJraXRXZWJWaWV3Q2FuY2VsRmF2aWNvblJlcXVlc3Qod2ViVmlldyk7CiAgICAgICAgIHdlYmtp
dFdlYlZpZXdXYXRjaEZvckNoYW5nZXNJbkZhdmljb24od2ViVmlldyk7CisjZW5kaWYKICAgICAg
ICAgd2Via2l0V2ViVmlld0NhbmNlbEF1dGhlbnRpY2F0aW9uUmVxdWVzdCh3ZWJWaWV3KTsKICAg
ICAgICAgcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5jbGVhcigpOwogICAgICAgICBwcml2LT5t
YWluUmVzb3VyY2UgPSBudWxscHRyOwogICAgICAgICBicmVhazsKKyNpZiBQTEFURk9STShHVEsp
CiAgICAgY2FzZSBXRUJLSVRfTE9BRF9DT01NSVRURUQ6IHsKICAgICAgICAgV2ViS2l0RmF2aWNv
bkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRh
YmFzZShwcml2LT5jb250ZXh0LmdldCgpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBmYXZp
Y29uVVJJKHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX3VyaShkYXRhYmFzZSwg
cHJpdi0+YWN0aXZlVVJJLmRhdGEoKSkpOwogICAgICAgICB3ZWJraXRXZWJWaWV3VXBkYXRlRmF2
aWNvblVSSSh3ZWJWaWV3LCBmYXZpY29uVVJJLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQorI2VuZGlmCiAgICAgY2FzZSBXRUJLSVRfTE9BRF9GSU5JU0hFRDoKICAgICAgICAgd2Via2l0
V2ViVmlld0NhbmNlbEF1dGhlbnRpY2F0aW9uUmVxdWVzdCh3ZWJWaWV3KTsKICAgICAgICAgYnJl
YWs7CkBAIC0xOTUzLDYgKzE5ODAsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0
aFRMU0Vycm9ycyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiBmYQogICAgIGdf
c2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURdLCAwLCBXRUJLSVRfTE9B
RF9GSU5JU0hFRCk7CiB9CiAKKyNpZiBQTEFURk9STShHVEspCiB2b2lkIHdlYmtpdFdlYlZpZXdH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IExpbmtJ
Y29uJiBpY29uLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UgPSB3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X2Zhdmljb25fZGF0YWJhc2Uod2ViVmlldy0+cHJpdi0+Y29udGV4dC5nZXQoKSk7CkBAIC0x
OTY0LDYgKzE5OTIsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdTZXRJY29uKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIGNvbnN0IExpbmtJY29uJiBpY29uLCBBUEk6OkRhdAogICAgIFdlYktpdEZhdmlj
b25EYXRhYmFzZSogZGF0YWJhc2UgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0
YWJhc2Uod2ViVmlldy0+cHJpdi0+Y29udGV4dC5nZXQoKSk7CiAgICAgd2Via2l0RmF2aWNvbkRh
dGFiYXNlU2V0SWNvbkZvclBhZ2VVUkwoZGF0YWJhc2UsIGljb24sIGljb25EYXRhLCBnZXRQYWdl
KHdlYlZpZXcpLnBhZ2VMb2FkU3RhdGUoKS5hY3RpdmVVUkwoKSk7CiB9CisjZW5kaWYKIAogV2Vi
UGFnZVByb3h5KiB3ZWJraXRXZWJWaWV3Q3JlYXRlTmV3UGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIFdlYktpdE5hdmlnYXRp
b25BY3Rpb24qIG5hdmlnYXRpb25BY3Rpb24pCiB7CkBAIC0yODE0LDYgKzI4NDMsNyBAQCBjb25z
dCBnY2hhciogd2Via2l0X3dlYl92aWV3X2dldF91cmkoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+YWN0aXZlVVJJLmRhdGEoKTsKIH0KIAorI2lmIFBM
QVRGT1JNKEdUSykKIC8qKgogICogd2Via2l0X3dlYl92aWV3X2dldF9mYXZpY29uOgogICogQHdl
Yl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CkBAIC0yODMzLDYgKzI4NjMsNyBAQCBjYWlyb19zdXJm
YWNlX3QqIHdlYmtpdF93ZWJfdmlld19nZXRfZmF2aWNvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQogCiAgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmZhdmljb24uZ2V0KCk7CiB9CisjZW5kaWYK
IAogLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2N1c3RvbV9jaGFyc2V0OgpAQCAtMzYyOSw2
ICszNjYwLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2dldF90bHNfaW5mbyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBHVGxzQ2VydGlmaWNhdGUqKgogICAgIHJldHVybiAhIWNlcnRpZmlj
YXRlSW5mby5jZXJ0aWZpY2F0ZSgpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKQogdm9pZCB3ZWJL
aXRXZWJWaWV3RGlkUmVjZWl2ZVNuYXBzaG90KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIHVpbnQ2
NF90IGNhbGxiYWNrSUQsIFdlYkltYWdlKiB3ZWJJbWFnZSkKIHsKICAgICBHUmVmUHRyPEdUYXNr
PiB0YXNrID0gd2ViVmlldy0+cHJpdi0+c25hcHNob3RSZXN1bHRzTWFwLnRha2UoY2FsbGJhY2tJ
RCk7CkBAIC0zNzIxLDYgKzM3NTMsNyBAQCBjYWlyb19zdXJmYWNlX3QqIHdlYmtpdF93ZWJfdmll
d19nZXRfc25hcHNob3RfZmluaXNoKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdBcwogCiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNhaXJvX3N1cmZhY2VfdCo+KGdfdGFza19wcm9wYWdhdGVfcG9p
bnRlcihHX1RBU0socmVzdWx0KSwgZXJyb3IpKTsKIH0KKyNlbmRpZgogCiB2b2lkIHdlYmtpdFdl
YlZpZXdXZWJQcm9jZXNzQ3Jhc2hlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2
YXRlLmgKaW5kZXggODkxMzk2NmM3ZDU2NzRiN2Q2ZWY5MGI0NzJjM2MwNDQxMDk0ZGRhOS4uMmQ5
YTZlNTNjY2FkNzBmZTBmYmUwNWJkYTQ3Yzc1YjQ5NzI3MmVkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDE3IElnYWxpYSBTLkwuCiAgKiBQb3J0aW9ucyBDb3B5cmln
aHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC00Myw4ICs0MywxMCBAQCBXZWJLaXQ6OldlYlBhZ2VQcm94
eSYgd2Via2l0V2ViVmlld0dldFBhZ2UoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJW
aWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCk7CiB2b2lkIHdl
YmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNv
bnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciopOwogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZh
aWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0V2ViVmlldyosIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkks
IEdFcnJvciosIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzLCBHVGxzQ2VydGlmaWNhdGUqKTsKKyNpZiBQ
TEFURk9STShHVEspCiB2b2lkIHdlYmtpdFdlYlZpZXdHZXRMb2FkRGVjaXNpb25Gb3JJY29uKFdl
YktpdFdlYlZpZXcqLCBjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYpOwogdm9pZCB3ZWJraXRXZWJWaWV3U2V0SWNvbihXZWJLaXRXZWJWaWV3KiwgY29uc3Qg
V2ViQ29yZTo6TGlua0ljb24mLCBBUEk6OkRhdGEmKTsKKyNlbmRpZgogV2ViS2l0OjpXZWJQYWdl
UHJveHkqIHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKFdlYktpdFdlYlZpZXcqLCBjb25zdCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qKTsKIHZvaWQg
d2Via2l0V2ViVmlld1JlYWR5VG9TaG93UGFnZShXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtp
dFdlYlZpZXdSdW5Bc01vZGFsKFdlYktpdFdlYlZpZXcqKTsKQEAgLTY4LDcgKzcwLDkgQEAgdm9p
ZCB3ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSZXNvdXJjZUxvYWRTdGFydGVkKFdlYktpdFdl
YlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZp
ZXIsIFdlYktpdFVSSVJlcXVlc3QqKTsKIHZvaWQgd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2Vy
UmVxdWVzdChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Kik7CiBXZWJL
aXRXZWJSZXNvdXJjZSogd2Via2l0V2ViVmlld0dldExvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRX
ZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKKyNpZiBQTEFURk9STShHVEsp
CiB2b2lkIHdlYktpdFdlYlZpZXdEaWRSZWNlaXZlU25hcHNob3QoV2ViS2l0V2ViVmlldyosIHVp
bnQ2NF90IGNhbGxiYWNrSUQsIFdlYktpdDo6V2ViSW1hZ2UqKTsKKyNlbmRpZgogdm9pZCB3ZWJr
aXRXZWJWaWV3UmVtb3ZlTG9hZGluZ1dlYlJlc291cmNlKFdlYktpdFdlYlZpZXcqLCB1aW50NjRf
dCByZXNvdXJjZUlkZW50aWZpZXIpOwogdm9pZCB3ZWJraXRXZWJWaWV3RW50ZXJGdWxsU2NyZWVu
KFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld0V4aXRGdWxsU2NyZWVuKFdlYktp
dFdlYlZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdEZhdmljb25EYXRhYmFzZS5oCmluZGV4IGJlZDQwMTgxZDhiM2ZmNWNkMzRmYTY5NzI4
NjlmZWMxZTc2ZDI4NzIuLjE3MzZiMjJmNzQ5NTk1MWIyYTJjYmY0ZWQ3ZDA5ZDAyYmI2MTlmMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0RmF2aWNv
bkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRG
YXZpY29uRGF0YWJhc2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNyBJZ2FsaWEgUy5MLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI0LDcgKzI0LDYgQEAKICNpZm5kZWYgV2ViS2l0RmF2aWNv
bkRhdGFiYXNlX2gKICNkZWZpbmUgV2ViS2l0RmF2aWNvbkRhdGFiYXNlX2gKIAotI2luY2x1ZGUg
PGNhaXJvLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+
CiAjaW5jbHVkZSA8d3BlL1dlYktpdERlZmluZXMuaD4KQEAgLTc4LDE2ICs3Nyw2IEBAIHdlYmtp
dF9mYXZpY29uX2RhdGFiYXNlX2Vycm9yX3F1YXJrICAgICAgICAodm9pZCk7CiBXRUJLSVRfQVBJ
IEdUeXBlCiB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfdHlwZSAgICAgICAgICAgKHZvaWQp
OwogCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29u
ICAgICAgICAoV2ViS2l0RmF2aWNvbkRhdGFiYXNlICpkYXRhYmFzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpwYWdl
X3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNl
bGxhYmxlICAgICAgICAgICpjYW5jZWxsYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICBjYWxsYmFjaywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAg
ICAgICB1c2VyX2RhdGEpOwotV0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3QgKgotd2Via2l0X2Zh
dmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb25fZmluaXNoIChXZWJLaXRGYXZpY29uRGF0YWJhc2Ug
KmRhdGFiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QXN5bmNSZXN1bHQgICAgICAgICAgKnJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgKiplcnJvcik7CiBXRUJLSVRf
QVBJIGdjaGFyICoKIHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX3VyaSAgICAo
V2ViS2l0RmF2aWNvbkRhdGFiYXNlICpkYXRhYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpwYWdlX3VyaSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4
IDQwM2FjMDBkMjJjNjAyNmJmMTk0ZWE4MDhhMWMzZjAyMTM4NzMzYjIuLjU0MDU2N2RmYzRkMGQy
NDMwZDNkNDczZTFhNjI2NTYyZWVkMGE5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0
IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAw
OCBDb2xsYWJvcmEgTHRkLgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTcgSWdhbGlhIFMuTC4KICAqIFBvcnRpb25zIENvcHlyaWdo
dCAoYykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC0xNTIsMzcgKzE1Miw2IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VC
S0lUX0lOU0VDVVJFX0NPTlRFTlRfRElTUExBWUVECiB9IFdlYktpdEluc2VjdXJlQ29udGVudEV2
ZW50OwogCi0vKioKLSAqIFdlYktpdFNuYXBzaG90T3B0aW9uczoKLSAqIEBXRUJLSVRfU05BUFNI
T1RfT1BUSU9OU19OT05FOiBEbyBub3QgaW5jbHVkZSBhbnkgc3BlY2lhbCBvcHRpb25zLgotICog
QFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX0lOQ0xVREVfU0VMRUNUSU9OX0hJR0hMSUdIVElORzog
V2hldGhlciB0byBpbmNsdWRlIGluIHRoZQotICogc25hcHNob3QgdGhlIGhpZ2hsaWdodCBvZiB0
aGUgc2VsZWN0ZWQgY29udGVudC4KLSAqIEBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19UUkFOU1BB
UkVOVF9CQUNLR1JPVU5EOiBEbyBub3QgZmlsbCB0aGUgYmFja2dyb3VuZCB3aXRoIHdoaXRlIGJl
Zm9yZQotICogcmVuZGVyaW5nIHRoZSBzbmFwc2hvdC4gU2luY2UgMi44Ci0gKgotICogRW51bSB2
YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbnMgd2hlbiB0YWtpbmcgYSBzbmFwc2hvdAotICog
ZnJvbSBhICNXZWJLaXRXZWJWaWV3LgotICovCi10eXBlZGVmIGVudW0gewotICBXRUJLSVRfU05B
UFNIT1RfT1BUSU9OU19OT05FID0gMCwKLSAgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfSU5DTFVE
RV9TRUxFQ1RJT05fSElHSExJR0hUSU5HID0gMSA8PCAwLAotICBXRUJLSVRfU05BUFNIT1RfT1BU
SU9OU19UUkFOU1BBUkVOVF9CQUNLR1JPVU5EID0gMSA8PCAxLAotfSBXZWJLaXRTbmFwc2hvdE9w
dGlvbnM7Ci0KLS8qKgotICogV2ViS2l0U25hcHNob3RSZWdpb246Ci0gKiBAV0VCS0lUX1NOQVBT
SE9UX1JFR0lPTl9WSVNJQkxFOiBTcGVjaWZpZXMgYSBzbmFwc2hvdCBvbmx5IGZvciB0aGUgYXJl
YSB0aGF0IGlzCi0gKiB2aXNpYmxlIGluIHRoZSB3ZWJ2aWV3Ci0gKiBAV0VCS0lUX1NOQVBTSE9U
X1JFR0lPTl9GVUxMX0RPQ1VNRU5UOiBBIHNuYXBzaG90IG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQu
Ci0gKgotICogRW51bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IHRoZSByZWdpb24gZnJvbSB3aGlj
aCB0byBnZXQgYSAjV2ViS2l0V2ViVmlldwotICogc25hcHNob3QKLSAqLwotdHlwZWRlZiBlbnVt
IHsKLSAgV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFID0gMCwKLSAgV0VCS0lUX1NOQVBT
SE9UX1JFR0lPTl9GVUxMX0RPQ1VNRU5ULAotfSBXZWJLaXRTbmFwc2hvdFJlZ2lvbjsKLQogc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBHT2JqZWN0IHBhcmVudDsKIApAQCAtMzYxLDkgKzMz
MCw2IEBAIHdlYmtpdF93ZWJfdmlld19nb190b19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtICAgICAg
ICAgKFdlYktpdFdlYlZpZXcKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgogd2Via2l0X3dlYl92
aWV3X2dldF91cmkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAqd2ViX3ZpZXcpOwogCi1XRUJLSVRfQVBJIGNhaXJvX3N1cmZhY2VfdCAqCi13
ZWJraXRfd2ViX3ZpZXdfZ2V0X2Zhdmljb24gICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0KIFdFQktJVF9BUEkgY29uc3QgZ2No
YXIgKgogd2Via2l0X3dlYl92aWV3X2dldF9jdXN0b21fY2hhcnNldCAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCkBAIC00NzcsMTggKzQ0
Myw2IEBAIFdFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF93ZWJfdmlld19nZXRfdGxzX2luZm8g
ICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92
aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1Rsc0NlcnRpZmljYXRlICAgICAgICAgICoqY2VydGlmaWNhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGVG
bGFncyAgICAgICplcnJvcnMpOwotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NuYXBzaG90ICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdFNuYXBzaG90UmVnaW9uICAgICAgIHJlZ2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNuYXBz
aG90T3B0aW9ucyAgICAgIG9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgICAgICAgICpjYW5jZWxs
YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgICAgICAgIGNhbGxiYWNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAg
ICAgICAgICAgdXNlcl9kYXRhKTsKLQotV0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3QgKgotd2Vi
a2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2ggICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICpy
ZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgKiplcnJvcik7CiAKIFdFQktJVF9BUEkgV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyICoKIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50
X21hbmFnZXIgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCBhZmE1ZWMxMzcxZDZh
ZmNkZTI4N2NmZjQ0NGZiNGI4Y2IxM2RhMTQwLi44ZTJkMzVjNTg3OTJiOGNiYWU4ZWMxODA1YWVm
M2QzYjY0ZmI1ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLCAyMDE3IElnYWxpYSBTLkwuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
NTg1LDYgKzU4NSw3IEBAIFdlYktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFn
ZSogd2ViUGFnZSkKIAogdm9pZCB3ZWJraXRXZWJQYWdlRGlkUmVjZWl2ZU1lc3NhZ2UoV2ViS2l0
V2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpEaWN0aW9uYXJ5
JiBtZXNzYWdlKQogeworI2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAobWVzc2FnZU5hbWUgPT0g
U3RyaW5nKCJHZXRTbmFwc2hvdCIpKSB7CiAgICAgICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hv
dE9wdGlvbnMgPSBzdGF0aWNfY2FzdDxTbmFwc2hvdE9wdGlvbnM+KHN0YXRpY19jYXN0PEFQSTo6
VUludDY0Kj4obWVzc2FnZS5nZXQoIlNuYXBzaG90T3B0aW9ucyIpKS0+dmFsdWUoKSk7CiAgICAg
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3Nh
Z2UuZ2V0KCJDYWxsYmFja0lEIikpLT52YWx1ZSgpOwpAQCAtNjIzLDYgKzYyNCw3IEBAIHZvaWQg
d2Via2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKFdlYktpdFdlYlBhZ2UqIHBhZ2UsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZU5hCiAgICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIlNuYXBzaG90Iiwg
c25hcHNob3RJbWFnZSk7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVk
QnVuZGxlKCktPnBvc3RNZXNzYWdlKCJXZWJQYWdlLkRpZEdldFNuYXBzaG90IiwgQVBJOjpEaWN0
aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtZXNzYWdlUmVwbHkpKS5wdHIoKSk7CiAgICAgfSBlbHNl
CisjZW5kaWYKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNThjZmE1OWMzYTcyZjll
NTViZWJhMWQ3OWFiOTM1MWQwYmI2YWJhLi41ODgwYjE4OTVmNzM5M2JhMTY4NWIwZTUwODg0YmFi
MGM5ODhiMzMwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMTAtMTYgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8g
IDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBSZW1vdmUgR0xpYiBBUEkgZnVu
Y3Rpb25zIHdoaWNoIHVzZSBDYWlybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc4MjA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFBMQVRGT1JNKEdUSykgZ3VhcmRzIGZvciB0aGUgQVBJIHRlc3Rz
IChvciBwYXJ0cyBvZiB0aGVtKSB3aGljaCB1c2UgY2Fpcm9fc3VyZmFjZV90ICh3ZWIKKyAgICAg
ICAgcGFnZSBzbmFwc2hvdHMgYW5kIGZhdmljb25zKSB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSBp
biB0aGUgV1BFIHZlcnNpb24gb2YgdGhlIEdMaWIgQVBJLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAg
ICAgICAodGVzdE5vdEluaXRpYWxpemVkKToKKyAgICAgICAgKHRlc3RQcml2YXRlQnJvd3Npbmcp
OgorICAgICAgICAodGVzdEZhdmljb25EYXRhYmFzZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAg
ICh0ZXN0RmluZENvbnRyb2xsZXJIaWRlKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0Lmg6CisKIDIwMTct
MTAtMTYgIEVtaWxpbyBDb2JvcyDDgWx2YXJleiAgPGVtaWxpb0BjcmlzYWwuaW8+CiAKICAgICAg
ICAgQWRkIEVtaWxpbyBDb2JvcyDDgWx2YXJleiB0byB0aGUgY29udHJpYnV0b3JzIGxpc3QuCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktp
dEZhdmljb25EYXRhYmFzZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggMDAwY2Y2NzYyZmMxNjc1YzRk
ZmI3YTcxMzcwZTYwZjdkYWRkOWRhMy4uYzEyYmQxNmM5Y2ZhMTA3MjcyYTUyNGE1MWRmNmVlOTFm
YmFiZDExOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiwgMjAxNyBJZ2FsaWEgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQxLDgg
KzQxLDEwIEBAIHB1YmxpYzoKIAogICAgIH5GYXZpY29uRGF0YWJhc2VUZXN0KCkKICAgICB7Cisj
aWYgUExBVEZPUk0oR1RLKQogICAgICAgICBpZiAobV9mYXZpY29uKQogICAgICAgICAgICAgY2Fp
cm9fc3VyZmFjZV9kZXN0cm95KG1fZmF2aWNvbik7CisjZW5kaWYKIAogICAgICAgICBXZWJLaXRG
YXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29u
X2RhdGFiYXNlKG1fd2ViQ29udGV4dC5nZXQoKSk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJz
X2Rpc2Nvbm5lY3RfbWF0Y2hlZChkYXRhYmFzZSwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwg
MCwgMCwgdGhpcyk7CkBAIC02NSw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdGVzdC0+cXVp
dE1haW5Mb29wKCk7CiAgICAgfQogCisjaWYgUExBVEZPUk0oR1RLKQogICAgIHN0YXRpYyB2b2lk
IGdldEZhdmljb25DYWxsYmFjayhHT2JqZWN0KiBzb3VyY2VPYmplY3QsIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCB2b2lkKiBkYXRhKQogICAgIHsKICAgICAgICAgRmF2aWNvbkRhdGFiYXNlVGVzdCog
dGVzdCA9IHN0YXRpY19jYXN0PEZhdmljb25EYXRhYmFzZVRlc3QqPihkYXRhKTsKQEAgLTgwLDkg
KzgzLDExIEBAIHB1YmxpYzoKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwog
ICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV93ZWJWaWV3LCBoYW5kbGVySUQp
OwogICAgIH0KKyNlbmRpZgogCiAgICAgdm9pZCBnZXRGYXZpY29uRm9yUGFnZVVSSUFuZFdhaXRV
bnRpbFJlYWR5KGNvbnN0IGNoYXIqIHBhZ2VVUkkpCiAgICAgeworI2lmIFBMQVRGT1JNKEdUSykK
ICAgICAgICAgaWYgKG1fZmF2aWNvbikgewogICAgICAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0
cm95KG1fZmF2aWNvbik7CiAgICAgICAgICAgICBtX2Zhdmljb24gPSAwOwpAQCAtOTAsNiArOTUs
OCBAQCBwdWJsaWM6CiAKICAgICAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9
IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZShtX3dlYkNvbnRleHQuZ2V0
KCkpOwogICAgICAgICB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbihkYXRhYmFz
ZSwgcGFnZVVSSSwgMCwgZ2V0RmF2aWNvbkNhbGxiYWNrLCB0aGlzKTsKKyNlbmRpZgorCiAgICAg
ICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKICAgICB9CiAKQEAgLTEwMyw2ICsxMTAs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBtX2Zhdmljb247CisK
ICAgICBDU3RyaW5nIG1fZmF2aWNvblVSSTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gbV9l
cnJvcjsKICAgICBib29sIG1fZmF2aWNvbk5vdGlmaWNhdGlvblJlY2VpdmVkOwpAQCAtMTg5LDYg
KzE5Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RQcml2YXRlQnJvd3NpbmcoRmF2aWNvbkRhdGFiYXNl
VGVzdCogdGVzdCkKICAgICBnX2Fzc2VydCh0ZXN0LT5tX2Vycm9yKTsKIH0KIAorI2lmIFBMQVRG
T1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RHZXRGYXZpY29uKEZhdmljb25EYXRhYmFzZVRlc3Qq
IHRlc3QpCiB7CiAgICAgLy8gV2UgbmVlZCB0byBsb2FkIHRoZSBwYWdlIGZpcnN0IHRvIGVuc3Vy
ZSB0aGUgaWNvbiBkYXRhIHdpbGwgYmUKQEAgLTIzMSw2ICsyNDAsNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0R2V0RmF2aWNvbihGYXZpY29uRGF0YWJhc2VUZXN0KiB0ZXN0KQogICAgIGdfYXNzZXJ0KCF0
ZXN0LT5tX2Zhdmljb24pOwogICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXJyb3IpOwogfQorI2VuZGlm
CiAKIHN0YXRpYyB2b2lkIHRlc3RHZXRGYXZpY29uVVJJKEZhdmljb25EYXRhYmFzZVRlc3QqIHRl
c3QpCiB7CkBAIC0yNDEsNiArMjUxLDcgQEAgc3RhdGljIHZvaWQgdGVzdEdldEZhdmljb25VUkko
RmF2aWNvbkRhdGFiYXNlVGVzdCogdGVzdCkKICAgICBBU1NFUlRfQ01QX0NTVFJJTkcoaWNvblVS
SS5nZXQoKSwgPT0sIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pY29uL2Zhdmljb24uaWNvIikp
OwogfQogCisjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGYXZpY29u
KEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QpCiB7CiAgICAgdGVzdC0+bV9mYXZpY29uVVJJID0g
Q1N0cmluZygpOwpAQCAtMjYwLDYgKzI3MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RmF2
aWNvbihGYXZpY29uRGF0YWJhc2VUZXN0KiB0ZXN0KQogICAgIGdfYXNzZXJ0X2NtcHVpbnQoY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoaWNvbkZyb21XZWJWaWV3KSwgPT0sIDE2KTsKICAg
ICBnX2Fzc2VydF9jbXB1aW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChpY29uRnJv
bVdlYlZpZXcpLCA9PSwgMTYpOwogfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHRlc3RGYXZpY29u
RGF0YWJhc2UoRmF2aWNvbkRhdGFiYXNlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKQEAg
LTI2OCw5ICsyODAsMTcgQEAgc3RhdGljIHZvaWQgdGVzdEZhdmljb25EYXRhYmFzZShGYXZpY29u
RGF0YWJhc2VUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3ROb3RJbml0aWFsaXpl
ZCh0ZXN0KTsKICAgICB0ZXN0U2V0RGlyZWN0b3J5KHRlc3QpOwogICAgIHRlc3RQcml2YXRlQnJv
d3NpbmcodGVzdCk7CisKKyNpZiBQTEFURk9STShHVEspCiAgICAgdGVzdEdldEZhdmljb24odGVz
dCk7CisjZW5kaWYKKwogICAgIHRlc3RHZXRGYXZpY29uVVJJKHRlc3QpOworCisjaWYgUExBVEZP
Uk0oR1RLKQogICAgIHRlc3RXZWJWaWV3RmF2aWNvbih0ZXN0KTsKKyNlbmRpZgorCiAgICAgdGVz
dENsZWFyRGF0YWJhc2UodGVzdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0RmluZENvbnRyb2xsZXIuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGaW5kQ29udHJvbGxlci5j
cHAKaW5kZXggNDFiZmM3MTQ4Y2ExYjk3Njg0NmE2MjU5MTE0ODcxOGY3YmVlZmViNS4uNzg2OTI4
M2U5MjM5YTBkM2NiOWM0ODRmMzBlNGIxNTRkNThiZGU1YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGaW5kQ29udHJvbGxlci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGaW5k
Q29udHJvbGxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTcgSWdhbGlhIFMuTC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC0yNTcsMTQgKzI1NywxNSBAQCBzdGF0aWMgdm9pZCB0ZXN0Rmlu
ZENvbnRyb2xsZXJPcHRpb25zKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKICAgICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRGb3VuZCk7CiB9CiAKKy8vIFRPRE86IFJld3Jp
dGUgdGhpcyB0ZXN0IHRvIGF2b2lkIHVzaW5nIHNuYXBzaG90cyBzbyBpdCBjYW4gYmUgcmUtZW5h
YmxlZAorLy8gICAgICAgZm9yIFdQRSBvciwgYWx0ZXJuYXRpdmVseSwgbWFrZSBzbmFwc2hvdHMg
d29yayBmb3IgV1BFIGFzIHdlbGwuCisjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIHZvaWQgdGVz
dEZpbmRDb250cm9sbGVySGlkZShGaW5kQ29udHJvbGxlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiB7CiAgICAgdGVzdC0+bG9hZEh0bWwodGVzdFN0cmluZywgMCk7CiAgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSNpZiBQTEFURk9STShHVEspCiAgICAgdGVzdC0+c2hv
d0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7Ci0jZW5kaWYKIAogICAgIGNhaXJvX3N1cmZh
Y2VfdCogb3JpZ2luYWxTdXJmYWNlID0gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2UoCiAgICAgICAg
IHRlc3QtPmdldFNuYXBzaG90QW5kV2FpdFVudGlsUmVhZHkoV0VCS0lUX1NOQVBTSE9UX1JFR0lP
Tl9GVUxMX0RPQ1VNRU5ULCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKSk7CkBAIC0yOTIs
NiArMjkzLDcgQEAgc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVySGlkZShGaW5kQ29udHJv
bGxlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95
KGhpZ2hsaWdodFN1cmZhY2UpOwogICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveSh1bmhpZ2hsaWdo
dFN1cmZhY2UpOwogfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlcklu
c3RhbmNlKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKQEAgLTMy
Nyw3ICszMjksOSBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgRmluZENvbnRyb2xsZXJUZXN0Ojph
ZGQoIldlYktpdEZpbmRDb250cm9sbGVyIiwgInByZXZpb3VzIiwgdGVzdEZpbmRDb250cm9sbGVy
UHJldmlvdXMpOwogICAgIEZpbmRDb250cm9sbGVyVGVzdDo6YWRkKCJXZWJLaXRGaW5kQ29udHJv
bGxlciIsICJjb3VudGVkLW1hdGNoZXMiLCB0ZXN0RmluZENvbnRyb2xsZXJDb3VudGVkTWF0Y2hl
cyk7CiAgICAgRmluZENvbnRyb2xsZXJUZXN0OjphZGQoIldlYktpdEZpbmRDb250cm9sbGVyIiwg
Im9wdGlvbnMiLCB0ZXN0RmluZENvbnRyb2xsZXJPcHRpb25zKTsKKyNpZiBQTEFURk9STShHVEsp
CiAgICAgRmluZENvbnRyb2xsZXJUZXN0OjphZGQoIldlYktpdEZpbmRDb250cm9sbGVyIiwgImhp
ZGUiLCB0ZXN0RmluZENvbnRyb2xsZXJIaWRlKTsKKyNlbmRpZgogfQogCiB2b2lkIGFmdGVyQWxs
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZp
ZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdU
ZXN0LmNwcAppbmRleCA1Zjk4OGNmZTQ5M2JmNDBmZTdkNTRhMjdhNWRkMDJjMTI0NjljMGY4Li41
NjcwNGIzNjcyYzI2ZTU1MDYzYmYxYzJkMmM4OTVhZDYyZjAwMjE3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDE3IElnYWxpYSBTLkwuCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp
IDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgpAQCAtMzY5LDYgKzM2OSw3IEBAIGJvb2wgV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRS
ZXN1bHRJc1VuZGVmaW5lZChXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0CiAgICAg
cmV0dXJuIEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCB2YWx1ZSk7CiB9CiAKKyNpZiBQTEFU
Rk9STShHVEspCiBzdGF0aWMgdm9pZCBvblNuYXBzaG90UmVhZHkoV2ViS2l0V2ViVmlldyogd2Vi
X3ZpZXcsIEdBc3luY1Jlc3VsdCogcmVzLCBXZWJWaWV3VGVzdCogdGVzdCkKIHsKICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CkBAIC0zODgsNiArMzg5LDcgQEAgY2Fpcm9fc3VyZmFj
ZV90KiBXZWJWaWV3VGVzdDo6Z2V0U25hcHNob3RBbmRXYWl0VW50aWxSZWFkeShXZWJLaXRTbmFw
c2hvdFJlZ2lvbgogICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKICAgICByZXR1cm4g
bV9zdXJmYWNlOwogfQorI2VuZGlmCiAKIGJvb2wgV2ViVmlld1Rlc3Q6OnJ1bldlYlByb2Nlc3NU
ZXN0KGNvbnN0IGNoYXIqIHN1aXRlTmFtZSwgY29uc3QgY2hhciogdGVzdE5hbWUpCiB7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5o
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAppbmRl
eCBlNzMyOWY4ZTk0OWViY2FjYWNkYmMxMzY4Y2M0YTQwZWEzMjU1MzQxLi4xMTRkMjgzNWQ0YWJk
OWY3OWY3ZmI3NWRlZGFkZjU0YmE3NzYwY2RiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTcgSWdhbGlhIFMuTC4KICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBN
b2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC04MCw3
ICs4MCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBqYXZhc2NyaXB0UmVzdWx0SXNOdWxs
KFdlYktpdEphdmFzY3JpcHRSZXN1bHQqKTsKICAgICBzdGF0aWMgYm9vbCBqYXZhc2NyaXB0UmVz
dWx0SXNVbmRlZmluZWQoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCopOwogCisjaWYgUExBVEZPUk0o
R1RLKQogICAgIGNhaXJvX3N1cmZhY2VfdCogZ2V0U25hcHNob3RBbmRXYWl0VW50aWxSZWFkeShX
ZWJLaXRTbmFwc2hvdFJlZ2lvbiwgV2ViS2l0U25hcHNob3RPcHRpb25zKTsKKyNlbmRpZgogCiAg
ICAgYm9vbCBydW5XZWJQcm9jZXNzVGVzdChjb25zdCBjaGFyKiBzdWl0ZU5hbWUsIGNvbnN0IGNo
YXIqIHRlc3ROYW1lKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324680</attachid>
            <date>2017-10-24 09:58:01 -0700</date>
            <delta_ts>2017-10-25 01:34:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178205-20171024195759.patch</filename>
            <type>text/plain</type>
            <size>33246</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzODg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJmMjkzMTY0Y2Q4YTgyNDFj
OTBjNzMxNjZiNjFjM2IwNDIzMjgzNWEuLmY2Nzc4NWM1OGMwOWRmODUxNzVhNDIzYTc5MGUxYzZi
NGNlYzY4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTctMTAtMTYgIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBSZW1v
dmUgR0xpYiBBUEkgZnVuY3Rpb25zIHdoaWNoIHVzZSBDYWlybworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjA1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFBMQVRGT1JNKEdUSykgZ3VhcmRzIGZv
ciB0aGUgcGFydHMgb2Ygb2YgdGhlIEdMaWIgQVBJIHdoaWNoIHVzZSBjYWlyb19zdXJmYWNlX3Qg
KHdlYgorICAgICAgICBwYWdlIHNuYXBzaG90cyBhbmQgZmF2aWNvbnMpLCBhbmQgcmVtb3ZlIHRo
ZSBhZmZlY3RlZCBmdW5jdGlvbiBwcm90b3R5cGVzIGZyb20gcHVibGljIEFQSQorICAgICAgICBo
ZWFkZXJzLiBUaGlzIHdheSwgdGhlIFdQRSB2ZXJzaW9uIG9mIHRoZSBBUEkgaXMgbm90IHRpZWQg
dG8gQ2Fpcm8uCisKKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0NvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0
eSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEZhdmljb25EYXRhYmFzZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAo
d2Via2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKToKKwogMjAxNy0xMC0yNCAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBnZW5lcmF0
ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwgc2hvdWxkIGFsc28gc2NhbiBkZXJpdmVkIHNvdXJjZXMg
aW4gV2ViS2l0IGZyYW1ld29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQ
RS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggNzExNzFiNzQw
YjAxMWYxM2U3OWI3NzViMjUxMTEwYTE1M2EzOTE2NC4uYjlmMjgxZDM2MzhjODkyNGRjY2JhNjFh
NTY0YWQ2MmZhMjk4ODc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC0xNjQsNyArMTY0
LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwCiAgICAgVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEphdmFzY3JpcHRSZXN1bHQuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNl
LmNwcAppbmRleCAwNWQ2M2ZkNGM0YmQzMzkyOGNlNWE0YWNhMGI4OWJlNzAzZWI2NTFmLi42ZTI4
NGY4MmRjZDI5NzE0MmU4OTkyMmEzNjEzZmIzYTViYzFlYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTcgSWdhbGlhIFMuTC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCkBAIC0xMjAsNiArMTIwLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X2Zhdmljb25fZGF0YWJh
c2VfY2xhc3NfaW5pdChXZWJLaXRGYXZpY29uRGF0YWJhc2VDbGFzcyogZmF2aWMKICAgICAgICAg
R19UWVBFX1NUUklORyk7CiB9CiAKKyNpZiBQTEFURk9STShHVEspCiBzdHJ1Y3QgR2V0RmF2aWNv
blN1cmZhY2VBc3luY0RhdGEgewogICAgIH5HZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSgpCiAg
ICAgewpAQCAtMTgzLDYgKzE4NCw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NQZW5kaW5nSWNvbnNG
b3JQYWdlVVJMKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0CiAgICAgfQog
ICAgIGRlbGV0ZVBlbmRpbmdJY29uUmVxdWVzdHMoZGF0YWJhc2UsIHBlbmRpbmdJY29uUmVxdWVz
dHMsIHBhZ2VVUkwpOwogfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHdlYmtpdEZhdmljb25EYXRh
YmFzZVNldEljb25VUkxGb3JQYWdlVVJMKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2Us
IGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKQogewpAQCAtMjI1
LDcgKzIyNyw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEltcG9ydEljb25EYXRhRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpIG92ZXJyaWRlCiAgICAgeworI2lmIFBMQVRGT1JN
KEdUSykKICAgICAgICAgcHJvY2Vzc1BlbmRpbmdJY29uc0ZvclBhZ2VVUkwobV9kYXRhYmFzZSwg
cGFnZVVSTCk7CisjZW5kaWYKICAgICAgICAgU3RyaW5nIGljb25VUkwgPSBtX2RhdGFiYXNlLT5w
cml2LT5pY29uRGF0YWJhc2UtPnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwocGFnZVVSTCk7
CiAgICAgICAgIHdlYmtpdEZhdmljb25EYXRhYmFzZVNldEljb25VUkxGb3JQYWdlVVJMKG1fZGF0
YWJhc2UsIGljb25VUkwsIHBhZ2VVUkwpOwogICAgIH0KQEAgLTI4Miw2ICsyODYsNyBAQCB2b2lk
IHdlYmtpdEZhdmljb25EYXRhYmFzZVNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViS2l0RmF2
aWNvbkRhdGFiYXNlKiBkYXRhYgogICAgICAgICBkYXRhYmFzZS0+cHJpdi0+aWNvbkRhdGFiYXNl
LT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCisjaWYgUExBVEZPUk0o
R1RLKQogdm9pZCB3ZWJraXRGYXZpY29uRGF0YWJhc2VHZXRMb2FkRGVjaXNpb25Gb3JJY29uKFdl
YktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IExpbmtJY29uJiBpY29uLCBjb25z
dCBTdHJpbmcmIHBhZ2VVUkwsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCF3ZWJraXRGYXZpY29uRGF0YWJhc2VJc09wZW4oZGF0YWJhc2UpKSB7
CkBAIC0zMzAsMTIgKzMzNSwxNCBAQCBzdGF0aWMgUGVuZGluZ0ljb25SZXF1ZXN0VmVjdG9yKiBn
ZXRPckNyZWF0ZVBlbmRpbmdJY29uUmVxdWVzdHMoV2ViS2l0RmF2aWNvbkRhdAogCiAgICAgcmV0
dXJuIGljb25zOwogfQorI2VuZGlmCiAKIEdRdWFyayB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9l
cnJvcl9xdWFyayh2b2lkKQogewogICAgIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmlu
ZygiV2ViS2l0RmF2aWNvbkRhdGFiYXNlRXJyb3IiKTsKIH0KIAorI2lmIFBMQVRGT1JNKEdUSykK
IC8qKgogICogd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb246CiAgKiBAZGF0YWJh
c2U6IGEgI1dlYktpdEZhdmljb25EYXRhYmFzZQpAQCAtNDQyLDYgKzQ0OSw3IEBAIGNhaXJvX3N1
cmZhY2VfdCogd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb25fZmluaXNoKFdlYktp
dEZhdmljb25EYXRhYmFzCiAgICAgR2V0RmF2aWNvblN1cmZhY2VBc3luY0RhdGEqIGRhdGEgPSBz
dGF0aWNfY2FzdDxHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSo+KGdfdGFza19nZXRfdGFza19k
YXRhKHRhc2spKTsKICAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2UoZGF0YS0+aWNv
bi5nZXQoKSk7CiB9CisjZW5kaWYKIAogLyoqCiAgKiB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9n
ZXRfZmF2aWNvbl91cmk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlLmgKaW5kZXggM2Q4ZWFj
MTQxZTAyN2NjZDBjZjA5ZWIyOTdiNzVkOTc4MmM2OTg5Ni4uOWFiNGQ1YjI1MWJlNDg0NmVmMzlm
Njk4YWI3ZGI1ZDQ2MDE5OTNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiwgMjAxNyBJZ2FsaWEgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yNyw1ICsyNyw3IEBAIFdlYktpdEZhdmljb25EYXRhYmFzZSogd2Via2l0RmF2aWNvbkRhdGFi
YXNlQ3JlYXRlKCk7CiB2b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4oV2ViS2l0RmF2aWNv
bkRhdGFiYXNlKiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKIGJvb2wgd2Via2l0RmF2aWNvbkRhdGFi
YXNlSXNPcGVuKFdlYktpdEZhdmljb25EYXRhYmFzZSopOwogdm9pZCB3ZWJraXRGYXZpY29uRGF0
YWJhc2VTZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdlYktpdEZhdmljb25EYXRhYmFzZSosIGJv
b2wpOworI2lmIFBMQVRGT1JNKEdUSykKIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihXZWJLaXRGYXZpY29uRGF0YWJhc2UqLCBjb25zdCBXZWJDb3JlOjpM
aW5rSWNvbiYsIGNvbnN0IFN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpOwogdm9pZCB3
ZWJraXRGYXZpY29uRGF0YWJhc2VTZXRJY29uRm9yUGFnZVVSTChXZWJLaXRGYXZpY29uRGF0YWJh
c2UqLCBjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIEFQSTo6RGF0YSYsIGNvbnN0IFN0cmluZyYp
OworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKaW5kZXggMjQwNjUyMGE0YzE4
ODE5YzZmYmQzMmYzMDVlM2ZkMDZlNTNiYWRhOS4uNTVjNGI0MGEzN2JiZTA0YzJkMGJkZTZlM2Jj
NjVhYTQ3OWUwNjI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNyBJZ2FsaWEgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMDQs
MTAgKzEwNCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHdlYmtpdFdlYlJlc291cmNl
RmFpbGVkKHJlc291cmNlLmdldCgpLCByZXNvdXJjZUVycm9yLmdldCgpKTsKIAogICAgICAgICAg
ICAgd2Via2l0V2ViVmlld1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJj
ZUlkZW50aWZpZXItPnZhbHVlKCkpOworI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNl
IGlmIChnX3N0cl9lcXVhbChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKICAgICAg
ICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQq
PihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCIpKTsKICAgICAgICAgICAgIFdlYkltYWdlKiBpbWFn
ZSA9IHN0YXRpY19jYXN0PFdlYkltYWdlKj4obWVzc2FnZS5nZXQoIlNuYXBzaG90IikpOwogICAg
ICAgICAgICAgd2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFj
a0lELT52YWx1ZSgpLCBpbWFnZSk7CisjZW5kaWYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDBjMTc5ODNiZWQ1OTI1YmI3
Njg4Njk5MTU1MDczM2Y1ZjdlN2M0MGQuLjFkNmEzYWI0NGFhZjJlY2U5NDJlYjI0MDNkMzVkYjdk
NzAwZmJlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxp
dHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ29s
bGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0xNjYsNyArMTY3LDExIEBAIGVudW0gewogICAgIFBST1BfVVNFUl9DT05U
RU5UX01BTkFHRVIsCiAgICAgUFJPUF9USVRMRSwKICAgICBQUk9QX0VTVElNQVRFRF9MT0FEX1BS
T0dSRVNTLAorCisjaWYgUExBVEZPUk0oR1RLKQogICAgIFBST1BfRkFWSUNPTiwKKyNlbmRpZgor
CiAgICAgUFJPUF9VUkksCiAgICAgUFJPUF9aT09NX0xFVkVMLAogICAgIFBST1BfSVNfTE9BRElO
RywKQEAgLTIyNSwxNCArMjMwLDE2IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewog
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEdSZWZQdHI8V2ViS2l0V2ViSW5zcGVjdG9yPiBpbnNw
ZWN0b3I7Ci0jZW5kaWYKIAogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGZhdmljb247CiAg
ICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGZhdmljb25DYW5jZWxsYWJsZTsKKwogICAgIENTdHJp
bmcgZmF2aWNvblVSSTsKICAgICB1bnNpZ25lZCBsb25nIGZhdmljb25DaGFuZ2VkSGFuZGxlcklE
OwogCiAgICAgU25hcHNob3RSZXN1bHRzTWFwIHNuYXBzaG90UmVzdWx0c01hcDsKKyNlbmRpZgor
CiAgICAgR1JlZlB0cjxXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Q+IGF1dGhlbnRpY2F0aW9u
UmVxdWVzdDsKIAogICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyPiB3ZWJzaXRl
RGF0YU1hbmFnZXI7CkBAIC00MzQsNiArNDQxLDcgQEAgc3RhdGljIHZvaWQgdXNlckFnZW50Q2hh
bmdlZChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIEdQYXJhbVNwZWMqLCBXZWJLaXRXZWJWaWUK
ICAgICBnZXRQYWdlKHdlYlZpZXcpLnNldEN1c3RvbVVzZXJBZ2VudChTdHJpbmc6OmZyb21VVEY4
KHdlYmtpdF9zZXR0aW5nc19nZXRfdXNlcl9hZ2VudChzZXR0aW5ncykpKTsKIH0KIAorI2lmIFBM
QVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdVcGRhdGVGYXZpY29uKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGNhaXJvX3N1cmZhY2VfdCogZmF2aWNvbikKIHsKICAgICBXZWJL
aXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CkBAIC00OTEsNiArNDk5LDcg
QEAgc3RhdGljIHZvaWQgZmF2aWNvbkNoYW5nZWRDYWxsYmFjayhXZWJLaXRGYXZpY29uRGF0YWJh
c2UqLCBjb25zdCBjaGFyKiBwYWdlVVJJLAogCiAgICAgd2Via2l0V2ViVmlld1VwZGF0ZUZhdmlj
b25VUkkod2ViVmlldywgZmF2aWNvblVSSSk7CiB9CisjZW5kaWYKIAogc3RhdGljIGJvb2wgd2Vi
a2l0V2ViVmlld0lzQ29uc3RydWN0ZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKQEAgLTUz
MCw2ICs1MzksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdz
U2lnbmFsSGFuZGxlcnMoV2ViS2l0V2ViVmlldyogd2ViVmlldwogICAgIGdfc2lnbmFsX2hhbmRs
ZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXR0aW5ncywgcmVpbnRlcnByZXRfY2FzdDxncG9pbnRl
cj4odXNlckFnZW50Q2hhbmdlZCksIHdlYlZpZXcpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKQog
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1dhdGNoRm9yQ2hhbmdlc0luRmF2aWNvbihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2Vi
Vmlldy0+cHJpdjsKQEAgLTU0Nyw2ICs1NTcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
RGlzY29ubmVjdEZhdmljb25EYXRhYmFzZVNpZ25hbEhhbmRsZXJzKFdlYktpdFdlYlZpZXcqCiAg
ICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0
X2Zhdmljb25fZGF0YWJhc2UocHJpdi0+Y29udGV4dC5nZXQoKSksIHByaXYtPmZhdmljb25DaGFu
Z2VkSGFuZGxlcklEKTsKICAgICBwcml2LT5mYXZpY29uQ2hhbmdlZEhhbmRsZXJJRCA9IDA7CiB9
CisjZW5kaWYKIAogI2lmIFVTRShMSUJOT1RJRlkpCiBzdGF0aWMgY29uc3QgY2hhciogZ05vdGlm
eU5vdGlmaWNhdGlvbklEID0gIndrLW5vdGlmeS1ub3RpZmljYXRpb24iOwpAQCAtNjQxLDcgKzY1
MiwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2Jq
ZWN0KQogICAgIGF0dGFjaFBvbGljeUNsaWVudFRvVmlldyh3ZWJWaWV3KTsKICAgICBhdHRhY2hD
b250ZXh0TWVudUNsaWVudFRvVmlldyh3ZWJWaWV3KTsKICAgICBhdHRhY2hGb3JtQ2xpZW50VG9W
aWV3KHdlYlZpZXcpOworCisjaWYgUExBVEZPUk0oR1RLKQogICAgIGF0dGFjaEljb25Mb2FkaW5n
Q2xpZW50VG9WaWV3KHdlYlZpZXcpOworI2VuZGlmCiAKICNpZiBQTEFURk9STShXUEUpCiAgICAg
cHJpdi0+dmlldy0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViVmlld0NsaWVudD4od2Vi
VmlldykpOwpAQCAtNzE3LDkgKzczMSwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0
UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAg
IGNhc2UgUFJPUF9FU1RJTUFURURfTE9BRF9QUk9HUkVTUzoKICAgICAgICAgZ192YWx1ZV9zZXRf
ZG91YmxlKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2VzdGltYXRlZF9sb2FkX3Byb2dyZXNz
KHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisjaWYgUExBVEZPUk0oR1RLKQogICAgIGNhc2Ug
UFJPUF9GQVZJQ09OOgogICAgICAgICBnX3ZhbHVlX3NldF9wb2ludGVyKHZhbHVlLCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2Zhdmljb24od2ViVmlldykpOwogICAgICAgICBicmVhazsKKyNlbmRpZgog
ICAgIGNhc2UgUFJPUF9VUkk6CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Vi
a2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOwogICAgICAgICBicmVhazsKQEAgLTc0OSw5
ICs3NjUsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0dldFByb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHUKIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YlZpZXdEaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3ID0gV0VCS0lUX1dFQl9WSUVXKG9iamVjdCk7CisKKyNpZiBQTEFURk9STShHVEspCiAgICAg
d2Via2l0V2ViVmlld0NhbmNlbEZhdmljb25SZXF1ZXN0KHdlYlZpZXcpOwotICAgIHdlYmtpdFdl
YlZpZXdEaXNjb25uZWN0U2V0dGluZ3NTaWduYWxIYW5kbGVycyh3ZWJWaWV3KTsKICAgICB3ZWJr
aXRXZWJWaWV3RGlzY29ubmVjdEZhdmljb25EYXRhYmFzZVNpZ25hbEhhbmRsZXJzKHdlYlZpZXcp
OworI2VuZGlmCisKKyAgICB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdFNldHRpbmdzU2lnbmFsSGFu
ZGxlcnMod2ViVmlldyk7CiAKICAgICBpZiAod2ViVmlldy0+cHJpdi0+bG9hZE9ic2VydmVyKSB7
CiAgICAgICAgIGdldFBhZ2Uod2ViVmlldykucGFnZUxvYWRTdGF0ZSgpLnJlbW92ZU9ic2VydmVy
KCp3ZWJWaWV3LT5wcml2LT5sb2FkT2JzZXJ2ZXIpOwpAQCAtODk5LDYgKzkxOSw3IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2Vi
Vmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfKCJBbiBlc3RpbWF0ZSBvZiB0aGUgcGVyY2VudCBjb21wbGV0aW9uIGZvciBh
IGRvY3VtZW50IGxvYWQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4wLCAxLjAsIDAuMCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
CisjaWYgUExBVEZPUk0oR1RLKQogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6ZmF2aWNv
bjoKICAgICAgKgpAQCAtOTExLDYgKzkzMiw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRmF2aWNv
biIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXygiVGhlIGZhdmljb24gYXNzb2NpYXRlZCB0byB0aGUgdmlldywgaWYgYW55IiksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
RUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKyNlbmRpZgorCiAgICAgLyoqCiAgICAgICogV2ViS2l0
V2ViVmlldzp1cmk6CiAgICAgICoKQEAgLTE5MDcsMTggKzE5MzAsMjIgQEAgdm9pZCB3ZWJraXRX
ZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50
IGxvYWRFdmVudCkKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnBy
aXY7CiAgICAgc3dpdGNoIChsb2FkRXZlbnQpIHsKICAgICBjYXNlIFdFQktJVF9MT0FEX1NUQVJU
RUQ6CisjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICB3ZWJraXRXZWJWaWV3Q2FuY2VsRmF2aWNv
blJlcXVlc3Qod2ViVmlldyk7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdXYXRjaEZvckNoYW5nZXNJ
bkZhdmljb24od2ViVmlldyk7CisjZW5kaWYKICAgICAgICAgd2Via2l0V2ViVmlld0NhbmNlbEF1
dGhlbnRpY2F0aW9uUmVxdWVzdCh3ZWJWaWV3KTsKICAgICAgICAgcHJpdi0+bG9hZGluZ1Jlc291
cmNlc01hcC5jbGVhcigpOwogICAgICAgICBwcml2LT5tYWluUmVzb3VyY2UgPSBudWxscHRyOwog
ICAgICAgICBicmVhazsKKyNpZiBQTEFURk9STShHVEspCiAgICAgY2FzZSBXRUJLSVRfTE9BRF9D
T01NSVRURUQ6IHsKICAgICAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZShwcml2LT5jb250ZXh0LmdldCgp
KTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBmYXZpY29uVVJJKHdlYmtpdF9mYXZpY29uX2Rh
dGFiYXNlX2dldF9mYXZpY29uX3VyaShkYXRhYmFzZSwgcHJpdi0+YWN0aXZlVVJJLmRhdGEoKSkp
OwogICAgICAgICB3ZWJraXRXZWJWaWV3VXBkYXRlRmF2aWNvblVSSSh3ZWJWaWV3LCBmYXZpY29u
VVJJLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorI2VuZGlmCiAgICAgY2FzZSBXRUJL
SVRfTE9BRF9GSU5JU0hFRDoKICAgICAgICAgd2Via2l0V2ViVmlld0NhbmNlbEF1dGhlbnRpY2F0
aW9uUmVxdWVzdCh3ZWJWaWV3KTsKICAgICAgICAgYnJlYWs7CkBAIC0xOTUzLDYgKzE5ODAsNyBA
QCB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiBmYQogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2ln
bmFsc1tMT0FEX0NIQU5HRURdLCAwLCBXRUJLSVRfTE9BRF9GSU5JU0hFRCk7CiB9CiAKKyNpZiBQ
TEFURk9STShHVEspCiB2b2lkIHdlYmtpdFdlYlZpZXdHZXRMb2FkRGVjaXNpb25Gb3JJY29uKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IExpbmtJY29uJiBpY29uLCBGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYktpdEZhdmljb25EYXRhYmFz
ZSogZGF0YWJhc2UgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2Uod2Vi
Vmlldy0+cHJpdi0+Y29udGV4dC5nZXQoKSk7CkBAIC0xOTY0LDYgKzE5OTIsNyBAQCB2b2lkIHdl
YmtpdFdlYlZpZXdTZXRJY29uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IExpbmtJY29u
JiBpY29uLCBBUEk6OkRhdAogICAgIFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UgPSB3
ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2Uod2ViVmlldy0+cHJpdi0+Y29u
dGV4dC5nZXQoKSk7CiAgICAgd2Via2l0RmF2aWNvbkRhdGFiYXNlU2V0SWNvbkZvclBhZ2VVUkwo
ZGF0YWJhc2UsIGljb24sIGljb25EYXRhLCBnZXRQYWdlKHdlYlZpZXcpLnBhZ2VMb2FkU3RhdGUo
KS5hY3RpdmVVUkwoKSk7CiB9CisjZW5kaWYKIAogV2ViUGFnZVByb3h5KiB3ZWJraXRXZWJWaWV3
Q3JlYXRlTmV3UGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBXaW5kb3dGZWF0dXJl
cyYgd2luZG93RmVhdHVyZXMsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb25BY3Rp
b24pCiB7CkBAIC0yODE0LDYgKzI4NDMsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYl92aWV3
X2dldF91cmkoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICByZXR1cm4gd2ViVmlldy0+cHJp
di0+YWN0aXZlVVJJLmRhdGEoKTsKIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKIC8qKgogICogd2Vi
a2l0X3dlYl92aWV3X2dldF9mYXZpY29uOgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3
CkBAIC0yODMzLDYgKzI4NjMsNyBAQCBjYWlyb19zdXJmYWNlX3QqIHdlYmtpdF93ZWJfdmlld19n
ZXRfZmF2aWNvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogCiAgICAgcmV0dXJuIHdlYlZpZXct
PnByaXYtPmZhdmljb24uZ2V0KCk7CiB9CisjZW5kaWYKIAogLyoqCiAgKiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2N1c3RvbV9jaGFyc2V0OgpAQCAtMzYyOSw2ICszNjYwLDcgQEAgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2dldF90bHNfaW5mbyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHVGxzQ2Vy
dGlmaWNhdGUqKgogICAgIHJldHVybiAhIWNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpOwog
fQogCisjaWYgUExBVEZPUk0oR1RLKQogdm9pZCB3ZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNuYXBz
aG90KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkltYWdl
KiB3ZWJJbWFnZSkKIHsKICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gd2ViVmlldy0+cHJpdi0+
c25hcHNob3RSZXN1bHRzTWFwLnRha2UoY2FsbGJhY2tJRCk7CkBAIC0zNzIxLDYgKzM3NTMsNyBA
QCBjYWlyb19zdXJmYWNlX3QqIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIEdBcwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNhaXJv
X3N1cmZhY2VfdCo+KGdfdGFza19wcm9wYWdhdGVfcG9pbnRlcihHX1RBU0socmVzdWx0KSwgZXJy
b3IpKTsKIH0KKyNlbmRpZgogCiB2b2lkIHdlYmtpdFdlYlZpZXdXZWJQcm9jZXNzQ3Jhc2hlZChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggODkxMzk2NmM3ZDU2
NzRiN2Q2ZWY5MGI0NzJjM2MwNDQxMDk0ZGRhOS4uMmQ5YTZlNTNjY2FkNzBmZTBmYmUwNWJkYTQ3
Yzc1YjQ5NzI3MmVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE3
IElnYWxpYSBTLkwuCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9i
aWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00
Myw4ICs0MywxMCBAQCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYgd2Via2l0V2ViVmlld0dldFBhZ2Uo
V2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2Vi
VmlldyosIFdlYktpdExvYWRFdmVudCk7CiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdl
YktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdF
cnJvciopOwogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV2ViS2l0
V2ViVmlldyosIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciosIEdUbHNDZXJ0aWZpY2F0
ZUZsYWdzLCBHVGxzQ2VydGlmaWNhdGUqKTsKKyNpZiBQTEFURk9STShHVEspCiB2b2lkIHdlYmtp
dFdlYlZpZXdHZXRMb2FkRGVjaXNpb25Gb3JJY29uKFdlYktpdFdlYlZpZXcqLCBjb25zdCBXZWJD
b3JlOjpMaW5rSWNvbiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpOwogdm9pZCB3ZWJraXRXZWJW
aWV3U2V0SWNvbihXZWJLaXRXZWJWaWV3KiwgY29uc3QgV2ViQ29yZTo6TGlua0ljb24mLCBBUEk6
OkRhdGEmKTsKKyNlbmRpZgogV2ViS2l0OjpXZWJQYWdlUHJveHkqIHdlYmtpdFdlYlZpZXdDcmVh
dGVOZXdQYWdlKFdlYktpdFdlYlZpZXcqLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYs
IFdlYktpdE5hdmlnYXRpb25BY3Rpb24qKTsKIHZvaWQgd2Via2l0V2ViVmlld1JlYWR5VG9TaG93
UGFnZShXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsKFdlYktp
dFdlYlZpZXcqKTsKQEAgLTY4LDcgKzcwLDkgQEAgdm9pZCB3ZWJraXRXZWJWaWV3UHJpbnRGcmFt
ZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Kik7CiB2b2lkIHdlYmtpdFdl
YlZpZXdSZXNvdXJjZUxvYWRTdGFydGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdlYktpdFVSSVJlcXVlc3QqKTsK
IHZvaWQgd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyUmVxdWVzdChXZWJLaXRXZWJWaWV3Kiwg
V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Kik7CiBXZWJLaXRXZWJSZXNvdXJjZSogd2Via2l0V2Vi
Vmlld0dldExvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgcmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyNpZiBQTEFURk9STShHVEspCiB2b2lkIHdlYktpdFdlYlZpZXdEaWRS
ZWNlaXZlU25hcHNob3QoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYktp
dDo6V2ViSW1hZ2UqKTsKKyNlbmRpZgogdm9pZCB3ZWJraXRXZWJWaWV3UmVtb3ZlTG9hZGluZ1dl
YlJlc291cmNlKFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwog
dm9pZCB3ZWJraXRXZWJWaWV3RW50ZXJGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQg
d2Via2l0V2ViVmlld0V4aXRGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEZhdmljb25EYXRhYmFzZS5o
CmluZGV4IGJlZDQwMTgxZDhiM2ZmNWNkMzRmYTY5NzI4NjlmZWMxZTc2ZDI4NzIuLjE3MzZiMjJm
NzQ5NTk1MWIyYTJjYmY0ZWQ3ZDA5ZDAyYmI2MTlmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRGYXZpY29uRGF0YWJhc2UuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiwgMjAxNyBJZ2FsaWEgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI0
LDcgKzI0LDYgQEAKICNpZm5kZWYgV2ViS2l0RmF2aWNvbkRhdGFiYXNlX2gKICNkZWZpbmUgV2Vi
S2l0RmF2aWNvbkRhdGFiYXNlX2gKIAotI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8Z2lv
L2dpby5oPgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdERl
ZmluZXMuaD4KQEAgLTc4LDE2ICs3Nyw2IEBAIHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2Vycm9y
X3F1YXJrICAgICAgICAodm9pZCk7CiBXRUJLSVRfQVBJIEdUeXBlCiB3ZWJraXRfZmF2aWNvbl9k
YXRhYmFzZV9nZXRfdHlwZSAgICAgICAgICAgKHZvaWQpOwogCi1XRUJLSVRfQVBJIHZvaWQKLXdl
YmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uICAgICAgICAoV2ViS2l0RmF2aWNvbkRh
dGFiYXNlICpkYXRhYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpwYWdlX3VyaSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAgICAgICAgICpjYW5jZWxs
YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5j
UmVhZHlDYWxsYmFjayAgICBjYWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICB1c2VyX2RhdGEpOwotV0VCS0lU
X0FQSSBjYWlyb19zdXJmYWNlX3QgKgotd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmlj
b25fZmluaXNoIChXZWJLaXRGYXZpY29uRGF0YWJhc2UgKmRhdGFiYXNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgKnJl
c3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9y
ICAgICAgICAgICAgICAgKiplcnJvcik7CiBXRUJLSVRfQVBJIGdjaGFyICoKIHdlYmtpdF9mYXZp
Y29uX2RhdGFiYXNlX2dldF9mYXZpY29uX3VyaSAgICAoV2ViS2l0RmF2aWNvbkRhdGFiYXNlICpk
YXRhYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgICAgICpwYWdlX3VyaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IDQwM2FjMDBkMjJjNjAyNmJmMTk0ZWE4
MDhhMWMzZjAyMTM4NzMzYjIuLjU0MDU2N2RmYzRkMGQyNDMwZDNkNDczZTFhNjI2NTYyZWVkMGE5
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmll
dy5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBl
dGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQWxwIFRva2VyIDxhbHBA
YXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgotICogQ29w
eXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTcg
SWdhbGlhIFMuTC4KICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMSBNb3Rvcm9sYSBNb2Jp
bGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xNTIsMzcg
KzE1Miw2IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX0lOU0VDVVJFX0NPTlRFTlRfRElT
UExBWUVECiB9IFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50OwogCi0vKioKLSAqIFdlYktpdFNu
YXBzaG90T3B0aW9uczoKLSAqIEBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FOiBEbyBub3Qg
aW5jbHVkZSBhbnkgc3BlY2lhbCBvcHRpb25zLgotICogQFdFQktJVF9TTkFQU0hPVF9PUFRJT05T
X0lOQ0xVREVfU0VMRUNUSU9OX0hJR0hMSUdIVElORzogV2hldGhlciB0byBpbmNsdWRlIGluIHRo
ZQotICogc25hcHNob3QgdGhlIGhpZ2hsaWdodCBvZiB0aGUgc2VsZWN0ZWQgY29udGVudC4KLSAq
IEBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19UUkFOU1BBUkVOVF9CQUNLR1JPVU5EOiBEbyBub3Qg
ZmlsbCB0aGUgYmFja2dyb3VuZCB3aXRoIHdoaXRlIGJlZm9yZQotICogcmVuZGVyaW5nIHRoZSBz
bmFwc2hvdC4gU2luY2UgMi44Ci0gKgotICogRW51bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IG9w
dGlvbnMgd2hlbiB0YWtpbmcgYSBzbmFwc2hvdAotICogZnJvbSBhICNXZWJLaXRXZWJWaWV3Lgot
ICovCi10eXBlZGVmIGVudW0gewotICBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FID0gMCwK
LSAgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfSU5DTFVERV9TRUxFQ1RJT05fSElHSExJR0hUSU5H
ID0gMSA8PCAwLAotICBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19UUkFOU1BBUkVOVF9CQUNLR1JP
VU5EID0gMSA8PCAxLAotfSBXZWJLaXRTbmFwc2hvdE9wdGlvbnM7Ci0KLS8qKgotICogV2ViS2l0
U25hcHNob3RSZWdpb246Ci0gKiBAV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFOiBTcGVj
aWZpZXMgYSBzbmFwc2hvdCBvbmx5IGZvciB0aGUgYXJlYSB0aGF0IGlzCi0gKiB2aXNpYmxlIGlu
IHRoZSB3ZWJ2aWV3Ci0gKiBAV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9GVUxMX0RPQ1VNRU5UOiBB
IHNuYXBzaG90IG9mIHRoZSBlbnRpcmUgZG9jdW1lbnQuCi0gKgotICogRW51bSB2YWx1ZXMgdXNl
ZCB0byBzcGVjaWZ5IHRoZSByZWdpb24gZnJvbSB3aGljaCB0byBnZXQgYSAjV2ViS2l0V2ViVmll
dwotICogc25hcHNob3QKLSAqLwotdHlwZWRlZiBlbnVtIHsKLSAgV0VCS0lUX1NOQVBTSE9UX1JF
R0lPTl9WSVNJQkxFID0gMCwKLSAgV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9GVUxMX0RPQ1VNRU5U
LAotfSBXZWJLaXRTbmFwc2hvdFJlZ2lvbjsKLQogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAg
ICBHT2JqZWN0IHBhcmVudDsKIApAQCAtMzYxLDkgKzMzMCw2IEBAIHdlYmtpdF93ZWJfdmlld19n
b190b19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtICAgICAgICAgKFdlYktpdFdlYlZpZXcKIFdFQktJ
VF9BUEkgY29uc3QgZ2NoYXIgKgogd2Via2l0X3dlYl92aWV3X2dldF91cmkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwog
Ci1XRUJLSVRfQVBJIGNhaXJvX3N1cmZhY2VfdCAqCi13ZWJraXRfd2ViX3ZpZXdfZ2V0X2Zhdmlj
b24gICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3
ZWJfdmlldyk7Ci0KIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgogd2Via2l0X3dlYl92aWV3X2dl
dF9jdXN0b21fY2hhcnNldCAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAqd2ViX3ZpZXcpOwogCkBAIC00NzcsMTggKzQ0Myw2IEBAIFdFQktJVF9BUEkgZ2Jvb2xl
YW4KIHdlYmtpdF93ZWJfdmlld19nZXRfdGxzX2luZm8gICAgICAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Rsc0NlcnRpZmljYXRlICAgICAg
ICAgICoqY2VydGlmaWNhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGVGbGFncyAgICAgICplcnJvcnMpOwotV0VC
S0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90ICAgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNuYXBz
aG90UmVnaW9uICAgICAgIHJlZ2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNuYXBzaG90T3B0aW9ucyAgICAgIG9wdGlvbnMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
Q2FuY2VsbGFibGUgICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sg
ICAgICAgIGNhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKLQot
V0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3QgKgotd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hv
dF9maW5pc2ggICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2Vi
X3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICpyZXN1bHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAg
ICAgICAgKiplcnJvcik7CiAKIFdFQktJVF9BUEkgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICoK
IHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIgICAgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJL
aXRXZWJQYWdlLmNwcAppbmRleCBhZmE1ZWMxMzcxZDZhZmNkZTI4N2NmZjQ0NGZiNGI4Y2IxM2Rh
MTQwLi44ZTJkMzVjNTg3OTJiOGNiYWU4ZWMxODA1YWVmM2QzYjY0ZmI1ZjFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE3IEln
YWxpYSBTLkwuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNTg1LDYgKzU4NSw3IEBAIFdlYktpdFdl
YlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKIAogdm9pZCB3ZWJr
aXRXZWJQYWdlRGlkUmVjZWl2ZU1lc3NhZ2UoV2ViS2l0V2ViUGFnZSogcGFnZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpEaWN0aW9uYXJ5JiBtZXNzYWdlKQogeworI2lmIFBMQVRG
T1JNKEdUSykKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gU3RyaW5nKCJHZXRTbmFwc2hvdCIpKSB7
CiAgICAgICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMgPSBzdGF0aWNfY2FzdDxT
bmFwc2hvdE9wdGlvbnM+KHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4obWVzc2FnZS5nZXQoIlNu
YXBzaG90T3B0aW9ucyIpKS0+dmFsdWUoKSk7CiAgICAgICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJDYWxsYmFja0lEIikpLT52
YWx1ZSgpOwpAQCAtNjIzLDYgKzYyNCw3IEBAIHZvaWQgd2Via2l0V2ViUGFnZURpZFJlY2VpdmVN
ZXNzYWdlKFdlYktpdFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hCiAgICAg
ICAgIG1lc3NhZ2VSZXBseS5zZXQoIlNuYXBzaG90Iiwgc25hcHNob3RJbWFnZSk7CiAgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCktPnBvc3RNZXNzYWdlKCJX
ZWJQYWdlLkRpZEdldFNuYXBzaG90IiwgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZSht
ZXNzYWdlUmVwbHkpKS5wdHIoKSk7CiAgICAgfSBlbHNlCisjZW5kaWYKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA5Y2Y2Nzk0ZWZhMTJmMDVlNGMxOWE0Njk3NTc1MGM1OTBmMjkzNzM5
Li40OTU3Yjk4MWRmOGViZmM4MDY4ZjdiN2JiNzkzMDYwYmIxZmE2NjA1IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIw
MTctMTAtMTYgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbV1BFXSBSZW1vdmUgR0xpYiBBUEkgZnVuY3Rpb25zIHdoaWNoIHVzZSBDYWlybwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjA1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFBMQVRG
T1JNKEdUSykgZ3VhcmRzIGZvciB0aGUgQVBJIHRlc3RzIChvciBwYXJ0cyBvZiB0aGVtKSB3aGlj
aCB1c2UgY2Fpcm9fc3VyZmFjZV90ICh3ZWIKKyAgICAgICAgcGFnZSBzbmFwc2hvdHMgYW5kIGZh
dmljb25zKSB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSBpbiB0aGUgV1BFIHZlcnNpb24gb2YgdGhl
IEdMaWIgQVBJLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAodGVzdE5vdEluaXRpYWxpemVk
KToKKyAgICAgICAgKHRlc3RQcml2YXRlQnJvd3NpbmcpOgorICAgICAgICAodGVzdEZhdmljb25E
YXRhYmFzZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJLaXRGaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgICh0ZXN0RmluZENvbnRyb2xsZXJIaWRl
KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1dlYlZpZXdUZXN0Lmg6CisKIDIwMTctMTAtMjMgIEx1Y2FzIEZvcnNjaGxlciAg
PGxmb3JzY2hsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTA0NTQ0
NT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCAwMDBjZjY3NjJmYzE2
NzVjNGRmYjdhNzEzNzBlNjBmN2RhZGQ5ZGEzLi44ZjQxNDhjNzc5MTQ3NjZkMjg4NzAxM2EzZDcy
ZTZkMTVlMzljMjU5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLCAyMDE3IElnYWxpYSBTLkwuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
NDEsOCArNDEsMTAgQEAgcHVibGljOgogCiAgICAgfkZhdmljb25EYXRhYmFzZVRlc3QoKQogICAg
IHsKKyNpZiBQTEFURk9STShHVEspCiAgICAgICAgIGlmIChtX2Zhdmljb24pCiAgICAgICAgICAg
ICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kobV9mYXZpY29uKTsKKyNlbmRpZgogCiAgICAgICAgIFdl
YktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zh
dmljb25fZGF0YWJhc2UobV93ZWJDb250ZXh0LmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFu
ZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKGRhdGFiYXNlLCBHX1NJR05BTF9NQVRDSF9EQVRBLCAw
LCAwLCAwLCAwLCB0aGlzKTsKQEAgLTY1LDYgKzY3LDcgQEAgcHVibGljOgogICAgICAgICB0ZXN0
LT5xdWl0TWFpbkxvb3AoKTsKICAgICB9CiAKKyNpZiBQTEFURk9STShHVEspCiAgICAgc3RhdGlj
IHZvaWQgZ2V0RmF2aWNvbkNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZU9iamVjdCwgR0FzeW5jUmVz
dWx0KiByZXN1bHQsIHZvaWQqIGRhdGEpCiAgICAgewogICAgICAgICBGYXZpY29uRGF0YWJhc2VU
ZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8RmF2aWNvbkRhdGFiYXNlVGVzdCo+KGRhdGEpOwpAQCAt
ODAsOSArODMsMTEgQEAgcHVibGljOgogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9v
cCk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3dlYlZpZXcsIGhhbmRs
ZXJJRCk7CiAgICAgfQorI2VuZGlmCiAKICAgICB2b2lkIGdldEZhdmljb25Gb3JQYWdlVVJJQW5k
V2FpdFVudGlsUmVhZHkoY29uc3QgY2hhciogcGFnZVVSSSkKICAgICB7CisjaWYgUExBVEZPUk0o
R1RLKQogICAgICAgICBpZiAobV9mYXZpY29uKSB7CiAgICAgICAgICAgICBjYWlyb19zdXJmYWNl
X2Rlc3Ryb3kobV9mYXZpY29uKTsKICAgICAgICAgICAgIG1fZmF2aWNvbiA9IDA7CkBAIC05MCw2
ICs5NSw4IEBAIHB1YmxpYzoKIAogICAgICAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFi
YXNlID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlKG1fd2ViQ29udGV4
dC5nZXQoKSk7CiAgICAgICAgIHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uKGRh
dGFiYXNlLCBwYWdlVVJJLCAwLCBnZXRGYXZpY29uQ2FsbGJhY2ssIHRoaXMpOworI2VuZGlmCisK
ICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogICAgIH0KIApAQCAtMTAzLDYg
KzExMCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBjYWlyb19zdXJmYWNlX3QqIG1fZmF2aWNv
bjsKKwogICAgIENTdHJpbmcgbV9mYXZpY29uVVJJOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBtX2Vycm9yOwogICAgIGJvb2wgbV9mYXZpY29uTm90aWZpY2F0aW9uUmVjZWl2ZWQ7CkBAIC0x
ODksNiArMTk3LDcgQEAgc3RhdGljIHZvaWQgdGVzdFByaXZhdGVCcm93c2luZyhGYXZpY29uRGF0
YWJhc2VUZXN0KiB0ZXN0KQogICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXJyb3IpOwogfQogCisjaWYg
UExBVEZPUk0oR1RLKQogc3RhdGljIHZvaWQgdGVzdEdldEZhdmljb24oRmF2aWNvbkRhdGFiYXNl
VGVzdCogdGVzdCkKIHsKICAgICAvLyBXZSBuZWVkIHRvIGxvYWQgdGhlIHBhZ2UgZmlyc3QgdG8g
ZW5zdXJlIHRoZSBpY29uIGRhdGEgd2lsbCBiZQpAQCAtMjMxLDYgKzI0MCw3IEBAIHN0YXRpYyB2
b2lkIHRlc3RHZXRGYXZpY29uKEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QpCiAgICAgZ19hc3Nl
cnQoIXRlc3QtPm1fZmF2aWNvbik7CiAgICAgZ19hc3NlcnQodGVzdC0+bV9lcnJvcik7CiB9Cisj
ZW5kaWYKIAogc3RhdGljIHZvaWQgdGVzdEdldEZhdmljb25VUkkoRmF2aWNvbkRhdGFiYXNlVGVz
dCogdGVzdCkKIHsKQEAgLTI0MSw2ICsyNTEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0R2V0RmF2aWNv
blVSSShGYXZpY29uRGF0YWJhc2VUZXN0KiB0ZXN0KQogICAgIEFTU0VSVF9DTVBfQ1NUUklORyhp
Y29uVVJJLmdldCgpLCA9PSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2ljb24vZmF2aWNvbi5p
Y28iKSk7CiB9CiAKKyNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0Zh
dmljb24oRmF2aWNvbkRhdGFiYXNlVGVzdCogdGVzdCkKIHsKICAgICB0ZXN0LT5tX2Zhdmljb25V
UkkgPSBDU3RyaW5nKCk7CkBAIC0yNjAsNiArMjcxLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdGYXZpY29uKEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QpCiAgICAgZ19hc3NlcnRfY21wdWlu
dChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChpY29uRnJvbVdlYlZpZXcpLCA9PSwgMTYp
OwogICAgIGdfYXNzZXJ0X2NtcHVpbnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KGlj
b25Gcm9tV2ViVmlldyksID09LCAxNik7CiB9CisjZW5kaWYKIAogc3RhdGljIHZvaWQgdGVzdEZh
dmljb25EYXRhYmFzZShGYXZpY29uRGF0YWJhc2VUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ewpAQCAtMjY4LDkgKzI4MCwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0RmF2aWNvbkRhdGFiYXNlKEZh
dmljb25EYXRhYmFzZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdE5vdEluaXRp
YWxpemVkKHRlc3QpOwogICAgIHRlc3RTZXREaXJlY3RvcnkodGVzdCk7CiAgICAgdGVzdFByaXZh
dGVCcm93c2luZyh0ZXN0KTsKKworI2lmIFBMQVRGT1JNKEdUSykKICAgICB0ZXN0R2V0RmF2aWNv
bih0ZXN0KTsKLSAgICB0ZXN0R2V0RmF2aWNvblVSSSh0ZXN0KTsKICAgICB0ZXN0V2ViVmlld0Zh
dmljb24odGVzdCk7CisjZW5kaWYKKworICAgIHRlc3RHZXRGYXZpY29uVVJJKHRlc3QpOwogICAg
IHRlc3RDbGVhckRhdGFiYXNlKHRlc3QpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdEZpbmRDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0RmluZENvbnRyb2xs
ZXIuY3BwCmluZGV4IDQxYmZjNzE0OGNhMWI5NzY4NDZhNjI1OTExNDg3MThmN2JlZWZlYjUuLjc2
NThmNTk1OTlkZGI4ZDNhZmZjODE4NTI3ZmE0NjQ1NTI3ZWYxZTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0RmluZENvbnRyb2xsZXIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
RmluZENvbnRyb2xsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE3IElnYWxpYSBTLkwu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjU3LDE0ICsyNTcsMTUgQEAgc3RhdGljIHZvaWQgdGVz
dEZpbmRDb250cm9sbGVyT3B0aW9ucyhGaW5kQ29udHJvbGxlclRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAgICAgZ19hc3NlcnQodGVzdC0+bV90ZXh0Rm91bmQpOwogfQogCisvLyBUT0RPOiBS
ZXdyaXRlIHRoaXMgdGVzdCB0byBhdm9pZCB1c2luZyBzbmFwc2hvdHMgc28gaXQgY2FuIGJlIHJl
LWVuYWJsZWQKKy8vIGZvciBXUEUgb3IsIGFsdGVybmF0aXZlbHksIG1ha2Ugc25hcHNob3RzIHdv
cmsgZm9yIFdQRSBhcyB3ZWxsLgorI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RG
aW5kQ29udHJvbGxlckhpZGUoRmluZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogewogICAgIHRlc3QtPmxvYWRIdG1sKHRlc3RTdHJpbmcsIDApOwogICAgIHRlc3QtPndhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOwogCi0jaWYgUExBVEZPUk0oR1RLKQogICAgIHRlc3QtPnNob3dJ
bldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOwotI2VuZGlmCiAKICAgICBjYWlyb19zdXJmYWNl
X3QqIG9yaWdpbmFsU3VyZmFjZSA9IGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKAogICAgICAgICB0
ZXN0LT5nZXRTbmFwc2hvdEFuZFdhaXRVbnRpbFJlYWR5KFdFQktJVF9TTkFQU0hPVF9SRUdJT05f
RlVMTF9ET0NVTUVOVCwgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSkpOwpAQCAtMjkyLDYg
KzI5Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlckhpZGUoRmluZENvbnRyb2xs
ZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveSho
aWdobGlnaHRTdXJmYWNlKTsKICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kodW5oaWdobGlnaHRT
dXJmYWNlKTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xsZXJJbnN0
YW5jZShGaW5kQ29udHJvbGxlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CkBAIC0zMjcs
NyArMzI5LDkgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIEZpbmRDb250cm9sbGVyVGVzdDo6YWRk
KCJXZWJLaXRGaW5kQ29udHJvbGxlciIsICJwcmV2aW91cyIsIHRlc3RGaW5kQ29udHJvbGxlclBy
ZXZpb3VzKTsKICAgICBGaW5kQ29udHJvbGxlclRlc3Q6OmFkZCgiV2ViS2l0RmluZENvbnRyb2xs
ZXIiLCAiY291bnRlZC1tYXRjaGVzIiwgdGVzdEZpbmRDb250cm9sbGVyQ291bnRlZE1hdGNoZXMp
OwogICAgIEZpbmRDb250cm9sbGVyVGVzdDo6YWRkKCJXZWJLaXRGaW5kQ29udHJvbGxlciIsICJv
cHRpb25zIiwgdGVzdEZpbmRDb250cm9sbGVyT3B0aW9ucyk7CisjaWYgUExBVEZPUk0oR1RLKQog
ICAgIEZpbmRDb250cm9sbGVyVGVzdDo6YWRkKCJXZWJLaXRGaW5kQ29udHJvbGxlciIsICJoaWRl
IiwgdGVzdEZpbmRDb250cm9sbGVySGlkZSk7CisjZW5kaWYKIH0KIAogdm9pZCBhZnRlckFsbCgp
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3
VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVz
dC5jcHAKaW5kZXggNWY5ODhjZmU0OTNiZjQwZmU3ZDU0YTI3YTVkZDAyYzEyNDY5YzBmOC4uNTY3
MDRiMzY3MmMyNmU1NTA2M2JmMWMyZDJjODk1YWQ2MmYwMDIxNyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxNyBJZ2FsaWEgUy5MLgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy
MDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKQEAgLTM2OSw2ICszNjksNyBAQCBib29sIFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVz
dWx0SXNVbmRlZmluZWQoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdAogICAgIHJl
dHVybiBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpOwogfQogCisjaWYgUExBVEZP
Uk0oR1RLKQogc3RhdGljIHZvaWQgb25TbmFwc2hvdFJlYWR5KFdlYktpdFdlYlZpZXcqIHdlYl92
aWV3LCBHQXN5bmNSZXN1bHQqIHJlcywgV2ViVmlld1Rlc3QqIHRlc3QpCiB7CiAgICAgR1VuaXF1
ZU91dFB0cjxHRXJyb3I+IGVycm9yOwpAQCAtMzg4LDYgKzM4OSw3IEBAIGNhaXJvX3N1cmZhY2Vf
dCogV2ViVmlld1Rlc3Q6OmdldFNuYXBzaG90QW5kV2FpdFVudGlsUmVhZHkoV2ViS2l0U25hcHNo
b3RSZWdpb24KICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CiAgICAgcmV0dXJuIG1f
c3VyZmFjZTsKIH0KKyNlbmRpZgogCiBib29sIFdlYlZpZXdUZXN0OjpydW5XZWJQcm9jZXNzVGVz
dChjb25zdCBjaGFyKiBzdWl0ZU5hbWUsIGNvbnN0IGNoYXIqIHRlc3ROYW1lKQogewpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKaW5kZXgg
ZTczMjlmOGU5NDllYmNhY2FjZGJjMTM2OGNjNGE0MGVhMzI1NTM0MS4uMTE0ZDI4MzVkNGFiZDlm
NzlmN2ZiNzVkZWRhZGY1NGJhNzc2MGNkYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE3
IElnYWxpYSBTLkwuCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9i
aWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtODAsNyAr
ODAsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgamF2YXNjcmlwdFJlc3VsdElzTnVsbChX
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0Kik7CiAgICAgc3RhdGljIGJvb2wgamF2YXNjcmlwdFJlc3Vs
dElzVW5kZWZpbmVkKFdlYktpdEphdmFzY3JpcHRSZXN1bHQqKTsKIAorI2lmIFBMQVRGT1JNKEdU
SykKICAgICBjYWlyb19zdXJmYWNlX3QqIGdldFNuYXBzaG90QW5kV2FpdFVudGlsUmVhZHkoV2Vi
S2l0U25hcHNob3RSZWdpb24sIFdlYktpdFNuYXBzaG90T3B0aW9ucyk7CisjZW5kaWYKIAogICAg
IGJvb2wgcnVuV2ViUHJvY2Vzc1Rlc3QoY29uc3QgY2hhciogc3VpdGVOYW1lLCBjb25zdCBjaGFy
KiB0ZXN0TmFtZSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>