<?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>211557</bug_id>
          
          <creation_ts>2020-05-07 01:56:36 -0700</creation_ts>
          <short_desc>[GTK3] Bring back usage of GtkMenu for context menus</short_desc>
          <delta_ts>2020-07-09 13:57:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211241</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=211294</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrian Perez">aperez</reporter>
          <assigned_to name="Adrian Perez">aperez</assigned_to>
          <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>jmason</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1650014</commentid>
    <comment_count>0</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-05-07 01:56:36 -0700</bug_when>
    <thetext>After r60889 we have been using GtkPopoverMenu on GTK3, which has
brought a number of issues:

 * Bug #211294 - [GTK] REGRESSION(r260889): Right click not selecting menu item
 * Bug #211241 - [GTK4] Disable arrow on context menu popover
 * Context menus in most (not all!) GTK3 applications are still using
   GtkMenuShell, and people feel like WebKitGTK&apos;s are inconsistent.
 * It is not possible anymore to activate a context menu item with
   right button press + move mouse over an item + release button.
 * …and maybe others.

Let&apos;s try and use GtkMenuShell on GTK3, keeping GtkPopoverMenu for GTK4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650426</commentid>
    <comment_count>1</comment_count>
      <attachid>398817</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-05-07 17:23:21 -0700</bug_when>
    <thetext>Created attachment 398817
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650427</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-05-07 17:23:54 -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>1650520</commentid>
    <comment_count>3</comment_count>
      <attachid>398817</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-08 01:08:56 -0700</bug_when>
    <thetext>Comment on attachment 398817
WIP Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651224</commentid>
    <comment_count>4</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-05-11 02:27:49 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #3)
&gt; Comment on attachment 398817 [details]
&gt; WIP Patch
&gt; 
&gt; LGTM

Thanks! I&apos;ll make the needed changes on the API tests so we can
land this. IMO having a few helper functions at the top of the
“WebContextMenuProxyGtk.cpp” does not look too bad :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652364</commentid>
    <comment_count>5</comment_count>
      <attachid>399294</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-05-13 13:35:39 -0700</bug_when>
    <thetext>Created attachment 399294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652542</commentid>
    <comment_count>6</comment_count>
      <attachid>399294</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-14 01:24:01 -0700</bug_when>
    <thetext>Comment on attachment 399294
Patch

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

&gt; Source/WebKit/ChangeLog:8
&gt; +        WIP: Bug #211557

I guess this is no longer WIP.

&gt; Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.cpp:39
&gt; +#include &quot;WebKitWebViewPrivate.h&quot;

Ideally this should only know about WebKitWebViewBase, I&apos;m not sure if this code is ever reached by the C api, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652601</commentid>
    <comment_count>7</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-05-14 06:31:28 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #6)
&gt; Comment on attachment 399294 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=399294&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:8
&gt; &gt; +        WIP: Bug #211557
&gt; 
&gt; I guess this is no longer WIP.

Indeed 😅️

&gt; &gt; Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.cpp:39
&gt; &gt; +#include &quot;WebKitWebViewPrivate.h&quot;
&gt; 
&gt; Ideally this should only know about WebKitWebViewBase, I&apos;m not sure if this
&gt; code is ever reached by the C api, though.

