<?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>26103</bug_id>
          
          <creation_ts>2009-05-31 02:14:58 -0700</creation_ts>
          <short_desc>[GTK] Remove gtk/cairo/pango/freetype/fontconfig includes from the header files in WebCore</short_desc>
          <delta_ts>2012-02-03 15:47:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Holger Freyther">zecke</reporter>
          <assigned_to name="Holger Freyther">zecke</assigned_to>
          <cc>bunk</cc>
    
    <cc>christian</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>123724</commentid>
    <comment_count>0</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-31 02:14:58 -0700</bug_when>
    <thetext>Use forward declarations to get rid of many many includes in a lot of different places. The idea is that this will speed up compilation time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123734</commentid>
    <comment_count>1</comment_count>
      <attachid>30814</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-31 07:33:26 -0700</bug_when>
    <thetext>Created attachment 30814
The patch...

 cat 0008-2009-05-31-Holger-Hans-Peter-Freyther-zecke-selfi.patch | diffstat
 ChangeLog                                           |   33 ++++++++++++++++++++
 platform/PopupMenu.h                                |    3 +
 platform/graphics/GlyphBuffer.h                     |   31 +++++++-----------
 platform/graphics/Pattern.h                         |    2 -
 platform/graphics/SimpleFontData.h                  |    2 -
 platform/graphics/cairo/FontCairo.cpp               |    6 +++
 platform/graphics/cairo/ImageBufferData.h           |    2 -
 platform/graphics/gtk/FontCacheGtk.cpp              |    4 ++
 platform/graphics/gtk/FontCustomPlatformData.cpp    |    3 +
 platform/graphics/gtk/FontPlatformData.h            |   15 ++++++---
 platform/graphics/gtk/GlyphPageTreeNodeGtk.cpp      |    3 +
 platform/graphics/gtk/GlyphPageTreeNodePango.cpp    |    1 
 platform/graphics/gtk/MediaPlayerPrivateGStreamer.h |    6 ++-
 platform/graphics/gtk/SimpleFontDataGtk.cpp         |    5 ++-
 platform/graphics/gtk/SimpleFontDataPango.cpp       |    4 +-
 platform/graphics/transforms/TransformationMatrix.h |    2 -
 platform/gtk/PasteboardHelper.h                     |    3 +
 platform/gtk/RenderThemeGtk.h                       |    3 +
 platform/network/ResourceHandleInternal.h           |    9 +++--
 platform/network/soup/ResourceRequest.h             |    4 +-
 20 files changed, 102 insertions(+), 39 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123743</commentid>
    <comment_count>2</comment_count>
    <who name="Adrian Bunk">bunk</who>
    <bug_when>2009-05-31 10:47:39 -0700</bug_when>
    <thetext>I wonder whether this approach can result in any noticable compile time improvement at all (e.g. many source files in applications that include webkit headers anyway already include gtk.h).

Do you have any proof that this actually speeds up the build time of applications?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123771</commentid>
    <comment_count>3</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-31 19:37:49 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I wonder whether this approach can result in any noticable compile time
&gt; improvement at all (e.g. many source files in applications that include webkit
&gt; headers anyway already include gtk.h).
&gt; 
&gt; Do you have any proof that this actually speeds up the build time of
&gt; applications?

I don&apos;t have any proof but the goal is not to speed up build time of applications using WebKit/GTK+. The goal is to speed up compiling of WebKit itself. I have changed the summary to explicitly mention WebCore. As of today WebCore/css/MediaQueryEvaluator.cpp is including libsoup/soup.h. This will result in including glib-object, glib. I had a hard time finding any file in WebCore that doesn&apos;t include any of gtk/cairo/pango/freetype/fontconfig.

Let me try to produce some numbers...

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123782</commentid>
    <comment_count>4</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-31 22:34:26 -0700</bug_when>
    <thetext>Numbers from my amd64 freebsd machine with time gmake &gt; /dev/null:

Without patch

real    41m23.492s
user    30m36.283s
sys     10m24.233s


With patch:
real    39m27.646s
user    29m55.705s
sys     9m5.392s
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123905</commentid>
    <comment_count>5</comment_count>
    <who name="Adrian Bunk">bunk</who>
    <bug_when>2009-06-01 17:51:29 -0700</bug_when>
    <thetext>Disclaimer: I am not a WebKit developer.

First of all, sorry for misunderstanding the purpose of your patch.

But I do dislike your patch since it breaks the proper abstractions.

An example:

-        gsize m_bufferSize, m_total;
+        unsigned long long m_bufferSize, m_total;

gsize might be &quot;unsigned long long&quot; on your FreeBSD machine.

But not on my x86 Linux machine (with a 64bit userspace it&apos;s &quot;unsigned long&quot;, and with a 32bit userspace it&apos;s &quot;unsigned int&quot;).

