<?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>157066</bug_id>
          
          <creation_ts>2016-04-27 02:20:46 -0700</creation_ts>
          <short_desc>REGRESSION(r200094): [FreeType] Vertical text is broken after r200094</short_desc>
          <delta_ts>2016-04-30 20:45:49 -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>Platform</component>
          <version>WebKit Local 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>Gtk, LayoutTestFailure, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>jeremyhu</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1187704</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-04-27 02:20:46 -0700</bug_when>
    <thetext>And possibly other attributes. This is causing a lot of failures in GTK+ layout tests. The problem is that Freetype implementation needs to call buildScaledFont() when orientation, SyntheticOblique or size change, but the new static clone methods don&apos;t do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187706</commentid>
    <comment_count>1</comment_count>
      <attachid>277464</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-04-27 02:34:13 -0700</bug_when>
    <thetext>Created attachment 277464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187708</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-27 02:35:56 -0700</bug_when>
    <thetext>Attachment 277464 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/cairo/CairoUtilities.h:40:  FT_Face is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187713</commentid>
    <comment_count>3</comment_count>
      <attachid>277466</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-04-27 02:53:01 -0700</bug_when>
    <thetext>Created attachment 277466
Patch

Just fixed some typos in the ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187714</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-27 02:55:22 -0700</bug_when>
    <thetext>Attachment 277466 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/cairo/CairoUtilities.h:40:  FT_Face is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187720</commentid>
    <comment_count>5</comment_count>
      <attachid>277467</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-04-27 05:37:55 -0700</bug_when>
    <thetext>Created attachment 277467
Updated patch

I noticed that some tests (the ones using fallbacks) were crashing with this patch. The thing is that I wrongly assumed that the default copy constructor used the assign operator, but since that&apos;s not the case we need to keep our own implementation of the copy constructor. The good thing is that now we can use a unique_ptr (FcUniquePtr) for the fallbacks, which simplifies the code a bit more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187721</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-27 05:40:15 -0700</bug_when>
    <thetext>Attachment 277467 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/cairo/CairoUtilities.h:40:  FT_Face is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187724</commentid>
    <comment_count>7</comment_count>
      <attachid>277470</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-04-27 05:55:32 -0700</bug_when>
    <thetext>Created attachment 277470
Try to fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187726</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-27 05:57:33 -0700</bug_when>
    <thetext>Attachment 277470 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/cairo/CairoUtilities.h:40:  FT_Face is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187743</commentid>
    <comment_count>9</comment_count>
      <attachid>277470</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2016-04-27 07:50:14 -0700</bug_when>
    <thetext>Comment on attachment 277470
Try to fix EFL build

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

&gt; Source/WebCore/platform/graphics/cairo/CairoUtilities.h:64
&gt; +#if USE(FREETYPE)
&gt; +class CairoFtFaceLocker {
&gt; +public:
&gt; +    CairoFtFaceLocker(cairo_scaled_font_t*);
&gt; +    ~CairoFtFaceLocker();
&gt; +
&gt; +    FT_Face ftFace() const { return m_ftFace; }
&gt; +
&gt; +private:
&gt; +    cairo_scaled_font_t* m_scaledFont { nullptr };
&gt; +    FT_Face m_ftFace { nullptr };
&gt; +};

One note is that by not putting the implementation of the constructor and destructor here, it is impossible for the compiler to inline them. It might be better to avoid changing that.

&gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:253
&gt; +    // We need to reinitialize the instance, because the difference in size
&gt; +    // necessitates a new scaled font instance.
&gt; +    ASSERT(copy.m_scaledFont.get());
&gt; +    copy.buildScaledFont(cairo_scaled_font_get_font_face(copy.m_scaledFont.get()));

Why don&apos;t you also check if the size is different here similar to the methods above?

&gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:291
&gt; -    return m_scaledFont == other.m_scaledFont
&gt; -        &amp;&amp; m_size == other.m_size
&gt; -        &amp;&amp; m_syntheticOblique == other.m_syntheticOblique
&gt; -        &amp;&amp; m_orientation == other.m_orientation
&gt; -        &amp;&amp; m_syntheticBold == other.m_syntheticBold; 
&gt; +    return m_scaledFont == other.m_scaledFont;
&gt;  }

Yay!

&gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:349
&gt; +    ASSERT(m_scaledFont.get());

I&apos;m not sure you need .get() here.

&gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:-412
&gt; -    cairo_ft_scaled_font_unlock_face(m_scaledFont);

Wow. Really nice fix here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187755</commentid>
    <comment_count>10</comment_count>
      <attachid>277470</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-27 08:35:30 -0700</bug_when>
    <thetext>Comment on attachment 277470
Try to fix EFL build

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

&gt;&gt; Source/WebCore/platform/graphics/cairo/CairoUtilities.h:64
&gt;&gt; +};
&gt; 
&gt; One note is that by not putting the implementation of the constructor and destructor here, it is impossible for the compiler to inline them. It might be better to avoid changing that.

I don’t think that’s right. Why wouldn’t the compiler inline them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187756</commentid>
    <comment_count>11</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2016-04-27 08:38:22 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 277470 [details]
&gt; Try to fix EFL build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=277470&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/cairo/CairoUtilities.h:64
&gt; &gt;&gt; +};
&gt; &gt; 
&gt; &gt; One note is that by not putting the implementation of the constructor and destructor here, it is impossible for the compiler to inline them. It might be better to avoid changing that.
&gt; 
&gt; I don’t think that’s right. Why wouldn’t the compiler inline them?

I thought that the compiler was unable to inline code across compilation units, but I could very well be wrong about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187766</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-04-27 09:19:08 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 277470 [details]
&gt; Try to fix EFL build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=277470&amp;action=review

Thanks for the review!

&gt; &gt; Source/WebCore/platform/graphics/cairo/CairoUtilities.h:64
&gt; &gt; +#if USE(FREETYPE)
&gt; &gt; +class CairoFtFaceLocker {
&gt; &gt; +public:
&gt; &gt; +    CairoFtFaceLocker(cairo_scaled_font_t*);
&gt; &gt; +    ~CairoFtFaceLocker();
&gt; &gt; +
&gt; &gt; +    FT_Face ftFace() const { return m_ftFace; }
&gt; &gt; +
&gt; &gt; +private:
&gt; &gt; +    cairo_scaled_font_t* m_scaledFont { nullptr };
&gt; &gt; +    FT_Face m_ftFace { nullptr };
&gt; &gt; +};
&gt; 
&gt; One note is that by not putting the implementation of the constructor and
&gt; destructor here, it is impossible for the compiler to inline them. It might
&gt; be better to avoid changing that.

It was my initial idea to do the implementation in the header, but I wanted to avoid including cairo-ft header in the header file. I didn&apos;t know this prevented the compiler from inline the implementation.

&gt; &gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:253
&gt; &gt; +    // We need to reinitialize the instance, because the difference in size
&gt; &gt; +    // necessitates a new scaled font instance.
&gt; &gt; +    ASSERT(copy.m_scaledFont.get());
&gt; &gt; +    copy.buildScaledFont(cairo_scaled_font_get_font_face(copy.m_scaledFont.get()));
&gt; 
&gt; Why don&apos;t you also check if the size is different here similar to the
&gt; methods above?

I followed the previous code, tried to cleanup everything but keeping the same behavior to avoid introducing new regressions.

&gt; &gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:291
&gt; &gt; -    return m_scaledFont == other.m_scaledFont
&gt; &gt; -        &amp;&amp; m_size == other.m_size
&gt; &gt; -        &amp;&amp; m_syntheticOblique == other.m_syntheticOblique
&gt; &gt; -        &amp;&amp; m_orientation == other.m_orientation
&gt; &gt; -        &amp;&amp; m_syntheticBold == other.m_syntheticBold; 
&gt; &gt; +    return m_scaledFont == other.m_scaledFont;
&gt; &gt;  }
&gt; 
&gt; Yay!
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:349
&gt; &gt; +    ASSERT(m_scaledFont.get());
&gt; 
&gt; I&apos;m not sure you need .get() here.

I don&apos;t, it doesn&apos;t hurt either, though.

&gt; &gt; Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp:-412
&gt; &gt; -    cairo_ft_scaled_font_unlock_face(m_scaledFont);
&gt; 
&gt; Wow. Really nice fix here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187767</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-04-27 09:20:05 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Comment on attachment 277470 [details]
&gt; &gt; Try to fix EFL build
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=277470&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/platform/graphics/cairo/CairoUtilities.h:64
&gt; &gt; &gt;&gt; +};
&gt; &gt; &gt; 
&gt; &gt; &gt; One note is that by not putting the implementation of the constructor and destructor here, it is impossible for the compiler to inline them. It might be better to avoid changing that.
&gt; &gt; 
&gt; &gt; I don’t think that’s right. Why wouldn’t the compiler inline them?
&gt; 
&gt; I thought that the compiler was unable to inline code across compilation
&gt; units, but I could very well be wrong about that.

I can move the implementation to the header in any case to be extra sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187774</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-04-27 09:47:00 -0700</bug_when>
    <thetext>Committed r200129: &lt;http://trac.webkit.org/changeset/200129&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189157</commentid>
    <comment_count>15</comment_count>
    <who name="Jeremy Huddleston Sequoia">jeremyhu</who>
    <bug_when>2016-04-30 20:45:49 -0700</bug_when>
    <thetext>It looks like this introduced a regression.  See bug #157167.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277464</attachid>
            <date>2016-04-27 02:34:13 -0700</date>
            <delta_ts>2016-04-27 02:53:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-freetype-font-data.diff</filename>
            <type>text/plain</type>
            <size>34684</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOGMxY2JmMi4uNWUxMmVhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMDMsNiArMjIwMyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udEZlYXR1cmVTZXR0aW5ncy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJp
