<?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>211021</bug_id>
          
          <creation_ts>2020-04-25 06:27:26 -0700</creation_ts>
          <short_desc>[GTK4][Wayland] Add support for rendering web view contents</short_desc>
          <delta_ts>2020-04-28 04:28:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>210967</dependson>
          <blocked>210100</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>csaavedra</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1645581</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-25 06:27:26 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645583</commentid>
    <comment_count>1</comment_count>
      <attachid>397561</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-25 06:35:38 -0700</bug_when>
    <thetext>Created attachment 397561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645585</commentid>
    <comment_count>2</comment_count>
      <attachid>397563</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-25 06:46:34 -0700</bug_when>
    <thetext>Created attachment 397563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645993</commentid>
    <comment_count>3</comment_count>
      <attachid>397563</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-04-27 07:34:12 -0700</bug_when>
    <thetext>Comment on attachment 397563
Patch

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

Looks good overall, I have left a few comments but nothing that should prevent landing.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:606
&gt; +    gtk_widget_set_vexpand(viewWidget, TRUE);

Wouldn&apos;t we also want a call to gtk_widget_set_hexpand(viewWidget, TRUE) here?
In general we want the web view to take as much space as possible inside its
continer, in both directions, unless I am missing something.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:754
&gt; +    *minimumSize = 0;

Is it really useful to have zero as the minimum size? I know that using zero as
minimum is the current behaviour for GTK3 as well, but it strikes me as odd because
that can lead to situations like having a simple window without window controls
and only a web view inside having a 0×0 size if gtk_window_set_default_size() was
not called on the window—and that seems… bad?

This is more of a doubt I have than a request to change the minimum size, so feel
free to ignore this comment :]

&gt; Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:222
&gt; +#endif

We could have a WebCore::gtkCreateGLContext() helper function in GtkUtilities.{h,cpp}
to avoid the #ifdefs here.

&gt; Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:362
&gt;      glDeleteFramebuffers(1, &amp;fb);

Unrelated to this patch, but maybe worth mentioning: There is no need to create
and delete the FBO every time this function is called, it could be created the
first time it&apos;s needed and reused aftwerwards (binding-unbinding is still neded,
of course).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646417</commentid>
    <comment_count>4</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2020-04-28 01:33:14 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #3)
&gt; Comment on attachment 397563 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=397563&amp;action=review
&gt; 
&gt; Looks good overall, I have left a few comments but nothing that should
&gt; prevent landing.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:606
&gt; &gt; +    gtk_widget_set_vexpand(viewWidget, TRUE);
&gt; 
&gt; Wouldn&apos;t we also want a call to gtk_widget_set_hexpand(viewWidget, TRUE)
&gt; here?
&gt; In general we want the web view to take as much space as possible inside its
&gt; continer, in both directions, unless I am missing something.

It&apos;s been a long time since I wrote any GTK+ widget, so take this with a grain of salt. But the idea is that for widgets there&apos;s a natural direction of expansion. In the case of the webview, that would be vertical (as that&apos;s how usually the content flow for webpages goes). Horizontal expansion is not necessarily wanted, that depends on what horizontal siblings the widget has and how the application wants to distribute the space between them.

This can be of course overriden by the application developers, just like with any widget.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:754
&gt; &gt; +    *minimumSize = 0;
&gt; 
&gt; Is it really useful to have zero as the minimum size? I know that using zero
&gt; as
&gt; minimum is the current behaviour for GTK3 as well, but it strikes me as odd
&gt; because
&gt; that can lead to situations like having a simple window without window
&gt; controls
&gt; and only a web view inside having a 0×0 size if
&gt; gtk_window_set_default_size() was
&gt; not called on the window—and that seems… bad?

Minimum size is the hard minimum. If you have anything other than 0x0 then apps that need a smaller size will not be able to do that. If an app is not setting a reasonable size for its windows, that&apos;s their bug.


Also with a grain of salt, as I said it&apos;s been a while since I wrote GTK+ widget layout code of any kind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646441</commentid>
    <comment_count>5</comment_count>
      <attachid>397563</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-28 04:24:18 -0700</bug_when>
    <thetext>Comment on attachment 397563
Patch

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

Thanks!

&gt;&gt;&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:606
&gt;&gt;&gt; +    gtk_widget_set_vexpand(viewWidget, TRUE);
&gt;&gt; 
&gt;&gt; Wouldn&apos;t we also want a call to gtk_widget_set_hexpand(viewWidget, TRUE) here?
&gt;&gt; In general we want the web view to take as much space as possible inside its
&gt;&gt; continer, in both directions, unless I am missing something.
&gt; 
&gt; It&apos;s been a long time since I wrote any GTK+ widget, so take this with a grain of salt. But the idea is that for widgets there&apos;s a natural direction of expansion. In the case of the webview, that would be vertical (as that&apos;s how usually the content flow for webpages goes). Horizontal expansion is not necessarily wanted, that depends on what horizontal siblings the widget has and how the application wants to distribute the space between them.
&gt; 
&gt; This can be of course overriden by the application developers, just like with any widget.

I added this here because I was getting always a 0 height in size allocate. But it seems to be because there&apos;s no gtk_box_pack APIs in GTK4, that received the expand property. Now we use gtk_container_add() so we need to call set_vexpand to get the same as pack. So, I&apos;ll move this to the MiniBrowser instead.

&gt;&gt; Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:222
&gt;&gt; +#endif
&gt; 
&gt; We could have a WebCore::gtkCreateGLContext() helper function in GtkUtilities.{h,cpp}
&gt; to avoid the #ifdefs here.

It&apos;s just one line and only used here. We could move it to a helper, but here, not in WebCore.

&gt;&gt; Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:362
&gt;&gt;      glDeleteFramebuffers(1, &amp;fb);
&gt; 
&gt; Unrelated to this patch, but maybe worth mentioning: There is no need to create
&gt; and delete the FBO every time this function is called, it could be created the
&gt; first time it&apos;s needed and reused aftwerwards (binding-unbinding is still neded,
&gt; of course).

This is fallback code that isn&apos;t used in most of the cases. In any case, it&apos;s existing code, so any optimization can be done in a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646443</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-28 04:28:44 -0700</bug_when>
    <thetext>Committed r260816: &lt;https://trac.webkit.org/changeset/260816&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397561</attachid>
            <date>2020-04-25 06:35:38 -0700</date>
            <delta_ts>2020-04-25 06:46:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk4-wl-rendering.diff</filename>
            <type>text/plain</type>
            <size>15631</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYTBlYjI0MzdiZDU4Li45MWI3OTg0ZDIzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMjAtMDQtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEs0XVtXYXlsYW5kXSBBZGQgc3VwcG9ydCBmb3IgcmVuZGVy