glib has an autoconf test for determining the type of gsize. Do you really want to duplicate that in WebKit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123914</commentid>
    <comment_count>6</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-06-01 19:12:32 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Disclaimer: I am not a WebKit developer.
&gt; 
&gt; First of all, sorry for misunderstanding the purpose of your patch.
&gt; 
&gt; But I do dislike your patch since it breaks the proper abstractions.
&gt; An example:

Okay, I think you are slightly off again + my description not being too good. My goal is to not have any glib/glib.h, cairo.h in WebCore header files as this is increasing compile times (see this simple patch can save quite some time).

Way to get there include:
  - use forward declarations... and they are typesafe, e.g. if I declare typedef struct _GtkEntry GtkWidget the compiler will shout at me.

  - do not use Glib types when not necessary. Using unsigned long long was a bit too much to store the value 8192, so an updated patch will use unsigned. See how I just didn&apos;t do typedef unsigned long gsize?

  - Create &quot;convertable&quot; types and this is where I expected discussion. :)


Why abstraction is not broken. The ResourceHandleClient::didReceiveData and other parts using size in WebCore do not use gsize. So we already have a place when going from gsize to int (and so far it is safe as we only read about to 8k), moving the frontier does not break the abstraction...


&gt; But not on my x86 Linux machine (with a 64bit userspace it&apos;s &quot;unsigned long&quot;,
&gt; and with a 32bit userspace it&apos;s &quot;unsigned int&quot;).

I assume you mean GNU/Linux and GNU userspace (gcc, glibc)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123960</commentid>
    <comment_count>7</comment_count>
    <who name="Adrian Bunk">bunk</who>
    <bug_when>2009-06-02 01:18:01 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Disclaimer: I am not a WebKit developer.
&gt; &gt; 
&gt; &gt; First of all, sorry for misunderstanding the purpose of your patch.
&gt; &gt; 
&gt; &gt; But I do dislike your patch since it breaks the proper abstractions.
&gt; &gt; An example:
&gt; 
&gt; Okay, I think you are slightly off again + my description not being too good.
&gt; My goal is to not have any glib/glib.h, cairo.h in WebCore header files as this
&gt; is increasing compile times (see this simple patch can save quite some time).
&gt; 
&gt; Way to get there include:
&gt;   - use forward declarations... and they are typesafe, e.g. if I declare
&gt; typedef struct _GtkEntry GtkWidget the compiler will shout at me.
&gt; 
&gt;   - do not use Glib types when not necessary. Using unsigned long long was a
&gt; bit too much to store the value 8192, so an updated patch will use unsigned.
&gt; See how I just didn&apos;t do typedef unsigned long gsize?
&gt;...

OK, so this seems to work.

But what would e.g. happen if with a future (ABI-incompatible) version of glib &quot;typedef gint gboolean;&quot; would no longer be true?

Overally, my personal opinion is that your patch is going into the wrong direction - even if my suspicion that it might also be wrong on some technical details turns out to be wrong.

But I am not a WebKit developer, I only ran into this bug when looking for completely different issues, and I&apos;m gonna keep my mouth shut on it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123985</commentid>
    <comment_count>8</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-06-02 06:57:54 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Disclaimer: I am not a WebKit developer.
&gt; &gt; &gt; 
&gt; &gt; &gt; First of all, sorry for misunderstanding the purpose of your patch.
&gt; &gt; &gt; 
&gt; &gt; &gt; But I do dislike your patch since it breaks the proper abstractions.
&gt; &gt; &gt; An example:
&gt; &gt; 
&gt; &gt; Okay, I think you are slightly off again + my description not being too good.
&gt; &gt; My goal is to not have any glib/glib.h, cairo.h in WebCore header files as this
&gt; &gt; is increasing compile times (see this simple patch can save quite some time).
&gt; &gt; 
&gt; &gt; Way to get there include:
&gt; &gt;   - use forward declarations... and they are typesafe, e.g. if I declare
&gt; &gt; typedef struct _GtkEntry GtkWidget the compiler will shout at me.
&gt; &gt; 
&gt; &gt;   - do not use Glib types when not necessary. Using unsigned long long was a
&gt; &gt; bit too much to store the value 8192, so an updated patch will use unsigned.
&gt; &gt; See how I just didn&apos;t do typedef unsigned long gsize?
&gt; &gt;...
&gt; 
&gt; OK, so this seems to work.
&gt; 
&gt; But what would e.g. happen if with a future (ABI-incompatible) version of glib
&gt; &quot;typedef gint gboolean;&quot; would no longer be true?

then your compiler will give you an error about incompatible types.

&gt; Overally, my personal opinion is that your patch is going into the wrong
&gt; direction - even if my suspicion that it might also be wrong on some technical
&gt; details turns out to be wrong.

