<?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>240221</bug_id>
          
          <creation_ts>2022-05-08 18:04:01 -0700</creation_ts>
          <short_desc>[GLIB] Add API to set WebView&apos;s Content-Security-Policy</short_desc>
          <delta_ts>2022-06-24 01:58:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick Griffis">pgriffis</reporter>
          <assigned_to name="Patrick Griffis">pgriffis</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>philn</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1867548</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-05-08 18:04:01 -0700</bug_when>
    <thetext>[GLIB] Add API to set WebView&apos;s Content-Security-Policy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867549</commentid>
    <comment_count>1</comment_count>
      <attachid>459019</attachid>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-05-08 18:06:35 -0700</bug_when>
    <thetext>Created attachment 459019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867550</commentid>
    <comment_count>2</comment_count>
      <attachid>459019</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-05-08 18:51:26 -0700</bug_when>
    <thetext>Comment on attachment 459019
Patch

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

Let&apos;s see if Carlos Garcia or Adrian have any alternative proposals for how the API should look. I was quite tempted to suggest using WebKitWebsitePolicies, but that is really designed around the decide-policy API, which this is unrelated to.

&gt; Source/WebKit/ChangeLog:13
&gt; +        Both of these are required for a complete WebExtension implementation in
&gt; +        browsers such as Epiphany.

For posterity: https://gitlab.gnome.org/GNOME/epiphany/-/issues/1777

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:29
&gt; +#include &lt;WebCore/ContentSecurityPolicy.h&gt;

I&apos;m surprised style checker didn&apos;t complain about this. &lt;&gt; includes sort farther down, below all the &quot;&quot; includes.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1476
&gt; +     * In practice this limits the Content-Security-Policies that are allowed to be set.

