<?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>182224</bug_id>
          
          <creation_ts>2018-01-28 11:56:34 -0800</creation_ts>
          <short_desc>REGRESSION(r227544): [GTK] contextMenuEvent is NULL on CONTEXT_MENU call</short_desc>
          <delta_ts>2018-02-01 05:07:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>http://https//bugzilla.gnome.org/show_bug.cgi?id=792976</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=181996</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=182350</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>
          <dependson>182381</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jan-Michael Brummer">jan.brummer</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1393926</commentid>
    <comment_count>0</comment_count>
    <who name="Jan-Michael Brummer">jan.brummer</who>
    <bug_when>2018-01-28 11:56:34 -0800</bug_when>
    <thetext>After adding support for long press context menu epiphany crashes due to contextMenuEvent not beeing set (only called in button-press handler).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393927</commentid>
    <comment_count>1</comment_count>
      <attachid>332492</attachid>
    <who name="Jan-Michael Brummer">jan.brummer</who>
    <bug_when>2018-01-28 11:59:08 -0800</bug_when>
    <thetext>Created attachment 332492
Patch fixing contextMenuEvent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393928</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-01-28 11:59:52 -0800</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>1393935</commentid>
    <comment_count>3</comment_count>
      <attachid>332492</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-28 14:18:49 -0800</bug_when>
    <thetext>Comment on attachment 332492
Patch fixing contextMenuEvent

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

We need to update the documentation of WebKitWebView::context-menu as well, to indicate that event may now be a GdkEventTouch of type GDK_TOUCH_END. (It would be GDK_TOUCH_END, right?)

Then I&apos;ll ask Carlos Garcia to do the final review, because this could in theory break applications depending on the assumptions they make about the type of the GdkEvent... I&apos;d like to do this anyway, since I think it will be fine in practice.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:936
&gt; +        priv-&gt;contextMenuEvent.reset(gdk_event_copy(touchEvent));

Ah, that was easier than I expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393984</commentid>
    <comment_count>4</comment_count>
      <attachid>332492</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-28 23:27:25 -0800</bug_when>
    <thetext>Comment on attachment 332492
Patch fixing contextMenuEvent

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

&gt;&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:936
&gt;&gt; +        priv-&gt;contextMenuEvent.reset(gdk_event_copy(touchEvent));
&gt; 
&gt; Ah, that was easier than I expected.

I&apos;m not sure this is the right fix, though. I was surprised we were missing the event, while we were simulating the click, but then I realized that GestureController is bypassing the WebKitWebViewBase. This means we are not doing the same in both cases. For example, a tap is not focusing the view, while a real button press is. In case of gestures we are not notifying the input method filter either. I think the event handling should be done by WebKitWebViewBase to ensure consistency. I would add a GestureControllerClient, implemented by a helper class in WebKitWebViewBase that has methods like handleTap(), handleDrag(), handleLongPress(), etc, that receive the touch event and any other ting required to handle it. Then the client decides how to handle that, doing the conversion and sending the events to the page. If I&apos;m asking too much, I can do it if you prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394054</commentid>
    <comment_count>5</comment_count>
    <who name="Jan-Michael Brummer">jan.brummer</who>
    <bug_when>2018-01-29 05:09:59 -0800</bug_when>
    <thetext>Please proceed, as my vacation is over and i would love to see this feature in a stable release soon :)

I can of course test the changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394477</commentid>
    <comment_count>6</comment_count>
      <attachid>332639</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-30 02:02:34 -0800</bug_when>
    <thetext>Created attachment 332639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394550</commentid>
    <comment_count>7</comment_count>
      <attachid>332639</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-30 08:18:05 -0800</bug_when>
    <thetext>Comment on attachment 332639
Patch

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

OK, thanks. Let&apos;s try it.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:1001
&gt; +    ViewGestureController(WebKitWebViewBase* webViewBase)

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394938</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-31 01:14:41 -0800</bug_when>
    <thetext>Committed r227893: &lt;https://trac.webkit.org/changeset/227893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395156</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-31 14:24:51 -0800</bug_when>
    <thetext>Regression: bug #182350</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332492</attachid>
            <date>2018-01-28 11:59:08 -0800</date>
            <delta_ts>2018-01-30 02:02:34 -0800</delta_ts>
            <desc>Patch fixing contextMenuEvent</desc>
            <filename>0001-GTK-contextMenuEvent-is-NULL-on-CONTEXT_MENU-call.patch</filename>
            <type>text/plain</type>
            <size>1802</size>
            <attacher name="Jan-Michael Brummer">jan.brummer</attacher>
            
              <data encoding="base64">RnJvbSAzNTdlOTQyYjUyNjVlOWRiMmYwMmVlZmRiYTkwNzA2MGNiMmM4MmY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYW4tTWljaGFlbCBCcnVtbWVyIDxqYW4uYnJ1bW1lckB0YWJv
cy5vcmc+CkRhdGU6IFN1biwgMjggSmFuIDIwMTggMjA6NTc6NTEgKzAxMDAKU3ViamVjdDogW1BB
VENIIHhzZXJ2ZXJdIFtHVEtdIGNvbnRleHRNZW51RXZlbnQgaXMgTlVMTCBvbiBDT05URVhUX01F
TlUgY2FsbAoKQWRkIGNvbnRleHRNZW51RXZlbnQgc3RvcmluZyBpbiB0b3VjaCBldmVudCBoYW5k
bGVyLgotLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgMTAgKysrKysrKysrKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAgfCAgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlv
bnMoKykKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGZkZTA5YjU1MTI1Li5jYzdlMTIyMjFlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxOC0wMS0yOCAgSmFuLU1pY2hhZWwgQnJ1bW1lciAgPGphbi5icnVt
bWVyQHRhYm9zLm9yZz4KKworICAgICAgICBbR1RLXSBjb250ZXh0TWVudUV2ZW50IGlzIE5VTEwg
b24gQ09OVEVYVF9NRU5VIGNhbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MjIyNAorCisgICAgICAgIEFkZCBjb250ZXh0TWVudUV2ZW50IHN0b3Jp
bmcgaW4gdG91Y2ggZXZlbnQgaGFuZGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlVG91Y2hF
dmVudCk6CisKIDIwMTgtMDEtMjYgIEphbi1NaWNoYWVsIEJydW1tZXIgIDxqYW4uYnJ1bW1lckB0
YWJvcy5vcmc+CiAKICAgICAgICAgW0dUS10gWm9vbWluZyBnZXN0dXJlIGluY29ycmVjdGx5IHVz
ZXMgc2NhbGUgaW5zdGVhZCBvZiB6b29tIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCA1NjMwNDlkMTIzMC4uMTJm
ZWZjMGU2MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC05MzMsNiArOTMzLDcgQEAgc3RhdGljIGdib29sZWFu
IHdlYmtpdFdlYlZpZXdCYXNlVG91Y2hFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRU
b3VjaCogZXYKICAgICAgICAgQVNTRVJUKCFwcml2LT50b3VjaEV2ZW50cy5jb250YWlucyhzZXF1
ZW5jZSkpOwogICAgICAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfY29w
eSh0b3VjaEV2ZW50KSk7CiAgICAgICAgIHByaXYtPnRvdWNoRXZlbnRzLmFkZChzZXF1ZW5jZSwg
V1RGTW92ZShldmVudCkpOworICAgICAgICBwcml2LT5jb250ZXh0TWVudUV2ZW50LnJlc2V0KGdk
a19ldmVudF9jb3B5KHRvdWNoRXZlbnQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2UgR0RLX1RPVUNIX1VQREFURTogewotLSAKMi4xNC4zCgo=
</data>
<flag name="review"
          id="351434"
          type_id="1"
          status="-"
          setter="mcatanzaro"
    />
    <flag name="commit-queue"
          id="351435"
          type_id="3"
          status="-"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332639</attachid>
            <date>2018-01-30 02:02:34 -0800</date>
            <delta_ts>2018-01-30 08:18:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk-gestures.diff</filename>
            <type>text/plain</type>
            <size>35507</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYmMxYzI5MDdjNmQuLmExNDJhNzc5YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDU2IEBACisyMDE4LTAxLTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMjc1NDQpOiBbR1RLXSBjb250ZXh0TWVudUV2