Y0ZhbWlsaWVzLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFJhbmdlcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0
aWxpdGllcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZGIyNzg4Li45NzNiOTA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMTYtMDQtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIwMDA5NCk6IFtGcmVlVHlwZV0g
VmVydGljYWwgdGV4dCBpcyBicm9rZW4gYWZ0ZXIgcjIwMDA5NAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCBGcmVldHlw
ZSBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBjYWxsIGJ1aWxkU2NhbGVkRm9udCgpIHdoZW4gb3Jp
ZW50YXRpb24sIFN5bnRoZXRpY09ibGlxdWUKKyAgICAgICAgb3Igc2l6ZSBjaGFuZ2UsIGJ1dCB0
aGUgbmV3IHN0YXRpYyBjbG9uZSBtZXRob2RzIGRvbid0IGRvIHRoYXQuIEkgdGhpbmsgaXQncyB0
aGUgdGltZSB0byBzdG9wIHVzaW5nIG91ciBvd24KKyAgICAgICAgaGVhZGVyIGZvciBGb250UGxh
dGZvcm1EYXRhIGZvciB0aGUgRnJlZVR5cGUgaW1wbGVtZW50YXRpb24gdG8gbWFrZSBjY3Jvc3Mt
cGxhdGZvcm0gY2hhbmdlcyBlYXNpZXIgYW5kIHByZXZlbnQKKyAgICAgICAgcmVncmVzc2lvbnMg
bGlrZSB0aGlzIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQ29t
cGlsZSBGb250UGxhdGZvcm1EYXRhLmNwcCBmb3IgYWxsIHBvcnRzLgorICAgICAgICAqIFBsYXRm
b3JtTWFjLmNtYWtlOiBSZW1vdmUgRm9udFBsYXRmb3JtRGF0YS5jcHAuCisgICAgICAgICogUGxh
dGZvcm1XaW4uY21ha2U6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuY3BwOiBXZSBuZWVkIG91ciBvd24gY2xvc2UgbWV0aG9kcyBpbiB0aGUgRnJl
ZVR5cGUgYmFja2VuZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1E
YXRhLmg6IE1vdmUgRnJlZVR5cGUgc3BlY2lmaWMgbWV0aG9kcyBhbmQgbWVtYmVycyBmcm9tIHRo
ZSBvbGQgaGVhZGVyIGZpbGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6OkNh
aXJvRnRGYWNlTG9ja2VyKTogTW92ZSBDYWlyb0Z0RmFjZUxvY2tlciBpbXBsZW1lbnRhdGlvbiBo
ZXJlIGZyb20KKyAgICAgICAgSGFyZkJ1enpGYWNlQ2Fpcm8uY3BwIHRvIG1ha2UgaXQgYXZhaWxh
YmxlIGZyb20gb3RoZXIgY2xhc3NlcywgYW5kIG1ha2UgaXQgaGFuZGxlIHRoZSBjYXNlIG9mCisg
ICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZSgpIHJldHVybmluZyBudWxscHRy
LgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6On5DYWlyb0Z0RmFjZUxvY2tl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRGYWNlTG9ja2VyOjpmdEZhY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmZpbmRCZXN0Rm9udEdpdmVuRmFsbGJhY2tzKTogTW92ZSB0aGUgZmFsbGJh
Y2tzIGltcGxlbWVudGF0aW9uIHRvIEZvbnRQbGF0Zm9ybURhdGEgd2hlcmUgaXQgYmVsb25ncwor
ICAgICAgICBhbmQgaGVyZSBzaW1wbHkgdXNlIEZvbnRQbGF0Zm9ybURhdGE6OmZhbGxiYWNrcygp
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6Rm9udFBsYXRmb3JtRGF0YSk6IFJlbW92ZSBtZW1iZXJzIGFscmVhZHkgaW5pdGlhbGl6ZWQg
aW4gdGhlIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJh
dG9yPSk6IEFkZCBtaXNzaW5nIG1lbWJlcnMgdG8gYmUgY29waWVkLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udFBsYXRmb3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEpOiBEbyBub3QgZnJlZSBtX3Nj
YWxlZEZvbnQgbWFudWFsbHkgc2luY2Ugd2UgYXJlIG5vdyB1c2luZyBzbWFydCBwb2ludGVyLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Y2xvbmVXaXRoT3JpZW50YXRpb24p
OiBDYWxsIGJ1aWxkU2NhbGVkRm9udCgpIGxpa2Ugc2V0T3JpZW50YXRpb24oKSBkaWQuCisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpjbG9uZVdpdGhTeW50aGV0aWNPYmxpcXVl
KTogQ2FsbCBidWlsZFNjYWxlZEZvbnQoKSBsaWtlIHNldFN5bnRoZXRpY09ibGlxdWUoKSBkaWQu
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpjbG9uZVdpdGhTaXplKTogQ2Fs
bCBidWlsZFNjYWxlZEZvbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6
OmZhbGxiYWNrcyk6IExhemlseSBpbml0aWFsaXplIGZhbGxiYWNrcyBpZiBuZWVkZWQgYW5kIHJl
dHVybiBpdC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNF
cXVhbCk6IE9ubHkgY29tcGFyZSBmcmVldHlwZSBzcGVjaWZpYyBtZW1iZXJzLgorICAgICAgICAo
V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6YnVpbGRTY2FsZWRGb250KTogVXNlIFJlZlB0ciBm
b3IgbV9zY2FsZWRGb250LgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6aGFz
Q29tcGF0aWJsZUNoYXJtYXApOiBVc2UgQ2Fpcm9GdEZhY2VMb2NrZXIuCisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKTogVXBkYXRlIHRvIHJldHVybiBS
ZWZQdHIgaW5zdGVhZCBvZiBQYXNzUmVmUHRyIGFuZCB1c2UgQ2Fpcm9GdEZhY2VMb2NrZXIuCisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVyYXRvcj09KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNldE9yaWVudGF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNldFN5bnRoZXRpY09i
bGlxdWUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ds
eXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdl
OjpmaWxsKTogVXNlIENhaXJvRnRGYWNlTG9ja2VyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udDo6cGxhdGZvcm1Jbml0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250Ojpj
YW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZUNhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmhhcmZCdXp6Q2Fpcm9HZXRUYWJsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6OkNhaXJvRnRGYWNlTG9ja2VyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNhaXJvRnRGYWNlTG9ja2VyOjpsb2NrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNhaXJvRnRGYWNlTG9ja2VyOjp+Q2Fpcm9GdEZhY2VMb2NrZXIpOiBEZWxldGVk
LgorCiAyMDE2LTA0LTI2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFN1cHBvcnQgbGVnYWN5IEhUVFAgaGVhZGVycyBpbiBXZWJTb2NrZXRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IGFlYTM1NzEuLmNhMzFjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCkBAIC0zNDgsNyArMzQ4LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKLSAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmNwcAogCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0KICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggMjMyZDUxOS4uYmZhYjQxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UKQEAgLTc0LDcgKzc0LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKIAot
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAogCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKaW5kZXggYjg0M2VmZS4uMjAwZjU3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5jcHAKQEAgLTYyLDYgKzYyLDcgQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBs
YXRmb3JtRGF0YShDR0ZvbnRSZWYgY2dGb250LCBmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0IK
IH0KICNlbmRpZgogCisjaWYgIVVTRShGUkVFVFlQRSkKIEZvbnRQbGF0Zm9ybURhdGEgRm9udFBs
YXRmb3JtRGF0YTo6Y2xvbmVXaXRoT3JpZW50YXRpb24oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
c291cmNlLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgRm9udFBsYXRmb3Jt
RGF0YSBjb3B5KHNvdXJjZSk7CkBAIC04Miw1ICs4Myw2IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9u
dFBsYXRmb3JtRGF0YTo6Y2xvbmVXaXRoU2l6ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBzb3Vy
Y2UsCiAgICAgY29weS5tX3NpemUgPSBzaXplOwogICAgIHJldHVybiBjb3B5OwogfQorI2VuZGlm
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaAppbmRleCAwZWNkMzE5Li5hNDM0MGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0yMiwxMSArMjIs
NiBAQAogICoKICAqLwogCi0vLyBGSVhNRTogVGhpcyBpcyB0ZW1wb3JhcnkgdW50aWwgYWxsIHBv
cnRzIHN3aXRjaCB0byB1c2luZyB0aGlzIGZpbGUuCi0jaWYgUExBVEZPUk0oRUZMKSB8fCBQTEFU
Rk9STShHVEspCi0jaW5jbHVkZSAiZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oIgotI2Vsc2UK
LQogI2lmbmRlZiBGb250UGxhdGZvcm1EYXRhX2gKICNkZWZpbmUgRm9udFBsYXRmb3JtRGF0YV9o
CiAKQEAgLTQyLDYgKzM3LDEyIEBACiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNlbmRpZgogCisjaWYg
VVNFKEZSRUVUWVBFKQorI2luY2x1ZGUgIkhhcmZCdXp6RmFjZS5oIgorI2luY2x1ZGUgIk9wZW5U
eXBlVmVydGljYWxEYXRhLmgiCit0eXBlZGVmIHN0cnVjdCBfRmNGb250U2V0IEZjRm9udFNldDsK
KyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9y
dCA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgpAQCAtMTA4LDYgKzEwOSwxMiBAQCBwdWJs
aWM6CiAjZW5kaWYKICNlbmRpZgogCisjaWYgVVNFKEZSRUVUWVBFKQorICAgIEZvbnRQbGF0Zm9y
bURhdGEoRmNQYXR0ZXJuKiwgY29uc3QgRm9udERlc2NyaXB0aW9uJik7CisgICAgRm9udFBsYXRm
b3JtRGF0YShjYWlyb19mb250X2ZhY2VfdCosIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wg
c3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlKTsKKyAgICB+Rm9udFBsYXRmb3Jt
RGF0YSgpOworI2VuZGlmCisKICNpZiBQTEFURk9STShXSU4pCiAgICAgSEZPTlQgaGZvbnQoKSBj
b25zdCB7IHJldHVybiBtX2ZvbnQgPyBtX2ZvbnQtPmdldCgpIDogMDsgfQogICAgIGJvb2wgdXNl
R0RJKCkgY29uc3QgeyByZXR1cm4gbV91c2VHREk7IH0KQEAgLTE0OSw2ICsxNTYsMTMgQEAgcHVi
bGljOgogICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQoKSBjb25zdCB7IHJldHVy
biBtX3NjYWxlZEZvbnQuZ2V0KCk7IH0KICNlbmRpZgogCisjaWYgVVNFKEZSRUVUWVBFKQorICAg
IEhhcmZCdXp6RmFjZSogaGFyZkJ1enpGYWNlKCkgY29uc3Q7CisgICAgYm9vbCBoYXNDb21wYXRp
YmxlQ2hhcm1hcCgpOworICAgIFBhc3NSZWZQdHI8T3BlblR5cGVWZXJ0aWNhbERhdGE+IHZlcnRp
Y2FsRGF0YSgpIGNvbnN0OworICAgIEZjRm9udFNldCogZmFsbGJhY2tzKCkgY29uc3Q7CisjZW5k
aWYKKwogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKICNpZiBQTEFURk9STShXSU4p
ICYmICFVU0UoQ0FJUk8pCkBAIC0xNjcsNyArMTgxLDExIEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IH0KIAorI2lmIFVTRShGUkVFVFlQRSkKKyAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0o
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOworI2Vsc2UKICAgICBGb250UGxhdGZvcm1EYXRhJiBv
cGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpID0gZGVmYXVsdDsKKyNlbmRpZgogCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAog
ICAgIHsKQEAgLTE5Niw3ICsyMTQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSNpZiBQ
TEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQ
TEFURk9STShXSU4pIHx8IFVTRShGUkVFVFlQRSkKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBv
cGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKICNlbmRpZgogCkBAIC0yMTIsNiAr
MjMwLDkgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBwbGF0Zm9ybURh
dGFJbml0KEhGT05ULCBmbG9hdCBzaXplLCBIREMsIFdDSEFSKiBmYWNlTmFtZSk7CiAjZW5kaWYK
KyNpZiBVU0UoRlJFRVRZUEUpCisgICAgdm9pZCBidWlsZFNjYWxlZEZvbnQoY2Fpcm9fZm9udF9m
YWNlX3QqKTsKKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUU6IEdl
dCByaWQgb2Ygb25lIG9mIHRoZXNlLiBUaGVzZSB0d28gZm9udHMgYXJlIHN1YnRseSBkaWZmZXJl
bnQsIGFuZCBpdCBpcyBub3Qgb2J2aW91cyB3aGljaCBvbmUgdG8gdXNlIHdoZXJlLgpAQCAtMjI3
LDYgKzI0OCwxMSBAQCBwcml2YXRlOgogI2lmIFVTRShDQUlSTykKICAgICBSZWZQdHI8Y2Fpcm9f
c2NhbGVkX2ZvbnRfdD4gbV9zY2FsZWRGb250OwogI2VuZGlmCisjaWYgVVNFKEZSRUVUWVBFKQor
ICAgIFJlZlB0cjxGY1BhdHRlcm4+IG1fcGF0dGVybjsKKyAgICBtdXRhYmxlIEZjRm9udFNldCog
bV9mYWxsYmFja3MgeyBudWxscHRyIH07CisgICAgbXV0YWJsZSBSZWZQdHI8SGFyZkJ1enpGYWNl
PiBtX2hhcmZCdXp6RmFjZTsKKyNlbmRpZgogCiAgICAgLy8gVGhlIHZhbHVlcyBiZWxvdyBhcmUg
Y29tbW9uIHRvIGFsbCBwb3J0cwogICAgIC8vIEZJWE1FOiBJZiB0aGV5J3JlIGNvbW1vbiB0byBh
bGwgcG9ydHMsIHRoZXkgc2hvdWxkIG1vdmUgdG8gRm9udApAQCAtMjQ5LDYgKzI3NSw5IEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIGJvb2wgbV91c2VHREkgeyBmYWxzZSB9Owog
I2VuZGlmCisjaWYgVVNFKEZSRUVUWVBFKQorICAgIGJvb2wgbV9maXhlZFdpZHRoIHsgZmFsc2Ug
fTsKKyNlbmRpZgogfTsKIAogI2lmIFVTRShBUFBLSVQpCkBAIC0yNjcsNSArMjk2LDMgQEAgaW5s
aW5lIE5TRm9udCAqdG9OU0ZvbnQoQ1RGb250UmVmIGZvbnQpCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBGb250UGxhdGZvcm1EYXRhX2gKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGll
cy5jcHAKaW5kZXggMTVlOGZmYy4uYmIwYmM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcApAQCAtNDUs
OCArNDUsMjYgQEAKICNpbmNsdWRlIDxjYWlyby1nbC5oPgogI2VuZGlmCiAKKyNpZiBVU0UoRlJF
RVRZUEUpCisjaW5jbHVkZSA8Y2Fpcm8tZnQuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKKyNpZiBVU0UoRlJFRVRZUEUpCitDYWlyb0Z0RmFjZUxvY2tlcjo6Q2Fpcm9GdEZhY2VM
b2NrZXIoY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCkKKyAgICA6IG1fc2NhbGVkRm9u
dChzY2FsZWRGb250KQorICAgICwgbV9mdEZhY2UoY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfbG9ja19m
YWNlKHNjYWxlZEZvbnQpKQoreworfQorCitDYWlyb0Z0RmFjZUxvY2tlcjo6fkNhaXJvRnRGYWNl
TG9ja2VyKCkKK3sKKyAgICBpZiAobV9mdEZhY2UpCisgICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9m
b250X3VubG9ja19mYWNlKG1fc2NhbGVkRm9udCk7Cit9CisjZW5kaWYKKwogdm9pZCBjb3B5Q29u
dGV4dFByb3BlcnRpZXMoY2Fpcm9fdCogc3JjQ3IsIGNhaXJvX3QqIGRzdENyKQogewogICAgIGNh
aXJvX3NldF9hbnRpYWxpYXMoZHN0Q3IsIGNhaXJvX2dldF9hbnRpYWxpYXMoc3JjQ3IpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRp
bGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0
aWxpdGllcy5oCmluZGV4IDA3MzQ0OGIuLmZiNDk4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaApAQCAtMzYs
NiArMzYsMTAgQEAKIC8vIFRoaXMgZnVuY3Rpb24gd2FzIGFkZGVkIHByZXR0eSBtdWNoIHNpbXVs
dGFuZW91cyB0byB3aGVuIDEuMTMgd2FzIGJyYW5jaGVkLgogI2RlZmluZSBIQVZFX0NBSVJPX1NV
UkZBQ0VfU0VUX0RFVklDRV9TQ0FMRSBDQUlST19WRVJTSU9OX01BSk9SID4gMSB8fCAoQ0FJUk9f
VkVSU0lPTl9NQUpPUiA9PSAxICYmIENBSVJPX1ZFUlNJT05fTUlOT1IgPj0gMTMpCiAKKyNpZiBV
U0UoRlJFRVRZUEUpCit0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogRlRfRmFjZTsKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBD
b2xvcjsKQEAgLTQ2LDYgKzUwLDIwIEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQYXRoOwogY2xh
c3MgUmVnaW9uOwogCisjaWYgVVNFKEZSRUVUWVBFKQorY2xhc3MgQ2Fpcm9GdEZhY2VMb2NrZXIg
eworcHVibGljOgorICAgIENhaXJvRnRGYWNlTG9ja2VyKGNhaXJvX3NjYWxlZF9mb250X3QqKTsK
KyAgICB+Q2Fpcm9GdEZhY2VMb2NrZXIoKTsKKworICAgIEZUX0ZhY2UgZnRGYWNlKCkgY29uc3Qg
eyByZXR1cm4gbV9mdEZhY2U7IH0KKworcHJpdmF0ZToKKyAgICBjYWlyb19zY2FsZWRfZm9udF90
KiBtX3NjYWxlZEZvbnQgeyBudWxscHRyIH07CisgICAgRlRfRmFjZSBtX2Z0RmFjZSB7IG51bGxw
dHIgfTsKK307CisjZW5kaWYKKwogdm9pZCBjb3B5Q29udGV4dFByb3BlcnRpZXMoY2Fpcm9fdCog
c3JjQ3IsIGNhaXJvX3QqIGRzdENyKTsKIHZvaWQgc2V0U291cmNlUkdCQUZyb21Db2xvcihjYWly
b190KiwgY29uc3QgQ29sb3ImKTsKIHZvaWQgYXBwZW5kUGF0aFRvQ2Fpcm9Db250ZXh0KGNhaXJv
X3QqIHRvLCBjYWlyb190KiBmcm9tKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAppbmRl
eCBlYjAzZGNkLi4zMzMzMzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApAQCAt
NjMsMTggKzYzLDEwIEBAIHN0YXRpYyBSZWZQdHI8RmNQYXR0ZXJuPiBjcmVhdGVGb250Q29uZmln
UGF0dGVybkZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNoYXJhCiAKIHN0YXRpYyBSZWZQdHI8
RmNQYXR0ZXJuPiBmaW5kQmVzdEZvbnRHaXZlbkZhbGxiYWNrcyhjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBmb250RGF0YSwgRmNQYXR0ZXJuKiBwYXR0ZXJuKQogewotICAgIGlmICghZm9udERhdGEu
bV9wYXR0ZXJuKQorICAgIEZjRm9udFNldCogc2V0c1tdID0geyBmb250RGF0YS5mYWxsYmFja3Mo
KSB9OworICAgIGlmICghc2V0c1swXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBp
ZiAoIWZvbnREYXRhLm1fZmFsbGJhY2tzKSB7Ci0gICAgICAgIEZjUmVzdWx0IGZvbnRDb25maWdS
ZXN1bHQ7Ci0gICAgICAgIGZvbnREYXRhLm1fZmFsbGJhY2tzID0gRmNGb250U29ydChudWxscHRy
LCBmb250RGF0YS5tX3BhdHRlcm4uZ2V0KCksIEZjVHJ1ZSwgbnVsbHB0ciwgJmZvbnRDb25maWdS
ZXN1bHQpOwotICAgIH0KLQotICAgIGlmICghZm9udERhdGEubV9mYWxsYmFja3MpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgRmNGb250U2V0KiBzZXRzW10gPSB7IGZvbnREYXRhLm1f
ZmFsbGJhY2tzIH07CiAgICAgRmNSZXN1bHQgZm9udENvbmZpZ1Jlc3VsdDsKICAgICByZXR1cm4g
RmNGb250U2V0TWF0Y2gobnVsbHB0ciwgc2V0cywgMSwgcGF0dGVybiwgJmZvbnRDb25maWdSZXN1
bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiMTJjMmEyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4K
LSAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29t
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKLSAqIENv
cHlyaWdodCAoQykgMjAwNyBQaW9uZWVyIFJlc2VhcmNoIENlbnRlciBVU0EsIEluYy4KLSAqIENv
cHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0K
LSNpZm5kZWYgRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlX2gKLSNkZWZpbmUgRm9udFBsYXRmb3Jt
RGF0YUZyZWVUeXBlX2gKLQotI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgotI2luY2x1ZGUgIkZvbnRE
ZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCi0jaW5jbHVkZSAiSGFyZkJ1
enpGYWNlLmgiCi0jaW5jbHVkZSAiT3BlblR5cGVWZXJ0aWNhbERhdGEuaCIKLSNpbmNsdWRlICJS
ZWZQdHJDYWlyby5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgIlRleHRG
bGFncy5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hGdW5j
dGlvbnMuaD4KLQotdHlwZWRlZiBzdHJ1Y3QgX0ZjRm9udFNldCBGY0ZvbnRTZXQ7Ci1jbGFzcyBI
YXJmQnV6ekZhY2U7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRm9udFBsYXRmb3Jt
RGF0YSB7Ci1wdWJsaWM6Ci0gICAgRm9udFBsYXRmb3JtRGF0YShXVEY6Okhhc2hUYWJsZURlbGV0
ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDogbV9mYWxsYmFja3MoMCkKLSAgICAgICAgLCBtX3NpemUo
MCkKLSAgICAgICAgLCBtX3N5bnRoZXRpY0JvbGQoZmFsc2UpCi0gICAgICAgICwgbV9zeW50aGV0
aWNPYmxpcXVlKGZhbHNlKQotICAgICAgICAsIG1fc2NhbGVkRm9udChoYXNoVGFibGVEZWxldGVk
Rm9udFZhbHVlKCkpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihIb3Jpem9udGFsKQotICAgICAg
ICB7IH0KLQotICAgIEZvbnRQbGF0Zm9ybURhdGEoKQotICAgICAgICA6IG1fZmFsbGJhY2tzKDAp
Ci0gICAgICAgICwgbV9zaXplKDApCi0gICAgICAgICwgbV9zeW50aGV0aWNCb2xkKGZhbHNlKQot
ICAgICAgICAsIG1fc3ludGhldGljT2JsaXF1ZShmYWxzZSkKLSAgICAgICAgLCBtX3NjYWxlZEZv
bnQoMCkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKEhvcml6b250YWwpCi0gICAgICAgIHsgfQot
Ci0gICAgRm9udFBsYXRmb3JtRGF0YShGY1BhdHRlcm4qLCBjb25zdCBGb250RGVzY3JpcHRpb24m
KTsKLSAgICBGb250UGxhdGZvcm1EYXRhKGNhaXJvX2ZvbnRfZmFjZV90KiwgY29uc3QgRm9udERl
c2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYyk7Ci0gICAgRm9udFBsYXRmb3JtRGF0
YShmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGljKTsKLSAgICBGb250UGxhdGZvcm1E
YXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKLSAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmLCBmbG9hdCBzaXplKTsKLQotICAgIHN0YXRpYyBGb250UGxhdGZv
cm1EYXRhIGNsb25lV2l0aE9yaWVudGF0aW9uKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBGb250
T3JpZW50YXRpb24pOwotICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIGNsb25lV2l0aFN5bnRo
ZXRpY09ibGlxdWUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIGJvb2wpOwotICAgIHN0YXRpYyBG
b250UGxhdGZvcm1EYXRhIGNsb25lV2l0aFNpemUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIGZs
b2F0KTsKLQotICAgIH5Gb250UGxhdGZvcm1EYXRhKCk7Ci0KLSAgICBIYXJmQnV6ekZhY2UqIGhh
cmZCdXp6RmFjZSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc0ZpeGVkUGl0Y2goKSBjb25zdDsKLSAg
ICBmbG9hdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgdm9pZCBzZXRTaXpl
KGZsb2F0IHNpemUpIHsgbV9zaXplID0gc2l6ZTsgfQotICAgIGJvb2wgc3ludGhldGljQm9sZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3ludGhldGljQm9sZDsgfQotICAgIGJvb2wgc3ludGhldGljT2Js
aXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGhldGljT2JsaXF1ZTsgfQotICAgIHZvaWQgc2V0
U3ludGhldGljT2JsaXF1ZShib29sKTsKLSAgICBib29sIGhhc0NvbXBhdGlibGVDaGFybWFwKCk7
Ci0KLSAgICBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29y
aWVudGF0aW9uOyB9Ci0gICAgdm9pZCBzZXRPcmllbnRhdGlvbihGb250T3JpZW50YXRpb24pOwot
ICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPE9wZW5UeXBlVmVydGljYWxEYXRhPiB2ZXJ0aWNhbERh
dGEoKSBjb25zdDsKLQotICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQoKSBjb25z
dCB7IHJldHVybiBtX3NjYWxlZEZvbnQ7IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIFB0ckhhc2g8Y2Fpcm9fc2NhbGVkX2ZvbnRfdCo+OjpoYXNo
KG1fc2NhbGVkRm9udCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmKSBjb25zdDsKLSAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYpOwotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2NhbGVkRm9udCA9PSBoYXNoVGFibGVE
ZWxldGVkRm9udFZhbHVlKCk7Ci0gICAgfQotCi0jaWZuZGVmIE5ERUJVRwotICAgIFN0cmluZyBk
ZXNjcmlwdGlvbigpIGNvbnN0OwotI2VuZGlmCi0KLSAgICBSZWZQdHI8RmNQYXR0ZXJuPiBtX3Bh
dHRlcm47Ci0gICAgbXV0YWJsZSBGY0ZvbnRTZXQqIG1fZmFsbGJhY2tzOyAvLyBJbml0aWFsaXpl
ZCBsYXppbHkuCi0gICAgZmxvYXQgbV9zaXplOwotICAgIGJvb2wgbV9zeW50aGV0aWNCb2xkOwot
ICAgIGJvb2wgbV9zeW50aGV0aWNPYmxpcXVlOwotICAgIGJvb2wgbV9maXhlZFdpZHRoOwotICAg
IGNhaXJvX3NjYWxlZF9mb250X3QqIG1fc2NhbGVkRm9udDsKLSAgICBtdXRhYmxlIFJlZlB0cjxI
YXJmQnV6ekZhY2U+IG1faGFyZkJ1enpGYWNlOwotCi1wcml2YXRlOgotICAgIHZvaWQgYnVpbGRT
Y2FsZWRGb250KGNhaXJvX2ZvbnRfZmFjZV90Kik7Ci0gICAgc3RhdGljIGNhaXJvX3NjYWxlZF9m
b250X3QqIGhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUoKSB7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNhaXJvX3NjYWxlZF9mb250X3QqPigtMSk7IH0KLQotICAgIEZvbnRPcmllbnRhdGlvbiBt
X29yaWVudGF0aW9uOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRm9udFBsYXRmb3JtRGF0YUZyZWVU
eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDM3
ODc5NmUuLjViYzJlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcApAQCAtMjUsMTAgKzI1LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Rm9udFBsYXRmb3JtRGF0YS5oIgogCisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNpbmNs
dWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKLSNpbmNsdWRl
ICJSZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGNh
aXJvLWZ0Lmg+Ci0jaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxmb250Y29uZmlnL2ZjZnJl
ZXR5cGUuaD4KICNpbmNsdWRlIDxmdDJidWlsZC5oPgogI2luY2x1ZGUgRlRfVFJVRVRZUEVfVEFC
TEVTX0gKQEAgLTEzNiwxMiArMTM3LDcgQEAgc3RhdGljIEZjUGF0dGVybiogZ2V0RGVmYXVsdEZv
bnRjb25maWdPcHRpb25zKCkKIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShG
Y1BhdHRlcm4qIHBhdHRlcm4sIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
KQogICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCi0gICAgLCBtX2ZhbGxiYWNrcyhudWxscHRyKQog
ICAgICwgbV9zaXplKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpKQotICAgICwg
bV9zeW50aGV0aWNCb2xkKGZhbHNlKQotICAgICwgbV9zeW50aGV0aWNPYmxpcXVlKGZhbHNlKQot
ICAgICwgbV9maXhlZFdpZHRoKGZhbHNlKQotICAgICwgbV9zY2FsZWRGb250KG51bGxwdHIpCiAg
ICAgLCBtX29yaWVudGF0aW9uKGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKQogewogICAg
IEFTU0VSVChtX3BhdHRlcm4pOwpAQCAtMTc1LDM0ICsxNzEsMTcgQEAgRm9udFBsYXRmb3JtRGF0
YTo6Rm9udFBsYXRmb3JtRGF0YShGY1BhdHRlcm4qIHBhdHRlcm4sIGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm8KICAgICBidWlsZFNjYWxlZEZvbnQoZm9udEZhY2UuZ2V0KCkpOwogfQogCi1Gb250
UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9v
bCBpdGFsaWMpCi0gICAgOiBtX2ZhbGxiYWNrcyhudWxscHRyKQotICAgICwgbV9zaXplKHNpemUp
Ci0gICAgLCBtX3N5bnRoZXRpY0JvbGQoYm9sZCkKLSAgICAsIG1fc3ludGhldGljT2JsaXF1ZShp
dGFsaWMpCi0gICAgLCBtX2ZpeGVkV2lkdGgoZmFsc2UpCi0gICAgLCBtX3NjYWxlZEZvbnQobnVs
bHB0cikKLSAgICAsIG1fb3JpZW50YXRpb24oSG9yaXpvbnRhbCkKLXsKLSAgICAvLyBXZSBjYW5u
b3QgY3JlYXRlIGEgc2NhbGVkIGZvbnQgaGVyZS4KLX0KLQogRm9udFBsYXRmb3JtRGF0YTo6Rm9u
dFBsYXRmb3JtRGF0YShjYWlyb19mb250X2ZhY2VfdCogZm9udEZhY2UsIGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYgZGVzY3JpcHRpb24sIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMpCi0gICAgOiBtX2Zh
bGxiYWNrcyhudWxscHRyKQotICAgICwgbV9zaXplKGRlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxT
aXplKCkpCisgICAgOiBtX3NpemUoZGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSkKKyAg
ICAsIG1fb3JpZW50YXRpb24oZGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSkKICAgICAsIG1fc3lu
dGhldGljQm9sZChib2xkKQogICAgICwgbV9zeW50aGV0aWNPYmxpcXVlKGl0YWxpYykKLSAgICAs
IG1fZml4ZWRXaWR0aChmYWxzZSkKLSAgICAsIG1fc2NhbGVkRm9udChudWxscHRyKQotICAgICwg
bV9vcmllbnRhdGlvbihkZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKQogewogICAgIGJ1aWxkU2Nh
bGVkRm9udChmb250RmFjZSk7CiAKLSAgICBGVF9GYWNlIGZvbnRDb25maWdGYWNlID0gY2Fpcm9f
ZnRfc2NhbGVkX2ZvbnRfbG9ja19mYWNlKG1fc2NhbGVkRm9udCk7Ci0gICAgaWYgKGZvbnRDb25m
aWdGYWNlKSB7CisgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9zY2Fs
ZWRGb250LmdldCgpKTsKKyAgICBpZiAoRlRfRmFjZSBmb250Q29uZmlnRmFjZSA9IGNhaXJvRnRG
YWNlTG9ja2VyLmZ0RmFjZSgpKQogICAgICAgICBtX2ZpeGVkV2lkdGggPSBmb250Q29uZmlnRmFj
ZS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19GSVhFRF9XSURUSDsKLSAgICAgICAgY2Fpcm9f
ZnRfc2NhbGVkX2ZvbnRfdW5sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKLSAgICB9CiB9CiAKIEZv
bnRQbGF0Zm9ybURhdGEmIEZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBvdGhlcikKQEAgLTIxMiw3MCArMTkxLDU1IEBAIEZvbnRQbGF0Zm9ybURhdGEm
IEZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhl
cikKICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgbV9zaXplID0gb3RoZXIubV9zaXplOwor
ICAgIG1fb3JpZW50YXRpb24gPSBvdGhlci5tX29yaWVudGF0aW9uOworICAgIG1fd2lkdGhWYXJp
YW50ID0gb3RoZXIubV93aWR0aFZhcmlhbnQ7CisgICAgbV90ZXh0UmVuZGVyaW5nTW9kZSA9IG90
aGVyLm1fdGV4dFJlbmRlcmluZ01vZGU7CisKICAgICBtX3N5bnRoZXRpY0JvbGQgPSBvdGhlci5t
X3N5bnRoZXRpY0JvbGQ7CiAgICAgbV9zeW50aGV0aWNPYmxpcXVlID0gb3RoZXIubV9zeW50aGV0
aWNPYmxpcXVlOworICAgIG1faXNDb2xvckJpdG1hcEZvbnQgPSBvdGhlci5tX2lzQ29sb3JCaXRt
YXBGb250OworICAgIG1faXNIYXNoVGFibGVEZWxldGVkVmFsdWUgPSBvdGhlci5tX2lzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlOworICAgIG1faXNTeXN0ZW1Gb250ID0gb3RoZXIubV9pc1N5c3RlbUZv
bnQ7CisKICAgICBtX2ZpeGVkV2lkdGggPSBvdGhlci5tX2ZpeGVkV2lkdGg7CiAgICAgbV9wYXR0
ZXJuID0gb3RoZXIubV9wYXR0ZXJuOwotICAgIG1fb3JpZW50YXRpb24gPSBvdGhlci5tX29yaWVu
dGF0aW9uOwogCisgICAgLy8gVGhpcyB3aWxsIGJlIHJlLWNyZWF0ZWQgb24gZGVtYW5kLgogICAg
IGlmIChtX2ZhbGxiYWNrcykgewogICAgICAgICBGY0ZvbnRTZXREZXN0cm95KG1fZmFsbGJhY2tz
KTsKLSAgICAgICAgLy8gVGhpcyB3aWxsIGJlIHJlLWNyZWF0ZWQgb24gZGVtYW5kLgogICAgICAg
ICBtX2ZhbGxiYWNrcyA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKG1fc2NhbGVkRm9udCAm
JiBtX3NjYWxlZEZvbnQgIT0gaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpKQotICAgICAgICBj
YWlyb19zY2FsZWRfZm9udF9kZXN0cm95KG1fc2NhbGVkRm9udCk7Ci0gICAgbV9zY2FsZWRGb250
ID0gY2Fpcm9fc2NhbGVkX2ZvbnRfcmVmZXJlbmNlKG90aGVyLm1fc2NhbGVkRm9udCk7Ci0KKyAg
ICBtX3NjYWxlZEZvbnQgPSBvdGhlci5tX3NjYWxlZEZvbnQ7CiAgICAgbV9oYXJmQnV6ekZhY2Ug
PSBvdGhlci5tX2hhcmZCdXp6RmFjZTsKIAogICAgIHJldHVybiAqdGhpczsKIH0KIAotRm9udFBs
YXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhl
cikKLSAgICA6IG1fZmFsbGJhY2tzKG51bGxwdHIpCi0gICAgLCBtX3NjYWxlZEZvbnQobnVsbHB0
cikKLSAgICAsIG1faGFyZkJ1enpGYWNlKG90aGVyLm1faGFyZkJ1enpGYWNlKQotewotICAgICp0
aGlzID0gb3RoZXI7Ci19Ci0KLUZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIsIGZsb2F0IHNpemUpCi0gICAgOiBtX2ZhbGxiYWNr
cyhudWxscHRyKQotICAgICwgbV9zY2FsZWRGb250KG51bGxwdHIpCi0gICAgLCBtX2hhcmZCdXp6
RmFjZShvdGhlci5tX2hhcmZCdXp6RmFjZSkKLXsKLSAgICAqdGhpcyA9IG90aGVyOwotCi0gICAg
Ly8gV2UgbmVlZCB0byByZWluaXRpYWxpemUgdGhlIGluc3RhbmNlLCBiZWNhdXNlIHRoZSBkaWZm
ZXJlbmNlIGluIHNpemUgCi0gICAgLy8gbmVjZXNzaXRhdGVzIGEgbmV3IHNjYWxlZCBmb250IGlu
c3RhbmNlLgotICAgIG1fc2l6ZSA9IHNpemU7Ci0gICAgYnVpbGRTY2FsZWRGb250KGNhaXJvX3Nj
YWxlZF9mb250X2dldF9mb250X2ZhY2UobV9zY2FsZWRGb250KSk7Ci19Ci0KIEZvbnRQbGF0Zm9y
bURhdGE6On5Gb250UGxhdGZvcm1EYXRhKCkKIHsKLSAgICBpZiAobV9mYWxsYmFja3MpIHsKKyAg
ICBpZiAobV9mYWxsYmFja3MpCiAgICAgICAgIEZjRm9udFNldERlc3Ryb3kobV9mYWxsYmFja3Mp
OwotICAgICAgICBtX2ZhbGxiYWNrcyA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKG1fc2Nh
bGVkRm9udCAmJiBtX3NjYWxlZEZvbnQgIT0gaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpKQot
ICAgICAgICBjYWlyb19zY2FsZWRfZm9udF9kZXN0cm95KG1fc2NhbGVkRm9udCk7CiB9CiAKIEZv
bnRQbGF0Zm9ybURhdGEgRm9udFBsYXRmb3JtRGF0YTo6Y2xvbmVXaXRoT3JpZW50YXRpb24oY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgc291cmNlLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24p
CiB7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBjb3B5KHNvdXJjZSk7Ci0gICAgY29weS5tX29yaWVu
dGF0aW9uID0gb3JpZW50YXRpb247CisgICAgaWYgKGNvcHkubV9zY2FsZWRGb250ICYmIGNvcHku
bV9vcmllbnRhdGlvbiAhPSBvcmllbnRhdGlvbikgeworICAgICAgICBjb3B5Lm1fb3JpZW50YXRp
b24gPSBvcmllbnRhdGlvbjsKKyAgICAgICAgY29weS5idWlsZFNjYWxlZEZvbnQoY2Fpcm9fc2Nh
bGVkX2ZvbnRfZ2V0X2ZvbnRfZmFjZShjb3B5Lm1fc2NhbGVkRm9udC5nZXQoKSkpOworICAgIH0K
ICAgICByZXR1cm4gY29weTsKIH0KIAogRm9udFBsYXRmb3JtRGF0YSBGb250UGxhdGZvcm1EYXRh
OjpjbG9uZVdpdGhTeW50aGV0aWNPYmxpcXVlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHNvdXJj
ZSwgYm9vbCBzeW50aGV0aWNPYmxpcXVlKQogewogICAgIEZvbnRQbGF0Zm9ybURhdGEgY29weShz
b3VyY2UpOwotICAgIGNvcHkubV9zeW50aGV0aWNPYmxpcXVlID0gc3ludGhldGljT2JsaXF1ZTsK
KyAgICBpZiAoY29weS5tX3N5bnRoZXRpY09ibGlxdWUgIT0gc3ludGhldGljT2JsaXF1ZSkgewor
ICAgICAgICBjb3B5Lm1fc3ludGhldGljT2JsaXF1ZSA9IHN5bnRoZXRpY09ibGlxdWU7CisgICAg
ICAgIEFTU0VSVChjb3B5Lm1fc2NhbGVkRm9udC5nZXQoKSk7CisgICAgICAgIGNvcHkuYnVpbGRT
Y2FsZWRGb250KGNhaXJvX3NjYWxlZF9mb250X2dldF9mb250X2ZhY2UoY29weS5tX3NjYWxlZEZv
bnQuZ2V0KCkpKTsKKyAgICB9CiAgICAgcmV0dXJuIGNvcHk7CiB9CiAKQEAgLTI4Myw2ICsyNDcs
MTAgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250UGxhdGZvcm1EYXRhOjpjbG9uZVdpdGhTaXplKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHNvdXJjZSwKIHsKICAgICBGb250UGxhdGZvcm1EYXRhIGNv
cHkoc291cmNlKTsKICAgICBjb3B5Lm1fc2l6ZSA9IHNpemU7CisgICAgLy8gV2UgbmVlZCB0byBy
ZWluaXRpYWxpemUgdGhlIGluc3RhbmNlLCBiZWNhdXNlIHRoZSBkaWZmZXJlbmNlIGluIHNpemUK
KyAgICAvLyBuZWNlc3NpdGF0ZXMgYSBuZXcgc2NhbGVkIGZvbnQgaW5zdGFuY2UuCisgICAgQVNT
RVJUKGNvcHkubV9zY2FsZWRGb250LmdldCgpKTsKKyAgICBjb3B5LmJ1aWxkU2NhbGVkRm9udChj
YWlyb19zY2FsZWRfZm9udF9nZXRfZm9udF9mYWNlKGNvcHkubV9zY2FsZWRGb250LmdldCgpKSk7
CiAgICAgcmV0dXJuIGNvcHk7CiB9CiAKQEAgLTI5NCwxMiArMjYyLDI0IEBAIEhhcmZCdXp6RmFj
ZSogRm9udFBsYXRmb3JtRGF0YTo6aGFyZkJ1enpGYWNlKCkgY29uc3QKICAgICByZXR1cm4gbV9o
YXJmQnV6ekZhY2UuZ2V0KCk7CiB9CiAKK0ZjRm9udFNldCogRm9udFBsYXRmb3JtRGF0YTo6ZmFs
bGJhY2tzKCkgY29uc3QKK3sKKyAgICBpZiAobV9mYWxsYmFja3MpCisgICAgICAgIHJldHVybiBt
X2ZhbGxiYWNrczsKKworICAgIGlmIChtX3BhdHRlcm4pIHsKKyAgICAgICAgRmNSZXN1bHQgZm9u
dENvbmZpZ1Jlc3VsdDsKKyAgICAgICAgbV9mYWxsYmFja3MgPSBGY0ZvbnRTb3J0KG51bGxwdHIs
IG1fcGF0dGVybi5nZXQoKSwgRmNUcnVlLCBudWxscHRyLCAmZm9udENvbmZpZ1Jlc3VsdCk7Cisg
ICAgfQorICAgIHJldHVybiBtX2ZhbGxiYWNrczsKK30KKwogYm9vbCBGb250UGxhdGZvcm1EYXRh
Ojppc0ZpeGVkUGl0Y2goKSBjb25zdAogewogICAgIHJldHVybiBtX2ZpeGVkV2lkdGg7CiB9CiAK
LWJvb2wgRm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9PShjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBvdGhlcikgY29uc3QKK2Jvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogewogICAgIC8vIEZjUGF0dGVybkVx
dWFsIGRvZXMgbm90IHN1cHBvcnQgbnVsbCBwb2ludGVycyBhcyBhcmd1bWVudHMuCiAgICAgaWYg
KChtX3BhdHRlcm4gJiYgIW90aGVyLm1fcGF0dGVybikKQEAgLTMwNywxMSArMjg3LDcgQEAgYm9v
bCBGb250UGxhdGZvcm1EYXRhOjpvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90
aGVyKSBjb25zdAogICAgICAgICB8fCAobV9wYXR0ZXJuICE9IG90aGVyLm1fcGF0dGVybiAmJiAh
RmNQYXR0ZXJuRXF1YWwobV9wYXR0ZXJuLmdldCgpLCBvdGhlci5tX3BhdHRlcm4uZ2V0KCkpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fc2NhbGVkRm9udCA9PSBvdGhl
ci5tX3NjYWxlZEZvbnQKLSAgICAgICAgJiYgbV9zaXplID09IG90aGVyLm1fc2l6ZQotICAgICAg
ICAmJiBtX3N5bnRoZXRpY09ibGlxdWUgPT0gb3RoZXIubV9zeW50aGV0aWNPYmxpcXVlCi0gICAg
ICAgICYmIG1fb3JpZW50YXRpb24gPT0gb3RoZXIubV9vcmllbnRhdGlvbgotICAgICAgICAmJiBt
X3N5bnRoZXRpY0JvbGQgPT0gb3RoZXIubV9zeW50aGV0aWNCb2xkOyAKKyAgICByZXR1cm4gbV9z
Y2FsZWRGb250ID09IG90aGVyLm1fc2NhbGVkRm9udDsKIH0KIAogI2lmbmRlZiBOREVCVUcKQEAg
LTM2NCwyMiArMzQwLDE4IEBAIHZvaWQgRm9udFBsYXRmb3JtRGF0YTo6YnVpbGRTY2FsZWRGb250
KGNhaXJvX2ZvbnRfZmFjZV90KiBmb250RmFjZSkKICAgICAgICAgY2Fpcm9fbWF0cml4X3RyYW5z
bGF0ZSgmZm9udE1hdHJpeCwgMC4wLCAxLjApOwogICAgIH0KIAotICAgIGlmIChtX3NjYWxlZEZv
bnQgJiYgbV9zY2FsZWRGb250ICE9IGhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUoKSkKLSAgICAg
ICAgY2Fpcm9fc2NhbGVkX2ZvbnRfZGVzdHJveShtX3NjYWxlZEZvbnQpOwotCi0gICAgbV9zY2Fs
ZWRGb250ID0gY2Fpcm9fc2NhbGVkX2ZvbnRfY3JlYXRlKGZvbnRGYWNlLCAmZm9udE1hdHJpeCwg
JmN0bSwgb3B0aW9ucyk7CisgICAgbV9zY2FsZWRGb250ID0gYWRvcHRSZWYoY2Fpcm9fc2NhbGVk
X2ZvbnRfY3JlYXRlKGZvbnRGYWNlLCAmZm9udE1hdHJpeCwgJmN0bSwgb3B0aW9ucykpOwogICAg
IGNhaXJvX2ZvbnRfb3B0aW9uc19kZXN0cm95KG9wdGlvbnMpOwogfQogCiBib29sIEZvbnRQbGF0
Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkKIHsKLSAgICBBU1NFUlQobV9zY2FsZWRG
b250KTsKLSAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvX2Z0X3NjYWxlZF9mb250X2xv
Y2tfZmFjZShtX3NjYWxlZEZvbnQpOwotICAgIGJvb2wgaGFzQ29tcGF0aWJsZUNoYXJtYXAgPSAh
KEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2RpbmdfdW5pY29kZSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5
cGVGYWNlLCBmdF9lbmNvZGluZ19zeW1ib2wpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2RpbmdfYXBwbGVf
cm9tYW4pKTsKLSAgICBjYWlyb19mdF9zY2FsZWRfZm9udF91bmxvY2tfZmFjZShtX3NjYWxlZEZv
bnQpOwotICAgIHJldHVybiBoYXNDb21wYXRpYmxlQ2hhcm1hcDsKKyAgICBBU1NFUlQobV9zY2Fs
ZWRGb250LmdldCgpKTsKKyAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlciht
X3NjYWxlZEZvbnQuZ2V0KCkpOworICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZh
Y2VMb2NrZXIuZnRGYWNlKCk7CisgICAgcmV0dXJuICEoRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5
cGVGYWNlLCBmdF9lbmNvZGluZ191bmljb2RlKQorICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1h
cChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX3N5bWJvbCkKKyAgICAgICAgJiYgRlRfU2VsZWN0
X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCiBQ
YXNzUmVmUHRyPE9wZW5UeXBlVmVydGljYWxEYXRhPiBGb250UGxhdGZvcm1EYXRhOjp2ZXJ0aWNh
bERhdGEoKSBjb25zdApAQCAtMzg4LDkgKzM2MCwxMCBAQCBQYXNzUmVmUHRyPE9wZW5UeXBlVmVy
dGljYWxEYXRhPiBGb250UGxhdGZvcm1EYXRhOjp2ZXJ0aWNhbERhdGEoKSBjb25zdAogICAgIHJl
dHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdldFZlcnRpY2FsRGF0YShTdHJpbmc6Om51bWJl
cihoYXNoKCkpLCAqdGhpcyk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKIHsKLSAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvX2Z0X3NjYWxlZF9m
b250X2xvY2tfZmFjZShtX3NjYWxlZEZvbnQpOworICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJv
RnRGYWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CisgICAgRlRfRmFjZSBmcmVlVHlwZUZh
Y2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKICAgICBpZiAoIWZyZWVUeXBlRmFjZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTQwMSwzNyArMzc0LDE1IEBAIFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRhYmxlU2l6ZSk7Ci0gICAg
RlRfVUxvbmcgZXhwZWN0ZWRUYWJsZVNpemUgPSB0YWJsZVNpemU7CiAgICAgaWYgKGJ1ZmZlci0+
c2l6ZSgpICE9IHRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBGVF9V
TG9uZyBleHBlY3RlZFRhYmxlU2l6ZSA9IHRhYmxlU2l6ZTsKICAgICBGVF9FcnJvciBlcnJvciA9
IEZUX0xvYWRfU2ZudF9UYWJsZShmcmVlVHlwZUZhY2UsIHRhZywgMCwgcmVpbnRlcnByZXRfY2Fz
dDxGVF9CeXRlKj4oY29uc3RfY2FzdDxjaGFyKj4oYnVmZmVyLT5kYXRhKCkpKSwgJnRhYmxlU2l6
ZSk7CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBjYWlyb19mdF9zY2FsZWRfZm9udF91bmxvY2tf
ZmFjZShtX3NjYWxlZEZvbnQpOwotCi0gICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7Ci19Ci0K
LXZvaWQgRm9udFBsYXRmb3JtRGF0YTo6c2V0T3JpZW50YXRpb24oRm9udE9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKQotewotICAgIGlmICghbV9zY2FsZWRGb250IHx8IChtX29yaWVudGF0aW9uID09
IG9yaWVudGF0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1fc2NhbGVkRm9u
dCk7Ci0gICAgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOwotICAgIGJ1aWxkU2NhbGVkRm9u
dChjYWlyb19zY2FsZWRfZm9udF9nZXRfZm9udF9mYWNlKG1fc2NhbGVkRm9udCkpOworICAgIHJl
dHVybiBidWZmZXI7CiB9CiAKLXZvaWQgRm9udFBsYXRmb3JtRGF0YTo6c2V0U3ludGhldGljT2Js
aXF1ZShib29sIG5ld1N5bnRoZXRpY09ibGlxdWVWYWx1ZSkKLXsKLSAgICBpZiAobmV3U3ludGhl
dGljT2JsaXF1ZVZhbHVlID09IHN5bnRoZXRpY09ibGlxdWUoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgQVNTRVJUKG1fc2NhbGVkRm9udCk7Ci0gICAgbV9zeW50aGV0aWNPYmxpcXVlID0gbmV3
U3ludGhldGljT2JsaXF1ZVZhbHVlOwotICAgIGJ1aWxkU2NhbGVkRm9udChjYWlyb19zY2FsZWRf
Zm9udF9nZXRfZm9udF9mYWNlKG1fc2NhbGVkRm9udCkpOwotfQotCi19Cit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9HbHlwaFBhZ2VUcmVlTm9kZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwCmlu
ZGV4IDA1ZmNkMDIuLmNhYTRiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVOb2Rl
RnJlZVR5cGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiR2x5cGhQYWdlLmgiCiAKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2luY2x1
ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJVVEYxNlVDaGFyMzJJdGVyYXRvci5oIgogI2luY2x1ZGUg
PGNhaXJvLWZ0Lmg+CkBAIC00NSw3ICs0Niw4IEBAIGJvb2wgR2x5cGhQYWdlOjpmaWxsKFVDaGFy
KiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkKICAgICBjYWlyb19zY2FsZWRfZm9udF90
KiBzY2FsZWRGb250ID0gZm9udC5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCk7CiAgICAgQVNT
RVJUKHNjYWxlZEZvbnQpOwogCi0gICAgRlRfRmFjZSBmYWNlID0gY2Fpcm9fZnRfc2NhbGVkX2Zv
bnRfbG9ja19mYWNlKHNjYWxlZEZvbnQpOworICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRG
YWNlTG9ja2VyKHNjYWxlZEZvbnQpOworICAgIEZUX0ZhY2UgZmFjZSA9IGNhaXJvRnRGYWNlTG9j
a2VyLmZ0RmFjZSgpOwogICAgIGlmICghZmFjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC02NSw3ICs2Nyw2IEBAIGJvb2wgR2x5cGhQYWdlOjpmaWxsKFVDaGFyKiBidWZmZXIsIHVuc2ln
bmVkIGJ1ZmZlckxlbmd0aCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGNhaXJvX2Z0X3NjYWxl
ZF9mb250X3VubG9ja19mYWNlKHNjYWxlZEZvbnQpOwogICAgIHJldHVybiBoYXZlR2x5cGhzOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwCmluZGV4IDcwOWIyNTku
LjE2YWIzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogCisj
aW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKQEAgLTUzLDcg
KzU0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEZvbnQ6OnBsYXRmb3JtSW5pdCgp
CiB7Ci0gICAgaWYgKCFtX3BsYXRmb3JtRGF0YS5tX3NpemUpCisgICAgaWYgKCFtX3BsYXRmb3Jt
RGF0YS5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChtX3BsYXRmb3JtRGF0
YS5zY2FsZWRGb250KCkpOwpAQCAtNjUsMjAgKzY2LDI0IEBAIHZvaWQgRm9udDo6cGxhdGZvcm1J
bml0KCkKICAgICBmbG9hdCBjYXBIZWlnaHQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGZvbnRF
eHRlbnRzLmhlaWdodCk7CiAgICAgZmxvYXQgbGluZUdhcCA9IG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQoZm9udEV4dGVudHMuaGVpZ2h0IC0gZm9udEV4dGVudHMuYXNjZW50IC0gZm9udEV4dGVudHMu
ZGVzY2VudCk7CiAKLSAgICAvLyBJZiB0aGUgVVNFX1RZUE9fTUVUUklDUyBmbGFnIGlzIHNldCBp
biB0aGUgT1MvMiB0YWJsZSB0aGVuIHdlIHVzZSB0eXBvIG1ldHJpY3MgaW5zdGVhZC4KLSAgICBG
VF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvX2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZShtX3Bs
YXRmb3JtRGF0YS5zY2FsZWRGb250KCkpOwotICAgIGlmIChUVF9PUzIqIE9TMlRhYmxlID0gc3Rh
dGljX2Nhc3Q8VFRfT1MyKj4oRlRfR2V0X1NmbnRfVGFibGUoZnJlZVR5cGVGYWNlLCBmdF9zZm50
X29zMikpKSB7Ci0gICAgICAgIGNvbnN0IEZUX1Nob3J0IGtVc2VUeXBvTWV0cmljc01hc2sgPSAx
IDw8IDc7Ci0gICAgICAgIGlmIChPUzJUYWJsZS0+ZnNTZWxlY3Rpb24gJiBrVXNlVHlwb01ldHJp
Y3NNYXNrKSB7Ci0gICAgICAgICAgICAvLyBGVF9TaXplX01ldHJpY3M6Onlfc2NhbGUgaXMgaW4g
MTYuMTYgZml4ZWQgcG9pbnQgZm9ybWF0LgotICAgICAgICAgICAgLy8gSXRzIChmcmFjdGlvbmFs
KSB2YWx1ZSBpcyBhIGZhY3RvciB0aGF0IGNvbnZlcnRzIHZlcnRpY2FsIG1ldHJpY3MgZnJvbSBk
ZXNpZ24gdW5pdHMgdG8gdW5pdHMgb2YgMS82NCBwaXhlbHMuCi0gICAgICAgICAgICBkb3VibGUg
eXNjYWxlID0gKGZyZWVUeXBlRmFjZS0+c2l6ZS0+bWV0cmljcy55X3NjYWxlIC8gNjU1MzYuMCkg
LyA2NC4wOwotICAgICAgICAgICAgYXNjZW50ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh5c2Nh
bGUgKiBPUzJUYWJsZS0+c1R5cG9Bc2NlbmRlcik7Ci0gICAgICAgICAgICBkZXNjZW50ID0gLW5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoeXNjYWxlICogT1MyVGFibGUtPnNUeXBvRGVzY2VuZGVyKTsK
LSAgICAgICAgICAgIGxpbmVHYXAgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHlzY2FsZSAqIE9T
MlRhYmxlLT5zVHlwb0xpbmVHYXApOworICAgIHsKKyAgICAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIg
Y2Fpcm9GdEZhY2VMb2NrZXIobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9udCgpKTsKKworICAgICAg
ICAvLyBJZiB0aGUgVVNFX1RZUE9fTUVUUklDUyBmbGFnIGlzIHNldCBpbiB0aGUgT1MvMiB0YWJs
ZSB0aGVuIHdlIHVzZSB0eXBvIG1ldHJpY3MgaW5zdGVhZC4KKyAgICAgICAgRlRfRmFjZSBmcmVl
VHlwZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKKyAgICAgICAgVFRfT1MyKiBP
UzJUYWJsZSA9IGZyZWVUeXBlRmFjZSA/IHN0YXRpY19jYXN0PFRUX09TMio+KEZUX0dldF9TZm50
X1RhYmxlKGZyZWVUeXBlRmFjZSwgZnRfc2ZudF9vczIpKSA6IG51bGxwdHI7CisgICAgICAgIGlm
IChPUzJUYWJsZSkgeworICAgICAgICAgICAgY29uc3QgRlRfU2hvcnQga1VzZVR5cG9NZXRyaWNz
TWFzayA9IDEgPDwgNzsKKyAgICAgICAgICAgIGlmIChPUzJUYWJsZS0+ZnNTZWxlY3Rpb24gJiBr
VXNlVHlwb01ldHJpY3NNYXNrKSB7CisgICAgICAgICAgICAgICAgLy8gRlRfU2l6ZV9NZXRyaWNz
Ojp5X3NjYWxlIGlzIGluIDE2LjE2IGZpeGVkIHBvaW50IGZvcm1hdC4KKyAgICAgICAgICAgICAg
ICAvLyBJdHMgKGZyYWN0aW9uYWwpIHZhbHVlIGlzIGEgZmFjdG9yIHRoYXQgY29udmVydHMgdmVy
dGljYWwgbWV0cmljcyBmcm9tIGRlc2lnbiB1bml0cyB0byB1bml0cyBvZiAxLzY0IHBpeGVscy4K
KyAgICAgICAgICAgICAgICBkb3VibGUgeXNjYWxlID0gKGZyZWVUeXBlRmFjZS0+c2l6ZS0+bWV0
cmljcy55X3NjYWxlIC8gNjU1MzYuMCkgLyA2NC4wOworICAgICAgICAgICAgICAgIGFzY2VudCA9
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoeXNjYWxlICogT1MyVGFibGUtPnNUeXBvQXNjZW5kZXIp
OworICAgICAgICAgICAgICAgIGRlc2NlbnQgPSAtbmFycm93UHJlY2lzaW9uVG9GbG9hdCh5c2Nh
bGUgKiBPUzJUYWJsZS0+c1R5cG9EZXNjZW5kZXIpOworICAgICAgICAgICAgICAgIGxpbmVHYXAg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHlzY2FsZSAqIE9TMlRhYmxlLT5zVHlwb0xpbmVHYXAp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGNhaXJvX2Z0X3NjYWxlZF9m
b250X3VubG9ja19mYWNlKG1fcGxhdGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7CiAKICAgICBtX2Zv
bnRNZXRyaWNzLnNldEFzY2VudChhc2NlbnQpOwogICAgIG1fZm9udE1ldHJpY3Muc2V0RGVzY2Vu
dChkZXNjZW50KTsKQEAgLTEwMCw5ICsxMDUsOSBAQCB2b2lkIEZvbnQ6OnBsYXRmb3JtSW5pdCgp
CiAgICAgbV9zcGFjZVdpZHRoID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCgocGxhdGZvcm1EYXRh
KCkub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsKSA/IHRleHRFeHRlbnRzLnhfYWR2YW5jZSA6
IC10ZXh0RXh0ZW50cy55X2FkdmFuY2UpOwogCiAgICAgaWYgKChwbGF0Zm9ybURhdGEoKS5vcmll
bnRhdGlvbigpID09IFZlcnRpY2FsKSAmJiAhaXNUZXh0T3JpZW50YXRpb25GYWxsYmFjaygpKSB7
Ci0gICAgICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfbG9j
a19mYWNlKG1fcGxhdGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7CisgICAgICAgIENhaXJvRnRGYWNl
TG9ja2VyIGNhaXJvRnRGYWNlTG9ja2VyKG1fcGxhdGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7Cisg
ICAgICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7
CiAgICAgICAgIG1fZm9udE1ldHJpY3Muc2V0VW5pdHNQZXJFbShmcmVlVHlwZUZhY2UtPnVuaXRz
X3Blcl9FTSk7Ci0gICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X3VubG9ja19mYWNlKG1fcGxh
dGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7CiAgICAgfQogCiAgICAgbV9zeW50aGV0aWNCb2xkT2Zm
c2V0ID0gbV9wbGF0Zm9ybURhdGEuc3ludGhldGljQm9sZCgpID8gMS4wZiA6IDAuZjsKQEAgLTE3
OSwxNCArMTg0LDE0IEBAIGJvb2wgRm9udDo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2Vx
dWVuY2UoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsCiAgICAgaWYgKFVfRkFJTFVS
RShlcnJvcikgfHwgKHN0YXRpY19jYXN0PHNpemVfdD4obm9ybWFsaXplZExlbmd0aCkgPT0gbGVu
Z3RoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRlRfRmFjZSBmYWNlID0gY2Fpcm9f
ZnRfc2NhbGVkX2ZvbnRfbG9ja19mYWNlKG1fcGxhdGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7Cisg
ICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9wbGF0Zm9ybURhdGEuc2Nh
bGVkRm9udCgpKTsKKyAgICBGVF9GYWNlIGZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2Uo
KTsKICAgICBpZiAoIWZhY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChGY0Zy
ZWVUeXBlQ2hhckluZGV4KGZhY2UsIG5vcm1hbGl6ZWRDaGFyYWN0ZXJzWzBdKSkKICAgICAgICAg
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHRydWU7CiAKLSAgICBjYWlyb19mdF9zY2FsZWRf
Zm9udF91bmxvY2tfZmFjZShtX3BsYXRmb3JtRGF0YS5zY2FsZWRGb250KCkpOwogICAgIHJldHVy
biBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2VDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZh
Y2VDYWlyby5jcHAKaW5kZXggNGRkN2FlZS4uNjE0ODZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFj
ZUNhaXJvLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkhhcmZCdXp6RmFjZS5oIgogCisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJGb250LmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkds
eXBoQnVmZmVyLmgiCkBAIC01NywyMSArNTgsNiBAQCBzdHJ1Y3QgSGFyZkJ1enpGb250RGF0YSB7
CiAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogbV9jYWlyb1NjYWxlZEZvbnQ7CiB9OwogCi1jbGFz
cyBDYWlyb0Z0RmFjZUxvY2tlciB7Ci1wdWJsaWM6Ci0gICAgQ2Fpcm9GdEZhY2VMb2NrZXIoY2Fp
cm9fc2NhbGVkX2ZvbnRfdCogY2Fpcm9TY2FsZWRGb250KSA6IG1fc2NhbGVkRm9udChjYWlyb1Nj
YWxlZEZvbnQpIHsgfTsKLSAgICBGVF9GYWNlIGxvY2soKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGNhaXJvX2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZShtX3NjYWxlZEZvbnQpOwotICAgIH07Ci0g
ICAgfkNhaXJvRnRGYWNlTG9ja2VyKCkKLSAgICB7Ci0gICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9m
b250X3VubG9ja19mYWNlKG1fc2NhbGVkRm9udCk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBjYWly
b19zY2FsZWRfZm9udF90KiBtX3NjYWxlZEZvbnQ7Ci19OwotCiBzdGF0aWMgaGJfcG9zaXRpb25f
dCBmbG9hdFRvSGFyZkJ1enpQb3NpdGlvbihmbG9hdCB2YWx1ZSkKIHsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aGJfcG9zaXRpb25fdD4odmFsdWUgKiAoMSA8PCAxNikpOwpAQCAtMTc4LDkgKzE2
NCw5IEBAIHN0YXRpYyBoYl9ibG9iX3QqIGhhcmZCdXp6Q2Fpcm9HZXRUYWJsZShoYl9mYWNlX3Qq
LCBoYl90YWdfdCB0YWcsIHZvaWQqIHVzZXJEYXRhCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
Q2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIoc2NhbGVkRm9udCk7Ci0gICAgRlRf
RmFjZSBmdEZvbnQgPSBjYWlyb0Z0RmFjZUxvY2tlci5sb2NrKCk7CisgICAgRlRfRmFjZSBmdEZv
bnQgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKICAgICBpZiAoIWZ0Rm9udCkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRlRfVUxvbmcgdGFi
bGVTaXplID0gMDsKICAgICBGVF9FcnJvciBlcnJvciA9IEZUX0xvYWRfU2ZudF9UYWJsZShmdEZv
bnQsIHRhZywgMCwgMCwgJnRhYmxlU2l6ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277466</attachid>
            <date>2016-04-27 02:53:01 -0700</date>
            <delta_ts>2016-04-27 05:37:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-freetype-font-data.diff</filename>
            <type>text/plain</type>
            <size>34683</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOGMxY2JmMi4uNWUxMmVhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMDMsNiArMjIwMyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udEZlYXR1cmVTZXR0aW5ncy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJp
