<?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>177185</bug_id>
          
          <creation_ts>2017-09-19 13:27:16 -0700</creation_ts>
          <short_desc>[WPE][GTK] Add support for ICC color management</short_desc>
          <delta_ts>2021-03-18 06:45:50 -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>Other</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=787876</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223065</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>223442</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex">eneeen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sami</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1350469</commentid>
    <comment_count>0</comment_count>
    <who name="Alex">eneeen</who>
    <bug_when>2017-09-19 13:27:16 -0700</bug_when>
    <thetext>Reporting bug to Webkit as GNOME Web browser developer suggested:
https://bugzilla.gnome.org/show_bug.cgi?id=787876

Safari and Chrome have color management and are Webkit based. Can WebkitGTK+ based GNOME Web have it to?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529945</commentid>
    <comment_count>1</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2019-04-24 03:53:00 -0700</bug_when>
    <thetext>More details here:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=880697

In short, WebKitGTK does not show this image with the right colors (compare it with other browsers to see the difference):

http://okgo.net/build/wp-content/uploads/2016/11/Email-Blast-Photo.jpg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536803</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-05-16 08:11:19 -0700</bug_when>
    <thetext>So a quick internet search suggests we need this for BMP, JPEG, JPEG 2000, PNG, and WebP. But not for GIF or ICO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688853</commentid>
    <comment_count>3</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2020-09-15 14:36:46 -0700</bug_when>
    <thetext>Still happens with 2.30.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738038</commentid>
    <comment_count>4</comment_count>
      <attachid>422825</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-03-10 06:28:56 -0800</bug_when>
    <thetext>Created attachment 422825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738063</commentid>
    <comment_count>5</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2021-03-10 07:54:09 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #4)
&gt; Created attachment 422825 [details]
&gt; Patch

I tested it with WebKitGTK 2.30.5 and I confirm that it solves the problem, thanks!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738074</commentid>
    <comment_count>6</comment_count>
      <attachid>422825</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-03-10 08:45:21 -0800</bug_when>
    <thetext>Comment on attachment 422825
Patch

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