ZW50IGlzIE5VTEwgb24gQ09OVEVYVF9NRU5VIGNhbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjIyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIGdlc3R1cmVzIGhhbmRsaW5nIHRvIFdl
YktpdFdlYlZpZXdCYXNlLiBUaGlzIHBhdGNoIGFkZHMgR2VzdHVyZUNvbnRyb2xsZXJDbGllbnQg
Y2xhc3MsIGNyZWF0ZWQgYW5kCisgICAgICAgIGltcGxlbWVudGVkIGJ5IFdlYktpdFdlYlZpZXdC
YXNlIGFuZCB1c2VkIGJ5IEdlc3R1cmVDb250cm9sbGVyIGluc3RlYWQgb2YgdGhlIFdlYlBhZ2VQ
cm94eS4gVGhpcyB3YXkgd2UgZW5zdXJlCisgICAgICAgIGV2ZW50cyBhcmUgaGFuZGxlZCBjb25z
aXN0ZW50bHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aFRvdWNoRXZlbnQp
OiBDYXN0IHRoZSBHZGtFdmVudCBzaW5jZSBHZXN0dXJlQ29udHJvbGxlciBubyBsb25nZXIgd29y
a3Mgd2lydGgKKyAgICAgICAgY29uc3QgR2RrRXZlbnRzLgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6em9vbSk6IFVzZSB3ZWJraXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwoKSBp
biBjYXNlIG9mIFdlYktpdFdlYlZpZXcgb3IKKyAgICAgICAgV2ViUGFnZVByb3h5OjpzZXRQYWdl
Wm9vbUZhY3RvcigpIG90aGVyd2lzZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcDoKKyAgICAgICAgKENsaWNrQ291bnRlcjo6Y3VycmVudENsaWNrQ291bnRGb3JHZGtC
dXR0b25FdmVudCk6IFJlY2VpdmUgYSBHZGtFdmVudCB0byBhdm9pZCBjYXN0cy4KKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlTW91c2VFdmVudCk6IEhlbHBlciBmdW5jdGlvbiB0byBo
YW5kbGUgbW91c2UgZXZlbnRzLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VCdXR0b25QcmVz
c0V2ZW50KTogVXNlIHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlTW91c2VFdmVudC4KKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUmVsZWFzZUV2ZW50KTogRGl0dG8uCisgICAgICAgICh3
ZWJraXRXZWJWaWV3QmFzZUhhbmRsZVdoZWVsRXZlbnQpOiBIZWxwZXIgZnVuY3Rpb24gdG8gaGFu
ZGxlIHdoZWVsIGV2ZW50cy4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2Nyb2xsRXZlbnQp
OiBVc2Ugd2Via2l0V2ViVmlld0Jhc2VIYW5kbGVXaGVlbEV2ZW50LgorICAgICAgICAod2Via2l0
V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudCk6IFVzZSB3ZWJraXRXZWJWaWV3QmFzZUhhbmRs
ZU1vdXNlRXZlbnQuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNyb3NzaW5nTm90aWZ5RXZl
bnQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlR2VzdHVyZUNvbnRyb2xsZXIp
OiBQYXNzIHRoZSB3aWRnZXQgYW5kIGNsaWVudCB0byBHZXN0dXJlQ29udHJvbGxlci4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ3RrL0dlc3R1cmVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6R2VzdHVyZUNvbnRyb2xsZXI6Okdlc3R1cmVDb250cm9sbGVyKTogUmVjZWl2ZXMgYSB3aWRn
ZXQgYW5kIGNsaWVudCBub3cuCisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVDb250cm9sbGVyOjpo
YW5kbGVFdmVudCk6IFJlbW92ZSB0aGUgY29uc3QuCisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVD
b250cm9sbGVyOjpHZXN0dXJlOjpHZXN0dXJlKTogSW5pdGlhbGl6ZSBjbGllbnQuCisgICAgICAg
IChXZWJLaXQ6Okdlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJlOjpoYW5kbGVFdmVudCk6IFJlbW92
ZSB0aGUgY29uc3QuCisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVDb250cm9sbGVyOjpEcmFnR2Vz
dHVyZTo6c3RhcnREcmFnKTogVXNlIHRoZSBjbGllbnQgaW5zdGVhZCBvZiBXZWJQYWdlUHJveHku
CisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVDb250cm9sbGVyOjpEcmFnR2VzdHVyZTo6aGFuZGxl
RHJhZyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlQ29udHJvbGxlcjo6RHJhZ0dl
c3R1cmU6OmhhbmRsZVRhcCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlQ29udHJv
bGxlcjo6RHJhZ0dlc3R1cmU6OmJlZ2luKTogSWdub3JlIHRoZSBjb25zdCByZXR1cm5lZCBieSBn
dGtfZ2VzdHVyZV9nZXRfbGFzdF9ldmVudCgpLgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlQ29u
dHJvbGxlcjo6RHJhZ0dlc3R1cmU6OnVwZGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpH
ZXN0dXJlQ29udHJvbGxlcjo6RHJhZ0dlc3R1cmU6OmVuZCk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpHZXN0dXJlQ29udHJvbGxlcjo6RHJhZ0dlc3R1cmU6OkRyYWdHZXN0dXJlKTogUmVjZWl2
ZXMgYSB3aWRnZXQgYW5kIGNsaWVudCBub3cuCisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVDb250
cm9sbGVyOjpTd2lwZUdlc3R1cmU6OnN0YXJ0TW9tZW50dW1TY3JvbGwpOiBVc2UgdGhlIGNsaWVu
dCBpbnN0ZWFkIG9mIFdlYlBhZ2VQcm94eS4KKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUNvbnRy
b2xsZXI6OlN3aXBlR2VzdHVyZTo6c3dpcGUpOiBJZ25vcmUgdGhlIGNvbnN0IHJldHVybmVkIGJ5
IGd0a19nZXN0dXJlX2dldF9sYXN0X2V2ZW50KCkuCisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVD
b250cm9sbGVyOjpTd2lwZUdlc3R1cmU6OlN3aXBlR2VzdHVyZSk6IFJlY2VpdmVzIGEgd2lkZ2V0
IGFuZCBjbGllbnQgbm93LgorICAgICAgICAoV2ViS2l0OjpHZXN0dXJlQ29udHJvbGxlcjo6Wm9v
bUdlc3R1cmU6OmJlZ2luKTogU3RhcnQgdGhlIHpvb20uCisgICAgICAgIChXZWJLaXQ6Okdlc3R1
cmVDb250cm9sbGVyOjpab29tR2VzdHVyZTo6c3RhcnRab29tKTogVXNlIHRoZSBjbGllbnQgaW5z
dGVhZCBvZiBXZWJQYWdlUHJveHkuCisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVDb250cm9sbGVy
Ojpab29tR2VzdHVyZTo6aGFuZGxlWm9vbSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpHZXN0
dXJlQ29udHJvbGxlcjo6Wm9vbUdlc3R1cmU6Olpvb21HZXN0dXJlKTogUmVjZWl2ZXMgYSB3aWRn
ZXQgYW5kIGNsaWVudCBub3cuCisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVDb250cm9sbGVyOjpM
b25nUHJlc3NHZXN0dXJlOjpsb25nUHJlc3NlZCk6IFVzZSB0aGUgY2xpZW50IGluc3RlYWQgb2Yg
V2ViS2l0V2ViVmlldy4KKyAgICAgICAgKFdlYktpdDo6R2VzdHVyZUNvbnRyb2xsZXI6OkxvbmdQ
cmVzc0dlc3R1cmU6OnByZXNzZWQpOiBJZ25vcmUgdGhlIGNvbnN0IHJldHVybmVkIGJ5IGd0a19n
ZXN0dXJlX2dldF9sYXN0X2V2ZW50KCkuCisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVDb250cm9s
bGVyOjpMb25nUHJlc3NHZXN0dXJlOjpMb25nUHJlc3NHZXN0dXJlKTogUmVjZWl2ZXMgYSB3aWRn
ZXQgYW5kIGNsaWVudCBub3cuCisgICAgICAgIChXZWJLaXQ6Okdlc3R1cmVDb250cm9sbGVyOjpH
ZXN0dXJlOjpzaW11bGF0ZU1vdXNlQ2xpY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0Ojpj
cmVhdGVTY3JvbGxFdmVudCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9HZXN0
dXJlQ29udHJvbGxlci5oOgorCiAyMDE4LTAxLTI5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2ZXI6IGV2YWx1YXRlSmF2YVNjcmlw
dEZ1bmN0aW9uIHNob3VsZCByZXR1cm4gbnVsbCB3aGVuIHJldHVybiB2YWx1ZSBpcyB1bmRlZmlu
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHAKaW5kZXggMTI2NzY5NjEyMTkuLjZkNDY1YTVhMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMzUxLDcgKzM1
MSw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRp
dmVXZWJUb3VjaEV2ZW50JiBldmVudCwgYm9vbCB3CiAgICAgICAgIGdlc3R1cmVDb250cm9sbGVy
LnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgd2FzRXZlbnRIYW5kbGVkID0g
Z2VzdHVyZUNvbnRyb2xsZXIuaGFuZGxlRXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSk7CisgICAg
d2FzRXZlbnRIYW5kbGVkID0gZ2VzdHVyZUNvbnRyb2xsZXIuaGFuZGxlRXZlbnQoY29uc3RfY2Fz
dDxHZGtFdmVudCo+KGV2ZW50Lm5hdGl2ZUV2ZW50KCkpKTsKICNlbmRpZgogCiAgICAgaWYgKHdh
c0V2ZW50SGFuZGxlZCkKQEAgLTQ4Miw0ICs0ODIsMTQgQEAgSlNHbG9iYWxDb250ZXh0UmVmIFBh
Z2VDbGllbnRJbXBsOjpqYXZhc2NyaXB0R2xvYmFsQ29udGV4dCgpCiAgICAgcmV0dXJuIHdlYmtp
dF93ZWJfdmlld19nZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dChXRUJLSVRfV0VCX1ZJRVco
bV92aWV3V2lkZ2V0KSk7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6Onpvb20oZG91YmxlIHpv
b21MZXZlbCkKK3sKKyAgICBpZiAoV0VCS0lUX0lTX1dFQl9WSUVXKG1fdmlld1dpZGdldCkpIHsK
KyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF96b29tX2xldmVsKFdFQktJVF9XRUJfVklFVyht
X3ZpZXdXaWRnZXQpLCB6b29tTGV2ZWwpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
d2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdl
dCkpLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tTGV2ZWwpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaAppbmRleCAzZTg5ODRkYTU2Yy4uNmRmZGMyYzg3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTUxLDYgKzUxLDggQEAg
cHVibGljOgogCiAgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KCkgeyByZXR1cm4gbV92aWV3V2lk
Z2V0OyB9CiAKKyAgICB2b2lkIHpvb20oZG91YmxlKTsKKwogcHJpdmF0ZToKICAgICAvLyBQYWdl
Q2xpZW50CiAgICAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdp
bmdBcmVhUHJveHkoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggNTYzMDQ5ZDEyMzAuLjE2Y2Zh
YjE0Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcApAQCAtOTUsOSArOTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIHBy
ZXZpb3VzQ2xpY2tCdXR0b24gPSAwOwogICAgIH0KIAotICAgIGludCBjdXJyZW50Q2xpY2tDb3Vu
dEZvckdka0J1dHRvbkV2ZW50KEdka0V2ZW50QnV0dG9uKiBidXR0b25FdmVudCkKKyAgICBpbnQg
Y3VycmVudENsaWNrQ291bnRGb3JHZGtCdXR0b25FdmVudChHZGtFdmVudCogZXZlbnQpCiAgICAg
ewotICAgICAgICBHZGtFdmVudCogZXZlbnQgPSByZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4o
YnV0dG9uRXZlbnQpOwogICAgICAgICBpbnQgZG91YmxlQ2xpY2tEaXN0YW5jZSA9IDI1MDsKICAg
ICAgICAgaW50IGRvdWJsZUNsaWNrVGltZSA9IDU7CiAgICAgICAgIGdfb2JqZWN0X2dldChndGtf
c2V0dGluZ3NfZ2V0X2Zvcl9zY3JlZW4oZ2RrX2V2ZW50X2dldF9zY3JlZW4oZXZlbnQpKSwKQEAg
LTExOCwxMCArMTE3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGlmICgoZXZl
bnQtPnR5cGUgPT0gR0RLXzJCVVRUT05fUFJFU1MgfHwgZXZlbnQtPnR5cGUgPT0gR0RLXzNCVVRU
T05fUFJFU1MpCi0gICAgICAgICAgICB8fCAoKHN0ZDo6YWJzKGJ1dHRvbkV2ZW50LT54IC0gcHJl
dmlvdXNDbGlja1BvaW50LngoKSkgPCBkb3VibGVDbGlja0Rpc3RhbmNlKQotICAgICAgICAgICAg
ICAgICYmIChzdGQ6OmFicyhidXR0b25FdmVudC0+eSAtIHByZXZpb3VzQ2xpY2tQb2ludC55KCkp
IDwgZG91YmxlQ2xpY2tEaXN0YW5jZSkKKyAgICAgICAgICAgIHx8ICgoc3RkOjphYnMoZXZlbnQt
PmJ1dHRvbi54IC0gcHJldmlvdXNDbGlja1BvaW50LngoKSkgPCBkb3VibGVDbGlja0Rpc3RhbmNl
KQorICAgICAgICAgICAgICAgICYmIChzdGQ6OmFicyhldmVudC0+YnV0dG9uLnkgLSBwcmV2aW91
c0NsaWNrUG9pbnQueSgpKSA8IGRvdWJsZUNsaWNrRGlzdGFuY2UpCiAgICAgICAgICAgICAgICAg
JiYgKGV2ZW50VGltZSAtIHByZXZpb3VzQ2xpY2tUaW1lIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRvdWJsZUNsaWNrVGltZSkpCi0gICAgICAgICAgICAgICAgJiYgKGJ1dHRvbkV2ZW50LT5idXR0
b24gPT0gcHJldmlvdXNDbGlja0J1dHRvbikpKQorICAgICAgICAgICAgICAgICYmIChldmVudC0+
YnV0dG9uLmJ1dHRvbiA9PSBwcmV2aW91c0NsaWNrQnV0dG9uKSkpCiAgICAgICAgICAgICBjdXJy
ZW50Q2xpY2tDb3VudCsrOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjdXJyZW50Q2xpY2tD
b3VudCA9IDE7CkBAIC0xMjksNyArMTI4LDcgQEAgcHVibGljOgogICAgICAgICBkb3VibGUgeCwg
eTsKICAgICAgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMoZXZlbnQsICZ4LCAmeSk7CiAgICAgICAg
IHByZXZpb3VzQ2xpY2tQb2ludCA9IEludFBvaW50KHgsIHkpOwotICAgICAgICBwcmV2aW91c0Ns
aWNrQnV0dG9uID0gYnV0dG9uRXZlbnQtPmJ1dHRvbjsKKyAgICAgICAgcHJldmlvdXNDbGlja0J1
dHRvbiA9IGV2ZW50LT5idXR0b24uYnV0dG9uOwogICAgICAgICBwcmV2aW91c0NsaWNrVGltZSA9
IGV2ZW50VGltZTsKIAogICAgICAgICByZXR1cm4gY3VycmVudENsaWNrQ291bnQ7CkBAIC03NDEs
MzMgKzc0MCw1OSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VLZXlSZWxlYXNl
RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5KgogICAgIHJldHVybiBHREtfRVZF
TlRfU1RPUDsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUHJl
c3NFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24qIGJ1dHRvbkV2ZW50KQor
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VIYW5kbGVNb3VzZUV2ZW50KFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3QmFzZSwgR2RrRXZlbnQqIGV2ZW50KQogewotICAgIFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CiAgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CisgICAg
QVNTRVJUKCFwcml2LT5hdXRoZW50aWNhdGlvbkRpYWxvZyk7CisKKyAgICBpbnQgY2xpY2tDb3Vu
dCA9IDA7CisKKyAgICBzd2l0Y2ggKGV2ZW50LT50eXBlKSB7CisgICAgY2FzZSBHREtfQlVUVE9O
X1BSRVNTOgorICAgIGNhc2UgR0RLXzJCVVRUT05fUFJFU1M6CisgICAgY2FzZSBHREtfM0JVVFRP
Tl9QUkVTUzogeworICAgICAgICAvLyBGb3IgZG91YmxlIGFuZCB0cmlwbGUgY2xpY2tzIEdESyBz
ZW5kcyBib3RoIGEgbm9ybWFsIGJ1dHRvbiBwcmVzcyBldmVudAorICAgICAgICAvLyBhbmQgYSBz
cGVjaWZpYyB0eXBlIChsaWtlIEdES18yQlVUVE9OX1BSRVNTKS4gSWYgd2UgZGV0ZWN0IGEgc3Bl
Y2lhbCBwcmVzcworICAgICAgICAvLyBjb21pbmcgdXAsIGlnbm9yZSB0aGlzIGV2ZW50IGFzIGl0
IGNlcnRhaW5seSBnZW5lcmF0ZWQgdGhlIGRvdWJsZSBvciB0cmlwbGUKKyAgICAgICAgLy8gY2xp
Y2suIFRoZSBjb25zZXF1ZW5jZSBvZiBub3QgZWF0aW5nIHRoaXMgZXZlbnQgaXMgdHdvIERPTSBi
dXR0b24gcHJlc3MgZXZlbnRzCisgICAgICAgIC8vIGFyZSBnZW5lcmF0ZWQuCisgICAgICAgIEdV
bmlxdWVQdHI8R2RrRXZlbnQ+IG5leHRFdmVudChnZGtfZXZlbnRfcGVlaygpKTsKKyAgICAgICAg
aWYgKG5leHRFdmVudCAmJiAobmV4dEV2ZW50LT5hbnkudHlwZSA9PSBHREtfMkJVVFRPTl9QUkVT
UyB8fCBuZXh0RXZlbnQtPmFueS50eXBlID09IEdES18zQlVUVE9OX1BSRVNTKSkKKyAgICAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChwcml2LT5hdXRoZW50aWNhdGlvbkRpYWxvZykKLSAgICAg
ICAgcmV0dXJuIEdES19FVkVOVF9TVE9QOworICAgICAgICBwcml2LT5pbnB1dE1ldGhvZEZpbHRl
ci5ub3RpZnlNb3VzZUJ1dHRvblByZXNzKCk7CiAKLSAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMo
d2lkZ2V0KTsKKyAgICAgICAgLy8gSWYgaXQncyBhIHJpZ2h0IGNsaWNrIGV2ZW50IHNhdmUgaXQg
YXMgYSBwb3NzaWJsZSBjb250ZXh0IG1lbnUgZXZlbnQuCisgICAgICAgIGlmIChldmVudC0+YnV0
dG9uLmJ1dHRvbiA9PSBHREtfQlVUVE9OX1NFQ09OREFSWSkKKyAgICAgICAgICAgIHByaXYtPmNv
bnRleHRNZW51RXZlbnQucmVzZXQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQpKTsKIAotICAgIHByaXYt
PmlucHV0TWV0aG9kRmlsdGVyLm5vdGlmeU1vdXNlQnV0dG9uUHJlc3MoKTsKKyAgICAgICAgY2xp
Y2tDb3VudCA9IHByaXYtPmNsaWNrQ291bnRlci5jdXJyZW50Q2xpY2tDb3VudEZvckdka0J1dHRv
bkV2ZW50KGV2ZW50KTsKKyAgICB9CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgR0RL
X0JVVFRPTl9SRUxFQVNFOgorICAgICAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMoR1RLX1dJREdF
VCh3ZWJWaWV3QmFzZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19NT1RJT05fTk9U
SUZZOgorICAgIGNhc2UgR0RLX0VOVEVSX05PVElGWToKKyAgICBjYXNlIEdES19MRUFWRV9OT1RJ
Rlk6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KKworICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChO
YXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50LCBjbGlja0NvdW50KSk7Cit9CisKK3N0YXRpYyBnYm9v
bGVhbiB3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQs
IEdka0V2ZW50QnV0dG9uKiBldmVudCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmll
d0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOworICAgIFdlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogCi0gICAgLy8gRm9yIGRvdWJs
ZSBhbmQgdHJpcGxlIGNsaWNrcyBHREsgc2VuZHMgYm90aCBhIG5vcm1hbCBidXR0b24gcHJlc3Mg
ZXZlbnQKLSAgICAvLyBhbmQgYSBzcGVjaWZpYyB0eXBlIChsaWtlIEdES18yQlVUVE9OX1BSRVNT
KS4gSWYgd2UgZGV0ZWN0IGEgc3BlY2lhbCBwcmVzcwotICAgIC8vIGNvbWluZyB1cCwgaWdub3Jl
IHRoaXMgZXZlbnQgYXMgaXQgY2VydGFpbmx5IGdlbmVyYXRlZCB0aGUgZG91YmxlIG9yIHRyaXBs
ZQotICAgIC8vIGNsaWNrLiBUaGUgY29uc2VxdWVuY2Ugb2Ygbm90IGVhdGluZyB0aGlzIGV2ZW50
IGlzIHR3byBET00gYnV0dG9uIHByZXNzIGV2ZW50cwotICAgIC8vIGFyZSBnZW5lcmF0ZWQuCi0g
ICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gbmV4dEV2ZW50KGdka19ldmVudF9wZWVrKCkpOwotICAg
IGlmIChuZXh0RXZlbnQgJiYgKG5leHRFdmVudC0+YW55LnR5cGUgPT0gR0RLXzJCVVRUT05fUFJF
U1MgfHwgbmV4dEV2ZW50LT5hbnkudHlwZSA9PSBHREtfM0JVVFRPTl9QUkVTUykpCisgICAgaWYg
KHByaXYtPmF1dGhlbnRpY2F0aW9uRGlhbG9nKQogICAgICAgICByZXR1cm4gR0RLX0VWRU5UX1NU
T1A7CiAKLSAgICAvLyBJZiBpdCdzIGEgcmlnaHQgY2xpY2sgZXZlbnQgc2F2ZSBpdCBhcyBhIHBv
c3NpYmxlIGNvbnRleHQgbWVudSBldmVudC4KLSAgICBpZiAoYnV0dG9uRXZlbnQtPmJ1dHRvbiA9
PSAzKQotICAgICAgICBwcml2LT5jb250ZXh0TWVudUV2ZW50LnJlc2V0KGdka19ldmVudF9jb3B5
KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihidXR0b25FdmVudCkpKTsKKyAgICB3ZWJraXRX
ZWJWaWV3QmFzZUhhbmRsZU1vdXNlRXZlbnQod2ViVmlld0Jhc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8
R2RrRXZlbnQqPihldmVudCkpOwogCi0gICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2
ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGJ1dHRv
bkV2ZW50KSwKLSAgICAgICAgcHJpdi0+Y2xpY2tDb3VudGVyLmN1cnJlbnRDbGlja0NvdW50Rm9y
R2RrQnV0dG9uRXZlbnQoYnV0dG9uRXZlbnQpKSk7CiAgICAgcmV0dXJuIEdES19FVkVOVF9TVE9Q
OwogfQogCkBAIC03NzksMTIgKzgwNCwyMSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmll
d0Jhc2VCdXR0b25SZWxlYXNlRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QgogICAg
IGlmIChwcml2LT5hdXRoZW50aWNhdGlvbkRpYWxvZykKICAgICAgICAgcmV0dXJuIEdES19FVkVO
VF9TVE9QOwogCi0gICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzKHdpZGdldCk7Ci0gICAgcHJpdi0+
cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQocmVpbnRlcnBy
ZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSwgMCAvKiBjdXJyZW50Q2xpY2tDb3VudCAqLykpOwor
ICAgIHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlTW91c2VFdmVudCh3ZWJWaWV3QmFzZSwgcmVpbnRl
cnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSk7CiAKICAgICByZXR1cm4gR0RLX0VWRU5UX1NU
T1A7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlV2hlZWxFdmVudChX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIEdka0V2ZW50KiBldmVudCwgc3RkOjpvcHRp
b25hbDxXZWJXaGVlbEV2ZW50OjpQaGFzZT4gcGhhc2UgPSBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0
aW9uYWw8V2ViV2hlZWxFdmVudDo6UGhhc2U+IG1vbWVudHVtID0gc3RkOjpudWxsb3B0KQorewor
ICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2Owor
ICAgIEFTU0VSVCghcHJpdi0+YXV0aGVudGljYXRpb25EaWFsb2cpOworICAgIGlmIChwaGFzZSkK
KyAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVs
RXZlbnQoZXZlbnQsIHBoYXNlLnZhbHVlKCksIG1vbWVudHVtLnZhbHVlX29yKFdlYldoZWVsRXZl
bnQ6OlBoYXNlOjpQaGFzZU5vbmUpKSk7CisgICAgZWxzZQorICAgICAgICBwcml2LT5wYWdlUHJv
eHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudChldmVudCkpOworfQorCiBz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VTY3JvbGxFdmVudChHdGtXaWRnZXQqIHdp
ZGdldCwgR2RrRXZlbnRTY3JvbGwqIGV2ZW50KQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CkBAIC03OTYsNyArODMw
LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlU2Nyb2xsRXZlbnQoR3RrV2lk
Z2V0KiB3aWRnZXQsIEdka0V2ZW50U2Nyb2xsKgogICAgIGlmIChwcml2LT5hdXRoZW50aWNhdGlv
bkRpYWxvZykKICAgICAgICAgcmV0dXJuIEdES19FVkVOVF9QUk9QQUdBVEU7CiAKLSAgICBwcml2
LT5wYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudChyZWludGVy
cHJldF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpKSk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VIYW5k
bGVXaGVlbEV2ZW50KHdlYlZpZXdCYXNlLCByZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oZXZl
bnQpKTsKIAogICAgIHJldHVybiBHREtfRVZFTlRfU1RPUDsKIH0KQEAgLTgyNSw3ICs4NTksNyBA
QCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VNb3Rpb25Ob3RpZnlFdmVudChHdGtX
aWRnZXQqIHdpZGdldCwgR2RrRXZlbnRNbwogICAgICAgICByZXR1cm4gd2lkZ2V0Q2xhc3MtPm1v
dGlvbl9ub3RpZnlfZXZlbnQgPyB3aWRnZXRDbGFzcy0+bW90aW9uX25vdGlmeV9ldmVudCh3aWRn
ZXQsIGV2ZW50KSA6IEdES19FVkVOVF9QUk9QQUdBVEU7CiAgICAgfQogCi0gICAgcHJpdi0+cGFn
ZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQocmVpbnRlcnByZXRf
Y2FzdDxHZGtFdmVudCo+KGV2ZW50KSwgMCAvKiBjdXJyZW50Q2xpY2tDb3VudCAqLykpOworICAg
IHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlTW91c2VFdmVudCh3ZWJWaWV3QmFzZSwgcmVpbnRlcnBy
ZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSk7CiAKICAgICByZXR1cm4gR0RLX0VWRU5UX1BST1BB
R0FURTsKIH0KQEAgLTg2Niw3ICs5MDAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmll
d0Jhc2VDcm9zc2luZ05vdGlmeUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudAogICAg
ICAgICBjb3BpZWRFdmVudC0+Y3Jvc3NpbmcueSA9IHk7CiAgICAgfQogCi0gICAgcHJpdi0+cGFn
ZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29waWVkRXZlbnQg
PyBjb3BpZWRFdmVudC5nZXQoKSA6IGV2ZW50LCAwIC8qIGN1cnJlbnRDbGlja0NvdW50ICovKSk7
CisgICAgd2Via2l0V2ViVmlld0Jhc2VIYW5kbGVNb3VzZUV2ZW50KHdlYlZpZXdCYXNlLCBjb3Bp
ZWRFdmVudCA/IGNvcGllZEV2ZW50LmdldCgpIDogZXZlbnQpOwogCiAgICAgcmV0dXJuIEdES19F
VkVOVF9QUk9QQUdBVEU7CiB9CkBAIC05NjAsMTEgKzk5NCwxMDkgQEAgc3RhdGljIGdib29sZWFu
IHdlYmtpdFdlYlZpZXdCYXNlVG91Y2hFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRU
b3VjaCogZXYKICNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogCiAjaWYgSEFWRShHVEtf
R0VTVFVSRVMpCitjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgR2Vz
dHVyZUNvbnRyb2xsZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitw
dWJsaWM6CisgICAgVmlld0dlc3R1cmVDb250cm9sbGVyKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJW
aWV3QmFzZSkKKyAgICAgICAgOiBtX3dlYlZpZXcod2ViVmlld0Jhc2UpCisgICAgeworICAgIH0K
KworcHJpdmF0ZToKKyAgICBzdGF0aWMgR1VuaXF1ZVB0cjxHZGtFdmVudD4gY3JlYXRlU2Nyb2xs
RXZlbnQoR2RrRXZlbnRUb3VjaCogZXZlbnQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25z
dCBGbG9hdFBvaW50JiBkZWx0YSwgYm9vbCBpc1N0b3AgPSBmYWxzZSkKKyAgICB7CisgICAgICAg
IEdVbmlxdWVQdHI8R2RrRXZlbnQ+IHNjcm9sbEV2ZW50KGdka19ldmVudF9uZXcoR0RLX1NDUk9M
TCkpOworICAgICAgICBzY3JvbGxFdmVudC0+c2Nyb2xsLnRpbWUgPSBldmVudC0+dGltZTsKKyAg
ICAgICAgc2Nyb2xsRXZlbnQtPnNjcm9sbC54ID0gcG9pbnQueCgpOworICAgICAgICBzY3JvbGxF
dmVudC0+c2Nyb2xsLnkgPSBwb2ludC55KCk7CisgICAgICAgIHNjcm9sbEV2ZW50LT5zY3JvbGwu
eF9yb290ID0gZXZlbnQtPnhfcm9vdDsKKyAgICAgICAgc2Nyb2xsRXZlbnQtPnNjcm9sbC55X3Jv
b3QgPSBldmVudC0+eV9yb290OworICAgICAgICBzY3JvbGxFdmVudC0+c2Nyb2xsLmRpcmVjdGlv
biA9IEdES19TQ1JPTExfU01PT1RIOworICAgICAgICBzY3JvbGxFdmVudC0+c2Nyb2xsLmRlbHRh
X3ggPSBkZWx0YS54KCk7CisgICAgICAgIHNjcm9sbEV2ZW50LT5zY3JvbGwuZGVsdGFfeSA9IGRl
bHRhLnkoKTsKKyAgICAgICAgc2Nyb2xsRXZlbnQtPnNjcm9sbC5zdGF0ZSA9IGV2ZW50LT5zdGF0
ZTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAyMCwgMCkKKyAgICAgICAgc2Nyb2xsRXZlbnQt
PnNjcm9sbC5pc19zdG9wID0gaXNTdG9wOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGlz
U3RvcCk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHNjcm9sbEV2ZW50OworICAgIH0KKworICAg
IHZvaWQgc2ltdWxhdGVNb3VzZUNsaWNrKGNvbnN0IEdka0V2ZW50VG91Y2gqIGV2ZW50LCB1bnNp
Z25lZCBidXR0b24pCisgICAgeworICAgICAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBwb2ludGVy
RXZlbnQoZ2RrX2V2ZW50X25ldyhHREtfTU9USU9OX05PVElGWSkpOworICAgICAgICBwb2ludGVy
RXZlbnQtPm1vdGlvbi50aW1lID0gZXZlbnQtPnRpbWU7CisgICAgICAgIHBvaW50ZXJFdmVudC0+
bW90aW9uLnggPSBldmVudC0+eDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5tb3Rpb24ueSA9IGV2
ZW50LT55OworICAgICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi54X3Jvb3QgPSBldmVudC0+eF9y
b290OworICAgICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi55X3Jvb3QgPSBldmVudC0+eV9yb290
OworICAgICAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi5zdGF0ZSA9IGV2ZW50LT5zdGF0ZTsKKyAg
ICAgICAgd2Via2l0V2ViVmlld0Jhc2VIYW5kbGVNb3VzZUV2ZW50KG1fd2ViVmlldywgcG9pbnRl
ckV2ZW50LmdldCgpKTsKKworICAgICAgICBwb2ludGVyRXZlbnQucmVzZXQoZ2RrX2V2ZW50X25l
dyhHREtfQlVUVE9OX1BSRVNTKSk7CisgICAgICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLmJ1dHRv
biA9IGJ1dHRvbjsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5idXR0b24udGltZSA9IGV2ZW50LT50
aW1lOworICAgICAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi54ID0gZXZlbnQtPng7CisgICAgICAg
IHBvaW50ZXJFdmVudC0+YnV0dG9uLnkgPSBldmVudC0+eTsKKyAgICAgICAgcG9pbnRlckV2ZW50
LT5idXR0b24ueF9yb290ID0gZXZlbnQtPnhfcm9vdDsKKyAgICAgICAgcG9pbnRlckV2ZW50LT5i
dXR0b24ueV9yb290ID0gZXZlbnQtPnlfcm9vdDsKKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VI
YW5kbGVNb3VzZUV2ZW50KG1fd2ViVmlldywgcG9pbnRlckV2ZW50LmdldCgpKTsKKworICAgICAg
ICBwb2ludGVyRXZlbnQtPnR5cGUgPSBHREtfQlVUVE9OX1JFTEVBU0U7CisgICAgICAgIHdlYmtp
dFdlYlZpZXdCYXNlSGFuZGxlTW91c2VFdmVudChtX3dlYlZpZXcsIHBvaW50ZXJFdmVudC5nZXQo
KSk7CisgICAgfQorCisgICAgdm9pZCB0YXAoR2RrRXZlbnRUb3VjaCogZXZlbnQpIGZpbmFsCisg
ICAgeworICAgICAgICBzaW11bGF0ZU1vdXNlQ2xpY2soZXZlbnQsIEdES19CVVRUT05fUFJJTUFS
WSk7CisgICAgfQorCisgICAgdm9pZCBzdGFydERyYWcoR2RrRXZlbnRUb3VjaCogZXZlbnQsIGNv
bnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQpIGZpbmFsCisgICAgeworICAgICAgICBHVW5pcXVl
UHRyPEdka0V2ZW50PiBzY3JvbGxFdmVudCA9IGNyZWF0ZVNjcm9sbEV2ZW50KGV2ZW50LCBzdGFy
dFBvaW50LCB7IH0pOworICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZUhhbmRsZVdoZWVsRXZlbnQo
bV93ZWJWaWV3LCBzY3JvbGxFdmVudC5nZXQoKSwgV2ViV2hlZWxFdmVudDo6UGhhc2U6OlBoYXNl
QmVnYW4pOworICAgIH0KKworICAgIHZvaWQgZHJhZyhHZGtFdmVudFRvdWNoKiBldmVudCwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IEZsb2F0UG9pbnQmIGRlbHRhKSBmaW5hbAorICAg
IHsKKyAgICAgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gc2Nyb2xsRXZlbnQgPSBjcmVhdGVTY3Jv
bGxFdmVudChldmVudCwgcG9pbnQsIGRlbHRhKTsKKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VI
YW5kbGVXaGVlbEV2ZW50KG1fd2ViVmlldywgc2Nyb2xsRXZlbnQuZ2V0KCksIFdlYldoZWVsRXZl
bnQ6OlBoYXNlOjpQaGFzZUNoYW5nZWQpOworICAgIH0KKworICAgIHZvaWQgc3dpcGUoR2RrRXZl
bnRUb3VjaCogZXZlbnQsIGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KSBmaW5hbAorICAgIHsK
KyAgICAgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gc2Nyb2xsRXZlbnQgPSBjcmVhdGVTY3JvbGxF
dmVudChldmVudCwgRmxvYXRQb2ludDo6bmFycm93UHJlY2lzaW9uKGV2ZW50LT54LCBldmVudC0+
eSksIHZlbG9jaXR5LCB0cnVlKTsKKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VIYW5kbGVXaGVl
bEV2ZW50KG1fd2ViVmlldywgc2Nyb2xsRXZlbnQuZ2V0KCksIFdlYldoZWVsRXZlbnQ6OlBoYXNl
OjpQaGFzZU5vbmUsIFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQaGFzZUJlZ2FuKTsKKyAgICB9CisK
KyAgICB2b2lkIHN0YXJ0Wm9vbShjb25zdCBJbnRQb2ludCYgY2VudGVyLCBkb3VibGUmIGluaXRp
YWxTY2FsZSwgSW50UG9pbnQmIGluaXRpYWxQb2ludCkgZmluYWwKKyAgICB7CisgICAgICAgIGF1
dG8qIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UobV93ZWJWaWV3KTsKKyAgICAgICAg
QVNTRVJUKHBhZ2UpOworICAgICAgICBpbml0aWFsU2NhbGUgPSBwYWdlLT5wYWdlWm9vbUZhY3Rv
cigpOworICAgICAgICBwYWdlLT5nZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjZW50ZXIsIGluaXRp
YWxQb2ludCk7CisgICAgfQorCisgICAgdm9pZCB6b29tKGRvdWJsZSBzY2FsZSkgZmluYWwKKyAg
ICB7CisgICAgICAgIG1fd2ViVmlldy0+cHJpdi0+cGFnZUNsaWVudC0+em9vbShzY2FsZSk7Cisg
ICAgfQorCisgICAgdm9pZCBsb25nUHJlc3MoR2RrRXZlbnRUb3VjaCogZXZlbnQpIGZpbmFsCisg
ICAgeworICAgICAgICBzaW11bGF0ZU1vdXNlQ2xpY2soZXZlbnQsIEdES19CVVRUT05fU0VDT05E
QVJZKTsKKyAgICB9CisKKyAgICBXZWJLaXRXZWJWaWV3QmFzZSogbV93ZWJWaWV3OworfTsKKwog
R2VzdHVyZUNvbnRyb2xsZXImIHdlYmtpdFdlYlZpZXdCYXNlR2VzdHVyZUNvbnRyb2xsZXIoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlmICghcHJpdi0+Z2VzdHVyZUNv
bnRyb2xsZXIpCi0gICAgICAgIHByaXYtPmdlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CisgICAgICAgIHByaXYt
Pmdlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4o
R1RLX1dJREdFVCh3ZWJWaWV3QmFzZSksIHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250
cm9sbGVyPih3ZWJWaWV3QmFzZSkpOwogICAgIHJldHVybiAqcHJpdi0+Z2VzdHVyZUNvbnRyb2xs
ZXI7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9H
ZXN0dXJlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvR2VzdHVy
ZUNvbnRyb2xsZXIuY3BwCmluZGV4IGNlMjU1NjgyNDE3Li4xOWE1NWIxOWY5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvR2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC0y
OCwxMSArMjgsNiBAQAogCiAjaWYgSEFWRShHVEtfR0VTVFVSRVMpCiAKLSNpbmNsdWRlICJOYXRp
dmVXZWJNb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgotI2lu
Y2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJhci5o
PgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIApAQCAtNDAsMTUgKzM1LDE2IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotR2VzdHVyZUNvbnRyb2xsZXI6
Okdlc3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgcGFnZSkKLSAgICA6IG1fZHJhZ0dlc3R1
cmUocGFnZSkKLSAgICAsIG1fc3dpcGVHZXN0dXJlKHBhZ2UpCi0gICAgLCBtX3pvb21HZXN0dXJl
KHBhZ2UpCi0gICAgLCBtX2xvbmdwcmVzc0dlc3R1cmUocGFnZSkKK0dlc3R1cmVDb250cm9sbGVy
OjpHZXN0dXJlQ29udHJvbGxlcihHdGtXaWRnZXQqIHdpZGdldCwgc3RkOjp1bmlxdWVfcHRyPEdl
c3R1cmVDb250cm9sbGVyQ2xpZW50PiYmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KFdURk1vdmUo
Y2xpZW50KSkKKyAgICAsIG1fZHJhZ0dlc3R1cmUod2lkZ2V0LCAqbV9jbGllbnQpCisgICAgLCBt
X3N3aXBlR2VzdHVyZSh3aWRnZXQsICptX2NsaWVudCkKKyAgICAsIG1fem9vbUdlc3R1cmUod2lk
Z2V0LCAqbV9jbGllbnQpCisgICAgLCBtX2xvbmdwcmVzc0dlc3R1cmUod2lkZ2V0LCAqbV9jbGll
bnQpCiB7CiB9CiAKLWJvb2wgR2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZUV2ZW50KGNvbnN0IEdk
a0V2ZW50KiBldmVudCkKK2Jvb2wgR2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZUV2ZW50KEdka0V2
ZW50KiBldmVudCkKIHsKICAgICBib29sIHdhc1Byb2Nlc3NpbmdHZXN0dXJlcyA9IGlzUHJvY2Vz
c2luZ0dlc3R1cmVzKCk7CiAgICAgYm9vbCB0b3VjaEVuZDsKQEAgLTY1LDkgKzYxLDkgQEAgYm9v
bCBHZXN0dXJlQ29udHJvbGxlcjo6aXNQcm9jZXNzaW5nR2VzdHVyZXMoKSBjb25zdAogICAgIHJl
dHVybiBtX2RyYWdHZXN0dXJlLmlzQWN0aXZlKCkgfHwgbV9zd2lwZUdlc3R1cmUuaXNBY3RpdmUo
KSB8fCBtX3pvb21HZXN0dXJlLmlzQWN0aXZlKCkgfHwgbV9sb25ncHJlc3NHZXN0dXJlLmlzQWN0
aXZlKCk7CiB9CiAKLUdlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJlOjpHZXN0dXJlKEd0a0dlc3R1
cmUqIGdlc3R1cmUsIFdlYlBhZ2VQcm94eSYgcGFnZSkKK0dlc3R1cmVDb250cm9sbGVyOjpHZXN0
dXJlOjpHZXN0dXJlKEd0a0dlc3R1cmUqIGdlc3R1cmUsIEdlc3R1cmVDb250cm9sbGVyQ2xpZW50
JiBjbGllbnQpCiAgICAgOiBtX2dlc3R1cmUoYWRvcHRHUmVmKGdlc3R1cmUpKQotICAgICwgbV9w
YWdlKHBhZ2UpCisgICAgLCBtX2NsaWVudChjbGllbnQpCiB7CiAgICAgZ3RrX2V2ZW50X2NvbnRy
b2xsZXJfc2V0X3Byb3BhZ2F0aW9uX3BoYXNlKEdUS19FVkVOVF9DT05UUk9MTEVSKG1fZ2VzdHVy
ZS5nZXQoKSksIEdUS19QSEFTRV9OT05FKTsKIH0KQEAgLTgyLDc1ICs3OCwyOCBAQCBib29sIEdl
c3R1cmVDb250cm9sbGVyOjpHZXN0dXJlOjppc0FjdGl2ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGd0
a19nZXN0dXJlX2lzX2FjdGl2ZShtX2dlc3R1cmUuZ2V0KCkpOwogfQogCi12b2lkIEdlc3R1cmVD
b250cm9sbGVyOjpHZXN0dXJlOjpoYW5kbGVFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQpCit2
b2lkIEdlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJlOjpoYW5kbGVFdmVudChHZGtFdmVudCogZXZl
bnQpCiB7CiAgICAgZ3RrX2V2ZW50X2NvbnRyb2xsZXJfaGFuZGxlX2V2ZW50KEdUS19FVkVOVF9D
T05UUk9MTEVSKG1fZ2VzdHVyZS5nZXQoKSksIGV2ZW50KTsKIH0KIAotdm9pZCBHZXN0dXJlQ29u
dHJvbGxlcjo6R2VzdHVyZTo6c2ltdWxhdGVNb3VzZUNsaWNrKGNvbnN0IEdka0V2ZW50KiBldmVu
dCwgdW5zaWduZWQgYnV0dG9uVHlwZSkKLXsKLSAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBwb2lu
dGVyRXZlbnQoZ2RrX2V2ZW50X25ldyhHREtfTU9USU9OX05PVElGWSkpOwotICAgIHBvaW50ZXJF
dmVudC0+bW90aW9uLnRpbWUgPSBldmVudC0+dG91Y2gudGltZTsKLSAgICBwb2ludGVyRXZlbnQt
Pm1vdGlvbi54ID0gZXZlbnQtPnRvdWNoLng7Ci0gICAgcG9pbnRlckV2ZW50LT5tb3Rpb24ueSA9
IGV2ZW50LT50b3VjaC55OwotICAgIHBvaW50ZXJFdmVudC0+bW90aW9uLnhfcm9vdCA9IGV2ZW50
LT50b3VjaC54X3Jvb3Q7Ci0gICAgcG9pbnRlckV2ZW50LT5tb3Rpb24ueV9yb290ID0gZXZlbnQt
PnRvdWNoLnlfcm9vdDsKLSAgICBwb2ludGVyRXZlbnQtPm1vdGlvbi5zdGF0ZSA9IGV2ZW50LT50
b3VjaC5zdGF0ZTsKLSAgICBtX3BhZ2UuaGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2
ZW50KHBvaW50ZXJFdmVudC5nZXQoKSwgMCkpOwotCi0gICAgcG9pbnRlckV2ZW50LnJlc2V0KGdk
a19ldmVudF9uZXcoR0RLX0JVVFRPTl9QUkVTUykpOwotICAgIHBvaW50ZXJFdmVudC0+YnV0dG9u
LmJ1dHRvbiA9IGJ1dHRvblR5cGU7Ci0gICAgcG9pbnRlckV2ZW50LT5idXR0b24udGltZSA9IGV2
ZW50LT50b3VjaC50aW1lOwotICAgIHBvaW50ZXJFdmVudC0+YnV0dG9uLnggPSBldmVudC0+dG91
Y2gueDsKLSAgICBwb2ludGVyRXZlbnQtPmJ1dHRvbi55ID0gZXZlbnQtPnRvdWNoLnk7Ci0gICAg
cG9pbnRlckV2ZW50LT5idXR0b24ueF9yb290ID0gZXZlbnQtPnRvdWNoLnhfcm9vdDsKLSAgICBw
b2ludGVyRXZlbnQtPmJ1dHRvbi55X3Jvb3QgPSBldmVudC0+dG91Y2gueV9yb290OwotICAgIG1f
cGFnZS5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQocG9pbnRlckV2ZW50Lmdl
dCgpLCAxKSk7Ci0KLSAgICBwb2ludGVyRXZlbnQtPnR5cGUgPSBHREtfQlVUVE9OX1JFTEVBU0U7
Ci0gICAgbV9wYWdlLmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChwb2ludGVy
RXZlbnQuZ2V0KCksIDApKTsKLX0KLQotc3RhdGljIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGNyZWF0
ZVNjcm9sbEV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgZG91YmxlIHgsIGRvdWJsZSB5LCBk
b3VibGUgZGVsdGFYLCBkb3VibGUgZGVsdGFZLCBnYm9vbGVhbiBpc1N0b3ApCi17Ci0gICAgR1Vu
aXF1ZVB0cjxHZGtFdmVudD4gc2Nyb2xsRXZlbnQoZ2RrX2V2ZW50X25ldyhHREtfU0NST0xMKSk7
Ci0gICAgc2Nyb2xsRXZlbnQtPnNjcm9sbC50aW1lID0gZXZlbnQtPnRvdWNoLnRpbWU7Ci0gICAg
c2Nyb2xsRXZlbnQtPnNjcm9sbC54ID0geDsKLSAgICBzY3JvbGxFdmVudC0+c2Nyb2xsLnkgPSB5
OwotICAgIHNjcm9sbEV2ZW50LT5zY3JvbGwueF9yb290ID0gZXZlbnQtPnRvdWNoLnhfcm9vdDsK
LSAgICBzY3JvbGxFdmVudC0+c2Nyb2xsLnlfcm9vdCA9IGV2ZW50LT50b3VjaC55X3Jvb3Q7Ci0g
ICAgc2Nyb2xsRXZlbnQtPnNjcm9sbC5kaXJlY3Rpb24gPSBHREtfU0NST0xMX1NNT09USDsKLSAg
ICBzY3JvbGxFdmVudC0+c2Nyb2xsLmRlbHRhX3ggPSBkZWx0YVg7Ci0gICAgc2Nyb2xsRXZlbnQt
PnNjcm9sbC5kZWx0YV95ID0gZGVsdGFZOwotICAgIHNjcm9sbEV2ZW50LT5zY3JvbGwuc3RhdGUg
PSBldmVudC0+dG91Y2guc3RhdGU7Ci0jaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMjAsIDApCi0g
ICAgc2Nyb2xsRXZlbnQtPnNjcm9sbC5pc19zdG9wID0gaXNTdG9wOwotI2VuZGlmCi0gICAgcmV0
dXJuIHNjcm9sbEV2ZW50OwotfQotCi12b2lkIEdlc3R1cmVDb250cm9sbGVyOjpEcmFnR2VzdHVy
ZTo6c3RhcnREcmFnKGNvbnN0IEdka0V2ZW50KiBldmVudCkKK3ZvaWQgR2VzdHVyZUNvbnRyb2xs
ZXI6OkRyYWdHZXN0dXJlOjpzdGFydERyYWcoR2RrRXZlbnQqIGV2ZW50KQogewogICAgIEFTU0VS
VCghbV9pbkRyYWcpOwotICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IHNjcm9sbEV2ZW50ID0gY3Jl
YXRlU2Nyb2xsRXZlbnQoZXZlbnQsIG1fc3RhcnQueCgpLCBtX3N0YXJ0LnkoKSwgMCwgMCwgRkFM
U0UpOwotICAgIG1fcGFnZS5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoc2Ny
b2xsRXZlbnQuZ2V0KCksIFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQaGFzZUJlZ2FuLCBXZWJXaGVl
bEV2ZW50OjpQaGFzZTo6UGhhc2VOb25lKSk7CisgICAgbV9jbGllbnQuc3RhcnREcmFnKHJlaW50
ZXJwcmV0X2Nhc3Q8R2RrRXZlbnRUb3VjaCo+KGV2ZW50KSwgbV9zdGFydCk7CiB9CiAKLXZvaWQg
R2VzdHVyZUNvbnRyb2xsZXI6OkRyYWdHZXN0dXJlOjpoYW5kbGVEcmFnKGNvbnN0IEdka0V2ZW50
KiBldmVudCwgZG91YmxlIHgsIGRvdWJsZSB5KQordm9pZCBHZXN0dXJlQ29udHJvbGxlcjo6RHJh
Z0dlc3R1cmU6OmhhbmRsZURyYWcoR2RrRXZlbnQqIGV2ZW50LCBkb3VibGUgeCwgZG91YmxlIHkp
CiB7CiAgICAgQVNTRVJUKG1faW5EcmFnKTsKLSAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBzY3Jv
bGxFdmVudCA9IGNyZWF0ZVNjcm9sbEV2ZW50KGV2ZW50LAotICAgICAgICBtX3N0YXJ0LngoKSwg
bV9zdGFydC55KCksCi0gICAgICAgIChtX29mZnNldC54KCkgLSB4KSAvIFNjcm9sbGJhcjo6cGl4
ZWxzUGVyTGluZVN0ZXAoKSwKLSAgICAgICAgKG1fb2Zmc2V0LnkoKSAtIHkpIC8gU2Nyb2xsYmFy
OjpwaXhlbHNQZXJMaW5lU3RlcCgpLAotICAgICAgICBGQUxTRSk7Ci0gICAgbV9wYWdlLmhhbmRs
ZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudChzY3JvbGxFdmVudC5nZXQoKSwgV2ViV2hl
ZWxFdmVudDo6UGhhc2U6OlBoYXNlQ2hhbmdlZCwgV2ViV2hlZWxFdmVudDo6UGhhc2U6OlBoYXNl
Tm9uZSkpOworICAgIG1fY2xpZW50LmRyYWcocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudFRvdWNo
Kj4oZXZlbnQpLCBtX3N0YXJ0LAorICAgICAgICBGbG9hdFBvaW50OjpuYXJyb3dQcmVjaXNpb24o
KG1fb2Zmc2V0LngoKSAtIHgpIC8gU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCAobV9v
ZmZzZXQueSgpIC0geSkgLyBTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpKTsKIH0KIAot
dm9pZCBHZXN0dXJlQ29udHJvbGxlcjo6RHJhZ0dlc3R1cmU6OmhhbmRsZVRhcChjb25zdCBHZGtF
dmVudCogZXZlbnQpCit2b2lkIEdlc3R1cmVDb250cm9sbGVyOjpEcmFnR2VzdHVyZTo6aGFuZGxl
VGFwKEdka0V2ZW50KiBldmVudCkKIHsKICAgICBBU1NFUlQoIW1faW5EcmFnKTsKLSAgICBzaW11
bGF0ZU1vdXNlQ2xpY2soZXZlbnQsIEdES19CVVRUT05fUFJJTUFSWSk7CisgICAgbV9jbGllbnQu
dGFwKHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnRUb3VjaCo+KGV2ZW50KSk7CiB9CiAKIHZvaWQg
R2VzdHVyZUNvbnRyb2xsZXI6OkRyYWdHZXN0dXJlOjpiZWdpbihEcmFnR2VzdHVyZSogZHJhZ0dl
c3R1cmUsIGRvdWJsZSB4LCBkb3VibGUgeSwgR3RrR2VzdHVyZSogZ2VzdHVyZSkKQEAgLTE2NSw3
ICsxMTQsNyBAQCB2b2lkIEdlc3R1cmVDb250cm9sbGVyOjpEcmFnR2VzdHVyZTo6YmVnaW4oRHJh
Z0dlc3R1cmUqIGRyYWdHZXN0dXJlLCBkb3VibGUgeCwgZAogICAgIHVuc2lnbmVkIGRlbGF5Owog
ICAgIGdfb2JqZWN0X2dldChndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyh3aWRnZXQpLCAiZ3RrLWxv
bmctcHJlc3MtdGltZSIsICZkZWxheSwgbnVsbHB0cik7CiAgICAgZHJhZ0dlc3R1cmUtPm1fbG9u
Z1ByZXNzVGltZW91dC5zdGFydE9uZVNob3QoMV9tcyAqIGRlbGF5KTsKLSAgICBkcmFnR2VzdHVy
ZS0+c3RhcnREcmFnKGd0a19nZXN0dXJlX2dldF9sYXN0X2V2ZW50KGdlc3R1cmUsIHNlcXVlbmNl
KSk7CisgICAgZHJhZ0dlc3R1cmUtPnN0YXJ0RHJhZyhjb25zdF9jYXN0PEdka0V2ZW50Kj4oZ3Rr
X2dlc3R1cmVfZ2V0X2xhc3RfZXZlbnQoZ2VzdHVyZSwgc2VxdWVuY2UpKSk7CiB9CiAKIHZvaWQg
R2VzdHVyZUNvbnRyb2xsZXI6OkRyYWdHZXN0dXJlOjp1cGRhdGUoRHJhZ0dlc3R1cmUqIGRyYWdH
ZXN0dXJlLCBkb3VibGUgeCwgZG91YmxlIHksIEd0a0dlc3R1cmUqIGdlc3R1cmUpCkBAIC0xODAs
NyArMTI5LDcgQEAgdm9pZCBHZXN0dXJlQ29udHJvbGxlcjo6RHJhZ0dlc3R1cmU6OnVwZGF0ZShE
cmFnR2VzdHVyZSogZHJhZ0dlc3R1cmUsIGRvdWJsZSB4LAogICAgIH0KIAogICAgIGlmIChkcmFn
R2VzdHVyZS0+bV9pbkRyYWcpCi0gICAgICAgIGRyYWdHZXN0dXJlLT5oYW5kbGVEcmFnKGd0a19n
ZXN0dXJlX2dldF9sYXN0X2V2ZW50KGdlc3R1cmUsIHNlcXVlbmNlKSwgeCwgeSk7CisgICAgICAg
IGRyYWdHZXN0dXJlLT5oYW5kbGVEcmFnKGNvbnN0X2Nhc3Q8R2RrRXZlbnQqPihndGtfZ2VzdHVy
ZV9nZXRfbGFzdF9ldmVudChnZXN0dXJlLCBzZXF1ZW5jZSkpLCB4LCB5KTsKICAgICBkcmFnR2Vz
dHVyZS0+bV9vZmZzZXQuc2V0KHgsIHkpOwogfQogCkBAIC0xOTIsNyArMTQxLDcgQEAgdm9pZCBH
ZXN0dXJlQ29udHJvbGxlcjo6RHJhZ0dlc3R1cmU6OmVuZChEcmFnR2VzdHVyZSogZHJhZ0dlc3R1
cmUsIEdka0V2ZW50U2VxdWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIWRyYWdH
ZXN0dXJlLT5tX2luRHJhZykgewotICAgICAgICBkcmFnR2VzdHVyZS0+aGFuZGxlVGFwKGd0a19n
ZXN0dXJlX2dldF9sYXN0X2V2ZW50KGdlc3R1cmUsIHNlcXVlbmNlKSk7CisgICAgICAgIGRyYWdH
ZXN0dXJlLT5oYW5kbGVUYXAoY29uc3RfY2FzdDxHZGtFdmVudCo+KGd0a19nZXN0dXJlX2dldF9s
YXN0X2V2ZW50KGdlc3R1cmUsIHNlcXVlbmNlKSkpOwogICAgICAgICBndGtfZ2VzdHVyZV9zZXRf
c3RhdGUoZ2VzdHVyZSwgR1RLX0VWRU5UX1NFUVVFTkNFX0RFTklFRCk7CiAgICAgfQogfQpAQCAt
MjAyLDEwICsxNTEsOSBAQCB2b2lkIEdlc3R1cmVDb250cm9sbGVyOjpEcmFnR2VzdHVyZTo6bG9u
Z1ByZXNzRmlyZWQoKQogICAgIG1faW5EcmFnID0gdHJ1ZTsKIH0KIAotR2VzdHVyZUNvbnRyb2xs
ZXI6OkRyYWdHZXN0dXJlOjpEcmFnR2VzdHVyZShXZWJQYWdlUHJveHkmIHBhZ2UpCi0gICAgOiBH
ZXN0dXJlKGd0a19nZXN0dXJlX2RyYWdfbmV3KHBhZ2Uudmlld1dpZGdldCgpKSwgcGFnZSkKK0dl
c3R1cmVDb250cm9sbGVyOjpEcmFnR2VzdHVyZTo6RHJhZ0dlc3R1cmUoR3RrV2lkZ2V0KiB3aWRn
ZXQsIEdlc3R1cmVDb250cm9sbGVyQ2xpZW50JiBjbGllbnQpCisgICAgOiBHZXN0dXJlKGd0a19n
ZXN0dXJlX2RyYWdfbmV3KHdpZGdldCksIGNsaWVudCkKICAgICAsIG1fbG9uZ1ByZXNzVGltZW91
dChSdW5Mb29wOjptYWluKCksIHRoaXMsICZHZXN0dXJlQ29udHJvbGxlcjo6RHJhZ0dlc3R1cmU6
OmxvbmdQcmVzc0ZpcmVkKQotICAgICwgbV9pbkRyYWcoZmFsc2UpCiB7CiAgICAgZ3RrX2dlc3R1
cmVfc2luZ2xlX3NldF90b3VjaF9vbmx5KEdUS19HRVNUVVJFX1NJTkdMRShtX2dlc3R1cmUuZ2V0
KCkpLCBUUlVFKTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9nZXN0dXJlLmdldCgp
LCAiZHJhZy1iZWdpbiIsIEdfQ0FMTEJBQ0soYmVnaW4pLCB0aGlzKTsKQEAgLTIxMywxMCArMTYx
LDkgQEAgR2VzdHVyZUNvbnRyb2xsZXI6OkRyYWdHZXN0dXJlOjpEcmFnR2VzdHVyZShXZWJQYWdl
UHJveHkmIHBhZ2UpCiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fZ2VzdHVyZS5nZXQo
KSwgImVuZCIsIEdfQ0FMTEJBQ0soZW5kKSwgdGhpcyk7CiB9CiAKLXZvaWQgR2VzdHVyZUNvbnRy
b2xsZXI6OlN3aXBlR2VzdHVyZTo6c3RhcnRNb21lbnR1bVNjcm9sbChjb25zdCBHZGtFdmVudCog
ZXZlbnQsIGRvdWJsZSB2ZWxvY2l0eVgsIGRvdWJsZSB2ZWxvY2l0eVkpCit2b2lkIEdlc3R1cmVD
b250cm9sbGVyOjpTd2lwZUdlc3R1cmU6OnN0YXJ0TW9tZW50dW1TY3JvbGwoR2RrRXZlbnQqIGV2
ZW50LCBkb3VibGUgdmVsb2NpdHlYLCBkb3VibGUgdmVsb2NpdHlZKQogewotICAgIEdVbmlxdWVQ
dHI8R2RrRXZlbnQ+IHNjcm9sbEV2ZW50ID0gY3JlYXRlU2Nyb2xsRXZlbnQoZXZlbnQsIGV2ZW50
LT50b3VjaC54LCBldmVudC0+dG91Y2gueSwgdmVsb2NpdHlYLCB2ZWxvY2l0eVksIFRSVUUpOwot
ICAgIG1fcGFnZS5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoc2Nyb2xsRXZl
bnQuZ2V0KCksIFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQaGFzZU5vbmUsIFdlYldoZWVsRXZlbnQ6
OlBoYXNlOjpQaGFzZUJlZ2FuKSk7CisgICAgbV9jbGllbnQuc3dpcGUocmVpbnRlcnByZXRfY2Fz
dDxHZGtFdmVudFRvdWNoKj4oZXZlbnQpLCBGbG9hdFBvaW50OjpuYXJyb3dQcmVjaXNpb24odmVs
b2NpdHlYLCB2ZWxvY2l0eVkpKTsKIH0KIAogdm9pZCBHZXN0dXJlQ29udHJvbGxlcjo6U3dpcGVH
ZXN0dXJlOjpzd2lwZShTd2lwZUdlc3R1cmUqIHN3aXBlR2VzdHVyZSwgZG91YmxlIHZlbG9jaXR5
WCwgZG91YmxlIHZlbG9jaXR5WSwgR3RrR2VzdHVyZSogZ2VzdHVyZSkKQEAgLTIyNywxNiArMTc0
LDIyIEBAIHZvaWQgR2VzdHVyZUNvbnRyb2xsZXI6OlN3aXBlR2VzdHVyZTo6c3dpcGUoU3dpcGVH
ZXN0dXJlKiBzd2lwZUdlc3R1cmUsIGRvdWJsZSB2CiAKICAgICBndGtfZ2VzdHVyZV9zZXRfc2Vx
dWVuY2Vfc3RhdGUoZ2VzdHVyZSwgc2VxdWVuY2UsIEdUS19FVkVOVF9TRVFVRU5DRV9DTEFJTUVE
KTsKIAotICAgIHN3aXBlR2VzdHVyZS0+c3RhcnRNb21lbnR1bVNjcm9sbChndGtfZ2VzdHVyZV9n
ZXRfbGFzdF9ldmVudChnZXN0dXJlLCBzZXF1ZW5jZSksIHZlbG9jaXR5WCwgdmVsb2NpdHlZKTsK
KyAgICBzd2lwZUdlc3R1cmUtPnN0YXJ0TW9tZW50dW1TY3JvbGwoY29uc3RfY2FzdDxHZGtFdmVu
dCo+KGd0a19nZXN0dXJlX2dldF9sYXN0X2V2ZW50KGdlc3R1cmUsIHNlcXVlbmNlKSksIHZlbG9j
aXR5WCwgdmVsb2NpdHlZKTsKIH0KIAotR2VzdHVyZUNvbnRyb2xsZXI6OlN3aXBlR2VzdHVyZTo6
U3dpcGVHZXN0dXJlKFdlYlBhZ2VQcm94eSYgcGFnZSkKLSAgICA6IEdlc3R1cmUoZ3RrX2dlc3R1
cmVfc3dpcGVfbmV3KHBhZ2Uudmlld1dpZGdldCgpKSwgcGFnZSkKK0dlc3R1cmVDb250cm9sbGVy
OjpTd2lwZUdlc3R1cmU6OlN3aXBlR2VzdHVyZShHdGtXaWRnZXQqIHdpZGdldCwgR2VzdHVyZUNv
bnRyb2xsZXJDbGllbnQmIGNsaWVudCkKKyAgICA6IEdlc3R1cmUoZ3RrX2dlc3R1cmVfc3dpcGVf
bmV3KHdpZGdldCksIGNsaWVudCkKIHsKICAgICBndGtfZ2VzdHVyZV9zaW5nbGVfc2V0X3RvdWNo
X29ubHkoR1RLX0dFU1RVUkVfU0lOR0xFKG1fZ2VzdHVyZS5nZXQoKSksIFRSVUUpOwogICAgIGdf
c2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX2dlc3R1cmUuZ2V0KCksICJzd2lwZSIsIEdfQ0FMTEJB
Q0soc3dpcGUpLCB0aGlzKTsKIH0KIAordm9pZCBHZXN0dXJlQ29udHJvbGxlcjo6Wm9vbUdlc3R1
cmU6OmJlZ2luKFpvb21HZXN0dXJlKiB6b29tR2VzdHVyZSwgR2RrRXZlbnRTZXF1ZW5jZSosIEd0
a0dlc3R1cmUqIGdlc3R1cmUpCit7CisgICAgZ3RrX2dlc3R1cmVfc2V0X3N0YXRlKGdlc3R1cmUs
IEdUS19FVkVOVF9TRVFVRU5DRV9DTEFJTUVEKTsKKyAgICB6b29tR2VzdHVyZS0+c3RhcnRab29t
KCk7Cit9CisKIEludFBvaW50IEdlc3R1cmVDb250cm9sbGVyOjpab29tR2VzdHVyZTo6Y2VudGVy
KCkgY29uc3QKIHsKICAgICBkb3VibGUgeCwgeTsKQEAgLTI0NCwxNyArMTk3LDE0IEBAIEludFBv
aW50IEdlc3R1cmVDb250cm9sbGVyOjpab29tR2VzdHVyZTo6Y2VudGVyKCkgY29uc3QKICAgICBy
ZXR1cm4gSW50UG9pbnQoeCwgeSk7CiB9CiAKLXZvaWQgR2VzdHVyZUNvbnRyb2xsZXI6Olpvb21H
ZXN0dXJlOjpiZWdpbihab29tR2VzdHVyZSogem9vbUdlc3R1cmUsIEdka0V2ZW50U2VxdWVuY2Uq
LCBHdGtHZXN0dXJlKiBnZXN0dXJlKQordm9pZCBHZXN0dXJlQ29udHJvbGxlcjo6Wm9vbUdlc3R1
cmU6OnN0YXJ0Wm9vbSgpCiB7Ci0gICAgZ3RrX2dlc3R1cmVfc2V0X3N0YXRlKGdlc3R1cmUsIEdU
S19FVkVOVF9TRVFVRU5DRV9DTEFJTUVEKTsKLQotICAgIHpvb21HZXN0dXJlLT5tX2luaXRpYWxT
Y2FsZSA9IHpvb21HZXN0dXJlLT5tX3BhZ2UucGFnZVpvb21GYWN0b3IoKTsKLSAgICB6b29tR2Vz
dHVyZS0+bV9wYWdlLmdldENlbnRlckZvclpvb21HZXN0dXJlKHpvb21HZXN0dXJlLT5jZW50ZXIo
KSwgem9vbUdlc3R1cmUtPm1faW5pdGlhbFBvaW50KTsKKyAgICBtX2NsaWVudC5zdGFydFpvb20o
Y2VudGVyKCksIG1faW5pdGlhbFNjYWxlLCBtX2luaXRpYWxQb2ludCk7CiB9CiAKIHZvaWQgR2Vz
dHVyZUNvbnRyb2xsZXI6Olpvb21HZXN0dXJlOjpoYW5kbGVab29tKCkKIHsKLSAgICB3ZWJraXRf
d2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwoV0VCS0lUX1dFQl9WSUVXKG1fcGFnZS52aWV3V2lkZ2V0
KCkpLCBtX3NjYWxlKTsKKyAgICBtX2NsaWVudC56b29tKG1fc2NhbGUpOwogfQogCiB2b2lkIEdl
c3R1cmVDb250cm9sbGVyOjpab29tR2VzdHVyZTo6c2NhbGVDaGFuZ2VkKFpvb21HZXN0dXJlKiB6
b29tR2VzdHVyZSwgZG91YmxlIHNjYWxlLCBHdGtHZXN0dXJlKikKQEAgLTI2NywxOSArMjE3LDE3
IEBAIHZvaWQgR2VzdHVyZUNvbnRyb2xsZXI6Olpvb21HZXN0dXJlOjpzY2FsZUNoYW5nZWQoWm9v
bUdlc3R1cmUqIHpvb21HZXN0dXJlLCBkb3ViCiAgICAgem9vbUdlc3R1cmUtPm1faWRsZS5zdGFy
dE9uZVNob3QoMF9zKTsKIH0KIAotR2VzdHVyZUNvbnRyb2xsZXI6Olpvb21HZXN0dXJlOjpab29t
R2VzdHVyZShXZWJQYWdlUHJveHkmIHBhZ2UpCi0gICAgOiBHZXN0dXJlKGd0a19nZXN0dXJlX3pv
b21fbmV3KHBhZ2Uudmlld1dpZGdldCgpKSwgcGFnZSkKLSAgICAsIG1faW5pdGlhbFNjYWxlKDAp
Ci0gICAgLCBtX3NjYWxlKDApCitHZXN0dXJlQ29udHJvbGxlcjo6Wm9vbUdlc3R1cmU6Olpvb21H
ZXN0dXJlKEd0a1dpZGdldCogd2lkZ2V0LCBHZXN0dXJlQ29udHJvbGxlckNsaWVudCYgY2xpZW50
KQorICAgIDogR2VzdHVyZShndGtfZ2VzdHVyZV96b29tX25ldyh3aWRnZXQpLCBjbGllbnQpCiAg
ICAgLCBtX2lkbGUoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmR2VzdHVyZUNvbnRyb2xsZXI6Olpv
b21HZXN0dXJlOjpoYW5kbGVab29tKQogewogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZCht
X2dlc3R1cmUuZ2V0KCksICJiZWdpbiIsIEdfQ0FMTEJBQ0soYmVnaW4pLCB0aGlzKTsKICAgICBn
X3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9nZXN0dXJlLmdldCgpLCAic2NhbGUtY2hhbmdlZCIs
IEdfQ0FMTEJBQ0soc2NhbGVDaGFuZ2VkKSwgdGhpcyk7CiB9CiAKLXZvaWQgR2VzdHVyZUNvbnRy
b2xsZXI6OkxvbmdQcmVzc0dlc3R1cmU6OmxvbmdQcmVzc2VkKGNvbnN0IEdka0V2ZW50KiBldmVu
dCkKK3ZvaWQgR2VzdHVyZUNvbnRyb2xsZXI6OkxvbmdQcmVzc0dlc3R1cmU6OmxvbmdQcmVzc2Vk
KEdka0V2ZW50KiBldmVudCkKIHsKLSAgICBzaW11bGF0ZU1vdXNlQ2xpY2soZXZlbnQsIEdES19C
VVRUT05fU0VDT05EQVJZKTsKKyAgICBtX2NsaWVudC5sb25nUHJlc3MocmVpbnRlcnByZXRfY2Fz
dDxHZGtFdmVudFRvdWNoKj4oZXZlbnQpKTsKIH0KIAogdm9pZCBHZXN0dXJlQ29udHJvbGxlcjo6
TG9uZ1ByZXNzR2VzdHVyZTo6cHJlc3NlZChMb25nUHJlc3NHZXN0dXJlKiBsb25ncHJlc3NHZXN0
dXJlLCBkb3VibGUgeCwgZG91YmxlIHksIEd0a0dlc3R1cmUqIGdlc3R1cmUpCkBAIC0yOTAsMTEg
KzIzOCwxMSBAQCB2b2lkIEdlc3R1cmVDb250cm9sbGVyOjpMb25nUHJlc3NHZXN0dXJlOjpwcmVz
c2VkKExvbmdQcmVzc0dlc3R1cmUqIGxvbmdwcmVzc0dlcwogCiAgICAgZ3RrX2dlc3R1cmVfc2V0
X3NlcXVlbmNlX3N0YXRlKGdlc3R1cmUsIHNlcXVlbmNlLCBHVEtfRVZFTlRfU0VRVUVOQ0VfQ0xB
SU1FRCk7CiAKLSAgICBsb25ncHJlc3NHZXN0dXJlLT5sb25nUHJlc3NlZChndGtfZ2VzdHVyZV9n
ZXRfbGFzdF9ldmVudChnZXN0dXJlLCBzZXF1ZW5jZSkpOworICAgIGxvbmdwcmVzc0dlc3R1cmUt
PmxvbmdQcmVzc2VkKGNvbnN0X2Nhc3Q8R2RrRXZlbnQqPihndGtfZ2VzdHVyZV9nZXRfbGFzdF9l
dmVudChnZXN0dXJlLCBzZXF1ZW5jZSkpKTsKIH0KIAotR2VzdHVyZUNvbnRyb2xsZXI6OkxvbmdQ
cmVzc0dlc3R1cmU6OkxvbmdQcmVzc0dlc3R1cmUoV2ViUGFnZVByb3h5JiBwYWdlKQotICAgIDog
R2VzdHVyZShndGtfZ2VzdHVyZV9sb25nX3ByZXNzX25ldyhwYWdlLnZpZXdXaWRnZXQoKSksIHBh
Z2UpCitHZXN0dXJlQ29udHJvbGxlcjo6TG9uZ1ByZXNzR2VzdHVyZTo6TG9uZ1ByZXNzR2VzdHVy
ZShHdGtXaWRnZXQqIHdpZGdldCwgR2VzdHVyZUNvbnRyb2xsZXJDbGllbnQmIGNsaWVudCkKKyAg
ICA6IEdlc3R1cmUoZ3RrX2dlc3R1cmVfbG9uZ19wcmVzc19uZXcod2lkZ2V0KSwgY2xpZW50KQog
ewogICAgIGd0a19nZXN0dXJlX3NpbmdsZV9zZXRfdG91Y2hfb25seShHVEtfR0VTVFVSRV9TSU5H
TEUobV9nZXN0dXJlLmdldCgpKSwgVFJVRSk7CiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVk
KG1fZ2VzdHVyZS5nZXQoKSwgInByZXNzZWQiLCBHX0NBTExCQUNLKHByZXNzZWQpLCB0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9HZXN0dXJlQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0dlc3R1cmVDb250cm9sbGVyLmgKaW5k
ZXggOTA3YmYyN2VjYTQuLjhjNDBiMTc3YTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvR2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvR2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgR2VzdHVyZUNvbnRyb2xs
ZXJfaAotI2RlZmluZSBHZXN0dXJlQ29udHJvbGxlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEhB
VkUoR1RLX0dFU1RVUkVTKQogCkBAIC0zNCwyMCArMzMsMzYgQEAKICNpbmNsdWRlIDx3dGYvZ2xp
Yi9HUmVmUHRyLmg+CiAKIHR5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OwordHlwZWRl
ZiBzdHJ1Y3QgX0dka0V2ZW50VG91Y2ggR2RrRXZlbnRUb3VjaDsKIHR5cGVkZWYgc3RydWN0IF9H
ZGtFdmVudFNlcXVlbmNlIEdka0V2ZW50U2VxdWVuY2U7CiB0eXBlZGVmIHN0cnVjdCBfR3RrR2Vz
dHVyZSBHdGtHZXN0dXJlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYlBhZ2VQcm94
eTsKKworY2xhc3MgR2VzdHVyZUNvbnRyb2xsZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgdm9pZCB0YXAoR2RrRXZlbnRUb3VjaCopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFy
dERyYWcoR2RrRXZlbnRUb3VjaCosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRyYWcoR2RrRXZlbnRUb3VjaCosIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIHN3aXBlKEdka0V2ZW50VG91Y2gqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0Wm9vbShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Y2VudGVyLCBkb3VibGUmIGluaXRpYWxTY2FsZSwgV2ViQ29yZTo6SW50UG9pbnQmIGluaXRpYWxQ
b2ludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB6b29tKGRvdWJsZSkgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIGxvbmdQcmVzcyhHZGtFdmVudFRvdWNoKikgPSAwOworfTsKIAogY2xhc3MgR2Vz
dHVyZUNvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdlc3R1cmVDb250cm9s
bGVyKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIEdlc3R1
cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYpOworICAgIEdlc3R1cmVDb250cm9sbGVyKEd0a1dp
ZGdldCosIHN0ZDo6dW5pcXVlX3B0cjxHZXN0dXJlQ29udHJvbGxlckNsaWVudD4mJik7CiAKICAg
ICBib29sIGlzUHJvY2Vzc2luZ0dlc3R1cmVzKCkgY29uc3Q7Ci0gICAgYm9vbCBoYW5kbGVFdmVu
dChjb25zdCBHZGtFdmVudCopOworICAgIGJvb2wgaGFuZGxlRXZlbnQoR2RrRXZlbnQqKTsKIAog
ICAgIHZvaWQgcmVzZXQoKQogICAgIHsKQEAgLTYyLDI1ICs3NywyNCBAQCBwcml2YXRlOgogICAg
IHB1YmxpYzoKICAgICAgICAgdm9pZCByZXNldCgpOwogICAgICAgICBib29sIGlzQWN0aXZlKCkg
Y29uc3Q7Ci0gICAgICAgIHZvaWQgaGFuZGxlRXZlbnQoY29uc3QgR2RrRXZlbnQqKTsKLSAgICAg
ICAgdm9pZCBzaW11bGF0ZU1vdXNlQ2xpY2soY29uc3QgR2RrRXZlbnQqLCB1bnNpZ25lZCk7Cisg
ICAgICAgIHZvaWQgaGFuZGxlRXZlbnQoR2RrRXZlbnQqKTsKIAogICAgIHByb3RlY3RlZDoKLSAg
ICAgICAgR2VzdHVyZShHdGtHZXN0dXJlKiwgV2ViUGFnZVByb3h5Jik7CisgICAgICAgIEdlc3R1
cmUoR3RrR2VzdHVyZSosIEdlc3R1cmVDb250cm9sbGVyQ2xpZW50Jik7CiAKICAgICAgICAgR1Jl
ZlB0cjxHdGtHZXN0dXJlPiBtX2dlc3R1cmU7Ci0gICAgICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdl
OworICAgICAgICBHZXN0dXJlQ29udHJvbGxlckNsaWVudCYgbV9jbGllbnQ7CiAgICAgfTsKIAog
ICAgIGNsYXNzIERyYWdHZXN0dXJlIGZpbmFsIDogcHVibGljIEdlc3R1cmUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgRHJhZ0dlc3R1cmUoV2ViUGFnZVByb3h5Jik7CisgICAgICAgIERyYWdHZXN0
dXJlKEd0a1dpZGdldCosIEdlc3R1cmVDb250cm9sbGVyQ2xpZW50Jik7CiAKICAgICBwcml2YXRl
OgogICAgICAgICAvLyBOb3RpZnkgdGhhdCBhIGRyYWcgc3RhcnRlZCwgYWxsb3dpbmcgdG8gc3Rv
cCBraW5ldGljIGRlY2VsZXJhdGlvbi4KLSAgICAgICAgdm9pZCBzdGFydERyYWcoY29uc3QgR2Rr
RXZlbnQqKTsKLSAgICAgICAgdm9pZCBoYW5kbGVEcmFnKGNvbnN0IEdka0V2ZW50KiwgZG91Ymxl
IHgsIGRvdWJsZSB5KTsKLSAgICAgICAgdm9pZCBoYW5kbGVUYXAoY29uc3QgR2RrRXZlbnQqKTsK
KyAgICAgICAgdm9pZCBzdGFydERyYWcoR2RrRXZlbnQqKTsKKyAgICAgICAgdm9pZCBoYW5kbGVE
cmFnKEdka0V2ZW50KiwgZG91YmxlIHgsIGRvdWJsZSB5KTsKKyAgICAgICAgdm9pZCBoYW5kbGVU
YXAoR2RrRXZlbnQqKTsKICAgICAgICAgdm9pZCBsb25nUHJlc3NGaXJlZCgpOwogCiAgICAgICAg
IHN0YXRpYyB2b2lkIGJlZ2luKERyYWdHZXN0dXJlKiwgZG91YmxlIHgsIGRvdWJsZSB5LCBHdGtH
ZXN0dXJlKik7CkBAIC05MSwzMiArMTA1LDMzIEBAIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgbV9vZmZzZXQ7CiAgICAgICAgIFJ1bkxvb3A6OlRpbWVyPERyYWdHZXN0dXJl
PiBtX2xvbmdQcmVzc1RpbWVvdXQ7CiAgICAgICAgIEdSZWZQdHI8R3RrR2VzdHVyZT4gbV9sb25n
UHJlc3M7Ci0gICAgICAgIGJvb2wgbV9pbkRyYWc7CisgICAgICAgIGJvb2wgbV9pbkRyYWcgeyBm
YWxzZSB9OwogICAgIH07CiAKICAgICBjbGFzcyBTd2lwZUdlc3R1cmUgZmluYWwgOiBwdWJsaWMg
R2VzdHVyZSB7CiAgICAgcHVibGljOgotICAgICAgICBTd2lwZUdlc3R1cmUoV2ViUGFnZVByb3h5
Jik7CisgICAgICAgIFN3aXBlR2VzdHVyZShHdGtXaWRnZXQqLCBHZXN0dXJlQ29udHJvbGxlckNs
aWVudCYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBzdGFydE1vbWVudHVtU2Nyb2xs
KGNvbnN0IEdka0V2ZW50KiwgZG91YmxlIHZlbG9jaXR5WCwgZG91YmxlIHZlbG9jaXR5WSk7Cisg
ICAgICAgIHZvaWQgc3RhcnRNb21lbnR1bVNjcm9sbChHZGtFdmVudCosIGRvdWJsZSB2ZWxvY2l0
eVgsIGRvdWJsZSB2ZWxvY2l0eVkpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHN3aXBlKFN3aXBl
R2VzdHVyZSosIGRvdWJsZSB2ZWxvY2l0eVgsIGRvdWJsZSB2ZWxvY2l0eVksIEd0a0dlc3R1cmUq
KTsKICAgICB9OwogCiAgICAgY2xhc3MgWm9vbUdlc3R1cmUgZmluYWwgOiBwdWJsaWMgR2VzdHVy
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBab29tR2VzdHVyZShXZWJQYWdlUHJveHkmKTsKKyAg
ICAgICAgWm9vbUdlc3R1cmUoR3RrV2lkZ2V0KiwgR2VzdHVyZUNvbnRyb2xsZXJDbGllbnQmKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYkNvcmU6OkludFBvaW50IGNlbnRlcigpIGNvbnN0
OworICAgICAgICB2b2lkIHN0YXJ0Wm9vbSgpOwogICAgICAgICB2b2lkIGhhbmRsZVpvb20oKTsK
IAogICAgICAgICBzdGF0aWMgdm9pZCBiZWdpbihab29tR2VzdHVyZSosIEdka0V2ZW50U2VxdWVu
Y2UqLCBHdGtHZXN0dXJlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHNjYWxlQ2hhbmdlZChab29t
R2VzdHVyZSosIGRvdWJsZSBzY2FsZSwgR3RrR2VzdHVyZSopOwogCi0gICAgICAgIGdkb3VibGUg
bV9pbml0aWFsU2NhbGU7Ci0gICAgICAgIGdkb3VibGUgbV9zY2FsZTsKKyAgICAgICAgZG91Ymxl
IG1faW5pdGlhbFNjYWxlIHsgMCB9OworICAgICAgICBkb3VibGUgbV9zY2FsZSB7IDAgfTsKICAg
ICAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9pbml0aWFsUG9pbnQ7CiAgICAgICAgIFdlYkNvcmU6
OkludFBvaW50IG1fdmlld1BvaW50OwogICAgICAgICBSdW5Mb29wOjpUaW1lcjxab29tR2VzdHVy
ZT4gbV9pZGxlOwpAQCAtMTI0LDE0ICsxMzksMTUgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIExv
bmdQcmVzc0dlc3R1cmUgZmluYWwgOiBwdWJsaWMgR2VzdHVyZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBMb25nUHJlc3NHZXN0dXJlKFdlYlBhZ2VQcm94eSYpOworICAgICAgICBMb25nUHJlc3NH
ZXN0dXJlKEd0a1dpZGdldCosIEdlc3R1cmVDb250cm9sbGVyQ2xpZW50Jik7CiAKICAgICBwcml2
YXRlOgotICAgICAgICB2b2lkIGxvbmdQcmVzc2VkKGNvbnN0IEdka0V2ZW50Kik7CisgICAgICAg
IHZvaWQgbG9uZ1ByZXNzZWQoR2RrRXZlbnQqKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBwcmVz
c2VkKExvbmdQcmVzc0dlc3R1cmUqLCBkb3VibGUgeCwgZG91YmxlIHksIEd0a0dlc3R1cmUqKTsK
ICAgICB9OwogCisgICAgc3RkOjp1bmlxdWVfcHRyPEdlc3R1cmVDb250cm9sbGVyQ2xpZW50PiBt
X2NsaWVudDsKICAgICBEcmFnR2VzdHVyZSBtX2RyYWdHZXN0dXJlOwogICAgIFN3aXBlR2VzdHVy
ZSBtX3N3aXBlR2VzdHVyZTsKICAgICBab29tR2VzdHVyZSBtX3pvb21HZXN0dXJlOwpAQCAtMTQx
LDUgKzE1NywzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEhBVkUoR1RLX0dFU1RVUkVTKQotCi0jZW5kaWYgLy8gR2VzdHVyZUNvbnRyb2xsZXJfaAo=
</data>
<flag name="review"
          id="351565"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>