Y0ZhbWlsaWVzLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFJhbmdlcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0
aWxpdGllcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZGIyNzg4Li41YjA2YTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMTYtMDQtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIwMDA5NCk6IFtGcmVlVHlwZV0g
VmVydGljYWwgdGV4dCBpcyBicm9rZW4gYWZ0ZXIgcjIwMDA5NAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCBGcmVldHlw
ZSBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBjYWxsIGJ1aWxkU2NhbGVkRm9udCgpIHdoZW4gb3Jp
ZW50YXRpb24sIFN5bnRoZXRpY09ibGlxdWUKKyAgICAgICAgb3Igc2l6ZSBjaGFuZ2UsIGJ1dCB0
aGUgbmV3IHN0YXRpYyBjbG9uZSBtZXRob2RzIGRvbid0IGRvIHRoYXQuIEkgdGhpbmsgaXQncyB0
aGUgdGltZSB0byBzdG9wIHVzaW5nIG91ciBvd24KKyAgICAgICAgaGVhZGVyIGZvciBGb250UGxh
dGZvcm1EYXRhIGZvciB0aGUgRnJlZVR5cGUgaW1wbGVtZW50YXRpb24gdG8gbWFrZSBjcm9zcy1w
bGF0Zm9ybSBjaGFuZ2VzIGVhc2llciBhbmQgcHJldmVudAorICAgICAgICByZWdyZXNzaW9ucyBs
aWtlIHRoaXMgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBDb21w
aWxlIEZvbnRQbGF0Zm9ybURhdGEuY3BwIGZvciBhbGwgcG9ydHMuCisgICAgICAgICogUGxhdGZv
cm1NYWMuY21ha2U6IFJlbW92ZSBGb250UGxhdGZvcm1EYXRhLmNwcC4KKyAgICAgICAgKiBQbGF0
Zm9ybVdpbi5jbWFrZTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5jcHA6IFdlIG5lZWQgb3VyIG93biBjbG9uZSBtZXRob2RzIGluIHRoZSBGcmVl
VHlwZSBiYWNrZW5kLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURh
dGEuaDogTW92ZSBGcmVlVHlwZSBzcGVjaWZpYyBtZXRob2RzIGFuZCBtZW1iZXJzIGZyb20gdGhl
IG9sZCBoZWFkZXIgZmlsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWlyb0Z0RmFjZUxvY2tlcjo6Q2Fp
cm9GdEZhY2VMb2NrZXIpOiBNb3ZlIENhaXJvRnRGYWNlTG9ja2VyIGltcGxlbWVudGF0aW9uIGhl
cmUgZnJvbQorICAgICAgICBIYXJmQnV6ekZhY2VDYWlyby5jcHAgdG8gbWFrZSBpdCBhdmFpbGFi
bGUgdG8gb3RoZXIgY2xhc3NlcywgYW5kIG1ha2UgaXQgaGFuZGxlIHRoZSBjYXNlIG9mCisgICAg
ICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZSgpIHJldHVybmluZyBudWxscHRyLgor
ICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6On5DYWlyb0Z0RmFjZUxvY2tlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvRnRGYWNlTG9ja2VyOjpmdEZhY2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmZpbmRCZXN0Rm9udEdpdmVuRmFsbGJhY2tzKTogTW92ZSB0aGUgZmFsbGJhY2tz
IGltcGxlbWVudGF0aW9uIHRvIEZvbnRQbGF0Zm9ybURhdGEgd2hlcmUgaXQgYmVsb25ncworICAg
ICAgICBhbmQgaGVyZSBzaW1wbHkgdXNlIEZvbnRQbGF0Zm9ybURhdGE6OmZhbGxiYWNrcygpLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6
Rm9udFBsYXRmb3JtRGF0YSk6IFJlbW92ZSBtZW1iZXJzIGFscmVhZHkgaW5pdGlhbGl6ZWQgaW4g
dGhlIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9y
PSk6IEFkZCBtaXNzaW5nIG1lbWJlcnMgdG8gYmUgY29waWVkLgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFBsYXRmb3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEpOiBEbyBub3QgZnJlZSBtX3NjYWxl
ZEZvbnQgbWFudWFsbHkgc2luY2Ugd2UgYXJlIG5vdyB1c2luZyBhIHNtYXJ0IHBvaW50ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpjbG9uZVdpdGhPcmllbnRhdGlvbik6
IENhbGwgYnVpbGRTY2FsZWRGb250KCkgbGlrZSBzZXRPcmllbnRhdGlvbigpIGRpZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OmNsb25lV2l0aFN5bnRoZXRpY09ibGlxdWUp
OiBDYWxsIGJ1aWxkU2NhbGVkRm9udCgpIGxpa2Ugc2V0U3ludGhldGljT2JsaXF1ZSgpIGRpZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OmNsb25lV2l0aFNpemUpOiBDYWxs
IGJ1aWxkU2NhbGVkRm9udCgpLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6
ZmFsbGJhY2tzKTogTGF6aWx5IGluaXRpYWxpemUgZmFsbGJhY2tzIGlmIG5lZWRlZCBhbmQgcmV0
dXJuIGl0LgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0Vx
dWFsKTogT25seSBjb21wYXJlIEZyZWVUeXBlIHNwZWNpZmljIG1lbWJlcnMuCisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpidWlsZFNjYWxlZEZvbnQpOiBVc2UgUmVmUHRyIGZv
ciBtX3NjYWxlZEZvbnQuCisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpoYXND
b21wYXRpYmxlQ2hhcm1hcCk6IFVzZSBDYWlyb0Z0RmFjZUxvY2tlci4KKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUpOiBVcGRhdGUgdG8gcmV0dXJuIFJl
ZlB0ciBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIgYW5kIHVzZSBDYWlyb0Z0RmFjZUxvY2tlci4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6c2V0T3JpZW50YXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6c2V0U3ludGhldGljT2Js
aXF1ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvR2x5
cGhQYWdlVHJlZU5vZGVGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2U6
OmZpbGwpOiBVc2UgQ2Fpcm9GdEZhY2VMb2NrZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250OjpwbGF0Zm9ybUluaXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNh
blJlbmRlckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFyZkJ1enpDYWlyb0dldFRhYmxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDYWlyb0Z0RmFjZUxvY2tlcjo6Q2Fpcm9GdEZhY2VMb2NrZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6OmxvY2spOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6On5DYWlyb0Z0RmFjZUxvY2tlcik6IERlbGV0ZWQu
CisKIDIwMTYtMDQtMjYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3VwcG9ydCBsZWdhY3kgSFRUUCBoZWFkZXJzIGluIFdlYlNvY2tldHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggYWVhMzU3MS4uY2EzMWMwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTM0OCw3ICszNDgsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcAotICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAyMzJkNTE5Li5iZmFiNDE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybVdpbi5jbWFrZQpAQCAtNzQsNyArNzQsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKIAogICAgIHBsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAogCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmNwcAppbmRleCBiODQzZWZlLi4yMDBmNTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmNwcApAQCAtNjIsNiArNjIsNyBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxh
dGZvcm1EYXRhKENHRm9udFJlZiBjZ0ZvbnQsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQgog
fQogI2VuZGlmCiAKKyNpZiAhVVNFKEZSRUVUWVBFKQogRm9udFBsYXRmb3JtRGF0YSBGb250UGxh
dGZvcm1EYXRhOjpjbG9uZVdpdGhPcmllbnRhdGlvbihjb25zdCBGb250UGxhdGZvcm1EYXRhJiBz
b3VyY2UsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBGb250UGxhdGZvcm1E
YXRhIGNvcHkoc291cmNlKTsKQEAgLTgyLDUgKzgzLDYgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250
UGxhdGZvcm1EYXRhOjpjbG9uZVdpdGhTaXplKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHNvdXJj
ZSwKICAgICBjb3B5Lm1fc2l6ZSA9IHNpemU7CiAgICAgcmV0dXJuIGNvcHk7CiB9CisjZW5kaWYK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5oCmluZGV4IDBlY2QzMTkuLmE0MzQwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTIyLDExICsyMiw2
IEBACiAgKgogICovCiAKLS8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeSB1bnRpbCBhbGwgcG9y
dHMgc3dpdGNoIHRvIHVzaW5nIHRoaXMgZmlsZS4KLSNpZiBQTEFURk9STShFRkwpIHx8IFBMQVRG
T1JNKEdUSykKLSNpbmNsdWRlICJmcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmgiCi0jZWxzZQot
CiAjaWZuZGVmIEZvbnRQbGF0Zm9ybURhdGFfaAogI2RlZmluZSBGb250UGxhdGZvcm1EYXRhX2gK
IApAQCAtNDIsNiArMzcsMTIgQEAKICNpbmNsdWRlIDxjYWlyby5oPgogI2VuZGlmCiAKKyNpZiBV
U0UoRlJFRVRZUEUpCisjaW5jbHVkZSAiSGFyZkJ1enpGYWNlLmgiCisjaW5jbHVkZSAiT3BlblR5
cGVWZXJ0aWNhbERhdGEuaCIKK3R5cGVkZWYgc3RydWN0IF9GY0ZvbnRTZXQgRmNGb250U2V0Owor
I2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0
IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CkBAIC0xMDgsNiArMTA5LDEyIEBAIHB1Ymxp
YzoKICNlbmRpZgogI2VuZGlmCiAKKyNpZiBVU0UoRlJFRVRZUEUpCisgICAgRm9udFBsYXRmb3Jt
RGF0YShGY1BhdHRlcm4qLCBjb25zdCBGb250RGVzY3JpcHRpb24mKTsKKyAgICBGb250UGxhdGZv
cm1EYXRhKGNhaXJvX2ZvbnRfZmFjZV90KiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBz
eW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUpOworICAgIH5Gb250UGxhdGZvcm1E
YXRhKCk7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTikKICAgICBIRk9OVCBoZm9udCgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9udCA/IG1fZm9udC0+Z2V0KCkgOiAwOyB9CiAgICAgYm9vbCB1c2VH
REkoKSBjb25zdCB7IHJldHVybiBtX3VzZUdESTsgfQpAQCAtMTQ5LDYgKzE1NiwxMyBAQCBwdWJs
aWM6CiAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2NhbGVkRm9udC5nZXQoKTsgfQogI2VuZGlmCiAKKyNpZiBVU0UoRlJFRVRZUEUpCisgICAg
SGFyZkJ1enpGYWNlKiBoYXJmQnV6ekZhY2UoKSBjb25zdDsKKyAgICBib29sIGhhc0NvbXBhdGli
bGVDaGFybWFwKCk7CisgICAgUGFzc1JlZlB0cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4gdmVydGlj
YWxEYXRhKCkgY29uc3Q7CisgICAgRmNGb250U2V0KiBmYWxsYmFja3MoKSBjb25zdDsKKyNlbmRp
ZgorCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewogI2lmIFBMQVRGT1JNKFdJTikg
JiYgIVVTRShDQUlSTykKQEAgLTE2Nyw3ICsxODEsMTEgQEAgcHVibGljOgogI2VuZGlmCiAgICAg
fQogCisjaWYgVVNFKEZSRUVUWVBFKQorICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShj
b25zdCBGb250UGxhdGZvcm1EYXRhJik7CisjZWxzZQogICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9w
ZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJikgPSBkZWZhdWx0OworI2VuZGlmCiAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAg
ICAgewpAQCAtMTk2LDcgKzIxNCw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBM
QVRGT1JNKFdJTikgfHwgVVNFKEZSRUVUWVBFKQogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTIxMiw2ICsy
MzAsOSBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIHBsYXRmb3JtRGF0
YUluaXQoSEZPTlQsIGZsb2F0IHNpemUsIEhEQywgV0NIQVIqIGZhY2VOYW1lKTsKICNlbmRpZgor
I2lmIFVTRShGUkVFVFlQRSkKKyAgICB2b2lkIGJ1aWxkU2NhbGVkRm9udChjYWlyb19mb250X2Zh
Y2VfdCopOworI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBGSVhNRTogR2V0
IHJpZCBvZiBvbmUgb2YgdGhlc2UuIFRoZXNlIHR3byBmb250cyBhcmUgc3VidGx5IGRpZmZlcmVu
dCwgYW5kIGl0IGlzIG5vdCBvYnZpb3VzIHdoaWNoIG9uZSB0byB1c2Ugd2hlcmUuCkBAIC0yMjcs
NiArMjQ4LDExIEBAIHByaXZhdGU6CiAjaWYgVVNFKENBSVJPKQogICAgIFJlZlB0cjxjYWlyb19z
Y2FsZWRfZm9udF90PiBtX3NjYWxlZEZvbnQ7CiAjZW5kaWYKKyNpZiBVU0UoRlJFRVRZUEUpCisg
ICAgUmVmUHRyPEZjUGF0dGVybj4gbV9wYXR0ZXJuOworICAgIG11dGFibGUgRmNGb250U2V0KiBt
X2ZhbGxiYWNrcyB7IG51bGxwdHIgfTsKKyAgICBtdXRhYmxlIFJlZlB0cjxIYXJmQnV6ekZhY2U+
IG1faGFyZkJ1enpGYWNlOworI2VuZGlmCiAKICAgICAvLyBUaGUgdmFsdWVzIGJlbG93IGFyZSBj
b21tb24gdG8gYWxsIHBvcnRzCiAgICAgLy8gRklYTUU6IElmIHRoZXkncmUgY29tbW9uIHRvIGFs
bCBwb3J0cywgdGhleSBzaG91bGQgbW92ZSB0byBGb250CkBAIC0yNDksNiArMjc1LDkgQEAgcHJp
dmF0ZToKICNpZiBQTEFURk9STShXSU4pCiAgICAgYm9vbCBtX3VzZUdESSB7IGZhbHNlIH07CiAj
ZW5kaWYKKyNpZiBVU0UoRlJFRVRZUEUpCisgICAgYm9vbCBtX2ZpeGVkV2lkdGggeyBmYWxzZSB9
OworI2VuZGlmCiB9OwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTI2Nyw1ICsyOTYsMyBAQCBpbmxp
bmUgTlNGb250ICp0b05TRm9udChDVEZvbnRSZWYgZm9udCkKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEZvbnRQbGF0Zm9ybURhdGFfaAotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVz
LmNwcAppbmRleCAxNWU4ZmZjLi5iYjBiYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCkBAIC00NSw4
ICs0NSwyNiBAQAogI2luY2x1ZGUgPGNhaXJvLWdsLmg+CiAjZW5kaWYKIAorI2lmIFVTRShGUkVF
VFlQRSkKKyNpbmNsdWRlIDxjYWlyby1mdC5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorI2lmIFVTRShGUkVFVFlQRSkKK0NhaXJvRnRGYWNlTG9ja2VyOjpDYWlyb0Z0RmFjZUxv
Y2tlcihjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250KQorICAgIDogbV9zY2FsZWRGb250
KHNjYWxlZEZvbnQpCisgICAgLCBtX2Z0RmFjZShjYWlyb19mdF9zY2FsZWRfZm9udF9sb2NrX2Zh
Y2Uoc2NhbGVkRm9udCkpCit7Cit9CisKK0NhaXJvRnRGYWNlTG9ja2VyOjp+Q2Fpcm9GdEZhY2VM
b2NrZXIoKQoreworICAgIGlmIChtX2Z0RmFjZSkKKyAgICAgICAgY2Fpcm9fZnRfc2NhbGVkX2Zv
bnRfdW5sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKK30KKyNlbmRpZgorCiB2b2lkIGNvcHlDb250
ZXh0UHJvcGVydGllcyhjYWlyb190KiBzcmNDciwgY2Fpcm9fdCogZHN0Q3IpCiB7CiAgICAgY2Fp
cm9fc2V0X2FudGlhbGlhcyhkc3RDciwgY2Fpcm9fZ2V0X2FudGlhbGlhcyhzcmNDcikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRp
bGl0aWVzLmgKaW5kZXggMDczNDQ4Yi4uZmI0OTg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oCkBAIC0zNiw2
ICszNiwxMCBAQAogLy8gVGhpcyBmdW5jdGlvbiB3YXMgYWRkZWQgcHJldHR5IG11Y2ggc2ltdWx0
YW5lb3VzIHRvIHdoZW4gMS4xMyB3YXMgYnJhbmNoZWQuCiAjZGVmaW5lIEhBVkVfQ0FJUk9fU1VS
RkFDRV9TRVRfREVWSUNFX1NDQUxFIENBSVJPX1ZFUlNJT05fTUFKT1IgPiAxIHx8IChDQUlST19W
RVJTSU9OX01BSk9SID09IDEgJiYgQ0FJUk9fVkVSU0lPTl9NSU5PUiA+PSAxMykKIAorI2lmIFVT
RShGUkVFVFlQRSkKK3R5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiBGVF9GYWNlOworI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIENv
bG9yOwpAQCAtNDYsNiArNTAsMjAgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIFBhdGg7CiBjbGFz
cyBSZWdpb247CiAKKyNpZiBVU0UoRlJFRVRZUEUpCitjbGFzcyBDYWlyb0Z0RmFjZUxvY2tlciB7
CitwdWJsaWM6CisgICAgQ2Fpcm9GdEZhY2VMb2NrZXIoY2Fpcm9fc2NhbGVkX2ZvbnRfdCopOwor
ICAgIH5DYWlyb0Z0RmFjZUxvY2tlcigpOworCisgICAgRlRfRmFjZSBmdEZhY2UoKSBjb25zdCB7
IHJldHVybiBtX2Z0RmFjZTsgfQorCitwcml2YXRlOgorICAgIGNhaXJvX3NjYWxlZF9mb250X3Qq
IG1fc2NhbGVkRm9udCB7IG51bGxwdHIgfTsKKyAgICBGVF9GYWNlIG1fZnRGYWNlIHsgbnVsbHB0
ciB9OworfTsKKyNlbmRpZgorCiB2b2lkIGNvcHlDb250ZXh0UHJvcGVydGllcyhjYWlyb190KiBz
cmNDciwgY2Fpcm9fdCogZHN0Q3IpOwogdm9pZCBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNhaXJv
X3QqLCBjb25zdCBDb2xvciYpOwogdm9pZCBhcHBlbmRQYXRoVG9DYWlyb0NvbnRleHQoY2Fpcm9f
dCogdG8sIGNhaXJvX3QqIGZyb20pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4
IGViMDNkY2QuLjMzMzMzN2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC02
MywxOCArNjMsMTAgQEAgc3RhdGljIFJlZlB0cjxGY1BhdHRlcm4+IGNyZWF0ZUZvbnRDb25maWdQ
YXR0ZXJuRm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmEKIAogc3RhdGljIFJlZlB0cjxG
Y1BhdHRlcm4+IGZpbmRCZXN0Rm9udEdpdmVuRmFsbGJhY2tzKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIGZvbnREYXRhLCBGY1BhdHRlcm4qIHBhdHRlcm4pCiB7Ci0gICAgaWYgKCFmb250RGF0YS5t
X3BhdHRlcm4pCisgICAgRmNGb250U2V0KiBzZXRzW10gPSB7IGZvbnREYXRhLmZhbGxiYWNrcygp
IH07CisgICAgaWYgKCFzZXRzWzBdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlm
ICghZm9udERhdGEubV9mYWxsYmFja3MpIHsKLSAgICAgICAgRmNSZXN1bHQgZm9udENvbmZpZ1Jl
c3VsdDsKLSAgICAgICAgZm9udERhdGEubV9mYWxsYmFja3MgPSBGY0ZvbnRTb3J0KG51bGxwdHIs
IGZvbnREYXRhLm1fcGF0dGVybi5nZXQoKSwgRmNUcnVlLCBudWxscHRyLCAmZm9udENvbmZpZ1Jl
c3VsdCk7Ci0gICAgfQotCi0gICAgaWYgKCFmb250RGF0YS5tX2ZhbGxiYWNrcykKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBGY0ZvbnRTZXQqIHNldHNbXSA9IHsgZm9udERhdGEubV9m
YWxsYmFja3MgfTsKICAgICBGY1Jlc3VsdCBmb250Q29uZmlnUmVzdWx0OwogICAgIHJldHVybiBG
Y0ZvbnRTZXRNYXRjaChudWxscHRyLCBzZXRzLCAxLCBwYXR0ZXJuLCAmZm9udENvbmZpZ1Jlc3Vs
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGIxMmMyYTIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLgot
ICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20K
LSAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgotICogQ29w
eXJpZ2h0IChDKSAyMDA3IFBpb25lZXIgUmVzZWFyY2ggQ2VudGVyIFVTQSwgSW5jLgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQot
I2lmbmRlZiBGb250UGxhdGZvcm1EYXRhRnJlZVR5cGVfaAotI2RlZmluZSBGb250UGxhdGZvcm1E
YXRhRnJlZVR5cGVfaAotCi0jaW5jbHVkZSAiRm9udENhY2hlLmgiCi0jaW5jbHVkZSAiRm9udERl
c2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKLSNpbmNsdWRlICJIYXJmQnV6
ekZhY2UuaCIKLSNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIgotI2luY2x1ZGUgIlJl
ZlB0ckNhaXJvLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVGV4dEZs
YWdzLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0
aW9ucy5oPgotCi10eXBlZGVmIHN0cnVjdCBfRmNGb250U2V0IEZjRm9udFNldDsKLWNsYXNzIEhh
cmZCdXp6RmFjZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGb250UGxhdGZvcm1E
YXRhIHsKLXB1YmxpYzoKLSAgICBGb250UGxhdGZvcm1EYXRhKFdURjo6SGFzaFRhYmxlRGVsZXRl
ZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX2ZhbGxiYWNrcygwKQotICAgICAgICAsIG1fc2l6ZSgw
KQotICAgICAgICAsIG1fc3ludGhldGljQm9sZChmYWxzZSkKLSAgICAgICAgLCBtX3N5bnRoZXRp
Y09ibGlxdWUoZmFsc2UpCi0gICAgICAgICwgbV9zY2FsZWRGb250KGhhc2hUYWJsZURlbGV0ZWRG
b250VmFsdWUoKSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKEhvcml6b250YWwpCi0gICAgICAg
IHsgfQotCi0gICAgRm9udFBsYXRmb3JtRGF0YSgpCi0gICAgICAgIDogbV9mYWxsYmFja3MoMCkK
LSAgICAgICAgLCBtX3NpemUoMCkKLSAgICAgICAgLCBtX3N5bnRoZXRpY0JvbGQoZmFsc2UpCi0g
ICAgICAgICwgbV9zeW50aGV0aWNPYmxpcXVlKGZhbHNlKQotICAgICAgICAsIG1fc2NhbGVkRm9u
dCgwKQotICAgICAgICAsIG1fb3JpZW50YXRpb24oSG9yaXpvbnRhbCkKLSAgICAgICAgeyB9Ci0K
LSAgICBGb250UGxhdGZvcm1EYXRhKEZjUGF0dGVybiosIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYp
OwotICAgIEZvbnRQbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9mYWNlX3QqLCBjb25zdCBGb250RGVz
Y3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljKTsKLSAgICBGb250UGxhdGZvcm1EYXRh
KGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMpOwotICAgIEZvbnRQbGF0Zm9ybURh
dGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwotICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYsIGZsb2F0IHNpemUpOwotCi0gICAgc3RhdGljIEZvbnRQbGF0Zm9y
bURhdGEgY2xvbmVXaXRoT3JpZW50YXRpb24oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIEZvbnRP
cmllbnRhdGlvbik7Ci0gICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgY2xvbmVXaXRoU3ludGhl
dGljT2JsaXF1ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgYm9vbCk7Ci0gICAgc3RhdGljIEZv
bnRQbGF0Zm9ybURhdGEgY2xvbmVXaXRoU2l6ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgZmxv
YXQpOwotCi0gICAgfkZvbnRQbGF0Zm9ybURhdGEoKTsKLQotICAgIEhhcmZCdXp6RmFjZSogaGFy
ZkJ1enpGYWNlKCkgY29uc3Q7Ci0KLSAgICBib29sIGlzRml4ZWRQaXRjaCgpIGNvbnN0OwotICAg
IGZsb2F0IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICB2b2lkIHNldFNpemUo
ZmxvYXQgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9Ci0gICAgYm9vbCBzeW50aGV0aWNCb2xkKCkg
Y29uc3QgeyByZXR1cm4gbV9zeW50aGV0aWNCb2xkOyB9Ci0gICAgYm9vbCBzeW50aGV0aWNPYmxp
cXVlKCkgY29uc3QgeyByZXR1cm4gbV9zeW50aGV0aWNPYmxpcXVlOyB9Ci0gICAgdm9pZCBzZXRT
eW50aGV0aWNPYmxpcXVlKGJvb2wpOwotICAgIGJvb2wgaGFzQ29tcGF0aWJsZUNoYXJtYXAoKTsK
LQotICAgIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3Jp
ZW50YXRpb247IH0KLSAgICB2b2lkIHNldE9yaWVudGF0aW9uKEZvbnRPcmllbnRhdGlvbik7Ci0g
ICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0OwotICAgIFBhc3NSZWZQdHI8T3BlblR5cGVWZXJ0aWNhbERhdGE+IHZlcnRpY2FsRGF0
YSgpIGNvbnN0OwotCi0gICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2NhbGVkRm9udDsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gUHRySGFzaDxjYWlyb19zY2FsZWRfZm9udF90Kj46Omhhc2go
bV9zY2FsZWRGb250KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYpIGNvbnN0OwotICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25z
dCBGb250UGxhdGZvcm1EYXRhJik7Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zY2FsZWRGb250ID09IGhhc2hUYWJsZURl
bGV0ZWRGb250VmFsdWUoKTsKLSAgICB9Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgU3RyaW5nIGRl
c2NyaXB0aW9uKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIFJlZlB0cjxGY1BhdHRlcm4+IG1fcGF0
dGVybjsKLSAgICBtdXRhYmxlIEZjRm9udFNldCogbV9mYWxsYmFja3M7IC8vIEluaXRpYWxpemVk
IGxhemlseS4KLSAgICBmbG9hdCBtX3NpemU7Ci0gICAgYm9vbCBtX3N5bnRoZXRpY0JvbGQ7Ci0g
ICAgYm9vbCBtX3N5bnRoZXRpY09ibGlxdWU7Ci0gICAgYm9vbCBtX2ZpeGVkV2lkdGg7Ci0gICAg
Y2Fpcm9fc2NhbGVkX2ZvbnRfdCogbV9zY2FsZWRGb250OwotICAgIG11dGFibGUgUmVmUHRyPEhh
cmZCdXp6RmFjZT4gbV9oYXJmQnV6ekZhY2U7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBidWlsZFNj
YWxlZEZvbnQoY2Fpcm9fZm9udF9mYWNlX3QqKTsKLSAgICBzdGF0aWMgY2Fpcm9fc2NhbGVkX2Zv
bnRfdCogaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2Fpcm9fc2NhbGVkX2ZvbnRfdCo+KC0xKTsgfQotCi0gICAgRm9udE9yaWVudGF0aW9uIG1f
b3JpZW50YXRpb247Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBGb250UGxhdGZvcm1EYXRhRnJlZVR5
cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggMzc4
Nzk2ZS4uNWJjMmUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCkBAIC0yNSwxMCArMjUsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJG
b250UGxhdGZvcm1EYXRhLmgiCiAKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgorI2luY2x1
ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUg
IlJlZlB0ckNhaXJvLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8Y2Fp
cm8tZnQuaD4KLSNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPGZvbnRjb25maWcvZmNmcmVl
dHlwZS5oPgogI2luY2x1ZGUgPGZ0MmJ1aWxkLmg+CiAjaW5jbHVkZSBGVF9UUlVFVFlQRV9UQUJM
RVNfSApAQCAtMTM2LDEyICsxMzcsNyBAQCBzdGF0aWMgRmNQYXR0ZXJuKiBnZXREZWZhdWx0Rm9u
dGNvbmZpZ09wdGlvbnMoKQogCiBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEZj
UGF0dGVybiogcGF0dGVybiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24p
CiAgICAgOiBtX3BhdHRlcm4ocGF0dGVybikKLSAgICAsIG1fZmFsbGJhY2tzKG51bGxwdHIpCiAg
ICAgLCBtX3NpemUoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkpCi0gICAgLCBt
X3N5bnRoZXRpY0JvbGQoZmFsc2UpCi0gICAgLCBtX3N5bnRoZXRpY09ibGlxdWUoZmFsc2UpCi0g
ICAgLCBtX2ZpeGVkV2lkdGgoZmFsc2UpCi0gICAgLCBtX3NjYWxlZEZvbnQobnVsbHB0cikKICAg
ICAsIG1fb3JpZW50YXRpb24oZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpCiB7CiAgICAg
QVNTRVJUKG1fcGF0dGVybik7CkBAIC0xNzUsMzQgKzE3MSwxNyBAQCBGb250UGxhdGZvcm1EYXRh
OjpGb250UGxhdGZvcm1EYXRhKEZjUGF0dGVybiogcGF0dGVybiwgY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmbwogICAgIGJ1aWxkU2NhbGVkRm9udChmb250RmFjZS5nZXQoKSk7CiB9CiAKLUZvbnRQ
bGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29s
IGl0YWxpYykKLSAgICA6IG1fZmFsbGJhY2tzKG51bGxwdHIpCi0gICAgLCBtX3NpemUoc2l6ZSkK
LSAgICAsIG1fc3ludGhldGljQm9sZChib2xkKQotICAgICwgbV9zeW50aGV0aWNPYmxpcXVlKGl0
YWxpYykKLSAgICAsIG1fZml4ZWRXaWR0aChmYWxzZSkKLSAgICAsIG1fc2NhbGVkRm9udChudWxs
cHRyKQotICAgICwgbV9vcmllbnRhdGlvbihIb3Jpem9udGFsKQotewotICAgIC8vIFdlIGNhbm5v
dCBjcmVhdGUgYSBzY2FsZWQgZm9udCBoZXJlLgotfQotCiBGb250UGxhdGZvcm1EYXRhOjpGb250
UGxhdGZvcm1EYXRhKGNhaXJvX2ZvbnRfZmFjZV90KiBmb250RmFjZSwgY29uc3QgRm9udERlc2Ny
aXB0aW9uJiBkZXNjcmlwdGlvbiwgYm9vbCBib2xkLCBib29sIGl0YWxpYykKLSAgICA6IG1fZmFs
bGJhY2tzKG51bGxwdHIpCi0gICAgLCBtX3NpemUoZGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNp
emUoKSkKKyAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpKQorICAg
ICwgbV9vcmllbnRhdGlvbihkZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKQogICAgICwgbV9zeW50
aGV0aWNCb2xkKGJvbGQpCiAgICAgLCBtX3N5bnRoZXRpY09ibGlxdWUoaXRhbGljKQotICAgICwg
bV9maXhlZFdpZHRoKGZhbHNlKQotICAgICwgbV9zY2FsZWRGb250KG51bGxwdHIpCi0gICAgLCBt
X29yaWVudGF0aW9uKGRlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpCiB7CiAgICAgYnVpbGRTY2Fs
ZWRGb250KGZvbnRGYWNlKTsKIAotICAgIEZUX0ZhY2UgZm9udENvbmZpZ0ZhY2UgPSBjYWlyb19m
dF9zY2FsZWRfZm9udF9sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKLSAgICBpZiAoZm9udENvbmZp
Z0ZhY2UpIHsKKyAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxl
ZEZvbnQuZ2V0KCkpOworICAgIGlmIChGVF9GYWNlIGZvbnRDb25maWdGYWNlID0gY2Fpcm9GdEZh
Y2VMb2NrZXIuZnRGYWNlKCkpCiAgICAgICAgIG1fZml4ZWRXaWR0aCA9IGZvbnRDb25maWdGYWNl
LT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX0ZJWEVEX1dJRFRIOwotICAgICAgICBjYWlyb19m
dF9zY2FsZWRfZm9udF91bmxvY2tfZmFjZShtX3NjYWxlZEZvbnQpOwotICAgIH0KIH0KIAogRm9u
dFBsYXRmb3JtRGF0YSYgRm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIG90aGVyKQpAQCAtMjEyLDcwICsxOTEsNTUgQEAgRm9udFBsYXRmb3JtRGF0YSYg
Rm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVy
KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7Cisg
ICAgbV9vcmllbnRhdGlvbiA9IG90aGVyLm1fb3JpZW50YXRpb247CisgICAgbV93aWR0aFZhcmlh
bnQgPSBvdGhlci5tX3dpZHRoVmFyaWFudDsKKyAgICBtX3RleHRSZW5kZXJpbmdNb2RlID0gb3Ro
ZXIubV90ZXh0UmVuZGVyaW5nTW9kZTsKKwogICAgIG1fc3ludGhldGljQm9sZCA9IG90aGVyLm1f
c3ludGhldGljQm9sZDsKICAgICBtX3N5bnRoZXRpY09ibGlxdWUgPSBvdGhlci5tX3N5bnRoZXRp
Y09ibGlxdWU7CisgICAgbV9pc0NvbG9yQml0bWFwRm9udCA9IG90aGVyLm1faXNDb2xvckJpdG1h
cEZvbnQ7CisgICAgbV9pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSA9IG90aGVyLm1faXNIYXNoVGFi
bGVEZWxldGVkVmFsdWU7CisgICAgbV9pc1N5c3RlbUZvbnQgPSBvdGhlci5tX2lzU3lzdGVtRm9u
dDsKKwogICAgIG1fZml4ZWRXaWR0aCA9IG90aGVyLm1fZml4ZWRXaWR0aDsKICAgICBtX3BhdHRl
cm4gPSBvdGhlci5tX3BhdHRlcm47Ci0gICAgbV9vcmllbnRhdGlvbiA9IG90aGVyLm1fb3JpZW50
YXRpb247CiAKKyAgICAvLyBUaGlzIHdpbGwgYmUgcmUtY3JlYXRlZCBvbiBkZW1hbmQuCiAgICAg
aWYgKG1fZmFsbGJhY2tzKSB7CiAgICAgICAgIEZjRm9udFNldERlc3Ryb3kobV9mYWxsYmFja3Mp
OwotICAgICAgICAvLyBUaGlzIHdpbGwgYmUgcmUtY3JlYXRlZCBvbiBkZW1hbmQuCiAgICAgICAg
IG1fZmFsbGJhY2tzID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAobV9zY2FsZWRGb250ICYm
IG1fc2NhbGVkRm9udCAhPSBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCkpCi0gICAgICAgIGNh
aXJvX3NjYWxlZF9mb250X2Rlc3Ryb3kobV9zY2FsZWRGb250KTsKLSAgICBtX3NjYWxlZEZvbnQg
PSBjYWlyb19zY2FsZWRfZm9udF9yZWZlcmVuY2Uob3RoZXIubV9zY2FsZWRGb250KTsKLQorICAg
IG1fc2NhbGVkRm9udCA9IG90aGVyLm1fc2NhbGVkRm9udDsKICAgICBtX2hhcmZCdXp6RmFjZSA9
IG90aGVyLm1faGFyZkJ1enpGYWNlOwogCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1Gb250UGxh
dGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVy
KQotICAgIDogbV9mYWxsYmFja3MobnVsbHB0cikKLSAgICAsIG1fc2NhbGVkRm9udChudWxscHRy
KQotICAgICwgbV9oYXJmQnV6ekZhY2Uob3RoZXIubV9oYXJmQnV6ekZhY2UpCi17Ci0gICAgKnRo
aXMgPSBvdGhlcjsKLX0KLQotRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBvdGhlciwgZmxvYXQgc2l6ZSkKLSAgICA6IG1fZmFsbGJhY2tz
KG51bGxwdHIpCi0gICAgLCBtX3NjYWxlZEZvbnQobnVsbHB0cikKLSAgICAsIG1faGFyZkJ1enpG
YWNlKG90aGVyLm1faGFyZkJ1enpGYWNlKQotewotICAgICp0aGlzID0gb3RoZXI7Ci0KLSAgICAv
LyBXZSBuZWVkIHRvIHJlaW5pdGlhbGl6ZSB0aGUgaW5zdGFuY2UsIGJlY2F1c2UgdGhlIGRpZmZl
cmVuY2UgaW4gc2l6ZSAKLSAgICAvLyBuZWNlc3NpdGF0ZXMgYSBuZXcgc2NhbGVkIGZvbnQgaW5z
dGFuY2UuCi0gICAgbV9zaXplID0gc2l6ZTsKLSAgICBidWlsZFNjYWxlZEZvbnQoY2Fpcm9fc2Nh
bGVkX2ZvbnRfZ2V0X2ZvbnRfZmFjZShtX3NjYWxlZEZvbnQpKTsKLX0KLQogRm9udFBsYXRmb3Jt
RGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEoKQogewotICAgIGlmIChtX2ZhbGxiYWNrcykgeworICAg
IGlmIChtX2ZhbGxiYWNrcykKICAgICAgICAgRmNGb250U2V0RGVzdHJveShtX2ZhbGxiYWNrcyk7
Ci0gICAgICAgIG1fZmFsbGJhY2tzID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAobV9zY2Fs
ZWRGb250ICYmIG1fc2NhbGVkRm9udCAhPSBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCkpCi0g
ICAgICAgIGNhaXJvX3NjYWxlZF9mb250X2Rlc3Ryb3kobV9zY2FsZWRGb250KTsKIH0KIAogRm9u
dFBsYXRmb3JtRGF0YSBGb250UGxhdGZvcm1EYXRhOjpjbG9uZVdpdGhPcmllbnRhdGlvbihjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBzb3VyY2UsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
IHsKICAgICBGb250UGxhdGZvcm1EYXRhIGNvcHkoc291cmNlKTsKLSAgICBjb3B5Lm1fb3JpZW50
YXRpb24gPSBvcmllbnRhdGlvbjsKKyAgICBpZiAoY29weS5tX3NjYWxlZEZvbnQgJiYgY29weS5t
X29yaWVudGF0aW9uICE9IG9yaWVudGF0aW9uKSB7CisgICAgICAgIGNvcHkubV9vcmllbnRhdGlv
biA9IG9yaWVudGF0aW9uOworICAgICAgICBjb3B5LmJ1aWxkU2NhbGVkRm9udChjYWlyb19zY2Fs
ZWRfZm9udF9nZXRfZm9udF9mYWNlKGNvcHkubV9zY2FsZWRGb250LmdldCgpKSk7CisgICAgfQog
ICAgIHJldHVybiBjb3B5OwogfQogCiBGb250UGxhdGZvcm1EYXRhIEZvbnRQbGF0Zm9ybURhdGE6
OmNsb25lV2l0aFN5bnRoZXRpY09ibGlxdWUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgc291cmNl
LCBib29sIHN5bnRoZXRpY09ibGlxdWUpCiB7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBjb3B5KHNv
dXJjZSk7Ci0gICAgY29weS5tX3N5bnRoZXRpY09ibGlxdWUgPSBzeW50aGV0aWNPYmxpcXVlOwor
ICAgIGlmIChjb3B5Lm1fc3ludGhldGljT2JsaXF1ZSAhPSBzeW50aGV0aWNPYmxpcXVlKSB7Cisg
ICAgICAgIGNvcHkubV9zeW50aGV0aWNPYmxpcXVlID0gc3ludGhldGljT2JsaXF1ZTsKKyAgICAg
ICAgQVNTRVJUKGNvcHkubV9zY2FsZWRGb250LmdldCgpKTsKKyAgICAgICAgY29weS5idWlsZFNj
YWxlZEZvbnQoY2Fpcm9fc2NhbGVkX2ZvbnRfZ2V0X2ZvbnRfZmFjZShjb3B5Lm1fc2NhbGVkRm9u
dC5nZXQoKSkpOworICAgIH0KICAgICByZXR1cm4gY29weTsKIH0KIApAQCAtMjgzLDYgKzI0Nywx
MCBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRQbGF0Zm9ybURhdGE6OmNsb25lV2l0aFNpemUoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgc291cmNlLAogewogICAgIEZvbnRQbGF0Zm9ybURhdGEgY29w
eShzb3VyY2UpOwogICAgIGNvcHkubV9zaXplID0gc2l6ZTsKKyAgICAvLyBXZSBuZWVkIHRvIHJl
aW5pdGlhbGl6ZSB0aGUgaW5zdGFuY2UsIGJlY2F1c2UgdGhlIGRpZmZlcmVuY2UgaW4gc2l6ZQor
ICAgIC8vIG5lY2Vzc2l0YXRlcyBhIG5ldyBzY2FsZWQgZm9udCBpbnN0YW5jZS4KKyAgICBBU1NF
UlQoY29weS5tX3NjYWxlZEZvbnQuZ2V0KCkpOworICAgIGNvcHkuYnVpbGRTY2FsZWRGb250KGNh
aXJvX3NjYWxlZF9mb250X2dldF9mb250X2ZhY2UoY29weS5tX3NjYWxlZEZvbnQuZ2V0KCkpKTsK
ICAgICByZXR1cm4gY29weTsKIH0KIApAQCAtMjk0LDEyICsyNjIsMjQgQEAgSGFyZkJ1enpGYWNl
KiBGb250UGxhdGZvcm1EYXRhOjpoYXJmQnV6ekZhY2UoKSBjb25zdAogICAgIHJldHVybiBtX2hh
cmZCdXp6RmFjZS5nZXQoKTsKIH0KIAorRmNGb250U2V0KiBGb250UGxhdGZvcm1EYXRhOjpmYWxs
YmFja3MoKSBjb25zdAoreworICAgIGlmIChtX2ZhbGxiYWNrcykKKyAgICAgICAgcmV0dXJuIG1f
ZmFsbGJhY2tzOworCisgICAgaWYgKG1fcGF0dGVybikgeworICAgICAgICBGY1Jlc3VsdCBmb250
Q29uZmlnUmVzdWx0OworICAgICAgICBtX2ZhbGxiYWNrcyA9IEZjRm9udFNvcnQobnVsbHB0ciwg
bV9wYXR0ZXJuLmdldCgpLCBGY1RydWUsIG51bGxwdHIsICZmb250Q29uZmlnUmVzdWx0KTsKKyAg
ICB9CisgICAgcmV0dXJuIG1fZmFsbGJhY2tzOworfQorCiBib29sIEZvbnRQbGF0Zm9ybURhdGE6
OmlzRml4ZWRQaXRjaCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZml4ZWRXaWR0aDsKIH0KIAot
Ym9vbCBGb250UGxhdGZvcm1EYXRhOjpvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IG90aGVyKSBjb25zdAorYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiB7CiAgICAgLy8gRmNQYXR0ZXJuRXF1
YWwgZG9lcyBub3Qgc3VwcG9ydCBudWxsIHBvaW50ZXJzIGFzIGFyZ3VtZW50cy4KICAgICBpZiAo
KG1fcGF0dGVybiAmJiAhb3RoZXIubV9wYXR0ZXJuKQpAQCAtMzA3LDExICsyODcsNyBAQCBib29s
IEZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPT0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3Ro
ZXIpIGNvbnN0CiAgICAgICAgIHx8IChtX3BhdHRlcm4gIT0gb3RoZXIubV9wYXR0ZXJuICYmICFG
Y1BhdHRlcm5FcXVhbChtX3BhdHRlcm4uZ2V0KCksIG90aGVyLm1fcGF0dGVybi5nZXQoKSkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9zY2FsZWRGb250ID09IG90aGVy
Lm1fc2NhbGVkRm9udAotICAgICAgICAmJiBtX3NpemUgPT0gb3RoZXIubV9zaXplCi0gICAgICAg
ICYmIG1fc3ludGhldGljT2JsaXF1ZSA9PSBvdGhlci5tX3N5bnRoZXRpY09ibGlxdWUKLSAgICAg
ICAgJiYgbV9vcmllbnRhdGlvbiA9PSBvdGhlci5tX29yaWVudGF0aW9uCi0gICAgICAgICYmIG1f
c3ludGhldGljQm9sZCA9PSBvdGhlci5tX3N5bnRoZXRpY0JvbGQ7IAorICAgIHJldHVybiBtX3Nj
YWxlZEZvbnQgPT0gb3RoZXIubV9zY2FsZWRGb250OwogfQogCiAjaWZuZGVmIE5ERUJVRwpAQCAt
MzY0LDIyICszNDAsMTggQEAgdm9pZCBGb250UGxhdGZvcm1EYXRhOjpidWlsZFNjYWxlZEZvbnQo
Y2Fpcm9fZm9udF9mYWNlX3QqIGZvbnRGYWNlKQogICAgICAgICBjYWlyb19tYXRyaXhfdHJhbnNs
YXRlKCZmb250TWF0cml4LCAwLjAsIDEuMCk7CiAgICAgfQogCi0gICAgaWYgKG1fc2NhbGVkRm9u
dCAmJiBtX3NjYWxlZEZvbnQgIT0gaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpKQotICAgICAg
ICBjYWlyb19zY2FsZWRfZm9udF9kZXN0cm95KG1fc2NhbGVkRm9udCk7Ci0KLSAgICBtX3NjYWxl
ZEZvbnQgPSBjYWlyb19zY2FsZWRfZm9udF9jcmVhdGUoZm9udEZhY2UsICZmb250TWF0cml4LCAm
Y3RtLCBvcHRpb25zKTsKKyAgICBtX3NjYWxlZEZvbnQgPSBhZG9wdFJlZihjYWlyb19zY2FsZWRf
Zm9udF9jcmVhdGUoZm9udEZhY2UsICZmb250TWF0cml4LCAmY3RtLCBvcHRpb25zKSk7CiAgICAg
Y2Fpcm9fZm9udF9vcHRpb25zX2Rlc3Ryb3kob3B0aW9ucyk7CiB9CiAKIGJvb2wgRm9udFBsYXRm
b3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKQogewotICAgIEFTU0VSVChtX3NjYWxlZEZv
bnQpOwotICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfbG9j
a19mYWNlKG1fc2NhbGVkRm9udCk7Ci0gICAgYm9vbCBoYXNDb21wYXRpYmxlQ2hhcm1hcCA9ICEo
RlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ191bmljb2RlKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlw
ZUZhY2UsIGZ0X2VuY29kaW5nX3N5bWJvbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBsZV9y
b21hbikpOwotICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X3VubG9ja19mYWNlKG1fc2NhbGVkRm9u
dCk7Ci0gICAgcmV0dXJuIGhhc0NvbXBhdGlibGVDaGFybWFwOworICAgIEFTU0VSVChtX3NjYWxl
ZEZvbnQuZ2V0KCkpOworICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9ja2VyKG1f
c2NhbGVkRm9udC5nZXQoKSk7CisgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0RmFj
ZUxvY2tlci5mdEZhY2UoKTsKKyAgICByZXR1cm4gIShGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlw
ZUZhY2UsIGZ0X2VuY29kaW5nX3VuaWNvZGUpCisgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFw
KGZyZWVUeXBlRmFjZSwgZnRfZW5jb2Rpbmdfc3ltYm9sKQorICAgICAgICAmJiBGVF9TZWxlY3Rf
Q2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAKIFBh
c3NSZWZQdHI8T3BlblR5cGVWZXJ0aWNhbERhdGE+IEZvbnRQbGF0Zm9ybURhdGE6OnZlcnRpY2Fs
RGF0YSgpIGNvbnN0CkBAIC0zODgsOSArMzYwLDEwIEBAIFBhc3NSZWZQdHI8T3BlblR5cGVWZXJ0
aWNhbERhdGE+IEZvbnRQbGF0Zm9ybURhdGE6OnZlcnRpY2FsRGF0YSgpIGNvbnN0CiAgICAgcmV0
dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZ2V0VmVydGljYWxEYXRhKFN0cmluZzo6bnVtYmVy
KGhhc2goKSksICp0aGlzKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAogewotICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9fZnRfc2NhbGVkX2Zv
bnRfbG9ja19mYWNlKG1fc2NhbGVkRm9udCk7CisgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9G
dEZhY2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKKyAgICBGVF9GYWNlIGZyZWVUeXBlRmFj
ZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwogICAgIGlmICghZnJlZVR5cGVGYWNlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNDAxLDM3ICszNzQsMTUgQEAgUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGFibGVTaXplKTsKLSAgICBG
VF9VTG9uZyBleHBlY3RlZFRhYmxlU2l6ZSA9IHRhYmxlU2l6ZTsKICAgICBpZiAoYnVmZmVyLT5z
aXplKCkgIT0gdGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIEZUX1VM
b25nIGV4cGVjdGVkVGFibGVTaXplID0gdGFibGVTaXplOwogICAgIEZUX0Vycm9yIGVycm9yID0g
RlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCByZWludGVycHJldF9jYXN0
PEZUX0J5dGUqPihjb25zdF9jYXN0PGNoYXIqPihidWZmZXItPmRhdGEoKSkpLCAmdGFibGVTaXpl
KTsKICAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X3VubG9ja19m
YWNlKG1fc2NhbGVkRm9udCk7Ci0KLSAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2UoKTsKLX0KLQot
dm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXRPcmllbnRhdGlvbihGb250T3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pCi17Ci0gICAgaWYgKCFtX3NjYWxlZEZvbnQgfHwgKG1fb3JpZW50YXRpb24gPT0g
b3JpZW50YXRpb24pKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobV9zY2FsZWRGb250
KTsKLSAgICBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247Ci0gICAgYnVpbGRTY2FsZWRGb250
KGNhaXJvX3NjYWxlZF9mb250X2dldF9mb250X2ZhY2UobV9zY2FsZWRGb250KSk7CisgICAgcmV0
dXJuIGJ1ZmZlcjsKIH0KIAotdm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXRTeW50aGV0aWNPYmxp
cXVlKGJvb2wgbmV3U3ludGhldGljT2JsaXF1ZVZhbHVlKQotewotICAgIGlmIChuZXdTeW50aGV0
aWNPYmxpcXVlVmFsdWUgPT0gc3ludGhldGljT2JsaXF1ZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBBU1NFUlQobV9zY2FsZWRGb250KTsKLSAgICBtX3N5bnRoZXRpY09ibGlxdWUgPSBuZXdT
eW50aGV0aWNPYmxpcXVlVmFsdWU7Ci0gICAgYnVpbGRTY2FsZWRGb250KGNhaXJvX3NjYWxlZF9m
b250X2dldF9mb250X2ZhY2UobV9zY2FsZWRGb250KSk7Ci19Ci0KLX0KK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvR2x5cGhQYWdlVHJlZU5vZGVGcmVlVHlwZS5jcHAKaW5k
ZXggMDVmY2QwMi4uY2FhNGI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvR2x5cGhQYWdlVHJlZU5vZGVGcmVlVHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvR2x5cGhQYWdlVHJlZU5vZGVG
cmVlVHlwZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJHbHlwaFBhZ2UuaCIKIAorI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiRm9udC5oIgogI2luY2x1ZGUgIlVURjE2VUNoYXIzMkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8
Y2Fpcm8tZnQuaD4KQEAgLTQ1LDcgKzQ2LDggQEAgYm9vbCBHbHlwaFBhZ2U6OmZpbGwoVUNoYXIq
IGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoKQogICAgIGNhaXJvX3NjYWxlZF9mb250X3Qq
IHNjYWxlZEZvbnQgPSBmb250LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKTsKICAgICBBU1NF
UlQoc2NhbGVkRm9udCk7CiAKLSAgICBGVF9GYWNlIGZhY2UgPSBjYWlyb19mdF9zY2FsZWRfZm9u
dF9sb2NrX2ZhY2Uoc2NhbGVkRm9udCk7CisgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZh
Y2VMb2NrZXIoc2NhbGVkRm9udCk7CisgICAgRlRfRmFjZSBmYWNlID0gY2Fpcm9GdEZhY2VMb2Nr
ZXIuZnRGYWNlKCk7CiAgICAgaWYgKCFmYWNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTY1LDcgKzY3LDYgQEAgYm9vbCBHbHlwaFBhZ2U6OmZpbGwoVUNoYXIqIGJ1ZmZlciwgdW5zaWdu
ZWQgYnVmZmVyTGVuZ3RoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgY2Fpcm9fZnRfc2NhbGVk
X2ZvbnRfdW5sb2NrX2ZhY2Uoc2NhbGVkRm9udCk7CiAgICAgcmV0dXJuIGhhdmVHbHlwaHM7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAKaW5kZXggNzA5YjI1OS4u
MTZhYjNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250LmgiCiAKKyNp
bmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgpAQCAtNTMsNyAr
NTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgRm9udDo6cGxhdGZvcm1Jbml0KCkK
IHsKLSAgICBpZiAoIW1fcGxhdGZvcm1EYXRhLm1fc2l6ZSkKKyAgICBpZiAoIW1fcGxhdGZvcm1E
YXRhLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fcGxhdGZvcm1EYXRh
LnNjYWxlZEZvbnQoKSk7CkBAIC02NSwyMCArNjYsMjQgQEAgdm9pZCBGb250OjpwbGF0Zm9ybUlu
aXQoKQogICAgIGZsb2F0IGNhcEhlaWdodCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoZm9udEV4
dGVudHMuaGVpZ2h0KTsKICAgICBmbG9hdCBsaW5lR2FwID0gbmFycm93UHJlY2lzaW9uVG9GbG9h
dChmb250RXh0ZW50cy5oZWlnaHQgLSBmb250RXh0ZW50cy5hc2NlbnQgLSBmb250RXh0ZW50cy5k
ZXNjZW50KTsKIAotICAgIC8vIElmIHRoZSBVU0VfVFlQT19NRVRSSUNTIGZsYWcgaXMgc2V0IGlu
IHRoZSBPUy8yIHRhYmxlIHRoZW4gd2UgdXNlIHR5cG8gbWV0cmljcyBpbnN0ZWFkLgotICAgIEZU
X0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfbG9ja19mYWNlKG1fcGxh
dGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7Ci0gICAgaWYgKFRUX09TMiogT1MyVGFibGUgPSBzdGF0
aWNfY2FzdDxUVF9PUzIqPihGVF9HZXRfU2ZudF9UYWJsZShmcmVlVHlwZUZhY2UsIGZ0X3NmbnRf
b3MyKSkpIHsKLSAgICAgICAgY29uc3QgRlRfU2hvcnQga1VzZVR5cG9NZXRyaWNzTWFzayA9IDEg
PDwgNzsKLSAgICAgICAgaWYgKE9TMlRhYmxlLT5mc1NlbGVjdGlvbiAmIGtVc2VUeXBvTWV0cmlj
c01hc2spIHsKLSAgICAgICAgICAgIC8vIEZUX1NpemVfTWV0cmljczo6eV9zY2FsZSBpcyBpbiAx
Ni4xNiBmaXhlZCBwb2ludCBmb3JtYXQuCi0gICAgICAgICAgICAvLyBJdHMgKGZyYWN0aW9uYWwp
IHZhbHVlIGlzIGEgZmFjdG9yIHRoYXQgY29udmVydHMgdmVydGljYWwgbWV0cmljcyBmcm9tIGRl
c2lnbiB1bml0cyB0byB1bml0cyBvZiAxLzY0IHBpeGVscy4KLSAgICAgICAgICAgIGRvdWJsZSB5
c2NhbGUgPSAoZnJlZVR5cGVGYWNlLT5zaXplLT5tZXRyaWNzLnlfc2NhbGUgLyA2NTUzNi4wKSAv
IDY0LjA7Ci0gICAgICAgICAgICBhc2NlbnQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHlzY2Fs
ZSAqIE9TMlRhYmxlLT5zVHlwb0FzY2VuZGVyKTsKLSAgICAgICAgICAgIGRlc2NlbnQgPSAtbmFy
cm93UHJlY2lzaW9uVG9GbG9hdCh5c2NhbGUgKiBPUzJUYWJsZS0+c1R5cG9EZXNjZW5kZXIpOwot
ICAgICAgICAgICAgbGluZUdhcCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoeXNjYWxlICogT1My
VGFibGUtPnNUeXBvTGluZUdhcCk7CisgICAgeworICAgICAgICBDYWlyb0Z0RmFjZUxvY2tlciBj
YWlyb0Z0RmFjZUxvY2tlcihtX3BsYXRmb3JtRGF0YS5zY2FsZWRGb250KCkpOworCisgICAgICAg
IC8vIElmIHRoZSBVU0VfVFlQT19NRVRSSUNTIGZsYWcgaXMgc2V0IGluIHRoZSBPUy8yIHRhYmxl
IHRoZW4gd2UgdXNlIHR5cG8gbWV0cmljcyBpbnN0ZWFkLgorICAgICAgICBGVF9GYWNlIGZyZWVU
eXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOworICAgICAgICBUVF9PUzIqIE9T
MlRhYmxlID0gZnJlZVR5cGVGYWNlID8gc3RhdGljX2Nhc3Q8VFRfT1MyKj4oRlRfR2V0X1NmbnRf
VGFibGUoZnJlZVR5cGVGYWNlLCBmdF9zZm50X29zMikpIDogbnVsbHB0cjsKKyAgICAgICAgaWYg
KE9TMlRhYmxlKSB7CisgICAgICAgICAgICBjb25zdCBGVF9TaG9ydCBrVXNlVHlwb01ldHJpY3NN
YXNrID0gMSA8PCA3OworICAgICAgICAgICAgaWYgKE9TMlRhYmxlLT5mc1NlbGVjdGlvbiAmIGtV
c2VUeXBvTWV0cmljc01hc2spIHsKKyAgICAgICAgICAgICAgICAvLyBGVF9TaXplX01ldHJpY3M6
Onlfc2NhbGUgaXMgaW4gMTYuMTYgZml4ZWQgcG9pbnQgZm9ybWF0LgorICAgICAgICAgICAgICAg
IC8vIEl0cyAoZnJhY3Rpb25hbCkgdmFsdWUgaXMgYSBmYWN0b3IgdGhhdCBjb252ZXJ0cyB2ZXJ0
aWNhbCBtZXRyaWNzIGZyb20gZGVzaWduIHVuaXRzIHRvIHVuaXRzIG9mIDEvNjQgcGl4ZWxzLgor
ICAgICAgICAgICAgICAgIGRvdWJsZSB5c2NhbGUgPSAoZnJlZVR5cGVGYWNlLT5zaXplLT5tZXRy
aWNzLnlfc2NhbGUgLyA2NTUzNi4wKSAvIDY0LjA7CisgICAgICAgICAgICAgICAgYXNjZW50ID0g
bmFycm93UHJlY2lzaW9uVG9GbG9hdCh5c2NhbGUgKiBPUzJUYWJsZS0+c1R5cG9Bc2NlbmRlcik7
CisgICAgICAgICAgICAgICAgZGVzY2VudCA9IC1uYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHlzY2Fs
ZSAqIE9TMlRhYmxlLT5zVHlwb0Rlc2NlbmRlcik7CisgICAgICAgICAgICAgICAgbGluZUdhcCA9
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoeXNjYWxlICogT1MyVGFibGUtPnNUeXBvTGluZUdhcCk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgY2Fpcm9fZnRfc2NhbGVkX2Zv
bnRfdW5sb2NrX2ZhY2UobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9udCgpKTsKIAogICAgIG1fZm9u
dE1ldHJpY3Muc2V0QXNjZW50KGFzY2VudCk7CiAgICAgbV9mb250TWV0cmljcy5zZXREZXNjZW50
KGRlc2NlbnQpOwpAQCAtMTAwLDkgKzEwNSw5IEBAIHZvaWQgRm9udDo6cGxhdGZvcm1Jbml0KCkK
ICAgICBtX3NwYWNlV2lkdGggPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KChwbGF0Zm9ybURhdGEo
KS5vcmllbnRhdGlvbigpID09IEhvcml6b250YWwpID8gdGV4dEV4dGVudHMueF9hZHZhbmNlIDog
LXRleHRFeHRlbnRzLnlfYWR2YW5jZSk7CiAKICAgICBpZiAoKHBsYXRmb3JtRGF0YSgpLm9yaWVu
dGF0aW9uKCkgPT0gVmVydGljYWwpICYmICFpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrKCkpIHsK
LSAgICAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb19mdF9zY2FsZWRfZm9udF9sb2Nr
X2ZhY2UobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9udCgpKTsKKyAgICAgICAgQ2Fpcm9GdEZhY2VM
b2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9udCgpKTsKKyAg
ICAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsK
ICAgICAgICAgbV9mb250TWV0cmljcy5zZXRVbml0c1BlckVtKGZyZWVUeXBlRmFjZS0+dW5pdHNf
cGVyX0VNKTsKLSAgICAgICAgY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfdW5sb2NrX2ZhY2UobV9wbGF0
Zm9ybURhdGEuc2NhbGVkRm9udCgpKTsKICAgICB9CiAKICAgICBtX3N5bnRoZXRpY0JvbGRPZmZz
ZXQgPSBtX3BsYXRmb3JtRGF0YS5zeW50aGV0aWNCb2xkKCkgPyAxLjBmIDogMC5mOwpAQCAtMTc5
LDE0ICsxODQsMTQgQEAgYm9vbCBGb250OjpjYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1
ZW5jZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGwKICAgICBpZiAoVV9GQUlMVVJF
KGVycm9yKSB8fCAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihub3JtYWxpemVkTGVuZ3RoKSA9PSBsZW5n
dGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGVF9GYWNlIGZhY2UgPSBjYWlyb19m
dF9zY2FsZWRfZm9udF9sb2NrX2ZhY2UobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9udCgpKTsKKyAg
ICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3BsYXRmb3JtRGF0YS5zY2Fs
ZWRGb250KCkpOworICAgIEZUX0ZhY2UgZmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgp
OwogICAgIGlmICghZmFjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKEZjRnJl
ZVR5cGVDaGFySW5kZXgoZmFjZSwgbm9ybWFsaXplZENoYXJhY3RlcnNbMF0pKQogICAgICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gdHJ1ZTsKIAotICAgIGNhaXJvX2Z0X3NjYWxlZF9m
b250X3VubG9ja19mYWNlKG1fcGxhdGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7CiAgICAgcmV0dXJu
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZUNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFj
ZUNhaXJvLmNwcAppbmRleCA0ZGQ3YWVlLi42MTQ4NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2VDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNl
Q2Fpcm8uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSGFyZkJ1enpGYWNlLmgiCiAKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2luY2x1
ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiR2x5
cGhCdWZmZXIuaCIKQEAgLTU3LDIxICs1OCw2IEBAIHN0cnVjdCBIYXJmQnV6ekZvbnREYXRhIHsK
ICAgICBjYWlyb19zY2FsZWRfZm9udF90KiBtX2NhaXJvU2NhbGVkRm9udDsKIH07CiAKLWNsYXNz
IENhaXJvRnRGYWNlTG9ja2VyIHsKLXB1YmxpYzoKLSAgICBDYWlyb0Z0RmFjZUxvY2tlcihjYWly
b19zY2FsZWRfZm9udF90KiBjYWlyb1NjYWxlZEZvbnQpIDogbV9zY2FsZWRGb250KGNhaXJvU2Nh
bGVkRm9udCkgeyB9OwotICAgIEZUX0ZhY2UgbG9jaygpCi0gICAgewotICAgICAgICByZXR1cm4g
Y2Fpcm9fZnRfc2NhbGVkX2ZvbnRfbG9ja19mYWNlKG1fc2NhbGVkRm9udCk7Ci0gICAgfTsKLSAg
ICB+Q2Fpcm9GdEZhY2VMb2NrZXIoKQotICAgIHsKLSAgICAgICAgY2Fpcm9fZnRfc2NhbGVkX2Zv
bnRfdW5sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKLSAgICB9Ci1wcml2YXRlOgotICAgIGNhaXJv
X3NjYWxlZF9mb250X3QqIG1fc2NhbGVkRm9udDsKLX07Ci0KIHN0YXRpYyBoYl9wb3NpdGlvbl90
IGZsb2F0VG9IYXJmQnV6elBvc2l0aW9uKGZsb2F0IHZhbHVlKQogewogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxoYl9wb3NpdGlvbl90Pih2YWx1ZSAqICgxIDw8IDE2KSk7CkBAIC0xNzgsOSArMTY0
LDkgQEAgc3RhdGljIGhiX2Jsb2JfdCogaGFyZkJ1enpDYWlyb0dldFRhYmxlKGhiX2ZhY2VfdCos
IGhiX3RhZ190IHRhZywgdm9pZCogdXNlckRhdGEKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBD
YWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihzY2FsZWRGb250KTsKLSAgICBGVF9G
YWNlIGZ0Rm9udCA9IGNhaXJvRnRGYWNlTG9ja2VyLmxvY2soKTsKKyAgICBGVF9GYWNlIGZ0Rm9u
dCA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwogICAgIGlmICghZnRGb250KQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBGVF9VTG9uZyB0YWJs
ZVNpemUgPSAwOwogICAgIEZUX0Vycm9yIGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKGZ0Rm9u
dCwgdGFnLCAwLCAwLCAmdGFibGVTaXplKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277467</attachid>
            <date>2016-04-27 05:37:55 -0700</date>
            <delta_ts>2016-04-27 05:55:32 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wcore-freetype-font-data.diff</filename>
            <type>text/plain</type>
            <size>36980</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOGMxY2JmMi4uNWUxMmVhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMDMsNiArMjIwMyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udEZlYXR1cmVTZXR0aW5ncy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJp
