<?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>134551</bug_id>
          
          <creation_ts>2014-07-02 11:49:02 -0700</creation_ts>
          <short_desc>[GTK] Move user style sheet API out of WebKitWebViewGroup</short_desc>
          <delta_ts>2014-07-08 10:54:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133729</blocked>
    
    <blocked>133730</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrian Perez">aperez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>berto</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1020001</commentid>
    <comment_count>0</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-07-02 11:49:02 -0700</bug_when>
    <thetext>In order to be able to remove WebKitWebViewGroup (as per bug #133729)
we need to move the API to set user style sheets somewhere else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020002</commentid>
    <comment_count>1</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-07-02 11:50:25 -0700</bug_when>
    <thetext>I am working on a simplified version of the patch already attached to
bug #133730 which only includes the user style sheets parts. The rest
of the API for user content would be added later after this initial,
smaller patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020219</commentid>
    <comment_count>2</comment_count>
      <attachid>234330</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-07-03 03:16:15 -0700</bug_when>
    <thetext>Created attachment 234330
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020220</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-03 03:17:51 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020223</commentid>
    <comment_count>4</comment_count>
      <attachid>234330</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-03 04:14:47 -0700</bug_when>
    <thetext>Comment on attachment 234330
Patch

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

The API looks good to me, we need a WebKit2 owner for the cross-platform changes.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp:25
&gt; +#include &lt;WebCore/page/UserScript.h&gt;

This doesn&apos;t belong to this patch.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp:26
&gt; +#include &lt;WebCore/page/UserStyleSheet.h&gt;

This should be &lt;WebCore/UserStyleSheet.h&gt;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp:81
&gt; +        : referenceCount(1) { }

Move the {} to their own lines:
        : referenceCount(1)
    {
    }

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp:141
&gt; + * Returns: A new #WebKitUserStyleSheet object

s/object// It&apos;s not exactly an object.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp:146
&gt; +WebKitUserStyleSheet* webkit_user_style_sheet_new(const gchar* source, WebKitUserContentInjectedFrames injectedFrames,
&gt; +    WebKitUserStyleLevel level, const char* const* whitelist, const char* const* blacklist)

This should be one line

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp:148
&gt; +    WebKitUserStyleSheet* userStyleSheet = g_slice_new(WebKitUserStyleSheet);

You should check at least source is not NULL with a g_return macro. Are you sure we don&apos;t need the baseURI too?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp:154
&gt; +    new (userStyleSheet) WebKitUserStyleSheet();
&gt; +    userStyleSheet-&gt;userStyleSheet = std::make_unique&lt;UserStyleSheet&gt;(
&gt; +        String::fromUTF8(source), URL { },
&gt; +        toStringVector(whitelist), toStringVector(blacklist),
&gt; +        toUserContentInjectedFrames(injectedFrames),
&gt; +        toUserStyleLevel(level));

Maybe we pass the arguments to the WebKitUserStyleSheet constructor and create the WebCore::UserStyleSheet there.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp:158
&gt; +const UserStyleSheet&amp; webkitWebKitUserStyleSheetToUserStyleSheet(WebKitUserStyleSheet* userStyleSheet)

webkitUserStyleSheetGetUserStyleSheet() or something like that

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp:23
&gt; +#include &quot;WebKitPrivate.h&quot;

This is already included by some of the other Private.h functions

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp:27
&gt; +#include &quot;WebKitWebContextPrivate.h&quot;
&gt; +#include &quot;WebPageProxy.h&quot;

I don&apos;t think you need these ones.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp:29
&gt; +#include &lt;WebCore/page/UserStyleSheet.h&gt;

This should be &lt;WebCore/UserStyleSheet.h&gt;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp:77
&gt; +WebKitUserContentManager* webkit_user_content_manager_new(void)

s/void//

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp:87
&gt; + * Adds a script to an user content manager. The same #WebKitUserScript can

s/script/style sheet/ 
s/WebKitUserScript/WebKitUserStyleSheet/

Adds a #WebKitUserStyleSheet to the given #WebKitUserContentManager.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp:93
&gt; +void
&gt; +webkit_user_content_manager_add_style_sheet(WebKitUserContentManager* manager, WebKitUserStyleSheet* styleSheet)

This should be a single line

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp:96
&gt; +    g_assert(styleSheet);

Don&apos;t use g_assert here, since this is public API, use g_return_if_fail instead

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp:104
&gt; + * Removes all user style sheets from the user content manager.

Removes all user style sheets from @manager or from the #WebKitUserContentManager

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp:109
&gt; +void
&gt; +webkit_user_content_manager_remove_all_style_sheets(WebKitUserContentManager* manager)

This should be a single line

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp:117
&gt; +    g_return_val_if_fail(WEBKIT_IS_USER_CONTENT_MANAGER(manager), nullptr);

Don&apos;t use g_return macros in private functions, use ASSERT instead if you want to be extra sure.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManagerPrivate.h:27
&gt; +namespace WebKit {
&gt; +class WebUserContentControllerProxy;
&gt; +};

This is a private header you can simply include &quot;WebUserContentControllerProxy.h&quot; here and remove it from the cpp

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentPrivate.h:27
&gt; +namespace WebCore {
&gt; +class UserStyleSheet;
&gt; +};

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:43
&gt; +#include &quot;WebKitUserContentManager.h&quot;
&gt; +#include &quot;WebKitUserContentManagerPrivate.h&quot;

ManagerPrivate.h already includes Manager.h and WebKitWebContextPrivate.h already includes WebKitUserContentManager.h

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:687
&gt; +     */

Since: 2.6

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1988
&gt; + *

You should add a brief explanation here

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1990
&gt; + */

Since: 2.6

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2035
&gt; + * Gets the user content manager associated to @web_view.

Or %NULL if the view doesn&apos;t have a user content manager.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2038
&gt; + * Returns: (transfer none): the #WebKitUserContentManager associated with
&gt; + *    the view

Use a single line here.

&gt; Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt:112
&gt; +

Remove this line

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp:37
&gt; +        m_userContentManager = webkit_web_view_get_user_content_manager(m_webView);
&gt; +        g_object_unref(m_userContentManager);

This is confusing, I understand that we are actually leaking the ref in webkit_web_view_new_with_user_content_manager, and here we fix that leak. I think I would use a GRefPtr with adoptGRef and a comment explaining why we are adopting a reference form a method that is transfer none

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp:61
&gt; +    g_assert(webkit_web_view_get_user_content_manager(webView2.get()) != userContentManager1.get());
&gt; +    g_assert(webkit_web_view_get_user_content_manager(webView2.get()) == nullptr);

Don&apos;t compare to nullptr. I think these asserts are redundant, g_assert(!webkit_web_view_get_user_content_manager(webView2.get())); should be enough to check that a web view created without a content manager doesn&apos;t have a conent manager and it&apos;s obviously different than the content manager created manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020241</commentid>
    <comment_count>5</comment_count>
      <attachid>234337</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-07-03 06:15:52 -0700</bug_when>
    <thetext>Created attachment 234337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020244</commentid>
    <comment_count>6</comment_count>
      <attachid>234338</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-07-03 06:25:30 -0700</bug_when>
    <thetext>Created attachment 234338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020246</commentid>
    <comment_count>7</comment_count>
      <attachid>234337</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-03 06:29:50 -0700</bug_when>
    <thetext>Comment on attachment 234337
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp:32
&gt; +        : userContentController(WebUserContentControllerProxy::create()) { }

Move the {} to their own line.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentPrivate.h:24
&gt; +

Remove this empty line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020249</commentid>
    <comment_count>8</comment_count>
      <attachid>234340</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-07-03 06:39:12 -0700</bug_when>
    <thetext>Created attachment 234340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020252</commentid>
    <comment_count>9</comment_count>
      <attachid>234342</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-07-03 06:44:58 -0700</bug_when>
    <thetext>Created attachment 234342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020322</commentid>
    <comment_count>10</comment_count>
      <attachid>234342</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-07-03 11:52:17 -0700</bug_when>
    <thetext>Comment on attachment 234342
Patch

This is definitely what we want to do in WebKit2 going forward. 

You also need to send over the style sheets in WebUserContentControllerProxy::addProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020333</commentid>
    <comment_count>11</comment_count>
      <attachid>234361</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-07-03 12:18:08 -0700</bug_when>
    <thetext>Created attachment 234361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020334</commentid>
    <comment_count>12</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-07-03 12:19:08 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 234342 [details])
&gt; This is definitely what we want to do in WebKit2 going forward. 
&gt; 
&gt; You also need to send over the style sheets in WebUserContentControllerProxy::addProcess.

Thanks, this is added now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020337</commentid>
    <comment_count>13</comment_count>
      <attachid>234361</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-07-03 12:23:42 -0700</bug_when>
    <thetext>Comment on attachment 234361
Patch

WK2 parts look good to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020455</commentid>
    <comment_count>14</comment_count>
      <attachid>234361</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-04 01:07:58 -0700</bug_when>
    <thetext>Comment on attachment 234361
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContent.cpp:80
&gt; +            String::fromUTF8(source), URL { },

Are you sure we don&apos;t need the baseURL?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentManager.cpp:33
&gt; +        : userContentController(WebUserContentControllerProxy::create()) { }

Move the {} the their own line, please

    _WebKitUserContentManagerPrivate()
        : userContentController(WebUserContentControllerProxy::create())
    {
    }

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUserContentPrivate.h:24
&gt; +

Remove this empty line

&gt; Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp:103
&gt; +    m_userStyleSheets.append(std::move(userStyleSheet));

Use WTF::move() instead of std::move()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020810</commentid>
    <comment_count>15</comment_count>
      <attachid>234486</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-07-07 04:34:19 -0700</bug_when>
    <thetext>Created attachment 234486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021061</commentid>
    <comment_count>16</comment_count>
      <attachid>234486</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-08 02:33:39 -0700</bug_when>
    <thetext>Comment on attachment 234486
Patch

LGTM, thanks! We need another GTK+ reviewer to approve the new API, though</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021081</commentid>
    <comment_count>17</comment_count>
      <attachid>234561</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-07-08 08:01:37 -0700</bug_when>
    <thetext>Created attachment 234561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021083</commentid>
    <comment_count>18</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2014-07-08 08:06:36 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 234486 [details])
&gt; LGTM, thanks! We need another GTK+ reviewer to approve the new API, though

Great! Also, I have uploaded an update with a couple of small fixes:

 * WebCore.exp.in is now sorted (using Tools/Scripts/sort-export-file)
 * A bogus reference to webkit_user_content_get_type() in the macro
   WEBKIT_USER_STYLE_SHEET_TYPE is now changed to the correct 
   webkit_user_style_sheet_get_type().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021088</commentid>
    <comment_count>19</comment_count>
      <attachid>234561</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-07-08 08:35:20 -0700</bug_when>
    <thetext>Comment on attachment 234561
Patch

The new API looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021114</commentid>
    <comment_count>20</comment_count>
      <attachid>234561</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-07-08 10:18:21 -0700</bug_when>
    <thetext>Comment on attachment 234561
Patch

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021130</commentid>
    <comment_count>21</comment_count>
      <attachid>234561</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-08 10:53:58 -0700</bug_when>
    <thetext>Comment on attachment 234561
Patch

Clearing flags on attachment: 234561

Committed r170891: &lt;http://trac.webkit.org/changeset/170891&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021131</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-08 10:54:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234330</attachid>
            <date>2014-07-03 03:16:15 -0700</date>
            <delta_ts>2014-07-03 06:10:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134551-20140703131824.patch</filename>
            <type>text/plain</type>
            <size>74341</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmU0MTFiYWUwMmY2NDE4
ZjY5NTM3ZTNjZWQ4MWEyZjlkNDZkYjg2OS4uYWMxMWM2YjZjZDcwZGExNzg0NjE2OWFjNDk3MTYz
OTM5ZWYzMzBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE0LTA3LTAzICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
TW92ZSB1c2VyIHN0eWxlIHNoZWV0IEFQSSBvdXQgb2YgV2ViS2l0V2ViVmlld0dyb3VwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ1NTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBJbmNsdWRlIHRoZSBuZXcgc291cmNlIGZpbGVzIGluIHRoZSBidWlsZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdDcmVh
dGUpOgorICAgICAgICBBZGFwdCB0byB0aGUgYWRkaXRpb25hbCB3ZWJraXRXZWJWaWV3QmFzZUNy
ZWF0ZVdlYlBhZ2UoKSBwYXJhbWV0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlckNvbnRlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRvVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyk6CisgICAgICAgICh0b1VzZXJTdHlsZUxldmVsKToKKyAgICAgICAgKHRvU3RyaW5n
VmVjdG9yKToKKyAgICAgICAgKF9XZWJLaXRVc2VyU3R5bGVTaGVldDo6X1dlYktpdFVzZXJTdHls
ZVNoZWV0KToKKyAgICAgICAgKHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZik6CisgICAgICAg
ICh3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZik6CisgICAgICAgICh3ZWJraXRfdXNlcl9z
dHlsZV9zaGVldF9uZXcpOgorICAgICAgICAod2Via2l0V2ViS2l0VXNlclN0eWxlU2hlZXRUb1Vz
ZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXJQcml2YXRlOjpfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZSk6CisgICAgICAgICh3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfbmV3KToKKyAgICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQpOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9t
YW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzKToKKyAgICAgICAgKHdlYmtpdFVzZXJDb250
ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudFByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOiBB
ZGQgYSBuZXcgcGFyYW1ldGVyIHRvIGFsbG93CisgICAgICAgIHBhc3NpbmcgdGhlIFdlYktpdFVz
ZXJDb250ZW50TWFuYWdlciB0aGF0IHRoZSB3ZWIgdmlldyB3aWxsIHVzZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdDb25zdHJ1Y3RlZCk6IEFkZGVkIGhhbmRsaW5nIG9mIHRoZQorICAgICAgICAidXNl
ci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5IG9uIGNvbnN0cnVjdGlvbi4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZQorICAgICAgICAi
dXNlci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5LgorICAgICAgICAod2Via2l0V2ViVmlld0dl
dFByb3BlcnR5KTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlCisgICAgICAgICJ1c2VyLWNvbnRlbnQt
bWFuYWdlciIgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6
IEFkZGVkIHRoZSAidXNlci1jb250ZW50LW1hbmFnZXIiCisgICAgICAgIHByb3BlcnR5IGRlZmlu
aXRpb24gdG8gdGhlIFdlYktpdFdlYlZpZXcgY2xhc3MuCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KTogTWFkZSByZWxhdGVkIHZpZXdzIHNoYXJlCisgICAg
ICAgIHRoZSBzYW1lIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciB1c2VkIGJ5IHRoZSB2aWV3IHRo
ZXkgYXJlCisgICAgICAgIHJlbGF0ZWQgdG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3
X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZCBuZXcgQVBJIG1ldGhvZHMuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VDcmVhdGUpOiBBZGRlZCBhIHBhcmFtZXRlciB0byBwYXNzIHRoZSB1c2Vy
CisgICAgICAgIGNvbnRlbnQgbWFuYWdlci4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlV2ViUGFnZSk6IEFkZGVkIGEgcGFyYW1ldGVyIHRvIHBhc3MgdGhlIHVzZXIKKyAgICAgICAg
Y29udGVudCBtYW5hZ2VyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3JvdXAuY3BwOiBSZW1vdmVkIHRoZSBiaXRzIHJlbGF0ZWQKKyAgICAgICAgdG8g
dXNlciBzdHlsZSBzaGVldCBzdXBwb3J0IGZyb20gV2ViS2l0V2ViVmlld0dyb3VwLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncyk6CisgICAgICAgICh0b0FQSUFy
cmF5KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9z
dHlsZV9zaGVldCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVt
b3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmg6IERlbGV0ZWQgdGhlIEFQSSBtZXRob2RzCisg
ICAgICAgIGZvciB1c2VyIHN0eWxlIHNoZWV0IGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZGVkIHRoZSBuZXcgQVBJ
CisgICAgICAgIGZ1bmN0aW9ucyBhbmQgdHlwZXMsIGFuZCByZW1vdmVkIHRoZSBtZXRob2RzIHdo
aWNoIGFyZSBubyBsb25nZXIKKyAgICAgICAgYXZhaWxhYmxlIGluIFdlYktpdFdlYlZpZXdHcm91
cC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEFkZCB0aGUgbmV3IGhl
YWRlcnMuCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcDogQWRkZWQKKyAgICAgICAgbWV0aG9kcyB0byBhZGQgYW5kIHJlbW92
ZSB1c2VyIHN0eWxlIHNoZWV0cywgYWxpa2UgdGhvc2UgdXNlZCBmb3IKKyAgICAgICAgdXNlciBz
Y3JpcHRzLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaDogRGl0dG8uCisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2Up
OgorICAgICAgICBBZGFwdCB0byB0aGUgYWRkaXRpb25hbCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0
ZVdlYlBhZ2UoKSBwYXJhbWV0ZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOiBBZGRlZCBtZXRob2RzCisgICAgICAgIHRvIGFk
ZCBhbmQgcmVtb3ZlIHVzZXIgc3R5bGUgc2hlZXRzLCBhbGlrZSB0aG9zZSB1c2VkIGZvciB1c2Vy
IHNjcmlwdHMuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRk
VXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6IERpdHRvLgorICAgICAgICAqIFdl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICBEaXR0by4KKwogMjAxNC0wNy0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTcwNjc2KTogW0dUS10g
VUkgcHJvY2VzcyBjcmFzaGVzIHdoZW4gdGhlIFdlYiBQcm9jZXNzIGNyYXNoZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1HVEsuY21ha2UKaW5kZXggYTRiYTlhYTlhYzBiMTEzZTBlYjhjOWQ3NGY3OTNiNDc1NmRi
OTExZS4uODE4ZTBlZjdhNTA2ZTA0OTM1MjFjMDk3YTJiNTJhYmU2YTRmYWRkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1HVEsuY21ha2UKQEAgLTIxMCw2ICsyMTAsMTIgQEAgbGlzdChBUFBFTkQgV2ViS2l0
Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmgKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCisgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVzZXJDb250ZW50LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJD
b250ZW50UHJpdmF0ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQ
cml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VmVyc2lvbi5jcHAKICAgICBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmguaW4KICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmNwcApAQCAtMzUzLDYgKzM1OSw4IEBAIHNldChXZWJLaXQyR1RLX0lOU1RB
TExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VVJJUmVxdWVzdC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VVJJUmVzcG9uc2UuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVSSVNjaGVtZVJlcXVlc3QuaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVzZXJDb250ZW50LmgKKyAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViUmVzb3VyY2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwCmluZGV4IDZmMGMwNGJmMjczZGJmZjYxZDliMGZiZGMy
N2E4MGQ1MzhmMmMzMjMuLmJjN2I4M2Y5NWE0NzJlNTM3M2MwNzgxNmFmYWVlZTE0YzVkMjFkMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdLVmlld1JlZiBXS1Zp
ZXdDcmVhdGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cFJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUodG9JbXBs
KGNvbnRleHRSZWYpLCB0b0ltcGwocGFnZUdyb3VwUmVmKSwgbnVsbHB0cikpOworICAgIHJldHVy
biB0b0FQSSh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSh0b0ltcGwoY29udGV4dFJlZiksIHRvSW1w
bChwYWdlR3JvdXBSZWYpLCBudWxscHRyLCBudWxscHRyKSk7CiB9CiAKIFdLUGFnZVJlZiBXS1Zp
ZXdHZXRQYWdlKFdLVmlld1JlZiB2aWV3UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3MmUz
NDRmOGYzMWE0YjU1MjNlZWNiNTEwODc3NTJiNDk0MmY1NGMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAKQEAg
LTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50LmgiCisKKyNpbmNs
dWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRQcml2YXRl
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworLyoqCisgKiBTRUNUSU9OOldlYktpdFVzZXJDb250ZW50CisgKiBAc2hvcnRf
ZGVzY3JpcHRpb246IERlZmluZXMgdXNlciBjb250ZW50IHR5cGVzIHdoaWNoIGFmZmVjdCB3ZWIg
cGFnZXMuCisgKiBAdGl0bGU6IFVzZXIgY29udGVudAorICoKKyAqIFNlZSBhbHNvOiAjV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyCisgKgorICogU2luY2U6IDIuNgorICovCisKK3N0YXRpYyBpbmxp
bmUgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMo
V2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKK3sKKyAgICBz
d2l0Y2ggKGluamVjdGVkRnJhbWVzKSB7CisgICAgY2FzZSBXRUJLSVRfVVNFUl9DT05URU5UX0lO
SkVDVF9UT1BfRlJBTUU6CisgICAgICAgIHJldHVybiBJbmplY3RJblRvcEZyYW1lT25seTsKKyAg
ICBjYXNlIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6CisgICAgICAgIHJl
dHVybiBJbmplY3RJbkFsbEZyYW1lczsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEluamVjdEluQWxsRnJhbWVzOworICAgIH0KK30K
Kworc3RhdGljIGlubGluZSBVc2VyU3R5bGVMZXZlbCB0b1VzZXJTdHlsZUxldmVsKFdlYktpdFVz
ZXJTdHlsZUxldmVsIHN0eWxlTGV2ZWwpCit7CisgICAgc3dpdGNoIChzdHlsZUxldmVsKSB7Cisg
ICAgY2FzZSBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9VU0VSOgorICAgICAgICByZXR1cm4gVXNl
clN0eWxlVXNlckxldmVsOworICAgIGNhc2UgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfQVVUSE9S
OgorICAgICAgICByZXR1cm4gVXNlclN0eWxlQXV0aG9yTGV2ZWw7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBVc2VyU3R5bGVBdXRo
b3JMZXZlbDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gdG9TdHJp
bmdWZWN0b3IoY29uc3QgY2hhciogY29uc3QqIHN0cnYpCit7CisgICAgaWYgKCFzdHJ2KQorICAg
ICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3Vs
dDsKKyAgICBmb3IgKGF1dG8gc3RyID0gc3RydjsgKnN0cjsgKytzdHIpCisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoc3RkOjptb3ZlKFN0cmluZzo6ZnJvbVVURjgoKnN0cikpKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdHJ1Y3QgX1dlYktpdFVzZXJTdHlsZVNoZWV0IHsKKyAgICBfV2ViS2l0
VXNlclN0eWxlU2hlZXQoKQorICAgICAgICA6IHJlZmVyZW5jZUNvdW50KDEpIHsgfQorCisgICAg
c3RkOjp1bmlxdWVfcHRyPFVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldDsKKyAgICBpbnQg
cmVmZXJlbmNlQ291bnQ7Cit9OworCitHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdFVzZXJTdHls
ZVNoZWV0LCB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldCwgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRf
cmVmLCB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZikKKworLyoqCisgKiB3ZWJraXRfdXNl
cl9zdHlsZV9zaGVldF9yZWY6CisgKiBAdXNlcl9zdHlsZV9zaGVldDogYSAjV2ViS2l0VXNlclN0
eWxlU2hlZXQKKyAqCisgKiBBdG9taWNhbGx5IGluY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3Vu
dCBvZiBAdXNlcl9zdHlsZV9zaGVldCBieSBvbmUuCisgKiBUaGlzIGZ1bmN0aW9uIGlzIE1ULXNh
ZmUgYW5kIG1heSBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgorICoKKyAqIFJldHVybnM6IFRo
ZSBwYXNzZWQgI1dlYktpdFVzZXJTdHlsZVNoZWV0CisgKgorICogU2luY2U6IDIuNgorICovCitX
ZWJLaXRVc2VyU3R5bGVTaGVldCogd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfcmVmKFdlYktpdFVz
ZXJTdHlsZVNoZWV0KiB1c2VyU3R5bGVTaGVldCkKK3sKKyAgICBnX2F0b21pY19pbnRfaW5jKCZ1
c2VyU3R5bGVTaGVldC0+cmVmZXJlbmNlQ291bnQpOworICAgIHJldHVybiB1c2VyU3R5bGVTaGVl
dDsKK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZjoKKyAqIEB1c2Vy
X3N0eWxlX3NoZWV0OiBhICNXZWJLaXRVc2VyU3R5bGVTaGVldAorICoKKyAqIEF0b21pY2FsbHkg
ZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIEB1c2VyX3N0eWxlX3NoZWV0IGJ5IG9u
ZS4KKyAqIElmIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gMCwgYWxsIG1lbW9yeSBhbGxv
Y2F0ZWQgYnkKKyAqICNXZWJLaXRVc2VyU3R5bGVTaGVldCBpcyByZWxlYXNlZC4gVGhpcyBmdW5j
dGlvbiBpcyBNVC1zYWZlIGFuZCBtYXkgYmUKKyAqIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisg
KgorICogU2luY2U6IDIuNgorICovCit2b2lkIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVm
KFdlYktpdFVzZXJTdHlsZVNoZWV0KiB1c2VyU3R5bGVTaGVldCkKK3sKKyAgICBpZiAoZ19hdG9t
aWNfaW50X2RlY19hbmRfdGVzdCgmdXNlclN0eWxlU2hlZXQtPnJlZmVyZW5jZUNvdW50KSkgewor
ICAgICAgICB1c2VyU3R5bGVTaGVldC0+fldlYktpdFVzZXJTdHlsZVNoZWV0KCk7CisgICAgICAg
IGdfc2xpY2VfZnJlZShXZWJLaXRVc2VyU3R5bGVTaGVldCwgdXNlclN0eWxlU2hlZXQpOworICAg
IH0KK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXc6CisgKiBAc291cmNl
OiBTb3VyY2UgY29kZSBvZiB0aGUgdXNlciBzdHlsZSBzaGVldC4KKyAqIEBpbmplY3RlZF9mcmFt
ZXM6IEEgI1dlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgdmFsdWUKKyAqIEBsZXZlbDog
QSAjV2ViS2l0VXNlclN0eWxlTGV2ZWwKKyAqIEB3aGl0ZWxpc3Q6IChhcnJheSB6ZXJvLXRlcm1p
bmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBBIHdoaXRlbGlzdCBvZiBVUkkgcGF0dGVybnMgb3IgJU5V
TEwKKyAqIEBibGFja2xpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUp
OiBBIGJsYWNrbGlzdCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKKyAqCisgKiBDcmVhdGVzIGEg
bmV3IHVzZXIgc3R5bGUgc2hlZXQuIFN0eWxlIHNoZWV0cyBjYW4gYmUgYXBwbGllZCB0byBzb21l
IFVSSXMKKyAqIG9ubHkgYnkgcGFzc2luZyBub24tbnVsbCB2YWx1ZXMgZm9yIEB3aGl0ZWxpc3Qg
b3IgQGJsYWNrbGlzdC4gUGFzc2luZyBhCisgKiAlTlVMTCB3aGl0ZWxpc3QgaW1wbGllcyB0aGF0
IGFsbCBVUklzIGFyZSBvbiB0aGUgd2hpdGVsaXN0LiBUaGUgc3R5bGUKKyAqIHNoZWV0IGlzIGFw
cGxpZWQgaWYgYW4gVVJJIG1hdGNoZXMgdGhlIHdoaXRlbGlzdCBhbmQgbm90IHRoZSBibGFja2xp
c3QuCisgKiBVUkkgcGF0dGVybnMgbXVzdCBiZSBvZiB0aGUgZm9ybSBgW3Byb3RvY29sXTovL1to
b3N0XS9bcGF0aF1gLCB3aGVyZSB0aGUKKyAqICpob3N0KiBhbmQgKnBhdGgqIGNvbXBvbmVudHMg
Y2FuIGNvbnRhaW4gdGhlIHdpbGRjYXJkIGNoYXJhY3RlciAoYCpgKSB0bworICogcmVwcmVzZW50
IHplcm8gb3IgbW9yZSBvdGhlciBjaGFyYWN0ZXJzLgorICoKKyAqIFJldHVybnM6IEEgbmV3ICNX
ZWJLaXRVc2VyU3R5bGVTaGVldCBvYmplY3QKKyAqCisgKiBTaW5jZTogMi42CisgKi8KK1dlYktp
dFVzZXJTdHlsZVNoZWV0KiB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXcoY29uc3QgZ2NoYXIq
IHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywK
KyAgICBXZWJLaXRVc2VyU3R5bGVMZXZlbCBsZXZlbCwgY29uc3QgY2hhciogY29uc3QqIHdoaXRl
bGlzdCwgY29uc3QgY2hhciogY29uc3QqIGJsYWNrbGlzdCkKK3sKKyAgICBXZWJLaXRVc2VyU3R5
bGVTaGVldCogdXNlclN0eWxlU2hlZXQgPSBnX3NsaWNlX25ldyhXZWJLaXRVc2VyU3R5bGVTaGVl
dCk7CisgICAgbmV3ICh1c2VyU3R5bGVTaGVldCkgV2ViS2l0VXNlclN0eWxlU2hlZXQoKTsKKyAg
ICB1c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJT
dHlsZVNoZWV0PigKKyAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChzb3VyY2UpLCBVUkwgeyB9LAor
ICAgICAgICB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xp
c3QpLAorICAgICAgICB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMp
LAorICAgICAgICB0b1VzZXJTdHlsZUxldmVsKGxldmVsKSk7CisgICAgcmV0dXJuIHVzZXJTdHls
ZVNoZWV0OworfQorCitjb25zdCBVc2VyU3R5bGVTaGVldCYgd2Via2l0V2ViS2l0VXNlclN0eWxl
U2hlZXRUb1VzZXJTdHlsZVNoZWV0KFdlYktpdFVzZXJTdHlsZVNoZWV0KiB1c2VyU3R5bGVTaGVl
dCkKK3sKKyAgICByZXR1cm4gKnVzZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVTaGVldDsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIxZDNhZGViNTIyOGYzZTgyMjQ4ZTQxMmYzN2E0NDBlODM0ZDZjZGUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVc2VyQ29udGVudC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVm
aW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIu
aD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFVz
ZXJDb250ZW50X2gKKyNkZWZpbmUgV2ViS2l0VXNlckNvbnRlbnRfaAorCisjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJ
Tl9ERUNMUworCisvKioKKyAqIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6CisgKiBA
V0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfQUxMX0ZSQU1FUzogSW5zZXJ0IHRoZSB1c2VyIHN0
eWxlCisgKiAgIHNoZWV0IGluIGFsbCB0aGUgZnJhbWVzIGxvYWRlZCBieSB0aGUgd2ViIHZpZXcs
IGluY2x1ZGluZworICogICBuZXN0ZWQgZnJhbWVzLiBUaGlzIGlzIHRoZSBkZWZhdWx0LgorICog
QFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX1RPUF9GUkFNRTogSW5zZXJ0IHRoZSB1c2VyIHN0
eWxlCisgKiAgIHNoZWV0ICpvbmx5KiBpbiB0aGUgdG9wLWxldmVsIGZyYW1lIGxvYWRlZCBieSB0
aGUgd2ViIHZpZXcsCisgKiAgIGFuZCAqbm90KiBpbiB0aGUgbmVzdGVkIGZyYW1lcy4KKyAqCisg
KiBTcGVjaWZpZXMgaW4gd2hpY2ggZnJhbWVzIHVzZXIgc3R5bGUgc2hlZXRzIGFyZSB0byBiZSBp
bnNlcnRlZCBpbi4KKyAqCisgKiBTaW5jZTogMi42CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAg
V0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfQUxMX0ZSQU1FUywKKyAgICBXRUJLSVRfVVNFUl9D
T05URU5UX0lOSkVDVF9UT1BfRlJBTUUsCit9IFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXM7CisKKy8qKgorICogV2ViS2l0VXNlclN0eWxlTGV2ZWw6CisgKiBAV0VCS0lUX1VTRVJfU1RZ
TEVfTEVWRUxfVVNFUjogVGhlIHN0eWxlIHNoZWV0IGlzIGFuIHVzZXIgc3R5bGUgc2hlZXQsCisg
KiAgIGl0cyBjb250ZW50cyBhbHdheXMgb3ZlcnJpZGUgb3RoZXIgc3R5bGUgc2hlZXRzLiBUaGlz
IGlzIHRoZSBkZWZhdWx0LgorICogQFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX0FVVEhPUjogVGhl
IHN0eWxlIHNoZWV0IHdpbGwgYmUgdHJlYXRlZCBhcyBpZgorICogICBpdCB3YXMgcHJvdmlkZWQg
YnkgdGhlIGxvYWRlZCBkb2N1bWVudHMuIFRoYXQgbWVhbnMgb3RoZXIgdXNlciBzdHlsZQorICog
ICBzaGVldHMgbWF5IHN0aWxsIG92ZXJyaWRlIGl0LgorICoKKyAqIFNwZWNpZmllcyBob3cgdG8g
dHJlYXQgYW4gdXNlciBzdHlsZSBzaGVldC4KKyAqCisgKiBTaW5jZTogMi42CisgKi8KK3R5cGVk
ZWYgZW51bSB7CisgICAgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfVVNFUiwKKyAgICBXRUJLSVRf
VVNFUl9TVFlMRV9MRVZFTF9BVVRIT1IsCit9IFdlYktpdFVzZXJTdHlsZUxldmVsOworCisjZGVm
aW5lIFdFQktJVF9UWVBFX1VTRVJfU1RZTEVfU0hFRVQgKHdlYmtpdF91c2VyX2NvbnRlbnRfZ2V0
X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJTdHlsZVNoZWV0IFdlYktpdFVz
ZXJTdHlsZVNoZWV0OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfdXNlcl9zdHlsZV9zaGVl
dF9nZXRfdHlwZSAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlclN0eWxlU2hlZXQgKgor
d2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfcmVmICAgICAgKFdlYktpdFVzZXJTdHlsZVNoZWV0ICAg
ICAgICAgICAqdXNlcl9zdHlsZV9zaGVldCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3Vz
ZXJfc3R5bGVfc2hlZXRfdW5yZWYgICAgKFdlYktpdFVzZXJTdHlsZVNoZWV0ICAgICAgICAgICAq
dXNlcl9zdHlsZV9zaGVldCk7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlclN0eWxlU2hlZXQgKgor
d2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3ICAgICAgKGNvbnN0IGdjaGFyICAgICAgICAgICAg
ICAgICAgICAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRfZnJhbWVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJTdHlsZUxldmVsICAgICAgICAgICAgbGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0
ICAgICAgICAgICAgICp3aGl0ZWxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICpibGFja2xpc3QpOworCitHX0VORF9E
RUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZjBi
NjYyZjRiM2E0MDczZTkxZjlkMGJkYjY5NzNmNmVmYTZkMWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIu
Y3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIuaCIKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRQcml2
YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKKyNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oPgorI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX1dlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZh
dGUgeworICAgIF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlKCkKKyAgICAgICAgOiB1
c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0
ZSgpKSB7IH0KKworICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gdXNl
ckNvbnRlbnRDb250cm9sbGVyOworfTsKKworLyoqCisgKiBTRUNUSU9OOldlYktpdFVzZXJDb250
ZW50TWFuYWdlcgorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBNYW5hZ2VzIHVzZXItZGVmaW5lZCBj
b250ZW50IHdoaWNoIGFmZmVjdHMgd2ViIHBhZ2VzLgorICogQHRpdGxlOiBXZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIKKyAqCisgKiBVc2luZyBhICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgdXNl
ciBDU1Mgc3R5bGUgc2hlZXRzIGNhbiBiZSBzZXQgdG8KKyAqIGJlIGluamVjdGVkIGluIHRoZSB3
ZWIgcGFnZXMgbG9hZGVkIGJ5IGEgI1dlYktpdFdlYlZpZXcsIGJ5CisgKiB3ZWJraXRfdXNlcl9j
b250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KCkuCisgKgorICogVG8gdXNlIGEgI1dlYktp
dFVzZXJDb250ZW50TWFuYWdlciwgaXQgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCisgKiB3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCksIGFuZCB0aGVuIHBhc3NlZCB0bworICogd2Via2l0
X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKCkuIFVzZXIgc3R5bGUKKyAq
IHNoZWV0cyBjYW4gYmUgY3JlYXRlZCB3aXRoIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldygp
LgorICoKKyAqIFVzZXIgc3R5bGUgc2hlZXRzIGNhbiBiZSBhZGRlZCBhbmQgcmVtb3ZlZCBhdCBh
bnkgdGltZSwgYnV0CisgKiB0aGV5IHdpbGwgYWZmZWN0IHRoZSB3ZWIgcGFnZXMgbG9hZGVkIGFm
dGVyd2FyZHMuCisgKgorICogU2luY2U6IDIuNgorICovCisKK1dFQktJVF9ERUZJTkVfVFlQRShX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIsIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlciwgR19U
WVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2Ns
YXNzX2luaXQoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3MqKQoreworfQorCisvKioKKyAq
IHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXc6CisgKgorICogQ3JlYXRlcyBhIG5ldyB1
c2VyIGNvbnRlbnQgbWFuYWdlci4KKyAqCisgKiBSZXR1cm5zOiBBICNXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIKKyAqCisgKiBTaW5jZTogMi42CisgKi8KK1dlYktpdFVzZXJDb250ZW50TWFuYWdl
ciogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldyh2b2lkKQoreworICAgIHJldHVybiBX
RUJLSVRfVVNFUl9DT05URU5UX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VTRVJf
Q09OVEVOVF9NQU5BR0VSLCBudWxscHRyKSk7Cit9CisKKy8qKgorICogd2Via2l0X3VzZXJfY29u
dGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldDoKKyAqIEBtYW5hZ2VyOiBBICNXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIKKyAqIEBzdHlsZXNoZWV0OiBBICNXZWJLaXRVc2VyU3R5bGVTaGVldAor
ICoKKyAqIEFkZHMgYSBzY3JpcHQgdG8gYW4gdXNlciBjb250ZW50IG1hbmFnZXIuIFRoZSBzYW1l
ICNXZWJLaXRVc2VyU2NyaXB0IGNhbgorICogYmUgcmV1c2VkIHdpdGggbXVsdGlwbGUgbWFuYWdl
cnMuCisgKgorICogU2luY2U6IDIuNgorICovCit2b2lkCit3ZWJraXRfdXNlcl9jb250ZW50X21h
bmFnZXJfYWRkX3N0eWxlX3NoZWV0KFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWFuYWdlciwg
V2ViS2l0VXNlclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfVVNFUl9DT05URU5UX01BTkFHRVIobWFuYWdlcikpOworICAgIGdfYXNzZXJ0
KHN0eWxlU2hlZXQpOworICAgIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+
YWRkVXNlclN0eWxlU2hlZXQod2Via2l0V2ViS2l0VXNlclN0eWxlU2hlZXRUb1VzZXJTdHlsZVNo
ZWV0KHN0eWxlU2hlZXQpKTsKK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfcmVtb3ZlX2FsbF9zdHlsZV9zaGVldHM6CisgKiBAbWFuYWdlcjogQSAjV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyCisgKgorICogUmVtb3ZlcyBhbGwgdXNlciBzdHlsZSBzaGVldHMgZnJvbSB0
aGUgdXNlciBjb250ZW50IG1hbmFnZXIuCisgKgorICogU2luY2U6IDIuNgorICovCit2b2lkCit3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVtb3ZlX2FsbF9zdHlsZV9zaGVldHMoV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VSKG1hbmFnZXIpKTsKKyAgICBtYW5hZ2VyLT5wcml2
LT51c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOworfQor
CitXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogd2Via2l0VXNlckNvbnRlbnRNYW5hZ2Vy
R2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiBt
YW5hZ2VyKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19VU0VSX0NPTlRF
TlRfTUFOQUdFUihtYW5hZ2VyKSwgbnVsbHB0cik7CisgICAgcmV0dXJuIG1hbmFnZXItPnByaXYt
PnVzZXJDb250ZW50Q29udHJvbGxlci5nZXQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjkxOTUwMGZhZWYwYzU4NWYwY2E0OTYzNjQyZTZlYjgzM2ExNzJlZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJD
b250ZW50TWFuYWdlci5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVm
aW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIu
aD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFVz
ZXJDb250ZW50TWFuYWdlcl9oCisjZGVmaW5lIFdlYktpdFVzZXJDb250ZW50TWFuYWdlcl9oCisK
KyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5l
cy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlckNvbnRlbnQuaD4KKworR19CRUdJTl9E
RUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSICAgICAgICAg
ICAgKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJL
SVRfVVNFUl9DT05URU5UX01BTkFHRVIob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5T
VEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfVVNFUl9DT05URU5UX01BTkFHRVIsIFdlYktp
dFVzZXJDb250ZW50TWFuYWdlcikpCisjZGVmaW5lIFdFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFO
QUdFUihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJL
SVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUikpCisjZGVmaW5lIFdFQktJVF9VU0VSX0NPTlRF
TlRfTUFOQUdFUl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFz
cyksICBXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUiwgV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfVVNFUl9DT05URU5UX01BTkFHRVJfQ0xB
U1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVf
VVNFUl9DT05URU5UX01BTkFHRVIpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9DT05URU5UX01BTkFH
RVJfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VC
S0lUX1RZUEVfVVNFUl9DT05URU5UX01BTkFHRVIsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlckNs
YXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJDb250ZW50TWFuYWdlciAgICAgICAg
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJDb250
ZW50TWFuYWdlckNsYXNzICAgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3M7Cit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZSBXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXJQcml2YXRlOworCisKK3N0cnVjdCBfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIHsK
KyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIC8qPCBwcml2YXRlID4qLworICAgIFdlYktpdFVz
ZXJDb250ZW50TWFuYWdlclByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFVzZXJD
b250ZW50TWFuYWdlckNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisg
ICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRf
cmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7
CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9pZCk7Cit9OworCisKK1dFQktJVF9B
UEkgR1R5cGUKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9nZXRfdHlwZSAgICAgICAgICAg
ICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICoKK3dl
YmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXcgICAgICAgICAgICAgICAgICAgICAodm9pZCk7
CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHls
ZV9zaGVldCAgICAgICAgIChXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKm1hbmFnZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVz
ZXJTdHlsZVNoZWV0ICAgICAqc3R5bGVzaGVldCk7CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF91
c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3N0eWxlX3NoZWV0cyAoV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyICptYW5hZ2VyKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1h
bmFnZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
c2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAwMjUzYWE0ZDI2MzVhNTBm
ZjU0NzFmMThhNzU3NzY3ZTExYzEyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUuaApAQCAt
MCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5k
ZWYgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdFVzZXJD
b250ZW50TWFuYWdlclByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk7Cit9OworCitXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiB3
ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIqKTsKKworI2VuZGlmIC8vIFdlYktpdFVzZXJDb250ZW50TWFu
YWdlclByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudFByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjYzMTE3OGRh
M2RmZjJmNDFmOTljZjE4ZmIyZDY3MmUwNzA2YWUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlLmgKQEAg
LTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZu
ZGVmIFdlYktpdFVzZXJDb250ZW50UHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdFVzZXJDb250ZW50
UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBVc2VyU3R5bGVTaGVldDsKK307CisKK2NvbnN0IFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0JiB3ZWJraXRXZWJLaXRVc2VyU3R5bGVTaGVldFRvVXNlclN0eWxlU2hlZXQo
V2ViS2l0VXNlclN0eWxlU2hlZXQqKTsKKworI2VuZGlmIC8vIFdlYktpdFVzZXJDb250ZW50UHJp
dmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuY3BwCmluZGV4IDYyODA4Yjc2Y2VmODZkYTcyMzNiMWQwMjYyYTJlY2M0NGMx
ZjMyNzIuLmJkZjU4YTQ5MzZhYzM1NjZmY2E0YzdmZTM4ZGFiMzk2Zjg4NjVkMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQu
Y3BwCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3R3JvdXBQcml2YXRlLmgi
CkBAIC0xMDUwLDEyICsxMDUyLDEzIEBAIHZvaWQgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExv
YWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1CiAgICAgY29u
dGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVxdWVzdHMucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOwog
fQogCi12b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJD
b250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJWaWV3R3Jv
dXAqIHdlYlZpZXdHcm91cCwgV2ViS2l0V2ViVmlldyogcmVsYXRlZFZpZXcpCit2b2lkIHdlYmtp
dFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0
LCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJWaWV3R3JvdXAqIHdlYlZpZXdHcm91
cCwgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB1c2VyQ29udGVudE1hbmFnZXIsIFdlYktpdFdl
YlZpZXcqIHJlbGF0ZWRWaWV3KQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpOwogICAgIFdlYlBhZ2VHcm91cCogcGFn
ZUdyb3VwID0gd2ViVmlld0dyb3VwID8gd2Via2l0V2ViVmlld0dyb3VwR2V0UGFnZUdyb3VwKHdl
YlZpZXdHcm91cCkgOiAwOwogICAgIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UgPSByZWxhdGVk
VmlldyA/IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShyZWxh
dGVkVmlldykpIDogbnVsbHB0cjsKLSAgICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uo
d2ViVmlld0Jhc2UsIGNvbnRleHQtPnByaXYtPmNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cCwgcmVs
YXRlZFBhZ2UpOworICAgIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiB1c2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSA9IHVzZXJDb250ZW50TWFuYWdlciA/IHdlYmtpdFVzZXJDb250ZW50
TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlcikg
OiBudWxscHRyOworICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3QmFz
ZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLCB1c2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSwgcmVsYXRlZFBhZ2UpOwogCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0g
d2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKHdlYlZpZXdCYXNlKTsKICAgICBjb250ZXh0LT5wcml2
LT53ZWJWaWV3cy5zZXQocGFnZS0+cGFnZUlEKCksIHdlYlZpZXcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRl
LmgKaW5kZXggMDY0NzRhMWVmMGFiMzI0MjQwYmUyZjExMTMwNDE0ZmIyMjllM2UxNC4uNzZkY2Qz
NjU4NmNhNGMzOTYwOGIxNjBlYTBhMzQ1ZjZkZDM5MDFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5o
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUg
IldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgog
I2luY2x1ZGUgIldlYktpdFdlYlZpZXdHcm91cC5oIgogI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCkBAIC00Miw3ICs0Myw3IEBAIFdlYktpdDo6V2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIHdlYmtpdFdlYkNvbnRleHRHZXRSZXF1ZXN0
TWFuYWdlcihXCiB2b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0b21Qcm90b2Nv
bChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgQVBJOjpVUkxS
ZXF1ZXN0Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3RvbVByb3RvY29s
KFdlYktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKIHZvaWQgd2Vi
a2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250
ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Ci12b2lkIHdlYmtpdFdlYkNvbnRleHRD
cmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2ViVmlldyosIFdl
YktpdFdlYlZpZXdHcm91cCosIFdlYktpdFdlYlZpZXcqKTsKK3ZvaWQgd2Via2l0V2ViQ29udGV4
dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3Kiwg
V2ViS2l0V2ViVmlld0dyb3VwKiwgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiwgV2ViS2l0V2Vi
VmlldyopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0V2ViVmlld0Rlc3Ryb3llZChXZWJLaXRXZWJD
b250ZXh0KiwgV2ViS2l0V2ViVmlldyopOwogV2ViS2l0V2ViVmlldyogd2Via2l0V2ViQ29udGV4
dEdldFdlYlZpZXdGb3JQYWdlKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXQ6OldlYlBhZ2VQcm94
eSopOwogV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJraXRXZWJDb250ZXh0R2V0RGVmYXVsdFdlYlZp
ZXdHcm91cChXZWJLaXRXZWJDb250ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDBmODU1ZTU3YmY3NTExYWFlZTZl
YjAyYTk5MzAyNzdiMjcxMDYxZTMuLmRkYTRiNWQ4ZWFmMzg5MDM1ZGRlYzA1MGY4OWJlNmVkZjU2
OTRkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwCkBAIC0xMzMsNiArMTMzLDcgQEAgZW51bSB7CiAgICAgUFJPUF9XRUJfQ09O
VEVYVCwKICAgICBQUk9QX1JFTEFURURfVklFVywKICAgICBQUk9QX0dST1VQLAorICAgIFBST1Bf
VVNFUl9DT05URU5UX01BTkFHRVIsCiAgICAgUFJPUF9USVRMRSwKICAgICBQUk9QX0VTVElNQVRF
RF9MT0FEX1BST0dSRVNTLAogICAgIFBST1BfRkFWSUNPTiwKQEAgLTE3MSw2ICsxNzIsNyBAQCBz
dHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICBHUmVmUHRyPFdlYktpdFNldHRpbmdz
PiBzZXR0aW5nczsKICAgICB1bnNpZ25lZCBsb25nIHNldHRpbmdzQ2hhbmdlZEhhbmRsZXJJRDsK
ICAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXdHcm91cD4gZ3JvdXA7CisgICAgR1JlZlB0cjxXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXI+IHVzZXJDb250ZW50TWFuYWdlcjsKICAgICBHUmVmUHRyPFdl
YktpdFdpbmRvd1Byb3BlcnRpZXM+IHdpbmRvd1Byb3BlcnRpZXM7CiAKICAgICBHUmVmUHRyPEdN
YWluTG9vcD4gbW9kYWxMb29wOwpAQCAtNTAxLDcgKzUwMyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKG9iamVjdCk7CiAgICAgV2ViS2l0V2ViVmlld1By
aXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQ
YWdlRm9yV2ViVmlldyhwcml2LT5jb250ZXh0LCB3ZWJWaWV3LCBwcml2LT5ncm91cC5nZXQoKSwg
cHJpdi0+cmVsYXRlZFZpZXcpOworICAgIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2Vi
Vmlldyhwcml2LT5jb250ZXh0LCB3ZWJWaWV3LCBwcml2LT5ncm91cC5nZXQoKSwgcHJpdi0+dXNl
ckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBwcml2LT5yZWxhdGVkVmlldyk7CiAgICAgLy8gVGhlIHJl
bGF0ZWQgdmlldyBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGUgY29uc3RydWN0aW9uLgogICAgIHBy
aXYtPnJlbGF0ZWRWaWV3ID0gbnVsbHB0cjsKIApAQCAtNTQyLDYgKzU0NCwxMSBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
SWQsIGNvbnN0IEdWYWx1ZQogICAgICAgICB3ZWJWaWV3LT5wcml2LT5ncm91cCA9IGdyb3VwID8g
V0VCS0lUX1dFQl9WSUVXX0dST1VQKGdyb3VwKSA6IDA7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KyAgICBjYXNlIFBST1BfVVNFUl9DT05URU5UX01BTkFHRVI6IHsKKyAgICAgICAgZ3BvaW50ZXIg
dXNlckNvbnRlbnRNYW5hZ2VyID0gZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKTsKKyAgICAgICAg
d2ViVmlldy0+cHJpdi0+dXNlckNvbnRlbnRNYW5hZ2VyID0gdXNlckNvbnRlbnRNYW5hZ2VyID8g
V0VCS0lUX1VTRVJfQ09OVEVOVF9NQU5BR0VSKHVzZXJDb250ZW50TWFuYWdlcikgOiBudWxscHRy
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQUk9QX1pPT01fTEVWRUw6CiAgICAg
ICAgIHdlYmtpdF93ZWJfdmlld19zZXRfem9vbV9sZXZlbCh3ZWJWaWV3LCBnX3ZhbHVlX2dldF9k
b3VibGUodmFsdWUpKTsKICAgICAgICAgYnJlYWs7CkBAIC01NjEsNiArNTY4LDkgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBHVmFsdWUqIHZhbHUKICAgICBjYXNlIFBST1BfR1JPVVA6CiAgICAgICAgIGdfdmFsdWVf
c2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF9ncm91cCh3ZWJWaWV3KSk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9VU0VSX0NPTlRFTlRfTUFOQUdFUjoKKyAgICAg
ICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29u
dGVudF9tYW5hZ2VyKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1RJ
VExFOgogICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYlZpZXctPnByaXYtPnRp
dGxlLmRhdGEoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNjcxLDYgKzY4MSwyMSBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZp
ZXdDbGFzcykKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFS
QU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKIAogICAgIC8qKgorICAg
ICAqIFdlYktpdFdlYlZpZXc6dXNlci1jb250ZW50LW1hbmFnZXI6CisgICAgICoKKyAgICAgKiBU
aGUgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlciBvZiB0aGUgdmlldy4KKyAgICAgKi8KKyAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisg
ICAgICAgIFBST1BfVVNFUl9DT05URU5UX01BTkFHRVIsCisgICAgICAgIGdfcGFyYW1fc3BlY19v
YmplY3QoCisgICAgICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLAorICAgICAgICAgICAg
XygiV2ViVmlldyB1c2VyIGNvbnRlbnQgbWFuYWdlciIpLAorICAgICAgICAgICAgXygiVGhlIFdl
YktpdFVzZXJDb250ZW50TWFuYWdlciBvZiB0aGUgdmlldyIpLAorICAgICAgICAgICAgV0VCS0lU
X1RZUEVfVVNFUl9DT05URU5UX01BTkFHRVIsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFy
YW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkp
KSk7CisKKyAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3OnRpdGxlOgogICAgICAqCiAgICAg
ICogVGhlIG1haW4gZnJhbWUgZG9jdW1lbnQgdGl0bGUgb2YgdGhpcyAjV2ViS2l0V2ViVmlldy4g
SWYKQEAgLTE5MjQsNiArMTk0OSw4IEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193
aXRoX2NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKICAqIFlvdSBjYW4gYWxzbyB1
c2UgdGhpcyBtZXRob2QgdG8gaW1wbGVtZW50IG90aGVyIHByb2Nlc3MgbW9kZWxzIGJhc2VkIG9u
ICVXRUJLSVRfUFJPQ0VTU19NT0RFTF9NVUxUSVBMRV9TRUNPTkRBUllfUFJPQ0VTU0VTLAogICog
bGlrZSBmb3IgZXhhbXBsZSwgc2hhcmluZyB0aGUgc2FtZSB3ZWIgcHJvY2VzcyBmb3IgYWxsIHRo
ZSB2aWV3cyBpbiB0aGUgc2FtZSBzZWN1cml0eSBkb21haW4uCiAgKgorICogVGhlIG5ld2x5IGNy
ZWF0ZWQgI1dlYktpdFdlYlZpZXcgd2lsbCBhbHNvIGhhdmUgdGhlIHNhbWUgI1dlYktpdFVzZXJD
b250ZW50TWFuYWdlciBhcyBAd2ViX3ZpZXcuCisgKgogICogUmV0dXJuczogKHRyYW5zZmVyIGZ1
bGwpOiBUaGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWRnZXQKICAqCiAgKiBTaW5j
ZTogMi40CkBAIC0xOTMyLDcgKzE5NTksMTAgQEAgR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdf
bmV3X3dpdGhfcmVsYXRlZF92aWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBudWxscHRyKTsK
IAotICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklF
VywgInJlbGF0ZWQtdmlldyIsIHdlYlZpZXcsIG51bGxwdHIpKTsKKyAgICByZXR1cm4gR1RLX1dJ
REdFVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCisgICAgICAgICJ1c2VyLWNv
bnRlbnQtbWFuYWdlciIsIHdlYlZpZXctPnByaXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwK
KyAgICAgICAgInJlbGF0ZWQtdmlldyIsIHdlYlZpZXcsCisgICAgICAgIG51bGxwdHIpKTsKIH0K
IAogLyoqCkBAIC0xOTUzLDYgKzE5ODMsMTkgQEAgR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdf
bmV3X3dpdGhfZ3JvdXAoV2ViS2l0V2ViVmlld0dyb3VwKiBncm91cCkKIH0KIAogLyoqCisgKiB3
ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXI6CisgKiBAdXNlcl9j
b250ZW50X21hbmFnZXI6IGEgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlci4KKyAqCisgKiBSZXR1
cm5zOiBUaGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWRnZXQuCisgKi8KK0d0a1dp
ZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktp
dFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFOQUdFUih1c2VyQ29udGVudE1h
bmFnZXIpLCBudWxscHRyKTsKKworICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9XRUJfVklFVywgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRN
YW5hZ2VyLCBudWxscHRyKSk7Cit9CisKKy8qKgogICogd2Via2l0X3dlYl92aWV3X2dldF9jb250
ZXh0OgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKgpAQCAtMTk4Niw2ICsyMDI5
LDIzIEBAIFdlYktpdFdlYlZpZXdHcm91cCogd2Via2l0X3dlYl92aWV3X2dldF9ncm91cChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogfQogCiAvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfdXNl
cl9jb250ZW50X21hbmFnZXI6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisg
KiBHZXRzIHRoZSB1c2VyIGNvbnRlbnQgbWFuYWdlciBhc3NvY2lhdGVkIHRvIEB3ZWJfdmlldy4K
KyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IHRoZSAjV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyIGFzc29jaWF0ZWQgd2l0aAorICogICAgdGhlIHZpZXcKKyAqIFNpbmNlOiAyLjYKKyAq
LworV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29u
dGVudF9tYW5hZ2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBudWxscHRyKTsKKworICAgIHJl
dHVybiB3ZWJWaWV3LT5wcml2LT51c2VyQ29udGVudE1hbmFnZXIuZ2V0KCk7Cit9CisKKy8qKgog
ICogd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpOgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJW
aWV3CiAgKiBAdXJpOiBhbiBVUkkgc3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggNTQ5ZDI1NGNjMjZlYjM3ZTJmZmVjYzAx
ZWRhNjcwM2QyMTk3Y2NjYS4uOWJmMmNjNTQ2YmM0NTYyMzJjMDk3ZWU2ZjliYjJmOWZlYzIwMzc4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2NyaXB0RGlh
bG9nLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJJbnNwZWN0b3IuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFdlYlJlc291cmNlLmg+CkBAIC0yNjAsNiArMjYxLDkgQEAgd2Via2l0X3dlYl92aWV3
X25ld193aXRoX3JlbGF0ZWRfdmlldyAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldwogV0VC
S0lUX0FQSSBHdGtXaWRnZXQgKgogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2dyb3VwICAgICAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlld0dyb3VwICAgICAgICAqZ3JvdXApOwogCitX
RUJLSVRfQVBJIEd0a1dpZGdldCAqCit3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250
ZW50X21hbmFnZXIgICAgICAgIChXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgICp1c2VyX2NvbnRl
bnRfbWFuYWdlcik7CisKIFdFQktJVF9BUEkgV2ViS2l0V2ViQ29udGV4dCAqCiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2NvbnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKQEAgLTQ1NSw2ICs0NTksMTAgQEAgV0VCS0lUX0FQ
SSBjYWlyb19zdXJmYWNlX3QgKgogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2gg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5
bmNSZXN1bHQgICAgICAgICAgICAgICpyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgKipl
cnJvcik7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICoKK3dlYmtpdF93
ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKaW5kZXggNzFjN2NlNWFkMmIwMjk3ZDNjNGUxMzM2NDcxYTVhZDExMDVmMzkxOC4uOThk
ZmZkOTlkYjM1NDIyOTg5NjNkNmM1ODg4NWE2MzZjN2I4MWIwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAt
NDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAiV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJWaWV3QmFzZUlucHV0TWV0
aG9kRmlsdGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ2xpcGJvYXJkVXRpbGl0aWVzR3RrLmg+CkBAIC05NDEsMTAgKzk0MiwxMCBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0KFdlYktpdFdlYlZp
ZXdCYXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogICAgIGNvbnRhaW5lckNsYXNzLT5mb3JhbGwgPSB3
ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lckZvcmFsbDsKIH0KIAotV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91
cCogcGFnZUdyb3VwLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKQorV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VH
cm91cCogcGFnZUdyb3VwLCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRl
bnRDb250cm9sbGVyLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKQogewogICAgIFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFV19CQVNFLCBOVUxMKSk7Ci0gICAgd2Via2l0V2Vi
Vmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYmtpdFdlYlZpZXdCYXNlLCBjb250ZXh0LCBwYWdlR3Jv
dXAsIHJlbGF0ZWRQYWdlKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uod2Vi
a2l0V2ViVmlld0Jhc2UsIGNvbnRleHQsIHBhZ2VHcm91cCwgdXNlckNvbnRlbnRDb250cm9sbGVy
LCByZWxhdGVkUGFnZSk7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlOwogfQogCkBAIC05
NzcsMTMgKzk3OCwxNCBAQCBzdGF0aWMgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogfQogI2VuZGlmIC8vIEhBVkUoR1RL
X1NDQUxFX0ZBQ1RPUikKIAotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBXZWJDb250ZXh0KiBjb250ZXh0LCBX
ZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSkKK3ZvaWQg
d2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRX
ZWJWaWV3QmFzZSwgV2ViQ29udGV4dCogY29udGV4dCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAs
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiB1c2VyQ29udGVudENvbnRyb2xsZXIsIFdl
YlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
KiBwcml2ID0gd2Via2l0V2ViVmlld0Jhc2UtPnByaXY7CiAKICAgICBXZWJQYWdlQ29uZmlndXJh
dGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKICAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdl
R3JvdXAgPSBwYWdlR3JvdXA7CiAgICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2Ug
PSByZWxhdGVkUGFnZTsKKyAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRy
b2xsZXIgPSB1c2VyQ29udGVudENvbnRyb2xsZXI7CiAgICAgcHJpdi0+cGFnZVByb3h5ID0gY29u
dGV4dC0+Y3JlYXRlV2ViUGFnZSgqcHJpdi0+cGFnZUNsaWVudCwgc3RkOjptb3ZlKHdlYlBhZ2VD
b25maWd1cmF0aW9uKSk7CiAgICAgcHJpdi0+cGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4IGI5YzM4YzI2NTg1MjRiNTZhZWVmYTJlZTNk
NTVhOGU4YWY5ZDMzZTQuLmRmZTIyODVlOWE3YWE3NmZlYjM0ZWU3YTk4ZjkzNjJiZjAyYmM1YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJX
ZWJLaXRXZWJWaWV3QmFzZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCi1XZWJLaXRX
ZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0Kiwg
V2ViS2l0OjpXZWJQYWdlR3JvdXAqLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOworV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYktpdDo6V2ViQ29udGV4dCosIFdl
YktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiBHdGtJTUNvbnRleHQqIHdlYmtpdFdlYlZpZXdC
YXNlR2V0SU1Db250ZXh0KFdlYktpdFdlYlZpZXdCYXNlKik7CiBXZWJLaXQ6OldlYlBhZ2VQcm94
eSogd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdlYktpdFdlYlZpZXdCYXNlKik7Ci12b2lkIHdl
YmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSosIFdlYktpdDo6
V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpXZWJQYWdlUHJveHkq
KTsKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNl
KiwgV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQYWdlR3JvdXAqLCBXZWJLaXQ6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb29sdGlwVGV4dChXZWJLaXRXZWJWaWV3QmFzZSosIGNv
bnN0IGNoYXIqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb29sdGlwQXJlYShXZWJLaXRX
ZWJWaWV3QmFzZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VGb3J3YXJkTmV4dEtleUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmNw
cAppbmRleCBiMjFlNzlmNjgzZGE3ZWZmZDE5OGRkZmM4MmEzN2U5YmYzZGMyNGMwLi5jOGE2NTA3
YThlNTk4NmZjYWQ2YjY4NGI3ZTNiZDU5OWJiOWIyMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5jcHAKQEAgLTIz
Niw2MyArMjM2LDMgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfc2V0X3NldHRpbmdzKFdl
YktpdFdlYlZpZXdHcm91cCogZ3JvdXAsIFdlYktpdFNldHRpbmcKICAgICB3ZWJraXRXZWJWaWV3
R3JvdXBBdHRhY2hTZXR0aW5nc1RvUGFnZUdyb3VwKGdyb3VwKTsKICAgICBnX29iamVjdF9ub3Rp
ZnkoR19PQkpFQ1QoZ3JvdXApLCAic2V0dGluZ3MiKTsKIH0KLQotc3RhdGljIFBhc3NSZWZQdHI8
QVBJOjpBcnJheT4gdG9BUElBcnJheShjb25zdCBjaGFyKiBjb25zdCogbGlzdCkKLXsKLSAgICBp
ZiAoIWxpc3QpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9i
amVjdD4gPiBlbnRyaWVzOwotICAgIHdoaWxlICgqbGlzdCkgewotICAgICAgICBlbnRyaWVzLmFw
cGVuZChBUEk6OlN0cmluZzo6Y3JlYXRlRnJvbVVURjhTdHJpbmcoKmxpc3QpKTsKLSAgICAgICAg
bGlzdCsrOwotICAgIH0KLSAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShl
bnRyaWVzKSk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl92aWV3X2dyb3VwX2FkZF91c2VyX3N0
eWxlX3NoZWV0OgotICogQGdyb3VwOiBhICNXZWJLaXRXZWJWaWV3R3JvdXAKLSAqIEBzb3VyY2U6
IHRoZSBzb3VyY2Ugb2YgdGhlIHN0eWxlX3NoZWV0IHRvIGluamVjdAotICogQGJhc2VfdXJpOiAo
YWxsb3ctbm9uZSk6IHRoZSBiYXNlIFVSSSB0byB1c2Ugd2hlbiBwcm9jZXNzaW5nIHRoZSBzdHls
ZV9zaGVldCBjb250ZW50cyBvciAlTlVMTCBmb3IgYWJvdXQ6YmxhbmsKLSAqIEB3aGl0ZWxpc3Q6
IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBhIHdoaXRlbGlzdCBvZiBV
UkkgcGF0dGVybnMgb3IgJU5VTEwKLSAqIEBibGFja2xpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0
ZWQ9MSkgKGFsbG93LW5vbmUpOiBhIGJsYWNrbGlzdCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwK
LSAqIEBpbmplY3RlZF9mcmFtZXM6IGEgI1dlYktpdEluamVjdGVkQ29udGVudEZyYW1lcyBkZXNj
cmliaW5nIHRvIHdoaWNoIGZyYW1lcyB0aGUgc3R5bGVfc2hlZXQgc2hvdWxkIGFwcGx5Ci0gKgot
ICogSW5qZWN0IGFuIGV4dGVybmFsIHN0eWxlIHNoZWV0IGludG8gcGFnZXMuIEl0IGlzIHBvc3Np
YmxlIHRvIG9ubHkgYXBwbHkgdGhlIHN0eWxlIHNoZWV0Ci0gKiB0byBzb21lIFVSSXMgYnkgcGFz
c2luZyBub24tbnVsbCB2YWx1ZXMgZm9yIEB3aGl0ZWxpc3Qgb3IgQGJsYWNrbGlzdC4gUGFzc2lu
ZyBhICVOVUxMCi0gKiB3aGl0ZWxpc3QgaW1wbGllcyB0aGF0IGFsbCBVUklzIGFyZSBvbiB0aGUg
d2hpdGVsaXN0LiBUaGUgc3R5bGUgc2hlZXQgaXMgYXBwbGllZCBpZiBhIFVSSSBtYXRjaGVzCi0g
KiB0aGUgd2hpdGVsaXN0IGFuZCBub3QgdGhlIGJsYWNrbGlzdC4gVVJJIHBhdHRlcm5zIG11c3Qg
YmUgb2YgdGhlIGZvcm0gW3Byb3RvY29sXTovL1tob3N0XS9bcGF0aF0KLSAqIHdoZXJlIHRoZSBo
b3N0IGFuZCBwYXRoIGNvbXBvbmVudHMgY2FuIGNvbnRhaW4gdGhlIHdpbGRjYXJkIGNoYXJhY3Rl
ciAoJyonKSB0byByZXByZXNlbnQgemVybwotICogb3IgbW9yZSBvdGhlciBjaGFyYWN0ZXJzLgot
ICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldChXZWJL
aXRXZWJWaWV3R3JvdXAqIGdyb3VwLCBjb25zdCBjaGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqIGJh
c2VVUkksIGNvbnN0IGNoYXIqIGNvbnN0KiB3aGl0ZWxpc3QsIGNvbnN0IGNoYXIqIGNvbnN0KiBi
bGFja2xpc3QsIFdlYktpdEluamVjdGVkQ29udGVudEZyYW1lcyBpbmplY3RlZEZyYW1lcykKLXsK
LSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFV19HUk9VUChncm91cCkpOwot
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoc291cmNlKTsKLQotICAgIFJlZlB0cjxBUEk6OkFycmF5PiB3
ZWJXaGl0ZWxpc3QgPSB0b0FQSUFycmF5KHdoaXRlbGlzdCk7Ci0gICAgUmVmUHRyPEFQSTo6QXJy
YXk+IHdlYkJsYWNrbGlzdCA9IHRvQVBJQXJyYXkoYmxhY2tsaXN0KTsKLQotICAgIC8vIFdlIGFs
d2F5cyB1c2UgVXNlclN0eWxlVXNlckxldmVsIHRvIG1hdGNoIHRoZSBiZWhhdmlvciBvZiBXS1Bh
Z2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0LgotICAgIGdyb3VwLT5wcml2LT5wYWdlR3JvdXAtPmFk
ZFVzZXJTdHlsZVNoZWV0KAotICAgICAgICBTdHJpbmc6OmZyb21VVEY4KHNvdXJjZSksCi0gICAg
ICAgIFN0cmluZzo6ZnJvbVVURjgoYmFzZVVSSSksCi0gICAgICAgIHdlYldoaXRlbGlzdC5nZXQo
KSwKLSAgICAgICAgd2ViQmxhY2tsaXN0LmdldCgpLAotICAgICAgICB0b1dlYkNvcmVVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSwKLSAgICAgICAgV2ViQ29yZTo6VXNl
clN0eWxlVXNlckxldmVsKTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVt
b3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0czoKLSAqIEBncm91cDogYSAjV2ViS2l0V2ViVmlld0dy
b3VwCi0gKgotICogUmVtb3ZlIGFsbCBzdHlsZSBzaGVldHMgcHJldmlvdXNseSBpbmplY3RlZCBp
bnRvIHRoaXMgI1dlYktpdFdlYlZpZXdHcm91cCAKLSAqIHZpYSB3ZWJraXRfd2ViX3ZpZXdfZ3Jv
dXBfYWRkX3VzZXJfc3R5bGVfc2hlZXQoKS4KLSAqLwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ3Jv
dXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyhXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3Vw
KQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXX0dST1VQKGdyb3Vw
KSk7Ci0gICAgZ3JvdXAtPnByaXYtPnBhZ2VHcm91cC0+cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRz
KCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3JvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdHcm91cC5oCmluZGV4IDY4NWYxOTkwNGVkY2ZkOWM2YjVhZGIwYjUzYmUwN2E3NDU2
MzU4ZDguLjgzNmVhMTczNGYzNjg5MjBjNDhjYzNmNDRiMjdiYjI5YmZlZTVkMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91
cC5oCkBAIC04NCwxNyArODQsNiBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfdmlld19n
cm91cF9zZXRfc2V0dGluZ3MgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3R3JvdXAgICAg
ICAgICAgKmdyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdFNldHRpbmdzICAgICAgICAgICAgICAqc2V0dGluZ3MpOwogCi1XRUJL
SVRfQVBJIHZvaWQKLXdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldCAg
ICAgICAgIChXZWJLaXRXZWJWaWV3R3JvdXAgICAgICAgICAgICpncm91cCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAg
ICAgICAgICAgICAgICpzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAqYmFzZV91cmks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgKiBjb25zdCAgICAgICAgICAqd2hpdGVsaXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogY29uc3QgICAg
ICAgICAgKmJsYWNrbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRJbmplY3RlZENvbnRlbnRGcmFtZXMgICBpbmplY3RlZF9mcmFt
ZXMpOwotCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF93ZWJfdmlld19ncm91cF9yZW1vdmVfYWxs
X3VzZXJfc3R5bGVfc2hlZXRzIChXZWJLaXRXZWJWaWV3R3JvdXAgICAgICAgICAgKmdyb3VwKTsK
LQogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCA1
NDgxM2M5MDBhZDZlYzJmMTE3YjE2MjFiNDE4ODBjMjFkYzlkY2FlLi4yZDVjYTE1OWU3N2Q3Y2Fh
MzUxZjE3ZDBlMmFjNGI0MmRkNTBiOTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAg
LTczLDYgKzczLDQ2IEBAIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdHlwZQogPC9TRUNUSU9OPgog
CiA8U0VDVElPTj4KKzxGSUxFPldlYktpdFVzZXJDb250ZW50PC9GSUxFPgorPFRJVExFPldlYktp
dFVzZXJDb250ZW50PC9USVRMRT4KK1dlYktpdFVzZXJTdHlsZVNoZWV0CitXZWJLaXRVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzCitXZWJLaXRVc2VyU3R5bGVMZXZlbAord2Via2l0X3VzZXJfc3R5
bGVfc2hlZXRfcmVmCit3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZgord2Via2l0X3VzZXJf
c3R5bGVfc2hlZXRfbmV3CisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VCS0lUX1RZUEVfVVNF
Ul9TVFlMRV9TSEVFVAorCis8U1VCU0VDVElPTiBQcml2YXRlPgord2Via2l0X3VzZXJfc3R5bGVf
c2hlZXRfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXI8L0ZJTEU+Cis8VElUTEU+V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPC9U
SVRMRT4KK1dlYktpdFVzZXJDb250ZW50TWFuYWdlcgord2Via2l0X3VzZXJfY29udGVudF9tYW5h
Z2VyX25ldword2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldAord2Vi
a2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzCisKKzxTVUJT
RUNUSU9OIFN0YW5kYXJkPgorV0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VSCitXRUJLSVRf
SVNfVVNFUl9DT05URU5UX01BTkFHRVJfQ0xBU1MKK1dFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9N
QU5BR0VSCitXRUJLSVRfVVNFUl9DT05URU5UX01BTkFHRVIKK1dFQktJVF9VU0VSX0NPTlRFTlRf
TUFOQUdFUl9DTEFTUworV0VCS0lUX1VTRVJfQ09OVEVOVF9NQU5BR0VSX0dFVF9DTEFTUworV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktp
dFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9n
ZXRfdHlwZQorCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0V2ViVmlldzwv
RklMRT4KIDxUSVRMRT5XZWJLaXRXZWJWaWV3PC9USVRMRT4KIFdlYktpdFdlYlZpZXcKQEAgLTk2
LDggKzEzNiwxMCBAQCB3ZWJraXRfd2ViX3ZpZXdfbmV3CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dp
dGhfY29udGV4dAogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRfdmlldwogd2Via2l0
X3dlYl92aWV3X25ld193aXRoX2dyb3VwCit3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9j
b250ZW50X21hbmFnZXIKIHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dAogd2Via2l0X3dlYl92
aWV3X2dldF9ncm91cAord2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcgog
d2Via2l0X3dlYl92aWV3X2xvYWRfdXJpCiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sCiB3ZWJr
aXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVfaHRtbApAQCAtMTAyNSw4ICsxMDY3LDYgQEAgd2Vi
a2l0X3dlYl92aWV3X2dyb3VwX25ldwogd2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF9uYW1lCiB3
ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X3NldHRpbmdzCiB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBf
c2V0X3NldHRpbmdzCi13ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3VzZXJfc3R5bGVfc2hlZXQK
LXdlYmtpdF93ZWJfdmlld19ncm91cF9yZW1vdmVfYWxsX3VzZXJfc3R5bGVfc2hlZXRzCiAKIDxT
VUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0V2ViVmlld0dyb3VwQ2xhc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCA0NjQ5MGEyZTAxNGQ2M2ZhYWIw
YTMwNzJjOTAzODQ5MzQ0OGEyMzEyLi41MmNjYWQzMDYyYmU4YzU4M2UwNWJlZTZhYzc5NWU5MDY4
NGY1MTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBA
IC02MSw2ICs2MSw4IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXNwb25zZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlckNv
bnRlbnQuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oPgog
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VmVyc2lvbi5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViSW5zcGVjdG9yLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAppbmRleCBmMGRkNmM3
OTI0MDNjODlhYzg4MTk4OGIzYjI5ZDNjNTYzMGJlNWM1Li43MTA1ZmE0NzEzOTNmMTM0NTFjNmE5
N2FhMGJjNGY4ZmRkNTU1OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS5jcHAKQEAgLTk3LDYgKzk3LDIyIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkKICAgICAgICAgcHJvY2Vzc0FuZENvdW50Lmtl
eS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZUFsbFVzZXJTY3JpcHRzKCksIG1faWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTdHlsZVNoZWV0KFdlYkNvcmU6OlVzZXJT
dHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0KQoreworICAgIG1fdXNlclN0eWxlU2hlZXRzLmFwcGVu
ZChzdGQ6Om1vdmUodXNlclN0eWxlU2hlZXQpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc0Fu
ZENvdW50IDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3NBbmRDb3VudC5rZXktPmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2Vy
U3R5bGVTaGVldHMoeyBtX3VzZXJTdHlsZVNoZWV0cy5sYXN0KCkgfSksIG1faWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJT
dHlsZVNoZWV0cygpCit7CisgICAgbV91c2VyU3R5bGVTaGVldHMuY2xlYXIoKTsKKworICAgIGZv
ciAoYXV0byYgcHJvY2Vzc0FuZENvdW50IDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3NB
bmRDb3VudC5rZXktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKSwgbV9pZGVudGlmaWVyKTsKK30K
KwogYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKiBoYW5kbGVyKQogewogICAgIGZvciAo
YXV0byYgZXhpc3RpbmdIYW5kbGVyIDogbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMudmFsdWVzKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXggY2ZmNmYyOWQ0
ODY0ZTBhNzY4NDlmZmFmMmVhMDQ0OWQ3NGRiMDg0OS4uN2RjMDU5NWFhMmI3YzJkZTgyYmZjMDgz
MzRhMTczYzZiOTQxZGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgVXNlclNjcmlwdDsKK2NsYXNzIFVzZXJTdHlsZVNoZWV0OwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDYgKzYwLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
VXNlclNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0KTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJT
Y3JpcHRzKCk7CiAKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KFdlYkNvcmU6OlVzZXJTdHls
ZVNoZWV0KTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOworCiAgICAgLy8g
UmV0dXJucyBmYWxzZSBpZiB0aGVyZSB3YXMgYSBuYW1lIGNvbmZsaWN0LgogICAgIGJvb2wgYWRk
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKik7CiAgICAg
dm9pZCByZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZyYpOwpAQCAt
NzUsNiArNzksNyBAQCBwcml2YXRlOgogICAgIEhhc2hDb3VudGVkU2V0PFdlYlByb2Nlc3NQcm94
eSo+IG1fcHJvY2Vzc2VzOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlVzZXJTY3JpcHQ+IG1fdXNl
clNjcmlwdHM7CisgICAgVmVjdG9yPFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0PiBtX3VzZXJTdHls
ZVNoZWV0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXI+PiBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVyczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggNTc5
YjA5OWY4NGQyMDY4NzE3MzUwZDIyNjRlN2Y5MDg1MTQyYTc0My4uMWVkYTdlOGVmZTg2ZGNhMTVj
ODczYjEzMjhmMGExOTZhNjQ5ZWEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgV2Vi
UGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdl
KCkKIHsKICAgICBBU1NFUlQobV9wYWdlKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7
Ci0gICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0
ZSgmcGFnZSgpLT5wcm9jZXNzKCkuY29udGV4dCgpLCBpbnNwZWN0b3JQYWdlR3JvdXAoKSwgbV9w
YWdlKSk7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFz
ZUNyZWF0ZSgmcGFnZSgpLT5wcm9jZXNzKCkuY29udGV4dCgpLCBpbnNwZWN0b3JQYWdlR3JvdXAo
KSwgbnVsbHB0ciwgbV9wYWdlKSk7CiAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09C
SkVDVChtX2luc3BlY3RvclZpZXcpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1faW5zcGVj
dG9yVmlldykpOwogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dF
Ql9WSUVXX0JBU0UobV9pbnNwZWN0b3JWaWV3KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5jcHAKaW5kZXggZDlkYzE1YzU4NDU1YjkwODkyNzU0NmYwNjZkODI5NWQxMzUzZjY5
Mi4uMjRmMjE0ODE1YTQzY2RiMTEwZWY1MGE0NzA5MjViNWQ0NDViYzlmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9s
bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1VzZXJTdHlsZVNoZWV0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQpAQCAtOTIsNiArOTMs
MTkgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRz
KCkKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlVXNlclNjcmlwdHMobWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4m
IHVzZXJTdHlsZVNoZWV0cykKK3sKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHVzZXJTdHlsZVNoZWV0
IDogdXNlclN0eWxlU2hlZXRzKSB7CisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5h
ZGRVc2VyU3R5bGVTaGVldChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwKKyAgICAgICAgICAgIHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+KHVzZXJTdHlsZVNoZWV0KSwg
SW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CisgICAgfQorfQorCit2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKK3sKKyAgICBtX3VzZXJD
b250ZW50Q29udHJvbGxlci0+cmVtb3ZlVXNlclN0eWxlU2hlZXRzKG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKTsKK30KKwogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiBjbGFzcyBX
ZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHk+LCBwdWJsaWMgV2ViQ29yZTo6VXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjo6Q2xpZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5oCmluZGV4IDRjODQ2OTk2NGNmZmQwZjY5YTljNjdlYWZhZGZkMDVl
ZmE1NTY5OTcuLjYzOWMyMGUwMDBhZWQ3OThjMmI3M2NkMWYwNGNmYjZjMmI1ZDY0ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtNTQsNiArNTQsOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgYWRkVXNlclNjcmlwdHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVzZXJTY3JpcHQ+
JiB1c2VyU2NyaXB0cyk7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cygpOwogCisgICAg
dm9pZCBhZGRVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVzZXJTdHlsZVNo
ZWV0PiYgdXNlclN0eWxlU2hlZXRzKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0
cygpOworCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0IFZlY3Rv
cjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4mIHNjcmlwdE1lc3NhZ2VIYW5kbGVycyk7
CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIodWludDY0X3QpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4IGQw
Y2ZjMWY3NjY3ODFmYzBkNzM3NTE2Y2IyYWI1MmJjOTU2NTM5NzQuLmE5M2ZhNDdjMDY4NDg3ZjVj
YWQ2ZTVhZTJmNWVlMTZlZmJiNTAxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw5IEBAIG1lc3NhZ2VzIC0+IFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlciB7CiAgICAgQWRkVXNlclNjcmlwdHMoVmVjdG9yPFdlYkNvcmU6
OlVzZXJTY3JpcHQ+IHVzZXJTY3JpcHRzKTsKICAgICBSZW1vdmVBbGxVc2VyU2NyaXB0cygpCiAK
KyAgICBBZGRVc2VyU3R5bGVTaGVldHMoVmVjdG9yPFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0PiB1
c2VyU3R5bGVTaGhldHMpOworICAgIFJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCisKICAgICBB
ZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKFZlY3RvcjxXZWJLaXQ6OldlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVySGFuZGxlPiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpOwogICAgIFJlbW92ZVVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5j
bWFrZQppbmRleCBkZTQ4NTA0MDIwYzlhMGQ5ZTQxMjkxMmE3YjczYWY1NDE5NDFiYjgwLi5kMDE1
NzM0OTJiOTRiZThmZWQxY2RlYjI3ZWE5NjJhMmYwYzVmNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFr
ZQpAQCAtNjUsNiArNjUsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfV0VCR0wgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1hI
Ul9USU1FT1VUIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05F
VFdPUktfUFJPQ0VTUyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKFdURl9V
U0VfVElMRURfQkFDS0lOR19TVE9SRSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfVVNFUl9NRVNTQUdFX0hBTkRMRVJTIE9OKQogCiBzZXQoRU5BQkxFX1gxMV9U
QVJHRVQgT04gQ0FDSEUgQk9PTCAiV2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIFgx
MSB3aW5kb3dpbmcgdGFyZ2V0LiIpCiBzZXQoRU5BQkxFX1dBWUxBTkRfVEFSR0VUIE9GRiBDQUNI
RSBCT09MICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgV2F5bGFuZCB3aW5kb3dp
bmcgdGFyZ2V0LiIpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYzA0NzUxYWI5MDBiNmVkNzZiY2MyMTQzZjRhMWUzYzFmNjljZDQ2MC4uYTlkMDUw
Y2FmMzViMDU0MWVhODU4NWZjNGQyOWQ1OGI3Yzc2Y2RhMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE0LTA3LTAz
ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS10gTW92ZSB1c2VyIHN0eWxlIHNoZWV0IEFQSSBvdXQgb2YgV2ViS2l0V2ViVmlld0dyb3Vw
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ1NTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVz
IHRlc3RpbmcgdXNlciBzdHlsZSBzaGVldCBpbmplY3Rpb24gZnJvbQorICAgICAgICBUZXN0V2Vi
S2l0V2ViVmlld0dyb3VwIGFuZCBtb3ZlcyB0aGF0IGludG8gYSBuZXcKKyAgICAgICAgVGVzdFdl
YktpdFVzZXJDb250ZW50TWFuYWdlciwgYWRhcHRpbmcgdGhlIGV4aXN0aW5nIHRlc3RzIHRvIHRo
ZSBuZXcKKyAgICAgICAgQVBJLiBBbHNvLCBpdCBjb250YWlucyBhIG5ldyB0ZXN0IGNhc2UgZm9y
CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcigp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChVc2VyQ29udGVudE1hbmFn
ZXJUZXN0OjpVc2VyQ29udGVudE1hbmFnZXJUZXN0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3TmV3
V2l0aFVzZXJDb250ZW50TWFuYWdlcik6CisgICAgICAgIChpc1N0eWxlU2hlZXRJbmplY3RlZEZv
clVSTEF0UGF0aCk6CisgICAgICAgIChmaWxsVVJMTGlzdEZyb21QYXRocyk6CisgICAgICAgIChy
ZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyk6CisgICAgICAgICh0ZXN0
VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNoZWV0KToKKyAgICAgICAgKHNlcnZlckNh
bGxiYWNrKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3Jv
dXAuY3BwOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVyQWxsKToKKyAgICAg
ICAgKGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKTogRGVsZXRlZC4KKyAgICAgICAg
KGZpbGxVUkxMaXN0RnJvbVBhdGhzKTogRGVsZXRlZC4KKyAgICAgICAgKHJlbW92ZU9sZEluamVj
dGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3RXZWJW
aWV3R3JvdXBJbmplY3RlZFN0eWxlU2hlZXQpOiBEZWxldGVkLgorICAgICAgICAoc2VydmVyQ2Fs
bGJhY2spOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsv
V2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OldlYlZpZXdUZXN0KToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0Lmg6CisKIDIw
MTQtMDctMDIgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKaW5kZXggZjY2Yjcz
MGE4OGI2NTAxZmZiOGQyZjE0YjliMWIzMTYxNzhmNTkzNS4uMTcyYjM4YWEwODc0NzJiMTM1MTMx
YTYyODQzMTRhMDRkOTQ5ZGI1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dApAQCAtMTEyLDYgKzExMiw3IEBAIEFERF9XSzJf
VEVTVChUZXN0V2ViVmlld0VkaXRvciBUZXN0V2ViVmlld0VkaXRvci5jcHApCiBBRERfV0syX1RF
U1QoVGVzdFdlYktpdFdlYlZpZXdHcm91cCBUZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcCkKIEFE
RF9XSzJfVEVTVChUZXN0V2ViS2l0V2ViQ29udGV4dCBUZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAp
CiBBRERfV0syX1RFU1QoVGVzdFdlYktpdFdlYlZpZXcgVGVzdFdlYktpdFdlYlZpZXcuY3BwKQor
QUREX1dLMl9URVNUKFRlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgVGVzdFdlYktpdFVzZXJD
b250ZW50TWFuYWdlci5jcHApCiAKIGlmIChBVFNQSV9GT1VORCkKICAgICBBRERfV0syX1RFU1Qo
QWNjZXNzaWJpbGl0eVRlc3RTZXJ2ZXIgQWNjZXNzaWJpbGl0eVRlc3RTZXJ2ZXIuY3BwKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmZDk2YTVh
MDcxNGU0N2Q1ZDJlZjMzYTc5YzlhNGNmOGVmNTdkYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFVzZXJDb250ZW50TWFu
YWdlci5jcHAKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdh
bGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2
ZXIuaCIKKyNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgorI2luY2x1ZGUgPGNzdGRhcmc+CisjaW5j
bHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKworY2xhc3MgVXNlckNvbnRlbnRNYW5hZ2VyVGVzdCA6
IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVS
RShVc2VyQ29udGVudE1hbmFnZXJUZXN0KTsKKworICAgIFVzZXJDb250ZW50TWFuYWdlclRlc3Qo
KQorICAgICAgICA6IFdlYlZpZXdUZXN0KFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdf
bmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2Vy
X25ldygpKSkpCisgICAgeworICAgICAgICBtX3VzZXJDb250ZW50TWFuYWdlciA9IHdlYmtpdF93
ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIobV93ZWJWaWV3KTsKKyAgICAgICAgZ19v
YmplY3RfdW5yZWYobV91c2VyQ29udGVudE1hbmFnZXIpOworICAgICAgICBhc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1fdXNlckNvbnRlbnRNYW5hZ2VyKSk7
CisgICAgfQorCisgICAgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiBtX3VzZXJDb250ZW50TWFu
YWdlcjsKK307CisKK3N0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOworCisvLyBUaGVz
ZSBhcmUgYWxsIGhlcmUgc28gdGhhdCB0aGV5IGNhbiBiZSBjaGFuZ2VkIGVhc2lseSwgaWYgbmVj
ZXNzYXJ5Lgorc3RhdGljIGNvbnN0IGNoYXIqIGtTdHlsZVNoZWV0SFRNTCA9ICI8aHRtbD48ZGl2
IGlkPVwic3R5bGVkRWxlbWVudFwiPlN3ZWV0IHN0eWxleiE8L2Rpdj48L2h0bWw+IjsKK3N0YXRp
YyBjb25zdCBjaGFyKiBrSW5qZWN0ZWRTdHlsZVNoZWV0ID0gIiNzdHlsZWRFbGVtZW50IHsgZm9u
dC13ZWlnaHQ6IGJvbGQ7IH0iOworc3RhdGljIGNvbnN0IGNoYXIqIGtTdHlsZVNoZWV0VGVzdFNj
cmlwdCA9ICJnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdHlsZWRF
bGVtZW50JykpWydmb250LXdlaWdodCddIjsKK3N0YXRpYyBjb25zdCBjaGFyKiBrU3R5bGVTaGVl
dFRlc3RTY3JpcHRSZXN1bHQgPSAiYm9sZCI7CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3TmV3
V2l0aFVzZXJDb250ZW50TWFuYWdlcihUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAg
IEdSZWZQdHI8V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPiB1c2VyQ29udGVudE1hbmFnZXIxID0g
YWRvcHRHUmVmKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXcoKSk7CisgICAgdGVzdC0+
YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh1c2VyQ29udGVu
dE1hbmFnZXIxLmdldCgpKSk7CisgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3MSA9
IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21h
bmFnZXIodXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSkpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93
ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldzEuZ2V0KCkpID09IHVzZXJD
b250ZW50TWFuYWdlcjEuZ2V0KCkpOworCisgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJW
aWV3MiA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIGdfYXNz
ZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldzIuZ2V0
KCkpICE9IHVzZXJDb250ZW50TWFuYWdlcjEuZ2V0KCkpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93
ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldzIuZ2V0KCkpID09IG51bGxw
dHIpOworfQorCitzdGF0aWMgYm9vbCBpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aChX
ZWJWaWV3VGVzdCogdGVzdCwgY29uc3QgY2hhciogcGF0aCkKK3sKKyAgICB0ZXN0LT5sb2FkVVJJ
KGtTZXJ2ZXItPmdldFVSSUZvclBhdGgocGF0aCkuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKKworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2
YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGtTdHlsZVNoZWV0VGVzdFNjcmlwdCwgJmVycm9y
Lm91dFB0cigpKTsKKyAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2Vy
dCghZXJyb3IuZ2V0KCkpOworCisgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXN1bHRTdHJpbmcoV2Vi
Vmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwor
ICAgIHJldHVybiAhZ19zdHJjbXAwKHJlc3VsdFN0cmluZy5nZXQoKSwga1N0eWxlU2hlZXRUZXN0
U2NyaXB0UmVzdWx0KTsKK30KKworc3RhdGljIHZvaWQgZmlsbFVSTExpc3RGcm9tUGF0aHMoY2hh
cioqIGxpc3QsIGNvbnN0IGNoYXIqIHBhdGgsIC4uLikKK3sKKyAgICB2YV9saXN0IGFyZ3VtZW50
TGlzdDsKKyAgICB2YV9zdGFydChhcmd1bWVudExpc3QsIHBhdGgpOworCisgICAgaW50IGkgPSAw
OworICAgIHdoaWxlIChwYXRoKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBtdXN0IHVzZSBhIHdp
bGRjYXJkIGZvciB0aGUgaG9zdCBoZXJlIHVudGlsIGh0dHA6Ly93a2J1Zy5jb20vMTEyNDc2IGlz
IGZpeGVkLgorICAgICAgICAvLyBVbnRpbCB0aGF0IHRpbWUgcGF0dGVybnMgd2l0aCBwb3J0IG51
bWJlcnMgaW4gdGhlbSB3aWxsIG5vdCBwcm9wZXJseSBtYXRjaCBVUkxzIHdpdGggcG9ydCBudW1i
ZXJzLgorICAgICAgICBsaXN0W2krK10gPSBnX3N0cmR1cF9wcmludGYoImh0dHA6Ly8qLyVzKiIs
IHBhdGgpOworICAgICAgICBwYXRoID0gdmFfYXJnKGFyZ3VtZW50TGlzdCwgY29uc3QgY2hhciop
OworICAgIH0KK30KKworc3RhdGljIHZvaWQgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0Fu
ZFJlc2V0TGlzdHMoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB1c2VyQ29udGVudE1hbmFnZXIs
IGNoYXIqKiB3aGl0ZWxpc3QsIGNoYXIqKiBibGFja2xpc3QpCit7CisgICAgd2Via2l0X3VzZXJf
Y29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzKHVzZXJDb250ZW50TWFuYWdl
cik7CisKKyAgICB3aGlsZSAoKndoaXRlbGlzdCkgeworICAgICAgICBnX2ZyZWUoKndoaXRlbGlz
dCk7CisgICAgICAgICp3aGl0ZWxpc3QgPSAwOworICAgICAgICB3aGl0ZWxpc3QrKzsKKyAgICB9
CisKKyAgICB3aGlsZSAoKmJsYWNrbGlzdCkgeworICAgICAgICBnX2ZyZWUoKmJsYWNrbGlzdCk7
CisgICAgICAgICpibGFja2xpc3QgPSAwOworICAgICAgICBibGFja2xpc3QrKzsKKyAgICB9Cit9
CisKK3N0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJJbmplY3RlZFN0eWxlU2hlZXQo
VXNlckNvbnRlbnRNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBjaGFy
KiB3aGl0ZWxpc3RbM10gPSB7IDAsIDAsIDAgfTsKKyAgICBjaGFyKiBibGFja2xpc3RbM10gPSB7
IDAsIDAsIDAgfTsKKworICAgIHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExp
c3RzKHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisK
KyAgICAvLyBXaXRob3V0IGEgd2hpdGVsaXN0IG9yIGEgYmxhY2tsaXN0IGFsbCBVUkxzIHNob3Vs
ZCBoYXZlIHRoZSBpbmplY3RlZCBzdHlsZSBzaGVldC4KKyAgICBzdGF0aWMgY29uc3QgY2hhciog
cmFuZG9tUGF0aCA9ICJzb21lcmFuZG9tcGF0aCI7CisgICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVl
dEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKKyAgICBXZWJLaXRVc2Vy
U3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5q
ZWN0ZWRTdHlsZVNoZWV0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBX
RUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9VU0VSLCBudWxscHRyLCBudWxscHRyKTsKKyAgICB3ZWJr
aXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KHRlc3QtPm1fdXNlckNvbnRl
bnRNYW5hZ2VyLCBzdHlsZVNoZWV0KTsKKyAgICB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJl
ZihzdHlsZVNoZWV0KTsKKyAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0
UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7CisKKyAgICByZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hl
ZXRzQW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlciwgd2hpdGVsaXN0LCBi
bGFja2xpc3QpOworCisgICAgZmlsbFVSTExpc3RGcm9tUGF0aHMoYmxhY2tsaXN0LCByYW5kb21Q
YXRoLCAwKTsKKyAgICBzdHlsZVNoZWV0ID0gd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGtJ
bmplY3RlZFN0eWxlU2hlZXQsIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVMs
IFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsIG51bGxwdHIsIGJsYWNrbGlzdCk7CisgICAg
d2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldCh0ZXN0LT5tX3VzZXJD
b250ZW50TWFuYWdlciwgc3R5bGVTaGVldCk7CisgICAgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRf
dW5yZWYoc3R5bGVTaGVldCk7CisgICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9y
VVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKKyAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJ
bmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCAic29tZW90aGVycmFuZG9tcGF0aCIpKTsKKworICAg
IHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNv
bnRlbnRNYW5hZ2VyLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogaW5UaGVXaGl0ZUxpc3QgPSAiaW50aGV3aGl0ZWxpc3QiOworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBub3RJbldoaXRlbGlzdCA9ICJub3RpbnRoZXdoaXRlbGlzdCI7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0ID0gImludGhld2hpdGVsaXN0
YW5kYmxhY2tsaXN0IjsKKworICAgIGZpbGxVUkxMaXN0RnJvbVBhdGhzKHdoaXRlbGlzdCwgaW5U
aGVXaGl0ZUxpc3QsIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0LCAwKTsKKyAgICBmaWxsVVJM
TGlzdEZyb21QYXRocyhibGFja2xpc3QsIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0LCAwKTsK
KyAgICBzdHlsZVNoZWV0ID0gd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGtJbmplY3RlZFN0
eWxlU2hlZXQsIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVMsIFdFQktJVF9V
U0VSX1NUWUxFX0xFVkVMX1VTRVIsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKKyAgICB3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KHRlc3QtPm1fdXNlckNvbnRlbnRN
YW5hZ2VyLCBzdHlsZVNoZWV0KTsKKyAgICB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZihz
dHlsZVNoZWV0KTsKKyAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0
aCh0ZXN0LCBpblRoZVdoaXRlTGlzdCkpOworICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmpl
Y3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCkpOworICAg
IGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBub3RJbldo
aXRlbGlzdCkpOworCisgICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gY2xlYW4gdXAgdGhlIGVudmly
b25tZW50IGJlZm9yZSBvdGhlciB0ZXN0cy4KKyAgICByZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hl
ZXRzQW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlciwgd2hpdGVsaXN0LCBi
bGFja2xpc3QpOworfQorCitzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBz
ZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxl
KiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKK3sKKyAgICBzb3VwX21lc3NhZ2Vfc2V0
X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAgc291cF9tZXNzYWdlX2JvZHlf
YXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywga1N0eWxl
U2hlZXRIVE1MLCBzdHJsZW4oa1N0eWxlU2hlZXRIVE1MKSk7CisgICAgc291cF9tZXNzYWdlX2Jv
ZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7Cit9CisKK3ZvaWQgYmVmb3JlQWxs
KCkKK3sKKyAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKKyAgICBrU2VydmVy
LT5ydW4oc2VydmVyQ2FsbGJhY2spOworCisgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
Im5ldy13aXRoLXVzZXItY29udGVudC1tYW5hZ2VyIiwgdGVzdFdlYlZpZXdOZXdXaXRoVXNlckNv
bnRlbnRNYW5hZ2VyKTsKKyAgICBVc2VyQ29udGVudE1hbmFnZXJUZXN0OjphZGQoIldlYktpdFVz
ZXJDb250ZW50TWFuYWdlciIsICJpbmplY3RlZC1zdHlsZS1zaGVldCIsIHRlc3RVc2VyQ29udGVu
dE1hbmFnZXJJbmplY3RlZFN0eWxlU2hlZXQpOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKKyAg
ICBkZWxldGUga1NlcnZlcjsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcAppbmRleCA0
NDhhYmQyZmU1MzJjNmMxNGZlMjMzOWYzYzE3NjdmMGE5ZGE4MDMxLi5jY2JhODlkNDYyZTQ0YTI1
M2VlOGZhZTQ2ZGI2ZDY5ZWU0ODU2ZWM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3Bw
CkBAIC0yNiwxNCArMjYsNiBAQAogI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgogI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAotc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtT
ZXJ2ZXI7Ci0KLS8vIFRoZXNlIGFyZSBhbGwgaGVyZSBzbyB0aGF0IHRoZXkgY2FuIGJlIGNoYW5n
ZWQgZWFzaWx5LCBpZiBuZWNlc3NhcnkuCi1zdGF0aWMgY29uc3QgY2hhcioga1N0eWxlU2hlZXRI
VE1MID0gIjxodG1sPjxkaXYgaWQ9XCJzdHlsZWRFbGVtZW50XCI+U3dlZXQgc3R5bGV6ITwvZGl2
PjwvaHRtbD4iOwotc3RhdGljIGNvbnN0IGNoYXIqIGtJbmplY3RlZFN0eWxlU2hlZXQgPSAiI3N0
eWxlZEVsZW1lbnQgeyBmb250LXdlaWdodDogYm9sZDsgfSI7Ci1zdGF0aWMgY29uc3QgY2hhciog
a1N0eWxlU2hlZXRUZXN0U2NyaXB0ID0gImdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3N0eWxlZEVsZW1lbnQnKSlbJ2ZvbnQtd2VpZ2h0J10iOwotc3RhdGljIGNvbnN0
IGNoYXIqIGtTdHlsZVNoZWV0VGVzdFNjcmlwdFJlc3VsdCA9ICJib2xkIjsKLQogc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdHcm91cERlZmF1bHQoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsK
ICAgICAvLyBEZWZhdWx0IGdyb3VwIGlzIHNoYXJlZCBieSBhbGwgV2ViVmlld3MgYnkgZGVmYXVs
dC4KQEAgLTk4LDEwOSArOTAsMTQgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdHcm91cFNldHRp
bmdzKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92
aWV3X2dyb3VwX2dldF9zZXR0aW5ncyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdlYlZpZXcx
LmdldCgpKSkgPT0gd2ViVmlldzJTZXR0aW5ncyk7CiB9CiAKLXN0YXRpYyBib29sIGlzU3R5bGVT
aGVldEluamVjdGVkRm9yVVJMQXRQYXRoKFdlYlZpZXdUZXN0KiB0ZXN0LCBjb25zdCBjaGFyKiBw
YXRoKQotewotICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aChwYXRoKS5k
YXRhKCkpOwotICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotCi0gICAgR1VuaXF1
ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFz
Y3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoa1N0
eWxlU2hlZXRUZXN0U2NyaXB0LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFz
Y3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0KLSAgICBHVW5pcXVl
UHRyPGNoYXI+IHJlc3VsdFN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0
cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7Ci0gICAgcmV0dXJuICFnX3N0cmNtcDAocmVzdWx0U3Ry
aW5nLmdldCgpLCBrU3R5bGVTaGVldFRlc3RTY3JpcHRSZXN1bHQpOwotfQotCi1zdGF0aWMgdm9p
ZCBmaWxsVVJMTGlzdEZyb21QYXRocyhjaGFyKiogbGlzdCwgY29uc3QgY2hhciogcGF0aCwgLi4u
KQotewotICAgIHZhX2xpc3QgYXJndW1lbnRMaXN0OwotICAgIHZhX3N0YXJ0KGFyZ3VtZW50TGlz
dCwgcGF0aCk7Ci0KLSAgICBpbnQgaSA9IDA7Ci0gICAgd2hpbGUgKHBhdGgpIHsKLSAgICAgICAg
Ly8gRklYTUU6IFdlIG11c3QgdXNlIGEgd2lsZGNhcmQgZm9yIHRoZSBob3N0IGhlcmUgdW50aWwg
aHR0cDovL3drYnVnLmNvbS8xMTI0NzYgaXMgZml4ZWQuCi0gICAgICAgIC8vIFVudGlsIHRoYXQg
dGltZSBwYXR0ZXJucyB3aXRoIHBvcnQgbnVtYmVycyBpbiB0aGVtIHdpbGwgbm90IHByb3Blcmx5
IG1hdGNoIFVSTHMgd2l0aCBwb3J0IG51bWJlcnMuCi0gICAgICAgIGxpc3RbaSsrXSA9IGdfc3Ry
ZHVwX3ByaW50ZigiaHR0cDovLyovJXMqIiwgcGF0aCk7Ci0gICAgICAgIHBhdGggPSB2YV9hcmco
YXJndW1lbnRMaXN0LCBjb25zdCBjaGFyKik7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCByZW1v
dmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyhXZWJLaXRXZWJWaWV3R3JvdXAq
IGdyb3VwLCBjaGFyKiogd2hpdGVsaXN0LCBjaGFyKiogYmxhY2tsaXN0KQotewotICAgIHdlYmtp
dF93ZWJfdmlld19ncm91cF9yZW1vdmVfYWxsX3VzZXJfc3R5bGVfc2hlZXRzKGdyb3VwKTsKLQot
ICAgIHdoaWxlICgqd2hpdGVsaXN0KSB7Ci0gICAgICAgIGdfZnJlZSgqd2hpdGVsaXN0KTsKLSAg
ICAgICAgKndoaXRlbGlzdCA9IDA7Ci0gICAgICAgIHdoaXRlbGlzdCsrOwotICAgIH0KLQotICAg
IHdoaWxlICgqYmxhY2tsaXN0KSB7Ci0gICAgICAgIGdfZnJlZSgqYmxhY2tsaXN0KTsKLSAgICAg
ICAgKmJsYWNrbGlzdCA9IDA7Ci0gICAgICAgIGJsYWNrbGlzdCsrOwotICAgIH0KLX0KLQotc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdHcm91cEluamVjdGVkU3R5bGVTaGVldChXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKLXsKLSAgICBXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwID0g
d2Via2l0X3dlYl92aWV3X2dldF9ncm91cCh0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGNoYXIqIHdo
aXRlbGlzdFszXSA9IHsgMCwgMCwgMCB9OwotICAgIGNoYXIqIGJsYWNrbGlzdFszXSA9IHsgMCwg
MCwgMCB9OwotCi0gICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMo
Z3JvdXAsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKLQotICAgIC8vIFdpdGhvdXQgYSB3aGl0ZWxp
c3Qgb3IgYSBibGFja2xpc3QgYWxsIFVSTHMgc2hvdWxkIGhhdmUgdGhlIGluamVjdGVkIHN0eWxl
IHNoZWV0LgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiByYW5kb21QYXRoID0gInNvbWVyYW5kb21w
YXRoIjsKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVz
dCwgcmFuZG9tUGF0aCkpOwotICAgIHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9zdHls
ZV9zaGVldChncm91cCwga0luamVjdGVkU3R5bGVTaGVldCwgMCwgMCwgMCwgV0VCS0lUX0lOSkVD
VEVEX0NPTlRFTlRfRlJBTUVTX0FMTCk7Ci0gICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0
ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOwotCi0gICAgcmVtb3ZlT2xkSW5qZWN0
ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoZ3JvdXAsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsK
LQotICAgIGZpbGxVUkxMaXN0RnJvbVBhdGhzKGJsYWNrbGlzdCwgcmFuZG9tUGF0aCwgMCk7Ci0g
ICAgd2Via2l0X3dlYl92aWV3X2dyb3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0KGdyb3VwLCBrSW5q
ZWN0ZWRTdHlsZVNoZWV0LCAwLCAwLCBibGFja2xpc3QsIFdFQktJVF9JTkpFQ1RFRF9DT05URU5U
X0ZSQU1FU19BTEwpOwotICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0
UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7Ci0gICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0
ZWRGb3JVUkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRvbXBhdGgiKSk7Ci0KLSAgICByZW1v
dmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyhncm91cCwgd2hpdGVsaXN0LCBi
bGFja2xpc3QpOwotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGluVGhlV2hpdGVMaXN0ID0gImlu
dGhld2hpdGVsaXN0IjsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogbm90SW5XaGl0ZWxpc3QgPSAi
bm90aW50aGV3aGl0ZWxpc3QiOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpblRoZVdoaXRlTGlz
dEFuZEJsYWNrTGlzdCA9ICJpbnRoZXdoaXRlbGlzdGFuZGJsYWNrbGlzdCI7Ci0KLSAgICBmaWxs
VVJMTGlzdEZyb21QYXRocyh3aGl0ZWxpc3QsIGluVGhlV2hpdGVMaXN0LCBpblRoZVdoaXRlTGlz
dEFuZEJsYWNrTGlzdCwgMCk7Ci0gICAgZmlsbFVSTExpc3RGcm9tUGF0aHMoYmxhY2tsaXN0LCBp
blRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCwgMCk7Ci0gICAgd2Via2l0X3dlYl92aWV3X2dyb3Vw
X2FkZF91c2VyX3N0eWxlX3NoZWV0KGdyb3VwLCBrSW5qZWN0ZWRTdHlsZVNoZWV0LCAwLCB3aGl0
ZWxpc3QsIGJsYWNrbGlzdCwgV0VCS0lUX0lOSkVDVEVEX0NPTlRFTlRfRlJBTUVTX0FMTCk7Ci0g
ICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgaW5UaGVX
aGl0ZUxpc3QpKTsKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBh
dGgodGVzdCwgaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xpc3QpKTsKLSAgICBnX2Fzc2VydCghaXNT
dHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgbm90SW5XaGl0ZWxpc3QpKTsKLQot
ICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGNsZWFuIHVwIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUg
b3RoZXIgdGVzdHMuCi0gICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlz
dHMoZ3JvdXAsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKLX0KLQotc3RhdGljIHZvaWQgc2VydmVy
Q2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3Qg
Y2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCi17
Ci0gICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwot
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQ
X01FTU9SWV9TVEFUSUMsIGtTdHlsZVNoZWV0SFRNTCwgc3RybGVuKGtTdHlsZVNoZWV0SFRNTCkp
OwotICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkp
OwotfQotCiB2b2lkIGJlZm9yZUFsbCgpCiB7Ci0gICAga1NlcnZlciA9IG5ldyBXZWJLaXRUZXN0
U2VydmVyKCk7Ci0gICAga1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKLQogICAgIFRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlld0dyb3VwIiwgImRlZmF1bHQtZ3JvdXAiLCB0ZXN0V2ViVmlld0dy
b3VwRGVmYXVsdCk7CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3R3JvdXAiLCAibmV3LWdy
b3VwIiwgdGVzdFdlYlZpZXdHcm91cE5ld0dyb3VwKTsKICAgICBUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAibmV3LXdpdGgtZ3JvdXAiLCB0ZXN0V2ViVmlld05ld1dpdGhHcm91cCk7CiAgICAg
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3R3JvdXAiLCAic2V0dGluZ3MiLCB0ZXN0V2ViVmlld0dy
b3VwU2V0dGluZ3MpOwotICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXdHcm91cCIs
ICJpbmplY3RlZC1zdHlsZS1zaGVldCIsIHRlc3RXZWJWaWV3R3JvdXBJbmplY3RlZFN0eWxlU2hl
ZXQpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKIHsKLSAgICBkZWxldGUga1NlcnZlcjsKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3Qu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHAK
aW5kZXggMTE5OGIwOGJlNjgzZDU5MzkyNDZkOTBhNTBlM2IxZDRlZjczYzAzNy4uZWJkMDNiNGQ0
YWE4MDJjYWU2ODI5MGU0ZGQ2NzIyNWQwNGMzN2U1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHAKQEAgLTI1LDcgKzI1LDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyR3RrLmg+CiAKIFdlYlZpZXdUZXN0OjpXZWJW
aWV3VGVzdCgpCi0gICAgOiBtX3dlYlZpZXcoV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X3JlZl9z
aW5rKHdlYmtpdF93ZWJfdmlld19uZXcoKSkpKQorICAgIDogV2ViVmlld1Rlc3QoV0VCS0lUX1dF
Ql9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSkpIHsgfQorCitXZWJWaWV3VGVzdDo6V2ViVmll
d1Rlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyhXRUJLSVRfV0VC
X1ZJRVcoZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldykpKQogICAgICwgbV9tYWluTG9vcChnX21h
aW5fbG9vcF9uZXcoMCwgVFJVRSkpCiAgICAgLCBtX3BhcmVudFdpbmRvdygwKQogICAgICwgbV9q
YXZhc2NyaXB0UmVzdWx0KDApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9X
ZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQy
R3RrL1dlYlZpZXdUZXN0LmgKaW5kZXggZjQ1ZTEyNWM5ZDRmYTJkY2Q2NDNkNjE0MGFhYTM3ZGYx
NjBiYTM4OC4uMmJjZjU2MzU5OGE3ZWZmODZhMjg2MTAxMmQwY2ZhODc0MTk5N2FkMSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5oCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuaApAQCAt
MjgsNiArMjgsNyBAQAogY2xhc3MgV2ViVmlld1Rlc3Q6IHB1YmxpYyBUZXN0IHsKIHB1YmxpYzoK
ICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFdlYlZpZXdUZXN0KTsKKyAgICBXZWJWaWV3VGVz
dChXZWJLaXRXZWJWaWV3Kik7CiAgICAgV2ViVmlld1Rlc3QoKTsKICAgICB2aXJ0dWFsIH5XZWJW
aWV3VGVzdCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234337</attachid>
            <date>2014-07-03 06:15:52 -0700</date>
            <delta_ts>2014-07-03 06:38:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134551-20140703161800.patch</filename>
            <type>text/plain</type>
            <size>75502</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmU0MTFiYWUwMmY2NDE4
ZjY5NTM3ZTNjZWQ4MWEyZjlkNDZkYjg2OS4uYWMxMWM2YjZjZDcwZGExNzg0NjE2OWFjNDk3MTYz
OTM5ZWYzMzBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE0LTA3LTAzICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
TW92ZSB1c2VyIHN0eWxlIHNoZWV0IEFQSSBvdXQgb2YgV2ViS2l0V2ViVmlld0dyb3VwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ1NTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBJbmNsdWRlIHRoZSBuZXcgc291cmNlIGZpbGVzIGluIHRoZSBidWlsZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdDcmVh
dGUpOgorICAgICAgICBBZGFwdCB0byB0aGUgYWRkaXRpb25hbCB3ZWJraXRXZWJWaWV3QmFzZUNy
ZWF0ZVdlYlBhZ2UoKSBwYXJhbWV0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlckNvbnRlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRvVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyk6CisgICAgICAgICh0b1VzZXJTdHlsZUxldmVsKToKKyAgICAgICAgKHRvU3RyaW5n
VmVjdG9yKToKKyAgICAgICAgKF9XZWJLaXRVc2VyU3R5bGVTaGVldDo6X1dlYktpdFVzZXJTdHls
ZVNoZWV0KToKKyAgICAgICAgKHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZik6CisgICAgICAg
ICh3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZik6CisgICAgICAgICh3ZWJraXRfdXNlcl9z
dHlsZV9zaGVldF9uZXcpOgorICAgICAgICAod2Via2l0V2ViS2l0VXNlclN0eWxlU2hlZXRUb1Vz
ZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXJQcml2YXRlOjpfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZSk6CisgICAgICAgICh3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfbmV3KToKKyAgICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQpOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9t
YW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzKToKKyAgICAgICAgKHdlYmtpdFVzZXJDb250
ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudFByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOiBB
ZGQgYSBuZXcgcGFyYW1ldGVyIHRvIGFsbG93CisgICAgICAgIHBhc3NpbmcgdGhlIFdlYktpdFVz
ZXJDb250ZW50TWFuYWdlciB0aGF0IHRoZSB3ZWIgdmlldyB3aWxsIHVzZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdDb25zdHJ1Y3RlZCk6IEFkZGVkIGhhbmRsaW5nIG9mIHRoZQorICAgICAgICAidXNl
ci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5IG9uIGNvbnN0cnVjdGlvbi4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZQorICAgICAgICAi
dXNlci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5LgorICAgICAgICAod2Via2l0V2ViVmlld0dl
dFByb3BlcnR5KTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlCisgICAgICAgICJ1c2VyLWNvbnRlbnQt
bWFuYWdlciIgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6
IEFkZGVkIHRoZSAidXNlci1jb250ZW50LW1hbmFnZXIiCisgICAgICAgIHByb3BlcnR5IGRlZmlu
aXRpb24gdG8gdGhlIFdlYktpdFdlYlZpZXcgY2xhc3MuCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KTogTWFkZSByZWxhdGVkIHZpZXdzIHNoYXJlCisgICAg
ICAgIHRoZSBzYW1lIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciB1c2VkIGJ5IHRoZSB2aWV3IHRo
ZXkgYXJlCisgICAgICAgIHJlbGF0ZWQgdG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3
X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZCBuZXcgQVBJIG1ldGhvZHMuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VDcmVhdGUpOiBBZGRlZCBhIHBhcmFtZXRlciB0byBwYXNzIHRoZSB1c2Vy
CisgICAgICAgIGNvbnRlbnQgbWFuYWdlci4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlV2ViUGFnZSk6IEFkZGVkIGEgcGFyYW1ldGVyIHRvIHBhc3MgdGhlIHVzZXIKKyAgICAgICAg
Y29udGVudCBtYW5hZ2VyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3JvdXAuY3BwOiBSZW1vdmVkIHRoZSBiaXRzIHJlbGF0ZWQKKyAgICAgICAgdG8g
dXNlciBzdHlsZSBzaGVldCBzdXBwb3J0IGZyb20gV2ViS2l0V2ViVmlld0dyb3VwLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncyk6CisgICAgICAgICh0b0FQSUFy
cmF5KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9z
dHlsZV9zaGVldCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVt
b3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmg6IERlbGV0ZWQgdGhlIEFQSSBtZXRob2RzCisg
ICAgICAgIGZvciB1c2VyIHN0eWxlIHNoZWV0IGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZGVkIHRoZSBuZXcgQVBJ
CisgICAgICAgIGZ1bmN0aW9ucyBhbmQgdHlwZXMsIGFuZCByZW1vdmVkIHRoZSBtZXRob2RzIHdo
aWNoIGFyZSBubyBsb25nZXIKKyAgICAgICAgYXZhaWxhYmxlIGluIFdlYktpdFdlYlZpZXdHcm91
cC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEFkZCB0aGUgbmV3IGhl
YWRlcnMuCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcDogQWRkZWQKKyAgICAgICAgbWV0aG9kcyB0byBhZGQgYW5kIHJlbW92
ZSB1c2VyIHN0eWxlIHNoZWV0cywgYWxpa2UgdGhvc2UgdXNlZCBmb3IKKyAgICAgICAgdXNlciBz
Y3JpcHRzLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaDogRGl0dG8uCisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2Up
OgorICAgICAgICBBZGFwdCB0byB0aGUgYWRkaXRpb25hbCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0
ZVdlYlBhZ2UoKSBwYXJhbWV0ZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOiBBZGRlZCBtZXRob2RzCisgICAgICAgIHRvIGFk
ZCBhbmQgcmVtb3ZlIHVzZXIgc3R5bGUgc2hlZXRzLCBhbGlrZSB0aG9zZSB1c2VkIGZvciB1c2Vy
IHNjcmlwdHMuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRk
VXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6IERpdHRvLgorICAgICAgICAqIFdl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICBEaXR0by4KKwogMjAxNC0wNy0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTcwNjc2KTogW0dUS10g
VUkgcHJvY2VzcyBjcmFzaGVzIHdoZW4gdGhlIFdlYiBQcm9jZXNzIGNyYXNoZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggZDA3ZDI4MTU1NmJiYzgyMDA1ZDY2NTc3ZmI0ODYxZWM2YTZjYjM0Mi4u
ODA1YWI2ZjFlMWZjNGYzMjRkMzMzNmIyZWYyYjhkYzgxMTUyODlhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTkyNSw2ICs5MjUsOCBAQCBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUQxRXYKIF9fWk43V2ViQ29yZTIxVVJMQnlSZW1vdmluZ1VzZXJJbmZvRVA1TlNVUkwKIF9f
Wk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMTNhZGRVc2VyU2NyaXB0RVJOU18xNURP
TVdyYXBwZXJXb3JsZEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzEwVXNlclNjcmlwdEVOUzNfMTRk
ZWZhdWx0X2RlbGV0ZUlTNV9FRUVFCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxl
cjE3cmVtb3ZlVXNlclNjcmlwdHNFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQorX19aTjdXZWJDb3Jl
MjFVc2VyQ29udGVudENvbnRyb2xsZXIxN2FkZFVzZXJTdHlsZVNoZWV0RVJOU18xNURPTVdyYXBw
ZXJXb3JsZEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzE0VXNlclN0eWxlU2hlZXRFTlMzXzE0ZGVm
YXVsdF9kZWxldGVJUzVfRUVFRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKK19fWk43V2Vi
Q29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMjFyZW1vdmVVc2VyU3R5bGVTaGVldHNFUk5TXzE1
RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXIzMWFk
ZFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JFUk5TXzI4VXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvckUKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMzRyZW1vdmVVc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yRVJOU18yOFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3JFCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxlcjZjcmVhdGVFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhNGJhOWFhOWFjMGIxMTNlMGViOGM5ZDc0Zjc5M2I0NzU2
ZGI5MTFlLi44MThlMGVmN2E1MDZlMDQ5MzUyMWMwOTdhMmI1MmFiZTZhNGZhZGRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjEwLDYgKzIxMCwxMiBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaAogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKKyAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5oCisgICAgVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlckNvbnRlbnQuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNl
ckNvbnRlbnRQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
clByaXZhdGUuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
ci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFZlcnNpb24uaC5pbgogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwCkBAIC0zNTMsNiArMzU5LDggQEAgc2V0KFdlYktpdDJHVEtfSU5T
VEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklSZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklSZXNwb25zZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdC5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlckNvbnRlbnQuaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmgKICAgICAke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAKaW5kZXggNmYwYzA0YmYyNzNkYmZmNjFkOWIwZmJk
YzI3YTgwZDUzOGYyYzMyMy4uYmM3YjgzZjk1YTQ3MmU1MzczYzA3ODE2YWZhZWVlMTRjNWQyMWQw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcApA
QCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV0tWaWV3UmVmIFdL
Vmlld0NyZWF0ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwUmVmKQogewotICAgIHJldHVybiB0b0FQSSh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSh0b0lt
cGwoY29udGV4dFJlZiksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCBudWxscHRyKSk7CisgICAgcmV0
dXJuIHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSwgdG9J
bXBsKHBhZ2VHcm91cFJlZiksIG51bGxwdHIsIG51bGxwdHIpKTsKIH0KIAogV0tQYWdlUmVmIFdL
Vmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVh
YTk1MTI3MzQwZTllZTc3M2Q4NThjMTMxZTNiNDU2ZjczM2VhYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50LmNwcApA
QCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnQuaCIKKworI2lu
Y2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudFByaXZh
dGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLyoqCisgKiBT
RUNUSU9OOldlYktpdFVzZXJDb250ZW50CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IERlZmluZXMg
dXNlciBjb250ZW50IHR5cGVzIHdoaWNoIGFmZmVjdCB3ZWIgcGFnZXMuCisgKiBAdGl0bGU6IFVz
ZXIgY29udGVudAorICoKKyAqIFNlZSBhbHNvOiAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCisg
KgorICogU2luY2U6IDIuNgorICovCisKK3N0YXRpYyBpbmxpbmUgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoV2ViS2l0VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKK3sKKyAgICBzd2l0Y2ggKGluamVjdGVkRnJhbWVz
KSB7CisgICAgY2FzZSBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9UT1BfRlJBTUU6CisgICAg
ICAgIHJldHVybiBJbmplY3RJblRvcEZyYW1lT25seTsKKyAgICBjYXNlIFdFQktJVF9VU0VSX0NP
TlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6CisgICAgICAgIHJldHVybiBJbmplY3RJbkFsbEZyYW1l
czsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIEluamVjdEluQWxsRnJhbWVzOworICAgIH0KK30KKworc3RhdGljIGlubGluZSBVc2Vy
U3R5bGVMZXZlbCB0b1VzZXJTdHlsZUxldmVsKFdlYktpdFVzZXJTdHlsZUxldmVsIHN0eWxlTGV2
ZWwpCit7CisgICAgc3dpdGNoIChzdHlsZUxldmVsKSB7CisgICAgY2FzZSBXRUJLSVRfVVNFUl9T
VFlMRV9MRVZFTF9VU0VSOgorICAgICAgICByZXR1cm4gVXNlclN0eWxlVXNlckxldmVsOworICAg
IGNhc2UgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfQVVUSE9SOgorICAgICAgICByZXR1cm4gVXNl
clN0eWxlQXV0aG9yTGV2ZWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBVc2VyU3R5bGVBdXRob3JMZXZlbDsKKyAgICB9Cit9CisK
K3N0YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWN0b3IoY29uc3QgY2hhciog
Y29uc3QqIHN0cnYpCit7CisgICAgaWYgKCFzdHJ2KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0
cmluZz4oKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICBmb3IgKGF1dG8gc3Ry
ID0gc3RydjsgKnN0cjsgKytzdHIpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RkOjptb3ZlKFN0
cmluZzo6ZnJvbVVURjgoKnN0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdHJ1Y3Qg
X1dlYktpdFVzZXJTdHlsZVNoZWV0IHsKKyAgICBfV2ViS2l0VXNlclN0eWxlU2hlZXQoY29uc3Qg
Z2NoYXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcywgV2ViS2l0VXNlclN0eWxlTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIqIGNvbnN0KiB3aGl0
ZWxpc3QsIGNvbnN0IGNoYXIqIGNvbnN0KiBibGFja2xpc3QpCisgICAgICAgIDogdXNlclN0eWxl
U2hlZXQoc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oCisgICAgICAgICAgICBTdHJp
bmc6OmZyb21VVEY4KHNvdXJjZSksIFVSTCB7IH0sCisgICAgICAgICAgICB0b1N0cmluZ1ZlY3Rv
cih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLAorICAgICAgICAgICAgdG9V
c2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSwKKyAgICAgICAgICAgIHRv
VXNlclN0eWxlTGV2ZWwobGV2ZWwpKSkKKyAgICAgICAgLCByZWZlcmVuY2VDb3VudCgxKQorICAg
IHsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHls
ZVNoZWV0OworICAgIGludCByZWZlcmVuY2VDb3VudDsKK307CisKK0dfREVGSU5FX0JPWEVEX1RZ
UEUoV2ViS2l0VXNlclN0eWxlU2hlZXQsIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0LCB3ZWJraXRf
dXNlcl9zdHlsZV9zaGVldF9yZWYsIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmKQorCisv
KioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZjoKKyAqIEB1c2VyX3N0eWxlX3NoZWV0
OiBhICNXZWJLaXRVc2VyU3R5bGVTaGVldAorICoKKyAqIEF0b21pY2FsbHkgaW5jcmVtZW50cyB0
aGUgcmVmZXJlbmNlIGNvdW50IG9mIEB1c2VyX3N0eWxlX3NoZWV0IGJ5IG9uZS4KKyAqIFRoaXMg
ZnVuY3Rpb24gaXMgTVQtc2FmZSBhbmQgbWF5IGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisg
KgorICogUmV0dXJuczogVGhlIHBhc3NlZCAjV2ViS2l0VXNlclN0eWxlU2hlZXQKKyAqCisgKiBT
aW5jZTogMi42CisgKi8KK1dlYktpdFVzZXJTdHlsZVNoZWV0KiB3ZWJraXRfdXNlcl9zdHlsZV9z
aGVldF9yZWYoV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0KQoreworICAgIGdf
YXRvbWljX2ludF9pbmMoJnVzZXJTdHlsZVNoZWV0LT5yZWZlcmVuY2VDb3VudCk7CisgICAgcmV0
dXJuIHVzZXJTdHlsZVNoZWV0OworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X3VucmVmOgorICogQHVzZXJfc3R5bGVfc2hlZXQ6IGEgI1dlYktpdFVzZXJTdHlsZVNoZWV0Cisg
KgorICogQXRvbWljYWxseSBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgQHVzZXJf
c3R5bGVfc2hlZXQgYnkgb25lLgorICogSWYgdGhlIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byAw
LCBhbGwgbWVtb3J5IGFsbG9jYXRlZCBieQorICogI1dlYktpdFVzZXJTdHlsZVNoZWV0IGlzIHJl
bGVhc2VkLiBUaGlzIGZ1bmN0aW9uIGlzIE1ULXNhZmUgYW5kIG1heSBiZQorICogY2FsbGVkIGZy
b20gYW55IHRocmVhZC4KKyAqCisgKiBTaW5jZTogMi42CisgKi8KK3ZvaWQgd2Via2l0X3VzZXJf
c3R5bGVfc2hlZXRfdW5yZWYoV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0KQor
eworICAgIGlmIChnX2F0b21pY19pbnRfZGVjX2FuZF90ZXN0KCZ1c2VyU3R5bGVTaGVldC0+cmVm
ZXJlbmNlQ291bnQpKSB7CisgICAgICAgIHVzZXJTdHlsZVNoZWV0LT5+V2ViS2l0VXNlclN0eWxl
U2hlZXQoKTsKKyAgICAgICAgZ19zbGljZV9mcmVlKFdlYktpdFVzZXJTdHlsZVNoZWV0LCB1c2Vy
U3R5bGVTaGVldCk7CisgICAgfQorfQorCisvKioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X25ldzoKKyAqIEBzb3VyY2U6IFNvdXJjZSBjb2RlIG9mIHRoZSB1c2VyIHN0eWxlIHNoZWV0Lgor
ICogQGluamVjdGVkX2ZyYW1lczogQSAjV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB2
YWx1ZQorICogQGxldmVsOiBBICNXZWJLaXRVc2VyU3R5bGVMZXZlbAorICogQHdoaXRlbGlzdDog
KGFycmF5IHplcm8tdGVybWluYXRlZD0xKSAoYWxsb3ctbm9uZSk6IEEgd2hpdGVsaXN0IG9mIFVS
SSBwYXR0ZXJucyBvciAlTlVMTAorICogQGJsYWNrbGlzdDogKGFycmF5IHplcm8tdGVybWluYXRl
ZD0xKSAoYWxsb3ctbm9uZSk6IEEgYmxhY2tsaXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVMTAor
ICoKKyAqIENyZWF0ZXMgYSBuZXcgdXNlciBzdHlsZSBzaGVldC4gU3R5bGUgc2hlZXRzIGNhbiBi
ZSBhcHBsaWVkIHRvIHNvbWUgVVJJcworICogb25seSBieSBwYXNzaW5nIG5vbi1udWxsIHZhbHVl
cyBmb3IgQHdoaXRlbGlzdCBvciBAYmxhY2tsaXN0LiBQYXNzaW5nIGEKKyAqICVOVUxMIHdoaXRl
bGlzdCBpbXBsaWVzIHRoYXQgYWxsIFVSSXMgYXJlIG9uIHRoZSB3aGl0ZWxpc3QuIFRoZSBzdHls
ZQorICogc2hlZXQgaXMgYXBwbGllZCBpZiBhbiBVUkkgbWF0Y2hlcyB0aGUgd2hpdGVsaXN0IGFu
ZCBub3QgdGhlIGJsYWNrbGlzdC4KKyAqIFVSSSBwYXR0ZXJucyBtdXN0IGJlIG9mIHRoZSBmb3Jt
IGBbcHJvdG9jb2xdOi8vW2hvc3RdL1twYXRoXWAsIHdoZXJlIHRoZQorICogKmhvc3QqIGFuZCAq
cGF0aCogY29tcG9uZW50cyBjYW4gY29udGFpbiB0aGUgd2lsZGNhcmQgY2hhcmFjdGVyIChgKmAp
IHRvCisgKiByZXByZXNlbnQgemVybyBvciBtb3JlIG90aGVyIGNoYXJhY3RlcnMuCisgKgorICog
UmV0dXJuczogQSBuZXcgI1dlYktpdFVzZXJTdHlsZVNoZWV0CisgKgorICogU2luY2U6IDIuNgor
ICovCitXZWJLaXRVc2VyU3R5bGVTaGVldCogd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGNv
bnN0IGdjaGFyKiBzb3VyY2UsIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0
ZWRGcmFtZXMsIFdlYktpdFVzZXJTdHlsZUxldmVsIGxldmVsLCBjb25zdCBjaGFyKiBjb25zdCog
d2hpdGVsaXN0LCBjb25zdCBjaGFyKiBjb25zdCogYmxhY2tsaXN0KQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHNvdXJjZSwgbnVsbHB0cik7CisgICAgV2ViS2l0VXNlclN0eWxlU2hlZXQq
IHVzZXJTdHlsZVNoZWV0ID0gZ19zbGljZV9uZXcoV2ViS2l0VXNlclN0eWxlU2hlZXQpOworICAg
IG5ldyAodXNlclN0eWxlU2hlZXQpIFdlYktpdFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgaW5qZWN0
ZWRGcmFtZXMsIGxldmVsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisgICAgcmV0dXJuIHVzZXJT
dHlsZVNoZWV0OworfQorCitjb25zdCBVc2VyU3R5bGVTaGVldCYgd2Via2l0VXNlclN0eWxlU2hl
ZXRHZXRVc2VyU3R5bGVTaGVldChXZWJLaXRVc2VyU3R5bGVTaGVldCogdXNlclN0eWxlU2hlZXQp
Cit7CisgICAgcmV0dXJuICp1c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQ7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMWQzYWRlYjUyMjhmM2U4MjI0OGU0MTJmMzdhNDQwZTgzNGQ2Y2RlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlckNvbnRlbnQuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmlu
ZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+
IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVc2Vy
Q29udGVudF9oCisjZGVmaW5lIFdlYktpdFVzZXJDb250ZW50X2gKKworI2luY2x1ZGUgPGdsaWIt
b2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5f
REVDTFMKKworLyoqCisgKiBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOgorICogQFdF
QktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6IEluc2VydCB0aGUgdXNlciBzdHls
ZQorICogICBzaGVldCBpbiBhbGwgdGhlIGZyYW1lcyBsb2FkZWQgYnkgdGhlIHdlYiB2aWV3LCBp
bmNsdWRpbmcKKyAqICAgbmVzdGVkIGZyYW1lcy4gVGhpcyBpcyB0aGUgZGVmYXVsdC4KKyAqIEBX
RUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9UT1BfRlJBTUU6IEluc2VydCB0aGUgdXNlciBzdHls
ZQorICogICBzaGVldCAqb25seSogaW4gdGhlIHRvcC1sZXZlbCBmcmFtZSBsb2FkZWQgYnkgdGhl
IHdlYiB2aWV3LAorICogICBhbmQgKm5vdCogaW4gdGhlIG5lc3RlZCBmcmFtZXMuCisgKgorICog
U3BlY2lmaWVzIGluIHdoaWNoIGZyYW1lcyB1c2VyIHN0eWxlIHNoZWV0cyBhcmUgdG8gYmUgaW5z
ZXJ0ZWQgaW4uCisgKgorICogU2luY2U6IDIuNgorICovCit0eXBlZGVmIGVudW0geworICAgIFdF
QktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVMsCisgICAgV0VCS0lUX1VTRVJfQ09O
VEVOVF9JTkpFQ1RfVE9QX0ZSQU1FLAorfSBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OworCisvKioKKyAqIFdlYktpdFVzZXJTdHlsZUxldmVsOgorICogQFdFQktJVF9VU0VSX1NUWUxF
X0xFVkVMX1VTRVI6IFRoZSBzdHlsZSBzaGVldCBpcyBhbiB1c2VyIHN0eWxlIHNoZWV0LAorICog
ICBpdHMgY29udGVudHMgYWx3YXlzIG92ZXJyaWRlIG90aGVyIHN0eWxlIHNoZWV0cy4gVGhpcyBp
cyB0aGUgZGVmYXVsdC4KKyAqIEBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9BVVRIT1I6IFRoZSBz
dHlsZSBzaGVldCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYKKyAqICAgaXQgd2FzIHByb3ZpZGVkIGJ5
IHRoZSBsb2FkZWQgZG9jdW1lbnRzLiBUaGF0IG1lYW5zIG90aGVyIHVzZXIgc3R5bGUKKyAqICAg
c2hlZXRzIG1heSBzdGlsbCBvdmVycmlkZSBpdC4KKyAqCisgKiBTcGVjaWZpZXMgaG93IHRvIHRy
ZWF0IGFuIHVzZXIgc3R5bGUgc2hlZXQuCisgKgorICogU2luY2U6IDIuNgorICovCit0eXBlZGVm
IGVudW0geworICAgIFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsCisgICAgV0VCS0lUX1VT
RVJfU1RZTEVfTEVWRUxfQVVUSE9SLAorfSBXZWJLaXRVc2VyU3R5bGVMZXZlbDsKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9VU0VSX1NUWUxFX1NIRUVUICh3ZWJraXRfdXNlcl9jb250ZW50X2dldF90
eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyU3R5bGVTaGVldCBXZWJLaXRVc2Vy
U3R5bGVTaGVldDsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRf
Z2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKK3dl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZiAgICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAg
ICAgICAgKnVzZXJfc3R5bGVfc2hlZXQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF91c2Vy
X3N0eWxlX3NoZWV0X3VucmVmICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAgICAgICAgKnVz
ZXJfc3R5bGVfc2hlZXQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKK3dl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyAgICAgIChjb25zdCBnY2hhciAgICAgICAgICAgICAg
ICAgICAgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkX2ZyYW1lcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyU3R5bGVMZXZlbCAgICAgICAgICAgIGxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAg
ICAgICAgICAgICAqd2hpdGVsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqYmxhY2tsaXN0KTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjllNWE0
MGExMWQyYjc5Njc4ZGEwNjllMjQyMmE4MGQxNTBkYzFlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNw
cApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5M
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmgiCisKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK3N0cnVjdCBfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZSB7CisgICAg
X1dlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUoKQorICAgICAgICA6IHVzZXJDb250ZW50
Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCkpIHsgfQor
CisgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiB1c2VyQ29udGVudENv
bnRyb2xsZXI7Cit9OworCisvKioKKyAqIFNFQ1RJT046V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IE1hbmFnZXMgdXNlci1kZWZpbmVkIGNvbnRlbnQgd2hp
Y2ggYWZmZWN0cyB3ZWIgcGFnZXMuCisgKiBAdGl0bGU6IFdlYktpdFVzZXJDb250ZW50TWFuYWdl
cgorICoKKyAqIFVzaW5nIGEgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlciB1c2VyIENTUyBzdHls
ZSBzaGVldHMgY2FuIGJlIHNldCB0bworICogYmUgaW5qZWN0ZWQgaW4gdGhlIHdlYiBwYWdlcyBs
b2FkZWQgYnkgYSAjV2ViS2l0V2ViVmlldywgYnkKKyAqIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFu
YWdlcl9hZGRfc3R5bGVfc2hlZXQoKS4KKyAqCisgKiBUbyB1c2UgYSAjV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyLCBpdCBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKKyAqIHdlYmtpdF91c2VyX2NvbnRl
bnRfbWFuYWdlcl9uZXcoKSwgYW5kIHRoZW4gcGFzc2VkIHRvCisgKiB3ZWJraXRfd2ViX3ZpZXdf
bmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIoKS4gVXNlciBzdHlsZQorICogc2hlZXRzIGNh
biBiZSBjcmVhdGVkIHdpdGggd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KCkuCisgKgorICog
VXNlciBzdHlsZSBzaGVldHMgY2FuIGJlIGFkZGVkIGFuZCByZW1vdmVkIGF0IGFueSB0aW1lLCBi
dXQKKyAqIHRoZXkgd2lsbCBhZmZlY3QgdGhlIHdlYiBwYWdlcyBsb2FkZWQgYWZ0ZXJ3YXJkcy4K
KyAqCisgKiBTaW5jZTogMi42CisgKi8KKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFVzZXJD
b250ZW50TWFuYWdlciwgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyLCBHX1RZUEVfT0JKRUNU
KQorCitzdGF0aWMgdm9pZCB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfY2xhc3NfaW5pdChX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXJDbGFzcyopCit7Cit9CisKKy8qKgorICogd2Via2l0X3Vz
ZXJfY29udGVudF9tYW5hZ2VyX25ldzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3IHVzZXIgY29udGVu
dCBtYW5hZ2VyLgorICoKKyAqIFJldHVybnM6IEEgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlcgor
ICoKKyAqIFNpbmNlOiAyLjYKKyAqLworV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCkKK3sKKyAgICByZXR1cm4gV0VCS0lUX1VTRVJfQ09O
VEVOVF9NQU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdF
UiwgbnVsbHB0cikpOworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9h
ZGRfc3R5bGVfc2hlZXQ6CisgKiBAbWFuYWdlcjogQSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
CisgKiBAc3R5bGVzaGVldDogQSAjV2ViS2l0VXNlclN0eWxlU2hlZXQKKyAqCisgKiBBZGRzIGEg
I1dlYktpdFVzZXJTdHlsZVNoZWV0IHRvIHRoZSBnaXZlbiAjV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLgorICogVGhlIHNhbWUgI1dlYktpdFVzZXJTdHlsZVNoZWV0IGNhbiBiZSByZXVzZWQgd2l0
aCBtdWx0aXBsZQorICogI1dlYktpdFVzZXJDb250ZW50TWFuYWdlciBpbnN0YW5jZXMuCisgKgor
ICogU2luY2U6IDIuNgorICovCit2b2lkIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRf
c3R5bGVfc2hlZXQoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiBtYW5hZ2VyLCBXZWJLaXRVc2Vy
U3R5bGVTaGVldCogc3R5bGVTaGVldCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19VU0VSX0NPTlRFTlRfTUFOQUdFUihtYW5hZ2VyKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChz
dHlsZVNoZWV0KTsKKyAgICBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFk
ZFVzZXJTdHlsZVNoZWV0KHdlYmtpdFVzZXJTdHlsZVNoZWV0R2V0VXNlclN0eWxlU2hlZXQoc3R5
bGVTaGVldCkpOworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1v
dmVfYWxsX3N0eWxlX3NoZWV0czoKKyAqIEBtYW5hZ2VyOiBBICNXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIKKyAqCisgKiBSZW1vdmVzIGFsbCB1c2VyIHN0eWxlIHNoZWV0cyBmcm9tIHRoZSBnaXZl
biAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLgorICoKKyAqIFNpbmNlOiAyLjYKKyAqLwordm9p
ZCB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVtb3ZlX2FsbF9zdHlsZV9zaGVldHMoV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VSKG1hbmFnZXIpKTsKKyAgICBtYW5hZ2VyLT5w
cml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOwor
fQorCitXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogd2Via2l0VXNlckNvbnRlbnRNYW5h
Z2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
KiBtYW5hZ2VyKQoreworICAgIHJldHVybiBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRy
b2xsZXIuZ2V0KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MTk1MDBm
YWVmMGM1ODVmMGNhNDk2MzY0MmU2ZWI4MzNhMTcyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaApA
QCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
ZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01Q
SUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRl
ZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJf
aAorI2RlZmluZSBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJfaAorCisjaW5jbHVkZSA8Z2xpYi1v
YmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFVzZXJDb250ZW50Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBX
RUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUiAgICAgICAgICAgICh3ZWJraXRfdXNlcl9j
b250ZW50X21hbmFnZXJfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfQ09OVEVOVF9N
QU5BR0VSKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiks
IFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSLCBXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIpKQorI2RlZmluZSBXRUJLSVRfSVNfVVNFUl9DT05URU5UX01BTkFHRVIob2JqKSAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfVVNFUl9DT05U
RU5UX01BTkFHRVIpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9DT05URU5UX01BTkFHRVJfQ0xBU1Mo
a2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVf
VVNFUl9DT05URU5UX01BTkFHRVIsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlckNsYXNzKSkKKyNk
ZWZpbmUgV0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VSX0NMQVNTKGtsYXNzKSAoR19UWVBF
X0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5B
R0VSKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfQ09OVEVOVF9NQU5BR0VSX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1VTRVJfQ09O
VEVOVF9NQU5BR0VSLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJDbGFzcykpCisKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgICAgICAgIFdlYktpdFVzZXJDb250ZW50
TWFuYWdlcjsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJDbGFzcyAg
IFdlYktpdFVzZXJDb250ZW50TWFuYWdlckNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVz
ZXJDb250ZW50TWFuYWdlclByaXZhdGUgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZTsK
KworCitzdHJ1Y3QgX1dlYktpdFVzZXJDb250ZW50TWFuYWdlciB7CisgICAgR09iamVjdCBwYXJl
bnQ7CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQ
cml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJDbGFz
cyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0
X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQp
OworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Vi
a2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsKKworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfZ2V0X3R5cGUgICAgICAgICAgICAgICAgKHZvaWQpOworCitX
RUJLSVRfQVBJIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqCit3ZWJraXRfdXNlcl9jb250ZW50
X21hbmFnZXJfbmV3ICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQgICAgICAgICAo
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICptYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAg
KnN0eWxlc2hlZXQpOworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfcmVtb3ZlX2FsbF9zdHlsZV9zaGVldHMgKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqbWFu
YWdlcik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3OTFhNTM1N2I0MTkyMTljZjY2ZGZjNzZiZGMyZDE2NGZi
M2I2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmgKQEAgLTAsMCArMSwyOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFVzZXJDb250
ZW50TWFuYWdlclByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2
YXRlX2gKKworI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIgorI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCisKK1dlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkqIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KFdlYktpdFVzZXJDb250ZW50TWFuYWdlciopOworCisjZW5kaWYgLy8g
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudFByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50UHJpdmF0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgzOTU4YWJjYTNkOTY5ZGY5OTlmMjA0ZDlmNjU0NDI1M2MzMzdkMGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2Vy
Q29udGVudFByaXZhdGUuaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlX2gKKyNkZWZp
bmUgV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlX2gKKworI2luY2x1ZGUgIldlYktpdFVzZXJDb250
ZW50LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTdHlsZVNoZWV0Lmg+CisKK2NvbnN0IFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0JiB3ZWJraXRVc2VyU3R5bGVTaGVldEdldFVzZXJTdHlsZVNo
ZWV0KFdlYktpdFVzZXJTdHlsZVNoZWV0Kik7CisKKyNlbmRpZiAvLyBXZWJLaXRVc2VyQ29udGVu
dFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA2MjgwOGI3NmNlZjg2ZGE3MjMzYjFkMDI2MmEyZWNj
NDRjMWYzMjcyLi45ZGQ4ZmQ1NmY1OTBjMTM0MjU4MmNlNGEzNjdkODQ1YmNiYWU0NWMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0LmNwcApAQCAtMTA1MCwxMiArMTA1MCwxMyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHREaWRG
aW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdQog
ICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZVJlcXVlc3RzLnJlbW92ZShjdXN0b21Qcm90b2Nv
bElEKTsKIH0KIAotdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2Vi
Vmlld0dyb3VwKiB3ZWJWaWV3R3JvdXAsIFdlYktpdFdlYlZpZXcqIHJlbGF0ZWRWaWV3KQordm9p
ZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCog
Y29udGV4dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJW
aWV3R3JvdXAsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBX
ZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KTsKICAgICBXZWJQYWdlR3Jv
dXAqIHBhZ2VHcm91cCA9IHdlYlZpZXdHcm91cCA/IHdlYmtpdFdlYlZpZXdHcm91cEdldFBhZ2VH
cm91cCh3ZWJWaWV3R3JvdXApIDogMDsKICAgICBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlID0g
cmVsYXRlZFZpZXcgPyB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JB
U0UocmVsYXRlZFZpZXcpKSA6IG51bGxwdHI7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVX
ZWJQYWdlKHdlYlZpZXdCYXNlLCBjb250ZXh0LT5wcml2LT5jb250ZXh0LmdldCgpLCBwYWdlR3Jv
dXAsIHJlbGF0ZWRQYWdlKTsKKyAgICBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogdXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkgPSB1c2VyQ29udGVudE1hbmFnZXIgPyB3ZWJraXRVc2Vy
Q29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1h
bmFnZXIpIDogbnVsbHB0cjsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uod2Vi
Vmlld0Jhc2UsIGNvbnRleHQtPnByaXYtPmNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cCwgdXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHksIHJlbGF0ZWRQYWdlKTsKIAogICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZSh3ZWJWaWV3QmFzZSk7CiAgICAgY29udGV4
dC0+cHJpdi0+d2ViVmlld3Muc2V0KHBhZ2UtPnBhZ2VJRCgpLCB3ZWJWaWV3KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0
UHJpdmF0ZS5oCmluZGV4IDA2NDc0YTFlZjBhYjMyNDI0MGJlMmYxMTEzMDQxNGZiMjI5ZTNlMTQu
Ljc2ZGNkMzY1ODZjYTRjMzk2MDhiMTYwZWEwYTM0NWY2ZGQzOTAxYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFBy
aXZhdGUuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNp
bmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1
ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRl
eHQuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3R3JvdXAuaCIKICNpbmNsdWRlICJXZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgpAQCAtNDIsNyArNDMsNyBAQCBXZWJLaXQ6
OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiB3ZWJraXRXZWJDb250ZXh0R2V0
UmVxdWVzdE1hbmFnZXIoVwogdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9t
UHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIEFQ
STo6VVJMUmVxdWVzdCopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RvcExvYWRpbmdDdXN0b21Q
cm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiB2
b2lkIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0
V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotdm9pZCB3ZWJraXRXZWJD
b250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRXZWJWaWV3R3JvdXAqLCBXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdl
YkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2Vi
VmlldyosIFdlYktpdFdlYlZpZXdHcm91cCosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdl
YktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95ZWQoV2Vi
S2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqKTsKIFdlYktpdFdlYlZpZXcqIHdlYmtpdFdl
YkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQ
YWdlUHJveHkqKTsKIFdlYktpdFdlYlZpZXdHcm91cCogd2Via2l0V2ViQ29udGV4dEdldERlZmF1
bHRXZWJWaWV3R3JvdXAoV2ViS2l0V2ViQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAwZjg1NWU1N2JmNzUx
MWFhZWU2ZWIwMmE5OTMwMjc3YjI3MTA2MWUzLi5mODI2Y2VhMDc5YjE3YTdlOTc2NjQxYjYyMjQx
ZDQwYjJkZWUyNzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTMzLDYgKzEzMyw3IEBAIGVudW0gewogICAgIFBST1Bf
V0VCX0NPTlRFWFQsCiAgICAgUFJPUF9SRUxBVEVEX1ZJRVcsCiAgICAgUFJPUF9HUk9VUCwKKyAg
ICBQUk9QX1VTRVJfQ09OVEVOVF9NQU5BR0VSLAogICAgIFBST1BfVElUTEUsCiAgICAgUFJPUF9F
U1RJTUFURURfTE9BRF9QUk9HUkVTUywKICAgICBQUk9QX0ZBVklDT04sCkBAIC0xNzEsNiArMTcy
LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRT
ZXR0aW5ncz4gc2V0dGluZ3M7CiAgICAgdW5zaWduZWQgbG9uZyBzZXR0aW5nc0NoYW5nZWRIYW5k
bGVySUQ7CiAgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3R3JvdXA+IGdyb3VwOworICAgIEdSZWZQ
dHI8V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPiB1c2VyQ29udGVudE1hbmFnZXI7CiAgICAgR1Jl
ZlB0cjxXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzPiB3aW5kb3dQcm9wZXJ0aWVzOwogCiAgICAgR1Jl
ZlB0cjxHTWFpbkxvb3A+IG1vZGFsTG9vcDsKQEAgLTUwMSw3ICs1MDMsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgV2ViS2l0
V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpOwogICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICB3ZWJraXRXZWJDb250ZXh0
Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dCwgd2ViVmlldywgcHJpdi0+Z3JvdXAu
Z2V0KCksIHByaXYtPnJlbGF0ZWRWaWV3KTsKKyAgICB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFn
ZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dCwgd2ViVmlldywgcHJpdi0+Z3JvdXAuZ2V0KCksIHBy
aXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcpOwogICAgIC8v
IFRoZSByZWxhdGVkIHZpZXcgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhlIGNvbnN0cnVjdGlvbi4K
ICAgICBwcml2LT5yZWxhdGVkVmlldyA9IG51bGxwdHI7CiAKQEAgLTU0Miw2ICs1NDQsMTEgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcElkLCBjb25zdCBHVmFsdWUKICAgICAgICAgd2ViVmlldy0+cHJpdi0+Z3JvdXAgPSBn
cm91cCA/IFdFQktJVF9XRUJfVklFV19HUk9VUChncm91cCkgOiAwOwogICAgICAgICBicmVhazsK
ICAgICB9CisgICAgY2FzZSBQUk9QX1VTRVJfQ09OVEVOVF9NQU5BR0VSOiB7CisgICAgICAgIGdw
b2ludGVyIHVzZXJDb250ZW50TWFuYWdlciA9IGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSk7Cisg
ICAgICAgIHdlYlZpZXctPnByaXYtPnVzZXJDb250ZW50TWFuYWdlciA9IHVzZXJDb250ZW50TWFu
YWdlciA/IFdFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUih1c2VyQ29udGVudE1hbmFnZXIpIDog
bnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUFJPUF9aT09NX0xFVkVM
OgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwod2ViVmlldywgZ192YWx1
ZV9nZXRfZG91YmxlKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTYxLDYgKzU2OCw5IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0dST1VQOgogICAgICAgICBn
X3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAod2ViVmll
dykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVVNFUl9DT05URU5UX01BTkFHRVI6
CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF91
c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UFJPUF9USVRMRToKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJWaWV3LT5w
cml2LT50aXRsZS5kYXRhKCkpOwogICAgICAgICBicmVhazsKQEAgLTY3MSw2ICs2ODEsMjMgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNz
KiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VC
S0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CiAKICAgICAv
KioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OnVzZXItY29udGVudC1tYW5hZ2VyOgorICAgICAqCisg
ICAgICogVGhlICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgb2YgdGhlIHZpZXcuCisgICAgICoK
KyAgICAgKiBTaW5jZTogMi42CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX1VTRVJfQ09OVEVO
VF9NQU5BR0VSLAorICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAorICAgICAgICAgICAgInVz
ZXItY29udGVudC1tYW5hZ2VyIiwKKyAgICAgICAgICAgIF8oIldlYlZpZXcgdXNlciBjb250ZW50
IG1hbmFnZXIiKSwKKyAgICAgICAgICAgIF8oIlRoZSBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIg
b2YgdGhlIHZpZXciKSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5B
R0VSLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9S
RUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCisgICAgLyoqCiAgICAgICog
V2ViS2l0V2ViVmlldzp0aXRsZToKICAgICAgKgogICAgICAqIFRoZSBtYWluIGZyYW1lIGRvY3Vt
ZW50IHRpdGxlIG9mIHRoaXMgI1dlYktpdFdlYlZpZXcuIElmCkBAIC0xOTI0LDYgKzE5NTEsOCBA
QCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KFdlYktpdFdlYkNv
bnRleHQqIGNvbnRleHQpCiAgKiBZb3UgY2FuIGFsc28gdXNlIHRoaXMgbWV0aG9kIHRvIGltcGxl
bWVudCBvdGhlciBwcm9jZXNzIG1vZGVscyBiYXNlZCBvbiAlV0VCS0lUX1BST0NFU1NfTU9ERUxf
TVVMVElQTEVfU0VDT05EQVJZX1BST0NFU1NFUywKICAqIGxpa2UgZm9yIGV4YW1wbGUsIHNoYXJp
bmcgdGhlIHNhbWUgd2ViIHByb2Nlc3MgZm9yIGFsbCB0aGUgdmlld3MgaW4gdGhlIHNhbWUgc2Vj
dXJpdHkgZG9tYWluLgogICoKKyAqIFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3IHdp
bGwgYWxzbyBoYXZlIHRoZSBzYW1lICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgYXMgQHdlYl92
aWV3LgorICoKICAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogVGhlIG5ld2x5IGNyZWF0ZWQg
I1dlYktpdFdlYlZpZXcgd2lkZ2V0CiAgKgogICogU2luY2U6IDIuNApAQCAtMTkzMiw3ICsxOTYx
LDEwIEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRfdmlldyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0cik7CiAKLSAgICByZXR1cm4gR1RLX1dJREdF
VChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsICJyZWxhdGVkLXZpZXciLCB3ZWJW
aWV3LCBudWxscHRyKSk7CisgICAgcmV0dXJuIEdUS19XSURHRVQoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX1dFQl9WSUVXLAorICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJWaWV3
LT5wcml2LT51c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksCisgICAgICAgICJyZWxhdGVkLXZpZXci
LCB3ZWJWaWV3LAorICAgICAgICBudWxscHRyKSk7CiB9CiAKIC8qKgpAQCAtMTk1Myw2ICsxOTg1
LDI1IEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2dyb3VwKFdlYktpdFdl
YlZpZXdHcm91cCogZ3JvdXApCiB9CiAKIC8qKgorICogd2Via2l0X3dlYl92aWV3X25ld193aXRo
X3VzZXJfY29udGVudF9tYW5hZ2VyOgorICogQHVzZXJfY29udGVudF9tYW5hZ2VyOiBhICNXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIuCisgKgorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViVmll
dyB3aXRoIHRoZSBnaXZlbiAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLgorICogVGhlIGNvbnRl
bnQgbG9hZGVkIGluIHRoZSB2aWV3IG1heSBiZSBhZmZlY3RlZCBieSB0aGUgY29udGVudCBpbmpl
Y3RlZAorICogaW4gdGhlIHZpZXcgYnkgdGhlIHVzZXIgY29udGVudCBtYW5hZ2VyLgorICoKKyAq
IFJldHVybnM6IFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3IHdpZGdldAorICoKKyAq
IFNpbmNlOiAyLjYKKyAqLworR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNl
cl9jb250ZW50X21hbmFnZXIoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB1c2VyQ29udGVudE1h
bmFnZXIpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfQ09OVEVO
VF9NQU5BR0VSKHVzZXJDb250ZW50TWFuYWdlciksIG51bGxwdHIpOworCisgICAgcmV0dXJuIEdU
S19XSURHRVQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLCAidXNlci1jb250ZW50
LW1hbmFnZXIiLCB1c2VyQ29udGVudE1hbmFnZXIsIG51bGxwdHIpKTsKK30KKworLyoqCiAgKiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQ6CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKICAqCkBAIC0xOTg2LDYgKzIwMzcsMjQgQEAgV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2dyb3VwKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAKIC8qKgorICog
d2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcjoKKyAqIEB3ZWJfdmlldzog
YSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldHMgdGhlIHVzZXIgY29udGVudCBtYW5hZ2VyIGFz
c29jaWF0ZWQgdG8gQHdlYl92aWV3LCBvciAlTlVMTCBpZiB0aGUKKyAqIHZpZXcgZG9lcyBub3Qg
aGF2ZSBhbiB1c2VyIGNvbnRlbnQgbWFuYWdlci4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIg
bm9uZSk6IHRoZSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUg
dmlldworICoKKyAqIFNpbmNlOiAyLjYKKyAqLworV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdl
YlZpZXcpLCBudWxscHRyKTsKKworICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT51c2VyQ29udGVu
dE1hbmFnZXIuZ2V0KCk7Cit9CisKKy8qKgogICogd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpOgog
ICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKiBAdXJpOiBhbiBVUkkgc3RyaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5k
ZXggNTQ5ZDI1NGNjMjZlYjM3ZTJmZmVjYzAxZWRhNjcwM2QyMTk3Y2NjYS4uOWJmMmNjNTQ2YmM0
NTYyMzJjMDk3ZWU2ZjliYjJmOWZlYzIwMzc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0U2NyaXB0RGlhbG9nLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJJbnNw
ZWN0b3IuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlJlc291cmNlLmg+CkBAIC0yNjAs
NiArMjYxLDkgQEAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRfdmlldyAgICAgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldwogV0VCS0lUX0FQSSBHdGtXaWRnZXQgKgogd2Via2l0X3dl
Yl92aWV3X25ld193aXRoX2dyb3VwICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
d0dyb3VwICAgICAgICAqZ3JvdXApOwogCitXRUJLSVRfQVBJIEd0a1dpZGdldCAqCit3ZWJraXRf
d2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIgICAgICAgIChXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIgICp1c2VyX2NvbnRlbnRfbWFuYWdlcik7CisKIFdFQktJVF9BUEkgV2Vi
S2l0V2ViQ29udGV4dCAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQgICAgICAgICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKQEAg
LTQ1NSw2ICs0NTksMTAgQEAgV0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3QgKgogd2Via2l0X3dl
Yl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2ggICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICpyZXN1bHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
RXJyb3IgICAgICAgICAgICAgICAgICAgKiplcnJvcik7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyICoKK3dlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFn
ZXIgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKwog
R19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggNzFjN2NlNWFkMmIwMjk3ZDNj
NGUxMzM2NDcxYTVhZDExMDVmMzkxOC4uOThkZmZkOTlkYjM1NDIyOTg5NjNkNmM1ODg4NWE2MzZj
N2I4MWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlBh
Z2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByZWZl
cmVuY2VzLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNp
bmNsdWRlICJXZWJWaWV3QmFzZUlucHV0TWV0aG9kRmlsdGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9DYWlyb1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpcGJvYXJkVXRpbGl0aWVz
R3RrLmg+CkBAIC05NDEsMTAgKzk0MiwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
YmFzZV9jbGFzc19pbml0KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogICAg
IGNvbnRhaW5lckNsYXNzLT5mb3JhbGwgPSB3ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lckZvcmFs
bDsKIH0KIAotV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYkNv
bnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBXZWJQYWdlUHJveHkqIHJl
bGF0ZWRQYWdlKQorV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdl
YkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRDb250cm9sbGVyLCBXZWJQYWdlUHJveHkqIHJl
bGF0ZWRQYWdlKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSA9
IFdFQktJVF9XRUJfVklFV19CQVNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFV19C
QVNFLCBOVUxMKSk7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYmtpdFdl
YlZpZXdCYXNlLCBjb250ZXh0LCBwYWdlR3JvdXAsIHJlbGF0ZWRQYWdlKTsKKyAgICB3ZWJraXRX
ZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uod2Via2l0V2ViVmlld0Jhc2UsIGNvbnRleHQsIHBhZ2VH
cm91cCwgdXNlckNvbnRlbnRDb250cm9sbGVyLCByZWxhdGVkUGFnZSk7CiAgICAgcmV0dXJuIHdl
YmtpdFdlYlZpZXdCYXNlOwogfQogCkBAIC05NzcsMTMgKzk3OCwxNCBAQCBzdGF0aWMgdm9pZCBk
ZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdC
YXNlKQogfQogI2VuZGlmIC8vIEhBVkUoR1RLX1NDQUxFX0ZBQ1RPUikKIAotdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdC
YXNlLCBXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFn
ZVByb3h5KiByZWxhdGVkUGFnZSkKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdl
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgV2ViQ29udGV4dCogY29udGV4
dCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KiB1c2VyQ29udGVudENvbnRyb2xsZXIsIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCiB7CiAg
ICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2Via2l0V2ViVmlld0Jhc2UtPnBy
aXY7CiAKICAgICBXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKICAg
ICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSBwYWdlR3JvdXA7CiAgICAgd2ViUGFn
ZUNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZTsKKyAgICB3ZWJQYWdlQ29u
ZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudENvbnRyb2xsZXI7
CiAgICAgcHJpdi0+cGFnZVByb3h5ID0gY29udGV4dC0+Y3JlYXRlV2ViUGFnZSgqcHJpdi0+cGFn
ZUNsaWVudCwgc3RkOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAgcHJpdi0+cGFn
ZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4
IGI5YzM4YzI2NTg1MjRiNTZhZWVmYTJlZTNkNTVhOGU4YWY5ZDMzZTQuLmRmZTIyODVlOWE3YWE3
NmZlYjM0ZWU3YTk4ZjkzNjJiZjAyYmM1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC0z
NCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgogCi1XZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2VD
cmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQYWdlR3JvdXAqLCBXZWJLaXQ6
OldlYlBhZ2VQcm94eSopOworV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlKFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiBH
dGtJTUNvbnRleHQqIHdlYmtpdFdlYlZpZXdCYXNlR2V0SU1Db250ZXh0KFdlYktpdFdlYlZpZXdC
YXNlKik7CiBXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdl
YktpdFdlYlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShX
ZWJLaXRXZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdy
b3VwKiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVh
dGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0
OjpXZWJQYWdlR3JvdXAqLCBXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kiwg
V2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb29sdGlw
VGV4dChXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IGNoYXIqKTsKIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VTZXRUb29sdGlwQXJlYShXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VGb3J3YXJkTmV4dEtleUV2ZW50KFdlYktp
dFdlYlZpZXdCYXNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmNwcAppbmRleCBiMjFlNzlmNjgzZGE3ZWZmZDE5OGRk
ZmM4MmEzN2U5YmYzZGMyNGMwLi5jOGE2NTA3YThlNTk4NmZjYWQ2YjY4NGI3ZTNiZDU5OWJiOWIy
MDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdHcm91cC5jcHAKQEAgLTIzNiw2MyArMjM2LDMgQEAgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfZ3JvdXBfc2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXdHcm91cCogZ3JvdXAsIFdlYktp
dFNldHRpbmcKICAgICB3ZWJraXRXZWJWaWV3R3JvdXBBdHRhY2hTZXR0aW5nc1RvUGFnZUdyb3Vw
KGdyb3VwKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QoZ3JvdXApLCAic2V0dGluZ3Mi
KTsKIH0KLQotc3RhdGljIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gdG9BUElBcnJheShjb25zdCBj
aGFyKiBjb25zdCogbGlzdCkKLXsKLSAgICBpZiAoIWxpc3QpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4gPiBlbnRyaWVzOwotICAgIHdoaWxlICgq
bGlzdCkgewotICAgICAgICBlbnRyaWVzLmFwcGVuZChBUEk6OlN0cmluZzo6Y3JlYXRlRnJvbVVU
RjhTdHJpbmcoKmxpc3QpKTsKLSAgICAgICAgbGlzdCsrOwotICAgIH0KLSAgICByZXR1cm4gQVBJ
OjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShlbnRyaWVzKSk7Ci19Ci0KLS8qKgotICogd2Via2l0
X3dlYl92aWV3X2dyb3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0OgotICogQGdyb3VwOiBhICNXZWJL
aXRXZWJWaWV3R3JvdXAKLSAqIEBzb3VyY2U6IHRoZSBzb3VyY2Ugb2YgdGhlIHN0eWxlX3NoZWV0
IHRvIGluamVjdAotICogQGJhc2VfdXJpOiAoYWxsb3ctbm9uZSk6IHRoZSBiYXNlIFVSSSB0byB1
c2Ugd2hlbiBwcm9jZXNzaW5nIHRoZSBzdHlsZV9zaGVldCBjb250ZW50cyBvciAlTlVMTCBmb3Ig
YWJvdXQ6YmxhbmsKLSAqIEB3aGl0ZWxpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFs
bG93LW5vbmUpOiBhIHdoaXRlbGlzdCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKLSAqIEBibGFj
a2xpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBhIGJsYWNrbGlz
dCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKLSAqIEBpbmplY3RlZF9mcmFtZXM6IGEgI1dlYktp
dEluamVjdGVkQ29udGVudEZyYW1lcyBkZXNjcmliaW5nIHRvIHdoaWNoIGZyYW1lcyB0aGUgc3R5
bGVfc2hlZXQgc2hvdWxkIGFwcGx5Ci0gKgotICogSW5qZWN0IGFuIGV4dGVybmFsIHN0eWxlIHNo
ZWV0IGludG8gcGFnZXMuIEl0IGlzIHBvc3NpYmxlIHRvIG9ubHkgYXBwbHkgdGhlIHN0eWxlIHNo
ZWV0Ci0gKiB0byBzb21lIFVSSXMgYnkgcGFzc2luZyBub24tbnVsbCB2YWx1ZXMgZm9yIEB3aGl0
ZWxpc3Qgb3IgQGJsYWNrbGlzdC4gUGFzc2luZyBhICVOVUxMCi0gKiB3aGl0ZWxpc3QgaW1wbGll
cyB0aGF0IGFsbCBVUklzIGFyZSBvbiB0aGUgd2hpdGVsaXN0LiBUaGUgc3R5bGUgc2hlZXQgaXMg
YXBwbGllZCBpZiBhIFVSSSBtYXRjaGVzCi0gKiB0aGUgd2hpdGVsaXN0IGFuZCBub3QgdGhlIGJs
YWNrbGlzdC4gVVJJIHBhdHRlcm5zIG11c3QgYmUgb2YgdGhlIGZvcm0gW3Byb3RvY29sXTovL1to
b3N0XS9bcGF0aF0KLSAqIHdoZXJlIHRoZSBob3N0IGFuZCBwYXRoIGNvbXBvbmVudHMgY2FuIGNv
bnRhaW4gdGhlIHdpbGRjYXJkIGNoYXJhY3RlciAoJyonKSB0byByZXByZXNlbnQgemVybwotICog
b3IgbW9yZSBvdGhlciBjaGFyYWN0ZXJzLgotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19ncm91
cF9hZGRfdXNlcl9zdHlsZV9zaGVldChXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwLCBjb25zdCBj
aGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqIGJhc2VVUkksIGNvbnN0IGNoYXIqIGNvbnN0KiB3aGl0
ZWxpc3QsIGNvbnN0IGNoYXIqIGNvbnN0KiBibGFja2xpc3QsIFdlYktpdEluamVjdGVkQ29udGVu
dEZyYW1lcyBpbmplY3RlZEZyYW1lcykKLXsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfVklFV19HUk9VUChncm91cCkpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc291cmNlKTsK
LQotICAgIFJlZlB0cjxBUEk6OkFycmF5PiB3ZWJXaGl0ZWxpc3QgPSB0b0FQSUFycmF5KHdoaXRl
bGlzdCk7Ci0gICAgUmVmUHRyPEFQSTo6QXJyYXk+IHdlYkJsYWNrbGlzdCA9IHRvQVBJQXJyYXko
YmxhY2tsaXN0KTsKLQotICAgIC8vIFdlIGFsd2F5cyB1c2UgVXNlclN0eWxlVXNlckxldmVsIHRv
IG1hdGNoIHRoZSBiZWhhdmlvciBvZiBXS1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0LgotICAg
IGdyb3VwLT5wcml2LT5wYWdlR3JvdXAtPmFkZFVzZXJTdHlsZVNoZWV0KAotICAgICAgICBTdHJp
bmc6OmZyb21VVEY4KHNvdXJjZSksCi0gICAgICAgIFN0cmluZzo6ZnJvbVVURjgoYmFzZVVSSSks
Ci0gICAgICAgIHdlYldoaXRlbGlzdC5nZXQoKSwKLSAgICAgICAgd2ViQmxhY2tsaXN0LmdldCgp
LAotICAgICAgICB0b1dlYkNvcmVVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJh
bWVzKSwKLSAgICAgICAgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsKTsKLX0KLQotLyoqCi0g
KiB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0czoKLSAq
IEBncm91cDogYSAjV2ViS2l0V2ViVmlld0dyb3VwCi0gKgotICogUmVtb3ZlIGFsbCBzdHlsZSBz
aGVldHMgcHJldmlvdXNseSBpbmplY3RlZCBpbnRvIHRoaXMgI1dlYktpdFdlYlZpZXdHcm91cCAK
LSAqIHZpYSB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3VzZXJfc3R5bGVfc2hlZXQoKS4KLSAq
Lwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0
cyhXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwKQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXX0dST1VQKGdyb3VwKSk7Ci0gICAgZ3JvdXAtPnByaXYtPnBhZ2VHcm91
cC0+cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5oCmluZGV4IDY4NWYxOTkw
NGVkY2ZkOWM2YjVhZGIwYjUzYmUwN2E3NDU2MzU4ZDguLjgzNmVhMTczNGYzNjg5MjBjNDhjYzNm
NDRiMjdiYjI5YmZlZTVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5oCkBAIC04NCwxNyArODQsNiBAQCBXRUJLSVRf
QVBJIHZvaWQKIHdlYmtpdF93ZWJfdmlld19ncm91cF9zZXRfc2V0dGluZ3MgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3R3JvdXAgICAgICAgICAgKmdyb3VwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNldHRpbmdzICAgICAg
ICAgICAgICAqc2V0dGluZ3MpOwogCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF93ZWJfdmlld19n
cm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldCAgICAgICAgIChXZWJLaXRXZWJWaWV3R3JvdXAgICAg
ICAgICAgICpncm91cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICpzb3VyY2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIg
ICAgICAgICAgICAgICAgICAqYmFzZV91cmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBjb25zdCAgICAgICAgICAqd2hp
dGVsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdjaGFyICogY29uc3QgICAgICAgICAgKmJsYWNrbGlzdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRJbmplY3RlZENv
bnRlbnRGcmFtZXMgICBpbmplY3RlZF9mcmFtZXMpOwotCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtp
dF93ZWJfdmlld19ncm91cF9yZW1vdmVfYWxsX3VzZXJfc3R5bGVfc2hlZXRzIChXZWJLaXRXZWJW
aWV3R3JvdXAgICAgICAgICAgKmdyb3VwKTsKLQogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCA1NDgxM2M5MDBhZDZlYzJmMTE3YjE2MjFiNDE4ODBj
MjFkYzlkY2FlLi4wNjNjYjY3NWJiZmE5MmE4ZDU3MGMzYjAxZjY4NWZiMDJjZTU2YmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTczLDYgKzczLDQ1IEBAIHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfdHlwZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdFVzZXJD
b250ZW50PC9GSUxFPgorPFRJVExFPldlYktpdFVzZXJDb250ZW50PC9USVRMRT4KK1dlYktpdFVz
ZXJTdHlsZVNoZWV0CitXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzCitXZWJLaXRVc2Vy
U3R5bGVMZXZlbAord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfcmVmCit3ZWJraXRfdXNlcl9zdHls
ZV9zaGVldF91bnJlZgord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3CisKKzxTVUJTRUNUSU9O
IFN0YW5kYXJkPgorV0VCS0lUX1RZUEVfVVNFUl9TVFlMRV9TSEVFVAorCis8U1VCU0VDVElPTiBQ
cml2YXRlPgord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKwor
PFNFQ1RJT04+Cis8RklMRT5XZWJLaXRVc2VyQ29udGVudE1hbmFnZXI8L0ZJTEU+Cis8VElUTEU+
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPC9USVRMRT4KK1dlYktpdFVzZXJDb250ZW50TWFuYWdl
cgord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldword2Via2l0X3VzZXJfY29udGVudF9t
YW5hZ2VyX2FkZF9zdHlsZV9zaGVldAord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92
ZV9hbGxfc3R5bGVfc2hlZXRzCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VCS0lUX0lTX1VT
RVJfQ09OVEVOVF9NQU5BR0VSCitXRUJLSVRfSVNfVVNFUl9DT05URU5UX01BTkFHRVJfQ0xBU1MK
K1dFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSCitXRUJLSVRfVVNFUl9DT05URU5UX01B
TkFHRVIKK1dFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUl9DTEFTUworV0VCS0lUX1VTRVJfQ09O
VEVOVF9NQU5BR0VSX0dFVF9DTEFTUworV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3MKKwor
PFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUKK3dl
YmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElP
Tj4KIDxGSUxFPldlYktpdFdlYlZpZXc8L0ZJTEU+CiA8VElUTEU+V2ViS2l0V2ViVmlldzwvVElU
TEU+CiBXZWJLaXRXZWJWaWV3CkBAIC05Niw4ICsxMzUsMTAgQEAgd2Via2l0X3dlYl92aWV3X25l
dwogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19uZXdf
d2l0aF9yZWxhdGVkX3ZpZXcKIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9ncm91cAord2Via2l0
X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyCiB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAKK3dlYmtpdF93ZWJfdmlld19n
ZXRfdXNlcl9jb250ZW50X21hbmFnZXIKIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaQogd2Via2l0
X3dlYl92aWV3X2xvYWRfaHRtbAogd2Via2l0X3dlYl92aWV3X2xvYWRfYWx0ZXJuYXRlX2h0bWwK
QEAgLTEwMjUsOCArMTA2Niw2IEBAIHdlYmtpdF93ZWJfdmlld19ncm91cF9uZXcKIHdlYmtpdF93
ZWJfdmlld19ncm91cF9nZXRfbmFtZQogd2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF9zZXR0aW5n
cwogd2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncwotd2Via2l0X3dlYl92aWV3X2dy
b3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0Ci13ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2Fs
bF91c2VyX3N0eWxlX3NoZWV0cwogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFdlYlZp
ZXdHcm91cENsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgK
aW5kZXggNDY0OTBhMmUwMTRkNjNmYWFiMGEzMDcyYzkwMzg0OTM0NDhhMjMxMi4uNTJjY2FkMzA2
MmJlOGM1ODNlMDViZWU2YWM3OTVlOTA2ODRmNTE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtNjEsNiArNjEsOCBAQAogI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVzcG9u
c2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaD4KKyNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFVzZXJDb250ZW50Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFZlcnNpb24u
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdFdlYkluc3BlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5jcHAKaW5kZXggZjBkZDZjNzkyNDAzYzg5YWM4ODE5ODhiM2IyOWQzYzU2MzBiZTVj
NS4uNzEwNWZhNDcxMzkzZjEzNDUxYzZhOTdhYTBiYzRmOGZkZDU1NTkxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC05Nyw2ICs5NywyMiBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCiAg
ICAgICAgIHByb2Nlc3NBbmRDb3VudC5rZXktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cygpLCBtX2lkZW50
aWZpZXIpOwogfQogCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2Vy
U3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCkKK3sKKyAg
ICBtX3VzZXJTdHlsZVNoZWV0cy5hcHBlbmQoc3RkOjptb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CisK
KyAgICBmb3IgKGF1dG8mIHByb2Nlc3NBbmRDb3VudCA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBw
cm9jZXNzQW5kQ291bnQua2V5LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsgbV91c2VyU3R5bGVTaGVldHMu
bGFzdCgpIH0pLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQoreworICAgIG1fdXNlclN0eWxl
U2hlZXRzLmNsZWFyKCk7CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NBbmRDb3VudCA6IG1fcHJv
Y2Vzc2VzKQorICAgICAgICBwcm9jZXNzQW5kQ291bnQua2V5LT5jb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hl
ZXRzKCksIG1faWRlbnRpZmllcik7Cit9CisKIGJvb2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
ciogaGFuZGxlcikKIHsKICAgICBmb3IgKGF1dG8mIGV4aXN0aW5nSGFuZGxlciA6IG1fc2NyaXB0
TWVzc2FnZUhhbmRsZXJzLnZhbHVlcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5oCmluZGV4IGNmZjZmMjlkNDg2NGUwYTc2ODQ5ZmZhZjJlYTA0NDlkNzRkYjA4NDku
LjdkYzA1OTVhYTJiN2MyZGU4MmJmYzA4MzM0YTE3M2M2Yjk0MWRhYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIERhdGFS
ZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFVzZXJTY3JpcHQ7CitjbGFz
cyBVc2VyU3R5bGVTaGVldDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01OSw2ICs2MCw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViQ29yZTo6VXNlclNjcmlwdCk7
CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cygpOwogCisgICAgdm9pZCBhZGRVc2VyU3R5
bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCk7CisgICAgdm9pZCByZW1vdmVBbGxVc2Vy
U3R5bGVTaGVldHMoKTsKKwogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgd2FzIGEgbmFt
ZSBjb25mbGljdC4KICAgICBib29sIGFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlciopOwogICAgIHZvaWQgcmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9y
TmFtZShjb25zdCBTdHJpbmcmKTsKQEAgLTc1LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBIYXNo
Q291bnRlZFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsKIAogICAgIFZlY3RvcjxX
ZWJDb3JlOjpVc2VyU2NyaXB0PiBtX3VzZXJTY3JpcHRzOworICAgIFZlY3RvcjxXZWJDb3JlOjpV
c2VyU3R5bGVTaGVldD4gbV91c2VyU3R5bGVTaGVldHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnM7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3Bl
Y3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVj
dG9yUHJveHlHdGsuY3BwCmluZGV4IDU3OWIwOTlmODRkMjA2ODcxNzM1MGQyMjY0ZTdmOTA4NTE0
MmE3NDMuLjFlZGE3ZThlZmU4NmRjYTE1Yzg3M2IxMzI4ZjBhMTk2YTY0OWVhMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwCkBAIC02Miw3ICs2Miw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiB7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAgICAg
QVNTRVJUKCFtX2luc3BlY3RvclZpZXcpOwotICAgIG1faW5zcGVjdG9yVmlldyA9IEdUS19XSURH
RVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoJnBhZ2UoKS0+cHJvY2VzcygpLmNvbnRleHQoKSwg
aW5zcGVjdG9yUGFnZUdyb3VwKCksIG1fcGFnZSkpOworICAgIG1faW5zcGVjdG9yVmlldyA9IEdU
S19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoJnBhZ2UoKS0+cHJvY2VzcygpLmNvbnRl
eHQoKSwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIG51bGxwdHIsIG1fcGFnZSkpOwogICAgIGdfb2Jq
ZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QobV9pbnNwZWN0b3JWaWV3KSwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKio+KCZtX2luc3BlY3RvclZpZXcpKTsKICAgICByZXR1cm4gd2Via2l0V2Vi
Vmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1faW5zcGVjdG9yVmlldykpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4IGQ5ZGMxNWM1ODQ1NWI5
MDg5Mjc1NDZmMDY2ZDgyOTVkMTM1M2Y2OTIuLjI0ZjIxNDgxNWE0M2NkYjExMGVmNTBhNDcwOTI1
YjVkNDQ1YmM5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJXb3JsZC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyU3R5bGVTaGVldC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FH
RV9IQU5ETEVSUykKQEAgLTkyLDYgKzkzLDE5IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXIt
PnJlbW92ZVVzZXJTY3JpcHRzKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAordm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8
V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+JiB1c2VyU3R5bGVTaGVldHMpCit7CisgICAgZm9yIChj
b25zdCBhdXRvJiB1c2VyU3R5bGVTaGVldCA6IHVzZXJTdHlsZVNoZWV0cykgeworICAgICAgICBt
X3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXQobWFpblRocmVhZE5vcm1h
bFdvcmxkKCksCisgICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlVzZXJTdHls
ZVNoZWV0Pih1c2VyU3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOworICAg
IH0KK30KKwordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cygpCit7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92ZVVzZXJTdHls
ZVNoZWV0cyhtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7Cit9CisKICNpZiBFTkFCTEUoVVNFUl9N
RVNTQUdFX0hBTkRMRVJTKQogY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclBy
b3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclBy
b3h5PiwgcHVibGljIFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I6OkNsaWVu
dCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAppbmRleCA0Yzg0Njk5
NjRjZmZkMGY2OWE5YzY3ZWFmYWRmZDA1ZWZhNTU2OTk3Li42MzljMjBlMDAwYWVkNzk4YzJiNzNj
ZDFmMDRjZmI2YzJiNWQ2NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAg
LTU0LDYgKzU0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpVc2VyU2NyaXB0PiYgdXNlclNjcmlwdHMpOwogICAgIHZvaWQgcmVtb3Zl
QWxsVXNlclNjcmlwdHMoKTsKIAorICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4mIHVzZXJTdHlsZVNoZWV0cyk7CisgICAgdm9p
ZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKKwogICAgIHZvaWQgYWRkVXNlclNjcmlwdE1l
c3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJIYW5kbGU+
JiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpOwogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyKHVpbnQ2NF90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5tZXNzYWdlcy5pbgppbmRleCBkMGNmYzFmNzY2NzgxZmMwZDczNzUxNmNiMmFiNTJiYzk1
NjUzOTc0Li5hOTNmYTQ3YzA2ODQ4N2Y1Y2FkNmU1YWUyZjVlZTE2ZWZiYjUwMTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjcsNiAr
MjcsOSBAQCBtZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXIgewogICAgIEFkZFVz
ZXJTY3JpcHRzKFZlY3RvcjxXZWJDb3JlOjpVc2VyU2NyaXB0PiB1c2VyU2NyaXB0cyk7CiAgICAg
UmVtb3ZlQWxsVXNlclNjcmlwdHMoKQogCisgICAgQWRkVXNlclN0eWxlU2hlZXRzKFZlY3RvcjxX
ZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxlU2hoZXRzKTsKKyAgICBSZW1vdmVBbGxV
c2VyU3R5bGVTaGVldHMoKQorCiAgICAgQWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhWZWN0
b3I8V2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4gc2NyaXB0TWVzc2FnZUhh
bmRsZXJzKTsKICAgICBSZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIodWludDY0X3QgaWRl
bnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIv
U291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggZGU0ODUwNDAyMGM5YTBkOWU0MTI5
MTJhN2I3M2FmNTQxOTQxYmI4MC4uZDAxNTczNDkyYjk0YmU4ZmVkMWNkZWIyN2VhOTYyYTJmMGM1
ZjRjYSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTY1LDYgKzY1LDcgQEAgV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkdMIE9GRikKIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9YSFJfVElNRU9VVCBPTikKIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX1BST0NFU1MgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkUgT0ZGKQorV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1VTRVJfTUVTU0FHRV9IQU5ETEVS
UyBPTikKIAogc2V0KEVOQUJMRV9YMTFfVEFSR0VUIE9OIENBQ0hFIEJPT0wgIldoZXRoZXIgdG8g
ZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBYMTEgd2luZG93aW5nIHRhcmdldC4iKQogc2V0KEVOQUJM
RV9XQVlMQU5EX1RBUkdFVCBPRkYgQ0FDSEUgQk9PTCAiV2hldGhlciB0byBlbmFibGUgc3VwcG9y
dCBmb3IgdGhlIFdheWxhbmQgd2luZG93aW5nIHRhcmdldC4iKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGMwNDc1MWFiOTAwYjZlZDc2YmNjMjE0
M2Y0YTFlM2MxZjY5Y2Q0NjAuLmE5ZDA1MGNhZjM1YjA1NDFlYTg1ODVmYzRkMjlkNThiN2M3NmNk
YTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOSBAQAorMjAxNC0wNy0wMyAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJl
ekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIE1vdmUgdXNlciBzdHlsZSBzaGVldCBBUEkg
b3V0IG9mIFdlYktpdFdlYlZpZXdHcm91cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NTUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyB0ZXN0aW5nIHVzZXIgc3R5bGUgc2hlZXQgaW5qZWN0
aW9uIGZyb20KKyAgICAgICAgVGVzdFdlYktpdFdlYlZpZXdHcm91cCBhbmQgbW92ZXMgdGhhdCBp
bnRvIGEgbmV3CisgICAgICAgIFRlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIsIGFkYXB0aW5n
IHRoZSBleGlzdGluZyB0ZXN0cyB0byB0aGUgbmV3CisgICAgICAgIEFQSS4gQWxzbywgaXQgY29u
dGFpbnMgYSBuZXcgdGVzdCBjYXNlIGZvcgorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dp
dGhfdXNlcl9jb250ZW50X21hbmFnZXIoKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoVXNlckNvbnRlbnRNYW5hZ2VyVGVzdDo6VXNlckNvbnRlbnRNYW5hZ2VyVGVzdCk6
CisgICAgICAgICh0ZXN0V2ViVmlld05ld1dpdGhVc2VyQ29udGVudE1hbmFnZXIpOgorICAgICAg
ICAoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgpOgorICAgICAgICAoZmlsbFVSTExp
c3RGcm9tUGF0aHMpOgorICAgICAgICAocmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJl
c2V0TGlzdHMpOgorICAgICAgICAodGVzdFVzZXJDb250ZW50TWFuYWdlckluamVjdGVkU3R5bGVT
aGVldCk6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChiZWZvcmVBbGwpOgor
ICAgICAgICAoYWZ0ZXJBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcDoKKyAgICAgICAgKGJlZm9yZUFsbCk6Cisg
ICAgICAgIChhZnRlckFsbCk6CisgICAgICAgIChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0
UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChmaWxsVVJMTGlzdEZyb21QYXRocyk6IERlbGV0ZWQu
CisgICAgICAgIChyZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyk6IERl
bGV0ZWQuCisgICAgICAgICh0ZXN0V2ViVmlld0dyb3VwSW5qZWN0ZWRTdHlsZVNoZWV0KTogRGVs
ZXRlZC4KKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXdUZXN0OjpXZWJWaWV3VGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0
Mkd0ay9XZWJWaWV3VGVzdC5oOgorCiAyMDE0LTA3LTAyICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQ
ZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVucmV2aWV3ZWQgZ2Fy
ZGVuaW5nLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NN
YWtlTGlzdHMudHh0CmluZGV4IGY2NmI3MzBhODhiNjUwMWZmYjhkMmYxNGI5YjFiMzE2MTc4ZjU5
MzUuLjE3MmIzOGFhMDg3NDcyYjEzNTEzMWE2Mjg0MzE0YTA0ZDk0OWRiNWQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKQEAg
LTExMiw2ICsxMTIsNyBAQCBBRERfV0syX1RFU1QoVGVzdFdlYlZpZXdFZGl0b3IgVGVzdFdlYlZp
ZXdFZGl0b3IuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRXZWJWaWV3R3JvdXAgVGVzdFdl
YktpdFdlYlZpZXdHcm91cC5jcHApCiBBRERfV0syX1RFU1QoVGVzdFdlYktpdFdlYkNvbnRleHQg
VGVzdFdlYktpdFdlYkNvbnRleHQuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRXZWJWaWV3
IFRlc3RXZWJLaXRXZWJWaWV3LmNwcCkKK0FERF9XSzJfVEVTVChUZXN0V2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyIFRlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwKQogCiBpZiAoQVRTUElf
Rk9VTkQpCiAgICAgQUREX1dLMl9URVNUKEFjY2Vzc2liaWxpdHlUZXN0U2VydmVyIEFjY2Vzc2li
aWxpdHlUZXN0U2VydmVyLmNwcCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMDRlMzY3YmNlMjQxOWFmZDg4N2Y1NjlmNWQ0MWI2MGZmODRkNWU5
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCisjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIK
KyNpbmNsdWRlIDxjc3RkYXJnPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3ZWJr
aXQyL3dlYmtpdDIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisKK2NsYXNz
IFVzZXJDb250ZW50TWFuYWdlclRlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVibGljOgor
ICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVXNlckNvbnRlbnRNYW5hZ2VyVGVzdCk7CisKKyAg
ICBVc2VyQ29udGVudE1hbmFnZXJUZXN0KCkKKyAgICAgICAgOiBXZWJWaWV3VGVzdChXRUJLSVRf
V0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKHdl
YmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXcoKSkpKQorICAgIHsKKyAgICAgICAgLy8gQSBy
ZWZlcmVuY2UgaXMgbGVha2VkIHdoZW4gcGFzc2luZyB0aGUgcmVzdWx0IG9mIHdlYmtpdF91c2Vy
X2NvbnRlbnRfbWFuYWdlcl9uZXcoKQorICAgICAgICAvLyBkaXJlY3RseSB0byB3ZWJraXRfd2Vi
X3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIoKSBhYm92ZS4gQWRvcHRpbmcgdGhl
CisgICAgICAgIC8vIHJlZmVyZW5jZSBoZXJlIGF2b2lkcyB0aGUgbGVhay4KKyAgICAgICAgbV91
c2VyQ29udGVudE1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0X3dlYl92aWV3X2dldF91c2VyX2Nv
bnRlbnRfbWFuYWdlcihtX3dlYlZpZXcpKTsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChtX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSkpOwor
ICAgIH0KKworICAgIEdSZWZQdHI8V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPiBtX3VzZXJDb250
ZW50TWFuYWdlcjsKK307CisKK3N0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOworCisv
LyBUaGVzZSBhcmUgYWxsIGhlcmUgc28gdGhhdCB0aGV5IGNhbiBiZSBjaGFuZ2VkIGVhc2lseSwg
aWYgbmVjZXNzYXJ5Lgorc3RhdGljIGNvbnN0IGNoYXIqIGtTdHlsZVNoZWV0SFRNTCA9ICI8aHRt
bD48ZGl2IGlkPVwic3R5bGVkRWxlbWVudFwiPlN3ZWV0IHN0eWxleiE8L2Rpdj48L2h0bWw+IjsK
K3N0YXRpYyBjb25zdCBjaGFyKiBrSW5qZWN0ZWRTdHlsZVNoZWV0ID0gIiNzdHlsZWRFbGVtZW50
IHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0iOworc3RhdGljIGNvbnN0IGNoYXIqIGtTdHlsZVNoZWV0
VGVzdFNjcmlwdCA9ICJnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
dHlsZWRFbGVtZW50JykpWydmb250LXdlaWdodCddIjsKK3N0YXRpYyBjb25zdCBjaGFyKiBrU3R5
bGVTaGVldFRlc3RTY3JpcHRSZXN1bHQgPSAiYm9sZCI7CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3TmV3V2l0aFVzZXJDb250ZW50TWFuYWdlcihUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQor
eworICAgIEdSZWZQdHI8V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPiB1c2VyQ29udGVudE1hbmFn
ZXIxID0gYWRvcHRHUmVmKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXcoKSk7CisgICAg
dGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh1c2Vy
Q29udGVudE1hbmFnZXIxLmdldCgpKSk7CisgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJW
aWV3MSA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250
ZW50X21hbmFnZXIodXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSkpOworICAgIGdfYXNzZXJ0KHdl
YmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldzEuZ2V0KCkpID09
IHVzZXJDb250ZW50TWFuYWdlcjEuZ2V0KCkpOworCisgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3
PiB3ZWJWaWV3MiA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmll
dzIuZ2V0KCkpICE9IHVzZXJDb250ZW50TWFuYWdlcjEuZ2V0KCkpOworfQorCitzdGF0aWMgYm9v
bCBpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aChXZWJWaWV3VGVzdCogdGVzdCwgY29u
c3QgY2hhciogcGF0aCkKK3sKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBh
dGgocGF0aCkuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKwor
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZp
bmlzaGVkKGtTdHlsZVNoZWV0VGVzdFNjcmlwdCwgJmVycm9yLm91dFB0cigpKTsKKyAgICBnX2Fz
c2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOworCisg
ICAgR1VuaXF1ZVB0cjxjaGFyPiByZXN1bHRTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRS
ZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIHJldHVybiAhZ19zdHJjbXAw
KHJlc3VsdFN0cmluZy5nZXQoKSwga1N0eWxlU2hlZXRUZXN0U2NyaXB0UmVzdWx0KTsKK30KKwor
c3RhdGljIHZvaWQgZmlsbFVSTExpc3RGcm9tUGF0aHMoY2hhcioqIGxpc3QsIGNvbnN0IGNoYXIq
IHBhdGgsIC4uLikKK3sKKyAgICB2YV9saXN0IGFyZ3VtZW50TGlzdDsKKyAgICB2YV9zdGFydChh
cmd1bWVudExpc3QsIHBhdGgpOworCisgICAgaW50IGkgPSAwOworICAgIHdoaWxlIChwYXRoKSB7
CisgICAgICAgIC8vIEZJWE1FOiBXZSBtdXN0IHVzZSBhIHdpbGRjYXJkIGZvciB0aGUgaG9zdCBo
ZXJlIHVudGlsIGh0dHA6Ly93a2J1Zy5jb20vMTEyNDc2IGlzIGZpeGVkLgorICAgICAgICAvLyBV
bnRpbCB0aGF0IHRpbWUgcGF0dGVybnMgd2l0aCBwb3J0IG51bWJlcnMgaW4gdGhlbSB3aWxsIG5v
dCBwcm9wZXJseSBtYXRjaCBVUkxzIHdpdGggcG9ydCBudW1iZXJzLgorICAgICAgICBsaXN0W2kr
K10gPSBnX3N0cmR1cF9wcmludGYoImh0dHA6Ly8qLyVzKiIsIHBhdGgpOworICAgICAgICBwYXRo
ID0gdmFfYXJnKGFyZ3VtZW50TGlzdCwgY29uc3QgY2hhciopOworICAgIH0KK30KKworc3RhdGlj
IHZvaWQgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyKiB1c2VyQ29udGVudE1hbmFnZXIsIGNoYXIqKiB3aGl0ZWxpc3QsIGNo
YXIqKiBibGFja2xpc3QpCit7CisgICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92
ZV9hbGxfc3R5bGVfc2hlZXRzKHVzZXJDb250ZW50TWFuYWdlcik7CisKKyAgICB3aGlsZSAoKndo
aXRlbGlzdCkgeworICAgICAgICBnX2ZyZWUoKndoaXRlbGlzdCk7CisgICAgICAgICp3aGl0ZWxp
c3QgPSAwOworICAgICAgICB3aGl0ZWxpc3QrKzsKKyAgICB9CisKKyAgICB3aGlsZSAoKmJsYWNr
bGlzdCkgeworICAgICAgICBnX2ZyZWUoKmJsYWNrbGlzdCk7CisgICAgICAgICpibGFja2xpc3Qg
PSAwOworICAgICAgICBibGFja2xpc3QrKzsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RV
c2VyQ29udGVudE1hbmFnZXJJbmplY3RlZFN0eWxlU2hlZXQoVXNlckNvbnRlbnRNYW5hZ2VyVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBjaGFyKiB3aGl0ZWxpc3RbM10gPSB7IDAs
IDAsIDAgfTsKKyAgICBjaGFyKiBibGFja2xpc3RbM10gPSB7IDAsIDAsIDAgfTsKKworICAgIHJl
bW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNvbnRl
bnRNYW5hZ2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisKKyAgICAvLyBXaXRob3V0
IGEgd2hpdGVsaXN0IG9yIGEgYmxhY2tsaXN0IGFsbCBVUkxzIHNob3VsZCBoYXZlIHRoZSBpbmpl
Y3RlZCBzdHlsZSBzaGVldC4KKyAgICBzdGF0aWMgY29uc3QgY2hhciogcmFuZG9tUGF0aCA9ICJz
b21lcmFuZG9tcGF0aCI7CisgICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJM
QXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKKyAgICBXZWJLaXRVc2VyU3R5bGVTaGVldCogc3R5
bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5qZWN0ZWRTdHlsZVNoZWV0
LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TVFlM
RV9MRVZFTF9VU0VSLCBudWxscHRyLCBudWxscHRyKTsKKyAgICB3ZWJraXRfdXNlcl9jb250ZW50
X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgp
LCBzdHlsZVNoZWV0KTsKKyAgICB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZihzdHlsZVNo
ZWV0KTsKKyAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0
LCByYW5kb21QYXRoKSk7CisKKyAgICByZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVz
ZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgd2hpdGVsaXN0LCBibGFj
a2xpc3QpOworCisgICAgZmlsbFVSTExpc3RGcm9tUGF0aHMoYmxhY2tsaXN0LCByYW5kb21QYXRo
LCAwKTsKKyAgICBzdHlsZVNoZWV0ID0gd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGtJbmpl
Y3RlZFN0eWxlU2hlZXQsIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVMsIFdF
QktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsIG51bGxwdHIsIGJsYWNrbGlzdCk7CisgICAgd2Vi
a2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldCh0ZXN0LT5tX3VzZXJDb250
ZW50TWFuYWdlci5nZXQoKSwgc3R5bGVTaGVldCk7CisgICAgd2Via2l0X3VzZXJfc3R5bGVfc2hl
ZXRfdW5yZWYoc3R5bGVTaGVldCk7CisgICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVk
Rm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKKyAgICBnX2Fzc2VydChpc1N0eWxlU2hl
ZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCAic29tZW90aGVycmFuZG9tcGF0aCIpKTsKKwor
ICAgIHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNl
ckNvbnRlbnRNYW5hZ2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisKKyAgICBzdGF0
aWMgY29uc3QgY2hhciogaW5UaGVXaGl0ZUxpc3QgPSAiaW50aGV3aGl0ZWxpc3QiOworICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBub3RJbldoaXRlbGlzdCA9ICJub3RpbnRoZXdoaXRlbGlzdCI7Cisg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0ID0gImludGhl
d2hpdGVsaXN0YW5kYmxhY2tsaXN0IjsKKworICAgIGZpbGxVUkxMaXN0RnJvbVBhdGhzKHdoaXRl
bGlzdCwgaW5UaGVXaGl0ZUxpc3QsIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0LCAwKTsKKyAg
ICBmaWxsVVJMTGlzdEZyb21QYXRocyhibGFja2xpc3QsIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tM
aXN0LCAwKTsKKyAgICBzdHlsZVNoZWV0ID0gd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGtJ
bmplY3RlZFN0eWxlU2hlZXQsIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVMs
IFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKKyAg
ICB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KHRlc3QtPm1fdXNl
ckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBzdHlsZVNoZWV0KTsKKyAgICB3ZWJraXRfdXNlcl9zdHls
ZV9zaGVldF91bnJlZihzdHlsZVNoZWV0KTsKKyAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJbmpl
Y3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlzdCkpOworICAgIGdfYXNzZXJ0KCFp
c1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlzdEFuZEJs
YWNrTGlzdCkpOworICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0
aCh0ZXN0LCBub3RJbldoaXRlbGlzdCkpOworCisgICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gY2xl
YW4gdXAgdGhlIGVudmlyb25tZW50IGJlZm9yZSBvdGhlciB0ZXN0cy4KKyAgICByZW1vdmVPbGRJ
bmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdl
ci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOworfQorCitzdGF0aWMgdm9pZCBzZXJ2ZXJD
YWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBj
aGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKK3sK
KyAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7Cisg
ICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBf
TUVNT1JZX1NUQVRJQywga1N0eWxlU2hlZXRIVE1MLCBzdHJsZW4oa1N0eWxlU2hlZXRIVE1MKSk7
CisgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7
Cit9CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RT
ZXJ2ZXIoKTsKKyAgICBrU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOworCisgICAgVGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm5ldy13aXRoLXVzZXItY29udGVudC1tYW5hZ2VyIiwgdGVz
dFdlYlZpZXdOZXdXaXRoVXNlckNvbnRlbnRNYW5hZ2VyKTsKKyAgICBVc2VyQ29udGVudE1hbmFn
ZXJUZXN0OjphZGQoIldlYktpdFVzZXJDb250ZW50TWFuYWdlciIsICJpbmplY3RlZC1zdHlsZS1z
aGVldCIsIHRlc3RVc2VyQ29udGVudE1hbmFnZXJJbmplY3RlZFN0eWxlU2hlZXQpOworfQorCit2
b2lkIGFmdGVyQWxsKCkKK3sKKyAgICBkZWxldGUga1NlcnZlcjsKK30KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3Vw
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2Vi
Vmlld0dyb3VwLmNwcAppbmRleCA0NDhhYmQyZmU1MzJjNmMxNGZlMjMzOWYzYzE3NjdmMGE5ZGE4
MDMxLi5jY2JhODlkNDYyZTQ0YTI1M2VlOGZhZTQ2ZGI2ZDY5ZWU0ODU2ZWM5IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdH
cm91cC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RX
ZWJLaXRXZWJWaWV3R3JvdXAuY3BwCkBAIC0yNiwxNCArMjYsNiBAQAogI2luY2x1ZGUgPHdlYmtp
dDIvd2Via2l0Mi5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAotc3RhdGlj
IFdlYktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7Ci0KLS8vIFRoZXNlIGFyZSBhbGwgaGVyZSBzbyB0
aGF0IHRoZXkgY2FuIGJlIGNoYW5nZWQgZWFzaWx5LCBpZiBuZWNlc3NhcnkuCi1zdGF0aWMgY29u
c3QgY2hhcioga1N0eWxlU2hlZXRIVE1MID0gIjxodG1sPjxkaXYgaWQ9XCJzdHlsZWRFbGVtZW50
XCI+U3dlZXQgc3R5bGV6ITwvZGl2PjwvaHRtbD4iOwotc3RhdGljIGNvbnN0IGNoYXIqIGtJbmpl
Y3RlZFN0eWxlU2hlZXQgPSAiI3N0eWxlZEVsZW1lbnQgeyBmb250LXdlaWdodDogYm9sZDsgfSI7
Ci1zdGF0aWMgY29uc3QgY2hhcioga1N0eWxlU2hlZXRUZXN0U2NyaXB0ID0gImdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0eWxlZEVsZW1lbnQnKSlbJ2ZvbnQtd2Vp
Z2h0J10iOwotc3RhdGljIGNvbnN0IGNoYXIqIGtTdHlsZVNoZWV0VGVzdFNjcmlwdFJlc3VsdCA9
ICJib2xkIjsKLQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdHcm91cERlZmF1bHQoVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBEZWZhdWx0IGdyb3VwIGlzIHNoYXJlZCBieSBh
bGwgV2ViVmlld3MgYnkgZGVmYXVsdC4KQEAgLTk4LDEwOSArOTAsMTQgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdHcm91cFNldHRpbmdzKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAg
Z19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF9zZXR0aW5ncyh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2dyb3VwKHdlYlZpZXcxLmdldCgpKSkgPT0gd2ViVmlldzJTZXR0aW5ncyk7CiB9CiAK
LXN0YXRpYyBib29sIGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKFdlYlZpZXdUZXN0
KiB0ZXN0LCBjb25zdCBjaGFyKiBwYXRoKQotewotICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+
Z2V0VVJJRm9yUGF0aChwYXRoKS5kYXRhKCkpOwotICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOwotCi0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIFdlYktpdEph
dmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5k
V2FpdFVudGlsRmluaXNoZWQoa1N0eWxlU2hlZXRUZXN0U2NyaXB0LCAmZXJyb3Iub3V0UHRyKCkp
OwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5n
ZXQoKSk7Ci0KLSAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc3VsdFN0cmluZyhXZWJWaWV3VGVzdDo6
amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7Ci0gICAgcmV0dXJu
ICFnX3N0cmNtcDAocmVzdWx0U3RyaW5nLmdldCgpLCBrU3R5bGVTaGVldFRlc3RTY3JpcHRSZXN1
bHQpOwotfQotCi1zdGF0aWMgdm9pZCBmaWxsVVJMTGlzdEZyb21QYXRocyhjaGFyKiogbGlzdCwg
Y29uc3QgY2hhciogcGF0aCwgLi4uKQotewotICAgIHZhX2xpc3QgYXJndW1lbnRMaXN0OwotICAg
IHZhX3N0YXJ0KGFyZ3VtZW50TGlzdCwgcGF0aCk7Ci0KLSAgICBpbnQgaSA9IDA7Ci0gICAgd2hp
bGUgKHBhdGgpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIG11c3QgdXNlIGEgd2lsZGNhcmQgZm9y
IHRoZSBob3N0IGhlcmUgdW50aWwgaHR0cDovL3drYnVnLmNvbS8xMTI0NzYgaXMgZml4ZWQuCi0g
ICAgICAgIC8vIFVudGlsIHRoYXQgdGltZSBwYXR0ZXJucyB3aXRoIHBvcnQgbnVtYmVycyBpbiB0
aGVtIHdpbGwgbm90IHByb3Blcmx5IG1hdGNoIFVSTHMgd2l0aCBwb3J0IG51bWJlcnMuCi0gICAg
ICAgIGxpc3RbaSsrXSA9IGdfc3RyZHVwX3ByaW50ZigiaHR0cDovLyovJXMqIiwgcGF0aCk7Ci0g
ICAgICAgIHBhdGggPSB2YV9hcmcoYXJndW1lbnRMaXN0LCBjb25zdCBjaGFyKik7Ci0gICAgfQot
fQotCi1zdGF0aWMgdm9pZCByZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0
cyhXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwLCBjaGFyKiogd2hpdGVsaXN0LCBjaGFyKiogYmxh
Y2tsaXN0KQotewotICAgIHdlYmtpdF93ZWJfdmlld19ncm91cF9yZW1vdmVfYWxsX3VzZXJfc3R5
bGVfc2hlZXRzKGdyb3VwKTsKLQotICAgIHdoaWxlICgqd2hpdGVsaXN0KSB7Ci0gICAgICAgIGdf
ZnJlZSgqd2hpdGVsaXN0KTsKLSAgICAgICAgKndoaXRlbGlzdCA9IDA7Ci0gICAgICAgIHdoaXRl
bGlzdCsrOwotICAgIH0KLQotICAgIHdoaWxlICgqYmxhY2tsaXN0KSB7Ci0gICAgICAgIGdfZnJl
ZSgqYmxhY2tsaXN0KTsKLSAgICAgICAgKmJsYWNrbGlzdCA9IDA7Ci0gICAgICAgIGJsYWNrbGlz
dCsrOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdHcm91cEluamVjdGVkU3R5
bGVTaGVldChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKLXsKLSAgICBXZWJLaXRX
ZWJWaWV3R3JvdXAqIGdyb3VwID0gd2Via2l0X3dlYl92aWV3X2dldF9ncm91cCh0ZXN0LT5tX3dl
YlZpZXcpOwotICAgIGNoYXIqIHdoaXRlbGlzdFszXSA9IHsgMCwgMCwgMCB9OwotICAgIGNoYXIq
IGJsYWNrbGlzdFszXSA9IHsgMCwgMCwgMCB9OwotCi0gICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHls
ZVNoZWV0c0FuZFJlc2V0TGlzdHMoZ3JvdXAsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKLQotICAg
IC8vIFdpdGhvdXQgYSB3aGl0ZWxpc3Qgb3IgYSBibGFja2xpc3QgYWxsIFVSTHMgc2hvdWxkIGhh
dmUgdGhlIGluamVjdGVkIHN0eWxlIHNoZWV0LgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiByYW5k
b21QYXRoID0gInNvbWVyYW5kb21wYXRoIjsKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5q
ZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOwotICAgIHdlYmtpdF93ZWJfdmll
d19ncm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldChncm91cCwga0luamVjdGVkU3R5bGVTaGVldCwg
MCwgMCwgMCwgV0VCS0lUX0lOSkVDVEVEX0NPTlRFTlRfRlJBTUVTX0FMTCk7Ci0gICAgZ19hc3Nl
cnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOwot
Ci0gICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoZ3JvdXAsIHdo
aXRlbGlzdCwgYmxhY2tsaXN0KTsKLQotICAgIGZpbGxVUkxMaXN0RnJvbVBhdGhzKGJsYWNrbGlz
dCwgcmFuZG9tUGF0aCwgMCk7Ci0gICAgd2Via2l0X3dlYl92aWV3X2dyb3VwX2FkZF91c2VyX3N0
eWxlX3NoZWV0KGdyb3VwLCBrSW5qZWN0ZWRTdHlsZVNoZWV0LCAwLCAwLCBibGFja2xpc3QsIFdF
QktJVF9JTkpFQ1RFRF9DT05URU5UX0ZSQU1FU19BTEwpOwotICAgIGdfYXNzZXJ0KCFpc1N0eWxl
U2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7Ci0gICAgZ19hc3Nl
cnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRv
bXBhdGgiKSk7Ci0KLSAgICByZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0
cyhncm91cCwgd2hpdGVsaXN0LCBibGFja2xpc3QpOwotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIq
IGluVGhlV2hpdGVMaXN0ID0gImludGhld2hpdGVsaXN0IjsKLSAgICBzdGF0aWMgY29uc3QgY2hh
ciogbm90SW5XaGl0ZWxpc3QgPSAibm90aW50aGV3aGl0ZWxpc3QiOwotICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCA9ICJpbnRoZXdoaXRlbGlzdGFuZGJs
YWNrbGlzdCI7Ci0KLSAgICBmaWxsVVJMTGlzdEZyb21QYXRocyh3aGl0ZWxpc3QsIGluVGhlV2hp
dGVMaXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCwgMCk7Ci0gICAgZmlsbFVSTExpc3RG
cm9tUGF0aHMoYmxhY2tsaXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCwgMCk7Ci0gICAg
d2Via2l0X3dlYl92aWV3X2dyb3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0KGdyb3VwLCBrSW5qZWN0
ZWRTdHlsZVNoZWV0LCAwLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgV0VCS0lUX0lOSkVDVEVEX0NP
TlRFTlRfRlJBTUVTX0FMTCk7Ci0gICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JV
UkxBdFBhdGgodGVzdCwgaW5UaGVXaGl0ZUxpc3QpKTsKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNo
ZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xpc3Qp
KTsKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwg
bm90SW5XaGl0ZWxpc3QpKTsKLQotICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGNsZWFuIHVwIHRo
ZSBlbnZpcm9ubWVudCBiZWZvcmUgb3RoZXIgdGVzdHMuCi0gICAgcmVtb3ZlT2xkSW5qZWN0ZWRT
dHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoZ3JvdXAsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKLX0K
LQotc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVz
c2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRD
b250ZXh0KiwgZ3BvaW50ZXIpCi17Ci0gICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2Fn
ZSwgU09VUF9TVEFUVVNfT0spOwotICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdl
LT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIGtTdHlsZVNoZWV0SFRNTCwgc3Ry
bGVuKGtTdHlsZVNoZWV0SFRNTCkpOwotICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1l
c3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwotfQotCiB2b2lkIGJlZm9yZUFsbCgpCiB7Ci0gICAga1Nl
cnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7Ci0gICAga1NlcnZlci0+cnVuKHNlcnZlckNh
bGxiYWNrKTsKLQogICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlld0dyb3VwIiwgImRlZmF1bHQt
Z3JvdXAiLCB0ZXN0V2ViVmlld0dyb3VwRGVmYXVsdCk7CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3R3JvdXAiLCAibmV3LWdyb3VwIiwgdGVzdFdlYlZpZXdHcm91cE5ld0dyb3VwKTsKICAg
ICBUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibmV3LXdpdGgtZ3JvdXAiLCB0ZXN0V2ViVmll
d05ld1dpdGhHcm91cCk7CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3R3JvdXAiLCAic2V0
dGluZ3MiLCB0ZXN0V2ViVmlld0dyb3VwU2V0dGluZ3MpOwotICAgIFdlYlZpZXdUZXN0OjphZGQo
IldlYktpdFdlYlZpZXdHcm91cCIsICJpbmplY3RlZC1zdHlsZS1zaGVldCIsIHRlc3RXZWJWaWV3
R3JvdXBJbmplY3RlZFN0eWxlU2hlZXQpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKIHsKLSAgICBk
ZWxldGUga1NlcnZlcjsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dl
YktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0
Mkd0ay9XZWJWaWV3VGVzdC5jcHAKaW5kZXggMTE5OGIwOGJlNjgzZDU5MzkyNDZkOTBhNTBlM2Ix
ZDRlZjczYzAzNy4uZWJkMDNiNGQ0YWE4MDJjYWU2ODI5MGU0ZGQ2NzIyNWQwNGMzN2U1NSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5j
cHAKQEAgLTI1LDcgKzI1LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyR3RrLmg+
CiAKIFdlYlZpZXdUZXN0OjpXZWJWaWV3VGVzdCgpCi0gICAgOiBtX3dlYlZpZXcoV0VCS0lUX1dF
Ql9WSUVXKGdfb2JqZWN0X3JlZl9zaW5rKHdlYmtpdF93ZWJfdmlld19uZXcoKSkpKQorICAgIDog
V2ViVmlld1Rlc3QoV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSkpIHsgfQor
CitXZWJWaWV3VGVzdDo6V2ViVmlld1Rlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykKKyAgICA6
IG1fd2ViVmlldyhXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldykpKQog
ICAgICwgbV9tYWluTG9vcChnX21haW5fbG9vcF9uZXcoMCwgVFJVRSkpCiAgICAgLCBtX3BhcmVu
dFdpbmRvdygwKQogICAgICwgbV9qYXZhc2NyaXB0UmVzdWx0KDApCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmgKaW5kZXggZjQ1ZTEyNWM5ZDRm
YTJkY2Q2NDNkNjE0MGFhYTM3ZGYxNjBiYTM4OC4uMmJjZjU2MzU5OGE3ZWZmODZhMjg2MTAxMmQw
Y2ZhODc0MTk5N2FkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0
Mkd0ay9XZWJWaWV3VGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJH
dGsvV2ViVmlld1Rlc3QuaApAQCAtMjgsNiArMjgsNyBAQAogY2xhc3MgV2ViVmlld1Rlc3Q6IHB1
YmxpYyBUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFdlYlZpZXdU
ZXN0KTsKKyAgICBXZWJWaWV3VGVzdChXZWJLaXRXZWJWaWV3Kik7CiAgICAgV2ViVmlld1Rlc3Qo
KTsKICAgICB2aXJ0dWFsIH5XZWJWaWV3VGVzdCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234338</attachid>
            <date>2014-07-03 06:25:30 -0700</date>
            <delta_ts>2014-07-03 06:39:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134551-20140703162739.patch</filename>
            <type>text/plain</type>
            <size>75802</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmU0MTFiYWUwMmY2NDE4
ZjY5NTM3ZTNjZWQ4MWEyZjlkNDZkYjg2OS4uYWMxMWM2YjZjZDcwZGExNzg0NjE2OWFjNDk3MTYz
OTM5ZWYzMzBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE0LTA3LTAzICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
TW92ZSB1c2VyIHN0eWxlIHNoZWV0IEFQSSBvdXQgb2YgV2ViS2l0V2ViVmlld0dyb3VwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ1NTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBJbmNsdWRlIHRoZSBuZXcgc291cmNlIGZpbGVzIGluIHRoZSBidWlsZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdDcmVh
dGUpOgorICAgICAgICBBZGFwdCB0byB0aGUgYWRkaXRpb25hbCB3ZWJraXRXZWJWaWV3QmFzZUNy
ZWF0ZVdlYlBhZ2UoKSBwYXJhbWV0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlckNvbnRlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRvVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyk6CisgICAgICAgICh0b1VzZXJTdHlsZUxldmVsKToKKyAgICAgICAgKHRvU3RyaW5n
VmVjdG9yKToKKyAgICAgICAgKF9XZWJLaXRVc2VyU3R5bGVTaGVldDo6X1dlYktpdFVzZXJTdHls
ZVNoZWV0KToKKyAgICAgICAgKHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZik6CisgICAgICAg
ICh3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZik6CisgICAgICAgICh3ZWJraXRfdXNlcl9z
dHlsZV9zaGVldF9uZXcpOgorICAgICAgICAod2Via2l0V2ViS2l0VXNlclN0eWxlU2hlZXRUb1Vz
ZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXJQcml2YXRlOjpfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZSk6CisgICAgICAgICh3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfbmV3KToKKyAgICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQpOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9t
YW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzKToKKyAgICAgICAgKHdlYmtpdFVzZXJDb250
ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudFByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOiBB
ZGQgYSBuZXcgcGFyYW1ldGVyIHRvIGFsbG93CisgICAgICAgIHBhc3NpbmcgdGhlIFdlYktpdFVz
ZXJDb250ZW50TWFuYWdlciB0aGF0IHRoZSB3ZWIgdmlldyB3aWxsIHVzZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdDb25zdHJ1Y3RlZCk6IEFkZGVkIGhhbmRsaW5nIG9mIHRoZQorICAgICAgICAidXNl
ci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5IG9uIGNvbnN0cnVjdGlvbi4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZQorICAgICAgICAi
dXNlci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5LgorICAgICAgICAod2Via2l0V2ViVmlld0dl
dFByb3BlcnR5KTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlCisgICAgICAgICJ1c2VyLWNvbnRlbnQt
bWFuYWdlciIgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6
IEFkZGVkIHRoZSAidXNlci1jb250ZW50LW1hbmFnZXIiCisgICAgICAgIHByb3BlcnR5IGRlZmlu
aXRpb24gdG8gdGhlIFdlYktpdFdlYlZpZXcgY2xhc3MuCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KTogTWFkZSByZWxhdGVkIHZpZXdzIHNoYXJlCisgICAg
ICAgIHRoZSBzYW1lIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciB1c2VkIGJ5IHRoZSB2aWV3IHRo
ZXkgYXJlCisgICAgICAgIHJlbGF0ZWQgdG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3
X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZCBuZXcgQVBJIG1ldGhvZHMuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VDcmVhdGUpOiBBZGRlZCBhIHBhcmFtZXRlciB0byBwYXNzIHRoZSB1c2Vy
CisgICAgICAgIGNvbnRlbnQgbWFuYWdlci4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlV2ViUGFnZSk6IEFkZGVkIGEgcGFyYW1ldGVyIHRvIHBhc3MgdGhlIHVzZXIKKyAgICAgICAg
Y29udGVudCBtYW5hZ2VyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3JvdXAuY3BwOiBSZW1vdmVkIHRoZSBiaXRzIHJlbGF0ZWQKKyAgICAgICAgdG8g
dXNlciBzdHlsZSBzaGVldCBzdXBwb3J0IGZyb20gV2ViS2l0V2ViVmlld0dyb3VwLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncyk6CisgICAgICAgICh0b0FQSUFy
cmF5KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9z
dHlsZV9zaGVldCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVt
b3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmg6IERlbGV0ZWQgdGhlIEFQSSBtZXRob2RzCisg
ICAgICAgIGZvciB1c2VyIHN0eWxlIHNoZWV0IGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZGVkIHRoZSBuZXcgQVBJ
CisgICAgICAgIGZ1bmN0aW9ucyBhbmQgdHlwZXMsIGFuZCByZW1vdmVkIHRoZSBtZXRob2RzIHdo
aWNoIGFyZSBubyBsb25nZXIKKyAgICAgICAgYXZhaWxhYmxlIGluIFdlYktpdFdlYlZpZXdHcm91
cC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEFkZCB0aGUgbmV3IGhl
YWRlcnMuCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcDogQWRkZWQKKyAgICAgICAgbWV0aG9kcyB0byBhZGQgYW5kIHJlbW92
ZSB1c2VyIHN0eWxlIHNoZWV0cywgYWxpa2UgdGhvc2UgdXNlZCBmb3IKKyAgICAgICAgdXNlciBz
Y3JpcHRzLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaDogRGl0dG8uCisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2Up
OgorICAgICAgICBBZGFwdCB0byB0aGUgYWRkaXRpb25hbCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0
ZVdlYlBhZ2UoKSBwYXJhbWV0ZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOiBBZGRlZCBtZXRob2RzCisgICAgICAgIHRvIGFk
ZCBhbmQgcmVtb3ZlIHVzZXIgc3R5bGUgc2hlZXRzLCBhbGlrZSB0aG9zZSB1c2VkIGZvciB1c2Vy
IHNjcmlwdHMuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRk
VXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6IERpdHRvLgorICAgICAgICAqIFdl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICBEaXR0by4KKwogMjAxNC0wNy0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTcwNjc2KTogW0dUS10g
VUkgcHJvY2VzcyBjcmFzaGVzIHdoZW4gdGhlIFdlYiBQcm9jZXNzIGNyYXNoZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggZDA3ZDI4MTU1NmJiYzgyMDA1ZDY2NTc3ZmI0ODYxZWM2YTZjYjM0Mi4u
ODA1YWI2ZjFlMWZjNGYzMjRkMzMzNmIyZWYyYjhkYzgxMTUyODlhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTkyNSw2ICs5MjUsOCBAQCBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUQxRXYKIF9fWk43V2ViQ29yZTIxVVJMQnlSZW1vdmluZ1VzZXJJbmZvRVA1TlNVUkwKIF9f
Wk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMTNhZGRVc2VyU2NyaXB0RVJOU18xNURP
TVdyYXBwZXJXb3JsZEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzEwVXNlclNjcmlwdEVOUzNfMTRk
ZWZhdWx0X2RlbGV0ZUlTNV9FRUVFCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxl
cjE3cmVtb3ZlVXNlclNjcmlwdHNFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQorX19aTjdXZWJDb3Jl
MjFVc2VyQ29udGVudENvbnRyb2xsZXIxN2FkZFVzZXJTdHlsZVNoZWV0RVJOU18xNURPTVdyYXBw
ZXJXb3JsZEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzE0VXNlclN0eWxlU2hlZXRFTlMzXzE0ZGVm
YXVsdF9kZWxldGVJUzVfRUVFRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKK19fWk43V2Vi
Q29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMjFyZW1vdmVVc2VyU3R5bGVTaGVldHNFUk5TXzE1
RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXIzMWFk
ZFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JFUk5TXzI4VXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvckUKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMzRyZW1vdmVVc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yRVJOU18yOFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3JFCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxlcjZjcmVhdGVFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhNGJhOWFhOWFjMGIxMTNlMGViOGM5ZDc0Zjc5M2I0NzU2
ZGI5MTFlLi44MThlMGVmN2E1MDZlMDQ5MzUyMWMwOTdhMmI1MmFiZTZhNGZhZGRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjEwLDYgKzIxMCwxMiBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaAogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKKyAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5oCisgICAgVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlckNvbnRlbnQuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNl
ckNvbnRlbnRQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
clByaXZhdGUuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
ci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFZlcnNpb24uaC5pbgogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwCkBAIC0zNTMsNiArMzU5LDggQEAgc2V0KFdlYktpdDJHVEtfSU5T
VEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklSZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklSZXNwb25zZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdC5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlckNvbnRlbnQuaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmgKICAgICAke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAKaW5kZXggNmYwYzA0YmYyNzNkYmZmNjFkOWIwZmJk
YzI3YTgwZDUzOGYyYzMyMy4uYmM3YjgzZjk1YTQ3MmU1MzczYzA3ODE2YWZhZWVlMTRjNWQyMWQw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcApA
QCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV0tWaWV3UmVmIFdL
Vmlld0NyZWF0ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwUmVmKQogewotICAgIHJldHVybiB0b0FQSSh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSh0b0lt
cGwoY29udGV4dFJlZiksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCBudWxscHRyKSk7CisgICAgcmV0
dXJuIHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSwgdG9J
bXBsKHBhZ2VHcm91cFJlZiksIG51bGxwdHIsIG51bGxwdHIpKTsKIH0KIAogV0tQYWdlUmVmIFdL
Vmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVh
YTk1MTI3MzQwZTllZTc3M2Q4NThjMTMxZTNiNDU2ZjczM2VhYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50LmNwcApA
QCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnQuaCIKKworI2lu
Y2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudFByaXZh
dGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLyoqCisgKiBT
RUNUSU9OOldlYktpdFVzZXJDb250ZW50CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IERlZmluZXMg
dXNlciBjb250ZW50IHR5cGVzIHdoaWNoIGFmZmVjdCB3ZWIgcGFnZXMuCisgKiBAdGl0bGU6IFVz
ZXIgY29udGVudAorICoKKyAqIFNlZSBhbHNvOiAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCisg
KgorICogU2luY2U6IDIuNgorICovCisKK3N0YXRpYyBpbmxpbmUgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoV2ViS2l0VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKK3sKKyAgICBzd2l0Y2ggKGluamVjdGVkRnJhbWVz
KSB7CisgICAgY2FzZSBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9UT1BfRlJBTUU6CisgICAg
ICAgIHJldHVybiBJbmplY3RJblRvcEZyYW1lT25seTsKKyAgICBjYXNlIFdFQktJVF9VU0VSX0NP
TlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6CisgICAgICAgIHJldHVybiBJbmplY3RJbkFsbEZyYW1l
czsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIEluamVjdEluQWxsRnJhbWVzOworICAgIH0KK30KKworc3RhdGljIGlubGluZSBVc2Vy
U3R5bGVMZXZlbCB0b1VzZXJTdHlsZUxldmVsKFdlYktpdFVzZXJTdHlsZUxldmVsIHN0eWxlTGV2
ZWwpCit7CisgICAgc3dpdGNoIChzdHlsZUxldmVsKSB7CisgICAgY2FzZSBXRUJLSVRfVVNFUl9T
VFlMRV9MRVZFTF9VU0VSOgorICAgICAgICByZXR1cm4gVXNlclN0eWxlVXNlckxldmVsOworICAg
IGNhc2UgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfQVVUSE9SOgorICAgICAgICByZXR1cm4gVXNl
clN0eWxlQXV0aG9yTGV2ZWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBVc2VyU3R5bGVBdXRob3JMZXZlbDsKKyAgICB9Cit9CisK
K3N0YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWN0b3IoY29uc3QgY2hhciog
Y29uc3QqIHN0cnYpCit7CisgICAgaWYgKCFzdHJ2KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0
cmluZz4oKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICBmb3IgKGF1dG8gc3Ry
ID0gc3RydjsgKnN0cjsgKytzdHIpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RkOjptb3ZlKFN0
cmluZzo6ZnJvbVVURjgoKnN0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdHJ1Y3Qg
X1dlYktpdFVzZXJTdHlsZVNoZWV0IHsKKyAgICBfV2ViS2l0VXNlclN0eWxlU2hlZXQoY29uc3Qg
Z2NoYXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcywgV2ViS2l0VXNlclN0eWxlTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIqIGNvbnN0KiB3aGl0
ZWxpc3QsIGNvbnN0IGNoYXIqIGNvbnN0KiBibGFja2xpc3QpCisgICAgICAgIDogdXNlclN0eWxl
U2hlZXQoc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oCisgICAgICAgICAgICBTdHJp
bmc6OmZyb21VVEY4KHNvdXJjZSksIFVSTCB7IH0sCisgICAgICAgICAgICB0b1N0cmluZ1ZlY3Rv
cih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLAorICAgICAgICAgICAgdG9V
c2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSwKKyAgICAgICAgICAgIHRv
VXNlclN0eWxlTGV2ZWwobGV2ZWwpKSkKKyAgICAgICAgLCByZWZlcmVuY2VDb3VudCgxKQorICAg
IHsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHls
ZVNoZWV0OworICAgIGludCByZWZlcmVuY2VDb3VudDsKK307CisKK0dfREVGSU5FX0JPWEVEX1RZ
UEUoV2ViS2l0VXNlclN0eWxlU2hlZXQsIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0LCB3ZWJraXRf
dXNlcl9zdHlsZV9zaGVldF9yZWYsIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmKQorCisv
KioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZjoKKyAqIEB1c2VyX3N0eWxlX3NoZWV0
OiBhICNXZWJLaXRVc2VyU3R5bGVTaGVldAorICoKKyAqIEF0b21pY2FsbHkgaW5jcmVtZW50cyB0
aGUgcmVmZXJlbmNlIGNvdW50IG9mIEB1c2VyX3N0eWxlX3NoZWV0IGJ5IG9uZS4KKyAqIFRoaXMg
ZnVuY3Rpb24gaXMgTVQtc2FmZSBhbmQgbWF5IGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisg
KgorICogUmV0dXJuczogVGhlIHBhc3NlZCAjV2ViS2l0VXNlclN0eWxlU2hlZXQKKyAqCisgKiBT
aW5jZTogMi42CisgKi8KK1dlYktpdFVzZXJTdHlsZVNoZWV0KiB3ZWJraXRfdXNlcl9zdHlsZV9z
aGVldF9yZWYoV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0KQoreworICAgIGdf
YXRvbWljX2ludF9pbmMoJnVzZXJTdHlsZVNoZWV0LT5yZWZlcmVuY2VDb3VudCk7CisgICAgcmV0
dXJuIHVzZXJTdHlsZVNoZWV0OworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X3VucmVmOgorICogQHVzZXJfc3R5bGVfc2hlZXQ6IGEgI1dlYktpdFVzZXJTdHlsZVNoZWV0Cisg
KgorICogQXRvbWljYWxseSBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgQHVzZXJf
c3R5bGVfc2hlZXQgYnkgb25lLgorICogSWYgdGhlIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byAw
LCBhbGwgbWVtb3J5IGFsbG9jYXRlZCBieQorICogI1dlYktpdFVzZXJTdHlsZVNoZWV0IGlzIHJl
bGVhc2VkLiBUaGlzIGZ1bmN0aW9uIGlzIE1ULXNhZmUgYW5kIG1heSBiZQorICogY2FsbGVkIGZy
b20gYW55IHRocmVhZC4KKyAqCisgKiBTaW5jZTogMi42CisgKi8KK3ZvaWQgd2Via2l0X3VzZXJf
c3R5bGVfc2hlZXRfdW5yZWYoV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0KQor
eworICAgIGlmIChnX2F0b21pY19pbnRfZGVjX2FuZF90ZXN0KCZ1c2VyU3R5bGVTaGVldC0+cmVm
ZXJlbmNlQ291bnQpKSB7CisgICAgICAgIHVzZXJTdHlsZVNoZWV0LT5+V2ViS2l0VXNlclN0eWxl
U2hlZXQoKTsKKyAgICAgICAgZ19zbGljZV9mcmVlKFdlYktpdFVzZXJTdHlsZVNoZWV0LCB1c2Vy
U3R5bGVTaGVldCk7CisgICAgfQorfQorCisvKioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X25ldzoKKyAqIEBzb3VyY2U6IFNvdXJjZSBjb2RlIG9mIHRoZSB1c2VyIHN0eWxlIHNoZWV0Lgor
ICogQGluamVjdGVkX2ZyYW1lczogQSAjV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB2
YWx1ZQorICogQGxldmVsOiBBICNXZWJLaXRVc2VyU3R5bGVMZXZlbAorICogQHdoaXRlbGlzdDog
KGFycmF5IHplcm8tdGVybWluYXRlZD0xKSAoYWxsb3ctbm9uZSk6IEEgd2hpdGVsaXN0IG9mIFVS
SSBwYXR0ZXJucyBvciAlTlVMTAorICogQGJsYWNrbGlzdDogKGFycmF5IHplcm8tdGVybWluYXRl
ZD0xKSAoYWxsb3ctbm9uZSk6IEEgYmxhY2tsaXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVMTAor
ICoKKyAqIENyZWF0ZXMgYSBuZXcgdXNlciBzdHlsZSBzaGVldC4gU3R5bGUgc2hlZXRzIGNhbiBi
ZSBhcHBsaWVkIHRvIHNvbWUgVVJJcworICogb25seSBieSBwYXNzaW5nIG5vbi1udWxsIHZhbHVl
cyBmb3IgQHdoaXRlbGlzdCBvciBAYmxhY2tsaXN0LiBQYXNzaW5nIGEKKyAqICVOVUxMIHdoaXRl
bGlzdCBpbXBsaWVzIHRoYXQgYWxsIFVSSXMgYXJlIG9uIHRoZSB3aGl0ZWxpc3QuIFRoZSBzdHls
ZQorICogc2hlZXQgaXMgYXBwbGllZCBpZiBhbiBVUkkgbWF0Y2hlcyB0aGUgd2hpdGVsaXN0IGFu
ZCBub3QgdGhlIGJsYWNrbGlzdC4KKyAqIFVSSSBwYXR0ZXJucyBtdXN0IGJlIG9mIHRoZSBmb3Jt
IGBbcHJvdG9jb2xdOi8vW2hvc3RdL1twYXRoXWAsIHdoZXJlIHRoZQorICogKmhvc3QqIGFuZCAq
cGF0aCogY29tcG9uZW50cyBjYW4gY29udGFpbiB0aGUgd2lsZGNhcmQgY2hhcmFjdGVyIChgKmAp
IHRvCisgKiByZXByZXNlbnQgemVybyBvciBtb3JlIG90aGVyIGNoYXJhY3RlcnMuCisgKgorICog
UmV0dXJuczogQSBuZXcgI1dlYktpdFVzZXJTdHlsZVNoZWV0CisgKgorICogU2luY2U6IDIuNgor
ICovCitXZWJLaXRVc2VyU3R5bGVTaGVldCogd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGNv
bnN0IGdjaGFyKiBzb3VyY2UsIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0
ZWRGcmFtZXMsIFdlYktpdFVzZXJTdHlsZUxldmVsIGxldmVsLCBjb25zdCBjaGFyKiBjb25zdCog
d2hpdGVsaXN0LCBjb25zdCBjaGFyKiBjb25zdCogYmxhY2tsaXN0KQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHNvdXJjZSwgbnVsbHB0cik7CisgICAgV2ViS2l0VXNlclN0eWxlU2hlZXQq
IHVzZXJTdHlsZVNoZWV0ID0gZ19zbGljZV9uZXcoV2ViS2l0VXNlclN0eWxlU2hlZXQpOworICAg
IG5ldyAodXNlclN0eWxlU2hlZXQpIFdlYktpdFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgaW5qZWN0
ZWRGcmFtZXMsIGxldmVsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisgICAgcmV0dXJuIHVzZXJT
dHlsZVNoZWV0OworfQorCitjb25zdCBVc2VyU3R5bGVTaGVldCYgd2Via2l0VXNlclN0eWxlU2hl
ZXRHZXRVc2VyU3R5bGVTaGVldChXZWJLaXRVc2VyU3R5bGVTaGVldCogdXNlclN0eWxlU2hlZXQp
Cit7CisgICAgcmV0dXJuICp1c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQ7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMWQzYWRlYjUyMjhmM2U4MjI0OGU0MTJmMzdhNDQwZTgzNGQ2Y2RlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlckNvbnRlbnQuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmlu
ZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+
IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVc2Vy
Q29udGVudF9oCisjZGVmaW5lIFdlYktpdFVzZXJDb250ZW50X2gKKworI2luY2x1ZGUgPGdsaWIt
b2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5f
REVDTFMKKworLyoqCisgKiBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOgorICogQFdF
QktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6IEluc2VydCB0aGUgdXNlciBzdHls
ZQorICogICBzaGVldCBpbiBhbGwgdGhlIGZyYW1lcyBsb2FkZWQgYnkgdGhlIHdlYiB2aWV3LCBp
bmNsdWRpbmcKKyAqICAgbmVzdGVkIGZyYW1lcy4gVGhpcyBpcyB0aGUgZGVmYXVsdC4KKyAqIEBX
RUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9UT1BfRlJBTUU6IEluc2VydCB0aGUgdXNlciBzdHls
ZQorICogICBzaGVldCAqb25seSogaW4gdGhlIHRvcC1sZXZlbCBmcmFtZSBsb2FkZWQgYnkgdGhl
IHdlYiB2aWV3LAorICogICBhbmQgKm5vdCogaW4gdGhlIG5lc3RlZCBmcmFtZXMuCisgKgorICog
U3BlY2lmaWVzIGluIHdoaWNoIGZyYW1lcyB1c2VyIHN0eWxlIHNoZWV0cyBhcmUgdG8gYmUgaW5z
ZXJ0ZWQgaW4uCisgKgorICogU2luY2U6IDIuNgorICovCit0eXBlZGVmIGVudW0geworICAgIFdF
QktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVMsCisgICAgV0VCS0lUX1VTRVJfQ09O
VEVOVF9JTkpFQ1RfVE9QX0ZSQU1FLAorfSBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OworCisvKioKKyAqIFdlYktpdFVzZXJTdHlsZUxldmVsOgorICogQFdFQktJVF9VU0VSX1NUWUxF
X0xFVkVMX1VTRVI6IFRoZSBzdHlsZSBzaGVldCBpcyBhbiB1c2VyIHN0eWxlIHNoZWV0LAorICog
ICBpdHMgY29udGVudHMgYWx3YXlzIG92ZXJyaWRlIG90aGVyIHN0eWxlIHNoZWV0cy4gVGhpcyBp
cyB0aGUgZGVmYXVsdC4KKyAqIEBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9BVVRIT1I6IFRoZSBz
dHlsZSBzaGVldCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYKKyAqICAgaXQgd2FzIHByb3ZpZGVkIGJ5
IHRoZSBsb2FkZWQgZG9jdW1lbnRzLiBUaGF0IG1lYW5zIG90aGVyIHVzZXIgc3R5bGUKKyAqICAg
c2hlZXRzIG1heSBzdGlsbCBvdmVycmlkZSBpdC4KKyAqCisgKiBTcGVjaWZpZXMgaG93IHRvIHRy
ZWF0IGFuIHVzZXIgc3R5bGUgc2hlZXQuCisgKgorICogU2luY2U6IDIuNgorICovCit0eXBlZGVm
IGVudW0geworICAgIFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsCisgICAgV0VCS0lUX1VT
RVJfU1RZTEVfTEVWRUxfQVVUSE9SLAorfSBXZWJLaXRVc2VyU3R5bGVMZXZlbDsKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9VU0VSX1NUWUxFX1NIRUVUICh3ZWJraXRfdXNlcl9jb250ZW50X2dldF90
eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyU3R5bGVTaGVldCBXZWJLaXRVc2Vy
U3R5bGVTaGVldDsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRf
Z2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKK3dl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZiAgICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAg
ICAgICAgKnVzZXJfc3R5bGVfc2hlZXQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF91c2Vy
X3N0eWxlX3NoZWV0X3VucmVmICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAgICAgICAgKnVz
ZXJfc3R5bGVfc2hlZXQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKK3dl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyAgICAgIChjb25zdCBnY2hhciAgICAgICAgICAgICAg
ICAgICAgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkX2ZyYW1lcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyU3R5bGVMZXZlbCAgICAgICAgICAgIGxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAg
ICAgICAgICAgICAqd2hpdGVsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqYmxhY2tsaXN0KTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjllNWE0
MGExMWQyYjc5Njc4ZGEwNjllMjQyMmE4MGQxNTBkYzFlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNw
cApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5M
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmgiCisKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK3N0cnVjdCBfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZSB7CisgICAg
X1dlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUoKQorICAgICAgICA6IHVzZXJDb250ZW50
Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCkpIHsgfQor
CisgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiB1c2VyQ29udGVudENv
bnRyb2xsZXI7Cit9OworCisvKioKKyAqIFNFQ1RJT046V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IE1hbmFnZXMgdXNlci1kZWZpbmVkIGNvbnRlbnQgd2hp
Y2ggYWZmZWN0cyB3ZWIgcGFnZXMuCisgKiBAdGl0bGU6IFdlYktpdFVzZXJDb250ZW50TWFuYWdl
cgorICoKKyAqIFVzaW5nIGEgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlciB1c2VyIENTUyBzdHls
ZSBzaGVldHMgY2FuIGJlIHNldCB0bworICogYmUgaW5qZWN0ZWQgaW4gdGhlIHdlYiBwYWdlcyBs
b2FkZWQgYnkgYSAjV2ViS2l0V2ViVmlldywgYnkKKyAqIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFu
YWdlcl9hZGRfc3R5bGVfc2hlZXQoKS4KKyAqCisgKiBUbyB1c2UgYSAjV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyLCBpdCBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKKyAqIHdlYmtpdF91c2VyX2NvbnRl
bnRfbWFuYWdlcl9uZXcoKSwgYW5kIHRoZW4gcGFzc2VkIHRvCisgKiB3ZWJraXRfd2ViX3ZpZXdf
bmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIoKS4gVXNlciBzdHlsZQorICogc2hlZXRzIGNh
biBiZSBjcmVhdGVkIHdpdGggd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KCkuCisgKgorICog
VXNlciBzdHlsZSBzaGVldHMgY2FuIGJlIGFkZGVkIGFuZCByZW1vdmVkIGF0IGFueSB0aW1lLCBi
dXQKKyAqIHRoZXkgd2lsbCBhZmZlY3QgdGhlIHdlYiBwYWdlcyBsb2FkZWQgYWZ0ZXJ3YXJkcy4K
KyAqCisgKiBTaW5jZTogMi42CisgKi8KKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFVzZXJD
b250ZW50TWFuYWdlciwgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyLCBHX1RZUEVfT0JKRUNU
KQorCitzdGF0aWMgdm9pZCB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfY2xhc3NfaW5pdChX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXJDbGFzcyopCit7Cit9CisKKy8qKgorICogd2Via2l0X3Vz
ZXJfY29udGVudF9tYW5hZ2VyX25ldzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3IHVzZXIgY29udGVu
dCBtYW5hZ2VyLgorICoKKyAqIFJldHVybnM6IEEgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlcgor
ICoKKyAqIFNpbmNlOiAyLjYKKyAqLworV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCkKK3sKKyAgICByZXR1cm4gV0VCS0lUX1VTRVJfQ09O
VEVOVF9NQU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdF
UiwgbnVsbHB0cikpOworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9h
ZGRfc3R5bGVfc2hlZXQ6CisgKiBAbWFuYWdlcjogQSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
CisgKiBAc3R5bGVzaGVldDogQSAjV2ViS2l0VXNlclN0eWxlU2hlZXQKKyAqCisgKiBBZGRzIGEg
I1dlYktpdFVzZXJTdHlsZVNoZWV0IHRvIHRoZSBnaXZlbiAjV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLgorICogVGhlIHNhbWUgI1dlYktpdFVzZXJTdHlsZVNoZWV0IGNhbiBiZSByZXVzZWQgd2l0
aCBtdWx0aXBsZQorICogI1dlYktpdFVzZXJDb250ZW50TWFuYWdlciBpbnN0YW5jZXMuCisgKgor
ICogU2luY2U6IDIuNgorICovCit2b2lkIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRf
c3R5bGVfc2hlZXQoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiBtYW5hZ2VyLCBXZWJLaXRVc2Vy
U3R5bGVTaGVldCogc3R5bGVTaGVldCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19VU0VSX0NPTlRFTlRfTUFOQUdFUihtYW5hZ2VyKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChz
dHlsZVNoZWV0KTsKKyAgICBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFk
ZFVzZXJTdHlsZVNoZWV0KHdlYmtpdFVzZXJTdHlsZVNoZWV0R2V0VXNlclN0eWxlU2hlZXQoc3R5
bGVTaGVldCkpOworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1v
dmVfYWxsX3N0eWxlX3NoZWV0czoKKyAqIEBtYW5hZ2VyOiBBICNXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIKKyAqCisgKiBSZW1vdmVzIGFsbCB1c2VyIHN0eWxlIHNoZWV0cyBmcm9tIHRoZSBnaXZl
biAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLgorICoKKyAqIFNpbmNlOiAyLjYKKyAqLwordm9p
ZCB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVtb3ZlX2FsbF9zdHlsZV9zaGVldHMoV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VSKG1hbmFnZXIpKTsKKyAgICBtYW5hZ2VyLT5w
cml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOwor
fQorCitXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogd2Via2l0VXNlckNvbnRlbnRNYW5h
Z2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
KiBtYW5hZ2VyKQoreworICAgIHJldHVybiBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRy
b2xsZXIuZ2V0KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MTk1MDBm
YWVmMGM1ODVmMGNhNDk2MzY0MmU2ZWI4MzNhMTcyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaApA
QCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
ZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01Q
SUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRl
ZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJf
aAorI2RlZmluZSBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJfaAorCisjaW5jbHVkZSA8Z2xpYi1v
YmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFVzZXJDb250ZW50Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBX
RUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUiAgICAgICAgICAgICh3ZWJraXRfdXNlcl9j
b250ZW50X21hbmFnZXJfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfQ09OVEVOVF9N
QU5BR0VSKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiks
IFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSLCBXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIpKQorI2RlZmluZSBXRUJLSVRfSVNfVVNFUl9DT05URU5UX01BTkFHRVIob2JqKSAgICAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfVVNFUl9DT05U
RU5UX01BTkFHRVIpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9DT05URU5UX01BTkFHRVJfQ0xBU1Mo
a2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVf
VVNFUl9DT05URU5UX01BTkFHRVIsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlckNsYXNzKSkKKyNk
ZWZpbmUgV0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VSX0NMQVNTKGtsYXNzKSAoR19UWVBF
X0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5B
R0VSKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfQ09OVEVOVF9NQU5BR0VSX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1VTRVJfQ09O
VEVOVF9NQU5BR0VSLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJDbGFzcykpCisKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgICAgICAgIFdlYktpdFVzZXJDb250ZW50
TWFuYWdlcjsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJDbGFzcyAg
IFdlYktpdFVzZXJDb250ZW50TWFuYWdlckNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVz
ZXJDb250ZW50TWFuYWdlclByaXZhdGUgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZTsK
KworCitzdHJ1Y3QgX1dlYktpdFVzZXJDb250ZW50TWFuYWdlciB7CisgICAgR09iamVjdCBwYXJl
bnQ7CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQ
cml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJDbGFz
cyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKKworICAgIHZvaWQgKCpfd2Via2l0
X3Jlc2VydmVkMCkgKHZvaWQpOworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQp
OworICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOworICAgIHZvaWQgKCpfd2Vi
a2l0X3Jlc2VydmVkMykgKHZvaWQpOworfTsKKworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfZ2V0X3R5cGUgICAgICAgICAgICAgICAgKHZvaWQpOworCitX
RUJLSVRfQVBJIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqCit3ZWJraXRfdXNlcl9jb250ZW50
X21hbmFnZXJfbmV3ICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQgICAgICAgICAo
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICptYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAg
KnN0eWxlc2hlZXQpOworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfcmVtb3ZlX2FsbF9zdHlsZV9zaGVldHMgKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqbWFu
YWdlcik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3OTFhNTM1N2I0MTkyMTljZjY2ZGZjNzZiZGMyZDE2NGZi
M2I2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmgKQEAgLTAsMCArMSwyOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFVzZXJDb250
ZW50TWFuYWdlclByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2
YXRlX2gKKworI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIgorI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCisKK1dlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkqIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KFdlYktpdFVzZXJDb250ZW50TWFuYWdlciopOworCisjZW5kaWYgLy8g
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudFByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50UHJpdmF0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgzOTU4YWJjYTNkOTY5ZGY5OTlmMjA0ZDlmNjU0NDI1M2MzMzdkMGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2Vy
Q29udGVudFByaXZhdGUuaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlX2gKKyNkZWZp
bmUgV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlX2gKKworI2luY2x1ZGUgIldlYktpdFVzZXJDb250
ZW50LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTdHlsZVNoZWV0Lmg+CisKK2NvbnN0IFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0JiB3ZWJraXRVc2VyU3R5bGVTaGVldEdldFVzZXJTdHlsZVNo
ZWV0KFdlYktpdFVzZXJTdHlsZVNoZWV0Kik7CisKKyNlbmRpZiAvLyBXZWJLaXRVc2VyQ29udGVu
dFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA2MjgwOGI3NmNlZjg2ZGE3MjMzYjFkMDI2MmEyZWNj
NDRjMWYzMjcyLi43MGQ0YWMxN2U1NDViOWI1OThmODVhODFmYjE4Yjk5Zjc1MWVlM2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5TWFuYWdl
clByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldl
YktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViVmlld0dyb3VwUHJpdmF0ZS5oIgpAQCAtMTA1MCwxMiArMTA1MSwxMyBAQCB2b2lkIHdlYmtp
dFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCwgdQogICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZVJlcXVlc3RzLnJlbW92
ZShjdXN0b21Qcm90b2NvbElEKTsKIH0KIAotdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFn
ZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJWaWV3R3JvdXAsIFdlYktpdFdlYlZpZXcqIHJl
bGF0ZWRWaWV3KQordm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2Vi
Vmlld0dyb3VwKiB3ZWJWaWV3R3JvdXAsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNv
bnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykKIHsKICAgICBXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KTsK
ICAgICBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCA9IHdlYlZpZXdHcm91cCA/IHdlYmtpdFdlYlZp
ZXdHcm91cEdldFBhZ2VHcm91cCh3ZWJWaWV3R3JvdXApIDogMDsKICAgICBXZWJQYWdlUHJveHkq
IHJlbGF0ZWRQYWdlID0gcmVsYXRlZFZpZXcgPyB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VC
S0lUX1dFQl9WSUVXX0JBU0UocmVsYXRlZFZpZXcpKSA6IG51bGxwdHI7Ci0gICAgd2Via2l0V2Vi
Vmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYlZpZXdCYXNlLCBjb250ZXh0LT5wcml2LT5jb250ZXh0
LmdldCgpLCBwYWdlR3JvdXAsIHJlbGF0ZWRQYWdlKTsKKyAgICBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eSogdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgPSB1c2VyQ29udGVudE1hbmFn
ZXIgPyB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSh1c2VyQ29udGVudE1hbmFnZXIpIDogbnVsbHB0cjsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUNy
ZWF0ZVdlYlBhZ2Uod2ViVmlld0Jhc2UsIGNvbnRleHQtPnByaXYtPmNvbnRleHQuZ2V0KCksIHBh
Z2VHcm91cCwgdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHksIHJlbGF0ZWRQYWdlKTsKIAogICAg
IFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZSh3ZWJWaWV3QmFz
ZSk7CiAgICAgY29udGV4dC0+cHJpdi0+d2ViVmlld3Muc2V0KHBhZ2UtPnBhZ2VJRCgpLCB3ZWJW
aWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDA2NDc0YTFlZjBhYjMyNDI0MGJlMmYxMTEz
MDQxNGZiMjI5ZTNlMTQuLjc2ZGNkMzY1ODZjYTRjMzk2MDhiMTYwZWEwYTM0NWY2ZGQzOTAxYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHkuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIgogI2luY2x1ZGUg
IldlYktpdFdlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3R3JvdXAuaCIKICNp
bmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgpAQCAtNDIsNyAr
NDMsNyBAQCBXZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiB3ZWJr
aXRXZWJDb250ZXh0R2V0UmVxdWVzdE1hbmFnZXIoVwogdm9pZCB3ZWJraXRXZWJDb250ZXh0U3Rh
cnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQsIEFQSTo6VVJMUmVxdWVzdCopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0U3Rv
cExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCk7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9t
UHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwot
dm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4
dCosIFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJWaWV3R3JvdXAqLCBXZWJLaXRXZWJWaWV3Kik7
Cit2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250
ZXh0KiwgV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYlZpZXdHcm91cCosIFdlYktpdFVzZXJDb250
ZW50TWFuYWdlciosIFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZp
ZXdEZXN0cm95ZWQoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqKTsKIFdlYktpdFdl
YlZpZXcqIHdlYmtpdFdlYkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShXZWJLaXRXZWJDb250ZXh0
KiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIFdlYktpdFdlYlZpZXdHcm91cCogd2Via2l0V2Vi
Q29udGV4dEdldERlZmF1bHRXZWJWaWV3R3JvdXAoV2ViS2l0V2ViQ29udGV4dCopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRl
eCAwZjg1NWU1N2JmNzUxMWFhZWU2ZWIwMmE5OTMwMjc3YjI3MTA2MWUzLi5mODI2Y2VhMDc5YjE3
YTdlOTc2NjQxYjYyMjQxZDQwYjJkZWUyNzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTMzLDYgKzEzMyw3IEBAIGVu
dW0gewogICAgIFBST1BfV0VCX0NPTlRFWFQsCiAgICAgUFJPUF9SRUxBVEVEX1ZJRVcsCiAgICAg
UFJPUF9HUk9VUCwKKyAgICBQUk9QX1VTRVJfQ09OVEVOVF9NQU5BR0VSLAogICAgIFBST1BfVElU
TEUsCiAgICAgUFJPUF9FU1RJTUFURURfTE9BRF9QUk9HUkVTUywKICAgICBQUk9QX0ZBVklDT04s
CkBAIC0xNzEsNiArMTcyLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAg
R1JlZlB0cjxXZWJLaXRTZXR0aW5ncz4gc2V0dGluZ3M7CiAgICAgdW5zaWduZWQgbG9uZyBzZXR0
aW5nc0NoYW5nZWRIYW5kbGVySUQ7CiAgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3R3JvdXA+IGdy
b3VwOworICAgIEdSZWZQdHI8V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPiB1c2VyQ29udGVudE1h
bmFnZXI7CiAgICAgR1JlZlB0cjxXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzPiB3aW5kb3dQcm9wZXJ0
aWVzOwogCiAgICAgR1JlZlB0cjxHTWFpbkxvb3A+IG1vZGFsTG9vcDsKQEAgLTUwMSw3ICs1MDMs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0
KQogCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3Qp
OwogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICB3
ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dCwgd2ViVmll
dywgcHJpdi0+Z3JvdXAuZ2V0KCksIHByaXYtPnJlbGF0ZWRWaWV3KTsKKyAgICB3ZWJraXRXZWJD
b250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dCwgd2ViVmlldywgcHJpdi0+
Z3JvdXAuZ2V0KCksIHByaXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRl
ZFZpZXcpOwogICAgIC8vIFRoZSByZWxhdGVkIHZpZXcgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhl
IGNvbnN0cnVjdGlvbi4KICAgICBwcml2LT5yZWxhdGVkVmlldyA9IG51bGxwdHI7CiAKQEAgLTU0
Miw2ICs1NDQsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUKICAgICAgICAgd2ViVmlldy0+
cHJpdi0+Z3JvdXAgPSBncm91cCA/IFdFQktJVF9XRUJfVklFV19HUk9VUChncm91cCkgOiAwOwog
ICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBQUk9QX1VTRVJfQ09OVEVOVF9NQU5BR0VS
OiB7CisgICAgICAgIGdwb2ludGVyIHVzZXJDb250ZW50TWFuYWdlciA9IGdfdmFsdWVfZ2V0X29i
amVjdCh2YWx1ZSk7CisgICAgICAgIHdlYlZpZXctPnByaXYtPnVzZXJDb250ZW50TWFuYWdlciA9
IHVzZXJDb250ZW50TWFuYWdlciA/IFdFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUih1c2VyQ29u
dGVudE1hbmFnZXIpIDogbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ug
UFJPUF9aT09NX0xFVkVMOgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwo
d2ViVmlldywgZ192YWx1ZV9nZXRfZG91YmxlKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAt
NTYxLDYgKzU2OCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0dS
T1VQOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19n
ZXRfZ3JvdXAod2ViVmlldykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVVNFUl9D
T05URU5UX01BTkFHRVI6CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0
X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSk7CisgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgUFJPUF9USVRMRToKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZh
bHVlLCB3ZWJWaWV3LT5wcml2LT50aXRsZS5kYXRhKCkpOwogICAgICAgICBicmVhazsKQEAgLTY3
MSw2ICs2ODEsMjMgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxH
UGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09O
TFkpKSk7CiAKICAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OnVzZXItY29udGVudC1tYW5h
Z2VyOgorICAgICAqCisgICAgICogVGhlICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgb2YgdGhl
IHZpZXcuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi42CisgICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQ
Uk9QX1VTRVJfQ09OVEVOVF9NQU5BR0VSLAorICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAor
ICAgICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwKKyAgICAgICAgICAgIF8oIldlYlZp
ZXcgdXNlciBjb250ZW50IG1hbmFnZXIiKSwKKyAgICAgICAgICAgIF8oIlRoZSBXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIgb2YgdGhlIHZpZXciKSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1VT
RVJfQ09OVEVOVF9NQU5BR0VSLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+
KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCisg
ICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzp0aXRsZToKICAgICAgKgogICAgICAqIFRoZSBt
YWluIGZyYW1lIGRvY3VtZW50IHRpdGxlIG9mIHRoaXMgI1dlYktpdFdlYlZpZXcuIElmCkBAIC0x
OTI0LDYgKzE5NTEsOCBAQCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250
ZXh0KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiAgKiBZb3UgY2FuIGFsc28gdXNlIHRoaXMg
bWV0aG9kIHRvIGltcGxlbWVudCBvdGhlciBwcm9jZXNzIG1vZGVscyBiYXNlZCBvbiAlV0VCS0lU
X1BST0NFU1NfTU9ERUxfTVVMVElQTEVfU0VDT05EQVJZX1BST0NFU1NFUywKICAqIGxpa2UgZm9y
IGV4YW1wbGUsIHNoYXJpbmcgdGhlIHNhbWUgd2ViIHByb2Nlc3MgZm9yIGFsbCB0aGUgdmlld3Mg
aW4gdGhlIHNhbWUgc2VjdXJpdHkgZG9tYWluLgogICoKKyAqIFRoZSBuZXdseSBjcmVhdGVkICNX
ZWJLaXRXZWJWaWV3IHdpbGwgYWxzbyBoYXZlIHRoZSBzYW1lICNXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIgYXMgQHdlYl92aWV3LgorICoKICAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogVGhl
IG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYlZpZXcgd2lkZ2V0CiAgKgogICogU2luY2U6IDIuNApA
QCAtMTkzMiw3ICsxOTYxLDEwIEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRo
X3JlbGF0ZWRfdmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0cik7CiAKLSAgICBy
ZXR1cm4gR1RLX1dJREdFVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsICJyZWxh
dGVkLXZpZXciLCB3ZWJWaWV3LCBudWxscHRyKSk7CisgICAgcmV0dXJuIEdUS19XSURHRVQoZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAgICAgICAidXNlci1jb250ZW50LW1h
bmFnZXIiLCB3ZWJWaWV3LT5wcml2LT51c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksCisgICAgICAg
ICJyZWxhdGVkLXZpZXciLCB3ZWJWaWV3LAorICAgICAgICBudWxscHRyKSk7CiB9CiAKIC8qKgpA
QCAtMTk1Myw2ICsxOTg1LDI1IEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRo
X2dyb3VwKFdlYktpdFdlYlZpZXdHcm91cCogZ3JvdXApCiB9CiAKIC8qKgorICogd2Via2l0X3dl
Yl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyOgorICogQHVzZXJfY29udGVudF9t
YW5hZ2VyOiBhICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuCisgKgorICogQ3JlYXRlcyBhIG5l
dyAjV2ViS2l0V2ViVmlldyB3aXRoIHRoZSBnaXZlbiAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LgorICogVGhlIGNvbnRlbnQgbG9hZGVkIGluIHRoZSB2aWV3IG1heSBiZSBhZmZlY3RlZCBieSB0
aGUgY29udGVudCBpbmplY3RlZAorICogaW4gdGhlIHZpZXcgYnkgdGhlIHVzZXIgY29udGVudCBt
YW5hZ2VyLgorICoKKyAqIFJldHVybnM6IFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3
IHdpZGdldAorICoKKyAqIFNpbmNlOiAyLjYKKyAqLworR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
KiB1c2VyQ29udGVudE1hbmFnZXIpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VSKHVzZXJDb250ZW50TWFuYWdlciksIG51bGxwdHIpOwor
CisgICAgcmV0dXJuIEdUS19XSURHRVQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVX
LCAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29udGVudE1hbmFnZXIsIG51bGxwdHIpKTsK
K30KKworLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQ6CiAgKiBAd2ViX3ZpZXc6
IGEgI1dlYktpdFdlYlZpZXcKICAqCkBAIC0xOTg2LDYgKzIwMzcsMjQgQEAgV2ViS2l0V2ViVmll
d0dyb3VwKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiB9CiAKIC8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcjoK
KyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldHMgdGhlIHVzZXIgY29u
dGVudCBtYW5hZ2VyIGFzc29jaWF0ZWQgdG8gQHdlYl92aWV3LCBvciAlTlVMTCBpZiB0aGUKKyAq
IHZpZXcgZG9lcyBub3QgaGF2ZSBhbiB1c2VyIGNvbnRlbnQgbWFuYWdlci4KKyAqCisgKiBSZXR1
cm5zOiAodHJhbnNmZXIgbm9uZSk6IHRoZSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIGFzc29j
aWF0ZWQgd2l0aCB0aGUgdmlldworICoKKyAqIFNpbmNlOiAyLjYKKyAqLworV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBudWxscHRyKTsKKworICAgIHJldHVybiB3ZWJWaWV3LT5w
cml2LT51c2VyQ29udGVudE1hbmFnZXIuZ2V0KCk7Cit9CisKKy8qKgogICogd2Via2l0X3dlYl92
aWV3X2xvYWRfdXJpOgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKiBAdXJpOiBh
biBVUkkgc3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmgKaW5kZXggNTQ5ZDI1NGNjMjZlYjM3ZTJmZmVjYzAxZWRhNjcwM2QyMTk3Y2Nj
YS4uOWJmMmNjNTQ2YmM0NTYyMzJjMDk3ZWU2ZjliYjJmOWZlYzIwMzc4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtNDQsNiAr
NDQsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2NyaXB0RGlhbG9nLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJ
UmVxdWVzdC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRXZWJJbnNwZWN0b3IuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlJlc291
cmNlLmg+CkBAIC0yNjAsNiArMjYxLDkgQEAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0
ZWRfdmlldyAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldwogV0VCS0lUX0FQSSBHdGtXaWRn
ZXQgKgogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2dyb3VwICAgICAgICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlld0dyb3VwICAgICAgICAqZ3JvdXApOwogCitXRUJLSVRfQVBJIEd0a1dp
ZGdldCAqCit3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIgICAg
ICAgIChXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgICp1c2VyX2NvbnRlbnRfbWFuYWdlcik7CisK
IFdFQktJVF9BUEkgV2ViS2l0V2ViQ29udGV4dCAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRl
eHQgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3
ZWJfdmlldyk7CiAKQEAgLTQ1NSw2ICs0NTksMTAgQEAgV0VCS0lUX0FQSSBjYWlyb19zdXJmYWNl
X3QgKgogd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2ggICAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAg
ICAgICAgICpyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgKiplcnJvcik7CisKK1dFQktJ
VF9BUEkgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICoKK3dlYmtpdF93ZWJfdmlld19nZXRfdXNl
cl9jb250ZW50X21hbmFnZXIgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggNzFj
N2NlNWFkMmIwMjk3ZDNjNGUxMzM2NDcxYTVhZDExMDVmMzkxOC4uOThkZmZkOTlkYjM1NDIyOTg5
NjNkNmM1ODg4NWE2MzZjN2I4MWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNDUsNiArNDUsNyBAQAog
I2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJWaWV3QmFzZUlucHV0TWV0aG9kRmlsdGVyLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xp
cGJvYXJkVXRpbGl0aWVzR3RrLmg+CkBAIC05NDEsMTAgKzk0MiwxMCBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MqIHdl
YmtpdFdlYlZpZQogICAgIGNvbnRhaW5lckNsYXNzLT5mb3JhbGwgPSB3ZWJraXRXZWJWaWV3QmFz
ZUNvbnRhaW5lckZvcmFsbDsKIH0KIAotV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdC
YXNlQ3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBX
ZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKQorV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZp
ZXdCYXNlQ3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3Vw
LCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRDb250cm9sbGVyLCBX
ZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJr
aXRXZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfVklFV19CQVNFLCBOVUxMKSk7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVX
ZWJQYWdlKHdlYmtpdFdlYlZpZXdCYXNlLCBjb250ZXh0LCBwYWdlR3JvdXAsIHJlbGF0ZWRQYWdl
KTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uod2Via2l0V2ViVmlld0Jhc2Us
IGNvbnRleHQsIHBhZ2VHcm91cCwgdXNlckNvbnRlbnRDb250cm9sbGVyLCByZWxhdGVkUGFnZSk7
CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlOwogfQogCkBAIC05NzcsMTMgKzk3OCwxNCBA
QCBzdGF0aWMgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYmtpdFdlYlZpZXdCYXNlKQogfQogI2VuZGlmIC8vIEhBVkUoR1RLX1NDQUxFX0ZBQ1RPUikK
IAotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYmtpdFdlYlZpZXdCYXNlLCBXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBh
Z2VHcm91cCwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSkKK3ZvaWQgd2Via2l0V2ViVmlld0Jh
c2VDcmVhdGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgV2Vi
Q29udGV4dCogY29udGV4dCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KiB1c2VyQ29udGVudENvbnRyb2xsZXIsIFdlYlBhZ2VQcm94eSogcmVs
YXRlZFBhZ2UpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2Via2l0
V2ViVmlld0Jhc2UtPnByaXY7CiAKICAgICBXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29u
ZmlndXJhdGlvbjsKICAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSBwYWdlR3Jv
dXA7CiAgICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZTsK
KyAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29u
dGVudENvbnRyb2xsZXI7CiAgICAgcHJpdi0+cGFnZVByb3h5ID0gY29udGV4dC0+Y3JlYXRlV2Vi
UGFnZSgqcHJpdi0+cGFnZUNsaWVudCwgc3RkOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKSk7
CiAgICAgcHJpdi0+cGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oCmluZGV4IGI5YzM4YzI2NTg1MjRiNTZhZWVmYTJlZTNkNTVhOGU4YWY5ZDMzZTQu
LmRmZTIyODVlOWE3YWE3NmZlYjM0ZWU3YTk4ZjkzNjJiZjAyYmM1YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFz
ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCi1XZWJLaXRXZWJWaWV3QmFzZSogd2Vi
a2l0V2ViVmlld0Jhc2VDcmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQYWdl
R3JvdXAqLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOworV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtp
dFdlYlZpZXdCYXNlQ3JlYXRlKFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdy
b3VwKiwgV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSosIFdlYktpdDo6V2Vi
UGFnZVByb3h5Kik7CiBHdGtJTUNvbnRleHQqIHdlYmtpdFdlYlZpZXdCYXNlR2V0SU1Db250ZXh0
KFdlYktpdFdlYlZpZXdCYXNlKik7CiBXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Via2l0V2ViVmll
d0Jhc2VHZXRQYWdlKFdlYktpdFdlYlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdlYlZpZXdCYXNl
Q3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViQ29udGV4dCosIFdl
YktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKK3ZvaWQgd2Via2l0
V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViS2l0OjpXZWJD
b250ZXh0KiwgV2ViS2l0OjpXZWJQYWdlR3JvdXAqLCBXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5KiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VTZXRUb29sdGlwVGV4dChXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IGNoYXIqKTsKIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb29sdGlwQXJlYShXZWJLaXRXZWJWaWV3QmFzZSosIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VGb3J3YXJkTmV4
dEtleUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmNwcAppbmRleCBiMjFlNzlm
NjgzZGE3ZWZmZDE5OGRkZmM4MmEzN2U5YmYzZGMyNGMwLi5jOGE2NTA3YThlNTk4NmZjYWQ2YjY4
NGI3ZTNiZDU5OWJiOWIyMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5jcHAKQEAgLTIzNiw2MyArMjM2LDMgQEAg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfc2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXdHcm91
cCogZ3JvdXAsIFdlYktpdFNldHRpbmcKICAgICB3ZWJraXRXZWJWaWV3R3JvdXBBdHRhY2hTZXR0
aW5nc1RvUGFnZUdyb3VwKGdyb3VwKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QoZ3Jv
dXApLCAic2V0dGluZ3MiKTsKIH0KLQotc3RhdGljIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gdG9B
UElBcnJheShjb25zdCBjaGFyKiBjb25zdCogbGlzdCkKLXsKLSAgICBpZiAoIWxpc3QpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4gPiBlbnRyaWVz
OwotICAgIHdoaWxlICgqbGlzdCkgewotICAgICAgICBlbnRyaWVzLmFwcGVuZChBUEk6OlN0cmlu
Zzo6Y3JlYXRlRnJvbVVURjhTdHJpbmcoKmxpc3QpKTsKLSAgICAgICAgbGlzdCsrOwotICAgIH0K
LSAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShlbnRyaWVzKSk7Ci19Ci0K
LS8qKgotICogd2Via2l0X3dlYl92aWV3X2dyb3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0OgotICog
QGdyb3VwOiBhICNXZWJLaXRXZWJWaWV3R3JvdXAKLSAqIEBzb3VyY2U6IHRoZSBzb3VyY2Ugb2Yg
dGhlIHN0eWxlX3NoZWV0IHRvIGluamVjdAotICogQGJhc2VfdXJpOiAoYWxsb3ctbm9uZSk6IHRo
ZSBiYXNlIFVSSSB0byB1c2Ugd2hlbiBwcm9jZXNzaW5nIHRoZSBzdHlsZV9zaGVldCBjb250ZW50
cyBvciAlTlVMTCBmb3IgYWJvdXQ6YmxhbmsKLSAqIEB3aGl0ZWxpc3Q6IChhcnJheSB6ZXJvLXRl
cm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBhIHdoaXRlbGlzdCBvZiBVUkkgcGF0dGVybnMgb3Ig
JU5VTEwKLSAqIEBibGFja2xpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5v
bmUpOiBhIGJsYWNrbGlzdCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKLSAqIEBpbmplY3RlZF9m
cmFtZXM6IGEgI1dlYktpdEluamVjdGVkQ29udGVudEZyYW1lcyBkZXNjcmliaW5nIHRvIHdoaWNo
IGZyYW1lcyB0aGUgc3R5bGVfc2hlZXQgc2hvdWxkIGFwcGx5Ci0gKgotICogSW5qZWN0IGFuIGV4
dGVybmFsIHN0eWxlIHNoZWV0IGludG8gcGFnZXMuIEl0IGlzIHBvc3NpYmxlIHRvIG9ubHkgYXBw
bHkgdGhlIHN0eWxlIHNoZWV0Ci0gKiB0byBzb21lIFVSSXMgYnkgcGFzc2luZyBub24tbnVsbCB2
YWx1ZXMgZm9yIEB3aGl0ZWxpc3Qgb3IgQGJsYWNrbGlzdC4gUGFzc2luZyBhICVOVUxMCi0gKiB3
aGl0ZWxpc3QgaW1wbGllcyB0aGF0IGFsbCBVUklzIGFyZSBvbiB0aGUgd2hpdGVsaXN0LiBUaGUg
c3R5bGUgc2hlZXQgaXMgYXBwbGllZCBpZiBhIFVSSSBtYXRjaGVzCi0gKiB0aGUgd2hpdGVsaXN0
IGFuZCBub3QgdGhlIGJsYWNrbGlzdC4gVVJJIHBhdHRlcm5zIG11c3QgYmUgb2YgdGhlIGZvcm0g
W3Byb3RvY29sXTovL1tob3N0XS9bcGF0aF0KLSAqIHdoZXJlIHRoZSBob3N0IGFuZCBwYXRoIGNv
bXBvbmVudHMgY2FuIGNvbnRhaW4gdGhlIHdpbGRjYXJkIGNoYXJhY3RlciAoJyonKSB0byByZXBy
ZXNlbnQgemVybwotICogb3IgbW9yZSBvdGhlciBjaGFyYWN0ZXJzLgotICovCi12b2lkIHdlYmtp
dF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldChXZWJLaXRXZWJWaWV3R3JvdXAq
IGdyb3VwLCBjb25zdCBjaGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqIGJhc2VVUkksIGNvbnN0IGNo
YXIqIGNvbnN0KiB3aGl0ZWxpc3QsIGNvbnN0IGNoYXIqIGNvbnN0KiBibGFja2xpc3QsIFdlYktp
dEluamVjdGVkQ29udGVudEZyYW1lcyBpbmplY3RlZEZyYW1lcykKLXsKLSAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfVklFV19HUk9VUChncm91cCkpOwotICAgIGdfcmV0dXJuX2lm
X2ZhaWwoc291cmNlKTsKLQotICAgIFJlZlB0cjxBUEk6OkFycmF5PiB3ZWJXaGl0ZWxpc3QgPSB0
b0FQSUFycmF5KHdoaXRlbGlzdCk7Ci0gICAgUmVmUHRyPEFQSTo6QXJyYXk+IHdlYkJsYWNrbGlz
dCA9IHRvQVBJQXJyYXkoYmxhY2tsaXN0KTsKLQotICAgIC8vIFdlIGFsd2F5cyB1c2UgVXNlclN0
eWxlVXNlckxldmVsIHRvIG1hdGNoIHRoZSBiZWhhdmlvciBvZiBXS1BhZ2VHcm91cEFkZFVzZXJT
dHlsZVNoZWV0LgotICAgIGdyb3VwLT5wcml2LT5wYWdlR3JvdXAtPmFkZFVzZXJTdHlsZVNoZWV0
KAotICAgICAgICBTdHJpbmc6OmZyb21VVEY4KHNvdXJjZSksCi0gICAgICAgIFN0cmluZzo6ZnJv
bVVURjgoYmFzZVVSSSksCi0gICAgICAgIHdlYldoaXRlbGlzdC5nZXQoKSwKLSAgICAgICAgd2Vi
QmxhY2tsaXN0LmdldCgpLAotICAgICAgICB0b1dlYkNvcmVVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzKGluamVjdGVkRnJhbWVzKSwKLSAgICAgICAgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVs
KTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2FsbF91c2VyX3N0
eWxlX3NoZWV0czoKLSAqIEBncm91cDogYSAjV2ViS2l0V2ViVmlld0dyb3VwCi0gKgotICogUmVt
b3ZlIGFsbCBzdHlsZSBzaGVldHMgcHJldmlvdXNseSBpbmplY3RlZCBpbnRvIHRoaXMgI1dlYktp
dFdlYlZpZXdHcm91cCAKLSAqIHZpYSB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3VzZXJfc3R5
bGVfc2hlZXQoKS4KLSAqLwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2FsbF91
c2VyX3N0eWxlX3NoZWV0cyhXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwKQotewotICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXX0dST1VQKGdyb3VwKSk7Ci0gICAgZ3JvdXAt
PnByaXYtPnBhZ2VHcm91cC0+cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5o
CmluZGV4IDY4NWYxOTkwNGVkY2ZkOWM2YjVhZGIwYjUzYmUwN2E3NDU2MzU4ZDguLjgzNmVhMTcz
NGYzNjg5MjBjNDhjYzNmNDRiMjdiYjI5YmZlZTVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5oCkBAIC04NCwxNyAr
ODQsNiBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfdmlld19ncm91cF9zZXRfc2V0dGlu
Z3MgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3R3JvdXAgICAgICAgICAgKmdyb3VwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dFNldHRpbmdzICAgICAgICAgICAgICAqc2V0dGluZ3MpOwogCi1XRUJLSVRfQVBJIHZvaWQKLXdl
YmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldCAgICAgICAgIChXZWJLaXRX
ZWJWaWV3R3JvdXAgICAgICAgICAgICpncm91cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICpz
b3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAqYmFzZV91cmksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBjb25z
dCAgICAgICAgICAqd2hpdGVsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogY29uc3QgICAgICAgICAgKmJsYWNrbGlz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRJbmplY3RlZENvbnRlbnRGcmFtZXMgICBpbmplY3RlZF9mcmFtZXMpOwotCi1XRUJLSVRf
QVBJIHZvaWQKLXdlYmtpdF93ZWJfdmlld19ncm91cF9yZW1vdmVfYWxsX3VzZXJfc3R5bGVfc2hl
ZXRzIChXZWJLaXRXZWJWaWV3R3JvdXAgICAgICAgICAgKmdyb3VwKTsKLQogR19FTkRfREVDTFMK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCA1NDgxM2M5MDBhZDZlYzJm
MTE3YjE2MjFiNDE4ODBjMjFkYzlkY2FlLi4wNjNjYjY3NWJiZmE5MmE4ZDU3MGMzYjAxZjY4NWZi
MDJjZTU2YmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTczLDYgKzczLDQ1IEBA
IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdHlwZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxG
SUxFPldlYktpdFVzZXJDb250ZW50PC9GSUxFPgorPFRJVExFPldlYktpdFVzZXJDb250ZW50PC9U
SVRMRT4KK1dlYktpdFVzZXJTdHlsZVNoZWV0CitXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzCitXZWJLaXRVc2VyU3R5bGVMZXZlbAord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfcmVmCit3
ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZgord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3
CisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VCS0lUX1RZUEVfVVNFUl9TVFlMRV9TSEVFVAor
Cis8U1VCU0VDVElPTiBQcml2YXRlPgord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfZ2V0X3R5cGUK
KzwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRVc2VyQ29udGVudE1hbmFnZXI8
L0ZJTEU+Cis8VElUTEU+V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPC9USVRMRT4KK1dlYktpdFVz
ZXJDb250ZW50TWFuYWdlcgord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldword2Via2l0
X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldAord2Via2l0X3VzZXJfY29udGVu
dF9tYW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJk
PgorV0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VSCitXRUJLSVRfSVNfVVNFUl9DT05URU5U
X01BTkFHRVJfQ0xBU1MKK1dFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSCitXRUJLSVRf
VVNFUl9DT05URU5UX01BTkFHRVIKK1dFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUl9DTEFTUwor
V0VCS0lUX1VTRVJfQ09OVEVOVF9NQU5BR0VSX0dFVF9DTEFTUworV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyQ2xhc3MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFVzZXJDb250ZW50TWFu
YWdlclByaXZhdGUKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9nZXRfdHlwZQorPC9TRUNU
SU9OPgorCis8U0VDVElPTj4KIDxGSUxFPldlYktpdFdlYlZpZXc8L0ZJTEU+CiA8VElUTEU+V2Vi
S2l0V2ViVmlldzwvVElUTEU+CiBXZWJLaXRXZWJWaWV3CkBAIC05Niw4ICsxMzUsMTAgQEAgd2Vi
a2l0X3dlYl92aWV3X25ldwogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQKIHdlYmtp
dF93ZWJfdmlld19uZXdfd2l0aF9yZWxhdGVkX3ZpZXcKIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0
aF9ncm91cAord2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyCiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAKK3dl
YmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIKIHdlYmtpdF93ZWJfdmlld19s
b2FkX3VyaQogd2Via2l0X3dlYl92aWV3X2xvYWRfaHRtbAogd2Via2l0X3dlYl92aWV3X2xvYWRf
YWx0ZXJuYXRlX2h0bWwKQEAgLTEwMjUsOCArMTA2Niw2IEBAIHdlYmtpdF93ZWJfdmlld19ncm91
cF9uZXcKIHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfbmFtZQogd2Via2l0X3dlYl92aWV3X2dy
b3VwX2dldF9zZXR0aW5ncwogd2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncwotd2Vi
a2l0X3dlYl92aWV3X2dyb3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0Ci13ZWJraXRfd2ViX3ZpZXdf
Z3JvdXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cwogCiA8U1VCU0VDVElPTiBTdGFuZGFy
ZD4KIFdlYktpdFdlYlZpZXdHcm91cENsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay93ZWJraXQyLmgKaW5kZXggNDY0OTBhMmUwMTRkNjNmYWFiMGEzMDcyYzkwMzg0OTM0NDhh
MjMxMi4uNTJjY2FkMzA2MmJlOGM1ODNlMDViZWU2YWM3OTVlOTA2ODRmNTE5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtNjEsNiArNjEsOCBAQAog
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0VVJJUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVNjaGVtZVJl
cXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJDb250ZW50Lmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFZlcnNpb24uaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkluc3BlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggZjBkZDZjNzkyNDAzYzg5YWM4ODE5ODhi
M2IyOWQzYzU2MzBiZTVjNS4uNzEwNWZhNDcxMzkzZjEzNDUxYzZhOTdhYTBiYzRmOGZkZDU1NTkx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC05Nyw2
ICs5NywyMiBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxV
c2VyU2NyaXB0cygpCiAgICAgICAgIHByb2Nlc3NBbmRDb3VudC5rZXktPmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2Ny
aXB0cygpLCBtX2lkZW50aWZpZXIpOwogfQogCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjphZGRVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5
bGVTaGVldCkKK3sKKyAgICBtX3VzZXJTdHlsZVNoZWV0cy5hcHBlbmQoc3RkOjptb3ZlKHVzZXJT
dHlsZVNoZWV0KSk7CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NBbmRDb3VudCA6IG1fcHJvY2Vz
c2VzKQorICAgICAgICBwcm9jZXNzQW5kQ291bnQua2V5LT5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsgbV91
c2VyU3R5bGVTaGVldHMubGFzdCgpIH0pLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQorewor
ICAgIG1fdXNlclN0eWxlU2hlZXRzLmNsZWFyKCk7CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NB
bmRDb3VudCA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzQW5kQ291bnQua2V5LT5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
QWxsVXNlclN0eWxlU2hlZXRzKCksIG1faWRlbnRpZmllcik7Cit9CisKIGJvb2wgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlciogaGFuZGxlcikKIHsKICAgICBmb3IgKGF1dG8mIGV4aXN0aW5nSGFu
ZGxlciA6IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnZhbHVlcygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IGNmZjZmMjlkNDg2NGUwYTc2ODQ5ZmZhZjJl
YTA0NDlkNzRkYjA4NDkuLjdkYzA1OTVhYTJiN2MyZGU4MmJmYzA4MzM0YTE3M2M2Yjk0MWRhYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0zOSw2ICszOSw3
IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFVz
ZXJTY3JpcHQ7CitjbGFzcyBVc2VyU3R5bGVTaGVldDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01OSw2ICs2MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViQ29y
ZTo6VXNlclNjcmlwdCk7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cygpOwogCisgICAg
dm9pZCBhZGRVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCk7CisgICAgdm9p
ZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKKwogICAgIC8vIFJldHVybnMgZmFsc2UgaWYg
dGhlcmUgd2FzIGEgbmFtZSBjb25mbGljdC4KICAgICBib29sIGFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciopOwogICAgIHZvaWQgcmVtb3ZlVXNlck1l
c3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcmKTsKQEAgLTc1LDYgKzc5LDcgQEAgcHJp
dmF0ZToKICAgICBIYXNoQ291bnRlZFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsK
IAogICAgIFZlY3RvcjxXZWJDb3JlOjpVc2VyU2NyaXB0PiBtX3VzZXJTY3JpcHRzOworICAgIFZl
Y3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4gbV91c2VyU3R5bGVTaGVldHM7CiAgICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9zY3JpcHRN
ZXNzYWdlSGFuZGxlcnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IDU3OWIwOTlmODRkMjA2ODcxNzM1
MGQyMjY0ZTdmOTA4NTE0MmE3NDMuLjFlZGE3ZThlZmU4NmRjYTE1Yzg3M2IxMzI4ZjBhMTk2YTY0
OWVhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVj
dG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5z
cGVjdG9yUHJveHlHdGsuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiB7CiAgICAgQVNTRVJU
KG1fcGFnZSk7CiAgICAgQVNTRVJUKCFtX2luc3BlY3RvclZpZXcpOwotICAgIG1faW5zcGVjdG9y
VmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoJnBhZ2UoKS0+cHJvY2Vz
cygpLmNvbnRleHQoKSwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIG1fcGFnZSkpOworICAgIG1faW5z
cGVjdG9yVmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoJnBhZ2UoKS0+
cHJvY2VzcygpLmNvbnRleHQoKSwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIG51bGxwdHIsIG1fcGFn
ZSkpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QobV9pbnNwZWN0b3JW
aWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX2luc3BlY3RvclZpZXcpKTsKICAgICBy
ZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1faW5z
cGVjdG9yVmlldykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4
IGQ5ZGMxNWM1ODQ1NWI5MDg5Mjc1NDZmMDY2ZDgyOTVkMTM1M2Y2OTIuLjI0ZjIxNDgxNWE0M2Nk
YjExMGVmNTBhNDcwOTI1YjVkNDQ1YmM5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJX
b3JsZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2Vy
U3R5bGVTaGVldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgRU5B
QkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKQEAgLTkyLDYgKzkzLDE5IEBAIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCiAgICAgbV91c2VyQ29u
dGVudENvbnRyb2xsZXItPnJlbW92ZVVzZXJTY3JpcHRzKG1haW5UaHJlYWROb3JtYWxXb3JsZCgp
KTsKIH0KIAordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0
cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+JiB1c2VyU3R5bGVTaGVldHMp
Cit7CisgICAgZm9yIChjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVldCA6IHVzZXJTdHlsZVNoZWV0
cykgeworICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXQo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCksCisgICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0Pih1c2VyU3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdE
b2N1bWVudHMpOworICAgIH0KK30KKwordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJl
bW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCit7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXIt
PnJlbW92ZVVzZXJTdHlsZVNoZWV0cyhtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7Cit9CisKICNp
ZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQogY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvclByb3h5PiwgcHVibGljIFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3I6OkNsaWVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
aAppbmRleCA0Yzg0Njk5NjRjZmZkMGY2OWE5YzY3ZWFmYWRmZDA1ZWZhNTU2OTk3Li42MzljMjBl
MDAwYWVkNzk4YzJiNzNjZDFmMDRjZmI2YzJiNWQ2NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmgKQEAgLTU0LDYgKzU0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFVzZXJT
Y3JpcHRzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVc2VyU2NyaXB0PiYgdXNlclNjcmlwdHMpOwog
ICAgIHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdHMoKTsKIAorICAgIHZvaWQgYWRkVXNlclN0eWxl
U2hlZXRzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4mIHVzZXJTdHlsZVNo
ZWV0cyk7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKKwogICAgIHZvaWQg
YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8V2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJIYW5kbGU+JiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpOwogICAgIHZvaWQgcmVtb3Zl
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKHVpbnQ2NF90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgppbmRleCBkMGNmYzFmNzY2NzgxZmMwZDcz
NzUxNmNiMmFiNTJiYzk1NjUzOTc0Li5hOTNmYTQ3YzA2ODQ4N2Y1Y2FkNmU1YWUyZjVlZTE2ZWZi
YjUwMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdl
cy5pbgpAQCAtMjcsNiArMjcsOSBAQCBtZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIgewogICAgIEFkZFVzZXJTY3JpcHRzKFZlY3RvcjxXZWJDb3JlOjpVc2VyU2NyaXB0PiB1c2Vy
U2NyaXB0cyk7CiAgICAgUmVtb3ZlQWxsVXNlclNjcmlwdHMoKQogCisgICAgQWRkVXNlclN0eWxl
U2hlZXRzKFZlY3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxlU2hoZXRzKTsK
KyAgICBSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQorCiAgICAgQWRkVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyhWZWN0b3I8V2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4g
c2NyaXB0TWVzc2FnZUhhbmRsZXJzKTsKICAgICBSZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIodWludDY0X3QgaWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggZGU0ODUw
NDAyMGM5YTBkOWU0MTI5MTJhN2I3M2FmNTQxOTQxYmI4MC4uZDAxNTczNDkyYjk0YmU4ZmVkMWNk
ZWIyN2VhOTYyYTJmMGM1ZjRjYSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTY1LDYgKzY1LDcg
QEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQkdMIE9GRikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9YSFJfVElNRU9VVCBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX1BST0NFU1MgT04p
CiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShXVEZfVVNFX1RJTEVEX0JBQ0tJTkdf
U1RPUkUgT0ZGKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1VTRVJf
TUVTU0FHRV9IQU5ETEVSUyBPTikKIAogc2V0KEVOQUJMRV9YMTFfVEFSR0VUIE9OIENBQ0hFIEJP
T0wgIldoZXRoZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBYMTEgd2luZG93aW5nIHRhcmdl
dC4iKQogc2V0KEVOQUJMRV9XQVlMQU5EX1RBUkdFVCBPRkYgQ0FDSEUgQk9PTCAiV2hldGhlciB0
byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIFdheWxhbmQgd2luZG93aW5nIHRhcmdldC4iKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGMwNDc1MWFi
OTAwYjZlZDc2YmNjMjE0M2Y0YTFlM2MxZjY5Y2Q0NjAuLmE5ZDA1MGNhZjM1YjA1NDFlYTg1ODVm
YzRkMjlkNThiN2M3NmNkYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxNC0wNy0wMyAgQWRyaWFuIFBlcmV6IGRl
IENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIE1vdmUgdXNlciBz
dHlsZSBzaGVldCBBUEkgb3V0IG9mIFdlYktpdFdlYlZpZXdHcm91cAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NTUxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyB0ZXN0aW5nIHVzZXIgc3R5
bGUgc2hlZXQgaW5qZWN0aW9uIGZyb20KKyAgICAgICAgVGVzdFdlYktpdFdlYlZpZXdHcm91cCBh
bmQgbW92ZXMgdGhhdCBpbnRvIGEgbmV3CisgICAgICAgIFRlc3RXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIsIGFkYXB0aW5nIHRoZSBleGlzdGluZyB0ZXN0cyB0byB0aGUgbmV3CisgICAgICAgIEFQ
SS4gQWxzbywgaXQgY29udGFpbnMgYSBuZXcgdGVzdCBjYXNlIGZvcgorICAgICAgICB3ZWJraXRf
d2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIoKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoVXNlckNvbnRlbnRNYW5hZ2VyVGVzdDo6VXNlckNvbnRl
bnRNYW5hZ2VyVGVzdCk6CisgICAgICAgICh0ZXN0V2ViVmlld05ld1dpdGhVc2VyQ29udGVudE1h
bmFnZXIpOgorICAgICAgICAoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgpOgorICAg
ICAgICAoZmlsbFVSTExpc3RGcm9tUGF0aHMpOgorICAgICAgICAocmVtb3ZlT2xkSW5qZWN0ZWRT
dHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMpOgorICAgICAgICAodGVzdFVzZXJDb250ZW50TWFuYWdl
ckluamVjdGVkU3R5bGVTaGVldCk6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAg
IChiZWZvcmVBbGwpOgorICAgICAgICAoYWZ0ZXJBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcDoKKyAgICAgICAg
KGJlZm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisgICAgICAgIChpc1N0eWxlU2hlZXRJ
bmplY3RlZEZvclVSTEF0UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChmaWxsVVJMTGlzdEZyb21Q
YXRocyk6IERlbGV0ZWQuCisgICAgICAgIChyZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5k
UmVzZXRMaXN0cyk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0V2ViVmlld0dyb3VwSW5qZWN0ZWRT
dHlsZVNoZWV0KTogRGVsZXRlZC4KKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKTogRGVsZXRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcDoK
KyAgICAgICAgKFdlYlZpZXdUZXN0OjpXZWJWaWV3VGVzdCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5oOgorCiAyMDE0LTA3LTAyICBDYXJsb3Mg
QWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
IFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CmluZGV4IGY2NmI3MzBhODhiNjUwMWZmYjhkMmYx
NGI5YjFiMzE2MTc4ZjU5MzUuLjE3MmIzOGFhMDg3NDcyYjEzNTEzMWE2Mjg0MzE0YTA0ZDk0OWRi
NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01h
a2VMaXN0cy50eHQKQEAgLTExMiw2ICsxMTIsNyBAQCBBRERfV0syX1RFU1QoVGVzdFdlYlZpZXdF
ZGl0b3IgVGVzdFdlYlZpZXdFZGl0b3IuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRXZWJW
aWV3R3JvdXAgVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHApCiBBRERfV0syX1RFU1QoVGVzdFdl
YktpdFdlYkNvbnRleHQgVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwKQogQUREX1dLMl9URVNUKFRl
c3RXZWJLaXRXZWJWaWV3IFRlc3RXZWJLaXRXZWJWaWV3LmNwcCkKK0FERF9XSzJfVEVTVChUZXN0
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIFRlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3Bw
KQogCiBpZiAoQVRTUElfRk9VTkQpCiAgICAgQUREX1dLMl9URVNUKEFjY2Vzc2liaWxpdHlUZXN0
U2VydmVyIEFjY2Vzc2liaWxpdHlUZXN0U2VydmVyLmNwcCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDRlMzY3YmNlMjQxOWFmZDg4N2Y1Njlm
NWQ0MWI2MGZmODRkNWU5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCkBAIC0wLDAg
KzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCisjaW5jbHVkZSAi
V2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxjc3RkYXJnPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4K
KyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVm
UHRyLmg+CisKK2NsYXNzIFVzZXJDb250ZW50TWFuYWdlclRlc3QgOiBwdWJsaWMgV2ViVmlld1Rl
c3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVXNlckNvbnRlbnRNYW5h
Z2VyVGVzdCk7CisKKyAgICBVc2VyQ29udGVudE1hbmFnZXJUZXN0KCkKKyAgICAgICAgOiBXZWJW
aWV3VGVzdChXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29u
dGVudF9tYW5hZ2VyKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXcoKSkpKQorICAgIHsK
KyAgICAgICAgLy8gQSByZWZlcmVuY2UgaXMgbGVha2VkIHdoZW4gcGFzc2luZyB0aGUgcmVzdWx0
IG9mIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXcoKQorICAgICAgICAvLyBkaXJlY3Rs
eSB0byB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIoKSBhYm92
ZS4gQWRvcHRpbmcgdGhlCisgICAgICAgIC8vIHJlZmVyZW5jZSBoZXJlIGF2b2lkcyB0aGUgbGVh
ay4KKyAgICAgICAgbV91c2VyQ29udGVudE1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0X3dlYl92
aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcihtX3dlYlZpZXcpKTsKKyAgICAgICAgYXNzZXJ0
T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChtX3VzZXJDb250ZW50TWFu
YWdlci5nZXQoKSkpOworICAgIH0KKworICAgIEdSZWZQdHI8V2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyPiBtX3VzZXJDb250ZW50TWFuYWdlcjsKK307CisKK3N0YXRpYyBXZWJLaXRUZXN0U2VydmVy
KiBrU2VydmVyOworCisvLyBUaGVzZSBhcmUgYWxsIGhlcmUgc28gdGhhdCB0aGV5IGNhbiBiZSBj
aGFuZ2VkIGVhc2lseSwgaWYgbmVjZXNzYXJ5Lgorc3RhdGljIGNvbnN0IGNoYXIqIGtTdHlsZVNo
ZWV0SFRNTCA9ICI8aHRtbD48ZGl2IGlkPVwic3R5bGVkRWxlbWVudFwiPlN3ZWV0IHN0eWxleiE8
L2Rpdj48L2h0bWw+IjsKK3N0YXRpYyBjb25zdCBjaGFyKiBrSW5qZWN0ZWRTdHlsZVNoZWV0ID0g
IiNzdHlsZWRFbGVtZW50IHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0iOworc3RhdGljIGNvbnN0IGNo
YXIqIGtTdHlsZVNoZWV0VGVzdFNjcmlwdCA9ICJnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzdHlsZWRFbGVtZW50JykpWydmb250LXdlaWdodCddIjsKK3N0YXRpYyBj
b25zdCBjaGFyKiBrU3R5bGVTaGVldFRlc3RTY3JpcHRSZXN1bHQgPSAiYm9sZCI7CisKK3N0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3TmV3V2l0aFVzZXJDb250ZW50TWFuYWdlcihUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQoreworICAgIEdSZWZQdHI8V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPiB1
c2VyQ29udGVudE1hbmFnZXIxID0gYWRvcHRHUmVmKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdl
cl9uZXcoKSk7CisgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVCh1c2VyQ29udGVudE1hbmFnZXIxLmdldCgpKSk7CisgICAgR1JlZlB0cjxXZWJL
aXRXZWJWaWV3PiB3ZWJWaWV3MSA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3
X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIodXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSkpOwor
ICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2Vi
VmlldzEuZ2V0KCkpID09IHVzZXJDb250ZW50TWFuYWdlcjEuZ2V0KCkpOworCisgICAgR1JlZlB0
cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3MiA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3Zp
ZXdfbmV3KCkpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50
X21hbmFnZXIod2ViVmlldzIuZ2V0KCkpICE9IHVzZXJDb250ZW50TWFuYWdlcjEuZ2V0KCkpOwor
fQorCitzdGF0aWMgYm9vbCBpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aChXZWJWaWV3
VGVzdCogdGVzdCwgY29uc3QgY2hhciogcGF0aCkKK3sKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2
ZXItPmdldFVSSUZvclBhdGgocGF0aCkuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2Fk
RmluaXNoZWQoKTsKKworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBXZWJL
aXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKGtTdHlsZVNoZWV0VGVzdFNjcmlwdCwgJmVycm9yLm91dFB0
cigpKTsKKyAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydCghZXJy
b3IuZ2V0KCkpOworCisgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXN1bHRTdHJpbmcoV2ViVmlld1Rl
c3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIHJl
dHVybiAhZ19zdHJjbXAwKHJlc3VsdFN0cmluZy5nZXQoKSwga1N0eWxlU2hlZXRUZXN0U2NyaXB0
UmVzdWx0KTsKK30KKworc3RhdGljIHZvaWQgZmlsbFVSTExpc3RGcm9tUGF0aHMoY2hhcioqIGxp
c3QsIGNvbnN0IGNoYXIqIHBhdGgsIC4uLikKK3sKKyAgICB2YV9saXN0IGFyZ3VtZW50TGlzdDsK
KyAgICB2YV9zdGFydChhcmd1bWVudExpc3QsIHBhdGgpOworCisgICAgaW50IGkgPSAwOworICAg
IHdoaWxlIChwYXRoKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBtdXN0IHVzZSBhIHdpbGRjYXJk
IGZvciB0aGUgaG9zdCBoZXJlIHVudGlsIGh0dHA6Ly93a2J1Zy5jb20vMTEyNDc2IGlzIGZpeGVk
LgorICAgICAgICAvLyBVbnRpbCB0aGF0IHRpbWUgcGF0dGVybnMgd2l0aCBwb3J0IG51bWJlcnMg
aW4gdGhlbSB3aWxsIG5vdCBwcm9wZXJseSBtYXRjaCBVUkxzIHdpdGggcG9ydCBudW1iZXJzLgor
ICAgICAgICBsaXN0W2krK10gPSBnX3N0cmR1cF9wcmludGYoImh0dHA6Ly8qLyVzKiIsIHBhdGgp
OworICAgICAgICBwYXRoID0gdmFfYXJnKGFyZ3VtZW50TGlzdCwgY29uc3QgY2hhciopOworICAg
IH0KK30KKworc3RhdGljIHZvaWQgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0
TGlzdHMoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB1c2VyQ29udGVudE1hbmFnZXIsIGNoYXIq
KiB3aGl0ZWxpc3QsIGNoYXIqKiBibGFja2xpc3QpCit7CisgICAgd2Via2l0X3VzZXJfY29udGVu
dF9tYW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzKHVzZXJDb250ZW50TWFuYWdlcik7CisK
KyAgICB3aGlsZSAoKndoaXRlbGlzdCkgeworICAgICAgICBnX2ZyZWUoKndoaXRlbGlzdCk7Cisg
ICAgICAgICp3aGl0ZWxpc3QgPSAwOworICAgICAgICB3aGl0ZWxpc3QrKzsKKyAgICB9CisKKyAg
ICB3aGlsZSAoKmJsYWNrbGlzdCkgeworICAgICAgICBnX2ZyZWUoKmJsYWNrbGlzdCk7CisgICAg
ICAgICpibGFja2xpc3QgPSAwOworICAgICAgICBibGFja2xpc3QrKzsKKyAgICB9Cit9CisKK3N0
YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJJbmplY3RlZFN0eWxlU2hlZXQoVXNlckNv
bnRlbnRNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBjaGFyKiB3aGl0
ZWxpc3RbM10gPSB7IDAsIDAsIDAgfTsKKyAgICBjaGFyKiBibGFja2xpc3RbM10gPSB7IDAsIDAs
IDAgfTsKKworICAgIHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKHRl
c3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisK
KyAgICAvLyBXaXRob3V0IGEgd2hpdGVsaXN0IG9yIGEgYmxhY2tsaXN0IGFsbCBVUkxzIHNob3Vs
ZCBoYXZlIHRoZSBpbmplY3RlZCBzdHlsZSBzaGVldC4KKyAgICBzdGF0aWMgY29uc3QgY2hhciog
cmFuZG9tUGF0aCA9ICJzb21lcmFuZG9tcGF0aCI7CisgICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVl
dEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKKyAgICBXZWJLaXRVc2Vy
U3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5q
ZWN0ZWRTdHlsZVNoZWV0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBX
RUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9VU0VSLCBudWxscHRyLCBudWxscHRyKTsKKyAgICB3ZWJr
aXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KHRlc3QtPm1fdXNlckNvbnRl
bnRNYW5hZ2VyLmdldCgpLCBzdHlsZVNoZWV0KTsKKyAgICB3ZWJraXRfdXNlcl9zdHlsZV9zaGVl
dF91bnJlZihzdHlsZVNoZWV0KTsKKyAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJbmplY3RlZEZv
clVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7CisKKyAgICByZW1vdmVPbGRJbmplY3RlZFN0
eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwg
d2hpdGVsaXN0LCBibGFja2xpc3QpOworCisgICAgZmlsbFVSTExpc3RGcm9tUGF0aHMoYmxhY2ts
aXN0LCByYW5kb21QYXRoLCAwKTsKKyAgICBzdHlsZVNoZWV0ID0gd2Via2l0X3VzZXJfc3R5bGVf
c2hlZXRfbmV3KGtJbmplY3RlZFN0eWxlU2hlZXQsIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNU
X0FMTF9GUkFNRVMsIFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsIG51bGxwdHIsIGJsYWNr
bGlzdCk7CisgICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldCh0
ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgc3R5bGVTaGVldCk7CisgICAgd2Via2l0
X3VzZXJfc3R5bGVfc2hlZXRfdW5yZWYoc3R5bGVTaGVldCk7CisgICAgZ19hc3NlcnQoIWlzU3R5
bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKKyAgICBnX2Fz
c2VydChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCAic29tZW90aGVycmFu
ZG9tcGF0aCIpKTsKKworICAgIHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExp
c3RzKHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlz
dCk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogaW5UaGVXaGl0ZUxpc3QgPSAiaW50aGV3aGl0
ZWxpc3QiOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBub3RJbldoaXRlbGlzdCA9ICJub3RpbnRo
ZXdoaXRlbGlzdCI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGluVGhlV2hpdGVMaXN0QW5kQmxh
Y2tMaXN0ID0gImludGhld2hpdGVsaXN0YW5kYmxhY2tsaXN0IjsKKworICAgIGZpbGxVUkxMaXN0
RnJvbVBhdGhzKHdoaXRlbGlzdCwgaW5UaGVXaGl0ZUxpc3QsIGluVGhlV2hpdGVMaXN0QW5kQmxh
Y2tMaXN0LCAwKTsKKyAgICBmaWxsVVJMTGlzdEZyb21QYXRocyhibGFja2xpc3QsIGluVGhlV2hp
dGVMaXN0QW5kQmxhY2tMaXN0LCAwKTsKKyAgICBzdHlsZVNoZWV0ID0gd2Via2l0X3VzZXJfc3R5
bGVfc2hlZXRfbmV3KGtJbmplY3RlZFN0eWxlU2hlZXQsIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5K
RUNUX0FMTF9GUkFNRVMsIFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsIHdoaXRlbGlzdCwg
YmxhY2tsaXN0KTsKKyAgICB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3No
ZWV0KHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBzdHlsZVNoZWV0KTsKKyAgICB3
ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZihzdHlsZVNoZWV0KTsKKyAgICBnX2Fzc2VydChp
c1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlzdCkpOwor
ICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRo
ZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCkpOworICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmpl
Y3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBub3RJbldoaXRlbGlzdCkpOworCisgICAgLy8gSXQncyBp
bXBvcnRhbnQgdG8gY2xlYW4gdXAgdGhlIGVudmlyb25tZW50IGJlZm9yZSBvdGhlciB0ZXN0cy4K
KyAgICByZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3Vz
ZXJDb250ZW50TWFuYWdlci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOworfQorCitzdGF0
aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQq
LCBncG9pbnRlcikKK3sKKyAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQ
X1NUQVRVU19PSyk7CisgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3Bv
bnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywga1N0eWxlU2hlZXRIVE1MLCBzdHJsZW4oa1N0
eWxlU2hlZXRIVE1MKSk7CisgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+
cmVzcG9uc2VfYm9keSk7Cit9CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBrU2VydmVyID0g
bmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKKyAgICBrU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2sp
OworCisgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm5ldy13aXRoLXVzZXItY29udGVu
dC1tYW5hZ2VyIiwgdGVzdFdlYlZpZXdOZXdXaXRoVXNlckNvbnRlbnRNYW5hZ2VyKTsKKyAgICBV
c2VyQ29udGVudE1hbmFnZXJUZXN0OjphZGQoIldlYktpdFVzZXJDb250ZW50TWFuYWdlciIsICJp
bmplY3RlZC1zdHlsZS1zaGVldCIsIHRlc3RVc2VyQ29udGVudE1hbmFnZXJJbmplY3RlZFN0eWxl
U2hlZXQpOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKKyAgICBkZWxldGUga1NlcnZlcjsKK30K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2Vi
S2l0V2ViVmlld0dyb3VwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcAppbmRleCA0NDhhYmQyZmU1MzJjNmMxNGZlMjMz
OWYzYzE3NjdmMGE5ZGE4MDMxLi5jY2JhODlkNDYyZTQ0YTI1M2VlOGZhZTQ2ZGI2ZDY5ZWU0ODU2
ZWM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFdlYktpdFdlYlZpZXdHcm91cC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwCkBAIC0yNiwxNCArMjYsNiBAQAog
I2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KIAotc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7Ci0KLS8vIFRoZXNlIGFy
ZSBhbGwgaGVyZSBzbyB0aGF0IHRoZXkgY2FuIGJlIGNoYW5nZWQgZWFzaWx5LCBpZiBuZWNlc3Nh
cnkuCi1zdGF0aWMgY29uc3QgY2hhcioga1N0eWxlU2hlZXRIVE1MID0gIjxodG1sPjxkaXYgaWQ9
XCJzdHlsZWRFbGVtZW50XCI+U3dlZXQgc3R5bGV6ITwvZGl2PjwvaHRtbD4iOwotc3RhdGljIGNv
bnN0IGNoYXIqIGtJbmplY3RlZFN0eWxlU2hlZXQgPSAiI3N0eWxlZEVsZW1lbnQgeyBmb250LXdl
aWdodDogYm9sZDsgfSI7Ci1zdGF0aWMgY29uc3QgY2hhcioga1N0eWxlU2hlZXRUZXN0U2NyaXB0
ID0gImdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0eWxlZEVsZW1l
bnQnKSlbJ2ZvbnQtd2VpZ2h0J10iOwotc3RhdGljIGNvbnN0IGNoYXIqIGtTdHlsZVNoZWV0VGVz
dFNjcmlwdFJlc3VsdCA9ICJib2xkIjsKLQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdHcm91cERl
ZmF1bHQoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBEZWZhdWx0IGdyb3Vw
IGlzIHNoYXJlZCBieSBhbGwgV2ViVmlld3MgYnkgZGVmYXVsdC4KQEAgLTk4LDEwOSArOTAsMTQg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdHcm91cFNldHRpbmdzKFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF9zZXR0aW5n
cyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdlYlZpZXcxLmdldCgpKSkgPT0gd2ViVmlldzJT
ZXR0aW5ncyk7CiB9CiAKLXN0YXRpYyBib29sIGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQ
YXRoKFdlYlZpZXdUZXN0KiB0ZXN0LCBjb25zdCBjaGFyKiBwYXRoKQotewotICAgIHRlc3QtPmxv
YWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aChwYXRoKS5kYXRhKCkpOwotICAgIHRlc3QtPndh
aXRVbnRpbExvYWRGaW5pc2hlZCgpOwotCi0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OwotICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5y
dW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoa1N0eWxlU2hlZXRUZXN0U2NyaXB0LCAm
ZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdf
YXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0KLSAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc3VsdFN0cmlu
ZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0
KSk7Ci0gICAgcmV0dXJuICFnX3N0cmNtcDAocmVzdWx0U3RyaW5nLmdldCgpLCBrU3R5bGVTaGVl
dFRlc3RTY3JpcHRSZXN1bHQpOwotfQotCi1zdGF0aWMgdm9pZCBmaWxsVVJMTGlzdEZyb21QYXRo
cyhjaGFyKiogbGlzdCwgY29uc3QgY2hhciogcGF0aCwgLi4uKQotewotICAgIHZhX2xpc3QgYXJn
dW1lbnRMaXN0OwotICAgIHZhX3N0YXJ0KGFyZ3VtZW50TGlzdCwgcGF0aCk7Ci0KLSAgICBpbnQg
aSA9IDA7Ci0gICAgd2hpbGUgKHBhdGgpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIG11c3QgdXNl
IGEgd2lsZGNhcmQgZm9yIHRoZSBob3N0IGhlcmUgdW50aWwgaHR0cDovL3drYnVnLmNvbS8xMTI0
NzYgaXMgZml4ZWQuCi0gICAgICAgIC8vIFVudGlsIHRoYXQgdGltZSBwYXR0ZXJucyB3aXRoIHBv
cnQgbnVtYmVycyBpbiB0aGVtIHdpbGwgbm90IHByb3Blcmx5IG1hdGNoIFVSTHMgd2l0aCBwb3J0
IG51bWJlcnMuCi0gICAgICAgIGxpc3RbaSsrXSA9IGdfc3RyZHVwX3ByaW50ZigiaHR0cDovLyov
JXMqIiwgcGF0aCk7Ci0gICAgICAgIHBhdGggPSB2YV9hcmcoYXJndW1lbnRMaXN0LCBjb25zdCBj
aGFyKik7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCByZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hl
ZXRzQW5kUmVzZXRMaXN0cyhXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwLCBjaGFyKiogd2hpdGVs
aXN0LCBjaGFyKiogYmxhY2tsaXN0KQotewotICAgIHdlYmtpdF93ZWJfdmlld19ncm91cF9yZW1v
dmVfYWxsX3VzZXJfc3R5bGVfc2hlZXRzKGdyb3VwKTsKLQotICAgIHdoaWxlICgqd2hpdGVsaXN0
KSB7Ci0gICAgICAgIGdfZnJlZSgqd2hpdGVsaXN0KTsKLSAgICAgICAgKndoaXRlbGlzdCA9IDA7
Ci0gICAgICAgIHdoaXRlbGlzdCsrOwotICAgIH0KLQotICAgIHdoaWxlICgqYmxhY2tsaXN0KSB7
Ci0gICAgICAgIGdfZnJlZSgqYmxhY2tsaXN0KTsKLSAgICAgICAgKmJsYWNrbGlzdCA9IDA7Ci0g
ICAgICAgIGJsYWNrbGlzdCsrOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdH
cm91cEluamVjdGVkU3R5bGVTaGVldChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
LXsKLSAgICBXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwID0gd2Via2l0X3dlYl92aWV3X2dldF9n
cm91cCh0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGNoYXIqIHdoaXRlbGlzdFszXSA9IHsgMCwgMCwg
MCB9OwotICAgIGNoYXIqIGJsYWNrbGlzdFszXSA9IHsgMCwgMCwgMCB9OwotCi0gICAgcmVtb3Zl
T2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoZ3JvdXAsIHdoaXRlbGlzdCwgYmxh
Y2tsaXN0KTsKLQotICAgIC8vIFdpdGhvdXQgYSB3aGl0ZWxpc3Qgb3IgYSBibGFja2xpc3QgYWxs
IFVSTHMgc2hvdWxkIGhhdmUgdGhlIGluamVjdGVkIHN0eWxlIHNoZWV0LgotICAgIHN0YXRpYyBj
b25zdCBjaGFyKiByYW5kb21QYXRoID0gInNvbWVyYW5kb21wYXRoIjsKLSAgICBnX2Fzc2VydCgh
aXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOwotICAg
IHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldChncm91cCwga0luamVj
dGVkU3R5bGVTaGVldCwgMCwgMCwgMCwgV0VCS0lUX0lOSkVDVEVEX0NPTlRFTlRfRlJBTUVTX0FM
TCk7Ci0gICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwg
cmFuZG9tUGF0aCkpOwotCi0gICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0
TGlzdHMoZ3JvdXAsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKLQotICAgIGZpbGxVUkxMaXN0RnJv
bVBhdGhzKGJsYWNrbGlzdCwgcmFuZG9tUGF0aCwgMCk7Ci0gICAgd2Via2l0X3dlYl92aWV3X2dy
b3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0KGdyb3VwLCBrSW5qZWN0ZWRTdHlsZVNoZWV0LCAwLCAw
LCBibGFja2xpc3QsIFdFQktJVF9JTkpFQ1RFRF9DT05URU5UX0ZSQU1FU19BTEwpOwotICAgIGdf
YXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRo
KSk7Ci0gICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwg
InNvbWVvdGhlcnJhbmRvbXBhdGgiKSk7Ci0KLSAgICByZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hl
ZXRzQW5kUmVzZXRMaXN0cyhncm91cCwgd2hpdGVsaXN0LCBibGFja2xpc3QpOwotCi0gICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGluVGhlV2hpdGVMaXN0ID0gImludGhld2hpdGVsaXN0IjsKLSAgICBz
dGF0aWMgY29uc3QgY2hhciogbm90SW5XaGl0ZWxpc3QgPSAibm90aW50aGV3aGl0ZWxpc3QiOwot
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCA9ICJpbnRo
ZXdoaXRlbGlzdGFuZGJsYWNrbGlzdCI7Ci0KLSAgICBmaWxsVVJMTGlzdEZyb21QYXRocyh3aGl0
ZWxpc3QsIGluVGhlV2hpdGVMaXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCwgMCk7Ci0g
ICAgZmlsbFVSTExpc3RGcm9tUGF0aHMoYmxhY2tsaXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNr
TGlzdCwgMCk7Ci0gICAgd2Via2l0X3dlYl92aWV3X2dyb3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0
KGdyb3VwLCBrSW5qZWN0ZWRTdHlsZVNoZWV0LCAwLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgV0VC
S0lUX0lOSkVDVEVEX0NPTlRFTlRfRlJBTUVTX0FMTCk7Ci0gICAgZ19hc3NlcnQoaXNTdHlsZVNo
ZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgaW5UaGVXaGl0ZUxpc3QpKTsKLSAgICBnX2Fz
c2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgaW5UaGVXaGl0ZUxp
c3RBbmRCbGFja0xpc3QpKTsKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JV
UkxBdFBhdGgodGVzdCwgbm90SW5XaGl0ZWxpc3QpKTsKLQotICAgIC8vIEl0J3MgaW1wb3J0YW50
IHRvIGNsZWFuIHVwIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgb3RoZXIgdGVzdHMuCi0gICAgcmVt
b3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoZ3JvdXAsIHdoaXRlbGlzdCwg
YmxhY2tsaXN0KTsKLX0KLQotc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciog
c2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJs
ZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCi17Ci0gICAgc291cF9tZXNzYWdlX3Nl
dF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwotICAgIHNvdXBfbWVzc2FnZV9ib2R5
X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIGtTdHls
ZVNoZWV0SFRNTCwgc3RybGVuKGtTdHlsZVNoZWV0SFRNTCkpOwotICAgIHNvdXBfbWVzc2FnZV9i
b2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwotfQotCiB2b2lkIGJlZm9yZUFs
bCgpCiB7Ci0gICAga1NlcnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7Ci0gICAga1NlcnZl
ci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKLQogICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlld0dy
b3VwIiwgImRlZmF1bHQtZ3JvdXAiLCB0ZXN0V2ViVmlld0dyb3VwRGVmYXVsdCk7CiAgICAgVGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3R3JvdXAiLCAibmV3LWdyb3VwIiwgdGVzdFdlYlZpZXdHcm91
cE5ld0dyb3VwKTsKICAgICBUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibmV3LXdpdGgtZ3Jv
dXAiLCB0ZXN0V2ViVmlld05ld1dpdGhHcm91cCk7CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3R3JvdXAiLCAic2V0dGluZ3MiLCB0ZXN0V2ViVmlld0dyb3VwU2V0dGluZ3MpOwotICAgIFdl
YlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXdHcm91cCIsICJpbmplY3RlZC1zdHlsZS1zaGVl
dCIsIHRlc3RXZWJWaWV3R3JvdXBJbmplY3RlZFN0eWxlU2hlZXQpOwogfQogCiB2b2lkIGFmdGVy
QWxsKCkKIHsKLSAgICBkZWxldGUga1NlcnZlcjsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHAKaW5kZXggMTE5OGIwOGJlNjgzZDU5
MzkyNDZkOTBhNTBlM2IxZDRlZjczYzAzNy4uZWJkMDNiNGQ0YWE4MDJjYWU2ODI5MGU0ZGQ2NzIy
NWQwNGMzN2U1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0
ay9XZWJWaWV3VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0
ay9XZWJWaWV3VGVzdC5jcHAKQEAgLTI1LDcgKzI1LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9H
VW5pcXVlUHRyR3RrLmg+CiAKIFdlYlZpZXdUZXN0OjpXZWJWaWV3VGVzdCgpCi0gICAgOiBtX3dl
YlZpZXcoV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X3JlZl9zaW5rKHdlYmtpdF93ZWJfdmlld19u
ZXcoKSkpKQorICAgIDogV2ViVmlld1Rlc3QoV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmll
d19uZXcoKSkpIHsgfQorCitXZWJWaWV3VGVzdDo6V2ViVmlld1Rlc3QoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKKyAgICA6IG1fd2ViVmlldyhXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfcmVmX3Np
bmsod2ViVmlldykpKQogICAgICwgbV9tYWluTG9vcChnX21haW5fbG9vcF9uZXcoMCwgVFJVRSkp
CiAgICAgLCBtX3BhcmVudFdpbmRvdygwKQogICAgICwgbV9qYXZhc2NyaXB0UmVzdWx0KDApCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmgKaW5k
ZXggZjQ1ZTEyNWM5ZDRmYTJkY2Q2NDNkNjE0MGFhYTM3ZGYxNjBiYTM4OC4uMmJjZjU2MzU5OGE3
ZWZmODZhMjg2MTAxMmQwY2ZhODc0MTk5N2FkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuaApAQCAtMjgsNiArMjgsNyBAQAogY2xhc3Mg
V2ViVmlld1Rlc3Q6IHB1YmxpYyBUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9G
SVhUVVJFKFdlYlZpZXdUZXN0KTsKKyAgICBXZWJWaWV3VGVzdChXZWJLaXRXZWJWaWV3Kik7CiAg
ICAgV2ViVmlld1Rlc3QoKTsKICAgICB2aXJ0dWFsIH5XZWJWaWV3VGVzdCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234340</attachid>
            <date>2014-07-03 06:39:12 -0700</date>
            <delta_ts>2014-07-03 06:44:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134551-20140703164120.patch</filename>
            <type>text/plain</type>
            <size>75830</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmU0MTFiYWUwMmY2NDE4
ZjY5NTM3ZTNjZWQ4MWEyZjlkNDZkYjg2OS4uYWMxMWM2YjZjZDcwZGExNzg0NjE2OWFjNDk3MTYz
OTM5ZWYzMzBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE0LTA3LTAzICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
TW92ZSB1c2VyIHN0eWxlIHNoZWV0IEFQSSBvdXQgb2YgV2ViS2l0V2ViVmlld0dyb3VwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ1NTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBJbmNsdWRlIHRoZSBuZXcgc291cmNlIGZpbGVzIGluIHRoZSBidWlsZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdDcmVh
dGUpOgorICAgICAgICBBZGFwdCB0byB0aGUgYWRkaXRpb25hbCB3ZWJraXRXZWJWaWV3QmFzZUNy
ZWF0ZVdlYlBhZ2UoKSBwYXJhbWV0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlckNvbnRlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRvVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyk6CisgICAgICAgICh0b1VzZXJTdHlsZUxldmVsKToKKyAgICAgICAgKHRvU3RyaW5n
VmVjdG9yKToKKyAgICAgICAgKF9XZWJLaXRVc2VyU3R5bGVTaGVldDo6X1dlYktpdFVzZXJTdHls
ZVNoZWV0KToKKyAgICAgICAgKHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZik6CisgICAgICAg
ICh3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZik6CisgICAgICAgICh3ZWJraXRfdXNlcl9z
dHlsZV9zaGVldF9uZXcpOgorICAgICAgICAod2Via2l0V2ViS2l0VXNlclN0eWxlU2hlZXRUb1Vz
ZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXJQcml2YXRlOjpfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZSk6CisgICAgICAgICh3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfbmV3KToKKyAgICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQpOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9t
YW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzKToKKyAgICAgICAgKHdlYmtpdFVzZXJDb250
ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudFByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOiBB
ZGQgYSBuZXcgcGFyYW1ldGVyIHRvIGFsbG93CisgICAgICAgIHBhc3NpbmcgdGhlIFdlYktpdFVz
ZXJDb250ZW50TWFuYWdlciB0aGF0IHRoZSB3ZWIgdmlldyB3aWxsIHVzZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdDb25zdHJ1Y3RlZCk6IEFkZGVkIGhhbmRsaW5nIG9mIHRoZQorICAgICAgICAidXNl
ci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5IG9uIGNvbnN0cnVjdGlvbi4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZQorICAgICAgICAi
dXNlci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5LgorICAgICAgICAod2Via2l0V2ViVmlld0dl
dFByb3BlcnR5KTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlCisgICAgICAgICJ1c2VyLWNvbnRlbnQt
bWFuYWdlciIgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6
IEFkZGVkIHRoZSAidXNlci1jb250ZW50LW1hbmFnZXIiCisgICAgICAgIHByb3BlcnR5IGRlZmlu
aXRpb24gdG8gdGhlIFdlYktpdFdlYlZpZXcgY2xhc3MuCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KTogTWFkZSByZWxhdGVkIHZpZXdzIHNoYXJlCisgICAg
ICAgIHRoZSBzYW1lIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciB1c2VkIGJ5IHRoZSB2aWV3IHRo
ZXkgYXJlCisgICAgICAgIHJlbGF0ZWQgdG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3
X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZCBuZXcgQVBJIG1ldGhvZHMuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VDcmVhdGUpOiBBZGRlZCBhIHBhcmFtZXRlciB0byBwYXNzIHRoZSB1c2Vy
CisgICAgICAgIGNvbnRlbnQgbWFuYWdlci4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlV2ViUGFnZSk6IEFkZGVkIGEgcGFyYW1ldGVyIHRvIHBhc3MgdGhlIHVzZXIKKyAgICAgICAg
Y29udGVudCBtYW5hZ2VyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3JvdXAuY3BwOiBSZW1vdmVkIHRoZSBiaXRzIHJlbGF0ZWQKKyAgICAgICAgdG8g
dXNlciBzdHlsZSBzaGVldCBzdXBwb3J0IGZyb20gV2ViS2l0V2ViVmlld0dyb3VwLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncyk6CisgICAgICAgICh0b0FQSUFy
cmF5KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9z
dHlsZV9zaGVldCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVt
b3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmg6IERlbGV0ZWQgdGhlIEFQSSBtZXRob2RzCisg
ICAgICAgIGZvciB1c2VyIHN0eWxlIHNoZWV0IGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZGVkIHRoZSBuZXcgQVBJ
CisgICAgICAgIGZ1bmN0aW9ucyBhbmQgdHlwZXMsIGFuZCByZW1vdmVkIHRoZSBtZXRob2RzIHdo
aWNoIGFyZSBubyBsb25nZXIKKyAgICAgICAgYXZhaWxhYmxlIGluIFdlYktpdFdlYlZpZXdHcm91
cC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEFkZCB0aGUgbmV3IGhl
YWRlcnMuCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcDogQWRkZWQKKyAgICAgICAgbWV0aG9kcyB0byBhZGQgYW5kIHJlbW92
ZSB1c2VyIHN0eWxlIHNoZWV0cywgYWxpa2UgdGhvc2UgdXNlZCBmb3IKKyAgICAgICAgdXNlciBz
Y3JpcHRzLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaDogRGl0dG8uCisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2Up
OgorICAgICAgICBBZGFwdCB0byB0aGUgYWRkaXRpb25hbCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0
ZVdlYlBhZ2UoKSBwYXJhbWV0ZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOiBBZGRlZCBtZXRob2RzCisgICAgICAgIHRvIGFk
ZCBhbmQgcmVtb3ZlIHVzZXIgc3R5bGUgc2hlZXRzLCBhbGlrZSB0aG9zZSB1c2VkIGZvciB1c2Vy
IHNjcmlwdHMuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRk
VXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6IERpdHRvLgorICAgICAgICAqIFdl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICBEaXR0by4KKwogMjAxNC0wNy0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTcwNjc2KTogW0dUS10g
VUkgcHJvY2VzcyBjcmFzaGVzIHdoZW4gdGhlIFdlYiBQcm9jZXNzIGNyYXNoZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggZDA3ZDI4MTU1NmJiYzgyMDA1ZDY2NTc3ZmI0ODYxZWM2YTZjYjM0Mi4u
ODA1YWI2ZjFlMWZjNGYzMjRkMzMzNmIyZWYyYjhkYzgxMTUyODlhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTkyNSw2ICs5MjUsOCBAQCBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUQxRXYKIF9fWk43V2ViQ29yZTIxVVJMQnlSZW1vdmluZ1VzZXJJbmZvRVA1TlNVUkwKIF9f
Wk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMTNhZGRVc2VyU2NyaXB0RVJOU18xNURP
TVdyYXBwZXJXb3JsZEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzEwVXNlclNjcmlwdEVOUzNfMTRk
ZWZhdWx0X2RlbGV0ZUlTNV9FRUVFCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxl
cjE3cmVtb3ZlVXNlclNjcmlwdHNFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQorX19aTjdXZWJDb3Jl
MjFVc2VyQ29udGVudENvbnRyb2xsZXIxN2FkZFVzZXJTdHlsZVNoZWV0RVJOU18xNURPTVdyYXBw
ZXJXb3JsZEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzE0VXNlclN0eWxlU2hlZXRFTlMzXzE0ZGVm
YXVsdF9kZWxldGVJUzVfRUVFRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKK19fWk43V2Vi
Q29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMjFyZW1vdmVVc2VyU3R5bGVTaGVldHNFUk5TXzE1
RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXIzMWFk
ZFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JFUk5TXzI4VXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvckUKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMzRyZW1vdmVVc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yRVJOU18yOFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3JFCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxlcjZjcmVhdGVFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhNGJhOWFhOWFjMGIxMTNlMGViOGM5ZDc0Zjc5M2I0NzU2
ZGI5MTFlLi44MThlMGVmN2E1MDZlMDQ5MzUyMWMwOTdhMmI1MmFiZTZhNGZhZGRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjEwLDYgKzIxMCwxMiBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaAogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKKyAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5oCisgICAgVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlckNvbnRlbnQuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNl
ckNvbnRlbnRQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
clByaXZhdGUuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
ci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFZlcnNpb24uaC5pbgogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwCkBAIC0zNTMsNiArMzU5LDggQEAgc2V0KFdlYktpdDJHVEtfSU5T
VEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklSZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklSZXNwb25zZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdC5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlckNvbnRlbnQuaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmgKICAgICAke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAKaW5kZXggNmYwYzA0YmYyNzNkYmZmNjFkOWIwZmJk
YzI3YTgwZDUzOGYyYzMyMy4uYmM3YjgzZjk1YTQ3MmU1MzczYzA3ODE2YWZhZWVlMTRjNWQyMWQw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcApA
QCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV0tWaWV3UmVmIFdL
Vmlld0NyZWF0ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwUmVmKQogewotICAgIHJldHVybiB0b0FQSSh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSh0b0lt
cGwoY29udGV4dFJlZiksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCBudWxscHRyKSk7CisgICAgcmV0
dXJuIHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSwgdG9J
bXBsKHBhZ2VHcm91cFJlZiksIG51bGxwdHIsIG51bGxwdHIpKTsKIH0KIAogV0tQYWdlUmVmIFdL
Vmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVh
YTk1MTI3MzQwZTllZTc3M2Q4NThjMTMxZTNiNDU2ZjczM2VhYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50LmNwcApA
QCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnQuaCIKKworI2lu
Y2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudFByaXZh
dGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLyoqCisgKiBT
RUNUSU9OOldlYktpdFVzZXJDb250ZW50CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IERlZmluZXMg
dXNlciBjb250ZW50IHR5cGVzIHdoaWNoIGFmZmVjdCB3ZWIgcGFnZXMuCisgKiBAdGl0bGU6IFVz
ZXIgY29udGVudAorICoKKyAqIFNlZSBhbHNvOiAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCisg
KgorICogU2luY2U6IDIuNgorICovCisKK3N0YXRpYyBpbmxpbmUgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoV2ViS2l0VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKK3sKKyAgICBzd2l0Y2ggKGluamVjdGVkRnJhbWVz
KSB7CisgICAgY2FzZSBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9UT1BfRlJBTUU6CisgICAg
ICAgIHJldHVybiBJbmplY3RJblRvcEZyYW1lT25seTsKKyAgICBjYXNlIFdFQktJVF9VU0VSX0NP
TlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6CisgICAgICAgIHJldHVybiBJbmplY3RJbkFsbEZyYW1l
czsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIEluamVjdEluQWxsRnJhbWVzOworICAgIH0KK30KKworc3RhdGljIGlubGluZSBVc2Vy
U3R5bGVMZXZlbCB0b1VzZXJTdHlsZUxldmVsKFdlYktpdFVzZXJTdHlsZUxldmVsIHN0eWxlTGV2
ZWwpCit7CisgICAgc3dpdGNoIChzdHlsZUxldmVsKSB7CisgICAgY2FzZSBXRUJLSVRfVVNFUl9T
VFlMRV9MRVZFTF9VU0VSOgorICAgICAgICByZXR1cm4gVXNlclN0eWxlVXNlckxldmVsOworICAg
IGNhc2UgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfQVVUSE9SOgorICAgICAgICByZXR1cm4gVXNl
clN0eWxlQXV0aG9yTGV2ZWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBVc2VyU3R5bGVBdXRob3JMZXZlbDsKKyAgICB9Cit9CisK
K3N0YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWN0b3IoY29uc3QgY2hhciog
Y29uc3QqIHN0cnYpCit7CisgICAgaWYgKCFzdHJ2KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0
cmluZz4oKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICBmb3IgKGF1dG8gc3Ry
ID0gc3RydjsgKnN0cjsgKytzdHIpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RkOjptb3ZlKFN0
cmluZzo6ZnJvbVVURjgoKnN0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdHJ1Y3Qg
X1dlYktpdFVzZXJTdHlsZVNoZWV0IHsKKyAgICBfV2ViS2l0VXNlclN0eWxlU2hlZXQoY29uc3Qg
Z2NoYXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcywgV2ViS2l0VXNlclN0eWxlTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIqIGNvbnN0KiB3aGl0
ZWxpc3QsIGNvbnN0IGNoYXIqIGNvbnN0KiBibGFja2xpc3QpCisgICAgICAgIDogdXNlclN0eWxl
U2hlZXQoc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oCisgICAgICAgICAgICBTdHJp
bmc6OmZyb21VVEY4KHNvdXJjZSksIFVSTCB7IH0sCisgICAgICAgICAgICB0b1N0cmluZ1ZlY3Rv
cih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLAorICAgICAgICAgICAgdG9V
c2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSwKKyAgICAgICAgICAgIHRv
VXNlclN0eWxlTGV2ZWwobGV2ZWwpKSkKKyAgICAgICAgLCByZWZlcmVuY2VDb3VudCgxKQorICAg
IHsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHls
ZVNoZWV0OworICAgIGludCByZWZlcmVuY2VDb3VudDsKK307CisKK0dfREVGSU5FX0JPWEVEX1RZ
UEUoV2ViS2l0VXNlclN0eWxlU2hlZXQsIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0LCB3ZWJraXRf
dXNlcl9zdHlsZV9zaGVldF9yZWYsIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmKQorCisv
KioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZjoKKyAqIEB1c2VyX3N0eWxlX3NoZWV0
OiBhICNXZWJLaXRVc2VyU3R5bGVTaGVldAorICoKKyAqIEF0b21pY2FsbHkgaW5jcmVtZW50cyB0
aGUgcmVmZXJlbmNlIGNvdW50IG9mIEB1c2VyX3N0eWxlX3NoZWV0IGJ5IG9uZS4KKyAqIFRoaXMg
ZnVuY3Rpb24gaXMgTVQtc2FmZSBhbmQgbWF5IGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisg
KgorICogUmV0dXJuczogVGhlIHBhc3NlZCAjV2ViS2l0VXNlclN0eWxlU2hlZXQKKyAqCisgKiBT
aW5jZTogMi42CisgKi8KK1dlYktpdFVzZXJTdHlsZVNoZWV0KiB3ZWJraXRfdXNlcl9zdHlsZV9z
aGVldF9yZWYoV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0KQoreworICAgIGdf
YXRvbWljX2ludF9pbmMoJnVzZXJTdHlsZVNoZWV0LT5yZWZlcmVuY2VDb3VudCk7CisgICAgcmV0
dXJuIHVzZXJTdHlsZVNoZWV0OworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X3VucmVmOgorICogQHVzZXJfc3R5bGVfc2hlZXQ6IGEgI1dlYktpdFVzZXJTdHlsZVNoZWV0Cisg
KgorICogQXRvbWljYWxseSBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgQHVzZXJf
c3R5bGVfc2hlZXQgYnkgb25lLgorICogSWYgdGhlIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byAw
LCBhbGwgbWVtb3J5IGFsbG9jYXRlZCBieQorICogI1dlYktpdFVzZXJTdHlsZVNoZWV0IGlzIHJl
bGVhc2VkLiBUaGlzIGZ1bmN0aW9uIGlzIE1ULXNhZmUgYW5kIG1heSBiZQorICogY2FsbGVkIGZy
b20gYW55IHRocmVhZC4KKyAqCisgKiBTaW5jZTogMi42CisgKi8KK3ZvaWQgd2Via2l0X3VzZXJf
c3R5bGVfc2hlZXRfdW5yZWYoV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0KQor
eworICAgIGlmIChnX2F0b21pY19pbnRfZGVjX2FuZF90ZXN0KCZ1c2VyU3R5bGVTaGVldC0+cmVm
ZXJlbmNlQ291bnQpKSB7CisgICAgICAgIHVzZXJTdHlsZVNoZWV0LT5+V2ViS2l0VXNlclN0eWxl
U2hlZXQoKTsKKyAgICAgICAgZ19zbGljZV9mcmVlKFdlYktpdFVzZXJTdHlsZVNoZWV0LCB1c2Vy
U3R5bGVTaGVldCk7CisgICAgfQorfQorCisvKioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X25ldzoKKyAqIEBzb3VyY2U6IFNvdXJjZSBjb2RlIG9mIHRoZSB1c2VyIHN0eWxlIHNoZWV0Lgor
ICogQGluamVjdGVkX2ZyYW1lczogQSAjV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB2
YWx1ZQorICogQGxldmVsOiBBICNXZWJLaXRVc2VyU3R5bGVMZXZlbAorICogQHdoaXRlbGlzdDog
KGFycmF5IHplcm8tdGVybWluYXRlZD0xKSAoYWxsb3ctbm9uZSk6IEEgd2hpdGVsaXN0IG9mIFVS
SSBwYXR0ZXJucyBvciAlTlVMTAorICogQGJsYWNrbGlzdDogKGFycmF5IHplcm8tdGVybWluYXRl
ZD0xKSAoYWxsb3ctbm9uZSk6IEEgYmxhY2tsaXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVMTAor
ICoKKyAqIENyZWF0ZXMgYSBuZXcgdXNlciBzdHlsZSBzaGVldC4gU3R5bGUgc2hlZXRzIGNhbiBi
ZSBhcHBsaWVkIHRvIHNvbWUgVVJJcworICogb25seSBieSBwYXNzaW5nIG5vbi1udWxsIHZhbHVl
cyBmb3IgQHdoaXRlbGlzdCBvciBAYmxhY2tsaXN0LiBQYXNzaW5nIGEKKyAqICVOVUxMIHdoaXRl
bGlzdCBpbXBsaWVzIHRoYXQgYWxsIFVSSXMgYXJlIG9uIHRoZSB3aGl0ZWxpc3QuIFRoZSBzdHls
ZQorICogc2hlZXQgaXMgYXBwbGllZCBpZiBhbiBVUkkgbWF0Y2hlcyB0aGUgd2hpdGVsaXN0IGFu
ZCBub3QgdGhlIGJsYWNrbGlzdC4KKyAqIFVSSSBwYXR0ZXJucyBtdXN0IGJlIG9mIHRoZSBmb3Jt
IGBbcHJvdG9jb2xdOi8vW2hvc3RdL1twYXRoXWAsIHdoZXJlIHRoZQorICogKmhvc3QqIGFuZCAq
cGF0aCogY29tcG9uZW50cyBjYW4gY29udGFpbiB0aGUgd2lsZGNhcmQgY2hhcmFjdGVyIChgKmAp
IHRvCisgKiByZXByZXNlbnQgemVybyBvciBtb3JlIG90aGVyIGNoYXJhY3RlcnMuCisgKgorICog
UmV0dXJuczogQSBuZXcgI1dlYktpdFVzZXJTdHlsZVNoZWV0CisgKgorICogU2luY2U6IDIuNgor
ICovCitXZWJLaXRVc2VyU3R5bGVTaGVldCogd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGNv
bnN0IGdjaGFyKiBzb3VyY2UsIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0
ZWRGcmFtZXMsIFdlYktpdFVzZXJTdHlsZUxldmVsIGxldmVsLCBjb25zdCBjaGFyKiBjb25zdCog
d2hpdGVsaXN0LCBjb25zdCBjaGFyKiBjb25zdCogYmxhY2tsaXN0KQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHNvdXJjZSwgbnVsbHB0cik7CisgICAgV2ViS2l0VXNlclN0eWxlU2hlZXQq
IHVzZXJTdHlsZVNoZWV0ID0gZ19zbGljZV9uZXcoV2ViS2l0VXNlclN0eWxlU2hlZXQpOworICAg
IG5ldyAodXNlclN0eWxlU2hlZXQpIFdlYktpdFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgaW5qZWN0
ZWRGcmFtZXMsIGxldmVsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisgICAgcmV0dXJuIHVzZXJT
dHlsZVNoZWV0OworfQorCitjb25zdCBVc2VyU3R5bGVTaGVldCYgd2Via2l0VXNlclN0eWxlU2hl
ZXRHZXRVc2VyU3R5bGVTaGVldChXZWJLaXRVc2VyU3R5bGVTaGVldCogdXNlclN0eWxlU2hlZXQp
Cit7CisgICAgcmV0dXJuICp1c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQ7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMWQzYWRlYjUyMjhmM2U4MjI0OGU0MTJmMzdhNDQwZTgzNGQ2Y2RlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlckNvbnRlbnQuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmlu
ZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+
IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVc2Vy
Q29udGVudF9oCisjZGVmaW5lIFdlYktpdFVzZXJDb250ZW50X2gKKworI2luY2x1ZGUgPGdsaWIt
b2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5f
REVDTFMKKworLyoqCisgKiBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOgorICogQFdF
QktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6IEluc2VydCB0aGUgdXNlciBzdHls
ZQorICogICBzaGVldCBpbiBhbGwgdGhlIGZyYW1lcyBsb2FkZWQgYnkgdGhlIHdlYiB2aWV3LCBp
bmNsdWRpbmcKKyAqICAgbmVzdGVkIGZyYW1lcy4gVGhpcyBpcyB0aGUgZGVmYXVsdC4KKyAqIEBX
RUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9UT1BfRlJBTUU6IEluc2VydCB0aGUgdXNlciBzdHls
ZQorICogICBzaGVldCAqb25seSogaW4gdGhlIHRvcC1sZXZlbCBmcmFtZSBsb2FkZWQgYnkgdGhl
IHdlYiB2aWV3LAorICogICBhbmQgKm5vdCogaW4gdGhlIG5lc3RlZCBmcmFtZXMuCisgKgorICog
U3BlY2lmaWVzIGluIHdoaWNoIGZyYW1lcyB1c2VyIHN0eWxlIHNoZWV0cyBhcmUgdG8gYmUgaW5z
ZXJ0ZWQgaW4uCisgKgorICogU2luY2U6IDIuNgorICovCit0eXBlZGVmIGVudW0geworICAgIFdF
QktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVMsCisgICAgV0VCS0lUX1VTRVJfQ09O
VEVOVF9JTkpFQ1RfVE9QX0ZSQU1FLAorfSBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OworCisvKioKKyAqIFdlYktpdFVzZXJTdHlsZUxldmVsOgorICogQFdFQktJVF9VU0VSX1NUWUxF
X0xFVkVMX1VTRVI6IFRoZSBzdHlsZSBzaGVldCBpcyBhbiB1c2VyIHN0eWxlIHNoZWV0LAorICog
ICBpdHMgY29udGVudHMgYWx3YXlzIG92ZXJyaWRlIG90aGVyIHN0eWxlIHNoZWV0cy4gVGhpcyBp
cyB0aGUgZGVmYXVsdC4KKyAqIEBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9BVVRIT1I6IFRoZSBz
dHlsZSBzaGVldCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYKKyAqICAgaXQgd2FzIHByb3ZpZGVkIGJ5
IHRoZSBsb2FkZWQgZG9jdW1lbnRzLiBUaGF0IG1lYW5zIG90aGVyIHVzZXIgc3R5bGUKKyAqICAg
c2hlZXRzIG1heSBzdGlsbCBvdmVycmlkZSBpdC4KKyAqCisgKiBTcGVjaWZpZXMgaG93IHRvIHRy
ZWF0IGFuIHVzZXIgc3R5bGUgc2hlZXQuCisgKgorICogU2luY2U6IDIuNgorICovCit0eXBlZGVm
IGVudW0geworICAgIFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsCisgICAgV0VCS0lUX1VT
RVJfU1RZTEVfTEVWRUxfQVVUSE9SLAorfSBXZWJLaXRVc2VyU3R5bGVMZXZlbDsKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9VU0VSX1NUWUxFX1NIRUVUICh3ZWJraXRfdXNlcl9jb250ZW50X2dldF90
eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyU3R5bGVTaGVldCBXZWJLaXRVc2Vy
U3R5bGVTaGVldDsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRf
Z2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKK3dl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZiAgICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAg
ICAgICAgKnVzZXJfc3R5bGVfc2hlZXQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF91c2Vy
X3N0eWxlX3NoZWV0X3VucmVmICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAgICAgICAgKnVz
ZXJfc3R5bGVfc2hlZXQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKK3dl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyAgICAgIChjb25zdCBnY2hhciAgICAgICAgICAgICAg
ICAgICAgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkX2ZyYW1lcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyU3R5bGVMZXZlbCAgICAgICAgICAgIGxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAg
ICAgICAgICAgICAqd2hpdGVsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqYmxhY2tsaXN0KTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTgyNjY4
OTg0ZjNkMDZlMjMzZWVjNjUzNTY4ODgzZGI4MTllMjMxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNw
cApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5M
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmgiCisKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50UHJpdmF0
ZS5oIgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX1dlYktpdFVzZXJD
b250ZW50TWFuYWdlclByaXZhdGUgeworICAgIF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2
YXRlKCkKKyAgICAgICAgOiB1c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmNyZWF0ZSgpKSB7IH0KKworICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eT4gdXNlckNvbnRlbnRDb250cm9sbGVyOworfTsKKworLyoqCisgKiBTRUNU
SU9OOldlYktpdFVzZXJDb250ZW50TWFuYWdlcgorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBNYW5h
Z2VzIHVzZXItZGVmaW5lZCBjb250ZW50IHdoaWNoIGFmZmVjdHMgd2ViIHBhZ2VzLgorICogQHRp
dGxlOiBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIKKyAqCisgKiBVc2luZyBhICNXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIgdXNlciBDU1Mgc3R5bGUgc2hlZXRzIGNhbiBiZSBzZXQgdG8KKyAqIGJl
IGluamVjdGVkIGluIHRoZSB3ZWIgcGFnZXMgbG9hZGVkIGJ5IGEgI1dlYktpdFdlYlZpZXcsIGJ5
CisgKiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KCkuCisgKgor
ICogVG8gdXNlIGEgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlciwgaXQgbXVzdCBiZSBjcmVhdGVk
IHVzaW5nCisgKiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCksIGFuZCB0aGVuIHBh
c3NlZCB0bworICogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2Vy
KCkuIFVzZXIgc3R5bGUKKyAqIHNoZWV0cyBjYW4gYmUgY3JlYXRlZCB3aXRoIHdlYmtpdF91c2Vy
X3N0eWxlX3NoZWV0X25ldygpLgorICoKKyAqIFVzZXIgc3R5bGUgc2hlZXRzIGNhbiBiZSBhZGRl
ZCBhbmQgcmVtb3ZlZCBhdCBhbnkgdGltZSwgYnV0CisgKiB0aGV5IHdpbGwgYWZmZWN0IHRoZSB3
ZWIgcGFnZXMgbG9hZGVkIGFmdGVyd2FyZHMuCisgKgorICogU2luY2U6IDIuNgorICovCisKK1dF
QktJVF9ERUZJTkVfVFlQRShXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIsIHdlYmtpdF91c2VyX2Nv
bnRlbnRfbWFuYWdlciwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0X3VzZXJf
Y29udGVudF9tYW5hZ2VyX2NsYXNzX2luaXQoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3Mq
KQoreworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXc6CisgKgor
ICogQ3JlYXRlcyBhIG5ldyB1c2VyIGNvbnRlbnQgbWFuYWdlci4KKyAqCisgKiBSZXR1cm5zOiBB
ICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIKKyAqCisgKiBTaW5jZTogMi42CisgKi8KK1dlYktp
dFVzZXJDb250ZW50TWFuYWdlciogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldygpCit7
CisgICAgcmV0dXJuIFdFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUihnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfVVNFUl9DT05URU5UX01BTkFHRVIsIG51bGxwdHIpKTsKK30KKworLyoqCisgKiB3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0OgorICogQG1hbmFnZXI6
IEEgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlcgorICogQHN0eWxlc2hlZXQ6IEEgI1dlYktpdFVz
ZXJTdHlsZVNoZWV0CisgKgorICogQWRkcyBhICNXZWJLaXRVc2VyU3R5bGVTaGVldCB0byB0aGUg
Z2l2ZW4gI1dlYktpdFVzZXJDb250ZW50TWFuYWdlci4KKyAqIFRoZSBzYW1lICNXZWJLaXRVc2Vy
U3R5bGVTaGVldCBjYW4gYmUgcmV1c2VkIHdpdGggbXVsdGlwbGUKKyAqICNXZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIgaW5zdGFuY2VzLgorICoKKyAqIFNpbmNlOiAyLjYKKyAqLwordm9pZCB3ZWJr
aXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KFdlYktpdFVzZXJDb250ZW50
TWFuYWdlciogbWFuYWdlciwgV2ViS2l0VXNlclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCit7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9DT05URU5UX01BTkFHRVIobWFuYWdl
cikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc3R5bGVTaGVldCk7CisgICAgbWFuYWdlci0+cHJp
di0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVldCh3ZWJraXRVc2VyU3R5
bGVTaGVldEdldFVzZXJTdHlsZVNoZWV0KHN0eWxlU2hlZXQpKTsKK30KKworLyoqCisgKiB3ZWJr
aXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVtb3ZlX2FsbF9zdHlsZV9zaGVldHM6CisgKiBAbWFu
YWdlcjogQSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCisgKgorICogUmVtb3ZlcyBhbGwgdXNl
ciBzdHlsZSBzaGVldHMgZnJvbSB0aGUgZ2l2ZW4gI1dlYktpdFVzZXJDb250ZW50TWFuYWdlci4K
KyAqCisgKiBTaW5jZTogMi42CisgKi8KK3ZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2Vy
X3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWFuYWdl
cikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFOQUdF
UihtYW5hZ2VyKSk7CisgICAgbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5y
ZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKK30KKworV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkqIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWFuYWdlcikKK3sKKyAgICByZXR1cm4gbWFu
YWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLmdldCgpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iOTE5NTAwZmFlZjBjNTg1ZjBjYTQ5NjM2NDJlNmViODMzYTE3
MmVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURF
X18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtp
dDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5k
ZWYgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyX2gKKyNkZWZpbmUgV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVudC5oPgor
CitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfVVNFUl9DT05URU5UX01BTkFH
RVIgICAgICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2dldF90eXBlKCkpCisj
ZGVmaW5lIFdFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUihvYmopICAgICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFO
QUdFUiwgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJf
Q09OVEVOVF9NQU5BR0VSKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUo
KG9iaiksIFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSKSkKKyNkZWZpbmUgV0VCS0lU
X1VTRVJfQ09OVEVOVF9NQU5BR0VSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNT
X0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSLCBXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXJDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19VU0VSX0NPTlRFTlRf
TUFOQUdFUl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBX
RUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUikpCisjZGVmaW5lIFdFQktJVF9VU0VSX0NP
TlRFTlRfTUFOQUdFUl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1Mo
KG9iaiksICBXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUiwgV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyICAgICAgICBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXI7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3MgICBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJDbGFz
czsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlIFdlYktp
dFVzZXJDb250ZW50TWFuYWdlclByaXZhdGU7CisKKworc3RydWN0IF9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisg
ICAgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBf
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRf
Y2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisK
KworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2dldF90eXBl
ICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIgKgord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldyAgICAgICAgICAgICAgICAg
ICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfYWRkX3N0eWxlX3NoZWV0ICAgICAgICAgKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqbWFu
YWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0VXNlclN0eWxlU2hlZXQgICAgICpzdHlsZXNoZWV0KTsKK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzIChX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKm1hbmFnZXIpOworCitHX0VORF9ERUNMUworCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVz
ZXJDb250ZW50TWFuYWdlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzkxYTUz
NTdiNDE5MjE5Y2Y2NmRmYzc2YmRjMmQxNjRmYjNiNjVjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJp
dmF0ZS5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlh
IFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmbmRlZiBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlX2gKKyNkZWZpbmUg
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5oIgorCitXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiB3ZWJraXRVc2Vy
Q29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIqKTsKKworI2VuZGlmIC8vIFdlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlckNvbnRlbnRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVc2VyQ29udGVudFByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mzk1OGFiY2EzZDk2OWRmOTk5
ZjIwNGQ5ZjY1NDQyNTNjMzM3ZDBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlLmgKQEAgLTAsMCArMSwy
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktp
dFVzZXJDb250ZW50UHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdFVzZXJDb250ZW50UHJpdmF0ZV9o
CisKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudC5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9V
c2VyU3R5bGVTaGVldC5oPgorCitjb25zdCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCYgd2Via2l0
VXNlclN0eWxlU2hlZXRHZXRVc2VyU3R5bGVTaGVldChXZWJLaXRVc2VyU3R5bGVTaGVldCopOwor
CisjZW5kaWYgLy8gV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggNjI4
MDhiNzZjZWY4NmRhNzIzM2IxZDAyNjJhMmVjYzQ0YzFmMzI3Mi4uNzBkNGFjMTdlNTQ1YjliNTk4
Zjg1YTgxZmIxOGI5OWY3NTFlZTNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNp
bmNsdWRlICJXZWJLaXRTZWN1cml0eU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
VGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5o
IgorI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdHcm91cFByaXZhdGUuaCIKQEAgLTEw
NTAsMTIgKzEwNTEsMTMgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1
c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIHUKICAgICBjb250ZXh0LT5w
cml2LT51cmlTY2hlbWVSZXF1ZXN0cy5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKLXZv
aWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlZpZXdHcm91cCogd2Vi
Vmlld0dyb3VwLCBXZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykKK3ZvaWQgd2Via2l0V2ViQ29u
dGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlZpZXdHcm91cCogd2ViVmlld0dyb3VwLCBXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIqIHVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0V2ViVmlldyog
cmVsYXRlZFZpZXcpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VC
S0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldyk7CiAgICAgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAg
PSB3ZWJWaWV3R3JvdXAgPyB3ZWJraXRXZWJWaWV3R3JvdXBHZXRQYWdlR3JvdXAod2ViVmlld0dy
b3VwKSA6IDA7CiAgICAgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IHJlbGF0ZWRWaWV3ID8g
d2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHJlbGF0ZWRWaWV3
KSkgOiBudWxscHRyOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3
QmFzZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLCByZWxhdGVkUGFn
ZSk7CisgICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqIHVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5ID0gdXNlckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0VXNlckNvbnRlbnRNYW5hZ2Vy
R2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKSA6IG51bGxw
dHI7CisgICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYlZpZXdCYXNlLCBjb250
ZXh0LT5wcml2LT5jb250ZXh0LmdldCgpLCBwYWdlR3JvdXAsIHVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LCByZWxhdGVkUGFnZSk7CiAKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRX
ZWJWaWV3QmFzZUdldFBhZ2Uod2ViVmlld0Jhc2UpOwogICAgIGNvbnRleHQtPnByaXYtPndlYlZp
ZXdzLnNldChwYWdlLT5wYWdlSUQoKSwgd2ViVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAppbmRl
eCAwNjQ3NGExZWYwYWIzMjQyNDBiZTJmMTExMzA0MTRmYjIyOWUzZTE0Li43NmRjZDM2NTg2Y2E0
YzM5NjA4YjE2MGVhMGEzNDVmNmRkMzkwMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ29u
dGV4dC5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0V2ViVmlld0dyb3VwLmgiCiAjaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuaCIKQEAgLTQyLDcgKzQzLDcgQEAgV2ViS2l0OjpXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlciogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2Vy
KFcKIHZvaWQgd2Via2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktp
dFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBBUEk6OlVSTFJlcXVlc3Qq
KTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0
V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwogdm9pZCB3ZWJraXRXZWJD
b250ZXh0RGlkRmluaXNoTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqLCB1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKLXZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBh
Z2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2Vi
Vmlld0dyb3VwKiwgV2ViS2l0V2ViVmlldyopOwordm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRl
UGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBXZWJLaXRX
ZWJWaWV3R3JvdXAqLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRXZWJWaWV3Kik7
CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRXZWJWaWV3RGVzdHJveWVkKFdlYktpdFdlYkNvbnRleHQq
LCBXZWJLaXRXZWJWaWV3Kik7CiBXZWJLaXRXZWJWaWV3KiB3ZWJraXRXZWJDb250ZXh0R2V0V2Vi
Vmlld0ZvclBhZ2UoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiBX
ZWJLaXRXZWJWaWV3R3JvdXAqIHdlYmtpdFdlYkNvbnRleHRHZXREZWZhdWx0V2ViVmlld0dyb3Vw
KFdlYktpdFdlYkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMGY4NTVlNTdiZjc1MTFhYWVlNmViMDJhOTkz
MDI3N2IyNzEwNjFlMy4uZjgyNmNlYTA3OWIxN2E3ZTk3NjY0MWI2MjI0MWQ0MGIyZGVlMjc3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAKQEAgLTEzMyw2ICsxMzMsNyBAQCBlbnVtIHsKICAgICBQUk9QX1dFQl9DT05URVhULAog
ICAgIFBST1BfUkVMQVRFRF9WSUVXLAogICAgIFBST1BfR1JPVVAsCisgICAgUFJPUF9VU0VSX0NP
TlRFTlRfTUFOQUdFUiwKICAgICBQUk9QX1RJVExFLAogICAgIFBST1BfRVNUSU1BVEVEX0xPQURf
UFJPR1JFU1MsCiAgICAgUFJPUF9GQVZJQ09OLApAQCAtMTcxLDYgKzE3Miw3IEBAIHN0cnVjdCBf
V2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIEdSZWZQdHI8V2ViS2l0U2V0dGluZ3M+IHNldHRp
bmdzOwogICAgIHVuc2lnbmVkIGxvbmcgc2V0dGluZ3NDaGFuZ2VkSGFuZGxlcklEOwogICAgIEdS
ZWZQdHI8V2ViS2l0V2ViVmlld0dyb3VwPiBncm91cDsKKyAgICBHUmVmUHRyPFdlYktpdFVzZXJD
b250ZW50TWFuYWdlcj4gdXNlckNvbnRlbnRNYW5hZ2VyOwogICAgIEdSZWZQdHI8V2ViS2l0V2lu
ZG93UHJvcGVydGllcz4gd2luZG93UHJvcGVydGllczsKIAogICAgIEdSZWZQdHI8R01haW5Mb29w
PiBtb2RhbExvb3A7CkBAIC01MDEsNyArNTAzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcgPSBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KTsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSog
cHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JX
ZWJWaWV3KHByaXYtPmNvbnRleHQsIHdlYlZpZXcsIHByaXYtPmdyb3VwLmdldCgpLCBwcml2LT5y
ZWxhdGVkVmlldyk7CisgICAgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHBy
aXYtPmNvbnRleHQsIHdlYlZpZXcsIHByaXYtPmdyb3VwLmdldCgpLCBwcml2LT51c2VyQ29udGVu
dE1hbmFnZXIuZ2V0KCksIHByaXYtPnJlbGF0ZWRWaWV3KTsKICAgICAvLyBUaGUgcmVsYXRlZCB2
aWV3IGlzIG9ubHkgdmFsaWQgZHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24uCiAgICAgcHJpdi0+cmVs
YXRlZFZpZXcgPSBudWxscHRyOwogCkBAIC01NDIsNiArNTQ0LDExIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHVlCiAgICAgICAgIHdlYlZpZXctPnByaXYtPmdyb3VwID0gZ3JvdXAgPyBXRUJLSVRf
V0VCX1ZJRVdfR1JPVVAoZ3JvdXApIDogMDsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNh
c2UgUFJPUF9VU0VSX0NPTlRFTlRfTUFOQUdFUjogeworICAgICAgICBncG9pbnRlciB1c2VyQ29u
dGVudE1hbmFnZXIgPSBnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpOworICAgICAgICB3ZWJWaWV3
LT5wcml2LT51c2VyQ29udGVudE1hbmFnZXIgPSB1c2VyQ29udGVudE1hbmFnZXIgPyBXRUJLSVRf
VVNFUl9DT05URU5UX01BTkFHRVIodXNlckNvbnRlbnRNYW5hZ2VyKSA6IG51bGxwdHI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFBST1BfWk9PTV9MRVZFTDoKICAgICAgICAgd2Vi
a2l0X3dlYl92aWV3X3NldF96b29tX2xldmVsKHdlYlZpZXcsIGdfdmFsdWVfZ2V0X2RvdWJsZSh2
YWx1ZSkpOwogICAgICAgICBicmVhazsKQEAgLTU2MSw2ICs1NjgsOSBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdW
YWx1ZSogdmFsdQogICAgIGNhc2UgUFJPUF9HUk9VUDoKICAgICAgICAgZ192YWx1ZV9zZXRfb2Jq
ZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdlYlZpZXcpKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX1VTRVJfQ09OVEVOVF9NQU5BR0VSOgorICAgICAgICBnX3Zh
bHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21h
bmFnZXIod2ViVmlldykpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfVElUTEU6CiAg
ICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2ViVmlldy0+cHJpdi0+dGl0bGUuZGF0
YSgpKTsKICAgICAgICAgYnJlYWs7CkBAIC02NzEsNiArNjgxLDIzIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNz
KQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFE
V1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogCiAgICAgLyoqCisgICAgICogV2Vi
S2l0V2ViVmlldzp1c2VyLWNvbnRlbnQtbWFuYWdlcjoKKyAgICAgKgorICAgICAqIFRoZSAjV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyIG9mIHRoZSB2aWV3LgorICAgICAqCisgICAgICogU2luY2U6
IDIuNgorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAg
ICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9VU0VSX0NPTlRFTlRfTUFOQUdFUiwKKyAg
ICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgKKyAgICAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFu
YWdlciIsCisgICAgICAgICAgICBfKCJXZWJWaWV3IHVzZXIgY29udGVudCBtYW5hZ2VyIiksCisg
ICAgICAgICAgICBfKCJUaGUgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIG9mIHRoZSB2aWV3Iiks
CisgICAgICAgICAgICBXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUiwKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19Q
QVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6
dGl0bGU6CiAgICAgICoKICAgICAgKiBUaGUgbWFpbiBmcmFtZSBkb2N1bWVudCB0aXRsZSBvZiB0
aGlzICNXZWJLaXRXZWJWaWV3LiBJZgpAQCAtMTkyNCw2ICsxOTUxLDggQEAgR3RrV2lkZ2V0KiB3
ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0
KQogICogWW91IGNhbiBhbHNvIHVzZSB0aGlzIG1ldGhvZCB0byBpbXBsZW1lbnQgb3RoZXIgcHJv
Y2VzcyBtb2RlbHMgYmFzZWQgb24gJVdFQktJVF9QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09O
REFSWV9QUk9DRVNTRVMsCiAgKiBsaWtlIGZvciBleGFtcGxlLCBzaGFyaW5nIHRoZSBzYW1lIHdl
YiBwcm9jZXNzIGZvciBhbGwgdGhlIHZpZXdzIGluIHRoZSBzYW1lIHNlY3VyaXR5IGRvbWFpbi4K
ICAqCisgKiBUaGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWxsIGFsc28gaGF2ZSB0
aGUgc2FtZSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIGFzIEB3ZWJfdmlldy4KKyAqCiAgKiBS
ZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3
IHdpZGdldAogICoKICAqIFNpbmNlOiAyLjQKQEAgLTE5MzIsNyArMTk2MSwxMCBAQCBHdGtXaWRn
ZXQqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9yZWxhdGVkX3ZpZXcoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVco
d2ViVmlldyksIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIEdUS19XSURHRVQoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX1dFQl9WSUVXLCAicmVsYXRlZC12aWV3Iiwgd2ViVmlldywgbnVsbHB0cikp
OworICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklF
VywKKyAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgd2ViVmlldy0+cHJpdi0+dXNlckNv
bnRlbnRNYW5hZ2VyLmdldCgpLAorICAgICAgICAicmVsYXRlZC12aWV3Iiwgd2ViVmlldywKKyAg
ICAgICAgbnVsbHB0cikpOwogfQogCiAvKioKQEAgLTE5NTMsNiArMTk4NSwyNSBAQCBHdGtXaWRn
ZXQqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9ncm91cChXZWJLaXRXZWJWaWV3R3JvdXAqIGdy
b3VwKQogfQogCiAvKioKKyAqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRf
bWFuYWdlcjoKKyAqIEB1c2VyX2NvbnRlbnRfbWFuYWdlcjogYSAjV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyLgorICoKKyAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdFdlYlZpZXcgd2l0aCB0aGUgZ2l2
ZW4gI1dlYktpdFVzZXJDb250ZW50TWFuYWdlci4KKyAqIFRoZSBjb250ZW50IGxvYWRlZCBpbiB0
aGUgdmlldyBtYXkgYmUgYWZmZWN0ZWQgYnkgdGhlIGNvbnRlbnQgaW5qZWN0ZWQKKyAqIGluIHRo
ZSB2aWV3IGJ5IHRoZSB1c2VyIGNvbnRlbnQgbWFuYWdlci4KKyAqCisgKiBSZXR1cm5zOiBUaGUg
bmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWRnZXQKKyAqCisgKiBTaW5jZTogMi42Cisg
Ki8KK0d0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5h
Z2VyKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyKQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFOQUdFUih1c2Vy
Q29udGVudE1hbmFnZXIpLCBudWxscHRyKTsKKworICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNl
ckNvbnRlbnRNYW5hZ2VyLCBudWxscHRyKSk7Cit9CisKKy8qKgogICogd2Via2l0X3dlYl92aWV3
X2dldF9jb250ZXh0OgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKgpAQCAtMTk4
Niw2ICsyMDM3LDI0IEBAIFdlYktpdFdlYlZpZXdHcm91cCogd2Via2l0X3dlYl92aWV3X2dldF9n
cm91cChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogfQogCiAvKioKKyAqIHdlYmtpdF93ZWJfdmll
d19nZXRfdXNlcl9jb250ZW50X21hbmFnZXI6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqCisgKiBHZXRzIHRoZSB1c2VyIGNvbnRlbnQgbWFuYWdlciBhc3NvY2lhdGVkIHRvIEB3
ZWJfdmlldywgb3IgJU5VTEwgaWYgdGhlCisgKiB2aWV3IGRvZXMgbm90IGhhdmUgYW4gdXNlciBj
b250ZW50IG1hbmFnZXIuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dl
YktpdFVzZXJDb250ZW50TWFuYWdlciBhc3NvY2lhdGVkIHdpdGggdGhlIHZpZXcKKyAqCisgKiBT
aW5jZTogMi42CisgKi8KK1dlYktpdFVzZXJDb250ZW50TWFuYWdlciogd2Via2l0X3dlYl92aWV3
X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0
cik7CisKKyAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgp
OworfQorCisvKioKICAqIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaToKICAqIEB3ZWJfdmlldzog
YSAjV2ViS2l0V2ViVmlldwogICogQHVyaTogYW4gVVJJIHN0cmluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IDU0OWQyNTRjYzI2
ZWIzN2UyZmZlY2MwMWVkYTY3MDNkMjE5N2NjY2EuLjliZjJjYzU0NmJjNDU2MjMyYzA5N2VlNmY5
YmIyZjlmZWMyMDM3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdFNjcmlwdERpYWxvZy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2V0dGluZ3MuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2Vi
Q29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViSW5zcGVjdG9yLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJSZXNvdXJjZS5oPgpAQCAtMjYwLDYgKzI2MSw5IEBAIHdl
YmtpdF93ZWJfdmlld19uZXdfd2l0aF9yZWxhdGVkX3ZpZXcgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcKIFdFQktJVF9BUEkgR3RrV2lkZ2V0ICoKIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0
aF9ncm91cCAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXdHcm91cCAgICAgICAg
Kmdyb3VwKTsKIAorV0VCS0lUX0FQSSBHdGtXaWRnZXQgKgord2Via2l0X3dlYl92aWV3X25ld193
aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
ICAqdXNlcl9jb250ZW50X21hbmFnZXIpOworCiBXRUJLSVRfQVBJIFdlYktpdFdlYkNvbnRleHQg
Kgogd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCkBAIC00NTUsNiArNDU5LDEw
IEBAIFdFQktJVF9BUEkgY2Fpcm9fc3VyZmFjZV90ICoKIHdlYmtpdF93ZWJfdmlld19nZXRfc25h
cHNob3RfZmluaXNoICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICAgICAgICAqcmVzdWx0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAg
ICAgICAgICAgICoqZXJyb3IpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJDb250ZW50TWFuYWdl
ciAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKIEdfRU5EX0RFQ0xTCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDcxYzdjZTVhZDJiMDI5N2QzYzRlMTMzNjQ3MWE1YWQx
MTA1ZjM5MTguLjk4ZGZmZDk5ZGIzNTQyMjk4OTYzZDZjNTg4ODVhNjM2YzdiODFiMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgorI2lu
Y2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVmll
d0Jhc2VJbnB1dE1ldGhvZEZpbHRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRp
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NsaXBib2FyZFV0aWxpdGllc0d0ay5oPgpAQCAtOTQx
LDEwICs5NDIsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUKICAgICBjb250YWluZXJDbGFz
cy0+Zm9yYWxsID0gd2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJGb3JhbGw7CiB9CiAKLVdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0
LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSkKK1dl
YktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJDb250ZXh0KiBjb250
ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkqIHVzZXJDb250ZW50Q29udHJvbGxlciwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSkKIHsK
ICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJ
RVdfQkFTRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVdfQkFTRSwgTlVMTCkpOwot
ICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJraXRXZWJWaWV3QmFzZSwgY29u
dGV4dCwgcGFnZUdyb3VwLCByZWxhdGVkUGFnZSk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VDcmVh
dGVXZWJQYWdlKHdlYmtpdFdlYlZpZXdCYXNlLCBjb250ZXh0LCBwYWdlR3JvdXAsIHVzZXJDb250
ZW50Q29udHJvbGxlciwgcmVsYXRlZFBhZ2UpOwogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFz
ZTsKIH0KIApAQCAtOTc3LDEzICs5NzgsMTQgQEAgc3RhdGljIHZvaWQgZGV2aWNlU2NhbGVGYWN0
b3JDaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKIH0KICNlbmRp
ZiAvLyBIQVZFKEdUS19TQ0FMRV9GQUNUT1IpCiAKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVh
dGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgV2ViQ29udGV4
dCogY29udGV4dCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIFdlYlBhZ2VQcm94eSogcmVsYXRl
ZFBhZ2UpCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3
QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91
cCogcGFnZUdyb3VwLCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRD
b250cm9sbGVyLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKQogewogICAgIFdlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2OwogCiAgICAgV2Vi
UGFnZUNvbmZpZ3VyYXRpb24gd2ViUGFnZUNvbmZpZ3VyYXRpb247CiAgICAgd2ViUGFnZUNvbmZp
Z3VyYXRpb24ucGFnZUdyb3VwID0gcGFnZUdyb3VwOwogICAgIHdlYlBhZ2VDb25maWd1cmF0aW9u
LnJlbGF0ZWRQYWdlID0gcmVsYXRlZFBhZ2U7CisgICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24udXNl
ckNvbnRlbnRDb250cm9sbGVyID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwogICAgIHByaXYtPnBh
Z2VQcm94eSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBhZ2VDbGllbnQsIHN0ZDo6
bW92ZSh3ZWJQYWdlQ29uZmlndXJhdGlvbikpOwogICAgIHByaXYtPnBhZ2VQcm94eS0+aW5pdGlh
bGl6ZVdlYlBhZ2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCBiOWMzOGMyNjU4NTI0
YjU2YWVlZmEyZWUzZDU1YThlOGFmOWQzM2U0Li5kZmUyMjg1ZTlhN2FhNzZmZWIzNGVlN2E5OGY5
MzYyYmYwMmJjNWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaApAQCAtMzQsMTAgKzM0LDEwIEBA
CiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKIAotV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYktpdDo6
V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpXZWJQYWdlUHJveHkq
KTsKK1dlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJLaXQ6Oldl
YkNvbnRleHQqLCBXZWJLaXQ6OldlYlBhZ2VHcm91cCosIFdlYktpdDo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkqLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwogR3RrSU1Db250ZXh0KiB3
ZWJraXRXZWJWaWV3QmFzZUdldElNQ29udGV4dChXZWJLaXRXZWJWaWV3QmFzZSopOwogV2ViS2l0
OjpXZWJQYWdlUHJveHkqIHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXZWJLaXRXZWJWaWV3QmFz
ZSopOwotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jh
c2UqLCBXZWJLaXQ6OldlYkNvbnRleHQqLCBXZWJLaXQ6OldlYlBhZ2VHcm91cCosIFdlYktpdDo6
V2ViUGFnZVByb3h5Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJL
aXRXZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdyb3Vw
KiwgV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSosIFdlYktpdDo6V2ViUGFn
ZVByb3h5Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRpcFRleHQoV2ViS2l0V2Vi
Vmlld0Jhc2UqLCBjb25zdCBjaGFyKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRp
cEFyZWEoV2ViS2l0V2ViVmlld0Jhc2UqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlRm9yd2FyZE5leHRLZXlFdmVudChXZWJLaXRXZWJWaWV3QmFzZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0dyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdHcm91cC5jcHAKaW5kZXggYjIxZTc5ZjY4M2RhN2VmZmQxOThkZGZjODJhMzdlOWJmM2Rj
MjRjMC4uYzhhNjUwN2E4ZTU5ODZmY2FkNmI2ODRiN2UzYmQ1OTliYjliMjA3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3Jv
dXAuY3BwCkBAIC0yMzYsNjMgKzIzNiwzIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2dyb3VwX3Nl
dF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwLCBXZWJLaXRTZXR0aW5nCiAgICAg
d2Via2l0V2ViVmlld0dyb3VwQXR0YWNoU2V0dGluZ3NUb1BhZ2VHcm91cChncm91cCk7CiAgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKGdyb3VwKSwgInNldHRpbmdzIik7CiB9Ci0KLXN0YXRp
YyBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IHRvQVBJQXJyYXkoY29uc3QgY2hhciogY29uc3QqIGxp
c3QpCi17Ci0gICAgaWYgKCFsaXN0KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFZlY3RvcjxS
ZWZQdHI8QVBJOjpPYmplY3Q+ID4gZW50cmllczsKLSAgICB3aGlsZSAoKmxpc3QpIHsKLSAgICAg
ICAgZW50cmllcy5hcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZUZyb21VVEY4U3RyaW5nKCpsaXN0
KSk7Ci0gICAgICAgIGxpc3QrKzsKLSAgICB9Ci0gICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0
ZShzdGQ6Om1vdmUoZW50cmllcykpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfdmlld19ncm91
cF9hZGRfdXNlcl9zdHlsZV9zaGVldDoKLSAqIEBncm91cDogYSAjV2ViS2l0V2ViVmlld0dyb3Vw
Ci0gKiBAc291cmNlOiB0aGUgc291cmNlIG9mIHRoZSBzdHlsZV9zaGVldCB0byBpbmplY3QKLSAq
IEBiYXNlX3VyaTogKGFsbG93LW5vbmUpOiB0aGUgYmFzZSBVUkkgdG8gdXNlIHdoZW4gcHJvY2Vz
c2luZyB0aGUgc3R5bGVfc2hlZXQgY29udGVudHMgb3IgJU5VTEwgZm9yIGFib3V0OmJsYW5rCi0g
KiBAd2hpdGVsaXN0OiAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25lKTogYSB3
aGl0ZWxpc3Qgb2YgVVJJIHBhdHRlcm5zIG9yICVOVUxMCi0gKiBAYmxhY2tsaXN0OiAoYXJyYXkg
emVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25lKTogYSBibGFja2xpc3Qgb2YgVVJJIHBhdHRl
cm5zIG9yICVOVUxMCi0gKiBAaW5qZWN0ZWRfZnJhbWVzOiBhICNXZWJLaXRJbmplY3RlZENvbnRl
bnRGcmFtZXMgZGVzY3JpYmluZyB0byB3aGljaCBmcmFtZXMgdGhlIHN0eWxlX3NoZWV0IHNob3Vs
ZCBhcHBseQotICoKLSAqIEluamVjdCBhbiBleHRlcm5hbCBzdHlsZSBzaGVldCBpbnRvIHBhZ2Vz
LiBJdCBpcyBwb3NzaWJsZSB0byBvbmx5IGFwcGx5IHRoZSBzdHlsZSBzaGVldAotICogdG8gc29t
ZSBVUklzIGJ5IHBhc3Npbmcgbm9uLW51bGwgdmFsdWVzIGZvciBAd2hpdGVsaXN0IG9yIEBibGFj
a2xpc3QuIFBhc3NpbmcgYSAlTlVMTAotICogd2hpdGVsaXN0IGltcGxpZXMgdGhhdCBhbGwgVVJJ
cyBhcmUgb24gdGhlIHdoaXRlbGlzdC4gVGhlIHN0eWxlIHNoZWV0IGlzIGFwcGxpZWQgaWYgYSBV
UkkgbWF0Y2hlcwotICogdGhlIHdoaXRlbGlzdCBhbmQgbm90IHRoZSBibGFja2xpc3QuIFVSSSBw
YXR0ZXJucyBtdXN0IGJlIG9mIHRoZSBmb3JtIFtwcm90b2NvbF06Ly9baG9zdF0vW3BhdGhdCi0g
KiB3aGVyZSB0aGUgaG9zdCBhbmQgcGF0aCBjb21wb25lbnRzIGNhbiBjb250YWluIHRoZSB3aWxk
Y2FyZCBjaGFyYWN0ZXIgKCcqJykgdG8gcmVwcmVzZW50IHplcm8KLSAqIG9yIG1vcmUgb3RoZXIg
Y2hhcmFjdGVycy4KLSAqLwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3VzZXJfc3R5
bGVfc2hlZXQoV2ViS2l0V2ViVmlld0dyb3VwKiBncm91cCwgY29uc3QgY2hhciogc291cmNlLCBj
b25zdCBjaGFyKiBiYXNlVVJJLCBjb25zdCBjaGFyKiBjb25zdCogd2hpdGVsaXN0LCBjb25zdCBj
aGFyKiBjb25zdCogYmxhY2tsaXN0LCBXZWJLaXRJbmplY3RlZENvbnRlbnRGcmFtZXMgaW5qZWN0
ZWRGcmFtZXMpCi17Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVdfR1JP
VVAoZ3JvdXApKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNvdXJjZSk7Ci0KLSAgICBSZWZQdHI8
QVBJOjpBcnJheT4gd2ViV2hpdGVsaXN0ID0gdG9BUElBcnJheSh3aGl0ZWxpc3QpOwotICAgIFJl
ZlB0cjxBUEk6OkFycmF5PiB3ZWJCbGFja2xpc3QgPSB0b0FQSUFycmF5KGJsYWNrbGlzdCk7Ci0K
LSAgICAvLyBXZSBhbHdheXMgdXNlIFVzZXJTdHlsZVVzZXJMZXZlbCB0byBtYXRjaCB0aGUgYmVo
YXZpb3Igb2YgV0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldC4KLSAgICBncm91cC0+cHJpdi0+
cGFnZUdyb3VwLT5hZGRVc2VyU3R5bGVTaGVldCgKLSAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChz
b3VyY2UpLAotICAgICAgICBTdHJpbmc6OmZyb21VVEY4KGJhc2VVUkkpLAotICAgICAgICB3ZWJX
aGl0ZWxpc3QuZ2V0KCksCi0gICAgICAgIHdlYkJsYWNrbGlzdC5nZXQoKSwKLSAgICAgICAgdG9X
ZWJDb3JlVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksCi0gICAgICAg
IFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl92
aWV3X2dyb3VwX3JlbW92ZV9hbGxfdXNlcl9zdHlsZV9zaGVldHM6Ci0gKiBAZ3JvdXA6IGEgI1dl
YktpdFdlYlZpZXdHcm91cAotICoKLSAqIFJlbW92ZSBhbGwgc3R5bGUgc2hlZXRzIHByZXZpb3Vz
bHkgaW5qZWN0ZWQgaW50byB0aGlzICNXZWJLaXRXZWJWaWV3R3JvdXAgCi0gKiB2aWEgd2Via2l0
X3dlYl92aWV3X2dyb3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0KCkuCi0gKi8KLXZvaWQgd2Via2l0
X3dlYl92aWV3X2dyb3VwX3JlbW92ZV9hbGxfdXNlcl9zdHlsZV9zaGVldHMoV2ViS2l0V2ViVmll
d0dyb3VwKiBncm91cCkKLXsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
V19HUk9VUChncm91cCkpOwotICAgIGdyb3VwLT5wcml2LT5wYWdlR3JvdXAtPnJlbW92ZUFsbFVz
ZXJTdHlsZVNoZWV0cygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuaAppbmRleCA2ODVmMTk5MDRlZGNmZDljNmI1YWRi
MGI1M2JlMDdhNzQ1NjM1OGQ4Li44MzZlYTE3MzRmMzY4OTIwYzQ4Y2MzZjQ0YjI3YmIyOWJmZWU1
ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3JvdXAuaApAQCAtODQsMTcgKzg0LDYgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJr
aXRfd2ViX3ZpZXdfZ3JvdXBfc2V0X3NldHRpbmdzICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
Vmlld0dyb3VwICAgICAgICAgICpncm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTZXR0aW5ncyAgICAgICAgICAgICAgKnNldHRp
bmdzKTsKIAotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3VzZXJf
c3R5bGVfc2hlZXQgICAgICAgICAoV2ViS2l0V2ViVmlld0dyb3VwICAgICAgICAgICAqZ3JvdXAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgICAgICAgICAgICAqc291cmNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAg
ICAgKmJhc2VfdXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdjaGFyICogY29uc3QgICAgICAgICAgKndoaXRlbGlzdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAqIGNvbnN0ICAgICAgICAgICpibGFja2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SW5qZWN0ZWRDb250ZW50RnJhbWVzICAg
aW5qZWN0ZWRfZnJhbWVzKTsKLQotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfZ3Jv
dXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyAoV2ViS2l0V2ViVmlld0dyb3VwICAgICAg
ICAgICpncm91cCk7Ci0KIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQKaW5kZXggNTQ4MTNjOTAwYWQ2ZWMyZjExN2IxNjIxYjQxODgwYzIxZGM5ZGNhZS4uMDYz
Y2I2NzViYmZhOTJhOGQ1NzBjM2IwMWY2ODVmYjAyY2U1NmJlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2Vj
dGlvbnMudHh0CkBAIC03Myw2ICs3Myw0NSBAQCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3R5cGUK
IDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRVc2VyQ29udGVudDwvRklMRT4K
KzxUSVRMRT5XZWJLaXRVc2VyQ29udGVudDwvVElUTEU+CitXZWJLaXRVc2VyU3R5bGVTaGVldAor
V2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcworV2ViS2l0VXNlclN0eWxlTGV2ZWwKK3dl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZgord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfdW5yZWYK
K3dlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dF
QktJVF9UWVBFX1VTRVJfU1RZTEVfU0hFRVQKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtp
dF91c2VyX3N0eWxlX3NoZWV0X2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJ
TEU+V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPC9GSUxFPgorPFRJVExFPldlYktpdFVzZXJDb250
ZW50TWFuYWdlcjwvVElUTEU+CitXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIKK3dlYmtpdF91c2Vy
X2NvbnRlbnRfbWFuYWdlcl9uZXcKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5
bGVfc2hlZXQKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3N0eWxlX3No
ZWV0cworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFO
QUdFUgorV0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VSX0NMQVNTCitXRUJLSVRfVFlQRV9V
U0VSX0NPTlRFTlRfTUFOQUdFUgorV0VCS0lUX1VTRVJfQ09OVEVOVF9NQU5BR0VSCitXRUJLSVRf
VVNFUl9DT05URU5UX01BTkFHRVJfQ0xBU1MKK1dFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUl9H
RVRfQ0xBU1MKK1dlYktpdFVzZXJDb250ZW50TWFuYWdlckNsYXNzCisKKzxTVUJTRUNUSU9OIFBy
aXZhdGU+CitXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlCit3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJL
aXRXZWJWaWV3PC9GSUxFPgogPFRJVExFPldlYktpdFdlYlZpZXc8L1RJVExFPgogV2ViS2l0V2Vi
VmlldwpAQCAtOTYsOCArMTM1LDEwIEBAIHdlYmtpdF93ZWJfdmlld19uZXcKIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92
aWV3CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfZ3JvdXAKK3dlYmtpdF93ZWJfdmlld19uZXdf
d2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcgogd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0CiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVu
dF9tYW5hZ2VyCiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkKIHdlYmtpdF93ZWJfdmlld19sb2Fk
X2h0bWwKIHdlYmtpdF93ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1sCkBAIC0xMDI1LDggKzEw
NjYsNiBAQCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfbmV3CiB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBf
Z2V0X25hbWUKIHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfc2V0dGluZ3MKIHdlYmtpdF93ZWJf
dmlld19ncm91cF9zZXRfc2V0dGluZ3MKLXdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9z
dHlsZV9zaGVldAotd2Via2l0X3dlYl92aWV3X2dyb3VwX3JlbW92ZV9hbGxfdXNlcl9zdHlsZV9z
aGVldHMKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJWaWV3R3JvdXBDbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IDQ2NDkwYTJl
MDE0ZDYzZmFhYjBhMzA3MmM5MDM4NDkzNDQ4YTIzMTIuLjUyY2NhZDMwNjJiZThjNTgzZTA1YmVl
NmFjNzk1ZTkwNjg0ZjUxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93
ZWJraXQyLmgKQEAgLTYxLDYgKzYxLDggQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJl
cXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlc3BvbnNlLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRVc2VyQ29udGVudC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRWZXJzaW9uLmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJJ
bnNwZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmlu
ZGV4IGYwZGQ2Yzc5MjQwM2M4OWFjODgxOTg4YjNiMjlkM2M1NjMwYmU1YzUuLjcxMDVmYTQ3MTM5
M2YxMzQ1MWM2YTk3YWEwYmM0ZjhmZGQ1NTU5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmNwcApAQCAtOTcsNiArOTcsMjIgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMoKQogICAgICAgICBwcm9jZXNz
QW5kQ291bnQua2V5LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMoKSwgbV9pZGVudGlmaWVyKTsKIH0KIAor
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQoV2Vi
Q29yZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0eWxlU2hlZXQpCit7CisgICAgbV91c2VyU3R5bGVT
aGVldHMuYXBwZW5kKHN0ZDo6bW92ZSh1c2VyU3R5bGVTaGVldCkpOworCisgICAgZm9yIChhdXRv
JiBwcm9jZXNzQW5kQ291bnQgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzc0FuZENvdW50
LmtleS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7IG1fdXNlclN0eWxlU2hlZXRzLmxhc3QoKSB9KSwgbV9p
ZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKK3sKKyAgICBtX3VzZXJTdHlsZVNoZWV0cy5jbGVhcigp
OworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzQW5kQ291bnQgOiBtX3Byb2Nlc3NlcykKKyAgICAg
ICAgcHJvY2Vzc0FuZENvdW50LmtleS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpLCBtX2lkZW50
aWZpZXIpOworfQorCiBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2Vy
U2NyaXB0TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIqIGhhbmRsZXIpCiB7
CiAgICAgZm9yIChhdXRvJiBleGlzdGluZ0hhbmRsZXIgOiBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVy
cy52YWx1ZXMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRl
eCBjZmY2ZjI5ZDQ4NjRlMGE3Njg0OWZmYWYyZWEwNDQ5ZDc0ZGIwODQ5Li43ZGMwNTk1YWEyYjdj
MmRlODJiZmMwODMzNGExNzNjNmI5NDFkYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBVc2VyU2NyaXB0OworY2xhc3MgVXNlclN0eWxlU2hl
ZXQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNiArNjAsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQpOwogICAgIHZvaWQgcmVt
b3ZlQWxsVXNlclNjcmlwdHMoKTsKIAorICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7
CisKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIHdhcyBhIG5hbWUgY29uZmxpY3QuCiAg
ICAgYm9vbCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIqKTsKICAgICB2b2lkIHJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3Ry
aW5nJik7CkBAIC03NSw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaENvdW50ZWRTZXQ8V2Vi
UHJvY2Vzc1Byb3h5Kj4gbV9wcm9jZXNzZXM7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6VXNlclNj
cmlwdD4gbV91c2VyU2NyaXB0czsKKyAgICBWZWN0b3I8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+
IG1fdXNlclN0eWxlU2hlZXRzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcj4+IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNw
cAppbmRleCA1NzliMDk5Zjg0ZDIwNjg3MTczNTBkMjI2NGU3ZjkwODUxNDJhNzQzLi4xZWRhN2U4
ZWZlODZkY2ExNWM4NzNiMTMyOGYwYTE5NmE2NDllYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtNjIsNyAr
NjIsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUlu
c3BlY3RvclBhZ2UoKQogewogICAgIEFTU0VSVChtX3BhZ2UpOwogICAgIEFTU0VSVCghbV9pbnNw
ZWN0b3JWaWV3KTsKLSAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZp
ZXdCYXNlQ3JlYXRlKCZwYWdlKCktPnByb2Nlc3MoKS5jb250ZXh0KCksIGluc3BlY3RvclBhZ2VH
cm91cCgpLCBtX3BhZ2UpKTsKKyAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtp
dFdlYlZpZXdCYXNlQ3JlYXRlKCZwYWdlKCktPnByb2Nlc3MoKS5jb250ZXh0KCksIGluc3BlY3Rv
clBhZ2VHcm91cCgpLCBudWxscHRyLCBtX3BhZ2UpKTsKICAgICBnX29iamVjdF9hZGRfd2Vha19w
b2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9yVmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
PigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFn
ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX2luc3BlY3RvclZpZXcpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCBkOWRjMTVjNTg0NTViOTA4OTI3NTQ2ZjA2NmQ4
Mjk1ZDEzNTNmNjkyLi4yNGYyMTQ4MTVhNDNjZGIxMTBlZjUwYTQ3MDkyNWI1ZDQ0NWJjOWZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nj
cmlwdENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxlU2hlZXQuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCkBA
IC05Miw2ICs5MywxOSBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxs
VXNlclNjcmlwdHMoKQogICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVVc2VyU2Ny
aXB0cyhtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKK3ZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVzZXJT
dHlsZVNoZWV0PiYgdXNlclN0eWxlU2hlZXRzKQoreworICAgIGZvciAoY29uc3QgYXV0byYgdXNl
clN0eWxlU2hlZXQgOiB1c2VyU3R5bGVTaGVldHMpIHsKKyAgICAgICAgbV91c2VyQ29udGVudENv
bnRyb2xsZXItPmFkZFVzZXJTdHlsZVNoZWV0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLAorICAg
ICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4odXNlclN0
eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKKyAgICB9Cit9CisKK3ZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQorewor
ICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVVc2VyU3R5bGVTaGVldHMobWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkpOworfQorCiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVS
UykKIGNsYXNzIFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eT4sIHB1YmxpYyBX
ZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yOjpDbGllbnQgewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKaW5kZXggNGM4NDY5OTY0Y2ZmZDBmNjlhOWM2
N2VhZmFkZmQwNWVmYTU1Njk5Ny4uNjM5YzIwZTAwMGFlZDc5OGMyYjczY2QxZjA0Y2ZiNmMyYjVk
NjRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCkBAIC01NCw2ICs1NCw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
VXNlclNjcmlwdD4mIHVzZXJTY3JpcHRzKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRz
KCk7CiAKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
VXNlclN0eWxlU2hlZXQ+JiB1c2VyU3R5bGVTaGVldHMpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNl
clN0eWxlU2hlZXRzKCk7CisKICAgICB2b2lkIGFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMo
Y29uc3QgVmVjdG9yPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlPiYgc2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzKTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih1aW50
NjRfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMu
aW4KaW5kZXggZDBjZmMxZjc2Njc4MWZjMGQ3Mzc1MTZjYjJhYjUyYmM5NTY1Mzk3NC4uYTkzZmE0
N2MwNjg0ODdmNWNhZDZlNWFlMmY1ZWUxNmVmYmI1MDE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTI3LDYgKzI3LDkgQEAgbWVzc2Fn
ZXMgLT4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIHsKICAgICBBZGRVc2VyU2NyaXB0cyhWZWN0
b3I8V2ViQ29yZTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdHMpOwogICAgIFJlbW92ZUFsbFVzZXJT
Y3JpcHRzKCkKIAorICAgIEFkZFVzZXJTdHlsZVNoZWV0cyhWZWN0b3I8V2ViQ29yZTo6VXNlclN0
eWxlU2hlZXQ+IHVzZXJTdHlsZVNoaGV0cyk7CisgICAgUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRz
KCkKKwogICAgIEFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoVmVjdG9yPFdlYktpdDo6V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXJIYW5kbGU+IHNjcmlwdE1lc3NhZ2VIYW5kbGVycyk7CiAgICAg
UmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zR1RLLmNtYWtlCmluZGV4IGRlNDg1MDQwMjBjOWEwZDllNDEyOTEyYTdiNzNhZjU0MTk0
MWJiODAuLmQwMTU3MzQ5MmI5NGJlOGZlZDFjZGViMjdlYTk2MmEyZjBjNWY0Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zR1RLLmNtYWtlCkBAIC02NSw2ICs2NSw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9XRUJHTCBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfWEhSX1RJTUVPVVQgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTkVUV09SS19QUk9DRVNTIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoV1RGX1VTRV9USUxFRF9CQUNLSU5HX1NUT1JFIE9GRikKK1dFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9VU0VSX01FU1NBR0VfSEFORExFUlMgT04pCiAKIHNldChF
TkFCTEVfWDExX1RBUkdFVCBPTiBDQUNIRSBCT09MICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0
IGZvciB0aGUgWDExIHdpbmRvd2luZyB0YXJnZXQuIikKIHNldChFTkFCTEVfV0FZTEFORF9UQVJH
RVQgT0ZGIENBQ0hFIEJPT0wgIldoZXRoZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBXYXls
YW5kIHdpbmRvd2luZyB0YXJnZXQuIikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBjMDQ3NTFhYjkwMGI2ZWQ3NmJjYzIxNDNmNGExZTNjMWY2OWNk
NDYwLi5hOWQwNTBjYWYzNWIwNTQxZWE4NTg1ZmM0ZDI5ZDU4YjdjNzZjZGEwIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTQtMDctMDMgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1RLXSBNb3ZlIHVzZXIgc3R5bGUgc2hlZXQgQVBJIG91dCBvZiBXZWJLaXRX
ZWJWaWV3R3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNDU1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZXMgdGVzdGluZyB1c2VyIHN0eWxlIHNoZWV0IGluamVjdGlvbiBmcm9tCisgICAg
ICAgIFRlc3RXZWJLaXRXZWJWaWV3R3JvdXAgYW5kIG1vdmVzIHRoYXQgaW50byBhIG5ldworICAg
ICAgICBUZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLCBhZGFwdGluZyB0aGUgZXhpc3Rpbmcg
dGVzdHMgdG8gdGhlIG5ldworICAgICAgICBBUEkuIEFsc28sIGl0IGNvbnRhaW5zIGEgbmV3IHRl
c3QgY2FzZSBmb3IKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVu
dF9tYW5hZ2VyKCkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFVzZXJD
b250ZW50TWFuYWdlclRlc3Q6OlVzZXJDb250ZW50TWFuYWdlclRlc3QpOgorICAgICAgICAodGVz
dFdlYlZpZXdOZXdXaXRoVXNlckNvbnRlbnRNYW5hZ2VyKToKKyAgICAgICAgKGlzU3R5bGVTaGVl
dEluamVjdGVkRm9yVVJMQXRQYXRoKToKKyAgICAgICAgKGZpbGxVUkxMaXN0RnJvbVBhdGhzKToK
KyAgICAgICAgKHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKToKKyAg
ICAgICAgKHRlc3RVc2VyQ29udGVudE1hbmFnZXJJbmplY3RlZFN0eWxlU2hlZXQpOgorICAgICAg
ICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVy
QWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktp
dFdlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAoYWZ0ZXJB
bGwpOgorICAgICAgICAoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgpOiBEZWxldGVk
LgorICAgICAgICAoZmlsbFVSTExpc3RGcm9tUGF0aHMpOiBEZWxldGVkLgorICAgICAgICAocmVt
b3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMpOiBEZWxldGVkLgorICAgICAg
ICAodGVzdFdlYlZpZXdHcm91cEluamVjdGVkU3R5bGVTaGVldCk6IERlbGV0ZWQuCisgICAgICAg
IChzZXJ2ZXJDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsv
V2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHA6CisgICAgICAgIChXZWJWaWV3VGVzdDo6V2ViVmll
d1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rl
c3QuaDoKKwogMjAxNC0wNy0wMiAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVyZXogIDxjbG9wZXpA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4
dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dApp
bmRleCBmNjZiNzMwYTg4YjY1MDFmZmI4ZDJmMTRiOWIxYjMxNjE3OGY1OTM1Li4xNzJiMzhhYTA4
NzQ3MmIxMzUxMzFhNjI4NDMxNGEwNGQ5NDlkYjVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CkBAIC0xMTIsNiArMTEyLDcg
QEAgQUREX1dLMl9URVNUKFRlc3RXZWJWaWV3RWRpdG9yIFRlc3RXZWJWaWV3RWRpdG9yLmNwcCkK
IEFERF9XSzJfVEVTVChUZXN0V2ViS2l0V2ViVmlld0dyb3VwIFRlc3RXZWJLaXRXZWJWaWV3R3Jv
dXAuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRXZWJDb250ZXh0IFRlc3RXZWJLaXRXZWJD
b250ZXh0LmNwcCkKIEFERF9XSzJfVEVTVChUZXN0V2ViS2l0V2ViVmlldyBUZXN0V2ViS2l0V2Vi
Vmlldy5jcHApCitBRERfV0syX1RFU1QoVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlciBUZXN0
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCkKIAogaWYgKEFUU1BJX0ZPVU5EKQogICAgIEFE
RF9XSzJfVEVTVChBY2Nlc3NpYmlsaXR5VGVzdFNlcnZlciBBY2Nlc3NpYmlsaXR5VGVzdFNlcnZl
ci5jcHApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTA0ZTM2N2JjZTI0MTlhZmQ4ODdmNTY5ZjVkNDFiNjBmZjg0ZDVlOQotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2Vi
S2l0VGVzdFNlcnZlci5oIgorI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5jbHVkZSA8Y3N0
ZGFyZz4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+
CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorCitjbGFzcyBVc2VyQ29udGVudE1h
bmFnZXJUZXN0IDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJf
VEVTVF9GSVhUVVJFKFVzZXJDb250ZW50TWFuYWdlclRlc3QpOworCisgICAgVXNlckNvbnRlbnRN
YW5hZ2VyVGVzdCgpCisgICAgICAgIDogV2ViVmlld1Rlc3QoV0VCS0lUX1dFQl9WSUVXKHdlYmtp
dF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfbmV3KCkpKSkKKyAgICB7CisgICAgICAgIC8vIEEgcmVmZXJlbmNlIGlzIGxl
YWtlZCB3aGVuIHBhc3NpbmcgdGhlIHJlc3VsdCBvZiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfbmV3KCkKKyAgICAgICAgLy8gZGlyZWN0bHkgdG8gd2Via2l0X3dlYl92aWV3X25ld193aXRo
X3VzZXJfY29udGVudF9tYW5hZ2VyKCkgYWJvdmUuIEFkb3B0aW5nIHRoZQorICAgICAgICAvLyBy
ZWZlcmVuY2UgaGVyZSBhdm9pZHMgdGhlIGxlYWsuCisgICAgICAgIG1fdXNlckNvbnRlbnRNYW5h
Z2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIo
bV93ZWJWaWV3KSk7CisgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNo
ZXMoR19PQkpFQ1QobV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCkpKTsKKyAgICB9CisKKyAgICBH
UmVmUHRyPFdlYktpdFVzZXJDb250ZW50TWFuYWdlcj4gbV91c2VyQ29udGVudE1hbmFnZXI7Cit9
OworCitzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKKworLy8gVGhlc2UgYXJlIGFs
bCBoZXJlIHNvIHRoYXQgdGhleSBjYW4gYmUgY2hhbmdlZCBlYXNpbHksIGlmIG5lY2Vzc2FyeS4K
K3N0YXRpYyBjb25zdCBjaGFyKiBrU3R5bGVTaGVldEhUTUwgPSAiPGh0bWw+PGRpdiBpZD1cInN0
eWxlZEVsZW1lbnRcIj5Td2VldCBzdHlsZXohPC9kaXY+PC9odG1sPiI7CitzdGF0aWMgY29uc3Qg
Y2hhcioga0luamVjdGVkU3R5bGVTaGVldCA9ICIjc3R5bGVkRWxlbWVudCB7IGZvbnQtd2VpZ2h0
OiBib2xkOyB9IjsKK3N0YXRpYyBjb25zdCBjaGFyKiBrU3R5bGVTaGVldFRlc3RTY3JpcHQgPSAi
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3R5bGVkRWxlbWVudCcp
KVsnZm9udC13ZWlnaHQnXSI7CitzdGF0aWMgY29uc3QgY2hhcioga1N0eWxlU2hlZXRUZXN0U2Ny
aXB0UmVzdWx0ID0gImJvbGQiOworCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05ld1dpdGhVc2Vy
Q29udGVudE1hbmFnZXIoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBHUmVmUHRy
PFdlYktpdFVzZXJDb250ZW50TWFuYWdlcj4gdXNlckNvbnRlbnRNYW5hZ2VyMSA9IGFkb3B0R1Jl
Zih3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCkpOworICAgIHRlc3QtPmFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2Vy
MS5nZXQoKSkpOworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzEgPSBXRUJLSVRf
V0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKHVz
ZXJDb250ZW50TWFuYWdlcjEuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcxLmdldCgpKSA9PSB1c2VyQ29udGVudE1h
bmFnZXIxLmdldCgpKTsKKworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzIgPSBX
RUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBnX2Fzc2VydCh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcyLmdldCgpKSAhPSB1
c2VyQ29udGVudE1hbmFnZXIxLmdldCgpKTsKK30KKworc3RhdGljIGJvb2wgaXNTdHlsZVNoZWV0
SW5qZWN0ZWRGb3JVUkxBdFBhdGgoV2ViVmlld1Rlc3QqIHRlc3QsIGNvbnN0IGNoYXIqIHBhdGgp
Cit7CisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKHBhdGgpLmRhdGEo
KSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBHVW5pcXVlT3V0
UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlw
dFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChrU3R5bGVT
aGVldFRlc3RTY3JpcHQsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnQoamF2YXNjcmlw
dFJlc3VsdCk7CisgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gcmVzdWx0U3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5n
KGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICByZXR1cm4gIWdfc3RyY21wMChyZXN1bHRTdHJpbmcu
Z2V0KCksIGtTdHlsZVNoZWV0VGVzdFNjcmlwdFJlc3VsdCk7Cit9CisKK3N0YXRpYyB2b2lkIGZp
bGxVUkxMaXN0RnJvbVBhdGhzKGNoYXIqKiBsaXN0LCBjb25zdCBjaGFyKiBwYXRoLCAuLi4pCit7
CisgICAgdmFfbGlzdCBhcmd1bWVudExpc3Q7CisgICAgdmFfc3RhcnQoYXJndW1lbnRMaXN0LCBw
YXRoKTsKKworICAgIGludCBpID0gMDsKKyAgICB3aGlsZSAocGF0aCkgeworICAgICAgICAvLyBG
SVhNRTogV2UgbXVzdCB1c2UgYSB3aWxkY2FyZCBmb3IgdGhlIGhvc3QgaGVyZSB1bnRpbCBodHRw
Oi8vd2tidWcuY29tLzExMjQ3NiBpcyBmaXhlZC4KKyAgICAgICAgLy8gVW50aWwgdGhhdCB0aW1l
IHBhdHRlcm5zIHdpdGggcG9ydCBudW1iZXJzIGluIHRoZW0gd2lsbCBub3QgcHJvcGVybHkgbWF0
Y2ggVVJMcyB3aXRoIHBvcnQgbnVtYmVycy4KKyAgICAgICAgbGlzdFtpKytdID0gZ19zdHJkdXBf
cHJpbnRmKCJodHRwOi8vKi8lcyoiLCBwYXRoKTsKKyAgICAgICAgcGF0aCA9IHZhX2FyZyhhcmd1
bWVudExpc3QsIGNvbnN0IGNoYXIqKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHJlbW92ZU9s
ZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKFdlYktpdFVzZXJDb250ZW50TWFuYWdl
ciogdXNlckNvbnRlbnRNYW5hZ2VyLCBjaGFyKiogd2hpdGVsaXN0LCBjaGFyKiogYmxhY2tsaXN0
KQoreworICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3N0eWxlX3No
ZWV0cyh1c2VyQ29udGVudE1hbmFnZXIpOworCisgICAgd2hpbGUgKCp3aGl0ZWxpc3QpIHsKKyAg
ICAgICAgZ19mcmVlKCp3aGl0ZWxpc3QpOworICAgICAgICAqd2hpdGVsaXN0ID0gMDsKKyAgICAg
ICAgd2hpdGVsaXN0Kys7CisgICAgfQorCisgICAgd2hpbGUgKCpibGFja2xpc3QpIHsKKyAgICAg
ICAgZ19mcmVlKCpibGFja2xpc3QpOworICAgICAgICAqYmxhY2tsaXN0ID0gMDsKKyAgICAgICAg
YmxhY2tsaXN0Kys7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5h
Z2VySW5qZWN0ZWRTdHlsZVNoZWV0KFVzZXJDb250ZW50TWFuYWdlclRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCit7CisgICAgY2hhciogd2hpdGVsaXN0WzNdID0geyAwLCAwLCAwIH07CisgICAg
Y2hhciogYmxhY2tsaXN0WzNdID0geyAwLCAwLCAwIH07CisKKyAgICByZW1vdmVPbGRJbmplY3Rl
ZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQo
KSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOworCisgICAgLy8gV2l0aG91dCBhIHdoaXRlbGlzdCBv
ciBhIGJsYWNrbGlzdCBhbGwgVVJMcyBzaG91bGQgaGF2ZSB0aGUgaW5qZWN0ZWQgc3R5bGUgc2hl
ZXQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJhbmRvbVBhdGggPSAic29tZXJhbmRvbXBhdGgi
OworICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBy
YW5kb21QYXRoKSk7CisgICAgV2ViS2l0VXNlclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSB3ZWJr
aXRfdXNlcl9zdHlsZV9zaGVldF9uZXcoa0luamVjdGVkU3R5bGVTaGVldCwgV0VCS0lUX1VTRVJf
Q09OVEVOVF9JTkpFQ1RfQUxMX0ZSQU1FUywgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfVVNFUiwg
bnVsbHB0ciwgbnVsbHB0cik7CisgICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9z
dHlsZV9zaGVldCh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgc3R5bGVTaGVldCk7
CisgICAgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfdW5yZWYoc3R5bGVTaGVldCk7CisgICAgZ19h
c3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkp
OworCisgICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHModGVzdC0+
bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKKworICAg
IGZpbGxVUkxMaXN0RnJvbVBhdGhzKGJsYWNrbGlzdCwgcmFuZG9tUGF0aCwgMCk7CisgICAgc3R5
bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5qZWN0ZWRTdHlsZVNoZWV0
LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TVFlM
RV9MRVZFTF9VU0VSLCBudWxscHRyLCBibGFja2xpc3QpOworICAgIHdlYmtpdF91c2VyX2NvbnRl
bnRfbWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQodGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0
KCksIHN0eWxlU2hlZXQpOworICAgIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmKHN0eWxl
U2hlZXQpOworICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0
ZXN0LCByYW5kb21QYXRoKSk7CisgICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JV
UkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRvbXBhdGgiKSk7CisKKyAgICByZW1vdmVPbGRJ
bmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdl
ci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGluVGhlV2hpdGVMaXN0ID0gImludGhld2hpdGVsaXN0IjsKKyAgICBzdGF0aWMgY29uc3QgY2hh
ciogbm90SW5XaGl0ZWxpc3QgPSAibm90aW50aGV3aGl0ZWxpc3QiOworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCA9ICJpbnRoZXdoaXRlbGlzdGFuZGJs
YWNrbGlzdCI7CisKKyAgICBmaWxsVVJMTGlzdEZyb21QYXRocyh3aGl0ZWxpc3QsIGluVGhlV2hp
dGVMaXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCwgMCk7CisgICAgZmlsbFVSTExpc3RG
cm9tUGF0aHMoYmxhY2tsaXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCwgMCk7CisgICAg
c3R5bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5qZWN0ZWRTdHlsZVNo
ZWV0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9T
VFlMRV9MRVZFTF9VU0VSLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisgICAgd2Via2l0X3VzZXJf
Y29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldCh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdl
ci5nZXQoKSwgc3R5bGVTaGVldCk7CisgICAgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfdW5yZWYo
c3R5bGVTaGVldCk7CisgICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBh
dGgodGVzdCwgaW5UaGVXaGl0ZUxpc3QpKTsKKyAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5q
ZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xpc3QpKTsKKyAg
ICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgbm90SW5X
aGl0ZWxpc3QpKTsKKworICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGNsZWFuIHVwIHRoZSBlbnZp
cm9ubWVudCBiZWZvcmUgb3RoZXIgdGVzdHMuCisgICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNo
ZWV0c0FuZFJlc2V0TGlzdHModGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHdoaXRl
bGlzdCwgYmxhY2tsaXN0KTsKK30KKworc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNl
cnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hh
c2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCit7CisgICAgc291cF9tZXNz
YWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOworICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMs
IGtTdHlsZVNoZWV0SFRNTCwgc3RybGVuKGtTdHlsZVNoZWV0SFRNTCkpOworICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworfQorCit2b2lkIGJl
Zm9yZUFsbCgpCit7CisgICAga1NlcnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7CisgICAg
a1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKworICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJuZXctd2l0aC11c2VyLWNvbnRlbnQtbWFuYWdlciIsIHRlc3RXZWJWaWV3TmV3V2l0
aFVzZXJDb250ZW50TWFuYWdlcik7CisgICAgVXNlckNvbnRlbnRNYW5hZ2VyVGVzdDo6YWRkKCJX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIiLCAiaW5qZWN0ZWQtc3R5bGUtc2hlZXQiLCB0ZXN0VXNl
ckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNoZWV0KTsKK30KKwordm9pZCBhZnRlckFsbCgp
Cit7CisgICAgZGVsZXRlIGtTZXJ2ZXI7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAK
aW5kZXggNDQ4YWJkMmZlNTMyYzZjMTRmZTIzMzlmM2MxNzY3ZjBhOWRhODAzMS4uY2NiYTg5ZDQ2
MmU0NGEyNTNlZThmYWU0NmRiNmQ2OWVlNDg1NmVjOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dy
b3VwLmNwcApAQCAtMjYsMTQgKzI2LDYgQEAKICNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKLXN0YXRpYyBXZWJLaXRUZXN0U2Vy
dmVyKiBrU2VydmVyOwotCi0vLyBUaGVzZSBhcmUgYWxsIGhlcmUgc28gdGhhdCB0aGV5IGNhbiBi
ZSBjaGFuZ2VkIGVhc2lseSwgaWYgbmVjZXNzYXJ5Lgotc3RhdGljIGNvbnN0IGNoYXIqIGtTdHls
ZVNoZWV0SFRNTCA9ICI8aHRtbD48ZGl2IGlkPVwic3R5bGVkRWxlbWVudFwiPlN3ZWV0IHN0eWxl
eiE8L2Rpdj48L2h0bWw+IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBrSW5qZWN0ZWRTdHlsZVNoZWV0
ID0gIiNzdHlsZWRFbGVtZW50IHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0iOwotc3RhdGljIGNvbnN0
IGNoYXIqIGtTdHlsZVNoZWV0VGVzdFNjcmlwdCA9ICJnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzdHlsZWRFbGVtZW50JykpWydmb250LXdlaWdodCddIjsKLXN0YXRp
YyBjb25zdCBjaGFyKiBrU3R5bGVTaGVldFRlc3RTY3JpcHRSZXN1bHQgPSAiYm9sZCI7Ci0KIHN0
YXRpYyB2b2lkIHRlc3RXZWJWaWV3R3JvdXBEZWZhdWx0KFRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiB7CiAgICAgLy8gRGVmYXVsdCBncm91cCBpcyBzaGFyZWQgYnkgYWxsIFdlYlZpZXdzIGJ5
IGRlZmF1bHQuCkBAIC05OCwxMDkgKzkwLDE0IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3R3Jv
dXBTZXR0aW5ncyhUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KHdlYmtp
dF93ZWJfdmlld19ncm91cF9nZXRfc2V0dGluZ3Mod2Via2l0X3dlYl92aWV3X2dldF9ncm91cCh3
ZWJWaWV3MS5nZXQoKSkpID09IHdlYlZpZXcyU2V0dGluZ3MpOwogfQogCi1zdGF0aWMgYm9vbCBp
c1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aChXZWJWaWV3VGVzdCogdGVzdCwgY29uc3Qg
Y2hhciogcGF0aCkKLXsKLSAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgo
cGF0aCkuZGF0YSgpKTsKLSAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLQotICAg
IEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlz
aGVkKGtTdHlsZVNoZWV0VGVzdFNjcmlwdCwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2Vy
dChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotCi0gICAg
R1VuaXF1ZVB0cjxjaGFyPiByZXN1bHRTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwotICAgIHJldHVybiAhZ19zdHJjbXAwKHJl
c3VsdFN0cmluZy5nZXQoKSwga1N0eWxlU2hlZXRUZXN0U2NyaXB0UmVzdWx0KTsKLX0KLQotc3Rh
dGljIHZvaWQgZmlsbFVSTExpc3RGcm9tUGF0aHMoY2hhcioqIGxpc3QsIGNvbnN0IGNoYXIqIHBh
dGgsIC4uLikKLXsKLSAgICB2YV9saXN0IGFyZ3VtZW50TGlzdDsKLSAgICB2YV9zdGFydChhcmd1
bWVudExpc3QsIHBhdGgpOwotCi0gICAgaW50IGkgPSAwOwotICAgIHdoaWxlIChwYXRoKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBXZSBtdXN0IHVzZSBhIHdpbGRjYXJkIGZvciB0aGUgaG9zdCBoZXJl
IHVudGlsIGh0dHA6Ly93a2J1Zy5jb20vMTEyNDc2IGlzIGZpeGVkLgotICAgICAgICAvLyBVbnRp
bCB0aGF0IHRpbWUgcGF0dGVybnMgd2l0aCBwb3J0IG51bWJlcnMgaW4gdGhlbSB3aWxsIG5vdCBw
cm9wZXJseSBtYXRjaCBVUkxzIHdpdGggcG9ydCBudW1iZXJzLgotICAgICAgICBsaXN0W2krK10g
PSBnX3N0cmR1cF9wcmludGYoImh0dHA6Ly8qLyVzKiIsIHBhdGgpOwotICAgICAgICBwYXRoID0g
dmFfYXJnKGFyZ3VtZW50TGlzdCwgY29uc3QgY2hhciopOwotICAgIH0KLX0KLQotc3RhdGljIHZv
aWQgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoV2ViS2l0V2ViVmll
d0dyb3VwKiBncm91cCwgY2hhcioqIHdoaXRlbGlzdCwgY2hhcioqIGJsYWNrbGlzdCkKLXsKLSAg
ICB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyhncm91
cCk7Ci0KLSAgICB3aGlsZSAoKndoaXRlbGlzdCkgewotICAgICAgICBnX2ZyZWUoKndoaXRlbGlz
dCk7Ci0gICAgICAgICp3aGl0ZWxpc3QgPSAwOwotICAgICAgICB3aGl0ZWxpc3QrKzsKLSAgICB9
Ci0KLSAgICB3aGlsZSAoKmJsYWNrbGlzdCkgewotICAgICAgICBnX2ZyZWUoKmJsYWNrbGlzdCk7
Ci0gICAgICAgICpibGFja2xpc3QgPSAwOwotICAgICAgICBibGFja2xpc3QrKzsKLSAgICB9Ci19
Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3R3JvdXBJbmplY3RlZFN0eWxlU2hlZXQoV2ViVmll
d1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCi17Ci0gICAgV2ViS2l0V2ViVmlld0dyb3VwKiBn
cm91cCA9IHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAodGVzdC0+bV93ZWJWaWV3KTsKLSAgICBj
aGFyKiB3aGl0ZWxpc3RbM10gPSB7IDAsIDAsIDAgfTsKLSAgICBjaGFyKiBibGFja2xpc3RbM10g
PSB7IDAsIDAsIDAgfTsKLQotICAgIHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNl
dExpc3RzKGdyb3VwLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7Ci0KLSAgICAvLyBXaXRob3V0IGEg
d2hpdGVsaXN0IG9yIGEgYmxhY2tsaXN0IGFsbCBVUkxzIHNob3VsZCBoYXZlIHRoZSBpbmplY3Rl
ZCBzdHlsZSBzaGVldC4KLSAgICBzdGF0aWMgY29uc3QgY2hhciogcmFuZG9tUGF0aCA9ICJzb21l
cmFuZG9tcGF0aCI7Ci0gICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQ
YXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3Vz
ZXJfc3R5bGVfc2hlZXQoZ3JvdXAsIGtJbmplY3RlZFN0eWxlU2hlZXQsIDAsIDAsIDAsIFdFQktJ
VF9JTkpFQ1RFRF9DT05URU5UX0ZSQU1FU19BTEwpOwotICAgIGdfYXNzZXJ0KGlzU3R5bGVTaGVl
dEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKLQotICAgIHJlbW92ZU9s
ZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKGdyb3VwLCB3aGl0ZWxpc3QsIGJsYWNr
bGlzdCk7Ci0KLSAgICBmaWxsVVJMTGlzdEZyb21QYXRocyhibGFja2xpc3QsIHJhbmRvbVBhdGgs
IDApOwotICAgIHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldChncm91
cCwga0luamVjdGVkU3R5bGVTaGVldCwgMCwgMCwgYmxhY2tsaXN0LCBXRUJLSVRfSU5KRUNURURf
Q09OVEVOVF9GUkFNRVNfQUxMKTsKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRG
b3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOwotICAgIGdfYXNzZXJ0KGlzU3R5bGVTaGVl
dEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsICJzb21lb3RoZXJyYW5kb21wYXRoIikpOwotCi0g
ICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoZ3JvdXAsIHdoaXRl
bGlzdCwgYmxhY2tsaXN0KTsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpblRoZVdoaXRlTGlz
dCA9ICJpbnRoZXdoaXRlbGlzdCI7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIG5vdEluV2hpdGVs
aXN0ID0gIm5vdGludGhld2hpdGVsaXN0IjsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogaW5UaGVX
aGl0ZUxpc3RBbmRCbGFja0xpc3QgPSAiaW50aGV3aGl0ZWxpc3RhbmRibGFja2xpc3QiOwotCi0g
ICAgZmlsbFVSTExpc3RGcm9tUGF0aHMod2hpdGVsaXN0LCBpblRoZVdoaXRlTGlzdCwgaW5UaGVX
aGl0ZUxpc3RBbmRCbGFja0xpc3QsIDApOwotICAgIGZpbGxVUkxMaXN0RnJvbVBhdGhzKGJsYWNr
bGlzdCwgaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xpc3QsIDApOwotICAgIHdlYmtpdF93ZWJfdmll
d19ncm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldChncm91cCwga0luamVjdGVkU3R5bGVTaGVldCwg
MCwgd2hpdGVsaXN0LCBibGFja2xpc3QsIFdFQktJVF9JTkpFQ1RFRF9DT05URU5UX0ZSQU1FU19B
TEwpOwotICAgIGdfYXNzZXJ0KGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3Qs
IGluVGhlV2hpdGVMaXN0KSk7Ci0gICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9y
VVJMQXRQYXRoKHRlc3QsIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0KSk7Ci0gICAgZ19hc3Nl
cnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIG5vdEluV2hpdGVsaXN0
KSk7Ci0KLSAgICAvLyBJdCdzIGltcG9ydGFudCB0byBjbGVhbiB1cCB0aGUgZW52aXJvbm1lbnQg
YmVmb3JlIG90aGVyIHRlc3RzLgotICAgIHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRS
ZXNldExpc3RzKGdyb3VwLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2Us
IGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2lu
dGVyKQotewotICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVT
X09LKTsKLSAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9k
eSwgU09VUF9NRU1PUllfU1RBVElDLCBrU3R5bGVTaGVldEhUTUwsIHN0cmxlbihrU3R5bGVTaGVl
dEhUTUwpKTsKLSAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25z
ZV9ib2R5KTsKLX0KLQogdm9pZCBiZWZvcmVBbGwoKQogewotICAgIGtTZXJ2ZXIgPSBuZXcgV2Vi
S2l0VGVzdFNlcnZlcigpOwotICAgIGtTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7Ci0KICAg
ICBUZXN0OjphZGQoIldlYktpdFdlYlZpZXdHcm91cCIsICJkZWZhdWx0LWdyb3VwIiwgdGVzdFdl
YlZpZXdHcm91cERlZmF1bHQpOwogICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlld0dyb3VwIiwg
Im5ldy1ncm91cCIsIHRlc3RXZWJWaWV3R3JvdXBOZXdHcm91cCk7CiAgICAgVGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgIm5ldy13aXRoLWdyb3VwIiwgdGVzdFdlYlZpZXdOZXdXaXRoR3JvdXAp
OwogICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlld0dyb3VwIiwgInNldHRpbmdzIiwgdGVzdFdl
YlZpZXdHcm91cFNldHRpbmdzKTsKLSAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
R3JvdXAiLCAiaW5qZWN0ZWQtc3R5bGUtc2hlZXQiLCB0ZXN0V2ViVmlld0dyb3VwSW5qZWN0ZWRT
dHlsZVNoZWV0KTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCiB7Ci0gICAgZGVsZXRlIGtTZXJ2ZXI7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZp
ZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rl
c3QuY3BwCmluZGV4IDExOThiMDhiZTY4M2Q1OTM5MjQ2ZDkwYTUwZTNiMWQ0ZWY3M2MwMzcuLmVi
ZDAzYjRkNGFhODAyY2FlNjgyOTBlNGRkNjcyMjVkMDRjMzdlNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwCkBAIC0yNSw3ICsy
NSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgogCiBXZWJWaWV3VGVz
dDo6V2ViVmlld1Rlc3QoKQotICAgIDogbV93ZWJWaWV3KFdFQktJVF9XRUJfVklFVyhnX29iamVj
dF9yZWZfc2luayh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpKSkKKyAgICA6IFdlYlZpZXdUZXN0KFdF
QktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpKSB7IH0KKworV2ViVmlld1Rlc3Q6
OldlYlZpZXdUZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcoV0VC
S0lUX1dFQl9WSUVXKGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpKSkKICAgICAsIG1fbWFpbkxv
b3AoZ19tYWluX2xvb3BfbmV3KDAsIFRSVUUpKQogICAgICwgbV9wYXJlbnRXaW5kb3coMCkKICAg
ICAsIG1famF2YXNjcmlwdFJlc3VsdCgwKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsv
V2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5oCmluZGV4IGY0NWUxMjVjOWQ0ZmEyZGNkNjQzZDYxNDBh
YWEzN2RmMTYwYmEzODguLjJiY2Y1NjM1OThhN2VmZjg2YTI4NjEwMTJkMGNmYTg3NDE5OTdhZDEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rl
c3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIGNsYXNzIFdlYlZpZXdUZXN0OiBwdWJsaWMgVGVzdCB7CiBw
dWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShXZWJWaWV3VGVzdCk7CisgICAgV2Vi
Vmlld1Rlc3QoV2ViS2l0V2ViVmlldyopOwogICAgIFdlYlZpZXdUZXN0KCk7CiAgICAgdmlydHVh
bCB+V2ViVmlld1Rlc3QoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234342</attachid>
            <date>2014-07-03 06:44:58 -0700</date>
            <delta_ts>2014-07-03 12:17:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134551-20140703164707.patch</filename>
            <type>text/plain</type>
            <size>75089</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmU0MTFiYWUwMmY2NDE4
ZjY5NTM3ZTNjZWQ4MWEyZjlkNDZkYjg2OS4uYWMxMWM2YjZjZDcwZGExNzg0NjE2OWFjNDk3MTYz
OTM5ZWYzMzBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE0LTA3LTAzICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
TW92ZSB1c2VyIHN0eWxlIHNoZWV0IEFQSSBvdXQgb2YgV2ViS2l0V2ViVmlld0dyb3VwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ1NTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBJbmNsdWRlIHRoZSBuZXcgc291cmNlIGZpbGVzIGluIHRoZSBidWlsZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdDcmVh
dGUpOgorICAgICAgICBBZGFwdCB0byB0aGUgYWRkaXRpb25hbCB3ZWJraXRXZWJWaWV3QmFzZUNy
ZWF0ZVdlYlBhZ2UoKSBwYXJhbWV0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlckNvbnRlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRvVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyk6CisgICAgICAgICh0b1VzZXJTdHlsZUxldmVsKToKKyAgICAgICAgKHRvU3RyaW5n
VmVjdG9yKToKKyAgICAgICAgKF9XZWJLaXRVc2VyU3R5bGVTaGVldDo6X1dlYktpdFVzZXJTdHls
ZVNoZWV0KToKKyAgICAgICAgKHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZik6CisgICAgICAg
ICh3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZik6CisgICAgICAgICh3ZWJraXRfdXNlcl9z
dHlsZV9zaGVldF9uZXcpOgorICAgICAgICAod2Via2l0V2ViS2l0VXNlclN0eWxlU2hlZXRUb1Vz
ZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXJQcml2YXRlOjpfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZSk6CisgICAgICAgICh3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfbmV3KToKKyAgICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQpOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9t
YW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzKToKKyAgICAgICAgKHdlYmtpdFVzZXJDb250
ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudFByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOiBB
ZGQgYSBuZXcgcGFyYW1ldGVyIHRvIGFsbG93CisgICAgICAgIHBhc3NpbmcgdGhlIFdlYktpdFVz
ZXJDb250ZW50TWFuYWdlciB0aGF0IHRoZSB3ZWIgdmlldyB3aWxsIHVzZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdDb25zdHJ1Y3RlZCk6IEFkZGVkIGhhbmRsaW5nIG9mIHRoZQorICAgICAgICAidXNl
ci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5IG9uIGNvbnN0cnVjdGlvbi4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZQorICAgICAgICAi
dXNlci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5LgorICAgICAgICAod2Via2l0V2ViVmlld0dl
dFByb3BlcnR5KTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlCisgICAgICAgICJ1c2VyLWNvbnRlbnQt
bWFuYWdlciIgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6
IEFkZGVkIHRoZSAidXNlci1jb250ZW50LW1hbmFnZXIiCisgICAgICAgIHByb3BlcnR5IGRlZmlu
aXRpb24gdG8gdGhlIFdlYktpdFdlYlZpZXcgY2xhc3MuCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KTogTWFkZSByZWxhdGVkIHZpZXdzIHNoYXJlCisgICAg
ICAgIHRoZSBzYW1lIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciB1c2VkIGJ5IHRoZSB2aWV3IHRo
ZXkgYXJlCisgICAgICAgIHJlbGF0ZWQgdG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3
X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZCBuZXcgQVBJIG1ldGhvZHMuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VDcmVhdGUpOiBBZGRlZCBhIHBhcmFtZXRlciB0byBwYXNzIHRoZSB1c2Vy
CisgICAgICAgIGNvbnRlbnQgbWFuYWdlci4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlV2ViUGFnZSk6IEFkZGVkIGEgcGFyYW1ldGVyIHRvIHBhc3MgdGhlIHVzZXIKKyAgICAgICAg
Y29udGVudCBtYW5hZ2VyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3JvdXAuY3BwOiBSZW1vdmVkIHRoZSBiaXRzIHJlbGF0ZWQKKyAgICAgICAgdG8g
dXNlciBzdHlsZSBzaGVldCBzdXBwb3J0IGZyb20gV2ViS2l0V2ViVmlld0dyb3VwLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncyk6CisgICAgICAgICh0b0FQSUFy
cmF5KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9z
dHlsZV9zaGVldCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVt
b3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmg6IERlbGV0ZWQgdGhlIEFQSSBtZXRob2RzCisg
ICAgICAgIGZvciB1c2VyIHN0eWxlIHNoZWV0IGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZGVkIHRoZSBuZXcgQVBJ
CisgICAgICAgIGZ1bmN0aW9ucyBhbmQgdHlwZXMsIGFuZCByZW1vdmVkIHRoZSBtZXRob2RzIHdo
aWNoIGFyZSBubyBsb25nZXIKKyAgICAgICAgYXZhaWxhYmxlIGluIFdlYktpdFdlYlZpZXdHcm91
cC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEFkZCB0aGUgbmV3IGhl
YWRlcnMuCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcDogQWRkZWQKKyAgICAgICAgbWV0aG9kcyB0byBhZGQgYW5kIHJlbW92
ZSB1c2VyIHN0eWxlIHNoZWV0cywgYWxpa2UgdGhvc2UgdXNlZCBmb3IKKyAgICAgICAgdXNlciBz
Y3JpcHRzLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaDogRGl0dG8uCisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2Up
OgorICAgICAgICBBZGFwdCB0byB0aGUgYWRkaXRpb25hbCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0
ZVdlYlBhZ2UoKSBwYXJhbWV0ZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOiBBZGRlZCBtZXRob2RzCisgICAgICAgIHRvIGFk
ZCBhbmQgcmVtb3ZlIHVzZXIgc3R5bGUgc2hlZXRzLCBhbGlrZSB0aG9zZSB1c2VkIGZvciB1c2Vy
IHNjcmlwdHMuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRk
VXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6IERpdHRvLgorICAgICAgICAqIFdl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICBEaXR0by4KKwogMjAxNC0wNy0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTcwNjc2KTogW0dUS10g
VUkgcHJvY2VzcyBjcmFzaGVzIHdoZW4gdGhlIFdlYiBQcm9jZXNzIGNyYXNoZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggZDA3ZDI4MTU1NmJiYzgyMDA1ZDY2NTc3ZmI0ODYxZWM2YTZjYjM0Mi4u
ODA1YWI2ZjFlMWZjNGYzMjRkMzMzNmIyZWYyYjhkYzgxMTUyODlhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTkyNSw2ICs5MjUsOCBAQCBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUQxRXYKIF9fWk43V2ViQ29yZTIxVVJMQnlSZW1vdmluZ1VzZXJJbmZvRVA1TlNVUkwKIF9f
Wk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMTNhZGRVc2VyU2NyaXB0RVJOU18xNURP
TVdyYXBwZXJXb3JsZEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzEwVXNlclNjcmlwdEVOUzNfMTRk
ZWZhdWx0X2RlbGV0ZUlTNV9FRUVFCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxl
cjE3cmVtb3ZlVXNlclNjcmlwdHNFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQorX19aTjdXZWJDb3Jl
MjFVc2VyQ29udGVudENvbnRyb2xsZXIxN2FkZFVzZXJTdHlsZVNoZWV0RVJOU18xNURPTVdyYXBw
ZXJXb3JsZEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzE0VXNlclN0eWxlU2hlZXRFTlMzXzE0ZGVm
YXVsdF9kZWxldGVJUzVfRUVFRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKK19fWk43V2Vi
Q29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMjFyZW1vdmVVc2VyU3R5bGVTaGVldHNFUk5TXzE1
RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXIzMWFk
ZFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JFUk5TXzI4VXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvckUKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMzRyZW1vdmVVc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yRVJOU18yOFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3JFCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxlcjZjcmVhdGVFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhNGJhOWFhOWFjMGIxMTNlMGViOGM5ZDc0Zjc5M2I0NzU2
ZGI5MTFlLi44MThlMGVmN2E1MDZlMDQ5MzUyMWMwOTdhMmI1MmFiZTZhNGZhZGRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjEwLDYgKzIxMCwxMiBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaAogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKKyAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5oCisgICAgVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlckNvbnRlbnQuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNl
ckNvbnRlbnRQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
clByaXZhdGUuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
ci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFZlcnNpb24uaC5pbgogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwCkBAIC0zNTMsNiArMzU5LDggQEAgc2V0KFdlYktpdDJHVEtfSU5T
VEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklSZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklSZXNwb25zZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdC5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlckNvbnRlbnQuaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmgKICAgICAke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAKaW5kZXggNmYwYzA0YmYyNzNkYmZmNjFkOWIwZmJk
YzI3YTgwZDUzOGYyYzMyMy4uYmM3YjgzZjk1YTQ3MmU1MzczYzA3ODE2YWZhZWVlMTRjNWQyMWQw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcApA
QCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV0tWaWV3UmVmIFdL
Vmlld0NyZWF0ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwUmVmKQogewotICAgIHJldHVybiB0b0FQSSh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSh0b0lt
cGwoY29udGV4dFJlZiksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCBudWxscHRyKSk7CisgICAgcmV0
dXJuIHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSwgdG9J
bXBsKHBhZ2VHcm91cFJlZiksIG51bGxwdHIsIG51bGxwdHIpKTsKIH0KIAogV0tQYWdlUmVmIFdL
Vmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVh
YTk1MTI3MzQwZTllZTc3M2Q4NThjMTMxZTNiNDU2ZjczM2VhYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50LmNwcApA
QCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnQuaCIKKworI2lu
Y2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudFByaXZh
dGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLyoqCisgKiBT
RUNUSU9OOldlYktpdFVzZXJDb250ZW50CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IERlZmluZXMg
dXNlciBjb250ZW50IHR5cGVzIHdoaWNoIGFmZmVjdCB3ZWIgcGFnZXMuCisgKiBAdGl0bGU6IFVz
ZXIgY29udGVudAorICoKKyAqIFNlZSBhbHNvOiAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCisg
KgorICogU2luY2U6IDIuNgorICovCisKK3N0YXRpYyBpbmxpbmUgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoV2ViS2l0VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKK3sKKyAgICBzd2l0Y2ggKGluamVjdGVkRnJhbWVz
KSB7CisgICAgY2FzZSBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9UT1BfRlJBTUU6CisgICAg
ICAgIHJldHVybiBJbmplY3RJblRvcEZyYW1lT25seTsKKyAgICBjYXNlIFdFQktJVF9VU0VSX0NP
TlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6CisgICAgICAgIHJldHVybiBJbmplY3RJbkFsbEZyYW1l
czsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIEluamVjdEluQWxsRnJhbWVzOworICAgIH0KK30KKworc3RhdGljIGlubGluZSBVc2Vy
U3R5bGVMZXZlbCB0b1VzZXJTdHlsZUxldmVsKFdlYktpdFVzZXJTdHlsZUxldmVsIHN0eWxlTGV2
ZWwpCit7CisgICAgc3dpdGNoIChzdHlsZUxldmVsKSB7CisgICAgY2FzZSBXRUJLSVRfVVNFUl9T
VFlMRV9MRVZFTF9VU0VSOgorICAgICAgICByZXR1cm4gVXNlclN0eWxlVXNlckxldmVsOworICAg
IGNhc2UgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfQVVUSE9SOgorICAgICAgICByZXR1cm4gVXNl
clN0eWxlQXV0aG9yTGV2ZWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBVc2VyU3R5bGVBdXRob3JMZXZlbDsKKyAgICB9Cit9CisK
K3N0YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWN0b3IoY29uc3QgY2hhciog
Y29uc3QqIHN0cnYpCit7CisgICAgaWYgKCFzdHJ2KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0
cmluZz4oKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICBmb3IgKGF1dG8gc3Ry
ID0gc3RydjsgKnN0cjsgKytzdHIpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RkOjptb3ZlKFN0
cmluZzo6ZnJvbVVURjgoKnN0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdHJ1Y3Qg
X1dlYktpdFVzZXJTdHlsZVNoZWV0IHsKKyAgICBfV2ViS2l0VXNlclN0eWxlU2hlZXQoY29uc3Qg
Z2NoYXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcywgV2ViS2l0VXNlclN0eWxlTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIqIGNvbnN0KiB3aGl0
ZWxpc3QsIGNvbnN0IGNoYXIqIGNvbnN0KiBibGFja2xpc3QpCisgICAgICAgIDogdXNlclN0eWxl
U2hlZXQoc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oCisgICAgICAgICAgICBTdHJp
bmc6OmZyb21VVEY4KHNvdXJjZSksIFVSTCB7IH0sCisgICAgICAgICAgICB0b1N0cmluZ1ZlY3Rv
cih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLAorICAgICAgICAgICAgdG9V
c2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSwKKyAgICAgICAgICAgIHRv
VXNlclN0eWxlTGV2ZWwobGV2ZWwpKSkKKyAgICAgICAgLCByZWZlcmVuY2VDb3VudCgxKQorICAg
IHsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHls
ZVNoZWV0OworICAgIGludCByZWZlcmVuY2VDb3VudDsKK307CisKK0dfREVGSU5FX0JPWEVEX1RZ
UEUoV2ViS2l0VXNlclN0eWxlU2hlZXQsIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0LCB3ZWJraXRf
dXNlcl9zdHlsZV9zaGVldF9yZWYsIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmKQorCisv
KioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZjoKKyAqIEB1c2VyX3N0eWxlX3NoZWV0
OiBhICNXZWJLaXRVc2VyU3R5bGVTaGVldAorICoKKyAqIEF0b21pY2FsbHkgaW5jcmVtZW50cyB0
aGUgcmVmZXJlbmNlIGNvdW50IG9mIEB1c2VyX3N0eWxlX3NoZWV0IGJ5IG9uZS4KKyAqIFRoaXMg
ZnVuY3Rpb24gaXMgTVQtc2FmZSBhbmQgbWF5IGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisg
KgorICogUmV0dXJuczogVGhlIHBhc3NlZCAjV2ViS2l0VXNlclN0eWxlU2hlZXQKKyAqCisgKiBT
aW5jZTogMi42CisgKi8KK1dlYktpdFVzZXJTdHlsZVNoZWV0KiB3ZWJraXRfdXNlcl9zdHlsZV9z
aGVldF9yZWYoV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0KQoreworICAgIGdf
YXRvbWljX2ludF9pbmMoJnVzZXJTdHlsZVNoZWV0LT5yZWZlcmVuY2VDb3VudCk7CisgICAgcmV0
dXJuIHVzZXJTdHlsZVNoZWV0OworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X3VucmVmOgorICogQHVzZXJfc3R5bGVfc2hlZXQ6IGEgI1dlYktpdFVzZXJTdHlsZVNoZWV0Cisg
KgorICogQXRvbWljYWxseSBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgQHVzZXJf
c3R5bGVfc2hlZXQgYnkgb25lLgorICogSWYgdGhlIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byAw
LCBhbGwgbWVtb3J5IGFsbG9jYXRlZCBieQorICogI1dlYktpdFVzZXJTdHlsZVNoZWV0IGlzIHJl
bGVhc2VkLiBUaGlzIGZ1bmN0aW9uIGlzIE1ULXNhZmUgYW5kIG1heSBiZQorICogY2FsbGVkIGZy
b20gYW55IHRocmVhZC4KKyAqCisgKiBTaW5jZTogMi42CisgKi8KK3ZvaWQgd2Via2l0X3VzZXJf
c3R5bGVfc2hlZXRfdW5yZWYoV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0KQor
eworICAgIGlmIChnX2F0b21pY19pbnRfZGVjX2FuZF90ZXN0KCZ1c2VyU3R5bGVTaGVldC0+cmVm
ZXJlbmNlQ291bnQpKSB7CisgICAgICAgIHVzZXJTdHlsZVNoZWV0LT5+V2ViS2l0VXNlclN0eWxl
U2hlZXQoKTsKKyAgICAgICAgZ19zbGljZV9mcmVlKFdlYktpdFVzZXJTdHlsZVNoZWV0LCB1c2Vy
U3R5bGVTaGVldCk7CisgICAgfQorfQorCisvKioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X25ldzoKKyAqIEBzb3VyY2U6IFNvdXJjZSBjb2RlIG9mIHRoZSB1c2VyIHN0eWxlIHNoZWV0Lgor
ICogQGluamVjdGVkX2ZyYW1lczogQSAjV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB2
YWx1ZQorICogQGxldmVsOiBBICNXZWJLaXRVc2VyU3R5bGVMZXZlbAorICogQHdoaXRlbGlzdDog
KGFycmF5IHplcm8tdGVybWluYXRlZD0xKSAoYWxsb3ctbm9uZSk6IEEgd2hpdGVsaXN0IG9mIFVS
SSBwYXR0ZXJucyBvciAlTlVMTAorICogQGJsYWNrbGlzdDogKGFycmF5IHplcm8tdGVybWluYXRl
ZD0xKSAoYWxsb3ctbm9uZSk6IEEgYmxhY2tsaXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVMTAor
ICoKKyAqIENyZWF0ZXMgYSBuZXcgdXNlciBzdHlsZSBzaGVldC4gU3R5bGUgc2hlZXRzIGNhbiBi
ZSBhcHBsaWVkIHRvIHNvbWUgVVJJcworICogb25seSBieSBwYXNzaW5nIG5vbi1udWxsIHZhbHVl
cyBmb3IgQHdoaXRlbGlzdCBvciBAYmxhY2tsaXN0LiBQYXNzaW5nIGEKKyAqICVOVUxMIHdoaXRl
bGlzdCBpbXBsaWVzIHRoYXQgYWxsIFVSSXMgYXJlIG9uIHRoZSB3aGl0ZWxpc3QuIFRoZSBzdHls
ZQorICogc2hlZXQgaXMgYXBwbGllZCBpZiBhbiBVUkkgbWF0Y2hlcyB0aGUgd2hpdGVsaXN0IGFu
ZCBub3QgdGhlIGJsYWNrbGlzdC4KKyAqIFVSSSBwYXR0ZXJucyBtdXN0IGJlIG9mIHRoZSBmb3Jt
IGBbcHJvdG9jb2xdOi8vW2hvc3RdL1twYXRoXWAsIHdoZXJlIHRoZQorICogKmhvc3QqIGFuZCAq
cGF0aCogY29tcG9uZW50cyBjYW4gY29udGFpbiB0aGUgd2lsZGNhcmQgY2hhcmFjdGVyIChgKmAp
IHRvCisgKiByZXByZXNlbnQgemVybyBvciBtb3JlIG90aGVyIGNoYXJhY3RlcnMuCisgKgorICog
UmV0dXJuczogQSBuZXcgI1dlYktpdFVzZXJTdHlsZVNoZWV0CisgKgorICogU2luY2U6IDIuNgor
ICovCitXZWJLaXRVc2VyU3R5bGVTaGVldCogd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGNv
bnN0IGdjaGFyKiBzb3VyY2UsIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0
ZWRGcmFtZXMsIFdlYktpdFVzZXJTdHlsZUxldmVsIGxldmVsLCBjb25zdCBjaGFyKiBjb25zdCog
d2hpdGVsaXN0LCBjb25zdCBjaGFyKiBjb25zdCogYmxhY2tsaXN0KQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHNvdXJjZSwgbnVsbHB0cik7CisgICAgV2ViS2l0VXNlclN0eWxlU2hlZXQq
IHVzZXJTdHlsZVNoZWV0ID0gZ19zbGljZV9uZXcoV2ViS2l0VXNlclN0eWxlU2hlZXQpOworICAg
IG5ldyAodXNlclN0eWxlU2hlZXQpIFdlYktpdFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgaW5qZWN0
ZWRGcmFtZXMsIGxldmVsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisgICAgcmV0dXJuIHVzZXJT
dHlsZVNoZWV0OworfQorCitjb25zdCBVc2VyU3R5bGVTaGVldCYgd2Via2l0VXNlclN0eWxlU2hl
ZXRHZXRVc2VyU3R5bGVTaGVldChXZWJLaXRVc2VyU3R5bGVTaGVldCogdXNlclN0eWxlU2hlZXQp
Cit7CisgICAgcmV0dXJuICp1c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQ7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMWQzYWRlYjUyMjhmM2U4MjI0OGU0MTJmMzdhNDQwZTgzNGQ2Y2RlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlckNvbnRlbnQuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmlu
ZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+
IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVc2Vy
Q29udGVudF9oCisjZGVmaW5lIFdlYktpdFVzZXJDb250ZW50X2gKKworI2luY2x1ZGUgPGdsaWIt
b2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5f
REVDTFMKKworLyoqCisgKiBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOgorICogQFdF
QktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6IEluc2VydCB0aGUgdXNlciBzdHls
ZQorICogICBzaGVldCBpbiBhbGwgdGhlIGZyYW1lcyBsb2FkZWQgYnkgdGhlIHdlYiB2aWV3LCBp
bmNsdWRpbmcKKyAqICAgbmVzdGVkIGZyYW1lcy4gVGhpcyBpcyB0aGUgZGVmYXVsdC4KKyAqIEBX
RUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9UT1BfRlJBTUU6IEluc2VydCB0aGUgdXNlciBzdHls
ZQorICogICBzaGVldCAqb25seSogaW4gdGhlIHRvcC1sZXZlbCBmcmFtZSBsb2FkZWQgYnkgdGhl
IHdlYiB2aWV3LAorICogICBhbmQgKm5vdCogaW4gdGhlIG5lc3RlZCBmcmFtZXMuCisgKgorICog
U3BlY2lmaWVzIGluIHdoaWNoIGZyYW1lcyB1c2VyIHN0eWxlIHNoZWV0cyBhcmUgdG8gYmUgaW5z
ZXJ0ZWQgaW4uCisgKgorICogU2luY2U6IDIuNgorICovCit0eXBlZGVmIGVudW0geworICAgIFdF
QktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVMsCisgICAgV0VCS0lUX1VTRVJfQ09O
VEVOVF9JTkpFQ1RfVE9QX0ZSQU1FLAorfSBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OworCisvKioKKyAqIFdlYktpdFVzZXJTdHlsZUxldmVsOgorICogQFdFQktJVF9VU0VSX1NUWUxF
X0xFVkVMX1VTRVI6IFRoZSBzdHlsZSBzaGVldCBpcyBhbiB1c2VyIHN0eWxlIHNoZWV0LAorICog
ICBpdHMgY29udGVudHMgYWx3YXlzIG92ZXJyaWRlIG90aGVyIHN0eWxlIHNoZWV0cy4gVGhpcyBp
cyB0aGUgZGVmYXVsdC4KKyAqIEBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9BVVRIT1I6IFRoZSBz
dHlsZSBzaGVldCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYKKyAqICAgaXQgd2FzIHByb3ZpZGVkIGJ5
IHRoZSBsb2FkZWQgZG9jdW1lbnRzLiBUaGF0IG1lYW5zIG90aGVyIHVzZXIgc3R5bGUKKyAqICAg
c2hlZXRzIG1heSBzdGlsbCBvdmVycmlkZSBpdC4KKyAqCisgKiBTcGVjaWZpZXMgaG93IHRvIHRy
ZWF0IGFuIHVzZXIgc3R5bGUgc2hlZXQuCisgKgorICogU2luY2U6IDIuNgorICovCit0eXBlZGVm
IGVudW0geworICAgIFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsCisgICAgV0VCS0lUX1VT
RVJfU1RZTEVfTEVWRUxfQVVUSE9SLAorfSBXZWJLaXRVc2VyU3R5bGVMZXZlbDsKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9VU0VSX1NUWUxFX1NIRUVUICh3ZWJraXRfdXNlcl9jb250ZW50X2dldF90
eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyU3R5bGVTaGVldCBXZWJLaXRVc2Vy
U3R5bGVTaGVldDsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRf
Z2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKK3dl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZiAgICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAg
ICAgICAgKnVzZXJfc3R5bGVfc2hlZXQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF91c2Vy
X3N0eWxlX3NoZWV0X3VucmVmICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAgICAgICAgKnVz
ZXJfc3R5bGVfc2hlZXQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKK3dl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyAgICAgIChjb25zdCBnY2hhciAgICAgICAgICAgICAg
ICAgICAgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkX2ZyYW1lcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyU3R5bGVMZXZlbCAgICAgICAgICAgIGxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAg
ICAgICAgICAgICAqd2hpdGVsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqYmxhY2tsaXN0KTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTgyNjY4
OTg0ZjNkMDZlMjMzZWVjNjUzNTY4ODgzZGI4MTllMjMxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNw
cApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5M
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmgiCisKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50UHJpdmF0
ZS5oIgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX1dlYktpdFVzZXJD
b250ZW50TWFuYWdlclByaXZhdGUgeworICAgIF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2
YXRlKCkKKyAgICAgICAgOiB1c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmNyZWF0ZSgpKSB7IH0KKworICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eT4gdXNlckNvbnRlbnRDb250cm9sbGVyOworfTsKKworLyoqCisgKiBTRUNU
SU9OOldlYktpdFVzZXJDb250ZW50TWFuYWdlcgorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBNYW5h
Z2VzIHVzZXItZGVmaW5lZCBjb250ZW50IHdoaWNoIGFmZmVjdHMgd2ViIHBhZ2VzLgorICogQHRp
dGxlOiBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIKKyAqCisgKiBVc2luZyBhICNXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIgdXNlciBDU1Mgc3R5bGUgc2hlZXRzIGNhbiBiZSBzZXQgdG8KKyAqIGJl
IGluamVjdGVkIGluIHRoZSB3ZWIgcGFnZXMgbG9hZGVkIGJ5IGEgI1dlYktpdFdlYlZpZXcsIGJ5
CisgKiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KCkuCisgKgor
ICogVG8gdXNlIGEgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlciwgaXQgbXVzdCBiZSBjcmVhdGVk
IHVzaW5nCisgKiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCksIGFuZCB0aGVuIHBh
c3NlZCB0bworICogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2Vy
KCkuIFVzZXIgc3R5bGUKKyAqIHNoZWV0cyBjYW4gYmUgY3JlYXRlZCB3aXRoIHdlYmtpdF91c2Vy
X3N0eWxlX3NoZWV0X25ldygpLgorICoKKyAqIFVzZXIgc3R5bGUgc2hlZXRzIGNhbiBiZSBhZGRl
ZCBhbmQgcmVtb3ZlZCBhdCBhbnkgdGltZSwgYnV0CisgKiB0aGV5IHdpbGwgYWZmZWN0IHRoZSB3
ZWIgcGFnZXMgbG9hZGVkIGFmdGVyd2FyZHMuCisgKgorICogU2luY2U6IDIuNgorICovCisKK1dF
QktJVF9ERUZJTkVfVFlQRShXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIsIHdlYmtpdF91c2VyX2Nv
bnRlbnRfbWFuYWdlciwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0X3VzZXJf
Y29udGVudF9tYW5hZ2VyX2NsYXNzX2luaXQoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3Mq
KQoreworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXc6CisgKgor
ICogQ3JlYXRlcyBhIG5ldyB1c2VyIGNvbnRlbnQgbWFuYWdlci4KKyAqCisgKiBSZXR1cm5zOiBB
ICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIKKyAqCisgKiBTaW5jZTogMi42CisgKi8KK1dlYktp
dFVzZXJDb250ZW50TWFuYWdlciogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldygpCit7
CisgICAgcmV0dXJuIFdFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUihnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfVVNFUl9DT05URU5UX01BTkFHRVIsIG51bGxwdHIpKTsKK30KKworLyoqCisgKiB3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0OgorICogQG1hbmFnZXI6
IEEgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlcgorICogQHN0eWxlc2hlZXQ6IEEgI1dlYktpdFVz
ZXJTdHlsZVNoZWV0CisgKgorICogQWRkcyBhICNXZWJLaXRVc2VyU3R5bGVTaGVldCB0byB0aGUg
Z2l2ZW4gI1dlYktpdFVzZXJDb250ZW50TWFuYWdlci4KKyAqIFRoZSBzYW1lICNXZWJLaXRVc2Vy
U3R5bGVTaGVldCBjYW4gYmUgcmV1c2VkIHdpdGggbXVsdGlwbGUKKyAqICNXZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIgaW5zdGFuY2VzLgorICoKKyAqIFNpbmNlOiAyLjYKKyAqLwordm9pZCB3ZWJr
aXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KFdlYktpdFVzZXJDb250ZW50
TWFuYWdlciogbWFuYWdlciwgV2ViS2l0VXNlclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCit7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9DT05URU5UX01BTkFHRVIobWFuYWdl
cikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc3R5bGVTaGVldCk7CisgICAgbWFuYWdlci0+cHJp
di0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVldCh3ZWJraXRVc2VyU3R5
bGVTaGVldEdldFVzZXJTdHlsZVNoZWV0KHN0eWxlU2hlZXQpKTsKK30KKworLyoqCisgKiB3ZWJr
aXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVtb3ZlX2FsbF9zdHlsZV9zaGVldHM6CisgKiBAbWFu
YWdlcjogQSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCisgKgorICogUmVtb3ZlcyBhbGwgdXNl
ciBzdHlsZSBzaGVldHMgZnJvbSB0aGUgZ2l2ZW4gI1dlYktpdFVzZXJDb250ZW50TWFuYWdlci4K
KyAqCisgKiBTaW5jZTogMi42CisgKi8KK3ZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2Vy
X3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWFuYWdl
cikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFOQUdF
UihtYW5hZ2VyKSk7CisgICAgbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5y
ZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKK30KKworV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkqIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWFuYWdlcikKK3sKKyAgICByZXR1cm4gbWFu
YWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLmdldCgpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iOTE5NTAwZmFlZjBjNTg1ZjBjYTQ5NjM2NDJlNmViODMzYTE3
MmVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURF
X18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtp
dDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5k
ZWYgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyX2gKKyNkZWZpbmUgV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVudC5oPgor
CitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfVVNFUl9DT05URU5UX01BTkFH
RVIgICAgICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2dldF90eXBlKCkpCisj
ZGVmaW5lIFdFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUihvYmopICAgICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFO
QUdFUiwgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJf
Q09OVEVOVF9NQU5BR0VSKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUo
KG9iaiksIFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSKSkKKyNkZWZpbmUgV0VCS0lU
X1VTRVJfQ09OVEVOVF9NQU5BR0VSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNT
X0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSLCBXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXJDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19VU0VSX0NPTlRFTlRf
TUFOQUdFUl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBX
RUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUikpCisjZGVmaW5lIFdFQktJVF9VU0VSX0NP
TlRFTlRfTUFOQUdFUl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1Mo
KG9iaiksICBXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUiwgV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyICAgICAgICBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXI7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3MgICBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJDbGFz
czsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlIFdlYktp
dFVzZXJDb250ZW50TWFuYWdlclByaXZhdGU7CisKKworc3RydWN0IF9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisg
ICAgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBf
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRf
Y2xhc3M7CisKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lk
ICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZl
ZDIpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisK
KworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2dldF90eXBl
ICAgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIgKgord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldyAgICAgICAgICAgICAgICAg
ICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfYWRkX3N0eWxlX3NoZWV0ICAgICAgICAgKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqbWFu
YWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0VXNlclN0eWxlU2hlZXQgICAgICpzdHlsZXNoZWV0KTsKK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzIChX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKm1hbmFnZXIpOworCitHX0VORF9ERUNMUworCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVz
ZXJDb250ZW50TWFuYWdlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzkxYTUz
NTdiNDE5MjE5Y2Y2NmRmYzc2YmRjMmQxNjRmYjNiNjVjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJp
dmF0ZS5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlh
IFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmbmRlZiBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlX2gKKyNkZWZpbmUg
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5oIgorCitXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiB3ZWJraXRVc2Vy
Q29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIqKTsKKworI2VuZGlmIC8vIFdlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlckNvbnRlbnRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVc2VyQ29udGVudFByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mzk1OGFiY2EzZDk2OWRmOTk5
ZjIwNGQ5ZjY1NDQyNTNjMzM3ZDBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlLmgKQEAgLTAsMCArMSwy
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktp
dFVzZXJDb250ZW50UHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdFVzZXJDb250ZW50UHJpdmF0ZV9o
CisKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudC5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9V
c2VyU3R5bGVTaGVldC5oPgorCitjb25zdCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCYgd2Via2l0
VXNlclN0eWxlU2hlZXRHZXRVc2VyU3R5bGVTaGVldChXZWJLaXRVc2VyU3R5bGVTaGVldCopOwor
CisjZW5kaWYgLy8gV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggNjI4
MDhiNzZjZWY4NmRhNzIzM2IxZDAyNjJhMmVjYzQ0YzFmMzI3Mi4uNzBkNGFjMTdlNTQ1YjliNTk4
Zjg1YTgxZmIxOGI5OWY3NTFlZTNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNp
bmNsdWRlICJXZWJLaXRTZWN1cml0eU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
VGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5o
IgorI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdHcm91cFByaXZhdGUuaCIKQEAgLTEw
NTAsMTIgKzEwNTEsMTMgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1
c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIHUKICAgICBjb250ZXh0LT5w
cml2LT51cmlTY2hlbWVSZXF1ZXN0cy5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKLXZv
aWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlZpZXdHcm91cCogd2Vi
Vmlld0dyb3VwLCBXZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykKK3ZvaWQgd2Via2l0V2ViQ29u
dGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlZpZXdHcm91cCogd2ViVmlld0dyb3VwLCBXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIqIHVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0V2ViVmlldyog
cmVsYXRlZFZpZXcpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VC
S0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldyk7CiAgICAgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAg
PSB3ZWJWaWV3R3JvdXAgPyB3ZWJraXRXZWJWaWV3R3JvdXBHZXRQYWdlR3JvdXAod2ViVmlld0dy
b3VwKSA6IDA7CiAgICAgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IHJlbGF0ZWRWaWV3ID8g
d2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHJlbGF0ZWRWaWV3
KSkgOiBudWxscHRyOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3
QmFzZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLCByZWxhdGVkUGFn
ZSk7CisgICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqIHVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5ID0gdXNlckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0VXNlckNvbnRlbnRNYW5hZ2Vy
R2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKSA6IG51bGxw
dHI7CisgICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYlZpZXdCYXNlLCBjb250
ZXh0LT5wcml2LT5jb250ZXh0LmdldCgpLCBwYWdlR3JvdXAsIHVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LCByZWxhdGVkUGFnZSk7CiAKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRX
ZWJWaWV3QmFzZUdldFBhZ2Uod2ViVmlld0Jhc2UpOwogICAgIGNvbnRleHQtPnByaXYtPndlYlZp
ZXdzLnNldChwYWdlLT5wYWdlSUQoKSwgd2ViVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAppbmRl
eCAwNjQ3NGExZWYwYWIzMjQyNDBiZTJmMTExMzA0MTRmYjIyOWUzZTE0Li43NmRjZDM2NTg2Y2E0
YzM5NjA4YjE2MGVhMGEzNDVmNmRkMzkwMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ29u
dGV4dC5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0V2ViVmlld0dyb3VwLmgiCiAjaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuaCIKQEAgLTQyLDcgKzQzLDcgQEAgV2ViS2l0OjpXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlciogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2Vy
KFcKIHZvaWQgd2Via2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktp
dFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBBUEk6OlVSTFJlcXVlc3Qq
KTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0
V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwogdm9pZCB3ZWJraXRXZWJD
b250ZXh0RGlkRmluaXNoTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqLCB1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKLXZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBh
Z2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2Vi
Vmlld0dyb3VwKiwgV2ViS2l0V2ViVmlldyopOwordm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRl
UGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBXZWJLaXRX
ZWJWaWV3R3JvdXAqLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRXZWJWaWV3Kik7
CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRXZWJWaWV3RGVzdHJveWVkKFdlYktpdFdlYkNvbnRleHQq
LCBXZWJLaXRXZWJWaWV3Kik7CiBXZWJLaXRXZWJWaWV3KiB3ZWJraXRXZWJDb250ZXh0R2V0V2Vi
Vmlld0ZvclBhZ2UoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiBX
ZWJLaXRXZWJWaWV3R3JvdXAqIHdlYmtpdFdlYkNvbnRleHRHZXREZWZhdWx0V2ViVmlld0dyb3Vw
KFdlYktpdFdlYkNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMGY4NTVlNTdiZjc1MTFhYWVlNmViMDJhOTkz
MDI3N2IyNzEwNjFlMy4uZjgyNmNlYTA3OWIxN2E3ZTk3NjY0MWI2MjI0MWQ0MGIyZGVlMjc3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAKQEAgLTEzMyw2ICsxMzMsNyBAQCBlbnVtIHsKICAgICBQUk9QX1dFQl9DT05URVhULAog
ICAgIFBST1BfUkVMQVRFRF9WSUVXLAogICAgIFBST1BfR1JPVVAsCisgICAgUFJPUF9VU0VSX0NP
TlRFTlRfTUFOQUdFUiwKICAgICBQUk9QX1RJVExFLAogICAgIFBST1BfRVNUSU1BVEVEX0xPQURf
UFJPR1JFU1MsCiAgICAgUFJPUF9GQVZJQ09OLApAQCAtMTcxLDYgKzE3Miw3IEBAIHN0cnVjdCBf
V2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIEdSZWZQdHI8V2ViS2l0U2V0dGluZ3M+IHNldHRp
bmdzOwogICAgIHVuc2lnbmVkIGxvbmcgc2V0dGluZ3NDaGFuZ2VkSGFuZGxlcklEOwogICAgIEdS
ZWZQdHI8V2ViS2l0V2ViVmlld0dyb3VwPiBncm91cDsKKyAgICBHUmVmUHRyPFdlYktpdFVzZXJD
b250ZW50TWFuYWdlcj4gdXNlckNvbnRlbnRNYW5hZ2VyOwogICAgIEdSZWZQdHI8V2ViS2l0V2lu
ZG93UHJvcGVydGllcz4gd2luZG93UHJvcGVydGllczsKIAogICAgIEdSZWZQdHI8R01haW5Mb29w
PiBtb2RhbExvb3A7CkBAIC01MDEsNyArNTAzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcgPSBXRUJLSVRfV0VCX1ZJRVcob2JqZWN0KTsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSog
cHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JX
ZWJWaWV3KHByaXYtPmNvbnRleHQsIHdlYlZpZXcsIHByaXYtPmdyb3VwLmdldCgpLCBwcml2LT5y
ZWxhdGVkVmlldyk7CisgICAgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHBy
aXYtPmNvbnRleHQsIHdlYlZpZXcsIHByaXYtPmdyb3VwLmdldCgpLCBwcml2LT51c2VyQ29udGVu
dE1hbmFnZXIuZ2V0KCksIHByaXYtPnJlbGF0ZWRWaWV3KTsKICAgICAvLyBUaGUgcmVsYXRlZCB2
aWV3IGlzIG9ubHkgdmFsaWQgZHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24uCiAgICAgcHJpdi0+cmVs
YXRlZFZpZXcgPSBudWxscHRyOwogCkBAIC01NDIsNiArNTQ0LDExIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHVlCiAgICAgICAgIHdlYlZpZXctPnByaXYtPmdyb3VwID0gZ3JvdXAgPyBXRUJLSVRf
V0VCX1ZJRVdfR1JPVVAoZ3JvdXApIDogMDsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNh
c2UgUFJPUF9VU0VSX0NPTlRFTlRfTUFOQUdFUjogeworICAgICAgICBncG9pbnRlciB1c2VyQ29u
dGVudE1hbmFnZXIgPSBnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpOworICAgICAgICB3ZWJWaWV3
LT5wcml2LT51c2VyQ29udGVudE1hbmFnZXIgPSB1c2VyQ29udGVudE1hbmFnZXIgPyBXRUJLSVRf
VVNFUl9DT05URU5UX01BTkFHRVIodXNlckNvbnRlbnRNYW5hZ2VyKSA6IG51bGxwdHI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFBST1BfWk9PTV9MRVZFTDoKICAgICAgICAgd2Vi
a2l0X3dlYl92aWV3X3NldF96b29tX2xldmVsKHdlYlZpZXcsIGdfdmFsdWVfZ2V0X2RvdWJsZSh2
YWx1ZSkpOwogICAgICAgICBicmVhazsKQEAgLTU2MSw2ICs1NjgsOSBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdW
YWx1ZSogdmFsdQogICAgIGNhc2UgUFJPUF9HUk9VUDoKICAgICAgICAgZ192YWx1ZV9zZXRfb2Jq
ZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdlYlZpZXcpKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX1VTRVJfQ09OVEVOVF9NQU5BR0VSOgorICAgICAgICBnX3Zh
bHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21h
bmFnZXIod2ViVmlldykpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfVElUTEU6CiAg
ICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2ViVmlldy0+cHJpdi0+dGl0bGUuZGF0
YSgpKTsKICAgICAgICAgYnJlYWs7CkBAIC02NzEsNiArNjgxLDIzIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNz
KQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFE
V1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwogCiAgICAgLyoqCisgICAgICogV2Vi
S2l0V2ViVmlldzp1c2VyLWNvbnRlbnQtbWFuYWdlcjoKKyAgICAgKgorICAgICAqIFRoZSAjV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyIG9mIHRoZSB2aWV3LgorICAgICAqCisgICAgICogU2luY2U6
IDIuNgorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAg
ICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9VU0VSX0NPTlRFTlRfTUFOQUdFUiwKKyAg
ICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgKKyAgICAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFu
YWdlciIsCisgICAgICAgICAgICBfKCJXZWJWaWV3IHVzZXIgY29udGVudCBtYW5hZ2VyIiksCisg
ICAgICAgICAgICBfKCJUaGUgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIG9mIHRoZSB2aWV3Iiks
CisgICAgICAgICAgICBXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUiwKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19Q
QVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6
dGl0bGU6CiAgICAgICoKICAgICAgKiBUaGUgbWFpbiBmcmFtZSBkb2N1bWVudCB0aXRsZSBvZiB0
aGlzICNXZWJLaXRXZWJWaWV3LiBJZgpAQCAtMTkyNCw2ICsxOTUxLDggQEAgR3RrV2lkZ2V0KiB3
ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0
KQogICogWW91IGNhbiBhbHNvIHVzZSB0aGlzIG1ldGhvZCB0byBpbXBsZW1lbnQgb3RoZXIgcHJv
Y2VzcyBtb2RlbHMgYmFzZWQgb24gJVdFQktJVF9QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09O
REFSWV9QUk9DRVNTRVMsCiAgKiBsaWtlIGZvciBleGFtcGxlLCBzaGFyaW5nIHRoZSBzYW1lIHdl
YiBwcm9jZXNzIGZvciBhbGwgdGhlIHZpZXdzIGluIHRoZSBzYW1lIHNlY3VyaXR5IGRvbWFpbi4K
ICAqCisgKiBUaGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWxsIGFsc28gaGF2ZSB0
aGUgc2FtZSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIGFzIEB3ZWJfdmlldy4KKyAqCiAgKiBS
ZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3
IHdpZGdldAogICoKICAqIFNpbmNlOiAyLjQKQEAgLTE5MzIsNyArMTk2MSwxMCBAQCBHdGtXaWRn
ZXQqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9yZWxhdGVkX3ZpZXcoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVco
d2ViVmlldyksIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIEdUS19XSURHRVQoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX1dFQl9WSUVXLCAicmVsYXRlZC12aWV3Iiwgd2ViVmlldywgbnVsbHB0cikp
OworICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklF
VywKKyAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgd2ViVmlldy0+cHJpdi0+dXNlckNv
bnRlbnRNYW5hZ2VyLmdldCgpLAorICAgICAgICAicmVsYXRlZC12aWV3Iiwgd2ViVmlldywKKyAg
ICAgICAgbnVsbHB0cikpOwogfQogCiAvKioKQEAgLTE5NTMsNiArMTk4NSwyNSBAQCBHdGtXaWRn
ZXQqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9ncm91cChXZWJLaXRXZWJWaWV3R3JvdXAqIGdy
b3VwKQogfQogCiAvKioKKyAqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRf
bWFuYWdlcjoKKyAqIEB1c2VyX2NvbnRlbnRfbWFuYWdlcjogYSAjV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyLgorICoKKyAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdFdlYlZpZXcgd2l0aCB0aGUgZ2l2
ZW4gI1dlYktpdFVzZXJDb250ZW50TWFuYWdlci4KKyAqIFRoZSBjb250ZW50IGxvYWRlZCBpbiB0
aGUgdmlldyBtYXkgYmUgYWZmZWN0ZWQgYnkgdGhlIGNvbnRlbnQgaW5qZWN0ZWQKKyAqIGluIHRo
ZSB2aWV3IGJ5IHRoZSB1c2VyIGNvbnRlbnQgbWFuYWdlci4KKyAqCisgKiBSZXR1cm5zOiBUaGUg
bmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWRnZXQKKyAqCisgKiBTaW5jZTogMi42Cisg
Ki8KK0d0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5h
Z2VyKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyKQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFOQUdFUih1c2Vy
Q29udGVudE1hbmFnZXIpLCBudWxscHRyKTsKKworICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNl
ckNvbnRlbnRNYW5hZ2VyLCBudWxscHRyKSk7Cit9CisKKy8qKgogICogd2Via2l0X3dlYl92aWV3
X2dldF9jb250ZXh0OgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKgpAQCAtMTk4
Niw2ICsyMDM3LDI0IEBAIFdlYktpdFdlYlZpZXdHcm91cCogd2Via2l0X3dlYl92aWV3X2dldF9n
cm91cChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogfQogCiAvKioKKyAqIHdlYmtpdF93ZWJfdmll
d19nZXRfdXNlcl9jb250ZW50X21hbmFnZXI6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqCisgKiBHZXRzIHRoZSB1c2VyIGNvbnRlbnQgbWFuYWdlciBhc3NvY2lhdGVkIHRvIEB3
ZWJfdmlldywgb3IgJU5VTEwgaWYgdGhlCisgKiB2aWV3IGRvZXMgbm90IGhhdmUgYW4gdXNlciBj
b250ZW50IG1hbmFnZXIuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dl
YktpdFVzZXJDb250ZW50TWFuYWdlciBhc3NvY2lhdGVkIHdpdGggdGhlIHZpZXcKKyAqCisgKiBT
aW5jZTogMi42CisgKi8KK1dlYktpdFVzZXJDb250ZW50TWFuYWdlciogd2Via2l0X3dlYl92aWV3
X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0
cik7CisKKyAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgp
OworfQorCisvKioKICAqIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaToKICAqIEB3ZWJfdmlldzog
YSAjV2ViS2l0V2ViVmlldwogICogQHVyaTogYW4gVVJJIHN0cmluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IDU0OWQyNTRjYzI2
ZWIzN2UyZmZlY2MwMWVkYTY3MDNkMjE5N2NjY2EuLjliZjJjYzU0NmJjNDU2MjMyYzA5N2VlNmY5
YmIyZjlmZWMyMDM3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdFNjcmlwdERpYWxvZy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2V0dGluZ3MuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2Vi
Q29udGV4dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViSW5zcGVjdG9yLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJSZXNvdXJjZS5oPgpAQCAtMjYwLDYgKzI2MSw5IEBAIHdl
YmtpdF93ZWJfdmlld19uZXdfd2l0aF9yZWxhdGVkX3ZpZXcgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcKIFdFQktJVF9BUEkgR3RrV2lkZ2V0ICoKIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0
aF9ncm91cCAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXdHcm91cCAgICAgICAg
Kmdyb3VwKTsKIAorV0VCS0lUX0FQSSBHdGtXaWRnZXQgKgord2Via2l0X3dlYl92aWV3X25ld193
aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
ICAqdXNlcl9jb250ZW50X21hbmFnZXIpOworCiBXRUJLSVRfQVBJIFdlYktpdFdlYkNvbnRleHQg
Kgogd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCkBAIC00NTUsNiArNDU5LDEw
IEBAIFdFQktJVF9BUEkgY2Fpcm9fc3VyZmFjZV90ICoKIHdlYmtpdF93ZWJfdmlld19nZXRfc25h
cHNob3RfZmluaXNoICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICAgICAgICAqcmVzdWx0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAg
ICAgICAgICAgICoqZXJyb3IpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJDb250ZW50TWFuYWdl
ciAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKIEdfRU5EX0RFQ0xTCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDcxYzdjZTVhZDJiMDI5N2QzYzRlMTMzNjQ3MWE1YWQx
MTA1ZjM5MTguLjk4ZGZmZDk5ZGIzNTQyMjk4OTYzZDZjNTg4ODVhNjM2YzdiODFiMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgorI2lu
Y2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVmll
d0Jhc2VJbnB1dE1ldGhvZEZpbHRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRp
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NsaXBib2FyZFV0aWxpdGllc0d0ay5oPgpAQCAtOTQx
LDEwICs5NDIsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUKICAgICBjb250YWluZXJDbGFz
cy0+Zm9yYWxsID0gd2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJGb3JhbGw7CiB9CiAKLVdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0
LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSkKK1dl
YktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJDb250ZXh0KiBjb250
ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkqIHVzZXJDb250ZW50Q29udHJvbGxlciwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSkKIHsK
ICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJ
RVdfQkFTRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVdfQkFTRSwgTlVMTCkpOwot
ICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJraXRXZWJWaWV3QmFzZSwgY29u
dGV4dCwgcGFnZUdyb3VwLCByZWxhdGVkUGFnZSk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VDcmVh
dGVXZWJQYWdlKHdlYmtpdFdlYlZpZXdCYXNlLCBjb250ZXh0LCBwYWdlR3JvdXAsIHVzZXJDb250
ZW50Q29udHJvbGxlciwgcmVsYXRlZFBhZ2UpOwogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFz
ZTsKIH0KIApAQCAtOTc3LDEzICs5NzgsMTQgQEAgc3RhdGljIHZvaWQgZGV2aWNlU2NhbGVGYWN0
b3JDaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKIH0KICNlbmRp
ZiAvLyBIQVZFKEdUS19TQ0FMRV9GQUNUT1IpCiAKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVh
dGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgV2ViQ29udGV4
dCogY29udGV4dCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIFdlYlBhZ2VQcm94eSogcmVsYXRl
ZFBhZ2UpCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3
QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91
cCogcGFnZUdyb3VwLCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRD
b250cm9sbGVyLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKQogewogICAgIFdlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2OwogCiAgICAgV2Vi
UGFnZUNvbmZpZ3VyYXRpb24gd2ViUGFnZUNvbmZpZ3VyYXRpb247CiAgICAgd2ViUGFnZUNvbmZp
Z3VyYXRpb24ucGFnZUdyb3VwID0gcGFnZUdyb3VwOwogICAgIHdlYlBhZ2VDb25maWd1cmF0aW9u
LnJlbGF0ZWRQYWdlID0gcmVsYXRlZFBhZ2U7CisgICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24udXNl
ckNvbnRlbnRDb250cm9sbGVyID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwogICAgIHByaXYtPnBh
Z2VQcm94eSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBhZ2VDbGllbnQsIHN0ZDo6
bW92ZSh3ZWJQYWdlQ29uZmlndXJhdGlvbikpOwogICAgIHByaXYtPnBhZ2VQcm94eS0+aW5pdGlh
bGl6ZVdlYlBhZ2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCBiOWMzOGMyNjU4NTI0
YjU2YWVlZmEyZWUzZDU1YThlOGFmOWQzM2U0Li5kZmUyMjg1ZTlhN2FhNzZmZWIzNGVlN2E5OGY5
MzYyYmYwMmJjNWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaApAQCAtMzQsMTAgKzM0LDEwIEBA
CiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKIAotV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYktpdDo6
V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpXZWJQYWdlUHJveHkq
KTsKK1dlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJLaXQ6Oldl
YkNvbnRleHQqLCBXZWJLaXQ6OldlYlBhZ2VHcm91cCosIFdlYktpdDo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkqLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwogR3RrSU1Db250ZXh0KiB3
ZWJraXRXZWJWaWV3QmFzZUdldElNQ29udGV4dChXZWJLaXRXZWJWaWV3QmFzZSopOwogV2ViS2l0
OjpXZWJQYWdlUHJveHkqIHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXZWJLaXRXZWJWaWV3QmFz
ZSopOwotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jh
c2UqLCBXZWJLaXQ6OldlYkNvbnRleHQqLCBXZWJLaXQ6OldlYlBhZ2VHcm91cCosIFdlYktpdDo6
V2ViUGFnZVByb3h5Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJL
aXRXZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdyb3Vw
KiwgV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSosIFdlYktpdDo6V2ViUGFn
ZVByb3h5Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRpcFRleHQoV2ViS2l0V2Vi
Vmlld0Jhc2UqLCBjb25zdCBjaGFyKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRp
cEFyZWEoV2ViS2l0V2ViVmlld0Jhc2UqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlRm9yd2FyZE5leHRLZXlFdmVudChXZWJLaXRXZWJWaWV3QmFzZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0dyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdHcm91cC5jcHAKaW5kZXggYjIxZTc5ZjY4M2RhN2VmZmQxOThkZGZjODJhMzdlOWJmM2Rj
MjRjMC4uYzhhNjUwN2E4ZTU5ODZmY2FkNmI2ODRiN2UzYmQ1OTliYjliMjA3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3Jv
dXAuY3BwCkBAIC0yMzYsNjMgKzIzNiwzIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2dyb3VwX3Nl
dF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwLCBXZWJLaXRTZXR0aW5nCiAgICAg
d2Via2l0V2ViVmlld0dyb3VwQXR0YWNoU2V0dGluZ3NUb1BhZ2VHcm91cChncm91cCk7CiAgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKGdyb3VwKSwgInNldHRpbmdzIik7CiB9Ci0KLXN0YXRp
YyBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IHRvQVBJQXJyYXkoY29uc3QgY2hhciogY29uc3QqIGxp
c3QpCi17Ci0gICAgaWYgKCFsaXN0KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFZlY3RvcjxS
ZWZQdHI8QVBJOjpPYmplY3Q+ID4gZW50cmllczsKLSAgICB3aGlsZSAoKmxpc3QpIHsKLSAgICAg
ICAgZW50cmllcy5hcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZUZyb21VVEY4U3RyaW5nKCpsaXN0
KSk7Ci0gICAgICAgIGxpc3QrKzsKLSAgICB9Ci0gICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0
ZShzdGQ6Om1vdmUoZW50cmllcykpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfdmlld19ncm91
cF9hZGRfdXNlcl9zdHlsZV9zaGVldDoKLSAqIEBncm91cDogYSAjV2ViS2l0V2ViVmlld0dyb3Vw
Ci0gKiBAc291cmNlOiB0aGUgc291cmNlIG9mIHRoZSBzdHlsZV9zaGVldCB0byBpbmplY3QKLSAq
IEBiYXNlX3VyaTogKGFsbG93LW5vbmUpOiB0aGUgYmFzZSBVUkkgdG8gdXNlIHdoZW4gcHJvY2Vz
c2luZyB0aGUgc3R5bGVfc2hlZXQgY29udGVudHMgb3IgJU5VTEwgZm9yIGFib3V0OmJsYW5rCi0g
KiBAd2hpdGVsaXN0OiAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25lKTogYSB3
aGl0ZWxpc3Qgb2YgVVJJIHBhdHRlcm5zIG9yICVOVUxMCi0gKiBAYmxhY2tsaXN0OiAoYXJyYXkg
emVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25lKTogYSBibGFja2xpc3Qgb2YgVVJJIHBhdHRl
cm5zIG9yICVOVUxMCi0gKiBAaW5qZWN0ZWRfZnJhbWVzOiBhICNXZWJLaXRJbmplY3RlZENvbnRl
bnRGcmFtZXMgZGVzY3JpYmluZyB0byB3aGljaCBmcmFtZXMgdGhlIHN0eWxlX3NoZWV0IHNob3Vs
ZCBhcHBseQotICoKLSAqIEluamVjdCBhbiBleHRlcm5hbCBzdHlsZSBzaGVldCBpbnRvIHBhZ2Vz
LiBJdCBpcyBwb3NzaWJsZSB0byBvbmx5IGFwcGx5IHRoZSBzdHlsZSBzaGVldAotICogdG8gc29t
ZSBVUklzIGJ5IHBhc3Npbmcgbm9uLW51bGwgdmFsdWVzIGZvciBAd2hpdGVsaXN0IG9yIEBibGFj
a2xpc3QuIFBhc3NpbmcgYSAlTlVMTAotICogd2hpdGVsaXN0IGltcGxpZXMgdGhhdCBhbGwgVVJJ
cyBhcmUgb24gdGhlIHdoaXRlbGlzdC4gVGhlIHN0eWxlIHNoZWV0IGlzIGFwcGxpZWQgaWYgYSBV
UkkgbWF0Y2hlcwotICogdGhlIHdoaXRlbGlzdCBhbmQgbm90IHRoZSBibGFja2xpc3QuIFVSSSBw
YXR0ZXJucyBtdXN0IGJlIG9mIHRoZSBmb3JtIFtwcm90b2NvbF06Ly9baG9zdF0vW3BhdGhdCi0g
KiB3aGVyZSB0aGUgaG9zdCBhbmQgcGF0aCBjb21wb25lbnRzIGNhbiBjb250YWluIHRoZSB3aWxk
Y2FyZCBjaGFyYWN0ZXIgKCcqJykgdG8gcmVwcmVzZW50IHplcm8KLSAqIG9yIG1vcmUgb3RoZXIg
Y2hhcmFjdGVycy4KLSAqLwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3VzZXJfc3R5
bGVfc2hlZXQoV2ViS2l0V2ViVmlld0dyb3VwKiBncm91cCwgY29uc3QgY2hhciogc291cmNlLCBj
b25zdCBjaGFyKiBiYXNlVVJJLCBjb25zdCBjaGFyKiBjb25zdCogd2hpdGVsaXN0LCBjb25zdCBj
aGFyKiBjb25zdCogYmxhY2tsaXN0LCBXZWJLaXRJbmplY3RlZENvbnRlbnRGcmFtZXMgaW5qZWN0
ZWRGcmFtZXMpCi17Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVdfR1JP
VVAoZ3JvdXApKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNvdXJjZSk7Ci0KLSAgICBSZWZQdHI8
QVBJOjpBcnJheT4gd2ViV2hpdGVsaXN0ID0gdG9BUElBcnJheSh3aGl0ZWxpc3QpOwotICAgIFJl
ZlB0cjxBUEk6OkFycmF5PiB3ZWJCbGFja2xpc3QgPSB0b0FQSUFycmF5KGJsYWNrbGlzdCk7Ci0K
LSAgICAvLyBXZSBhbHdheXMgdXNlIFVzZXJTdHlsZVVzZXJMZXZlbCB0byBtYXRjaCB0aGUgYmVo
YXZpb3Igb2YgV0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldC4KLSAgICBncm91cC0+cHJpdi0+
cGFnZUdyb3VwLT5hZGRVc2VyU3R5bGVTaGVldCgKLSAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChz
b3VyY2UpLAotICAgICAgICBTdHJpbmc6OmZyb21VVEY4KGJhc2VVUkkpLAotICAgICAgICB3ZWJX
aGl0ZWxpc3QuZ2V0KCksCi0gICAgICAgIHdlYkJsYWNrbGlzdC5nZXQoKSwKLSAgICAgICAgdG9X
ZWJDb3JlVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksCi0gICAgICAg
IFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl92
aWV3X2dyb3VwX3JlbW92ZV9hbGxfdXNlcl9zdHlsZV9zaGVldHM6Ci0gKiBAZ3JvdXA6IGEgI1dl
YktpdFdlYlZpZXdHcm91cAotICoKLSAqIFJlbW92ZSBhbGwgc3R5bGUgc2hlZXRzIHByZXZpb3Vz
bHkgaW5qZWN0ZWQgaW50byB0aGlzICNXZWJLaXRXZWJWaWV3R3JvdXAgCi0gKiB2aWEgd2Via2l0
X3dlYl92aWV3X2dyb3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0KCkuCi0gKi8KLXZvaWQgd2Via2l0
X3dlYl92aWV3X2dyb3VwX3JlbW92ZV9hbGxfdXNlcl9zdHlsZV9zaGVldHMoV2ViS2l0V2ViVmll
d0dyb3VwKiBncm91cCkKLXsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
V19HUk9VUChncm91cCkpOwotICAgIGdyb3VwLT5wcml2LT5wYWdlR3JvdXAtPnJlbW92ZUFsbFVz
ZXJTdHlsZVNoZWV0cygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuaAppbmRleCA2ODVmMTk5MDRlZGNmZDljNmI1YWRi
MGI1M2JlMDdhNzQ1NjM1OGQ4Li44MzZlYTE3MzRmMzY4OTIwYzQ4Y2MzZjQ0YjI3YmIyOWJmZWU1
ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3R3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3JvdXAuaApAQCAtODQsMTcgKzg0LDYgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJr
aXRfd2ViX3ZpZXdfZ3JvdXBfc2V0X3NldHRpbmdzICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
Vmlld0dyb3VwICAgICAgICAgICpncm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRTZXR0aW5ncyAgICAgICAgICAgICAgKnNldHRp
bmdzKTsKIAotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3VzZXJf
c3R5bGVfc2hlZXQgICAgICAgICAoV2ViS2l0V2ViVmlld0dyb3VwICAgICAgICAgICAqZ3JvdXAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgICAgICAgICAgICAqc291cmNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAg
ICAgKmJhc2VfdXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdjaGFyICogY29uc3QgICAgICAgICAgKndoaXRlbGlzdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAqIGNvbnN0ICAgICAgICAgICpibGFja2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SW5qZWN0ZWRDb250ZW50RnJhbWVzICAg
aW5qZWN0ZWRfZnJhbWVzKTsKLQotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfZ3Jv
dXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyAoV2ViS2l0V2ViVmlld0dyb3VwICAgICAg
ICAgICpncm91cCk7Ci0KIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQKaW5kZXggNTQ4MTNjOTAwYWQ2ZWMyZjExN2IxNjIxYjQxODgwYzIxZGM5ZGNhZS4uMDYz
Y2I2NzViYmZhOTJhOGQ1NzBjM2IwMWY2ODVmYjAyY2U1NmJlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2Vj
dGlvbnMudHh0CkBAIC03Myw2ICs3Myw0NSBAQCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3R5cGUK
IDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRVc2VyQ29udGVudDwvRklMRT4K
KzxUSVRMRT5XZWJLaXRVc2VyQ29udGVudDwvVElUTEU+CitXZWJLaXRVc2VyU3R5bGVTaGVldAor
V2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcworV2ViS2l0VXNlclN0eWxlTGV2ZWwKK3dl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZgord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfdW5yZWYK
K3dlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dF
QktJVF9UWVBFX1VTRVJfU1RZTEVfU0hFRVQKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtp
dF91c2VyX3N0eWxlX3NoZWV0X2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJ
TEU+V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPC9GSUxFPgorPFRJVExFPldlYktpdFVzZXJDb250
ZW50TWFuYWdlcjwvVElUTEU+CitXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIKK3dlYmtpdF91c2Vy
X2NvbnRlbnRfbWFuYWdlcl9uZXcKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5
bGVfc2hlZXQKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3N0eWxlX3No
ZWV0cworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFO
QUdFUgorV0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VSX0NMQVNTCitXRUJLSVRfVFlQRV9V
U0VSX0NPTlRFTlRfTUFOQUdFUgorV0VCS0lUX1VTRVJfQ09OVEVOVF9NQU5BR0VSCitXRUJLSVRf
VVNFUl9DT05URU5UX01BTkFHRVJfQ0xBU1MKK1dFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUl9H
RVRfQ0xBU1MKK1dlYktpdFVzZXJDb250ZW50TWFuYWdlckNsYXNzCisKKzxTVUJTRUNUSU9OIFBy
aXZhdGU+CitXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlCit3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJL
aXRXZWJWaWV3PC9GSUxFPgogPFRJVExFPldlYktpdFdlYlZpZXc8L1RJVExFPgogV2ViS2l0V2Vi
VmlldwpAQCAtOTYsOCArMTM1LDEwIEBAIHdlYmtpdF93ZWJfdmlld19uZXcKIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92
aWV3CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfZ3JvdXAKK3dlYmtpdF93ZWJfdmlld19uZXdf
d2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcgogd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0CiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2dyb3VwCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVu
dF9tYW5hZ2VyCiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkKIHdlYmtpdF93ZWJfdmlld19sb2Fk
X2h0bWwKIHdlYmtpdF93ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1sCkBAIC0xMDI1LDggKzEw
NjYsNiBAQCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfbmV3CiB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBf
Z2V0X25hbWUKIHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfc2V0dGluZ3MKIHdlYmtpdF93ZWJf
dmlld19ncm91cF9zZXRfc2V0dGluZ3MKLXdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9z
dHlsZV9zaGVldAotd2Via2l0X3dlYl92aWV3X2dyb3VwX3JlbW92ZV9hbGxfdXNlcl9zdHlsZV9z
aGVldHMKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJWaWV3R3JvdXBDbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IDQ2NDkwYTJl
MDE0ZDYzZmFhYjBhMzA3MmM5MDM4NDkzNDQ4YTIzMTIuLjUyY2NhZDMwNjJiZThjNTgzZTA1YmVl
NmFjNzk1ZTkwNjg0ZjUxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93
ZWJraXQyLmgKQEAgLTYxLDYgKzYxLDggQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJl
cXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlc3BvbnNlLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRVc2VyQ29udGVudC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRWZXJzaW9uLmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJJ
bnNwZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmlu
ZGV4IGYwZGQ2Yzc5MjQwM2M4OWFjODgxOTg4YjNiMjlkM2M1NjMwYmU1YzUuLjcxMDVmYTQ3MTM5
M2YxMzQ1MWM2YTk3YWEwYmM0ZjhmZGQ1NTU5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmNwcApAQCAtOTcsNiArOTcsMjIgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMoKQogICAgICAgICBwcm9jZXNz
QW5kQ291bnQua2V5LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMoKSwgbV9pZGVudGlmaWVyKTsKIH0KIAor
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQoV2Vi
Q29yZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0eWxlU2hlZXQpCit7CisgICAgbV91c2VyU3R5bGVT
aGVldHMuYXBwZW5kKHN0ZDo6bW92ZSh1c2VyU3R5bGVTaGVldCkpOworCisgICAgZm9yIChhdXRv
JiBwcm9jZXNzQW5kQ291bnQgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzc0FuZENvdW50
LmtleS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7IG1fdXNlclN0eWxlU2hlZXRzLmxhc3QoKSB9KSwgbV9p
ZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKK3sKKyAgICBtX3VzZXJTdHlsZVNoZWV0cy5jbGVhcigp
OworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzQW5kQ291bnQgOiBtX3Byb2Nlc3NlcykKKyAgICAg
ICAgcHJvY2Vzc0FuZENvdW50LmtleS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpLCBtX2lkZW50
aWZpZXIpOworfQorCiBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2Vy
U2NyaXB0TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIqIGhhbmRsZXIpCiB7
CiAgICAgZm9yIChhdXRvJiBleGlzdGluZ0hhbmRsZXIgOiBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVy
cy52YWx1ZXMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRl
eCBjZmY2ZjI5ZDQ4NjRlMGE3Njg0OWZmYWYyZWEwNDQ5ZDc0ZGIwODQ5Li43ZGMwNTk1YWEyYjdj
MmRlODJiZmMwODMzNGExNzNjNmI5NDFkYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBVc2VyU2NyaXB0OworY2xhc3MgVXNlclN0eWxlU2hl
ZXQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTksNiArNjAsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQpOwogICAgIHZvaWQgcmVt
b3ZlQWxsVXNlclNjcmlwdHMoKTsKIAorICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7
CisKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIHdhcyBhIG5hbWUgY29uZmxpY3QuCiAg
ICAgYm9vbCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIqKTsKICAgICB2b2lkIHJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3Ry
aW5nJik7CkBAIC03NSw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaENvdW50ZWRTZXQ8V2Vi
UHJvY2Vzc1Byb3h5Kj4gbV9wcm9jZXNzZXM7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6VXNlclNj
cmlwdD4gbV91c2VyU2NyaXB0czsKKyAgICBWZWN0b3I8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+
IG1fdXNlclN0eWxlU2hlZXRzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcj4+IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNw
cAppbmRleCA1NzliMDk5Zjg0ZDIwNjg3MTczNTBkMjI2NGU3ZjkwODUxNDJhNzQzLi4xZWRhN2U4
ZWZlODZkY2ExNWM4NzNiMTMyOGYwYTE5NmE2NDllYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtNjIsNyAr
NjIsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUlu
c3BlY3RvclBhZ2UoKQogewogICAgIEFTU0VSVChtX3BhZ2UpOwogICAgIEFTU0VSVCghbV9pbnNw
ZWN0b3JWaWV3KTsKLSAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZp
ZXdCYXNlQ3JlYXRlKCZwYWdlKCktPnByb2Nlc3MoKS5jb250ZXh0KCksIGluc3BlY3RvclBhZ2VH
cm91cCgpLCBtX3BhZ2UpKTsKKyAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtp
dFdlYlZpZXdCYXNlQ3JlYXRlKCZwYWdlKCktPnByb2Nlc3MoKS5jb250ZXh0KCksIGluc3BlY3Rv
clBhZ2VHcm91cCgpLCBudWxscHRyLCBtX3BhZ2UpKTsKICAgICBnX29iamVjdF9hZGRfd2Vha19w
b2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9yVmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
PigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFn
ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX2luc3BlY3RvclZpZXcpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCBkOWRjMTVjNTg0NTViOTA4OTI3NTQ2ZjA2NmQ4
Mjk1ZDEzNTNmNjkyLi4yNGYyMTQ4MTVhNDNjZGIxMTBlZjUwYTQ3MDkyNWI1ZDQ0NWJjOWZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nj
cmlwdENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxlU2hlZXQuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCkBA
IC05Miw2ICs5MywxOSBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxs
VXNlclNjcmlwdHMoKQogICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVVc2VyU2Ny
aXB0cyhtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKK3ZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVzZXJT
dHlsZVNoZWV0PiYgdXNlclN0eWxlU2hlZXRzKQoreworICAgIGZvciAoY29uc3QgYXV0byYgdXNl
clN0eWxlU2hlZXQgOiB1c2VyU3R5bGVTaGVldHMpIHsKKyAgICAgICAgbV91c2VyQ29udGVudENv
bnRyb2xsZXItPmFkZFVzZXJTdHlsZVNoZWV0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLAorICAg
ICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4odXNlclN0
eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKKyAgICB9Cit9CisKK3ZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQorewor
ICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVVc2VyU3R5bGVTaGVldHMobWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkpOworfQorCiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVS
UykKIGNsYXNzIFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eT4sIHB1YmxpYyBX
ZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yOjpDbGllbnQgewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKaW5kZXggNGM4NDY5OTY0Y2ZmZDBmNjlhOWM2
N2VhZmFkZmQwNWVmYTU1Njk5Ny4uNjM5YzIwZTAwMGFlZDc5OGMyYjczY2QxZjA0Y2ZiNmMyYjVk
NjRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCkBAIC01NCw2ICs1NCw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
VXNlclNjcmlwdD4mIHVzZXJTY3JpcHRzKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRz
KCk7CiAKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
VXNlclN0eWxlU2hlZXQ+JiB1c2VyU3R5bGVTaGVldHMpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNl
clN0eWxlU2hlZXRzKCk7CisKICAgICB2b2lkIGFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMo
Y29uc3QgVmVjdG9yPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlPiYgc2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzKTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih1aW50
NjRfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMu
aW4KaW5kZXggZDBjZmMxZjc2Njc4MWZjMGQ3Mzc1MTZjYjJhYjUyYmM5NTY1Mzk3NC4uYTkzZmE0
N2MwNjg0ODdmNWNhZDZlNWFlMmY1ZWUxNmVmYmI1MDE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTI3LDYgKzI3LDkgQEAgbWVzc2Fn
ZXMgLT4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIHsKICAgICBBZGRVc2VyU2NyaXB0cyhWZWN0
b3I8V2ViQ29yZTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdHMpOwogICAgIFJlbW92ZUFsbFVzZXJT
Y3JpcHRzKCkKIAorICAgIEFkZFVzZXJTdHlsZVNoZWV0cyhWZWN0b3I8V2ViQ29yZTo6VXNlclN0
eWxlU2hlZXQ+IHVzZXJTdHlsZVNoaGV0cyk7CisgICAgUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRz
KCkKKwogICAgIEFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoVmVjdG9yPFdlYktpdDo6V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXJIYW5kbGU+IHNjcmlwdE1lc3NhZ2VIYW5kbGVycyk7CiAgICAg
UmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpCiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2EyMTA2
MWZhZTI4ZDY1NWI0ZmQ5M2M5MDA2NGFlZWE5YjE0ZGY2Ny4uYmQ4N2ZmNGM3MDRkNDVmYjY2Mzcx
ZmZlMzExZjhmYzJjZTkzZTVjYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE0LTA3LTAzICBBZHJpYW4gUGVyZXog
ZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gTW92ZSB1c2Vy
IHN0eWxlIHNoZWV0IEFQSSBvdXQgb2YgV2ViS2l0V2ViVmlld0dyb3VwCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ1NTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVzIHRlc3RpbmcgdXNlciBz
dHlsZSBzaGVldCBpbmplY3Rpb24gZnJvbQorICAgICAgICBUZXN0V2ViS2l0V2ViVmlld0dyb3Vw
IGFuZCBtb3ZlcyB0aGF0IGludG8gYSBuZXcKKyAgICAgICAgVGVzdFdlYktpdFVzZXJDb250ZW50
TWFuYWdlciwgYWRhcHRpbmcgdGhlIGV4aXN0aW5nIHRlc3RzIHRvIHRoZSBuZXcKKyAgICAgICAg
QVBJLiBBbHNvLCBpdCBjb250YWlucyBhIG5ldyB0ZXN0IGNhc2UgZm9yCisgICAgICAgIHdlYmtp
dF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcigpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLmNwcDogQWRkZWQuCisgICAgICAgIChVc2VyQ29udGVudE1hbmFnZXJUZXN0OjpVc2VyQ29u
dGVudE1hbmFnZXJUZXN0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3TmV3V2l0aFVzZXJDb250ZW50
TWFuYWdlcik6CisgICAgICAgIChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCk6Cisg
ICAgICAgIChmaWxsVVJMTGlzdEZyb21QYXRocyk6CisgICAgICAgIChyZW1vdmVPbGRJbmplY3Rl
ZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyk6CisgICAgICAgICh0ZXN0VXNlckNvbnRlbnRNYW5h
Z2VySW5qZWN0ZWRTdHlsZVNoZWV0KToKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAg
ICAgKGJlZm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwOgorICAgICAg
ICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFmdGVyQWxsKToKKyAgICAgICAgKGlzU3R5bGVTaGVl
dEluamVjdGVkRm9yVVJMQXRQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKGZpbGxVUkxMaXN0RnJv
bVBhdGhzKTogRGVsZXRlZC4KKyAgICAgICAgKHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNB
bmRSZXNldExpc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3RXZWJWaWV3R3JvdXBJbmplY3Rl
ZFN0eWxlU2hlZXQpOiBEZWxldGVkLgorICAgICAgICAoc2VydmVyQ2FsbGJhY2spOiBEZWxldGVk
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3Bw
OgorICAgICAgICAoV2ViVmlld1Rlc3Q6OldlYlZpZXdUZXN0KToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0Lmg6CisKIDIwMTQtMDctMDMgIEdlcmdv
IEJhbG9naCAgPGdiYWxvZ2gudS1zemVnZWRAcGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAgICAg
ICBBZGQgb3B0aW9uIHRvIHNwZWNpZnkganNjIGFyZ3MgaW4gcnVuLXN1bnNwaWRlci4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4
dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dApp
bmRleCBmNjZiNzMwYTg4YjY1MDFmZmI4ZDJmMTRiOWIxYjMxNjE3OGY1OTM1Li4xNzJiMzhhYTA4
NzQ3MmIxMzUxMzFhNjI4NDMxNGEwNGQ5NDlkYjVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CkBAIC0xMTIsNiArMTEyLDcg
QEAgQUREX1dLMl9URVNUKFRlc3RXZWJWaWV3RWRpdG9yIFRlc3RXZWJWaWV3RWRpdG9yLmNwcCkK
IEFERF9XSzJfVEVTVChUZXN0V2ViS2l0V2ViVmlld0dyb3VwIFRlc3RXZWJLaXRXZWJWaWV3R3Jv
dXAuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRXZWJDb250ZXh0IFRlc3RXZWJLaXRXZWJD
b250ZXh0LmNwcCkKIEFERF9XSzJfVEVTVChUZXN0V2ViS2l0V2ViVmlldyBUZXN0V2ViS2l0V2Vi
Vmlldy5jcHApCitBRERfV0syX1RFU1QoVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlciBUZXN0
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCkKIAogaWYgKEFUU1BJX0ZPVU5EKQogICAgIEFE
RF9XSzJfVEVTVChBY2Nlc3NpYmlsaXR5VGVzdFNlcnZlciBBY2Nlc3NpYmlsaXR5VGVzdFNlcnZl
ci5jcHApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTA0ZTM2N2JjZTI0MTlhZmQ4ODdmNTY5ZjVkNDFiNjBmZjg0ZDVlOQotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2Vi
S2l0VGVzdFNlcnZlci5oIgorI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5jbHVkZSA8Y3N0
ZGFyZz4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+
CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorCitjbGFzcyBVc2VyQ29udGVudE1h
bmFnZXJUZXN0IDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJf
VEVTVF9GSVhUVVJFKFVzZXJDb250ZW50TWFuYWdlclRlc3QpOworCisgICAgVXNlckNvbnRlbnRN
YW5hZ2VyVGVzdCgpCisgICAgICAgIDogV2ViVmlld1Rlc3QoV0VCS0lUX1dFQl9WSUVXKHdlYmtp
dF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfbmV3KCkpKSkKKyAgICB7CisgICAgICAgIC8vIEEgcmVmZXJlbmNlIGlzIGxl
YWtlZCB3aGVuIHBhc3NpbmcgdGhlIHJlc3VsdCBvZiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfbmV3KCkKKyAgICAgICAgLy8gZGlyZWN0bHkgdG8gd2Via2l0X3dlYl92aWV3X25ld193aXRo
X3VzZXJfY29udGVudF9tYW5hZ2VyKCkgYWJvdmUuIEFkb3B0aW5nIHRoZQorICAgICAgICAvLyBy
ZWZlcmVuY2UgaGVyZSBhdm9pZHMgdGhlIGxlYWsuCisgICAgICAgIG1fdXNlckNvbnRlbnRNYW5h
Z2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIo
bV93ZWJWaWV3KSk7CisgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNo
ZXMoR19PQkpFQ1QobV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCkpKTsKKyAgICB9CisKKyAgICBH
UmVmUHRyPFdlYktpdFVzZXJDb250ZW50TWFuYWdlcj4gbV91c2VyQ29udGVudE1hbmFnZXI7Cit9
OworCitzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKKworLy8gVGhlc2UgYXJlIGFs
bCBoZXJlIHNvIHRoYXQgdGhleSBjYW4gYmUgY2hhbmdlZCBlYXNpbHksIGlmIG5lY2Vzc2FyeS4K
K3N0YXRpYyBjb25zdCBjaGFyKiBrU3R5bGVTaGVldEhUTUwgPSAiPGh0bWw+PGRpdiBpZD1cInN0
eWxlZEVsZW1lbnRcIj5Td2VldCBzdHlsZXohPC9kaXY+PC9odG1sPiI7CitzdGF0aWMgY29uc3Qg
Y2hhcioga0luamVjdGVkU3R5bGVTaGVldCA9ICIjc3R5bGVkRWxlbWVudCB7IGZvbnQtd2VpZ2h0
OiBib2xkOyB9IjsKK3N0YXRpYyBjb25zdCBjaGFyKiBrU3R5bGVTaGVldFRlc3RTY3JpcHQgPSAi
Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3R5bGVkRWxlbWVudCcp
KVsnZm9udC13ZWlnaHQnXSI7CitzdGF0aWMgY29uc3QgY2hhcioga1N0eWxlU2hlZXRUZXN0U2Ny
aXB0UmVzdWx0ID0gImJvbGQiOworCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05ld1dpdGhVc2Vy
Q29udGVudE1hbmFnZXIoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBHUmVmUHRy
PFdlYktpdFVzZXJDb250ZW50TWFuYWdlcj4gdXNlckNvbnRlbnRNYW5hZ2VyMSA9IGFkb3B0R1Jl
Zih3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCkpOworICAgIHRlc3QtPmFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2Vy
MS5nZXQoKSkpOworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzEgPSBXRUJLSVRf
V0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKHVz
ZXJDb250ZW50TWFuYWdlcjEuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcxLmdldCgpKSA9PSB1c2VyQ29udGVudE1h
bmFnZXIxLmdldCgpKTsKKworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzIgPSBX
RUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBnX2Fzc2VydCh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcyLmdldCgpKSAhPSB1
c2VyQ29udGVudE1hbmFnZXIxLmdldCgpKTsKK30KKworc3RhdGljIGJvb2wgaXNTdHlsZVNoZWV0
SW5qZWN0ZWRGb3JVUkxBdFBhdGgoV2ViVmlld1Rlc3QqIHRlc3QsIGNvbnN0IGNoYXIqIHBhdGgp
Cit7CisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKHBhdGgpLmRhdGEo
KSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBHVW5pcXVlT3V0
UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlw
dFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChrU3R5bGVT
aGVldFRlc3RTY3JpcHQsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnQoamF2YXNjcmlw
dFJlc3VsdCk7CisgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gcmVzdWx0U3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5n
KGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICByZXR1cm4gIWdfc3RyY21wMChyZXN1bHRTdHJpbmcu
Z2V0KCksIGtTdHlsZVNoZWV0VGVzdFNjcmlwdFJlc3VsdCk7Cit9CisKK3N0YXRpYyB2b2lkIGZp
bGxVUkxMaXN0RnJvbVBhdGhzKGNoYXIqKiBsaXN0LCBjb25zdCBjaGFyKiBwYXRoLCAuLi4pCit7
CisgICAgdmFfbGlzdCBhcmd1bWVudExpc3Q7CisgICAgdmFfc3RhcnQoYXJndW1lbnRMaXN0LCBw
YXRoKTsKKworICAgIGludCBpID0gMDsKKyAgICB3aGlsZSAocGF0aCkgeworICAgICAgICAvLyBG
SVhNRTogV2UgbXVzdCB1c2UgYSB3aWxkY2FyZCBmb3IgdGhlIGhvc3QgaGVyZSB1bnRpbCBodHRw
Oi8vd2tidWcuY29tLzExMjQ3NiBpcyBmaXhlZC4KKyAgICAgICAgLy8gVW50aWwgdGhhdCB0aW1l
IHBhdHRlcm5zIHdpdGggcG9ydCBudW1iZXJzIGluIHRoZW0gd2lsbCBub3QgcHJvcGVybHkgbWF0
Y2ggVVJMcyB3aXRoIHBvcnQgbnVtYmVycy4KKyAgICAgICAgbGlzdFtpKytdID0gZ19zdHJkdXBf
cHJpbnRmKCJodHRwOi8vKi8lcyoiLCBwYXRoKTsKKyAgICAgICAgcGF0aCA9IHZhX2FyZyhhcmd1
bWVudExpc3QsIGNvbnN0IGNoYXIqKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHJlbW92ZU9s
ZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKFdlYktpdFVzZXJDb250ZW50TWFuYWdl
ciogdXNlckNvbnRlbnRNYW5hZ2VyLCBjaGFyKiogd2hpdGVsaXN0LCBjaGFyKiogYmxhY2tsaXN0
KQoreworICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3N0eWxlX3No
ZWV0cyh1c2VyQ29udGVudE1hbmFnZXIpOworCisgICAgd2hpbGUgKCp3aGl0ZWxpc3QpIHsKKyAg
ICAgICAgZ19mcmVlKCp3aGl0ZWxpc3QpOworICAgICAgICAqd2hpdGVsaXN0ID0gMDsKKyAgICAg
ICAgd2hpdGVsaXN0Kys7CisgICAgfQorCisgICAgd2hpbGUgKCpibGFja2xpc3QpIHsKKyAgICAg
ICAgZ19mcmVlKCpibGFja2xpc3QpOworICAgICAgICAqYmxhY2tsaXN0ID0gMDsKKyAgICAgICAg
YmxhY2tsaXN0Kys7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5h
Z2VySW5qZWN0ZWRTdHlsZVNoZWV0KFVzZXJDb250ZW50TWFuYWdlclRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCit7CisgICAgY2hhciogd2hpdGVsaXN0WzNdID0geyAwLCAwLCAwIH07CisgICAg
Y2hhciogYmxhY2tsaXN0WzNdID0geyAwLCAwLCAwIH07CisKKyAgICByZW1vdmVPbGRJbmplY3Rl
ZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQo
KSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOworCisgICAgLy8gV2l0aG91dCBhIHdoaXRlbGlzdCBv
ciBhIGJsYWNrbGlzdCBhbGwgVVJMcyBzaG91bGQgaGF2ZSB0aGUgaW5qZWN0ZWQgc3R5bGUgc2hl
ZXQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJhbmRvbVBhdGggPSAic29tZXJhbmRvbXBhdGgi
OworICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBy
YW5kb21QYXRoKSk7CisgICAgV2ViS2l0VXNlclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSB3ZWJr
aXRfdXNlcl9zdHlsZV9zaGVldF9uZXcoa0luamVjdGVkU3R5bGVTaGVldCwgV0VCS0lUX1VTRVJf
Q09OVEVOVF9JTkpFQ1RfQUxMX0ZSQU1FUywgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfVVNFUiwg
bnVsbHB0ciwgbnVsbHB0cik7CisgICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9z
dHlsZV9zaGVldCh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgc3R5bGVTaGVldCk7
CisgICAgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfdW5yZWYoc3R5bGVTaGVldCk7CisgICAgZ19h
c3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkp
OworCisgICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHModGVzdC0+
bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKKworICAg
IGZpbGxVUkxMaXN0RnJvbVBhdGhzKGJsYWNrbGlzdCwgcmFuZG9tUGF0aCwgMCk7CisgICAgc3R5
bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5qZWN0ZWRTdHlsZVNoZWV0
LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TVFlM
RV9MRVZFTF9VU0VSLCBudWxscHRyLCBibGFja2xpc3QpOworICAgIHdlYmtpdF91c2VyX2NvbnRl
bnRfbWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQodGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0
KCksIHN0eWxlU2hlZXQpOworICAgIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmKHN0eWxl
U2hlZXQpOworICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0
ZXN0LCByYW5kb21QYXRoKSk7CisgICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JV
UkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRvbXBhdGgiKSk7CisKKyAgICByZW1vdmVPbGRJ
bmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdl
ci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGluVGhlV2hpdGVMaXN0ID0gImludGhld2hpdGVsaXN0IjsKKyAgICBzdGF0aWMgY29uc3QgY2hh
ciogbm90SW5XaGl0ZWxpc3QgPSAibm90aW50aGV3aGl0ZWxpc3QiOworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCA9ICJpbnRoZXdoaXRlbGlzdGFuZGJs
YWNrbGlzdCI7CisKKyAgICBmaWxsVVJMTGlzdEZyb21QYXRocyh3aGl0ZWxpc3QsIGluVGhlV2hp
dGVMaXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCwgMCk7CisgICAgZmlsbFVSTExpc3RG
cm9tUGF0aHMoYmxhY2tsaXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCwgMCk7CisgICAg
c3R5bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5qZWN0ZWRTdHlsZVNo
ZWV0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9T
VFlMRV9MRVZFTF9VU0VSLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisgICAgd2Via2l0X3VzZXJf
Y29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldCh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdl
ci5nZXQoKSwgc3R5bGVTaGVldCk7CisgICAgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfdW5yZWYo
c3R5bGVTaGVldCk7CisgICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBh
dGgodGVzdCwgaW5UaGVXaGl0ZUxpc3QpKTsKKyAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5q
ZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xpc3QpKTsKKyAg
ICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgbm90SW5X
aGl0ZWxpc3QpKTsKKworICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGNsZWFuIHVwIHRoZSBlbnZp
cm9ubWVudCBiZWZvcmUgb3RoZXIgdGVzdHMuCisgICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNo
ZWV0c0FuZFJlc2V0TGlzdHModGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHdoaXRl
bGlzdCwgYmxhY2tsaXN0KTsKK30KKworc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNl
cnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hh
c2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCit7CisgICAgc291cF9tZXNz
YWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOworICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMs
IGtTdHlsZVNoZWV0SFRNTCwgc3RybGVuKGtTdHlsZVNoZWV0SFRNTCkpOworICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworfQorCit2b2lkIGJl
Zm9yZUFsbCgpCit7CisgICAga1NlcnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7CisgICAg
a1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKworICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJuZXctd2l0aC11c2VyLWNvbnRlbnQtbWFuYWdlciIsIHRlc3RXZWJWaWV3TmV3V2l0
aFVzZXJDb250ZW50TWFuYWdlcik7CisgICAgVXNlckNvbnRlbnRNYW5hZ2VyVGVzdDo6YWRkKCJX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIiLCAiaW5qZWN0ZWQtc3R5bGUtc2hlZXQiLCB0ZXN0VXNl
ckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNoZWV0KTsKK30KKwordm9pZCBhZnRlckFsbCgp
Cit7CisgICAgZGVsZXRlIGtTZXJ2ZXI7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAK
aW5kZXggNDQ4YWJkMmZlNTMyYzZjMTRmZTIzMzlmM2MxNzY3ZjBhOWRhODAzMS4uY2NiYTg5ZDQ2
MmU0NGEyNTNlZThmYWU0NmRiNmQ2OWVlNDg1NmVjOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dy
b3VwLmNwcApAQCAtMjYsMTQgKzI2LDYgQEAKICNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKLXN0YXRpYyBXZWJLaXRUZXN0U2Vy
dmVyKiBrU2VydmVyOwotCi0vLyBUaGVzZSBhcmUgYWxsIGhlcmUgc28gdGhhdCB0aGV5IGNhbiBi
ZSBjaGFuZ2VkIGVhc2lseSwgaWYgbmVjZXNzYXJ5Lgotc3RhdGljIGNvbnN0IGNoYXIqIGtTdHls
ZVNoZWV0SFRNTCA9ICI8aHRtbD48ZGl2IGlkPVwic3R5bGVkRWxlbWVudFwiPlN3ZWV0IHN0eWxl
eiE8L2Rpdj48L2h0bWw+IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBrSW5qZWN0ZWRTdHlsZVNoZWV0
ID0gIiNzdHlsZWRFbGVtZW50IHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0iOwotc3RhdGljIGNvbnN0
IGNoYXIqIGtTdHlsZVNoZWV0VGVzdFNjcmlwdCA9ICJnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzdHlsZWRFbGVtZW50JykpWydmb250LXdlaWdodCddIjsKLXN0YXRp
YyBjb25zdCBjaGFyKiBrU3R5bGVTaGVldFRlc3RTY3JpcHRSZXN1bHQgPSAiYm9sZCI7Ci0KIHN0
YXRpYyB2b2lkIHRlc3RXZWJWaWV3R3JvdXBEZWZhdWx0KFRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiB7CiAgICAgLy8gRGVmYXVsdCBncm91cCBpcyBzaGFyZWQgYnkgYWxsIFdlYlZpZXdzIGJ5
IGRlZmF1bHQuCkBAIC05OCwxMDkgKzkwLDE0IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3R3Jv
dXBTZXR0aW5ncyhUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KHdlYmtp
dF93ZWJfdmlld19ncm91cF9nZXRfc2V0dGluZ3Mod2Via2l0X3dlYl92aWV3X2dldF9ncm91cCh3
ZWJWaWV3MS5nZXQoKSkpID09IHdlYlZpZXcyU2V0dGluZ3MpOwogfQogCi1zdGF0aWMgYm9vbCBp
c1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aChXZWJWaWV3VGVzdCogdGVzdCwgY29uc3Qg
Y2hhciogcGF0aCkKLXsKLSAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgo
cGF0aCkuZGF0YSgpKTsKLSAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLQotICAg
IEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlz
aGVkKGtTdHlsZVNoZWV0VGVzdFNjcmlwdCwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2Vy
dChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotCi0gICAg
R1VuaXF1ZVB0cjxjaGFyPiByZXN1bHRTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwotICAgIHJldHVybiAhZ19zdHJjbXAwKHJl
c3VsdFN0cmluZy5nZXQoKSwga1N0eWxlU2hlZXRUZXN0U2NyaXB0UmVzdWx0KTsKLX0KLQotc3Rh
dGljIHZvaWQgZmlsbFVSTExpc3RGcm9tUGF0aHMoY2hhcioqIGxpc3QsIGNvbnN0IGNoYXIqIHBh
dGgsIC4uLikKLXsKLSAgICB2YV9saXN0IGFyZ3VtZW50TGlzdDsKLSAgICB2YV9zdGFydChhcmd1
bWVudExpc3QsIHBhdGgpOwotCi0gICAgaW50IGkgPSAwOwotICAgIHdoaWxlIChwYXRoKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBXZSBtdXN0IHVzZSBhIHdpbGRjYXJkIGZvciB0aGUgaG9zdCBoZXJl
IHVudGlsIGh0dHA6Ly93a2J1Zy5jb20vMTEyNDc2IGlzIGZpeGVkLgotICAgICAgICAvLyBVbnRp
bCB0aGF0IHRpbWUgcGF0dGVybnMgd2l0aCBwb3J0IG51bWJlcnMgaW4gdGhlbSB3aWxsIG5vdCBw
cm9wZXJseSBtYXRjaCBVUkxzIHdpdGggcG9ydCBudW1iZXJzLgotICAgICAgICBsaXN0W2krK10g
PSBnX3N0cmR1cF9wcmludGYoImh0dHA6Ly8qLyVzKiIsIHBhdGgpOwotICAgICAgICBwYXRoID0g
dmFfYXJnKGFyZ3VtZW50TGlzdCwgY29uc3QgY2hhciopOwotICAgIH0KLX0KLQotc3RhdGljIHZv
aWQgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoV2ViS2l0V2ViVmll
d0dyb3VwKiBncm91cCwgY2hhcioqIHdoaXRlbGlzdCwgY2hhcioqIGJsYWNrbGlzdCkKLXsKLSAg
ICB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyhncm91
cCk7Ci0KLSAgICB3aGlsZSAoKndoaXRlbGlzdCkgewotICAgICAgICBnX2ZyZWUoKndoaXRlbGlz
dCk7Ci0gICAgICAgICp3aGl0ZWxpc3QgPSAwOwotICAgICAgICB3aGl0ZWxpc3QrKzsKLSAgICB9
Ci0KLSAgICB3aGlsZSAoKmJsYWNrbGlzdCkgewotICAgICAgICBnX2ZyZWUoKmJsYWNrbGlzdCk7
Ci0gICAgICAgICpibGFja2xpc3QgPSAwOwotICAgICAgICBibGFja2xpc3QrKzsKLSAgICB9Ci19
Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3R3JvdXBJbmplY3RlZFN0eWxlU2hlZXQoV2ViVmll
d1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCi17Ci0gICAgV2ViS2l0V2ViVmlld0dyb3VwKiBn
cm91cCA9IHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAodGVzdC0+bV93ZWJWaWV3KTsKLSAgICBj
aGFyKiB3aGl0ZWxpc3RbM10gPSB7IDAsIDAsIDAgfTsKLSAgICBjaGFyKiBibGFja2xpc3RbM10g
PSB7IDAsIDAsIDAgfTsKLQotICAgIHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNl
dExpc3RzKGdyb3VwLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7Ci0KLSAgICAvLyBXaXRob3V0IGEg
d2hpdGVsaXN0IG9yIGEgYmxhY2tsaXN0IGFsbCBVUkxzIHNob3VsZCBoYXZlIHRoZSBpbmplY3Rl
ZCBzdHlsZSBzaGVldC4KLSAgICBzdGF0aWMgY29uc3QgY2hhciogcmFuZG9tUGF0aCA9ICJzb21l
cmFuZG9tcGF0aCI7Ci0gICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQ
YXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3Vz
ZXJfc3R5bGVfc2hlZXQoZ3JvdXAsIGtJbmplY3RlZFN0eWxlU2hlZXQsIDAsIDAsIDAsIFdFQktJ
VF9JTkpFQ1RFRF9DT05URU5UX0ZSQU1FU19BTEwpOwotICAgIGdfYXNzZXJ0KGlzU3R5bGVTaGVl
dEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKLQotICAgIHJlbW92ZU9s
ZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKGdyb3VwLCB3aGl0ZWxpc3QsIGJsYWNr
bGlzdCk7Ci0KLSAgICBmaWxsVVJMTGlzdEZyb21QYXRocyhibGFja2xpc3QsIHJhbmRvbVBhdGgs
IDApOwotICAgIHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldChncm91
cCwga0luamVjdGVkU3R5bGVTaGVldCwgMCwgMCwgYmxhY2tsaXN0LCBXRUJLSVRfSU5KRUNURURf
Q09OVEVOVF9GUkFNRVNfQUxMKTsKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRG
b3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOwotICAgIGdfYXNzZXJ0KGlzU3R5bGVTaGVl
dEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsICJzb21lb3RoZXJyYW5kb21wYXRoIikpOwotCi0g
ICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoZ3JvdXAsIHdoaXRl
bGlzdCwgYmxhY2tsaXN0KTsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpblRoZVdoaXRlTGlz
dCA9ICJpbnRoZXdoaXRlbGlzdCI7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIG5vdEluV2hpdGVs
aXN0ID0gIm5vdGludGhld2hpdGVsaXN0IjsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogaW5UaGVX
aGl0ZUxpc3RBbmRCbGFja0xpc3QgPSAiaW50aGV3aGl0ZWxpc3RhbmRibGFja2xpc3QiOwotCi0g
ICAgZmlsbFVSTExpc3RGcm9tUGF0aHMod2hpdGVsaXN0LCBpblRoZVdoaXRlTGlzdCwgaW5UaGVX
aGl0ZUxpc3RBbmRCbGFja0xpc3QsIDApOwotICAgIGZpbGxVUkxMaXN0RnJvbVBhdGhzKGJsYWNr
bGlzdCwgaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xpc3QsIDApOwotICAgIHdlYmtpdF93ZWJfdmll
d19ncm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldChncm91cCwga0luamVjdGVkU3R5bGVTaGVldCwg
MCwgd2hpdGVsaXN0LCBibGFja2xpc3QsIFdFQktJVF9JTkpFQ1RFRF9DT05URU5UX0ZSQU1FU19B
TEwpOwotICAgIGdfYXNzZXJ0KGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3Qs
IGluVGhlV2hpdGVMaXN0KSk7Ci0gICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9y
VVJMQXRQYXRoKHRlc3QsIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0KSk7Ci0gICAgZ19hc3Nl
cnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIG5vdEluV2hpdGVsaXN0
KSk7Ci0KLSAgICAvLyBJdCdzIGltcG9ydGFudCB0byBjbGVhbiB1cCB0aGUgZW52aXJvbm1lbnQg
YmVmb3JlIG90aGVyIHRlc3RzLgotICAgIHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRS
ZXNldExpc3RzKGdyb3VwLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2Us
IGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2lu
dGVyKQotewotICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVT
X09LKTsKLSAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9k
eSwgU09VUF9NRU1PUllfU1RBVElDLCBrU3R5bGVTaGVldEhUTUwsIHN0cmxlbihrU3R5bGVTaGVl
dEhUTUwpKTsKLSAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25z
ZV9ib2R5KTsKLX0KLQogdm9pZCBiZWZvcmVBbGwoKQogewotICAgIGtTZXJ2ZXIgPSBuZXcgV2Vi
S2l0VGVzdFNlcnZlcigpOwotICAgIGtTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7Ci0KICAg
ICBUZXN0OjphZGQoIldlYktpdFdlYlZpZXdHcm91cCIsICJkZWZhdWx0LWdyb3VwIiwgdGVzdFdl
YlZpZXdHcm91cERlZmF1bHQpOwogICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlld0dyb3VwIiwg
Im5ldy1ncm91cCIsIHRlc3RXZWJWaWV3R3JvdXBOZXdHcm91cCk7CiAgICAgVGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgIm5ldy13aXRoLWdyb3VwIiwgdGVzdFdlYlZpZXdOZXdXaXRoR3JvdXAp
OwogICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlld0dyb3VwIiwgInNldHRpbmdzIiwgdGVzdFdl
YlZpZXdHcm91cFNldHRpbmdzKTsKLSAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
R3JvdXAiLCAiaW5qZWN0ZWQtc3R5bGUtc2hlZXQiLCB0ZXN0V2ViVmlld0dyb3VwSW5qZWN0ZWRT
dHlsZVNoZWV0KTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCiB7Ci0gICAgZGVsZXRlIGtTZXJ2ZXI7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZp
ZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rl
c3QuY3BwCmluZGV4IDExOThiMDhiZTY4M2Q1OTM5MjQ2ZDkwYTUwZTNiMWQ0ZWY3M2MwMzcuLmVi
ZDAzYjRkNGFhODAyY2FlNjgyOTBlNGRkNjcyMjVkMDRjMzdlNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwCkBAIC0yNSw3ICsy
NSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgogCiBXZWJWaWV3VGVz
dDo6V2ViVmlld1Rlc3QoKQotICAgIDogbV93ZWJWaWV3KFdFQktJVF9XRUJfVklFVyhnX29iamVj
dF9yZWZfc2luayh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpKSkKKyAgICA6IFdlYlZpZXdUZXN0KFdF
QktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpKSB7IH0KKworV2ViVmlld1Rlc3Q6
OldlYlZpZXdUZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcoV0VC
S0lUX1dFQl9WSUVXKGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpKSkKICAgICAsIG1fbWFpbkxv
b3AoZ19tYWluX2xvb3BfbmV3KDAsIFRSVUUpKQogICAgICwgbV9wYXJlbnRXaW5kb3coMCkKICAg
ICAsIG1famF2YXNjcmlwdFJlc3VsdCgwKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsv
V2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5oCmluZGV4IGY0NWUxMjVjOWQ0ZmEyZGNkNjQzZDYxNDBh
YWEzN2RmMTYwYmEzODguLjJiY2Y1NjM1OThhN2VmZjg2YTI4NjEwMTJkMGNmYTg3NDE5OTdhZDEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rl
c3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIGNsYXNzIFdlYlZpZXdUZXN0OiBwdWJsaWMgVGVzdCB7CiBw
dWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShXZWJWaWV3VGVzdCk7CisgICAgV2Vi
Vmlld1Rlc3QoV2ViS2l0V2ViVmlldyopOwogICAgIFdlYlZpZXdUZXN0KCk7CiAgICAgdmlydHVh
bCB+V2ViVmlld1Rlc3QoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234361</attachid>
            <date>2014-07-03 12:18:08 -0700</date>
            <delta_ts>2014-07-07 04:34:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134551-20140703222016.patch</filename>
            <type>text/plain</type>
            <size>75809</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2NkOWM0NzQxODZiODBh
M2FjYWNlYWMzYTNkNmIyOWYwMTRhYzc5ZS4uMDFlNjNmNzM5YzY5MmNjMmQ1ZWM3OTZiOTViMzdh
MjI1MjUxNmNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE0LTA3LTAzICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
TW92ZSB1c2VyIHN0eWxlIHNoZWV0IEFQSSBvdXQgb2YgV2ViS2l0V2ViVmlld0dyb3VwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ1NTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBJbmNsdWRlIHRoZSBuZXcgc291cmNlIGZpbGVzIGluIHRoZSBidWlsZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdDcmVh
dGUpOgorICAgICAgICBBZGFwdCB0byB0aGUgYWRkaXRpb25hbCB3ZWJraXRXZWJWaWV3QmFzZUNy
ZWF0ZVdlYlBhZ2UoKSBwYXJhbWV0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlckNvbnRlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRvVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyk6CisgICAgICAgICh0b1VzZXJTdHlsZUxldmVsKToKKyAgICAgICAgKHRvU3RyaW5n
VmVjdG9yKToKKyAgICAgICAgKF9XZWJLaXRVc2VyU3R5bGVTaGVldDo6X1dlYktpdFVzZXJTdHls
ZVNoZWV0KToKKyAgICAgICAgKHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZik6CisgICAgICAg
ICh3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZik6CisgICAgICAgICh3ZWJraXRfdXNlcl9z
dHlsZV9zaGVldF9uZXcpOgorICAgICAgICAod2Via2l0V2ViS2l0VXNlclN0eWxlU2hlZXRUb1Vz
ZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXJQcml2YXRlOjpfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZSk6CisgICAgICAgICh3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfbmV3KToKKyAgICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQpOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9t
YW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzKToKKyAgICAgICAgKHdlYmtpdFVzZXJDb250
ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudFByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOiBB
ZGQgYSBuZXcgcGFyYW1ldGVyIHRvIGFsbG93CisgICAgICAgIHBhc3NpbmcgdGhlIFdlYktpdFVz
ZXJDb250ZW50TWFuYWdlciB0aGF0IHRoZSB3ZWIgdmlldyB3aWxsIHVzZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdDb25zdHJ1Y3RlZCk6IEFkZGVkIGhhbmRsaW5nIG9mIHRoZQorICAgICAgICAidXNl
ci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5IG9uIGNvbnN0cnVjdGlvbi4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZQorICAgICAgICAi
dXNlci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5LgorICAgICAgICAod2Via2l0V2ViVmlld0dl
dFByb3BlcnR5KTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlCisgICAgICAgICJ1c2VyLWNvbnRlbnQt
bWFuYWdlciIgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6
IEFkZGVkIHRoZSAidXNlci1jb250ZW50LW1hbmFnZXIiCisgICAgICAgIHByb3BlcnR5IGRlZmlu
aXRpb24gdG8gdGhlIFdlYktpdFdlYlZpZXcgY2xhc3MuCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KTogTWFkZSByZWxhdGVkIHZpZXdzIHNoYXJlCisgICAg
ICAgIHRoZSBzYW1lIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciB1c2VkIGJ5IHRoZSB2aWV3IHRo
ZXkgYXJlCisgICAgICAgIHJlbGF0ZWQgdG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3
X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZCBuZXcgQVBJIG1ldGhvZHMuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VDcmVhdGUpOiBBZGRlZCBhIHBhcmFtZXRlciB0byBwYXNzIHRoZSB1c2Vy
CisgICAgICAgIGNvbnRlbnQgbWFuYWdlci4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlV2ViUGFnZSk6IEFkZGVkIGEgcGFyYW1ldGVyIHRvIHBhc3MgdGhlIHVzZXIKKyAgICAgICAg
Y29udGVudCBtYW5hZ2VyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3JvdXAuY3BwOiBSZW1vdmVkIHRoZSBiaXRzIHJlbGF0ZWQKKyAgICAgICAgdG8g
dXNlciBzdHlsZSBzaGVldCBzdXBwb3J0IGZyb20gV2ViS2l0V2ViVmlld0dyb3VwLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncyk6CisgICAgICAgICh0b0FQSUFy
cmF5KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9z
dHlsZV9zaGVldCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVt
b3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmg6IERlbGV0ZWQgdGhlIEFQSSBtZXRob2RzCisg
ICAgICAgIGZvciB1c2VyIHN0eWxlIHNoZWV0IGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZGVkIHRoZSBuZXcgQVBJ
CisgICAgICAgIGZ1bmN0aW9ucyBhbmQgdHlwZXMsIGFuZCByZW1vdmVkIHRoZSBtZXRob2RzIHdo
aWNoIGFyZSBubyBsb25nZXIKKyAgICAgICAgYXZhaWxhYmxlIGluIFdlYktpdFdlYlZpZXdHcm91
cC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEFkZCB0aGUgbmV3IGhl
YWRlcnMuCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcDogQWRkZWQKKyAgICAgICAgbWV0aG9kcyB0byBhZGQgYW5kIHJlbW92
ZSB1c2VyIHN0eWxlIHNoZWV0cywgYWxpa2UgdGhvc2UgdXNlZCBmb3IKKyAgICAgICAgdXNlciBz
Y3JpcHRzLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
YWRkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOiBEaXR0
by4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9y
UGFnZSk6CisgICAgICAgIEFkYXB0IHRvIHRoZSBhZGRpdGlvbmFsIHdlYmtpdFdlYlZpZXdCYXNl
Q3JlYXRlV2ViUGFnZSgpIHBhcmFtZXRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHA6IEFkZGVkIG1ldGhvZHMKKyAgICAgICAg
dG8gYWRkIGFuZCByZW1vdmUgdXNlciBzdHlsZSBzaGVldHMsIGFsaWtlIHRob3NlIHVzZWQgZm9y
IHVzZXIgc2NyaXB0cy4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjphZGRVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaDogRGl0dG8uCisgICAgICAg
ICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2Fn
ZXMuaW46CisgICAgICAgIERpdHRvLgorCiAyMDE0LTA3LTAzICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGb2xsb3d1cCB0byAicmVjdHMgc2VudCB0byBTZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyIGFyZSB3cm9uZyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXgg
NGJmYjgwMWNmMDcyMjZlZTM5ZDU2NjE5ODE4MjQwMDQ4ZGMxNjg0MS4uMWYwYWIzYmYxYTQ5OTFi
YzgyYzU1YjE1MGEzZGM2OTUxNDE4ZjZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTkyNiw2
ICs5MjYsOCBAQCBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUQxRXYKIF9fWk43
V2ViQ29yZTIxVVJMQnlSZW1vdmluZ1VzZXJJbmZvRVA1TlNVUkwKIF9fWk43V2ViQ29yZTIxVXNl
ckNvbnRlbnRDb250cm9sbGVyMTNhZGRVc2VyU2NyaXB0RVJOU18xNURPTVdyYXBwZXJXb3JsZEVO
U3QzX18xMTB1bmlxdWVfcHRySU5TXzEwVXNlclNjcmlwdEVOUzNfMTRkZWZhdWx0X2RlbGV0ZUlT
NV9FRUVFCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxlcjE3cmVtb3ZlVXNlclNj
cmlwdHNFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQorX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENv
bnRyb2xsZXIxN2FkZFVzZXJTdHlsZVNoZWV0RVJOU18xNURPTVdyYXBwZXJXb3JsZEVOU3QzX18x
MTB1bmlxdWVfcHRySU5TXzE0VXNlclN0eWxlU2hlZXRFTlMzXzE0ZGVmYXVsdF9kZWxldGVJUzVf
RUVFRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKK19fWk43V2ViQ29yZTIxVXNlckNvbnRl
bnRDb250cm9sbGVyMjFyZW1vdmVVc2VyU3R5bGVTaGVldHNFUk5TXzE1RE9NV3JhcHBlcldvcmxk
RQogX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXIzMWFkZFVzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3JFUk5TXzI4VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvckUKIF9fWk43
V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMzRyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yRVJOU18yOFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JFCiBfX1pON1dlYkNv
cmUyMVVzZXJDb250ZW50Q29udHJvbGxlcjZjcmVhdGVFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFr
ZQppbmRleCBhNGJhOWFhOWFjMGIxMTNlMGViOGM5ZDc0Zjc5M2I0NzU2ZGI5MTFlLi44MThlMGVm
N2E1MDZlMDQ5MzUyMWMwOTdhMmI1MmFiZTZhNGZhZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZQpAQCAtMjEwLDYgKzIxMCwxMiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAg
ICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaAogICAgIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyQ29udGVudC5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNv
bnRlbnQuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRQcml2YXRl
LmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaAorICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUuaAorICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFZlcnNpb24uaC5pbgogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQu
Y3BwCkBAIC0zNTMsNiArMzU5LDggQEAgc2V0KFdlYktpdDJHVEtfSU5TVEFMTEVEX0hFQURFUlMK
ICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmgK
ICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZS5o
CiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdC5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNv
bnRlbnQuaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJD
b250ZW50TWFuYWdlci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViSW5zcGVjdG9yLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJSZXNvdXJjZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvZ3RrL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3Rr
L1dLVmlldy5jcHAKaW5kZXggNmYwYzA0YmYyNzNkYmZmNjFkOWIwZmJkYzI3YTgwZDUzOGYyYzMy
My4uYmM3YjgzZjk1YTQ3MmU1MzczYzA3ODE2YWZhZWVlMTRjNWQyMWQwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcApAQCAtMzcsNyArMzcsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV0tWaWV3UmVmIFdLVmlld0NyZWF0ZShXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogewotICAg
IHJldHVybiB0b0FQSSh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSh0b0ltcGwoY29udGV4dFJlZiks
IHRvSW1wbChwYWdlR3JvdXBSZWYpLCBudWxscHRyKSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYmtp
dFdlYlZpZXdCYXNlQ3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJl
ZiksIG51bGxwdHIsIG51bGxwdHIpKTsKIH0KIAogV0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tW
aWV3UmVmIHZpZXdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVhYTk1MTI3MzQwZTllZTc3
M2Q4NThjMTMxZTNiNDU2ZjczM2VhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50LmNwcApAQCAtMCwwICsxLDE2MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnQuaCIKKworI2luY2x1ZGUgIldlYktpdFBy
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudFByaXZhdGUuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLyoqCisgKiBTRUNUSU9OOldlYktpdFVz
ZXJDb250ZW50CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IERlZmluZXMgdXNlciBjb250ZW50IHR5
cGVzIHdoaWNoIGFmZmVjdCB3ZWIgcGFnZXMuCisgKiBAdGl0bGU6IFVzZXIgY29udGVudAorICoK
KyAqIFNlZSBhbHNvOiAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCisgKgorICogU2luY2U6IDIu
NgorICovCisKK3N0YXRpYyBpbmxpbmUgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB0b1VzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMoV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmpl
Y3RlZEZyYW1lcykKK3sKKyAgICBzd2l0Y2ggKGluamVjdGVkRnJhbWVzKSB7CisgICAgY2FzZSBX
RUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9UT1BfRlJBTUU6CisgICAgICAgIHJldHVybiBJbmpl
Y3RJblRvcEZyYW1lT25seTsKKyAgICBjYXNlIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FM
TF9GUkFNRVM6CisgICAgICAgIHJldHVybiBJbmplY3RJbkFsbEZyYW1lczsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEluamVjdElu
QWxsRnJhbWVzOworICAgIH0KK30KKworc3RhdGljIGlubGluZSBVc2VyU3R5bGVMZXZlbCB0b1Vz
ZXJTdHlsZUxldmVsKFdlYktpdFVzZXJTdHlsZUxldmVsIHN0eWxlTGV2ZWwpCit7CisgICAgc3dp
dGNoIChzdHlsZUxldmVsKSB7CisgICAgY2FzZSBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9VU0VS
OgorICAgICAgICByZXR1cm4gVXNlclN0eWxlVXNlckxldmVsOworICAgIGNhc2UgV0VCS0lUX1VT
RVJfU1RZTEVfTEVWRUxfQVVUSE9SOgorICAgICAgICByZXR1cm4gVXNlclN0eWxlQXV0aG9yTGV2
ZWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBVc2VyU3R5bGVBdXRob3JMZXZlbDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUg
VmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWN0b3IoY29uc3QgY2hhciogY29uc3QqIHN0cnYpCit7
CisgICAgaWYgKCFzdHJ2KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKworICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICBmb3IgKGF1dG8gc3RyID0gc3RydjsgKnN0cjsg
KytzdHIpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RkOjptb3ZlKFN0cmluZzo6ZnJvbVVURjgo
KnN0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdHJ1Y3QgX1dlYktpdFVzZXJTdHls
ZVNoZWV0IHsKKyAgICBfV2ViS2l0VXNlclN0eWxlU2hlZXQoY29uc3QgZ2NoYXIqIHNvdXJjZSwg
V2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2ViS2l0VXNl
clN0eWxlTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIqIGNvbnN0KiB3aGl0ZWxpc3QsIGNvbnN0IGNo
YXIqIGNvbnN0KiBibGFja2xpc3QpCisgICAgICAgIDogdXNlclN0eWxlU2hlZXQoc3RkOjptYWtl
X3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oCisgICAgICAgICAgICBTdHJpbmc6OmZyb21VVEY4KHNv
dXJjZSksIFVSTCB7IH0sCisgICAgICAgICAgICB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0
b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLAorICAgICAgICAgICAgdG9Vc2VyQ29udGVudEluamVj
dGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSwKKyAgICAgICAgICAgIHRvVXNlclN0eWxlTGV2ZWwo
bGV2ZWwpKSkKKyAgICAgICAgLCByZWZlcmVuY2VDb3VudCgxKQorICAgIHsKKyAgICB9CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0OworICAgIGlu
dCByZWZlcmVuY2VDb3VudDsKK307CisKK0dfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0VXNlclN0
eWxlU2hlZXQsIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0LCB3ZWJraXRfdXNlcl9zdHlsZV9zaGVl
dF9yZWYsIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmKQorCisvKioKKyAqIHdlYmtpdF91
c2VyX3N0eWxlX3NoZWV0X3JlZjoKKyAqIEB1c2VyX3N0eWxlX3NoZWV0OiBhICNXZWJLaXRVc2Vy
U3R5bGVTaGVldAorICoKKyAqIEF0b21pY2FsbHkgaW5jcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNv
dW50IG9mIEB1c2VyX3N0eWxlX3NoZWV0IGJ5IG9uZS4KKyAqIFRoaXMgZnVuY3Rpb24gaXMgTVQt
c2FmZSBhbmQgbWF5IGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisgKgorICogUmV0dXJuczog
VGhlIHBhc3NlZCAjV2ViS2l0VXNlclN0eWxlU2hlZXQKKyAqCisgKiBTaW5jZTogMi42CisgKi8K
K1dlYktpdFVzZXJTdHlsZVNoZWV0KiB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9yZWYoV2ViS2l0
VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0KQoreworICAgIGdfYXRvbWljX2ludF9pbmMo
JnVzZXJTdHlsZVNoZWV0LT5yZWZlcmVuY2VDb3VudCk7CisgICAgcmV0dXJuIHVzZXJTdHlsZVNo
ZWV0OworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmOgorICogQHVz
ZXJfc3R5bGVfc2hlZXQ6IGEgI1dlYktpdFVzZXJTdHlsZVNoZWV0CisgKgorICogQXRvbWljYWxs
eSBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgQHVzZXJfc3R5bGVfc2hlZXQgYnkg
b25lLgorICogSWYgdGhlIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byAwLCBhbGwgbWVtb3J5IGFs
bG9jYXRlZCBieQorICogI1dlYktpdFVzZXJTdHlsZVNoZWV0IGlzIHJlbGVhc2VkLiBUaGlzIGZ1
bmN0aW9uIGlzIE1ULXNhZmUgYW5kIG1heSBiZQorICogY2FsbGVkIGZyb20gYW55IHRocmVhZC4K
KyAqCisgKiBTaW5jZTogMi42CisgKi8KK3ZvaWQgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfdW5y
ZWYoV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0KQoreworICAgIGlmIChnX2F0
b21pY19pbnRfZGVjX2FuZF90ZXN0KCZ1c2VyU3R5bGVTaGVldC0+cmVmZXJlbmNlQ291bnQpKSB7
CisgICAgICAgIHVzZXJTdHlsZVNoZWV0LT5+V2ViS2l0VXNlclN0eWxlU2hlZXQoKTsKKyAgICAg
ICAgZ19zbGljZV9mcmVlKFdlYktpdFVzZXJTdHlsZVNoZWV0LCB1c2VyU3R5bGVTaGVldCk7Cisg
ICAgfQorfQorCisvKioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldzoKKyAqIEBzb3Vy
Y2U6IFNvdXJjZSBjb2RlIG9mIHRoZSB1c2VyIHN0eWxlIHNoZWV0LgorICogQGluamVjdGVkX2Zy
YW1lczogQSAjV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB2YWx1ZQorICogQGxldmVs
OiBBICNXZWJLaXRVc2VyU3R5bGVMZXZlbAorICogQHdoaXRlbGlzdDogKGFycmF5IHplcm8tdGVy
bWluYXRlZD0xKSAoYWxsb3ctbm9uZSk6IEEgd2hpdGVsaXN0IG9mIFVSSSBwYXR0ZXJucyBvciAl
TlVMTAorICogQGJsYWNrbGlzdDogKGFycmF5IHplcm8tdGVybWluYXRlZD0xKSAoYWxsb3ctbm9u
ZSk6IEEgYmxhY2tsaXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVMTAorICoKKyAqIENyZWF0ZXMg
YSBuZXcgdXNlciBzdHlsZSBzaGVldC4gU3R5bGUgc2hlZXRzIGNhbiBiZSBhcHBsaWVkIHRvIHNv
bWUgVVJJcworICogb25seSBieSBwYXNzaW5nIG5vbi1udWxsIHZhbHVlcyBmb3IgQHdoaXRlbGlz
dCBvciBAYmxhY2tsaXN0LiBQYXNzaW5nIGEKKyAqICVOVUxMIHdoaXRlbGlzdCBpbXBsaWVzIHRo
YXQgYWxsIFVSSXMgYXJlIG9uIHRoZSB3aGl0ZWxpc3QuIFRoZSBzdHlsZQorICogc2hlZXQgaXMg
YXBwbGllZCBpZiBhbiBVUkkgbWF0Y2hlcyB0aGUgd2hpdGVsaXN0IGFuZCBub3QgdGhlIGJsYWNr
bGlzdC4KKyAqIFVSSSBwYXR0ZXJucyBtdXN0IGJlIG9mIHRoZSBmb3JtIGBbcHJvdG9jb2xdOi8v
W2hvc3RdL1twYXRoXWAsIHdoZXJlIHRoZQorICogKmhvc3QqIGFuZCAqcGF0aCogY29tcG9uZW50
cyBjYW4gY29udGFpbiB0aGUgd2lsZGNhcmQgY2hhcmFjdGVyIChgKmApIHRvCisgKiByZXByZXNl
bnQgemVybyBvciBtb3JlIG90aGVyIGNoYXJhY3RlcnMuCisgKgorICogUmV0dXJuczogQSBuZXcg
I1dlYktpdFVzZXJTdHlsZVNoZWV0CisgKgorICogU2luY2U6IDIuNgorICovCitXZWJLaXRVc2Vy
U3R5bGVTaGVldCogd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGNvbnN0IGdjaGFyKiBzb3Vy
Y2UsIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYktp
dFVzZXJTdHlsZUxldmVsIGxldmVsLCBjb25zdCBjaGFyKiBjb25zdCogd2hpdGVsaXN0LCBjb25z
dCBjaGFyKiBjb25zdCogYmxhY2tsaXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNv
dXJjZSwgbnVsbHB0cik7CisgICAgV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0
ID0gZ19zbGljZV9uZXcoV2ViS2l0VXNlclN0eWxlU2hlZXQpOworICAgIG5ldyAodXNlclN0eWxl
U2hlZXQpIFdlYktpdFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVs
LCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisgICAgcmV0dXJuIHVzZXJTdHlsZVNoZWV0OworfQor
Citjb25zdCBVc2VyU3R5bGVTaGVldCYgd2Via2l0VXNlclN0eWxlU2hlZXRHZXRVc2VyU3R5bGVT
aGVldChXZWJLaXRVc2VyU3R5bGVTaGVldCogdXNlclN0eWxlU2hlZXQpCit7CisgICAgcmV0dXJu
ICp1c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MWQzYWRlYjUyMjhmM2U4MjI0OGU0MTJmMzdhNDQwZTgzNGQ2Y2RlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQuaApA
QCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
ZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01Q
SUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRl
ZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVc2VyQ29udGVudF9oCisjZGVm
aW5lIFdlYktpdFVzZXJDb250ZW50X2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworLyoqCisg
KiBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOgorICogQFdFQktJVF9VU0VSX0NPTlRF
TlRfSU5KRUNUX0FMTF9GUkFNRVM6IEluc2VydCB0aGUgdXNlciBzdHlsZQorICogICBzaGVldCBp
biBhbGwgdGhlIGZyYW1lcyBsb2FkZWQgYnkgdGhlIHdlYiB2aWV3LCBpbmNsdWRpbmcKKyAqICAg
bmVzdGVkIGZyYW1lcy4gVGhpcyBpcyB0aGUgZGVmYXVsdC4KKyAqIEBXRUJLSVRfVVNFUl9DT05U
RU5UX0lOSkVDVF9UT1BfRlJBTUU6IEluc2VydCB0aGUgdXNlciBzdHlsZQorICogICBzaGVldCAq
b25seSogaW4gdGhlIHRvcC1sZXZlbCBmcmFtZSBsb2FkZWQgYnkgdGhlIHdlYiB2aWV3LAorICog
ICBhbmQgKm5vdCogaW4gdGhlIG5lc3RlZCBmcmFtZXMuCisgKgorICogU3BlY2lmaWVzIGluIHdo
aWNoIGZyYW1lcyB1c2VyIHN0eWxlIHNoZWV0cyBhcmUgdG8gYmUgaW5zZXJ0ZWQgaW4uCisgKgor
ICogU2luY2U6IDIuNgorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9VU0VSX0NPTlRF
TlRfSU5KRUNUX0FMTF9GUkFNRVMsCisgICAgV0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfVE9Q
X0ZSQU1FLAorfSBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOworCisvKioKKyAqIFdl
YktpdFVzZXJTdHlsZUxldmVsOgorICogQFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVI6IFRo
ZSBzdHlsZSBzaGVldCBpcyBhbiB1c2VyIHN0eWxlIHNoZWV0LAorICogICBpdHMgY29udGVudHMg
YWx3YXlzIG92ZXJyaWRlIG90aGVyIHN0eWxlIHNoZWV0cy4gVGhpcyBpcyB0aGUgZGVmYXVsdC4K
KyAqIEBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9BVVRIT1I6IFRoZSBzdHlsZSBzaGVldCB3aWxs
IGJlIHRyZWF0ZWQgYXMgaWYKKyAqICAgaXQgd2FzIHByb3ZpZGVkIGJ5IHRoZSBsb2FkZWQgZG9j
dW1lbnRzLiBUaGF0IG1lYW5zIG90aGVyIHVzZXIgc3R5bGUKKyAqICAgc2hlZXRzIG1heSBzdGls
bCBvdmVycmlkZSBpdC4KKyAqCisgKiBTcGVjaWZpZXMgaG93IHRvIHRyZWF0IGFuIHVzZXIgc3R5
bGUgc2hlZXQuCisgKgorICogU2luY2U6IDIuNgorICovCit0eXBlZGVmIGVudW0geworICAgIFdF
QktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsCisgICAgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxf
QVVUSE9SLAorfSBXZWJLaXRVc2VyU3R5bGVMZXZlbDsKKworI2RlZmluZSBXRUJLSVRfVFlQRV9V
U0VSX1NUWUxFX1NIRUVUICh3ZWJraXRfdXNlcl9jb250ZW50X2dldF90eXBlKCkpCisKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRVc2VyU3R5bGVTaGVldCBXZWJLaXRVc2VyU3R5bGVTaGVldDsKKwor
V0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfZ2V0X3R5cGUgKHZvaWQp
OworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKK3dlYmtpdF91c2VyX3N0eWxl
X3NoZWV0X3JlZiAgICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAgICAgICAgKnVzZXJfc3R5
bGVfc2hlZXQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3Vu
cmVmICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAgICAgICAgKnVzZXJfc3R5bGVfc2hlZXQp
OworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKK3dlYmtpdF91c2VyX3N0eWxl
X3NoZWV0X25ldyAgICAgIChjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAgKnNvdXJjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzIGluamVjdGVkX2ZyYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRVc2VyU3R5bGVMZXZlbCAgICAgICAgICAgIGxldmVsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqd2hp
dGVsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBj
b25zdCAgICAgICAgICAgICAqYmxhY2tsaXN0KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTgyNjY4OTg0ZjNkMDZlMjMzZWVj
NjUzNTY4ODgzZGI4MTllMjMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEx
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgiCisKKyNpbmNsdWRl
ICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX1dlYktpdFVzZXJDb250ZW50TWFuYWdlclBy
aXZhdGUgeworICAgIF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlKCkKKyAgICAgICAg
OiB1c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNy
ZWF0ZSgpKSB7IH0KKworICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4g
dXNlckNvbnRlbnRDb250cm9sbGVyOworfTsKKworLyoqCisgKiBTRUNUSU9OOldlYktpdFVzZXJD
b250ZW50TWFuYWdlcgorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBNYW5hZ2VzIHVzZXItZGVmaW5l
ZCBjb250ZW50IHdoaWNoIGFmZmVjdHMgd2ViIHBhZ2VzLgorICogQHRpdGxlOiBXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIKKyAqCisgKiBVc2luZyBhICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIg
dXNlciBDU1Mgc3R5bGUgc2hlZXRzIGNhbiBiZSBzZXQgdG8KKyAqIGJlIGluamVjdGVkIGluIHRo
ZSB3ZWIgcGFnZXMgbG9hZGVkIGJ5IGEgI1dlYktpdFdlYlZpZXcsIGJ5CisgKiB3ZWJraXRfdXNl
cl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KCkuCisgKgorICogVG8gdXNlIGEgI1dl
YktpdFVzZXJDb250ZW50TWFuYWdlciwgaXQgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCisgKiB3ZWJr
aXRfdXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCksIGFuZCB0aGVuIHBhc3NlZCB0bworICogd2Vi
a2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKCkuIFVzZXIgc3R5bGUK
KyAqIHNoZWV0cyBjYW4gYmUgY3JlYXRlZCB3aXRoIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25l
dygpLgorICoKKyAqIFVzZXIgc3R5bGUgc2hlZXRzIGNhbiBiZSBhZGRlZCBhbmQgcmVtb3ZlZCBh
dCBhbnkgdGltZSwgYnV0CisgKiB0aGV5IHdpbGwgYWZmZWN0IHRoZSB3ZWIgcGFnZXMgbG9hZGVk
IGFmdGVyd2FyZHMuCisgKgorICogU2luY2U6IDIuNgorICovCisKK1dFQktJVF9ERUZJTkVfVFlQ
RShXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIsIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlciwg
R19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2Vy
X2NsYXNzX2luaXQoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3MqKQoreworfQorCisvKioK
KyAqIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXc6CisgKgorICogQ3JlYXRlcyBhIG5l
dyB1c2VyIGNvbnRlbnQgbWFuYWdlci4KKyAqCisgKiBSZXR1cm5zOiBBICNXZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIKKyAqCisgKiBTaW5jZTogMi42CisgKi8KK1dlYktpdFVzZXJDb250ZW50TWFu
YWdlciogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldygpCit7CisgICAgcmV0dXJuIFdF
QktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVNFUl9D
T05URU5UX01BTkFHRVIsIG51bGxwdHIpKTsKK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0OgorICogQG1hbmFnZXI6IEEgI1dlYktpdFVzZXJD
b250ZW50TWFuYWdlcgorICogQHN0eWxlc2hlZXQ6IEEgI1dlYktpdFVzZXJTdHlsZVNoZWV0Cisg
KgorICogQWRkcyBhICNXZWJLaXRVc2VyU3R5bGVTaGVldCB0byB0aGUgZ2l2ZW4gI1dlYktpdFVz
ZXJDb250ZW50TWFuYWdlci4KKyAqIFRoZSBzYW1lICNXZWJLaXRVc2VyU3R5bGVTaGVldCBjYW4g
YmUgcmV1c2VkIHdpdGggbXVsdGlwbGUKKyAqICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgaW5z
dGFuY2VzLgorICoKKyAqIFNpbmNlOiAyLjYKKyAqLwordm9pZCB3ZWJraXRfdXNlcl9jb250ZW50
X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWFuYWdl
ciwgV2ViS2l0VXNlclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCit7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfVVNFUl9DT05URU5UX01BTkFHRVIobWFuYWdlcikpOworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoc3R5bGVTaGVldCk7CisgICAgbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRD
b250cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVldCh3ZWJraXRVc2VyU3R5bGVTaGVldEdldFVzZXJT
dHlsZVNoZWV0KHN0eWxlU2hlZXQpKTsKK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9jb250ZW50
X21hbmFnZXJfcmVtb3ZlX2FsbF9zdHlsZV9zaGVldHM6CisgKiBAbWFuYWdlcjogQSAjV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyCisgKgorICogUmVtb3ZlcyBhbGwgdXNlciBzdHlsZSBzaGVldHMg
ZnJvbSB0aGUgZ2l2ZW4gI1dlYktpdFVzZXJDb250ZW50TWFuYWdlci4KKyAqCisgKiBTaW5jZTog
Mi42CisgKi8KK3ZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxfc3R5
bGVfc2hlZXRzKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWFuYWdlcikKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFOQUdFUihtYW5hZ2VyKSk7Cisg
ICAgbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVBbGxVc2VyU3R5
bGVTaGVldHMoKTsKK30KKworV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqIHdlYmtpdFVz
ZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYktpdFVzZXJD
b250ZW50TWFuYWdlciogbWFuYWdlcikKK3sKKyAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+dXNl
ckNvbnRlbnRDb250cm9sbGVyLmdldCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iOTE5NTAwZmFlZjBjNTg1ZjBjYTQ5NjM2NDJlNmViODMzYTE3MmVkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJ
Z2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVk
KFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBj
YW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyX2gKKyNkZWZpbmUgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyX2gKKworI2lu
Y2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+
CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVudC5oPgorCitHX0JFR0lOX0RFQ0xT
CisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfVVNFUl9DT05URU5UX01BTkFHRVIgICAgICAgICAgICAo
d2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9V
U0VSX0NPTlRFTlRfTUFOQUdFUihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUiwgV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VS
KG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9U
WVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSKSkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfQ09OVEVOVF9N
QU5BR0VSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwg
IFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSLCBXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXJDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFOQUdFUl9DTEFTUyhr
bGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9VU0VS
X0NPTlRFTlRfTUFOQUdFUikpCisjZGVmaW5lIFdFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUl9H
RVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRf
VFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUiwgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3Mp
KQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICAgICAgICBXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXI7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyQ2xhc3MgICBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJDbGFzczsKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlIFdlYktpdFVzZXJDb250ZW50TWFu
YWdlclByaXZhdGU7CisKKworc3RydWN0IF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgeworICAg
IEdPYmplY3QgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisgICAgV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICB2
b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNl
cnZlZDEpICh2b2lkKTsKKyAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKKyAg
ICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKK307CisKKworV0VCS0lUX0FQSSBH
VHlwZQord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2dldF90eXBlICAgICAgICAgICAgICAg
ICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKgord2Via2l0
X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldyAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKKwor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3No
ZWV0ICAgICAgICAgKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqbWFuYWdlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlclN0
eWxlU2hlZXQgICAgICpzdHlsZXNoZWV0KTsKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3VzZXJf
Y29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzIChXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIgKm1hbmFnZXIpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJD
b250ZW50TWFuYWdlclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzkxYTUzNTdiNDE5MjE5Y2Y2NmRm
Yzc2YmRjMmQxNjRmYjNiNjVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oCkBAIC0wLDAg
KzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIu
aCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgorCitXZWJLaXQ6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJH
ZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqKTsK
KworI2VuZGlmIC8vIFdlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dFByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mzk1OGFiY2EzZDk2OWRmOTk5ZjIwNGQ5ZjY1NDQyNTNj
MzM3ZDBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktpdFVzZXJDb250ZW50UHJp
dmF0ZV9oCisjZGVmaW5lIFdlYktpdFVzZXJDb250ZW50UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJX
ZWJLaXRVc2VyQ29udGVudC5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyU3R5bGVTaGVldC5o
PgorCitjb25zdCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCYgd2Via2l0VXNlclN0eWxlU2hlZXRH
ZXRVc2VyU3R5bGVTaGVldChXZWJLaXRVc2VyU3R5bGVTaGVldCopOworCisjZW5kaWYgLy8gV2Vi
S2l0VXNlckNvbnRlbnRQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggNjI4MDhiNzZjZWY4NmRhNzIz
M2IxZDAyNjJhMmVjYzQ0YzFmMzI3Mi4uNzBkNGFjMTdlNTQ1YjliNTk4Zjg1YTgxZmIxOGI5OWY3
NTFlZTNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJLaXRT
ZWN1cml0eU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VGV4dENoZWNrZXIuaCIK
ICNpbmNsdWRlICJXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldl
YktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250
ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFdlYlZpZXdHcm91cFByaXZhdGUuaCIKQEAgLTEwNTAsMTIgKzEwNTEsMTMg
QEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1c3RvbVByb3RvY29sKFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQsIHUKICAgICBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVS
ZXF1ZXN0cy5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKLXZvaWQgd2Via2l0V2ViQ29u
dGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlZpZXdHcm91cCogd2ViVmlld0dyb3VwLCBXZWJL
aXRXZWJWaWV3KiByZWxhdGVkVmlldykKK3ZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VG
b3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIFdlYktpdFdlYlZpZXdHcm91cCogd2ViVmlld0dyb3VwLCBXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIqIHVzZXJDb250ZW50TWFuYWdlciwgV2ViS2l0V2ViVmlldyogcmVsYXRlZFZpZXcpCiB7
CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JB
U0Uod2ViVmlldyk7CiAgICAgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAgPSB3ZWJWaWV3R3JvdXAg
PyB3ZWJraXRXZWJWaWV3R3JvdXBHZXRQYWdlR3JvdXAod2ViVmlld0dyb3VwKSA6IDA7CiAgICAg
V2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IHJlbGF0ZWRWaWV3ID8gd2Via2l0V2ViVmlld0Jh
c2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHJlbGF0ZWRWaWV3KSkgOiBudWxscHRyOwot
ICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3QmFzZSwgY29udGV4dC0+
cHJpdi0+Y29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLCByZWxhdGVkUGFnZSk7CisgICAgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkqIHVzZXJDb250ZW50Q29udHJvbGxlclByb3h5ID0gdXNl
ckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKSA6IG51bGxwdHI7CisgICAgd2Via2l0
V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYlZpZXdCYXNlLCBjb250ZXh0LT5wcml2LT5jb250
ZXh0LmdldCgpLCBwYWdlR3JvdXAsIHVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LCByZWxhdGVk
UGFnZSk7CiAKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBh
Z2Uod2ViVmlld0Jhc2UpOwogICAgIGNvbnRleHQtPnByaXYtPndlYlZpZXdzLnNldChwYWdlLT5w
YWdlSUQoKSwgd2ViVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAppbmRleCAwNjQ3NGExZWYwYWIz
MjQyNDBiZTJmMTExMzA0MTRmYjIyOWUzZTE0Li43NmRjZDM2NTg2Y2E0YzM5NjA4YjE2MGVhMGEz
NDVmNmRkMzkwMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1
ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIu
aCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmll
d0dyb3VwLmgiCiAjaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIu
aCIKQEAgLTQyLDcgKzQzLDcgQEAgV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlciogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKFcKIHZvaWQgd2Via2l0
V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqLCB1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBBUEk6OlVSTFJlcXVlc3QqKTsKIHZvaWQgd2Via2l0
V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCosIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNo
TG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Q
cm90b2NvbElEKTsKLXZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdl
YktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViVmlld0dyb3VwKiwgV2Vi
S2l0V2ViVmlldyopOwordm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXco
V2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJWaWV3R3JvdXAqLCBX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdFdl
YkNvbnRleHRXZWJWaWV3RGVzdHJveWVkKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXRXZWJWaWV3
Kik7CiBXZWJLaXRXZWJWaWV3KiB3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UoV2Vi
S2l0V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiBXZWJLaXRXZWJWaWV3R3Jv
dXAqIHdlYmtpdFdlYkNvbnRleHRHZXREZWZhdWx0V2ViVmlld0dyb3VwKFdlYktpdFdlYkNvbnRl
eHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5jcHAKaW5kZXggMGY4NTVlNTdiZjc1MTFhYWVlNmViMDJhOTkzMDI3N2IyNzEwNjFlMy4u
ZjgyNmNlYTA3OWIxN2E3ZTk3NjY0MWI2MjI0MWQ0MGIyZGVlMjc3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTEzMyw2
ICsxMzMsNyBAQCBlbnVtIHsKICAgICBQUk9QX1dFQl9DT05URVhULAogICAgIFBST1BfUkVMQVRF
RF9WSUVXLAogICAgIFBST1BfR1JPVVAsCisgICAgUFJPUF9VU0VSX0NPTlRFTlRfTUFOQUdFUiwK
ICAgICBQUk9QX1RJVExFLAogICAgIFBST1BfRVNUSU1BVEVEX0xPQURfUFJPR1JFU1MsCiAgICAg
UFJPUF9GQVZJQ09OLApAQCAtMTcxLDYgKzE3Miw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1By
aXZhdGUgewogICAgIEdSZWZQdHI8V2ViS2l0U2V0dGluZ3M+IHNldHRpbmdzOwogICAgIHVuc2ln
bmVkIGxvbmcgc2V0dGluZ3NDaGFuZ2VkSGFuZGxlcklEOwogICAgIEdSZWZQdHI8V2ViS2l0V2Vi
Vmlld0dyb3VwPiBncm91cDsKKyAgICBHUmVmUHRyPFdlYktpdFVzZXJDb250ZW50TWFuYWdlcj4g
dXNlckNvbnRlbnRNYW5hZ2VyOwogICAgIEdSZWZQdHI8V2ViS2l0V2luZG93UHJvcGVydGllcz4g
d2luZG93UHJvcGVydGllczsKIAogICAgIEdSZWZQdHI8R01haW5Mb29wPiBtb2RhbExvb3A7CkBA
IC01MDEsNyArNTAzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdP
YmplY3QqIG9iamVjdCkKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VC
X1ZJRVcob2JqZWN0KTsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXct
PnByaXY7Ci0gICAgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNv
bnRleHQsIHdlYlZpZXcsIHByaXYtPmdyb3VwLmdldCgpLCBwcml2LT5yZWxhdGVkVmlldyk7Cisg
ICAgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQsIHdl
YlZpZXcsIHByaXYtPmdyb3VwLmdldCgpLCBwcml2LT51c2VyQ29udGVudE1hbmFnZXIuZ2V0KCks
IHByaXYtPnJlbGF0ZWRWaWV3KTsKICAgICAvLyBUaGUgcmVsYXRlZCB2aWV3IGlzIG9ubHkgdmFs
aWQgZHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24uCiAgICAgcHJpdi0+cmVsYXRlZFZpZXcgPSBudWxs
cHRyOwogCkBAIC01NDIsNiArNTQ0LDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdTZXRQ
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlCiAgICAg
ICAgIHdlYlZpZXctPnByaXYtPmdyb3VwID0gZ3JvdXAgPyBXRUJLSVRfV0VCX1ZJRVdfR1JPVVAo
Z3JvdXApIDogMDsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgUFJPUF9VU0VSX0NP
TlRFTlRfTUFOQUdFUjogeworICAgICAgICBncG9pbnRlciB1c2VyQ29udGVudE1hbmFnZXIgPSBn
X3ZhbHVlX2dldF9vYmplY3QodmFsdWUpOworICAgICAgICB3ZWJWaWV3LT5wcml2LT51c2VyQ29u
dGVudE1hbmFnZXIgPSB1c2VyQ29udGVudE1hbmFnZXIgPyBXRUJLSVRfVVNFUl9DT05URU5UX01B
TkFHRVIodXNlckNvbnRlbnRNYW5hZ2VyKSA6IG51bGxwdHI7CisgICAgICAgIGJyZWFrOworICAg
IH0KICAgICBjYXNlIFBST1BfWk9PTV9MRVZFTDoKICAgICAgICAgd2Via2l0X3dlYl92aWV3X3Nl
dF96b29tX2xldmVsKHdlYlZpZXcsIGdfdmFsdWVfZ2V0X2RvdWJsZSh2YWx1ZSkpOwogICAgICAg
ICBicmVhazsKQEAgLTU2MSw2ICs1NjgsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0
UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAg
IGNhc2UgUFJPUF9HUk9VUDoKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2dyb3VwKHdlYlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX1VTRVJfQ09OVEVOVF9NQU5BR0VSOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3Qo
dmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldykp
OworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfVElUTEU6CiAgICAgICAgIGdfdmFsdWVf
c2V0X3N0cmluZyh2YWx1ZSwgd2ViVmlldy0+cHJpdi0+dGl0bGUuZGF0YSgpKTsKICAgICAgICAg
YnJlYWs7CkBAIC02NzEsNiArNjgxLDIzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19j
bGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFN
X0NPTlNUUlVDVF9PTkxZKSkpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzp1c2Vy
LWNvbnRlbnQtbWFuYWdlcjoKKyAgICAgKgorICAgICAqIFRoZSAjV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyIG9mIHRoZSB2aWV3LgorICAgICAqCisgICAgICogU2luY2U6IDIuNgorICAgICAqLwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFz
cywKKyAgICAgICAgUFJPUF9VU0VSX0NPTlRFTlRfTUFOQUdFUiwKKyAgICAgICAgZ19wYXJhbV9z
cGVjX29iamVjdCgKKyAgICAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsCisgICAgICAg
ICAgICBfKCJXZWJWaWV3IHVzZXIgY29udGVudCBtYW5hZ2VyIiksCisgICAgICAgICAgICBfKCJU
aGUgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIG9mIHRoZSB2aWV3IiksCisgICAgICAgICAgICBX
RUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUiwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1Rf
T05MWSkpKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6dGl0bGU6CiAgICAgICoK
ICAgICAgKiBUaGUgbWFpbiBmcmFtZSBkb2N1bWVudCB0aXRsZSBvZiB0aGlzICNXZWJLaXRXZWJW
aWV3LiBJZgpAQCAtMTkyNCw2ICsxOTUxLDggQEAgR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdf
bmV3X3dpdGhfY29udGV4dChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogICogWW91IGNhbiBh
bHNvIHVzZSB0aGlzIG1ldGhvZCB0byBpbXBsZW1lbnQgb3RoZXIgcHJvY2VzcyBtb2RlbHMgYmFz
ZWQgb24gJVdFQktJVF9QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVMs
CiAgKiBsaWtlIGZvciBleGFtcGxlLCBzaGFyaW5nIHRoZSBzYW1lIHdlYiBwcm9jZXNzIGZvciBh
bGwgdGhlIHZpZXdzIGluIHRoZSBzYW1lIHNlY3VyaXR5IGRvbWFpbi4KICAqCisgKiBUaGUgbmV3
bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldyB3aWxsIGFsc28gaGF2ZSB0aGUgc2FtZSAjV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyIGFzIEB3ZWJfdmlldy4KKyAqCiAgKiBSZXR1cm5zOiAodHJhbnNm
ZXIgZnVsbCk6IFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3IHdpZGdldAogICoKICAq
IFNpbmNlOiAyLjQKQEAgLTE5MzIsNyArMTk2MSwxMCBAQCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF9yZWxhdGVkX3ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIG51bGxw
dHIpOwogCi0gICAgcmV0dXJuIEdUS19XSURHRVQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dF
Ql9WSUVXLCAicmVsYXRlZC12aWV3Iiwgd2ViVmlldywgbnVsbHB0cikpOworICAgIHJldHVybiBH
VEtfV0lER0VUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKKyAgICAgICAgInVz
ZXItY29udGVudC1tYW5hZ2VyIiwgd2ViVmlldy0+cHJpdi0+dXNlckNvbnRlbnRNYW5hZ2VyLmdl
dCgpLAorICAgICAgICAicmVsYXRlZC12aWV3Iiwgd2ViVmlldywKKyAgICAgICAgbnVsbHB0cikp
OwogfQogCiAvKioKQEAgLTE5NTMsNiArMTk4NSwyNSBAQCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF9ncm91cChXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwKQogfQogCiAvKioK
KyAqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcjoKKyAqIEB1
c2VyX2NvbnRlbnRfbWFuYWdlcjogYSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLgorICoKKyAq
IENyZWF0ZXMgYSBuZXcgI1dlYktpdFdlYlZpZXcgd2l0aCB0aGUgZ2l2ZW4gI1dlYktpdFVzZXJD
b250ZW50TWFuYWdlci4KKyAqIFRoZSBjb250ZW50IGxvYWRlZCBpbiB0aGUgdmlldyBtYXkgYmUg
YWZmZWN0ZWQgYnkgdGhlIGNvbnRlbnQgaW5qZWN0ZWQKKyAqIGluIHRoZSB2aWV3IGJ5IHRoZSB1
c2VyIGNvbnRlbnQgbWFuYWdlci4KKyAqCisgKiBSZXR1cm5zOiBUaGUgbmV3bHkgY3JlYXRlZCAj
V2ViS2l0V2ViVmlldyB3aWRnZXQKKyAqCisgKiBTaW5jZTogMi42CisgKi8KK0d0a1dpZGdldCog
d2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFVzZXJD
b250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyKQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFOQUdFUih1c2VyQ29udGVudE1hbmFnZXIp
LCBudWxscHRyKTsKKworICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfVklFVywgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2Vy
LCBudWxscHRyKSk7Cit9CisKKy8qKgogICogd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0Ogog
ICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKgpAQCAtMTk4Niw2ICsyMDM3LDI0IEBA
IFdlYktpdFdlYlZpZXdHcm91cCogd2Via2l0X3dlYl92aWV3X2dldF9ncm91cChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogfQogCiAvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250
ZW50X21hbmFnZXI6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXRz
IHRoZSB1c2VyIGNvbnRlbnQgbWFuYWdlciBhc3NvY2lhdGVkIHRvIEB3ZWJfdmlldywgb3IgJU5V
TEwgaWYgdGhlCisgKiB2aWV3IGRvZXMgbm90IGhhdmUgYW4gdXNlciBjb250ZW50IG1hbmFnZXIu
CisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdFVzZXJDb250ZW50
TWFuYWdlciBhc3NvY2lhdGVkIHdpdGggdGhlIHZpZXcKKyAqCisgKiBTaW5jZTogMi42CisgKi8K
K1dlYktpdFVzZXJDb250ZW50TWFuYWdlciogd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRl
bnRfbWFuYWdlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0cik7CisKKyAgICByZXR1
cm4gd2ViVmlldy0+cHJpdi0+dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpOworfQorCisvKioKICAq
IHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaToKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmll
dwogICogQHVyaTogYW4gVVJJIHN0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IDU0OWQyNTRjYzI2ZWIzN2UyZmZlY2MwMWVk
YTY3MDNkMjE5N2NjY2EuLjliZjJjYzU0NmJjNDU2MjMyYzA5N2VlNmY5YmIyZjlmZWMyMDM3OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNjcmlwdERpYWxv
Zy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdFVSSVJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVzZXJDb250
ZW50TWFuYWdlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViSW5zcGVjdG9yLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRXZWJSZXNvdXJjZS5oPgpAQCAtMjYwLDYgKzI2MSw5IEBAIHdlYmtpdF93ZWJfdmlld19u
ZXdfd2l0aF9yZWxhdGVkX3ZpZXcgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcKIFdFQktJ
VF9BUEkgR3RrV2lkZ2V0ICoKIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9ncm91cCAgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXdHcm91cCAgICAgICAgKmdyb3VwKTsKIAorV0VC
S0lUX0FQSSBHdGtXaWRnZXQgKgord2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVu
dF9tYW5hZ2VyICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICAqdXNlcl9jb250ZW50
X21hbmFnZXIpOworCiBXRUJLSVRfQVBJIFdlYktpdFdlYkNvbnRleHQgKgogd2Via2l0X3dlYl92
aWV3X2dldF9jb250ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAqd2ViX3ZpZXcpOwogCkBAIC00NTUsNiArNDU5LDEwIEBAIFdFQktJVF9BUEkg
Y2Fpcm9fc3VyZmFjZV90ICoKIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5j
UmVzdWx0ICAgICAgICAgICAgICAqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAgICoqZXJy
b3IpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqCit3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwCmluZGV4IDcxYzdjZTVhZDJiMDI5N2QzYzRlMTMzNjQ3MWE1YWQxMTA1ZjM5MTguLjk4ZGZm
ZDk5ZGIzNTQyMjk4OTYzZDZjNTg4ODVhNjM2YzdiODFiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgorI2luY2x1ZGUgIldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVmlld0Jhc2VJbnB1dE1ldGhv
ZEZpbHRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0NsaXBib2FyZFV0aWxpdGllc0d0ay5oPgpAQCAtOTQxLDEwICs5NDIsMTAgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3
QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUKICAgICBjb250YWluZXJDbGFzcy0+Zm9yYWxsID0gd2Vi
a2l0V2ViVmlld0Jhc2VDb250YWluZXJGb3JhbGw7CiB9CiAKLVdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAq
IHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSkKK1dlYktpdFdlYlZpZXdCYXNl
KiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3Jv
dXAqIHBhZ2VHcm91cCwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqIHVzZXJDb250ZW50
Q29udHJvbGxlciwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSkKIHsKICAgICBXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVdfQkFTRSwgTlVMTCkpOwotICAgIHdlYmtpdFdlYlZp
ZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJraXRXZWJWaWV3QmFzZSwgY29udGV4dCwgcGFnZUdyb3Vw
LCByZWxhdGVkUGFnZSk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYmtp
dFdlYlZpZXdCYXNlLCBjb250ZXh0LCBwYWdlR3JvdXAsIHVzZXJDb250ZW50Q29udHJvbGxlciwg
cmVsYXRlZFBhZ2UpOwogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZTsKIH0KIApAQCAtOTc3
LDEzICs5NzgsMTQgQEAgc3RhdGljIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JDaGFuZ2VkKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKIH0KICNlbmRpZiAvLyBIQVZFKEdUS19T
Q0FMRV9GQUNUT1IpCiAKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgV2ViQ29udGV4dCogY29udGV4dCwgV2Vi
UGFnZUdyb3VwKiBwYWdlR3JvdXAsIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCit2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2Vi
Vmlld0Jhc2UsIFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRDb250cm9sbGVyLCBXZWJQ
YWdlUHJveHkqIHJlbGF0ZWRQYWdlKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSog
cHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2OwogCiAgICAgV2ViUGFnZUNvbmZpZ3VyYXRp
b24gd2ViUGFnZUNvbmZpZ3VyYXRpb247CiAgICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucGFnZUdy
b3VwID0gcGFnZUdyb3VwOwogICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnJlbGF0ZWRQYWdlID0g
cmVsYXRlZFBhZ2U7CisgICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9s
bGVyID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwogICAgIHByaXYtPnBhZ2VQcm94eSA9IGNvbnRl
eHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBhZ2VDbGllbnQsIHN0ZDo6bW92ZSh3ZWJQYWdlQ29u
ZmlndXJhdGlvbikpOwogICAgIHByaXYtPnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCBiOWMzOGMyNjU4NTI0YjU2YWVlZmEyZWUzZDU1
YThlOGFmOWQzM2U0Li5kZmUyMjg1ZTlhN2FhNzZmZWIzNGVlN2E5OGY5MzYyYmYwMmJjNWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUuaApAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiV2Vi
S2l0V2ViVmlld0Jhc2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAotV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYktpdDo6V2ViQ29udGV4dCosIFdl
YktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKK1dlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJLaXQ6OldlYkNvbnRleHQqLCBXZWJL
aXQ6OldlYlBhZ2VHcm91cCosIFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkq
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwogR3RrSU1Db250ZXh0KiB3ZWJraXRXZWJWaWV3QmFz
ZUdldElNQ29udGV4dChXZWJLaXRXZWJWaWV3QmFzZSopOwogV2ViS2l0OjpXZWJQYWdlUHJveHkq
IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXZWJLaXRXZWJWaWV3QmFzZSopOwotdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqLCBXZWJLaXQ6Oldl
YkNvbnRleHQqLCBXZWJLaXQ6OldlYlBhZ2VHcm91cCosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7
Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSos
IFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRpcFRleHQoV2ViS2l0V2ViVmlld0Jhc2UqLCBjb25z
dCBjaGFyKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRpcEFyZWEoV2ViS2l0V2Vi
Vmlld0Jhc2UqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiB2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlRm9yd2FyZE5leHRLZXlFdmVudChXZWJLaXRXZWJWaWV3QmFzZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5jcHAK
aW5kZXggYjIxZTc5ZjY4M2RhN2VmZmQxOThkZGZjODJhMzdlOWJmM2RjMjRjMC4uYzhhNjUwN2E4
ZTU5ODZmY2FkNmI2ODRiN2UzYmQ1OTliYjliMjA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuY3BwCkBAIC0yMzYs
NjMgKzIzNiwzIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncyhXZWJL
aXRXZWJWaWV3R3JvdXAqIGdyb3VwLCBXZWJLaXRTZXR0aW5nCiAgICAgd2Via2l0V2ViVmlld0dy
b3VwQXR0YWNoU2V0dGluZ3NUb1BhZ2VHcm91cChncm91cCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5
KEdfT0JKRUNUKGdyb3VwKSwgInNldHRpbmdzIik7CiB9Ci0KLXN0YXRpYyBQYXNzUmVmUHRyPEFQ
STo6QXJyYXk+IHRvQVBJQXJyYXkoY29uc3QgY2hhciogY29uc3QqIGxpc3QpCi17Ci0gICAgaWYg
KCFsaXN0KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmpl
Y3Q+ID4gZW50cmllczsKLSAgICB3aGlsZSAoKmxpc3QpIHsKLSAgICAgICAgZW50cmllcy5hcHBl
bmQoQVBJOjpTdHJpbmc6OmNyZWF0ZUZyb21VVEY4U3RyaW5nKCpsaXN0KSk7Ci0gICAgICAgIGxp
c3QrKzsKLSAgICB9Ci0gICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUoZW50
cmllcykpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9zdHls
ZV9zaGVldDoKLSAqIEBncm91cDogYSAjV2ViS2l0V2ViVmlld0dyb3VwCi0gKiBAc291cmNlOiB0
aGUgc291cmNlIG9mIHRoZSBzdHlsZV9zaGVldCB0byBpbmplY3QKLSAqIEBiYXNlX3VyaTogKGFs
bG93LW5vbmUpOiB0aGUgYmFzZSBVUkkgdG8gdXNlIHdoZW4gcHJvY2Vzc2luZyB0aGUgc3R5bGVf
c2hlZXQgY29udGVudHMgb3IgJU5VTEwgZm9yIGFib3V0OmJsYW5rCi0gKiBAd2hpdGVsaXN0OiAo
YXJyYXkgemVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25lKTogYSB3aGl0ZWxpc3Qgb2YgVVJJ
IHBhdHRlcm5zIG9yICVOVUxMCi0gKiBAYmxhY2tsaXN0OiAoYXJyYXkgemVyby10ZXJtaW5hdGVk
PTEpIChhbGxvdy1ub25lKTogYSBibGFja2xpc3Qgb2YgVVJJIHBhdHRlcm5zIG9yICVOVUxMCi0g
KiBAaW5qZWN0ZWRfZnJhbWVzOiBhICNXZWJLaXRJbmplY3RlZENvbnRlbnRGcmFtZXMgZGVzY3Jp
YmluZyB0byB3aGljaCBmcmFtZXMgdGhlIHN0eWxlX3NoZWV0IHNob3VsZCBhcHBseQotICoKLSAq
IEluamVjdCBhbiBleHRlcm5hbCBzdHlsZSBzaGVldCBpbnRvIHBhZ2VzLiBJdCBpcyBwb3NzaWJs
ZSB0byBvbmx5IGFwcGx5IHRoZSBzdHlsZSBzaGVldAotICogdG8gc29tZSBVUklzIGJ5IHBhc3Np
bmcgbm9uLW51bGwgdmFsdWVzIGZvciBAd2hpdGVsaXN0IG9yIEBibGFja2xpc3QuIFBhc3Npbmcg
YSAlTlVMTAotICogd2hpdGVsaXN0IGltcGxpZXMgdGhhdCBhbGwgVVJJcyBhcmUgb24gdGhlIHdo
aXRlbGlzdC4gVGhlIHN0eWxlIHNoZWV0IGlzIGFwcGxpZWQgaWYgYSBVUkkgbWF0Y2hlcwotICog
dGhlIHdoaXRlbGlzdCBhbmQgbm90IHRoZSBibGFja2xpc3QuIFVSSSBwYXR0ZXJucyBtdXN0IGJl
IG9mIHRoZSBmb3JtIFtwcm90b2NvbF06Ly9baG9zdF0vW3BhdGhdCi0gKiB3aGVyZSB0aGUgaG9z
dCBhbmQgcGF0aCBjb21wb25lbnRzIGNhbiBjb250YWluIHRoZSB3aWxkY2FyZCBjaGFyYWN0ZXIg
KCcqJykgdG8gcmVwcmVzZW50IHplcm8KLSAqIG9yIG1vcmUgb3RoZXIgY2hhcmFjdGVycy4KLSAq
Lwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3VzZXJfc3R5bGVfc2hlZXQoV2ViS2l0
V2ViVmlld0dyb3VwKiBncm91cCwgY29uc3QgY2hhciogc291cmNlLCBjb25zdCBjaGFyKiBiYXNl
VVJJLCBjb25zdCBjaGFyKiBjb25zdCogd2hpdGVsaXN0LCBjb25zdCBjaGFyKiBjb25zdCogYmxh
Y2tsaXN0LCBXZWJLaXRJbmplY3RlZENvbnRlbnRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCi17Ci0g
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVdfR1JPVVAoZ3JvdXApKTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKHNvdXJjZSk7Ci0KLSAgICBSZWZQdHI8QVBJOjpBcnJheT4gd2Vi
V2hpdGVsaXN0ID0gdG9BUElBcnJheSh3aGl0ZWxpc3QpOwotICAgIFJlZlB0cjxBUEk6OkFycmF5
PiB3ZWJCbGFja2xpc3QgPSB0b0FQSUFycmF5KGJsYWNrbGlzdCk7Ci0KLSAgICAvLyBXZSBhbHdh
eXMgdXNlIFVzZXJTdHlsZVVzZXJMZXZlbCB0byBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgV0tQYWdl
R3JvdXBBZGRVc2VyU3R5bGVTaGVldC4KLSAgICBncm91cC0+cHJpdi0+cGFnZUdyb3VwLT5hZGRV
c2VyU3R5bGVTaGVldCgKLSAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChzb3VyY2UpLAotICAgICAg
ICBTdHJpbmc6OmZyb21VVEY4KGJhc2VVUkkpLAotICAgICAgICB3ZWJXaGl0ZWxpc3QuZ2V0KCks
Ci0gICAgICAgIHdlYkJsYWNrbGlzdC5nZXQoKSwKLSAgICAgICAgdG9XZWJDb3JlVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksCi0gICAgICAgIFdlYkNvcmU6OlVzZXJT
dHlsZVVzZXJMZXZlbCk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl92aWV3X2dyb3VwX3JlbW92
ZV9hbGxfdXNlcl9zdHlsZV9zaGVldHM6Ci0gKiBAZ3JvdXA6IGEgI1dlYktpdFdlYlZpZXdHcm91
cAotICoKLSAqIFJlbW92ZSBhbGwgc3R5bGUgc2hlZXRzIHByZXZpb3VzbHkgaW5qZWN0ZWQgaW50
byB0aGlzICNXZWJLaXRXZWJWaWV3R3JvdXAgCi0gKiB2aWEgd2Via2l0X3dlYl92aWV3X2dyb3Vw
X2FkZF91c2VyX3N0eWxlX3NoZWV0KCkuCi0gKi8KLXZvaWQgd2Via2l0X3dlYl92aWV3X2dyb3Vw
X3JlbW92ZV9hbGxfdXNlcl9zdHlsZV9zaGVldHMoV2ViS2l0V2ViVmlld0dyb3VwKiBncm91cCkK
LXsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFV19HUk9VUChncm91cCkp
OwotICAgIGdyb3VwLT5wcml2LT5wYWdlR3JvdXAtPnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygp
OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0dyb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3R3JvdXAuaAppbmRleCA2ODVmMTk5MDRlZGNmZDljNmI1YWRiMGI1M2JlMDdhNzQ1NjM1
OGQ4Li44MzZlYTE3MzRmMzY4OTIwYzQ4Y2MzZjQ0YjI3YmIyOWJmZWU1ZDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAu
aApAQCAtODQsMTcgKzg0LDYgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfZ3Jv
dXBfc2V0X3NldHRpbmdzICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlld0dyb3VwICAgICAg
ICAgICpncm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRTZXR0aW5ncyAgICAgICAgICAgICAgKnNldHRpbmdzKTsKIAotV0VCS0lU
X0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3VzZXJfc3R5bGVfc2hlZXQgICAg
ICAgICAoV2ViS2l0V2ViVmlld0dyb3VwICAgICAgICAgICAqZ3JvdXAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAg
ICAgICAgICAgICAqc291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgKmJhc2VfdXJpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyICogY29uc3QgICAgICAgICAgKndoaXRlbGlzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIGNvbnN0ICAgICAg
ICAgICpibGFja2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0SW5qZWN0ZWRDb250ZW50RnJhbWVzICAgaW5qZWN0ZWRfZnJhbWVz
KTsKLQotV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2FsbF91
c2VyX3N0eWxlX3NoZWV0cyAoV2ViS2l0V2ViVmlld0dyb3VwICAgICAgICAgICpncm91cCk7Ci0K
IEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggNTQ4
MTNjOTAwYWQ2ZWMyZjExN2IxNjIxYjQxODgwYzIxZGM5ZGNhZS4uMDYzY2I2NzViYmZhOTJhOGQ1
NzBjM2IwMWY2ODVmYjAyY2U1NmJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC03
Myw2ICs3Myw0NSBAQCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAog
PFNFQ1RJT04+Cis8RklMRT5XZWJLaXRVc2VyQ29udGVudDwvRklMRT4KKzxUSVRMRT5XZWJLaXRV
c2VyQ29udGVudDwvVElUTEU+CitXZWJLaXRVc2VyU3R5bGVTaGVldAorV2ViS2l0VXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcworV2ViS2l0VXNlclN0eWxlTGV2ZWwKK3dlYmtpdF91c2VyX3N0eWxl
X3NoZWV0X3JlZgord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfdW5yZWYKK3dlYmtpdF91c2VyX3N0
eWxlX3NoZWV0X25ldworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dFQktJVF9UWVBFX1VTRVJf
U1RZTEVfU0hFRVQKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF91c2VyX3N0eWxlX3No
ZWV0X2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyPC9GSUxFPgorPFRJVExFPldlYktpdFVzZXJDb250ZW50TWFuYWdlcjwvVElU
TEU+CitXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdl
cl9uZXcKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQKK3dlYmtp
dF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3N0eWxlX3NoZWV0cworCis8U1VCU0VD
VElPTiBTdGFuZGFyZD4KK1dFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFOQUdFUgorV0VCS0lUX0lT
X1VTRVJfQ09OVEVOVF9NQU5BR0VSX0NMQVNTCitXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFO
QUdFUgorV0VCS0lUX1VTRVJfQ09OVEVOVF9NQU5BR0VSCitXRUJLSVRfVVNFUl9DT05URU5UX01B
TkFHRVJfQ0xBU1MKK1dFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUl9HRVRfQ0xBU1MKK1dlYktp
dFVzZXJDb250ZW50TWFuYWdlckNsYXNzCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXJQcml2YXRlCit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfZ2V0
X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRXZWJWaWV3PC9GSUxF
PgogPFRJVExFPldlYktpdFdlYlZpZXc8L1RJVExFPgogV2ViS2l0V2ViVmlldwpAQCAtOTYsOCAr
MTM1LDEwIEBAIHdlYmtpdF93ZWJfdmlld19uZXcKIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9j
b250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3CiB3ZWJraXRfd2Vi
X3ZpZXdfbmV3X3dpdGhfZ3JvdXAKK3dlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRl
bnRfbWFuYWdlcgogd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2dyb3VwCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyCiB3ZWJr
aXRfd2ViX3ZpZXdfbG9hZF91cmkKIHdlYmtpdF93ZWJfdmlld19sb2FkX2h0bWwKIHdlYmtpdF93
ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1sCkBAIC0xMDI1LDggKzEwNjYsNiBAQCB3ZWJraXRf
d2ViX3ZpZXdfZ3JvdXBfbmV3CiB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfZ2V0X25hbWUKIHdlYmtp
dF93ZWJfdmlld19ncm91cF9nZXRfc2V0dGluZ3MKIHdlYmtpdF93ZWJfdmlld19ncm91cF9zZXRf
c2V0dGluZ3MKLXdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldAotd2Vi
a2l0X3dlYl92aWV3X2dyb3VwX3JlbW92ZV9hbGxfdXNlcl9zdHlsZV9zaGVldHMKIAogPFNVQlNF
Q1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRXZWJWaWV3R3JvdXBDbGFzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IDQ2NDkwYTJlMDE0ZDYzZmFhYjBhMzA3
MmM5MDM4NDkzNDQ4YTIzMTIuLjUyY2NhZDMwNjJiZThjNTgzZTA1YmVlNmFjNzk1ZTkwNjg0ZjUx
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTYx
LDYgKzYxLDggQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVu
dC5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRWZXJzaW9uLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRX
ZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJJbnNwZWN0b3IuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IGYwZGQ2Yzc5MjQw
M2M4OWFjODgxOTg4YjNiMjlkM2M1NjMwYmU1YzUuLjkwYTFlNDdjMDg4OGMwOWJlNThkN2JjMjgz
ZGI3Yzk2M2JiNDNiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmNwcApAQCAtNjYsNyArNjYsOCBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjphZGRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5KQogICAgIHdlYlBy
b2Nlc3NQcm94eS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMp
OwogCiAgICAgd2ViUHJvY2Vzc1Byb3h5LmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyhtX3VzZXJTY3JpcHRzKSwgbV9p
ZGVudGlmaWVyKTsKLSAgICAKKyAgICB3ZWJQcm9jZXNzUHJveHkuY29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyht
X3VzZXJTdHlsZVNoZWV0cyksIG1faWRlbnRpZmllcik7CisKICAgICBWZWN0b3I8V2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXJIYW5kbGU+IG1lc3NhZ2VIYW5kbGVySGFuZGxlczsKICAgICBmb3IgKGF1
dG8mIGhhbmRsZXIgOiBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy52YWx1ZXMoKSkKICAgICAgICAg
bWVzc2FnZUhhbmRsZXJIYW5kbGVzLmFwcGVuZChoYW5kbGVyLT5oYW5kbGUoKSk7CkBAIC05Nyw2
ICs5OCwyMiBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxV
c2VyU2NyaXB0cygpCiAgICAgICAgIHByb2Nlc3NBbmRDb3VudC5rZXktPmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2Ny
aXB0cygpLCBtX2lkZW50aWZpZXIpOwogfQogCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjphZGRVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5
bGVTaGVldCkKK3sKKyAgICBtX3VzZXJTdHlsZVNoZWV0cy5hcHBlbmQoc3RkOjptb3ZlKHVzZXJT
dHlsZVNoZWV0KSk7CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NBbmRDb3VudCA6IG1fcHJvY2Vz
c2VzKQorICAgICAgICBwcm9jZXNzQW5kQ291bnQua2V5LT5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsgbV91
c2VyU3R5bGVTaGVldHMubGFzdCgpIH0pLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQorewor
ICAgIG1fdXNlclN0eWxlU2hlZXRzLmNsZWFyKCk7CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NB
bmRDb3VudCA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzQW5kQ291bnQua2V5LT5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
QWxsVXNlclN0eWxlU2hlZXRzKCksIG1faWRlbnRpZmllcik7Cit9CisKIGJvb2wgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlciogaGFuZGxlcikKIHsKICAgICBmb3IgKGF1dG8mIGV4aXN0aW5nSGFu
ZGxlciA6IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnZhbHVlcygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IGNmZjZmMjlkNDg2NGUwYTc2ODQ5ZmZhZjJl
YTA0NDlkNzRkYjA4NDkuLjdkYzA1OTVhYTJiN2MyZGU4MmJmYzA4MzM0YTE3M2M2Yjk0MWRhYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0zOSw2ICszOSw3
IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFVz
ZXJTY3JpcHQ7CitjbGFzcyBVc2VyU3R5bGVTaGVldDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01OSw2ICs2MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViQ29y
ZTo6VXNlclNjcmlwdCk7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cygpOwogCisgICAg
dm9pZCBhZGRVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCk7CisgICAgdm9p
ZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKKwogICAgIC8vIFJldHVybnMgZmFsc2UgaWYg
dGhlcmUgd2FzIGEgbmFtZSBjb25mbGljdC4KICAgICBib29sIGFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciopOwogICAgIHZvaWQgcmVtb3ZlVXNlck1l
c3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcmKTsKQEAgLTc1LDYgKzc5LDcgQEAgcHJp
dmF0ZToKICAgICBIYXNoQ291bnRlZFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsK
IAogICAgIFZlY3RvcjxXZWJDb3JlOjpVc2VyU2NyaXB0PiBtX3VzZXJTY3JpcHRzOworICAgIFZl
Y3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4gbV91c2VyU3R5bGVTaGVldHM7CiAgICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9zY3JpcHRN
ZXNzYWdlSGFuZGxlcnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IDU3OWIwOTlmODRkMjA2ODcxNzM1
MGQyMjY0ZTdmOTA4NTE0MmE3NDMuLjFlZGE3ZThlZmU4NmRjYTE1Yzg3M2IxMzI4ZjBhMTk2YTY0
OWVhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVj
dG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5z
cGVjdG9yUHJveHlHdGsuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiB7CiAgICAgQVNTRVJU
KG1fcGFnZSk7CiAgICAgQVNTRVJUKCFtX2luc3BlY3RvclZpZXcpOwotICAgIG1faW5zcGVjdG9y
VmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoJnBhZ2UoKS0+cHJvY2Vz
cygpLmNvbnRleHQoKSwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIG1fcGFnZSkpOworICAgIG1faW5z
cGVjdG9yVmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoJnBhZ2UoKS0+
cHJvY2VzcygpLmNvbnRleHQoKSwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIG51bGxwdHIsIG1fcGFn
ZSkpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QobV9pbnNwZWN0b3JW
aWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX2luc3BlY3RvclZpZXcpKTsKICAgICBy
ZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1faW5z
cGVjdG9yVmlldykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4
IGQ5ZGMxNWM1ODQ1NWI5MDg5Mjc1NDZmMDY2ZDgyOTVkMTM1M2Y2OTIuLjI0ZjIxNDgxNWE0M2Nk
YjExMGVmNTBhNDcwOTI1YjVkNDQ1YmM5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJX
b3JsZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2Vy
U3R5bGVTaGVldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgRU5B
QkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKQEAgLTkyLDYgKzkzLDE5IEBAIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCiAgICAgbV91c2VyQ29u
dGVudENvbnRyb2xsZXItPnJlbW92ZVVzZXJTY3JpcHRzKG1haW5UaHJlYWROb3JtYWxXb3JsZCgp
KTsKIH0KIAordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0
cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+JiB1c2VyU3R5bGVTaGVldHMp
Cit7CisgICAgZm9yIChjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVldCA6IHVzZXJTdHlsZVNoZWV0
cykgeworICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXQo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCksCisgICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0Pih1c2VyU3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdE
b2N1bWVudHMpOworICAgIH0KK30KKwordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJl
bW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCit7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXIt
PnJlbW92ZVVzZXJTdHlsZVNoZWV0cyhtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7Cit9CisKICNp
ZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQogY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvclByb3h5PiwgcHVibGljIFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3I6OkNsaWVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
aAppbmRleCA0Yzg0Njk5NjRjZmZkMGY2OWE5YzY3ZWFmYWRmZDA1ZWZhNTU2OTk3Li42MzljMjBl
MDAwYWVkNzk4YzJiNzNjZDFmMDRjZmI2YzJiNWQ2NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmgKQEAgLTU0LDYgKzU0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFVzZXJT
Y3JpcHRzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVc2VyU2NyaXB0PiYgdXNlclNjcmlwdHMpOwog
ICAgIHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdHMoKTsKIAorICAgIHZvaWQgYWRkVXNlclN0eWxl
U2hlZXRzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4mIHVzZXJTdHlsZVNo
ZWV0cyk7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKKwogICAgIHZvaWQg
YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8V2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJIYW5kbGU+JiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpOwogICAgIHZvaWQgcmVtb3Zl
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKHVpbnQ2NF90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgppbmRleCBkMGNmYzFmNzY2NzgxZmMwZDcz
NzUxNmNiMmFiNTJiYzk1NjUzOTc0Li5hOTNmYTQ3YzA2ODQ4N2Y1Y2FkNmU1YWUyZjVlZTE2ZWZi
YjUwMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdl
cy5pbgpAQCAtMjcsNiArMjcsOSBAQCBtZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIgewogICAgIEFkZFVzZXJTY3JpcHRzKFZlY3RvcjxXZWJDb3JlOjpVc2VyU2NyaXB0PiB1c2Vy
U2NyaXB0cyk7CiAgICAgUmVtb3ZlQWxsVXNlclNjcmlwdHMoKQogCisgICAgQWRkVXNlclN0eWxl
U2hlZXRzKFZlY3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxlU2hoZXRzKTsK
KyAgICBSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQorCiAgICAgQWRkVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyhWZWN0b3I8V2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4g
c2NyaXB0TWVzc2FnZUhhbmRsZXJzKTsKICAgICBSZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIodWludDY0X3QgaWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYjgyMmY3NzU3ZmNiM2RlMmU5NWVlMzA3YWM1MGJjOWIx
ZDM5NzBhLi5jODU0MTA2OWZlMTBlNDdiODI3YzFiZmJjNTFlNWMxM2ViYzdiMmViIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTQtMDctMDMgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBNb3ZlIHVzZXIgc3R5bGUgc2hlZXQgQVBJIG91dCBvZiBXZWJL
aXRXZWJWaWV3R3JvdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNDU1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92ZXMgdGVzdGluZyB1c2VyIHN0eWxlIHNoZWV0IGluamVjdGlvbiBmcm9tCisg
ICAgICAgIFRlc3RXZWJLaXRXZWJWaWV3R3JvdXAgYW5kIG1vdmVzIHRoYXQgaW50byBhIG5ldwor
ICAgICAgICBUZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLCBhZGFwdGluZyB0aGUgZXhpc3Rp
bmcgdGVzdHMgdG8gdGhlIG5ldworICAgICAgICBBUEkuIEFsc28sIGl0IGNvbnRhaW5zIGEgbmV3
IHRlc3QgY2FzZSBmb3IKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29u
dGVudF9tYW5hZ2VyKCkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFVz
ZXJDb250ZW50TWFuYWdlclRlc3Q6OlVzZXJDb250ZW50TWFuYWdlclRlc3QpOgorICAgICAgICAo
dGVzdFdlYlZpZXdOZXdXaXRoVXNlckNvbnRlbnRNYW5hZ2VyKToKKyAgICAgICAgKGlzU3R5bGVT
aGVldEluamVjdGVkRm9yVVJMQXRQYXRoKToKKyAgICAgICAgKGZpbGxVUkxMaXN0RnJvbVBhdGhz
KToKKyAgICAgICAgKHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKToK
KyAgICAgICAgKHRlc3RVc2VyQ29udGVudE1hbmFnZXJJbmplY3RlZFN0eWxlU2hlZXQpOgorICAg
ICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKGFm
dGVyQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdl
YktpdFdlYlZpZXdHcm91cC5jcHA6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAoYWZ0
ZXJBbGwpOgorICAgICAgICAoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgpOiBEZWxl
dGVkLgorICAgICAgICAoZmlsbFVSTExpc3RGcm9tUGF0aHMpOiBEZWxldGVkLgorICAgICAgICAo
cmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMpOiBEZWxldGVkLgorICAg
ICAgICAodGVzdFdlYlZpZXdHcm91cEluamVjdGVkU3R5bGVTaGVldCk6IERlbGV0ZWQuCisgICAg
ICAgIChzZXJ2ZXJDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9n
dGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHA6CisgICAgICAgIChXZWJWaWV3VGVzdDo6V2Vi
Vmlld1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmll
d1Rlc3QuaDoKKwogMjAxNC0wNy0wMyAgTMOhc3psw7MgTGFuZ8OzICA8bGxhbmdvLnUtc3plZ2Vk
QHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0phdmFTY3JpcHRDb3JlXSBBZGQgLS1j
bWFrZWFyZ3Mgb3B0aW9uIHRvIGJ1aWxkLWpzYy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dAppbmRleCBmNjZiNzMwYTg4YjY1MDFm
ZmI4ZDJmMTRiOWIxYjMxNjE3OGY1OTM1Li4xNzJiMzhhYTA4NzQ3MmIxMzUxMzFhNjI4NDMxNGEw
NGQ5NDlkYjVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL0NNYWtlTGlzdHMudHh0CkBAIC0xMTIsNiArMTEyLDcgQEAgQUREX1dLMl9URVNUKFRlc3RX
ZWJWaWV3RWRpdG9yIFRlc3RXZWJWaWV3RWRpdG9yLmNwcCkKIEFERF9XSzJfVEVTVChUZXN0V2Vi
S2l0V2ViVmlld0dyb3VwIFRlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwKQogQUREX1dLMl9URVNU
KFRlc3RXZWJLaXRXZWJDb250ZXh0IFRlc3RXZWJLaXRXZWJDb250ZXh0LmNwcCkKIEFERF9XSzJf
VEVTVChUZXN0V2ViS2l0V2ViVmlldyBUZXN0V2ViS2l0V2ViVmlldy5jcHApCitBRERfV0syX1RF
U1QoVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlciBUZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLmNwcCkKIAogaWYgKEFUU1BJX0ZPVU5EKQogICAgIEFERF9XSzJfVEVTVChBY2Nlc3NpYmls
aXR5VGVzdFNlcnZlciBBY2Nlc3NpYmlsaXR5VGVzdFNlcnZlci5jcHApCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFVzZXJDb250ZW50
TWFuYWdlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdl
YktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTA0ZTM2N2JjZTI0MTlhZmQ4
ODdmNTY5ZjVkNDFiNjBmZjg0ZDVlOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApA
QCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgorI2lu
Y2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5jbHVkZSA8Y3N0ZGFyZz4KKyNpbmNsdWRlIDxndGsv
Z3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgorCitjbGFzcyBVc2VyQ29udGVudE1hbmFnZXJUZXN0IDogcHVibGljIFdl
YlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFVzZXJDb250
ZW50TWFuYWdlclRlc3QpOworCisgICAgVXNlckNvbnRlbnRNYW5hZ2VyVGVzdCgpCisgICAgICAg
IDogV2ViVmlld1Rlc3QoV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91
c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCkpKSkK
KyAgICB7CisgICAgICAgIC8vIEEgcmVmZXJlbmNlIGlzIGxlYWtlZCB3aGVuIHBhc3NpbmcgdGhl
IHJlc3VsdCBvZiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCkKKyAgICAgICAgLy8g
ZGlyZWN0bHkgdG8gd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2Vy
KCkgYWJvdmUuIEFkb3B0aW5nIHRoZQorICAgICAgICAvLyByZWZlcmVuY2UgaGVyZSBhdm9pZHMg
dGhlIGxlYWsuCisgICAgICAgIG1fdXNlckNvbnRlbnRNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIobV93ZWJWaWV3KSk7CisgICAgICAg
IGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobV91c2VyQ29u
dGVudE1hbmFnZXIuZ2V0KCkpKTsKKyAgICB9CisKKyAgICBHUmVmUHRyPFdlYktpdFVzZXJDb250
ZW50TWFuYWdlcj4gbV91c2VyQ29udGVudE1hbmFnZXI7Cit9OworCitzdGF0aWMgV2ViS2l0VGVz
dFNlcnZlcioga1NlcnZlcjsKKworLy8gVGhlc2UgYXJlIGFsbCBoZXJlIHNvIHRoYXQgdGhleSBj
YW4gYmUgY2hhbmdlZCBlYXNpbHksIGlmIG5lY2Vzc2FyeS4KK3N0YXRpYyBjb25zdCBjaGFyKiBr
U3R5bGVTaGVldEhUTUwgPSAiPGh0bWw+PGRpdiBpZD1cInN0eWxlZEVsZW1lbnRcIj5Td2VldCBz
dHlsZXohPC9kaXY+PC9odG1sPiI7CitzdGF0aWMgY29uc3QgY2hhcioga0luamVjdGVkU3R5bGVT
aGVldCA9ICIjc3R5bGVkRWxlbWVudCB7IGZvbnQtd2VpZ2h0OiBib2xkOyB9IjsKK3N0YXRpYyBj
b25zdCBjaGFyKiBrU3R5bGVTaGVldFRlc3RTY3JpcHQgPSAiZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc3R5bGVkRWxlbWVudCcpKVsnZm9udC13ZWlnaHQnXSI7Citz
dGF0aWMgY29uc3QgY2hhcioga1N0eWxlU2hlZXRUZXN0U2NyaXB0UmVzdWx0ID0gImJvbGQiOwor
CitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05ld1dpdGhVc2VyQ29udGVudE1hbmFnZXIoVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBHUmVmUHRyPFdlYktpdFVzZXJDb250ZW50TWFu
YWdlcj4gdXNlckNvbnRlbnRNYW5hZ2VyMSA9IGFkb3B0R1JlZih3ZWJraXRfdXNlcl9jb250ZW50
X21hbmFnZXJfbmV3KCkpOworICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0
RmluaXNoZXMoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSkpOworICAgIEdSZWZQ
dHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzEgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92
aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKHVzZXJDb250ZW50TWFuYWdlcjEuZ2V0
KCkpKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5h
Z2VyKHdlYlZpZXcxLmdldCgpKSA9PSB1c2VyQ29udGVudE1hbmFnZXIxLmdldCgpKTsKKworICAg
IEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzIgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0
X3dlYl92aWV3X25ldygpKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJf
Y29udGVudF9tYW5hZ2VyKHdlYlZpZXcyLmdldCgpKSAhPSB1c2VyQ29udGVudE1hbmFnZXIxLmdl
dCgpKTsKK30KKworc3RhdGljIGJvb2wgaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgo
V2ViVmlld1Rlc3QqIHRlc3QsIGNvbnN0IGNoYXIqIHBhdGgpCit7CisgICAgdGVzdC0+bG9hZFVS
SShrU2VydmVyLT5nZXRVUklGb3JQYXRoKHBhdGgpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Cisg
ICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChrU3R5bGVTaGVldFRlc3RTY3JpcHQsICZlcnJv
ci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3Nl
cnQoIWVycm9yLmdldCgpKTsKKworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzdWx0U3RyaW5nKFdl
YlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsK
KyAgICByZXR1cm4gIWdfc3RyY21wMChyZXN1bHRTdHJpbmcuZ2V0KCksIGtTdHlsZVNoZWV0VGVz
dFNjcmlwdFJlc3VsdCk7Cit9CisKK3N0YXRpYyB2b2lkIGZpbGxVUkxMaXN0RnJvbVBhdGhzKGNo
YXIqKiBsaXN0LCBjb25zdCBjaGFyKiBwYXRoLCAuLi4pCit7CisgICAgdmFfbGlzdCBhcmd1bWVu
dExpc3Q7CisgICAgdmFfc3RhcnQoYXJndW1lbnRMaXN0LCBwYXRoKTsKKworICAgIGludCBpID0g
MDsKKyAgICB3aGlsZSAocGF0aCkgeworICAgICAgICAvLyBGSVhNRTogV2UgbXVzdCB1c2UgYSB3
aWxkY2FyZCBmb3IgdGhlIGhvc3QgaGVyZSB1bnRpbCBodHRwOi8vd2tidWcuY29tLzExMjQ3NiBp
cyBmaXhlZC4KKyAgICAgICAgLy8gVW50aWwgdGhhdCB0aW1lIHBhdHRlcm5zIHdpdGggcG9ydCBu
dW1iZXJzIGluIHRoZW0gd2lsbCBub3QgcHJvcGVybHkgbWF0Y2ggVVJMcyB3aXRoIHBvcnQgbnVt
YmVycy4KKyAgICAgICAgbGlzdFtpKytdID0gZ19zdHJkdXBfcHJpbnRmKCJodHRwOi8vKi8lcyoi
LCBwYXRoKTsKKyAgICAgICAgcGF0aCA9IHZhX2FyZyhhcmd1bWVudExpc3QsIGNvbnN0IGNoYXIq
KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNB
bmRSZXNldExpc3RzKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2Vy
LCBjaGFyKiogd2hpdGVsaXN0LCBjaGFyKiogYmxhY2tsaXN0KQoreworICAgIHdlYmtpdF91c2Vy
X2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3N0eWxlX3NoZWV0cyh1c2VyQ29udGVudE1hbmFn
ZXIpOworCisgICAgd2hpbGUgKCp3aGl0ZWxpc3QpIHsKKyAgICAgICAgZ19mcmVlKCp3aGl0ZWxp
c3QpOworICAgICAgICAqd2hpdGVsaXN0ID0gMDsKKyAgICAgICAgd2hpdGVsaXN0Kys7CisgICAg
fQorCisgICAgd2hpbGUgKCpibGFja2xpc3QpIHsKKyAgICAgICAgZ19mcmVlKCpibGFja2xpc3Qp
OworICAgICAgICAqYmxhY2tsaXN0ID0gMDsKKyAgICAgICAgYmxhY2tsaXN0Kys7CisgICAgfQor
fQorCitzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNoZWV0
KFVzZXJDb250ZW50TWFuYWdlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgY2hh
ciogd2hpdGVsaXN0WzNdID0geyAwLCAwLCAwIH07CisgICAgY2hhciogYmxhY2tsaXN0WzNdID0g
eyAwLCAwLCAwIH07CisKKyAgICByZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRM
aXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xp
c3QpOworCisgICAgLy8gV2l0aG91dCBhIHdoaXRlbGlzdCBvciBhIGJsYWNrbGlzdCBhbGwgVVJM
cyBzaG91bGQgaGF2ZSB0aGUgaW5qZWN0ZWQgc3R5bGUgc2hlZXQuCisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHJhbmRvbVBhdGggPSAic29tZXJhbmRvbXBhdGgiOworICAgIGdfYXNzZXJ0KCFpc1N0
eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7CisgICAgV2Vi
S2l0VXNlclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9u
ZXcoa0luamVjdGVkU3R5bGVTaGVldCwgV0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfQUxMX0ZS
QU1FUywgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfVVNFUiwgbnVsbHB0ciwgbnVsbHB0cik7Cisg
ICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldCh0ZXN0LT5tX3Vz
ZXJDb250ZW50TWFuYWdlci5nZXQoKSwgc3R5bGVTaGVldCk7CisgICAgd2Via2l0X3VzZXJfc3R5
bGVfc2hlZXRfdW5yZWYoc3R5bGVTaGVldCk7CisgICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5q
ZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOworCisgICAgcmVtb3ZlT2xkSW5q
ZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHModGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIu
Z2V0KCksIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKKworICAgIGZpbGxVUkxMaXN0RnJvbVBhdGhz
KGJsYWNrbGlzdCwgcmFuZG9tUGF0aCwgMCk7CisgICAgc3R5bGVTaGVldCA9IHdlYmtpdF91c2Vy
X3N0eWxlX3NoZWV0X25ldyhrSW5qZWN0ZWRTdHlsZVNoZWV0LCBXRUJLSVRfVVNFUl9DT05URU5U
X0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9VU0VSLCBudWxscHRy
LCBibGFja2xpc3QpOworICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5bGVf
c2hlZXQodGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHN0eWxlU2hlZXQpOworICAg
IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmKHN0eWxlU2hlZXQpOworICAgIGdfYXNzZXJ0
KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7Cisg
ICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgInNvbWVv
dGhlcnJhbmRvbXBhdGgiKSk7CisKKyAgICByZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5k
UmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgd2hpdGVsaXN0LCBi
bGFja2xpc3QpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGluVGhlV2hpdGVMaXN0ID0gImlu
dGhld2hpdGVsaXN0IjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogbm90SW5XaGl0ZWxpc3QgPSAi
bm90aW50aGV3aGl0ZWxpc3QiOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpblRoZVdoaXRlTGlz
dEFuZEJsYWNrTGlzdCA9ICJpbnRoZXdoaXRlbGlzdGFuZGJsYWNrbGlzdCI7CisKKyAgICBmaWxs
VVJMTGlzdEZyb21QYXRocyh3aGl0ZWxpc3QsIGluVGhlV2hpdGVMaXN0LCBpblRoZVdoaXRlTGlz
dEFuZEJsYWNrTGlzdCwgMCk7CisgICAgZmlsbFVSTExpc3RGcm9tUGF0aHMoYmxhY2tsaXN0LCBp
blRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCwgMCk7CisgICAgc3R5bGVTaGVldCA9IHdlYmtpdF91
c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5qZWN0ZWRTdHlsZVNoZWV0LCBXRUJLSVRfVVNFUl9DT05U
RU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9VU0VSLCB3aGl0
ZWxpc3QsIGJsYWNrbGlzdCk7CisgICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9z
dHlsZV9zaGVldCh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgc3R5bGVTaGVldCk7
CisgICAgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfdW5yZWYoc3R5bGVTaGVldCk7CisgICAgZ19h
c3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgaW5UaGVXaGl0ZUxp
c3QpKTsKKyAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVz
dCwgaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xpc3QpKTsKKyAgICBnX2Fzc2VydCghaXNTdHlsZVNo
ZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgbm90SW5XaGl0ZWxpc3QpKTsKKworICAgIC8v
IEl0J3MgaW1wb3J0YW50IHRvIGNsZWFuIHVwIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgb3RoZXIg
dGVzdHMuCisgICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHModGVz
dC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKK30K
Kworc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVz
c2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRD
b250ZXh0KiwgZ3BvaW50ZXIpCit7CisgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2Fn
ZSwgU09VUF9TVEFUVVNfT0spOworICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdl
LT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIGtTdHlsZVNoZWV0SFRNTCwgc3Ry
bGVuKGtTdHlsZVNoZWV0SFRNTCkpOworICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1l
c3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworfQorCit2b2lkIGJlZm9yZUFsbCgpCit7CisgICAga1Nl
cnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7CisgICAga1NlcnZlci0+cnVuKHNlcnZlckNh
bGxiYWNrKTsKKworICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJuZXctd2l0aC11c2Vy
LWNvbnRlbnQtbWFuYWdlciIsIHRlc3RXZWJWaWV3TmV3V2l0aFVzZXJDb250ZW50TWFuYWdlcik7
CisgICAgVXNlckNvbnRlbnRNYW5hZ2VyVGVzdDo6YWRkKCJXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIiLCAiaW5qZWN0ZWQtc3R5bGUtc2hlZXQiLCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0
ZWRTdHlsZVNoZWV0KTsKK30KKwordm9pZCBhZnRlckFsbCgpCit7CisgICAgZGVsZXRlIGtTZXJ2
ZXI7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAKaW5kZXggNDQ4YWJkMmZlNTMyYzZj
MTRmZTIzMzlmM2MxNzY3ZjBhOWRhODAzMS4uY2NiYTg5ZDQ2MmU0NGEyNTNlZThmYWU0NmRiNmQ2
OWVlNDg1NmVjOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcApAQCAtMjYsMTQgKzI2
LDYgQEAKICNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HUmVmUHRyLmg+CiAKLXN0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOwotCi0vLyBU
aGVzZSBhcmUgYWxsIGhlcmUgc28gdGhhdCB0aGV5IGNhbiBiZSBjaGFuZ2VkIGVhc2lseSwgaWYg
bmVjZXNzYXJ5Lgotc3RhdGljIGNvbnN0IGNoYXIqIGtTdHlsZVNoZWV0SFRNTCA9ICI8aHRtbD48
ZGl2IGlkPVwic3R5bGVkRWxlbWVudFwiPlN3ZWV0IHN0eWxleiE8L2Rpdj48L2h0bWw+IjsKLXN0
YXRpYyBjb25zdCBjaGFyKiBrSW5qZWN0ZWRTdHlsZVNoZWV0ID0gIiNzdHlsZWRFbGVtZW50IHsg
Zm9udC13ZWlnaHQ6IGJvbGQ7IH0iOwotc3RhdGljIGNvbnN0IGNoYXIqIGtTdHlsZVNoZWV0VGVz
dFNjcmlwdCA9ICJnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdHls
ZWRFbGVtZW50JykpWydmb250LXdlaWdodCddIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBrU3R5bGVT
aGVldFRlc3RTY3JpcHRSZXN1bHQgPSAiYm9sZCI7Ci0KIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
R3JvdXBEZWZhdWx0KFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgLy8gRGVmYXVs
dCBncm91cCBpcyBzaGFyZWQgYnkgYWxsIFdlYlZpZXdzIGJ5IGRlZmF1bHQuCkBAIC05OCwxMDkg
KzkwLDE0IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3R3JvdXBTZXR0aW5ncyhUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRf
c2V0dGluZ3Mod2Via2l0X3dlYl92aWV3X2dldF9ncm91cCh3ZWJWaWV3MS5nZXQoKSkpID09IHdl
YlZpZXcyU2V0dGluZ3MpOwogfQogCi1zdGF0aWMgYm9vbCBpc1N0eWxlU2hlZXRJbmplY3RlZEZv
clVSTEF0UGF0aChXZWJWaWV3VGVzdCogdGVzdCwgY29uc3QgY2hhciogcGF0aCkKLXsKLSAgICB0
ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgocGF0aCkuZGF0YSgpKTsKLSAgICB0
ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLQotICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKLSAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0g
dGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGtTdHlsZVNoZWV0VGVzdFNj
cmlwdCwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsK
LSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotCi0gICAgR1VuaXF1ZVB0cjxjaGFyPiByZXN1
bHRTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlw
dFJlc3VsdCkpOwotICAgIHJldHVybiAhZ19zdHJjbXAwKHJlc3VsdFN0cmluZy5nZXQoKSwga1N0
eWxlU2hlZXRUZXN0U2NyaXB0UmVzdWx0KTsKLX0KLQotc3RhdGljIHZvaWQgZmlsbFVSTExpc3RG
cm9tUGF0aHMoY2hhcioqIGxpc3QsIGNvbnN0IGNoYXIqIHBhdGgsIC4uLikKLXsKLSAgICB2YV9s
aXN0IGFyZ3VtZW50TGlzdDsKLSAgICB2YV9zdGFydChhcmd1bWVudExpc3QsIHBhdGgpOwotCi0g
ICAgaW50IGkgPSAwOwotICAgIHdoaWxlIChwYXRoKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBt
dXN0IHVzZSBhIHdpbGRjYXJkIGZvciB0aGUgaG9zdCBoZXJlIHVudGlsIGh0dHA6Ly93a2J1Zy5j
b20vMTEyNDc2IGlzIGZpeGVkLgotICAgICAgICAvLyBVbnRpbCB0aGF0IHRpbWUgcGF0dGVybnMg
d2l0aCBwb3J0IG51bWJlcnMgaW4gdGhlbSB3aWxsIG5vdCBwcm9wZXJseSBtYXRjaCBVUkxzIHdp
dGggcG9ydCBudW1iZXJzLgotICAgICAgICBsaXN0W2krK10gPSBnX3N0cmR1cF9wcmludGYoImh0
dHA6Ly8qLyVzKiIsIHBhdGgpOwotICAgICAgICBwYXRoID0gdmFfYXJnKGFyZ3VtZW50TGlzdCwg
Y29uc3QgY2hhciopOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgcmVtb3ZlT2xkSW5qZWN0ZWRT
dHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoV2ViS2l0V2ViVmlld0dyb3VwKiBncm91cCwgY2hhcioq
IHdoaXRlbGlzdCwgY2hhcioqIGJsYWNrbGlzdCkKLXsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfZ3Jv
dXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyhncm91cCk7Ci0KLSAgICB3aGlsZSAoKndo
aXRlbGlzdCkgewotICAgICAgICBnX2ZyZWUoKndoaXRlbGlzdCk7Ci0gICAgICAgICp3aGl0ZWxp
c3QgPSAwOwotICAgICAgICB3aGl0ZWxpc3QrKzsKLSAgICB9Ci0KLSAgICB3aGlsZSAoKmJsYWNr
bGlzdCkgewotICAgICAgICBnX2ZyZWUoKmJsYWNrbGlzdCk7Ci0gICAgICAgICpibGFja2xpc3Qg
PSAwOwotICAgICAgICBibGFja2xpc3QrKzsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3R3JvdXBJbmplY3RlZFN0eWxlU2hlZXQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCi17Ci0gICAgV2ViS2l0V2ViVmlld0dyb3VwKiBncm91cCA9IHdlYmtpdF93ZWJfdmll
d19nZXRfZ3JvdXAodGVzdC0+bV93ZWJWaWV3KTsKLSAgICBjaGFyKiB3aGl0ZWxpc3RbM10gPSB7
IDAsIDAsIDAgfTsKLSAgICBjaGFyKiBibGFja2xpc3RbM10gPSB7IDAsIDAsIDAgfTsKLQotICAg
IHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKGdyb3VwLCB3aGl0ZWxp
c3QsIGJsYWNrbGlzdCk7Ci0KLSAgICAvLyBXaXRob3V0IGEgd2hpdGVsaXN0IG9yIGEgYmxhY2ts
aXN0IGFsbCBVUkxzIHNob3VsZCBoYXZlIHRoZSBpbmplY3RlZCBzdHlsZSBzaGVldC4KLSAgICBz
dGF0aWMgY29uc3QgY2hhciogcmFuZG9tUGF0aCA9ICJzb21lcmFuZG9tcGF0aCI7Ci0gICAgZ19h
c3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgp
KTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3VzZXJfc3R5bGVfc2hlZXQoZ3JvdXAs
IGtJbmplY3RlZFN0eWxlU2hlZXQsIDAsIDAsIDAsIFdFQktJVF9JTkpFQ1RFRF9DT05URU5UX0ZS
QU1FU19BTEwpOwotICAgIGdfYXNzZXJ0KGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRo
KHRlc3QsIHJhbmRvbVBhdGgpKTsKLQotICAgIHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNB
bmRSZXNldExpc3RzKGdyb3VwLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7Ci0KLSAgICBmaWxsVVJM
TGlzdEZyb21QYXRocyhibGFja2xpc3QsIHJhbmRvbVBhdGgsIDApOwotICAgIHdlYmtpdF93ZWJf
dmlld19ncm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldChncm91cCwga0luamVjdGVkU3R5bGVTaGVl
dCwgMCwgMCwgYmxhY2tsaXN0LCBXRUJLSVRfSU5KRUNURURfQ09OVEVOVF9GUkFNRVNfQUxMKTsK
LSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFu
ZG9tUGF0aCkpOwotICAgIGdfYXNzZXJ0KGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRo
KHRlc3QsICJzb21lb3RoZXJyYW5kb21wYXRoIikpOwotCi0gICAgcmVtb3ZlT2xkSW5qZWN0ZWRT
dHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoZ3JvdXAsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKLQot
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpblRoZVdoaXRlTGlzdCA9ICJpbnRoZXdoaXRlbGlzdCI7
Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIG5vdEluV2hpdGVsaXN0ID0gIm5vdGludGhld2hpdGVs
aXN0IjsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xpc3Qg
PSAiaW50aGV3aGl0ZWxpc3RhbmRibGFja2xpc3QiOwotCi0gICAgZmlsbFVSTExpc3RGcm9tUGF0
aHMod2hpdGVsaXN0LCBpblRoZVdoaXRlTGlzdCwgaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xpc3Qs
IDApOwotICAgIGZpbGxVUkxMaXN0RnJvbVBhdGhzKGJsYWNrbGlzdCwgaW5UaGVXaGl0ZUxpc3RB
bmRCbGFja0xpc3QsIDApOwotICAgIHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9zdHls
ZV9zaGVldChncm91cCwga0luamVjdGVkU3R5bGVTaGVldCwgMCwgd2hpdGVsaXN0LCBibGFja2xp
c3QsIFdFQktJVF9JTkpFQ1RFRF9DT05URU5UX0ZSQU1FU19BTEwpOwotICAgIGdfYXNzZXJ0KGlz
U3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIGluVGhlV2hpdGVMaXN0KSk7Ci0g
ICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIGluVGhl
V2hpdGVMaXN0QW5kQmxhY2tMaXN0KSk7Ci0gICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVj
dGVkRm9yVVJMQXRQYXRoKHRlc3QsIG5vdEluV2hpdGVsaXN0KSk7Ci0KLSAgICAvLyBJdCdzIGlt
cG9ydGFudCB0byBjbGVhbiB1cCB0aGUgZW52aXJvbm1lbnQgYmVmb3JlIG90aGVyIHRlc3RzLgot
ICAgIHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKGdyb3VwLCB3aGl0
ZWxpc3QsIGJsYWNrbGlzdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBT
ZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdI
YXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyKQotewotICAgIHNvdXBfbWVz
c2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKLSAgICBzb3VwX21lc3Nh
Z2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElD
LCBrU3R5bGVTaGVldEhUTUwsIHN0cmxlbihrU3R5bGVTaGVldEhUTUwpKTsKLSAgICBzb3VwX21l
c3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKLX0KLQogdm9pZCBi
ZWZvcmVBbGwoKQogewotICAgIGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwotICAg
IGtTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7Ci0KICAgICBUZXN0OjphZGQoIldlYktpdFdl
YlZpZXdHcm91cCIsICJkZWZhdWx0LWdyb3VwIiwgdGVzdFdlYlZpZXdHcm91cERlZmF1bHQpOwog
ICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlld0dyb3VwIiwgIm5ldy1ncm91cCIsIHRlc3RXZWJW
aWV3R3JvdXBOZXdHcm91cCk7CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm5ldy13
aXRoLWdyb3VwIiwgdGVzdFdlYlZpZXdOZXdXaXRoR3JvdXApOwogICAgIFRlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlld0dyb3VwIiwgInNldHRpbmdzIiwgdGVzdFdlYlZpZXdHcm91cFNldHRpbmdzKTsK
LSAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3R3JvdXAiLCAiaW5qZWN0ZWQtc3R5
bGUtc2hlZXQiLCB0ZXN0V2ViVmlld0dyb3VwSW5qZWN0ZWRTdHlsZVNoZWV0KTsKIH0KIAogdm9p
ZCBhZnRlckFsbCgpCiB7Ci0gICAgZGVsZXRlIGtTZXJ2ZXI7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDExOThiMDhi
ZTY4M2Q1OTM5MjQ2ZDkwYTUwZTNiMWQ0ZWY3M2MwMzcuLmViZDAzYjRkNGFhODAyY2FlNjgyOTBl
NGRkNjcyMjVkMDRjMzdlNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dl
YktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dl
YktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwCkBAIC0yNSw3ICsyNSwxMCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgogCiBXZWJWaWV3VGVzdDo6V2ViVmlld1Rlc3QoKQotICAg
IDogbV93ZWJWaWV3KFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9yZWZfc2luayh3ZWJraXRfd2Vi
X3ZpZXdfbmV3KCkpKSkKKyAgICA6IFdlYlZpZXdUZXN0KFdFQktJVF9XRUJfVklFVyh3ZWJraXRf
d2ViX3ZpZXdfbmV3KCkpKSB7IH0KKworV2ViVmlld1Rlc3Q6OldlYlZpZXdUZXN0KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcoV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0
X3JlZl9zaW5rKHdlYlZpZXcpKSkKICAgICAsIG1fbWFpbkxvb3AoZ19tYWluX2xvb3BfbmV3KDAs
IFRSVUUpKQogICAgICwgbV9wYXJlbnRXaW5kb3coMCkKICAgICAsIG1famF2YXNjcmlwdFJlc3Vs
dCgwKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJW
aWV3VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVz
dC5oCmluZGV4IGY0NWUxMjVjOWQ0ZmEyZGNkNjQzZDYxNDBhYWEzN2RmMTYwYmEzODguLjJiY2Y1
NjM1OThhN2VmZjg2YTI4NjEwMTJkMGNmYTg3NDE5OTdhZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuaAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAK
IGNsYXNzIFdlYlZpZXdUZXN0OiBwdWJsaWMgVGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElC
X1RFU1RfRklYVFVSRShXZWJWaWV3VGVzdCk7CisgICAgV2ViVmlld1Rlc3QoV2ViS2l0V2ViVmll
dyopOwogICAgIFdlYlZpZXdUZXN0KCk7CiAgICAgdmlydHVhbCB+V2ViVmlld1Rlc3QoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234486</attachid>
            <date>2014-07-07 04:34:19 -0700</date>
            <delta_ts>2014-07-08 07:53:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134551-20140707143633.patch</filename>
            <type>text/plain</type>
            <size>75781</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTk4M2MwOGVmYmQ3NTE5
YjY2ZTNhNGNiM2U5MjQ0YmQ3MmQ4Mjk4OS4uMDI3MDc5M2EzODJiOGFmNTczNGU2YTRlZjMxZWU0
OGRjNjg0ZDRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE0LTA3LTA3ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
TW92ZSB1c2VyIHN0eWxlIHNoZWV0IEFQSSBvdXQgb2YgV2ViS2l0V2ViVmlld0dyb3VwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ1NTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBJbmNsdWRlIHRoZSBuZXcgc291cmNlIGZpbGVzIGluIHRoZSBidWlsZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdDcmVh
dGUpOgorICAgICAgICBBZGFwdCB0byB0aGUgYWRkaXRpb25hbCB3ZWJraXRXZWJWaWV3QmFzZUNy
ZWF0ZVdlYlBhZ2UoKSBwYXJhbWV0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlckNvbnRlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRvVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyk6CisgICAgICAgICh0b1VzZXJTdHlsZUxldmVsKToKKyAgICAgICAgKHRvU3RyaW5n
VmVjdG9yKToKKyAgICAgICAgKF9XZWJLaXRVc2VyU3R5bGVTaGVldDo6X1dlYktpdFVzZXJTdHls
ZVNoZWV0KToKKyAgICAgICAgKHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZik6CisgICAgICAg
ICh3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZik6CisgICAgICAgICh3ZWJraXRfdXNlcl9z
dHlsZV9zaGVldF9uZXcpOgorICAgICAgICAod2Via2l0V2ViS2l0VXNlclN0eWxlU2hlZXRUb1Vz
ZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXJQcml2YXRlOjpfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZSk6CisgICAgICAgICh3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfbmV3KToKKyAgICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQpOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9t
YW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzKToKKyAgICAgICAgKHdlYmtpdFVzZXJDb250
ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudFByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOiBB
ZGQgYSBuZXcgcGFyYW1ldGVyIHRvIGFsbG93CisgICAgICAgIHBhc3NpbmcgdGhlIFdlYktpdFVz
ZXJDb250ZW50TWFuYWdlciB0aGF0IHRoZSB3ZWIgdmlldyB3aWxsIHVzZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdDb25zdHJ1Y3RlZCk6IEFkZGVkIGhhbmRsaW5nIG9mIHRoZQorICAgICAgICAidXNl
ci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5IG9uIGNvbnN0cnVjdGlvbi4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZQorICAgICAgICAi
dXNlci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5LgorICAgICAgICAod2Via2l0V2ViVmlld0dl
dFByb3BlcnR5KTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlCisgICAgICAgICJ1c2VyLWNvbnRlbnQt
bWFuYWdlciIgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6
IEFkZGVkIHRoZSAidXNlci1jb250ZW50LW1hbmFnZXIiCisgICAgICAgIHByb3BlcnR5IGRlZmlu
aXRpb24gdG8gdGhlIFdlYktpdFdlYlZpZXcgY2xhc3MuCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KTogTWFkZSByZWxhdGVkIHZpZXdzIHNoYXJlCisgICAg
ICAgIHRoZSBzYW1lIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciB1c2VkIGJ5IHRoZSB2aWV3IHRo
ZXkgYXJlCisgICAgICAgIHJlbGF0ZWQgdG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3
X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZCBuZXcgQVBJIG1ldGhvZHMuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VDcmVhdGUpOiBBZGRlZCBhIHBhcmFtZXRlciB0byBwYXNzIHRoZSB1c2Vy
CisgICAgICAgIGNvbnRlbnQgbWFuYWdlci4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlV2ViUGFnZSk6IEFkZGVkIGEgcGFyYW1ldGVyIHRvIHBhc3MgdGhlIHVzZXIKKyAgICAgICAg
Y29udGVudCBtYW5hZ2VyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3JvdXAuY3BwOiBSZW1vdmVkIHRoZSBiaXRzIHJlbGF0ZWQKKyAgICAgICAgdG8g
dXNlciBzdHlsZSBzaGVldCBzdXBwb3J0IGZyb20gV2ViS2l0V2ViVmlld0dyb3VwLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncyk6CisgICAgICAgICh0b0FQSUFy
cmF5KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9z
dHlsZV9zaGVldCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVt
b3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmg6IERlbGV0ZWQgdGhlIEFQSSBtZXRob2RzCisg
ICAgICAgIGZvciB1c2VyIHN0eWxlIHNoZWV0IGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZGVkIHRoZSBuZXcgQVBJ
CisgICAgICAgIGZ1bmN0aW9ucyBhbmQgdHlwZXMsIGFuZCByZW1vdmVkIHRoZSBtZXRob2RzIHdo
aWNoIGFyZSBubyBsb25nZXIKKyAgICAgICAgYXZhaWxhYmxlIGluIFdlYktpdFdlYlZpZXdHcm91
cC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEFkZCB0aGUgbmV3IGhl
YWRlcnMuCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcDogQWRkZWQKKyAgICAgICAgbWV0aG9kcyB0byBhZGQgYW5kIHJlbW92
ZSB1c2VyIHN0eWxlIHNoZWV0cywgYWxpa2UgdGhvc2UgdXNlZCBmb3IKKyAgICAgICAgdXNlciBz
Y3JpcHRzLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
YWRkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOiBEaXR0
by4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9y
UGFnZSk6CisgICAgICAgIEFkYXB0IHRvIHRoZSBhZGRpdGlvbmFsIHdlYmtpdFdlYlZpZXdCYXNl
Q3JlYXRlV2ViUGFnZSgpIHBhcmFtZXRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHA6IEFkZGVkIG1ldGhvZHMKKyAgICAgICAg
dG8gYWRkIGFuZCByZW1vdmUgdXNlciBzdHlsZSBzaGVldHMsIGFsaWtlIHRob3NlIHVzZWQgZm9y
IHVzZXIgc2NyaXB0cy4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjphZGRVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaDogRGl0dG8uCisgICAgICAg
ICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2Fn
ZXMuaW46CisgICAgICAgIERpdHRvLgorCiAyMDE0LTA3LTA2ICBCZW5qYW1pbiBQb3VsYWluICA8
YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdW1dLMl0gVGhlIHRhcCBoaWdobGln
aHQgSUQgaXMgbm90IGludmFsaWRhdGVkIHdoZW4gYSBsb25nIHByZXNzIGVuZHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggOTFiMDQyNDU3ZjA0NTUxOTA5MWFhN2FlMTRhOTI3ZDZiYjBjMDhjNy4u
MmQ2MTAwYmMyY2ExM2RlNmJkZDE2Y2VmZTc1ODA0NmU4OWNkODBiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTkyNCw2ICs5MjQsOCBAQCBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUQxRXYKIF9fWk43V2ViQ29yZTIxVVJMQnlSZW1vdmluZ1VzZXJJbmZvRVA1TlNVUkwKIF9f
Wk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMTNhZGRVc2VyU2NyaXB0RVJOU18xNURP
TVdyYXBwZXJXb3JsZEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzEwVXNlclNjcmlwdEVOUzNfMTRk
ZWZhdWx0X2RlbGV0ZUlTNV9FRUVFCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxl
cjE3cmVtb3ZlVXNlclNjcmlwdHNFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQorX19aTjdXZWJDb3Jl
MjFVc2VyQ29udGVudENvbnRyb2xsZXIxN2FkZFVzZXJTdHlsZVNoZWV0RVJOU18xNURPTVdyYXBw
ZXJXb3JsZEVOU3QzX18xMTB1bmlxdWVfcHRySU5TXzE0VXNlclN0eWxlU2hlZXRFTlMzXzE0ZGVm
YXVsdF9kZWxldGVJUzVfRUVFRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKK19fWk43V2Vi
Q29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMjFyZW1vdmVVc2VyU3R5bGVTaGVldHNFUk5TXzE1
RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXIzMWFk
ZFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JFUk5TXzI4VXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvckUKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMzRyZW1vdmVVc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yRVJOU18yOFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3JFCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxlcjZjcmVhdGVFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhNGJhOWFhOWFjMGIxMTNlMGViOGM5ZDc0Zjc5M2I0NzU2
ZGI5MTFlLi44MThlMGVmN2E1MDZlMDQ5MzUyMWMwOTdhMmI1MmFiZTZhNGZhZGRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMjEwLDYgKzIxMCwxMiBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaAogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKKyAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5oCisgICAgVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlckNvbnRlbnQuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNl
ckNvbnRlbnRQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
clByaXZhdGUuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
ci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRWZXJzaW9uLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFZlcnNpb24uaC5pbgogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwCkBAIC0zNTMsNiArMzU5LDggQEAgc2V0KFdlYktpdDJHVEtfSU5T
VEFMTEVEX0hFQURFUlMKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklSZXF1ZXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklSZXNwb25zZS5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdC5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlckNvbnRlbnQuaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmgKICAgICAke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJSZXNvdXJjZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAKaW5kZXggNmYwYzA0YmYyNzNkYmZmNjFkOWIwZmJk
YzI3YTgwZDUzOGYyYzMyMy4uYmM3YjgzZjk1YTQ3MmU1MzczYzA3ODE2YWZhZWVlMTRjNWQyMWQw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcApA
QCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV0tWaWV3UmVmIFdL
Vmlld0NyZWF0ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwUmVmKQogewotICAgIHJldHVybiB0b0FQSSh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSh0b0lt
cGwoY29udGV4dFJlZiksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCBudWxscHRyKSk7CisgICAgcmV0
dXJuIHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSwgdG9J
bXBsKHBhZ2VHcm91cFJlZiksIG51bGxwdHIsIG51bGxwdHIpKTsKIH0KIAogV0tQYWdlUmVmIFdL
Vmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVh
YTk1MTI3MzQwZTllZTc3M2Q4NThjMTMxZTNiNDU2ZjczM2VhYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50LmNwcApA
QCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnQuaCIKKworI2lu
Y2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudFByaXZh
dGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLyoqCisgKiBT
RUNUSU9OOldlYktpdFVzZXJDb250ZW50CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IERlZmluZXMg
dXNlciBjb250ZW50IHR5cGVzIHdoaWNoIGFmZmVjdCB3ZWIgcGFnZXMuCisgKiBAdGl0bGU6IFVz
ZXIgY29udGVudAorICoKKyAqIFNlZSBhbHNvOiAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCisg
KgorICogU2luY2U6IDIuNgorICovCisKK3N0YXRpYyBpbmxpbmUgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoV2ViS2l0VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKK3sKKyAgICBzd2l0Y2ggKGluamVjdGVkRnJhbWVz
KSB7CisgICAgY2FzZSBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9UT1BfRlJBTUU6CisgICAg
ICAgIHJldHVybiBJbmplY3RJblRvcEZyYW1lT25seTsKKyAgICBjYXNlIFdFQktJVF9VU0VSX0NP
TlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6CisgICAgICAgIHJldHVybiBJbmplY3RJbkFsbEZyYW1l
czsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIEluamVjdEluQWxsRnJhbWVzOworICAgIH0KK30KKworc3RhdGljIGlubGluZSBVc2Vy
U3R5bGVMZXZlbCB0b1VzZXJTdHlsZUxldmVsKFdlYktpdFVzZXJTdHlsZUxldmVsIHN0eWxlTGV2
ZWwpCit7CisgICAgc3dpdGNoIChzdHlsZUxldmVsKSB7CisgICAgY2FzZSBXRUJLSVRfVVNFUl9T
VFlMRV9MRVZFTF9VU0VSOgorICAgICAgICByZXR1cm4gVXNlclN0eWxlVXNlckxldmVsOworICAg
IGNhc2UgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfQVVUSE9SOgorICAgICAgICByZXR1cm4gVXNl
clN0eWxlQXV0aG9yTGV2ZWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBVc2VyU3R5bGVBdXRob3JMZXZlbDsKKyAgICB9Cit9CisK
K3N0YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWN0b3IoY29uc3QgY2hhciog
Y29uc3QqIHN0cnYpCit7CisgICAgaWYgKCFzdHJ2KQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0
cmluZz4oKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICBmb3IgKGF1dG8gc3Ry
ID0gc3RydjsgKnN0cjsgKytzdHIpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RkOjptb3ZlKFN0
cmluZzo6ZnJvbVVURjgoKnN0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdHJ1Y3Qg
X1dlYktpdFVzZXJTdHlsZVNoZWV0IHsKKyAgICBfV2ViS2l0VXNlclN0eWxlU2hlZXQoY29uc3Qg
Z2NoYXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcywgV2ViS2l0VXNlclN0eWxlTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIqIGNvbnN0KiB3aGl0
ZWxpc3QsIGNvbnN0IGNoYXIqIGNvbnN0KiBibGFja2xpc3QpCisgICAgICAgIDogdXNlclN0eWxl
U2hlZXQoc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oCisgICAgICAgICAgICBTdHJp
bmc6OmZyb21VVEY4KHNvdXJjZSksIFVSTCB7IH0sCisgICAgICAgICAgICB0b1N0cmluZ1ZlY3Rv
cih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLAorICAgICAgICAgICAgdG9V
c2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSwKKyAgICAgICAgICAgIHRv
VXNlclN0eWxlTGV2ZWwobGV2ZWwpKSkKKyAgICAgICAgLCByZWZlcmVuY2VDb3VudCgxKQorICAg
IHsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHls
ZVNoZWV0OworICAgIGludCByZWZlcmVuY2VDb3VudDsKK307CisKK0dfREVGSU5FX0JPWEVEX1RZ
UEUoV2ViS2l0VXNlclN0eWxlU2hlZXQsIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0LCB3ZWJraXRf
dXNlcl9zdHlsZV9zaGVldF9yZWYsIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmKQorCisv
KioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZjoKKyAqIEB1c2VyX3N0eWxlX3NoZWV0
OiBhICNXZWJLaXRVc2VyU3R5bGVTaGVldAorICoKKyAqIEF0b21pY2FsbHkgaW5jcmVtZW50cyB0
aGUgcmVmZXJlbmNlIGNvdW50IG9mIEB1c2VyX3N0eWxlX3NoZWV0IGJ5IG9uZS4KKyAqIFRoaXMg
ZnVuY3Rpb24gaXMgTVQtc2FmZSBhbmQgbWF5IGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisg
KgorICogUmV0dXJuczogVGhlIHBhc3NlZCAjV2ViS2l0VXNlclN0eWxlU2hlZXQKKyAqCisgKiBT
aW5jZTogMi42CisgKi8KK1dlYktpdFVzZXJTdHlsZVNoZWV0KiB3ZWJraXRfdXNlcl9zdHlsZV9z
aGVldF9yZWYoV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0KQoreworICAgIGdf
YXRvbWljX2ludF9pbmMoJnVzZXJTdHlsZVNoZWV0LT5yZWZlcmVuY2VDb3VudCk7CisgICAgcmV0
dXJuIHVzZXJTdHlsZVNoZWV0OworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X3VucmVmOgorICogQHVzZXJfc3R5bGVfc2hlZXQ6IGEgI1dlYktpdFVzZXJTdHlsZVNoZWV0Cisg
KgorICogQXRvbWljYWxseSBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgQHVzZXJf
c3R5bGVfc2hlZXQgYnkgb25lLgorICogSWYgdGhlIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byAw
LCBhbGwgbWVtb3J5IGFsbG9jYXRlZCBieQorICogI1dlYktpdFVzZXJTdHlsZVNoZWV0IGlzIHJl
bGVhc2VkLiBUaGlzIGZ1bmN0aW9uIGlzIE1ULXNhZmUgYW5kIG1heSBiZQorICogY2FsbGVkIGZy
b20gYW55IHRocmVhZC4KKyAqCisgKiBTaW5jZTogMi42CisgKi8KK3ZvaWQgd2Via2l0X3VzZXJf
c3R5bGVfc2hlZXRfdW5yZWYoV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0KQor
eworICAgIGlmIChnX2F0b21pY19pbnRfZGVjX2FuZF90ZXN0KCZ1c2VyU3R5bGVTaGVldC0+cmVm
ZXJlbmNlQ291bnQpKSB7CisgICAgICAgIHVzZXJTdHlsZVNoZWV0LT5+V2ViS2l0VXNlclN0eWxl
U2hlZXQoKTsKKyAgICAgICAgZ19zbGljZV9mcmVlKFdlYktpdFVzZXJTdHlsZVNoZWV0LCB1c2Vy
U3R5bGVTaGVldCk7CisgICAgfQorfQorCisvKioKKyAqIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X25ldzoKKyAqIEBzb3VyY2U6IFNvdXJjZSBjb2RlIG9mIHRoZSB1c2VyIHN0eWxlIHNoZWV0Lgor
ICogQGluamVjdGVkX2ZyYW1lczogQSAjV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB2
YWx1ZQorICogQGxldmVsOiBBICNXZWJLaXRVc2VyU3R5bGVMZXZlbAorICogQHdoaXRlbGlzdDog
KGFycmF5IHplcm8tdGVybWluYXRlZD0xKSAoYWxsb3ctbm9uZSk6IEEgd2hpdGVsaXN0IG9mIFVS
SSBwYXR0ZXJucyBvciAlTlVMTAorICogQGJsYWNrbGlzdDogKGFycmF5IHplcm8tdGVybWluYXRl
ZD0xKSAoYWxsb3ctbm9uZSk6IEEgYmxhY2tsaXN0IG9mIFVSSSBwYXR0ZXJucyBvciAlTlVMTAor
ICoKKyAqIENyZWF0ZXMgYSBuZXcgdXNlciBzdHlsZSBzaGVldC4gU3R5bGUgc2hlZXRzIGNhbiBi
ZSBhcHBsaWVkIHRvIHNvbWUgVVJJcworICogb25seSBieSBwYXNzaW5nIG5vbi1udWxsIHZhbHVl
cyBmb3IgQHdoaXRlbGlzdCBvciBAYmxhY2tsaXN0LiBQYXNzaW5nIGEKKyAqICVOVUxMIHdoaXRl
bGlzdCBpbXBsaWVzIHRoYXQgYWxsIFVSSXMgYXJlIG9uIHRoZSB3aGl0ZWxpc3QuIFRoZSBzdHls
ZQorICogc2hlZXQgaXMgYXBwbGllZCBpZiBhbiBVUkkgbWF0Y2hlcyB0aGUgd2hpdGVsaXN0IGFu
ZCBub3QgdGhlIGJsYWNrbGlzdC4KKyAqIFVSSSBwYXR0ZXJucyBtdXN0IGJlIG9mIHRoZSBmb3Jt
IGBbcHJvdG9jb2xdOi8vW2hvc3RdL1twYXRoXWAsIHdoZXJlIHRoZQorICogKmhvc3QqIGFuZCAq
cGF0aCogY29tcG9uZW50cyBjYW4gY29udGFpbiB0aGUgd2lsZGNhcmQgY2hhcmFjdGVyIChgKmAp
IHRvCisgKiByZXByZXNlbnQgemVybyBvciBtb3JlIG90aGVyIGNoYXJhY3RlcnMuCisgKgorICog
UmV0dXJuczogQSBuZXcgI1dlYktpdFVzZXJTdHlsZVNoZWV0CisgKgorICogU2luY2U6IDIuNgor
ICovCitXZWJLaXRVc2VyU3R5bGVTaGVldCogd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGNv
bnN0IGdjaGFyKiBzb3VyY2UsIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0
ZWRGcmFtZXMsIFdlYktpdFVzZXJTdHlsZUxldmVsIGxldmVsLCBjb25zdCBjaGFyKiBjb25zdCog
d2hpdGVsaXN0LCBjb25zdCBjaGFyKiBjb25zdCogYmxhY2tsaXN0KQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHNvdXJjZSwgbnVsbHB0cik7CisgICAgV2ViS2l0VXNlclN0eWxlU2hlZXQq
IHVzZXJTdHlsZVNoZWV0ID0gZ19zbGljZV9uZXcoV2ViS2l0VXNlclN0eWxlU2hlZXQpOworICAg
IG5ldyAodXNlclN0eWxlU2hlZXQpIFdlYktpdFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgaW5qZWN0
ZWRGcmFtZXMsIGxldmVsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisgICAgcmV0dXJuIHVzZXJT
dHlsZVNoZWV0OworfQorCitjb25zdCBVc2VyU3R5bGVTaGVldCYgd2Via2l0VXNlclN0eWxlU2hl
ZXRHZXRVc2VyU3R5bGVTaGVldChXZWJLaXRVc2VyU3R5bGVTaGVldCogdXNlclN0eWxlU2hlZXQp
Cit7CisgICAgcmV0dXJuICp1c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQ7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMWQzYWRlYjUyMjhmM2U4MjI0OGU0MTJmMzdhNDQwZTgzNGQ2Y2RlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlckNvbnRlbnQuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmlu
ZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+
IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVc2Vy
Q29udGVudF9oCisjZGVmaW5lIFdlYktpdFVzZXJDb250ZW50X2gKKworI2luY2x1ZGUgPGdsaWIt
b2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5f
REVDTFMKKworLyoqCisgKiBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOgorICogQFdF
QktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM6IEluc2VydCB0aGUgdXNlciBzdHls
ZQorICogICBzaGVldCBpbiBhbGwgdGhlIGZyYW1lcyBsb2FkZWQgYnkgdGhlIHdlYiB2aWV3LCBp
bmNsdWRpbmcKKyAqICAgbmVzdGVkIGZyYW1lcy4gVGhpcyBpcyB0aGUgZGVmYXVsdC4KKyAqIEBX
RUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9UT1BfRlJBTUU6IEluc2VydCB0aGUgdXNlciBzdHls
ZQorICogICBzaGVldCAqb25seSogaW4gdGhlIHRvcC1sZXZlbCBmcmFtZSBsb2FkZWQgYnkgdGhl
IHdlYiB2aWV3LAorICogICBhbmQgKm5vdCogaW4gdGhlIG5lc3RlZCBmcmFtZXMuCisgKgorICog
U3BlY2lmaWVzIGluIHdoaWNoIGZyYW1lcyB1c2VyIHN0eWxlIHNoZWV0cyBhcmUgdG8gYmUgaW5z
ZXJ0ZWQgaW4uCisgKgorICogU2luY2U6IDIuNgorICovCit0eXBlZGVmIGVudW0geworICAgIFdF
QktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVMsCisgICAgV0VCS0lUX1VTRVJfQ09O
VEVOVF9JTkpFQ1RfVE9QX0ZSQU1FLAorfSBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OworCisvKioKKyAqIFdlYktpdFVzZXJTdHlsZUxldmVsOgorICogQFdFQktJVF9VU0VSX1NUWUxF
X0xFVkVMX1VTRVI6IFRoZSBzdHlsZSBzaGVldCBpcyBhbiB1c2VyIHN0eWxlIHNoZWV0LAorICog
ICBpdHMgY29udGVudHMgYWx3YXlzIG92ZXJyaWRlIG90aGVyIHN0eWxlIHNoZWV0cy4gVGhpcyBp
cyB0aGUgZGVmYXVsdC4KKyAqIEBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9BVVRIT1I6IFRoZSBz
dHlsZSBzaGVldCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYKKyAqICAgaXQgd2FzIHByb3ZpZGVkIGJ5
IHRoZSBsb2FkZWQgZG9jdW1lbnRzLiBUaGF0IG1lYW5zIG90aGVyIHVzZXIgc3R5bGUKKyAqICAg
c2hlZXRzIG1heSBzdGlsbCBvdmVycmlkZSBpdC4KKyAqCisgKiBTcGVjaWZpZXMgaG93IHRvIHRy
ZWF0IGFuIHVzZXIgc3R5bGUgc2hlZXQuCisgKgorICogU2luY2U6IDIuNgorICovCit0eXBlZGVm
IGVudW0geworICAgIFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsCisgICAgV0VCS0lUX1VT
RVJfU1RZTEVfTEVWRUxfQVVUSE9SLAorfSBXZWJLaXRVc2VyU3R5bGVMZXZlbDsKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9VU0VSX1NUWUxFX1NIRUVUICh3ZWJraXRfdXNlcl9jb250ZW50X2dldF90
eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyU3R5bGVTaGVldCBXZWJLaXRVc2Vy
U3R5bGVTaGVldDsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRf
Z2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKK3dl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZiAgICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAg
ICAgICAgKnVzZXJfc3R5bGVfc2hlZXQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF91c2Vy
X3N0eWxlX3NoZWV0X3VucmVmICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAgICAgICAgKnVz
ZXJfc3R5bGVfc2hlZXQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKK3dl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyAgICAgIChjb25zdCBnY2hhciAgICAgICAgICAgICAg
ICAgICAgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkX2ZyYW1lcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyU3R5bGVMZXZlbCAgICAgICAgICAgIGxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAg
ICAgICAgICAgICAqd2hpdGVsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqYmxhY2tsaXN0KTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTFiNGNj
NTdkYTY4NTJkMjgxZTdlM2MwN2ZjZGE1N2U5ODY4NmU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNw
cApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5M
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmgiCisKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50UHJpdmF0
ZS5oIgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX1dlYktpdFVzZXJD
b250ZW50TWFuYWdlclByaXZhdGUgeworICAgIF9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2
YXRlKCkKKyAgICAgICAgOiB1c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmNyZWF0ZSgpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk+IHVzZXJDb250ZW50Q29udHJvbGxlcjsKK307CisKKy8q
KgorICogU0VDVElPTjpXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIKKyAqIEBzaG9ydF9kZXNjcmlw
dGlvbjogTWFuYWdlcyB1c2VyLWRlZmluZWQgY29udGVudCB3aGljaCBhZmZlY3RzIHdlYiBwYWdl
cy4KKyAqIEB0aXRsZTogV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCisgKgorICogVXNpbmcgYSAj
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIHVzZXIgQ1NTIHN0eWxlIHNoZWV0cyBjYW4gYmUgc2V0
IHRvCisgKiBiZSBpbmplY3RlZCBpbiB0aGUgd2ViIHBhZ2VzIGxvYWRlZCBieSBhICNXZWJLaXRX
ZWJWaWV3LCBieQorICogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVl
dCgpLgorICoKKyAqIFRvIHVzZSBhICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIsIGl0IG11c3Qg
YmUgY3JlYXRlZCB1c2luZworICogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldygpLCBh
bmQgdGhlbiBwYXNzZWQgdG8KKyAqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRl
bnRfbWFuYWdlcigpLiBVc2VyIHN0eWxlCisgKiBzaGVldHMgY2FuIGJlIGNyZWF0ZWQgd2l0aCB3
ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXcoKS4KKyAqCisgKiBVc2VyIHN0eWxlIHNoZWV0cyBj
YW4gYmUgYWRkZWQgYW5kIHJlbW92ZWQgYXQgYW55IHRpbWUsIGJ1dAorICogdGhleSB3aWxsIGFm
ZmVjdCB0aGUgd2ViIHBhZ2VzIGxvYWRlZCBhZnRlcndhcmRzLgorICoKKyAqIFNpbmNlOiAyLjYK
KyAqLworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLCB3ZWJr
aXRfdXNlcl9jb250ZW50X21hbmFnZXIsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkIHdl
YmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9jbGFzc19pbml0KFdlYktpdFVzZXJDb250ZW50TWFu
YWdlckNsYXNzKikKK3sKK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJf
bmV3OgorICoKKyAqIENyZWF0ZXMgYSBuZXcgdXNlciBjb250ZW50IG1hbmFnZXIuCisgKgorICog
UmV0dXJuczogQSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCisgKgorICogU2luY2U6IDIuNgor
ICovCitXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdl
cl9uZXcoKQoreworICAgIHJldHVybiBXRUJLSVRfVVNFUl9DT05URU5UX01BTkFHRVIoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSLCBudWxscHRyKSk7Cit9CisK
Ky8qKgorICogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldDoKKyAq
IEBtYW5hZ2VyOiBBICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIKKyAqIEBzdHlsZXNoZWV0OiBB
ICNXZWJLaXRVc2VyU3R5bGVTaGVldAorICoKKyAqIEFkZHMgYSAjV2ViS2l0VXNlclN0eWxlU2hl
ZXQgdG8gdGhlIGdpdmVuICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuCisgKiBUaGUgc2FtZSAj
V2ViS2l0VXNlclN0eWxlU2hlZXQgY2FuIGJlIHJldXNlZCB3aXRoIG11bHRpcGxlCisgKiAjV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyIGluc3RhbmNlcy4KKyAqCisgKiBTaW5jZTogMi42CisgKi8K
K3ZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldChXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXIqIG1hbmFnZXIsIFdlYktpdFVzZXJTdHlsZVNoZWV0KiBzdHlsZVNo
ZWV0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5B
R0VSKG1hbmFnZXIpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHN0eWxlU2hlZXQpOworICAgIG1h
bmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXQod2Vi
a2l0VXNlclN0eWxlU2hlZXRHZXRVc2VyU3R5bGVTaGVldChzdHlsZVNoZWV0KSk7Cit9CisKKy8q
KgorICogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRz
OgorICogQG1hbmFnZXI6IEEgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlcgorICoKKyAqIFJlbW92
ZXMgYWxsIHVzZXIgc3R5bGUgc2hlZXRzIGZyb20gdGhlIGdpdmVuICNXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuCisgKgorICogU2luY2U6IDIuNgorICovCit2b2lkIHdlYmtpdF91c2VyX2NvbnRl
bnRfbWFuYWdlcl9yZW1vdmVfYWxsX3N0eWxlX3NoZWV0cyhXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIqIG1hbmFnZXIpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNFUl9DT05U
RU5UX01BTkFHRVIobWFuYWdlcikpOworICAgIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29u
dHJvbGxlci0+cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7Cit9CisKK1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KiB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eShXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIG1hbmFnZXIpCit7CisgICAg
cmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci5nZXQoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250
ZW50TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjkxOTUwMGZhZWYwYzU4NWYwY2E0OTYzNjQy
ZTZlYjgzM2ExNzJlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCkBAIC0wLDAgKzEsNzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lU
Ml9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJP
bmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRp
ZgorCisjaWZuZGVmIFdlYktpdFVzZXJDb250ZW50TWFuYWdlcl9oCisjZGVmaW5lIFdlYktpdFVz
ZXJDb250ZW50TWFuYWdlcl9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlckNv
bnRlbnQuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1VTRVJfQ09O
VEVOVF9NQU5BR0VSICAgICAgICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9nZXRf
dHlwZSgpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9DT05URU5UX01BTkFHRVIob2JqKSAgICAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfVVNFUl9D
T05URU5UX01BTkFHRVIsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlcikpCisjZGVmaW5lIFdFQktJ
VF9JU19VU0VSX0NPTlRFTlRfTUFOQUdFUihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUikpCisjZGVm
aW5lIFdFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9D
SEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdF
UiwgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfVVNF
Ul9DT05URU5UX01BTkFHRVJfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNFUl9DT05URU5UX01BTkFHRVIpKQorI2RlZmluZSBXRUJL
SVRfVVNFUl9DT05URU5UX01BTkFHRVJfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0Vf
R0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfVVNFUl9DT05URU5UX01BTkFHRVIsIFdlYktp
dFVzZXJDb250ZW50TWFuYWdlckNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJD
b250ZW50TWFuYWdlciAgICAgICAgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyOwordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFVzZXJDb250ZW50TWFuYWdlckNsYXNzICAgV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJp
dmF0ZSBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlOworCisKK3N0cnVjdCBfV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyIHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIC8qPCBwcml2
YXRlID4qLworICAgIFdlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUgKnByaXY7Cit9Owor
CitzdHJ1Y3QgX1dlYktpdFVzZXJDb250ZW50TWFuYWdlckNsYXNzIHsKKyAgICBHT2JqZWN0Q2xh
c3MgcGFyZW50X2NsYXNzOworCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAodm9pZCk7
CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJr
aXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQzKSAodm9p
ZCk7Cit9OworCisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdl
cl9nZXRfdHlwZSAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyICoKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXcgICAgICAg
ICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3VzZXJfY29u
dGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldCAgICAgICAgIChXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdFVzZXJTdHlsZVNoZWV0ICAgICAqc3R5bGVzaGVldCk7CitXRUJL
SVRfQVBJIHZvaWQKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3N0eWxl
X3NoZWV0cyAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICptYW5hZ2VyKTsKKworR19FTkRfREVD
TFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjc5MWE1MzU3YjQxOTIxOWNmNjZkZmM3NmJkYzJkMTY0ZmIzYjY1YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50
TWFuYWdlclByaXZhdGUuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZV9o
CisjZGVmaW5lIFdlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGVfaAorCisjaW5jbHVkZSAi
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaCIKKworV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSog
d2Via2l0VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyKik7CisKKyNlbmRpZiAvLyBXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXJQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJDb250ZW50UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIxYTdhZTVh
MTBiNDBhZmZjNjNkNTU3Yjg1Y2NmMTkzZWFjYzM0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50UHJpdmF0ZS5oCkBA
IC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lm
bmRlZiBXZWJLaXRVc2VyQ29udGVudFByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRVc2VyQ29udGVu
dFByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnQuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1VzZXJTdHlsZVNoZWV0Lmg+CisKK2NvbnN0IFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0
JiB3ZWJraXRVc2VyU3R5bGVTaGVldEdldFVzZXJTdHlsZVNoZWV0KFdlYktpdFVzZXJTdHlsZVNo
ZWV0Kik7CisKKyNlbmRpZiAvLyBXZWJLaXRVc2VyQ29udGVudFByaXZhdGVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApp
bmRleCBhZTYwNjc2ZWZjZmFlYTA2YjZkZWUyODIzOWM1ZGEzZWFmY2E5ZGQ5Li44YzA4MGNhZjJm
MzRhYTRjMTQ5ZjQ0ZjQxZGFiMTY3MmE3Njc0NTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzksNiArMzks
NyBAQAogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldlYktpdFVSSVNjaGVtZVJlcXVlc3RQ
cml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0dyb3VwUHJpdmF0ZS5o
IgpAQCAtMTA1MCwxMiArMTA1MSwxMyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hM
b2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdQogICAgIGNv
bnRleHQtPnByaXYtPnVyaVNjaGVtZVJlcXVlc3RzLnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsK
IH0KIAotdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2Vi
Q29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViVmlld0dy
b3VwKiB3ZWJWaWV3R3JvdXAsIFdlYktpdFdlYlZpZXcqIHJlbGF0ZWRWaWV3KQordm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJWaWV3R3Jv
dXAsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBXZWJLaXRX
ZWJWaWV3KiByZWxhdGVkVmlldykKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KTsKICAgICBXZWJQYWdlR3JvdXAqIHBh
Z2VHcm91cCA9IHdlYlZpZXdHcm91cCA/IHdlYmtpdFdlYlZpZXdHcm91cEdldFBhZ2VHcm91cCh3
ZWJWaWV3R3JvdXApIDogMDsKICAgICBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlID0gcmVsYXRl
ZFZpZXcgPyB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UocmVs
YXRlZFZpZXcpKSA6IG51bGxwdHI7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdl
KHdlYlZpZXdCYXNlLCBjb250ZXh0LT5wcml2LT5jb250ZXh0LmdldCgpLCBwYWdlR3JvdXAsIHJl
bGF0ZWRQYWdlKTsKKyAgICBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkgPSB1c2VyQ29udGVudE1hbmFnZXIgPyB3ZWJraXRVc2VyQ29udGVu
dE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIp
IDogbnVsbHB0cjsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uod2ViVmlld0Jh
c2UsIGNvbnRleHQtPnByaXYtPmNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cCwgdXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHksIHJlbGF0ZWRQYWdlKTsKIAogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9
IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZSh3ZWJWaWV3QmFzZSk7CiAgICAgY29udGV4dC0+cHJp
di0+d2ViVmlld3Muc2V0KHBhZ2UtPnBhZ2VJRCgpLCB3ZWJWaWV3KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0
ZS5oCmluZGV4IDA2NDc0YTFlZjBhYjMyNDI0MGJlMmYxMTEzMDQxNGZiMjI5ZTNlMTQuLjc2ZGNk
MzY1ODZjYTRjMzk2MDhiMTYwZWEwYTM0NWY2ZGQzOTAxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUu
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldl
YktpdFVzZXJDb250ZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIK
ICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3R3JvdXAuaCIKICNpbmNsdWRlICJXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgpAQCAtNDIsNyArNDMsNyBAQCBXZWJLaXQ6OldlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiB3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVz
dE1hbmFnZXIoVwogdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9j
b2woV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIEFQSTo6VVJM
UmVxdWVzdCopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RvcExvYWRpbmdDdXN0b21Qcm90b2Nv
bChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiB2b2lkIHdl
YmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29u
dGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0
Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBX
ZWJLaXRXZWJWaWV3R3JvdXAqLCBXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdlYkNvbnRl
eHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2ViVmlldyos
IFdlYktpdFdlYlZpZXdHcm91cCosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdlYktpdFdl
YlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95ZWQoV2ViS2l0V2Vi
Q29udGV4dCosIFdlYktpdFdlYlZpZXcqKTsKIFdlYktpdFdlYlZpZXcqIHdlYmtpdFdlYkNvbnRl
eHRHZXRXZWJWaWV3Rm9yUGFnZShXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQYWdlUHJv
eHkqKTsKIFdlYktpdFdlYlZpZXdHcm91cCogd2Via2l0V2ViQ29udGV4dEdldERlZmF1bHRXZWJW
aWV3R3JvdXAoV2ViS2l0V2ViQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBkMWU5ZDY2M2MzOWU1NmMxM2Mx
NTlmNTBjOWE1OGE5MzdkY2UzMWU0Li44NWIwNzhhMTgxZTE4YWQ4NjQ2Mjg5MzI1NGUwMWY3YTZj
OGY5ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcApAQCAtMTMzLDYgKzEzMyw3IEBAIGVudW0gewogICAgIFBST1BfV0VCX0NP
TlRFWFQsCiAgICAgUFJPUF9SRUxBVEVEX1ZJRVcsCiAgICAgUFJPUF9HUk9VUCwKKyAgICBQUk9Q
X1VTRVJfQ09OVEVOVF9NQU5BR0VSLAogICAgIFBST1BfVElUTEUsCiAgICAgUFJPUF9FU1RJTUFU
RURfTE9BRF9QUk9HUkVTUywKICAgICBQUk9QX0ZBVklDT04sCkBAIC0xNzEsNiArMTcyLDcgQEAg
c3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRTZXR0aW5n
cz4gc2V0dGluZ3M7CiAgICAgdW5zaWduZWQgbG9uZyBzZXR0aW5nc0NoYW5nZWRIYW5kbGVySUQ7
CiAgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3R3JvdXA+IGdyb3VwOworICAgIEdSZWZQdHI8V2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyPiB1c2VyQ29udGVudE1hbmFnZXI7CiAgICAgR1JlZlB0cjxX
ZWJLaXRXaW5kb3dQcm9wZXJ0aWVzPiB3aW5kb3dQcm9wZXJ0aWVzOwogCiAgICAgR1JlZlB0cjxH
TWFpbkxvb3A+IG1vZGFsTG9vcDsKQEAgLTUwMSw3ICs1MDMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgV2ViS2l0V2ViVmll
dyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpOwogICAgIFdlYktpdFdlYlZpZXdQ
cml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICB3ZWJraXRXZWJDb250ZXh0Q3JlYXRl
UGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dCwgd2ViVmlldywgcHJpdi0+Z3JvdXAuZ2V0KCks
IHByaXYtPnJlbGF0ZWRWaWV3KTsKKyAgICB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldl
YlZpZXcocHJpdi0+Y29udGV4dCwgd2ViVmlldywgcHJpdi0+Z3JvdXAuZ2V0KCksIHByaXYtPnVz
ZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcpOwogICAgIC8vIFRoZSBy
ZWxhdGVkIHZpZXcgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhlIGNvbnN0cnVjdGlvbi4KICAgICBw
cml2LT5yZWxhdGVkVmlldyA9IG51bGxwdHI7CiAKQEAgLTU0Miw2ICs1NDQsMTEgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBjb25zdCBHVmFsdWUKICAgICAgICAgd2ViVmlldy0+cHJpdi0+Z3JvdXAgPSBncm91cCA/
IFdFQktJVF9XRUJfVklFV19HUk9VUChncm91cCkgOiAwOwogICAgICAgICBicmVhazsKICAgICB9
CisgICAgY2FzZSBQUk9QX1VTRVJfQ09OVEVOVF9NQU5BR0VSOiB7CisgICAgICAgIGdwb2ludGVy
IHVzZXJDb250ZW50TWFuYWdlciA9IGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSk7CisgICAgICAg
IHdlYlZpZXctPnByaXYtPnVzZXJDb250ZW50TWFuYWdlciA9IHVzZXJDb250ZW50TWFuYWdlciA/
IFdFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUih1c2VyQ29udGVudE1hbmFnZXIpIDogbnVsbHB0
cjsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUFJPUF9aT09NX0xFVkVMOgogICAg
ICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwod2ViVmlldywgZ192YWx1ZV9nZXRf
ZG91YmxlKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTYxLDYgKzU2OCw5IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0dST1VQOgogICAgICAgICBnX3ZhbHVl
X3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAod2ViVmlldykpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVVNFUl9DT05URU5UX01BTkFHRVI6CisgICAg
ICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2Nv
bnRlbnRfbWFuYWdlcih3ZWJWaWV3KSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9U
SVRMRToKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJWaWV3LT5wcml2LT50
aXRsZS5kYXRhKCkpOwogICAgICAgICBicmVhazsKQEAgLTY3MSw2ICs2ODEsMjMgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJW
aWV3Q2xhc3MpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BB
UkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CiAKICAgICAvKioKKyAg
ICAgKiBXZWJLaXRXZWJWaWV3OnVzZXItY29udGVudC1tYW5hZ2VyOgorICAgICAqCisgICAgICog
VGhlICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgb2YgdGhlIHZpZXcuCisgICAgICoKKyAgICAg
KiBTaW5jZTogMi42CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX1VTRVJfQ09OVEVOVF9NQU5B
R0VSLAorICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAorICAgICAgICAgICAgInVzZXItY29u
dGVudC1tYW5hZ2VyIiwKKyAgICAgICAgICAgIF8oIldlYlZpZXcgdXNlciBjb250ZW50IG1hbmFn
ZXIiKSwKKyAgICAgICAgICAgIF8oIlRoZSBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgb2YgdGhl
IHZpZXciKSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSLAor
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJ
VEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCisgICAgLyoqCiAgICAgICogV2ViS2l0
V2ViVmlldzp0aXRsZToKICAgICAgKgogICAgICAqIFRoZSBtYWluIGZyYW1lIGRvY3VtZW50IHRp
dGxlIG9mIHRoaXMgI1dlYktpdFdlYlZpZXcuIElmCkBAIC0xOTI0LDYgKzE5NTEsOCBAQCBHdGtX
aWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQpCiAgKiBZb3UgY2FuIGFsc28gdXNlIHRoaXMgbWV0aG9kIHRvIGltcGxlbWVudCBv
dGhlciBwcm9jZXNzIG1vZGVscyBiYXNlZCBvbiAlV0VCS0lUX1BST0NFU1NfTU9ERUxfTVVMVElQ
TEVfU0VDT05EQVJZX1BST0NFU1NFUywKICAqIGxpa2UgZm9yIGV4YW1wbGUsIHNoYXJpbmcgdGhl
IHNhbWUgd2ViIHByb2Nlc3MgZm9yIGFsbCB0aGUgdmlld3MgaW4gdGhlIHNhbWUgc2VjdXJpdHkg
ZG9tYWluLgogICoKKyAqIFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3IHdpbGwgYWxz
byBoYXZlIHRoZSBzYW1lICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgYXMgQHdlYl92aWV3Lgor
ICoKICAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogVGhlIG5ld2x5IGNyZWF0ZWQgI1dlYktp
dFdlYlZpZXcgd2lkZ2V0CiAgKgogICogU2luY2U6IDIuNApAQCAtMTkzMiw3ICsxOTYxLDEwIEBA
IEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRfdmlldyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19X
RUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0cik7CiAKLSAgICByZXR1cm4gR1RLX1dJREdFVChnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsICJyZWxhdGVkLXZpZXciLCB3ZWJWaWV3LCBu
dWxscHRyKSk7CisgICAgcmV0dXJuIEdUS19XSURHRVQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X1dFQl9WSUVXLAorICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJWaWV3LT5wcml2
LT51c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksCisgICAgICAgICJyZWxhdGVkLXZpZXciLCB3ZWJW
aWV3LAorICAgICAgICBudWxscHRyKSk7CiB9CiAKIC8qKgpAQCAtMTk1Myw2ICsxOTg1LDI1IEBA
IEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2dyb3VwKFdlYktpdFdlYlZpZXdH
cm91cCogZ3JvdXApCiB9CiAKIC8qKgorICogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJf
Y29udGVudF9tYW5hZ2VyOgorICogQHVzZXJfY29udGVudF9tYW5hZ2VyOiBhICNXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuCisgKgorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViVmlldyB3aXRo
IHRoZSBnaXZlbiAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLgorICogVGhlIGNvbnRlbnQgbG9h
ZGVkIGluIHRoZSB2aWV3IG1heSBiZSBhZmZlY3RlZCBieSB0aGUgY29udGVudCBpbmplY3RlZAor
ICogaW4gdGhlIHZpZXcgYnkgdGhlIHVzZXIgY29udGVudCBtYW5hZ2VyLgorICoKKyAqIFJldHVy
bnM6IFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3IHdpZGdldAorICoKKyAqIFNpbmNl
OiAyLjYKKyAqLworR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250
ZW50X21hbmFnZXIoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB1c2VyQ29udGVudE1hbmFnZXIp
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5B
R0VSKHVzZXJDb250ZW50TWFuYWdlciksIG51bGxwdHIpOworCisgICAgcmV0dXJuIEdUS19XSURH
RVQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLCAidXNlci1jb250ZW50LW1hbmFn
ZXIiLCB1c2VyQ29udGVudE1hbmFnZXIsIG51bGxwdHIpKTsKK30KKworLyoqCiAgKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2NvbnRleHQ6CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAq
CkBAIC0xOTg2LDYgKzIwMzcsMjQgQEAgV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2dyb3VwKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAKIC8qKgorICogd2Via2l0
X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcjoKKyAqIEB3ZWJfdmlldzogYSAjV2Vi
S2l0V2ViVmlldworICoKKyAqIEdldHMgdGhlIHVzZXIgY29udGVudCBtYW5hZ2VyIGFzc29jaWF0
ZWQgdG8gQHdlYl92aWV3LCBvciAlTlVMTCBpZiB0aGUKKyAqIHZpZXcgZG9lcyBub3QgaGF2ZSBh
biB1c2VyIGNvbnRlbnQgbWFuYWdlci4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6
IHRoZSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmlldwor
ICoKKyAqIFNpbmNlOiAyLjYKKyAqLworV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcp
LCBudWxscHRyKTsKKworICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT51c2VyQ29udGVudE1hbmFn
ZXIuZ2V0KCk7Cit9CisKKy8qKgogICogd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpOgogICogQHdl
Yl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKiBAdXJpOiBhbiBVUkkgc3RyaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggNTQ5
ZDI1NGNjMjZlYjM3ZTJmZmVjYzAxZWRhNjcwM2QyMTk3Y2NjYS4uOWJmMmNjNTQ2YmM0NTYyMzJj
MDk3ZWU2ZjliYjJmOWZlYzIwMzc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0U2NyaXB0RGlhbG9nLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZXR0
aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5oPgorI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJJbnNwZWN0b3Iu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlJlc291cmNlLmg+CkBAIC0yNjAsNiArMjYx
LDkgQEAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRfdmlldyAgICAgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldwogV0VCS0lUX0FQSSBHdGtXaWRnZXQgKgogd2Via2l0X3dlYl92aWV3
X25ld193aXRoX2dyb3VwICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlld0dyb3Vw
ICAgICAgICAqZ3JvdXApOwogCitXRUJLSVRfQVBJIEd0a1dpZGdldCAqCit3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIgICAgICAgIChXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIgICp1c2VyX2NvbnRlbnRfbWFuYWdlcik7CisKIFdFQktJVF9BUEkgV2ViS2l0V2Vi
Q29udGV4dCAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQgICAgICAgICAgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKQEAgLTQ1NSw2
ICs0NTksMTAgQEAgV0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3QgKgogd2Via2l0X3dlYl92aWV3
X2dldF9zbmFwc2hvdF9maW5pc2ggICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICpyZXN1bHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3Ig
ICAgICAgICAgICAgICAgICAgKiplcnJvcik7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyICoKK3dlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKwogR19FTkRf
REVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggM2RlY2JmZjEyZTU0OWNkY2QxYjAwMThh
NWRiNTM0Y2E5ZWNmNTE5NS4uZWZhZmYxNzVlOTkyZGVmZTI4N2Y1MTc0ZmJjNzgzOWUyYmUyMGU0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VHcm91
cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2Vz
LmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJWaWV3QmFzZUlucHV0TWV0aG9kRmlsdGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWly
b1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpcGJvYXJkVXRpbGl0aWVzR3RrLmg+
CkBAIC05NDEsMTAgKzk0MiwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9j
bGFzc19pbml0KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogICAgIGNvbnRh
aW5lckNsYXNzLT5mb3JhbGwgPSB3ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lckZvcmFsbDsKIH0K
IAotV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYkNvbnRleHQq
IGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQ
YWdlKQorV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYkNvbnRl
eHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eSogdXNlckNvbnRlbnRDb250cm9sbGVyLCBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQ
YWdlKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSA9IFdFQktJ
VF9XRUJfVklFV19CQVNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFV19CQVNFLCBO
VUxMKSk7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYmtpdFdlYlZpZXdC
YXNlLCBjb250ZXh0LCBwYWdlR3JvdXAsIHJlbGF0ZWRQYWdlKTsKKyAgICB3ZWJraXRXZWJWaWV3
QmFzZUNyZWF0ZVdlYlBhZ2Uod2Via2l0V2ViVmlld0Jhc2UsIGNvbnRleHQsIHBhZ2VHcm91cCwg
dXNlckNvbnRlbnRDb250cm9sbGVyLCByZWxhdGVkUGFnZSk7CiAgICAgcmV0dXJuIHdlYmtpdFdl
YlZpZXdCYXNlOwogfQogCkBAIC05NzcsMTMgKzk3OCwxNCBAQCBzdGF0aWMgdm9pZCBkZXZpY2VT
Y2FsZUZhY3RvckNoYW5nZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQog
fQogI2VuZGlmIC8vIEhBVkUoR1RLX1NDQUxFX0ZBQ1RPUikKIAotdm9pZCB3ZWJraXRXZWJWaWV3
QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBX
ZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5
KiByZWxhdGVkUGFnZSkKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgV2ViQ29udGV4dCogY29udGV4dCwgV2Vi
UGFnZUdyb3VwKiBwYWdlR3JvdXAsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiB1c2Vy
Q29udGVudENvbnRyb2xsZXIsIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCiB7CiAgICAgV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2Via2l0V2ViVmlld0Jhc2UtPnByaXY7CiAK
ICAgICBXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKICAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSBwYWdlR3JvdXA7CiAgICAgd2ViUGFnZUNvbmZp
Z3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZTsKKyAgICB3ZWJQYWdlQ29uZmlndXJh
dGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudENvbnRyb2xsZXI7CiAgICAg
cHJpdi0+cGFnZVByb3h5ID0gY29udGV4dC0+Y3JlYXRlV2ViUGFnZSgqcHJpdi0+cGFnZUNsaWVu
dCwgV1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAgcHJpdi0+cGFnZVByb3h5
LT5pbml0aWFsaXplV2ViUGFnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4IGI5YzM4
YzI2NTg1MjRiNTZhZWVmYTJlZTNkNTVhOGU4YWY5ZDMzZTQuLmRmZTIyODVlOWE3YWE3NmZlYjM0
ZWU3YTk4ZjkzNjJiZjAyYmM1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC0zNCwxMCAr
MzQsMTAgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eS5oIgogCi1XZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2VDcmVhdGUo
V2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQYWdlR3JvdXAqLCBXZWJLaXQ6OldlYlBh
Z2VQcm94eSopOworV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdl
YktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eSosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiBHdGtJTUNv
bnRleHQqIHdlYmtpdFdlYlZpZXdCYXNlR2V0SU1Db250ZXh0KFdlYktpdFdlYlZpZXdCYXNlKik7
CiBXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdlYktpdFdl
YlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRX
ZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwg
V2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQ
YWdlKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQ
YWdlR3JvdXAqLCBXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiwgV2ViS2l0
OjpXZWJQYWdlUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb29sdGlwVGV4dChX
ZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IGNoYXIqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VT
ZXRUb29sdGlwQXJlYShXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VGb3J3YXJkTmV4dEtleUV2ZW50KFdlYktpdFdlYlZp
ZXdCYXNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3R3JvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0dyb3VwLmNwcAppbmRleCBkMmE1YmU4MzJhM2ZiZjFlZDE3YzY3NDA4ZTRk
MTc5NTgzMWQyMjgwLi5jOGE2NTA3YThlNTk4NmZjYWQ2YjY4NGI3ZTNiZDU5OWJiOWIyMDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdHcm91cC5jcHAKQEAgLTIzNiw2MyArMjM2LDMgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Z3JvdXBfc2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXdHcm91cCogZ3JvdXAsIFdlYktpdFNldHRp
bmcKICAgICB3ZWJraXRXZWJWaWV3R3JvdXBBdHRhY2hTZXR0aW5nc1RvUGFnZUdyb3VwKGdyb3Vw
KTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QoZ3JvdXApLCAic2V0dGluZ3MiKTsKIH0K
LQotc3RhdGljIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gdG9BUElBcnJheShjb25zdCBjaGFyKiBj
b25zdCogbGlzdCkKLXsKLSAgICBpZiAoIWxpc3QpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
VmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4gPiBlbnRyaWVzOwotICAgIHdoaWxlICgqbGlzdCkg
ewotICAgICAgICBlbnRyaWVzLmFwcGVuZChBUEk6OlN0cmluZzo6Y3JlYXRlRnJvbVVURjhTdHJp
bmcoKmxpc3QpKTsKLSAgICAgICAgbGlzdCsrOwotICAgIH0KLSAgICByZXR1cm4gQVBJOjpBcnJh
eTo6Y3JlYXRlKFdURjo6bW92ZShlbnRyaWVzKSk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl92
aWV3X2dyb3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0OgotICogQGdyb3VwOiBhICNXZWJLaXRXZWJW
aWV3R3JvdXAKLSAqIEBzb3VyY2U6IHRoZSBzb3VyY2Ugb2YgdGhlIHN0eWxlX3NoZWV0IHRvIGlu
amVjdAotICogQGJhc2VfdXJpOiAoYWxsb3ctbm9uZSk6IHRoZSBiYXNlIFVSSSB0byB1c2Ugd2hl
biBwcm9jZXNzaW5nIHRoZSBzdHlsZV9zaGVldCBjb250ZW50cyBvciAlTlVMTCBmb3IgYWJvdXQ6
YmxhbmsKLSAqIEB3aGl0ZWxpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5v
bmUpOiBhIHdoaXRlbGlzdCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKLSAqIEBibGFja2xpc3Q6
IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBhIGJsYWNrbGlzdCBvZiBV
UkkgcGF0dGVybnMgb3IgJU5VTEwKLSAqIEBpbmplY3RlZF9mcmFtZXM6IGEgI1dlYktpdEluamVj
dGVkQ29udGVudEZyYW1lcyBkZXNjcmliaW5nIHRvIHdoaWNoIGZyYW1lcyB0aGUgc3R5bGVfc2hl
ZXQgc2hvdWxkIGFwcGx5Ci0gKgotICogSW5qZWN0IGFuIGV4dGVybmFsIHN0eWxlIHNoZWV0IGlu
dG8gcGFnZXMuIEl0IGlzIHBvc3NpYmxlIHRvIG9ubHkgYXBwbHkgdGhlIHN0eWxlIHNoZWV0Ci0g
KiB0byBzb21lIFVSSXMgYnkgcGFzc2luZyBub24tbnVsbCB2YWx1ZXMgZm9yIEB3aGl0ZWxpc3Qg
b3IgQGJsYWNrbGlzdC4gUGFzc2luZyBhICVOVUxMCi0gKiB3aGl0ZWxpc3QgaW1wbGllcyB0aGF0
IGFsbCBVUklzIGFyZSBvbiB0aGUgd2hpdGVsaXN0LiBUaGUgc3R5bGUgc2hlZXQgaXMgYXBwbGll
ZCBpZiBhIFVSSSBtYXRjaGVzCi0gKiB0aGUgd2hpdGVsaXN0IGFuZCBub3QgdGhlIGJsYWNrbGlz
dC4gVVJJIHBhdHRlcm5zIG11c3QgYmUgb2YgdGhlIGZvcm0gW3Byb3RvY29sXTovL1tob3N0XS9b
cGF0aF0KLSAqIHdoZXJlIHRoZSBob3N0IGFuZCBwYXRoIGNvbXBvbmVudHMgY2FuIGNvbnRhaW4g
dGhlIHdpbGRjYXJkIGNoYXJhY3RlciAoJyonKSB0byByZXByZXNlbnQgemVybwotICogb3IgbW9y
ZSBvdGhlciBjaGFyYWN0ZXJzLgotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRf
dXNlcl9zdHlsZV9zaGVldChXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwLCBjb25zdCBjaGFyKiBz
b3VyY2UsIGNvbnN0IGNoYXIqIGJhc2VVUkksIGNvbnN0IGNoYXIqIGNvbnN0KiB3aGl0ZWxpc3Qs
IGNvbnN0IGNoYXIqIGNvbnN0KiBibGFja2xpc3QsIFdlYktpdEluamVjdGVkQ29udGVudEZyYW1l
cyBpbmplY3RlZEZyYW1lcykKLXsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFV19HUk9VUChncm91cCkpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc291cmNlKTsKLQotICAg
IFJlZlB0cjxBUEk6OkFycmF5PiB3ZWJXaGl0ZWxpc3QgPSB0b0FQSUFycmF5KHdoaXRlbGlzdCk7
Ci0gICAgUmVmUHRyPEFQSTo6QXJyYXk+IHdlYkJsYWNrbGlzdCA9IHRvQVBJQXJyYXkoYmxhY2ts
aXN0KTsKLQotICAgIC8vIFdlIGFsd2F5cyB1c2UgVXNlclN0eWxlVXNlckxldmVsIHRvIG1hdGNo
IHRoZSBiZWhhdmlvciBvZiBXS1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0LgotICAgIGdyb3Vw
LT5wcml2LT5wYWdlR3JvdXAtPmFkZFVzZXJTdHlsZVNoZWV0KAotICAgICAgICBTdHJpbmc6OmZy
b21VVEY4KHNvdXJjZSksCi0gICAgICAgIFN0cmluZzo6ZnJvbVVURjgoYmFzZVVSSSksCi0gICAg
ICAgIHdlYldoaXRlbGlzdC5nZXQoKSwKLSAgICAgICAgd2ViQmxhY2tsaXN0LmdldCgpLAotICAg
ICAgICB0b1dlYkNvcmVVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSwK
LSAgICAgICAgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsKTsKLX0KLQotLyoqCi0gKiB3ZWJr
aXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0czoKLSAqIEBncm91
cDogYSAjV2ViS2l0V2ViVmlld0dyb3VwCi0gKgotICogUmVtb3ZlIGFsbCBzdHlsZSBzaGVldHMg
cHJldmlvdXNseSBpbmplY3RlZCBpbnRvIHRoaXMgI1dlYktpdFdlYlZpZXdHcm91cCAKLSAqIHZp
YSB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3VzZXJfc3R5bGVfc2hlZXQoKS4KLSAqLwotdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyhXZWJL
aXRXZWJWaWV3R3JvdXAqIGdyb3VwKQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9WSUVXX0dST1VQKGdyb3VwKSk7Ci0gICAgZ3JvdXAtPnByaXYtPnBhZ2VHcm91cC0+cmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5oCmluZGV4IDY4NWYxOTkwNGVkY2Zk
OWM2YjVhZGIwYjUzYmUwN2E3NDU2MzU4ZDguLjgzNmVhMTczNGYzNjg5MjBjNDhjYzNmNDRiMjdi
YjI5YmZlZTVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdHcm91cC5oCkBAIC04NCwxNyArODQsNiBAQCBXRUJLSVRfQVBJIHZv
aWQKIHdlYmtpdF93ZWJfdmlld19ncm91cF9zZXRfc2V0dGluZ3MgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3R3JvdXAgICAgICAgICAgKmdyb3VwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNldHRpbmdzICAgICAgICAgICAg
ICAqc2V0dGluZ3MpOwogCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF93ZWJfdmlld19ncm91cF9h
ZGRfdXNlcl9zdHlsZV9zaGVldCAgICAgICAgIChXZWJLaXRXZWJWaWV3R3JvdXAgICAgICAgICAg
ICpncm91cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICpzb3VyY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAg
ICAgICAgICAgICAqYmFzZV91cmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBjb25zdCAgICAgICAgICAqd2hpdGVsaXN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICogY29uc3QgICAgICAgICAgKmJsYWNrbGlzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRJbmplY3RlZENvbnRlbnRG
cmFtZXMgICBpbmplY3RlZF9mcmFtZXMpOwotCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF93ZWJf
dmlld19ncm91cF9yZW1vdmVfYWxsX3VzZXJfc3R5bGVfc2hlZXRzIChXZWJLaXRXZWJWaWV3R3Jv
dXAgICAgICAgICAgKmdyb3VwKTsKLQogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlv
bnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LXNlY3Rpb25zLnR4dAppbmRleCA1NDgxM2M5MDBhZDZlYzJmMTE3YjE2MjFiNDE4ODBjMjFkYzlk
Y2FlLi4wNjNjYjY3NWJiZmE5MmE4ZDU3MGMzYjAxZjY4NWZiMDJjZTU2YmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlv
bnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTczLDYgKzczLDQ1IEBAIHdlYmtpdF93ZWJfY29udGV4dF9n
ZXRfdHlwZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdFVzZXJDb250ZW50
PC9GSUxFPgorPFRJVExFPldlYktpdFVzZXJDb250ZW50PC9USVRMRT4KK1dlYktpdFVzZXJTdHls
ZVNoZWV0CitXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzCitXZWJLaXRVc2VyU3R5bGVM
ZXZlbAord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfcmVmCit3ZWJraXRfdXNlcl9zdHlsZV9zaGVl
dF91bnJlZgord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3CisKKzxTVUJTRUNUSU9OIFN0YW5k
YXJkPgorV0VCS0lUX1RZUEVfVVNFUl9TVFlMRV9TSEVFVAorCis8U1VCU0VDVElPTiBQcml2YXRl
Pgord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJ
T04+Cis8RklMRT5XZWJLaXRVc2VyQ29udGVudE1hbmFnZXI8L0ZJTEU+Cis8VElUTEU+V2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyPC9USVRMRT4KK1dlYktpdFVzZXJDb250ZW50TWFuYWdlcgord2Vi
a2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldword2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2Vy
X2FkZF9zdHlsZV9zaGVldAord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxf
c3R5bGVfc2hlZXRzCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VCS0lUX0lTX1VTRVJfQ09O
VEVOVF9NQU5BR0VSCitXRUJLSVRfSVNfVVNFUl9DT05URU5UX01BTkFHRVJfQ0xBU1MKK1dFQktJ
VF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSCitXRUJLSVRfVVNFUl9DT05URU5UX01BTkFHRVIK
K1dFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUl9DTEFTUworV0VCS0lUX1VTRVJfQ09OVEVOVF9N
QU5BR0VSX0dFVF9DTEFTUworV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3MKKworPFNVQlNF
Q1RJT04gUHJpdmF0ZT4KK1dlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUKK3dlYmtpdF91
c2VyX2NvbnRlbnRfbWFuYWdlcl9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxG
SUxFPldlYktpdFdlYlZpZXc8L0ZJTEU+CiA8VElUTEU+V2ViS2l0V2ViVmlldzwvVElUTEU+CiBX
ZWJLaXRXZWJWaWV3CkBAIC05Niw4ICsxMzUsMTAgQEAgd2Via2l0X3dlYl92aWV3X25ldwogd2Vi
a2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9y
ZWxhdGVkX3ZpZXcKIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9ncm91cAord2Via2l0X3dlYl92
aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Nv
bnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAKK3dlYmtpdF93ZWJfdmlld19nZXRfdXNl
cl9jb250ZW50X21hbmFnZXIKIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaQogd2Via2l0X3dlYl92
aWV3X2xvYWRfaHRtbAogd2Via2l0X3dlYl92aWV3X2xvYWRfYWx0ZXJuYXRlX2h0bWwKQEAgLTEw
MjUsOCArMTA2Niw2IEBAIHdlYmtpdF93ZWJfdmlld19ncm91cF9uZXcKIHdlYmtpdF93ZWJfdmll
d19ncm91cF9nZXRfbmFtZQogd2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF9zZXR0aW5ncwogd2Vi
a2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncwotd2Via2l0X3dlYl92aWV3X2dyb3VwX2Fk
ZF91c2VyX3N0eWxlX3NoZWV0Ci13ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2FsbF91c2Vy
X3N0eWxlX3NoZWV0cwogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFdlYlZpZXdHcm91
cENsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXgg
NDY0OTBhMmUwMTRkNjNmYWFiMGEzMDcyYzkwMzg0OTM0NDhhMjMxMi4uNTJjY2FkMzA2MmJlOGM1
ODNlMDViZWU2YWM3OTVlOTA2ODRmNTE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3dlYmtpdDIuaApAQCAtNjEsNiArNjEsOCBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVzcG9uc2UuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdFVzZXJDb250ZW50Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFZlcnNpb24uaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdFdlYkluc3BlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5jcHAKaW5kZXggZGU2OWE4MGI3OTYzOWFmNDFiMzU5N2NmY2VlMWE5MGM0YjdkOGY5ZS4uNzA2
ZWRlMmVhNzc2YmM4YzFhZjU2ZTAzMmY4YmNmNGE0NDdkZGM1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC02Niw3ICs2Niw4IEBAIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQ
cm9jZXNzUHJveHkpCiAgICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiAKICAgICB3ZWJQcm9jZXNzUHJveHkuY29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3Jp
cHRzKG1fdXNlclNjcmlwdHMpLCBtX2lkZW50aWZpZXIpOwotICAgIAorICAgIHdlYlByb2Nlc3NQ
cm94eS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6QWRkVXNlclN0eWxlU2hlZXRzKG1fdXNlclN0eWxlU2hlZXRzKSwgbV9pZGVudGlmaWVyKTsK
KwogICAgIFZlY3RvcjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4gbWVzc2FnZUhhbmRs
ZXJIYW5kbGVzOwogICAgIGZvciAoYXV0byYgaGFuZGxlciA6IG1fc2NyaXB0TWVzc2FnZUhhbmRs
ZXJzLnZhbHVlcygpKQogICAgICAgICBtZXNzYWdlSGFuZGxlckhhbmRsZXMuYXBwZW5kKGhhbmRs
ZXItPmhhbmRsZSgpKTsKQEAgLTk3LDYgKzk4LDIyIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkKICAgICAgICAgcHJvY2Vzc0FuZENv
dW50LmtleS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKCksIG1faWRlbnRpZmllcik7CiB9CiAKK3ZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTdHlsZVNoZWV0KFdlYkNvcmU6
OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0KQoreworICAgIG1fdXNlclN0eWxlU2hlZXRz
LmFwcGVuZChXVEY6Om1vdmUodXNlclN0eWxlU2hlZXQpKTsKKworICAgIGZvciAoYXV0byYgcHJv
Y2Vzc0FuZENvdW50IDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3NBbmRDb3VudC5rZXkt
PmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpB
ZGRVc2VyU3R5bGVTaGVldHMoeyBtX3VzZXJTdHlsZVNoZWV0cy5sYXN0KCkgfSksIG1faWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFs
bFVzZXJTdHlsZVNoZWV0cygpCit7CisgICAgbV91c2VyU3R5bGVTaGVldHMuY2xlYXIoKTsKKwor
ICAgIGZvciAoYXV0byYgcHJvY2Vzc0FuZENvdW50IDogbV9wcm9jZXNzZXMpCisgICAgICAgIHBy
b2Nlc3NBbmRDb3VudC5rZXktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKSwgbV9pZGVudGlmaWVy
KTsKK30KKwogYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKiBoYW5kbGVyKQogewogICAg
IGZvciAoYXV0byYgZXhpc3RpbmdIYW5kbGVyIDogbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMudmFs
dWVzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXggY2Zm
NmYyOWQ0ODY0ZTBhNzY4NDlmZmFmMmVhMDQ0OWQ3NGRiMDg0OS4uN2RjMDU5NWFhMmI3YzJkZTgy
YmZjMDgzMzRhMTczYzZiOTQxZGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgVXNlclNjcmlwdDsKK2NsYXNzIFVzZXJTdHlsZVNoZWV0Owog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDYgKzYwLDkgQEAgcHVibGljOgogICAgIHZv
aWQgYWRkVXNlclNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0KTsKICAgICB2b2lkIHJlbW92ZUFs
bFVzZXJTY3JpcHRzKCk7CiAKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0KTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpOworCiAg
ICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGVyZSB3YXMgYSBuYW1lIGNvbmZsaWN0LgogICAgIGJv
b2wgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKik7
CiAgICAgdm9pZCByZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZyYp
OwpAQCAtNzUsNiArNzksNyBAQCBwcml2YXRlOgogICAgIEhhc2hDb3VudGVkU2V0PFdlYlByb2Nl
c3NQcm94eSo+IG1fcHJvY2Vzc2VzOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlVzZXJTY3JpcHQ+
IG1fdXNlclNjcmlwdHM7CisgICAgVmVjdG9yPFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0PiBtX3Vz
ZXJTdHlsZVNoZWV0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXI+PiBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVyczsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5k
ZXggNTc5YjA5OWY4NGQyMDY4NzE3MzUwZDIyNjRlN2Y5MDg1MTQyYTc0My4uMWVkYTdlOGVmZTg2
ZGNhMTVjODczYjEzMjhmMGExOTZhNjQ5ZWEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0
b3JQYWdlKCkKIHsKICAgICBBU1NFUlQobV9wYWdlKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9y
Vmlldyk7Ci0gICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFz
ZUNyZWF0ZSgmcGFnZSgpLT5wcm9jZXNzKCkuY29udGV4dCgpLCBpbnNwZWN0b3JQYWdlR3JvdXAo
KSwgbV9wYWdlKSk7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJW
aWV3QmFzZUNyZWF0ZSgmcGFnZSgpLT5wcm9jZXNzKCkuY29udGV4dCgpLCBpbnNwZWN0b3JQYWdl
R3JvdXAoKSwgbnVsbHB0ciwgbV9wYWdlKSk7CiAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRl
cihHX09CSkVDVChtX2luc3BlY3RvclZpZXcpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1f
aW5zcGVjdG9yVmlldykpOwogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VC
S0lUX1dFQl9WSUVXX0JBU0UobV9pbnNwZWN0b3JWaWV3KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5jcHAKaW5kZXggZDlkYzE1YzU4NDU1YjkwODkyNzU0NmYwNjZkODI5NWQx
MzUzZjY5Mi4uMjRmMjE0ODE1YTQzY2RiMTEwZWY1MGE0NzA5MjViNWQ0NDViYzlmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRD
b250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTdHlsZVNoZWV0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQpAQCAtOTIs
NiArOTMsMTkgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJT
Y3JpcHRzKCkKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlVXNlclNjcmlwdHMo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6YWRkVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldD4mIHVzZXJTdHlsZVNoZWV0cykKK3sKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHVzZXJTdHls
ZVNoZWV0IDogdXNlclN0eWxlU2hlZXRzKSB7CisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9s
bGVyLT5hZGRVc2VyU3R5bGVTaGVldChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwKKyAgICAgICAg
ICAgIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+KHVzZXJTdHlsZVNo
ZWV0KSwgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CisgICAgfQorfQorCit2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKK3sKKyAgICBt
X3VzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlVXNlclN0eWxlU2hlZXRzKG1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpKTsKK30KKwogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiBj
bGFzcyBXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHkgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHk+LCBwdWJsaWMgV2ViQ29y
ZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjo6Q2xpZW50IHsKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IDRjODQ2OTk2NGNmZmQwZjY5YTljNjdlYWZh
ZGZkMDVlZmE1NTY5OTcuLjYzOWMyMGUwMDBhZWQ3OThjMmI3M2NkMWYwNGNmYjZjMmI1ZDY0ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtNTQsNiArNTQsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgYWRkVXNlclNjcmlwdHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVzZXJT
Y3JpcHQ+JiB1c2VyU2NyaXB0cyk7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cygpOwog
CisgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVzZXJT
dHlsZVNoZWV0PiYgdXNlclN0eWxlU2hlZXRzKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cygpOworCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0
IFZlY3RvcjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4mIHNjcmlwdE1lc3NhZ2VIYW5k
bGVycyk7CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIodWludDY0X3Qp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCmlu
ZGV4IGQwY2ZjMWY3NjY3ODFmYzBkNzM3NTE2Y2IyYWI1MmJjOTU2NTM5NzQuLmE5M2ZhNDdjMDY4
NDg3ZjVjYWQ2ZTVhZTJmNWVlMTZlZmJiNTAxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw5IEBAIG1lc3NhZ2VzIC0+
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlciB7CiAgICAgQWRkVXNlclNjcmlwdHMoVmVjdG9yPFdl
YkNvcmU6OlVzZXJTY3JpcHQ+IHVzZXJTY3JpcHRzKTsKICAgICBSZW1vdmVBbGxVc2VyU2NyaXB0
cygpCiAKKyAgICBBZGRVc2VyU3R5bGVTaGVldHMoVmVjdG9yPFdlYkNvcmU6OlVzZXJTdHlsZVNo
ZWV0PiB1c2VyU3R5bGVTaGhldHMpOworICAgIFJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCisK
ICAgICBBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKFZlY3RvcjxXZWJLaXQ6OldlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVySGFuZGxlPiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpOwogICAgIFJlbW92
ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFlYWEzMzY4Mzdl
OTVkNWM1ZWM4YmY0ZTIyYmVkMTBlODgyN2M4NGIuLmZiODRhODA4YzBkMzc1NzNlYjRkZjZmNGE3
OTgzMDUzYmFkNjRlYzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxNC0wNy0wNyAgQWRyaWFuIFBlcmV6IGRlIENh
c3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIE1vdmUgdXNlciBzdHls
ZSBzaGVldCBBUEkgb3V0IG9mIFdlYktpdFdlYlZpZXdHcm91cAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NTUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyB0ZXN0aW5nIHVzZXIgc3R5bGUg
c2hlZXQgaW5qZWN0aW9uIGZyb20KKyAgICAgICAgVGVzdFdlYktpdFdlYlZpZXdHcm91cCBhbmQg
bW92ZXMgdGhhdCBpbnRvIGEgbmV3CisgICAgICAgIFRlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIsIGFkYXB0aW5nIHRoZSBleGlzdGluZyB0ZXN0cyB0byB0aGUgbmV3CisgICAgICAgIEFQSS4g
QWxzbywgaXQgY29udGFpbnMgYSBuZXcgdGVzdCBjYXNlIGZvcgorICAgICAgICB3ZWJraXRfd2Vi
X3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIoKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5j
cHA6IEFkZGVkLgorICAgICAgICAoVXNlckNvbnRlbnRNYW5hZ2VyVGVzdDo6VXNlckNvbnRlbnRN
YW5hZ2VyVGVzdCk6CisgICAgICAgICh0ZXN0V2ViVmlld05ld1dpdGhVc2VyQ29udGVudE1hbmFn
ZXIpOgorICAgICAgICAoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgpOgorICAgICAg
ICAoZmlsbFVSTExpc3RGcm9tUGF0aHMpOgorICAgICAgICAocmVtb3ZlT2xkSW5qZWN0ZWRTdHls
ZVNoZWV0c0FuZFJlc2V0TGlzdHMpOgorICAgICAgICAodGVzdFVzZXJDb250ZW50TWFuYWdlcklu
amVjdGVkU3R5bGVTaGVldCk6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChi
ZWZvcmVBbGwpOgorICAgICAgICAoYWZ0ZXJBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcDoKKyAgICAgICAgKGJl
Zm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisgICAgICAgIChpc1N0eWxlU2hlZXRJbmpl
Y3RlZEZvclVSTEF0UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChmaWxsVVJMTGlzdEZyb21QYXRo
cyk6IERlbGV0ZWQuCisgICAgICAgIChyZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVz
ZXRMaXN0cyk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0V2ViVmlld0dyb3VwSW5qZWN0ZWRTdHls
ZVNoZWV0KTogRGVsZXRlZC4KKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXdUZXN0OjpXZWJWaWV3VGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5oOgorCiAyMDE0LTA3LTA2ICBZb2F2IFdlaXNz
ICA8eW9hdkB5b2F2LndzPgogCiAgICAgICAgIFR1cm4gb24gaW1nQHNpemVzIGNvbXBpbGUgZmxh
ZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtl
TGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlz
dHMudHh0CmluZGV4IGY2NmI3MzBhODhiNjUwMWZmYjhkMmYxNGI5YjFiMzE2MTc4ZjU5MzUuLjE3
MmIzOGFhMDg3NDcyYjEzNTEzMWE2Mjg0MzE0YTA0ZDk0OWRiNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKQEAgLTExMiw2
ICsxMTIsNyBAQCBBRERfV0syX1RFU1QoVGVzdFdlYlZpZXdFZGl0b3IgVGVzdFdlYlZpZXdFZGl0
b3IuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRXZWJWaWV3R3JvdXAgVGVzdFdlYktpdFdl
YlZpZXdHcm91cC5jcHApCiBBRERfV0syX1RFU1QoVGVzdFdlYktpdFdlYkNvbnRleHQgVGVzdFdl
YktpdFdlYkNvbnRleHQuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRXZWJWaWV3IFRlc3RX
ZWJLaXRXZWJWaWV3LmNwcCkKK0FERF9XSzJfVEVTVChUZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyIFRlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwKQogCiBpZiAoQVRTUElfRk9VTkQp
CiAgICAgQUREX1dLMl9URVNUKEFjY2Vzc2liaWxpdHlUZXN0U2VydmVyIEFjY2Vzc2liaWxpdHlU
ZXN0U2VydmVyLmNwcCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDRlMzY3YmNlMjQxOWFmZDg4N2Y1NjlmNWQ0MWI2MGZmODRkNWU5Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCisjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNs
dWRlIDxjc3RkYXJnPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL3dl
YmtpdDIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisKK2NsYXNzIFVzZXJD
b250ZW50TWFuYWdlclRlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVibGljOgorICAgIE1B
S0VfR0xJQl9URVNUX0ZJWFRVUkUoVXNlckNvbnRlbnRNYW5hZ2VyVGVzdCk7CisKKyAgICBVc2Vy
Q29udGVudE1hbmFnZXJUZXN0KCkKKyAgICAgICAgOiBXZWJWaWV3VGVzdChXRUJLSVRfV0VCX1ZJ
RVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYmtpdF91
c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXcoKSkpKQorICAgIHsKKyAgICAgICAgLy8gQSByZWZlcmVu
Y2UgaXMgbGVha2VkIHdoZW4gcGFzc2luZyB0aGUgcmVzdWx0IG9mIHdlYmtpdF91c2VyX2NvbnRl
bnRfbWFuYWdlcl9uZXcoKQorICAgICAgICAvLyBkaXJlY3RseSB0byB3ZWJraXRfd2ViX3ZpZXdf
bmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIoKSBhYm92ZS4gQWRvcHRpbmcgdGhlCisgICAg
ICAgIC8vIHJlZmVyZW5jZSBoZXJlIGF2b2lkcyB0aGUgbGVhay4KKyAgICAgICAgbV91c2VyQ29u
dGVudE1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRf
bWFuYWdlcihtX3dlYlZpZXcpKTsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVChtX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSkpOworICAgIH0K
KworICAgIEdSZWZQdHI8V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPiBtX3VzZXJDb250ZW50TWFu
YWdlcjsKK307CisKK3N0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOworCisvLyBUaGVz
ZSBhcmUgYWxsIGhlcmUgc28gdGhhdCB0aGV5IGNhbiBiZSBjaGFuZ2VkIGVhc2lseSwgaWYgbmVj
ZXNzYXJ5Lgorc3RhdGljIGNvbnN0IGNoYXIqIGtTdHlsZVNoZWV0SFRNTCA9ICI8aHRtbD48ZGl2
IGlkPVwic3R5bGVkRWxlbWVudFwiPlN3ZWV0IHN0eWxleiE8L2Rpdj48L2h0bWw+IjsKK3N0YXRp
YyBjb25zdCBjaGFyKiBrSW5qZWN0ZWRTdHlsZVNoZWV0ID0gIiNzdHlsZWRFbGVtZW50IHsgZm9u
dC13ZWlnaHQ6IGJvbGQ7IH0iOworc3RhdGljIGNvbnN0IGNoYXIqIGtTdHlsZVNoZWV0VGVzdFNj
cmlwdCA9ICJnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdHlsZWRF
bGVtZW50JykpWydmb250LXdlaWdodCddIjsKK3N0YXRpYyBjb25zdCBjaGFyKiBrU3R5bGVTaGVl
dFRlc3RTY3JpcHRSZXN1bHQgPSAiYm9sZCI7CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3TmV3
V2l0aFVzZXJDb250ZW50TWFuYWdlcihUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAg
IEdSZWZQdHI8V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPiB1c2VyQ29udGVudE1hbmFnZXIxID0g
YWRvcHRHUmVmKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXcoKSk7CisgICAgdGVzdC0+
YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh1c2VyQ29udGVu
dE1hbmFnZXIxLmdldCgpKSk7CisgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3MSA9
IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21h
bmFnZXIodXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSkpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93
ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldzEuZ2V0KCkpID09IHVzZXJD
b250ZW50TWFuYWdlcjEuZ2V0KCkpOworCisgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJW
aWV3MiA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIGdfYXNz
ZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldzIuZ2V0
KCkpICE9IHVzZXJDb250ZW50TWFuYWdlcjEuZ2V0KCkpOworfQorCitzdGF0aWMgYm9vbCBpc1N0
eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aChXZWJWaWV3VGVzdCogdGVzdCwgY29uc3QgY2hh
ciogcGF0aCkKK3sKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgocGF0
aCkuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBq
YXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVk
KGtTdHlsZVNoZWV0VGVzdFNjcmlwdCwgJmVycm9yLm91dFB0cigpKTsKKyAgICBnX2Fzc2VydChq
YXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOworCisgICAgR1Vu
aXF1ZVB0cjxjaGFyPiByZXN1bHRTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRU
b0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIHJldHVybiAhZ19zdHJjbXAwKHJlc3Vs
dFN0cmluZy5nZXQoKSwga1N0eWxlU2hlZXRUZXN0U2NyaXB0UmVzdWx0KTsKK30KKworc3RhdGlj
IHZvaWQgZmlsbFVSTExpc3RGcm9tUGF0aHMoY2hhcioqIGxpc3QsIGNvbnN0IGNoYXIqIHBhdGgs
IC4uLikKK3sKKyAgICB2YV9saXN0IGFyZ3VtZW50TGlzdDsKKyAgICB2YV9zdGFydChhcmd1bWVu
dExpc3QsIHBhdGgpOworCisgICAgaW50IGkgPSAwOworICAgIHdoaWxlIChwYXRoKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBXZSBtdXN0IHVzZSBhIHdpbGRjYXJkIGZvciB0aGUgaG9zdCBoZXJlIHVu
dGlsIGh0dHA6Ly93a2J1Zy5jb20vMTEyNDc2IGlzIGZpeGVkLgorICAgICAgICAvLyBVbnRpbCB0
aGF0IHRpbWUgcGF0dGVybnMgd2l0aCBwb3J0IG51bWJlcnMgaW4gdGhlbSB3aWxsIG5vdCBwcm9w
ZXJseSBtYXRjaCBVUkxzIHdpdGggcG9ydCBudW1iZXJzLgorICAgICAgICBsaXN0W2krK10gPSBn
X3N0cmR1cF9wcmludGYoImh0dHA6Ly8qLyVzKiIsIHBhdGgpOworICAgICAgICBwYXRoID0gdmFf
YXJnKGFyZ3VtZW50TGlzdCwgY29uc3QgY2hhciopOworICAgIH0KK30KKworc3RhdGljIHZvaWQg
cmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyKiB1c2VyQ29udGVudE1hbmFnZXIsIGNoYXIqKiB3aGl0ZWxpc3QsIGNoYXIqKiBi
bGFja2xpc3QpCit7CisgICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxf
c3R5bGVfc2hlZXRzKHVzZXJDb250ZW50TWFuYWdlcik7CisKKyAgICB3aGlsZSAoKndoaXRlbGlz
dCkgeworICAgICAgICBnX2ZyZWUoKndoaXRlbGlzdCk7CisgICAgICAgICp3aGl0ZWxpc3QgPSAw
OworICAgICAgICB3aGl0ZWxpc3QrKzsKKyAgICB9CisKKyAgICB3aGlsZSAoKmJsYWNrbGlzdCkg
eworICAgICAgICBnX2ZyZWUoKmJsYWNrbGlzdCk7CisgICAgICAgICpibGFja2xpc3QgPSAwOwor
ICAgICAgICBibGFja2xpc3QrKzsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RVc2VyQ29u
dGVudE1hbmFnZXJJbmplY3RlZFN0eWxlU2hlZXQoVXNlckNvbnRlbnRNYW5hZ2VyVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBjaGFyKiB3aGl0ZWxpc3RbM10gPSB7IDAsIDAsIDAg
fTsKKyAgICBjaGFyKiBibGFja2xpc3RbM10gPSB7IDAsIDAsIDAgfTsKKworICAgIHJlbW92ZU9s
ZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNvbnRlbnRNYW5h
Z2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisKKyAgICAvLyBXaXRob3V0IGEgd2hp
dGVsaXN0IG9yIGEgYmxhY2tsaXN0IGFsbCBVUkxzIHNob3VsZCBoYXZlIHRoZSBpbmplY3RlZCBz
dHlsZSBzaGVldC4KKyAgICBzdGF0aWMgY29uc3QgY2hhciogcmFuZG9tUGF0aCA9ICJzb21lcmFu
ZG9tcGF0aCI7CisgICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRo
KHRlc3QsIHJhbmRvbVBhdGgpKTsKKyAgICBXZWJLaXRVc2VyU3R5bGVTaGVldCogc3R5bGVTaGVl
dCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5qZWN0ZWRTdHlsZVNoZWV0LCBXRUJL
SVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TVFlMRV9MRVZF
TF9VU0VSLCBudWxscHRyLCBudWxscHRyKTsKKyAgICB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfYWRkX3N0eWxlX3NoZWV0KHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBzdHls
ZVNoZWV0KTsKKyAgICB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZihzdHlsZVNoZWV0KTsK
KyAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5k
b21QYXRoKSk7CisKKyAgICByZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0
cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xpc3Qp
OworCisgICAgZmlsbFVSTExpc3RGcm9tUGF0aHMoYmxhY2tsaXN0LCByYW5kb21QYXRoLCAwKTsK
KyAgICBzdHlsZVNoZWV0ID0gd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGtJbmplY3RlZFN0
eWxlU2hlZXQsIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVMsIFdFQktJVF9V
U0VSX1NUWUxFX0xFVkVMX1VTRVIsIG51bGxwdHIsIGJsYWNrbGlzdCk7CisgICAgd2Via2l0X3Vz
ZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldCh0ZXN0LT5tX3VzZXJDb250ZW50TWFu
YWdlci5nZXQoKSwgc3R5bGVTaGVldCk7CisgICAgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfdW5y
ZWYoc3R5bGVTaGVldCk7CisgICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJM
QXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKKyAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJbmpl
Y3RlZEZvclVSTEF0UGF0aCh0ZXN0LCAic29tZW90aGVycmFuZG9tcGF0aCIpKTsKKworICAgIHJl
bW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNvbnRl
bnRNYW5hZ2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisKKyAgICBzdGF0aWMgY29u
c3QgY2hhciogaW5UaGVXaGl0ZUxpc3QgPSAiaW50aGV3aGl0ZWxpc3QiOworICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBub3RJbldoaXRlbGlzdCA9ICJub3RpbnRoZXdoaXRlbGlzdCI7CisgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0ID0gImludGhld2hpdGVs
aXN0YW5kYmxhY2tsaXN0IjsKKworICAgIGZpbGxVUkxMaXN0RnJvbVBhdGhzKHdoaXRlbGlzdCwg
aW5UaGVXaGl0ZUxpc3QsIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0LCAwKTsKKyAgICBmaWxs
VVJMTGlzdEZyb21QYXRocyhibGFja2xpc3QsIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0LCAw
KTsKKyAgICBzdHlsZVNoZWV0ID0gd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGtJbmplY3Rl
ZFN0eWxlU2hlZXQsIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVMsIFdFQktJ
VF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKKyAgICB3ZWJr
aXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KHRlc3QtPm1fdXNlckNvbnRl
bnRNYW5hZ2VyLmdldCgpLCBzdHlsZVNoZWV0KTsKKyAgICB3ZWJraXRfdXNlcl9zdHlsZV9zaGVl
dF91bnJlZihzdHlsZVNoZWV0KTsKKyAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJbmplY3RlZEZv
clVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlzdCkpOworICAgIGdfYXNzZXJ0KCFpc1N0eWxl
U2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlz
dCkpOworICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0
LCBub3RJbldoaXRlbGlzdCkpOworCisgICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gY2xlYW4gdXAg
dGhlIGVudmlyb25tZW50IGJlZm9yZSBvdGhlciB0ZXN0cy4KKyAgICByZW1vdmVPbGRJbmplY3Rl
ZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQo
KSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOworfQorCitzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFj
ayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBw
YXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKK3sKKyAgICBz
b3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAgc291
cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZ
X1NUQVRJQywga1N0eWxlU2hlZXRIVE1MLCBzdHJsZW4oa1N0eWxlU2hlZXRIVE1MKSk7CisgICAg
c291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7Cit9CisK
K3ZvaWQgYmVmb3JlQWxsKCkKK3sKKyAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIo
KTsKKyAgICBrU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOworCisgICAgVGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgIm5ldy13aXRoLXVzZXItY29udGVudC1tYW5hZ2VyIiwgdGVzdFdlYlZp
ZXdOZXdXaXRoVXNlckNvbnRlbnRNYW5hZ2VyKTsKKyAgICBVc2VyQ29udGVudE1hbmFnZXJUZXN0
OjphZGQoIldlYktpdFVzZXJDb250ZW50TWFuYWdlciIsICJpbmplY3RlZC1zdHlsZS1zaGVldCIs
IHRlc3RVc2VyQ29udGVudE1hbmFnZXJJbmplY3RlZFN0eWxlU2hlZXQpOworfQorCit2b2lkIGFm
dGVyQWxsKCkKK3sKKyAgICBkZWxldGUga1NlcnZlcjsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dy
b3VwLmNwcAppbmRleCA0NDhhYmQyZmU1MzJjNmMxNGZlMjMzOWYzYzE3NjdmMGE5ZGE4MDMxLi5j
Y2JhODlkNDYyZTQ0YTI1M2VlOGZhZTQ2ZGI2ZDY5ZWU0ODU2ZWM5IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRX
ZWJWaWV3R3JvdXAuY3BwCkBAIC0yNiwxNCArMjYsNiBAQAogI2luY2x1ZGUgPHdlYmtpdDIvd2Vi
a2l0Mi5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAotc3RhdGljIFdlYktp
dFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7Ci0KLS8vIFRoZXNlIGFyZSBhbGwgaGVyZSBzbyB0aGF0IHRo
ZXkgY2FuIGJlIGNoYW5nZWQgZWFzaWx5LCBpZiBuZWNlc3NhcnkuCi1zdGF0aWMgY29uc3QgY2hh
cioga1N0eWxlU2hlZXRIVE1MID0gIjxodG1sPjxkaXYgaWQ9XCJzdHlsZWRFbGVtZW50XCI+U3dl
ZXQgc3R5bGV6ITwvZGl2PjwvaHRtbD4iOwotc3RhdGljIGNvbnN0IGNoYXIqIGtJbmplY3RlZFN0
eWxlU2hlZXQgPSAiI3N0eWxlZEVsZW1lbnQgeyBmb250LXdlaWdodDogYm9sZDsgfSI7Ci1zdGF0
aWMgY29uc3QgY2hhcioga1N0eWxlU2hlZXRUZXN0U2NyaXB0ID0gImdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0eWxlZEVsZW1lbnQnKSlbJ2ZvbnQtd2VpZ2h0J10i
Owotc3RhdGljIGNvbnN0IGNoYXIqIGtTdHlsZVNoZWV0VGVzdFNjcmlwdFJlc3VsdCA9ICJib2xk
IjsKLQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdHcm91cERlZmF1bHQoVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKIHsKICAgICAvLyBEZWZhdWx0IGdyb3VwIGlzIHNoYXJlZCBieSBhbGwgV2Vi
Vmlld3MgYnkgZGVmYXVsdC4KQEAgLTk4LDEwOSArOTAsMTQgQEAgc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdHcm91cFNldHRpbmdzKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3Nl
cnQod2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF9zZXR0aW5ncyh3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2dyb3VwKHdlYlZpZXcxLmdldCgpKSkgPT0gd2ViVmlldzJTZXR0aW5ncyk7CiB9CiAKLXN0YXRp
YyBib29sIGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKFdlYlZpZXdUZXN0KiB0ZXN0
LCBjb25zdCBjaGFyKiBwYXRoKQotewotICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJ
Rm9yUGF0aChwYXRoKS5kYXRhKCkpOwotICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OwotCi0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoa1N0eWxlU2hlZXRUZXN0U2NyaXB0LCAmZXJyb3Iub3V0UHRyKCkpOwotICAg
IGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7
Ci0KLSAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc3VsdFN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNj
cmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7Ci0gICAgcmV0dXJuICFnX3N0
cmNtcDAocmVzdWx0U3RyaW5nLmdldCgpLCBrU3R5bGVTaGVldFRlc3RTY3JpcHRSZXN1bHQpOwot
fQotCi1zdGF0aWMgdm9pZCBmaWxsVVJMTGlzdEZyb21QYXRocyhjaGFyKiogbGlzdCwgY29uc3Qg
Y2hhciogcGF0aCwgLi4uKQotewotICAgIHZhX2xpc3QgYXJndW1lbnRMaXN0OwotICAgIHZhX3N0
YXJ0KGFyZ3VtZW50TGlzdCwgcGF0aCk7Ci0KLSAgICBpbnQgaSA9IDA7Ci0gICAgd2hpbGUgKHBh
dGgpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIG11c3QgdXNlIGEgd2lsZGNhcmQgZm9yIHRoZSBo
b3N0IGhlcmUgdW50aWwgaHR0cDovL3drYnVnLmNvbS8xMTI0NzYgaXMgZml4ZWQuCi0gICAgICAg
IC8vIFVudGlsIHRoYXQgdGltZSBwYXR0ZXJucyB3aXRoIHBvcnQgbnVtYmVycyBpbiB0aGVtIHdp
bGwgbm90IHByb3Blcmx5IG1hdGNoIFVSTHMgd2l0aCBwb3J0IG51bWJlcnMuCi0gICAgICAgIGxp
c3RbaSsrXSA9IGdfc3RyZHVwX3ByaW50ZigiaHR0cDovLyovJXMqIiwgcGF0aCk7Ci0gICAgICAg
IHBhdGggPSB2YV9hcmcoYXJndW1lbnRMaXN0LCBjb25zdCBjaGFyKik7Ci0gICAgfQotfQotCi1z
dGF0aWMgdm9pZCByZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyhXZWJL
aXRXZWJWaWV3R3JvdXAqIGdyb3VwLCBjaGFyKiogd2hpdGVsaXN0LCBjaGFyKiogYmxhY2tsaXN0
KQotewotICAgIHdlYmtpdF93ZWJfdmlld19ncm91cF9yZW1vdmVfYWxsX3VzZXJfc3R5bGVfc2hl
ZXRzKGdyb3VwKTsKLQotICAgIHdoaWxlICgqd2hpdGVsaXN0KSB7Ci0gICAgICAgIGdfZnJlZSgq
d2hpdGVsaXN0KTsKLSAgICAgICAgKndoaXRlbGlzdCA9IDA7Ci0gICAgICAgIHdoaXRlbGlzdCsr
OwotICAgIH0KLQotICAgIHdoaWxlICgqYmxhY2tsaXN0KSB7Ci0gICAgICAgIGdfZnJlZSgqYmxh
Y2tsaXN0KTsKLSAgICAgICAgKmJsYWNrbGlzdCA9IDA7Ci0gICAgICAgIGJsYWNrbGlzdCsrOwot
ICAgIH0KLX0KLQotc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdHcm91cEluamVjdGVkU3R5bGVTaGVl
dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKLXsKLSAgICBXZWJLaXRXZWJWaWV3
R3JvdXAqIGdyb3VwID0gd2Via2l0X3dlYl92aWV3X2dldF9ncm91cCh0ZXN0LT5tX3dlYlZpZXcp
OwotICAgIGNoYXIqIHdoaXRlbGlzdFszXSA9IHsgMCwgMCwgMCB9OwotICAgIGNoYXIqIGJsYWNr
bGlzdFszXSA9IHsgMCwgMCwgMCB9OwotCi0gICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0
c0FuZFJlc2V0TGlzdHMoZ3JvdXAsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKLQotICAgIC8vIFdp
dGhvdXQgYSB3aGl0ZWxpc3Qgb3IgYSBibGFja2xpc3QgYWxsIFVSTHMgc2hvdWxkIGhhdmUgdGhl
IGluamVjdGVkIHN0eWxlIHNoZWV0LgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiByYW5kb21QYXRo
ID0gInNvbWVyYW5kb21wYXRoIjsKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRG
b3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOwotICAgIHdlYmtpdF93ZWJfdmlld19ncm91
cF9hZGRfdXNlcl9zdHlsZV9zaGVldChncm91cCwga0luamVjdGVkU3R5bGVTaGVldCwgMCwgMCwg
MCwgV0VCS0lUX0lOSkVDVEVEX0NPTlRFTlRfRlJBTUVTX0FMTCk7Ci0gICAgZ19hc3NlcnQoaXNT
dHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOwotCi0gICAg
cmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoZ3JvdXAsIHdoaXRlbGlz
dCwgYmxhY2tsaXN0KTsKLQotICAgIGZpbGxVUkxMaXN0RnJvbVBhdGhzKGJsYWNrbGlzdCwgcmFu
ZG9tUGF0aCwgMCk7Ci0gICAgd2Via2l0X3dlYl92aWV3X2dyb3VwX2FkZF91c2VyX3N0eWxlX3No
ZWV0KGdyb3VwLCBrSW5qZWN0ZWRTdHlsZVNoZWV0LCAwLCAwLCBibGFja2xpc3QsIFdFQktJVF9J
TkpFQ1RFRF9DT05URU5UX0ZSQU1FU19BTEwpOwotICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJ
bmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7Ci0gICAgZ19hc3NlcnQoaXNT
dHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRvbXBhdGgi
KSk7Ci0KLSAgICByZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyhncm91
cCwgd2hpdGVsaXN0LCBibGFja2xpc3QpOwotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGluVGhl
V2hpdGVMaXN0ID0gImludGhld2hpdGVsaXN0IjsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogbm90
SW5XaGl0ZWxpc3QgPSAibm90aW50aGV3aGl0ZWxpc3QiOwotICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCA9ICJpbnRoZXdoaXRlbGlzdGFuZGJsYWNrbGlz
dCI7Ci0KLSAgICBmaWxsVVJMTGlzdEZyb21QYXRocyh3aGl0ZWxpc3QsIGluVGhlV2hpdGVMaXN0
LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCwgMCk7Ci0gICAgZmlsbFVSTExpc3RGcm9tUGF0
aHMoYmxhY2tsaXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCwgMCk7Ci0gICAgd2Via2l0
X3dlYl92aWV3X2dyb3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0KGdyb3VwLCBrSW5qZWN0ZWRTdHls
ZVNoZWV0LCAwLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgV0VCS0lUX0lOSkVDVEVEX0NPTlRFTlRf
RlJBTUVTX0FMTCk7Ci0gICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBh
dGgodGVzdCwgaW5UaGVXaGl0ZUxpc3QpKTsKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5q
ZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xpc3QpKTsKLSAg
ICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgbm90SW5X
aGl0ZWxpc3QpKTsKLQotICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGNsZWFuIHVwIHRoZSBlbnZp
cm9ubWVudCBiZWZvcmUgb3RoZXIgdGVzdHMuCi0gICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNo
ZWV0c0FuZFJlc2V0TGlzdHMoZ3JvdXAsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKLX0KLQotc3Rh
dGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0
KiwgZ3BvaW50ZXIpCi17Ci0gICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09V
UF9TVEFUVVNfT0spOwotICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNw
b25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIGtTdHlsZVNoZWV0SFRNTCwgc3RybGVuKGtT
dHlsZVNoZWV0SFRNTCkpOwotICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2Ut
PnJlc3BvbnNlX2JvZHkpOwotfQotCiB2b2lkIGJlZm9yZUFsbCgpCiB7Ci0gICAga1NlcnZlciA9
IG5ldyBXZWJLaXRUZXN0U2VydmVyKCk7Ci0gICAga1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNr
KTsKLQogICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlld0dyb3VwIiwgImRlZmF1bHQtZ3JvdXAi
LCB0ZXN0V2ViVmlld0dyb3VwRGVmYXVsdCk7CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
R3JvdXAiLCAibmV3LWdyb3VwIiwgdGVzdFdlYlZpZXdHcm91cE5ld0dyb3VwKTsKICAgICBUZXN0
OjphZGQoIldlYktpdFdlYlZpZXciLCAibmV3LXdpdGgtZ3JvdXAiLCB0ZXN0V2ViVmlld05ld1dp
dGhHcm91cCk7CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3R3JvdXAiLCAic2V0dGluZ3Mi
LCB0ZXN0V2ViVmlld0dyb3VwU2V0dGluZ3MpOwotICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktp
dFdlYlZpZXdHcm91cCIsICJpbmplY3RlZC1zdHlsZS1zaGVldCIsIHRlc3RXZWJWaWV3R3JvdXBJ
bmplY3RlZFN0eWxlU2hlZXQpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKIHsKLSAgICBkZWxldGUg
a1NlcnZlcjsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJH
dGsvV2ViVmlld1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9X
ZWJWaWV3VGVzdC5jcHAKaW5kZXggMTE5OGIwOGJlNjgzZDU5MzkyNDZkOTBhNTBlM2IxZDRlZjcz
YzAzNy4uZWJkMDNiNGQ0YWE4MDJjYWU2ODI5MGU0ZGQ2NzIyNWQwNGMzN2U1NSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHAKQEAg
LTI1LDcgKzI1LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyR3RrLmg+CiAKIFdl
YlZpZXdUZXN0OjpXZWJWaWV3VGVzdCgpCi0gICAgOiBtX3dlYlZpZXcoV0VCS0lUX1dFQl9WSUVX
KGdfb2JqZWN0X3JlZl9zaW5rKHdlYmtpdF93ZWJfdmlld19uZXcoKSkpKQorICAgIDogV2ViVmll
d1Rlc3QoV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSkpIHsgfQorCitXZWJW
aWV3VGVzdDo6V2ViVmlld1Rlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2Vi
VmlldyhXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldykpKQogICAgICwg
bV9tYWluTG9vcChnX21haW5fbG9vcF9uZXcoMCwgVFJVRSkpCiAgICAgLCBtX3BhcmVudFdpbmRv
dygwKQogICAgICwgbV9qYXZhc2NyaXB0UmVzdWx0KDApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmgKaW5kZXggZjQ1ZTEyNWM5ZDRmYTJkY2Q2
NDNkNjE0MGFhYTM3ZGYxNjBiYTM4OC4uMmJjZjU2MzU5OGE3ZWZmODZhMjg2MTAxMmQwY2ZhODc0
MTk5N2FkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9X
ZWJWaWV3VGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2Vi
Vmlld1Rlc3QuaApAQCAtMjgsNiArMjgsNyBAQAogY2xhc3MgV2ViVmlld1Rlc3Q6IHB1YmxpYyBU
ZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFdlYlZpZXdUZXN0KTsK
KyAgICBXZWJWaWV3VGVzdChXZWJLaXRXZWJWaWV3Kik7CiAgICAgV2ViVmlld1Rlc3QoKTsKICAg
ICB2aXJ0dWFsIH5XZWJWaWV3VGVzdCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234561</attachid>
            <date>2014-07-08 08:01:37 -0700</date>
            <delta_ts>2014-07-08 10:53:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134551-20140708180350.patch</filename>
            <type>text/plain</type>
            <size>75896</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmNkZjY4MDFjNjdiMjAx
ZjRiYzAwNjgyY2QwNzhiNGZhMWZhMTE2Ni4uMmFlZGIwZjFhZmQ0MWU1ZDVjYTkzN2ViZDYzYmQ0
NGRhODViMmM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE0LTA3LTA3ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10g
TW92ZSB1c2VyIHN0eWxlIHNoZWV0IEFQSSBvdXQgb2YgV2ViS2l0V2ViVmlld0dyb3VwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ1NTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBJbmNsdWRlIHRoZSBuZXcgc291cmNlIGZpbGVzIGluIHRoZSBidWlsZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdDcmVh
dGUpOgorICAgICAgICBBZGFwdCB0byB0aGUgYWRkaXRpb25hbCB3ZWJraXRXZWJWaWV3QmFzZUNy
ZWF0ZVdlYlBhZ2UoKSBwYXJhbWV0ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlckNvbnRlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRvVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyk6CisgICAgICAgICh0b1VzZXJTdHlsZUxldmVsKToKKyAgICAgICAgKHRvU3RyaW5n
VmVjdG9yKToKKyAgICAgICAgKF9XZWJLaXRVc2VyU3R5bGVTaGVldDo6X1dlYktpdFVzZXJTdHls
ZVNoZWV0KToKKyAgICAgICAgKHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZik6CisgICAgICAg
ICh3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZik6CisgICAgICAgICh3ZWJraXRfdXNlcl9z
dHlsZV9zaGVldF9uZXcpOgorICAgICAgICAod2Via2l0V2ViS2l0VXNlclN0eWxlU2hlZXRUb1Vz
ZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXJQcml2YXRlOjpfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZSk6CisgICAgICAgICh3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfbmV3KToKKyAgICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQpOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9t
YW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVfc2hlZXRzKToKKyAgICAgICAgKHdlYmtpdFVzZXJDb250
ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudFByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcpOiBB
ZGQgYSBuZXcgcGFyYW1ldGVyIHRvIGFsbG93CisgICAgICAgIHBhc3NpbmcgdGhlIFdlYktpdFVz
ZXJDb250ZW50TWFuYWdlciB0aGF0IHRoZSB3ZWIgdmlldyB3aWxsIHVzZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdDb25zdHJ1Y3RlZCk6IEFkZGVkIGhhbmRsaW5nIG9mIHRoZQorICAgICAgICAidXNl
ci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5IG9uIGNvbnN0cnVjdGlvbi4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZQorICAgICAgICAi
dXNlci1jb250ZW50LW1hbmFnZXIiIHByb3BlcnR5LgorICAgICAgICAod2Via2l0V2ViVmlld0dl
dFByb3BlcnR5KTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlCisgICAgICAgICJ1c2VyLWNvbnRlbnQt
bWFuYWdlciIgcHJvcGVydHkuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6
IEFkZGVkIHRoZSAidXNlci1jb250ZW50LW1hbmFnZXIiCisgICAgICAgIHByb3BlcnR5IGRlZmlu
aXRpb24gdG8gdGhlIFdlYktpdFdlYlZpZXcgY2xhc3MuCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfcmVsYXRlZF92aWV3KTogTWFkZSByZWxhdGVkIHZpZXdzIHNoYXJlCisgICAg
ICAgIHRoZSBzYW1lIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciB1c2VkIGJ5IHRoZSB2aWV3IHRo
ZXkgYXJlCisgICAgICAgIHJlbGF0ZWQgdG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbmV3
X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6IEFkZCBuZXcgQVBJIG1ldGhvZHMuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VDcmVhdGUpOiBBZGRlZCBhIHBhcmFtZXRlciB0byBwYXNzIHRoZSB1c2Vy
CisgICAgICAgIGNvbnRlbnQgbWFuYWdlci4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlV2ViUGFnZSk6IEFkZGVkIGEgcGFyYW1ldGVyIHRvIHBhc3MgdGhlIHVzZXIKKyAgICAgICAg
Y29udGVudCBtYW5hZ2VyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3JvdXAuY3BwOiBSZW1vdmVkIHRoZSBiaXRzIHJlbGF0ZWQKKyAgICAgICAgdG8g
dXNlciBzdHlsZSBzaGVldCBzdXBwb3J0IGZyb20gV2ViS2l0V2ViVmlld0dyb3VwLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncyk6CisgICAgICAgICh0b0FQSUFy
cmF5KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9z
dHlsZV9zaGVldCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVt
b3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmg6IERlbGV0ZWQgdGhlIEFQSSBtZXRob2RzCisg
ICAgICAgIGZvciB1c2VyIHN0eWxlIHNoZWV0IGhhbmRsaW5nLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZGVkIHRoZSBuZXcgQVBJ
CisgICAgICAgIGZ1bmN0aW9ucyBhbmQgdHlwZXMsIGFuZCByZW1vdmVkIHRoZSBtZXRob2RzIHdo
aWNoIGFyZSBubyBsb25nZXIKKyAgICAgICAgYXZhaWxhYmxlIGluIFdlYktpdFdlYlZpZXdHcm91
cC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEFkZCB0aGUgbmV3IGhl
YWRlcnMuCisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcDogQWRkZWQKKyAgICAgICAgbWV0aG9kcyB0byBhZGQgYW5kIHJlbW92
ZSB1c2VyIHN0eWxlIHNoZWV0cywgYWxpa2UgdGhvc2UgdXNlZCBmb3IKKyAgICAgICAgdXNlciBz
Y3JpcHRzLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
YWRkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oOiBEaXR0
by4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9y
UGFnZSk6CisgICAgICAgIEFkYXB0IHRvIHRoZSBhZGRpdGlvbmFsIHdlYmtpdFdlYlZpZXdCYXNl
Q3JlYXRlV2ViUGFnZSgpIHBhcmFtZXRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHA6IEFkZGVkIG1ldGhvZHMKKyAgICAgICAg
dG8gYWRkIGFuZCByZW1vdmUgdXNlciBzdHlsZSBzaGVldHMsIGFsaWtlIHRob3NlIHVzZWQgZm9y
IHVzZXIgc2NyaXB0cy4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjphZGRVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaDogRGl0dG8uCisgICAgICAg
ICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2Fn
ZXMuaW46CisgICAgICAgIERpdHRvLgorCiAyMDE0LTA3LTA3ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFR1cm4gb24gYWNjZWxlcmF0ZWQgZHJhd2lu
ZyBmb3IgV2ViS2l0MiBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGM2YTlmZTc5
MThlOWY1NDY4ZWQzYTI1ZTE4YmIyZTY1NzdkMzUyYzIuLjYxYzM3Nzg1ZGM5MjdiMzI4MjI0M2Jm
ZDBlZWQ5YWM3YjE3MzJjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC05MjQsNyArOTI0LDkg
QEAgX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWVDMUVSTjNXVEY2VmVjdG9ySWhM
bTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUUKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlw
dFZhbHVlRDFFdgogX19aTjdXZWJDb3JlMjFVUkxCeVJlbW92aW5nVXNlckluZm9FUDVOU1VSTAog
X19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXIxM2FkZFVzZXJTY3JpcHRFUk5TXzE1
RE9NV3JhcHBlcldvcmxkRU5TdDNfXzExMHVuaXF1ZV9wdHJJTlNfMTBVc2VyU2NyaXB0RU5TM18x
NGRlZmF1bHRfZGVsZXRlSVM1X0VFRUUKK19fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9s
bGVyMTdhZGRVc2VyU3R5bGVTaGVldEVSTlNfMTVET01XcmFwcGVyV29ybGRFTlN0M19fMTEwdW5p
cXVlX3B0cklOU18xNFVzZXJTdHlsZVNoZWV0RU5TM18xNGRlZmF1bHRfZGVsZXRlSVM1X0VFRUVO
U18yMlVzZXJTdHlsZUluamVjdGlvblRpbWVFCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29u
dHJvbGxlcjE3cmVtb3ZlVXNlclNjcmlwdHNFUk5TXzE1RE9NV3JhcHBlcldvcmxkRQorX19aTjdX
ZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXIyMXJlbW92ZVVzZXJTdHlsZVNoZWV0c0VSTlNf
MTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxlcjMx
YWRkVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvckVSTlNfMjhVc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yRQogX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXIzNHJlbW92ZVVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JFUk5TXzI4VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvckUKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyNmNyZWF0ZUV2CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGE0YmE5YWE5YWMwYjExM2UwZWI4YzlkNzRmNzkzYjQ3
NTZkYjkxMWUuLjgxOGUwZWY3YTUwNmUwNDkzNTIxYzA5N2EyYjUyYWJlNmE0ZmFkZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0yMTAsNiArMjEwLDEyIEBAIGxpc3QoQVBQRU5EIFdl
YktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaAorICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyQ29udGVudC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
c2VyQ29udGVudFByaXZhdGUuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250
ZW50TWFuYWdlci5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyUHJpdmF0ZS5oCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFZlcnNpb24uY3BwCiAgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VmVyc2lvbi5oLmluCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM1Myw2ICszNTksOCBAQCBzZXQoV2ViS2l0MkdUS19J
TlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVJlc3BvbnNlLmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmgKKyAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVc2VyQ29udGVudC5oCisgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgKICAgICAke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlJlc291cmNlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcAppbmRleCA2ZjBjMDRiZjI3M2RiZmY2MWQ5YjBm
YmRjMjdhODBkNTM4ZjJjMzIzLi5iYzdiODNmOTVhNDcyZTUzNzNjMDc4MTZhZmFlZWUxNGM1ZDIx
ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3Bw
CkBAIC0zNyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXS1ZpZXdSZWYg
V0tWaWV3Q3JlYXRlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdl
R3JvdXBSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKHRv
SW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIG51bGxwdHIpKTsKKyAgICBy
ZXR1cm4gdG9BUEkod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUodG9JbXBsKGNvbnRleHRSZWYpLCB0
b0ltcGwocGFnZUdyb3VwUmVmKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogfQogCiBXS1BhZ2VSZWYg
V0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1JlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ZWFhOTUxMjczNDBlOWVlNzczZDg1OGMxMzFlM2I0NTZmNzMzZWFhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnQuY3Bw
CkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudC5oIgorCisj
aW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50UHJp
dmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisvKioKKyAq
IFNFQ1RJT046V2ViS2l0VXNlckNvbnRlbnQKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogRGVmaW5l
cyB1c2VyIGNvbnRlbnQgdHlwZXMgd2hpY2ggYWZmZWN0IHdlYiBwYWdlcy4KKyAqIEB0aXRsZTog
VXNlciBjb250ZW50CisgKgorICogU2VlIGFsc286ICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIK
KyAqCisgKiBTaW5jZTogMi42CisgKi8KKworc3RhdGljIGlubGluZSBVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhXZWJLaXRVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQoreworICAgIHN3aXRjaCAoaW5qZWN0ZWRGcmFt
ZXMpIHsKKyAgICBjYXNlIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX1RPUF9GUkFNRToKKyAg
ICAgICAgcmV0dXJuIEluamVjdEluVG9wRnJhbWVPbmx5OworICAgIGNhc2UgV0VCS0lUX1VTRVJf
Q09OVEVOVF9JTkpFQ1RfQUxMX0ZSQU1FUzoKKyAgICAgICAgcmV0dXJuIEluamVjdEluQWxsRnJh
bWVzOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gSW5qZWN0SW5BbGxGcmFtZXM7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIFVz
ZXJTdHlsZUxldmVsIHRvVXNlclN0eWxlTGV2ZWwoV2ViS2l0VXNlclN0eWxlTGV2ZWwgc3R5bGVM
ZXZlbCkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlTGV2ZWwpIHsKKyAgICBjYXNlIFdFQktJVF9VU0VS
X1NUWUxFX0xFVkVMX1VTRVI6CisgICAgICAgIHJldHVybiBVc2VyU3R5bGVVc2VyTGV2ZWw7Cisg
ICAgY2FzZSBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9BVVRIT1I6CisgICAgICAgIHJldHVybiBV
c2VyU3R5bGVBdXRob3JMZXZlbDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFVzZXJTdHlsZUF1dGhvckxldmVsOworICAgIH0KK30K
Kworc3RhdGljIGlubGluZSBWZWN0b3I8U3RyaW5nPiB0b1N0cmluZ1ZlY3Rvcihjb25zdCBjaGFy
KiBjb25zdCogc3RydikKK3sKKyAgICBpZiAoIXN0cnYpCisgICAgICAgIHJldHVybiBWZWN0b3I8
U3RyaW5nPigpOworCisgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OworICAgIGZvciAoYXV0byBz
dHIgPSBzdHJ2OyAqc3RyOyArK3N0cikKKyAgICAgICAgcmVzdWx0LmFwcGVuZChzdGQ6Om1vdmUo
U3RyaW5nOjpmcm9tVVRGOCgqc3RyKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0cnVj
dCBfV2ViS2l0VXNlclN0eWxlU2hlZXQgeworICAgIF9XZWJLaXRVc2VyU3R5bGVTaGVldChjb25z
dCBnY2hhciogc291cmNlLCBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVk
RnJhbWVzLCBXZWJLaXRVc2VyU3R5bGVMZXZlbCBsZXZlbCwgY29uc3QgY2hhciogY29uc3QqIHdo
aXRlbGlzdCwgY29uc3QgY2hhciogY29uc3QqIGJsYWNrbGlzdCkKKyAgICAgICAgOiB1c2VyU3R5
bGVTaGVldChzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0PigKKyAgICAgICAgICAgIFN0
cmluZzo6ZnJvbVVURjgoc291cmNlKSwgVVJMIHsgfSwKKyAgICAgICAgICAgIHRvU3RyaW5nVmVj
dG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksCisgICAgICAgICAgICB0
b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXMpLAorICAgICAgICAgICAg
dG9Vc2VyU3R5bGVMZXZlbChsZXZlbCkpKQorICAgICAgICAsIHJlZmVyZW5jZUNvdW50KDEpCisg
ICAgeworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyU3R5bGVTaGVldD4gdXNlclN0
eWxlU2hlZXQ7CisgICAgaW50IHJlZmVyZW5jZUNvdW50OworfTsKKworR19ERUZJTkVfQk9YRURf
VFlQRShXZWJLaXRVc2VyU3R5bGVTaGVldCwgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXQsIHdlYmtp
dF91c2VyX3N0eWxlX3NoZWV0X3JlZiwgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfdW5yZWYpCisK
Ky8qKgorICogd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfcmVmOgorICogQHVzZXJfc3R5bGVfc2hl
ZXQ6IGEgI1dlYktpdFVzZXJTdHlsZVNoZWV0CisgKgorICogQXRvbWljYWxseSBpbmNyZW1lbnRz
IHRoZSByZWZlcmVuY2UgY291bnQgb2YgQHVzZXJfc3R5bGVfc2hlZXQgYnkgb25lLgorICogVGhp
cyBmdW5jdGlvbiBpcyBNVC1zYWZlIGFuZCBtYXkgYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4K
KyAqCisgKiBSZXR1cm5zOiBUaGUgcGFzc2VkICNXZWJLaXRVc2VyU3R5bGVTaGVldAorICoKKyAq
IFNpbmNlOiAyLjYKKyAqLworV2ViS2l0VXNlclN0eWxlU2hlZXQqIHdlYmtpdF91c2VyX3N0eWxl
X3NoZWV0X3JlZihXZWJLaXRVc2VyU3R5bGVTaGVldCogdXNlclN0eWxlU2hlZXQpCit7CisgICAg
Z19hdG9taWNfaW50X2luYygmdXNlclN0eWxlU2hlZXQtPnJlZmVyZW5jZUNvdW50KTsKKyAgICBy
ZXR1cm4gdXNlclN0eWxlU2hlZXQ7Cit9CisKKy8qKgorICogd2Via2l0X3VzZXJfc3R5bGVfc2hl
ZXRfdW5yZWY6CisgKiBAdXNlcl9zdHlsZV9zaGVldDogYSAjV2ViS2l0VXNlclN0eWxlU2hlZXQK
KyAqCisgKiBBdG9taWNhbGx5IGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBAdXNl
cl9zdHlsZV9zaGVldCBieSBvbmUuCisgKiBJZiB0aGUgcmVmZXJlbmNlIGNvdW50IGRyb3BzIHRv
IDAsIGFsbCBtZW1vcnkgYWxsb2NhdGVkIGJ5CisgKiAjV2ViS2l0VXNlclN0eWxlU2hlZXQgaXMg
cmVsZWFzZWQuIFRoaXMgZnVuY3Rpb24gaXMgTVQtc2FmZSBhbmQgbWF5IGJlCisgKiBjYWxsZWQg
ZnJvbSBhbnkgdGhyZWFkLgorICoKKyAqIFNpbmNlOiAyLjYKKyAqLwordm9pZCB3ZWJraXRfdXNl
cl9zdHlsZV9zaGVldF91bnJlZihXZWJLaXRVc2VyU3R5bGVTaGVldCogdXNlclN0eWxlU2hlZXQp
Cit7CisgICAgaWYgKGdfYXRvbWljX2ludF9kZWNfYW5kX3Rlc3QoJnVzZXJTdHlsZVNoZWV0LT5y
ZWZlcmVuY2VDb3VudCkpIHsKKyAgICAgICAgdXNlclN0eWxlU2hlZXQtPn5XZWJLaXRVc2VyU3R5
bGVTaGVldCgpOworICAgICAgICBnX3NsaWNlX2ZyZWUoV2ViS2l0VXNlclN0eWxlU2hlZXQsIHVz
ZXJTdHlsZVNoZWV0KTsKKyAgICB9Cit9CisKKy8qKgorICogd2Via2l0X3VzZXJfc3R5bGVfc2hl
ZXRfbmV3OgorICogQHNvdXJjZTogU291cmNlIGNvZGUgb2YgdGhlIHVzZXIgc3R5bGUgc2hlZXQu
CisgKiBAaW5qZWN0ZWRfZnJhbWVzOiBBICNXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
IHZhbHVlCisgKiBAbGV2ZWw6IEEgI1dlYktpdFVzZXJTdHlsZUxldmVsCisgKiBAd2hpdGVsaXN0
OiAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25lKTogQSB3aGl0ZWxpc3Qgb2Yg
VVJJIHBhdHRlcm5zIG9yICVOVUxMCisgKiBAYmxhY2tsaXN0OiAoYXJyYXkgemVyby10ZXJtaW5h
dGVkPTEpIChhbGxvdy1ub25lKTogQSBibGFja2xpc3Qgb2YgVVJJIHBhdHRlcm5zIG9yICVOVUxM
CisgKgorICogQ3JlYXRlcyBhIG5ldyB1c2VyIHN0eWxlIHNoZWV0LiBTdHlsZSBzaGVldHMgY2Fu
IGJlIGFwcGxpZWQgdG8gc29tZSBVUklzCisgKiBvbmx5IGJ5IHBhc3Npbmcgbm9uLW51bGwgdmFs
dWVzIGZvciBAd2hpdGVsaXN0IG9yIEBibGFja2xpc3QuIFBhc3NpbmcgYQorICogJU5VTEwgd2hp
dGVsaXN0IGltcGxpZXMgdGhhdCBhbGwgVVJJcyBhcmUgb24gdGhlIHdoaXRlbGlzdC4gVGhlIHN0
eWxlCisgKiBzaGVldCBpcyBhcHBsaWVkIGlmIGFuIFVSSSBtYXRjaGVzIHRoZSB3aGl0ZWxpc3Qg
YW5kIG5vdCB0aGUgYmxhY2tsaXN0LgorICogVVJJIHBhdHRlcm5zIG11c3QgYmUgb2YgdGhlIGZv
cm0gYFtwcm90b2NvbF06Ly9baG9zdF0vW3BhdGhdYCwgd2hlcmUgdGhlCisgKiAqaG9zdCogYW5k
ICpwYXRoKiBjb21wb25lbnRzIGNhbiBjb250YWluIHRoZSB3aWxkY2FyZCBjaGFyYWN0ZXIgKGAq
YCkgdG8KKyAqIHJlcHJlc2VudCB6ZXJvIG9yIG1vcmUgb3RoZXIgY2hhcmFjdGVycy4KKyAqCisg
KiBSZXR1cm5zOiBBIG5ldyAjV2ViS2l0VXNlclN0eWxlU2hlZXQKKyAqCisgKiBTaW5jZTogMi42
CisgKi8KK1dlYktpdFVzZXJTdHlsZVNoZWV0KiB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXco
Y29uc3QgZ2NoYXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmpl
Y3RlZEZyYW1lcywgV2ViS2l0VXNlclN0eWxlTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIqIGNvbnN0
KiB3aGl0ZWxpc3QsIGNvbnN0IGNoYXIqIGNvbnN0KiBibGFja2xpc3QpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoc291cmNlLCBudWxscHRyKTsKKyAgICBXZWJLaXRVc2VyU3R5bGVTaGVl
dCogdXNlclN0eWxlU2hlZXQgPSBnX3NsaWNlX25ldyhXZWJLaXRVc2VyU3R5bGVTaGVldCk7Cisg
ICAgbmV3ICh1c2VyU3R5bGVTaGVldCkgV2ViS2l0VXNlclN0eWxlU2hlZXQoc291cmNlLCBpbmpl
Y3RlZEZyYW1lcywgbGV2ZWwsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKKyAgICByZXR1cm4gdXNl
clN0eWxlU2hlZXQ7Cit9CisKK2NvbnN0IFVzZXJTdHlsZVNoZWV0JiB3ZWJraXRVc2VyU3R5bGVT
aGVldEdldFVzZXJTdHlsZVNoZWV0KFdlYktpdFVzZXJTdHlsZVNoZWV0KiB1c2VyU3R5bGVTaGVl
dCkKK3sKKyAgICByZXR1cm4gKnVzZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVTaGVldDsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVu
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgyMjc2ZTYxMWZjZWIzMzQ5Yjg1MjkwOWU4ZTNjMGZlMGM5ODA2ZWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVc2VyQ29udGVudC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVm
aW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIu
aD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFVz
ZXJDb250ZW50X2gKKyNkZWZpbmUgV2ViS2l0VXNlckNvbnRlbnRfaAorCisjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJ
Tl9ERUNMUworCisvKioKKyAqIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6CisgKiBA
V0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfQUxMX0ZSQU1FUzogSW5zZXJ0IHRoZSB1c2VyIHN0
eWxlCisgKiAgIHNoZWV0IGluIGFsbCB0aGUgZnJhbWVzIGxvYWRlZCBieSB0aGUgd2ViIHZpZXcs
IGluY2x1ZGluZworICogICBuZXN0ZWQgZnJhbWVzLiBUaGlzIGlzIHRoZSBkZWZhdWx0LgorICog
QFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX1RPUF9GUkFNRTogSW5zZXJ0IHRoZSB1c2VyIHN0
eWxlCisgKiAgIHNoZWV0ICpvbmx5KiBpbiB0aGUgdG9wLWxldmVsIGZyYW1lIGxvYWRlZCBieSB0
aGUgd2ViIHZpZXcsCisgKiAgIGFuZCAqbm90KiBpbiB0aGUgbmVzdGVkIGZyYW1lcy4KKyAqCisg
KiBTcGVjaWZpZXMgaW4gd2hpY2ggZnJhbWVzIHVzZXIgc3R5bGUgc2hlZXRzIGFyZSB0byBiZSBp
bnNlcnRlZCBpbi4KKyAqCisgKiBTaW5jZTogMi42CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAg
V0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfQUxMX0ZSQU1FUywKKyAgICBXRUJLSVRfVVNFUl9D
T05URU5UX0lOSkVDVF9UT1BfRlJBTUUsCit9IFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXM7CisKKy8qKgorICogV2ViS2l0VXNlclN0eWxlTGV2ZWw6CisgKiBAV0VCS0lUX1VTRVJfU1RZ
TEVfTEVWRUxfVVNFUjogVGhlIHN0eWxlIHNoZWV0IGlzIGFuIHVzZXIgc3R5bGUgc2hlZXQsCisg
KiAgIGl0cyBjb250ZW50cyBhbHdheXMgb3ZlcnJpZGUgb3RoZXIgc3R5bGUgc2hlZXRzLiBUaGlz
IGlzIHRoZSBkZWZhdWx0LgorICogQFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX0FVVEhPUjogVGhl
IHN0eWxlIHNoZWV0IHdpbGwgYmUgdHJlYXRlZCBhcyBpZgorICogICBpdCB3YXMgcHJvdmlkZWQg
YnkgdGhlIGxvYWRlZCBkb2N1bWVudHMuIFRoYXQgbWVhbnMgb3RoZXIgdXNlciBzdHlsZQorICog
ICBzaGVldHMgbWF5IHN0aWxsIG92ZXJyaWRlIGl0LgorICoKKyAqIFNwZWNpZmllcyBob3cgdG8g
dHJlYXQgYW4gdXNlciBzdHlsZSBzaGVldC4KKyAqCisgKiBTaW5jZTogMi42CisgKi8KK3R5cGVk
ZWYgZW51bSB7CisgICAgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfVVNFUiwKKyAgICBXRUJLSVRf
VVNFUl9TVFlMRV9MRVZFTF9BVVRIT1IsCit9IFdlYktpdFVzZXJTdHlsZUxldmVsOworCisjZGVm
aW5lIFdFQktJVF9UWVBFX1VTRVJfU1RZTEVfU0hFRVQgKHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X2dldF90eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVc2VyU3R5bGVTaGVldCBXZWJL
aXRVc2VyU3R5bGVTaGVldDsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X3VzZXJfc3R5bGVf
c2hlZXRfZ2V0X3R5cGUgKHZvaWQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0
ICoKK3dlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZiAgICAgIChXZWJLaXRVc2VyU3R5bGVTaGVl
dCAgICAgICAgICAgKnVzZXJfc3R5bGVfc2hlZXQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF91c2VyX3N0eWxlX3NoZWV0X3VucmVmICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAgICAg
ICAgKnVzZXJfc3R5bGVfc2hlZXQpOworCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0
ICoKK3dlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyAgICAgIChjb25zdCBnY2hhciAgICAgICAg
ICAgICAgICAgICAgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkX2ZyYW1lcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyU3R5bGVMZXZlbCAgICAgICAgICAg
IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBj
b25zdCAgICAgICAgICAgICAqd2hpdGVsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqYmxhY2tsaXN0KTsKKworR19F
TkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZTFiNGNjNTdkYTY4NTJkMjgxZTdlM2MwN2ZjZGE1N2U5ODY4NmU2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLmNwcApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2Fs
aWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyLmgiCisKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX1dlYktp
dFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUgeworICAgIF9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXJQcml2YXRlKCkKKyAgICAgICAgOiB1c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IHVzZXJDb250ZW50Q29udHJvbGxlcjsKK307
CisKKy8qKgorICogU0VDVElPTjpXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIKKyAqIEBzaG9ydF9k
ZXNjcmlwdGlvbjogTWFuYWdlcyB1c2VyLWRlZmluZWQgY29udGVudCB3aGljaCBhZmZlY3RzIHdl
YiBwYWdlcy4KKyAqIEB0aXRsZTogV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCisgKgorICogVXNp
bmcgYSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIHVzZXIgQ1NTIHN0eWxlIHNoZWV0cyBjYW4g
YmUgc2V0IHRvCisgKiBiZSBpbmplY3RlZCBpbiB0aGUgd2ViIHBhZ2VzIGxvYWRlZCBieSBhICNX
ZWJLaXRXZWJWaWV3LCBieQorICogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHls
ZV9zaGVldCgpLgorICoKKyAqIFRvIHVzZSBhICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIsIGl0
IG11c3QgYmUgY3JlYXRlZCB1c2luZworICogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25l
dygpLCBhbmQgdGhlbiBwYXNzZWQgdG8KKyAqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91c2Vy
X2NvbnRlbnRfbWFuYWdlcigpLiBVc2VyIHN0eWxlCisgKiBzaGVldHMgY2FuIGJlIGNyZWF0ZWQg
d2l0aCB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXcoKS4KKyAqCisgKiBVc2VyIHN0eWxlIHNo
ZWV0cyBjYW4gYmUgYWRkZWQgYW5kIHJlbW92ZWQgYXQgYW55IHRpbWUsIGJ1dAorICogdGhleSB3
aWxsIGFmZmVjdCB0aGUgd2ViIHBhZ2VzIGxvYWRlZCBhZnRlcndhcmRzLgorICoKKyAqIFNpbmNl
OiAyLjYKKyAqLworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LCB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXIsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2
b2lkIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9jbGFzc19pbml0KFdlYktpdFVzZXJDb250
ZW50TWFuYWdlckNsYXNzKikKK3sKK30KKworLyoqCisgKiB3ZWJraXRfdXNlcl9jb250ZW50X21h
bmFnZXJfbmV3OgorICoKKyAqIENyZWF0ZXMgYSBuZXcgdXNlciBjb250ZW50IG1hbmFnZXIuCisg
KgorICogUmV0dXJuczogQSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyCisgKgorICogU2luY2U6
IDIuNgorICovCitXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIHdlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl9uZXcoKQoreworICAgIHJldHVybiBXRUJLSVRfVVNFUl9DT05URU5UX01BTkFHRVIo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSLCBudWxscHRyKSk7
Cit9CisKKy8qKgorICogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVl
dDoKKyAqIEBtYW5hZ2VyOiBBICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIKKyAqIEBzdHlsZXNo
ZWV0OiBBICNXZWJLaXRVc2VyU3R5bGVTaGVldAorICoKKyAqIEFkZHMgYSAjV2ViS2l0VXNlclN0
eWxlU2hlZXQgdG8gdGhlIGdpdmVuICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuCisgKiBUaGUg
c2FtZSAjV2ViS2l0VXNlclN0eWxlU2hlZXQgY2FuIGJlIHJldXNlZCB3aXRoIG11bHRpcGxlCisg
KiAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIGluc3RhbmNlcy4KKyAqCisgKiBTaW5jZTogMi42
CisgKi8KK3ZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldChX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIG1hbmFnZXIsIFdlYktpdFVzZXJTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfQ09OVEVO
VF9NQU5BR0VSKG1hbmFnZXIpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHN0eWxlU2hlZXQpOwor
ICAgIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hl
ZXQod2Via2l0VXNlclN0eWxlU2hlZXRHZXRVc2VyU3R5bGVTaGVldChzdHlsZVNoZWV0KSk7Cit9
CisKKy8qKgorICogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxfc3R5bGVf
c2hlZXRzOgorICogQG1hbmFnZXI6IEEgI1dlYktpdFVzZXJDb250ZW50TWFuYWdlcgorICoKKyAq
IFJlbW92ZXMgYWxsIHVzZXIgc3R5bGUgc2hlZXRzIGZyb20gdGhlIGdpdmVuICNXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuCisgKgorICogU2luY2U6IDIuNgorICovCit2b2lkIHdlYmtpdF91c2Vy
X2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3N0eWxlX3NoZWV0cyhXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVNF
Ul9DT05URU5UX01BTkFHRVIobWFuYWdlcikpOworICAgIG1hbmFnZXItPnByaXYtPnVzZXJDb250
ZW50Q29udHJvbGxlci0+cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7Cit9CisKK1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KiB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eShXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIG1hbmFnZXIpCit7
CisgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci5nZXQoKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVz
ZXJDb250ZW50TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjkxOTUwMGZhZWYwYzU4NWYwY2E0
OTYzNjQyZTZlYjgzM2ExNzJlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oCkBAIC0wLDAgKzEsNzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9f
V0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vy
cm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIK
KyNlbmRpZgorCisjaWZuZGVmIFdlYktpdFVzZXJDb250ZW50TWFuYWdlcl9oCisjZGVmaW5lIFdl
YktpdFVzZXJDb250ZW50TWFuYWdlcl9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
VXNlckNvbnRlbnQuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1VT
RVJfQ09OVEVOVF9NQU5BR0VSICAgICAgICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdl
cl9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfVVNFUl9DT05URU5UX01BTkFHRVIob2JqKSAg
ICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVf
VVNFUl9DT05URU5UX01BTkFHRVIsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlcikpCisjZGVmaW5l
IFdFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFOQUdFUihvYmopICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRfTUFOQUdFUikp
CisjZGVmaW5lIFdFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUl9DTEFTUyhrbGFzcykgICAgKEdf
VFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9VU0VSX0NPTlRFTlRf
TUFOQUdFUiwgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRf
SVNfVVNFUl9DT05URU5UX01BTkFHRVJfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
VFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVVNFUl9DT05URU5UX01BTkFHRVIpKQorI2RlZmlu
ZSBXRUJLSVRfVVNFUl9DT05URU5UX01BTkFHRVJfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5T
VEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfVVNFUl9DT05URU5UX01BTkFHRVIs
IFdlYktpdFVzZXJDb250ZW50TWFuYWdlckNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFVzZXJDb250ZW50TWFuYWdlciAgICAgICAgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyOwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFVzZXJDb250ZW50TWFuYWdlckNsYXNzICAgV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyUHJpdmF0ZSBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlOworCisKK3N0cnVjdCBf
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIC8q
PCBwcml2YXRlID4qLworICAgIFdlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUgKnByaXY7
Cit9OworCitzdHJ1Y3QgX1dlYktpdFVzZXJDb250ZW50TWFuYWdlckNsYXNzIHsKKyAgICBHT2Jq
ZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQwKSAo
dm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9pZCk7CisgICAgdm9pZCAo
Kl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CisgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQz
KSAodm9pZCk7Cit9OworCisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl9nZXRfdHlwZSAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2Vi
S2l0VXNlckNvbnRlbnRNYW5hZ2VyICoKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXcg
ICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3Vz
ZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldCAgICAgICAgIChXZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJTdHlsZVNoZWV0ICAgICAqc3R5bGVzaGVldCk7
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxs
X3N0eWxlX3NoZWV0cyAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICptYW5hZ2VyKTsKKworR19F
TkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjc5MWE1MzU3YjQxOTIxOWNmNjZkZmM3NmJkYzJkMTY0ZmIzYjY1YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJD
b250ZW50TWFuYWdlclByaXZhdGUuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJp
dmF0ZV9oCisjZGVmaW5lIFdlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGVfaAorCisjaW5j
bHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuaCIKKworV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eSogd2Via2l0VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKik7CisKKyNlbmRpZiAvLyBXZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXJQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIx
YTdhZTVhMTBiNDBhZmZjNjNkNTU3Yjg1Y2NmMTkzZWFjYzM0YgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50UHJpdmF0
ZS5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMu
TC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2lmbmRlZiBXZWJLaXRVc2VyQ29udGVudFByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRVc2Vy
Q29udGVudFByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnQuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1VzZXJTdHlsZVNoZWV0Lmg+CisKK2NvbnN0IFdlYkNvcmU6OlVzZXJTdHls
ZVNoZWV0JiB3ZWJraXRVc2VyU3R5bGVTaGVldEdldFVzZXJTdHlsZVNoZWV0KFdlYktpdFVzZXJT
dHlsZVNoZWV0Kik7CisKKyNlbmRpZiAvLyBXZWJLaXRVc2VyQ29udGVudFByaXZhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0
LmNwcAppbmRleCBhZTYwNjc2ZWZjZmFlYTA2YjZkZWUyODIzOWM1ZGEzZWFmY2E5ZGQ5Li44YzA4
MGNhZjJmMzRhYTRjMTQ5ZjQ0ZjQxZGFiMTY3MmE3Njc0NTBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzks
NiArMzksNyBAQAogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJLaXRUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldlYktpdFVSSVNjaGVtZVJl
cXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0dyb3VwUHJp
dmF0ZS5oIgpAQCAtMTA1MCwxMiArMTA1MSwxMyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHREaWRG
aW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdQog
ICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZVJlcXVlc3RzLnJlbW92ZShjdXN0b21Qcm90b2Nv
bElEKTsKIH0KIAotdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2Vi
Vmlld0dyb3VwKiB3ZWJWaWV3R3JvdXAsIFdlYktpdFdlYlZpZXcqIHJlbGF0ZWRWaWV3KQordm9p
ZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCog
Y29udGV4dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJW
aWV3R3JvdXAsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBX
ZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KTsKICAgICBXZWJQYWdlR3Jv
dXAqIHBhZ2VHcm91cCA9IHdlYlZpZXdHcm91cCA/IHdlYmtpdFdlYlZpZXdHcm91cEdldFBhZ2VH
cm91cCh3ZWJWaWV3R3JvdXApIDogMDsKICAgICBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlID0g
cmVsYXRlZFZpZXcgPyB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JB
U0UocmVsYXRlZFZpZXcpKSA6IG51bGxwdHI7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVX
ZWJQYWdlKHdlYlZpZXdCYXNlLCBjb250ZXh0LT5wcml2LT5jb250ZXh0LmdldCgpLCBwYWdlR3Jv
dXAsIHJlbGF0ZWRQYWdlKTsKKyAgICBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogdXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkgPSB1c2VyQ29udGVudE1hbmFnZXIgPyB3ZWJraXRVc2Vy
Q29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1h
bmFnZXIpIDogbnVsbHB0cjsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uod2Vi
Vmlld0Jhc2UsIGNvbnRleHQtPnByaXYtPmNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cCwgdXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHksIHJlbGF0ZWRQYWdlKTsKIAogICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZSh3ZWJWaWV3QmFzZSk7CiAgICAgY29udGV4
dC0+cHJpdi0+d2ViVmlld3Muc2V0KHBhZ2UtPnBhZ2VJRCgpLCB3ZWJWaWV3KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0
UHJpdmF0ZS5oCmluZGV4IDA2NDc0YTFlZjBhYjMyNDI0MGJlMmYxMTEzMDQxNGZiMjI5ZTNlMTQu
Ljc2ZGNkMzY1ODZjYTRjMzk2MDhiMTYwZWEwYTM0NWY2ZGQzOTAxYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFBy
aXZhdGUuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNp
bmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1
ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRl
eHQuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3R3JvdXAuaCIKICNpbmNsdWRlICJXZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgpAQCAtNDIsNyArNDMsNyBAQCBXZWJLaXQ6
OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiB3ZWJraXRXZWJDb250ZXh0R2V0
UmVxdWVzdE1hbmFnZXIoVwogdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9t
UHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIEFQ
STo6VVJMUmVxdWVzdCopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RvcExvYWRpbmdDdXN0b21Q
cm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiB2
b2lkIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0
V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotdm9pZCB3ZWJraXRXZWJD
b250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRXZWJWaWV3R3JvdXAqLCBXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdl
YkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0V2Vi
VmlldyosIFdlYktpdFdlYlZpZXdHcm91cCosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdl
YktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFdlYlZpZXdEZXN0cm95ZWQoV2Vi
S2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqKTsKIFdlYktpdFdlYlZpZXcqIHdlYmtpdFdl
YkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQ
YWdlUHJveHkqKTsKIFdlYktpdFdlYlZpZXdHcm91cCogd2Via2l0V2ViQ29udGV4dEdldERlZmF1
bHRXZWJWaWV3R3JvdXAoV2ViS2l0V2ViQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBkMWU5ZDY2M2MzOWU1
NmMxM2MxNTlmNTBjOWE1OGE5MzdkY2UzMWU0Li44NWIwNzhhMTgxZTE4YWQ4NjQ2Mjg5MzI1NGUw
MWY3YTZjOGY5ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTMzLDYgKzEzMyw3IEBAIGVudW0gewogICAgIFBST1Bf
V0VCX0NPTlRFWFQsCiAgICAgUFJPUF9SRUxBVEVEX1ZJRVcsCiAgICAgUFJPUF9HUk9VUCwKKyAg
ICBQUk9QX1VTRVJfQ09OVEVOVF9NQU5BR0VSLAogICAgIFBST1BfVElUTEUsCiAgICAgUFJPUF9F
U1RJTUFURURfTE9BRF9QUk9HUkVTUywKICAgICBQUk9QX0ZBVklDT04sCkBAIC0xNzEsNiArMTcy
LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRT
ZXR0aW5ncz4gc2V0dGluZ3M7CiAgICAgdW5zaWduZWQgbG9uZyBzZXR0aW5nc0NoYW5nZWRIYW5k
bGVySUQ7CiAgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3R3JvdXA+IGdyb3VwOworICAgIEdSZWZQ
dHI8V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPiB1c2VyQ29udGVudE1hbmFnZXI7CiAgICAgR1Jl
ZlB0cjxXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzPiB3aW5kb3dQcm9wZXJ0aWVzOwogCiAgICAgR1Jl
ZlB0cjxHTWFpbkxvb3A+IG1vZGFsTG9vcDsKQEAgLTUwMSw3ICs1MDMsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgV2ViS2l0
V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhvYmplY3QpOwogICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICB3ZWJraXRXZWJDb250ZXh0
Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dCwgd2ViVmlldywgcHJpdi0+Z3JvdXAu
Z2V0KCksIHByaXYtPnJlbGF0ZWRWaWV3KTsKKyAgICB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFn
ZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dCwgd2ViVmlldywgcHJpdi0+Z3JvdXAuZ2V0KCksIHBy
aXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcpOwogICAgIC8v
IFRoZSByZWxhdGVkIHZpZXcgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhlIGNvbnN0cnVjdGlvbi4K
ICAgICBwcml2LT5yZWxhdGVkVmlldyA9IG51bGxwdHI7CiAKQEAgLTU0Miw2ICs1NDQsMTEgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcElkLCBjb25zdCBHVmFsdWUKICAgICAgICAgd2ViVmlldy0+cHJpdi0+Z3JvdXAgPSBn
cm91cCA/IFdFQktJVF9XRUJfVklFV19HUk9VUChncm91cCkgOiAwOwogICAgICAgICBicmVhazsK
ICAgICB9CisgICAgY2FzZSBQUk9QX1VTRVJfQ09OVEVOVF9NQU5BR0VSOiB7CisgICAgICAgIGdw
b2ludGVyIHVzZXJDb250ZW50TWFuYWdlciA9IGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSk7Cisg
ICAgICAgIHdlYlZpZXctPnByaXYtPnVzZXJDb250ZW50TWFuYWdlciA9IHVzZXJDb250ZW50TWFu
YWdlciA/IFdFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUih1c2VyQ29udGVudE1hbmFnZXIpIDog
bnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUFJPUF9aT09NX0xFVkVM
OgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwod2ViVmlldywgZ192YWx1
ZV9nZXRfZG91YmxlKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTYxLDYgKzU2OCw5IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0dST1VQOgogICAgICAgICBn
X3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAod2ViVmll
dykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVVNFUl9DT05URU5UX01BTkFHRVI6
CisgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF91
c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UFJPUF9USVRMRToKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJWaWV3LT5w
cml2LT50aXRsZS5kYXRhKCkpOwogICAgICAgICBicmVhazsKQEAgLTY3MSw2ICs2ODEsMjMgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNz
KiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VC
S0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CiAKICAgICAv
KioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OnVzZXItY29udGVudC1tYW5hZ2VyOgorICAgICAqCisg
ICAgICogVGhlICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgb2YgdGhlIHZpZXcuCisgICAgICoK
KyAgICAgKiBTaW5jZTogMi42CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX1VTRVJfQ09OVEVO
VF9NQU5BR0VSLAorICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KAorICAgICAgICAgICAgInVz
ZXItY29udGVudC1tYW5hZ2VyIiwKKyAgICAgICAgICAgIF8oIldlYlZpZXcgdXNlciBjb250ZW50
IG1hbmFnZXIiKSwKKyAgICAgICAgICAgIF8oIlRoZSBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIg
b2YgdGhlIHZpZXciKSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5B
R0VSLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9S
RUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCisgICAgLyoqCiAgICAgICog
V2ViS2l0V2ViVmlldzp0aXRsZToKICAgICAgKgogICAgICAqIFRoZSBtYWluIGZyYW1lIGRvY3Vt
ZW50IHRpdGxlIG9mIHRoaXMgI1dlYktpdFdlYlZpZXcuIElmCkBAIC0xOTI0LDYgKzE5NTEsOCBA
QCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KFdlYktpdFdlYkNv
bnRleHQqIGNvbnRleHQpCiAgKiBZb3UgY2FuIGFsc28gdXNlIHRoaXMgbWV0aG9kIHRvIGltcGxl
bWVudCBvdGhlciBwcm9jZXNzIG1vZGVscyBiYXNlZCBvbiAlV0VCS0lUX1BST0NFU1NfTU9ERUxf
TVVMVElQTEVfU0VDT05EQVJZX1BST0NFU1NFUywKICAqIGxpa2UgZm9yIGV4YW1wbGUsIHNoYXJp
bmcgdGhlIHNhbWUgd2ViIHByb2Nlc3MgZm9yIGFsbCB0aGUgdmlld3MgaW4gdGhlIHNhbWUgc2Vj
dXJpdHkgZG9tYWluLgogICoKKyAqIFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3IHdp
bGwgYWxzbyBoYXZlIHRoZSBzYW1lICNXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgYXMgQHdlYl92
aWV3LgorICoKICAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogVGhlIG5ld2x5IGNyZWF0ZWQg
I1dlYktpdFdlYlZpZXcgd2lkZ2V0CiAgKgogICogU2luY2U6IDIuNApAQCAtMTkzMiw3ICsxOTYx
LDEwIEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRfdmlldyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVsbHB0cik7CiAKLSAgICByZXR1cm4gR1RLX1dJREdF
VChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsICJyZWxhdGVkLXZpZXciLCB3ZWJW
aWV3LCBudWxscHRyKSk7CisgICAgcmV0dXJuIEdUS19XSURHRVQoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX1dFQl9WSUVXLAorICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB3ZWJWaWV3
LT5wcml2LT51c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksCisgICAgICAgICJyZWxhdGVkLXZpZXci
LCB3ZWJWaWV3LAorICAgICAgICBudWxscHRyKSk7CiB9CiAKIC8qKgpAQCAtMTk1Myw2ICsxOTg1
LDI1IEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2dyb3VwKFdlYktpdFdl
YlZpZXdHcm91cCogZ3JvdXApCiB9CiAKIC8qKgorICogd2Via2l0X3dlYl92aWV3X25ld193aXRo
X3VzZXJfY29udGVudF9tYW5hZ2VyOgorICogQHVzZXJfY29udGVudF9tYW5hZ2VyOiBhICNXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIuCisgKgorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViVmll
dyB3aXRoIHRoZSBnaXZlbiAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLgorICogVGhlIGNvbnRl
bnQgbG9hZGVkIGluIHRoZSB2aWV3IG1heSBiZSBhZmZlY3RlZCBieSB0aGUgY29udGVudCBpbmpl
Y3RlZAorICogaW4gdGhlIHZpZXcgYnkgdGhlIHVzZXIgY29udGVudCBtYW5hZ2VyLgorICoKKyAq
IFJldHVybnM6IFRoZSBuZXdseSBjcmVhdGVkICNXZWJLaXRXZWJWaWV3IHdpZGdldAorICoKKyAq
IFNpbmNlOiAyLjYKKyAqLworR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNl
cl9jb250ZW50X21hbmFnZXIoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB1c2VyQ29udGVudE1h
bmFnZXIpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfQ09OVEVO
VF9NQU5BR0VSKHVzZXJDb250ZW50TWFuYWdlciksIG51bGxwdHIpOworCisgICAgcmV0dXJuIEdU
S19XSURHRVQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLCAidXNlci1jb250ZW50
LW1hbmFnZXIiLCB1c2VyQ29udGVudE1hbmFnZXIsIG51bGxwdHIpKTsKK30KKworLyoqCiAgKiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQ6CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKICAqCkBAIC0xOTg2LDYgKzIwMzcsMjQgQEAgV2ViS2l0V2ViVmlld0dyb3VwKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2dyb3VwKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAKIC8qKgorICog
d2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcjoKKyAqIEB3ZWJfdmlldzog
YSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldHMgdGhlIHVzZXIgY29udGVudCBtYW5hZ2VyIGFz
c29jaWF0ZWQgdG8gQHdlYl92aWV3LCBvciAlTlVMTCBpZiB0aGUKKyAqIHZpZXcgZG9lcyBub3Qg
aGF2ZSBhbiB1c2VyIGNvbnRlbnQgbWFuYWdlci4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIg
bm9uZSk6IHRoZSAjV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUg
dmlldworICoKKyAqIFNpbmNlOiAyLjYKKyAqLworV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdl
YlZpZXcpLCBudWxscHRyKTsKKworICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT51c2VyQ29udGVu
dE1hbmFnZXIuZ2V0KCk7Cit9CisKKy8qKgogICogd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpOgog
ICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKiBAdXJpOiBhbiBVUkkgc3RyaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5k
ZXggNTQ5ZDI1NGNjMjZlYjM3ZTJmZmVjYzAxZWRhNjcwM2QyMTk3Y2NjYS4uOWJmMmNjNTQ2YmM0
NTYyMzJjMDk3ZWU2ZjliYjJmOWZlYzIwMzc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0U2NyaXB0RGlhbG9nLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJJbnNw
ZWN0b3IuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlJlc291cmNlLmg+CkBAIC0yNjAs
NiArMjYxLDkgQEAgd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRfdmlldyAgICAgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldwogV0VCS0lUX0FQSSBHdGtXaWRnZXQgKgogd2Via2l0X3dl
Yl92aWV3X25ld193aXRoX2dyb3VwICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
d0dyb3VwICAgICAgICAqZ3JvdXApOwogCitXRUJLSVRfQVBJIEd0a1dpZGdldCAqCit3ZWJraXRf
d2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIgICAgICAgIChXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIgICp1c2VyX2NvbnRlbnRfbWFuYWdlcik7CisKIFdFQktJVF9BUEkgV2Vi
S2l0V2ViQ29udGV4dCAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQgICAgICAgICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKQEAg
LTQ1NSw2ICs0NTksMTAgQEAgV0VCS0lUX0FQSSBjYWlyb19zdXJmYWNlX3QgKgogd2Via2l0X3dl
Yl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2ggICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICpyZXN1bHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
RXJyb3IgICAgICAgICAgICAgICAgICAgKiplcnJvcik7CisKK1dFQktJVF9BUEkgV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyICoKK3dlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFn
ZXIgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKwog
R19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggM2RlY2JmZjEyZTU0OWNkY2Qx
YjAwMThhNWRiNTM0Y2E5ZWNmNTE5NS4uZWZhZmYxNzVlOTkyZGVmZTI4N2Y1MTc0ZmJjNzgzOWUy
YmUyMGU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlBh
Z2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByZWZl
cmVuY2VzLmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNp
bmNsdWRlICJXZWJWaWV3QmFzZUlucHV0TWV0aG9kRmlsdGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9DYWlyb1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpcGJvYXJkVXRpbGl0aWVz
R3RrLmg+CkBAIC05NDEsMTAgKzk0MiwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
YmFzZV9jbGFzc19pbml0KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogICAg
IGNvbnRhaW5lckNsYXNzLT5mb3JhbGwgPSB3ZWJraXRXZWJWaWV3QmFzZUNvbnRhaW5lckZvcmFs
bDsKIH0KIAotV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYkNv
bnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBXZWJQYWdlUHJveHkqIHJl
bGF0ZWRQYWdlKQorV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdl
YkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRDb250cm9sbGVyLCBXZWJQYWdlUHJveHkqIHJl
bGF0ZWRQYWdlKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSA9
IFdFQktJVF9XRUJfVklFV19CQVNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFV19C
QVNFLCBOVUxMKSk7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYmtpdFdl
YlZpZXdCYXNlLCBjb250ZXh0LCBwYWdlR3JvdXAsIHJlbGF0ZWRQYWdlKTsKKyAgICB3ZWJraXRX
ZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uod2Via2l0V2ViVmlld0Jhc2UsIGNvbnRleHQsIHBhZ2VH
cm91cCwgdXNlckNvbnRlbnRDb250cm9sbGVyLCByZWxhdGVkUGFnZSk7CiAgICAgcmV0dXJuIHdl
YmtpdFdlYlZpZXdCYXNlOwogfQogCkBAIC05NzcsMTMgKzk3OCwxNCBAQCBzdGF0aWMgdm9pZCBk
ZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdC
YXNlKQogfQogI2VuZGlmIC8vIEhBVkUoR1RLX1NDQUxFX0ZBQ1RPUikKIAotdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdC
YXNlLCBXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFn
ZVByb3h5KiByZWxhdGVkUGFnZSkKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdl
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgV2ViQ29udGV4dCogY29udGV4
dCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KiB1c2VyQ29udGVudENvbnRyb2xsZXIsIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCiB7CiAg
ICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2Via2l0V2ViVmlld0Jhc2UtPnBy
aXY7CiAKICAgICBXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKICAg
ICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSBwYWdlR3JvdXA7CiAgICAgd2ViUGFn
ZUNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZTsKKyAgICB3ZWJQYWdlQ29u
ZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudENvbnRyb2xsZXI7
CiAgICAgcHJpdi0+cGFnZVByb3h5ID0gY29udGV4dC0+Y3JlYXRlV2ViUGFnZSgqcHJpdi0+cGFn
ZUNsaWVudCwgV1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAgcHJpdi0+cGFn
ZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4
IGI5YzM4YzI2NTg1MjRiNTZhZWVmYTJlZTNkNTVhOGU4YWY5ZDMzZTQuLmRmZTIyODVlOWE3YWE3
NmZlYjM0ZWU3YTk4ZjkzNjJiZjAyYmM1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC0z
NCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgogCi1XZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2VD
cmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQYWdlR3JvdXAqLCBXZWJLaXQ6
OldlYlBhZ2VQcm94eSopOworV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlKFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiBH
dGtJTUNvbnRleHQqIHdlYmtpdFdlYlZpZXdCYXNlR2V0SU1Db250ZXh0KFdlYktpdFdlYlZpZXdC
YXNlKik7CiBXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdl
YktpdFdlYlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShX
ZWJLaXRXZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdy
b3VwKiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVh
dGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0
OjpXZWJQYWdlR3JvdXAqLCBXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kiwg
V2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb29sdGlw
VGV4dChXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IGNoYXIqKTsKIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VTZXRUb29sdGlwQXJlYShXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VGb3J3YXJkTmV4dEtleUV2ZW50KFdlYktp
dFdlYlZpZXdCYXNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0dyb3VwLmNwcAppbmRleCBkMmE1YmU4MzJhM2ZiZjFlZDE3YzY3
NDA4ZTRkMTc5NTgzMWQyMjgwLi5jOGE2NTA3YThlNTk4NmZjYWQ2YjY4NGI3ZTNiZDU5OWJiOWIy
MDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdHcm91cC5jcHAKQEAgLTIzNiw2MyArMjM2LDMgQEAgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfZ3JvdXBfc2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXdHcm91cCogZ3JvdXAsIFdlYktp
dFNldHRpbmcKICAgICB3ZWJraXRXZWJWaWV3R3JvdXBBdHRhY2hTZXR0aW5nc1RvUGFnZUdyb3Vw
KGdyb3VwKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QoZ3JvdXApLCAic2V0dGluZ3Mi
KTsKIH0KLQotc3RhdGljIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gdG9BUElBcnJheShjb25zdCBj
aGFyKiBjb25zdCogbGlzdCkKLXsKLSAgICBpZiAoIWxpc3QpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4gPiBlbnRyaWVzOwotICAgIHdoaWxlICgq
bGlzdCkgewotICAgICAgICBlbnRyaWVzLmFwcGVuZChBUEk6OlN0cmluZzo6Y3JlYXRlRnJvbVVU
RjhTdHJpbmcoKmxpc3QpKTsKLSAgICAgICAgbGlzdCsrOwotICAgIH0KLSAgICByZXR1cm4gQVBJ
OjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShlbnRyaWVzKSk7Ci19Ci0KLS8qKgotICogd2Via2l0
X3dlYl92aWV3X2dyb3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0OgotICogQGdyb3VwOiBhICNXZWJL
aXRXZWJWaWV3R3JvdXAKLSAqIEBzb3VyY2U6IHRoZSBzb3VyY2Ugb2YgdGhlIHN0eWxlX3NoZWV0
IHRvIGluamVjdAotICogQGJhc2VfdXJpOiAoYWxsb3ctbm9uZSk6IHRoZSBiYXNlIFVSSSB0byB1
c2Ugd2hlbiBwcm9jZXNzaW5nIHRoZSBzdHlsZV9zaGVldCBjb250ZW50cyBvciAlTlVMTCBmb3Ig
YWJvdXQ6YmxhbmsKLSAqIEB3aGl0ZWxpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFs
bG93LW5vbmUpOiBhIHdoaXRlbGlzdCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKLSAqIEBibGFj
a2xpc3Q6IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKGFsbG93LW5vbmUpOiBhIGJsYWNrbGlz
dCBvZiBVUkkgcGF0dGVybnMgb3IgJU5VTEwKLSAqIEBpbmplY3RlZF9mcmFtZXM6IGEgI1dlYktp
dEluamVjdGVkQ29udGVudEZyYW1lcyBkZXNjcmliaW5nIHRvIHdoaWNoIGZyYW1lcyB0aGUgc3R5
bGVfc2hlZXQgc2hvdWxkIGFwcGx5Ci0gKgotICogSW5qZWN0IGFuIGV4dGVybmFsIHN0eWxlIHNo
ZWV0IGludG8gcGFnZXMuIEl0IGlzIHBvc3NpYmxlIHRvIG9ubHkgYXBwbHkgdGhlIHN0eWxlIHNo
ZWV0Ci0gKiB0byBzb21lIFVSSXMgYnkgcGFzc2luZyBub24tbnVsbCB2YWx1ZXMgZm9yIEB3aGl0
ZWxpc3Qgb3IgQGJsYWNrbGlzdC4gUGFzc2luZyBhICVOVUxMCi0gKiB3aGl0ZWxpc3QgaW1wbGll
cyB0aGF0IGFsbCBVUklzIGFyZSBvbiB0aGUgd2hpdGVsaXN0LiBUaGUgc3R5bGUgc2hlZXQgaXMg
YXBwbGllZCBpZiBhIFVSSSBtYXRjaGVzCi0gKiB0aGUgd2hpdGVsaXN0IGFuZCBub3QgdGhlIGJs
YWNrbGlzdC4gVVJJIHBhdHRlcm5zIG11c3QgYmUgb2YgdGhlIGZvcm0gW3Byb3RvY29sXTovL1to
b3N0XS9bcGF0aF0KLSAqIHdoZXJlIHRoZSBob3N0IGFuZCBwYXRoIGNvbXBvbmVudHMgY2FuIGNv
bnRhaW4gdGhlIHdpbGRjYXJkIGNoYXJhY3RlciAoJyonKSB0byByZXByZXNlbnQgemVybwotICog
b3IgbW9yZSBvdGhlciBjaGFyYWN0ZXJzLgotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19ncm91
cF9hZGRfdXNlcl9zdHlsZV9zaGVldChXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwLCBjb25zdCBj
aGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqIGJhc2VVUkksIGNvbnN0IGNoYXIqIGNvbnN0KiB3aGl0
ZWxpc3QsIGNvbnN0IGNoYXIqIGNvbnN0KiBibGFja2xpc3QsIFdlYktpdEluamVjdGVkQ29udGVu
dEZyYW1lcyBpbmplY3RlZEZyYW1lcykKLXsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfVklFV19HUk9VUChncm91cCkpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc291cmNlKTsK
LQotICAgIFJlZlB0cjxBUEk6OkFycmF5PiB3ZWJXaGl0ZWxpc3QgPSB0b0FQSUFycmF5KHdoaXRl
bGlzdCk7Ci0gICAgUmVmUHRyPEFQSTo6QXJyYXk+IHdlYkJsYWNrbGlzdCA9IHRvQVBJQXJyYXko
YmxhY2tsaXN0KTsKLQotICAgIC8vIFdlIGFsd2F5cyB1c2UgVXNlclN0eWxlVXNlckxldmVsIHRv
IG1hdGNoIHRoZSBiZWhhdmlvciBvZiBXS1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0LgotICAg
IGdyb3VwLT5wcml2LT5wYWdlR3JvdXAtPmFkZFVzZXJTdHlsZVNoZWV0KAotICAgICAgICBTdHJp
bmc6OmZyb21VVEY4KHNvdXJjZSksCi0gICAgICAgIFN0cmluZzo6ZnJvbVVURjgoYmFzZVVSSSks
Ci0gICAgICAgIHdlYldoaXRlbGlzdC5nZXQoKSwKLSAgICAgICAgd2ViQmxhY2tsaXN0LmdldCgp
LAotICAgICAgICB0b1dlYkNvcmVVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJh
bWVzKSwKLSAgICAgICAgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsKTsKLX0KLQotLyoqCi0g
KiB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0czoKLSAq
IEBncm91cDogYSAjV2ViS2l0V2ViVmlld0dyb3VwCi0gKgotICogUmVtb3ZlIGFsbCBzdHlsZSBz
aGVldHMgcHJldmlvdXNseSBpbmplY3RlZCBpbnRvIHRoaXMgI1dlYktpdFdlYlZpZXdHcm91cCAK
LSAqIHZpYSB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfYWRkX3VzZXJfc3R5bGVfc2hlZXQoKS4KLSAq
Lwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3NoZWV0
cyhXZWJLaXRXZWJWaWV3R3JvdXAqIGdyb3VwKQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXX0dST1VQKGdyb3VwKSk7Ci0gICAgZ3JvdXAtPnByaXYtPnBhZ2VHcm91
cC0+cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3JvdXAuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5oCmluZGV4IDY4NWYxOTkw
NGVkY2ZkOWM2YjVhZGIwYjUzYmUwN2E3NDU2MzU4ZDguLjgzNmVhMTczNGYzNjg5MjBjNDhjYzNm
NDRiMjdiYjI5YmZlZTVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHcm91cC5oCkBAIC04NCwxNyArODQsNiBAQCBXRUJLSVRf
QVBJIHZvaWQKIHdlYmtpdF93ZWJfdmlld19ncm91cF9zZXRfc2V0dGluZ3MgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3R3JvdXAgICAgICAgICAgKmdyb3VwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFNldHRpbmdzICAgICAg
ICAgICAgICAqc2V0dGluZ3MpOwogCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF93ZWJfdmlld19n
cm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldCAgICAgICAgIChXZWJLaXRXZWJWaWV3R3JvdXAgICAg
ICAgICAgICpncm91cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICpzb3VyY2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIg
ICAgICAgICAgICAgICAgICAqYmFzZV91cmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBjb25zdCAgICAgICAgICAqd2hp
dGVsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdjaGFyICogY29uc3QgICAgICAgICAgKmJsYWNrbGlzdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRJbmplY3RlZENv
bnRlbnRGcmFtZXMgICBpbmplY3RlZF9mcmFtZXMpOwotCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtp
dF93ZWJfdmlld19ncm91cF9yZW1vdmVfYWxsX3VzZXJfc3R5bGVfc2hlZXRzIChXZWJLaXRXZWJW
aWV3R3JvdXAgICAgICAgICAgKmdyb3VwKTsKLQogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCA1NDgxM2M5MDBhZDZlYzJmMTE3YjE2MjFiNDE4ODBj
MjFkYzlkY2FlLi4wNjNjYjY3NWJiZmE5MmE4ZDU3MGMzYjAxZjY4NWZiMDJjZTU2YmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTczLDYgKzczLDQ1IEBAIHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfdHlwZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdFVzZXJD
b250ZW50PC9GSUxFPgorPFRJVExFPldlYktpdFVzZXJDb250ZW50PC9USVRMRT4KK1dlYktpdFVz
ZXJTdHlsZVNoZWV0CitXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzCitXZWJLaXRVc2Vy
U3R5bGVMZXZlbAord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfcmVmCit3ZWJraXRfdXNlcl9zdHls
ZV9zaGVldF91bnJlZgord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3CisKKzxTVUJTRUNUSU9O
IFN0YW5kYXJkPgorV0VCS0lUX1RZUEVfVVNFUl9TVFlMRV9TSEVFVAorCis8U1VCU0VDVElPTiBQ
cml2YXRlPgord2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKwor
PFNFQ1RJT04+Cis8RklMRT5XZWJLaXRVc2VyQ29udGVudE1hbmFnZXI8L0ZJTEU+Cis8VElUTEU+
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyPC9USVRMRT4KK1dlYktpdFVzZXJDb250ZW50TWFuYWdl
cgord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldword2Via2l0X3VzZXJfY29udGVudF9t
YW5hZ2VyX2FkZF9zdHlsZV9zaGVldAord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92
ZV9hbGxfc3R5bGVfc2hlZXRzCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV0VCS0lUX0lTX1VT
RVJfQ09OVEVOVF9NQU5BR0VSCitXRUJLSVRfSVNfVVNFUl9DT05URU5UX01BTkFHRVJfQ0xBU1MK
K1dFQktJVF9UWVBFX1VTRVJfQ09OVEVOVF9NQU5BR0VSCitXRUJLSVRfVVNFUl9DT05URU5UX01B
TkFHRVIKK1dFQktJVF9VU0VSX0NPTlRFTlRfTUFOQUdFUl9DTEFTUworV0VCS0lUX1VTRVJfQ09O
VEVOVF9NQU5BR0VSX0dFVF9DTEFTUworV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3MKKwor
PFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUKK3dl
YmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElP
Tj4KIDxGSUxFPldlYktpdFdlYlZpZXc8L0ZJTEU+CiA8VElUTEU+V2ViS2l0V2ViVmlldzwvVElU
TEU+CiBXZWJLaXRXZWJWaWV3CkBAIC05Niw4ICsxMzUsMTAgQEAgd2Via2l0X3dlYl92aWV3X25l
dwogd2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19uZXdf
d2l0aF9yZWxhdGVkX3ZpZXcKIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9ncm91cAord2Via2l0
X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyCiB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAKK3dlYmtpdF93ZWJfdmlld19n
ZXRfdXNlcl9jb250ZW50X21hbmFnZXIKIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaQogd2Via2l0
X3dlYl92aWV3X2xvYWRfaHRtbAogd2Via2l0X3dlYl92aWV3X2xvYWRfYWx0ZXJuYXRlX2h0bWwK
QEAgLTEwMjUsOCArMTA2Niw2IEBAIHdlYmtpdF93ZWJfdmlld19ncm91cF9uZXcKIHdlYmtpdF93
ZWJfdmlld19ncm91cF9nZXRfbmFtZQogd2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF9zZXR0aW5n
cwogd2Via2l0X3dlYl92aWV3X2dyb3VwX3NldF9zZXR0aW5ncwotd2Via2l0X3dlYl92aWV3X2dy
b3VwX2FkZF91c2VyX3N0eWxlX3NoZWV0Ci13ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2Fs
bF91c2VyX3N0eWxlX3NoZWV0cwogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFdlYlZp
ZXdHcm91cENsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgK
aW5kZXggNDY0OTBhMmUwMTRkNjNmYWFiMGEzMDcyYzkwMzg0OTM0NDhhMjMxMi4uNTJjY2FkMzA2
MmJlOGM1ODNlMDViZWU2YWM3OTVlOTA2ODRmNTE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtNjEsNiArNjEsOCBAQAogI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVzcG9u
c2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaD4KKyNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdFVzZXJDb250ZW50Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFZlcnNpb24u
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdFdlYkluc3BlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5jcHAKaW5kZXggZGU2OWE4MGI3OTYzOWFmNDFiMzU5N2NmY2VlMWE5MGM0YjdkOGY5
ZS4uNzA2ZWRlMmVhNzc2YmM4YzFhZjU2ZTAzMmY4YmNmNGE0NDdkZGM1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC02Niw3ICs2Niw4IEBAIHZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5
JiB3ZWJQcm9jZXNzUHJveHkpCiAgICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiAKICAgICB3ZWJQcm9jZXNzUHJveHkuY29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVz
ZXJTY3JpcHRzKG1fdXNlclNjcmlwdHMpLCBtX2lkZW50aWZpZXIpOwotICAgIAorICAgIHdlYlBy
b2Nlc3NQcm94eS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKG1fdXNlclN0eWxlU2hlZXRzKSwgbV9pZGVudGlm
aWVyKTsKKwogICAgIFZlY3RvcjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4gbWVzc2Fn
ZUhhbmRsZXJIYW5kbGVzOwogICAgIGZvciAoYXV0byYgaGFuZGxlciA6IG1fc2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzLnZhbHVlcygpKQogICAgICAgICBtZXNzYWdlSGFuZGxlckhhbmRsZXMuYXBwZW5k
KGhhbmRsZXItPmhhbmRsZSgpKTsKQEAgLTk3LDYgKzk4LDIyIEBAIHZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkKICAgICAgICAgcHJvY2Vz
c0FuZENvdW50LmtleS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKCksIG1faWRlbnRpZmllcik7CiB9CiAK
K3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTdHlsZVNoZWV0KFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0KQoreworICAgIG1fdXNlclN0eWxl
U2hlZXRzLmFwcGVuZChXVEY6Om1vdmUodXNlclN0eWxlU2hlZXQpKTsKKworICAgIGZvciAoYXV0
byYgcHJvY2Vzc0FuZENvdW50IDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3NBbmRDb3Vu
dC5rZXktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpBZGRVc2VyU3R5bGVTaGVldHMoeyBtX3VzZXJTdHlsZVNoZWV0cy5sYXN0KCkgfSksIG1f
aWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCit7CisgICAgbV91c2VyU3R5bGVTaGVldHMuY2xlYXIo
KTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc0FuZENvdW50IDogbV9wcm9jZXNzZXMpCisgICAg
ICAgIHByb2Nlc3NBbmRDb3VudC5rZXktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKSwgbV9pZGVu
dGlmaWVyKTsKK30KKwogYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKiBoYW5kbGVyKQog
ewogICAgIGZvciAoYXV0byYgZXhpc3RpbmdIYW5kbGVyIDogbV9zY3JpcHRNZXNzYWdlSGFuZGxl
cnMudmFsdWVzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKaW5k
ZXggY2ZmNmYyOWQ0ODY0ZTBhNzY4NDlmZmFmMmVhMDQ0OWQ3NGRiMDg0OS4uN2RjMDU5NWFhMmI3
YzJkZTgyYmZjMDgzMzRhMTczYzZiOTQxZGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVXNlclNjcmlwdDsKK2NsYXNzIFVzZXJTdHlsZVNo
ZWV0OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDYgKzYwLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkVXNlclNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0KTsKICAgICB2b2lkIHJl
bW92ZUFsbFVzZXJTY3JpcHRzKCk7CiAKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KFdlYkNv
cmU6OlVzZXJTdHlsZVNoZWV0KTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygp
OworCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGVyZSB3YXMgYSBuYW1lIGNvbmZsaWN0Lgog
ICAgIGJvb2wgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyKik7CiAgICAgdm9pZCByZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0
cmluZyYpOwpAQCAtNzUsNiArNzksNyBAQCBwcml2YXRlOgogICAgIEhhc2hDb3VudGVkU2V0PFdl
YlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vzc2VzOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlVzZXJT
Y3JpcHQ+IG1fdXNlclNjcmlwdHM7CisgICAgVmVjdG9yPFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0
PiBtX3VzZXJTdHlsZVNoZWV0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXI+PiBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVyczsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5j
cHAKaW5kZXggNTc5YjA5OWY4NGQyMDY4NzE3MzUwZDIyNjRlN2Y5MDg1MTQyYTc0My4uMWVkYTdl
OGVmZTg2ZGNhMTVjODczYjEzMjhmMGExOTZhNjQ5ZWEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJ
bnNwZWN0b3JQYWdlKCkKIHsKICAgICBBU1NFUlQobV9wYWdlKTsKICAgICBBU1NFUlQoIW1faW5z
cGVjdG9yVmlldyk7Ci0gICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJW
aWV3QmFzZUNyZWF0ZSgmcGFnZSgpLT5wcm9jZXNzKCkuY29udGV4dCgpLCBpbnNwZWN0b3JQYWdl
R3JvdXAoKSwgbV9wYWdlKSk7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJr
aXRXZWJWaWV3QmFzZUNyZWF0ZSgmcGFnZSgpLT5wcm9jZXNzKCkuY29udGV4dCgpLCBpbnNwZWN0
b3JQYWdlR3JvdXAoKSwgbnVsbHB0ciwgbV9wYWdlKSk7CiAgICAgZ19vYmplY3RfYWRkX3dlYWtf
cG9pbnRlcihHX09CSkVDVChtX2luc3BlY3RvclZpZXcpLCByZWludGVycHJldF9jYXN0PHZvaWQq
Kj4oJm1faW5zcGVjdG9yVmlldykpOwogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUdldFBh
Z2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV9pbnNwZWN0b3JWaWV3KSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggZDlkYzE1YzU4NDU1YjkwODkyNzU0NmYwNjZk
ODI5NWQxMzUzZjY5Mi4uMjRmMjE0ODE1YTQzY2RiMTEwZWY1MGE0NzA5MjViNWQ0NDViYzlmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JpcHRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTdHlsZVNoZWV0Lmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQpA
QCAtOTIsNiArOTMsMTkgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFs
bFVzZXJTY3JpcHRzKCkKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlVXNlclNj
cmlwdHMobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCit2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVc2Vy
U3R5bGVTaGVldD4mIHVzZXJTdHlsZVNoZWV0cykKK3sKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHVz
ZXJTdHlsZVNoZWV0IDogdXNlclN0eWxlU2hlZXRzKSB7CisgICAgICAgIG1fdXNlckNvbnRlbnRD
b250cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVldChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwKKyAg
ICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+KHVzZXJT
dHlsZVNoZWV0KSwgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CisgICAgfQorfQorCit2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKK3sK
KyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlVXNlclN0eWxlU2hlZXRzKG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpKTsKK30KKwogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExF
UlMpCiBjbGFzcyBXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHkgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHk+LCBwdWJsaWMg
V2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjo6Q2xpZW50IHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IDRjODQ2OTk2NGNmZmQwZjY5YTlj
NjdlYWZhZGZkMDVlZmE1NTY5OTcuLjYzOWMyMGUwMDBhZWQ3OThjMmI3M2NkMWYwNGNmYjZjMmI1
ZDY0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtNTQsNiArNTQsOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgYWRkVXNlclNjcmlwdHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlVzZXJTY3JpcHQ+JiB1c2VyU2NyaXB0cyk7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0
cygpOwogCisgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlVzZXJTdHlsZVNoZWV0PiYgdXNlclN0eWxlU2hlZXRzKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVz
ZXJTdHlsZVNoZWV0cygpOworCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJz
KGNvbnN0IFZlY3RvcjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4mIHNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyk7CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIodWlu
dDY0X3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2Vz
LmluCmluZGV4IGQwY2ZjMWY3NjY3ODFmYzBkNzM3NTE2Y2IyYWI1MmJjOTU2NTM5NzQuLmE5M2Zh
NDdjMDY4NDg3ZjVjYWQ2ZTVhZTJmNWVlMTZlZmJiNTAxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw5IEBAIG1lc3Nh
Z2VzIC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlciB7CiAgICAgQWRkVXNlclNjcmlwdHMoVmVj
dG9yPFdlYkNvcmU6OlVzZXJTY3JpcHQ+IHVzZXJTY3JpcHRzKTsKICAgICBSZW1vdmVBbGxVc2Vy
U2NyaXB0cygpCiAKKyAgICBBZGRVc2VyU3R5bGVTaGVldHMoVmVjdG9yPFdlYkNvcmU6OlVzZXJT
dHlsZVNoZWV0PiB1c2VyU3R5bGVTaGhldHMpOworICAgIFJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0
cygpCisKICAgICBBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKFZlY3RvcjxXZWJLaXQ6Oldl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlPiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpOwogICAg
IFJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM1Mzcy
ZGVkMDhlODJiZTE5NWNlYTIyNTdjNzE4MmNjNzBhMzVjNDcuLmY1ZTA1ZTA5OGZkNDYzYjQxNDI1
YTZjYjUyOTk2YzAxZjM2N2NmZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxNC0wNy0wNyAgQWRyaWFuIFBlcmV6
IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIE1vdmUgdXNl
ciBzdHlsZSBzaGVldCBBUEkgb3V0IG9mIFdlYktpdFdlYlZpZXdHcm91cAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NTUxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyB0ZXN0aW5nIHVzZXIg
c3R5bGUgc2hlZXQgaW5qZWN0aW9uIGZyb20KKyAgICAgICAgVGVzdFdlYktpdFdlYlZpZXdHcm91
cCBhbmQgbW92ZXMgdGhhdCBpbnRvIGEgbmV3CisgICAgICAgIFRlc3RXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIsIGFkYXB0aW5nIHRoZSBleGlzdGluZyB0ZXN0cyB0byB0aGUgbmV3CisgICAgICAg
IEFQSS4gQWxzbywgaXQgY29udGFpbnMgYSBuZXcgdGVzdCBjYXNlIGZvcgorICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIoKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFVzZXJDb250ZW50TWFu
YWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoVXNlckNvbnRlbnRNYW5hZ2VyVGVzdDo6VXNlckNv
bnRlbnRNYW5hZ2VyVGVzdCk6CisgICAgICAgICh0ZXN0V2ViVmlld05ld1dpdGhVc2VyQ29udGVu
dE1hbmFnZXIpOgorICAgICAgICAoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgpOgor
ICAgICAgICAoZmlsbFVSTExpc3RGcm9tUGF0aHMpOgorICAgICAgICAocmVtb3ZlT2xkSW5qZWN0
ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMpOgorICAgICAgICAodGVzdFVzZXJDb250ZW50TWFu
YWdlckluamVjdGVkU3R5bGVTaGVldCk6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAg
ICAgIChiZWZvcmVBbGwpOgorICAgICAgICAoYWZ0ZXJBbGwpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcDoKKyAgICAg
ICAgKGJlZm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisgICAgICAgIChpc1N0eWxlU2hl
ZXRJbmplY3RlZEZvclVSTEF0UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChmaWxsVVJMTGlzdEZy
b21QYXRocyk6IERlbGV0ZWQuCisgICAgICAgIChyZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRz
QW5kUmVzZXRMaXN0cyk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0V2ViVmlld0dyb3VwSW5qZWN0
ZWRTdHlsZVNoZWV0KTogRGVsZXRlZC4KKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNw
cDoKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpXZWJWaWV3VGVzdCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5oOgorCiAyMDE0LTA3LTA4ICBHZXJn
byBCYWxvZ2ggIDxnYmFsb2doLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgQWRkIG9wdGlvbiB0byBzcGVjaWZ5IG91dHB1dCBmaWxlIGxvY2F0aW9uIGluIHN1bnNwaWRl
ci4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFr
ZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9DTWFrZUxp
c3RzLnR4dAppbmRleCBmNjZiNzMwYTg4YjY1MDFmZmI4ZDJmMTRiOWIxYjMxNjE3OGY1OTM1Li4x
NzJiMzhhYTA4NzQ3MmIxMzUxMzFhNjI4NDMxNGEwNGQ5NDlkYjVkIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0NNYWtlTGlzdHMudHh0CkBAIC0xMTIs
NiArMTEyLDcgQEAgQUREX1dLMl9URVNUKFRlc3RXZWJWaWV3RWRpdG9yIFRlc3RXZWJWaWV3RWRp
dG9yLmNwcCkKIEFERF9XSzJfVEVTVChUZXN0V2ViS2l0V2ViVmlld0dyb3VwIFRlc3RXZWJLaXRX
ZWJWaWV3R3JvdXAuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRXZWJDb250ZXh0IFRlc3RX
ZWJLaXRXZWJDb250ZXh0LmNwcCkKIEFERF9XSzJfVEVTVChUZXN0V2ViS2l0V2ViVmlldyBUZXN0
V2ViS2l0V2ViVmlldy5jcHApCitBRERfV0syX1RFU1QoVGVzdFdlYktpdFVzZXJDb250ZW50TWFu
YWdlciBUZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCkKIAogaWYgKEFUU1BJX0ZPVU5E
KQogICAgIEFERF9XSzJfVEVTVChBY2Nlc3NpYmlsaXR5VGVzdFNlcnZlciBBY2Nlc3NpYmlsaXR5
VGVzdFNlcnZlci5jcHApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTA0ZTM2N2JjZTI0MTlhZmQ4ODdmNTY5ZjVkNDFiNjBmZjg0ZDVlOQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5j
bHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgorI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5j
bHVkZSA8Y3N0ZGFyZz4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93
ZWJraXQyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorCitjbGFzcyBVc2Vy
Q29udGVudE1hbmFnZXJUZXN0IDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBN
QUtFX0dMSUJfVEVTVF9GSVhUVVJFKFVzZXJDb250ZW50TWFuYWdlclRlc3QpOworCisgICAgVXNl
ckNvbnRlbnRNYW5hZ2VyVGVzdCgpCisgICAgICAgIDogV2ViVmlld1Rlc3QoV0VCS0lUX1dFQl9W
SUVXKHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCkpKSkKKyAgICB7CisgICAgICAgIC8vIEEgcmVmZXJl
bmNlIGlzIGxlYWtlZCB3aGVuIHBhc3NpbmcgdGhlIHJlc3VsdCBvZiB3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfbmV3KCkKKyAgICAgICAgLy8gZGlyZWN0bHkgdG8gd2Via2l0X3dlYl92aWV3
X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKCkgYWJvdmUuIEFkb3B0aW5nIHRoZQorICAg
ICAgICAvLyByZWZlcmVuY2UgaGVyZSBhdm9pZHMgdGhlIGxlYWsuCisgICAgICAgIG1fdXNlckNv
bnRlbnRNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50
X21hbmFnZXIobV93ZWJWaWV3KSk7CisgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1QobV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCkpKTsKKyAgICB9
CisKKyAgICBHUmVmUHRyPFdlYktpdFVzZXJDb250ZW50TWFuYWdlcj4gbV91c2VyQ29udGVudE1h
bmFnZXI7Cit9OworCitzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKKworLy8gVGhl
c2UgYXJlIGFsbCBoZXJlIHNvIHRoYXQgdGhleSBjYW4gYmUgY2hhbmdlZCBlYXNpbHksIGlmIG5l
Y2Vzc2FyeS4KK3N0YXRpYyBjb25zdCBjaGFyKiBrU3R5bGVTaGVldEhUTUwgPSAiPGh0bWw+PGRp
diBpZD1cInN0eWxlZEVsZW1lbnRcIj5Td2VldCBzdHlsZXohPC9kaXY+PC9odG1sPiI7CitzdGF0
aWMgY29uc3QgY2hhcioga0luamVjdGVkU3R5bGVTaGVldCA9ICIjc3R5bGVkRWxlbWVudCB7IGZv
bnQtd2VpZ2h0OiBib2xkOyB9IjsKK3N0YXRpYyBjb25zdCBjaGFyKiBrU3R5bGVTaGVldFRlc3RT
Y3JpcHQgPSAiZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3R5bGVk
RWxlbWVudCcpKVsnZm9udC13ZWlnaHQnXSI7CitzdGF0aWMgY29uc3QgY2hhcioga1N0eWxlU2hl
ZXRUZXN0U2NyaXB0UmVzdWx0ID0gImJvbGQiOworCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05l
d1dpdGhVc2VyQ29udGVudE1hbmFnZXIoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAg
ICBHUmVmUHRyPFdlYktpdFVzZXJDb250ZW50TWFuYWdlcj4gdXNlckNvbnRlbnRNYW5hZ2VyMSA9
IGFkb3B0R1JlZih3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCkpOworICAgIHRlc3Qt
PmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QodXNlckNvbnRl
bnRNYW5hZ2VyMS5nZXQoKSkpOworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzEg
PSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9t
YW5hZ2VyKHVzZXJDb250ZW50TWFuYWdlcjEuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydCh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcxLmdldCgpKSA9PSB1c2Vy
Q29udGVudE1hbmFnZXIxLmdldCgpKTsKKworICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2Vi
VmlldzIgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBnX2Fz
c2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcyLmdl
dCgpKSAhPSB1c2VyQ29udGVudE1hbmFnZXIxLmdldCgpKTsKK30KKworc3RhdGljIGJvb2wgaXNT
dHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgoV2ViVmlld1Rlc3QqIHRlc3QsIGNvbnN0IGNo
YXIqIHBhdGgpCit7CisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKHBh
dGgpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCog
amF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hl
ZChrU3R5bGVTaGVldFRlc3RTY3JpcHQsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnQo
amF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKworICAgIEdV
bmlxdWVQdHI8Y2hhcj4gcmVzdWx0U3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0
VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICByZXR1cm4gIWdfc3RyY21wMChyZXN1
bHRTdHJpbmcuZ2V0KCksIGtTdHlsZVNoZWV0VGVzdFNjcmlwdFJlc3VsdCk7Cit9CisKK3N0YXRp
YyB2b2lkIGZpbGxVUkxMaXN0RnJvbVBhdGhzKGNoYXIqKiBsaXN0LCBjb25zdCBjaGFyKiBwYXRo
LCAuLi4pCit7CisgICAgdmFfbGlzdCBhcmd1bWVudExpc3Q7CisgICAgdmFfc3RhcnQoYXJndW1l
bnRMaXN0LCBwYXRoKTsKKworICAgIGludCBpID0gMDsKKyAgICB3aGlsZSAocGF0aCkgeworICAg
ICAgICAvLyBGSVhNRTogV2UgbXVzdCB1c2UgYSB3aWxkY2FyZCBmb3IgdGhlIGhvc3QgaGVyZSB1
bnRpbCBodHRwOi8vd2tidWcuY29tLzExMjQ3NiBpcyBmaXhlZC4KKyAgICAgICAgLy8gVW50aWwg
dGhhdCB0aW1lIHBhdHRlcm5zIHdpdGggcG9ydCBudW1iZXJzIGluIHRoZW0gd2lsbCBub3QgcHJv
cGVybHkgbWF0Y2ggVVJMcyB3aXRoIHBvcnQgbnVtYmVycy4KKyAgICAgICAgbGlzdFtpKytdID0g
Z19zdHJkdXBfcHJpbnRmKCJodHRwOi8vKi8lcyoiLCBwYXRoKTsKKyAgICAgICAgcGF0aCA9IHZh
X2FyZyhhcmd1bWVudExpc3QsIGNvbnN0IGNoYXIqKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk
IHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKFdlYktpdFVzZXJDb250
ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBjaGFyKiogd2hpdGVsaXN0LCBjaGFyKiog
YmxhY2tsaXN0KQoreworICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxs
X3N0eWxlX3NoZWV0cyh1c2VyQ29udGVudE1hbmFnZXIpOworCisgICAgd2hpbGUgKCp3aGl0ZWxp
c3QpIHsKKyAgICAgICAgZ19mcmVlKCp3aGl0ZWxpc3QpOworICAgICAgICAqd2hpdGVsaXN0ID0g
MDsKKyAgICAgICAgd2hpdGVsaXN0Kys7CisgICAgfQorCisgICAgd2hpbGUgKCpibGFja2xpc3Qp
IHsKKyAgICAgICAgZ19mcmVlKCpibGFja2xpc3QpOworICAgICAgICAqYmxhY2tsaXN0ID0gMDsK
KyAgICAgICAgYmxhY2tsaXN0Kys7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB0ZXN0VXNlckNv
bnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNoZWV0KFVzZXJDb250ZW50TWFuYWdlclRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgY2hhciogd2hpdGVsaXN0WzNdID0geyAwLCAwLCAw
IH07CisgICAgY2hhciogYmxhY2tsaXN0WzNdID0geyAwLCAwLCAwIH07CisKKyAgICByZW1vdmVP
bGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFu
YWdlci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOworCisgICAgLy8gV2l0aG91dCBhIHdo
aXRlbGlzdCBvciBhIGJsYWNrbGlzdCBhbGwgVVJMcyBzaG91bGQgaGF2ZSB0aGUgaW5qZWN0ZWQg
c3R5bGUgc2hlZXQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJhbmRvbVBhdGggPSAic29tZXJh
bmRvbXBhdGgiOworICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0
aCh0ZXN0LCByYW5kb21QYXRoKSk7CisgICAgV2ViS2l0VXNlclN0eWxlU2hlZXQqIHN0eWxlU2hl
ZXQgPSB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXcoa0luamVjdGVkU3R5bGVTaGVldCwgV0VC
S0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfQUxMX0ZSQU1FUywgV0VCS0lUX1VTRVJfU1RZTEVfTEVW
RUxfVVNFUiwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5h
Z2VyX2FkZF9zdHlsZV9zaGVldCh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgc3R5
bGVTaGVldCk7CisgICAgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfdW5yZWYoc3R5bGVTaGVldCk7
CisgICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFu
ZG9tUGF0aCkpOworCisgICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlz
dHModGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHdoaXRlbGlzdCwgYmxhY2tsaXN0
KTsKKworICAgIGZpbGxVUkxMaXN0RnJvbVBhdGhzKGJsYWNrbGlzdCwgcmFuZG9tUGF0aCwgMCk7
CisgICAgc3R5bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5qZWN0ZWRT
dHlsZVNoZWV0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRf
VVNFUl9TVFlMRV9MRVZFTF9VU0VSLCBudWxscHRyLCBibGFja2xpc3QpOworICAgIHdlYmtpdF91
c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQodGVzdC0+bV91c2VyQ29udGVudE1h
bmFnZXIuZ2V0KCksIHN0eWxlU2hlZXQpOworICAgIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3Vu
cmVmKHN0eWxlU2hlZXQpOworICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVS
TEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7CisgICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5q
ZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRvbXBhdGgiKSk7CisKKyAgICBy
ZW1vdmVPbGRJbmplY3RlZFN0eWxlU2hlZXRzQW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250
ZW50TWFuYWdlci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOworCisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGluVGhlV2hpdGVMaXN0ID0gImludGhld2hpdGVsaXN0IjsKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogbm90SW5XaGl0ZWxpc3QgPSAibm90aW50aGV3aGl0ZWxpc3QiOworICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCA9ICJpbnRoZXdoaXRl
bGlzdGFuZGJsYWNrbGlzdCI7CisKKyAgICBmaWxsVVJMTGlzdEZyb21QYXRocyh3aGl0ZWxpc3Qs
IGluVGhlV2hpdGVMaXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCwgMCk7CisgICAgZmls
bFVSTExpc3RGcm9tUGF0aHMoYmxhY2tsaXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCwg
MCk7CisgICAgc3R5bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5qZWN0
ZWRTdHlsZVNoZWV0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJL
SVRfVVNFUl9TVFlMRV9MRVZFTF9VU0VSLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CisgICAgd2Vi
a2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldCh0ZXN0LT5tX3VzZXJDb250
ZW50TWFuYWdlci5nZXQoKSwgc3R5bGVTaGVldCk7CisgICAgd2Via2l0X3VzZXJfc3R5bGVfc2hl
ZXRfdW5yZWYoc3R5bGVTaGVldCk7CisgICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRG
b3JVUkxBdFBhdGgodGVzdCwgaW5UaGVXaGl0ZUxpc3QpKTsKKyAgICBnX2Fzc2VydCghaXNTdHls
ZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xp
c3QpKTsKKyAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVz
dCwgbm90SW5XaGl0ZWxpc3QpKTsKKworICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGNsZWFuIHVw
IHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgb3RoZXIgdGVzdHMuCisgICAgcmVtb3ZlT2xkSW5qZWN0
ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHModGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0
KCksIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKK30KKworc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJh
Y2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciog
cGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCit7CisgICAg
c291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOworICAgIHNv
dXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9S
WV9TVEFUSUMsIGtTdHlsZVNoZWV0SFRNTCwgc3RybGVuKGtTdHlsZVNoZWV0SFRNTCkpOworICAg
IHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworfQor
Cit2b2lkIGJlZm9yZUFsbCgpCit7CisgICAga1NlcnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVy
KCk7CisgICAga1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKworICAgIFRlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJuZXctd2l0aC11c2VyLWNvbnRlbnQtbWFuYWdlciIsIHRlc3RXZWJW
aWV3TmV3V2l0aFVzZXJDb250ZW50TWFuYWdlcik7CisgICAgVXNlckNvbnRlbnRNYW5hZ2VyVGVz
dDo6YWRkKCJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIiLCAiaW5qZWN0ZWQtc3R5bGUtc2hlZXQi
LCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNoZWV0KTsKK30KKwordm9pZCBh
ZnRlckFsbCgpCit7CisgICAgZGVsZXRlIGtTZXJ2ZXI7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdH
cm91cC5jcHAKaW5kZXggNDQ4YWJkMmZlNTMyYzZjMTRmZTIzMzlmM2MxNzY3ZjBhOWRhODAzMS4u
Y2NiYTg5ZDQ2MmU0NGEyNTNlZThmYWU0NmRiNmQ2OWVlNDg1NmVjOSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0
V2ViVmlld0dyb3VwLmNwcApAQCAtMjYsMTQgKzI2LDYgQEAKICNpbmNsdWRlIDx3ZWJraXQyL3dl
YmtpdDIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKLXN0YXRpYyBXZWJL
aXRUZXN0U2VydmVyKiBrU2VydmVyOwotCi0vLyBUaGVzZSBhcmUgYWxsIGhlcmUgc28gdGhhdCB0
aGV5IGNhbiBiZSBjaGFuZ2VkIGVhc2lseSwgaWYgbmVjZXNzYXJ5Lgotc3RhdGljIGNvbnN0IGNo
YXIqIGtTdHlsZVNoZWV0SFRNTCA9ICI8aHRtbD48ZGl2IGlkPVwic3R5bGVkRWxlbWVudFwiPlN3
ZWV0IHN0eWxleiE8L2Rpdj48L2h0bWw+IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBrSW5qZWN0ZWRT
dHlsZVNoZWV0ID0gIiNzdHlsZWRFbGVtZW50IHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0iOwotc3Rh
dGljIGNvbnN0IGNoYXIqIGtTdHlsZVNoZWV0VGVzdFNjcmlwdCA9ICJnZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdHlsZWRFbGVtZW50JykpWydmb250LXdlaWdodCdd
IjsKLXN0YXRpYyBjb25zdCBjaGFyKiBrU3R5bGVTaGVldFRlc3RTY3JpcHRSZXN1bHQgPSAiYm9s
ZCI7Ci0KIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3R3JvdXBEZWZhdWx0KFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiB7CiAgICAgLy8gRGVmYXVsdCBncm91cCBpcyBzaGFyZWQgYnkgYWxsIFdl
YlZpZXdzIGJ5IGRlZmF1bHQuCkBAIC05OCwxMDkgKzkwLDE0IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3R3JvdXBTZXR0aW5ncyhUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNz
ZXJ0KHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfc2V0dGluZ3Mod2Via2l0X3dlYl92aWV3X2dl
dF9ncm91cCh3ZWJWaWV3MS5nZXQoKSkpID09IHdlYlZpZXcyU2V0dGluZ3MpOwogfQogCi1zdGF0
aWMgYm9vbCBpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aChXZWJWaWV3VGVzdCogdGVz
dCwgY29uc3QgY2hhciogcGF0aCkKLXsKLSAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVS
SUZvclBhdGgocGF0aCkuZGF0YSgpKTsKLSAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKLQotICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKGtTdHlsZVNoZWV0VGVzdFNjcmlwdCwgJmVycm9yLm91dFB0cigpKTsKLSAg
ICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkp
OwotCi0gICAgR1VuaXF1ZVB0cjxjaGFyPiByZXN1bHRTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFz
Y3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwotICAgIHJldHVybiAhZ19z
dHJjbXAwKHJlc3VsdFN0cmluZy5nZXQoKSwga1N0eWxlU2hlZXRUZXN0U2NyaXB0UmVzdWx0KTsK
LX0KLQotc3RhdGljIHZvaWQgZmlsbFVSTExpc3RGcm9tUGF0aHMoY2hhcioqIGxpc3QsIGNvbnN0
IGNoYXIqIHBhdGgsIC4uLikKLXsKLSAgICB2YV9saXN0IGFyZ3VtZW50TGlzdDsKLSAgICB2YV9z
dGFydChhcmd1bWVudExpc3QsIHBhdGgpOwotCi0gICAgaW50IGkgPSAwOwotICAgIHdoaWxlIChw
YXRoKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBtdXN0IHVzZSBhIHdpbGRjYXJkIGZvciB0aGUg
aG9zdCBoZXJlIHVudGlsIGh0dHA6Ly93a2J1Zy5jb20vMTEyNDc2IGlzIGZpeGVkLgotICAgICAg
ICAvLyBVbnRpbCB0aGF0IHRpbWUgcGF0dGVybnMgd2l0aCBwb3J0IG51bWJlcnMgaW4gdGhlbSB3
aWxsIG5vdCBwcm9wZXJseSBtYXRjaCBVUkxzIHdpdGggcG9ydCBudW1iZXJzLgotICAgICAgICBs
aXN0W2krK10gPSBnX3N0cmR1cF9wcmludGYoImh0dHA6Ly8qLyVzKiIsIHBhdGgpOwotICAgICAg
ICBwYXRoID0gdmFfYXJnKGFyZ3VtZW50TGlzdCwgY29uc3QgY2hhciopOwotICAgIH0KLX0KLQot
c3RhdGljIHZvaWQgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoV2Vi
S2l0V2ViVmlld0dyb3VwKiBncm91cCwgY2hhcioqIHdoaXRlbGlzdCwgY2hhcioqIGJsYWNrbGlz
dCkKLXsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfZ3JvdXBfcmVtb3ZlX2FsbF91c2VyX3N0eWxlX3No
ZWV0cyhncm91cCk7Ci0KLSAgICB3aGlsZSAoKndoaXRlbGlzdCkgewotICAgICAgICBnX2ZyZWUo
KndoaXRlbGlzdCk7Ci0gICAgICAgICp3aGl0ZWxpc3QgPSAwOwotICAgICAgICB3aGl0ZWxpc3Qr
KzsKLSAgICB9Ci0KLSAgICB3aGlsZSAoKmJsYWNrbGlzdCkgewotICAgICAgICBnX2ZyZWUoKmJs
YWNrbGlzdCk7Ci0gICAgICAgICpibGFja2xpc3QgPSAwOwotICAgICAgICBibGFja2xpc3QrKzsK
LSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3R3JvdXBJbmplY3RlZFN0eWxlU2hl
ZXQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCi17Ci0gICAgV2ViS2l0V2ViVmll
d0dyb3VwKiBncm91cCA9IHdlYmtpdF93ZWJfdmlld19nZXRfZ3JvdXAodGVzdC0+bV93ZWJWaWV3
KTsKLSAgICBjaGFyKiB3aGl0ZWxpc3RbM10gPSB7IDAsIDAsIDAgfTsKLSAgICBjaGFyKiBibGFj
a2xpc3RbM10gPSB7IDAsIDAsIDAgfTsKLQotICAgIHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVl
dHNBbmRSZXNldExpc3RzKGdyb3VwLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7Ci0KLSAgICAvLyBX
aXRob3V0IGEgd2hpdGVsaXN0IG9yIGEgYmxhY2tsaXN0IGFsbCBVUkxzIHNob3VsZCBoYXZlIHRo
ZSBpbmplY3RlZCBzdHlsZSBzaGVldC4KLSAgICBzdGF0aWMgY29uc3QgY2hhciogcmFuZG9tUGF0
aCA9ICJzb21lcmFuZG9tcGF0aCI7Ci0gICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVk
Rm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfZ3Jv
dXBfYWRkX3VzZXJfc3R5bGVfc2hlZXQoZ3JvdXAsIGtJbmplY3RlZFN0eWxlU2hlZXQsIDAsIDAs
IDAsIFdFQktJVF9JTkpFQ1RFRF9DT05URU5UX0ZSQU1FU19BTEwpOwotICAgIGdfYXNzZXJ0KGlz
U3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKLQotICAg
IHJlbW92ZU9sZEluamVjdGVkU3R5bGVTaGVldHNBbmRSZXNldExpc3RzKGdyb3VwLCB3aGl0ZWxp
c3QsIGJsYWNrbGlzdCk7Ci0KLSAgICBmaWxsVVJMTGlzdEZyb21QYXRocyhibGFja2xpc3QsIHJh
bmRvbVBhdGgsIDApOwotICAgIHdlYmtpdF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9zdHlsZV9z
aGVldChncm91cCwga0luamVjdGVkU3R5bGVTaGVldCwgMCwgMCwgYmxhY2tsaXN0LCBXRUJLSVRf
SU5KRUNURURfQ09OVEVOVF9GUkFNRVNfQUxMKTsKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0
SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOwotICAgIGdfYXNzZXJ0KGlz
U3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsICJzb21lb3RoZXJyYW5kb21wYXRo
IikpOwotCi0gICAgcmVtb3ZlT2xkSW5qZWN0ZWRTdHlsZVNoZWV0c0FuZFJlc2V0TGlzdHMoZ3Jv
dXAsIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpblRo
ZVdoaXRlTGlzdCA9ICJpbnRoZXdoaXRlbGlzdCI7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIG5v
dEluV2hpdGVsaXN0ID0gIm5vdGludGhld2hpdGVsaXN0IjsKLSAgICBzdGF0aWMgY29uc3QgY2hh
ciogaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xpc3QgPSAiaW50aGV3aGl0ZWxpc3RhbmRibGFja2xp
c3QiOwotCi0gICAgZmlsbFVSTExpc3RGcm9tUGF0aHMod2hpdGVsaXN0LCBpblRoZVdoaXRlTGlz
dCwgaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xpc3QsIDApOwotICAgIGZpbGxVUkxMaXN0RnJvbVBh
dGhzKGJsYWNrbGlzdCwgaW5UaGVXaGl0ZUxpc3RBbmRCbGFja0xpc3QsIDApOwotICAgIHdlYmtp
dF93ZWJfdmlld19ncm91cF9hZGRfdXNlcl9zdHlsZV9zaGVldChncm91cCwga0luamVjdGVkU3R5
bGVTaGVldCwgMCwgd2hpdGVsaXN0LCBibGFja2xpc3QsIFdFQktJVF9JTkpFQ1RFRF9DT05URU5U
X0ZSQU1FU19BTEwpOwotICAgIGdfYXNzZXJ0KGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQ
YXRoKHRlc3QsIGluVGhlV2hpdGVMaXN0KSk7Ci0gICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldElu
amVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0KSk7Ci0g
ICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIG5vdElu
V2hpdGVsaXN0KSk7Ci0KLSAgICAvLyBJdCdzIGltcG9ydGFudCB0byBjbGVhbiB1cCB0aGUgZW52
aXJvbm1lbnQgYmVmb3JlIG90aGVyIHRlc3RzLgotICAgIHJlbW92ZU9sZEluamVjdGVkU3R5bGVT
aGVldHNBbmRSZXNldExpc3RzKGdyb3VwLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7Ci19Ci0KLXN0
YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2Uq
IG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4
dCosIGdwb2ludGVyKQotewotICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNP
VVBfU1RBVFVTX09LKTsKLSAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVz
cG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBrU3R5bGVTaGVldEhUTUwsIHN0cmxlbihr
U3R5bGVTaGVldEhUTUwpKTsKLSAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdl
LT5yZXNwb25zZV9ib2R5KTsKLX0KLQogdm9pZCBiZWZvcmVBbGwoKQogewotICAgIGtTZXJ2ZXIg
PSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwotICAgIGtTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFj
ayk7Ci0KICAgICBUZXN0OjphZGQoIldlYktpdFdlYlZpZXdHcm91cCIsICJkZWZhdWx0LWdyb3Vw
IiwgdGVzdFdlYlZpZXdHcm91cERlZmF1bHQpOwogICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
d0dyb3VwIiwgIm5ldy1ncm91cCIsIHRlc3RXZWJWaWV3R3JvdXBOZXdHcm91cCk7CiAgICAgVGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm5ldy13aXRoLWdyb3VwIiwgdGVzdFdlYlZpZXdOZXdX
aXRoR3JvdXApOwogICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlld0dyb3VwIiwgInNldHRpbmdz
IiwgdGVzdFdlYlZpZXdHcm91cFNldHRpbmdzKTsKLSAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3R3JvdXAiLCAiaW5qZWN0ZWQtc3R5bGUtc2hlZXQiLCB0ZXN0V2ViVmlld0dyb3Vw
SW5qZWN0ZWRTdHlsZVNoZWV0KTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCiB7Ci0gICAgZGVsZXRl
IGtTZXJ2ZXI7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQy
R3RrL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsv
V2ViVmlld1Rlc3QuY3BwCmluZGV4IDExOThiMDhiZTY4M2Q1OTM5MjQ2ZDkwYTUwZTNiMWQ0ZWY3
M2MwMzcuLmViZDAzYjRkNGFhODAyY2FlNjgyOTBlNGRkNjcyMjVkMDRjMzdlNTUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwCkBA
IC0yNSw3ICsyNSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgogCiBX
ZWJWaWV3VGVzdDo6V2ViVmlld1Rlc3QoKQotICAgIDogbV93ZWJWaWV3KFdFQktJVF9XRUJfVklF
VyhnX29iamVjdF9yZWZfc2luayh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpKSkKKyAgICA6IFdlYlZp
ZXdUZXN0KFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpKSB7IH0KKworV2Vi
Vmlld1Rlc3Q6OldlYlZpZXdUZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCisgICAgOiBtX3dl
YlZpZXcoV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpKSkKICAgICAs
IG1fbWFpbkxvb3AoZ19tYWluX2xvb3BfbmV3KDAsIFRSVUUpKQogICAgICwgbV9wYXJlbnRXaW5k
b3coMCkKICAgICAsIG1famF2YXNjcmlwdFJlc3VsdCgwKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5oCmluZGV4IGY0NWUxMjVjOWQ0ZmEyZGNk
NjQzZDYxNDBhYWEzN2RmMTYwYmEzODguLjJiY2Y1NjM1OThhN2VmZjg2YTI4NjEwMTJkMGNmYTg3
NDE5OTdhZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsv
V2ViVmlld1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dl
YlZpZXdUZXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKIGNsYXNzIFdlYlZpZXdUZXN0OiBwdWJsaWMg
VGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShXZWJWaWV3VGVzdCk7
CisgICAgV2ViVmlld1Rlc3QoV2ViS2l0V2ViVmlldyopOwogICAgIFdlYlZpZXdUZXN0KCk7CiAg
ICAgdmlydHVhbCB+V2ViVmlld1Rlc3QoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>