aW5nIHdlYiB2aWV3IGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTEwMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnQgR3RrV2lkZ2V0Q2xhc3M6OnNuYXBzaG90IGFuZCBHdGtX
aWRnZXRDbGFzczo6bWVhc3VyZSBpbnN0ZWFkIG9mIEd0a1dpZGdldENsYXNzOjpkcmF3IGFuZAor
ICAgICAgICBHdGtXaWRnZXRDbGFzczo6Z2V0X3ByZWZlcnJlZF93aWR0aHxoZWlnaHQuIEFkZCBB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6c25hcHNob3QoKSBwdXJlIHZpcnR1YWwgdG8gYmUgdXNl
ZCB3aXRoCisgICAgICAgIEdUSzQgaW5zdGVhZCBvZiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6
cGFpbnQoKSwgYW5kIGltcGxlbWVudCBpdCBmb3IgV2F5bGFuZC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdCYXNlUmVhbGl6ZSk6IENoYWluIHVwIGJlZm9yZSBjYWxsaW5nIEFjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlOjpyZWFsaXplKCkuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVk
KTogU2V0IHZlcnRpY2FsIGV4cGFuZCB0byBUUlVFLgorICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VTbmFwc2hvdCk6IENhbGwgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnNuYXBzaG90KCkuCisg
ICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZU1lYXN1cmUpOiBSZXR1cm4gdGhlIG5hdHVyYWwgd2lk
dGgvaGVpZ2h0IGZvciB0aGUgV2ViVmlldy4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19iYXNl
X2NsYXNzX2luaXQpOiBBZGQgaW1wbGVtZW50YXRpb25zIGZvciBzbmFwc2hvdCBhbmQgbWVhc3Vy
ZSB2ZnVuY3MuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5k
Ojp0cnlFbnN1cmVHTENvbnRleHQpOiBBbHdheXMgdHJ5IHRvIHJlYWxpemUgdGhlIGNvbnRleHQg
aGVyZSwgc2luY2UgdGhhdAorICAgICAgICBjYW4gZmFpbCB0b28uCisgICAgICAgIChXZWJLaXQ6
OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6dHJ5RW5zdXJlVGV4dHVyZSk6IEhlbHBl
ciB0byBzaGFyZSB0aGUgY29kZSB0byBwcmVwYXJlIHRoZSB0ZXh0dXJlLgorICAgICAgICAoV2Vi
S2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmRvd25sb2FkVGV4dHVyZSk6IEhl
bHBlciB0byBzaGFyZSB0aGUgY29kZSB0byBkb3dubG9hZCB0aGUgdGV4dHVyZS4KKyAgICAgICAg
KFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpzbmFwc2hvdCk6IFVzZSBn
dGtfc25hcHNob3RfYXBwZW5kX3RleHR1cmUoKS4KKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpwYWludCk6IFVzZSBuZXcgaGVscGVycy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6c25hcHNob3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL0hhcmR3YXJlQWNjZWxlcmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkhhcmR3YXJlQWNjZWxlcmF0aW9uTWFuYWdlcjo6SGFyZHdhcmVBY2NlbGVyYXRp
b25NYW5hZ2VyKTogRm9yY2UgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbW9kZSBmb3IgR1RLNC4K
KwogMjAyMC0wNC0yNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUSzRdIE1ha2UgaXQgcG9zc2libGUgdG8gYnVpbGQgd2l0aCBHVEs0IHdp
dGhvdXQgZXJyb3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGFiZTAxNDQ2Zjg3ZC4uN2NjYmQwOGU3YmNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcApAQCAtNDQyLDEwICs0NDIsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgICAgICB3ZWJraXRJbnB1dE1ldGhv
ZENvbnRleHRJbXBsR3RrU2V0Q2xpZW50V2luZG93KFdFQktJVF9JTlBVVF9NRVRIT0RfQ09OVEVY
VF9JTVBMX0dUSyhpbUNvbnRleHQpLCB3aW5kb3cpOwogI2VuZGlmCiAKKyAgICBHVEtfV0lER0VU
X0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcyktPnJlYWxpemUod2lkZ2V0
KTsKKwogICAgIGlmIChwcml2LT5hY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSkKICAgICAgICAgcHJp
di0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnJlYWxpemUoKTsKLQotICAgIEdUS19XSURHRVRf
Q0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+cmVhbGl6ZSh3aWRnZXQp
OwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVVucmVhbGl6ZShHdGtXaWRnZXQq
IHdpZGdldCkKQEAgLTYwMyw2ICs2MDMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZUNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAgIEd0a1dpZGdldCogdmlld1dpZGdl
dCA9IEdUS19XSURHRVQob2JqZWN0KTsKICAgICBndGtfd2lkZ2V0X3NldF9jYW5fZm9jdXModmll
d1dpZGdldCwgVFJVRSk7CisgICAgZ3RrX3dpZGdldF9zZXRfdmV4cGFuZCh2aWV3V2lkZ2V0LCBU
UlVFKTsKICNpZiAhVVNFKEdUSzQpCiAgICAgZ3RrX2RyYWdfZGVzdF9zZXQodmlld1dpZGdldCwg
c3RhdGljX2Nhc3Q8R3RrRGVzdERlZmF1bHRzPigwKSwgbnVsbHB0ciwgMCwKICAgICAgICAgc3Rh
dGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oR0RLX0FDVElPTl9DT1BZIHwgR0RLX0FDVElPTl9NT1ZF
IHwgR0RLX0FDVElPTl9MSU5LIHwgR0RLX0FDVElPTl9QUklWQVRFKSk7CkBAIC02MTQsNyArNjE1
LDI0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQoR09iamVjdCog
b2JqZWN0KQogICAgIHByaXYtPmRpYWxvZyA9IG51bGxwdHI7CiB9CiAKLSNpZiAhVVNFKEdUSzQp
CisjaWYgVVNFKEdUSzQpCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU25hcHNob3QoR3RrV2lkZ2V0
KiB3aWRnZXQsIEd0a1NuYXBzaG90KiBzbmFwc2hvdCkKK3sKKyAgICBpbnQgc2NhbGVGYWN0b3Ig
PSBndGtfd2lkZ2V0X2dldF9zY2FsZV9mYWN0b3Iod2lkZ2V0KTsKKyAgICBpbnQgd2lkdGggPSBn
dGtfd2lkZ2V0X2dldF93aWR0aCh3aWRnZXQpICogc2NhbGVGYWN0b3I7CisgICAgaW50IGhlaWdo
dCA9IGd0a193aWRnZXRfZ2V0X2hlaWdodCh3aWRnZXQpICogc2NhbGVGYWN0b3I7CisgICAgaWYg
KCF3aWR0aCB8fCAhaGVpZ2h0KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRXZWJWaWV3
QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOworICAgIGF1
dG8qIGRyYXdpbmdBcmVhID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3MqPih3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpKTsK
KyAgICBpZiAoIWRyYXdpbmdBcmVhKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZHJh
d2luZ0FyZWEtPmlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKTsKKyAgICB3ZWJWaWV3
QmFzZS0+cHJpdi0+YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnNuYXBzaG90KHNuYXBzaG90KTsK
K30KKyNlbHNlCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdl
dCogd2lkZ2V0LCBjYWlyb190KiBjcikKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmll
d0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwpAQCAtNzIwLDcgKzczOCwyMiBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNpemVBbGxvY2F0ZShHdGtXaWRnZXQqIHdp
ZGdldCwgR3RrQWxsb2NhdGlvbiogYWxsbwogICAgICAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZSh2
aWV3UmVjdC5zaXplKCkpOwogfQogCi0jaWYgIVVTRShHVEs0KQorI2lmIFVTRShHVEs0KQorc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VNZWFzdXJlKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtP
cmllbnRhdGlvbiBvcmllbnRhdGlvbiwgaW50LCBpbnQqIG1pbmltdW1TaXplLCBpbnQqIG5hdHVy
YWxTaXplLCBpbnQqLCBpbnQqKQoreworICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJp
diA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCktPnByaXY7CisgICAgc3dpdGNoIChvcmll
bnRhdGlvbikgeworICAgIGNhc2UgR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUw6CisgICAgICAg
ICpuYXR1cmFsU2l6ZSA9IHByaXYtPmNvbnRlbnRzU2l6ZS53aWR0aCgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEdUS19PUklFTlRBVElPTl9WRVJUSUNBTDoKKyAgICAgICAgKm5hdHVyYWxT
aXplID0gcHJpdi0+Y29udGVudHNTaXplLmhlaWdodCgpOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICAqbWluaW11bVNpemUgPSAwOworfQorI2Vsc2UKIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlR2V0UHJlZmVycmVkV2lkdGgoR3RrV2lkZ2V0KiB3aWRnZXQsIGdpbnQqIG1pbmlt
dW1TaXplLCBnaW50KiBuYXR1cmFsU2l6ZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2OwpAQCAtMTQ3Niwx
MSArMTUwOSwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9jbGFzc19pbml0
KFdlYktpdFdlYlZpZXdCYXNlQ2xhc3MqIHdlYmtpdFdlYlZpZQogICAgIEd0a1dpZGdldENsYXNz
KiB3aWRnZXRDbGFzcyA9IEdUS19XSURHRVRfQ0xBU1Mod2Via2l0V2ViVmlld0Jhc2VDbGFzcyk7
CiAgICAgd2lkZ2V0Q2xhc3MtPnJlYWxpemUgPSB3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemU7CiAg
ICAgd2lkZ2V0Q2xhc3MtPnVucmVhbGl6ZSA9IHdlYmtpdFdlYlZpZXdCYXNlVW5yZWFsaXplOwot
I2lmICFVU0UoR1RLNCkKKyNpZiBVU0UoR1RLNCkKKyAgICB3aWRnZXRDbGFzcy0+c25hcHNob3Qg
PSB3ZWJraXRXZWJWaWV3QmFzZVNuYXBzaG90OworI2Vsc2UKICAgICB3aWRnZXRDbGFzcy0+ZHJh
dyA9IHdlYmtpdFdlYlZpZXdCYXNlRHJhdzsKICNlbmRpZgogICAgIHdpZGdldENsYXNzLT5zaXpl
X2FsbG9jYXRlID0gd2Via2l0V2ViVmlld0Jhc2VTaXplQWxsb2NhdGU7Ci0jaWYgIVVTRShHVEs0
KQorI2lmIFVTRShHVEs0KQorICAgIHdpZGdldENsYXNzLT5tZWFzdXJlID0gd2Via2l0V2ViVmll
d0Jhc2VNZWFzdXJlOworI2Vsc2UKICAgICB3aWRnZXRDbGFzcy0+Z2V0X3ByZWZlcnJlZF93aWR0
aCA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UHJlZmVycmVkV2lkdGg7CiAgICAgd2lkZ2V0Q2xhc3Mt
PmdldF9wcmVmZXJyZWRfaGVpZ2h0ID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQcmVmZXJyZWRIZWln
aHQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlLmgKaW5kZXggYzZhZmIyMGIwNDZjLi4zOWFlZmY3MWZlMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZS5oCkBAIC0yOSw2ICsyOSwxMSBAQAogCiB0eXBlZGVmIHN0cnVjdCBfY2Fpcm8gY2Fp
cm9fdDsKIAorI2lmIFVTRShHVEs0KQordHlwZWRlZiBzdHJ1Y3QgX0dka1NuYXBzaG90IEdka1Nu
YXBzaG90OwordHlwZWRlZiBHZGtTbmFwc2hvdCBHdGtTbmFwc2hvdDsKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OwogfQpAQCAtNDYsNyArNTEsMTEgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBMYXllclRyZWVDb250ZXh0JikgeyB9Cisj
aWYgVVNFKEdUSzQpCisgICAgdmlydHVhbCB2b2lkIHNuYXBzaG90KEd0a1NuYXBzaG90KikgPSAw
OworI2Vsc2UKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoY2Fpcm9fdCosIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSA9IDA7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgcmVhbGl6ZSgpIHsgfTsK
ICAgICB2aXJ0dWFsIHZvaWQgdW5yZWFsaXplKCkgeyB9OwogICAgIHZpcnR1YWwgYm9vbCBtYWtl
Q29udGV4dEN1cnJlbnQoKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5k
LmNwcAppbmRleCBlYTIyYjRkNjIwZTQuLjAwYmNjNmNiMmJkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZC5jcHAKQEAgLTIxNCwxOSArMjE0LDIyIEBAIHZvaWQgQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVXYXlsYW5kOjp0cnlFbnN1cmVHTENvbnRleHQoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2dsQ29udGV4dEluaXRpYWxpemVkID0gdHJ1ZTsKLQotI2lmICFVU0UoR1RLNCkKICAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisjaWYgVVNFKEdUSzQpCisgICAgbV9nZGtHTENv
bnRleHQgPSBhZG9wdEdSZWYoZ2RrX3N1cmZhY2VfY3JlYXRlX2dsX2NvbnRleHQoZ3RrX25hdGl2
ZV9nZXRfc3VyZmFjZShndGtfd2lkZ2V0X2dldF9uYXRpdmUobV93ZWJQYWdlLnZpZXdXaWRnZXQo
KSkpLCAmZXJyb3Iub3V0UHRyKCkpKTsKKyNlbHNlCiAgICAgbV9nZGtHTENvbnRleHQgPSBhZG9w
dEdSZWYoZ2RrX3dpbmRvd19jcmVhdGVfZ2xfY29udGV4dChndGtfd2lkZ2V0X2dldF93aW5kb3co
bV93ZWJQYWdlLnZpZXdXaWRnZXQoKSksICZlcnJvci5vdXRQdHIoKSkpOworI2VuZGlmCiAgICAg
aWYgKG1fZ2RrR0xDb250ZXh0KSB7CiAjaWYgVVNFKE9QRU5HTF9FUykKICAgICAgICAgZ2RrX2ds
X2NvbnRleHRfc2V0X3VzZV9lcyhtX2dka0dMQ29udGV4dC5nZXQoKSwgVFJVRSk7CiAjZW5kaWYK
LSAgICAgICAgcmV0dXJuOworICAgICAgICBnZGtfZ2xfY29udGV4dF9yZWFsaXplKG1fZ2RrR0xD
b250ZXh0LmdldCgpLCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICBpZiAoIWVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGdfd2FybmluZygiR0RLIGlzIG5vdCBhYmxl
IHRvIGNyZWF0ZSBhIEdMIGNvbnRleHQsIGZhbGxpbmcgYmFjayB0byBnbFJlYWRQaXhlbHMgKHNs
b3chKTogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0jZW5kaWYKIAogICAgIG1fZ2xDb250ZXh0ID0g
R0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KCk7CiB9CkBAIC0yNzgsMTQgKzI4MSwx
MSBAQCB2b2lkIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6ZGlzcGxheUJ1ZmZlcihz
dHJ1Y3Qgd3BlX2Zkb19lZ2xfZXhwb3J0ZWRfaQogfQogI2VuZGlmCiAKLWJvb2wgQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpwYWludChjYWlyb190KiBjciwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpCitib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6dHJ5RW5zdXJl
VGV4dHVyZSh1bnNpZ25lZCYgdGV4dHVyZSwgSW50U2l6ZSYgdGV4dHVyZVNpemUpCiB7Ci0gICAg
R0x1aW50IHRleHR1cmU7Ci0gICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZTsKLQogI2lmIFVTRShXUEVf
UkVOREVSRVIpCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3BlbmRpbmdJbWFnZSkg
ewogICAgICAgICB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Rpc3BhdGNoX2ZyYW1l
X2NvbXBsZXRlKG1fZXhwb3J0YWJsZSk7CkBAIC0yOTcsNyArMjk3LDcgQEAgYm9vbCBBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0
JiBjbGlwUmVjdCkKICAgICB9CiAKICAgICBpZiAoIW1fY29tbWl0dGVkSW1hZ2UpCi0gICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1fdmlld1Rl
eHR1cmUpIHsKICAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbV92aWV3VGV4dHVyZSk7CkBAIC0z
MTcsMTYgKzMxNywxMSBAQCBib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6cGFp
bnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKIAotICAgIGNhaXJvX3NhdmUoY3IpOwotCi0jaWYgIVVTRShHVEs0KQot
ICAgIGlmIChtX2dka0dMQ29udGV4dCkgewotICAgICAgICBnZGtfY2Fpcm9fZHJhd19mcm9tX2ds
KGNyLCBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSksIHRleHR1
cmUsIEdMX1RFWFRVUkUsIG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpLCAwLCAwLCB0ZXh0
dXJlU2l6ZS53aWR0aCgpLCB0ZXh0dXJlU2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIGNhaXJvX3Jl
c3RvcmUoY3IpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKKyAgICByZXR1
cm4gdHJ1ZTsKK30KIAordm9pZCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmRvd25s
b2FkVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSkK
K3sKICAgICBBU1NFUlQobV9nbENvbnRleHQpOwogCiAgICAgaWYgKCFtX3N1cmZhY2UgfHwgY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgobV9zdXJmYWNlLmdldCgpKSAhPSB0ZXh0dXJlU2l6
ZS53aWR0aCgpIHx8IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChtX3N1cmZhY2UuZ2V0
KCkpICE9IHRleHR1cmVTaXplLmhlaWdodCgpKQpAQCAtMzY2LDkgKzM2MSw1NiBAQCBib29sIEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IElu
dFJlY3QmIGNsaXBSZWN0KQogICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAw
KTsKICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZmIpOwogCi0gICAgLy8gVGhlIHN1cmZh
Y2UgY2FuIGJlIG1vZGlmaWVkIGJ5IHRoZSB3ZWIgcHJvY2VzcyBhdCBhbnkgdGltZSwgc28gd2Ug
bWFyayBpdAotICAgIC8vIGFzIGRpcnR5IHRvIGVuc3VyZSB3ZSBhbHdheXMgcmVuZGVyIHRoZSB1
cGRhdGVkIGNvbnRlbnRzIGFzIHNvb24gYXMgcG9zc2libGUuCiAgICAgY2Fpcm9fc3VyZmFjZV9t
YXJrX2RpcnR5KG1fc3VyZmFjZS5nZXQoKSk7Cit9CisKKyNpZiBVU0UoR1RLNCkKK3ZvaWQgQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpzbmFwc2hvdChHdGtTbmFwc2hvdCogZ3RrU25h
cHNob3QpCit7CisgICAgR0x1aW50IHRleHR1cmU7CisgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZTsK
KyAgICBpZiAoIXRyeUVuc3VyZVRleHR1cmUodGV4dHVyZSwgdGV4dHVyZVNpemUpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBGbG9hdFNpemUgdmlld1NpemUoZ3RrX3dpZGdldF9nZXRfd2lkdGgo
bV93ZWJQYWdlLnZpZXdXaWRnZXQoKSksIGd0a193aWRnZXRfZ2V0X2hlaWdodChtX3dlYlBhZ2Uu
dmlld1dpZGdldCgpKSk7CisgICAgaWYgKG1fZ2RrR0xDb250ZXh0KSB7CisgICAgICAgIEdSZWZQ
dHI8R2RrVGV4dHVyZT4gZ2RrVGV4dHVyZSA9IGFkb3B0R1JlZihnZGtfZ2xfdGV4dHVyZV9uZXco
bV9nZGtHTENvbnRleHQuZ2V0KCksIHRleHR1cmUsIHRleHR1cmVTaXplLndpZHRoKCksIHRleHR1
cmVTaXplLmhlaWdodCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIGdyYXBoZW5lX3Jl
Y3RfdCByZWN0ID0gR1JBUEhFTkVfUkVDVF9JTklUKDAsIDAsIHZpZXdTaXplLndpZHRoKCksIHZp
ZXdTaXplLmhlaWdodCgpKTsKKyAgICAgICAgZ3RrX3NuYXBzaG90X2FwcGVuZF90ZXh0dXJlKGd0
a1NuYXBzaG90LCBnZGtUZXh0dXJlLmdldCgpLCAmcmVjdCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBkb3dubG9hZFRleHR1cmUodGV4dHVyZSwgdGV4dHVyZVNpemUpOworCisgICAg
Z3JhcGhlbmVfcmVjdF90IHJlY3QgPSBHUkFQSEVORV9SRUNUX0lOSVQoMCwgMCwgdmlld1NpemUu
d2lkdGgoKSwgdmlld1NpemUuaGVpZ2h0KCkpOworICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFk
b3B0UmVmKGd0a19zbmFwc2hvdF9hcHBlbmRfY2Fpcm8oZ3RrU25hcHNob3QsICZyZWN0KSk7CisK
KyAgICAvLyBUaGUgY29tcG9zaXRvciByZW5kZXJzIHRoZSB0ZXh0dXJlIGZsaXBwZWQgZm9yIGdk
aywgZml4IHRoYXQgaGVyZS4KKyAgICBjYWlyb19tYXRyaXhfdCB0cmFuc2Zvcm07CisgICAgY2Fp
cm9fbWF0cml4X2luaXQoJnRyYW5zZm9ybSwgMSwgMCwgMCwgLTEsIDAsIHRleHR1cmVTaXplLmhl
aWdodCgpIC8gbV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIGNhaXJvX3RyYW5z
Zm9ybShjci5nZXQoKSwgJnRyYW5zZm9ybSk7CisKKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZh
Y2UoY3IuZ2V0KCksIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJh
dG9yKGNyLmdldCgpLCBDQUlST19PUEVSQVRPUl9PVkVSKTsKKyAgICBjYWlyb19wYWludChjci5n
ZXQoKSk7Cit9CisjZWxzZQorYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBh
aW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBHTHVpbnQg
dGV4dHVyZTsKKyAgICBJbnRTaXplIHRleHR1cmVTaXplOworICAgIGlmICghdHJ5RW5zdXJlVGV4
dHVyZSh0ZXh0dXJlLCB0ZXh0dXJlU2l6ZSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Y2Fpcm9fc2F2ZShjcik7CisKKyAgICBpZiAobV9nZGtHTENvbnRleHQpIHsKKyAgICAgICAgZ2Rr
X2NhaXJvX2RyYXdfZnJvbV9nbChjciwgZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2ViUGFnZS52
aWV3V2lkZ2V0KCkpLCB0ZXh0dXJlLCBHTF9URVhUVVJFLCBtX3dlYlBhZ2UuZGV2aWNlU2NhbGVG
YWN0b3IoKSwgMCwgMCwgdGV4dHVyZVNpemUud2lkdGgoKSwgdGV4dHVyZVNpemUuaGVpZ2h0KCkp
OworICAgICAgICBjYWlyb19yZXN0b3JlKGNyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgZG93bmxvYWRUZXh0dXJlKHRleHR1cmUsIHRleHR1cmVTaXplKTsKIAogICAgIC8v
IFRoZSBjb21wb3NpdG9yIHJlbmRlcnMgdGhlIHRleHR1cmUgZmxpcHBlZCBmb3IgZ2RrX2NhaXJv
X2RyYXdfZnJvbV9nbCwgZml4IHRoYXQgaGVyZS4KICAgICBjYWlyb19tYXRyaXhfdCB0cmFuc2Zv
cm07CkBAIC0zODQsNiArNDI2LDcgQEAgYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQ6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIAogICAgIHJl
dHVybiB0cnVlOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVXYXlsYW5kLmgKaW5kZXggZGZmZTIzZDhmM2JlLi5iNTQ2NjczMGMzMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdh
eWxhbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kLmgKQEAgLTQzLDYgKzQzLDcgQEAgc3RydWN0IHdwZV9mZG9fZWdsX2V4
cG9ydGVkX2ltYWdlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHTENvbnRleHQ7Citj
bGFzcyBJbnRTaXplOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDggKzY0LDE0IEBA
IHByaXZhdGU6CiAjaWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICB2b2lkIGRpc3BsYXlCdWZmZXIo
c3RydWN0IHdwZV9mZG9fZWdsX2V4cG9ydGVkX2ltYWdlKik7CiAjZW5kaWYKKyAgICBib29sIHRy
eUVuc3VyZVRleHR1cmUodW5zaWduZWQmLCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgdm9pZCBk
b3dubG9hZFRleHR1cmUodW5zaWduZWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKIAorI2lm
IFVTRShHVEs0KQorICAgIHZvaWQgc25hcHNob3QoR3RrU25hcHNob3QqKSBvdmVycmlkZTsKKyNl
bHNlCiAgICAgYm9vbCBwYWludChjYWlyb190KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92
ZXJyaWRlOworI2VuZGlmCiAgICAgdm9pZCByZWFsaXplKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1
bnJlYWxpemUoKSBvdmVycmlkZTsKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKaW5kZXggNDkxZDMwYzdlYzRjLi4xNmE3ZWY2NmYxMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJh
dGVkQmFja2luZ1N0b3JlWDExLmNwcApAQCAtMTk1LDYgKzE5NSwxMiBAQCB2b2lkIEFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlWDExOjp1cGRhdGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJU
cmVlQ29udGV4dAogI2VuZGlmCiB9CiAKKyNpZiBVU0UoR1RLNCkKK3ZvaWQgQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVYMTE6OnNuYXBzaG90KEd0a1NuYXBzaG90KikKK3sKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMuCit9CisjZWxzZQogYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgx
MTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlm
ICghbV9zdXJmYWNlKQpAQCAtMjE2LDYgKzIyMiw3IEBAIGJvb2wgQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVYMTE6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIAog
ICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVYMTEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVgxMS5oCmluZGV4IDI2ODkyNjU5Y2ViNi4uMDU0ZTgwYmQ5MDBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVYMTEuaApAQCAtNDcsNyArNDcsMTEgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVgxMShXZWJQYWdlUHJveHkmKTsKIAogICAgIHZvaWQgdXBkYXRlKGNv
bnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKKyNpZiBVU0UoR1RLNCkKKyAgICB2b2lk
IHNuYXBzaG90KEd0a1NuYXBzaG90Kikgb3ZlcnJpZGU7CisjZWxzZQogICAgIGJvb2wgcGFpbnQo
Y2Fpcm9fdCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyNlbmRpZgogCiAg
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNlOwogICAgIFdlYkNvcmU6OlhVbmlx
dWVEYW1hZ2UgbV9kYW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvSGFyZHdhcmVBY2NlbGVyYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9IYXJkd2FyZUFjY2VsZXJhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDJkZWUyODE3NTkw
ZS4uZTkxZjVmNDc3MjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
SGFyZHdhcmVBY2NlbGVyYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvSGFyZHdhcmVBY2NlbGVyYXRpb25NYW5hZ2VyLmNwcApAQCAtNDYsNiArNDYsMTEg
QEAgSGFyZHdhcmVBY2NlbGVyYXRpb25NYW5hZ2VyOjpIYXJkd2FyZUFjY2VsZXJhdGlvbk1hbmFn
ZXIoKQogICAgIHJldHVybjsKICNlbmRpZgogCisjaWYgVVNFKEdUSzQpCisgICAgUkVMRUFTRV9B
U1NFUlQoQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OmNoZWNrUmVxdWlyZW1lbnRzKCkpOworICAg
IG1fZm9yY2VIYXJkd2FyZUFjY2VsZXJhdGlvbiA9IHRydWU7CisjZW5kaWYKKwogICAgIGNvbnN0
IGNoYXIqIGRpc2FibGVDb21wb3NpdGluZyA9IGdldGVudigiV0VCS0lUX0RJU0FCTEVfQ09NUE9T
SVRJTkdfTU9ERSIpOwogICAgIGlmIChkaXNhYmxlQ29tcG9zaXRpbmcgJiYgc3RyY21wKGRpc2Fi
bGVDb21wb3NpdGluZywgIjAiKSkgewogICAgICAgICBtX2NhblVzZUhhcmR3YXJlQWNjZWxlcmF0
aW9uID0gZmFsc2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397563</attachid>
            <date>2020-04-25 06:46:34 -0700</date>
            <delta_ts>2020-04-27 07:34:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk4-wl-rendering.diff</filename>
            <type>text/plain</type>
            <size>15023</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYTBlYjI0MzdiZDU4Li42YjNhNmVkZTBkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzQgQEAKKzIwMjAtMDQtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEs0XVtXYXlsYW5kXSBBZGQgc3VwcG9ydCBmb3IgcmVuZGVy