Please elaborate on it. Do you disagree with forward declarations in general? for glib types? I know it is a bigger difference from C to C++. But forward declarations are a pretty common way to speed compilation up. We use it extensively in WebKit. Or in a more dramatic way... why do you think MediaQueryEvaluator.cpp needs to know about GIO?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125285</commentid>
    <comment_count>9</comment_count>
    <who name="Adrian Bunk">bunk</who>
    <bug_when>2009-06-11 01:53:15 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt;...
&gt; &gt; Overally, my personal opinion is that your patch is going into the wrong
&gt; &gt; direction - even if my suspicion that it might also be wrong on some technical
&gt; &gt; details turns out to be wrong.
&gt; 
&gt; Please elaborate on it. Do you disagree with forward declarations in general?
&gt; for glib types? I know it is a bigger difference from C to C++. But forward
&gt; declarations are a pretty common way to speed compilation up. We use it
&gt; extensively in WebKit. Or in a more dramatic way... why do you think
&gt; MediaQueryEvaluator.cpp needs to know about GIO?

The glib types and the changes leading to the COMPILE_ASSERT() are what I dislike about your patch.

But I get your point, and especially due to the fact that something like #include &lt;glib/gtypes.h&gt; (which might be the best way to get the glib types without pulling in all glib headers) is strongly deprecated your patch might be the way to go for speeding up the compilation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126838</commentid>
    <comment_count>10</comment_count>
      <attachid>30814</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-18 17:48:22 -0700</bug_when>
    <thetext>Comment on attachment 30814
The patch...

This looks fine to me.  Why though?  I assume for compile performance?

This comment should reference the COMPILE_ASSERT:
+// This is in fact a cairo_glyph_t make sure this keeps matching

I don&apos;t really believe the numbers you posted.  The change was small (seconds).  Did you run the numbers multiple times and confirm that your numbers are consistent?

I&apos;m really just gonna trust you on this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128443</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-26 01:41:36 -0700</bug_when>
    <thetext>Did you decide to go forward with this Holger?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128675</commentid>
    <comment_count>12</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-06-27 16:37:25 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Did you decide to go forward with this Holger?

The cairo change itself is a bit controversial. There will be a big KDE/GNOME summit starting the 3rd of July and I will attempt to discuss this change with Gustavo and Xan in person to get their opinion on it. If you want this change to drop out of the commit queue then do so. 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128868</commentid>
    <comment_count>13</comment_count>
      <attachid>30814</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-29 13:23:11 -0700</bug_when>
    <thetext>Comment on attachment 30814
The patch...

Removing review flag.  Feel free to re-flag for review once there is consensus from the gtk folks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128869</commentid>
    <comment_count>14</comment_count>
      <attachid>30814</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-29 13:23:12 -0700</bug_when>
    <thetext>Comment on attachment 30814
The patch...

Removing review flag.  Feel free to re-flag for review once there is consensus from the gtk folks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131167</commentid>
    <comment_count>15</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-07-12 04:34:25 -0700</bug_when>
    <thetext>Since I promised to make up my mind on this, here I go =D. With the numbers we currently have, I don&apos;t think the performance gains outweight the complexity this may bring in a significant way to make it desirable, so -1 from me, for now, unless you would like to get the uncontroversial ones in, such as, say:

typedef struct _cairo cairo_t;