Would be interesting to see a little more information here. You know all about it because you are a CSP expert, but I had to look into ContentSecurityPolicySourceList.cpp to see that it was doing anything at all.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:5148
&gt; +/**
&gt; + * webkit_web_view_set_default_content_security_policy:
&gt; + * @web_view: a #WebKitWebView
&gt; + * @policy: (nullable): a Content-Security-Policy
&gt; + *
&gt; + * This configures created #WebKitWebView&apos;s to use @policy as its initial
&gt; + * Content-Security-Policy as if it were set by an HTTP header.

OK, but the GObject property is construct only, so why does this exist? Either the property should not be construct only, or there should be no setter.

I think construct-only is probably the way to go, because potential for error is high otherwise. The new policy will only take effect for a new WebPage, but page swapping is opaque to API users and very confusing. I bet 95% of developers using WebKit don&apos;t understand this. And it would probably be extremely unusual that you would ever want to call this function, right?

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebView.h:225
&gt; + * WebKitWebExtensionMode:

Sadly we hit terminology hell here. WebKitWebExtension is totally unrelated to WebExtensions. And here you have the first WebKit API for WebExtensions. Calling it anything other than WebKitWebExtensionMode would be weird, but it&apos;s also absurdly confusing because it&apos;s not related to WebKitWebExtension. Maybe it is OK because bug #226665 proposes to fix this in the GTK 4 and new WPE APIs. Will be really confusing in the old APIs, though. At least add a sentence to document that this is for WebExtensions and not WebKitWebExtensions.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebView.h:228
&gt; + * @WEBKIT_WEB_EXTENSION_MODE_MANIFESTV2: For a ManifestV2 extension.
&gt; + * @WEBKIT_WEB_EXTENSION_MODE_MANIFESTV3: For a ManifestV3 extension.

I was hoping we could do without this enum entirely if we limit ourselves to only supporting Manifest v3, but I see that NONE really needs to be the default? I suppose enum is best, that way we&apos;re covered whenever manifest v4 rolls around.

&gt; Source/WebKit/UIProcess/API/wpe/WebKitWebView.h:638
&gt; +WEBKIT_API void
&gt; +webkit_web_view_set_web_extension_mode               (WebKitWebView             *web_view,
&gt; +                                                     WebKitWebExtensionMode      mode);

Indentation error here

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:1720
&gt; +    // Create a new web view with a policy that blocks eval().
&gt; +    auto webView = Test::adoptView(g_object_new(WEBKIT_TYPE_WEB_VIEW,
&gt; +        &quot;default-content-security-policy&quot;, &quot;script-src &apos;self&apos;&quot;, nullptr));
&gt; +
&gt; +    // Ensure JavaScript still functions.
&gt; +    javascriptResult = test-&gt;runJavaScriptAndWaitUntilFinished(&quot;&apos;allowed&apos;&quot;, &amp;error.outPtr(), webView.get());
&gt; +    g_assert_nonnull(javascriptResult);
&gt; +    g_assert_no_error(error.get());
&gt; +    GUniquePtr&lt;char&gt; value(WebViewTest::javascriptResultToCString(javascriptResult));
&gt; +    g_assert_cmpstr(value.get(), ==, &quot;allowed&quot;);
&gt; +    webkit_javascript_result_unref(javascriptResult);
&gt; +
&gt; +    // Then ensure eval is blocked.
&gt; +    javascriptResult = test-&gt;runJavaScriptAndWaitUntilFinished(&quot;eval(&apos;allowed&apos;)&quot;, &amp;error.outPtr(), webView.get());
&gt; +    g_assert_null(javascriptResult);
&gt; +    g_assert_error(error.get(), WEBKIT_JAVASCRIPT_ERROR, WEBKIT_JAVASCRIPT_ERROR_SCRIPT_FAILED);

Please also test to ensure eval works when you *don&apos;t* use default-content-security-policy. And test webkit_web_view_set_default_content_security_policy()/webkit_web_view_get_default_content_security_policy().

If you retain webkit_web_view_set_default_content_security_policy(), you should test to see what happens when you change it after the web view is created.

We need tests for WebKitWebExtensionMode too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867799</commentid>
    <comment_count>3</comment_count>
      <attachid>459085</attachid>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-05-09 15:16:26 -0700</bug_when>
    <thetext>Created attachment 459085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867800</commentid>
    <comment_count>4</comment_count>
      <attachid>459086</attachid>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-05-09 15:29:27 -0700</bug_when>
    <thetext>Created attachment 459086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867914</commentid>
    <comment_count>5</comment_count>
      <attachid>459086</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-05-10 06:16:09 -0700</bug_when>
    <thetext>Comment on attachment 459086
Patch

Better, thanks. I would still provide getter functions for the new properties, not because it&apos;s reuired, but because it&apos;s conventional. Omitting the setters makes sense since they&apos;re construct only.

Nice tests. I think the changes to WebViewTest are OK. No doubt some functions of WebViewTest might not work if using the new optional parameters, but presumably that is obvious enough that it won&apos;t be a problem? Let&apos;s see what other reviewers think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868207</commentid>
    <comment_count>6</comment_count>
      <attachid>459180</attachid>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-05-11 13:31:45 -0700</bug_when>
    <thetext>Created attachment 459180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868250</commentid>
    <comment_count>7</comment_count>
      <attachid>459180</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-05-11 17:04:44 -0700</bug_when>
    <thetext>Comment on attachment 459180
Patch

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

OK, r=me. Needs a second GTK/WPE reviewer, since it adds new API.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:5116
&gt; + * Returns: the #WebKitWebExtensionMode
&gt; + * Since: 2.38

Need a blank line here.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:5132
&gt; + * Returns: (nullable): The default policy or %NULL
&gt; + * Since: 2.38

And here.

&gt; Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:40
&gt; -    virtual void loadHtml(const char* html, const char* baseURI);
&gt; +    virtual void loadHtml(const char* html, const char* baseURI, WebKitWebView* = nullptr);

I see you copied a new pattern introduced in bug #213884. I would check with cgarcia to be sure he&apos;s OK with these changes to WebViewTest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868466</commentid>
    <comment_count>8</comment_count>
      <attachid>459239</attachid>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-05-12 10:39:48 -0700</bug_when>
    <thetext>Created attachment 459239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1871522</commentid>
    <comment_count>9</comment_count>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-05-24 10:00:55 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/978</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1876901</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-06-20 20:55:07 -0700</bug_when>
    <thetext>Committed r295679 (251684@main): &lt;https://commits.webkit.org/251684@main&gt;

Reviewed commits have been landed. Closing PR #978 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1877628</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">philn</who>
    <bug_when>2022-06-23 04:49:29 -0700</bug_when>
    <thetext>Looks like this introduced some new clang warnings:

[1662/1856] Building CXX object Tools/TestWebKitAPI/glib/CMakeFiles/TestAuthentication.dir/__/Tests/WebKitGLib/TestAuthentication.cpp.o
In file included from /app/webkit/Tools/TestWebKitAPI/Tests/WebKitGLib/TestAuthentication.cpp:21:
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/LoadTrackingTest.h:42:10: warning: &apos;LoadTrackingTest::loadHtml&apos; hides overloaded virtual function [-Woverloaded-virtual]
    void loadHtml(const char* html, const char* baseURI);
         ^
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:40:18: note: hidden overloaded virtual function &apos;WebViewTest::loadHtml&apos; declared here: different number of parameters (3 vs 2)
    virtual void loadHtml(const char* html, const char* baseURI, WebKitWebView* = nullptr);
                 ^
1 warning generated.
[1663/1856] Building CXX object Tools/TestWebKitAPI/glib/CMakeFiles/WebKitGLibAPITestsCore.dir/WebKitGLib/LoadTrackingTest.cpp.o
In file included from /app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/LoadTrackingTest.cpp:21:
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/LoadTrackingTest.h:42:10: warning: &apos;LoadTrackingTest::loadHtml&apos; hides overloaded virtual function [-Woverloaded-virtual]
    void loadHtml(const char* html, const char* baseURI);
         ^
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:40:18: note: hidden overloaded virtual function &apos;WebViewTest::loadHtml&apos; declared here: different number of parameters (3 vs 2)
    virtual void loadHtml(const char* html, const char* baseURI, WebKitWebView* = nullptr);
                 ^
1 warning generated.
[1692/1856] Building CXX object Tools/TestWebKitAPI/glib/CMakeFiles/TestWebKitFindController.dir/__/Tests/WebKitGLib/TestWebKitFindController.cpp.o
In file included from /app/webkit/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitFindController.cpp:22:
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/LoadTrackingTest.h:42:10: warning: &apos;LoadTrackingTest::loadHtml&apos; hides overloaded virtual function [-Woverloaded-virtual]
    void loadHtml(const char* html, const char* baseURI);
         ^
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:40:18: note: hidden overloaded virtual function &apos;WebViewTest::loadHtml&apos; declared here: different number of parameters (3 vs 2)
    virtual void loadHtml(const char* html, const char* baseURI, WebKitWebView* = nullptr);
                 ^
1 warning generated.
[1696/1856] Building CXX object Tools/TestWebKitAPI/glib/CMakeFiles/TestWebKitPolicyClient.dir/__/Tests/WebKitGLib/TestWebKitPolicyClient.cpp.o
In file included from /app/webkit/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:22:
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/LoadTrackingTest.h:42:10: warning: &apos;LoadTrackingTest::loadHtml&apos; hides overloaded virtual function [-Woverloaded-virtual]
    void loadHtml(const char* html, const char* baseURI);
         ^
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:40:18: note: hidden overloaded virtual function &apos;WebViewTest::loadHtml&apos; declared here: different number of parameters (3 vs 2)
    virtual void loadHtml(const char* html, const char* baseURI, WebKitWebView* = nullptr);
                 ^
1 warning generated.
[1721/1856] Building CXX object Tools/TestWebKitAPI/glib/CMakeFiles/TestLoaderClient.dir/__/Tests/WebKitGLib/TestLoaderClient.cpp.o
In file included from /app/webkit/Tools/TestWebKitAPI/Tests/WebKitGLib/TestLoaderClient.cpp:24:
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/LoadTrackingTest.h:42:10: warning: &apos;LoadTrackingTest::loadHtml&apos; hides overloaded virtual function [-Woverloaded-virtual]
    void loadHtml(const char* html, const char* baseURI);
         ^
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:40:18: note: hidden overloaded virtual function &apos;WebViewTest::loadHtml&apos; declared here: different number of parameters (3 vs 2)
    virtual void loadHtml(const char* html, const char* baseURI, WebKitWebView* = nullptr);
                 ^
1 warning generated.
[1722/1856] Building CXX object Tools/TestWebKitAPI/glib/CMakeFiles/TestSSL.dir/__/Tests/WebKitGLib/TestSSL.cpp.o
In file included from /app/webkit/Tools/TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp:22:
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/LoadTrackingTest.h:42:10: warning: &apos;LoadTrackingTest::loadHtml&apos; hides overloaded virtual function [-Woverloaded-virtual]
    void loadHtml(const char* html, const char* baseURI);
         ^
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:40:18: note: hidden overloaded virtual function &apos;WebViewTest::loadHtml&apos; declared here: different number of parameters (3 vs 2)
    virtual void loadHtml(const char* html, const char* baseURI, WebKitWebView* = nullptr);
                 ^
1 warning generated.
[1723/1856] Building CXX object Tools/TestWebKitAPI/glib/CMakeFiles/TestWebKitWebContext.dir/__/Tests/WebKitGLib/TestWebKitWebContext.cpp.o
In file included from /app/webkit/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:22:
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/LoadTrackingTest.h:42:10: warning: &apos;LoadTrackingTest::loadHtml&apos; hides overloaded virtual function [-Woverloaded-virtual]
    void loadHtml(const char* html, const char* baseURI);
         ^
/app/webkit/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:40:18: note: hidden overloaded virtual function &apos;WebViewTest::loadHtml&apos; declared here: different number of parameters (3 vs 2)
    virtual void loadHtml(const char* html, const char* baseURI, WebKitWebView* = nullptr);
                 ^
1 warning generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1877763</commentid>
    <comment_count>12</comment_count>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-06-23 12:16:26 -0700</bug_when>
    <thetext>Re-opening for pull request https://github.com/WebKit/WebKit/pull/1735</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1878153</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-06-24 01:58:51 -0700</bug_when>
    <thetext>Committed 251825@main (65bee18661f8): &lt;https://commits.webkit.org/251825@main&gt;

Reviewed commits have been landed. Closing PR #1735 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459019</attachid>
            <date>2022-05-08 18:06:35 -0700</date>
            <delta_ts>2022-05-09 15:16:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240221-20220508200634.patch</filename>
            <type>text/plain</type>
            <size>16295</size>
            <attacher name="Patrick Griffis">pgriffis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzOTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3ZDMwNzUxOTYyMTk3NmUz
MzM5MzkyOTdiYzQ1YjUxZWM2YjMxZTguLjIxMGVhMjk4MGIyZmQ2NGVkNzhlMmRlYWZjMmI3NThl
YWQ1MDM3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjItMDUtMDggIFBhdHJpY2sg
R3JpZmZpcyAgPHBncmlmZmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJdIEFkZCBBUEkg
dG8gc2V0IFdlYlZpZXcncyBDb250ZW50LVNlY3VyaXR5LVBvbGljeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwMjIxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIEFQSSB0byBzZXQgdGhl
IFdlYlZpZXcncyBkZWZhdWx0IHBvbGljeSBhcyB3ZWxsIGFzIEFQSSB0bworICAgICAgICBpbmRp
Y2F0ZSB0aGF0IHRoZSBXZWJWaWV3IGlzIGluIGEgV2ViRXh0ZW5zaW9uLiBUaGlzIGNoYW5nZXMg
dGhlIGludGVybmFsCisgICAgICAgIGJlaGF2aW9yIG9mIENTUCB0byBibG9jayBzb21lIG9wdGlv
bnMuCisKKyAgICAgICAgQm90aCBvZiB0aGVzZSBhcmUgcmVxdWlyZWQgZm9yIGEgY29tcGxldGUg
V2ViRXh0ZW5zaW9uIGltcGxlbWVudGF0aW9uIGluCisgICAgICAgIGJyb3dzZXJzIHN1Y2ggYXMg
RXBpcGhhbnkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJv
cGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3NldF93ZWJfZXh0ZW5zaW9uX21vZGUpOgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X2dldF93ZWJfZXh0ZW5zaW9uX21vZGUpOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X3NldF9kZWZhdWx0X2NvbnRlbnRfc2VjdXJpdHlfcG9saWN5KToKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19nZXRfZGVmYXVsdF9jb250ZW50X3NlY3VyaXR5X3BvbGljeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaDoKKwogMjAyMi0wNS0wNiAgTWVnYW4gR2FyZG5lciAg
PG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmbGFrZXkgdGVzdCBieSB1
c2luZyB0aGUgb2xkIEFQSSBvbiBvbGQgc3lzdGVtcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggYTE1OGExMGU2
NzNjNzU0YjMwZjM2NzhlM2JhZDU2NTNjOWUyZjhkZS4uNTQ3MTRjZGEzZDM2NDk5MjcyN2NiYjNk
OGY1Yjc3OTRiYjQzZjQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29u
dGVudFNlY3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSAiTGVnYWN5R2xvYmFsU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNr
ZXIuaCIKQEAgLTE5NjAsNiArMTk2MSwxNiBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQ
YWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaQogICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIodXNlckNvbnRlbnRN
YW5hZ2VyID8gd2Via2l0VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKHdlYmtpdF93ZWJfdmlld19pc19jb250cm9s
bGVkX2J5X2F1dG9tYXRpb24od2ViVmlldykpOwogCisgICAgYXV0byB3ZWJFeHRlbnNpb25Nb2Rl
ID0gd2Via2l0X3dlYl92aWV3X2dldF93ZWJfZXh0ZW5zaW9uX21vZGUod2ViVmlldyk7CisgICAg
aWYgKHdlYkV4dGVuc2lvbk1vZGUgPT0gV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9NQU5JRkVT
VFYzKQorICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0Q29udGVudFNlY3VyaXR5UG9saWN5
TW9kZUZvckV4dGVuc2lvbihXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0
ZW5zaW9uOjpNYW5pZmVzdFYzKTsKKyAgICBlbHNlIGlmICh3ZWJFeHRlbnNpb25Nb2RlID09IFdF
QktJVF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZFU1RWMikKKyAgICAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnNldENvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb24oV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5TW9kZUZvckV4dGVuc2lvbjo6TWFuaWZlc3RWMik7CisKKyAg
ICBjb25zdCBjaGFyKiBkZWZhdWx0Q29udGVudFNlY3VyaXR5UG9saWN5ID0gd2Via2l0X3dlYl92
aWV3X2dldF9kZWZhdWx0X2NvbnRlbnRfc2VjdXJpdHlfcG9saWN5KHdlYlZpZXcpOworICAgIGlm
IChkZWZhdWx0Q29udGVudFNlY3VyaXR5UG9saWN5KQorICAgICAgICBwYWdlQ29uZmlndXJhdGlv
bi0+c2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koU3RyaW5nOjpmcm9tVVRGOChkZWZh
dWx0Q29udGVudFNlY3VyaXR5UG9saWN5KSk7CisKICAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIqIG1hbmFnZXIgPSB3ZWJraXRXZWJWaWV3R2V0V2Vic2l0ZURhdGFNYW5hZ2VyKHdlYlZpZXcp
OwogICAgIGlmICghbWFuYWdlcikKICAgICAgICAgbWFuYWdlciA9IGNvbnRleHQtPnByaXYtPndl
YnNpdGVEYXRhTWFuYWdlci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNDg0MjM5MTY1YjZkZDUzNTI5MDZlNzc0
MWQxN2ZkNTA4YjQ2NWJjOS4uMmRmNDk0YTUxZDcwMDk0OGFmNTFiYjU5MzM3MDBjYWMyMTFkMjYy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlldy5jcHAKQEAgLTIxMSw2ICsyMTEsOSBAQCBlbnVtIHsKICAgICBQUk9QX01JQ1JPUEhPTkVf
Q0FQVFVSRV9TVEFURSwKICAgICBQUk9QX0RJU1BMQVlfQ0FQVFVSRV9TVEFURSwKIAorICAgIFBS
T1BfV0VCX0VYVEVOU0lPTl9NT0RFLAorICAgIFBST1BfREVGQVVMVF9DT05URU5UX1NFQ1VSSVRZ
X1BPTElDWSwKKwogICAgIE5fUFJPUEVSVElFUywKIH07CiAKQEAgLTMxNyw2ICszMjAsOSBAQCBz
dHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVE
YXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5hZ2VyOwogICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0
ZVBvbGljaWVzPiB3ZWJzaXRlUG9saWNpZXM7CiAKKyAgICBDU3RyaW5nIGRlZmF1bHRDb250ZW50
U2VjdXJpdHlQb2xpY3k7CisgICAgV2ViS2l0V2ViRXh0ZW5zaW9uTW9kZSB3ZWJFeHRlbnNpb25N
b2RlOworCiAgICAgZG91YmxlIHRleHRTY2FsZUZhY3RvcjsKIAogICAgIGJvb2wgaXNXZWJQcm9j
ZXNzUmVzcG9uc2l2ZTsKQEAgLTkwMSw2ICs5MDcsMTIgQEAgc3RhdGljIHZvaWQgd2Via2l0V2Vi
Vmlld1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFs
dWUKICAgICBjYXNlIFBST1BfRElTUExBWV9DQVBUVVJFX1NUQVRFOgogICAgICAgICB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3LCBzdGF0aWNfY2FzdDxX
ZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZT4oZ192YWx1ZV9nZXRfZW51bSh2YWx1ZSkpKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dFQl9FWFRFTlNJT05fTU9ERToKKyAgICAgICAgd2Vi
a2l0X3dlYl92aWV3X3NldF93ZWJfZXh0ZW5zaW9uX21vZGUod2ViVmlldywgc3RhdGljX2Nhc3Q8
V2ViS2l0V2ViRXh0ZW5zaW9uTW9kZT4oZ192YWx1ZV9nZXRfZW51bSh2YWx1ZSkpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RFRkFVTFRfQ09OVEVOVF9TRUNVUklUWV9QT0xJQ1k6
CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfZGVmYXVsdF9jb250ZW50X3NlY3VyaXR5X3Bv
bGljeSh3ZWJWaWV3LCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lE
KG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOwogICAgIH0KQEAgLTk4MSw2ICs5OTMsMTIgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcElkLCBHVmFsdWUqIHZhbHUKICAgICBjYXNlIFBST1BfRElTUExBWV9DQVBUVVJFX1NU
QVRFOgogICAgICAgICBnX3ZhbHVlX3NldF9lbnVtKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9XRUJfRVhURU5TSU9OX01PREU6CisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFs
dWUsIHdlYmtpdF93ZWJfdmlld19nZXRfd2ViX2V4dGVuc2lvbl9tb2RlKHdlYlZpZXcpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RFRkFVTFRfQ09OVEVOVF9TRUNVUklUWV9QT0xJ
Q1k6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dl
dF9kZWZhdWx0X2NvbnRlbnRfc2VjdXJpdHlfcG9saWN5KHdlYlZpZXcpKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZ
X0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOwogICAgIH0KQEAgLTE0NTAsNiArMTQ2OCwz
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3
Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVf
Tk9ORSwKICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSk7CiAKKyAgICAvKioKKyAgICAg
KiBXZWJLaXRXZWJWaWV3OndlYi1leHRlbnNpb24tbW9kZToKKyAgICAgKgorICAgICAqIFRoaXMg
Y29uZmlndXJlcyBAd2ViX3ZpZXcgdG8gdHJlYXQgdGhlIGNvbnRlbnQgYXMgYSBXZWJFeHRlbnNp
b24uCisgICAgICoKKyAgICAgKiBJbiBwcmFjdGljZSB0aGlzIGxpbWl0cyB0aGUgQ29udGVudC1T
ZWN1cml0eS1Qb2xpY2llcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHNldC4KKyAgICAgKgorICAg
ICAqIFNpbmNlOiAyLjM4CisgICAgICovCisgICAgc09ialByb3BlcnRpZXNbUFJPUF9XRUJfRVhU
RU5TSU9OX01PREVdID0gZ19wYXJhbV9zcGVjX2VudW0oCisgICAgICAgICJ3ZWItZXh0ZW5zaW9u
LW1vZGUiLAorICAgICAgICAiV2ViRXh0ZW5zaW9uIE1vZGUiLAorICAgICAgICBfKCJFbmFibGVz
IFdlYkV4dGVuc2lvbiBtb2RlIiksCisgICAgICAgIFdFQktJVF9UWVBFX1dFQl9FWFRFTlNJT05f
TU9ERSwKKyAgICAgICAgV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9OT05FLAorICAgICAgICBz
dGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1f
Q09OU1RSVUNUX09OTFkpKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6ZGVmYXVs
dC1jb250ZW50LXNlY3VyaXR5LXBvbGljeToKKyAgICAgKgorICAgICAqIFRoZSBkZWZhdWx0IENv
bnRlbnQtU2VjdXJpdHktUG9saWN5IHVzZWQgYnkgdGhlIHdlYnZpZXcuCisgICAgICoKKyAgICAg
KiBTaW5jZTogMi4zOAorICAgICAqLworICAgIHNPYmpQcm9wZXJ0aWVzW1BST1BfREVGQVVMVF9D
T05URU5UX1NFQ1VSSVRZX1BPTElDWV0gPSBnX3BhcmFtX3NwZWNfc3RyaW5nKAorICAgICAgICAi
ZGVmYXVsdC1jb250ZW50LXNlY3VyaXR5LXBvbGljeSIsCisgICAgICAgICJEZWZhdWx0IENvbnRl
bnQtU2VjdXJpdHktUG9saWN5IiwKKyAgICAgICAgXygiVGhlIGRlZmF1bHQgQ29udGVudC1TZWN1
cml0eS1Qb2xpY3kiKSwKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgc3RhdGljX2Nhc3Q8R1Bh
cmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZ
KSk7CisKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnRpZXMoZ09iamVjdENsYXNz
LCBOX1BST1BFUlRJRVMsIHNPYmpQcm9wZXJ0aWVzKTsKIAogICAgIC8qKgpAQCAtNTA1MSwzICs1
MTAwLDgxIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TWVkCiAKICAgICB3ZWJraXRXZWJWaWV3Q29u
ZmlndXJlTWVkaWFDYXB0dXJlKHdlYlZpZXcsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXJNZWRpYUNh
cHR1cmVLaW5kOjpEaXNwbGF5LCBzdGF0ZSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3
X3NldF93ZWJfZXh0ZW5zaW9uX21vZGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcK
KyAqIEBtb2RlOiBhICNXZWJLaXRXZWJFeHRlbnNpb25Nb2RlCisgKgorICogVGhpcyBjb25maWd1
cmVzIEB3ZWJfdmlldyB0byB0cmVhdCB0aGUgY29udGVudCBhcyBhIFdlYkV4dGVuc2lvbi4KKyAq
CisgKiBJbiBwcmFjdGljZSB0aGlzIGxpbWl0cyB0aGUgQ29udGVudC1TZWN1cml0eS1Qb2xpY2ll
cyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHNldC4KKyAqCisgKiBTaW5jZTogMi4zOAorICovCit2
b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfd2ViX2V4dGVuc2lvbl9tb2RlKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdFdlYkV4dGVuc2lvbk1vZGUgbW9kZSkKK3sKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisKKyAgICBpZiAod2ViVmlldy0+
cHJpdi0+d2ViRXh0ZW5zaW9uTW9kZSA9PSBtb2RlKQorICAgICAgICByZXR1cm47CisKKyAgICB3
ZWJWaWV3LT5wcml2LT53ZWJFeHRlbnNpb25Nb2RlID0gbW9kZTsKKyAgICBnX29iamVjdF9ub3Rp
ZnlfYnlfcHNwZWMoR19PQkpFQ1Qod2ViVmlldyksIHNPYmpQcm9wZXJ0aWVzW1BST1BfV0VCX0VY
VEVOU0lPTl9NT0RFXSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF93ZWJfZXh0
ZW5zaW9uX21vZGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXQg
dGhlIGN1cnJlbnQgI1dlYktpdFdlYkV4dGVuc2lvbk1vZGUuCisgKgorICogUmV0dXJuczogdGhl
ICNXZWJLaXRXZWJFeHRlbnNpb25Nb2RlCisgKiBTaW5jZTogMi4zOAorICovCitXZWJLaXRXZWJF
eHRlbnNpb25Nb2RlIHdlYmtpdF93ZWJfdmlld19nZXRfd2ViX2V4dGVuc2lvbl9tb2RlKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9WSUVXKHdlYlZpZXcpLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX05PTkUpOworCisg
ICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPndlYkV4dGVuc2lvbk1vZGU7Cit9CisKKy8qKgorICog
d2Via2l0X3dlYl92aWV3X3NldF9kZWZhdWx0X2NvbnRlbnRfc2VjdXJpdHlfcG9saWN5OgorICog
QHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAcG9saWN5OiAobnVsbGFibGUpOiBhIENv
bnRlbnQtU2VjdXJpdHktUG9saWN5CisgKgorICogVGhpcyBjb25maWd1cmVzIGNyZWF0ZWQgI1dl
YktpdFdlYlZpZXcncyB0byB1c2UgQHBvbGljeSBhcyBpdHMgaW5pdGlhbAorICogQ29udGVudC1T
ZWN1cml0eS1Qb2xpY3kgYXMgaWYgaXQgd2VyZSBzZXQgYnkgYW4gSFRUUCBoZWFkZXIuCisgKgor
ICogU2luY2U6IDIuMzgKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2RlZmF1bHRfY29u
dGVudF9zZWN1cml0eV9wb2xpY3koV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIq
IHBvbGljeSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CisKKyAgICBpZiAod2ViVmlldy0+cHJpdi0+ZGVmYXVsdENvbnRlbnRTZWN1cml0eVBv
bGljeSA9PSBwb2xpY3kpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYlZpZXctPnByaXYtPmRl
ZmF1bHRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBDU3RyaW5nKHBvbGljeSk7CisgICAgZ19vYmpl
Y3Rfbm90aWZ5X2J5X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBzT2JqUHJvcGVydGllc1tQUk9Q
X0RFRkFVTFRfQ09OVEVOVF9TRUNVUklUWV9QT0xJQ1ldKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2RlZmF1bHRfY29udGVudF9zZWN1cml0eV9wb2xpY3k6CisgKiBAd2ViX3Zp
ZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXRzIHRoZSBjb25maWd1cmVkIGRlZmF1bHQg
Q29udGVudC1TZWN1cml0eS1Qb2xpY3kuCisgKgorICogUmV0dXJuczogKG51bGxhYmxlKTogVGhl
IGRlZmF1bHQgcG9saWN5IG9yICVOVUxMCisgKiBTaW5jZTogMi4zOAorICovCitjb25zdCBnY2hh
ciogd2Via2l0X3dlYl92aWV3X2dldF9kZWZhdWx0X2NvbnRlbnRfc2VjdXJpdHlfcG9saWN5KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBudWxscHRyKTsKKworICAgIGlmICh3ZWJWaWV3LT5wcml2
LT5kZWZhdWx0Q29udGVudFNlY3VyaXR5UG9saWN5LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT5kZWZhdWx0Q29udGVudFNlY3Vy
aXR5UG9saWN5LmRhdGEoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggOTgyNDQ4YzU2YWIxNTFlNWIzYjgyYmI5Mjc1MzNkMWQ1
Mzk3YmJkNi4uNWNhZjQ5N2E3NDkzMjk3YjAyMzMwYzQyYjlkYTVkZTViM2U1ZWJmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTIy
MSw2ICsyMjEsMjMgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9T
VEFURV9NVVRFRCwKIH0gV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU7CiAKKy8qKgorICogV2ViS2l0
V2ViRXh0ZW5zaW9uTW9kZToKKyAqIEBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX05PTkU6IE5v
dCBmb3IgYW4gZXh0ZW5zaW9uLgorICogQFdFQktJVF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZF
U1RWMjogRm9yIGEgTWFuaWZlc3RWMiBleHRlbnNpb24uCisgKiBAV0VCS0lUX1dFQl9FWFRFTlNJ
T05fTU9ERV9NQU5JRkVTVFYzOiBGb3IgYSBNYW5pZmVzdFYzIGV4dGVuc2lvbi4KKyAqCisgKiBF
bnVtIHZhbHVlcyB1c2VkIGZvciBzZXR0aW5nIGlmIGEgI1dlYktpdFdlYlZpZXcgaXMgaW50ZW5k
ZWQgZm9yCisgKiBXZWJFeHRlbnNpb25zLgorICoKKyAqIFNpbmNlOiAyLjM4CisgKi8KK3R5cGVk
ZWYgZW51bSB7CisgICAgV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9OT05FLAorICAgIFdFQktJ
VF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZFU1RWMiwKKyAgICBXRUJLSVRfV0VCX0VYVEVOU0lP
Tl9NT0RFX01BTklGRVNUVjMsCit9IFdlYktpdFdlYkV4dGVuc2lvbk1vZGU7CisKIHN0cnVjdCBf
V2ViS2l0V2ViVmlldyB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UgcGFyZW50OwogCkBAIC02Mzks
NiArNjU2LDIwIEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5
X2NhcHR1cmVfc3RhdGUgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2Vi
X3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSAgICBzdGF0ZSk7CiAKK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X3dlYl92aWV3X3NldF93ZWJfZXh0ZW5zaW9uX21vZGUgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYkV4dGVuc2lvbk1vZGUg
ICAgICBtb2RlKTsKKworV0VCS0lUX0FQSSBXZWJLaXRXZWJFeHRlbnNpb25Nb2RlCit3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3dlYl9leHRlbnNpb25fbW9kZSAgICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dl
Yl92aWV3X3NldF9kZWZhdWx0X2NvbnRlbnRfc2VjdXJpdHlfcG9saWN5ICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICpwb2xpY3kp
OworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyKgord2Via2l0X3dlYl92aWV3X2dldF9kZWZhdWx0
X2NvbnRlbnRfc2VjdXJpdHlfcG9saWN5ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYTkwZmJhZDI5NzAzOTE4MDY0OGY2
NmYxYTQ1YTI3YTBlYWE5NWJkNy4uNTJiYzE0YzQ5MDBhNTA4YmE3YTZiZWY1NzQyZTRmMjA4ZjIw
YjJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRX
ZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJW
aWV3LmgKQEAgLTIwMiw2ICsyMDIsMjMgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfTUVE
SUFfQ0FQVFVSRV9TVEFURV9NVVRFRCwKIH0gV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU7CiAKKy8q
KgorICogV2ViS2l0V2ViRXh0ZW5zaW9uTW9kZToKKyAqIEBXRUJLSVRfV0VCX0VYVEVOU0lPTl9N
T0RFX05PTkU6IE5vdCBmb3IgYW4gZXh0ZW5zaW9uLgorICogQFdFQktJVF9XRUJfRVhURU5TSU9O
X01PREVfTUFOSUZFU1RWMjogRm9yIGEgTWFuaWZlc3RWMiBleHRlbnNpb24uCisgKiBAV0VCS0lU
X1dFQl9FWFRFTlNJT05fTU9ERV9NQU5JRkVTVFYzOiBGb3IgYSBNYW5pZmVzdFYzIGV4dGVuc2lv
bi4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIGZvciBzZXR0aW5nIGlmIGEgI1dlYktpdFdlYlZp
ZXcgaXMgaW50ZW5kZWQgZm9yCisgKiBXZWJFeHRlbnNpb25zLgorICoKKyAqIFNpbmNlOiAyLjM4
CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9OT05F
LAorICAgIFdFQktJVF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZFU1RWMiwKKyAgICBXRUJLSVRf
V0VCX0VYVEVOU0lPTl9NT0RFX01BTklGRVNUVjMsCit9IFdlYktpdFdlYkV4dGVuc2lvbk1vZGU7
CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAgICAgR09iamVjdCBwYXJlbnQ7CiAKQEAgLTYx
Niw2ICs2MzMsMjAgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3Bs
YXlfY2FwdHVyZV9zdGF0ZSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3
ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlICAgIHN0YXRlKTsKIAorV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X3dlYl9leHRlbnNpb25fbW9kZSAgICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViRXh0ZW5zaW9uTW9k
ZSAgICAgIG1vZGUpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYkV4dGVuc2lvbk1vZGUKK3dlYmtp
dF93ZWJfdmlld19nZXRfd2ViX2V4dGVuc2lvbl9tb2RlICAgICAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
d2ViX3ZpZXdfc2V0X2RlZmF1bHRfY29udGVudF9zZWN1cml0eV9wb2xpY3kgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgKnBvbGlj
eSk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2RlZmF1
bHRfY29udGVudF9zZWN1cml0eV9wb2xpY3kgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3
ZWJfdmlldyk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgyNzJjMWFkYTZhZTRlOTllNGY4NGM4MGNi
NTY0ZTcyYzAxMjMyN2IuLmQ5Nzg0YjZlNTliZTYwODFlNjJmY2RlMjEzNzY0YTJiM2M4MDQ2ZDkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMi0wNS0wOCAgUGF0cmljayBHcmlmZmlzICA8cGdyaWZmaXNAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR0xJQl0gQWRkIEFQSSB0byBzZXQgV2ViVmlldydzIENvbnRlbnQt
U2VjdXJpdHktUG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDAyMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmll
dy5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld0RlZmF1bHRDb250ZW50U2VjdXJpdHlQb2xpY3kp
OgorICAgICAgICAoYmVmb3JlQWxsKToKKwogMjAyMi0wNS0wOCAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgcmVzb2x2aW5nIHN0eWxlIGZvciBlbGVt
ZW50cyB0aGF0IG9ubHkgaW5oZXJpdCBjaGFuZ2VzIGZyb20gcGFyZW50CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3
LmNwcAppbmRleCA4Y2RkMjM5YTcxYWU5MWNhMTM0YjU5MmY3OWM5ZjAxY2I5ZDU5NDgxLi4xZTUy
YzczNWE3NWE5OTAyYTcyMTg5ZmMzNzQzZWZlM2U2MzlkNjJkIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5j
cHAKQEAgLTE2OTcsNiArMTY5NywyOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NPUlNBbGxv
d2xpc3QoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21w
aW50KHdhaXRGb3JGb29DaGFuZ2VkKCksID09LCAyMDApOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0RlZmF1bHRDb250ZW50U2VjdXJpdHlQb2xpY3koV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCit7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIFdl
YktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQ7CisKKyAgICAvLyBDcmVhdGUg
YSBuZXcgd2ViIHZpZXcgd2l0aCBhIHBvbGljeSB0aGF0IGJsb2NrcyBldmFsKCkuCisgICAgYXV0
byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJf
VklFVywKKyAgICAgICAgImRlZmF1bHQtY29udGVudC1zZWN1cml0eS1wb2xpY3kiLCAic2NyaXB0
LXNyYyAnc2VsZiciLCBudWxscHRyKSk7CisKKyAgICAvLyBFbnN1cmUgSmF2YVNjcmlwdCBzdGls
bCBmdW5jdGlvbnMuCisgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRB
bmRXYWl0VW50aWxGaW5pc2hlZCgiJ2FsbG93ZWQnIiwgJmVycm9yLm91dFB0cigpLCB3ZWJWaWV3
LmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdf
YXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVl
KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQp
KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWUuZ2V0KCksID09LCAiYWxsb3dlZCIpOworICAg
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZihqYXZhc2NyaXB0UmVzdWx0KTsKKworICAg
IC8vIFRoZW4gZW5zdXJlIGV2YWwgaXMgYmxvY2tlZC4KKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0g
dGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJldmFsKCdhbGxvd2VkJyki
LCAmZXJyb3Iub3V0UHRyKCksIHdlYlZpZXcuZ2V0KCkpOworICAgIGdfYXNzZXJ0X251bGwoamF2
YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9K
QVZBU0NSSVBUX0VSUk9SLCBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUl9TQ1JJUFRfRkFJTEVEKTsK
K30KKwogI2lmIFVTRShTT1VQMikKIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2
ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNo
VGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyKQogI2Vsc2UKQEAgLTE3NjksNiAr
MTc5Miw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVybWluYXRlV2ViUHJvY2Vz
c1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ0ZXJtaW5hdGUtd2ViLXByb2Nlc3MiLCB0ZXN0
V2ViVmlld1Rlcm1pbmF0ZVdlYlByb2Nlc3MpOwogICAgIFdlYlZpZXdUZXJtaW5hdGVXZWJQcm9j
ZXNzVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInRlcm1pbmF0ZS11bnJlc3BvbnNpdmUtd2Vi
LXByb2Nlc3MiLCB0ZXN0V2ViVmlld1Rlcm1pbmF0ZVVucmVzcG9uc2l2ZVdlYlByb2Nlc3MpOwog
ICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY29ycy1hbGxvd2xpc3QiLCB0
ZXN0V2ViVmlld0NPUlNBbGxvd2xpc3QpOworICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAiZGVmYXVsdC1jb250ZW50LXNlY3VyaXR5LXBvbGljeSIsIHRlc3RXZWJWaWV3RGVm
YXVsdENvbnRlbnRTZWN1cml0eVBvbGljeSk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459085</attachid>
            <date>2022-05-09 15:16:26 -0700</date>
            <delta_ts>2022-05-09 15:29:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240221-20220509171625.patch</filename>
            <type>text/plain</type>
            <size>14875</size>
            <attacher name="Patrick Griffis">pgriffis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzOTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3ZDMwNzUxOTYyMTk3NmUz
MzM5MzkyOTdiYzQ1YjUxZWM2YjMxZTguLjcwYTkxNGNkODNiMGUwNWM0Njg5ZWRmNWUyYWNlYmI1
YWQ3NzE5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjItMDUtMDggIFBhdHJpY2sg
R3JpZmZpcyAgPHBncmlmZmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJdIEFkZCBBUEkg
dG8gc2V0IFdlYlZpZXcncyBDb250ZW50LVNlY3VyaXR5LVBvbGljeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwMjIxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIEFQSSB0byBzZXQgdGhl
IFdlYlZpZXcncyBkZWZhdWx0IHBvbGljeSBhcyB3ZWxsIGFzIEFQSSB0bworICAgICAgICBpbmRp
Y2F0ZSB0aGF0IHRoZSBXZWJWaWV3IGlzIGluIGEgV2ViRXh0ZW5zaW9uLiBUaGlzIGNoYW5nZXMg
dGhlIGludGVybmFsCisgICAgICAgIGJlaGF2aW9yIG9mIENTUCB0byBibG9jayBzb21lIG9wdGlv
bnMuCisKKyAgICAgICAgQm90aCBvZiB0aGVzZSBhcmUgcmVxdWlyZWQgZm9yIGEgY29tcGxldGUg
V2ViRXh0ZW5zaW9uIGltcGxlbWVudGF0aW9uIGluCisgICAgICAgIGJyb3dzZXJzIHN1Y2ggYXMg
RXBpcGhhbnkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJv
cGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisKIDIwMjItMDUtMDYgIE1lZ2FuIEdhcmRuZXIgIDxt
ZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZmxha2V5IHRlc3QgYnkgdXNp
bmcgdGhlIG9sZCBBUEkgb24gb2xkIHN5c3RlbXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGExNThhMTBlNjcz
Yzc1NGIzMGYzNjc4ZTNiYWQ1NjUzYzllMmY4ZGUuLjYxNTkyOGYzZGRmODU1YTkyNGY3ZTA0MzQ1
NzM3NTZmN2ViMjFkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Q29udGVudFNlY3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGxp
YmludGwuaD4KQEAgLTE5NjAsNiArMTk2MSwyMCBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVh
dGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaQog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIodXNlckNvbnRl
bnRNYW5hZ2VyID8gd2Via2l0VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKHdlYmtpdF93ZWJfdmlld19pc19jb250
cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldykpOwogCisgICAgV2ViS2l0V2ViRXh0ZW5zaW9u
TW9kZSB3ZWJFeHRlbnNpb25Nb2RlOworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gZGVmYXVsdENv
bnRlbnRTZWN1cml0eVBvbGljeTsKKyAgICBnX29iamVjdF9nZXQod2ViVmlldywKKyAgICAgICAg
ImRlZmF1bHQtY29udGVudC1zZWN1cml0eS1wb2xpY3kiLCAmZGVmYXVsdENvbnRlbnRTZWN1cml0
eVBvbGljeS5vdXRQdHIoKSwKKyAgICAgICAgIndlYi1leHRlbnNpb24tbW9kZSIsICZ3ZWJFeHRl
bnNpb25Nb2RlLCBudWxscHRyKTsKKworICAgIGlmICh3ZWJFeHRlbnNpb25Nb2RlID09IFdFQktJ
VF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZFU1RWMykKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnNldENvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb24oV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5TW9kZUZvckV4dGVuc2lvbjo6TWFuaWZlc3RWMyk7CisgICAgZWxz
ZSBpZiAod2ViRXh0ZW5zaW9uTW9kZSA9PSBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX01BTklG
RVNUVjIpCisgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250ZW50U2VjdXJpdHlQb2xp
Y3lNb2RlRm9yRXh0ZW5zaW9uKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JF
eHRlbnNpb246Ok1hbmlmZXN0VjIpOworCisgICAgaWYgKGRlZmF1bHRDb250ZW50U2VjdXJpdHlQ
b2xpY3kuZ2V0KCkpCisgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRPdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeShTdHJpbmc6OmZyb21VVEY4KGRlZmF1bHRDb250ZW50U2VjdXJpdHlQ
b2xpY3kuZ2V0KCkpKTsKKwogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciA9
IHdlYmtpdFdlYlZpZXdHZXRXZWJzaXRlRGF0YU1hbmFnZXIod2ViVmlldyk7CiAgICAgaWYgKCFt
YW5hZ2VyKQogICAgICAgICBtYW5hZ2VyID0gY29udGV4dC0+cHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcAppbmRleCA0ODQyMzkxNjViNmRkNTM1MjkwNmU3NzQxZDE3ZmQ1MDhiNDY1
YmM5Li4yMDFhNmQ3NGNjZTU2OWJiNmI3NjE5MTFhMzM1MjAxMjc4MTk5YzNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAt
MjExLDYgKzIxMSw5IEBAIGVudW0gewogICAgIFBST1BfTUlDUk9QSE9ORV9DQVBUVVJFX1NUQVRF
LAogICAgIFBST1BfRElTUExBWV9DQVBUVVJFX1NUQVRFLAogCisgICAgUFJPUF9XRUJfRVhURU5T
SU9OX01PREUsCisgICAgUFJPUF9ERUZBVUxUX0NPTlRFTlRfU0VDVVJJVFlfUE9MSUNZLAorCiAg
ICAgTl9QUk9QRVJUSUVTLAogfTsKIApAQCAtMzE3LDYgKzMyMCw5IEBAIHN0cnVjdCBfV2ViS2l0
V2ViVmlld1ByaXZhdGUgewogICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyPiB3
ZWJzaXRlRGF0YU1hbmFnZXI7CiAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlUG9saWNpZXM+IHdl
YnNpdGVQb2xpY2llczsKIAorICAgIENTdHJpbmcgZGVmYXVsdENvbnRlbnRTZWN1cml0eVBvbGlj
eTsKKyAgICBXZWJLaXRXZWJFeHRlbnNpb25Nb2RlIHdlYkV4dGVuc2lvbk1vZGU7CisKICAgICBk
b3VibGUgdGV4dFNjYWxlRmFjdG9yOwogCiAgICAgYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZl
OwpAQCAtOTAxLDYgKzkwNywxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZQogICAgIGNhc2Ug
UFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEU6CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRf
ZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcsIHN0YXRpY19jYXN0PFdlYktpdE1lZGlhQ2Fw
dHVyZVN0YXRlPihnX3ZhbHVlX2dldF9lbnVtKHZhbHVlKSkpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfV0VCX0VYVEVOU0lPTl9NT0RFOgorICAgICAgICB3ZWJWaWV3LT5wcml2LT53
ZWJFeHRlbnNpb25Nb2RlID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2ViRXh0ZW5zaW9uTW9kZT4oZ192
YWx1ZV9nZXRfZW51bSh2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfREVG
QVVMVF9DT05URU5UX1NFQ1VSSVRZX1BPTElDWToKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+ZGVm
YXVsdENvbnRlbnRTZWN1cml0eVBvbGljeSA9IENTdHJpbmcoZ192YWx1ZV9nZXRfc3RyaW5nKHZh
bHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKICAgICB9
CkBAIC05ODEsNiArOTkzLDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQ
Uk9QX0RJU1BMQVlfQ0FQVFVSRV9TVEFURToKICAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1
ZSwgd2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUod2ViVmlldykpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0VCX0VYVEVOU0lPTl9NT0RFOgorICAgICAg
ICBnX3ZhbHVlX3NldF9lbnVtKHZhbHVlLCB3ZWJWaWV3LT5wcml2LT53ZWJFeHRlbnNpb25Nb2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RFRkFVTFRfQ09OVEVOVF9TRUNVUklU
WV9QT0xJQ1k6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2ViVmlldy0+cHJp
di0+ZGVmYXVsdENvbnRlbnRTZWN1cml0eVBvbGljeS5pc051bGwoKSA/IG51bGxwdHIgOiB3ZWJW
aWV3LT5wcml2LT5kZWZhdWx0Q29udGVudFNlY3VyaXR5UG9saWN5LmRhdGEoKSk7CisgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q
RVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0xNDUwLDYgKzE0
NjgsNDIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2Vi
Vmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgIFdFQktJVF9NRURJQV9DQVBUVVJFX1NU
QVRFX05PTkUsCiAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpOwogCisgICAgLyoqCisg
ICAgICogV2ViS2l0V2ViVmlldzp3ZWItZXh0ZW5zaW9uLW1vZGU6CisgICAgICoKKyAgICAgKiBU
aGlzIGNvbmZpZ3VyZXMgQHdlYl92aWV3IHRvIHRyZWF0IHRoZSBjb250ZW50IGFzIGEgV2ViRXh0
ZW5zaW9uLgorICAgICAqCisgICAgICogTm90ZSB0aGF0IHRoaXMgcmVmZXJzIHRvIHRoZSB3ZWIg
c3RhbmRhcmQgW1dlYkV4dGVuc2lvbnNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2Vu
LVVTL2RvY3MvTW96aWxsYS9BZGQtb25zL1dlYkV4dGVuc2lvbnMpCisgICAgICogYW5kIG5vdCBX
ZWJLaXRXZWJFeHRlbnNpb25zLgorICAgICAqIAorICAgICAqIEluIHByYWN0aWNlIHRoaXMgbGlt
aXRzIHRoZSBDb250ZW50LVNlY3VyaXR5LVBvbGljaWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUg
c2V0LiBTb21lIGRldGFpbHMgY2FuIGJlIGZvdW5kIGluCisgICAgICogW0Nocm9tZSdzIGRvY3Vt
ZW50YXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZG9jcy9leHRlbnNpb25zL212
My9pbnRyby9tdjMtbWlncmF0aW9uLyNjb250ZW50LXNlY3VyaXR5LXBvbGljeSkuCisgICAgICoK
KyAgICAgKiBTaW5jZTogMi4zOAorICAgICAqLworICAgIHNPYmpQcm9wZXJ0aWVzW1BST1BfV0VC
X0VYVEVOU0lPTl9NT0RFXSA9IGdfcGFyYW1fc3BlY19lbnVtKAorICAgICAgICAid2ViLWV4dGVu
c2lvbi1tb2RlIiwKKyAgICAgICAgIldlYkV4dGVuc2lvbiBNb2RlIiwKKyAgICAgICAgXygiRW5h
YmxlcyBXZWJFeHRlbnNpb24gbW9kZSIpLAorICAgICAgICBXRUJLSVRfVFlQRV9XRUJfRVhURU5T
SU9OX01PREUsCisgICAgICAgIFdFQktJVF9XRUJfRVhURU5TSU9OX01PREVfTk9ORSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BB
UkFNX0NPTlNUUlVDVF9PTkxZKSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OmRl
ZmF1bHQtY29udGVudC1zZWN1cml0eS1wb2xpY3k6CisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVs
dCBDb250ZW50LVNlY3VyaXR5LVBvbGljeSB1c2VkIGJ5IHRoZSB3ZWJ2aWV3IGFzIGlmIGl0IHdl
cmUgc2V0CisgICAgICogYnkgYW4gSFRUUCBoZWFkZXIuCisgICAgICoKKyAgICAgKiBTaW5jZTog
Mi4zOAorICAgICAqLworICAgIHNPYmpQcm9wZXJ0aWVzW1BST1BfREVGQVVMVF9DT05URU5UX1NF
Q1VSSVRZX1BPTElDWV0gPSBnX3BhcmFtX3NwZWNfc3RyaW5nKAorICAgICAgICAiZGVmYXVsdC1j
b250ZW50LXNlY3VyaXR5LXBvbGljeSIsCisgICAgICAgICJEZWZhdWx0IENvbnRlbnQtU2VjdXJp
dHktUG9saWN5IiwKKyAgICAgICAgXygiVGhlIGRlZmF1bHQgQ29udGVudC1TZWN1cml0eS1Qb2xp
Y3kiKSwKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+
KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7CisKICAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnRpZXMoZ09iamVjdENsYXNzLCBOX1BST1BF
UlRJRVMsIHNPYmpQcm9wZXJ0aWVzKTsKIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA5ODI0NDhjNTZhYjE1MWU1YjNi
ODJiYjkyNzUzM2QxZDUzOTdiYmQ2Li4zZmExZjk0ZTY4N2QyYWE5MTMyMmJjNzY3MWJjMWYzMzU0
YzhiNzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuaApAQCAtMjIxLDYgKzIyMSwyMyBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9N
RURJQV9DQVBUVVJFX1NUQVRFX01VVEVELAogfSBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZTsKIAor
LyoqCisgKiBXZWJLaXRXZWJFeHRlbnNpb25Nb2RlOgorICogQFdFQktJVF9XRUJfRVhURU5TSU9O
X01PREVfTk9ORTogTm90IGZvciBhbiBleHRlbnNpb24uCisgKiBAV0VCS0lUX1dFQl9FWFRFTlNJ
T05fTU9ERV9NQU5JRkVTVFYyOiBGb3IgYSBNYW5pZmVzdFYyIGV4dGVuc2lvbi4KKyAqIEBXRUJL
SVRfV0VCX0VYVEVOU0lPTl9NT0RFX01BTklGRVNUVjM6IEZvciBhIE1hbmlmZXN0VjMgZXh0ZW5z
aW9uLgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgZm9yIHNldHRpbmcgaWYgYSAjV2ViS2l0V2Vi
VmlldyBpcyBpbnRlbmRlZCBmb3IKKyAqIFdlYkV4dGVuc2lvbnMuCisgKgorICogU2luY2U6IDIu
MzgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX05P
TkUsCisgICAgV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9NQU5JRkVTVFYyLAorICAgIFdFQktJ
VF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZFU1RWMywKK30gV2ViS2l0V2ViRXh0ZW5zaW9uTW9k
ZTsKKwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJl
bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3
LmgKaW5kZXggYTkwZmJhZDI5NzAzOTE4MDY0OGY2NmYxYTQ1YTI3YTBlYWE5NWJkNy4uZmM5Mzky
YjUzMDk3ODc2YTIyMjUwOTA2OTZlMmVlNjM3NTFmM2ZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKQEAgLTIwMiw2ICsyMDIsMjMgQEAg
dHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRCwKIH0g
V2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU7CiAKKy8qKgorICogV2ViS2l0V2ViRXh0ZW5zaW9uTW9k
ZToKKyAqIEBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX05PTkU6IE5vdCBmb3IgYW4gZXh0ZW5z
aW9uLgorICogQFdFQktJVF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZFU1RWMjogRm9yIGEgTWFu
aWZlc3RWMiBleHRlbnNpb24uCisgKiBAV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9NQU5JRkVT
VFYzOiBGb3IgYSBNYW5pZmVzdFYzIGV4dGVuc2lvbi4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2Vk
IGZvciBzZXR0aW5nIGlmIGEgI1dlYktpdFdlYlZpZXcgaXMgaW50ZW5kZWQgZm9yCisgKiBXZWJF
eHRlbnNpb25zLgorICoKKyAqIFNpbmNlOiAyLjM4CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAg
V0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9OT05FLAorICAgIFdFQktJVF9XRUJfRVhURU5TSU9O
X01PREVfTUFOSUZFU1RWMiwKKyAgICBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX01BTklGRVNU
VjMsCit9IFdlYktpdFdlYkV4dGVuc2lvbk1vZGU7CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7
CiAgICAgR09iamVjdCBwYXJlbnQ7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA4MjcyYzFhZGE2YWU0ZTk5ZTRmODRjODBjYjU2NGU3MmMwMTIz
MjdiLi5kZDhhYzc4Y2VjOWI3MzM2MzcxMjM0NjAwMDkxYzZmZjFkYTlmODYwIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjItMDUtMDggIFBhdHJpY2sgR3JpZmZpcyAgPHBncmlmZmlzQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0dMSUJdIEFkZCBBUEkgdG8gc2V0IFdlYlZpZXcncyBDb250ZW50LVNlY3VyaXR5LVBv
bGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQw
MjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAodGVzdFdlYlZpZXdEZWZhdWx0Q29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAg
KGxvYWRDaGFuZ2VkKToKKyAgICAgICAgKHdhaXRVbnRpbExvYWRGaW5pc2hlZCk6CisgICAgICAg
ICh0ZXN0V2ViVmlld1dlYkV4dGVuc2lvbk1vZGUpOgorICAgICAgICAoYmVmb3JlQWxsKToKKwog
MjAyMi0wNS0wOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
QXZvaWQgcmVzb2x2aW5nIHN0eWxlIGZvciBlbGVtZW50cyB0aGF0IG9ubHkgaW5oZXJpdCBjaGFu
Z2VzIGZyb20gcGFyZW50CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCA4Y2RkMjM5YTcxYWU5MWNh
MTM0YjU5MmY3OWM5ZjAxY2I5ZDU5NDgxLi41YWZmNjExMzRkZDVjMTkyYzYzZjUxZWQyMTVhNzU2
YjA2NzBiMTVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTE2OTcsNiArMTY5Nyw4NSBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NPUlNBbGxvd2xpc3QoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21waW50KHdhaXRGb3JGb29DaGFuZ2VkKCksID09
LCAyMDApOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0RlZmF1bHRDb250ZW50U2VjdXJp
dHlQb2xpY3koV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgR1VuaXF1
ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFz
Y3JpcHRSZXN1bHQ7CisKKyAgICAvLyBTYW5pdHkgY2hlY2sgdGhhdCBldmFsIHdvcmtzIG5vcm1h
bGx5LgorICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoImV2YWwoJ1wiYWxsb3dlZFwiJykiLCAmZXJyb3Iub3V0UHRyKCkpOworICAg
IGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJy
b3IoZXJyb3IuZ2V0KCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZXZhbFZhbHVlKFdlYlZpZXdU
ZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIoZXZhbFZhbHVlLmdldCgpLCA9PSwgImFsbG93ZWQiKTsKKyAgICB3ZWJr
aXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYoamF2YXNjcmlwdFJlc3VsdCk7CisKKyAgICAvLyBD
cmVhdGUgYSBuZXcgd2ViIHZpZXcgd2l0aCBhIHBvbGljeSB0aGF0IGJsb2NrcyBldmFsKCkuCisg
ICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfVklFVywKKyAgICAgICAgImRlZmF1bHQtY29udGVudC1zZWN1cml0eS1wb2xpY3kiLCAi
c2NyaXB0LXNyYyAnc2VsZiciLCBudWxscHRyKSk7CisKKyAgICAvLyBFbnN1cmUgSmF2YVNjcmlw
dCBzdGlsbCBmdW5jdGlvbnMuCisgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiJ2FsbG93ZWQnIiwgJmVycm9yLm91dFB0cigpLCB3
ZWJWaWV3LmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwor
ICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+
IHZhbHVlKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRS
ZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWUuZ2V0KCksID09LCAiYWxsb3dlZCIp
OworICAgIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZihqYXZhc2NyaXB0UmVzdWx0KTsK
KworICAgIC8vIFRoZW4gZW5zdXJlIGV2YWwgaXMgYmxvY2tlZC4KKyAgICBqYXZhc2NyaXB0UmVz
dWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJldmFsKCdcImFs
bG93ZWRcIicpIiwgJmVycm9yLm91dFB0cigpLCB3ZWJWaWV3LmdldCgpKTsKKyAgICBnX2Fzc2Vy
dF9udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgp
LCBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUiwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1JfU0NSSVBU
X0ZBSUxFRCk7Cit9CisKK3N0YXRpYyB2b2lkIGxvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsIFdlYlZpZXdUZXN0KiB0ZXN0KQorewor
ICAgIGlmIChsb2FkRXZlbnQgIT0gV0VCS0lUX0xPQURfRklOSVNIRUQpCisgICAgICAgIHJldHVy
bjsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4obG9hZENoYW5nZWQpLCB0ZXN0KTsKKyAgICBnX21haW5fbG9v
cF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworfQorCit2b2lkIHdhaXRVbnRpbExvYWRGaW5pc2hl
ZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJWaWV3VGVzdCogdGVzdCkKK3sKKyAgICBnX3Np
Z25hbF9jb25uZWN0KHdlYlZpZXcsICJsb2FkLWNoYW5nZWQiLCBHX0NBTExCQUNLKGxvYWRDaGFu
Z2VkKSwgdGVzdCk7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworfQor
CitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dlYkV4dGVuc2lvbk1vZGUoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwor
ICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQ7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGh0bWwgPQorICAgICAgICAiPGh0bWw+IgorICAgICAgICAiICA8aGVhZD4i
CisgICAgICAgICIgICAgPHRpdGxlPnVuc2V0PC90aXRsZT4iCisgICAgICAgICIgICAgPG1ldGEg
aHR0cC1lcXVpdj1cIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5XCIgY29udGVudD1cInNjcmlwdC1z
cmMgJ3Vuc2FmZS1pbmxpbmUnO1wiPiIKKyAgICAgICAgIiAgICA8c2NyaXB0PmRvY3VtZW50LnRp
dGxlID0gJ3NldCc7PC9zY3JpcHQ+IgorICAgICAgICAiICA8L2hlYWQ+IgorICAgICAgICAiPC9o
dG1sPiI7CisKKyAgICAvLyBTYW5pdHkgY2hlY2sgdGhhdCB0aGlzIEhUTUwgd29ya3MgYXMgZXhw
ZWN0ZWQuCisgICAgdGVzdC0+bG9hZEh0bWwoaHRtbCwgbnVsbHB0cik7CisgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQudGl0bGUgPT0gJ3NldCc7Iiwg
JmVycm9yLm91dFB0cigpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQp
OworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF90cnVl
KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRSZXN1bHQp
KTsKKyAgICB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYoamF2YXNjcmlwdFJlc3VsdCk7
CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgd2ViIHZpZXcgd2l0aCBhbiBleHRlbnNpb24gbW9kZSB0
aGF0IGJsb2NrcyB0aGUgdW5zYWZlLWlubGluZSBrZXl3b3JkLgorICAgIGF1dG8gd2ViVmlldyA9
IFRlc3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCisgICAg
ICAgICJ3ZWItZXh0ZW5zaW9uLW1vZGUiLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX01BTklG
RVNUVjMsCisgICAgICAgIG51bGxwdHIpKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1s
KHdlYlZpZXcuZ2V0KCksIGh0bWwsICJhYm91dDpibGFuayIpOworICAgIHdhaXRVbnRpbExvYWRG
aW5pc2hlZCh3ZWJWaWV3LmdldCgpLCB0ZXN0KTsKKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVz
dC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC50aXRsZSA9PSAn
dW5zZXQnOyIsICZlcnJvci5vdXRQdHIoKSwgd2ViVmlldy5nZXQoKSk7CisgICAgZ19hc3NlcnRf
bm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5n
ZXQoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRv
Qm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0KSk7Cit9CisKICNpZiBVU0UoU09VUDIpCiBzdGF0aWMg
dm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNz
YWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBn
cG9pbnRlcikKICNlbHNlCkBAIC0xNzY5LDYgKzE4NDgsOCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAg
ICAgV2ViVmlld1Rlcm1pbmF0ZVdlYlByb2Nlc3NUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
dGVybWluYXRlLXdlYi1wcm9jZXNzIiwgdGVzdFdlYlZpZXdUZXJtaW5hdGVXZWJQcm9jZXNzKTsK
ICAgICBXZWJWaWV3VGVybWluYXRlV2ViUHJvY2Vzc1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJ0ZXJtaW5hdGUtdW5yZXNwb25zaXZlLXdlYi1wcm9jZXNzIiwgdGVzdFdlYlZpZXdUZXJtaW5h
dGVVbnJlc3BvbnNpdmVXZWJQcm9jZXNzKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgImNvcnMtYWxsb3dsaXN0IiwgdGVzdFdlYlZpZXdDT1JTQWxsb3dsaXN0KTsKKyAg
ICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImRlZmF1bHQtY29udGVudC1zZWN1
cml0eS1wb2xpY3kiLCB0ZXN0V2ViVmlld0RlZmF1bHRDb250ZW50U2VjdXJpdHlQb2xpY3kpOwor
ICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAid2ViLWV4dGVuc2lvbi1tb2Rl
IiwgdGVzdFdlYlZpZXdXZWJFeHRlbnNpb25Nb2RlKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459086</attachid>
            <date>2022-05-09 15:29:27 -0700</date>
            <delta_ts>2022-05-11 13:31:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240221-20220509172927.patch</filename>
            <type>text/plain</type>
            <size>17396</size>
            <attacher name="Patrick Griffis">pgriffis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzOTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3ZDMwNzUxOTYyMTk3NmUz
MzM5MzkyOTdiYzQ1YjUxZWM2YjMxZTguLjcwYTkxNGNkODNiMGUwNWM0Njg5ZWRmNWUyYWNlYmI1
YWQ3NzE5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjItMDUtMDggIFBhdHJpY2sg
R3JpZmZpcyAgPHBncmlmZmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJdIEFkZCBBUEkg
dG8gc2V0IFdlYlZpZXcncyBDb250ZW50LVNlY3VyaXR5LVBvbGljeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwMjIxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIEFQSSB0byBzZXQgdGhl
IFdlYlZpZXcncyBkZWZhdWx0IHBvbGljeSBhcyB3ZWxsIGFzIEFQSSB0bworICAgICAgICBpbmRp
Y2F0ZSB0aGF0IHRoZSBXZWJWaWV3IGlzIGluIGEgV2ViRXh0ZW5zaW9uLiBUaGlzIGNoYW5nZXMg
dGhlIGludGVybmFsCisgICAgICAgIGJlaGF2aW9yIG9mIENTUCB0byBibG9jayBzb21lIG9wdGlv
bnMuCisKKyAgICAgICAgQm90aCBvZiB0aGVzZSBhcmUgcmVxdWlyZWQgZm9yIGEgY29tcGxldGUg
V2ViRXh0ZW5zaW9uIGltcGxlbWVudGF0aW9uIGluCisgICAgICAgIGJyb3dzZXJzIHN1Y2ggYXMg
RXBpcGhhbnkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJv
cGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisKIDIwMjItMDUtMDYgIE1lZ2FuIEdhcmRuZXIgIDxt
ZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZmxha2V5IHRlc3QgYnkgdXNp
bmcgdGhlIG9sZCBBUEkgb24gb2xkIHN5c3RlbXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGExNThhMTBlNjcz
Yzc1NGIzMGYzNjc4ZTNiYWQ1NjUzYzllMmY4ZGUuLjYxNTkyOGYzZGRmODU1YTkyNGY3ZTA0MzQ1
NzM3NTZmN2ViMjFkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Q29udGVudFNlY3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPGxp
YmludGwuaD4KQEAgLTE5NjAsNiArMTk2MSwyMCBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVh
dGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaQog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIodXNlckNvbnRl
bnRNYW5hZ2VyID8gd2Via2l0VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1
cmF0aW9uLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKHdlYmtpdF93ZWJfdmlld19pc19jb250
cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldykpOwogCisgICAgV2ViS2l0V2ViRXh0ZW5zaW9u
TW9kZSB3ZWJFeHRlbnNpb25Nb2RlOworICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gZGVmYXVsdENv
bnRlbnRTZWN1cml0eVBvbGljeTsKKyAgICBnX29iamVjdF9nZXQod2ViVmlldywKKyAgICAgICAg
ImRlZmF1bHQtY29udGVudC1zZWN1cml0eS1wb2xpY3kiLCAmZGVmYXVsdENvbnRlbnRTZWN1cml0
eVBvbGljeS5vdXRQdHIoKSwKKyAgICAgICAgIndlYi1leHRlbnNpb24tbW9kZSIsICZ3ZWJFeHRl
bnNpb25Nb2RlLCBudWxscHRyKTsKKworICAgIGlmICh3ZWJFeHRlbnNpb25Nb2RlID09IFdFQktJ
VF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZFU1RWMykKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnNldENvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb24oV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5TW9kZUZvckV4dGVuc2lvbjo6TWFuaWZlc3RWMyk7CisgICAgZWxz
ZSBpZiAod2ViRXh0ZW5zaW9uTW9kZSA9PSBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX01BTklG
RVNUVjIpCisgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRDb250ZW50U2VjdXJpdHlQb2xp
Y3lNb2RlRm9yRXh0ZW5zaW9uKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeU1vZGVGb3JF
eHRlbnNpb246Ok1hbmlmZXN0VjIpOworCisgICAgaWYgKGRlZmF1bHRDb250ZW50U2VjdXJpdHlQ
b2xpY3kuZ2V0KCkpCisgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRPdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeShTdHJpbmc6OmZyb21VVEY4KGRlZmF1bHRDb250ZW50U2VjdXJpdHlQ
b2xpY3kuZ2V0KCkpKTsKKwogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciA9
IHdlYmtpdFdlYlZpZXdHZXRXZWJzaXRlRGF0YU1hbmFnZXIod2ViVmlldyk7CiAgICAgaWYgKCFt
YW5hZ2VyKQogICAgICAgICBtYW5hZ2VyID0gY29udGV4dC0+cHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcAppbmRleCA0ODQyMzkxNjViNmRkNTM1MjkwNmU3NzQxZDE3ZmQ1MDhiNDY1
YmM5Li4yMDFhNmQ3NGNjZTU2OWJiNmI3NjE5MTFhMzM1MjAxMjc4MTk5YzNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAt
MjExLDYgKzIxMSw5IEBAIGVudW0gewogICAgIFBST1BfTUlDUk9QSE9ORV9DQVBUVVJFX1NUQVRF
LAogICAgIFBST1BfRElTUExBWV9DQVBUVVJFX1NUQVRFLAogCisgICAgUFJPUF9XRUJfRVhURU5T
SU9OX01PREUsCisgICAgUFJPUF9ERUZBVUxUX0NPTlRFTlRfU0VDVVJJVFlfUE9MSUNZLAorCiAg
ICAgTl9QUk9QRVJUSUVTLAogfTsKIApAQCAtMzE3LDYgKzMyMCw5IEBAIHN0cnVjdCBfV2ViS2l0
V2ViVmlld1ByaXZhdGUgewogICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyPiB3
ZWJzaXRlRGF0YU1hbmFnZXI7CiAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlUG9saWNpZXM+IHdl
YnNpdGVQb2xpY2llczsKIAorICAgIENTdHJpbmcgZGVmYXVsdENvbnRlbnRTZWN1cml0eVBvbGlj
eTsKKyAgICBXZWJLaXRXZWJFeHRlbnNpb25Nb2RlIHdlYkV4dGVuc2lvbk1vZGU7CisKICAgICBk
b3VibGUgdGV4dFNjYWxlRmFjdG9yOwogCiAgICAgYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZl
OwpAQCAtOTAxLDYgKzkwNywxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZQogICAgIGNhc2Ug
UFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEU6CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRf
ZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcsIHN0YXRpY19jYXN0PFdlYktpdE1lZGlhQ2Fw
dHVyZVN0YXRlPihnX3ZhbHVlX2dldF9lbnVtKHZhbHVlKSkpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfV0VCX0VYVEVOU0lPTl9NT0RFOgorICAgICAgICB3ZWJWaWV3LT5wcml2LT53
ZWJFeHRlbnNpb25Nb2RlID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2ViRXh0ZW5zaW9uTW9kZT4oZ192
YWx1ZV9nZXRfZW51bSh2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfREVG
QVVMVF9DT05URU5UX1NFQ1VSSVRZX1BPTElDWToKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+ZGVm
YXVsdENvbnRlbnRTZWN1cml0eVBvbGljeSA9IENTdHJpbmcoZ192YWx1ZV9nZXRfc3RyaW5nKHZh
bHVlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKICAgICB9
CkBAIC05ODEsNiArOTkzLDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQ
Uk9QX0RJU1BMQVlfQ0FQVFVSRV9TVEFURToKICAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1
ZSwgd2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUod2ViVmlldykpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0VCX0VYVEVOU0lPTl9NT0RFOgorICAgICAg
ICBnX3ZhbHVlX3NldF9lbnVtKHZhbHVlLCB3ZWJWaWV3LT5wcml2LT53ZWJFeHRlbnNpb25Nb2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RFRkFVTFRfQ09OVEVOVF9TRUNVUklU
WV9QT0xJQ1k6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2ViVmlldy0+cHJp
di0+ZGVmYXVsdENvbnRlbnRTZWN1cml0eVBvbGljeS5pc051bGwoKSA/IG51bGxwdHIgOiB3ZWJW
aWV3LT5wcml2LT5kZWZhdWx0Q29udGVudFNlY3VyaXR5UG9saWN5LmRhdGEoKSk7CisgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q
RVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0xNDUwLDYgKzE0
NjgsNDIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2Vi
Vmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgIFdFQktJVF9NRURJQV9DQVBUVVJFX1NU
QVRFX05PTkUsCiAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpOwogCisgICAgLyoqCisg
ICAgICogV2ViS2l0V2ViVmlldzp3ZWItZXh0ZW5zaW9uLW1vZGU6CisgICAgICoKKyAgICAgKiBU
aGlzIGNvbmZpZ3VyZXMgQHdlYl92aWV3IHRvIHRyZWF0IHRoZSBjb250ZW50IGFzIGEgV2ViRXh0
ZW5zaW9uLgorICAgICAqCisgICAgICogTm90ZSB0aGF0IHRoaXMgcmVmZXJzIHRvIHRoZSB3ZWIg
c3RhbmRhcmQgW1dlYkV4dGVuc2lvbnNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2Vu
LVVTL2RvY3MvTW96aWxsYS9BZGQtb25zL1dlYkV4dGVuc2lvbnMpCisgICAgICogYW5kIG5vdCBX
ZWJLaXRXZWJFeHRlbnNpb25zLgorICAgICAqIAorICAgICAqIEluIHByYWN0aWNlIHRoaXMgbGlt
aXRzIHRoZSBDb250ZW50LVNlY3VyaXR5LVBvbGljaWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUg
c2V0LiBTb21lIGRldGFpbHMgY2FuIGJlIGZvdW5kIGluCisgICAgICogW0Nocm9tZSdzIGRvY3Vt
ZW50YXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZG9jcy9leHRlbnNpb25zL212
My9pbnRyby9tdjMtbWlncmF0aW9uLyNjb250ZW50LXNlY3VyaXR5LXBvbGljeSkuCisgICAgICoK
KyAgICAgKiBTaW5jZTogMi4zOAorICAgICAqLworICAgIHNPYmpQcm9wZXJ0aWVzW1BST1BfV0VC
X0VYVEVOU0lPTl9NT0RFXSA9IGdfcGFyYW1fc3BlY19lbnVtKAorICAgICAgICAid2ViLWV4dGVu
c2lvbi1tb2RlIiwKKyAgICAgICAgIldlYkV4dGVuc2lvbiBNb2RlIiwKKyAgICAgICAgXygiRW5h
YmxlcyBXZWJFeHRlbnNpb24gbW9kZSIpLAorICAgICAgICBXRUJLSVRfVFlQRV9XRUJfRVhURU5T
SU9OX01PREUsCisgICAgICAgIFdFQktJVF9XRUJfRVhURU5TSU9OX01PREVfTk9ORSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BB
UkFNX0NPTlNUUlVDVF9PTkxZKSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OmRl
ZmF1bHQtY29udGVudC1zZWN1cml0eS1wb2xpY3k6CisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVs
dCBDb250ZW50LVNlY3VyaXR5LVBvbGljeSB1c2VkIGJ5IHRoZSB3ZWJ2aWV3IGFzIGlmIGl0IHdl
cmUgc2V0CisgICAgICogYnkgYW4gSFRUUCBoZWFkZXIuCisgICAgICoKKyAgICAgKiBTaW5jZTog
Mi4zOAorICAgICAqLworICAgIHNPYmpQcm9wZXJ0aWVzW1BST1BfREVGQVVMVF9DT05URU5UX1NF
Q1VSSVRZX1BPTElDWV0gPSBnX3BhcmFtX3NwZWNfc3RyaW5nKAorICAgICAgICAiZGVmYXVsdC1j
b250ZW50LXNlY3VyaXR5LXBvbGljeSIsCisgICAgICAgICJEZWZhdWx0IENvbnRlbnQtU2VjdXJp
dHktUG9saWN5IiwKKyAgICAgICAgXygiVGhlIGRlZmF1bHQgQ29udGVudC1TZWN1cml0eS1Qb2xp
Y3kiKSwKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+
KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7CisKICAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnRpZXMoZ09iamVjdENsYXNzLCBOX1BST1BF
UlRJRVMsIHNPYmpQcm9wZXJ0aWVzKTsKIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA5ODI0NDhjNTZhYjE1MWU1YjNi
ODJiYjkyNzUzM2QxZDUzOTdiYmQ2Li4zZmExZjk0ZTY4N2QyYWE5MTMyMmJjNzY3MWJjMWYzMzU0
YzhiNzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuaApAQCAtMjIxLDYgKzIyMSwyMyBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9N
RURJQV9DQVBUVVJFX1NUQVRFX01VVEVELAogfSBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZTsKIAor
LyoqCisgKiBXZWJLaXRXZWJFeHRlbnNpb25Nb2RlOgorICogQFdFQktJVF9XRUJfRVhURU5TSU9O
X01PREVfTk9ORTogTm90IGZvciBhbiBleHRlbnNpb24uCisgKiBAV0VCS0lUX1dFQl9FWFRFTlNJ
T05fTU9ERV9NQU5JRkVTVFYyOiBGb3IgYSBNYW5pZmVzdFYyIGV4dGVuc2lvbi4KKyAqIEBXRUJL
SVRfV0VCX0VYVEVOU0lPTl9NT0RFX01BTklGRVNUVjM6IEZvciBhIE1hbmlmZXN0VjMgZXh0ZW5z
aW9uLgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgZm9yIHNldHRpbmcgaWYgYSAjV2ViS2l0V2Vi
VmlldyBpcyBpbnRlbmRlZCBmb3IKKyAqIFdlYkV4dGVuc2lvbnMuCisgKgorICogU2luY2U6IDIu
MzgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX05P
TkUsCisgICAgV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9NQU5JRkVTVFYyLAorICAgIFdFQktJ
VF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZFU1RWMywKK30gV2ViS2l0V2ViRXh0ZW5zaW9uTW9k
ZTsKKwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJl
bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3
LmgKaW5kZXggYTkwZmJhZDI5NzAzOTE4MDY0OGY2NmYxYTQ1YTI3YTBlYWE5NWJkNy4uZmM5Mzky
YjUzMDk3ODc2YTIyMjUwOTA2OTZlMmVlNjM3NTFmM2ZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKQEAgLTIwMiw2ICsyMDIsMjMgQEAg
dHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRCwKIH0g
V2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU7CiAKKy8qKgorICogV2ViS2l0V2ViRXh0ZW5zaW9uTW9k
ZToKKyAqIEBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX05PTkU6IE5vdCBmb3IgYW4gZXh0ZW5z
aW9uLgorICogQFdFQktJVF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZFU1RWMjogRm9yIGEgTWFu
aWZlc3RWMiBleHRlbnNpb24uCisgKiBAV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9NQU5JRkVT
VFYzOiBGb3IgYSBNYW5pZmVzdFYzIGV4dGVuc2lvbi4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2Vk
IGZvciBzZXR0aW5nIGlmIGEgI1dlYktpdFdlYlZpZXcgaXMgaW50ZW5kZWQgZm9yCisgKiBXZWJF
eHRlbnNpb25zLgorICoKKyAqIFNpbmNlOiAyLjM4CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAg
V0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9OT05FLAorICAgIFdFQktJVF9XRUJfRVhURU5TSU9O
X01PREVfTUFOSUZFU1RWMiwKKyAgICBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX01BTklGRVNU
VjMsCit9IFdlYktpdFdlYkV4dGVuc2lvbk1vZGU7CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7
CiAgICAgR09iamVjdCBwYXJlbnQ7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA4MjcyYzFhZGE2YWU0ZTk5ZTRmODRjODBjYjU2NGU3MmMwMTIz
MjdiLi4xYWFlODhlMjRiYjVmMTNiMGFjYThiZjMwNTUwMmE2OWQ1NWU5MDQ0IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMjItMDUtMDggIFBhdHJpY2sgR3JpZmZpcyAgPHBncmlmZmlzQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0dMSUJdIEFkZCBBUEkgdG8gc2V0IFdlYlZpZXcncyBDb250ZW50LVNlY3VyaXR5LVBv
bGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQw
MjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAodGVzdFdlYlZpZXdEZWZhdWx0Q29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAg
KHRlc3RXZWJWaWV3V2ViRXh0ZW5zaW9uTW9kZSk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXdUZXN0Ojpsb2FkSHRtbCk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9XZWJWaWV3VGVzdC5oOgorCiAyMDIyLTA1LTA4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCByZXNvbHZpbmcgc3R5bGUgZm9yIGVsZW1lbnRz
IHRoYXQgb25seSBpbmhlcml0IGNoYW5nZXMgZnJvbSBwYXJlbnQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3Bw
CmluZGV4IDhjZGQyMzlhNzFhZTkxY2ExMzRiNTkyZjc5YzlmMDFjYjlkNTk0ODEuLjZhMDUxODJj
YzQ2YTljNTZlOWExOTBjYTQyMDU0YzU0OTIyMWRhMTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApA
QCAtMTY5Nyw2ICsxNjk3LDcxIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q09SU0FsbG93bGlz
dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQo
d2FpdEZvckZvb0NoYW5nZWQoKSwgPT0sIDIwMCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3RGVmYXVsdENvbnRlbnRTZWN1cml0eVBvbGljeShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKK3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgV2ViS2l0
SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdDsKKworICAgIC8vIFNhbml0eSBjaGVj
ayB0aGF0IGV2YWwgd29ya3Mgbm9ybWFsbHkuCisgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3Qt
PnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZXZhbCgnXCJhbGxvd2VkXCInKSIs
ICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgR1VuaXF1ZVB0cjxj
aGFyPiBldmFsVmFsdWUoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2
YXNjcmlwdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cihldmFsVmFsdWUuZ2V0KCksID09
LCAiYWxsb3dlZCIpOworICAgIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZihqYXZhc2Ny
aXB0UmVzdWx0KTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyB3ZWIgdmlldyB3aXRoIGEgcG9saWN5
IHRoYXQgYmxvY2tzIGV2YWwoKS4KKyAgICBhdXRvIHdlYlZpZXcgPSBUZXN0OjphZG9wdFZpZXco
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAgICAgICAiZGVmYXVsdC1jb250
ZW50LXNlY3VyaXR5LXBvbGljeSIsICJzY3JpcHQtc3JjICdzZWxmJyIsIG51bGxwdHIpKTsKKwor
ICAgIC8vIEVuc3VyZSBKYXZhU2NyaXB0IHN0aWxsIGZ1bmN0aW9ucy4KKyAgICBqYXZhc2NyaXB0
UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCInYWxsb3dl
ZCciLCAmZXJyb3Iub3V0UHRyKCksIHdlYlZpZXcuZ2V0KCkpOworICAgIGdfYXNzZXJ0X25vbm51
bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkp
OworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWUoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1
ZS5nZXQoKSwgPT0sICJhbGxvd2VkIik7CisgICAgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3Vu
cmVmKGphdmFzY3JpcHRSZXN1bHQpOworCisgICAgLy8gVGhlbiBlbnN1cmUgZXZhbCBpcyBibG9j
a2VkLgorICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoImV2YWwoJ1wiYWxsb3dlZFwiJykiLCAmZXJyb3Iub3V0UHRyKCksIHdlYlZp
ZXcuZ2V0KCkpOworICAgIGdfYXNzZXJ0X251bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19h
c3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SLCBXRUJLSVRf
SkFWQVNDUklQVF9FUlJPUl9TQ1JJUFRfRkFJTEVEKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdXZWJFeHRlbnNpb25Nb2RlKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQor
eworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBXZWJLaXRKYXZhc2NyaXB0
UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0OworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBodG1sID0K
KyAgICAgICAgIjxodG1sPiIKKyAgICAgICAgIiAgPGhlYWQ+IgorICAgICAgICAiICAgIDx0aXRs
ZT51bnNldDwvdGl0bGU+IgorICAgICAgICAiICAgIDxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50
LVNlY3VyaXR5LVBvbGljeVwiIGNvbnRlbnQ9XCJzY3JpcHQtc3JjICd1bnNhZmUtaW5saW5lJztc
Ij4iCisgICAgICAgICIgICAgPHNjcmlwdD5kb2N1bWVudC50aXRsZSA9ICdzZXQnOzwvc2NyaXB0
PiIKKyAgICAgICAgIiAgPC9oZWFkPiIKKyAgICAgICAgIjwvaHRtbD4iOworCisgICAgLy8gU2Fu
aXR5IGNoZWNrIHRoYXQgdGhpcyBIVE1MIHdvcmtzIGFzIGV4cGVjdGVkLgorICAgIHRlc3QtPmxv
YWRIdG1sKGh0bWwsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OworICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGls
RmluaXNoZWQoImRvY3VtZW50LnRpdGxlID09ICdzZXQnOyIsICZlcnJvci5vdXRQdHIoKSk7Cisg
ICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19l
cnJvcihlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXZWJWaWV3VGVzdDo6amF2YXNj
cmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgd2Via2l0X2phdmFz
Y3JpcHRfcmVzdWx0X3VucmVmKGphdmFzY3JpcHRSZXN1bHQpOworCisgICAgLy8gQ3JlYXRlIGEg
bmV3IHdlYiB2aWV3IHdpdGggYW4gZXh0ZW5zaW9uIG1vZGUgdGhhdCBibG9ja3MgdGhlIHVuc2Fm
ZS1pbmxpbmUga2V5d29yZC4KKyAgICBhdXRvIHdlYlZpZXcgPSBUZXN0OjphZG9wdFZpZXcoZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAgICAgICAid2ViLWV4dGVuc2lvbi1t
b2RlIiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9NQU5JRkVTVFYzLAorICAgICAgICBudWxs
cHRyKSk7CisgICAgdGVzdC0+bG9hZEh0bWwoaHRtbCwgbnVsbHB0ciwgd2ViVmlldy5nZXQoKSk7
CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKHdlYlZpZXcuZ2V0KCkpOworICAgIGph
dmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQo
ImRvY3VtZW50LnRpdGxlID09ICd1bnNldCc7IiwgJmVycm9yLm91dFB0cigpLCB3ZWJWaWV3Lmdl
dCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNz
ZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdlYlZpZXdUZXN0
OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRSZXN1bHQpKTsKK30KKwogI2lm
IFVTRShTT1VQMikKIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZl
ciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBT
b3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyKQogI2Vsc2UKQEAgLTE3NjksNiArMTgzNCw4IEBA
IHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVybWluYXRlV2ViUHJvY2Vzc1Rlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJ0ZXJtaW5hdGUtd2ViLXByb2Nlc3MiLCB0ZXN0V2ViVmlld1Rl
cm1pbmF0ZVdlYlByb2Nlc3MpOwogICAgIFdlYlZpZXdUZXJtaW5hdGVXZWJQcm9jZXNzVGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgInRlcm1pbmF0ZS11bnJlc3BvbnNpdmUtd2ViLXByb2Nlc3Mi
LCB0ZXN0V2ViVmlld1Rlcm1pbmF0ZVVucmVzcG9uc2l2ZVdlYlByb2Nlc3MpOwogICAgIFdlYlZp
ZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY29ycy1hbGxvd2xpc3QiLCB0ZXN0V2ViVmll
d0NPUlNBbGxvd2xpc3QpOworICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
ZGVmYXVsdC1jb250ZW50LXNlY3VyaXR5LXBvbGljeSIsIHRlc3RXZWJWaWV3RGVmYXVsdENvbnRl
bnRTZWN1cml0eVBvbGljeSk7CisgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJ3ZWItZXh0ZW5zaW9uLW1vZGUiLCB0ZXN0V2ViVmlld1dlYkV4dGVuc2lvbk1vZGUpOwogfQog
CiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1dlYlZpZXdUZXN0LmNwcAppbmRleCBhMjFhMDA0MmI0Yzc1NTliYzcyNWMxZmFjMDY1
OGU0MDNjMTkxY2FmLi5hNTNmODQ0NTQ3ZDRiZTE0ODUwY2IwZWNlNGVhNmQzZWI2YjNiNjFiIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVz
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rl
c3QuY3BwCkBAIC04NSwxNSArODUsMTkgQEAgdm9pZCBXZWJWaWV3VGVzdDo6bG9hZFVSSShjb25z
dCBjaGFyKiB1cmkpCiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfdmlld19nZXRfdXJp
KG1fd2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5kYXRhKCkpOwogfQogCi12b2lkIFdlYlZpZXdU
ZXN0Ojpsb2FkSHRtbChjb25zdCBjaGFyKiBodG1sLCBjb25zdCBjaGFyKiBiYXNlVVJJKQordm9p
ZCBXZWJWaWV3VGVzdDo6bG9hZEh0bWwoY29uc3QgY2hhciogaHRtbCwgY29uc3QgY2hhciogYmFz
ZVVSSSwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBpZiAoIWJhc2VVUkkpCiAgICAg
ICAgIG1fYWN0aXZlVVJJID0gImFib3V0OmJsYW5rIjsKICAgICBlbHNlCiAgICAgICAgIG1fYWN0
aXZlVVJJID0gYmFzZVVSSTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKG1fd2ViVmll
dywgaHRtbCwgYmFzZVVSSSk7Ci0gICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNf
bG9hZGluZyhtX3dlYlZpZXcpKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl92aWV3
X2dldF91cmkobV93ZWJWaWV3KSwgPT0sIG1fYWN0aXZlVVJJLmRhdGEoKSk7CisKKyAgICBpZiAo
IXdlYlZpZXcpCisgICAgICAgIHdlYlZpZXcgPSBtX3dlYlZpZXc7CisKKyAgICB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF9odG1sKHdlYlZpZXcsIGh0bWwsIGJhc2VVUkkpOworICAgIGdfYXNzZXJ0X3Ry
dWUod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpOworICAgIGdfYXNzZXJ0X2Nt
cHN0cih3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSwgPT0sIG1fYWN0aXZlVVJJLmRh
dGEoKSk7CiB9CiAKIHZvaWQgV2ViVmlld1Rlc3Q6OmxvYWRQbGFpblRleHQoY29uc3QgY2hhciog
cGxhaW5UZXh0KQpAQCAtMTk1LDkgKzE5OSw5IEBAIHN0YXRpYyB2b2lkIGxvYWRDaGFuZ2VkKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsIFdlYlZpCiAg
ICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKIH0KIAotdm9pZCBXZWJWaWV3
VGVzdDo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKCkKK3ZvaWQgV2ViVmlld1Rlc3Q6OndhaXRVbnRp
bExvYWRGaW5pc2hlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV93ZWJWaWV3LCAibG9hZC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhsb2FkQ2hhbmdlZCks
IHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldyA/IHdlYlZpZXcgOiBtX3dlYlZp
ZXcsICJsb2FkLWNoYW5nZWQiLCBHX0NBTExCQUNLKGxvYWRDaGFuZ2VkKSwgdGhpcyk7CiAgICAg
Z19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAppbmRleCAwMmQ1ODQ5NWQ2ZDc3YmZi
M2E3M2JhMjhiNmE1ZDkzMGM0NmZmMmRhLi5kMTZlYzdlZWRkNjc5NTM4NDNjNGQ5YWI0NmQwNDM4
YzIxZDgyNGFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9XZWJWaWV3VGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYlZpZXdUZXN0LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGxhdGZv
cm1EZXN0cm95KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFVSSShjb25zdCBjaGFyKiB1cmkp
OwotICAgIHZpcnR1YWwgdm9pZCBsb2FkSHRtbChjb25zdCBjaGFyKiBodG1sLCBjb25zdCBjaGFy
KiBiYXNlVVJJKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEh0bWwoY29uc3QgY2hhciogaHRtbCwg
Y29uc3QgY2hhciogYmFzZVVSSSwgV2ViS2l0V2ViVmlldyogPSBudWxscHRyKTsKICAgICB2aXJ0
dWFsIHZvaWQgbG9hZFBsYWluVGV4dChjb25zdCBjaGFyKiBwbGFpblRleHQpOwogICAgIHZpcnR1
YWwgdm9pZCBsb2FkUmVxdWVzdChXZWJLaXRVUklSZXF1ZXN0Kik7CiAgICAgdmlydHVhbCB2b2lk
IGxvYWRCeXRlcyhHQnl0ZXMqLCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciogZW5j
b2RpbmcsIGNvbnN0IGNoYXIqIGJhc2VVUkkpOwpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBxdWl0TWFpbkxvb3AoKTsKICAgICB2b2lkIHF1aXRNYWluTG9vcEFmdGVyUHJvY2Vz
c2luZ1BlbmRpbmdFdmVudHMoKTsKICAgICB2b2lkIHdhaXQoZG91YmxlIHNlY29uZHMpOwotICAg
IHZvaWQgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdm9pZCB3YWl0VW50aWxMb2FkRmlu
aXNoZWQoV2ViS2l0V2ViVmlldyogPSBudWxscHRyKTsKICAgICB2b2lkIHdhaXRVbnRpbFRpdGxl
Q2hhbmdlZFRvKGNvbnN0IGNoYXIqIGV4cGVjdGVkVGl0bGUpOwogICAgIHZvaWQgd2FpdFVudGls
VGl0bGVDaGFuZ2VkKCk7CiAgICAgdm9pZCB3YWl0VW50aWxJc1dlYlByb2Nlc3NSZXNwb25zaXZl
Q2hhbmdlZCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459180</attachid>
            <date>2022-05-11 13:31:45 -0700</date>
            <delta_ts>2022-05-12 10:39:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240221-20220511153144.patch</filename>
            <type>text/plain</type>
            <size>19575</size>
            <attacher name="Patrick Griffis">pgriffis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzOTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3ZDMwNzUxOTYyMTk3NmUz
MzM5MzkyOTdiYzQ1YjUxZWM2YjMxZTguLjNhM2I3Njk2OTdmMjhkNTViNTIyMGM5NjljNDBhMDg1
NDc5M2EwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjItMDUtMDggIFBhdHJpY2sg
R3JpZmZpcyAgPHBncmlmZmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJdIEFkZCBBUEkg
dG8gc2V0IFdlYlZpZXcncyBDb250ZW50LVNlY3VyaXR5LVBvbGljeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwMjIxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIEFQSSB0byBzZXQgdGhl
IFdlYlZpZXcncyBkZWZhdWx0IHBvbGljeSBhcyB3ZWxsIGFzIEFQSSB0bworICAgICAgICBpbmRp
Y2F0ZSB0aGF0IHRoZSBXZWJWaWV3IGlzIGluIGEgV2ViRXh0ZW5zaW9uLiBUaGlzIGNoYW5nZXMg
dGhlIGludGVybmFsCisgICAgICAgIGJlaGF2aW9yIG9mIENTUCB0byBibG9jayBzb21lIG9wdGlv
bnMuCisKKyAgICAgICAgQm90aCBvZiB0aGVzZSBhcmUgcmVxdWlyZWQgZm9yIGEgY29tcGxldGUg
V2ViRXh0ZW5zaW9uIGltcGxlbWVudGF0aW9uIGluCisgICAgICAgIGJyb3dzZXJzIHN1Y2ggYXMg
RXBpcGhhbnkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJv
cGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X2dldF93ZWJfZXh0ZW5zaW9uX21vZGUpOgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X2dldF9kZWZhdWx0X2NvbnRlbnRfc2VjdXJpdHlfcG9saWN5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0V2ViVmlldy5oOgorCiAyMDIyLTA1LTA2ICBNZWdhbiBHYXJkbmVyICA8
bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGZsYWtleSB0ZXN0IGJ5IHVz
aW5nIHRoZSBvbGQgQVBJIG9uIG9sZCBzeXN0ZW1zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBhMTU4YTEwZTY3
M2M3NTRiMzBmMzY3OGUzYmFkNTY1M2M5ZTJmOGRlLi41OTAzMzA3ZTkzZTBjZDkzZTA4ODVjZjM1
NDNhOGU4Y2IzMzY5MmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUg
IldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDxs
aWJpbnRsLmg+CkBAIC0xOTYwLDYgKzE5NjEsMTcgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3Jl
YXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmkK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKHVzZXJDb250
ZW50TWFuYWdlciA/IHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlcikgOiBudWxscHRyKTsKICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbih3ZWJraXRfd2ViX3ZpZXdfaXNfY29u
dHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcpKTsKIAorICAgIFdlYktpdFdlYkV4dGVuc2lv
bk1vZGUgd2ViRXh0ZW5zaW9uTW9kZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2ViX2V4dGVuc2lv
bl9tb2RlKHdlYlZpZXcpOworICAgIGNvbnN0IGNoYXIqIGRlZmF1bHRDb250ZW50U2VjdXJpdHlQ
b2xpY3kgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2RlZmF1bHRfY29udGVudF9zZWN1cml0eV9wb2xp
Y3kod2ViVmlldyk7CisKKyAgICBpZiAod2ViRXh0ZW5zaW9uTW9kZSA9PSBXRUJLSVRfV0VCX0VY
VEVOU0lPTl9NT0RFX01BTklGRVNUVjMpCisgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRD
b250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb246Ok1hbmlmZXN0VjMpOworICAgIGVsc2UgaWYgKHdl
YkV4dGVuc2lvbk1vZGUgPT0gV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9NQU5JRkVTVFYyKQor
ICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0Q29udGVudFNlY3VyaXR5UG9saWN5TW9kZUZv
ckV4dGVuc2lvbihXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9u
OjpNYW5pZmVzdFYyKTsKKworICAgIGlmIChkZWZhdWx0Q29udGVudFNlY3VyaXR5UG9saWN5KQor
ICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3koU3RyaW5nOjpmcm9tVVRGOChkZWZhdWx0Q29udGVudFNlY3VyaXR5UG9saWN5KSk7CisKICAg
ICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIgPSB3ZWJraXRXZWJWaWV3R2V0V2Vi
c2l0ZURhdGFNYW5hZ2VyKHdlYlZpZXcpOwogICAgIGlmICghbWFuYWdlcikKICAgICAgICAgbWFu
YWdlciA9IGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXgg
NDg0MjM5MTY1YjZkZDUzNTI5MDZlNzc0MWQxN2ZkNTA4YjQ2NWJjOS4uMDI3MGI4N2VjOWZkZTQy
NTU4MzQ1ZDAxYWRhNWE2YTM3NmMyMDg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIxMSw2ICsyMTEsOSBAQCBlbnVt
IHsKICAgICBQUk9QX01JQ1JPUEhPTkVfQ0FQVFVSRV9TVEFURSwKICAgICBQUk9QX0RJU1BMQVlf
Q0FQVFVSRV9TVEFURSwKIAorICAgIFBST1BfV0VCX0VYVEVOU0lPTl9NT0RFLAorICAgIFBST1Bf
REVGQVVMVF9DT05URU5UX1NFQ1VSSVRZX1BPTElDWSwKKwogICAgIE5fUFJPUEVSVElFUywKIH07
CiAKQEAgLTMxNyw2ICszMjAsOSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAg
ICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5hZ2VyOwog
ICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZVBvbGljaWVzPiB3ZWJzaXRlUG9saWNpZXM7CiAKKyAg
ICBDU3RyaW5nIGRlZmF1bHRDb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgV2ViS2l0V2ViRXh0
ZW5zaW9uTW9kZSB3ZWJFeHRlbnNpb25Nb2RlOworCiAgICAgZG91YmxlIHRleHRTY2FsZUZhY3Rv
cjsKIAogICAgIGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZTsKQEAgLTkwMSw2ICs5MDcsMTIg
QEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUKICAgICBjYXNlIFBST1BfRElTUExBWV9DQVBUVVJF
X1NUQVRFOgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0
ZSh3ZWJWaWV3LCBzdGF0aWNfY2FzdDxXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZT4oZ192YWx1ZV9n
ZXRfZW51bSh2YWx1ZSkpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dFQl9FWFRF
TlNJT05fTU9ERToKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+d2ViRXh0ZW5zaW9uTW9kZSA9IHN0
YXRpY19jYXN0PFdlYktpdFdlYkV4dGVuc2lvbk1vZGU+KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RFRkFVTFRfQ09OVEVOVF9TRUNVUklU
WV9QT0xJQ1k6CisgICAgICAgIHdlYlZpZXctPnByaXYtPmRlZmF1bHRDb250ZW50U2VjdXJpdHlQ
b2xpY3kgPSBDU3RyaW5nKGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOworICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtOTgxLDYgKzk5MywxMiBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAgIGNhc2UgUFJPUF9ESVNQTEFZX0NBUFRVUkVf
U1RBVEU6CiAgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJfdmlld19n
ZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX1dFQl9FWFRFTlNJT05fTU9ERToKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2
YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJfZXh0ZW5zaW9uX21vZGUod2ViVmlldykpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfREVGQVVMVF9DT05URU5UX1NFQ1VSSVRZX1BP
TElDWToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2RlZmF1bHRfY29udGVudF9zZWN1cml0eV9wb2xpY3kod2ViVmlldykpOworICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtMTQ1MCw2ICsxNDY4
LDQyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZp
ZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFU
RV9OT05FLAogICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKTsKIAorICAgIC8qKgorICAg
ICAqIFdlYktpdFdlYlZpZXc6d2ViLWV4dGVuc2lvbi1tb2RlOgorICAgICAqCisgICAgICogVGhp
cyBjb25maWd1cmVzIEB3ZWJfdmlldyB0byB0cmVhdCB0aGUgY29udGVudCBhcyBhIFdlYkV4dGVu
c2lvbi4KKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB0aGlzIHJlZmVycyB0byB0aGUgd2ViIHN0
YW5kYXJkIFtXZWJFeHRlbnNpb25zXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1V
Uy9kb2NzL01vemlsbGEvQWRkLW9ucy9XZWJFeHRlbnNpb25zKQorICAgICAqIGFuZCBub3QgV2Vi
S2l0V2ViRXh0ZW5zaW9ucy4KKyAgICAgKiAKKyAgICAgKiBJbiBwcmFjdGljZSB0aGlzIGxpbWl0
cyB0aGUgQ29udGVudC1TZWN1cml0eS1Qb2xpY2llcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHNl
dC4gU29tZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbgorICAgICAqIFtDaHJvbWUncyBkb2N1bWVu
dGF0aW9uXShodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2RvY3MvZXh0ZW5zaW9ucy9tdjMv
aW50cm8vbXYzLW1pZ3JhdGlvbi8jY29udGVudC1zZWN1cml0eS1wb2xpY3kpLgorICAgICAqCisg
ICAgICogU2luY2U6IDIuMzgKKyAgICAgKi8KKyAgICBzT2JqUHJvcGVydGllc1tQUk9QX1dFQl9F
WFRFTlNJT05fTU9ERV0gPSBnX3BhcmFtX3NwZWNfZW51bSgKKyAgICAgICAgIndlYi1leHRlbnNp
b24tbW9kZSIsCisgICAgICAgICJXZWJFeHRlbnNpb24gTW9kZSIsCisgICAgICAgIF8oIkVuYWJs
ZXMgV2ViRXh0ZW5zaW9uIG1vZGUiKSwKKyAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lP
Tl9NT0RFLAorICAgICAgICBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX05PTkUsCisgICAgICAg
IHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJB
TV9DT05TVFJVQ1RfT05MWSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzpkZWZh
dWx0LWNvbnRlbnQtc2VjdXJpdHktcG9saWN5OgorICAgICAqCisgICAgICogVGhlIGRlZmF1bHQg
Q29udGVudC1TZWN1cml0eS1Qb2xpY3kgdXNlZCBieSB0aGUgd2VidmlldyBhcyBpZiBpdCB3ZXJl
IHNldAorICAgICAqIGJ5IGFuIEhUVFAgaGVhZGVyLgorICAgICAqCisgICAgICogU2luY2U6IDIu
MzgKKyAgICAgKi8KKyAgICBzT2JqUHJvcGVydGllc1tQUk9QX0RFRkFVTFRfQ09OVEVOVF9TRUNV
UklUWV9QT0xJQ1ldID0gZ19wYXJhbV9zcGVjX3N0cmluZygKKyAgICAgICAgImRlZmF1bHQtY29u
dGVudC1zZWN1cml0eS1wb2xpY3kiLAorICAgICAgICAiRGVmYXVsdCBDb250ZW50LVNlY3VyaXR5
LVBvbGljeSIsCisgICAgICAgIF8oIlRoZSBkZWZhdWx0IENvbnRlbnQtU2VjdXJpdHktUG9saWN5
IiksCisgICAgICAgIG51bGxwdHIsCisgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihX
RUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworCiAgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0aWVzKGdPYmplY3RDbGFzcywgTl9QUk9QRVJU
SUVTLCBzT2JqUHJvcGVydGllcyk7CiAKICAgICAvKioKQEAgLTUwNTEsMyArNTEwNSwzOSBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdE1lZAogCiAgICAgd2Via2l0V2ViVmlld0NvbmZpZ3VyZU1lZGlh
Q2FwdHVyZSh3ZWJWaWV3LCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyTWVkaWFDYXB0dXJlS2luZDo6
RGlzcGxheSwgc3RhdGUpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfd2ViX2V4
dGVuc2lvbl9tb2RlOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogR2V0
IHRoZSB2aWV3J3MgI1dlYktpdFdlYkV4dGVuc2lvbk1vZGUuCisgKgorICogUmV0dXJuczogdGhl
ICNXZWJLaXRXZWJFeHRlbnNpb25Nb2RlCisgKiBTaW5jZTogMi4zOAorICovCitXZWJLaXRXZWJF
eHRlbnNpb25Nb2RlIHdlYmtpdF93ZWJfdmlld19nZXRfd2ViX2V4dGVuc2lvbl9tb2RlKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9WSUVXKHdlYlZpZXcpLCBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX05PTkUpOworCisg
ICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPndlYkV4dGVuc2lvbk1vZGU7Cit9CisKKy8qKgorICog
d2Via2l0X3dlYl92aWV3X2dldF9kZWZhdWx0X2NvbnRlbnRfc2VjdXJpdHlfcG9saWN5OgorICog
QHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogR2V0cyB0aGUgY29uZmlndXJlZCBk
ZWZhdWx0IENvbnRlbnQtU2VjdXJpdHktUG9saWN5LgorICoKKyAqIFJldHVybnM6IChudWxsYWJs
ZSk6IFRoZSBkZWZhdWx0IHBvbGljeSBvciAlTlVMTAorICogU2luY2U6IDIuMzgKKyAqLworY29u
c3QgZ2NoYXIqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2RlZmF1bHRfY29udGVudF9zZWN1cml0eV9w
b2xpY3koV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIG51bGxwdHIpOworCisgICAgaWYgKHdlYlZp
ZXctPnByaXYtPmRlZmF1bHRDb250ZW50U2VjdXJpdHlQb2xpY3kuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmRlZmF1bHRDb250
ZW50U2VjdXJpdHlQb2xpY3kuZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA5ODI0NDhjNTZhYjE1MWU1YjNiODJiYjky
NzUzM2QxZDUzOTdiYmQ2Li44YWQxZDFkZjk0ZGQyZmUyY2UxN2IzMmQ0OWY1NGNiNWE4ZGJjMTE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
aApAQCAtMjIxLDYgKzIyMSwyMyBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9NRURJQV9D
QVBUVVJFX1NUQVRFX01VVEVELAogfSBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZTsKIAorLyoqCisg
KiBXZWJLaXRXZWJFeHRlbnNpb25Nb2RlOgorICogQFdFQktJVF9XRUJfRVhURU5TSU9OX01PREVf
Tk9ORTogTm90IGZvciBhbiBleHRlbnNpb24uCisgKiBAV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9E
RV9NQU5JRkVTVFYyOiBGb3IgYSBNYW5pZmVzdFYyIGV4dGVuc2lvbi4KKyAqIEBXRUJLSVRfV0VC
X0VYVEVOU0lPTl9NT0RFX01BTklGRVNUVjM6IEZvciBhIE1hbmlmZXN0VjMgZXh0ZW5zaW9uLgor
ICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgZm9yIHNldHRpbmcgaWYgYSAjV2ViS2l0V2ViVmlldyBp
cyBpbnRlbmRlZCBmb3IKKyAqIFdlYkV4dGVuc2lvbnMuCisgKgorICogU2luY2U6IDIuMzgKKyAq
LwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX05PTkUsCisg
ICAgV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9NQU5JRkVTVFYyLAorICAgIFdFQktJVF9XRUJf
RVhURU5TSU9OX01PREVfTUFOSUZFU1RWMywKK30gV2ViS2l0V2ViRXh0ZW5zaW9uTW9kZTsKKwog
c3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJlbnQ7CiAK
QEAgLTYzOSw2ICs2NTYsMTIgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfc2V0
X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlICAgIHN0YXRlKTsKIAorV0VCS0lU
X0FQSSBXZWJLaXRXZWJFeHRlbnNpb25Nb2RlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYl9leHRl
bnNpb25fbW9kZSAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJf
dmlldyk7CisKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rl
ZmF1bHRfY29udGVudF9zZWN1cml0eV9wb2xpY3kgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICp3ZWJfdmlldyk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAppbmRleCBhOTBmYmFkMjk3MDM5MTgw
NjQ4ZjY2ZjFhNDVhMjdhMGVhYTk1YmQ3Li42MmNhMTVkZWMzNTkzYmQ3NjM2MDBlZDU3MWVkNDYx
YmMxY2M0MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFdlYlZpZXcuaApAQCAtMjAyLDYgKzIwMiwyMyBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJ
VF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVELAogfSBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZTsK
IAorLyoqCisgKiBXZWJLaXRXZWJFeHRlbnNpb25Nb2RlOgorICogQFdFQktJVF9XRUJfRVhURU5T
SU9OX01PREVfTk9ORTogTm90IGZvciBhbiBleHRlbnNpb24uCisgKiBAV0VCS0lUX1dFQl9FWFRF
TlNJT05fTU9ERV9NQU5JRkVTVFYyOiBGb3IgYSBNYW5pZmVzdFYyIGV4dGVuc2lvbi4KKyAqIEBX
RUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX01BTklGRVNUVjM6IEZvciBhIE1hbmlmZXN0VjMgZXh0
ZW5zaW9uLgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgZm9yIHNldHRpbmcgaWYgYSAjV2ViS2l0
V2ViVmlldyBpcyBpbnRlbmRlZCBmb3IKKyAqIFdlYkV4dGVuc2lvbnMuCisgKgorICogU2luY2U6
IDIuMzgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RF
X05PTkUsCisgICAgV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9NQU5JRkVTVFYyLAorICAgIFdF
QktJVF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZFU1RWMywKK30gV2ViS2l0V2ViRXh0ZW5zaW9u
TW9kZTsKKwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBHT2JqZWN0IHBhcmVudDsKIApA
QCAtNjE2LDYgKzYzMywxMiBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfdmlld19zZXRf
ZGlzcGxheV9jYXB0dXJlX3N0YXRlICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgICAgc3RhdGUpOwogCitXRUJLSVRf
QVBJIFdlYktpdFdlYkV4dGVuc2lvbk1vZGUKK3dlYmtpdF93ZWJfdmlld19nZXRfd2ViX2V4dGVu
c2lvbl9tb2RlICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92
aWV3KTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfdmlld19nZXRfZGVm
YXVsdF9jb250ZW50X3NlY3VyaXR5X3BvbGljeSAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODI3MmMxYWRhNmFlNGU5OWU0Zjg0Yzgw
Y2I1NjRlNzJjMDEyMzI3Yi4uMWFhZTg4ZTI0YmI1ZjEzYjBhY2E4YmYzMDU1MDJhNjlkNTVlOTA0
NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDIyLTA1LTA4ICBQYXRyaWNrIEdyaWZmaXMgIDxwZ3JpZmZpc0BpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHTElCXSBBZGQgQVBJIHRvIHNldCBXZWJWaWV3J3MgQ29udGVu
dC1TZWN1cml0eS1Qb2xpY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0MDIyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJW
aWV3LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3RGVmYXVsdENvbnRlbnRTZWN1cml0eVBvbGlj
eSk6CisgICAgICAgICh0ZXN0V2ViVmlld1dlYkV4dGVuc2lvbk1vZGUpOgorICAgICAgICAoYmVm
b3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3
VGVzdC5jcHA6CisgICAgICAgIChXZWJWaWV3VGVzdDo6bG9hZEh0bWwpOgorICAgICAgICAoV2Vi
Vmlld1Rlc3Q6OndhaXRVbnRpbExvYWRGaW5pc2hlZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaDoKKwogMjAyMi0wNS0wOCAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgcmVzb2x2aW5nIHN0eWxl
IGZvciBlbGVtZW50cyB0aGF0IG9ubHkgaW5oZXJpdCBjaGFuZ2VzIGZyb20gcGFyZW50CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdl
YlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcAppbmRleCA4Y2RkMjM5YTcxYWU5MWNhMTM0YjU5MmY3OWM5ZjAxY2I5ZDU5
NDgxLi42YTA1MTgyY2M0NmE5YzU2ZTlhMTkwY2E0MjA1NGM1NDkyMjFkYTE1IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
V2ViVmlldy5jcHAKQEAgLTE2OTcsNiArMTY5Nyw3MSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d0NPUlNBbGxvd2xpc3QoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19h
c3NlcnRfY21waW50KHdhaXRGb3JGb29DaGFuZ2VkKCksID09LCAyMDApOwogfQogCitzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld0RlZmF1bHRDb250ZW50U2VjdXJpdHlQb2xpY3koV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQ7CisKKyAgICAv
LyBTYW5pdHkgY2hlY2sgdGhhdCBldmFsIHdvcmtzIG5vcm1hbGx5LgorICAgIGphdmFzY3JpcHRS
ZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImV2YWwoJ1wi
YWxsb3dlZFwiJykiLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2
YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAg
IEdVbmlxdWVQdHI8Y2hhcj4gZXZhbFZhbHVlKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0
VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIoZXZhbFZh
bHVlLmdldCgpLCA9PSwgImFsbG93ZWQiKTsKKyAgICB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
dW5yZWYoamF2YXNjcmlwdFJlc3VsdCk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgd2ViIHZpZXcg
d2l0aCBhIHBvbGljeSB0aGF0IGJsb2NrcyBldmFsKCkuCisgICAgYXV0byB3ZWJWaWV3ID0gVGVz
dDo6YWRvcHRWaWV3KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKKyAgICAgICAg
ImRlZmF1bHQtY29udGVudC1zZWN1cml0eS1wb2xpY3kiLCAic2NyaXB0LXNyYyAnc2VsZiciLCBu
dWxscHRyKSk7CisKKyAgICAvLyBFbnN1cmUgSmF2YVNjcmlwdCBzdGlsbCBmdW5jdGlvbnMuCisg
ICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZCgiJ2FsbG93ZWQnIiwgJmVycm9yLm91dFB0cigpLCB3ZWJWaWV3LmdldCgpKTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9y
KGVycm9yLmdldCgpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlKFdlYlZpZXdUZXN0Ojpq
YXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBnX2Fzc2Vy
dF9jbXBzdHIodmFsdWUuZ2V0KCksID09LCAiYWxsb3dlZCIpOworICAgIHdlYmtpdF9qYXZhc2Ny
aXB0X3Jlc3VsdF91bnJlZihqYXZhc2NyaXB0UmVzdWx0KTsKKworICAgIC8vIFRoZW4gZW5zdXJl
IGV2YWwgaXMgYmxvY2tlZC4KKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJldmFsKCdcImFsbG93ZWRcIicpIiwgJmVycm9yLm91
dFB0cigpLCB3ZWJWaWV3LmdldCgpKTsKKyAgICBnX2Fzc2VydF9udWxsKGphdmFzY3JpcHRSZXN1
bHQpOworICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfSkFWQVNDUklQVF9F
UlJPUiwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1JfU0NSSVBUX0ZBSUxFRCk7Cit9CisKK3N0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3V2ViRXh0ZW5zaW9uTW9kZShXZWJWaWV3VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKK3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdDsKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogaHRtbCA9CisgICAgICAgICI8aHRtbD4iCisgICAgICAgICIgIDxoZWFkPiIKKyAgICAg
ICAgIiAgICA8dGl0bGU+dW5zZXQ8L3RpdGxlPiIKKyAgICAgICAgIiAgICA8bWV0YSBodHRwLWVx
dWl2PVwiQ29udGVudC1TZWN1cml0eS1Qb2xpY3lcIiBjb250ZW50PVwic2NyaXB0LXNyYyAndW5z
YWZlLWlubGluZSc7XCI+IgorICAgICAgICAiICAgIDxzY3JpcHQ+ZG9jdW1lbnQudGl0bGUgPSAn
c2V0Jzs8L3NjcmlwdD4iCisgICAgICAgICIgIDwvaGVhZD4iCisgICAgICAgICI8L2h0bWw+IjsK
KworICAgIC8vIFNhbml0eSBjaGVjayB0aGF0IHRoaXMgSFRNTCB3b3JrcyBhcyBleHBlY3RlZC4K
KyAgICB0ZXN0LT5sb2FkSHRtbChodG1sLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxM
b2FkRmluaXNoZWQoKTsKKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC50aXRsZSA9PSAnc2V0JzsiLCAmZXJyb3Iu
b3V0UHRyKCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAg
Z19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X3RydWUoV2ViVmll
d1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2YXNjcmlwdFJlc3VsdCkpOworICAg
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZihqYXZhc2NyaXB0UmVzdWx0KTsKKworICAg
IC8vIENyZWF0ZSBhIG5ldyB3ZWIgdmlldyB3aXRoIGFuIGV4dGVuc2lvbiBtb2RlIHRoYXQgYmxv
Y2tzIHRoZSB1bnNhZmUtaW5saW5lIGtleXdvcmQuCisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6
YWRvcHRWaWV3KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKKyAgICAgICAgIndl
Yi1leHRlbnNpb24tbW9kZSIsIFdFQktJVF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZFU1RWMywK
KyAgICAgICAgbnVsbHB0cikpOworICAgIHRlc3QtPmxvYWRIdG1sKGh0bWwsIG51bGxwdHIsIHdl
YlZpZXcuZ2V0KCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCh3ZWJWaWV3Lmdl
dCgpKTsKKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKCJkb2N1bWVudC50aXRsZSA9PSAndW5zZXQnOyIsICZlcnJvci5vdXRQdHIo
KSwgd2ViVmlldy5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfdHJ1
ZShXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0
KSk7Cit9CisKICNpZiBVU0UoU09VUDIpCiBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3Vw
U2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRoLCBH
SGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKICNlbHNlCkBAIC0xNzY5
LDYgKzE4MzQsOCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgV2ViVmlld1Rlcm1pbmF0ZVdlYlBy
b2Nlc3NUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAidGVybWluYXRlLXdlYi1wcm9jZXNzIiwg
dGVzdFdlYlZpZXdUZXJtaW5hdGVXZWJQcm9jZXNzKTsKICAgICBXZWJWaWV3VGVybWluYXRlV2Vi
UHJvY2Vzc1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ0ZXJtaW5hdGUtdW5yZXNwb25zaXZl
LXdlYi1wcm9jZXNzIiwgdGVzdFdlYlZpZXdUZXJtaW5hdGVVbnJlc3BvbnNpdmVXZWJQcm9jZXNz
KTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImNvcnMtYWxsb3dsaXN0
IiwgdGVzdFdlYlZpZXdDT1JTQWxsb3dsaXN0KTsKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgImRlZmF1bHQtY29udGVudC1zZWN1cml0eS1wb2xpY3kiLCB0ZXN0V2ViVmll
d0RlZmF1bHRDb250ZW50U2VjdXJpdHlQb2xpY3kpOworICAgIFdlYlZpZXdUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAid2ViLWV4dGVuc2lvbi1tb2RlIiwgdGVzdFdlYlZpZXdXZWJFeHRlbnNp
b25Nb2RlKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKaW5kZXggYTIxYTAwNDJiNGM3NTU5
YmM3MjVjMWZhYzA2NThlNDAzYzE5MWNhZi4uYTUzZjg0NDU0N2Q0YmUxNDg1MGNiMGVjZTRlYTZk
M2ViNmIzYjYxYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYlZpZXdUZXN0LmNwcApAQCAtODUsMTUgKzg1LDE5IEBAIHZvaWQgV2ViVmlld1Rlc3Q6
OmxvYWRVUkkoY29uc3QgY2hhciogdXJpKQogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3VyaShtX3dlYlZpZXcpLCA9PSwgbV9hY3RpdmVVUkkuZGF0YSgpKTsKIH0KIAot
dm9pZCBXZWJWaWV3VGVzdDo6bG9hZEh0bWwoY29uc3QgY2hhciogaHRtbCwgY29uc3QgY2hhciog
YmFzZVVSSSkKK3ZvaWQgV2ViVmlld1Rlc3Q6OmxvYWRIdG1sKGNvbnN0IGNoYXIqIGh0bWwsIGNv
bnN0IGNoYXIqIGJhc2VVUkksIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgaWYgKCFi
YXNlVVJJKQogICAgICAgICBtX2FjdGl2ZVVSSSA9ICJhYm91dDpibGFuayI7CiAgICAgZWxzZQog
ICAgICAgICBtX2FjdGl2ZVVSSSA9IGJhc2VVUkk7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRf
aHRtbChtX3dlYlZpZXcsIGh0bWwsIGJhc2VVUkkpOwotICAgIGdfYXNzZXJ0X3RydWUod2Via2l0
X3dlYl92aWV3X2lzX2xvYWRpbmcobV93ZWJWaWV3KSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF93ZWJfdmlld19nZXRfdXJpKG1fd2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5kYXRhKCkp
OworCisgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICB3ZWJWaWV3ID0gbV93ZWJWaWV3OworCisg
ICAgd2Via2l0X3dlYl92aWV3X2xvYWRfaHRtbCh3ZWJWaWV3LCBodG1sLCBiYXNlVVJJKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKKyAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldyksID09LCBt
X2FjdGl2ZVVSSS5kYXRhKCkpOwogfQogCiB2b2lkIFdlYlZpZXdUZXN0Ojpsb2FkUGxhaW5UZXh0
KGNvbnN0IGNoYXIqIHBsYWluVGV4dCkKQEAgLTE5NSw5ICsxOTksOSBAQCBzdGF0aWMgdm9pZCBs
b2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2
ZW50LCBXZWJWaQogICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CiB9CiAK
LXZvaWQgV2ViVmlld1Rlc3Q6OndhaXRVbnRpbExvYWRGaW5pc2hlZCgpCit2b2lkIFdlYlZpZXdU
ZXN0Ojp3YWl0VW50aWxMb2FkRmluaXNoZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAg
ICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImxvYWQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0so
bG9hZENoYW5nZWQpLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcgPyB3ZWJW
aWV3IDogbV93ZWJWaWV3LCAibG9hZC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhsb2FkQ2hhbmdlZCks
IHRoaXMpOwogICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKIH0KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKaW5kZXggMDJk
NTg0OTVkNmQ3N2JmYjNhNzNiYTI4YjZhNWQ5MzBjNDZmZjJkYS4uZDE2ZWM3ZWVkZDY3OTUzODQz
YzRkOWFiNDZkMDQzOGMyMWQ4MjRhYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGxvYWRVUkkoY29u
c3QgY2hhciogdXJpKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZEh0bWwoY29uc3QgY2hhciogaHRt
bCwgY29uc3QgY2hhciogYmFzZVVSSSk7CisgICAgdmlydHVhbCB2b2lkIGxvYWRIdG1sKGNvbnN0
IGNoYXIqIGh0bWwsIGNvbnN0IGNoYXIqIGJhc2VVUkksIFdlYktpdFdlYlZpZXcqID0gbnVsbHB0
cik7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRQbGFpblRleHQoY29uc3QgY2hhciogcGxhaW5UZXh0
KTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlcXVlc3QoV2ViS2l0VVJJUmVxdWVzdCopOwogICAg
IHZpcnR1YWwgdm9pZCBsb2FkQnl0ZXMoR0J5dGVzKiwgY29uc3QgY2hhciogbWltZVR5cGUsIGNv
bnN0IGNoYXIqIGVuY29kaW5nLCBjb25zdCBjaGFyKiBiYXNlVVJJKTsKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogICAgIHZvaWQgcXVpdE1haW5Mb29wKCk7CiAgICAgdm9pZCBxdWl0TWFpbkxv
b3BBZnRlclByb2Nlc3NpbmdQZW5kaW5nRXZlbnRzKCk7CiAgICAgdm9pZCB3YWl0KGRvdWJsZSBz
ZWNvbmRzKTsKLSAgICB2b2lkIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHZvaWQgd2Fp
dFVudGlsTG9hZEZpbmlzaGVkKFdlYktpdFdlYlZpZXcqID0gbnVsbHB0cik7CiAgICAgdm9pZCB3
YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhjb25zdCBjaGFyKiBleHBlY3RlZFRpdGxlKTsKICAgICB2
b2lkIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZCgpOwogICAgIHZvaWQgd2FpdFVudGlsSXNXZWJQcm9j
ZXNzUmVzcG9uc2l2ZUNoYW5nZWQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459239</attachid>
            <date>2022-05-12 10:39:48 -0700</date>
            <delta_ts>2022-05-24 10:14:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240221-20220512123947.patch</filename>
            <type>text/plain</type>
            <size>19583</size>
            <attacher name="Patrick Griffis">pgriffis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzOTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg3ZDMwNzUxOTYyMTk3NmUz
MzM5MzkyOTdiYzQ1YjUxZWM2YjMxZTguLjNhM2I3Njk2OTdmMjhkNTViNTIyMGM5NjljNDBhMDg1
NDc5M2EwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjItMDUtMDggIFBhdHJpY2sg
R3JpZmZpcyAgPHBncmlmZmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJdIEFkZCBBUEkg
dG8gc2V0IFdlYlZpZXcncyBDb250ZW50LVNlY3VyaXR5LVBvbGljeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwMjIxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIEFQSSB0byBzZXQgdGhl
IFdlYlZpZXcncyBkZWZhdWx0IHBvbGljeSBhcyB3ZWxsIGFzIEFQSSB0bworICAgICAgICBpbmRp
Y2F0ZSB0aGF0IHRoZSBXZWJWaWV3IGlzIGluIGEgV2ViRXh0ZW5zaW9uLiBUaGlzIGNoYW5nZXMg
dGhlIGludGVybmFsCisgICAgICAgIGJlaGF2aW9yIG9mIENTUCB0byBibG9jayBzb21lIG9wdGlv
bnMuCisKKyAgICAgICAgQm90aCBvZiB0aGVzZSBhcmUgcmVxdWlyZWQgZm9yIGEgY29tcGxldGUg
V2ViRXh0ZW5zaW9uIGltcGxlbWVudGF0aW9uIGluCisgICAgICAgIGJyb3dzZXJzIHN1Y2ggYXMg
RXBpcGhhbnkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJv
cGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X2dldF93ZWJfZXh0ZW5zaW9uX21vZGUpOgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X2dldF9kZWZhdWx0X2NvbnRlbnRfc2VjdXJpdHlfcG9saWN5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0V2ViVmlldy5oOgorCiAyMDIyLTA1LTA2ICBNZWdhbiBHYXJkbmVyICA8
bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGZsYWtleSB0ZXN0IGJ5IHVz
aW5nIHRoZSBvbGQgQVBJIG9uIG9sZCBzeXN0ZW1zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBhMTU4YTEwZTY3
M2M3NTRiMzBmMzY3OGUzYmFkNTY1M2M5ZTJmOGRlLi41OTAzMzA3ZTkzZTBjZDkzZTA4ODVjZjM1
NDNhOGU4Y2IzMzY5MmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUg
IldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDxs
aWJpbnRsLmg+CkBAIC0xOTYwLDYgKzE5NjEsMTcgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3Jl
YXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmkK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKHVzZXJDb250
ZW50TWFuYWdlciA/IHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlcikgOiBudWxscHRyKTsKICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbih3ZWJraXRfd2ViX3ZpZXdfaXNfY29u
dHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcpKTsKIAorICAgIFdlYktpdFdlYkV4dGVuc2lv
bk1vZGUgd2ViRXh0ZW5zaW9uTW9kZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2ViX2V4dGVuc2lv
bl9tb2RlKHdlYlZpZXcpOworICAgIGNvbnN0IGNoYXIqIGRlZmF1bHRDb250ZW50U2VjdXJpdHlQ
b2xpY3kgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2RlZmF1bHRfY29udGVudF9zZWN1cml0eV9wb2xp
Y3kod2ViVmlldyk7CisKKyAgICBpZiAod2ViRXh0ZW5zaW9uTW9kZSA9PSBXRUJLSVRfV0VCX0VY
VEVOU0lPTl9NT0RFX01BTklGRVNUVjMpCisgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRD
b250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9uKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeU1vZGVGb3JFeHRlbnNpb246Ok1hbmlmZXN0VjMpOworICAgIGVsc2UgaWYgKHdl
YkV4dGVuc2lvbk1vZGUgPT0gV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9NQU5JRkVTVFYyKQor
ICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0Q29udGVudFNlY3VyaXR5UG9saWN5TW9kZUZv
ckV4dGVuc2lvbihXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lNb2RlRm9yRXh0ZW5zaW9u
OjpNYW5pZmVzdFYyKTsKKworICAgIGlmIChkZWZhdWx0Q29udGVudFNlY3VyaXR5UG9saWN5KQor
ICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3koU3RyaW5nOjpmcm9tVVRGOChkZWZhdWx0Q29udGVudFNlY3VyaXR5UG9saWN5KSk7CisKICAg
ICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIgPSB3ZWJraXRXZWJWaWV3R2V0V2Vi
c2l0ZURhdGFNYW5hZ2VyKHdlYlZpZXcpOwogICAgIGlmICghbWFuYWdlcikKICAgICAgICAgbWFu
YWdlciA9IGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXgg
NDg0MjM5MTY1YjZkZDUzNTI5MDZlNzc0MWQxN2ZkNTA4YjQ2NWJjOS4uYTJmNjRkMzRjZTBhNWM0
YzFlY2U0ZmJmZTg4MTBmY2ZmZWNkMDM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIxMSw2ICsyMTEsOSBAQCBlbnVt
IHsKICAgICBQUk9QX01JQ1JPUEhPTkVfQ0FQVFVSRV9TVEFURSwKICAgICBQUk9QX0RJU1BMQVlf
Q0FQVFVSRV9TVEFURSwKIAorICAgIFBST1BfV0VCX0VYVEVOU0lPTl9NT0RFLAorICAgIFBST1Bf
REVGQVVMVF9DT05URU5UX1NFQ1VSSVRZX1BPTElDWSwKKwogICAgIE5fUFJPUEVSVElFUywKIH07
CiAKQEAgLTMxNyw2ICszMjAsOSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAg
ICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5hZ2VyOwog
ICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZVBvbGljaWVzPiB3ZWJzaXRlUG9saWNpZXM7CiAKKyAg
ICBDU3RyaW5nIGRlZmF1bHRDb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgV2ViS2l0V2ViRXh0
ZW5zaW9uTW9kZSB3ZWJFeHRlbnNpb25Nb2RlOworCiAgICAgZG91YmxlIHRleHRTY2FsZUZhY3Rv
cjsKIAogICAgIGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZTsKQEAgLTkwMSw2ICs5MDcsMTIg
QEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUKICAgICBjYXNlIFBST1BfRElTUExBWV9DQVBUVVJF
X1NUQVRFOgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0
ZSh3ZWJWaWV3LCBzdGF0aWNfY2FzdDxXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZT4oZ192YWx1ZV9n
ZXRfZW51bSh2YWx1ZSkpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dFQl9FWFRF
TlNJT05fTU9ERToKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+d2ViRXh0ZW5zaW9uTW9kZSA9IHN0
YXRpY19jYXN0PFdlYktpdFdlYkV4dGVuc2lvbk1vZGU+KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RFRkFVTFRfQ09OVEVOVF9TRUNVUklU
WV9QT0xJQ1k6CisgICAgICAgIHdlYlZpZXctPnByaXYtPmRlZmF1bHRDb250ZW50U2VjdXJpdHlQ
b2xpY3kgPSBDU3RyaW5nKGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpOworICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtOTgxLDYgKzk5MywxMiBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAgIGNhc2UgUFJPUF9ESVNQTEFZX0NBUFRVUkVf
U1RBVEU6CiAgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJfdmlld19n
ZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX1dFQl9FWFRFTlNJT05fTU9ERToKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2
YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF93ZWJfZXh0ZW5zaW9uX21vZGUod2ViVmlldykpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfREVGQVVMVF9DT05URU5UX1NFQ1VSSVRZX1BP
TElDWToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2RlZmF1bHRfY29udGVudF9zZWN1cml0eV9wb2xpY3kod2ViVmlldykpOworICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtMTQ1MCw2ICsxNDY4
LDQyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZp
ZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFU
RV9OT05FLAogICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKTsKIAorICAgIC8qKgorICAg
ICAqIFdlYktpdFdlYlZpZXc6d2ViLWV4dGVuc2lvbi1tb2RlOgorICAgICAqCisgICAgICogVGhp
cyBjb25maWd1cmVzIEB3ZWJfdmlldyB0byB0cmVhdCB0aGUgY29udGVudCBhcyBhIFdlYkV4dGVu
c2lvbi4KKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB0aGlzIHJlZmVycyB0byB0aGUgd2ViIHN0
YW5kYXJkIFtXZWJFeHRlbnNpb25zXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1V
Uy9kb2NzL01vemlsbGEvQWRkLW9ucy9XZWJFeHRlbnNpb25zKQorICAgICAqIGFuZCBub3QgV2Vi
S2l0V2ViRXh0ZW5zaW9ucy4KKyAgICAgKiAKKyAgICAgKiBJbiBwcmFjdGljZSB0aGlzIGxpbWl0
cyB0aGUgQ29udGVudC1TZWN1cml0eS1Qb2xpY2llcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHNl
dC4gU29tZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbgorICAgICAqIFtDaHJvbWUncyBkb2N1bWVu
dGF0aW9uXShodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2RvY3MvZXh0ZW5zaW9ucy9tdjMv
aW50cm8vbXYzLW1pZ3JhdGlvbi8jY29udGVudC1zZWN1cml0eS1wb2xpY3kpLgorICAgICAqCisg
ICAgICogU2luY2U6IDIuMzgKKyAgICAgKi8KKyAgICBzT2JqUHJvcGVydGllc1tQUk9QX1dFQl9F
WFRFTlNJT05fTU9ERV0gPSBnX3BhcmFtX3NwZWNfZW51bSgKKyAgICAgICAgIndlYi1leHRlbnNp
b24tbW9kZSIsCisgICAgICAgICJXZWJFeHRlbnNpb24gTW9kZSIsCisgICAgICAgIF8oIkVuYWJs
ZXMgV2ViRXh0ZW5zaW9uIG1vZGUiKSwKKyAgICAgICAgV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lP
Tl9NT0RFLAorICAgICAgICBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX05PTkUsCisgICAgICAg
IHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJB
TV9DT05TVFJVQ1RfT05MWSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzpkZWZh
dWx0LWNvbnRlbnQtc2VjdXJpdHktcG9saWN5OgorICAgICAqCisgICAgICogVGhlIGRlZmF1bHQg
Q29udGVudC1TZWN1cml0eS1Qb2xpY3kgdXNlZCBieSB0aGUgd2VidmlldyBhcyBpZiBpdCB3ZXJl
IHNldAorICAgICAqIGJ5IGFuIEhUVFAgaGVhZGVyLgorICAgICAqCisgICAgICogU2luY2U6IDIu
MzgKKyAgICAgKi8KKyAgICBzT2JqUHJvcGVydGllc1tQUk9QX0RFRkFVTFRfQ09OVEVOVF9TRUNV
UklUWV9QT0xJQ1ldID0gZ19wYXJhbV9zcGVjX3N0cmluZygKKyAgICAgICAgImRlZmF1bHQtY29u
dGVudC1zZWN1cml0eS1wb2xpY3kiLAorICAgICAgICAiRGVmYXVsdCBDb250ZW50LVNlY3VyaXR5
LVBvbGljeSIsCisgICAgICAgIF8oIlRoZSBkZWZhdWx0IENvbnRlbnQtU2VjdXJpdHktUG9saWN5
IiksCisgICAgICAgIG51bGxwdHIsCisgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihX
RUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworCiAgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0aWVzKGdPYmplY3RDbGFzcywgTl9QUk9QRVJU
SUVTLCBzT2JqUHJvcGVydGllcyk7CiAKICAgICAvKioKQEAgLTUwNTEsMyArNTEwNSw0MSBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdE1lZAogCiAgICAgd2Via2l0V2ViVmlld0NvbmZpZ3VyZU1lZGlh
Q2FwdHVyZSh3ZWJWaWV3LCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyTWVkaWFDYXB0dXJlS2luZDo6
RGlzcGxheSwgc3RhdGUpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfd2ViX2V4
dGVuc2lvbl9tb2RlOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogR2V0
IHRoZSB2aWV3J3MgI1dlYktpdFdlYkV4dGVuc2lvbk1vZGUuCisgKgorICogUmV0dXJuczogdGhl
ICNXZWJLaXRXZWJFeHRlbnNpb25Nb2RlCisgKgorICogU2luY2U6IDIuMzgKKyAqLworV2ViS2l0
V2ViRXh0ZW5zaW9uTW9kZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYl9leHRlbnNpb25fbW9kZShX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9OT05FKTsK
KworICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT53ZWJFeHRlbnNpb25Nb2RlOworfQorCisvKioK
KyAqIHdlYmtpdF93ZWJfdmlld19nZXRfZGVmYXVsdF9jb250ZW50X3NlY3VyaXR5X3BvbGljeToK
KyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldHMgdGhlIGNvbmZpZ3Vy
ZWQgZGVmYXVsdCBDb250ZW50LVNlY3VyaXR5LVBvbGljeS4KKyAqCisgKiBSZXR1cm5zOiAobnVs
bGFibGUpOiBUaGUgZGVmYXVsdCBwb2xpY3kgb3IgJU5VTEwKKyAqCisgKiBTaW5jZTogMi4zOAor
ICovCitjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfdmlld19nZXRfZGVmYXVsdF9jb250ZW50X3Nl
Y3VyaXR5X3BvbGljeShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0cik7CisKKyAgICBp
ZiAod2ViVmlldy0+cHJpdi0+ZGVmYXVsdENvbnRlbnRTZWN1cml0eVBvbGljeS5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+ZGVm
YXVsdENvbnRlbnRTZWN1cml0eVBvbGljeS5kYXRhKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IDk4MjQ0OGM1NmFiMTUxZTVi
M2I4MmJiOTI3NTMzZDFkNTM5N2JiZDYuLjhhZDFkMWRmOTRkZDJmZTJjZTE3YjMyZDQ5ZjU0Y2I1
YThkYmMxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5oCkBAIC0yMjEsNiArMjIxLDIzIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lU
X01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQsCiB9IFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlOwog
CisvKioKKyAqIFdlYktpdFdlYkV4dGVuc2lvbk1vZGU6CisgKiBAV0VCS0lUX1dFQl9FWFRFTlNJ
T05fTU9ERV9OT05FOiBOb3QgZm9yIGFuIGV4dGVuc2lvbi4KKyAqIEBXRUJLSVRfV0VCX0VYVEVO
U0lPTl9NT0RFX01BTklGRVNUVjI6IEZvciBhIE1hbmlmZXN0VjIgZXh0ZW5zaW9uLgorICogQFdF
QktJVF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZFU1RWMzogRm9yIGEgTWFuaWZlc3RWMyBleHRl
bnNpb24uCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCBmb3Igc2V0dGluZyBpZiBhICNXZWJLaXRX
ZWJWaWV3IGlzIGludGVuZGVkIGZvcgorICogV2ViRXh0ZW5zaW9ucy4KKyAqCisgKiBTaW5jZTog
Mi4zOAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9XRUJfRVhURU5TSU9OX01PREVf
Tk9ORSwKKyAgICBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX01BTklGRVNUVjIsCisgICAgV0VC
S0lUX1dFQl9FWFRFTlNJT05fTU9ERV9NQU5JRkVTVFYzLAorfSBXZWJLaXRXZWJFeHRlbnNpb25N
b2RlOworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIFdlYktpdFdlYlZpZXdCYXNlIHBh
cmVudDsKIApAQCAtNjM5LDYgKzY1NiwxMiBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJf
dmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgICAgc3RhdGUpOwog
CitXRUJLSVRfQVBJIFdlYktpdFdlYkV4dGVuc2lvbk1vZGUKK3dlYmtpdF93ZWJfdmlld19nZXRf
d2ViX2V4dGVuc2lvbl9tb2RlICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3KTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfdmll
d19nZXRfZGVmYXVsdF9jb250ZW50X3NlY3VyaXR5X3BvbGljeSAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgKndlYl92aWV3KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IGE5MGZiYWQy
OTcwMzkxODA2NDhmNjZmMWE0NWEyN2EwZWFhOTViZDcuLjYyY2ExNWRlYzM1OTNiZDc2MzYwMGVk
NTcxZWQ0NjFiYzFjYzQyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2ViVmlldy5oCkBAIC0yMDIsNiArMjAyLDIzIEBAIHR5cGVkZWYgZW51bSB7CiAg
ICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQsCiB9IFdlYktpdE1lZGlhQ2FwdHVy
ZVN0YXRlOwogCisvKioKKyAqIFdlYktpdFdlYkV4dGVuc2lvbk1vZGU6CisgKiBAV0VCS0lUX1dF
Ql9FWFRFTlNJT05fTU9ERV9OT05FOiBOb3QgZm9yIGFuIGV4dGVuc2lvbi4KKyAqIEBXRUJLSVRf
V0VCX0VYVEVOU0lPTl9NT0RFX01BTklGRVNUVjI6IEZvciBhIE1hbmlmZXN0VjIgZXh0ZW5zaW9u
LgorICogQFdFQktJVF9XRUJfRVhURU5TSU9OX01PREVfTUFOSUZFU1RWMzogRm9yIGEgTWFuaWZl
c3RWMyBleHRlbnNpb24uCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCBmb3Igc2V0dGluZyBpZiBh
ICNXZWJLaXRXZWJWaWV3IGlzIGludGVuZGVkIGZvcgorICogV2ViRXh0ZW5zaW9ucy4KKyAqCisg
KiBTaW5jZTogMi4zOAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9XRUJfRVhURU5T
SU9OX01PREVfTk9ORSwKKyAgICBXRUJLSVRfV0VCX0VYVEVOU0lPTl9NT0RFX01BTklGRVNUVjIs
CisgICAgV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9NQU5JRkVTVFYzLAorfSBXZWJLaXRXZWJF
eHRlbnNpb25Nb2RlOworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIEdPYmplY3QgcGFy
ZW50OwogCkBAIC02MTYsNiArNjMzLDEyIEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92
aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSAgICBzdGF0ZSk7CiAK
K1dFQktJVF9BUEkgV2ViS2l0V2ViRXh0ZW5zaW9uTW9kZQord2Via2l0X3dlYl92aWV3X2dldF93
ZWJfZXh0ZW5zaW9uX21vZGUgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyKgord2Via2l0X3dlYl92aWV3
X2dldF9kZWZhdWx0X2NvbnRlbnRfc2VjdXJpdHlfcG9saWN5ICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAqd2ViX3ZpZXcpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4MjcyYzFhZGE2YWU0ZTk5
ZTRmODRjODBjYjU2NGU3MmMwMTIzMjdiLi4xYWFlODhlMjRiYjVmMTNiMGFjYThiZjMwNTUwMmE2
OWQ1NWU5MDQ0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDUtMDggIFBhdHJpY2sgR3JpZmZpcyAgPHBncmlm
ZmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJdIEFkZCBBUEkgdG8gc2V0IFdlYlZpZXcn
cyBDb250ZW50LVNlY3VyaXR5LVBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjQwMjIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdl
YktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdEZWZhdWx0Q29udGVudFNlY3Vy
aXR5UG9saWN5KToKKyAgICAgICAgKHRlc3RXZWJWaWV3V2ViRXh0ZW5zaW9uTW9kZSk6CisgICAg
ICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpsb2FkSHRtbCk6CisgICAg
ICAgIChXZWJWaWV3VGVzdDo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oOgorCiAyMDIyLTA1LTA4ICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCByZXNvbHZp
bmcgc3R5bGUgZm9yIGVsZW1lbnRzIHRoYXQgb25seSBpbmhlcml0IGNoYW5nZXMgZnJvbSBwYXJl
bnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDhjZGQyMzlhNzFhZTkxY2ExMzRiNTkyZjc5Yzlm
MDFjYjlkNTk0ODEuLjZhMDUxODJjYzQ2YTljNTZlOWExOTBjYTQyMDU0YzU0OTIyMWRhMTUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTY5Nyw2ICsxNjk3LDcxIEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3Q09SU0FsbG93bGlzdChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
ICAgICBnX2Fzc2VydF9jbXBpbnQod2FpdEZvckZvb0NoYW5nZWQoKSwgPT0sIDIwMCk7CiB9CiAK
K3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RGVmYXVsdENvbnRlbnRTZWN1cml0eVBvbGljeShXZWJW
aWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJv
cj4gZXJyb3I7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdDsK
KworICAgIC8vIFNhbml0eSBjaGVjayB0aGF0IGV2YWwgd29ya3Mgbm9ybWFsbHkuCisgICAgamF2
YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgi
ZXZhbCgnXCJhbGxvd2VkXCInKSIsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnRfbm9u
bnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQo
KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBldmFsVmFsdWUoV2ViVmlld1Rlc3Q6OmphdmFzY3Jp
cHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2NtcHN0
cihldmFsVmFsdWUuZ2V0KCksID09LCAiYWxsb3dlZCIpOworICAgIHdlYmtpdF9qYXZhc2NyaXB0
X3Jlc3VsdF91bnJlZihqYXZhc2NyaXB0UmVzdWx0KTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyB3
ZWIgdmlldyB3aXRoIGEgcG9saWN5IHRoYXQgYmxvY2tzIGV2YWwoKS4KKyAgICBhdXRvIHdlYlZp
ZXcgPSBUZXN0OjphZG9wdFZpZXcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAor
ICAgICAgICAiZGVmYXVsdC1jb250ZW50LXNlY3VyaXR5LXBvbGljeSIsICJzY3JpcHQtc3JjICdz
ZWxmJyIsIG51bGxwdHIpKTsKKworICAgIC8vIEVuc3VyZSBKYXZhU2NyaXB0IHN0aWxsIGZ1bmN0
aW9ucy4KKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKCInYWxsb3dlZCciLCAmZXJyb3Iub3V0UHRyKCksIHdlYlZpZXcuZ2V0KCkp
OworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRf
bm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWUoV2ViVmll
d1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAg
IGdfYXNzZXJ0X2NtcHN0cih2YWx1ZS5nZXQoKSwgPT0sICJhbGxvd2VkIik7CisgICAgd2Via2l0
X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKGphdmFzY3JpcHRSZXN1bHQpOworCisgICAgLy8gVGhl
biBlbnN1cmUgZXZhbCBpcyBibG9ja2VkLgorICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5y
dW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImV2YWwoJ1wiYWxsb3dlZFwiJykiLCAm
ZXJyb3Iub3V0UHRyKCksIHdlYlZpZXcuZ2V0KCkpOworICAgIGdfYXNzZXJ0X251bGwoamF2YXNj
cmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9KQVZB
U0NSSVBUX0VSUk9SLCBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUl9TQ1JJUFRfRkFJTEVEKTsKK30K
Kworc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdXZWJFeHRlbnNpb25Nb2RlKFdlYlZpZXdUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsK
KyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0OworICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBodG1sID0KKyAgICAgICAgIjxodG1sPiIKKyAgICAgICAgIiAgPGhlYWQ+
IgorICAgICAgICAiICAgIDx0aXRsZT51bnNldDwvdGl0bGU+IgorICAgICAgICAiICAgIDxtZXRh
IGh0dHAtZXF1aXY9XCJDb250ZW50LVNlY3VyaXR5LVBvbGljeVwiIGNvbnRlbnQ9XCJzY3JpcHQt
c3JjICd1bnNhZmUtaW5saW5lJztcIj4iCisgICAgICAgICIgICAgPHNjcmlwdD5kb2N1bWVudC50
aXRsZSA9ICdzZXQnOzwvc2NyaXB0PiIKKyAgICAgICAgIiAgPC9oZWFkPiIKKyAgICAgICAgIjwv
aHRtbD4iOworCisgICAgLy8gU2FuaXR5IGNoZWNrIHRoYXQgdGhpcyBIVE1MIHdvcmtzIGFzIGV4
cGVjdGVkLgorICAgIHRlc3QtPmxvYWRIdG1sKGh0bWwsIG51bGxwdHIpOworICAgIHRlc3QtPndh
aXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5K
YXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LnRpdGxlID09ICdzZXQnOyIs
ICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfdHJ1
ZShXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0
KSk7CisgICAgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKGphdmFzY3JpcHRSZXN1bHQp
OworCisgICAgLy8gQ3JlYXRlIGEgbmV3IHdlYiB2aWV3IHdpdGggYW4gZXh0ZW5zaW9uIG1vZGUg
dGhhdCBibG9ja3MgdGhlIHVuc2FmZS1pbmxpbmUga2V5d29yZC4KKyAgICBhdXRvIHdlYlZpZXcg
PSBUZXN0OjphZG9wdFZpZXcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAg
ICAgICAid2ViLWV4dGVuc2lvbi1tb2RlIiwgV0VCS0lUX1dFQl9FWFRFTlNJT05fTU9ERV9NQU5J
RkVTVFYzLAorICAgICAgICBudWxscHRyKSk7CisgICAgdGVzdC0+bG9hZEh0bWwoaHRtbCwgbnVs
bHB0ciwgd2ViVmlldy5nZXQoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKHdl
YlZpZXcuZ2V0KCkpOworICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LnRpdGxlID09ICd1bnNldCc7IiwgJmVycm9y
Lm91dFB0cigpLCB3ZWJWaWV3LmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3Jp
cHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBnX2Fz
c2VydF90cnVlKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3Jp
cHRSZXN1bHQpKTsKK30KKwogI2lmIFVTRShTT1VQMikKIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxi
YWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIq
IHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyKQogI2Vsc2UK
QEAgLTE3NjksNiArMTgzNCw4IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVybWlu
YXRlV2ViUHJvY2Vzc1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ0ZXJtaW5hdGUtd2ViLXBy
b2Nlc3MiLCB0ZXN0V2ViVmlld1Rlcm1pbmF0ZVdlYlByb2Nlc3MpOwogICAgIFdlYlZpZXdUZXJt
aW5hdGVXZWJQcm9jZXNzVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInRlcm1pbmF0ZS11bnJl
c3BvbnNpdmUtd2ViLXByb2Nlc3MiLCB0ZXN0V2ViVmlld1Rlcm1pbmF0ZVVucmVzcG9uc2l2ZVdl
YlByb2Nlc3MpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY29ycy1h
bGxvd2xpc3QiLCB0ZXN0V2ViVmlld0NPUlNBbGxvd2xpc3QpOworICAgIFdlYlZpZXdUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAiZGVmYXVsdC1jb250ZW50LXNlY3VyaXR5LXBvbGljeSIsIHRl
c3RXZWJWaWV3RGVmYXVsdENvbnRlbnRTZWN1cml0eVBvbGljeSk7CisgICAgV2ViVmlld1Rlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ3ZWItZXh0ZW5zaW9uLW1vZGUiLCB0ZXN0V2ViVmlld1dl
YkV4dGVuc2lvbk1vZGUpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAppbmRleCBhMjFhMDA0
MmI0Yzc1NTliYzcyNWMxZmFjMDY1OGU0MDNjMTkxY2FmLi5hNTNmODQ0NTQ3ZDRiZTE0ODUwY2Iw
ZWNlNGVhNmQzZWI2YjNiNjFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCkBAIC04NSwxNSArODUsMTkgQEAgdm9pZCBXZWJW
aWV3VGVzdDo6bG9hZFVSSShjb25zdCBjaGFyKiB1cmkpCiAgICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF93ZWJfdmlld19nZXRfdXJpKG1fd2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5kYXRhKCkp
OwogfQogCi12b2lkIFdlYlZpZXdUZXN0Ojpsb2FkSHRtbChjb25zdCBjaGFyKiBodG1sLCBjb25z
dCBjaGFyKiBiYXNlVVJJKQordm9pZCBXZWJWaWV3VGVzdDo6bG9hZEh0bWwoY29uc3QgY2hhciog
aHRtbCwgY29uc3QgY2hhciogYmFzZVVSSSwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAg
ICBpZiAoIWJhc2VVUkkpCiAgICAgICAgIG1fYWN0aXZlVVJJID0gImFib3V0OmJsYW5rIjsKICAg
ICBlbHNlCiAgICAgICAgIG1fYWN0aXZlVVJJID0gYmFzZVVSSTsKLSAgICB3ZWJraXRfd2ViX3Zp
ZXdfbG9hZF9odG1sKG1fd2ViVmlldywgaHRtbCwgYmFzZVVSSSk7Ci0gICAgZ19hc3NlcnRfdHJ1
ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyhtX3dlYlZpZXcpKTsKLSAgICBnX2Fzc2VydF9j
bXBzdHIod2Via2l0X3dlYl92aWV3X2dldF91cmkobV93ZWJWaWV3KSwgPT0sIG1fYWN0aXZlVVJJ
LmRhdGEoKSk7CisKKyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHdlYlZpZXcgPSBtX3dlYlZp
ZXc7CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKHdlYlZpZXcsIGh0bWwsIGJhc2VV
UkkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmll
dykpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3
KSwgPT0sIG1fYWN0aXZlVVJJLmRhdGEoKSk7CiB9CiAKIHZvaWQgV2ViVmlld1Rlc3Q6OmxvYWRQ
bGFpblRleHQoY29uc3QgY2hhciogcGxhaW5UZXh0KQpAQCAtMTk1LDkgKzE5OSw5IEBAIHN0YXRp
YyB2b2lkIGxvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVu
dCBsb2FkRXZlbnQsIFdlYlZpCiAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29w
KTsKIH0KIAotdm9pZCBXZWJWaWV3VGVzdDo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKCkKK3ZvaWQg
V2ViVmlld1Rlc3Q6OndhaXRVbnRpbExvYWRGaW5pc2hlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQogewotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibG9hZC1jaGFuZ2VkIiwgR19D
QUxMQkFDSyhsb2FkQ2hhbmdlZCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmll
dyA/IHdlYlZpZXcgOiBtX3dlYlZpZXcsICJsb2FkLWNoYW5nZWQiLCBHX0NBTExCQUNLKGxvYWRD
aGFuZ2VkKSwgdGhpcyk7CiAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVz
dC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApp
bmRleCAwMmQ1ODQ5NWQ2ZDc3YmZiM2E3M2JhMjhiNmE1ZDkzMGM0NmZmMmRhLi5kMTZlYzdlZWRk
Njc5NTM4NDNjNGQ5YWI0NmQwNDM4YzIxZDgyNGFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcGxhdGZvcm1EZXN0cm95KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9h
ZFVSSShjb25zdCBjaGFyKiB1cmkpOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkSHRtbChjb25zdCBj
aGFyKiBodG1sLCBjb25zdCBjaGFyKiBiYXNlVVJJKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEh0
bWwoY29uc3QgY2hhciogaHRtbCwgY29uc3QgY2hhciogYmFzZVVSSSwgV2ViS2l0V2ViVmlldyog
PSBudWxscHRyKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFBsYWluVGV4dChjb25zdCBjaGFyKiBw
bGFpblRleHQpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVxdWVzdChXZWJLaXRVUklSZXF1ZXN0
Kik7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRCeXRlcyhHQnl0ZXMqLCBjb25zdCBjaGFyKiBtaW1l
VHlwZSwgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGJhc2VVUkkpOwpAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBxdWl0TWFpbkxvb3AoKTsKICAgICB2b2lkIHF1
aXRNYWluTG9vcEFmdGVyUHJvY2Vzc2luZ1BlbmRpbmdFdmVudHMoKTsKICAgICB2b2lkIHdhaXQo
ZG91YmxlIHNlY29uZHMpOwotICAgIHZvaWQgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAg
dm9pZCB3YWl0VW50aWxMb2FkRmluaXNoZWQoV2ViS2l0V2ViVmlldyogPSBudWxscHRyKTsKICAg
ICB2b2lkIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKGNvbnN0IGNoYXIqIGV4cGVjdGVkVGl0bGUp
OwogICAgIHZvaWQgd2FpdFVudGlsVGl0bGVDaGFuZ2VkKCk7CiAgICAgdm9pZCB3YWl0VW50aWxJ
c1dlYlByb2Nlc3NSZXNwb25zaXZlQ2hhbmdlZCgpOwo=
</data>
<flag name="commit-queue"
          id="488464"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>