Y0ZhbWlsaWVzLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFJhbmdlcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0
aWxpdGllcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZGIyNzg4Li41YjA2YTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMTYtMDQtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIwMDA5NCk6IFtGcmVlVHlwZV0g
VmVydGljYWwgdGV4dCBpcyBicm9rZW4gYWZ0ZXIgcjIwMDA5NAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCBGcmVldHlw
ZSBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBjYWxsIGJ1aWxkU2NhbGVkRm9udCgpIHdoZW4gb3Jp
ZW50YXRpb24sIFN5bnRoZXRpY09ibGlxdWUKKyAgICAgICAgb3Igc2l6ZSBjaGFuZ2UsIGJ1dCB0
aGUgbmV3IHN0YXRpYyBjbG9uZSBtZXRob2RzIGRvbid0IGRvIHRoYXQuIEkgdGhpbmsgaXQncyB0
aGUgdGltZSB0byBzdG9wIHVzaW5nIG91ciBvd24KKyAgICAgICAgaGVhZGVyIGZvciBGb250UGxh
dGZvcm1EYXRhIGZvciB0aGUgRnJlZVR5cGUgaW1wbGVtZW50YXRpb24gdG8gbWFrZSBjcm9zcy1w
bGF0Zm9ybSBjaGFuZ2VzIGVhc2llciBhbmQgcHJldmVudAorICAgICAgICByZWdyZXNzaW9ucyBs
aWtlIHRoaXMgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBDb21w
aWxlIEZvbnRQbGF0Zm9ybURhdGEuY3BwIGZvciBhbGwgcG9ydHMuCisgICAgICAgICogUGxhdGZv
cm1NYWMuY21ha2U6IFJlbW92ZSBGb250UGxhdGZvcm1EYXRhLmNwcC4KKyAgICAgICAgKiBQbGF0
Zm9ybVdpbi5jbWFrZTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5jcHA6IFdlIG5lZWQgb3VyIG93biBjbG9uZSBtZXRob2RzIGluIHRoZSBGcmVl
VHlwZSBiYWNrZW5kLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURh
dGEuaDogTW92ZSBGcmVlVHlwZSBzcGVjaWZpYyBtZXRob2RzIGFuZCBtZW1iZXJzIGZyb20gdGhl
IG9sZCBoZWFkZXIgZmlsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWlyb0Z0RmFjZUxvY2tlcjo6Q2Fp
cm9GdEZhY2VMb2NrZXIpOiBNb3ZlIENhaXJvRnRGYWNlTG9ja2VyIGltcGxlbWVudGF0aW9uIGhl
cmUgZnJvbQorICAgICAgICBIYXJmQnV6ekZhY2VDYWlyby5jcHAgdG8gbWFrZSBpdCBhdmFpbGFi
bGUgdG8gb3RoZXIgY2xhc3NlcywgYW5kIG1ha2UgaXQgaGFuZGxlIHRoZSBjYXNlIG9mCisgICAg
ICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZSgpIHJldHVybmluZyBudWxscHRyLgor
ICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6On5DYWlyb0Z0RmFjZUxvY2tlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvRnRGYWNlTG9ja2VyOjpmdEZhY2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmZpbmRCZXN0Rm9udEdpdmVuRmFsbGJhY2tzKTogTW92ZSB0aGUgZmFsbGJhY2tz
IGltcGxlbWVudGF0aW9uIHRvIEZvbnRQbGF0Zm9ybURhdGEgd2hlcmUgaXQgYmVsb25ncworICAg
ICAgICBhbmQgaGVyZSBzaW1wbHkgdXNlIEZvbnRQbGF0Zm9ybURhdGE6OmZhbGxiYWNrcygpLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6
Rm9udFBsYXRmb3JtRGF0YSk6IFJlbW92ZSBtZW1iZXJzIGFscmVhZHkgaW5pdGlhbGl6ZWQgaW4g
dGhlIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9y
PSk6IEFkZCBtaXNzaW5nIG1lbWJlcnMgdG8gYmUgY29waWVkLgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFBsYXRmb3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEpOiBEbyBub3QgZnJlZSBtX3NjYWxl
ZEZvbnQgbWFudWFsbHkgc2luY2Ugd2UgYXJlIG5vdyB1c2luZyBhIHNtYXJ0IHBvaW50ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpjbG9uZVdpdGhPcmllbnRhdGlvbik6
IENhbGwgYnVpbGRTY2FsZWRGb250KCkgbGlrZSBzZXRPcmllbnRhdGlvbigpIGRpZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OmNsb25lV2l0aFN5bnRoZXRpY09ibGlxdWUp
OiBDYWxsIGJ1aWxkU2NhbGVkRm9udCgpIGxpa2Ugc2V0U3ludGhldGljT2JsaXF1ZSgpIGRpZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OmNsb25lV2l0aFNpemUpOiBDYWxs
IGJ1aWxkU2NhbGVkRm9udCgpLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6
ZmFsbGJhY2tzKTogTGF6aWx5IGluaXRpYWxpemUgZmFsbGJhY2tzIGlmIG5lZWRlZCBhbmQgcmV0
dXJuIGl0LgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0Vx
dWFsKTogT25seSBjb21wYXJlIEZyZWVUeXBlIHNwZWNpZmljIG1lbWJlcnMuCisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpidWlsZFNjYWxlZEZvbnQpOiBVc2UgUmVmUHRyIGZv
ciBtX3NjYWxlZEZvbnQuCisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpoYXND
b21wYXRpYmxlQ2hhcm1hcCk6IFVzZSBDYWlyb0Z0RmFjZUxvY2tlci4KKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUpOiBVcGRhdGUgdG8gcmV0dXJuIFJl
ZlB0ciBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIgYW5kIHVzZSBDYWlyb0Z0RmFjZUxvY2tlci4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6c2V0T3JpZW50YXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6c2V0U3ludGhldGljT2Js
aXF1ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvR2x5
cGhQYWdlVHJlZU5vZGVGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2U6
OmZpbGwpOiBVc2UgQ2Fpcm9GdEZhY2VMb2NrZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250OjpwbGF0Zm9ybUluaXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNh
blJlbmRlckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFyZkJ1enpDYWlyb0dldFRhYmxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDYWlyb0Z0RmFjZUxvY2tlcjo6Q2Fpcm9GdEZhY2VMb2NrZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6OmxvY2spOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6On5DYWlyb0Z0RmFjZUxvY2tlcik6IERlbGV0ZWQu
CisKIDIwMTYtMDQtMjYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3VwcG9ydCBsZWdhY3kgSFRUUCBoZWFkZXJzIGluIFdlYlNvY2tldHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggYWVhMzU3MS4uY2EzMWMwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTM0OCw3ICszNDgsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcAotICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAyMzJkNTE5Li5iZmFiNDE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybVdpbi5jbWFrZQpAQCAtNzQsNyArNzQsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKIAogICAgIHBsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAogCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmNwcAppbmRleCBiODQzZWZlLi4yMDBmNTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmNwcApAQCAtNjIsNiArNjIsNyBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxh
dGZvcm1EYXRhKENHRm9udFJlZiBjZ0ZvbnQsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQgog
fQogI2VuZGlmCiAKKyNpZiAhVVNFKEZSRUVUWVBFKQogRm9udFBsYXRmb3JtRGF0YSBGb250UGxh
dGZvcm1EYXRhOjpjbG9uZVdpdGhPcmllbnRhdGlvbihjb25zdCBGb250UGxhdGZvcm1EYXRhJiBz
b3VyY2UsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBGb250UGxhdGZvcm1E
YXRhIGNvcHkoc291cmNlKTsKQEAgLTgyLDUgKzgzLDYgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250
UGxhdGZvcm1EYXRhOjpjbG9uZVdpdGhTaXplKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHNvdXJj
ZSwKICAgICBjb3B5Lm1fc2l6ZSA9IHNpemU7CiAgICAgcmV0dXJuIGNvcHk7CiB9CisjZW5kaWYK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5oCmluZGV4IDBlY2QzMTkuLmM1ODYzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTIyLDExICsyMiw2
IEBACiAgKgogICovCiAKLS8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeSB1bnRpbCBhbGwgcG9y
dHMgc3dpdGNoIHRvIHVzaW5nIHRoaXMgZmlsZS4KLSNpZiBQTEFURk9STShFRkwpIHx8IFBMQVRG
T1JNKEdUSykKLSNpbmNsdWRlICJmcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmgiCi0jZWxzZQot
CiAjaWZuZGVmIEZvbnRQbGF0Zm9ybURhdGFfaAogI2RlZmluZSBGb250UGxhdGZvcm1EYXRhX2gK
IApAQCAtNDIsNiArMzcsMTMgQEAKICNpbmNsdWRlIDxjYWlyby5oPgogI2VuZGlmCiAKKyNpZiBV
U0UoRlJFRVRZUEUpCisjaW5jbHVkZSAiRmNVbmlxdWVQdHIuaCIKKyNpbmNsdWRlICJIYXJmQnV6
ekZhY2UuaCIKKyNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIgordHlwZWRlZiBzdHJ1
Y3QgX0ZjRm9udFNldCBGY0ZvbnRTZXQ7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQog
I2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4K
QEAgLTgxLDcgKzgzLDkgQEAgY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CiBwdWJsaWM6CiAgICAg
Rm9udFBsYXRmb3JtRGF0YShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwogICAgIEZv
bnRQbGF0Zm9ybURhdGEoKTsKKyNpZiAhVVNFKEZSRUVUWVBFKQogICAgIEZvbnRQbGF0Zm9ybURh
dGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpID0gZGVmYXVsdDsKKyNlbmRpZgogICAgIEZvbnRQ
bGF0Zm9ybURhdGEoRm9udFBsYXRmb3JtRGF0YSYmKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRm
b3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWls
eSk7CiAgICAgRm9udFBsYXRmb3JtRGF0YShmbG9hdCBzaXplLCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljT2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uID0gSG9yaXpvbnRhbCwgRm9u
dFdpZHRoVmFyaWFudCA9IFJlZ3VsYXJXaWR0aCwgVGV4dFJlbmRlcmluZ01vZGUgPSBBdXRvVGV4
dFJlbmRlcmluZyk7CkBAIC0xMDgsNiArMTEyLDEzIEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlm
CiAKKyNpZiBVU0UoRlJFRVRZUEUpCisgICAgRm9udFBsYXRmb3JtRGF0YShGY1BhdHRlcm4qLCBj
b25zdCBGb250RGVzY3JpcHRpb24mKTsKKyAgICBGb250UGxhdGZvcm1EYXRhKGNhaXJvX2ZvbnRf
ZmFjZV90KiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY09ibGlxdWUpOworICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYpOworICAgIH5Gb250UGxhdGZvcm1EYXRhKCk7CisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKFdJTikKICAgICBIRk9OVCBoZm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udCA/IG1fZm9u
dC0+Z2V0KCkgOiAwOyB9CiAgICAgYm9vbCB1c2VHREkoKSBjb25zdCB7IHJldHVybiBtX3VzZUdE
STsgfQpAQCAtMTQ5LDYgKzE2MCwxMyBAQCBwdWJsaWM6CiAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRf
dCogc2NhbGVkRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVkRm9udC5nZXQoKTsgfQogI2Vu
ZGlmCiAKKyNpZiBVU0UoRlJFRVRZUEUpCisgICAgSGFyZkJ1enpGYWNlKiBoYXJmQnV6ekZhY2Uo
KSBjb25zdDsKKyAgICBib29sIGhhc0NvbXBhdGlibGVDaGFybWFwKCk7CisgICAgUGFzc1JlZlB0
cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4gdmVydGljYWxEYXRhKCkgY29uc3Q7CisgICAgRmNGb250
U2V0KiBmYWxsYmFja3MoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0CiAgICAgewogI2lmIFBMQVRGT1JNKFdJTikgJiYgIVVTRShDQUlSTykKQEAgLTE2Nyw3ICsx
ODUsMTEgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCisjaWYgVVNFKEZSRUVUWVBFKQorICAg
IEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7Cisj
ZWxzZQogICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1E
YXRhJikgPSBkZWZhdWx0OworI2VuZGlmCiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtMTk2LDcgKzIxOCw3IEBAIHB1
YmxpYzoKICNlbmRpZgogICAgIH0KIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShX
SU4pCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikgfHwgVVNFKEZSRUVUWVBF
KQogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0OwogI2VuZGlmCiAKQEAgLTIxMiw2ICsyMzQsOSBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKFdJTikKICAgICB2b2lkIHBsYXRmb3JtRGF0YUluaXQoSEZPTlQsIGZsb2F0IHNpemUsIEhE
QywgV0NIQVIqIGZhY2VOYW1lKTsKICNlbmRpZgorI2lmIFVTRShGUkVFVFlQRSkKKyAgICB2b2lk
IGJ1aWxkU2NhbGVkRm9udChjYWlyb19mb250X2ZhY2VfdCopOworI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICAvLyBGSVhNRTogR2V0IHJpZCBvZiBvbmUgb2YgdGhlc2UuIFRoZXNl
IHR3byBmb250cyBhcmUgc3VidGx5IGRpZmZlcmVudCwgYW5kIGl0IGlzIG5vdCBvYnZpb3VzIHdo
aWNoIG9uZSB0byB1c2Ugd2hlcmUuCkBAIC0yMjcsNiArMjUyLDExIEBAIHByaXZhdGU6CiAjaWYg
VVNFKENBSVJPKQogICAgIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90PiBtX3NjYWxlZEZvbnQ7
CiAjZW5kaWYKKyNpZiBVU0UoRlJFRVRZUEUpCisgICAgUmVmUHRyPEZjUGF0dGVybj4gbV9wYXR0
ZXJuOworICAgIG11dGFibGUgRmNVbmlxdWVQdHI8RmNGb250U2V0PiBtX2ZhbGxiYWNrczsKKyAg
ICBtdXRhYmxlIFJlZlB0cjxIYXJmQnV6ekZhY2U+IG1faGFyZkJ1enpGYWNlOworI2VuZGlmCiAK
ICAgICAvLyBUaGUgdmFsdWVzIGJlbG93IGFyZSBjb21tb24gdG8gYWxsIHBvcnRzCiAgICAgLy8g
RklYTUU6IElmIHRoZXkncmUgY29tbW9uIHRvIGFsbCBwb3J0cywgdGhleSBzaG91bGQgbW92ZSB0
byBGb250CkBAIC0yNDksNiArMjc5LDkgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgYm9vbCBtX3VzZUdESSB7IGZhbHNlIH07CiAjZW5kaWYKKyNpZiBVU0UoRlJFRVRZUEUpCisg
ICAgYm9vbCBtX2ZpeGVkV2lkdGggeyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiAjaWYgVVNFKEFQ
UEtJVCkKQEAgLTI2Nyw1ICszMDAsMyBAQCBpbmxpbmUgTlNGb250ICp0b05TRm9udChDVEZvbnRS
ZWYgZm9udCkKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEZvbnRQbGF0Zm9y
bURhdGFfaAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAppbmRleCAxNWU4ZmZjLi5iYjBiYzYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCkBAIC00NSw4ICs0NSwyNiBAQAogI2luY2x1ZGUgPGNhaXJv
LWdsLmg+CiAjZW5kaWYKIAorI2lmIFVTRShGUkVFVFlQRSkKKyNpbmNsdWRlIDxjYWlyby1mdC5o
PgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFVTRShGUkVFVFlQRSkKK0Nh
aXJvRnRGYWNlTG9ja2VyOjpDYWlyb0Z0RmFjZUxvY2tlcihjYWlyb19zY2FsZWRfZm9udF90KiBz
Y2FsZWRGb250KQorICAgIDogbV9zY2FsZWRGb250KHNjYWxlZEZvbnQpCisgICAgLCBtX2Z0RmFj
ZShjYWlyb19mdF9zY2FsZWRfZm9udF9sb2NrX2ZhY2Uoc2NhbGVkRm9udCkpCit7Cit9CisKK0Nh
aXJvRnRGYWNlTG9ja2VyOjp+Q2Fpcm9GdEZhY2VMb2NrZXIoKQoreworICAgIGlmIChtX2Z0RmFj
ZSkKKyAgICAgICAgY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfdW5sb2NrX2ZhY2UobV9zY2FsZWRGb250
KTsKK30KKyNlbmRpZgorCiB2b2lkIGNvcHlDb250ZXh0UHJvcGVydGllcyhjYWlyb190KiBzcmND
ciwgY2Fpcm9fdCogZHN0Q3IpCiB7CiAgICAgY2Fpcm9fc2V0X2FudGlhbGlhcyhkc3RDciwgY2Fp
cm9fZ2V0X2FudGlhbGlhcyhzcmNDcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmgKaW5kZXggMDczNDQ4Yi4uZmI0
OTg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9DYWlyb1V0aWxpdGllcy5oCkBAIC0zNiw2ICszNiwxMCBAQAogLy8gVGhpcyBmdW5jdGlv
biB3YXMgYWRkZWQgcHJldHR5IG11Y2ggc2ltdWx0YW5lb3VzIHRvIHdoZW4gMS4xMyB3YXMgYnJh
bmNoZWQuCiAjZGVmaW5lIEhBVkVfQ0FJUk9fU1VSRkFDRV9TRVRfREVWSUNFX1NDQUxFIENBSVJP
X1ZFUlNJT05fTUFKT1IgPiAxIHx8IChDQUlST19WRVJTSU9OX01BSk9SID09IDEgJiYgQ0FJUk9f
VkVSU0lPTl9NSU5PUiA+PSAxMykKIAorI2lmIFVTRShGUkVFVFlQRSkKK3R5cGVkZWYgc3RydWN0
IEZUX0ZhY2VSZWNfKiBGVF9GYWNlOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIENvbG9yOwpAQCAtNDYsNiArNTAsMjAgQEAgY2xh
c3MgSW50UmVjdDsKIGNsYXNzIFBhdGg7CiBjbGFzcyBSZWdpb247CiAKKyNpZiBVU0UoRlJFRVRZ
UEUpCitjbGFzcyBDYWlyb0Z0RmFjZUxvY2tlciB7CitwdWJsaWM6CisgICAgQ2Fpcm9GdEZhY2VM
b2NrZXIoY2Fpcm9fc2NhbGVkX2ZvbnRfdCopOworICAgIH5DYWlyb0Z0RmFjZUxvY2tlcigpOwor
CisgICAgRlRfRmFjZSBmdEZhY2UoKSBjb25zdCB7IHJldHVybiBtX2Z0RmFjZTsgfQorCitwcml2
YXRlOgorICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIG1fc2NhbGVkRm9udCB7IG51bGxwdHIgfTsK
KyAgICBGVF9GYWNlIG1fZnRGYWNlIHsgbnVsbHB0ciB9OworfTsKKyNlbmRpZgorCiB2b2lkIGNv
cHlDb250ZXh0UHJvcGVydGllcyhjYWlyb190KiBzcmNDciwgY2Fpcm9fdCogZHN0Q3IpOwogdm9p
ZCBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNhaXJvX3QqLCBjb25zdCBDb2xvciYpOwogdm9pZCBh
cHBlbmRQYXRoVG9DYWlyb0NvbnRleHQoY2Fpcm9fdCogdG8sIGNhaXJvX3QqIGZyb20pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENh
Y2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGViMDNkY2QuLjVjM2FhY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZy
ZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTYzLDIwICs2MywxMiBAQCBzdGF0aWMgUmVmUHRy
PEZjUGF0dGVybj4gY3JlYXRlRm9udENvbmZpZ1BhdHRlcm5Gb3JDaGFyYWN0ZXJzKGNvbnN0IFVD
aGFyKiBjaGFyYQogCiBzdGF0aWMgUmVmUHRyPEZjUGF0dGVybj4gZmluZEJlc3RGb250R2l2ZW5G
YWxsYmFja3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZm9udERhdGEsIEZjUGF0dGVybiogcGF0
dGVybikKIHsKLSAgICBpZiAoIWZvbnREYXRhLm1fcGF0dGVybikKKyAgICBGY0ZvbnRTZXQqIGZh
bGxiYWNrcyA9IGZvbnREYXRhLmZhbGxiYWNrcygpOworICAgIGlmICghZmFsbGJhY2tzKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICghZm9udERhdGEubV9mYWxsYmFja3MpIHsK
LSAgICAgICAgRmNSZXN1bHQgZm9udENvbmZpZ1Jlc3VsdDsKLSAgICAgICAgZm9udERhdGEubV9m
YWxsYmFja3MgPSBGY0ZvbnRTb3J0KG51bGxwdHIsIGZvbnREYXRhLm1fcGF0dGVybi5nZXQoKSwg
RmNUcnVlLCBudWxscHRyLCAmZm9udENvbmZpZ1Jlc3VsdCk7Ci0gICAgfQotCi0gICAgaWYgKCFm
b250RGF0YS5tX2ZhbGxiYWNrcykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBGY0Zv
bnRTZXQqIHNldHNbXSA9IHsgZm9udERhdGEubV9mYWxsYmFja3MgfTsKICAgICBGY1Jlc3VsdCBm
b250Q29uZmlnUmVzdWx0OwotICAgIHJldHVybiBGY0ZvbnRTZXRNYXRjaChudWxscHRyLCBzZXRz
LCAxLCBwYXR0ZXJuLCAmZm9udENvbmZpZ1Jlc3VsdCk7CisgICAgcmV0dXJuIEZjRm9udFNldE1h
dGNoKG51bGxwdHIsICZmYWxsYmFja3MsIDEsIHBhdHRlcm4sICZmb250Q29uZmlnUmVzdWx0KTsK
IH0KIAogUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJz
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEZvbnQqIG9yaWdpbmFs
Rm9udERhdGEsIGJvb2wsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIx
MmMyYTIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLgotICogQ29w
eXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KLSAqIENv
cHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgotICogQ29weXJpZ2h0
IChDKSAyMDA3IFBpb25lZXIgUmVzZWFyY2ggQ2VudGVyIFVTQSwgSW5jLgotICogQ29weXJpZ2h0
IChDKSAyMDEwIElnYWxpYSBTLkwuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRl
ZiBGb250UGxhdGZvcm1EYXRhRnJlZVR5cGVfaAotI2RlZmluZSBGb250UGxhdGZvcm1EYXRhRnJl
ZVR5cGVfaAotCi0jaW5jbHVkZSAiRm9udENhY2hlLmgiCi0jaW5jbHVkZSAiRm9udERlc2NyaXB0
aW9uLmgiCi0jaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKLSNpbmNsdWRlICJIYXJmQnV6ekZhY2Uu
aCIKLSNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIgotI2luY2x1ZGUgIlJlZlB0ckNh
aXJvLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiVGV4dEZsYWdzLmgi
Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5o
PgotCi10eXBlZGVmIHN0cnVjdCBfRmNGb250U2V0IEZjRm9udFNldDsKLWNsYXNzIEhhcmZCdXp6
RmFjZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGb250UGxhdGZvcm1EYXRhIHsK
LXB1YmxpYzoKLSAgICBGb250UGxhdGZvcm1EYXRhKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSkKLSAgICAgICAgOiBtX2ZhbGxiYWNrcygwKQotICAgICAgICAsIG1fc2l6ZSgwKQotICAg
ICAgICAsIG1fc3ludGhldGljQm9sZChmYWxzZSkKLSAgICAgICAgLCBtX3N5bnRoZXRpY09ibGlx
dWUoZmFsc2UpCi0gICAgICAgICwgbV9zY2FsZWRGb250KGhhc2hUYWJsZURlbGV0ZWRGb250VmFs
dWUoKSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKEhvcml6b250YWwpCi0gICAgICAgIHsgfQot
Ci0gICAgRm9udFBsYXRmb3JtRGF0YSgpCi0gICAgICAgIDogbV9mYWxsYmFja3MoMCkKLSAgICAg
ICAgLCBtX3NpemUoMCkKLSAgICAgICAgLCBtX3N5bnRoZXRpY0JvbGQoZmFsc2UpCi0gICAgICAg
ICwgbV9zeW50aGV0aWNPYmxpcXVlKGZhbHNlKQotICAgICAgICAsIG1fc2NhbGVkRm9udCgwKQot
ICAgICAgICAsIG1fb3JpZW50YXRpb24oSG9yaXpvbnRhbCkKLSAgICAgICAgeyB9Ci0KLSAgICBG
b250UGxhdGZvcm1EYXRhKEZjUGF0dGVybiosIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpOwotICAg
IEZvbnRQbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9mYWNlX3QqLCBjb25zdCBGb250RGVzY3JpcHRp
b24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljKTsKLSAgICBGb250UGxhdGZvcm1EYXRhKGZsb2F0
IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMpOwotICAgIEZvbnRQbGF0Zm9ybURhdGEoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYpOwotICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYsIGZsb2F0IHNpemUpOwotCi0gICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEg
Y2xvbmVXaXRoT3JpZW50YXRpb24oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIEZvbnRPcmllbnRh
dGlvbik7Ci0gICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgY2xvbmVXaXRoU3ludGhldGljT2Js
aXF1ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgYm9vbCk7Ci0gICAgc3RhdGljIEZvbnRQbGF0
Zm9ybURhdGEgY2xvbmVXaXRoU2l6ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgZmxvYXQpOwot
Ci0gICAgfkZvbnRQbGF0Zm9ybURhdGEoKTsKLQotICAgIEhhcmZCdXp6RmFjZSogaGFyZkJ1enpG
YWNlKCkgY29uc3Q7Ci0KLSAgICBib29sIGlzRml4ZWRQaXRjaCgpIGNvbnN0OwotICAgIGZsb2F0
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICB2b2lkIHNldFNpemUoZmxvYXQg
c2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9Ci0gICAgYm9vbCBzeW50aGV0aWNCb2xkKCkgY29uc3Qg
eyByZXR1cm4gbV9zeW50aGV0aWNCb2xkOyB9Ci0gICAgYm9vbCBzeW50aGV0aWNPYmxpcXVlKCkg
Y29uc3QgeyByZXR1cm4gbV9zeW50aGV0aWNPYmxpcXVlOyB9Ci0gICAgdm9pZCBzZXRTeW50aGV0
aWNPYmxpcXVlKGJvb2wpOwotICAgIGJvb2wgaGFzQ29tcGF0aWJsZUNoYXJtYXAoKTsKLQotICAg
IEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRp
b247IH0KLSAgICB2b2lkIHNldE9yaWVudGF0aW9uKEZvbnRPcmllbnRhdGlvbik7Ci0gICAgUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
OwotICAgIFBhc3NSZWZQdHI8T3BlblR5cGVWZXJ0aWNhbERhdGE+IHZlcnRpY2FsRGF0YSgpIGNv
bnN0OwotCi0gICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NhbGVkRm9udDsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gUHRySGFzaDxjYWlyb19zY2FsZWRfZm9udF90Kj46Omhhc2gobV9zY2Fs
ZWRGb250KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYpIGNvbnN0OwotICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25zdCBGb250
UGxhdGZvcm1EYXRhJik7Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zY2FsZWRGb250ID09IGhhc2hUYWJsZURlbGV0ZWRG
b250VmFsdWUoKTsKLSAgICB9Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgU3RyaW5nIGRlc2NyaXB0
aW9uKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIFJlZlB0cjxGY1BhdHRlcm4+IG1fcGF0dGVybjsK
LSAgICBtdXRhYmxlIEZjRm9udFNldCogbV9mYWxsYmFja3M7IC8vIEluaXRpYWxpemVkIGxhemls
eS4KLSAgICBmbG9hdCBtX3NpemU7Ci0gICAgYm9vbCBtX3N5bnRoZXRpY0JvbGQ7Ci0gICAgYm9v
bCBtX3N5bnRoZXRpY09ibGlxdWU7Ci0gICAgYm9vbCBtX2ZpeGVkV2lkdGg7Ci0gICAgY2Fpcm9f
c2NhbGVkX2ZvbnRfdCogbV9zY2FsZWRGb250OwotICAgIG11dGFibGUgUmVmUHRyPEhhcmZCdXp6
RmFjZT4gbV9oYXJmQnV6ekZhY2U7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBidWlsZFNjYWxlZEZv
bnQoY2Fpcm9fZm9udF9mYWNlX3QqKTsKLSAgICBzdGF0aWMgY2Fpcm9fc2NhbGVkX2ZvbnRfdCog
aGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2Fp
cm9fc2NhbGVkX2ZvbnRfdCo+KC0xKTsgfQotCi0gICAgRm9udE9yaWVudGF0aW9uIG1fb3JpZW50
YXRpb247Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBGb250UGxhdGZvcm1EYXRhRnJlZVR5cGVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggMzc4Nzk2ZS4u
YzkxMTQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBA
IC0yNSwxMCArMjUsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250UGxh
dGZvcm1EYXRhLmgiCiAKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIkZv
bnRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIlJlZlB0
ckNhaXJvLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8Y2Fpcm8tZnQu
aD4KLSNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPGZvbnRjb25maWcvZmNmcmVldHlwZS5o
PgogI2luY2x1ZGUgPGZ0MmJ1aWxkLmg+CiAjaW5jbHVkZSBGVF9UUlVFVFlQRV9UQUJMRVNfSApA
QCAtMTM2LDEyICsxMzcsNyBAQCBzdGF0aWMgRmNQYXR0ZXJuKiBnZXREZWZhdWx0Rm9udGNvbmZp
Z09wdGlvbnMoKQogCiBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEZjUGF0dGVy
biogcGF0dGVybiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pCiAgICAg
OiBtX3BhdHRlcm4ocGF0dGVybikKLSAgICAsIG1fZmFsbGJhY2tzKG51bGxwdHIpCiAgICAgLCBt
X3NpemUoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkpCi0gICAgLCBtX3N5bnRo
ZXRpY0JvbGQoZmFsc2UpCi0gICAgLCBtX3N5bnRoZXRpY09ibGlxdWUoZmFsc2UpCi0gICAgLCBt
X2ZpeGVkV2lkdGgoZmFsc2UpCi0gICAgLCBtX3NjYWxlZEZvbnQobnVsbHB0cikKICAgICAsIG1f
b3JpZW50YXRpb24oZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpCiB7CiAgICAgQVNTRVJU
KG1fcGF0dGVybik7CkBAIC0xNzUsMzQgKzE3MSwyMiBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250
UGxhdGZvcm1EYXRhKEZjUGF0dGVybiogcGF0dGVybiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
bwogICAgIGJ1aWxkU2NhbGVkRm9udChmb250RmFjZS5nZXQoKSk7CiB9CiAKLUZvbnRQbGF0Zm9y
bURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxp
YykKLSAgICA6IG1fZmFsbGJhY2tzKG51bGxwdHIpCi0gICAgLCBtX3NpemUoc2l6ZSkKLSAgICAs
IG1fc3ludGhldGljQm9sZChib2xkKQotICAgICwgbV9zeW50aGV0aWNPYmxpcXVlKGl0YWxpYykK
LSAgICAsIG1fZml4ZWRXaWR0aChmYWxzZSkKLSAgICAsIG1fc2NhbGVkRm9udChudWxscHRyKQot
ICAgICwgbV9vcmllbnRhdGlvbihIb3Jpem9udGFsKQotewotICAgIC8vIFdlIGNhbm5vdCBjcmVh
dGUgYSBzY2FsZWQgZm9udCBoZXJlLgotfQotCiBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZv
cm1EYXRhKGNhaXJvX2ZvbnRfZmFjZV90KiBmb250RmFjZSwgY29uc3QgRm9udERlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgYm9vbCBib2xkLCBib29sIGl0YWxpYykKLSAgICA6IG1fZmFsbGJhY2tz
KG51bGxwdHIpCi0gICAgLCBtX3NpemUoZGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSkK
KyAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpKQorICAgICwgbV9v
cmllbnRhdGlvbihkZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKQogICAgICwgbV9zeW50aGV0aWNC
b2xkKGJvbGQpCiAgICAgLCBtX3N5bnRoZXRpY09ibGlxdWUoaXRhbGljKQotICAgICwgbV9maXhl
ZFdpZHRoKGZhbHNlKQotICAgICwgbV9zY2FsZWRGb250KG51bGxwdHIpCi0gICAgLCBtX29yaWVu
dGF0aW9uKGRlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpCiB7CiAgICAgYnVpbGRTY2FsZWRGb250
KGZvbnRGYWNlKTsKIAotICAgIEZUX0ZhY2UgZm9udENvbmZpZ0ZhY2UgPSBjYWlyb19mdF9zY2Fs
ZWRfZm9udF9sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKLSAgICBpZiAoZm9udENvbmZpZ0ZhY2Up
IHsKKyAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQu
Z2V0KCkpOworICAgIGlmIChGVF9GYWNlIGZvbnRDb25maWdGYWNlID0gY2Fpcm9GdEZhY2VMb2Nr
ZXIuZnRGYWNlKCkpCiAgICAgICAgIG1fZml4ZWRXaWR0aCA9IGZvbnRDb25maWdGYWNlLT5mYWNl
X2ZsYWdzICYgRlRfRkFDRV9GTEFHX0ZJWEVEX1dJRFRIOwotICAgICAgICBjYWlyb19mdF9zY2Fs
ZWRfZm9udF91bmxvY2tfZmFjZShtX3NjYWxlZEZvbnQpOwotICAgIH0KK30KKworRm9udFBsYXRm
b3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikK
K3sKKyAgICAqdGhpcyA9IG90aGVyOwogfQogCiBGb250UGxhdGZvcm1EYXRhJiBGb250UGxhdGZv
cm1EYXRhOjpvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpCkBAIC0yMTIs
NzAgKzE5Niw1MCBAQCBGb250UGxhdGZvcm1EYXRhJiBGb250UGxhdGZvcm1EYXRhOjpvcGVyYXRv
cj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpCiAgICAgICAgIHJldHVybiAqdGhpczsK
IAogICAgIG1fc2l6ZSA9IG90aGVyLm1fc2l6ZTsKKyAgICBtX29yaWVudGF0aW9uID0gb3RoZXIu
bV9vcmllbnRhdGlvbjsKKyAgICBtX3dpZHRoVmFyaWFudCA9IG90aGVyLm1fd2lkdGhWYXJpYW50
OworICAgIG1fdGV4dFJlbmRlcmluZ01vZGUgPSBvdGhlci5tX3RleHRSZW5kZXJpbmdNb2RlOwor
CiAgICAgbV9zeW50aGV0aWNCb2xkID0gb3RoZXIubV9zeW50aGV0aWNCb2xkOwogICAgIG1fc3lu
dGhldGljT2JsaXF1ZSA9IG90aGVyLm1fc3ludGhldGljT2JsaXF1ZTsKKyAgICBtX2lzQ29sb3JC
aXRtYXBGb250ID0gb3RoZXIubV9pc0NvbG9yQml0bWFwRm9udDsKKyAgICBtX2lzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlID0gb3RoZXIubV9pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZTsKKyAgICBtX2lz
U3lzdGVtRm9udCA9IG90aGVyLm1faXNTeXN0ZW1Gb250OworCiAgICAgbV9maXhlZFdpZHRoID0g
b3RoZXIubV9maXhlZFdpZHRoOwogICAgIG1fcGF0dGVybiA9IG90aGVyLm1fcGF0dGVybjsKLSAg
ICBtX29yaWVudGF0aW9uID0gb3RoZXIubV9vcmllbnRhdGlvbjsKIAotICAgIGlmIChtX2ZhbGxi
YWNrcykgewotICAgICAgICBGY0ZvbnRTZXREZXN0cm95KG1fZmFsbGJhY2tzKTsKLSAgICAgICAg
Ly8gVGhpcyB3aWxsIGJlIHJlLWNyZWF0ZWQgb24gZGVtYW5kLgotICAgICAgICBtX2ZhbGxiYWNr
cyA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKG1fc2NhbGVkRm9udCAmJiBtX3NjYWxlZEZv
bnQgIT0gaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpKQotICAgICAgICBjYWlyb19zY2FsZWRf
Zm9udF9kZXN0cm95KG1fc2NhbGVkRm9udCk7Ci0gICAgbV9zY2FsZWRGb250ID0gY2Fpcm9fc2Nh
bGVkX2ZvbnRfcmVmZXJlbmNlKG90aGVyLm1fc2NhbGVkRm9udCk7CisgICAgLy8gVGhpcyB3aWxs
IGJlIHJlLWNyZWF0ZWQgb24gZGVtYW5kLgorICAgIG1fZmFsbGJhY2tzID0gbnVsbHB0cjsKIAor
ICAgIG1fc2NhbGVkRm9udCA9IG90aGVyLm1fc2NhbGVkRm9udDsKICAgICBtX2hhcmZCdXp6RmFj
ZSA9IG90aGVyLm1faGFyZkJ1enpGYWNlOwogCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1Gb250
UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90
aGVyKQotICAgIDogbV9mYWxsYmFja3MobnVsbHB0cikKLSAgICAsIG1fc2NhbGVkRm9udChudWxs
cHRyKQotICAgICwgbV9oYXJmQnV6ekZhY2Uob3RoZXIubV9oYXJmQnV6ekZhY2UpCi17Ci0gICAg
KnRoaXMgPSBvdGhlcjsKLX0KLQotRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlciwgZmxvYXQgc2l6ZSkKLSAgICA6IG1fZmFsbGJh
Y2tzKG51bGxwdHIpCi0gICAgLCBtX3NjYWxlZEZvbnQobnVsbHB0cikKLSAgICAsIG1faGFyZkJ1
enpGYWNlKG90aGVyLm1faGFyZkJ1enpGYWNlKQotewotICAgICp0aGlzID0gb3RoZXI7Ci0KLSAg
ICAvLyBXZSBuZWVkIHRvIHJlaW5pdGlhbGl6ZSB0aGUgaW5zdGFuY2UsIGJlY2F1c2UgdGhlIGRp
ZmZlcmVuY2UgaW4gc2l6ZSAKLSAgICAvLyBuZWNlc3NpdGF0ZXMgYSBuZXcgc2NhbGVkIGZvbnQg
aW5zdGFuY2UuCi0gICAgbV9zaXplID0gc2l6ZTsKLSAgICBidWlsZFNjYWxlZEZvbnQoY2Fpcm9f
c2NhbGVkX2ZvbnRfZ2V0X2ZvbnRfZmFjZShtX3NjYWxlZEZvbnQpKTsKLX0KLQogRm9udFBsYXRm
b3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEoKQogewotICAgIGlmIChtX2ZhbGxiYWNrcykgewot
ICAgICAgICBGY0ZvbnRTZXREZXN0cm95KG1fZmFsbGJhY2tzKTsKLSAgICAgICAgbV9mYWxsYmFj
a3MgPSBudWxscHRyOwotICAgIH0KLQotICAgIGlmIChtX3NjYWxlZEZvbnQgJiYgbV9zY2FsZWRG
b250ICE9IGhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUoKSkKLSAgICAgICAgY2Fpcm9fc2NhbGVk
X2ZvbnRfZGVzdHJveShtX3NjYWxlZEZvbnQpOwogfQogCiBGb250UGxhdGZvcm1EYXRhIEZvbnRQ
bGF0Zm9ybURhdGE6OmNsb25lV2l0aE9yaWVudGF0aW9uKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHNvdXJjZSwgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIEZvbnRQbGF0Zm9y
bURhdGEgY29weShzb3VyY2UpOwotICAgIGNvcHkubV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9u
OworICAgIGlmIChjb3B5Lm1fc2NhbGVkRm9udCAmJiBjb3B5Lm1fb3JpZW50YXRpb24gIT0gb3Jp
ZW50YXRpb24pIHsKKyAgICAgICAgY29weS5tX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247Cisg
ICAgICAgIGNvcHkuYnVpbGRTY2FsZWRGb250KGNhaXJvX3NjYWxlZF9mb250X2dldF9mb250X2Zh
Y2UoY29weS5tX3NjYWxlZEZvbnQuZ2V0KCkpKTsKKyAgICB9CiAgICAgcmV0dXJuIGNvcHk7CiB9
CiAKIEZvbnRQbGF0Zm9ybURhdGEgRm9udFBsYXRmb3JtRGF0YTo6Y2xvbmVXaXRoU3ludGhldGlj
T2JsaXF1ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBzb3VyY2UsIGJvb2wgc3ludGhldGljT2Js
aXF1ZSkKIHsKICAgICBGb250UGxhdGZvcm1EYXRhIGNvcHkoc291cmNlKTsKLSAgICBjb3B5Lm1f
c3ludGhldGljT2JsaXF1ZSA9IHN5bnRoZXRpY09ibGlxdWU7CisgICAgaWYgKGNvcHkubV9zeW50
aGV0aWNPYmxpcXVlICE9IHN5bnRoZXRpY09ibGlxdWUpIHsKKyAgICAgICAgY29weS5tX3N5bnRo
ZXRpY09ibGlxdWUgPSBzeW50aGV0aWNPYmxpcXVlOworICAgICAgICBBU1NFUlQoY29weS5tX3Nj
YWxlZEZvbnQuZ2V0KCkpOworICAgICAgICBjb3B5LmJ1aWxkU2NhbGVkRm9udChjYWlyb19zY2Fs
ZWRfZm9udF9nZXRfZm9udF9mYWNlKGNvcHkubV9zY2FsZWRGb250LmdldCgpKSk7CisgICAgfQog
ICAgIHJldHVybiBjb3B5OwogfQogCkBAIC0yODMsNiArMjQ3LDEwIEBAIEZvbnRQbGF0Zm9ybURh
dGEgRm9udFBsYXRmb3JtRGF0YTo6Y2xvbmVXaXRoU2l6ZShjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBzb3VyY2UsCiB7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBjb3B5KHNvdXJjZSk7CiAgICAgY29w
eS5tX3NpemUgPSBzaXplOworICAgIC8vIFdlIG5lZWQgdG8gcmVpbml0aWFsaXplIHRoZSBpbnN0
YW5jZSwgYmVjYXVzZSB0aGUgZGlmZmVyZW5jZSBpbiBzaXplCisgICAgLy8gbmVjZXNzaXRhdGVz
IGEgbmV3IHNjYWxlZCBmb250IGluc3RhbmNlLgorICAgIEFTU0VSVChjb3B5Lm1fc2NhbGVkRm9u
dC5nZXQoKSk7CisgICAgY29weS5idWlsZFNjYWxlZEZvbnQoY2Fpcm9fc2NhbGVkX2ZvbnRfZ2V0
X2ZvbnRfZmFjZShjb3B5Lm1fc2NhbGVkRm9udC5nZXQoKSkpOwogICAgIHJldHVybiBjb3B5Owog
fQogCkBAIC0yOTQsMTIgKzI2MiwyNCBAQCBIYXJmQnV6ekZhY2UqIEZvbnRQbGF0Zm9ybURhdGE6
OmhhcmZCdXp6RmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faGFyZkJ1enpGYWNlLmdldCgpOwog
fQogCitGY0ZvbnRTZXQqIEZvbnRQbGF0Zm9ybURhdGE6OmZhbGxiYWNrcygpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fZmFsbGJhY2tzKQorICAgICAgICByZXR1cm4gbV9mYWxsYmFja3MuZ2V0KCk7CisK
KyAgICBpZiAobV9wYXR0ZXJuKSB7CisgICAgICAgIEZjUmVzdWx0IGZvbnRDb25maWdSZXN1bHQ7
CisgICAgICAgIG1fZmFsbGJhY2tzLnJlc2V0KEZjRm9udFNvcnQobnVsbHB0ciwgbV9wYXR0ZXJu
LmdldCgpLCBGY1RydWUsIG51bGxwdHIsICZmb250Q29uZmlnUmVzdWx0KSk7CisgICAgfQorICAg
IHJldHVybiBtX2ZhbGxiYWNrcy5nZXQoKTsKK30KKwogYm9vbCBGb250UGxhdGZvcm1EYXRhOjpp
c0ZpeGVkUGl0Y2goKSBjb25zdAogewogICAgIHJldHVybiBtX2ZpeGVkV2lkdGg7CiB9CiAKLWJv
b2wgRm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9PShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBv
dGhlcikgY29uc3QKK2Jvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogewogICAgIC8vIEZjUGF0dGVybkVxdWFs
IGRvZXMgbm90IHN1cHBvcnQgbnVsbCBwb2ludGVycyBhcyBhcmd1bWVudHMuCiAgICAgaWYgKCht
X3BhdHRlcm4gJiYgIW90aGVyLm1fcGF0dGVybikKQEAgLTMwNywxMSArMjg3LDcgQEAgYm9vbCBG
b250UGxhdGZvcm1EYXRhOjpvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVy
KSBjb25zdAogICAgICAgICB8fCAobV9wYXR0ZXJuICE9IG90aGVyLm1fcGF0dGVybiAmJiAhRmNQ
YXR0ZXJuRXF1YWwobV9wYXR0ZXJuLmdldCgpLCBvdGhlci5tX3BhdHRlcm4uZ2V0KCkpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fc2NhbGVkRm9udCA9PSBvdGhlci5t
X3NjYWxlZEZvbnQKLSAgICAgICAgJiYgbV9zaXplID09IG90aGVyLm1fc2l6ZQotICAgICAgICAm
JiBtX3N5bnRoZXRpY09ibGlxdWUgPT0gb3RoZXIubV9zeW50aGV0aWNPYmxpcXVlCi0gICAgICAg
ICYmIG1fb3JpZW50YXRpb24gPT0gb3RoZXIubV9vcmllbnRhdGlvbgotICAgICAgICAmJiBtX3N5
bnRoZXRpY0JvbGQgPT0gb3RoZXIubV9zeW50aGV0aWNCb2xkOyAKKyAgICByZXR1cm4gbV9zY2Fs
ZWRGb250ID09IG90aGVyLm1fc2NhbGVkRm9udDsKIH0KIAogI2lmbmRlZiBOREVCVUcKQEAgLTM2
NCwyMiArMzQwLDE4IEBAIHZvaWQgRm9udFBsYXRmb3JtRGF0YTo6YnVpbGRTY2FsZWRGb250KGNh
aXJvX2ZvbnRfZmFjZV90KiBmb250RmFjZSkKICAgICAgICAgY2Fpcm9fbWF0cml4X3RyYW5zbGF0
ZSgmZm9udE1hdHJpeCwgMC4wLCAxLjApOwogICAgIH0KIAotICAgIGlmIChtX3NjYWxlZEZvbnQg
JiYgbV9zY2FsZWRGb250ICE9IGhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUoKSkKLSAgICAgICAg
Y2Fpcm9fc2NhbGVkX2ZvbnRfZGVzdHJveShtX3NjYWxlZEZvbnQpOwotCi0gICAgbV9zY2FsZWRG
b250ID0gY2Fpcm9fc2NhbGVkX2ZvbnRfY3JlYXRlKGZvbnRGYWNlLCAmZm9udE1hdHJpeCwgJmN0
bSwgb3B0aW9ucyk7CisgICAgbV9zY2FsZWRGb250ID0gYWRvcHRSZWYoY2Fpcm9fc2NhbGVkX2Zv
bnRfY3JlYXRlKGZvbnRGYWNlLCAmZm9udE1hdHJpeCwgJmN0bSwgb3B0aW9ucykpOwogICAgIGNh
aXJvX2ZvbnRfb3B0aW9uc19kZXN0cm95KG9wdGlvbnMpOwogfQogCiBib29sIEZvbnRQbGF0Zm9y
bURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkKIHsKLSAgICBBU1NFUlQobV9zY2FsZWRGb250
KTsKLSAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvX2Z0X3NjYWxlZF9mb250X2xvY2tf
ZmFjZShtX3NjYWxlZEZvbnQpOwotICAgIGJvb2wgaGFzQ29tcGF0aWJsZUNoYXJtYXAgPSAhKEZU
X1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2RpbmdfdW5pY29kZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVG
YWNlLCBmdF9lbmNvZGluZ19zeW1ib2wpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2RpbmdfYXBwbGVfcm9t
YW4pKTsKLSAgICBjYWlyb19mdF9zY2FsZWRfZm9udF91bmxvY2tfZmFjZShtX3NjYWxlZEZvbnQp
OwotICAgIHJldHVybiBoYXNDb21wYXRpYmxlQ2hhcm1hcDsKKyAgICBBU1NFUlQobV9zY2FsZWRG
b250LmdldCgpKTsKKyAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3Nj
YWxlZEZvbnQuZ2V0KCkpOworICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VM
b2NrZXIuZnRGYWNlKCk7CisgICAgcmV0dXJuICEoRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVG
YWNlLCBmdF9lbmNvZGluZ191bmljb2RlKQorICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChm
cmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX3N5bWJvbCkKKyAgICAgICAgJiYgRlRfU2VsZWN0X0No
YXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCiBQYXNz
UmVmUHRyPE9wZW5UeXBlVmVydGljYWxEYXRhPiBGb250UGxhdGZvcm1EYXRhOjp2ZXJ0aWNhbERh
dGEoKSBjb25zdApAQCAtMzg4LDkgKzM2MCwxMCBAQCBQYXNzUmVmUHRyPE9wZW5UeXBlVmVydGlj
YWxEYXRhPiBGb250UGxhdGZvcm1EYXRhOjp2ZXJ0aWNhbERhdGEoKSBjb25zdAogICAgIHJldHVy
biBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdldFZlcnRpY2FsRGF0YShTdHJpbmc6Om51bWJlciho
YXNoKCkpLCAqdGhpcyk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3QKIHsKLSAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvX2Z0X3NjYWxlZF9mb250
X2xvY2tfZmFjZShtX3NjYWxlZEZvbnQpOworICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRG
YWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CisgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2Ug
PSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKICAgICBpZiAoIWZyZWVUeXBlRmFjZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTQwMSwzNyArMzc0LDE1IEBAIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRh
YmxlKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRhYmxlU2l6ZSk7Ci0gICAgRlRf
VUxvbmcgZXhwZWN0ZWRUYWJsZVNpemUgPSB0YWJsZVNpemU7CiAgICAgaWYgKGJ1ZmZlci0+c2l6
ZSgpICE9IHRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBGVF9VTG9u
ZyBleHBlY3RlZFRhYmxlU2l6ZSA9IHRhYmxlU2l6ZTsKICAgICBGVF9FcnJvciBlcnJvciA9IEZU
X0xvYWRfU2ZudF9UYWJsZShmcmVlVHlwZUZhY2UsIHRhZywgMCwgcmVpbnRlcnByZXRfY2FzdDxG
VF9CeXRlKj4oY29uc3RfY2FzdDxjaGFyKj4oYnVmZmVyLT5kYXRhKCkpKSwgJnRhYmxlU2l6ZSk7
CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBjYWlyb19mdF9zY2FsZWRfZm9udF91bmxvY2tfZmFj
ZShtX3NjYWxlZEZvbnQpOwotCi0gICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGJ1ZmZlcjsKIH0KIAotdm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXRPcmllbnRhdGlvbihG
b250T3JpZW50YXRpb24gb3JpZW50YXRpb24pCi17Ci0gICAgaWYgKCFtX3NjYWxlZEZvbnQgfHwg
KG1fb3JpZW50YXRpb24gPT0gb3JpZW50YXRpb24pKQotICAgICAgICByZXR1cm47Ci0KLSAgICBB
U1NFUlQobV9zY2FsZWRGb250KTsKLSAgICBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247Ci0g
ICAgYnVpbGRTY2FsZWRGb250KGNhaXJvX3NjYWxlZF9mb250X2dldF9mb250X2ZhY2UobV9zY2Fs
ZWRGb250KSk7Ci19Ci0KLXZvaWQgRm9udFBsYXRmb3JtRGF0YTo6c2V0U3ludGhldGljT2JsaXF1
ZShib29sIG5ld1N5bnRoZXRpY09ibGlxdWVWYWx1ZSkKLXsKLSAgICBpZiAobmV3U3ludGhldGlj
T2JsaXF1ZVZhbHVlID09IHN5bnRoZXRpY09ibGlxdWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQVNTRVJUKG1fc2NhbGVkRm9udCk7Ci0gICAgbV9zeW50aGV0aWNPYmxpcXVlID0gbmV3U3lu
dGhldGljT2JsaXF1ZVZhbHVlOwotICAgIGJ1aWxkU2NhbGVkRm9udChjYWlyb19zY2FsZWRfZm9u
dF9nZXRfZm9udF9mYWNlKG1fc2NhbGVkRm9udCkpOwotfQotCi19Cit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9HbHlwaFBhZ2VUcmVlTm9kZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwCmluZGV4
IDA1ZmNkMDIuLmNhYTRiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJl
ZVR5cGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiR2x5cGhQYWdlLmgiCiAKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkZvbnQuaCIKICNpbmNsdWRlICJVVEYxNlVDaGFyMzJJdGVyYXRvci5oIgogI2luY2x1ZGUgPGNh
aXJvLWZ0Lmg+CkBAIC00NSw3ICs0Niw4IEBAIGJvb2wgR2x5cGhQYWdlOjpmaWxsKFVDaGFyKiBi
dWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkKICAgICBjYWlyb19zY2FsZWRfZm9udF90KiBz
Y2FsZWRGb250ID0gZm9udC5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCk7CiAgICAgQVNTRVJU
KHNjYWxlZEZvbnQpOwogCi0gICAgRlRfRmFjZSBmYWNlID0gY2Fpcm9fZnRfc2NhbGVkX2ZvbnRf
bG9ja19mYWNlKHNjYWxlZEZvbnQpOworICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNl
TG9ja2VyKHNjYWxlZEZvbnQpOworICAgIEZUX0ZhY2UgZmFjZSA9IGNhaXJvRnRGYWNlTG9ja2Vy
LmZ0RmFjZSgpOwogICAgIGlmICghZmFjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02
NSw3ICs2Nyw2IEBAIGJvb2wgR2x5cGhQYWdlOjpmaWxsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVk
IGJ1ZmZlckxlbmd0aCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGNhaXJvX2Z0X3NjYWxlZF9m
b250X3VubG9ja19mYWNlKHNjYWxlZEZvbnQpOwogICAgIHJldHVybiBoYXZlR2x5cGhzOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9T
aW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwCmluZGV4IDcwOWIyNTkuLjE2
YWIzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogCisjaW5j
bHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKQEAgLTUzLDcgKzU0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEZvbnQ6OnBsYXRmb3JtSW5pdCgpCiB7
Ci0gICAgaWYgKCFtX3BsYXRmb3JtRGF0YS5tX3NpemUpCisgICAgaWYgKCFtX3BsYXRmb3JtRGF0
YS5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChtX3BsYXRmb3JtRGF0YS5z
Y2FsZWRGb250KCkpOwpAQCAtNjUsMjAgKzY2LDI0IEBAIHZvaWQgRm9udDo6cGxhdGZvcm1Jbml0
KCkKICAgICBmbG9hdCBjYXBIZWlnaHQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGZvbnRFeHRl
bnRzLmhlaWdodCk7CiAgICAgZmxvYXQgbGluZUdhcCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
Zm9udEV4dGVudHMuaGVpZ2h0IC0gZm9udEV4dGVudHMuYXNjZW50IC0gZm9udEV4dGVudHMuZGVz
Y2VudCk7CiAKLSAgICAvLyBJZiB0aGUgVVNFX1RZUE9fTUVUUklDUyBmbGFnIGlzIHNldCBpbiB0
aGUgT1MvMiB0YWJsZSB0aGVuIHdlIHVzZSB0eXBvIG1ldHJpY3MgaW5zdGVhZC4KLSAgICBGVF9G
YWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvX2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZShtX3BsYXRm
b3JtRGF0YS5zY2FsZWRGb250KCkpOwotICAgIGlmIChUVF9PUzIqIE9TMlRhYmxlID0gc3RhdGlj
X2Nhc3Q8VFRfT1MyKj4oRlRfR2V0X1NmbnRfVGFibGUoZnJlZVR5cGVGYWNlLCBmdF9zZm50X29z
MikpKSB7Ci0gICAgICAgIGNvbnN0IEZUX1Nob3J0IGtVc2VUeXBvTWV0cmljc01hc2sgPSAxIDw8
IDc7Ci0gICAgICAgIGlmIChPUzJUYWJsZS0+ZnNTZWxlY3Rpb24gJiBrVXNlVHlwb01ldHJpY3NN
YXNrKSB7Ci0gICAgICAgICAgICAvLyBGVF9TaXplX01ldHJpY3M6Onlfc2NhbGUgaXMgaW4gMTYu
MTYgZml4ZWQgcG9pbnQgZm9ybWF0LgotICAgICAgICAgICAgLy8gSXRzIChmcmFjdGlvbmFsKSB2
YWx1ZSBpcyBhIGZhY3RvciB0aGF0IGNvbnZlcnRzIHZlcnRpY2FsIG1ldHJpY3MgZnJvbSBkZXNp
Z24gdW5pdHMgdG8gdW5pdHMgb2YgMS82NCBwaXhlbHMuCi0gICAgICAgICAgICBkb3VibGUgeXNj
YWxlID0gKGZyZWVUeXBlRmFjZS0+c2l6ZS0+bWV0cmljcy55X3NjYWxlIC8gNjU1MzYuMCkgLyA2
NC4wOwotICAgICAgICAgICAgYXNjZW50ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh5c2NhbGUg
KiBPUzJUYWJsZS0+c1R5cG9Bc2NlbmRlcik7Ci0gICAgICAgICAgICBkZXNjZW50ID0gLW5hcnJv
d1ByZWNpc2lvblRvRmxvYXQoeXNjYWxlICogT1MyVGFibGUtPnNUeXBvRGVzY2VuZGVyKTsKLSAg
ICAgICAgICAgIGxpbmVHYXAgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHlzY2FsZSAqIE9TMlRh
YmxlLT5zVHlwb0xpbmVHYXApOworICAgIHsKKyAgICAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fp
cm9GdEZhY2VMb2NrZXIobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9udCgpKTsKKworICAgICAgICAv
LyBJZiB0aGUgVVNFX1RZUE9fTUVUUklDUyBmbGFnIGlzIHNldCBpbiB0aGUgT1MvMiB0YWJsZSB0
aGVuIHdlIHVzZSB0eXBvIG1ldHJpY3MgaW5zdGVhZC4KKyAgICAgICAgRlRfRmFjZSBmcmVlVHlw
ZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKKyAgICAgICAgVFRfT1MyKiBPUzJU
YWJsZSA9IGZyZWVUeXBlRmFjZSA/IHN0YXRpY19jYXN0PFRUX09TMio+KEZUX0dldF9TZm50X1Rh
YmxlKGZyZWVUeXBlRmFjZSwgZnRfc2ZudF9vczIpKSA6IG51bGxwdHI7CisgICAgICAgIGlmIChP
UzJUYWJsZSkgeworICAgICAgICAgICAgY29uc3QgRlRfU2hvcnQga1VzZVR5cG9NZXRyaWNzTWFz
ayA9IDEgPDwgNzsKKyAgICAgICAgICAgIGlmIChPUzJUYWJsZS0+ZnNTZWxlY3Rpb24gJiBrVXNl
VHlwb01ldHJpY3NNYXNrKSB7CisgICAgICAgICAgICAgICAgLy8gRlRfU2l6ZV9NZXRyaWNzOjp5
X3NjYWxlIGlzIGluIDE2LjE2IGZpeGVkIHBvaW50IGZvcm1hdC4KKyAgICAgICAgICAgICAgICAv
LyBJdHMgKGZyYWN0aW9uYWwpIHZhbHVlIGlzIGEgZmFjdG9yIHRoYXQgY29udmVydHMgdmVydGlj
YWwgbWV0cmljcyBmcm9tIGRlc2lnbiB1bml0cyB0byB1bml0cyBvZiAxLzY0IHBpeGVscy4KKyAg
ICAgICAgICAgICAgICBkb3VibGUgeXNjYWxlID0gKGZyZWVUeXBlRmFjZS0+c2l6ZS0+bWV0cmlj
cy55X3NjYWxlIC8gNjU1MzYuMCkgLyA2NC4wOworICAgICAgICAgICAgICAgIGFzY2VudCA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoeXNjYWxlICogT1MyVGFibGUtPnNUeXBvQXNjZW5kZXIpOwor
ICAgICAgICAgICAgICAgIGRlc2NlbnQgPSAtbmFycm93UHJlY2lzaW9uVG9GbG9hdCh5c2NhbGUg
KiBPUzJUYWJsZS0+c1R5cG9EZXNjZW5kZXIpOworICAgICAgICAgICAgICAgIGxpbmVHYXAgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHlzY2FsZSAqIE9TMlRhYmxlLT5zVHlwb0xpbmVHYXApOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250
X3VubG9ja19mYWNlKG1fcGxhdGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7CiAKICAgICBtX2ZvbnRN
ZXRyaWNzLnNldEFzY2VudChhc2NlbnQpOwogICAgIG1fZm9udE1ldHJpY3Muc2V0RGVzY2VudChk
ZXNjZW50KTsKQEAgLTEwMCw5ICsxMDUsOSBAQCB2b2lkIEZvbnQ6OnBsYXRmb3JtSW5pdCgpCiAg
ICAgbV9zcGFjZVdpZHRoID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCgocGxhdGZvcm1EYXRhKCku
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsKSA/IHRleHRFeHRlbnRzLnhfYWR2YW5jZSA6IC10
ZXh0RXh0ZW50cy55X2FkdmFuY2UpOwogCiAgICAgaWYgKChwbGF0Zm9ybURhdGEoKS5vcmllbnRh
dGlvbigpID09IFZlcnRpY2FsKSAmJiAhaXNUZXh0T3JpZW50YXRpb25GYWxsYmFjaygpKSB7Ci0g
ICAgICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfbG9ja19m
YWNlKG1fcGxhdGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7CisgICAgICAgIENhaXJvRnRGYWNlTG9j
a2VyIGNhaXJvRnRGYWNlTG9ja2VyKG1fcGxhdGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7CisgICAg
ICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CiAg
ICAgICAgIG1fZm9udE1ldHJpY3Muc2V0VW5pdHNQZXJFbShmcmVlVHlwZUZhY2UtPnVuaXRzX3Bl
cl9FTSk7Ci0gICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X3VubG9ja19mYWNlKG1fcGxhdGZv
cm1EYXRhLnNjYWxlZEZvbnQoKSk7CiAgICAgfQogCiAgICAgbV9zeW50aGV0aWNCb2xkT2Zmc2V0
ID0gbV9wbGF0Zm9ybURhdGEuc3ludGhldGljQm9sZCgpID8gMS4wZiA6IDAuZjsKQEAgLTE3OSwx
NCArMTg0LDE0IEBAIGJvb2wgRm9udDo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVu
Y2UoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsCiAgICAgaWYgKFVfRkFJTFVSRShl
cnJvcikgfHwgKHN0YXRpY19jYXN0PHNpemVfdD4obm9ybWFsaXplZExlbmd0aCkgPT0gbGVuZ3Ro
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRlRfRmFjZSBmYWNlID0gY2Fpcm9fZnRf
c2NhbGVkX2ZvbnRfbG9ja19mYWNlKG1fcGxhdGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7CisgICAg
Q2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9wbGF0Zm9ybURhdGEuc2NhbGVk
Rm9udCgpKTsKKyAgICBGVF9GYWNlIGZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsK
ICAgICBpZiAoIWZhY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChGY0ZyZWVU
eXBlQ2hhckluZGV4KGZhY2UsIG5vcm1hbGl6ZWRDaGFyYWN0ZXJzWzBdKSkKICAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHRydWU7CiAKLSAgICBjYWlyb19mdF9zY2FsZWRfZm9u
dF91bmxvY2tfZmFjZShtX3BsYXRmb3JtRGF0YS5zY2FsZWRGb250KCkpOwogICAgIHJldHVybiBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2VDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2VD
YWlyby5jcHAKaW5kZXggNGRkN2FlZS4uNjE0ODZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZUNh
aXJvLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkhhcmZCdXp6RmFjZS5oIgogCisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJGb250LmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkdseXBo
QnVmZmVyLmgiCkBAIC01NywyMSArNTgsNiBAQCBzdHJ1Y3QgSGFyZkJ1enpGb250RGF0YSB7CiAg
ICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogbV9jYWlyb1NjYWxlZEZvbnQ7CiB9OwogCi1jbGFzcyBD
YWlyb0Z0RmFjZUxvY2tlciB7Ci1wdWJsaWM6Ci0gICAgQ2Fpcm9GdEZhY2VMb2NrZXIoY2Fpcm9f
c2NhbGVkX2ZvbnRfdCogY2Fpcm9TY2FsZWRGb250KSA6IG1fc2NhbGVkRm9udChjYWlyb1NjYWxl
ZEZvbnQpIHsgfTsKLSAgICBGVF9GYWNlIGxvY2soKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNh
aXJvX2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZShtX3NjYWxlZEZvbnQpOwotICAgIH07Ci0gICAg
fkNhaXJvRnRGYWNlTG9ja2VyKCkKLSAgICB7Ci0gICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250
X3VubG9ja19mYWNlKG1fc2NhbGVkRm9udCk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBjYWlyb19z
Y2FsZWRfZm9udF90KiBtX3NjYWxlZEZvbnQ7Ci19OwotCiBzdGF0aWMgaGJfcG9zaXRpb25fdCBm
bG9hdFRvSGFyZkJ1enpQb3NpdGlvbihmbG9hdCB2YWx1ZSkKIHsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aGJfcG9zaXRpb25fdD4odmFsdWUgKiAoMSA8PCAxNikpOwpAQCAtMTc4LDkgKzE2NCw5
IEBAIHN0YXRpYyBoYl9ibG9iX3QqIGhhcmZCdXp6Q2Fpcm9HZXRUYWJsZShoYl9mYWNlX3QqLCBo
Yl90YWdfdCB0YWcsIHZvaWQqIHVzZXJEYXRhCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgQ2Fp
cm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIoc2NhbGVkRm9udCk7Ci0gICAgRlRfRmFj
ZSBmdEZvbnQgPSBjYWlyb0Z0RmFjZUxvY2tlci5sb2NrKCk7CisgICAgRlRfRmFjZSBmdEZvbnQg
PSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKICAgICBpZiAoIWZ0Rm9udCkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRlRfVUxvbmcgdGFibGVT
aXplID0gMDsKICAgICBGVF9FcnJvciBlcnJvciA9IEZUX0xvYWRfU2ZudF9UYWJsZShmdEZvbnQs
IHRhZywgMCwgMCwgJnRhYmxlU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTI2NzlkNi4uNzk5MWIwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA0LTI3ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMDAwOTQp
OiBbRnJlZVR5cGVdIFZlcnRpY2FsIHRleHQgaXMgYnJva2VuIGFmdGVyIHIyMDAwOTQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzA2NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1HVEsu
Y21ha2U6IEFkZCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZSB0byB0
aGUgbGlzdCBvZiBpbmNsdWRlIGRpcnMsIGJlY2F1c2Ugbm93CisgICAgICAgIEZvbnRQbGF0Zm9y
bURhdGEuaCBpbmNsdWRlcyBGY1VuaXF1ZVB0ci5oLgorCiAyMDE2LTA0LTI2ICBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5jYXVnaHQgRXhjZXB0aW9u
OiBTZWN1cml0eUVycm9yOiBET00gRXhjZXB0aW9uIDE4OiBBbiBhdHRlbXB0IHdhcyBtYWRlIHRv
IGJyZWFrIHRocm91Z2ggdGhlIHNlY3VyaXR5IHBvbGljeSBvZiB0aGUgdXNlciBhZ2VudC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNzllYWQ2NC4uNTc3MTAzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1HVEsuY21ha2UKQEAgLTQ5Niw2ICs0OTYsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX0lO
Q0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3RrIgogICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlybyIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9n
cmFwaGljcy94MTEiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvc291cCIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9lbmNoYW50Igo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277470</attachid>
            <date>2016-04-27 05:55:32 -0700</date>
            <delta_ts>2016-04-27 07:50:14 -0700</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>wcore-freetype-font-data.diff</filename>
            <type>text/plain</type>
            <size>37642</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOGMxY2JmMi4uNWUxMmVhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMDMsNiArMjIwMyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udEZlYXR1cmVTZXR0aW5ncy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJp
Y0ZhbWlsaWVzLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFJhbmdlcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0
aWxpdGllcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZGIyNzg4Li41YjA2YTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMTYtMDQtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIwMDA5NCk6IFtGcmVlVHlwZV0g
VmVydGljYWwgdGV4dCBpcyBicm9rZW4gYWZ0ZXIgcjIwMDA5NAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCBGcmVldHlw
ZSBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBjYWxsIGJ1aWxkU2NhbGVkRm9udCgpIHdoZW4gb3Jp
ZW50YXRpb24sIFN5bnRoZXRpY09ibGlxdWUKKyAgICAgICAgb3Igc2l6ZSBjaGFuZ2UsIGJ1dCB0
aGUgbmV3IHN0YXRpYyBjbG9uZSBtZXRob2RzIGRvbid0IGRvIHRoYXQuIEkgdGhpbmsgaXQncyB0
aGUgdGltZSB0byBzdG9wIHVzaW5nIG91ciBvd24KKyAgICAgICAgaGVhZGVyIGZvciBGb250UGxh
dGZvcm1EYXRhIGZvciB0aGUgRnJlZVR5cGUgaW1wbGVtZW50YXRpb24gdG8gbWFrZSBjcm9zcy1w
bGF0Zm9ybSBjaGFuZ2VzIGVhc2llciBhbmQgcHJldmVudAorICAgICAgICByZWdyZXNzaW9ucyBs
aWtlIHRoaXMgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBDb21w
aWxlIEZvbnRQbGF0Zm9ybURhdGEuY3BwIGZvciBhbGwgcG9ydHMuCisgICAgICAgICogUGxhdGZv
cm1NYWMuY21ha2U6IFJlbW92ZSBGb250UGxhdGZvcm1EYXRhLmNwcC4KKyAgICAgICAgKiBQbGF0
Zm9ybVdpbi5jbWFrZTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5jcHA6IFdlIG5lZWQgb3VyIG93biBjbG9uZSBtZXRob2RzIGluIHRoZSBGcmVl
VHlwZSBiYWNrZW5kLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURh
dGEuaDogTW92ZSBGcmVlVHlwZSBzcGVjaWZpYyBtZXRob2RzIGFuZCBtZW1iZXJzIGZyb20gdGhl
IG9sZCBoZWFkZXIgZmlsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWlyb0Z0RmFjZUxvY2tlcjo6Q2Fp
cm9GdEZhY2VMb2NrZXIpOiBNb3ZlIENhaXJvRnRGYWNlTG9ja2VyIGltcGxlbWVudGF0aW9uIGhl
cmUgZnJvbQorICAgICAgICBIYXJmQnV6ekZhY2VDYWlyby5jcHAgdG8gbWFrZSBpdCBhdmFpbGFi
bGUgdG8gb3RoZXIgY2xhc3NlcywgYW5kIG1ha2UgaXQgaGFuZGxlIHRoZSBjYXNlIG9mCisgICAg
ICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZSgpIHJldHVybmluZyBudWxscHRyLgor
ICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6On5DYWlyb0Z0RmFjZUxvY2tlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvRnRGYWNlTG9ja2VyOjpmdEZhY2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmZpbmRCZXN0Rm9udEdpdmVuRmFsbGJhY2tzKTogTW92ZSB0aGUgZmFsbGJhY2tz
IGltcGxlbWVudGF0aW9uIHRvIEZvbnRQbGF0Zm9ybURhdGEgd2hlcmUgaXQgYmVsb25ncworICAg
ICAgICBhbmQgaGVyZSBzaW1wbHkgdXNlIEZvbnRQbGF0Zm9ybURhdGE6OmZhbGxiYWNrcygpLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6
Rm9udFBsYXRmb3JtRGF0YSk6IFJlbW92ZSBtZW1iZXJzIGFscmVhZHkgaW5pdGlhbGl6ZWQgaW4g
dGhlIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9y
PSk6IEFkZCBtaXNzaW5nIG1lbWJlcnMgdG8gYmUgY29waWVkLgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFBsYXRmb3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEpOiBEbyBub3QgZnJlZSBtX3NjYWxl
ZEZvbnQgbWFudWFsbHkgc2luY2Ugd2UgYXJlIG5vdyB1c2luZyBhIHNtYXJ0IHBvaW50ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpjbG9uZVdpdGhPcmllbnRhdGlvbik6
IENhbGwgYnVpbGRTY2FsZWRGb250KCkgbGlrZSBzZXRPcmllbnRhdGlvbigpIGRpZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OmNsb25lV2l0aFN5bnRoZXRpY09ibGlxdWUp
OiBDYWxsIGJ1aWxkU2NhbGVkRm9udCgpIGxpa2Ugc2V0U3ludGhldGljT2JsaXF1ZSgpIGRpZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OmNsb25lV2l0aFNpemUpOiBDYWxs
IGJ1aWxkU2NhbGVkRm9udCgpLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6
ZmFsbGJhY2tzKTogTGF6aWx5IGluaXRpYWxpemUgZmFsbGJhY2tzIGlmIG5lZWRlZCBhbmQgcmV0
dXJuIGl0LgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0Vx
dWFsKTogT25seSBjb21wYXJlIEZyZWVUeXBlIHNwZWNpZmljIG1lbWJlcnMuCisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpidWlsZFNjYWxlZEZvbnQpOiBVc2UgUmVmUHRyIGZv
ciBtX3NjYWxlZEZvbnQuCisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpoYXND
b21wYXRpYmxlQ2hhcm1hcCk6IFVzZSBDYWlyb0Z0RmFjZUxvY2tlci4KKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUpOiBVcGRhdGUgdG8gcmV0dXJuIFJl
ZlB0ciBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIgYW5kIHVzZSBDYWlyb0Z0RmFjZUxvY2tlci4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6c2V0T3JpZW50YXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6c2V0U3ludGhldGljT2Js
aXF1ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvR2x5
cGhQYWdlVHJlZU5vZGVGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2U6
OmZpbGwpOiBVc2UgQ2Fpcm9GdEZhY2VMb2NrZXIuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250OjpwbGF0Zm9ybUluaXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNh
blJlbmRlckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFyZkJ1enpDYWlyb0dldFRhYmxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDYWlyb0Z0RmFjZUxvY2tlcjo6Q2Fpcm9GdEZhY2VMb2NrZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6OmxvY2spOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6On5DYWlyb0Z0RmFjZUxvY2tlcik6IERlbGV0ZWQu
CisKIDIwMTYtMDQtMjYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3VwcG9ydCBsZWdhY3kgSFRUUCBoZWFkZXJzIGluIFdlYlNvY2tldHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggYWVhMzU3MS4uY2EzMWMwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTM0OCw3ICszNDgsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcAotICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAyMzJkNTE5Li5iZmFiNDE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybVdpbi5jbWFrZQpAQCAtNzQsNyArNzQsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKIAogICAgIHBsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAogCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmNwcAppbmRleCBiODQzZWZlLi4yMDBmNTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmNwcApAQCAtNjIsNiArNjIsNyBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxh
dGZvcm1EYXRhKENHRm9udFJlZiBjZ0ZvbnQsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQgog
fQogI2VuZGlmCiAKKyNpZiAhVVNFKEZSRUVUWVBFKQogRm9udFBsYXRmb3JtRGF0YSBGb250UGxh
dGZvcm1EYXRhOjpjbG9uZVdpdGhPcmllbnRhdGlvbihjb25zdCBGb250UGxhdGZvcm1EYXRhJiBz
b3VyY2UsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBGb250UGxhdGZvcm1E
YXRhIGNvcHkoc291cmNlKTsKQEAgLTgyLDUgKzgzLDYgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250
UGxhdGZvcm1EYXRhOjpjbG9uZVdpdGhTaXplKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHNvdXJj
ZSwKICAgICBjb3B5Lm1fc2l6ZSA9IHNpemU7CiAgICAgcmV0dXJuIGNvcHk7CiB9CisjZW5kaWYK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5oCmluZGV4IDBlY2QzMTkuLmU4MWQ5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTIyLDExICsyMiw2
IEBACiAgKgogICovCiAKLS8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeSB1bnRpbCBhbGwgcG9y
dHMgc3dpdGNoIHRvIHVzaW5nIHRoaXMgZmlsZS4KLSNpZiBQTEFURk9STShFRkwpIHx8IFBMQVRG
T1JNKEdUSykKLSNpbmNsdWRlICJmcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmgiCi0jZWxzZQot
CiAjaWZuZGVmIEZvbnRQbGF0Zm9ybURhdGFfaAogI2RlZmluZSBGb250UGxhdGZvcm1EYXRhX2gK
IApAQCAtNDIsNiArMzcsMTIgQEAKICNpbmNsdWRlIDxjYWlyby5oPgogI2VuZGlmCiAKKyNpZiBV
U0UoRlJFRVRZUEUpCisjaW5jbHVkZSAiRmNVbmlxdWVQdHIuaCIKKyNpbmNsdWRlICJIYXJmQnV6
ekZhY2UuaCIKKyNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIgorI2VuZGlmCisKICNp
ZiBQTEFURk9STShDT0NPQSkKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxDb3JlR3JhcGhp
Y3MvQ29yZUdyYXBoaWNzLmg+CkBAIC04MSw3ICs4Miw5IEBAIGNsYXNzIEZvbnRQbGF0Zm9ybURh
dGEgewogcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWVUeXBlKTsKICAgICBGb250UGxhdGZvcm1EYXRhKCk7CisjaWYgIVVTRShGUkVFVFlQRSkK
ICAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKSA9IGRlZmF1bHQ7
CisjZW5kaWYKICAgICBGb250UGxhdGZvcm1EYXRhKEZvbnRQbGF0Zm9ybURhdGEmJikgPSBkZWZh
dWx0OwogICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBmYW1pbHkpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlv
biA9IEhvcml6b250YWwsIEZvbnRXaWR0aFZhcmlhbnQgPSBSZWd1bGFyV2lkdGgsIFRleHRSZW5k
ZXJpbmdNb2RlID0gQXV0b1RleHRSZW5kZXJpbmcpOwpAQCAtMTA4LDYgKzExMSwxMyBAQCBwdWJs
aWM6CiAjZW5kaWYKICNlbmRpZgogCisjaWYgVVNFKEZSRUVUWVBFKQorICAgIEZvbnRQbGF0Zm9y
bURhdGEoRmNQYXR0ZXJuKiwgY29uc3QgRm9udERlc2NyaXB0aW9uJik7CisgICAgRm9udFBsYXRm
b3JtRGF0YShjYWlyb19mb250X2ZhY2VfdCosIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wg
c3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlKTsKKyAgICBGb250UGxhdGZvcm1E
YXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKKyAgICB+Rm9udFBsYXRmb3JtRGF0YSgpOwor
I2VuZGlmCisKICNpZiBQTEFURk9STShXSU4pCiAgICAgSEZPTlQgaGZvbnQoKSBjb25zdCB7IHJl
dHVybiBtX2ZvbnQgPyBtX2ZvbnQtPmdldCgpIDogMDsgfQogICAgIGJvb2wgdXNlR0RJKCkgY29u
c3QgeyByZXR1cm4gbV91c2VHREk7IH0KQEAgLTE0OSw2ICsxNTksMTMgQEAgcHVibGljOgogICAg
IGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQoKSBjb25zdCB7IHJldHVybiBtX3NjYWxl
ZEZvbnQuZ2V0KCk7IH0KICNlbmRpZgogCisjaWYgVVNFKEZSRUVUWVBFKQorICAgIEhhcmZCdXp6
RmFjZSogaGFyZkJ1enpGYWNlKCkgY29uc3Q7CisgICAgYm9vbCBoYXNDb21wYXRpYmxlQ2hhcm1h
cCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8T3BlblR5cGVWZXJ0aWNhbERhdGE+IHZlcnRpY2Fs
RGF0YSgpIGNvbnN0OworICAgIEZjRm9udFNldCogZmFsbGJhY2tzKCkgY29uc3Q7CisjZW5kaWYK
KwogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKICNpZiBQTEFURk9STShXSU4pICYm
ICFVU0UoQ0FJUk8pCkBAIC0xNjcsNyArMTg0LDExIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0K
IAorI2lmIFVTRShGUkVFVFlQRSkKKyAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYpOworI2Vsc2UKICAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVy
YXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpID0gZGVmYXVsdDsKKyNlbmRpZgogCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAg
IHsKQEAgLTE5Niw3ICsyMTcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFU
Rk9STShXSU4pIHx8IFVTRShGUkVFVFlQRSkKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKICNlbmRpZgogCkBAIC0yMTIsNiArMjMz
LDkgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBwbGF0Zm9ybURhdGFJ
bml0KEhGT05ULCBmbG9hdCBzaXplLCBIREMsIFdDSEFSKiBmYWNlTmFtZSk7CiAjZW5kaWYKKyNp
ZiBVU0UoRlJFRVRZUEUpCisgICAgdm9pZCBidWlsZFNjYWxlZEZvbnQoY2Fpcm9fZm9udF9mYWNl
X3QqKTsKKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUU6IEdldCBy
aWQgb2Ygb25lIG9mIHRoZXNlLiBUaGVzZSB0d28gZm9udHMgYXJlIHN1YnRseSBkaWZmZXJlbnQs
IGFuZCBpdCBpcyBub3Qgb2J2aW91cyB3aGljaCBvbmUgdG8gdXNlIHdoZXJlLgpAQCAtMjI3LDYg
KzI1MSwxMSBAQCBwcml2YXRlOgogI2lmIFVTRShDQUlSTykKICAgICBSZWZQdHI8Y2Fpcm9fc2Nh
bGVkX2ZvbnRfdD4gbV9zY2FsZWRGb250OwogI2VuZGlmCisjaWYgVVNFKEZSRUVUWVBFKQorICAg
IFJlZlB0cjxGY1BhdHRlcm4+IG1fcGF0dGVybjsKKyAgICBtdXRhYmxlIEZjVW5pcXVlUHRyPEZj
Rm9udFNldD4gbV9mYWxsYmFja3M7CisgICAgbXV0YWJsZSBSZWZQdHI8SGFyZkJ1enpGYWNlPiBt
X2hhcmZCdXp6RmFjZTsKKyNlbmRpZgogCiAgICAgLy8gVGhlIHZhbHVlcyBiZWxvdyBhcmUgY29t
bW9uIHRvIGFsbCBwb3J0cwogICAgIC8vIEZJWE1FOiBJZiB0aGV5J3JlIGNvbW1vbiB0byBhbGwg
cG9ydHMsIHRoZXkgc2hvdWxkIG1vdmUgdG8gRm9udApAQCAtMjQ5LDYgKzI3OCw5IEBAIHByaXZh
dGU6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIGJvb2wgbV91c2VHREkgeyBmYWxzZSB9OwogI2Vu
ZGlmCisjaWYgVVNFKEZSRUVUWVBFKQorICAgIGJvb2wgbV9maXhlZFdpZHRoIHsgZmFsc2UgfTsK
KyNlbmRpZgogfTsKIAogI2lmIFVTRShBUFBLSVQpCkBAIC0yNjcsNSArMjk5LDMgQEAgaW5saW5l
IE5TRm9udCAqdG9OU0ZvbnQoQ1RGb250UmVmIGZvbnQpCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBGb250UGxhdGZvcm1EYXRhX2gKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5j
cHAKaW5kZXggMTVlOGZmYy4uYmIwYmM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcApAQCAtNDUsOCAr
NDUsMjYgQEAKICNpbmNsdWRlIDxjYWlyby1nbC5oPgogI2VuZGlmCiAKKyNpZiBVU0UoRlJFRVRZ
UEUpCisjaW5jbHVkZSA8Y2Fpcm8tZnQuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKyNpZiBVU0UoRlJFRVRZUEUpCitDYWlyb0Z0RmFjZUxvY2tlcjo6Q2Fpcm9GdEZhY2VMb2Nr
ZXIoY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCkKKyAgICA6IG1fc2NhbGVkRm9udChz
Y2FsZWRGb250KQorICAgICwgbV9mdEZhY2UoY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfbG9ja19mYWNl
KHNjYWxlZEZvbnQpKQoreworfQorCitDYWlyb0Z0RmFjZUxvY2tlcjo6fkNhaXJvRnRGYWNlTG9j
a2VyKCkKK3sKKyAgICBpZiAobV9mdEZhY2UpCisgICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250
X3VubG9ja19mYWNlKG1fc2NhbGVkRm9udCk7Cit9CisjZW5kaWYKKwogdm9pZCBjb3B5Q29udGV4
dFByb3BlcnRpZXMoY2Fpcm9fdCogc3JjQ3IsIGNhaXJvX3QqIGRzdENyKQogewogICAgIGNhaXJv
X3NldF9hbnRpYWxpYXMoZHN0Q3IsIGNhaXJvX2dldF9hbnRpYWxpYXMoc3JjQ3IpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxp
dGllcy5oCmluZGV4IDA3MzQ0OGIuLmZiNDk4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaApAQCAtMzYsNiAr
MzYsMTAgQEAKIC8vIFRoaXMgZnVuY3Rpb24gd2FzIGFkZGVkIHByZXR0eSBtdWNoIHNpbXVsdGFu
ZW91cyB0byB3aGVuIDEuMTMgd2FzIGJyYW5jaGVkLgogI2RlZmluZSBIQVZFX0NBSVJPX1NVUkZB
Q0VfU0VUX0RFVklDRV9TQ0FMRSBDQUlST19WRVJTSU9OX01BSk9SID4gMSB8fCAoQ0FJUk9fVkVS
U0lPTl9NQUpPUiA9PSAxICYmIENBSVJPX1ZFUlNJT05fTUlOT1IgPj0gMTMpCiAKKyNpZiBVU0Uo
RlJFRVRZUEUpCit0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogRlRfRmFjZTsKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBDb2xv
cjsKQEAgLTQ2LDYgKzUwLDIwIEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQYXRoOwogY2xhc3Mg
UmVnaW9uOwogCisjaWYgVVNFKEZSRUVUWVBFKQorY2xhc3MgQ2Fpcm9GdEZhY2VMb2NrZXIgewor
cHVibGljOgorICAgIENhaXJvRnRGYWNlTG9ja2VyKGNhaXJvX3NjYWxlZF9mb250X3QqKTsKKyAg
ICB+Q2Fpcm9GdEZhY2VMb2NrZXIoKTsKKworICAgIEZUX0ZhY2UgZnRGYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9mdEZhY2U7IH0KKworcHJpdmF0ZToKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBt
X3NjYWxlZEZvbnQgeyBudWxscHRyIH07CisgICAgRlRfRmFjZSBtX2Z0RmFjZSB7IG51bGxwdHIg
fTsKK307CisjZW5kaWYKKwogdm9pZCBjb3B5Q29udGV4dFByb3BlcnRpZXMoY2Fpcm9fdCogc3Jj
Q3IsIGNhaXJvX3QqIGRzdENyKTsKIHZvaWQgc2V0U291cmNlUkdCQUZyb21Db2xvcihjYWlyb190
KiwgY29uc3QgQ29sb3ImKTsKIHZvaWQgYXBwZW5kUGF0aFRvQ2Fpcm9Db250ZXh0KGNhaXJvX3Qq
IHRvLCBjYWlyb190KiBmcm9tKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAppbmRleCBl
YjAzZGNkLi41YzNhYWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC02Mywy
MCArNjMsMTIgQEAgc3RhdGljIFJlZlB0cjxGY1BhdHRlcm4+IGNyZWF0ZUZvbnRDb25maWdQYXR0
ZXJuRm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmEKIAogc3RhdGljIFJlZlB0cjxGY1Bh
dHRlcm4+IGZpbmRCZXN0Rm9udEdpdmVuRmFsbGJhY2tzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IGZvbnREYXRhLCBGY1BhdHRlcm4qIHBhdHRlcm4pCiB7Ci0gICAgaWYgKCFmb250RGF0YS5tX3Bh
dHRlcm4pCisgICAgRmNGb250U2V0KiBmYWxsYmFja3MgPSBmb250RGF0YS5mYWxsYmFja3MoKTsK
KyAgICBpZiAoIWZhbGxiYWNrcykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAo
IWZvbnREYXRhLm1fZmFsbGJhY2tzKSB7Ci0gICAgICAgIEZjUmVzdWx0IGZvbnRDb25maWdSZXN1
bHQ7Ci0gICAgICAgIGZvbnREYXRhLm1fZmFsbGJhY2tzID0gRmNGb250U29ydChudWxscHRyLCBm
b250RGF0YS5tX3BhdHRlcm4uZ2V0KCksIEZjVHJ1ZSwgbnVsbHB0ciwgJmZvbnRDb25maWdSZXN1
bHQpOwotICAgIH0KLQotICAgIGlmICghZm9udERhdGEubV9mYWxsYmFja3MpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgRmNGb250U2V0KiBzZXRzW10gPSB7IGZvbnREYXRhLm1fZmFs
bGJhY2tzIH07CiAgICAgRmNSZXN1bHQgZm9udENvbmZpZ1Jlc3VsdDsKLSAgICByZXR1cm4gRmNG
b250U2V0TWF0Y2gobnVsbHB0ciwgc2V0cywgMSwgcGF0dGVybiwgJmZvbnRDb25maWdSZXN1bHQp
OworICAgIHJldHVybiBGY0ZvbnRTZXRNYXRjaChudWxscHRyLCAmZmFsbGJhY2tzLCAxLCBwYXR0
ZXJuLCAmZm9udENvbmZpZ1Jlc3VsdCk7CiB9CiAKIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5
c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uLCBjb25zdCBGb250KiBvcmlnaW5hbEZvbnREYXRhLCBib29sLCBjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTJjMmEyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgL2Rl
di9udWxsCkBAIC0xLDEyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA4IEFwcGxlIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1p
a2UuZW1tZWxAZ21haWwuY29tCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0
ZXIgRnJleXRoZXIKLSAqIENvcHlyaWdodCAoQykgMjAwNyBQaW9uZWVyIFJlc2VhcmNoIENlbnRl
ciBVU0EsIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgotICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlX2gKLSNk
ZWZpbmUgRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlX2gKLQotI2luY2x1ZGUgIkZvbnRDYWNoZS5o
IgotI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgi
Ci0jaW5jbHVkZSAiSGFyZkJ1enpGYWNlLmgiCi0jaW5jbHVkZSAiT3BlblR5cGVWZXJ0aWNhbERh
dGEuaCIKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgotI2luY2x1ZGUgIlRleHRGbGFncy5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5j
bHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KLQotdHlwZWRlZiBzdHJ1Y3QgX0ZjRm9udFNldCBG
Y0ZvbnRTZXQ7Ci1jbGFzcyBIYXJmQnV6ekZhY2U7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7Ci1wdWJsaWM6Ci0gICAgRm9udFBsYXRmb3JtRGF0YShX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDogbV9mYWxsYmFja3MoMCkK
LSAgICAgICAgLCBtX3NpemUoMCkKLSAgICAgICAgLCBtX3N5bnRoZXRpY0JvbGQoZmFsc2UpCi0g
ICAgICAgICwgbV9zeW50aGV0aWNPYmxpcXVlKGZhbHNlKQotICAgICAgICAsIG1fc2NhbGVkRm9u
dChoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCkpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihI
b3Jpem9udGFsKQotICAgICAgICB7IH0KLQotICAgIEZvbnRQbGF0Zm9ybURhdGEoKQotICAgICAg
ICA6IG1fZmFsbGJhY2tzKDApCi0gICAgICAgICwgbV9zaXplKDApCi0gICAgICAgICwgbV9zeW50
aGV0aWNCb2xkKGZhbHNlKQotICAgICAgICAsIG1fc3ludGhldGljT2JsaXF1ZShmYWxzZSkKLSAg
ICAgICAgLCBtX3NjYWxlZEZvbnQoMCkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKEhvcml6b250
YWwpCi0gICAgICAgIHsgfQotCi0gICAgRm9udFBsYXRmb3JtRGF0YShGY1BhdHRlcm4qLCBjb25z
dCBGb250RGVzY3JpcHRpb24mKTsKLSAgICBGb250UGxhdGZvcm1EYXRhKGNhaXJvX2ZvbnRfZmFj
ZV90KiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYyk7Ci0g
ICAgRm9udFBsYXRmb3JtRGF0YShmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGljKTsK
LSAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKLSAgICBGb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBmbG9hdCBzaXplKTsKLQotICAg
IHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIGNsb25lV2l0aE9yaWVudGF0aW9uKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmLCBGb250T3JpZW50YXRpb24pOwotICAgIHN0YXRpYyBGb250UGxhdGZvcm1E
YXRhIGNsb25lV2l0aFN5bnRoZXRpY09ibGlxdWUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIGJv
b2wpOwotICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIGNsb25lV2l0aFNpemUoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYsIGZsb2F0KTsKLQotICAgIH5Gb250UGxhdGZvcm1EYXRhKCk7Ci0KLSAg
ICBIYXJmQnV6ekZhY2UqIGhhcmZCdXp6RmFjZSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc0ZpeGVk
UGl0Y2goKSBjb25zdDsKLSAgICBmbG9hdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
Ci0gICAgdm9pZCBzZXRTaXplKGZsb2F0IHNpemUpIHsgbV9zaXplID0gc2l6ZTsgfQotICAgIGJv
b2wgc3ludGhldGljQm9sZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGhldGljQm9sZDsgfQotICAg
IGJvb2wgc3ludGhldGljT2JsaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGhldGljT2JsaXF1
ZTsgfQotICAgIHZvaWQgc2V0U3ludGhldGljT2JsaXF1ZShib29sKTsKLSAgICBib29sIGhhc0Nv
bXBhdGlibGVDaGFybWFwKCk7Ci0KLSAgICBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBj
b25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Ci0gICAgdm9pZCBzZXRPcmllbnRhdGlvbihG
b250T3JpZW50YXRpb24pOwotICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPE9wZW5UeXBlVmVydGlj
YWxEYXRhPiB2ZXJ0aWNhbERhdGEoKSBjb25zdDsKLQotICAgIGNhaXJvX3NjYWxlZF9mb250X3Qq
IHNjYWxlZEZvbnQoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlZEZvbnQ7IH0KLQotICAgIHVuc2ln
bmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFB0ckhhc2g8Y2Fpcm9fc2Nh
bGVkX2ZvbnRfdCo+OjpoYXNoKG1fc2NhbGVkRm9udCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKSBjb25zdDsKLSAgICBGb250UGxhdGZvcm1E
YXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwotICAgIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2NhbGVk
Rm9udCA9PSBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCk7Ci0gICAgfQotCi0jaWZuZGVmIE5E
RUJVRwotICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwotI2VuZGlmCi0KLSAgICBSZWZQ
dHI8RmNQYXR0ZXJuPiBtX3BhdHRlcm47Ci0gICAgbXV0YWJsZSBGY0ZvbnRTZXQqIG1fZmFsbGJh
Y2tzOyAvLyBJbml0aWFsaXplZCBsYXppbHkuCi0gICAgZmxvYXQgbV9zaXplOwotICAgIGJvb2wg
bV9zeW50aGV0aWNCb2xkOwotICAgIGJvb2wgbV9zeW50aGV0aWNPYmxpcXVlOwotICAgIGJvb2wg
bV9maXhlZFdpZHRoOwotICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIG1fc2NhbGVkRm9udDsKLSAg
ICBtdXRhYmxlIFJlZlB0cjxIYXJmQnV6ekZhY2U+IG1faGFyZkJ1enpGYWNlOwotCi1wcml2YXRl
OgotICAgIHZvaWQgYnVpbGRTY2FsZWRGb250KGNhaXJvX2ZvbnRfZmFjZV90Kik7Ci0gICAgc3Rh
dGljIGNhaXJvX3NjYWxlZF9mb250X3QqIGhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUoKSB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PGNhaXJvX3NjYWxlZF9mb250X3QqPigtMSk7IH0KLQotICAg
IEZvbnRPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCmluZGV4IDM3ODc5NmUuLmM2YmQ1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjUsMTAgKzI1LDExIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogCisjaW5jbHVkZSAiQ2Fpcm9V
dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250RGVzY3Jp
cHRpb24uaCIKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPGNhaXJvLWZ0Lmg+Ci0jaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRl
IDxmb250Y29uZmlnL2ZjZnJlZXR5cGUuaD4KICNpbmNsdWRlIDxmdDJidWlsZC5oPgogI2luY2x1
ZGUgRlRfVFJVRVRZUEVfVEFCTEVTX0gKQEAgLTEzNiwxMiArMTM3LDcgQEAgc3RhdGljIEZjUGF0
dGVybiogZ2V0RGVmYXVsdEZvbnRjb25maWdPcHRpb25zKCkKIAogRm9udFBsYXRmb3JtRGF0YTo6
Rm9udFBsYXRmb3JtRGF0YShGY1BhdHRlcm4qIHBhdHRlcm4sIGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm9udERlc2NyaXB0aW9uKQogICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCi0gICAgLCBtX2Zh
bGxiYWNrcyhudWxscHRyKQogICAgICwgbV9zaXplKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBp
eGVsU2l6ZSgpKQotICAgICwgbV9zeW50aGV0aWNCb2xkKGZhbHNlKQotICAgICwgbV9zeW50aGV0
aWNPYmxpcXVlKGZhbHNlKQotICAgICwgbV9maXhlZFdpZHRoKGZhbHNlKQotICAgICwgbV9zY2Fs
ZWRGb250KG51bGxwdHIpCiAgICAgLCBtX29yaWVudGF0aW9uKGZvbnREZXNjcmlwdGlvbi5vcmll
bnRhdGlvbigpKQogewogICAgIEFTU0VSVChtX3BhdHRlcm4pOwpAQCAtMTc1LDM0ICsxNzEsMjIg
QEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShGY1BhdHRlcm4qIHBhdHRlcm4s
IGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm8KICAgICBidWlsZFNjYWxlZEZvbnQoZm9udEZhY2Uu
Z2V0KCkpOwogfQogCi1Gb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKGZsb2F0IHNp
emUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMpCi0gICAgOiBtX2ZhbGxiYWNrcyhudWxscHRyKQot
ICAgICwgbV9zaXplKHNpemUpCi0gICAgLCBtX3N5bnRoZXRpY0JvbGQoYm9sZCkKLSAgICAsIG1f
c3ludGhldGljT2JsaXF1ZShpdGFsaWMpCi0gICAgLCBtX2ZpeGVkV2lkdGgoZmFsc2UpCi0gICAg
LCBtX3NjYWxlZEZvbnQobnVsbHB0cikKLSAgICAsIG1fb3JpZW50YXRpb24oSG9yaXpvbnRhbCkK
LXsKLSAgICAvLyBXZSBjYW5ub3QgY3JlYXRlIGEgc2NhbGVkIGZvbnQgaGVyZS4KLX0KLQogRm9u
dFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShjYWlyb19mb250X2ZhY2VfdCogZm9udEZh
Y2UsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGJvb2wgYm9sZCwgYm9vbCBp
dGFsaWMpCi0gICAgOiBtX2ZhbGxiYWNrcyhudWxscHRyKQotICAgICwgbV9zaXplKGRlc2NyaXB0
aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkpCisgICAgOiBtX3NpemUoZGVzY3JpcHRpb24uY29tcHV0
ZWRQaXhlbFNpemUoKSkKKyAgICAsIG1fb3JpZW50YXRpb24oZGVzY3JpcHRpb24ub3JpZW50YXRp
b24oKSkKICAgICAsIG1fc3ludGhldGljQm9sZChib2xkKQogICAgICwgbV9zeW50aGV0aWNPYmxp
cXVlKGl0YWxpYykKLSAgICAsIG1fZml4ZWRXaWR0aChmYWxzZSkKLSAgICAsIG1fc2NhbGVkRm9u
dChudWxscHRyKQotICAgICwgbV9vcmllbnRhdGlvbihkZXNjcmlwdGlvbi5vcmllbnRhdGlvbigp
KQogewogICAgIGJ1aWxkU2NhbGVkRm9udChmb250RmFjZSk7CiAKLSAgICBGVF9GYWNlIGZvbnRD
b25maWdGYWNlID0gY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfbG9ja19mYWNlKG1fc2NhbGVkRm9udCk7
Ci0gICAgaWYgKGZvbnRDb25maWdGYWNlKSB7CisgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9G
dEZhY2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKKyAgICBpZiAoRlRfRmFjZSBmb250Q29u
ZmlnRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpKQogICAgICAgICBtX2ZpeGVkV2lk
dGggPSBmb250Q29uZmlnRmFjZS0+ZmFjZV9mbGFncyAmIEZUX0ZBQ0VfRkxBR19GSVhFRF9XSURU
SDsKLSAgICAgICAgY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfdW5sb2NrX2ZhY2UobV9zY2FsZWRGb250
KTsKLSAgICB9Cit9CisKK0ZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpCit7CisgICAgKnRoaXMgPSBvdGhlcjsKIH0KIAogRm9u
dFBsYXRmb3JtRGF0YSYgRm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIG90aGVyKQpAQCAtMjEyLDcwICsxOTYsNTAgQEAgRm9udFBsYXRmb3JtRGF0YSYg
Rm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVy
KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7Cisg
ICAgbV9vcmllbnRhdGlvbiA9IG90aGVyLm1fb3JpZW50YXRpb247CisgICAgbV93aWR0aFZhcmlh
bnQgPSBvdGhlci5tX3dpZHRoVmFyaWFudDsKKyAgICBtX3RleHRSZW5kZXJpbmdNb2RlID0gb3Ro
ZXIubV90ZXh0UmVuZGVyaW5nTW9kZTsKKwogICAgIG1fc3ludGhldGljQm9sZCA9IG90aGVyLm1f
c3ludGhldGljQm9sZDsKICAgICBtX3N5bnRoZXRpY09ibGlxdWUgPSBvdGhlci5tX3N5bnRoZXRp
Y09ibGlxdWU7CisgICAgbV9pc0NvbG9yQml0bWFwRm9udCA9IG90aGVyLm1faXNDb2xvckJpdG1h
cEZvbnQ7CisgICAgbV9pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSA9IG90aGVyLm1faXNIYXNoVGFi
bGVEZWxldGVkVmFsdWU7CisgICAgbV9pc1N5c3RlbUZvbnQgPSBvdGhlci5tX2lzU3lzdGVtRm9u
dDsKKwogICAgIG1fZml4ZWRXaWR0aCA9IG90aGVyLm1fZml4ZWRXaWR0aDsKICAgICBtX3BhdHRl
cm4gPSBvdGhlci5tX3BhdHRlcm47Ci0gICAgbV9vcmllbnRhdGlvbiA9IG90aGVyLm1fb3JpZW50
YXRpb247CiAKLSAgICBpZiAobV9mYWxsYmFja3MpIHsKLSAgICAgICAgRmNGb250U2V0RGVzdHJv
eShtX2ZhbGxiYWNrcyk7Ci0gICAgICAgIC8vIFRoaXMgd2lsbCBiZSByZS1jcmVhdGVkIG9uIGRl
bWFuZC4KLSAgICAgICAgbV9mYWxsYmFja3MgPSBudWxscHRyOwotICAgIH0KLQotICAgIGlmICht
X3NjYWxlZEZvbnQgJiYgbV9zY2FsZWRGb250ICE9IGhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUo
KSkKLSAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfZGVzdHJveShtX3NjYWxlZEZvbnQpOwotICAg
IG1fc2NhbGVkRm9udCA9IGNhaXJvX3NjYWxlZF9mb250X3JlZmVyZW5jZShvdGhlci5tX3NjYWxl
ZEZvbnQpOworICAgIC8vIFRoaXMgd2lsbCBiZSByZS1jcmVhdGVkIG9uIGRlbWFuZC4KKyAgICBt
X2ZhbGxiYWNrcyA9IG51bGxwdHI7CiAKKyAgICBtX3NjYWxlZEZvbnQgPSBvdGhlci5tX3NjYWxl
ZEZvbnQ7CiAgICAgbV9oYXJmQnV6ekZhY2UgPSBvdGhlci5tX2hhcmZCdXp6RmFjZTsKIAogICAg
IHJldHVybiAqdGhpczsKIH0KIAotRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikKLSAgICA6IG1fZmFsbGJhY2tzKG51bGxwdHIp
Ci0gICAgLCBtX3NjYWxlZEZvbnQobnVsbHB0cikKLSAgICAsIG1faGFyZkJ1enpGYWNlKG90aGVy
Lm1faGFyZkJ1enpGYWNlKQotewotICAgICp0aGlzID0gb3RoZXI7Ci19Ci0KLUZvbnRQbGF0Zm9y
bURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIsIGZs
b2F0IHNpemUpCi0gICAgOiBtX2ZhbGxiYWNrcyhudWxscHRyKQotICAgICwgbV9zY2FsZWRGb250
KG51bGxwdHIpCi0gICAgLCBtX2hhcmZCdXp6RmFjZShvdGhlci5tX2hhcmZCdXp6RmFjZSkKLXsK
LSAgICAqdGhpcyA9IG90aGVyOwotCi0gICAgLy8gV2UgbmVlZCB0byByZWluaXRpYWxpemUgdGhl
IGluc3RhbmNlLCBiZWNhdXNlIHRoZSBkaWZmZXJlbmNlIGluIHNpemUgCi0gICAgLy8gbmVjZXNz
aXRhdGVzIGEgbmV3IHNjYWxlZCBmb250IGluc3RhbmNlLgotICAgIG1fc2l6ZSA9IHNpemU7Ci0g
ICAgYnVpbGRTY2FsZWRGb250KGNhaXJvX3NjYWxlZF9mb250X2dldF9mb250X2ZhY2UobV9zY2Fs
ZWRGb250KSk7Ci19Ci0KIEZvbnRQbGF0Zm9ybURhdGE6On5Gb250UGxhdGZvcm1EYXRhKCkKIHsK
LSAgICBpZiAobV9mYWxsYmFja3MpIHsKLSAgICAgICAgRmNGb250U2V0RGVzdHJveShtX2ZhbGxi
YWNrcyk7Ci0gICAgICAgIG1fZmFsbGJhY2tzID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAo
bV9zY2FsZWRGb250ICYmIG1fc2NhbGVkRm9udCAhPSBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVl
KCkpCi0gICAgICAgIGNhaXJvX3NjYWxlZF9mb250X2Rlc3Ryb3kobV9zY2FsZWRGb250KTsKIH0K
IAogRm9udFBsYXRmb3JtRGF0YSBGb250UGxhdGZvcm1EYXRhOjpjbG9uZVdpdGhPcmllbnRhdGlv
bihjb25zdCBGb250UGxhdGZvcm1EYXRhJiBzb3VyY2UsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRh
dGlvbikKIHsKICAgICBGb250UGxhdGZvcm1EYXRhIGNvcHkoc291cmNlKTsKLSAgICBjb3B5Lm1f
b3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsKKyAgICBpZiAoY29weS5tX3NjYWxlZEZvbnQgJiYg
Y29weS5tX29yaWVudGF0aW9uICE9IG9yaWVudGF0aW9uKSB7CisgICAgICAgIGNvcHkubV9vcmll
bnRhdGlvbiA9IG9yaWVudGF0aW9uOworICAgICAgICBjb3B5LmJ1aWxkU2NhbGVkRm9udChjYWly
b19zY2FsZWRfZm9udF9nZXRfZm9udF9mYWNlKGNvcHkubV9zY2FsZWRGb250LmdldCgpKSk7Cisg
ICAgfQogICAgIHJldHVybiBjb3B5OwogfQogCiBGb250UGxhdGZvcm1EYXRhIEZvbnRQbGF0Zm9y
bURhdGE6OmNsb25lV2l0aFN5bnRoZXRpY09ibGlxdWUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
c291cmNlLCBib29sIHN5bnRoZXRpY09ibGlxdWUpCiB7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBj
b3B5KHNvdXJjZSk7Ci0gICAgY29weS5tX3N5bnRoZXRpY09ibGlxdWUgPSBzeW50aGV0aWNPYmxp
cXVlOworICAgIGlmIChjb3B5Lm1fc3ludGhldGljT2JsaXF1ZSAhPSBzeW50aGV0aWNPYmxpcXVl
KSB7CisgICAgICAgIGNvcHkubV9zeW50aGV0aWNPYmxpcXVlID0gc3ludGhldGljT2JsaXF1ZTsK
KyAgICAgICAgQVNTRVJUKGNvcHkubV9zY2FsZWRGb250LmdldCgpKTsKKyAgICAgICAgY29weS5i
dWlsZFNjYWxlZEZvbnQoY2Fpcm9fc2NhbGVkX2ZvbnRfZ2V0X2ZvbnRfZmFjZShjb3B5Lm1fc2Nh
bGVkRm9udC5nZXQoKSkpOworICAgIH0KICAgICByZXR1cm4gY29weTsKIH0KIApAQCAtMjgzLDYg
KzI0NywxMCBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRQbGF0Zm9ybURhdGE6OmNsb25lV2l0aFNp
emUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgc291cmNlLAogewogICAgIEZvbnRQbGF0Zm9ybURh
dGEgY29weShzb3VyY2UpOwogICAgIGNvcHkubV9zaXplID0gc2l6ZTsKKyAgICAvLyBXZSBuZWVk
IHRvIHJlaW5pdGlhbGl6ZSB0aGUgaW5zdGFuY2UsIGJlY2F1c2UgdGhlIGRpZmZlcmVuY2UgaW4g
c2l6ZQorICAgIC8vIG5lY2Vzc2l0YXRlcyBhIG5ldyBzY2FsZWQgZm9udCBpbnN0YW5jZS4KKyAg
ICBBU1NFUlQoY29weS5tX3NjYWxlZEZvbnQuZ2V0KCkpOworICAgIGNvcHkuYnVpbGRTY2FsZWRG
b250KGNhaXJvX3NjYWxlZF9mb250X2dldF9mb250X2ZhY2UoY29weS5tX3NjYWxlZEZvbnQuZ2V0
KCkpKTsKICAgICByZXR1cm4gY29weTsKIH0KIApAQCAtMjk0LDEyICsyNjIsMjQgQEAgSGFyZkJ1
enpGYWNlKiBGb250UGxhdGZvcm1EYXRhOjpoYXJmQnV6ekZhY2UoKSBjb25zdAogICAgIHJldHVy
biBtX2hhcmZCdXp6RmFjZS5nZXQoKTsKIH0KIAorRmNGb250U2V0KiBGb250UGxhdGZvcm1EYXRh
OjpmYWxsYmFja3MoKSBjb25zdAoreworICAgIGlmIChtX2ZhbGxiYWNrcykKKyAgICAgICAgcmV0
dXJuIG1fZmFsbGJhY2tzLmdldCgpOworCisgICAgaWYgKG1fcGF0dGVybikgeworICAgICAgICBG
Y1Jlc3VsdCBmb250Q29uZmlnUmVzdWx0OworICAgICAgICBtX2ZhbGxiYWNrcy5yZXNldChGY0Zv
bnRTb3J0KG51bGxwdHIsIG1fcGF0dGVybi5nZXQoKSwgRmNUcnVlLCBudWxscHRyLCAmZm9udENv
bmZpZ1Jlc3VsdCkpOworICAgIH0KKyAgICByZXR1cm4gbV9mYWxsYmFja3MuZ2V0KCk7Cit9CisK
IGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aXNGaXhlZFBpdGNoKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9maXhlZFdpZHRoOwogfQogCi1ib29sIEZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPT0o
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0Citib29sIEZvbnRQbGF0Zm9ybURh
dGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QK
IHsKICAgICAvLyBGY1BhdHRlcm5FcXVhbCBkb2VzIG5vdCBzdXBwb3J0IG51bGwgcG9pbnRlcnMg
YXMgYXJndW1lbnRzLgogICAgIGlmICgobV9wYXR0ZXJuICYmICFvdGhlci5tX3BhdHRlcm4pCkBA
IC0zMDcsMTEgKzI4Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9PShjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgfHwgKG1fcGF0dGVybiAh
PSBvdGhlci5tX3BhdHRlcm4gJiYgIUZjUGF0dGVybkVxdWFsKG1fcGF0dGVybi5nZXQoKSwgb3Ro
ZXIubV9wYXR0ZXJuLmdldCgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVy
biBtX3NjYWxlZEZvbnQgPT0gb3RoZXIubV9zY2FsZWRGb250Ci0gICAgICAgICYmIG1fc2l6ZSA9
PSBvdGhlci5tX3NpemUKLSAgICAgICAgJiYgbV9zeW50aGV0aWNPYmxpcXVlID09IG90aGVyLm1f
c3ludGhldGljT2JsaXF1ZQotICAgICAgICAmJiBtX29yaWVudGF0aW9uID09IG90aGVyLm1fb3Jp
ZW50YXRpb24KLSAgICAgICAgJiYgbV9zeW50aGV0aWNCb2xkID09IG90aGVyLm1fc3ludGhldGlj
Qm9sZDsgCisgICAgcmV0dXJuIG1fc2NhbGVkRm9udCA9PSBvdGhlci5tX3NjYWxlZEZvbnQ7CiB9
CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0zNjQsMjIgKzM0MCwyMCBAQCB2b2lkIEZvbnRQbGF0Zm9y
bURhdGE6OmJ1aWxkU2NhbGVkRm9udChjYWlyb19mb250X2ZhY2VfdCogZm9udEZhY2UpCiAgICAg
ICAgIGNhaXJvX21hdHJpeF90cmFuc2xhdGUoJmZvbnRNYXRyaXgsIDAuMCwgMS4wKTsKICAgICB9
CiAKLSAgICBpZiAobV9zY2FsZWRGb250ICYmIG1fc2NhbGVkRm9udCAhPSBoYXNoVGFibGVEZWxl
dGVkRm9udFZhbHVlKCkpCi0gICAgICAgIGNhaXJvX3NjYWxlZF9mb250X2Rlc3Ryb3kobV9zY2Fs
ZWRGb250KTsKLQotICAgIG1fc2NhbGVkRm9udCA9IGNhaXJvX3NjYWxlZF9mb250X2NyZWF0ZShm
b250RmFjZSwgJmZvbnRNYXRyaXgsICZjdG0sIG9wdGlvbnMpOworICAgIG1fc2NhbGVkRm9udCA9
IGFkb3B0UmVmKGNhaXJvX3NjYWxlZF9mb250X2NyZWF0ZShmb250RmFjZSwgJmZvbnRNYXRyaXgs
ICZjdG0sIG9wdGlvbnMpKTsKICAgICBjYWlyb19mb250X29wdGlvbnNfZGVzdHJveShvcHRpb25z
KTsKIH0KIAotYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgpCiti
b29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQobV9zY2FsZWRGb250KTsKLSAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJv
X2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZShtX3NjYWxlZEZvbnQpOwotICAgIGJvb2wgaGFzQ29t
cGF0aWJsZUNoYXJtYXAgPSAhKEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5j
b2RpbmdfdW5pY29kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgRlRfU2Vs
ZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19zeW1ib2wpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwg
ZnRfZW5jb2RpbmdfYXBwbGVfcm9tYW4pKTsKLSAgICBjYWlyb19mdF9zY2FsZWRfZm9udF91bmxv
Y2tfZmFjZShtX3NjYWxlZEZvbnQpOwotICAgIHJldHVybiBoYXNDb21wYXRpYmxlQ2hhcm1hcDsK
KyAgICBBU1NFUlQobV9zY2FsZWRGb250LmdldCgpKTsKKyAgICBDYWlyb0Z0RmFjZUxvY2tlciBj
YWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkpOworICAgIEZUX0ZhY2UgZnJlZVR5
cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CisgICAgaWYgKCFmcmVlVHlwZUZh
Y2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gIShGVF9TZWxlY3RfQ2hhcm1h
cChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX3VuaWNvZGUpCisgICAgICAgICYmIEZUX1NlbGVj
dF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2Rpbmdfc3ltYm9sKQorICAgICAgICAmJiBG
VF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7
CiB9CiAKIFBhc3NSZWZQdHI8T3BlblR5cGVWZXJ0aWNhbERhdGE+IEZvbnRQbGF0Zm9ybURhdGE6
OnZlcnRpY2FsRGF0YSgpIGNvbnN0CkBAIC0zODgsOSArMzYyLDEwIEBAIFBhc3NSZWZQdHI8T3Bl
blR5cGVWZXJ0aWNhbERhdGE+IEZvbnRQbGF0Zm9ybURhdGE6OnZlcnRpY2FsRGF0YSgpIGNvbnN0
CiAgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZ2V0VmVydGljYWxEYXRhKFN0cmlu
Zzo6bnVtYmVyKGhhc2goKSksICp0aGlzKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAogewotICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9fZnRf
c2NhbGVkX2ZvbnRfbG9ja19mYWNlKG1fc2NhbGVkRm9udCk7CisgICAgQ2Fpcm9GdEZhY2VMb2Nr
ZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKKyAgICBGVF9GYWNlIGZy
ZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwogICAgIGlmICghZnJlZVR5
cGVGYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNDAxLDM3ICszNzYsMTUgQEAg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGFibGVTaXpl
KTsKLSAgICBGVF9VTG9uZyBleHBlY3RlZFRhYmxlU2l6ZSA9IHRhYmxlU2l6ZTsKICAgICBpZiAo
YnVmZmVyLT5zaXplKCkgIT0gdGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAor
ICAgIEZUX1VMb25nIGV4cGVjdGVkVGFibGVTaXplID0gdGFibGVTaXplOwogICAgIEZUX0Vycm9y
IGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCByZWludGVy
cHJldF9jYXN0PEZUX0J5dGUqPihjb25zdF9jYXN0PGNoYXIqPihidWZmZXItPmRhdGEoKSkpLCAm
dGFibGVTaXplKTsKICAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVT
aXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250
X3VubG9ja19mYWNlKG1fc2NhbGVkRm9udCk7Ci0KLSAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCi12b2lkIEZvbnRQbGF0Zm9ybURhdGE6OnNldE9y
aWVudGF0aW9uKEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKLXsKLSAgICBpZiAoIW1fc2Nh
bGVkRm9udCB8fCAobV9vcmllbnRhdGlvbiA9PSBvcmllbnRhdGlvbikpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEFTU0VSVChtX3NjYWxlZEZvbnQpOwotICAgIG1fb3JpZW50YXRpb24gPSBvcmll
bnRhdGlvbjsKLSAgICBidWlsZFNjYWxlZEZvbnQoY2Fpcm9fc2NhbGVkX2ZvbnRfZ2V0X2ZvbnRf
ZmFjZShtX3NjYWxlZEZvbnQpKTsKLX0KLQotdm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXRTeW50
aGV0aWNPYmxpcXVlKGJvb2wgbmV3U3ludGhldGljT2JsaXF1ZVZhbHVlKQotewotICAgIGlmIChu
ZXdTeW50aGV0aWNPYmxpcXVlVmFsdWUgPT0gc3ludGhldGljT2JsaXF1ZSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBU1NFUlQobV9zY2FsZWRGb250KTsKLSAgICBtX3N5bnRoZXRpY09ibGlx
dWUgPSBuZXdTeW50aGV0aWNPYmxpcXVlVmFsdWU7Ci0gICAgYnVpbGRTY2FsZWRGb250KGNhaXJv
X3NjYWxlZF9mb250X2dldF9mb250X2ZhY2UobV9zY2FsZWRGb250KSk7Ci19Ci0KLX0KK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvR2x5cGhQYWdlVHJlZU5vZGVGcmVlVHlw
ZS5jcHAKaW5kZXggMDVmY2QwMi4uY2FhNGI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvR2x5cGhQYWdlVHJlZU5vZGVGcmVlVHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvR2x5cGhQYWdl
VHJlZU5vZGVGcmVlVHlwZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJHbHlwaFBhZ2UuaCIKIAorI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIlVURjE2VUNoYXIzMkl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSA8Y2Fpcm8tZnQuaD4KQEAgLTQ1LDcgKzQ2LDggQEAgYm9vbCBHbHlwaFBhZ2U6OmZp
bGwoVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoKQogICAgIGNhaXJvX3NjYWxl
ZF9mb250X3QqIHNjYWxlZEZvbnQgPSBmb250LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKTsK
ICAgICBBU1NFUlQoc2NhbGVkRm9udCk7CiAKLSAgICBGVF9GYWNlIGZhY2UgPSBjYWlyb19mdF9z
Y2FsZWRfZm9udF9sb2NrX2ZhY2Uoc2NhbGVkRm9udCk7CisgICAgQ2Fpcm9GdEZhY2VMb2NrZXIg
Y2Fpcm9GdEZhY2VMb2NrZXIoc2NhbGVkRm9udCk7CisgICAgRlRfRmFjZSBmYWNlID0gY2Fpcm9G
dEZhY2VMb2NrZXIuZnRGYWNlKCk7CiAgICAgaWYgKCFmYWNlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTY1LDcgKzY3LDYgQEAgYm9vbCBHbHlwaFBhZ2U6OmZpbGwoVUNoYXIqIGJ1ZmZl
ciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgY2Fpcm9f
ZnRfc2NhbGVkX2ZvbnRfdW5sb2NrX2ZhY2Uoc2NhbGVkRm9udCk7CiAgICAgcmV0dXJuIGhhdmVH
bHlwaHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAKaW5kZXgg
NzA5YjI1OS4uMTZhYjNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250
LmgiCiAKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVy
c2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgpA
QCAtNTMsNyArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgRm9udDo6cGxhdGZv
cm1Jbml0KCkKIHsKLSAgICBpZiAoIW1fcGxhdGZvcm1EYXRhLm1fc2l6ZSkKKyAgICBpZiAoIW1f
cGxhdGZvcm1EYXRhLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fcGxh
dGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7CkBAIC02NSwyMCArNjYsMjQgQEAgdm9pZCBGb250Ojpw
bGF0Zm9ybUluaXQoKQogICAgIGZsb2F0IGNhcEhlaWdodCA9IG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQoZm9udEV4dGVudHMuaGVpZ2h0KTsKICAgICBmbG9hdCBsaW5lR2FwID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdChmb250RXh0ZW50cy5oZWlnaHQgLSBmb250RXh0ZW50cy5hc2NlbnQgLSBmb250
RXh0ZW50cy5kZXNjZW50KTsKIAotICAgIC8vIElmIHRoZSBVU0VfVFlQT19NRVRSSUNTIGZsYWcg
aXMgc2V0IGluIHRoZSBPUy8yIHRhYmxlIHRoZW4gd2UgdXNlIHR5cG8gbWV0cmljcyBpbnN0ZWFk
LgotICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfbG9ja19m
YWNlKG1fcGxhdGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7Ci0gICAgaWYgKFRUX09TMiogT1MyVGFi
bGUgPSBzdGF0aWNfY2FzdDxUVF9PUzIqPihGVF9HZXRfU2ZudF9UYWJsZShmcmVlVHlwZUZhY2Us
IGZ0X3NmbnRfb3MyKSkpIHsKLSAgICAgICAgY29uc3QgRlRfU2hvcnQga1VzZVR5cG9NZXRyaWNz
TWFzayA9IDEgPDwgNzsKLSAgICAgICAgaWYgKE9TMlRhYmxlLT5mc1NlbGVjdGlvbiAmIGtVc2VU
eXBvTWV0cmljc01hc2spIHsKLSAgICAgICAgICAgIC8vIEZUX1NpemVfTWV0cmljczo6eV9zY2Fs
ZSBpcyBpbiAxNi4xNiBmaXhlZCBwb2ludCBmb3JtYXQuCi0gICAgICAgICAgICAvLyBJdHMgKGZy
YWN0aW9uYWwpIHZhbHVlIGlzIGEgZmFjdG9yIHRoYXQgY29udmVydHMgdmVydGljYWwgbWV0cmlj
cyBmcm9tIGRlc2lnbiB1bml0cyB0byB1bml0cyBvZiAxLzY0IHBpeGVscy4KLSAgICAgICAgICAg
IGRvdWJsZSB5c2NhbGUgPSAoZnJlZVR5cGVGYWNlLT5zaXplLT5tZXRyaWNzLnlfc2NhbGUgLyA2
NTUzNi4wKSAvIDY0LjA7Ci0gICAgICAgICAgICBhc2NlbnQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHlzY2FsZSAqIE9TMlRhYmxlLT5zVHlwb0FzY2VuZGVyKTsKLSAgICAgICAgICAgIGRlc2Nl
bnQgPSAtbmFycm93UHJlY2lzaW9uVG9GbG9hdCh5c2NhbGUgKiBPUzJUYWJsZS0+c1R5cG9EZXNj
ZW5kZXIpOwotICAgICAgICAgICAgbGluZUdhcCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoeXNj
YWxlICogT1MyVGFibGUtPnNUeXBvTGluZUdhcCk7CisgICAgeworICAgICAgICBDYWlyb0Z0RmFj
ZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3BsYXRmb3JtRGF0YS5zY2FsZWRGb250KCkpOwor
CisgICAgICAgIC8vIElmIHRoZSBVU0VfVFlQT19NRVRSSUNTIGZsYWcgaXMgc2V0IGluIHRoZSBP
Uy8yIHRhYmxlIHRoZW4gd2UgdXNlIHR5cG8gbWV0cmljcyBpbnN0ZWFkLgorICAgICAgICBGVF9G
YWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOworICAgICAgICBU
VF9PUzIqIE9TMlRhYmxlID0gZnJlZVR5cGVGYWNlID8gc3RhdGljX2Nhc3Q8VFRfT1MyKj4oRlRf
R2V0X1NmbnRfVGFibGUoZnJlZVR5cGVGYWNlLCBmdF9zZm50X29zMikpIDogbnVsbHB0cjsKKyAg
ICAgICAgaWYgKE9TMlRhYmxlKSB7CisgICAgICAgICAgICBjb25zdCBGVF9TaG9ydCBrVXNlVHlw
b01ldHJpY3NNYXNrID0gMSA8PCA3OworICAgICAgICAgICAgaWYgKE9TMlRhYmxlLT5mc1NlbGVj
dGlvbiAmIGtVc2VUeXBvTWV0cmljc01hc2spIHsKKyAgICAgICAgICAgICAgICAvLyBGVF9TaXpl
X01ldHJpY3M6Onlfc2NhbGUgaXMgaW4gMTYuMTYgZml4ZWQgcG9pbnQgZm9ybWF0LgorICAgICAg
ICAgICAgICAgIC8vIEl0cyAoZnJhY3Rpb25hbCkgdmFsdWUgaXMgYSBmYWN0b3IgdGhhdCBjb252
ZXJ0cyB2ZXJ0aWNhbCBtZXRyaWNzIGZyb20gZGVzaWduIHVuaXRzIHRvIHVuaXRzIG9mIDEvNjQg
cGl4ZWxzLgorICAgICAgICAgICAgICAgIGRvdWJsZSB5c2NhbGUgPSAoZnJlZVR5cGVGYWNlLT5z
aXplLT5tZXRyaWNzLnlfc2NhbGUgLyA2NTUzNi4wKSAvIDY0LjA7CisgICAgICAgICAgICAgICAg
YXNjZW50ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh5c2NhbGUgKiBPUzJUYWJsZS0+c1R5cG9B
c2NlbmRlcik7CisgICAgICAgICAgICAgICAgZGVzY2VudCA9IC1uYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHlzY2FsZSAqIE9TMlRhYmxlLT5zVHlwb0Rlc2NlbmRlcik7CisgICAgICAgICAgICAgICAg
bGluZUdhcCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoeXNjYWxlICogT1MyVGFibGUtPnNUeXBv
TGluZUdhcCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgY2Fpcm9fZnRf
c2NhbGVkX2ZvbnRfdW5sb2NrX2ZhY2UobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9udCgpKTsKIAog
ICAgIG1fZm9udE1ldHJpY3Muc2V0QXNjZW50KGFzY2VudCk7CiAgICAgbV9mb250TWV0cmljcy5z
ZXREZXNjZW50KGRlc2NlbnQpOwpAQCAtMTAwLDkgKzEwNSw5IEBAIHZvaWQgRm9udDo6cGxhdGZv
cm1Jbml0KCkKICAgICBtX3NwYWNlV2lkdGggPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KChwbGF0
Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09IEhvcml6b250YWwpID8gdGV4dEV4dGVudHMueF9h
ZHZhbmNlIDogLXRleHRFeHRlbnRzLnlfYWR2YW5jZSk7CiAKICAgICBpZiAoKHBsYXRmb3JtRGF0
YSgpLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWwpICYmICFpc1RleHRPcmllbnRhdGlvbkZhbGxi
YWNrKCkpIHsKLSAgICAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb19mdF9zY2FsZWRf
Zm9udF9sb2NrX2ZhY2UobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9udCgpKTsKKyAgICAgICAgQ2Fp
cm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9u
dCgpKTsKKyAgICAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5m
dEZhY2UoKTsKICAgICAgICAgbV9mb250TWV0cmljcy5zZXRVbml0c1BlckVtKGZyZWVUeXBlRmFj
ZS0+dW5pdHNfcGVyX0VNKTsKLSAgICAgICAgY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfdW5sb2NrX2Zh
Y2UobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9udCgpKTsKICAgICB9CiAKICAgICBtX3N5bnRoZXRp
Y0JvbGRPZmZzZXQgPSBtX3BsYXRmb3JtRGF0YS5zeW50aGV0aWNCb2xkKCkgPyAxLjBmIDogMC5m
OwpAQCAtMTc5LDE0ICsxODQsMTQgQEAgYm9vbCBGb250OjpjYW5SZW5kZXJDb21iaW5pbmdDaGFy
YWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGwKICAgICBpZiAo
VV9GQUlMVVJFKGVycm9yKSB8fCAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihub3JtYWxpemVkTGVuZ3Ro
KSA9PSBsZW5ndGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGVF9GYWNlIGZhY2Ug
PSBjYWlyb19mdF9zY2FsZWRfZm9udF9sb2NrX2ZhY2UobV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9u
dCgpKTsKKyAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3BsYXRmb3Jt
RGF0YS5zY2FsZWRGb250KCkpOworICAgIEZUX0ZhY2UgZmFjZSA9IGNhaXJvRnRGYWNlTG9ja2Vy
LmZ0RmFjZSgpOwogICAgIGlmICghZmFjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKEZjRnJlZVR5cGVDaGFySW5kZXgoZmFjZSwgbm9ybWFsaXplZENoYXJhY3RlcnNbMF0pKQog
ICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gdHJ1ZTsKIAotICAgIGNhaXJvX2Z0
X3NjYWxlZF9mb250X3VubG9ja19mYWNlKG1fcGxhdGZvcm1EYXRhLnNjYWxlZEZvbnQoKSk7CiAg
ICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFj
ZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hh
cmZCdXp6RmFjZUNhaXJvLmNwcAppbmRleCA0ZGQ3YWVlLi42MTQ4NmNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2VDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFy
ZkJ1enpGYWNlQ2Fpcm8uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSGFyZkJ1enpGYWNlLmgiCiAKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5o
IgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5j
bHVkZSAiR2x5cGhCdWZmZXIuaCIKQEAgLTU3LDIxICs1OCw2IEBAIHN0cnVjdCBIYXJmQnV6ekZv
bnREYXRhIHsKICAgICBjYWlyb19zY2FsZWRfZm9udF90KiBtX2NhaXJvU2NhbGVkRm9udDsKIH07
CiAKLWNsYXNzIENhaXJvRnRGYWNlTG9ja2VyIHsKLXB1YmxpYzoKLSAgICBDYWlyb0Z0RmFjZUxv
Y2tlcihjYWlyb19zY2FsZWRfZm9udF90KiBjYWlyb1NjYWxlZEZvbnQpIDogbV9zY2FsZWRGb250
KGNhaXJvU2NhbGVkRm9udCkgeyB9OwotICAgIEZUX0ZhY2UgbG9jaygpCi0gICAgewotICAgICAg
ICByZXR1cm4gY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfbG9ja19mYWNlKG1fc2NhbGVkRm9udCk7Ci0g
ICAgfTsKLSAgICB+Q2Fpcm9GdEZhY2VMb2NrZXIoKQotICAgIHsKLSAgICAgICAgY2Fpcm9fZnRf
c2NhbGVkX2ZvbnRfdW5sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKLSAgICB9Ci1wcml2YXRlOgot
ICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIG1fc2NhbGVkRm9udDsKLX07Ci0KIHN0YXRpYyBoYl9w
b3NpdGlvbl90IGZsb2F0VG9IYXJmQnV6elBvc2l0aW9uKGZsb2F0IHZhbHVlKQogewogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxoYl9wb3NpdGlvbl90Pih2YWx1ZSAqICgxIDw8IDE2KSk7CkBAIC0x
NzgsOSArMTY0LDkgQEAgc3RhdGljIGhiX2Jsb2JfdCogaGFyZkJ1enpDYWlyb0dldFRhYmxlKGhi
X2ZhY2VfdCosIGhiX3RhZ190IHRhZywgdm9pZCogdXNlckRhdGEKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihzY2FsZWRGb250KTsK
LSAgICBGVF9GYWNlIGZ0Rm9udCA9IGNhaXJvRnRGYWNlTG9ja2VyLmxvY2soKTsKKyAgICBGVF9G
YWNlIGZ0Rm9udCA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwogICAgIGlmICghZnRGb250
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBGVF9V
TG9uZyB0YWJsZVNpemUgPSAwOwogICAgIEZUX0Vycm9yIGVycm9yID0gRlRfTG9hZF9TZm50X1Rh
YmxlKGZ0Rm9udCwgdGFnLCAwLCAwLCAmdGFibGVTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1MjY3OWQ2
Li43N2NjZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDQtMjcgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJFR1JFU1NJ
T04ocjIwMDA5NCk6IFtGcmVlVHlwZV0gVmVydGljYWwgdGV4dCBpcyBicm9rZW4gYWZ0ZXIgcjIw
MDA5NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3
MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlIHRvIHRoZSBsaXN0IG9m
IGluY2x1ZGUgZGlycywgYmVjYXVzZSBub3cgRm9udFBsYXRmb3JtRGF0YS5oCisgICAgICAgIGlu
Y2x1ZGVzIEZjVW5pcXVlUHRyLmguCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKwogMjAxNi0wNC0yNiAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVuY2F1Z2h0IEV4Y2VwdGlvbjogU2Vj
dXJpdHlFcnJvcjogRE9NIEV4Y2VwdGlvbiAxODogQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBicmVh
ayB0aHJvdWdoIHRoZSBzZWN1cml0eSBwb2xpY3kgb2YgdGhlIHVzZXIgYWdlbnQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCmluZGV4IGI4OGNlN2EuLjYxZDY2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC0yMzYsNiArMjM2LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURF
X0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2VmbCIKICAgICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8iCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL2VmbCIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy94MTEiCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvc291cCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsu
Y21ha2UKaW5kZXggNzllYWQ2NC4uYmZhZGI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UK
QEAgLTQ5NSw2ICs0OTUsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJ
RVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vY2Fpcm8iCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL2d0ayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8iCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlIgog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZSIKICAgICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MveDExIgogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAiCg==
</data>
<flag name="review"
          id="301662"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>