We already use this kind of typedef all around, so I see no problem in having some more. The one I am worried about is the full struct definition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132465</commentid>
    <comment_count>16</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-07-16 22:25:40 -0700</bug_when>
    <thetext>(In reply to comment #15)

&gt; We already use this kind of typedef all around, so I see no problem in having
&gt; some more. The one I am worried about is the full struct definition.

The problem is that the implementation is in the header file and we need the full blown cairo.h. The result is that in many many places we have all cairo includes.
I will send an updated patch without the struct reinterpretation...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549178</commentid>
    <comment_count>17</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-03 15:47:12 -0800</bug_when>
    <thetext>We&apos;re doing this gradually now. This patch has certainly bitrotted. I&apos;ll be happy to review any new patches against trunk fixing these issues.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30814</attachid>
            <date>2009-05-31 07:33:26 -0700</date>
            <delta_ts>2010-06-10 17:48:24 -0700</delta_ts>
            <desc>The patch...</desc>
            <filename>0008-2009-05-31-Holger-Hans-Peter-Freyther-zecke-selfi.patch</filename>
            <type>text/plain</type>
            <size>16576</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">RnJvbSA1YjMxOTE4MGU5NWYyMWM0YTk4ODE1ZWE3ZjlmZjAyNGYwYzYxMjFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2Vs
ZmlzaC5vcmc+CkRhdGU6IFN1biwgMzEgTWF5IDIwMDkgMDk6MTE6MjUgKzAyMDAKU3ViamVjdDog
W1BBVENIXSAyMDA5LTA1LTMxICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNl
bGZpc2gub3JnPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTAzCgogICAgICAgIEJh
biBHdGsrL1NvdXAvR2xpYi9DYWlyby9GcmVldHlwZS9Gb250Q29uZmlnIGluY2x1ZGVzIGZyb20g
aGVhZGVyCiAgICAgICAgZmlsZXMuIEEgc2ltcGxlIGluY2x1ZGUgaW4gRm9udFBsYXRmb3JtRGF0
YS5oIHdpbGwgY2F1c2UgZXZlcnlvbmUKICAgICAgICB1c2luZyBGb250LmggdG8gaW5jbHVkZSBm
cmVldHlwZTIsIGZvbnRjb25maWcgYW5kIGNhaXJvLgoKICAgICAgICAqIHBsYXRmb3JtL1BvcHVw
TWVudS5oOgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaDoKICAgICAg
ICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJHbHlwaDo6R2x5cGhCdWZmZXJHbHlwaCk6CiAgICAgICAg
KFdlYkNvcmU6OkdseXBoQnVmZmVyOjphZGQpOgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5oOgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaDoK
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CiAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJEYXRhLmg6CiAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsv
Rm9udENhY2hlR3RrLmNwcDoKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcDoKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250
UGxhdGZvcm1EYXRhLmg6CiAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvR2x5cGhQYWdl
VHJlZU5vZGVHdGsuY3BwOgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0dseXBoUGFn
ZVRyZWVOb2RlUGFuZ28uY3BwOgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L1NpbXBsZUZvbnREYXRhR3RrLmNwcDoKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9T
aW1wbGVGb250RGF0YVBhbmdvLmNwcDoKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkSGVscGVyLmg6CiAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaDoK
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgogICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oOgotLS0KIFdlYkNv
cmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMyArKysr
KysrKysrKysrKysrKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnUuaCAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICAzICstCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVm
ZmVyLmggICAgICAgICAgICB8ICAgMzEgKysrKysrKy0tLS0tLS0tLS0tCiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaCAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCAgICAgICAgIHwgICAgMiArLQogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwICAgICAgfCAgICA2ICsr
Ky0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhLmggIHwg
ICAgMiArLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udENhY2hlR3RrLmNwcCAg
ICAgfCAgICA0ICsrCiAuLi4vZ3JhcGhpY3MvZ3RrL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
ICAgICAgICB8ICAgIDMgKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRQbGF0
Zm9ybURhdGEuaCAgIHwgICAxNSArKysrKystLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9H
bHlwaFBhZ2VUcmVlTm9kZUd0ay5jcHAgfCAgICAzICsrCiAuLi4vZ3JhcGhpY3MvZ3RrL0dseXBo
UGFnZVRyZWVOb2RlUGFuZ28uY3BwICAgICAgICB8ICAgIDEgKwogLi4uL2dyYXBoaWNzL2d0ay9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCAgICAgfCAgICA2ICsrLQogLi4uL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9TaW1wbGVGb250RGF0YUd0ay5jcHAgICAgfCAgICA1ICsrLQogLi4uL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9TaW1wbGVGb250RGF0YVBhbmdvLmNwcCAgfCAgICA0ICsrLQog
Li4uL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCAgICAgfCAgICAy
ICstCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmggICAgICAgICAgICB8
ICAgIDMgKy0KIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmggICAgICAgICAg
ICAgIHwgICAgMyArLQogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaCAgfCAgICA5ICsrKy0tCiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3QuaCAgICB8ICAgIDQgKystCiAyMCBmaWxlcyBjaGFuZ2VkLCAxMDIgaW5zZXJ0
aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ODFhNjM3Li4wNjNhZDk1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBA
CisyMDA5LTA1LTMxICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjEwMworCisgICAgICAgIEJh
biBHdGsrL1NvdXAvR2xpYi9DYWlyby9GcmVldHlwZS9Gb250Q29uZmlnIGluY2x1ZGVzIGZyb20g
aGVhZGVyCisgICAgICAgIGZpbGVzLiBBIHNpbXBsZSBpbmNsdWRlIGluIEZvbnRQbGF0Zm9ybURh
dGEuaCB3aWxsIGNhdXNlIGV2ZXJ5b25lCisgICAgICAgIHVzaW5nIEZvbnQuaCB0byBpbmNsdWRl
IGZyZWV0eXBlMiwgZm9udGNvbmZpZyBhbmQgY2Fpcm8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
b3B1cE1lbnUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXJHbHlwaDo6R2x5cGhCdWZmZXJHbHlwaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6YWRkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9u
dERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0ZvbnRDYWNoZUd0ay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2d0ay9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0dseXBoUGFnZVRyZWVOb2RlR3RrLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ndGsvR2x5cGhQYWdlVHJlZU5vZGVQYW5nby5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2d0ay9TaW1wbGVGb250RGF0YUd0ay5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL1NpbXBsZUZvbnREYXRhUGFuZ28uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0ay5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3QuaDoKKwogMjAwOS0wNS0zMCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhl
b2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggZm9yIHBsYXRmb3JtcyB3aXRob3V0
IHBsdWdpbnMgc3VwcG9ydC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51
LmggYi9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudS5oCmluZGV4IGZjODVkNjAuLmMyMjc3YTEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51LmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9Qb3B1cE1lbnUuaApAQCAtNDgsOCArNDgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB0eXBlZGVmIHN0cnVjdCBfR3RrTWVudSBHdGtNZW51OwogdHlwZWRlZiBzdHJ1Y3QgX0d0a01l
bnVJdGVtIEd0a01lbnVJdGVtOwogdHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7
Cit0eXBlZGVmIGludCBnaW50OwordHlwZWRlZiBnaW50IGdib29sZWFuOwogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgogI2VsaWYgUExBVEZPUk0oV1gpCiAjaWZk
ZWYgX19XWE1TV19fCiAjaW5jbHVkZSA8d3gvbXN3L3dpbnVuZGVmLmg+CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKaW5kZXggZGNkYTQxOS4uN2RiMDUxYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaApAQCAtMzcsMTggKzM3LDI0IEBACiAjaW5j
bHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKENBSVJPKSB8fCAoUExBVEZPUk0oV1gpICYmIGRlZmluZWQoX19XWEdU
S19fKSkKLSNpbmNsdWRlIDxjYWlyby5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHbHlwaDsKIGNsYXNzIFNpbXBsZUZvbnREYXRhOwog
CiAjaWYgUExBVEZPUk0oQ0FJUk8pCi0vLyBGSVhNRTogV2h5IGRvZXMgQ2Fpcm8gdXNlIHN1Y2gg
YSBodWdlIHN0cnVjdCBpbnN0ZWFkIG9mIGp1c3QgYW4gb2Zmc2V0IGludG8gYW4gYXJyYXk/Ci10
eXBlZGVmIGNhaXJvX2dseXBoX3QgR2x5cGhCdWZmZXJHbHlwaDsKKy8vIFRoaXMgaXMgaW4gZmFj
dCBhIGNhaXJvX2dseXBoX3QgbWFrZSBzdXJlIHRoaXMga2VlcHMgbWF0Y2hpbmcKK3N0cnVjdCBH
bHlwaEJ1ZmZlckdseXBoIHsKKyAgICBHbHlwaEJ1ZmZlckdseXBoKEdseXBoIGdseXBoKQorICAg
ICAgICA6IGluZGV4KGdseXBoKQorICAgICAgICAsIHgoMC4wKQorICAgICAgICAsIHkoMC4wKQor
ICAgIHt9CisKKyAgICB1bnNpZ25lZCBsb25nIGluZGV4OworICAgIGRvdWJsZSB4OworICAgIGRv
dWJsZSB5OworfTsKICNlbHNlCiB0eXBlZGVmIEdseXBoIEdseXBoQnVmZmVyR2x5cGg7CiAjZW5k
aWYKQEAgLTEzNiwxMyArMTQyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb250RGF0
YS5hcHBlbmQoZm9udCk7CiAKLSNpZiBQTEFURk9STShDQUlSTykKLSAgICAgICAgY2Fpcm9fZ2x5
cGhfdCBjYWlyb0dseXBoOwotICAgICAgICBjYWlyb0dseXBoLmluZGV4ID0gZ2x5cGg7Ci0gICAg
ICAgIG1fZ2x5cGhzLmFwcGVuZChjYWlyb0dseXBoKTsKLSNlbHNlCiAgICAgICAgIG1fZ2x5cGhz
LmFwcGVuZChnbHlwaCk7Ci0jZW5kaWYKIAogI2lmIFBMQVRGT1JNKENHKQogICAgICAgICBDR1Np
emUgYWR2YW5jZSA9IHsgd2lkdGgsIDAgfTsKQEAgLTE2NCwxNCArMTY0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkKEdseXBoIGdseXBoLCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgR2x5
cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2UpCiAgICAgewogICAgICAgICBtX2ZvbnREYXRhLmFwcGVu
ZChmb250KTsKLSNpZiBQTEFURk9STShDQUlSTykKLSAgICAgICAgY2Fpcm9fZ2x5cGhfdCBjYWly
b0dseXBoOwotICAgICAgICBjYWlyb0dseXBoLmluZGV4ID0gZ2x5cGg7Ci0gICAgICAgIG1fZ2x5
cGhzLmFwcGVuZChjYWlyb0dseXBoKTsKLSNlbHNlCiAgICAgICAgIG1fZ2x5cGhzLmFwcGVuZChn
bHlwaCk7Ci0jZW5kaWYKLQogICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZChhZHZhbmNlKTsKICAg
ICB9CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4u
aCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCmluZGV4IGQ0YWEzYjkuLjk1
ZmFmYWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC0zNiw3ICszNiw3IEBA
CiB0eXBlZGVmIHN0cnVjdCBDR1BhdHRlcm4qIENHUGF0dGVyblJlZjsKIHR5cGVkZWYgQ0dQYXR0
ZXJuUmVmIFBsYXRmb3JtUGF0dGVyblB0cjsKICNlbGlmIFBMQVRGT1JNKENBSVJPKQotI2luY2x1
ZGUgPGNhaXJvLmg+Cit0eXBlZGVmIHN0cnVjdCBfY2Fpcm9fcGF0dGVybiBjYWlyb19wYXR0ZXJu
X3Q7CiB0eXBlZGVmIGNhaXJvX3BhdHRlcm5fdCogUGxhdGZvcm1QYXR0ZXJuUHRyOwogI2VsaWYg
UExBVEZPUk0oU0tJQSkKIGNsYXNzIFNrU2hhZGVyOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaW1wbGVGb250RGF0YS5oCmluZGV4IGE2MjFlODMuLjgzMmM2ZjYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKQEAgLTM4LDcgKzM4LDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgT3BhcXVlQVRTVVN0eWxlKiBBVFNVU3R5bGU7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENBSVJPKQotI2luY2x1ZGUgPGNhaXJvLmg+Cit0eXBlZGVmIHN0cnVjdCBfY2Fpcm8gY2Fp
cm9fdDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXggNTUwOWY1NC4uMDc0NGI2NyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtMzYsMTAg
KzM2LDE0IEBACiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRlICJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oIgogCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKwogI2RlZmluZSBTWU5USEVU
SUNfT0JMSVFVRV9BTkdMRSAxNAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NPTVBJTEVfQVNT
RVJUKHNpemVvZihjYWlyb19nbHlwaF90KSA9PSBzaXplb2YoR2x5cGhCdWZmZXJHbHlwaCksIGds
eXBoX2J1ZmZlcl9yZWludGVycHJldCk7CisKIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyb20sIGlu
dCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewpAQCAtNDgsNyAr
NTIsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogCiAgICAgZm9udC0+c2V0Rm9udChjcik7
CiAKLSAgICBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMgPSAoR2x5cGhCdWZmZXJHbHlwaCopZ2x5
cGhCdWZmZXIuZ2x5cGhzKGZyb20pOworICAgIGNhaXJvX2dseXBoX3QqIGdseXBocyA9IChjYWly
b19nbHlwaF90KilnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSk7CiAKICAgICBmbG9hdCBvZmZzZXQg
PSAwLjBmOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyBpKyspIHsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YS5oCmluZGV4
IDQ5ZjE1ZGYuLjM5MzUyYjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJEYXRhLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckRhdGEuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBJbWFnZUJ1
ZmZlckRhdGFfaAogI2RlZmluZSBJbWFnZUJ1ZmZlckRhdGFfaAogCi0jaW5jbHVkZSAiY2Fpcm8u
aCIKK3R5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9Gb250Q2FjaGVHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9u
dENhY2hlR3RrLmNwcAppbmRleCBkMmI0M2NjLi4xYzViNWE3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250Q2FjaGVHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRDYWNoZUd0ay5jcHAKQEAgLTI1LDYgKzI1LDEwIEBACiAj
aW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
CisjaW5jbHVkZSA8Y2Fpcm8tZnQuaD4KKyNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcu
aD4KKyNpbmNsdWRlIDxmb250Y29uZmlnL2ZjZnJlZXR5cGUuaD4KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB2b2lkIEZvbnRDYWNoZTo6cGxhdGZvcm1Jbml0KCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5k
ZXggYmIyZTA2NC4uOThhNDQxNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTI0LDYgKzI0LDkgQEAK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgi
CiAKKyNpbmNsdWRlIDxjYWlyby5oPgorI2luY2x1ZGUgPGNhaXJvLWZ0Lmg+CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6fkZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udFBs
YXRmb3JtRGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udFBsYXRmb3Jt
RGF0YS5oCmluZGV4IGFlMWYxMzQuLmVjNWVkYjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTMwLDEyICszMCwxOSBAQAogCiAj
aW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKLSNp
bmNsdWRlIDxjYWlyby5oPgorCit0eXBlZGVmIHN0cnVjdCBfY2Fpcm8gY2Fpcm9fdDsKK3R5cGVk
ZWYgc3RydWN0IF9jYWlyb19mb250X2ZhY2UgY2Fpcm9fZm9udF9mYWNlX3Q7Cit0eXBlZGVmIHN0
cnVjdCBfY2Fpcm9fc2NhbGVkX2ZvbnQgY2Fpcm9fc2NhbGVkX2ZvbnRfdDsKKwogI2lmIGRlZmlu
ZWQoVVNFX0ZSRUVUWVBFKQotI2luY2x1ZGUgPGNhaXJvLWZ0Lmg+Ci0jaW5jbHVkZSA8Zm9udGNv
bmZpZy9mY2ZyZWV0eXBlLmg+Cit0eXBlZGVmIHN0cnVjdCBfRmNQYXR0ZXJuIEZjUGF0dGVybjsK
K3R5cGVkZWYgc3RydWN0IF9GY0ZvbnRTZXQgRmNGb250U2V0OworZXh0ZXJuICJDIiB1bnNpZ25l
ZCBpbnQgRmNQYXR0ZXJuSGFzaCAoY29uc3QgRmNQYXR0ZXJuICpwKTsKICNlbGlmIGRlZmluZWQo
VVNFX1BBTkdPKQotI2luY2x1ZGUgPHBhbmdvL3BhbmdvY2Fpcm8uaD4KK3R5cGVkZWYgc3RydWN0
IF9QYW5nb0ZvbnRNYXAgUGFuZ29Gb250TWFwOwordHlwZWRlZiBzdHJ1Y3QgX1BhbmdvQ29udGV4
dCBQYW5nb0NvbnRleHQ7Cit0eXBlZGVmIHN0cnVjdCBfR0hhc2hUYWJsZSBHSGFzaFRhYmxlOwog
I2Vsc2UKICNlcnJvciAiTXVzdCBkZWZpbmVkIGEgZm9udCBiYWNrZW5kIgogI2VuZGlmCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HbHlwaFBhZ2VUcmVlTm9kZUd0
ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HbHlwaFBhZ2VUcmVlTm9kZUd0
ay5jcHAKaW5kZXggMjRhZDg2NC4uMzgzZjZlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvR2x5cGhQYWdlVHJlZU5vZGVHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0dseXBoUGFnZVRyZWVOb2RlR3RrLmNwcApAQCAtMzMsNiArMzMs
OSBAQAogCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKIAorI2luY2x1ZGUgPGNhaXJvLWZ0
Lmg+CisjaW5jbHVkZSA8Zm9udGNvbmZpZy9mY2ZyZWV0eXBlLmg+CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogYm9vbCBHbHlwaFBhZ2U6OmZpbGwodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgsIFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgU2ltcGxl
Rm9udERhdGEqIGZvbnREYXRhKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvR2x5cGhQYWdlVHJlZU5vZGVQYW5nby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9HbHlwaFBhZ2VUcmVlTm9kZVBhbmdvLmNwcAppbmRleCA4ZmFkYTVjLi5lYjE5YmFh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HbHlwaFBhZ2VUcmVl
Tm9kZVBhbmdvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HbHlwaFBh
Z2VUcmVlTm9kZVBhbmdvLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdseXBoUGFn
ZVRyZWVOb2RlLmgiCiAKICNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgorI2luY2x1ZGUgPHBh
bmdvL3BhbmdvY2Fpcm8uaD4KICNpbmNsdWRlIDxwYW5nby9wYW5nby1mb250Lmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggNjI4ZjBhYy4uYjQwOTM1
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTI3LDExICsyNywxMyBAQAogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKLSNpbmNsdWRlIDxn
dGsvZ3RrLmg+Ci0KIHR5cGVkZWYgc3RydWN0IF9Hc3RFbGVtZW50IEdzdEVsZW1lbnQ7CiB0eXBl
ZGVmIHN0cnVjdCBfR3N0TWVzc2FnZSBHc3RNZXNzYWdlOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEJ1
cyBHc3RCdXM7Cit0eXBlZGVmIGludCBnaW50OwordHlwZWRlZiBnaW50IGdib29sZWFuOwordHlw
ZWRlZiB2b2lkKiBncG9pbnRlcjsKK3R5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJv
X3N1cmZhY2VfdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9TaW1wbGVGb250RGF0YUd0ay5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9TaW1wbGVGb250RGF0YUd0ay5jcHAKaW5kZXggY2IwOWI1ZC4u
MjI5Nzc0YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvU2ltcGxl
Rm9udERhdGFHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1NpbXBs
ZUZvbnREYXRhR3RrLmNwcApAQCAtMzgsMTEgKzM4LDE0IEBACiAjaW5jbHVkZSAiRm9udENhY2hl
LmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIu
aCIKLSNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWNoYXIuaD4KICNpbmNs
dWRlIDx1bmljb2RlL3Vub3JtLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAorI2lu
Y2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8Y2Fpcm8tZnQuaD4KKyNpbmNsdWRlIDxmb250Y29u
ZmlnL2ZjZnJlZXR5cGUuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFNpbXBsZUZv
bnREYXRhOjpwbGF0Zm9ybUluaXQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvU2ltcGxlRm9udERhdGFQYW5nby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9TaW1wbGVGb250RGF0YVBhbmdvLmNwcAppbmRleCBkYmFjMGE3Li45ZWM0YjgxIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9TaW1wbGVGb250RGF0YVBh
bmdvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9TaW1wbGVGb250RGF0
YVBhbmdvLmNwcApAQCAtMzksOSArMzksMTEgQEAKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNp
bmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgotI2lu
Y2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAorI2luY2x1ZGUg
PGNhaXJvLmg+CisjaW5jbHVkZSA8cGFuZ28vcGFuZ29jYWlyby5oPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtSW5pdCgpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oCmluZGV4IDEyZDY5ZTIuLjk3MWEwNzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
CkBAIC0zMyw3ICszMyw3IEBACiAjaWYgUExBVEZPUk0oQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBo
aWNzL0NHQWZmaW5lVHJhbnNmb3JtLmg+CiAjZWxpZiBQTEFURk9STShDQUlSTykKLSNpbmNsdWRl
IDxjYWlyby5oPgordHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX21hdHJpeCBjYWlyb19tYXRyaXhfdDsK
ICNlbGlmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFUcmFuc2Zvcm0+CiAjZWxpZiBQTEFURk9S
TShTS0lBKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBl
ci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oCmluZGV4IDk5NDNh
MmQuLjRlM2ViODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRI
ZWxwZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmgKQEAg
LTMwLDcgKzMwLDggQEAKIAogI2luY2x1ZGUgIkZyYW1lLmgiCiAKLSNpbmNsdWRlIDxndGsvZ3Rr
Lmg+Cit0eXBlZGVmIHN0cnVjdCBfR3RrQ2xpcGJvYXJkIEd0a0NsaXBib2FyZDsKK3R5cGVkZWYg
c3RydWN0IF9HdGtUYXJnZXRMaXN0IEd0a1RhcmdldExpc3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgKaW5kZXggODJhODdjYi4uOWNi
MmRlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCkBAIC0yOSw3ICsyOSw4
IEBACiAKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgor
dHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7Cit0eXBlZGVmIHN0cnVjdCBfR3Rr
Q29udGFpbmVyIEd0a0NvbnRhaW5lcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRleCA4
YjBmNDc2Li41NjYzNzY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTQ2LDggKzQ2LDExIEBACiAjZW5kaWYKIAogI2lmIFVT
RShTT1VQKQotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogY2xhc3MgRnJhbWU7Cit0eXBlZGVm
IHN0cnVjdCBfR0NhbmNlbGxhYmxlIEdDYW5jZWxsYWJsZTsKK3R5cGVkZWYgc3RydWN0IF9HSW5w
dXRTdHJlYW0gR0lucHV0U3RyZWFtOwordHlwZWRlZiBzdHJ1Y3QgX0dGaWxlIEdGaWxlOwordHlw
ZWRlZiBzdHJ1Y3QgX1NvdXBNZXNzYWdlIFNvdXBNZXNzYWdlOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShRVCkKQEAgLTE5OSw4ICsyMDIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IEdJbnB1dFN0cmVhbSogbV9pbnB1dFN0cmVhbTsKICAgICAgICAgR0NhbmNlbGxhYmxlKiBtX2Nh
bmNlbGxhYmxlOwogICAgICAgICBjaGFyKiBtX2J1ZmZlcjsKLSAgICAgICAgZ3NpemUgbV9idWZm
ZXJTaXplLCBtX3RvdGFsOwotICAgICAgICBndWludCBtX2lkbGVIYW5kbGVyOworICAgICAgICB1
bnNpZ25lZCBsb25nIGxvbmcgbV9idWZmZXJTaXplLCBtX3RvdGFsOworICAgICAgICB1bnNpZ25l
ZCBtX2lkbGVIYW5kbGVyOwogICAgICAgICBGcmFtZSogbV9mcmFtZTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0LmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJl
cXVlc3QuaAppbmRleCA2NWM0MGMyLi43Y2E2NjVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaApAQCAtMjksNyArMjksOSBAQAogCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgogCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
Cit0eXBlZGVmIHN0cnVjdCBfU291cE1lc3NhZ2UgU291cE1lc3NhZ2U7CitleHRlcm4gIkMiIHZv
aWQqIGdfb2JqZWN0X3JlZih2b2lkKik7CitleHRlcm4gIkMiIHZvaWQgZ19vYmplY3RfdW5yZWYo
dm9pZCopOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS0gCjEuNi4wLjQKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>