Yes, it&apos;s reached. Do you have any suggestion to avoid letting
WebContextMenuProxyGtk know about WebKitWebView? I&apos;ll also try to
come up with something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652614</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-14 07:07:01 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #7)
&gt; (In reply to Carlos Garcia Campos from comment #6)
&gt; &gt; Comment on attachment 399294 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=399294&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/ChangeLog:8
&gt; &gt; &gt; +        WIP: Bug #211557
&gt; &gt; 
&gt; &gt; I guess this is no longer WIP.
&gt; 
&gt; Indeed 😅️
&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.cpp:39
&gt; &gt; &gt; +#include &quot;WebKitWebViewPrivate.h&quot;
&gt; &gt; 
&gt; &gt; Ideally this should only know about WebKitWebViewBase, I&apos;m not sure if this
&gt; &gt; code is ever reached by the C api, though.
&gt; 
&gt; Yes, it&apos;s reached. Do you have any suggestion to avoid letting
&gt; WebContextMenuProxyGtk know about WebKitWebView? I&apos;ll also try to
&gt; come up with something.

Connect to close/deactive from the API instead like we did before the popover rework.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652628</commentid>
    <comment_count>9</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-05-14 08:17:53 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #8)
&gt; (In reply to Adrian Perez from comment #7)
&gt; &gt; (In reply to Carlos Garcia Campos from comment #6)
&gt; &gt; &gt; Comment on attachment 399294 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=399294&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/ChangeLog:8
&gt; &gt; &gt; &gt; +        WIP: Bug #211557
&gt; &gt; &gt; 
&gt; &gt; &gt; I guess this is no longer WIP.
&gt; &gt; 
&gt; &gt; Indeed 😅️
&gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.cpp:39
&gt; &gt; &gt; &gt; +#include &quot;WebKitWebViewPrivate.h&quot;
&gt; &gt; &gt; 
&gt; &gt; &gt; Ideally this should only know about WebKitWebViewBase, I&apos;m not sure if this
&gt; &gt; &gt; code is ever reached by the C api, though.
&gt; &gt; 
&gt; &gt; Yes, it&apos;s reached. Do you have any suggestion to avoid letting
&gt; &gt; WebContextMenuProxyGtk know about WebKitWebView? I&apos;ll also try to
&gt; &gt; come up with something.
&gt; 
&gt; Connect to close/deactive from the API instead like we did before the
&gt; popover rework.

That&apos;s precisely what I was trying to avoid, as it&apos;s ugly. How about adding
a “WebContextMenuProxyGtk::connectDismissed(WTF::Function&amp;&amp;)” method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652631</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-14 08:25:26 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #9)
&gt; (In reply to Carlos Garcia Campos from comment #8)
&gt; &gt; (In reply to Adrian Perez from comment #7)
&gt; &gt; &gt; (In reply to Carlos Garcia Campos from comment #6)
&gt; &gt; &gt; &gt; Comment on attachment 399294 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=399294&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebKit/ChangeLog:8
&gt; &gt; &gt; &gt; &gt; +        WIP: Bug #211557
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I guess this is no longer WIP.
&gt; &gt; &gt; 
&gt; &gt; &gt; Indeed 😅️
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.cpp:39
&gt; &gt; &gt; &gt; &gt; +#include &quot;WebKitWebViewPrivate.h&quot;
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Ideally this should only know about WebKitWebViewBase, I&apos;m not sure if this
&gt; &gt; &gt; &gt; code is ever reached by the C api, though.
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes, it&apos;s reached. Do you have any suggestion to avoid letting
&gt; &gt; &gt; WebContextMenuProxyGtk know about WebKitWebView? I&apos;ll also try to
&gt; &gt; &gt; come up with something.
&gt; &gt; 
&gt; &gt; Connect to close/deactive from the API instead like we did before the
&gt; &gt; popover rework.
&gt; 
&gt; That&apos;s precisely what I was trying to avoid, as it&apos;s ugly. How about adding
&gt; a “WebContextMenuProxyGtk::connectDismissed(WTF::Function&amp;&amp;)” method?

I don&apos;t see what&apos;s ugly there, I think it&apos;s the easiest solution. If you mean it&apos;s ugly because of the ifdefs, add a helper to connect to the signal and move the ifdef to the helper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652644</commentid>
    <comment_count>11</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-05-14 08:40:04 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #10)
&gt; (In reply to Adrian Perez from comment #9)
&gt; &gt; (In reply to Carlos Garcia Campos from comment #8)
&gt; &gt; &gt; (In reply to Adrian Perez from comment #7)
&gt; &gt; &gt; &gt; (In reply to Carlos Garcia Campos from comment #6)
&gt; &gt; &gt; &gt; &gt; Comment on attachment 399294 [details]
&gt; &gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=399294&amp;action=review
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Source/WebKit/ChangeLog:8
&gt; &gt; &gt; &gt; &gt; &gt; +        WIP: Bug #211557
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; I guess this is no longer WIP.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Indeed 😅️
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.cpp:39
&gt; &gt; &gt; &gt; &gt; &gt; +#include &quot;WebKitWebViewPrivate.h&quot;
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Ideally this should only know about WebKitWebViewBase, I&apos;m not sure if this
&gt; &gt; &gt; &gt; &gt; code is ever reached by the C api, though.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Yes, it&apos;s reached. Do you have any suggestion to avoid letting
&gt; &gt; &gt; &gt; WebContextMenuProxyGtk know about WebKitWebView? I&apos;ll also try to
&gt; &gt; &gt; &gt; come up with something.
&gt; &gt; &gt; 
&gt; &gt; &gt; Connect to close/deactive from the API instead like we did before the
&gt; &gt; &gt; popover rework.
&gt; &gt; 
&gt; &gt; That&apos;s precisely what I was trying to avoid, as it&apos;s ugly. How about adding
&gt; &gt; a “WebContextMenuProxyGtk::connectDismissed(WTF::Function&amp;&amp;)” method?
&gt; 
&gt; I don&apos;t see what&apos;s ugly there, I think it&apos;s the easiest solution. If you
&gt; mean it&apos;s ugly because of the ifdefs, add a helper to connect to the signal
&gt; and move the ifdef to the helper.

It&apos;s partly the ifdefs, but having a WebContextMenuProxyGtk::gtkWidget()
accessor is something I don&apos;t like either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652665</commentid>
    <comment_count>12</comment_count>
      <attachid>399367</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-05-14 09:20:47 -0700</bug_when>
    <thetext>Created attachment 399367
Patch v2


This moves back connecting to the context menu widget signals to
WebKitWebView.cpp and WebKitWebViewBase.cpp, and uses a static
constant defined in WebContextMenuProxyGtk.cpp to avoid needing
more #ifdefs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652947</commentid>
    <comment_count>13</comment_count>
      <attachid>399367</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-14 22:23:49 -0700</bug_when>
    <thetext>Comment on attachment 399367
Patch v2

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:2616
&gt; +        g_signal_emit(webView, signals[CONTEXT_MENU_DISMISSED], 0, NULL);

NULL -&gt; nullptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652970</commentid>
    <comment_count>14</comment_count>
      <attachid>399461</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-05-15 00:47:18 -0700</bug_when>
    <thetext>Created attachment 399461
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652980</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-15 01:27:27 -0700</bug_when>
    <thetext>Committed r261735: &lt;https://trac.webkit.org/changeset/261735&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399461.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653100</commentid>
    <comment_count>16</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-05-15 10:26:47 -0700</bug_when>
    <thetext>Looks great, thanks gents!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670263</commentid>
    <comment_count>17</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-07-09 13:57:22 -0700</bug_when>
    <thetext>*** Bug 211294 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398817</attachid>
            <date>2020-05-07 17:23:21 -0700</date>
            <delta_ts>2020-05-13 13:34:52 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-211557-20200508032320.patch</filename>
            <type>text/plain</type>
            <size>10124</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0d0a1ZlcnNpb25pbmcuaAppbmRleCAwYjhiNmE1Zjk4NzI5MGYyODcxODViY2Y3YzYwNmE5NThm
MjExYTM5Li5iZTU5NmUxOTQxMTMxNzc2YjQzMzJmOWY1YzE3YzYwMGUxZGM3NjNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmgKQEAgLTE1MiwyNiArMTUy
LDQgQEAgZ2RrX2V2ZW50X2dldF9rZXljb2RlKGNvbnN0IEdka0V2ZW50KiBldmVudCwgZ3VpbnQx
Nioga2V5Y29kZSkKICAgICByZXR1cm4gVFJVRTsKIH0KIAotc3RhdGljIGlubGluZSBHdGtXaWRn
ZXQqIGd0a19wb3BvdmVyX21lbnVfbmV3KCkKLXsKLSAgICByZXR1cm4gZ3RrX3BvcG92ZXJfbWVu
dV9uZXdfZnJvbV9tb2RlbChudWxscHRyKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGd0a19w
b3BvdmVyX2JpbmRfbW9kZWwoR3RrUG9wb3ZlciogcG9wb3ZlciwgR01lbnVNb2RlbCogbW9kZWws
IGNvbnN0IGNoYXIqKQotewotICAgIEFTU0VSVChHVEtfSVNfUE9QT1ZFUl9NRU5VKHBvcG92ZXIp
KTsKLSAgICBndGtfcG9wb3Zlcl9tZW51X3NldF9tZW51X21vZGVsKEdUS19QT1BPVkVSX01FTlUo
cG9wb3ZlciksIG1vZGVsKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGd0a19wb3BvdmVyX3Nl
dF9yZWxhdGl2ZV90byhHdGtQb3BvdmVyKiBwb3BvdmVyLCBHdGtXaWRnZXQqIHBhcmVudCkKLXsK
LSAgICBndGtfd2lkZ2V0X3NldF9wYXJlbnQoR1RLX1dJREdFVChwb3BvdmVyKSwgcGFyZW50KTsK
LX0KLQotI2Vsc2UKLQotc3RhdGljIGlubGluZSB2b2lkIGd0a19wb3BvdmVyX3NldF9oYXNfYXJy
b3coR3RrUG9wb3ZlciosIGdib29sZWFuKQotewotfQotCiAjZW5kaWYgLy8gVVNFKEdUSzQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3Bw
CmluZGV4IDhjNTRiNDIzZmY5MjY2YjgzMDczODVkZDEzYzNmNDQ5MjRmYzJlNDUuLjQ0Yzk5NzM4
Y2E1ZWNjOWI1NDdmMTAyMzFlN2RiNTcwNWFjZDRiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yNjA1LDcgKzI2MDUs
MTEgQEAgdm9pZCB3ZWJraXRXZWJWaWV3UG9wdWxhdGVDb250ZXh0TWVudShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBWZWN0b3I8V2ViQ28KICAgICB3ZWJraXRDb250ZXh0TWVudVBvcHVs
YXRlKGNvbnRleHRNZW51LmdldCgpLCBjb250ZXh0TWVudUl0ZW1zKTsKICAgICBjb250ZXh0TWVu
dVByb3h5LT5wb3B1bGF0ZShjb250ZXh0TWVudUl0ZW1zKTsKIAorI2lmIFVTRShHVEs0KQogICAg
IGdfc2lnbmFsX2Nvbm5lY3QoY29udGV4dE1lbnVQcm94eS0+Z3RrV2lkZ2V0KCksICJjbG9zZWQi
LCBHX0NBTExCQUNLKGNvbnRleHRNZW51RGlzbWlzc2VkKSwgd2ViVmlldyk7CisjZWxzZQorICAg
IGdfc2lnbmFsX2Nvbm5lY3QoY29udGV4dE1lbnVQcm94eS0+Z3RrV2lkZ2V0KCksICJkZWFjdGl2
YXRlIiwgR19DQUxMQkFDSyhjb250ZXh0TWVudURpc21pc3NlZCksIHdlYlZpZXcpOworI2VuZGlm
CiAKICAgICAvLyBDbGVhciB0aGUgbWVudSB0byBtYWtlIHN1cmUgaXQncyB1c2VsZXNzIGFmdGVy
IHNpZ25hbCBlbWlzc2lvbi4KICAgICB3ZWJraXRfY29udGV4dF9tZW51X3JlbW92ZV9hbGwoY29u
dGV4dE1lbnUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCA0YWE2OWZiYzlmMjY0ZWY1YjAyOGExYTlj
MzgwMWMyZmU3MzQxMWJiLi41ZjhkNjVhNTZlNzkyZDdiNjBiOTAyZDBhZGQ3YmMzY2U1ZTk5YTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcApAQCAtMTkxMiw3ICsxOTEyLDExIEBAIHN0YXRpYyB2b2lkIGFjdGl2ZUNv
bnRleHRNZW51Q2xvc2VkKEd0a1dpZGdldCogd2lkZ2V0LCBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
VmllCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWN0aXZlQ29udGV4dE1lbnVQcm94eShXZWJL
aXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFdlYkNvbnRleHRNZW51UHJveHlHdGsq
IGNvbnRleHRNZW51UHJveHkpCiB7CiAgICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2
ZUNvbnRleHRNZW51UHJveHkgPSBjb250ZXh0TWVudVByb3h5OworI2lmIFVTRShHVEs0KQogICAg
IGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KGNvbnRleHRNZW51UHJveHktPmd0a1dpZGdldCgpLCAi
Y2xvc2VkIiwgR19DQUxMQkFDSyhhY3RpdmVDb250ZXh0TWVudUNsb3NlZCksIHdlYmtpdFdlYlZp
ZXdCYXNlLCBzdGF0aWNfY2FzdDxHQ29ubmVjdEZsYWdzPigwKSk7CisjZWxzZQorICAgIGdfc2ln
bmFsX2Nvbm5lY3Rfb2JqZWN0KGNvbnRleHRNZW51UHJveHktPmd0a1dpZGdldCgpLCAiZGVhY3Rp
dmF0ZSIsIEdfQ0FMTEJBQ0soYWN0aXZlQ29udGV4dE1lbnVDbG9zZWQpLCB3ZWJraXRXZWJWaWV3
QmFzZSwgc3RhdGljX2Nhc3Q8R0Nvbm5lY3RGbGFncz4oMCkpOworI2VuZGlmCiB9CiAKIFdlYkNv
bnRleHRNZW51UHJveHlHdGsqIHdlYmtpdFdlYlZpZXdCYXNlR2V0QWN0aXZlQ29udGV4dE1lbnVQ
cm94eShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKaW5k
ZXggOTlkNWU5MjJkZDI1NDZjNGViN2NhOGM0MzBiYWYxNjYzOGMxZWNmMi4uYTliOWRjNTAwYjI4
NzY1OTU1YzA1OTdmYTY1NmFhMmU1OTU0OWI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcApAQCAtNDcsNiArNDcs
ODAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGdDb250ZXh0TWVudUl0ZW1Hcm91cCA9ICJ3ZWJraXRD
b250ZXh0TWVudSI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCisjaWYgVVNFKEdUSzQpCitzdGF0aWMgR3RrV2lkZ2V0KiBjcmVhdGVNZW51V2lkZ2V0KEd0
a1dpZGdldCogd2ViVmlldykKK3sKKyAgICBhdXRvKiB3aWRnZXQgPSBndGtfcG9wb3Zlcl9tZW51
X25ld19mcm9tX21vZGVsKG51bGxwdHIpOworICAgIGd0a19wb3BvdmVyX3NldF9oYXNfYXJyb3co
R1RLX1BPUE9WRVIod2lkZ2V0KSwgRkFMU0UpOworICAgIGd0a19wb3BvdmVyX3NldF9wb3NpdGlv
bihHVEtfUE9QT1ZFUih3aWRnZXQpLCBHVEtfUE9TX0JPVFRPTSk7CisgICAgZ3RrX3dpZGdldF9z
ZXRfcGFyZW50KHdpZGdldCwgd2ViVmlldyk7CisgICAgcmV0dXJuIHdpZGdldDsKK30KKworc3Rh
dGljIGlubGluZSB2b2lkIHBvcHVwTWVudVdpZGdldChHdGtXaWRnZXQqIHdpZGdldCwgY29uc3Qg
R2RrRXZlbnQqLCBjb25zdCBHZGtSZWN0YW5nbGUmIHRhcmdldCkKK3sKKyAgICBndGtfcG9wb3Zl
cl9zZXRfcG9pbnRpbmdfdG8oR1RLX1BPUE9WRVIod2lkZ2V0KSwgJnRhcmdldCk7CisgICAgZ3Rr
X3BvcG92ZXJfcG9wdXAoR1RLX1BPUE9WRVIod2lkZ2V0KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
dm9pZCBwb3Bkb3duTWVudVdpZGdldChHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBndGtfcG9w
b3Zlcl9wb3Bkb3duKEdUS19QT1BPVkVSKHdpZGdldCkpOworfQorCitzdGF0aWMgaW5saW5lIGJv
b2wgbWVudVdpZGdldEhhc0l0ZW1zKEd0a1dpZGdldCogd2lkZ2V0KQoreworICAgIHJldHVybiBn
X21lbnVfbW9kZWxfZ2V0X25faXRlbXMoZ3RrX3BvcG92ZXJfbWVudV9nZXRfbWVudV9tb2RlbChH
VEtfUE9QT1ZFUl9NRU5VKHdpZGdldCkpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGJpbmRN
b2RlbFRvTWVudVdpZGdldChHdGtXaWRnZXQqIHdpZGdldCwgR01lbnVNb2RlbCogbW9kZWwpCit7
CisgICAgZ3RrX3BvcG92ZXJfbWVudV9zZXRfbWVudV9tb2RlbChHVEtfUE9QT1ZFUl9NRU5VKHdp
ZGdldCksIG1vZGVsKTsKK30KKyNlbHNlCitzdGF0aWMgR3RrV2lkZ2V0KiBjcmVhdGVNZW51V2lk
Z2V0KEd0a1dpZGdldCogd2ViVmlldykKK3sKKyAgICBhdXRvKiB3aWRnZXQgPSBndGtfbWVudV9u
ZXcoKTsKKyAgICBndGtfbWVudV9hdHRhY2hfdG9fd2lkZ2V0KEdUS19NRU5VKHdpZGdldCksIHdl
YlZpZXcsIG51bGxwdHIpOworICAgIHJldHVybiB3aWRnZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHBv
cHVwTWVudVdpZGdldChHdGtXaWRnZXQqIHdpZGdldCwgY29uc3QgR2RrRXZlbnQqIHRyaWdnZXJF
dmVudCwgY29uc3QgR2RrUmVjdGFuZ2xlJiB0YXJnZXQpCit7CisgICAgR1VuaXF1ZVB0cjxHZGtF
dmVudD4ga2V5RXZlbnQ7CisgICAgYXV0byogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93
KGd0a19tZW51X2dldF9hdHRhY2hfd2lkZ2V0KEdUS19NRU5VKHdpZGdldCkpKTsKKyAgICBpZiAo
IXRyaWdnZXJFdmVudCkgeworICAgICAgICAvLyBXaGVuIHRoZSBjb250ZXh0IG1lbnUgaXMgcmVx
dWVzdGVkIHVzaW5nIHRoZSBrZXlib2FyZCwgdGhlcmUgaXMgbm8KKyAgICAgICAgLy8gdHJpZ2dl
ckV2ZW50OiB1c2UgYSBmYWtlIGV2ZW50IGZvciB0aGUg4oCcTWVudeKAnSBrZXkgYmVpbmcgcmVs
ZWFzZWQuCisgICAgICAgIGtleUV2ZW50LnJlc2V0KGdka19ldmVudF9uZXcoR0RLX0tFWV9SRUxF
QVNFKSk7CisgICAgICAgIGdka19ldmVudF9zZXRfZGV2aWNlKGtleUV2ZW50LmdldCgpLCBnZGtf
c2VhdF9nZXRfa2V5Ym9hcmQoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHRfc2VhdChnZGtfd2luZG93
X2dldF9kaXNwbGF5KHdpbmRvdykpKSk7CisgICAgICAgIGF1dG8qIGV2ZW50ID0gcmVpbnRlcnBy
ZXRfY2FzdDxHZGtFdmVudEtleSo+KGtleUV2ZW50LmdldCgpKTsKKyAgICAgICAgZXZlbnQtPndp
bmRvdyA9IHdpbmRvdzsKKyAgICAgICAgZXZlbnQtPnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOwor
ICAgICAgICBldmVudC0+a2V5dmFsID0gR0RLX0tFWV9NZW51OworICAgICAgICB0cmlnZ2VyRXZl
bnQgPSBrZXlFdmVudC5nZXQoKTsKKyAgICB9OworICAgIGd0a19tZW51X3BvcHVwX2F0X3JlY3Qo
R1RLX01FTlUod2lkZ2V0KSwgd2luZG93LCAmdGFyZ2V0LCBHREtfR1JBVklUWV9TT1VUSF9XRVNU
LCBHREtfR1JBVklUWV9OT1JUSF9XRVNULCB0cmlnZ2VyRXZlbnQpOworfQorCitzdGF0aWMgaW5s
aW5lIHZvaWQgcG9wZG93bk1lbnVXaWRnZXQoR3RrV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgZ3Rr
X21lbnVfcG9wZG93bihHVEtfTUVOVSh3aWRnZXQpKTsKK30KKworc3RhdGljIGlubGluZSBib29s
IG1lbnVXaWRnZXRIYXNJdGVtcyhHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICB1bnNpZ25lZCBj
aGlsZENvdW50ID0gMDsKKyAgICBndGtfY29udGFpbmVyX2ZvcmVhY2goR1RLX0NPTlRBSU5FUih3
aWRnZXQpLCBbXShHdGtXaWRnZXQqLCBncG9pbnRlciBkYXRhKSB7ICgqc3RhdGljX2Nhc3Q8dW5z
aWduZWQqPihkYXRhKSkrKzsgfSwgJmNoaWxkQ291bnQpOworICAgIHJldHVybiBjaGlsZENvdW50
ID4gMDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGJpbmRNb2RlbFRvTWVudVdpZGdldChHdGtX
aWRnZXQqIHdpZGdldCwgR01lbnVNb2RlbCogbW9kZWwpCit7CisgICAgZ3RrX21lbnVfc2hlbGxf
YmluZF9tb2RlbChHVEtfTUVOVV9TSEVMTCh3aWRnZXQpLCBtb2RlbCwgZ0NvbnRleHRNZW51SXRl
bUdyb3VwLCBUUlVFKTsKK30KKyNlbmRpZiAvLyBVU0UoR1RLNCkKKwogc3RhdGljIHZvaWQgY29u
dGV4dE1lbnVJdGVtQWN0aXZhdGVkQ2FsbGJhY2soR0FjdGlvbiogYWN0aW9uLCBHVmFyaWFudCos
IFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICBhdXRvKiBzdGF0ZVR5cGUgPSBnX2FjdGlvbl9n
ZXRfc3RhdGVfdHlwZShhY3Rpb24pOwpAQCAtMTI3LDcgKzIwMSw3IEBAIFZlY3RvcjxXZWJDb250
ZXh0TWVudUl0ZW1HbGliPiBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpwb3B1bGF0ZVN1Yk1lbnUo
Y29uc3QgV2ViCiB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnBvcHVsYXRlKGNvbnN0IFZl
Y3RvcjxXZWJDb250ZXh0TWVudUl0ZW1HbGliPiYgaXRlbXMpCiB7CiAgICAgR1JlZlB0cjxHTWVu
dT4gbWVudSA9IGJ1aWxkTWVudShpdGVtcyk7Ci0gICAgZ3RrX3BvcG92ZXJfYmluZF9tb2RlbCht
X21lbnUsIEdfTUVOVV9NT0RFTChtZW51LmdldCgpKSwgZ0NvbnRleHRNZW51SXRlbUdyb3VwKTsK
KyAgICBiaW5kTW9kZWxUb01lbnVXaWRnZXQobV9tZW51LCBHX01FTlVfTU9ERUwobWVudS5nZXQo
KSkpOwogfQogCiB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnBvcHVsYXRlKGNvbnN0IFZl
Y3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVtPj4mIGl0ZW1zKQpAQCAtMTU1LDcgKzIyOSw3IEBA
IHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUd0azo6cG9wdWxhdGUoY29uc3QgVmVjdG9yPFJlZjxX
ZWJDb250ZXh0TWVudUl0ZW0+PiYgaXRlCiAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAg
ICBndGtfcG9wb3Zlcl9iaW5kX21vZGVsKG1fbWVudSwgR19NRU5VX01PREVMKG1lbnUuZ2V0KCkp
LCBnQ29udGV4dE1lbnVJdGVtR3JvdXApOworICAgIGJpbmRNb2RlbFRvTWVudVdpZGdldChtX21l
bnUsIEdfTUVOVV9NT0RFTChtZW51LmdldCgpKSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVQ
cm94eUd0azo6c2hvdygpCkBAIC0xNzQsMzkgKzI0OCwzNSBAQCB2b2lkIFdlYkNvbnRleHRNZW51
UHJveHlHdGs6OnNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhWZWN0b3I8UmVmPFdlYkNvbnRleHRN
ZW51SQogICAgIGlmICghaXRlbXMuaXNFbXB0eSgpKQogICAgICAgICBwb3B1bGF0ZShpdGVtcyk7
CiAKLSAgICB1bnNpZ25lZCBjaGlsZENvdW50ID0gMDsKLSAgICBndGtfY29udGFpbmVyX2ZvcmVh
Y2goR1RLX0NPTlRBSU5FUihtX21lbnUpLCBbXShHdGtXaWRnZXQqLCBncG9pbnRlciBkYXRhKSB7
ICgqc3RhdGljX2Nhc3Q8dW5zaWduZWQqPihkYXRhKSkrKzsgfSwgJmNoaWxkQ291bnQpOwotICAg
IGlmICghY2hpbGRDb3VudCkKKyAgICBpZiAoIW1lbnVXaWRnZXRIYXNJdGVtcyhtX21lbnUpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0g
bV9wYWdlLT5jdXJyZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudCgpOworICAgIGNvbnN0IEdk
a0V2ZW50KiBldmVudCA9IG1vdXNlRXZlbnQgPyBtb3VzZUV2ZW50LT5uYXRpdmVFdmVudCgpIDog
bnVsbHB0cjsKICAgICBjb25zdCBHZGtSZWN0YW5nbGUgcmVjdCA9IHsgbV9jb250ZXh0Lm1lbnVM
b2NhdGlvbigpLngoKSwgbV9jb250ZXh0Lm1lbnVMb2NhdGlvbigpLnkoKSwgMSwgMSB9OwotICAg
IGd0a19wb3BvdmVyX3NldF9wb2ludGluZ190byhtX21lbnUsICZyZWN0KTsKLSAgICBndGtfcG9w
b3Zlcl9wb3B1cChtX21lbnUpOworICAgIHBvcHVwTWVudVdpZGdldChtX21lbnUsIGV2ZW50LCBy
ZWN0KTsKIH0KIAogV2ViQ29udGV4dE1lbnVQcm94eUd0azo6V2ViQ29udGV4dE1lbnVQcm94eUd0
ayhHdGtXaWRnZXQqIHdlYlZpZXcsIFdlYlBhZ2VQcm94eSYgcGFnZSwgQ29udGV4dE1lbnVDb250
ZXh0RGF0YSYmIGNvbnRleHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKICAgICA6IFdlYkNv
bnRleHRNZW51UHJveHkoV1RGTW92ZShjb250ZXh0KSwgdXNlckRhdGEpCiAgICAgLCBtX3dlYlZp
ZXcod2ViVmlldykKICAgICAsIG1fcGFnZSgmcGFnZSkKLSAgICAsIG1fbWVudShHVEtfUE9QT1ZF
UihndGtfcG9wb3Zlcl9tZW51X25ldygpKSkKKyAgICAsIG1fbWVudShjcmVhdGVNZW51V2lkZ2V0
KHdlYlZpZXcpKQogewotICAgIGd0a19wb3BvdmVyX3NldF9oYXNfYXJyb3cobV9tZW51LCBGQUxT
RSk7Ci0gICAgZ3RrX3BvcG92ZXJfc2V0X3Bvc2l0aW9uKG1fbWVudSwgR1RLX1BPU19CT1RUT00p
OwotICAgIGd0a19wb3BvdmVyX3NldF9yZWxhdGl2ZV90byhtX21lbnUsIG1fd2ViVmlldyk7CiAg
ICAgZ3RrX3dpZGdldF9pbnNlcnRfYWN0aW9uX2dyb3VwKEdUS19XSURHRVQobV9tZW51KSwgZ0Nv
bnRleHRNZW51SXRlbUdyb3VwLCBHX0FDVElPTl9HUk9VUChtX2FjdGlvbkdyb3VwLmdldCgpKSk7
CiAgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRBY3RpdmVDb250ZXh0TWVudVByb3h5KFdFQktJVF9X
RUJfVklFV19CQVNFKG1fd2ViVmlldyksIHRoaXMpOwogfQogCiBXZWJDb250ZXh0TWVudVByb3h5
R3RrOjp+V2ViQ29udGV4dE1lbnVQcm94eUd0aygpCiB7Ci0gICAgZ3RrX3BvcG92ZXJfcG9wZG93
bihtX21lbnUpOworICAgIHBvcGRvd25NZW51V2lkZ2V0KG1fbWVudSk7CiAKICAgICBmb3IgKGF1
dG8mIGhhbmRsZXIgOiBtX3NpZ25hbEhhbmRsZXJzKQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVy
X2Rpc2Nvbm5lY3QoaGFuZGxlci52YWx1ZSwgaGFuZGxlci5rZXkpOwogICAgIG1fc2lnbmFsSGFu
ZGxlcnMuY2xlYXIoKTsKIAogICAgIGd0a193aWRnZXRfaW5zZXJ0X2FjdGlvbl9ncm91cChHVEtf
V0lER0VUKG1fbWVudSksIGdDb250ZXh0TWVudUl0ZW1Hcm91cCwgbnVsbHB0cik7Ci0gICAgZ3Rr
X3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQobV9tZW51KSk7CisgICAgZ3RrX3dpZGdldF9kZXN0
cm95KG1fbWVudSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmgKaW5kZXggZWUz
MzA2NWM4YjJjNmU4N2RhYWQ0NjQ0ZTQ0NGIzNDNkMjMxZDc4Yi4uNzIzZDgzOTA4N2Y4NGE4ODRj
NjFkYzQ2MTI5OGE1NjZmYWE0YmMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICB+V2ViQ29udGV4dE1lbnVQcm94eUd0aygpOwogCiAgICAgdm9pZCBwb3B1bGF0ZShj
b25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4mKTsKLSAgICBHdGtXaWRnZXQqIGd0
a1dpZGdldCgpIGNvbnN0IHsgcmV0dXJuIEdUS19XSURHRVQobV9tZW51KTsgfQorICAgIEd0a1dp
ZGdldCogZ3RrV2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9tZW51OyB9CiAKIHByaXZhdGU6CiAg
ICAgV2ViQ29udGV4dE1lbnVQcm94eUd0ayhHdGtXaWRnZXQqLCBXZWJQYWdlUHJveHkmLCBDb250
ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC02NCw3ICs2NCw3IEBA
IHByaXZhdGU6CiAKICAgICBHdGtXaWRnZXQqIG1fd2ViVmlldzsKICAgICBXZWJQYWdlUHJveHkq
IG1fcGFnZTsKLSAgICBHdGtQb3BvdmVyKiBtX21lbnU7CisgICAgR3RrV2lkZ2V0KiBtX21lbnU7
CiAgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCB2b2lkKj4gbV9zaWduYWxIYW5kbGVyczsKICAg
ICBHUmVmUHRyPEdTaW1wbGVBY3Rpb25Hcm91cD4gbV9hY3Rpb25Hcm91cCB7IGFkb3B0R1JlZihn
X3NpbXBsZV9hY3Rpb25fZ3JvdXBfbmV3KCkpIH07CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399294</attachid>
            <date>2020-05-13 13:35:39 -0700</date>
            <delta_ts>2020-05-14 09:20:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211557-20200513233537.patch</filename>
            <type>text/plain</type>
            <size>21605</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDg1YjlkMzRlYzI2MWU4
NGI2NTIyZTllMzJhMzQ3NjkzOTdlYzZlMi4uZDE4MTk2OTY3NWNmOGQyNjAyZTRlMGViM2NmNDk3
NWY4NjI5ZTkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA1LTEzICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUSzNd
IEJyaW5nIGJhY2sgdXNhZ2Ugb2YgR3RrTWVudSBmb3IgY29udGV4dCBtZW51cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNTU3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRl
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmg6IFJlbW92ZSBHdGtQ
b3BvdmVyIGZ1bmN0aW9ucyB1c2VkIG9ubHkgZm9yIGNvbnRleHQgbWVudXMuCisKIDIwMjAtMDUt
MDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bXV0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjM0ZTI3YWQw
NmI4NzkyMjM3OGJhNjMzZTdkNjA2Y2ExMTQwMzZhZS4uZWUzYWQ3NmMyMTJiZTg4YzIzNmI0M2Ji
ZjVkODdlMzM1YjBkYWY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMC0wNS0xMyAg
QWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEszXSBCcmluZyBiYWNrIHVzYWdlIG9mIEd0a01lbnUgZm9yIGNvbnRleHQgbWVudXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTU1NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUDogQnVnICMyMTE1
NTcKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdDb250ZXh0TWVudURpc21pc3NlZCk6IFJlbmFtZSBmcm9tIGNv
bnRleHRNZW51RGlzbWlzc2VkKCkgYW5kIGV4cG9zZSBpdCBhcworICAgICAgICBwcml2YXRlIHN5
bWJvbCB0byBiZSB1c2VkIGZyb20gV2ViQ29udGV4dE1lbnVQcm94eUd0ay4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdQb3B1bGF0ZUNvbnRleHRNZW51KTogRG8gbm90IGNvbm5lY3QgdG8gdGhlIHNp
Z25hbCwgd2hpY2ggaXMgbm93IGhhbmRsZWQgYXMKKyAgICAgICAgYW4gaW50ZXJuYWwgZGV0YWls
IG9mIFdlYkNvbnRleHRNZW51UHJveHlHdGsuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXdQcml2YXRlLmg6IEFkZCB3ZWJraXRXZWJWaWV3Q29udGV4dE1lbnVEaXNt
aXNzZWQoKQorICAgICAgICBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNvbnRl
eHRNZW51RGlzbWlzc2VkKTogUmVuYW1lIGZyb20gYWN0aXZlQ29udGV4dE1lbnVDbG9zZWQoKSBh
bmQgZXhwb3NlCisgICAgICAgIGl0IGFzIHByaXZhdGUgc3ltYm9sIHRvIGJlIHVzZWQgZnJvbSBX
ZWJDb250ZXh0TWVudVByb3h5R3RrLiBDaGFuZ2UgdGhlIHBhcmFtZXRlciB0byBiZQorICAgICAg
ICB0aGUgV2ViQ29udGV4dE1lbnVQcm94eUd0ayBpbnN0YW5jZSwgaW5zdGVhZCBvZiB0aGUgR3Rr
V2lkZ2V0IHRoYXQgaW1wbGVtZW50cyB0aGUgY29udGV4dAorICAgICAgICBtZW51LCB3aGljaCBp
cyBub3cgYW4gaW50ZXJuYWwgZGV0YWlsIG9mIFdlYkNvbnRleHRNZW51UHJveHlHdGsuCisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QmFzZVNldEFjdGl2ZUNvbnRleHRNZW51UHJveHkpOiBEbyBub3Qg
Y29ubmVjdCB0byB0aGUgc2lnbmFsLCB3aGljaCBpcyBub3cKKyAgICAgICAgaGFuZGxlZCBhcyBh
biBpbnRlcm5hbCBkZXRhaWwgb2YgV2ViQ29udGV4dE1lbnVQcm94eUd0ay4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaDogQWRkIHdlYmtpdFdl
YlZpZXdCYXNlQ29udGV4dE1lbnVEaXNtaXNzZWQoKQorICAgICAgICBkZWNsYXJhdGlvbi4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwOiBBZGQgaGVs
cGVyIGZ1bmN0aW9ucyB0byBtYW5pcHVsYXRlIHRoZSBhY3R1YWwKKyAgICAgICAgd2lkZ2V0IHVz
ZWQgZm9yIGNvbnRleHQgbWVudXMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgR1RLMyBvciBHVEs0IGlz
IGJlaW5nIHVzZWQuIFRoZSBHVEszCisgICAgICAgIHZlcnNpb25zIGJyaW5nIGJhY2sgYml0cyBv
ZiBjb2RlIHJlbW92ZWQgaW4gcjI2MDg4OS4KKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlTWVudVdp
ZGdldCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojpwb3B1cE1lbnVXaWRnZXQpOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6cG9wZG93bk1lbnVXaWRnZXQpOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6bWVudVdpZGdldEhhc0l0ZW1zKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmJpbmRN
b2RlbFRvTWVudVdpZGdldCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dVByb3h5R3RrOjpwb3B1bGF0ZSk6IFVzZSBjb250ZXh0IG1lbnUgd2lkZ2V0IGhlbHBlciBmdW5j
dGlvbnMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3dDb250
ZXh0TWVudVdpdGhJdGVtcyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dVByb3h5R3RrOjpXZWJDb250ZXh0TWVudVByb3h5R3RrKTogRGl0dG8uIEFsc28gaGFuZGxlIHRo
ZQorICAgICAgICBzaWduYWwgdHJpZ2dlcmVkIHdoZW4gdGhlIGNvbnRleHQgbWVudSBpcyBkaXNt
aXNzZWQgYW5kIGFycmFuZ2UgdG8gY2FsbAorICAgICAgICB3ZWJraXRXZWJWaWV3Q29udGV4dE1l
bnVEaXNtaXNzZWQoKSBhbmQgd2Via2l0V2ViVmlld0Jhc2VDb250ZXh0TWVudURpc21pc3NlZCgp
LgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5R3RrOjp+V2ViQ29udGV4dE1l
bnVQcm94eUd0ayk6IFVzZSBoZWxwZXIgZnVuY3Rpb25zLgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oOiBSZW1vdmUgZ3RrV2lkZ2V0KCkgYWNjZXNzb3Iu
CisKIDIwMjAtMDUtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBDcmFzaCB1bmRlciBXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuaAppbmRleCAwYjhiNmE1Zjk4NzI5MGYyODcxODViY2Y3
YzYwNmE5NThmMjExYTM5Li5iZTU5NmUxOTQxMTMxNzc2YjQzMzJmOWY1YzE3YzYwMGUxZGM3NjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmgKQEAgLTE1
MiwyNiArMTUyLDQgQEAgZ2RrX2V2ZW50X2dldF9rZXljb2RlKGNvbnN0IEdka0V2ZW50KiBldmVu
dCwgZ3VpbnQxNioga2V5Y29kZSkKICAgICByZXR1cm4gVFJVRTsKIH0KIAotc3RhdGljIGlubGlu
ZSBHdGtXaWRnZXQqIGd0a19wb3BvdmVyX21lbnVfbmV3KCkKLXsKLSAgICByZXR1cm4gZ3RrX3Bv
cG92ZXJfbWVudV9uZXdfZnJvbV9tb2RlbChudWxscHRyKTsKLX0KLQotc3RhdGljIGlubGluZSB2
b2lkIGd0a19wb3BvdmVyX2JpbmRfbW9kZWwoR3RrUG9wb3ZlciogcG9wb3ZlciwgR01lbnVNb2Rl
bCogbW9kZWwsIGNvbnN0IGNoYXIqKQotewotICAgIEFTU0VSVChHVEtfSVNfUE9QT1ZFUl9NRU5V
KHBvcG92ZXIpKTsKLSAgICBndGtfcG9wb3Zlcl9tZW51X3NldF9tZW51X21vZGVsKEdUS19QT1BP
VkVSX01FTlUocG9wb3ZlciksIG1vZGVsKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGd0a19w
b3BvdmVyX3NldF9yZWxhdGl2ZV90byhHdGtQb3BvdmVyKiBwb3BvdmVyLCBHdGtXaWRnZXQqIHBh
cmVudCkKLXsKLSAgICBndGtfd2lkZ2V0X3NldF9wYXJlbnQoR1RLX1dJREdFVChwb3BvdmVyKSwg
cGFyZW50KTsKLX0KLQotI2Vsc2UKLQotc3RhdGljIGlubGluZSB2b2lkIGd0a19wb3BvdmVyX3Nl
dF9oYXNfYXJyb3coR3RrUG9wb3ZlciosIGdib29sZWFuKQotewotfQotCiAjZW5kaWYgLy8gVVNF
KEdUSzQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXcuY3BwCmluZGV4IDhjNTRiNDIzZmY5MjY2YjgzMDczODVkZDEzYzNmNDQ5MjRmYzJlNDUu
LjQ2M2I3NWFhMDgyZDRmODg0NDUxNjVjOGQ4ZGRhMDE3MjIyNWYzY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yNTc5
LDcgKzI1NzksNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0RmlsZUNob29zZQogfQogCiAjaWYgUExBVEZPUk0o
R1RLKQotc3RhdGljIHZvaWQgY29udGV4dE1lbnVEaXNtaXNzZWQoR3RrV2lkZ2V0KiwgV2ViS2l0
V2ViVmlldyogd2ViVmlldykKK3ZvaWQgd2Via2l0V2ViVmlld0NvbnRleHRNZW51RGlzbWlzc2Vk
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBz
aWduYWxzW0NPTlRFWFRfTUVOVV9ESVNNSVNTRURdLCAwLCBOVUxMKTsKIH0KQEAgLTI2MDUsOCAr
MjYwNSw2IEBAIHZvaWQgd2Via2l0V2ViVmlld1BvcHVsYXRlQ29udGV4dE1lbnUoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgY29uc3QgVmVjdG9yPFdlYkNvCiAgICAgd2Via2l0Q29udGV4dE1lbnVQ
b3B1bGF0ZShjb250ZXh0TWVudS5nZXQoKSwgY29udGV4dE1lbnVJdGVtcyk7CiAgICAgY29udGV4
dE1lbnVQcm94eS0+cG9wdWxhdGUoY29udGV4dE1lbnVJdGVtcyk7CiAKLSAgICBnX3NpZ25hbF9j
b25uZWN0KGNvbnRleHRNZW51UHJveHktPmd0a1dpZGdldCgpLCAiY2xvc2VkIiwgR19DQUxMQkFD
Syhjb250ZXh0TWVudURpc21pc3NlZCksIHdlYlZpZXcpOwotCiAgICAgLy8gQ2xlYXIgdGhlIG1l
bnUgdG8gbWFrZSBzdXJlIGl0J3MgdXNlbGVzcyBhZnRlciBzaWduYWwgZW1pc3Npb24uCiAgICAg
d2Via2l0X2NvbnRleHRfbWVudV9yZW1vdmVfYWxsKGNvbnRleHRNZW51LmdldCgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oCmluZGV4IDVhYjc1NzRjOTM3OGY1MmRiODdjZTc1MTU3NjI3YzA0ZTliMmU5NjIu
LmEyNTcyZjRlNjU3M2MzYTEwMmM3NjA2ZGE0MTRmZWE2YjIxNDk5NmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUu
aApAQCAtNDksNiArNDksNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChXZWJLaXRX
ZWJWaWV3KiwgV2ViS2l0TG9hZEV2ZW50KTsKIHZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQo
V2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QgY2hhciogZmFpbGluZ1VSSSwg
R0Vycm9yKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhXZWJL
aXRXZWJWaWV3KiwgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiwgR1Rsc0NlcnRpZmlj
YXRlRmxhZ3MsIEdUbHNDZXJ0aWZpY2F0ZSopOwogI2lmIFBMQVRGT1JNKEdUSykKK3ZvaWQgd2Vi
a2l0V2ViVmlld0NvbnRleHRNZW51RGlzbWlzc2VkKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Vi
a2l0V2ViVmlld0dldExvYWREZWNpc2lvbkZvckljb24oV2ViS2l0V2ViVmlldyosIGNvbnN0IFdl
YkNvcmU6OkxpbmtJY29uJiwgRnVuY3Rpb248dm9pZChib29sKT4mJik7CiB2b2lkIHdlYmtpdFdl
YlZpZXdTZXRJY29uKFdlYktpdFdlYlZpZXcqLCBjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIEFQ
STo6RGF0YSYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDM3NTk5MTE2ZDNjMTM2MmU2NmVjM2Nj
MGIzZjhiMjZhMzIzNzkxYjMuLmZmZjdjZGI0ZDc1M2U4MWI0MmQxYjA2NDFjYmEzMzJhNDE0YjYx
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwCkBAIC0xOTAzLDE2ICsxOTAzLDE1IEBAIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VTZXRJbnNwZWN0b3JWaWV3U2l6ZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmll
d0Jhc2UsCiAgICAgICAgIGd0a193aWRnZXRfcXVldWVfcmVzaXplX25vX3JlZHJhdyhHVEtfV0lE
R0VUKHdlYmtpdFdlYlZpZXdCYXNlKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGFjdGl2ZUNvbnRleHRN
ZW51Q2xvc2VkKEd0a1dpZGdldCogd2lkZ2V0LCBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UpCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29udGV4dE1lbnVEaXNtaXNzZWQoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBXZWJDb250ZXh0TWVudVByb3h5R3RrKiBjb250ZXh0TWVu
dVByb3h5KQogewotICAgIGlmICh3ZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZlQ29udGV4dE1lbnVQ
cm94eSAmJiB3ZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZlQ29udGV4dE1lbnVQcm94eS0+Z3RrV2lk
Z2V0KCkgPT0gd2lkZ2V0KQorICAgIGlmICh3ZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZlQ29udGV4
dE1lbnVQcm94eSA9PSBjb250ZXh0TWVudVByb3h5KQogICAgICAgICB3ZWJWaWV3QmFzZS0+cHJp
di0+YWN0aXZlQ29udGV4dE1lbnVQcm94eSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgd2Via2l0V2Vi
Vmlld0Jhc2VTZXRBY3RpdmVDb250ZXh0TWVudVByb3h5KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJr
aXRXZWJWaWV3QmFzZSwgV2ViQ29udGV4dE1lbnVQcm94eUd0ayogY29udGV4dE1lbnVQcm94eSkK
IHsKICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZlQ29udGV4dE1lbnVQcm94eSA9
IGNvbnRleHRNZW51UHJveHk7Ci0gICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QoY29udGV4dE1l
bnVQcm94eS0+Z3RrV2lkZ2V0KCksICJjbG9zZWQiLCBHX0NBTExCQUNLKGFjdGl2ZUNvbnRleHRN
ZW51Q2xvc2VkKSwgd2Via2l0V2ViVmlld0Jhc2UsIHN0YXRpY19jYXN0PEdDb25uZWN0RmxhZ3M+
KDApKTsKIH0KIAogV2ViQ29udGV4dE1lbnVQcm94eUd0ayogd2Via2l0V2ViVmlld0Jhc2VHZXRB
Y3RpdmVDb250ZXh0TWVudVByb3h5KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4IGFkZmE2NzkwNzA3OWY5MWM3ZjIyMjVkMDU5Yzk5
YzJhYzQ1MzRjNTAuLjY1NTIzODFmMDAwODg2MzJjZWIzNGY2NDE0MjM4ZGZiYWM0NGQzNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUuaApAQCAtNTMsNiArNTMsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlRW50ZXJGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXdCYXNlKik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlRXhpdEZ1bGxTY3JlZW4oV2ViS2l0V2ViVmlld0Jhc2UqKTsKIGJvb2wgd2Via2l0V2Vi
Vmlld0Jhc2VJc0Z1bGxTY3JlZW4oV2ViS2l0V2ViVmlld0Jhc2UqKTsKIHZvaWQgd2Via2l0V2Vi
Vmlld0Jhc2VTZXRJbnNwZWN0b3JWaWV3U2l6ZShXZWJLaXRXZWJWaWV3QmFzZSosIHVuc2lnbmVk
IHNpemUpOwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnRleHRNZW51RGlzbWlzc2VkKFdlYktp
dFdlYlZpZXdCYXNlKiwgV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5R3RrKik7CiB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlU2V0QWN0aXZlQ29udGV4dE1lbnVQcm94eShXZWJLaXRXZWJWaWV3QmFz
ZSosIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0ayopOwogV2ViS2l0OjpXZWJDb250ZXh0
TWVudVByb3h5R3RrKiB3ZWJraXRXZWJWaWV3QmFzZUdldEFjdGl2ZUNvbnRleHRNZW51UHJveHko
V2ViS2l0V2ViVmlld0Jhc2UqKTsKIEdka0V2ZW50KiB3ZWJraXRXZWJWaWV3QmFzZVRha2VDb250
ZXh0TWVudUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKaW5kZXggOTlkNWU5
MjJkZDI1NDZjNGViN2NhOGM0MzBiYWYxNjYzOGMxZWNmMi4uNjg1NThhNGU4NWQ2NmFlZWJjZjcw
ZGJiNDFhZDUzNzllMjg0ZjNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcApAQCAtMzUsNiArMzUsOCBAQAogI2lu
Y2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5j
bHVkZSA8Z3RrL2d0ay5oPgpAQCAtNDcsNiArNDksODQgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGdD
b250ZXh0TWVudUl0ZW1Hcm91cCA9ICJ3ZWJraXRDb250ZXh0TWVudSI7CiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisjaWYgVVNFKEdUSzQpCitzdGF0aWMg
Y29uc3RleHByIGF1dG8gZ1dpZGdldERpc21pc3NlZFNpZ25hbCA9ICJjbG9zZWQiOworCitzdGF0
aWMgR3RrV2lkZ2V0KiBjcmVhdGVNZW51V2lkZ2V0KEd0a1dpZGdldCogd2ViVmlldykKK3sKKyAg
ICBhdXRvKiB3aWRnZXQgPSBndGtfcG9wb3Zlcl9tZW51X25ld19mcm9tX21vZGVsKG51bGxwdHIp
OworICAgIGd0a19wb3BvdmVyX3NldF9oYXNfYXJyb3coR1RLX1BPUE9WRVIod2lkZ2V0KSwgRkFM
U0UpOworICAgIGd0a19wb3BvdmVyX3NldF9wb3NpdGlvbihHVEtfUE9QT1ZFUih3aWRnZXQpLCBH
VEtfUE9TX0JPVFRPTSk7CisgICAgZ3RrX3dpZGdldF9zZXRfcGFyZW50KHdpZGdldCwgd2ViVmll
dyk7CisgICAgcmV0dXJuIHdpZGdldDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHBvcHVwTWVu
dVdpZGdldChHdGtXaWRnZXQqIHdpZGdldCwgY29uc3QgR2RrRXZlbnQqLCBjb25zdCBHZGtSZWN0
YW5nbGUmIHRhcmdldCkKK3sKKyAgICBndGtfcG9wb3Zlcl9zZXRfcG9pbnRpbmdfdG8oR1RLX1BP
UE9WRVIod2lkZ2V0KSwgJnRhcmdldCk7CisgICAgZ3RrX3BvcG92ZXJfcG9wdXAoR1RLX1BPUE9W
RVIod2lkZ2V0KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwb3Bkb3duTWVudVdpZGdldChH
dGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBndGtfcG9wb3Zlcl9wb3Bkb3duKEdUS19QT1BPVkVS
KHdpZGdldCkpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgbWVudVdpZGdldEhhc0l0ZW1zKEd0
a1dpZGdldCogd2lkZ2V0KQoreworICAgIHJldHVybiBnX21lbnVfbW9kZWxfZ2V0X25faXRlbXMo
Z3RrX3BvcG92ZXJfbWVudV9nZXRfbWVudV9tb2RlbChHVEtfUE9QT1ZFUl9NRU5VKHdpZGdldCkp
KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGJpbmRNb2RlbFRvTWVudVdpZGdldChHdGtXaWRn
ZXQqIHdpZGdldCwgR01lbnVNb2RlbCogbW9kZWwpCit7CisgICAgZ3RrX3BvcG92ZXJfbWVudV9z
ZXRfbWVudV9tb2RlbChHVEtfUE9QT1ZFUl9NRU5VKHdpZGdldCksIG1vZGVsKTsKK30KKyNlbHNl
CitzdGF0aWMgY29uc3RleHByIGF1dG8gZ1dpZGdldERpc21pc3NlZFNpZ25hbCA9ICJkZWFjdGl2
YXRlIjsKKworc3RhdGljIEd0a1dpZGdldCogY3JlYXRlTWVudVdpZGdldChHdGtXaWRnZXQqIHdl
YlZpZXcpCit7CisgICAgYXV0byogd2lkZ2V0ID0gZ3RrX21lbnVfbmV3KCk7CisgICAgZ3RrX21l
bnVfYXR0YWNoX3RvX3dpZGdldChHVEtfTUVOVSh3aWRnZXQpLCB3ZWJWaWV3LCBudWxscHRyKTsK
KyAgICByZXR1cm4gd2lkZ2V0OworfQorCitzdGF0aWMgdm9pZCBwb3B1cE1lbnVXaWRnZXQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIGNvbnN0IEdka0V2ZW50KiB0cmlnZ2VyRXZlbnQsIGNvbnN0IEdka1Jl
Y3RhbmdsZSYgdGFyZ2V0KQoreworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGtleUV2ZW50Owor
ICAgIGF1dG8qIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhndGtfbWVudV9nZXRfYXR0
YWNoX3dpZGdldChHVEtfTUVOVSh3aWRnZXQpKSk7CisgICAgaWYgKCF0cmlnZ2VyRXZlbnQpIHsK
KyAgICAgICAgLy8gV2hlbiB0aGUgY29udGV4dCBtZW51IGlzIHJlcXVlc3RlZCB1c2luZyB0aGUg
a2V5Ym9hcmQsIHRoZXJlIGlzIG5vCisgICAgICAgIC8vIHRyaWdnZXJFdmVudDogdXNlIGEgZmFr
ZSBldmVudCBmb3IgdGhlIOKAnE1lbnXigJ0ga2V5IGJlaW5nIHJlbGVhc2VkLgorICAgICAgICBr
ZXlFdmVudC5yZXNldChnZGtfZXZlbnRfbmV3KEdES19LRVlfUkVMRUFTRSkpOworICAgICAgICBn
ZGtfZXZlbnRfc2V0X2RldmljZShrZXlFdmVudC5nZXQoKSwgZ2RrX3NlYXRfZ2V0X2tleWJvYXJk
KGdka19kaXNwbGF5X2dldF9kZWZhdWx0X3NlYXQoZ2RrX3dpbmRvd19nZXRfZGlzcGxheSh3aW5k
b3cpKSkpOworICAgICAgICBhdXRvKiBldmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnRL
ZXkqPihrZXlFdmVudC5nZXQoKSk7CisgICAgICAgIGV2ZW50LT53aW5kb3cgPSB3aW5kb3c7Cisg
ICAgICAgIGV2ZW50LT50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKKyAgICAgICAgZXZlbnQtPmtl
eXZhbCA9IEdES19LRVlfTWVudTsKKyAgICAgICAgdHJpZ2dlckV2ZW50ID0ga2V5RXZlbnQuZ2V0
KCk7CisgICAgfTsKKyAgICBndGtfbWVudV9wb3B1cF9hdF9yZWN0KEdUS19NRU5VKHdpZGdldCks
IHdpbmRvdywgJnRhcmdldCwgR0RLX0dSQVZJVFlfU09VVEhfV0VTVCwgR0RLX0dSQVZJVFlfTk9S
VEhfV0VTVCwgdHJpZ2dlckV2ZW50KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHBvcGRvd25N
ZW51V2lkZ2V0KEd0a1dpZGdldCogd2lkZ2V0KQoreworICAgIGd0a19tZW51X3BvcGRvd24oR1RL
X01FTlUod2lkZ2V0KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBtZW51V2lkZ2V0SGFzSXRl
bXMoR3RrV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgdW5zaWduZWQgY2hpbGRDb3VudCA9IDA7Cisg
ICAgZ3RrX2NvbnRhaW5lcl9mb3JlYWNoKEdUS19DT05UQUlORVIod2lkZ2V0KSwgW10oR3RrV2lk
Z2V0KiwgZ3BvaW50ZXIgZGF0YSkgeyAoKnN0YXRpY19jYXN0PHVuc2lnbmVkKj4oZGF0YSkpKys7
IH0sICZjaGlsZENvdW50KTsKKyAgICByZXR1cm4gY2hpbGRDb3VudCA+IDA7Cit9CisKK3N0YXRp
YyBpbmxpbmUgdm9pZCBiaW5kTW9kZWxUb01lbnVXaWRnZXQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdN
ZW51TW9kZWwqIG1vZGVsKQoreworICAgIGd0a19tZW51X3NoZWxsX2JpbmRfbW9kZWwoR1RLX01F
TlVfU0hFTEwod2lkZ2V0KSwgbW9kZWwsIGdDb250ZXh0TWVudUl0ZW1Hcm91cCwgVFJVRSk7Cit9
CisjZW5kaWYgLy8gVVNFKEdUSzQpCisKIHN0YXRpYyB2b2lkIGNvbnRleHRNZW51SXRlbUFjdGl2
YXRlZENhbGxiYWNrKEdBY3Rpb24qIGFjdGlvbiwgR1ZhcmlhbnQqLCBXZWJQYWdlUHJveHkqIHBh
Z2UpCiB7CiAgICAgYXV0byogc3RhdGVUeXBlID0gZ19hY3Rpb25fZ2V0X3N0YXRlX3R5cGUoYWN0
aW9uKTsKQEAgLTEyNyw3ICsyMDcsNyBAQCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4g
V2ViQ29udGV4dE1lbnVQcm94eUd0azo6cG9wdWxhdGVTdWJNZW51KGNvbnN0IFdlYgogdm9pZCBX
ZWJDb250ZXh0TWVudVByb3h5R3RrOjpwb3B1bGF0ZShjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtR2xpYj4mIGl0ZW1zKQogewogICAgIEdSZWZQdHI8R01lbnU+IG1lbnUgPSBidWlsZE1l
bnUoaXRlbXMpOwotICAgIGd0a19wb3BvdmVyX2JpbmRfbW9kZWwobV9tZW51LCBHX01FTlVfTU9E
RUwobWVudS5nZXQoKSksIGdDb250ZXh0TWVudUl0ZW1Hcm91cCk7CisgICAgYmluZE1vZGVsVG9N
ZW51V2lkZ2V0KG1fbWVudSwgR19NRU5VX01PREVMKG1lbnUuZ2V0KCkpKTsKIH0KIAogdm9pZCBX
ZWJDb250ZXh0TWVudVByb3h5R3RrOjpwb3B1bGF0ZShjb25zdCBWZWN0b3I8UmVmPFdlYkNvbnRl
eHRNZW51SXRlbT4+JiBpdGVtcykKQEAgLTE1NSw3ICsyMzUsNyBAQCB2b2lkIFdlYkNvbnRleHRN
ZW51UHJveHlHdGs6OnBvcHVsYXRlKGNvbnN0IFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJdGVt
Pj4mIGl0ZQogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgZ3RrX3BvcG92ZXJfYmlu
ZF9tb2RlbChtX21lbnUsIEdfTUVOVV9NT0RFTChtZW51LmdldCgpKSwgZ0NvbnRleHRNZW51SXRl
bUdyb3VwKTsKKyAgICBiaW5kTW9kZWxUb01lbnVXaWRnZXQobV9tZW51LCBHX01FTlVfTU9ERUwo
bWVudS5nZXQoKSkpOwogfQogCiB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnNob3coKQpA
QCAtMTc0LDM5ICsyNTQsNDAgQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpzaG93Q29u
dGV4dE1lbnVXaXRoSXRlbXMoVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUkKICAgICBpZiAoIWl0
ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgcG9wdWxhdGUoaXRlbXMpOwogCi0gICAgdW5zaWduZWQg
Y2hpbGRDb3VudCA9IDA7Ci0gICAgZ3RrX2NvbnRhaW5lcl9mb3JlYWNoKEdUS19DT05UQUlORVIo
bV9tZW51KSwgW10oR3RrV2lkZ2V0KiwgZ3BvaW50ZXIgZGF0YSkgeyAoKnN0YXRpY19jYXN0PHVu
c2lnbmVkKj4oZGF0YSkpKys7IH0sICZjaGlsZENvdW50KTsKLSAgICBpZiAoIWNoaWxkQ291bnQp
CisgICAgaWYgKCFtZW51V2lkZ2V0SGFzSXRlbXMobV9tZW51KSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgTmF0aXZlV2ViTW91c2VFdmVudCogbW91c2VFdmVudCA9IG1fcGFnZS0+Y3VycmVudGx5
UHJvY2Vzc2VkTW91c2VEb3duRXZlbnQoKTsKKyAgICBjb25zdCBHZGtFdmVudCogZXZlbnQgPSBt
b3VzZUV2ZW50ID8gbW91c2VFdmVudC0+bmF0aXZlRXZlbnQoKSA6IG51bGxwdHI7CiAgICAgY29u
c3QgR2RrUmVjdGFuZ2xlIHJlY3QgPSB7IG1fY29udGV4dC5tZW51TG9jYXRpb24oKS54KCksIG1f
Y29udGV4dC5tZW51TG9jYXRpb24oKS55KCksIDEsIDEgfTsKLSAgICBndGtfcG9wb3Zlcl9zZXRf
cG9pbnRpbmdfdG8obV9tZW51LCAmcmVjdCk7Ci0gICAgZ3RrX3BvcG92ZXJfcG9wdXAobV9tZW51
KTsKKyAgICBwb3B1cE1lbnVXaWRnZXQobV9tZW51LCBldmVudCwgcmVjdCk7CiB9CiAKIFdlYkNv
bnRleHRNZW51UHJveHlHdGs6OldlYkNvbnRleHRNZW51UHJveHlHdGsoR3RrV2lkZ2V0KiB3ZWJW
aWV3LCBXZWJQYWdlUHJveHkmIHBhZ2UsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250ZXh0
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiAgICAgOiBXZWJDb250ZXh0TWVudVByb3h5KFdU
Rk1vdmUoY29udGV4dCksIHVzZXJEYXRhKQogICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAg
LCBtX3BhZ2UoJnBhZ2UpCi0gICAgLCBtX21lbnUoR1RLX1BPUE9WRVIoZ3RrX3BvcG92ZXJfbWVu
dV9uZXcoKSkpCisgICAgLCBtX21lbnUoY3JlYXRlTWVudVdpZGdldChtX3dlYlZpZXcpKQogewot
ICAgIGd0a19wb3BvdmVyX3NldF9oYXNfYXJyb3cobV9tZW51LCBGQUxTRSk7Ci0gICAgZ3RrX3Bv
cG92ZXJfc2V0X3Bvc2l0aW9uKG1fbWVudSwgR1RLX1BPU19CT1RUT00pOwotICAgIGd0a19wb3Bv
dmVyX3NldF9yZWxhdGl2ZV90byhtX21lbnUsIG1fd2ViVmlldyk7CiAgICAgZ3RrX3dpZGdldF9p
bnNlcnRfYWN0aW9uX2dyb3VwKEdUS19XSURHRVQobV9tZW51KSwgZ0NvbnRleHRNZW51SXRlbUdy
b3VwLCBHX0FDVElPTl9HUk9VUChtX2FjdGlvbkdyb3VwLmdldCgpKSk7CisgICAgZ19zaWduYWxf
Y29ubmVjdChtX21lbnUsIGdXaWRnZXREaXNtaXNzZWRTaWduYWwsIEdfQ0FMTEJBQ0soK1tdKEd0
a1dpZGdldCogd2lkZ2V0LCBXZWJDb250ZXh0TWVudVByb3h5R3RrKiBwcm94eSkgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChwcm94eS0+bV9tZW51ID09IHdpZGdldCk7CisgICAgICAgIHdlYmtp
dFdlYlZpZXdDb250ZXh0TWVudURpc21pc3NlZChXRUJLSVRfV0VCX1ZJRVcocHJveHktPm1fd2Vi
VmlldykpOworICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZUNvbnRleHRNZW51RGlzbWlzc2VkKFdF
QktJVF9XRUJfVklFV19CQVNFKHByb3h5LT5tX3dlYlZpZXcpLCBwcm94eSk7CisgICAgfSksIHRo
aXMpOwogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWN0aXZlQ29udGV4dE1lbnVQcm94eShXRUJL
SVRfV0VCX1ZJRVdfQkFTRShtX3dlYlZpZXcpLCB0aGlzKTsKIH0KIAogV2ViQ29udGV4dE1lbnVQ
cm94eUd0azo6fldlYkNvbnRleHRNZW51UHJveHlHdGsoKQogewotICAgIGd0a19wb3BvdmVyX3Bv
cGRvd24obV9tZW51KTsKKyAgICBwb3Bkb3duTWVudVdpZGdldChtX21lbnUpOwogCiAgICAgZm9y
IChhdXRvJiBoYW5kbGVyIDogbV9zaWduYWxIYW5kbGVycykKICAgICAgICAgZ19zaWduYWxfaGFu
ZGxlcl9kaXNjb25uZWN0KGhhbmRsZXIudmFsdWUsIGhhbmRsZXIua2V5KTsKICAgICBtX3NpZ25h
bEhhbmRsZXJzLmNsZWFyKCk7CiAKICAgICBndGtfd2lkZ2V0X2luc2VydF9hY3Rpb25fZ3JvdXAo
R1RLX1dJREdFVChtX21lbnUpLCBnQ29udGV4dE1lbnVJdGVtR3JvdXAsIG51bGxwdHIpOwotICAg
IGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKG1fbWVudSkpOworICAgIGd0a193aWRnZXRf
ZGVzdHJveShtX21lbnUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oCmluZGV4
IGVlMzMwNjVjOGIyYzZlODdkYWFkNDY0NGU0NDRiMzQzZDIzMWQ3OGIuLjY4NWY4ZDQyYTM3NTA0
NjU2N2I5ZDdkMDE4NWQ5NGI4MGJjODY2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaApAQCAtNTEsNyArNTEsNiBAQCBw
dWJsaWM6CiAgICAgfldlYkNvbnRleHRNZW51UHJveHlHdGsoKTsKIAogICAgIHZvaWQgcG9wdWxh
dGUoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+Jik7Ci0gICAgR3RrV2lkZ2V0
KiBndGtXaWRnZXQoKSBjb25zdCB7IHJldHVybiBHVEtfV0lER0VUKG1fbWVudSk7IH0KIAogcHJp
dmF0ZToKICAgICBXZWJDb250ZXh0TWVudVByb3h5R3RrKEd0a1dpZGdldCosIFdlYlBhZ2VQcm94
eSYsIENvbnRleHRNZW51Q29udGV4dERhdGEmJiwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTY0LDcg
KzYzLDcgQEAgcHJpdmF0ZToKIAogICAgIEd0a1dpZGdldCogbV93ZWJWaWV3OwogICAgIFdlYlBh
Z2VQcm94eSogbV9wYWdlOwotICAgIEd0a1BvcG92ZXIqIG1fbWVudTsKKyAgICBHdGtXaWRnZXQq
IG1fbWVudTsKICAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIHZvaWQqPiBtX3NpZ25hbEhhbmRs
ZXJzOwogICAgIEdSZWZQdHI8R1NpbXBsZUFjdGlvbkdyb3VwPiBtX2FjdGlvbkdyb3VwIHsgYWRv
cHRHUmVmKGdfc2ltcGxlX2FjdGlvbl9ncm91cF9uZXcoKSkgfTsKIH07CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzI5Yzg5MjAxNTM2MTZlYmQ5
NjMxNzQxMGQyM2JhYTRkYWE4Y2M5NC4uOWU1NmE3YjYzZjc1OTdjOTRkMjAwODNmN2NkMmIzNzhl
MmVlMGJmYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA1LTEzICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8
YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUSzNdIEJyaW5nIGJhY2sgdXNhZ2Ugb2Yg
R3RrTWVudSBmb3IgY29udGV4dCBtZW51cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjExNTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0Q29u
dGV4dE1lbnUuY3BwOiBBZGQgcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFscworICAgICAgICBmb3Ig
R1RLNCBhbmQgYnJpbmcgYmFjayBzb21lIGJpdHMgcHJldmlvdXNseSByZW1vdmVkIGluIHIyNjA4
ODkgZm9yIEdUSzMuCisKIDIwMjAtMDUtMDcgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgogCiAgICAgICAgIHdlYmtpdHB5OiBVc2UgYXBwbGVfYWRkaXRpb25zIGNlcnRpZmlj
YXRlIHBhdGggaWYgYXZhaWxhYmxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9UZXN0Q29udGV4dE1lbnUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcAppbmRleCBhYTgwZTBmYWM4MWRiYTVj
NDMyZjlhMTk3OGU1NDU5OWNiOWFiOWQ0Li5hZDU0MmUzYjJjMTE5Y2I4NjA2ZDYxNmI5MWEzNTUz
MDdhMzE2NTY4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9UZXN0Q29udGV4dE1lbnUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL1Rlc3RDb250ZXh0TWVudS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogc3RhdGljIFdl
YktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7CiAKKyNpZiBVU0UoR1RLNCkKIHN0cnVjdCBMb29rdXBX
aWRnZXRzRGF0YSB7CiAgICAgdm9pZCAoKndhbGtDaGlsZHJlbikoR3RrQ29udGFpbmVyKiwgR3Rr
Q2FsbGJhY2ssIHZvaWQqKTsKICAgICBGdW5jdGlvbjxib29sKEd0a1dpZGdldCopPiBwcmVkaWNh
dGU7CkBAIC00Nyw2ICs0OCw3IEBAIHN0YXRpYyBWZWN0b3I8R3RrV2lkZ2V0Kj4gbG9va3VwV2lk
Z2V0cyhHdGtXaWRnZXQqIHdpZGdldCwgRnVuY3Rpb248Ym9vbChHdGtXaWRnCiAgICAgbG9va3Vw
V2lkZ2V0c1dhbGtDaGlsZCh3aWRnZXQsICZkYXRhKTsKICAgICByZXR1cm4gV1RGTW92ZShkYXRh
LnJlc3VsdCk7CiB9CisjZW5kaWYgLy8gVVNFKEdUSzQpCiAKIGNsYXNzIENvbnRleHRNZW51VGVz
dDogcHVibGljIFdlYlZpZXdUZXN0IHsKIHB1YmxpYzoKQEAgLTExNiwxMyArMTE4LDE0IEBAIHB1
YmxpYzoKICAgICAgICAgcXVpdE1haW5Mb29wKCk7CiAgICAgfQogCi0gICAgR3RrUG9wb3Zlciog
Z2V0UG9wb3Zlck1lbnUoKQorICAgIEd0a1dpZGdldCogZ2V0Q29udGV4dE1lbnVXaWRnZXQoKQog
ICAgIHsKICAgICAgICAgR1VuaXF1ZVB0cjxHTGlzdD4gdG9wbGV2ZWxzKGd0a193aW5kb3dfbGlz
dF90b3BsZXZlbHMoKSk7CiAgICAgICAgIGZvciAoR0xpc3QqIGl0ZXIgPSB0b3BsZXZlbHMuZ2V0
KCk7IGl0ZXI7IGl0ZXIgPSBnX2xpc3RfbmV4dChpdGVyKSkgewogICAgICAgICAgICAgaWYgKCFH
VEtfSVNfV0lORE9XKGl0ZXItPmRhdGEpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCisj
aWYgVVNFKEdUSzQpCiAgICAgICAgICAgICAvLyBQb3BvdmVycyBhcmUgaW50ZXJuYWwgdG8gdGhl
IEd0a0NvbnRhaW5lciB3aGVyZSB0aGUgd2VidmlldyByZXNpZGVzLAogICAgICAgICAgICAgLy8g
Z3RrX2NvbnRhaW5lcl9mb3JhbGwoKSBpcyB0aGUgb25seSB3YXkgdG8gZW51bWVyYXRlIGludGVy
bmFsIGNoaWxkcmVuLgogICAgICAgICAgICAgR3RrUG9wb3ZlciAqcG9wb3ZlciA9IG51bGxwdHI7
CkBAIC0xMzUsNiArMTM4LDE0IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgaWYgKHBvcG92ZXIg
JiYgZ3RrX3BvcG92ZXJfZ2V0X3JlbGF0aXZlX3RvKHBvcG92ZXIpID09IEdUS19XSURHRVQobV93
ZWJWaWV3KSkKICAgICAgICAgICAgICAgICByZXR1cm4gcG9wb3ZlcjsKKyNlbHNlCisgICAgICAg
ICAgICBHdGtXaWRnZXQqIGNoaWxkID0gZ3RrX2Jpbl9nZXRfY2hpbGQoR1RLX0JJTihpdGVyLT5k
YXRhKSk7CisgICAgICAgICAgICBpZiAoIUdUS19JU19NRU5VKGNoaWxkKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKGd0a19tZW51X2dldF9hdHRhY2hfd2lk
Z2V0KEdUS19NRU5VKGNoaWxkKSkgPT0gR1RLX1dJREdFVChtX3dlYlZpZXcpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBjaGlsZDsKKyNlbmRpZiAvLyBVU0UoR1RLNCkKICAgICAgICAgfQogICAg
ICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTU3OSw5
ICs1OTAsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
R3RrQnV0dG9uKiBnZXRNZW51SXRlbShHdGtQb3BvdmVyKiBwb3BvdmVyLCBjb25zdCBnY2hhciog
aXRlbUxhYmVsKQorI2lmIFVTRShHVEs0KQorICAgIEd0a0J1dHRvbiogZ2V0TWVudUl0ZW0oR3Rr
V2lkZ2V0KiBwb3BvdmVyLCBjb25zdCBnY2hhciogaXRlbUxhYmVsKQogICAgIHsKLSAgICAgICAg
YXV0byBpdGVtcyA9IGxvb2t1cFdpZGdldHMoR1RLX1dJREdFVChwb3BvdmVyKSwKKyAgICAgICAg
YXV0byBpdGVtcyA9IGxvb2t1cFdpZGdldHMocG9wb3ZlciwKICAgICAgICAgICAgIFtpdGVtTGFi
ZWxdKEd0a1dpZGdldCogd2lkZ2V0KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFHVEtfSVNfQlVU
VE9OKHdpZGdldCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU5OCwx
MyArNjEwLDMyIEBAIHB1YmxpYzoKICAgICAgICAgZ19hc3NlcnRfY21wdWludChpdGVtcy5zaXpl
KCksID4sIDApOwogICAgICAgICByZXR1cm4gaXRlbXMuc2l6ZSgpID8gR1RLX0JVVFRPTihpdGVt
c1swXSkgOiBudWxscHRyOwogICAgIH0KKyNlbHNlCisgICAgR3RrTWVudUl0ZW0qIGdldE1lbnVJ
dGVtKEd0a1dpZGdldCogbWVudSwgY29uc3QgZ2NoYXIqIGl0ZW1MYWJlbCkKKyAgICB7CisgICAg
ICAgIEdVbmlxdWVQdHI8R0xpc3Q+IGl0ZW1zKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdU
S19DT05UQUlORVIobWVudSkpKTsKKyAgICAgICAgZm9yIChHTGlzdCogaXRlciA9IGl0ZW1zLmdl
dCgpOyBpdGVyOyBpdGVyID0gZ19saXN0X25leHQoaXRlcikpIHsKKyAgICAgICAgICAgIEd0a01l
bnVJdGVtKiBjaGlsZCA9IEdUS19NRU5VX0lURU0oaXRlci0+ZGF0YSk7CisgICAgICAgICAgICBp
ZiAoZ19zdHJfZXF1YWwoaXRlbUxhYmVsLCBndGtfbWVudV9pdGVtX2dldF9sYWJlbChjaGlsZCkp
KQorICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDsKKyAgICAgICAgfQorICAgICAgICBnX2Fz
c2VydF9ub3RfcmVhY2hlZCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjZW5k
aWYgLy8gVVNFKEdUSzQpCiAKICAgICB2b2lkIGFjdGl2YXRlTWVudUl0ZW0oKQogICAgIHsKICAg
ICAgICAgZ19hc3NlcnRfbm9ubnVsbChtX2l0ZW1Ub0FjdGl2YXRlTGFiZWwpOwotICAgICAgICBh
dXRvKiBtZW51ID0gZ2V0UG9wb3Zlck1lbnUoKTsKKyAgICAgICAgYXV0byogbWVudSA9IGdldENv
bnRleHRNZW51V2lkZ2V0KCk7CiAgICAgICAgIGF1dG8qIGl0ZW0gPSBnZXRNZW51SXRlbShtZW51
LCBtX2l0ZW1Ub0FjdGl2YXRlTGFiZWwpOworI2lmIFVTRShHVEs0KQorICAgICAgICAvLyBHVEs0
IHVzZXMgYSBwb3BvdmVyLCB3aGljaCBjb250YWlucyBidXR0b25zLgogICAgICAgICBndGtfYnV0
dG9uX2NsaWNrZWQoaXRlbSk7CisjZWxzZQorICAgICAgICAvLyBHVEszIHVzZXMgYSBtZW51LCB3
aGljaCBjb250YWlucyBtZW51IGl0ZW1zLgorICAgICAgICBndGtfbWVudV9zaGVsbF9hY3RpdmF0
ZV9pdGVtKEdUS19NRU5VX1NIRUxMKG1lbnUpLCBHVEtfV0lER0VUKGl0ZW0pLCBUUlVFKTsKKyNl
bmRpZiAvLyBVU0UoR1RLNCkKICAgICAgICAgbV9pdGVtVG9BY3RpdmF0ZUxhYmVsID0gbnVsbHB0
cjsKICAgICB9CiAKQEAgLTY0OSw5ICs2ODAsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
dGVzdC0+bV90b2dnbGVkID0gdHJ1ZTsKIAorI2lmIFVTRShHVEs0KQogICAgICAgICAvLyBGb3Ig
dG9nZ2xlIGFjdGlvbnMgdGhlIHBvcG92ZXIgbWVudSBpcyBOT1QgZGlzbWlzc2VkIGF1dG9tYXRp
Y2FsbHksIGFzIHRvIHNob3cgdmlzdWFsIGZlZWRiYWNrIHRvIHRoZSB1c2VyCiAgICAgICAgIC8v
IChpLmUuIHRoZSBjaGVjayBtYXJrZXIpLiBEaXNtaXNzIGl0IGhlcmUgdG8gdHJpZ2dlciBjb250
ZXh0TWVudURpc21pc3NlZENhbGxiYWNrKCkgYW5kIGNvbnRpbnVlIHRoZSB0ZXN0LgogICAgICAg
ICBndGtfcG9wb3Zlcl9wb3Bkb3duKHRlc3QtPmdldFBvcG92ZXJNZW51KCkpOworI2VuZGlmIC8v
IFVTRShHVEs0KQogICAgIH0KIAogICAgIHZvaWQgc2V0QWN0aW9uKEd0a0FjdGlvbiogYWN0aW9u
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399367</attachid>
            <date>2020-05-14 09:20:47 -0700</date>
            <delta_ts>2020-05-15 00:47:13 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-211557-20200514192045.patch</filename>
            <type>text/plain</type>
            <size>19287</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWViNGE2NjAxNDAwM2I0
NmVlMzM0NjY0YjUxNmNmMDdkZDJkYTZkZi4uODk0NzgzYzdhZjQ1YjUxYTE4ZDE0MjM1Mjk3YzI1
ODA2YjQ4Y2FiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA1LTEzICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUSzNd
IEJyaW5nIGJhY2sgdXNhZ2Ugb2YgR3RrTWVudSBmb3IgY29udGV4dCBtZW51cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNTU3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRl
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmg6IFJlbW92ZSBHdGtQ
b3BvdmVyIGZ1bmN0aW9ucyB1c2VkIG9ubHkgZm9yIGNvbnRleHQgbWVudXMuCisKIDIwMjAtMDUt
MTMgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSB1bm5lY2Vzc2FyeSBhc3NlcnQgaW4ge1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGF0dGFjaG1lbnRWaWV3XS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWQ1OTZlODM4ZDMyMjg2ZmI4N2UxMjIyMWNl
NjdlNzFkYzAzMTA5MC4uMWQ5MmJkYmQ3MTUwNWQzNWJkMTliNTYzYzEyZTE1OTM4YzNhMWZiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMC0wNS0xMyAgQWRyaWFuIFBlcmV6IGRlIENh
c3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEszXSBCcmluZyBiYWNrIHVz
YWdlIG9mIEd0a01lbnUgZm9yIGNvbnRleHQgbWVudXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTU1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwOgorICAgICAgICAoY29udGV4dE1lbnVEaXNtaXNzZWQpOiBSZW1vdmVkLgorICAgICAg
ICAod2Via2l0V2ViVmlld1BvcHVsYXRlQ29udGV4dE1lbnUpOiBVc2UgV2ViQ29udGV4dE1lbnVQ
cm94eUd0azo6d2lkZ2V0RGlzbWlzc2VkU2lnbmFsCisgICAgICAgIGFuZCBtb3ZlIHRoZSBjb2Rl
IGZyb20gY29udGV4dE1lbnVEaXNtaXNzZWQoKSBpbnRvIGFuIGlubGluZSBsYW1iZGEuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAo
YWN0aXZlQ29udGV4dE1lbnVDbG9zZWQpOiBSZW1vdmVkLgorICAgICAgICAod2Via2l0V2ViVmll
d0Jhc2VTZXRBY3RpdmVDb250ZXh0TWVudVByb3h5KTogVXNlIFdlYkNvbnRleHRNZW51UHJveHlH
dGs6OndpZGdldERpc21pc3NlZFNpZ25hbAorICAgICAgICBhbmQgbW92ZSB0aGUgY29kZSBmcm9t
IGFjdGl2ZUNvbnRleHRNZW51Q2xvc2VkKCkgaW50byBhbiBpbmxpbmUgbGFtYmRhLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHA6IEFkZCBoZWxwZXIg
ZnVuY3Rpb25zIHRvIG1hbmlwdWxhdGUgdGhlIGFjdHVhbAorICAgICAgICB3aWRnZXQgdXNlZCBm
b3IgY29udGV4dCBtZW51cyBkZXBlbmRpbmcgb24gd2hldGhlciBHVEszIG9yIEdUSzQgaXMgYmVp
bmcgdXNlZC4gVGhlIEdUSzMKKyAgICAgICAgdmVyc2lvbnMgYnJpbmcgYmFjayBiaXRzIG9mIGNv
ZGUgcmVtb3ZlZCBpbiByMjYwODg5LgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVNZW51V2lkZ2V0
KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnBvcHVwTWVudVdpZGdldCk6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0Ojpwb3Bkb3duTWVudVdpZGdldCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjptZW51V2lkZ2V0SGFzSXRlbXMpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6YmluZE1vZGVs
VG9NZW51V2lkZ2V0KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlHdGs6OnBvcHVsYXRlKTogVXNlIGNvbnRleHQgbWVudSB3aWRnZXQgaGVscGVyIGZ1bmN0aW9u
cy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0azo6c2hvd0NvbnRleHRN
ZW51V2l0aEl0ZW1zKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJv
eHlHdGs6OldlYkNvbnRleHRNZW51UHJveHlHdGspOiBEaXR0by4gQWxzbyBoYW5kbGUgdGhlCisg
ICAgICAgIHNpZ25hbCB0cmlnZ2VyZWQgd2hlbiB0aGUgY29udGV4dCBtZW51IGlzIGRpc21pc3Nl
ZCBhbmQgYXJyYW5nZSB0byBjYWxsCisgICAgICAgIHdlYmtpdFdlYlZpZXdDb250ZXh0TWVudURp
c21pc3NlZCgpIGFuZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnRleHRNZW51RGlzbWlzc2VkKCkuCisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlHdGs6On5XZWJDb250ZXh0TWVudVBy
b3h5R3RrKTogVXNlIGhlbHBlciBmdW5jdGlvbnMuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9X
ZWJDb250ZXh0TWVudVByb3h5R3RrLmg6IEFkZCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjp3aWRn
ZXREaXNtaXNzZWRTaWduYWwKKyAgICAgICAgY29uc3RhbnQuCisKIDIwMjAtMDUtMTMgIEthdGUg
Q2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgU0hPVUxEIE5F
VkVSIEJFIFJFQUNIRUQgaW4gV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuaAppbmRleCAwYjhiNmE1Zjk4NzI5MGYyODcxODViY2Y3
YzYwNmE5NThmMjExYTM5Li5iZTU5NmUxOTQxMTMxNzc2YjQzMzJmOWY1YzE3YzYwMGUxZGM3NjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmgKQEAgLTE1
MiwyNiArMTUyLDQgQEAgZ2RrX2V2ZW50X2dldF9rZXljb2RlKGNvbnN0IEdka0V2ZW50KiBldmVu
dCwgZ3VpbnQxNioga2V5Y29kZSkKICAgICByZXR1cm4gVFJVRTsKIH0KIAotc3RhdGljIGlubGlu
ZSBHdGtXaWRnZXQqIGd0a19wb3BvdmVyX21lbnVfbmV3KCkKLXsKLSAgICByZXR1cm4gZ3RrX3Bv
cG92ZXJfbWVudV9uZXdfZnJvbV9tb2RlbChudWxscHRyKTsKLX0KLQotc3RhdGljIGlubGluZSB2
b2lkIGd0a19wb3BvdmVyX2JpbmRfbW9kZWwoR3RrUG9wb3ZlciogcG9wb3ZlciwgR01lbnVNb2Rl
bCogbW9kZWwsIGNvbnN0IGNoYXIqKQotewotICAgIEFTU0VSVChHVEtfSVNfUE9QT1ZFUl9NRU5V
KHBvcG92ZXIpKTsKLSAgICBndGtfcG9wb3Zlcl9tZW51X3NldF9tZW51X21vZGVsKEdUS19QT1BP
VkVSX01FTlUocG9wb3ZlciksIG1vZGVsKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGd0a19w
b3BvdmVyX3NldF9yZWxhdGl2ZV90byhHdGtQb3BvdmVyKiBwb3BvdmVyLCBHdGtXaWRnZXQqIHBh
cmVudCkKLXsKLSAgICBndGtfd2lkZ2V0X3NldF9wYXJlbnQoR1RLX1dJREdFVChwb3BvdmVyKSwg
cGFyZW50KTsKLX0KLQotI2Vsc2UKLQotc3RhdGljIGlubGluZSB2b2lkIGd0a19wb3BvdmVyX3Nl
dF9oYXNfYXJyb3coR3RrUG9wb3ZlciosIGdib29sZWFuKQotewotfQotCiAjZW5kaWYgLy8gVVNF
KEdUSzQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXcuY3BwCmluZGV4IGY1Y2U0NzQ5N2UwZTAzMWEwNDI1YWM5Yzk0MjE0ZTIxNWI1OTFiMDgu
LjRmYzk1Y2ZhYzZmZjczYjAwMjU0ODY3ZmM1YjM4MjkzZjUzOGU4YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yNTkx
LDExICsyNTkxLDYgQEAgdm9pZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEZpbGVDaG9vc2UKIH0KIAogI2lmIFBMQVRGT1JN
KEdUSykKLXN0YXRpYyB2b2lkIGNvbnRleHRNZW51RGlzbWlzc2VkKEd0a1dpZGdldCosIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCi17Ci0gICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxz
W0NPTlRFWFRfTUVOVV9ESVNNSVNTRURdLCAwLCBOVUxMKTsKLX0KLQogdm9pZCB3ZWJraXRXZWJW
aWV3UG9wdWxhdGVDb250ZXh0TWVudShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBWZWN0
b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIHByb3Bvc2VkTWVudSwgY29uc3QgV2ViSGl0VGVz
dFJlc3VsdERhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCBHVmFyaWFudCogdXNlckRhdGEpCiB7CiAg
ICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uo
d2ViVmlldyk7CkBAIC0yNjE3LDcgKzI2MTIsOSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdQb3B1bGF0
ZUNvbnRleHRNZW51KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFZlY3RvcjxXZWJDbwog
ICAgIHdlYmtpdENvbnRleHRNZW51UG9wdWxhdGUoY29udGV4dE1lbnUuZ2V0KCksIGNvbnRleHRN
ZW51SXRlbXMpOwogICAgIGNvbnRleHRNZW51UHJveHktPnBvcHVsYXRlKGNvbnRleHRNZW51SXRl
bXMpOwogCi0gICAgZ19zaWduYWxfY29ubmVjdChjb250ZXh0TWVudVByb3h5LT5ndGtXaWRnZXQo
KSwgImNsb3NlZCIsIEdfQ0FMTEJBQ0soY29udGV4dE1lbnVEaXNtaXNzZWQpLCB3ZWJWaWV3KTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0KGNvbnRleHRNZW51UHJveHktPmd0a1dpZGdldCgpLCBXZWJD
b250ZXh0TWVudVByb3h5R3RrOjp3aWRnZXREaXNtaXNzZWRTaWduYWwsIEdfQ0FMTEJBQ0soK1td
KEd0a1dpZGdldCosIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpIHsKKyAgICAgICAgZ19zaWduYWxf
ZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0NPTlRFWFRfTUVOVV9ESVNNSVNTRURdLCAwLCBOVUxMKTsK
KyAgICB9KSwgd2ViVmlldyk7CiAKICAgICAvLyBDbGVhciB0aGUgbWVudSB0byBtYWtlIHN1cmUg
aXQncyB1c2VsZXNzIGFmdGVyIHNpZ25hbCBlbWlzc2lvbi4KICAgICB3ZWJraXRfY29udGV4dF9t
ZW51X3JlbW92ZV9hbGwoY29udGV4dE1lbnUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCBjM2UzYTZj
NWUyYTNjNWMxMTU3YzRmYWY5YzczNjIxNmI3NDk0MDRhLi45MjVkOGY4Yzc4M2M2MmYyYTgyOTdh
NmRiMzFlOTgzNmQyNjg1NDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMTg2NCwxNiArMTg2NCwxMyBAQCB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmlld1NpemUoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYmtpdFdlYlZpZXdCYXNlLAogICAgICAgICBndGtfd2lkZ2V0X3F1ZXVlX3Jlc2l6ZV9u
b19yZWRyYXcoR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZSkpOwogfQogCi1zdGF0aWMgdm9p
ZCBhY3RpdmVDb250ZXh0TWVudUNsb3NlZChHdGtXaWRnZXQqIHdpZGdldCwgV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYlZpZXdCYXNlKQotewotICAgIGlmICh3ZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZl
Q29udGV4dE1lbnVQcm94eSAmJiB3ZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZlQ29udGV4dE1lbnVQ
cm94eS0+Z3RrV2lkZ2V0KCkgPT0gd2lkZ2V0KQotICAgICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+
YWN0aXZlQ29udGV4dE1lbnVQcm94eSA9IG51bGxwdHI7Ci19Ci0KIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VTZXRBY3RpdmVDb250ZXh0TWVudVByb3h5KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRX
ZWJWaWV3QmFzZSwgV2ViQ29udGV4dE1lbnVQcm94eUd0ayogY29udGV4dE1lbnVQcm94eSkKIHsK
ICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZlQ29udGV4dE1lbnVQcm94eSA9IGNv
bnRleHRNZW51UHJveHk7Ci0gICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QoY29udGV4dE1lbnVQ
cm94eS0+Z3RrV2lkZ2V0KCksICJjbG9zZWQiLCBHX0NBTExCQUNLKGFjdGl2ZUNvbnRleHRNZW51
Q2xvc2VkKSwgd2Via2l0V2ViVmlld0Jhc2UsIHN0YXRpY19jYXN0PEdDb25uZWN0RmxhZ3M+KDAp
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGNvbnRleHRNZW51UHJveHktPmd0a1dpZGdldCgpLCBX
ZWJDb250ZXh0TWVudVByb3h5R3RrOjp3aWRnZXREaXNtaXNzZWRTaWduYWwsIEdfQ0FMTEJBQ0so
K1tdKEd0a1dpZGdldCogd2lkZ2V0LCBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpIHsK
KyAgICAgICAgaWYgKHdlYlZpZXdCYXNlLT5wcml2LT5hY3RpdmVDb250ZXh0TWVudVByb3h5ICYm
IHdlYlZpZXdCYXNlLT5wcml2LT5hY3RpdmVDb250ZXh0TWVudVByb3h5LT5ndGtXaWRnZXQoKSA9
PSB3aWRnZXQpCisgICAgICAgICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZlQ29udGV4dE1l
bnVQcm94eSA9IG51bGxwdHI7CisgICAgfSksIHdlYmtpdFdlYlZpZXdCYXNlKTsKIH0KIAogV2Vi
Q29udGV4dE1lbnVQcm94eUd0ayogd2Via2l0V2ViVmlld0Jhc2VHZXRBY3RpdmVDb250ZXh0TWVu
dVByb3h5KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcApp
bmRleCA5OWQ1ZTkyMmRkMjU0NmM0ZWI3Y2E4YzQzMGJhZjE2NjM4YzFlY2YyLi5lNDgwNjNiZGRk
YTgyYWZiYjYxNTkwOWMwMTcxY2Q2NjZhNDU3OTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwCkBAIC00Nyw2ICs0
Nyw4NCBAQCBzdGF0aWMgY29uc3QgY2hhciogZ0NvbnRleHRNZW51SXRlbUdyb3VwID0gIndlYmtp
dENvbnRleHRNZW51IjsKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKKyNpZiBVU0UoR1RLNCkKK2NvbnN0IGNoYXIqIFdlYkNvbnRleHRNZW51UHJveHlHdGs6
OndpZGdldERpc21pc3NlZFNpZ25hbCA9ICJjbG9zZWQiOworCitzdGF0aWMgR3RrV2lkZ2V0KiBj
cmVhdGVNZW51V2lkZ2V0KEd0a1dpZGdldCogd2ViVmlldykKK3sKKyAgICBhdXRvKiB3aWRnZXQg
PSBndGtfcG9wb3Zlcl9tZW51X25ld19mcm9tX21vZGVsKG51bGxwdHIpOworICAgIGd0a19wb3Bv
dmVyX3NldF9oYXNfYXJyb3coR1RLX1BPUE9WRVIod2lkZ2V0KSwgRkFMU0UpOworICAgIGd0a19w
b3BvdmVyX3NldF9wb3NpdGlvbihHVEtfUE9QT1ZFUih3aWRnZXQpLCBHVEtfUE9TX0JPVFRPTSk7
CisgICAgZ3RrX3dpZGdldF9zZXRfcGFyZW50KHdpZGdldCwgd2ViVmlldyk7CisgICAgcmV0dXJu
IHdpZGdldDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHBvcHVwTWVudVdpZGdldChHdGtXaWRn
ZXQqIHdpZGdldCwgY29uc3QgR2RrRXZlbnQqLCBjb25zdCBHZGtSZWN0YW5nbGUmIHRhcmdldCkK
K3sKKyAgICBndGtfcG9wb3Zlcl9zZXRfcG9pbnRpbmdfdG8oR1RLX1BPUE9WRVIod2lkZ2V0KSwg
JnRhcmdldCk7CisgICAgZ3RrX3BvcG92ZXJfcG9wdXAoR1RLX1BPUE9WRVIod2lkZ2V0KSk7Cit9
CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwb3Bkb3duTWVudVdpZGdldChHdGtXaWRnZXQqIHdpZGdl
dCkKK3sKKyAgICBndGtfcG9wb3Zlcl9wb3Bkb3duKEdUS19QT1BPVkVSKHdpZGdldCkpOworfQor
CitzdGF0aWMgaW5saW5lIGJvb2wgbWVudVdpZGdldEhhc0l0ZW1zKEd0a1dpZGdldCogd2lkZ2V0
KQoreworICAgIHJldHVybiBnX21lbnVfbW9kZWxfZ2V0X25faXRlbXMoZ3RrX3BvcG92ZXJfbWVu
dV9nZXRfbWVudV9tb2RlbChHVEtfUE9QT1ZFUl9NRU5VKHdpZGdldCkpKTsKK30KKworc3RhdGlj
IGlubGluZSB2b2lkIGJpbmRNb2RlbFRvTWVudVdpZGdldChHdGtXaWRnZXQqIHdpZGdldCwgR01l
bnVNb2RlbCogbW9kZWwpCit7CisgICAgZ3RrX3BvcG92ZXJfbWVudV9zZXRfbWVudV9tb2RlbChH
VEtfUE9QT1ZFUl9NRU5VKHdpZGdldCksIG1vZGVsKTsKK30KKyNlbHNlCitjb25zdCBjaGFyKiBX
ZWJDb250ZXh0TWVudVByb3h5R3RrOjp3aWRnZXREaXNtaXNzZWRTaWduYWwgPSAiZGVhY3RpdmF0
ZSI7CisKK3N0YXRpYyBHdGtXaWRnZXQqIGNyZWF0ZU1lbnVXaWRnZXQoR3RrV2lkZ2V0KiB3ZWJW
aWV3KQoreworICAgIGF1dG8qIHdpZGdldCA9IGd0a19tZW51X25ldygpOworICAgIGd0a19tZW51
X2F0dGFjaF90b193aWRnZXQoR1RLX01FTlUod2lkZ2V0KSwgd2ViVmlldywgbnVsbHB0cik7Cisg
ICAgcmV0dXJuIHdpZGdldDsKK30KKworc3RhdGljIHZvaWQgcG9wdXBNZW51V2lkZ2V0KEd0a1dp
ZGdldCogd2lkZ2V0LCBjb25zdCBHZGtFdmVudCogdHJpZ2dlckV2ZW50LCBjb25zdCBHZGtSZWN0
YW5nbGUmIHRhcmdldCkKK3sKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBrZXlFdmVudDsKKyAg
ICBhdXRvKiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3coZ3RrX21lbnVfZ2V0X2F0dGFj
aF93aWRnZXQoR1RLX01FTlUod2lkZ2V0KSkpOworICAgIGlmICghdHJpZ2dlckV2ZW50KSB7Cisg
ICAgICAgIC8vIFdoZW4gdGhlIGNvbnRleHQgbWVudSBpcyByZXF1ZXN0ZWQgdXNpbmcgdGhlIGtl
eWJvYXJkLCB0aGVyZSBpcyBubworICAgICAgICAvLyB0cmlnZ2VyRXZlbnQ6IHVzZSBhIGZha2Ug
ZXZlbnQgZm9yIHRoZSDigJxNZW514oCdIGtleSBiZWluZyByZWxlYXNlZC4KKyAgICAgICAga2V5
RXZlbnQucmVzZXQoZ2RrX2V2ZW50X25ldyhHREtfS0VZX1JFTEVBU0UpKTsKKyAgICAgICAgZ2Rr
X2V2ZW50X3NldF9kZXZpY2Uoa2V5RXZlbnQuZ2V0KCksIGdka19zZWF0X2dldF9rZXlib2FyZChn
ZGtfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0KGdka193aW5kb3dfZ2V0X2Rpc3BsYXkod2luZG93
KSkpKTsKKyAgICAgICAgYXV0byogZXZlbnQgPSByZWludGVycHJldF9jYXN0PEdka0V2ZW50S2V5
Kj4oa2V5RXZlbnQuZ2V0KCkpOworICAgICAgICBldmVudC0+d2luZG93ID0gd2luZG93OworICAg
ICAgICBldmVudC0+dGltZSA9IEdES19DVVJSRU5UX1RJTUU7CisgICAgICAgIGV2ZW50LT5rZXl2
YWwgPSBHREtfS0VZX01lbnU7CisgICAgICAgIHRyaWdnZXJFdmVudCA9IGtleUV2ZW50LmdldCgp
OworICAgIH07CisgICAgZ3RrX21lbnVfcG9wdXBfYXRfcmVjdChHVEtfTUVOVSh3aWRnZXQpLCB3
aW5kb3csICZ0YXJnZXQsIEdES19HUkFWSVRZX1NPVVRIX1dFU1QsIEdES19HUkFWSVRZX05PUlRI
X1dFU1QsIHRyaWdnZXJFdmVudCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwb3Bkb3duTWVu
dVdpZGdldChHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBndGtfbWVudV9wb3Bkb3duKEdUS19N
RU5VKHdpZGdldCkpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgbWVudVdpZGdldEhhc0l0ZW1z
KEd0a1dpZGdldCogd2lkZ2V0KQoreworICAgIHVuc2lnbmVkIGNoaWxkQ291bnQgPSAwOworICAg
IGd0a19jb250YWluZXJfZm9yZWFjaChHVEtfQ09OVEFJTkVSKHdpZGdldCksIFtdKEd0a1dpZGdl
dCosIGdwb2ludGVyIGRhdGEpIHsgKCpzdGF0aWNfY2FzdDx1bnNpZ25lZCo+KGRhdGEpKSsrOyB9
LCAmY2hpbGRDb3VudCk7CisgICAgcmV0dXJuIGNoaWxkQ291bnQgPiAwOworfQorCitzdGF0aWMg
aW5saW5lIHZvaWQgYmluZE1vZGVsVG9NZW51V2lkZ2V0KEd0a1dpZGdldCogd2lkZ2V0LCBHTWVu
dU1vZGVsKiBtb2RlbCkKK3sKKyAgICBndGtfbWVudV9zaGVsbF9iaW5kX21vZGVsKEdUS19NRU5V
X1NIRUxMKHdpZGdldCksIG1vZGVsLCBnQ29udGV4dE1lbnVJdGVtR3JvdXAsIFRSVUUpOworfQor
I2VuZGlmIC8vIFVTRShHVEs0KQorCiBzdGF0aWMgdm9pZCBjb250ZXh0TWVudUl0ZW1BY3RpdmF0
ZWRDYWxsYmFjayhHQWN0aW9uKiBhY3Rpb24sIEdWYXJpYW50KiwgV2ViUGFnZVByb3h5KiBwYWdl
KQogewogICAgIGF1dG8qIHN0YXRlVHlwZSA9IGdfYWN0aW9uX2dldF9zdGF0ZV90eXBlKGFjdGlv
bik7CkBAIC0xMjcsNyArMjA1LDcgQEAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+IFdl
YkNvbnRleHRNZW51UHJveHlHdGs6OnBvcHVsYXRlU3ViTWVudShjb25zdCBXZWIKIHZvaWQgV2Vi
Q29udGV4dE1lbnVQcm94eUd0azo6cG9wdWxhdGUoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbUdsaWI+JiBpdGVtcykKIHsKICAgICBHUmVmUHRyPEdNZW51PiBtZW51ID0gYnVpbGRNZW51
KGl0ZW1zKTsKLSAgICBndGtfcG9wb3Zlcl9iaW5kX21vZGVsKG1fbWVudSwgR19NRU5VX01PREVM
KG1lbnUuZ2V0KCkpLCBnQ29udGV4dE1lbnVJdGVtR3JvdXApOworICAgIGJpbmRNb2RlbFRvTWVu
dVdpZGdldChtX21lbnUsIEdfTUVOVV9NT0RFTChtZW51LmdldCgpKSk7CiB9CiAKIHZvaWQgV2Vi
Q29udGV4dE1lbnVQcm94eUd0azo6cG9wdWxhdGUoY29uc3QgVmVjdG9yPFJlZjxXZWJDb250ZXh0
TWVudUl0ZW0+PiYgaXRlbXMpCkBAIC0xNTUsNyArMjMzLDcgQEAgdm9pZCBXZWJDb250ZXh0TWVu
dVByb3h5R3RrOjpwb3B1bGF0ZShjb25zdCBWZWN0b3I8UmVmPFdlYkNvbnRleHRNZW51SXRlbT4+
JiBpdGUKICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGd0a19wb3BvdmVyX2JpbmRf
bW9kZWwobV9tZW51LCBHX01FTlVfTU9ERUwobWVudS5nZXQoKSksIGdDb250ZXh0TWVudUl0ZW1H
cm91cCk7CisgICAgYmluZE1vZGVsVG9NZW51V2lkZ2V0KG1fbWVudSwgR19NRU5VX01PREVMKG1l
bnUuZ2V0KCkpKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpzaG93KCkKQEAg
LTE3NCwzOSArMjUyLDM1IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUd0azo6c2hvd0NvbnRl
eHRNZW51V2l0aEl0ZW1zKFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJCiAgICAgaWYgKCFpdGVt
cy5pc0VtcHR5KCkpCiAgICAgICAgIHBvcHVsYXRlKGl0ZW1zKTsKIAotICAgIHVuc2lnbmVkIGNo
aWxkQ291bnQgPSAwOwotICAgIGd0a19jb250YWluZXJfZm9yZWFjaChHVEtfQ09OVEFJTkVSKG1f
bWVudSksIFtdKEd0a1dpZGdldCosIGdwb2ludGVyIGRhdGEpIHsgKCpzdGF0aWNfY2FzdDx1bnNp
Z25lZCo+KGRhdGEpKSsrOyB9LCAmY2hpbGRDb3VudCk7Ci0gICAgaWYgKCFjaGlsZENvdW50KQor
ICAgIGlmICghbWVudVdpZGdldEhhc0l0ZW1zKG1fbWVudSkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBtX3BhZ2UtPmN1cnJlbnRseVBy
b2Nlc3NlZE1vdXNlRG93bkV2ZW50KCk7CisgICAgY29uc3QgR2RrRXZlbnQqIGV2ZW50ID0gbW91
c2VFdmVudCA/IG1vdXNlRXZlbnQtPm5hdGl2ZUV2ZW50KCkgOiBudWxscHRyOwogICAgIGNvbnN0
IEdka1JlY3RhbmdsZSByZWN0ID0geyBtX2NvbnRleHQubWVudUxvY2F0aW9uKCkueCgpLCBtX2Nv
bnRleHQubWVudUxvY2F0aW9uKCkueSgpLCAxLCAxIH07Ci0gICAgZ3RrX3BvcG92ZXJfc2V0X3Bv
aW50aW5nX3RvKG1fbWVudSwgJnJlY3QpOwotICAgIGd0a19wb3BvdmVyX3BvcHVwKG1fbWVudSk7
CisgICAgcG9wdXBNZW51V2lkZ2V0KG1fbWVudSwgZXZlbnQsIHJlY3QpOwogfQogCiBXZWJDb250
ZXh0TWVudVByb3h5R3RrOjpXZWJDb250ZXh0TWVudVByb3h5R3RrKEd0a1dpZGdldCogd2ViVmll
dywgV2ViUGFnZVByb3h5JiBwYWdlLCBDb250ZXh0TWVudUNvbnRleHREYXRhJiYgY29udGV4dCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogICAgIDogV2ViQ29udGV4dE1lbnVQcm94eShXVEZN
b3ZlKGNvbnRleHQpLCB1c2VyRGF0YSkKICAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQogICAgICwg
bV9wYWdlKCZwYWdlKQotICAgICwgbV9tZW51KEdUS19QT1BPVkVSKGd0a19wb3BvdmVyX21lbnVf
bmV3KCkpKQorICAgICwgbV9tZW51KGNyZWF0ZU1lbnVXaWRnZXQobV93ZWJWaWV3KSkKIHsKLSAg
ICBndGtfcG9wb3Zlcl9zZXRfaGFzX2Fycm93KG1fbWVudSwgRkFMU0UpOwotICAgIGd0a19wb3Bv
dmVyX3NldF9wb3NpdGlvbihtX21lbnUsIEdUS19QT1NfQk9UVE9NKTsKLSAgICBndGtfcG9wb3Zl
cl9zZXRfcmVsYXRpdmVfdG8obV9tZW51LCBtX3dlYlZpZXcpOwogICAgIGd0a193aWRnZXRfaW5z
ZXJ0X2FjdGlvbl9ncm91cChHVEtfV0lER0VUKG1fbWVudSksIGdDb250ZXh0TWVudUl0ZW1Hcm91
cCwgR19BQ1RJT05fR1JPVVAobV9hY3Rpb25Hcm91cC5nZXQoKSkpOwogICAgIHdlYmtpdFdlYlZp
ZXdCYXNlU2V0QWN0aXZlQ29udGV4dE1lbnVQcm94eShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3dl
YlZpZXcpLCB0aGlzKTsKIH0KIAogV2ViQ29udGV4dE1lbnVQcm94eUd0azo6fldlYkNvbnRleHRN
ZW51UHJveHlHdGsoKQogewotICAgIGd0a19wb3BvdmVyX3BvcGRvd24obV9tZW51KTsKKyAgICBw
b3Bkb3duTWVudVdpZGdldChtX21lbnUpOwogCiAgICAgZm9yIChhdXRvJiBoYW5kbGVyIDogbV9z
aWduYWxIYW5kbGVycykKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KGhhbmRs
ZXIudmFsdWUsIGhhbmRsZXIua2V5KTsKICAgICBtX3NpZ25hbEhhbmRsZXJzLmNsZWFyKCk7CiAK
ICAgICBndGtfd2lkZ2V0X2luc2VydF9hY3Rpb25fZ3JvdXAoR1RLX1dJREdFVChtX21lbnUpLCBn
Q29udGV4dE1lbnVJdGVtR3JvdXAsIG51bGxwdHIpOwotICAgIGd0a193aWRnZXRfZGVzdHJveShH
VEtfV0lER0VUKG1fbWVudSkpOworICAgIGd0a193aWRnZXRfZGVzdHJveShtX21lbnUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oCmluZGV4IGVlMzMwNjVjOGIyYzZlODdkYWFk
NDY0NGU0NDRiMzQzZDIzMWQ3OGIuLmVhNDhkYmFkODM0YzkxNzI5Yzk0Yjc1MjhiMzJmZjA5NTE1
ZTlhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0
TWVudVByb3h5R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRl
eHRNZW51UHJveHlHdGsuaApAQCAtNTEsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgfldlYkNvbnRl
eHRNZW51UHJveHlHdGsoKTsKIAogICAgIHZvaWQgcG9wdWxhdGUoY29uc3QgVmVjdG9yPFdlYkNv
bnRleHRNZW51SXRlbUdsaWI+Jik7Ci0gICAgR3RrV2lkZ2V0KiBndGtXaWRnZXQoKSBjb25zdCB7
IHJldHVybiBHVEtfV0lER0VUKG1fbWVudSk7IH0KKyAgICBHdGtXaWRnZXQqIGd0a1dpZGdldCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVudTsgfQorICAgIHN0YXRpYyBjb25zdCBjaGFyKiB3aWRnZXRE
aXNtaXNzZWRTaWduYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29udGV4dE1lbnVQcm94eUd0ayhH
dGtXaWRnZXQqLCBXZWJQYWdlUHJveHkmLCBDb250ZXh0TWVudUNvbnRleHREYXRhJiYsIGNvbnN0
IFVzZXJEYXRhJik7CkBAIC02NCw3ICs2NSw3IEBAIHByaXZhdGU6CiAKICAgICBHdGtXaWRnZXQq
IG1fd2ViVmlldzsKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKLSAgICBHdGtQb3BvdmVyKiBt
X21lbnU7CisgICAgR3RrV2lkZ2V0KiBtX21lbnU7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25n
LCB2b2lkKj4gbV9zaWduYWxIYW5kbGVyczsKICAgICBHUmVmUHRyPEdTaW1wbGVBY3Rpb25Hcm91
cD4gbV9hY3Rpb25Hcm91cCB7IGFkb3B0R1JlZihnX3NpbXBsZV9hY3Rpb25fZ3JvdXBfbmV3KCkp
IH07CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDg1M2JjMGVhZDYzZTgwNTBlNjhlYjIwNWUwZTczNTRkZGQ2MjQ5YzEuLjI2NjU5N2I5ZGYx
NmEzYTYyOWZmNzFiZGYzZTdiOGY2YjEzMmEzOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNS0xMyAgQWRy
aWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEsz
XSBCcmluZyBiYWNrIHVzYWdlIG9mIEd0a01lbnUgZm9yIGNvbnRleHQgbWVudXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTU1NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcDogQWRkIHByZXByb2Nlc3NvciBjb25k
aXRpb25hbHMKKyAgICAgICAgZm9yIEdUSzQgYW5kIGJyaW5nIGJhY2sgc29tZSBiaXRzIHByZXZp
b3VzbHkgcmVtb3ZlZCBpbiByMjYwODg5IGZvciBHVEszLgorCiAyMDIwLTA1LTEzICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgaXNOdWxsRnVuY3Rp
b25Qb2ludGVyIHdpdGggcmVhbCB3ZWFrLWxpbmtpbmcgc3VwcG9ydApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RDb250ZXh0TWVudS5jcHAKaW5k
ZXggYWE4MGUwZmFjODFkYmE1YzQzMmY5YTE5NzhlNTQ1OTljYjlhYjlkNC4uYWQ1NDJlM2IyYzEx
OWNiODYwNmQ2MTZiOTFhMzU1MzA3YTMxNjU2OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0Q29udGV4dE1lbnUuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAKIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOwogCisjaWYgVVNFKEdU
SzQpCiBzdHJ1Y3QgTG9va3VwV2lkZ2V0c0RhdGEgewogICAgIHZvaWQgKCp3YWxrQ2hpbGRyZW4p
KEd0a0NvbnRhaW5lciosIEd0a0NhbGxiYWNrLCB2b2lkKik7CiAgICAgRnVuY3Rpb248Ym9vbChH
dGtXaWRnZXQqKT4gcHJlZGljYXRlOwpAQCAtNDcsNiArNDgsNyBAQCBzdGF0aWMgVmVjdG9yPEd0
a1dpZGdldCo+IGxvb2t1cFdpZGdldHMoR3RrV2lkZ2V0KiB3aWRnZXQsIEZ1bmN0aW9uPGJvb2wo
R3RrV2lkZwogICAgIGxvb2t1cFdpZGdldHNXYWxrQ2hpbGQod2lkZ2V0LCAmZGF0YSk7CiAgICAg
cmV0dXJuIFdURk1vdmUoZGF0YS5yZXN1bHQpOwogfQorI2VuZGlmIC8vIFVTRShHVEs0KQogCiBj
bGFzcyBDb250ZXh0TWVudVRlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6CkBAIC0x
MTYsMTMgKzExOCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHF1aXRNYWluTG9vcCgpOwogICAgIH0K
IAotICAgIEd0a1BvcG92ZXIqIGdldFBvcG92ZXJNZW51KCkKKyAgICBHdGtXaWRnZXQqIGdldENv
bnRleHRNZW51V2lkZ2V0KCkKICAgICB7CiAgICAgICAgIEdVbmlxdWVQdHI8R0xpc3Q+IHRvcGxl
dmVscyhndGtfd2luZG93X2xpc3RfdG9wbGV2ZWxzKCkpOwogICAgICAgICBmb3IgKEdMaXN0KiBp
dGVyID0gdG9wbGV2ZWxzLmdldCgpOyBpdGVyOyBpdGVyID0gZ19saXN0X25leHQoaXRlcikpIHsK
ICAgICAgICAgICAgIGlmICghR1RLX0lTX1dJTkRPVyhpdGVyLT5kYXRhKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAorI2lmIFVTRShHVEs0KQogICAgICAgICAgICAgLy8gUG9wb3ZlcnMg
YXJlIGludGVybmFsIHRvIHRoZSBHdGtDb250YWluZXIgd2hlcmUgdGhlIHdlYnZpZXcgcmVzaWRl
cywKICAgICAgICAgICAgIC8vIGd0a19jb250YWluZXJfZm9yYWxsKCkgaXMgdGhlIG9ubHkgd2F5
IHRvIGVudW1lcmF0ZSBpbnRlcm5hbCBjaGlsZHJlbi4KICAgICAgICAgICAgIEd0a1BvcG92ZXIg
KnBvcG92ZXIgPSBudWxscHRyOwpAQCAtMTM1LDYgKzEzOCwxNCBAQCBwdWJsaWM6CiAKICAgICAg
ICAgICAgIGlmIChwb3BvdmVyICYmIGd0a19wb3BvdmVyX2dldF9yZWxhdGl2ZV90byhwb3BvdmVy
KSA9PSBHVEtfV0lER0VUKG1fd2ViVmlldykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBvcG92
ZXI7CisjZWxzZQorICAgICAgICAgICAgR3RrV2lkZ2V0KiBjaGlsZCA9IGd0a19iaW5fZ2V0X2No
aWxkKEdUS19CSU4oaXRlci0+ZGF0YSkpOworICAgICAgICAgICAgaWYgKCFHVEtfSVNfTUVOVShj
aGlsZCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChndGtf
bWVudV9nZXRfYXR0YWNoX3dpZGdldChHVEtfTUVOVShjaGlsZCkpID09IEdUS19XSURHRVQobV93
ZWJWaWV3KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7CisjZW5kaWYgLy8gVVNFKEdU
SzQpCiAgICAgICAgIH0KICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKICAgICAgICAg
cmV0dXJuIDA7CkBAIC01NzksOSArNTkwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIEd0a0J1dHRvbiogZ2V0TWVudUl0ZW0oR3RrUG9wb3ZlciogcG9w
b3ZlciwgY29uc3QgZ2NoYXIqIGl0ZW1MYWJlbCkKKyNpZiBVU0UoR1RLNCkKKyAgICBHdGtCdXR0
b24qIGdldE1lbnVJdGVtKEd0a1dpZGdldCogcG9wb3ZlciwgY29uc3QgZ2NoYXIqIGl0ZW1MYWJl
bCkKICAgICB7Ci0gICAgICAgIGF1dG8gaXRlbXMgPSBsb29rdXBXaWRnZXRzKEdUS19XSURHRVQo
cG9wb3ZlciksCisgICAgICAgIGF1dG8gaXRlbXMgPSBsb29rdXBXaWRnZXRzKHBvcG92ZXIsCiAg
ICAgICAgICAgICBbaXRlbUxhYmVsXShHdGtXaWRnZXQqIHdpZGdldCkgewogICAgICAgICAgICAg
ICAgIGlmICghR1RLX0lTX0JVVFRPTih3aWRnZXQpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC01OTgsMTMgKzYxMCwzMiBAQCBwdWJsaWM6CiAgICAgICAgIGdfYXNzZXJ0
X2NtcHVpbnQoaXRlbXMuc2l6ZSgpLCA+LCAwKTsKICAgICAgICAgcmV0dXJuIGl0ZW1zLnNpemUo
KSA/IEdUS19CVVRUT04oaXRlbXNbMF0pIDogbnVsbHB0cjsKICAgICB9CisjZWxzZQorICAgIEd0
a01lbnVJdGVtKiBnZXRNZW51SXRlbShHdGtXaWRnZXQqIG1lbnUsIGNvbnN0IGdjaGFyKiBpdGVt
TGFiZWwpCisgICAgeworICAgICAgICBHVW5pcXVlUHRyPEdMaXN0PiBpdGVtcyhndGtfY29udGFp
bmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CisgICAgICAgIGZvciAoR0xp
c3QqIGl0ZXIgPSBpdGVtcy5nZXQoKTsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0KGl0ZXIpKSB7
CisgICAgICAgICAgICBHdGtNZW51SXRlbSogY2hpbGQgPSBHVEtfTUVOVV9JVEVNKGl0ZXItPmRh
dGEpOworICAgICAgICAgICAgaWYgKGdfc3RyX2VxdWFsKGl0ZW1MYWJlbCwgZ3RrX21lbnVfaXRl
bV9nZXRfbGFiZWwoY2hpbGQpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAg
ICAgIH0KKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorI2VuZGlmIC8vIFVTRShHVEs0KQogCiAgICAgdm9pZCBhY3RpdmF0ZU1l
bnVJdGVtKCkKICAgICB7CiAgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9pdGVtVG9BY3RpdmF0
ZUxhYmVsKTsKLSAgICAgICAgYXV0byogbWVudSA9IGdldFBvcG92ZXJNZW51KCk7CisgICAgICAg
IGF1dG8qIG1lbnUgPSBnZXRDb250ZXh0TWVudVdpZGdldCgpOwogICAgICAgICBhdXRvKiBpdGVt
ID0gZ2V0TWVudUl0ZW0obWVudSwgbV9pdGVtVG9BY3RpdmF0ZUxhYmVsKTsKKyNpZiBVU0UoR1RL
NCkKKyAgICAgICAgLy8gR1RLNCB1c2VzIGEgcG9wb3Zlciwgd2hpY2ggY29udGFpbnMgYnV0dG9u
cy4KICAgICAgICAgZ3RrX2J1dHRvbl9jbGlja2VkKGl0ZW0pOworI2Vsc2UKKyAgICAgICAgLy8g
R1RLMyB1c2VzIGEgbWVudSwgd2hpY2ggY29udGFpbnMgbWVudSBpdGVtcy4KKyAgICAgICAgZ3Rr
X21lbnVfc2hlbGxfYWN0aXZhdGVfaXRlbShHVEtfTUVOVV9TSEVMTChtZW51KSwgR1RLX1dJREdF
VChpdGVtKSwgVFJVRSk7CisjZW5kaWYgLy8gVVNFKEdUSzQpCiAgICAgICAgIG1faXRlbVRvQWN0
aXZhdGVMYWJlbCA9IG51bGxwdHI7CiAgICAgfQogCkBAIC02NDksOSArNjgwLDExIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHRlc3QtPm1fdG9nZ2xlZCA9IHRydWU7CiAKKyNpZiBVU0UoR1RL
NCkKICAgICAgICAgLy8gRm9yIHRvZ2dsZSBhY3Rpb25zIHRoZSBwb3BvdmVyIG1lbnUgaXMgTk9U
IGRpc21pc3NlZCBhdXRvbWF0aWNhbGx5LCBhcyB0byBzaG93IHZpc3VhbCBmZWVkYmFjayB0byB0
aGUgdXNlcgogICAgICAgICAvLyAoaS5lLiB0aGUgY2hlY2sgbWFya2VyKS4gRGlzbWlzcyBpdCBo
ZXJlIHRvIHRyaWdnZXIgY29udGV4dE1lbnVEaXNtaXNzZWRDYWxsYmFjaygpIGFuZCBjb250aW51
ZSB0aGUgdGVzdC4KICAgICAgICAgZ3RrX3BvcG92ZXJfcG9wZG93bih0ZXN0LT5nZXRQb3BvdmVy
TWVudSgpKTsKKyNlbmRpZiAvLyBVU0UoR1RLNCkKICAgICB9CiAKICAgICB2b2lkIHNldEFjdGlv
bihHdGtBY3Rpb24qIGFjdGlvbikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399461</attachid>
            <date>2020-05-15 00:47:18 -0700</date>
            <delta_ts>2020-05-15 01:27:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211557-20200515104717.patch</filename>
            <type>text/plain</type>
            <size>19308</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWViNGE2NjAxNDAwM2I0
NmVlMzM0NjY0YjUxNmNmMDdkZDJkYTZkZi4uMDAxMGU4Mzg4ZjgwNjI0NTI1OTk4OTFjNTEwNmUw
MGI4NGQzMGY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA1LTEzICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUSzNd
IEJyaW5nIGJhY2sgdXNhZ2Ugb2YgR3RrTWVudSBmb3IgY29udGV4dCBtZW51cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNTU3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IG5lZWRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmg6IFJlbW92
ZSBHdGtQb3BvdmVyIGZ1bmN0aW9ucyB1c2VkIG9ubHkgZm9yIGNvbnRleHQgbWVudXMuCisKIDIw
MjAtMDUtMTMgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBhc3NlcnQgaW4ge1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIGF0dGFjaG1lbnRWaWV3XS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWQ1OTZlODM4ZDMyMjg2ZmI4N2Ux
MjIyMWNlNjdlNzFkYzAzMTA5MC4uNTQxNjEzMWNlNzU5Y2M0YzVmZjU3Njc3YmFlNmUzNWRkN2Jl
YTViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMC0wNS0xMyAgQWRyaWFuIFBlcmV6
IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEszXSBCcmluZyBi
YWNrIHVzYWdlIG9mIEd0a01lbnUgZm9yIGNvbnRleHQgbWVudXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTU1NworCisgICAgICAgIFJldmlld2Vk
IGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoY29udGV4dE1lbnVEaXNtaXNzZWQpOiBSZW1v
dmVkLgorICAgICAgICAod2Via2l0V2ViVmlld1BvcHVsYXRlQ29udGV4dE1lbnUpOiBVc2UgV2Vi
Q29udGV4dE1lbnVQcm94eUd0azo6d2lkZ2V0RGlzbWlzc2VkU2lnbmFsCisgICAgICAgIGFuZCBt
b3ZlIHRoZSBjb2RlIGZyb20gY29udGV4dE1lbnVEaXNtaXNzZWQoKSBpbnRvIGFuIGlubGluZSBs
YW1iZGEuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
OgorICAgICAgICAoYWN0aXZlQ29udGV4dE1lbnVDbG9zZWQpOiBSZW1vdmVkLgorICAgICAgICAo
d2Via2l0V2ViVmlld0Jhc2VTZXRBY3RpdmVDb250ZXh0TWVudVByb3h5KTogVXNlIFdlYkNvbnRl
eHRNZW51UHJveHlHdGs6OndpZGdldERpc21pc3NlZFNpZ25hbAorICAgICAgICBhbmQgbW92ZSB0
aGUgY29kZSBmcm9tIGFjdGl2ZUNvbnRleHRNZW51Q2xvc2VkKCkgaW50byBhbiBpbmxpbmUgbGFt
YmRhLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHA6
IEFkZCBoZWxwZXIgZnVuY3Rpb25zIHRvIG1hbmlwdWxhdGUgdGhlIGFjdHVhbAorICAgICAgICB3
aWRnZXQgdXNlZCBmb3IgY29udGV4dCBtZW51cyBkZXBlbmRpbmcgb24gd2hldGhlciBHVEszIG9y
IEdUSzQgaXMgYmVpbmcgdXNlZC4gVGhlIEdUSzMKKyAgICAgICAgdmVyc2lvbnMgYnJpbmcgYmFj
ayBiaXRzIG9mIGNvZGUgcmVtb3ZlZCBpbiByMjYwODg5LgorICAgICAgICAoV2ViS2l0OjpjcmVh
dGVNZW51V2lkZ2V0KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnBvcHVwTWVudVdpZGdldCk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojpwb3Bkb3duTWVudVdpZGdldCk6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjptZW51V2lkZ2V0SGFzSXRlbXMpOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6YmluZE1vZGVsVG9NZW51V2lkZ2V0KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHRNZW51UHJveHlHdGs6OnBvcHVsYXRlKTogVXNlIGNvbnRleHQgbWVudSB3aWRnZXQgaGVs
cGVyIGZ1bmN0aW9ucy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0azo6
c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHRNZW51UHJveHlHdGs6OldlYkNvbnRleHRNZW51UHJveHlHdGspOiBEaXR0by4gQWxzbyBo
YW5kbGUgdGhlCisgICAgICAgIHNpZ25hbCB0cmlnZ2VyZWQgd2hlbiB0aGUgY29udGV4dCBtZW51
IGlzIGRpc21pc3NlZCBhbmQgYXJyYW5nZSB0byBjYWxsCisgICAgICAgIHdlYmtpdFdlYlZpZXdD
b250ZXh0TWVudURpc21pc3NlZCgpIGFuZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnRleHRNZW51RGlz
bWlzc2VkKCkuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlHdGs6On5XZWJD
b250ZXh0TWVudVByb3h5R3RrKTogVXNlIGhlbHBlciBmdW5jdGlvbnMuCisgICAgICAgICogVUlQ
cm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmg6IEFkZCBXZWJDb250ZXh0TWVudVBy
b3h5R3RrOjp3aWRnZXREaXNtaXNzZWRTaWduYWwKKyAgICAgICAgY29uc3RhbnQuCisKIDIwMjAt
MDUtMTMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAg
ICAgU0hPVUxEIE5FVkVSIEJFIFJFQUNIRUQgaW4gV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6b3BlbkFuZFVwZGF0ZVNjaGVtYUlmTmVjZXNzYXJ5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuaAppbmRleCAwYjhiNmE1Zjk4NzI5
MGYyODcxODViY2Y3YzYwNmE5NThmMjExYTM5Li5iZTU5NmUxOTQxMTMxNzc2YjQzMzJmOWY1YzE3
YzYwMGUxZGM3NjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
VmVyc2lvbmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9u
aW5nLmgKQEAgLTE1MiwyNiArMTUyLDQgQEAgZ2RrX2V2ZW50X2dldF9rZXljb2RlKGNvbnN0IEdk
a0V2ZW50KiBldmVudCwgZ3VpbnQxNioga2V5Y29kZSkKICAgICByZXR1cm4gVFJVRTsKIH0KIAot
c3RhdGljIGlubGluZSBHdGtXaWRnZXQqIGd0a19wb3BvdmVyX21lbnVfbmV3KCkKLXsKLSAgICBy
ZXR1cm4gZ3RrX3BvcG92ZXJfbWVudV9uZXdfZnJvbV9tb2RlbChudWxscHRyKTsKLX0KLQotc3Rh
dGljIGlubGluZSB2b2lkIGd0a19wb3BvdmVyX2JpbmRfbW9kZWwoR3RrUG9wb3ZlciogcG9wb3Zl
ciwgR01lbnVNb2RlbCogbW9kZWwsIGNvbnN0IGNoYXIqKQotewotICAgIEFTU0VSVChHVEtfSVNf
UE9QT1ZFUl9NRU5VKHBvcG92ZXIpKTsKLSAgICBndGtfcG9wb3Zlcl9tZW51X3NldF9tZW51X21v
ZGVsKEdUS19QT1BPVkVSX01FTlUocG9wb3ZlciksIG1vZGVsKTsKLX0KLQotc3RhdGljIGlubGlu
ZSB2b2lkIGd0a19wb3BvdmVyX3NldF9yZWxhdGl2ZV90byhHdGtQb3BvdmVyKiBwb3BvdmVyLCBH
dGtXaWRnZXQqIHBhcmVudCkKLXsKLSAgICBndGtfd2lkZ2V0X3NldF9wYXJlbnQoR1RLX1dJREdF
VChwb3BvdmVyKSwgcGFyZW50KTsKLX0KLQotI2Vsc2UKLQotc3RhdGljIGlubGluZSB2b2lkIGd0
a19wb3BvdmVyX3NldF9oYXNfYXJyb3coR3RrUG9wb3ZlciosIGdib29sZWFuKQotewotfQotCiAj
ZW5kaWYgLy8gVVNFKEdUSzQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGY1Y2U0NzQ5N2UwZTAzMWEwNDI1YWM5Yzk0MjE0
ZTIxNWI1OTFiMDguLjc5OTkyMTI0MGUxNmMxMDUxMjNlMmY5OGUzYWM4NGUyMDZjZTg4NmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwCkBAIC0yNTkxLDExICsyNTkxLDYgQEAgdm9pZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29z
ZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEZpbGVDaG9vc2UKIH0KIAog
I2lmIFBMQVRGT1JNKEdUSykKLXN0YXRpYyB2b2lkIGNvbnRleHRNZW51RGlzbWlzc2VkKEd0a1dp
ZGdldCosIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCi17Ci0gICAgZ19zaWduYWxfZW1pdCh3ZWJW
aWV3LCBzaWduYWxzW0NPTlRFWFRfTUVOVV9ESVNNSVNTRURdLCAwLCBOVUxMKTsKLX0KLQogdm9p
ZCB3ZWJraXRXZWJWaWV3UG9wdWxhdGVDb250ZXh0TWVudShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIHByb3Bvc2VkTWVudSwgY29u
c3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCBHVmFyaWFudCogdXNl
ckRhdGEpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dF
Ql9WSUVXX0JBU0Uod2ViVmlldyk7CkBAIC0yNjE3LDcgKzI2MTIsOSBAQCB2b2lkIHdlYmtpdFdl
YlZpZXdQb3B1bGF0ZUNvbnRleHRNZW51KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFZl
Y3RvcjxXZWJDbwogICAgIHdlYmtpdENvbnRleHRNZW51UG9wdWxhdGUoY29udGV4dE1lbnUuZ2V0
KCksIGNvbnRleHRNZW51SXRlbXMpOwogICAgIGNvbnRleHRNZW51UHJveHktPnBvcHVsYXRlKGNv
bnRleHRNZW51SXRlbXMpOwogCi0gICAgZ19zaWduYWxfY29ubmVjdChjb250ZXh0TWVudVByb3h5
LT5ndGtXaWRnZXQoKSwgImNsb3NlZCIsIEdfQ0FMTEJBQ0soY29udGV4dE1lbnVEaXNtaXNzZWQp
LCB3ZWJWaWV3KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGNvbnRleHRNZW51UHJveHktPmd0a1dp
ZGdldCgpLCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjp3aWRnZXREaXNtaXNzZWRTaWduYWwsIEdf
Q0FMTEJBQ0soK1tdKEd0a1dpZGdldCosIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpIHsKKyAgICAg
ICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0NPTlRFWFRfTUVOVV9ESVNNSVNTRURd
LCAwLCBudWxscHRyKTsKKyAgICB9KSwgd2ViVmlldyk7CiAKICAgICAvLyBDbGVhciB0aGUgbWVu
dSB0byBtYWtlIHN1cmUgaXQncyB1c2VsZXNzIGFmdGVyIHNpZ25hbCBlbWlzc2lvbi4KICAgICB3
ZWJraXRfY29udGV4dF9tZW51X3JlbW92ZV9hbGwoY29udGV4dE1lbnUuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAppbmRleCBjM2UzYTZjNWUyYTNjNWMxMTU3YzRmYWY5YzczNjIxNmI3NDk0MDRhLi45MjVkOGY4
Yzc4M2M2MmYyYTgyOTdhNmRiMzFlOTgzNmQyNjg1NDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMTg2NCwx
NiArMTg2NCwxMyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmlld1NpemUo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLAogICAgICAgICBndGtfd2lkZ2V0
X3F1ZXVlX3Jlc2l6ZV9ub19yZWRyYXcoR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZSkpOwog
fQogCi1zdGF0aWMgdm9pZCBhY3RpdmVDb250ZXh0TWVudUNsb3NlZChHdGtXaWRnZXQqIHdpZGdl
dCwgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQotewotICAgIGlmICh3ZWJWaWV3QmFz
ZS0+cHJpdi0+YWN0aXZlQ29udGV4dE1lbnVQcm94eSAmJiB3ZWJWaWV3QmFzZS0+cHJpdi0+YWN0
aXZlQ29udGV4dE1lbnVQcm94eS0+Z3RrV2lkZ2V0KCkgPT0gd2lkZ2V0KQotICAgICAgICB3ZWJW
aWV3QmFzZS0+cHJpdi0+YWN0aXZlQ29udGV4dE1lbnVQcm94eSA9IG51bGxwdHI7Ci19Ci0KIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VTZXRBY3RpdmVDb250ZXh0TWVudVByb3h5KFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgV2ViQ29udGV4dE1lbnVQcm94eUd0ayogY29udGV4
dE1lbnVQcm94eSkKIHsKICAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZlQ29udGV4
dE1lbnVQcm94eSA9IGNvbnRleHRNZW51UHJveHk7Ci0gICAgZ19zaWduYWxfY29ubmVjdF9vYmpl
Y3QoY29udGV4dE1lbnVQcm94eS0+Z3RrV2lkZ2V0KCksICJjbG9zZWQiLCBHX0NBTExCQUNLKGFj
dGl2ZUNvbnRleHRNZW51Q2xvc2VkKSwgd2Via2l0V2ViVmlld0Jhc2UsIHN0YXRpY19jYXN0PEdD
b25uZWN0RmxhZ3M+KDApKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGNvbnRleHRNZW51UHJveHkt
Pmd0a1dpZGdldCgpLCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjp3aWRnZXREaXNtaXNzZWRTaWdu
YWwsIEdfQ0FMTEJBQ0soK1tdKEd0a1dpZGdldCogd2lkZ2V0LCBXZWJLaXRXZWJWaWV3QmFzZSog
d2ViVmlld0Jhc2UpIHsKKyAgICAgICAgaWYgKHdlYlZpZXdCYXNlLT5wcml2LT5hY3RpdmVDb250
ZXh0TWVudVByb3h5ICYmIHdlYlZpZXdCYXNlLT5wcml2LT5hY3RpdmVDb250ZXh0TWVudVByb3h5
LT5ndGtXaWRnZXQoKSA9PSB3aWRnZXQpCisgICAgICAgICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+
YWN0aXZlQ29udGV4dE1lbnVQcm94eSA9IG51bGxwdHI7CisgICAgfSksIHdlYmtpdFdlYlZpZXdC
YXNlKTsKIH0KIAogV2ViQ29udGV4dE1lbnVQcm94eUd0ayogd2Via2l0V2ViVmlld0Jhc2VHZXRB
Y3RpdmVDb250ZXh0TWVudVByb3h5KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVu
dVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVu
dVByb3h5R3RrLmNwcAppbmRleCA5OWQ1ZTkyMmRkMjU0NmM0ZWI3Y2E4YzQzMGJhZjE2NjM4YzFl
Y2YyLi5lNDgwNjNiZGRkYTgyYWZiYjYxNTkwOWMwMTcxY2Q2NjZhNDU3OTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsu
Y3BwCkBAIC00Nyw2ICs0Nyw4NCBAQCBzdGF0aWMgY29uc3QgY2hhciogZ0NvbnRleHRNZW51SXRl
bUdyb3VwID0gIndlYmtpdENvbnRleHRNZW51IjsKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKKyNpZiBVU0UoR1RLNCkKK2NvbnN0IGNoYXIqIFdlYkNvbnRl
eHRNZW51UHJveHlHdGs6OndpZGdldERpc21pc3NlZFNpZ25hbCA9ICJjbG9zZWQiOworCitzdGF0
aWMgR3RrV2lkZ2V0KiBjcmVhdGVNZW51V2lkZ2V0KEd0a1dpZGdldCogd2ViVmlldykKK3sKKyAg
ICBhdXRvKiB3aWRnZXQgPSBndGtfcG9wb3Zlcl9tZW51X25ld19mcm9tX21vZGVsKG51bGxwdHIp
OworICAgIGd0a19wb3BvdmVyX3NldF9oYXNfYXJyb3coR1RLX1BPUE9WRVIod2lkZ2V0KSwgRkFM
U0UpOworICAgIGd0a19wb3BvdmVyX3NldF9wb3NpdGlvbihHVEtfUE9QT1ZFUih3aWRnZXQpLCBH
VEtfUE9TX0JPVFRPTSk7CisgICAgZ3RrX3dpZGdldF9zZXRfcGFyZW50KHdpZGdldCwgd2ViVmll
dyk7CisgICAgcmV0dXJuIHdpZGdldDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHBvcHVwTWVu
dVdpZGdldChHdGtXaWRnZXQqIHdpZGdldCwgY29uc3QgR2RrRXZlbnQqLCBjb25zdCBHZGtSZWN0
YW5nbGUmIHRhcmdldCkKK3sKKyAgICBndGtfcG9wb3Zlcl9zZXRfcG9pbnRpbmdfdG8oR1RLX1BP
UE9WRVIod2lkZ2V0KSwgJnRhcmdldCk7CisgICAgZ3RrX3BvcG92ZXJfcG9wdXAoR1RLX1BPUE9W
RVIod2lkZ2V0KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwb3Bkb3duTWVudVdpZGdldChH
dGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBndGtfcG9wb3Zlcl9wb3Bkb3duKEdUS19QT1BPVkVS
KHdpZGdldCkpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgbWVudVdpZGdldEhhc0l0ZW1zKEd0
a1dpZGdldCogd2lkZ2V0KQoreworICAgIHJldHVybiBnX21lbnVfbW9kZWxfZ2V0X25faXRlbXMo
Z3RrX3BvcG92ZXJfbWVudV9nZXRfbWVudV9tb2RlbChHVEtfUE9QT1ZFUl9NRU5VKHdpZGdldCkp
KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGJpbmRNb2RlbFRvTWVudVdpZGdldChHdGtXaWRn
ZXQqIHdpZGdldCwgR01lbnVNb2RlbCogbW9kZWwpCit7CisgICAgZ3RrX3BvcG92ZXJfbWVudV9z
ZXRfbWVudV9tb2RlbChHVEtfUE9QT1ZFUl9NRU5VKHdpZGdldCksIG1vZGVsKTsKK30KKyNlbHNl
Citjb25zdCBjaGFyKiBXZWJDb250ZXh0TWVudVByb3h5R3RrOjp3aWRnZXREaXNtaXNzZWRTaWdu
YWwgPSAiZGVhY3RpdmF0ZSI7CisKK3N0YXRpYyBHdGtXaWRnZXQqIGNyZWF0ZU1lbnVXaWRnZXQo
R3RrV2lkZ2V0KiB3ZWJWaWV3KQoreworICAgIGF1dG8qIHdpZGdldCA9IGd0a19tZW51X25ldygp
OworICAgIGd0a19tZW51X2F0dGFjaF90b193aWRnZXQoR1RLX01FTlUod2lkZ2V0KSwgd2ViVmll
dywgbnVsbHB0cik7CisgICAgcmV0dXJuIHdpZGdldDsKK30KKworc3RhdGljIHZvaWQgcG9wdXBN
ZW51V2lkZ2V0KEd0a1dpZGdldCogd2lkZ2V0LCBjb25zdCBHZGtFdmVudCogdHJpZ2dlckV2ZW50
LCBjb25zdCBHZGtSZWN0YW5nbGUmIHRhcmdldCkKK3sKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50
PiBrZXlFdmVudDsKKyAgICBhdXRvKiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3coZ3Rr
X21lbnVfZ2V0X2F0dGFjaF93aWRnZXQoR1RLX01FTlUod2lkZ2V0KSkpOworICAgIGlmICghdHJp
Z2dlckV2ZW50KSB7CisgICAgICAgIC8vIFdoZW4gdGhlIGNvbnRleHQgbWVudSBpcyByZXF1ZXN0
ZWQgdXNpbmcgdGhlIGtleWJvYXJkLCB0aGVyZSBpcyBubworICAgICAgICAvLyB0cmlnZ2VyRXZl
bnQ6IHVzZSBhIGZha2UgZXZlbnQgZm9yIHRoZSDigJxNZW514oCdIGtleSBiZWluZyByZWxlYXNl
ZC4KKyAgICAgICAga2V5RXZlbnQucmVzZXQoZ2RrX2V2ZW50X25ldyhHREtfS0VZX1JFTEVBU0Up
KTsKKyAgICAgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2Uoa2V5RXZlbnQuZ2V0KCksIGdka19zZWF0
X2dldF9rZXlib2FyZChnZGtfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0KGdka193aW5kb3dfZ2V0
X2Rpc3BsYXkod2luZG93KSkpKTsKKyAgICAgICAgYXV0byogZXZlbnQgPSByZWludGVycHJldF9j
YXN0PEdka0V2ZW50S2V5Kj4oa2V5RXZlbnQuZ2V0KCkpOworICAgICAgICBldmVudC0+d2luZG93
ID0gd2luZG93OworICAgICAgICBldmVudC0+dGltZSA9IEdES19DVVJSRU5UX1RJTUU7CisgICAg
ICAgIGV2ZW50LT5rZXl2YWwgPSBHREtfS0VZX01lbnU7CisgICAgICAgIHRyaWdnZXJFdmVudCA9
IGtleUV2ZW50LmdldCgpOworICAgIH07CisgICAgZ3RrX21lbnVfcG9wdXBfYXRfcmVjdChHVEtf
TUVOVSh3aWRnZXQpLCB3aW5kb3csICZ0YXJnZXQsIEdES19HUkFWSVRZX1NPVVRIX1dFU1QsIEdE
S19HUkFWSVRZX05PUlRIX1dFU1QsIHRyaWdnZXJFdmVudCk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
dm9pZCBwb3Bkb3duTWVudVdpZGdldChHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBndGtfbWVu
dV9wb3Bkb3duKEdUS19NRU5VKHdpZGdldCkpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgbWVu
dVdpZGdldEhhc0l0ZW1zKEd0a1dpZGdldCogd2lkZ2V0KQoreworICAgIHVuc2lnbmVkIGNoaWxk
Q291bnQgPSAwOworICAgIGd0a19jb250YWluZXJfZm9yZWFjaChHVEtfQ09OVEFJTkVSKHdpZGdl
dCksIFtdKEd0a1dpZGdldCosIGdwb2ludGVyIGRhdGEpIHsgKCpzdGF0aWNfY2FzdDx1bnNpZ25l
ZCo+KGRhdGEpKSsrOyB9LCAmY2hpbGRDb3VudCk7CisgICAgcmV0dXJuIGNoaWxkQ291bnQgPiAw
OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYmluZE1vZGVsVG9NZW51V2lkZ2V0KEd0a1dpZGdl
dCogd2lkZ2V0LCBHTWVudU1vZGVsKiBtb2RlbCkKK3sKKyAgICBndGtfbWVudV9zaGVsbF9iaW5k
X21vZGVsKEdUS19NRU5VX1NIRUxMKHdpZGdldCksIG1vZGVsLCBnQ29udGV4dE1lbnVJdGVtR3Jv
dXAsIFRSVUUpOworfQorI2VuZGlmIC8vIFVTRShHVEs0KQorCiBzdGF0aWMgdm9pZCBjb250ZXh0
TWVudUl0ZW1BY3RpdmF0ZWRDYWxsYmFjayhHQWN0aW9uKiBhY3Rpb24sIEdWYXJpYW50KiwgV2Vi
UGFnZVByb3h5KiBwYWdlKQogewogICAgIGF1dG8qIHN0YXRlVHlwZSA9IGdfYWN0aW9uX2dldF9z
dGF0ZV90eXBlKGFjdGlvbik7CkBAIC0xMjcsNyArMjA1LDcgQEAgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbUdsaWI+IFdlYkNvbnRleHRNZW51UHJveHlHdGs6OnBvcHVsYXRlU3ViTWVudShjb25z
dCBXZWIKIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUd0azo6cG9wdWxhdGUoY29uc3QgVmVjdG9y
PFdlYkNvbnRleHRNZW51SXRlbUdsaWI+JiBpdGVtcykKIHsKICAgICBHUmVmUHRyPEdNZW51PiBt
ZW51ID0gYnVpbGRNZW51KGl0ZW1zKTsKLSAgICBndGtfcG9wb3Zlcl9iaW5kX21vZGVsKG1fbWVu
dSwgR19NRU5VX01PREVMKG1lbnUuZ2V0KCkpLCBnQ29udGV4dE1lbnVJdGVtR3JvdXApOworICAg
IGJpbmRNb2RlbFRvTWVudVdpZGdldChtX21lbnUsIEdfTUVOVV9NT0RFTChtZW51LmdldCgpKSk7
CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eUd0azo6cG9wdWxhdGUoY29uc3QgVmVjdG9y
PFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYgaXRlbXMpCkBAIC0xNTUsNyArMjMzLDcgQEAgdm9p
ZCBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpwb3B1bGF0ZShjb25zdCBWZWN0b3I8UmVmPFdlYkNv
bnRleHRNZW51SXRlbT4+JiBpdGUKICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGd0
a19wb3BvdmVyX2JpbmRfbW9kZWwobV9tZW51LCBHX01FTlVfTU9ERUwobWVudS5nZXQoKSksIGdD
b250ZXh0TWVudUl0ZW1Hcm91cCk7CisgICAgYmluZE1vZGVsVG9NZW51V2lkZ2V0KG1fbWVudSwg
R19NRU5VX01PREVMKG1lbnUuZ2V0KCkpKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVudVByb3h5
R3RrOjpzaG93KCkKQEAgLTE3NCwzOSArMjUyLDM1IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94
eUd0azo6c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJ
CiAgICAgaWYgKCFpdGVtcy5pc0VtcHR5KCkpCiAgICAgICAgIHBvcHVsYXRlKGl0ZW1zKTsKIAot
ICAgIHVuc2lnbmVkIGNoaWxkQ291bnQgPSAwOwotICAgIGd0a19jb250YWluZXJfZm9yZWFjaChH
VEtfQ09OVEFJTkVSKG1fbWVudSksIFtdKEd0a1dpZGdldCosIGdwb2ludGVyIGRhdGEpIHsgKCpz
dGF0aWNfY2FzdDx1bnNpZ25lZCo+KGRhdGEpKSsrOyB9LCAmY2hpbGRDb3VudCk7Ci0gICAgaWYg
KCFjaGlsZENvdW50KQorICAgIGlmICghbWVudVdpZGdldEhhc0l0ZW1zKG1fbWVudSkpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBtX3Bh
Z2UtPmN1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50KCk7CisgICAgY29uc3QgR2RrRXZl
bnQqIGV2ZW50ID0gbW91c2VFdmVudCA/IG1vdXNlRXZlbnQtPm5hdGl2ZUV2ZW50KCkgOiBudWxs
cHRyOwogICAgIGNvbnN0IEdka1JlY3RhbmdsZSByZWN0ID0geyBtX2NvbnRleHQubWVudUxvY2F0
aW9uKCkueCgpLCBtX2NvbnRleHQubWVudUxvY2F0aW9uKCkueSgpLCAxLCAxIH07Ci0gICAgZ3Rr
X3BvcG92ZXJfc2V0X3BvaW50aW5nX3RvKG1fbWVudSwgJnJlY3QpOwotICAgIGd0a19wb3BvdmVy
X3BvcHVwKG1fbWVudSk7CisgICAgcG9wdXBNZW51V2lkZ2V0KG1fbWVudSwgZXZlbnQsIHJlY3Qp
OwogfQogCiBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpXZWJDb250ZXh0TWVudVByb3h5R3RrKEd0
a1dpZGdldCogd2ViVmlldywgV2ViUGFnZVByb3h5JiBwYWdlLCBDb250ZXh0TWVudUNvbnRleHRE
YXRhJiYgY29udGV4dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogICAgIDogV2ViQ29udGV4
dE1lbnVQcm94eShXVEZNb3ZlKGNvbnRleHQpLCB1c2VyRGF0YSkKICAgICAsIG1fd2ViVmlldyh3
ZWJWaWV3KQogICAgICwgbV9wYWdlKCZwYWdlKQotICAgICwgbV9tZW51KEdUS19QT1BPVkVSKGd0
a19wb3BvdmVyX21lbnVfbmV3KCkpKQorICAgICwgbV9tZW51KGNyZWF0ZU1lbnVXaWRnZXQobV93
ZWJWaWV3KSkKIHsKLSAgICBndGtfcG9wb3Zlcl9zZXRfaGFzX2Fycm93KG1fbWVudSwgRkFMU0Up
OwotICAgIGd0a19wb3BvdmVyX3NldF9wb3NpdGlvbihtX21lbnUsIEdUS19QT1NfQk9UVE9NKTsK
LSAgICBndGtfcG9wb3Zlcl9zZXRfcmVsYXRpdmVfdG8obV9tZW51LCBtX3dlYlZpZXcpOwogICAg
IGd0a193aWRnZXRfaW5zZXJ0X2FjdGlvbl9ncm91cChHVEtfV0lER0VUKG1fbWVudSksIGdDb250
ZXh0TWVudUl0ZW1Hcm91cCwgR19BQ1RJT05fR1JPVVAobV9hY3Rpb25Hcm91cC5nZXQoKSkpOwog
ICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWN0aXZlQ29udGV4dE1lbnVQcm94eShXRUJLSVRfV0VC
X1ZJRVdfQkFTRShtX3dlYlZpZXcpLCB0aGlzKTsKIH0KIAogV2ViQ29udGV4dE1lbnVQcm94eUd0
azo6fldlYkNvbnRleHRNZW51UHJveHlHdGsoKQogewotICAgIGd0a19wb3BvdmVyX3BvcGRvd24o
bV9tZW51KTsKKyAgICBwb3Bkb3duTWVudVdpZGdldChtX21lbnUpOwogCiAgICAgZm9yIChhdXRv
JiBoYW5kbGVyIDogbV9zaWduYWxIYW5kbGVycykKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9k
aXNjb25uZWN0KGhhbmRsZXIudmFsdWUsIGhhbmRsZXIua2V5KTsKICAgICBtX3NpZ25hbEhhbmRs
ZXJzLmNsZWFyKCk7CiAKICAgICBndGtfd2lkZ2V0X2luc2VydF9hY3Rpb25fZ3JvdXAoR1RLX1dJ
REdFVChtX21lbnUpLCBnQ29udGV4dE1lbnVJdGVtR3JvdXAsIG51bGxwdHIpOwotICAgIGd0a193
aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKG1fbWVudSkpOworICAgIGd0a193aWRnZXRfZGVzdHJv
eShtX21lbnUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oCmluZGV4IGVlMzMw
NjVjOGIyYzZlODdkYWFkNDY0NGU0NDRiMzQzZDIzMWQ3OGIuLmVhNDhkYmFkODM0YzkxNzI5Yzk0
Yjc1MjhiMzJmZjA5NTE1ZTlhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaApAQCAtNTEsNyArNTEsOCBAQCBwdWJsaWM6
CiAgICAgfldlYkNvbnRleHRNZW51UHJveHlHdGsoKTsKIAogICAgIHZvaWQgcG9wdWxhdGUoY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+Jik7Ci0gICAgR3RrV2lkZ2V0KiBndGtX
aWRnZXQoKSBjb25zdCB7IHJldHVybiBHVEtfV0lER0VUKG1fbWVudSk7IH0KKyAgICBHdGtXaWRn
ZXQqIGd0a1dpZGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVudTsgfQorICAgIHN0YXRpYyBjb25z
dCBjaGFyKiB3aWRnZXREaXNtaXNzZWRTaWduYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29udGV4
dE1lbnVQcm94eUd0ayhHdGtXaWRnZXQqLCBXZWJQYWdlUHJveHkmLCBDb250ZXh0TWVudUNvbnRl
eHREYXRhJiYsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC02NCw3ICs2NSw3IEBAIHByaXZhdGU6CiAK
ICAgICBHdGtXaWRnZXQqIG1fd2ViVmlldzsKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKLSAg
ICBHdGtQb3BvdmVyKiBtX21lbnU7CisgICAgR3RrV2lkZ2V0KiBtX21lbnU7CiAgICAgSGFzaE1h
cDx1bnNpZ25lZCBsb25nLCB2b2lkKj4gbV9zaWduYWxIYW5kbGVyczsKICAgICBHUmVmUHRyPEdT
aW1wbGVBY3Rpb25Hcm91cD4gbV9hY3Rpb25Hcm91cCB7IGFkb3B0R1JlZihnX3NpbXBsZV9hY3Rp
b25fZ3JvdXBfbmV3KCkpIH07CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDg1M2JjMGVhZDYzZTgwNTBlNjhlYjIwNWUwZTczNTRkZGQ2MjQ5
YzEuLmMyZGNjOWIzNmNjZjllZWZkN2UxNDZmMWMwODBmYzc2ODllYWI2ZDMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMC0wNS0xMyAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEszXSBCcmluZyBiYWNrIHVzYWdlIG9mIEd0a01lbnUgZm9yIGNvbnRleHQg
bWVudXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MTU1NworCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcDog
QWRkIHByZXByb2Nlc3NvciBjb25kaXRpb25hbHMKKyAgICAgICAgZm9yIEdUSzQgYW5kIGJyaW5n
IGJhY2sgc29tZSBiaXRzIHByZXZpb3VzbHkgcmVtb3ZlZCBpbiByMjYwODg5IGZvciBHVEszLgor
CiAyMDIwLTA1LTEzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlcGxhY2UgaXNOdWxsRnVuY3Rpb25Qb2ludGVyIHdpdGggcmVhbCB3ZWFrLWxpbmtpbmcgc3Vw
cG9ydApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVz
dENvbnRleHRNZW51LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rl
c3RDb250ZXh0TWVudS5jcHAKaW5kZXggYWE4MGUwZmFjODFkYmE1YzQzMmY5YTE5NzhlNTQ1OTlj
YjlhYjlkNC4uYWQ1NDJlM2IyYzExOWNiODYwNmQ2MTZiOTFhMzU1MzA3YTMxNjU2OCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0Q29udGV4
dE1lbnUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBr
U2VydmVyOwogCisjaWYgVVNFKEdUSzQpCiBzdHJ1Y3QgTG9va3VwV2lkZ2V0c0RhdGEgewogICAg
IHZvaWQgKCp3YWxrQ2hpbGRyZW4pKEd0a0NvbnRhaW5lciosIEd0a0NhbGxiYWNrLCB2b2lkKik7
CiAgICAgRnVuY3Rpb248Ym9vbChHdGtXaWRnZXQqKT4gcHJlZGljYXRlOwpAQCAtNDcsNiArNDgs
NyBAQCBzdGF0aWMgVmVjdG9yPEd0a1dpZGdldCo+IGxvb2t1cFdpZGdldHMoR3RrV2lkZ2V0KiB3
aWRnZXQsIEZ1bmN0aW9uPGJvb2woR3RrV2lkZwogICAgIGxvb2t1cFdpZGdldHNXYWxrQ2hpbGQo
d2lkZ2V0LCAmZGF0YSk7CiAgICAgcmV0dXJuIFdURk1vdmUoZGF0YS5yZXN1bHQpOwogfQorI2Vu
ZGlmIC8vIFVTRShHVEs0KQogCiBjbGFzcyBDb250ZXh0TWVudVRlc3Q6IHB1YmxpYyBXZWJWaWV3
VGVzdCB7CiBwdWJsaWM6CkBAIC0xMTYsMTMgKzExOCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHF1
aXRNYWluTG9vcCgpOwogICAgIH0KIAotICAgIEd0a1BvcG92ZXIqIGdldFBvcG92ZXJNZW51KCkK
KyAgICBHdGtXaWRnZXQqIGdldENvbnRleHRNZW51V2lkZ2V0KCkKICAgICB7CiAgICAgICAgIEdV
bmlxdWVQdHI8R0xpc3Q+IHRvcGxldmVscyhndGtfd2luZG93X2xpc3RfdG9wbGV2ZWxzKCkpOwog
ICAgICAgICBmb3IgKEdMaXN0KiBpdGVyID0gdG9wbGV2ZWxzLmdldCgpOyBpdGVyOyBpdGVyID0g
Z19saXN0X25leHQoaXRlcikpIHsKICAgICAgICAgICAgIGlmICghR1RLX0lTX1dJTkRPVyhpdGVy
LT5kYXRhKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAorI2lmIFVTRShHVEs0KQogICAg
ICAgICAgICAgLy8gUG9wb3ZlcnMgYXJlIGludGVybmFsIHRvIHRoZSBHdGtDb250YWluZXIgd2hl
cmUgdGhlIHdlYnZpZXcgcmVzaWRlcywKICAgICAgICAgICAgIC8vIGd0a19jb250YWluZXJfZm9y
YWxsKCkgaXMgdGhlIG9ubHkgd2F5IHRvIGVudW1lcmF0ZSBpbnRlcm5hbCBjaGlsZHJlbi4KICAg
ICAgICAgICAgIEd0a1BvcG92ZXIgKnBvcG92ZXIgPSBudWxscHRyOwpAQCAtMTM1LDYgKzEzOCwx
NCBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIGlmIChwb3BvdmVyICYmIGd0a19wb3BvdmVyX2dl
dF9yZWxhdGl2ZV90byhwb3BvdmVyKSA9PSBHVEtfV0lER0VUKG1fd2ViVmlldykpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHBvcG92ZXI7CisjZWxzZQorICAgICAgICAgICAgR3RrV2lkZ2V0KiBj
aGlsZCA9IGd0a19iaW5fZ2V0X2NoaWxkKEdUS19CSU4oaXRlci0+ZGF0YSkpOworICAgICAgICAg
ICAgaWYgKCFHVEtfSVNfTUVOVShjaGlsZCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIGlmIChndGtfbWVudV9nZXRfYXR0YWNoX3dpZGdldChHVEtfTUVOVShjaGls
ZCkpID09IEdUS19XSURHRVQobV93ZWJWaWV3KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hp
bGQ7CisjZW5kaWYgLy8gVVNFKEdUSzQpCiAgICAgICAgIH0KICAgICAgICAgZ19hc3NlcnRfbm90
X3JlYWNoZWQoKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01NzksOSArNTkwLDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEd0a0J1dHRvbiogZ2V0TWVu
dUl0ZW0oR3RrUG9wb3ZlciogcG9wb3ZlciwgY29uc3QgZ2NoYXIqIGl0ZW1MYWJlbCkKKyNpZiBV
U0UoR1RLNCkKKyAgICBHdGtCdXR0b24qIGdldE1lbnVJdGVtKEd0a1dpZGdldCogcG9wb3Zlciwg
Y29uc3QgZ2NoYXIqIGl0ZW1MYWJlbCkKICAgICB7Ci0gICAgICAgIGF1dG8gaXRlbXMgPSBsb29r
dXBXaWRnZXRzKEdUS19XSURHRVQocG9wb3ZlciksCisgICAgICAgIGF1dG8gaXRlbXMgPSBsb29r
dXBXaWRnZXRzKHBvcG92ZXIsCiAgICAgICAgICAgICBbaXRlbUxhYmVsXShHdGtXaWRnZXQqIHdp
ZGdldCkgewogICAgICAgICAgICAgICAgIGlmICghR1RLX0lTX0JVVFRPTih3aWRnZXQpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01OTgsMTMgKzYxMCwzMiBAQCBwdWJs
aWM6CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoaXRlbXMuc2l6ZSgpLCA+LCAwKTsKICAgICAg
ICAgcmV0dXJuIGl0ZW1zLnNpemUoKSA/IEdUS19CVVRUT04oaXRlbXNbMF0pIDogbnVsbHB0cjsK
ICAgICB9CisjZWxzZQorICAgIEd0a01lbnVJdGVtKiBnZXRNZW51SXRlbShHdGtXaWRnZXQqIG1l
bnUsIGNvbnN0IGdjaGFyKiBpdGVtTGFiZWwpCisgICAgeworICAgICAgICBHVW5pcXVlUHRyPEdM
aXN0PiBpdGVtcyhndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1lbnUp
KSk7CisgICAgICAgIGZvciAoR0xpc3QqIGl0ZXIgPSBpdGVtcy5nZXQoKTsgaXRlcjsgaXRlciA9
IGdfbGlzdF9uZXh0KGl0ZXIpKSB7CisgICAgICAgICAgICBHdGtNZW51SXRlbSogY2hpbGQgPSBH
VEtfTUVOVV9JVEVNKGl0ZXItPmRhdGEpOworICAgICAgICAgICAgaWYgKGdfc3RyX2VxdWFsKGl0
ZW1MYWJlbCwgZ3RrX21lbnVfaXRlbV9nZXRfbGFiZWwoY2hpbGQpKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY2hpbGQ7CisgICAgICAgIH0KKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorI2VuZGlmIC8vIFVTRShHVEs0KQog
CiAgICAgdm9pZCBhY3RpdmF0ZU1lbnVJdGVtKCkKICAgICB7CiAgICAgICAgIGdfYXNzZXJ0X25v
bm51bGwobV9pdGVtVG9BY3RpdmF0ZUxhYmVsKTsKLSAgICAgICAgYXV0byogbWVudSA9IGdldFBv
cG92ZXJNZW51KCk7CisgICAgICAgIGF1dG8qIG1lbnUgPSBnZXRDb250ZXh0TWVudVdpZGdldCgp
OwogICAgICAgICBhdXRvKiBpdGVtID0gZ2V0TWVudUl0ZW0obWVudSwgbV9pdGVtVG9BY3RpdmF0
ZUxhYmVsKTsKKyNpZiBVU0UoR1RLNCkKKyAgICAgICAgLy8gR1RLNCB1c2VzIGEgcG9wb3Zlciwg
d2hpY2ggY29udGFpbnMgYnV0dG9ucy4KICAgICAgICAgZ3RrX2J1dHRvbl9jbGlja2VkKGl0ZW0p
OworI2Vsc2UKKyAgICAgICAgLy8gR1RLMyB1c2VzIGEgbWVudSwgd2hpY2ggY29udGFpbnMgbWVu
dSBpdGVtcy4KKyAgICAgICAgZ3RrX21lbnVfc2hlbGxfYWN0aXZhdGVfaXRlbShHVEtfTUVOVV9T
SEVMTChtZW51KSwgR1RLX1dJREdFVChpdGVtKSwgVFJVRSk7CisjZW5kaWYgLy8gVVNFKEdUSzQp
CiAgICAgICAgIG1faXRlbVRvQWN0aXZhdGVMYWJlbCA9IG51bGxwdHI7CiAgICAgfQogCkBAIC02
NDksOSArNjgwLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHRlc3QtPm1fdG9nZ2xlZCA9
IHRydWU7CiAKKyNpZiBVU0UoR1RLNCkKICAgICAgICAgLy8gRm9yIHRvZ2dsZSBhY3Rpb25zIHRo
ZSBwb3BvdmVyIG1lbnUgaXMgTk9UIGRpc21pc3NlZCBhdXRvbWF0aWNhbGx5LCBhcyB0byBzaG93
IHZpc3VhbCBmZWVkYmFjayB0byB0aGUgdXNlcgogICAgICAgICAvLyAoaS5lLiB0aGUgY2hlY2sg
bWFya2VyKS4gRGlzbWlzcyBpdCBoZXJlIHRvIHRyaWdnZXIgY29udGV4dE1lbnVEaXNtaXNzZWRD
YWxsYmFjaygpIGFuZCBjb250aW51ZSB0aGUgdGVzdC4KICAgICAgICAgZ3RrX3BvcG92ZXJfcG9w
ZG93bih0ZXN0LT5nZXRQb3BvdmVyTWVudSgpKTsKKyNlbmRpZiAvLyBVU0UoR1RLNCkKICAgICB9
CiAKICAgICB2b2lkIHNldEFjdGlvbihHdGtBY3Rpb24qIGFjdGlvbikK
</data>

          </attachment>
      

    </bug>

</bugzilla>