aW5nIHdlYiB2aWV3IGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTEwMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnQgR3RrV2lkZ2V0Q2xhc3M6OnNuYXBzaG90IGFuZCBHdGtX
aWRnZXRDbGFzczo6bWVhc3VyZSBpbnN0ZWFkIG9mIEd0a1dpZGdldENsYXNzOjpkcmF3IGFuZAor
ICAgICAgICBHdGtXaWRnZXRDbGFzczo6Z2V0X3ByZWZlcnJlZF93aWR0aHxoZWlnaHQuIEFkZCBB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6c25hcHNob3QoKSBwdXJlIHZpcnR1YWwgdG8gYmUgdXNl
ZCB3aXRoCisgICAgICAgIEdUSzQgaW5zdGVhZCBvZiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6
cGFpbnQoKSwgYW5kIGltcGxlbWVudCBpdCBmb3IgV2F5bGFuZC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdCYXNlQ29uc3RydWN0ZWQpOiBTZXQgdmVydGljYWwgZXhwYW5kIHRvIFRSVUUuCisgICAgICAg
ICh3ZWJraXRXZWJWaWV3QmFzZVNuYXBzaG90KTogQ2FsbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZTo6c25hcHNob3QoKS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlTWVhc3VyZSk6IFJldHVy
biB0aGUgbmF0dXJhbCB3aWR0aC9oZWlnaHQgZm9yIHRoZSBXZWJWaWV3LgorICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaW5pdCk6IEFkZCBpbXBsZW1lbnRhdGlvbnMgZm9yIHNu
YXBzaG90IGFuZCBtZWFzdXJlIHZmdW5jcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVdheWxhbmQ6OnRyeUVuc3VyZUdMQ29udGV4dCk6IEFsd2F5cyB0cnkgdG8gcmVh
bGl6ZSB0aGUgY29udGV4dCBoZXJlLCBzaW5jZSB0aGF0CisgICAgICAgIGNhbiBmYWlsIHRvby4K
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjp0cnlFbnN1
cmVUZXh0dXJlKTogSGVscGVyIHRvIHNoYXJlIHRoZSBjb2RlIHRvIHByZXBhcmUgdGhlIHRleHR1
cmUuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6ZG93
bmxvYWRUZXh0dXJlKTogSGVscGVyIHRvIHNoYXJlIHRoZSBjb2RlIHRvIGRvd25sb2FkIHRoZSB0
ZXh0dXJlLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6
OnNuYXBzaG90KTogVXNlIGd0a19zbmFwc2hvdF9hcHBlbmRfdGV4dHVyZSgpLgorICAgICAgICAo
V2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50KTogVXNlIG5ldyBo
ZWxwZXJzLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpz
bmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVgxMS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvSGFyZHdhcmVBY2NlbGVyYXRpb25NYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SGFyZHdhcmVBY2NlbGVyYXRpb25NYW5hZ2VyOjpI
YXJkd2FyZUFjY2VsZXJhdGlvbk1hbmFnZXIpOiBGb3JjZSBhY2NlbGVyYXRlZCBjb21wb3NpdGlu
ZyBtb2RlIGZvciBHVEs0LgorCiAyMDIwLTA0LTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLNF0gTWFrZSBpdCBwb3NzaWJsZSB0byBi
dWlsZCB3aXRoIEdUSzQgd2l0aG91dCBlcnJvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggMjc5OGMzZGM5MGM5
Li5iYTI0NGM3NGEyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC02MDMsNiArNjAzLDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBH
dGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG9iamVjdCk7CiAgICAgZ3RrX3dpZGdl
dF9zZXRfY2FuX2ZvY3VzKHZpZXdXaWRnZXQsIFRSVUUpOworICAgIGd0a193aWRnZXRfc2V0X3Zl
eHBhbmQodmlld1dpZGdldCwgVFJVRSk7CiAjaWYgIVVTRShHVEs0KQogICAgIGd0a19kcmFnX2Rl
c3Rfc2V0KHZpZXdXaWRnZXQsIHN0YXRpY19jYXN0PEd0a0Rlc3REZWZhdWx0cz4oMCksIG51bGxw
dHIsIDAsCiAgICAgICAgIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KEdES19BQ1RJT05fQ09Q
WSB8IEdES19BQ1RJT05fTU9WRSB8IEdES19BQ1RJT05fTElOSyB8IEdES19BQ1RJT05fUFJJVkFU
RSkpOwpAQCAtNjE0LDcgKzYxNSwyNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNv
bnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBwcml2LT5kaWFsb2cgPSBudWxscHRyOwog
fQogCi0jaWYgIVVTRShHVEs0KQorI2lmIFVTRShHVEs0KQordm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZVNuYXBzaG90KEd0a1dpZGdldCogd2lkZ2V0LCBHdGtTbmFwc2hvdCogc25hcHNob3QpCit7Cisg
ICAgaW50IHNjYWxlRmFjdG9yID0gZ3RrX3dpZGdldF9nZXRfc2NhbGVfZmFjdG9yKHdpZGdldCk7
CisgICAgaW50IHdpZHRoID0gZ3RrX3dpZGdldF9nZXRfd2lkdGgod2lkZ2V0KSAqIHNjYWxlRmFj
dG9yOworICAgIGludCBoZWlnaHQgPSBndGtfd2lkZ2V0X2dldF9oZWlnaHQod2lkZ2V0KSAqIHNj
YWxlRmFjdG9yOworICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JB
U0Uod2lkZ2V0KTsKKyAgICBhdXRvKiBkcmF3aW5nQXJlYSA9IHN0YXRpY19jYXN0PERyYXdpbmdB
cmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzKj4od2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94
eS0+ZHJhd2luZ0FyZWEoKSk7CisgICAgaWYgKCFkcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgQVNTRVJUKGRyYXdpbmdBcmVhLT5pc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKSk7CisgICAgd2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLT5z
bmFwc2hvdChzbmFwc2hvdCk7Cit9CisjZWxzZQogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZp
ZXdCYXNlRHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCiB7CiAgICAgV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsK
QEAgLTcyMCw3ICs3MzgsMjIgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTaXplQWxs
b2NhdGUoR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a0FsbG9jYXRpb24qIGFsbG8KICAgICAgICAgZHJh
d2luZ0FyZWEtPnNldFNpemUodmlld1JlY3Quc2l6ZSgpKTsKIH0KIAotI2lmICFVU0UoR1RLNCkK
KyNpZiBVU0UoR1RLNCkKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlTWVhc3VyZShHdGtX
aWRnZXQqIHdpZGdldCwgR3RrT3JpZW50YXRpb24gb3JpZW50YXRpb24sIGludCwgaW50KiBtaW5p
bXVtU2l6ZSwgaW50KiBuYXR1cmFsU2l6ZSwgaW50KiwgaW50KikKK3sKKyAgICBXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2
OworICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsKKyAgICBjYXNlIEdUS19PUklFTlRBVElPTl9I
T1JJWk9OVEFMOgorICAgICAgICAqbmF0dXJhbFNpemUgPSBwcml2LT5jb250ZW50c1NpemUud2lk
dGgoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUw6
CisgICAgICAgICpuYXR1cmFsU2l6ZSA9IHByaXYtPmNvbnRlbnRzU2l6ZS5oZWlnaHQoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgKm1pbmltdW1TaXplID0gMDsKK30KKyNlbHNlCiBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUdldFByZWZlcnJlZFdpZHRoKEd0a1dpZGdldCog
d2lkZ2V0LCBnaW50KiBtaW5pbXVtU2l6ZSwgZ2ludCogbmF0dXJhbFNpemUpCiB7CiAgICAgV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0
KS0+cHJpdjsKQEAgLTE0NzYsMTEgKzE1MDksMTUgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X2Jhc2VfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUK
ICAgICBHdGtXaWRnZXRDbGFzcyogd2lkZ2V0Q2xhc3MgPSBHVEtfV0lER0VUX0NMQVNTKHdlYmtp
dFdlYlZpZXdCYXNlQ2xhc3MpOwogICAgIHdpZGdldENsYXNzLT5yZWFsaXplID0gd2Via2l0V2Vi
Vmlld0Jhc2VSZWFsaXplOwogICAgIHdpZGdldENsYXNzLT51bnJlYWxpemUgPSB3ZWJraXRXZWJW
aWV3QmFzZVVucmVhbGl6ZTsKLSNpZiAhVVNFKEdUSzQpCisjaWYgVVNFKEdUSzQpCisgICAgd2lk
Z2V0Q2xhc3MtPnNuYXBzaG90ID0gd2Via2l0V2ViVmlld0Jhc2VTbmFwc2hvdDsKKyNlbHNlCiAg
ICAgd2lkZ2V0Q2xhc3MtPmRyYXcgPSB3ZWJraXRXZWJWaWV3QmFzZURyYXc7CiAjZW5kaWYKICAg
ICB3aWRnZXRDbGFzcy0+c2l6ZV9hbGxvY2F0ZSA9IHdlYmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9j
YXRlOwotI2lmICFVU0UoR1RLNCkKKyNpZiBVU0UoR1RLNCkKKyAgICB3aWRnZXRDbGFzcy0+bWVh
c3VyZSA9IHdlYmtpdFdlYlZpZXdCYXNlTWVhc3VyZTsKKyNlbHNlCiAgICAgd2lkZ2V0Q2xhc3Mt
PmdldF9wcmVmZXJyZWRfd2lkdGggPSB3ZWJraXRXZWJWaWV3QmFzZUdldFByZWZlcnJlZFdpZHRo
OwogICAgIHdpZGdldENsYXNzLT5nZXRfcHJlZmVycmVkX2hlaWdodCA9IHdlYmtpdFdlYlZpZXdC
YXNlR2V0UHJlZmVycmVkSGVpZ2h0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IGM2YWZiMjBiMDQ2
Yy4uMzlhZWZmNzFmZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtMjksNiArMjksMTEgQEAKIAogdHlwZWRl
ZiBzdHJ1Y3QgX2NhaXJvIGNhaXJvX3Q7CiAKKyNpZiBVU0UoR1RLNCkKK3R5cGVkZWYgc3RydWN0
IF9HZGtTbmFwc2hvdCBHZGtTbmFwc2hvdDsKK3R5cGVkZWYgR2RrU25hcHNob3QgR3RrU25hcHNo
b3Q7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsKIH0KQEAg
LTQ2LDcgKzUxLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYpIHsgfQorI2lmIFVTRShHVEs0KQorICAgIHZpcnR1YWwgdm9pZCBzbmFwc2hv
dChHdGtTbmFwc2hvdCopID0gMDsKKyNlbHNlCiAgICAgdmlydHVhbCBib29sIHBhaW50KGNhaXJv
X3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOworI2VuZGlmCiAgICAgdmlydHVhbCB2
b2lkIHJlYWxpemUoKSB7IH07CiAgICAgdmlydHVhbCB2b2lkIHVucmVhbGl6ZSgpIHsgfTsKICAg
ICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKaW5kZXggZWEyMmI0ZDYyMGU0Li4wMGJjYzZjYjJiZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVdheWxhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCkBAIC0yMTQsMTkgKzIxNCwyMiBAQCB2b2lk
IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6dHJ5RW5zdXJlR0xDb250ZXh0KCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9nbENvbnRleHRJbml0aWFsaXplZCA9IHRydWU7Ci0KLSNp
ZiAhVVNFKEdUSzQpCiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworI2lmIFVTRShH
VEs0KQorICAgIG1fZ2RrR0xDb250ZXh0ID0gYWRvcHRHUmVmKGdka19zdXJmYWNlX2NyZWF0ZV9n
bF9jb250ZXh0KGd0a19uYXRpdmVfZ2V0X3N1cmZhY2UoZ3RrX3dpZGdldF9nZXRfbmF0aXZlKG1f
d2ViUGFnZS52aWV3V2lkZ2V0KCkpKSwgJmVycm9yLm91dFB0cigpKSk7CisjZWxzZQogICAgIG1f
Z2RrR0xDb250ZXh0ID0gYWRvcHRHUmVmKGdka193aW5kb3dfY3JlYXRlX2dsX2NvbnRleHQoZ3Rr
X3dpZGdldF9nZXRfd2luZG93KG1fd2ViUGFnZS52aWV3V2lkZ2V0KCkpLCAmZXJyb3Iub3V0UHRy
KCkpKTsKKyNlbmRpZgogICAgIGlmIChtX2dka0dMQ29udGV4dCkgewogI2lmIFVTRShPUEVOR0xf
RVMpCiAgICAgICAgIGdka19nbF9jb250ZXh0X3NldF91c2VfZXMobV9nZGtHTENvbnRleHQuZ2V0
KCksIFRSVUUpOwogI2VuZGlmCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgZ2RrX2dsX2NvbnRl
eHRfcmVhbGl6ZShtX2dka0dMQ29udGV4dC5nZXQoKSwgJmVycm9yLm91dFB0cigpKTsKKyAgICAg
ICAgaWYgKCFlcnJvcikKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBnX3dhcm5p
bmcoIkdESyBpcyBub3QgYWJsZSB0byBjcmVhdGUgYSBHTCBjb250ZXh0LCBmYWxsaW5nIGJhY2sg
dG8gZ2xSZWFkUGl4ZWxzIChzbG93ISk6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotI2VuZGlmCiAK
ICAgICBtX2dsQ29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dCgpOwog
fQpAQCAtMjc4LDE0ICsyODEsMTEgQEAgdm9pZCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQ6OmRpc3BsYXlCdWZmZXIoc3RydWN0IHdwZV9mZG9fZWdsX2V4cG9ydGVkX2kKIH0KICNlbmRp
ZgogCi1ib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6cGFpbnQoY2Fpcm9fdCog
Y3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVdheWxhbmQ6OnRyeUVuc3VyZVRleHR1cmUodW5zaWduZWQmIHRleHR1cmUsIEludFNpemUmIHRl
eHR1cmVTaXplKQogewotICAgIEdMdWludCB0ZXh0dXJlOwotICAgIEludFNpemUgdGV4dHVyZVNp
emU7Ci0KICNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50
KCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAobV9wZW5kaW5nSW1hZ2UpIHsKICAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxl
X2Zkb19kaXNwYXRjaF9mcmFtZV9jb21wbGV0ZShtX2V4cG9ydGFibGUpOwpAQCAtMjk3LDcgKzI5
Nyw3IEBAIGJvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpwYWludChjYWlyb190
KiBjciwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiAgICAgfQogCiAgICAgaWYgKCFtX2NvbW1p
dHRlZEltYWdlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKCFtX3ZpZXdUZXh0dXJlKSB7CiAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1f
dmlld1RleHR1cmUpOwpAQCAtMzE3LDE2ICszMTcsMTEgQEAgYm9vbCBBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVdheWxhbmQ6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICBjYWlyb19zYXZlKGNyKTsK
LQotI2lmICFVU0UoR1RLNCkKLSAgICBpZiAobV9nZGtHTENvbnRleHQpIHsKLSAgICAgICAgZ2Rr
X2NhaXJvX2RyYXdfZnJvbV9nbChjciwgZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2ViUGFnZS52
aWV3V2lkZ2V0KCkpLCB0ZXh0dXJlLCBHTF9URVhUVVJFLCBtX3dlYlBhZ2UuZGV2aWNlU2NhbGVG
YWN0b3IoKSwgMCwgMCwgdGV4dHVyZVNpemUud2lkdGgoKSwgdGV4dHVyZVNpemUuaGVpZ2h0KCkp
OwotICAgICAgICBjYWlyb19yZXN0b3JlKGNyKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CiAKK3ZvaWQgQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVXYXlsYW5kOjpkb3dubG9hZFRleHR1cmUodW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50
U2l6ZSYgdGV4dHVyZVNpemUpCit7CiAgICAgQVNTRVJUKG1fZ2xDb250ZXh0KTsKIAogICAgIGlm
ICghbV9zdXJmYWNlIHx8IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKG1fc3VyZmFjZS5n
ZXQoKSkgIT0gdGV4dHVyZVNpemUud2lkdGgoKSB8fCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9o
ZWlnaHQobV9zdXJmYWNlLmdldCgpKSAhPSB0ZXh0dXJlU2l6ZS5oZWlnaHQoKSkKQEAgLTM2Niw5
ICszNjEsNTYgQEAgYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50KGNh
aXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKICAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgMCk7CiAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZiKTsK
IAotICAgIC8vIFRoZSBzdXJmYWNlIGNhbiBiZSBtb2RpZmllZCBieSB0aGUgd2ViIHByb2Nlc3Mg
YXQgYW55IHRpbWUsIHNvIHdlIG1hcmsgaXQKLSAgICAvLyBhcyBkaXJ0eSB0byBlbnN1cmUgd2Ug
YWx3YXlzIHJlbmRlciB0aGUgdXBkYXRlZCBjb250ZW50cyBhcyBzb29uIGFzIHBvc3NpYmxlLgog
ICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX3N1cmZhY2UuZ2V0KCkpOworfQorCisjaWYg
VVNFKEdUSzQpCit2b2lkIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6c25hcHNob3Qo
R3RrU25hcHNob3QqIGd0a1NuYXBzaG90KQoreworICAgIEdMdWludCB0ZXh0dXJlOworICAgIElu
dFNpemUgdGV4dHVyZVNpemU7CisgICAgaWYgKCF0cnlFbnN1cmVUZXh0dXJlKHRleHR1cmUsIHRl
eHR1cmVTaXplKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRTaXplIHZpZXdTaXplKGd0
a193aWRnZXRfZ2V0X3dpZHRoKG1fd2ViUGFnZS52aWV3V2lkZ2V0KCkpLCBndGtfd2lkZ2V0X2dl
dF9oZWlnaHQobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSkpOworICAgIGlmIChtX2dka0dMQ29udGV4
dCkgeworICAgICAgICBHUmVmUHRyPEdka1RleHR1cmU+IGdka1RleHR1cmUgPSBhZG9wdEdSZWYo
Z2RrX2dsX3RleHR1cmVfbmV3KG1fZ2RrR0xDb250ZXh0LmdldCgpLCB0ZXh0dXJlLCB0ZXh0dXJl
U2l6ZS53aWR0aCgpLCB0ZXh0dXJlU2l6ZS5oZWlnaHQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwor
ICAgICAgICBncmFwaGVuZV9yZWN0X3QgcmVjdCA9IEdSQVBIRU5FX1JFQ1RfSU5JVCgwLCAwLCB2
aWV3U2l6ZS53aWR0aCgpLCB2aWV3U2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGd0a19zbmFwc2hv
dF9hcHBlbmRfdGV4dHVyZShndGtTbmFwc2hvdCwgZ2RrVGV4dHVyZS5nZXQoKSwgJnJlY3QpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZG93bmxvYWRUZXh0dXJlKHRleHR1cmUsIHRl
eHR1cmVTaXplKTsKKworICAgIGdyYXBoZW5lX3JlY3RfdCByZWN0ID0gR1JBUEhFTkVfUkVDVF9J
TklUKDAsIDAsIHZpZXdTaXplLndpZHRoKCksIHZpZXdTaXplLmhlaWdodCgpKTsKKyAgICBSZWZQ
dHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihndGtfc25hcHNob3RfYXBwZW5kX2NhaXJvKGd0a1Nu
YXBzaG90LCAmcmVjdCkpOworCisgICAgLy8gVGhlIGNvbXBvc2l0b3IgcmVuZGVycyB0aGUgdGV4
dHVyZSBmbGlwcGVkIGZvciBnZGssIGZpeCB0aGF0IGhlcmUuCisgICAgY2Fpcm9fbWF0cml4X3Qg
dHJhbnNmb3JtOworICAgIGNhaXJvX21hdHJpeF9pbml0KCZ0cmFuc2Zvcm0sIDEsIDAsIDAsIC0x
LCAwLCB0ZXh0dXJlU2l6ZS5oZWlnaHQoKSAvIG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKKyAgICBjYWlyb190cmFuc2Zvcm0oY3IuZ2V0KCksICZ0cmFuc2Zvcm0pOworCisgICAgY2Fp
cm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBtX3N1cmZhY2UuZ2V0KCksIDAsIDApOwor
ICAgIGNhaXJvX3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUik7Cisg
ICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOworfQorI2Vsc2UKK2Jvb2wgQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kOjpwYWludChjYWlyb190KiBjciwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QpCit7CisgICAgR0x1aW50IHRleHR1cmU7CisgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZTsKKyAg
ICBpZiAoIXRyeUVuc3VyZVRleHR1cmUodGV4dHVyZSwgdGV4dHVyZVNpemUpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGNhaXJvX3NhdmUoY3IpOworCisgICAgaWYgKG1fZ2RrR0xDb250
ZXh0KSB7CisgICAgICAgIGdka19jYWlyb19kcmF3X2Zyb21fZ2woY3IsIGd0a193aWRnZXRfZ2V0
X3dpbmRvdyhtX3dlYlBhZ2Uudmlld1dpZGdldCgpKSwgdGV4dHVyZSwgR0xfVEVYVFVSRSwgbV93
ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCksIDAsIDAsIHRleHR1cmVTaXplLndpZHRoKCksIHRl
eHR1cmVTaXplLmhlaWdodCgpKTsKKyAgICAgICAgY2Fpcm9fcmVzdG9yZShjcik7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGRvd25sb2FkVGV4dHVyZSh0ZXh0dXJlLCB0ZXh0
dXJlU2l6ZSk7CiAKICAgICAvLyBUaGUgY29tcG9zaXRvciByZW5kZXJzIHRoZSB0ZXh0dXJlIGZs
aXBwZWQgZm9yIGdka19jYWlyb19kcmF3X2Zyb21fZ2wsIGZpeCB0aGF0IGhlcmUuCiAgICAgY2Fp
cm9fbWF0cml4X3QgdHJhbnNmb3JtOwpAQCAtMzg0LDYgKzQyNiw3IEBAIGJvb2wgQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpwYWludChjYWlyb190KiBjciwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2Vs
ZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5oCmluZGV4IGRmZmUyM2Q4ZjNiZS4uYjU0
NjY3MzBjMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5oCkBAIC00Myw2ICs0Myw3IEBAIHN0
cnVjdCB3cGVfZmRvX2VnbF9leHBvcnRlZF9pbWFnZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgR0xDb250ZXh0OworY2xhc3MgSW50U2l6ZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC02Myw4ICs2NCwxNCBAQCBwcml2YXRlOgogI2lmIFVTRShXUEVfUkVOREVSRVIpCiAgICAg
dm9pZCBkaXNwbGF5QnVmZmVyKHN0cnVjdCB3cGVfZmRvX2VnbF9leHBvcnRlZF9pbWFnZSopOwog
I2VuZGlmCisgICAgYm9vbCB0cnlFbnN1cmVUZXh0dXJlKHVuc2lnbmVkJiwgV2ViQ29yZTo6SW50
U2l6ZSYpOworICAgIHZvaWQgZG93bmxvYWRUZXh0dXJlKHVuc2lnbmVkLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJik7CiAKKyNpZiBVU0UoR1RLNCkKKyAgICB2b2lkIHNuYXBzaG90KEd0a1NuYXBz
aG90Kikgb3ZlcnJpZGU7CisjZWxzZQogICAgIGJvb2wgcGFpbnQoY2Fpcm9fdCosIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyNlbmRpZgogICAgIHZvaWQgcmVhbGl6ZSgpIG92
ZXJyaWRlOwogICAgIHZvaWQgdW5yZWFsaXplKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYWtlQ29u
dGV4dEN1cnJlbnQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwCmluZGV4IDQ5MWQzMGM3
ZWM0Yy4uMTZhN2VmNjZmMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKQEAgLTE5NSw2ICsxOTUs
MTIgQEAgdm9pZCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6dXBkYXRlKGNvbnN0IExheWVy
VHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQKICNlbmRpZgogfQogCisjaWYgVVNFKEdUSzQp
Cit2b2lkIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpzbmFwc2hvdChHdGtTbmFwc2hvdCop
Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorfQorI2Vsc2UKIGJvb2wgQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmVYMTE6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCkKIHsKICAgICBpZiAoIW1fc3VyZmFjZSkKQEAgLTIxNiw2ICsyMjIsNyBAQCBib29s
IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpwYWludChjYWlyb190KiBjciwgY29uc3QgSW50
UmVjdCYgY2xpcFJlY3QpCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKyNlbmRpZgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuaAppbmRleCAyNjg5MjY1OWNlYjYuLjA1NGU4
MGJkOTAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJh
dGVkQmFja2luZ1N0b3JlWDExLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0Fj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmgKQEAgLTQ3LDcgKzQ3LDExIEBAIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEoV2ViUGFnZVByb3h5Jik7CiAK
ICAgICB2b2lkIHVwZGF0ZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CisjaWYg
VVNFKEdUSzQpCisgICAgdm9pZCBzbmFwc2hvdChHdGtTbmFwc2hvdCopIG92ZXJyaWRlOworI2Vs
c2UKICAgICBib29sIHBhaW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3Zl
cnJpZGU7CisjZW5kaWYKIAogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsK
ICAgICBXZWJDb3JlOjpYVW5pcXVlRGFtYWdlIG1fZGFtYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0hhcmR3YXJlQWNjZWxlcmF0aW9uTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvSGFyZHdhcmVBY2NlbGVyYXRpb25NYW5hZ2VyLmNw
cAppbmRleCAyZGVlMjgxNzU5MGUuLmU5MWY1ZjQ3NzI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0hhcmR3YXJlQWNjZWxlcmF0aW9uTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0hhcmR3YXJlQWNjZWxlcmF0aW9uTWFuYWdlci5j
cHAKQEAgLTQ2LDYgKzQ2LDExIEBAIEhhcmR3YXJlQWNjZWxlcmF0aW9uTWFuYWdlcjo6SGFyZHdh
cmVBY2NlbGVyYXRpb25NYW5hZ2VyKCkKICAgICByZXR1cm47CiAjZW5kaWYKIAorI2lmIFVTRShH
VEs0KQorICAgIFJFTEVBU0VfQVNTRVJUKEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpjaGVja1Jl
cXVpcmVtZW50cygpKTsKKyAgICBtX2ZvcmNlSGFyZHdhcmVBY2NlbGVyYXRpb24gPSB0cnVlOwor
I2VuZGlmCisKICAgICBjb25zdCBjaGFyKiBkaXNhYmxlQ29tcG9zaXRpbmcgPSBnZXRlbnYoIldF
QktJVF9ESVNBQkxFX0NPTVBPU0lUSU5HX01PREUiKTsKICAgICBpZiAoZGlzYWJsZUNvbXBvc2l0
aW5nICYmIHN0cmNtcChkaXNhYmxlQ29tcG9zaXRpbmcsICIwIikpIHsKICAgICAgICAgbV9jYW5V
c2VIYXJkd2FyZUFjY2VsZXJhdGlvbiA9IGZhbHNlOwo=
</data>
<flag name="review"
          id="412952"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>