&gt; Source/WebCore/platform/graphics/PlatformDisplay.cpp:278
&gt; +{

It would be nice here to fall-back to asking colord what&apos;s the color profile for
the screen. That would work also for Wayland-based compositors and desktop
environments which populate colord&apos;s view of the available screens (at least
GNOME Shell and Weston with the cms-colord plug-in do this).

Returning a hardwired RGB profile would be in my mind the last of resorts
after trying colord.

By the way, I think it&apos;s fine to skip adding support for colord in this patch,
but if you agree that it would be nice to consider it, let&apos;s create a new bug
to track that and maybe add a TODO/FIXME in the code ^_^

&gt; Source/cmake/FindLCMS2.cmake:70
&gt; +

I would rather prefer to use an imported target in this CMake find-module.
We have been transitioning towards using imported targets, for example
FindManette.cmake uses an imported target and also does the dance of
regex-matching the version from the headers as a fallback so I think it
would be a good one to use as template here :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738138</commentid>
    <comment_count>7</comment_count>
      <attachid>422825</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-10 11:00:44 -0800</bug_when>
    <thetext>Comment on attachment 422825
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/PlatformDisplay.cpp:278
&gt;&gt; +{
&gt; 
&gt; It would be nice here to fall-back to asking colord what&apos;s the color profile for
&gt; the screen. That would work also for Wayland-based compositors and desktop
&gt; environments which populate colord&apos;s view of the available screens (at least
&gt; GNOME Shell and Weston with the cms-colord plug-in do this).
&gt; 
&gt; Returning a hardwired RGB profile would be in my mind the last of resorts
&gt; after trying colord.
&gt; 
&gt; By the way, I think it&apos;s fine to skip adding support for colord in this patch,
&gt; but if you agree that it would be nice to consider it, let&apos;s create a new bug
&gt; to track that and maybe add a TODO/FIXME in the code ^_^

Beware: talking to colord will only work if you do it in the UI process.

It might seem to work during development, because I know cgarcia has the web process sandbox disabled. It won&apos;t work for users, though. :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738402</commentid>
    <comment_count>8</comment_count>
      <attachid>422825</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-03-11 02:51:54 -0800</bug_when>
    <thetext>Comment on attachment 422825
Patch

Changed to r+, after some discussion with Carlos Garcia, we agreed on
landing this as it covers common cases (as most consumer displays are
sRGB anyway), and we will file a separate bug regarding colord. The
CMake find-module can be rewritten later on as a follow-up, too.

:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738405</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-03-11 03:00:00 -0800</bug_when>
    <thetext>Committed r274273 (235170@main): &lt;https://commits.webkit.org/235170@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422825</attachid>
            <date>2021-03-10 06:28:56 -0800</date>
            <delta_ts>2021-03-11 02:51:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk-icc-color-profile.diff</filename>
            <type>text/plain</type>
            <size>28805</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwMDY3ZTZiNWJkNWUuLjgx
NzJiMGUxZjI2YiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDIxLTAzLTEwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKworICAgICAgICBbV1BFXVtHVEtdIEFkZCBzdXBwb3J0IGZvciBJQ0MgY29sb3Ig
bWFuYWdlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc3MTg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG9wdGlvbmFsIGxjbXMyIGRlcGVuZGVuY3kuCisKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvRmluZExDTVMyLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9u
c0dUSy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZToKKwog
MjAyMS0wMy0wMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzM4MTQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I5ODU4
NGU3MTEyLi4xYzA3OWJkMTA4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMS0w
My0xMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW1dQRV1bR1RLXSBBZGQgc3VwcG9ydCBmb3IgSUNDIGNvbG9yIG1hbmFnZW1lbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzE4NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBJQ0MgY29sb3IgcHJvZmlsZXMgdG8gSlBFRyBhbmQgUE5HIGRlY29kZXJzIHVzaW5nIGxjbXMy
IGlmIGF2YWlsYWJsZS4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAq
IFBsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
RGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6On5QbGF0Zm9y
bURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5Ojpjb2xvclByb2Zp
bGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5WDExOjpjb2xvclByb2ZpbGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNJQ0NNYXJrZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlUmVhZGVyOjpK
UEVHSW1hZ2VSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlUmVhZGVyOjpkZWNv
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6fkpQRUdJbWFnZURlY29k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6Y2xlYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdl
RGVjb2Rlcjo6c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFn
ZURlY29kZXI6On5QTkdJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VE
ZWNvZGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnNldEZh
aWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OmhlYWRlckF2YWlsYWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpQTkdJbWFnZURlY29kZXI6OmZyYW1lQ29tcGxldGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaDoKKwogMjAyMS0wMy0wNSAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyMjcyOTAwKTogTnVsbHB0ciBjcmFzaCBpbiBDb21wb3NlZFRyZWVJdGVyYXRvcjo6dHJh
dmVyc2VOZXh0SW5TaGFkb3dUcmVlKCkgdmlhIFNoYWRvd1Jvb3Q6Omhvc3RDaGlsZEVsZW1lbnRE
aWRDaGFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMzc1M2I1NTRlOGRmLi5iZWRl
YThmY2U1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04Niw2ICs4Niw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTCiAgICAgJHtHTElCX0dNT0RVTEVfTElCUkFSSUVT
fQogICAgICR7R0xJQl9HT0JKRUNUX0xJQlJBUklFU30KICAgICAke0dMSUJfTElCUkFSSUVTfQor
ICAgICR7TENNUzJfTElCUkFSSUVTfQogICAgICR7TElCU0VDUkVUX0xJQlJBUklFU30KICAgICAk
e0xJQlRBU04xX0xJQlJBUklFU30KICAgICAke0hZUEhFTl9MSUJSQVJJRVN9CkBAIC0xMDksNiAr
MTEwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICR7RU5DSEFOVF9JTkNMVURFX0RJUlN9CiAgICAgJHtHSU9fVU5JWF9JTkNMVURFX0RJUlN9
CiAgICAgJHtHTElCX0lOQ0xVREVfRElSU30KKyAgICAke0xDTVMyX0lOQ0xVREVfRElSfQogICAg
ICR7TElCU0VDUkVUX0lOQ0xVREVfRElSU30KICAgICAke0xJQlRBU04xX0lOQ0xVREVfRElSU30K
ICAgICAke1VQT1dFUkdMSUJfSU5DTFVERV9ESVJTfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQpp
bmRleCAxZDU2ZmUyMzk3YWEuLjVlN2I2YWE3ZjgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21h
a2UKQEAgLTU4LDYgKzU4LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKICAgICAk
e0dMSUJfR01PRFVMRV9MSUJSQVJJRVN9CiAgICAgJHtHTElCX0dPQkpFQ1RfTElCUkFSSUVTfQog
ICAgICR7R0xJQl9MSUJSQVJJRVN9CisgICAgJHtMQ01TMl9MSUJSQVJJRVN9CiAgICAgJHtMSUJU
QVNOMV9MSUJSQVJJRVN9CiAgICAgJHtVUE9XRVJHTElCX0xJQlJBUklFU30KICkKQEAgLTY2LDYg
KzY3LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICR7QVRLX0lOQ0xVREVfRElSU30KICAgICAke0dJT19VTklYX0lOQ0xVREVfRElSU30KICAg
ICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICR7TENNUzJfSU5DTFVERV9ESVJ9CiAgICAgJHtM
SUJUQVNOMV9JTkNMVURFX0RJUlN9CiAgICAgJHtVUE9XRVJHTElCX0lOQ0xVREVfRElSU30KICkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlz
cGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3Bs
YXkuY3BwCmluZGV4IGQ5ODY2NmI1NGVhMi4uYWZhZDUxYTczYWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKQEAgLTgw
LDYgKzgwLDEwIEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjZW5kaWYKIAor
I2lmIFVTRShMQ01TKQorI2luY2x1ZGUgPGxjbXMyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1EaXNwbGF5PiBQbGF0Zm9ybURpc3Bs
YXk6OmNyZWF0ZVBsYXRmb3JtRGlzcGxheSgpCkBAIC0xNzAsNiArMTc0LDEwIEBAIFBsYXRmb3Jt
RGlzcGxheTo6flBsYXRmb3JtRGlzcGxheSgpCiAjZW5kaWYKICAgICBpZiAoc19zaGFyZWREaXNw
bGF5Rm9yQ29tcG9zaXRpbmcgPT0gdGhpcykKICAgICAgICAgc19zaGFyZWREaXNwbGF5Rm9yQ29t
cG9zaXRpbmcgPSBudWxscHRyOworI2lmIFVTRShMQ01TKQorICAgIGlmIChtX2ljY1Byb2ZpbGUp
CisgICAgICAgIGNtc0Nsb3NlUHJvZmlsZShtX2ljY1Byb2ZpbGUpOworI2VuZGlmCiB9CiAKICNp
ZiBVU0UoRUdMKSB8fCBVU0UoR0xYKQpAQCAtMjY1LDQgKzI3MywxMyBAQCB2b2lkIFBsYXRmb3Jt
RGlzcGxheTo6dGVybWluYXRlRUdMRGlzcGxheSgpCiAKICNlbmRpZiAvLyBVU0UoRUdMKQogCisj
aWYgVVNFKExDTVMpCitjbXNIUFJPRklMRSBQbGF0Zm9ybURpc3BsYXk6OmNvbG9yUHJvZmlsZSgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX2ljY1Byb2ZpbGUpCisgICAgICAgIG1faWNjUHJvZmlsZSA9
IGNtc0NyZWF0ZV9zUkdCUHJvZmlsZSgpOworICAgIHJldHVybiBtX2ljY1Byb2ZpbGU7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAppbmRleCAyNTc2ZDBhMTg4NWMuLjhl
ZjJlOTE2YzE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1EaXNwbGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1EaXNwbGF5LmgKQEAgLTQwLDYgKzQwLDEwIEBAIHR5cGVkZWYgc3RydWN0IF9Hc3RH
TENvbnRleHQgR3N0R0xDb250ZXh0OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMRGlzcGxheSBHc3RH
TERpc3BsYXk7CiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSX0dMKQog
CisjaWYgVVNFKExDTVMpCit0eXBlZGVmIHZvaWQqIGNtc0hQUk9GSUxFOworI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0xDb250ZXh0OwpAQCAtODIsNiArODYsMTAgQEAg
cHVibGljOgogICAgIEdzdEdMQ29udGV4dCogZ3N0R0xDb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYK
IAorI2lmIFVTRShMQ01TKQorICAgIHZpcnR1YWwgY21zSFBST0ZJTEUgY29sb3JQcm9maWxlKCkg
Y29uc3Q7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIGVudW0gY2xhc3MgTmF0aXZlRGlzcGxh
eU93bmVkIHsgTm8sIFllcyB9OwogICAgIGV4cGxpY2l0IFBsYXRmb3JtRGlzcGxheShOYXRpdmVE
aXNwbGF5T3duZWQpOwpAQCAtMTAwLDYgKzEwOCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dD4gbV9zaGFyaW5nR0xDb250ZXh0OwogI2VuZGlmCiAKKyNpZiBV
U0UoTENNUykKKyAgICBtdXRhYmxlIGNtc0hQUk9GSUxFIG1faWNjUHJvZmlsZSB7IG51bGxwdHIg
fTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1EaXNwbGF5PiBjcmVhdGVQbGF0Zm9ybURpc3BsYXkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNw
cAppbmRleCAyNjFhMzhmYmU2MWYuLjRiNTU2NmVmZDI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJHTENvbnRleHQuaCIKIAogI2lmIFBMQVRG
T1JNKFgxMSkKKyNpbmNsdWRlIDxYMTEvWGF0b20uaD4KICNpbmNsdWRlIDxYMTEvWGxpYi5oPgog
I2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4KICNpZiBQTEFURk9STShHVEsp
CkBAIC00MSw2ICs0MiwxMCBAQAogI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KICNlbmRpZgogCisj
aWYgVVNFKExDTVMpCisjaW5jbHVkZSA8bGNtczIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURpc3BsYXk+IFBsYXRmb3JtRGlzcGxh
eVgxMTo6Y3JlYXRlKCkKQEAgLTE1MCw2ICsxNTUsNDYgQEAgdm9pZCogUGxhdGZvcm1EaXNwbGF5
WDExOjp2aXN1YWwoKSBjb25zdAogICAgIHJldHVybiBtX3Zpc3VhbDsKIH0KIAorI2lmIFVTRShM
Q01TKQorY21zSFBST0ZJTEUgUGxhdGZvcm1EaXNwbGF5WDExOjpjb2xvclByb2ZpbGUoKSBjb25z
dAoreworICAgIGlmIChtX2ljY1Byb2ZpbGUpCisgICAgICAgIHJldHVybiBtX2ljY1Byb2ZpbGU7
CisKKyAgICBBdG9tIGljY0F0b20gPSBYSW50ZXJuQXRvbShtX2Rpc3BsYXksICJfSUNDX1BST0ZJ
TEUiLCBGYWxzZSk7CisgICAgQXRvbSB0eXBlOworICAgIGludCBmb3JtYXQ7CisgICAgdW5zaWdu
ZWQgbG9uZyBpdGVtQ291bnQsIGJ5dGVzQWZ0ZXI7CisgICAgdW5zaWduZWQgY2hhciogZGF0YSA9
IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSBYR2V0V2luZG93UHJvcGVydHkobV9kaXNwbGF5
LCBSb290V2luZG93T2ZTY3JlZW4oRGVmYXVsdFNjcmVlbk9mRGlzcGxheShtX2Rpc3BsYXkpKSwg
aWNjQXRvbSwgMEwsIH4wTCwgRmFsc2UsIFhBX0NBUkRJTkFMLCAmdHlwZSwgJmZvcm1hdCwgJml0
ZW1Db3VudCwgJmJ5dGVzQWZ0ZXIsICZkYXRhKTsKKyAgICBpZiAocmVzdWx0ID09IFN1Y2Nlc3Mg
JiYgdHlwZSA9PSBYQV9DQVJESU5BTCAmJiBpdGVtQ291bnQgPiAwKSB7CisgICAgICAgIHVuc2ln
bmVkIGxvbmcgZGF0YVNpemU7CisgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgIGNh
c2UgODoKKyAgICAgICAgICAgIGRhdGFTaXplID0gaXRlbUNvdW50OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgMTY6CisgICAgICAgICAgICBkYXRhU2l6ZSA9IHNpemVvZihzaG9y
dCkgKiBpdGVtQ291bnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzMjoKKyAg
ICAgICAgICAgIGRhdGFTaXplID0gc2l6ZW9mKGxvbmcpICogaXRlbUNvdW50OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBkYXRhU2l6ZSA9IDA7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkYXRhU2l6ZSkKKyAg
ICAgICAgICAgIG1faWNjUHJvZmlsZSA9IGNtc09wZW5Qcm9maWxlRnJvbU1lbShkYXRhLCBkYXRh
U2l6ZSk7CisgICAgfQorCisgICAgaWYgKGRhdGEpCisgICAgICAgIFhGcmVlKGRhdGEpOworCisg
ICAgcmV0dXJuIG1faWNjUHJvZmlsZSA/IG1faWNjUHJvZmlsZSA6IFBsYXRmb3JtRGlzcGxheTo6
Y29sb3JQcm9maWxlKCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gUExBVEZPUk0oWDExKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oCmluZGV4IDQ1Y2M5MzA0YjZi
Yi4uNGVkMmY5ZTM3MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oCkBAIC01OSw2ICs1OSwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZUVHTERpc3BsYXkoKSBvdmVycmlkZTsKICNlbmRp
ZgogCisjaWYgVVNFKExDTVMpCisgICAgY21zSFBST0ZJTEUgY29sb3JQcm9maWxlKCkgY29uc3Qg
b3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIDo6RGlzcGxheSogbV9kaXNwbGF5IHsgbnVsbHB0ciB9
OwogICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9zdXBwb3J0c1hDb21wb3NpdGU7CiAgICAg
bXV0YWJsZSBPcHRpb25hbDxib29sPiBtX3N1cHBvcnRzWERhbWFnZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwCmluZGV4IDBjYmFlYWQ1MzU1YS4uYTY3ZmFjNTBlM2I4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTQwLDEwICs0MCwxMiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkpQRUdJbWFnZURlY29kZXIuaCIKIAotZXh0ZXJuICJDIiB7
Ci0jaWYgVVNFKElDQ0pQRUcpCi0jaW5jbHVkZSA8aWNjanBlZy5oPgorI2luY2x1ZGUgIlBsYXRm
b3JtRGlzcGxheS5oIgorI2lmIFVTRShMQ01TKQorI2luY2x1ZGUgPGxjbXMyLmg+CiAjZW5kaWYK
KworZXh0ZXJuICJDIiB7CiAjaW5jbHVkZSA8c2V0am1wLmg+CiB9CiAKQEAgLTc1LDcgKzc3LDkg
QEAgaW5saW5lIGJvb2wgZG9GYW5jeVVwc2FtcGxpbmcoKSB7IHJldHVybiBmYWxzZTsgfQogaW5s
aW5lIGJvb2wgZG9GYW5jeVVwc2FtcGxpbmcoKSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAot
Y29uc3QgaW50IGV4aWZNYXJrZXIgPSBKUEVHX0FQUDAgKyAxOworc3RhdGljIGNvbnN0IGludCBl
eGlmTWFya2VyID0gSlBFR19BUFAwICsgMTsKK3N0YXRpYyBjb25zdCBpbnQgaWNjTWFya2VyID0g
SlBFR19BUFAwICsgMjsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpY2NIZWFkZXJTaXplID0gMTQ7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTk0LDYgKzE5OCw1MSBAQCBzdGF0aWMgSW1h
Z2VPcmllbnRhdGlvbiByZWFkSW1hZ2VPcmllbnRhdGlvbihqcGVnX2RlY29tcHJlc3Nfc3RydWN0
KiBpbmZvKQogICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpOb25lOwogfQogCisjaWYgVVNF
KExDTVMpCitzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFy
a2VyKQoreworICAgIHJldHVybiBtYXJrZXItPm1hcmtlciA9PSBpY2NNYXJrZXIKKyAgICAgICAg
JiYgbWFya2VyLT5kYXRhX2xlbmd0aCA+PSBpY2NIZWFkZXJTaXplCisgICAgICAgICYmIG1hcmtl
ci0+ZGF0YVswXSA9PSAnSScKKyAgICAgICAgJiYgbWFya2VyLT5kYXRhWzFdID09ICdDJworICAg
ICAgICAmJiBtYXJrZXItPmRhdGFbMl0gPT0gJ0MnCisgICAgICAgICYmIG1hcmtlci0+ZGF0YVsz
XSA9PSAnXycKKyAgICAgICAgJiYgbWFya2VyLT5kYXRhWzRdID09ICdQJworICAgICAgICAmJiBt
YXJrZXItPmRhdGFbNV0gPT0gJ1InCisgICAgICAgICYmIG1hcmtlci0+ZGF0YVs2XSA9PSAnTycK
KyAgICAgICAgJiYgbWFya2VyLT5kYXRhWzddID09ICdGJworICAgICAgICAmJiBtYXJrZXItPmRh
dGFbOF0gPT0gJ0knCisgICAgICAgICYmIG1hcmtlci0+ZGF0YVs5XSA9PSAnTCcKKyAgICAgICAg
JiYgbWFya2VyLT5kYXRhWzEwXSA9PSAnRScKKyAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9
PSAnXDAnOworfQorCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUo
anBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3sKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2Vy
ID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7Cisg
ICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIHVuc2lnbmVkIHNlcXVlbmNlTnVtYmVyID0gbWFya2VyLT5kYXRhWzEyXTsKKyAg
ICAgICAgaWYgKCFzZXF1ZW5jZU51bWJlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgICAgIHVuc2lnbmVkIG1hcmtlckNvdW50ID0gbWFya2VyLT5kYXRhWzEzXTsKKyAgICAg
ICAgaWYgKHNlcXVlbmNlTnVtYmVyID4gbWFya2VyQ291bnQpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xl
bmd0aCAtIGljY0hlYWRlclNpemU7CisgICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJT
aXplKTsKKyAgICB9CisKKyAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKyNlbmRpZgorCiBjbGFzcyBKUEVH
SW1hZ2VSZWFkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAt
MjMyLDEzICsyODEsMTUgQEAgcHVibGljOgogICAgICAgICBzcmMtPnB1Yi50ZXJtX3NvdXJjZSA9
IHRlcm1fc291cmNlOwogICAgICAgICBzcmMtPmRlY29kZXIgPSB0aGlzOwogCi0jaWYgVVNFKElD
Q0pQRUcpCi0gICAgICAgIC8vIFJldGFpbiBJQ0MgY29sb3IgcHJvZmlsZSBtYXJrZXJzIGZvciBj
b2xvciBtYW5hZ2VtZW50LgotICAgICAgICBzZXR1cF9yZWFkX2ljY19wcm9maWxlKCZtX2luZm8p
OwotI2VuZGlmCi0KICAgICAgICAgLy8gS2VlcCBBUFAxIGJsb2NrcywgZm9yIG9idGFpbmluZyBl
eGlmIGRhdGEuCiAgICAgICAgIGpwZWdfc2F2ZV9tYXJrZXJzKCZtX2luZm8sIGV4aWZNYXJrZXIs
IDB4RkZGRik7CisKKyNpZiBVU0UoTENNUykKKyAgICAgICAgaWYgKCFtX2RlY29kZXItPmlnbm9y
ZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpKSB7CisgICAgICAgICAgICAvLyBLZWVwIEFQUDIgYmxv
Y2tzLCBmb3Igb2J0YWluaW5nIElDQyBwcm9maWxlIGRhdGEuCisgICAgICAgICAgICBqcGVnX3Nh
dmVfbWFya2VycygmbV9pbmZvLCBpY2NNYXJrZXIsIDB4RkZGRik7CisgICAgICAgIH0KKyNlbmRp
ZgogICAgIH0KIAogICAgIH5KUEVHSW1hZ2VSZWFkZXIoKQpAQCAtMzE2LDYgKzM2NywxMCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBtX2Rl
Y29kZXItPnNldE9yaWVudGF0aW9uKHJlYWRJbWFnZU9yaWVudGF0aW9uKGluZm8oKSkpOworI2lm
IFVTRShMQ01TKQorICAgICAgICAgICAgaWYgKCFtX2RlY29kZXItPmlnbm9yZXNHYW1tYUFuZENv
bG9yUHJvZmlsZSgpICYmIG1faW5mby5vdXRfY29sb3Jfc3BhY2UgPT0gcmdiT3V0cHV0Q29sb3JT
cGFjZSgpKQorICAgICAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0SUNDUHJvZmlsZShyZWFkSUND
UHJvZmlsZSgmbV9pbmZvKSk7CisjZW5kaWYKIAogICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb2Nh
dGUgYSBnaWFudCBhbmQgc3VwZXJmbHVvdXMgbWVtb3J5IGJ1ZmZlciB3aGVuIHRoZQogICAgICAg
ICAgICAgLy8gaW1hZ2UgaXMgYSBzZXF1ZW50aWFsIEpQRUcuCkBAIC00OTAsNyArNTQ1LDEwIEBA
IEpQRUdJbWFnZURlY29kZXI6OkpQRUdJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlCiB7CiB9CiAKLUpQRUdJbWFnZURlY29kZXI6On5KUEVH
SW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OworSlBFR0ltYWdlRGVjb2Rlcjo6fkpQRUdJbWFnZURl
Y29kZXIoKQoreworICAgIGNsZWFyKCk7Cit9CiAKIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUq
IEpQRUdJbWFnZURlY29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CkBA
IC01MDYsOSArNTY0LDI0IEBAIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIEpQRUdJbWFnZURl
Y29kZXI6OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuICZmcmFt
ZTsKIH0KIAotYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQordm9pZCBKUEVHSW1h
Z2VEZWNvZGVyOjpjbGVhcigpCiB7CiAgICAgbV9yZWFkZXIgPSBudWxscHRyOworI2lmIFVTRShM
Q01TKQorICAgIGlmIChtX2ljY1RyYW5zZm9ybSkgeworICAgICAgICBjbXNEZWxldGVUcmFuc2Zv
cm0obV9pY2NUcmFuc2Zvcm0pOworICAgICAgICBtX2ljY1RyYW5zZm9ybSA9IG51bGxwdHI7Cisg
ICAgfQorICAgIGlmIChtX2ljY1Byb2ZpbGUpIHsKKyAgICAgICAgY21zQ2xvc2VQcm9maWxlKG1f
aWNjUHJvZmlsZSk7CisgICAgICAgIG1faWNjUHJvZmlsZSA9IG51bGxwdHI7CisgICAgfQorI2Vu
ZGlmCit9CisKK2Jvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCkKK3sKKyAgICBjbGVh
cigpOwogICAgIHJldHVybiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCk7CiB9CiAK
QEAgLTU1MiwxMSArNjI1LDE3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2Nhbmxp
bmVzKFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlcikKICAgICAgICAgaWYgKGpwZWdf
cmVhZF9zY2FubGluZXMoaW5mbywgc2FtcGxlcywgMSkgIT0gMSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICBhdXRvKiBjdXJyZW50QWRkcmVzcyA9IGJ1ZmZlci5iYWNraW5n
U3RvcmUoKS0+cGl4ZWxBdCgwLCBzb3VyY2VZKTsKKyAgICAgICAgYXV0byogcm93ID0gYnVmZmVy
LmJhY2tpbmdTdG9yZSgpLT5waXhlbEF0KDAsIHNvdXJjZVkpOworICAgICAgICBhdXRvKiBjdXJy
ZW50QWRkcmVzcyA9IHJvdzsKICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4
KSB7CiAgICAgICAgICAgICBzZXRQaXhlbDxjb2xvclNwYWNlPihidWZmZXIsIGN1cnJlbnRBZGRy
ZXNzLCBzYW1wbGVzLCB4KTsKICAgICAgICAgICAgICsrY3VycmVudEFkZHJlc3M7CiAgICAgICAg
IH0KKworI2lmIFVTRShMQ01TKQorICAgICAgICBpZiAobV9pY2NUcmFuc2Zvcm0pCisgICAgICAg
ICAgICBjbXNEb1RyYW5zZm9ybShtX2ljY1RyYW5zZm9ybSwgcm93LCByb3csIGluZm8tPm91dHB1
dF93aWR0aCk7CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01ODUsNiAr
NjY0LDExIEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKCkKICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIqIHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hh
cio+KGJ1ZmZlci5iYWNraW5nU3RvcmUoKS0+cGl4ZWxBdCgwLCBpbmZvLT5vdXRwdXRfc2Nhbmxp
bmUpKTsKICAgICAgICAgICAgIGlmIChqcGVnX3JlYWRfc2NhbmxpbmVzKGluZm8sICZyb3csIDEp
ICE9IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgVVNFKExDTVMpCisg
ICAgICAgICAgICBpZiAobV9pY2NUcmFuc2Zvcm0pCisgICAgICAgICAgICAgICAgY21zRG9UcmFu
c2Zvcm0obV9pY2NUcmFuc2Zvcm0sIHJvdywgcm93LCBpbmZvLT5vdXRwdXRfd2lkdGgpOworI2Vu
ZGlmCiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQpAQCAtNjIzLDgg
KzcwNywxMCBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmICghbV9yZWFkZXIpCisgICAgaWYgKCFtX3JlYWRlcikgeworICAgICAgICBjbGVh
cigpOwogICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8SlBFR0ltYWdlUmVhZGVyPih0aGlz
KTsKKyAgICB9CiAKICAgICAvLyBJZiB3ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGltYWdlIGJ1dCB3
ZSd2ZSByZWNlaXZlZCBhbGwgdGhlIGRhdGEsIGRlY29kaW5nCiAgICAgLy8gaGFzIGZhaWxlZC4K
QEAgLTYzMyw3ICs3MTksMjUgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBv
bmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gSWYgd2UncmUgZG9uZSBkZWNv
ZGluZyB0aGUgaW1hZ2UsIHdlIGRvbid0IG5lZWQgdGhlIEpQRUdJbWFnZVJlYWRlcgogICAgIC8v
IGFueW1vcmUuICAoSWYgd2UgZmFpbGVkLCB8bV9yZWFkZXJ8IGhhcyBhbHJlYWR5IGJlZW4gY2xl
YXJlZC4pCiAgICAgZWxzZSBpZiAoIW1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkgJiYgKG1f
ZnJhbWVCdWZmZXJDYWNoZVswXS5pc0NvbXBsZXRlKCkpKQotICAgICAgICBtX3JlYWRlciA9IG51
bGxwdHI7CisgICAgICAgIGNsZWFyKCk7Cit9CisKKyNpZiBVU0UoTENNUykKK3ZvaWQgSlBFR0lt
YWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K3sKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pY2NQcm9maWxl
ID0gY21zT3BlblByb2ZpbGVGcm9tTWVtKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgaWYgKCFtX2ljY1Byb2ZpbGUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGRp
c3BsYXlQcm9maWxlID0gUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkuY29sb3JQcm9m
aWxlKCk7CisgICAgaWYgKGNtc0dldENvbG9yU3BhY2UobV9pY2NQcm9maWxlKSAhPSBjbXNTaWdS
Z2JEYXRhIHx8IGNtc0dldENvbG9yU3BhY2UoZGlzcGxheVByb2ZpbGUpICE9IGNtc1NpZ1JnYkRh
dGEpCisgICAgICAgIHJldHVybjsKKworICAgIG1faWNjVHJhbnNmb3JtID0gY21zQ3JlYXRlVHJh
bnNmb3JtKG1faWNjUHJvZmlsZSwgVFlQRV9CR1JBXzgsIGRpc3BsYXlQcm9maWxlLCBUWVBFX0JH
UkFfOCwgSU5URU5UX1JFTEFUSVZFX0NPTE9SSU1FVFJJQywgMCk7CiB9CisjZW5kaWYKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCA4MjUyMjZkZDZiODcuLmQyZDdmYTZhYjQ5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTM2LDYgKzM2LDExIEBAIGV4dGVy
biAiQyIgewogI2luY2x1ZGUgImpwZWdsaWIuaCIKIH0KIAorI2lmIFVTRShMQ01TKQordHlwZWRl
ZiB2b2lkKiBjbXNIUFJPRklMRTsKK3R5cGVkZWYgdm9pZCogY21zSFRSQU5TRk9STTsKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBKUEVHSW1hZ2VSZWFkZXI7CkBA
IC02Miw2ICs2Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBqcGVnQ29t
cGxldGUoKTsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CisjaWYgVVNFKExD
TVMpCisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsK
KyNlbmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlBFR0ltYWdlRGVjb2RlcihBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwpAQCAtNzgsNyArODYsMTMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB0ZW1wbGF0ZSA8Sl9DT0xPUl9TUEFDRSBjb2xvclNw
YWNlLCBib29sIGlzU2NhbGVkPgogICAgICAgICBib29sIG91dHB1dFNjYW5saW5lcyhTY2FsYWJs
ZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIpOwogCisgICAgICAgIHZvaWQgY2xlYXIoKTsKKwog
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlBFR0ltYWdlUmVhZGVyPiBtX3JlYWRlcjsKKyNpZiBV
U0UoTENNUykKKyAgICAgICAgY21zSFBST0ZJTEUgbV9pY2NQcm9maWxlIHsgbnVsbHB0ciB9Owor
ICAgICAgICBjbXNIVFJBTlNGT1JNIG1faWNjVHJhbnNmb3JtIHsgbnVsbHB0ciB9OworI2VuZGlm
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcAppbmRleCA1YWEwZTJlZDdiNTEuLjlhNDcwZWJhYTExYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHAKQEAgLTQyLDEwICs0MiwxNSBAQAogI2luY2x1ZGUgIlBOR0ltYWdlRGVjb2Rl
ci5oIgogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXkuaCIK
ICNpbmNsdWRlIDxwbmcuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKKyNpZiBVU0UoTENNUykKKyNpbmNsdWRlIDxsY21zMi5o
PgorI2VuZGlmCisKICNpZiBkZWZpbmVkKFBOR19MSUJQTkdfVkVSX01BSk9SKSAmJiBkZWZpbmVk
KFBOR19MSUJQTkdfVkVSX01JTk9SKSAmJiAoUE5HX0xJQlBOR19WRVJfTUFKT1IgPiAxIHx8IChQ
TkdfTElCUE5HX1ZFUl9NQUpPUiA9PSAxICYmIFBOR19MSUJQTkdfVkVSX01JTk9SID49IDQpKQog
I2RlZmluZSBKTVBCVUYocG5nX3B0cikgcG5nX2ptcGJ1ZihwbmdfcHRyKQogI2Vsc2UKQEAgLTIy
Miw3ICsyMjcsMTAgQEAgUE5HSW1hZ2VEZWNvZGVyOjpQTkdJbWFnZURlY29kZXIoQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIHsKIH0KIAotUE5HSW1hZ2VE
ZWNvZGVyOjp+UE5HSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OworUE5HSW1hZ2VEZWNvZGVyOjp+
UE5HSW1hZ2VEZWNvZGVyKCkKK3sKKyAgICBjbGVhcigpOworfQogCiAjaWYgRU5BQkxFKEFQTkcp
CiBSZXBldGl0aW9uQ291bnQgUE5HSW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9uQ291bnQoKSBjb25z
dApAQCAtMjYyLDExICsyNzAsMjYgQEAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogUE5HSW1h
Z2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIHJldHVybiAm
ZnJhbWU7CiB9CiAKK3ZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpjbGVhcigpCit7CisgICAgbV9yZWFk
ZXIgPSBudWxscHRyOworI2lmIFVTRShMQ01TKQorICAgIGlmIChtX2ljY1RyYW5zZm9ybSkgewor
ICAgICAgICBjbXNEZWxldGVUcmFuc2Zvcm0obV9pY2NUcmFuc2Zvcm0pOworICAgICAgICBtX2lj
Y1RyYW5zZm9ybSA9IG51bGxwdHI7CisgICAgfQorICAgIGlmIChtX2ljY1Byb2ZpbGUpIHsKKyAg
ICAgICAgY21zQ2xvc2VQcm9maWxlKG1faWNjUHJvZmlsZSk7CisgICAgICAgIG1faWNjUHJvZmls
ZSA9IG51bGxwdHI7CisgICAgfQorI2VuZGlmCit9CisKIGJvb2wgUE5HSW1hZ2VEZWNvZGVyOjpz
ZXRGYWlsZWQoKQogewogICAgIGlmIChtX2RvTm90aGluZ09uRmFpbHVyZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIG1fcmVhZGVyID0gbnVsbHB0cjsKKyAgICBjbGVhcigpOwogICAgIHJl
dHVybiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCk7CiB9CiAKQEAgLTM4Miw2ICs0
MDUsMjMgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmhlYWRlckF2YWlsYWJsZSgpCiAgICAgfSBl
bHNlCiAgICAgICAgIHBuZ19zZXRfZ2FtbWEocG5nLCBjRGVmYXVsdEdhbW1hLCBjSW52ZXJzZUdh
bW1hKTsKIAorI2lmIFVTRShMQ01TKQorICAgIGlmICghbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZSkgeworICAgICAgICBjaGFyKiBpY2NQcm9maWxlVGl0bGU7CisgICAgICAgIHVuc2lnbmVk
IGNoYXIqIGljY1Byb2ZpbGVEYXRhOworICAgICAgICBwbmdfdWludF8zMiBpY2NQcm9maWxlRGF0
YVNpemU7CisgICAgICAgIGludCBjb21wcmVzc2lvblR5cGU7CisgICAgICAgIGlmIChwbmdfZ2V0
X2lDQ1AocG5nLCBpbmZvLCAmaWNjUHJvZmlsZVRpdGxlLCAmY29tcHJlc3Npb25UeXBlLCAmaWNj
UHJvZmlsZURhdGEsICZpY2NQcm9maWxlRGF0YVNpemUpKSB7CisgICAgICAgICAgICBtX2ljY1By
b2ZpbGUgPSBjbXNPcGVuUHJvZmlsZUZyb21NZW0oaWNjUHJvZmlsZURhdGEsIGljY1Byb2ZpbGVE
YXRhU2l6ZSk7CisgICAgICAgICAgICBpZiAobV9pY2NQcm9maWxlKSB7CisgICAgICAgICAgICAg
ICAgYXV0byogZGlzcGxheVByb2ZpbGUgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXko
KS5jb2xvclByb2ZpbGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoY21zR2V0Q29sb3JTcGFjZSht
X2ljY1Byb2ZpbGUpID09IGNtc1NpZ1JnYkRhdGEgJiYgY21zR2V0Q29sb3JTcGFjZShkaXNwbGF5
UHJvZmlsZSkgPT0gY21zU2lnUmdiRGF0YSkKKyAgICAgICAgICAgICAgICAgICAgbV9pY2NUcmFu
c2Zvcm0gPSBjbXNDcmVhdGVUcmFuc2Zvcm0obV9pY2NQcm9maWxlLCBUWVBFX0JHUkFfOCwgZGlz
cGxheVByb2ZpbGUsIFRZUEVfQkdSQV84LCBJTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDLCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgLy8gVGVs
bCBsaWJwbmcgdG8gc2VuZCB1cyByb3dzIGZvciBpbnRlcmxhY2VkIHBuZ3MuCiAgICAgaWYgKGlu
dGVybGFjZVR5cGUgPT0gUE5HX0lOVEVSTEFDRV9BREFNNykKICAgICAgICAgcG5nX3NldF9pbnRl
cmxhY2VfaGFuZGxpbmcocG5nKTsKQEAgLTQ5OCw3ICs1MzgsOCBAQCB2b2lkIFBOR0ltYWdlRGVj
b2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQgcm93
SW5kZXgsCiAgICAgfQogCiAgICAgLy8gV3JpdGUgdGhlIGRlY29kZWQgcm93IHBpeGVscyB0byB0
aGUgZnJhbWUgYnVmZmVyLgotICAgIGF1dG8qIGFkZHJlc3MgPSBidWZmZXIuYmFja2luZ1N0b3Jl
KCktPnBpeGVsQXQoMCwgcm93SW5kZXgpOworICAgIGF1dG8qIGRlc3RSb3cgPSBidWZmZXIuYmFj
a2luZ1N0b3JlKCktPnBpeGVsQXQoMCwgcm93SW5kZXgpOworICAgIGF1dG8qIGFkZHJlc3MgPSBk
ZXN0Um93OwogICAgIGludCB3aWR0aCA9IHNpemUoKS53aWR0aCgpOwogICAgIHVuc2lnbmVkIGNo
YXIgbm9uVHJpdmlhbEFscGhhTWFzayA9IDA7CiAKQEAgLTUxNCw2ICs1NTUsMTEgQEAgdm9pZCBQ
TkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSh1bnNpZ25lZCBjaGFyKiByb3dCdWZmZXIsIHVu
c2lnbmVkIHJvd0luZGV4LAogICAgICAgICAgICAgKmFkZHJlc3MgPSAweEZGMDAwMDAwIHwgcGl4
ZWxbMF0gPDwgMTYgfCBwaXhlbFsxXSA8PCA4IHwgcGl4ZWxbMl07CiAgICAgfQogCisjaWYgVVNF
KExDTVMpCisgICAgaWYgKG1faWNjVHJhbnNmb3JtKQorICAgICAgICBjbXNEb1RyYW5zZm9ybSht
X2ljY1RyYW5zZm9ybSwgZGVzdFJvdywgZGVzdFJvdywgd2lkdGgpOworI2VuZGlmCisKICAgICBp
ZiAobm9uVHJpdmlhbEFscGhhTWFzayAmJiAhYnVmZmVyLmhhc0FscGhhKCkpCiAgICAgICAgIGJ1
ZmZlci5zZXRIYXNBbHBoYSh0cnVlKTsKIH0KQEAgLTUzNyw4ICs1ODMsMTAgQEAgdm9pZCBQTkdJ
bWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCB1bnNpZ25lZCBoYWx0QXRGcmFtZSwg
Ym9vbCBhbGxEYXRhUmUKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmICghbV9yZWFkZXIpCisgICAgaWYgKCFtX3JlYWRlcikgeworICAgICAgICBjbGVhcigpOwog
ICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8UE5HSW1hZ2VSZWFkZXI+KHRoaXMpOworICAg
IH0KIAogICAgIC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0IHdlJ3ZlIHJl
Y2VpdmVkIGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFpbGVkLgpAQCAtNTQ3
LDcgKzU5NSw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwg
dW5zaWduZWQgaGFsdEF0RnJhbWUsIGJvb2wgYWxsRGF0YVJlCiAgICAgLy8gSWYgd2UncmUgZG9u
ZSBkZWNvZGluZyB0aGUgaW1hZ2UsIHdlIGRvbid0IG5lZWQgdGhlIFBOR0ltYWdlUmVhZGVyCiAg
ICAgLy8gYW55bW9yZS4gIChJZiB3ZSBmYWlsZWQsIHxtX3JlYWRlcnwgaGFzIGFscmVhZHkgYmVl
biBjbGVhcmVkLikKICAgICBlbHNlIGlmIChpc0NvbXBsZXRlKCkpCi0gICAgICAgIG1fcmVhZGVy
ID0gbnVsbHB0cjsKKyAgICAgICAgY2xlYXIoKTsKIH0KIAogI2lmIEVOQUJMRShBUE5HKQpAQCAt
ODA3LDcgKzg1NSw4IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKCkKICAg
ICAgICAgcG5nX2J5dGVwIHJvdyA9IGludGVybGFjZUJ1ZmZlcjsKICAgICAgICAgZm9yIChpbnQg
eSA9IHJlY3QueSgpOyB5IDwgcmVjdC5tYXhZKCk7ICsreSwgcm93ICs9IGNvbG9yQ2hhbm5lbHMg
KiBzaXplKCkud2lkdGgoKSkgewogICAgICAgICAgICAgcG5nX2J5dGVwIHBpeGVsID0gcm93Owot
ICAgICAgICAgICAgYXV0byogYWRkcmVzcyA9IGJ1ZmZlci5iYWNraW5nU3RvcmUoKS0+cGl4ZWxB
dChyZWN0LngoKSwgeSk7CisgICAgICAgICAgICBhdXRvKiBkZXN0Um93ID0gYnVmZmVyLmJhY2tp
bmdTdG9yZSgpLT5waXhlbEF0KHJlY3QueCgpLCB5KTsKKyAgICAgICAgICAgIGF1dG8qIGFkZHJl
c3MgPSBkZXN0Um93OwogICAgICAgICAgICAgZm9yIChpbnQgeCA9IHJlY3QueCgpOyB4IDwgcmVj
dC5tYXhYKCk7ICsreCwgcGl4ZWwgKz0gY29sb3JDaGFubmVscykgewogICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFscGhhID0gaGFzQWxwaGEgPyBwaXhlbFszXSA6IDI1NTsKICAgICAgICAgICAg
ICAgICBub25Ucml2aWFsQWxwaGEgfD0gYWxwaGEgPCAyNTU7CkBAIC04MTYsNiArODY1LDEwIEBA
IHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpmcmFtZUNvbXBsZXRlKCkKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5iYWNraW5nU3RvcmUoKS0+YmxlbmRQaXhl
bChhZGRyZXNzKyssIHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0sIGFscGhhKTsKICAgICAg
ICAgICAgIH0KKyNpZiBVU0UoTENNUykKKyAgICAgICAgICAgIGlmIChtX2ljY1RyYW5zZm9ybSkK
KyAgICAgICAgICAgICAgICBjbXNEb1RyYW5zZm9ybShtX2ljY1RyYW5zZm9ybSwgZGVzdFJvdywg
ZGVzdFJvdywgcmVjdC5tYXhYKCkpOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
IW5vblRyaXZpYWxBbHBoYSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCmluZGV4IDNmYmVhMmQ3
ZjMzZC4uNmMyN2VmOTMyZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCkBAIC0zMCw2ICsz
MCwxMSBAQAogI2luY2x1ZGUgPHBuZy5oPgogI2VuZGlmCiAKKyNpZiBVU0UoTENNUykKK3R5cGVk
ZWYgdm9pZCogY21zSFBST0ZJTEU7Cit0eXBlZGVmIHZvaWQqIGNtc0hUUkFOU0ZPUk07CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgUE5HSW1hZ2VSZWFkZXI7CkBA
IC0xMDIsNiArMTA3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGZhbGxi
YWNrTm90QW5pbWF0ZWQoKTsKICNlbmRpZgogCisgICAgICAgIHZvaWQgY2xlYXIoKTsKKwogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UE5HSW1hZ2VSZWFkZXI+IG1fcmVhZGVyOwogICAgICAgICBi
b29sIG1fZG9Ob3RoaW5nT25GYWlsdXJlOwogICAgICAgICB1bnNpZ25lZCBtX2N1cnJlbnRGcmFt
ZTsKQEAgLTEzMSw2ICsxMzgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBwbmdf
Ynl0ZSBtX2RhdGFQTFRFWzEyICsgMjU2ICogM107CiAgICAgICAgIHBuZ19ieXRlIG1fZGF0YXRS
TlNbMTIgKyAyNTZdOwogI2VuZGlmCisjaWYgVVNFKExDTVMpCisgICAgICAgIGNtc0hQUk9GSUxF
IG1faWNjUHJvZmlsZSB7IG51bGxwdHIgfTsKKyAgICAgICAgY21zSFRSQU5TRk9STSBtX2ljY1Ry
YW5zZm9ybSB7IG51bGxwdHIgfTsKKyNlbmRpZgorCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRMQ01TMi5jbWFrZSBiL1NvdXJj
ZS9jbWFrZS9GaW5kTENNUzIuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5hZTFmMzc1ZGVlY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvY21ha2UvRmlu
ZExDTVMyLmNtYWtlCkBAIC0wLDAgKzEsNzMgQEAKKyMgLSBGaW5kIExDTVMyCisjIEZpbmQgdGhl
IExDTVMyIGluY2x1ZGVzIGFuZCBsaWJyYXJ5CisjIFRoaXMgbW9kdWxlIGRlZmluZXMKKyMgIExD
TVMyX0lOQ0xVREVfRElSLCB3aGVyZSB0byBmaW5kIGxjbXMuaAorIyAgTENNUzJfTElCUkFSSUVT
LCB0aGUgbGlicmFyaWVzIG5lZWRlZCB0byB1c2UgTENNUzIuCisjICBMQ01TMl9WRVJTSU9OLCBU
aGUgdmFsdWUgb2YgTENNU19WRVJTSU9OIGRlZmluZWQgaW4gbGNtcy5oCisjICBMQ01TMl9GT1VO
RCwgSWYgZmFsc2UsIGRvIG5vdCB0cnkgdG8gdXNlIExDTVMyLgorCisKKyMgQ29weXJpZ2h0IChj
KSAyMDA4LCBBZHJpYW4gUGFnZSwgPGFkcmlhbkBwYWdlbmV0LnBsdXMuY29tPgorIyBDb3B5cmln
aHQgKGMpIDIwMDksIEN5cmlsbGUgQmVyZ2VyLCA8Y2JlcmdlckBjYmVyZ2VyLm5ldD4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpcyBhbGxvd2VkIGFjY29yZGluZyB0byB0aGUgdGVybXMg
b2YgdGhlIEJTRCBsaWNlbnNlLgorIyBGb3IgZGV0YWlscyBzZWUgdGhlIGFjY29tcGFueWluZyBD
T1BZSU5HLUNNQUtFLVNDUklQVFMgZmlsZS4KKworCisjIHVzZSBwa2ctY29uZmlnIHRvIGdldCB0
aGUgZGlyZWN0b3JpZXMgYW5kIHRoZW4gdXNlIHRoZXNlIHZhbHVlcworIyBpbiB0aGUgRklORF9Q
QVRIKCkgYW5kIEZJTkRfTElCUkFSWSgpIGNhbGxzCitpZiAoTk9UIFdJTjMyKQorICAgZmluZF9w
YWNrYWdlKFBrZ0NvbmZpZykKKyAgIHBrZ19jaGVja19tb2R1bGVzKFBDX0xDTVMyIGxjbXMyKQor
ICAgc2V0KExDTVMyX0RFRklOSVRJT05TICR7UENfTENNUzJfQ0ZMQUdTX09USEVSfSkKK2VuZGlm
IChOT1QgV0lOMzIpCisKK2ZpbmRfcGF0aChMQ01TMl9JTkNMVURFX0RJUiBsY21zMi5oCisgICBQ
QVRIUworICAgJHtQQ19MQ01TMl9JTkNMVURFRElSfQorICAgJHtQQ19MQ01TMl9JTkNMVURFX0RJ
UlN9CisgICBQQVRIX1NVRkZJWEVTIGxjbXMyIGxpYmxjbXMyCispCisKK2ZpbmRfbGlicmFyeShM
Q01TMl9MSUJSQVJJRVMgTkFNRVMgbGNtczIgbGlibGNtczIgbGNtcy0yIGxpYmxjbXMtMgorICAg
UEFUSFMKKyAgICR7UENfTENNUzJfTElCRElSfQorICAgJHtQQ19MQ01TMl9MSUJSQVJZX0RJUlN9
CisgICBQQVRIX1NVRkZJWEVTIGxjbXMyCispCisKK2lmIChMQ01TMl9JTkNMVURFX0RJUiBBTkQg
TENNUzJfTElCUkFSSUVTKQorICAgc2V0KExDTVMyX0ZPVU5EIFRSVUUpCitlbHNlIChMQ01TMl9J
TkNMVURFX0RJUiBBTkQgTENNUzJfTElCUkFSSUVTKQorICAgc2V0KExDTVMyX0ZPVU5EIEZBTFNF
KQorZW5kaWYgKExDTVMyX0lOQ0xVREVfRElSIEFORCBMQ01TMl9MSUJSQVJJRVMpCisKK2lmIChM
Q01TMl9GT1VORCkKKyAgIGZpbGUoUkVBRCAke0xDTVMyX0lOQ0xVREVfRElSfS9sY21zMi5oIExD
TVMyX1ZFUlNJT05fQ09OVEVOVCkKKyAgIHN0cmluZyhSRUdFWCBNQVRDSCAiI2RlZmluZSBMQ01T
X1ZFUlNJT05bIF0qWzAtOV0qXG4iIExDTVMyX1ZFUlNJT05fTUFUQ0ggJHtMQ01TMl9WRVJTSU9O
X0NPTlRFTlR9KQorICAgaWYgKExDTVMyX1ZFUlNJT05fTUFUQ0gpCisgICAgICBzdHJpbmcoUkVH
RVggUkVQTEFDRSAiI2RlZmluZSBMQ01TX1ZFUlNJT05bIF0qKFswLTldKilcbiIgIlxcMSIgTENN
UzJfVkVSU0lPTiAke0xDTVMyX1ZFUlNJT05fTUFUQ0h9KQorICAgICAgaWYgKE5PVCBMQ01TMl9G
SU5EX1FVSUVUTFkpCisgICAgICAgICBzdHJpbmcoU1VCU1RSSU5HICR7TENNUzJfVkVSU0lPTn0g
MCAxIExDTVMyX01BSk9SX1ZFUlNJT04pCisgICAgICAgICBzdHJpbmcoU1VCU1RSSU5HICR7TENN
UzJfVkVSU0lPTn0gMSAyIExDTVMyX01JTk9SX1ZFUlNJT04pCisgICAgICAgICBtZXNzYWdlKFNU
QVRVUyAiRm91bmQgbGNtcyB2ZXJzaW9uICR7TENNUzJfTUFKT1JfVkVSU0lPTn0uJHtMQ01TMl9N
SU5PUl9WRVJTSU9OfSwgJHtMQ01TMl9MSUJSQVJJRVN9IikKKyAgICAgIGVuZGlmIChOT1QgTENN
UzJfRklORF9RVUlFVExZKQorICAgZWxzZSAoTENNUzJfVkVSU0lPTl9NQVRDSCkKKyAgICAgIGlm
IChOT1QgTENNUzJfRklORF9RVUlFVExZKQorICAgICAgICAgbWVzc2FnZShTVEFUVVMgIkZvdW5k
IGxjbXMyIGJ1dCBmYWlsZWQgdG8gZmluZCB2ZXJzaW9uICR7TENNUzJfTElCUkFSSUVTfSIpCisg
ICAgICBlbmRpZiAoTk9UIExDTVMyX0ZJTkRfUVVJRVRMWSkKKyAgICAgIHNldChMQ01TMl9WRVJT
SU9OIE5PVEZPVU5EKQorICAgZW5kaWYgKExDTVMyX1ZFUlNJT05fTUFUQ0gpCitlbHNlIChMQ01T
Ml9GT1VORCkKKyAgIGlmIChOT1QgTENNUzJfRklORF9RVUlFVExZKQorICAgICAgaWYgKExDTVMy
X0ZJTkRfUkVRVUlSRUQpCisgICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJSZXF1aXJlZCBw
YWNrYWdlIGxjbXMyIE5PVCBmb3VuZCIpCisgICAgICBlbHNlIChMQ01TMl9GSU5EX1JFUVVJUkVE
KQorICAgICAgICAgbWVzc2FnZShTVEFUVVMgImxjbXMyIE5PVCBmb3VuZCIpCisgICAgICBlbmRp
ZiAoTENNUzJfRklORF9SRVFVSVJFRCkKKyAgIGVuZGlmIChOT1QgTENNUzJfRklORF9RVUlFVExZ
KQorZW5kaWYgKExDTVMyX0ZPVU5EKQorCittYXJrX2FzX2FkdmFuY2VkKExDTVMyX0lOQ0xVREVf
RElSIExDTVMyX0xJQlJBUklFUyBMQ01TMl9WRVJTSU9OKQorCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UK
aW5kZXggYzFjMjM4MmI2Y2RhLi5iYTA5MTU5ZDA5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFr
ZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBA
IC05Miw2ICs5Miw3IEBAIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlRST1NQRUNUSU9O
ICJXaGV0aGVyIHRvIGVuYWJsZSBHT2JqZWN0IGludHJvc3BlY3RpCiBXRUJLSVRfT1BUSU9OX0RF
RklORShFTkFCTEVfUVVBUlRaX1RBUkdFVCAiV2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3Ig
dGhlIFF1YXJ0eiB3aW5kb3dpbmcgdGFyZ2V0LiIgUFVCTElDICR7R1RLX1NVUFBPUlRTX1FVQVJU
Wn0pCiBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfWDExX1RBUkdFVCAiV2hldGhlciB0byBl
bmFibGUgc3VwcG9ydCBmb3IgdGhlIFgxMSB3aW5kb3dpbmcgdGFyZ2V0LiIgUFVCTElDICR7R1RL
X1NVUFBPUlRTX1gxMX0pCiBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfV0FZTEFORF9UQVJH
RVQgIldoZXRoZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBXYXlsYW5kIHdpbmRvd2luZyB0
YXJnZXQuIiBQVUJMSUMgJHtHVEtfU1VQUE9SVFNfV0FZTEFORH0pCitXRUJLSVRfT1BUSU9OX0RF
RklORShVU0VfTENNUyAiV2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgaW1hZ2UgY29sb3Ig
bWFuYWdlbWVudCB1c2luZyBsaWJjbXMyLiIgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZJ
TkUoVVNFX0xJQk5PVElGWSAiV2hldGhlciB0byBlbmFibGUgdGhlIGRlZmF1bHQgd2ViIG5vdGlm
aWNhdGlvbiBpbXBsZW1lbnRhdGlvbi4iIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGSU5F
KFVTRV9MSUJIWVBIRU4gIldoZXRoZXIgdG8gZW5hYmxlIHRoZSBkZWZhdWx0IGF1dG9tYXRpYyBo
eXBoZW5hdGlvbiBpbXBsZW1lbnRhdGlvbi4iIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVG
SU5FKFVTRV9MSUJTRUNSRVQgIldoZXRoZXIgdG8gZW5hYmxlIHRoZSBwZXJzaXN0ZW50IGNyZWRl
bnRpYWwgc3RvcmFnZSB1c2luZyBsaWJzZWNyZXQuIiBQVUJMSUMgT04pCkBAIC00MDcsNiArNDA4
LDEzIEBAIGlmIChFTkFCTEVfRU5DUllQVEVEX01FRElBIEFORCBFTkFCTEVfVEhVTkRFUikKICAg
ZmluZF9wYWNrYWdlKFRodW5kZXIgUkVRVUlSRUQpCiBlbmRpZiAoKQogCitpZiAoVVNFX0xDTVMp
CisgICAgZmluZF9wYWNrYWdlKExDTVMyKQorICAgIGlmIChOT1QgTENNUzJfRk9VTkQpCisgICAg
ICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxpYmNtczIgaXMgcmVxdWlyZWQgZm9yIFVTRV9MQ01T
LiIpCisgICAgZW5kaWYgKCkKK2VuZGlmICgpCisKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MjI0NwogaWYgKEVOQUJMRURfQ09NUElMRVJfU0FOSVRJWkVSUykK
ICAgICBzZXQoRU5BQkxFX0lOVFJPU1BFQ1RJT04gT0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL09wdGlvbnNXUEUuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQppbmRl
eCAzZmVjN2MwZjFhMWUuLjdmNzAyYjEyNzgzNCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09w
dGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKQEAgLTg4
LDYgKzg4LDcgQEAgV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX1dPRkYyICJXaGV0aGVyIHRvIGVu
YWJsZSBzdXBwb3J0IGZvciBXT0ZGMiBXZWIgRm9udHMuIgogV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX1dQRV9RVF9BUEkgIldoZXRoZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBRdDUv
UU1MIHBsdWdpbiIgUFVCTElDICR7RU5BQkxFX0RFVkVMT1BFUl9NT0RFfSkKIFdFQktJVF9PUFRJ
T05fREVGSU5FKFVTRV9TWVNURU1EICJXaGV0aGVyIHRvIGVuYWJsZSBqb3VybmFsZCBsb2dnaW5n
IiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfU09VUDIgIldoZXRoZXIgdG8g
ZW5hYmxlIHVzYWdlIG9mIFNvdXAgMiBpbnN0ZWFkIG9mIFNvdXAgMy4iIFBVQkxJQyBPTikKK1dF
QktJVF9PUFRJT05fREVGSU5FKFVTRV9MQ01TICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZv
ciBpbWFnZSBjb2xvciBtYW5hZ2VtZW50IHVzaW5nIGxpYmNtczIuIiBQVUJMSUMgT04pCiAKICMg
UHJpdmF0ZSBvcHRpb25zIHNwZWNpZmljIHRvIHRoZSBXUEUgcG9ydC4KIFdFQktJVF9PUFRJT05f
REVGSU5FKFVTRV9HU1RSRUFNRVJfSE9MRVBVTkNIICJXaGV0aGVyIHRvIGVuYWJsZSBHU3RyZWFt
ZXIgaG9sZXB1bmNoIiBQUklWQVRFIE9GRikKQEAgLTIxNCw2ICsyMTUsMTMgQEAgaWYgKEVOQUJM
RV9FTkNSWVBURURfTUVESUEgQU5EIEVOQUJMRV9USFVOREVSKQogICBmaW5kX3BhY2thZ2UoVGh1
bmRlciBSRVFVSVJFRCkKIGVuZGlmICgpCiAKK2lmIChVU0VfTENNUykKKyAgICBmaW5kX3BhY2th
Z2UoTENNUzIpCisgICAgaWYgKE5PVCBMQ01TMl9GT1VORCkKKyAgICAgICAgbWVzc2FnZShGQVRB
TF9FUlJPUiAibGliY21zMiBpcyByZXF1aXJlZCBmb3IgVVNFX0xDTVMuIikKKyAgICBlbmRpZiAo
KQorZW5kaWYgKCkKKwogYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfV1BFX189MSkKIGFkZF9k
ZWZpbml0aW9ucygtREdFVFRFWFRfUEFDS0FHRT0iV1BFIikKIGFkZF9kZWZpbml0aW9ucygtREpT
Q19HTElCX0FQSV9FTkFCTEVEKQo=
</data>
<flag name="review"
          id="442009"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>